Name: series-workflow6hjnl Phase: Succeeded StartedAt: 2026-06-24 19:23:11 +0000 UTC FinishedAt: 2026-06-24 23:46:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[0] Phase: Succeeded StartedAt: 2026-06-24 19:23:11 +0000 UTC FinishedAt: 2026-06-24 19:43:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 19:23:11 +0000 UTC FinishedAt: 2026-06-24 19:43:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GVE", "IAVF", "MLX5_CORE", "MLX5_CORE_EN", "MLX5_CORE_IPOIB", "MLX5_ESWITCH", "FBNIC", "MICROSOFT_MANA" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GVE", "IAVF", "MLX5_CORE", "MLX5_CORE_EN", "MLX5_CORE_IPOIB", "MLX5_ESWITCH", "FBNIC", "MICROSOFT_MANA" ], "series_id": "490be426-58e6-4dab-9b0e-b47f5bde214a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ethtool_op_get_link", "ethnl_default_doit", "__dev_ethtool" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dWRSYjMzQ7LAogICAgJiMzNDtJQVZGJiMzNDssCiAgICAmIzM0O01MWDVfQ09SRSYjMzQ7LAogICAgJiMzNDtNTFg1X0NPUkVfRU4mIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFX0lQT0lCJiMzNDssCiAgICAmIzM0O01MWDVfRVNXSVRDSCYjMzQ7LAogICAgJiMzNDtGQk5JQyYjMzQ7LAogICAgJiMzNDtNSUNST1NPRlRfTUFOQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V0aHRvb2xfb3BfZ2V0X2xpbmsmIzM0OywKICAgICYjMzQ7ZXRobmxfZGVmYXVsdF9kb2l0JiMzNDssCiAgICAmIzM0O19fZGV2X2V0aHRvb2wmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGlzc3VlIHdoZXJlIGBldGh0b29sX29wX2dldF9saW5rYCB3YXMgY2FsbGVkIHdpdGhvdXQgYHJ0bmxfbG9ja2AgZm9yIGRyaXZlcnMgdGhhdCB1c2UgYG5ldGRldl9uZWVkX29wc19sb2NrYCAoZS5nLiBndmUsIGlhdmYsIG1seDUsIGZibmljLCBtYW5hKS4gYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgd2hpY2ggcmVxdWlyZXMgYHJ0bmxfbG9ja2AgYmVjYXVzZSBpdCBjYW4gdHJpZ2dlciBgZGV2X2FjdGl2YXRlYCBhbmQgdXNlIGBydG5sX2RlcmVmZXJlbmNlYC4gVGhlIHBhdGNoIGFkZHMgYEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOS2AgdG8gdGhlc2UgZHJpdmVycyYjMzk7IGV0aHRvb2wgb3BzIHRvIGVuc3VyZSBgcnRubF9sb2NrYCBpcyB0YWtlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGxvY2tpbmcgYmVoYXZpb3IgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIHZlcmlmeSBubyBkZWFkbG9ja3Mgb3IgUkNVIHdhcm5pbmdzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjE1MjU3NjBkNTQyMzM2OTVjZjRjYzliZjkzMDYyZWViY2IzZWZmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE5OjM4OjAyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xuaW5kZXggN2NjMjI5MTY4NTJmYjYuLjgxOTk3MzhiYTk3OWVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmNcbkBAIC05ODQsNyAmIzQzOzk4NCw4IEBAIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBndmVfZXRodG9vbF9vcHMgPSB7XG4gXHQuc3VwcG9ydGVkX3JpbmdfcGFyYW1zID0gRVRIVE9PTF9SSU5HX1VTRV9UQ1BfREFUQV9TUExJVCB8XG4gXHRcdFx0XHQgRVRIVE9PTF9SSU5HX1VTRV9SWF9CVUZfTEVOLFxuIFx0Lm9wX25lZWRzX3J0bmwgPSBFVEhUT09MX09QX05FRURTX1JUTkxfU0NIQU5ORUxTIHxcbi1cdFx0XHQgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sXG4mIzQzO1x0XHRcdCBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8XG4mIzQzO1x0XHRcdCBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuZ2V0X2RydmluZm8gPSBndmVfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X3N0cmluZ3MgPSBndmVfZ2V0X3N0cmluZ3MsXG4gXHQuZ2V0X3NzZXRfY291bnQgPSBndmVfZ2V0X3NzZXRfY291bnQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcbmluZGV4IGE2MTVkNTk5Yjg4ZWU0Li5lN2NmMTJlYWEyNjg5MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcbkBAIC0xODU1LDYgJiM0MzsxODU1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpYXZmX2V0aHRvb2xfb3BzID0ge1xuIFx0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1VTRUNTIHxcbiBcdFx0XHRcdCAgICAgRVRIVE9PTF9DT0FMRVNDRV9VU0VfQURBUFRJVkUsXG4gXHQuc3VwcG9ydGVkX2lucHV0X3hmcm1cdD0gUlhIX1hGUk1fU1lNX1hPUixcbiYjNDM7XHQub3BfbmVlZHNfcnRubFx0XHQ9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcbiBcdC5nZXRfZHJ2aW5mb1x0XHQ9IGlhdmZfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuIFx0LmdldF9yaW5ncGFyYW1cdFx0PSBpYXZmX2dldF9yaW5ncGFyYW0sXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmNcbmluZGV4IDJmNWI2MjZiYTMzZmU1Li4xMTI5MjZkMDc2MzRkNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmNcbkBAIC0yNzIxLDcgJiM0MzsyNzIxLDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVlX2V0aHRvb2xfb3BzID0ge1xuIFx0LnJ4ZmhfbWF4X251bV9jb250ZXh0c1x0PSBNTFg1RV9NQVhfTlVNX1JTUyxcbiBcdC5vcF9uZWVkc19ydG5sXHRcdD0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XG4gXHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbi1cdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQRkxBR1MsXG4mIzQzO1x0XHRcdFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfU1BGTEFHUyB8XG4mIzQzO1x0XHRcdFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MgfFxuIFx0XHRcdFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX01BWF9GUkFNRVMgfFxuIFx0XHRcdFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRSB8XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXG5pbmRleCAxYThhMTlmOTgwZDMzNS4uYzhiNzZkMzAxYzkyY2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuQEAgLTQxOSw3ICYjNDM7NDE5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1ZV9yZXBfZXRodG9vbF9vcHMgPSB7XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfTUFYX0ZSQU1FUyB8XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFLFxuIFx0Lm9wX25lZWRzX3J0bmxcdCAgID0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XG4tXHRcdFx0ICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSxcbiYjNDM7XHRcdFx0ICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8XG4mIzQzO1x0XHRcdCAgICAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLFxuIFx0LmdldF9kcnZpbmZvXHQgICA9IG1seDVlX3JlcF9nZXRfZHJ2aW5mbyxcbiBcdC5nZXRfbGlua1x0ICAgPSBldGh0b29sX29wX2dldF9saW5rLFxuIFx0LmdldF9zdHJpbmdzICAgICAgID0gbWx4NWVfcmVwX2dldF9zdHJpbmdzLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jXG5pbmRleCA5YjNiMzI0MDhjNjRiNy4uMDFkZGMzZGVmOWFjMDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jXG5AQCAtMjg2LDcgJiM0MzsyODYsOCBAQCBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbWx4NWlfZXRodG9vbF9vcHMgPSB7XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfTUFYX0ZSQU1FUyB8XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFLFxuIFx0Lm9wX25lZWRzX3J0bmxcdCAgICA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxuLVx0XHRcdCAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNLFxuJiM0MztcdFx0XHQgICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8XG4mIzQzO1x0XHRcdCAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcbiBcdC5nZXRfZHJ2aW5mbyAgICAgICAgPSBtbHg1aV9nZXRfZHJ2aW5mbyxcbiBcdC5nZXRfc3RyaW5ncyAgICAgICAgPSBtbHg1aV9nZXRfc3RyaW5ncyxcbiBcdC5nZXRfc3NldF9jb3VudCAgICAgPSBtbHg1aV9nZXRfc3NldF9jb3VudCxcbkBAIC0zMDksNiAmIzQzOzMxMCw3IEBAIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1aV9ldGh0b29sX29wcyA9IHtcbiB9O1xuIFxuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1aV9wa2V5X2V0aHRvb2xfb3BzID0ge1xuJiM0MztcdC5vcF9uZWVkc19ydG5sXHQgICAgPSBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuZ2V0X2RydmluZm8gICAgICAgID0gbWx4NWlfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X2xpbmsgICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcbiBcdC5nZXRfdHNfaW5mbyAgICAgICAgPSBtbHg1aV9nZXRfdHNfaW5mbyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jXG5pbmRleCBjYjM0ZmMxNjZlZjk2OC4uMGU0NzA4OGVjNDRiYWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19ldGh0b29sLmNcbkBAIC0yMDI0LDcgJiM0MzsyMDI0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmYm5pY19ldGh0b29sX29wcyA9IHtcbiBcdFx0XHRcdFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfR1BBVVNFUEFSQU0gfFxuIFx0XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEFVU0VQQVJBTSB8XG4gXHRcdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XG4tXHRcdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sXG4mIzQzO1x0XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbiYjNDM7XHRcdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLFxuIFx0LmdldF9kcnZpbmZvXHRcdFx0PSBmYm5pY19nZXRfZHJ2aW5mbyxcbiBcdC5nZXRfcmVnc19sZW5cdFx0XHQ9IGZibmljX2dldF9yZWdzX2xlbixcbiBcdC5nZXRfcmVnc1x0XHRcdD0gZmJuaWNfZ2V0X3JlZ3MsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuaW5kZXggOTRlNjU4ZDA3YTI3ZTguLjg4MWRmNTk3ZDdmOWM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXG5AQCAtNTk3LDcgJiM0Mzs1OTcsOCBAQCBzdGF0aWMgaW50IG1hbmFfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtYW5hX2V0aHRvb2xfb3BzID0ge1xuIFx0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1JYX0NRRV9GUkFNRVMsXG4gXHQub3BfbmVlZHNfcnRubFx0XHQ9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxuLVx0XHRcdFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSxcbiYjNDM7XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbiYjNDM7XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcbiBcdC5nZXRfZXRodG9vbF9zdGF0c1x0PSBtYW5hX2dldF9ldGh0b29sX3N0YXRzLFxuIFx0LmdldF9zc2V0X2NvdW50XHRcdD0gbWFuYV9nZXRfc3NldF9jb3VudCxcbiBcdC5nZXRfc3RyaW5nc1x0XHQ9IG1hbmFfZ2V0X3N0cmluZ3MsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuaW5kZXggMWI4MzRlMmE1MjJlYzUuLjVkNDkxYTk4MjY1ZWY5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXG5AQCAtOTQyLDYgJiM0Mzs5NDIsNyBAQCBzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfdHNfaW5mbyB7XG4gI2RlZmluZSBFVEhUT09MX09QX05FRURTX1JUTkxfR1BBVVNFUEFSQU1cdEJJVCg1KVxuICNkZWZpbmUgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQQVVTRVBBUkFNXHRCSVQoNilcbiAjZGVmaW5lIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9SU1NcdFx0QklUKDcpXG4mIzQzOyNkZWZpbmUgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LXHRcdEJJVCg4KVxuIFxuIC8qKlxuICAqIHN0cnVjdCBldGh0b29sX29wcyAtIG9wdGlvbmFsIG5ldGRldiBvcGVyYXRpb25zXG5AQCAtOTc4LDYgJiM0Mzs5NzksNyBAQCBzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfdHNfaW5mbyB7XG4gICpcdCAtIHBoeWxpbmsgaGVscGVycyAobm90ZSB0aGF0IHBoeWRldiBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQhKVxuICAqXHQgLSBuZXRkZXZfdXBkYXRlX2ZlYXR1cmVzKClcbiAgKlx0IC0gbmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcygpXG4mIzQzOyAqXHQgLSBldGh0b29sX29wX2dldF9saW5rKCkgKHN5bmNzIGxpbmsgd2F0Y2ggdW5kZXIgcnRubF9sb2NrKVxuICAqXG4gICogQGdldF9kcnZpbmZvOiBSZXBvcnQgZHJpdmVyL2RldmljZSBpbmZvcm1hdGlvbi4gTW9kZXJuIGRyaXZlcnMgbm9cbiAgKlx0bG9uZ2VyIGhhdmUgdG8gaW1wbGVtZW50IHRoaXMgY2FsbGJhY2suIE1vc3QgZmllbGRzIGFyZVxuZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL2NvbW1vbi5oIGIvbmV0L2V0aHRvb2wvY29tbW9uLmhcbmluZGV4IDJiMzg0N2YwMDgwMTgzLi40ZTUzNTZlMjZmNDAwYSAxMDA2NDRcbi0tLSBhL25ldC9ldGh0b29sL2NvbW1vbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZXRodG9vbC9jb21tb24uaFxuQEAgLTExMyw2ICYjNDM7MTEzLDggQEAgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCBjbWQpXG4gXHRcdHJldHVybiBvcHMtXHUwMDNlb3BfbmVlZHNfcnRubCBcdTAwMjYgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQQVVTRVBBUkFNO1xuIFx0Y2FzZSBFVEhUT09MX01TR19SU1NfU0VUOlxuIFx0XHRyZXR1cm4gb3BzLVx1MDAzZW9wX25lZWRzX3J0bmwgXHUwMDI2IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9SU1M7XG4mIzQzO1x0Y2FzZSBFVEhUT09MX01TR19MSU5LU1RBVEVfR0VUOlxuJiM0MztcdFx0cmV0dXJuIG9wcy1cdTAwM2VvcF9uZWVkc19ydG5sIFx1MDAyNiBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTks7XG4gXHRjYXNlIEVUSFRPT0xfTVNHX1RTQ09ORklHX0dFVDpcbiBcdGNhc2UgRVRIVE9PTF9NU0dfVFNDT05GSUdfU0VUOlxuIFx0XHQvKiB0c2NvbmZpZyBjYWxscyBuZG9zIChuZG9faHd0c3RhbXBfc2V0L2dldCksIG5vdCBldGh0b29sIG9wcy5cbkBAIC0xNTksNiAmIzQzOzE2MSw4IEBAIGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgZXRoY21kKVxuIFx0Y2FzZSBFVEhUT09MX1NSWEZIOlxuIFx0Y2FzZSBFVEhUT09MX1NSWEZISU5ESVI6XG4gXHRcdHJldHVybiBvcHMtXHUwMDNlb3BfbmVlZHNfcnRubCBcdTAwMjYgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1JTUztcbiYjNDM7XHRjYXNlIEVUSFRPT0xfR0xJTks6XG4mIzQzO1x0XHRyZXR1cm4gb3BzLVx1MDAzZW9wX25lZWRzX3J0bmwgXHUwMDI2IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSztcbiBcdH1cbiBcdHJldHVybiBmYWxzZTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1ZFJiMzNDssCiAgICAmIzM0O0lBVkYmIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDssCiAgICAmIzM0O01MWDVfQ09SRV9FTiYjMzQ7LAogICAgJiMzNDtNTFg1X0NPUkVfSVBPSUImIzM0OywKICAgICYjMzQ7TUxYNV9FU1dJVENIJiMzNDssCiAgICAmIzM0O0ZCTklDJiMzNDssCiAgICAmIzM0O01JQ1JPU09GVF9NQU5BJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXRodG9vbF9vcF9nZXRfbGluayYjMzQ7LAogICAgJiMzNDtldGhubF9kZWZhdWx0X2RvaXQmIzM0OywKICAgICYjMzQ7X19kZXZfZXRodG9vbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvY2tpbmcgaXNzdWUgd2hlcmUgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIHdhcyBjYWxsZWQgd2l0aG91dCBgcnRubF9sb2NrYCBmb3IgZHJpdmVycyB0aGF0IHVzZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIChlLmcuIGd2ZSwgaWF2ZiwgbWx4NSwgZmJuaWMsIG1hbmEpLiBgZXRodG9vbF9vcF9nZXRfbGlua2AgY2FsbHMgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCB3aGljaCByZXF1aXJlcyBgcnRubF9sb2NrYCBiZWNhdXNlIGl0IGNhbiB0cmlnZ2VyIGBkZXZfYWN0aXZhdGVgIGFuZCB1c2UgYHJ0bmxfZGVyZWZlcmVuY2VgLiBUaGUgcGF0Y2ggYWRkcyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCB0byB0aGVzZSBkcml2ZXJzJiMzOTsgZXRodG9vbCBvcHMgdG8gZW5zdXJlIGBydG5sX2xvY2tgIGlzIHRha2VuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbG9ja2luZyBiZWhhdmlvciB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gdmVyaWZ5IG5vIGRlYWRsb2NrcyBvciBSQ1Ugd2FybmluZ3Mgb2NjdXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDIxNTI1NzYwZDU0MjMzNjk1Y2Y0Y2M5YmY5MzA2MmVlYmNiM2VmZjcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1biAyNCAxOTozODowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYwppbmRleCA3Y2MyMjkxNjg1MmZiNi4uODE5OTczOGJhOTc5ZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMKQEAgLTk4NCw3ICYjNDM7OTg0LDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGd2ZV9ldGh0b29sX29wcyA9IHsKIAkuc3VwcG9ydGVkX3JpbmdfcGFyYW1zID0gRVRIVE9PTF9SSU5HX1VTRV9UQ1BfREFUQV9TUExJVCB8CiAJCQkJIEVUSFRPT0xfUklOR19VU0VfUlhfQlVGX0xFTiwKIAkub3BfbmVlZHNfcnRubCA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfAotCQkJIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNLAomIzQzOwkJCSBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8CiYjNDM7CQkJIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSywKIAkuZ2V0X2RydmluZm8gPSBndmVfZ2V0X2RydmluZm8sCiAJLmdldF9zdHJpbmdzID0gZ3ZlX2dldF9zdHJpbmdzLAogCS5nZXRfc3NldF9jb3VudCA9IGd2ZV9nZXRfc3NldF9jb3VudCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jCmluZGV4IGE2MTVkNTk5Yjg4ZWU0Li5lN2NmMTJlYWEyNjg5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2V0aHRvb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jCkBAIC0xODU1LDYgJiM0MzsxODU1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpYXZmX2V0aHRvb2xfb3BzID0gewogCS5zdXBwb3J0ZWRfY29hbGVzY2VfcGFyYW1zID0gRVRIVE9PTF9DT0FMRVNDRV9VU0VDUyB8CiAJCQkJICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRSwKIAkuc3VwcG9ydGVkX2lucHV0X3hmcm0JPSBSWEhfWEZSTV9TWU1fWE9SLAomIzQzOwkub3BfbmVlZHNfcnRubAkJPSBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssCiAJLmdldF9kcnZpbmZvCQk9IGlhdmZfZ2V0X2RydmluZm8sCiAJLmdldF9saW5rCQk9IGV0aHRvb2xfb3BfZ2V0X2xpbmssCiAJLmdldF9yaW5ncGFyYW0JCT0gaWF2Zl9nZXRfcmluZ3BhcmFtLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmMKaW5kZXggMmY1YjYyNmJhMzNmZTUuLjExMjkyNmQwNzYzNGQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmMKQEAgLTI3MjEsNyAmIzQzOzI3MjEsOCBAQCBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbWx4NWVfZXRodG9vbF9vcHMgPSB7CiAJLnJ4ZmhfbWF4X251bV9jb250ZXh0cwk9IE1MWDVFX01BWF9OVU1fUlNTLAogCS5vcF9uZWVkc19ydG5sCQk9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfAogCQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0gfAotCQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQRkxBR1MsCiYjNDM7CQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQRkxBR1MgfAomIzQzOwkJCQkgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSywKIAkuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MgfAogCQkJCSAgICAgRVRIVE9PTF9DT0FMRVNDRV9NQVhfRlJBTUVTIHwKIAkJCQkgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFIHwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYwppbmRleCAxYThhMTlmOTgwZDMzNS4uYzhiNzZkMzAxYzkyY2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMKQEAgLTQxOSw3ICYjNDM7NDE5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1ZV9yZXBfZXRodG9vbF9vcHMgPSB7CiAJCQkJICAgICBFVEhUT09MX0NPQUxFU0NFX01BWF9GUkFNRVMgfAogCQkJCSAgICAgRVRIVE9PTF9DT0FMRVNDRV9VU0VfQURBUFRJVkUsCiAJLm9wX25lZWRzX3J0bmwJICAgPSBFVEhUT09MX09QX05FRURTX1JUTkxfU0NIQU5ORUxTIHwKLQkJCSAgICAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sCiYjNDM7CQkJICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8CiYjNDM7CQkJICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssCiAJLmdldF9kcnZpbmZvCSAgID0gbWx4NWVfcmVwX2dldF9kcnZpbmZvLAogCS5nZXRfbGluawkgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssCiAJLmdldF9zdHJpbmdzICAgICAgID0gbWx4NWVfcmVwX2dldF9zdHJpbmdzLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9ldGh0b29sLmMKaW5kZXggOWIzYjMyNDA4YzY0YjcuLjAxZGRjM2RlZjlhYzA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9ldGh0b29sLmMKQEAgLTI4Niw3ICYjNDM7Mjg2LDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVpX2V0aHRvb2xfb3BzID0gewogCQkJCSAgICAgRVRIVE9PTF9DT0FMRVNDRV9NQVhfRlJBTUVTIHwKIAkJCQkgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFLAogCS5vcF9uZWVkc19ydG5sCSAgICA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfAotCQkJICAgICAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sCiYjNDM7CQkJICAgICAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0gfAomIzQzOwkJCSAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSywKIAkuZ2V0X2RydmluZm8gICAgICAgID0gbWx4NWlfZ2V0X2RydmluZm8sCiAJLmdldF9zdHJpbmdzICAgICAgICA9IG1seDVpX2dldF9zdHJpbmdzLAogCS5nZXRfc3NldF9jb3VudCAgICAgPSBtbHg1aV9nZXRfc3NldF9jb3VudCwKQEAgLTMwOSw2ICYjNDM7MzEwLDcgQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVpX2V0aHRvb2xfb3BzID0gewogfTsKIAogY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVpX3BrZXlfZXRodG9vbF9vcHMgPSB7CiYjNDM7CS5vcF9uZWVkc19ydG5sCSAgICA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSywKIAkuZ2V0X2RydmluZm8gICAgICAgID0gbWx4NWlfZ2V0X2RydmluZm8sCiAJLmdldF9saW5rICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssCiAJLmdldF90c19pbmZvICAgICAgICA9IG1seDVpX2dldF90c19pbmZvLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuYwppbmRleCBjYjM0ZmMxNjZlZjk2OC4uMGU0NzA4OGVjNDRiYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jCkBAIC0yMDI0LDcgJiM0MzsyMDI0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmYm5pY19ldGh0b29sX29wcyA9IHsKIAkJCQkJICBFVEhUT09MX09QX05FRURTX1JUTkxfR1BBVVNFUEFSQU0gfAogCQkJCQkgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEFVU0VQQVJBTSB8CiAJCQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8Ci0JCQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sCiYjNDM7CQkJCQkgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHwKJiM0MzsJCQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLAogCS5nZXRfZHJ2aW5mbwkJCT0gZmJuaWNfZ2V0X2RydmluZm8sCiAJLmdldF9yZWdzX2xlbgkJCT0gZmJuaWNfZ2V0X3JlZ3NfbGVuLAogCS5nZXRfcmVncwkJCT0gZmJuaWNfZ2V0X3JlZ3MsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jCmluZGV4IDk0ZTY1OGQwN2EyN2U4Li44ODFkZjU5N2Q3ZjljNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmMKQEAgLTU5Nyw3ICYjNDM7NTk3LDggQEAgc3RhdGljIGludCBtYW5hX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtYW5hX2V0aHRvb2xfb3BzID0gewogCS5zdXBwb3J0ZWRfY29hbGVzY2VfcGFyYW1zID0gRVRIVE9PTF9DT0FMRVNDRV9SWF9DUUVfRlJBTUVTLAogCS5vcF9uZWVkc19ydG5sCQk9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfAotCQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sCiYjNDM7CQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0gfAomIzQzOwkJCQkgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSywKIAkuZ2V0X2V0aHRvb2xfc3RhdHMJPSBtYW5hX2dldF9ldGh0b29sX3N0YXRzLAogCS5nZXRfc3NldF9jb3VudAkJPSBtYW5hX2dldF9zc2V0X2NvdW50LAogCS5nZXRfc3RyaW5ncwkJPSBtYW5hX2dldF9zdHJpbmdzLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaAppbmRleCAxYjgzNGUyYTUyMmVjNS4uNWQ0OTFhOTgyNjVlZjkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXRodG9vbC5oCkBAIC05NDIsNiAmIzQzOzk0Miw3IEBAIHN0cnVjdCBrZXJuZWxfZXRodG9vbF90c19pbmZvIHsKICNkZWZpbmUgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dQQVVTRVBBUkFNCUJJVCg1KQogI2RlZmluZSBFVEhUT09MX09QX05FRURTX1JUTkxfU1BBVVNFUEFSQU0JQklUKDYpCiAjZGVmaW5lIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9SU1MJCUJJVCg3KQomIzQzOyNkZWZpbmUgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LCQlCSVQoOCkKIAogLyoqCiAgKiBzdHJ1Y3QgZXRodG9vbF9vcHMgLSBvcHRpb25hbCBuZXRkZXYgb3BlcmF0aW9ucwpAQCAtOTc4LDYgJiM0Mzs5NzksNyBAQCBzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfdHNfaW5mbyB7CiAgKgkgLSBwaHlsaW5rIGhlbHBlcnMgKG5vdGUgdGhhdCBwaHlkZXYgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkISkKICAqCSAtIG5ldGRldl91cGRhdGVfZmVhdHVyZXMoKQogICoJIC0gbmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcygpCiYjNDM7ICoJIC0gZXRodG9vbF9vcF9nZXRfbGluaygpIChzeW5jcyBsaW5rIHdhdGNoIHVuZGVyIHJ0bmxfbG9jaykKICAqCiAgKiBAZ2V0X2RydmluZm86IFJlcG9ydCBkcml2ZXIvZGV2aWNlIGluZm9ybWF0aW9uLiBNb2Rlcm4gZHJpdmVycyBubwogICoJbG9uZ2VyIGhhdmUgdG8gaW1wbGVtZW50IHRoaXMgY2FsbGJhY2suIE1vc3QgZmllbGRzIGFyZQpkaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvY29tbW9uLmggYi9uZXQvZXRodG9vbC9jb21tb24uaAppbmRleCAyYjM4NDdmMDA4MDE4My4uNGU1MzU2ZTI2ZjQwMGEgMTAwNjQ0Ci0tLSBhL25ldC9ldGh0b29sL2NvbW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9ldGh0b29sL2NvbW1vbi5oCkBAIC0xMTMsNiAmIzQzOzExMyw4IEBAIGV0aHRvb2xfbmxfbXNnX25lZWRzX3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggY21kKQogCQlyZXR1cm4gb3BzLSZndDtvcF9uZWVkc19ydG5sICZhbXA7IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEFVU0VQQVJBTTsKIAljYXNlIEVUSFRPT0xfTVNHX1JTU19TRVQ6CiAJCXJldHVybiBvcHMtJmd0O29wX25lZWRzX3J0bmwgJmFtcDsgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1JTUzsKJiM0MzsJY2FzZSBFVEhUT09MX01TR19MSU5LU1RBVEVfR0VUOgomIzQzOwkJcmV0dXJuIG9wcy0mZ3Q7b3BfbmVlZHNfcnRubCAmYW1wOyBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTks7CiAJY2FzZSBFVEhUT09MX01TR19UU0NPTkZJR19HRVQ6CiAJY2FzZSBFVEhUT09MX01TR19UU0NPTkZJR19TRVQ6CiAJCS8qIHRzY29uZmlnIGNhbGxzIG5kb3MgKG5kb19od3RzdGFtcF9zZXQvZ2V0KSwgbm90IGV0aHRvb2wgb3BzLgpAQCAtMTU5LDYgJiM0MzsxNjEsOCBAQCBldGh0b29sX2lvY3RsX25lZWRzX3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIGV0aGNtZCkKIAljYXNlIEVUSFRPT0xfU1JYRkg6CiAJY2FzZSBFVEhUT09MX1NSWEZISU5ESVI6CiAJCXJldHVybiBvcHMtJmd0O29wX25lZWRzX3J0bmwgJmFtcDsgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1JTUzsKJiM0MzsJY2FzZSBFVEhUT09MX0dMSU5LOgomIzQzOwkJcmV0dXJuIG9wcy0mZ3Q7b3BfbmVlZHNfcnRubCAmYW1wOyBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTks7CiAJfQogCXJldHVybiBmYWxzZTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAwMwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDM5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJUTkwgTG9jayBJbXBhY3Qgb2YgdGhlIE5ldyBFVEhUT09MIEZsYWcqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBhIG5ldyBmbGFnLCBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCwgYW5kIGl0IHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgbmVlZCBmb3IgdGhlIFJUTkwgbG9jayBpbiB0aGUgZXRodG9vbCBjb250ZXh0LiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGJlaW5nIGFkZGVkIHRvIGBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaGAgYW5kIHVzZWQgaW4gYG5ldC9ldGh0b29sL2NvbW1vbi5oYCwgaW5mbHVlbmNpbmcgdGhlIGBFVEhUT09MX01TR19MSU5LU1RBVEVfR0VUYCBhbmQgYEVUSFRPT0xfR0xJTktgIG9wZXJhdGlvbnMuIEl0JiMzOTtzIGFsc28gYmVpbmcgaW1wbGVtZW50ZWQgaW4gcXVpdGUgYSBmZXcgZHJpdmVyczogZ3ZlLCBpYXZmLCBtbHg1LCBmYm5pYywgYW5kIG1hbmEsIHNvIHRoaXMgYWZmZWN0cyBxdWl0ZSBhIGZldyBkcml2ZXJzLgoKRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5ICpob3cqIHRoaXMgZmxhZyBpcyB1c2VkLiBMZXQmIzM5O3MgZGlnIGludG8gYG5ldC9ldGh0b29sL2NvbW1vbi5oYCBhbmQgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYCB0byBzZWUgaG93IGl0IGFmZmVjdHMgdGhlIGV4aXN0aW5nIGxvZ2ljLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIG1vZGlmeWluZyBgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubGAgYW5kIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgLiBBbHJpZ2h0LCBzbyB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0JiMzOTtzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgKndoZW4qIHRoZSBgcnRubF9sb2NrYCBpcyB0YWtlbiBiZWZvcmUgY2FsbGluZyB0aGUgYGdldF9saW5rYCBldGh0b29sIG9wZXJhdGlvbi4KClRoaXMgaW1tZWRpYXRlbHkgc2NyZWFtcyAmIzM0O3BvdGVudGlhbCBmb3IgZnV6emluZyYjMzQ7LiBBbnkgY2hhbmdlIHRvIGxvY2tpbmcgYmVoYXZpb3IgaXMgd29ydGggYSBkZWVwIGxvb2ssIHNpbmNlIGl0IGNvdWxkIGludHJvZHVjZSBzdWJ0bGUgcmFjZSBjb25kaXRpb25zLCBkZWFkbG9ja3MsIG9yIHVuaW50ZW5kZWQgYmVoYXZpb3IgaW4gdGhlIGtlcm5lbC4gVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgc2luY2UgZXRodG9vbCBpcyBhIHVzZXItc3BhY2UgaW50ZXJmYWNlLCBhbmQgdGhlc2UgY2hhbmdlcyBjb3VsZCBpbnRyb2R1Y2UgbmV3IHZlY3RvcnMgZm9yIGF0dGFjay4KCldhaXQsIGlzIHRoaXMganVzdCBjb25maW5lZCB0byB0aGUgZHJpdmVycyBvciBpcyB0aGlzIGFmZmVjdGluZyB0aGUgKmNvcmUqIGtlcm5lbCBiZWhhdmlvcj8gT2theSwgdGhlIHBhdGNoIGlzIGFsbG93aW5nIGRyaXZlcnMgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoZWlyIG5lZWQgZm9yIHRoZSBSVE5MIGxvY2sgZHVyaW5nIGBnZXRfbGlua2AuIEhtbS4uLiBJIG5lZWQgdG8gYmUgc3VyZS4gSSYjMzk7bSBwcmVzdW1pbmcgdGhlIGRlZmF1bHQgYmVoYXZpb3IgKndhcyogdGhhdCB0aGUgUlROTCBsb2NrICp3YXNuJiMzOTt0KiBuZWVkZWQgZm9yIHRoZXNlIGNvbW1hbmRzLgoKTGV0JiMzOTtzIHZlcmlmeSB0aGF0IHF1aWNrbHksIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGBuZXQvZXRodG9vbC9jb21tb24uaGAgYW5kIHRoZW4gdGhlIG5ldGxpbmsgYW5kIGlvY3RsIGltcGxlbWVudGF0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgbmV0L2V0aHRvb2wvaW9jdGwuY2AgYW5kIGBuZXQvZXRodG9vbC9uZXRsaW5rLmNgLgoKT2theSwgeWVzLiBgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubGAgYW5kIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgICpyZXR1cm4qIGB0cnVlYCBpZiB0aGUgbG9jayAqaXMqIG5lZWRlZC4gU28sIHdoYXQmIzM5O3MgdGhlIGRlZmF1bHQgYmVoYXZpb3I/IEkgbmVlZCB0byBjaGVjayBgbmV0L2V0aHRvb2wvaW9jdGwuY2AgdG8gYmUgc3VyZS4gSSYjMzk7bGwgbmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgcmV0dXJuIGZhbHNlIGJ5IGRlZmF1bHQgZm9yIHRoZSBjb21tYW5kcyBpbiBxdWVzdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldGh0b29sX2lvY3RsX25lZWRzX3J0bmwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvY29tbW9uLmg9OTI9ZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCBjbWQpXG4tLVxubmV0L2V0aHRvb2wvY29tbW9uLmgtMTI5LS8qKlxubmV0L2V0aHRvb2wvY29tbW9uLmg6MTMwOiAqIGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubCgpIC0gZG9lcyB0aGlzIGxlZ2FjeSBpb2N0bCBjbWQgbmVlZCBydG5sX2xvY2s/XG5uZXQvZXRodG9vbC9jb21tb24uaC0xMzEtICogQGRldjogdGFyZ2V0IGRldmljZVxuLS1cbm5ldC9ldGh0b29sL2NvbW1vbi5oPTEzNz1zdGF0aWMgaW5saW5lIGJvb2xcbm5ldC9ldGh0b29sL2NvbW1vbi5oOjEzODpldGh0b29sX2lvY3RsX25lZWRzX3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIGV0aGNtZClcbm5ldC9ldGh0b29sL2NvbW1vbi5oLTEzOS17XG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYz0zMjcyPWRldl9ldGh0b29sX2xvY2tlZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYy0zNTkwLSAqIERyaXZlci1kZWNpZGVkIFNFVCBjb21tYW5kcyB0aGF0IG1heSBjaGFpbiBpbnRvIHJ0bmwtb25seSBoZWxwZXJzIGFyZVxubmV0L2V0aHRvb2wvaW9jdGwuYzozNTkxOiAqIGNvdmVyZWQgYnkgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sKCkvRVRIVE9PTF9PUF9ORUVEU19SVE5MXyouXG5uZXQvZXRodG9vbC9pb2N0bC5jLTM1OTItICovXG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYz0zNjEwPV9fZGV2X2V0aHRvb2woc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaWZyZXEgKmlmciwgdm9pZCBfX3VzZXIgKnVzZXJhZGRyLFxuLS1cbm5ldC9ldGh0b29sL2lvY3RsLmMtMzYyMy1cdFx0ICAgIGV0aHRvb2xfY21kX2NoYW5nZXNfZmVhdHVyZXMoZXRoY21kKSB8fFxubmV0L2V0aHRvb2wvaW9jdGwuYzozNjI0Olx0XHQgICAgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sKGRldiwgZXRoY21kKTtcbm5ldC9ldGh0b29sL2lvY3RsLmMtMzYyNS1cdGlmIChuZWVkX3J0bmwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ4OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gZXRodG9vbCBpb2N0bCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCBiYXNlZCBvbiB0aGUgcmVjZW50IGlzc3VlLCBJIG5lZWQgdG8gZ2V0IHJpZ2h0IGludG8gdGhlIGBuZXQvZXRodG9vbC9pb2N0bC5jYCBjb2RlIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBnb2luZyBvbi4gU3BlY2lmaWNhbGx5LCBJIGhhdmUgYSBodW5jaCBpdCYjMzk7cyByZWxhdGVkIHRvIGhvdyBldGh0b29sIGhhbmRsZXMgc3BlY2lmaWMgcmVxdWVzdHMuIEkmIzM5O20gZ29pbmcgdG8ganVtcCByaWdodCB0byB0aGUgYXJlYSBhcm91bmQgbGluZSAzNjI0LiBUaGF0IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFzIEkgcmVtZW1iZXIgdGhlIGdlbmVyYWwgbGF5b3V0IG9mIHRoZSBmaWxlLCBhbmQgdGhhdCByYW5nZSBsaWtlbHkgaGFuZGxlcyBhIGdvb2QgY2h1bmsgb2YgdGhlIGlvY3RsIHJvdXRpbmcsIG9yIHBlcmhhcHMgYSBwYXJ0aWN1bGFyIGNvbW1hbmQgdGhhdCBoYXMgYmVlbiBpbXBsaWNhdGVkLiBJJiMzOTttIGV4cGVjdGluZyBzb21lIHByZXR0eSBsb3ctbGV2ZWwgc29ja2V0IGludGVyYWN0aW9uIG9yIHBlcmhhcHMgdGhlIGRlZmluaXRpb24gb2YgdGhlIHN0cnVjdHVyZXMgd2UmIzM5O3JlIHBhc3NpbmcgYmFjayBhbmQgZm9ydGggd2l0aCB0aGUga2VybmVsLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIGlmIHRoaXMgaHVuY2ggaXMgY29ycmVjdCwgb3IgaWYgSSBuZWVkIHRvIGFkanVzdCBteSBzZWFyY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZXRodG9vbC9pb2N0bC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzYxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNjEwOlx0X19kZXZfZXRodG9vbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpZnJlcSAqaWZyLCB2b2lkIF9fdXNlciAqdXNlcmFkZHIsXG4zNjExOlx0XHQgICAgICB1MzIgZXRoY21kLCBzdHJ1Y3QgZXRodG9vbF9kZXZsaW5rX2NvbXBhdCAqZGV2bGlua19zdGF0ZSlcbjM2MTI6XHR7XG4zNjEzOlx0XHRuZXRkZXZpY2VfdHJhY2tlciBkZXZfdHJhY2tlcjtcbjM2MTQ6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4zNjE1Olx0XHRib29sIG5lZWRfcnRubDtcbjM2MTY6XHRcdGludCByYztcbjM2MTc6XHRcbjM2MTg6XHRcdGRldiA9IG5ldGRldl9nZXRfYnlfbmFtZShuZXQsIGlmci1cdTAwM2VpZnJfbmFtZSwgXHUwMDI2ZGV2X3RyYWNrZXIsIEdGUF9LRVJORUwpO1xuMzYxOTpcdFx0aWYgKCFkZXYpXG4zNjIwOlx0XHRcdHJldHVybiAtRU5PREVWO1xuMzYyMTpcdFxuMzYyMjpcdFx0bmVlZF9ydG5sID0gIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikgfHxcbjM2MjM6XHRcdFx0ICAgIGV0aHRvb2xfY21kX2NoYW5nZXNfZmVhdHVyZXMoZXRoY21kKSB8fFxuMzYyNDpcdFx0XHQgICAgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sKGRldiwgZXRoY21kKTtcbjM2MjU6XHRcdGlmIChuZWVkX3J0bmwpXG4zNjI2Olx0XHRcdHJ0bmxfbG9jaygpO1xuMzYyNzpcdFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XG4zNjI4Olx0XHRpZiAoZGV2LVx1MDAzZXJlZ19zdGF0ZSBcdTAwM2UgTkVUUkVHX1JFR0lTVEVSRUQgfHxcbjM2Mjk6XHRcdCAgICBkZXYtXHUwMDNlbW92aW5nX25zIHx8ICFuZXRfZXEoZGV2X25ldChkZXYpLCBuZXQpKSB7XG4zNjMwOlx0XHRcdHJjID0gLUVOT0RFVjtcbjM2MzE6XHRcdFx0Z290byBleGl0X29wc191bmxvY2s7XG4zNjMyOlx0XHR9XG4zNjMzOlx0XG4zNjM0Olx0XHRyYyA9IGRldl9ldGh0b29sX2xvY2tlZChuZXQsIGRldiwgdXNlcmFkZHIsIGV0aGNtZCwgZGV2bGlua19zdGF0ZSxcbjM2MzU6XHRcdFx0XHRcdG5lZWRfcnRubCk7XG4zNjM2Olx0XG4zNjM3Olx0ZXhpdF9vcHNfdW5sb2NrOlxuMzYzODpcdFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcbjM2Mzk6XHRcdGlmIChuZWVkX3J0bmwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI1OAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9jayBBY3F1aXNpdGlvbiBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyBhIGNvbmRpdGlvbmFsIGxvY2sgYWNxdWlzaXRpb24gaGVyZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYHJ0bmxfbG9jaygpYC4gVGhlIGNvZGUgY2xlYXJseSBzdGF0ZXMgdGhhdCBpZiBgbmVlZF9ydG5sYCBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB3ZSBhY3F1aXJlIHRoZSBgcnRubF9sb2NrYC4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBUaGUgaW50ZXJlc3RpbmcgcGFydCwgdGhvdWdoLCBpcyB0aGUgKmRlZmF1bHQqIGJlaGF2aW9yIG9mIGBFVEhUT09MX0dMSU5LYC4gSXQgc2VlbXMgdGhhdCwgYnkgZGVmYXVsdCwgd2UgKmRvbiYjMzk7dCogbmVlZCB0aGUgYHJ0bmxfbG9ja2AgZm9yIHRoaXMgc3BlY2lmaWMgYGV0aHRvb2xgIGNvbW1hbmQsIHVubGVzcywgYW5kIHRoaXMgaXMgdGhlIGNydXggb2YgaXQsIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgIHJldHVybnMgdHJ1ZS4gVGhhdCBmdW5jdGlvbiBiZWNvbWVzIHRoZSBnYXRla2VlcGVyIGZvciB3aGV0aGVyIHdlIG5lZWQgdG8gc2VyaWFsaXplIGFjY2VzcyB0byB0aGUgbmV0d29yayBkZXZpY2UmIzM5O3Mgcm91dGluZyB0YWJsZS4KCkJ1dCB0aGUgYmlnZ2VyIHBpY3R1cmUgcXVlc3Rpb24gaXMgd2hhdCYjMzk7cyBnb2luZyBvbiBiZWhpbmQgdGhlIHNjZW5lcywgc28gbGV0JiMzOTtzIGNoZWNrIHdoYXQgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIGRvZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgcnRubF9sb2NrYCBhbmQgdGhlIGRldmljZSBvcGVyYXRpb25zIGxvY2ssIGFuZCBob3cgdGhpcyBhZmZlY3RzIHRoZSBsb2NraW5nIGhpZXJhcmNoeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIGBydG5sX2xvY2tgIGlzIGFjcXVpcmVkIG9yIG5vdC4gVGhpcyBpcyBnZXR0aW5nIHRvIHRoZSBoZWFydCBvZiB0aGUgY29uY3VycmVuY3kgY29udHJvbCBhbmQgZW5zdXJpbmcgdGhhdCB0aGUgY2FsbHMgYXJlIHRocmVhZC1zYWZlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgaW50byBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRkZXZfbmVlZF9vcHNfbG9jayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYz0zMT1pbnQgcGh5X2xpbmtfdG9wb19hZGRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmMtNDQtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfbGlua190b3BvbG9neS5jOjQ1Olx0aWYgKFdBUk5fT05fT05DRShuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKSlcbmRyaXZlcnMvbmV0L3BoeS9waHlfbGlua190b3BvbG9neS5jLTQ2LVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jPTgyPXN0YXRpYyBfX2lubGluZV9fIGludCBkZXZfaXNfZXRoZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmMtODMte1xuZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jOjg0Olx0cmV0dXJuIGRldi1cdTAwM2V0eXBlID09IEFSUEhSRF9FVEhFUiBcdTAwMjZcdTAwMjYgIW5ldGRldl9uZWVkX29wc19sb2NrKGRldik7XG5kcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmMtODUtfVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTc3LVx0ICogICBhbmQgb3RoZXIgY2FsbGJhY2tzLCB0aGF0IGlzIHRoZSBpbnN0YW5jZSBsb2NrIG9uIGRldmljZXMgZm9yXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1Nzg6XHQgKiAgIHdoaWNoIG5ldGRldl9uZWVkX29wc19sb2NrKCkgcmV0dXJucyB0cnVlLCBvdGhlcndpc2UgYnkgcnRubF9sb2NrO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTc5LVx0ICpcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU4MC1cdCAqIC0gZG91YmxlIG9wcyBwcm90ZWN0ZWQgLSBhbHdheXMgcHJvdGVjdGVkIGJ5IHJ0bmxfbG9jayBidXQgZm9yXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1ODE6XHQgKiAgIGRldmljZXMgZm9yIHdoaWNoIG5ldGRldl9uZWVkX29wc19sb2NrKCkgcmV0dXJucyB0cnVlIC0gYWxzb1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTgyLVx0ICogICB0aGUgaW5zdGFuY2UgbG9jay5cbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTIxPW5ldGRldl9hc3NlcnRfbG9ja2VkX29yX2ludmlzaWJsZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMjctXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjI4OnN0YXRpYyBpbmxpbmUgYm9vbCBuZXRkZXZfbmVlZF9vcHNfbG9jayhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0yOS17XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD0zOT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X2xvY2tfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTQwLXtcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6NDE6XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNDItXHRcdG5ldGRldl9sb2NrKGRldik7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD00NT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3VubG9ja19vcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNDYte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo0NzpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC00OC1cdFx0bmV0ZGV2X3VubG9jayhkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9NTE9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9sb2NrX29wc190b19mdWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTUyLXtcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6NTM6XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNTQtXHRcdG5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD01OT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3VubG9ja19mdWxsX3RvX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC02MC17XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjYxOlx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTYyLVx0XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZChkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9Njc9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNjgte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo2OTpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC03MC1cdFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZkZXYtXHUwMDNlbG9jayk7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD04Mz1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTg0LXtcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6ODU6XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtODYtXHRcdG5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD04OT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X2xvY2tfb3BzX2NvbXBhdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC05MC17XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjkxOlx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTkyLVx0XHRuZXRkZXZfbG9jayhkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9OTc9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl91bmxvY2tfb3BzX2NvbXBhdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC05OC17XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjk5Olx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTEwMC1cdFx0bmV0ZGV2X3VubG9jayhkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9MTA2PXN0YXRpYyBpbmxpbmUgaW50IG5ldGRldl9pc19sb2NrZWRfb3BzX2NvbXBhdChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0xMDcte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDoxMDg6XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMTA5LVx0XHRyZXR1cm4gbG9ja2RlcF9pc19oZWxkKFx1MDAyNmRldi1cdTAwM2Vsb2NrKTtcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmg9NDM9c3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c190eCB7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oLTkxLSAqXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmg6OTI6ICogT3BzIGFyZSBjYWxsZWQgdW5kZXIgdGhlIGluc3RhbmNlIGxvY2sgaWYgbmV0ZGV2X25lZWRfb3BzX2xvY2soKVxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oLTkzLSAqIHJldHVybnMgdHJ1ZSwgb3RoZXJ3aXNlIHVuZGVyIHJ0bmxfbG9jay5cbi0tXG5uZXQvY29yZS9kZXYuYz0xMTMyMD1pbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2NvcmUvZGV2LmMtMTEzNzQtXG5uZXQvY29yZS9kZXYuYzoxMTM3NTpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIFx1MDAyNlx1MDAyNlxubmV0L2NvcmUvZGV2LmMtMTEzNzYtXHQgICAgZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmRvX3NldF9yeF9tb2RlIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9jb3JlL2Rldi5jPTEyMzYyPXZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCxcbi0tXG5uZXQvY29yZS9kZXYuYy0xMjM5NS1cdFx0XHRjb250aW51ZTtcbm5ldC9jb3JlL2Rldi5jOjEyMzk2Olx0XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSkge1xubmV0L2NvcmUvZGV2LmMtMTIzOTctXHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZkZXYtXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfaGVhZCk7XG4tLVxubmV0L2NvcmUvZGV2LmMtMTI0MDQtXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgaGVhZCwgdW5yZWdfbGlzdCkge1xubmV0L2NvcmUvZGV2LmM6MTI0MDU6XHRcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbm5ldC9jb3JlL2Rldi5jLTEyNDA2LVx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2LVx1MDAzZWNsb3NlX2xpc3QsIFx1MDAyNmNsb3NlX2hlYWQpO1xuLS1cbm5ldC9jb3JlL2Rldi5jPTEyNTIyPWludCBfX2Rldl9jaGFuZ2VfbmV0X25hbWVzcGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L2NvcmUvZGV2LmMtMTI2MTItXG5uZXQvY29yZS9kZXYuYzoxMjYxMzpcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbm5ldC9jb3JlL2Rldi5jLTEyNjE0LVx0XHRuZXRkZXZfbG9jayhkZXYpO1xuLS1cbm5ldC9jb3JlL2Rldi5jLTEyNjgzLVx0ZGV2LVx1MDAzZW1vdmluZ19ucyA9IGZhbHNlO1xubmV0L2NvcmUvZGV2LmM6MTI2ODQ6XHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5uZXQvY29yZS9kZXYuYy0xMjY4NS1cdFx0bmV0ZGV2X3VubG9jayhkZXYpO1xuLS1cbm5ldC9jb3JlL2Rldi5oPTE4MT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZfc2V0X3VwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgdmFsdWUpXG4tLVxubmV0L2NvcmUvZGV2LmgtMTg3LVxubmV0L2NvcmUvZGV2Lmg6MTg4Olx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxubmV0L2NvcmUvZGV2LmgtMTg5LVx0XHRuZXRkZXZfbG9jayhkZXYpO1xubmV0L2NvcmUvZGV2LmgtMTkwLVx0ZGV2LVx1MDAzZXVwID0gdmFsdWU7XG5uZXQvY29yZS9kZXYuaDoxOTE6XHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5uZXQvY29yZS9kZXYuaC0xOTItXHRcdG5ldGRldl91bmxvY2soZGV2KTtcbi0tXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jPTE0MTA9dm9pZCBfX2Rldl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmMtMTQyMi1cdGlmIChvcHMtXHUwMDNlbmRvX3NldF9yeF9tb2RlX2FzeW5jIHx8IG9wcy1cdTAwM2VuZG9fY2hhbmdlX3J4X2ZsYWdzIHx8XG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jOjE0MjM6XHQgICAgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSkge1xubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYy0xNDI0LVx0XHRuZXRpZl9yeF9tb2RlX3F1ZXVlKGRldik7XG4tLVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYz0xMDEzPWludCBuZXRkZXZfbmxfYmluZF9yeF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMDU2LVx0XHRlcnIgPSAtRU5PREVWO1xubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxMDU3Olx0ZWxzZSBpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKG5ldGRldikpXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEwNTgtXHRcdGVyciA9IC1FT1BOT1RTVVBQO1xuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI0NT1pbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjUwLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjUxOlx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjUyLVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYz0zNjEwPV9fZGV2X2V0aHRvb2woc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaWZyZXEgKmlmciwgdm9pZCBfX3VzZXIgKnVzZXJhZGRyLFxuLS1cbm5ldC9ldGh0b29sL2lvY3RsLmMtMzYyMS1cbm5ldC9ldGh0b29sL2lvY3RsLmM6MzYyMjpcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIHx8XG5uZXQvZXRodG9vbC9pb2N0bC5jLTM2MjMtXHRcdCAgICBldGh0b29sX2NtZF9jaGFuZ2VzX2ZlYXR1cmVzKGV0aGNtZCkgfHxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTA3PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jLTUzOS1cdGlmIChyZXFfaW5mby1cdTAwM2VkZXYpIHtcbm5ldC9ldGh0b29sL25ldGxpbmsuYzo1NDA6XHRcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhyZXFfaW5mby1cdTAwM2VkZXYpIHx8XG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNTQxLVx0XHRcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKHJlcV9pbmZvLVx1MDAzZWRldiwgY21kKTtcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTk0PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kdW1wX29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy02MDgtXHRldGhubF9pbml0X3JlcGx5X2RhdGEoY3R4LVx1MDAzZXJlcGx5X2RhdGEsIGN0eC1cdTAwM2VvcHMsIGRldik7XG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6NjA5Olx0bmVlZF9ydG5sID0gIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikgfHxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy02MTAtXHRcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKGRldiwgY3R4LVx1MDAzZW9wcy1cdTAwM2VyZXF1ZXN0X2NtZCk7XG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jPTkwMD1zdGF0aWMgaW50IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtOTMwLVx0ZGV2ID0gcmVxX2luZm8tXHUwMDNlZGV2O1xubmV0L2V0aHRvb2wvbmV0bGluay5jOjkzMTpcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIHx8XG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtOTMyLVx0XHQgICAgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChkZXYsIGNtZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5NDkKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxvY2tpbmcgQmVoYXZpb3IgZm9yIEVUSFRPT0xfR0xJTksgT3BzOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBgbmVlZF9ydG5sYCBpcyBkZXRlcm1pbmVkIGJ5IHdoZXRoZXIgYSBkZXZpY2UgKmRvZXNuJiMzOTt0KiBuZWVkIGFuIG9wcyBsb2NrLiBFc3NlbnRpYWxseSwgZGV2aWNlcyB0aGF0ICpkb24mIzM5O3QqIG5lZWQgdGhlIG9wcyBsb2NrIGFsd2F5cyBuZWVkIGBydG5sX2xvY2tgLCBhbmQgdGhvc2UgdGhhdCBkbyBuZWVkIHRoZSBvcHMgbG9jayBvbmx5IG5lZWQgYHJ0bmxfbG9ja2AgaWYgYGV0aHRvb2xfbmxfbXNnX25lZWRzX3J0bmxgIG9yIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgIHNheXMgc28uIFRoaXMgc2VlbXMgbGlrZSBhIG5ld2lzaCB0aGluZyB3aGVyZSBzb21lIGRyaXZlcnMgY2FuIGF2b2lkIGBydG5sX2xvY2tgIGZvciB0aGVpciBldGh0b29sIG9wZXJhdGlvbnMgYnkgdXNpbmcgYG5ldGRldl9sb2NrX29wcyhkZXYpYCBpbnN0ZWFkLgoKVGhlIGRyaXZlcnMgdG91Y2hlZCBpbiB0aGlzIHBhdGNoIChndmUsIGlhdmYsIG1seDUsIGZibmljLCBtYW5hKSBhcmUgcHJvYmFibHkgb25lcyB0aGF0IGhhdmUgb3B0ZWQgKmluKiB0byB0aGlzIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgdGhpbmcuIFRoYXQmIzM5O3Mgd2h5LCBieSBkZWZhdWx0LCB0aGV5ICpkb24mIzM5O3QqIHVzZSBgcnRubF9sb2NrYCBmb3IgZXRodG9vbCBvcHMuIEhvd2V2ZXIsIGZvciBgRVRIVE9PTF9HTElOS2AgKHRoZSBgZ2V0X2xpbmtgIG9wZXJhdGlvbiksIHRoZXkgKmRvKiBuZWVkIGBydG5sX2xvY2tgLiBXaHk/IEJlY2F1c2UgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBuZXRpZl9jYXJyaWVyX29rYCBhbmQgbWlnaHQgc3luYyB0aGUgbGluayB3YXRjaCB1bmRlciB0aGUgYHJ0bmxfbG9ja2AuCgpBaCwgbm93IEkgc2VlOiB0aGUgcGF0Y2ggaXMgYWRkaW5nIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZSBgb3BfbmVlZHNfcnRubGAgZmxhZ3MgZm9yIHRoZXNlIGRyaXZlcnMuIFRoaXMgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgbWVhbnMgdGhhdCB3aGVuIGBFVEhUT09MX0dMSU5LYCBpcyBjYWxsZWQsIHRoZSBgcnRubF9sb2NrYCAqd2lsbCogYmUgdGFrZW4gZm9yIHRoZXNlIGRyaXZlcnMsIGNoYW5naW5nIGxvY2tpbmcgYmVoYXZpb3IuCgpEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcsIHRoaXMgZml4ZXMgb3IgY2hhbmdlcyBsb2NraW5nIGJlaGF2aW9yIGZvciBgRVRIVE9PTF9HTElOS2AgaW4gc2V2ZXJhbCBkcml2ZXJzLCBhbmQgdGhhdCBoYXMgdGhlIHBvdGVudGlhbCB0byBpbnRyb2R1Y2UgYnVncyBvciBleHBvc2UgdnVsbmVyYWJpbGl0aWVzLgoKU28sIGxldCYjMzk7cyBzZWUgd2hhdCBmdW5jdGlvbnMgYXJlIGFmZmVjdGVkLiBJIG5lZWQgdG8gbm90ZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgYW5kIGBldGhubF9kZWZhdWx0X2RvaXRgIGZvciBgRVRIVE9PTF9NU0dfTElOS1NUQVRFX0dFVGAsIGFsb25nIHdpdGggdGhlIGR1bXBpbmcgZnVuY3Rpb24gYGV0aG5sX2RlZmF1bHRfZHVtcF9vbmVgLiBUaGUgcGF0Y2ggaXRzZWxmIGNvbmZpcm1zIHRoaXMgYmVjYXVzZSBgZ3ZlX2V0aHRvb2xfb3BzLmdldF9saW5rYCBpcyBwcm9iYWJseSBqdXN0IGNhbGxpbmcgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLgoKTG9va2luZyBhdCB0aGUgcGF0Y2ggaW4gbW9yZSBkZXRhaWwsIGl0JiMzOTtzIGNsZWFyOiBgZ3ZlYCwgYGlhdmZgLCBgbWx4NWAsIGBmYm5pY2AsIGFuZCBgbWFuYWAgYXJlIGdldHRpbmcgdGhpcyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCBmbGFnIGFkZGVkLgoKVGhlIGRlc2NyaXB0aW9uIGV4cGxpY2l0bHkgc3RhdGVzLCAmIzM0O2V0aHRvb2xfb3BfZ2V0X2xpbmsoKSAoc3luY3MgbGluayB3YXRjaCB1bmRlciBydG5sX2xvY2spLiYjMzQ7IFRoYXQmIzM5O3MgdGhlIGtleTogYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBsaW5rd2F0Y2hfc3luY19kZXYoZGV2KWAsIHdoaWNoIHJlcXVpcmVzIGBydG5sX2xvY2tgLiBQZXJmZWN0LiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRocm91Z2ggYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIHRvIHZlcmlmeSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldGh0b29sX29wX2dldF9saW5rJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMjMzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL3VtL2RyaXZlcnMvdmVjdG9yX2tlcm4uYz0xNTAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdmVjdG9yX25ldF9ldGh0b29sX29wcyA9IHtcbi0tXG5hcmNoL3VtL2RyaXZlcnMvdmVjdG9yX2tlcm4uYy0xNTAyLVx0LmdldF9kcnZpbmZvXHQ9IHZlY3Rvcl9uZXRfZ2V0X2RydmluZm8sXG5hcmNoL3VtL2RyaXZlcnMvdmVjdG9yX2tlcm4uYzoxNTAzOlx0LmdldF9saW5rXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5hcmNoL3VtL2RyaXZlcnMvdmVjdG9yX2tlcm4uYy0xNTA0LVx0LmdldF90c19pbmZvXHQ9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXG4tLVxuZHJpdmVycy9maXJld2lyZS9uZXQuYz0xMzY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZnduZXRfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL2ZpcmV3aXJlL25ldC5jOjEzNjY6XHQuZ2V0X2xpbmtcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvZmlyZXdpcmUvbmV0LmMtMTM2Ny19O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfZXRodG9vbC5jPTIxOT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGlwb2liX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfZXRodG9vbC5jLTIyOC1cdC5nZXRfc3NldF9jb3VudFx0XHQ9IGlwb2liX2dldF9zc2V0X2NvdW50LFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9ldGh0b29sLmM6MjI5Olx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfZXRodG9vbC5jLTIzMC19O1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTk0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGJvbmRfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5NDMtXHQuZ2V0X2RydmluZm9cdFx0PSBib25kX2V0aHRvb2xfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjU5NDQ6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTQ1LVx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSBib25kX2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzNjb20vM2M1OXguYz0zMDA5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdm9ydGV4X2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzNjb20vM2M1OXguYy0zMDE1LVx0LmdldF9zc2V0X2NvdW50XHRcdD0gdm9ydGV4X2dldF9zc2V0X2NvdW50LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS8zYzU5eC5jOjMwMTY6XHQuZ2V0X2xpbmsgICAgICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC8zY29tLzNjNTl4LmMtMzAxNy1cdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gdm9ydGV4X253YXlfcmVzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS90eXBob29uLmM9MTE2OD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHR5cGhvb25fZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS90eXBob29uLmMtMTE3MS1cdC5zZXRfd29sXHRcdD0gdHlwaG9vbl9zZXRfd29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS90eXBob29uLmM6MTE3MjpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC8zY29tL3R5cGhvb24uYy0xMTczLVx0LmdldF9yaW5ncGFyYW1cdFx0PSB0eXBob29uX2dldF9yaW5ncGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM9NjAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXhfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy02MDItXHQuZ2V0X2RydmluZm9cdFx0PSBheF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjYwMzpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy02MDQtXHQuZ2V0X3RzX2luZm9cdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xMjUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgb3dsX2VtYWNfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTI1My1cdC5nZXRfZHJ2aW5mb1x0XHQ9IG93bF9lbWFjX2V0aHRvb2xfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTI1NDpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTI1NS1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jPTEwNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhZGluMTExMF9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTEwNjctXHQuZ2V0X2RydmluZm9cdFx0PSBhZGluMTExMF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjEwNjg6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtMTA2OS1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTEzMz1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGdyZXRoX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTEzOC1cdC5nZXRfcmVncyAgICAgICAgICAgICAgID0gZ3JldGhfZ2V0X3JlZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jOjExMzk6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMTQwLVx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9Mjk5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGV0MTMxeF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy0yOTk5LVx0LmdldF9yZWdzXHQ9IGV0MTMxeF9nZXRfcmVncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jOjMwMDA6XHQuZ2V0X2xpbmtcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTMwMDEtXHQuZ2V0X2xpbmtfa3NldHRpbmdzID0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9MzExMT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFpcm9oYV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxMTUtXHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzExNjpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxMTctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGFjcml0ZWNoL3NsaWNvc3MuYz0xNTM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgc2xpY19ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsYWNyaXRlY2gvc2xpY29zcy5jLTE1MzctXHQuZ2V0X2RydmluZm9cdFx0PSBzbGljX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxhY3JpdGVjaC9zbGljb3NzLmM6MTUzODpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGFjcml0ZWNoL3NsaWNvc3MuYy0xNTM5LVx0LmdldF9zdHJpbmdzXHRcdD0gc2xpY19nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL2VlYS9lZWFfZXRodG9vbC5jPTI2MT1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZWVhX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvZWVhL2VlYV9ldGh0b29sLmMtMjYzLVx0LmdldF9kcnZpbmZvICAgICAgICA9IGVlYV9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvZWVhL2VlYV9ldGh0b29sLmM6MjY0Olx0LmdldF9saW5rICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL2VlYS9lZWFfZXRodG9vbC5jLTI2NS1cdC5nZXRfcmluZ3BhcmFtICAgICAgPSBlZWFfZ2V0X3JpbmdwYXJhbSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jPTM1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGVtYWNfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTM1My1cdC5nZXRfZHJ2aW5mb1x0PSBlbWFjX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYzozNTQ6XHQuZ2V0X2xpbmtcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmMtMzU1LVx0LmdldF9saW5rX2tzZXR0aW5ncyA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9ldGh0b29sLmM9MjQwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdHNlX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX2V0aHRvb2wuYy0yNDMtXHQuZ2V0X3JlZ3MgPSB0c2VfZ2V0X3JlZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9ldGh0b29sLmM6MjQ0Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX2V0aHRvb2wuYy0yNDUtXHQuZ2V0X3N0cmluZ3MgPSB0c2VfZ3N0cmluZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfZXRodG9vbC5jPTEwNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlbmFfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfZXRodG9vbC5jLTEwNzQtXHQuc2V0X21zZ2xldmVsXHRcdD0gZW5hX3NldF9tc2dsZXZlbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX2V0aHRvb2wuYzoxMDc1Olx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX2V0aHRvb2wuYy0xMDc2LVx0LmdldF9jb2FsZXNjZVx0XHQ9IGVuYV9nZXRfY29hbGVzY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYz02NzA9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhdTEwMDBfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTY3MS1cdC5nZXRfZHJ2aW5mbyA9IGF1MTAwMF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM6NjcyOlx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtNjczLVx0LmdldF9tc2dsZXZlbCA9IGF1MTAwMF9nZXRfbXNnbGV2ZWwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3N1bmxhbmNlLmM9MTI4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHNwYXJjX2xhbmNlX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3N1bmxhbmNlLmMtMTI4My1cdC5nZXRfZHJ2aW5mb1x0XHQ9IHNwYXJjX2xhbmNlX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3N1bmxhbmNlLmM6MTI4NDpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvc3VubGFuY2UuYy0xMjg1LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1ldGh0b29sLmM9NzM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgeGdiZV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWV0aHRvb2wuYy03NDItXHQuc2V0X21zZ2xldmVsID0geGdiZV9zZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWV0aHRvb2wuYzo3NDM6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1ldGh0b29sLmMtNzQ0LVx0LmdldF9jb2FsZXNjZSA9IHhnYmVfZ2V0X2NvYWxlc2NlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9ldGh0b29sLmM9MTYyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgeGdlX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL2V0aHRvb2wuYy0xNjMtXHQuZ2V0X2RydmluZm8gPSB4Z2VfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvZXRodG9vbC5jOjE2NDpcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvZXRodG9vbC5jLTE2NS1cdC5nZXRfc3RyaW5ncyA9IHhnZV9nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ldGh0b29sLmM9MzI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgeGdlbmVfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ldGh0b29sLmMtMzI5LVx0LmdldF9kcnZpbmZvID0geGdlbmVfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ldGh0b29sLmM6MzMwOlx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2V0aHRvb2wuYy0zMzEtXHQuZ2V0X3N0cmluZ3MgPSB4Z2VuZV9nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcHBsZS9ibWFjLmM9MTE2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGJtYWNfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcHBsZS9ibWFjLmM6MTE2NTpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcHBsZS9ibWFjLmMtMTE2Ni19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX2V0aHRvb2wuYz00ND1zdGF0aWMgdTMyIGFxX2V0aHRvb2xfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9ldGh0b29sLmMtNDUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfZXRodG9vbC5jOjQ2Olx0cmV0dXJuIGV0aHRvb2xfb3BfZ2V0X2xpbmsobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9ldGh0b29sLmMtNDctfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYz05Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFyY19lbWFjX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTk4LVx0LmdldF9kcnZpbmZvXHQ9IGFyY19lbWFjX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jOjk5Olx0LmdldF9saW5rXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtMTAwLVx0LmdldF9saW5rX2tzZXR0aW5ncyA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX2lvY3RsLmM9MjE0PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBheDg4Nzk2Y19ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuYy0yMTUtXHQuZ2V0X2RydmluZm9cdFx0PSBheDg4Nzk2Y19nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuYzoyMTY6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19pb2N0bC5jLTIxNy1cdC5nZXRfbXNnbGV2ZWxcdFx0PSBheDg4Nzk2Y19nZXRfbXNnbGV2ZWwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz01NDI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhZzcxeHhfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU0My1cdC5nZXRfZHJ2aW5mb1x0XHRcdD0gYWc3MXh4X2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDQ6XHQuZ2V0X2xpbmtcdFx0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU0NS1cdC5nZXRfdHNfaW5mb1x0XHRcdD0gZXRodG9vbF9vcF9nZXRfdHNfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FseC9ldGh0b29sLmM9MzIzPWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhbHhfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hbHgvZXRodG9vbC5jLTMyNy1cdC5zZXRfbXNnbGV2ZWxcdD0gYWx4X3NldF9tc2dsZXZlbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWx4L2V0aHRvb2wuYzozMjg6XHQuZ2V0X2xpbmtcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWx4L2V0aHRvb2wuYy0zMjktXHQuZ2V0X3N0cmluZ3NcdD0gYWx4X2dldF9zdHJpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jPTI3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGF0bDFjX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI4NC1cdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gYXRsMWNfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4NTpcdC5nZXRfbGluayAgICAgICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI4Ni1cdC5nZXRfZWVwcm9tX2xlbiAgICAgICAgID0gYXRsMWNfZ2V0X2VlcHJvbV9sZW4sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ldGh0b29sLmM9MzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXRsMWVfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ldGh0b29sLmMtMzcwLVx0Lm53YXlfcmVzZXQgICAgICAgICAgICAgPSBhdGwxZV9ud2F5X3Jlc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ldGh0b29sLmM6MzcxOlx0LmdldF9saW5rICAgICAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ldGh0b29sLmMtMzcyLVx0LmdldF9lZXByb21fbGVuICAgICAgICAgPSBhdGwxZV9nZXRfZWVwcm9tX2xlbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jPTM2NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhdGwxX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwxLmMtMzY3NC1cdC5zZXRfcGF1c2VwYXJhbVx0XHQ9IGF0bDFfc2V0X3BhdXNlcGFyYW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jOjM2NzU6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDEuYy0zNjc2LVx0LmdldF9zdHJpbmdzXHRcdD0gYXRsMV9nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jPTIwMzk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhdGwyX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmMtMjA0Ny1cdC5ud2F5X3Jlc2V0XHRcdD0gYXRsMl9ud2F5X3Jlc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYzoyMDQ4Olx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmMtMjA0OS1cdC5nZXRfZWVwcm9tX2xlblx0XHQ9IGF0bDJfZ2V0X2VlcHJvbV9sZW4sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jPTQ0Mz1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNtYXNwX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jLTQ0NC1cdC5nZXRfZHJ2aW5mb1x0XHQ9IGJjbWFzcF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2V0aHRvb2wuYzo0NDU6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jLTQ0Ni1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIxMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBiNDRfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjEwNC1cdC5ud2F5X3Jlc2V0XHRcdD0gYjQ0X253YXlfcmVzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMTA1Olx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIxMDYtXHQuZ2V0X3dvbFx0XHQ9IGI0NF9nZXRfd29sLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTE1ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBiY21fZW5ldF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xNTkwLVx0LmdldF9kcnZpbmZvXHRcdD0gYmNtX2VuZXRfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoxNTkxOlx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE1OTItXHQuZ2V0X3JpbmdwYXJhbVx0XHQ9IGJjbV9lbmV0X2dldF9yaW5ncGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jPTIyNDM9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBiY21fc3lzcG9ydF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjI0OS1cdC5zZXRfbXNnbGV2ZWxcdFx0PSBiY21fc3lzcG9ydF9zZXRfbXNnbHZsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jOjIyNTA6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTIyNTEtXHQuZ2V0X3N0cmluZ3NcdFx0PSBiY21fc3lzcG9ydF9nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jPTE2Nzg9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBiY21nZW5ldF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTE2ODctXHQuZ2V0X2RydmluZm9cdFx0PSBiY21nZW5ldF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmM6MTY4ODpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTE2ODktXHQuZ2V0X21zZ2xldmVsXHRcdD0gYmNtZ2VuZXRfZ2V0X21zZ2xldmVsLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE0MjI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdGczX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE0MjQyLVx0Lm53YXlfcmVzZXRcdFx0PSB0ZzNfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE0MjQzOlx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE0MjQ0LVx0LmdldF9lZXByb21fbGVuXHRcdD0gdGczX2dldF9lZXByb21fbGVuLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jPTEwNjk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBibmFkX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTEwNzQtXHQuZ2V0X3dvbCA9IGJuYWRfZ2V0X3dvbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jOjEwNzU6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmMtMTA3Ni1cdC5nZXRfY29hbGVzY2UgPSBibmFkX2dldF9jb2FsZXNjZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQxMjM9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtYWNiX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDEyNS1cdC5nZXRfcmVnc1x0XHQ9IG1hY2JfZ2V0X3JlZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQxMjY6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MTI3LVx0LmdldF90c19pbmZvXHRcdD0gZXRodG9vbF9vcF9nZXRfdHNfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQxNTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBnZW1fZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MTU4LVx0LnNldF93b2xcdFx0PSBtYWNiX3NldF93b2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQxNTk6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MTYwLVx0LmdldF90c19pbmZvXHRcdD0gbWFjYl9nZXRfdHNfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWx4ZWRhL3hnbWFjLmM9MTY3MT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHhnbWFjX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FseGVkYS94Z21hYy5jOjE2NzI6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FseGVkYS94Z21hYy5jLTE2NzMtXHQuZ2V0X3BhdXNlcGFyYW0gPSB4Z21hY19nZXRfcGF1c2VwYXJhbSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYz0zMTE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbGlvX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTMxMjAtXHQuc2V0X2ZlY3BhcmFtXHRcdD0gbGlvX3NldF9mZWNwYXJhbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jOjMxMjE6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmMtMzEyMi1cdC5nZXRfZHJ2aW5mb1x0XHQ9IGxpb19nZXRfZHJ2aW5mbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYz0zMTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbGlvX3ZmX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTMxNTAtXHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IGxpb19nZXRfbGlua19rc2V0dGluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYzozMTUxOlx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTMxNTItXHQuZ2V0X2RydmluZm9cdFx0PSBsaW9fZ2V0X3ZmX2RydmluZm8sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jPTEzNTk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBvY3Rlb25fbWdtdF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtMTM2MS1cdC5ud2F5X3Jlc2V0ID0gb2N0ZW9uX21nbXRfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYzoxMzYyOlx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy0xMzYzLVx0LmdldF9saW5rX2tzZXR0aW5ncyA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IvY3hnYjIuYz04MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB0MV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IvY3hnYjIuYy04MTgtXHQuc2V0X3BhdXNlcGFyYW0gICAgPSBzZXRfcGF1c2VwYXJhbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYi9jeGdiMi5jOjgxOTpcdC5nZXRfbGluayAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IvY3hnYjIuYy04MjAtXHQuZ2V0X3N0cmluZ3MgICAgICAgPSBnZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IzL2N4Z2IzX21haW4uYz0yMTAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgY3hnYl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IzL2N4Z2IzX21haW4uYy0yMTE0LVx0LnNldF9wYXVzZXBhcmFtID0gc2V0X3BhdXNlcGFyYW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IzL2N4Z2IzX21haW4uYzoyMTE1Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjMvY3hnYjNfbWFpbi5jLTIxMTYtXHQuZ2V0X3N0cmluZ3MgPSBnZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYz0yMTc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgY3hnYl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYy0yMTk2LVx0LnNldF9wYXVzZXBhcmFtICAgID0gc2V0X3BhdXNlcGFyYW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzoyMTk3Olx0LmdldF9saW5rICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jLTIxOTgtXHQuZ2V0X3N0cmluZ3MgICAgICAgPSBnZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0dmYvY3hnYjR2Zl9tYWluLmM9MTkyOD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGN4Z2I0dmZfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNHZmL2N4Z2I0dmZfbWFpbi5jLTE5NDAtXHQuZ2V0X3BhdXNlcGFyYW1cdFx0PSBjeGdiNHZmX2dldF9wYXVzZXBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNHZmL2N4Z2I0dmZfbWFpbi5jOjE5NDE6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNHZmL2N4Z2I0dmZfbWFpbi5jLTE5NDItXHQuZ2V0X3N0cmluZ3NcdFx0PSBjeGdiNHZmX2dldF9zdHJpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19ldGh0b29sLmM9ODIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5pY19ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfZXRodG9vbC5jLTgyNy1cdC5zZXRfbXNnbGV2ZWwgPSBlbmljX3NldF9tc2dsZXZlbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19ldGh0b29sLmM6ODI4Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19ldGh0b29sLmMtODI5LVx0LmdldF9zdHJpbmdzID0gZW5pY19nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyODg9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBnbWFjXzM1MXhfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjkzLVx0LmdldF9ldGh0b29sX3N0YXRzID0gZ21hY19nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjI5NDpcdC5nZXRfbGlua1x0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjk1LVx0LmdldF9saW5rX2tzZXR0aW5ncyA9IGdtYWNfZ2V0X2tzZXR0aW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jPTY1Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGRtOTA1MV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTY2Mi1cdC5ud2F5X3Jlc2V0ID0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6NjYzOlx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtNjY0LVx0LmdldF9lZXByb21fbGVuID0gZG05MDUxX2dldF9lZXByb21fbGVuLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmM9MTY5OT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGRlX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguYzoxNzAwOlx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmMtMTcwMS1cdC5nZXRfZHJ2aW5mb1x0XHQ9IGRlX2dldF9kcnZpbmZvLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kbWZlLmM9MTEwND1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG5ldGRldl9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kbWZlLmMtMTEwNS1cdC5nZXRfZHJ2aW5mb1x0XHQ9IGRtZmVfZXRodG9vbF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kbWZlLmM6MTEwNjpcdC5nZXRfbGluayAgICAgICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kbWZlLmMtMTEwNy1cdC5zZXRfd29sXHRcdD0gZG1mZV9ldGh0b29sX3NldF93b2wsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX2V0aHRvb2wuYz0xNDA5PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBiZV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfZXRodG9vbC5jLTE0MTUtXHQuc2V0X3dvbCA9IGJlX3NldF93b2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfZXRodG9vbC5jOjE0MTY6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX2V0aHRvb2wuYy0xNDE3LVx0LmdldF9lZXByb21fbGVuID0gYmVfZ2V0X2VlcHJvbV9sZW4sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfZXRodG9vbC5jPTQ2MT1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdHNuZXBfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfZXRodG9vbC5jLTQ2OC1cdC5ud2F5X3Jlc2V0ID0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX2V0aHRvb2wuYzo0Njk6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfZXRodG9vbC5jLTQ3MC1cdC5zZWxmX3Rlc3QgPSB0c25lcF9ldGh0b29sX3NlbGZfdGVzdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTk5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGV0aG9jX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTAwMC1cdC5ud2F5X3Jlc2V0ID0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6MTAwMTpcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEwMDItXHQuZ2V0X3JpbmdwYXJhbSA9IGV0aG9jX2dldF9yaW5ncGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xMjE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZnRnbWFjMTAwX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xMjIwLVx0LmdldF9kcnZpbmZvXHRcdD0gZnRnbWFjMTAwX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxMjIxOlx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTIyMi1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRodG9vbC5jPTUxMT1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZHBhYV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aHRvb2wuYy01MTktXHQuc2V0X3BhdXNlcGFyYW0gPSBkcGFhX3NldF9wYXVzZXBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGh0b29sLmM6NTIwOlx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRodG9vbC5jLTUyMS1cdC5nZXRfc3NldF9jb3VudCA9IGRwYWFfZ2V0X3NzZXRfY291bnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aHRvb2wuYz05OTY9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGRwYWEyX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGh0b29sLmMtMTAwMC1cdC5ud2F5X3Jlc2V0ID0gZHBhYTJfZXRoX253YXlfcmVzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRodG9vbC5jOjEwMDE6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aHRvb2wuYy0xMDAyLVx0LmdldF9saW5rX2tzZXR0aW5ncyA9IGRwYWEyX2V0aF9nZXRfbGlua19rc2V0dGluZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC1ldGh0b29sLmM9MjU2PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBkcGFhMl9zd2l0Y2hfcG9ydF9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1zd2l0Y2gtZXRodG9vbC5jLTI1Ny1cdC5nZXRfZHJ2aW5mb1x0XHQ9IGRwYWEyX3N3aXRjaF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1zd2l0Y2gtZXRodG9vbC5jOjI1ODpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLWV0aHRvb2wuYy0yNTktXHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IGRwYWEyX3N3aXRjaF9nZXRfbGlua19rc2V0dGluZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYz0xNTMxPWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlbmV0Y19wZl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE1NTYtXHQuc2V0X2xpbmtfa3NldHRpbmdzID0gZW5ldGNfc2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYzoxNTU3Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmMtMTU1OC1cdC5nZXRfdHNfaW5mbyA9IGVuZXRjX2dldF90c19pbmZvLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmM9MTU2OD1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5ldGM0X3BwbV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE1ODYtXHQuc2V0X2xpbmtfa3NldHRpbmdzID0gZW5ldGNfc2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYzoxNTg3Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmMtMTU4OC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmM9MTU5MD1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5ldGNfdmZfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYy0xNjA4LVx0LnNldF9jb2FsZXNjZSA9IGVuZXRjX3NldF9jb2FsZXNjZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmM6MTYwOTpcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE2MTAtXHQuZ2V0X3RzX2luZm8gPSBlbmV0Y19nZXRfdHNfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jPTE2MTM9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGVuZXRjNF9wZl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE2MjgtXHQuc2V0X2xpbmtfa3NldHRpbmdzID0gZW5ldGNfc2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYzoxNjI5Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmMtMTYzMC1cdC5nZXRfd29sID0gZW5ldGNfZ2V0X3dvbCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0zNzg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZmVjX2VuZXRfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzc5My1cdC5ud2F5X3Jlc2V0XHRcdD0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjM3OTQ6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzc5NS1cdC5nZXRfY29hbGVzY2VcdFx0PSBmZWNfZW5ldF9nZXRfY29hbGVzY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM9NzgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbXBjNTJ4eF9mZWNfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYzo3ODI6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtNzgzLVx0LmdldF9tc2dsZXZlbCA9IG1wYzUyeHhfZmVjX2dldF9tc2dsZXZlbCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYz04MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmc19ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy04MTUtXHQubndheV9yZXNldCA9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo4MTY6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtODE3LVx0LmdldF9tc2dsZXZlbCA9IGZzX2dldF9tc2dsZXZlbCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcl9ldGh0b29sLmM9MTUwMj1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZ2Zhcl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcl9ldGh0b29sLmMtMTUwNy1cdC5nZXRfcmVncyA9IGdmYXJfZ2V0X3JlZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcl9ldGh0b29sLmM6MTUwODpcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcl9ldGh0b29sLmMtMTUwOS1cdC5nZXRfY29hbGVzY2UgPSBnZmFyX2djb2FsZXNjZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGhfZXRodG9vbC5jPTM1OT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHVlY19ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGhfZXRodG9vbC5jLTM2NS1cdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aF9ldGh0b29sLmM6MzY2Olx0LmdldF9saW5rICAgICAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoX2V0aHRvb2wuYy0zNjctXHQuZ2V0X3JpbmdwYXJhbSAgICAgICAgICA9IHVlY19nZXRfcmluZ3BhcmFtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfZXRodG9vbC5jPTExNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmdW5fZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmMtMTE1NC1cdC5nZXRfcmVncyAgICAgICAgICAgID0gZnVuX2dldF9yZWdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmM6MTE1NTpcdC5nZXRfbGlua1x0ICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvZnVuZXRoX2V0aHRvb2wuYy0xMTU2LVx0LmdldF9jb2FsZXNjZSAgICAgICAgPSBmdW5fZ2V0X2NvYWxlc2NlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYz05ODI9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGd2ZV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtMTAwMy1cdC5zZXRfcnhmaCA9IGd2ZV9zZXRfcnhmaCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYzoxMDA0Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYy0xMDA1LVx0LmdldF9jb2FsZXNjZSA9IGd2ZV9nZXRfY29hbGVzY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX2V0aHRvb2wuYz00Nzg9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBoYmdfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfZXRodG9vbC5jOjQ3OTpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfZXRodG9vbC5jLTQ4MC1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmM9Njc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaGlzaV9mZW1hY19ldGh0b29sc19vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jOjY3OTpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jLTY4MC1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYz05MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBoaXg1aGQyX2V0aHRvb2xzX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzo5MTM6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTkxNC1cdC5nZXRfbGlua19rc2V0dGluZ3MgICAgID0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM9MTc1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGhpbmljX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTc1OC1cdC5nZXRfZHJ2aW5mbyA9IGhpbmljX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzoxNzU5Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTc2MC1cdC5nZXRfbGlua19leHRfc3RhdGUgPSBoaW5pY19nZXRfbGlua19leHRfc3RhdGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYz0xNzg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaGluaWN2Zl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jLTE3OTQtXHQuZ2V0X2RydmluZm8gPSBoaW5pY19nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MTc5NTpcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jLTE3OTYtXHQuZ2V0X3JpbmdwYXJhbSA9IGhpbmljX2dldF9yaW5ncGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfZXRodG9vbC5jPTQxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGhpbmljM19ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19ldGh0b29sLmMtNDE4LVx0LnNldF9tc2dsZXZlbCAgICAgICAgICAgICAgICAgICA9IGhpbmljM19zZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19ldGh0b29sLmM6NDE5Olx0LmdldF9saW5rICAgICAgICAgICAgICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19ldGh0b29sLmMtNDIwLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VoZWEvZWhlYV9ldGh0b29sLmM9MjYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZWhlYV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZWhlYS9laGVhX2V0aHRvb2wuYy0yNjQtXHQuc2V0X21zZ2xldmVsID0gZWhlYV9zZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZWhlYS9laGVhX2V0aHRvb2wuYzoyNjU6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VoZWEvZWhlYV9ldGh0b29sLmMtMjY2LVx0LmdldF9zdHJpbmdzID0gZWhlYV9nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjI4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGVtYWNfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTIyOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjI5NzpcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjI5OC1cdC5nZXRfbGlua19rc2V0dGluZ3MgPSBlbWFjX2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTEyPXN0YXRpYyBpbnQgZW1hY19tZGlvX3BvbGxfbGluayhzdHJ1Y3QgbWlpX3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTIwLVx0XHRkZXZfZXJyKFx1MDAyNmRldi1cdTAwM2VvZmRldi1cdTAwM2VkZXYsIFwmIzM0O2xpbmsgdXBkYXRlIGZhaWxlZCAoJWQpLlwmIzM0OywgcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTIxOlx0XHRyZXR1cm4gZXRodG9vbF9vcF9nZXRfbGluayhuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTIyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM9MTE3MD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG5ldGRldl9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTE3MS1cdC5nZXRfZHJ2aW5mb1x0XHQgICAgICAgICA9IG5ldGRldl9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM6MTE3MjpcdC5nZXRfbGlua1x0XHQgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jLTExNzMtXHQuZ2V0X3N0cmluZ3NcdFx0ICAgICAgICAgPSBpYm12ZXRoX2dldF9zdHJpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9ldGh0b29sLmM9MjM2MT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGUxMDAwX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9ldGh0b29sLmMtMjM3MC1cdC5ud2F5X3Jlc2V0XHRcdD0gZTEwMDBfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9ldGh0b29sLmM6MjM3MTpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvZXRodG9vbC5jLTIzNzItXHQuZ2V0X2VlcHJvbV9sZW5cdFx0PSBlMTAwMF9nZXRfZWVwcm9tX2xlbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19ldGh0b29sLmM9MTEzNj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGZtMTBrX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX2V0aHRvb2wuYy0xMTQyLVx0LmdldF9kcnZpbmZvXHRcdD0gZm0xMGtfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19ldGh0b29sLmM6MTE0MzpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19ldGh0b29sLmMtMTE0NC1cdC5nZXRfcGF1c2VwYXJhbVx0XHQ9IGZtMTBrX2dldF9wYXVzZXBhcmFtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9ldGh0b29sLmM9NTc4OT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGk0MGVfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2V0aHRvb2wuYy01Nzk4LVx0Lm53YXlfcmVzZXRcdFx0PSBpNDBlX253YXlfcmVzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZXRodG9vbC5jOjU3OTk6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2V0aHRvb2wuYy01ODAwLVx0LmdldF9saW5rX2V4dF9zdGF0c1x0PSBpNDBlX2dldF9saW5rX2V4dF9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jPTE4NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpYXZmX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmMtMTg1OS1cdC5nZXRfZHJ2aW5mb1x0XHQ9IGlhdmZfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jOjE4NjA6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2V0aHRvb2wuYy0xODYxLVx0LmdldF9yaW5ncGFyYW1cdFx0PSBpYXZmX2dldF9yaW5ncGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM9NDgzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGljZV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00ODUyLVx0LnNlbGZfdGVzdFx0XHQ9IGljZV9zZWxmX3Rlc3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYzo0ODUzOlx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ4NTQtXHQuZ2V0X2xpbmtfZXh0X3N0YXRzXHQ9IGljZV9nZXRfbGlua19leHRfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM9NDg5MT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGljZV9ldGh0b29sX3NhZmVfbW9kZV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMtNDkwMC1cdC5zZXRfbXNnbGV2ZWxcdFx0PSBpY2Vfc2V0X21zZ2xldmVsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM6NDkwMTpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00OTAyLVx0LmdldF9lZXByb21fbGVuXHRcdD0gaWNlX2dldF9lZXByb21fbGVuLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jPTQ5MjI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpY2VfZXRodG9vbF9yZXByX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ5MjMtXHQuZ2V0X2RydmluZm9cdFx0PSBpY2VfcmVwcl9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jOjQ5MjQ6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMtNDkyNS1cdC5nZXRfc3RyaW5nc1x0XHQ9IGljZV9yZXByX2dldF9zdHJpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9ldGh0b29sLmM9MTgwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGlkcGZfZXRodG9vbF9vcHMgPSB7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODg3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIGBldGh0b29sX29wX2dldF9saW5rYCoqCgpBbHJpZ2h0LCBzbyBgZXRodG9vbF9vcF9nZXRfbGlua2AuLi4gdGhhdCByaW5ncyBhIGJlbGwuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgb3BlcmF0aW9uLCBubyBxdWVzdGlvbi4gSWYgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgZnVsbHksIHRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGlzIGdvaW5nIHRvIGJlIGBuZXQvZXRodG9vbC9pb2N0bC5jYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGV0aHRvb2wgSU9DVEwgaGFuZGxpbmcgdHlwaWNhbGx5IHJlc2lkZXMsIHNvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZXRodG9vbF9vcF9nZXRfbGlua2Agc2hvdWxkIGJlIHRoZXJlLiBUaW1lIHRvIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V0aHRvb2xfb3BfZ2V0X2xpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZXRodG9vbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvaW9jdGwuYz00OD1zdGF0aWMgc3RydWN0IGRldmxpbmsgKm5ldGRldl90b19kZXZsaW5rX2dldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9ldGh0b29sL2lvY3RsLmMtNjAtXG5uZXQvZXRodG9vbC9pb2N0bC5jOjYxOnUzMiBldGh0b29sX29wX2dldF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvZXRodG9vbC9pb2N0bC5jLTYyLXtcbi0tXG5uZXQvZXRodG9vbC9pb2N0bC5jLTY3LX1cbm5ldC9ldGh0b29sL2lvY3RsLmM6Njg6RVhQT1JUX1NZTUJPTChldGh0b29sX29wX2dldF9saW5rKTtcbm5ldC9ldGh0b29sL2lvY3RsLmMtNjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MjY1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBldGh0b29sX29wX2dldF9saW5rYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBsaW5rIHN0YXR1cyBxdWVyaWVzIHZpYSBldGh0b29sLiBJJiMzOTttIGdvaW5nIHN0cmFpZ2h0IGZvciB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L2V0aHRvb2wvaW9jdGwuY2AsIGFuZCB6ZXJvaW5nIGluIG9uIHRoZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgZnVuY3Rpb24uIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHdoZXJlIHRoZSBrZXJuZWwgdHJhbnNsYXRlcyBhIHVzZXItc3BhY2UgcmVxdWVzdCBmb3IgbGluayBpbmZvcm1hdGlvbiBpbnRvIHNvbWV0aGluZyBjb25jcmV0ZS4gSSB3YW50IHRvIHNlZSBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgTklDIGRyaXZlcnMsIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IHV0aWxpemVzLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBnb3RjaGFzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IG1lY2hhbmljcyBiZWhpbmQgaG93IHRoZSBrZXJuZWwgZGV0ZXJtaW5lcyBpZiBhIGxpbmsgaXMgdXAgb3IgZG93biwgdGhlIHJlbGlhYmlsaXR5IG9mIHRoaXMgaW5mb3JtYXRpb24sIGFuZCBhbnkgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gb3IgZGVidWdnaW5nLiBUaW1lIHRvIHNlZSB3aGF0JiMzOTtzIHdoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvaW9jdGwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjE6XHR1MzIgZXRodG9vbF9vcF9nZXRfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuICA2MjpcdHtcbiAgNjM6XHRcdC8qIFN5bmNocm9uaXplIGNhcnJpZXIgc3RhdGUgd2l0aCBsaW5rIHdhdGNoLCBzZWUgYWxzbyBydG5sX2dldGxpbmsoKSAqL1xuICA2NDpcdFx0X19saW5rd2F0Y2hfc3luY19kZXYoZGV2KTtcbiAgNjU6XHRcbiAgNjY6XHRcdHJldHVybiBuZXRpZl9jYXJyaWVyX29rKGRldikgPyAxIDogMDtcbiAgNjc6XHR9XG4gIDY4Olx0RVhQT1JUX1NZTUJPTChldGh0b29sX29wX2dldF9saW5rKTtcbiAgNjk6XHRcbiAgNzA6XHRpbnQgZXRodG9vbF9vcF9nZXRfdHNfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODcxOQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgTGluayBXYXRjaCBGdW5jdGlvbioqCgpSaWdodCwgc28gYF9fbGlua3dhdGNoX3N5bmNfZGV2KGRldilgIGp1c3QgZ290IGNhbGxlZC4gVGhhdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBpbiBuZXR3b3JrIGRldmljZSBtYW5hZ2VtZW50LiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpcyBwb3BwaW5nIHVwISBEb2VzIHRoaXMgZnVuY3Rpb24gbmVlZCB0aGUgYHJ0bmxfbG9ja2AgaGVsZD8gSSBjYW4mIzM5O3QganVzdCBhc3N1bWUgaXQgaGFuZGxlcyBsb2NraW5nIGNvcnJlY3RseS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCBhbmQgY29uZmlybSB3aGV0aGVyIGl0IHRha2VzIHRoYXQgbG9jayBvciByZWxpZXMgb24gdGhlIGNhbGxlciB0byBwcm92aWRlIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgbG9ja2luZyBzdHJhdGVneSB0byBiZSBzdXJlIHRoaW5ncyBhcmUgaGFuZGxlZCBzYWZlbHksIGF2b2lkaW5nIGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIG9yIGRhdGEgY29ycnVwdGlvbi4gR290dGEgc3RheSBzaGFycCBhbmQgbWFrZSBzdXJlIEkgZnVsbHkgdW5kZXJzdGFuZCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19saW5rd2F0Y2hfc3luY19kZXYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD00NTg5PXZvaWQgbGlua3dhdGNoX3N5bmNfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo0NTkwOnZvaWQgX19saW5rd2F0Y2hfc3luY19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTQ1OTEtXG4tLVxubmV0L2NvcmUvbGlua193YXRjaC5jPTI1OT1zdGF0aWMgYm9vbCBsaW5rd2F0Y2hfY2xlYW5fZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2NvcmUvbGlua193YXRjaC5jLTI3Ny1cbm5ldC9jb3JlL2xpbmtfd2F0Y2guYzoyNzg6dm9pZCBfX2xpbmt3YXRjaF9zeW5jX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2NvcmUvbGlua193YXRjaC5jLTI3OS17XG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYz02MT11MzIgZXRodG9vbF9vcF9nZXRfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9ldGh0b29sL2lvY3RsLmMtNjMtXHQvKiBTeW5jaHJvbml6ZSBjYXJyaWVyIHN0YXRlIHdpdGggbGluayB3YXRjaCwgc2VlIGFsc28gcnRubF9nZXRsaW5rKCkgKi9cbm5ldC9ldGh0b29sL2lvY3RsLmM6NjQ6XHRfX2xpbmt3YXRjaF9zeW5jX2RldihkZXYpO1xubmV0L2V0aHRvb2wvaW9jdGwuYy02NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyNTIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaW1lIHRvIGNyYWNrIG9wZW4gYG5ldC9jb3JlL2xpbmtfd2F0Y2guY2AgYW5kIHNwZWNpZmljYWxseSwgSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGxpa2VseSBpcyB0aGUgKmNvcmUqIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBzeW5jaHJvbml6aW5nIG5ldHdvcmsgZGV2aWNlIGxpbmsgc3RhdGUgY2hhbmdlcy4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCB0aGUgZG91YmxlIHVuZGVyc2NvcmUgdXN1YWxseSBpbmRpY2F0ZXMgYW4gaW50ZXJuYWwsIGhlbHBlciBmdW5jdGlvbiwgbm90IGludGVuZGVkIGZvciBkaXJlY3QgZXh0ZXJuYWwgY2FsbHMuCgpLbm93aW5nIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZ1bmN0aW9uIHRvIGhhbmRsZSB0YXNrcyBsaWtlOgoKKiAgICoqU3RhdGUgdHJhbnNpdGlvbiBsb2dpYzoqKiBJdCB3aWxsIGhhdmUgc29tZSBsb2dpYyBkZWFsaW5nIHdpdGggdGhlIHBvc3NpYmxlIGxpbmsgc3RhdGVzLCBtb3N0IGxpa2VseSB1cCwgZG93biwgY2FycmllciBjaGFuZ2VzIGV0Yy4KKiAgICoqRXZlbnQgbm90aWZpY2F0aW9uOioqIEkmIzM5O20gZ3Vlc3NpbmcgaXQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgdHJpZ2dlcmluZyBhcHByb3ByaWF0ZSBub3RpZmljYXRpb25zL2NhbGxiYWNrcyB0byByZWxldmFudCBzdWJzeXN0ZW1zIGJhc2VkIG9uIHRoZSBsaW5rIHN0YXRlLiBUaGlzIGxpa2VseSBpbnZvbHZlcyBzb21lIGZvcm0gb2YgdGFza2xldCBvciB3b3JrcXVldWUgdXNhZ2UgdG8gaGFuZGxlIHRoZSBldmVudHMuCiogICAqKlJhY2UgY29uZGl0aW9uIHByb3RlY3Rpb246KiogSSYjMzk7bGwgYmUgY3VyaW91cyB0byBsb29rIGF0IGFueSBsb2NraW5nIG1lY2hhbmlzbXMgdXNlZCB0byBlbnN1cmUgdGhlIHN0YXRlIHVwZGF0ZXMgYXJlIHRocmVhZC1zYWZlLCBwYXJ0aWN1bGFybHkgZ2l2ZW4gdGhlIGFzeW5jaHJvbm91cyBuYXR1cmUgb2YgbmV0d29yayBldmVudHMuCiogICAqKkVycm9yIGhhbmRsaW5nOioqIFdoYXQgZWRnZSBjYXNlcyBkb2VzIGl0IGFjY291bnQgZm9yPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBkZXZpY2UgZHJpdmVyIGludGVyYWN0aW9ucyBvciBoYXJkd2FyZSBmYWlsdXJlcz8KCkkgbmVlZCB0byBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QgLSBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgZGV2aWNlIGRyaXZlcnMsIG90aGVyIG5ldHdvcmsgc3Vic3lzdGVtcywgYW5kIGhvdyBpdCBhdm9pZHMgYW55IGRhdGEgY29ycnVwdGlvbiBvciByYWNlIGNvbmRpdGlvbnMuIFRoaXMgaXMgZ29pbmcgdG8gYmUgbXkgc3RhcnRpbmcgcG9pbnQgaW4gZXZhbHVhdGluZyBhbnkgcG9zc2libGUgcHJvYmxlbXMsIG9yIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yIG9mIHRoYXQgZmVhdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY29yZS9saW5rX3dhdGNoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3ODpcdHZvaWQgX19saW5rd2F0Y2hfc3luY19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiAyNzk6XHR7XG4gMjgwOlx0XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7XG4gMjgxOlx0XG4gMjgyOlx0XHRpZiAobGlua3dhdGNoX2NsZWFuX2RldihkZXYpKSB7XG4gMjgzOlx0XHRcdGxpbmt3YXRjaF9kb19kZXYoZGV2KTtcbiAyODQ6XHRcdFx0LyogVXNlIF9fZGV2X3B1dCgpIGJlY2F1c2UgbmV0ZGV2X3RyYWNrZXJfZnJlZSgpIHdhcyBhbHJlYWR5XG4gMjg1Olx0XHRcdCAqIGNhbGxlZCBpbnNpZGUgbGlua3dhdGNoX2NsZWFuX2RldigpLlxuIDI4NjpcdFx0XHQgKi9cbiAyODc6XHRcdFx0X19kZXZfcHV0KGRldik7XG4gMjg4Olx0XHR9XG4gMjg5Olx0fVxuIDI5MDpcdFxuIDI5MTpcdHZvaWQgbGlua3dhdGNoX3N5bmNfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gMjkyOlx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTg4MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEV0aHRvb2wgTGluayBTdGF0ZSBMb2NraW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldilgIGNhbGwuIFJpZ2h0LCBpdCBjaGVja3MgdGhhdCB0aGUgYGRldi0mZ3Q7bG9ja2AgaXMgaGVsZCBpZiBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWAgaXMgdHJ1ZS4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIElmIGBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYCBpcyB0cnVlLCB0aGUgY29kZSBpcyBzdXBwb3NlZCB0byBhc3NlcnQgdGhhdCB0aGUgYGRldi0mZ3Q7bG9ja2AgaXMgYWxyZWFkeSBoZWxkLiBUaGUgdHJpY2t5IHRoaW5nIGlzIHRoYXQgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIGJlaW5nIHRydWUgYWxzbyBtZWFucyBgbmVlZF9ydG5sYCBpcyBmYWxzZSBieSBkZWZhdWx0LgoKU28sIGBfX2Rldl9ldGh0b29sYCB3aWxsIGNhbGwgYG5ldGRldl9sb2NrX29wcyhkZXYpYCwgd2hpY2ggY29ycmVjdGx5IGdyYWJzIGBkZXYtJmd0O2xvY2tgLiBUaGVuLCBgZGV2X2V0aHRvb2xfbG9ja2VkYCBpcyBpbnZva2VkLCB3aGljaCB0aGVuIGRpdmVzIGludG8gYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLiBJdCYjMzk7cyB3aXRoaW4gYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIHRoYXQgdGhpbmdzIGdldCBpbnRlcmVzdGluZywgYmVjYXVzZSBpdCBjYWxscyBgX19saW5rd2F0Y2hfc3luY19kZXZgLiBBbmQgKnRoYXQqIGZ1bmN0aW9uLCBjcnVjaWFsbHksIHRoZW4gYXNzZXJ0cyB0aGF0IGBkZXYtJmd0O2xvY2tgIGlzIGhlbGQuIFNvLCBhcyBmYXIgYXMgSSBjYW4gc2VlLCBgZGV2LSZndDtsb2NrYCBpcywgaW4gZmFjdCwgaGVsZCBhdCBhbGwgdGhvc2UgcG9pbnRzISBUaGUgbG9jayBzaG91bGQgYmUgY29ycmVjdGx5IGFjcXVpcmVkIGFuZCByZWxlYXNlZC4KCkJ1dC4uLndhaXQuIFRoZSBwYXRjaCBub3RlcyBzdGF0ZSB0aGF0IGBldGh0b29sX29wX2dldF9saW5rKClgIHN5bmNzIGxpbmsgd2F0Y2ggdW5kZXIgYHJ0bmxfbG9ja2AgYW5kIHRoZXkgYXJlIGFkZGluZyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYC4gKlRoYXQmIzM5O3MqIHRoZSBiaXQgdGhhdCYjMzk7cyB0aHJvd2luZyBtZS4gV2h5IHRoZSBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCBpZiB0aGUgZGV2aWNlIGxvY2sgaXMgYWxyZWFkeSBoZWxkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGlnIGludG8gYGxpbmt3YXRjaF9kb19kZXYoZGV2KWAgbm93IGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2NvcmUvbGlua193YXRjaC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMjA6XHRcdHNwaW5fbG9ja19pcnEoXHUwMDI2bHdldmVudGxpc3RfbG9jayk7XG4gMjIxOlx0XHRsaXN0X3NwbGljZV9pbml0KFx1MDAyNmx3ZXZlbnRsaXN0LCBcdTAwMjZ3cmspO1xuIDIyMjpcdFxuIDIyMzpcdFx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNndyaykgXHUwMDI2XHUwMDI2IGRvX2RldiBcdTAwM2UgMCkge1xuIDIyNDpcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuIDIyNTpcdFxuIDIyNjpcdFx0XHRkZXYgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNndyaywgc3RydWN0IG5ldF9kZXZpY2UsIGxpbmtfd2F0Y2hfbGlzdCk7XG4gMjI3Olx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZGV2LVx1MDAzZWxpbmtfd2F0Y2hfbGlzdCk7XG4gMjI4Olx0XG4gMjI5Olx0XHRcdGlmICghbmV0aWZfZGV2aWNlX3ByZXNlbnQoZGV2KSB8fFxuIDIzMDpcdFx0XHQgICAgKHVyZ2VudF9vbmx5IFx1MDAyNlx1MDAyNiAhbGlua3dhdGNoX3VyZ2VudF9ldmVudChkZXYpKSkge1xuIDIzMTpcdFx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2LVx1MDAzZWxpbmtfd2F0Y2hfbGlzdCwgXHUwMDI2bHdldmVudGxpc3QpO1xuIDIzMjpcdFx0XHRcdGNvbnRpbnVlO1xuIDIzMzpcdFx0XHR9XG4gMjM0Olx0XHRcdC8qIFdlIG11c3QgZnJlZSBuZXRkZXYgdHJhY2tlciB1bmRlclxuIDIzNTpcdFx0XHQgKiB0aGUgc3BpbmxvY2sgcHJvdGVjdGlvbi5cbiAyMzY6XHRcdFx0ICovXG4gMjM3Olx0XHRcdG5ldGRldl90cmFja2VyX2ZyZWUoZGV2LCBcdTAwMjZkZXYtXHUwMDNlbGlua3dhdGNoX2Rldl90cmFja2VyKTtcbiAyMzg6XHRcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmx3ZXZlbnRsaXN0X2xvY2spO1xuIDIzOTpcdFx0XHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbiAyNDA6XHRcdFx0bGlua3dhdGNoX2RvX2RldihkZXYpO1xuIDI0MTpcdFx0XHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuIDI0MjpcdFx0XHQvKiBVc2UgX19kZXZfcHV0KCkgYmVjYXVzZSBuZXRkZXZfdHJhY2tlcl9mcmVlKCkgd2FzIGFscmVhZHlcbiAyNDM6XHRcdFx0ICogY2FsbGVkIGFib3ZlLiBNdXN0IGJlIGFmdGVyIG5ldGRldl91bmxvY2tfb3BzKCkgdG8gcHJldmVudFxuIDI0NDpcdFx0XHQgKiBuZXRkZXZfcnVuX3RvZG8oKSBmcm9tIGZyZWVpbmcgdGhlIGRldmljZSB3aGlsZSBzdGlsbCBpbiB1c2UuXG4gMjQ1Olx0XHRcdCAqL1xuIDI0NjpcdFx0XHRfX2Rldl9wdXQoZGV2KTtcbiAyNDc6XHRcdFx0ZG9fZGV2LS07XG4gMjQ4Olx0XHRcdHNwaW5fbG9ja19pcnEoXHUwMDI2bHdldmVudGxpc3RfbG9jayk7XG4gMjQ5Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTIzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOgoKKipEaWdnaW5nIGludG8gYGxpbmt3YXRjaF9kb19kZXZgIGFuZCB0aGUgTG9ja2luZyoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gZ2V0IHRoaXMgc3RyYWlnaHQuIFRoZSBmdW5jdGlvbiBgbGlua3dhdGNoX2RvX2RldmAgaXMgKmRlZmluaXRlbHkqIGNhbGxlZCB3aXRoIGBuZXRkZXZfbG9ja19vcHMoZGV2KWAgYWxyZWFkeSBoZWxkLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaW50ZXJhY3Rpb24gYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gVGhlIGxvY2tpbmcgY29udGV4dCBpcyBhYnNvbHV0ZWx5IGNyaXRpY2FsIGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb2RlIHBhdGggdGhhdCBpbnZva2VzIGBsaW5rd2F0Y2hfZG9fZGV2YCB0byBjb25maXJtIHRoZSBsb2NrIGFjcXVpc2l0aW9uLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbGlua3dhdGNoX2RvX2RldmAgaW1tZWRpYXRlbHkgdG8gc2VlIHdoYXQgaXQmIzM5O3MgZG9pbmcgd2hpbGUgdW5kZXIgdGhpcyBsb2NrLiBBbnkgcG90ZW50aWFsIGNvbnRlbnRpb24gb3IgZGVhZGxvY2tzIGFyZSB3aGF0IEkmIzM5O20gbG9va2luZyBmb3Igbm93LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaW4gdGhhdCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY29yZS9saW5rX3dhdGNoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdFx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1VQKSB7XG4gMTgxOlx0XHRcdGlmIChuZXRpZl9jYXJyaWVyX29rKGRldikpXG4gMTgyOlx0XHRcdFx0ZGV2X2FjdGl2YXRlKGRldik7XG4gMTgzOlx0XHRcdGVsc2VcbiAxODQ6XHRcdFx0XHRkZXZfZGVhY3RpdmF0ZShkZXYsIHRydWUpO1xuIDE4NTpcdFxuIDE4NjpcdFx0XHRuZXRpZl9zdGF0ZV9jaGFuZ2UoZGV2KTtcbiAxODc6XHRcdH1cbiAxODg6XHR9XG4gMTg5Olx0XG4gMTkwOlx0c3RhdGljIHZvaWQgX19saW5rd2F0Y2hfcnVuX3F1ZXVlKGludCB1cmdlbnRfb25seSlcbiAxOTE6XHR7XG4gMTkyOlx0I2RlZmluZSBNQVhfRE9fREVWX1BFUl9MT09QXHQxMDBcbiAxOTM6XHRcbiAxOTQ6XHRcdGludCBkb19kZXYgPSBNQVhfRE9fREVWX1BFUl9MT09QO1xuIDE5NTpcdFx0LyogVXNlIGEgbG9jYWwgbGlzdCBoZXJlIHNpbmNlIHdlIGFkZCBub24tdXJnZW50XG4gMTk2Olx0XHQgKiBldmVudHMgYmFjayB0byB0aGUgZ2xvYmFsIG9uZSB3aGVuIGNhbGxlZCB3aXRoXG4gMTk3Olx0XHQgKiB1cmdlbnRfb25seT0xLlxuIDE5ODpcdFx0ICovXG4gMTk5Olx0XHRMSVNUX0hFQUQod3JrKTtcbiAyMDA6XHRcbiAyMDE6XHRcdC8qIEdpdmUgdXJnZW50IGNhc2UgbW9yZSBidWRnZXQgKi9cbiAyMDI6XHRcdGlmICh1cmdlbnRfb25seSlcbiAyMDM6XHRcdFx0ZG9fZGV2ICYjNDM7PSBNQVhfRE9fREVWX1BFUl9MT09QO1xuIDIwNDpcdFxuIDIwNTpcdFx0LypcbiAyMDY6XHRcdCAqIExpbWl0IHRoZSBudW1iZXIgb2YgbGlua3dhdGNoIGV2ZW50cyB0byBvbmVcbiAyMDc6XHRcdCAqIHBlciBzZWNvbmQgc28gdGhhdCBhIHJ1bmF3YXkgZHJpdmVyIGRvZXMgbm90XG4gMjA4Olx0XHQgKiBjYXVzZSBhIHN0b3JtIG9mIG1lc3NhZ2VzIG9uIHRoZSBuZXRsaW5rXG4gMjA5Olx0XHQgKiBzb2NrZXQuICBUaGlzIGxpbWl0IGRvZXMgbm90IGFwcGx5IHRvIHVwIGV2ZW50c1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTgwMgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uCgoqKkFuYWx5emluZyBEZXZpY2UgQWN0aXZhdGlvbi9EZWFjdGl2YXRpb24gaW4gdGhlIExpbmt3YXRjaCBDb250ZXh0KioKCkhtbSwgYGxpbmt3YXRjaF9kb19kZXZgIGlzIGNhbGxpbmcgYGRldl9hY3RpdmF0ZWAgYW5kIGBkZXZfZGVhY3RpdmF0ZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBwb3RlbnRpYWxseSBzaWduaWZpY2FudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgYXQgdGhvc2UgcG9pbnRzLiBTbywgcmlnaHQgbm93LCBteSBmb2N1cyBuZWVkcyB0byBzaGlmdCB0byB0aGUgaW50ZXJuYWwgd29ya2luZ3Mgb2YgYGRldl9hY3RpdmF0ZWAgYW5kIGBkZXZfZGVhY3RpdmF0ZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHJvbGVzIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIGBsaW5rd2F0Y2hfZG9fZGV2YC4gTGV0JiMzOTtzIGRpZyBpbnRvIHRob3NlIGZ1bmN0aW9ucyBuZXh0LiBUaGlzIGNvdWxkIGJlIHdoZXJlIHRoZSBtYWdpYywgb3IgdGhlIHRyb3VibGUsIGxpZXMuIFRpbWUgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMgb2YgdGhlIGRldmljZSBtYW5hZ2VtZW50IGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZfYWN0aXZhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbG9vcGJhY2suYz0yNzU9c3RhdGljIGludCBfX2luaXQgYmxhY2tob2xlX25ldGRldl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvbG9vcGJhY2suYy0yODMtXHRkZXZfaW5pdF9zY2hlZHVsZXIoYmxhY2tob2xlX25ldGRldik7XG5kcml2ZXJzL25ldC9sb29wYmFjay5jOjI4NDpcdGRldl9hY3RpdmF0ZShibGFja2hvbGVfbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2xvb3BiYWNrLmMtMjg1LVx0cnRubF9uZXRfdW5sb2NrKFx1MDAyNmluaXRfbmV0KTtcbi0tXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oPTcyNj12b2lkIGRldl9zaHV0ZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmg6NzI3OnZvaWQgZGV2X2FjdGl2YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaC03Mjgtdm9pZCBkZXZfZGVhY3RpdmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHJlc2V0X25lZWRlZCk7XG4tLVxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmM9Nzc9c3RhdGljIHZvaWQgcmZjb21tX2Rldl9kZXN0cnVjdChzdHJ1Y3QgdHR5X3BvcnQgKnBvcnQpXG4tLVxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmMtMTA2LS8qIGRldmljZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbjogb3BlbiB0aGUgZGxjICovXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS90dHkuYzoxMDc6c3RhdGljIGludCByZmNvbW1fZGV2X2FjdGl2YXRlKHN0cnVjdCB0dHlfcG9ydCAqcG9ydCwgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSlcbm5ldC9ibHVldG9vdGgvcmZjb21tL3R0eS5jLTEwOC17XG4tLVxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmM9MTM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR5X3BvcnRfb3BlcmF0aW9ucyByZmNvbW1fcG9ydF9vcHMgPSB7XG5uZXQvYmx1ZXRvb3RoL3JmY29tbS90dHkuYy0xMzktXHQuZGVzdHJ1Y3QgPSByZmNvbW1fZGV2X2Rlc3RydWN0LFxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmM6MTQwOlx0LmFjdGl2YXRlID0gcmZjb21tX2Rldl9hY3RpdmF0ZSxcbm5ldC9ibHVldG9vdGgvcmZjb21tL3R0eS5jLTE0MS1cdC5zaHV0ZG93biA9IHJmY29tbV9kZXZfc2h1dGRvd24sXG4tLVxubmV0L2NvcmUvZGV2LmM9MTY2Nz1zdGF0aWMgaW50IF9fZGV2X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTE3MTAtXHRcdGRldl9zZXRfcnhfbW9kZShkZXYpO1xubmV0L2NvcmUvZGV2LmM6MTcxMTpcdFx0ZGV2X2FjdGl2YXRlKGRldik7XG5uZXQvY29yZS9kZXYuYy0xNzEyLVx0XHRhZGRfZGV2aWNlX3JhbmRvbW5lc3MoZGV2LVx1MDAzZWRldl9hZGRyLCBkZXYtXHUwMDNlYWRkcl9sZW4pO1xuLS1cbm5ldC9jb3JlL2xpbmtfd2F0Y2guYz0xNjY9c3RhdGljIHZvaWQgbGlua3dhdGNoX2RvX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0xODEtXHRcdGlmIChuZXRpZl9jYXJyaWVyX29rKGRldikpXG5uZXQvY29yZS9saW5rX3dhdGNoLmM6MTgyOlx0XHRcdGRldl9hY3RpdmF0ZShkZXYpO1xubmV0L2NvcmUvbGlua193YXRjaC5jLTE4My1cdFx0ZWxzZVxuLS1cbm5ldC9kc2EvdXNlci5jPTM0Nzg9c3RhdGljIGludCBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5uZXQvZHNhL3VzZXIuYy0zNTY5LVx0XHRcdCAqIE5FVERFVl9VUCBldmVudCBpcyBub3QgZW5vdWdoIHRvIGZsYWcgYSBwb3J0IGFzIHJlYWR5LlxubmV0L2RzYS91c2VyLmM6MzU3MDpcdFx0XHQgKiBXZSBhbHNvIGhhdmUgdG8gd2FpdCBmb3IgbGlua3dhdGNoX2RvX2RldiB0byBkZXZfYWN0aXZhdGVcbm5ldC9kc2EvdXNlci5jLTM1NzEtXHRcdFx0ICogYW5kIGVtaXQgYSBORVRERVZfQ0hBTkdFIGV2ZW50LlxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9MTA5MT1zdGF0aWMgaW50IHFkaXNjX2dyYWZ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBRZGlzYyAqcGFyZW50LFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTE2OS1cdFx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1VQKVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMTcwOlx0XHRcdGRldl9hY3RpdmF0ZShkZXYpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy0xMTcxLVx0fSBlbHNlIHtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMjY5PXN0YXRpYyB2b2lkIHRyYW5zaXRpb25fb25lX3FkaXNjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI4NS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEyODY6dm9pZCBkZXZfYWN0aXZhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyODcte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzMTEtfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTMxMjpFWFBPUlRfU1lNQk9MKGRldl9hY3RpdmF0ZSk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzEzLVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0Njg9aW50IGRldl9xZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQ4NS1cdGlmICh1cClcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0ODY6XHRcdGRldl9hY3RpdmF0ZShkZXYpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQ4Ny1cdHJldHVybiByZXQ7XG4tLVxubmV0L3NjaGVkL3NjaF9odGIuYz0xMzg4PWh0Yl9ncmFmdF9oZWxwZXIoc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLCBzdHJ1Y3QgUWRpc2MgKm5ld19xKVxuLS1cbm5ldC9zY2hlZC9zY2hfaHRiLmMtMTM5OC1cdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUClcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MTM5OTpcdFx0ZGV2X2FjdGl2YXRlKGRldik7XG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTE0MDAtXG4tLVxubmV0L3NjaGVkL3NjaF9odGIuYz0xNDE1PXN0YXRpYyB2b2lkIGh0Yl9vZmZsb2FkX21vdmVfcWRpc2Moc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBodGJfY2xhc3MgKmNsX29sZCxcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTE0NDEtXHRcdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUClcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MTQ0MjpcdFx0XHRkZXZfYWN0aXZhdGUoZGV2KTtcbm5ldC9zY2hlZC9zY2hfaHRiLmMtMTQ0My1cdFx0V0FSTl9PTighKHFkaXNjLVx1MDAzZWZsYWdzIFx1MDAyNiBUQ1FfRl9CVUlMVElOKSk7XG4tLVxubmV0L3NjaGVkL3NjaF9tcS5jPTIwOT1zdGF0aWMgaW50IG1xX2dyYWZ0KHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLCBzdHJ1Y3QgUWRpc2MgKm5ldyxcbi0tXG5uZXQvc2NoZWQvc2NoX21xLmMtMjIyLVx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1VQKVxubmV0L3NjaGVkL3NjaF9tcS5jOjIyMzpcdFx0ZGV2X2FjdGl2YXRlKGRldik7XG5uZXQvc2NoZWQvc2NoX21xLmMtMjI0LVxuLS1cbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmM9NDYyPXN0YXRpYyBpbnQgbXFwcmlvX2dyYWZ0KHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLCBzdHJ1Y3QgUWRpc2MgKm5ldyxcbi0tXG5uZXQvc2NoZWQvc2NoX21xcHJpby5jLTQ3OS1cdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUClcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmM6NDgwOlx0XHRkZXZfYWN0aXZhdGUoZGV2KTtcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmMtNDgxLVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjE3OT1zdGF0aWMgaW50IHRhcHJpb19ncmFmdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgbG9uZyBjbCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyMTYtXHRpZiAoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfVVApXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIyMTc6XHRcdGRldl9hY3RpdmF0ZShkZXYpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzc1NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipJbnZlc3RpZ2F0aW5nIGBkZXZfYWN0aXZhdGVgIGFuZCBpdHMgTG9ja2luZyBSZXF1aXJlbWVudHMqKgoKUmlnaHQsIHNvIGBkZXZfYWN0aXZhdGVgLi4uIHRoYXQgZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgLCB3aGljaCBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIE5vdywgYSBrZXkgcXVlc3Rpb24gcG9wcyB1cCBpbW1lZGlhdGVseTogZG9lcyBgZGV2X2FjdGl2YXRlYCByZXF1aXJlIGhvbGRpbmcgdGhlIGBydG5sX2xvY2tgPyBJZiBpdCBkb2VzLCB0aGF0JiMzOTtzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGNvZGUsIGVzcGVjaWFsbHkgYW55dGhpbmcgcmVsYXRlZCB0byByb3V0aW5nIGFuZCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYWJvdXQgdGhpcy4gVGltZSB0byBkaWcgaW50byB0aGUgc291cmNlIGNvZGUgb2YgYGRldl9hY3RpdmF0ZWAgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCBpdHMgbG9jayB1c2FnZSBsb29rcyBsaWtlLiBHb3R0YSBiZSBjYXJlZnVsIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjg2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyODY6XHR2b2lkIGRldl9hY3RpdmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuMTI4NzpcdHtcbjEyODg6XHRcdGludCBuZWVkX3dhdGNoZG9nO1xuMTI4OTpcdFxuMTI5MDpcdFx0LyogTm8gcXVldWVpbmcgZGlzY2lwbGluZSBpcyBhdHRhY2hlZCB0byBkZXZpY2U7XG4xMjkxOlx0XHQgKiBjcmVhdGUgZGVmYXVsdCBvbmUgZm9yIGRldmljZXMsIHdoaWNoIG5lZWQgcXVldWVpbmdcbjEyOTI6XHRcdCAqIGFuZCBub3F1ZXVlX3FkaXNjIGZvciB2aXJ0dWFsIGludGVyZmFjZXNcbjEyOTM6XHRcdCAqL1xuMTI5NDpcdFxuMTI5NTpcdFx0aWYgKHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZXFkaXNjKSA9PSBcdTAwMjZub29wX3FkaXNjKVxuMTI5NjpcdFx0XHRhdHRhY2hfZGVmYXVsdF9xZGlzY3MoZGV2KTtcbjEyOTc6XHRcbjEyOTg6XHRcdGlmICghbmV0aWZfY2Fycmllcl9vayhkZXYpKVxuMTI5OTpcdFx0XHQvKiBEZWxheSBhY3RpdmF0aW9uIHVudGlsIG5leHQgY2Fycmllci1vbiBldmVudCAqL1xuMTMwMDpcdFx0XHRyZXR1cm47XG4xMzAxOlx0XG4xMzAyOlx0XHRuZWVkX3dhdGNoZG9nID0gMDtcbjEzMDM6XHRcdG5ldGRldl9mb3JfZWFjaF90eF9xdWV1ZShkZXYsIHRyYW5zaXRpb25fb25lX3FkaXNjLCBcdTAwMjZuZWVkX3dhdGNoZG9nKTtcbjEzMDQ6XHRcdGlmIChkZXZfaW5ncmVzc19xdWV1ZShkZXYpKVxuMTMwNTpcdFx0XHR0cmFuc2l0aW9uX29uZV9xZGlzYyhkZXYsIGRldl9pbmdyZXNzX3F1ZXVlKGRldiksIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMyMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBydG5sX2RlcmVmZXJlbmNlYCBDYWxsIGluIERldmljZSBBY3RpdmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IG15IGF0dGVudGlvbiBpcyBkcmF3biB0byBgcnRubF9kZXJlZmVyZW5jZShkZXYtJmd0O3FkaXNjKWAuIEkga25vdyB0aGF0IGZ1bmN0aW9uIHJlcXVpcmVzIGBydG5sX2xvY2tgIHRvIGJlIGhlbGQuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBkZXRhaWwsIGFuZCBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgY29uZGl0aW9uIGlzIG1ldC4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgY2FsbCBzdGFjazogYF9fbGlua3dhdGNoX3N5bmNfZGV2YCBjYWxscyBgbGlua3dhdGNoX2RvX2RldmAsIHdoaWNoIHRoZW4gY2FsbHMgYGRldl9hY3RpdmF0ZWAuIGBkZXZfYWN0aXZhdGVgIGlzIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBwcm9ibGVtYXRpYyBgcnRubF9kZXJlZmVyZW5jZWAuIFNvLCBpZiBgZGV2X2FjdGl2YXRlYCBuZWVkcyB0aGUgYHJ0bmxfbG9ja2AsIHRoZW4gYF9fbGlua3dhdGNoX3N5bmNfZGV2YCAqbXVzdCogYmUgY2FsbGVkIHdpdGggdGhhdCBsb2NrIGhlbGQuIFRoYXQmIzM5O3MgYSBkZXBlbmRlbmN5IEkgbmVlZCB0byB2ZXJpZnkuCgpCdXQgaGVyZSYjMzk7cyB0aGUgY29uZnVzaW5nIHBhcnQ6IGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgb25seSBoYXMgYG5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoZGV2KWAuIFRoaXMgYXNzZXJ0cyBgZGV2LSZndDtsb2NrYCBpZiB0aGUgZGV2aWNlIG5lZWRzIGl0LgoKQW5kIGBkZXZfYWN0aXZhdGVgIGhhcyBhIHByb2JsZW0sIGl0IHVzZXMgYHJ0bmxfZGVyZWZlcmVuY2VgIHdoaWNoIGFzc2VydHMgYHJ0bmxfbG9ja2Agb3IgYHJjdV9yZWFkX2xvY2tgLgoKVGhlIHF1ZXN0aW9uIGJlY29tZXM6IERvZXMgYGxpbmt3YXRjaF9kb19kZXZgLCB3aGljaCBzaXRzIGJldHdlZW4gdGhlbSwgaG9sZCB0aGUgYHJ0bmxfbG9ja2A/IEkgbmVlZCB0byBjaGVjayB0aGUgY29kZS4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGBsaW5rd2F0Y2hfZXZlbnRgIGluIGBuZXQvY29yZS9saW5rX3dhdGNoLmNgIHRvIHRyYWNlIHRoZSBsb2NrIGFjcXVpc2l0aW9uIGFuZCByZWxlYXNlLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGUgYHJ0bmxfbG9ja2AgaXMgYWNxdWlyZWQsIGlmIGF0IGFsbCwgYW5kIGhlbGQgYWNyb3NzIHRoYXQgZnVuY3Rpb24gY2FsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY29yZS9saW5rX3dhdGNoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI1MDpcdFxuIDI1MTpcdFx0LyogQWRkIHRoZSByZW1haW5pbmcgd29yayBiYWNrIHRvIGx3ZXZlbnRsaXN0ICovXG4gMjUyOlx0XHRsaXN0X3NwbGljZV9pbml0KFx1MDAyNndyaywgXHUwMDI2bHdldmVudGxpc3QpO1xuIDI1MzpcdFxuIDI1NDpcdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmx3ZXZlbnRsaXN0KSlcbiAyNTU6XHRcdFx0bGlua3dhdGNoX3NjaGVkdWxlX3dvcmsoMCk7XG4gMjU2Olx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2bHdldmVudGxpc3RfbG9jayk7XG4gMjU3Olx0fVxuIDI1ODpcdFxuIDI1OTpcdHN0YXRpYyBib29sIGxpbmt3YXRjaF9jbGVhbl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiAyNjA6XHR7XG4gMjYxOlx0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIDI2MjpcdFx0Ym9vbCBjbGVhbiA9IGZhbHNlO1xuIDI2MzpcdFxuIDI2NDpcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2bHdldmVudGxpc3RfbG9jaywgZmxhZ3MpO1xuIDI2NTpcdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmRldi1cdTAwM2VsaW5rX3dhdGNoX2xpc3QpKSB7XG4gMjY2Olx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZGV2LVx1MDAzZWxpbmtfd2F0Y2hfbGlzdCk7XG4gMjY3Olx0XHRcdGNsZWFuID0gdHJ1ZTtcbiAyNjg6XHRcdFx0LyogV2UgbXVzdCByZWxlYXNlIG5ldGRldiB0cmFja2VyIHVuZGVyXG4gMjY5Olx0XHRcdCAqIHRoZSBzcGlubG9jayBwcm90ZWN0aW9uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTI2MQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSWRlbnRpZnlpbmcgdGhlIFdvcmtxdWV1ZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgdGhyb3VnaCB0aGlzIGNvZGUuLi4gYW5kIGFoYSEgVGhlIGBsaW5rd2F0Y2hfZXZlbnRgIGZ1bmN0aW9uLi4uIHRoYXQmIzM5O3MgdGhlIGtleS4gVGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gYmVpbmcgc3VibWl0dGVkIHRvIHRoZSB3b3JrcXVldWUuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IEkgbmVlZCB0byBmb2N1cyBvbi4gRm9yZ2V0IGFib3V0IHRoZSBvdGhlciBzdHVmZiwgdGhlICYjMzQ7aW50ZXJlc3RpbmcmIzM0OyBiaXQgaXMgcmlnaHQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGlua3dhdGNoX2V2ZW50JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM9MjgxNz1zdGF0aWMgaW50IGRvX3Jlc2V0KHN0cnVjdCBpYm12bmljX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0yODcyLVx0XHRcdCAqIHJlLWFjcXVpcmUgYWZ0ZXIgdGhlIGxpbmsgc3RhdGUgY2hhbmdlIHRvIGFsbG93XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jOjI4NzM6XHRcdFx0ICogbGlua3dhdGNoX2V2ZW50IHRvIGdyYWIgdGhlIFJUTkwgbG9jayBhbmQgcnVuIGR1cmluZ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0yODc0LVx0XHRcdCAqIGEgcmVzZXQuXG4tLVxubmV0L2NvcmUvbGlua193YXRjaC5jPTI4PXN0YXRpYyB1bnNpZ25lZCBsb25nIGxpbmt3YXRjaF9uZXh0ZXZlbnQ7XG5uZXQvY29yZS9saW5rX3dhdGNoLmMtMjktXG5uZXQvY29yZS9saW5rX3dhdGNoLmM6MzA6c3RhdGljIHZvaWQgbGlua3dhdGNoX2V2ZW50KHN0cnVjdCB3b3JrX3N0cnVjdCAqZHVtbXkpO1xubmV0L2NvcmUvbGlua193YXRjaC5jOjMxOnN0YXRpYyBERUNMQVJFX0RFTEFZRURfV09SSyhsaW5rd2F0Y2hfd29yaywgbGlua3dhdGNoX2V2ZW50KTtcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0zMi1cbi0tXG5uZXQvY29yZS9saW5rX3dhdGNoLmM9MzA1PXZvaWQgbGlua3dhdGNoX3J1bl9xdWV1ZSh2b2lkKVxuLS1cbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0zMTAtXG5uZXQvY29yZS9saW5rX3dhdGNoLmM6MzExOnN0YXRpYyB2b2lkIGxpbmt3YXRjaF9ldmVudChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmR1bW15KVxubmV0L2NvcmUvbGlua193YXRjaC5jLTMxMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NzM2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBDb3JlOiBBIExpbmsgV2F0Y2ggRXhwbG9yYXRpb24qKgoKT2theSwgdGltZSB0byBkaWcgaW50byBgbGlua3dhdGNoX2V2ZW50YCB3aXRoaW4gYG5ldC9jb3JlL2xpbmtfd2F0Y2guY2AuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgZ3Jhc3Agb2YgaG93IHRoZSBrZXJuZWwgbWFuYWdlcyBsaW5rIHN0YXRlIGNoYW5nZXMgYW5kLCBzcGVjaWZpY2FsbHksIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIHdpdGggdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjay4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgd2hlcmUgdGhlIG1hZ2ljIHN0YXJ0c+KAlHdoZXJlIHRoZSBpbnRlcnJ1cHQgb3IgcG9sbGluZyByZXN1bHQgZ2V0cyBpbnRlcnByZXRlZCwgYW5kIGV2ZW50cyBnZXQgcHJvcGFnYXRlZC4gSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVz4oCUbGlrZWx5IHNwaW5sb2NrcyBvciBSQ1XigJRiZWluZyB1c2VkIHRvIHByb3RlY3Qgc2hhcmVkIGRhdGEgc3RydWN0dXJlcyByZWxhdGVkIHRvIGludGVyZmFjZSBzdGF0ZS4gTXkgaW50dWl0aW9uIHNheXMgdGhlcmUmIzM5O2xsIGJlIGEgc3dpdGNoIHN0YXRlbWVudCBvciBhIHNlcmllcyBvZiBjb25kaXRpb25hbCBjaGVja3MgdG8gaGFuZGxlIHRoZSBkaWZmZXJlbnQgbGluayBzdGF0ZXMgKHVwLCBkb3duLCBjYXJyaWVyIGRldGVjdCwgZXRjLikuCgpJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUgZXZlbnQgaXMgdHJhbnNsYXRlZCBpbnRvIGFjdGlvbnMuIEkgd2FudCB0byBsb29rIGZvciBjbHVlcyBvbiB3aGVyZSB0aGUgbm90aWZpY2F0aW9ucyBnbzogYXJlIHdlIHRhbGtpbmcgTmV0bGluayBtZXNzYWdlcywgd29ya3F1ZXVlcywgb3IgZGlyZWN0IGZ1bmN0aW9uIGNhbGxzPyBIb3cgZG9lcyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0IHdpdGggdGhlIGRldmljZSBkcml2ZXJzPyBJJiMzOTtsbCBiZSBrZWVwaW5nIGEgc2hhcnAgZXllIG91dCBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgZXNwZWNpYWxseSBnaXZlbiB0aGUgYXN5bmNocm9ub3VzIG5hdHVyZSBvZiBuZXR3b3JrIGxpbmsgZXZlbnRzLiBJIGFsc28gbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIHByZXZlbnRzIHRoZSAmIzM0O3RodW5kZXJpbmcgaGVyZCYjMzQ7IHByb2JsZW0gdGhhdCBtaWdodCBhcHBlYXIgd2l0aCBhIGxhcmdlIG51bWJlciBvZiBpbnRlcmZhY2UgZXZlbnRzLiBGaW5hbGx5LCBJJiMzOTttIGV4cGVjdGluZyBzb21lIGludGVyYWN0aW9uIHdpdGggbmV0ZGV2IG5vdGlmaWVyIGNoYWlucywgYXMgdGhhdCYjMzk7cyBvZnRlbiB1c2VkIHRvIG5vdGlmeSBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIGtlcm5lbCBhYm91dCBuZXR3b3JrIGV2ZW50cy4gTGV0JiMzOTtzIHNlZSBob3cgd2VsbCBteSBhc3N1bXB0aW9ucyBob2xkIHVwLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2NvcmUvbGlua193YXRjaC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzExLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMTE6XHRzdGF0aWMgdm9pZCBsaW5rd2F0Y2hfZXZlbnQoc3RydWN0IHdvcmtfc3RydWN0ICpkdW1teSlcbiAzMTI6XHR7XG4gMzEzOlx0XHRydG5sX2xvY2soKTtcbiAzMTQ6XHRcdF9fbGlua3dhdGNoX3J1bl9xdWV1ZSh0aW1lX2FmdGVyKGxpbmt3YXRjaF9uZXh0ZXZlbnQsIGppZmZpZXMpKTtcbiAzMTU6XHRcdHJ0bmxfdW5sb2NrKCk7XG4gMzE2Olx0fVxuIDMxNzpcdFxuIDMxODpcdFxuIDMxOTpcdHZvaWQgbGlua3dhdGNoX2ZpcmVfZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiAzMjA6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjYzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTGluayBXYXRjaCBNZWNoYW5pc20qKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCB0aGUgYGxpbmt3YXRjaF9ldmVudGAgZnVuY3Rpb24gZ3JhYnMgdGhlIGBydG5sX2xvY2tgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gSXQgbWVhbnMgYF9fbGlua3dhdGNoX3J1bl9xdWV1ZWAgaXMgKmFsd2F5cyogZXhlY3V0ZWQgd2l0aCB0aGUgUmVhbCBUaW1lIE5ldGxpbmsgKHJ0bmwpIGxvY2sgaGVsZC4gUmlnaHQsIGFuZCBgX19saW5rd2F0Y2hfcnVuX3F1ZXVlYCB0aGVuIGNhbGxzIGBsaW5rd2F0Y2hfZG9fZGV2YC4gVGhhdCBtZWFucyBgbGlua3dhdGNoX2RvX2RldmAgaXMgKmRlc2lnbmVkKiB0byBiZSBjYWxsZWQgd2hlbiBgcnRubF9sb2NrYCBpcyBhbHJlYWR5IGhlbGQuIE5vIHN1cnByaXNlcyB0aGVyZS4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIEkgcmVtZW1iZXIgc2VlaW5nIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgc29tZXdoZXJlLCBhbmQgaXQgbG9va3MgbGlrZSB0aGF0IGZ1bmN0aW9uIGNhbGxzIGBsaW5rd2F0Y2hfZG9fZGV2YCAqZGlyZWN0bHkqLiBUaGF0IGNvdWxkIGJlIGEgcHJvYmxlbSEgSSBuZWVkIHRvIGdvIGJhY2sgYW5kIGRvdWJsZS1jaGVjayBgX19saW5rd2F0Y2hfc3luY19kZXZgLiBJIGhhdmUgYSBmZWVsaW5nIHNvbWV0aGluZyBpcyBvdXQgb2Ygc3luYyB3aXRoIHRoZSBsb2NraW5nIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2NvcmUvbGlua193YXRjaC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjc4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNzg6XHR2b2lkIF9fbGlua3dhdGNoX3N5bmNfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gMjc5Olx0e1xuIDI4MDpcdFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpO1xuIDI4MTpcdFxuIDI4MjpcdFx0aWYgKGxpbmt3YXRjaF9jbGVhbl9kZXYoZGV2KSkge1xuIDI4MzpcdFx0XHRsaW5rd2F0Y2hfZG9fZGV2KGRldik7XG4gMjg0Olx0XHRcdC8qIFVzZSBfX2Rldl9wdXQoKSBiZWNhdXNlIG5ldGRldl90cmFja2VyX2ZyZWUoKSB3YXMgYWxyZWFkeVxuIDI4NTpcdFx0XHQgKiBjYWxsZWQgaW5zaWRlIGxpbmt3YXRjaF9jbGVhbl9kZXYoKS5cbiAyODY6XHRcdFx0ICovXG4gMjg3Olx0XHRcdF9fZGV2X3B1dChkZXYpO1xuIDI4ODpcdFx0fVxuIDI4OTpcdH1cbiAyOTA6XHRcbiAyOTE6XHR2b2lkIGxpbmt3YXRjaF9zeW5jX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIDI5MjpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY4MzcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgYSBQb3RlbnRpYWwgUmFjZSBDb25kaXRpb24gaW4gTmV0d29yayBEZXZpY2UgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBoZXJlJiMzOTtzIHdoYXQmIzM5O3MgYm90aGVyaW5nIG1lLiBJJiMzOTt2ZSBiZWVuIHRyYWNpbmcgYSBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWUgcmVsYXRlZCB0byBob3cgd2UgaGFuZGxlIG5ldHdvcmsgZGV2aWNlIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAuIE15IGNvbmNlcm4gc3RlbXMgZnJvbSB0aGUgcG9zc2liaWxpdHkgdGhhdCBjYWxsaW5nIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgd2l0aG91dCBob2xkaW5nIHRoZSBgcnRubF9sb2NrYCBjb3VsZCBsZWFkIHRvIHNlcmlvdXMgcHJvYmxlbXMsIHBvdGVudGlhbGx5IFJDVSB3YXJuaW5ncyBvciwgZXZlbiB3b3JzZSwgZGF0YSByYWNlcy4gVGhlIHJvb3Qgb2YgdGhlIGlzc3VlIGxpZXMgaW4gdGhlIGZhY3QgdGhhdCBgX19saW5rd2F0Y2hfc3luY19kZXZgIGV2ZW50dWFsbHkgY2FsbHMgYGxpbmt3YXRjaF9kb19kZXZgLCB3aGljaCB0aGVuIGNhbGxzIGBkZXZfYWN0aXZhdGVgLiBEdXJpbmcgdGhpcyBjaGFpbiBvZiBjYWxscywgd2UgdXNlIGBydG5sX2RlcmVmZXJlbmNlYCB0byBhY2Nlc3Mgc2hhcmVkIGRhdGEuCgpOb3csIEkgaW5pdGlhbGx5IHRob3VnaHQgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCB3b3VsZCBhbHdheXMgZW5mb3JjZSB0aGUgbG9jaywgYnV0IHRoZW4gSSByZW1lbWJlcmVkIHRoZSBhc3NlcnRpb24gYG5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoZGV2KWAuIFRoaXMgYXNzZXJ0aW9uIGlzbiYjMzk7dCBhcyBzdHJpY3QgYXMgSSYjMzk7ZCBob3BlZC4gSWYgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIGlzIHRydWUsIGl0ICpvbmx5KiBhc3NlcnRzIHRoZSBkZXZpY2UmIzM5O3Mgb3duIGxvY2sgKGBkZXYtJmd0O2xvY2tgKSwgKm5vdCogdGhlIGdsb2JhbCBgcnRubF9sb2NrYC4gVGhhdCYjMzk7cyB0aGUgY3J1eC4KClRoaXMgbWVhbnMgaWYgYSBmdW5jdGlvbiBsaWtlIGBldGh0b29sX29wX2dldF9saW5rYCBnZXRzIGNhbGxlZCB3aXRob3V0IGhvbGRpbmcgYHJ0bmxfbG9ja2AsIGFuZCBpdCBzdWJzZXF1ZW50bHkgY2FsbHMgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCwgd2UmIzM5O3JlIGluIHRyb3VibGUuIFRoZSBidWcgaXMgdGhlIGNhbGwgcGF0aCBpdHNlbGYsIGJlY2F1c2UgYGxpbmt3YXRjaF9kb19kZXZgICpuZWVkcyogdGhlIGBydG5sX2xvY2tgLgoKVGhlIHByb3Bvc2VkIHNvbHV0aW9uIG1ha2VzIHNlbnNlOiBpdCBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIGBvcF9uZWVkc19ydG5sYCBmb3IgZHJpdmVycyB0aGF0IHVzZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgYW5kIGhhdmUgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIHJldHVybmluZyB0cnVlLiBUaGlzIHNlZW1zIHJlYXNvbmFibGUsIGJ1dCBub3cgSSBoYXZlIHRvIGNoZWNrIHRoZSBpbXBsaWNhdGlvbnMuCgpOb3cgSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGljaCBkcml2ZXJzIHRoaXMgYWN0dWFsbHkgYWZmZWN0cy4gKkRvKiBkcml2ZXJzIGxpa2UgYGd2ZWAsIGBpYXZmYCwgYG1seDVgLCBgZmJuaWNgLCBvciBgbWFuYWAgdXNlIGBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGNvbmRpdGlvbiBpcyB0cnVlIGZvciB0aGUgZHJpdmVycy4gVGhlIGRlZmluaXRpb24gb2YgYG5ldGRldl9uZWVkX29wc19sb2NrYCBpcyB3aGF0IEkgbmVlZCB0byBjaGVjay4gSXQmIzM5O3MgcmVsYXRlZCB0byBgZGV2LSZndDtuZXRkZXZfb3BzLSZndDtuZG9fYnBmYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYnV0IEkgaGF2ZSB0byBnbyBiYWNrIGFuZCBkb3VibGUgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjg6XHRzdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X25lZWRfb3BzX2xvY2soY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiAgMjk6XHR7XG4gIDMwOlx0XHRib29sIHJldCA9IGRldi1cdTAwM2VyZXF1ZXN0X29wc19sb2NrIHx8ICEhZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzO1xuICAzMTpcdFxuICAzMjpcdCNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfU0hBUEVSKVxuICAzMzpcdFx0cmV0IHw9ICEhZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmV0X3NoYXBlcl9vcHM7XG4gIDM0Olx0I2VuZGlmXG4gIDM1Olx0XG4gIDM2Olx0XHRyZXR1cm4gcmV0O1xuICAzNzpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5NDYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERldmljZSBEcml2ZXIgQ29uY3VycmVuY3kgYW5kIFF1ZXVlIE1hbmFnZW1lbnQqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSBzZWVpbmcgYSBwb3RlbnRpYWwgYXJlYSBvZiBjb25jZXJuLiBUaGUgaW5pdGlhbCB0cmlnZ2VyIGlzIHRoZSBtZW50aW9uIG9mIGBkZXYtJmd0O3JlcXVlc3Rfb3BzX2xvY2tgLCBgZGV2LSZndDtxdWV1ZV9tZ210X29wc2AsIG9yIGBkZXYtJmd0O25ldGRldl9vcHMtJmd0O25ldF9zaGFwZXJfb3BzYC4gVGhlc2UgYXJlIGxpa2VseSByZWxhdGVkIHRvIGhvdyB0aGUgbmV0d29yayBkZXZpY2UgZHJpdmVyIGhhbmRsZXMgY29uY3VycmVudCBhY2Nlc3MgdG8gaXRzIHJlc291cmNlcywgc3BlY2lmaWNhbGx5IGFyb3VuZCByZXF1ZXN0IG9wZXJhdGlvbnMsIHF1ZXVlIG1hbmFnZW1lbnQsIGFuZCBwb3RlbnRpYWxseSBldmVuIHNoYXBpbmcgYWN0aXZpdGllcy4KCk15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHRpY2tpbmcgdGhyb3VnaCB0aGUgY29tbW9ubHkgdXNlZCBkcml2ZXJzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hpY2ggb2Ygb3VyIGhpZ2gtcGVyZm9ybWFuY2Ugb3IgY3JpdGljYWwgbmV0d29yayBkcml2ZXJzIGVtcGxveSBhIHNwZWNpZmljIHN0cmF0ZWd5IGZvciBjb25jdXJyZW5jeSBhbmQgcXVldWluZy4gSSYjMzk7bSB0aGlua2luZyBvZiB0aGUgYmlnIHBsYXllcnMgaGVyZTogYGd2ZWAsIGBpYXZmYCwgYG1seDVgLCBgZmJuaWNgLCBhbmQgYG1hbmFgLiBBcmUgdGhleSB1c2luZyBgcmVxdWVzdF9vcHNfbG9ja2A/IEFyZSB0aGV5IGxldmVyYWdpbmcgYHF1ZXVlX21nbXRfb3BzYD8gT3IgYXJlIHRoZXkgcmVseWluZyBvbiB0aGUgYG5ldF9zaGFwZXJfb3BzYCB0byBwcm90ZWN0IHRoZSBxdWV1ZT8KClRoZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGxvY2tpbmcgbW9kZWwgZW1wbG95ZWQgYnkgdmFyaW91cyBOSUNzLCBhbmQgYWxzbyB0byBzcG90IHBvdGVudGlhbGx5IHVudXN1YWwgaW1wbGVtZW50YXRpb25zIHRoYXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIHN0YWJpbGl0eS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgdGhlc2Ugc3BlY2lmaWMgZHJpdmVycyBhcmUgZG9pbmcgaW4gdGhpcyBzcGFjZS4gSSBuZWVkIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCBpZiBhbnkgb2YgdGhlc2UgYXJlIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB0aGF0IHJlcXVpcmUgYWRkaXRpb25hbCBzY3J1dGlueS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cXVldWVfbWdtdF9vcHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0PTM5Nz1Ob3RlIHRoYXQgc3VwcG9ydGluZyBuZXQgc2hhcGVycyBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgXCYjMzQ7b3BzIGxvY2tpbmdcJiMzNDsuXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QtMzk4LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0OjM5OTpzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QtNDAwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3Q9NDAzPWxvY2suIGBgcnRubF9sb2NrYGAgbWF5IG9yIG1heSBub3QgYmUgaGVsZC5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdC00MDQtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3Q6NDA1Ok5vdGUgdGhhdCBzdXBwb3J0aW5nIHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgYXV0b21hdGljYWxseSBlbmFibGVzXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QtNDA2LVwmIzM0O29wcyBsb2NraW5nXCYjMzQ7LlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2NDQ4PXN0YXRpYyBpbnQgYm54dF9xdWV1ZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnFtZW0sIGludCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTY0OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjQ5NjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBibnh0X3F1ZXVlX21nbXRfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTY0OTctXHQubmRvX3F1ZXVlX21lbV9zaXplXHQ9IHNpemVvZihzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8pLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2NTA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTY1MDc6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgYm54dF9xdWV1ZV9tZ210X29wc191bnN1cHAgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjUwOC1cdC5uZG9fZGVmYXVsdF9xY2ZnXHQ9IGJueHRfcXVldWVfZGVmYXVsdF9xY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2OTQ1PXN0YXRpYyBpbnQgYm54dF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzE4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MTg1Olx0ZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXHUwMDI2Ym54dF9xdWV1ZV9tZ210X29wc191bnN1cHA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzE4Ni1cdGlmIChCTlhUX1NVUFBPUlRTX1FVRVVFX0FQSShicCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNzE4NzpcdFx0ZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXHUwMDI2Ym54dF9xdWV1ZV9tZ210X29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE3MTg4LVx0ZGV2LVx1MDAzZW5ldG1lbV90eCA9IE5FVE1FTV9UWF9ETUE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTI2ODU9c3RhdGljIGludCBndmVfcnhfcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjczNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyNzM3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIGd2ZV9xdWV1ZV9tZ210X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yNzM4LVx0Lm5kb19xdWV1ZV9tZW1fc2l6ZVx0PVx0c2l6ZW9mKHN0cnVjdCBndmVfcnhfcmluZyksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTI3OTM9c3RhdGljIGludCBndmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTI4NDYtXHRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmd2ZV9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjI4NDc6XHRkZXYtXHUwMDNlcXVldWVfbWdtdF9vcHMgPSBcdTAwMjZndmVfcXVldWVfbWdtdF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjg0OC1cdGRldi1cdTAwM2VzdGF0X29wcyA9IFx1MDAyNmd2ZV9zdGF0X29wcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTU3OTA9c3RhdGljIHN0cnVjdCBkZXZpY2UgKm1seDVlX3F1ZXVlX2dldF9kbWFfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1ODEzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG1seDVlX3F1ZXVlX21nbXRfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODE0LVx0Lm5kb19xdWV1ZV9tZW1fc2l6ZVx0PVx0c2l6ZW9mKHN0cnVjdCBtbHg1X3FtZ210X2RhdGEpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTgyNT1zdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9uaWNfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODM0LVx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZtbHg1ZV9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1ODM1Olx0bmV0ZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXHUwMDI2bWx4NWVfcXVldWVfbWdtdF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU4MzYtXHRuZXRkZXYtXHUwMDNleGRwX21ldGFkYXRhX29wcyA9IFx1MDAyNm1seDVlX3hkcF9tZXRhZGF0YV9vcHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz03NDY9c3RydWN0IG5ldF9kZXZpY2UgKmZibmljX25ldGRldl9hbGxvYyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy03NjAtXHRuZXRkZXYtXHUwMDNlc3RhdF9vcHMgPSBcdTAwMjZmYm5pY19zdGF0X29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM6NzYxOlx0bmV0ZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXHUwMDI2ZmJuaWNfcXVldWVfbWdtdF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTc2Mi1cdG5ldGRldi1cdTAwM2VuZXRtZW1fdHggPSBORVRNRU1fVFhfRE1BO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jPTI5MDg9c3RhdGljIGludCBmYm5pY19xdWV1ZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnFtZW0sIGludCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjk0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjI5NDk6Y29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBmYm5pY19xdWV1ZV9tZ210X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTI5NTAtXHQubmRvX3F1ZXVlX21lbV9zaXplXHQ9IHNpemVvZihzdHJ1Y3QgZmJuaWNfcV90cmlhZCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4Lmg9MTUwPXN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmgtMTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4Lmg6MTYzOmV4dGVybiBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIGZibmljX3F1ZXVlX21nbXRfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmgtMTY0LVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MzQ9c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODUyLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg1MzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBuc2ltX3F1ZXVlX21nbXRfb3BzID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg1NC1cdC5uZG9fcXVldWVfbWVtX3NpemVcdD0gc2l6ZW9mKHN0cnVjdCBuc2ltX3F1ZXVlX21lbSksXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTEwMzg9c3RhdGljIGludCBuc2ltX2luaXRfbmV0ZGV2c2ltKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMDUwLVx0bnMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRfb3BzID0gXHUwMDI2bnNpbV9zdGF0X29wcztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMDUxOlx0bnMtXHUwMDNlbmV0ZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXHUwMDI2bnNpbV9xdWV1ZV9tZ210X29wcztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMDUyLVx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMobnMtXHUwMDNlbmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9uZXRraXQuYz0zNTg9c3RhdGljIGludCBuZXRraXRfcXVldWVfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0a2l0LmMtMzkxLVxuZHJpdmVycy9uZXQvbmV0a2l0LmM6MzkyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5ldGtpdF9xdWV1ZV9tZ210X29wcyA9IHtcbmRyaXZlcnMvbmV0L25ldGtpdC5jLTM5My1cdC5uZG9fcXVldWVfY3JlYXRlXHQ9IG5ldGtpdF9xdWV1ZV9jcmVhdGUsXG4tLVxuZHJpdmVycy9uZXQvbmV0a2l0LmM9NDQxPXN0YXRpYyB2b2lkIG5ldGtpdF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L25ldGtpdC5jLTQ3My1cdGRldi1cdTAwM2VldGh0b29sX29wcyAgICA9IFx1MDAyNm5ldGtpdF9ldGh0b29sX29wcztcbmRyaXZlcnMvbmV0L25ldGtpdC5jOjQ3NDpcdGRldi1cdTAwM2VxdWV1ZV9tZ210X29wcyA9IFx1MDAyNm5ldGtpdF9xdWV1ZV9tZ210X29wcztcbmRyaXZlcnMvbmV0L25ldGtpdC5jLTQ3NS1cbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MDQ9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIwMzctICpcdEBzdGF0X29wczpcdE9wdGlvbmFsIG9wcyBmb3IgcXVldWUtYXdhcmUgc3RhdGlzdGljc1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyMDM4OiAqXHRAcXVldWVfbWdtdF9vcHM6XHRPcHRpb25hbCBvcHMgZm9yIHF1ZXVlIG1hbmFnZW1lbnRcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjAzOS0gKlxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNDU3LVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNDU4Olx0Y29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyAqcXVldWVfbWdtdF9vcHM7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI0NTktXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD0yOD1zdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X25lZWRfb3BzX2xvY2soY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMjkte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDozMDpcdGJvb2wgcmV0ID0gZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgfHwgISFkZXYtXHUwMDNlcXVldWVfbWdtdF9vcHM7XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTMxLVxuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaD0xMTg9ZW51bSB7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oLTEyMy0vKipcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaDoxMjQ6ICogc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyAtIG5ldGRldiBvcHMgZm9yIHF1ZXVlIG1hbmFnZW1lbnRcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaC0xMjUtICpcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmgtMTYzLSAqL1xuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oOjE2NDpzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIHtcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaC0xNjUtXHRzaXplX3RcdG5kb19xdWV1ZV9tZW1fc2l6ZTtcbi0tXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jPTEyNTI9aW50IG5ldGRldl9ubF9xdWV1ZV9jcmVhdGVfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTM4Ny1cbm5ldC9jb3JlL25ldGRldi1nZW5sLmM6MTM4ODpcdHF1ZXVlX2lkID0gZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzLVx1MDAzZW5kb19xdWV1ZV9jcmVhdGUoZGV2LCBpbmZvLVx1MDAzZWV4dGFjayk7XG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEzODktXHRpZiAocXVldWVfaWQgXHUwMDNjIDApIHtcbi0tXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmM9MTY9c3RhdGljIGludCBfX25ldGRldl9xdWV1ZV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X2NvbmZpZy5jLTI3LVx0dmFsaWRhdGVfY2IgPSBuZXRkZXZfbm9wX3ZhbGlkYXRlX3FjZmc7XG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmM6Mjg6XHRpZiAodmFsaWRhdGUgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2VxdWV1ZV9tZ210X29wcy1cdTAwM2VuZG9fdmFsaWRhdGVfcWNmZylcbm5ldC9jb3JlL25ldGRldl9jb25maWcuYzoyOTpcdFx0dmFsaWRhdGVfY2IgPSBkZXYtXHUwMDNlcXVldWVfbWdtdF9vcHMtXHUwMDNlbmRvX3ZhbGlkYXRlX3FjZmc7XG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmMtMzAtXG4tLVxubmV0L2NvcmUvbmV0ZGV2X2NvbmZpZy5jLTMzLVx0LyogR2V0IGRlZmF1bHRzIGZyb20gdGhlIGRyaXZlciwgaW4gY2FzZSB1c2VyIGNvbmZpZyBub3Qgc2V0ICovXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmM6MzQ6XHRpZiAoZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzLVx1MDAzZW5kb19kZWZhdWx0X3FjZmcpXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmM6MzU6XHRcdGRldi1cdTAwM2VxdWV1ZV9tZ210X29wcy1cdTAwM2VuZG9fZGVmYXVsdF9xY2ZnKGRldiwgcWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmMtMzYtXHRlcnIgPSB2YWxpZGF0ZV9jYihkZXYsIHFjZmcsIGV4dGFjayk7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jPTEwPV9fbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZHgpXG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmMtMTEte1xubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jOjEyOlx0Y29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyAqcXVldWVfb3BzID0gZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzO1xubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jLTEzLVx0c3RydWN0IGRldmljZSAqZG1hX2Rldjtcbi0tXG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmM9NjE9Ym9vbCBuZXRkZXZfY2FuX2NyZWF0ZV9xdWV1ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9jb3JlL25ldGRldl9xdWV1ZXMuYy02Ny1cdH1cbm5ldC9jb3JlL25ldGRldl9xdWV1ZXMuYzo2ODpcdGlmICghZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzIHx8XG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmM6Njk6XHQgICAgIWRldi1cdTAwM2VxdWV1ZV9tZ210X29wcy1cdTAwM2VuZG9fcXVldWVfY3JlYXRlKSB7XG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmMtNzAtXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7RGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgcXVldWUgY3JlYXRpb25cJiMzNDspO1xuLS1cbm5ldC9jb3JlL25ldGRldl9xdWV1ZXMuYz04MT1ib29sIG5ldGRldl9jYW5fbGVhc2VfcXVldWUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmMtOTEtXHR9XG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmM6OTI6XHRpZiAoIWRldi1cdTAwM2VxdWV1ZV9tZ210X29wcykge1xubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jLTkzLVx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O0xlYXNlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHF1ZXVlIG1hbmFnZW1lbnQgb3BlcmF0aW9uc1wmIzM0Oyk7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMDMtXHRzdHJ1Y3QgbmV0ZGV2X3J4X3F1ZXVlICpyeHEgPSBfX25ldGlmX2dldF9yeF9xdWV1ZShkZXYsIHJ4cV9pZHgpO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTA0Olx0Y29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyAqcW9wcyA9IGRldi1cdTAwM2VxdWV1ZV9tZ210X29wcztcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTEwNS1cdHZvaWQgKm5ld19tZW0sICpvbGRfbWVtO1xuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4Nz1zdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTkwLXtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE5MTpcdGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgKnFvcHMgPSBkZXYtXHUwMDNlcXVldWVfbWdtdF9vcHM7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xOTItXHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyBxY2ZnWzJdO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjQwNgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUXVldWUgTWFuYWdlbWVudCBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IGRpZmZlcmVudCBuZXR3b3JrIGRyaXZlcnMgaGFuZGxlIHF1ZXVlIG1hbmFnZW1lbnQuIEkga25vdyBgZ3ZlYCwgYG1seDVgLCBhbmQgYGZibmljYCBhbGwgcmVseSBvbiBgcXVldWVfbWdtdF9vcHNgLiBCdXQgd2hhdCBhYm91dCBgaWF2ZmAgYW5kIGBtYW5hYD8gSSBuZWVkIHRvIGNsYXJpZnkgdGhlaXIgYXBwcm9hY2ggdG8gcXVldWUgbWFuYWdlbWVudC4gSXQmIzM5O3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIGlmIHRoZXkgZW1wbG95IGByZXF1ZXN0X29wc19sb2NrYCB3aGljaCBjb3VsZCBwcm92aWRlIG1vcmUgaW5zaWdodCBpbnRvIHRoZWlyIHN5bmNocm9uaXphdGlvbiBzdHJhdGVneSBhbmQgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlcXVlc3Rfb3BzX2xvY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0PTM0Mz1Ecml2ZXJzIGNhbiBhbHNvIGV4cGxpY2l0bHkgcmVxdWVzdCBpbnN0YW5jZSBsb2NrIHRvIGJlIGhlbGQgZHVyaW5nIG9wc1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0OjM0NDpieSBzZXR0aW5nIGBgcmVxdWVzdF9vcHNfbG9ja2BgIHRvIHRydWUuIENvZGUgY29tbWVudHMgYW5kIGRvY3MgcmVmZXJcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdC0zNDUtdG8gZHJpdmVycyB3aGljaCBoYXZlIG9wcyBjYWxsZWQgdW5kZXIgdGhlIGluc3RhbmNlIGxvY2sgYXMgXCYjMzQ7b3BzIGxvY2tlZFwmIzM0Oy5cbi0tXG5kcml2ZXJzL25ldC9kdW1teS5jPTEwMz1zdGF0aWMgdm9pZCBkdW1teV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2R1bW15LmMtMTEwLVx0ZGV2LVx1MDAzZW5lZWRzX2ZyZWVfbmV0ZGV2ID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2R1bW15LmM6MTExOlx0ZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgPSB0cnVlO1xuZHJpdmVycy9uZXQvZHVtbXkuYy0xMTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jPTMzMjY9aW50IGJuZ2VfbmV0ZGV2X2FsbG9jKHN0cnVjdCBibmdlX2RldiAqYmQsIGludCBtYXhfaXJxcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMzQ0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzozNDQzOlx0bmV0ZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgPSB0cnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTM0NDQtXHRyYyA9IHJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTgyNT1zdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9uaWNfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODM3LVx0bmV0ZGV2LVx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMgPSBcdTAwMjZtbHg1ZV94c2tfdHhfbWV0YWRhdGFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1ODM4Olx0bmV0ZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgPSB0cnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODM5LVx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMobmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmM9ODg3PXN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX3JlcF9uZXRkZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMtODkxLVx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZtbHg1ZV9uZXRkZXZfb3BzX3JlcDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYzo4OTI6XHRuZXRkZXYtXHUwMDNlcmVxdWVzdF9vcHNfbG9jayA9IHRydWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMtODkzLVx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMobmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYz05OT1pbnQgbWx4NWlfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYy0xMjMtXHRuZXRkZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZtbHg1aV9ldGh0b29sX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jOjEyNDpcdG5ldGRldi1cdTAwM2VyZXF1ZXN0X29wc19sb2NrID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jLTEyNS1cdG5ldGRldl9sb2NrZGVwX3NldF9jbGFzc2VzKG5ldGRldik7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yMTM5PXN0cnVjdCBuZXRfZGV2aWNlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NTMtXHQvKipcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjU1NDpcdCAqIEByZXF1ZXN0X29wc19sb2NrOiByZXF1ZXN0IHRoZSBjb3JlIHRvIHJ1biBhbGwgQG5ldGRldl9vcHMgYW5kXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NTUtXHQgKiBAZXRodG9vbF9vcHMgdW5kZXIgdGhlIEBsb2NrLlxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTU2LVx0ICovXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1NTc6XHRib29sXHRcdFx0cmVxdWVzdF9vcHNfbG9jaztcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU1OC1cbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NjYtXHQgKiBvcGVyYXRpb25zLiBEcml2ZXJzIG1heSBvcHQtaW4gdG8gdGhpcyBiZWhhdmlvciBieSBzZXR0aW5nXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1Njc6XHQgKiBAcmVxdWVzdF9vcHNfbG9jay5cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU2OC1cdCAqXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD0yOD1zdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X25lZWRfb3BzX2xvY2soY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMjkte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDozMDpcdGJvb2wgcmV0ID0gZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgfHwgISFkZXYtXHUwMDNlcXVldWVfbWdtdF9vcHM7XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTMxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzg0NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTWlzc2luZyBJQVZGIGFuZCBNQU5BIE9wZXJhdGlvbnMqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSByZXZpZXdpbmcgdGhlIG91dHB1dCBvZiBgcmVxdWVzdF9vcHNfbG9ja2AgYW5kIGBxdWV1ZV9tZ210X29wc2AsIGFuZCBJJiMzOTttIG5vdCBzZWVpbmcgYGlhdmZgIG9yIGBtYW5hYCBsaXN0ZWQgYW55d2hlcmUuIFRoYXTigJlzIGRlZmluaXRlbHkgbm90IHJpZ2h0LCBjb25zaWRlcmluZyBob3cgdGhlc2UgY29tcG9uZW50cyBpbnRlcmFjdC4gTXkgaW5pdGlhbCBhbmFseXNpcyBpcyBpbmNvbXBsZXRlLiBJdCBsb29rcyBsaWtlIEkgbmVlZCB0byBuYXJyb3cgbXkgZm9jdXMgYW5kIGRpcmVjdGx5IHZlcmlmeSB0aGVpciBwcmVzZW5jZSAob3IgbGFjayB0aGVyZW9mKS4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIGluc3BlY3QgdGhlIHJlc3VsdHMgc3BlY2lmaWNhbGx5IGZvciBgaWF2ZmAgYW5kIGBtYW5hYC4gVGltZSB0byBjaGVjayB0aG9zZSBpbmRpdmlkdWFsbHkuIEkgbmVlZCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlcXVlc3Rfb3BzX2xvY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MDcwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRpZ2dpbmcgRGVlcGVyIGludG8gdGhlIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGFuZCB0aGlua2luZywgJiMzNDtIb2xkIG9uIGEgbWludXRlLi4uIGRpZCB0aGV5IGNvbmZpZ3VyZSB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0IGRpZmZlcmVudGx5IHRoYW4gSSYjMzk7bSBhc3N1bWluZz8mIzM0OyBUaGVyZSYjMzk7cyBhbHdheXMgYSBjaGFuY2UgSSYjMzk7dmUgbWlzc2VkIGEgbnVhbmNlIGluIHRoZWlyIHNldHVwIG9yIHBlcmhhcHMgdGhleSYjMzk7dmUgdXRpbGl6ZWQgc29tZSBjb25maWd1cmF0aW9uIEkmIzM5O20gbm90IGltbWVkaWF0ZWx5IHNlZWluZy4gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgaWYgdGhleSBhcmUsIGluIGZhY3QsIHVzaW5nIHRoYXQgYHF1ZXVlX21nbXRfb3BzYCBmdW5jdGlvbiBidXQgbWF5YmUgaXQgd2FzIHVzZWQgaW4gYSBjb250ZXh0IHRoYXQgSSBjb21wbGV0ZWx5IGdsYXplZCBvdmVyLiBJIG5lZWQgdG8gdGFrZSBhbm90aGVyIGxvb2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cXVldWVfbWdtdF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0Mjc2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRlbHZpbmcgaW50byB0aGUgRXNzZW5jZTogUmV2aXNpdGluZyBgTWFuYWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBjb25jZXB0IG9mIGBtYW5hYC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBpZGVhLCBpc24mIzM5O3QgaXQ/IFdoZXRoZXIgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZW5lcmd5IGZsb3dzLCBhYnN0cmFjdCBzb3VyY2VzIG9mIHBvd2VyLCBvciBldmVuIG1ldGFwaG9yaWNhbCByZXByZXNlbnRhdGlvbnMsIGBtYW5hYCBvZmZlcnMgYSBwb3dlcmZ1bCBsZW5zLiBJJiMzOTttIGFscmVhZHkgZm9ybXVsYXRpbmcgcXVlc3Rpb25zOiBJcyB0aGlzIG1lYW50IGxpdGVyYWxseSwgYXMgYSBzcGVjaWZpYywgZGVmaW5lZCByZXNvdXJjZSB3aXRoaW4gYSBwYXJ0aWN1bGFyIHN5c3RlbT8gT3IsIGlzIHRoaXMgbW9yZSBjb25jZXB0dWFsLCBhIHRlcm0gY2hvc2VuIHRvIGV2b2tlIGRlZXBlciBtZWFuaW5ncywgcGVyaGFwcyByZWxhdGVkIHRvIHZpdGFsIGZvcmNlcywgb3IgYWNjZXNzIHRvIHNvbWV0aGluZyBiZXlvbmQgdGhlIGV2ZXJ5ZGF5PyBJcyB0aGUgaW50ZW50IHRvIGRyYXcgcGFyYWxsZWxzIG9yIGVzdGFibGlzaCBhIGNvbnRyYXN0IGJldHdlZW4gZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucz8gSSBzdXBwb3NlIEkgc2hvdWxkIGJlZ2luIGJ5IHVucGFja2luZyBpdHMgdmFyaW91cyBtYW5pZmVzdGF0aW9ucy4gV2hlcmUgaXMgdGhpcyBjb25jZXB0IGJlaW5nIGFwcGxpZWQsIGFuZCBob3c/IFRoZSBhbnN3ZXIgdG8gdGhhdCBxdWVzdGlvbiB3aWxsIGxlYWQgdG8gdGhlIG1vc3QgbG9naWNhbCBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9vcHNfbG9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NTM3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyBRdWV1ZSBNYW5hZ2VtZW50IE9wZXJhdGlvbnM6IEEgUmVzb3VyY2UgUGVyc3BlY3RpdmUqKgoKUmlnaHQsIGxldCYjMzk7cyBwYXVzZSBhbmQgbm90IGdldCBhaGVhZCBvZiBvdXJzZWx2ZXMuIEJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byB0aGUgaW50cmljYWNpZXMgb2YgdGhpcyBxdWV1ZSBtYW5hZ2VtZW50IHByb2Nlc3MsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBleGFtaW5lIGl0cyByZXNvdXJjZSBjb25zdW1wdGlvbi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlICYjMzk7bWFuYSYjMzk7IHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgJiMzOTtxdWV1ZV9tZ210X29wcyYjMzk7LiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMsIGFzIHRoaXMgaXMgaG93IHRoZSBzeXN0ZW0gaXMgbWFuYWdpbmcgaXQmIzM5O3MgY3VycmVudCBwcm9jZXNzLiBUaGlzIGlzIHRoZSBseW5jaHBpbiBmb3IgZWZmaWNpZW50IG9wZXJhdGlvbi4gSSBhbSBjb25zaWRlcmluZyB0aGlzIHZhbHVlIGFuZCB0cnlpbmcgdG8gZGVjaWRlIGl0JiMzOTtzIGVmZmVjdHMuIEtub3dpbmcgdGhlIGN1cnJlbnQgcmVzb3VyY2UgJiMzOTttYW5hJiMzOTsgZGVkaWNhdGVkIHRvIHRoaXMgZWxlbWVudCB3aWxsIGluZm9ybSB0aGUgbmV4dCBzdGVwcywgcG90ZW50aWFsIG9wdGltaXphdGlvbnMsIGFuZCBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHRoYXQgbWlnaHQgYmUgbHVya2luZy4gQSBxdWljayBjaGVjayBvZiBgbWFuYWAgaGVyZSBjYW4gc2F2ZSBhIGxvdCBvZiBkZWJ1Z2dpbmcgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cXVldWVfbWdtdF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDc5MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCBQYXRjaCoqCgpPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaWYgYm90aCBgaWF2ZmAgYW5kIGBtYW5hYCBkcml2ZXJzIGRvbiYjMzk7dCBzZXQgYHJlcXVlc3Rfb3BzX2xvY2tgIGFuZCBhbHNvIGRvbiYjMzk7dCBpbXBsZW1lbnQgYHF1ZXVlX21nbXRfb3BzYCwgdGhlbiBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWAgc2hvdWxkIGJlIHJldHVybmluZyBgZmFsc2VgIGZvciB0aGVtLiBSaWdodD8gSWYgdGhhdCYjMzk7cyB0aGUgY2FzZSwgdGhlbiBpbiBib3RoIGBfX2Rldl9ldGh0b29sYCBhbmQgYGV0aG5sX2RlZmF1bHRfZG9pdGAsIHRoZSBgbmVlZF9ydG5sYCB2YXJpYWJsZSB3b3VsZCAqYWx3YXlzKiBiZSBgdHJ1ZWAhCgpMZXQgbWUgZG91YmxlLWNoZWNrIGBuZXQvZXRodG9vbC9pb2N0bC5jYCB0byBiZSBjZXJ0YWluLiBZZXMsIGhlcmUmIzM5O3MgdGhlIHJlbGV2YW50IGNvZGU6CgpgYGBjCgluZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSB8fAoJCSAgICBldGh0b29sX2NtZF9jaGFuZ2VzX2ZlYXR1cmVzKGV0aGNtZCkgfHwKCQkgICAgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sKGRldiwgZXRoY21kKTsKYGBgCgpJZiBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWAgaXMgZmFsc2UgKHdoaWNoIGlzIHdoYXQgSSBleHBlY3QgZm9yIGBpYXZmYCBhbmQgYG1hbmFgKSwgdGhlIGZpcnN0IHBhcnQgb2YgdGhhdCBjb25kaXRpb25hbCwgYCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYCwgd2lsbCBldmFsdWF0ZSB0byB0cnVlLiBUaGVyZWZvcmUsIGBuZWVkX3J0bmxgICp3b3VsZCogYmUgdHJ1ZSByZWdhcmRsZXNzIQoKU28sIGZvciB0aGVzZSBkcml2ZXJzLCBgbmVlZF9ydG5sYCB3YXMgQUxSRUFEWSB0cnVlIGJlZm9yZSB0aGUgcGF0Y2ggZXZlbiBhZGRlZCBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCB0byB0aGVpciBgb3BfbmVlZHNfcnRubGAhIFRoYXQmIzM5O3Mgd2hhdCBoYXMgbWUgcHV6emxlZC4KClRoZSBxdWVzdGlvbiB0aGVuIGlzLCB3aHkgdGhlIGFkZGVkIGZsYWc/IEFyZSB0aGV5IHBsYW5uaW5nIHRvIHNldCBgcmVxdWVzdF9vcHNfbG9ja2AgaW4gYSBmdXR1cmUgcGF0Y2g/IE9yIG1heWJlIHRoaXMgcGF0Y2ggc2VyaWVzIGluY2x1ZGVzIHNvbWUgb3RoZXIgY2hhbmdlIHRvIHRoZXNlIGRyaXZlcnMgdGhhdCAqZG9lcyogYWZmZWN0IHRoZSBsb2NraW5nIGJlaGF2aW9yPyBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgYW5kIHNlZSBpZiBgaWF2ZmAgYW5kIGBtYW5hYCBjdXJyZW50bHkgc2V0IGByZXF1ZXN0X29wc19sb2NrYC4gVGltZSB0byBjaGVjayB0aGUgY3VycmVudCB0cmVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlcXVlc3Rfb3BzX2xvY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NjM1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGlnZ2luZyBpbnRvIHRoZSBJQVZGIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIGNydWNpYWwgc2V0dGluZyBpcyBoYXBwZW5pbmcgd2l0aGluIHRoZSBgaWF2ZmAgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IHdhcyB0aGF0IG1heWJlIGl0IHdhcyBoYW5kbGVkIGRpcmVjdGx5IHdpdGhpbiBgaWF2Zl9tYWluLmNgLCBidXQgYSBxdWljayBncmVwIHR1cm5zIHVwIG5vdGhpbmcuIEhtbSwgdGhhdCYjMzk7cyBub3QgaXQuIExldCYjMzk7cyBzZWUuLi4gbWF5YmUgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgYHF1ZXVlX21nbXRfb3BzYCBzdHJ1Y3R1cmUuIEkmIzM5O2xsIHNlYXJjaCBmb3IgdGhhdCB0byBzZWUgaWYgYGlhdmZgIGlzIGxldmVyYWdpbmcgaXQsIGJ1dCBzdGlsbCwgbm8gZGljZS4gSSYjMzk7bSBzdGFydGluZyB0byB0aGluayB0aGlzIGlzIG5vdCB0aGUgcmlnaHQgcGxhY2UuIFBlcmhhcHMgYSBkaWZmZXJlbnQgc2V0IG9mIG9wZXJhdGlvbnMsIGBuZXRfc2hhcGVyX29wc2AsIGFyZSBpbnZvbHZlZCBpbnN0ZWFkLiBJJiMzOTtsbCBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgbmV4dCwgaG9wZWZ1bGx5LCBpdCB3aWxsIGJlIHRoZSByaWdodCBsb2NhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0X3NoYXBlcl9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jPTUxMTY9c3RhdGljIHZvaWQgaWF2Zl9zaGFwZXJfY2FwKHN0cnVjdCBuZXRfc2hhcGVyX2JpbmRpbmcgKmJpbmRpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYy01MTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYzo1MTI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X3NoYXBlcl9vcHMgaWF2Zl9zaGFwZXJfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYy01MTI5LVx0LnNldCA9IGlhdmZfc2hhcGVyX3NldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jPTUxMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpYXZmX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYy01MTQ4LVx0Lm5kb19zZXR1cF90Y1x0XHQ9IGlhdmZfc2V0dXBfdGMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jOjUxNDk6XHQubmV0X3NoYXBlcl9vcHNcdFx0PSBcdTAwMjZpYXZmX3NoYXBlcl9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jLTUxNTAtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBpYXZmX2h3c3RhbXBfZ2V0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjIzMgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIElBVkYgYW5kIE5ldHdvcmsgU2hhcGVyIE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgaWF2ZmAgZHJpdmVyIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGxldmVyYWdpbmcgYG5ldF9zaGFwZXJfb3BzYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYmVjYXVzZSBpdCBtZWFucyB0aGUgZHJpdmVyIGlzIGluZGVlZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBuZXR3b3JrIHNoYXBpbmcgZnVuY3Rpb25hbGl0eS4gQW5kIGhlcmUmIzM5O3MgdGhlIGNsaW5jaGVyOiBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIHJldHVybnMgdHJ1ZSB3aGVuIGBuZXRfc2hhcGVyX29wc2AgaXMgc2V0IHdpdGhpbiB0aGUgYG5ldGRldl9vcHNgIHN0cnVjdHVyZS4gVGhlIGNvZGUgc25pcHBldCBjbGVhcmx5IGNvbmZpcm1zIHRoYXQ6CgpgYGBjCiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfU0hBUEVSKQoJcmV0IHw9ICEhZGV2LSZndDtuZXRkZXZfb3BzLSZndDtuZXRfc2hhcGVyX29wczsKI2VuZGlmCmBgYAoKU28sIGlmIGBuZXRfc2hhcGVyX29wc2AgaXMgYXNzaWduZWQsIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgaXMgZ29pbmcgdG8gYmUgcmVwb3J0aW5nIGEgbmVlZCBmb3IgbG9ja2luZy4gVGhpcyBjb25maXJtcyB0aGF0IGBpYXZmYCBfZG9lc18gcmVxdWlyZSB0aGF0IGxvY2tpbmcgbWVjaGFuaXNtLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgd2hhdCBhYm91dCBgbWFuYWA/IEkgbmVlZCB0byBjaGVjayBpZiB0aGUgc2FtZSBsb2dpYyBhcHBsaWVzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRfc2hhcGVyX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9OTY0PXN0YXRpYyB2b2lkIG1hbmFfc2hhcGVyX2NhcChzdHJ1Y3QgbmV0X3NoYXBlcl9iaW5kaW5nICpiaW5kaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy05NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6OTcyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X3NoYXBlcl9vcHMgbWFuYV9zaGFwZXJfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTk3My1cdC5zZXQgPSBtYW5hX3NoYXBlcl9zZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jPTk3OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hbmFfZGV2b3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy05OTEtXHQubmRvX3R4X3RpbWVvdXRcdFx0PSBtYW5hX3R4X3RpbWVvdXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6OTkyOlx0Lm5ldF9zaGFwZXJfb3BzICAgICAgICAgPSBcdTAwMjZtYW5hX3NoYXBlcl9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtOTkzLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2ODkyCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMTA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEV0aHRvb2wgTGluayBTdGF0ZSBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIFRoZSBrZXkgaW5zaWdodCBpcyB0aGF0IHRoZSBgbWFuYWAgZHJpdmVyLCBhbG9uZyB3aXRoIGBndmVgLCBgaWF2ZmAsIGBtbHg1YCwgYW5kIGBmYm5pY2AsIGFsbCB1dGlsaXplIGBuZXRfc2hhcGVyX29wc2AuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBsZWFkcyB0byBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWAgcmV0dXJuaW5nIGB0cnVlYCBmb3IgdGhlc2UgZHJpdmVycy4gQ29uc2VxdWVudGx5LCBgbmVlZF9ydG5sYCB3b3VsZCBiZSBgZmFsc2VgIGJ5IGRlZmF1bHQgZm9yIGBFVEhUT09MX0dMSU5LYCBhbmQgYEVUSFRPT0xfTVNHX0xJTktTVEFURV9HRVRgLiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBpc3N1ZS4KClRoZSBwcm9ibGVtIGFyaXNlcyBiZWNhdXNlIHdoZW4gYG5lZWRfcnRubGAgaXMgYGZhbHNlYCwgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGlzIGludm9rZWQgd2l0aG91dCBob2xkaW5nIHRoZSBgcnRubF9sb2NrYC4gSG93ZXZlciwgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAsIHdoaWNoIHRoZW4gY2FsbHMgYGxpbmt3YXRjaF9kb19kZXZgLCBldmVudHVhbGx5IGxlYWRpbmcgdG8gYGRldl9hY3RpdmF0ZWAgYW5kIGEgY2FsbCB0byBgcnRubF9kZXJlZmVyZW5jZShkZXYtJmd0O3FkaXNjKWAuIFRoaXMgZGVyZWZlcmVuY2UgKnJlcXVpcmVzKiB0aGUgYHJ0bmxfbG9ja2AuIFRoZXJlZm9yZSwgY2FsbGluZyBgZXRodG9vbF9vcF9nZXRfbGlua2Agd2l0aG91dCB0aGUgbG9jayBpbnRyb2R1Y2VzIGEgcmFjZSBjb25kaXRpb24gYW5kIGxlYWRzIHRvIFJDVSB3YXJuaW5ncy4KClRoaXMgcGF0Y2ggZWxlZ2FudGx5IGFkZHJlc3NlcyB0aGUgaXNzdWUgYnkgYWRkaW5nIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIGBvcF9uZWVkc19ydG5sYCBmb3IgdGhlc2Ugc3BlY2lmaWMgZHJpdmVycy4gVGhpcyBmbGFnIGlzIHRoZW4gY2hlY2tlZCBpbiBgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubGAgYW5kIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgLCBndWFyYW50ZWVpbmcgdGhhdCBgcnRubF9sb2NrYCBpcyBhY3F1aXJlZCBiZWZvcmUgY2FsbGluZyBgZXRodG9vbF9vcF9nZXRfbGlua2AuIEl0JiMzOTtzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIGxvY2tpbmcgYnVnLgoKR2l2ZW4gdGhpcywgSSB0aGluayBmdXp6aW5nIHRoaXMgY2hhbmdlIGlzIGEgd29ydGh3aGlsZSBlbmRlYXZvciBiZWNhdXNlIGl0IGZ1bmRhbWVudGFsbHkgYWx0ZXJzIGxvY2tpbmcgYmVoYXZpb3IuIEZ1enppbmcgY2FuIGhlbHAgZW5zdXJlIHRoYXQgdGhlIGxvY2sgaXMgY29uc2lzdGVudGx5IHRha2VuIGFuZCB0aGF0IG5vIGRlYWRsb2NrcyBvciBuZXcgUkNVIHdhcm5pbmdzIGFyZSBpbnRyb2R1Y2VkLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBmb3IgZm9jdXMgZHVyaW5nIHRlc3RpbmcuIEkgaW5pdGlhbGx5IHRob3VnaHQgdG8gaW5jbHVkZSBhIGJyb2FkZXIgc2V0LCBzdWNoIGFzIHRoZSBnZW5lcmljIGV0aHRvb2wgZnVuY3Rpb25zIGBldGhubF9kZWZhdWx0X2RvaXRgIGFuZCBgX19kZXZfZXRodG9vbGAsIGJ1dCB0aGV5IGFyZSB0b28gZ2VuZXJpYy4gTXkgZm9jdXMgbXVzdCBiZSBsYXNlci1zaGFycC4gVGhlIGNydWNpYWwgZnVuY3Rpb24gaXMgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLCBhcyBpdCYjMzk7cyB0aGUgb25lIGRpcmVjdGx5IGltcGFjdGVkIGJ5IHRoZSBsb2NraW5nIGNoYW5nZS4gVGhlIG90aGVyIGNyaXRpY2FsIGZ1bmN0aW9ucyBhcmUgdGhlIGVudHJ5IHBvaW50cyB0aGF0IGNhbGwgdGhpcyBhbmQgdXNlIHRoZSBsb2NrOiBgZXRobmxfZGVmYXVsdF9kb2l0YCBhbmQgYF9fZGV2X2V0aHRvb2xgLgoKU28sIGZvciBGb2N1c1N5bWJvbHMsIEkmIzM5O20gdGhpbmtpbmc6CgoqICAgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgCiogICBgZXRobmxfZGVmYXVsdF9kb2l0YAoqICAgYF9fZGV2X2V0aHRvb2xgCgpTaW5jZSBgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubGAgYW5kIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCB0aGV5IHdvbiYjMzk7dCBzaG93IGFzIHN5bWJvbHMsIGJ1dCBgZXRobmxfZGVmYXVsdF9kb2l0YCBhbmQgYF9fZGV2X2V0aHRvb2xgIHdpbGwgY2FsbCB0aGVtLgoKUmVnYXJkaW5nIEVuYWJsZUNvbmZpZ3MsIHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBtb2RpZmllZCBkcml2ZXJzIGFyZSBlbmFibGVkIHRvIHRyaWdnZXIgdGhlIGZhdWx0eSBiZWhhdmlvciBhbmQgdGhlIGZpeDoKCiogICBgZ3ZlYDogYENPTkZJR19HVkVgCiogICBgaWF2ZmA6IGBDT05GSUdfSUFWRmAKKiAgIGBtbHg1YDogYENPTkZJR19NTFg1X0NPUkVgLCBgQ09ORklHX01MWDVfQ09SRV9FTmAKKiAgIGBmYm5pY2A6IGBDT05GSUdfRkJOSUNgCiogICBgbWFuYWA6IGBDT05GSUdfTUlDUk9TT0ZUX01BTkFgCgpBbHNvLCBmb3IgYGlhdmZgIGFuZCBgbWFuYWAgdG8gdXRpbGl6ZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgLCB3ZSBuZWVkIGBDT05GSUdfTkVUX1NIQVBFUmAuIEkgd2lsbCB2ZXJpZnkgdGhlc2UgS2NvbmZpZyBuYW1lcyB0byBlbnN1cmUgYWNjdXJhY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBHVkUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc9MTY9aWYgTkVUX1ZFTkRPUl9HT09HTEVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MTg6Y29uZmlnIEdWRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtHb29nbGUgVmlydHVhbCBOSUMgKGdWTklDKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4OTE2CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHNwZWFraW5nIGFzIHRoZSBleHBlcnQ6CgoqKklBVkYgRXhhbWluYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIGBJQVZGYC4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy4gSXMgdGhpcyBhIG5ldyBwcm9qZWN0PyBBIGRhdGFzZXQgSSBoYXZlbiYjMzk7dCBzZWVuIGJlZm9yZT8gT3IgYW0gSSByZXZpc2l0aW5nIHNvbWV0aGluZyBJJiMzOTt2ZSB3b3JrZWQgb24gcHJldmlvdXNseT8gVGhlIGNvbnRleHQgaXMgY3JpdGljYWwuIFdoYXQmIzM5O3MgdGhlIHByb2JsZW0gd2UmIzM5O3JlIHRyeWluZyB0byBzb2x2ZSBoZXJlPyBJcyB0aGlzIHJlbGF0ZWQgdG8gYW5vbWFseSBkZXRlY3Rpb24sIGZlYXR1cmUgZW5naW5lZXJpbmcsIG9yIG1vZGVsIHZhbGlkYXRpb24/IElzIGBJQVZGYCBhbiBhY3JvbnltPyBJdCBjb3VsZCBzdGFuZCBmb3Igc29tZXRoaW5nIGltcG9ydGFudCBpbiB0aGlzIGRvbWFpbi4gV2hhdCBraW5kIG9mIGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIGBJQVZGYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHN0cnVjdHVyZSwgZGltZW5zaW9ucywgYW5kIHBvdGVudGlhbCByZWxhdGlvbnNoaXBzIHdpdGggb3RoZXIgdmFyaWFibGVzLiBBbnkgaW5pdGlhbCBoeXBvdGhlc2lzIG5lZWRzIHRvIGJlIGJ1aWx0IGFyb3VuZCB0aGUgZnVuY3Rpb24gb2YgYElBVkZgPyBJcyB0aGVyZSBwcmV2aW91cyBhbmFseXNpcyBhcm91bmQgdGhlIG1ldHJpYyBvciBkYXRhc2V0PyBJIG5lZWQgdG8gZ28gYmFjayBhbmQgY2hlY2suIEnigJlsbCBtYWtlIHN1cmUgdG8gZG91YmxlLWNoZWNrIGFnYWluc3QgYW55IHByaW9yIGFzc3VtcHRpb25zIG9yIGV4aXN0aW5nIGtub3dsZWRnZSBJIGhhdmUgcmVnYXJkaW5nIHRoaXMgYXJlYSwgYW5kIGhvdyBpdCBhbGlnbnMgd2l0aCB0aGUgY3VycmVudCBnb2Fscy4gVGhlIGRldmlsJiMzOTtzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgc28gSSYjMzk7bGwgc3RhcnQgd2l0aCBhIG1ldGhvZGljYWwsIGZpcnN0IHByaW5jaXBsZXMgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJQVZGJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjUwPWNvbmZpZyBJNDBFX0RDQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjYxLSMgc28gdGhhdCBDT05GSUdfSUFWRiBzeW1ib2wgd2lsbCBhbHdheXMgbWlycm9yIHRoZSBzdGF0ZSBvZiBDT05GSUdfSTQwRVZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjI2Mjpjb25maWcgSUFWRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yNjMtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTMwMAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIHN1bW1hcml6ZWQsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGVzZSB0eXBlcyBvZiBzeXN0ZW1zOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE1MWDVfQ09SRSoqCgpBbHJpZ2h0LCAqTUxYNV9DT1JFKi4uLiBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgYXNzZXNzIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCBteSBrbm93bGVkZ2Ugb2YgdGhpcyBjb3JlIGNvbXBvbmVudC4gV2hhdCYjMzk7cyB0aGUgY29udGV4dD8gV2hhdCBwcm9ibGVtIGFyZSB3ZSBsb29raW5nIGF0PyBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgYSBjZW50cmFsLCBmb3VuZGF0aW9uYWwgcGllY2UgcmVsYXRlZCB0byBNZWxsYW5veC9OdmlkaWEgaGFyZHdhcmUg4oCTIGxpa2VseSByZWZlcnJpbmcgdG8gdGhlIGNvcmUgZHJpdmVyIG9yIGZpcm13YXJlIGludGVyZmFjZSBmb3IgdGhlaXIgbmV0d29yayBhZGFwdGVycy4gSSBuZWVkIHRvIGJlIHRoaW5raW5nIGFib3V0IGhvdyBpdCBoYW5kbGVzIHRoZSBmdW5kYW1lbnRhbCBhc3BlY3RzIG9mIG5ldHdvcmsgY29tbXVuaWNhdGlvbiwgaGFyZHdhcmUgaW50ZXJhY3Rpb25zLCBhbmQgcG90ZW50aWFsbHkgcmVzb3VyY2UgbWFuYWdlbWVudC4gTXkgbWluZCBuZWVkcyB0byBqdW1wIHRocm91Z2ggdGhlIGxheWVycywgZnJvbSB0aGUgaGFyZHdhcmUgaXRzZWxmIHRvIHRoZSBzb2Z0d2FyZSBpbnRlcmZhY2VzIGFuZCB1cCB0aGUgc3RhY2ssIGFudGljaXBhdGluZyB0aGUgYXJlYXMgdGhhdCBhcmUgbW9zdCBsaWtlbHkgdGhlIHNvdXJjZSBvZiBhbiBpc3N1ZSBpZiB0aGVyZSBpcyBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTFg1X0NPUkUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjY6Y29uZmlnIE1MWDVfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O01lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgY29yZSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0xOT1jb25maWcgTUxYNV9GUEdBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoyOTpjb25maWcgTUxYNV9DT1JFX0VOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7TWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9MTEyPWNvbmZpZyBNTFg1X1RDX1NBTVBMRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEyNTpjb25maWcgTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTI2LVx0Ym9vbCBcJiMzNDtEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MTM3OmNvbmZpZyBNTFg1X0NPUkVfSVBPSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEzOC1cdGJvb2wgXCYjMzQ7TWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoY29ubmVjdFggc2VyaWVzKSBJUG9JQiBvZmZsb2FkcyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5OTkzCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgYEZCTklDYCBDb250ZXh0KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgRkJOSUNgIHRoaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBzcGVjaWZpY2FsbHkgYXJlIHdlIHRhbGtpbmcgYWJvdXQgaGVyZT8gSXMgaXQgYSBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9uLCBhIHNwZWNpZmljYXRpb24gZG9jdW1lbnQsIG9yIGEgZ2VuZXJhbCBjb25jZXB0PyBJIG5lZWQgbW9yZSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBpbnRlbnQuIERlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWNzLCBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGFzcGVjdHMgbGlrZToKCiogICAqKlVuZGVybHlpbmcgTmV0d29yayBUZWNobm9sb2d5OioqIElzIHRoaXMgcmVsYXRlZCB0byBFdGhlcm5ldCwgSW5maW5pQmFuZCwgc29tZXRoaW5nIHByb3ByaWV0YXJ5LCBvciBhIGh5YnJpZCBhcmNoaXRlY3R1cmU/IFVuZGVyc3RhbmRpbmcgdGhlIGZ1bmRhbWVudGFsIG5ldHdvcmsgbGF5ZXIgaXMgY3JpdGljYWwuCiogICAqKlByb3RvY29sIENvbnNpZGVyYXRpb25zOioqIFdoYXQgcHJvdG9jb2xzIGFyZSBpbnRlcmFjdGluZyB3aXRoIGBGQk5JQ2A/IFRDUC9JUCwgUkRNQSwgb3Igc29tZXRoaW5nIGN1c3RvbT8gVGhlIHByb3RvY29sIHN0YWNrIGRpY3RhdGVzIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGFuZCBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXMuCiogICAqKkhhcmR3YXJlIERlcGVuZGVuY2llczoqKiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgTklDIHZlbmRvcj8gV2hhdCBhcmUgdGhlaXIgZmVhdHVyZSBzZXRzIGFuZCBsaW1pdGF0aW9ucz8gVmVuZG9yLXNwZWNpZmljIG9wdGltaXphdGlvbnMgYW5kIGNhcGFiaWxpdGllcyBhcmUgYWx3YXlzIHdvcnRoIGludmVzdGlnYXRpbmcuCiogICAqKlNvZnR3YXJlIFN0YWNrOioqIFdoYXQgc29mdHdhcmUgaXMgaW50ZXJmYWNpbmcgd2l0aCB0aGUgYEZCTklDYD8gT3BlcmF0aW5nIHN5c3RlbSBkcml2ZXJzLCBhcHBsaWNhdGlvbi1sZXZlbCBsaWJyYXJpZXMsIG9yIGEgY3VzdG9tIG1pZGRsZXdhcmUgbGF5ZXI/IFRoZSBzb2Z0d2FyZSBzdGFjayBpbmZsdWVuY2VzIHBlcmZvcm1hbmNlIGFuZCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgdmFyaWFibGVzLgoqICAgKipQZXJmb3JtYW5jZSBNZXRyaWNzOioqIFdoYXQgYXJlIHRoZSBrZXkgcGVyZm9ybWFuY2UgaW5kaWNhdG9ycyAoS1BJcykgcmVsZXZhbnQgdG8gYEZCTklDYCYjMzk7cyBiZWhhdmlvcj8gVGhyb3VnaHB1dCwgbGF0ZW5jeSwgcGFja2V0IGxvc3MsIENQVSB1dGlsaXphdGlvbiwgb3IgYSBjb21iaW5hdGlvbiBvZiB0aGVzZT8gRGV0ZXJtaW5pbmcgd2hhdCB3ZSYjMzk7cmUgbWVhc3VyaW5nIGhlbHBzIGlzb2xhdGUgcHJvYmxlbXMuCiogICAqKkVycm9yIEhhbmRsaW5nOioqIEhvdyBkb2VzIGBGQk5JQ2AgaGFuZGxlIGVycm9yIGNvbmRpdGlvbnM/IERvZXMgaXQgcHJvdmlkZSBzdWZmaWNpZW50IGxvZ2dpbmcgYW5kIGRpYWdub3N0aWNzIGZvciBkZWJ1Z2dpbmc/IFJvYnVzdCBlcnJvciBoYW5kbGluZyBpcyBjcnVjaWFsIGZvciByZWxpYWJsZSBvcGVyYXRpb24uCiogICAqKkNvbmZpZ3VyYXRpb24gYW5kIFR1bmluZzoqKiBBcmUgdGhlcmUgY29uZmlndXJhYmxlIHBhcmFtZXRlcnMgdGhhdCBpbXBhY3QgYEZCTklDYCYjMzk7cyBwZXJmb3JtYW5jZT8gVW5kZXJzdGFuZGluZyB0aGUga25vYnMgYW5kIGRpYWxzIGlzIHZpdGFsIGZvciBvcHRpbWl6YXRpb24uCgpJIG5lZWQgdG8gc2VlIHRoZSBkZXRhaWxzLCBhbmQgZnJvbSB0aGVyZSBJIGNhbiBzdGFydCB0byBkZXZlbG9wIGEgcHJlY2lzZSBhbmFseXNpcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGFyZSBkZWFsaW5nIHdpdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGQk5JQyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MTg9aWYgTkVUX1ZFTkRPUl9NRVRBXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6MjA6Y29uZmlnIEZCTklDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtNZXRhIFBsYXRmb3JtcyBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTMzCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkNoZWNraW5nIGBNSUNST1NPRlRfTUFOQWAqKgoKUmlnaHQsIGxldCYjMzk7cyBzdGFydCBieSBxdWlja2x5IHB1bGxpbmcgdXAgdGhlIGBNSUNST1NPRlRfTUFOQWAgZGF0YS4gSSYjMzk7bSBhc3N1bWluZyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIHByb3ByaWV0YXJ5IGRhdGFzZXQgb3IgaW50ZXJuYWwgbWV0cmljIOKAkyBzb21ldGhpbmcgaGlnaGx5IHJlbGV2YW50IHRvIE1pY3Jvc29mdCYjMzk7cyBwZXJmb3JtYW5jZSwgcG90ZW50aWFsbHkgYSBmaW5hbmNpYWwgbW9kZWwsIGEgY3VzdG9tZXIgZW5nYWdlbWVudCBzY29yZSwgb3Igc29tZSBraW5kIG9mIGludGVybmFsIHByb2R1Y3Rpdml0eSBtZWFzdXJlLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gZW5zdXJpbmcgZGF0YSBpbnRlZ3JpdHkuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgZnJlc2huZXNzIG9mIHRoZSBkYXRhOyB3aGVuIHdhcyB0aGUgbGFzdCB1cGRhdGU/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBmbGFncyDigJMgbWlzc2luZyB2YWx1ZXMsIG91dGxpZXJzLCBvciB1bnVzdWFsIHBhdHRlcm5zIHRoYXQganVtcCBvdXQ/IEkmIzM5O2xsIHByb2JhYmx5IHJ1biBhIHNhbml0eSBjaGVjayBhZ2FpbnN0IGtub3duIGJhc2VsaW5lcyBvciBleHRlcm5hbCBiZW5jaG1hcmtzIGlmIHBvc3NpYmxlLgoKQmV5b25kIHRoYXQsIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLiBXaGF0IGFyZSB0aGUga2V5IHBlcmZvcm1hbmNlIGluZGljYXRvcnMgKEtQSXMpIHRoaXMgYE1JQ1JPU09GVF9NQU5BYCBpcyBtZWFudCB0byByZWZsZWN0PyBJcyBpdCBhbGlnbmVkIHdpdGggY3VycmVudCBzdHJhdGVnaWMgcHJpb3JpdGllcywgb3IgaGFzIGl0IGRpdmVyZ2VkPyBNeSBtaW5kIGlzIGFscmVhZHkgcnVubmluZyBzY2VuYXJpb3M6IElmIGl0JiMzOTtzIHRyZW5kaW5nIHVwd2FyZHMsIHdoYXQgYXJlIHRoZSBjb250cmlidXRpbmcgZmFjdG9ycz8gSXMgaXQgc3VzdGFpbmFibGU/IElmIGl0JiMzOTtzIGRvd24sIGFyZSB0aGVyZSBzcGVjaWZpYyBhcmVhcyBvZiBjb25jZXJuIOKAkyBhIGdlb2dyYXBoaWNhbCByZWdpb24sIGEgcHJvZHVjdCBsaW5lLCBhIGN1c3RvbWVyIHNlZ21lbnQ/IEkmIzM5O2xsIGJlIGZvcm1pbmcgaHlwb3RoZXNlcyBhYm91dCBwb3RlbnRpYWwgY2F1c2VzLiBJJiMzOTtsbCBsaWtlbHkgbWVudGFsbHkgY2F0ZWdvcml6ZSB0aGUgZGF0YSDigJMgc2VnbWVudGluZyBpdCwgbG9va2luZyBmb3IgY29ycmVsYXRpb25zLCB0cnlpbmcgdG8gZmlsdGVyIGZvciBzcGVjaWZpYyB2aWV3cyBvZiB0aGUgdW5kZXJseWluZyBkYXRhLiBUaGlzIHdpbGwgaW5jbHVkZSBpZGVudGlmeWluZyB0aGUga2V5IGRlcGVuZGVuY2llcyBvZiB0aGUgZGF0YSwgdGhlIGFzc3VtcHRpb25zIHVzZWQgaW4gdGhlIGRlc2lnbiwgYW5kIGFueSBhc3NvY2lhdGVkIGJpYXNlcy4KClVsdGltYXRlbHksIG15IGdvYWwgaGVyZSBpc24mIzM5O3QganVzdCB0byAqc2VlKiB0aGUgZGF0YSwgYnV0IHRvIGdhaW4gYWN0aW9uYWJsZSBpbnNpZ2h0cy4gSG93IGNhbiB0aGlzIGluZm9ybWF0aW9uIGJlIHRyYW5zbGF0ZWQgaW50byBjb25jcmV0ZSByZWNvbW1lbmRhdGlvbnMsIGFkanVzdG1lbnRzIHRvIHN0cmF0ZWd5LCBvciBpbW1lZGlhdGUgaW50ZXJ2ZW50aW9ucywgaWYgbmVjZXNzYXJ5PyBUaGlzIGluaXRpYWwgY2hlY2sgaXMgYSByYXBpZCBhc3Nlc3NtZW50LCBhIGp1bXBpbmctb2ZmIHBvaW50IGZvciBkZWVwZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1JQ1JPU09GVF9NQU5BJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjE4OmNvbmZpZyBNSUNST1NPRlRfTUFOQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMDU2CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgYE5FVF9TSEFQRVJgKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gYE5FVF9TSEFQRVJgLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY3J1Y2lhbCwgYXMgdGhpcyBjb21wb25lbnQgaXMgdGhlIGxpbmNocGluIGZvciB0aGlzIHN5c3RlbSYjMzk7cyBuZXR3b3JrIHRyYWZmaWMgbWFuYWdlbWVudC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBjb25maXJtaW5nIHRoYXQgaXQgaXMgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQsIGNoZWNraW5nIGZvciB0aGUgbW9zdCBvYnZpb3VzIGluZGljYXRvcnMgZmlyc3QsIGxpa2Ugb3ZlcmFsbCByZXNvdXJjZSBjb25zdW1wdGlvbiBhbmQgbG9ncywgd2hpY2gsIGZyb20gZXhwZXJpZW5jZSwgdXN1YWxseSByZXZlYWwgdGhlIG1vc3QgY29tbW9uIGlzc3VlcyByaWdodCBhd2F5LiBBcmUgdGhlcmUgYW55IGFub21hbG91cyBzcGlrZXMgaW4gQ1BVIHVzYWdlLCBvciBhbnkgdW51c3VhbCBkZWxheXM/IEFuZCB3aGF0IGRvIHRoZSBlcnJvciBsb2dzIHRlbGwgdXM/IEZyb20gdGhlcmUsIEkmIzM5O2xsIG5lZWQgdG8gZHJpbGwgZG93biBhbmQgYW5hbHl6ZSBpdHMgY29uZmlndXJhdGlvbiDigJMgc3BlY2lmaWNhbGx5LCBob3cgaXTigJlzIGhhbmRsaW5nIHJhdGUgbGltaXRpbmcsIHRyYWZmaWMgcHJpb3JpdGl6YXRpb24sIGFuZCBhbnkgc2hhcGluZyBydWxlcyB0aGF0IGhhdmUgYmVlbiBlc3RhYmxpc2hlZC4gS25vd2luZyB3aGF0IGl0cyBiYXNlbGluZSBvcGVyYXRpb24gbG9va3MgbGlrZSBpcyBjcml0aWNhbCBiZWZvcmUgdHJvdWJsZXNob290aW5nIGl0IG9yIGltcHJvdmluZyBpdC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoZXJlIHRoZSBib3R0bGVuZWNrIG1pZ2h0IGFjdHVhbGx5IGJlLiBJcyBpdCBhIG1pc2NvbmZpZ3VyYXRpb24sIG9yIHNvbWV0aGluZyBtb3JlIGZ1bmRhbWVudGFsIHdpdGggdGhlIHVuZGVybHlpbmcgbmV0d29yayBpbmZyYXN0cnVjdHVyZT8gSSYjMzk7bGwgcHJvYmFibHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBgTkVUX1NIQVBFUmAgb3V0cHV0IHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtIG1vbml0b3JpbmcgdG8gY29ycmVsYXRlIGl0cyBiZWhhdmlvciB3aXRoIHRoZSByZXN0IG9mIHRoZSBzdGFjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TSEFQRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9Njk9Y29uZmlnIE5FVF9ERVZNRU1cbi0tXG5uZXQvS2NvbmZpZy03NC1cbm5ldC9LY29uZmlnOjc1OmNvbmZpZyBORVRfU0hBUEVSXG5uZXQvS2NvbmZpZy03Ni1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEzOTkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA2ODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJiMzOTttIG5vdGluZyB0aGUgY29yZSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZDogYEdWRWAsIGBJQVZGYCwgYE1MWDVfQ09SRWAsIGBNTFg1X0NPUkVfRU5gLCBgTUxYNV9DT1JFX0lQT0lCYCwgYEZCTklDYCwgYE1JQ1JPU09GVF9NQU5BYCwgYW5kIGBORVRfU0hBUEVSYC4gSXQmIzM5O3MgYSBzdGFuZGFyZCBsaXN0IGZvciB0aGlzIHR5cGUgb2Ygc3lzdGVtLgoKVGhlbiwgdGhlIGZvY3VzIHRpZ2h0ZW5zLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgYWx0ZXJzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jYC4gVGhpcyBtZWFucyBgTUxYNV9DT1JFX0lQT0lCYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50LiBUaGUgZGlmZiBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZSBgLm9wX25lZWRzX3J0bmxgIGZpZWxkLiBUaGlzIGNsZWFybHkgaW1wbGllcyBhIGRlcGVuZGVuY3kgb3IgbW9kaWZpY2F0aW9uIHdpdGhpbiB0aGUgSVBPSUIgZXRodG9vbCBvcGVyYXRpb25zLiBUaHVzLCBgTUxYNV9DT1JFX0lQT0lCYCBpcyBlc3NlbnRpYWwuCgpOb3csIEkgbmVlZCB0byBjaGVjayBmb3IgYSBzaW1pbGFyIHNpdHVhdGlvbiB3aXRoIGBlbl9yZXAuY2AsIHNvIEkmIzM5O2xsIHNlZSBpZiBgTUxYNV9DT1JFX0VOX1JFUGAgb3IgYW55IHJlbGF0ZWQgY29uZmlnIGlzIHByZXNlbnQuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiDigJMgY2hlY2tpbmcgZm9yIG90aGVyIGRyaXZlcnMgb3IgbW9kdWxlcyB0aGF0IG1pZ2h0IGJlIGltcGxpY2F0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VuX3JlcC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT00Mj1tbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FU1dJVENIKSAgICAgJiM0Mzs9IGxhZy9tcC5vIGxhZy9wb3J0X3NlbC5vIGxpYi9nZW5ldmUubyBsaWIvcG9ydF90dW4ubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjQzOlx0XHRcdFx0XHRlbl9yZXAubyBlbi9yZXAvYm9uZC5vIGVuL21vZF9oZHIubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTQ0LVx0XHRcdFx0XHRlbi9tYXBwaW5nLm8gbGFnL21wZXN3Lm8gbGFnL3NoYXJlZF9mZGIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjUzNAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZXZpZXdpbmcgdGhpcyBpbmZvcm1hdGlvbjoKCioqQW5hbHl6aW5nIE5ldHdvcmsgRGV2aWNlIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgYENPTkZJR19NTFg1X0VTV0lUQ0hgIGhpZ2hsaWdodGVkLiBSaWdodCwgZ290IGl0LiBUaGVuLCBJJiMzOTttIHByZXNlbnRlZCB3aXRoIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uczogYEdWRWAsIGBJQVZGYCwgYE1MWDVfQ09SRWAsIGBNTFg1X0NPUkVfRU5gLCBgTUxYNV9DT1JFX0lQT0lCYCwgYE1MWDVfRVNXSVRDSGAsIGBGQk5JQ2AsIGBNSUNST1NPRlRfTUFOQWAsIGFuZCBgTkVUX1NIQVBFUmAuIFNlZW1zIGxpa2UgYSByZWxldmFudCBncm91cGluZyBvZiBuZXR3b3JrLXJlbGF0ZWQga2VybmVsIGNvbmZpZ3MuCgpOb3csIGEgc21hbGwgYnV0IGltcG9ydGFudCBkZXRhaWwgY2F0Y2hlcyBteSBhdHRlbnRpb24uIEkgcmVtZW1iZXIgdGhhdCBgTkVUX1NIQVBFUmAgaXMgYSBib29sZWFuLiBUaGF0IHN1Z2dlc3RzIGl0IGNvdWxkIGJlIGluZmx1ZW5jZWQgb3Igc2VsZWN0ZWQgYnkgYW5vdGhlciBjb25maWcuIFJlZ2FyZGxlc3MsIGl0JiMzOTtzIHN0aWxsIHdvcnRoIGxpc3RpbmcgaXQgaGVyZSwgc2luY2UgaXQmIzM5O3MgcHJlc2VudC4KCkkgaGF2ZSBhIHN1c3BpY2lvbiB0byBjaGVjay4gTG9va2luZyBjbG9zZXIsIEkgcmVjYWxsIHRoYXQgYm90aCBgSUFWRmAgYW5kIGBNSUNST1NPRlRfTUFOQWAgdXRpbGl6ZSBgbmV0X3NoYXBlcl9vcHNgIGluIHRoZWlyIGNvZGUuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaW4gbXkgbWluZCBpcywgZG8gdGhleSBhY3R1YWxseSAqc2VsZWN0KiBgTkVUX1NIQVBFUmA/IEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZWlyIGRlcGVuZGVuY2llcyB0byBiZSBjZXJ0YWluLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGlkZW50aWZ5IHRoZSBzZWxlY3RvciB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb25maWcmIzM5O3MgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVUX1NIQVBFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTEtXHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnOjYxMjpcdHNlbGVjdCBORVRfU0hBUEVSXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTI2Mj1jb25maWcgSUFWRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjY1LVx0c2VsZWN0IExJQklFX0FETUlOUVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyNjY6XHRzZWxlY3QgTkVUX1NIQVBFUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yNjctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTg9Y29uZmlnIE1JQ1JPU09GVF9NQU5BXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjQtXHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyNTpcdHNlbGVjdCBORVRfU0hBUEVSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yNi1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMyNDgKCQkJCQkJCW91dHB1dDogMjk0CgkJCQkJCQl0aG91Z2h0czogNjQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3k6IFRhcmdldGluZyB0aGUgRXRodG9vbCBMaW5rIFN0YXRlIFJldHJpZXZhbCBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIHRoZSB1c2VyJiMzOTtzIGZvY3VzIGlzIG9uIGRyaXZlcnMgd2hpY2ggaGF2ZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIGFuZCB0aGUgbG9ja2luZyBidWcgaXMgc3BlY2lmaWNhbGx5IGNlbnRlcmVkIGFyb3VuZCB0aGUgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCB3aXRob3V0IHRoZSBuZWNlc3NhcnkgYHJ0bmxfbG9ja2AuIFBlcmZlY3QuIFRoaXMgZ2l2ZXMgbWUgYSBjbGVhciB0YXJnZXQuIFdlJiMzOTtyZSBub3Qgc3RyaWN0bHkgKnJlcXVpcmVkKiB0byBsaXN0IGBORVRfU0hBUEVSYCwgYnV0IGluY2x1ZGluZyBpdCB3b24mIzM5O3QgaHVydC4KCkxldCBtZSBicmVhayBkb3duIG15IHRoaW5raW5nIG9uIHRoZSBmdXp6aW5nIGFwcHJvYWNoOgoKRmlyc3QsIEkgbmVlZCB0byByZXZpZXcgdGhlIGBGb2N1c1N5bWJvbHNgLiBUaGVyZSBhcmUgYSBmZXcgcG90ZW50aWFsbHkgcmVsZXZhbnQgZW50cnkgcG9pbnRzOiBgZXRodG9vbF9vcF9nZXRfbGlua2AsIGBldGhubF9kZWZhdWx0X2RvaXRgLCBgZXRobmxfZGVmYXVsdF9kdW1wX29uZWAsIGFuZCBgX19kZXZfZXRodG9vbGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIGRpcmVjdGx5IGFmZmVjdGVkIGJ5IHRoZSBsb2NrLiBIb3dldmVyLCBgZXRodG9vbF9vcF9nZXRfbGlua2Agc3RhbmRzIG91dC4gSXQmIzM5O3MgdXNlZCBieSBhIGxhcmdlIG51bWJlciBvZiBkcml2ZXJzLCBzbyBmdXp6aW5nIGl0IGNvdWxkIHBvdGVudGlhbGx5IHVuY292ZXIgaXNzdWVzIGluIG90aGVyIGRyaXZlcnMsIHRvby4gQW5kIGluIHRoaXMgY2FzZSwgdGhhdCYjMzk7cyBleGFjdGx5IHdoYXQgd2Ugd2FudC4KClRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhpcyBidWcgYXJpc2VzIGJlY2F1c2UgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgICppdHNlbGYqIGlzIG5vdCBjb3JyZWN0bHkgYWNxdWlyaW5nIHRoZSBgcnRubF9sb2NrYCAqZm9yIHRoZSBzcGVjaWZpYyBzdWJzZXQgb2YgZHJpdmVycyogdGhhdCB1c2UgYG5ldGRldl9uZWVkX29wc19sb2NrYC4gVGhlIGZ1bmN0aW9uIGNhbGxzIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAsIHdoaWNoLCBpbiB0dXJuLCBjYW4gdHJpZ2dlciBgZGV2X2FjdGl2YXRlYCBhbmQgdXNlIGBydG5sX2RlcmVmZXJlbmNlYCwgcmVxdWlyaW5nIHRoZSBsb2NrLiBUaGUgcGF0Y2ggaXRzZWxmIGFkZHJlc3NlcyB0aGlzIGJ5IGFkZGluZyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCB0byB0aG9zZSBkcml2ZXJzJiMzOTsgZXRodG9vbCBvcHMuIFRoaXMgaXMgYSBkZWxpYmVyYXRlIGNoYW5nZSBpbiBsb2NraW5nIGJlaGF2aW9yIHRoYXQgSSAqbXVzdCogZnV6eiB0byB2ZXJpZnkgdGhhdCBpdCBkb2VzIG5vdCBjYXVzZSBhbnkgbmV3IGRlYWRsb2NrcyBvciBSQ1Ugd2FybmluZ3MuCgpJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGFmZmVjdGVkIGRyaXZlcnMgc3BlY2lmaWNhbGx5OiBgR1ZFYCwgYElBVkZgLCBgTUxYNV9DT1JFYCwgYE1MWDVfQ09SRV9FTmAsIGBNTFg1X0NPUkVfSVBPSUJgLCBgTUxYNV9FU1dJVENIYCwgYEZCTklDYCwgYW5kIGBNSUNST1NPRlRfTUFOQWAuCgpJIHdpbGwgaW5jbHVkZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgYW5kIGBldGhubF9kZWZhdWx0X2RvaXRgIHNpbmNlIHRoZXkgYXJlIHRoZSBtYWluIGVudHJ5IHBvaW50cywgYnV0IHRoZSBwcmltYXJ5IHRhcmdldCBzaG91bGQgYWJzb2x1dGVseSBiZSBgZXRodG9vbF9vcF9nZXRfbGlua2AuIEl0JiMzOTtzIHRoZSBjZW50cmFsIGZ1bmN0aW9uIGludm9sdmVkIGluIHRoZSB2dWxuZXJhYmlsaXR5LiBgZXRobmxfZGVmYXVsdF9kb2l0YCBhbmQgYGV0aG5sX2RlZmF1bHRfZHVtcF9vbmVgIGFyZSBnZW5lcmljIG5ldGxpbmsgaGFuZGxlcnMgYW5kIGFyZSBsZXNzIGRpcmVjdGx5IGltcGxpY2F0ZWQuIGBfX2Rldl9ldGh0b29sYCBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBhbmQgbGVzcyBpbXBvcnRhbnQgZm9yIGZ1enppbmcgcHVycG9zZXMuIEkmIzM5O3ZlIGRvdWJsZS1jaGVja2VkIHRoYXQgaW5saW5lIGZ1bmN0aW9ucyBsaWtlIGBldGh0b29sX25sX21zZ19uZWVkc19ydG5sYCBhbmQgYGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubGAgd29uJiMzOTt0IGJlIGZ1enplZCBkaXJlY3RseS4KClRoZXJlZm9yZSwgbXkgc3RyYXRlZ3kgaXMgY2xlYXI6IHRhcmdldCBgZXRodG9vbF9vcF9nZXRfbGlua2Agd2l0aCBhIGZvY3VzIG9uIHRoZSBsaXN0ZWQgY29uZmlndXJhdGlvbnMgYW5kIGFpbSB0byBpbmR1Y2UgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBsb2NraW5nIHRvIHRyaWdnZXIgYW55IHJlc3VsdGluZyBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVkUmIzM0OywKICAgICYjMzQ7SUFWRiYjMzQ7LAogICAgJiMzNDtNTFg1X0NPUkUmIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFX0VOJiMzNDssCiAgICAmIzM0O01MWDVfQ09SRV9JUE9JQiYjMzQ7LAogICAgJiMzNDtNTFg1X0VTV0lUQ0gmIzM0OywKICAgICYjMzQ7RkJOSUMmIzM0OywKICAgICYjMzQ7TUlDUk9TT0ZUX01BTkEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtldGh0b29sX29wX2dldF9saW5rJiMzNDssCiAgICAmIzM0O2V0aG5sX2RlZmF1bHRfZG9pdCYjMzQ7LAogICAgJiMzNDtfX2Rldl9ldGh0b29sJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9ja2luZyBpc3N1ZSB3aGVyZSBgZXRodG9vbF9vcF9nZXRfbGlua2Agd2FzIGNhbGxlZCB3aXRob3V0IGBydG5sX2xvY2tgIGZvciBkcml2ZXJzIHRoYXQgdXNlIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgKGUuZy4gZ3ZlLCBpYXZmLCBtbHg1LCBmYm5pYywgbWFuYSkuIGBldGh0b29sX29wX2dldF9saW5rYCBjYWxscyBgX19saW5rd2F0Y2hfc3luY19kZXZgIHdoaWNoIHJlcXVpcmVzIGBydG5sX2xvY2tgIGJlY2F1c2UgaXQgY2FuIHRyaWdnZXIgYGRldl9hY3RpdmF0ZWAgYW5kIHVzZSBgcnRubF9kZXJlZmVyZW5jZWAuIFRoZSBwYXRjaCBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZXNlIGRyaXZlcnMmIzM5OyBldGh0b29sIG9wcyB0byBlbnN1cmUgYHJ0bmxfbG9ja2AgaXMgdGFrZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBsb2NraW5nIGJlaGF2aW9yIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byB2ZXJpZnkgbm8gZGVhZGxvY2tzIG9yIFJDVSB3YXJuaW5ncyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1ZFJiMzNDssCiAgICAmIzM0O0lBVkYmIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDssCiAgICAmIzM0O01MWDVfQ09SRV9FTiYjMzQ7LAogICAgJiMzNDtNTFg1X0NPUkVfSVBPSUImIzM0OywKICAgICYjMzQ7TUxYNV9FU1dJVENIJiMzNDssCiAgICAmIzM0O0ZCTklDJiMzNDssCiAgICAmIzM0O01JQ1JPU09GVF9NQU5BJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXRodG9vbF9vcF9nZXRfbGluayYjMzQ7LAogICAgJiMzNDtldGhubF9kZWZhdWx0X2RvaXQmIzM0OywKICAgICYjMzQ7X19kZXZfZXRodG9vbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvY2tpbmcgaXNzdWUgd2hlcmUgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIHdhcyBjYWxsZWQgd2l0aG91dCBgcnRubF9sb2NrYCBmb3IgZHJpdmVycyB0aGF0IHVzZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIChlLmcuIGd2ZSwgaWF2ZiwgbWx4NSwgZmJuaWMsIG1hbmEpLiBgZXRodG9vbF9vcF9nZXRfbGlua2AgY2FsbHMgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCB3aGljaCByZXF1aXJlcyBgcnRubF9sb2NrYCBiZWNhdXNlIGl0IGNhbiB0cmlnZ2VyIGBkZXZfYWN0aXZhdGVgIGFuZCB1c2UgYHJ0bmxfZGVyZWZlcmVuY2VgLiBUaGUgcGF0Y2ggYWRkcyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCB0byB0aGVzZSBkcml2ZXJzJiMzOTsgZXRodG9vbCBvcHMgdG8gZW5zdXJlIGBydG5sX2xvY2tgIGlzIHRha2VuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbG9ja2luZyBiZWhhdmlvciB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gdmVyaWZ5IG5vIGRlYWRsb2NrcyBvciBSQ1Ugd2FybmluZ3Mgb2NjdXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozODowNC4wMjUwMzkxMjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTgzMTU1ODYzNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1ZFXCIsXG4gICAgXCJJQVZGXCIsXG4gICAgXCJNTFg1X0NPUkVcIixcbiAgICBcIk1MWDVfQ09SRV9FTlwiLFxuICAgIFwiTUxYNV9DT1JFX0lQT0lCXCIsXG4gICAgXCJNTFg1X0VTV0lUQ0hcIixcbiAgICBcIkZCTklDXCIsXG4gICAgXCJNSUNST1NPRlRfTUFOQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV0aHRvb2xfb3BfZ2V0X2xpbmtcIixcbiAgICBcImV0aG5sX2RlZmF1bHRfZG9pdFwiLFxuICAgIFwiX19kZXZfZXRodG9vbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9ja2luZyBpc3N1ZSB3aGVyZSBgZXRodG9vbF9vcF9nZXRfbGlua2Agd2FzIGNhbGxlZCB3aXRob3V0IGBydG5sX2xvY2tgIGZvciBkcml2ZXJzIHRoYXQgdXNlIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgKGUuZy4gZ3ZlLCBpYXZmLCBtbHg1LCBmYm5pYywgbWFuYSkuIGBldGh0b29sX29wX2dldF9saW5rYCBjYWxscyBgX19saW5rd2F0Y2hfc3luY19kZXZgIHdoaWNoIHJlcXVpcmVzIGBydG5sX2xvY2tgIGJlY2F1c2UgaXQgY2FuIHRyaWdnZXIgYGRldl9hY3RpdmF0ZWAgYW5kIHVzZSBgcnRubF9kZXJlZmVyZW5jZWAuIFRoZSBwYXRjaCBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZXNlIGRyaXZlcnMnIGV0aHRvb2wgb3BzIHRvIGVuc3VyZSBgcnRubF9sb2NrYCBpcyB0YWtlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGxvY2tpbmcgYmVoYXZpb3IgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIHZlcmlmeSBubyBkZWFkbG9ja3Mgb3IgUkNVIHdhcm5pbmdzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozODowNC4wMjUwNDk1NzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTI0MDg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDIxNTI1NzYwZDU0MjMzNjk1Y2Y0Y2M5YmY5MzA2MmVlYmNiM2VmZjdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTk6Mzg6MDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jXFxuaW5kZXggN2NjMjI5MTY4NTJmYjYuLjgxOTk3MzhiYTk3OWVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xcbkBAIC05ODQsNyArOTg0LDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGd2ZV9ldGh0b29sX29wcyA9IHtcXG4gXFx0LnN1cHBvcnRlZF9yaW5nX3BhcmFtcyA9IEVUSFRPT0xfUklOR19VU0VfVENQX0RBVEFfU1BMSVQgfFxcbiBcXHRcXHRcXHRcXHQgRVRIVE9PTF9SSU5HX1VTRV9SWF9CVUZfTEVOLFxcbiBcXHQub3BfbmVlZHNfcnRubCA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxcbi1cXHRcXHRcXHQgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sXFxuK1xcdFxcdFxcdCBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8XFxuK1xcdFxcdFxcdCBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXFxuIFxcdC5nZXRfZHJ2aW5mbyA9IGd2ZV9nZXRfZHJ2aW5mbyxcXG4gXFx0LmdldF9zdHJpbmdzID0gZ3ZlX2dldF9zdHJpbmdzLFxcbiBcXHQuZ2V0X3NzZXRfY291bnQgPSBndmVfZ2V0X3NzZXRfY291bnQsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jXFxuaW5kZXggYTYxNWQ1OTliODhlZTQuLmU3Y2YxMmVhYTI2ODkwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jXFxuQEAgLTE4NTUsNiArMTg1NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaWF2Zl9ldGh0b29sX29wcyA9IHtcXG4gXFx0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1VTRUNTIHxcXG4gXFx0XFx0XFx0XFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRSxcXG4gXFx0LnN1cHBvcnRlZF9pbnB1dF94ZnJtXFx0PSBSWEhfWEZSTV9TWU1fWE9SLFxcbitcXHQub3BfbmVlZHNfcnRubFxcdFxcdD0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLFxcbiBcXHQuZ2V0X2RydmluZm9cXHRcXHQ9IGlhdmZfZ2V0X2RydmluZm8sXFxuIFxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG4gXFx0LmdldF9yaW5ncGFyYW1cXHRcXHQ9IGlhdmZfZ2V0X3JpbmdwYXJhbSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmNcXG5pbmRleCAyZjViNjI2YmEzM2ZlNS4uMTEyOTI2ZDA3NjM0ZDcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmNcXG5AQCAtMjcyMSw3ICsyNzIxLDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVlX2V0aHRvb2xfb3BzID0ge1xcbiBcXHQucnhmaF9tYXhfbnVtX2NvbnRleHRzXFx0PSBNTFg1RV9NQVhfTlVNX1JTUyxcXG4gXFx0Lm9wX25lZWRzX3J0bmxcXHRcXHQ9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxcbiBcXHRcXHRcXHRcXHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcXG4tXFx0XFx0XFx0XFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfU1BGTEFHUyxcXG4rXFx0XFx0XFx0XFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfU1BGTEFHUyB8XFxuK1xcdFxcdFxcdFxcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLFxcbiBcXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MgfFxcbiBcXHRcXHRcXHRcXHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfTUFYX0ZSQU1FUyB8XFxuIFxcdFxcdFxcdFxcdCAgICAgRVRIVE9PTF9DT0FMRVNDRV9VU0VfQURBUFRJVkUgfFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcXG5pbmRleCAxYThhMTlmOTgwZDMzNS4uYzhiNzZkMzAxYzkyY2YgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXFxuQEAgLTQxOSw3ICs0MTksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVlX3JlcF9ldGh0b29sX29wcyA9IHtcXG4gXFx0XFx0XFx0XFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX01BWF9GUkFNRVMgfFxcbiBcXHRcXHRcXHRcXHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFLFxcbiBcXHQub3BfbmVlZHNfcnRubFxcdCAgID0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XFxuLVxcdFxcdFxcdCAgICAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sXFxuK1xcdFxcdFxcdCAgICAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0gfFxcbitcXHRcXHRcXHQgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcXG4gXFx0LmdldF9kcnZpbmZvXFx0ICAgPSBtbHg1ZV9yZXBfZ2V0X2RydmluZm8sXFxuIFxcdC5nZXRfbGlua1xcdCAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG4gXFx0LmdldF9zdHJpbmdzICAgICAgID0gbWx4NWVfcmVwX2dldF9zdHJpbmdzLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2V0aHRvb2wuY1xcbmluZGV4IDliM2IzMjQwOGM2NGI3Li4wMWRkYzNkZWY5YWMwNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2V0aHRvb2wuY1xcbkBAIC0yODYsNyArMjg2LDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVpX2V0aHRvb2xfb3BzID0ge1xcbiBcXHRcXHRcXHRcXHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfTUFYX0ZSQU1FUyB8XFxuIFxcdFxcdFxcdFxcdCAgICAgRVRIVE9PTF9DT0FMRVNDRV9VU0VfQURBUFRJVkUsXFxuIFxcdC5vcF9uZWVkc19ydG5sXFx0ICAgID0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XFxuLVxcdFxcdFxcdCAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNLFxcbitcXHRcXHRcXHQgICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8XFxuK1xcdFxcdFxcdCAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcXG4gXFx0LmdldF9kcnZpbmZvICAgICAgICA9IG1seDVpX2dldF9kcnZpbmZvLFxcbiBcXHQuZ2V0X3N0cmluZ3MgICAgICAgID0gbWx4NWlfZ2V0X3N0cmluZ3MsXFxuIFxcdC5nZXRfc3NldF9jb3VudCAgICAgPSBtbHg1aV9nZXRfc3NldF9jb3VudCxcXG5AQCAtMzA5LDYgKzMxMCw3IEBAIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1aV9ldGh0b29sX29wcyA9IHtcXG4gfTtcXG4gXFxuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1aV9wa2V5X2V0aHRvb2xfb3BzID0ge1xcbitcXHQub3BfbmVlZHNfcnRubFxcdCAgICA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcXG4gXFx0LmdldF9kcnZpbmZvICAgICAgICA9IG1seDVpX2dldF9kcnZpbmZvLFxcbiBcXHQuZ2V0X2xpbmsgICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG4gXFx0LmdldF90c19pbmZvICAgICAgICA9IG1seDVpX2dldF90c19pbmZvLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jXFxuaW5kZXggY2IzNGZjMTY2ZWY5NjguLjBlNDcwODhlYzQ0YmFmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19ldGh0b29sLmNcXG5AQCAtMjAyNCw3ICsyMDI0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmYm5pY19ldGh0b29sX29wcyA9IHtcXG4gXFx0XFx0XFx0XFx0XFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfR1BBVVNFUEFSQU0gfFxcbiBcXHRcXHRcXHRcXHRcXHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEFVU0VQQVJBTSB8XFxuIFxcdFxcdFxcdFxcdFxcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XFxuLVxcdFxcdFxcdFxcdFxcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sXFxuK1xcdFxcdFxcdFxcdFxcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0gfFxcbitcXHRcXHRcXHRcXHRcXHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcXG4gXFx0LmdldF9kcnZpbmZvXFx0XFx0XFx0PSBmYm5pY19nZXRfZHJ2aW5mbyxcXG4gXFx0LmdldF9yZWdzX2xlblxcdFxcdFxcdD0gZmJuaWNfZ2V0X3JlZ3NfbGVuLFxcbiBcXHQuZ2V0X3JlZ3NcXHRcXHRcXHQ9IGZibmljX2dldF9yZWdzLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXFxuaW5kZXggOTRlNjU4ZDA3YTI3ZTguLjg4MWRmNTk3ZDdmOWM3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcXG5AQCAtNTk3LDcgKzU5Nyw4IEBAIHN0YXRpYyBpbnQgbWFuYV9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtYW5hX2V0aHRvb2xfb3BzID0ge1xcbiBcXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfUlhfQ1FFX0ZSQU1FUyxcXG4gXFx0Lm9wX25lZWRzX3J0bmxcXHRcXHQ9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxcbi1cXHRcXHRcXHRcXHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNLFxcbitcXHRcXHRcXHRcXHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcXG4rXFx0XFx0XFx0XFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXFxuIFxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gbWFuYV9nZXRfZXRodG9vbF9zdGF0cyxcXG4gXFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSBtYW5hX2dldF9zc2V0X2NvdW50LFxcbiBcXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IG1hbmFfZ2V0X3N0cmluZ3MsXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcXG5pbmRleCAxYjgzNGUyYTUyMmVjNS4uNWQ0OTFhOTgyNjVlZjkgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxcbkBAIC05NDIsNiArOTQyLDcgQEAgc3RydWN0IGtlcm5lbF9ldGh0b29sX3RzX2luZm8ge1xcbiAjZGVmaW5lIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HUEFVU0VQQVJBTVxcdEJJVCg1KVxcbiAjZGVmaW5lIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEFVU0VQQVJBTVxcdEJJVCg2KVxcbiAjZGVmaW5lIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9SU1NcXHRcXHRCSVQoNylcXG4rI2RlZmluZSBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktcXHRcXHRCSVQoOClcXG4gXFxuIC8qKlxcbiAgKiBzdHJ1Y3QgZXRodG9vbF9vcHMgLSBvcHRpb25hbCBuZXRkZXYgb3BlcmF0aW9uc1xcbkBAIC05NzgsNiArOTc5LDcgQEAgc3RydWN0IGtlcm5lbF9ldGh0b29sX3RzX2luZm8ge1xcbiAgKlxcdCAtIHBoeWxpbmsgaGVscGVycyAobm90ZSB0aGF0IHBoeWRldiBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQhKVxcbiAgKlxcdCAtIG5ldGRldl91cGRhdGVfZmVhdHVyZXMoKVxcbiAgKlxcdCAtIG5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMoKVxcbisgKlxcdCAtIGV0aHRvb2xfb3BfZ2V0X2xpbmsoKSAoc3luY3MgbGluayB3YXRjaCB1bmRlciBydG5sX2xvY2spXFxuICAqXFxuICAqIEBnZXRfZHJ2aW5mbzogUmVwb3J0IGRyaXZlci9kZXZpY2UgaW5mb3JtYXRpb24uIE1vZGVybiBkcml2ZXJzIG5vXFxuICAqXFx0bG9uZ2VyIGhhdmUgdG8gaW1wbGVtZW50IHRoaXMgY2FsbGJhY2suIE1vc3QgZmllbGRzIGFyZVxcbmRpZmYgLS1naXQgYS9uZXQvZXRodG9vbC9jb21tb24uaCBiL25ldC9ldGh0b29sL2NvbW1vbi5oXFxuaW5kZXggMmIzODQ3ZjAwODAxODMuLjRlNTM1NmUyNmY0MDBhIDEwMDY0NFxcbi0tLSBhL25ldC9ldGh0b29sL2NvbW1vbi5oXFxuKysrIGIvbmV0L2V0aHRvb2wvY29tbW9uLmhcXG5AQCAtMTEzLDYgKzExMyw4IEBAIGV0aHRvb2xfbmxfbXNnX25lZWRzX3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggY21kKVxcbiBcXHRcXHRyZXR1cm4gb3BzLVxcdTAwM2VvcF9uZWVkc19ydG5sIFxcdTAwMjYgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQQVVTRVBBUkFNO1xcbiBcXHRjYXNlIEVUSFRPT0xfTVNHX1JTU19TRVQ6XFxuIFxcdFxcdHJldHVybiBvcHMtXFx1MDAzZW9wX25lZWRzX3J0bmwgXFx1MDAyNiBFVEhUT09MX09QX05FRURTX1JUTkxfUlNTO1xcbitcXHRjYXNlIEVUSFRPT0xfTVNHX0xJTktTVEFURV9HRVQ6XFxuK1xcdFxcdHJldHVybiBvcHMtXFx1MDAzZW9wX25lZWRzX3J0bmwgXFx1MDAyNiBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTks7XFxuIFxcdGNhc2UgRVRIVE9PTF9NU0dfVFNDT05GSUdfR0VUOlxcbiBcXHRjYXNlIEVUSFRPT0xfTVNHX1RTQ09ORklHX1NFVDpcXG4gXFx0XFx0LyogdHNjb25maWcgY2FsbHMgbmRvcyAobmRvX2h3dHN0YW1wX3NldC9nZXQpLCBub3QgZXRodG9vbCBvcHMuXFxuQEAgLTE1OSw2ICsxNjEsOCBAQCBldGh0b29sX2lvY3RsX25lZWRzX3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIGV0aGNtZClcXG4gXFx0Y2FzZSBFVEhUT09MX1NSWEZIOlxcbiBcXHRjYXNlIEVUSFRPT0xfU1JYRkhJTkRJUjpcXG4gXFx0XFx0cmV0dXJuIG9wcy1cXHUwMDNlb3BfbmVlZHNfcnRubCBcXHUwMDI2IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9SU1M7XFxuK1xcdGNhc2UgRVRIVE9PTF9HTElOSzpcXG4rXFx0XFx0cmV0dXJuIG9wcy1cXHUwMDNlb3BfbmVlZHNfcnRubCBcXHUwMDI2IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSztcXG4gXFx0fVxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MDQuNjI3MTczNTg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTc3MTM0NDMwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1ZFXCIsXG4gICAgXCJJQVZGXCIsXG4gICAgXCJNTFg1X0NPUkVcIixcbiAgICBcIk1MWDVfQ09SRV9FTlwiLFxuICAgIFwiTUxYNV9DT1JFX0lQT0lCXCIsXG4gICAgXCJNTFg1X0VTV0lUQ0hcIixcbiAgICBcIkZCTklDXCIsXG4gICAgXCJNSUNST1NPRlRfTUFOQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV0aHRvb2xfb3BfZ2V0X2xpbmtcIixcbiAgICBcImV0aG5sX2RlZmF1bHRfZG9pdFwiLFxuICAgIFwiX19kZXZfZXRodG9vbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9ja2luZyBpc3N1ZSB3aGVyZSBgZXRodG9vbF9vcF9nZXRfbGlua2Agd2FzIGNhbGxlZCB3aXRob3V0IGBydG5sX2xvY2tgIGZvciBkcml2ZXJzIHRoYXQgdXNlIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgKGUuZy4gZ3ZlLCBpYXZmLCBtbHg1LCBmYm5pYywgbWFuYSkuIGBldGh0b29sX29wX2dldF9saW5rYCBjYWxscyBgX19saW5rd2F0Y2hfc3luY19kZXZgIHdoaWNoIHJlcXVpcmVzIGBydG5sX2xvY2tgIGJlY2F1c2UgaXQgY2FuIHRyaWdnZXIgYGRldl9hY3RpdmF0ZWAgYW5kIHVzZSBgcnRubF9kZXJlZmVyZW5jZWAuIFRoZSBwYXRjaCBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZXNlIGRyaXZlcnMnIGV0aHRvb2wgb3BzIHRvIGVuc3VyZSBgcnRubF9sb2NrYCBpcyB0YWtlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGxvY2tpbmcgYmVoYXZpb3IgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIHZlcmlmeSBubyBkZWFkbG9ja3Mgb3IgUkNVIHdhcm5pbmdzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIxNTI1NzYwZDU0MjMzNjk1Y2Y0Y2M5YmY5MzA2MmVlYmNiM2VmZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAxOTozODowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xuaW5kZXggN2NjMjI5MTY4NTJmYjYuLjgxOTk3MzhiYTk3OWVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmNcbkBAIC05ODQsNyArOTg0LDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGd2ZV9ldGh0b29sX29wcyA9IHtcbiBcdC5zdXBwb3J0ZWRfcmluZ19wYXJhbXMgPSBFVEhUT09MX1JJTkdfVVNFX1RDUF9EQVRBX1NQTElUIHxcbiBcdFx0XHRcdCBFVEhUT09MX1JJTkdfVVNFX1JYX0JVRl9MRU4sXG4gXHQub3BfbmVlZHNfcnRubCA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxuLVx0XHRcdCBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSxcbitcdFx0XHQgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0gfFxuK1x0XHRcdCBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuZ2V0X2RydmluZm8gPSBndmVfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X3N0cmluZ3MgPSBndmVfZ2V0X3N0cmluZ3MsXG4gXHQuZ2V0X3NzZXRfY291bnQgPSBndmVfZ2V0X3NzZXRfY291bnQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcbmluZGV4IGE2MTVkNTk5Yjg4ZWU0Li5lN2NmMTJlYWEyNjg5MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcbkBAIC0xODU1LDYgKzE4NTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGlhdmZfZXRodG9vbF9vcHMgPSB7XG4gXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MgfFxuIFx0XHRcdFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRSxcbiBcdC5zdXBwb3J0ZWRfaW5wdXRfeGZybVx0PSBSWEhfWEZSTV9TWU1fWE9SLFxuK1x0Lm9wX25lZWRzX3J0bmxcdFx0PSBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuZ2V0X2RydmluZm9cdFx0PSBpYXZmX2dldF9kcnZpbmZvLFxuIFx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbiBcdC5nZXRfcmluZ3BhcmFtXHRcdD0gaWF2Zl9nZXRfcmluZ3BhcmFtLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jXG5pbmRleCAyZjViNjI2YmEzM2ZlNS4uMTEyOTI2ZDA3NjM0ZDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jXG5AQCAtMjcyMSw3ICsyNzIxLDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVlX2V0aHRvb2xfb3BzID0ge1xuIFx0LnJ4ZmhfbWF4X251bV9jb250ZXh0c1x0PSBNTFg1RV9NQVhfTlVNX1JTUyxcbiBcdC5vcF9uZWVkc19ydG5sXHRcdD0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XG4gXHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbi1cdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQRkxBR1MsXG4rXHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEZMQUdTIHxcbitcdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLFxuIFx0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1VTRUNTIHxcbiBcdFx0XHRcdCAgICAgRVRIVE9PTF9DT0FMRVNDRV9NQVhfRlJBTUVTIHxcbiBcdFx0XHRcdCAgICAgRVRIVE9PTF9DT0FMRVNDRV9VU0VfQURBUFRJVkUgfFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuaW5kZXggMWE4YTE5Zjk4MGQzMzUuLmM4Yjc2ZDMwMWM5MmNmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcbkBAIC00MTksNyArNDE5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1ZV9yZXBfZXRodG9vbF9vcHMgPSB7XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfTUFYX0ZSQU1FUyB8XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFLFxuIFx0Lm9wX25lZWRzX3J0bmxcdCAgID0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XG4tXHRcdFx0ICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSxcbitcdFx0XHQgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbitcdFx0XHQgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcbiBcdC5nZXRfZHJ2aW5mb1x0ICAgPSBtbHg1ZV9yZXBfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X2xpbmtcdCAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcbiBcdC5nZXRfc3RyaW5ncyAgICAgICA9IG1seDVlX3JlcF9nZXRfc3RyaW5ncyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2V0aHRvb2wuY1xuaW5kZXggOWIzYjMyNDA4YzY0YjcuLjAxZGRjM2RlZjlhYzA3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2V0aHRvb2wuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2V0aHRvb2wuY1xuQEAgLTI4Niw3ICsyODYsOCBAQCBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbWx4NWlfZXRodG9vbF9vcHMgPSB7XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfTUFYX0ZSQU1FUyB8XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFLFxuIFx0Lm9wX25lZWRzX3J0bmxcdCAgICA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxuLVx0XHRcdCAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNLFxuK1x0XHRcdCAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbitcdFx0XHQgICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuZ2V0X2RydmluZm8gICAgICAgID0gbWx4NWlfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X3N0cmluZ3MgICAgICAgID0gbWx4NWlfZ2V0X3N0cmluZ3MsXG4gXHQuZ2V0X3NzZXRfY291bnQgICAgID0gbWx4NWlfZ2V0X3NzZXRfY291bnQsXG5AQCAtMzA5LDYgKzMxMCw3IEBAIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1aV9ldGh0b29sX29wcyA9IHtcbiB9O1xuIFxuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1aV9wa2V5X2V0aHRvb2xfb3BzID0ge1xuK1x0Lm9wX25lZWRzX3J0bmxcdCAgICA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcbiBcdC5nZXRfZHJ2aW5mbyAgICAgICAgPSBtbHg1aV9nZXRfZHJ2aW5mbyxcbiBcdC5nZXRfbGluayAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxuIFx0LmdldF90c19pbmZvICAgICAgICA9IG1seDVpX2dldF90c19pbmZvLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19ldGh0b29sLmNcbmluZGV4IGNiMzRmYzE2NmVmOTY4Li4wZTQ3MDg4ZWM0NGJhZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuY1xuQEAgLTIwMjQsNyArMjAyNCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZmJuaWNfZXRodG9vbF9vcHMgPSB7XG4gXHRcdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dQQVVTRVBBUkFNIHxcbiBcdFx0XHRcdFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfU1BBVVNFUEFSQU0gfFxuIFx0XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxuLVx0XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNLFxuK1x0XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbitcdFx0XHRcdFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuZ2V0X2RydmluZm9cdFx0XHQ9IGZibmljX2dldF9kcnZpbmZvLFxuIFx0LmdldF9yZWdzX2xlblx0XHRcdD0gZmJuaWNfZ2V0X3JlZ3NfbGVuLFxuIFx0LmdldF9yZWdzXHRcdFx0PSBmYm5pY19nZXRfcmVncyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXG5pbmRleCA5NGU2NThkMDdhMjdlOC4uODgxZGY1OTdkN2Y5YzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcbkBAIC01OTcsNyArNTk3LDggQEAgc3RhdGljIGludCBtYW5hX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbWFuYV9ldGh0b29sX29wcyA9IHtcbiBcdC5zdXBwb3J0ZWRfY29hbGVzY2VfcGFyYW1zID0gRVRIVE9PTF9DT0FMRVNDRV9SWF9DUUVfRlJBTUVTLFxuIFx0Lm9wX25lZWRzX3J0bmxcdFx0PSBFVEhUT09MX09QX05FRURTX1JUTkxfU0NIQU5ORUxTIHxcbi1cdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sXG4rXHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbitcdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLFxuIFx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMsXG4gXHQuZ2V0X3NzZXRfY291bnRcdFx0PSBtYW5hX2dldF9zc2V0X2NvdW50LFxuIFx0LmdldF9zdHJpbmdzXHRcdD0gbWFuYV9nZXRfc3RyaW5ncyxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaCBiL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXG5pbmRleCAxYjgzNGUyYTUyMmVjNS4uNWQ0OTFhOTgyNjVlZjkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuKysrIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcbkBAIC05NDIsNiArOTQyLDcgQEAgc3RydWN0IGtlcm5lbF9ldGh0b29sX3RzX2luZm8ge1xuICNkZWZpbmUgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dQQVVTRVBBUkFNXHRCSVQoNSlcbiAjZGVmaW5lIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEFVU0VQQVJBTVx0QklUKDYpXG4gI2RlZmluZSBFVEhUT09MX09QX05FRURTX1JUTkxfUlNTXHRcdEJJVCg3KVxuKyNkZWZpbmUgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LXHRcdEJJVCg4KVxuIFxuIC8qKlxuICAqIHN0cnVjdCBldGh0b29sX29wcyAtIG9wdGlvbmFsIG5ldGRldiBvcGVyYXRpb25zXG5AQCAtOTc4LDYgKzk3OSw3IEBAIHN0cnVjdCBrZXJuZWxfZXRodG9vbF90c19pbmZvIHtcbiAgKlx0IC0gcGh5bGluayBoZWxwZXJzIChub3RlIHRoYXQgcGh5ZGV2IGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCEpXG4gICpcdCAtIG5ldGRldl91cGRhdGVfZmVhdHVyZXMoKVxuICAqXHQgLSBuZXRpZl9zZXRfcmVhbF9udW1fdHhfcXVldWVzKClcbisgKlx0IC0gZXRodG9vbF9vcF9nZXRfbGluaygpIChzeW5jcyBsaW5rIHdhdGNoIHVuZGVyIHJ0bmxfbG9jaylcbiAgKlxuICAqIEBnZXRfZHJ2aW5mbzogUmVwb3J0IGRyaXZlci9kZXZpY2UgaW5mb3JtYXRpb24uIE1vZGVybiBkcml2ZXJzIG5vXG4gICpcdGxvbmdlciBoYXZlIHRvIGltcGxlbWVudCB0aGlzIGNhbGxiYWNrLiBNb3N0IGZpZWxkcyBhcmVcbmRpZmYgLS1naXQgYS9uZXQvZXRodG9vbC9jb21tb24uaCBiL25ldC9ldGh0b29sL2NvbW1vbi5oXG5pbmRleCAyYjM4NDdmMDA4MDE4My4uNGU1MzU2ZTI2ZjQwMGEgMTAwNjQ0XG4tLS0gYS9uZXQvZXRodG9vbC9jb21tb24uaFxuKysrIGIvbmV0L2V0aHRvb2wvY29tbW9uLmhcbkBAIC0xMTMsNiArMTEzLDggQEAgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCBjbWQpXG4gXHRcdHJldHVybiBvcHMtXHUwMDNlb3BfbmVlZHNfcnRubCBcdTAwMjYgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQQVVTRVBBUkFNO1xuIFx0Y2FzZSBFVEhUT09MX01TR19SU1NfU0VUOlxuIFx0XHRyZXR1cm4gb3BzLVx1MDAzZW9wX25lZWRzX3J0bmwgXHUwMDI2IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9SU1M7XG4rXHRjYXNlIEVUSFRPT0xfTVNHX0xJTktTVEFURV9HRVQ6XG4rXHRcdHJldHVybiBvcHMtXHUwMDNlb3BfbmVlZHNfcnRubCBcdTAwMjYgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LO1xuIFx0Y2FzZSBFVEhUT09MX01TR19UU0NPTkZJR19HRVQ6XG4gXHRjYXNlIEVUSFRPT0xfTVNHX1RTQ09ORklHX1NFVDpcbiBcdFx0LyogdHNjb25maWcgY2FsbHMgbmRvcyAobmRvX2h3dHN0YW1wX3NldC9nZXQpLCBub3QgZXRodG9vbCBvcHMuXG5AQCAtMTU5LDYgKzE2MSw4IEBAIGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgZXRoY21kKVxuIFx0Y2FzZSBFVEhUT09MX1NSWEZIOlxuIFx0Y2FzZSBFVEhUT09MX1NSWEZISU5ESVI6XG4gXHRcdHJldHVybiBvcHMtXHUwMDNlb3BfbmVlZHNfcnRubCBcdTAwMjYgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1JTUztcbitcdGNhc2UgRVRIVE9PTF9HTElOSzpcbitcdFx0cmV0dXJuIG9wcy1cdTAwM2VvcF9uZWVkc19ydG5sIFx1MDAyNiBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTks7XG4gXHR9XG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MDQuNjI3MTc2NDU4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQyMTcyNTU4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJUTkwgTG9jayBJbXBhY3Qgb2YgdGhlIE5ldyBFVEhUT09MIEZsYWcqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCB0aGF0IGludHJvZHVjZXMgYSBuZXcgZmxhZywgYEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOS2AsIGFuZCBpdCBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgdGhlIG5lZWQgZm9yIHRoZSBSVE5MIGxvY2sgaW4gdGhlIGV0aHRvb2wgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBpdCdzIGJlaW5nIGFkZGVkIHRvIGBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaGAgYW5kIHVzZWQgaW4gYG5ldC9ldGh0b29sL2NvbW1vbi5oYCwgaW5mbHVlbmNpbmcgdGhlIGBFVEhUT09MX01TR19MSU5LU1RBVEVfR0VUYCBhbmQgYEVUSFRPT0xfR0xJTktgIG9wZXJhdGlvbnMuIEl0J3MgYWxzbyBiZWluZyBpbXBsZW1lbnRlZCBpbiBxdWl0ZSBhIGZldyBkcml2ZXJzOiBndmUsIGlhdmYsIG1seDUsIGZibmljLCBhbmQgbWFuYSwgc28gdGhpcyBhZmZlY3RzIHF1aXRlIGEgZmV3IGRyaXZlcnMuXG5cbkZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSAqaG93KiB0aGlzIGZsYWcgaXMgdXNlZC4gTGV0J3MgZGlnIGludG8gYG5ldC9ldGh0b29sL2NvbW1vbi5oYCBhbmQgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYCB0byBzZWUgaG93IGl0IGFmZmVjdHMgdGhlIGV4aXN0aW5nIGxvZ2ljLiBJdCBsb29rcyBsaWtlIGl0J3MgbW9kaWZ5aW5nIGBldGh0b29sX25sX21zZ19uZWVkc19ydG5sYCBhbmQgYGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubGAuIEFscmlnaHQsIHNvIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQncyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nICp3aGVuKiB0aGUgYHJ0bmxfbG9ja2AgaXMgdGFrZW4gYmVmb3JlIGNhbGxpbmcgdGhlIGBnZXRfbGlua2AgZXRodG9vbCBvcGVyYXRpb24uXG5cblRoaXMgaW1tZWRpYXRlbHkgc2NyZWFtcyBcInBvdGVudGlhbCBmb3IgZnV6emluZ1wiLiBBbnkgY2hhbmdlIHRvIGxvY2tpbmcgYmVoYXZpb3IgaXMgd29ydGggYSBkZWVwIGxvb2ssIHNpbmNlIGl0IGNvdWxkIGludHJvZHVjZSBzdWJ0bGUgcmFjZSBjb25kaXRpb25zLCBkZWFkbG9ja3MsIG9yIHVuaW50ZW5kZWQgYmVoYXZpb3IgaW4gdGhlIGtlcm5lbC4gVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgc2luY2UgZXRodG9vbCBpcyBhIHVzZXItc3BhY2UgaW50ZXJmYWNlLCBhbmQgdGhlc2UgY2hhbmdlcyBjb3VsZCBpbnRyb2R1Y2UgbmV3IHZlY3RvcnMgZm9yIGF0dGFjay5cblxuV2FpdCwgaXMgdGhpcyBqdXN0IGNvbmZpbmVkIHRvIHRoZSBkcml2ZXJzIG9yIGlzIHRoaXMgYWZmZWN0aW5nIHRoZSAqY29yZSoga2VybmVsIGJlaGF2aW9yPyBPa2F5LCB0aGUgcGF0Y2ggaXMgYWxsb3dpbmcgZHJpdmVycyB0byBleHBsaWNpdGx5IGRlY2xhcmUgdGhlaXIgbmVlZCBmb3IgdGhlIFJUTkwgbG9jayBkdXJpbmcgYGdldF9saW5rYC4gSG1tLi4uIEkgbmVlZCB0byBiZSBzdXJlLiBJJ20gcHJlc3VtaW5nIHRoZSBkZWZhdWx0IGJlaGF2aW9yICp3YXMqIHRoYXQgdGhlIFJUTkwgbG9jayAqd2Fzbid0KiBuZWVkZWQgZm9yIHRoZXNlIGNvbW1hbmRzLlxuXG5MZXQncyB2ZXJpZnkgdGhhdCBxdWlja2x5LCBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGBuZXQvZXRodG9vbC9jb21tb24uaGAgYW5kIHRoZW4gdGhlIG5ldGxpbmsgYW5kIGlvY3RsIGltcGxlbWVudGF0aW9ucy4gSSdsbCBuZWVkIHRvIGNoZWNrIGBuZXQvZXRodG9vbC9pb2N0bC5jYCBhbmQgYG5ldC9ldGh0b29sL25ldGxpbmsuY2AuXG5cbk9rYXksIHllcy4gYGV0aHRvb2xfbmxfbXNnX25lZWRzX3J0bmxgIGFuZCBgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sYCAqcmV0dXJuKiBgdHJ1ZWAgaWYgdGhlIGxvY2sgKmlzKiBuZWVkZWQuIFNvLCB3aGF0J3MgdGhlIGRlZmF1bHQgYmVoYXZpb3I/IEkgbmVlZCB0byBjaGVjayBgbmV0L2V0aHRvb2wvaW9jdGwuY2AgdG8gYmUgc3VyZS4gSSdsbCBuZWVkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gZmFsc2UgYnkgZGVmYXVsdCBmb3IgdGhlIGNvbW1hbmRzIGluIHF1ZXN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDAzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MTIuMDQ4OTA0MzM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNDQ3ODk5NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ldGh0b29sL2NvbW1vbi5oPTkyPWV0aHRvb2xfbmxfbXNnX25lZWRzX3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggY21kKVxcbi0tXFxubmV0L2V0aHRvb2wvY29tbW9uLmgtMTI5LS8qKlxcbm5ldC9ldGh0b29sL2NvbW1vbi5oOjEzMDogKiBldGh0b29sX2lvY3RsX25lZWRzX3J0bmwoKSAtIGRvZXMgdGhpcyBsZWdhY3kgaW9jdGwgY21kIG5lZWQgcnRubF9sb2NrP1xcbm5ldC9ldGh0b29sL2NvbW1vbi5oLTEzMS0gKiBAZGV2OiB0YXJnZXQgZGV2aWNlXFxuLS1cXG5uZXQvZXRodG9vbC9jb21tb24uaD0xMzc9c3RhdGljIGlubGluZSBib29sXFxubmV0L2V0aHRvb2wvY29tbW9uLmg6MTM4OmV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgZXRoY21kKVxcbm5ldC9ldGh0b29sL2NvbW1vbi5oLTEzOS17XFxuLS1cXG5uZXQvZXRodG9vbC9pb2N0bC5jPTMyNzI9ZGV2X2V0aHRvb2xfbG9ja2VkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9ldGh0b29sL2lvY3RsLmMtMzU5MC0gKiBEcml2ZXItZGVjaWRlZCBTRVQgY29tbWFuZHMgdGhhdCBtYXkgY2hhaW4gaW50byBydG5sLW9ubHkgaGVscGVycyBhcmVcXG5uZXQvZXRodG9vbC9pb2N0bC5jOjM1OTE6ICogY292ZXJlZCBieSBldGh0b29sX2lvY3RsX25lZWRzX3J0bmwoKS9FVEhUT09MX09QX05FRURTX1JUTkxfKi5cXG5uZXQvZXRodG9vbC9pb2N0bC5jLTM1OTItICovXFxuLS1cXG5uZXQvZXRodG9vbC9pb2N0bC5jPTM2MTA9X19kZXZfZXRodG9vbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpZnJlcSAqaWZyLCB2b2lkIF9fdXNlciAqdXNlcmFkZHIsXFxuLS1cXG5uZXQvZXRodG9vbC9pb2N0bC5jLTM2MjMtXFx0XFx0ICAgIGV0aHRvb2xfY21kX2NoYW5nZXNfZmVhdHVyZXMoZXRoY21kKSB8fFxcbm5ldC9ldGh0b29sL2lvY3RsLmM6MzYyNDpcXHRcXHQgICAgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sKGRldiwgZXRoY21kKTtcXG5uZXQvZXRodG9vbC9pb2N0bC5jLTM2MjUtXFx0aWYgKG5lZWRfcnRubClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MTQuMzkzNzAwNDI3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAzNzMyMTg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBldGh0b29sIGlvY3RsIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBiYXNlZCBvbiB0aGUgcmVjZW50IGlzc3VlLCBJIG5lZWQgdG8gZ2V0IHJpZ2h0IGludG8gdGhlIGBuZXQvZXRodG9vbC9pb2N0bC5jYCBjb2RlIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGdvaW5nIG9uLiBTcGVjaWZpY2FsbHksIEkgaGF2ZSBhIGh1bmNoIGl0J3MgcmVsYXRlZCB0byBob3cgZXRodG9vbCBoYW5kbGVzIHNwZWNpZmljIHJlcXVlc3RzLiBJJ20gZ29pbmcgdG8ganVtcCByaWdodCB0byB0aGUgYXJlYSBhcm91bmQgbGluZSAzNjI0LiBUaGF0IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFzIEkgcmVtZW1iZXIgdGhlIGdlbmVyYWwgbGF5b3V0IG9mIHRoZSBmaWxlLCBhbmQgdGhhdCByYW5nZSBsaWtlbHkgaGFuZGxlcyBhIGdvb2QgY2h1bmsgb2YgdGhlIGlvY3RsIHJvdXRpbmcsIG9yIHBlcmhhcHMgYSBwYXJ0aWN1bGFyIGNvbW1hbmQgdGhhdCBoYXMgYmVlbiBpbXBsaWNhdGVkLiBJJ20gZXhwZWN0aW5nIHNvbWUgcHJldHR5IGxvdy1sZXZlbCBzb2NrZXQgaW50ZXJhY3Rpb24gb3IgcGVyaGFwcyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgc3RydWN0dXJlcyB3ZSdyZSBwYXNzaW5nIGJhY2sgYW5kIGZvcnRoIHdpdGggdGhlIGtlcm5lbC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBpZiB0aGlzIGh1bmNoIGlzIGNvcnJlY3QsIG9yIGlmIEkgbmVlZCB0byBhZGp1c3QgbXkgc2VhcmNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDg5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MTcuNDMxMDI0ODMzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9ldGh0b29sL2lvY3RsLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzYxMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzYxMDpcXHRfX2Rldl9ldGh0b29sKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlmcmVxICppZnIsIHZvaWQgX191c2VyICp1c2VyYWRkcixcXG4zNjExOlxcdFxcdCAgICAgIHUzMiBldGhjbWQsIHN0cnVjdCBldGh0b29sX2RldmxpbmtfY29tcGF0ICpkZXZsaW5rX3N0YXRlKVxcbjM2MTI6XFx0e1xcbjM2MTM6XFx0XFx0bmV0ZGV2aWNlX3RyYWNrZXIgZGV2X3RyYWNrZXI7XFxuMzYxNDpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xcbjM2MTU6XFx0XFx0Ym9vbCBuZWVkX3J0bmw7XFxuMzYxNjpcXHRcXHRpbnQgcmM7XFxuMzYxNzpcXHRcXG4zNjE4OlxcdFxcdGRldiA9IG5ldGRldl9nZXRfYnlfbmFtZShuZXQsIGlmci1cXHUwMDNlaWZyX25hbWUsIFxcdTAwMjZkZXZfdHJhY2tlciwgR0ZQX0tFUk5FTCk7XFxuMzYxOTpcXHRcXHRpZiAoIWRldilcXG4zNjIwOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjM2MjE6XFx0XFxuMzYyMjpcXHRcXHRuZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSB8fFxcbjM2MjM6XFx0XFx0XFx0ICAgIGV0aHRvb2xfY21kX2NoYW5nZXNfZmVhdHVyZXMoZXRoY21kKSB8fFxcbjM2MjQ6XFx0XFx0XFx0ICAgIGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubChkZXYsIGV0aGNtZCk7XFxuMzYyNTpcXHRcXHRpZiAobmVlZF9ydG5sKVxcbjM2MjY6XFx0XFx0XFx0cnRubF9sb2NrKCk7XFxuMzYyNzpcXHRcXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcXG4zNjI4OlxcdFxcdGlmIChkZXYtXFx1MDAzZXJlZ19zdGF0ZSBcXHUwMDNlIE5FVFJFR19SRUdJU1RFUkVEIHx8XFxuMzYyOTpcXHRcXHQgICAgZGV2LVxcdTAwM2Vtb3ZpbmdfbnMgfHwgIW5ldF9lcShkZXZfbmV0KGRldiksIG5ldCkpIHtcXG4zNjMwOlxcdFxcdFxcdHJjID0gLUVOT0RFVjtcXG4zNjMxOlxcdFxcdFxcdGdvdG8gZXhpdF9vcHNfdW5sb2NrO1xcbjM2MzI6XFx0XFx0fVxcbjM2MzM6XFx0XFxuMzYzNDpcXHRcXHRyYyA9IGRldl9ldGh0b29sX2xvY2tlZChuZXQsIGRldiwgdXNlcmFkZHIsIGV0aGNtZCwgZGV2bGlua19zdGF0ZSxcXG4zNjM1OlxcdFxcdFxcdFxcdFxcdG5lZWRfcnRubCk7XFxuMzYzNjpcXHRcXG4zNjM3OlxcdGV4aXRfb3BzX3VubG9jazpcXG4zNjM4OlxcdFxcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XFxuMzYzOTpcXHRcXHRpZiAobmVlZF9ydG5sKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozODoxNy40MzEyMTIxMjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODAwNDYwNzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTG9jayBBY3F1aXNpdGlvbiBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgYSBjb25kaXRpb25hbCBsb2NrIGFjcXVpc2l0aW9uIGhlcmUsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBydG5sX2xvY2soKWAuIFRoZSBjb2RlIGNsZWFybHkgc3RhdGVzIHRoYXQgaWYgYG5lZWRfcnRubGAgaXMgc2V0IHRvIHRydWUsIHRoZW4gd2UgYWNxdWlyZSB0aGUgYHJ0bmxfbG9ja2AuIFRoYXQncyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBUaGUgaW50ZXJlc3RpbmcgcGFydCwgdGhvdWdoLCBpcyB0aGUgKmRlZmF1bHQqIGJlaGF2aW9yIG9mIGBFVEhUT09MX0dMSU5LYC4gSXQgc2VlbXMgdGhhdCwgYnkgZGVmYXVsdCwgd2UgKmRvbid0KiBuZWVkIHRoZSBgcnRubF9sb2NrYCBmb3IgdGhpcyBzcGVjaWZpYyBgZXRodG9vbGAgY29tbWFuZCwgdW5sZXNzLCBhbmQgdGhpcyBpcyB0aGUgY3J1eCBvZiBpdCwgYGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubGAgcmV0dXJucyB0cnVlLiBUaGF0IGZ1bmN0aW9uIGJlY29tZXMgdGhlIGdhdGVrZWVwZXIgZm9yIHdoZXRoZXIgd2UgbmVlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHRoZSBuZXR3b3JrIGRldmljZSdzIHJvdXRpbmcgdGFibGUuXG5cbkJ1dCB0aGUgYmlnZ2VyIHBpY3R1cmUgcXVlc3Rpb24gaXMgd2hhdCdzIGdvaW5nIG9uIGJlaGluZCB0aGUgc2NlbmVzLCBzbyBsZXQncyBjaGVjayB3aGF0IGBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYCBkb2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYHJ0bmxfbG9ja2AgYW5kIHRoZSBkZXZpY2Ugb3BlcmF0aW9ucyBsb2NrLCBhbmQgaG93IHRoaXMgYWZmZWN0cyB0aGUgbG9ja2luZyBoaWVyYXJjaHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYG5ldGRldl9uZWVkX29wc19sb2NrYCBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBgcnRubF9sb2NrYCBpcyBhY3F1aXJlZCBvciBub3QuIFRoaXMgaXMgZ2V0dGluZyB0byB0aGUgaGVhcnQgb2YgdGhlIGNvbmN1cnJlbmN5IGNvbnRyb2wgYW5kIGVuc3VyaW5nIHRoYXQgdGhlIGNhbGxzIGFyZSB0aHJlYWQtc2FmZS4gSSdtIGdvaW5nIHRvIGxvb2sgaW50byBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI1OCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MjIuMjMxNjc1OTU1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTQ0Nzk1NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0ZGV2X25lZWRfb3BzX2xvY2tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmM9MzE9aW50IHBoeV9saW5rX3RvcG9fYWRkX3BoeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmMtNDQtXFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmM6NDU6XFx0aWYgKFdBUk5fT05fT05DRShuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKSlcXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYy00Ni1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmM9ODI9c3RhdGljIF9faW5saW5lX18gaW50IGRldl9pc19ldGhkZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmMtODMte1xcbmRyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYzo4NDpcXHRyZXR1cm4gZGV2LVxcdTAwM2V0eXBlID09IEFSUEhSRF9FVEhFUiBcXHUwMDI2XFx1MDAyNiAhbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KTtcXG5kcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmMtODUtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yMTM5PXN0cnVjdCBuZXRfZGV2aWNlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU3Ny1cXHQgKiAgIGFuZCBvdGhlciBjYWxsYmFja3MsIHRoYXQgaXMgdGhlIGluc3RhbmNlIGxvY2sgb24gZGV2aWNlcyBmb3JcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1Nzg6XFx0ICogICB3aGljaCBuZXRkZXZfbmVlZF9vcHNfbG9jaygpIHJldHVybnMgdHJ1ZSwgb3RoZXJ3aXNlIGJ5IHJ0bmxfbG9jaztcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NzktXFx0ICpcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1ODAtXFx0ICogLSBkb3VibGUgb3BzIHByb3RlY3RlZCAtIGFsd2F5cyBwcm90ZWN0ZWQgYnkgcnRubF9sb2NrIGJ1dCBmb3JcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1ODE6XFx0ICogICBkZXZpY2VzIGZvciB3aGljaCBuZXRkZXZfbmVlZF9vcHNfbG9jaygpIHJldHVybnMgdHJ1ZSAtIGFsc29cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1ODItXFx0ICogICB0aGUgaW5zdGFuY2UgbG9jay5cXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9MjE9bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3JfaW52aXNpYmxlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTI3LVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6Mjg6c3RhdGljIGlubGluZSBib29sIG5ldGRldl9uZWVkX29wc19sb2NrKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0yOS17XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTM5PXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfbG9ja19vcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTQwLXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjQxOlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNDItXFx0XFx0bmV0ZGV2X2xvY2soZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9NDU9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl91bmxvY2tfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC00Ni17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo0NzpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTQ4LVxcdFxcdG5ldGRldl91bmxvY2soZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9NTE9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9sb2NrX29wc190b19mdWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC01Mi17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo1MzpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTU0LVxcdFxcdG5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTU5PXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfdW5sb2NrX2Z1bGxfdG9fb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC02MC17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo2MTpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTYyLVxcdFxcdG5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTY3PXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC02OC17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo2OTpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTcwLVxcdFxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmRldi1cXHUwMDNlbG9jayk7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTgzPXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHMoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTg0LXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjg1OlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtODYtXFx0XFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9ODk9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9sb2NrX29wc19jb21wYXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTkwLXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjkxOlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtOTItXFx0XFx0bmV0ZGV2X2xvY2soZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9OTc9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl91bmxvY2tfb3BzX2NvbXBhdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtOTgte1xcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6OTk6XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0xMDAtXFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD0xMDY9c3RhdGljIGlubGluZSBpbnQgbmV0ZGV2X2lzX2xvY2tlZF9vcHNfY29tcGF0KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0xMDcte1xcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6MTA4OlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMTA5LVxcdFxcdHJldHVybiBsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNmRldi1cXHUwMDNlbG9jayk7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmg9NDM9c3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c190eCB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmgtOTEtICpcXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmg6OTI6ICogT3BzIGFyZSBjYWxsZWQgdW5kZXIgdGhlIGluc3RhbmNlIGxvY2sgaWYgbmV0ZGV2X25lZWRfb3BzX2xvY2soKVxcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaC05My0gKiByZXR1cm5zIHRydWUsIG90aGVyd2lzZSB1bmRlciBydG5sX2xvY2suXFxuLS1cXG5uZXQvY29yZS9kZXYuYz0xMTMyMD1pbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvY29yZS9kZXYuYy0xMTM3NC1cXG5uZXQvY29yZS9kZXYuYzoxMTM3NTpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9jb3JlL2Rldi5jLTExMzc2LVxcdCAgICBkZXYtXFx1MDAzZW5ldGRldl9vcHMtXFx1MDAzZW5kb19zZXRfcnhfbW9kZSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTIzNjI9dm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTIzOTUtXFx0XFx0XFx0Y29udGludWU7XFxubmV0L2NvcmUvZGV2LmM6MTIzOTY6XFx0XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpIHtcXG5uZXQvY29yZS9kZXYuYy0xMjM5Ny1cXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZkZXYtXFx1MDAzZWNsb3NlX2xpc3QsIFxcdTAwMjZjbG9zZV9oZWFkKTtcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTEyNDA0LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGV2LCBoZWFkLCB1bnJlZ19saXN0KSB7XFxubmV0L2NvcmUvZGV2LmM6MTI0MDU6XFx0XFx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbm5ldC9jb3JlL2Rldi5jLTEyNDA2LVxcdFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRldi1cXHUwMDNlY2xvc2VfbGlzdCwgXFx1MDAyNmNsb3NlX2hlYWQpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTI1MjI9aW50IF9fZGV2X2NoYW5nZV9uZXRfbmFtZXNwYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTEyNjEyLVxcbm5ldC9jb3JlL2Rldi5jOjEyNjEzOlxcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5uZXQvY29yZS9kZXYuYy0xMjYxNC1cXHRcXHRuZXRkZXZfbG9jayhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTI2ODMtXFx0ZGV2LVxcdTAwM2Vtb3ZpbmdfbnMgPSBmYWxzZTtcXG5uZXQvY29yZS9kZXYuYzoxMjY4NDpcXHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxubmV0L2NvcmUvZGV2LmMtMTI2ODUtXFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2Lmg9MTgxPXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl9zZXRfdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCB2YWx1ZSlcXG4tLVxcbm5ldC9jb3JlL2Rldi5oLTE4Ny1cXG5uZXQvY29yZS9kZXYuaDoxODg6XFx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbm5ldC9jb3JlL2Rldi5oLTE4OS1cXHRcXHRuZXRkZXZfbG9jayhkZXYpO1xcbm5ldC9jb3JlL2Rldi5oLTE5MC1cXHRkZXYtXFx1MDAzZXVwID0gdmFsdWU7XFxubmV0L2NvcmUvZGV2Lmg6MTkxOlxcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5uZXQvY29yZS9kZXYuaC0xOTItXFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYz0xNDEwPXZvaWQgX19kZXZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmMtMTQyMi1cXHRpZiAob3BzLVxcdTAwM2VuZG9fc2V0X3J4X21vZGVfYXN5bmMgfHwgb3BzLVxcdTAwM2VuZG9fY2hhbmdlX3J4X2ZsYWdzIHx8XFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYzoxNDIzOlxcdCAgICBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKSB7XFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYy0xNDI0LVxcdFxcdG5ldGlmX3J4X21vZGVfcXVldWUoZGV2KTtcXG4tLVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9MTAxMz1pbnQgbmV0ZGV2X25sX2JpbmRfcnhfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMDU2LVxcdFxcdGVyciA9IC1FTk9ERVY7XFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxMDU3OlxcdGVsc2UgaWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhuZXRkZXYpKVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTA1OC1cXHRcXHRlcnIgPSAtRU9QTk9UU1VQUDtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI0NT1pbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNTAtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjUxOlxcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNTItXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYz0zNjEwPV9fZGV2X2V0aHRvb2woc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaWZyZXEgKmlmciwgdm9pZCBfX3VzZXIgKnVzZXJhZGRyLFxcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYy0zNjIxLVxcbm5ldC9ldGh0b29sL2lvY3RsLmM6MzYyMjpcXHRuZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSB8fFxcbm5ldC9ldGh0b29sL2lvY3RsLmMtMzYyMy1cXHRcXHQgICAgZXRodG9vbF9jbWRfY2hhbmdlc19mZWF0dXJlcyhldGhjbWQpIHx8XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTA3PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNTM5LVxcdGlmIChyZXFfaW5mby1cXHUwMDNlZGV2KSB7XFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjU0MDpcXHRcXHRuZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2socmVxX2luZm8tXFx1MDAzZWRldikgfHxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNTQxLVxcdFxcdFxcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKHJlcV9pbmZvLVxcdTAwM2VkZXYsIGNtZCk7XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTk0PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kdW1wX29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTYwOC1cXHRldGhubF9pbml0X3JlcGx5X2RhdGEoY3R4LVxcdTAwM2VyZXBseV9kYXRhLCBjdHgtXFx1MDAzZW9wcywgZGV2KTtcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6NjA5OlxcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIHx8XFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTYxMC1cXHRcXHQgICAgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChkZXYsIGN0eC1cXHUwMDNlb3BzLVxcdTAwM2VyZXF1ZXN0X2NtZCk7XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9OTAwPXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTkzMC1cXHRkZXYgPSByZXFfaW5mby1cXHUwMDNlZGV2O1xcbm5ldC9ldGh0b29sL25ldGxpbmsuYzo5MzE6XFx0bmVlZF9ydG5sID0gIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikgfHxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtOTMyLVxcdFxcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKGRldiwgY21kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MjQuNDI2MTY0OTkxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI1NTMwOTkwMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTG9ja2luZyBCZWhhdmlvciBmb3IgRVRIVE9PTF9HTElOSyBPcHM6IEEgRGVlcCBEaXZlKipcblxuT2theSwgc28gYG5lZWRfcnRubGAgaXMgZGV0ZXJtaW5lZCBieSB3aGV0aGVyIGEgZGV2aWNlICpkb2Vzbid0KiBuZWVkIGFuIG9wcyBsb2NrLiBFc3NlbnRpYWxseSwgZGV2aWNlcyB0aGF0ICpkb24ndCogbmVlZCB0aGUgb3BzIGxvY2sgYWx3YXlzIG5lZWQgYHJ0bmxfbG9ja2AsIGFuZCB0aG9zZSB0aGF0IGRvIG5lZWQgdGhlIG9wcyBsb2NrIG9ubHkgbmVlZCBgcnRubF9sb2NrYCBpZiBgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubGAgb3IgYGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubGAgc2F5cyBzby4gVGhpcyBzZWVtcyBsaWtlIGEgbmV3aXNoIHRoaW5nIHdoZXJlIHNvbWUgZHJpdmVycyBjYW4gYXZvaWQgYHJ0bmxfbG9ja2AgZm9yIHRoZWlyIGV0aHRvb2wgb3BlcmF0aW9ucyBieSB1c2luZyBgbmV0ZGV2X2xvY2tfb3BzKGRldilgIGluc3RlYWQuXG5cblRoZSBkcml2ZXJzIHRvdWNoZWQgaW4gdGhpcyBwYXRjaCAoZ3ZlLCBpYXZmLCBtbHg1LCBmYm5pYywgbWFuYSkgYXJlIHByb2JhYmx5IG9uZXMgdGhhdCBoYXZlIG9wdGVkICppbiogdG8gdGhpcyBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIHRoaW5nLiBUaGF0J3Mgd2h5LCBieSBkZWZhdWx0LCB0aGV5ICpkb24ndCogdXNlIGBydG5sX2xvY2tgIGZvciBldGh0b29sIG9wcy4gSG93ZXZlciwgZm9yIGBFVEhUT09MX0dMSU5LYCAodGhlIGBnZXRfbGlua2Agb3BlcmF0aW9uKSwgdGhleSAqZG8qIG5lZWQgYHJ0bmxfbG9ja2AuIFdoeT8gQmVjYXVzZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgY2FsbHMgYG5ldGlmX2NhcnJpZXJfb2tgIGFuZCBtaWdodCBzeW5jIHRoZSBsaW5rIHdhdGNoIHVuZGVyIHRoZSBgcnRubF9sb2NrYC5cblxuQWgsIG5vdyBJIHNlZTogdGhlIHBhdGNoIGlzIGFkZGluZyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCB0byB0aGUgYG9wX25lZWRzX3J0bmxgIGZsYWdzIGZvciB0aGVzZSBkcml2ZXJzLiBUaGlzIGlzIGEgY3J1Y2lhbCBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0IG1lYW5zIHRoYXQgd2hlbiBgRVRIVE9PTF9HTElOS2AgaXMgY2FsbGVkLCB0aGUgYHJ0bmxfbG9ja2AgKndpbGwqIGJlIHRha2VuIGZvciB0aGVzZSBkcml2ZXJzLCBjaGFuZ2luZyBsb2NraW5nIGJlaGF2aW9yLlxuXG5EZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcsIHRoaXMgZml4ZXMgb3IgY2hhbmdlcyBsb2NraW5nIGJlaGF2aW9yIGZvciBgRVRIVE9PTF9HTElOS2AgaW4gc2V2ZXJhbCBkcml2ZXJzLCBhbmQgdGhhdCBoYXMgdGhlIHBvdGVudGlhbCB0byBpbnRyb2R1Y2UgYnVncyBvciBleHBvc2UgdnVsbmVyYWJpbGl0aWVzLlxuXG5TbywgbGV0J3Mgc2VlIHdoYXQgZnVuY3Rpb25zIGFyZSBhZmZlY3RlZC4gSSBuZWVkIHRvIG5vdGUgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGFuZCBgZXRobmxfZGVmYXVsdF9kb2l0YCBmb3IgYEVUSFRPT0xfTVNHX0xJTktTVEFURV9HRVRgLCBhbG9uZyB3aXRoIHRoZSBkdW1waW5nIGZ1bmN0aW9uIGBldGhubF9kZWZhdWx0X2R1bXBfb25lYC4gVGhlIHBhdGNoIGl0c2VsZiBjb25maXJtcyB0aGlzIGJlY2F1c2UgYGd2ZV9ldGh0b29sX29wcy5nZXRfbGlua2AgaXMgcHJvYmFibHkganVzdCBjYWxsaW5nIGBldGh0b29sX29wX2dldF9saW5rYC5cblxuTG9va2luZyBhdCB0aGUgcGF0Y2ggaW4gbW9yZSBkZXRhaWwsIGl0J3MgY2xlYXI6IGBndmVgLCBgaWF2ZmAsIGBtbHg1YCwgYGZibmljYCwgYW5kIGBtYW5hYCBhcmUgZ2V0dGluZyB0aGlzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIGZsYWcgYWRkZWQuXG5cblRoZSBkZXNjcmlwdGlvbiBleHBsaWNpdGx5IHN0YXRlcywgXCJldGh0b29sX29wX2dldF9saW5rKCkgKHN5bmNzIGxpbmsgd2F0Y2ggdW5kZXIgcnRubF9sb2NrKS5cIiBUaGF0J3MgdGhlIGtleTogYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBsaW5rd2F0Y2hfc3luY19kZXYoZGV2KWAsIHdoaWNoIHJlcXVpcmVzIGBydG5sX2xvY2tgLiBQZXJmZWN0LiBJJ2xsIG5lZWQgdG8gZ28gdGhyb3VnaCBgZXRodG9vbF9vcF9nZXRfbGlua2AgdG8gdmVyaWZ5IHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTQ5LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozODozNi45NzkyNjY4NzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MTEzMDY4NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXRodG9vbF9vcF9nZXRfbGlua1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEyMzMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvdW0vZHJpdmVycy92ZWN0b3Jfa2Vybi5jPTE1MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB2ZWN0b3JfbmV0X2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuYXJjaC91bS9kcml2ZXJzL3ZlY3Rvcl9rZXJuLmMtMTUwMi1cXHQuZ2V0X2RydmluZm9cXHQ9IHZlY3Rvcl9uZXRfZ2V0X2RydmluZm8sXFxuYXJjaC91bS9kcml2ZXJzL3ZlY3Rvcl9rZXJuLmM6MTUwMzpcXHQuZ2V0X2xpbmtcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuYXJjaC91bS9kcml2ZXJzL3ZlY3Rvcl9rZXJuLmMtMTUwNC1cXHQuZ2V0X3RzX2luZm9cXHQ9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXFxuLS1cXG5kcml2ZXJzL2ZpcmV3aXJlL25ldC5jPTEzNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmd25ldF9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL2ZpcmV3aXJlL25ldC5jOjEzNjY6XFx0LmdldF9saW5rXFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvZmlyZXdpcmUvbmV0LmMtMTM2Ny19O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9ldGh0b29sLmM9MjE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaXBvaWJfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2V0aHRvb2wuYy0yMjgtXFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSBpcG9pYl9nZXRfc3NldF9jb3VudCxcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2V0aHRvb2wuYzoyMjk6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfZXRodG9vbC5jLTIzMC19O1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01OTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYm9uZF9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5NDMtXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBib25kX2V0aHRvb2xfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1OTQ0OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5NDUtXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gYm9uZF9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzNjb20vM2M1OXguYz0zMDA5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdm9ydGV4X2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS8zYzU5eC5jLTMwMTUtXFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSB2b3J0ZXhfZ2V0X3NzZXRfY291bnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS8zYzU5eC5jOjMwMTY6XFx0LmdldF9saW5rICAgICAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzNjb20vM2M1OXguYy0zMDE3LVxcdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gdm9ydGV4X253YXlfcmVzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC8zY29tL3R5cGhvb24uYz0xMTY4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdHlwaG9vbl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzNjb20vdHlwaG9vbi5jLTExNzEtXFx0LnNldF93b2xcXHRcXHQ9IHR5cGhvb25fc2V0X3dvbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC8zY29tL3R5cGhvb24uYzoxMTcyOlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC8zY29tL3R5cGhvb24uYy0xMTczLVxcdC5nZXRfcmluZ3BhcmFtXFx0XFx0PSB0eXBob29uX2dldF9yaW5ncGFyYW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz02MDE9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBheF9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy02MDItXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBheF9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo2MDM6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTYwNC1cXHQuZ2V0X3RzX2luZm9cXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTI1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG93bF9lbWFjX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMjUzLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gb3dsX2VtYWNfZXRodG9vbF9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTI1NDpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEyNTUtXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9MTA2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFkaW4xMTEwX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTEwNjctXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBhZGluMTExMF9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzoxMDY4OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy0xMDY5LVxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTEzMz1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGdyZXRoX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMTM4LVxcdC5nZXRfcmVncyAgICAgICAgICAgICAgID0gZ3JldGhfZ2V0X3JlZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYzoxMTM5OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTExNDAtXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9Mjk5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGV0MTMxeF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTI5OTktXFx0LmdldF9yZWdzXFx0PSBldDEzMXhfZ2V0X3JlZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM6MzAwMDpcXHQuZ2V0X2xpbmtcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtMzAwMS1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzID0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zMTExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYWlyb2hhX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTE1LVxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxMTY6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzExNy19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxhY3JpdGVjaC9zbGljb3NzLmM9MTUzNj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHNsaWNfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxhY3JpdGVjaC9zbGljb3NzLmMtMTUzNy1cXHQuZ2V0X2RydmluZm9cXHRcXHQ9IHNsaWNfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxhY3JpdGVjaC9zbGljb3NzLmM6MTUzODpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxhY3JpdGVjaC9zbGljb3NzLmMtMTUzOS1cXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IHNsaWNfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL2VlYS9lZWFfZXRodG9vbC5jPTI2MT1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZWVhX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9lZWEvZWVhX2V0aHRvb2wuYy0yNjMtXFx0LmdldF9kcnZpbmZvICAgICAgICA9IGVlYV9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL2VlYS9lZWFfZXRodG9vbC5jOjI2NDpcXHQuZ2V0X2xpbmsgICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL2VlYS9lZWFfZXRodG9vbC5jLTI2NS1cXHQuZ2V0X3JpbmdwYXJhbSAgICAgID0gZWVhX2dldF9yaW5ncGFyYW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jPTM1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGVtYWNfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0zNTMtXFx0LmdldF9kcnZpbmZvXFx0PSBlbWFjX2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmM6MzU0OlxcdC5nZXRfbGlua1xcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTM1NS1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzID0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfZXRodG9vbC5jPTI0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHRzZV9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX2V0aHRvb2wuYy0yNDMtXFx0LmdldF9yZWdzID0gdHNlX2dldF9yZWdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX2V0aHRvb2wuYzoyNDQ6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9ldGh0b29sLmMtMjQ1LVxcdC5nZXRfc3RyaW5ncyA9IHRzZV9nc3RyaW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX2V0aHRvb2wuYz0xMDY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5hX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfZXRodG9vbC5jLTEwNzQtXFx0LnNldF9tc2dsZXZlbFxcdFxcdD0gZW5hX3NldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9ldGh0b29sLmM6MTA3NTpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfZXRodG9vbC5jLTEwNzYtXFx0LmdldF9jb2FsZXNjZVxcdFxcdD0gZW5hX2dldF9jb2FsZXNjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM9NjcwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXUxMDAwX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtNjcxLVxcdC5nZXRfZHJ2aW5mbyA9IGF1MTAwMF9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jOjY3MjpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtNjczLVxcdC5nZXRfbXNnbGV2ZWwgPSBhdTEwMDBfZ2V0X21zZ2xldmVsLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3N1bmxhbmNlLmM9MTI4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHNwYXJjX2xhbmNlX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9zdW5sYW5jZS5jLTEyODMtXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBzcGFyY19sYW5jZV9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvc3VubGFuY2UuYzoxMjg0OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvc3VubGFuY2UuYy0xMjg1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWV0aHRvb2wuYz03Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB4Z2JlX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1ldGh0b29sLmMtNzQyLVxcdC5zZXRfbXNnbGV2ZWwgPSB4Z2JlX3NldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWV0aHRvb2wuYzo3NDM6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWV0aHRvb2wuYy03NDQtXFx0LmdldF9jb2FsZXNjZSA9IHhnYmVfZ2V0X2NvYWxlc2NlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL2V0aHRvb2wuYz0xNjI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB4Z2VfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL2V0aHRvb2wuYy0xNjMtXFx0LmdldF9kcnZpbmZvID0geGdlX2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9ldGh0b29sLmM6MTY0OlxcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL2V0aHRvb2wuYy0xNjUtXFx0LmdldF9zdHJpbmdzID0geGdlX2dldF9zdHJpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfZXRodG9vbC5jPTMyOD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHhnZW5lX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2V0aHRvb2wuYy0zMjktXFx0LmdldF9kcnZpbmZvID0geGdlbmVfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfZXRodG9vbC5jOjMzMDpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2V0aHRvb2wuYy0zMzEtXFx0LmdldF9zdHJpbmdzID0geGdlbmVfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcHBsZS9ibWFjLmM9MTE2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGJtYWNfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBwbGUvYm1hYy5jOjExNjU6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwcGxlL2JtYWMuYy0xMTY2LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9ldGh0b29sLmM9NDQ9c3RhdGljIHUzMiBhcV9ldGh0b29sX2dldF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX2V0aHRvb2wuYy00NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfZXRodG9vbC5jOjQ2OlxcdHJldHVybiBldGh0b29sX29wX2dldF9saW5rKG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX2V0aHRvb2wuYy00Ny19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM9OTc9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhcmNfZW1hY19ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtOTgtXFx0LmdldF9kcnZpbmZvXFx0PSBhcmNfZW1hY19nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM6OTk6XFx0LmdldF9saW5rXFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYy0xMDAtXFx0LmdldF9saW5rX2tzZXR0aW5ncyA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuYz0yMTQ9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGF4ODg3OTZjX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuYy0yMTUtXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBheDg4Nzk2Y19nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX2lvY3RsLmM6MjE2OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX2lvY3RsLmMtMjE3LVxcdC5nZXRfbXNnbGV2ZWxcXHRcXHQ9IGF4ODg3OTZjX2dldF9tc2dsZXZlbCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9NTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYWc3MXh4X2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTQzLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdFxcdD0gYWc3MXh4X2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTQ0OlxcdC5nZXRfbGlua1xcdFxcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU0NS1cXHQuZ2V0X3RzX2luZm9cXHRcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FseC9ldGh0b29sLmM9MzIzPWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhbHhfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FseC9ldGh0b29sLmMtMzI3LVxcdC5zZXRfbXNnbGV2ZWxcXHQ9IGFseF9zZXRfbXNnbGV2ZWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hbHgvZXRodG9vbC5jOjMyODpcXHQuZ2V0X2xpbmtcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hbHgvZXRodG9vbC5jLTMyOS1cXHQuZ2V0X3N0cmluZ3NcXHQ9IGFseF9nZXRfc3RyaW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jPTI3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGF0bDFjX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjg0LVxcdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gYXRsMWNfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyODU6XFx0LmdldF9saW5rICAgICAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI4Ni1cXHQuZ2V0X2VlcHJvbV9sZW4gICAgICAgICA9IGF0bDFjX2dldF9lZXByb21fbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ldGh0b29sLmM9MzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXRsMWVfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2V0aHRvb2wuYy0zNzAtXFx0Lm53YXlfcmVzZXQgICAgICAgICAgICAgPSBhdGwxZV9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfZXRodG9vbC5jOjM3MTpcXHQuZ2V0X2xpbmsgICAgICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ldGh0b29sLmMtMzcyLVxcdC5nZXRfZWVwcm9tX2xlbiAgICAgICAgID0gYXRsMWVfZ2V0X2VlcHJvbV9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jPTM2NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhdGwxX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDEuYy0zNjc0LVxcdC5zZXRfcGF1c2VwYXJhbVxcdFxcdD0gYXRsMV9zZXRfcGF1c2VwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jOjM2NzU6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwxLmMtMzY3Ni1cXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IGF0bDFfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jPTIwMzk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhdGwyX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYy0yMDQ3LVxcdC5ud2F5X3Jlc2V0XFx0XFx0PSBhdGwyX253YXlfcmVzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYzoyMDQ4OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jLTIwNDktXFx0LmdldF9lZXByb21fbGVuXFx0XFx0PSBhdGwyX2dldF9lZXByb21fbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jPTQ0Mz1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNtYXNwX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2V0aHRvb2wuYy00NDQtXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBiY21hc3BfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jOjQ0NTpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jLTQ0Ni1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzXFx0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMTAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYjQ0X2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjEwNC1cXHQubndheV9yZXNldFxcdFxcdD0gYjQ0X253YXlfcmVzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjEwNTpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjEwNi1cXHQuZ2V0X3dvbFxcdFxcdD0gYjQ0X2dldF93b2wsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz0xNTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNtX2VuZXRfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xNTkwLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gYmNtX2VuZXRfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MTU5MTpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTU5Mi1cXHQuZ2V0X3JpbmdwYXJhbVxcdFxcdD0gYmNtX2VuZXRfZ2V0X3JpbmdwYXJhbSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0yMjQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNtX3N5c3BvcnRfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjI0OS1cXHQuc2V0X21zZ2xldmVsXFx0XFx0PSBiY21fc3lzcG9ydF9zZXRfbXNnbHZsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYzoyMjUwOlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjI1MS1cXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IGJjbV9zeXNwb3J0X2dldF9zdHJpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYz0xNjc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNtZ2VuZXRfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTE2ODctXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBiY21nZW5ldF9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jOjE2ODg6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMtMTY4OS1cXHQuZ2V0X21zZ2xldmVsXFx0XFx0PSBiY21nZW5ldF9nZXRfbXNnbGV2ZWwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNDIyOT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHRnM19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE0MjQyLVxcdC5ud2F5X3Jlc2V0XFx0XFx0PSB0ZzNfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNDI0MzpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTQyNDQtXFx0LmdldF9lZXByb21fbGVuXFx0XFx0PSB0ZzNfZ2V0X2VlcHJvbV9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYz0xMDY5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYm5hZF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTEwNzQtXFx0LmdldF93b2wgPSBibmFkX2dldF93b2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmM6MTA3NTpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTEwNzYtXFx0LmdldF9jb2FsZXNjZSA9IGJuYWRfZ2V0X2NvYWxlc2NlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00MTIzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbWFjYl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDEyNS1cXHQuZ2V0X3JlZ3NcXHRcXHQ9IG1hY2JfZ2V0X3JlZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0MTI2OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQxMjctXFx0LmdldF90c19pbmZvXFx0XFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00MTU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZ2VtX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MTU4LVxcdC5zZXRfd29sXFx0XFx0PSBtYWNiX3NldF93b2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0MTU5OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQxNjAtXFx0LmdldF90c19pbmZvXFx0XFx0PSBtYWNiX2dldF90c19pbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FseGVkYS94Z21hYy5jPTE2NzE9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB4Z21hY19ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWx4ZWRhL3hnbWFjLmM6MTY3MjpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhbHhlZGEveGdtYWMuYy0xNjczLVxcdC5nZXRfcGF1c2VwYXJhbSA9IHhnbWFjX2dldF9wYXVzZXBhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM9MzExNT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxpb19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTMxMjAtXFx0LnNldF9mZWNwYXJhbVxcdFxcdD0gbGlvX3NldF9mZWNwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYzozMTIxOlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0zMTIyLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gbGlvX2dldF9kcnZpbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM9MzE0OD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxpb192Zl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTMxNTAtXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gbGlvX2dldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYzozMTUxOlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0zMTUyLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gbGlvX2dldF92Zl9kcnZpbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jPTEzNTk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBvY3Rlb25fbWdtdF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy0xMzYxLVxcdC5ud2F5X3Jlc2V0ID0gb2N0ZW9uX21nbXRfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM6MTM2MjpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy0xMzYzLVxcdC5nZXRfbGlua19rc2V0dGluZ3MgPSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IvY3hnYjIuYz04MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB0MV9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYi9jeGdiMi5jLTgxOC1cXHQuc2V0X3BhdXNlcGFyYW0gICAgPSBzZXRfcGF1c2VwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IvY3hnYjIuYzo4MTk6XFx0LmdldF9saW5rICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IvY3hnYjIuYy04MjAtXFx0LmdldF9zdHJpbmdzICAgICAgID0gZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IzL2N4Z2IzX21haW4uYz0yMTAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgY3hnYl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjMvY3hnYjNfbWFpbi5jLTIxMTQtXFx0LnNldF9wYXVzZXBhcmFtID0gc2V0X3BhdXNlcGFyYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiMy9jeGdiM19tYWluLmM6MjExNTpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjMvY3hnYjNfbWFpbi5jLTIxMTYtXFx0LmdldF9zdHJpbmdzID0gZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYz0yMTc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgY3hnYl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jLTIxOTYtXFx0LnNldF9wYXVzZXBhcmFtICAgID0gc2V0X3BhdXNlcGFyYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6MjE5NzpcXHQuZ2V0X2xpbmsgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jLTIxOTgtXFx0LmdldF9zdHJpbmdzICAgICAgID0gZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0dmYvY3hnYjR2Zl9tYWluLmM9MTkyOD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGN4Z2I0dmZfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0dmYvY3hnYjR2Zl9tYWluLmMtMTk0MC1cXHQuZ2V0X3BhdXNlcGFyYW1cXHRcXHQ9IGN4Z2I0dmZfZ2V0X3BhdXNlcGFyYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNHZmL2N4Z2I0dmZfbWFpbi5jOjE5NDE6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjR2Zi9jeGdiNHZmX21haW4uYy0xOTQyLVxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gY3hnYjR2Zl9nZXRfc3RyaW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19ldGh0b29sLmM9ODIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5pY19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19ldGh0b29sLmMtODI3LVxcdC5zZXRfbXNnbGV2ZWwgPSBlbmljX3NldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfZXRodG9vbC5jOjgyODpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19ldGh0b29sLmMtODI5LVxcdC5nZXRfc3RyaW5ncyA9IGVuaWNfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyODg9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBnbWFjXzM1MXhfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyOTMtXFx0LmdldF9ldGh0b29sX3N0YXRzID0gZ21hY19nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIyOTQ6XFx0LmdldF9saW5rXFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjI5NS1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzID0gZ21hY19nZXRfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz02NTY9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBkbTkwNTFfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTY2Mi1cXHQubndheV9yZXNldCA9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzo2NjM6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTY2NC1cXHQuZ2V0X2VlcHJvbV9sZW4gPSBkbTkwNTFfZ2V0X2VlcHJvbV9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jPTE2OTk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBkZV9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jOjE3MDA6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmMtMTcwMS1cXHQuZ2V0X2RydmluZm9cXHRcXHQ9IGRlX2dldF9kcnZpbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RtZmUuYz0xMTA0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbmV0ZGV2X2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kbWZlLmMtMTEwNS1cXHQuZ2V0X2RydmluZm9cXHRcXHQ9IGRtZmVfZXRodG9vbF9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZG1mZS5jOjExMDY6XFx0LmdldF9saW5rICAgICAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kbWZlLmMtMTEwNy1cXHQuc2V0X3dvbFxcdFxcdD0gZG1mZV9ldGh0b29sX3NldF93b2wsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfZXRodG9vbC5jPTE0MDk9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGJlX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX2V0aHRvb2wuYy0xNDE1LVxcdC5zZXRfd29sID0gYmVfc2V0X3dvbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfZXRodG9vbC5jOjE0MTY6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfZXRodG9vbC5jLTE0MTctXFx0LmdldF9lZXByb21fbGVuID0gYmVfZ2V0X2VlcHJvbV9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9ldGh0b29sLmM9NDYxPWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB0c25lcF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX2V0aHRvb2wuYy00NjgtXFx0Lm53YXlfcmVzZXQgPSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX2V0aHRvb2wuYzo0Njk6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9ldGh0b29sLmMtNDcwLVxcdC5zZWxmX3Rlc3QgPSB0c25lcF9ldGh0b29sX3NlbGZfdGVzdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM9OTk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZXRob2NfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEwMDAtXFx0Lm53YXlfcmVzZXQgPSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6MTAwMTpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTAwMi1cXHQuZ2V0X3JpbmdwYXJhbSA9IGV0aG9jX2dldF9yaW5ncGFyYW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTEyMTk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmdGdtYWMxMDBfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xMjIwLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gZnRnbWFjMTAwX2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTIyMTpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xMjIyLVxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRodG9vbC5jPTUxMT1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZHBhYV9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRodG9vbC5jLTUxOS1cXHQuc2V0X3BhdXNlcGFyYW0gPSBkcGFhX3NldF9wYXVzZXBhcmFtLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRodG9vbC5jOjUyMDpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRodG9vbC5jLTUyMS1cXHQuZ2V0X3NzZXRfY291bnQgPSBkcGFhX2dldF9zc2V0X2NvdW50LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aHRvb2wuYz05OTY9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGRwYWEyX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aHRvb2wuYy0xMDAwLVxcdC5ud2F5X3Jlc2V0ID0gZHBhYTJfZXRoX253YXlfcmVzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aHRvb2wuYzoxMDAxOlxcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aHRvb2wuYy0xMDAyLVxcdC5nZXRfbGlua19rc2V0dGluZ3MgPSBkcGFhMl9ldGhfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC1ldGh0b29sLmM9MjU2PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBkcGFhMl9zd2l0Y2hfcG9ydF9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLWV0aHRvb2wuYy0yNTctXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBkcGFhMl9zd2l0Y2hfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC1ldGh0b29sLmM6MjU4OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLWV0aHRvb2wuYy0yNTktXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gZHBhYTJfc3dpdGNoX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmM9MTUzMT1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5ldGNfcGZfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE1NTYtXFx0LnNldF9saW5rX2tzZXR0aW5ncyA9IGVuZXRjX3NldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jOjE1NTc6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE1NTgtXFx0LmdldF90c19pbmZvID0gZW5ldGNfZ2V0X3RzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jPTE1Njg9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGVuZXRjNF9wcG1fZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE1ODYtXFx0LnNldF9saW5rX2tzZXR0aW5ncyA9IGVuZXRjX3NldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jOjE1ODc6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE1ODgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmM9MTU5MD1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5ldGNfdmZfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE2MDgtXFx0LnNldF9jb2FsZXNjZSA9IGVuZXRjX3NldF9jb2FsZXNjZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jOjE2MDk6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE2MTAtXFx0LmdldF90c19pbmZvID0gZW5ldGNfZ2V0X3RzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jPTE2MTM9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGVuZXRjNF9wZl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmMtMTYyOC1cXHQuc2V0X2xpbmtfa3NldHRpbmdzID0gZW5ldGNfc2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmM6MTYyOTpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmMtMTYzMC1cXHQuZ2V0X3dvbCA9IGVuZXRjX2dldF93b2wsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0zNzg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZmVjX2VuZXRfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zNzkzLVxcdC5ud2F5X3Jlc2V0XFx0XFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjM3OTQ6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTM3OTUtXFx0LmdldF9jb2FsZXNjZVxcdFxcdD0gZmVjX2VuZXRfZ2V0X2NvYWxlc2NlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM9NzgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbXBjNTJ4eF9mZWNfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM6NzgyOlxcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtNzgzLVxcdC5nZXRfbXNnbGV2ZWwgPSBtcGM1Mnh4X2ZlY19nZXRfbXNnbGV2ZWwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYz04MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmc19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTgxNS1cXHQubndheV9yZXNldCA9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM6ODE2OlxcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtODE3LVxcdC5nZXRfbXNnbGV2ZWwgPSBmc19nZXRfbXNnbGV2ZWwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcl9ldGh0b29sLmM9MTUwMj1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZ2Zhcl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyX2V0aHRvb2wuYy0xNTA3LVxcdC5nZXRfcmVncyA9IGdmYXJfZ2V0X3JlZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXJfZXRodG9vbC5jOjE1MDg6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcl9ldGh0b29sLmMtMTUwOS1cXHQuZ2V0X2NvYWxlc2NlID0gZ2Zhcl9nY29hbGVzY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGhfZXRodG9vbC5jPTM1OT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHVlY19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aF9ldGh0b29sLmMtMzY1LVxcdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGhfZXRodG9vbC5jOjM2NjpcXHQuZ2V0X2xpbmsgICAgICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoX2V0aHRvb2wuYy0zNjctXFx0LmdldF9yaW5ncGFyYW0gICAgICAgICAgPSB1ZWNfZ2V0X3JpbmdwYXJhbSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfZXRodG9vbC5jPTExNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmdW5fZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvZnVuZXRoX2V0aHRvb2wuYy0xMTU0LVxcdC5nZXRfcmVncyAgICAgICAgICAgID0gZnVuX2dldF9yZWdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfZXRodG9vbC5jOjExNTU6XFx0LmdldF9saW5rXFx0ICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmMtMTE1Ni1cXHQuZ2V0X2NvYWxlc2NlICAgICAgICA9IGZ1bl9nZXRfY29hbGVzY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmM9OTgyPWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBndmVfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtMTAwMy1cXHQuc2V0X3J4ZmggPSBndmVfc2V0X3J4ZmgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jOjEwMDQ6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtMTAwNS1cXHQuZ2V0X2NvYWxlc2NlID0gZ3ZlX2dldF9jb2FsZXNjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19ldGh0b29sLmM9NDc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaGJnX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19ldGh0b29sLmM6NDc5OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfZXRodG9vbC5jLTQ4MC1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzXFx0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jPTY3OD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGhpc2lfZmVtYWNfZXRodG9vbHNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmM6Njc5OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jLTY4MC1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzXFx0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM9OTEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaGl4NWhkMl9ldGh0b29sc19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jOjkxMzpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTkxNC1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzICAgICA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM9MTc1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGhpbmljX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0xNzU4LVxcdC5nZXRfZHJ2aW5mbyA9IGhpbmljX2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MTc1OTpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTc2MC1cXHQuZ2V0X2xpbmtfZXh0X3N0YXRlID0gaGluaWNfZ2V0X2xpbmtfZXh0X3N0YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYz0xNzg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaGluaWN2Zl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTc5NC1cXHQuZ2V0X2RydmluZm8gPSBoaW5pY19nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjE3OTU6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jLTE3OTYtXFx0LmdldF9yaW5ncGFyYW0gPSBoaW5pY19nZXRfcmluZ3BhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfZXRodG9vbC5jPTQxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGhpbmljM19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2V0aHRvb2wuYy00MTgtXFx0LnNldF9tc2dsZXZlbCAgICAgICAgICAgICAgICAgICA9IGhpbmljM19zZXRfbXNnbGV2ZWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfZXRodG9vbC5jOjQxOTpcXHQuZ2V0X2xpbmsgICAgICAgICAgICAgICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19ldGh0b29sLmMtNDIwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZWhlYS9laGVhX2V0aHRvb2wuYz0yNjE9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlaGVhX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VoZWEvZWhlYV9ldGh0b29sLmMtMjY0LVxcdC5zZXRfbXNnbGV2ZWwgPSBlaGVhX3NldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZWhlYS9laGVhX2V0aHRvb2wuYzoyNjU6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZWhlYS9laGVhX2V0aHRvb2wuYy0yNjYtXFx0LmdldF9zdHJpbmdzID0gZWhlYV9nZXRfc3RyaW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yMjgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW1hY19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yMjk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyMjk3OlxcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTIyOTgtXFx0LmdldF9saW5rX2tzZXR0aW5ncyA9IGVtYWNfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjUxMj1zdGF0aWMgaW50IGVtYWNfbWRpb19wb2xsX2xpbmsoc3RydWN0IG1paV9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTIwLVxcdFxcdGRldl9lcnIoXFx1MDAyNmRldi1cXHUwMDNlb2ZkZXYtXFx1MDAzZWRldiwgXFxcImxpbmsgdXBkYXRlIGZhaWxlZCAoJWQpLlxcXCIsIHJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI1MjE6XFx0XFx0cmV0dXJuIGV0aHRvb2xfb3BfZ2V0X2xpbmsobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1MjItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYz0xMTcwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbmV0ZGV2X2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTE3MS1cXHQuZ2V0X2RydmluZm9cXHRcXHQgICAgICAgICA9IG5ldGRldl9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jOjExNzI6XFx0LmdldF9saW5rXFx0XFx0ICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTE3My1cXHQuZ2V0X3N0cmluZ3NcXHRcXHQgICAgICAgICA9IGlibXZldGhfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvZXRodG9vbC5jPTIzNjE9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlMTAwMF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9ldGh0b29sLmMtMjM3MC1cXHQubndheV9yZXNldFxcdFxcdD0gZTEwMDBfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvZXRodG9vbC5jOjIzNzE6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9ldGh0b29sLmMtMjM3Mi1cXHQuZ2V0X2VlcHJvbV9sZW5cXHRcXHQ9IGUxMDAwX2dldF9lZXByb21fbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfZXRodG9vbC5jPTExMzY9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmbTEwa19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX2V0aHRvb2wuYy0xMTQyLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gZm0xMGtfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfZXRodG9vbC5jOjExNDM6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX2V0aHRvb2wuYy0xMTQ0LVxcdC5nZXRfcGF1c2VwYXJhbVxcdFxcdD0gZm0xMGtfZ2V0X3BhdXNlcGFyYW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZXRodG9vbC5jPTU3ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpNDBlX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2V0aHRvb2wuYy01Nzk4LVxcdC5ud2F5X3Jlc2V0XFx0XFx0PSBpNDBlX253YXlfcmVzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2V0aHRvb2wuYzo1Nzk5OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZXRodG9vbC5jLTU4MDAtXFx0LmdldF9saW5rX2V4dF9zdGF0c1xcdD0gaTQwZV9nZXRfbGlua19leHRfc3RhdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jPTE4NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpYXZmX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2V0aHRvb2wuYy0xODU5LVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gaWF2Zl9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jOjE4NjA6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmMtMTg2MS1cXHQuZ2V0X3JpbmdwYXJhbVxcdFxcdD0gaWF2Zl9nZXRfcmluZ3BhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM9NDgzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGljZV9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ4NTItXFx0LnNlbGZfdGVzdFxcdFxcdD0gaWNlX3NlbGZfdGVzdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYzo0ODUzOlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00ODU0LVxcdC5nZXRfbGlua19leHRfc3RhdHNcXHQ9IGljZV9nZXRfbGlua19leHRfc3RhdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYz00ODkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaWNlX2V0aHRvb2xfc2FmZV9tb2RlX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ5MDAtXFx0LnNldF9tc2dsZXZlbFxcdFxcdD0gaWNlX3NldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYzo0OTAxOlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00OTAyLVxcdC5nZXRfZWVwcm9tX2xlblxcdFxcdD0gaWNlX2dldF9lZXByb21fbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM9NDkyMj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGljZV9ldGh0b29sX3JlcHJfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ5MjMtXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBpY2VfcmVwcl9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYzo0OTI0OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00OTI1LVxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gaWNlX3JlcHJfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZXRodG9vbC5jPTE4MDE9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpZHBmX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM4OjQwLjQ5MDU4NTM5N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI1NDYxNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgKipcblxuQWxyaWdodCwgc28gYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLi4uIHRoYXQgcmluZ3MgYSBiZWxsLiBJdCdzIGEgZnVuZGFtZW50YWwgb3BlcmF0aW9uLCBubyBxdWVzdGlvbi4gSWYgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgZnVsbHksIHRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGlzIGdvaW5nIHRvIGJlIGBuZXQvZXRodG9vbC9pb2N0bC5jYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZXRodG9vbCBJT0NUTCBoYW5kbGluZyB0eXBpY2FsbHkgcmVzaWRlcywgc28gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBldGh0b29sX29wX2dldF9saW5rYCBzaG91bGQgYmUgdGhlcmUuIFRpbWUgdG8gZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4ODcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozODo0My43MTYwNDk3NTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NzYyOTIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJldGh0b29sX29wX2dldF9saW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9ldGh0b29sL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZXRodG9vbC9pb2N0bC5jPTQ4PXN0YXRpYyBzdHJ1Y3QgZGV2bGluayAqbmV0ZGV2X3RvX2RldmxpbmtfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvZXRodG9vbC9pb2N0bC5jLTYwLVxcbm5ldC9ldGh0b29sL2lvY3RsLmM6NjE6dTMyIGV0aHRvb2xfb3BfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvZXRodG9vbC9pb2N0bC5jLTYyLXtcXG4tLVxcbm5ldC9ldGh0b29sL2lvY3RsLmMtNjctfVxcbm5ldC9ldGh0b29sL2lvY3RsLmM6Njg6RVhQT1JUX1NZTUJPTChldGh0b29sX29wX2dldF9saW5rKTtcXG5uZXQvZXRodG9vbC9pb2N0bC5jLTY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozODo0NC4wNzM2ODUwMzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExMTgxMjQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBldGh0b29sX29wX2dldF9saW5rYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBkaWcgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgbGluayBzdGF0dXMgcXVlcmllcyB2aWEgZXRodG9vbC4gSSdtIGdvaW5nIHN0cmFpZ2h0IGZvciB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L2V0aHRvb2wvaW9jdGwuY2AsIGFuZCB6ZXJvaW5nIGluIG9uIHRoZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgZnVuY3Rpb24uIEknbSBleHBlY3RpbmcgdGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgd2hlcmUgdGhlIGtlcm5lbCB0cmFuc2xhdGVzIGEgdXNlci1zcGFjZSByZXF1ZXN0IGZvciBsaW5rIGluZm9ybWF0aW9uIGludG8gc29tZXRoaW5nIGNvbmNyZXRlLiBJIHdhbnQgdG8gc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBOSUMgZHJpdmVycywgd2hhdCBkYXRhIHN0cnVjdHVyZXMgaXQgdXRpbGl6ZXMsIGFuZCBpZiB0aGVyZSBhcmUgYW55IGdvdGNoYXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJJ20ga2VlbiB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBtZWNoYW5pY3MgYmVoaW5kIGhvdyB0aGUga2VybmVsIGRldGVybWluZXMgaWYgYSBsaW5rIGlzIHVwIG9yIGRvd24sIHRoZSByZWxpYWJpbGl0eSBvZiB0aGlzIGluZm9ybWF0aW9uLCBhbmQgYW55IHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIG9yIGRlYnVnZ2luZy4gVGltZSB0byBzZWUgd2hhdCdzIHdoYXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MjY1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6NDcuMTg1NTAwMjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5NDExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9ldGh0b29sL2lvY3RsLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjEsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNjE6XFx0dTMyIGV0aHRvb2xfb3BfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gIDYyOlxcdHtcXG4gIDYzOlxcdFxcdC8qIFN5bmNocm9uaXplIGNhcnJpZXIgc3RhdGUgd2l0aCBsaW5rIHdhdGNoLCBzZWUgYWxzbyBydG5sX2dldGxpbmsoKSAqL1xcbiAgNjQ6XFx0XFx0X19saW5rd2F0Y2hfc3luY19kZXYoZGV2KTtcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0cmV0dXJuIG5ldGlmX2NhcnJpZXJfb2soZGV2KSA/IDEgOiAwO1xcbiAgNjc6XFx0fVxcbiAgNjg6XFx0RVhQT1JUX1NZTUJPTChldGh0b29sX29wX2dldF9saW5rKTtcXG4gIDY5OlxcdFxcbiAgNzA6XFx0aW50IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6NDcuMTg1OTk1NDRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk2NTE3NzA2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIExpbmsgV2F0Y2ggRnVuY3Rpb24qKlxuXG5SaWdodCwgc28gYF9fbGlua3dhdGNoX3N5bmNfZGV2KGRldilgIGp1c3QgZ290IGNhbGxlZC4gVGhhdCdzIGEga2V5IGZ1bmN0aW9uIGluIG5ldHdvcmsgZGV2aWNlIG1hbmFnZW1lbnQuIE15IGZpcnN0IHRob3VnaHQgaXM6IGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGlzIHBvcHBpbmcgdXAhIERvZXMgdGhpcyBmdW5jdGlvbiBuZWVkIHRoZSBgcnRubF9sb2NrYCBoZWxkPyBJIGNhbid0IGp1c3QgYXNzdW1lIGl0IGhhbmRsZXMgbG9ja2luZyBjb3JyZWN0bHkuIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCBhbmQgY29uZmlybSB3aGV0aGVyIGl0IHRha2VzIHRoYXQgbG9jayBvciByZWxpZXMgb24gdGhlIGNhbGxlciB0byBwcm92aWRlIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgbG9ja2luZyBzdHJhdGVneSB0byBiZSBzdXJlIHRoaW5ncyBhcmUgaGFuZGxlZCBzYWZlbHksIGF2b2lkaW5nIGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIG9yIGRhdGEgY29ycnVwdGlvbi4gR290dGEgc3RheSBzaGFycCBhbmQgbWFrZSBzdXJlIEkgZnVsbHkgdW5kZXJzdGFuZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3MTksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM4OjUwLjE1MTE3Nzg5N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0MjYwNzYxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2xpbmt3YXRjaF9zeW5jX2RldlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTQ1ODk9dm9pZCBsaW5rd2F0Y2hfc3luY19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo0NTkwOnZvaWQgX19saW5rd2F0Y2hfc3luY19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC00NTkxLVxcbi0tXFxubmV0L2NvcmUvbGlua193YXRjaC5jPTI1OT1zdGF0aWMgYm9vbCBsaW5rd2F0Y2hfY2xlYW5fZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvY29yZS9saW5rX3dhdGNoLmMtMjc3LVxcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYzoyNzg6dm9pZCBfX2xpbmt3YXRjaF9zeW5jX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0yNzkte1xcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYz02MT11MzIgZXRodG9vbF9vcF9nZXRfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYy02My1cXHQvKiBTeW5jaHJvbml6ZSBjYXJyaWVyIHN0YXRlIHdpdGggbGluayB3YXRjaCwgc2VlIGFsc28gcnRubF9nZXRsaW5rKCkgKi9cXG5uZXQvZXRodG9vbC9pb2N0bC5jOjY0OlxcdF9fbGlua3dhdGNoX3N5bmNfZGV2KGRldik7XFxubmV0L2V0aHRvb2wvaW9jdGwuYy02NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6NTIuMjkzNzkzMTgzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODA1OTUwMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYF9fbGlua3dhdGNoX3N5bmNfZGV2YCoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaW1lIHRvIGNyYWNrIG9wZW4gYG5ldC9jb3JlL2xpbmtfd2F0Y2guY2AgYW5kIHNwZWNpZmljYWxseSwgSSdtIHplcm9pbmcgaW4gb24gYF9fbGlua3dhdGNoX3N5bmNfZGV2YC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgbGlrZWx5IGlzIHRoZSAqY29yZSogZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHN5bmNocm9uaXppbmcgbmV0d29yayBkZXZpY2UgbGluayBzdGF0ZSBjaGFuZ2VzLiBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24sIHRoZSBkb3VibGUgdW5kZXJzY29yZSB1c3VhbGx5IGluZGljYXRlcyBhbiBpbnRlcm5hbCwgaGVscGVyIGZ1bmN0aW9uLCBub3QgaW50ZW5kZWQgZm9yIGRpcmVjdCBleHRlcm5hbCBjYWxscy5cblxuS25vd2luZyB0aGUgbmV0d29ya2luZyBzdGFjaywgSSdtIGV4cGVjdGluZyB0aGlzIGZ1bmN0aW9uIHRvIGhhbmRsZSB0YXNrcyBsaWtlOlxuXG4qICAgKipTdGF0ZSB0cmFuc2l0aW9uIGxvZ2ljOioqIEl0IHdpbGwgaGF2ZSBzb21lIGxvZ2ljIGRlYWxpbmcgd2l0aCB0aGUgcG9zc2libGUgbGluayBzdGF0ZXMsIG1vc3QgbGlrZWx5IHVwLCBkb3duLCBjYXJyaWVyIGNoYW5nZXMgZXRjLlxuKiAgICoqRXZlbnQgbm90aWZpY2F0aW9uOioqIEknbSBndWVzc2luZyBpdCB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciB0cmlnZ2VyaW5nIGFwcHJvcHJpYXRlIG5vdGlmaWNhdGlvbnMvY2FsbGJhY2tzIHRvIHJlbGV2YW50IHN1YnN5c3RlbXMgYmFzZWQgb24gdGhlIGxpbmsgc3RhdGUuIFRoaXMgbGlrZWx5IGludm9sdmVzIHNvbWUgZm9ybSBvZiB0YXNrbGV0IG9yIHdvcmtxdWV1ZSB1c2FnZSB0byBoYW5kbGUgdGhlIGV2ZW50cy5cbiogICAqKlJhY2UgY29uZGl0aW9uIHByb3RlY3Rpb246KiogSSdsbCBiZSBjdXJpb3VzIHRvIGxvb2sgYXQgYW55IGxvY2tpbmcgbWVjaGFuaXNtcyB1c2VkIHRvIGVuc3VyZSB0aGUgc3RhdGUgdXBkYXRlcyBhcmUgdGhyZWFkLXNhZmUsIHBhcnRpY3VsYXJseSBnaXZlbiB0aGUgYXN5bmNocm9ub3VzIG5hdHVyZSBvZiBuZXR3b3JrIGV2ZW50cy5cbiogICAqKkVycm9yIGhhbmRsaW5nOioqIFdoYXQgZWRnZSBjYXNlcyBkb2VzIGl0IGFjY291bnQgZm9yPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBkZXZpY2UgZHJpdmVyIGludGVyYWN0aW9ucyBvciBoYXJkd2FyZSBmYWlsdXJlcz9cblxuSSBuZWVkIHRvIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kIC0gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGRldmljZSBkcml2ZXJzLCBvdGhlciBuZXR3b3JrIHN1YnN5c3RlbXMsIGFuZCBob3cgaXQgYXZvaWRzIGFueSBkYXRhIGNvcnJ1cHRpb24gb3IgcmFjZSBjb25kaXRpb25zLiBUaGlzIGlzIGdvaW5nIHRvIGJlIG15IHN0YXJ0aW5nIHBvaW50IGluIGV2YWx1YXRpbmcgYW55IHBvc3NpYmxlIHByb2JsZW1zLCBvciB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciBvZiB0aGF0IGZlYXR1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MjUyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6NTYuMzc0MzkwNzIyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9jb3JlL2xpbmtfd2F0Y2guY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzgsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNzg6XFx0dm9pZCBfX2xpbmt3YXRjaF9zeW5jX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiAyNzk6XFx0e1xcbiAyODA6XFx0XFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpO1xcbiAyODE6XFx0XFxuIDI4MjpcXHRcXHRpZiAobGlua3dhdGNoX2NsZWFuX2RldihkZXYpKSB7XFxuIDI4MzpcXHRcXHRcXHRsaW5rd2F0Y2hfZG9fZGV2KGRldik7XFxuIDI4NDpcXHRcXHRcXHQvKiBVc2UgX19kZXZfcHV0KCkgYmVjYXVzZSBuZXRkZXZfdHJhY2tlcl9mcmVlKCkgd2FzIGFscmVhZHlcXG4gMjg1OlxcdFxcdFxcdCAqIGNhbGxlZCBpbnNpZGUgbGlua3dhdGNoX2NsZWFuX2RldigpLlxcbiAyODY6XFx0XFx0XFx0ICovXFxuIDI4NzpcXHRcXHRcXHRfX2Rldl9wdXQoZGV2KTtcXG4gMjg4OlxcdFxcdH1cXG4gMjg5OlxcdH1cXG4gMjkwOlxcdFxcbiAyOTE6XFx0dm9pZCBsaW5rd2F0Y2hfc3luY19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gMjkyOlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6NTYuMzc0NDY2MjEyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0OTMyMzU3MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFdGh0b29sIExpbmsgU3RhdGUgTG9ja2luZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoZGV2KWAgY2FsbC4gUmlnaHQsIGl0IGNoZWNrcyB0aGF0IHRoZSBgZGV2LVx1MDAzZWxvY2tgIGlzIGhlbGQgaWYgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIGlzIHRydWUuIFRoYXQncyB0aGUgYmFzZWxpbmUuIElmIGBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYCBpcyB0cnVlLCB0aGUgY29kZSBpcyBzdXBwb3NlZCB0byBhc3NlcnQgdGhhdCB0aGUgYGRldi1cdTAwM2Vsb2NrYCBpcyBhbHJlYWR5IGhlbGQuIFRoZSB0cmlja3kgdGhpbmcgaXMgdGhhdCBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWAgYmVpbmcgdHJ1ZSBhbHNvIG1lYW5zIGBuZWVkX3J0bmxgIGlzIGZhbHNlIGJ5IGRlZmF1bHQuXG5cblNvLCBgX19kZXZfZXRodG9vbGAgd2lsbCBjYWxsIGBuZXRkZXZfbG9ja19vcHMoZGV2KWAsIHdoaWNoIGNvcnJlY3RseSBncmFicyBgZGV2LVx1MDAzZWxvY2tgLiBUaGVuLCBgZGV2X2V0aHRvb2xfbG9ja2VkYCBpcyBpbnZva2VkLCB3aGljaCB0aGVuIGRpdmVzIGludG8gYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLiBJdCdzIHdpdGhpbiBgZXRodG9vbF9vcF9nZXRfbGlua2AgdGhhdCB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBiZWNhdXNlIGl0IGNhbGxzIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAuIEFuZCAqdGhhdCogZnVuY3Rpb24sIGNydWNpYWxseSwgdGhlbiBhc3NlcnRzIHRoYXQgYGRldi1cdTAwM2Vsb2NrYCBpcyBoZWxkLiBTbywgYXMgZmFyIGFzIEkgY2FuIHNlZSwgYGRldi1cdTAwM2Vsb2NrYCBpcywgaW4gZmFjdCwgaGVsZCBhdCBhbGwgdGhvc2UgcG9pbnRzISBUaGUgbG9jayBzaG91bGQgYmUgY29ycmVjdGx5IGFjcXVpcmVkIGFuZCByZWxlYXNlZC5cblxuQnV0Li4ud2FpdC4gVGhlIHBhdGNoIG5vdGVzIHN0YXRlIHRoYXQgYGV0aHRvb2xfb3BfZ2V0X2xpbmsoKWAgc3luY3MgbGluayB3YXRjaCB1bmRlciBgcnRubF9sb2NrYCBhbmQgdGhleSBhcmUgYWRkaW5nIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgLiAqVGhhdCdzKiB0aGUgYml0IHRoYXQncyB0aHJvd2luZyBtZS4gV2h5IHRoZSBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCBpZiB0aGUgZGV2aWNlIGxvY2sgaXMgYWxyZWFkeSBoZWxkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkaWcgaW50byBgbGlua3dhdGNoX2RvX2RldihkZXYpYCBub3cgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg4MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjAxLjg2NzcwNjU2NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDgzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2NvcmUvbGlua193YXRjaC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyMDpcXHRcXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZsd2V2ZW50bGlzdF9sb2NrKTtcXG4gMjIxOlxcdFxcdGxpc3Rfc3BsaWNlX2luaXQoXFx1MDAyNmx3ZXZlbnRsaXN0LCBcXHUwMDI2d3JrKTtcXG4gMjIyOlxcdFxcbiAyMjM6XFx0XFx0d2hpbGUgKCFsaXN0X2VtcHR5KFxcdTAwMjZ3cmspIFxcdTAwMjZcXHUwMDI2IGRvX2RldiBcXHUwMDNlIDApIHtcXG4gMjI0OlxcdFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIDIyNTpcXHRcXG4gMjI2OlxcdFxcdFxcdGRldiA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNndyaywgc3RydWN0IG5ldF9kZXZpY2UsIGxpbmtfd2F0Y2hfbGlzdCk7XFxuIDIyNzpcXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWxpbmtfd2F0Y2hfbGlzdCk7XFxuIDIyODpcXHRcXG4gMjI5OlxcdFxcdFxcdGlmICghbmV0aWZfZGV2aWNlX3ByZXNlbnQoZGV2KSB8fFxcbiAyMzA6XFx0XFx0XFx0ICAgICh1cmdlbnRfb25seSBcXHUwMDI2XFx1MDAyNiAhbGlua3dhdGNoX3VyZ2VudF9ldmVudChkZXYpKSkge1xcbiAyMzE6XFx0XFx0XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2ZGV2LVxcdTAwM2VsaW5rX3dhdGNoX2xpc3QsIFxcdTAwMjZsd2V2ZW50bGlzdCk7XFxuIDIzMjpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMjMzOlxcdFxcdFxcdH1cXG4gMjM0OlxcdFxcdFxcdC8qIFdlIG11c3QgZnJlZSBuZXRkZXYgdHJhY2tlciB1bmRlclxcbiAyMzU6XFx0XFx0XFx0ICogdGhlIHNwaW5sb2NrIHByb3RlY3Rpb24uXFxuIDIzNjpcXHRcXHRcXHQgKi9cXG4gMjM3OlxcdFxcdFxcdG5ldGRldl90cmFja2VyX2ZyZWUoZGV2LCBcXHUwMDI2ZGV2LVxcdTAwM2VsaW5rd2F0Y2hfZGV2X3RyYWNrZXIpO1xcbiAyMzg6XFx0XFx0XFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZsd2V2ZW50bGlzdF9sb2NrKTtcXG4gMjM5OlxcdFxcdFxcdG5ldGRldl9sb2NrX29wcyhkZXYpO1xcbiAyNDA6XFx0XFx0XFx0bGlua3dhdGNoX2RvX2RldihkZXYpO1xcbiAyNDE6XFx0XFx0XFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4gMjQyOlxcdFxcdFxcdC8qIFVzZSBfX2Rldl9wdXQoKSBiZWNhdXNlIG5ldGRldl90cmFja2VyX2ZyZWUoKSB3YXMgYWxyZWFkeVxcbiAyNDM6XFx0XFx0XFx0ICogY2FsbGVkIGFib3ZlLiBNdXN0IGJlIGFmdGVyIG5ldGRldl91bmxvY2tfb3BzKCkgdG8gcHJldmVudFxcbiAyNDQ6XFx0XFx0XFx0ICogbmV0ZGV2X3J1bl90b2RvKCkgZnJvbSBmcmVlaW5nIHRoZSBkZXZpY2Ugd2hpbGUgc3RpbGwgaW4gdXNlLlxcbiAyNDU6XFx0XFx0XFx0ICovXFxuIDI0NjpcXHRcXHRcXHRfX2Rldl9wdXQoZGV2KTtcXG4gMjQ3OlxcdFxcdFxcdGRvX2Rldi0tO1xcbiAyNDg6XFx0XFx0XFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2bHdldmVudGxpc3RfbG9jayk7XFxuIDI0OTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjAxLjg2NzgxNjcxNVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM2NjYzNDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkRpZ2dpbmcgaW50byBgbGlua3dhdGNoX2RvX2RldmAgYW5kIHRoZSBMb2NraW5nKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIGdldCB0aGlzIHN0cmFpZ2h0LiBUaGUgZnVuY3Rpb24gYGxpbmt3YXRjaF9kb19kZXZgIGlzICpkZWZpbml0ZWx5KiBjYWxsZWQgd2l0aCBgbmV0ZGV2X2xvY2tfb3BzKGRldilgIGFscmVhZHkgaGVsZC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGludGVyYWN0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuIFRoZSBsb2NraW5nIGNvbnRleHQgaXMgYWJzb2x1dGVseSBjcml0aWNhbCBoZXJlLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb2RlIHBhdGggdGhhdCBpbnZva2VzIGBsaW5rd2F0Y2hfZG9fZGV2YCB0byBjb25maXJtIHRoZSBsb2NrIGFjcXVpc2l0aW9uLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbGlua3dhdGNoX2RvX2RldmAgaW1tZWRpYXRlbHkgdG8gc2VlIHdoYXQgaXQncyBkb2luZyB3aGlsZSB1bmRlciB0aGlzIGxvY2suIEFueSBwb3RlbnRpYWwgY29udGVudGlvbiBvciBkZWFkbG9ja3MgYXJlIHdoYXQgSSdtIGxvb2tpbmcgZm9yIG5vdy4gTGV0J3Mgc2VlIHdoYXQncyBnb2luZyBvbiBpbiB0aGF0IGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTEyMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6MDUuMDA0NDgzMzI3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9jb3JlL2xpbmtfd2F0Y2guY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODA6XFx0XFx0aWYgKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfVVApIHtcXG4gMTgxOlxcdFxcdFxcdGlmIChuZXRpZl9jYXJyaWVyX29rKGRldikpXFxuIDE4MjpcXHRcXHRcXHRcXHRkZXZfYWN0aXZhdGUoZGV2KTtcXG4gMTgzOlxcdFxcdFxcdGVsc2VcXG4gMTg0OlxcdFxcdFxcdFxcdGRldl9kZWFjdGl2YXRlKGRldiwgdHJ1ZSk7XFxuIDE4NTpcXHRcXG4gMTg2OlxcdFxcdFxcdG5ldGlmX3N0YXRlX2NoYW5nZShkZXYpO1xcbiAxODc6XFx0XFx0fVxcbiAxODg6XFx0fVxcbiAxODk6XFx0XFxuIDE5MDpcXHRzdGF0aWMgdm9pZCBfX2xpbmt3YXRjaF9ydW5fcXVldWUoaW50IHVyZ2VudF9vbmx5KVxcbiAxOTE6XFx0e1xcbiAxOTI6XFx0I2RlZmluZSBNQVhfRE9fREVWX1BFUl9MT09QXFx0MTAwXFxuIDE5MzpcXHRcXG4gMTk0OlxcdFxcdGludCBkb19kZXYgPSBNQVhfRE9fREVWX1BFUl9MT09QO1xcbiAxOTU6XFx0XFx0LyogVXNlIGEgbG9jYWwgbGlzdCBoZXJlIHNpbmNlIHdlIGFkZCBub24tdXJnZW50XFxuIDE5NjpcXHRcXHQgKiBldmVudHMgYmFjayB0byB0aGUgZ2xvYmFsIG9uZSB3aGVuIGNhbGxlZCB3aXRoXFxuIDE5NzpcXHRcXHQgKiB1cmdlbnRfb25seT0xLlxcbiAxOTg6XFx0XFx0ICovXFxuIDE5OTpcXHRcXHRMSVNUX0hFQUQod3JrKTtcXG4gMjAwOlxcdFxcbiAyMDE6XFx0XFx0LyogR2l2ZSB1cmdlbnQgY2FzZSBtb3JlIGJ1ZGdldCAqL1xcbiAyMDI6XFx0XFx0aWYgKHVyZ2VudF9vbmx5KVxcbiAyMDM6XFx0XFx0XFx0ZG9fZGV2ICs9IE1BWF9ET19ERVZfUEVSX0xPT1A7XFxuIDIwNDpcXHRcXG4gMjA1OlxcdFxcdC8qXFxuIDIwNjpcXHRcXHQgKiBMaW1pdCB0aGUgbnVtYmVyIG9mIGxpbmt3YXRjaCBldmVudHMgdG8gb25lXFxuIDIwNzpcXHRcXHQgKiBwZXIgc2Vjb25kIHNvIHRoYXQgYSBydW5hd2F5IGRyaXZlciBkb2VzIG5vdFxcbiAyMDg6XFx0XFx0ICogY2F1c2UgYSBzdG9ybSBvZiBtZXNzYWdlcyBvbiB0aGUgbmV0bGlua1xcbiAyMDk6XFx0XFx0ICogc29ja2V0LiAgVGhpcyBsaW1pdCBkb2VzIG5vdCBhcHBseSB0byB1cCBldmVudHNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6MDUuMDA0NTY0NTg3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MjE2MDk4NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkFuYWx5emluZyBEZXZpY2UgQWN0aXZhdGlvbi9EZWFjdGl2YXRpb24gaW4gdGhlIExpbmt3YXRjaCBDb250ZXh0KipcblxuSG1tLCBgbGlua3dhdGNoX2RvX2RldmAgaXMgY2FsbGluZyBgZGV2X2FjdGl2YXRlYCBhbmQgYGRldl9kZWFjdGl2YXRlYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYXQgdGhvc2UgcG9pbnRzLiBTbywgcmlnaHQgbm93LCBteSBmb2N1cyBuZWVkcyB0byBzaGlmdCB0byB0aGUgaW50ZXJuYWwgd29ya2luZ3Mgb2YgYGRldl9hY3RpdmF0ZWAgYW5kIGBkZXZfZGVhY3RpdmF0ZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHJvbGVzIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIGBsaW5rd2F0Y2hfZG9fZGV2YC4gTGV0J3MgZGlnIGludG8gdGhvc2UgZnVuY3Rpb25zIG5leHQuIFRoaXMgY291bGQgYmUgd2hlcmUgdGhlIG1hZ2ljLCBvciB0aGUgdHJvdWJsZSwgbGllcy4gVGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgZGV2aWNlIG1hbmFnZW1lbnQgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxODAyLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozOTowOC44MjYxNzgwMDJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MTgwNjkyOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2X2FjdGl2YXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2xvb3BiYWNrLmM9Mjc1PXN0YXRpYyBpbnQgX19pbml0IGJsYWNraG9sZV9uZXRkZXZfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvbG9vcGJhY2suYy0yODMtXFx0ZGV2X2luaXRfc2NoZWR1bGVyKGJsYWNraG9sZV9uZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2xvb3BiYWNrLmM6Mjg0OlxcdGRldl9hY3RpdmF0ZShibGFja2hvbGVfbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9sb29wYmFjay5jLTI4NS1cXHRydG5sX25ldF91bmxvY2soXFx1MDAyNmluaXRfbmV0KTtcXG4tLVxcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmg9NzI2PXZvaWQgZGV2X3NodXRkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmg6NzI3OnZvaWQgZGV2X2FjdGl2YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmgtNzI4LXZvaWQgZGV2X2RlYWN0aXZhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCByZXNldF9uZWVkZWQpO1xcbi0tXFxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmM9Nzc9c3RhdGljIHZvaWQgcmZjb21tX2Rldl9kZXN0cnVjdChzdHJ1Y3QgdHR5X3BvcnQgKnBvcnQpXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS90dHkuYy0xMDYtLyogZGV2aWNlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uOiBvcGVuIHRoZSBkbGMgKi9cXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS90dHkuYzoxMDc6c3RhdGljIGludCByZmNvbW1fZGV2X2FjdGl2YXRlKHN0cnVjdCB0dHlfcG9ydCAqcG9ydCwgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSlcXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS90dHkuYy0xMDgte1xcbi0tXFxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmM9MTM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR5X3BvcnRfb3BlcmF0aW9ucyByZmNvbW1fcG9ydF9vcHMgPSB7XFxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmMtMTM5LVxcdC5kZXN0cnVjdCA9IHJmY29tbV9kZXZfZGVzdHJ1Y3QsXFxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmM6MTQwOlxcdC5hY3RpdmF0ZSA9IHJmY29tbV9kZXZfYWN0aXZhdGUsXFxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmMtMTQxLVxcdC5zaHV0ZG93biA9IHJmY29tbV9kZXZfc2h1dGRvd24sXFxuLS1cXG5uZXQvY29yZS9kZXYuYz0xNjY3PXN0YXRpYyBpbnQgX19kZXZfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvY29yZS9kZXYuYy0xNzEwLVxcdFxcdGRldl9zZXRfcnhfbW9kZShkZXYpO1xcbm5ldC9jb3JlL2Rldi5jOjE3MTE6XFx0XFx0ZGV2X2FjdGl2YXRlKGRldik7XFxubmV0L2NvcmUvZGV2LmMtMTcxMi1cXHRcXHRhZGRfZGV2aWNlX3JhbmRvbW5lc3MoZGV2LVxcdTAwM2VkZXZfYWRkciwgZGV2LVxcdTAwM2VhZGRyX2xlbik7XFxuLS1cXG5uZXQvY29yZS9saW5rX3dhdGNoLmM9MTY2PXN0YXRpYyB2b2lkIGxpbmt3YXRjaF9kb19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0xODEtXFx0XFx0aWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2KSlcXG5uZXQvY29yZS9saW5rX3dhdGNoLmM6MTgyOlxcdFxcdFxcdGRldl9hY3RpdmF0ZShkZXYpO1xcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0xODMtXFx0XFx0ZWxzZVxcbi0tXFxubmV0L2RzYS91c2VyLmM9MzQ3OD1zdGF0aWMgaW50IGRzYV91c2VyX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbi0tXFxubmV0L2RzYS91c2VyLmMtMzU2OS1cXHRcXHRcXHQgKiBORVRERVZfVVAgZXZlbnQgaXMgbm90IGVub3VnaCB0byBmbGFnIGEgcG9ydCBhcyByZWFkeS5cXG5uZXQvZHNhL3VzZXIuYzozNTcwOlxcdFxcdFxcdCAqIFdlIGFsc28gaGF2ZSB0byB3YWl0IGZvciBsaW5rd2F0Y2hfZG9fZGV2IHRvIGRldl9hY3RpdmF0ZVxcbm5ldC9kc2EvdXNlci5jLTM1NzEtXFx0XFx0XFx0ICogYW5kIGVtaXQgYSBORVRERVZfQ0hBTkdFIGV2ZW50Llxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0xMDkxPXN0YXRpYyBpbnQgcWRpc2NfZ3JhZnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IFFkaXNjICpwYXJlbnQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTExNjktXFx0XFx0aWYgKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfVVApXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMTcwOlxcdFxcdFxcdGRldl9hY3RpdmF0ZShkZXYpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTE3MS1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTI2OT1zdGF0aWMgdm9pZCB0cmFuc2l0aW9uX29uZV9xZGlzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI4NS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMjg2OnZvaWQgZGV2X2FjdGl2YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI4Ny17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzExLX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMzEyOkVYUE9SVF9TWU1CT0woZGV2X2FjdGl2YXRlKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzEzLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTQ2OD1pbnQgZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0ODUtXFx0aWYgKHVwKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0ODY6XFx0XFx0ZGV2X2FjdGl2YXRlKGRldik7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQ4Ny1cXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYz0xMzg4PWh0Yl9ncmFmdF9oZWxwZXIoc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLCBzdHJ1Y3QgUWRpc2MgKm5ld19xKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYy0xMzk4LVxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MTM5OTpcXHRcXHRkZXZfYWN0aXZhdGUoZGV2KTtcXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTE0MDAtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTE0MTU9c3RhdGljIHZvaWQgaHRiX29mZmxvYWRfbW92ZV9xZGlzYyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGh0Yl9jbGFzcyAqY2xfb2xkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYy0xNDQxLVxcdFxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MTQ0MjpcXHRcXHRcXHRkZXZfYWN0aXZhdGUoZGV2KTtcXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTE0NDMtXFx0XFx0V0FSTl9PTighKHFkaXNjLVxcdTAwM2VmbGFncyBcXHUwMDI2IFRDUV9GX0JVSUxUSU4pKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXEuYz0yMDk9c3RhdGljIGludCBtcV9ncmFmdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgbG9uZyBjbCwgc3RydWN0IFFkaXNjICpuZXcsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX21xLmMtMjIyLVxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKVxcbm5ldC9zY2hlZC9zY2hfbXEuYzoyMjM6XFx0XFx0ZGV2X2FjdGl2YXRlKGRldik7XFxubmV0L3NjaGVkL3NjaF9tcS5jLTIyNC1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmM9NDYyPXN0YXRpYyBpbnQgbXFwcmlvX2dyYWZ0KHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLCBzdHJ1Y3QgUWRpc2MgKm5ldyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmMtNDc5LVxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKVxcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmM6NDgwOlxcdFxcdGRldl9hY3RpdmF0ZShkZXYpO1xcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmMtNDgxLVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yMTc5PXN0YXRpYyBpbnQgdGFwcmlvX2dyYWZ0KHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjE2LVxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjIxNzpcXHRcXHRkZXZfYWN0aXZhdGUoZGV2KTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyMTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjEyLjI0NDI1MzcyN1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDg1MDA0ODg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkludmVzdGlnYXRpbmcgYGRldl9hY3RpdmF0ZWAgYW5kIGl0cyBMb2NraW5nIFJlcXVpcmVtZW50cyoqXG5cblJpZ2h0LCBzbyBgZGV2X2FjdGl2YXRlYC4uLiB0aGF0IGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYCwgd2hpY2ggaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBOb3csIGEga2V5IHF1ZXN0aW9uIHBvcHMgdXAgaW1tZWRpYXRlbHk6IGRvZXMgYGRldl9hY3RpdmF0ZWAgcmVxdWlyZSBob2xkaW5nIHRoZSBgcnRubF9sb2NrYD8gSWYgaXQgZG9lcywgdGhhdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGNvZGUsIGVzcGVjaWFsbHkgYW55dGhpbmcgcmVsYXRlZCB0byByb3V0aW5nIGFuZCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYWJvdXQgdGhpcy4gVGltZSB0byBkaWcgaW50byB0aGUgc291cmNlIGNvZGUgb2YgYGRldl9hY3RpdmF0ZWAgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCBpdHMgbG9jayB1c2FnZSBsb29rcyBsaWtlLiBHb3R0YSBiZSBjYXJlZnVsIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzU3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6MTUuMzI5MjYyNTUxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzI1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjg2LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjg2OlxcdHZvaWQgZGV2X2FjdGl2YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuMTI4NzpcXHR7XFxuMTI4ODpcXHRcXHRpbnQgbmVlZF93YXRjaGRvZztcXG4xMjg5OlxcdFxcbjEyOTA6XFx0XFx0LyogTm8gcXVldWVpbmcgZGlzY2lwbGluZSBpcyBhdHRhY2hlZCB0byBkZXZpY2U7XFxuMTI5MTpcXHRcXHQgKiBjcmVhdGUgZGVmYXVsdCBvbmUgZm9yIGRldmljZXMsIHdoaWNoIG5lZWQgcXVldWVpbmdcXG4xMjkyOlxcdFxcdCAqIGFuZCBub3F1ZXVlX3FkaXNjIGZvciB2aXJ0dWFsIGludGVyZmFjZXNcXG4xMjkzOlxcdFxcdCAqL1xcbjEyOTQ6XFx0XFxuMTI5NTpcXHRcXHRpZiAocnRubF9kZXJlZmVyZW5jZShkZXYtXFx1MDAzZXFkaXNjKSA9PSBcXHUwMDI2bm9vcF9xZGlzYylcXG4xMjk2OlxcdFxcdFxcdGF0dGFjaF9kZWZhdWx0X3FkaXNjcyhkZXYpO1xcbjEyOTc6XFx0XFxuMTI5ODpcXHRcXHRpZiAoIW5ldGlmX2NhcnJpZXJfb2soZGV2KSlcXG4xMjk5OlxcdFxcdFxcdC8qIERlbGF5IGFjdGl2YXRpb24gdW50aWwgbmV4dCBjYXJyaWVyLW9uIGV2ZW50ICovXFxuMTMwMDpcXHRcXHRcXHRyZXR1cm47XFxuMTMwMTpcXHRcXG4xMzAyOlxcdFxcdG5lZWRfd2F0Y2hkb2cgPSAwO1xcbjEzMDM6XFx0XFx0bmV0ZGV2X2Zvcl9lYWNoX3R4X3F1ZXVlKGRldiwgdHJhbnNpdGlvbl9vbmVfcWRpc2MsIFxcdTAwMjZuZWVkX3dhdGNoZG9nKTtcXG4xMzA0OlxcdFxcdGlmIChkZXZfaW5ncmVzc19xdWV1ZShkZXYpKVxcbjEzMDU6XFx0XFx0XFx0dHJhbnNpdGlvbl9vbmVfcWRpc2MoZGV2LCBkZXZfaW5ncmVzc19xdWV1ZShkZXYpLCBOVUxMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6MTUuMzI5Mzc3NzUxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5OTc5MzM0MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgcnRubF9kZXJlZmVyZW5jZWAgQ2FsbCBpbiBEZXZpY2UgQWN0aXZhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgbXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIGBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2VxZGlzYylgLiBJIGtub3cgdGhhdCBmdW5jdGlvbiByZXF1aXJlcyBgcnRubF9sb2NrYCB0byBiZSBoZWxkLiBUaGF0J3MgYSBjcml0aWNhbCBkZXRhaWwsIGFuZCBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgY29uZGl0aW9uIGlzIG1ldC5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGNhbGwgc3RhY2s6IGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgY2FsbHMgYGxpbmt3YXRjaF9kb19kZXZgLCB3aGljaCB0aGVuIGNhbGxzIGBkZXZfYWN0aXZhdGVgLiBgZGV2X2FjdGl2YXRlYCBpcyB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgcHJvYmxlbWF0aWMgYHJ0bmxfZGVyZWZlcmVuY2VgLiBTbywgaWYgYGRldl9hY3RpdmF0ZWAgbmVlZHMgdGhlIGBydG5sX2xvY2tgLCB0aGVuIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgKm11c3QqIGJlIGNhbGxlZCB3aXRoIHRoYXQgbG9jayBoZWxkLiBUaGF0J3MgYSBkZXBlbmRlbmN5IEkgbmVlZCB0byB2ZXJpZnkuXG5cbkJ1dCBoZXJlJ3MgdGhlIGNvbmZ1c2luZyBwYXJ0OiBgX19saW5rd2F0Y2hfc3luY19kZXZgIG9ubHkgaGFzIGBuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldilgLiBUaGlzIGFzc2VydHMgYGRldi1cdTAwM2Vsb2NrYCBpZiB0aGUgZGV2aWNlIG5lZWRzIGl0LlxuXG5BbmQgYGRldl9hY3RpdmF0ZWAgaGFzIGEgcHJvYmxlbSwgaXQgdXNlcyBgcnRubF9kZXJlZmVyZW5jZWAgd2hpY2ggYXNzZXJ0cyBgcnRubF9sb2NrYCBvciBgcmN1X3JlYWRfbG9ja2AuXG5cblRoZSBxdWVzdGlvbiBiZWNvbWVzOiBEb2VzIGBsaW5rd2F0Y2hfZG9fZGV2YCwgd2hpY2ggc2l0cyBiZXR3ZWVuIHRoZW0sIGhvbGQgdGhlIGBydG5sX2xvY2tgPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUuIEknbGwgbmVlZCB0byBsb29rIGF0IGBsaW5rd2F0Y2hfZXZlbnRgIGluIGBuZXQvY29yZS9saW5rX3dhdGNoLmNgIHRvIHRyYWNlIHRoZSBsb2NrIGFjcXVpc2l0aW9uIGFuZCByZWxlYXNlLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGUgYHJ0bmxfbG9ja2AgaXMgYWNxdWlyZWQsIGlmIGF0IGFsbCwgYW5kIGhlbGQgYWNyb3NzIHRoYXQgZnVuY3Rpb24gY2FsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzMjMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozOToyMS4zMjczMTU2NjFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2NvcmUvbGlua193YXRjaC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI1MDpcXHRcXG4gMjUxOlxcdFxcdC8qIEFkZCB0aGUgcmVtYWluaW5nIHdvcmsgYmFjayB0byBsd2V2ZW50bGlzdCAqL1xcbiAyNTI6XFx0XFx0bGlzdF9zcGxpY2VfaW5pdChcXHUwMDI2d3JrLCBcXHUwMDI2bHdldmVudGxpc3QpO1xcbiAyNTM6XFx0XFxuIDI1NDpcXHRcXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmx3ZXZlbnRsaXN0KSlcXG4gMjU1OlxcdFxcdFxcdGxpbmt3YXRjaF9zY2hlZHVsZV93b3JrKDApO1xcbiAyNTY6XFx0XFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZsd2V2ZW50bGlzdF9sb2NrKTtcXG4gMjU3OlxcdH1cXG4gMjU4OlxcdFxcbiAyNTk6XFx0c3RhdGljIGJvb2wgbGlua3dhdGNoX2NsZWFuX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiAyNjA6XFx0e1xcbiAyNjE6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gMjYyOlxcdFxcdGJvb2wgY2xlYW4gPSBmYWxzZTtcXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmx3ZXZlbnRsaXN0X2xvY2ssIGZsYWdzKTtcXG4gMjY1OlxcdFxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2ZGV2LVxcdTAwM2VsaW5rX3dhdGNoX2xpc3QpKSB7XFxuIDI2NjpcXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWxpbmtfd2F0Y2hfbGlzdCk7XFxuIDI2NzpcXHRcXHRcXHRjbGVhbiA9IHRydWU7XFxuIDI2ODpcXHRcXHRcXHQvKiBXZSBtdXN0IHJlbGVhc2UgbmV0ZGV2IHRyYWNrZXIgdW5kZXJcXG4gMjY5OlxcdFxcdFxcdCAqIHRoZSBzcGlubG9jayBwcm90ZWN0aW9uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozOToyMS4zMjc0MDY3NjFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ0MzU4MTY5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJZGVudGlmeWluZyB0aGUgV29ya3F1ZXVlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgdGhyb3VnaCB0aGlzIGNvZGUuLi4gYW5kIGFoYSEgVGhlIGBsaW5rd2F0Y2hfZXZlbnRgIGZ1bmN0aW9uLi4uIHRoYXQncyB0aGUga2V5LiBUaGF0J3MgdGhlIGZ1bmN0aW9uIGJlaW5nIHN1Ym1pdHRlZCB0byB0aGUgd29ya3F1ZXVlLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50IEkgbmVlZCB0byBmb2N1cyBvbi4gRm9yZ2V0IGFib3V0IHRoZSBvdGhlciBzdHVmZiwgdGhlIFwiaW50ZXJlc3RpbmdcIiBiaXQgaXMgcmlnaHQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyNjEsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjI3Ljc3MDk5MjU0MVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNjUzMTc5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaW5rd2F0Y2hfZXZlbnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYz0yODE3PXN0YXRpYyBpbnQgZG9fcmVzZXQoc3RydWN0IGlibXZuaWNfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMjg3Mi1cXHRcXHRcXHQgKiByZS1hY3F1aXJlIGFmdGVyIHRoZSBsaW5rIHN0YXRlIGNoYW5nZSB0byBhbGxvd1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM6Mjg3MzpcXHRcXHRcXHQgKiBsaW5rd2F0Y2hfZXZlbnQgdG8gZ3JhYiB0aGUgUlROTCBsb2NrIGFuZCBydW4gZHVyaW5nXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0yODc0LVxcdFxcdFxcdCAqIGEgcmVzZXQuXFxuLS1cXG5uZXQvY29yZS9saW5rX3dhdGNoLmM9Mjg9c3RhdGljIHVuc2lnbmVkIGxvbmcgbGlua3dhdGNoX25leHRldmVudDtcXG5uZXQvY29yZS9saW5rX3dhdGNoLmMtMjktXFxubmV0L2NvcmUvbGlua193YXRjaC5jOjMwOnN0YXRpYyB2b2lkIGxpbmt3YXRjaF9ldmVudChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmR1bW15KTtcXG5uZXQvY29yZS9saW5rX3dhdGNoLmM6MzE6c3RhdGljIERFQ0xBUkVfREVMQVlFRF9XT1JLKGxpbmt3YXRjaF93b3JrLCBsaW5rd2F0Y2hfZXZlbnQpO1xcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0zMi1cXG4tLVxcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYz0zMDU9dm9pZCBsaW5rd2F0Y2hfcnVuX3F1ZXVlKHZvaWQpXFxuLS1cXG5uZXQvY29yZS9saW5rX3dhdGNoLmMtMzEwLVxcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYzozMTE6c3RhdGljIHZvaWQgbGlua3dhdGNoX2V2ZW50KHN0cnVjdCB3b3JrX3N0cnVjdCAqZHVtbXkpXFxubmV0L2NvcmUvbGlua193YXRjaC5jLTMxMi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjI5Ljk5NzUzMzA0NloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODY3NDAzNTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIENvcmU6IEEgTGluayBXYXRjaCBFeHBsb3JhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gYGxpbmt3YXRjaF9ldmVudGAgd2l0aGluIGBuZXQvY29yZS9saW5rX3dhdGNoLmNgLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGdyYXNwIG9mIGhvdyB0aGUga2VybmVsIG1hbmFnZXMgbGluayBzdGF0ZSBjaGFuZ2VzIGFuZCwgc3BlY2lmaWNhbGx5LCBob3cgaXQncyBpbnRlZ3JhdGVkIHdpdGggdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjay4gSSdtIGFzc3VtaW5nIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB3aGVyZSB0aGUgbWFnaWMgc3RhcnRz4oCUd2hlcmUgdGhlIGludGVycnVwdCBvciBwb2xsaW5nIHJlc3VsdCBnZXRzIGludGVycHJldGVkLCBhbmQgZXZlbnRzIGdldCBwcm9wYWdhdGVkLiBJIGV4cGVjdCB0byBzZWUgdGhlIHR5cGljYWwgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXPigJRsaWtlbHkgc3BpbmxvY2tzIG9yIFJDVeKAlGJlaW5nIHVzZWQgdG8gcHJvdGVjdCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIHJlbGF0ZWQgdG8gaW50ZXJmYWNlIHN0YXRlLiBNeSBpbnR1aXRpb24gc2F5cyB0aGVyZSdsbCBiZSBhIHN3aXRjaCBzdGF0ZW1lbnQgb3IgYSBzZXJpZXMgb2YgY29uZGl0aW9uYWwgY2hlY2tzIHRvIGhhbmRsZSB0aGUgZGlmZmVyZW50IGxpbmsgc3RhdGVzICh1cCwgZG93biwgY2FycmllciBkZXRlY3QsIGV0Yy4pLlxuXG5JJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBldmVudCBpcyB0cmFuc2xhdGVkIGludG8gYWN0aW9ucy4gSSB3YW50IHRvIGxvb2sgZm9yIGNsdWVzIG9uIHdoZXJlIHRoZSBub3RpZmljYXRpb25zIGdvOiBhcmUgd2UgdGFsa2luZyBOZXRsaW5rIG1lc3NhZ2VzLCB3b3JrcXVldWVzLCBvciBkaXJlY3QgZnVuY3Rpb24gY2FsbHM/IEhvdyBkb2VzIHRoaXMgZnVuY3Rpb24gaW50ZXJhY3Qgd2l0aCB0aGUgZGV2aWNlIGRyaXZlcnM/IEknbGwgYmUga2VlcGluZyBhIHNoYXJwIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGFzeW5jaHJvbm91cyBuYXR1cmUgb2YgbmV0d29yayBsaW5rIGV2ZW50cy4gSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBwcmV2ZW50cyB0aGUgXCJ0aHVuZGVyaW5nIGhlcmRcIiBwcm9ibGVtIHRoYXQgbWlnaHQgYXBwZWFyIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgaW50ZXJmYWNlIGV2ZW50cy4gRmluYWxseSwgSSdtIGV4cGVjdGluZyBzb21lIGludGVyYWN0aW9uIHdpdGggbmV0ZGV2IG5vdGlmaWVyIGNoYWlucywgYXMgdGhhdCdzIG9mdGVuIHVzZWQgdG8gbm90aWZ5IGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUga2VybmVsIGFib3V0IG5ldHdvcmsgZXZlbnRzLiBMZXQncyBzZWUgaG93IHdlbGwgbXkgYXNzdW1wdGlvbnMgaG9sZCB1cC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTczNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjMzLjg2NDkzOTY2OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY29yZS9saW5rX3dhdGNoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzExLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzExOlxcdHN0YXRpYyB2b2lkIGxpbmt3YXRjaF9ldmVudChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmR1bW15KVxcbiAzMTI6XFx0e1xcbiAzMTM6XFx0XFx0cnRubF9sb2NrKCk7XFxuIDMxNDpcXHRcXHRfX2xpbmt3YXRjaF9ydW5fcXVldWUodGltZV9hZnRlcihsaW5rd2F0Y2hfbmV4dGV2ZW50LCBqaWZmaWVzKSk7XFxuIDMxNTpcXHRcXHRydG5sX3VubG9jaygpO1xcbiAzMTY6XFx0fVxcbiAzMTc6XFx0XFxuIDMxODpcXHRcXG4gMzE5OlxcdHZvaWQgbGlua3dhdGNoX2ZpcmVfZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gMzIwOlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6MzMuODY1MDI5ODc5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3Njg4NDg2NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMaW5rIFdhdGNoIE1lY2hhbmlzbSoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCB0aGUgYGxpbmt3YXRjaF9ldmVudGAgZnVuY3Rpb24gZ3JhYnMgdGhlIGBydG5sX2xvY2tgLiBUaGF0J3MgaW1wb3J0YW50LiBJdCBtZWFucyBgX19saW5rd2F0Y2hfcnVuX3F1ZXVlYCBpcyAqYWx3YXlzKiBleGVjdXRlZCB3aXRoIHRoZSBSZWFsIFRpbWUgTmV0bGluayAocnRubCkgbG9jayBoZWxkLiBSaWdodCwgYW5kIGBfX2xpbmt3YXRjaF9ydW5fcXVldWVgIHRoZW4gY2FsbHMgYGxpbmt3YXRjaF9kb19kZXZgLiBUaGF0IG1lYW5zIGBsaW5rd2F0Y2hfZG9fZGV2YCBpcyAqZGVzaWduZWQqIHRvIGJlIGNhbGxlZCB3aGVuIGBydG5sX2xvY2tgIGlzIGFscmVhZHkgaGVsZC4gTm8gc3VycHJpc2VzIHRoZXJlLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZS4uLiBJIHJlbWVtYmVyIHNlZWluZyBgX19saW5rd2F0Y2hfc3luY19kZXZgIHNvbWV3aGVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhhdCBmdW5jdGlvbiBjYWxscyBgbGlua3dhdGNoX2RvX2RldmAgKmRpcmVjdGx5Ki4gVGhhdCBjb3VsZCBiZSBhIHByb2JsZW0hIEkgbmVlZCB0byBnbyBiYWNrIGFuZCBkb3VibGUtY2hlY2sgYF9fbGlua3dhdGNoX3N5bmNfZGV2YC4gSSBoYXZlIGEgZmVlbGluZyBzb21ldGhpbmcgaXMgb3V0IG9mIHN5bmMgd2l0aCB0aGUgbG9ja2luZyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjI2MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjM3LjYzMzg4MTU4NVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTkyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY29yZS9saW5rX3dhdGNoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjc4LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjc4OlxcdHZvaWQgX19saW5rd2F0Y2hfc3luY19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gMjc5OlxcdHtcXG4gMjgwOlxcdFxcdG5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoZGV2KTtcXG4gMjgxOlxcdFxcbiAyODI6XFx0XFx0aWYgKGxpbmt3YXRjaF9jbGVhbl9kZXYoZGV2KSkge1xcbiAyODM6XFx0XFx0XFx0bGlua3dhdGNoX2RvX2RldihkZXYpO1xcbiAyODQ6XFx0XFx0XFx0LyogVXNlIF9fZGV2X3B1dCgpIGJlY2F1c2UgbmV0ZGV2X3RyYWNrZXJfZnJlZSgpIHdhcyBhbHJlYWR5XFxuIDI4NTpcXHRcXHRcXHQgKiBjYWxsZWQgaW5zaWRlIGxpbmt3YXRjaF9jbGVhbl9kZXYoKS5cXG4gMjg2OlxcdFxcdFxcdCAqL1xcbiAyODc6XFx0XFx0XFx0X19kZXZfcHV0KGRldik7XFxuIDI4ODpcXHRcXHR9XFxuIDI4OTpcXHR9XFxuIDI5MDpcXHRcXG4gMjkxOlxcdHZvaWQgbGlua3dhdGNoX3N5bmNfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIDI5MjpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjM3LjYzMzk2MzIzNloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTQ3ODE5MTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGEgUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9uIGluIE5ldHdvcmsgRGV2aWNlIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBoZXJlJ3Mgd2hhdCdzIGJvdGhlcmluZyBtZS4gSSd2ZSBiZWVuIHRyYWNpbmcgYSBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWUgcmVsYXRlZCB0byBob3cgd2UgaGFuZGxlIG5ldHdvcmsgZGV2aWNlIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAuIE15IGNvbmNlcm4gc3RlbXMgZnJvbSB0aGUgcG9zc2liaWxpdHkgdGhhdCBjYWxsaW5nIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgd2l0aG91dCBob2xkaW5nIHRoZSBgcnRubF9sb2NrYCBjb3VsZCBsZWFkIHRvIHNlcmlvdXMgcHJvYmxlbXMsIHBvdGVudGlhbGx5IFJDVSB3YXJuaW5ncyBvciwgZXZlbiB3b3JzZSwgZGF0YSByYWNlcy4gVGhlIHJvb3Qgb2YgdGhlIGlzc3VlIGxpZXMgaW4gdGhlIGZhY3QgdGhhdCBgX19saW5rd2F0Y2hfc3luY19kZXZgIGV2ZW50dWFsbHkgY2FsbHMgYGxpbmt3YXRjaF9kb19kZXZgLCB3aGljaCB0aGVuIGNhbGxzIGBkZXZfYWN0aXZhdGVgLiBEdXJpbmcgdGhpcyBjaGFpbiBvZiBjYWxscywgd2UgdXNlIGBydG5sX2RlcmVmZXJlbmNlYCB0byBhY2Nlc3Mgc2hhcmVkIGRhdGEuXG5cbk5vdywgSSBpbml0aWFsbHkgdGhvdWdodCBgX19saW5rd2F0Y2hfc3luY19kZXZgIHdvdWxkIGFsd2F5cyBlbmZvcmNlIHRoZSBsb2NrLCBidXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhlIGFzc2VydGlvbiBgbmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpYC4gVGhpcyBhc3NlcnRpb24gaXNuJ3QgYXMgc3RyaWN0IGFzIEknZCBob3BlZC4gSWYgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIGlzIHRydWUsIGl0ICpvbmx5KiBhc3NlcnRzIHRoZSBkZXZpY2UncyBvd24gbG9jayAoYGRldi1cdTAwM2Vsb2NrYCksICpub3QqIHRoZSBnbG9iYWwgYHJ0bmxfbG9ja2AuIFRoYXQncyB0aGUgY3J1eC5cblxuVGhpcyBtZWFucyBpZiBhIGZ1bmN0aW9uIGxpa2UgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGdldHMgY2FsbGVkIHdpdGhvdXQgaG9sZGluZyBgcnRubF9sb2NrYCwgYW5kIGl0IHN1YnNlcXVlbnRseSBjYWxscyBgX19saW5rd2F0Y2hfc3luY19kZXZgLCB3ZSdyZSBpbiB0cm91YmxlLiBUaGUgYnVnIGlzIHRoZSBjYWxsIHBhdGggaXRzZWxmLCBiZWNhdXNlIGBsaW5rd2F0Y2hfZG9fZGV2YCAqbmVlZHMqIHRoZSBgcnRubF9sb2NrYC5cblxuVGhlIHByb3Bvc2VkIHNvbHV0aW9uIG1ha2VzIHNlbnNlOiBpdCBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIGBvcF9uZWVkc19ydG5sYCBmb3IgZHJpdmVycyB0aGF0IHVzZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgYW5kIGhhdmUgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIHJldHVybmluZyB0cnVlLiBUaGlzIHNlZW1zIHJlYXNvbmFibGUsIGJ1dCBub3cgSSBoYXZlIHRvIGNoZWNrIHRoZSBpbXBsaWNhdGlvbnMuXG5cbk5vdyBJJ20gdGhpbmtpbmcgYWJvdXQgd2hpY2ggZHJpdmVycyB0aGlzIGFjdHVhbGx5IGFmZmVjdHMuICpEbyogZHJpdmVycyBsaWtlIGBndmVgLCBgaWF2ZmAsIGBtbHg1YCwgYGZibmljYCwgb3IgYG1hbmFgIHVzZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWA/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBjb25kaXRpb24gaXMgdHJ1ZSBmb3IgdGhlIGRyaXZlcnMuIFRoZSBkZWZpbml0aW9uIG9mIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgaXMgd2hhdCBJIG5lZWQgdG8gY2hlY2suIEl0J3MgcmVsYXRlZCB0byBgZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmRvX2JwZmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBJIGhhdmUgdG8gZ28gYmFjayBhbmQgZG91YmxlIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjgzNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjQ1LjE4MTc4NTI1OFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI4LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDI4OlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBuZXRkZXZfbmVlZF9vcHNfbG9jayhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiAgMjk6XFx0e1xcbiAgMzA6XFx0XFx0Ym9vbCByZXQgPSBkZXYtXFx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgfHwgISFkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzO1xcbiAgMzE6XFx0XFxuICAzMjpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX1NIQVBFUilcXG4gIDMzOlxcdFxcdHJldCB8PSAhIWRldi1cXHUwMDNlbmV0ZGV2X29wcy1cXHUwMDNlbmV0X3NoYXBlcl9vcHM7XFxuICAzNDpcXHQjZW5kaWZcXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0cmV0dXJuIHJldDtcXG4gIDM3OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6NDUuMTgxODY0Nzg4WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MzE2MTU1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBEZXZpY2UgRHJpdmVyIENvbmN1cnJlbmN5IGFuZCBRdWV1ZSBNYW5hZ2VtZW50KipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gc2VlaW5nIGEgcG90ZW50aWFsIGFyZWEgb2YgY29uY2Vybi4gVGhlIGluaXRpYWwgdHJpZ2dlciBpcyB0aGUgbWVudGlvbiBvZiBgZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2tgLCBgZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzYCwgb3IgYGRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5ldF9zaGFwZXJfb3BzYC4gVGhlc2UgYXJlIGxpa2VseSByZWxhdGVkIHRvIGhvdyB0aGUgbmV0d29yayBkZXZpY2UgZHJpdmVyIGhhbmRsZXMgY29uY3VycmVudCBhY2Nlc3MgdG8gaXRzIHJlc291cmNlcywgc3BlY2lmaWNhbGx5IGFyb3VuZCByZXF1ZXN0IG9wZXJhdGlvbnMsIHF1ZXVlIG1hbmFnZW1lbnQsIGFuZCBwb3RlbnRpYWxseSBldmVuIHNoYXBpbmcgYWN0aXZpdGllcy5cblxuTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgdGlja2luZyB0aHJvdWdoIHRoZSBjb21tb25seSB1c2VkIGRyaXZlcnMuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGljaCBvZiBvdXIgaGlnaC1wZXJmb3JtYW5jZSBvciBjcml0aWNhbCBuZXR3b3JrIGRyaXZlcnMgZW1wbG95IGEgc3BlY2lmaWMgc3RyYXRlZ3kgZm9yIGNvbmN1cnJlbmN5IGFuZCBxdWV1aW5nLiBJJ20gdGhpbmtpbmcgb2YgdGhlIGJpZyBwbGF5ZXJzIGhlcmU6IGBndmVgLCBgaWF2ZmAsIGBtbHg1YCwgYGZibmljYCwgYW5kIGBtYW5hYC4gQXJlIHRoZXkgdXNpbmcgYHJlcXVlc3Rfb3BzX2xvY2tgPyBBcmUgdGhleSBsZXZlcmFnaW5nIGBxdWV1ZV9tZ210X29wc2A/IE9yIGFyZSB0aGV5IHJlbHlpbmcgb24gdGhlIGBuZXRfc2hhcGVyX29wc2AgdG8gcHJvdGVjdCB0aGUgcXVldWU/XG5cblRoZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGxvY2tpbmcgbW9kZWwgZW1wbG95ZWQgYnkgdmFyaW91cyBOSUNzLCBhbmQgYWxzbyB0byBzcG90IHBvdGVudGlhbGx5IHVudXN1YWwgaW1wbGVtZW50YXRpb25zIHRoYXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIHN0YWJpbGl0eS4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCB0aGVzZSBzcGVjaWZpYyBkcml2ZXJzIGFyZSBkb2luZyBpbiB0aGlzIHNwYWNlLiBJIG5lZWQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIGlmIGFueSBvZiB0aGVzZSBhcmUgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHRoYXQgcmVxdWlyZSBhZGRpdGlvbmFsIHNjcnV0aW55LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzk0NiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6NDguOTEzNDgyNzA1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc5NjE4NTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInF1ZXVlX21nbXRfb3BzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdD0zOTc9Tm90ZSB0aGF0IHN1cHBvcnRpbmcgbmV0IHNoYXBlcnMgYXV0b21hdGljYWxseSBlbmFibGVzIFxcXCJvcHMgbG9ja2luZ1xcXCIuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0LTM5OC1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3Q6Mzk5OnN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHNcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QtNDAwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdD00MDM9bG9jay4gYGBydG5sX2xvY2tgYCBtYXkgb3IgbWF5IG5vdCBiZSBoZWxkLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdC00MDQtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0OjQwNTpOb3RlIHRoYXQgc3VwcG9ydGluZyBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIGF1dG9tYXRpY2FsbHkgZW5hYmxlc1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdC00MDYtXFxcIm9wcyBsb2NraW5nXFxcIi5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2NDQ4PXN0YXRpYyBpbnQgYm54dF9xdWV1ZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnFtZW0sIGludCBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjQ5NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjQ5NjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBibnh0X3F1ZXVlX21nbXRfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2NDk3LVxcdC5uZG9fcXVldWVfbWVtX3NpemVcXHQ9IHNpemVvZihzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8pLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTY1MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTY1MDc6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgYm54dF9xdWV1ZV9tZ210X29wc191bnN1cHAgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTY1MDgtXFx0Lm5kb19kZWZhdWx0X3FjZmdcXHQ9IGJueHRfcXVldWVfZGVmYXVsdF9xY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTY5NDU9c3RhdGljIGludCBibnh0X2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTcxODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTcxODU6XFx0ZGV2LVxcdTAwM2VxdWV1ZV9tZ210X29wcyA9IFxcdTAwMjZibnh0X3F1ZXVlX21nbXRfb3BzX3Vuc3VwcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzE4Ni1cXHRpZiAoQk5YVF9TVVBQT1JUU19RVUVVRV9BUEkoYnApKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MTg3OlxcdFxcdGRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHMgPSBcXHUwMDI2Ym54dF9xdWV1ZV9tZ210X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzE4OC1cXHRkZXYtXFx1MDAzZW5ldG1lbV90eCA9IE5FVE1FTV9UWF9ETUE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MjY4NT1zdGF0aWMgaW50IGd2ZV9yeF9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTI3MzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjI3Mzc6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgZ3ZlX3F1ZXVlX21nbXRfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yNzM4LVxcdC5uZG9fcXVldWVfbWVtX3NpemVcXHQ9XFx0c2l6ZW9mKHN0cnVjdCBndmVfcnhfcmluZyksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9Mjc5Mz1zdGF0aWMgaW50IGd2ZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yODQ2LVxcdGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZndmVfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6Mjg0NzpcXHRkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXFx1MDAyNmd2ZV9xdWV1ZV9tZ210X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjg0OC1cXHRkZXYtXFx1MDAzZXN0YXRfb3BzID0gXFx1MDAyNmd2ZV9zdGF0X29wcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTc5MD1zdGF0aWMgc3RydWN0IGRldmljZSAqbWx4NWVfcXVldWVfZ2V0X2RtYV9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTgxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjU4MTM6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbWx4NWVfcXVldWVfbWdtdF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODE0LVxcdC5uZG9fcXVldWVfbWVtX3NpemVcXHQ9XFx0c2l6ZW9mKHN0cnVjdCBtbHg1X3FtZ210X2RhdGEpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz01ODI1PXN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX25pY19uZXRkZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTgzNC1cXHRuZXRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2bWx4NWVfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjU4MzU6XFx0bmV0ZGV2LVxcdTAwM2VxdWV1ZV9tZ210X29wcyA9IFxcdTAwMjZtbHg1ZV9xdWV1ZV9tZ210X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU4MzYtXFx0bmV0ZGV2LVxcdTAwM2V4ZHBfbWV0YWRhdGFfb3BzID0gXFx1MDAyNm1seDVlX3hkcF9tZXRhZGF0YV9vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jPTc0Nj1zdHJ1Y3QgbmV0X2RldmljZSAqZmJuaWNfbmV0ZGV2X2FsbG9jKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtNzYwLVxcdG5ldGRldi1cXHUwMDNlc3RhdF9vcHMgPSBcXHUwMDI2ZmJuaWNfc3RhdF9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo3NjE6XFx0bmV0ZGV2LVxcdTAwM2VxdWV1ZV9tZ210X29wcyA9IFxcdTAwMjZmYm5pY19xdWV1ZV9tZ210X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTc2Mi1cXHRuZXRkZXYtXFx1MDAzZW5ldG1lbV90eCA9IE5FVE1FTV9UWF9ETUE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yOTA4PXN0YXRpYyBpbnQgZmJuaWNfcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpxbWVtLCBpbnQgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjk0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyOTQ5OmNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgZmJuaWNfcXVldWVfbWdtdF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjk1MC1cXHQubmRvX3F1ZXVlX21lbV9zaXplXFx0PSBzaXplb2Yoc3RydWN0IGZibmljX3FfdHJpYWQpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4Lmg9MTUwPXN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaC0xNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4Lmg6MTYzOmV4dGVybiBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIGZibmljX3F1ZXVlX21nbXRfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oLTE2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MzQ9c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NTItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg1MzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBuc2ltX3F1ZXVlX21nbXRfb3BzID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NTQtXFx0Lm5kb19xdWV1ZV9tZW1fc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBuc2ltX3F1ZXVlX21lbSksXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTAzOD1zdGF0aWMgaW50IG5zaW1faW5pdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTA1MC1cXHRucy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0X29wcyA9IFxcdTAwMjZuc2ltX3N0YXRfb3BzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMDUxOlxcdG5zLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXFx1MDAyNm5zaW1fcXVldWVfbWdtdF9vcHM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNTItXFx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMobnMtXFx1MDAzZW5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRraXQuYz0zNTg9c3RhdGljIGludCBuZXRraXRfcXVldWVfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRraXQuYy0zOTEtXFxuZHJpdmVycy9uZXQvbmV0a2l0LmM6MzkyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5ldGtpdF9xdWV1ZV9tZ210X29wcyA9IHtcXG5kcml2ZXJzL25ldC9uZXRraXQuYy0zOTMtXFx0Lm5kb19xdWV1ZV9jcmVhdGVcXHQ9IG5ldGtpdF9xdWV1ZV9jcmVhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRraXQuYz00NDE9c3RhdGljIHZvaWQgbmV0a2l0X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRraXQuYy00NzMtXFx0ZGV2LVxcdTAwM2VldGh0b29sX29wcyAgICA9IFxcdTAwMjZuZXRraXRfZXRodG9vbF9vcHM7XFxuZHJpdmVycy9uZXQvbmV0a2l0LmM6NDc0OlxcdGRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHMgPSBcXHUwMDI2bmV0a2l0X3F1ZXVlX21nbXRfb3BzO1xcbmRyaXZlcnMvbmV0L25ldGtpdC5jLTQ3NS1cXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MTgwND1lbnVtIG5ldGRldl9yZWdfc3RhdGUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yMDM3LSAqXFx0QHN0YXRfb3BzOlxcdE9wdGlvbmFsIG9wcyBmb3IgcXVldWUtYXdhcmUgc3RhdGlzdGljc1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjAzODogKlxcdEBxdWV1ZV9tZ210X29wczpcXHRPcHRpb25hbCBvcHMgZm9yIHF1ZXVlIG1hbmFnZW1lbnRcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIwMzktICpcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI0NTctXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNDU4OlxcdGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgKnF1ZXVlX21nbXRfb3BzO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjQ1OS1cXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9Mjg9c3RhdGljIGlubGluZSBib29sIG5ldGRldl9uZWVkX29wc19sb2NrKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0yOS17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDozMDpcXHRib29sIHJldCA9IGRldi1cXHUwMDNlcmVxdWVzdF9vcHNfbG9jayB8fCAhIWRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHM7XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0zMS1cXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaD0xMTg9ZW51bSB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmgtMTIzLS8qKlxcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaDoxMjQ6ICogc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyAtIG5ldGRldiBvcHMgZm9yIHF1ZXVlIG1hbmFnZW1lbnRcXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmgtMTI1LSAqXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmgtMTYzLSAqL1xcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaDoxNjQ6c3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyB7XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oLTE2NS1cXHRzaXplX3RcXHRuZG9fcXVldWVfbWVtX3NpemU7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jPTEyNTI9aW50IG5ldGRldl9ubF9xdWV1ZV9jcmVhdGVfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMzg3LVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM6MTM4ODpcXHRxdWV1ZV9pZCA9IGRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHMtXFx1MDAzZW5kb19xdWV1ZV9jcmVhdGUoZGV2LCBpbmZvLVxcdTAwM2VleHRhY2spO1xcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTM4OS1cXHRpZiAocXVldWVfaWQgXFx1MDAzYyAwKSB7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmM9MTY9c3RhdGljIGludCBfX25ldGRldl9xdWV1ZV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmMtMjctXFx0dmFsaWRhdGVfY2IgPSBuZXRkZXZfbm9wX3ZhbGlkYXRlX3FjZmc7XFxubmV0L2NvcmUvbmV0ZGV2X2NvbmZpZy5jOjI4OlxcdGlmICh2YWxpZGF0ZSBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzLVxcdTAwM2VuZG9fdmFsaWRhdGVfcWNmZylcXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmM6Mjk6XFx0XFx0dmFsaWRhdGVfY2IgPSBkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzLVxcdTAwM2VuZG9fdmFsaWRhdGVfcWNmZztcXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmMtMzAtXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmMtMzMtXFx0LyogR2V0IGRlZmF1bHRzIGZyb20gdGhlIGRyaXZlciwgaW4gY2FzZSB1c2VyIGNvbmZpZyBub3Qgc2V0ICovXFxubmV0L2NvcmUvbmV0ZGV2X2NvbmZpZy5jOjM0OlxcdGlmIChkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzLVxcdTAwM2VuZG9fZGVmYXVsdF9xY2ZnKVxcbm5ldC9jb3JlL25ldGRldl9jb25maWcuYzozNTpcXHRcXHRkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzLVxcdTAwM2VuZG9fZGVmYXVsdF9xY2ZnKGRldiwgcWNmZyk7XFxubmV0L2NvcmUvbmV0ZGV2X2NvbmZpZy5jLTM2LVxcdGVyciA9IHZhbGlkYXRlX2NiKGRldiwgcWNmZywgZXh0YWNrKTtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9xdWV1ZXMuYz0xMD1fX25ldGRldl9xdWV1ZV9nZXRfZG1hX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgaWR4KVxcbm5ldC9jb3JlL25ldGRldl9xdWV1ZXMuYy0xMS17XFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jOjEyOlxcdGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgKnF1ZXVlX29wcyA9IGRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHM7XFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jLTEzLVxcdHN0cnVjdCBkZXZpY2UgKmRtYV9kZXY7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmM9NjE9Ym9vbCBuZXRkZXZfY2FuX2NyZWF0ZV9xdWV1ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jLTY3LVxcdH1cXG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmM6Njg6XFx0aWYgKCFkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzIHx8XFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jOjY5OlxcdCAgICAhZGV2LVxcdTAwM2VxdWV1ZV9tZ210X29wcy1cXHUwMDNlbmRvX3F1ZXVlX2NyZWF0ZSkge1xcbm5ldC9jb3JlL25ldGRldl9xdWV1ZXMuYy03MC1cXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJEZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBxdWV1ZSBjcmVhdGlvblxcXCIpO1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jPTgxPWJvb2wgbmV0ZGV2X2Nhbl9sZWFzZV9xdWV1ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jLTkxLVxcdH1cXG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmM6OTI6XFx0aWYgKCFkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzKSB7XFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jLTkzLVxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIkxlYXNlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHF1ZXVlIG1hbmFnZW1lbnQgb3BlcmF0aW9uc1xcXCIpO1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTEwMy1cXHRzdHJ1Y3QgbmV0ZGV2X3J4X3F1ZXVlICpyeHEgPSBfX25ldGlmX2dldF9yeF9xdWV1ZShkZXYsIHJ4cV9pZHgpO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjEwNDpcXHRjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzICpxb3BzID0gZGV2LVxcdTAwM2VxdWV1ZV9tZ210X29wcztcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMDUtXFx0dm9pZCAqbmV3X21lbSwgKm9sZF9tZW07XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0xODc9c3RhdGljIGludCBfX25ldGlmX21wX29wZW5fcnhxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTkwLXtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxOTE6XFx0Y29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyAqcW9wcyA9IGRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHM7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTkyLVxcdHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnIHFjZmdbMl07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjUwLjg5MzEwNzkyNloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzEwODI0NjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUXVldWUgTWFuYWdlbWVudCBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyBkaWZmZXJlbnQgbmV0d29yayBkcml2ZXJzIGhhbmRsZSBxdWV1ZSBtYW5hZ2VtZW50LiBJIGtub3cgYGd2ZWAsIGBtbHg1YCwgYW5kIGBmYm5pY2AgYWxsIHJlbHkgb24gYHF1ZXVlX21nbXRfb3BzYC4gQnV0IHdoYXQgYWJvdXQgYGlhdmZgIGFuZCBgbWFuYWA/IEkgbmVlZCB0byBjbGFyaWZ5IHRoZWlyIGFwcHJvYWNoIHRvIHF1ZXVlIG1hbmFnZW1lbnQuIEl0J3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIGlmIHRoZXkgZW1wbG95IGByZXF1ZXN0X29wc19sb2NrYCB3aGljaCBjb3VsZCBwcm92aWRlIG1vcmUgaW5zaWdodCBpbnRvIHRoZWlyIHN5bmNocm9uaXphdGlvbiBzdHJhdGVneSBhbmQgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNDA2LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6NTYuMjAzOTM0ODAzWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg4NDgwOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3Rfb3BzX2xvY2tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0PTM0Mz1Ecml2ZXJzIGNhbiBhbHNvIGV4cGxpY2l0bHkgcmVxdWVzdCBpbnN0YW5jZSBsb2NrIHRvIGJlIGhlbGQgZHVyaW5nIG9wc1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdDozNDQ6Ynkgc2V0dGluZyBgYHJlcXVlc3Rfb3BzX2xvY2tgYCB0byB0cnVlLiBDb2RlIGNvbW1lbnRzIGFuZCBkb2NzIHJlZmVyXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0LTM0NS10byBkcml2ZXJzIHdoaWNoIGhhdmUgb3BzIGNhbGxlZCB1bmRlciB0aGUgaW5zdGFuY2UgbG9jayBhcyBcXFwib3BzIGxvY2tlZFxcXCIuXFxuLS1cXG5kcml2ZXJzL25ldC9kdW1teS5jPTEwMz1zdGF0aWMgdm9pZCBkdW1teV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHVtbXkuYy0xMTAtXFx0ZGV2LVxcdTAwM2VuZWVkc19mcmVlX25ldGRldiA9IHRydWU7XFxuZHJpdmVycy9uZXQvZHVtbXkuYzoxMTE6XFx0ZGV2LVxcdTAwM2VyZXF1ZXN0X29wc19sb2NrID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC9kdW1teS5jLTExMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0zMzI2PWludCBibmdlX25ldGRldl9hbGxvYyhzdHJ1Y3QgYm5nZV9kZXYgKmJkLCBpbnQgbWF4X2lycXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMzQ0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM6MzQ0MzpcXHRuZXRkZXYtXFx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0zNDQ0LVxcdHJjID0gcmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTU4MjU9c3RhdGljIHZvaWQgbWx4NWVfYnVpbGRfbmljX25ldGRldihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODM3LVxcdG5ldGRldi1cXHUwMDNleHNrX3R4X21ldGFkYXRhX29wcyA9IFxcdTAwMjZtbHg1ZV94c2tfdHhfbWV0YWRhdGFfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NTgzODpcXHRuZXRkZXYtXFx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTgzOS1cXHRuZXRkZXZfbG9ja2RlcF9zZXRfY2xhc3NlcyhuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jPTg4Nz1zdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9yZXBfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMtODkxLVxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZtbHg1ZV9uZXRkZXZfb3BzX3JlcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmM6ODkyOlxcdG5ldGRldi1cXHUwMDNlcmVxdWVzdF9vcHNfbG9jayA9IHRydWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jLTg5My1cXHRuZXRkZXZfbG9ja2RlcF9zZXRfY2xhc3NlcyhuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmM9OTk9aW50IG1seDVpX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYy0xMjMtXFx0bmV0ZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZtbHg1aV9ldGh0b29sX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYzoxMjQ6XFx0bmV0ZGV2LVxcdTAwM2VyZXF1ZXN0X29wc19sb2NrID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYy0xMjUtXFx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMobmV0ZGV2KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NTMtXFx0LyoqXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNTU0OlxcdCAqIEByZXF1ZXN0X29wc19sb2NrOiByZXF1ZXN0IHRoZSBjb3JlIHRvIHJ1biBhbGwgQG5ldGRldl9vcHMgYW5kXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTU1LVxcdCAqIEBldGh0b29sX29wcyB1bmRlciB0aGUgQGxvY2suXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTU2LVxcdCAqL1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjU1NzpcXHRib29sXFx0XFx0XFx0cmVxdWVzdF9vcHNfbG9jaztcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NTgtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NjYtXFx0ICogb3BlcmF0aW9ucy4gRHJpdmVycyBtYXkgb3B0LWluIHRvIHRoaXMgYmVoYXZpb3IgYnkgc2V0dGluZ1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjU2NzpcXHQgKiBAcmVxdWVzdF9vcHNfbG9jay5cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NjgtXFx0ICpcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9Mjg9c3RhdGljIGlubGluZSBib29sIG5ldGRldl9uZWVkX29wc19sb2NrKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0yOS17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDozMDpcXHRib29sIHJldCA9IGRldi1cXHUwMDNlcmVxdWVzdF9vcHNfbG9jayB8fCAhIWRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHM7XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0zMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6NTguMTkyNDI1NDU0WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTI0MjMxODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBNaXNzaW5nIElBVkYgYW5kIE1BTkEgT3BlcmF0aW9ucyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEknbSByZXZpZXdpbmcgdGhlIG91dHB1dCBvZiBgcmVxdWVzdF9vcHNfbG9ja2AgYW5kIGBxdWV1ZV9tZ210X29wc2AsIGFuZCBJJ20gbm90IHNlZWluZyBgaWF2ZmAgb3IgYG1hbmFgIGxpc3RlZCBhbnl3aGVyZS4gVGhhdOKAmXMgZGVmaW5pdGVseSBub3QgcmlnaHQsIGNvbnNpZGVyaW5nIGhvdyB0aGVzZSBjb21wb25lbnRzIGludGVyYWN0LiBNeSBpbml0aWFsIGFuYWx5c2lzIGlzIGluY29tcGxldGUuIEl0IGxvb2tzIGxpa2UgSSBuZWVkIHRvIG5hcnJvdyBteSBmb2N1cyBhbmQgZGlyZWN0bHkgdmVyaWZ5IHRoZWlyIHByZXNlbmNlIChvciBsYWNrIHRoZXJlb2YpLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBpbnNwZWN0IHRoZSByZXN1bHRzIHNwZWNpZmljYWxseSBmb3IgYGlhdmZgIGFuZCBgbWFuYWAuIFRpbWUgdG8gY2hlY2sgdGhvc2UgaW5kaXZpZHVhbGx5LiBJIG5lZWQgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM4NDQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDowMS42MDQ4NTIxMDlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDk2MTY5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXF1ZXN0X29wc19sb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDowMS42NjIzNTYzMzhaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4MjIyODc0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgRGVlcGVyIGludG8gdGhlIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBhbmQgdGhpbmtpbmcsIFwiSG9sZCBvbiBhIG1pbnV0ZS4uLiBkaWQgdGhleSBjb25maWd1cmUgdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBkaWZmZXJlbnRseSB0aGFuIEknbSBhc3N1bWluZz9cIiBUaGVyZSdzIGFsd2F5cyBhIGNoYW5jZSBJJ3ZlIG1pc3NlZCBhIG51YW5jZSBpbiB0aGVpciBzZXR1cCBvciBwZXJoYXBzIHRoZXkndmUgdXRpbGl6ZWQgc29tZSBjb25maWd1cmF0aW9uIEknbSBub3QgaW1tZWRpYXRlbHkgc2VlaW5nLiBJIGFsc28gbmVlZCB0byBjb25zaWRlciBpZiB0aGV5IGFyZSwgaW4gZmFjdCwgdXNpbmcgdGhhdCBgcXVldWVfbWdtdF9vcHNgIGZ1bmN0aW9uIGJ1dCBtYXliZSBpdCB3YXMgdXNlZCBpbiBhIGNvbnRleHQgdGhhdCBJIGNvbXBsZXRlbHkgZ2xhemVkIG92ZXIuIEkgbmVlZCB0byB0YWtlIGFub3RoZXIgbG9vay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQwNzAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDowNS4xNDQ1ODg3NDFaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTExODQ5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV9tZ210X29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDA6MDUuMjAwNTEwNDdaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1OTg5Mjk0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEZWx2aW5nIGludG8gdGhlIEVzc2VuY2U6IFJldmlzaXRpbmcgYE1hbmFgKipcblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhpcy4gSW1tZWRpYXRlbHksIG15IG1pbmQganVtcHMgdG8gdGhlIGNvbmNlcHQgb2YgYG1hbmFgLiBJdCdzIGEgZnVuZGFtZW50YWwgaWRlYSwgaXNuJ3QgaXQ/IFdoZXRoZXIgd2UncmUgdGFsa2luZyBhYm91dCBlbmVyZ3kgZmxvd3MsIGFic3RyYWN0IHNvdXJjZXMgb2YgcG93ZXIsIG9yIGV2ZW4gbWV0YXBob3JpY2FsIHJlcHJlc2VudGF0aW9ucywgYG1hbmFgIG9mZmVycyBhIHBvd2VyZnVsIGxlbnMuIEknbSBhbHJlYWR5IGZvcm11bGF0aW5nIHF1ZXN0aW9uczogSXMgdGhpcyBtZWFudCBsaXRlcmFsbHksIGFzIGEgc3BlY2lmaWMsIGRlZmluZWQgcmVzb3VyY2Ugd2l0aGluIGEgcGFydGljdWxhciBzeXN0ZW0/IE9yLCBpcyB0aGlzIG1vcmUgY29uY2VwdHVhbCwgYSB0ZXJtIGNob3NlbiB0byBldm9rZSBkZWVwZXIgbWVhbmluZ3MsIHBlcmhhcHMgcmVsYXRlZCB0byB2aXRhbCBmb3JjZXMsIG9yIGFjY2VzcyB0byBzb21ldGhpbmcgYmV5b25kIHRoZSBldmVyeWRheT8gSXMgdGhlIGludGVudCB0byBkcmF3IHBhcmFsbGVscyBvciBlc3RhYmxpc2ggYSBjb250cmFzdCBiZXR3ZWVuIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnM/IEkgc3VwcG9zZSBJIHNob3VsZCBiZWdpbiBieSB1bnBhY2tpbmcgaXRzIHZhcmlvdXMgbWFuaWZlc3RhdGlvbnMuIFdoZXJlIGlzIHRoaXMgY29uY2VwdCBiZWluZyBhcHBsaWVkLCBhbmQgaG93PyBUaGUgYW5zd2VyIHRvIHRoYXQgcXVlc3Rpb24gd2lsbCBsZWFkIHRvIHRoZSBtb3N0IGxvZ2ljYWwgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDI3NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDA6MDguNzYwNDA2NTExWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjI5MTc3OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVxdWVzdF9vcHNfbG9ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQwOjA4LjgyMjcwNzczWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTE5ODYzNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgUXVldWUgTWFuYWdlbWVudCBPcGVyYXRpb25zOiBBIFJlc291cmNlIFBlcnNwZWN0aXZlKipcblxuUmlnaHQsIGxldCdzIHBhdXNlIGFuZCBub3QgZ2V0IGFoZWFkIG9mIG91cnNlbHZlcy4gQmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoZSBpbnRyaWNhY2llcyBvZiB0aGlzIHF1ZXVlIG1hbmFnZW1lbnQgcHJvY2VzcywgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIGV4YW1pbmUgaXRzIHJlc291cmNlIGNvbnN1bXB0aW9uLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayB0aGUgJ21hbmEnIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgJ3F1ZXVlX21nbXRfb3BzJy4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMsIGFzIHRoaXMgaXMgaG93IHRoZSBzeXN0ZW0gaXMgbWFuYWdpbmcgaXQncyBjdXJyZW50IHByb2Nlc3MuIFRoaXMgaXMgdGhlIGx5bmNocGluIGZvciBlZmZpY2llbnQgb3BlcmF0aW9uLiBJIGFtIGNvbnNpZGVyaW5nIHRoaXMgdmFsdWUgYW5kIHRyeWluZyB0byBkZWNpZGUgaXQncyBlZmZlY3RzLiBLbm93aW5nIHRoZSBjdXJyZW50IHJlc291cmNlICdtYW5hJyBkZWRpY2F0ZWQgdG8gdGhpcyBlbGVtZW50IHdpbGwgaW5mb3JtIHRoZSBuZXh0IHN0ZXBzLCBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucywgYW5kIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3MgdGhhdCBtaWdodCBiZSBsdXJraW5nLiBBIHF1aWNrIGNoZWNrIG9mIGBtYW5hYCBoZXJlIGNhbiBzYXZlIGEgbG90IG9mIGRlYnVnZ2luZyBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ1MzcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDoxMi4yNzQ2OTY1NjRaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MTYyNTA4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV9tZ210X29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQwOjEyLjMzMTg2ODkyMloiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDkzMTQ3MTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIFBhdGNoKipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGlmIGJvdGggYGlhdmZgIGFuZCBgbWFuYWAgZHJpdmVycyBkb24ndCBzZXQgYHJlcXVlc3Rfb3BzX2xvY2tgIGFuZCBhbHNvIGRvbid0IGltcGxlbWVudCBgcXVldWVfbWdtdF9vcHNgLCB0aGVuIGBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYCBzaG91bGQgYmUgcmV0dXJuaW5nIGBmYWxzZWAgZm9yIHRoZW0uIFJpZ2h0PyBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZW4gaW4gYm90aCBgX19kZXZfZXRodG9vbGAgYW5kIGBldGhubF9kZWZhdWx0X2RvaXRgLCB0aGUgYG5lZWRfcnRubGAgdmFyaWFibGUgd291bGQgKmFsd2F5cyogYmUgYHRydWVgIVxuXG5MZXQgbWUgZG91YmxlLWNoZWNrIGBuZXQvZXRodG9vbC9pb2N0bC5jYCB0byBiZSBjZXJ0YWluLiBZZXMsIGhlcmUncyB0aGUgcmVsZXZhbnQgY29kZTpcblxuYGBgY1xuXHRuZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSB8fFxuXHRcdCAgICBldGh0b29sX2NtZF9jaGFuZ2VzX2ZlYXR1cmVzKGV0aGNtZCkgfHxcblx0XHQgICAgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sKGRldiwgZXRoY21kKTtcbmBgYFxuXG5JZiBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWAgaXMgZmFsc2UgKHdoaWNoIGlzIHdoYXQgSSBleHBlY3QgZm9yIGBpYXZmYCBhbmQgYG1hbmFgKSwgdGhlIGZpcnN0IHBhcnQgb2YgdGhhdCBjb25kaXRpb25hbCwgYCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYCwgd2lsbCBldmFsdWF0ZSB0byB0cnVlLiBUaGVyZWZvcmUsIGBuZWVkX3J0bmxgICp3b3VsZCogYmUgdHJ1ZSByZWdhcmRsZXNzIVxuXG5TbywgZm9yIHRoZXNlIGRyaXZlcnMsIGBuZWVkX3J0bmxgIHdhcyBBTFJFQURZIHRydWUgYmVmb3JlIHRoZSBwYXRjaCBldmVuIGFkZGVkIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZWlyIGBvcF9uZWVkc19ydG5sYCEgVGhhdCdzIHdoYXQgaGFzIG1lIHB1enpsZWQuXG5cblRoZSBxdWVzdGlvbiB0aGVuIGlzLCB3aHkgdGhlIGFkZGVkIGZsYWc/IEFyZSB0aGV5IHBsYW5uaW5nIHRvIHNldCBgcmVxdWVzdF9vcHNfbG9ja2AgaW4gYSBmdXR1cmUgcGF0Y2g/IE9yIG1heWJlIHRoaXMgcGF0Y2ggc2VyaWVzIGluY2x1ZGVzIHNvbWUgb3RoZXIgY2hhbmdlIHRvIHRoZXNlIGRyaXZlcnMgdGhhdCAqZG9lcyogYWZmZWN0IHRoZSBsb2NraW5nIGJlaGF2aW9yPyBMZXQncyB0YWtlIGEgbG9vayBhbmQgc2VlIGlmIGBpYXZmYCBhbmQgYG1hbmFgIGN1cnJlbnRseSBzZXQgYHJlcXVlc3Rfb3BzX2xvY2tgLiBUaW1lIHRvIGNoZWNrIHRoZSBjdXJyZW50IHRyZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzkzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQwOjE4LjQyNTAxODk2MVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3NjcxMTA1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXF1ZXN0X29wc19sb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDoxOC42MTI2OTkxMjZaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwMDM1NDkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaWdnaW5nIGludG8gdGhlIElBVkYgQ29kZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIGNydWNpYWwgc2V0dGluZyBpcyBoYXBwZW5pbmcgd2l0aGluIHRoZSBgaWF2ZmAgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IHdhcyB0aGF0IG1heWJlIGl0IHdhcyBoYW5kbGVkIGRpcmVjdGx5IHdpdGhpbiBgaWF2Zl9tYWluLmNgLCBidXQgYSBxdWljayBncmVwIHR1cm5zIHVwIG5vdGhpbmcuIEhtbSwgdGhhdCdzIG5vdCBpdC4gTGV0J3Mgc2VlLi4uIG1heWJlIGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgYHF1ZXVlX21nbXRfb3BzYCBzdHJ1Y3R1cmUuIEknbGwgc2VhcmNoIGZvciB0aGF0IHRvIHNlZSBpZiBgaWF2ZmAgaXMgbGV2ZXJhZ2luZyBpdCwgYnV0IHN0aWxsLCBubyBkaWNlLiBJJ20gc3RhcnRpbmcgdG8gdGhpbmsgdGhpcyBpcyBub3QgdGhlIHJpZ2h0IHBsYWNlLiBQZXJoYXBzIGEgZGlmZmVyZW50IHNldCBvZiBvcGVyYXRpb25zLCBgbmV0X3NoYXBlcl9vcHNgLCBhcmUgaW52b2x2ZWQgaW5zdGVhZC4gSSdsbCBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgbmV4dCwgaG9wZWZ1bGx5LCBpdCB3aWxsIGJlIHRoZSByaWdodCBsb2NhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU2MzUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDoyMS44MTMwNTYzNzdaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTM1NDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldF9zaGFwZXJfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmM9NTExNj1zdGF0aWMgdm9pZCBpYXZmX3NoYXBlcl9jYXAoc3RydWN0IG5ldF9zaGFwZXJfYmluZGluZyAqYmluZGluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTEyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jOjUxMjg6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfc2hhcGVyX29wcyBpYXZmX3NoYXBlcl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYy01MTI5LVxcdC5zZXQgPSBpYXZmX3NoYXBlcl9zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jPTUxMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpYXZmX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jLTUxNDgtXFx0Lm5kb19zZXR1cF90Y1xcdFxcdD0gaWF2Zl9zZXR1cF90YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jOjUxNDk6XFx0Lm5ldF9zaGFwZXJfb3BzXFx0XFx0PSBcXHUwMDI2aWF2Zl9zaGFwZXJfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTE1MC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gaWF2Zl9od3N0YW1wX2dldCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDA6MjEuODcxMTk3MzA1WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTYxNjk4MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBJQVZGIGFuZCBOZXR3b3JrIFNoYXBlciBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBpYXZmYCBkcml2ZXIgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBsZXZlcmFnaW5nIGBuZXRfc2hhcGVyX29wc2AuIFRoYXQncyBpbnRlcmVzdGluZywgYmVjYXVzZSBpdCBtZWFucyB0aGUgZHJpdmVyIGlzIGluZGVlZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBuZXR3b3JrIHNoYXBpbmcgZnVuY3Rpb25hbGl0eS4gQW5kIGhlcmUncyB0aGUgY2xpbmNoZXI6IGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgcmV0dXJucyB0cnVlIHdoZW4gYG5ldF9zaGFwZXJfb3BzYCBpcyBzZXQgd2l0aGluIHRoZSBgbmV0ZGV2X29wc2Agc3RydWN0dXJlLiBUaGUgY29kZSBzbmlwcGV0IGNsZWFybHkgY29uZmlybXMgdGhhdDpcblxuYGBgY1xuI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9TSEFQRVIpXG5cdHJldCB8PSAhIWRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5ldF9zaGFwZXJfb3BzO1xuI2VuZGlmXG5gYGBcblxuU28sIGlmIGBuZXRfc2hhcGVyX29wc2AgaXMgYXNzaWduZWQsIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgaXMgZ29pbmcgdG8gYmUgcmVwb3J0aW5nIGEgbmVlZCBmb3IgbG9ja2luZy4gVGhpcyBjb25maXJtcyB0aGF0IGBpYXZmYCBfZG9lc18gcmVxdWlyZSB0aGF0IGxvY2tpbmcgbWVjaGFuaXNtLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgd2hhdCBhYm91dCBgbWFuYWA/IEkgbmVlZCB0byBjaGVjayBpZiB0aGUgc2FtZSBsb2dpYyBhcHBsaWVzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjIzMiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDoyNS4yODczNzE1NVoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEwODUwMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0X3NoYXBlcl9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYz05NjQ9c3RhdGljIHZvaWQgbWFuYV9zaGFwZXJfY2FwKHN0cnVjdCBuZXRfc2hhcGVyX2JpbmRpbmcgKmJpbmRpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtOTcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzo5NzI6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfc2hhcGVyX29wcyBtYW5hX3NoYXBlcl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTk3My1cXHQuc2V0ID0gbWFuYV9zaGFwZXJfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jPTk3OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hbmFfZGV2b3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTk5MS1cXHQubmRvX3R4X3RpbWVvdXRcXHRcXHQ9IG1hbmFfdHhfdGltZW91dCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6OTkyOlxcdC5uZXRfc2hhcGVyX29wcyAgICAgICAgID0gXFx1MDAyNm1hbmFfc2hhcGVyX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtOTkzLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQwOjI1LjM1ODQ2MzQ5OFoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjA2MjQxNDc0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEV0aHRvb2wgTGluayBTdGF0ZSBCdWcgRml4KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBUaGUga2V5IGluc2lnaHQgaXMgdGhhdCB0aGUgYG1hbmFgIGRyaXZlciwgYWxvbmcgd2l0aCBgZ3ZlYCwgYGlhdmZgLCBgbWx4NWAsIGFuZCBgZmJuaWNgLCBhbGwgdXRpbGl6ZSBgbmV0X3NoYXBlcl9vcHNgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgbGVhZHMgdG8gYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIHJldHVybmluZyBgdHJ1ZWAgZm9yIHRoZXNlIGRyaXZlcnMuIENvbnNlcXVlbnRseSwgYG5lZWRfcnRubGAgd291bGQgYmUgYGZhbHNlYCBieSBkZWZhdWx0IGZvciBgRVRIVE9PTF9HTElOS2AgYW5kIGBFVEhUT09MX01TR19MSU5LU1RBVEVfR0VUYC4gVGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgaXNzdWUuXG5cblRoZSBwcm9ibGVtIGFyaXNlcyBiZWNhdXNlIHdoZW4gYG5lZWRfcnRubGAgaXMgYGZhbHNlYCwgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGlzIGludm9rZWQgd2l0aG91dCBob2xkaW5nIHRoZSBgcnRubF9sb2NrYC4gSG93ZXZlciwgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAsIHdoaWNoIHRoZW4gY2FsbHMgYGxpbmt3YXRjaF9kb19kZXZgLCBldmVudHVhbGx5IGxlYWRpbmcgdG8gYGRldl9hY3RpdmF0ZWAgYW5kIGEgY2FsbCB0byBgcnRubF9kZXJlZmVyZW5jZShkZXYtXHUwMDNlcWRpc2MpYC4gVGhpcyBkZXJlZmVyZW5jZSAqcmVxdWlyZXMqIHRoZSBgcnRubF9sb2NrYC4gVGhlcmVmb3JlLCBjYWxsaW5nIGBldGh0b29sX29wX2dldF9saW5rYCB3aXRob3V0IHRoZSBsb2NrIGludHJvZHVjZXMgYSByYWNlIGNvbmRpdGlvbiBhbmQgbGVhZHMgdG8gUkNVIHdhcm5pbmdzLlxuXG5UaGlzIHBhdGNoIGVsZWdhbnRseSBhZGRyZXNzZXMgdGhlIGlzc3VlIGJ5IGFkZGluZyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCB0byBgb3BfbmVlZHNfcnRubGAgZm9yIHRoZXNlIHNwZWNpZmljIGRyaXZlcnMuIFRoaXMgZmxhZyBpcyB0aGVuIGNoZWNrZWQgaW4gYGV0aHRvb2xfbmxfbXNnX25lZWRzX3J0bmxgIGFuZCBgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sYCwgZ3VhcmFudGVlaW5nIHRoYXQgYHJ0bmxfbG9ja2AgaXMgYWNxdWlyZWQgYmVmb3JlIGNhbGxpbmcgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLiBJdCdzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIGxvY2tpbmcgYnVnLlxuXG5HaXZlbiB0aGlzLCBJIHRoaW5rIGZ1enppbmcgdGhpcyBjaGFuZ2UgaXMgYSB3b3J0aHdoaWxlIGVuZGVhdm9yIGJlY2F1c2UgaXQgZnVuZGFtZW50YWxseSBhbHRlcnMgbG9ja2luZyBiZWhhdmlvci4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhhdCB0aGUgbG9jayBpcyBjb25zaXN0ZW50bHkgdGFrZW4gYW5kIHRoYXQgbm8gZGVhZGxvY2tzIG9yIG5ldyBSQ1Ugd2FybmluZ3MgYXJlIGludHJvZHVjZWQuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBmb3IgZm9jdXMgZHVyaW5nIHRlc3RpbmcuIEkgaW5pdGlhbGx5IHRob3VnaHQgdG8gaW5jbHVkZSBhIGJyb2FkZXIgc2V0LCBzdWNoIGFzIHRoZSBnZW5lcmljIGV0aHRvb2wgZnVuY3Rpb25zIGBldGhubF9kZWZhdWx0X2RvaXRgIGFuZCBgX19kZXZfZXRodG9vbGAsIGJ1dCB0aGV5IGFyZSB0b28gZ2VuZXJpYy4gTXkgZm9jdXMgbXVzdCBiZSBsYXNlci1zaGFycC4gVGhlIGNydWNpYWwgZnVuY3Rpb24gaXMgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLCBhcyBpdCdzIHRoZSBvbmUgZGlyZWN0bHkgaW1wYWN0ZWQgYnkgdGhlIGxvY2tpbmcgY2hhbmdlLiBUaGUgb3RoZXIgY3JpdGljYWwgZnVuY3Rpb25zIGFyZSB0aGUgZW50cnkgcG9pbnRzIHRoYXQgY2FsbCB0aGlzIGFuZCB1c2UgdGhlIGxvY2s6IGBldGhubF9kZWZhdWx0X2RvaXRgIGFuZCBgX19kZXZfZXRodG9vbGAuXG5cblNvLCBmb3IgRm9jdXNTeW1ib2xzLCBJJ20gdGhpbmtpbmc6XG5cbiogICBgZXRodG9vbF9vcF9nZXRfbGlua2BcbiogICBgZXRobmxfZGVmYXVsdF9kb2l0YFxuKiAgIGBfX2Rldl9ldGh0b29sYFxuXG5TaW5jZSBgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubGAgYW5kIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCB0aGV5IHdvbid0IHNob3cgYXMgc3ltYm9scywgYnV0IGBldGhubF9kZWZhdWx0X2RvaXRgIGFuZCBgX19kZXZfZXRodG9vbGAgd2lsbCBjYWxsIHRoZW0uXG5cblJlZ2FyZGluZyBFbmFibGVDb25maWdzLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGUgbW9kaWZpZWQgZHJpdmVycyBhcmUgZW5hYmxlZCB0byB0cmlnZ2VyIHRoZSBmYXVsdHkgYmVoYXZpb3IgYW5kIHRoZSBmaXg6XG5cbiogICBgZ3ZlYDogYENPTkZJR19HVkVgXG4qICAgYGlhdmZgOiBgQ09ORklHX0lBVkZgXG4qICAgYG1seDVgOiBgQ09ORklHX01MWDVfQ09SRWAsIGBDT05GSUdfTUxYNV9DT1JFX0VOYFxuKiAgIGBmYm5pY2A6IGBDT05GSUdfRkJOSUNgXG4qICAgYG1hbmFgOiBgQ09ORklHX01JQ1JPU09GVF9NQU5BYFxuXG5BbHNvLCBmb3IgYGlhdmZgIGFuZCBgbWFuYWAgdG8gdXRpbGl6ZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgLCB3ZSBuZWVkIGBDT05GSUdfTkVUX1NIQVBFUmAuIEkgd2lsbCB2ZXJpZnkgdGhlc2UgS2NvbmZpZyBuYW1lcyB0byBlbnN1cmUgYWNjdXJhY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2ODkyLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDozNy40MjA4ODE1MjhaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTY0MjI3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEdWRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZz0xNj1pZiBORVRfVkVORE9SX0dPT0dMRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnOjE4OmNvbmZpZyBHVkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiR29vZ2xlIFZpcnR1YWwgTklDIChnVk5JQykgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDA6MzkuODM3MzEwNTc4WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Njg5MTg4NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHNwZWFraW5nIGFzIHRoZSBleHBlcnQ6XG5cbioqSUFWRiBFeGFtaW5hdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHN0YXJ0IGJ5IGNoZWNraW5nIGBJQVZGYC4gSW1tZWRpYXRlbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zLiBJcyB0aGlzIGEgbmV3IHByb2plY3Q/IEEgZGF0YXNldCBJIGhhdmVuJ3Qgc2VlbiBiZWZvcmU/IE9yIGFtIEkgcmV2aXNpdGluZyBzb21ldGhpbmcgSSd2ZSB3b3JrZWQgb24gcHJldmlvdXNseT8gVGhlIGNvbnRleHQgaXMgY3JpdGljYWwuIFdoYXQncyB0aGUgcHJvYmxlbSB3ZSdyZSB0cnlpbmcgdG8gc29sdmUgaGVyZT8gSXMgdGhpcyByZWxhdGVkIHRvIGFub21hbHkgZGV0ZWN0aW9uLCBmZWF0dXJlIGVuZ2luZWVyaW5nLCBvciBtb2RlbCB2YWxpZGF0aW9uPyBJcyBgSUFWRmAgYW4gYWNyb255bT8gSXQgY291bGQgc3RhbmQgZm9yIHNvbWV0aGluZyBpbXBvcnRhbnQgaW4gdGhpcyBkb21haW4uIFdoYXQga2luZCBvZiBkYXRhIGlzIGFzc29jaWF0ZWQgd2l0aCBgSUFWRmA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzdHJ1Y3R1cmUsIGRpbWVuc2lvbnMsIGFuZCBwb3RlbnRpYWwgcmVsYXRpb25zaGlwcyB3aXRoIG90aGVyIHZhcmlhYmxlcy4gQW55IGluaXRpYWwgaHlwb3RoZXNpcyBuZWVkcyB0byBiZSBidWlsdCBhcm91bmQgdGhlIGZ1bmN0aW9uIG9mIGBJQVZGYD8gSXMgdGhlcmUgcHJldmlvdXMgYW5hbHlzaXMgYXJvdW5kIHRoZSBtZXRyaWMgb3IgZGF0YXNldD8gSSBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrLiBJ4oCZbGwgbWFrZSBzdXJlIHRvIGRvdWJsZS1jaGVjayBhZ2FpbnN0IGFueSBwcmlvciBhc3N1bXB0aW9ucyBvciBleGlzdGluZyBrbm93bGVkZ2UgSSBoYXZlIHJlZ2FyZGluZyB0aGlzIGFyZWEsIGFuZCBob3cgaXQgYWxpZ25zIHdpdGggdGhlIGN1cnJlbnQgZ29hbHMuIFRoZSBkZXZpbCdzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgc28gSSdsbCBzdGFydCB3aXRoIGEgbWV0aG9kaWNhbCwgZmlyc3QgcHJpbmNpcGxlcyBhcHByb2FjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg5MTYsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQwOjQzLjMwNjIzMjEwMloiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5ODEzODAxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUFWRlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTI1MD1jb25maWcgSTQwRV9EQ0JcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjYxLSMgc28gdGhhdCBDT05GSUdfSUFWRiBzeW1ib2wgd2lsbCBhbHdheXMgbWlycm9yIHRoZSBzdGF0ZSBvZiBDT05GSUdfSTQwRVZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyNjI6Y29uZmlnIElBVkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI2My1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDo0NS44MDQzNzg3M1oiLCJTZXEiOjU5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzE4OTAzODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBzdW1tYXJpemVkLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGVzZSB0eXBlcyBvZiBzeXN0ZW1zOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogTUxYNV9DT1JFKipcblxuQWxyaWdodCwgKk1MWDVfQ09SRSouLi4gSSBuZWVkIHRvIGltbWVkaWF0ZWx5IGFzc2VzcyB3aGF0J3MgaGFwcGVuaW5nLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCBteSBrbm93bGVkZ2Ugb2YgdGhpcyBjb3JlIGNvbXBvbmVudC4gV2hhdCdzIHRoZSBjb250ZXh0PyBXaGF0IHByb2JsZW0gYXJlIHdlIGxvb2tpbmcgYXQ/IFRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBhIGNlbnRyYWwsIGZvdW5kYXRpb25hbCBwaWVjZSByZWxhdGVkIHRvIE1lbGxhbm94L052aWRpYSBoYXJkd2FyZSDigJMgbGlrZWx5IHJlZmVycmluZyB0byB0aGUgY29yZSBkcml2ZXIgb3IgZmlybXdhcmUgaW50ZXJmYWNlIGZvciB0aGVpciBuZXR3b3JrIGFkYXB0ZXJzLiBJIG5lZWQgdG8gYmUgdGhpbmtpbmcgYWJvdXQgaG93IGl0IGhhbmRsZXMgdGhlIGZ1bmRhbWVudGFsIGFzcGVjdHMgb2YgbmV0d29yayBjb21tdW5pY2F0aW9uLCBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIGFuZCBwb3RlbnRpYWxseSByZXNvdXJjZSBtYW5hZ2VtZW50LiBNeSBtaW5kIG5lZWRzIHRvIGp1bXAgdGhyb3VnaCB0aGUgbGF5ZXJzLCBmcm9tIHRoZSBoYXJkd2FyZSBpdHNlbGYgdG8gdGhlIHNvZnR3YXJlIGludGVyZmFjZXMgYW5kIHVwIHRoZSBzdGFjaywgYW50aWNpcGF0aW5nIHRoZSBhcmVhcyB0aGF0IGFyZSBtb3N0IGxpa2VseSB0aGUgc291cmNlIG9mIGFuIGlzc3VlIGlmIHRoZXJlIGlzIG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkzMDAsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDo1MC4xMjMyODU1NzJaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDgzMTI5NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1MWDVfQ09SRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjY6Y29uZmlnIE1MWDVfQ09SRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk1lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgY29yZSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0xOT1jb25maWcgTUxYNV9GUEdBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoyOTpjb25maWcgTUxYNV9DT1JFX0VOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiTWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9MTEyPWNvbmZpZyBNTFg1X1RDX1NBTVBMRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEyNTpjb25maWcgTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEyNi1cXHRib29sIFxcXCJEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEzNzpjb25maWcgTUxYNV9DT1JFX0lQT0lCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTM4LVxcdGJvb2wgXFxcIk1lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKGNvbm5lY3RYIHNlcmllcykgSVBvSUIgb2ZmbG9hZHMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDA6NTIuNjMxNjA2NjVaIiwiU2VxIjo2MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MTAyMDU4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIGBGQk5JQ2AgQ29udGV4dCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBGQk5JQ2AgdGhpbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IHNwZWNpZmljYWxseSBhcmUgd2UgdGFsa2luZyBhYm91dCBoZXJlPyBJcyBpdCBhIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24sIGEgc3BlY2lmaWNhdGlvbiBkb2N1bWVudCwgb3IgYSBnZW5lcmFsIGNvbmNlcHQ/IEkgbmVlZCBtb3JlIGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGludGVudC4gRGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpY3MsIEknbGwgbmVlZCB0byBjb25zaWRlciBhc3BlY3RzIGxpa2U6XG5cbiogICAqKlVuZGVybHlpbmcgTmV0d29yayBUZWNobm9sb2d5OioqIElzIHRoaXMgcmVsYXRlZCB0byBFdGhlcm5ldCwgSW5maW5pQmFuZCwgc29tZXRoaW5nIHByb3ByaWV0YXJ5LCBvciBhIGh5YnJpZCBhcmNoaXRlY3R1cmU/IFVuZGVyc3RhbmRpbmcgdGhlIGZ1bmRhbWVudGFsIG5ldHdvcmsgbGF5ZXIgaXMgY3JpdGljYWwuXG4qICAgKipQcm90b2NvbCBDb25zaWRlcmF0aW9uczoqKiBXaGF0IHByb3RvY29scyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCBgRkJOSUNgPyBUQ1AvSVAsIFJETUEsIG9yIHNvbWV0aGluZyBjdXN0b20/IFRoZSBwcm90b2NvbCBzdGFjayBkaWN0YXRlcyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBhbmQgcG90ZW50aWFsIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzLlxuKiAgICoqSGFyZHdhcmUgRGVwZW5kZW5jaWVzOioqIEFyZSB3ZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBOSUMgdmVuZG9yPyBXaGF0IGFyZSB0aGVpciBmZWF0dXJlIHNldHMgYW5kIGxpbWl0YXRpb25zPyBWZW5kb3Itc3BlY2lmaWMgb3B0aW1pemF0aW9ucyBhbmQgY2FwYWJpbGl0aWVzIGFyZSBhbHdheXMgd29ydGggaW52ZXN0aWdhdGluZy5cbiogICAqKlNvZnR3YXJlIFN0YWNrOioqIFdoYXQgc29mdHdhcmUgaXMgaW50ZXJmYWNpbmcgd2l0aCB0aGUgYEZCTklDYD8gT3BlcmF0aW5nIHN5c3RlbSBkcml2ZXJzLCBhcHBsaWNhdGlvbi1sZXZlbCBsaWJyYXJpZXMsIG9yIGEgY3VzdG9tIG1pZGRsZXdhcmUgbGF5ZXI/IFRoZSBzb2Z0d2FyZSBzdGFjayBpbmZsdWVuY2VzIHBlcmZvcm1hbmNlIGFuZCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgdmFyaWFibGVzLlxuKiAgICoqUGVyZm9ybWFuY2UgTWV0cmljczoqKiBXaGF0IGFyZSB0aGUga2V5IHBlcmZvcm1hbmNlIGluZGljYXRvcnMgKEtQSXMpIHJlbGV2YW50IHRvIGBGQk5JQ2AncyBiZWhhdmlvcj8gVGhyb3VnaHB1dCwgbGF0ZW5jeSwgcGFja2V0IGxvc3MsIENQVSB1dGlsaXphdGlvbiwgb3IgYSBjb21iaW5hdGlvbiBvZiB0aGVzZT8gRGV0ZXJtaW5pbmcgd2hhdCB3ZSdyZSBtZWFzdXJpbmcgaGVscHMgaXNvbGF0ZSBwcm9ibGVtcy5cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIEhvdyBkb2VzIGBGQk5JQ2AgaGFuZGxlIGVycm9yIGNvbmRpdGlvbnM/IERvZXMgaXQgcHJvdmlkZSBzdWZmaWNpZW50IGxvZ2dpbmcgYW5kIGRpYWdub3N0aWNzIGZvciBkZWJ1Z2dpbmc/IFJvYnVzdCBlcnJvciBoYW5kbGluZyBpcyBjcnVjaWFsIGZvciByZWxpYWJsZSBvcGVyYXRpb24uXG4qICAgKipDb25maWd1cmF0aW9uIGFuZCBUdW5pbmc6KiogQXJlIHRoZXJlIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzIHRoYXQgaW1wYWN0IGBGQk5JQ2AncyBwZXJmb3JtYW5jZT8gVW5kZXJzdGFuZGluZyB0aGUga25vYnMgYW5kIGRpYWxzIGlzIHZpdGFsIGZvciBvcHRpbWl6YXRpb24uXG5cbkkgbmVlZCB0byBzZWUgdGhlIGRldGFpbHMsIGFuZCBmcm9tIHRoZXJlIEkgY2FuIHN0YXJ0IHRvIGRldmVsb3AgYSBwcmVjaXNlIGFuYWx5c2lzLiBMZXQncyBzZWUgd2hhdCB3ZSBhcmUgZGVhbGluZyB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTk5MywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDA6NTYuNTIyNjI5ODIzWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzUzMjgwMjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGQk5JQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MTg9aWYgTkVUX1ZFTkRPUl9NRVRBXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyMDpjb25maWcgRkJOSUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIk1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQwOjU4Ljg3NTkxNzA2NFoiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDAwNzkwMDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQ2hlY2tpbmcgYE1JQ1JPU09GVF9NQU5BYCoqXG5cblJpZ2h0LCBsZXQncyBzdGFydCBieSBxdWlja2x5IHB1bGxpbmcgdXAgdGhlIGBNSUNST1NPRlRfTUFOQWAgZGF0YS4gSSdtIGFzc3VtaW5nIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBwcm9wcmlldGFyeSBkYXRhc2V0IG9yIGludGVybmFsIG1ldHJpYyDigJMgc29tZXRoaW5nIGhpZ2hseSByZWxldmFudCB0byBNaWNyb3NvZnQncyBwZXJmb3JtYW5jZSwgcG90ZW50aWFsbHkgYSBmaW5hbmNpYWwgbW9kZWwsIGEgY3VzdG9tZXIgZW5nYWdlbWVudCBzY29yZSwgb3Igc29tZSBraW5kIG9mIGludGVybmFsIHByb2R1Y3Rpdml0eSBtZWFzdXJlLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gZW5zdXJpbmcgZGF0YSBpbnRlZ3JpdHkuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgZnJlc2huZXNzIG9mIHRoZSBkYXRhOyB3aGVuIHdhcyB0aGUgbGFzdCB1cGRhdGU/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBmbGFncyDigJMgbWlzc2luZyB2YWx1ZXMsIG91dGxpZXJzLCBvciB1bnVzdWFsIHBhdHRlcm5zIHRoYXQganVtcCBvdXQ/IEknbGwgcHJvYmFibHkgcnVuIGEgc2FuaXR5IGNoZWNrIGFnYWluc3Qga25vd24gYmFzZWxpbmVzIG9yIGV4dGVybmFsIGJlbmNobWFya3MgaWYgcG9zc2libGUuXG5cbkJleW9uZCB0aGF0LCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2hhdCBJJ20gbG9va2luZyBmb3IuIFdoYXQgYXJlIHRoZSBrZXkgcGVyZm9ybWFuY2UgaW5kaWNhdG9ycyAoS1BJcykgdGhpcyBgTUlDUk9TT0ZUX01BTkFgIGlzIG1lYW50IHRvIHJlZmxlY3Q/IElzIGl0IGFsaWduZWQgd2l0aCBjdXJyZW50IHN0cmF0ZWdpYyBwcmlvcml0aWVzLCBvciBoYXMgaXQgZGl2ZXJnZWQ/IE15IG1pbmQgaXMgYWxyZWFkeSBydW5uaW5nIHNjZW5hcmlvczogSWYgaXQncyB0cmVuZGluZyB1cHdhcmRzLCB3aGF0IGFyZSB0aGUgY29udHJpYnV0aW5nIGZhY3RvcnM/IElzIGl0IHN1c3RhaW5hYmxlPyBJZiBpdCdzIGRvd24sIGFyZSB0aGVyZSBzcGVjaWZpYyBhcmVhcyBvZiBjb25jZXJuIOKAkyBhIGdlb2dyYXBoaWNhbCByZWdpb24sIGEgcHJvZHVjdCBsaW5lLCBhIGN1c3RvbWVyIHNlZ21lbnQ/IEknbGwgYmUgZm9ybWluZyBoeXBvdGhlc2VzIGFib3V0IHBvdGVudGlhbCBjYXVzZXMuIEknbGwgbGlrZWx5IG1lbnRhbGx5IGNhdGVnb3JpemUgdGhlIGRhdGEg4oCTIHNlZ21lbnRpbmcgaXQsIGxvb2tpbmcgZm9yIGNvcnJlbGF0aW9ucywgdHJ5aW5nIHRvIGZpbHRlciBmb3Igc3BlY2lmaWMgdmlld3Mgb2YgdGhlIHVuZGVybHlpbmcgZGF0YS4gVGhpcyB3aWxsIGluY2x1ZGUgaWRlbnRpZnlpbmcgdGhlIGtleSBkZXBlbmRlbmNpZXMgb2YgdGhlIGRhdGEsIHRoZSBhc3N1bXB0aW9ucyB1c2VkIGluIHRoZSBkZXNpZ24sIGFuZCBhbnkgYXNzb2NpYXRlZCBiaWFzZXMuXG5cblVsdGltYXRlbHksIG15IGdvYWwgaGVyZSBpc24ndCBqdXN0IHRvICpzZWUqIHRoZSBkYXRhLCBidXQgdG8gZ2FpbiBhY3Rpb25hYmxlIGluc2lnaHRzLiBIb3cgY2FuIHRoaXMgaW5mb3JtYXRpb24gYmUgdHJhbnNsYXRlZCBpbnRvIGNvbmNyZXRlIHJlY29tbWVuZGF0aW9ucywgYWRqdXN0bWVudHMgdG8gc3RyYXRlZ3ksIG9yIGltbWVkaWF0ZSBpbnRlcnZlbnRpb25zLCBpZiBuZWNlc3Nhcnk/IFRoaXMgaW5pdGlhbCBjaGVjayBpcyBhIHJhcGlkIGFzc2Vzc21lbnQsIGEganVtcGluZy1vZmYgcG9pbnQgZm9yIGRlZXBlciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDUzMywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQxOjAzLjg3NjcxMDFaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODkzMDI0MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1JQ1JPU09GVF9NQU5BXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6MTg6Y29uZmlnIE1JQ1JPU09GVF9NQU5BXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQxOjA2LjE2NjAxODIzM1oiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODYzNDMxMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBgTkVUX1NIQVBFUmAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIGBORVRfU0hBUEVSYC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGNydWNpYWwsIGFzIHRoaXMgY29tcG9uZW50IGlzIHRoZSBsaW5jaHBpbiBmb3IgdGhpcyBzeXN0ZW0ncyBuZXR3b3JrIHRyYWZmaWMgbWFuYWdlbWVudC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhhdCBpdCBpcyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZCwgY2hlY2tpbmcgZm9yIHRoZSBtb3N0IG9idmlvdXMgaW5kaWNhdG9ycyBmaXJzdCwgbGlrZSBvdmVyYWxsIHJlc291cmNlIGNvbnN1bXB0aW9uIGFuZCBsb2dzLCB3aGljaCwgZnJvbSBleHBlcmllbmNlLCB1c3VhbGx5IHJldmVhbCB0aGUgbW9zdCBjb21tb24gaXNzdWVzIHJpZ2h0IGF3YXkuIEFyZSB0aGVyZSBhbnkgYW5vbWFsb3VzIHNwaWtlcyBpbiBDUFUgdXNhZ2UsIG9yIGFueSB1bnVzdWFsIGRlbGF5cz8gQW5kIHdoYXQgZG8gdGhlIGVycm9yIGxvZ3MgdGVsbCB1cz8gRnJvbSB0aGVyZSwgSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIGFuYWx5emUgaXRzIGNvbmZpZ3VyYXRpb24g4oCTIHNwZWNpZmljYWxseSwgaG93IGl04oCZcyBoYW5kbGluZyByYXRlIGxpbWl0aW5nLCB0cmFmZmljIHByaW9yaXRpemF0aW9uLCBhbmQgYW55IHNoYXBpbmcgcnVsZXMgdGhhdCBoYXZlIGJlZW4gZXN0YWJsaXNoZWQuIEtub3dpbmcgd2hhdCBpdHMgYmFzZWxpbmUgb3BlcmF0aW9uIGxvb2tzIGxpa2UgaXMgY3JpdGljYWwgYmVmb3JlIHRyb3VibGVzaG9vdGluZyBpdCBvciBpbXByb3ZpbmcgaXQuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSB3aGVyZSB0aGUgYm90dGxlbmVjayBtaWdodCBhY3R1YWxseSBiZS4gSXMgaXQgYSBtaXNjb25maWd1cmF0aW9uLCBvciBzb21ldGhpbmcgbW9yZSBmdW5kYW1lbnRhbCB3aXRoIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmU/IEknbGwgcHJvYmFibHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBgTkVUX1NIQVBFUmAgb3V0cHV0IHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtIG1vbml0b3JpbmcgdG8gY29ycmVsYXRlIGl0cyBiZWhhdmlvciB3aXRoIHRoZSByZXN0IG9mIHRoZSBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEwNTYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MToxMC4wMjk0NTIxNTdaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODU3OTMxOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TSEFQRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9Njk9Y29uZmlnIE5FVF9ERVZNRU1cXG4tLVxcbm5ldC9LY29uZmlnLTc0LVxcbm5ldC9LY29uZmlnOjc1OmNvbmZpZyBORVRfU0hBUEVSXFxubmV0L0tjb25maWctNzYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MToxMi43MTUyNTQ2NloiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDcxMjc3Njc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEknbSBub3RpbmcgdGhlIGNvcmUgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQ6IGBHVkVgLCBgSUFWRmAsIGBNTFg1X0NPUkVgLCBgTUxYNV9DT1JFX0VOYCwgYE1MWDVfQ09SRV9JUE9JQmAsIGBGQk5JQ2AsIGBNSUNST1NPRlRfTUFOQWAsIGFuZCBgTkVUX1NIQVBFUmAuIEl0J3MgYSBzdGFuZGFyZCBsaXN0IGZvciB0aGlzIHR5cGUgb2Ygc3lzdGVtLlxuXG5UaGVuLCB0aGUgZm9jdXMgdGlnaHRlbnMuIEkgc2VlIHRoYXQgdGhlIHBhdGNoIHNwZWNpZmljYWxseSBhbHRlcnMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9ldGh0b29sLmNgLiBUaGlzIG1lYW5zIGBNTFg1X0NPUkVfSVBPSUJgIGlzIGRlZmluaXRlbHkgcmVsZXZhbnQuIFRoZSBkaWZmIGFkZHMgYEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOS2AgdG8gdGhlIGAub3BfbmVlZHNfcnRubGAgZmllbGQuIFRoaXMgY2xlYXJseSBpbXBsaWVzIGEgZGVwZW5kZW5jeSBvciBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBJUE9JQiBldGh0b29sIG9wZXJhdGlvbnMuIFRodXMsIGBNTFg1X0NPUkVfSVBPSUJgIGlzIGVzc2VudGlhbC5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGEgc2ltaWxhciBzaXR1YXRpb24gd2l0aCBgZW5fcmVwLmNgLCBzbyBJJ2xsIHNlZSBpZiBgTUxYNV9DT1JFX0VOX1JFUGAgb3IgYW55IHJlbGF0ZWQgY29uZmlnIGlzIHByZXNlbnQuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiDigJMgY2hlY2tpbmcgZm9yIG90aGVyIGRyaXZlcnMgb3IgbW9kdWxlcyB0aGF0IG1pZ2h0IGJlIGltcGxpY2F0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMzk5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQxOjE5Ljc4NjUzNzExNFoiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzNTc3NTU4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbl9yZXAub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9NDI9bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRVNXSVRDSCkgICAgICs9IGxhZy9tcC5vIGxhZy9wb3J0X3NlbC5vIGxpYi9nZW5ldmUubyBsaWIvcG9ydF90dW4ubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjQzOlxcdFxcdFxcdFxcdFxcdGVuX3JlcC5vIGVuL3JlcC9ib25kLm8gZW4vbW9kX2hkci5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNDQtXFx0XFx0XFx0XFx0XFx0ZW4vbWFwcGluZy5vIGxhZy9tcGVzdy5vIGxhZy9zaGFyZWRfZmRiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDE6MjMuMTIyMzE3MzQxWiIsIlNlcSI6NjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MDk5NTcyNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZXZpZXdpbmcgdGhpcyBpbmZvcm1hdGlvbjpcblxuKipBbmFseXppbmcgTmV0d29yayBEZXZpY2UgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgYENPTkZJR19NTFg1X0VTV0lUQ0hgIGhpZ2hsaWdodGVkLiBSaWdodCwgZ290IGl0LiBUaGVuLCBJJ20gcHJlc2VudGVkIHdpdGggYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zOiBgR1ZFYCwgYElBVkZgLCBgTUxYNV9DT1JFYCwgYE1MWDVfQ09SRV9FTmAsIGBNTFg1X0NPUkVfSVBPSUJgLCBgTUxYNV9FU1dJVENIYCwgYEZCTklDYCwgYE1JQ1JPU09GVF9NQU5BYCwgYW5kIGBORVRfU0hBUEVSYC4gU2VlbXMgbGlrZSBhIHJlbGV2YW50IGdyb3VwaW5nIG9mIG5ldHdvcmstcmVsYXRlZCBrZXJuZWwgY29uZmlncy5cblxuTm93LCBhIHNtYWxsIGJ1dCBpbXBvcnRhbnQgZGV0YWlsIGNhdGNoZXMgbXkgYXR0ZW50aW9uLiBJIHJlbWVtYmVyIHRoYXQgYE5FVF9TSEFQRVJgIGlzIGEgYm9vbGVhbi4gVGhhdCBzdWdnZXN0cyBpdCBjb3VsZCBiZSBpbmZsdWVuY2VkIG9yIHNlbGVjdGVkIGJ5IGFub3RoZXIgY29uZmlnLiBSZWdhcmRsZXNzLCBpdCdzIHN0aWxsIHdvcnRoIGxpc3RpbmcgaXQgaGVyZSwgc2luY2UgaXQncyBwcmVzZW50LlxuXG5JIGhhdmUgYSBzdXNwaWNpb24gdG8gY2hlY2suIExvb2tpbmcgY2xvc2VyLCBJIHJlY2FsbCB0aGF0IGJvdGggYElBVkZgIGFuZCBgTUlDUk9TT0ZUX01BTkFgIHV0aWxpemUgYG5ldF9zaGFwZXJfb3BzYCBpbiB0aGVpciBjb2RlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGluIG15IG1pbmQgaXMsIGRvIHRoZXkgYWN0dWFsbHkgKnNlbGVjdCogYE5FVF9TSEFQRVJgPyBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZWlyIGRlcGVuZGVuY2llcyB0byBiZSBjZXJ0YWluLiBJdCdzIGNydWNpYWwgdG8gaWRlbnRpZnkgdGhlIHNlbGVjdG9yIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbmZpZydzIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI1MzQsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDE6MjguNTMyMjc3NDE3WiIsIlNlcSI6NzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTExODI1OTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBORVRfU0hBUEVSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjExLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnOjYxMjpcXHRzZWxlY3QgTkVUX1NIQVBFUlxcbmRyaXZlcnMvbmV0L0tjb25maWctNjEzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjYyPWNvbmZpZyBJQVZGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI2NS1cXHRzZWxlY3QgTElCSUVfQURNSU5RXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyNjY6XFx0c2VsZWN0IE5FVF9TSEFQRVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE4PWNvbmZpZyBNSUNST1NPRlRfTUFOQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjQtXFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjI1OlxcdHNlbGVjdCBORVRfU0hBUEVSXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjYtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MTozMS4wNDQxMTAwMDRaIiwiU2VxIjo3MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExNjkwNjUxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneTogVGFyZ2V0aW5nIHRoZSBFdGh0b29sIExpbmsgU3RhdGUgUmV0cmlldmFsIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGUgdXNlcidzIGZvY3VzIGlzIG9uIGRyaXZlcnMgd2hpY2ggaGF2ZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIGFuZCB0aGUgbG9ja2luZyBidWcgaXMgc3BlY2lmaWNhbGx5IGNlbnRlcmVkIGFyb3VuZCB0aGUgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCB3aXRob3V0IHRoZSBuZWNlc3NhcnkgYHJ0bmxfbG9ja2AuIFBlcmZlY3QuIFRoaXMgZ2l2ZXMgbWUgYSBjbGVhciB0YXJnZXQuIFdlJ3JlIG5vdCBzdHJpY3RseSAqcmVxdWlyZWQqIHRvIGxpc3QgYE5FVF9TSEFQRVJgLCBidXQgaW5jbHVkaW5nIGl0IHdvbid0IGh1cnQuXG5cbkxldCBtZSBicmVhayBkb3duIG15IHRoaW5raW5nIG9uIHRoZSBmdXp6aW5nIGFwcHJvYWNoOlxuXG5GaXJzdCwgSSBuZWVkIHRvIHJldmlldyB0aGUgYEZvY3VzU3ltYm9sc2AuIFRoZXJlIGFyZSBhIGZldyBwb3RlbnRpYWxseSByZWxldmFudCBlbnRyeSBwb2ludHM6IGBldGh0b29sX29wX2dldF9saW5rYCwgYGV0aG5sX2RlZmF1bHRfZG9pdGAsIGBldGhubF9kZWZhdWx0X2R1bXBfb25lYCwgYW5kIGBfX2Rldl9ldGh0b29sYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhlIGxvY2suIEhvd2V2ZXIsIGBldGh0b29sX29wX2dldF9saW5rYCBzdGFuZHMgb3V0LiBJdCdzIHVzZWQgYnkgYSBsYXJnZSBudW1iZXIgb2YgZHJpdmVycywgc28gZnV6emluZyBpdCBjb3VsZCBwb3RlbnRpYWxseSB1bmNvdmVyIGlzc3VlcyBpbiBvdGhlciBkcml2ZXJzLCB0b28uIEFuZCBpbiB0aGlzIGNhc2UsIHRoYXQncyBleGFjdGx5IHdoYXQgd2Ugd2FudC5cblxuVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCB0aGlzIGJ1ZyBhcmlzZXMgYmVjYXVzZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgKml0c2VsZiogaXMgbm90IGNvcnJlY3RseSBhY3F1aXJpbmcgdGhlIGBydG5sX2xvY2tgICpmb3IgdGhlIHNwZWNpZmljIHN1YnNldCBvZiBkcml2ZXJzKiB0aGF0IHVzZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgLiBUaGUgZnVuY3Rpb24gY2FsbHMgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCwgd2hpY2gsIGluIHR1cm4sIGNhbiB0cmlnZ2VyIGBkZXZfYWN0aXZhdGVgIGFuZCB1c2UgYHJ0bmxfZGVyZWZlcmVuY2VgLCByZXF1aXJpbmcgdGhlIGxvY2suIFRoZSBwYXRjaCBpdHNlbGYgYWRkcmVzc2VzIHRoaXMgYnkgYWRkaW5nIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRob3NlIGRyaXZlcnMnIGV0aHRvb2wgb3BzLiBUaGlzIGlzIGEgZGVsaWJlcmF0ZSBjaGFuZ2UgaW4gbG9ja2luZyBiZWhhdmlvciB0aGF0IEkgKm11c3QqIGZ1enogdG8gdmVyaWZ5IHRoYXQgaXQgZG9lcyBub3QgY2F1c2UgYW55IG5ldyBkZWFkbG9ja3Mgb3IgUkNVIHdhcm5pbmdzLlxuXG5JIG5lZWQgdG8gZm9jdXMgb24gdGhlIGFmZmVjdGVkIGRyaXZlcnMgc3BlY2lmaWNhbGx5OiBgR1ZFYCwgYElBVkZgLCBgTUxYNV9DT1JFYCwgYE1MWDVfQ09SRV9FTmAsIGBNTFg1X0NPUkVfSVBPSUJgLCBgTUxYNV9FU1dJVENIYCwgYEZCTklDYCwgYW5kIGBNSUNST1NPRlRfTUFOQWAuXG5cbkkgd2lsbCBpbmNsdWRlIGBldGh0b29sX29wX2dldF9saW5rYCBhbmQgYGV0aG5sX2RlZmF1bHRfZG9pdGAgc2luY2UgdGhleSBhcmUgdGhlIG1haW4gZW50cnkgcG9pbnRzLCBidXQgdGhlIHByaW1hcnkgdGFyZ2V0IHNob3VsZCBhYnNvbHV0ZWx5IGJlIGBldGh0b29sX29wX2dldF9saW5rYC4gSXQncyB0aGUgY2VudHJhbCBmdW5jdGlvbiBpbnZvbHZlZCBpbiB0aGUgdnVsbmVyYWJpbGl0eS4gYGV0aG5sX2RlZmF1bHRfZG9pdGAgYW5kIGBldGhubF9kZWZhdWx0X2R1bXBfb25lYCBhcmUgZ2VuZXJpYyBuZXRsaW5rIGhhbmRsZXJzIGFuZCBhcmUgbGVzcyBkaXJlY3RseSBpbXBsaWNhdGVkLiBgX19kZXZfZXRodG9vbGAgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYW5kIGxlc3MgaW1wb3J0YW50IGZvciBmdXp6aW5nIHB1cnBvc2VzLiBJJ3ZlIGRvdWJsZS1jaGVja2VkIHRoYXQgaW5saW5lIGZ1bmN0aW9ucyBsaWtlIGBldGh0b29sX25sX21zZ19uZWVkc19ydG5sYCBhbmQgYGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubGAgd29uJ3QgYmUgZnV6emVkIGRpcmVjdGx5LlxuXG5UaGVyZWZvcmUsIG15IHN0cmF0ZWd5IGlzIGNsZWFyOiB0YXJnZXQgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIHdpdGggYSBmb2N1cyBvbiB0aGUgbGlzdGVkIGNvbmZpZ3VyYXRpb25zIGFuZCBhaW0gdG8gaW5kdWNlIHRoZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gbG9ja2luZyB0byB0cmlnZ2VyIGFueSByZXN1bHRpbmcgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzI0OCwiT3V0cHV0VG9rZW5zIjoyOTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDE6NDIuMjEzMTc5NTI2WiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3NDMzMDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJHVkVcIixcbiAgICBcIklBVkZcIixcbiAgICBcIk1MWDVfQ09SRVwiLFxuICAgIFwiTUxYNV9DT1JFX0VOXCIsXG4gICAgXCJNTFg1X0NPUkVfSVBPSUJcIixcbiAgICBcIk1MWDVfRVNXSVRDSFwiLFxuICAgIFwiRkJOSUNcIixcbiAgICBcIk1JQ1JPU09GVF9NQU5BXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXRodG9vbF9vcF9nZXRfbGlua1wiLFxuICAgIFwiZXRobmxfZGVmYXVsdF9kb2l0XCIsXG4gICAgXCJfX2Rldl9ldGh0b29sXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGlzc3VlIHdoZXJlIGBldGh0b29sX29wX2dldF9saW5rYCB3YXMgY2FsbGVkIHdpdGhvdXQgYHJ0bmxfbG9ja2AgZm9yIGRyaXZlcnMgdGhhdCB1c2UgYG5ldGRldl9uZWVkX29wc19sb2NrYCAoZS5nLiBndmUsIGlhdmYsIG1seDUsIGZibmljLCBtYW5hKS4gYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgd2hpY2ggcmVxdWlyZXMgYHJ0bmxfbG9ja2AgYmVjYXVzZSBpdCBjYW4gdHJpZ2dlciBgZGV2X2FjdGl2YXRlYCBhbmQgdXNlIGBydG5sX2RlcmVmZXJlbmNlYC4gVGhlIHBhdGNoIGFkZHMgYEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOS2AgdG8gdGhlc2UgZHJpdmVycycgZXRodG9vbCBvcHMgdG8gZW5zdXJlIGBydG5sX2xvY2tgIGlzIHRha2VuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbG9ja2luZyBiZWhhdmlvciB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gdmVyaWZ5IG5vIGRlYWRsb2NrcyBvciBSQ1Ugd2FybmluZ3Mgb2NjdXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1ZFXCIsXG4gICAgXCJJQVZGXCIsXG4gICAgXCJNTFg1X0NPUkVcIixcbiAgICBcIk1MWDVfQ09SRV9FTlwiLFxuICAgIFwiTUxYNV9DT1JFX0lQT0lCXCIsXG4gICAgXCJNTFg1X0VTV0lUQ0hcIixcbiAgICBcIkZCTklDXCIsXG4gICAgXCJNSUNST1NPRlRfTUFOQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV0aHRvb2xfb3BfZ2V0X2xpbmtcIixcbiAgICBcImV0aG5sX2RlZmF1bHRfZG9pdFwiLFxuICAgIFwiX19kZXZfZXRodG9vbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9ja2luZyBpc3N1ZSB3aGVyZSBgZXRodG9vbF9vcF9nZXRfbGlua2Agd2FzIGNhbGxlZCB3aXRob3V0IGBydG5sX2xvY2tgIGZvciBkcml2ZXJzIHRoYXQgdXNlIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgKGUuZy4gZ3ZlLCBpYXZmLCBtbHg1LCBmYm5pYywgbWFuYSkuIGBldGh0b29sX29wX2dldF9saW5rYCBjYWxscyBgX19saW5rd2F0Y2hfc3luY19kZXZgIHdoaWNoIHJlcXVpcmVzIGBydG5sX2xvY2tgIGJlY2F1c2UgaXQgY2FuIHRyaWdnZXIgYGRldl9hY3RpdmF0ZWAgYW5kIHVzZSBgcnRubF9kZXJlZmVyZW5jZWAuIFRoZSBwYXRjaCBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZXNlIGRyaXZlcnMnIGV0aHRvb2wgb3BzIHRvIGVuc3VyZSBgcnRubF9sb2NrYCBpcyB0YWtlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGxvY2tpbmcgYmVoYXZpb3IgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIHZlcmlmeSBubyBkZWFkbG9ja3Mgb3IgUkNVIHdhcm5pbmdzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6hjnl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 19:23:11 +0000 UTC FinishedAt: 2026-06-24 19:41:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GVE", "IAVF", "MLX5_CORE", "MLX5_CORE_EN", "MLX5_CORE_IPOIB", "MLX5_ESWITCH", "FBNIC", "MICROSOFT_MANA" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GVE", "IAVF", "MLX5_CORE", "MLX5_CORE_EN", "MLX5_CORE_IPOIB", "MLX5_ESWITCH", "FBNIC", "MICROSOFT_MANA" ], "series_id": "490be426-58e6-4dab-9b0e-b47f5bde214a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ethtool_op_get_link", "ethnl_default_doit", "__dev_ethtool" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dWRSYjMzQ7LAogICAgJiMzNDtJQVZGJiMzNDssCiAgICAmIzM0O01MWDVfQ09SRSYjMzQ7LAogICAgJiMzNDtNTFg1X0NPUkVfRU4mIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFX0lQT0lCJiMzNDssCiAgICAmIzM0O01MWDVfRVNXSVRDSCYjMzQ7LAogICAgJiMzNDtGQk5JQyYjMzQ7LAogICAgJiMzNDtNSUNST1NPRlRfTUFOQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V0aHRvb2xfb3BfZ2V0X2xpbmsmIzM0OywKICAgICYjMzQ7ZXRobmxfZGVmYXVsdF9kb2l0JiMzNDssCiAgICAmIzM0O19fZGV2X2V0aHRvb2wmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGlzc3VlIHdoZXJlIGBldGh0b29sX29wX2dldF9saW5rYCB3YXMgY2FsbGVkIHdpdGhvdXQgYHJ0bmxfbG9ja2AgZm9yIGRyaXZlcnMgdGhhdCB1c2UgYG5ldGRldl9uZWVkX29wc19sb2NrYCAoZS5nLiBndmUsIGlhdmYsIG1seDUsIGZibmljLCBtYW5hKS4gYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgd2hpY2ggcmVxdWlyZXMgYHJ0bmxfbG9ja2AgYmVjYXVzZSBpdCBjYW4gdHJpZ2dlciBgZGV2X2FjdGl2YXRlYCBhbmQgdXNlIGBydG5sX2RlcmVmZXJlbmNlYC4gVGhlIHBhdGNoIGFkZHMgYEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOS2AgdG8gdGhlc2UgZHJpdmVycyYjMzk7IGV0aHRvb2wgb3BzIHRvIGVuc3VyZSBgcnRubF9sb2NrYCBpcyB0YWtlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGxvY2tpbmcgYmVoYXZpb3IgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIHZlcmlmeSBubyBkZWFkbG9ja3Mgb3IgUkNVIHdhcm5pbmdzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjE1MjU3NjBkNTQyMzM2OTVjZjRjYzliZjkzMDYyZWViY2IzZWZmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE5OjM4OjAyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xuaW5kZXggN2NjMjI5MTY4NTJmYjYuLjgxOTk3MzhiYTk3OWVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmNcbkBAIC05ODQsNyAmIzQzOzk4NCw4IEBAIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBndmVfZXRodG9vbF9vcHMgPSB7XG4gXHQuc3VwcG9ydGVkX3JpbmdfcGFyYW1zID0gRVRIVE9PTF9SSU5HX1VTRV9UQ1BfREFUQV9TUExJVCB8XG4gXHRcdFx0XHQgRVRIVE9PTF9SSU5HX1VTRV9SWF9CVUZfTEVOLFxuIFx0Lm9wX25lZWRzX3J0bmwgPSBFVEhUT09MX09QX05FRURTX1JUTkxfU0NIQU5ORUxTIHxcbi1cdFx0XHQgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sXG4mIzQzO1x0XHRcdCBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8XG4mIzQzO1x0XHRcdCBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuZ2V0X2RydmluZm8gPSBndmVfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X3N0cmluZ3MgPSBndmVfZ2V0X3N0cmluZ3MsXG4gXHQuZ2V0X3NzZXRfY291bnQgPSBndmVfZ2V0X3NzZXRfY291bnQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcbmluZGV4IGE2MTVkNTk5Yjg4ZWU0Li5lN2NmMTJlYWEyNjg5MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcbkBAIC0xODU1LDYgJiM0MzsxODU1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpYXZmX2V0aHRvb2xfb3BzID0ge1xuIFx0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1VTRUNTIHxcbiBcdFx0XHRcdCAgICAgRVRIVE9PTF9DT0FMRVNDRV9VU0VfQURBUFRJVkUsXG4gXHQuc3VwcG9ydGVkX2lucHV0X3hmcm1cdD0gUlhIX1hGUk1fU1lNX1hPUixcbiYjNDM7XHQub3BfbmVlZHNfcnRubFx0XHQ9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcbiBcdC5nZXRfZHJ2aW5mb1x0XHQ9IGlhdmZfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuIFx0LmdldF9yaW5ncGFyYW1cdFx0PSBpYXZmX2dldF9yaW5ncGFyYW0sXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmNcbmluZGV4IDJmNWI2MjZiYTMzZmU1Li4xMTI5MjZkMDc2MzRkNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmNcbkBAIC0yNzIxLDcgJiM0MzsyNzIxLDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVlX2V0aHRvb2xfb3BzID0ge1xuIFx0LnJ4ZmhfbWF4X251bV9jb250ZXh0c1x0PSBNTFg1RV9NQVhfTlVNX1JTUyxcbiBcdC5vcF9uZWVkc19ydG5sXHRcdD0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XG4gXHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbi1cdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQRkxBR1MsXG4mIzQzO1x0XHRcdFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfU1BGTEFHUyB8XG4mIzQzO1x0XHRcdFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MgfFxuIFx0XHRcdFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX01BWF9GUkFNRVMgfFxuIFx0XHRcdFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRSB8XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXG5pbmRleCAxYThhMTlmOTgwZDMzNS4uYzhiNzZkMzAxYzkyY2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuQEAgLTQxOSw3ICYjNDM7NDE5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1ZV9yZXBfZXRodG9vbF9vcHMgPSB7XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfTUFYX0ZSQU1FUyB8XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFLFxuIFx0Lm9wX25lZWRzX3J0bmxcdCAgID0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XG4tXHRcdFx0ICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSxcbiYjNDM7XHRcdFx0ICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8XG4mIzQzO1x0XHRcdCAgICAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLFxuIFx0LmdldF9kcnZpbmZvXHQgICA9IG1seDVlX3JlcF9nZXRfZHJ2aW5mbyxcbiBcdC5nZXRfbGlua1x0ICAgPSBldGh0b29sX29wX2dldF9saW5rLFxuIFx0LmdldF9zdHJpbmdzICAgICAgID0gbWx4NWVfcmVwX2dldF9zdHJpbmdzLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jXG5pbmRleCA5YjNiMzI0MDhjNjRiNy4uMDFkZGMzZGVmOWFjMDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jXG5AQCAtMjg2LDcgJiM0MzsyODYsOCBAQCBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbWx4NWlfZXRodG9vbF9vcHMgPSB7XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfTUFYX0ZSQU1FUyB8XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFLFxuIFx0Lm9wX25lZWRzX3J0bmxcdCAgICA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxuLVx0XHRcdCAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNLFxuJiM0MztcdFx0XHQgICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8XG4mIzQzO1x0XHRcdCAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcbiBcdC5nZXRfZHJ2aW5mbyAgICAgICAgPSBtbHg1aV9nZXRfZHJ2aW5mbyxcbiBcdC5nZXRfc3RyaW5ncyAgICAgICAgPSBtbHg1aV9nZXRfc3RyaW5ncyxcbiBcdC5nZXRfc3NldF9jb3VudCAgICAgPSBtbHg1aV9nZXRfc3NldF9jb3VudCxcbkBAIC0zMDksNiAmIzQzOzMxMCw3IEBAIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1aV9ldGh0b29sX29wcyA9IHtcbiB9O1xuIFxuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1aV9wa2V5X2V0aHRvb2xfb3BzID0ge1xuJiM0MztcdC5vcF9uZWVkc19ydG5sXHQgICAgPSBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuZ2V0X2RydmluZm8gICAgICAgID0gbWx4NWlfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X2xpbmsgICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcbiBcdC5nZXRfdHNfaW5mbyAgICAgICAgPSBtbHg1aV9nZXRfdHNfaW5mbyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jXG5pbmRleCBjYjM0ZmMxNjZlZjk2OC4uMGU0NzA4OGVjNDRiYWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19ldGh0b29sLmNcbkBAIC0yMDI0LDcgJiM0MzsyMDI0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmYm5pY19ldGh0b29sX29wcyA9IHtcbiBcdFx0XHRcdFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfR1BBVVNFUEFSQU0gfFxuIFx0XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEFVU0VQQVJBTSB8XG4gXHRcdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XG4tXHRcdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sXG4mIzQzO1x0XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbiYjNDM7XHRcdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLFxuIFx0LmdldF9kcnZpbmZvXHRcdFx0PSBmYm5pY19nZXRfZHJ2aW5mbyxcbiBcdC5nZXRfcmVnc19sZW5cdFx0XHQ9IGZibmljX2dldF9yZWdzX2xlbixcbiBcdC5nZXRfcmVnc1x0XHRcdD0gZmJuaWNfZ2V0X3JlZ3MsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuaW5kZXggOTRlNjU4ZDA3YTI3ZTguLjg4MWRmNTk3ZDdmOWM3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXG5AQCAtNTk3LDcgJiM0Mzs1OTcsOCBAQCBzdGF0aWMgaW50IG1hbmFfZ2V0X2xpbmtfa3NldHRpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtYW5hX2V0aHRvb2xfb3BzID0ge1xuIFx0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1JYX0NRRV9GUkFNRVMsXG4gXHQub3BfbmVlZHNfcnRubFx0XHQ9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxuLVx0XHRcdFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSxcbiYjNDM7XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbiYjNDM7XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcbiBcdC5nZXRfZXRodG9vbF9zdGF0c1x0PSBtYW5hX2dldF9ldGh0b29sX3N0YXRzLFxuIFx0LmdldF9zc2V0X2NvdW50XHRcdD0gbWFuYV9nZXRfc3NldF9jb3VudCxcbiBcdC5nZXRfc3RyaW5nc1x0XHQ9IG1hbmFfZ2V0X3N0cmluZ3MsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuaW5kZXggMWI4MzRlMmE1MjJlYzUuLjVkNDkxYTk4MjY1ZWY5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXG5AQCAtOTQyLDYgJiM0Mzs5NDIsNyBAQCBzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfdHNfaW5mbyB7XG4gI2RlZmluZSBFVEhUT09MX09QX05FRURTX1JUTkxfR1BBVVNFUEFSQU1cdEJJVCg1KVxuICNkZWZpbmUgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQQVVTRVBBUkFNXHRCSVQoNilcbiAjZGVmaW5lIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9SU1NcdFx0QklUKDcpXG4mIzQzOyNkZWZpbmUgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LXHRcdEJJVCg4KVxuIFxuIC8qKlxuICAqIHN0cnVjdCBldGh0b29sX29wcyAtIG9wdGlvbmFsIG5ldGRldiBvcGVyYXRpb25zXG5AQCAtOTc4LDYgJiM0Mzs5NzksNyBAQCBzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfdHNfaW5mbyB7XG4gICpcdCAtIHBoeWxpbmsgaGVscGVycyAobm90ZSB0aGF0IHBoeWRldiBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQhKVxuICAqXHQgLSBuZXRkZXZfdXBkYXRlX2ZlYXR1cmVzKClcbiAgKlx0IC0gbmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcygpXG4mIzQzOyAqXHQgLSBldGh0b29sX29wX2dldF9saW5rKCkgKHN5bmNzIGxpbmsgd2F0Y2ggdW5kZXIgcnRubF9sb2NrKVxuICAqXG4gICogQGdldF9kcnZpbmZvOiBSZXBvcnQgZHJpdmVyL2RldmljZSBpbmZvcm1hdGlvbi4gTW9kZXJuIGRyaXZlcnMgbm9cbiAgKlx0bG9uZ2VyIGhhdmUgdG8gaW1wbGVtZW50IHRoaXMgY2FsbGJhY2suIE1vc3QgZmllbGRzIGFyZVxuZGlmZiAtLWdpdCBhL25ldC9ldGh0b29sL2NvbW1vbi5oIGIvbmV0L2V0aHRvb2wvY29tbW9uLmhcbmluZGV4IDJiMzg0N2YwMDgwMTgzLi40ZTUzNTZlMjZmNDAwYSAxMDA2NDRcbi0tLSBhL25ldC9ldGh0b29sL2NvbW1vbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZXRodG9vbC9jb21tb24uaFxuQEAgLTExMyw2ICYjNDM7MTEzLDggQEAgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCBjbWQpXG4gXHRcdHJldHVybiBvcHMtXHUwMDNlb3BfbmVlZHNfcnRubCBcdTAwMjYgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQQVVTRVBBUkFNO1xuIFx0Y2FzZSBFVEhUT09MX01TR19SU1NfU0VUOlxuIFx0XHRyZXR1cm4gb3BzLVx1MDAzZW9wX25lZWRzX3J0bmwgXHUwMDI2IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9SU1M7XG4mIzQzO1x0Y2FzZSBFVEhUT09MX01TR19MSU5LU1RBVEVfR0VUOlxuJiM0MztcdFx0cmV0dXJuIG9wcy1cdTAwM2VvcF9uZWVkc19ydG5sIFx1MDAyNiBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTks7XG4gXHRjYXNlIEVUSFRPT0xfTVNHX1RTQ09ORklHX0dFVDpcbiBcdGNhc2UgRVRIVE9PTF9NU0dfVFNDT05GSUdfU0VUOlxuIFx0XHQvKiB0c2NvbmZpZyBjYWxscyBuZG9zIChuZG9faHd0c3RhbXBfc2V0L2dldCksIG5vdCBldGh0b29sIG9wcy5cbkBAIC0xNTksNiAmIzQzOzE2MSw4IEBAIGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgZXRoY21kKVxuIFx0Y2FzZSBFVEhUT09MX1NSWEZIOlxuIFx0Y2FzZSBFVEhUT09MX1NSWEZISU5ESVI6XG4gXHRcdHJldHVybiBvcHMtXHUwMDNlb3BfbmVlZHNfcnRubCBcdTAwMjYgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1JTUztcbiYjNDM7XHRjYXNlIEVUSFRPT0xfR0xJTks6XG4mIzQzO1x0XHRyZXR1cm4gb3BzLVx1MDAzZW9wX25lZWRzX3J0bmwgXHUwMDI2IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSztcbiBcdH1cbiBcdHJldHVybiBmYWxzZTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1ZFJiMzNDssCiAgICAmIzM0O0lBVkYmIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDssCiAgICAmIzM0O01MWDVfQ09SRV9FTiYjMzQ7LAogICAgJiMzNDtNTFg1X0NPUkVfSVBPSUImIzM0OywKICAgICYjMzQ7TUxYNV9FU1dJVENIJiMzNDssCiAgICAmIzM0O0ZCTklDJiMzNDssCiAgICAmIzM0O01JQ1JPU09GVF9NQU5BJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXRodG9vbF9vcF9nZXRfbGluayYjMzQ7LAogICAgJiMzNDtldGhubF9kZWZhdWx0X2RvaXQmIzM0OywKICAgICYjMzQ7X19kZXZfZXRodG9vbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvY2tpbmcgaXNzdWUgd2hlcmUgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIHdhcyBjYWxsZWQgd2l0aG91dCBgcnRubF9sb2NrYCBmb3IgZHJpdmVycyB0aGF0IHVzZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIChlLmcuIGd2ZSwgaWF2ZiwgbWx4NSwgZmJuaWMsIG1hbmEpLiBgZXRodG9vbF9vcF9nZXRfbGlua2AgY2FsbHMgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCB3aGljaCByZXF1aXJlcyBgcnRubF9sb2NrYCBiZWNhdXNlIGl0IGNhbiB0cmlnZ2VyIGBkZXZfYWN0aXZhdGVgIGFuZCB1c2UgYHJ0bmxfZGVyZWZlcmVuY2VgLiBUaGUgcGF0Y2ggYWRkcyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCB0byB0aGVzZSBkcml2ZXJzJiMzOTsgZXRodG9vbCBvcHMgdG8gZW5zdXJlIGBydG5sX2xvY2tgIGlzIHRha2VuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbG9ja2luZyBiZWhhdmlvciB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gdmVyaWZ5IG5vIGRlYWRsb2NrcyBvciBSQ1Ugd2FybmluZ3Mgb2NjdXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDIxNTI1NzYwZDU0MjMzNjk1Y2Y0Y2M5YmY5MzA2MmVlYmNiM2VmZjcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1biAyNCAxOTozODowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYwppbmRleCA3Y2MyMjkxNjg1MmZiNi4uODE5OTczOGJhOTc5ZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMKQEAgLTk4NCw3ICYjNDM7OTg0LDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGd2ZV9ldGh0b29sX29wcyA9IHsKIAkuc3VwcG9ydGVkX3JpbmdfcGFyYW1zID0gRVRIVE9PTF9SSU5HX1VTRV9UQ1BfREFUQV9TUExJVCB8CiAJCQkJIEVUSFRPT0xfUklOR19VU0VfUlhfQlVGX0xFTiwKIAkub3BfbmVlZHNfcnRubCA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfAotCQkJIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNLAomIzQzOwkJCSBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8CiYjNDM7CQkJIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSywKIAkuZ2V0X2RydmluZm8gPSBndmVfZ2V0X2RydmluZm8sCiAJLmdldF9zdHJpbmdzID0gZ3ZlX2dldF9zdHJpbmdzLAogCS5nZXRfc3NldF9jb3VudCA9IGd2ZV9nZXRfc3NldF9jb3VudCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jCmluZGV4IGE2MTVkNTk5Yjg4ZWU0Li5lN2NmMTJlYWEyNjg5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2V0aHRvb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jCkBAIC0xODU1LDYgJiM0MzsxODU1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpYXZmX2V0aHRvb2xfb3BzID0gewogCS5zdXBwb3J0ZWRfY29hbGVzY2VfcGFyYW1zID0gRVRIVE9PTF9DT0FMRVNDRV9VU0VDUyB8CiAJCQkJICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRSwKIAkuc3VwcG9ydGVkX2lucHV0X3hmcm0JPSBSWEhfWEZSTV9TWU1fWE9SLAomIzQzOwkub3BfbmVlZHNfcnRubAkJPSBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssCiAJLmdldF9kcnZpbmZvCQk9IGlhdmZfZ2V0X2RydmluZm8sCiAJLmdldF9saW5rCQk9IGV0aHRvb2xfb3BfZ2V0X2xpbmssCiAJLmdldF9yaW5ncGFyYW0JCT0gaWF2Zl9nZXRfcmluZ3BhcmFtLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmMKaW5kZXggMmY1YjYyNmJhMzNmZTUuLjExMjkyNmQwNzYzNGQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmMKQEAgLTI3MjEsNyAmIzQzOzI3MjEsOCBAQCBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbWx4NWVfZXRodG9vbF9vcHMgPSB7CiAJLnJ4ZmhfbWF4X251bV9jb250ZXh0cwk9IE1MWDVFX01BWF9OVU1fUlNTLAogCS5vcF9uZWVkc19ydG5sCQk9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfAogCQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0gfAotCQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQRkxBR1MsCiYjNDM7CQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQRkxBR1MgfAomIzQzOwkJCQkgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSywKIAkuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MgfAogCQkJCSAgICAgRVRIVE9PTF9DT0FMRVNDRV9NQVhfRlJBTUVTIHwKIAkJCQkgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFIHwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYwppbmRleCAxYThhMTlmOTgwZDMzNS4uYzhiNzZkMzAxYzkyY2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMKQEAgLTQxOSw3ICYjNDM7NDE5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1ZV9yZXBfZXRodG9vbF9vcHMgPSB7CiAJCQkJICAgICBFVEhUT09MX0NPQUxFU0NFX01BWF9GUkFNRVMgfAogCQkJCSAgICAgRVRIVE9PTF9DT0FMRVNDRV9VU0VfQURBUFRJVkUsCiAJLm9wX25lZWRzX3J0bmwJICAgPSBFVEhUT09MX09QX05FRURTX1JUTkxfU0NIQU5ORUxTIHwKLQkJCSAgICAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sCiYjNDM7CQkJICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8CiYjNDM7CQkJICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssCiAJLmdldF9kcnZpbmZvCSAgID0gbWx4NWVfcmVwX2dldF9kcnZpbmZvLAogCS5nZXRfbGluawkgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssCiAJLmdldF9zdHJpbmdzICAgICAgID0gbWx4NWVfcmVwX2dldF9zdHJpbmdzLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9ldGh0b29sLmMKaW5kZXggOWIzYjMyNDA4YzY0YjcuLjAxZGRjM2RlZjlhYzA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9ldGh0b29sLmMKQEAgLTI4Niw3ICYjNDM7Mjg2LDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVpX2V0aHRvb2xfb3BzID0gewogCQkJCSAgICAgRVRIVE9PTF9DT0FMRVNDRV9NQVhfRlJBTUVTIHwKIAkJCQkgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFLAogCS5vcF9uZWVkc19ydG5sCSAgICA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfAotCQkJICAgICAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sCiYjNDM7CQkJICAgICAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0gfAomIzQzOwkJCSAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSywKIAkuZ2V0X2RydmluZm8gICAgICAgID0gbWx4NWlfZ2V0X2RydmluZm8sCiAJLmdldF9zdHJpbmdzICAgICAgICA9IG1seDVpX2dldF9zdHJpbmdzLAogCS5nZXRfc3NldF9jb3VudCAgICAgPSBtbHg1aV9nZXRfc3NldF9jb3VudCwKQEAgLTMwOSw2ICYjNDM7MzEwLDcgQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVpX2V0aHRvb2xfb3BzID0gewogfTsKIAogY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVpX3BrZXlfZXRodG9vbF9vcHMgPSB7CiYjNDM7CS5vcF9uZWVkc19ydG5sCSAgICA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSywKIAkuZ2V0X2RydmluZm8gICAgICAgID0gbWx4NWlfZ2V0X2RydmluZm8sCiAJLmdldF9saW5rICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssCiAJLmdldF90c19pbmZvICAgICAgICA9IG1seDVpX2dldF90c19pbmZvLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuYwppbmRleCBjYjM0ZmMxNjZlZjk2OC4uMGU0NzA4OGVjNDRiYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jCkBAIC0yMDI0LDcgJiM0MzsyMDI0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmYm5pY19ldGh0b29sX29wcyA9IHsKIAkJCQkJICBFVEhUT09MX09QX05FRURTX1JUTkxfR1BBVVNFUEFSQU0gfAogCQkJCQkgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEFVU0VQQVJBTSB8CiAJCQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8Ci0JCQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sCiYjNDM7CQkJCQkgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHwKJiM0MzsJCQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLAogCS5nZXRfZHJ2aW5mbwkJCT0gZmJuaWNfZ2V0X2RydmluZm8sCiAJLmdldF9yZWdzX2xlbgkJCT0gZmJuaWNfZ2V0X3JlZ3NfbGVuLAogCS5nZXRfcmVncwkJCT0gZmJuaWNfZ2V0X3JlZ3MsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jCmluZGV4IDk0ZTY1OGQwN2EyN2U4Li44ODFkZjU5N2Q3ZjljNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmMKQEAgLTU5Nyw3ICYjNDM7NTk3LDggQEAgc3RhdGljIGludCBtYW5hX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtYW5hX2V0aHRvb2xfb3BzID0gewogCS5zdXBwb3J0ZWRfY29hbGVzY2VfcGFyYW1zID0gRVRIVE9PTF9DT0FMRVNDRV9SWF9DUUVfRlJBTUVTLAogCS5vcF9uZWVkc19ydG5sCQk9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfAotCQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sCiYjNDM7CQkJCSAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0gfAomIzQzOwkJCQkgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSywKIAkuZ2V0X2V0aHRvb2xfc3RhdHMJPSBtYW5hX2dldF9ldGh0b29sX3N0YXRzLAogCS5nZXRfc3NldF9jb3VudAkJPSBtYW5hX2dldF9zc2V0X2NvdW50LAogCS5nZXRfc3RyaW5ncwkJPSBtYW5hX2dldF9zdHJpbmdzLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaAppbmRleCAxYjgzNGUyYTUyMmVjNS4uNWQ0OTFhOTgyNjVlZjkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXRodG9vbC5oCkBAIC05NDIsNiAmIzQzOzk0Miw3IEBAIHN0cnVjdCBrZXJuZWxfZXRodG9vbF90c19pbmZvIHsKICNkZWZpbmUgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dQQVVTRVBBUkFNCUJJVCg1KQogI2RlZmluZSBFVEhUT09MX09QX05FRURTX1JUTkxfU1BBVVNFUEFSQU0JQklUKDYpCiAjZGVmaW5lIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9SU1MJCUJJVCg3KQomIzQzOyNkZWZpbmUgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LCQlCSVQoOCkKIAogLyoqCiAgKiBzdHJ1Y3QgZXRodG9vbF9vcHMgLSBvcHRpb25hbCBuZXRkZXYgb3BlcmF0aW9ucwpAQCAtOTc4LDYgJiM0Mzs5NzksNyBAQCBzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfdHNfaW5mbyB7CiAgKgkgLSBwaHlsaW5rIGhlbHBlcnMgKG5vdGUgdGhhdCBwaHlkZXYgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkISkKICAqCSAtIG5ldGRldl91cGRhdGVfZmVhdHVyZXMoKQogICoJIC0gbmV0aWZfc2V0X3JlYWxfbnVtX3R4X3F1ZXVlcygpCiYjNDM7ICoJIC0gZXRodG9vbF9vcF9nZXRfbGluaygpIChzeW5jcyBsaW5rIHdhdGNoIHVuZGVyIHJ0bmxfbG9jaykKICAqCiAgKiBAZ2V0X2RydmluZm86IFJlcG9ydCBkcml2ZXIvZGV2aWNlIGluZm9ybWF0aW9uLiBNb2Rlcm4gZHJpdmVycyBubwogICoJbG9uZ2VyIGhhdmUgdG8gaW1wbGVtZW50IHRoaXMgY2FsbGJhY2suIE1vc3QgZmllbGRzIGFyZQpkaWZmIC0tZ2l0IGEvbmV0L2V0aHRvb2wvY29tbW9uLmggYi9uZXQvZXRodG9vbC9jb21tb24uaAppbmRleCAyYjM4NDdmMDA4MDE4My4uNGU1MzU2ZTI2ZjQwMGEgMTAwNjQ0Ci0tLSBhL25ldC9ldGh0b29sL2NvbW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9ldGh0b29sL2NvbW1vbi5oCkBAIC0xMTMsNiAmIzQzOzExMyw4IEBAIGV0aHRvb2xfbmxfbXNnX25lZWRzX3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggY21kKQogCQlyZXR1cm4gb3BzLSZndDtvcF9uZWVkc19ydG5sICZhbXA7IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEFVU0VQQVJBTTsKIAljYXNlIEVUSFRPT0xfTVNHX1JTU19TRVQ6CiAJCXJldHVybiBvcHMtJmd0O29wX25lZWRzX3J0bmwgJmFtcDsgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1JTUzsKJiM0MzsJY2FzZSBFVEhUT09MX01TR19MSU5LU1RBVEVfR0VUOgomIzQzOwkJcmV0dXJuIG9wcy0mZ3Q7b3BfbmVlZHNfcnRubCAmYW1wOyBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTks7CiAJY2FzZSBFVEhUT09MX01TR19UU0NPTkZJR19HRVQ6CiAJY2FzZSBFVEhUT09MX01TR19UU0NPTkZJR19TRVQ6CiAJCS8qIHRzY29uZmlnIGNhbGxzIG5kb3MgKG5kb19od3RzdGFtcF9zZXQvZ2V0KSwgbm90IGV0aHRvb2wgb3BzLgpAQCAtMTU5LDYgJiM0MzsxNjEsOCBAQCBldGh0b29sX2lvY3RsX25lZWRzX3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIGV0aGNtZCkKIAljYXNlIEVUSFRPT0xfU1JYRkg6CiAJY2FzZSBFVEhUT09MX1NSWEZISU5ESVI6CiAJCXJldHVybiBvcHMtJmd0O29wX25lZWRzX3J0bmwgJmFtcDsgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1JTUzsKJiM0MzsJY2FzZSBFVEhUT09MX0dMSU5LOgomIzQzOwkJcmV0dXJuIG9wcy0mZ3Q7b3BfbmVlZHNfcnRubCAmYW1wOyBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTks7CiAJfQogCXJldHVybiBmYWxzZTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAwMwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDM5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJUTkwgTG9jayBJbXBhY3Qgb2YgdGhlIE5ldyBFVEhUT09MIEZsYWcqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBhIG5ldyBmbGFnLCBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCwgYW5kIGl0IHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgbmVlZCBmb3IgdGhlIFJUTkwgbG9jayBpbiB0aGUgZXRodG9vbCBjb250ZXh0LiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGJlaW5nIGFkZGVkIHRvIGBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaGAgYW5kIHVzZWQgaW4gYG5ldC9ldGh0b29sL2NvbW1vbi5oYCwgaW5mbHVlbmNpbmcgdGhlIGBFVEhUT09MX01TR19MSU5LU1RBVEVfR0VUYCBhbmQgYEVUSFRPT0xfR0xJTktgIG9wZXJhdGlvbnMuIEl0JiMzOTtzIGFsc28gYmVpbmcgaW1wbGVtZW50ZWQgaW4gcXVpdGUgYSBmZXcgZHJpdmVyczogZ3ZlLCBpYXZmLCBtbHg1LCBmYm5pYywgYW5kIG1hbmEsIHNvIHRoaXMgYWZmZWN0cyBxdWl0ZSBhIGZldyBkcml2ZXJzLgoKRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5ICpob3cqIHRoaXMgZmxhZyBpcyB1c2VkLiBMZXQmIzM5O3MgZGlnIGludG8gYG5ldC9ldGh0b29sL2NvbW1vbi5oYCBhbmQgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYCB0byBzZWUgaG93IGl0IGFmZmVjdHMgdGhlIGV4aXN0aW5nIGxvZ2ljLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIG1vZGlmeWluZyBgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubGAgYW5kIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgLiBBbHJpZ2h0LCBzbyB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0JiMzOTtzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgKndoZW4qIHRoZSBgcnRubF9sb2NrYCBpcyB0YWtlbiBiZWZvcmUgY2FsbGluZyB0aGUgYGdldF9saW5rYCBldGh0b29sIG9wZXJhdGlvbi4KClRoaXMgaW1tZWRpYXRlbHkgc2NyZWFtcyAmIzM0O3BvdGVudGlhbCBmb3IgZnV6emluZyYjMzQ7LiBBbnkgY2hhbmdlIHRvIGxvY2tpbmcgYmVoYXZpb3IgaXMgd29ydGggYSBkZWVwIGxvb2ssIHNpbmNlIGl0IGNvdWxkIGludHJvZHVjZSBzdWJ0bGUgcmFjZSBjb25kaXRpb25zLCBkZWFkbG9ja3MsIG9yIHVuaW50ZW5kZWQgYmVoYXZpb3IgaW4gdGhlIGtlcm5lbC4gVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgc2luY2UgZXRodG9vbCBpcyBhIHVzZXItc3BhY2UgaW50ZXJmYWNlLCBhbmQgdGhlc2UgY2hhbmdlcyBjb3VsZCBpbnRyb2R1Y2UgbmV3IHZlY3RvcnMgZm9yIGF0dGFjay4KCldhaXQsIGlzIHRoaXMganVzdCBjb25maW5lZCB0byB0aGUgZHJpdmVycyBvciBpcyB0aGlzIGFmZmVjdGluZyB0aGUgKmNvcmUqIGtlcm5lbCBiZWhhdmlvcj8gT2theSwgdGhlIHBhdGNoIGlzIGFsbG93aW5nIGRyaXZlcnMgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoZWlyIG5lZWQgZm9yIHRoZSBSVE5MIGxvY2sgZHVyaW5nIGBnZXRfbGlua2AuIEhtbS4uLiBJIG5lZWQgdG8gYmUgc3VyZS4gSSYjMzk7bSBwcmVzdW1pbmcgdGhlIGRlZmF1bHQgYmVoYXZpb3IgKndhcyogdGhhdCB0aGUgUlROTCBsb2NrICp3YXNuJiMzOTt0KiBuZWVkZWQgZm9yIHRoZXNlIGNvbW1hbmRzLgoKTGV0JiMzOTtzIHZlcmlmeSB0aGF0IHF1aWNrbHksIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGBuZXQvZXRodG9vbC9jb21tb24uaGAgYW5kIHRoZW4gdGhlIG5ldGxpbmsgYW5kIGlvY3RsIGltcGxlbWVudGF0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgbmV0L2V0aHRvb2wvaW9jdGwuY2AgYW5kIGBuZXQvZXRodG9vbC9uZXRsaW5rLmNgLgoKT2theSwgeWVzLiBgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubGAgYW5kIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgICpyZXR1cm4qIGB0cnVlYCBpZiB0aGUgbG9jayAqaXMqIG5lZWRlZC4gU28sIHdoYXQmIzM5O3MgdGhlIGRlZmF1bHQgYmVoYXZpb3I/IEkgbmVlZCB0byBjaGVjayBgbmV0L2V0aHRvb2wvaW9jdGwuY2AgdG8gYmUgc3VyZS4gSSYjMzk7bGwgbmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgcmV0dXJuIGZhbHNlIGJ5IGRlZmF1bHQgZm9yIHRoZSBjb21tYW5kcyBpbiBxdWVzdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldGh0b29sX2lvY3RsX25lZWRzX3J0bmwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvY29tbW9uLmg9OTI9ZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCBjbWQpXG4tLVxubmV0L2V0aHRvb2wvY29tbW9uLmgtMTI5LS8qKlxubmV0L2V0aHRvb2wvY29tbW9uLmg6MTMwOiAqIGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubCgpIC0gZG9lcyB0aGlzIGxlZ2FjeSBpb2N0bCBjbWQgbmVlZCBydG5sX2xvY2s/XG5uZXQvZXRodG9vbC9jb21tb24uaC0xMzEtICogQGRldjogdGFyZ2V0IGRldmljZVxuLS1cbm5ldC9ldGh0b29sL2NvbW1vbi5oPTEzNz1zdGF0aWMgaW5saW5lIGJvb2xcbm5ldC9ldGh0b29sL2NvbW1vbi5oOjEzODpldGh0b29sX2lvY3RsX25lZWRzX3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIGV0aGNtZClcbm5ldC9ldGh0b29sL2NvbW1vbi5oLTEzOS17XG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYz0zMjcyPWRldl9ldGh0b29sX2xvY2tlZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYy0zNTkwLSAqIERyaXZlci1kZWNpZGVkIFNFVCBjb21tYW5kcyB0aGF0IG1heSBjaGFpbiBpbnRvIHJ0bmwtb25seSBoZWxwZXJzIGFyZVxubmV0L2V0aHRvb2wvaW9jdGwuYzozNTkxOiAqIGNvdmVyZWQgYnkgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sKCkvRVRIVE9PTF9PUF9ORUVEU19SVE5MXyouXG5uZXQvZXRodG9vbC9pb2N0bC5jLTM1OTItICovXG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYz0zNjEwPV9fZGV2X2V0aHRvb2woc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaWZyZXEgKmlmciwgdm9pZCBfX3VzZXIgKnVzZXJhZGRyLFxuLS1cbm5ldC9ldGh0b29sL2lvY3RsLmMtMzYyMy1cdFx0ICAgIGV0aHRvb2xfY21kX2NoYW5nZXNfZmVhdHVyZXMoZXRoY21kKSB8fFxubmV0L2V0aHRvb2wvaW9jdGwuYzozNjI0Olx0XHQgICAgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sKGRldiwgZXRoY21kKTtcbm5ldC9ldGh0b29sL2lvY3RsLmMtMzYyNS1cdGlmIChuZWVkX3J0bmwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ4OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gZXRodG9vbCBpb2N0bCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCBiYXNlZCBvbiB0aGUgcmVjZW50IGlzc3VlLCBJIG5lZWQgdG8gZ2V0IHJpZ2h0IGludG8gdGhlIGBuZXQvZXRodG9vbC9pb2N0bC5jYCBjb2RlIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBnb2luZyBvbi4gU3BlY2lmaWNhbGx5LCBJIGhhdmUgYSBodW5jaCBpdCYjMzk7cyByZWxhdGVkIHRvIGhvdyBldGh0b29sIGhhbmRsZXMgc3BlY2lmaWMgcmVxdWVzdHMuIEkmIzM5O20gZ29pbmcgdG8ganVtcCByaWdodCB0byB0aGUgYXJlYSBhcm91bmQgbGluZSAzNjI0LiBUaGF0IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFzIEkgcmVtZW1iZXIgdGhlIGdlbmVyYWwgbGF5b3V0IG9mIHRoZSBmaWxlLCBhbmQgdGhhdCByYW5nZSBsaWtlbHkgaGFuZGxlcyBhIGdvb2QgY2h1bmsgb2YgdGhlIGlvY3RsIHJvdXRpbmcsIG9yIHBlcmhhcHMgYSBwYXJ0aWN1bGFyIGNvbW1hbmQgdGhhdCBoYXMgYmVlbiBpbXBsaWNhdGVkLiBJJiMzOTttIGV4cGVjdGluZyBzb21lIHByZXR0eSBsb3ctbGV2ZWwgc29ja2V0IGludGVyYWN0aW9uIG9yIHBlcmhhcHMgdGhlIGRlZmluaXRpb24gb2YgdGhlIHN0cnVjdHVyZXMgd2UmIzM5O3JlIHBhc3NpbmcgYmFjayBhbmQgZm9ydGggd2l0aCB0aGUga2VybmVsLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIGlmIHRoaXMgaHVuY2ggaXMgY29ycmVjdCwgb3IgaWYgSSBuZWVkIHRvIGFkanVzdCBteSBzZWFyY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvZXRodG9vbC9pb2N0bC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzYxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNjEwOlx0X19kZXZfZXRodG9vbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpZnJlcSAqaWZyLCB2b2lkIF9fdXNlciAqdXNlcmFkZHIsXG4zNjExOlx0XHQgICAgICB1MzIgZXRoY21kLCBzdHJ1Y3QgZXRodG9vbF9kZXZsaW5rX2NvbXBhdCAqZGV2bGlua19zdGF0ZSlcbjM2MTI6XHR7XG4zNjEzOlx0XHRuZXRkZXZpY2VfdHJhY2tlciBkZXZfdHJhY2tlcjtcbjM2MTQ6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4zNjE1Olx0XHRib29sIG5lZWRfcnRubDtcbjM2MTY6XHRcdGludCByYztcbjM2MTc6XHRcbjM2MTg6XHRcdGRldiA9IG5ldGRldl9nZXRfYnlfbmFtZShuZXQsIGlmci1cdTAwM2VpZnJfbmFtZSwgXHUwMDI2ZGV2X3RyYWNrZXIsIEdGUF9LRVJORUwpO1xuMzYxOTpcdFx0aWYgKCFkZXYpXG4zNjIwOlx0XHRcdHJldHVybiAtRU5PREVWO1xuMzYyMTpcdFxuMzYyMjpcdFx0bmVlZF9ydG5sID0gIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikgfHxcbjM2MjM6XHRcdFx0ICAgIGV0aHRvb2xfY21kX2NoYW5nZXNfZmVhdHVyZXMoZXRoY21kKSB8fFxuMzYyNDpcdFx0XHQgICAgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sKGRldiwgZXRoY21kKTtcbjM2MjU6XHRcdGlmIChuZWVkX3J0bmwpXG4zNjI2Olx0XHRcdHJ0bmxfbG9jaygpO1xuMzYyNzpcdFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XG4zNjI4Olx0XHRpZiAoZGV2LVx1MDAzZXJlZ19zdGF0ZSBcdTAwM2UgTkVUUkVHX1JFR0lTVEVSRUQgfHxcbjM2Mjk6XHRcdCAgICBkZXYtXHUwMDNlbW92aW5nX25zIHx8ICFuZXRfZXEoZGV2X25ldChkZXYpLCBuZXQpKSB7XG4zNjMwOlx0XHRcdHJjID0gLUVOT0RFVjtcbjM2MzE6XHRcdFx0Z290byBleGl0X29wc191bmxvY2s7XG4zNjMyOlx0XHR9XG4zNjMzOlx0XG4zNjM0Olx0XHRyYyA9IGRldl9ldGh0b29sX2xvY2tlZChuZXQsIGRldiwgdXNlcmFkZHIsIGV0aGNtZCwgZGV2bGlua19zdGF0ZSxcbjM2MzU6XHRcdFx0XHRcdG5lZWRfcnRubCk7XG4zNjM2Olx0XG4zNjM3Olx0ZXhpdF9vcHNfdW5sb2NrOlxuMzYzODpcdFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcbjM2Mzk6XHRcdGlmIChuZWVkX3J0bmwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI1OAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9jayBBY3F1aXNpdGlvbiBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyBhIGNvbmRpdGlvbmFsIGxvY2sgYWNxdWlzaXRpb24gaGVyZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYHJ0bmxfbG9jaygpYC4gVGhlIGNvZGUgY2xlYXJseSBzdGF0ZXMgdGhhdCBpZiBgbmVlZF9ydG5sYCBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB3ZSBhY3F1aXJlIHRoZSBgcnRubF9sb2NrYC4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBUaGUgaW50ZXJlc3RpbmcgcGFydCwgdGhvdWdoLCBpcyB0aGUgKmRlZmF1bHQqIGJlaGF2aW9yIG9mIGBFVEhUT09MX0dMSU5LYC4gSXQgc2VlbXMgdGhhdCwgYnkgZGVmYXVsdCwgd2UgKmRvbiYjMzk7dCogbmVlZCB0aGUgYHJ0bmxfbG9ja2AgZm9yIHRoaXMgc3BlY2lmaWMgYGV0aHRvb2xgIGNvbW1hbmQsIHVubGVzcywgYW5kIHRoaXMgaXMgdGhlIGNydXggb2YgaXQsIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgIHJldHVybnMgdHJ1ZS4gVGhhdCBmdW5jdGlvbiBiZWNvbWVzIHRoZSBnYXRla2VlcGVyIGZvciB3aGV0aGVyIHdlIG5lZWQgdG8gc2VyaWFsaXplIGFjY2VzcyB0byB0aGUgbmV0d29yayBkZXZpY2UmIzM5O3Mgcm91dGluZyB0YWJsZS4KCkJ1dCB0aGUgYmlnZ2VyIHBpY3R1cmUgcXVlc3Rpb24gaXMgd2hhdCYjMzk7cyBnb2luZyBvbiBiZWhpbmQgdGhlIHNjZW5lcywgc28gbGV0JiMzOTtzIGNoZWNrIHdoYXQgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIGRvZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgcnRubF9sb2NrYCBhbmQgdGhlIGRldmljZSBvcGVyYXRpb25zIGxvY2ssIGFuZCBob3cgdGhpcyBhZmZlY3RzIHRoZSBsb2NraW5nIGhpZXJhcmNoeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIGBydG5sX2xvY2tgIGlzIGFjcXVpcmVkIG9yIG5vdC4gVGhpcyBpcyBnZXR0aW5nIHRvIHRoZSBoZWFydCBvZiB0aGUgY29uY3VycmVuY3kgY29udHJvbCBhbmQgZW5zdXJpbmcgdGhhdCB0aGUgY2FsbHMgYXJlIHRocmVhZC1zYWZlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgaW50byBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRkZXZfbmVlZF9vcHNfbG9jayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYz0zMT1pbnQgcGh5X2xpbmtfdG9wb19hZGRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmMtNDQtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlfbGlua190b3BvbG9neS5jOjQ1Olx0aWYgKFdBUk5fT05fT05DRShuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKSlcbmRyaXZlcnMvbmV0L3BoeS9waHlfbGlua190b3BvbG9neS5jLTQ2LVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxuZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jPTgyPXN0YXRpYyBfX2lubGluZV9fIGludCBkZXZfaXNfZXRoZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmMtODMte1xuZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jOjg0Olx0cmV0dXJuIGRldi1cdTAwM2V0eXBlID09IEFSUEhSRF9FVEhFUiBcdTAwMjZcdTAwMjYgIW5ldGRldl9uZWVkX29wc19sb2NrKGRldik7XG5kcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmMtODUtfVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTc3LVx0ICogICBhbmQgb3RoZXIgY2FsbGJhY2tzLCB0aGF0IGlzIHRoZSBpbnN0YW5jZSBsb2NrIG9uIGRldmljZXMgZm9yXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1Nzg6XHQgKiAgIHdoaWNoIG5ldGRldl9uZWVkX29wc19sb2NrKCkgcmV0dXJucyB0cnVlLCBvdGhlcndpc2UgYnkgcnRubF9sb2NrO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTc5LVx0ICpcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU4MC1cdCAqIC0gZG91YmxlIG9wcyBwcm90ZWN0ZWQgLSBhbHdheXMgcHJvdGVjdGVkIGJ5IHJ0bmxfbG9jayBidXQgZm9yXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1ODE6XHQgKiAgIGRldmljZXMgZm9yIHdoaWNoIG5ldGRldl9uZWVkX29wc19sb2NrKCkgcmV0dXJucyB0cnVlIC0gYWxzb1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTgyLVx0ICogICB0aGUgaW5zdGFuY2UgbG9jay5cbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTIxPW5ldGRldl9hc3NlcnRfbG9ja2VkX29yX2ludmlzaWJsZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMjctXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjI4OnN0YXRpYyBpbmxpbmUgYm9vbCBuZXRkZXZfbmVlZF9vcHNfbG9jayhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0yOS17XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD0zOT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X2xvY2tfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTQwLXtcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6NDE6XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNDItXHRcdG5ldGRldl9sb2NrKGRldik7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD00NT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3VubG9ja19vcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNDYte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo0NzpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC00OC1cdFx0bmV0ZGV2X3VubG9jayhkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9NTE9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9sb2NrX29wc190b19mdWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTUyLXtcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6NTM6XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNTQtXHRcdG5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD01OT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3VubG9ja19mdWxsX3RvX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC02MC17XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjYxOlx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTYyLVx0XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZChkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9Njc9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNjgte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo2OTpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC03MC1cdFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZkZXYtXHUwMDNlbG9jayk7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD04Mz1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTg0LXtcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6ODU6XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtODYtXHRcdG5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD04OT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X2xvY2tfb3BzX2NvbXBhdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC05MC17XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjkxOlx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTkyLVx0XHRuZXRkZXZfbG9jayhkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9OTc9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl91bmxvY2tfb3BzX2NvbXBhdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC05OC17XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjk5Olx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTEwMC1cdFx0bmV0ZGV2X3VubG9jayhkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9MTA2PXN0YXRpYyBpbmxpbmUgaW50IG5ldGRldl9pc19sb2NrZWRfb3BzX2NvbXBhdChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0xMDcte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDoxMDg6XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMTA5LVx0XHRyZXR1cm4gbG9ja2RlcF9pc19oZWxkKFx1MDAyNmRldi1cdTAwM2Vsb2NrKTtcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmg9NDM9c3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c190eCB7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oLTkxLSAqXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmg6OTI6ICogT3BzIGFyZSBjYWxsZWQgdW5kZXIgdGhlIGluc3RhbmNlIGxvY2sgaWYgbmV0ZGV2X25lZWRfb3BzX2xvY2soKVxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oLTkzLSAqIHJldHVybnMgdHJ1ZSwgb3RoZXJ3aXNlIHVuZGVyIHJ0bmxfbG9jay5cbi0tXG5uZXQvY29yZS9kZXYuYz0xMTMyMD1pbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2NvcmUvZGV2LmMtMTEzNzQtXG5uZXQvY29yZS9kZXYuYzoxMTM3NTpcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIFx1MDAyNlx1MDAyNlxubmV0L2NvcmUvZGV2LmMtMTEzNzYtXHQgICAgZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmRvX3NldF9yeF9tb2RlIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9jb3JlL2Rldi5jPTEyMzYyPXZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCxcbi0tXG5uZXQvY29yZS9kZXYuYy0xMjM5NS1cdFx0XHRjb250aW51ZTtcbm5ldC9jb3JlL2Rldi5jOjEyMzk2Olx0XHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSkge1xubmV0L2NvcmUvZGV2LmMtMTIzOTctXHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZkZXYtXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfaGVhZCk7XG4tLVxubmV0L2NvcmUvZGV2LmMtMTI0MDQtXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgaGVhZCwgdW5yZWdfbGlzdCkge1xubmV0L2NvcmUvZGV2LmM6MTI0MDU6XHRcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbm5ldC9jb3JlL2Rldi5jLTEyNDA2LVx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2LVx1MDAzZWNsb3NlX2xpc3QsIFx1MDAyNmNsb3NlX2hlYWQpO1xuLS1cbm5ldC9jb3JlL2Rldi5jPTEyNTIyPWludCBfX2Rldl9jaGFuZ2VfbmV0X25hbWVzcGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L2NvcmUvZGV2LmMtMTI2MTItXG5uZXQvY29yZS9kZXYuYzoxMjYxMzpcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcbm5ldC9jb3JlL2Rldi5jLTEyNjE0LVx0XHRuZXRkZXZfbG9jayhkZXYpO1xuLS1cbm5ldC9jb3JlL2Rldi5jLTEyNjgzLVx0ZGV2LVx1MDAzZW1vdmluZ19ucyA9IGZhbHNlO1xubmV0L2NvcmUvZGV2LmM6MTI2ODQ6XHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5uZXQvY29yZS9kZXYuYy0xMjY4NS1cdFx0bmV0ZGV2X3VubG9jayhkZXYpO1xuLS1cbm5ldC9jb3JlL2Rldi5oPTE4MT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZfc2V0X3VwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgdmFsdWUpXG4tLVxubmV0L2NvcmUvZGV2LmgtMTg3LVxubmV0L2NvcmUvZGV2Lmg6MTg4Olx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxubmV0L2NvcmUvZGV2LmgtMTg5LVx0XHRuZXRkZXZfbG9jayhkZXYpO1xubmV0L2NvcmUvZGV2LmgtMTkwLVx0ZGV2LVx1MDAzZXVwID0gdmFsdWU7XG5uZXQvY29yZS9kZXYuaDoxOTE6XHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXG5uZXQvY29yZS9kZXYuaC0xOTItXHRcdG5ldGRldl91bmxvY2soZGV2KTtcbi0tXG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jPTE0MTA9dm9pZCBfX2Rldl9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmMtMTQyMi1cdGlmIChvcHMtXHUwMDNlbmRvX3NldF9yeF9tb2RlX2FzeW5jIHx8IG9wcy1cdTAwM2VuZG9fY2hhbmdlX3J4X2ZsYWdzIHx8XG5uZXQvY29yZS9kZXZfYWRkcl9saXN0cy5jOjE0MjM6XHQgICAgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSkge1xubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYy0xNDI0LVx0XHRuZXRpZl9yeF9tb2RlX3F1ZXVlKGRldik7XG4tLVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYz0xMDEzPWludCBuZXRkZXZfbmxfYmluZF9yeF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMDU2LVx0XHRlcnIgPSAtRU5PREVWO1xubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxMDU3Olx0ZWxzZSBpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKG5ldGRldikpXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEwNTgtXHRcdGVyciA9IC1FT1BOT1RTVVBQO1xuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI0NT1pbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjUwLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjUxOlx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjUyLVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYz0zNjEwPV9fZGV2X2V0aHRvb2woc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaWZyZXEgKmlmciwgdm9pZCBfX3VzZXIgKnVzZXJhZGRyLFxuLS1cbm5ldC9ldGh0b29sL2lvY3RsLmMtMzYyMS1cbm5ldC9ldGh0b29sL2lvY3RsLmM6MzYyMjpcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIHx8XG5uZXQvZXRodG9vbC9pb2N0bC5jLTM2MjMtXHRcdCAgICBldGh0b29sX2NtZF9jaGFuZ2VzX2ZlYXR1cmVzKGV0aGNtZCkgfHxcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTA3PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jLTUzOS1cdGlmIChyZXFfaW5mby1cdTAwM2VkZXYpIHtcbm5ldC9ldGh0b29sL25ldGxpbmsuYzo1NDA6XHRcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhyZXFfaW5mby1cdTAwM2VkZXYpIHx8XG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNTQxLVx0XHRcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKHJlcV9pbmZvLVx1MDAzZWRldiwgY21kKTtcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTk0PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kdW1wX29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9ldGh0b29sL25ldGxpbmsuYy02MDgtXHRldGhubF9pbml0X3JlcGx5X2RhdGEoY3R4LVx1MDAzZXJlcGx5X2RhdGEsIGN0eC1cdTAwM2VvcHMsIGRldik7XG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6NjA5Olx0bmVlZF9ydG5sID0gIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikgfHxcbm5ldC9ldGh0b29sL25ldGxpbmsuYy02MTAtXHRcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKGRldiwgY3R4LVx1MDAzZW9wcy1cdTAwM2VyZXF1ZXN0X2NtZCk7XG4tLVxubmV0L2V0aHRvb2wvbmV0bGluay5jPTkwMD1zdGF0aWMgaW50IGV0aG5sX2RlZmF1bHRfc2V0X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtOTMwLVx0ZGV2ID0gcmVxX2luZm8tXHUwMDNlZGV2O1xubmV0L2V0aHRvb2wvbmV0bGluay5jOjkzMTpcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIHx8XG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtOTMyLVx0XHQgICAgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChkZXYsIGNtZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5NDkKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxvY2tpbmcgQmVoYXZpb3IgZm9yIEVUSFRPT0xfR0xJTksgT3BzOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBgbmVlZF9ydG5sYCBpcyBkZXRlcm1pbmVkIGJ5IHdoZXRoZXIgYSBkZXZpY2UgKmRvZXNuJiMzOTt0KiBuZWVkIGFuIG9wcyBsb2NrLiBFc3NlbnRpYWxseSwgZGV2aWNlcyB0aGF0ICpkb24mIzM5O3QqIG5lZWQgdGhlIG9wcyBsb2NrIGFsd2F5cyBuZWVkIGBydG5sX2xvY2tgLCBhbmQgdGhvc2UgdGhhdCBkbyBuZWVkIHRoZSBvcHMgbG9jayBvbmx5IG5lZWQgYHJ0bmxfbG9ja2AgaWYgYGV0aHRvb2xfbmxfbXNnX25lZWRzX3J0bmxgIG9yIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgIHNheXMgc28uIFRoaXMgc2VlbXMgbGlrZSBhIG5ld2lzaCB0aGluZyB3aGVyZSBzb21lIGRyaXZlcnMgY2FuIGF2b2lkIGBydG5sX2xvY2tgIGZvciB0aGVpciBldGh0b29sIG9wZXJhdGlvbnMgYnkgdXNpbmcgYG5ldGRldl9sb2NrX29wcyhkZXYpYCBpbnN0ZWFkLgoKVGhlIGRyaXZlcnMgdG91Y2hlZCBpbiB0aGlzIHBhdGNoIChndmUsIGlhdmYsIG1seDUsIGZibmljLCBtYW5hKSBhcmUgcHJvYmFibHkgb25lcyB0aGF0IGhhdmUgb3B0ZWQgKmluKiB0byB0aGlzIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgdGhpbmcuIFRoYXQmIzM5O3Mgd2h5LCBieSBkZWZhdWx0LCB0aGV5ICpkb24mIzM5O3QqIHVzZSBgcnRubF9sb2NrYCBmb3IgZXRodG9vbCBvcHMuIEhvd2V2ZXIsIGZvciBgRVRIVE9PTF9HTElOS2AgKHRoZSBgZ2V0X2xpbmtgIG9wZXJhdGlvbiksIHRoZXkgKmRvKiBuZWVkIGBydG5sX2xvY2tgLiBXaHk/IEJlY2F1c2UgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBuZXRpZl9jYXJyaWVyX29rYCBhbmQgbWlnaHQgc3luYyB0aGUgbGluayB3YXRjaCB1bmRlciB0aGUgYHJ0bmxfbG9ja2AuCgpBaCwgbm93IEkgc2VlOiB0aGUgcGF0Y2ggaXMgYWRkaW5nIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZSBgb3BfbmVlZHNfcnRubGAgZmxhZ3MgZm9yIHRoZXNlIGRyaXZlcnMuIFRoaXMgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQgbWVhbnMgdGhhdCB3aGVuIGBFVEhUT09MX0dMSU5LYCBpcyBjYWxsZWQsIHRoZSBgcnRubF9sb2NrYCAqd2lsbCogYmUgdGFrZW4gZm9yIHRoZXNlIGRyaXZlcnMsIGNoYW5naW5nIGxvY2tpbmcgYmVoYXZpb3IuCgpEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcsIHRoaXMgZml4ZXMgb3IgY2hhbmdlcyBsb2NraW5nIGJlaGF2aW9yIGZvciBgRVRIVE9PTF9HTElOS2AgaW4gc2V2ZXJhbCBkcml2ZXJzLCBhbmQgdGhhdCBoYXMgdGhlIHBvdGVudGlhbCB0byBpbnRyb2R1Y2UgYnVncyBvciBleHBvc2UgdnVsbmVyYWJpbGl0aWVzLgoKU28sIGxldCYjMzk7cyBzZWUgd2hhdCBmdW5jdGlvbnMgYXJlIGFmZmVjdGVkLiBJIG5lZWQgdG8gbm90ZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgYW5kIGBldGhubF9kZWZhdWx0X2RvaXRgIGZvciBgRVRIVE9PTF9NU0dfTElOS1NUQVRFX0dFVGAsIGFsb25nIHdpdGggdGhlIGR1bXBpbmcgZnVuY3Rpb24gYGV0aG5sX2RlZmF1bHRfZHVtcF9vbmVgLiBUaGUgcGF0Y2ggaXRzZWxmIGNvbmZpcm1zIHRoaXMgYmVjYXVzZSBgZ3ZlX2V0aHRvb2xfb3BzLmdldF9saW5rYCBpcyBwcm9iYWJseSBqdXN0IGNhbGxpbmcgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLgoKTG9va2luZyBhdCB0aGUgcGF0Y2ggaW4gbW9yZSBkZXRhaWwsIGl0JiMzOTtzIGNsZWFyOiBgZ3ZlYCwgYGlhdmZgLCBgbWx4NWAsIGBmYm5pY2AsIGFuZCBgbWFuYWAgYXJlIGdldHRpbmcgdGhpcyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCBmbGFnIGFkZGVkLgoKVGhlIGRlc2NyaXB0aW9uIGV4cGxpY2l0bHkgc3RhdGVzLCAmIzM0O2V0aHRvb2xfb3BfZ2V0X2xpbmsoKSAoc3luY3MgbGluayB3YXRjaCB1bmRlciBydG5sX2xvY2spLiYjMzQ7IFRoYXQmIzM5O3MgdGhlIGtleTogYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBsaW5rd2F0Y2hfc3luY19kZXYoZGV2KWAsIHdoaWNoIHJlcXVpcmVzIGBydG5sX2xvY2tgLiBQZXJmZWN0LiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRocm91Z2ggYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIHRvIHZlcmlmeSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldGh0b29sX29wX2dldF9saW5rJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMjMzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL3VtL2RyaXZlcnMvdmVjdG9yX2tlcm4uYz0xNTAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdmVjdG9yX25ldF9ldGh0b29sX29wcyA9IHtcbi0tXG5hcmNoL3VtL2RyaXZlcnMvdmVjdG9yX2tlcm4uYy0xNTAyLVx0LmdldF9kcnZpbmZvXHQ9IHZlY3Rvcl9uZXRfZ2V0X2RydmluZm8sXG5hcmNoL3VtL2RyaXZlcnMvdmVjdG9yX2tlcm4uYzoxNTAzOlx0LmdldF9saW5rXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5hcmNoL3VtL2RyaXZlcnMvdmVjdG9yX2tlcm4uYy0xNTA0LVx0LmdldF90c19pbmZvXHQ9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXG4tLVxuZHJpdmVycy9maXJld2lyZS9uZXQuYz0xMzY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZnduZXRfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL2ZpcmV3aXJlL25ldC5jOjEzNjY6XHQuZ2V0X2xpbmtcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvZmlyZXdpcmUvbmV0LmMtMTM2Ny19O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfZXRodG9vbC5jPTIxOT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGlwb2liX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfZXRodG9vbC5jLTIyOC1cdC5nZXRfc3NldF9jb3VudFx0XHQ9IGlwb2liX2dldF9zc2V0X2NvdW50LFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9ldGh0b29sLmM6MjI5Olx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfZXRodG9vbC5jLTIzMC19O1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9NTk0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGJvbmRfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5NDMtXHQuZ2V0X2RydmluZm9cdFx0PSBib25kX2V0aHRvb2xfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjU5NDQ6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy01OTQ1LVx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSBib25kX2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzNjb20vM2M1OXguYz0zMDA5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdm9ydGV4X2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzNjb20vM2M1OXguYy0zMDE1LVx0LmdldF9zc2V0X2NvdW50XHRcdD0gdm9ydGV4X2dldF9zc2V0X2NvdW50LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS8zYzU5eC5jOjMwMTY6XHQuZ2V0X2xpbmsgICAgICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC8zY29tLzNjNTl4LmMtMzAxNy1cdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gdm9ydGV4X253YXlfcmVzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS90eXBob29uLmM9MTE2OD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHR5cGhvb25fZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS90eXBob29uLmMtMTE3MS1cdC5zZXRfd29sXHRcdD0gdHlwaG9vbl9zZXRfd29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS90eXBob29uLmM6MTE3MjpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC8zY29tL3R5cGhvb24uYy0xMTczLVx0LmdldF9yaW5ncGFyYW1cdFx0PSB0eXBob29uX2dldF9yaW5ncGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM9NjAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXhfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy02MDItXHQuZ2V0X2RydmluZm9cdFx0PSBheF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjYwMzpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy02MDQtXHQuZ2V0X3RzX2luZm9cdFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xMjUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgb3dsX2VtYWNfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTI1My1cdC5nZXRfZHJ2aW5mb1x0XHQ9IG93bF9lbWFjX2V0aHRvb2xfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTI1NDpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTI1NS1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jPTEwNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhZGluMTExMF9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTEwNjctXHQuZ2V0X2RydmluZm9cdFx0PSBhZGluMTExMF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjEwNjg6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtMTA2OS1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTEzMz1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGdyZXRoX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTEzOC1cdC5nZXRfcmVncyAgICAgICAgICAgICAgID0gZ3JldGhfZ2V0X3JlZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jOjExMzk6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMTQwLVx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9Mjk5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGV0MTMxeF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy0yOTk5LVx0LmdldF9yZWdzXHQ9IGV0MTMxeF9nZXRfcmVncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jOjMwMDA6XHQuZ2V0X2xpbmtcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTMwMDEtXHQuZ2V0X2xpbmtfa3NldHRpbmdzID0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9MzExMT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFpcm9oYV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxMTUtXHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzExNjpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxMTctfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGFjcml0ZWNoL3NsaWNvc3MuYz0xNTM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgc2xpY19ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsYWNyaXRlY2gvc2xpY29zcy5jLTE1MzctXHQuZ2V0X2RydmluZm9cdFx0PSBzbGljX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxhY3JpdGVjaC9zbGljb3NzLmM6MTUzODpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGFjcml0ZWNoL3NsaWNvc3MuYy0xNTM5LVx0LmdldF9zdHJpbmdzXHRcdD0gc2xpY19nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL2VlYS9lZWFfZXRodG9vbC5jPTI2MT1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZWVhX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvZWVhL2VlYV9ldGh0b29sLmMtMjYzLVx0LmdldF9kcnZpbmZvICAgICAgICA9IGVlYV9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvZWVhL2VlYV9ldGh0b29sLmM6MjY0Olx0LmdldF9saW5rICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL2VlYS9lZWFfZXRodG9vbC5jLTI2NS1cdC5nZXRfcmluZ3BhcmFtICAgICAgPSBlZWFfZ2V0X3JpbmdwYXJhbSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jPTM1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGVtYWNfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTM1My1cdC5nZXRfZHJ2aW5mb1x0PSBlbWFjX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYzozNTQ6XHQuZ2V0X2xpbmtcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmMtMzU1LVx0LmdldF9saW5rX2tzZXR0aW5ncyA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9ldGh0b29sLmM9MjQwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdHNlX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX2V0aHRvb2wuYy0yNDMtXHQuZ2V0X3JlZ3MgPSB0c2VfZ2V0X3JlZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9ldGh0b29sLmM6MjQ0Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX2V0aHRvb2wuYy0yNDUtXHQuZ2V0X3N0cmluZ3MgPSB0c2VfZ3N0cmluZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfZXRodG9vbC5jPTEwNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlbmFfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfZXRodG9vbC5jLTEwNzQtXHQuc2V0X21zZ2xldmVsXHRcdD0gZW5hX3NldF9tc2dsZXZlbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX2V0aHRvb2wuYzoxMDc1Olx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX2V0aHRvb2wuYy0xMDc2LVx0LmdldF9jb2FsZXNjZVx0XHQ9IGVuYV9nZXRfY29hbGVzY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYz02NzA9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhdTEwMDBfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jLTY3MS1cdC5nZXRfZHJ2aW5mbyA9IGF1MTAwMF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM6NjcyOlx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtNjczLVx0LmdldF9tc2dsZXZlbCA9IGF1MTAwMF9nZXRfbXNnbGV2ZWwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3N1bmxhbmNlLmM9MTI4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHNwYXJjX2xhbmNlX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3N1bmxhbmNlLmMtMTI4My1cdC5nZXRfZHJ2aW5mb1x0XHQ9IHNwYXJjX2xhbmNlX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3N1bmxhbmNlLmM6MTI4NDpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvc3VubGFuY2UuYy0xMjg1LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1ldGh0b29sLmM9NzM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgeGdiZV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWV0aHRvb2wuYy03NDItXHQuc2V0X21zZ2xldmVsID0geGdiZV9zZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWV0aHRvb2wuYzo3NDM6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1ldGh0b29sLmMtNzQ0LVx0LmdldF9jb2FsZXNjZSA9IHhnYmVfZ2V0X2NvYWxlc2NlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9ldGh0b29sLmM9MTYyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgeGdlX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL2V0aHRvb2wuYy0xNjMtXHQuZ2V0X2RydmluZm8gPSB4Z2VfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvZXRodG9vbC5jOjE2NDpcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvZXRodG9vbC5jLTE2NS1cdC5nZXRfc3RyaW5ncyA9IHhnZV9nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ldGh0b29sLmM9MzI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgeGdlbmVfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ldGh0b29sLmMtMzI5LVx0LmdldF9kcnZpbmZvID0geGdlbmVfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ldGh0b29sLmM6MzMwOlx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2V0aHRvb2wuYy0zMzEtXHQuZ2V0X3N0cmluZ3MgPSB4Z2VuZV9nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcHBsZS9ibWFjLmM9MTE2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGJtYWNfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcHBsZS9ibWFjLmM6MTE2NTpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcHBsZS9ibWFjLmMtMTE2Ni19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX2V0aHRvb2wuYz00ND1zdGF0aWMgdTMyIGFxX2V0aHRvb2xfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9ldGh0b29sLmMtNDUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfZXRodG9vbC5jOjQ2Olx0cmV0dXJuIGV0aHRvb2xfb3BfZ2V0X2xpbmsobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9ldGh0b29sLmMtNDctfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYz05Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFyY19lbWFjX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jLTk4LVx0LmdldF9kcnZpbmZvXHQ9IGFyY19lbWFjX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWFpbi5jOjk5Olx0LmdldF9saW5rXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtMTAwLVx0LmdldF9saW5rX2tzZXR0aW5ncyA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX2lvY3RsLmM9MjE0PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBheDg4Nzk2Y19ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuYy0yMTUtXHQuZ2V0X2RydmluZm9cdFx0PSBheDg4Nzk2Y19nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuYzoyMTY6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19pb2N0bC5jLTIxNy1cdC5nZXRfbXNnbGV2ZWxcdFx0PSBheDg4Nzk2Y19nZXRfbXNnbGV2ZWwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz01NDI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhZzcxeHhfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU0My1cdC5nZXRfZHJ2aW5mb1x0XHRcdD0gYWc3MXh4X2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo1NDQ6XHQuZ2V0X2xpbmtcdFx0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU0NS1cdC5nZXRfdHNfaW5mb1x0XHRcdD0gZXRodG9vbF9vcF9nZXRfdHNfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FseC9ldGh0b29sLmM9MzIzPWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhbHhfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hbHgvZXRodG9vbC5jLTMyNy1cdC5zZXRfbXNnbGV2ZWxcdD0gYWx4X3NldF9tc2dsZXZlbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWx4L2V0aHRvb2wuYzozMjg6XHQuZ2V0X2xpbmtcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWx4L2V0aHRvb2wuYy0zMjktXHQuZ2V0X3N0cmluZ3NcdD0gYWx4X2dldF9zdHJpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jPTI3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGF0bDFjX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI4NC1cdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gYXRsMWNfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jOjI4NTpcdC5nZXRfbGluayAgICAgICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI4Ni1cdC5nZXRfZWVwcm9tX2xlbiAgICAgICAgID0gYXRsMWNfZ2V0X2VlcHJvbV9sZW4sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ldGh0b29sLmM9MzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXRsMWVfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ldGh0b29sLmMtMzcwLVx0Lm53YXlfcmVzZXQgICAgICAgICAgICAgPSBhdGwxZV9ud2F5X3Jlc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ldGh0b29sLmM6MzcxOlx0LmdldF9saW5rICAgICAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ldGh0b29sLmMtMzcyLVx0LmdldF9lZXByb21fbGVuICAgICAgICAgPSBhdGwxZV9nZXRfZWVwcm9tX2xlbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jPTM2NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhdGwxX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwxLmMtMzY3NC1cdC5zZXRfcGF1c2VwYXJhbVx0XHQ9IGF0bDFfc2V0X3BhdXNlcGFyYW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jOjM2NzU6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDEuYy0zNjc2LVx0LmdldF9zdHJpbmdzXHRcdD0gYXRsMV9nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jPTIwMzk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhdGwyX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmMtMjA0Ny1cdC5ud2F5X3Jlc2V0XHRcdD0gYXRsMl9ud2F5X3Jlc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYzoyMDQ4Olx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmMtMjA0OS1cdC5nZXRfZWVwcm9tX2xlblx0XHQ9IGF0bDJfZ2V0X2VlcHJvbV9sZW4sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jPTQ0Mz1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNtYXNwX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jLTQ0NC1cdC5nZXRfZHJ2aW5mb1x0XHQ9IGJjbWFzcF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2V0aHRvb2wuYzo0NDU6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jLTQ0Ni1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jPTIxMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBiNDRfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjEwNC1cdC5ud2F5X3Jlc2V0XHRcdD0gYjQ0X253YXlfcmVzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMTA1Olx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIxMDYtXHQuZ2V0X3dvbFx0XHQ9IGI0NF9nZXRfd29sLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jPTE1ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBiY21fZW5ldF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xNTkwLVx0LmdldF9kcnZpbmZvXHRcdD0gYmNtX2VuZXRfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYzoxNTkxOlx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE1OTItXHQuZ2V0X3JpbmdwYXJhbVx0XHQ9IGJjbV9lbmV0X2dldF9yaW5ncGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jPTIyNDM9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBiY21fc3lzcG9ydF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjI0OS1cdC5zZXRfbXNnbGV2ZWxcdFx0PSBiY21fc3lzcG9ydF9zZXRfbXNnbHZsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jOjIyNTA6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTIyNTEtXHQuZ2V0X3N0cmluZ3NcdFx0PSBiY21fc3lzcG9ydF9nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jPTE2Nzg9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBiY21nZW5ldF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTE2ODctXHQuZ2V0X2RydmluZm9cdFx0PSBiY21nZW5ldF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmM6MTY4ODpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTE2ODktXHQuZ2V0X21zZ2xldmVsXHRcdD0gYmNtZ2VuZXRfZ2V0X21zZ2xldmVsLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE0MjI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdGczX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE0MjQyLVx0Lm53YXlfcmVzZXRcdFx0PSB0ZzNfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjE0MjQzOlx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE0MjQ0LVx0LmdldF9lZXByb21fbGVuXHRcdD0gdGczX2dldF9lZXByb21fbGVuLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jPTEwNjk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBibmFkX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTEwNzQtXHQuZ2V0X3dvbCA9IGJuYWRfZ2V0X3dvbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jOjEwNzU6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmMtMTA3Ni1cdC5nZXRfY29hbGVzY2UgPSBibmFkX2dldF9jb2FsZXNjZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQxMjM9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtYWNiX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDEyNS1cdC5nZXRfcmVnc1x0XHQ9IG1hY2JfZ2V0X3JlZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQxMjY6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MTI3LVx0LmdldF90c19pbmZvXHRcdD0gZXRodG9vbF9vcF9nZXRfdHNfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQxNTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBnZW1fZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MTU4LVx0LnNldF93b2xcdFx0PSBtYWNiX3NldF93b2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQxNTk6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MTYwLVx0LmdldF90c19pbmZvXHRcdD0gbWFjYl9nZXRfdHNfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWx4ZWRhL3hnbWFjLmM9MTY3MT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHhnbWFjX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FseGVkYS94Z21hYy5jOjE2NzI6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FseGVkYS94Z21hYy5jLTE2NzMtXHQuZ2V0X3BhdXNlcGFyYW0gPSB4Z21hY19nZXRfcGF1c2VwYXJhbSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYz0zMTE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbGlvX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTMxMjAtXHQuc2V0X2ZlY3BhcmFtXHRcdD0gbGlvX3NldF9mZWNwYXJhbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jOjMxMjE6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmMtMzEyMi1cdC5nZXRfZHJ2aW5mb1x0XHQ9IGxpb19nZXRfZHJ2aW5mbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYz0zMTQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbGlvX3ZmX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTMxNTAtXHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IGxpb19nZXRfbGlua19rc2V0dGluZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYzozMTUxOlx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTMxNTItXHQuZ2V0X2RydmluZm9cdFx0PSBsaW9fZ2V0X3ZmX2RydmluZm8sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jPTEzNTk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBvY3Rlb25fbWdtdF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmMtMTM2MS1cdC5ud2F5X3Jlc2V0ID0gb2N0ZW9uX21nbXRfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYzoxMzYyOlx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy0xMzYzLVx0LmdldF9saW5rX2tzZXR0aW5ncyA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IvY3hnYjIuYz04MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB0MV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IvY3hnYjIuYy04MTgtXHQuc2V0X3BhdXNlcGFyYW0gICAgPSBzZXRfcGF1c2VwYXJhbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYi9jeGdiMi5jOjgxOTpcdC5nZXRfbGluayAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IvY3hnYjIuYy04MjAtXHQuZ2V0X3N0cmluZ3MgICAgICAgPSBnZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IzL2N4Z2IzX21haW4uYz0yMTAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgY3hnYl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IzL2N4Z2IzX21haW4uYy0yMTE0LVx0LnNldF9wYXVzZXBhcmFtID0gc2V0X3BhdXNlcGFyYW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IzL2N4Z2IzX21haW4uYzoyMTE1Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjMvY3hnYjNfbWFpbi5jLTIxMTYtXHQuZ2V0X3N0cmluZ3MgPSBnZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYz0yMTc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgY3hnYl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYy0yMTk2LVx0LnNldF9wYXVzZXBhcmFtICAgID0gc2V0X3BhdXNlcGFyYW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzoyMTk3Olx0LmdldF9saW5rICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jLTIxOTgtXHQuZ2V0X3N0cmluZ3MgICAgICAgPSBnZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0dmYvY3hnYjR2Zl9tYWluLmM9MTkyOD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGN4Z2I0dmZfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNHZmL2N4Z2I0dmZfbWFpbi5jLTE5NDAtXHQuZ2V0X3BhdXNlcGFyYW1cdFx0PSBjeGdiNHZmX2dldF9wYXVzZXBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNHZmL2N4Z2I0dmZfbWFpbi5jOjE5NDE6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNHZmL2N4Z2I0dmZfbWFpbi5jLTE5NDItXHQuZ2V0X3N0cmluZ3NcdFx0PSBjeGdiNHZmX2dldF9zdHJpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19ldGh0b29sLmM9ODIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5pY19ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfZXRodG9vbC5jLTgyNy1cdC5zZXRfbXNnbGV2ZWwgPSBlbmljX3NldF9tc2dsZXZlbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19ldGh0b29sLmM6ODI4Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19ldGh0b29sLmMtODI5LVx0LmdldF9zdHJpbmdzID0gZW5pY19nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyODg9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBnbWFjXzM1MXhfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjkzLVx0LmdldF9ldGh0b29sX3N0YXRzID0gZ21hY19nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjI5NDpcdC5nZXRfbGlua1x0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjk1LVx0LmdldF9saW5rX2tzZXR0aW5ncyA9IGdtYWNfZ2V0X2tzZXR0aW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jPTY1Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGRtOTA1MV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTY2Mi1cdC5ud2F5X3Jlc2V0ID0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6NjYzOlx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtNjY0LVx0LmdldF9lZXByb21fbGVuID0gZG05MDUxX2dldF9lZXByb21fbGVuLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmM9MTY5OT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGRlX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguYzoxNzAwOlx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmMtMTcwMS1cdC5nZXRfZHJ2aW5mb1x0XHQ9IGRlX2dldF9kcnZpbmZvLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kbWZlLmM9MTEwND1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG5ldGRldl9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kbWZlLmMtMTEwNS1cdC5nZXRfZHJ2aW5mb1x0XHQ9IGRtZmVfZXRodG9vbF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kbWZlLmM6MTEwNjpcdC5nZXRfbGluayAgICAgICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kbWZlLmMtMTEwNy1cdC5zZXRfd29sXHRcdD0gZG1mZV9ldGh0b29sX3NldF93b2wsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX2V0aHRvb2wuYz0xNDA5PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBiZV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfZXRodG9vbC5jLTE0MTUtXHQuc2V0X3dvbCA9IGJlX3NldF93b2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfZXRodG9vbC5jOjE0MTY6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX2V0aHRvb2wuYy0xNDE3LVx0LmdldF9lZXByb21fbGVuID0gYmVfZ2V0X2VlcHJvbV9sZW4sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfZXRodG9vbC5jPTQ2MT1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdHNuZXBfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfZXRodG9vbC5jLTQ2OC1cdC5ud2F5X3Jlc2V0ID0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX2V0aHRvb2wuYzo0Njk6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfZXRodG9vbC5jLTQ3MC1cdC5zZWxmX3Rlc3QgPSB0c25lcF9ldGh0b29sX3NlbGZfdGVzdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTk5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGV0aG9jX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTAwMC1cdC5ud2F5X3Jlc2V0ID0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6MTAwMTpcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEwMDItXHQuZ2V0X3JpbmdwYXJhbSA9IGV0aG9jX2dldF9yaW5ncGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xMjE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZnRnbWFjMTAwX2V0aHRvb2xfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xMjIwLVx0LmdldF9kcnZpbmZvXHRcdD0gZnRnbWFjMTAwX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxMjIxOlx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTIyMi1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRodG9vbC5jPTUxMT1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZHBhYV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aHRvb2wuYy01MTktXHQuc2V0X3BhdXNlcGFyYW0gPSBkcGFhX3NldF9wYXVzZXBhcmFtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGh0b29sLmM6NTIwOlx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRodG9vbC5jLTUyMS1cdC5nZXRfc3NldF9jb3VudCA9IGRwYWFfZ2V0X3NzZXRfY291bnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aHRvb2wuYz05OTY9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGRwYWEyX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGh0b29sLmMtMTAwMC1cdC5ud2F5X3Jlc2V0ID0gZHBhYTJfZXRoX253YXlfcmVzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRodG9vbC5jOjEwMDE6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aHRvb2wuYy0xMDAyLVx0LmdldF9saW5rX2tzZXR0aW5ncyA9IGRwYWEyX2V0aF9nZXRfbGlua19rc2V0dGluZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC1ldGh0b29sLmM9MjU2PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBkcGFhMl9zd2l0Y2hfcG9ydF9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1zd2l0Y2gtZXRodG9vbC5jLTI1Ny1cdC5nZXRfZHJ2aW5mb1x0XHQ9IGRwYWEyX3N3aXRjaF9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1zd2l0Y2gtZXRodG9vbC5jOjI1ODpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLWV0aHRvb2wuYy0yNTktXHQuZ2V0X2xpbmtfa3NldHRpbmdzXHQ9IGRwYWEyX3N3aXRjaF9nZXRfbGlua19rc2V0dGluZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYz0xNTMxPWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlbmV0Y19wZl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE1NTYtXHQuc2V0X2xpbmtfa3NldHRpbmdzID0gZW5ldGNfc2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYzoxNTU3Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmMtMTU1OC1cdC5nZXRfdHNfaW5mbyA9IGVuZXRjX2dldF90c19pbmZvLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmM9MTU2OD1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5ldGM0X3BwbV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE1ODYtXHQuc2V0X2xpbmtfa3NldHRpbmdzID0gZW5ldGNfc2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYzoxNTg3Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmMtMTU4OC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmM9MTU5MD1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5ldGNfdmZfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYy0xNjA4LVx0LnNldF9jb2FsZXNjZSA9IGVuZXRjX3NldF9jb2FsZXNjZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmM6MTYwOTpcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE2MTAtXHQuZ2V0X3RzX2luZm8gPSBlbmV0Y19nZXRfdHNfaW5mbyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jPTE2MTM9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGVuZXRjNF9wZl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE2MjgtXHQuc2V0X2xpbmtfa3NldHRpbmdzID0gZW5ldGNfc2V0X2xpbmtfa3NldHRpbmdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2V0aHRvb2wuYzoxNjI5Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmMtMTYzMC1cdC5nZXRfd29sID0gZW5ldGNfZ2V0X3dvbCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0zNzg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZmVjX2VuZXRfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzc5My1cdC5ud2F5X3Jlc2V0XHRcdD0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjM3OTQ6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzc5NS1cdC5nZXRfY29hbGVzY2VcdFx0PSBmZWNfZW5ldF9nZXRfY29hbGVzY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM9NzgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbXBjNTJ4eF9mZWNfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHguYzo3ODI6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtNzgzLVx0LmdldF9tc2dsZXZlbCA9IG1wYzUyeHhfZmVjX2dldF9tc2dsZXZlbCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYz04MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmc19ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy04MTUtXHQubndheV9yZXNldCA9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo4MTY6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtODE3LVx0LmdldF9tc2dsZXZlbCA9IGZzX2dldF9tc2dsZXZlbCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcl9ldGh0b29sLmM9MTUwMj1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZ2Zhcl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcl9ldGh0b29sLmMtMTUwNy1cdC5nZXRfcmVncyA9IGdmYXJfZ2V0X3JlZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcl9ldGh0b29sLmM6MTUwODpcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcl9ldGh0b29sLmMtMTUwOS1cdC5nZXRfY29hbGVzY2UgPSBnZmFyX2djb2FsZXNjZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGhfZXRodG9vbC5jPTM1OT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHVlY19ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGhfZXRodG9vbC5jLTM2NS1cdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aF9ldGh0b29sLmM6MzY2Olx0LmdldF9saW5rICAgICAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoX2V0aHRvb2wuYy0zNjctXHQuZ2V0X3JpbmdwYXJhbSAgICAgICAgICA9IHVlY19nZXRfcmluZ3BhcmFtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfZXRodG9vbC5jPTExNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmdW5fZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmMtMTE1NC1cdC5nZXRfcmVncyAgICAgICAgICAgID0gZnVuX2dldF9yZWdzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmM6MTE1NTpcdC5nZXRfbGlua1x0ICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvZnVuZXRoX2V0aHRvb2wuYy0xMTU2LVx0LmdldF9jb2FsZXNjZSAgICAgICAgPSBmdW5fZ2V0X2NvYWxlc2NlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYz05ODI9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGd2ZV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtMTAwMy1cdC5zZXRfcnhmaCA9IGd2ZV9zZXRfcnhmaCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYzoxMDA0Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYy0xMDA1LVx0LmdldF9jb2FsZXNjZSA9IGd2ZV9nZXRfY29hbGVzY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX2V0aHRvb2wuYz00Nzg9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBoYmdfZXRodG9vbF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfZXRodG9vbC5jOjQ3OTpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfZXRodG9vbC5jLTQ4MC1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmM9Njc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaGlzaV9mZW1hY19ldGh0b29sc19vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jOjY3OTpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jLTY4MC1cdC5nZXRfbGlua19rc2V0dGluZ3NcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYz05MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBoaXg1aGQyX2V0aHRvb2xzX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzo5MTM6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTkxNC1cdC5nZXRfbGlua19rc2V0dGluZ3MgICAgID0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM9MTc1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGhpbmljX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTc1OC1cdC5nZXRfZHJ2aW5mbyA9IGhpbmljX2dldF9kcnZpbmZvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYzoxNzU5Olx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTc2MC1cdC5nZXRfbGlua19leHRfc3RhdGUgPSBoaW5pY19nZXRfbGlua19leHRfc3RhdGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYz0xNzg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaGluaWN2Zl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jLTE3OTQtXHQuZ2V0X2RydmluZm8gPSBoaW5pY19nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MTc5NTpcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jLTE3OTYtXHQuZ2V0X3JpbmdwYXJhbSA9IGhpbmljX2dldF9yaW5ncGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfZXRodG9vbC5jPTQxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGhpbmljM19ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19ldGh0b29sLmMtNDE4LVx0LnNldF9tc2dsZXZlbCAgICAgICAgICAgICAgICAgICA9IGhpbmljM19zZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19ldGh0b29sLmM6NDE5Olx0LmdldF9saW5rICAgICAgICAgICAgICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19ldGh0b29sLmMtNDIwLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VoZWEvZWhlYV9ldGh0b29sLmM9MjYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZWhlYV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZWhlYS9laGVhX2V0aHRvb2wuYy0yNjQtXHQuc2V0X21zZ2xldmVsID0gZWhlYV9zZXRfbXNnbGV2ZWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZWhlYS9laGVhX2V0aHRvb2wuYzoyNjU6XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VoZWEvZWhlYV9ldGh0b29sLmMtMjY2LVx0LmdldF9zdHJpbmdzID0gZWhlYV9nZXRfc3RyaW5ncyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjI4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGVtYWNfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTIyOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjI5NzpcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjI5OC1cdC5nZXRfbGlua19rc2V0dGluZ3MgPSBlbWFjX2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTEyPXN0YXRpYyBpbnQgZW1hY19tZGlvX3BvbGxfbGluayhzdHJ1Y3QgbWlpX3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTIwLVx0XHRkZXZfZXJyKFx1MDAyNmRldi1cdTAwM2VvZmRldi1cdTAwM2VkZXYsIFwmIzM0O2xpbmsgdXBkYXRlIGZhaWxlZCAoJWQpLlwmIzM0OywgcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTIxOlx0XHRyZXR1cm4gZXRodG9vbF9vcF9nZXRfbGluayhuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTIyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM9MTE3MD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG5ldGRldl9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTE3MS1cdC5nZXRfZHJ2aW5mb1x0XHQgICAgICAgICA9IG5ldGRldl9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM6MTE3MjpcdC5nZXRfbGlua1x0XHQgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jLTExNzMtXHQuZ2V0X3N0cmluZ3NcdFx0ICAgICAgICAgPSBpYm12ZXRoX2dldF9zdHJpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9ldGh0b29sLmM9MjM2MT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGUxMDAwX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9ldGh0b29sLmMtMjM3MC1cdC5ud2F5X3Jlc2V0XHRcdD0gZTEwMDBfbndheV9yZXNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9ldGh0b29sLmM6MjM3MTpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvZXRodG9vbC5jLTIzNzItXHQuZ2V0X2VlcHJvbV9sZW5cdFx0PSBlMTAwMF9nZXRfZWVwcm9tX2xlbixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19ldGh0b29sLmM9MTEzNj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGZtMTBrX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX2V0aHRvb2wuYy0xMTQyLVx0LmdldF9kcnZpbmZvXHRcdD0gZm0xMGtfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19ldGh0b29sLmM6MTE0MzpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19ldGh0b29sLmMtMTE0NC1cdC5nZXRfcGF1c2VwYXJhbVx0XHQ9IGZtMTBrX2dldF9wYXVzZXBhcmFtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9ldGh0b29sLmM9NTc4OT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGk0MGVfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2V0aHRvb2wuYy01Nzk4LVx0Lm53YXlfcmVzZXRcdFx0PSBpNDBlX253YXlfcmVzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZXRodG9vbC5jOjU3OTk6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2V0aHRvb2wuYy01ODAwLVx0LmdldF9saW5rX2V4dF9zdGF0c1x0PSBpNDBlX2dldF9saW5rX2V4dF9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jPTE4NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpYXZmX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmMtMTg1OS1cdC5nZXRfZHJ2aW5mb1x0XHQ9IGlhdmZfZ2V0X2RydmluZm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jOjE4NjA6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2V0aHRvb2wuYy0xODYxLVx0LmdldF9yaW5ncGFyYW1cdFx0PSBpYXZmX2dldF9yaW5ncGFyYW0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM9NDgzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGljZV9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00ODUyLVx0LnNlbGZfdGVzdFx0XHQ9IGljZV9zZWxmX3Rlc3QsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYzo0ODUzOlx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ4NTQtXHQuZ2V0X2xpbmtfZXh0X3N0YXRzXHQ9IGljZV9nZXRfbGlua19leHRfc3RhdHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM9NDg5MT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGljZV9ldGh0b29sX3NhZmVfbW9kZV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMtNDkwMC1cdC5zZXRfbXNnbGV2ZWxcdFx0PSBpY2Vfc2V0X21zZ2xldmVsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM6NDkwMTpcdC5nZXRfbGlua1x0XHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00OTAyLVx0LmdldF9lZXByb21fbGVuXHRcdD0gaWNlX2dldF9lZXByb21fbGVuLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jPTQ5MjI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpY2VfZXRodG9vbF9yZXByX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ5MjMtXHQuZ2V0X2RydmluZm9cdFx0PSBpY2VfcmVwcl9nZXRfZHJ2aW5mbyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jOjQ5MjQ6XHQuZ2V0X2xpbmtcdFx0PSBldGh0b29sX29wX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMtNDkyNS1cdC5nZXRfc3RyaW5nc1x0XHQ9IGljZV9yZXByX2dldF9zdHJpbmdzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9ldGh0b29sLmM9MTgwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGlkcGZfZXRodG9vbF9vcHMgPSB7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODg3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIGBldGh0b29sX29wX2dldF9saW5rYCoqCgpBbHJpZ2h0LCBzbyBgZXRodG9vbF9vcF9nZXRfbGlua2AuLi4gdGhhdCByaW5ncyBhIGJlbGwuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgb3BlcmF0aW9uLCBubyBxdWVzdGlvbi4gSWYgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgZnVsbHksIHRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGlzIGdvaW5nIHRvIGJlIGBuZXQvZXRodG9vbC9pb2N0bC5jYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGV0aHRvb2wgSU9DVEwgaGFuZGxpbmcgdHlwaWNhbGx5IHJlc2lkZXMsIHNvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZXRodG9vbF9vcF9nZXRfbGlua2Agc2hvdWxkIGJlIHRoZXJlLiBUaW1lIHRvIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V0aHRvb2xfb3BfZ2V0X2xpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZXRodG9vbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvaW9jdGwuYz00OD1zdGF0aWMgc3RydWN0IGRldmxpbmsgKm5ldGRldl90b19kZXZsaW5rX2dldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9ldGh0b29sL2lvY3RsLmMtNjAtXG5uZXQvZXRodG9vbC9pb2N0bC5jOjYxOnUzMiBldGh0b29sX29wX2dldF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvZXRodG9vbC9pb2N0bC5jLTYyLXtcbi0tXG5uZXQvZXRodG9vbC9pb2N0bC5jLTY3LX1cbm5ldC9ldGh0b29sL2lvY3RsLmM6Njg6RVhQT1JUX1NZTUJPTChldGh0b29sX29wX2dldF9saW5rKTtcbm5ldC9ldGh0b29sL2lvY3RsLmMtNjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MjY1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBldGh0b29sX29wX2dldF9saW5rYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBsaW5rIHN0YXR1cyBxdWVyaWVzIHZpYSBldGh0b29sLiBJJiMzOTttIGdvaW5nIHN0cmFpZ2h0IGZvciB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L2V0aHRvb2wvaW9jdGwuY2AsIGFuZCB6ZXJvaW5nIGluIG9uIHRoZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgZnVuY3Rpb24uIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHdoZXJlIHRoZSBrZXJuZWwgdHJhbnNsYXRlcyBhIHVzZXItc3BhY2UgcmVxdWVzdCBmb3IgbGluayBpbmZvcm1hdGlvbiBpbnRvIHNvbWV0aGluZyBjb25jcmV0ZS4gSSB3YW50IHRvIHNlZSBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgTklDIGRyaXZlcnMsIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IHV0aWxpemVzLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBnb3RjaGFzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IG1lY2hhbmljcyBiZWhpbmQgaG93IHRoZSBrZXJuZWwgZGV0ZXJtaW5lcyBpZiBhIGxpbmsgaXMgdXAgb3IgZG93biwgdGhlIHJlbGlhYmlsaXR5IG9mIHRoaXMgaW5mb3JtYXRpb24sIGFuZCBhbnkgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gb3IgZGVidWdnaW5nLiBUaW1lIHRvIHNlZSB3aGF0JiMzOTtzIHdoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2V0aHRvb2wvaW9jdGwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjE6XHR1MzIgZXRodG9vbF9vcF9nZXRfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuICA2MjpcdHtcbiAgNjM6XHRcdC8qIFN5bmNocm9uaXplIGNhcnJpZXIgc3RhdGUgd2l0aCBsaW5rIHdhdGNoLCBzZWUgYWxzbyBydG5sX2dldGxpbmsoKSAqL1xuICA2NDpcdFx0X19saW5rd2F0Y2hfc3luY19kZXYoZGV2KTtcbiAgNjU6XHRcbiAgNjY6XHRcdHJldHVybiBuZXRpZl9jYXJyaWVyX29rKGRldikgPyAxIDogMDtcbiAgNjc6XHR9XG4gIDY4Olx0RVhQT1JUX1NZTUJPTChldGh0b29sX29wX2dldF9saW5rKTtcbiAgNjk6XHRcbiAgNzA6XHRpbnQgZXRodG9vbF9vcF9nZXRfdHNfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODcxOQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgTGluayBXYXRjaCBGdW5jdGlvbioqCgpSaWdodCwgc28gYF9fbGlua3dhdGNoX3N5bmNfZGV2KGRldilgIGp1c3QgZ290IGNhbGxlZC4gVGhhdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBpbiBuZXR3b3JrIGRldmljZSBtYW5hZ2VtZW50LiBNeSBmaXJzdCB0aG91Z2h0IGlzOiBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBpcyBwb3BwaW5nIHVwISBEb2VzIHRoaXMgZnVuY3Rpb24gbmVlZCB0aGUgYHJ0bmxfbG9ja2AgaGVsZD8gSSBjYW4mIzM5O3QganVzdCBhc3N1bWUgaXQgaGFuZGxlcyBsb2NraW5nIGNvcnJlY3RseS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCBhbmQgY29uZmlybSB3aGV0aGVyIGl0IHRha2VzIHRoYXQgbG9jayBvciByZWxpZXMgb24gdGhlIGNhbGxlciB0byBwcm92aWRlIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgbG9ja2luZyBzdHJhdGVneSB0byBiZSBzdXJlIHRoaW5ncyBhcmUgaGFuZGxlZCBzYWZlbHksIGF2b2lkaW5nIGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIG9yIGRhdGEgY29ycnVwdGlvbi4gR290dGEgc3RheSBzaGFycCBhbmQgbWFrZSBzdXJlIEkgZnVsbHkgdW5kZXJzdGFuZCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19saW5rd2F0Y2hfc3luY19kZXYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD00NTg5PXZvaWQgbGlua3dhdGNoX3N5bmNfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo0NTkwOnZvaWQgX19saW5rd2F0Y2hfc3luY19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTQ1OTEtXG4tLVxubmV0L2NvcmUvbGlua193YXRjaC5jPTI1OT1zdGF0aWMgYm9vbCBsaW5rd2F0Y2hfY2xlYW5fZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2NvcmUvbGlua193YXRjaC5jLTI3Ny1cbm5ldC9jb3JlL2xpbmtfd2F0Y2guYzoyNzg6dm9pZCBfX2xpbmt3YXRjaF9zeW5jX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2NvcmUvbGlua193YXRjaC5jLTI3OS17XG4tLVxubmV0L2V0aHRvb2wvaW9jdGwuYz02MT11MzIgZXRodG9vbF9vcF9nZXRfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9ldGh0b29sL2lvY3RsLmMtNjMtXHQvKiBTeW5jaHJvbml6ZSBjYXJyaWVyIHN0YXRlIHdpdGggbGluayB3YXRjaCwgc2VlIGFsc28gcnRubF9nZXRsaW5rKCkgKi9cbm5ldC9ldGh0b29sL2lvY3RsLmM6NjQ6XHRfX2xpbmt3YXRjaF9zeW5jX2RldihkZXYpO1xubmV0L2V0aHRvb2wvaW9jdGwuYy02NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyNTIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaW1lIHRvIGNyYWNrIG9wZW4gYG5ldC9jb3JlL2xpbmtfd2F0Y2guY2AgYW5kIHNwZWNpZmljYWxseSwgSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGxpa2VseSBpcyB0aGUgKmNvcmUqIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBzeW5jaHJvbml6aW5nIG5ldHdvcmsgZGV2aWNlIGxpbmsgc3RhdGUgY2hhbmdlcy4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCB0aGUgZG91YmxlIHVuZGVyc2NvcmUgdXN1YWxseSBpbmRpY2F0ZXMgYW4gaW50ZXJuYWwsIGhlbHBlciBmdW5jdGlvbiwgbm90IGludGVuZGVkIGZvciBkaXJlY3QgZXh0ZXJuYWwgY2FsbHMuCgpLbm93aW5nIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZ1bmN0aW9uIHRvIGhhbmRsZSB0YXNrcyBsaWtlOgoKKiAgICoqU3RhdGUgdHJhbnNpdGlvbiBsb2dpYzoqKiBJdCB3aWxsIGhhdmUgc29tZSBsb2dpYyBkZWFsaW5nIHdpdGggdGhlIHBvc3NpYmxlIGxpbmsgc3RhdGVzLCBtb3N0IGxpa2VseSB1cCwgZG93biwgY2FycmllciBjaGFuZ2VzIGV0Yy4KKiAgICoqRXZlbnQgbm90aWZpY2F0aW9uOioqIEkmIzM5O20gZ3Vlc3NpbmcgaXQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgdHJpZ2dlcmluZyBhcHByb3ByaWF0ZSBub3RpZmljYXRpb25zL2NhbGxiYWNrcyB0byByZWxldmFudCBzdWJzeXN0ZW1zIGJhc2VkIG9uIHRoZSBsaW5rIHN0YXRlLiBUaGlzIGxpa2VseSBpbnZvbHZlcyBzb21lIGZvcm0gb2YgdGFza2xldCBvciB3b3JrcXVldWUgdXNhZ2UgdG8gaGFuZGxlIHRoZSBldmVudHMuCiogICAqKlJhY2UgY29uZGl0aW9uIHByb3RlY3Rpb246KiogSSYjMzk7bGwgYmUgY3VyaW91cyB0byBsb29rIGF0IGFueSBsb2NraW5nIG1lY2hhbmlzbXMgdXNlZCB0byBlbnN1cmUgdGhlIHN0YXRlIHVwZGF0ZXMgYXJlIHRocmVhZC1zYWZlLCBwYXJ0aWN1bGFybHkgZ2l2ZW4gdGhlIGFzeW5jaHJvbm91cyBuYXR1cmUgb2YgbmV0d29yayBldmVudHMuCiogICAqKkVycm9yIGhhbmRsaW5nOioqIFdoYXQgZWRnZSBjYXNlcyBkb2VzIGl0IGFjY291bnQgZm9yPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBkZXZpY2UgZHJpdmVyIGludGVyYWN0aW9ucyBvciBoYXJkd2FyZSBmYWlsdXJlcz8KCkkgbmVlZCB0byBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QgLSBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgZGV2aWNlIGRyaXZlcnMsIG90aGVyIG5ldHdvcmsgc3Vic3lzdGVtcywgYW5kIGhvdyBpdCBhdm9pZHMgYW55IGRhdGEgY29ycnVwdGlvbiBvciByYWNlIGNvbmRpdGlvbnMuIFRoaXMgaXMgZ29pbmcgdG8gYmUgbXkgc3RhcnRpbmcgcG9pbnQgaW4gZXZhbHVhdGluZyBhbnkgcG9zc2libGUgcHJvYmxlbXMsIG9yIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yIG9mIHRoYXQgZmVhdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY29yZS9saW5rX3dhdGNoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3ODpcdHZvaWQgX19saW5rd2F0Y2hfc3luY19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiAyNzk6XHR7XG4gMjgwOlx0XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7XG4gMjgxOlx0XG4gMjgyOlx0XHRpZiAobGlua3dhdGNoX2NsZWFuX2RldihkZXYpKSB7XG4gMjgzOlx0XHRcdGxpbmt3YXRjaF9kb19kZXYoZGV2KTtcbiAyODQ6XHRcdFx0LyogVXNlIF9fZGV2X3B1dCgpIGJlY2F1c2UgbmV0ZGV2X3RyYWNrZXJfZnJlZSgpIHdhcyBhbHJlYWR5XG4gMjg1Olx0XHRcdCAqIGNhbGxlZCBpbnNpZGUgbGlua3dhdGNoX2NsZWFuX2RldigpLlxuIDI4NjpcdFx0XHQgKi9cbiAyODc6XHRcdFx0X19kZXZfcHV0KGRldik7XG4gMjg4Olx0XHR9XG4gMjg5Olx0fVxuIDI5MDpcdFxuIDI5MTpcdHZvaWQgbGlua3dhdGNoX3N5bmNfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gMjkyOlx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTg4MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEV0aHRvb2wgTGluayBTdGF0ZSBMb2NraW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldilgIGNhbGwuIFJpZ2h0LCBpdCBjaGVja3MgdGhhdCB0aGUgYGRldi0mZ3Q7bG9ja2AgaXMgaGVsZCBpZiBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWAgaXMgdHJ1ZS4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIElmIGBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYCBpcyB0cnVlLCB0aGUgY29kZSBpcyBzdXBwb3NlZCB0byBhc3NlcnQgdGhhdCB0aGUgYGRldi0mZ3Q7bG9ja2AgaXMgYWxyZWFkeSBoZWxkLiBUaGUgdHJpY2t5IHRoaW5nIGlzIHRoYXQgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIGJlaW5nIHRydWUgYWxzbyBtZWFucyBgbmVlZF9ydG5sYCBpcyBmYWxzZSBieSBkZWZhdWx0LgoKU28sIGBfX2Rldl9ldGh0b29sYCB3aWxsIGNhbGwgYG5ldGRldl9sb2NrX29wcyhkZXYpYCwgd2hpY2ggY29ycmVjdGx5IGdyYWJzIGBkZXYtJmd0O2xvY2tgLiBUaGVuLCBgZGV2X2V0aHRvb2xfbG9ja2VkYCBpcyBpbnZva2VkLCB3aGljaCB0aGVuIGRpdmVzIGludG8gYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLiBJdCYjMzk7cyB3aXRoaW4gYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIHRoYXQgdGhpbmdzIGdldCBpbnRlcmVzdGluZywgYmVjYXVzZSBpdCBjYWxscyBgX19saW5rd2F0Y2hfc3luY19kZXZgLiBBbmQgKnRoYXQqIGZ1bmN0aW9uLCBjcnVjaWFsbHksIHRoZW4gYXNzZXJ0cyB0aGF0IGBkZXYtJmd0O2xvY2tgIGlzIGhlbGQuIFNvLCBhcyBmYXIgYXMgSSBjYW4gc2VlLCBgZGV2LSZndDtsb2NrYCBpcywgaW4gZmFjdCwgaGVsZCBhdCBhbGwgdGhvc2UgcG9pbnRzISBUaGUgbG9jayBzaG91bGQgYmUgY29ycmVjdGx5IGFjcXVpcmVkIGFuZCByZWxlYXNlZC4KCkJ1dC4uLndhaXQuIFRoZSBwYXRjaCBub3RlcyBzdGF0ZSB0aGF0IGBldGh0b29sX29wX2dldF9saW5rKClgIHN5bmNzIGxpbmsgd2F0Y2ggdW5kZXIgYHJ0bmxfbG9ja2AgYW5kIHRoZXkgYXJlIGFkZGluZyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYC4gKlRoYXQmIzM5O3MqIHRoZSBiaXQgdGhhdCYjMzk7cyB0aHJvd2luZyBtZS4gV2h5IHRoZSBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCBpZiB0aGUgZGV2aWNlIGxvY2sgaXMgYWxyZWFkeSBoZWxkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGlnIGludG8gYGxpbmt3YXRjaF9kb19kZXYoZGV2KWAgbm93IGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2NvcmUvbGlua193YXRjaC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMjA6XHRcdHNwaW5fbG9ja19pcnEoXHUwMDI2bHdldmVudGxpc3RfbG9jayk7XG4gMjIxOlx0XHRsaXN0X3NwbGljZV9pbml0KFx1MDAyNmx3ZXZlbnRsaXN0LCBcdTAwMjZ3cmspO1xuIDIyMjpcdFxuIDIyMzpcdFx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNndyaykgXHUwMDI2XHUwMDI2IGRvX2RldiBcdTAwM2UgMCkge1xuIDIyNDpcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuIDIyNTpcdFxuIDIyNjpcdFx0XHRkZXYgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNndyaywgc3RydWN0IG5ldF9kZXZpY2UsIGxpbmtfd2F0Y2hfbGlzdCk7XG4gMjI3Olx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZGV2LVx1MDAzZWxpbmtfd2F0Y2hfbGlzdCk7XG4gMjI4Olx0XG4gMjI5Olx0XHRcdGlmICghbmV0aWZfZGV2aWNlX3ByZXNlbnQoZGV2KSB8fFxuIDIzMDpcdFx0XHQgICAgKHVyZ2VudF9vbmx5IFx1MDAyNlx1MDAyNiAhbGlua3dhdGNoX3VyZ2VudF9ldmVudChkZXYpKSkge1xuIDIzMTpcdFx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2LVx1MDAzZWxpbmtfd2F0Y2hfbGlzdCwgXHUwMDI2bHdldmVudGxpc3QpO1xuIDIzMjpcdFx0XHRcdGNvbnRpbnVlO1xuIDIzMzpcdFx0XHR9XG4gMjM0Olx0XHRcdC8qIFdlIG11c3QgZnJlZSBuZXRkZXYgdHJhY2tlciB1bmRlclxuIDIzNTpcdFx0XHQgKiB0aGUgc3BpbmxvY2sgcHJvdGVjdGlvbi5cbiAyMzY6XHRcdFx0ICovXG4gMjM3Olx0XHRcdG5ldGRldl90cmFja2VyX2ZyZWUoZGV2LCBcdTAwMjZkZXYtXHUwMDNlbGlua3dhdGNoX2Rldl90cmFja2VyKTtcbiAyMzg6XHRcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmx3ZXZlbnRsaXN0X2xvY2spO1xuIDIzOTpcdFx0XHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbiAyNDA6XHRcdFx0bGlua3dhdGNoX2RvX2RldihkZXYpO1xuIDI0MTpcdFx0XHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuIDI0MjpcdFx0XHQvKiBVc2UgX19kZXZfcHV0KCkgYmVjYXVzZSBuZXRkZXZfdHJhY2tlcl9mcmVlKCkgd2FzIGFscmVhZHlcbiAyNDM6XHRcdFx0ICogY2FsbGVkIGFib3ZlLiBNdXN0IGJlIGFmdGVyIG5ldGRldl91bmxvY2tfb3BzKCkgdG8gcHJldmVudFxuIDI0NDpcdFx0XHQgKiBuZXRkZXZfcnVuX3RvZG8oKSBmcm9tIGZyZWVpbmcgdGhlIGRldmljZSB3aGlsZSBzdGlsbCBpbiB1c2UuXG4gMjQ1Olx0XHRcdCAqL1xuIDI0NjpcdFx0XHRfX2Rldl9wdXQoZGV2KTtcbiAyNDc6XHRcdFx0ZG9fZGV2LS07XG4gMjQ4Olx0XHRcdHNwaW5fbG9ja19pcnEoXHUwMDI2bHdldmVudGxpc3RfbG9jayk7XG4gMjQ5Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTIzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOgoKKipEaWdnaW5nIGludG8gYGxpbmt3YXRjaF9kb19kZXZgIGFuZCB0aGUgTG9ja2luZyoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gZ2V0IHRoaXMgc3RyYWlnaHQuIFRoZSBmdW5jdGlvbiBgbGlua3dhdGNoX2RvX2RldmAgaXMgKmRlZmluaXRlbHkqIGNhbGxlZCB3aXRoIGBuZXRkZXZfbG9ja19vcHMoZGV2KWAgYWxyZWFkeSBoZWxkLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaW50ZXJhY3Rpb24gYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gVGhlIGxvY2tpbmcgY29udGV4dCBpcyBhYnNvbHV0ZWx5IGNyaXRpY2FsIGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb2RlIHBhdGggdGhhdCBpbnZva2VzIGBsaW5rd2F0Y2hfZG9fZGV2YCB0byBjb25maXJtIHRoZSBsb2NrIGFjcXVpc2l0aW9uLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbGlua3dhdGNoX2RvX2RldmAgaW1tZWRpYXRlbHkgdG8gc2VlIHdoYXQgaXQmIzM5O3MgZG9pbmcgd2hpbGUgdW5kZXIgdGhpcyBsb2NrLiBBbnkgcG90ZW50aWFsIGNvbnRlbnRpb24gb3IgZGVhZGxvY2tzIGFyZSB3aGF0IEkmIzM5O20gbG9va2luZyBmb3Igbm93LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaW4gdGhhdCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY29yZS9saW5rX3dhdGNoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdFx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1VQKSB7XG4gMTgxOlx0XHRcdGlmIChuZXRpZl9jYXJyaWVyX29rKGRldikpXG4gMTgyOlx0XHRcdFx0ZGV2X2FjdGl2YXRlKGRldik7XG4gMTgzOlx0XHRcdGVsc2VcbiAxODQ6XHRcdFx0XHRkZXZfZGVhY3RpdmF0ZShkZXYsIHRydWUpO1xuIDE4NTpcdFxuIDE4NjpcdFx0XHRuZXRpZl9zdGF0ZV9jaGFuZ2UoZGV2KTtcbiAxODc6XHRcdH1cbiAxODg6XHR9XG4gMTg5Olx0XG4gMTkwOlx0c3RhdGljIHZvaWQgX19saW5rd2F0Y2hfcnVuX3F1ZXVlKGludCB1cmdlbnRfb25seSlcbiAxOTE6XHR7XG4gMTkyOlx0I2RlZmluZSBNQVhfRE9fREVWX1BFUl9MT09QXHQxMDBcbiAxOTM6XHRcbiAxOTQ6XHRcdGludCBkb19kZXYgPSBNQVhfRE9fREVWX1BFUl9MT09QO1xuIDE5NTpcdFx0LyogVXNlIGEgbG9jYWwgbGlzdCBoZXJlIHNpbmNlIHdlIGFkZCBub24tdXJnZW50XG4gMTk2Olx0XHQgKiBldmVudHMgYmFjayB0byB0aGUgZ2xvYmFsIG9uZSB3aGVuIGNhbGxlZCB3aXRoXG4gMTk3Olx0XHQgKiB1cmdlbnRfb25seT0xLlxuIDE5ODpcdFx0ICovXG4gMTk5Olx0XHRMSVNUX0hFQUQod3JrKTtcbiAyMDA6XHRcbiAyMDE6XHRcdC8qIEdpdmUgdXJnZW50IGNhc2UgbW9yZSBidWRnZXQgKi9cbiAyMDI6XHRcdGlmICh1cmdlbnRfb25seSlcbiAyMDM6XHRcdFx0ZG9fZGV2ICYjNDM7PSBNQVhfRE9fREVWX1BFUl9MT09QO1xuIDIwNDpcdFxuIDIwNTpcdFx0LypcbiAyMDY6XHRcdCAqIExpbWl0IHRoZSBudW1iZXIgb2YgbGlua3dhdGNoIGV2ZW50cyB0byBvbmVcbiAyMDc6XHRcdCAqIHBlciBzZWNvbmQgc28gdGhhdCBhIHJ1bmF3YXkgZHJpdmVyIGRvZXMgbm90XG4gMjA4Olx0XHQgKiBjYXVzZSBhIHN0b3JtIG9mIG1lc3NhZ2VzIG9uIHRoZSBuZXRsaW5rXG4gMjA5Olx0XHQgKiBzb2NrZXQuICBUaGlzIGxpbWl0IGRvZXMgbm90IGFwcGx5IHRvIHVwIGV2ZW50c1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTgwMgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uCgoqKkFuYWx5emluZyBEZXZpY2UgQWN0aXZhdGlvbi9EZWFjdGl2YXRpb24gaW4gdGhlIExpbmt3YXRjaCBDb250ZXh0KioKCkhtbSwgYGxpbmt3YXRjaF9kb19kZXZgIGlzIGNhbGxpbmcgYGRldl9hY3RpdmF0ZWAgYW5kIGBkZXZfZGVhY3RpdmF0ZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBwb3RlbnRpYWxseSBzaWduaWZpY2FudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgYXQgdGhvc2UgcG9pbnRzLiBTbywgcmlnaHQgbm93LCBteSBmb2N1cyBuZWVkcyB0byBzaGlmdCB0byB0aGUgaW50ZXJuYWwgd29ya2luZ3Mgb2YgYGRldl9hY3RpdmF0ZWAgYW5kIGBkZXZfZGVhY3RpdmF0ZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHJvbGVzIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIGBsaW5rd2F0Y2hfZG9fZGV2YC4gTGV0JiMzOTtzIGRpZyBpbnRvIHRob3NlIGZ1bmN0aW9ucyBuZXh0LiBUaGlzIGNvdWxkIGJlIHdoZXJlIHRoZSBtYWdpYywgb3IgdGhlIHRyb3VibGUsIGxpZXMuIFRpbWUgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMgb2YgdGhlIGRldmljZSBtYW5hZ2VtZW50IGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZfYWN0aXZhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbG9vcGJhY2suYz0yNzU9c3RhdGljIGludCBfX2luaXQgYmxhY2tob2xlX25ldGRldl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvbG9vcGJhY2suYy0yODMtXHRkZXZfaW5pdF9zY2hlZHVsZXIoYmxhY2tob2xlX25ldGRldik7XG5kcml2ZXJzL25ldC9sb29wYmFjay5jOjI4NDpcdGRldl9hY3RpdmF0ZShibGFja2hvbGVfbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2xvb3BiYWNrLmMtMjg1LVx0cnRubF9uZXRfdW5sb2NrKFx1MDAyNmluaXRfbmV0KTtcbi0tXG5pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oPTcyNj12b2lkIGRldl9zaHV0ZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmg6NzI3OnZvaWQgZGV2X2FjdGl2YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaC03Mjgtdm9pZCBkZXZfZGVhY3RpdmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHJlc2V0X25lZWRlZCk7XG4tLVxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmM9Nzc9c3RhdGljIHZvaWQgcmZjb21tX2Rldl9kZXN0cnVjdChzdHJ1Y3QgdHR5X3BvcnQgKnBvcnQpXG4tLVxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmMtMTA2LS8qIGRldmljZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbjogb3BlbiB0aGUgZGxjICovXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS90dHkuYzoxMDc6c3RhdGljIGludCByZmNvbW1fZGV2X2FjdGl2YXRlKHN0cnVjdCB0dHlfcG9ydCAqcG9ydCwgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSlcbm5ldC9ibHVldG9vdGgvcmZjb21tL3R0eS5jLTEwOC17XG4tLVxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmM9MTM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR5X3BvcnRfb3BlcmF0aW9ucyByZmNvbW1fcG9ydF9vcHMgPSB7XG5uZXQvYmx1ZXRvb3RoL3JmY29tbS90dHkuYy0xMzktXHQuZGVzdHJ1Y3QgPSByZmNvbW1fZGV2X2Rlc3RydWN0LFxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmM6MTQwOlx0LmFjdGl2YXRlID0gcmZjb21tX2Rldl9hY3RpdmF0ZSxcbm5ldC9ibHVldG9vdGgvcmZjb21tL3R0eS5jLTE0MS1cdC5zaHV0ZG93biA9IHJmY29tbV9kZXZfc2h1dGRvd24sXG4tLVxubmV0L2NvcmUvZGV2LmM9MTY2Nz1zdGF0aWMgaW50IF9fZGV2X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTE3MTAtXHRcdGRldl9zZXRfcnhfbW9kZShkZXYpO1xubmV0L2NvcmUvZGV2LmM6MTcxMTpcdFx0ZGV2X2FjdGl2YXRlKGRldik7XG5uZXQvY29yZS9kZXYuYy0xNzEyLVx0XHRhZGRfZGV2aWNlX3JhbmRvbW5lc3MoZGV2LVx1MDAzZWRldl9hZGRyLCBkZXYtXHUwMDNlYWRkcl9sZW4pO1xuLS1cbm5ldC9jb3JlL2xpbmtfd2F0Y2guYz0xNjY9c3RhdGljIHZvaWQgbGlua3dhdGNoX2RvX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0xODEtXHRcdGlmIChuZXRpZl9jYXJyaWVyX29rKGRldikpXG5uZXQvY29yZS9saW5rX3dhdGNoLmM6MTgyOlx0XHRcdGRldl9hY3RpdmF0ZShkZXYpO1xubmV0L2NvcmUvbGlua193YXRjaC5jLTE4My1cdFx0ZWxzZVxuLS1cbm5ldC9kc2EvdXNlci5jPTM0Nzg9c3RhdGljIGludCBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5uZXQvZHNhL3VzZXIuYy0zNTY5LVx0XHRcdCAqIE5FVERFVl9VUCBldmVudCBpcyBub3QgZW5vdWdoIHRvIGZsYWcgYSBwb3J0IGFzIHJlYWR5LlxubmV0L2RzYS91c2VyLmM6MzU3MDpcdFx0XHQgKiBXZSBhbHNvIGhhdmUgdG8gd2FpdCBmb3IgbGlua3dhdGNoX2RvX2RldiB0byBkZXZfYWN0aXZhdGVcbm5ldC9kc2EvdXNlci5jLTM1NzEtXHRcdFx0ICogYW5kIGVtaXQgYSBORVRERVZfQ0hBTkdFIGV2ZW50LlxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9MTA5MT1zdGF0aWMgaW50IHFkaXNjX2dyYWZ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBRZGlzYyAqcGFyZW50LFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTE2OS1cdFx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1VQKVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMTcwOlx0XHRcdGRldl9hY3RpdmF0ZShkZXYpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy0xMTcxLVx0fSBlbHNlIHtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMjY5PXN0YXRpYyB2b2lkIHRyYW5zaXRpb25fb25lX3FkaXNjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI4NS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEyODY6dm9pZCBkZXZfYWN0aXZhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyODcte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzMTEtfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTMxMjpFWFBPUlRfU1lNQk9MKGRldl9hY3RpdmF0ZSk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzEzLVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0Njg9aW50IGRldl9xZGlzY19jaGFuZ2VfdHhfcXVldWVfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQ4NS1cdGlmICh1cClcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0ODY6XHRcdGRldl9hY3RpdmF0ZShkZXYpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQ4Ny1cdHJldHVybiByZXQ7XG4tLVxubmV0L3NjaGVkL3NjaF9odGIuYz0xMzg4PWh0Yl9ncmFmdF9oZWxwZXIoc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLCBzdHJ1Y3QgUWRpc2MgKm5ld19xKVxuLS1cbm5ldC9zY2hlZC9zY2hfaHRiLmMtMTM5OC1cdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUClcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MTM5OTpcdFx0ZGV2X2FjdGl2YXRlKGRldik7XG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTE0MDAtXG4tLVxubmV0L3NjaGVkL3NjaF9odGIuYz0xNDE1PXN0YXRpYyB2b2lkIGh0Yl9vZmZsb2FkX21vdmVfcWRpc2Moc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBodGJfY2xhc3MgKmNsX29sZCxcbi0tXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTE0NDEtXHRcdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUClcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MTQ0MjpcdFx0XHRkZXZfYWN0aXZhdGUoZGV2KTtcbm5ldC9zY2hlZC9zY2hfaHRiLmMtMTQ0My1cdFx0V0FSTl9PTighKHFkaXNjLVx1MDAzZWZsYWdzIFx1MDAyNiBUQ1FfRl9CVUlMVElOKSk7XG4tLVxubmV0L3NjaGVkL3NjaF9tcS5jPTIwOT1zdGF0aWMgaW50IG1xX2dyYWZ0KHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLCBzdHJ1Y3QgUWRpc2MgKm5ldyxcbi0tXG5uZXQvc2NoZWQvc2NoX21xLmMtMjIyLVx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1VQKVxubmV0L3NjaGVkL3NjaF9tcS5jOjIyMzpcdFx0ZGV2X2FjdGl2YXRlKGRldik7XG5uZXQvc2NoZWQvc2NoX21xLmMtMjI0LVxuLS1cbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmM9NDYyPXN0YXRpYyBpbnQgbXFwcmlvX2dyYWZ0KHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLCBzdHJ1Y3QgUWRpc2MgKm5ldyxcbi0tXG5uZXQvc2NoZWQvc2NoX21xcHJpby5jLTQ3OS1cdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUClcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmM6NDgwOlx0XHRkZXZfYWN0aXZhdGUoZGV2KTtcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmMtNDgxLVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjE3OT1zdGF0aWMgaW50IHRhcHJpb19ncmFmdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgbG9uZyBjbCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyMTYtXHRpZiAoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfVVApXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIyMTc6XHRcdGRldl9hY3RpdmF0ZShkZXYpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzc1NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipJbnZlc3RpZ2F0aW5nIGBkZXZfYWN0aXZhdGVgIGFuZCBpdHMgTG9ja2luZyBSZXF1aXJlbWVudHMqKgoKUmlnaHQsIHNvIGBkZXZfYWN0aXZhdGVgLi4uIHRoYXQgZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgLCB3aGljaCBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIE5vdywgYSBrZXkgcXVlc3Rpb24gcG9wcyB1cCBpbW1lZGlhdGVseTogZG9lcyBgZGV2X2FjdGl2YXRlYCByZXF1aXJlIGhvbGRpbmcgdGhlIGBydG5sX2xvY2tgPyBJZiBpdCBkb2VzLCB0aGF0JiMzOTtzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGNvZGUsIGVzcGVjaWFsbHkgYW55dGhpbmcgcmVsYXRlZCB0byByb3V0aW5nIGFuZCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYWJvdXQgdGhpcy4gVGltZSB0byBkaWcgaW50byB0aGUgc291cmNlIGNvZGUgb2YgYGRldl9hY3RpdmF0ZWAgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCBpdHMgbG9jayB1c2FnZSBsb29rcyBsaWtlLiBHb3R0YSBiZSBjYXJlZnVsIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjg2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyODY6XHR2b2lkIGRldl9hY3RpdmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuMTI4NzpcdHtcbjEyODg6XHRcdGludCBuZWVkX3dhdGNoZG9nO1xuMTI4OTpcdFxuMTI5MDpcdFx0LyogTm8gcXVldWVpbmcgZGlzY2lwbGluZSBpcyBhdHRhY2hlZCB0byBkZXZpY2U7XG4xMjkxOlx0XHQgKiBjcmVhdGUgZGVmYXVsdCBvbmUgZm9yIGRldmljZXMsIHdoaWNoIG5lZWQgcXVldWVpbmdcbjEyOTI6XHRcdCAqIGFuZCBub3F1ZXVlX3FkaXNjIGZvciB2aXJ0dWFsIGludGVyZmFjZXNcbjEyOTM6XHRcdCAqL1xuMTI5NDpcdFxuMTI5NTpcdFx0aWYgKHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZXFkaXNjKSA9PSBcdTAwMjZub29wX3FkaXNjKVxuMTI5NjpcdFx0XHRhdHRhY2hfZGVmYXVsdF9xZGlzY3MoZGV2KTtcbjEyOTc6XHRcbjEyOTg6XHRcdGlmICghbmV0aWZfY2Fycmllcl9vayhkZXYpKVxuMTI5OTpcdFx0XHQvKiBEZWxheSBhY3RpdmF0aW9uIHVudGlsIG5leHQgY2Fycmllci1vbiBldmVudCAqL1xuMTMwMDpcdFx0XHRyZXR1cm47XG4xMzAxOlx0XG4xMzAyOlx0XHRuZWVkX3dhdGNoZG9nID0gMDtcbjEzMDM6XHRcdG5ldGRldl9mb3JfZWFjaF90eF9xdWV1ZShkZXYsIHRyYW5zaXRpb25fb25lX3FkaXNjLCBcdTAwMjZuZWVkX3dhdGNoZG9nKTtcbjEzMDQ6XHRcdGlmIChkZXZfaW5ncmVzc19xdWV1ZShkZXYpKVxuMTMwNTpcdFx0XHR0cmFuc2l0aW9uX29uZV9xZGlzYyhkZXYsIGRldl9pbmdyZXNzX3F1ZXVlKGRldiksIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMyMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBydG5sX2RlcmVmZXJlbmNlYCBDYWxsIGluIERldmljZSBBY3RpdmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IG15IGF0dGVudGlvbiBpcyBkcmF3biB0byBgcnRubF9kZXJlZmVyZW5jZShkZXYtJmd0O3FkaXNjKWAuIEkga25vdyB0aGF0IGZ1bmN0aW9uIHJlcXVpcmVzIGBydG5sX2xvY2tgIHRvIGJlIGhlbGQuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBkZXRhaWwsIGFuZCBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgY29uZGl0aW9uIGlzIG1ldC4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgY2FsbCBzdGFjazogYF9fbGlua3dhdGNoX3N5bmNfZGV2YCBjYWxscyBgbGlua3dhdGNoX2RvX2RldmAsIHdoaWNoIHRoZW4gY2FsbHMgYGRldl9hY3RpdmF0ZWAuIGBkZXZfYWN0aXZhdGVgIGlzIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBwcm9ibGVtYXRpYyBgcnRubF9kZXJlZmVyZW5jZWAuIFNvLCBpZiBgZGV2X2FjdGl2YXRlYCBuZWVkcyB0aGUgYHJ0bmxfbG9ja2AsIHRoZW4gYF9fbGlua3dhdGNoX3N5bmNfZGV2YCAqbXVzdCogYmUgY2FsbGVkIHdpdGggdGhhdCBsb2NrIGhlbGQuIFRoYXQmIzM5O3MgYSBkZXBlbmRlbmN5IEkgbmVlZCB0byB2ZXJpZnkuCgpCdXQgaGVyZSYjMzk7cyB0aGUgY29uZnVzaW5nIHBhcnQ6IGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgb25seSBoYXMgYG5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoZGV2KWAuIFRoaXMgYXNzZXJ0cyBgZGV2LSZndDtsb2NrYCBpZiB0aGUgZGV2aWNlIG5lZWRzIGl0LgoKQW5kIGBkZXZfYWN0aXZhdGVgIGhhcyBhIHByb2JsZW0sIGl0IHVzZXMgYHJ0bmxfZGVyZWZlcmVuY2VgIHdoaWNoIGFzc2VydHMgYHJ0bmxfbG9ja2Agb3IgYHJjdV9yZWFkX2xvY2tgLgoKVGhlIHF1ZXN0aW9uIGJlY29tZXM6IERvZXMgYGxpbmt3YXRjaF9kb19kZXZgLCB3aGljaCBzaXRzIGJldHdlZW4gdGhlbSwgaG9sZCB0aGUgYHJ0bmxfbG9ja2A/IEkgbmVlZCB0byBjaGVjayB0aGUgY29kZS4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGBsaW5rd2F0Y2hfZXZlbnRgIGluIGBuZXQvY29yZS9saW5rX3dhdGNoLmNgIHRvIHRyYWNlIHRoZSBsb2NrIGFjcXVpc2l0aW9uIGFuZCByZWxlYXNlLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGUgYHJ0bmxfbG9ja2AgaXMgYWNxdWlyZWQsIGlmIGF0IGFsbCwgYW5kIGhlbGQgYWNyb3NzIHRoYXQgZnVuY3Rpb24gY2FsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY29yZS9saW5rX3dhdGNoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI1MDpcdFxuIDI1MTpcdFx0LyogQWRkIHRoZSByZW1haW5pbmcgd29yayBiYWNrIHRvIGx3ZXZlbnRsaXN0ICovXG4gMjUyOlx0XHRsaXN0X3NwbGljZV9pbml0KFx1MDAyNndyaywgXHUwMDI2bHdldmVudGxpc3QpO1xuIDI1MzpcdFxuIDI1NDpcdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmx3ZXZlbnRsaXN0KSlcbiAyNTU6XHRcdFx0bGlua3dhdGNoX3NjaGVkdWxlX3dvcmsoMCk7XG4gMjU2Olx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2bHdldmVudGxpc3RfbG9jayk7XG4gMjU3Olx0fVxuIDI1ODpcdFxuIDI1OTpcdHN0YXRpYyBib29sIGxpbmt3YXRjaF9jbGVhbl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiAyNjA6XHR7XG4gMjYxOlx0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIDI2MjpcdFx0Ym9vbCBjbGVhbiA9IGZhbHNlO1xuIDI2MzpcdFxuIDI2NDpcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2bHdldmVudGxpc3RfbG9jaywgZmxhZ3MpO1xuIDI2NTpcdFx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmRldi1cdTAwM2VsaW5rX3dhdGNoX2xpc3QpKSB7XG4gMjY2Olx0XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZGV2LVx1MDAzZWxpbmtfd2F0Y2hfbGlzdCk7XG4gMjY3Olx0XHRcdGNsZWFuID0gdHJ1ZTtcbiAyNjg6XHRcdFx0LyogV2UgbXVzdCByZWxlYXNlIG5ldGRldiB0cmFja2VyIHVuZGVyXG4gMjY5Olx0XHRcdCAqIHRoZSBzcGlubG9jayBwcm90ZWN0aW9uLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTI2MQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSWRlbnRpZnlpbmcgdGhlIFdvcmtxdWV1ZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgdGhyb3VnaCB0aGlzIGNvZGUuLi4gYW5kIGFoYSEgVGhlIGBsaW5rd2F0Y2hfZXZlbnRgIGZ1bmN0aW9uLi4uIHRoYXQmIzM5O3MgdGhlIGtleS4gVGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gYmVpbmcgc3VibWl0dGVkIHRvIHRoZSB3b3JrcXVldWUuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IEkgbmVlZCB0byBmb2N1cyBvbi4gRm9yZ2V0IGFib3V0IHRoZSBvdGhlciBzdHVmZiwgdGhlICYjMzQ7aW50ZXJlc3RpbmcmIzM0OyBiaXQgaXMgcmlnaHQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGlua3dhdGNoX2V2ZW50JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM9MjgxNz1zdGF0aWMgaW50IGRvX3Jlc2V0KHN0cnVjdCBpYm12bmljX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0yODcyLVx0XHRcdCAqIHJlLWFjcXVpcmUgYWZ0ZXIgdGhlIGxpbmsgc3RhdGUgY2hhbmdlIHRvIGFsbG93XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jOjI4NzM6XHRcdFx0ICogbGlua3dhdGNoX2V2ZW50IHRvIGdyYWIgdGhlIFJUTkwgbG9jayBhbmQgcnVuIGR1cmluZ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0yODc0LVx0XHRcdCAqIGEgcmVzZXQuXG4tLVxubmV0L2NvcmUvbGlua193YXRjaC5jPTI4PXN0YXRpYyB1bnNpZ25lZCBsb25nIGxpbmt3YXRjaF9uZXh0ZXZlbnQ7XG5uZXQvY29yZS9saW5rX3dhdGNoLmMtMjktXG5uZXQvY29yZS9saW5rX3dhdGNoLmM6MzA6c3RhdGljIHZvaWQgbGlua3dhdGNoX2V2ZW50KHN0cnVjdCB3b3JrX3N0cnVjdCAqZHVtbXkpO1xubmV0L2NvcmUvbGlua193YXRjaC5jOjMxOnN0YXRpYyBERUNMQVJFX0RFTEFZRURfV09SSyhsaW5rd2F0Y2hfd29yaywgbGlua3dhdGNoX2V2ZW50KTtcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0zMi1cbi0tXG5uZXQvY29yZS9saW5rX3dhdGNoLmM9MzA1PXZvaWQgbGlua3dhdGNoX3J1bl9xdWV1ZSh2b2lkKVxuLS1cbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0zMTAtXG5uZXQvY29yZS9saW5rX3dhdGNoLmM6MzExOnN0YXRpYyB2b2lkIGxpbmt3YXRjaF9ldmVudChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmR1bW15KVxubmV0L2NvcmUvbGlua193YXRjaC5jLTMxMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NzM2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBDb3JlOiBBIExpbmsgV2F0Y2ggRXhwbG9yYXRpb24qKgoKT2theSwgdGltZSB0byBkaWcgaW50byBgbGlua3dhdGNoX2V2ZW50YCB3aXRoaW4gYG5ldC9jb3JlL2xpbmtfd2F0Y2guY2AuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgZ3Jhc3Agb2YgaG93IHRoZSBrZXJuZWwgbWFuYWdlcyBsaW5rIHN0YXRlIGNoYW5nZXMgYW5kLCBzcGVjaWZpY2FsbHksIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIHdpdGggdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjay4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgd2hlcmUgdGhlIG1hZ2ljIHN0YXJ0c+KAlHdoZXJlIHRoZSBpbnRlcnJ1cHQgb3IgcG9sbGluZyByZXN1bHQgZ2V0cyBpbnRlcnByZXRlZCwgYW5kIGV2ZW50cyBnZXQgcHJvcGFnYXRlZC4gSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVz4oCUbGlrZWx5IHNwaW5sb2NrcyBvciBSQ1XigJRiZWluZyB1c2VkIHRvIHByb3RlY3Qgc2hhcmVkIGRhdGEgc3RydWN0dXJlcyByZWxhdGVkIHRvIGludGVyZmFjZSBzdGF0ZS4gTXkgaW50dWl0aW9uIHNheXMgdGhlcmUmIzM5O2xsIGJlIGEgc3dpdGNoIHN0YXRlbWVudCBvciBhIHNlcmllcyBvZiBjb25kaXRpb25hbCBjaGVja3MgdG8gaGFuZGxlIHRoZSBkaWZmZXJlbnQgbGluayBzdGF0ZXMgKHVwLCBkb3duLCBjYXJyaWVyIGRldGVjdCwgZXRjLikuCgpJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUgZXZlbnQgaXMgdHJhbnNsYXRlZCBpbnRvIGFjdGlvbnMuIEkgd2FudCB0byBsb29rIGZvciBjbHVlcyBvbiB3aGVyZSB0aGUgbm90aWZpY2F0aW9ucyBnbzogYXJlIHdlIHRhbGtpbmcgTmV0bGluayBtZXNzYWdlcywgd29ya3F1ZXVlcywgb3IgZGlyZWN0IGZ1bmN0aW9uIGNhbGxzPyBIb3cgZG9lcyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0IHdpdGggdGhlIGRldmljZSBkcml2ZXJzPyBJJiMzOTtsbCBiZSBrZWVwaW5nIGEgc2hhcnAgZXllIG91dCBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgZXNwZWNpYWxseSBnaXZlbiB0aGUgYXN5bmNocm9ub3VzIG5hdHVyZSBvZiBuZXR3b3JrIGxpbmsgZXZlbnRzLiBJIGFsc28gbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIHByZXZlbnRzIHRoZSAmIzM0O3RodW5kZXJpbmcgaGVyZCYjMzQ7IHByb2JsZW0gdGhhdCBtaWdodCBhcHBlYXIgd2l0aCBhIGxhcmdlIG51bWJlciBvZiBpbnRlcmZhY2UgZXZlbnRzLiBGaW5hbGx5LCBJJiMzOTttIGV4cGVjdGluZyBzb21lIGludGVyYWN0aW9uIHdpdGggbmV0ZGV2IG5vdGlmaWVyIGNoYWlucywgYXMgdGhhdCYjMzk7cyBvZnRlbiB1c2VkIHRvIG5vdGlmeSBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIGtlcm5lbCBhYm91dCBuZXR3b3JrIGV2ZW50cy4gTGV0JiMzOTtzIHNlZSBob3cgd2VsbCBteSBhc3N1bXB0aW9ucyBob2xkIHVwLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2NvcmUvbGlua193YXRjaC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzExLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMTE6XHRzdGF0aWMgdm9pZCBsaW5rd2F0Y2hfZXZlbnQoc3RydWN0IHdvcmtfc3RydWN0ICpkdW1teSlcbiAzMTI6XHR7XG4gMzEzOlx0XHRydG5sX2xvY2soKTtcbiAzMTQ6XHRcdF9fbGlua3dhdGNoX3J1bl9xdWV1ZSh0aW1lX2FmdGVyKGxpbmt3YXRjaF9uZXh0ZXZlbnQsIGppZmZpZXMpKTtcbiAzMTU6XHRcdHJ0bmxfdW5sb2NrKCk7XG4gMzE2Olx0fVxuIDMxNzpcdFxuIDMxODpcdFxuIDMxOTpcdHZvaWQgbGlua3dhdGNoX2ZpcmVfZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiAzMjA6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjYzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTGluayBXYXRjaCBNZWNoYW5pc20qKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCB0aGUgYGxpbmt3YXRjaF9ldmVudGAgZnVuY3Rpb24gZ3JhYnMgdGhlIGBydG5sX2xvY2tgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gSXQgbWVhbnMgYF9fbGlua3dhdGNoX3J1bl9xdWV1ZWAgaXMgKmFsd2F5cyogZXhlY3V0ZWQgd2l0aCB0aGUgUmVhbCBUaW1lIE5ldGxpbmsgKHJ0bmwpIGxvY2sgaGVsZC4gUmlnaHQsIGFuZCBgX19saW5rd2F0Y2hfcnVuX3F1ZXVlYCB0aGVuIGNhbGxzIGBsaW5rd2F0Y2hfZG9fZGV2YC4gVGhhdCBtZWFucyBgbGlua3dhdGNoX2RvX2RldmAgaXMgKmRlc2lnbmVkKiB0byBiZSBjYWxsZWQgd2hlbiBgcnRubF9sb2NrYCBpcyBhbHJlYWR5IGhlbGQuIE5vIHN1cnByaXNlcyB0aGVyZS4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIEkgcmVtZW1iZXIgc2VlaW5nIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgc29tZXdoZXJlLCBhbmQgaXQgbG9va3MgbGlrZSB0aGF0IGZ1bmN0aW9uIGNhbGxzIGBsaW5rd2F0Y2hfZG9fZGV2YCAqZGlyZWN0bHkqLiBUaGF0IGNvdWxkIGJlIGEgcHJvYmxlbSEgSSBuZWVkIHRvIGdvIGJhY2sgYW5kIGRvdWJsZS1jaGVjayBgX19saW5rd2F0Y2hfc3luY19kZXZgLiBJIGhhdmUgYSBmZWVsaW5nIHNvbWV0aGluZyBpcyBvdXQgb2Ygc3luYyB3aXRoIHRoZSBsb2NraW5nIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2NvcmUvbGlua193YXRjaC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjc4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNzg6XHR2b2lkIF9fbGlua3dhdGNoX3N5bmNfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gMjc5Olx0e1xuIDI4MDpcdFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpO1xuIDI4MTpcdFxuIDI4MjpcdFx0aWYgKGxpbmt3YXRjaF9jbGVhbl9kZXYoZGV2KSkge1xuIDI4MzpcdFx0XHRsaW5rd2F0Y2hfZG9fZGV2KGRldik7XG4gMjg0Olx0XHRcdC8qIFVzZSBfX2Rldl9wdXQoKSBiZWNhdXNlIG5ldGRldl90cmFja2VyX2ZyZWUoKSB3YXMgYWxyZWFkeVxuIDI4NTpcdFx0XHQgKiBjYWxsZWQgaW5zaWRlIGxpbmt3YXRjaF9jbGVhbl9kZXYoKS5cbiAyODY6XHRcdFx0ICovXG4gMjg3Olx0XHRcdF9fZGV2X3B1dChkZXYpO1xuIDI4ODpcdFx0fVxuIDI4OTpcdH1cbiAyOTA6XHRcbiAyOTE6XHR2b2lkIGxpbmt3YXRjaF9zeW5jX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIDI5MjpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY4MzcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgYSBQb3RlbnRpYWwgUmFjZSBDb25kaXRpb24gaW4gTmV0d29yayBEZXZpY2UgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBoZXJlJiMzOTtzIHdoYXQmIzM5O3MgYm90aGVyaW5nIG1lLiBJJiMzOTt2ZSBiZWVuIHRyYWNpbmcgYSBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWUgcmVsYXRlZCB0byBob3cgd2UgaGFuZGxlIG5ldHdvcmsgZGV2aWNlIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAuIE15IGNvbmNlcm4gc3RlbXMgZnJvbSB0aGUgcG9zc2liaWxpdHkgdGhhdCBjYWxsaW5nIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgd2l0aG91dCBob2xkaW5nIHRoZSBgcnRubF9sb2NrYCBjb3VsZCBsZWFkIHRvIHNlcmlvdXMgcHJvYmxlbXMsIHBvdGVudGlhbGx5IFJDVSB3YXJuaW5ncyBvciwgZXZlbiB3b3JzZSwgZGF0YSByYWNlcy4gVGhlIHJvb3Qgb2YgdGhlIGlzc3VlIGxpZXMgaW4gdGhlIGZhY3QgdGhhdCBgX19saW5rd2F0Y2hfc3luY19kZXZgIGV2ZW50dWFsbHkgY2FsbHMgYGxpbmt3YXRjaF9kb19kZXZgLCB3aGljaCB0aGVuIGNhbGxzIGBkZXZfYWN0aXZhdGVgLiBEdXJpbmcgdGhpcyBjaGFpbiBvZiBjYWxscywgd2UgdXNlIGBydG5sX2RlcmVmZXJlbmNlYCB0byBhY2Nlc3Mgc2hhcmVkIGRhdGEuCgpOb3csIEkgaW5pdGlhbGx5IHRob3VnaHQgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCB3b3VsZCBhbHdheXMgZW5mb3JjZSB0aGUgbG9jaywgYnV0IHRoZW4gSSByZW1lbWJlcmVkIHRoZSBhc3NlcnRpb24gYG5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoZGV2KWAuIFRoaXMgYXNzZXJ0aW9uIGlzbiYjMzk7dCBhcyBzdHJpY3QgYXMgSSYjMzk7ZCBob3BlZC4gSWYgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIGlzIHRydWUsIGl0ICpvbmx5KiBhc3NlcnRzIHRoZSBkZXZpY2UmIzM5O3Mgb3duIGxvY2sgKGBkZXYtJmd0O2xvY2tgKSwgKm5vdCogdGhlIGdsb2JhbCBgcnRubF9sb2NrYC4gVGhhdCYjMzk7cyB0aGUgY3J1eC4KClRoaXMgbWVhbnMgaWYgYSBmdW5jdGlvbiBsaWtlIGBldGh0b29sX29wX2dldF9saW5rYCBnZXRzIGNhbGxlZCB3aXRob3V0IGhvbGRpbmcgYHJ0bmxfbG9ja2AsIGFuZCBpdCBzdWJzZXF1ZW50bHkgY2FsbHMgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCwgd2UmIzM5O3JlIGluIHRyb3VibGUuIFRoZSBidWcgaXMgdGhlIGNhbGwgcGF0aCBpdHNlbGYsIGJlY2F1c2UgYGxpbmt3YXRjaF9kb19kZXZgICpuZWVkcyogdGhlIGBydG5sX2xvY2tgLgoKVGhlIHByb3Bvc2VkIHNvbHV0aW9uIG1ha2VzIHNlbnNlOiBpdCBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIGBvcF9uZWVkc19ydG5sYCBmb3IgZHJpdmVycyB0aGF0IHVzZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgYW5kIGhhdmUgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIHJldHVybmluZyB0cnVlLiBUaGlzIHNlZW1zIHJlYXNvbmFibGUsIGJ1dCBub3cgSSBoYXZlIHRvIGNoZWNrIHRoZSBpbXBsaWNhdGlvbnMuCgpOb3cgSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGljaCBkcml2ZXJzIHRoaXMgYWN0dWFsbHkgYWZmZWN0cy4gKkRvKiBkcml2ZXJzIGxpa2UgYGd2ZWAsIGBpYXZmYCwgYG1seDVgLCBgZmJuaWNgLCBvciBgbWFuYWAgdXNlIGBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGNvbmRpdGlvbiBpcyB0cnVlIGZvciB0aGUgZHJpdmVycy4gVGhlIGRlZmluaXRpb24gb2YgYG5ldGRldl9uZWVkX29wc19sb2NrYCBpcyB3aGF0IEkgbmVlZCB0byBjaGVjay4gSXQmIzM5O3MgcmVsYXRlZCB0byBgZGV2LSZndDtuZXRkZXZfb3BzLSZndDtuZG9fYnBmYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYnV0IEkgaGF2ZSB0byBnbyBiYWNrIGFuZCBkb3VibGUgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjg6XHRzdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X25lZWRfb3BzX2xvY2soY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiAgMjk6XHR7XG4gIDMwOlx0XHRib29sIHJldCA9IGRldi1cdTAwM2VyZXF1ZXN0X29wc19sb2NrIHx8ICEhZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzO1xuICAzMTpcdFxuICAzMjpcdCNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfU0hBUEVSKVxuICAzMzpcdFx0cmV0IHw9ICEhZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmV0X3NoYXBlcl9vcHM7XG4gIDM0Olx0I2VuZGlmXG4gIDM1Olx0XG4gIDM2Olx0XHRyZXR1cm4gcmV0O1xuICAzNzpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5NDYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERldmljZSBEcml2ZXIgQ29uY3VycmVuY3kgYW5kIFF1ZXVlIE1hbmFnZW1lbnQqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSBzZWVpbmcgYSBwb3RlbnRpYWwgYXJlYSBvZiBjb25jZXJuLiBUaGUgaW5pdGlhbCB0cmlnZ2VyIGlzIHRoZSBtZW50aW9uIG9mIGBkZXYtJmd0O3JlcXVlc3Rfb3BzX2xvY2tgLCBgZGV2LSZndDtxdWV1ZV9tZ210X29wc2AsIG9yIGBkZXYtJmd0O25ldGRldl9vcHMtJmd0O25ldF9zaGFwZXJfb3BzYC4gVGhlc2UgYXJlIGxpa2VseSByZWxhdGVkIHRvIGhvdyB0aGUgbmV0d29yayBkZXZpY2UgZHJpdmVyIGhhbmRsZXMgY29uY3VycmVudCBhY2Nlc3MgdG8gaXRzIHJlc291cmNlcywgc3BlY2lmaWNhbGx5IGFyb3VuZCByZXF1ZXN0IG9wZXJhdGlvbnMsIHF1ZXVlIG1hbmFnZW1lbnQsIGFuZCBwb3RlbnRpYWxseSBldmVuIHNoYXBpbmcgYWN0aXZpdGllcy4KCk15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHRpY2tpbmcgdGhyb3VnaCB0aGUgY29tbW9ubHkgdXNlZCBkcml2ZXJzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hpY2ggb2Ygb3VyIGhpZ2gtcGVyZm9ybWFuY2Ugb3IgY3JpdGljYWwgbmV0d29yayBkcml2ZXJzIGVtcGxveSBhIHNwZWNpZmljIHN0cmF0ZWd5IGZvciBjb25jdXJyZW5jeSBhbmQgcXVldWluZy4gSSYjMzk7bSB0aGlua2luZyBvZiB0aGUgYmlnIHBsYXllcnMgaGVyZTogYGd2ZWAsIGBpYXZmYCwgYG1seDVgLCBgZmJuaWNgLCBhbmQgYG1hbmFgLiBBcmUgdGhleSB1c2luZyBgcmVxdWVzdF9vcHNfbG9ja2A/IEFyZSB0aGV5IGxldmVyYWdpbmcgYHF1ZXVlX21nbXRfb3BzYD8gT3IgYXJlIHRoZXkgcmVseWluZyBvbiB0aGUgYG5ldF9zaGFwZXJfb3BzYCB0byBwcm90ZWN0IHRoZSBxdWV1ZT8KClRoZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGxvY2tpbmcgbW9kZWwgZW1wbG95ZWQgYnkgdmFyaW91cyBOSUNzLCBhbmQgYWxzbyB0byBzcG90IHBvdGVudGlhbGx5IHVudXN1YWwgaW1wbGVtZW50YXRpb25zIHRoYXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIHN0YWJpbGl0eS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXQgdGhlc2Ugc3BlY2lmaWMgZHJpdmVycyBhcmUgZG9pbmcgaW4gdGhpcyBzcGFjZS4gSSBuZWVkIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCBpZiBhbnkgb2YgdGhlc2UgYXJlIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB0aGF0IHJlcXVpcmUgYWRkaXRpb25hbCBzY3J1dGlueS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cXVldWVfbWdtdF9vcHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0PTM5Nz1Ob3RlIHRoYXQgc3VwcG9ydGluZyBuZXQgc2hhcGVycyBhdXRvbWF0aWNhbGx5IGVuYWJsZXMgXCYjMzQ7b3BzIGxvY2tpbmdcJiMzNDsuXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QtMzk4LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0OjM5OTpzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QtNDAwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3Q9NDAzPWxvY2suIGBgcnRubF9sb2NrYGAgbWF5IG9yIG1heSBub3QgYmUgaGVsZC5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdC00MDQtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3Q6NDA1Ok5vdGUgdGhhdCBzdXBwb3J0aW5nIHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgYXV0b21hdGljYWxseSBlbmFibGVzXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QtNDA2LVwmIzM0O29wcyBsb2NraW5nXCYjMzQ7LlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2NDQ4PXN0YXRpYyBpbnQgYm54dF9xdWV1ZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnFtZW0sIGludCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTY0OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjQ5NjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBibnh0X3F1ZXVlX21nbXRfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTY0OTctXHQubmRvX3F1ZXVlX21lbV9zaXplXHQ9IHNpemVvZihzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8pLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2NTA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTY1MDc6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgYm54dF9xdWV1ZV9tZ210X29wc191bnN1cHAgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjUwOC1cdC5uZG9fZGVmYXVsdF9xY2ZnXHQ9IGJueHRfcXVldWVfZGVmYXVsdF9xY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2OTQ1PXN0YXRpYyBpbnQgYm54dF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzE4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MTg1Olx0ZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXHUwMDI2Ym54dF9xdWV1ZV9tZ210X29wc191bnN1cHA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzE4Ni1cdGlmIChCTlhUX1NVUFBPUlRTX1FVRVVFX0FQSShicCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNzE4NzpcdFx0ZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXHUwMDI2Ym54dF9xdWV1ZV9tZ210X29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE3MTg4LVx0ZGV2LVx1MDAzZW5ldG1lbV90eCA9IE5FVE1FTV9UWF9ETUE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTI2ODU9c3RhdGljIGludCBndmVfcnhfcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjczNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyNzM3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIGd2ZV9xdWV1ZV9tZ210X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yNzM4LVx0Lm5kb19xdWV1ZV9tZW1fc2l6ZVx0PVx0c2l6ZW9mKHN0cnVjdCBndmVfcnhfcmluZyksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTI3OTM9c3RhdGljIGludCBndmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTI4NDYtXHRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmd2ZV9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjI4NDc6XHRkZXYtXHUwMDNlcXVldWVfbWdtdF9vcHMgPSBcdTAwMjZndmVfcXVldWVfbWdtdF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjg0OC1cdGRldi1cdTAwM2VzdGF0X29wcyA9IFx1MDAyNmd2ZV9zdGF0X29wcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTU3OTA9c3RhdGljIHN0cnVjdCBkZXZpY2UgKm1seDVlX3F1ZXVlX2dldF9kbWFfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1ODEzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG1seDVlX3F1ZXVlX21nbXRfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODE0LVx0Lm5kb19xdWV1ZV9tZW1fc2l6ZVx0PVx0c2l6ZW9mKHN0cnVjdCBtbHg1X3FtZ210X2RhdGEpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTgyNT1zdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9uaWNfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODM0LVx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZtbHg1ZV9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1ODM1Olx0bmV0ZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXHUwMDI2bWx4NWVfcXVldWVfbWdtdF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU4MzYtXHRuZXRkZXYtXHUwMDNleGRwX21ldGFkYXRhX29wcyA9IFx1MDAyNm1seDVlX3hkcF9tZXRhZGF0YV9vcHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz03NDY9c3RydWN0IG5ldF9kZXZpY2UgKmZibmljX25ldGRldl9hbGxvYyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy03NjAtXHRuZXRkZXYtXHUwMDNlc3RhdF9vcHMgPSBcdTAwMjZmYm5pY19zdGF0X29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM6NzYxOlx0bmV0ZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXHUwMDI2ZmJuaWNfcXVldWVfbWdtdF9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTc2Mi1cdG5ldGRldi1cdTAwM2VuZXRtZW1fdHggPSBORVRNRU1fVFhfRE1BO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jPTI5MDg9c3RhdGljIGludCBmYm5pY19xdWV1ZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnFtZW0sIGludCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjk0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjI5NDk6Y29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBmYm5pY19xdWV1ZV9tZ210X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTI5NTAtXHQubmRvX3F1ZXVlX21lbV9zaXplXHQ9IHNpemVvZihzdHJ1Y3QgZmJuaWNfcV90cmlhZCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4Lmg9MTUwPXN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmgtMTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4Lmg6MTYzOmV4dGVybiBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIGZibmljX3F1ZXVlX21nbXRfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmgtMTY0LVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MzQ9c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODUyLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg1MzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBuc2ltX3F1ZXVlX21nbXRfb3BzID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg1NC1cdC5uZG9fcXVldWVfbWVtX3NpemVcdD0gc2l6ZW9mKHN0cnVjdCBuc2ltX3F1ZXVlX21lbSksXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTEwMzg9c3RhdGljIGludCBuc2ltX2luaXRfbmV0ZGV2c2ltKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMDUwLVx0bnMtXHUwMDNlbmV0ZGV2LVx1MDAzZXN0YXRfb3BzID0gXHUwMDI2bnNpbV9zdGF0X29wcztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMDUxOlx0bnMtXHUwMDNlbmV0ZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXHUwMDI2bnNpbV9xdWV1ZV9tZ210X29wcztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMDUyLVx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMobnMtXHUwMDNlbmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9uZXRraXQuYz0zNTg9c3RhdGljIGludCBuZXRraXRfcXVldWVfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0a2l0LmMtMzkxLVxuZHJpdmVycy9uZXQvbmV0a2l0LmM6MzkyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5ldGtpdF9xdWV1ZV9tZ210X29wcyA9IHtcbmRyaXZlcnMvbmV0L25ldGtpdC5jLTM5My1cdC5uZG9fcXVldWVfY3JlYXRlXHQ9IG5ldGtpdF9xdWV1ZV9jcmVhdGUsXG4tLVxuZHJpdmVycy9uZXQvbmV0a2l0LmM9NDQxPXN0YXRpYyB2b2lkIG5ldGtpdF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L25ldGtpdC5jLTQ3My1cdGRldi1cdTAwM2VldGh0b29sX29wcyAgICA9IFx1MDAyNm5ldGtpdF9ldGh0b29sX29wcztcbmRyaXZlcnMvbmV0L25ldGtpdC5jOjQ3NDpcdGRldi1cdTAwM2VxdWV1ZV9tZ210X29wcyA9IFx1MDAyNm5ldGtpdF9xdWV1ZV9tZ210X29wcztcbmRyaXZlcnMvbmV0L25ldGtpdC5jLTQ3NS1cbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MDQ9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIwMzctICpcdEBzdGF0X29wczpcdE9wdGlvbmFsIG9wcyBmb3IgcXVldWUtYXdhcmUgc3RhdGlzdGljc1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyMDM4OiAqXHRAcXVldWVfbWdtdF9vcHM6XHRPcHRpb25hbCBvcHMgZm9yIHF1ZXVlIG1hbmFnZW1lbnRcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjAzOS0gKlxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNDU3LVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNDU4Olx0Y29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyAqcXVldWVfbWdtdF9vcHM7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI0NTktXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD0yOD1zdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X25lZWRfb3BzX2xvY2soY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMjkte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDozMDpcdGJvb2wgcmV0ID0gZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgfHwgISFkZXYtXHUwMDNlcXVldWVfbWdtdF9vcHM7XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTMxLVxuLS1cbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaD0xMTg9ZW51bSB7XG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oLTEyMy0vKipcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaDoxMjQ6ICogc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyAtIG5ldGRldiBvcHMgZm9yIHF1ZXVlIG1hbmFnZW1lbnRcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaC0xMjUtICpcbi0tXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmgtMTYzLSAqL1xuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oOjE2NDpzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIHtcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaC0xNjUtXHRzaXplX3RcdG5kb19xdWV1ZV9tZW1fc2l6ZTtcbi0tXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jPTEyNTI9aW50IG5ldGRldl9ubF9xdWV1ZV9jcmVhdGVfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTM4Ny1cbm5ldC9jb3JlL25ldGRldi1nZW5sLmM6MTM4ODpcdHF1ZXVlX2lkID0gZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzLVx1MDAzZW5kb19xdWV1ZV9jcmVhdGUoZGV2LCBpbmZvLVx1MDAzZWV4dGFjayk7XG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEzODktXHRpZiAocXVldWVfaWQgXHUwMDNjIDApIHtcbi0tXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmM9MTY9c3RhdGljIGludCBfX25ldGRldl9xdWV1ZV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X2NvbmZpZy5jLTI3LVx0dmFsaWRhdGVfY2IgPSBuZXRkZXZfbm9wX3ZhbGlkYXRlX3FjZmc7XG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmM6Mjg6XHRpZiAodmFsaWRhdGUgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2VxdWV1ZV9tZ210X29wcy1cdTAwM2VuZG9fdmFsaWRhdGVfcWNmZylcbm5ldC9jb3JlL25ldGRldl9jb25maWcuYzoyOTpcdFx0dmFsaWRhdGVfY2IgPSBkZXYtXHUwMDNlcXVldWVfbWdtdF9vcHMtXHUwMDNlbmRvX3ZhbGlkYXRlX3FjZmc7XG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmMtMzAtXG4tLVxubmV0L2NvcmUvbmV0ZGV2X2NvbmZpZy5jLTMzLVx0LyogR2V0IGRlZmF1bHRzIGZyb20gdGhlIGRyaXZlciwgaW4gY2FzZSB1c2VyIGNvbmZpZyBub3Qgc2V0ICovXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmM6MzQ6XHRpZiAoZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzLVx1MDAzZW5kb19kZWZhdWx0X3FjZmcpXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmM6MzU6XHRcdGRldi1cdTAwM2VxdWV1ZV9tZ210X29wcy1cdTAwM2VuZG9fZGVmYXVsdF9xY2ZnKGRldiwgcWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmMtMzYtXHRlcnIgPSB2YWxpZGF0ZV9jYihkZXYsIHFjZmcsIGV4dGFjayk7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jPTEwPV9fbmV0ZGV2X3F1ZXVlX2dldF9kbWFfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZHgpXG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmMtMTEte1xubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jOjEyOlx0Y29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyAqcXVldWVfb3BzID0gZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzO1xubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jLTEzLVx0c3RydWN0IGRldmljZSAqZG1hX2Rldjtcbi0tXG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmM9NjE9Ym9vbCBuZXRkZXZfY2FuX2NyZWF0ZV9xdWV1ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9jb3JlL25ldGRldl9xdWV1ZXMuYy02Ny1cdH1cbm5ldC9jb3JlL25ldGRldl9xdWV1ZXMuYzo2ODpcdGlmICghZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzIHx8XG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmM6Njk6XHQgICAgIWRldi1cdTAwM2VxdWV1ZV9tZ210X29wcy1cdTAwM2VuZG9fcXVldWVfY3JlYXRlKSB7XG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmMtNzAtXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7RGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgcXVldWUgY3JlYXRpb25cJiMzNDspO1xuLS1cbm5ldC9jb3JlL25ldGRldl9xdWV1ZXMuYz04MT1ib29sIG5ldGRldl9jYW5fbGVhc2VfcXVldWUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmMtOTEtXHR9XG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmM6OTI6XHRpZiAoIWRldi1cdTAwM2VxdWV1ZV9tZ210X29wcykge1xubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jLTkzLVx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O0xlYXNlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHF1ZXVlIG1hbmFnZW1lbnQgb3BlcmF0aW9uc1wmIzM0Oyk7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMDMtXHRzdHJ1Y3QgbmV0ZGV2X3J4X3F1ZXVlICpyeHEgPSBfX25ldGlmX2dldF9yeF9xdWV1ZShkZXYsIHJ4cV9pZHgpO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTA0Olx0Y29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyAqcW9wcyA9IGRldi1cdTAwM2VxdWV1ZV9tZ210X29wcztcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTEwNS1cdHZvaWQgKm5ld19tZW0sICpvbGRfbWVtO1xuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4Nz1zdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTkwLXtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE5MTpcdGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgKnFvcHMgPSBkZXYtXHUwMDNlcXVldWVfbWdtdF9vcHM7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xOTItXHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyBxY2ZnWzJdO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjQwNgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUXVldWUgTWFuYWdlbWVudCBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IGRpZmZlcmVudCBuZXR3b3JrIGRyaXZlcnMgaGFuZGxlIHF1ZXVlIG1hbmFnZW1lbnQuIEkga25vdyBgZ3ZlYCwgYG1seDVgLCBhbmQgYGZibmljYCBhbGwgcmVseSBvbiBgcXVldWVfbWdtdF9vcHNgLiBCdXQgd2hhdCBhYm91dCBgaWF2ZmAgYW5kIGBtYW5hYD8gSSBuZWVkIHRvIGNsYXJpZnkgdGhlaXIgYXBwcm9hY2ggdG8gcXVldWUgbWFuYWdlbWVudC4gSXQmIzM5O3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIGlmIHRoZXkgZW1wbG95IGByZXF1ZXN0X29wc19sb2NrYCB3aGljaCBjb3VsZCBwcm92aWRlIG1vcmUgaW5zaWdodCBpbnRvIHRoZWlyIHN5bmNocm9uaXphdGlvbiBzdHJhdGVneSBhbmQgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlcXVlc3Rfb3BzX2xvY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0PTM0Mz1Ecml2ZXJzIGNhbiBhbHNvIGV4cGxpY2l0bHkgcmVxdWVzdCBpbnN0YW5jZSBsb2NrIHRvIGJlIGhlbGQgZHVyaW5nIG9wc1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0OjM0NDpieSBzZXR0aW5nIGBgcmVxdWVzdF9vcHNfbG9ja2BgIHRvIHRydWUuIENvZGUgY29tbWVudHMgYW5kIGRvY3MgcmVmZXJcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdC0zNDUtdG8gZHJpdmVycyB3aGljaCBoYXZlIG9wcyBjYWxsZWQgdW5kZXIgdGhlIGluc3RhbmNlIGxvY2sgYXMgXCYjMzQ7b3BzIGxvY2tlZFwmIzM0Oy5cbi0tXG5kcml2ZXJzL25ldC9kdW1teS5jPTEwMz1zdGF0aWMgdm9pZCBkdW1teV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2R1bW15LmMtMTEwLVx0ZGV2LVx1MDAzZW5lZWRzX2ZyZWVfbmV0ZGV2ID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2R1bW15LmM6MTExOlx0ZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgPSB0cnVlO1xuZHJpdmVycy9uZXQvZHVtbXkuYy0xMTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jPTMzMjY9aW50IGJuZ2VfbmV0ZGV2X2FsbG9jKHN0cnVjdCBibmdlX2RldiAqYmQsIGludCBtYXhfaXJxcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMzQ0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzozNDQzOlx0bmV0ZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgPSB0cnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTM0NDQtXHRyYyA9IHJlZ2lzdGVyX25ldGRldihuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTgyNT1zdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9uaWNfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODM3LVx0bmV0ZGV2LVx1MDAzZXhza190eF9tZXRhZGF0YV9vcHMgPSBcdTAwMjZtbHg1ZV94c2tfdHhfbWV0YWRhdGFfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1ODM4Olx0bmV0ZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgPSB0cnVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODM5LVx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMobmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmM9ODg3PXN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX3JlcF9uZXRkZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMtODkxLVx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZtbHg1ZV9uZXRkZXZfb3BzX3JlcDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYzo4OTI6XHRuZXRkZXYtXHUwMDNlcmVxdWVzdF9vcHNfbG9jayA9IHRydWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMtODkzLVx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMobmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYz05OT1pbnQgbWx4NWlfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYy0xMjMtXHRuZXRkZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZtbHg1aV9ldGh0b29sX29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jOjEyNDpcdG5ldGRldi1cdTAwM2VyZXF1ZXN0X29wc19sb2NrID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jLTEyNS1cdG5ldGRldl9sb2NrZGVwX3NldF9jbGFzc2VzKG5ldGRldik7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yMTM5PXN0cnVjdCBuZXRfZGV2aWNlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NTMtXHQvKipcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjU1NDpcdCAqIEByZXF1ZXN0X29wc19sb2NrOiByZXF1ZXN0IHRoZSBjb3JlIHRvIHJ1biBhbGwgQG5ldGRldl9vcHMgYW5kXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NTUtXHQgKiBAZXRodG9vbF9vcHMgdW5kZXIgdGhlIEBsb2NrLlxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTU2LVx0ICovXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1NTc6XHRib29sXHRcdFx0cmVxdWVzdF9vcHNfbG9jaztcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU1OC1cbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NjYtXHQgKiBvcGVyYXRpb25zLiBEcml2ZXJzIG1heSBvcHQtaW4gdG8gdGhpcyBiZWhhdmlvciBieSBzZXR0aW5nXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1Njc6XHQgKiBAcmVxdWVzdF9vcHNfbG9jay5cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU2OC1cdCAqXG4tLVxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD0yOD1zdGF0aWMgaW5saW5lIGJvb2wgbmV0ZGV2X25lZWRfb3BzX2xvY2soY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMjkte1xuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDozMDpcdGJvb2wgcmV0ID0gZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgfHwgISFkZXYtXHUwMDNlcXVldWVfbWdtdF9vcHM7XG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTMxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzg0NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTWlzc2luZyBJQVZGIGFuZCBNQU5BIE9wZXJhdGlvbnMqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSByZXZpZXdpbmcgdGhlIG91dHB1dCBvZiBgcmVxdWVzdF9vcHNfbG9ja2AgYW5kIGBxdWV1ZV9tZ210X29wc2AsIGFuZCBJJiMzOTttIG5vdCBzZWVpbmcgYGlhdmZgIG9yIGBtYW5hYCBsaXN0ZWQgYW55d2hlcmUuIFRoYXTigJlzIGRlZmluaXRlbHkgbm90IHJpZ2h0LCBjb25zaWRlcmluZyBob3cgdGhlc2UgY29tcG9uZW50cyBpbnRlcmFjdC4gTXkgaW5pdGlhbCBhbmFseXNpcyBpcyBpbmNvbXBsZXRlLiBJdCBsb29rcyBsaWtlIEkgbmVlZCB0byBuYXJyb3cgbXkgZm9jdXMgYW5kIGRpcmVjdGx5IHZlcmlmeSB0aGVpciBwcmVzZW5jZSAob3IgbGFjayB0aGVyZW9mKS4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIGluc3BlY3QgdGhlIHJlc3VsdHMgc3BlY2lmaWNhbGx5IGZvciBgaWF2ZmAgYW5kIGBtYW5hYC4gVGltZSB0byBjaGVjayB0aG9zZSBpbmRpdmlkdWFsbHkuIEkgbmVlZCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlcXVlc3Rfb3BzX2xvY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MDcwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRpZ2dpbmcgRGVlcGVyIGludG8gdGhlIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGFuZCB0aGlua2luZywgJiMzNDtIb2xkIG9uIGEgbWludXRlLi4uIGRpZCB0aGV5IGNvbmZpZ3VyZSB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0IGRpZmZlcmVudGx5IHRoYW4gSSYjMzk7bSBhc3N1bWluZz8mIzM0OyBUaGVyZSYjMzk7cyBhbHdheXMgYSBjaGFuY2UgSSYjMzk7dmUgbWlzc2VkIGEgbnVhbmNlIGluIHRoZWlyIHNldHVwIG9yIHBlcmhhcHMgdGhleSYjMzk7dmUgdXRpbGl6ZWQgc29tZSBjb25maWd1cmF0aW9uIEkmIzM5O20gbm90IGltbWVkaWF0ZWx5IHNlZWluZy4gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgaWYgdGhleSBhcmUsIGluIGZhY3QsIHVzaW5nIHRoYXQgYHF1ZXVlX21nbXRfb3BzYCBmdW5jdGlvbiBidXQgbWF5YmUgaXQgd2FzIHVzZWQgaW4gYSBjb250ZXh0IHRoYXQgSSBjb21wbGV0ZWx5IGdsYXplZCBvdmVyLiBJIG5lZWQgdG8gdGFrZSBhbm90aGVyIGxvb2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cXVldWVfbWdtdF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0Mjc2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRlbHZpbmcgaW50byB0aGUgRXNzZW5jZTogUmV2aXNpdGluZyBgTWFuYWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBjb25jZXB0IG9mIGBtYW5hYC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBpZGVhLCBpc24mIzM5O3QgaXQ/IFdoZXRoZXIgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZW5lcmd5IGZsb3dzLCBhYnN0cmFjdCBzb3VyY2VzIG9mIHBvd2VyLCBvciBldmVuIG1ldGFwaG9yaWNhbCByZXByZXNlbnRhdGlvbnMsIGBtYW5hYCBvZmZlcnMgYSBwb3dlcmZ1bCBsZW5zLiBJJiMzOTttIGFscmVhZHkgZm9ybXVsYXRpbmcgcXVlc3Rpb25zOiBJcyB0aGlzIG1lYW50IGxpdGVyYWxseSwgYXMgYSBzcGVjaWZpYywgZGVmaW5lZCByZXNvdXJjZSB3aXRoaW4gYSBwYXJ0aWN1bGFyIHN5c3RlbT8gT3IsIGlzIHRoaXMgbW9yZSBjb25jZXB0dWFsLCBhIHRlcm0gY2hvc2VuIHRvIGV2b2tlIGRlZXBlciBtZWFuaW5ncywgcGVyaGFwcyByZWxhdGVkIHRvIHZpdGFsIGZvcmNlcywgb3IgYWNjZXNzIHRvIHNvbWV0aGluZyBiZXlvbmQgdGhlIGV2ZXJ5ZGF5PyBJcyB0aGUgaW50ZW50IHRvIGRyYXcgcGFyYWxsZWxzIG9yIGVzdGFibGlzaCBhIGNvbnRyYXN0IGJldHdlZW4gZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucz8gSSBzdXBwb3NlIEkgc2hvdWxkIGJlZ2luIGJ5IHVucGFja2luZyBpdHMgdmFyaW91cyBtYW5pZmVzdGF0aW9ucy4gV2hlcmUgaXMgdGhpcyBjb25jZXB0IGJlaW5nIGFwcGxpZWQsIGFuZCBob3c/IFRoZSBhbnN3ZXIgdG8gdGhhdCBxdWVzdGlvbiB3aWxsIGxlYWQgdG8gdGhlIG1vc3QgbG9naWNhbCBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9vcHNfbG9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NTM3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyBRdWV1ZSBNYW5hZ2VtZW50IE9wZXJhdGlvbnM6IEEgUmVzb3VyY2UgUGVyc3BlY3RpdmUqKgoKUmlnaHQsIGxldCYjMzk7cyBwYXVzZSBhbmQgbm90IGdldCBhaGVhZCBvZiBvdXJzZWx2ZXMuIEJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byB0aGUgaW50cmljYWNpZXMgb2YgdGhpcyBxdWV1ZSBtYW5hZ2VtZW50IHByb2Nlc3MsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBleGFtaW5lIGl0cyByZXNvdXJjZSBjb25zdW1wdGlvbi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlICYjMzk7bWFuYSYjMzk7IHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgJiMzOTtxdWV1ZV9tZ210X29wcyYjMzk7LiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMsIGFzIHRoaXMgaXMgaG93IHRoZSBzeXN0ZW0gaXMgbWFuYWdpbmcgaXQmIzM5O3MgY3VycmVudCBwcm9jZXNzLiBUaGlzIGlzIHRoZSBseW5jaHBpbiBmb3IgZWZmaWNpZW50IG9wZXJhdGlvbi4gSSBhbSBjb25zaWRlcmluZyB0aGlzIHZhbHVlIGFuZCB0cnlpbmcgdG8gZGVjaWRlIGl0JiMzOTtzIGVmZmVjdHMuIEtub3dpbmcgdGhlIGN1cnJlbnQgcmVzb3VyY2UgJiMzOTttYW5hJiMzOTsgZGVkaWNhdGVkIHRvIHRoaXMgZWxlbWVudCB3aWxsIGluZm9ybSB0aGUgbmV4dCBzdGVwcywgcG90ZW50aWFsIG9wdGltaXphdGlvbnMsIGFuZCBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHRoYXQgbWlnaHQgYmUgbHVya2luZy4gQSBxdWljayBjaGVjayBvZiBgbWFuYWAgaGVyZSBjYW4gc2F2ZSBhIGxvdCBvZiBkZWJ1Z2dpbmcgbGF0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cXVldWVfbWdtdF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDc5MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCBQYXRjaCoqCgpPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaWYgYm90aCBgaWF2ZmAgYW5kIGBtYW5hYCBkcml2ZXJzIGRvbiYjMzk7dCBzZXQgYHJlcXVlc3Rfb3BzX2xvY2tgIGFuZCBhbHNvIGRvbiYjMzk7dCBpbXBsZW1lbnQgYHF1ZXVlX21nbXRfb3BzYCwgdGhlbiBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWAgc2hvdWxkIGJlIHJldHVybmluZyBgZmFsc2VgIGZvciB0aGVtLiBSaWdodD8gSWYgdGhhdCYjMzk7cyB0aGUgY2FzZSwgdGhlbiBpbiBib3RoIGBfX2Rldl9ldGh0b29sYCBhbmQgYGV0aG5sX2RlZmF1bHRfZG9pdGAsIHRoZSBgbmVlZF9ydG5sYCB2YXJpYWJsZSB3b3VsZCAqYWx3YXlzKiBiZSBgdHJ1ZWAhCgpMZXQgbWUgZG91YmxlLWNoZWNrIGBuZXQvZXRodG9vbC9pb2N0bC5jYCB0byBiZSBjZXJ0YWluLiBZZXMsIGhlcmUmIzM5O3MgdGhlIHJlbGV2YW50IGNvZGU6CgpgYGBjCgluZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSB8fAoJCSAgICBldGh0b29sX2NtZF9jaGFuZ2VzX2ZlYXR1cmVzKGV0aGNtZCkgfHwKCQkgICAgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sKGRldiwgZXRoY21kKTsKYGBgCgpJZiBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWAgaXMgZmFsc2UgKHdoaWNoIGlzIHdoYXQgSSBleHBlY3QgZm9yIGBpYXZmYCBhbmQgYG1hbmFgKSwgdGhlIGZpcnN0IHBhcnQgb2YgdGhhdCBjb25kaXRpb25hbCwgYCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYCwgd2lsbCBldmFsdWF0ZSB0byB0cnVlLiBUaGVyZWZvcmUsIGBuZWVkX3J0bmxgICp3b3VsZCogYmUgdHJ1ZSByZWdhcmRsZXNzIQoKU28sIGZvciB0aGVzZSBkcml2ZXJzLCBgbmVlZF9ydG5sYCB3YXMgQUxSRUFEWSB0cnVlIGJlZm9yZSB0aGUgcGF0Y2ggZXZlbiBhZGRlZCBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCB0byB0aGVpciBgb3BfbmVlZHNfcnRubGAhIFRoYXQmIzM5O3Mgd2hhdCBoYXMgbWUgcHV6emxlZC4KClRoZSBxdWVzdGlvbiB0aGVuIGlzLCB3aHkgdGhlIGFkZGVkIGZsYWc/IEFyZSB0aGV5IHBsYW5uaW5nIHRvIHNldCBgcmVxdWVzdF9vcHNfbG9ja2AgaW4gYSBmdXR1cmUgcGF0Y2g/IE9yIG1heWJlIHRoaXMgcGF0Y2ggc2VyaWVzIGluY2x1ZGVzIHNvbWUgb3RoZXIgY2hhbmdlIHRvIHRoZXNlIGRyaXZlcnMgdGhhdCAqZG9lcyogYWZmZWN0IHRoZSBsb2NraW5nIGJlaGF2aW9yPyBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgYW5kIHNlZSBpZiBgaWF2ZmAgYW5kIGBtYW5hYCBjdXJyZW50bHkgc2V0IGByZXF1ZXN0X29wc19sb2NrYC4gVGltZSB0byBjaGVjayB0aGUgY3VycmVudCB0cmVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlcXVlc3Rfb3BzX2xvY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NjM1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGlnZ2luZyBpbnRvIHRoZSBJQVZGIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIGNydWNpYWwgc2V0dGluZyBpcyBoYXBwZW5pbmcgd2l0aGluIHRoZSBgaWF2ZmAgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IHdhcyB0aGF0IG1heWJlIGl0IHdhcyBoYW5kbGVkIGRpcmVjdGx5IHdpdGhpbiBgaWF2Zl9tYWluLmNgLCBidXQgYSBxdWljayBncmVwIHR1cm5zIHVwIG5vdGhpbmcuIEhtbSwgdGhhdCYjMzk7cyBub3QgaXQuIExldCYjMzk7cyBzZWUuLi4gbWF5YmUgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgYHF1ZXVlX21nbXRfb3BzYCBzdHJ1Y3R1cmUuIEkmIzM5O2xsIHNlYXJjaCBmb3IgdGhhdCB0byBzZWUgaWYgYGlhdmZgIGlzIGxldmVyYWdpbmcgaXQsIGJ1dCBzdGlsbCwgbm8gZGljZS4gSSYjMzk7bSBzdGFydGluZyB0byB0aGluayB0aGlzIGlzIG5vdCB0aGUgcmlnaHQgcGxhY2UuIFBlcmhhcHMgYSBkaWZmZXJlbnQgc2V0IG9mIG9wZXJhdGlvbnMsIGBuZXRfc2hhcGVyX29wc2AsIGFyZSBpbnZvbHZlZCBpbnN0ZWFkLiBJJiMzOTtsbCBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgbmV4dCwgaG9wZWZ1bGx5LCBpdCB3aWxsIGJlIHRoZSByaWdodCBsb2NhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0X3NoYXBlcl9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jPTUxMTY9c3RhdGljIHZvaWQgaWF2Zl9zaGFwZXJfY2FwKHN0cnVjdCBuZXRfc2hhcGVyX2JpbmRpbmcgKmJpbmRpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYy01MTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYzo1MTI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X3NoYXBlcl9vcHMgaWF2Zl9zaGFwZXJfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYy01MTI5LVx0LnNldCA9IGlhdmZfc2hhcGVyX3NldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jPTUxMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpYXZmX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYy01MTQ4LVx0Lm5kb19zZXR1cF90Y1x0XHQ9IGlhdmZfc2V0dXBfdGMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jOjUxNDk6XHQubmV0X3NoYXBlcl9vcHNcdFx0PSBcdTAwMjZpYXZmX3NoYXBlcl9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jLTUxNTAtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBpYXZmX2h3c3RhbXBfZ2V0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjIzMgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIElBVkYgYW5kIE5ldHdvcmsgU2hhcGVyIE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgaWF2ZmAgZHJpdmVyIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGxldmVyYWdpbmcgYG5ldF9zaGFwZXJfb3BzYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYmVjYXVzZSBpdCBtZWFucyB0aGUgZHJpdmVyIGlzIGluZGVlZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBuZXR3b3JrIHNoYXBpbmcgZnVuY3Rpb25hbGl0eS4gQW5kIGhlcmUmIzM5O3MgdGhlIGNsaW5jaGVyOiBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIHJldHVybnMgdHJ1ZSB3aGVuIGBuZXRfc2hhcGVyX29wc2AgaXMgc2V0IHdpdGhpbiB0aGUgYG5ldGRldl9vcHNgIHN0cnVjdHVyZS4gVGhlIGNvZGUgc25pcHBldCBjbGVhcmx5IGNvbmZpcm1zIHRoYXQ6CgpgYGBjCiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfU0hBUEVSKQoJcmV0IHw9ICEhZGV2LSZndDtuZXRkZXZfb3BzLSZndDtuZXRfc2hhcGVyX29wczsKI2VuZGlmCmBgYAoKU28sIGlmIGBuZXRfc2hhcGVyX29wc2AgaXMgYXNzaWduZWQsIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgaXMgZ29pbmcgdG8gYmUgcmVwb3J0aW5nIGEgbmVlZCBmb3IgbG9ja2luZy4gVGhpcyBjb25maXJtcyB0aGF0IGBpYXZmYCBfZG9lc18gcmVxdWlyZSB0aGF0IGxvY2tpbmcgbWVjaGFuaXNtLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgd2hhdCBhYm91dCBgbWFuYWA/IEkgbmVlZCB0byBjaGVjayBpZiB0aGUgc2FtZSBsb2dpYyBhcHBsaWVzIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRfc2hhcGVyX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9OTY0PXN0YXRpYyB2b2lkIG1hbmFfc2hhcGVyX2NhcChzdHJ1Y3QgbmV0X3NoYXBlcl9iaW5kaW5nICpiaW5kaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy05NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6OTcyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X3NoYXBlcl9vcHMgbWFuYV9zaGFwZXJfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTk3My1cdC5zZXQgPSBtYW5hX3NoYXBlcl9zZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jPTk3OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hbmFfZGV2b3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy05OTEtXHQubmRvX3R4X3RpbWVvdXRcdFx0PSBtYW5hX3R4X3RpbWVvdXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6OTkyOlx0Lm5ldF9zaGFwZXJfb3BzICAgICAgICAgPSBcdTAwMjZtYW5hX3NoYXBlcl9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtOTkzLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2ODkyCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMTA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEV0aHRvb2wgTGluayBTdGF0ZSBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIFRoZSBrZXkgaW5zaWdodCBpcyB0aGF0IHRoZSBgbWFuYWAgZHJpdmVyLCBhbG9uZyB3aXRoIGBndmVgLCBgaWF2ZmAsIGBtbHg1YCwgYW5kIGBmYm5pY2AsIGFsbCB1dGlsaXplIGBuZXRfc2hhcGVyX29wc2AuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBsZWFkcyB0byBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWAgcmV0dXJuaW5nIGB0cnVlYCBmb3IgdGhlc2UgZHJpdmVycy4gQ29uc2VxdWVudGx5LCBgbmVlZF9ydG5sYCB3b3VsZCBiZSBgZmFsc2VgIGJ5IGRlZmF1bHQgZm9yIGBFVEhUT09MX0dMSU5LYCBhbmQgYEVUSFRPT0xfTVNHX0xJTktTVEFURV9HRVRgLiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBpc3N1ZS4KClRoZSBwcm9ibGVtIGFyaXNlcyBiZWNhdXNlIHdoZW4gYG5lZWRfcnRubGAgaXMgYGZhbHNlYCwgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGlzIGludm9rZWQgd2l0aG91dCBob2xkaW5nIHRoZSBgcnRubF9sb2NrYC4gSG93ZXZlciwgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAsIHdoaWNoIHRoZW4gY2FsbHMgYGxpbmt3YXRjaF9kb19kZXZgLCBldmVudHVhbGx5IGxlYWRpbmcgdG8gYGRldl9hY3RpdmF0ZWAgYW5kIGEgY2FsbCB0byBgcnRubF9kZXJlZmVyZW5jZShkZXYtJmd0O3FkaXNjKWAuIFRoaXMgZGVyZWZlcmVuY2UgKnJlcXVpcmVzKiB0aGUgYHJ0bmxfbG9ja2AuIFRoZXJlZm9yZSwgY2FsbGluZyBgZXRodG9vbF9vcF9nZXRfbGlua2Agd2l0aG91dCB0aGUgbG9jayBpbnRyb2R1Y2VzIGEgcmFjZSBjb25kaXRpb24gYW5kIGxlYWRzIHRvIFJDVSB3YXJuaW5ncy4KClRoaXMgcGF0Y2ggZWxlZ2FudGx5IGFkZHJlc3NlcyB0aGUgaXNzdWUgYnkgYWRkaW5nIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIGBvcF9uZWVkc19ydG5sYCBmb3IgdGhlc2Ugc3BlY2lmaWMgZHJpdmVycy4gVGhpcyBmbGFnIGlzIHRoZW4gY2hlY2tlZCBpbiBgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubGAgYW5kIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgLCBndWFyYW50ZWVpbmcgdGhhdCBgcnRubF9sb2NrYCBpcyBhY3F1aXJlZCBiZWZvcmUgY2FsbGluZyBgZXRodG9vbF9vcF9nZXRfbGlua2AuIEl0JiMzOTtzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIGxvY2tpbmcgYnVnLgoKR2l2ZW4gdGhpcywgSSB0aGluayBmdXp6aW5nIHRoaXMgY2hhbmdlIGlzIGEgd29ydGh3aGlsZSBlbmRlYXZvciBiZWNhdXNlIGl0IGZ1bmRhbWVudGFsbHkgYWx0ZXJzIGxvY2tpbmcgYmVoYXZpb3IuIEZ1enppbmcgY2FuIGhlbHAgZW5zdXJlIHRoYXQgdGhlIGxvY2sgaXMgY29uc2lzdGVudGx5IHRha2VuIGFuZCB0aGF0IG5vIGRlYWRsb2NrcyBvciBuZXcgUkNVIHdhcm5pbmdzIGFyZSBpbnRyb2R1Y2VkLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBmb3IgZm9jdXMgZHVyaW5nIHRlc3RpbmcuIEkgaW5pdGlhbGx5IHRob3VnaHQgdG8gaW5jbHVkZSBhIGJyb2FkZXIgc2V0LCBzdWNoIGFzIHRoZSBnZW5lcmljIGV0aHRvb2wgZnVuY3Rpb25zIGBldGhubF9kZWZhdWx0X2RvaXRgIGFuZCBgX19kZXZfZXRodG9vbGAsIGJ1dCB0aGV5IGFyZSB0b28gZ2VuZXJpYy4gTXkgZm9jdXMgbXVzdCBiZSBsYXNlci1zaGFycC4gVGhlIGNydWNpYWwgZnVuY3Rpb24gaXMgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLCBhcyBpdCYjMzk7cyB0aGUgb25lIGRpcmVjdGx5IGltcGFjdGVkIGJ5IHRoZSBsb2NraW5nIGNoYW5nZS4gVGhlIG90aGVyIGNyaXRpY2FsIGZ1bmN0aW9ucyBhcmUgdGhlIGVudHJ5IHBvaW50cyB0aGF0IGNhbGwgdGhpcyBhbmQgdXNlIHRoZSBsb2NrOiBgZXRobmxfZGVmYXVsdF9kb2l0YCBhbmQgYF9fZGV2X2V0aHRvb2xgLgoKU28sIGZvciBGb2N1c1N5bWJvbHMsIEkmIzM5O20gdGhpbmtpbmc6CgoqICAgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgCiogICBgZXRobmxfZGVmYXVsdF9kb2l0YAoqICAgYF9fZGV2X2V0aHRvb2xgCgpTaW5jZSBgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubGAgYW5kIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCB0aGV5IHdvbiYjMzk7dCBzaG93IGFzIHN5bWJvbHMsIGJ1dCBgZXRobmxfZGVmYXVsdF9kb2l0YCBhbmQgYF9fZGV2X2V0aHRvb2xgIHdpbGwgY2FsbCB0aGVtLgoKUmVnYXJkaW5nIEVuYWJsZUNvbmZpZ3MsIHdlIG5lZWQgdG8gZW5zdXJlIHRoZSBtb2RpZmllZCBkcml2ZXJzIGFyZSBlbmFibGVkIHRvIHRyaWdnZXIgdGhlIGZhdWx0eSBiZWhhdmlvciBhbmQgdGhlIGZpeDoKCiogICBgZ3ZlYDogYENPTkZJR19HVkVgCiogICBgaWF2ZmA6IGBDT05GSUdfSUFWRmAKKiAgIGBtbHg1YDogYENPTkZJR19NTFg1X0NPUkVgLCBgQ09ORklHX01MWDVfQ09SRV9FTmAKKiAgIGBmYm5pY2A6IGBDT05GSUdfRkJOSUNgCiogICBgbWFuYWA6IGBDT05GSUdfTUlDUk9TT0ZUX01BTkFgCgpBbHNvLCBmb3IgYGlhdmZgIGFuZCBgbWFuYWAgdG8gdXRpbGl6ZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgLCB3ZSBuZWVkIGBDT05GSUdfTkVUX1NIQVBFUmAuIEkgd2lsbCB2ZXJpZnkgdGhlc2UgS2NvbmZpZyBuYW1lcyB0byBlbnN1cmUgYWNjdXJhY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBHVkUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc9MTY9aWYgTkVUX1ZFTkRPUl9HT09HTEVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MTg6Y29uZmlnIEdWRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtHb29nbGUgVmlydHVhbCBOSUMgKGdWTklDKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4OTE2CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHNwZWFraW5nIGFzIHRoZSBleHBlcnQ6CgoqKklBVkYgRXhhbWluYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIGBJQVZGYC4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucy4gSXMgdGhpcyBhIG5ldyBwcm9qZWN0PyBBIGRhdGFzZXQgSSBoYXZlbiYjMzk7dCBzZWVuIGJlZm9yZT8gT3IgYW0gSSByZXZpc2l0aW5nIHNvbWV0aGluZyBJJiMzOTt2ZSB3b3JrZWQgb24gcHJldmlvdXNseT8gVGhlIGNvbnRleHQgaXMgY3JpdGljYWwuIFdoYXQmIzM5O3MgdGhlIHByb2JsZW0gd2UmIzM5O3JlIHRyeWluZyB0byBzb2x2ZSBoZXJlPyBJcyB0aGlzIHJlbGF0ZWQgdG8gYW5vbWFseSBkZXRlY3Rpb24sIGZlYXR1cmUgZW5naW5lZXJpbmcsIG9yIG1vZGVsIHZhbGlkYXRpb24/IElzIGBJQVZGYCBhbiBhY3JvbnltPyBJdCBjb3VsZCBzdGFuZCBmb3Igc29tZXRoaW5nIGltcG9ydGFudCBpbiB0aGlzIGRvbWFpbi4gV2hhdCBraW5kIG9mIGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIGBJQVZGYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHN0cnVjdHVyZSwgZGltZW5zaW9ucywgYW5kIHBvdGVudGlhbCByZWxhdGlvbnNoaXBzIHdpdGggb3RoZXIgdmFyaWFibGVzLiBBbnkgaW5pdGlhbCBoeXBvdGhlc2lzIG5lZWRzIHRvIGJlIGJ1aWx0IGFyb3VuZCB0aGUgZnVuY3Rpb24gb2YgYElBVkZgPyBJcyB0aGVyZSBwcmV2aW91cyBhbmFseXNpcyBhcm91bmQgdGhlIG1ldHJpYyBvciBkYXRhc2V0PyBJIG5lZWQgdG8gZ28gYmFjayBhbmQgY2hlY2suIEnigJlsbCBtYWtlIHN1cmUgdG8gZG91YmxlLWNoZWNrIGFnYWluc3QgYW55IHByaW9yIGFzc3VtcHRpb25zIG9yIGV4aXN0aW5nIGtub3dsZWRnZSBJIGhhdmUgcmVnYXJkaW5nIHRoaXMgYXJlYSwgYW5kIGhvdyBpdCBhbGlnbnMgd2l0aCB0aGUgY3VycmVudCBnb2Fscy4gVGhlIGRldmlsJiMzOTtzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgc28gSSYjMzk7bGwgc3RhcnQgd2l0aCBhIG1ldGhvZGljYWwsIGZpcnN0IHByaW5jaXBsZXMgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJQVZGJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjUwPWNvbmZpZyBJNDBFX0RDQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjYxLSMgc28gdGhhdCBDT05GSUdfSUFWRiBzeW1ib2wgd2lsbCBhbHdheXMgbWlycm9yIHRoZSBzdGF0ZSBvZiBDT05GSUdfSTQwRVZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjI2Mjpjb25maWcgSUFWRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yNjMtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTMwMAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIHN1bW1hcml6ZWQsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGVzZSB0eXBlcyBvZiBzeXN0ZW1zOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE1MWDVfQ09SRSoqCgpBbHJpZ2h0LCAqTUxYNV9DT1JFKi4uLiBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgYXNzZXNzIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCBteSBrbm93bGVkZ2Ugb2YgdGhpcyBjb3JlIGNvbXBvbmVudC4gV2hhdCYjMzk7cyB0aGUgY29udGV4dD8gV2hhdCBwcm9ibGVtIGFyZSB3ZSBsb29raW5nIGF0PyBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgYSBjZW50cmFsLCBmb3VuZGF0aW9uYWwgcGllY2UgcmVsYXRlZCB0byBNZWxsYW5veC9OdmlkaWEgaGFyZHdhcmUg4oCTIGxpa2VseSByZWZlcnJpbmcgdG8gdGhlIGNvcmUgZHJpdmVyIG9yIGZpcm13YXJlIGludGVyZmFjZSBmb3IgdGhlaXIgbmV0d29yayBhZGFwdGVycy4gSSBuZWVkIHRvIGJlIHRoaW5raW5nIGFib3V0IGhvdyBpdCBoYW5kbGVzIHRoZSBmdW5kYW1lbnRhbCBhc3BlY3RzIG9mIG5ldHdvcmsgY29tbXVuaWNhdGlvbiwgaGFyZHdhcmUgaW50ZXJhY3Rpb25zLCBhbmQgcG90ZW50aWFsbHkgcmVzb3VyY2UgbWFuYWdlbWVudC4gTXkgbWluZCBuZWVkcyB0byBqdW1wIHRocm91Z2ggdGhlIGxheWVycywgZnJvbSB0aGUgaGFyZHdhcmUgaXRzZWxmIHRvIHRoZSBzb2Z0d2FyZSBpbnRlcmZhY2VzIGFuZCB1cCB0aGUgc3RhY2ssIGFudGljaXBhdGluZyB0aGUgYXJlYXMgdGhhdCBhcmUgbW9zdCBsaWtlbHkgdGhlIHNvdXJjZSBvZiBhbiBpc3N1ZSBpZiB0aGVyZSBpcyBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTFg1X0NPUkUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjY6Y29uZmlnIE1MWDVfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O01lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgY29yZSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0xOT1jb25maWcgTUxYNV9GUEdBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoyOTpjb25maWcgTUxYNV9DT1JFX0VOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7TWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9MTEyPWNvbmZpZyBNTFg1X1RDX1NBTVBMRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEyNTpjb25maWcgTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTI2LVx0Ym9vbCBcJiMzNDtEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MTM3OmNvbmZpZyBNTFg1X0NPUkVfSVBPSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEzOC1cdGJvb2wgXCYjMzQ7TWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoY29ubmVjdFggc2VyaWVzKSBJUG9JQiBvZmZsb2FkcyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5OTkzCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgYEZCTklDYCBDb250ZXh0KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgRkJOSUNgIHRoaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBzcGVjaWZpY2FsbHkgYXJlIHdlIHRhbGtpbmcgYWJvdXQgaGVyZT8gSXMgaXQgYSBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9uLCBhIHNwZWNpZmljYXRpb24gZG9jdW1lbnQsIG9yIGEgZ2VuZXJhbCBjb25jZXB0PyBJIG5lZWQgbW9yZSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBpbnRlbnQuIERlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWNzLCBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGFzcGVjdHMgbGlrZToKCiogICAqKlVuZGVybHlpbmcgTmV0d29yayBUZWNobm9sb2d5OioqIElzIHRoaXMgcmVsYXRlZCB0byBFdGhlcm5ldCwgSW5maW5pQmFuZCwgc29tZXRoaW5nIHByb3ByaWV0YXJ5LCBvciBhIGh5YnJpZCBhcmNoaXRlY3R1cmU/IFVuZGVyc3RhbmRpbmcgdGhlIGZ1bmRhbWVudGFsIG5ldHdvcmsgbGF5ZXIgaXMgY3JpdGljYWwuCiogICAqKlByb3RvY29sIENvbnNpZGVyYXRpb25zOioqIFdoYXQgcHJvdG9jb2xzIGFyZSBpbnRlcmFjdGluZyB3aXRoIGBGQk5JQ2A/IFRDUC9JUCwgUkRNQSwgb3Igc29tZXRoaW5nIGN1c3RvbT8gVGhlIHByb3RvY29sIHN0YWNrIGRpY3RhdGVzIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGFuZCBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXMuCiogICAqKkhhcmR3YXJlIERlcGVuZGVuY2llczoqKiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgTklDIHZlbmRvcj8gV2hhdCBhcmUgdGhlaXIgZmVhdHVyZSBzZXRzIGFuZCBsaW1pdGF0aW9ucz8gVmVuZG9yLXNwZWNpZmljIG9wdGltaXphdGlvbnMgYW5kIGNhcGFiaWxpdGllcyBhcmUgYWx3YXlzIHdvcnRoIGludmVzdGlnYXRpbmcuCiogICAqKlNvZnR3YXJlIFN0YWNrOioqIFdoYXQgc29mdHdhcmUgaXMgaW50ZXJmYWNpbmcgd2l0aCB0aGUgYEZCTklDYD8gT3BlcmF0aW5nIHN5c3RlbSBkcml2ZXJzLCBhcHBsaWNhdGlvbi1sZXZlbCBsaWJyYXJpZXMsIG9yIGEgY3VzdG9tIG1pZGRsZXdhcmUgbGF5ZXI/IFRoZSBzb2Z0d2FyZSBzdGFjayBpbmZsdWVuY2VzIHBlcmZvcm1hbmNlIGFuZCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgdmFyaWFibGVzLgoqICAgKipQZXJmb3JtYW5jZSBNZXRyaWNzOioqIFdoYXQgYXJlIHRoZSBrZXkgcGVyZm9ybWFuY2UgaW5kaWNhdG9ycyAoS1BJcykgcmVsZXZhbnQgdG8gYEZCTklDYCYjMzk7cyBiZWhhdmlvcj8gVGhyb3VnaHB1dCwgbGF0ZW5jeSwgcGFja2V0IGxvc3MsIENQVSB1dGlsaXphdGlvbiwgb3IgYSBjb21iaW5hdGlvbiBvZiB0aGVzZT8gRGV0ZXJtaW5pbmcgd2hhdCB3ZSYjMzk7cmUgbWVhc3VyaW5nIGhlbHBzIGlzb2xhdGUgcHJvYmxlbXMuCiogICAqKkVycm9yIEhhbmRsaW5nOioqIEhvdyBkb2VzIGBGQk5JQ2AgaGFuZGxlIGVycm9yIGNvbmRpdGlvbnM/IERvZXMgaXQgcHJvdmlkZSBzdWZmaWNpZW50IGxvZ2dpbmcgYW5kIGRpYWdub3N0aWNzIGZvciBkZWJ1Z2dpbmc/IFJvYnVzdCBlcnJvciBoYW5kbGluZyBpcyBjcnVjaWFsIGZvciByZWxpYWJsZSBvcGVyYXRpb24uCiogICAqKkNvbmZpZ3VyYXRpb24gYW5kIFR1bmluZzoqKiBBcmUgdGhlcmUgY29uZmlndXJhYmxlIHBhcmFtZXRlcnMgdGhhdCBpbXBhY3QgYEZCTklDYCYjMzk7cyBwZXJmb3JtYW5jZT8gVW5kZXJzdGFuZGluZyB0aGUga25vYnMgYW5kIGRpYWxzIGlzIHZpdGFsIGZvciBvcHRpbWl6YXRpb24uCgpJIG5lZWQgdG8gc2VlIHRoZSBkZXRhaWxzLCBhbmQgZnJvbSB0aGVyZSBJIGNhbiBzdGFydCB0byBkZXZlbG9wIGEgcHJlY2lzZSBhbmFseXNpcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGFyZSBkZWFsaW5nIHdpdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGQk5JQyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MTg9aWYgTkVUX1ZFTkRPUl9NRVRBXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6MjA6Y29uZmlnIEZCTklDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtNZXRhIFBsYXRmb3JtcyBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTMzCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkNoZWNraW5nIGBNSUNST1NPRlRfTUFOQWAqKgoKUmlnaHQsIGxldCYjMzk7cyBzdGFydCBieSBxdWlja2x5IHB1bGxpbmcgdXAgdGhlIGBNSUNST1NPRlRfTUFOQWAgZGF0YS4gSSYjMzk7bSBhc3N1bWluZyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIHByb3ByaWV0YXJ5IGRhdGFzZXQgb3IgaW50ZXJuYWwgbWV0cmljIOKAkyBzb21ldGhpbmcgaGlnaGx5IHJlbGV2YW50IHRvIE1pY3Jvc29mdCYjMzk7cyBwZXJmb3JtYW5jZSwgcG90ZW50aWFsbHkgYSBmaW5hbmNpYWwgbW9kZWwsIGEgY3VzdG9tZXIgZW5nYWdlbWVudCBzY29yZSwgb3Igc29tZSBraW5kIG9mIGludGVybmFsIHByb2R1Y3Rpdml0eSBtZWFzdXJlLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gZW5zdXJpbmcgZGF0YSBpbnRlZ3JpdHkuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgZnJlc2huZXNzIG9mIHRoZSBkYXRhOyB3aGVuIHdhcyB0aGUgbGFzdCB1cGRhdGU/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBmbGFncyDigJMgbWlzc2luZyB2YWx1ZXMsIG91dGxpZXJzLCBvciB1bnVzdWFsIHBhdHRlcm5zIHRoYXQganVtcCBvdXQ/IEkmIzM5O2xsIHByb2JhYmx5IHJ1biBhIHNhbml0eSBjaGVjayBhZ2FpbnN0IGtub3duIGJhc2VsaW5lcyBvciBleHRlcm5hbCBiZW5jaG1hcmtzIGlmIHBvc3NpYmxlLgoKQmV5b25kIHRoYXQsIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLiBXaGF0IGFyZSB0aGUga2V5IHBlcmZvcm1hbmNlIGluZGljYXRvcnMgKEtQSXMpIHRoaXMgYE1JQ1JPU09GVF9NQU5BYCBpcyBtZWFudCB0byByZWZsZWN0PyBJcyBpdCBhbGlnbmVkIHdpdGggY3VycmVudCBzdHJhdGVnaWMgcHJpb3JpdGllcywgb3IgaGFzIGl0IGRpdmVyZ2VkPyBNeSBtaW5kIGlzIGFscmVhZHkgcnVubmluZyBzY2VuYXJpb3M6IElmIGl0JiMzOTtzIHRyZW5kaW5nIHVwd2FyZHMsIHdoYXQgYXJlIHRoZSBjb250cmlidXRpbmcgZmFjdG9ycz8gSXMgaXQgc3VzdGFpbmFibGU/IElmIGl0JiMzOTtzIGRvd24sIGFyZSB0aGVyZSBzcGVjaWZpYyBhcmVhcyBvZiBjb25jZXJuIOKAkyBhIGdlb2dyYXBoaWNhbCByZWdpb24sIGEgcHJvZHVjdCBsaW5lLCBhIGN1c3RvbWVyIHNlZ21lbnQ/IEkmIzM5O2xsIGJlIGZvcm1pbmcgaHlwb3RoZXNlcyBhYm91dCBwb3RlbnRpYWwgY2F1c2VzLiBJJiMzOTtsbCBsaWtlbHkgbWVudGFsbHkgY2F0ZWdvcml6ZSB0aGUgZGF0YSDigJMgc2VnbWVudGluZyBpdCwgbG9va2luZyBmb3IgY29ycmVsYXRpb25zLCB0cnlpbmcgdG8gZmlsdGVyIGZvciBzcGVjaWZpYyB2aWV3cyBvZiB0aGUgdW5kZXJseWluZyBkYXRhLiBUaGlzIHdpbGwgaW5jbHVkZSBpZGVudGlmeWluZyB0aGUga2V5IGRlcGVuZGVuY2llcyBvZiB0aGUgZGF0YSwgdGhlIGFzc3VtcHRpb25zIHVzZWQgaW4gdGhlIGRlc2lnbiwgYW5kIGFueSBhc3NvY2lhdGVkIGJpYXNlcy4KClVsdGltYXRlbHksIG15IGdvYWwgaGVyZSBpc24mIzM5O3QganVzdCB0byAqc2VlKiB0aGUgZGF0YSwgYnV0IHRvIGdhaW4gYWN0aW9uYWJsZSBpbnNpZ2h0cy4gSG93IGNhbiB0aGlzIGluZm9ybWF0aW9uIGJlIHRyYW5zbGF0ZWQgaW50byBjb25jcmV0ZSByZWNvbW1lbmRhdGlvbnMsIGFkanVzdG1lbnRzIHRvIHN0cmF0ZWd5LCBvciBpbW1lZGlhdGUgaW50ZXJ2ZW50aW9ucywgaWYgbmVjZXNzYXJ5PyBUaGlzIGluaXRpYWwgY2hlY2sgaXMgYSByYXBpZCBhc3Nlc3NtZW50LCBhIGp1bXBpbmctb2ZmIHBvaW50IGZvciBkZWVwZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1JQ1JPU09GVF9NQU5BJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjE4OmNvbmZpZyBNSUNST1NPRlRfTUFOQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMDU2CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgYE5FVF9TSEFQRVJgKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gYE5FVF9TSEFQRVJgLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY3J1Y2lhbCwgYXMgdGhpcyBjb21wb25lbnQgaXMgdGhlIGxpbmNocGluIGZvciB0aGlzIHN5c3RlbSYjMzk7cyBuZXR3b3JrIHRyYWZmaWMgbWFuYWdlbWVudC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBjb25maXJtaW5nIHRoYXQgaXQgaXMgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQsIGNoZWNraW5nIGZvciB0aGUgbW9zdCBvYnZpb3VzIGluZGljYXRvcnMgZmlyc3QsIGxpa2Ugb3ZlcmFsbCByZXNvdXJjZSBjb25zdW1wdGlvbiBhbmQgbG9ncywgd2hpY2gsIGZyb20gZXhwZXJpZW5jZSwgdXN1YWxseSByZXZlYWwgdGhlIG1vc3QgY29tbW9uIGlzc3VlcyByaWdodCBhd2F5LiBBcmUgdGhlcmUgYW55IGFub21hbG91cyBzcGlrZXMgaW4gQ1BVIHVzYWdlLCBvciBhbnkgdW51c3VhbCBkZWxheXM/IEFuZCB3aGF0IGRvIHRoZSBlcnJvciBsb2dzIHRlbGwgdXM/IEZyb20gdGhlcmUsIEkmIzM5O2xsIG5lZWQgdG8gZHJpbGwgZG93biBhbmQgYW5hbHl6ZSBpdHMgY29uZmlndXJhdGlvbiDigJMgc3BlY2lmaWNhbGx5LCBob3cgaXTigJlzIGhhbmRsaW5nIHJhdGUgbGltaXRpbmcsIHRyYWZmaWMgcHJpb3JpdGl6YXRpb24sIGFuZCBhbnkgc2hhcGluZyBydWxlcyB0aGF0IGhhdmUgYmVlbiBlc3RhYmxpc2hlZC4gS25vd2luZyB3aGF0IGl0cyBiYXNlbGluZSBvcGVyYXRpb24gbG9va3MgbGlrZSBpcyBjcml0aWNhbCBiZWZvcmUgdHJvdWJsZXNob290aW5nIGl0IG9yIGltcHJvdmluZyBpdC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoZXJlIHRoZSBib3R0bGVuZWNrIG1pZ2h0IGFjdHVhbGx5IGJlLiBJcyBpdCBhIG1pc2NvbmZpZ3VyYXRpb24sIG9yIHNvbWV0aGluZyBtb3JlIGZ1bmRhbWVudGFsIHdpdGggdGhlIHVuZGVybHlpbmcgbmV0d29yayBpbmZyYXN0cnVjdHVyZT8gSSYjMzk7bGwgcHJvYmFibHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBgTkVUX1NIQVBFUmAgb3V0cHV0IHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtIG1vbml0b3JpbmcgdG8gY29ycmVsYXRlIGl0cyBiZWhhdmlvciB3aXRoIHRoZSByZXN0IG9mIHRoZSBzdGFjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TSEFQRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9Njk9Y29uZmlnIE5FVF9ERVZNRU1cbi0tXG5uZXQvS2NvbmZpZy03NC1cbm5ldC9LY29uZmlnOjc1OmNvbmZpZyBORVRfU0hBUEVSXG5uZXQvS2NvbmZpZy03Ni1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEzOTkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA2ODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJiMzOTttIG5vdGluZyB0aGUgY29yZSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZDogYEdWRWAsIGBJQVZGYCwgYE1MWDVfQ09SRWAsIGBNTFg1X0NPUkVfRU5gLCBgTUxYNV9DT1JFX0lQT0lCYCwgYEZCTklDYCwgYE1JQ1JPU09GVF9NQU5BYCwgYW5kIGBORVRfU0hBUEVSYC4gSXQmIzM5O3MgYSBzdGFuZGFyZCBsaXN0IGZvciB0aGlzIHR5cGUgb2Ygc3lzdGVtLgoKVGhlbiwgdGhlIGZvY3VzIHRpZ2h0ZW5zLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgYWx0ZXJzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jYC4gVGhpcyBtZWFucyBgTUxYNV9DT1JFX0lQT0lCYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50LiBUaGUgZGlmZiBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZSBgLm9wX25lZWRzX3J0bmxgIGZpZWxkLiBUaGlzIGNsZWFybHkgaW1wbGllcyBhIGRlcGVuZGVuY3kgb3IgbW9kaWZpY2F0aW9uIHdpdGhpbiB0aGUgSVBPSUIgZXRodG9vbCBvcGVyYXRpb25zLiBUaHVzLCBgTUxYNV9DT1JFX0lQT0lCYCBpcyBlc3NlbnRpYWwuCgpOb3csIEkgbmVlZCB0byBjaGVjayBmb3IgYSBzaW1pbGFyIHNpdHVhdGlvbiB3aXRoIGBlbl9yZXAuY2AsIHNvIEkmIzM5O2xsIHNlZSBpZiBgTUxYNV9DT1JFX0VOX1JFUGAgb3IgYW55IHJlbGF0ZWQgY29uZmlnIGlzIHByZXNlbnQuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiDigJMgY2hlY2tpbmcgZm9yIG90aGVyIGRyaXZlcnMgb3IgbW9kdWxlcyB0aGF0IG1pZ2h0IGJlIGltcGxpY2F0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VuX3JlcC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT00Mj1tbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FU1dJVENIKSAgICAgJiM0Mzs9IGxhZy9tcC5vIGxhZy9wb3J0X3NlbC5vIGxpYi9nZW5ldmUubyBsaWIvcG9ydF90dW4ubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjQzOlx0XHRcdFx0XHRlbl9yZXAubyBlbi9yZXAvYm9uZC5vIGVuL21vZF9oZHIubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTQ0LVx0XHRcdFx0XHRlbi9tYXBwaW5nLm8gbGFnL21wZXN3Lm8gbGFnL3NoYXJlZF9mZGIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjUzNAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZXZpZXdpbmcgdGhpcyBpbmZvcm1hdGlvbjoKCioqQW5hbHl6aW5nIE5ldHdvcmsgRGV2aWNlIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgYENPTkZJR19NTFg1X0VTV0lUQ0hgIGhpZ2hsaWdodGVkLiBSaWdodCwgZ290IGl0LiBUaGVuLCBJJiMzOTttIHByZXNlbnRlZCB3aXRoIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uczogYEdWRWAsIGBJQVZGYCwgYE1MWDVfQ09SRWAsIGBNTFg1X0NPUkVfRU5gLCBgTUxYNV9DT1JFX0lQT0lCYCwgYE1MWDVfRVNXSVRDSGAsIGBGQk5JQ2AsIGBNSUNST1NPRlRfTUFOQWAsIGFuZCBgTkVUX1NIQVBFUmAuIFNlZW1zIGxpa2UgYSByZWxldmFudCBncm91cGluZyBvZiBuZXR3b3JrLXJlbGF0ZWQga2VybmVsIGNvbmZpZ3MuCgpOb3csIGEgc21hbGwgYnV0IGltcG9ydGFudCBkZXRhaWwgY2F0Y2hlcyBteSBhdHRlbnRpb24uIEkgcmVtZW1iZXIgdGhhdCBgTkVUX1NIQVBFUmAgaXMgYSBib29sZWFuLiBUaGF0IHN1Z2dlc3RzIGl0IGNvdWxkIGJlIGluZmx1ZW5jZWQgb3Igc2VsZWN0ZWQgYnkgYW5vdGhlciBjb25maWcuIFJlZ2FyZGxlc3MsIGl0JiMzOTtzIHN0aWxsIHdvcnRoIGxpc3RpbmcgaXQgaGVyZSwgc2luY2UgaXQmIzM5O3MgcHJlc2VudC4KCkkgaGF2ZSBhIHN1c3BpY2lvbiB0byBjaGVjay4gTG9va2luZyBjbG9zZXIsIEkgcmVjYWxsIHRoYXQgYm90aCBgSUFWRmAgYW5kIGBNSUNST1NPRlRfTUFOQWAgdXRpbGl6ZSBgbmV0X3NoYXBlcl9vcHNgIGluIHRoZWlyIGNvZGUuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaW4gbXkgbWluZCBpcywgZG8gdGhleSBhY3R1YWxseSAqc2VsZWN0KiBgTkVUX1NIQVBFUmA/IEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZWlyIGRlcGVuZGVuY2llcyB0byBiZSBjZXJ0YWluLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGlkZW50aWZ5IHRoZSBzZWxlY3RvciB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb25maWcmIzM5O3MgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVUX1NIQVBFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTEtXHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnOjYxMjpcdHNlbGVjdCBORVRfU0hBUEVSXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTI2Mj1jb25maWcgSUFWRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjY1LVx0c2VsZWN0IExJQklFX0FETUlOUVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyNjY6XHRzZWxlY3QgTkVUX1NIQVBFUlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yNjctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTg9Y29uZmlnIE1JQ1JPU09GVF9NQU5BXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjQtXHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyNTpcdHNlbGVjdCBORVRfU0hBUEVSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yNi1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMyNDgKCQkJCQkJCW91dHB1dDogMjk0CgkJCQkJCQl0aG91Z2h0czogNjQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3k6IFRhcmdldGluZyB0aGUgRXRodG9vbCBMaW5rIFN0YXRlIFJldHJpZXZhbCBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIHRoZSB1c2VyJiMzOTtzIGZvY3VzIGlzIG9uIGRyaXZlcnMgd2hpY2ggaGF2ZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIGFuZCB0aGUgbG9ja2luZyBidWcgaXMgc3BlY2lmaWNhbGx5IGNlbnRlcmVkIGFyb3VuZCB0aGUgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCB3aXRob3V0IHRoZSBuZWNlc3NhcnkgYHJ0bmxfbG9ja2AuIFBlcmZlY3QuIFRoaXMgZ2l2ZXMgbWUgYSBjbGVhciB0YXJnZXQuIFdlJiMzOTtyZSBub3Qgc3RyaWN0bHkgKnJlcXVpcmVkKiB0byBsaXN0IGBORVRfU0hBUEVSYCwgYnV0IGluY2x1ZGluZyBpdCB3b24mIzM5O3QgaHVydC4KCkxldCBtZSBicmVhayBkb3duIG15IHRoaW5raW5nIG9uIHRoZSBmdXp6aW5nIGFwcHJvYWNoOgoKRmlyc3QsIEkgbmVlZCB0byByZXZpZXcgdGhlIGBGb2N1c1N5bWJvbHNgLiBUaGVyZSBhcmUgYSBmZXcgcG90ZW50aWFsbHkgcmVsZXZhbnQgZW50cnkgcG9pbnRzOiBgZXRodG9vbF9vcF9nZXRfbGlua2AsIGBldGhubF9kZWZhdWx0X2RvaXRgLCBgZXRobmxfZGVmYXVsdF9kdW1wX29uZWAsIGFuZCBgX19kZXZfZXRodG9vbGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIGRpcmVjdGx5IGFmZmVjdGVkIGJ5IHRoZSBsb2NrLiBIb3dldmVyLCBgZXRodG9vbF9vcF9nZXRfbGlua2Agc3RhbmRzIG91dC4gSXQmIzM5O3MgdXNlZCBieSBhIGxhcmdlIG51bWJlciBvZiBkcml2ZXJzLCBzbyBmdXp6aW5nIGl0IGNvdWxkIHBvdGVudGlhbGx5IHVuY292ZXIgaXNzdWVzIGluIG90aGVyIGRyaXZlcnMsIHRvby4gQW5kIGluIHRoaXMgY2FzZSwgdGhhdCYjMzk7cyBleGFjdGx5IHdoYXQgd2Ugd2FudC4KClRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgdGhpcyBidWcgYXJpc2VzIGJlY2F1c2UgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgICppdHNlbGYqIGlzIG5vdCBjb3JyZWN0bHkgYWNxdWlyaW5nIHRoZSBgcnRubF9sb2NrYCAqZm9yIHRoZSBzcGVjaWZpYyBzdWJzZXQgb2YgZHJpdmVycyogdGhhdCB1c2UgYG5ldGRldl9uZWVkX29wc19sb2NrYC4gVGhlIGZ1bmN0aW9uIGNhbGxzIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAsIHdoaWNoLCBpbiB0dXJuLCBjYW4gdHJpZ2dlciBgZGV2X2FjdGl2YXRlYCBhbmQgdXNlIGBydG5sX2RlcmVmZXJlbmNlYCwgcmVxdWlyaW5nIHRoZSBsb2NrLiBUaGUgcGF0Y2ggaXRzZWxmIGFkZHJlc3NlcyB0aGlzIGJ5IGFkZGluZyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCB0byB0aG9zZSBkcml2ZXJzJiMzOTsgZXRodG9vbCBvcHMuIFRoaXMgaXMgYSBkZWxpYmVyYXRlIGNoYW5nZSBpbiBsb2NraW5nIGJlaGF2aW9yIHRoYXQgSSAqbXVzdCogZnV6eiB0byB2ZXJpZnkgdGhhdCBpdCBkb2VzIG5vdCBjYXVzZSBhbnkgbmV3IGRlYWRsb2NrcyBvciBSQ1Ugd2FybmluZ3MuCgpJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGFmZmVjdGVkIGRyaXZlcnMgc3BlY2lmaWNhbGx5OiBgR1ZFYCwgYElBVkZgLCBgTUxYNV9DT1JFYCwgYE1MWDVfQ09SRV9FTmAsIGBNTFg1X0NPUkVfSVBPSUJgLCBgTUxYNV9FU1dJVENIYCwgYEZCTklDYCwgYW5kIGBNSUNST1NPRlRfTUFOQWAuCgpJIHdpbGwgaW5jbHVkZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgYW5kIGBldGhubF9kZWZhdWx0X2RvaXRgIHNpbmNlIHRoZXkgYXJlIHRoZSBtYWluIGVudHJ5IHBvaW50cywgYnV0IHRoZSBwcmltYXJ5IHRhcmdldCBzaG91bGQgYWJzb2x1dGVseSBiZSBgZXRodG9vbF9vcF9nZXRfbGlua2AuIEl0JiMzOTtzIHRoZSBjZW50cmFsIGZ1bmN0aW9uIGludm9sdmVkIGluIHRoZSB2dWxuZXJhYmlsaXR5LiBgZXRobmxfZGVmYXVsdF9kb2l0YCBhbmQgYGV0aG5sX2RlZmF1bHRfZHVtcF9vbmVgIGFyZSBnZW5lcmljIG5ldGxpbmsgaGFuZGxlcnMgYW5kIGFyZSBsZXNzIGRpcmVjdGx5IGltcGxpY2F0ZWQuIGBfX2Rldl9ldGh0b29sYCBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiBhbmQgbGVzcyBpbXBvcnRhbnQgZm9yIGZ1enppbmcgcHVycG9zZXMuIEkmIzM5O3ZlIGRvdWJsZS1jaGVja2VkIHRoYXQgaW5saW5lIGZ1bmN0aW9ucyBsaWtlIGBldGh0b29sX25sX21zZ19uZWVkc19ydG5sYCBhbmQgYGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubGAgd29uJiMzOTt0IGJlIGZ1enplZCBkaXJlY3RseS4KClRoZXJlZm9yZSwgbXkgc3RyYXRlZ3kgaXMgY2xlYXI6IHRhcmdldCBgZXRodG9vbF9vcF9nZXRfbGlua2Agd2l0aCBhIGZvY3VzIG9uIHRoZSBsaXN0ZWQgY29uZmlndXJhdGlvbnMgYW5kIGFpbSB0byBpbmR1Y2UgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBsb2NraW5nIHRvIHRyaWdnZXIgYW55IHJlc3VsdGluZyBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVkUmIzM0OywKICAgICYjMzQ7SUFWRiYjMzQ7LAogICAgJiMzNDtNTFg1X0NPUkUmIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFX0VOJiMzNDssCiAgICAmIzM0O01MWDVfQ09SRV9JUE9JQiYjMzQ7LAogICAgJiMzNDtNTFg1X0VTV0lUQ0gmIzM0OywKICAgICYjMzQ7RkJOSUMmIzM0OywKICAgICYjMzQ7TUlDUk9TT0ZUX01BTkEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtldGh0b29sX29wX2dldF9saW5rJiMzNDssCiAgICAmIzM0O2V0aG5sX2RlZmF1bHRfZG9pdCYjMzQ7LAogICAgJiMzNDtfX2Rldl9ldGh0b29sJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9ja2luZyBpc3N1ZSB3aGVyZSBgZXRodG9vbF9vcF9nZXRfbGlua2Agd2FzIGNhbGxlZCB3aXRob3V0IGBydG5sX2xvY2tgIGZvciBkcml2ZXJzIHRoYXQgdXNlIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgKGUuZy4gZ3ZlLCBpYXZmLCBtbHg1LCBmYm5pYywgbWFuYSkuIGBldGh0b29sX29wX2dldF9saW5rYCBjYWxscyBgX19saW5rd2F0Y2hfc3luY19kZXZgIHdoaWNoIHJlcXVpcmVzIGBydG5sX2xvY2tgIGJlY2F1c2UgaXQgY2FuIHRyaWdnZXIgYGRldl9hY3RpdmF0ZWAgYW5kIHVzZSBgcnRubF9kZXJlZmVyZW5jZWAuIFRoZSBwYXRjaCBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZXNlIGRyaXZlcnMmIzM5OyBldGh0b29sIG9wcyB0byBlbnN1cmUgYHJ0bmxfbG9ja2AgaXMgdGFrZW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBsb2NraW5nIGJlaGF2aW9yIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byB2ZXJpZnkgbm8gZGVhZGxvY2tzIG9yIFJDVSB3YXJuaW5ncyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1ZFJiMzNDssCiAgICAmIzM0O0lBVkYmIzM0OywKICAgICYjMzQ7TUxYNV9DT1JFJiMzNDssCiAgICAmIzM0O01MWDVfQ09SRV9FTiYjMzQ7LAogICAgJiMzNDtNTFg1X0NPUkVfSVBPSUImIzM0OywKICAgICYjMzQ7TUxYNV9FU1dJVENIJiMzNDssCiAgICAmIzM0O0ZCTklDJiMzNDssCiAgICAmIzM0O01JQ1JPU09GVF9NQU5BJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXRodG9vbF9vcF9nZXRfbGluayYjMzQ7LAogICAgJiMzNDtldGhubF9kZWZhdWx0X2RvaXQmIzM0OywKICAgICYjMzQ7X19kZXZfZXRodG9vbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvY2tpbmcgaXNzdWUgd2hlcmUgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIHdhcyBjYWxsZWQgd2l0aG91dCBgcnRubF9sb2NrYCBmb3IgZHJpdmVycyB0aGF0IHVzZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIChlLmcuIGd2ZSwgaWF2ZiwgbWx4NSwgZmJuaWMsIG1hbmEpLiBgZXRodG9vbF9vcF9nZXRfbGlua2AgY2FsbHMgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCB3aGljaCByZXF1aXJlcyBgcnRubF9sb2NrYCBiZWNhdXNlIGl0IGNhbiB0cmlnZ2VyIGBkZXZfYWN0aXZhdGVgIGFuZCB1c2UgYHJ0bmxfZGVyZWZlcmVuY2VgLiBUaGUgcGF0Y2ggYWRkcyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCB0byB0aGVzZSBkcml2ZXJzJiMzOTsgZXRodG9vbCBvcHMgdG8gZW5zdXJlIGBydG5sX2xvY2tgIGlzIHRha2VuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbG9ja2luZyBiZWhhdmlvciB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gdmVyaWZ5IG5vIGRlYWRsb2NrcyBvciBSQ1Ugd2FybmluZ3Mgb2NjdXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozODowNC4wMjUwMzkxMjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTgzMTU1ODYzNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1ZFXCIsXG4gICAgXCJJQVZGXCIsXG4gICAgXCJNTFg1X0NPUkVcIixcbiAgICBcIk1MWDVfQ09SRV9FTlwiLFxuICAgIFwiTUxYNV9DT1JFX0lQT0lCXCIsXG4gICAgXCJNTFg1X0VTV0lUQ0hcIixcbiAgICBcIkZCTklDXCIsXG4gICAgXCJNSUNST1NPRlRfTUFOQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV0aHRvb2xfb3BfZ2V0X2xpbmtcIixcbiAgICBcImV0aG5sX2RlZmF1bHRfZG9pdFwiLFxuICAgIFwiX19kZXZfZXRodG9vbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9ja2luZyBpc3N1ZSB3aGVyZSBgZXRodG9vbF9vcF9nZXRfbGlua2Agd2FzIGNhbGxlZCB3aXRob3V0IGBydG5sX2xvY2tgIGZvciBkcml2ZXJzIHRoYXQgdXNlIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgKGUuZy4gZ3ZlLCBpYXZmLCBtbHg1LCBmYm5pYywgbWFuYSkuIGBldGh0b29sX29wX2dldF9saW5rYCBjYWxscyBgX19saW5rd2F0Y2hfc3luY19kZXZgIHdoaWNoIHJlcXVpcmVzIGBydG5sX2xvY2tgIGJlY2F1c2UgaXQgY2FuIHRyaWdnZXIgYGRldl9hY3RpdmF0ZWAgYW5kIHVzZSBgcnRubF9kZXJlZmVyZW5jZWAuIFRoZSBwYXRjaCBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZXNlIGRyaXZlcnMnIGV0aHRvb2wgb3BzIHRvIGVuc3VyZSBgcnRubF9sb2NrYCBpcyB0YWtlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGxvY2tpbmcgYmVoYXZpb3IgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIHZlcmlmeSBubyBkZWFkbG9ja3Mgb3IgUkNVIHdhcm5pbmdzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozODowNC4wMjUwNDk1NzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTI0MDg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDIxNTI1NzYwZDU0MjMzNjk1Y2Y0Y2M5YmY5MzA2MmVlYmNiM2VmZjdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTk6Mzg6MDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jXFxuaW5kZXggN2NjMjI5MTY4NTJmYjYuLjgxOTk3MzhiYTk3OWVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xcbkBAIC05ODQsNyArOTg0LDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGd2ZV9ldGh0b29sX29wcyA9IHtcXG4gXFx0LnN1cHBvcnRlZF9yaW5nX3BhcmFtcyA9IEVUSFRPT0xfUklOR19VU0VfVENQX0RBVEFfU1BMSVQgfFxcbiBcXHRcXHRcXHRcXHQgRVRIVE9PTF9SSU5HX1VTRV9SWF9CVUZfTEVOLFxcbiBcXHQub3BfbmVlZHNfcnRubCA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxcbi1cXHRcXHRcXHQgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sXFxuK1xcdFxcdFxcdCBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8XFxuK1xcdFxcdFxcdCBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXFxuIFxcdC5nZXRfZHJ2aW5mbyA9IGd2ZV9nZXRfZHJ2aW5mbyxcXG4gXFx0LmdldF9zdHJpbmdzID0gZ3ZlX2dldF9zdHJpbmdzLFxcbiBcXHQuZ2V0X3NzZXRfY291bnQgPSBndmVfZ2V0X3NzZXRfY291bnQsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jXFxuaW5kZXggYTYxNWQ1OTliODhlZTQuLmU3Y2YxMmVhYTI2ODkwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jXFxuQEAgLTE4NTUsNiArMTg1NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaWF2Zl9ldGh0b29sX29wcyA9IHtcXG4gXFx0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1VTRUNTIHxcXG4gXFx0XFx0XFx0XFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRSxcXG4gXFx0LnN1cHBvcnRlZF9pbnB1dF94ZnJtXFx0PSBSWEhfWEZSTV9TWU1fWE9SLFxcbitcXHQub3BfbmVlZHNfcnRubFxcdFxcdD0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLFxcbiBcXHQuZ2V0X2RydmluZm9cXHRcXHQ9IGlhdmZfZ2V0X2RydmluZm8sXFxuIFxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG4gXFx0LmdldF9yaW5ncGFyYW1cXHRcXHQ9IGlhdmZfZ2V0X3JpbmdwYXJhbSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmNcXG5pbmRleCAyZjViNjI2YmEzM2ZlNS4uMTEyOTI2ZDA3NjM0ZDcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmNcXG5AQCAtMjcyMSw3ICsyNzIxLDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVlX2V0aHRvb2xfb3BzID0ge1xcbiBcXHQucnhmaF9tYXhfbnVtX2NvbnRleHRzXFx0PSBNTFg1RV9NQVhfTlVNX1JTUyxcXG4gXFx0Lm9wX25lZWRzX3J0bmxcXHRcXHQ9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxcbiBcXHRcXHRcXHRcXHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcXG4tXFx0XFx0XFx0XFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfU1BGTEFHUyxcXG4rXFx0XFx0XFx0XFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfU1BGTEFHUyB8XFxuK1xcdFxcdFxcdFxcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLFxcbiBcXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MgfFxcbiBcXHRcXHRcXHRcXHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfTUFYX0ZSQU1FUyB8XFxuIFxcdFxcdFxcdFxcdCAgICAgRVRIVE9PTF9DT0FMRVNDRV9VU0VfQURBUFRJVkUgfFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcXG5pbmRleCAxYThhMTlmOTgwZDMzNS4uYzhiNzZkMzAxYzkyY2YgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXFxuQEAgLTQxOSw3ICs0MTksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVlX3JlcF9ldGh0b29sX29wcyA9IHtcXG4gXFx0XFx0XFx0XFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX01BWF9GUkFNRVMgfFxcbiBcXHRcXHRcXHRcXHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFLFxcbiBcXHQub3BfbmVlZHNfcnRubFxcdCAgID0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XFxuLVxcdFxcdFxcdCAgICAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sXFxuK1xcdFxcdFxcdCAgICAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0gfFxcbitcXHRcXHRcXHQgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcXG4gXFx0LmdldF9kcnZpbmZvXFx0ICAgPSBtbHg1ZV9yZXBfZ2V0X2RydmluZm8sXFxuIFxcdC5nZXRfbGlua1xcdCAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG4gXFx0LmdldF9zdHJpbmdzICAgICAgID0gbWx4NWVfcmVwX2dldF9zdHJpbmdzLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2V0aHRvb2wuY1xcbmluZGV4IDliM2IzMjQwOGM2NGI3Li4wMWRkYzNkZWY5YWMwNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2V0aHRvb2wuY1xcbkBAIC0yODYsNyArMjg2LDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVpX2V0aHRvb2xfb3BzID0ge1xcbiBcXHRcXHRcXHRcXHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfTUFYX0ZSQU1FUyB8XFxuIFxcdFxcdFxcdFxcdCAgICAgRVRIVE9PTF9DT0FMRVNDRV9VU0VfQURBUFRJVkUsXFxuIFxcdC5vcF9uZWVkc19ydG5sXFx0ICAgID0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XFxuLVxcdFxcdFxcdCAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNLFxcbitcXHRcXHRcXHQgICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSB8XFxuK1xcdFxcdFxcdCAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcXG4gXFx0LmdldF9kcnZpbmZvICAgICAgICA9IG1seDVpX2dldF9kcnZpbmZvLFxcbiBcXHQuZ2V0X3N0cmluZ3MgICAgICAgID0gbWx4NWlfZ2V0X3N0cmluZ3MsXFxuIFxcdC5nZXRfc3NldF9jb3VudCAgICAgPSBtbHg1aV9nZXRfc3NldF9jb3VudCxcXG5AQCAtMzA5LDYgKzMxMCw3IEBAIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1aV9ldGh0b29sX29wcyA9IHtcXG4gfTtcXG4gXFxuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1aV9wa2V5X2V0aHRvb2xfb3BzID0ge1xcbitcXHQub3BfbmVlZHNfcnRubFxcdCAgICA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcXG4gXFx0LmdldF9kcnZpbmZvICAgICAgICA9IG1seDVpX2dldF9kcnZpbmZvLFxcbiBcXHQuZ2V0X2xpbmsgICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG4gXFx0LmdldF90c19pbmZvICAgICAgICA9IG1seDVpX2dldF90c19pbmZvLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jXFxuaW5kZXggY2IzNGZjMTY2ZWY5NjguLjBlNDcwODhlYzQ0YmFmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19ldGh0b29sLmNcXG5AQCAtMjAyNCw3ICsyMDI0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmYm5pY19ldGh0b29sX29wcyA9IHtcXG4gXFx0XFx0XFx0XFx0XFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfR1BBVVNFUEFSQU0gfFxcbiBcXHRcXHRcXHRcXHRcXHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEFVU0VQQVJBTSB8XFxuIFxcdFxcdFxcdFxcdFxcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XFxuLVxcdFxcdFxcdFxcdFxcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sXFxuK1xcdFxcdFxcdFxcdFxcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0gfFxcbitcXHRcXHRcXHRcXHRcXHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcXG4gXFx0LmdldF9kcnZpbmZvXFx0XFx0XFx0PSBmYm5pY19nZXRfZHJ2aW5mbyxcXG4gXFx0LmdldF9yZWdzX2xlblxcdFxcdFxcdD0gZmJuaWNfZ2V0X3JlZ3NfbGVuLFxcbiBcXHQuZ2V0X3JlZ3NcXHRcXHRcXHQ9IGZibmljX2dldF9yZWdzLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXFxuaW5kZXggOTRlNjU4ZDA3YTI3ZTguLjg4MWRmNTk3ZDdmOWM3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcXG5AQCAtNTk3LDcgKzU5Nyw4IEBAIHN0YXRpYyBpbnQgbWFuYV9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtYW5hX2V0aHRvb2xfb3BzID0ge1xcbiBcXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfUlhfQ1FFX0ZSQU1FUyxcXG4gXFx0Lm9wX25lZWRzX3J0bmxcXHRcXHQ9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxcbi1cXHRcXHRcXHRcXHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNLFxcbitcXHRcXHRcXHRcXHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcXG4rXFx0XFx0XFx0XFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXFxuIFxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gbWFuYV9nZXRfZXRodG9vbF9zdGF0cyxcXG4gXFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSBtYW5hX2dldF9zc2V0X2NvdW50LFxcbiBcXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IG1hbmFfZ2V0X3N0cmluZ3MsXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcXG5pbmRleCAxYjgzNGUyYTUyMmVjNS4uNWQ0OTFhOTgyNjVlZjkgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxcbkBAIC05NDIsNiArOTQyLDcgQEAgc3RydWN0IGtlcm5lbF9ldGh0b29sX3RzX2luZm8ge1xcbiAjZGVmaW5lIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HUEFVU0VQQVJBTVxcdEJJVCg1KVxcbiAjZGVmaW5lIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEFVU0VQQVJBTVxcdEJJVCg2KVxcbiAjZGVmaW5lIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9SU1NcXHRcXHRCSVQoNylcXG4rI2RlZmluZSBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktcXHRcXHRCSVQoOClcXG4gXFxuIC8qKlxcbiAgKiBzdHJ1Y3QgZXRodG9vbF9vcHMgLSBvcHRpb25hbCBuZXRkZXYgb3BlcmF0aW9uc1xcbkBAIC05NzgsNiArOTc5LDcgQEAgc3RydWN0IGtlcm5lbF9ldGh0b29sX3RzX2luZm8ge1xcbiAgKlxcdCAtIHBoeWxpbmsgaGVscGVycyAobm90ZSB0aGF0IHBoeWRldiBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQhKVxcbiAgKlxcdCAtIG5ldGRldl91cGRhdGVfZmVhdHVyZXMoKVxcbiAgKlxcdCAtIG5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMoKVxcbisgKlxcdCAtIGV0aHRvb2xfb3BfZ2V0X2xpbmsoKSAoc3luY3MgbGluayB3YXRjaCB1bmRlciBydG5sX2xvY2spXFxuICAqXFxuICAqIEBnZXRfZHJ2aW5mbzogUmVwb3J0IGRyaXZlci9kZXZpY2UgaW5mb3JtYXRpb24uIE1vZGVybiBkcml2ZXJzIG5vXFxuICAqXFx0bG9uZ2VyIGhhdmUgdG8gaW1wbGVtZW50IHRoaXMgY2FsbGJhY2suIE1vc3QgZmllbGRzIGFyZVxcbmRpZmYgLS1naXQgYS9uZXQvZXRodG9vbC9jb21tb24uaCBiL25ldC9ldGh0b29sL2NvbW1vbi5oXFxuaW5kZXggMmIzODQ3ZjAwODAxODMuLjRlNTM1NmUyNmY0MDBhIDEwMDY0NFxcbi0tLSBhL25ldC9ldGh0b29sL2NvbW1vbi5oXFxuKysrIGIvbmV0L2V0aHRvb2wvY29tbW9uLmhcXG5AQCAtMTEzLDYgKzExMyw4IEBAIGV0aHRvb2xfbmxfbXNnX25lZWRzX3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggY21kKVxcbiBcXHRcXHRyZXR1cm4gb3BzLVxcdTAwM2VvcF9uZWVkc19ydG5sIFxcdTAwMjYgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQQVVTRVBBUkFNO1xcbiBcXHRjYXNlIEVUSFRPT0xfTVNHX1JTU19TRVQ6XFxuIFxcdFxcdHJldHVybiBvcHMtXFx1MDAzZW9wX25lZWRzX3J0bmwgXFx1MDAyNiBFVEhUT09MX09QX05FRURTX1JUTkxfUlNTO1xcbitcXHRjYXNlIEVUSFRPT0xfTVNHX0xJTktTVEFURV9HRVQ6XFxuK1xcdFxcdHJldHVybiBvcHMtXFx1MDAzZW9wX25lZWRzX3J0bmwgXFx1MDAyNiBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTks7XFxuIFxcdGNhc2UgRVRIVE9PTF9NU0dfVFNDT05GSUdfR0VUOlxcbiBcXHRjYXNlIEVUSFRPT0xfTVNHX1RTQ09ORklHX1NFVDpcXG4gXFx0XFx0LyogdHNjb25maWcgY2FsbHMgbmRvcyAobmRvX2h3dHN0YW1wX3NldC9nZXQpLCBub3QgZXRodG9vbCBvcHMuXFxuQEAgLTE1OSw2ICsxNjEsOCBAQCBldGh0b29sX2lvY3RsX25lZWRzX3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIGV0aGNtZClcXG4gXFx0Y2FzZSBFVEhUT09MX1NSWEZIOlxcbiBcXHRjYXNlIEVUSFRPT0xfU1JYRkhJTkRJUjpcXG4gXFx0XFx0cmV0dXJuIG9wcy1cXHUwMDNlb3BfbmVlZHNfcnRubCBcXHUwMDI2IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9SU1M7XFxuK1xcdGNhc2UgRVRIVE9PTF9HTElOSzpcXG4rXFx0XFx0cmV0dXJuIG9wcy1cXHUwMDNlb3BfbmVlZHNfcnRubCBcXHUwMDI2IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSztcXG4gXFx0fVxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MDQuNjI3MTczNTg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTc3MTM0NDMwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1ZFXCIsXG4gICAgXCJJQVZGXCIsXG4gICAgXCJNTFg1X0NPUkVcIixcbiAgICBcIk1MWDVfQ09SRV9FTlwiLFxuICAgIFwiTUxYNV9DT1JFX0lQT0lCXCIsXG4gICAgXCJNTFg1X0VTV0lUQ0hcIixcbiAgICBcIkZCTklDXCIsXG4gICAgXCJNSUNST1NPRlRfTUFOQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV0aHRvb2xfb3BfZ2V0X2xpbmtcIixcbiAgICBcImV0aG5sX2RlZmF1bHRfZG9pdFwiLFxuICAgIFwiX19kZXZfZXRodG9vbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9ja2luZyBpc3N1ZSB3aGVyZSBgZXRodG9vbF9vcF9nZXRfbGlua2Agd2FzIGNhbGxlZCB3aXRob3V0IGBydG5sX2xvY2tgIGZvciBkcml2ZXJzIHRoYXQgdXNlIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgKGUuZy4gZ3ZlLCBpYXZmLCBtbHg1LCBmYm5pYywgbWFuYSkuIGBldGh0b29sX29wX2dldF9saW5rYCBjYWxscyBgX19saW5rd2F0Y2hfc3luY19kZXZgIHdoaWNoIHJlcXVpcmVzIGBydG5sX2xvY2tgIGJlY2F1c2UgaXQgY2FuIHRyaWdnZXIgYGRldl9hY3RpdmF0ZWAgYW5kIHVzZSBgcnRubF9kZXJlZmVyZW5jZWAuIFRoZSBwYXRjaCBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZXNlIGRyaXZlcnMnIGV0aHRvb2wgb3BzIHRvIGVuc3VyZSBgcnRubF9sb2NrYCBpcyB0YWtlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGxvY2tpbmcgYmVoYXZpb3IgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIHZlcmlmeSBubyBkZWFkbG9ja3Mgb3IgUkNVIHdhcm5pbmdzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIxNTI1NzYwZDU0MjMzNjk1Y2Y0Y2M5YmY5MzA2MmVlYmNiM2VmZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAxOTozODowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuY1xuaW5kZXggN2NjMjI5MTY4NTJmYjYuLjgxOTk3MzhiYTk3OWVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmNcbkBAIC05ODQsNyArOTg0LDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGd2ZV9ldGh0b29sX29wcyA9IHtcbiBcdC5zdXBwb3J0ZWRfcmluZ19wYXJhbXMgPSBFVEhUT09MX1JJTkdfVVNFX1RDUF9EQVRBX1NQTElUIHxcbiBcdFx0XHRcdCBFVEhUT09MX1JJTkdfVVNFX1JYX0JVRl9MRU4sXG4gXHQub3BfbmVlZHNfcnRubCA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxuLVx0XHRcdCBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSxcbitcdFx0XHQgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0gfFxuK1x0XHRcdCBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuZ2V0X2RydmluZm8gPSBndmVfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X3N0cmluZ3MgPSBndmVfZ2V0X3N0cmluZ3MsXG4gXHQuZ2V0X3NzZXRfY291bnQgPSBndmVfZ2V0X3NzZXRfY291bnQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcbmluZGV4IGE2MTVkNTk5Yjg4ZWU0Li5lN2NmMTJlYWEyNjg5MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmNcbkBAIC0xODU1LDYgKzE4NTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGlhdmZfZXRodG9vbF9vcHMgPSB7XG4gXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MgfFxuIFx0XHRcdFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRSxcbiBcdC5zdXBwb3J0ZWRfaW5wdXRfeGZybVx0PSBSWEhfWEZSTV9TWU1fWE9SLFxuK1x0Lm9wX25lZWRzX3J0bmxcdFx0PSBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuZ2V0X2RydmluZm9cdFx0PSBpYXZmX2dldF9kcnZpbmZvLFxuIFx0LmdldF9saW5rXHRcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcbiBcdC5nZXRfcmluZ3BhcmFtXHRcdD0gaWF2Zl9nZXRfcmluZ3BhcmFtLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jXG5pbmRleCAyZjViNjI2YmEzM2ZlNS4uMTEyOTI2ZDA3NjM0ZDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fZXRodG9vbC5jXG5AQCAtMjcyMSw3ICsyNzIxLDggQEAgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG1seDVlX2V0aHRvb2xfb3BzID0ge1xuIFx0LnJ4ZmhfbWF4X251bV9jb250ZXh0c1x0PSBNTFg1RV9NQVhfTlVNX1JTUyxcbiBcdC5vcF9uZWVkc19ydG5sXHRcdD0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XG4gXHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbi1cdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQRkxBR1MsXG4rXHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEZMQUdTIHxcbitcdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLFxuIFx0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1VTRUNTIHxcbiBcdFx0XHRcdCAgICAgRVRIVE9PTF9DT0FMRVNDRV9NQVhfRlJBTUVTIHxcbiBcdFx0XHRcdCAgICAgRVRIVE9PTF9DT0FMRVNDRV9VU0VfQURBUFRJVkUgfFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuY1xuaW5kZXggMWE4YTE5Zjk4MGQzMzUuLmM4Yjc2ZDMwMWM5MmNmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmNcbkBAIC00MTksNyArNDE5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1ZV9yZXBfZXRodG9vbF9vcHMgPSB7XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfTUFYX0ZSQU1FUyB8XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFLFxuIFx0Lm9wX25lZWRzX3J0bmxcdCAgID0gRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NDSEFOTkVMUyB8XG4tXHRcdFx0ICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfU1JJTkdQQVJBTSxcbitcdFx0XHQgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbitcdFx0XHQgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcbiBcdC5nZXRfZHJ2aW5mb1x0ICAgPSBtbHg1ZV9yZXBfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X2xpbmtcdCAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcbiBcdC5nZXRfc3RyaW5ncyAgICAgICA9IG1seDVlX3JlcF9nZXRfc3RyaW5ncyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2V0aHRvb2wuY1xuaW5kZXggOWIzYjMyNDA4YzY0YjcuLjAxZGRjM2RlZjlhYzA3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2V0aHRvb2wuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2V0aHRvb2wuY1xuQEAgLTI4Niw3ICsyODYsOCBAQCBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbWx4NWlfZXRodG9vbF9vcHMgPSB7XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfTUFYX0ZSQU1FUyB8XG4gXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFLFxuIFx0Lm9wX25lZWRzX3J0bmxcdCAgICA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxuLVx0XHRcdCAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNLFxuK1x0XHRcdCAgICAgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbitcdFx0XHQgICAgICBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuZ2V0X2RydmluZm8gICAgICAgID0gbWx4NWlfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X3N0cmluZ3MgICAgICAgID0gbWx4NWlfZ2V0X3N0cmluZ3MsXG4gXHQuZ2V0X3NzZXRfY291bnQgICAgID0gbWx4NWlfZ2V0X3NzZXRfY291bnQsXG5AQCAtMzA5LDYgKzMxMCw3IEBAIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1aV9ldGh0b29sX29wcyA9IHtcbiB9O1xuIFxuIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtbHg1aV9wa2V5X2V0aHRvb2xfb3BzID0ge1xuK1x0Lm9wX25lZWRzX3J0bmxcdCAgICA9IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOSyxcbiBcdC5nZXRfZHJ2aW5mbyAgICAgICAgPSBtbHg1aV9nZXRfZHJ2aW5mbyxcbiBcdC5nZXRfbGluayAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxuIFx0LmdldF90c19pbmZvICAgICAgICA9IG1seDVpX2dldF90c19pbmZvLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19ldGh0b29sLmNcbmluZGV4IGNiMzRmYzE2NmVmOTY4Li4wZTQ3MDg4ZWM0NGJhZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZXRodG9vbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2V0aHRvb2wuY1xuQEAgLTIwMjQsNyArMjAyNCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZmJuaWNfZXRodG9vbF9vcHMgPSB7XG4gXHRcdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dQQVVTRVBBUkFNIHxcbiBcdFx0XHRcdFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfU1BBVVNFUEFSQU0gfFxuIFx0XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TQ0hBTk5FTFMgfFxuLVx0XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNLFxuK1x0XHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbitcdFx0XHRcdFx0ICBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTkssXG4gXHQuZ2V0X2RydmluZm9cdFx0XHQ9IGZibmljX2dldF9kcnZpbmZvLFxuIFx0LmdldF9yZWdzX2xlblx0XHRcdD0gZmJuaWNfZ2V0X3JlZ3NfbGVuLFxuIFx0LmdldF9yZWdzXHRcdFx0PSBmYm5pY19nZXRfcmVncyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXG5pbmRleCA5NGU2NThkMDdhMjdlOC4uODgxZGY1OTdkN2Y5YzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcbkBAIC01OTcsNyArNTk3LDggQEAgc3RhdGljIGludCBtYW5hX2dldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbWFuYV9ldGh0b29sX29wcyA9IHtcbiBcdC5zdXBwb3J0ZWRfY29hbGVzY2VfcGFyYW1zID0gRVRIVE9PTF9DT0FMRVNDRV9SWF9DUUVfRlJBTUVTLFxuIFx0Lm9wX25lZWRzX3J0bmxcdFx0PSBFVEhUT09MX09QX05FRURTX1JUTkxfU0NIQU5ORUxTIHxcbi1cdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NSSU5HUEFSQU0sXG4rXHRcdFx0XHQgIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUklOR1BBUkFNIHxcbitcdFx0XHRcdCAgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LLFxuIFx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMsXG4gXHQuZ2V0X3NzZXRfY291bnRcdFx0PSBtYW5hX2dldF9zc2V0X2NvdW50LFxuIFx0LmdldF9zdHJpbmdzXHRcdD0gbWFuYV9nZXRfc3RyaW5ncyxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaCBiL2luY2x1ZGUvbGludXgvZXRodG9vbC5oXG5pbmRleCAxYjgzNGUyYTUyMmVjNS4uNWQ0OTFhOTgyNjVlZjkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaFxuKysrIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmhcbkBAIC05NDIsNiArOTQyLDcgQEAgc3RydWN0IGtlcm5lbF9ldGh0b29sX3RzX2luZm8ge1xuICNkZWZpbmUgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dQQVVTRVBBUkFNXHRCSVQoNSlcbiAjZGVmaW5lIEVUSFRPT0xfT1BfTkVFRFNfUlROTF9TUEFVU0VQQVJBTVx0QklUKDYpXG4gI2RlZmluZSBFVEhUT09MX09QX05FRURTX1JUTkxfUlNTXHRcdEJJVCg3KVxuKyNkZWZpbmUgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LXHRcdEJJVCg4KVxuIFxuIC8qKlxuICAqIHN0cnVjdCBldGh0b29sX29wcyAtIG9wdGlvbmFsIG5ldGRldiBvcGVyYXRpb25zXG5AQCAtOTc4LDYgKzk3OSw3IEBAIHN0cnVjdCBrZXJuZWxfZXRodG9vbF90c19pbmZvIHtcbiAgKlx0IC0gcGh5bGluayBoZWxwZXJzIChub3RlIHRoYXQgcGh5ZGV2IGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCEpXG4gICpcdCAtIG5ldGRldl91cGRhdGVfZmVhdHVyZXMoKVxuICAqXHQgLSBuZXRpZl9zZXRfcmVhbF9udW1fdHhfcXVldWVzKClcbisgKlx0IC0gZXRodG9vbF9vcF9nZXRfbGluaygpIChzeW5jcyBsaW5rIHdhdGNoIHVuZGVyIHJ0bmxfbG9jaylcbiAgKlxuICAqIEBnZXRfZHJ2aW5mbzogUmVwb3J0IGRyaXZlci9kZXZpY2UgaW5mb3JtYXRpb24uIE1vZGVybiBkcml2ZXJzIG5vXG4gICpcdGxvbmdlciBoYXZlIHRvIGltcGxlbWVudCB0aGlzIGNhbGxiYWNrLiBNb3N0IGZpZWxkcyBhcmVcbmRpZmYgLS1naXQgYS9uZXQvZXRodG9vbC9jb21tb24uaCBiL25ldC9ldGh0b29sL2NvbW1vbi5oXG5pbmRleCAyYjM4NDdmMDA4MDE4My4uNGU1MzU2ZTI2ZjQwMGEgMTAwNjQ0XG4tLS0gYS9uZXQvZXRodG9vbC9jb21tb24uaFxuKysrIGIvbmV0L2V0aHRvb2wvY29tbW9uLmhcbkBAIC0xMTMsNiArMTEzLDggQEAgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCBjbWQpXG4gXHRcdHJldHVybiBvcHMtXHUwMDNlb3BfbmVlZHNfcnRubCBcdTAwMjYgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1NQQVVTRVBBUkFNO1xuIFx0Y2FzZSBFVEhUT09MX01TR19SU1NfU0VUOlxuIFx0XHRyZXR1cm4gb3BzLVx1MDAzZW9wX25lZWRzX3J0bmwgXHUwMDI2IEVUSFRPT0xfT1BfTkVFRFNfUlROTF9SU1M7XG4rXHRjYXNlIEVUSFRPT0xfTVNHX0xJTktTVEFURV9HRVQ6XG4rXHRcdHJldHVybiBvcHMtXHUwMDNlb3BfbmVlZHNfcnRubCBcdTAwMjYgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LO1xuIFx0Y2FzZSBFVEhUT09MX01TR19UU0NPTkZJR19HRVQ6XG4gXHRjYXNlIEVUSFRPT0xfTVNHX1RTQ09ORklHX1NFVDpcbiBcdFx0LyogdHNjb25maWcgY2FsbHMgbmRvcyAobmRvX2h3dHN0YW1wX3NldC9nZXQpLCBub3QgZXRodG9vbCBvcHMuXG5AQCAtMTU5LDYgKzE2MSw4IEBAIGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgZXRoY21kKVxuIFx0Y2FzZSBFVEhUT09MX1NSWEZIOlxuIFx0Y2FzZSBFVEhUT09MX1NSWEZISU5ESVI6XG4gXHRcdHJldHVybiBvcHMtXHUwMDNlb3BfbmVlZHNfcnRubCBcdTAwMjYgRVRIVE9PTF9PUF9ORUVEU19SVE5MX1JTUztcbitcdGNhc2UgRVRIVE9PTF9HTElOSzpcbitcdFx0cmV0dXJuIG9wcy1cdTAwM2VvcF9uZWVkc19ydG5sIFx1MDAyNiBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTks7XG4gXHR9XG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MDQuNjI3MTc2NDU4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQyMTcyNTU4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJUTkwgTG9jayBJbXBhY3Qgb2YgdGhlIE5ldyBFVEhUT09MIEZsYWcqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCB0aGF0IGludHJvZHVjZXMgYSBuZXcgZmxhZywgYEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOS2AsIGFuZCBpdCBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgdGhlIG5lZWQgZm9yIHRoZSBSVE5MIGxvY2sgaW4gdGhlIGV0aHRvb2wgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBpdCdzIGJlaW5nIGFkZGVkIHRvIGBpbmNsdWRlL2xpbnV4L2V0aHRvb2wuaGAgYW5kIHVzZWQgaW4gYG5ldC9ldGh0b29sL2NvbW1vbi5oYCwgaW5mbHVlbmNpbmcgdGhlIGBFVEhUT09MX01TR19MSU5LU1RBVEVfR0VUYCBhbmQgYEVUSFRPT0xfR0xJTktgIG9wZXJhdGlvbnMuIEl0J3MgYWxzbyBiZWluZyBpbXBsZW1lbnRlZCBpbiBxdWl0ZSBhIGZldyBkcml2ZXJzOiBndmUsIGlhdmYsIG1seDUsIGZibmljLCBhbmQgbWFuYSwgc28gdGhpcyBhZmZlY3RzIHF1aXRlIGEgZmV3IGRyaXZlcnMuXG5cbkZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSAqaG93KiB0aGlzIGZsYWcgaXMgdXNlZC4gTGV0J3MgZGlnIGludG8gYG5ldC9ldGh0b29sL2NvbW1vbi5oYCBhbmQgYGluY2x1ZGUvbGludXgvZXRodG9vbC5oYCB0byBzZWUgaG93IGl0IGFmZmVjdHMgdGhlIGV4aXN0aW5nIGxvZ2ljLiBJdCBsb29rcyBsaWtlIGl0J3MgbW9kaWZ5aW5nIGBldGh0b29sX25sX21zZ19uZWVkc19ydG5sYCBhbmQgYGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubGAuIEFscmlnaHQsIHNvIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQncyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nICp3aGVuKiB0aGUgYHJ0bmxfbG9ja2AgaXMgdGFrZW4gYmVmb3JlIGNhbGxpbmcgdGhlIGBnZXRfbGlua2AgZXRodG9vbCBvcGVyYXRpb24uXG5cblRoaXMgaW1tZWRpYXRlbHkgc2NyZWFtcyBcInBvdGVudGlhbCBmb3IgZnV6emluZ1wiLiBBbnkgY2hhbmdlIHRvIGxvY2tpbmcgYmVoYXZpb3IgaXMgd29ydGggYSBkZWVwIGxvb2ssIHNpbmNlIGl0IGNvdWxkIGludHJvZHVjZSBzdWJ0bGUgcmFjZSBjb25kaXRpb25zLCBkZWFkbG9ja3MsIG9yIHVuaW50ZW5kZWQgYmVoYXZpb3IgaW4gdGhlIGtlcm5lbC4gVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgc2luY2UgZXRodG9vbCBpcyBhIHVzZXItc3BhY2UgaW50ZXJmYWNlLCBhbmQgdGhlc2UgY2hhbmdlcyBjb3VsZCBpbnRyb2R1Y2UgbmV3IHZlY3RvcnMgZm9yIGF0dGFjay5cblxuV2FpdCwgaXMgdGhpcyBqdXN0IGNvbmZpbmVkIHRvIHRoZSBkcml2ZXJzIG9yIGlzIHRoaXMgYWZmZWN0aW5nIHRoZSAqY29yZSoga2VybmVsIGJlaGF2aW9yPyBPa2F5LCB0aGUgcGF0Y2ggaXMgYWxsb3dpbmcgZHJpdmVycyB0byBleHBsaWNpdGx5IGRlY2xhcmUgdGhlaXIgbmVlZCBmb3IgdGhlIFJUTkwgbG9jayBkdXJpbmcgYGdldF9saW5rYC4gSG1tLi4uIEkgbmVlZCB0byBiZSBzdXJlLiBJJ20gcHJlc3VtaW5nIHRoZSBkZWZhdWx0IGJlaGF2aW9yICp3YXMqIHRoYXQgdGhlIFJUTkwgbG9jayAqd2Fzbid0KiBuZWVkZWQgZm9yIHRoZXNlIGNvbW1hbmRzLlxuXG5MZXQncyB2ZXJpZnkgdGhhdCBxdWlja2x5LCBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGBuZXQvZXRodG9vbC9jb21tb24uaGAgYW5kIHRoZW4gdGhlIG5ldGxpbmsgYW5kIGlvY3RsIGltcGxlbWVudGF0aW9ucy4gSSdsbCBuZWVkIHRvIGNoZWNrIGBuZXQvZXRodG9vbC9pb2N0bC5jYCBhbmQgYG5ldC9ldGh0b29sL25ldGxpbmsuY2AuXG5cbk9rYXksIHllcy4gYGV0aHRvb2xfbmxfbXNnX25lZWRzX3J0bmxgIGFuZCBgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sYCAqcmV0dXJuKiBgdHJ1ZWAgaWYgdGhlIGxvY2sgKmlzKiBuZWVkZWQuIFNvLCB3aGF0J3MgdGhlIGRlZmF1bHQgYmVoYXZpb3I/IEkgbmVlZCB0byBjaGVjayBgbmV0L2V0aHRvb2wvaW9jdGwuY2AgdG8gYmUgc3VyZS4gSSdsbCBuZWVkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gZmFsc2UgYnkgZGVmYXVsdCBmb3IgdGhlIGNvbW1hbmRzIGluIHF1ZXN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDAzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MTIuMDQ4OTA0MzM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNDQ3ODk5NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9ldGh0b29sL2NvbW1vbi5oPTkyPWV0aHRvb2xfbmxfbXNnX25lZWRzX3J0bmwoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggY21kKVxcbi0tXFxubmV0L2V0aHRvb2wvY29tbW9uLmgtMTI5LS8qKlxcbm5ldC9ldGh0b29sL2NvbW1vbi5oOjEzMDogKiBldGh0b29sX2lvY3RsX25lZWRzX3J0bmwoKSAtIGRvZXMgdGhpcyBsZWdhY3kgaW9jdGwgY21kIG5lZWQgcnRubF9sb2NrP1xcbm5ldC9ldGh0b29sL2NvbW1vbi5oLTEzMS0gKiBAZGV2OiB0YXJnZXQgZGV2aWNlXFxuLS1cXG5uZXQvZXRodG9vbC9jb21tb24uaD0xMzc9c3RhdGljIGlubGluZSBib29sXFxubmV0L2V0aHRvb2wvY29tbW9uLmg6MTM4OmV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgZXRoY21kKVxcbm5ldC9ldGh0b29sL2NvbW1vbi5oLTEzOS17XFxuLS1cXG5uZXQvZXRodG9vbC9pb2N0bC5jPTMyNzI9ZGV2X2V0aHRvb2xfbG9ja2VkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9ldGh0b29sL2lvY3RsLmMtMzU5MC0gKiBEcml2ZXItZGVjaWRlZCBTRVQgY29tbWFuZHMgdGhhdCBtYXkgY2hhaW4gaW50byBydG5sLW9ubHkgaGVscGVycyBhcmVcXG5uZXQvZXRodG9vbC9pb2N0bC5jOjM1OTE6ICogY292ZXJlZCBieSBldGh0b29sX2lvY3RsX25lZWRzX3J0bmwoKS9FVEhUT09MX09QX05FRURTX1JUTkxfKi5cXG5uZXQvZXRodG9vbC9pb2N0bC5jLTM1OTItICovXFxuLS1cXG5uZXQvZXRodG9vbC9pb2N0bC5jPTM2MTA9X19kZXZfZXRodG9vbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBpZnJlcSAqaWZyLCB2b2lkIF9fdXNlciAqdXNlcmFkZHIsXFxuLS1cXG5uZXQvZXRodG9vbC9pb2N0bC5jLTM2MjMtXFx0XFx0ICAgIGV0aHRvb2xfY21kX2NoYW5nZXNfZmVhdHVyZXMoZXRoY21kKSB8fFxcbm5ldC9ldGh0b29sL2lvY3RsLmM6MzYyNDpcXHRcXHQgICAgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sKGRldiwgZXRoY21kKTtcXG5uZXQvZXRodG9vbC9pb2N0bC5jLTM2MjUtXFx0aWYgKG5lZWRfcnRubClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MTQuMzkzNzAwNDI3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAzNzMyMTg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBldGh0b29sIGlvY3RsIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBiYXNlZCBvbiB0aGUgcmVjZW50IGlzc3VlLCBJIG5lZWQgdG8gZ2V0IHJpZ2h0IGludG8gdGhlIGBuZXQvZXRodG9vbC9pb2N0bC5jYCBjb2RlIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGdvaW5nIG9uLiBTcGVjaWZpY2FsbHksIEkgaGF2ZSBhIGh1bmNoIGl0J3MgcmVsYXRlZCB0byBob3cgZXRodG9vbCBoYW5kbGVzIHNwZWNpZmljIHJlcXVlc3RzLiBJJ20gZ29pbmcgdG8ganVtcCByaWdodCB0byB0aGUgYXJlYSBhcm91bmQgbGluZSAzNjI0LiBUaGF0IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFzIEkgcmVtZW1iZXIgdGhlIGdlbmVyYWwgbGF5b3V0IG9mIHRoZSBmaWxlLCBhbmQgdGhhdCByYW5nZSBsaWtlbHkgaGFuZGxlcyBhIGdvb2QgY2h1bmsgb2YgdGhlIGlvY3RsIHJvdXRpbmcsIG9yIHBlcmhhcHMgYSBwYXJ0aWN1bGFyIGNvbW1hbmQgdGhhdCBoYXMgYmVlbiBpbXBsaWNhdGVkLiBJJ20gZXhwZWN0aW5nIHNvbWUgcHJldHR5IGxvdy1sZXZlbCBzb2NrZXQgaW50ZXJhY3Rpb24gb3IgcGVyaGFwcyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgc3RydWN0dXJlcyB3ZSdyZSBwYXNzaW5nIGJhY2sgYW5kIGZvcnRoIHdpdGggdGhlIGtlcm5lbC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBpZiB0aGlzIGh1bmNoIGlzIGNvcnJlY3QsIG9yIGlmIEkgbmVlZCB0byBhZGp1c3QgbXkgc2VhcmNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDg5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MTcuNDMxMDI0ODMzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9ldGh0b29sL2lvY3RsLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzYxMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzYxMDpcXHRfX2Rldl9ldGh0b29sKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGlmcmVxICppZnIsIHZvaWQgX191c2VyICp1c2VyYWRkcixcXG4zNjExOlxcdFxcdCAgICAgIHUzMiBldGhjbWQsIHN0cnVjdCBldGh0b29sX2RldmxpbmtfY29tcGF0ICpkZXZsaW5rX3N0YXRlKVxcbjM2MTI6XFx0e1xcbjM2MTM6XFx0XFx0bmV0ZGV2aWNlX3RyYWNrZXIgZGV2X3RyYWNrZXI7XFxuMzYxNDpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xcbjM2MTU6XFx0XFx0Ym9vbCBuZWVkX3J0bmw7XFxuMzYxNjpcXHRcXHRpbnQgcmM7XFxuMzYxNzpcXHRcXG4zNjE4OlxcdFxcdGRldiA9IG5ldGRldl9nZXRfYnlfbmFtZShuZXQsIGlmci1cXHUwMDNlaWZyX25hbWUsIFxcdTAwMjZkZXZfdHJhY2tlciwgR0ZQX0tFUk5FTCk7XFxuMzYxOTpcXHRcXHRpZiAoIWRldilcXG4zNjIwOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjM2MjE6XFx0XFxuMzYyMjpcXHRcXHRuZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSB8fFxcbjM2MjM6XFx0XFx0XFx0ICAgIGV0aHRvb2xfY21kX2NoYW5nZXNfZmVhdHVyZXMoZXRoY21kKSB8fFxcbjM2MjQ6XFx0XFx0XFx0ICAgIGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubChkZXYsIGV0aGNtZCk7XFxuMzYyNTpcXHRcXHRpZiAobmVlZF9ydG5sKVxcbjM2MjY6XFx0XFx0XFx0cnRubF9sb2NrKCk7XFxuMzYyNzpcXHRcXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcXG4zNjI4OlxcdFxcdGlmIChkZXYtXFx1MDAzZXJlZ19zdGF0ZSBcXHUwMDNlIE5FVFJFR19SRUdJU1RFUkVEIHx8XFxuMzYyOTpcXHRcXHQgICAgZGV2LVxcdTAwM2Vtb3ZpbmdfbnMgfHwgIW5ldF9lcShkZXZfbmV0KGRldiksIG5ldCkpIHtcXG4zNjMwOlxcdFxcdFxcdHJjID0gLUVOT0RFVjtcXG4zNjMxOlxcdFxcdFxcdGdvdG8gZXhpdF9vcHNfdW5sb2NrO1xcbjM2MzI6XFx0XFx0fVxcbjM2MzM6XFx0XFxuMzYzNDpcXHRcXHRyYyA9IGRldl9ldGh0b29sX2xvY2tlZChuZXQsIGRldiwgdXNlcmFkZHIsIGV0aGNtZCwgZGV2bGlua19zdGF0ZSxcXG4zNjM1OlxcdFxcdFxcdFxcdFxcdG5lZWRfcnRubCk7XFxuMzYzNjpcXHRcXG4zNjM3OlxcdGV4aXRfb3BzX3VubG9jazpcXG4zNjM4OlxcdFxcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XFxuMzYzOTpcXHRcXHRpZiAobmVlZF9ydG5sKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozODoxNy40MzEyMTIxMjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODAwNDYwNzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTG9jayBBY3F1aXNpdGlvbiBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgYSBjb25kaXRpb25hbCBsb2NrIGFjcXVpc2l0aW9uIGhlcmUsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBydG5sX2xvY2soKWAuIFRoZSBjb2RlIGNsZWFybHkgc3RhdGVzIHRoYXQgaWYgYG5lZWRfcnRubGAgaXMgc2V0IHRvIHRydWUsIHRoZW4gd2UgYWNxdWlyZSB0aGUgYHJ0bmxfbG9ja2AuIFRoYXQncyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBUaGUgaW50ZXJlc3RpbmcgcGFydCwgdGhvdWdoLCBpcyB0aGUgKmRlZmF1bHQqIGJlaGF2aW9yIG9mIGBFVEhUT09MX0dMSU5LYC4gSXQgc2VlbXMgdGhhdCwgYnkgZGVmYXVsdCwgd2UgKmRvbid0KiBuZWVkIHRoZSBgcnRubF9sb2NrYCBmb3IgdGhpcyBzcGVjaWZpYyBgZXRodG9vbGAgY29tbWFuZCwgdW5sZXNzLCBhbmQgdGhpcyBpcyB0aGUgY3J1eCBvZiBpdCwgYGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubGAgcmV0dXJucyB0cnVlLiBUaGF0IGZ1bmN0aW9uIGJlY29tZXMgdGhlIGdhdGVrZWVwZXIgZm9yIHdoZXRoZXIgd2UgbmVlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHRoZSBuZXR3b3JrIGRldmljZSdzIHJvdXRpbmcgdGFibGUuXG5cbkJ1dCB0aGUgYmlnZ2VyIHBpY3R1cmUgcXVlc3Rpb24gaXMgd2hhdCdzIGdvaW5nIG9uIGJlaGluZCB0aGUgc2NlbmVzLCBzbyBsZXQncyBjaGVjayB3aGF0IGBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYCBkb2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYHJ0bmxfbG9ja2AgYW5kIHRoZSBkZXZpY2Ugb3BlcmF0aW9ucyBsb2NrLCBhbmQgaG93IHRoaXMgYWZmZWN0cyB0aGUgbG9ja2luZyBoaWVyYXJjaHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYG5ldGRldl9uZWVkX29wc19sb2NrYCBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBgcnRubF9sb2NrYCBpcyBhY3F1aXJlZCBvciBub3QuIFRoaXMgaXMgZ2V0dGluZyB0byB0aGUgaGVhcnQgb2YgdGhlIGNvbmN1cnJlbmN5IGNvbnRyb2wgYW5kIGVuc3VyaW5nIHRoYXQgdGhlIGNhbGxzIGFyZSB0aHJlYWQtc2FmZS4gSSdtIGdvaW5nIHRvIGxvb2sgaW50byBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI1OCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MjIuMjMxNjc1OTU1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTQ0Nzk1NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0ZGV2X25lZWRfb3BzX2xvY2tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmM9MzE9aW50IHBoeV9saW5rX3RvcG9fYWRkX3BoeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmMtNDQtXFx0ICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmM6NDU6XFx0aWYgKFdBUk5fT05fT05DRShuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKSlcXG5kcml2ZXJzL25ldC9waHkvcGh5X2xpbmtfdG9wb2xvZ3kuYy00Ni1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmM9ODI9c3RhdGljIF9faW5saW5lX18gaW50IGRldl9pc19ldGhkZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmMtODMte1xcbmRyaXZlcnMvbmV0L3dhbi9sYXBiZXRoZXIuYzo4NDpcXHRyZXR1cm4gZGV2LVxcdTAwM2V0eXBlID09IEFSUEhSRF9FVEhFUiBcXHUwMDI2XFx1MDAyNiAhbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KTtcXG5kcml2ZXJzL25ldC93YW4vbGFwYmV0aGVyLmMtODUtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yMTM5PXN0cnVjdCBuZXRfZGV2aWNlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjU3Ny1cXHQgKiAgIGFuZCBvdGhlciBjYWxsYmFja3MsIHRoYXQgaXMgdGhlIGluc3RhbmNlIGxvY2sgb24gZGV2aWNlcyBmb3JcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1Nzg6XFx0ICogICB3aGljaCBuZXRkZXZfbmVlZF9vcHNfbG9jaygpIHJldHVybnMgdHJ1ZSwgb3RoZXJ3aXNlIGJ5IHJ0bmxfbG9jaztcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NzktXFx0ICpcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1ODAtXFx0ICogLSBkb3VibGUgb3BzIHByb3RlY3RlZCAtIGFsd2F5cyBwcm90ZWN0ZWQgYnkgcnRubF9sb2NrIGJ1dCBmb3JcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1ODE6XFx0ICogICBkZXZpY2VzIGZvciB3aGljaCBuZXRkZXZfbmVlZF9vcHNfbG9jaygpIHJldHVybnMgdHJ1ZSAtIGFsc29cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1ODItXFx0ICogICB0aGUgaW5zdGFuY2UgbG9jay5cXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9MjE9bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3JfaW52aXNpYmxlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTI3LVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6Mjg6c3RhdGljIGlubGluZSBib29sIG5ldGRldl9uZWVkX29wc19sb2NrKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0yOS17XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTM5PXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfbG9ja19vcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTQwLXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjQxOlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtNDItXFx0XFx0bmV0ZGV2X2xvY2soZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9NDU9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl91bmxvY2tfb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC00Ni17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo0NzpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTQ4LVxcdFxcdG5ldGRldl91bmxvY2soZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9NTE9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9sb2NrX29wc190b19mdWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC01Mi17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo1MzpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTU0LVxcdFxcdG5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTU5PXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfdW5sb2NrX2Z1bGxfdG9fb3BzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC02MC17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo2MTpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTYyLVxcdFxcdG5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTY3PXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC02OC17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDo2OTpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTcwLVxcdFxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmRldi1cXHUwMDNlbG9jayk7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oPTgzPXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHMoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTg0LXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjg1OlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtODYtXFx0XFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9ODk9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9sb2NrX29wc19jb21wYXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oLTkwLXtcXG5pbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oOjkxOlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtOTItXFx0XFx0bmV0ZGV2X2xvY2soZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9OTc9c3RhdGljIGlubGluZSB2b2lkIG5ldGRldl91bmxvY2tfb3BzX2NvbXBhdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtOTgte1xcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6OTk6XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0xMDAtXFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaD0xMDY9c3RhdGljIGlubGluZSBpbnQgbmV0ZGV2X2lzX2xvY2tlZF9vcHNfY29tcGF0KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0xMDcte1xcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg6MTA4OlxcdGlmIChuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmgtMTA5LVxcdFxcdHJldHVybiBsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNmRldi1cXHUwMDNlbG9jayk7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmg9NDM9c3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c190eCB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmgtOTEtICpcXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmg6OTI6ICogT3BzIGFyZSBjYWxsZWQgdW5kZXIgdGhlIGluc3RhbmNlIGxvY2sgaWYgbmV0ZGV2X25lZWRfb3BzX2xvY2soKVxcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaC05My0gKiByZXR1cm5zIHRydWUsIG90aGVyd2lzZSB1bmRlciBydG5sX2xvY2suXFxuLS1cXG5uZXQvY29yZS9kZXYuYz0xMTMyMD1pbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvY29yZS9kZXYuYy0xMTM3NC1cXG5uZXQvY29yZS9kZXYuYzoxMTM3NTpcXHRpZiAobmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9jb3JlL2Rldi5jLTExMzc2LVxcdCAgICBkZXYtXFx1MDAzZW5ldGRldl9vcHMtXFx1MDAzZW5kb19zZXRfcnhfbW9kZSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTIzNjI9dm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTIzOTUtXFx0XFx0XFx0Y29udGludWU7XFxubmV0L2NvcmUvZGV2LmM6MTIzOTY6XFx0XFx0aWYgKG5ldGRldl9uZWVkX29wc19sb2NrKGRldikpIHtcXG5uZXQvY29yZS9kZXYuYy0xMjM5Ny1cXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZkZXYtXFx1MDAzZWNsb3NlX2xpc3QsIFxcdTAwMjZjbG9zZV9oZWFkKTtcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTEyNDA0LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGV2LCBoZWFkLCB1bnJlZ19saXN0KSB7XFxubmV0L2NvcmUvZGV2LmM6MTI0MDU6XFx0XFx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbm5ldC9jb3JlL2Rldi5jLTEyNDA2LVxcdFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRldi1cXHUwMDNlY2xvc2VfbGlzdCwgXFx1MDAyNmNsb3NlX2hlYWQpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTI1MjI9aW50IF9fZGV2X2NoYW5nZV9uZXRfbmFtZXNwYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTEyNjEyLVxcbm5ldC9jb3JlL2Rldi5jOjEyNjEzOlxcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5uZXQvY29yZS9kZXYuYy0xMjYxNC1cXHRcXHRuZXRkZXZfbG9jayhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTI2ODMtXFx0ZGV2LVxcdTAwM2Vtb3ZpbmdfbnMgPSBmYWxzZTtcXG5uZXQvY29yZS9kZXYuYzoxMjY4NDpcXHRpZiAoIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikpXFxubmV0L2NvcmUvZGV2LmMtMTI2ODUtXFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2Lmg9MTgxPXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl9zZXRfdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCB2YWx1ZSlcXG4tLVxcbm5ldC9jb3JlL2Rldi5oLTE4Ny1cXG5uZXQvY29yZS9kZXYuaDoxODg6XFx0aWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKVxcbm5ldC9jb3JlL2Rldi5oLTE4OS1cXHRcXHRuZXRkZXZfbG9jayhkZXYpO1xcbm5ldC9jb3JlL2Rldi5oLTE5MC1cXHRkZXYtXFx1MDAzZXVwID0gdmFsdWU7XFxubmV0L2NvcmUvZGV2Lmg6MTkxOlxcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5uZXQvY29yZS9kZXYuaC0xOTItXFx0XFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcbi0tXFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYz0xNDEwPXZvaWQgX19kZXZfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9jb3JlL2Rldl9hZGRyX2xpc3RzLmMtMTQyMi1cXHRpZiAob3BzLVxcdTAwM2VuZG9fc2V0X3J4X21vZGVfYXN5bmMgfHwgb3BzLVxcdTAwM2VuZG9fY2hhbmdlX3J4X2ZsYWdzIHx8XFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYzoxNDIzOlxcdCAgICBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpKSB7XFxubmV0L2NvcmUvZGV2X2FkZHJfbGlzdHMuYy0xNDI0LVxcdFxcdG5ldGlmX3J4X21vZGVfcXVldWUoZGV2KTtcXG4tLVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9MTAxMz1pbnQgbmV0ZGV2X25sX2JpbmRfcnhfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMDU2LVxcdFxcdGVyciA9IC1FTk9ERVY7XFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxMDU3OlxcdGVsc2UgaWYgKCFuZXRkZXZfbmVlZF9vcHNfbG9jayhuZXRkZXYpKVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTA1OC1cXHRcXHRlcnIgPSAtRU9QTk9UU1VQUDtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI0NT1pbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNTAtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjUxOlxcdGlmICghbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSlcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNTItXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYz0zNjEwPV9fZGV2X2V0aHRvb2woc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgaWZyZXEgKmlmciwgdm9pZCBfX3VzZXIgKnVzZXJhZGRyLFxcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYy0zNjIxLVxcbm5ldC9ldGh0b29sL2lvY3RsLmM6MzYyMjpcXHRuZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSB8fFxcbm5ldC9ldGh0b29sL2lvY3RsLmMtMzYyMy1cXHRcXHQgICAgZXRodG9vbF9jbWRfY2hhbmdlc19mZWF0dXJlcyhldGhjbWQpIHx8XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTA3PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNTM5LVxcdGlmIChyZXFfaW5mby1cXHUwMDNlZGV2KSB7XFxubmV0L2V0aHRvb2wvbmV0bGluay5jOjU0MDpcXHRcXHRuZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2socmVxX2luZm8tXFx1MDAzZWRldikgfHxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtNTQxLVxcdFxcdFxcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKHJlcV9pbmZvLVxcdTAwM2VkZXYsIGNtZCk7XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9NTk0PXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9kdW1wX29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTYwOC1cXHRldGhubF9pbml0X3JlcGx5X2RhdGEoY3R4LVxcdTAwM2VyZXBseV9kYXRhLCBjdHgtXFx1MDAzZW9wcywgZGV2KTtcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM6NjA5OlxcdG5lZWRfcnRubCA9ICFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpIHx8XFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTYxMC1cXHRcXHQgICAgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubChkZXYsIGN0eC1cXHUwMDNlb3BzLVxcdTAwM2VyZXF1ZXN0X2NtZCk7XFxuLS1cXG5uZXQvZXRodG9vbC9uZXRsaW5rLmM9OTAwPXN0YXRpYyBpbnQgZXRobmxfZGVmYXVsdF9zZXRfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2V0aHRvb2wvbmV0bGluay5jLTkzMC1cXHRkZXYgPSByZXFfaW5mby1cXHUwMDNlZGV2O1xcbm5ldC9ldGh0b29sL25ldGxpbmsuYzo5MzE6XFx0bmVlZF9ydG5sID0gIW5ldGRldl9uZWVkX29wc19sb2NrKGRldikgfHxcXG5uZXQvZXRodG9vbC9uZXRsaW5rLmMtOTMyLVxcdFxcdCAgICBldGh0b29sX25sX21zZ19uZWVkc19ydG5sKGRldiwgY21kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6MjQuNDI2MTY0OTkxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI1NTMwOTkwMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTG9ja2luZyBCZWhhdmlvciBmb3IgRVRIVE9PTF9HTElOSyBPcHM6IEEgRGVlcCBEaXZlKipcblxuT2theSwgc28gYG5lZWRfcnRubGAgaXMgZGV0ZXJtaW5lZCBieSB3aGV0aGVyIGEgZGV2aWNlICpkb2Vzbid0KiBuZWVkIGFuIG9wcyBsb2NrLiBFc3NlbnRpYWxseSwgZGV2aWNlcyB0aGF0ICpkb24ndCogbmVlZCB0aGUgb3BzIGxvY2sgYWx3YXlzIG5lZWQgYHJ0bmxfbG9ja2AsIGFuZCB0aG9zZSB0aGF0IGRvIG5lZWQgdGhlIG9wcyBsb2NrIG9ubHkgbmVlZCBgcnRubF9sb2NrYCBpZiBgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubGAgb3IgYGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubGAgc2F5cyBzby4gVGhpcyBzZWVtcyBsaWtlIGEgbmV3aXNoIHRoaW5nIHdoZXJlIHNvbWUgZHJpdmVycyBjYW4gYXZvaWQgYHJ0bmxfbG9ja2AgZm9yIHRoZWlyIGV0aHRvb2wgb3BlcmF0aW9ucyBieSB1c2luZyBgbmV0ZGV2X2xvY2tfb3BzKGRldilgIGluc3RlYWQuXG5cblRoZSBkcml2ZXJzIHRvdWNoZWQgaW4gdGhpcyBwYXRjaCAoZ3ZlLCBpYXZmLCBtbHg1LCBmYm5pYywgbWFuYSkgYXJlIHByb2JhYmx5IG9uZXMgdGhhdCBoYXZlIG9wdGVkICppbiogdG8gdGhpcyBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIHRoaW5nLiBUaGF0J3Mgd2h5LCBieSBkZWZhdWx0LCB0aGV5ICpkb24ndCogdXNlIGBydG5sX2xvY2tgIGZvciBldGh0b29sIG9wcy4gSG93ZXZlciwgZm9yIGBFVEhUT09MX0dMSU5LYCAodGhlIGBnZXRfbGlua2Agb3BlcmF0aW9uKSwgdGhleSAqZG8qIG5lZWQgYHJ0bmxfbG9ja2AuIFdoeT8gQmVjYXVzZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgY2FsbHMgYG5ldGlmX2NhcnJpZXJfb2tgIGFuZCBtaWdodCBzeW5jIHRoZSBsaW5rIHdhdGNoIHVuZGVyIHRoZSBgcnRubF9sb2NrYC5cblxuQWgsIG5vdyBJIHNlZTogdGhlIHBhdGNoIGlzIGFkZGluZyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCB0byB0aGUgYG9wX25lZWRzX3J0bmxgIGZsYWdzIGZvciB0aGVzZSBkcml2ZXJzLiBUaGlzIGlzIGEgY3J1Y2lhbCBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0IG1lYW5zIHRoYXQgd2hlbiBgRVRIVE9PTF9HTElOS2AgaXMgY2FsbGVkLCB0aGUgYHJ0bmxfbG9ja2AgKndpbGwqIGJlIHRha2VuIGZvciB0aGVzZSBkcml2ZXJzLCBjaGFuZ2luZyBsb2NraW5nIGJlaGF2aW9yLlxuXG5EZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcsIHRoaXMgZml4ZXMgb3IgY2hhbmdlcyBsb2NraW5nIGJlaGF2aW9yIGZvciBgRVRIVE9PTF9HTElOS2AgaW4gc2V2ZXJhbCBkcml2ZXJzLCBhbmQgdGhhdCBoYXMgdGhlIHBvdGVudGlhbCB0byBpbnRyb2R1Y2UgYnVncyBvciBleHBvc2UgdnVsbmVyYWJpbGl0aWVzLlxuXG5TbywgbGV0J3Mgc2VlIHdoYXQgZnVuY3Rpb25zIGFyZSBhZmZlY3RlZC4gSSBuZWVkIHRvIG5vdGUgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGFuZCBgZXRobmxfZGVmYXVsdF9kb2l0YCBmb3IgYEVUSFRPT0xfTVNHX0xJTktTVEFURV9HRVRgLCBhbG9uZyB3aXRoIHRoZSBkdW1waW5nIGZ1bmN0aW9uIGBldGhubF9kZWZhdWx0X2R1bXBfb25lYC4gVGhlIHBhdGNoIGl0c2VsZiBjb25maXJtcyB0aGlzIGJlY2F1c2UgYGd2ZV9ldGh0b29sX29wcy5nZXRfbGlua2AgaXMgcHJvYmFibHkganVzdCBjYWxsaW5nIGBldGh0b29sX29wX2dldF9saW5rYC5cblxuTG9va2luZyBhdCB0aGUgcGF0Y2ggaW4gbW9yZSBkZXRhaWwsIGl0J3MgY2xlYXI6IGBndmVgLCBgaWF2ZmAsIGBtbHg1YCwgYGZibmljYCwgYW5kIGBtYW5hYCBhcmUgZ2V0dGluZyB0aGlzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIGZsYWcgYWRkZWQuXG5cblRoZSBkZXNjcmlwdGlvbiBleHBsaWNpdGx5IHN0YXRlcywgXCJldGh0b29sX29wX2dldF9saW5rKCkgKHN5bmNzIGxpbmsgd2F0Y2ggdW5kZXIgcnRubF9sb2NrKS5cIiBUaGF0J3MgdGhlIGtleTogYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBsaW5rd2F0Y2hfc3luY19kZXYoZGV2KWAsIHdoaWNoIHJlcXVpcmVzIGBydG5sX2xvY2tgLiBQZXJmZWN0LiBJJ2xsIG5lZWQgdG8gZ28gdGhyb3VnaCBgZXRodG9vbF9vcF9nZXRfbGlua2AgdG8gdmVyaWZ5IHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTQ5LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozODozNi45NzkyNjY4NzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MTEzMDY4NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXRodG9vbF9vcF9nZXRfbGlua1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEyMzMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvdW0vZHJpdmVycy92ZWN0b3Jfa2Vybi5jPTE1MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB2ZWN0b3JfbmV0X2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuYXJjaC91bS9kcml2ZXJzL3ZlY3Rvcl9rZXJuLmMtMTUwMi1cXHQuZ2V0X2RydmluZm9cXHQ9IHZlY3Rvcl9uZXRfZ2V0X2RydmluZm8sXFxuYXJjaC91bS9kcml2ZXJzL3ZlY3Rvcl9rZXJuLmM6MTUwMzpcXHQuZ2V0X2xpbmtcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuYXJjaC91bS9kcml2ZXJzL3ZlY3Rvcl9rZXJuLmMtMTUwNC1cXHQuZ2V0X3RzX2luZm9cXHQ9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXFxuLS1cXG5kcml2ZXJzL2ZpcmV3aXJlL25ldC5jPTEzNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmd25ldF9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL2ZpcmV3aXJlL25ldC5jOjEzNjY6XFx0LmdldF9saW5rXFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvZmlyZXdpcmUvbmV0LmMtMTM2Ny19O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9ldGh0b29sLmM9MjE5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaXBvaWJfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2V0aHRvb2wuYy0yMjgtXFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSBpcG9pYl9nZXRfc3NldF9jb3VudCxcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2V0aHRvb2wuYzoyMjk6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfZXRodG9vbC5jLTIzMC19O1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYz01OTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYm9uZF9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5NDMtXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBib25kX2V0aHRvb2xfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzo1OTQ0OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTU5NDUtXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gYm9uZF9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzNjb20vM2M1OXguYz0zMDA5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdm9ydGV4X2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS8zYzU5eC5jLTMwMTUtXFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSB2b3J0ZXhfZ2V0X3NzZXRfY291bnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS8zYzU5eC5jOjMwMTY6XFx0LmdldF9saW5rICAgICAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzNjb20vM2M1OXguYy0zMDE3LVxcdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gdm9ydGV4X253YXlfcmVzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC8zY29tL3R5cGhvb24uYz0xMTY4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdHlwaG9vbl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzNjb20vdHlwaG9vbi5jLTExNzEtXFx0LnNldF93b2xcXHRcXHQ9IHR5cGhvb25fc2V0X3dvbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC8zY29tL3R5cGhvb24uYzoxMTcyOlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC8zY29tL3R5cGhvb24uYy0xMTczLVxcdC5nZXRfcmluZ3BhcmFtXFx0XFx0PSB0eXBob29uX2dldF9yaW5ncGFyYW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz02MDE9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBheF9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy02MDItXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBheF9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYzo2MDM6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTYwNC1cXHQuZ2V0X3RzX2luZm9cXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTI1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIG93bF9lbWFjX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMjUzLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gb3dsX2VtYWNfZXRodG9vbF9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTI1NDpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEyNTUtXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmM9MTA2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGFkaW4xMTEwX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTEwNjctXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBhZGluMTExMF9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYzoxMDY4OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy0xMDY5LVxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmM9MTEzMz1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGdyZXRoX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMTM4LVxcdC5nZXRfcmVncyAgICAgICAgICAgICAgID0gZ3JldGhfZ2V0X3JlZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYzoxMTM5OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTExNDAtXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM9Mjk5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGV0MTMxeF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTI5OTktXFx0LmdldF9yZWdzXFx0PSBldDEzMXhfZ2V0X3JlZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmM6MzAwMDpcXHQuZ2V0X2xpbmtcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtMzAwMS1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzID0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zMTExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYWlyb2hhX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTE1LVxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxMTY6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzExNy19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxhY3JpdGVjaC9zbGljb3NzLmM9MTUzNj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHNsaWNfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxhY3JpdGVjaC9zbGljb3NzLmMtMTUzNy1cXHQuZ2V0X2RydmluZm9cXHRcXHQ9IHNsaWNfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxhY3JpdGVjaC9zbGljb3NzLmM6MTUzODpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxhY3JpdGVjaC9zbGljb3NzLmMtMTUzOS1cXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IHNsaWNfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL2VlYS9lZWFfZXRodG9vbC5jPTI2MT1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZWVhX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9lZWEvZWVhX2V0aHRvb2wuYy0yNjMtXFx0LmdldF9kcnZpbmZvICAgICAgICA9IGVlYV9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL2VlYS9lZWFfZXRodG9vbC5jOjI2NDpcXHQuZ2V0X2xpbmsgICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL2VlYS9lZWFfZXRodG9vbC5jLTI2NS1cXHQuZ2V0X3JpbmdwYXJhbSAgICAgID0gZWVhX2dldF9yaW5ncGFyYW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jPTM1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGVtYWNfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxsd2lubmVyL3N1bjRpLWVtYWMuYy0zNTMtXFx0LmdldF9kcnZpbmZvXFx0PSBlbWFjX2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsbHdpbm5lci9zdW40aS1lbWFjLmM6MzU0OlxcdC5nZXRfbGlua1xcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGx3aW5uZXIvc3VuNGktZW1hYy5jLTM1NS1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzID0gcGh5X2V0aHRvb2xfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfZXRodG9vbC5jPTI0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHRzZV9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX2V0aHRvb2wuYy0yNDMtXFx0LmdldF9yZWdzID0gdHNlX2dldF9yZWdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX2V0aHRvb2wuYzoyNDQ6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9ldGh0b29sLmMtMjQ1LVxcdC5nZXRfc3RyaW5ncyA9IHRzZV9nc3RyaW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX2V0aHRvb2wuYz0xMDY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5hX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfZXRodG9vbC5jLTEwNzQtXFx0LnNldF9tc2dsZXZlbFxcdFxcdD0gZW5hX3NldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9ldGh0b29sLmM6MTA3NTpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfZXRodG9vbC5jLTEwNzYtXFx0LmdldF9jb2FsZXNjZVxcdFxcdD0gZW5hX2dldF9jb2FsZXNjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM9NjcwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXUxMDAwX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtNjcxLVxcdC5nZXRfZHJ2aW5mbyA9IGF1MTAwMF9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXUxMDAwX2V0aC5jOjY3MjpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtNjczLVxcdC5nZXRfbXNnbGV2ZWwgPSBhdTEwMDBfZ2V0X21zZ2xldmVsLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3N1bmxhbmNlLmM9MTI4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHNwYXJjX2xhbmNlX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9zdW5sYW5jZS5jLTEyODMtXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBzcGFyY19sYW5jZV9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvc3VubGFuY2UuYzoxMjg0OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvc3VubGFuY2UuYy0xMjg1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWV0aHRvb2wuYz03Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB4Z2JlX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1ldGh0b29sLmMtNzQyLVxcdC5zZXRfbXNnbGV2ZWwgPSB4Z2JlX3NldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWV0aHRvb2wuYzo3NDM6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWV0aHRvb2wuYy03NDQtXFx0LmdldF9jb2FsZXNjZSA9IHhnYmVfZ2V0X2NvYWxlc2NlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL2V0aHRvb2wuYz0xNjI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB4Z2VfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL2V0aHRvb2wuYy0xNjMtXFx0LmdldF9kcnZpbmZvID0geGdlX2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9ldGh0b29sLmM6MTY0OlxcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL2V0aHRvb2wuYy0xNjUtXFx0LmdldF9zdHJpbmdzID0geGdlX2dldF9zdHJpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfZXRodG9vbC5jPTMyOD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHhnZW5lX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2V0aHRvb2wuYy0zMjktXFx0LmdldF9kcnZpbmZvID0geGdlbmVfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfZXRodG9vbC5jOjMzMDpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2V0aHRvb2wuYy0zMzEtXFx0LmdldF9zdHJpbmdzID0geGdlbmVfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcHBsZS9ibWFjLmM9MTE2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGJtYWNfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBwbGUvYm1hYy5jOjExNjU6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwcGxlL2JtYWMuYy0xMTY2LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9ldGh0b29sLmM9NDQ9c3RhdGljIHUzMiBhcV9ldGh0b29sX2dldF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX2V0aHRvb2wuYy00NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfZXRodG9vbC5jOjQ2OlxcdHJldHVybiBldGh0b29sX29wX2dldF9saW5rKG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX2V0aHRvb2wuYy00Ny19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM9OTc9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhcmNfZW1hY19ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmMtOTgtXFx0LmdldF9kcnZpbmZvXFx0PSBhcmNfZW1hY19nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tYWluLmM6OTk6XFx0LmdldF9saW5rXFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21haW4uYy0xMDAtXFx0LmdldF9saW5rX2tzZXR0aW5ncyA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuYz0yMTQ9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGF4ODg3OTZjX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfaW9jdGwuYy0yMTUtXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBheDg4Nzk2Y19nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX2lvY3RsLmM6MjE2OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX2lvY3RsLmMtMjE3LVxcdC5nZXRfbXNnbGV2ZWxcXHRcXHQ9IGF4ODg3OTZjX2dldF9tc2dsZXZlbCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9NTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYWc3MXh4X2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtNTQzLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdFxcdD0gYWc3MXh4X2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6NTQ0OlxcdC5nZXRfbGlua1xcdFxcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTU0NS1cXHQuZ2V0X3RzX2luZm9cXHRcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FseC9ldGh0b29sLmM9MzIzPWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhbHhfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FseC9ldGh0b29sLmMtMzI3LVxcdC5zZXRfbXNnbGV2ZWxcXHQ9IGFseF9zZXRfbXNnbGV2ZWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hbHgvZXRodG9vbC5jOjMyODpcXHQuZ2V0X2xpbmtcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hbHgvZXRodG9vbC5jLTMyOS1cXHQuZ2V0X3N0cmluZ3NcXHQ9IGFseF9nZXRfc3RyaW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jPTI3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGF0bDFjX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ldGh0b29sLmMtMjg0LVxcdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gYXRsMWNfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2V0aHRvb2wuYzoyODU6XFx0LmdldF9saW5rICAgICAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfZXRodG9vbC5jLTI4Ni1cXHQuZ2V0X2VlcHJvbV9sZW4gICAgICAgICA9IGF0bDFjX2dldF9lZXByb21fbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ldGh0b29sLmM9MzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXRsMWVfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2V0aHRvb2wuYy0zNzAtXFx0Lm53YXlfcmVzZXQgICAgICAgICAgICAgPSBhdGwxZV9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfZXRodG9vbC5jOjM3MTpcXHQuZ2V0X2xpbmsgICAgICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ldGh0b29sLmMtMzcyLVxcdC5nZXRfZWVwcm9tX2xlbiAgICAgICAgID0gYXRsMWVfZ2V0X2VlcHJvbV9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jPTM2NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhdGwxX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDEuYy0zNjc0LVxcdC5zZXRfcGF1c2VwYXJhbVxcdFxcdD0gYXRsMV9zZXRfcGF1c2VwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jOjM2NzU6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwxLmMtMzY3Ni1cXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IGF0bDFfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jPTIwMzk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBhdGwyX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYy0yMDQ3LVxcdC5ud2F5X3Jlc2V0XFx0XFx0PSBhdGwyX253YXlfcmVzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYzoyMDQ4OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jLTIwNDktXFx0LmdldF9lZXByb21fbGVuXFx0XFx0PSBhdGwyX2dldF9lZXByb21fbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jPTQ0Mz1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNtYXNwX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2V0aHRvb2wuYy00NDQtXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBiY21hc3BfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jOjQ0NTpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfZXRodG9vbC5jLTQ0Ni1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzXFx0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYz0yMTAyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYjQ0X2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjEwNC1cXHQubndheV9yZXNldFxcdFxcdD0gYjQ0X253YXlfcmVzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM6MjEwNTpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjEwNi1cXHQuZ2V0X3dvbFxcdFxcdD0gYjQ0X2dldF93b2wsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz0xNTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNtX2VuZXRfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYy0xNTkwLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gYmNtX2VuZXRfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MTU5MTpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTU5Mi1cXHQuZ2V0X3JpbmdwYXJhbVxcdFxcdD0gYmNtX2VuZXRfZ2V0X3JpbmdwYXJhbSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0yMjQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNtX3N5c3BvcnRfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjI0OS1cXHQuc2V0X21zZ2xldmVsXFx0XFx0PSBiY21fc3lzcG9ydF9zZXRfbXNnbHZsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYzoyMjUwOlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjI1MS1cXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IGJjbV9zeXNwb3J0X2dldF9zdHJpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYz0xNjc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYmNtZ2VuZXRfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTE2ODctXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBiY21nZW5ldF9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jOjE2ODg6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMtMTY4OS1cXHQuZ2V0X21zZ2xldmVsXFx0XFx0PSBiY21nZW5ldF9nZXRfbXNnbGV2ZWwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz0xNDIyOT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHRnM19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE0MjQyLVxcdC5ud2F5X3Jlc2V0XFx0XFx0PSB0ZzNfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNDI0MzpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTQyNDQtXFx0LmdldF9lZXByb21fbGVuXFx0XFx0PSB0ZzNfZ2V0X2VlcHJvbV9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYz0xMDY5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYm5hZF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTEwNzQtXFx0LmdldF93b2wgPSBibmFkX2dldF93b2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmM6MTA3NTpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTEwNzYtXFx0LmdldF9jb2FsZXNjZSA9IGJuYWRfZ2V0X2NvYWxlc2NlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00MTIzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbWFjYl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDEyNS1cXHQuZ2V0X3JlZ3NcXHRcXHQ9IG1hY2JfZ2V0X3JlZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0MTI2OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQxMjctXFx0LmdldF90c19pbmZvXFx0XFx0PSBldGh0b29sX29wX2dldF90c19pbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00MTU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZ2VtX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MTU4LVxcdC5zZXRfd29sXFx0XFx0PSBtYWNiX3NldF93b2wsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0MTU5OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQxNjAtXFx0LmdldF90c19pbmZvXFx0XFx0PSBtYWNiX2dldF90c19pbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FseGVkYS94Z21hYy5jPTE2NzE9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB4Z21hY19ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWx4ZWRhL3hnbWFjLmM6MTY3MjpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhbHhlZGEveGdtYWMuYy0xNjczLVxcdC5nZXRfcGF1c2VwYXJhbSA9IHhnbWFjX2dldF9wYXVzZXBhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM9MzExNT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxpb19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTMxMjAtXFx0LnNldF9mZWNwYXJhbVxcdFxcdD0gbGlvX3NldF9mZWNwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYzozMTIxOlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0zMTIyLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gbGlvX2dldF9kcnZpbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19ldGh0b29sLmM9MzE0OD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxpb192Zl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fZXRodG9vbC5jLTMxNTAtXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gbGlvX2dldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYzozMTUxOlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2V0aHRvb2wuYy0zMTUyLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gbGlvX2dldF92Zl9kcnZpbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL29jdGVvbi9vY3Rlb25fbWdtdC5jPTEzNTk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBvY3Rlb25fbWdtdF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy0xMzYxLVxcdC5ud2F5X3Jlc2V0ID0gb2N0ZW9uX21nbXRfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vb2N0ZW9uL29jdGVvbl9tZ210LmM6MTM2MjpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9uX21nbXQuYy0xMzYzLVxcdC5nZXRfbGlua19rc2V0dGluZ3MgPSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IvY3hnYjIuYz04MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB0MV9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYi9jeGdiMi5jLTgxOC1cXHQuc2V0X3BhdXNlcGFyYW0gICAgPSBzZXRfcGF1c2VwYXJhbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IvY3hnYjIuYzo4MTk6XFx0LmdldF9saW5rICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IvY3hnYjIuYy04MjAtXFx0LmdldF9zdHJpbmdzICAgICAgID0gZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2IzL2N4Z2IzX21haW4uYz0yMTAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgY3hnYl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjMvY3hnYjNfbWFpbi5jLTIxMTQtXFx0LnNldF9wYXVzZXBhcmFtID0gc2V0X3BhdXNlcGFyYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiMy9jeGdiM19tYWluLmM6MjExNTpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjMvY3hnYjNfbWFpbi5jLTIxMTYtXFx0LmdldF9zdHJpbmdzID0gZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYz0yMTc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgY3hnYl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jLTIxOTYtXFx0LnNldF9wYXVzZXBhcmFtICAgID0gc2V0X3BhdXNlcGFyYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6MjE5NzpcXHQuZ2V0X2xpbmsgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jLTIxOTgtXFx0LmdldF9zdHJpbmdzICAgICAgID0gZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0dmYvY3hnYjR2Zl9tYWluLmM9MTkyOD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGN4Z2I0dmZfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0dmYvY3hnYjR2Zl9tYWluLmMtMTk0MC1cXHQuZ2V0X3BhdXNlcGFyYW1cXHRcXHQ9IGN4Z2I0dmZfZ2V0X3BhdXNlcGFyYW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNHZmL2N4Z2I0dmZfbWFpbi5jOjE5NDE6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjR2Zi9jeGdiNHZmX21haW4uYy0xOTQyLVxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gY3hnYjR2Zl9nZXRfc3RyaW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19ldGh0b29sLmM9ODIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5pY19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19ldGh0b29sLmMtODI3LVxcdC5zZXRfbXNnbGV2ZWwgPSBlbmljX3NldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfZXRodG9vbC5jOjgyODpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19ldGh0b29sLmMtODI5LVxcdC5nZXRfc3RyaW5ncyA9IGVuaWNfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyODg9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBnbWFjXzM1MXhfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyOTMtXFx0LmdldF9ldGh0b29sX3N0YXRzID0gZ21hY19nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIyOTQ6XFx0LmdldF9saW5rXFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjI5NS1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzID0gZ21hY19nZXRfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz02NTY9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBkbTkwNTFfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTY2Mi1cXHQubndheV9yZXNldCA9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYzo2NjM6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jLTY2NC1cXHQuZ2V0X2VlcHJvbV9sZW4gPSBkbTkwNTFfZ2V0X2VlcHJvbV9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jPTE2OTk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBkZV9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jOjE3MDA6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmMtMTcwMS1cXHQuZ2V0X2RydmluZm9cXHRcXHQ9IGRlX2dldF9kcnZpbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RtZmUuYz0xMTA0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbmV0ZGV2X2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kbWZlLmMtMTEwNS1cXHQuZ2V0X2RydmluZm9cXHRcXHQ9IGRtZmVfZXRodG9vbF9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZG1mZS5jOjExMDY6XFx0LmdldF9saW5rICAgICAgICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kbWZlLmMtMTEwNy1cXHQuc2V0X3dvbFxcdFxcdD0gZG1mZV9ldGh0b29sX3NldF93b2wsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfZXRodG9vbC5jPTE0MDk9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGJlX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX2V0aHRvb2wuYy0xNDE1LVxcdC5zZXRfd29sID0gYmVfc2V0X3dvbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfZXRodG9vbC5jOjE0MTY6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfZXRodG9vbC5jLTE0MTctXFx0LmdldF9lZXByb21fbGVuID0gYmVfZ2V0X2VlcHJvbV9sZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9ldGh0b29sLmM9NDYxPWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB0c25lcF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX2V0aHRvb2wuYy00NjgtXFx0Lm53YXlfcmVzZXQgPSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX2V0aHRvb2wuYzo0Njk6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9ldGh0b29sLmMtNDcwLVxcdC5zZWxmX3Rlc3QgPSB0c25lcF9ldGh0b29sX3NlbGZfdGVzdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM9OTk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZXRob2NfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEwMDAtXFx0Lm53YXlfcmVzZXQgPSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6MTAwMTpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTAwMi1cXHQuZ2V0X3JpbmdwYXJhbSA9IGV0aG9jX2dldF9yaW5ncGFyYW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTEyMTk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmdGdtYWMxMDBfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xMjIwLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gZnRnbWFjMTAwX2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTIyMTpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xMjIyLVxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRodG9vbC5jPTUxMT1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZHBhYV9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRodG9vbC5jLTUxOS1cXHQuc2V0X3BhdXNlcGFyYW0gPSBkcGFhX3NldF9wYXVzZXBhcmFtLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRodG9vbC5jOjUyMDpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRodG9vbC5jLTUyMS1cXHQuZ2V0X3NzZXRfY291bnQgPSBkcGFhX2dldF9zc2V0X2NvdW50LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aHRvb2wuYz05OTY9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGRwYWEyX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aHRvb2wuYy0xMDAwLVxcdC5ud2F5X3Jlc2V0ID0gZHBhYTJfZXRoX253YXlfcmVzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aHRvb2wuYzoxMDAxOlxcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aHRvb2wuYy0xMDAyLVxcdC5nZXRfbGlua19rc2V0dGluZ3MgPSBkcGFhMl9ldGhfZ2V0X2xpbmtfa3NldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC1ldGh0b29sLmM9MjU2PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBkcGFhMl9zd2l0Y2hfcG9ydF9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLWV0aHRvb2wuYy0yNTctXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBkcGFhMl9zd2l0Y2hfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLXN3aXRjaC1ldGh0b29sLmM6MjU4OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItc3dpdGNoLWV0aHRvb2wuYy0yNTktXFx0LmdldF9saW5rX2tzZXR0aW5nc1xcdD0gZHBhYTJfc3dpdGNoX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmM9MTUzMT1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5ldGNfcGZfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE1NTYtXFx0LnNldF9saW5rX2tzZXR0aW5ncyA9IGVuZXRjX3NldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jOjE1NTc6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE1NTgtXFx0LmdldF90c19pbmZvID0gZW5ldGNfZ2V0X3RzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jPTE1Njg9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGVuZXRjNF9wcG1fZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE1ODYtXFx0LnNldF9saW5rX2tzZXR0aW5ncyA9IGVuZXRjX3NldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jOjE1ODc6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE1ODgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmM9MTU5MD1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW5ldGNfdmZfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE2MDgtXFx0LnNldF9jb2FsZXNjZSA9IGVuZXRjX3NldF9jb2FsZXNjZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jOjE2MDk6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jLTE2MTAtXFx0LmdldF90c19pbmZvID0gZW5ldGNfZ2V0X3RzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfZXRodG9vbC5jPTE2MTM9Y29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGVuZXRjNF9wZl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmMtMTYyOC1cXHQuc2V0X2xpbmtfa3NldHRpbmdzID0gZW5ldGNfc2V0X2xpbmtfa3NldHRpbmdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmM6MTYyOTpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ldGh0b29sLmMtMTYzMC1cXHQuZ2V0X3dvbCA9IGVuZXRjX2dldF93b2wsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0zNzg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZmVjX2VuZXRfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zNzkzLVxcdC5ud2F5X3Jlc2V0XFx0XFx0PSBwaHlfZXRodG9vbF9ud2F5X3Jlc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjM3OTQ6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTM3OTUtXFx0LmdldF9jb2FsZXNjZVxcdFxcdD0gZmVjX2VuZXRfZ2V0X2NvYWxlc2NlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM9NzgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbXBjNTJ4eF9mZWNfZXRodG9vbF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmM6NzgyOlxcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4LmMtNzgzLVxcdC5nZXRfbXNnbGV2ZWwgPSBtcGM1Mnh4X2ZlY19nZXRfbXNnbGV2ZWwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYz04MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmc19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTgxNS1cXHQubndheV9yZXNldCA9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM6ODE2OlxcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtODE3LVxcdC5nZXRfbXNnbGV2ZWwgPSBmc19nZXRfbXNnbGV2ZWwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcl9ldGh0b29sLmM9MTUwMj1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZ2Zhcl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyX2V0aHRvb2wuYy0xNTA3LVxcdC5nZXRfcmVncyA9IGdmYXJfZ2V0X3JlZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXJfZXRodG9vbC5jOjE1MDg6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcl9ldGh0b29sLmMtMTUwOS1cXHQuZ2V0X2NvYWxlc2NlID0gZ2Zhcl9nY29hbGVzY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGhfZXRodG9vbC5jPTM1OT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHVlY19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aF9ldGh0b29sLmMtMzY1LVxcdC5ud2F5X3Jlc2V0ICAgICAgICAgICAgID0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGhfZXRodG9vbC5jOjM2NjpcXHQuZ2V0X2xpbmsgICAgICAgICAgICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoX2V0aHRvb2wuYy0zNjctXFx0LmdldF9yaW5ncGFyYW0gICAgICAgICAgPSB1ZWNfZ2V0X3JpbmdwYXJhbSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfZXRodG9vbC5jPTExNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmdW5fZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS9mdW5ldGgvZnVuZXRoX2V0aHRvb2wuYy0xMTU0LVxcdC5nZXRfcmVncyAgICAgICAgICAgID0gZnVuX2dldF9yZWdzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfZXRodG9vbC5jOjExNTU6XFx0LmdldF9saW5rXFx0ICAgICA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9ldGh0b29sLmMtMTE1Ni1cXHQuZ2V0X2NvYWxlc2NlICAgICAgICA9IGZ1bl9nZXRfY29hbGVzY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmM9OTgyPWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBndmVfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtMTAwMy1cXHQuc2V0X3J4ZmggPSBndmVfc2V0X3J4ZmgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jOjEwMDQ6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtMTAwNS1cXHQuZ2V0X2NvYWxlc2NlID0gZ3ZlX2dldF9jb2FsZXNjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19ldGh0b29sLmM9NDc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaGJnX2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19ldGh0b29sLmM6NDc5OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfZXRodG9vbC5jLTQ4MC1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzXFx0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jPTY3OD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGhpc2lfZmVtYWNfZXRodG9vbHNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmM6Njc5OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jLTY4MC1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzXFx0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmM9OTEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaGl4NWhkMl9ldGh0b29sc19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jOjkxMzpcXHQuZ2V0X2xpbmtcXHRcXHQ9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jLTkxNC1cXHQuZ2V0X2xpbmtfa3NldHRpbmdzICAgICA9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM9MTc1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGhpbmljX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYy0xNzU4LVxcdC5nZXRfZHJ2aW5mbyA9IGhpbmljX2dldF9kcnZpbmZvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmM6MTc1OTpcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTc2MC1cXHQuZ2V0X2xpbmtfZXh0X3N0YXRlID0gaGluaWNfZ2V0X2xpbmtfZXh0X3N0YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX2V0aHRvb2wuYz0xNzg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaGluaWN2Zl9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19ldGh0b29sLmMtMTc5NC1cXHQuZ2V0X2RydmluZm8gPSBoaW5pY19nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jOjE3OTU6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfZXRodG9vbC5jLTE3OTYtXFx0LmdldF9yaW5ncGFyYW0gPSBoaW5pY19nZXRfcmluZ3BhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfZXRodG9vbC5jPTQxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGhpbmljM19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2V0aHRvb2wuYy00MTgtXFx0LnNldF9tc2dsZXZlbCAgICAgICAgICAgICAgICAgICA9IGhpbmljM19zZXRfbXNnbGV2ZWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfZXRodG9vbC5jOjQxOTpcXHQuZ2V0X2xpbmsgICAgICAgICAgICAgICAgICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19ldGh0b29sLmMtNDIwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZWhlYS9laGVhX2V0aHRvb2wuYz0yNjE9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlaGVhX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VoZWEvZWhlYV9ldGh0b29sLmMtMjY0LVxcdC5zZXRfbXNnbGV2ZWwgPSBlaGVhX3NldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZWhlYS9laGVhX2V0aHRvb2wuYzoyNjU6XFx0LmdldF9saW5rID0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZWhlYS9laGVhX2V0aHRvb2wuYy0yNjYtXFx0LmdldF9zdHJpbmdzID0gZWhlYV9nZXRfc3RyaW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yMjgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgZW1hY19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yMjk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyMjk3OlxcdC5nZXRfbGluayA9IGV0aHRvb2xfb3BfZ2V0X2xpbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTIyOTgtXFx0LmdldF9saW5rX2tzZXR0aW5ncyA9IGVtYWNfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjUxMj1zdGF0aWMgaW50IGVtYWNfbWRpb19wb2xsX2xpbmsoc3RydWN0IG1paV9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTIwLVxcdFxcdGRldl9lcnIoXFx1MDAyNmRldi1cXHUwMDNlb2ZkZXYtXFx1MDAzZWRldiwgXFxcImxpbmsgdXBkYXRlIGZhaWxlZCAoJWQpLlxcXCIsIHJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI1MjE6XFx0XFx0cmV0dXJuIGV0aHRvb2xfb3BfZ2V0X2xpbmsobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1MjItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYz0xMTcwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbmV0ZGV2X2V0aHRvb2xfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTE3MS1cXHQuZ2V0X2RydmluZm9cXHRcXHQgICAgICAgICA9IG5ldGRldl9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jOjExNzI6XFx0LmdldF9saW5rXFx0XFx0ICAgICAgICAgPSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTE3My1cXHQuZ2V0X3N0cmluZ3NcXHRcXHQgICAgICAgICA9IGlibXZldGhfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvZXRodG9vbC5jPTIzNjE9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlMTAwMF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9ldGh0b29sLmMtMjM3MC1cXHQubndheV9yZXNldFxcdFxcdD0gZTEwMDBfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvZXRodG9vbC5jOjIzNzE6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9ldGh0b29sLmMtMjM3Mi1cXHQuZ2V0X2VlcHJvbV9sZW5cXHRcXHQ9IGUxMDAwX2dldF9lZXByb21fbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfZXRodG9vbC5jPTExMzY9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmbTEwa19ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX2V0aHRvb2wuYy0xMTQyLVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gZm0xMGtfZ2V0X2RydmluZm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfZXRodG9vbC5jOjExNDM6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX2V0aHRvb2wuYy0xMTQ0LVxcdC5nZXRfcGF1c2VwYXJhbVxcdFxcdD0gZm0xMGtfZ2V0X3BhdXNlcGFyYW0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZXRodG9vbC5jPTU3ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpNDBlX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2V0aHRvb2wuYy01Nzk4LVxcdC5ud2F5X3Jlc2V0XFx0XFx0PSBpNDBlX253YXlfcmVzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX2V0aHRvb2wuYzo1Nzk5OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfZXRodG9vbC5jLTU4MDAtXFx0LmdldF9saW5rX2V4dF9zdGF0c1xcdD0gaTQwZV9nZXRfbGlua19leHRfc3RhdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jPTE4NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpYXZmX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2V0aHRvb2wuYy0xODU5LVxcdC5nZXRfZHJ2aW5mb1xcdFxcdD0gaWF2Zl9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfZXRodG9vbC5jOjE4NjA6XFx0LmdldF9saW5rXFx0XFx0PSBldGh0b29sX29wX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9ldGh0b29sLmMtMTg2MS1cXHQuZ2V0X3JpbmdwYXJhbVxcdFxcdD0gaWF2Zl9nZXRfcmluZ3BhcmFtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM9NDgzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGljZV9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ4NTItXFx0LnNlbGZfdGVzdFxcdFxcdD0gaWNlX3NlbGZfdGVzdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYzo0ODUzOlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00ODU0LVxcdC5nZXRfbGlua19leHRfc3RhdHNcXHQ9IGljZV9nZXRfbGlua19leHRfc3RhdHMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYz00ODkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgaWNlX2V0aHRvb2xfc2FmZV9tb2RlX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ5MDAtXFx0LnNldF9tc2dsZXZlbFxcdFxcdD0gaWNlX3NldF9tc2dsZXZlbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYzo0OTAxOlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00OTAyLVxcdC5nZXRfZWVwcm9tX2xlblxcdFxcdD0gaWNlX2dldF9lZXByb21fbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM9NDkyMj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGljZV9ldGh0b29sX3JlcHJfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTQ5MjMtXFx0LmdldF9kcnZpbmZvXFx0XFx0PSBpY2VfcmVwcl9nZXRfZHJ2aW5mbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYzo0OTI0OlxcdC5nZXRfbGlua1xcdFxcdD0gZXRodG9vbF9vcF9nZXRfbGluayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy00OTI1LVxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gaWNlX3JlcHJfZ2V0X3N0cmluZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfZXRodG9vbC5jPTE4MDE9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBpZHBmX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM4OjQwLjQ5MDU4NTM5N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI1NDYxNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgKipcblxuQWxyaWdodCwgc28gYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLi4uIHRoYXQgcmluZ3MgYSBiZWxsLiBJdCdzIGEgZnVuZGFtZW50YWwgb3BlcmF0aW9uLCBubyBxdWVzdGlvbi4gSWYgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgZnVsbHksIHRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGlzIGdvaW5nIHRvIGJlIGBuZXQvZXRodG9vbC9pb2N0bC5jYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZXRodG9vbCBJT0NUTCBoYW5kbGluZyB0eXBpY2FsbHkgcmVzaWRlcywgc28gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBldGh0b29sX29wX2dldF9saW5rYCBzaG91bGQgYmUgdGhlcmUuIFRpbWUgdG8gZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4ODcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozODo0My43MTYwNDk3NTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NzYyOTIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJldGh0b29sX29wX2dldF9saW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9ldGh0b29sL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZXRodG9vbC9pb2N0bC5jPTQ4PXN0YXRpYyBzdHJ1Y3QgZGV2bGluayAqbmV0ZGV2X3RvX2RldmxpbmtfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvZXRodG9vbC9pb2N0bC5jLTYwLVxcbm5ldC9ldGh0b29sL2lvY3RsLmM6NjE6dTMyIGV0aHRvb2xfb3BfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvZXRodG9vbC9pb2N0bC5jLTYyLXtcXG4tLVxcbm5ldC9ldGh0b29sL2lvY3RsLmMtNjctfVxcbm5ldC9ldGh0b29sL2lvY3RsLmM6Njg6RVhQT1JUX1NZTUJPTChldGh0b29sX29wX2dldF9saW5rKTtcXG5uZXQvZXRodG9vbC9pb2N0bC5jLTY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozODo0NC4wNzM2ODUwMzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExMTgxMjQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBldGh0b29sX29wX2dldF9saW5rYCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQncyBkaWcgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgbGluayBzdGF0dXMgcXVlcmllcyB2aWEgZXRodG9vbC4gSSdtIGdvaW5nIHN0cmFpZ2h0IGZvciB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L2V0aHRvb2wvaW9jdGwuY2AsIGFuZCB6ZXJvaW5nIGluIG9uIHRoZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgZnVuY3Rpb24uIEknbSBleHBlY3RpbmcgdGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgd2hlcmUgdGhlIGtlcm5lbCB0cmFuc2xhdGVzIGEgdXNlci1zcGFjZSByZXF1ZXN0IGZvciBsaW5rIGluZm9ybWF0aW9uIGludG8gc29tZXRoaW5nIGNvbmNyZXRlLiBJIHdhbnQgdG8gc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBOSUMgZHJpdmVycywgd2hhdCBkYXRhIHN0cnVjdHVyZXMgaXQgdXRpbGl6ZXMsIGFuZCBpZiB0aGVyZSBhcmUgYW55IGdvdGNoYXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJJ20ga2VlbiB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBtZWNoYW5pY3MgYmVoaW5kIGhvdyB0aGUga2VybmVsIGRldGVybWluZXMgaWYgYSBsaW5rIGlzIHVwIG9yIGRvd24sIHRoZSByZWxpYWJpbGl0eSBvZiB0aGlzIGluZm9ybWF0aW9uLCBhbmQgYW55IHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIG9yIGRlYnVnZ2luZy4gVGltZSB0byBzZWUgd2hhdCdzIHdoYXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MjY1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6NDcuMTg1NTAwMjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5NDExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9ldGh0b29sL2lvY3RsLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjEsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNjE6XFx0dTMyIGV0aHRvb2xfb3BfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gIDYyOlxcdHtcXG4gIDYzOlxcdFxcdC8qIFN5bmNocm9uaXplIGNhcnJpZXIgc3RhdGUgd2l0aCBsaW5rIHdhdGNoLCBzZWUgYWxzbyBydG5sX2dldGxpbmsoKSAqL1xcbiAgNjQ6XFx0XFx0X19saW5rd2F0Y2hfc3luY19kZXYoZGV2KTtcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0cmV0dXJuIG5ldGlmX2NhcnJpZXJfb2soZGV2KSA/IDEgOiAwO1xcbiAgNjc6XFx0fVxcbiAgNjg6XFx0RVhQT1JUX1NZTUJPTChldGh0b29sX29wX2dldF9saW5rKTtcXG4gIDY5OlxcdFxcbiAgNzA6XFx0aW50IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6NDcuMTg1OTk1NDRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk2NTE3NzA2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIExpbmsgV2F0Y2ggRnVuY3Rpb24qKlxuXG5SaWdodCwgc28gYF9fbGlua3dhdGNoX3N5bmNfZGV2KGRldilgIGp1c3QgZ290IGNhbGxlZC4gVGhhdCdzIGEga2V5IGZ1bmN0aW9uIGluIG5ldHdvcmsgZGV2aWNlIG1hbmFnZW1lbnQuIE15IGZpcnN0IHRob3VnaHQgaXM6IGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGlzIHBvcHBpbmcgdXAhIERvZXMgdGhpcyBmdW5jdGlvbiBuZWVkIHRoZSBgcnRubF9sb2NrYCBoZWxkPyBJIGNhbid0IGp1c3QgYXNzdW1lIGl0IGhhbmRsZXMgbG9ja2luZyBjb3JyZWN0bHkuIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCBhbmQgY29uZmlybSB3aGV0aGVyIGl0IHRha2VzIHRoYXQgbG9jayBvciByZWxpZXMgb24gdGhlIGNhbGxlciB0byBwcm92aWRlIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgbG9ja2luZyBzdHJhdGVneSB0byBiZSBzdXJlIHRoaW5ncyBhcmUgaGFuZGxlZCBzYWZlbHksIGF2b2lkaW5nIGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIG9yIGRhdGEgY29ycnVwdGlvbi4gR290dGEgc3RheSBzaGFycCBhbmQgbWFrZSBzdXJlIEkgZnVsbHkgdW5kZXJzdGFuZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3MTksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM4OjUwLjE1MTE3Nzg5N1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0MjYwNzYxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2xpbmt3YXRjaF9zeW5jX2RldlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTQ1ODk9dm9pZCBsaW5rd2F0Y2hfc3luY19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo0NTkwOnZvaWQgX19saW5rd2F0Y2hfc3luY19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC00NTkxLVxcbi0tXFxubmV0L2NvcmUvbGlua193YXRjaC5jPTI1OT1zdGF0aWMgYm9vbCBsaW5rd2F0Y2hfY2xlYW5fZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvY29yZS9saW5rX3dhdGNoLmMtMjc3LVxcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYzoyNzg6dm9pZCBfX2xpbmt3YXRjaF9zeW5jX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0yNzkte1xcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYz02MT11MzIgZXRodG9vbF9vcF9nZXRfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2V0aHRvb2wvaW9jdGwuYy02My1cXHQvKiBTeW5jaHJvbml6ZSBjYXJyaWVyIHN0YXRlIHdpdGggbGluayB3YXRjaCwgc2VlIGFsc28gcnRubF9nZXRsaW5rKCkgKi9cXG5uZXQvZXRodG9vbC9pb2N0bC5jOjY0OlxcdF9fbGlua3dhdGNoX3N5bmNfZGV2KGRldik7XFxubmV0L2V0aHRvb2wvaW9jdGwuYy02NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6NTIuMjkzNzkzMTgzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODA1OTUwMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYF9fbGlua3dhdGNoX3N5bmNfZGV2YCoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaW1lIHRvIGNyYWNrIG9wZW4gYG5ldC9jb3JlL2xpbmtfd2F0Y2guY2AgYW5kIHNwZWNpZmljYWxseSwgSSdtIHplcm9pbmcgaW4gb24gYF9fbGlua3dhdGNoX3N5bmNfZGV2YC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgbGlrZWx5IGlzIHRoZSAqY29yZSogZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHN5bmNocm9uaXppbmcgbmV0d29yayBkZXZpY2UgbGluayBzdGF0ZSBjaGFuZ2VzLiBHaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24sIHRoZSBkb3VibGUgdW5kZXJzY29yZSB1c3VhbGx5IGluZGljYXRlcyBhbiBpbnRlcm5hbCwgaGVscGVyIGZ1bmN0aW9uLCBub3QgaW50ZW5kZWQgZm9yIGRpcmVjdCBleHRlcm5hbCBjYWxscy5cblxuS25vd2luZyB0aGUgbmV0d29ya2luZyBzdGFjaywgSSdtIGV4cGVjdGluZyB0aGlzIGZ1bmN0aW9uIHRvIGhhbmRsZSB0YXNrcyBsaWtlOlxuXG4qICAgKipTdGF0ZSB0cmFuc2l0aW9uIGxvZ2ljOioqIEl0IHdpbGwgaGF2ZSBzb21lIGxvZ2ljIGRlYWxpbmcgd2l0aCB0aGUgcG9zc2libGUgbGluayBzdGF0ZXMsIG1vc3QgbGlrZWx5IHVwLCBkb3duLCBjYXJyaWVyIGNoYW5nZXMgZXRjLlxuKiAgICoqRXZlbnQgbm90aWZpY2F0aW9uOioqIEknbSBndWVzc2luZyBpdCB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciB0cmlnZ2VyaW5nIGFwcHJvcHJpYXRlIG5vdGlmaWNhdGlvbnMvY2FsbGJhY2tzIHRvIHJlbGV2YW50IHN1YnN5c3RlbXMgYmFzZWQgb24gdGhlIGxpbmsgc3RhdGUuIFRoaXMgbGlrZWx5IGludm9sdmVzIHNvbWUgZm9ybSBvZiB0YXNrbGV0IG9yIHdvcmtxdWV1ZSB1c2FnZSB0byBoYW5kbGUgdGhlIGV2ZW50cy5cbiogICAqKlJhY2UgY29uZGl0aW9uIHByb3RlY3Rpb246KiogSSdsbCBiZSBjdXJpb3VzIHRvIGxvb2sgYXQgYW55IGxvY2tpbmcgbWVjaGFuaXNtcyB1c2VkIHRvIGVuc3VyZSB0aGUgc3RhdGUgdXBkYXRlcyBhcmUgdGhyZWFkLXNhZmUsIHBhcnRpY3VsYXJseSBnaXZlbiB0aGUgYXN5bmNocm9ub3VzIG5hdHVyZSBvZiBuZXR3b3JrIGV2ZW50cy5cbiogICAqKkVycm9yIGhhbmRsaW5nOioqIFdoYXQgZWRnZSBjYXNlcyBkb2VzIGl0IGFjY291bnQgZm9yPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBkZXZpY2UgZHJpdmVyIGludGVyYWN0aW9ucyBvciBoYXJkd2FyZSBmYWlsdXJlcz9cblxuSSBuZWVkIHRvIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kIC0gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGRldmljZSBkcml2ZXJzLCBvdGhlciBuZXR3b3JrIHN1YnN5c3RlbXMsIGFuZCBob3cgaXQgYXZvaWRzIGFueSBkYXRhIGNvcnJ1cHRpb24gb3IgcmFjZSBjb25kaXRpb25zLiBUaGlzIGlzIGdvaW5nIHRvIGJlIG15IHN0YXJ0aW5nIHBvaW50IGluIGV2YWx1YXRpbmcgYW55IHBvc3NpYmxlIHByb2JsZW1zLCBvciB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciBvZiB0aGF0IGZlYXR1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MjUyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6NTYuMzc0MzkwNzIyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9jb3JlL2xpbmtfd2F0Y2guY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzgsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNzg6XFx0dm9pZCBfX2xpbmt3YXRjaF9zeW5jX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiAyNzk6XFx0e1xcbiAyODA6XFx0XFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpO1xcbiAyODE6XFx0XFxuIDI4MjpcXHRcXHRpZiAobGlua3dhdGNoX2NsZWFuX2RldihkZXYpKSB7XFxuIDI4MzpcXHRcXHRcXHRsaW5rd2F0Y2hfZG9fZGV2KGRldik7XFxuIDI4NDpcXHRcXHRcXHQvKiBVc2UgX19kZXZfcHV0KCkgYmVjYXVzZSBuZXRkZXZfdHJhY2tlcl9mcmVlKCkgd2FzIGFscmVhZHlcXG4gMjg1OlxcdFxcdFxcdCAqIGNhbGxlZCBpbnNpZGUgbGlua3dhdGNoX2NsZWFuX2RldigpLlxcbiAyODY6XFx0XFx0XFx0ICovXFxuIDI4NzpcXHRcXHRcXHRfX2Rldl9wdXQoZGV2KTtcXG4gMjg4OlxcdFxcdH1cXG4gMjg5OlxcdH1cXG4gMjkwOlxcdFxcbiAyOTE6XFx0dm9pZCBsaW5rd2F0Y2hfc3luY19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gMjkyOlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzg6NTYuMzc0NDY2MjEyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0OTMyMzU3MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFdGh0b29sIExpbmsgU3RhdGUgTG9ja2luZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoZGV2KWAgY2FsbC4gUmlnaHQsIGl0IGNoZWNrcyB0aGF0IHRoZSBgZGV2LVx1MDAzZWxvY2tgIGlzIGhlbGQgaWYgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIGlzIHRydWUuIFRoYXQncyB0aGUgYmFzZWxpbmUuIElmIGBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYCBpcyB0cnVlLCB0aGUgY29kZSBpcyBzdXBwb3NlZCB0byBhc3NlcnQgdGhhdCB0aGUgYGRldi1cdTAwM2Vsb2NrYCBpcyBhbHJlYWR5IGhlbGQuIFRoZSB0cmlja3kgdGhpbmcgaXMgdGhhdCBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWAgYmVpbmcgdHJ1ZSBhbHNvIG1lYW5zIGBuZWVkX3J0bmxgIGlzIGZhbHNlIGJ5IGRlZmF1bHQuXG5cblNvLCBgX19kZXZfZXRodG9vbGAgd2lsbCBjYWxsIGBuZXRkZXZfbG9ja19vcHMoZGV2KWAsIHdoaWNoIGNvcnJlY3RseSBncmFicyBgZGV2LVx1MDAzZWxvY2tgLiBUaGVuLCBgZGV2X2V0aHRvb2xfbG9ja2VkYCBpcyBpbnZva2VkLCB3aGljaCB0aGVuIGRpdmVzIGludG8gYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLiBJdCdzIHdpdGhpbiBgZXRodG9vbF9vcF9nZXRfbGlua2AgdGhhdCB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLCBiZWNhdXNlIGl0IGNhbGxzIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAuIEFuZCAqdGhhdCogZnVuY3Rpb24sIGNydWNpYWxseSwgdGhlbiBhc3NlcnRzIHRoYXQgYGRldi1cdTAwM2Vsb2NrYCBpcyBoZWxkLiBTbywgYXMgZmFyIGFzIEkgY2FuIHNlZSwgYGRldi1cdTAwM2Vsb2NrYCBpcywgaW4gZmFjdCwgaGVsZCBhdCBhbGwgdGhvc2UgcG9pbnRzISBUaGUgbG9jayBzaG91bGQgYmUgY29ycmVjdGx5IGFjcXVpcmVkIGFuZCByZWxlYXNlZC5cblxuQnV0Li4ud2FpdC4gVGhlIHBhdGNoIG5vdGVzIHN0YXRlIHRoYXQgYGV0aHRvb2xfb3BfZ2V0X2xpbmsoKWAgc3luY3MgbGluayB3YXRjaCB1bmRlciBgcnRubF9sb2NrYCBhbmQgdGhleSBhcmUgYWRkaW5nIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgLiAqVGhhdCdzKiB0aGUgYml0IHRoYXQncyB0aHJvd2luZyBtZS4gV2h5IHRoZSBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCBpZiB0aGUgZGV2aWNlIGxvY2sgaXMgYWxyZWFkeSBoZWxkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkaWcgaW50byBgbGlua3dhdGNoX2RvX2RldihkZXYpYCBub3cgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg4MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjAxLjg2NzcwNjU2NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDgzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2NvcmUvbGlua193YXRjaC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyMDpcXHRcXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZsd2V2ZW50bGlzdF9sb2NrKTtcXG4gMjIxOlxcdFxcdGxpc3Rfc3BsaWNlX2luaXQoXFx1MDAyNmx3ZXZlbnRsaXN0LCBcXHUwMDI2d3JrKTtcXG4gMjIyOlxcdFxcbiAyMjM6XFx0XFx0d2hpbGUgKCFsaXN0X2VtcHR5KFxcdTAwMjZ3cmspIFxcdTAwMjZcXHUwMDI2IGRvX2RldiBcXHUwMDNlIDApIHtcXG4gMjI0OlxcdFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIDIyNTpcXHRcXG4gMjI2OlxcdFxcdFxcdGRldiA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNndyaywgc3RydWN0IG5ldF9kZXZpY2UsIGxpbmtfd2F0Y2hfbGlzdCk7XFxuIDIyNzpcXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWxpbmtfd2F0Y2hfbGlzdCk7XFxuIDIyODpcXHRcXG4gMjI5OlxcdFxcdFxcdGlmICghbmV0aWZfZGV2aWNlX3ByZXNlbnQoZGV2KSB8fFxcbiAyMzA6XFx0XFx0XFx0ICAgICh1cmdlbnRfb25seSBcXHUwMDI2XFx1MDAyNiAhbGlua3dhdGNoX3VyZ2VudF9ldmVudChkZXYpKSkge1xcbiAyMzE6XFx0XFx0XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2ZGV2LVxcdTAwM2VsaW5rX3dhdGNoX2xpc3QsIFxcdTAwMjZsd2V2ZW50bGlzdCk7XFxuIDIzMjpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMjMzOlxcdFxcdFxcdH1cXG4gMjM0OlxcdFxcdFxcdC8qIFdlIG11c3QgZnJlZSBuZXRkZXYgdHJhY2tlciB1bmRlclxcbiAyMzU6XFx0XFx0XFx0ICogdGhlIHNwaW5sb2NrIHByb3RlY3Rpb24uXFxuIDIzNjpcXHRcXHRcXHQgKi9cXG4gMjM3OlxcdFxcdFxcdG5ldGRldl90cmFja2VyX2ZyZWUoZGV2LCBcXHUwMDI2ZGV2LVxcdTAwM2VsaW5rd2F0Y2hfZGV2X3RyYWNrZXIpO1xcbiAyMzg6XFx0XFx0XFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZsd2V2ZW50bGlzdF9sb2NrKTtcXG4gMjM5OlxcdFxcdFxcdG5ldGRldl9sb2NrX29wcyhkZXYpO1xcbiAyNDA6XFx0XFx0XFx0bGlua3dhdGNoX2RvX2RldihkZXYpO1xcbiAyNDE6XFx0XFx0XFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4gMjQyOlxcdFxcdFxcdC8qIFVzZSBfX2Rldl9wdXQoKSBiZWNhdXNlIG5ldGRldl90cmFja2VyX2ZyZWUoKSB3YXMgYWxyZWFkeVxcbiAyNDM6XFx0XFx0XFx0ICogY2FsbGVkIGFib3ZlLiBNdXN0IGJlIGFmdGVyIG5ldGRldl91bmxvY2tfb3BzKCkgdG8gcHJldmVudFxcbiAyNDQ6XFx0XFx0XFx0ICogbmV0ZGV2X3J1bl90b2RvKCkgZnJvbSBmcmVlaW5nIHRoZSBkZXZpY2Ugd2hpbGUgc3RpbGwgaW4gdXNlLlxcbiAyNDU6XFx0XFx0XFx0ICovXFxuIDI0NjpcXHRcXHRcXHRfX2Rldl9wdXQoZGV2KTtcXG4gMjQ3OlxcdFxcdFxcdGRvX2Rldi0tO1xcbiAyNDg6XFx0XFx0XFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2bHdldmVudGxpc3RfbG9jayk7XFxuIDI0OTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjAxLjg2NzgxNjcxNVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM2NjYzNDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkRpZ2dpbmcgaW50byBgbGlua3dhdGNoX2RvX2RldmAgYW5kIHRoZSBMb2NraW5nKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIGdldCB0aGlzIHN0cmFpZ2h0LiBUaGUgZnVuY3Rpb24gYGxpbmt3YXRjaF9kb19kZXZgIGlzICpkZWZpbml0ZWx5KiBjYWxsZWQgd2l0aCBgbmV0ZGV2X2xvY2tfb3BzKGRldilgIGFscmVhZHkgaGVsZC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGludGVyYWN0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuIFRoZSBsb2NraW5nIGNvbnRleHQgaXMgYWJzb2x1dGVseSBjcml0aWNhbCBoZXJlLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb2RlIHBhdGggdGhhdCBpbnZva2VzIGBsaW5rd2F0Y2hfZG9fZGV2YCB0byBjb25maXJtIHRoZSBsb2NrIGFjcXVpc2l0aW9uLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbGlua3dhdGNoX2RvX2RldmAgaW1tZWRpYXRlbHkgdG8gc2VlIHdoYXQgaXQncyBkb2luZyB3aGlsZSB1bmRlciB0aGlzIGxvY2suIEFueSBwb3RlbnRpYWwgY29udGVudGlvbiBvciBkZWFkbG9ja3MgYXJlIHdoYXQgSSdtIGxvb2tpbmcgZm9yIG5vdy4gTGV0J3Mgc2VlIHdoYXQncyBnb2luZyBvbiBpbiB0aGF0IGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTEyMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6MDUuMDA0NDgzMzI3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9jb3JlL2xpbmtfd2F0Y2guY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODA6XFx0XFx0aWYgKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfVVApIHtcXG4gMTgxOlxcdFxcdFxcdGlmIChuZXRpZl9jYXJyaWVyX29rKGRldikpXFxuIDE4MjpcXHRcXHRcXHRcXHRkZXZfYWN0aXZhdGUoZGV2KTtcXG4gMTgzOlxcdFxcdFxcdGVsc2VcXG4gMTg0OlxcdFxcdFxcdFxcdGRldl9kZWFjdGl2YXRlKGRldiwgdHJ1ZSk7XFxuIDE4NTpcXHRcXG4gMTg2OlxcdFxcdFxcdG5ldGlmX3N0YXRlX2NoYW5nZShkZXYpO1xcbiAxODc6XFx0XFx0fVxcbiAxODg6XFx0fVxcbiAxODk6XFx0XFxuIDE5MDpcXHRzdGF0aWMgdm9pZCBfX2xpbmt3YXRjaF9ydW5fcXVldWUoaW50IHVyZ2VudF9vbmx5KVxcbiAxOTE6XFx0e1xcbiAxOTI6XFx0I2RlZmluZSBNQVhfRE9fREVWX1BFUl9MT09QXFx0MTAwXFxuIDE5MzpcXHRcXG4gMTk0OlxcdFxcdGludCBkb19kZXYgPSBNQVhfRE9fREVWX1BFUl9MT09QO1xcbiAxOTU6XFx0XFx0LyogVXNlIGEgbG9jYWwgbGlzdCBoZXJlIHNpbmNlIHdlIGFkZCBub24tdXJnZW50XFxuIDE5NjpcXHRcXHQgKiBldmVudHMgYmFjayB0byB0aGUgZ2xvYmFsIG9uZSB3aGVuIGNhbGxlZCB3aXRoXFxuIDE5NzpcXHRcXHQgKiB1cmdlbnRfb25seT0xLlxcbiAxOTg6XFx0XFx0ICovXFxuIDE5OTpcXHRcXHRMSVNUX0hFQUQod3JrKTtcXG4gMjAwOlxcdFxcbiAyMDE6XFx0XFx0LyogR2l2ZSB1cmdlbnQgY2FzZSBtb3JlIGJ1ZGdldCAqL1xcbiAyMDI6XFx0XFx0aWYgKHVyZ2VudF9vbmx5KVxcbiAyMDM6XFx0XFx0XFx0ZG9fZGV2ICs9IE1BWF9ET19ERVZfUEVSX0xPT1A7XFxuIDIwNDpcXHRcXG4gMjA1OlxcdFxcdC8qXFxuIDIwNjpcXHRcXHQgKiBMaW1pdCB0aGUgbnVtYmVyIG9mIGxpbmt3YXRjaCBldmVudHMgdG8gb25lXFxuIDIwNzpcXHRcXHQgKiBwZXIgc2Vjb25kIHNvIHRoYXQgYSBydW5hd2F5IGRyaXZlciBkb2VzIG5vdFxcbiAyMDg6XFx0XFx0ICogY2F1c2UgYSBzdG9ybSBvZiBtZXNzYWdlcyBvbiB0aGUgbmV0bGlua1xcbiAyMDk6XFx0XFx0ICogc29ja2V0LiAgVGhpcyBsaW1pdCBkb2VzIG5vdCBhcHBseSB0byB1cCBldmVudHNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6MDUuMDA0NTY0NTg3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MjE2MDk4NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkFuYWx5emluZyBEZXZpY2UgQWN0aXZhdGlvbi9EZWFjdGl2YXRpb24gaW4gdGhlIExpbmt3YXRjaCBDb250ZXh0KipcblxuSG1tLCBgbGlua3dhdGNoX2RvX2RldmAgaXMgY2FsbGluZyBgZGV2X2FjdGl2YXRlYCBhbmQgYGRldl9kZWFjdGl2YXRlYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYXQgdGhvc2UgcG9pbnRzLiBTbywgcmlnaHQgbm93LCBteSBmb2N1cyBuZWVkcyB0byBzaGlmdCB0byB0aGUgaW50ZXJuYWwgd29ya2luZ3Mgb2YgYGRldl9hY3RpdmF0ZWAgYW5kIGBkZXZfZGVhY3RpdmF0ZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHJvbGVzIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIGBsaW5rd2F0Y2hfZG9fZGV2YC4gTGV0J3MgZGlnIGludG8gdGhvc2UgZnVuY3Rpb25zIG5leHQuIFRoaXMgY291bGQgYmUgd2hlcmUgdGhlIG1hZ2ljLCBvciB0aGUgdHJvdWJsZSwgbGllcy4gVGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgZGV2aWNlIG1hbmFnZW1lbnQgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxODAyLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozOTowOC44MjYxNzgwMDJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MTgwNjkyOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2X2FjdGl2YXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2xvb3BiYWNrLmM9Mjc1PXN0YXRpYyBpbnQgX19pbml0IGJsYWNraG9sZV9uZXRkZXZfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvbG9vcGJhY2suYy0yODMtXFx0ZGV2X2luaXRfc2NoZWR1bGVyKGJsYWNraG9sZV9uZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2xvb3BiYWNrLmM6Mjg0OlxcdGRldl9hY3RpdmF0ZShibGFja2hvbGVfbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9sb29wYmFjay5jLTI4NS1cXHRydG5sX25ldF91bmxvY2soXFx1MDAyNmluaXRfbmV0KTtcXG4tLVxcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmg9NzI2PXZvaWQgZGV2X3NodXRkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmg6NzI3OnZvaWQgZGV2X2FjdGl2YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmluY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmgtNzI4LXZvaWQgZGV2X2RlYWN0aXZhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCByZXNldF9uZWVkZWQpO1xcbi0tXFxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmM9Nzc9c3RhdGljIHZvaWQgcmZjb21tX2Rldl9kZXN0cnVjdChzdHJ1Y3QgdHR5X3BvcnQgKnBvcnQpXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS90dHkuYy0xMDYtLyogZGV2aWNlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uOiBvcGVuIHRoZSBkbGMgKi9cXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS90dHkuYzoxMDc6c3RhdGljIGludCByZmNvbW1fZGV2X2FjdGl2YXRlKHN0cnVjdCB0dHlfcG9ydCAqcG9ydCwgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSlcXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS90dHkuYy0xMDgte1xcbi0tXFxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmM9MTM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR5X3BvcnRfb3BlcmF0aW9ucyByZmNvbW1fcG9ydF9vcHMgPSB7XFxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmMtMTM5LVxcdC5kZXN0cnVjdCA9IHJmY29tbV9kZXZfZGVzdHJ1Y3QsXFxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmM6MTQwOlxcdC5hY3RpdmF0ZSA9IHJmY29tbV9kZXZfYWN0aXZhdGUsXFxubmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmMtMTQxLVxcdC5zaHV0ZG93biA9IHJmY29tbV9kZXZfc2h1dGRvd24sXFxuLS1cXG5uZXQvY29yZS9kZXYuYz0xNjY3PXN0YXRpYyBpbnQgX19kZXZfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvY29yZS9kZXYuYy0xNzEwLVxcdFxcdGRldl9zZXRfcnhfbW9kZShkZXYpO1xcbm5ldC9jb3JlL2Rldi5jOjE3MTE6XFx0XFx0ZGV2X2FjdGl2YXRlKGRldik7XFxubmV0L2NvcmUvZGV2LmMtMTcxMi1cXHRcXHRhZGRfZGV2aWNlX3JhbmRvbW5lc3MoZGV2LVxcdTAwM2VkZXZfYWRkciwgZGV2LVxcdTAwM2VhZGRyX2xlbik7XFxuLS1cXG5uZXQvY29yZS9saW5rX3dhdGNoLmM9MTY2PXN0YXRpYyB2b2lkIGxpbmt3YXRjaF9kb19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0xODEtXFx0XFx0aWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2KSlcXG5uZXQvY29yZS9saW5rX3dhdGNoLmM6MTgyOlxcdFxcdFxcdGRldl9hY3RpdmF0ZShkZXYpO1xcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0xODMtXFx0XFx0ZWxzZVxcbi0tXFxubmV0L2RzYS91c2VyLmM9MzQ3OD1zdGF0aWMgaW50IGRzYV91c2VyX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbi0tXFxubmV0L2RzYS91c2VyLmMtMzU2OS1cXHRcXHRcXHQgKiBORVRERVZfVVAgZXZlbnQgaXMgbm90IGVub3VnaCB0byBmbGFnIGEgcG9ydCBhcyByZWFkeS5cXG5uZXQvZHNhL3VzZXIuYzozNTcwOlxcdFxcdFxcdCAqIFdlIGFsc28gaGF2ZSB0byB3YWl0IGZvciBsaW5rd2F0Y2hfZG9fZGV2IHRvIGRldl9hY3RpdmF0ZVxcbm5ldC9kc2EvdXNlci5jLTM1NzEtXFx0XFx0XFx0ICogYW5kIGVtaXQgYSBORVRERVZfQ0hBTkdFIGV2ZW50Llxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0xMDkxPXN0YXRpYyBpbnQgcWRpc2NfZ3JhZnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IFFkaXNjICpwYXJlbnQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTExNjktXFx0XFx0aWYgKGRldi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfVVApXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMTcwOlxcdFxcdFxcdGRldl9hY3RpdmF0ZShkZXYpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTE3MS1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTI2OT1zdGF0aWMgdm9pZCB0cmFuc2l0aW9uX29uZV9xZGlzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI4NS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMjg2OnZvaWQgZGV2X2FjdGl2YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI4Ny17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzExLX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMzEyOkVYUE9SVF9TWU1CT0woZGV2X2FjdGl2YXRlKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzEzLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTQ2OD1pbnQgZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0ODUtXFx0aWYgKHVwKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0ODY6XFx0XFx0ZGV2X2FjdGl2YXRlKGRldik7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQ4Ny1cXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYz0xMzg4PWh0Yl9ncmFmdF9oZWxwZXIoc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLCBzdHJ1Y3QgUWRpc2MgKm5ld19xKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYy0xMzk4LVxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MTM5OTpcXHRcXHRkZXZfYWN0aXZhdGUoZGV2KTtcXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTE0MDAtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2h0Yi5jPTE0MTU9c3RhdGljIHZvaWQgaHRiX29mZmxvYWRfbW92ZV9xZGlzYyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGh0Yl9jbGFzcyAqY2xfb2xkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9odGIuYy0xNDQxLVxcdFxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKVxcbm5ldC9zY2hlZC9zY2hfaHRiLmM6MTQ0MjpcXHRcXHRcXHRkZXZfYWN0aXZhdGUoZGV2KTtcXG5uZXQvc2NoZWQvc2NoX2h0Yi5jLTE0NDMtXFx0XFx0V0FSTl9PTighKHFkaXNjLVxcdTAwM2VmbGFncyBcXHUwMDI2IFRDUV9GX0JVSUxUSU4pKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXEuYz0yMDk9c3RhdGljIGludCBtcV9ncmFmdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgbG9uZyBjbCwgc3RydWN0IFFkaXNjICpuZXcsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX21xLmMtMjIyLVxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKVxcbm5ldC9zY2hlZC9zY2hfbXEuYzoyMjM6XFx0XFx0ZGV2X2FjdGl2YXRlKGRldik7XFxubmV0L3NjaGVkL3NjaF9tcS5jLTIyNC1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmM9NDYyPXN0YXRpYyBpbnQgbXFwcmlvX2dyYWZ0KHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLCBzdHJ1Y3QgUWRpc2MgKm5ldyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmMtNDc5LVxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKVxcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmM6NDgwOlxcdFxcdGRldl9hY3RpdmF0ZShkZXYpO1xcbm5ldC9zY2hlZC9zY2hfbXFwcmlvLmMtNDgxLVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yMTc5PXN0YXRpYyBpbnQgdGFwcmlvX2dyYWZ0KHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjE2LVxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjIxNzpcXHRcXHRkZXZfYWN0aXZhdGUoZGV2KTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyMTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjEyLjI0NDI1MzcyN1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDg1MDA0ODg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkludmVzdGlnYXRpbmcgYGRldl9hY3RpdmF0ZWAgYW5kIGl0cyBMb2NraW5nIFJlcXVpcmVtZW50cyoqXG5cblJpZ2h0LCBzbyBgZGV2X2FjdGl2YXRlYC4uLiB0aGF0IGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYCwgd2hpY2ggaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBOb3csIGEga2V5IHF1ZXN0aW9uIHBvcHMgdXAgaW1tZWRpYXRlbHk6IGRvZXMgYGRldl9hY3RpdmF0ZWAgcmVxdWlyZSBob2xkaW5nIHRoZSBgcnRubF9sb2NrYD8gSWYgaXQgZG9lcywgdGhhdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGNvZGUsIGVzcGVjaWFsbHkgYW55dGhpbmcgcmVsYXRlZCB0byByb3V0aW5nIGFuZCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYWJvdXQgdGhpcy4gVGltZSB0byBkaWcgaW50byB0aGUgc291cmNlIGNvZGUgb2YgYGRldl9hY3RpdmF0ZWAgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCBpdHMgbG9jayB1c2FnZSBsb29rcyBsaWtlLiBHb3R0YSBiZSBjYXJlZnVsIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzU3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6MTUuMzI5MjYyNTUxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzI1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjg2LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjg2OlxcdHZvaWQgZGV2X2FjdGl2YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuMTI4NzpcXHR7XFxuMTI4ODpcXHRcXHRpbnQgbmVlZF93YXRjaGRvZztcXG4xMjg5OlxcdFxcbjEyOTA6XFx0XFx0LyogTm8gcXVldWVpbmcgZGlzY2lwbGluZSBpcyBhdHRhY2hlZCB0byBkZXZpY2U7XFxuMTI5MTpcXHRcXHQgKiBjcmVhdGUgZGVmYXVsdCBvbmUgZm9yIGRldmljZXMsIHdoaWNoIG5lZWQgcXVldWVpbmdcXG4xMjkyOlxcdFxcdCAqIGFuZCBub3F1ZXVlX3FkaXNjIGZvciB2aXJ0dWFsIGludGVyZmFjZXNcXG4xMjkzOlxcdFxcdCAqL1xcbjEyOTQ6XFx0XFxuMTI5NTpcXHRcXHRpZiAocnRubF9kZXJlZmVyZW5jZShkZXYtXFx1MDAzZXFkaXNjKSA9PSBcXHUwMDI2bm9vcF9xZGlzYylcXG4xMjk2OlxcdFxcdFxcdGF0dGFjaF9kZWZhdWx0X3FkaXNjcyhkZXYpO1xcbjEyOTc6XFx0XFxuMTI5ODpcXHRcXHRpZiAoIW5ldGlmX2NhcnJpZXJfb2soZGV2KSlcXG4xMjk5OlxcdFxcdFxcdC8qIERlbGF5IGFjdGl2YXRpb24gdW50aWwgbmV4dCBjYXJyaWVyLW9uIGV2ZW50ICovXFxuMTMwMDpcXHRcXHRcXHRyZXR1cm47XFxuMTMwMTpcXHRcXG4xMzAyOlxcdFxcdG5lZWRfd2F0Y2hkb2cgPSAwO1xcbjEzMDM6XFx0XFx0bmV0ZGV2X2Zvcl9lYWNoX3R4X3F1ZXVlKGRldiwgdHJhbnNpdGlvbl9vbmVfcWRpc2MsIFxcdTAwMjZuZWVkX3dhdGNoZG9nKTtcXG4xMzA0OlxcdFxcdGlmIChkZXZfaW5ncmVzc19xdWV1ZShkZXYpKVxcbjEzMDU6XFx0XFx0XFx0dHJhbnNpdGlvbl9vbmVfcWRpc2MoZGV2LCBkZXZfaW5ncmVzc19xdWV1ZShkZXYpLCBOVUxMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6MTUuMzI5Mzc3NzUxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5OTc5MzM0MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgcnRubF9kZXJlZmVyZW5jZWAgQ2FsbCBpbiBEZXZpY2UgQWN0aXZhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgbXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIGBydG5sX2RlcmVmZXJlbmNlKGRldi1cdTAwM2VxZGlzYylgLiBJIGtub3cgdGhhdCBmdW5jdGlvbiByZXF1aXJlcyBgcnRubF9sb2NrYCB0byBiZSBoZWxkLiBUaGF0J3MgYSBjcml0aWNhbCBkZXRhaWwsIGFuZCBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgY29uZGl0aW9uIGlzIG1ldC5cblxuTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGNhbGwgc3RhY2s6IGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgY2FsbHMgYGxpbmt3YXRjaF9kb19kZXZgLCB3aGljaCB0aGVuIGNhbGxzIGBkZXZfYWN0aXZhdGVgLiBgZGV2X2FjdGl2YXRlYCBpcyB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgcHJvYmxlbWF0aWMgYHJ0bmxfZGVyZWZlcmVuY2VgLiBTbywgaWYgYGRldl9hY3RpdmF0ZWAgbmVlZHMgdGhlIGBydG5sX2xvY2tgLCB0aGVuIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgKm11c3QqIGJlIGNhbGxlZCB3aXRoIHRoYXQgbG9jayBoZWxkLiBUaGF0J3MgYSBkZXBlbmRlbmN5IEkgbmVlZCB0byB2ZXJpZnkuXG5cbkJ1dCBoZXJlJ3MgdGhlIGNvbmZ1c2luZyBwYXJ0OiBgX19saW5rd2F0Y2hfc3luY19kZXZgIG9ubHkgaGFzIGBuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldilgLiBUaGlzIGFzc2VydHMgYGRldi1cdTAwM2Vsb2NrYCBpZiB0aGUgZGV2aWNlIG5lZWRzIGl0LlxuXG5BbmQgYGRldl9hY3RpdmF0ZWAgaGFzIGEgcHJvYmxlbSwgaXQgdXNlcyBgcnRubF9kZXJlZmVyZW5jZWAgd2hpY2ggYXNzZXJ0cyBgcnRubF9sb2NrYCBvciBgcmN1X3JlYWRfbG9ja2AuXG5cblRoZSBxdWVzdGlvbiBiZWNvbWVzOiBEb2VzIGBsaW5rd2F0Y2hfZG9fZGV2YCwgd2hpY2ggc2l0cyBiZXR3ZWVuIHRoZW0sIGhvbGQgdGhlIGBydG5sX2xvY2tgPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUuIEknbGwgbmVlZCB0byBsb29rIGF0IGBsaW5rd2F0Y2hfZXZlbnRgIGluIGBuZXQvY29yZS9saW5rX3dhdGNoLmNgIHRvIHRyYWNlIHRoZSBsb2NrIGFjcXVpc2l0aW9uIGFuZCByZWxlYXNlLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGUgYHJ0bmxfbG9ja2AgaXMgYWNxdWlyZWQsIGlmIGF0IGFsbCwgYW5kIGhlbGQgYWNyb3NzIHRoYXQgZnVuY3Rpb24gY2FsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzMjMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozOToyMS4zMjczMTU2NjFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2NvcmUvbGlua193YXRjaC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI1MDpcXHRcXG4gMjUxOlxcdFxcdC8qIEFkZCB0aGUgcmVtYWluaW5nIHdvcmsgYmFjayB0byBsd2V2ZW50bGlzdCAqL1xcbiAyNTI6XFx0XFx0bGlzdF9zcGxpY2VfaW5pdChcXHUwMDI2d3JrLCBcXHUwMDI2bHdldmVudGxpc3QpO1xcbiAyNTM6XFx0XFxuIDI1NDpcXHRcXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmx3ZXZlbnRsaXN0KSlcXG4gMjU1OlxcdFxcdFxcdGxpbmt3YXRjaF9zY2hlZHVsZV93b3JrKDApO1xcbiAyNTY6XFx0XFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZsd2V2ZW50bGlzdF9sb2NrKTtcXG4gMjU3OlxcdH1cXG4gMjU4OlxcdFxcbiAyNTk6XFx0c3RhdGljIGJvb2wgbGlua3dhdGNoX2NsZWFuX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiAyNjA6XFx0e1xcbiAyNjE6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gMjYyOlxcdFxcdGJvb2wgY2xlYW4gPSBmYWxzZTtcXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmx3ZXZlbnRsaXN0X2xvY2ssIGZsYWdzKTtcXG4gMjY1OlxcdFxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2ZGV2LVxcdTAwM2VsaW5rX3dhdGNoX2xpc3QpKSB7XFxuIDI2NjpcXHRcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWxpbmtfd2F0Y2hfbGlzdCk7XFxuIDI2NzpcXHRcXHRcXHRjbGVhbiA9IHRydWU7XFxuIDI2ODpcXHRcXHRcXHQvKiBXZSBtdXN0IHJlbGVhc2UgbmV0ZGV2IHRyYWNrZXIgdW5kZXJcXG4gMjY5OlxcdFxcdFxcdCAqIHRoZSBzcGlubG9jayBwcm90ZWN0aW9uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTozOToyMS4zMjc0MDY3NjFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ0MzU4MTY5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJZGVudGlmeWluZyB0aGUgV29ya3F1ZXVlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgdGhyb3VnaCB0aGlzIGNvZGUuLi4gYW5kIGFoYSEgVGhlIGBsaW5rd2F0Y2hfZXZlbnRgIGZ1bmN0aW9uLi4uIHRoYXQncyB0aGUga2V5LiBUaGF0J3MgdGhlIGZ1bmN0aW9uIGJlaW5nIHN1Ym1pdHRlZCB0byB0aGUgd29ya3F1ZXVlLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50IEkgbmVlZCB0byBmb2N1cyBvbi4gRm9yZ2V0IGFib3V0IHRoZSBvdGhlciBzdHVmZiwgdGhlIFwiaW50ZXJlc3RpbmdcIiBiaXQgaXMgcmlnaHQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyNjEsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjI3Ljc3MDk5MjU0MVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIyNjUzMTc5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaW5rd2F0Y2hfZXZlbnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYz0yODE3PXN0YXRpYyBpbnQgZG9fcmVzZXQoc3RydWN0IGlibXZuaWNfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMjg3Mi1cXHRcXHRcXHQgKiByZS1hY3F1aXJlIGFmdGVyIHRoZSBsaW5rIHN0YXRlIGNoYW5nZSB0byBhbGxvd1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM6Mjg3MzpcXHRcXHRcXHQgKiBsaW5rd2F0Y2hfZXZlbnQgdG8gZ3JhYiB0aGUgUlROTCBsb2NrIGFuZCBydW4gZHVyaW5nXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0yODc0LVxcdFxcdFxcdCAqIGEgcmVzZXQuXFxuLS1cXG5uZXQvY29yZS9saW5rX3dhdGNoLmM9Mjg9c3RhdGljIHVuc2lnbmVkIGxvbmcgbGlua3dhdGNoX25leHRldmVudDtcXG5uZXQvY29yZS9saW5rX3dhdGNoLmMtMjktXFxubmV0L2NvcmUvbGlua193YXRjaC5jOjMwOnN0YXRpYyB2b2lkIGxpbmt3YXRjaF9ldmVudChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmR1bW15KTtcXG5uZXQvY29yZS9saW5rX3dhdGNoLmM6MzE6c3RhdGljIERFQ0xBUkVfREVMQVlFRF9XT1JLKGxpbmt3YXRjaF93b3JrLCBsaW5rd2F0Y2hfZXZlbnQpO1xcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYy0zMi1cXG4tLVxcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYz0zMDU9dm9pZCBsaW5rd2F0Y2hfcnVuX3F1ZXVlKHZvaWQpXFxuLS1cXG5uZXQvY29yZS9saW5rX3dhdGNoLmMtMzEwLVxcbm5ldC9jb3JlL2xpbmtfd2F0Y2guYzozMTE6c3RhdGljIHZvaWQgbGlua3dhdGNoX2V2ZW50KHN0cnVjdCB3b3JrX3N0cnVjdCAqZHVtbXkpXFxubmV0L2NvcmUvbGlua193YXRjaC5jLTMxMi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjI5Ljk5NzUzMzA0NloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODY3NDAzNTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIENvcmU6IEEgTGluayBXYXRjaCBFeHBsb3JhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gYGxpbmt3YXRjaF9ldmVudGAgd2l0aGluIGBuZXQvY29yZS9saW5rX3dhdGNoLmNgLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGdyYXNwIG9mIGhvdyB0aGUga2VybmVsIG1hbmFnZXMgbGluayBzdGF0ZSBjaGFuZ2VzIGFuZCwgc3BlY2lmaWNhbGx5LCBob3cgaXQncyBpbnRlZ3JhdGVkIHdpdGggdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjay4gSSdtIGFzc3VtaW5nIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB3aGVyZSB0aGUgbWFnaWMgc3RhcnRz4oCUd2hlcmUgdGhlIGludGVycnVwdCBvciBwb2xsaW5nIHJlc3VsdCBnZXRzIGludGVycHJldGVkLCBhbmQgZXZlbnRzIGdldCBwcm9wYWdhdGVkLiBJIGV4cGVjdCB0byBzZWUgdGhlIHR5cGljYWwgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXPigJRsaWtlbHkgc3BpbmxvY2tzIG9yIFJDVeKAlGJlaW5nIHVzZWQgdG8gcHJvdGVjdCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIHJlbGF0ZWQgdG8gaW50ZXJmYWNlIHN0YXRlLiBNeSBpbnR1aXRpb24gc2F5cyB0aGVyZSdsbCBiZSBhIHN3aXRjaCBzdGF0ZW1lbnQgb3IgYSBzZXJpZXMgb2YgY29uZGl0aW9uYWwgY2hlY2tzIHRvIGhhbmRsZSB0aGUgZGlmZmVyZW50IGxpbmsgc3RhdGVzICh1cCwgZG93biwgY2FycmllciBkZXRlY3QsIGV0Yy4pLlxuXG5JJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBldmVudCBpcyB0cmFuc2xhdGVkIGludG8gYWN0aW9ucy4gSSB3YW50IHRvIGxvb2sgZm9yIGNsdWVzIG9uIHdoZXJlIHRoZSBub3RpZmljYXRpb25zIGdvOiBhcmUgd2UgdGFsa2luZyBOZXRsaW5rIG1lc3NhZ2VzLCB3b3JrcXVldWVzLCBvciBkaXJlY3QgZnVuY3Rpb24gY2FsbHM/IEhvdyBkb2VzIHRoaXMgZnVuY3Rpb24gaW50ZXJhY3Qgd2l0aCB0aGUgZGV2aWNlIGRyaXZlcnM/IEknbGwgYmUga2VlcGluZyBhIHNoYXJwIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGFzeW5jaHJvbm91cyBuYXR1cmUgb2YgbmV0d29yayBsaW5rIGV2ZW50cy4gSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBwcmV2ZW50cyB0aGUgXCJ0aHVuZGVyaW5nIGhlcmRcIiBwcm9ibGVtIHRoYXQgbWlnaHQgYXBwZWFyIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgaW50ZXJmYWNlIGV2ZW50cy4gRmluYWxseSwgSSdtIGV4cGVjdGluZyBzb21lIGludGVyYWN0aW9uIHdpdGggbmV0ZGV2IG5vdGlmaWVyIGNoYWlucywgYXMgdGhhdCdzIG9mdGVuIHVzZWQgdG8gbm90aWZ5IGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUga2VybmVsIGFib3V0IG5ldHdvcmsgZXZlbnRzLiBMZXQncyBzZWUgaG93IHdlbGwgbXkgYXNzdW1wdGlvbnMgaG9sZCB1cC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTczNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjMzLjg2NDkzOTY2OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY29yZS9saW5rX3dhdGNoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzExLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzExOlxcdHN0YXRpYyB2b2lkIGxpbmt3YXRjaF9ldmVudChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmR1bW15KVxcbiAzMTI6XFx0e1xcbiAzMTM6XFx0XFx0cnRubF9sb2NrKCk7XFxuIDMxNDpcXHRcXHRfX2xpbmt3YXRjaF9ydW5fcXVldWUodGltZV9hZnRlcihsaW5rd2F0Y2hfbmV4dGV2ZW50LCBqaWZmaWVzKSk7XFxuIDMxNTpcXHRcXHRydG5sX3VubG9jaygpO1xcbiAzMTY6XFx0fVxcbiAzMTc6XFx0XFxuIDMxODpcXHRcXG4gMzE5OlxcdHZvaWQgbGlua3dhdGNoX2ZpcmVfZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gMzIwOlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6MzMuODY1MDI5ODc5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3Njg4NDg2NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMaW5rIFdhdGNoIE1lY2hhbmlzbSoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCB0aGUgYGxpbmt3YXRjaF9ldmVudGAgZnVuY3Rpb24gZ3JhYnMgdGhlIGBydG5sX2xvY2tgLiBUaGF0J3MgaW1wb3J0YW50LiBJdCBtZWFucyBgX19saW5rd2F0Y2hfcnVuX3F1ZXVlYCBpcyAqYWx3YXlzKiBleGVjdXRlZCB3aXRoIHRoZSBSZWFsIFRpbWUgTmV0bGluayAocnRubCkgbG9jayBoZWxkLiBSaWdodCwgYW5kIGBfX2xpbmt3YXRjaF9ydW5fcXVldWVgIHRoZW4gY2FsbHMgYGxpbmt3YXRjaF9kb19kZXZgLiBUaGF0IG1lYW5zIGBsaW5rd2F0Y2hfZG9fZGV2YCBpcyAqZGVzaWduZWQqIHRvIGJlIGNhbGxlZCB3aGVuIGBydG5sX2xvY2tgIGlzIGFscmVhZHkgaGVsZC4gTm8gc3VycHJpc2VzIHRoZXJlLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZS4uLiBJIHJlbWVtYmVyIHNlZWluZyBgX19saW5rd2F0Y2hfc3luY19kZXZgIHNvbWV3aGVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhhdCBmdW5jdGlvbiBjYWxscyBgbGlua3dhdGNoX2RvX2RldmAgKmRpcmVjdGx5Ki4gVGhhdCBjb3VsZCBiZSBhIHByb2JsZW0hIEkgbmVlZCB0byBnbyBiYWNrIGFuZCBkb3VibGUtY2hlY2sgYF9fbGlua3dhdGNoX3N5bmNfZGV2YC4gSSBoYXZlIGEgZmVlbGluZyBzb21ldGhpbmcgaXMgb3V0IG9mIHN5bmMgd2l0aCB0aGUgbG9ja2luZyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjI2MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjM3LjYzMzg4MTU4NVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTkyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY29yZS9saW5rX3dhdGNoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjc4LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjc4OlxcdHZvaWQgX19saW5rd2F0Y2hfc3luY19kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gMjc5OlxcdHtcXG4gMjgwOlxcdFxcdG5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoZGV2KTtcXG4gMjgxOlxcdFxcbiAyODI6XFx0XFx0aWYgKGxpbmt3YXRjaF9jbGVhbl9kZXYoZGV2KSkge1xcbiAyODM6XFx0XFx0XFx0bGlua3dhdGNoX2RvX2RldihkZXYpO1xcbiAyODQ6XFx0XFx0XFx0LyogVXNlIF9fZGV2X3B1dCgpIGJlY2F1c2UgbmV0ZGV2X3RyYWNrZXJfZnJlZSgpIHdhcyBhbHJlYWR5XFxuIDI4NTpcXHRcXHRcXHQgKiBjYWxsZWQgaW5zaWRlIGxpbmt3YXRjaF9jbGVhbl9kZXYoKS5cXG4gMjg2OlxcdFxcdFxcdCAqL1xcbiAyODc6XFx0XFx0XFx0X19kZXZfcHV0KGRldik7XFxuIDI4ODpcXHRcXHR9XFxuIDI4OTpcXHR9XFxuIDI5MDpcXHRcXG4gMjkxOlxcdHZvaWQgbGlua3dhdGNoX3N5bmNfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIDI5MjpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjM3LjYzMzk2MzIzNloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTQ3ODE5MTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGEgUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9uIGluIE5ldHdvcmsgRGV2aWNlIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBoZXJlJ3Mgd2hhdCdzIGJvdGhlcmluZyBtZS4gSSd2ZSBiZWVuIHRyYWNpbmcgYSBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWUgcmVsYXRlZCB0byBob3cgd2UgaGFuZGxlIG5ldHdvcmsgZGV2aWNlIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSB3aXRoIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAuIE15IGNvbmNlcm4gc3RlbXMgZnJvbSB0aGUgcG9zc2liaWxpdHkgdGhhdCBjYWxsaW5nIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgd2l0aG91dCBob2xkaW5nIHRoZSBgcnRubF9sb2NrYCBjb3VsZCBsZWFkIHRvIHNlcmlvdXMgcHJvYmxlbXMsIHBvdGVudGlhbGx5IFJDVSB3YXJuaW5ncyBvciwgZXZlbiB3b3JzZSwgZGF0YSByYWNlcy4gVGhlIHJvb3Qgb2YgdGhlIGlzc3VlIGxpZXMgaW4gdGhlIGZhY3QgdGhhdCBgX19saW5rd2F0Y2hfc3luY19kZXZgIGV2ZW50dWFsbHkgY2FsbHMgYGxpbmt3YXRjaF9kb19kZXZgLCB3aGljaCB0aGVuIGNhbGxzIGBkZXZfYWN0aXZhdGVgLiBEdXJpbmcgdGhpcyBjaGFpbiBvZiBjYWxscywgd2UgdXNlIGBydG5sX2RlcmVmZXJlbmNlYCB0byBhY2Nlc3Mgc2hhcmVkIGRhdGEuXG5cbk5vdywgSSBpbml0aWFsbHkgdGhvdWdodCBgX19saW5rd2F0Y2hfc3luY19kZXZgIHdvdWxkIGFsd2F5cyBlbmZvcmNlIHRoZSBsb2NrLCBidXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhlIGFzc2VydGlvbiBgbmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpYC4gVGhpcyBhc3NlcnRpb24gaXNuJ3QgYXMgc3RyaWN0IGFzIEknZCBob3BlZC4gSWYgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIGlzIHRydWUsIGl0ICpvbmx5KiBhc3NlcnRzIHRoZSBkZXZpY2UncyBvd24gbG9jayAoYGRldi1cdTAwM2Vsb2NrYCksICpub3QqIHRoZSBnbG9iYWwgYHJ0bmxfbG9ja2AuIFRoYXQncyB0aGUgY3J1eC5cblxuVGhpcyBtZWFucyBpZiBhIGZ1bmN0aW9uIGxpa2UgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGdldHMgY2FsbGVkIHdpdGhvdXQgaG9sZGluZyBgcnRubF9sb2NrYCwgYW5kIGl0IHN1YnNlcXVlbnRseSBjYWxscyBgX19saW5rd2F0Y2hfc3luY19kZXZgLCB3ZSdyZSBpbiB0cm91YmxlLiBUaGUgYnVnIGlzIHRoZSBjYWxsIHBhdGggaXRzZWxmLCBiZWNhdXNlIGBsaW5rd2F0Y2hfZG9fZGV2YCAqbmVlZHMqIHRoZSBgcnRubF9sb2NrYC5cblxuVGhlIHByb3Bvc2VkIHNvbHV0aW9uIG1ha2VzIHNlbnNlOiBpdCBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIGBvcF9uZWVkc19ydG5sYCBmb3IgZHJpdmVycyB0aGF0IHVzZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgYW5kIGhhdmUgYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIHJldHVybmluZyB0cnVlLiBUaGlzIHNlZW1zIHJlYXNvbmFibGUsIGJ1dCBub3cgSSBoYXZlIHRvIGNoZWNrIHRoZSBpbXBsaWNhdGlvbnMuXG5cbk5vdyBJJ20gdGhpbmtpbmcgYWJvdXQgd2hpY2ggZHJpdmVycyB0aGlzIGFjdHVhbGx5IGFmZmVjdHMuICpEbyogZHJpdmVycyBsaWtlIGBndmVgLCBgaWF2ZmAsIGBtbHg1YCwgYGZibmljYCwgb3IgYG1hbmFgIHVzZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWA/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBjb25kaXRpb24gaXMgdHJ1ZSBmb3IgdGhlIGRyaXZlcnMuIFRoZSBkZWZpbml0aW9uIG9mIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgaXMgd2hhdCBJIG5lZWQgdG8gY2hlY2suIEl0J3MgcmVsYXRlZCB0byBgZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmRvX2JwZmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBJIGhhdmUgdG8gZ28gYmFjayBhbmQgZG91YmxlIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjgzNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjQ1LjE4MTc4NTI1OFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL25ldC9uZXRkZXZfbG9jay5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI4LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDI4OlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBuZXRkZXZfbmVlZF9vcHNfbG9jayhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiAgMjk6XFx0e1xcbiAgMzA6XFx0XFx0Ym9vbCByZXQgPSBkZXYtXFx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgfHwgISFkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzO1xcbiAgMzE6XFx0XFxuICAzMjpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX1NIQVBFUilcXG4gIDMzOlxcdFxcdHJldCB8PSAhIWRldi1cXHUwMDNlbmV0ZGV2X29wcy1cXHUwMDNlbmV0X3NoYXBlcl9vcHM7XFxuICAzNDpcXHQjZW5kaWZcXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0cmV0dXJuIHJldDtcXG4gIDM3OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6NDUuMTgxODY0Nzg4WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MzE2MTU1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBEZXZpY2UgRHJpdmVyIENvbmN1cnJlbmN5IGFuZCBRdWV1ZSBNYW5hZ2VtZW50KipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gc2VlaW5nIGEgcG90ZW50aWFsIGFyZWEgb2YgY29uY2Vybi4gVGhlIGluaXRpYWwgdHJpZ2dlciBpcyB0aGUgbWVudGlvbiBvZiBgZGV2LVx1MDAzZXJlcXVlc3Rfb3BzX2xvY2tgLCBgZGV2LVx1MDAzZXF1ZXVlX21nbXRfb3BzYCwgb3IgYGRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5ldF9zaGFwZXJfb3BzYC4gVGhlc2UgYXJlIGxpa2VseSByZWxhdGVkIHRvIGhvdyB0aGUgbmV0d29yayBkZXZpY2UgZHJpdmVyIGhhbmRsZXMgY29uY3VycmVudCBhY2Nlc3MgdG8gaXRzIHJlc291cmNlcywgc3BlY2lmaWNhbGx5IGFyb3VuZCByZXF1ZXN0IG9wZXJhdGlvbnMsIHF1ZXVlIG1hbmFnZW1lbnQsIGFuZCBwb3RlbnRpYWxseSBldmVuIHNoYXBpbmcgYWN0aXZpdGllcy5cblxuTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgdGlja2luZyB0aHJvdWdoIHRoZSBjb21tb25seSB1c2VkIGRyaXZlcnMuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGljaCBvZiBvdXIgaGlnaC1wZXJmb3JtYW5jZSBvciBjcml0aWNhbCBuZXR3b3JrIGRyaXZlcnMgZW1wbG95IGEgc3BlY2lmaWMgc3RyYXRlZ3kgZm9yIGNvbmN1cnJlbmN5IGFuZCBxdWV1aW5nLiBJJ20gdGhpbmtpbmcgb2YgdGhlIGJpZyBwbGF5ZXJzIGhlcmU6IGBndmVgLCBgaWF2ZmAsIGBtbHg1YCwgYGZibmljYCwgYW5kIGBtYW5hYC4gQXJlIHRoZXkgdXNpbmcgYHJlcXVlc3Rfb3BzX2xvY2tgPyBBcmUgdGhleSBsZXZlcmFnaW5nIGBxdWV1ZV9tZ210X29wc2A/IE9yIGFyZSB0aGV5IHJlbHlpbmcgb24gdGhlIGBuZXRfc2hhcGVyX29wc2AgdG8gcHJvdGVjdCB0aGUgcXVldWU/XG5cblRoZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGxvY2tpbmcgbW9kZWwgZW1wbG95ZWQgYnkgdmFyaW91cyBOSUNzLCBhbmQgYWxzbyB0byBzcG90IHBvdGVudGlhbGx5IHVudXN1YWwgaW1wbGVtZW50YXRpb25zIHRoYXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIHN0YWJpbGl0eS4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCB0aGVzZSBzcGVjaWZpYyBkcml2ZXJzIGFyZSBkb2luZyBpbiB0aGlzIHNwYWNlLiBJIG5lZWQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIGlmIGFueSBvZiB0aGVzZSBhcmUgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHRoYXQgcmVxdWlyZSBhZGRpdGlvbmFsIHNjcnV0aW55LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzk0NiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6NDguOTEzNDgyNzA1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc5NjE4NTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInF1ZXVlX21nbXRfb3BzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdD0zOTc9Tm90ZSB0aGF0IHN1cHBvcnRpbmcgbmV0IHNoYXBlcnMgYXV0b21hdGljYWxseSBlbmFibGVzIFxcXCJvcHMgbG9ja2luZ1xcXCIuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0LTM5OC1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3Q6Mzk5OnN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHNcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QtNDAwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdD00MDM9bG9jay4gYGBydG5sX2xvY2tgYCBtYXkgb3IgbWF5IG5vdCBiZSBoZWxkLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdC00MDQtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0OjQwNTpOb3RlIHRoYXQgc3VwcG9ydGluZyBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIGF1dG9tYXRpY2FsbHkgZW5hYmxlc1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdC00MDYtXFxcIm9wcyBsb2NraW5nXFxcIi5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2NDQ4PXN0YXRpYyBpbnQgYm54dF9xdWV1ZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnFtZW0sIGludCBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNjQ5NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNjQ5NjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBibnh0X3F1ZXVlX21nbXRfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE2NDk3LVxcdC5uZG9fcXVldWVfbWVtX3NpemVcXHQ9IHNpemVvZihzdHJ1Y3QgYm54dF9yeF9yaW5nX2luZm8pLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTY1MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTY1MDc6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgYm54dF9xdWV1ZV9tZ210X29wc191bnN1cHAgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTY1MDgtXFx0Lm5kb19kZWZhdWx0X3FjZmdcXHQ9IGJueHRfcXVldWVfZGVmYXVsdF9xY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTY5NDU9c3RhdGljIGludCBibnh0X2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTcxODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTcxODU6XFx0ZGV2LVxcdTAwM2VxdWV1ZV9tZ210X29wcyA9IFxcdTAwMjZibnh0X3F1ZXVlX21nbXRfb3BzX3Vuc3VwcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzE4Ni1cXHRpZiAoQk5YVF9TVVBQT1JUU19RVUVVRV9BUEkoYnApKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MTg3OlxcdFxcdGRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHMgPSBcXHUwMDI2Ym54dF9xdWV1ZV9tZ210X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzE4OC1cXHRkZXYtXFx1MDAzZW5ldG1lbV90eCA9IE5FVE1FTV9UWF9ETUE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MjY4NT1zdGF0aWMgaW50IGd2ZV9yeF9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTI3MzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjI3Mzc6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgZ3ZlX3F1ZXVlX21nbXRfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yNzM4LVxcdC5uZG9fcXVldWVfbWVtX3NpemVcXHQ9XFx0c2l6ZW9mKHN0cnVjdCBndmVfcnhfcmluZyksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9Mjc5Mz1zdGF0aWMgaW50IGd2ZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yODQ2LVxcdGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZndmVfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6Mjg0NzpcXHRkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXFx1MDAyNmd2ZV9xdWV1ZV9tZ210X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjg0OC1cXHRkZXYtXFx1MDAzZXN0YXRfb3BzID0gXFx1MDAyNmd2ZV9zdGF0X29wcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTc5MD1zdGF0aWMgc3RydWN0IGRldmljZSAqbWx4NWVfcXVldWVfZ2V0X2RtYV9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTgxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjU4MTM6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbWx4NWVfcXVldWVfbWdtdF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODE0LVxcdC5uZG9fcXVldWVfbWVtX3NpemVcXHQ9XFx0c2l6ZW9mKHN0cnVjdCBtbHg1X3FtZ210X2RhdGEpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz01ODI1PXN0YXRpYyB2b2lkIG1seDVlX2J1aWxkX25pY19uZXRkZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTgzNC1cXHRuZXRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2bWx4NWVfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjU4MzU6XFx0bmV0ZGV2LVxcdTAwM2VxdWV1ZV9tZ210X29wcyA9IFxcdTAwMjZtbHg1ZV9xdWV1ZV9tZ210X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU4MzYtXFx0bmV0ZGV2LVxcdTAwM2V4ZHBfbWV0YWRhdGFfb3BzID0gXFx1MDAyNm1seDVlX3hkcF9tZXRhZGF0YV9vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jPTc0Nj1zdHJ1Y3QgbmV0X2RldmljZSAqZmJuaWNfbmV0ZGV2X2FsbG9jKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtNzYwLVxcdG5ldGRldi1cXHUwMDNlc3RhdF9vcHMgPSBcXHUwMDI2ZmJuaWNfc3RhdF9vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo3NjE6XFx0bmV0ZGV2LVxcdTAwM2VxdWV1ZV9tZ210X29wcyA9IFxcdTAwMjZmYm5pY19xdWV1ZV9tZ210X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTc2Mi1cXHRuZXRkZXYtXFx1MDAzZW5ldG1lbV90eCA9IE5FVE1FTV9UWF9ETUE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yOTA4PXN0YXRpYyBpbnQgZmJuaWNfcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpxbWVtLCBpbnQgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjk0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyOTQ5OmNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgZmJuaWNfcXVldWVfbWdtdF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjk1MC1cXHQubmRvX3F1ZXVlX21lbV9zaXplXFx0PSBzaXplb2Yoc3RydWN0IGZibmljX3FfdHJpYWQpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4Lmg9MTUwPXN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguaC0xNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4Lmg6MTYzOmV4dGVybiBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIGZibmljX3F1ZXVlX21nbXRfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5oLTE2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MzQ9c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NTItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg1MzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBuc2ltX3F1ZXVlX21nbXRfb3BzID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NTQtXFx0Lm5kb19xdWV1ZV9tZW1fc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBuc2ltX3F1ZXVlX21lbSksXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTAzOD1zdGF0aWMgaW50IG5zaW1faW5pdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTA1MC1cXHRucy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0X29wcyA9IFxcdTAwMjZuc2ltX3N0YXRfb3BzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMDUxOlxcdG5zLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXFx1MDAyNm5zaW1fcXVldWVfbWdtdF9vcHM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNTItXFx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMobnMtXFx1MDAzZW5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRraXQuYz0zNTg9c3RhdGljIGludCBuZXRraXRfcXVldWVfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRraXQuYy0zOTEtXFxuZHJpdmVycy9uZXQvbmV0a2l0LmM6MzkyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5ldGtpdF9xdWV1ZV9tZ210X29wcyA9IHtcXG5kcml2ZXJzL25ldC9uZXRraXQuYy0zOTMtXFx0Lm5kb19xdWV1ZV9jcmVhdGVcXHQ9IG5ldGtpdF9xdWV1ZV9jcmVhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRraXQuYz00NDE9c3RhdGljIHZvaWQgbmV0a2l0X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRraXQuYy00NzMtXFx0ZGV2LVxcdTAwM2VldGh0b29sX29wcyAgICA9IFxcdTAwMjZuZXRraXRfZXRodG9vbF9vcHM7XFxuZHJpdmVycy9uZXQvbmV0a2l0LmM6NDc0OlxcdGRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHMgPSBcXHUwMDI2bmV0a2l0X3F1ZXVlX21nbXRfb3BzO1xcbmRyaXZlcnMvbmV0L25ldGtpdC5jLTQ3NS1cXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MTgwND1lbnVtIG5ldGRldl9yZWdfc3RhdGUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yMDM3LSAqXFx0QHN0YXRfb3BzOlxcdE9wdGlvbmFsIG9wcyBmb3IgcXVldWUtYXdhcmUgc3RhdGlzdGljc1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjAzODogKlxcdEBxdWV1ZV9tZ210X29wczpcXHRPcHRpb25hbCBvcHMgZm9yIHF1ZXVlIG1hbmFnZW1lbnRcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIwMzktICpcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI0NTctXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNDU4OlxcdGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgKnF1ZXVlX21nbXRfb3BzO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjQ1OS1cXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9Mjg9c3RhdGljIGlubGluZSBib29sIG5ldGRldl9uZWVkX29wc19sb2NrKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0yOS17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDozMDpcXHRib29sIHJldCA9IGRldi1cXHUwMDNlcmVxdWVzdF9vcHNfbG9jayB8fCAhIWRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHM7XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0zMS1cXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaD0xMTg9ZW51bSB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmgtMTIzLS8qKlxcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaDoxMjQ6ICogc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyAtIG5ldGRldiBvcHMgZm9yIHF1ZXVlIG1hbmFnZW1lbnRcXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmgtMTI1LSAqXFxuLS1cXG5pbmNsdWRlL25ldC9uZXRkZXZfcXVldWVzLmgtMTYzLSAqL1xcbmluY2x1ZGUvbmV0L25ldGRldl9xdWV1ZXMuaDoxNjQ6c3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyB7XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X3F1ZXVlcy5oLTE2NS1cXHRzaXplX3RcXHRuZG9fcXVldWVfbWVtX3NpemU7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jPTEyNTI9aW50IG5ldGRldl9ubF9xdWV1ZV9jcmVhdGVfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMzg3LVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM6MTM4ODpcXHRxdWV1ZV9pZCA9IGRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHMtXFx1MDAzZW5kb19xdWV1ZV9jcmVhdGUoZGV2LCBpbmZvLVxcdTAwM2VleHRhY2spO1xcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTM4OS1cXHRpZiAocXVldWVfaWQgXFx1MDAzYyAwKSB7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmM9MTY9c3RhdGljIGludCBfX25ldGRldl9xdWV1ZV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmMtMjctXFx0dmFsaWRhdGVfY2IgPSBuZXRkZXZfbm9wX3ZhbGlkYXRlX3FjZmc7XFxubmV0L2NvcmUvbmV0ZGV2X2NvbmZpZy5jOjI4OlxcdGlmICh2YWxpZGF0ZSBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzLVxcdTAwM2VuZG9fdmFsaWRhdGVfcWNmZylcXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmM6Mjk6XFx0XFx0dmFsaWRhdGVfY2IgPSBkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzLVxcdTAwM2VuZG9fdmFsaWRhdGVfcWNmZztcXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmMtMzAtXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfY29uZmlnLmMtMzMtXFx0LyogR2V0IGRlZmF1bHRzIGZyb20gdGhlIGRyaXZlciwgaW4gY2FzZSB1c2VyIGNvbmZpZyBub3Qgc2V0ICovXFxubmV0L2NvcmUvbmV0ZGV2X2NvbmZpZy5jOjM0OlxcdGlmIChkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzLVxcdTAwM2VuZG9fZGVmYXVsdF9xY2ZnKVxcbm5ldC9jb3JlL25ldGRldl9jb25maWcuYzozNTpcXHRcXHRkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzLVxcdTAwM2VuZG9fZGVmYXVsdF9xY2ZnKGRldiwgcWNmZyk7XFxubmV0L2NvcmUvbmV0ZGV2X2NvbmZpZy5jLTM2LVxcdGVyciA9IHZhbGlkYXRlX2NiKGRldiwgcWNmZywgZXh0YWNrKTtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9xdWV1ZXMuYz0xMD1fX25ldGRldl9xdWV1ZV9nZXRfZG1hX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgaWR4KVxcbm5ldC9jb3JlL25ldGRldl9xdWV1ZXMuYy0xMS17XFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jOjEyOlxcdGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgKnF1ZXVlX29wcyA9IGRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHM7XFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jLTEzLVxcdHN0cnVjdCBkZXZpY2UgKmRtYV9kZXY7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmM9NjE9Ym9vbCBuZXRkZXZfY2FuX2NyZWF0ZV9xdWV1ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jLTY3LVxcdH1cXG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmM6Njg6XFx0aWYgKCFkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzIHx8XFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jOjY5OlxcdCAgICAhZGV2LVxcdTAwM2VxdWV1ZV9tZ210X29wcy1cXHUwMDNlbmRvX3F1ZXVlX2NyZWF0ZSkge1xcbm5ldC9jb3JlL25ldGRldl9xdWV1ZXMuYy03MC1cXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJEZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBxdWV1ZSBjcmVhdGlvblxcXCIpO1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jPTgxPWJvb2wgbmV0ZGV2X2Nhbl9sZWFzZV9xdWV1ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jLTkxLVxcdH1cXG5uZXQvY29yZS9uZXRkZXZfcXVldWVzLmM6OTI6XFx0aWYgKCFkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzKSB7XFxubmV0L2NvcmUvbmV0ZGV2X3F1ZXVlcy5jLTkzLVxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIkxlYXNlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHF1ZXVlIG1hbmFnZW1lbnQgb3BlcmF0aW9uc1xcXCIpO1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTEwMy1cXHRzdHJ1Y3QgbmV0ZGV2X3J4X3F1ZXVlICpyeHEgPSBfX25ldGlmX2dldF9yeF9xdWV1ZShkZXYsIHJ4cV9pZHgpO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjEwNDpcXHRjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzICpxb3BzID0gZGV2LVxcdTAwM2VxdWV1ZV9tZ210X29wcztcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMDUtXFx0dm9pZCAqbmV3X21lbSwgKm9sZF9tZW07XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0xODc9c3RhdGljIGludCBfX25ldGlmX21wX29wZW5fcnhxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTkwLXtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxOTE6XFx0Y29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyAqcW9wcyA9IGRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHM7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTkyLVxcdHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnIHFjZmdbMl07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjM5OjUwLjg5MzEwNzkyNloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzEwODI0NjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUXVldWUgTWFuYWdlbWVudCBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyBkaWZmZXJlbnQgbmV0d29yayBkcml2ZXJzIGhhbmRsZSBxdWV1ZSBtYW5hZ2VtZW50LiBJIGtub3cgYGd2ZWAsIGBtbHg1YCwgYW5kIGBmYm5pY2AgYWxsIHJlbHkgb24gYHF1ZXVlX21nbXRfb3BzYC4gQnV0IHdoYXQgYWJvdXQgYGlhdmZgIGFuZCBgbWFuYWA/IEkgbmVlZCB0byBjbGFyaWZ5IHRoZWlyIGFwcHJvYWNoIHRvIHF1ZXVlIG1hbmFnZW1lbnQuIEl0J3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIGlmIHRoZXkgZW1wbG95IGByZXF1ZXN0X29wc19sb2NrYCB3aGljaCBjb3VsZCBwcm92aWRlIG1vcmUgaW5zaWdodCBpbnRvIHRoZWlyIHN5bmNocm9uaXphdGlvbiBzdHJhdGVneSBhbmQgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNDA2LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6NTYuMjAzOTM0ODAzWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg4NDgwOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3Rfb3BzX2xvY2tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0PTM0Mz1Ecml2ZXJzIGNhbiBhbHNvIGV4cGxpY2l0bHkgcmVxdWVzdCBpbnN0YW5jZSBsb2NrIHRvIGJlIGhlbGQgZHVyaW5nIG9wc1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdDozNDQ6Ynkgc2V0dGluZyBgYHJlcXVlc3Rfb3BzX2xvY2tgYCB0byB0cnVlLiBDb2RlIGNvbW1lbnRzIGFuZCBkb2NzIHJlZmVyXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0LTM0NS10byBkcml2ZXJzIHdoaWNoIGhhdmUgb3BzIGNhbGxlZCB1bmRlciB0aGUgaW5zdGFuY2UgbG9jayBhcyBcXFwib3BzIGxvY2tlZFxcXCIuXFxuLS1cXG5kcml2ZXJzL25ldC9kdW1teS5jPTEwMz1zdGF0aWMgdm9pZCBkdW1teV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHVtbXkuYy0xMTAtXFx0ZGV2LVxcdTAwM2VuZWVkc19mcmVlX25ldGRldiA9IHRydWU7XFxuZHJpdmVycy9uZXQvZHVtbXkuYzoxMTE6XFx0ZGV2LVxcdTAwM2VyZXF1ZXN0X29wc19sb2NrID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC9kdW1teS5jLTExMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0zMzI2PWludCBibmdlX25ldGRldl9hbGxvYyhzdHJ1Y3QgYm5nZV9kZXYgKmJkLCBpbnQgbWF4X2lycXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMzQ0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM6MzQ0MzpcXHRuZXRkZXYtXFx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0zNDQ0LVxcdHJjID0gcmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTU4MjU9c3RhdGljIHZvaWQgbWx4NWVfYnVpbGRfbmljX25ldGRldihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01ODM3LVxcdG5ldGRldi1cXHUwMDNleHNrX3R4X21ldGFkYXRhX29wcyA9IFxcdTAwMjZtbHg1ZV94c2tfdHhfbWV0YWRhdGFfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NTgzODpcXHRuZXRkZXYtXFx1MDAzZXJlcXVlc3Rfb3BzX2xvY2sgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTgzOS1cXHRuZXRkZXZfbG9ja2RlcF9zZXRfY2xhc3NlcyhuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jPTg4Nz1zdGF0aWMgdm9pZCBtbHg1ZV9idWlsZF9yZXBfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMtODkxLVxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZtbHg1ZV9uZXRkZXZfb3BzX3JlcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmM6ODkyOlxcdG5ldGRldi1cXHUwMDNlcmVxdWVzdF9vcHNfbG9jayA9IHRydWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jLTg5My1cXHRuZXRkZXZfbG9ja2RlcF9zZXRfY2xhc3NlcyhuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmM9OTk9aW50IG1seDVpX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYy0xMjMtXFx0bmV0ZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZtbHg1aV9ldGh0b29sX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYzoxMjQ6XFx0bmV0ZGV2LVxcdTAwM2VyZXF1ZXN0X29wc19sb2NrID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYy0xMjUtXFx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMobmV0ZGV2KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NTMtXFx0LyoqXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNTU0OlxcdCAqIEByZXF1ZXN0X29wc19sb2NrOiByZXF1ZXN0IHRoZSBjb3JlIHRvIHJ1biBhbGwgQG5ldGRldl9vcHMgYW5kXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTU1LVxcdCAqIEBldGh0b29sX29wcyB1bmRlciB0aGUgQGxvY2suXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTU2LVxcdCAqL1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjU1NzpcXHRib29sXFx0XFx0XFx0cmVxdWVzdF9vcHNfbG9jaztcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NTgtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NjYtXFx0ICogb3BlcmF0aW9ucy4gRHJpdmVycyBtYXkgb3B0LWluIHRvIHRoaXMgYmVoYXZpb3IgYnkgc2V0dGluZ1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjU2NzpcXHQgKiBAcmVxdWVzdF9vcHNfbG9jay5cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1NjgtXFx0ICpcXG4tLVxcbmluY2x1ZGUvbmV0L25ldGRldl9sb2NrLmg9Mjg9c3RhdGljIGlubGluZSBib29sIG5ldGRldl9uZWVkX29wc19sb2NrKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0yOS17XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaDozMDpcXHRib29sIHJldCA9IGRldi1cXHUwMDNlcmVxdWVzdF9vcHNfbG9jayB8fCAhIWRldi1cXHUwMDNlcXVldWVfbWdtdF9vcHM7XFxuaW5jbHVkZS9uZXQvbmV0ZGV2X2xvY2suaC0zMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6Mzk6NTguMTkyNDI1NDU0WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTI0MjMxODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBNaXNzaW5nIElBVkYgYW5kIE1BTkEgT3BlcmF0aW9ucyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEknbSByZXZpZXdpbmcgdGhlIG91dHB1dCBvZiBgcmVxdWVzdF9vcHNfbG9ja2AgYW5kIGBxdWV1ZV9tZ210X29wc2AsIGFuZCBJJ20gbm90IHNlZWluZyBgaWF2ZmAgb3IgYG1hbmFgIGxpc3RlZCBhbnl3aGVyZS4gVGhhdOKAmXMgZGVmaW5pdGVseSBub3QgcmlnaHQsIGNvbnNpZGVyaW5nIGhvdyB0aGVzZSBjb21wb25lbnRzIGludGVyYWN0LiBNeSBpbml0aWFsIGFuYWx5c2lzIGlzIGluY29tcGxldGUuIEl0IGxvb2tzIGxpa2UgSSBuZWVkIHRvIG5hcnJvdyBteSBmb2N1cyBhbmQgZGlyZWN0bHkgdmVyaWZ5IHRoZWlyIHByZXNlbmNlIChvciBsYWNrIHRoZXJlb2YpLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBpbnNwZWN0IHRoZSByZXN1bHRzIHNwZWNpZmljYWxseSBmb3IgYGlhdmZgIGFuZCBgbWFuYWAuIFRpbWUgdG8gY2hlY2sgdGhvc2UgaW5kaXZpZHVhbGx5LiBJIG5lZWQgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM4NDQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDowMS42MDQ4NTIxMDlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDk2MTY5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXF1ZXN0X29wc19sb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDowMS42NjIzNTYzMzhaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4MjIyODc0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgRGVlcGVyIGludG8gdGhlIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBhbmQgdGhpbmtpbmcsIFwiSG9sZCBvbiBhIG1pbnV0ZS4uLiBkaWQgdGhleSBjb25maWd1cmUgdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCBkaWZmZXJlbnRseSB0aGFuIEknbSBhc3N1bWluZz9cIiBUaGVyZSdzIGFsd2F5cyBhIGNoYW5jZSBJJ3ZlIG1pc3NlZCBhIG51YW5jZSBpbiB0aGVpciBzZXR1cCBvciBwZXJoYXBzIHRoZXkndmUgdXRpbGl6ZWQgc29tZSBjb25maWd1cmF0aW9uIEknbSBub3QgaW1tZWRpYXRlbHkgc2VlaW5nLiBJIGFsc28gbmVlZCB0byBjb25zaWRlciBpZiB0aGV5IGFyZSwgaW4gZmFjdCwgdXNpbmcgdGhhdCBgcXVldWVfbWdtdF9vcHNgIGZ1bmN0aW9uIGJ1dCBtYXliZSBpdCB3YXMgdXNlZCBpbiBhIGNvbnRleHQgdGhhdCBJIGNvbXBsZXRlbHkgZ2xhemVkIG92ZXIuIEkgbmVlZCB0byB0YWtlIGFub3RoZXIgbG9vay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQwNzAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDowNS4xNDQ1ODg3NDFaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTExODQ5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV9tZ210X29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDA6MDUuMjAwNTEwNDdaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1OTg5Mjk0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEZWx2aW5nIGludG8gdGhlIEVzc2VuY2U6IFJldmlzaXRpbmcgYE1hbmFgKipcblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhpcy4gSW1tZWRpYXRlbHksIG15IG1pbmQganVtcHMgdG8gdGhlIGNvbmNlcHQgb2YgYG1hbmFgLiBJdCdzIGEgZnVuZGFtZW50YWwgaWRlYSwgaXNuJ3QgaXQ/IFdoZXRoZXIgd2UncmUgdGFsa2luZyBhYm91dCBlbmVyZ3kgZmxvd3MsIGFic3RyYWN0IHNvdXJjZXMgb2YgcG93ZXIsIG9yIGV2ZW4gbWV0YXBob3JpY2FsIHJlcHJlc2VudGF0aW9ucywgYG1hbmFgIG9mZmVycyBhIHBvd2VyZnVsIGxlbnMuIEknbSBhbHJlYWR5IGZvcm11bGF0aW5nIHF1ZXN0aW9uczogSXMgdGhpcyBtZWFudCBsaXRlcmFsbHksIGFzIGEgc3BlY2lmaWMsIGRlZmluZWQgcmVzb3VyY2Ugd2l0aGluIGEgcGFydGljdWxhciBzeXN0ZW0/IE9yLCBpcyB0aGlzIG1vcmUgY29uY2VwdHVhbCwgYSB0ZXJtIGNob3NlbiB0byBldm9rZSBkZWVwZXIgbWVhbmluZ3MsIHBlcmhhcHMgcmVsYXRlZCB0byB2aXRhbCBmb3JjZXMsIG9yIGFjY2VzcyB0byBzb21ldGhpbmcgYmV5b25kIHRoZSBldmVyeWRheT8gSXMgdGhlIGludGVudCB0byBkcmF3IHBhcmFsbGVscyBvciBlc3RhYmxpc2ggYSBjb250cmFzdCBiZXR3ZWVuIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnM/IEkgc3VwcG9zZSBJIHNob3VsZCBiZWdpbiBieSB1bnBhY2tpbmcgaXRzIHZhcmlvdXMgbWFuaWZlc3RhdGlvbnMuIFdoZXJlIGlzIHRoaXMgY29uY2VwdCBiZWluZyBhcHBsaWVkLCBhbmQgaG93PyBUaGUgYW5zd2VyIHRvIHRoYXQgcXVlc3Rpb24gd2lsbCBsZWFkIHRvIHRoZSBtb3N0IGxvZ2ljYWwgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDI3NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDA6MDguNzYwNDA2NTExWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjI5MTc3OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVxdWVzdF9vcHNfbG9ja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQwOjA4LjgyMjcwNzczWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTE5ODYzNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgUXVldWUgTWFuYWdlbWVudCBPcGVyYXRpb25zOiBBIFJlc291cmNlIFBlcnNwZWN0aXZlKipcblxuUmlnaHQsIGxldCdzIHBhdXNlIGFuZCBub3QgZ2V0IGFoZWFkIG9mIG91cnNlbHZlcy4gQmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoZSBpbnRyaWNhY2llcyBvZiB0aGlzIHF1ZXVlIG1hbmFnZW1lbnQgcHJvY2VzcywgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIGV4YW1pbmUgaXRzIHJlc291cmNlIGNvbnN1bXB0aW9uLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayB0aGUgJ21hbmEnIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgJ3F1ZXVlX21nbXRfb3BzJy4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMsIGFzIHRoaXMgaXMgaG93IHRoZSBzeXN0ZW0gaXMgbWFuYWdpbmcgaXQncyBjdXJyZW50IHByb2Nlc3MuIFRoaXMgaXMgdGhlIGx5bmNocGluIGZvciBlZmZpY2llbnQgb3BlcmF0aW9uLiBJIGFtIGNvbnNpZGVyaW5nIHRoaXMgdmFsdWUgYW5kIHRyeWluZyB0byBkZWNpZGUgaXQncyBlZmZlY3RzLiBLbm93aW5nIHRoZSBjdXJyZW50IHJlc291cmNlICdtYW5hJyBkZWRpY2F0ZWQgdG8gdGhpcyBlbGVtZW50IHdpbGwgaW5mb3JtIHRoZSBuZXh0IHN0ZXBzLCBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucywgYW5kIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3MgdGhhdCBtaWdodCBiZSBsdXJraW5nLiBBIHF1aWNrIGNoZWNrIG9mIGBtYW5hYCBoZXJlIGNhbiBzYXZlIGEgbG90IG9mIGRlYnVnZ2luZyBsYXRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ1MzcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDoxMi4yNzQ2OTY1NjRaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MTYyNTA4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxdWV1ZV9tZ210X29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQwOjEyLjMzMTg2ODkyMloiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDkzMTQ3MTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIFBhdGNoKipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGlmIGJvdGggYGlhdmZgIGFuZCBgbWFuYWAgZHJpdmVycyBkb24ndCBzZXQgYHJlcXVlc3Rfb3BzX2xvY2tgIGFuZCBhbHNvIGRvbid0IGltcGxlbWVudCBgcXVldWVfbWdtdF9vcHNgLCB0aGVuIGBuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYCBzaG91bGQgYmUgcmV0dXJuaW5nIGBmYWxzZWAgZm9yIHRoZW0uIFJpZ2h0PyBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZW4gaW4gYm90aCBgX19kZXZfZXRodG9vbGAgYW5kIGBldGhubF9kZWZhdWx0X2RvaXRgLCB0aGUgYG5lZWRfcnRubGAgdmFyaWFibGUgd291bGQgKmFsd2F5cyogYmUgYHRydWVgIVxuXG5MZXQgbWUgZG91YmxlLWNoZWNrIGBuZXQvZXRodG9vbC9pb2N0bC5jYCB0byBiZSBjZXJ0YWluLiBZZXMsIGhlcmUncyB0aGUgcmVsZXZhbnQgY29kZTpcblxuYGBgY1xuXHRuZWVkX3J0bmwgPSAhbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KSB8fFxuXHRcdCAgICBldGh0b29sX2NtZF9jaGFuZ2VzX2ZlYXR1cmVzKGV0aGNtZCkgfHxcblx0XHQgICAgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sKGRldiwgZXRoY21kKTtcbmBgYFxuXG5JZiBgbmV0ZGV2X25lZWRfb3BzX2xvY2soZGV2KWAgaXMgZmFsc2UgKHdoaWNoIGlzIHdoYXQgSSBleHBlY3QgZm9yIGBpYXZmYCBhbmQgYG1hbmFgKSwgdGhlIGZpcnN0IHBhcnQgb2YgdGhhdCBjb25kaXRpb25hbCwgYCFuZXRkZXZfbmVlZF9vcHNfbG9jayhkZXYpYCwgd2lsbCBldmFsdWF0ZSB0byB0cnVlLiBUaGVyZWZvcmUsIGBuZWVkX3J0bmxgICp3b3VsZCogYmUgdHJ1ZSByZWdhcmRsZXNzIVxuXG5TbywgZm9yIHRoZXNlIGRyaXZlcnMsIGBuZWVkX3J0bmxgIHdhcyBBTFJFQURZIHRydWUgYmVmb3JlIHRoZSBwYXRjaCBldmVuIGFkZGVkIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZWlyIGBvcF9uZWVkc19ydG5sYCEgVGhhdCdzIHdoYXQgaGFzIG1lIHB1enpsZWQuXG5cblRoZSBxdWVzdGlvbiB0aGVuIGlzLCB3aHkgdGhlIGFkZGVkIGZsYWc/IEFyZSB0aGV5IHBsYW5uaW5nIHRvIHNldCBgcmVxdWVzdF9vcHNfbG9ja2AgaW4gYSBmdXR1cmUgcGF0Y2g/IE9yIG1heWJlIHRoaXMgcGF0Y2ggc2VyaWVzIGluY2x1ZGVzIHNvbWUgb3RoZXIgY2hhbmdlIHRvIHRoZXNlIGRyaXZlcnMgdGhhdCAqZG9lcyogYWZmZWN0IHRoZSBsb2NraW5nIGJlaGF2aW9yPyBMZXQncyB0YWtlIGEgbG9vayBhbmQgc2VlIGlmIGBpYXZmYCBhbmQgYG1hbmFgIGN1cnJlbnRseSBzZXQgYHJlcXVlc3Rfb3BzX2xvY2tgLiBUaW1lIHRvIGNoZWNrIHRoZSBjdXJyZW50IHRyZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzkzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQwOjE4LjQyNTAxODk2MVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3NjcxMTA1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXF1ZXN0X29wc19sb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDoxOC42MTI2OTkxMjZaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwMDM1NDkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaWdnaW5nIGludG8gdGhlIElBVkYgQ29kZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIGNydWNpYWwgc2V0dGluZyBpcyBoYXBwZW5pbmcgd2l0aGluIHRoZSBgaWF2ZmAgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IHdhcyB0aGF0IG1heWJlIGl0IHdhcyBoYW5kbGVkIGRpcmVjdGx5IHdpdGhpbiBgaWF2Zl9tYWluLmNgLCBidXQgYSBxdWljayBncmVwIHR1cm5zIHVwIG5vdGhpbmcuIEhtbSwgdGhhdCdzIG5vdCBpdC4gTGV0J3Mgc2VlLi4uIG1heWJlIGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgYHF1ZXVlX21nbXRfb3BzYCBzdHJ1Y3R1cmUuIEknbGwgc2VhcmNoIGZvciB0aGF0IHRvIHNlZSBpZiBgaWF2ZmAgaXMgbGV2ZXJhZ2luZyBpdCwgYnV0IHN0aWxsLCBubyBkaWNlLiBJJ20gc3RhcnRpbmcgdG8gdGhpbmsgdGhpcyBpcyBub3QgdGhlIHJpZ2h0IHBsYWNlLiBQZXJoYXBzIGEgZGlmZmVyZW50IHNldCBvZiBvcGVyYXRpb25zLCBgbmV0X3NoYXBlcl9vcHNgLCBhcmUgaW52b2x2ZWQgaW5zdGVhZC4gSSdsbCBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgbmV4dCwgaG9wZWZ1bGx5LCBpdCB3aWxsIGJlIHRoZSByaWdodCBsb2NhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU2MzUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDoyMS44MTMwNTYzNzdaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTM1NDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldF9zaGFwZXJfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmM9NTExNj1zdGF0aWMgdm9pZCBpYXZmX3NoYXBlcl9jYXAoc3RydWN0IG5ldF9zaGFwZXJfYmluZGluZyAqYmluZGluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTEyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jOjUxMjg6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfc2hhcGVyX29wcyBpYXZmX3NoYXBlcl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYy01MTI5LVxcdC5zZXQgPSBpYXZmX3NoYXBlcl9zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jPTUxMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpYXZmX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jLTUxNDgtXFx0Lm5kb19zZXR1cF90Y1xcdFxcdD0gaWF2Zl9zZXR1cF90YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jOjUxNDk6XFx0Lm5ldF9zaGFwZXJfb3BzXFx0XFx0PSBcXHUwMDI2aWF2Zl9zaGFwZXJfb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTE1MC1cXHQubmRvX2h3dHN0YW1wX2dldFxcdD0gaWF2Zl9od3N0YW1wX2dldCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDA6MjEuODcxMTk3MzA1WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTYxNjk4MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBJQVZGIGFuZCBOZXR3b3JrIFNoYXBlciBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBpYXZmYCBkcml2ZXIgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBsZXZlcmFnaW5nIGBuZXRfc2hhcGVyX29wc2AuIFRoYXQncyBpbnRlcmVzdGluZywgYmVjYXVzZSBpdCBtZWFucyB0aGUgZHJpdmVyIGlzIGluZGVlZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBuZXR3b3JrIHNoYXBpbmcgZnVuY3Rpb25hbGl0eS4gQW5kIGhlcmUncyB0aGUgY2xpbmNoZXI6IGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgcmV0dXJucyB0cnVlIHdoZW4gYG5ldF9zaGFwZXJfb3BzYCBpcyBzZXQgd2l0aGluIHRoZSBgbmV0ZGV2X29wc2Agc3RydWN0dXJlLiBUaGUgY29kZSBzbmlwcGV0IGNsZWFybHkgY29uZmlybXMgdGhhdDpcblxuYGBgY1xuI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9TSEFQRVIpXG5cdHJldCB8PSAhIWRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5ldF9zaGFwZXJfb3BzO1xuI2VuZGlmXG5gYGBcblxuU28sIGlmIGBuZXRfc2hhcGVyX29wc2AgaXMgYXNzaWduZWQsIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgaXMgZ29pbmcgdG8gYmUgcmVwb3J0aW5nIGEgbmVlZCBmb3IgbG9ja2luZy4gVGhpcyBjb25maXJtcyB0aGF0IGBpYXZmYCBfZG9lc18gcmVxdWlyZSB0aGF0IGxvY2tpbmcgbWVjaGFuaXNtLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgd2hhdCBhYm91dCBgbWFuYWA/IEkgbmVlZCB0byBjaGVjayBpZiB0aGUgc2FtZSBsb2dpYyBhcHBsaWVzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjIzMiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDoyNS4yODczNzE1NVoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEwODUwMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0X3NoYXBlcl9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYz05NjQ9c3RhdGljIHZvaWQgbWFuYV9zaGFwZXJfY2FwKHN0cnVjdCBuZXRfc2hhcGVyX2JpbmRpbmcgKmJpbmRpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtOTcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzo5NzI6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfc2hhcGVyX29wcyBtYW5hX3NoYXBlcl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTk3My1cXHQuc2V0ID0gbWFuYV9zaGFwZXJfc2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jPTk3OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hbmFfZGV2b3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTk5MS1cXHQubmRvX3R4X3RpbWVvdXRcXHRcXHQ9IG1hbmFfdHhfdGltZW91dCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6OTkyOlxcdC5uZXRfc2hhcGVyX29wcyAgICAgICAgID0gXFx1MDAyNm1hbmFfc2hhcGVyX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtOTkzLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQwOjI1LjM1ODQ2MzQ5OFoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjA2MjQxNDc0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEV0aHRvb2wgTGluayBTdGF0ZSBCdWcgRml4KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBUaGUga2V5IGluc2lnaHQgaXMgdGhhdCB0aGUgYG1hbmFgIGRyaXZlciwgYWxvbmcgd2l0aCBgZ3ZlYCwgYGlhdmZgLCBgbWx4NWAsIGFuZCBgZmJuaWNgLCBhbGwgdXRpbGl6ZSBgbmV0X3NoYXBlcl9vcHNgLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgbGVhZHMgdG8gYG5ldGRldl9uZWVkX29wc19sb2NrKGRldilgIHJldHVybmluZyBgdHJ1ZWAgZm9yIHRoZXNlIGRyaXZlcnMuIENvbnNlcXVlbnRseSwgYG5lZWRfcnRubGAgd291bGQgYmUgYGZhbHNlYCBieSBkZWZhdWx0IGZvciBgRVRIVE9PTF9HTElOS2AgYW5kIGBFVEhUT09MX01TR19MSU5LU1RBVEVfR0VUYC4gVGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgaXNzdWUuXG5cblRoZSBwcm9ibGVtIGFyaXNlcyBiZWNhdXNlIHdoZW4gYG5lZWRfcnRubGAgaXMgYGZhbHNlYCwgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGlzIGludm9rZWQgd2l0aG91dCBob2xkaW5nIHRoZSBgcnRubF9sb2NrYC4gSG93ZXZlciwgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAsIHdoaWNoIHRoZW4gY2FsbHMgYGxpbmt3YXRjaF9kb19kZXZgLCBldmVudHVhbGx5IGxlYWRpbmcgdG8gYGRldl9hY3RpdmF0ZWAgYW5kIGEgY2FsbCB0byBgcnRubF9kZXJlZmVyZW5jZShkZXYtXHUwMDNlcWRpc2MpYC4gVGhpcyBkZXJlZmVyZW5jZSAqcmVxdWlyZXMqIHRoZSBgcnRubF9sb2NrYC4gVGhlcmVmb3JlLCBjYWxsaW5nIGBldGh0b29sX29wX2dldF9saW5rYCB3aXRob3V0IHRoZSBsb2NrIGludHJvZHVjZXMgYSByYWNlIGNvbmRpdGlvbiBhbmQgbGVhZHMgdG8gUkNVIHdhcm5pbmdzLlxuXG5UaGlzIHBhdGNoIGVsZWdhbnRseSBhZGRyZXNzZXMgdGhlIGlzc3VlIGJ5IGFkZGluZyBgRVRIVE9PTF9PUF9ORUVEU19SVE5MX0dMSU5LYCB0byBgb3BfbmVlZHNfcnRubGAgZm9yIHRoZXNlIHNwZWNpZmljIGRyaXZlcnMuIFRoaXMgZmxhZyBpcyB0aGVuIGNoZWNrZWQgaW4gYGV0aHRvb2xfbmxfbXNnX25lZWRzX3J0bmxgIGFuZCBgZXRodG9vbF9pb2N0bF9uZWVkc19ydG5sYCwgZ3VhcmFudGVlaW5nIHRoYXQgYHJ0bmxfbG9ja2AgaXMgYWNxdWlyZWQgYmVmb3JlIGNhbGxpbmcgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLiBJdCdzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIGxvY2tpbmcgYnVnLlxuXG5HaXZlbiB0aGlzLCBJIHRoaW5rIGZ1enppbmcgdGhpcyBjaGFuZ2UgaXMgYSB3b3J0aHdoaWxlIGVuZGVhdm9yIGJlY2F1c2UgaXQgZnVuZGFtZW50YWxseSBhbHRlcnMgbG9ja2luZyBiZWhhdmlvci4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhhdCB0aGUgbG9jayBpcyBjb25zaXN0ZW50bHkgdGFrZW4gYW5kIHRoYXQgbm8gZGVhZGxvY2tzIG9yIG5ldyBSQ1Ugd2FybmluZ3MgYXJlIGludHJvZHVjZWQuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBmb3IgZm9jdXMgZHVyaW5nIHRlc3RpbmcuIEkgaW5pdGlhbGx5IHRob3VnaHQgdG8gaW5jbHVkZSBhIGJyb2FkZXIgc2V0LCBzdWNoIGFzIHRoZSBnZW5lcmljIGV0aHRvb2wgZnVuY3Rpb25zIGBldGhubF9kZWZhdWx0X2RvaXRgIGFuZCBgX19kZXZfZXRodG9vbGAsIGJ1dCB0aGV5IGFyZSB0b28gZ2VuZXJpYy4gTXkgZm9jdXMgbXVzdCBiZSBsYXNlci1zaGFycC4gVGhlIGNydWNpYWwgZnVuY3Rpb24gaXMgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgLCBhcyBpdCdzIHRoZSBvbmUgZGlyZWN0bHkgaW1wYWN0ZWQgYnkgdGhlIGxvY2tpbmcgY2hhbmdlLiBUaGUgb3RoZXIgY3JpdGljYWwgZnVuY3Rpb25zIGFyZSB0aGUgZW50cnkgcG9pbnRzIHRoYXQgY2FsbCB0aGlzIGFuZCB1c2UgdGhlIGxvY2s6IGBldGhubF9kZWZhdWx0X2RvaXRgIGFuZCBgX19kZXZfZXRodG9vbGAuXG5cblNvLCBmb3IgRm9jdXNTeW1ib2xzLCBJJ20gdGhpbmtpbmc6XG5cbiogICBgZXRodG9vbF9vcF9nZXRfbGlua2BcbiogICBgZXRobmxfZGVmYXVsdF9kb2l0YFxuKiAgIGBfX2Rldl9ldGh0b29sYFxuXG5TaW5jZSBgZXRodG9vbF9ubF9tc2dfbmVlZHNfcnRubGAgYW5kIGBldGh0b29sX2lvY3RsX25lZWRzX3J0bmxgIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCB0aGV5IHdvbid0IHNob3cgYXMgc3ltYm9scywgYnV0IGBldGhubF9kZWZhdWx0X2RvaXRgIGFuZCBgX19kZXZfZXRodG9vbGAgd2lsbCBjYWxsIHRoZW0uXG5cblJlZ2FyZGluZyBFbmFibGVDb25maWdzLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGUgbW9kaWZpZWQgZHJpdmVycyBhcmUgZW5hYmxlZCB0byB0cmlnZ2VyIHRoZSBmYXVsdHkgYmVoYXZpb3IgYW5kIHRoZSBmaXg6XG5cbiogICBgZ3ZlYDogYENPTkZJR19HVkVgXG4qICAgYGlhdmZgOiBgQ09ORklHX0lBVkZgXG4qICAgYG1seDVgOiBgQ09ORklHX01MWDVfQ09SRWAsIGBDT05GSUdfTUxYNV9DT1JFX0VOYFxuKiAgIGBmYm5pY2A6IGBDT05GSUdfRkJOSUNgXG4qICAgYG1hbmFgOiBgQ09ORklHX01JQ1JPU09GVF9NQU5BYFxuXG5BbHNvLCBmb3IgYGlhdmZgIGFuZCBgbWFuYWAgdG8gdXRpbGl6ZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgLCB3ZSBuZWVkIGBDT05GSUdfTkVUX1NIQVBFUmAuIEkgd2lsbCB2ZXJpZnkgdGhlc2UgS2NvbmZpZyBuYW1lcyB0byBlbnN1cmUgYWNjdXJhY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2ODkyLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDozNy40MjA4ODE1MjhaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTY0MjI3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEdWRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZz0xNj1pZiBORVRfVkVORE9SX0dPT0dMRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnOjE4OmNvbmZpZyBHVkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiR29vZ2xlIFZpcnR1YWwgTklDIChnVk5JQykgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDA6MzkuODM3MzEwNTc4WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Njg5MTg4NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHNwZWFraW5nIGFzIHRoZSBleHBlcnQ6XG5cbioqSUFWRiBFeGFtaW5hdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHN0YXJ0IGJ5IGNoZWNraW5nIGBJQVZGYC4gSW1tZWRpYXRlbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zLiBJcyB0aGlzIGEgbmV3IHByb2plY3Q/IEEgZGF0YXNldCBJIGhhdmVuJ3Qgc2VlbiBiZWZvcmU/IE9yIGFtIEkgcmV2aXNpdGluZyBzb21ldGhpbmcgSSd2ZSB3b3JrZWQgb24gcHJldmlvdXNseT8gVGhlIGNvbnRleHQgaXMgY3JpdGljYWwuIFdoYXQncyB0aGUgcHJvYmxlbSB3ZSdyZSB0cnlpbmcgdG8gc29sdmUgaGVyZT8gSXMgdGhpcyByZWxhdGVkIHRvIGFub21hbHkgZGV0ZWN0aW9uLCBmZWF0dXJlIGVuZ2luZWVyaW5nLCBvciBtb2RlbCB2YWxpZGF0aW9uPyBJcyBgSUFWRmAgYW4gYWNyb255bT8gSXQgY291bGQgc3RhbmQgZm9yIHNvbWV0aGluZyBpbXBvcnRhbnQgaW4gdGhpcyBkb21haW4uIFdoYXQga2luZCBvZiBkYXRhIGlzIGFzc29jaWF0ZWQgd2l0aCBgSUFWRmA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzdHJ1Y3R1cmUsIGRpbWVuc2lvbnMsIGFuZCBwb3RlbnRpYWwgcmVsYXRpb25zaGlwcyB3aXRoIG90aGVyIHZhcmlhYmxlcy4gQW55IGluaXRpYWwgaHlwb3RoZXNpcyBuZWVkcyB0byBiZSBidWlsdCBhcm91bmQgdGhlIGZ1bmN0aW9uIG9mIGBJQVZGYD8gSXMgdGhlcmUgcHJldmlvdXMgYW5hbHlzaXMgYXJvdW5kIHRoZSBtZXRyaWMgb3IgZGF0YXNldD8gSSBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrLiBJ4oCZbGwgbWFrZSBzdXJlIHRvIGRvdWJsZS1jaGVjayBhZ2FpbnN0IGFueSBwcmlvciBhc3N1bXB0aW9ucyBvciBleGlzdGluZyBrbm93bGVkZ2UgSSBoYXZlIHJlZ2FyZGluZyB0aGlzIGFyZWEsIGFuZCBob3cgaXQgYWxpZ25zIHdpdGggdGhlIGN1cnJlbnQgZ29hbHMuIFRoZSBkZXZpbCdzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgc28gSSdsbCBzdGFydCB3aXRoIGEgbWV0aG9kaWNhbCwgZmlyc3QgcHJpbmNpcGxlcyBhcHByb2FjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg5MTYsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQwOjQzLjMwNjIzMjEwMloiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5ODEzODAxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUFWRlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTI1MD1jb25maWcgSTQwRV9EQ0JcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjYxLSMgc28gdGhhdCBDT05GSUdfSUFWRiBzeW1ib2wgd2lsbCBhbHdheXMgbWlycm9yIHRoZSBzdGF0ZSBvZiBDT05GSUdfSTQwRVZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyNjI6Y29uZmlnIElBVkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI2My1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDo0NS44MDQzNzg3M1oiLCJTZXEiOjU5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzE4OTAzODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBzdW1tYXJpemVkLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGVzZSB0eXBlcyBvZiBzeXN0ZW1zOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogTUxYNV9DT1JFKipcblxuQWxyaWdodCwgKk1MWDVfQ09SRSouLi4gSSBuZWVkIHRvIGltbWVkaWF0ZWx5IGFzc2VzcyB3aGF0J3MgaGFwcGVuaW5nLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCBteSBrbm93bGVkZ2Ugb2YgdGhpcyBjb3JlIGNvbXBvbmVudC4gV2hhdCdzIHRoZSBjb250ZXh0PyBXaGF0IHByb2JsZW0gYXJlIHdlIGxvb2tpbmcgYXQ/IFRoZSBuYW1lIGl0c2VsZiBzdWdnZXN0cyBhIGNlbnRyYWwsIGZvdW5kYXRpb25hbCBwaWVjZSByZWxhdGVkIHRvIE1lbGxhbm94L052aWRpYSBoYXJkd2FyZSDigJMgbGlrZWx5IHJlZmVycmluZyB0byB0aGUgY29yZSBkcml2ZXIgb3IgZmlybXdhcmUgaW50ZXJmYWNlIGZvciB0aGVpciBuZXR3b3JrIGFkYXB0ZXJzLiBJIG5lZWQgdG8gYmUgdGhpbmtpbmcgYWJvdXQgaG93IGl0IGhhbmRsZXMgdGhlIGZ1bmRhbWVudGFsIGFzcGVjdHMgb2YgbmV0d29yayBjb21tdW5pY2F0aW9uLCBoYXJkd2FyZSBpbnRlcmFjdGlvbnMsIGFuZCBwb3RlbnRpYWxseSByZXNvdXJjZSBtYW5hZ2VtZW50LiBNeSBtaW5kIG5lZWRzIHRvIGp1bXAgdGhyb3VnaCB0aGUgbGF5ZXJzLCBmcm9tIHRoZSBoYXJkd2FyZSBpdHNlbGYgdG8gdGhlIHNvZnR3YXJlIGludGVyZmFjZXMgYW5kIHVwIHRoZSBzdGFjaywgYW50aWNpcGF0aW5nIHRoZSBhcmVhcyB0aGF0IGFyZSBtb3N0IGxpa2VseSB0aGUgc291cmNlIG9mIGFuIGlzc3VlIGlmIHRoZXJlIGlzIG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkzMDAsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MDo1MC4xMjMyODU1NzJaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDgzMTI5NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1MWDVfQ09SRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjY6Y29uZmlnIE1MWDVfQ09SRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk1lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKENvbm5lY3RYIHNlcmllcykgY29yZSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0xOT1jb25maWcgTUxYNV9GUEdBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzoyOTpjb25maWcgTUxYNV9DT1JFX0VOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiTWVsbGFub3ggNXRoIGdlbmVyYXRpb24gbmV0d29yayBhZGFwdGVycyAoQ29ubmVjdFggc2VyaWVzKSBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9MTEyPWNvbmZpZyBNTFg1X1RDX1NBTVBMRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEyNTpjb25maWcgTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTEyNi1cXHRib29sIFxcXCJEYXRhIENlbnRlciBCcmlkZ2luZyAoRENCKSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjEzNzpjb25maWcgTUxYNV9DT1JFX0lQT0lCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMTM4LVxcdGJvb2wgXFxcIk1lbGxhbm94IDV0aCBnZW5lcmF0aW9uIG5ldHdvcmsgYWRhcHRlcnMgKGNvbm5lY3RYIHNlcmllcykgSVBvSUIgb2ZmbG9hZHMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDA6NTIuNjMxNjA2NjVaIiwiU2VxIjo2MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MTAyMDU4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIGBGQk5JQ2AgQ29udGV4dCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBGQk5JQ2AgdGhpbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0IHNwZWNpZmljYWxseSBhcmUgd2UgdGFsa2luZyBhYm91dCBoZXJlPyBJcyBpdCBhIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24sIGEgc3BlY2lmaWNhdGlvbiBkb2N1bWVudCwgb3IgYSBnZW5lcmFsIGNvbmNlcHQ/IEkgbmVlZCBtb3JlIGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGludGVudC4gRGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpY3MsIEknbGwgbmVlZCB0byBjb25zaWRlciBhc3BlY3RzIGxpa2U6XG5cbiogICAqKlVuZGVybHlpbmcgTmV0d29yayBUZWNobm9sb2d5OioqIElzIHRoaXMgcmVsYXRlZCB0byBFdGhlcm5ldCwgSW5maW5pQmFuZCwgc29tZXRoaW5nIHByb3ByaWV0YXJ5LCBvciBhIGh5YnJpZCBhcmNoaXRlY3R1cmU/IFVuZGVyc3RhbmRpbmcgdGhlIGZ1bmRhbWVudGFsIG5ldHdvcmsgbGF5ZXIgaXMgY3JpdGljYWwuXG4qICAgKipQcm90b2NvbCBDb25zaWRlcmF0aW9uczoqKiBXaGF0IHByb3RvY29scyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCBgRkJOSUNgPyBUQ1AvSVAsIFJETUEsIG9yIHNvbWV0aGluZyBjdXN0b20/IFRoZSBwcm90b2NvbCBzdGFjayBkaWN0YXRlcyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBhbmQgcG90ZW50aWFsIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzLlxuKiAgICoqSGFyZHdhcmUgRGVwZW5kZW5jaWVzOioqIEFyZSB3ZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBOSUMgdmVuZG9yPyBXaGF0IGFyZSB0aGVpciBmZWF0dXJlIHNldHMgYW5kIGxpbWl0YXRpb25zPyBWZW5kb3Itc3BlY2lmaWMgb3B0aW1pemF0aW9ucyBhbmQgY2FwYWJpbGl0aWVzIGFyZSBhbHdheXMgd29ydGggaW52ZXN0aWdhdGluZy5cbiogICAqKlNvZnR3YXJlIFN0YWNrOioqIFdoYXQgc29mdHdhcmUgaXMgaW50ZXJmYWNpbmcgd2l0aCB0aGUgYEZCTklDYD8gT3BlcmF0aW5nIHN5c3RlbSBkcml2ZXJzLCBhcHBsaWNhdGlvbi1sZXZlbCBsaWJyYXJpZXMsIG9yIGEgY3VzdG9tIG1pZGRsZXdhcmUgbGF5ZXI/IFRoZSBzb2Z0d2FyZSBzdGFjayBpbmZsdWVuY2VzIHBlcmZvcm1hbmNlIGFuZCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgdmFyaWFibGVzLlxuKiAgICoqUGVyZm9ybWFuY2UgTWV0cmljczoqKiBXaGF0IGFyZSB0aGUga2V5IHBlcmZvcm1hbmNlIGluZGljYXRvcnMgKEtQSXMpIHJlbGV2YW50IHRvIGBGQk5JQ2AncyBiZWhhdmlvcj8gVGhyb3VnaHB1dCwgbGF0ZW5jeSwgcGFja2V0IGxvc3MsIENQVSB1dGlsaXphdGlvbiwgb3IgYSBjb21iaW5hdGlvbiBvZiB0aGVzZT8gRGV0ZXJtaW5pbmcgd2hhdCB3ZSdyZSBtZWFzdXJpbmcgaGVscHMgaXNvbGF0ZSBwcm9ibGVtcy5cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIEhvdyBkb2VzIGBGQk5JQ2AgaGFuZGxlIGVycm9yIGNvbmRpdGlvbnM/IERvZXMgaXQgcHJvdmlkZSBzdWZmaWNpZW50IGxvZ2dpbmcgYW5kIGRpYWdub3N0aWNzIGZvciBkZWJ1Z2dpbmc/IFJvYnVzdCBlcnJvciBoYW5kbGluZyBpcyBjcnVjaWFsIGZvciByZWxpYWJsZSBvcGVyYXRpb24uXG4qICAgKipDb25maWd1cmF0aW9uIGFuZCBUdW5pbmc6KiogQXJlIHRoZXJlIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzIHRoYXQgaW1wYWN0IGBGQk5JQ2AncyBwZXJmb3JtYW5jZT8gVW5kZXJzdGFuZGluZyB0aGUga25vYnMgYW5kIGRpYWxzIGlzIHZpdGFsIGZvciBvcHRpbWl6YXRpb24uXG5cbkkgbmVlZCB0byBzZWUgdGhlIGRldGFpbHMsIGFuZCBmcm9tIHRoZXJlIEkgY2FuIHN0YXJ0IHRvIGRldmVsb3AgYSBwcmVjaXNlIGFuYWx5c2lzLiBMZXQncyBzZWUgd2hhdCB3ZSBhcmUgZGVhbGluZyB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTk5MywiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDA6NTYuNTIyNjI5ODIzWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzUzMjgwMjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGQk5JQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MTg9aWYgTkVUX1ZFTkRPUl9NRVRBXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyMDpjb25maWcgRkJOSUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIk1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQwOjU4Ljg3NTkxNzA2NFoiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDAwNzkwMDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQ2hlY2tpbmcgYE1JQ1JPU09GVF9NQU5BYCoqXG5cblJpZ2h0LCBsZXQncyBzdGFydCBieSBxdWlja2x5IHB1bGxpbmcgdXAgdGhlIGBNSUNST1NPRlRfTUFOQWAgZGF0YS4gSSdtIGFzc3VtaW5nIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBwcm9wcmlldGFyeSBkYXRhc2V0IG9yIGludGVybmFsIG1ldHJpYyDigJMgc29tZXRoaW5nIGhpZ2hseSByZWxldmFudCB0byBNaWNyb3NvZnQncyBwZXJmb3JtYW5jZSwgcG90ZW50aWFsbHkgYSBmaW5hbmNpYWwgbW9kZWwsIGEgY3VzdG9tZXIgZW5nYWdlbWVudCBzY29yZSwgb3Igc29tZSBraW5kIG9mIGludGVybmFsIHByb2R1Y3Rpdml0eSBtZWFzdXJlLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gZW5zdXJpbmcgZGF0YSBpbnRlZ3JpdHkuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgZnJlc2huZXNzIG9mIHRoZSBkYXRhOyB3aGVuIHdhcyB0aGUgbGFzdCB1cGRhdGU/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBmbGFncyDigJMgbWlzc2luZyB2YWx1ZXMsIG91dGxpZXJzLCBvciB1bnVzdWFsIHBhdHRlcm5zIHRoYXQganVtcCBvdXQ/IEknbGwgcHJvYmFibHkgcnVuIGEgc2FuaXR5IGNoZWNrIGFnYWluc3Qga25vd24gYmFzZWxpbmVzIG9yIGV4dGVybmFsIGJlbmNobWFya3MgaWYgcG9zc2libGUuXG5cbkJleW9uZCB0aGF0LCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2hhdCBJJ20gbG9va2luZyBmb3IuIFdoYXQgYXJlIHRoZSBrZXkgcGVyZm9ybWFuY2UgaW5kaWNhdG9ycyAoS1BJcykgdGhpcyBgTUlDUk9TT0ZUX01BTkFgIGlzIG1lYW50IHRvIHJlZmxlY3Q/IElzIGl0IGFsaWduZWQgd2l0aCBjdXJyZW50IHN0cmF0ZWdpYyBwcmlvcml0aWVzLCBvciBoYXMgaXQgZGl2ZXJnZWQ/IE15IG1pbmQgaXMgYWxyZWFkeSBydW5uaW5nIHNjZW5hcmlvczogSWYgaXQncyB0cmVuZGluZyB1cHdhcmRzLCB3aGF0IGFyZSB0aGUgY29udHJpYnV0aW5nIGZhY3RvcnM/IElzIGl0IHN1c3RhaW5hYmxlPyBJZiBpdCdzIGRvd24sIGFyZSB0aGVyZSBzcGVjaWZpYyBhcmVhcyBvZiBjb25jZXJuIOKAkyBhIGdlb2dyYXBoaWNhbCByZWdpb24sIGEgcHJvZHVjdCBsaW5lLCBhIGN1c3RvbWVyIHNlZ21lbnQ/IEknbGwgYmUgZm9ybWluZyBoeXBvdGhlc2VzIGFib3V0IHBvdGVudGlhbCBjYXVzZXMuIEknbGwgbGlrZWx5IG1lbnRhbGx5IGNhdGVnb3JpemUgdGhlIGRhdGEg4oCTIHNlZ21lbnRpbmcgaXQsIGxvb2tpbmcgZm9yIGNvcnJlbGF0aW9ucywgdHJ5aW5nIHRvIGZpbHRlciBmb3Igc3BlY2lmaWMgdmlld3Mgb2YgdGhlIHVuZGVybHlpbmcgZGF0YS4gVGhpcyB3aWxsIGluY2x1ZGUgaWRlbnRpZnlpbmcgdGhlIGtleSBkZXBlbmRlbmNpZXMgb2YgdGhlIGRhdGEsIHRoZSBhc3N1bXB0aW9ucyB1c2VkIGluIHRoZSBkZXNpZ24sIGFuZCBhbnkgYXNzb2NpYXRlZCBiaWFzZXMuXG5cblVsdGltYXRlbHksIG15IGdvYWwgaGVyZSBpc24ndCBqdXN0IHRvICpzZWUqIHRoZSBkYXRhLCBidXQgdG8gZ2FpbiBhY3Rpb25hYmxlIGluc2lnaHRzLiBIb3cgY2FuIHRoaXMgaW5mb3JtYXRpb24gYmUgdHJhbnNsYXRlZCBpbnRvIGNvbmNyZXRlIHJlY29tbWVuZGF0aW9ucywgYWRqdXN0bWVudHMgdG8gc3RyYXRlZ3ksIG9yIGltbWVkaWF0ZSBpbnRlcnZlbnRpb25zLCBpZiBuZWNlc3Nhcnk/IFRoaXMgaW5pdGlhbCBjaGVjayBpcyBhIHJhcGlkIGFzc2Vzc21lbnQsIGEganVtcGluZy1vZmYgcG9pbnQgZm9yIGRlZXBlciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDUzMywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQxOjAzLjg3NjcxMDFaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODkzMDI0MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1JQ1JPU09GVF9NQU5BXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE2PWlmIE5FVF9WRU5ET1JfTUlDUk9TT0ZUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6MTg6Y29uZmlnIE1JQ1JPU09GVF9NQU5BXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQxOjA2LjE2NjAxODIzM1oiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODYzNDMxMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBgTkVUX1NIQVBFUmAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIGBORVRfU0hBUEVSYC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGNydWNpYWwsIGFzIHRoaXMgY29tcG9uZW50IGlzIHRoZSBsaW5jaHBpbiBmb3IgdGhpcyBzeXN0ZW0ncyBuZXR3b3JrIHRyYWZmaWMgbWFuYWdlbWVudC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhhdCBpdCBpcyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZCwgY2hlY2tpbmcgZm9yIHRoZSBtb3N0IG9idmlvdXMgaW5kaWNhdG9ycyBmaXJzdCwgbGlrZSBvdmVyYWxsIHJlc291cmNlIGNvbnN1bXB0aW9uIGFuZCBsb2dzLCB3aGljaCwgZnJvbSBleHBlcmllbmNlLCB1c3VhbGx5IHJldmVhbCB0aGUgbW9zdCBjb21tb24gaXNzdWVzIHJpZ2h0IGF3YXkuIEFyZSB0aGVyZSBhbnkgYW5vbWFsb3VzIHNwaWtlcyBpbiBDUFUgdXNhZ2UsIG9yIGFueSB1bnVzdWFsIGRlbGF5cz8gQW5kIHdoYXQgZG8gdGhlIGVycm9yIGxvZ3MgdGVsbCB1cz8gRnJvbSB0aGVyZSwgSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIGFuYWx5emUgaXRzIGNvbmZpZ3VyYXRpb24g4oCTIHNwZWNpZmljYWxseSwgaG93IGl04oCZcyBoYW5kbGluZyByYXRlIGxpbWl0aW5nLCB0cmFmZmljIHByaW9yaXRpemF0aW9uLCBhbmQgYW55IHNoYXBpbmcgcnVsZXMgdGhhdCBoYXZlIGJlZW4gZXN0YWJsaXNoZWQuIEtub3dpbmcgd2hhdCBpdHMgYmFzZWxpbmUgb3BlcmF0aW9uIGxvb2tzIGxpa2UgaXMgY3JpdGljYWwgYmVmb3JlIHRyb3VibGVzaG9vdGluZyBpdCBvciBpbXByb3ZpbmcgaXQuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSB3aGVyZSB0aGUgYm90dGxlbmVjayBtaWdodCBhY3R1YWxseSBiZS4gSXMgaXQgYSBtaXNjb25maWd1cmF0aW9uLCBvciBzb21ldGhpbmcgbW9yZSBmdW5kYW1lbnRhbCB3aXRoIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmU/IEknbGwgcHJvYmFibHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBgTkVUX1NIQVBFUmAgb3V0cHV0IHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtIG1vbml0b3JpbmcgdG8gY29ycmVsYXRlIGl0cyBiZWhhdmlvciB3aXRoIHRoZSByZXN0IG9mIHRoZSBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEwNTYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MToxMC4wMjk0NTIxNTdaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODU3OTMxOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TSEFQRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9Njk9Y29uZmlnIE5FVF9ERVZNRU1cXG4tLVxcbm5ldC9LY29uZmlnLTc0LVxcbm5ldC9LY29uZmlnOjc1OmNvbmZpZyBORVRfU0hBUEVSXFxubmV0L0tjb25maWctNzYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MToxMi43MTUyNTQ2NloiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDcxMjc3Njc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEknbSBub3RpbmcgdGhlIGNvcmUgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQ6IGBHVkVgLCBgSUFWRmAsIGBNTFg1X0NPUkVgLCBgTUxYNV9DT1JFX0VOYCwgYE1MWDVfQ09SRV9JUE9JQmAsIGBGQk5JQ2AsIGBNSUNST1NPRlRfTUFOQWAsIGFuZCBgTkVUX1NIQVBFUmAuIEl0J3MgYSBzdGFuZGFyZCBsaXN0IGZvciB0aGlzIHR5cGUgb2Ygc3lzdGVtLlxuXG5UaGVuLCB0aGUgZm9jdXMgdGlnaHRlbnMuIEkgc2VlIHRoYXQgdGhlIHBhdGNoIHNwZWNpZmljYWxseSBhbHRlcnMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9ldGh0b29sLmNgLiBUaGlzIG1lYW5zIGBNTFg1X0NPUkVfSVBPSUJgIGlzIGRlZmluaXRlbHkgcmVsZXZhbnQuIFRoZSBkaWZmIGFkZHMgYEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOS2AgdG8gdGhlIGAub3BfbmVlZHNfcnRubGAgZmllbGQuIFRoaXMgY2xlYXJseSBpbXBsaWVzIGEgZGVwZW5kZW5jeSBvciBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBJUE9JQiBldGh0b29sIG9wZXJhdGlvbnMuIFRodXMsIGBNTFg1X0NPUkVfSVBPSUJgIGlzIGVzc2VudGlhbC5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGEgc2ltaWxhciBzaXR1YXRpb24gd2l0aCBgZW5fcmVwLmNgLCBzbyBJJ2xsIHNlZSBpZiBgTUxYNV9DT1JFX0VOX1JFUGAgb3IgYW55IHJlbGF0ZWQgY29uZmlnIGlzIHByZXNlbnQuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiDigJMgY2hlY2tpbmcgZm9yIG90aGVyIGRyaXZlcnMgb3IgbW9kdWxlcyB0aGF0IG1pZ2h0IGJlIGltcGxpY2F0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMzk5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjQxOjE5Ljc4NjUzNzExNFoiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzNTc3NTU4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbl9yZXAub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9NDI9bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRVNXSVRDSCkgICAgICs9IGxhZy9tcC5vIGxhZy9wb3J0X3NlbC5vIGxpYi9nZW5ldmUubyBsaWIvcG9ydF90dW4ubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjQzOlxcdFxcdFxcdFxcdFxcdGVuX3JlcC5vIGVuL3JlcC9ib25kLm8gZW4vbW9kX2hkci5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNDQtXFx0XFx0XFx0XFx0XFx0ZW4vbWFwcGluZy5vIGxhZy9tcGVzdy5vIGxhZy9zaGFyZWRfZmRiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDE6MjMuMTIyMzE3MzQxWiIsIlNlcSI6NjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MDk5NTcyNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZXZpZXdpbmcgdGhpcyBpbmZvcm1hdGlvbjpcblxuKipBbmFseXppbmcgTmV0d29yayBEZXZpY2UgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgYENPTkZJR19NTFg1X0VTV0lUQ0hgIGhpZ2hsaWdodGVkLiBSaWdodCwgZ290IGl0LiBUaGVuLCBJJ20gcHJlc2VudGVkIHdpdGggYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zOiBgR1ZFYCwgYElBVkZgLCBgTUxYNV9DT1JFYCwgYE1MWDVfQ09SRV9FTmAsIGBNTFg1X0NPUkVfSVBPSUJgLCBgTUxYNV9FU1dJVENIYCwgYEZCTklDYCwgYE1JQ1JPU09GVF9NQU5BYCwgYW5kIGBORVRfU0hBUEVSYC4gU2VlbXMgbGlrZSBhIHJlbGV2YW50IGdyb3VwaW5nIG9mIG5ldHdvcmstcmVsYXRlZCBrZXJuZWwgY29uZmlncy5cblxuTm93LCBhIHNtYWxsIGJ1dCBpbXBvcnRhbnQgZGV0YWlsIGNhdGNoZXMgbXkgYXR0ZW50aW9uLiBJIHJlbWVtYmVyIHRoYXQgYE5FVF9TSEFQRVJgIGlzIGEgYm9vbGVhbi4gVGhhdCBzdWdnZXN0cyBpdCBjb3VsZCBiZSBpbmZsdWVuY2VkIG9yIHNlbGVjdGVkIGJ5IGFub3RoZXIgY29uZmlnLiBSZWdhcmRsZXNzLCBpdCdzIHN0aWxsIHdvcnRoIGxpc3RpbmcgaXQgaGVyZSwgc2luY2UgaXQncyBwcmVzZW50LlxuXG5JIGhhdmUgYSBzdXNwaWNpb24gdG8gY2hlY2suIExvb2tpbmcgY2xvc2VyLCBJIHJlY2FsbCB0aGF0IGJvdGggYElBVkZgIGFuZCBgTUlDUk9TT0ZUX01BTkFgIHV0aWxpemUgYG5ldF9zaGFwZXJfb3BzYCBpbiB0aGVpciBjb2RlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGluIG15IG1pbmQgaXMsIGRvIHRoZXkgYWN0dWFsbHkgKnNlbGVjdCogYE5FVF9TSEFQRVJgPyBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZWlyIGRlcGVuZGVuY2llcyB0byBiZSBjZXJ0YWluLiBJdCdzIGNydWNpYWwgdG8gaWRlbnRpZnkgdGhlIHNlbGVjdG9yIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbmZpZydzIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI1MzQsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDE6MjguNTMyMjc3NDE3WiIsIlNlcSI6NzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTExODI1OTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBORVRfU0hBUEVSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjExLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnOjYxMjpcXHRzZWxlY3QgTkVUX1NIQVBFUlxcbmRyaXZlcnMvbmV0L0tjb25maWctNjEzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MjYyPWNvbmZpZyBJQVZGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI2NS1cXHRzZWxlY3QgTElCSUVfQURNSU5RXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyNjY6XFx0c2VsZWN0IE5FVF9TSEFQRVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTI2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE4PWNvbmZpZyBNSUNST1NPRlRfTUFOQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjQtXFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjI1OlxcdHNlbGVjdCBORVRfU0hBUEVSXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjYtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTo0MTozMS4wNDQxMTAwMDRaIiwiU2VxIjo3MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExNjkwNjUxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneTogVGFyZ2V0aW5nIHRoZSBFdGh0b29sIExpbmsgU3RhdGUgUmV0cmlldmFsIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGUgdXNlcidzIGZvY3VzIGlzIG9uIGRyaXZlcnMgd2hpY2ggaGF2ZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgIGFuZCB0aGUgbG9ja2luZyBidWcgaXMgc3BlY2lmaWNhbGx5IGNlbnRlcmVkIGFyb3VuZCB0aGUgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCB3aXRob3V0IHRoZSBuZWNlc3NhcnkgYHJ0bmxfbG9ja2AuIFBlcmZlY3QuIFRoaXMgZ2l2ZXMgbWUgYSBjbGVhciB0YXJnZXQuIFdlJ3JlIG5vdCBzdHJpY3RseSAqcmVxdWlyZWQqIHRvIGxpc3QgYE5FVF9TSEFQRVJgLCBidXQgaW5jbHVkaW5nIGl0IHdvbid0IGh1cnQuXG5cbkxldCBtZSBicmVhayBkb3duIG15IHRoaW5raW5nIG9uIHRoZSBmdXp6aW5nIGFwcHJvYWNoOlxuXG5GaXJzdCwgSSBuZWVkIHRvIHJldmlldyB0aGUgYEZvY3VzU3ltYm9sc2AuIFRoZXJlIGFyZSBhIGZldyBwb3RlbnRpYWxseSByZWxldmFudCBlbnRyeSBwb2ludHM6IGBldGh0b29sX29wX2dldF9saW5rYCwgYGV0aG5sX2RlZmF1bHRfZG9pdGAsIGBldGhubF9kZWZhdWx0X2R1bXBfb25lYCwgYW5kIGBfX2Rldl9ldGh0b29sYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgYWZmZWN0ZWQgYnkgdGhlIGxvY2suIEhvd2V2ZXIsIGBldGh0b29sX29wX2dldF9saW5rYCBzdGFuZHMgb3V0LiBJdCdzIHVzZWQgYnkgYSBsYXJnZSBudW1iZXIgb2YgZHJpdmVycywgc28gZnV6emluZyBpdCBjb3VsZCBwb3RlbnRpYWxseSB1bmNvdmVyIGlzc3VlcyBpbiBvdGhlciBkcml2ZXJzLCB0b28uIEFuZCBpbiB0aGlzIGNhc2UsIHRoYXQncyBleGFjdGx5IHdoYXQgd2Ugd2FudC5cblxuVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCB0aGlzIGJ1ZyBhcmlzZXMgYmVjYXVzZSBgZXRodG9vbF9vcF9nZXRfbGlua2AgKml0c2VsZiogaXMgbm90IGNvcnJlY3RseSBhY3F1aXJpbmcgdGhlIGBydG5sX2xvY2tgICpmb3IgdGhlIHNwZWNpZmljIHN1YnNldCBvZiBkcml2ZXJzKiB0aGF0IHVzZSBgbmV0ZGV2X25lZWRfb3BzX2xvY2tgLiBUaGUgZnVuY3Rpb24gY2FsbHMgYF9fbGlua3dhdGNoX3N5bmNfZGV2YCwgd2hpY2gsIGluIHR1cm4sIGNhbiB0cmlnZ2VyIGBkZXZfYWN0aXZhdGVgIGFuZCB1c2UgYHJ0bmxfZGVyZWZlcmVuY2VgLCByZXF1aXJpbmcgdGhlIGxvY2suIFRoZSBwYXRjaCBpdHNlbGYgYWRkcmVzc2VzIHRoaXMgYnkgYWRkaW5nIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRob3NlIGRyaXZlcnMnIGV0aHRvb2wgb3BzLiBUaGlzIGlzIGEgZGVsaWJlcmF0ZSBjaGFuZ2UgaW4gbG9ja2luZyBiZWhhdmlvciB0aGF0IEkgKm11c3QqIGZ1enogdG8gdmVyaWZ5IHRoYXQgaXQgZG9lcyBub3QgY2F1c2UgYW55IG5ldyBkZWFkbG9ja3Mgb3IgUkNVIHdhcm5pbmdzLlxuXG5JIG5lZWQgdG8gZm9jdXMgb24gdGhlIGFmZmVjdGVkIGRyaXZlcnMgc3BlY2lmaWNhbGx5OiBgR1ZFYCwgYElBVkZgLCBgTUxYNV9DT1JFYCwgYE1MWDVfQ09SRV9FTmAsIGBNTFg1X0NPUkVfSVBPSUJgLCBgTUxYNV9FU1dJVENIYCwgYEZCTklDYCwgYW5kIGBNSUNST1NPRlRfTUFOQWAuXG5cbkkgd2lsbCBpbmNsdWRlIGBldGh0b29sX29wX2dldF9saW5rYCBhbmQgYGV0aG5sX2RlZmF1bHRfZG9pdGAgc2luY2UgdGhleSBhcmUgdGhlIG1haW4gZW50cnkgcG9pbnRzLCBidXQgdGhlIHByaW1hcnkgdGFyZ2V0IHNob3VsZCBhYnNvbHV0ZWx5IGJlIGBldGh0b29sX29wX2dldF9saW5rYC4gSXQncyB0aGUgY2VudHJhbCBmdW5jdGlvbiBpbnZvbHZlZCBpbiB0aGUgdnVsbmVyYWJpbGl0eS4gYGV0aG5sX2RlZmF1bHRfZG9pdGAgYW5kIGBldGhubF9kZWZhdWx0X2R1bXBfb25lYCBhcmUgZ2VuZXJpYyBuZXRsaW5rIGhhbmRsZXJzIGFuZCBhcmUgbGVzcyBkaXJlY3RseSBpbXBsaWNhdGVkLiBgX19kZXZfZXRodG9vbGAgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYW5kIGxlc3MgaW1wb3J0YW50IGZvciBmdXp6aW5nIHB1cnBvc2VzLiBJJ3ZlIGRvdWJsZS1jaGVja2VkIHRoYXQgaW5saW5lIGZ1bmN0aW9ucyBsaWtlIGBldGh0b29sX25sX21zZ19uZWVkc19ydG5sYCBhbmQgYGV0aHRvb2xfaW9jdGxfbmVlZHNfcnRubGAgd29uJ3QgYmUgZnV6emVkIGRpcmVjdGx5LlxuXG5UaGVyZWZvcmUsIG15IHN0cmF0ZWd5IGlzIGNsZWFyOiB0YXJnZXQgYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIHdpdGggYSBmb2N1cyBvbiB0aGUgbGlzdGVkIGNvbmZpZ3VyYXRpb25zIGFuZCBhaW0gdG8gaW5kdWNlIHRoZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gbG9ja2luZyB0byB0cmlnZ2VyIGFueSByZXN1bHRpbmcgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzI0OCwiT3V0cHV0VG9rZW5zIjoyOTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6NDE6NDIuMjEzMTc5NTI2WiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3NDMzMDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJHVkVcIixcbiAgICBcIklBVkZcIixcbiAgICBcIk1MWDVfQ09SRVwiLFxuICAgIFwiTUxYNV9DT1JFX0VOXCIsXG4gICAgXCJNTFg1X0NPUkVfSVBPSUJcIixcbiAgICBcIk1MWDVfRVNXSVRDSFwiLFxuICAgIFwiRkJOSUNcIixcbiAgICBcIk1JQ1JPU09GVF9NQU5BXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXRodG9vbF9vcF9nZXRfbGlua1wiLFxuICAgIFwiZXRobmxfZGVmYXVsdF9kb2l0XCIsXG4gICAgXCJfX2Rldl9ldGh0b29sXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2NraW5nIGlzc3VlIHdoZXJlIGBldGh0b29sX29wX2dldF9saW5rYCB3YXMgY2FsbGVkIHdpdGhvdXQgYHJ0bmxfbG9ja2AgZm9yIGRyaXZlcnMgdGhhdCB1c2UgYG5ldGRldl9uZWVkX29wc19sb2NrYCAoZS5nLiBndmUsIGlhdmYsIG1seDUsIGZibmljLCBtYW5hKS4gYGV0aHRvb2xfb3BfZ2V0X2xpbmtgIGNhbGxzIGBfX2xpbmt3YXRjaF9zeW5jX2RldmAgd2hpY2ggcmVxdWlyZXMgYHJ0bmxfbG9ja2AgYmVjYXVzZSBpdCBjYW4gdHJpZ2dlciBgZGV2X2FjdGl2YXRlYCBhbmQgdXNlIGBydG5sX2RlcmVmZXJlbmNlYC4gVGhlIHBhdGNoIGFkZHMgYEVUSFRPT0xfT1BfTkVFRFNfUlROTF9HTElOS2AgdG8gdGhlc2UgZHJpdmVycycgZXRodG9vbCBvcHMgdG8gZW5zdXJlIGBydG5sX2xvY2tgIGlzIHRha2VuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbG9ja2luZyBiZWhhdmlvciB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gdmVyaWZ5IG5vIGRlYWRsb2NrcyBvciBSQ1Ugd2FybmluZ3Mgb2NjdXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1ZFXCIsXG4gICAgXCJJQVZGXCIsXG4gICAgXCJNTFg1X0NPUkVcIixcbiAgICBcIk1MWDVfQ09SRV9FTlwiLFxuICAgIFwiTUxYNV9DT1JFX0lQT0lCXCIsXG4gICAgXCJNTFg1X0VTV0lUQ0hcIixcbiAgICBcIkZCTklDXCIsXG4gICAgXCJNSUNST1NPRlRfTUFOQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV0aHRvb2xfb3BfZ2V0X2xpbmtcIixcbiAgICBcImV0aG5sX2RlZmF1bHRfZG9pdFwiLFxuICAgIFwiX19kZXZfZXRodG9vbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9ja2luZyBpc3N1ZSB3aGVyZSBgZXRodG9vbF9vcF9nZXRfbGlua2Agd2FzIGNhbGxlZCB3aXRob3V0IGBydG5sX2xvY2tgIGZvciBkcml2ZXJzIHRoYXQgdXNlIGBuZXRkZXZfbmVlZF9vcHNfbG9ja2AgKGUuZy4gZ3ZlLCBpYXZmLCBtbHg1LCBmYm5pYywgbWFuYSkuIGBldGh0b29sX29wX2dldF9saW5rYCBjYWxscyBgX19saW5rd2F0Y2hfc3luY19kZXZgIHdoaWNoIHJlcXVpcmVzIGBydG5sX2xvY2tgIGJlY2F1c2UgaXQgY2FuIHRyaWdnZXIgYGRldl9hY3RpdmF0ZWAgYW5kIHVzZSBgcnRubF9kZXJlZmVyZW5jZWAuIFRoZSBwYXRjaCBhZGRzIGBFVEhUT09MX09QX05FRURTX1JUTkxfR0xJTktgIHRvIHRoZXNlIGRyaXZlcnMnIGV0aHRvb2wgb3BzIHRvIGVuc3VyZSBgcnRubF9sb2NrYCBpcyB0YWtlbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGxvY2tpbmcgYmVoYXZpb3IgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIHZlcmlmeSBubyBkZWFkbG9ja3Mgb3IgUkNVIHdhcm5pbmdzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6hjnl[1] Phase: Succeeded StartedAt: 2026-06-24 19:43:23 +0000 UTC FinishedAt: 2026-06-24 19:43:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-24 19:43:23 +0000 UTC FinishedAt: 2026-06-24 19:43:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2] Phase: Succeeded StartedAt: 2026-06-24 19:43:23 +0000 UTC FinishedAt: 2026-06-24 23:46:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-24 19:43:23 +0000 UTC FinishedAt: 2026-06-24 23:46:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-24 19:43:23 +0000 UTC FinishedAt: 2026-06-24 19:43:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-24 19:43:23 +0000 UTC FinishedAt: 2026-06-24 19:43:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},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-workflow6hjnl/series-workflow6hjnl-convert-artifact-3257628977/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-24 19:43:33 +0000 UTC FinishedAt: 2026-06-24 20:14:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-24 19:43:33 +0000 UTC FinishedAt: 2026-06-24 20:14:53 +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:*6bcef71b-602c-4b32-8abe-43a8743fb84f,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-workflow6hjnl/series-workflow6hjnl-convert-artifact-3257628977/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": "791aa715-3c06-43bd-aae3-b7fc5af2a044", "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-workflow6hjnl/series-workflow6hjnl-build-action-3525318495/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-24 19:43:33 +0000 UTC FinishedAt: 2026-06-24 20:14:05 +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:*6bcef71b-602c-4b32-8abe-43a8743fb84f,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-workflow6hjnl/series-workflow6hjnl-convert-artifact-3257628977/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": "791aa715-3c06-43bd-aae3-b7fc5af2a044", "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-workflow6hjnl/series-workflow6hjnl-build-action-3525318495/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-24 20:14:53 +0000 UTC FinishedAt: 2026-06-24 20:14:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-24 20:14:53 +0000 UTC FinishedAt: 2026-06-24 20:14:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-24 20:14:53 +0000 UTC FinishedAt: 2026-06-24 20:15:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-24 20:14:53 +0000 UTC FinishedAt: 2026-06-24 20:15:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},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-workflow6hjnl/series-workflow6hjnl-convert-artifact-2791497348/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-24 20:15:13 +0000 UTC FinishedAt: 2026-06-24 20:17:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-24 20:15:13 +0000 UTC FinishedAt: 2026-06-24 20:17:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*791aa715-3c06-43bd-aae3-b7fc5af2a044,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-workflow6hjnl/series-workflow6hjnl-build-action-3525318495/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-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-24 20:17:18 +0000 UTC FinishedAt: 2026-06-24 20:17:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-24 20:17:18 +0000 UTC FinishedAt: 2026-06-24 20:17:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-24 20:17:18 +0000 UTC FinishedAt: 2026-06-24 20:41:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-24 20:17:18 +0000 UTC FinishedAt: 2026-06-24 20:41:08 +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:*6bcef71b-602c-4b32-8abe-43a8743fb84f,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-workflow6hjnl/series-workflow6hjnl-convert-artifact-2791497348/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": "57313bce-5e2c-4fc6-91b8-0e896e6e2dbe", "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-workflow6hjnl/series-workflow6hjnl-build-action-2277038224/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-24 20:17:18 +0000 UTC FinishedAt: 2026-06-24 20:40:58 +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:*6bcef71b-602c-4b32-8abe-43a8743fb84f,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-workflow6hjnl/series-workflow6hjnl-convert-artifact-2791497348/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": "57313bce-5e2c-4fc6-91b8-0e896e6e2dbe", "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-workflow6hjnl/series-workflow6hjnl-build-action-2277038224/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-24 20:41:08 +0000 UTC FinishedAt: 2026-06-24 20:41:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-24 20:41:08 +0000 UTC FinishedAt: 2026-06-24 20:41:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-24 20:41:08 +0000 UTC FinishedAt: 2026-06-24 20:43:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-24 20:41:08 +0000 UTC FinishedAt: 2026-06-24 20:42:59 +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:*57313bce-5e2c-4fc6-91b8-0e896e6e2dbe,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-workflow6hjnl/series-workflow6hjnl-build-action-2277038224/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-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-24 20:43:09 +0000 UTC FinishedAt: 2026-06-24 23:46:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-24 20:43:09 +0000 UTC FinishedAt: 2026-06-24 23:46:09 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"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:*791aa715-3c06-43bd-aae3-b7fc5af2a044,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*57313bce-5e2c-4fc6-91b8-0e896e6e2dbe,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-workflow6hjnl/series-workflow6hjnl-build-action-3525318495/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-workflow6hjnl/series-workflow6hjnl-build-action-2277038224/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-24 20:43:09 +0000 UTC FinishedAt: 2026-06-24 20:43:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-24 20:43:09 +0000 UTC FinishedAt: 2026-06-24 20:43:14 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"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-workflow6hjnl/series-workflow6hjnl-convert-artifact-2095687053/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-24 20:43:09 +0000 UTC FinishedAt: 2026-06-24 20:43:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-24 20:43:09 +0000 UTC FinishedAt: 2026-06-24 20:43:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-24 20:43:09 +0000 UTC FinishedAt: 2026-06-24 20:43:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-24 20:43:19 +0000 UTC FinishedAt: 2026-06-24 23:46:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6hjnl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ethtool_op_get_link","ethnl_default_doit","__dev_ethtool"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["GVE","IAVF","MLX5_CORE","MLX5_CORE_EN","MLX5_CORE_IPOIB","MLX5_ESWITCH","FBNIC","MICROSOFT_MANA"],"series_id":"490be426-58e6-4dab-9b0e-b47f5bde214a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-24 20:43:19 +0000 UTC FinishedAt: 2026-06-24 23:46:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*791aa715-3c06-43bd-aae3-b7fc5af2a044,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*57313bce-5e2c-4fc6-91b8-0e896e6e2dbe,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-workflow6hjnl/series-workflow6hjnl-build-action-3525318495/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-workflow6hjnl/series-workflow6hjnl-build-action-2277038224/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-workflow6hjnl/series-workflow6hjnl-convert-artifact-2095687053/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,}