Name: series-workflowxhnnn Phase: Succeeded StartedAt: 2026-07-25 08:29:52 +0000 UTC FinishedAt: 2026-07-25 11:10:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[0] Phase: Succeeded StartedAt: 2026-07-25 08:29:52 +0000 UTC FinishedAt: 2026-07-25 08:44:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 08:29:52 +0000 UTC FinishedAt: 2026-07-25 08:44:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_CADENCE", "MACB", "MACB_PCI", "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_CADENCE", "MACB", "MACB_PCI", "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "33e634f6-a620-464d-a80b-735cd7caaf8d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macb_setup_tc", "macb_setup_taprio", "macb_taprio_setup_replace" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9WRU5ET1JfQ0FERU5DRSYjMzQ7LAogICAgJiMzNDtNQUNCJiMzNDssCiAgICAmIzM0O01BQ0JfUENJJiMzNDssCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hY2Jfc2V0dXBfdGMmIzM0OywKICAgICYjMzQ7bWFjYl9zZXR1cF90YXByaW8mIzM0OywKICAgICYjMzQ7bWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiB0aGUgTUFDQiBkcml2ZXImIzM5O3MgdGFwcmlvIHRyYWZmaWMgY29udHJvbCBzZXR1cCAobWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZSkuIEl0IGNoYW5nZXMgdGhlIGFsbG9jYXRpb24gc2l6ZSBhbmQgbG9vcCBib3VuZHMgdG8gdXNlIHRoZSBoYXJkd2FyZSYjMzk7cyBxdWV1ZSBjb3VudCBpbnN0ZWFkIG9mIHRoZSB1c2VyLXByb3ZpZGVkIGVudHJ5IGNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggaW4gcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNWE1ZTAzNDRmMTRjMjQzOTU0NGY2NjMwNDA0NzUwZTRkMzNiNDMxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMDg6NDI6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaFxuaW5kZXggMmRlNTYwMTdlZTBkNjEuLjRjYzlhYTliMmY5ZTk0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oXG5AQCAtMTg0LDEyICYjNDM7MTg0LDYgQEBcbiAjZGVmaW5lIEdFTV9EQ0ZHOFx0XHQweDAyOUMgLyogRGVzaWduIENvbmZpZyA4ICovXG4gI2RlZmluZSBHRU1fRENGRzEwXHRcdDB4MDJBNCAvKiBEZXNpZ24gQ29uZmlnIDEwICovXG4gI2RlZmluZSBHRU1fRENGRzEyXHRcdDB4MDJBQyAvKiBEZXNpZ24gQ29uZmlnIDEyICovXG4tI2RlZmluZSBHRU1fRU5TVF9TVEFSVF9USU1FX1EwXHQweDA4MDAgLyogRU5TVCBRMCBzdGFydCB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9TVEFSVF9USU1FX1ExXHQweDA4MDQgLyogRU5TVCBRMSBzdGFydCB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9PTl9USU1FX1EwXHQweDA4MjAgLyogRU5TVCBRMCBvbiB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9PTl9USU1FX1ExXHQweDA4MjQgLyogRU5TVCBRMSBvbiB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9PRkZfVElNRV9RMFx0MHgwODQwIC8qIEVOU1QgUTAgb2ZmIHRpbWUgKi9cbi0jZGVmaW5lIEdFTV9FTlNUX09GRl9USU1FX1ExXHQweDA4NDQgLyogRU5TVCBRMSBvZmYgdGltZSAqL1xuICNkZWZpbmUgR0VNX0VOU1RfQ09OVFJPTFx0MHgwODgwIC8qIEVOU1QgY29udHJvbCByZWdpc3RlciAqL1xuICNkZWZpbmUgR0VNX1VTWF9DT05UUk9MXHRcdDB4MEE4MCAvKiBIaWdoIHNwZWVkIFBDUyBjb250cm9sIHJlZ2lzdGVyICovXG4gI2RlZmluZSBHRU1fVVNYX1NUQVRVU1x0XHQweDBBODggLyogSGlnaCBzcGVlZCBQQ1Mgc3RhdHVzIHJlZ2lzdGVyICovXG5AQCAtMTQ5Niw3ICYjNDM7MTQ5MCw2IEBAIHN0cnVjdCBtYWNiX3BsYXRmb3JtX2RhdGEge1xuICAqIEBzdGFydF90aW1lX21hc2s6ICBCaXRtYXNrIHJlcHJlc2VudGluZyB0aGUgc3RhcnQgdGltZSBmb3IgdGhlIHF1ZXVlXG4gICogQG9uX3RpbWVfYnl0ZXM6ICAgIFwmIzM0O29uXCYjMzQ7IHRpbWUgbnNlYyBleHByZXNzZWQgaW4gYnl0ZXNcbiAgKiBAb2ZmX3RpbWVfYnl0ZXM6ICAgXCYjMzQ7b2ZmXCYjMzQ7IHRpbWUgbnNlYyBleHByZXNzZWQgaW4gYnl0ZXNcbi0gKiBAcXVldWVfaWQ6ICAgICAgICAgSWRlbnRpZmllciBmb3IgdGhlIHF1ZXVlXG4gICpcbiAgKiBUaGlzIHN0cnVjdHVyZSBob2xkcyB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciBhbiBFTlNUIHF1ZXVlLFxuICAqIHVzZWQgdG8gY29udHJvbCB0aW1lLWJhc2VkIHRyYW5zbWlzc2lvbiBzY2hlZHVsaW5nIGluIHRoZSBNQUNCIGRyaXZlci5cbkBAIC0xNTA1LDcgJiM0MzsxNDk4LDYgQEAgc3RydWN0IG1hY2JfcXVldWVfZW5zdF9jb25maWcge1xuIFx0dTMyIHN0YXJ0X3RpbWVfbWFzaztcbiBcdHUzMiBvbl90aW1lX2J5dGVzO1xuIFx0dTMyIG9mZl90aW1lX2J5dGVzO1xuLVx0dTggcXVldWVfaWQ7XG4gfTtcbiBcbiAjZW5kaWYgLyogX01BQ0JfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG5pbmRleCBkMzk0ZjFmNDNiNjg1ZS4uZDU4NDMwZmU5YzQxZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG5AQCAtNDMyOSw3ICYjNDM7NDMyOSw3IEBAIHN0YXRpYyBpbnQgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZTtcbiBcdHUzMiBxdWV1ZV9tYXNrO1xuIFx0dTggcXVldWVfaWQ7XG4tXHRzaXplX3QgaTtcbiYjNDM7XHRzaXplX3QgaSwgcTtcbiBcdGludCBlcnI7XG4gXG4gXHRpZiAoY29uZi1cdTAwM2VudW1fZW50cmllcyBcdTAwM2UgYnAtXHUwMDNlbnVtX3F1ZXVlcykge1xuQEAgLTQzNTcsNyAmIzQzOzQzNTcsNyBAQCBzdGF0aWMgaW50IG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuLVx0ZW5zdF9xdWV1ZSA9IGtjYWxsb2MoY29uZi1cdTAwM2VudW1fZW50cmllcywgc2l6ZW9mKCplbnN0X3F1ZXVlKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0ZW5zdF9xdWV1ZSA9IGtjYWxsb2MoYnAtXHUwMDNlbnVtX3F1ZXVlcywgc2l6ZW9mKCplbnN0X3F1ZXVlKSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAodW5saWtlbHkoIWVuc3RfcXVldWUpKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC00NDE2LDEzICYjNDM7NDQxNiwxMiBAQCBzdGF0aWMgaW50IG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdFx0Z290byBjbGVhbnVwO1xuIFx0XHR9XG4gXG4tXHRcdGVuc3RfcXVldWVbaV0ucXVldWVfaWQgPSBxdWV1ZV9pZDtcbi1cdFx0ZW5zdF9xdWV1ZVtpXS5zdGFydF90aW1lX21hc2sgPVxuJiM0MztcdFx0ZW5zdF9xdWV1ZVtxdWV1ZV9pZF0uc3RhcnRfdGltZV9tYXNrID1cbiBcdFx0XHQoc3RhcnRfdGltZV9zZWMgXHUwMDNjXHUwMDNjIEdFTV9TVEFSVF9USU1FX1NFQ19PRkZTRVQpIHxcbiBcdFx0XHRzdGFydF90aW1lX25zZWM7XG4tXHRcdGVuc3RfcXVldWVbaV0ub25fdGltZV9ieXRlcyA9XG4mIzQzO1x0XHRlbnN0X3F1ZXVlW3F1ZXVlX2lkXS5vbl90aW1lX2J5dGVzID1cbiBcdFx0XHRlbnN0X25zX3RvX2h3X3VuaXRzKGVudHJ5LVx1MDAzZWludGVydmFsLCBzcGVlZCk7XG4tXHRcdGVuc3RfcXVldWVbaV0ub2ZmX3RpbWVfYnl0ZXMgPVxuJiM0MztcdFx0ZW5zdF9xdWV1ZVtxdWV1ZV9pZF0ub2ZmX3RpbWVfYnl0ZXMgPVxuIFx0XHRcdGVuc3RfbnNfdG9faHdfdW5pdHMoY29uZi1cdTAwM2VjeWNsZV90aW1lIC0gZW50cnktXHUwMDNlaW50ZXJ2YWwsIHNwZWVkKTtcbiBcbiBcdFx0Y29uZmlndXJlZF9xdWV1ZXMgfD0gZW50cnktXHUwMDNlZ2F0ZV9tYXNrO1xuQEAgLTQ0NDgsMTUgJiM0Mzs0NDQ3LDE0IEBAIHN0YXRpYyBpbnQgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0Z2VtX3dyaXRlbChicCwgRU5TVF9DT05UUk9MLFxuIFx0XHRcdCAgIHF1ZXVlX21hc2sgXHUwMDNjXHUwMDNjIEdFTV9FTlNUX0RJU0FCTEVfUVVFVUVfT0ZGU0VUKTtcbiBcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY29uZi1cdTAwM2VudW1fZW50cmllczsgaSYjNDM7JiM0MzspIHtcbi1cdFx0XHRxdWV1ZSA9IFx1MDAyNmJwLVx1MDAzZXF1ZXVlc1tlbnN0X3F1ZXVlW2ldLnF1ZXVlX2lkXTtcbiYjNDM7XHRcdGZvciAocSA9IDAsIHF1ZXVlID0gYnAtXHUwMDNlcXVldWVzOyBxIFx1MDAzYyBicC1cdTAwM2VudW1fcXVldWVzOyAmIzQzOyYjNDM7cSwgJiM0MzsmIzQzO3F1ZXVlKSB7XG4gXHRcdFx0LyogQ29uZmlndXJlIHF1ZXVlIHRpbWluZyByZWdpc3RlcnMgKi9cbiBcdFx0XHRxdWV1ZV93cml0ZWwocXVldWUsIEVOU1RfU1RBUlRfVElNRSxcbi1cdFx0XHRcdCAgICAgZW5zdF9xdWV1ZVtpXS5zdGFydF90aW1lX21hc2spO1xuJiM0MztcdFx0XHRcdCAgICAgZW5zdF9xdWV1ZVtxXS5zdGFydF90aW1lX21hc2spO1xuIFx0XHRcdHF1ZXVlX3dyaXRlbChxdWV1ZSwgRU5TVF9PTl9USU1FLFxuLVx0XHRcdFx0ICAgICBlbnN0X3F1ZXVlW2ldLm9uX3RpbWVfYnl0ZXMpO1xuJiM0MztcdFx0XHRcdCAgICAgZW5zdF9xdWV1ZVtxXS5vbl90aW1lX2J5dGVzKTtcbiBcdFx0XHRxdWV1ZV93cml0ZWwocXVldWUsIEVOU1RfT0ZGX1RJTUUsXG4tXHRcdFx0XHQgICAgIGVuc3RfcXVldWVbaV0ub2ZmX3RpbWVfYnl0ZXMpO1xuJiM0MztcdFx0XHRcdCAgICAgZW5zdF9xdWV1ZVtxXS5vZmZfdGltZV9ieXRlcyk7XG4gXHRcdH1cbiBcbiBcdFx0LyogRW5hYmxlIEVOU1QgZm9yIGFsbCBjb25maWd1cmVkIHF1ZXVlcyBpbiBvbmUgd3JpdGUgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1ZFTkRPUl9DQURFTkNFJiMzNDssCiAgICAmIzM0O01BQ0ImIzM0OywKICAgICYjMzQ7TUFDQl9QQ0kmIzM0OywKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfVEFQUklPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjYl9zZXR1cF90YyYjMzQ7LAogICAgJiMzNDttYWNiX3NldHVwX3RhcHJpbyYjMzQ7LAogICAgJiMzNDttYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIHRoZSBNQUNCIGRyaXZlciYjMzk7cyB0YXByaW8gdHJhZmZpYyBjb250cm9sIHNldHVwIChtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKS4gSXQgY2hhbmdlcyB0aGUgYWxsb2NhdGlvbiBzaXplIGFuZCBsb29wIGJvdW5kcyB0byB1c2UgdGhlIGhhcmR3YXJlJiMzOTtzIHF1ZXVlIGNvdW50IGluc3RlYWQgb2YgdGhlIHVzZXItcHJvdmlkZWQgZW50cnkgY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBpbiByZWFjaGFibGUgbmV0d29yayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI1YTVlMDM0NGYxNGMyNDM5NTQ0ZjY2MzA0MDQ3NTBlNGQzM2I0MzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAwODo0Mjo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmgKaW5kZXggMmRlNTYwMTdlZTBkNjEuLjRjYzlhYTliMmY5ZTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaApAQCAtMTg0LDEyICYjNDM7MTg0LDYgQEAKICNkZWZpbmUgR0VNX0RDRkc4CQkweDAyOUMgLyogRGVzaWduIENvbmZpZyA4ICovCiAjZGVmaW5lIEdFTV9EQ0ZHMTAJCTB4MDJBNCAvKiBEZXNpZ24gQ29uZmlnIDEwICovCiAjZGVmaW5lIEdFTV9EQ0ZHMTIJCTB4MDJBQyAvKiBEZXNpZ24gQ29uZmlnIDEyICovCi0jZGVmaW5lIEdFTV9FTlNUX1NUQVJUX1RJTUVfUTAJMHgwODAwIC8qIEVOU1QgUTAgc3RhcnQgdGltZSAqLwotI2RlZmluZSBHRU1fRU5TVF9TVEFSVF9USU1FX1ExCTB4MDgwNCAvKiBFTlNUIFExIHN0YXJ0IHRpbWUgKi8KLSNkZWZpbmUgR0VNX0VOU1RfT05fVElNRV9RMAkweDA4MjAgLyogRU5TVCBRMCBvbiB0aW1lICovCi0jZGVmaW5lIEdFTV9FTlNUX09OX1RJTUVfUTEJMHgwODI0IC8qIEVOU1QgUTEgb24gdGltZSAqLwotI2RlZmluZSBHRU1fRU5TVF9PRkZfVElNRV9RMAkweDA4NDAgLyogRU5TVCBRMCBvZmYgdGltZSAqLwotI2RlZmluZSBHRU1fRU5TVF9PRkZfVElNRV9RMQkweDA4NDQgLyogRU5TVCBRMSBvZmYgdGltZSAqLwogI2RlZmluZSBHRU1fRU5TVF9DT05UUk9MCTB4MDg4MCAvKiBFTlNUIGNvbnRyb2wgcmVnaXN0ZXIgKi8KICNkZWZpbmUgR0VNX1VTWF9DT05UUk9MCQkweDBBODAgLyogSGlnaCBzcGVlZCBQQ1MgY29udHJvbCByZWdpc3RlciAqLwogI2RlZmluZSBHRU1fVVNYX1NUQVRVUwkJMHgwQTg4IC8qIEhpZ2ggc3BlZWQgUENTIHN0YXR1cyByZWdpc3RlciAqLwpAQCAtMTQ5Niw3ICYjNDM7MTQ5MCw2IEBAIHN0cnVjdCBtYWNiX3BsYXRmb3JtX2RhdGEgewogICogQHN0YXJ0X3RpbWVfbWFzazogIEJpdG1hc2sgcmVwcmVzZW50aW5nIHRoZSBzdGFydCB0aW1lIGZvciB0aGUgcXVldWUKICAqIEBvbl90aW1lX2J5dGVzOiAgICAmIzM0O29uJiMzNDsgdGltZSBuc2VjIGV4cHJlc3NlZCBpbiBieXRlcwogICogQG9mZl90aW1lX2J5dGVzOiAgICYjMzQ7b2ZmJiMzNDsgdGltZSBuc2VjIGV4cHJlc3NlZCBpbiBieXRlcwotICogQHF1ZXVlX2lkOiAgICAgICAgIElkZW50aWZpZXIgZm9yIHRoZSBxdWV1ZQogICoKICAqIFRoaXMgc3RydWN0dXJlIGhvbGRzIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIGFuIEVOU1QgcXVldWUsCiAgKiB1c2VkIHRvIGNvbnRyb2wgdGltZS1iYXNlZCB0cmFuc21pc3Npb24gc2NoZWR1bGluZyBpbiB0aGUgTUFDQiBkcml2ZXIuCkBAIC0xNTA1LDcgJiM0MzsxNDk4LDYgQEAgc3RydWN0IG1hY2JfcXVldWVfZW5zdF9jb25maWcgewogCXUzMiBzdGFydF90aW1lX21hc2s7CiAJdTMyIG9uX3RpbWVfYnl0ZXM7CiAJdTMyIG9mZl90aW1lX2J5dGVzOwotCXU4IHF1ZXVlX2lkOwogfTsKIAogI2VuZGlmIC8qIF9NQUNCX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jCmluZGV4IGQzOTRmMWY0M2I2ODVlLi5kNTg0MzBmZTljNDFlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jCkBAIC00MzI5LDcgJiM0Mzs0MzI5LDcgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCXN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZTsKIAl1MzIgcXVldWVfbWFzazsKIAl1OCBxdWV1ZV9pZDsKLQlzaXplX3QgaTsKJiM0MzsJc2l6ZV90IGksIHE7CiAJaW50IGVycjsKIAogCWlmIChjb25mLSZndDtudW1fZW50cmllcyAmZ3Q7IGJwLSZndDtudW1fcXVldWVzKSB7CkBAIC00MzU3LDcgJiM0Mzs0MzU3LDcgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQllbnN0X3F1ZXVlID0ga2NhbGxvYyhjb25mLSZndDtudW1fZW50cmllcywgc2l6ZW9mKCplbnN0X3F1ZXVlKSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWVuc3RfcXVldWUgPSBrY2FsbG9jKGJwLSZndDtudW1fcXVldWVzLCBzaXplb2YoKmVuc3RfcXVldWUpLCBHRlBfS0VSTkVMKTsKIAlpZiAodW5saWtlbHkoIWVuc3RfcXVldWUpKQogCQlyZXR1cm4gLUVOT01FTTsKIApAQCAtNDQxNiwxMyAmIzQzOzQ0MTYsMTIgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQkJZ290byBjbGVhbnVwOwogCQl9CiAKLQkJZW5zdF9xdWV1ZVtpXS5xdWV1ZV9pZCA9IHF1ZXVlX2lkOwotCQllbnN0X3F1ZXVlW2ldLnN0YXJ0X3RpbWVfbWFzayA9CiYjNDM7CQllbnN0X3F1ZXVlW3F1ZXVlX2lkXS5zdGFydF90aW1lX21hc2sgPQogCQkJKHN0YXJ0X3RpbWVfc2VjICZsdDsmbHQ7IEdFTV9TVEFSVF9USU1FX1NFQ19PRkZTRVQpIHwKIAkJCXN0YXJ0X3RpbWVfbnNlYzsKLQkJZW5zdF9xdWV1ZVtpXS5vbl90aW1lX2J5dGVzID0KJiM0MzsJCWVuc3RfcXVldWVbcXVldWVfaWRdLm9uX3RpbWVfYnl0ZXMgPQogCQkJZW5zdF9uc190b19od191bml0cyhlbnRyeS0mZ3Q7aW50ZXJ2YWwsIHNwZWVkKTsKLQkJZW5zdF9xdWV1ZVtpXS5vZmZfdGltZV9ieXRlcyA9CiYjNDM7CQllbnN0X3F1ZXVlW3F1ZXVlX2lkXS5vZmZfdGltZV9ieXRlcyA9CiAJCQllbnN0X25zX3RvX2h3X3VuaXRzKGNvbmYtJmd0O2N5Y2xlX3RpbWUgLSBlbnRyeS0mZ3Q7aW50ZXJ2YWwsIHNwZWVkKTsKIAogCQljb25maWd1cmVkX3F1ZXVlcyB8PSBlbnRyeS0mZ3Q7Z2F0ZV9tYXNrOwpAQCAtNDQ0OCwxNSAmIzQzOzQ0NDcsMTQgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlnZW1fd3JpdGVsKGJwLCBFTlNUX0NPTlRST0wsCiAJCQkgICBxdWV1ZV9tYXNrICZsdDsmbHQ7IEdFTV9FTlNUX0RJU0FCTEVfUVVFVUVfT0ZGU0VUKTsKIAotCQlmb3IgKGkgPSAwOyBpICZsdDsgY29uZi0mZ3Q7bnVtX2VudHJpZXM7IGkmIzQzOyYjNDM7KSB7Ci0JCQlxdWV1ZSA9ICZhbXA7YnAtJmd0O3F1ZXVlc1tlbnN0X3F1ZXVlW2ldLnF1ZXVlX2lkXTsKJiM0MzsJCWZvciAocSA9IDAsIHF1ZXVlID0gYnAtJmd0O3F1ZXVlczsgcSAmbHQ7IGJwLSZndDtudW1fcXVldWVzOyAmIzQzOyYjNDM7cSwgJiM0MzsmIzQzO3F1ZXVlKSB7CiAJCQkvKiBDb25maWd1cmUgcXVldWUgdGltaW5nIHJlZ2lzdGVycyAqLwogCQkJcXVldWVfd3JpdGVsKHF1ZXVlLCBFTlNUX1NUQVJUX1RJTUUsCi0JCQkJICAgICBlbnN0X3F1ZXVlW2ldLnN0YXJ0X3RpbWVfbWFzayk7CiYjNDM7CQkJCSAgICAgZW5zdF9xdWV1ZVtxXS5zdGFydF90aW1lX21hc2spOwogCQkJcXVldWVfd3JpdGVsKHF1ZXVlLCBFTlNUX09OX1RJTUUsCi0JCQkJICAgICBlbnN0X3F1ZXVlW2ldLm9uX3RpbWVfYnl0ZXMpOwomIzQzOwkJCQkgICAgIGVuc3RfcXVldWVbcV0ub25fdGltZV9ieXRlcyk7CiAJCQlxdWV1ZV93cml0ZWwocXVldWUsIEVOU1RfT0ZGX1RJTUUsCi0JCQkJICAgICBlbnN0X3F1ZXVlW2ldLm9mZl90aW1lX2J5dGVzKTsKJiM0MzsJCQkJICAgICBlbnN0X3F1ZXVlW3FdLm9mZl90aW1lX2J5dGVzKTsKIAkJfQogCiAJCS8qIEVuYWJsZSBFTlNUIGZvciBhbGwgY29uZmlndXJlZCBxdWV1ZXMgaW4gb25lIHdyaXRlICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUNCIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAgd2l0aGluIHRoZSBgbWFjYl9tYWluLmNgIGZpbGUuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBkcml2ZXIgZm9yIHRoZSBDYWRlbmNlIE1BQ0IvR0VNIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1lc3Npbmcgd2l0aCBob3cgdGhlIGBlbnN0X3F1ZXVlYCBpcyBoYW5kbGVkLiBJdCBzZWVtcyB0aGUgYWxsb2NhdGlvbiBzaXplIGlzIHNoaWZ0aW5nIGZyb20gdXNpbmcgYGNvbmYtJmd0O251bV9lbnRyaWVzYCB0byBub3cgcmVseWluZyBvbiBgYnAtJmd0O251bV9xdWV1ZXNgLiBJbnRlcmVzdGluZy4gQW5kIGluc3RlYWQgb2YgdXNpbmcgYSBzdGFuZGFyZCBgaWAgZm9yIGluZGV4aW5nIGludG8gYGVuc3RfcXVldWVgLCBpdCYjMzk7cyBub3cga2V5ZWQgb2ZmIG9mIGBxdWV1ZV9pZGAuIFRoZW4gdGhlIGxvb3AgdG8gd3JpdGUgdG8gdGhlIHF1ZXVlIHJlZ2lzdGVycyBpdGVyYXRlcyBgYnAtJmd0O251bV9xdWV1ZXNgIHRpbWVzLgoKVGhlIGJpZyBxdWVzdGlvbiBub3cgaXMsIGlzIHRoaXMgZXZlbiAqdGVzdGFibGUqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBrbm93IHRoZXNlIENhZGVuY2UgTUFDQnMgYXJlIGNvbW1vbmx5IGZvdW5kIGluIGVtYmVkZGVkIHN5c3RlbXMg4oCTIEFSTSBTb0NzIGZyb20gQXRtZWwsIFhpbGlueCBaeW5xLCBTaUZpdmUsIHRoYXQgc29ydCBvZiB0aGluZy4gQnV0IHdhaXTigKYgd2FzbiYjMzk7dCB0aGVyZSBhIFFFTVUgbW9kZWw/IEFoLCB5ZXMsIGBody9uZXQvY2FkZW5jZV9nZW0uY2AuIFFFTVUgKmRvZXMqIGVtdWxhdGUgdGhlIENhZGVuY2UgR0VNLCBzbyB0aGF0IGdpdmVzIHVzIGEgcG90ZW50aWFsIHRlc3RiZWQhCgpMZXQmIzM5O3Mgc2Vl4oCmIHRoaXMgcGF0Y2ggaXMgcmVsYXRlZCB0byB0aGUgYHRjYCAodHJhZmZpYyBjb250cm9sKSB0YXByaW8gb2ZmbG9hZCBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgaW4gYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgLiBDb3VsZCB3ZSBmdXp6IHRoaXM/IFRoYXQmIzM5O3MgZGVmaW5pdGVseSB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGRyaXZlciBuYW1lIGlzIGBNQUNCYC4gQSBxdWljayBjaGVjayBvZiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnYCB3aWxsIHRlbGwgbWUgZm9yIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQ0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTIwPWlmIE5FVF9WRU5ET1JfQ0FERU5DRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjIyOmNvbmZpZyBNQUNCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtDYWRlbmNlIE1BQ0IvR0VNIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6Mzc6Y29uZmlnIE1BQ0JfVVNFX0hXU1RBTVBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0zOC1cdGJvb2wgXCYjMzQ7VXNlIElFRUUgMTU4OCBod3N0YW1wXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjQ1OmNvbmZpZyBNQUNCX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7Q2FkZW5jZSBQQ0kgTUFDQi9HRU0gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNjQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBhcmVhOgoKKipEaWdnaW5nIGludG8gdGhlIE1BQ0IgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIE1BQ0IgRXRoZXJuZXQgY29udHJvbGxlciBpcyBjb25maWd1cmVkIGFzIGEgUENJIGRldmljZSBvciBhIHBsYXRmb3JtIGRldmljZS4gRmlyc3QgdGhpbmdzIGZpcnN0LCB0aGUgcHJlc2VuY2Ugb2YgYE1BQ0JfUENJYCBpbiB0aGUgY29uZmlndXJhdGlvbiBpcyBhIGdvb2QgaW5kaWNhdG9yLiBJdCYjMzk7cyBhIHF1aWNrIHdheSB0byBrbm93IHRoZSBjb250cm9sbGVyIGlzIGNvbmZpZ3VyZWQgYXMgYSBQQ0kgZGV2aWNlLiBUaGlzIGltcGxpZXMgSSBzaG91bGQgZ28gbG9vayB0aGVyZSBmaXJzdCBmb3IgdGhlIHJlbGV2YW50IGRyaXZlciBpbXBsZW1lbnRhdGlvbi4gVGhhdCB3b3VsZCBtZWFuIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jYCBmaWxlLiBUaGF0JiMzOTtzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIHNwZWNpZmljIFBDSS1yZWxhdGVkIGluaXRpYWxpemF0aW9uIGFuZCBzZXR1cCBjb2RlIGZvciB0aGUgTUFDQiBjb250cm9sbGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY2JfcGNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTQ1PWNvbmZpZyBNQUNCX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy01MS1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjUyOlx0ICB3aWxsIGJlIGNhbGxlZCBtYWNiX3BjaS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy01My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19NQUNCKSAmIzQzOz0gbWFjYi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19NQUNCX1BDSSkgJiM0Mzs9IG1hY2JfcGNpLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTk6I2RlZmluZSBQQ0lfRFJJVkVSX05BTUUgXCYjMzQ7bWFjYl9wY2lcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0yMC0jZGVmaW5lIFBMQVRfRFJJVkVSX05BTUUgXCYjMzQ7bWFjYlwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGRldl9pZF90YWJsZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTI1OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYWNiX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI2LVx0Lm5hbWUgICAgID0gUENJX0RSSVZFUl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTMyOm1vZHVsZV9wY2lfZHJpdmVyKG1hY2JfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTMzLU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkZXZfaWRfdGFibGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMzIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTUFDQiB3aXRoIFBDSSBXcmFwcGVyKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYE1BQ0JfUENJYCwgd2hpY2ggaXMgZXNzZW50aWFsbHkgYSBQQ0kgd3JhcHBlciBhcm91bmQgdGhlIE1BQ0IgRXRoZXJuZXQgY29udHJvbGxlci4gQnV0IGhhbmcgb24sIHRoZSB0eXBpY2FsIFFFTVUgYGNhZGVuY2VfZ2VtYCBJJiMzOTttIHVzZWQgdG8gc2VlaW5nIGlzIGEgcGxhdGZvcm0gZGV2aWNlLCBzeXNidXMgYmFzZWQsIGFuZCBtb3N0bHkgdXNlZCBvbiBBUk0gYm9hcmRzLiBUaGlzIGdldHMgbWUgdGhpbmtpbmcuLi4gY291bGQgd2UgZnV6eiBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWA/CgpUaGUgYW5zd2VyIGlzIHllcywgcG90ZW50aWFsbHkuIFN5emthbGxlciBjb3VsZCBpbnN0YW50aWF0ZSBgTUFDQmAgYW5kIGBNQUNCX1BDSWAgYXMgYSBQQ0kgZGV2aWNlLCBpZiBpdCBrbm93cyB0aGUgcmlnaHQgUENJIElEcy4gQWx0ZXJuYXRpdmVseSwgd2UgY291bGQgdHJlYXQgaXQgc2ltcGx5IGFzIGEgbmV0d29yayBkcml2ZXIsIGFuZCB0aGVuIGFjY2VzcyBpdCBpZiB0aGUgaGFyZHdhcmUgaXMgcHJlc2VudC4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgYG1hY2JfcGNpLmNgLCBkb2VzIGl0IGhhdmUgYSBgZGV2X2lkX3RhYmxlYD8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byBzZWUgd2hhdCBQQ0kgSURzIGFyZSBzdXBwb3J0ZWQuIFVuZGVyc3RhbmRpbmcgdGhhdCB0YWJsZSBpcyBrZXkgdG8gbWFraW5nIHRoaXMgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZfaWRfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jPTEwOD1zdGF0aWMgdm9pZCBtYWNiX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEyMDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGV2X2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTIxLVx0eyBQQ0lfVkRFVklDRShDRE5TLCBQQ0lfREVWSUNFX0lEX0NETlNfTUFDQikgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYWNiX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI2LVx0Lm5hbWUgICAgID0gUENJX0RSSVZFUl9OQU1FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEyNzpcdC5pZF90YWJsZSA9IGRldl9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjgtXHQucHJvYmUgICAgPSBtYWNiX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMzI9bW9kdWxlX3BjaV9kcml2ZXIobWFjYl9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMzM6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGRldl9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTM0LU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkzOQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiBkZXZpY2UgZHJpdmVycyBvciBlbWJlZGRlZCBzeXN0ZW1zOgoKKipEZWNvZGluZyB0aGUgUENJIERldmljZSBJRCoqCgpBbHJpZ2h0LCB0aGUgc3lzdGVtJiMzOTtzIHRhbGtpbmcgYWJvdXQgYFBDSV9ERVZJQ0VfSURfQ0ROU19NQUNCYC4gSW1tZWRpYXRlbHksIG15IGJyYWluIGtpY2tzIGludG8gZ2Vhci4gVGhpcyBpcyBhIGNydWNpYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uIFRoZSAmIzM0O1BDSSYjMzQ7IHByZWZpeCB0ZWxscyBtZSB0aGlzIGxpa2VseSByZWxhdGVzIHRvIGEgZGV2aWNlIG9uIGEgUENJIGJ1cywgb2J2aW91c2x5LiBUaGUgJiMzNDtERVZJQ0VfSUQmIzM0OyBwYXJ0IGlzIGtleTsgaXQmIzM5O3MgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIHRoZSBQQ0kgZGV2aWNlIHByZXNlbnRzIHRvIHRoZSBzeXN0ZW0uIFRoaXMgSUQsIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFZlbmRvciBJRCwgaXMgaG93IHRoZSBkcml2ZXIgaXMgYm91bmQgdG8gdGhlIGhhcmR3YXJlLgoKVGhlICYjMzQ7Q0ROUyYjMzQ7IHBhcnQgaXMgd2hhdCByZWFsbHkgZ2V0cyBtZSBnb2luZzsgaXQmIzM5O3MgYSB2ZXJ5IHJlY29nbml6YWJsZSB2ZW5kb3IgcHJlZml4LCBpdCBzaWduaWZpZXMgYSBDYWRlbmNlIERlc2lnbiBTeXN0ZW1zIHByb2R1Y3QuIFRoaXMgbW9zdCBsaWtlbHkgbmFycm93cyB0aGluZ3MgdG8gYW4gRXRoZXJuZXQgTUFDIChNZWRpYSBBY2Nlc3MgQ29udHJvbGxlcikgY29yZS4gQW5kLCB0aGUgJiMzNDtNQUNCJiMzNDsgc3VmZml4IHNvbGlkaWZpZXMgaXQuIFRoZSBuYW1lICYjMzQ7TUFDQiYjMzQ7IGlzIGEgY2xhc3NpYyBnaXZlYXdheSB0byB0aGUgdHlwZSBvZiBjb3JlIHVzZWQuIE1vc3QgbGlrZWx5IGl0IHJlZmVycyB0byBhIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gb2YgYW4gRXRoZXJuZXQgY29udHJvbGxlci4KClNvLCBqdXN0IGZyb20gdGhhdCBvbmUgbGluZSwgSSBjYW4gaW1tZWRpYXRlbHkgaW5mZXI6IFdlJiMzOTtyZSBsb29raW5nIGF0IGEgQ2FkZW5jZS1kZXNpZ25lZCBNQUMsIGxpa2VseSBhbiBFdGhlcm5ldCBjb250cm9sbGVyLCBvbiBhIFBDSSBidXMuIFRoaXMgaXMgdGhlIGRldmljZSB0aGUgc3lzdGVtIGhhcyBpZGVudGlmaWVkLiBNeSBuZXh0IHN0ZXBzIHdvdWxkIGJlIGxvb2tpbmcgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlciBhbmQgYW55IGFzc29jaWF0ZWQgZXJyYXRhIHRoYXQgSSBoYXZlIGFjY2VzcyB0by4gSSBrbm93IHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0RFVklDRV9JRF9DRE5TX01BQ0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjIyOiNkZWZpbmUgUENJX0RFVklDRV9JRF9DRE5TX01BQ0IgMHhlMDA3XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jPTEyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGV2X2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTIxOlx0eyBQQ0lfVkRFVklDRShDRE5TLCBQQ0lfREVWSUNFX0lEX0NETlNfTUFDQikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjItXHR7IDAsIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUwMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1BQ0IgRHJpdmVyIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbWFjYmAgZHJpdmVyIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBJbml0aWFsbHksIEkgdGhvdWdodCB0aGF0IHRoZSBQQ0kgSUQgZm9yIHRoaXMgc3BlY2lmaWMgZGV2aWNlIG1pZ2h0IG5vdCBiZSBkaXJlY3RseSBpbiBTeXprYWxsZXImIzM5O3MgYHN5cy9saW51eC9kZXZfcGNpLnR4dGAgb3IgYSBzaW1pbGFyIGNvbmZpZ3VyYXRpb24gZmlsZS4gQnV0IHRoZW4gSSByZW1lbWJlcmVkLCBTeXprYWxsZXIgaXMgcHJldHR5IHNtYXJ0IGFib3V0IFBDSSBmdXp6aW5nLiBJdCBjYW4gZ2VuZXJhdGUgcmFuZG9tIFBDSSBJRHMgb3IgbGV2ZXJhZ2UgZXhpc3Rpbmcgb25lcyB0byBiaW5kIHRvIGRyaXZlcnMsIGFzIGxvbmcgYXMgdGhlIFBDSSBmdXp6aW5nIGZ1bmN0aW9uYWxpdHkgaXMgY29tcGlsZWQgaW50byB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uLiBTbyB0aGF0JiMzOTtzIHBvdGVudGlhbGx5IHByb21pc2luZy4KClRoZSBrZXkgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjYW4gd2UgYWN0dWFsbHkgcmVhY2ggYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgPyBUaGF0JiMzOTtzIHdoYXQgSSB3YW50IHRvIGdldCBhdC4gSSBrbm93IGBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlYCBpcyBjYWxsZWQgZnJvbSBgbWFjYl9zZXR1cF90Y2AsIGFuZCB0aGF0IG9uZSBpcyB0aGUgYG5kb19zZXR1cF90Y2AgY2FsbGJhY2sgZm9yIHRoZSBNQUNCIGRyaXZlci4gU2luY2UgYG5kb19zZXR1cF90Y2AgY2FsbGJhY2tzIGFyZSBuZXR3b3JrIGRldmljZSBvcGVyYXRpb25zIGZvciBzZXR0aW5nIHRyYWZmaWMgY29udHJvbCAoVEMpIHJ1bGVzLCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBtYWNiX3NldHVwX3RjYC4gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBmb2N1cyBteSBpbnZlc3RpZ2F0aW9uIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjYl9zZXR1cF90YyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00NDk3PXN0YXRpYyBpbnQgbWFjYl9zZXR1cF90YXByaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NTI2OnN0YXRpYyBpbnQgbWFjYl9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDUyNy1cdFx0XHQgdm9pZCAqdHlwZV9kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDU0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hY2JfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ1NjMtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBtYWNiX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDU2NDpcdC5uZG9fc2V0dXBfdGNcdFx0PSBtYWNiX3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTY1LVx0Lm5kb190eF90aW1lb3V0XHRcdD0gbWFjYl90eF90aW1lb3V0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjU4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gYG1hY2Jfc2V0dXBfdGNgIGRlZmluaXRlbHkgaGFuZGxlcyB0aGUgYFRDX1NFVFVQX1FESVNDX1RBUFJJT2AgY2FzZS4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgdGhlIHJpZ2h0IHNwb3QsIGFuZCB0aGUgdXNlciYjMzk7cyBjb25maWd1cmF0aW9uIG9mIHRoZSBgdGFwcmlvYCBxZGlzYyBvbiB0aGUgbmV0d29yayBpbnRlcmZhY2UgdHJpZ2dlcnMgdGhpcyBwYXRoLiBOb3csIHRoZSBtZWF0IG9mIHRoZSBwYXRjaCBpcyBmaXhpbmcgYW4gYWxsb2NhdGlvbiBpc3N1ZSBpbiBgZW5zdF9xdWV1ZWAuIEFwcGFyZW50bHksIGl0IHdhcyBhbGxvY2F0ZWQgd2l0aCBhIHNpemUgYmFzZWQgb24gYGNvbmYtJmd0O251bV9lbnRyaWVzYCwgYnV0IHRoZW4gYWNjZXNzZWQgd2l0aCBgcXVldWVfaWRgLCB3aGljaCBjb3VsZCBiZSAqbGFyZ2VyKiB0aGFuIGBjb25mLSZndDtudW1fZW50cmllc2AsIHBvdGVudGlhbGx5IHVwIHRvIGBicC0mZ3Q7bnVtX3F1ZXVlcyAtIDFgLiBUaGF0IHNjcmVhbXMgb3V0LW9mLWJvdW5kcyBhY2Nlc3MhIFRoZSBmaXggaXMgc3RyYWlnaHRmb3J3YXJkOiB3ZSBzaW1wbHkgYWxsb2NhdGUgYGVuc3RfcXVldWVgIHRvIHRoZSBjb3JyZWN0IHNpemUsIGBicC0mZ3Q7bnVtX3F1ZXVlc2AsIGFuZCBpdGVyYXRlIGFwcHJvcHJpYXRlbHkuCgpJcyB0aGlzIHBhdGNoIGZ1enotd29ydGh5PyBBYnNvbHV0ZWx5ISBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNvbmNyZXRlIG91dC1vZi1ib3VuZHMgZml4IHdpdGhpbiBhIG5ldHdvcmsgZHJpdmVyJiMzOTtzIHRyYWZmaWMgY29udHJvbCBzZXR1cC4gVGhhdCYjMzk7cyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgdnVsbmVyYWJpbGl0eSB3ZSB3YW50IHRvIGNhdGNoIHByb2FjdGl2ZWx5LgoKV2FpdCBhIG1pbnV0ZSwgY2FuIHdlIGV2ZW4gKnRlc3QqIHRoZSBNQUNCIGRyaXZlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJZiB3ZSBlbmFibGUgYENPTkZJR19NQUNCYCBhbmQgYENPTkZJR19NQUNCX1BDSWAsIHRoZW9yZXRpY2FsbHksIHRoZSBQQ0kgZnV6emVyIGluIHN5emthbGxlciBjb3VsZCBpbnN0YW50aWF0ZSBhIFBDSSBkZXZpY2UuIE9yLCBRRU1VIG1pZ2h0IHByb3ZpZGUgdGhlIHBsYXRmb3JtIGRldmljZS4gVGhhdCBtYWtlcyBpdCBtb3JlIGxpa2VseSB0byBiZSB0ZXN0YWJsZS4gTm93LCBiZWZvcmUgSSBnZXQgdG9vIGV4Y2l0ZWQsIGxldCBtZSBxdWlja2x5IGNoZWNrIGlmIGBDT05GSUdfTUFDQmAgaGFzIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzLiBHb3R0YSBiZSBzdXJlIHdlIGNhbiBhY3R1YWxseSBydW4gdGhlIHRlc3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9MjA9aWYgTkVUX1ZFTkRPUl9DQURFTkNFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6MjI6Y29uZmlnIE1BQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yMy1cdHRyaXN0YXRlIFwmIzM0O0NhZGVuY2UgTUFDQi9HRU0gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzozNzpjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTM4LVx0Ym9vbCBcJiMzNDtVc2UgSUVFRSAxNTg4IGh3c3RhbXBcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6NDU6Y29uZmlnIE1BQ0JfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtDYWRlbmNlIFBDSSBNQUNCL0dFTSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNDcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMgb2YgYENPTkZJR19NQUNCYDoKCioqQW5hbHl6aW5nIENPTkZJR19NQUNCJiMzOTtzIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIGBDT05GSUdfTUFDQmAuLi4gcmlnaHQsIHRoYXQmIzM5O3MgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IE1lZGlhIEFjY2VzcyBDb250cm9sbGVyIGJhc2VkIG9uIHRoZSBBUk0gUHJpbWVDZWxsIE1BQy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyB0byBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbi4gS25vd2luZyB0aGUgcHJlcmVxdWlzaXRlcyBpcyBjcnVjaWFsIGZvciBhIGNsZWFuIGFuZCBlZmZpY2llbnQgYnVpbGQsIGFuZCBmb3IgdHJvdWJsZXNob290aW5nIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyBuZWVkIHRvIGJlIGluIHBsYWNlIGZvciB0aGUgYE1BQ0JgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgY2hlY2tpbmcgZm9yIHJlbGF0ZWQgZGV2aWNlIGRyaXZlcnMsIGJ1cyBzdXBwb3J0IChsaWtlIFBsYXRmb3JtIGJ1cywgcGVyaGFwcz8pLCBjbG9jayBzZXR0aW5ncywgYW5kIHBvc3NpYmx5IGFueSBjcnlwdG9ncmFwaGljIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBpZiB0aGUgTUFDQiBzdXBwb3J0cyBoYXJkd2FyZSBvZmZsb2FkIG9mIGNyeXB0byBmdW5jdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgYW55IHN5bWJvbHMgaXQgcmVxdWlyZXMsIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYHNlbGVjdGAgcmVsYXRpb25zaGlwcyB0aGF0IG1pZ2h0IHB1bGwgaW4gb3RoZXIgY29tcG9uZW50cyBpbXBsaWNpdGx5LiBGdXJ0aGVybW9yZSwgSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnkgY29uZmxpY3RpbmcgY29uZmlndXJhdGlvbnMsIGVuc3VyaW5nIGBDT05GSUdfTUFDQmAgd29uJiMzOTt0IGNsYXNoIHdpdGggYW55IG90aGVyIGVuYWJsZWQgZHJpdmVycy4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgdGhlIHJpZ2h0IHBpZWNlcyBhcmUgaW4gcGxhY2UsIHNvIHRoZSBzeXN0ZW0gY2FuIHJ1biBzbW9vdGhseSB3aXRoIHRoaXMgRXRoZXJuZXQgY29udHJvbGxlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0aWYgTkVUX1ZFTkRPUl9DQURFTkNFXG4gIDIxOlx0XG4gIDIyOlx0Y29uZmlnIE1BQ0JcbiAgMjM6XHRcdHRyaXN0YXRlIFwmIzM0O0NhZGVuY2UgTUFDQi9HRU0gc3VwcG9ydFwmIzM0O1xuICAyNDpcdFx0ZGVwZW5kcyBvbiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLXG4gIDI1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDI2Olx0XHRzZWxlY3QgUEhZTElOS1xuICAyNzpcdFx0c2VsZWN0IENSQzMyXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIFRoZSBDYWRlbmNlIE1BQ0IgZXRoZXJuZXQgaW50ZXJmYWNlIGlzIGZvdW5kIG9uIG1hbnkgQXRtZWwgQVQzMiBhbmRcbiAgMzA6XHRcdCAgQVQ5MSBwYXJ0cy4gIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgdGhlIENhZGVuY2UgR0VNIChHaWdhYml0XG4gIDMxOlx0XHQgIEV0aGVybmV0IE1BQyBmb3VuZCBpbiBzb21lIEFSTSBTb0MgZGV2aWNlcykuICBTYXkgWSB0byBpbmNsdWRlXG4gIDMyOlx0XHQgIHN1cHBvcnQgZm9yIHRoZSBNQUNCL0dFTSBjaGlwLlxuICAzMzpcdFxuICAzNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDM1Olx0XHQgIHdpbGwgYmUgbWFjYi5cbiAgMzY6XHRcbiAgMzc6XHRjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxuICAzODpcdFx0Ym9vbCBcJiMzNDtVc2UgSUVFRSAxNTg4IGh3c3RhbXBcJiMzNDtcbiAgMzk6XHRcdGRlcGVuZHMgb24gTUFDQlxuICA0MDpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xuICA0MTpcdFx0ZGVmYXVsdCB5XG4gIDQyOlx0XHRoZWxwXG4gIDQzOlx0XHQgIEVuYWJsZSBJRUVFIDE1ODggUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgc3VwcG9ydCBmb3IgTUFDQi5cbiAgNDQ6XHRcbiAgNDU6XHRjb25maWcgTUFDQl9QQ0lcbiAgNDY6XHRcdHRyaXN0YXRlIFwmIzM0O0NhZGVuY2UgUENJIE1BQ0IvR0VNIHN1cHBvcnRcJiMzNDtcbiAgNDc6XHRcdGRlcGVuZHMgb24gTUFDQiBcdTAwMjZcdTAwMjYgUENJXG4gIDQ4Olx0XHRoZWxwXG4gIDQ5Olx0XHQgIFRoaXMgaXMgUENJIHdyYXBwZXIgZm9yIE1BQ0IgZHJpdmVyLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODcyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE1BQ0IgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoZSBNQUNCIEV0aGVybmV0IGRyaXZlci4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhdCBmaXJzdCBnbGFuY2UuIGBDT05GSUdfTUFDQmAgaXMgZGVwZW5kZW50IG9uIGJvdGggYEhBU19ETUFgIGFuZCBgQ09NTU9OX0NMS2AsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBETUEtYmFzZWQgaGFyZHdhcmUgYW5kIGNsb2NrIG1hbmFnZW1lbnQuIFRoZW4gd2UgaGF2ZSBgQ09ORklHX01BQ0JfUENJYCwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGZvciBQQ0kgdmVyc2lvbnMsIGRlcGVuZGluZyBvbiBgTUFDQmAgYW5kIGBQQ0lgLiBTaW5jZSBib3RoIGBNQUNCYCBhbmQgYE1BQ0JfUENJYCBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZCwgSSBjb3VsZCBlbmFibGUgYm90aCwgcmlnaHQ/IFdhaXQgYSBtaW51dGUuLi4gc29tZXRoaW5nIGZlZWxzIGluY29tcGxldGUuIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBjb25zaWRlciBwb3RlbnRpYWwgdmVuZG9yLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBXaGF0IGFib3V0IGBORVRfVkVORE9SX0NBREVOQ0VgPyBJIG5lZWQgdG8gY2hlY2sgaG93IHRoYXQgaW1wYWN0cyB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzLiBJcyB0aGVyZSBhbiBpbnRlcmFjdGlvbiB0aGVyZSBJIG5lZWQgdG8gYWNjb3VudCBmb3I/IEl0IGlzIGNyaXRpY2FsIHRvIG1ha2Ugc3VyZSBhbGwgZGVwZW5kZW5jaWVzIGFyZSBhY2NvdW50ZWQgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTkKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIENhZGVuY2UgZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE5FVF9WRU5ET1JfQ0FERU5DRVxuICAgNzpcdFx0Ym9vbCBcJiMzNDtDYWRlbmNlIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gICA5Olx0XHRkZWZhdWx0IHlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gIDEyOlx0XG4gIDEzOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxNjpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxNzpcdFx0ICByZW1haW5pbmcgQ2FkZW5jZSBuZXR3b3JrIGNhcmQgcXVlc3Rpb25zLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlXG4gIDE4Olx0XHQgIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0MDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGVwZW5kZW5jaWVzIGFuZCBDb25maWd1cmF0aW9uIENoZWNrcyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB3aGF0IEkgbmVlZCBmb3IgdGhpcyBuZXR3b3JrIHNldHVwLiBJdCBzZWVtcyBgTkVUX1ZFTkRPUl9DQURFTkNFYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQsIG5vIHN1cnByaXNlcyB0aGVyZSwgdGhhdCYjMzk7cyB3aGF0JiMzOTtzIGRyaXZpbmcgdGhpcyB3aG9sZSB0aGluZy4gTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGUgdGFwcmlvIHFkaXNjIHdpbGwgYmUgY29uZmlndXJlZDsgZm9yIHRoYXQsIEkgYmVsaWV2ZSBgTkVUX1NDSF9UQVBSSU9gIGlzIG5lY2Vzc2FyeS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBtYWtlIHN1cmUgaXTigJlzIGVuYWJsZWQgYW5kIHRoYXQgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzIGluIGl0cyBkZXBlbmRlbmNpZXMuIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgaGVhZGFjaGVzIGRvd24gdGhlIGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIX1RBUFJJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTE2Nz1jb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXG4tLVxubmV0L3NjaGVkL0tjb25maWctMTcxLVxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xubmV0L3NjaGVkL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7VGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTczMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlcGVuZGVuY3kgQ2hlY2sgZm9yIE5FVF9TQ0hfVEFQUklPKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBGaXJzdCBvcmRlciBvZiBidXNpbmVzczogKk5FVF9TQ0hfVEFQUklPKi4uLiBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgc3RhcnQgcnVubmluZyB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMuIEkga25vdyB0aGlzIG1vZHVsZSwgb3IgYXQgbGVhc3QgdGhlIGNhcGFiaWxpdGllcyBpdCB1bmxvY2tzLCB0b3VjaGVzIGEgZmV3IGtleSBhcmVhcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoYXQgYWxsIG9mIHRoZW0gYXJlIGluIHBsYWNlLCBjb25maWd1cmVkIGNvcnJlY3RseSwgYW5kIG5vdCBnb2luZyB0byBpbnRyb2R1Y2UgYW55IHVuZXhwZWN0ZWQgY29uZmxpY3RzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgbmV0d29ya2luZyBzdGFjaywgb2YgY291cnNlLCBidXQgYWxzbyBhbnl0aGluZyByZWxhdGVkIHRvIHRpbWUtc2Vuc2l0aXZlIHNjaGVkdWxpbmcsIHBvdGVudGlhbGx5IGhhcmR3YXJlIHN1cHBvcnQgZm9yIHRoaW5ncyBsaWtlIHRyYWZmaWMgc2hhcGluZyBhbmQgdGltZSBzeW5jaHJvbml6YXRpb24uIEkmIzM5O20gbWVudGFsbHkgcGFyc2luZyB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRldmljZSBkcml2ZXJzLiBJIHdhbnQgdG8gYXZvaWQgYW55IG5hc3R5IHN1cnByaXNlcyBkb3duIHRoZSByb2FkLCBzbyBhIHF1aWNrIHZlcmlmaWNhdGlvbiBpcyBjcnVjaWFsLiBCYXNpY2FsbHksIGEgY2xlYW4gZGVwZW5kZW5jeSBtYXAgaGVyZSBpcyB0aGUga2V5IHRvIHByZXZlbnRpbmcgYSBidW5jaCBvZiBkZWJ1Z2dpbmcgbGF0ZXIgb24uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgbG9va2luZyBhdC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzI6XHRjb25maWcgTkVUX1NDSF9UQVBSSU9cbiAxNzM6XHRcdHRyaXN0YXRlIFwmIzM0O1RpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXCYjMzQ7XG4gMTc0Olx0XHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXG4gMTc1Olx0XHRoZWxwXG4gMTc2Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxuIDE3NzpcdFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAxNzg6XHRcbiAxNzk6XHRcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXG4gMTgwOlx0XG4gMTgxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNTgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUQVBSSU8gSW1wbGVtZW50YXRpb24gZm9yIHRoZSBNQUNCIERyaXZlcioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBORVRfU0NIX1RBUFJJT2AgaGVyZS4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gaG93IHRoZSBUQVBSSU8gc2NoZWR1bGluZyBkaXNjaXBsaW5lIGlzIGludGVncmF0ZWQgd2l0aGluIHRoZSBNQUNCIGRyaXZlci4gVGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYXBwYXJlbnRseSBiZWVuIG1vZGlmaWVkIGlzIGBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlYC4gTGV0JiMzOTtzIGp1c3QgZG91YmxlLWNoZWNrLCBpcyB0aGlzIGZ1bmN0aW9uIHN0YXRpYz8gWWVzLCBpdCBpcy4gQWxyaWdodCwgdGhhdCBtZWFucyB0aGUgZW50cnkgcG9pbnQsIHRoZSBleHRlcm5hbGx5IHZpc2libGUgZnVuY3Rpb24sIGlzIGdvaW5nIHRvIGJlIGBtYWNiX3NldHVwX3RjYC4gV2FpdCBhIHNlY29uZOKApiBsb29raW5nIGF0IHRoZSBjYWxsIGZsb3csIGBtYWNiX3NldHVwX3RjYCBhY3R1YWxseSBjYWxscyBgbWFjYl9zZXR1cF90YXByaW9gLCB3aGljaCBpbiB0dXJuIGNhbGxzIGBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlYC4gVGhlcmVmb3JlLCBgbWFjYl9zZXR1cF90Y2AgaXMgdGhlIHByaW1hcnkgZm9jYWwgc3ltYm9sIHdlJiMzOTtyZSBhZnRlciwgdGhlIGZ1bmN0aW9uIHRoYXQgcmVwcmVzZW50cyB0aGUgcG9pbnQgb2YgZXh0ZXJuYWwgYWNjZXNzLiBTbyBJIG5lZWQgdG8gdmVyaWZ5IGl0cyBzaWduYXR1cmUgYW5kIG1ha2Ugc3VyZSB0aGF0IGl0IGFsbCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBUQVBSSU8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY2Jfc2V0dXBfdGMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDQ5Nz1zdGF0aWMgaW50IG1hY2Jfc2V0dXBfdGFwcmlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDUyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDUyNjpzdGF0aWMgaW50IG1hY2Jfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ1MjctXHRcdFx0IHZvaWQgKnR5cGVfZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ1NDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWNiX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTYzLVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gbWFjYl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1NjQ6XHQubmRvX3NldHVwX3RjXHRcdD0gbWFjYl9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDU2NS1cdC5uZG9fdHhfdGltZW91dFx0XHQ9IG1hY2JfdHhfdGltZW91dCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4NjQKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUNCIERyaXZlciBmb3IgU3l6a2FsbGVyIEludGVncmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gYmVzdCBpbnRlZ3JhdGUgdGhlIE1BQ0IgZHJpdmVyIHdpdGggU3l6a2FsbGVyLCBmb2N1c2luZyBvbiBmdW5jdGlvbiBzeW1ib2xzLiBUaGUgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byB1c2UgYG1hY2Jfc2V0dXBfdGNgIGRpcmVjdGx5IGFzIGEgZm9jdXMgc3ltYm9sLiBTaW5jZSBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgSSB3YXMgY29uY2VybmVkIGFib3V0IGlubGluaW5nLiBIb3dldmVyLCBpdCYjMzk7cyBhc3NpZ25lZCB0byBhbiBgbmRvX3NldHVwX3RjYCBjYWxsYmFjaywgd2hpY2ggbWVhbnMgaXQgcHJvYmFibHkgKndvbiYjMzk7dCogYmUgaW5saW5lZC4gU3RpbGwsIFN5emthbGxlciBnZW5lcmFsbHkgcHJlZmVycyBub24tc3RhdGljIGZ1bmN0aW9ucyBmb3IgYmV0dGVyIHN5bWJvbCByZXNvbHV0aW9uLiBUaGUgcHJvbXB0IGFjdHVhbGx5IGVtcGhhc2l6ZXMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMhCgpUaGVuIEkgY29uc2lkZXJlZCB0aGUgZ2VuZXJpYyBgbmRvX3NldHVwX3RjYCBjYWxsZXIg4oCTIHNvbWV0aGluZyBsaWtlIGBkZXZfdGNfc2V0dXBgLiBCdXQgdGhlIGdvYWwgaGVyZSBpcyB0byBzcGVjaWZpY2FsbHkgdGFyZ2V0IHRoZSBNQUNCIGRyaXZlciwgc28gdGhhdCBhcHByb2FjaCBkb2VzbiYjMzk7dCBnaXZlIG1lIHRoZSBzcGVjaWZpYyBmb2N1cyBJIG5lZWQuIEkgcmVhbGl6ZWQgSSBjYW4ganVzdCBsaXN0IGJvdGggYG1hY2Jfc2V0dXBfdGNgIGFuZCwgaWYgcmVsZXZhbnQsIGZ1bmN0aW9ucyBsaWtlIGBtYWNiX3NldHVwX3RhcHJpb2Agb3IgYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgIGluIHRoZSBTeXprYWxsZXIgY29uZmlnIGlmIHRoZXkmIzM5O3JlIG5vdCBpbmxpbmVkLiBBY3R1YWxseSwgYG1hY2Jfc2V0dXBfdGNgIHNob3VsZCBiZSBmaW5lLiBJdCBiZWluZyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgc2VlbXMgdG8gc29sdmUgdGhlIGlubGluaW5nIHByb2JsZW0uCgpTbywgbGV0JiMzOTtzIHBpdm90IGFuZCBsb29rIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoZSBNQUNCIGRyaXZlci4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBwb3NzaWJpbGl0aWVzIGxpa2UgYG1hY2JfcHJvYmVgIG9yIGV2ZW4gYG1hY2JfcGNpX3Byb2JlYC4gTm93LCBJJiMzOTtsbCBnbyBjaGVjayBgbWFjYl9zZXR1cF90Y2AgaW4gYG1hY2JfbWFpbi5jYCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1MjYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDUyNjpcdHN0YXRpYyBpbnQgbWFjYl9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbjQ1Mjc6XHRcdFx0XHQgdm9pZCAqdHlwZV9kYXRhKVxuNDUyODpcdHtcbjQ1Mjk6XHRcdGlmICghZGV2IHx8ICF0eXBlX2RhdGEpXG40NTMwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuNDUzMTpcdFxuNDUzMjpcdFx0c3dpdGNoICh0eXBlKSB7XG40NTMzOlx0XHRjYXNlIFRDX1NFVFVQX1FESVNDX1RBUFJJTzpcbjQ1MzQ6XHRcdFx0cmV0dXJuIG1hY2Jfc2V0dXBfdGFwcmlvKGRldiwgdHlwZV9kYXRhKTtcbjQ1MzU6XHRcdGRlZmF1bHQ6XG40NTM2Olx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbjQ1Mzc6XHRcdH1cbjQ1Mzg6XHR9XG40NTM5Olx0XG40NTQwOlx0c3RhdGljIHZvaWQgbWFjYl90eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBxKVxuNDU0MTpcdHtcbjQ1NDI6XHRcdHN0cnVjdCBtYWNiICpicCA9IG5ldGRldl9wcml2KGRldik7XG40NTQzOlx0XG40NTQ0Olx0XHRtYWNiX3R4X3Jlc3RhcnQoXHUwMDI2YnAtXHUwMDNlcXVldWVzW3FdKTtcbjQ1NDU6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExODM2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIE1BQ0IgSW5pdGlhbGl6YXRpb24qKgoKSG1tLCBgbWFjYl9zZXR1cF90Y2AgaXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggZGV2aWNlIHNldHVwLCBhbmQgYSBzdGF0aWMgZnVuY3Rpb24gc3VnZ2VzdHMgaXQmIzM5O3MgdGlnaHRseSBib3VuZCB0byB0aGUgY3VycmVudCBjb250ZXh0LCBwb3RlbnRpYWxseSBtYWtpbmcgaXQgaGFyZGVyIHRvIGFkYXB0IG9yIHJldXNlIGluIG90aGVyIHNjZW5hcmlvcy4gSSB3b25kZXIgaWYgdGhlcmUmIzM5O3MgYSBub24tc3RhdGljIGFsdGVybmF0aXZlIHRoYXQgbWlnaHQgb2ZmZXIgbW9yZSBmbGV4aWJpbGl0eS4gTGV0IG1lIHRoaW5rLi4uIHBlcmhhcHMgYG1hY2JfcHJvYmVgPyBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgYSBwcm9iZSBmdW5jdGlvbiB3b3VsZCBiZSBkZXNpZ25lZCB0byBiZSBtb3JlIGFkYXB0YWJsZSwgcG90ZW50aWFsbHkgY2FsbGVkIGluIHZhcnlpbmcgY29udGV4dHMuIEkgc2hvdWxkIGludmVzdGlnYXRlIHRoYXQgcG9zc2liaWxpdHkgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00NTcxPXN0YXRpYyB2b2lkIG1hY2JfY29uZmlndXJlX2NhcHMoc3RydWN0IG1hY2IgKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDYxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDYxNTpzdGF0aWMgaW50IG1hY2JfcHJvYmVfcXVldWVzKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCBfX2lvbWVtICptZW0sIGJvb2wgbmF0aXZlX2lvKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjE2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX2NvbmZpZyBkZWZhdWx0X2dlbV9jb25maWcgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NzU1OnN0YXRpYyBpbnQgbWFjYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzU2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3OTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3OTE6XHRudW1fcXVldWVzID0gbWFjYl9wcm9iZV9xdWV1ZXMoXHUwMDI2cGRldi1cdTAwM2VkZXYsIG1lbSwgbmF0aXZlX2lvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTc5Mi1cdGlmIChudW1fcXVldWVzIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz02MjQ0PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1hY2JfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjQ1Olx0LnByb2JlXHRcdD0gbWFjYl9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjI0Ni1cdC5yZW1vdmVcdFx0PSBtYWNiX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MzMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIHRoZSBNQUNCIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpIbW0sIHNvIGBtYWNiX3Byb2JlYCBpcyBhbHNvIHN0YXRpYy4gSSYjMzk7bSBhbHJlYWR5IGRlZXAgaW50byB0aGUgbG93LWxldmVsIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIGhlcmUsIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBnZXRzIG9mZiB0aGUgZ3JvdW5kLiBOb3csIGxldCBtZSBzZWUuLi4gV2FpdCBhIHNlY29uZCwgaXMgdGhlIGBtYWNiX3BjaV9wcm9iZWAgZnVuY3Rpb24gdGhlIG9uZSBJJiMzOTttIGxvb2tpbmcgZm9yLCBhbmQgaXMgdGhhdCBkZWZpbmVkIGluIGBtYWNiX3BjaS5jYD8gR290dGEgZG91YmxlLWNoZWNrIHRoYXQgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6Mjc6c3RhdGljIGludCBtYWNiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMjgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjU9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI3LVx0LmlkX3RhYmxlID0gZGV2X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEyODpcdC5wcm9iZSAgICA9IG1hY2JfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI5LVx0LnJlbW92ZVx0ICA9IG1hY2JfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjk3NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgTGluZSBvZiBSZWFzb25pbmcqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGlzIGBtYWNiX3NldHVwX3RjYCBmdW5jdGlvbi4gSXQmIzM5O3MgcGVyZmVjdGx5IGFjY2VwdGFibGUgdG8gdHJlYXQgdGhpcyBhcyB0aGUgY2VudHJhbCBwb2ludCBmb3IgdGhlIGRyaXZlciYjMzk7cyBBUEkgaW50ZXJhY3Rpb24sIHNwZWNpZmljYWxseSBiZWNhdXNlIGl0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCB1c2VkIGJ5IGBuZG9fc2V0dXBfdGNgLiBNYWtlcyBzZW5zZS4KCk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSYjMzk7dmUgZ290IGBDT05GSUdfTUFDQmAsIGFuZCBgQ09ORklHX01BQ0JfUENJYCwgdGhvc2UgYXJlIGV4cGVjdGVkLiBCdXQgd2hhdCBhYm91dCBgQ09ORklHX05FVF9TQ0hfVEFQUklPYD8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhhdCBvbmUuIEp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIX1RBUFJJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTE2Nz1jb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXG4tLVxubmV0L3NjaGVkL0tjb25maWctMTcxLVxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xubmV0L3NjaGVkL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7VGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzNDkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzOiBRdWljayBBbmFseXNpcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7dmUgYWxyZWFkeSB2ZXJpZmllZCB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGZvY3VzZXMgc29sZWx5IG9uIHNlbGVjdGluZyBgTkVUX1NDSF9NUVBSSU9fTElCYC4gVGhpcyBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgbGlicmFyeSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNUVBSSU8gc2NoZWR1bGVyLgoKVGhlIG5leHQgcXVlc3Rpb24gaW4gbXkgaGVhZCBpczogZG9lcyBgTkVUX1NDSF9UQVBSSU9gIGhhdmUgYSBkZXBlbmRlbmN5IG9uIHRoZSBnZW5lcmFsIG5ldHdvcmtpbmcgc2NoZWR1bGVyIGZyYW1ld29yaywgYE5FVF9TQ0hFRGA/IFRoZSBub3RlICYjMzQ7WWVzLCBpdCYjMzk7cyBpbnNpZGUgYGlmIE5FVF9TQ0hFRGAmIzM0OyBjb25maXJtcyB0aGF0IGl0ICppcyogZGVwZW5kZW50LiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGRpY3RhdGVzIHRoZSBidWlsZCBvcmRlciBhbmQgZW5zdXJlcyB0aGF0IGBORVRfU0NIRURgIGlzIGVuYWJsZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIG9yIGVuYWJsZSBgTkVUX1NDSF9UQVBSSU9gLiBJJiMzOTtkIHdhbnQgdG8gZG91YmxlIGNoZWNrIGFueSBwb3RlbnRpYWwgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMgb3IgY29uZmxpY3RzIHdpdGggb3RoZXIgc2NoZWR1bGVycywganVzdCBhcyBhIG1hdHRlciBvZiBkdWUgZGlsaWdlbmNlIGdpdmVuIG91ciBleHBlcmllbmNlIGluIHRoaXMgYXJlYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnLTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2OTQKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogNjM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1BQ0IgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkgbmVlZCB0byBhc3Nlc3MgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBNQUNCIEV0aGVybmV0IGRyaXZlci4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gSSB0aGluaywgc2luY2UgdGhlIE1BQ0IgZHJpdmVyIGlzIGEgQ2FkZW5jZSBFdGhlcm5ldCBNQUMsIEkgc2hvdWxkIGVuYWJsZSBgTkVUX1ZFTkRPUl9DQURFTkNFYC4gQWxzbywgSSYjMzk7bGwgbmVlZCBgTUFDQmAsIGFuZCBgTUFDQl9QQ0lgLCB0aGUgUENJIHZhcmlhbnQgb2YgaXQsIGFsb25nc2lkZSBgTkVUX1NDSEVEYCBhbmQgYE5FVF9TQ0hfVEFQUklPYC4KCk5vdywgdGhlIGluc3RydWN0aW9ucyBtZW50aW9uIGNvZGUgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBRRU1VLCBzdWNoIGFzIFNtYXJ0TklDcyBvciBHUFVzLiBJcyBNQUNCIG9uZSBvZiB0aG9zZT8gTm8sIGl0JiMzOTtzIGEgc3RhbmRhcmQgRXRoZXJuZXQgTUFDIHVzZWQgaW4gbWFueSBTb0NzLiBRRU1VICpkb2VzKiBlbXVsYXRlIGl0IChgaHcvbmV0L2NhZGVuY2VfZ2VtLmNgKS4gRXZlbiBpZiBRRU1VICpkb2VzbiYjMzk7dCogZW11bGF0ZSB0aGUgUENJIHZlcnNpb24gb2YgTUFDQiwgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIgc2hvdWxkIHN0aWxsIGJlIGFibGUgdG8gcHJvYmUgYW5kIGZ1enogaXQgdmlhIGl0cyBuZXRkZXYgb3BlcmF0aW9ucy4gVGhlIFBDSSBmdXp6ZXIgc2hvdWxkIHdvcmsgZm9yICphbnkqIFBDSSBkcml2ZXIgYnkgbWF0Y2hpbmcgdGhlIFBDSSBJRC4gRnVydGhlcm1vcmUsIGV2ZW4gaWYgaXQmIzM5O3Mgbm90IFBDSSwgdGhlIHBsYXRmb3JtIGRldmljZSBmdXp6ZXIgY2FuIGJlIHVzZWQgdG8gaW5zdGFudGlhdGUgaXQgb3IsIGZhaWxpbmcgdGhhdCwgUUVNVSBtaWdodCB3b3JrLCBkZXBlbmRpbmcgb24gdGhlIG1hY2hpbmUgdHlwZS4gVGhhdCBzb3VuZHMgZ29vZCwgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIHRoZW4uCgpMZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBBaCwgaXQmIzM5O3MgZml4aW5nIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdpdGhpbiBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAuIFRoZSBgZW5zdF9xdWV1ZWAgaXMgYWxsb2NhdGVkIHdpdGggYGJwLSZndDtudW1fcXVldWVzYCB3aGVuIGl0IHNob3VsZCBoYXZlIGJlZW4gYWxsb2NhdGVkIHdpdGggYGNvbmYtJmd0O251bV9lbnRyaWVzYC4gVGhlIGxvb3AgdGhlbiBpdGVyYXRlcyBvdmVyIGBicC0mZ3Q7bnVtX3F1ZXVlc2AgcmF0aGVyIHRoYW4gYGNvbmYtJmd0O251bV9lbnRyaWVzYCwgd2hpY2ggY2xlYXJseSBjYXVzZXMgYW4gaXNzdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZml4aW5nIGEgYnVnLCB3aGljaCBpcyBncmVhdC4KCkZvY3VzaW5nIG9uIHRoZSBzeW1ib2xzLCBJJiMzOTtsbCBwYXkgYXR0ZW50aW9uIHRvIGBtYWNiX3NldHVwX3RjYCwgYG1hY2Jfc2V0dXBfdGFwcmlvYCwgYW5kIG9mIGNvdXJzZSBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAuCgpUbyByZWNhcCwgdGhlIGNvbmZpZ3MgSSBuZWVkIGFyZTogYE5FVF9WRU5ET1JfQ0FERU5DRWAsIGBNQUNCYCwgYE1BQ0JfUENJYCwgYE5FVF9TQ0hFRGAsIGFuZCBgTkVUX1NDSF9UQVBSSU9gLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYE1BQ0JfUENJYCBpbmRlZWQgZGVwZW5kcyBvbiBgTUFDQiAmYW1wOyZhbXA7IFBDSWAgd2hpY2ggaXQgZG9lcy4gQWxzbywgSSYjMzk7bGwgYXNzdW1lIHRoYXQgYFBDSWAsIGBIQVNfRE1BYCwgYENPTU1PTl9DTEtgLCBhbmQgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCBhcmUgdXN1YWxseSBlbmFibGVkLgoKRmluYWxseSwgSSYjMzk7bGwgY2hlY2sgdGhhdCBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAgaXMgc3RhdGljLiBJdCBpcy4gU28sIEkmIzM5O2xsIHByb3ZpZGUgYG1hY2Jfc2V0dXBfdGNgIGFuZCBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAgYXMgdGhlIHN5bWJvbHMgdG8gZm9jdXMgb24uCgpPa2F5LCBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfVkVORE9SX0NBREVOQ0UmIzM0OywKICAgICYjMzQ7TUFDQiYjMzQ7LAogICAgJiMzNDtNQUNCX1BDSSYjMzQ7LAogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWNiX3NldHVwX3RjJiMzNDssCiAgICAmIzM0O21hY2Jfc2V0dXBfdGFwcmlvJiMzNDssCiAgICAmIzM0O21hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIE1BQ0IgZHJpdmVyJiMzOTtzIHRhcHJpbyB0cmFmZmljIGNvbnRyb2wgc2V0dXAgKG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2UpLiBJdCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIHNpemUgYW5kIGxvb3AgYm91bmRzIHRvIHVzZSB0aGUgaGFyZHdhcmUmIzM5O3MgcXVldWUgY291bnQgaW5zdGVhZCBvZiB0aGUgdXNlci1wcm92aWRlZCBlbnRyeSBjb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGluIHJlYWNoYWJsZSBuZXR3b3JrIGRyaXZlciBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfVkVORE9SX0NBREVOQ0UmIzM0OywKICAgICYjMzQ7TUFDQiYjMzQ7LAogICAgJiMzNDtNQUNCX1BDSSYjMzQ7LAogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWNiX3NldHVwX3RjJiMzNDssCiAgICAmIzM0O21hY2Jfc2V0dXBfdGFwcmlvJiMzNDssCiAgICAmIzM0O21hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIE1BQ0IgZHJpdmVyJiMzOTtzIHRhcHJpbyB0cmFmZmljIGNvbnRyb2wgc2V0dXAgKG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2UpLiBJdCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIHNpemUgYW5kIGxvb3AgYm91bmRzIHRvIHVzZSB0aGUgaGFyZHdhcmUmIzM5O3MgcXVldWUgY291bnQgaW5zdGVhZCBvZiB0aGUgdXNlci1wcm92aWRlZCBlbnRyeSBjb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGluIHJlYWNoYWJsZSBuZXR3b3JrIGRyaXZlciBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDI6NDcuMDMyNTk1OTYxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcxMDk1NTQ5MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9DQURFTkNFXCIsXG4gICAgXCJNQUNCXCIsXG4gICAgXCJNQUNCX1BDSVwiLFxuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX1RBUFJJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY2Jfc2V0dXBfdGNcIixcbiAgICBcIm1hY2Jfc2V0dXBfdGFwcmlvXCIsXG4gICAgXCJtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIE1BQ0IgZHJpdmVyJ3MgdGFwcmlvIHRyYWZmaWMgY29udHJvbCBzZXR1cCAobWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZSkuIEl0IGNoYW5nZXMgdGhlIGFsbG9jYXRpb24gc2l6ZSBhbmQgbG9vcCBib3VuZHMgdG8gdXNlIHRoZSBoYXJkd2FyZSdzIHF1ZXVlIGNvdW50IGluc3RlYWQgb2YgdGhlIHVzZXItcHJvdmlkZWQgZW50cnkgY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBpbiByZWFjaGFibGUgbmV0d29yayBkcml2ZXIgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDI6NDcuMDMyNjAwNjMxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTI1MzE4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNWE1ZTAzNDRmMTRjMjQzOTU0NGY2NjMwNDA0NzUwZTRkMzNiNDMxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDA4OjQyOjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmhcXG5pbmRleCAyZGU1NjAxN2VlMGQ2MS4uNGNjOWFhOWIyZjllOTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaFxcbkBAIC0xODQsMTIgKzE4NCw2IEBAXFxuICNkZWZpbmUgR0VNX0RDRkc4XFx0XFx0MHgwMjlDIC8qIERlc2lnbiBDb25maWcgOCAqL1xcbiAjZGVmaW5lIEdFTV9EQ0ZHMTBcXHRcXHQweDAyQTQgLyogRGVzaWduIENvbmZpZyAxMCAqL1xcbiAjZGVmaW5lIEdFTV9EQ0ZHMTJcXHRcXHQweDAyQUMgLyogRGVzaWduIENvbmZpZyAxMiAqL1xcbi0jZGVmaW5lIEdFTV9FTlNUX1NUQVJUX1RJTUVfUTBcXHQweDA4MDAgLyogRU5TVCBRMCBzdGFydCB0aW1lICovXFxuLSNkZWZpbmUgR0VNX0VOU1RfU1RBUlRfVElNRV9RMVxcdDB4MDgwNCAvKiBFTlNUIFExIHN0YXJ0IHRpbWUgKi9cXG4tI2RlZmluZSBHRU1fRU5TVF9PTl9USU1FX1EwXFx0MHgwODIwIC8qIEVOU1QgUTAgb24gdGltZSAqL1xcbi0jZGVmaW5lIEdFTV9FTlNUX09OX1RJTUVfUTFcXHQweDA4MjQgLyogRU5TVCBRMSBvbiB0aW1lICovXFxuLSNkZWZpbmUgR0VNX0VOU1RfT0ZGX1RJTUVfUTBcXHQweDA4NDAgLyogRU5TVCBRMCBvZmYgdGltZSAqL1xcbi0jZGVmaW5lIEdFTV9FTlNUX09GRl9USU1FX1ExXFx0MHgwODQ0IC8qIEVOU1QgUTEgb2ZmIHRpbWUgKi9cXG4gI2RlZmluZSBHRU1fRU5TVF9DT05UUk9MXFx0MHgwODgwIC8qIEVOU1QgY29udHJvbCByZWdpc3RlciAqL1xcbiAjZGVmaW5lIEdFTV9VU1hfQ09OVFJPTFxcdFxcdDB4MEE4MCAvKiBIaWdoIHNwZWVkIFBDUyBjb250cm9sIHJlZ2lzdGVyICovXFxuICNkZWZpbmUgR0VNX1VTWF9TVEFUVVNcXHRcXHQweDBBODggLyogSGlnaCBzcGVlZCBQQ1Mgc3RhdHVzIHJlZ2lzdGVyICovXFxuQEAgLTE0OTYsNyArMTQ5MCw2IEBAIHN0cnVjdCBtYWNiX3BsYXRmb3JtX2RhdGEge1xcbiAgKiBAc3RhcnRfdGltZV9tYXNrOiAgQml0bWFzayByZXByZXNlbnRpbmcgdGhlIHN0YXJ0IHRpbWUgZm9yIHRoZSBxdWV1ZVxcbiAgKiBAb25fdGltZV9ieXRlczogICAgXFxcIm9uXFxcIiB0aW1lIG5zZWMgZXhwcmVzc2VkIGluIGJ5dGVzXFxuICAqIEBvZmZfdGltZV9ieXRlczogICBcXFwib2ZmXFxcIiB0aW1lIG5zZWMgZXhwcmVzc2VkIGluIGJ5dGVzXFxuLSAqIEBxdWV1ZV9pZDogICAgICAgICBJZGVudGlmaWVyIGZvciB0aGUgcXVldWVcXG4gICpcXG4gICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3IgYW4gRU5TVCBxdWV1ZSxcXG4gICogdXNlZCB0byBjb250cm9sIHRpbWUtYmFzZWQgdHJhbnNtaXNzaW9uIHNjaGVkdWxpbmcgaW4gdGhlIE1BQ0IgZHJpdmVyLlxcbkBAIC0xNTA1LDcgKzE0OTgsNiBAQCBzdHJ1Y3QgbWFjYl9xdWV1ZV9lbnN0X2NvbmZpZyB7XFxuIFxcdHUzMiBzdGFydF90aW1lX21hc2s7XFxuIFxcdHUzMiBvbl90aW1lX2J5dGVzO1xcbiBcXHR1MzIgb2ZmX3RpbWVfYnl0ZXM7XFxuLVxcdHU4IHF1ZXVlX2lkO1xcbiB9O1xcbiBcXG4gI2VuZGlmIC8qIF9NQUNCX0ggKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcXG5pbmRleCBkMzk0ZjFmNDNiNjg1ZS4uZDU4NDMwZmU5YzQxZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcXG5AQCAtNDMyOSw3ICs0MzI5LDcgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWU7XFxuIFxcdHUzMiBxdWV1ZV9tYXNrO1xcbiBcXHR1OCBxdWV1ZV9pZDtcXG4tXFx0c2l6ZV90IGk7XFxuK1xcdHNpemVfdCBpLCBxO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4gXFx0aWYgKGNvbmYtXFx1MDAzZW51bV9lbnRyaWVzIFxcdTAwM2UgYnAtXFx1MDAzZW51bV9xdWV1ZXMpIHtcXG5AQCAtNDM1Nyw3ICs0MzU3LDcgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbiBcXG4tXFx0ZW5zdF9xdWV1ZSA9IGtjYWxsb2MoY29uZi1cXHUwMDNlbnVtX2VudHJpZXMsIHNpemVvZigqZW5zdF9xdWV1ZSksIEdGUF9LRVJORUwpO1xcbitcXHRlbnN0X3F1ZXVlID0ga2NhbGxvYyhicC1cXHUwMDNlbnVtX3F1ZXVlcywgc2l6ZW9mKCplbnN0X3F1ZXVlKSwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmICh1bmxpa2VseSghZW5zdF9xdWV1ZSkpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG5AQCAtNDQxNiwxMyArNDQxNiwxMiBAQCBzdGF0aWMgaW50IG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdFxcdFxcdGdvdG8gY2xlYW51cDtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0ZW5zdF9xdWV1ZVtpXS5xdWV1ZV9pZCA9IHF1ZXVlX2lkO1xcbi1cXHRcXHRlbnN0X3F1ZXVlW2ldLnN0YXJ0X3RpbWVfbWFzayA9XFxuK1xcdFxcdGVuc3RfcXVldWVbcXVldWVfaWRdLnN0YXJ0X3RpbWVfbWFzayA9XFxuIFxcdFxcdFxcdChzdGFydF90aW1lX3NlYyBcXHUwMDNjXFx1MDAzYyBHRU1fU1RBUlRfVElNRV9TRUNfT0ZGU0VUKSB8XFxuIFxcdFxcdFxcdHN0YXJ0X3RpbWVfbnNlYztcXG4tXFx0XFx0ZW5zdF9xdWV1ZVtpXS5vbl90aW1lX2J5dGVzID1cXG4rXFx0XFx0ZW5zdF9xdWV1ZVtxdWV1ZV9pZF0ub25fdGltZV9ieXRlcyA9XFxuIFxcdFxcdFxcdGVuc3RfbnNfdG9faHdfdW5pdHMoZW50cnktXFx1MDAzZWludGVydmFsLCBzcGVlZCk7XFxuLVxcdFxcdGVuc3RfcXVldWVbaV0ub2ZmX3RpbWVfYnl0ZXMgPVxcbitcXHRcXHRlbnN0X3F1ZXVlW3F1ZXVlX2lkXS5vZmZfdGltZV9ieXRlcyA9XFxuIFxcdFxcdFxcdGVuc3RfbnNfdG9faHdfdW5pdHMoY29uZi1cXHUwMDNlY3ljbGVfdGltZSAtIGVudHJ5LVxcdTAwM2VpbnRlcnZhbCwgc3BlZWQpO1xcbiBcXG4gXFx0XFx0Y29uZmlndXJlZF9xdWV1ZXMgfD0gZW50cnktXFx1MDAzZWdhdGVfbWFzaztcXG5AQCAtNDQ0OCwxNSArNDQ0NywxNCBAQCBzdGF0aWMgaW50IG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdFxcdGdlbV93cml0ZWwoYnAsIEVOU1RfQ09OVFJPTCxcXG4gXFx0XFx0XFx0ICAgcXVldWVfbWFzayBcXHUwMDNjXFx1MDAzYyBHRU1fRU5TVF9ESVNBQkxFX1FVRVVFX09GRlNFVCk7XFxuIFxcbi1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgY29uZi1cXHUwMDNlbnVtX2VudHJpZXM7IGkrKykge1xcbi1cXHRcXHRcXHRxdWV1ZSA9IFxcdTAwMjZicC1cXHUwMDNlcXVldWVzW2Vuc3RfcXVldWVbaV0ucXVldWVfaWRdO1xcbitcXHRcXHRmb3IgKHEgPSAwLCBxdWV1ZSA9IGJwLVxcdTAwM2VxdWV1ZXM7IHEgXFx1MDAzYyBicC1cXHUwMDNlbnVtX3F1ZXVlczsgKytxLCArK3F1ZXVlKSB7XFxuIFxcdFxcdFxcdC8qIENvbmZpZ3VyZSBxdWV1ZSB0aW1pbmcgcmVnaXN0ZXJzICovXFxuIFxcdFxcdFxcdHF1ZXVlX3dyaXRlbChxdWV1ZSwgRU5TVF9TVEFSVF9USU1FLFxcbi1cXHRcXHRcXHRcXHQgICAgIGVuc3RfcXVldWVbaV0uc3RhcnRfdGltZV9tYXNrKTtcXG4rXFx0XFx0XFx0XFx0ICAgICBlbnN0X3F1ZXVlW3FdLnN0YXJ0X3RpbWVfbWFzayk7XFxuIFxcdFxcdFxcdHF1ZXVlX3dyaXRlbChxdWV1ZSwgRU5TVF9PTl9USU1FLFxcbi1cXHRcXHRcXHRcXHQgICAgIGVuc3RfcXVldWVbaV0ub25fdGltZV9ieXRlcyk7XFxuK1xcdFxcdFxcdFxcdCAgICAgZW5zdF9xdWV1ZVtxXS5vbl90aW1lX2J5dGVzKTtcXG4gXFx0XFx0XFx0cXVldWVfd3JpdGVsKHF1ZXVlLCBFTlNUX09GRl9USU1FLFxcbi1cXHRcXHRcXHRcXHQgICAgIGVuc3RfcXVldWVbaV0ub2ZmX3RpbWVfYnl0ZXMpO1xcbitcXHRcXHRcXHRcXHQgICAgIGVuc3RfcXVldWVbcV0ub2ZmX3RpbWVfYnl0ZXMpO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHQvKiBFbmFibGUgRU5TVCBmb3IgYWxsIGNvbmZpZ3VyZWQgcXVldWVzIGluIG9uZSB3cml0ZSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0Mjo0Ny42MjU4MjQzMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc2NTE2MzE1MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9WRU5ET1JfQ0FERU5DRVwiLFxuICAgIFwiTUFDQlwiLFxuICAgIFwiTUFDQl9QQ0lcIixcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWNiX3NldHVwX3RjXCIsXG4gICAgXCJtYWNiX3NldHVwX3RhcHJpb1wiLFxuICAgIFwibWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIHRoZSBNQUNCIGRyaXZlcidzIHRhcHJpbyB0cmFmZmljIGNvbnRyb2wgc2V0dXAgKG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2UpLiBJdCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIHNpemUgYW5kIGxvb3AgYm91bmRzIHRvIHVzZSB0aGUgaGFyZHdhcmUncyBxdWV1ZSBjb3VudCBpbnN0ZWFkIG9mIHRoZSB1c2VyLXByb3ZpZGVkIGVudHJ5IGNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggaW4gcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI1YTVlMDM0NGYxNGMyNDM5NTQ0ZjY2MzA0MDQ3NTBlNGQzM2I0MzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwODo0Mjo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmhcbmluZGV4IDJkZTU2MDE3ZWUwZDYxLi40Y2M5YWE5YjJmOWU5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaFxuQEAgLTE4NCwxMiArMTg0LDYgQEBcbiAjZGVmaW5lIEdFTV9EQ0ZHOFx0XHQweDAyOUMgLyogRGVzaWduIENvbmZpZyA4ICovXG4gI2RlZmluZSBHRU1fRENGRzEwXHRcdDB4MDJBNCAvKiBEZXNpZ24gQ29uZmlnIDEwICovXG4gI2RlZmluZSBHRU1fRENGRzEyXHRcdDB4MDJBQyAvKiBEZXNpZ24gQ29uZmlnIDEyICovXG4tI2RlZmluZSBHRU1fRU5TVF9TVEFSVF9USU1FX1EwXHQweDA4MDAgLyogRU5TVCBRMCBzdGFydCB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9TVEFSVF9USU1FX1ExXHQweDA4MDQgLyogRU5TVCBRMSBzdGFydCB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9PTl9USU1FX1EwXHQweDA4MjAgLyogRU5TVCBRMCBvbiB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9PTl9USU1FX1ExXHQweDA4MjQgLyogRU5TVCBRMSBvbiB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9PRkZfVElNRV9RMFx0MHgwODQwIC8qIEVOU1QgUTAgb2ZmIHRpbWUgKi9cbi0jZGVmaW5lIEdFTV9FTlNUX09GRl9USU1FX1ExXHQweDA4NDQgLyogRU5TVCBRMSBvZmYgdGltZSAqL1xuICNkZWZpbmUgR0VNX0VOU1RfQ09OVFJPTFx0MHgwODgwIC8qIEVOU1QgY29udHJvbCByZWdpc3RlciAqL1xuICNkZWZpbmUgR0VNX1VTWF9DT05UUk9MXHRcdDB4MEE4MCAvKiBIaWdoIHNwZWVkIFBDUyBjb250cm9sIHJlZ2lzdGVyICovXG4gI2RlZmluZSBHRU1fVVNYX1NUQVRVU1x0XHQweDBBODggLyogSGlnaCBzcGVlZCBQQ1Mgc3RhdHVzIHJlZ2lzdGVyICovXG5AQCAtMTQ5Niw3ICsxNDkwLDYgQEAgc3RydWN0IG1hY2JfcGxhdGZvcm1fZGF0YSB7XG4gICogQHN0YXJ0X3RpbWVfbWFzazogIEJpdG1hc2sgcmVwcmVzZW50aW5nIHRoZSBzdGFydCB0aW1lIGZvciB0aGUgcXVldWVcbiAgKiBAb25fdGltZV9ieXRlczogICAgXCJvblwiIHRpbWUgbnNlYyBleHByZXNzZWQgaW4gYnl0ZXNcbiAgKiBAb2ZmX3RpbWVfYnl0ZXM6ICAgXCJvZmZcIiB0aW1lIG5zZWMgZXhwcmVzc2VkIGluIGJ5dGVzXG4tICogQHF1ZXVlX2lkOiAgICAgICAgIElkZW50aWZpZXIgZm9yIHRoZSBxdWV1ZVxuICAqXG4gICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3IgYW4gRU5TVCBxdWV1ZSxcbiAgKiB1c2VkIHRvIGNvbnRyb2wgdGltZS1iYXNlZCB0cmFuc21pc3Npb24gc2NoZWR1bGluZyBpbiB0aGUgTUFDQiBkcml2ZXIuXG5AQCAtMTUwNSw3ICsxNDk4LDYgQEAgc3RydWN0IG1hY2JfcXVldWVfZW5zdF9jb25maWcge1xuIFx0dTMyIHN0YXJ0X3RpbWVfbWFzaztcbiBcdHUzMiBvbl90aW1lX2J5dGVzO1xuIFx0dTMyIG9mZl90aW1lX2J5dGVzO1xuLVx0dTggcXVldWVfaWQ7XG4gfTtcbiBcbiAjZW5kaWYgLyogX01BQ0JfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG5pbmRleCBkMzk0ZjFmNDNiNjg1ZS4uZDU4NDMwZmU5YzQxZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG5AQCAtNDMyOSw3ICs0MzI5LDcgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0c3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlO1xuIFx0dTMyIHF1ZXVlX21hc2s7XG4gXHR1OCBxdWV1ZV9pZDtcbi1cdHNpemVfdCBpO1xuK1x0c2l6ZV90IGksIHE7XG4gXHRpbnQgZXJyO1xuIFxuIFx0aWYgKGNvbmYtXHUwMDNlbnVtX2VudHJpZXMgXHUwMDNlIGJwLVx1MDAzZW51bV9xdWV1ZXMpIHtcbkBAIC00MzU3LDcgKzQzNTcsNyBAQCBzdGF0aWMgaW50IG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuLVx0ZW5zdF9xdWV1ZSA9IGtjYWxsb2MoY29uZi1cdTAwM2VudW1fZW50cmllcywgc2l6ZW9mKCplbnN0X3F1ZXVlKSwgR0ZQX0tFUk5FTCk7XG4rXHRlbnN0X3F1ZXVlID0ga2NhbGxvYyhicC1cdTAwM2VudW1fcXVldWVzLCBzaXplb2YoKmVuc3RfcXVldWUpLCBHRlBfS0VSTkVMKTtcbiBcdGlmICh1bmxpa2VseSghZW5zdF9xdWV1ZSkpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTQ0MTYsMTMgKzQ0MTYsMTIgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRcdGdvdG8gY2xlYW51cDtcbiBcdFx0fVxuIFxuLVx0XHRlbnN0X3F1ZXVlW2ldLnF1ZXVlX2lkID0gcXVldWVfaWQ7XG4tXHRcdGVuc3RfcXVldWVbaV0uc3RhcnRfdGltZV9tYXNrID1cbitcdFx0ZW5zdF9xdWV1ZVtxdWV1ZV9pZF0uc3RhcnRfdGltZV9tYXNrID1cbiBcdFx0XHQoc3RhcnRfdGltZV9zZWMgXHUwMDNjXHUwMDNjIEdFTV9TVEFSVF9USU1FX1NFQ19PRkZTRVQpIHxcbiBcdFx0XHRzdGFydF90aW1lX25zZWM7XG4tXHRcdGVuc3RfcXVldWVbaV0ub25fdGltZV9ieXRlcyA9XG4rXHRcdGVuc3RfcXVldWVbcXVldWVfaWRdLm9uX3RpbWVfYnl0ZXMgPVxuIFx0XHRcdGVuc3RfbnNfdG9faHdfdW5pdHMoZW50cnktXHUwMDNlaW50ZXJ2YWwsIHNwZWVkKTtcbi1cdFx0ZW5zdF9xdWV1ZVtpXS5vZmZfdGltZV9ieXRlcyA9XG4rXHRcdGVuc3RfcXVldWVbcXVldWVfaWRdLm9mZl90aW1lX2J5dGVzID1cbiBcdFx0XHRlbnN0X25zX3RvX2h3X3VuaXRzKGNvbmYtXHUwMDNlY3ljbGVfdGltZSAtIGVudHJ5LVx1MDAzZWludGVydmFsLCBzcGVlZCk7XG4gXG4gXHRcdGNvbmZpZ3VyZWRfcXVldWVzIHw9IGVudHJ5LVx1MDAzZWdhdGVfbWFzaztcbkBAIC00NDQ4LDE1ICs0NDQ3LDE0IEBAIHN0YXRpYyBpbnQgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0Z2VtX3dyaXRlbChicCwgRU5TVF9DT05UUk9MLFxuIFx0XHRcdCAgIHF1ZXVlX21hc2sgXHUwMDNjXHUwMDNjIEdFTV9FTlNUX0RJU0FCTEVfUVVFVUVfT0ZGU0VUKTtcbiBcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY29uZi1cdTAwM2VudW1fZW50cmllczsgaSsrKSB7XG4tXHRcdFx0cXVldWUgPSBcdTAwMjZicC1cdTAwM2VxdWV1ZXNbZW5zdF9xdWV1ZVtpXS5xdWV1ZV9pZF07XG4rXHRcdGZvciAocSA9IDAsIHF1ZXVlID0gYnAtXHUwMDNlcXVldWVzOyBxIFx1MDAzYyBicC1cdTAwM2VudW1fcXVldWVzOyArK3EsICsrcXVldWUpIHtcbiBcdFx0XHQvKiBDb25maWd1cmUgcXVldWUgdGltaW5nIHJlZ2lzdGVycyAqL1xuIFx0XHRcdHF1ZXVlX3dyaXRlbChxdWV1ZSwgRU5TVF9TVEFSVF9USU1FLFxuLVx0XHRcdFx0ICAgICBlbnN0X3F1ZXVlW2ldLnN0YXJ0X3RpbWVfbWFzayk7XG4rXHRcdFx0XHQgICAgIGVuc3RfcXVldWVbcV0uc3RhcnRfdGltZV9tYXNrKTtcbiBcdFx0XHRxdWV1ZV93cml0ZWwocXVldWUsIEVOU1RfT05fVElNRSxcbi1cdFx0XHRcdCAgICAgZW5zdF9xdWV1ZVtpXS5vbl90aW1lX2J5dGVzKTtcbitcdFx0XHRcdCAgICAgZW5zdF9xdWV1ZVtxXS5vbl90aW1lX2J5dGVzKTtcbiBcdFx0XHRxdWV1ZV93cml0ZWwocXVldWUsIEVOU1RfT0ZGX1RJTUUsXG4tXHRcdFx0XHQgICAgIGVuc3RfcXVldWVbaV0ub2ZmX3RpbWVfYnl0ZXMpO1xuK1x0XHRcdFx0ICAgICBlbnN0X3F1ZXVlW3FdLm9mZl90aW1lX2J5dGVzKTtcbiBcdFx0fVxuIFxuIFx0XHQvKiBFbmFibGUgRU5TVCBmb3IgYWxsIGNvbmZpZ3VyZWQgcXVldWVzIGluIG9uZSB3cml0ZSAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDI6NDcuNjI1ODI1ODkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkyNjAyMjI4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BQ0IgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgIHdpdGhpbiB0aGUgYG1hY2JfbWFpbi5jYCBmaWxlLiBSaWdodCwgdGhhdCdzIHRoZSBkcml2ZXIgZm9yIHRoZSBDYWRlbmNlIE1BQ0IvR0VNIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBTcGVjaWZpY2FsbHksIGl0J3MgbWVzc2luZyB3aXRoIGhvdyB0aGUgYGVuc3RfcXVldWVgIGlzIGhhbmRsZWQuIEl0IHNlZW1zIHRoZSBhbGxvY2F0aW9uIHNpemUgaXMgc2hpZnRpbmcgZnJvbSB1c2luZyBgY29uZi1cdTAwM2VudW1fZW50cmllc2AgdG8gbm93IHJlbHlpbmcgb24gYGJwLVx1MDAzZW51bV9xdWV1ZXNgLiBJbnRlcmVzdGluZy4gQW5kIGluc3RlYWQgb2YgdXNpbmcgYSBzdGFuZGFyZCBgaWAgZm9yIGluZGV4aW5nIGludG8gYGVuc3RfcXVldWVgLCBpdCdzIG5vdyBrZXllZCBvZmYgb2YgYHF1ZXVlX2lkYC4gVGhlbiB0aGUgbG9vcCB0byB3cml0ZSB0byB0aGUgcXVldWUgcmVnaXN0ZXJzIGl0ZXJhdGVzIGBicC1cdTAwM2VudW1fcXVldWVzYCB0aW1lcy5cblxuVGhlIGJpZyBxdWVzdGlvbiBub3cgaXMsIGlzIHRoaXMgZXZlbiAqdGVzdGFibGUqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBrbm93IHRoZXNlIENhZGVuY2UgTUFDQnMgYXJlIGNvbW1vbmx5IGZvdW5kIGluIGVtYmVkZGVkIHN5c3RlbXMg4oCTIEFSTSBTb0NzIGZyb20gQXRtZWwsIFhpbGlueCBaeW5xLCBTaUZpdmUsIHRoYXQgc29ydCBvZiB0aGluZy4gQnV0IHdhaXTigKYgd2Fzbid0IHRoZXJlIGEgUUVNVSBtb2RlbD8gQWgsIHllcywgYGh3L25ldC9jYWRlbmNlX2dlbS5jYC4gUUVNVSAqZG9lcyogZW11bGF0ZSB0aGUgQ2FkZW5jZSBHRU0sIHNvIHRoYXQgZ2l2ZXMgdXMgYSBwb3RlbnRpYWwgdGVzdGJlZCFcblxuTGV0J3Mgc2Vl4oCmIHRoaXMgcGF0Y2ggaXMgcmVsYXRlZCB0byB0aGUgYHRjYCAodHJhZmZpYyBjb250cm9sKSB0YXByaW8gb2ZmbG9hZCBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgaW4gYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgLiBDb3VsZCB3ZSBmdXp6IHRoaXM/IFRoYXQncyBkZWZpbml0ZWx5IHdvcnRoIGludmVzdGlnYXRpbmcuIEknbGwgbmVlZCB0byBjb25maXJtIHRoZSBkcml2ZXIgbmFtZSBpcyBgTUFDQmAuIEEgcXVpY2sgY2hlY2sgb2YgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZ2Agd2lsbCB0ZWxsIG1lIGZvciBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDMyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDI6NTMuNTUxODUwNzM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NjM1ODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUNCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9MjA9aWYgTkVUX1ZFTkRPUl9DQURFTkNFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzoyMjpjb25maWcgTUFDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yMy1cXHR0cmlzdGF0ZSBcXFwiQ2FkZW5jZSBNQUNCL0dFTSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzozNzpjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0zOC1cXHRib29sIFxcXCJVc2UgSUVFRSAxNTg4IGh3c3RhbXBcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjQ1OmNvbmZpZyBNQUNCX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiQ2FkZW5jZSBQQ0kgTUFDQi9HRU0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDI6NTMuNjM4NDk2OTA5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc2MzY3NDMyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYTpcblxuKipEaWdnaW5nIGludG8gdGhlIE1BQ0IgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBNQUNCIEV0aGVybmV0IGNvbnRyb2xsZXIgaXMgY29uZmlndXJlZCBhcyBhIFBDSSBkZXZpY2Ugb3IgYSBwbGF0Zm9ybSBkZXZpY2UuIEZpcnN0IHRoaW5ncyBmaXJzdCwgdGhlIHByZXNlbmNlIG9mIGBNQUNCX1BDSWAgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXMgYSBnb29kIGluZGljYXRvci4gSXQncyBhIHF1aWNrIHdheSB0byBrbm93IHRoZSBjb250cm9sbGVyIGlzIGNvbmZpZ3VyZWQgYXMgYSBQQ0kgZGV2aWNlLiBUaGlzIGltcGxpZXMgSSBzaG91bGQgZ28gbG9vayB0aGVyZSBmaXJzdCBmb3IgdGhlIHJlbGV2YW50IGRyaXZlciBpbXBsZW1lbnRhdGlvbi4gVGhhdCB3b3VsZCBtZWFuIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jYCBmaWxlLiBUaGF0J3Mgd2hlcmUgSSB3b3VsZCBleHBlY3QgdG8gZmluZCB0aGUgc3BlY2lmaWMgUENJLXJlbGF0ZWQgaW5pdGlhbGl6YXRpb24gYW5kIHNldHVwIGNvZGUgZm9yIHRoZSBNQUNCIGNvbnRyb2xsZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNjQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0Mjo1Ni40MDIxNzM3MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MzA4NDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JfcGNpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZz00NT1jb25maWcgTUFDQl9QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy01MS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6NTI6XFx0ICB3aWxsIGJlIGNhbGxlZCBtYWNiX3BjaS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19NQUNCKSArPSBtYWNiLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19NQUNCX1BDSSkgKz0gbWFjYl9wY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxOTojZGVmaW5lIFBDSV9EUklWRVJfTkFNRSBcXFwibWFjYl9wY2lcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTIwLSNkZWZpbmUgUExBVF9EUklWRVJfTkFNRSBcXFwibWFjYlxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGRldl9pZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTI1OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYWNiX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEyNi1cXHQubmFtZSAgICAgPSBQQ0lfRFJJVkVSX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMzI6bW9kdWxlX3BjaV9kcml2ZXIobWFjYl9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTMzLU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkZXZfaWRfdGFibGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0Mjo1Ni41Mjc0ODY5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5NDQyODI0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNQUNCIHdpdGggUENJIFdyYXBwZXIqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYE1BQ0JfUENJYCwgd2hpY2ggaXMgZXNzZW50aWFsbHkgYSBQQ0kgd3JhcHBlciBhcm91bmQgdGhlIE1BQ0IgRXRoZXJuZXQgY29udHJvbGxlci4gQnV0IGhhbmcgb24sIHRoZSB0eXBpY2FsIFFFTVUgYGNhZGVuY2VfZ2VtYCBJJ20gdXNlZCB0byBzZWVpbmcgaXMgYSBwbGF0Zm9ybSBkZXZpY2UsIHN5c2J1cyBiYXNlZCwgYW5kIG1vc3RseSB1c2VkIG9uIEFSTSBib2FyZHMuIFRoaXMgZ2V0cyBtZSB0aGlua2luZy4uLiBjb3VsZCB3ZSBmdXp6IGBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlYD9cblxuVGhlIGFuc3dlciBpcyB5ZXMsIHBvdGVudGlhbGx5LiBTeXprYWxsZXIgY291bGQgaW5zdGFudGlhdGUgYE1BQ0JgIGFuZCBgTUFDQl9QQ0lgIGFzIGEgUENJIGRldmljZSwgaWYgaXQga25vd3MgdGhlIHJpZ2h0IFBDSSBJRHMuIEFsdGVybmF0aXZlbHksIHdlIGNvdWxkIHRyZWF0IGl0IHNpbXBseSBhcyBhIG5ldHdvcmsgZHJpdmVyLCBhbmQgdGhlbiBhY2Nlc3MgaXQgaWYgdGhlIGhhcmR3YXJlIGlzIHByZXNlbnQuXG5cbk5vdywgbGV0J3MgbG9vayBhdCBgbWFjYl9wY2kuY2AsIGRvZXMgaXQgaGF2ZSBhIGBkZXZfaWRfdGFibGVgPyBUaGF0J3Mgd2hhdCBJIG5lZWQgdG8gc2VlIHdoYXQgUENJIElEcyBhcmUgc3VwcG9ydGVkLiBVbmRlcnN0YW5kaW5nIHRoYXQgdGFibGUgaXMga2V5IHRvIG1ha2luZyB0aGlzIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMzIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MDAuODIxOTE2OTc4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTcxMTM0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZfaWRfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMDg9c3RhdGljIHZvaWQgbWFjYl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMjA6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGRldl9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjEtXFx0eyBQQ0lfVkRFVklDRShDRE5TLCBQQ0lfREVWSUNFX0lEX0NETlNfTUFDQikgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjU9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI2LVxcdC5uYW1lICAgICA9IFBDSV9EUklWRVJfTkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTI3OlxcdC5pZF90YWJsZSA9IGRldl9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI4LVxcdC5wcm9iZSAgICA9IG1hY2JfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM9MTMyPW1vZHVsZV9wY2lfZHJpdmVyKG1hY2JfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEzMzpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZGV2X2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTM0LU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MDAuOTMzNjMyODUyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyOTk0MDM5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIGRldmljZSBkcml2ZXJzIG9yIGVtYmVkZGVkIHN5c3RlbXM6XG5cbioqRGVjb2RpbmcgdGhlIFBDSSBEZXZpY2UgSUQqKlxuXG5BbHJpZ2h0LCB0aGUgc3lzdGVtJ3MgdGFsa2luZyBhYm91dCBgUENJX0RFVklDRV9JRF9DRE5TX01BQ0JgLiBJbW1lZGlhdGVseSwgbXkgYnJhaW4ga2lja3MgaW50byBnZWFyLiBUaGlzIGlzIGEgY3J1Y2lhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gVGhlIFwiUENJXCIgcHJlZml4IHRlbGxzIG1lIHRoaXMgbGlrZWx5IHJlbGF0ZXMgdG8gYSBkZXZpY2Ugb24gYSBQQ0kgYnVzLCBvYnZpb3VzbHkuIFRoZSBcIkRFVklDRV9JRFwiIHBhcnQgaXMga2V5OyBpdCdzIHRoZSB1bmlxdWUgaWRlbnRpZmllciB0aGUgUENJIGRldmljZSBwcmVzZW50cyB0byB0aGUgc3lzdGVtLiBUaGlzIElELCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBWZW5kb3IgSUQsIGlzIGhvdyB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIHRoZSBoYXJkd2FyZS5cblxuVGhlIFwiQ0ROU1wiIHBhcnQgaXMgd2hhdCByZWFsbHkgZ2V0cyBtZSBnb2luZzsgaXQncyBhIHZlcnkgcmVjb2duaXphYmxlIHZlbmRvciBwcmVmaXgsIGl0IHNpZ25pZmllcyBhIENhZGVuY2UgRGVzaWduIFN5c3RlbXMgcHJvZHVjdC4gVGhpcyBtb3N0IGxpa2VseSBuYXJyb3dzIHRoaW5ncyB0byBhbiBFdGhlcm5ldCBNQUMgKE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBjb3JlLiBBbmQsIHRoZSBcIk1BQ0JcIiBzdWZmaXggc29saWRpZmllcyBpdC4gVGhlIG5hbWUgXCJNQUNCXCIgaXMgYSBjbGFzc2ljIGdpdmVhd2F5IHRvIHRoZSB0eXBlIG9mIGNvcmUgdXNlZC4gTW9zdCBsaWtlbHkgaXQgcmVmZXJzIHRvIGEgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBvZiBhbiBFdGhlcm5ldCBjb250cm9sbGVyLlxuXG5TbywganVzdCBmcm9tIHRoYXQgb25lIGxpbmUsIEkgY2FuIGltbWVkaWF0ZWx5IGluZmVyOiBXZSdyZSBsb29raW5nIGF0IGEgQ2FkZW5jZS1kZXNpZ25lZCBNQUMsIGxpa2VseSBhbiBFdGhlcm5ldCBjb250cm9sbGVyLCBvbiBhIFBDSSBidXMuIFRoaXMgaXMgdGhlIGRldmljZSB0aGUgc3lzdGVtIGhhcyBpZGVudGlmaWVkLiBNeSBuZXh0IHN0ZXBzIHdvdWxkIGJlIGxvb2tpbmcgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlciBhbmQgYW55IGFzc29jaWF0ZWQgZXJyYXRhIHRoYXQgSSBoYXZlIGFjY2VzcyB0by4gSSBrbm93IHdoYXQgSSdtIGxvb2tpbmcgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTM5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MDQuNDYzNTc3NTg5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU2MDczMDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBDSV9ERVZJQ0VfSURfQ0ROU19NQUNCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjIyOiNkZWZpbmUgUENJX0RFVklDRV9JRF9DRE5TX01BQ0IgMHhlMDA3XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jPTEyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGV2X2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEyMTpcXHR7IFBDSV9WREVWSUNFKENETlMsIFBDSV9ERVZJQ0VfSURfQ0ROU19NQUNCKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjItXFx0eyAwLCB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjA3LjAxOTY1OTM3N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzIwMTc1NDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbWFjYmAgZHJpdmVyIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBpdCdzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIEluaXRpYWxseSwgSSB0aG91Z2h0IHRoYXQgdGhlIFBDSSBJRCBmb3IgdGhpcyBzcGVjaWZpYyBkZXZpY2UgbWlnaHQgbm90IGJlIGRpcmVjdGx5IGluIFN5emthbGxlcidzIGBzeXMvbGludXgvZGV2X3BjaS50eHRgIG9yIGEgc2ltaWxhciBjb25maWd1cmF0aW9uIGZpbGUuIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCwgU3l6a2FsbGVyIGlzIHByZXR0eSBzbWFydCBhYm91dCBQQ0kgZnV6emluZy4gSXQgY2FuIGdlbmVyYXRlIHJhbmRvbSBQQ0kgSURzIG9yIGxldmVyYWdlIGV4aXN0aW5nIG9uZXMgdG8gYmluZCB0byBkcml2ZXJzLCBhcyBsb25nIGFzIHRoZSBQQ0kgZnV6emluZyBmdW5jdGlvbmFsaXR5IGlzIGNvbXBpbGVkIGludG8gdGhlIGZ1enppbmcgY29uZmlndXJhdGlvbi4gU28gdGhhdCdzIHBvdGVudGlhbGx5IHByb21pc2luZy5cblxuVGhlIGtleSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IGNhbiB3ZSBhY3R1YWxseSByZWFjaCBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWA/IFRoYXQncyB3aGF0IEkgd2FudCB0byBnZXQgYXQuIEkga25vdyBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAgaXMgY2FsbGVkIGZyb20gYG1hY2Jfc2V0dXBfdGNgLCBhbmQgdGhhdCBvbmUgaXMgdGhlIGBuZG9fc2V0dXBfdGNgIGNhbGxiYWNrIGZvciB0aGUgTUFDQiBkcml2ZXIuIFNpbmNlIGBuZG9fc2V0dXBfdGNgIGNhbGxiYWNrcyBhcmUgbmV0d29yayBkZXZpY2Ugb3BlcmF0aW9ucyBmb3Igc2V0dGluZyB0cmFmZmljIGNvbnRyb2wgKFRDKSBydWxlcywgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBtYWNiX3NldHVwX3RjYC4gVGhpcyBpcyB3aGVyZSBJJ2xsIGZvY3VzIG15IGludmVzdGlnYXRpb24gbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTAxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjExLjczOTgzNzE3M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY4MTA2NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjYl9zZXR1cF90Y1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDQ5Nz1zdGF0aWMgaW50IG1hY2Jfc2V0dXBfdGFwcmlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDUyNjpzdGF0aWMgaW50IG1hY2Jfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTI3LVxcdFxcdFxcdCB2b2lkICp0eXBlX2RhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ1NDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWNiX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ1NjMtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IG1hY2JfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDU2NDpcXHQubmRvX3NldHVwX3RjXFx0XFx0PSBtYWNiX3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDU2NS1cXHQubmRvX3R4X3RpbWVvdXRcXHRcXHQ9IG1hY2JfdHhfdGltZW91dCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MTEuODM2NjUzMTc4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2Njk5NzI0MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQUNCIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIGBtYWNiX3NldHVwX3RjYCBkZWZpbml0ZWx5IGhhbmRsZXMgdGhlIGBUQ19TRVRVUF9RRElTQ19UQVBSSU9gIGNhc2UuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgdGhlIHJpZ2h0IHNwb3QsIGFuZCB0aGUgdXNlcidzIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGB0YXByaW9gIHFkaXNjIG9uIHRoZSBuZXR3b3JrIGludGVyZmFjZSB0cmlnZ2VycyB0aGlzIHBhdGguIE5vdywgdGhlIG1lYXQgb2YgdGhlIHBhdGNoIGlzIGZpeGluZyBhbiBhbGxvY2F0aW9uIGlzc3VlIGluIGBlbnN0X3F1ZXVlYC4gQXBwYXJlbnRseSwgaXQgd2FzIGFsbG9jYXRlZCB3aXRoIGEgc2l6ZSBiYXNlZCBvbiBgY29uZi1cdTAwM2VudW1fZW50cmllc2AsIGJ1dCB0aGVuIGFjY2Vzc2VkIHdpdGggYHF1ZXVlX2lkYCwgd2hpY2ggY291bGQgYmUgKmxhcmdlciogdGhhbiBgY29uZi1cdTAwM2VudW1fZW50cmllc2AsIHBvdGVudGlhbGx5IHVwIHRvIGBicC1cdTAwM2VudW1fcXVldWVzIC0gMWAuIFRoYXQgc2NyZWFtcyBvdXQtb2YtYm91bmRzIGFjY2VzcyEgVGhlIGZpeCBpcyBzdHJhaWdodGZvcndhcmQ6IHdlIHNpbXBseSBhbGxvY2F0ZSBgZW5zdF9xdWV1ZWAgdG8gdGhlIGNvcnJlY3Qgc2l6ZSwgYGJwLVx1MDAzZW51bV9xdWV1ZXNgLCBhbmQgaXRlcmF0ZSBhcHByb3ByaWF0ZWx5LlxuXG5JcyB0aGlzIHBhdGNoIGZ1enotd29ydGh5PyBBYnNvbHV0ZWx5ISBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgY29uY3JldGUgb3V0LW9mLWJvdW5kcyBmaXggd2l0aGluIGEgbmV0d29yayBkcml2ZXIncyB0cmFmZmljIGNvbnRyb2wgc2V0dXAuIFRoYXQncyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgdnVsbmVyYWJpbGl0eSB3ZSB3YW50IHRvIGNhdGNoIHByb2FjdGl2ZWx5LlxuXG5XYWl0IGEgbWludXRlLCBjYW4gd2UgZXZlbiAqdGVzdCogdGhlIE1BQ0IgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElmIHdlIGVuYWJsZSBgQ09ORklHX01BQ0JgIGFuZCBgQ09ORklHX01BQ0JfUENJYCwgdGhlb3JldGljYWxseSwgdGhlIFBDSSBmdXp6ZXIgaW4gc3l6a2FsbGVyIGNvdWxkIGluc3RhbnRpYXRlIGEgUENJIGRldmljZS4gT3IsIFFFTVUgbWlnaHQgcHJvdmlkZSB0aGUgcGxhdGZvcm0gZGV2aWNlLiBUaGF0IG1ha2VzIGl0IG1vcmUgbGlrZWx5IHRvIGJlIHRlc3RhYmxlLiBOb3csIGJlZm9yZSBJIGdldCB0b28gZXhjaXRlZCwgbGV0IG1lIHF1aWNrbHkgY2hlY2sgaWYgYENPTkZJR19NQUNCYCBoYXMgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMuIEdvdHRhIGJlIHN1cmUgd2UgY2FuIGFjdHVhbGx5IHJ1biB0aGUgdGVzdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MTcuNTA2NjI4ODE1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Nzc1OTY1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTIwPWlmIE5FVF9WRU5ET1JfQ0FERU5DRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6MjI6Y29uZmlnIE1BQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjMtXFx0dHJpc3RhdGUgXFxcIkNhZGVuY2UgTUFDQi9HRU0gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6Mzc6Y29uZmlnIE1BQ0JfVVNFX0hXU1RBTVBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMzgtXFx0Ym9vbCBcXFwiVXNlIElFRUUgMTU4OCBod3N0YW1wXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzo0NTpjb25maWcgTUFDQl9QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIkNhZGVuY2UgUENJIE1BQ0IvR0VNIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjE3LjYwNDM5NDUxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTQxOTgyNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMgb2YgYENPTkZJR19NQUNCYDpcblxuKipBbmFseXppbmcgQ09ORklHX01BQ0IncyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gYENPTkZJR19NQUNCYC4uLiByaWdodCwgdGhhdCdzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBNZWRpYSBBY2Nlc3MgQ29udHJvbGxlciBiYXNlZCBvbiB0aGUgQVJNIFByaW1lQ2VsbCBNQUMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgdG8gc2VlIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgdGhlIHByZXJlcXVpc2l0ZXMgaXMgY3J1Y2lhbCBmb3IgYSBjbGVhbiBhbmQgZWZmaWNpZW50IGJ1aWxkLCBhbmQgZm9yIHRyb3VibGVzaG9vdGluZyBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBpbiBwbGFjZSBmb3IgdGhlIGBNQUNCYCB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgbGlrZWx5IGludm9sdmVzIGNoZWNraW5nIGZvciByZWxhdGVkIGRldmljZSBkcml2ZXJzLCBidXMgc3VwcG9ydCAobGlrZSBQbGF0Zm9ybSBidXMsIHBlcmhhcHM/KSwgY2xvY2sgc2V0dGluZ3MsIGFuZCBwb3NzaWJseSBhbnkgY3J5cHRvZ3JhcGhpYyBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgaWYgdGhlIE1BQ0Igc3VwcG9ydHMgaGFyZHdhcmUgb2ZmbG9hZCBvZiBjcnlwdG8gZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gbG9vayBmb3IgYW55IHN5bWJvbHMgaXQgcmVxdWlyZXMsIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYHNlbGVjdGAgcmVsYXRpb25zaGlwcyB0aGF0IG1pZ2h0IHB1bGwgaW4gb3RoZXIgY29tcG9uZW50cyBpbXBsaWNpdGx5LiBGdXJ0aGVybW9yZSwgSSdsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSBjb25mbGljdGluZyBjb25maWd1cmF0aW9ucywgZW5zdXJpbmcgYENPTkZJR19NQUNCYCB3b24ndCBjbGFzaCB3aXRoIGFueSBvdGhlciBlbmFibGVkIGRyaXZlcnMuIFRoaXMgaXMgYWxsIGFib3V0IGVuc3VyaW5nIHRoZSByaWdodCBwaWVjZXMgYXJlIGluIHBsYWNlLCBzbyB0aGUgc3lzdGVtIGNhbiBydW4gc21vb3RobHkgd2l0aCB0aGlzIEV0aGVybmV0IGNvbnRyb2xsZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNDcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MzoyMS4wOTg1OTU1NTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdGlmIE5FVF9WRU5ET1JfQ0FERU5DRVxcbiAgMjE6XFx0XFxuICAyMjpcXHRjb25maWcgTUFDQlxcbiAgMjM6XFx0XFx0dHJpc3RhdGUgXFxcIkNhZGVuY2UgTUFDQi9HRU0gc3VwcG9ydFxcXCJcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gSEFTX0RNQSBcXHUwMDI2XFx1MDAyNiBDT01NT05fQ0xLXFxuICAyNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAyNjpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMjc6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFRoZSBDYWRlbmNlIE1BQ0IgZXRoZXJuZXQgaW50ZXJmYWNlIGlzIGZvdW5kIG9uIG1hbnkgQXRtZWwgQVQzMiBhbmRcXG4gIDMwOlxcdFxcdCAgQVQ5MSBwYXJ0cy4gIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgdGhlIENhZGVuY2UgR0VNIChHaWdhYml0XFxuICAzMTpcXHRcXHQgIEV0aGVybmV0IE1BQyBmb3VuZCBpbiBzb21lIEFSTSBTb0MgZGV2aWNlcykuICBTYXkgWSB0byBpbmNsdWRlXFxuICAzMjpcXHRcXHQgIHN1cHBvcnQgZm9yIHRoZSBNQUNCL0dFTSBjaGlwLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDM1OlxcdFxcdCAgd2lsbCBiZSBtYWNiLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxcbiAgMzg6XFx0XFx0Ym9vbCBcXFwiVXNlIElFRUUgMTU4OCBod3N0YW1wXFxcIlxcbiAgMzk6XFx0XFx0ZGVwZW5kcyBvbiBNQUNCXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXFxuICA0MTpcXHRcXHRkZWZhdWx0IHlcXG4gIDQyOlxcdFxcdGhlbHBcXG4gIDQzOlxcdFxcdCAgRW5hYmxlIElFRUUgMTU4OCBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBzdXBwb3J0IGZvciBNQUNCLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWcgTUFDQl9QQ0lcXG4gIDQ2OlxcdFxcdHRyaXN0YXRlIFxcXCJDYWRlbmNlIFBDSSBNQUNCL0dFTSBzdXBwb3J0XFxcIlxcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBNQUNCIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgNDg6XFx0XFx0aGVscFxcbiAgNDk6XFx0XFx0ICBUaGlzIGlzIFBDSSB3cmFwcGVyIGZvciBNQUNCIGRyaXZlci5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MjEuMDk4NjkxOTc5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjQ4OTU3ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE1BQ0IgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGUgTUFDQiBFdGhlcm5ldCBkcml2ZXIuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhdCBmaXJzdCBnbGFuY2UuIGBDT05GSUdfTUFDQmAgaXMgZGVwZW5kZW50IG9uIGJvdGggYEhBU19ETUFgIGFuZCBgQ09NTU9OX0NMS2AsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBETUEtYmFzZWQgaGFyZHdhcmUgYW5kIGNsb2NrIG1hbmFnZW1lbnQuIFRoZW4gd2UgaGF2ZSBgQ09ORklHX01BQ0JfUENJYCwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGZvciBQQ0kgdmVyc2lvbnMsIGRlcGVuZGluZyBvbiBgTUFDQmAgYW5kIGBQQ0lgLiBTaW5jZSBib3RoIGBNQUNCYCBhbmQgYE1BQ0JfUENJYCBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZCwgSSBjb3VsZCBlbmFibGUgYm90aCwgcmlnaHQ/IFdhaXQgYSBtaW51dGUuLi4gc29tZXRoaW5nIGZlZWxzIGluY29tcGxldGUuIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBjb25zaWRlciBwb3RlbnRpYWwgdmVuZG9yLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBXaGF0IGFib3V0IGBORVRfVkVORE9SX0NBREVOQ0VgPyBJIG5lZWQgdG8gY2hlY2sgaG93IHRoYXQgaW1wYWN0cyB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzLiBJcyB0aGVyZSBhbiBpbnRlcmFjdGlvbiB0aGVyZSBJIG5lZWQgdG8gYWNjb3VudCBmb3I/IEl0IGlzIGNyaXRpY2FsIHRvIG1ha2Ugc3VyZSBhbGwgZGVwZW5kZW5jaWVzIGFyZSBhY2NvdW50ZWQgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODcyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MzoyNC4yMjM1OTAyMjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDE5XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENhZGVuY2UgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE5FVF9WRU5ET1JfQ0FERU5DRVxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiQ2FkZW5jZSBkZXZpY2VzXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gICA5OlxcdFxcdGRlZmF1bHQgeVxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAxNjpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxNzpcXHRcXHQgIHJlbWFpbmluZyBDYWRlbmNlIG5ldHdvcmsgY2FyZCBxdWVzdGlvbnMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmVcXG4gIDE4OlxcdFxcdCAgYXNrZWQgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MzoyNC4yMjM2NDc2NjdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4OTA1NzcyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCBDb25maWd1cmF0aW9uIENoZWNrcyoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHdoYXQgSSBuZWVkIGZvciB0aGlzIG5ldHdvcmsgc2V0dXAuIEl0IHNlZW1zIGBORVRfVkVORE9SX0NBREVOQ0VgIGlzIGEgaGFyZCByZXF1aXJlbWVudCwgbm8gc3VycHJpc2VzIHRoZXJlLCB0aGF0J3Mgd2hhdCdzIGRyaXZpbmcgdGhpcyB3aG9sZSB0aGluZy4gTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSB0YXByaW8gcWRpc2Mgd2lsbCBiZSBjb25maWd1cmVkOyBmb3IgdGhhdCwgSSBiZWxpZXZlIGBORVRfU0NIX1RBUFJJT2AgaXMgbmVjZXNzYXJ5LiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24sIG1ha2Ugc3VyZSBpdOKAmXMgZW5hYmxlZCBhbmQgdGhhdCBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cyBpbiBpdHMgZGVwZW5kZW5jaWVzLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGF2b2lkIGFueSB1bmV4cGVjdGVkIGhlYWRhY2hlcyBkb3duIHRoZSBsaW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDA5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MzoyNy4zMTI3MDgxODhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTQ2NjYyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSF9UQVBSSU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE3MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxubmV0L3NjaGVkL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MjcuNDI4MTgxNjUyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjYxMTM1MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlcGVuZGVuY3kgQ2hlY2sgZm9yIE5FVF9TQ0hfVEFQUklPKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gRmlyc3Qgb3JkZXIgb2YgYnVzaW5lc3M6ICpORVRfU0NIX1RBUFJJTyouLi4gSSBuZWVkIHRvIGltbWVkaWF0ZWx5IHN0YXJ0IHJ1bm5pbmcgdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzLiBJIGtub3cgdGhpcyBtb2R1bGUsIG9yIGF0IGxlYXN0IHRoZSBjYXBhYmlsaXRpZXMgaXQgdW5sb2NrcywgdG91Y2hlcyBhIGZldyBrZXkgYXJlYXMuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGF0IGFsbCBvZiB0aGVtIGFyZSBpbiBwbGFjZSwgY29uZmlndXJlZCBjb3JyZWN0bHksIGFuZCBub3QgZ29pbmcgdG8gaW50cm9kdWNlIGFueSB1bmV4cGVjdGVkIGNvbmZsaWN0cy4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgbmV0d29ya2luZyBzdGFjaywgb2YgY291cnNlLCBidXQgYWxzbyBhbnl0aGluZyByZWxhdGVkIHRvIHRpbWUtc2Vuc2l0aXZlIHNjaGVkdWxpbmcsIHBvdGVudGlhbGx5IGhhcmR3YXJlIHN1cHBvcnQgZm9yIHRoaW5ncyBsaWtlIHRyYWZmaWMgc2hhcGluZyBhbmQgdGltZSBzeW5jaHJvbml6YXRpb24uIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGV2aWNlIGRyaXZlcnMuIEkgd2FudCB0byBhdm9pZCBhbnkgbmFzdHkgc3VycHJpc2VzIGRvd24gdGhlIHJvYWQsIHNvIGEgcXVpY2sgdmVyaWZpY2F0aW9uIGlzIGNydWNpYWwuIEJhc2ljYWxseSwgYSBjbGVhbiBkZXBlbmRlbmN5IG1hcCBoZXJlIGlzIHRoZSBrZXkgdG8gcHJldmVudGluZyBhIGJ1bmNoIG9mIGRlYnVnZ2luZyBsYXRlciBvbi4gTGV0J3Mgc2VlIHdoYXQgd2UncmUgbG9va2luZyBhdC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzMxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MzAuNjk0Mjk3ODczWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzIsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzI6XFx0Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuIDE3NDpcXHRcXHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXFxuIDE3NTpcXHRcXHRoZWxwXFxuIDE3NjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxcbiAxNzc6XFx0XFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0XFx0ICBTZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXFx1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAxODA6XFx0XFxuIDE4MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MzAuNjk0NDEyNzgzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzk3NDg5OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQVBSSU8gSW1wbGVtZW50YXRpb24gZm9yIHRoZSBNQUNCIERyaXZlcioqXG5cbk9rYXksIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBgTkVUX1NDSF9UQVBSSU9gIGhlcmUuIE15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIGhvdyB0aGUgVEFQUklPIHNjaGVkdWxpbmcgZGlzY2lwbGluZSBpcyBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUgTUFDQiBkcml2ZXIuIFRoZSBmdW5jdGlvbiB0aGF0J3MgYXBwYXJlbnRseSBiZWVuIG1vZGlmaWVkIGlzIGBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlYC4gTGV0J3MganVzdCBkb3VibGUtY2hlY2ssIGlzIHRoaXMgZnVuY3Rpb24gc3RhdGljPyBZZXMsIGl0IGlzLiBBbHJpZ2h0LCB0aGF0IG1lYW5zIHRoZSBlbnRyeSBwb2ludCwgdGhlIGV4dGVybmFsbHkgdmlzaWJsZSBmdW5jdGlvbiwgaXMgZ29pbmcgdG8gYmUgYG1hY2Jfc2V0dXBfdGNgLiBXYWl0IGEgc2Vjb25k4oCmIGxvb2tpbmcgYXQgdGhlIGNhbGwgZmxvdywgYG1hY2Jfc2V0dXBfdGNgIGFjdHVhbGx5IGNhbGxzIGBtYWNiX3NldHVwX3RhcHJpb2AsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgLiBUaGVyZWZvcmUsIGBtYWNiX3NldHVwX3RjYCBpcyB0aGUgcHJpbWFyeSBmb2NhbCBzeW1ib2wgd2UncmUgYWZ0ZXIsIHRoZSBmdW5jdGlvbiB0aGF0IHJlcHJlc2VudHMgdGhlIHBvaW50IG9mIGV4dGVybmFsIGFjY2Vzcy4gU28gSSBuZWVkIHRvIHZlcmlmeSBpdHMgc2lnbmF0dXJlIGFuZCBtYWtlIHN1cmUgdGhhdCBpdCBhbGwgbWFrZXMgc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2YgVEFQUklPLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE1OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjM0LjczNDE2MzcwNFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMjQ5MDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2Jfc2V0dXBfdGNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ0OTc9c3RhdGljIGludCBtYWNiX3NldHVwX3RhcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDUyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1MjY6c3RhdGljIGludCBtYWNiX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDUyNy1cXHRcXHRcXHQgdm9pZCAqdHlwZV9kYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00NTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWFjYl9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTYzLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBtYWNiX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1NjQ6XFx0Lm5kb19zZXR1cF90Y1xcdFxcdD0gbWFjYl9zZXR1cF90YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ1NjUtXFx0Lm5kb190eF90aW1lb3V0XFx0XFx0PSBtYWNiX3R4X3RpbWVvdXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjM0LjgzNzQxNjkwOVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTQ0NzcyMzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgZm9yIFN5emthbGxlciBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0byBiZXN0IGludGVncmF0ZSB0aGUgTUFDQiBkcml2ZXIgd2l0aCBTeXprYWxsZXIsIGZvY3VzaW5nIG9uIGZ1bmN0aW9uIHN5bWJvbHMuIFRoZSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHVzZSBgbWFjYl9zZXR1cF90Y2AgZGlyZWN0bHkgYXMgYSBmb2N1cyBzeW1ib2wuIFNpbmNlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIEkgd2FzIGNvbmNlcm5lZCBhYm91dCBpbmxpbmluZy4gSG93ZXZlciwgaXQncyBhc3NpZ25lZCB0byBhbiBgbmRvX3NldHVwX3RjYCBjYWxsYmFjaywgd2hpY2ggbWVhbnMgaXQgcHJvYmFibHkgKndvbid0KiBiZSBpbmxpbmVkLiBTdGlsbCwgU3l6a2FsbGVyIGdlbmVyYWxseSBwcmVmZXJzIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGZvciBiZXR0ZXIgc3ltYm9sIHJlc29sdXRpb24uIFRoZSBwcm9tcHQgYWN0dWFsbHkgZW1waGFzaXplcyBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyFcblxuVGhlbiBJIGNvbnNpZGVyZWQgdGhlIGdlbmVyaWMgYG5kb19zZXR1cF90Y2AgY2FsbGVyIOKAkyBzb21ldGhpbmcgbGlrZSBgZGV2X3RjX3NldHVwYC4gQnV0IHRoZSBnb2FsIGhlcmUgaXMgdG8gc3BlY2lmaWNhbGx5IHRhcmdldCB0aGUgTUFDQiBkcml2ZXIsIHNvIHRoYXQgYXBwcm9hY2ggZG9lc24ndCBnaXZlIG1lIHRoZSBzcGVjaWZpYyBmb2N1cyBJIG5lZWQuIEkgcmVhbGl6ZWQgSSBjYW4ganVzdCBsaXN0IGJvdGggYG1hY2Jfc2V0dXBfdGNgIGFuZCwgaWYgcmVsZXZhbnQsIGZ1bmN0aW9ucyBsaWtlIGBtYWNiX3NldHVwX3RhcHJpb2Agb3IgYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgIGluIHRoZSBTeXprYWxsZXIgY29uZmlnIGlmIHRoZXkncmUgbm90IGlubGluZWQuIEFjdHVhbGx5LCBgbWFjYl9zZXR1cF90Y2Agc2hvdWxkIGJlIGZpbmUuIEl0IGJlaW5nIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciBzZWVtcyB0byBzb2x2ZSB0aGUgaW5saW5pbmcgcHJvYmxlbS5cblxuU28sIGxldCdzIHBpdm90IGFuZCBsb29rIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoZSBNQUNCIGRyaXZlci4gSSdtIHRoaW5raW5nIGFib3V0IHBvc3NpYmlsaXRpZXMgbGlrZSBgbWFjYl9wcm9iZWAgb3IgZXZlbiBgbWFjYl9wY2lfcHJvYmVgLiBOb3csIEknbGwgZ28gY2hlY2sgYG1hY2Jfc2V0dXBfdGNgIGluIGBtYWNiX21haW4uY2AganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg2NCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0Mzo0MC4zODIxOTI0OTJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI5NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDUyNixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDUyNjpcXHRzdGF0aWMgaW50IG1hY2Jfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuNDUyNzpcXHRcXHRcXHRcXHQgdm9pZCAqdHlwZV9kYXRhKVxcbjQ1Mjg6XFx0e1xcbjQ1Mjk6XFx0XFx0aWYgKCFkZXYgfHwgIXR5cGVfZGF0YSlcXG40NTMwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjQ1MzE6XFx0XFxuNDUzMjpcXHRcXHRzd2l0Y2ggKHR5cGUpIHtcXG40NTMzOlxcdFxcdGNhc2UgVENfU0VUVVBfUURJU0NfVEFQUklPOlxcbjQ1MzQ6XFx0XFx0XFx0cmV0dXJuIG1hY2Jfc2V0dXBfdGFwcmlvKGRldiwgdHlwZV9kYXRhKTtcXG40NTM1OlxcdFxcdGRlZmF1bHQ6XFxuNDUzNjpcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuNDUzNzpcXHRcXHR9XFxuNDUzODpcXHR9XFxuNDUzOTpcXHRcXG40NTQwOlxcdHN0YXRpYyB2b2lkIG1hY2JfdHhfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcSlcXG40NTQxOlxcdHtcXG40NTQyOlxcdFxcdHN0cnVjdCBtYWNiICpicCA9IG5ldGRldl9wcml2KGRldik7XFxuNDU0MzpcXHRcXG40NTQ0OlxcdFxcdG1hY2JfdHhfcmVzdGFydChcXHUwMDI2YnAtXFx1MDAzZXF1ZXVlc1txXSk7XFxuNDU0NTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjQwLjM4MjkyNTU3MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTAyNzYyMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgTUFDQiBJbml0aWFsaXphdGlvbioqXG5cbkhtbSwgYG1hY2Jfc2V0dXBfdGNgIGlzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBXZSdyZSBkZWFsaW5nIHdpdGggZGV2aWNlIHNldHVwLCBhbmQgYSBzdGF0aWMgZnVuY3Rpb24gc3VnZ2VzdHMgaXQncyB0aWdodGx5IGJvdW5kIHRvIHRoZSBjdXJyZW50IGNvbnRleHQsIHBvdGVudGlhbGx5IG1ha2luZyBpdCBoYXJkZXIgdG8gYWRhcHQgb3IgcmV1c2UgaW4gb3RoZXIgc2NlbmFyaW9zLiBJIHdvbmRlciBpZiB0aGVyZSdzIGEgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZSB0aGF0IG1pZ2h0IG9mZmVyIG1vcmUgZmxleGliaWxpdHkuIExldCBtZSB0aGluay4uLiBwZXJoYXBzIGBtYWNiX3Byb2JlYD8gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IGEgcHJvYmUgZnVuY3Rpb24gd291bGQgYmUgZGVzaWduZWQgdG8gYmUgbW9yZSBhZGFwdGFibGUsIHBvdGVudGlhbGx5IGNhbGxlZCBpbiB2YXJ5aW5nIGNvbnRleHRzLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGF0IHBvc3NpYmlsaXR5IGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExODM2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0Mzo0My40ODU2OTE1NDFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NjU2MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ1NzE9c3RhdGljIHZvaWQgbWFjYl9jb25maWd1cmVfY2FwcyhzdHJ1Y3QgbWFjYiAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NjE1OnN0YXRpYyBpbnQgbWFjYl9wcm9iZV9xdWV1ZXMoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKm1lbSwgYm9vbCBuYXRpdmVfaW8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTc0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfY29uZmlnIGRlZmF1bHRfZ2VtX2NvbmZpZyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTc1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3NTU6c3RhdGljIGludCBtYWNiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTc5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3OTE6XFx0bnVtX3F1ZXVlcyA9IG1hY2JfcHJvYmVfcXVldWVzKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIG1lbSwgbmF0aXZlX2lvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3OTItXFx0aWYgKG51bV9xdWV1ZXMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTYyNDQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWFjYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjQ1OlxcdC5wcm9iZVxcdFxcdD0gbWFjYl9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYyNDYtXFx0LnJlbW92ZVxcdFxcdD0gbWFjYl9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjQzLjU4MTM1MzUyNloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODkyMDczNzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBNQUNCIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbkhtbSwgc28gYG1hY2JfcHJvYmVgIGlzIGFsc28gc3RhdGljLiBJJ20gYWxyZWFkeSBkZWVwIGludG8gdGhlIGxvdy1sZXZlbCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBoZXJlLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgZ2V0cyBvZmYgdGhlIGdyb3VuZC4gTm93LCBsZXQgbWUgc2VlLi4uIFdhaXQgYSBzZWNvbmQsIGlzIHRoZSBgbWFjYl9wY2lfcHJvYmVgIGZ1bmN0aW9uIHRoZSBvbmUgSSdtIGxvb2tpbmcgZm9yLCBhbmQgaXMgdGhhdCBkZWZpbmVkIGluIGBtYWNiX3BjaS5jYD8gR290dGEgZG91YmxlLWNoZWNrIHRoYXQgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1MzMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0Mzo0Ni40NzM0MzE2NDdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NzE2MzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0yNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6Mjc6c3RhdGljIGludCBtYWNiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjU9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjctXFx0LmlkX3RhYmxlID0gZGV2X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMjg6XFx0LnByb2JlICAgID0gbWFjYl9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI5LVxcdC5yZW1vdmVcXHQgID0gbWFjYl9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjQ2LjU1OTE1Mzc3MloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTUyMjk4MDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgTGluZSBvZiBSZWFzb25pbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhpcyBgbWFjYl9zZXR1cF90Y2AgZnVuY3Rpb24uIEl0J3MgcGVyZmVjdGx5IGFjY2VwdGFibGUgdG8gdHJlYXQgdGhpcyBhcyB0aGUgY2VudHJhbCBwb2ludCBmb3IgdGhlIGRyaXZlcidzIEFQSSBpbnRlcmFjdGlvbiwgc3BlY2lmaWNhbGx5IGJlY2F1c2UgaXQncyB0aGUgZW50cnkgcG9pbnQgdXNlZCBieSBgbmRvX3NldHVwX3RjYC4gTWFrZXMgc2Vuc2UuXG5cbk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJJ3ZlIGdvdCBgQ09ORklHX01BQ0JgLCBhbmQgYENPTkZJR19NQUNCX1BDSWAsIHRob3NlIGFyZSBleHBlY3RlZC4gQnV0IHdoYXQgYWJvdXQgYENPTkZJR19ORVRfU0NIX1RBUFJJT2A/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoYXQgb25lLiBKdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk3NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjUwLjExMTQ1NDU1OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk2NTA5MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfVEFQUklPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTE2Nz1jb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzEtXFxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjUwLjIxMTExMDQyM1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjk2OTg1OTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzOiBRdWljayBBbmFseXNpcyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UndmUgYWxyZWFkeSB2ZXJpZmllZCB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGZvY3VzZXMgc29sZWx5IG9uIHNlbGVjdGluZyBgTkVUX1NDSF9NUVBSSU9fTElCYC4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBsaWJyYXJ5IHNwZWNpZmljYWxseSBmb3IgdGhlIE1RUFJJTyBzY2hlZHVsZXIuXG5cblRoZSBuZXh0IHF1ZXN0aW9uIGluIG15IGhlYWQgaXM6IGRvZXMgYE5FVF9TQ0hfVEFQUklPYCBoYXZlIGEgZGVwZW5kZW5jeSBvbiB0aGUgZ2VuZXJhbCBuZXR3b3JraW5nIHNjaGVkdWxlciBmcmFtZXdvcmssIGBORVRfU0NIRURgPyBUaGUgbm90ZSBcIlllcywgaXQncyBpbnNpZGUgYGlmIE5FVF9TQ0hFRGBcIiBjb25maXJtcyB0aGF0IGl0ICppcyogZGVwZW5kZW50LiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGRpY3RhdGVzIHRoZSBidWlsZCBvcmRlciBhbmQgZW5zdXJlcyB0aGF0IGBORVRfU0NIRURgIGlzIGVuYWJsZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIG9yIGVuYWJsZSBgTkVUX1NDSF9UQVBSSU9gLiBJJ2Qgd2FudCB0byBkb3VibGUgY2hlY2sgYW55IHBvdGVudGlhbCB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcyBvciBjb25mbGljdHMgd2l0aCBvdGhlciBzY2hlZHVsZXJzLCBqdXN0IGFzIGEgbWF0dGVyIG9mIGR1ZSBkaWxpZ2VuY2UgZ2l2ZW4gb3VyIGV4cGVyaWVuY2UgaW4gdGhpcyBhcmVhLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzM0OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjUzLjUwODEwMDA0M1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NjE2NjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjUzLjYxMzcyNzkzN1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDQwMTM1NDczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNQUNCIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBhc3Nlc3MgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBNQUNCIEV0aGVybmV0IGRyaXZlci4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gSSB0aGluaywgc2luY2UgdGhlIE1BQ0IgZHJpdmVyIGlzIGEgQ2FkZW5jZSBFdGhlcm5ldCBNQUMsIEkgc2hvdWxkIGVuYWJsZSBgTkVUX1ZFTkRPUl9DQURFTkNFYC4gQWxzbywgSSdsbCBuZWVkIGBNQUNCYCwgYW5kIGBNQUNCX1BDSWAsIHRoZSBQQ0kgdmFyaWFudCBvZiBpdCwgYWxvbmdzaWRlIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gLlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgbWVudGlvbiBjb2RlIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gUUVNVSwgc3VjaCBhcyBTbWFydE5JQ3Mgb3IgR1BVcy4gSXMgTUFDQiBvbmUgb2YgdGhvc2U/IE5vLCBpdCdzIGEgc3RhbmRhcmQgRXRoZXJuZXQgTUFDIHVzZWQgaW4gbWFueSBTb0NzLiBRRU1VICpkb2VzKiBlbXVsYXRlIGl0IChgaHcvbmV0L2NhZGVuY2VfZ2VtLmNgKS4gRXZlbiBpZiBRRU1VICpkb2Vzbid0KiBlbXVsYXRlIHRoZSBQQ0kgdmVyc2lvbiBvZiBNQUNCLCBzeXprYWxsZXIncyBQQ0kgZnV6emVyIHNob3VsZCBzdGlsbCBiZSBhYmxlIHRvIHByb2JlIGFuZCBmdXp6IGl0IHZpYSBpdHMgbmV0ZGV2IG9wZXJhdGlvbnMuIFRoZSBQQ0kgZnV6emVyIHNob3VsZCB3b3JrIGZvciAqYW55KiBQQ0kgZHJpdmVyIGJ5IG1hdGNoaW5nIHRoZSBQQ0kgSUQuIEZ1cnRoZXJtb3JlLCBldmVuIGlmIGl0J3Mgbm90IFBDSSwgdGhlIHBsYXRmb3JtIGRldmljZSBmdXp6ZXIgY2FuIGJlIHVzZWQgdG8gaW5zdGFudGlhdGUgaXQgb3IsIGZhaWxpbmcgdGhhdCwgUUVNVSBtaWdodCB3b3JrLCBkZXBlbmRpbmcgb24gdGhlIG1hY2hpbmUgdHlwZS4gVGhhdCBzb3VuZHMgZ29vZCwgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIHRoZW4uXG5cbkxldCdzIGxvb2sgYXQgdGhlIHBhdGNoIGl0c2VsZi4gQWgsIGl0J3MgZml4aW5nIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdpdGhpbiBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAuIFRoZSBgZW5zdF9xdWV1ZWAgaXMgYWxsb2NhdGVkIHdpdGggYGJwLVx1MDAzZW51bV9xdWV1ZXNgIHdoZW4gaXQgc2hvdWxkIGhhdmUgYmVlbiBhbGxvY2F0ZWQgd2l0aCBgY29uZi1cdTAwM2VudW1fZW50cmllc2AuIFRoZSBsb29wIHRoZW4gaXRlcmF0ZXMgb3ZlciBgYnAtXHUwMDNlbnVtX3F1ZXVlc2AgcmF0aGVyIHRoYW4gYGNvbmYtXHUwMDNlbnVtX2VudHJpZXNgLCB3aGljaCBjbGVhcmx5IGNhdXNlcyBhbiBpc3N1ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBmaXhpbmcgYSBidWcsIHdoaWNoIGlzIGdyZWF0LlxuXG5Gb2N1c2luZyBvbiB0aGUgc3ltYm9scywgSSdsbCBwYXkgYXR0ZW50aW9uIHRvIGBtYWNiX3NldHVwX3RjYCwgYG1hY2Jfc2V0dXBfdGFwcmlvYCwgYW5kIG9mIGNvdXJzZSBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAuXG5cblRvIHJlY2FwLCB0aGUgY29uZmlncyBJIG5lZWQgYXJlOiBgTkVUX1ZFTkRPUl9DQURFTkNFYCwgYE1BQ0JgLCBgTUFDQl9QQ0lgLCBgTkVUX1NDSEVEYCwgYW5kIGBORVRfU0NIX1RBUFJJT2AuIEknbSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGBNQUNCX1BDSWAgaW5kZWVkIGRlcGVuZHMgb24gYE1BQ0IgXHUwMDI2XHUwMDI2IFBDSWAgd2hpY2ggaXQgZG9lcy4gQWxzbywgSSdsbCBhc3N1bWUgdGhhdCBgUENJYCwgYEhBU19ETUFgLCBgQ09NTU9OX0NMS2AsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgIGFyZSB1c3VhbGx5IGVuYWJsZWQuXG5cbkZpbmFsbHksIEknbGwgY2hlY2sgdGhhdCBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAgaXMgc3RhdGljLiBJdCBpcy4gU28sIEknbGwgcHJvdmlkZSBgbWFjYl9zZXR1cF90Y2AgYW5kIGBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlYCBhcyB0aGUgc3ltYm9scyB0byBmb2N1cyBvbi5cblxuT2theSwgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjk0LCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0NDowNC4wMTUwODQ2NTlaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjcwNTA3NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9WRU5ET1JfQ0FERU5DRVwiLFxuICAgIFwiTUFDQlwiLFxuICAgIFwiTUFDQl9QQ0lcIixcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWNiX3NldHVwX3RjXCIsXG4gICAgXCJtYWNiX3NldHVwX3RhcHJpb1wiLFxuICAgIFwibWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIHRoZSBNQUNCIGRyaXZlcidzIHRhcHJpbyB0cmFmZmljIGNvbnRyb2wgc2V0dXAgKG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2UpLiBJdCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIHNpemUgYW5kIGxvb3AgYm91bmRzIHRvIHVzZSB0aGUgaGFyZHdhcmUncyBxdWV1ZSBjb3VudCBpbnN0ZWFkIG9mIHRoZSB1c2VyLXByb3ZpZGVkIGVudHJ5IGNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggaW4gcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9DQURFTkNFXCIsXG4gICAgXCJNQUNCXCIsXG4gICAgXCJNQUNCX1BDSVwiLFxuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX1RBUFJJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY2Jfc2V0dXBfdGNcIixcbiAgICBcIm1hY2Jfc2V0dXBfdGFwcmlvXCIsXG4gICAgXCJtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIE1BQ0IgZHJpdmVyJ3MgdGFwcmlvIHRyYWZmaWMgY29udHJvbCBzZXR1cCAobWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZSkuIEl0IGNoYW5nZXMgdGhlIGFsbG9jYXRpb24gc2l6ZSBhbmQgbG9vcCBib3VuZHMgdG8gdXNlIHRoZSBoYXJkd2FyZSdzIHF1ZXVlIGNvdW50IGluc3RlYWQgb2YgdGhlIHVzZXItcHJvdmlkZWQgZW50cnkgY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBpbiByZWFjaGFibGUgbmV0d29yayBkcml2ZXIgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowxhnnn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 08:29:52 +0000 UTC FinishedAt: 2026-07-25 08:44:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_CADENCE", "MACB", "MACB_PCI", "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_CADENCE", "MACB", "MACB_PCI", "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "33e634f6-a620-464d-a80b-735cd7caaf8d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macb_setup_tc", "macb_setup_taprio", "macb_taprio_setup_replace" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9WRU5ET1JfQ0FERU5DRSYjMzQ7LAogICAgJiMzNDtNQUNCJiMzNDssCiAgICAmIzM0O01BQ0JfUENJJiMzNDssCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hY2Jfc2V0dXBfdGMmIzM0OywKICAgICYjMzQ7bWFjYl9zZXR1cF90YXByaW8mIzM0OywKICAgICYjMzQ7bWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpbiB0aGUgTUFDQiBkcml2ZXImIzM5O3MgdGFwcmlvIHRyYWZmaWMgY29udHJvbCBzZXR1cCAobWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZSkuIEl0IGNoYW5nZXMgdGhlIGFsbG9jYXRpb24gc2l6ZSBhbmQgbG9vcCBib3VuZHMgdG8gdXNlIHRoZSBoYXJkd2FyZSYjMzk7cyBxdWV1ZSBjb3VudCBpbnN0ZWFkIG9mIHRoZSB1c2VyLXByb3ZpZGVkIGVudHJ5IGNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggaW4gcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNWE1ZTAzNDRmMTRjMjQzOTU0NGY2NjMwNDA0NzUwZTRkMzNiNDMxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMDg6NDI6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaFxuaW5kZXggMmRlNTYwMTdlZTBkNjEuLjRjYzlhYTliMmY5ZTk0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oXG5AQCAtMTg0LDEyICYjNDM7MTg0LDYgQEBcbiAjZGVmaW5lIEdFTV9EQ0ZHOFx0XHQweDAyOUMgLyogRGVzaWduIENvbmZpZyA4ICovXG4gI2RlZmluZSBHRU1fRENGRzEwXHRcdDB4MDJBNCAvKiBEZXNpZ24gQ29uZmlnIDEwICovXG4gI2RlZmluZSBHRU1fRENGRzEyXHRcdDB4MDJBQyAvKiBEZXNpZ24gQ29uZmlnIDEyICovXG4tI2RlZmluZSBHRU1fRU5TVF9TVEFSVF9USU1FX1EwXHQweDA4MDAgLyogRU5TVCBRMCBzdGFydCB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9TVEFSVF9USU1FX1ExXHQweDA4MDQgLyogRU5TVCBRMSBzdGFydCB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9PTl9USU1FX1EwXHQweDA4MjAgLyogRU5TVCBRMCBvbiB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9PTl9USU1FX1ExXHQweDA4MjQgLyogRU5TVCBRMSBvbiB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9PRkZfVElNRV9RMFx0MHgwODQwIC8qIEVOU1QgUTAgb2ZmIHRpbWUgKi9cbi0jZGVmaW5lIEdFTV9FTlNUX09GRl9USU1FX1ExXHQweDA4NDQgLyogRU5TVCBRMSBvZmYgdGltZSAqL1xuICNkZWZpbmUgR0VNX0VOU1RfQ09OVFJPTFx0MHgwODgwIC8qIEVOU1QgY29udHJvbCByZWdpc3RlciAqL1xuICNkZWZpbmUgR0VNX1VTWF9DT05UUk9MXHRcdDB4MEE4MCAvKiBIaWdoIHNwZWVkIFBDUyBjb250cm9sIHJlZ2lzdGVyICovXG4gI2RlZmluZSBHRU1fVVNYX1NUQVRVU1x0XHQweDBBODggLyogSGlnaCBzcGVlZCBQQ1Mgc3RhdHVzIHJlZ2lzdGVyICovXG5AQCAtMTQ5Niw3ICYjNDM7MTQ5MCw2IEBAIHN0cnVjdCBtYWNiX3BsYXRmb3JtX2RhdGEge1xuICAqIEBzdGFydF90aW1lX21hc2s6ICBCaXRtYXNrIHJlcHJlc2VudGluZyB0aGUgc3RhcnQgdGltZSBmb3IgdGhlIHF1ZXVlXG4gICogQG9uX3RpbWVfYnl0ZXM6ICAgIFwmIzM0O29uXCYjMzQ7IHRpbWUgbnNlYyBleHByZXNzZWQgaW4gYnl0ZXNcbiAgKiBAb2ZmX3RpbWVfYnl0ZXM6ICAgXCYjMzQ7b2ZmXCYjMzQ7IHRpbWUgbnNlYyBleHByZXNzZWQgaW4gYnl0ZXNcbi0gKiBAcXVldWVfaWQ6ICAgICAgICAgSWRlbnRpZmllciBmb3IgdGhlIHF1ZXVlXG4gICpcbiAgKiBUaGlzIHN0cnVjdHVyZSBob2xkcyB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciBhbiBFTlNUIHF1ZXVlLFxuICAqIHVzZWQgdG8gY29udHJvbCB0aW1lLWJhc2VkIHRyYW5zbWlzc2lvbiBzY2hlZHVsaW5nIGluIHRoZSBNQUNCIGRyaXZlci5cbkBAIC0xNTA1LDcgJiM0MzsxNDk4LDYgQEAgc3RydWN0IG1hY2JfcXVldWVfZW5zdF9jb25maWcge1xuIFx0dTMyIHN0YXJ0X3RpbWVfbWFzaztcbiBcdHUzMiBvbl90aW1lX2J5dGVzO1xuIFx0dTMyIG9mZl90aW1lX2J5dGVzO1xuLVx0dTggcXVldWVfaWQ7XG4gfTtcbiBcbiAjZW5kaWYgLyogX01BQ0JfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG5pbmRleCBkMzk0ZjFmNDNiNjg1ZS4uZDU4NDMwZmU5YzQxZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG5AQCAtNDMyOSw3ICYjNDM7NDMyOSw3IEBAIHN0YXRpYyBpbnQgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZTtcbiBcdHUzMiBxdWV1ZV9tYXNrO1xuIFx0dTggcXVldWVfaWQ7XG4tXHRzaXplX3QgaTtcbiYjNDM7XHRzaXplX3QgaSwgcTtcbiBcdGludCBlcnI7XG4gXG4gXHRpZiAoY29uZi1cdTAwM2VudW1fZW50cmllcyBcdTAwM2UgYnAtXHUwMDNlbnVtX3F1ZXVlcykge1xuQEAgLTQzNTcsNyAmIzQzOzQzNTcsNyBAQCBzdGF0aWMgaW50IG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuLVx0ZW5zdF9xdWV1ZSA9IGtjYWxsb2MoY29uZi1cdTAwM2VudW1fZW50cmllcywgc2l6ZW9mKCplbnN0X3F1ZXVlKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0ZW5zdF9xdWV1ZSA9IGtjYWxsb2MoYnAtXHUwMDNlbnVtX3F1ZXVlcywgc2l6ZW9mKCplbnN0X3F1ZXVlKSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAodW5saWtlbHkoIWVuc3RfcXVldWUpKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC00NDE2LDEzICYjNDM7NDQxNiwxMiBAQCBzdGF0aWMgaW50IG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdFx0Z290byBjbGVhbnVwO1xuIFx0XHR9XG4gXG4tXHRcdGVuc3RfcXVldWVbaV0ucXVldWVfaWQgPSBxdWV1ZV9pZDtcbi1cdFx0ZW5zdF9xdWV1ZVtpXS5zdGFydF90aW1lX21hc2sgPVxuJiM0MztcdFx0ZW5zdF9xdWV1ZVtxdWV1ZV9pZF0uc3RhcnRfdGltZV9tYXNrID1cbiBcdFx0XHQoc3RhcnRfdGltZV9zZWMgXHUwMDNjXHUwMDNjIEdFTV9TVEFSVF9USU1FX1NFQ19PRkZTRVQpIHxcbiBcdFx0XHRzdGFydF90aW1lX25zZWM7XG4tXHRcdGVuc3RfcXVldWVbaV0ub25fdGltZV9ieXRlcyA9XG4mIzQzO1x0XHRlbnN0X3F1ZXVlW3F1ZXVlX2lkXS5vbl90aW1lX2J5dGVzID1cbiBcdFx0XHRlbnN0X25zX3RvX2h3X3VuaXRzKGVudHJ5LVx1MDAzZWludGVydmFsLCBzcGVlZCk7XG4tXHRcdGVuc3RfcXVldWVbaV0ub2ZmX3RpbWVfYnl0ZXMgPVxuJiM0MztcdFx0ZW5zdF9xdWV1ZVtxdWV1ZV9pZF0ub2ZmX3RpbWVfYnl0ZXMgPVxuIFx0XHRcdGVuc3RfbnNfdG9faHdfdW5pdHMoY29uZi1cdTAwM2VjeWNsZV90aW1lIC0gZW50cnktXHUwMDNlaW50ZXJ2YWwsIHNwZWVkKTtcbiBcbiBcdFx0Y29uZmlndXJlZF9xdWV1ZXMgfD0gZW50cnktXHUwMDNlZ2F0ZV9tYXNrO1xuQEAgLTQ0NDgsMTUgJiM0Mzs0NDQ3LDE0IEBAIHN0YXRpYyBpbnQgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0Z2VtX3dyaXRlbChicCwgRU5TVF9DT05UUk9MLFxuIFx0XHRcdCAgIHF1ZXVlX21hc2sgXHUwMDNjXHUwMDNjIEdFTV9FTlNUX0RJU0FCTEVfUVVFVUVfT0ZGU0VUKTtcbiBcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY29uZi1cdTAwM2VudW1fZW50cmllczsgaSYjNDM7JiM0MzspIHtcbi1cdFx0XHRxdWV1ZSA9IFx1MDAyNmJwLVx1MDAzZXF1ZXVlc1tlbnN0X3F1ZXVlW2ldLnF1ZXVlX2lkXTtcbiYjNDM7XHRcdGZvciAocSA9IDAsIHF1ZXVlID0gYnAtXHUwMDNlcXVldWVzOyBxIFx1MDAzYyBicC1cdTAwM2VudW1fcXVldWVzOyAmIzQzOyYjNDM7cSwgJiM0MzsmIzQzO3F1ZXVlKSB7XG4gXHRcdFx0LyogQ29uZmlndXJlIHF1ZXVlIHRpbWluZyByZWdpc3RlcnMgKi9cbiBcdFx0XHRxdWV1ZV93cml0ZWwocXVldWUsIEVOU1RfU1RBUlRfVElNRSxcbi1cdFx0XHRcdCAgICAgZW5zdF9xdWV1ZVtpXS5zdGFydF90aW1lX21hc2spO1xuJiM0MztcdFx0XHRcdCAgICAgZW5zdF9xdWV1ZVtxXS5zdGFydF90aW1lX21hc2spO1xuIFx0XHRcdHF1ZXVlX3dyaXRlbChxdWV1ZSwgRU5TVF9PTl9USU1FLFxuLVx0XHRcdFx0ICAgICBlbnN0X3F1ZXVlW2ldLm9uX3RpbWVfYnl0ZXMpO1xuJiM0MztcdFx0XHRcdCAgICAgZW5zdF9xdWV1ZVtxXS5vbl90aW1lX2J5dGVzKTtcbiBcdFx0XHRxdWV1ZV93cml0ZWwocXVldWUsIEVOU1RfT0ZGX1RJTUUsXG4tXHRcdFx0XHQgICAgIGVuc3RfcXVldWVbaV0ub2ZmX3RpbWVfYnl0ZXMpO1xuJiM0MztcdFx0XHRcdCAgICAgZW5zdF9xdWV1ZVtxXS5vZmZfdGltZV9ieXRlcyk7XG4gXHRcdH1cbiBcbiBcdFx0LyogRW5hYmxlIEVOU1QgZm9yIGFsbCBjb25maWd1cmVkIHF1ZXVlcyBpbiBvbmUgd3JpdGUgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1ZFTkRPUl9DQURFTkNFJiMzNDssCiAgICAmIzM0O01BQ0ImIzM0OywKICAgICYjMzQ7TUFDQl9QQ0kmIzM0OywKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfVEFQUklPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjYl9zZXR1cF90YyYjMzQ7LAogICAgJiMzNDttYWNiX3NldHVwX3RhcHJpbyYjMzQ7LAogICAgJiMzNDttYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIHRoZSBNQUNCIGRyaXZlciYjMzk7cyB0YXByaW8gdHJhZmZpYyBjb250cm9sIHNldHVwIChtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKS4gSXQgY2hhbmdlcyB0aGUgYWxsb2NhdGlvbiBzaXplIGFuZCBsb29wIGJvdW5kcyB0byB1c2UgdGhlIGhhcmR3YXJlJiMzOTtzIHF1ZXVlIGNvdW50IGluc3RlYWQgb2YgdGhlIHVzZXItcHJvdmlkZWQgZW50cnkgY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBpbiByZWFjaGFibGUgbmV0d29yayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI1YTVlMDM0NGYxNGMyNDM5NTQ0ZjY2MzA0MDQ3NTBlNGQzM2I0MzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAwODo0Mjo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmgKaW5kZXggMmRlNTYwMTdlZTBkNjEuLjRjYzlhYTliMmY5ZTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaApAQCAtMTg0LDEyICYjNDM7MTg0LDYgQEAKICNkZWZpbmUgR0VNX0RDRkc4CQkweDAyOUMgLyogRGVzaWduIENvbmZpZyA4ICovCiAjZGVmaW5lIEdFTV9EQ0ZHMTAJCTB4MDJBNCAvKiBEZXNpZ24gQ29uZmlnIDEwICovCiAjZGVmaW5lIEdFTV9EQ0ZHMTIJCTB4MDJBQyAvKiBEZXNpZ24gQ29uZmlnIDEyICovCi0jZGVmaW5lIEdFTV9FTlNUX1NUQVJUX1RJTUVfUTAJMHgwODAwIC8qIEVOU1QgUTAgc3RhcnQgdGltZSAqLwotI2RlZmluZSBHRU1fRU5TVF9TVEFSVF9USU1FX1ExCTB4MDgwNCAvKiBFTlNUIFExIHN0YXJ0IHRpbWUgKi8KLSNkZWZpbmUgR0VNX0VOU1RfT05fVElNRV9RMAkweDA4MjAgLyogRU5TVCBRMCBvbiB0aW1lICovCi0jZGVmaW5lIEdFTV9FTlNUX09OX1RJTUVfUTEJMHgwODI0IC8qIEVOU1QgUTEgb24gdGltZSAqLwotI2RlZmluZSBHRU1fRU5TVF9PRkZfVElNRV9RMAkweDA4NDAgLyogRU5TVCBRMCBvZmYgdGltZSAqLwotI2RlZmluZSBHRU1fRU5TVF9PRkZfVElNRV9RMQkweDA4NDQgLyogRU5TVCBRMSBvZmYgdGltZSAqLwogI2RlZmluZSBHRU1fRU5TVF9DT05UUk9MCTB4MDg4MCAvKiBFTlNUIGNvbnRyb2wgcmVnaXN0ZXIgKi8KICNkZWZpbmUgR0VNX1VTWF9DT05UUk9MCQkweDBBODAgLyogSGlnaCBzcGVlZCBQQ1MgY29udHJvbCByZWdpc3RlciAqLwogI2RlZmluZSBHRU1fVVNYX1NUQVRVUwkJMHgwQTg4IC8qIEhpZ2ggc3BlZWQgUENTIHN0YXR1cyByZWdpc3RlciAqLwpAQCAtMTQ5Niw3ICYjNDM7MTQ5MCw2IEBAIHN0cnVjdCBtYWNiX3BsYXRmb3JtX2RhdGEgewogICogQHN0YXJ0X3RpbWVfbWFzazogIEJpdG1hc2sgcmVwcmVzZW50aW5nIHRoZSBzdGFydCB0aW1lIGZvciB0aGUgcXVldWUKICAqIEBvbl90aW1lX2J5dGVzOiAgICAmIzM0O29uJiMzNDsgdGltZSBuc2VjIGV4cHJlc3NlZCBpbiBieXRlcwogICogQG9mZl90aW1lX2J5dGVzOiAgICYjMzQ7b2ZmJiMzNDsgdGltZSBuc2VjIGV4cHJlc3NlZCBpbiBieXRlcwotICogQHF1ZXVlX2lkOiAgICAgICAgIElkZW50aWZpZXIgZm9yIHRoZSBxdWV1ZQogICoKICAqIFRoaXMgc3RydWN0dXJlIGhvbGRzIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIGFuIEVOU1QgcXVldWUsCiAgKiB1c2VkIHRvIGNvbnRyb2wgdGltZS1iYXNlZCB0cmFuc21pc3Npb24gc2NoZWR1bGluZyBpbiB0aGUgTUFDQiBkcml2ZXIuCkBAIC0xNTA1LDcgJiM0MzsxNDk4LDYgQEAgc3RydWN0IG1hY2JfcXVldWVfZW5zdF9jb25maWcgewogCXUzMiBzdGFydF90aW1lX21hc2s7CiAJdTMyIG9uX3RpbWVfYnl0ZXM7CiAJdTMyIG9mZl90aW1lX2J5dGVzOwotCXU4IHF1ZXVlX2lkOwogfTsKIAogI2VuZGlmIC8qIF9NQUNCX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jCmluZGV4IGQzOTRmMWY0M2I2ODVlLi5kNTg0MzBmZTljNDFlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jCkBAIC00MzI5LDcgJiM0Mzs0MzI5LDcgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCXN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZTsKIAl1MzIgcXVldWVfbWFzazsKIAl1OCBxdWV1ZV9pZDsKLQlzaXplX3QgaTsKJiM0MzsJc2l6ZV90IGksIHE7CiAJaW50IGVycjsKIAogCWlmIChjb25mLSZndDtudW1fZW50cmllcyAmZ3Q7IGJwLSZndDtudW1fcXVldWVzKSB7CkBAIC00MzU3LDcgJiM0Mzs0MzU3LDcgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQllbnN0X3F1ZXVlID0ga2NhbGxvYyhjb25mLSZndDtudW1fZW50cmllcywgc2l6ZW9mKCplbnN0X3F1ZXVlKSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWVuc3RfcXVldWUgPSBrY2FsbG9jKGJwLSZndDtudW1fcXVldWVzLCBzaXplb2YoKmVuc3RfcXVldWUpLCBHRlBfS0VSTkVMKTsKIAlpZiAodW5saWtlbHkoIWVuc3RfcXVldWUpKQogCQlyZXR1cm4gLUVOT01FTTsKIApAQCAtNDQxNiwxMyAmIzQzOzQ0MTYsMTIgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQkJZ290byBjbGVhbnVwOwogCQl9CiAKLQkJZW5zdF9xdWV1ZVtpXS5xdWV1ZV9pZCA9IHF1ZXVlX2lkOwotCQllbnN0X3F1ZXVlW2ldLnN0YXJ0X3RpbWVfbWFzayA9CiYjNDM7CQllbnN0X3F1ZXVlW3F1ZXVlX2lkXS5zdGFydF90aW1lX21hc2sgPQogCQkJKHN0YXJ0X3RpbWVfc2VjICZsdDsmbHQ7IEdFTV9TVEFSVF9USU1FX1NFQ19PRkZTRVQpIHwKIAkJCXN0YXJ0X3RpbWVfbnNlYzsKLQkJZW5zdF9xdWV1ZVtpXS5vbl90aW1lX2J5dGVzID0KJiM0MzsJCWVuc3RfcXVldWVbcXVldWVfaWRdLm9uX3RpbWVfYnl0ZXMgPQogCQkJZW5zdF9uc190b19od191bml0cyhlbnRyeS0mZ3Q7aW50ZXJ2YWwsIHNwZWVkKTsKLQkJZW5zdF9xdWV1ZVtpXS5vZmZfdGltZV9ieXRlcyA9CiYjNDM7CQllbnN0X3F1ZXVlW3F1ZXVlX2lkXS5vZmZfdGltZV9ieXRlcyA9CiAJCQllbnN0X25zX3RvX2h3X3VuaXRzKGNvbmYtJmd0O2N5Y2xlX3RpbWUgLSBlbnRyeS0mZ3Q7aW50ZXJ2YWwsIHNwZWVkKTsKIAogCQljb25maWd1cmVkX3F1ZXVlcyB8PSBlbnRyeS0mZ3Q7Z2F0ZV9tYXNrOwpAQCAtNDQ0OCwxNSAmIzQzOzQ0NDcsMTQgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlnZW1fd3JpdGVsKGJwLCBFTlNUX0NPTlRST0wsCiAJCQkgICBxdWV1ZV9tYXNrICZsdDsmbHQ7IEdFTV9FTlNUX0RJU0FCTEVfUVVFVUVfT0ZGU0VUKTsKIAotCQlmb3IgKGkgPSAwOyBpICZsdDsgY29uZi0mZ3Q7bnVtX2VudHJpZXM7IGkmIzQzOyYjNDM7KSB7Ci0JCQlxdWV1ZSA9ICZhbXA7YnAtJmd0O3F1ZXVlc1tlbnN0X3F1ZXVlW2ldLnF1ZXVlX2lkXTsKJiM0MzsJCWZvciAocSA9IDAsIHF1ZXVlID0gYnAtJmd0O3F1ZXVlczsgcSAmbHQ7IGJwLSZndDtudW1fcXVldWVzOyAmIzQzOyYjNDM7cSwgJiM0MzsmIzQzO3F1ZXVlKSB7CiAJCQkvKiBDb25maWd1cmUgcXVldWUgdGltaW5nIHJlZ2lzdGVycyAqLwogCQkJcXVldWVfd3JpdGVsKHF1ZXVlLCBFTlNUX1NUQVJUX1RJTUUsCi0JCQkJICAgICBlbnN0X3F1ZXVlW2ldLnN0YXJ0X3RpbWVfbWFzayk7CiYjNDM7CQkJCSAgICAgZW5zdF9xdWV1ZVtxXS5zdGFydF90aW1lX21hc2spOwogCQkJcXVldWVfd3JpdGVsKHF1ZXVlLCBFTlNUX09OX1RJTUUsCi0JCQkJICAgICBlbnN0X3F1ZXVlW2ldLm9uX3RpbWVfYnl0ZXMpOwomIzQzOwkJCQkgICAgIGVuc3RfcXVldWVbcV0ub25fdGltZV9ieXRlcyk7CiAJCQlxdWV1ZV93cml0ZWwocXVldWUsIEVOU1RfT0ZGX1RJTUUsCi0JCQkJICAgICBlbnN0X3F1ZXVlW2ldLm9mZl90aW1lX2J5dGVzKTsKJiM0MzsJCQkJICAgICBlbnN0X3F1ZXVlW3FdLm9mZl90aW1lX2J5dGVzKTsKIAkJfQogCiAJCS8qIEVuYWJsZSBFTlNUIGZvciBhbGwgY29uZmlndXJlZCBxdWV1ZXMgaW4gb25lIHdyaXRlICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUNCIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAgd2l0aGluIHRoZSBgbWFjYl9tYWluLmNgIGZpbGUuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBkcml2ZXIgZm9yIHRoZSBDYWRlbmNlIE1BQ0IvR0VNIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1lc3Npbmcgd2l0aCBob3cgdGhlIGBlbnN0X3F1ZXVlYCBpcyBoYW5kbGVkLiBJdCBzZWVtcyB0aGUgYWxsb2NhdGlvbiBzaXplIGlzIHNoaWZ0aW5nIGZyb20gdXNpbmcgYGNvbmYtJmd0O251bV9lbnRyaWVzYCB0byBub3cgcmVseWluZyBvbiBgYnAtJmd0O251bV9xdWV1ZXNgLiBJbnRlcmVzdGluZy4gQW5kIGluc3RlYWQgb2YgdXNpbmcgYSBzdGFuZGFyZCBgaWAgZm9yIGluZGV4aW5nIGludG8gYGVuc3RfcXVldWVgLCBpdCYjMzk7cyBub3cga2V5ZWQgb2ZmIG9mIGBxdWV1ZV9pZGAuIFRoZW4gdGhlIGxvb3AgdG8gd3JpdGUgdG8gdGhlIHF1ZXVlIHJlZ2lzdGVycyBpdGVyYXRlcyBgYnAtJmd0O251bV9xdWV1ZXNgIHRpbWVzLgoKVGhlIGJpZyBxdWVzdGlvbiBub3cgaXMsIGlzIHRoaXMgZXZlbiAqdGVzdGFibGUqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBrbm93IHRoZXNlIENhZGVuY2UgTUFDQnMgYXJlIGNvbW1vbmx5IGZvdW5kIGluIGVtYmVkZGVkIHN5c3RlbXMg4oCTIEFSTSBTb0NzIGZyb20gQXRtZWwsIFhpbGlueCBaeW5xLCBTaUZpdmUsIHRoYXQgc29ydCBvZiB0aGluZy4gQnV0IHdhaXTigKYgd2FzbiYjMzk7dCB0aGVyZSBhIFFFTVUgbW9kZWw/IEFoLCB5ZXMsIGBody9uZXQvY2FkZW5jZV9nZW0uY2AuIFFFTVUgKmRvZXMqIGVtdWxhdGUgdGhlIENhZGVuY2UgR0VNLCBzbyB0aGF0IGdpdmVzIHVzIGEgcG90ZW50aWFsIHRlc3RiZWQhCgpMZXQmIzM5O3Mgc2Vl4oCmIHRoaXMgcGF0Y2ggaXMgcmVsYXRlZCB0byB0aGUgYHRjYCAodHJhZmZpYyBjb250cm9sKSB0YXByaW8gb2ZmbG9hZCBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgaW4gYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgLiBDb3VsZCB3ZSBmdXp6IHRoaXM/IFRoYXQmIzM5O3MgZGVmaW5pdGVseSB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGRyaXZlciBuYW1lIGlzIGBNQUNCYC4gQSBxdWljayBjaGVjayBvZiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnYCB3aWxsIHRlbGwgbWUgZm9yIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQ0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTIwPWlmIE5FVF9WRU5ET1JfQ0FERU5DRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjIyOmNvbmZpZyBNQUNCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtDYWRlbmNlIE1BQ0IvR0VNIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6Mzc6Y29uZmlnIE1BQ0JfVVNFX0hXU1RBTVBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0zOC1cdGJvb2wgXCYjMzQ7VXNlIElFRUUgMTU4OCBod3N0YW1wXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjQ1OmNvbmZpZyBNQUNCX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7Q2FkZW5jZSBQQ0kgTUFDQi9HRU0gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNjQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBhcmVhOgoKKipEaWdnaW5nIGludG8gdGhlIE1BQ0IgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIE1BQ0IgRXRoZXJuZXQgY29udHJvbGxlciBpcyBjb25maWd1cmVkIGFzIGEgUENJIGRldmljZSBvciBhIHBsYXRmb3JtIGRldmljZS4gRmlyc3QgdGhpbmdzIGZpcnN0LCB0aGUgcHJlc2VuY2Ugb2YgYE1BQ0JfUENJYCBpbiB0aGUgY29uZmlndXJhdGlvbiBpcyBhIGdvb2QgaW5kaWNhdG9yLiBJdCYjMzk7cyBhIHF1aWNrIHdheSB0byBrbm93IHRoZSBjb250cm9sbGVyIGlzIGNvbmZpZ3VyZWQgYXMgYSBQQ0kgZGV2aWNlLiBUaGlzIGltcGxpZXMgSSBzaG91bGQgZ28gbG9vayB0aGVyZSBmaXJzdCBmb3IgdGhlIHJlbGV2YW50IGRyaXZlciBpbXBsZW1lbnRhdGlvbi4gVGhhdCB3b3VsZCBtZWFuIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jYCBmaWxlLiBUaGF0JiMzOTtzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIHNwZWNpZmljIFBDSS1yZWxhdGVkIGluaXRpYWxpemF0aW9uIGFuZCBzZXR1cCBjb2RlIGZvciB0aGUgTUFDQiBjb250cm9sbGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY2JfcGNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTQ1PWNvbmZpZyBNQUNCX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy01MS1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjUyOlx0ICB3aWxsIGJlIGNhbGxlZCBtYWNiX3BjaS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy01My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19NQUNCKSAmIzQzOz0gbWFjYi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19NQUNCX1BDSSkgJiM0Mzs9IG1hY2JfcGNpLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTk6I2RlZmluZSBQQ0lfRFJJVkVSX05BTUUgXCYjMzQ7bWFjYl9wY2lcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0yMC0jZGVmaW5lIFBMQVRfRFJJVkVSX05BTUUgXCYjMzQ7bWFjYlwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGRldl9pZF90YWJsZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTI1OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYWNiX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI2LVx0Lm5hbWUgICAgID0gUENJX0RSSVZFUl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTMyOm1vZHVsZV9wY2lfZHJpdmVyKG1hY2JfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTMzLU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkZXZfaWRfdGFibGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMzIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTUFDQiB3aXRoIFBDSSBXcmFwcGVyKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYE1BQ0JfUENJYCwgd2hpY2ggaXMgZXNzZW50aWFsbHkgYSBQQ0kgd3JhcHBlciBhcm91bmQgdGhlIE1BQ0IgRXRoZXJuZXQgY29udHJvbGxlci4gQnV0IGhhbmcgb24sIHRoZSB0eXBpY2FsIFFFTVUgYGNhZGVuY2VfZ2VtYCBJJiMzOTttIHVzZWQgdG8gc2VlaW5nIGlzIGEgcGxhdGZvcm0gZGV2aWNlLCBzeXNidXMgYmFzZWQsIGFuZCBtb3N0bHkgdXNlZCBvbiBBUk0gYm9hcmRzLiBUaGlzIGdldHMgbWUgdGhpbmtpbmcuLi4gY291bGQgd2UgZnV6eiBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWA/CgpUaGUgYW5zd2VyIGlzIHllcywgcG90ZW50aWFsbHkuIFN5emthbGxlciBjb3VsZCBpbnN0YW50aWF0ZSBgTUFDQmAgYW5kIGBNQUNCX1BDSWAgYXMgYSBQQ0kgZGV2aWNlLCBpZiBpdCBrbm93cyB0aGUgcmlnaHQgUENJIElEcy4gQWx0ZXJuYXRpdmVseSwgd2UgY291bGQgdHJlYXQgaXQgc2ltcGx5IGFzIGEgbmV0d29yayBkcml2ZXIsIGFuZCB0aGVuIGFjY2VzcyBpdCBpZiB0aGUgaGFyZHdhcmUgaXMgcHJlc2VudC4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgYG1hY2JfcGNpLmNgLCBkb2VzIGl0IGhhdmUgYSBgZGV2X2lkX3RhYmxlYD8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byBzZWUgd2hhdCBQQ0kgSURzIGFyZSBzdXBwb3J0ZWQuIFVuZGVyc3RhbmRpbmcgdGhhdCB0YWJsZSBpcyBrZXkgdG8gbWFraW5nIHRoaXMgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZfaWRfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jPTEwOD1zdGF0aWMgdm9pZCBtYWNiX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEyMDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGV2X2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTIxLVx0eyBQQ0lfVkRFVklDRShDRE5TLCBQQ0lfREVWSUNFX0lEX0NETlNfTUFDQikgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYWNiX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI2LVx0Lm5hbWUgICAgID0gUENJX0RSSVZFUl9OQU1FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEyNzpcdC5pZF90YWJsZSA9IGRldl9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjgtXHQucHJvYmUgICAgPSBtYWNiX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMzI9bW9kdWxlX3BjaV9kcml2ZXIobWFjYl9wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMzM6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGRldl9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTM0LU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkzOQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiBkZXZpY2UgZHJpdmVycyBvciBlbWJlZGRlZCBzeXN0ZW1zOgoKKipEZWNvZGluZyB0aGUgUENJIERldmljZSBJRCoqCgpBbHJpZ2h0LCB0aGUgc3lzdGVtJiMzOTtzIHRhbGtpbmcgYWJvdXQgYFBDSV9ERVZJQ0VfSURfQ0ROU19NQUNCYC4gSW1tZWRpYXRlbHksIG15IGJyYWluIGtpY2tzIGludG8gZ2Vhci4gVGhpcyBpcyBhIGNydWNpYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uIFRoZSAmIzM0O1BDSSYjMzQ7IHByZWZpeCB0ZWxscyBtZSB0aGlzIGxpa2VseSByZWxhdGVzIHRvIGEgZGV2aWNlIG9uIGEgUENJIGJ1cywgb2J2aW91c2x5LiBUaGUgJiMzNDtERVZJQ0VfSUQmIzM0OyBwYXJ0IGlzIGtleTsgaXQmIzM5O3MgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIHRoZSBQQ0kgZGV2aWNlIHByZXNlbnRzIHRvIHRoZSBzeXN0ZW0uIFRoaXMgSUQsIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFZlbmRvciBJRCwgaXMgaG93IHRoZSBkcml2ZXIgaXMgYm91bmQgdG8gdGhlIGhhcmR3YXJlLgoKVGhlICYjMzQ7Q0ROUyYjMzQ7IHBhcnQgaXMgd2hhdCByZWFsbHkgZ2V0cyBtZSBnb2luZzsgaXQmIzM5O3MgYSB2ZXJ5IHJlY29nbml6YWJsZSB2ZW5kb3IgcHJlZml4LCBpdCBzaWduaWZpZXMgYSBDYWRlbmNlIERlc2lnbiBTeXN0ZW1zIHByb2R1Y3QuIFRoaXMgbW9zdCBsaWtlbHkgbmFycm93cyB0aGluZ3MgdG8gYW4gRXRoZXJuZXQgTUFDIChNZWRpYSBBY2Nlc3MgQ29udHJvbGxlcikgY29yZS4gQW5kLCB0aGUgJiMzNDtNQUNCJiMzNDsgc3VmZml4IHNvbGlkaWZpZXMgaXQuIFRoZSBuYW1lICYjMzQ7TUFDQiYjMzQ7IGlzIGEgY2xhc3NpYyBnaXZlYXdheSB0byB0aGUgdHlwZSBvZiBjb3JlIHVzZWQuIE1vc3QgbGlrZWx5IGl0IHJlZmVycyB0byBhIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gb2YgYW4gRXRoZXJuZXQgY29udHJvbGxlci4KClNvLCBqdXN0IGZyb20gdGhhdCBvbmUgbGluZSwgSSBjYW4gaW1tZWRpYXRlbHkgaW5mZXI6IFdlJiMzOTtyZSBsb29raW5nIGF0IGEgQ2FkZW5jZS1kZXNpZ25lZCBNQUMsIGxpa2VseSBhbiBFdGhlcm5ldCBjb250cm9sbGVyLCBvbiBhIFBDSSBidXMuIFRoaXMgaXMgdGhlIGRldmljZSB0aGUgc3lzdGVtIGhhcyBpZGVudGlmaWVkLiBNeSBuZXh0IHN0ZXBzIHdvdWxkIGJlIGxvb2tpbmcgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlciBhbmQgYW55IGFzc29jaWF0ZWQgZXJyYXRhIHRoYXQgSSBoYXZlIGFjY2VzcyB0by4gSSBrbm93IHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0RFVklDRV9JRF9DRE5TX01BQ0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjIyOiNkZWZpbmUgUENJX0RFVklDRV9JRF9DRE5TX01BQ0IgMHhlMDA3XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jPTEyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGV2X2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTIxOlx0eyBQQ0lfVkRFVklDRShDRE5TLCBQQ0lfREVWSUNFX0lEX0NETlNfTUFDQikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjItXHR7IDAsIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUwMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1BQ0IgRHJpdmVyIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbWFjYmAgZHJpdmVyIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBJbml0aWFsbHksIEkgdGhvdWdodCB0aGF0IHRoZSBQQ0kgSUQgZm9yIHRoaXMgc3BlY2lmaWMgZGV2aWNlIG1pZ2h0IG5vdCBiZSBkaXJlY3RseSBpbiBTeXprYWxsZXImIzM5O3MgYHN5cy9saW51eC9kZXZfcGNpLnR4dGAgb3IgYSBzaW1pbGFyIGNvbmZpZ3VyYXRpb24gZmlsZS4gQnV0IHRoZW4gSSByZW1lbWJlcmVkLCBTeXprYWxsZXIgaXMgcHJldHR5IHNtYXJ0IGFib3V0IFBDSSBmdXp6aW5nLiBJdCBjYW4gZ2VuZXJhdGUgcmFuZG9tIFBDSSBJRHMgb3IgbGV2ZXJhZ2UgZXhpc3Rpbmcgb25lcyB0byBiaW5kIHRvIGRyaXZlcnMsIGFzIGxvbmcgYXMgdGhlIFBDSSBmdXp6aW5nIGZ1bmN0aW9uYWxpdHkgaXMgY29tcGlsZWQgaW50byB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uLiBTbyB0aGF0JiMzOTtzIHBvdGVudGlhbGx5IHByb21pc2luZy4KClRoZSBrZXkgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBjYW4gd2UgYWN0dWFsbHkgcmVhY2ggYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgPyBUaGF0JiMzOTtzIHdoYXQgSSB3YW50IHRvIGdldCBhdC4gSSBrbm93IGBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlYCBpcyBjYWxsZWQgZnJvbSBgbWFjYl9zZXR1cF90Y2AsIGFuZCB0aGF0IG9uZSBpcyB0aGUgYG5kb19zZXR1cF90Y2AgY2FsbGJhY2sgZm9yIHRoZSBNQUNCIGRyaXZlci4gU2luY2UgYG5kb19zZXR1cF90Y2AgY2FsbGJhY2tzIGFyZSBuZXR3b3JrIGRldmljZSBvcGVyYXRpb25zIGZvciBzZXR0aW5nIHRyYWZmaWMgY29udHJvbCAoVEMpIHJ1bGVzLCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBtYWNiX3NldHVwX3RjYC4gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBmb2N1cyBteSBpbnZlc3RpZ2F0aW9uIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjYl9zZXR1cF90YyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00NDk3PXN0YXRpYyBpbnQgbWFjYl9zZXR1cF90YXByaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NTI2OnN0YXRpYyBpbnQgbWFjYl9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDUyNy1cdFx0XHQgdm9pZCAqdHlwZV9kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDU0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hY2JfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ1NjMtXHQubmRvX2h3dHN0YW1wX2dldFx0PSBtYWNiX2h3dHN0YW1wX2dldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDU2NDpcdC5uZG9fc2V0dXBfdGNcdFx0PSBtYWNiX3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTY1LVx0Lm5kb190eF90aW1lb3V0XHRcdD0gbWFjYl90eF90aW1lb3V0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjU4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gYG1hY2Jfc2V0dXBfdGNgIGRlZmluaXRlbHkgaGFuZGxlcyB0aGUgYFRDX1NFVFVQX1FESVNDX1RBUFJJT2AgY2FzZS4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgdGhlIHJpZ2h0IHNwb3QsIGFuZCB0aGUgdXNlciYjMzk7cyBjb25maWd1cmF0aW9uIG9mIHRoZSBgdGFwcmlvYCBxZGlzYyBvbiB0aGUgbmV0d29yayBpbnRlcmZhY2UgdHJpZ2dlcnMgdGhpcyBwYXRoLiBOb3csIHRoZSBtZWF0IG9mIHRoZSBwYXRjaCBpcyBmaXhpbmcgYW4gYWxsb2NhdGlvbiBpc3N1ZSBpbiBgZW5zdF9xdWV1ZWAuIEFwcGFyZW50bHksIGl0IHdhcyBhbGxvY2F0ZWQgd2l0aCBhIHNpemUgYmFzZWQgb24gYGNvbmYtJmd0O251bV9lbnRyaWVzYCwgYnV0IHRoZW4gYWNjZXNzZWQgd2l0aCBgcXVldWVfaWRgLCB3aGljaCBjb3VsZCBiZSAqbGFyZ2VyKiB0aGFuIGBjb25mLSZndDtudW1fZW50cmllc2AsIHBvdGVudGlhbGx5IHVwIHRvIGBicC0mZ3Q7bnVtX3F1ZXVlcyAtIDFgLiBUaGF0IHNjcmVhbXMgb3V0LW9mLWJvdW5kcyBhY2Nlc3MhIFRoZSBmaXggaXMgc3RyYWlnaHRmb3J3YXJkOiB3ZSBzaW1wbHkgYWxsb2NhdGUgYGVuc3RfcXVldWVgIHRvIHRoZSBjb3JyZWN0IHNpemUsIGBicC0mZ3Q7bnVtX3F1ZXVlc2AsIGFuZCBpdGVyYXRlIGFwcHJvcHJpYXRlbHkuCgpJcyB0aGlzIHBhdGNoIGZ1enotd29ydGh5PyBBYnNvbHV0ZWx5ISBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNvbmNyZXRlIG91dC1vZi1ib3VuZHMgZml4IHdpdGhpbiBhIG5ldHdvcmsgZHJpdmVyJiMzOTtzIHRyYWZmaWMgY29udHJvbCBzZXR1cC4gVGhhdCYjMzk7cyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgdnVsbmVyYWJpbGl0eSB3ZSB3YW50IHRvIGNhdGNoIHByb2FjdGl2ZWx5LgoKV2FpdCBhIG1pbnV0ZSwgY2FuIHdlIGV2ZW4gKnRlc3QqIHRoZSBNQUNCIGRyaXZlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJZiB3ZSBlbmFibGUgYENPTkZJR19NQUNCYCBhbmQgYENPTkZJR19NQUNCX1BDSWAsIHRoZW9yZXRpY2FsbHksIHRoZSBQQ0kgZnV6emVyIGluIHN5emthbGxlciBjb3VsZCBpbnN0YW50aWF0ZSBhIFBDSSBkZXZpY2UuIE9yLCBRRU1VIG1pZ2h0IHByb3ZpZGUgdGhlIHBsYXRmb3JtIGRldmljZS4gVGhhdCBtYWtlcyBpdCBtb3JlIGxpa2VseSB0byBiZSB0ZXN0YWJsZS4gTm93LCBiZWZvcmUgSSBnZXQgdG9vIGV4Y2l0ZWQsIGxldCBtZSBxdWlja2x5IGNoZWNrIGlmIGBDT05GSUdfTUFDQmAgaGFzIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzLiBHb3R0YSBiZSBzdXJlIHdlIGNhbiBhY3R1YWxseSBydW4gdGhlIHRlc3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9MjA9aWYgTkVUX1ZFTkRPUl9DQURFTkNFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6MjI6Y29uZmlnIE1BQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yMy1cdHRyaXN0YXRlIFwmIzM0O0NhZGVuY2UgTUFDQi9HRU0gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzozNzpjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTM4LVx0Ym9vbCBcJiMzNDtVc2UgSUVFRSAxNTg4IGh3c3RhbXBcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6NDU6Y29uZmlnIE1BQ0JfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtDYWRlbmNlIFBDSSBNQUNCL0dFTSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNDcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMgb2YgYENPTkZJR19NQUNCYDoKCioqQW5hbHl6aW5nIENPTkZJR19NQUNCJiMzOTtzIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIGBDT05GSUdfTUFDQmAuLi4gcmlnaHQsIHRoYXQmIzM5O3MgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IE1lZGlhIEFjY2VzcyBDb250cm9sbGVyIGJhc2VkIG9uIHRoZSBBUk0gUHJpbWVDZWxsIE1BQy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyB0byBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgY29uZmlndXJhdGlvbi4gS25vd2luZyB0aGUgcHJlcmVxdWlzaXRlcyBpcyBjcnVjaWFsIGZvciBhIGNsZWFuIGFuZCBlZmZpY2llbnQgYnVpbGQsIGFuZCBmb3IgdHJvdWJsZXNob290aW5nIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyBuZWVkIHRvIGJlIGluIHBsYWNlIGZvciB0aGUgYE1BQ0JgIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgY2hlY2tpbmcgZm9yIHJlbGF0ZWQgZGV2aWNlIGRyaXZlcnMsIGJ1cyBzdXBwb3J0IChsaWtlIFBsYXRmb3JtIGJ1cywgcGVyaGFwcz8pLCBjbG9jayBzZXR0aW5ncywgYW5kIHBvc3NpYmx5IGFueSBjcnlwdG9ncmFwaGljIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBpZiB0aGUgTUFDQiBzdXBwb3J0cyBoYXJkd2FyZSBvZmZsb2FkIG9mIGNyeXB0byBmdW5jdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgYW55IHN5bWJvbHMgaXQgcmVxdWlyZXMsIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYHNlbGVjdGAgcmVsYXRpb25zaGlwcyB0aGF0IG1pZ2h0IHB1bGwgaW4gb3RoZXIgY29tcG9uZW50cyBpbXBsaWNpdGx5LiBGdXJ0aGVybW9yZSwgSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnkgY29uZmxpY3RpbmcgY29uZmlndXJhdGlvbnMsIGVuc3VyaW5nIGBDT05GSUdfTUFDQmAgd29uJiMzOTt0IGNsYXNoIHdpdGggYW55IG90aGVyIGVuYWJsZWQgZHJpdmVycy4gVGhpcyBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgdGhlIHJpZ2h0IHBpZWNlcyBhcmUgaW4gcGxhY2UsIHNvIHRoZSBzeXN0ZW0gY2FuIHJ1biBzbW9vdGhseSB3aXRoIHRoaXMgRXRoZXJuZXQgY29udHJvbGxlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0aWYgTkVUX1ZFTkRPUl9DQURFTkNFXG4gIDIxOlx0XG4gIDIyOlx0Y29uZmlnIE1BQ0JcbiAgMjM6XHRcdHRyaXN0YXRlIFwmIzM0O0NhZGVuY2UgTUFDQi9HRU0gc3VwcG9ydFwmIzM0O1xuICAyNDpcdFx0ZGVwZW5kcyBvbiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLXG4gIDI1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDI2Olx0XHRzZWxlY3QgUEhZTElOS1xuICAyNzpcdFx0c2VsZWN0IENSQzMyXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIFRoZSBDYWRlbmNlIE1BQ0IgZXRoZXJuZXQgaW50ZXJmYWNlIGlzIGZvdW5kIG9uIG1hbnkgQXRtZWwgQVQzMiBhbmRcbiAgMzA6XHRcdCAgQVQ5MSBwYXJ0cy4gIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgdGhlIENhZGVuY2UgR0VNIChHaWdhYml0XG4gIDMxOlx0XHQgIEV0aGVybmV0IE1BQyBmb3VuZCBpbiBzb21lIEFSTSBTb0MgZGV2aWNlcykuICBTYXkgWSB0byBpbmNsdWRlXG4gIDMyOlx0XHQgIHN1cHBvcnQgZm9yIHRoZSBNQUNCL0dFTSBjaGlwLlxuICAzMzpcdFxuICAzNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDM1Olx0XHQgIHdpbGwgYmUgbWFjYi5cbiAgMzY6XHRcbiAgMzc6XHRjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxuICAzODpcdFx0Ym9vbCBcJiMzNDtVc2UgSUVFRSAxNTg4IGh3c3RhbXBcJiMzNDtcbiAgMzk6XHRcdGRlcGVuZHMgb24gTUFDQlxuICA0MDpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xuICA0MTpcdFx0ZGVmYXVsdCB5XG4gIDQyOlx0XHRoZWxwXG4gIDQzOlx0XHQgIEVuYWJsZSBJRUVFIDE1ODggUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgc3VwcG9ydCBmb3IgTUFDQi5cbiAgNDQ6XHRcbiAgNDU6XHRjb25maWcgTUFDQl9QQ0lcbiAgNDY6XHRcdHRyaXN0YXRlIFwmIzM0O0NhZGVuY2UgUENJIE1BQ0IvR0VNIHN1cHBvcnRcJiMzNDtcbiAgNDc6XHRcdGRlcGVuZHMgb24gTUFDQiBcdTAwMjZcdTAwMjYgUENJXG4gIDQ4Olx0XHRoZWxwXG4gIDQ5Olx0XHQgIFRoaXMgaXMgUENJIHdyYXBwZXIgZm9yIE1BQ0IgZHJpdmVyLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODcyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE1BQ0IgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoZSBNQUNCIEV0aGVybmV0IGRyaXZlci4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhdCBmaXJzdCBnbGFuY2UuIGBDT05GSUdfTUFDQmAgaXMgZGVwZW5kZW50IG9uIGJvdGggYEhBU19ETUFgIGFuZCBgQ09NTU9OX0NMS2AsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBETUEtYmFzZWQgaGFyZHdhcmUgYW5kIGNsb2NrIG1hbmFnZW1lbnQuIFRoZW4gd2UgaGF2ZSBgQ09ORklHX01BQ0JfUENJYCwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGZvciBQQ0kgdmVyc2lvbnMsIGRlcGVuZGluZyBvbiBgTUFDQmAgYW5kIGBQQ0lgLiBTaW5jZSBib3RoIGBNQUNCYCBhbmQgYE1BQ0JfUENJYCBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZCwgSSBjb3VsZCBlbmFibGUgYm90aCwgcmlnaHQ/IFdhaXQgYSBtaW51dGUuLi4gc29tZXRoaW5nIGZlZWxzIGluY29tcGxldGUuIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBjb25zaWRlciBwb3RlbnRpYWwgdmVuZG9yLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBXaGF0IGFib3V0IGBORVRfVkVORE9SX0NBREVOQ0VgPyBJIG5lZWQgdG8gY2hlY2sgaG93IHRoYXQgaW1wYWN0cyB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzLiBJcyB0aGVyZSBhbiBpbnRlcmFjdGlvbiB0aGVyZSBJIG5lZWQgdG8gYWNjb3VudCBmb3I/IEl0IGlzIGNyaXRpY2FsIHRvIG1ha2Ugc3VyZSBhbGwgZGVwZW5kZW5jaWVzIGFyZSBhY2NvdW50ZWQgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTkKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIENhZGVuY2UgZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE5FVF9WRU5ET1JfQ0FERU5DRVxuICAgNzpcdFx0Ym9vbCBcJiMzNDtDYWRlbmNlIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gICA5Olx0XHRkZWZhdWx0IHlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gIDEyOlx0XG4gIDEzOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxNjpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxNzpcdFx0ICByZW1haW5pbmcgQ2FkZW5jZSBuZXR3b3JrIGNhcmQgcXVlc3Rpb25zLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlXG4gIDE4Olx0XHQgIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0MDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGVwZW5kZW5jaWVzIGFuZCBDb25maWd1cmF0aW9uIENoZWNrcyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB3aGF0IEkgbmVlZCBmb3IgdGhpcyBuZXR3b3JrIHNldHVwLiBJdCBzZWVtcyBgTkVUX1ZFTkRPUl9DQURFTkNFYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQsIG5vIHN1cnByaXNlcyB0aGVyZSwgdGhhdCYjMzk7cyB3aGF0JiMzOTtzIGRyaXZpbmcgdGhpcyB3aG9sZSB0aGluZy4gTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGUgdGFwcmlvIHFkaXNjIHdpbGwgYmUgY29uZmlndXJlZDsgZm9yIHRoYXQsIEkgYmVsaWV2ZSBgTkVUX1NDSF9UQVBSSU9gIGlzIG5lY2Vzc2FyeS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBtYWtlIHN1cmUgaXTigJlzIGVuYWJsZWQgYW5kIHRoYXQgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzIGluIGl0cyBkZXBlbmRlbmNpZXMuIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgaGVhZGFjaGVzIGRvd24gdGhlIGxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIX1RBUFJJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTE2Nz1jb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXG4tLVxubmV0L3NjaGVkL0tjb25maWctMTcxLVxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xubmV0L3NjaGVkL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7VGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTczMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlcGVuZGVuY3kgQ2hlY2sgZm9yIE5FVF9TQ0hfVEFQUklPKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBGaXJzdCBvcmRlciBvZiBidXNpbmVzczogKk5FVF9TQ0hfVEFQUklPKi4uLiBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgc3RhcnQgcnVubmluZyB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMuIEkga25vdyB0aGlzIG1vZHVsZSwgb3IgYXQgbGVhc3QgdGhlIGNhcGFiaWxpdGllcyBpdCB1bmxvY2tzLCB0b3VjaGVzIGEgZmV3IGtleSBhcmVhcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoYXQgYWxsIG9mIHRoZW0gYXJlIGluIHBsYWNlLCBjb25maWd1cmVkIGNvcnJlY3RseSwgYW5kIG5vdCBnb2luZyB0byBpbnRyb2R1Y2UgYW55IHVuZXhwZWN0ZWQgY29uZmxpY3RzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgbmV0d29ya2luZyBzdGFjaywgb2YgY291cnNlLCBidXQgYWxzbyBhbnl0aGluZyByZWxhdGVkIHRvIHRpbWUtc2Vuc2l0aXZlIHNjaGVkdWxpbmcsIHBvdGVudGlhbGx5IGhhcmR3YXJlIHN1cHBvcnQgZm9yIHRoaW5ncyBsaWtlIHRyYWZmaWMgc2hhcGluZyBhbmQgdGltZSBzeW5jaHJvbml6YXRpb24uIEkmIzM5O20gbWVudGFsbHkgcGFyc2luZyB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRldmljZSBkcml2ZXJzLiBJIHdhbnQgdG8gYXZvaWQgYW55IG5hc3R5IHN1cnByaXNlcyBkb3duIHRoZSByb2FkLCBzbyBhIHF1aWNrIHZlcmlmaWNhdGlvbiBpcyBjcnVjaWFsLiBCYXNpY2FsbHksIGEgY2xlYW4gZGVwZW5kZW5jeSBtYXAgaGVyZSBpcyB0aGUga2V5IHRvIHByZXZlbnRpbmcgYSBidW5jaCBvZiBkZWJ1Z2dpbmcgbGF0ZXIgb24uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgbG9va2luZyBhdC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzI6XHRjb25maWcgTkVUX1NDSF9UQVBSSU9cbiAxNzM6XHRcdHRyaXN0YXRlIFwmIzM0O1RpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXCYjMzQ7XG4gMTc0Olx0XHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXG4gMTc1Olx0XHRoZWxwXG4gMTc2Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxuIDE3NzpcdFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAxNzg6XHRcbiAxNzk6XHRcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXG4gMTgwOlx0XG4gMTgxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNTgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUQVBSSU8gSW1wbGVtZW50YXRpb24gZm9yIHRoZSBNQUNCIERyaXZlcioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBORVRfU0NIX1RBUFJJT2AgaGVyZS4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gaG93IHRoZSBUQVBSSU8gc2NoZWR1bGluZyBkaXNjaXBsaW5lIGlzIGludGVncmF0ZWQgd2l0aGluIHRoZSBNQUNCIGRyaXZlci4gVGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYXBwYXJlbnRseSBiZWVuIG1vZGlmaWVkIGlzIGBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlYC4gTGV0JiMzOTtzIGp1c3QgZG91YmxlLWNoZWNrLCBpcyB0aGlzIGZ1bmN0aW9uIHN0YXRpYz8gWWVzLCBpdCBpcy4gQWxyaWdodCwgdGhhdCBtZWFucyB0aGUgZW50cnkgcG9pbnQsIHRoZSBleHRlcm5hbGx5IHZpc2libGUgZnVuY3Rpb24sIGlzIGdvaW5nIHRvIGJlIGBtYWNiX3NldHVwX3RjYC4gV2FpdCBhIHNlY29uZOKApiBsb29raW5nIGF0IHRoZSBjYWxsIGZsb3csIGBtYWNiX3NldHVwX3RjYCBhY3R1YWxseSBjYWxscyBgbWFjYl9zZXR1cF90YXByaW9gLCB3aGljaCBpbiB0dXJuIGNhbGxzIGBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlYC4gVGhlcmVmb3JlLCBgbWFjYl9zZXR1cF90Y2AgaXMgdGhlIHByaW1hcnkgZm9jYWwgc3ltYm9sIHdlJiMzOTtyZSBhZnRlciwgdGhlIGZ1bmN0aW9uIHRoYXQgcmVwcmVzZW50cyB0aGUgcG9pbnQgb2YgZXh0ZXJuYWwgYWNjZXNzLiBTbyBJIG5lZWQgdG8gdmVyaWZ5IGl0cyBzaWduYXR1cmUgYW5kIG1ha2Ugc3VyZSB0aGF0IGl0IGFsbCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBUQVBSSU8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY2Jfc2V0dXBfdGMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDQ5Nz1zdGF0aWMgaW50IG1hY2Jfc2V0dXBfdGFwcmlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDUyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDUyNjpzdGF0aWMgaW50IG1hY2Jfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ1MjctXHRcdFx0IHZvaWQgKnR5cGVfZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ1NDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWNiX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTYzLVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gbWFjYl9od3RzdGFtcF9nZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1NjQ6XHQubmRvX3NldHVwX3RjXHRcdD0gbWFjYl9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDU2NS1cdC5uZG9fdHhfdGltZW91dFx0XHQ9IG1hY2JfdHhfdGltZW91dCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4NjQKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUNCIERyaXZlciBmb3IgU3l6a2FsbGVyIEludGVncmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gYmVzdCBpbnRlZ3JhdGUgdGhlIE1BQ0IgZHJpdmVyIHdpdGggU3l6a2FsbGVyLCBmb2N1c2luZyBvbiBmdW5jdGlvbiBzeW1ib2xzLiBUaGUgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byB1c2UgYG1hY2Jfc2V0dXBfdGNgIGRpcmVjdGx5IGFzIGEgZm9jdXMgc3ltYm9sLiBTaW5jZSBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgSSB3YXMgY29uY2VybmVkIGFib3V0IGlubGluaW5nLiBIb3dldmVyLCBpdCYjMzk7cyBhc3NpZ25lZCB0byBhbiBgbmRvX3NldHVwX3RjYCBjYWxsYmFjaywgd2hpY2ggbWVhbnMgaXQgcHJvYmFibHkgKndvbiYjMzk7dCogYmUgaW5saW5lZC4gU3RpbGwsIFN5emthbGxlciBnZW5lcmFsbHkgcHJlZmVycyBub24tc3RhdGljIGZ1bmN0aW9ucyBmb3IgYmV0dGVyIHN5bWJvbCByZXNvbHV0aW9uLiBUaGUgcHJvbXB0IGFjdHVhbGx5IGVtcGhhc2l6ZXMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMhCgpUaGVuIEkgY29uc2lkZXJlZCB0aGUgZ2VuZXJpYyBgbmRvX3NldHVwX3RjYCBjYWxsZXIg4oCTIHNvbWV0aGluZyBsaWtlIGBkZXZfdGNfc2V0dXBgLiBCdXQgdGhlIGdvYWwgaGVyZSBpcyB0byBzcGVjaWZpY2FsbHkgdGFyZ2V0IHRoZSBNQUNCIGRyaXZlciwgc28gdGhhdCBhcHByb2FjaCBkb2VzbiYjMzk7dCBnaXZlIG1lIHRoZSBzcGVjaWZpYyBmb2N1cyBJIG5lZWQuIEkgcmVhbGl6ZWQgSSBjYW4ganVzdCBsaXN0IGJvdGggYG1hY2Jfc2V0dXBfdGNgIGFuZCwgaWYgcmVsZXZhbnQsIGZ1bmN0aW9ucyBsaWtlIGBtYWNiX3NldHVwX3RhcHJpb2Agb3IgYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgIGluIHRoZSBTeXprYWxsZXIgY29uZmlnIGlmIHRoZXkmIzM5O3JlIG5vdCBpbmxpbmVkLiBBY3R1YWxseSwgYG1hY2Jfc2V0dXBfdGNgIHNob3VsZCBiZSBmaW5lLiBJdCBiZWluZyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgc2VlbXMgdG8gc29sdmUgdGhlIGlubGluaW5nIHByb2JsZW0uCgpTbywgbGV0JiMzOTtzIHBpdm90IGFuZCBsb29rIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoZSBNQUNCIGRyaXZlci4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBwb3NzaWJpbGl0aWVzIGxpa2UgYG1hY2JfcHJvYmVgIG9yIGV2ZW4gYG1hY2JfcGNpX3Byb2JlYC4gTm93LCBJJiMzOTtsbCBnbyBjaGVjayBgbWFjYl9zZXR1cF90Y2AgaW4gYG1hY2JfbWFpbi5jYCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1MjYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDUyNjpcdHN0YXRpYyBpbnQgbWFjYl9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbjQ1Mjc6XHRcdFx0XHQgdm9pZCAqdHlwZV9kYXRhKVxuNDUyODpcdHtcbjQ1Mjk6XHRcdGlmICghZGV2IHx8ICF0eXBlX2RhdGEpXG40NTMwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuNDUzMTpcdFxuNDUzMjpcdFx0c3dpdGNoICh0eXBlKSB7XG40NTMzOlx0XHRjYXNlIFRDX1NFVFVQX1FESVNDX1RBUFJJTzpcbjQ1MzQ6XHRcdFx0cmV0dXJuIG1hY2Jfc2V0dXBfdGFwcmlvKGRldiwgdHlwZV9kYXRhKTtcbjQ1MzU6XHRcdGRlZmF1bHQ6XG40NTM2Olx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbjQ1Mzc6XHRcdH1cbjQ1Mzg6XHR9XG40NTM5Olx0XG40NTQwOlx0c3RhdGljIHZvaWQgbWFjYl90eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBxKVxuNDU0MTpcdHtcbjQ1NDI6XHRcdHN0cnVjdCBtYWNiICpicCA9IG5ldGRldl9wcml2KGRldik7XG40NTQzOlx0XG40NTQ0Olx0XHRtYWNiX3R4X3Jlc3RhcnQoXHUwMDI2YnAtXHUwMDNlcXVldWVzW3FdKTtcbjQ1NDU6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExODM2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIE1BQ0IgSW5pdGlhbGl6YXRpb24qKgoKSG1tLCBgbWFjYl9zZXR1cF90Y2AgaXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggZGV2aWNlIHNldHVwLCBhbmQgYSBzdGF0aWMgZnVuY3Rpb24gc3VnZ2VzdHMgaXQmIzM5O3MgdGlnaHRseSBib3VuZCB0byB0aGUgY3VycmVudCBjb250ZXh0LCBwb3RlbnRpYWxseSBtYWtpbmcgaXQgaGFyZGVyIHRvIGFkYXB0IG9yIHJldXNlIGluIG90aGVyIHNjZW5hcmlvcy4gSSB3b25kZXIgaWYgdGhlcmUmIzM5O3MgYSBub24tc3RhdGljIGFsdGVybmF0aXZlIHRoYXQgbWlnaHQgb2ZmZXIgbW9yZSBmbGV4aWJpbGl0eS4gTGV0IG1lIHRoaW5rLi4uIHBlcmhhcHMgYG1hY2JfcHJvYmVgPyBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgYSBwcm9iZSBmdW5jdGlvbiB3b3VsZCBiZSBkZXNpZ25lZCB0byBiZSBtb3JlIGFkYXB0YWJsZSwgcG90ZW50aWFsbHkgY2FsbGVkIGluIHZhcnlpbmcgY29udGV4dHMuIEkgc2hvdWxkIGludmVzdGlnYXRlIHRoYXQgcG9zc2liaWxpdHkgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00NTcxPXN0YXRpYyB2b2lkIG1hY2JfY29uZmlndXJlX2NhcHMoc3RydWN0IG1hY2IgKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDYxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDYxNTpzdGF0aWMgaW50IG1hY2JfcHJvYmVfcXVldWVzKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCBfX2lvbWVtICptZW0sIGJvb2wgbmF0aXZlX2lvKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjE2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX2NvbmZpZyBkZWZhdWx0X2dlbV9jb25maWcgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NzU1OnN0YXRpYyBpbnQgbWFjYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzU2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3OTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3OTE6XHRudW1fcXVldWVzID0gbWFjYl9wcm9iZV9xdWV1ZXMoXHUwMDI2cGRldi1cdTAwM2VkZXYsIG1lbSwgbmF0aXZlX2lvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTc5Mi1cdGlmIChudW1fcXVldWVzIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz02MjQ0PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1hY2JfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjQ1Olx0LnByb2JlXHRcdD0gbWFjYl9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjI0Ni1cdC5yZW1vdmVcdFx0PSBtYWNiX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MzMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIHRoZSBNQUNCIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpIbW0sIHNvIGBtYWNiX3Byb2JlYCBpcyBhbHNvIHN0YXRpYy4gSSYjMzk7bSBhbHJlYWR5IGRlZXAgaW50byB0aGUgbG93LWxldmVsIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIGhlcmUsIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBnZXRzIG9mZiB0aGUgZ3JvdW5kLiBOb3csIGxldCBtZSBzZWUuLi4gV2FpdCBhIHNlY29uZCwgaXMgdGhlIGBtYWNiX3BjaV9wcm9iZWAgZnVuY3Rpb24gdGhlIG9uZSBJJiMzOTttIGxvb2tpbmcgZm9yLCBhbmQgaXMgdGhhdCBkZWZpbmVkIGluIGBtYWNiX3BjaS5jYD8gR290dGEgZG91YmxlLWNoZWNrIHRoYXQgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6Mjc6c3RhdGljIGludCBtYWNiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMjgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjU9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI3LVx0LmlkX3RhYmxlID0gZGV2X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEyODpcdC5wcm9iZSAgICA9IG1hY2JfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI5LVx0LnJlbW92ZVx0ICA9IG1hY2JfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjk3NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgTGluZSBvZiBSZWFzb25pbmcqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGlzIGBtYWNiX3NldHVwX3RjYCBmdW5jdGlvbi4gSXQmIzM5O3MgcGVyZmVjdGx5IGFjY2VwdGFibGUgdG8gdHJlYXQgdGhpcyBhcyB0aGUgY2VudHJhbCBwb2ludCBmb3IgdGhlIGRyaXZlciYjMzk7cyBBUEkgaW50ZXJhY3Rpb24sIHNwZWNpZmljYWxseSBiZWNhdXNlIGl0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCB1c2VkIGJ5IGBuZG9fc2V0dXBfdGNgLiBNYWtlcyBzZW5zZS4KCk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSYjMzk7dmUgZ290IGBDT05GSUdfTUFDQmAsIGFuZCBgQ09ORklHX01BQ0JfUENJYCwgdGhvc2UgYXJlIGV4cGVjdGVkLiBCdXQgd2hhdCBhYm91dCBgQ09ORklHX05FVF9TQ0hfVEFQUklPYD8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhhdCBvbmUuIEp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIX1RBUFJJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTE2Nz1jb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXG4tLVxubmV0L3NjaGVkL0tjb25maWctMTcxLVxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xubmV0L3NjaGVkL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7VGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzNDkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzOiBRdWljayBBbmFseXNpcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7dmUgYWxyZWFkeSB2ZXJpZmllZCB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGZvY3VzZXMgc29sZWx5IG9uIHNlbGVjdGluZyBgTkVUX1NDSF9NUVBSSU9fTElCYC4gVGhpcyBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgbGlicmFyeSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNUVBSSU8gc2NoZWR1bGVyLgoKVGhlIG5leHQgcXVlc3Rpb24gaW4gbXkgaGVhZCBpczogZG9lcyBgTkVUX1NDSF9UQVBSSU9gIGhhdmUgYSBkZXBlbmRlbmN5IG9uIHRoZSBnZW5lcmFsIG5ldHdvcmtpbmcgc2NoZWR1bGVyIGZyYW1ld29yaywgYE5FVF9TQ0hFRGA/IFRoZSBub3RlICYjMzQ7WWVzLCBpdCYjMzk7cyBpbnNpZGUgYGlmIE5FVF9TQ0hFRGAmIzM0OyBjb25maXJtcyB0aGF0IGl0ICppcyogZGVwZW5kZW50LiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGRpY3RhdGVzIHRoZSBidWlsZCBvcmRlciBhbmQgZW5zdXJlcyB0aGF0IGBORVRfU0NIRURgIGlzIGVuYWJsZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIG9yIGVuYWJsZSBgTkVUX1NDSF9UQVBSSU9gLiBJJiMzOTtkIHdhbnQgdG8gZG91YmxlIGNoZWNrIGFueSBwb3RlbnRpYWwgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMgb3IgY29uZmxpY3RzIHdpdGggb3RoZXIgc2NoZWR1bGVycywganVzdCBhcyBhIG1hdHRlciBvZiBkdWUgZGlsaWdlbmNlIGdpdmVuIG91ciBleHBlcmllbmNlIGluIHRoaXMgYXJlYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnLTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2OTQKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogNjM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1BQ0IgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkgbmVlZCB0byBhc3Nlc3MgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBNQUNCIEV0aGVybmV0IGRyaXZlci4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gSSB0aGluaywgc2luY2UgdGhlIE1BQ0IgZHJpdmVyIGlzIGEgQ2FkZW5jZSBFdGhlcm5ldCBNQUMsIEkgc2hvdWxkIGVuYWJsZSBgTkVUX1ZFTkRPUl9DQURFTkNFYC4gQWxzbywgSSYjMzk7bGwgbmVlZCBgTUFDQmAsIGFuZCBgTUFDQl9QQ0lgLCB0aGUgUENJIHZhcmlhbnQgb2YgaXQsIGFsb25nc2lkZSBgTkVUX1NDSEVEYCBhbmQgYE5FVF9TQ0hfVEFQUklPYC4KCk5vdywgdGhlIGluc3RydWN0aW9ucyBtZW50aW9uIGNvZGUgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBRRU1VLCBzdWNoIGFzIFNtYXJ0TklDcyBvciBHUFVzLiBJcyBNQUNCIG9uZSBvZiB0aG9zZT8gTm8sIGl0JiMzOTtzIGEgc3RhbmRhcmQgRXRoZXJuZXQgTUFDIHVzZWQgaW4gbWFueSBTb0NzLiBRRU1VICpkb2VzKiBlbXVsYXRlIGl0IChgaHcvbmV0L2NhZGVuY2VfZ2VtLmNgKS4gRXZlbiBpZiBRRU1VICpkb2VzbiYjMzk7dCogZW11bGF0ZSB0aGUgUENJIHZlcnNpb24gb2YgTUFDQiwgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIgc2hvdWxkIHN0aWxsIGJlIGFibGUgdG8gcHJvYmUgYW5kIGZ1enogaXQgdmlhIGl0cyBuZXRkZXYgb3BlcmF0aW9ucy4gVGhlIFBDSSBmdXp6ZXIgc2hvdWxkIHdvcmsgZm9yICphbnkqIFBDSSBkcml2ZXIgYnkgbWF0Y2hpbmcgdGhlIFBDSSBJRC4gRnVydGhlcm1vcmUsIGV2ZW4gaWYgaXQmIzM5O3Mgbm90IFBDSSwgdGhlIHBsYXRmb3JtIGRldmljZSBmdXp6ZXIgY2FuIGJlIHVzZWQgdG8gaW5zdGFudGlhdGUgaXQgb3IsIGZhaWxpbmcgdGhhdCwgUUVNVSBtaWdodCB3b3JrLCBkZXBlbmRpbmcgb24gdGhlIG1hY2hpbmUgdHlwZS4gVGhhdCBzb3VuZHMgZ29vZCwgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIHRoZW4uCgpMZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBBaCwgaXQmIzM5O3MgZml4aW5nIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdpdGhpbiBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAuIFRoZSBgZW5zdF9xdWV1ZWAgaXMgYWxsb2NhdGVkIHdpdGggYGJwLSZndDtudW1fcXVldWVzYCB3aGVuIGl0IHNob3VsZCBoYXZlIGJlZW4gYWxsb2NhdGVkIHdpdGggYGNvbmYtJmd0O251bV9lbnRyaWVzYC4gVGhlIGxvb3AgdGhlbiBpdGVyYXRlcyBvdmVyIGBicC0mZ3Q7bnVtX3F1ZXVlc2AgcmF0aGVyIHRoYW4gYGNvbmYtJmd0O251bV9lbnRyaWVzYCwgd2hpY2ggY2xlYXJseSBjYXVzZXMgYW4gaXNzdWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZml4aW5nIGEgYnVnLCB3aGljaCBpcyBncmVhdC4KCkZvY3VzaW5nIG9uIHRoZSBzeW1ib2xzLCBJJiMzOTtsbCBwYXkgYXR0ZW50aW9uIHRvIGBtYWNiX3NldHVwX3RjYCwgYG1hY2Jfc2V0dXBfdGFwcmlvYCwgYW5kIG9mIGNvdXJzZSBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAuCgpUbyByZWNhcCwgdGhlIGNvbmZpZ3MgSSBuZWVkIGFyZTogYE5FVF9WRU5ET1JfQ0FERU5DRWAsIGBNQUNCYCwgYE1BQ0JfUENJYCwgYE5FVF9TQ0hFRGAsIGFuZCBgTkVUX1NDSF9UQVBSSU9gLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYE1BQ0JfUENJYCBpbmRlZWQgZGVwZW5kcyBvbiBgTUFDQiAmYW1wOyZhbXA7IFBDSWAgd2hpY2ggaXQgZG9lcy4gQWxzbywgSSYjMzk7bGwgYXNzdW1lIHRoYXQgYFBDSWAsIGBIQVNfRE1BYCwgYENPTU1PTl9DTEtgLCBhbmQgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCBhcmUgdXN1YWxseSBlbmFibGVkLgoKRmluYWxseSwgSSYjMzk7bGwgY2hlY2sgdGhhdCBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAgaXMgc3RhdGljLiBJdCBpcy4gU28sIEkmIzM5O2xsIHByb3ZpZGUgYG1hY2Jfc2V0dXBfdGNgIGFuZCBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAgYXMgdGhlIHN5bWJvbHMgdG8gZm9jdXMgb24uCgpPa2F5LCBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfVkVORE9SX0NBREVOQ0UmIzM0OywKICAgICYjMzQ7TUFDQiYjMzQ7LAogICAgJiMzNDtNQUNCX1BDSSYjMzQ7LAogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWNiX3NldHVwX3RjJiMzNDssCiAgICAmIzM0O21hY2Jfc2V0dXBfdGFwcmlvJiMzNDssCiAgICAmIzM0O21hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIE1BQ0IgZHJpdmVyJiMzOTtzIHRhcHJpbyB0cmFmZmljIGNvbnRyb2wgc2V0dXAgKG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2UpLiBJdCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIHNpemUgYW5kIGxvb3AgYm91bmRzIHRvIHVzZSB0aGUgaGFyZHdhcmUmIzM5O3MgcXVldWUgY291bnQgaW5zdGVhZCBvZiB0aGUgdXNlci1wcm92aWRlZCBlbnRyeSBjb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGluIHJlYWNoYWJsZSBuZXR3b3JrIGRyaXZlciBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfVkVORE9SX0NBREVOQ0UmIzM0OywKICAgICYjMzQ7TUFDQiYjMzQ7LAogICAgJiMzNDtNQUNCX1BDSSYjMzQ7LAogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWNiX3NldHVwX3RjJiMzNDssCiAgICAmIzM0O21hY2Jfc2V0dXBfdGFwcmlvJiMzNDssCiAgICAmIzM0O21hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIE1BQ0IgZHJpdmVyJiMzOTtzIHRhcHJpbyB0cmFmZmljIGNvbnRyb2wgc2V0dXAgKG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2UpLiBJdCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIHNpemUgYW5kIGxvb3AgYm91bmRzIHRvIHVzZSB0aGUgaGFyZHdhcmUmIzM5O3MgcXVldWUgY291bnQgaW5zdGVhZCBvZiB0aGUgdXNlci1wcm92aWRlZCBlbnRyeSBjb3VudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IGluIHJlYWNoYWJsZSBuZXR3b3JrIGRyaXZlciBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDI6NDcuMDMyNTk1OTYxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcxMDk1NTQ5MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9DQURFTkNFXCIsXG4gICAgXCJNQUNCXCIsXG4gICAgXCJNQUNCX1BDSVwiLFxuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX1RBUFJJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY2Jfc2V0dXBfdGNcIixcbiAgICBcIm1hY2Jfc2V0dXBfdGFwcmlvXCIsXG4gICAgXCJtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIE1BQ0IgZHJpdmVyJ3MgdGFwcmlvIHRyYWZmaWMgY29udHJvbCBzZXR1cCAobWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZSkuIEl0IGNoYW5nZXMgdGhlIGFsbG9jYXRpb24gc2l6ZSBhbmQgbG9vcCBib3VuZHMgdG8gdXNlIHRoZSBoYXJkd2FyZSdzIHF1ZXVlIGNvdW50IGluc3RlYWQgb2YgdGhlIHVzZXItcHJvdmlkZWQgZW50cnkgY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBpbiByZWFjaGFibGUgbmV0d29yayBkcml2ZXIgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDI6NDcuMDMyNjAwNjMxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTI1MzE4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNWE1ZTAzNDRmMTRjMjQzOTU0NGY2NjMwNDA0NzUwZTRkMzNiNDMxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDA4OjQyOjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmhcXG5pbmRleCAyZGU1NjAxN2VlMGQ2MS4uNGNjOWFhOWIyZjllOTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaFxcbkBAIC0xODQsMTIgKzE4NCw2IEBAXFxuICNkZWZpbmUgR0VNX0RDRkc4XFx0XFx0MHgwMjlDIC8qIERlc2lnbiBDb25maWcgOCAqL1xcbiAjZGVmaW5lIEdFTV9EQ0ZHMTBcXHRcXHQweDAyQTQgLyogRGVzaWduIENvbmZpZyAxMCAqL1xcbiAjZGVmaW5lIEdFTV9EQ0ZHMTJcXHRcXHQweDAyQUMgLyogRGVzaWduIENvbmZpZyAxMiAqL1xcbi0jZGVmaW5lIEdFTV9FTlNUX1NUQVJUX1RJTUVfUTBcXHQweDA4MDAgLyogRU5TVCBRMCBzdGFydCB0aW1lICovXFxuLSNkZWZpbmUgR0VNX0VOU1RfU1RBUlRfVElNRV9RMVxcdDB4MDgwNCAvKiBFTlNUIFExIHN0YXJ0IHRpbWUgKi9cXG4tI2RlZmluZSBHRU1fRU5TVF9PTl9USU1FX1EwXFx0MHgwODIwIC8qIEVOU1QgUTAgb24gdGltZSAqL1xcbi0jZGVmaW5lIEdFTV9FTlNUX09OX1RJTUVfUTFcXHQweDA4MjQgLyogRU5TVCBRMSBvbiB0aW1lICovXFxuLSNkZWZpbmUgR0VNX0VOU1RfT0ZGX1RJTUVfUTBcXHQweDA4NDAgLyogRU5TVCBRMCBvZmYgdGltZSAqL1xcbi0jZGVmaW5lIEdFTV9FTlNUX09GRl9USU1FX1ExXFx0MHgwODQ0IC8qIEVOU1QgUTEgb2ZmIHRpbWUgKi9cXG4gI2RlZmluZSBHRU1fRU5TVF9DT05UUk9MXFx0MHgwODgwIC8qIEVOU1QgY29udHJvbCByZWdpc3RlciAqL1xcbiAjZGVmaW5lIEdFTV9VU1hfQ09OVFJPTFxcdFxcdDB4MEE4MCAvKiBIaWdoIHNwZWVkIFBDUyBjb250cm9sIHJlZ2lzdGVyICovXFxuICNkZWZpbmUgR0VNX1VTWF9TVEFUVVNcXHRcXHQweDBBODggLyogSGlnaCBzcGVlZCBQQ1Mgc3RhdHVzIHJlZ2lzdGVyICovXFxuQEAgLTE0OTYsNyArMTQ5MCw2IEBAIHN0cnVjdCBtYWNiX3BsYXRmb3JtX2RhdGEge1xcbiAgKiBAc3RhcnRfdGltZV9tYXNrOiAgQml0bWFzayByZXByZXNlbnRpbmcgdGhlIHN0YXJ0IHRpbWUgZm9yIHRoZSBxdWV1ZVxcbiAgKiBAb25fdGltZV9ieXRlczogICAgXFxcIm9uXFxcIiB0aW1lIG5zZWMgZXhwcmVzc2VkIGluIGJ5dGVzXFxuICAqIEBvZmZfdGltZV9ieXRlczogICBcXFwib2ZmXFxcIiB0aW1lIG5zZWMgZXhwcmVzc2VkIGluIGJ5dGVzXFxuLSAqIEBxdWV1ZV9pZDogICAgICAgICBJZGVudGlmaWVyIGZvciB0aGUgcXVldWVcXG4gICpcXG4gICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3IgYW4gRU5TVCBxdWV1ZSxcXG4gICogdXNlZCB0byBjb250cm9sIHRpbWUtYmFzZWQgdHJhbnNtaXNzaW9uIHNjaGVkdWxpbmcgaW4gdGhlIE1BQ0IgZHJpdmVyLlxcbkBAIC0xNTA1LDcgKzE0OTgsNiBAQCBzdHJ1Y3QgbWFjYl9xdWV1ZV9lbnN0X2NvbmZpZyB7XFxuIFxcdHUzMiBzdGFydF90aW1lX21hc2s7XFxuIFxcdHUzMiBvbl90aW1lX2J5dGVzO1xcbiBcXHR1MzIgb2ZmX3RpbWVfYnl0ZXM7XFxuLVxcdHU4IHF1ZXVlX2lkO1xcbiB9O1xcbiBcXG4gI2VuZGlmIC8qIF9NQUNCX0ggKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcXG5pbmRleCBkMzk0ZjFmNDNiNjg1ZS4uZDU4NDMwZmU5YzQxZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcXG5AQCAtNDMyOSw3ICs0MzI5LDcgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWU7XFxuIFxcdHUzMiBxdWV1ZV9tYXNrO1xcbiBcXHR1OCBxdWV1ZV9pZDtcXG4tXFx0c2l6ZV90IGk7XFxuK1xcdHNpemVfdCBpLCBxO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4gXFx0aWYgKGNvbmYtXFx1MDAzZW51bV9lbnRyaWVzIFxcdTAwM2UgYnAtXFx1MDAzZW51bV9xdWV1ZXMpIHtcXG5AQCAtNDM1Nyw3ICs0MzU3LDcgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbiBcXG4tXFx0ZW5zdF9xdWV1ZSA9IGtjYWxsb2MoY29uZi1cXHUwMDNlbnVtX2VudHJpZXMsIHNpemVvZigqZW5zdF9xdWV1ZSksIEdGUF9LRVJORUwpO1xcbitcXHRlbnN0X3F1ZXVlID0ga2NhbGxvYyhicC1cXHUwMDNlbnVtX3F1ZXVlcywgc2l6ZW9mKCplbnN0X3F1ZXVlKSwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmICh1bmxpa2VseSghZW5zdF9xdWV1ZSkpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG5AQCAtNDQxNiwxMyArNDQxNiwxMiBAQCBzdGF0aWMgaW50IG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdFxcdFxcdGdvdG8gY2xlYW51cDtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0ZW5zdF9xdWV1ZVtpXS5xdWV1ZV9pZCA9IHF1ZXVlX2lkO1xcbi1cXHRcXHRlbnN0X3F1ZXVlW2ldLnN0YXJ0X3RpbWVfbWFzayA9XFxuK1xcdFxcdGVuc3RfcXVldWVbcXVldWVfaWRdLnN0YXJ0X3RpbWVfbWFzayA9XFxuIFxcdFxcdFxcdChzdGFydF90aW1lX3NlYyBcXHUwMDNjXFx1MDAzYyBHRU1fU1RBUlRfVElNRV9TRUNfT0ZGU0VUKSB8XFxuIFxcdFxcdFxcdHN0YXJ0X3RpbWVfbnNlYztcXG4tXFx0XFx0ZW5zdF9xdWV1ZVtpXS5vbl90aW1lX2J5dGVzID1cXG4rXFx0XFx0ZW5zdF9xdWV1ZVtxdWV1ZV9pZF0ub25fdGltZV9ieXRlcyA9XFxuIFxcdFxcdFxcdGVuc3RfbnNfdG9faHdfdW5pdHMoZW50cnktXFx1MDAzZWludGVydmFsLCBzcGVlZCk7XFxuLVxcdFxcdGVuc3RfcXVldWVbaV0ub2ZmX3RpbWVfYnl0ZXMgPVxcbitcXHRcXHRlbnN0X3F1ZXVlW3F1ZXVlX2lkXS5vZmZfdGltZV9ieXRlcyA9XFxuIFxcdFxcdFxcdGVuc3RfbnNfdG9faHdfdW5pdHMoY29uZi1cXHUwMDNlY3ljbGVfdGltZSAtIGVudHJ5LVxcdTAwM2VpbnRlcnZhbCwgc3BlZWQpO1xcbiBcXG4gXFx0XFx0Y29uZmlndXJlZF9xdWV1ZXMgfD0gZW50cnktXFx1MDAzZWdhdGVfbWFzaztcXG5AQCAtNDQ0OCwxNSArNDQ0NywxNCBAQCBzdGF0aWMgaW50IG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdFxcdGdlbV93cml0ZWwoYnAsIEVOU1RfQ09OVFJPTCxcXG4gXFx0XFx0XFx0ICAgcXVldWVfbWFzayBcXHUwMDNjXFx1MDAzYyBHRU1fRU5TVF9ESVNBQkxFX1FVRVVFX09GRlNFVCk7XFxuIFxcbi1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgY29uZi1cXHUwMDNlbnVtX2VudHJpZXM7IGkrKykge1xcbi1cXHRcXHRcXHRxdWV1ZSA9IFxcdTAwMjZicC1cXHUwMDNlcXVldWVzW2Vuc3RfcXVldWVbaV0ucXVldWVfaWRdO1xcbitcXHRcXHRmb3IgKHEgPSAwLCBxdWV1ZSA9IGJwLVxcdTAwM2VxdWV1ZXM7IHEgXFx1MDAzYyBicC1cXHUwMDNlbnVtX3F1ZXVlczsgKytxLCArK3F1ZXVlKSB7XFxuIFxcdFxcdFxcdC8qIENvbmZpZ3VyZSBxdWV1ZSB0aW1pbmcgcmVnaXN0ZXJzICovXFxuIFxcdFxcdFxcdHF1ZXVlX3dyaXRlbChxdWV1ZSwgRU5TVF9TVEFSVF9USU1FLFxcbi1cXHRcXHRcXHRcXHQgICAgIGVuc3RfcXVldWVbaV0uc3RhcnRfdGltZV9tYXNrKTtcXG4rXFx0XFx0XFx0XFx0ICAgICBlbnN0X3F1ZXVlW3FdLnN0YXJ0X3RpbWVfbWFzayk7XFxuIFxcdFxcdFxcdHF1ZXVlX3dyaXRlbChxdWV1ZSwgRU5TVF9PTl9USU1FLFxcbi1cXHRcXHRcXHRcXHQgICAgIGVuc3RfcXVldWVbaV0ub25fdGltZV9ieXRlcyk7XFxuK1xcdFxcdFxcdFxcdCAgICAgZW5zdF9xdWV1ZVtxXS5vbl90aW1lX2J5dGVzKTtcXG4gXFx0XFx0XFx0cXVldWVfd3JpdGVsKHF1ZXVlLCBFTlNUX09GRl9USU1FLFxcbi1cXHRcXHRcXHRcXHQgICAgIGVuc3RfcXVldWVbaV0ub2ZmX3RpbWVfYnl0ZXMpO1xcbitcXHRcXHRcXHRcXHQgICAgIGVuc3RfcXVldWVbcV0ub2ZmX3RpbWVfYnl0ZXMpO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHQvKiBFbmFibGUgRU5TVCBmb3IgYWxsIGNvbmZpZ3VyZWQgcXVldWVzIGluIG9uZSB3cml0ZSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0Mjo0Ny42MjU4MjQzMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc2NTE2MzE1MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9WRU5ET1JfQ0FERU5DRVwiLFxuICAgIFwiTUFDQlwiLFxuICAgIFwiTUFDQl9QQ0lcIixcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWNiX3NldHVwX3RjXCIsXG4gICAgXCJtYWNiX3NldHVwX3RhcHJpb1wiLFxuICAgIFwibWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIHRoZSBNQUNCIGRyaXZlcidzIHRhcHJpbyB0cmFmZmljIGNvbnRyb2wgc2V0dXAgKG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2UpLiBJdCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIHNpemUgYW5kIGxvb3AgYm91bmRzIHRvIHVzZSB0aGUgaGFyZHdhcmUncyBxdWV1ZSBjb3VudCBpbnN0ZWFkIG9mIHRoZSB1c2VyLXByb3ZpZGVkIGVudHJ5IGNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggaW4gcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI1YTVlMDM0NGYxNGMyNDM5NTQ0ZjY2MzA0MDQ3NTBlNGQzM2I0MzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwODo0Mjo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiLmhcbmluZGV4IDJkZTU2MDE3ZWUwZDYxLi40Y2M5YWE5YjJmOWU5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2IuaFxuQEAgLTE4NCwxMiArMTg0LDYgQEBcbiAjZGVmaW5lIEdFTV9EQ0ZHOFx0XHQweDAyOUMgLyogRGVzaWduIENvbmZpZyA4ICovXG4gI2RlZmluZSBHRU1fRENGRzEwXHRcdDB4MDJBNCAvKiBEZXNpZ24gQ29uZmlnIDEwICovXG4gI2RlZmluZSBHRU1fRENGRzEyXHRcdDB4MDJBQyAvKiBEZXNpZ24gQ29uZmlnIDEyICovXG4tI2RlZmluZSBHRU1fRU5TVF9TVEFSVF9USU1FX1EwXHQweDA4MDAgLyogRU5TVCBRMCBzdGFydCB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9TVEFSVF9USU1FX1ExXHQweDA4MDQgLyogRU5TVCBRMSBzdGFydCB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9PTl9USU1FX1EwXHQweDA4MjAgLyogRU5TVCBRMCBvbiB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9PTl9USU1FX1ExXHQweDA4MjQgLyogRU5TVCBRMSBvbiB0aW1lICovXG4tI2RlZmluZSBHRU1fRU5TVF9PRkZfVElNRV9RMFx0MHgwODQwIC8qIEVOU1QgUTAgb2ZmIHRpbWUgKi9cbi0jZGVmaW5lIEdFTV9FTlNUX09GRl9USU1FX1ExXHQweDA4NDQgLyogRU5TVCBRMSBvZmYgdGltZSAqL1xuICNkZWZpbmUgR0VNX0VOU1RfQ09OVFJPTFx0MHgwODgwIC8qIEVOU1QgY29udHJvbCByZWdpc3RlciAqL1xuICNkZWZpbmUgR0VNX1VTWF9DT05UUk9MXHRcdDB4MEE4MCAvKiBIaWdoIHNwZWVkIFBDUyBjb250cm9sIHJlZ2lzdGVyICovXG4gI2RlZmluZSBHRU1fVVNYX1NUQVRVU1x0XHQweDBBODggLyogSGlnaCBzcGVlZCBQQ1Mgc3RhdHVzIHJlZ2lzdGVyICovXG5AQCAtMTQ5Niw3ICsxNDkwLDYgQEAgc3RydWN0IG1hY2JfcGxhdGZvcm1fZGF0YSB7XG4gICogQHN0YXJ0X3RpbWVfbWFzazogIEJpdG1hc2sgcmVwcmVzZW50aW5nIHRoZSBzdGFydCB0aW1lIGZvciB0aGUgcXVldWVcbiAgKiBAb25fdGltZV9ieXRlczogICAgXCJvblwiIHRpbWUgbnNlYyBleHByZXNzZWQgaW4gYnl0ZXNcbiAgKiBAb2ZmX3RpbWVfYnl0ZXM6ICAgXCJvZmZcIiB0aW1lIG5zZWMgZXhwcmVzc2VkIGluIGJ5dGVzXG4tICogQHF1ZXVlX2lkOiAgICAgICAgIElkZW50aWZpZXIgZm9yIHRoZSBxdWV1ZVxuICAqXG4gICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3IgYW4gRU5TVCBxdWV1ZSxcbiAgKiB1c2VkIHRvIGNvbnRyb2wgdGltZS1iYXNlZCB0cmFuc21pc3Npb24gc2NoZWR1bGluZyBpbiB0aGUgTUFDQiBkcml2ZXIuXG5AQCAtMTUwNSw3ICsxNDk4LDYgQEAgc3RydWN0IG1hY2JfcXVldWVfZW5zdF9jb25maWcge1xuIFx0dTMyIHN0YXJ0X3RpbWVfbWFzaztcbiBcdHUzMiBvbl90aW1lX2J5dGVzO1xuIFx0dTMyIG9mZl90aW1lX2J5dGVzO1xuLVx0dTggcXVldWVfaWQ7XG4gfTtcbiBcbiAjZW5kaWYgLyogX01BQ0JfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG5pbmRleCBkMzk0ZjFmNDNiNjg1ZS4uZDU4NDMwZmU5YzQxZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG5AQCAtNDMyOSw3ICs0MzI5LDcgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0c3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlO1xuIFx0dTMyIHF1ZXVlX21hc2s7XG4gXHR1OCBxdWV1ZV9pZDtcbi1cdHNpemVfdCBpO1xuK1x0c2l6ZV90IGksIHE7XG4gXHRpbnQgZXJyO1xuIFxuIFx0aWYgKGNvbmYtXHUwMDNlbnVtX2VudHJpZXMgXHUwMDNlIGJwLVx1MDAzZW51bV9xdWV1ZXMpIHtcbkBAIC00MzU3LDcgKzQzNTcsNyBAQCBzdGF0aWMgaW50IG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuLVx0ZW5zdF9xdWV1ZSA9IGtjYWxsb2MoY29uZi1cdTAwM2VudW1fZW50cmllcywgc2l6ZW9mKCplbnN0X3F1ZXVlKSwgR0ZQX0tFUk5FTCk7XG4rXHRlbnN0X3F1ZXVlID0ga2NhbGxvYyhicC1cdTAwM2VudW1fcXVldWVzLCBzaXplb2YoKmVuc3RfcXVldWUpLCBHRlBfS0VSTkVMKTtcbiBcdGlmICh1bmxpa2VseSghZW5zdF9xdWV1ZSkpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTQ0MTYsMTMgKzQ0MTYsMTIgQEAgc3RhdGljIGludCBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRcdGdvdG8gY2xlYW51cDtcbiBcdFx0fVxuIFxuLVx0XHRlbnN0X3F1ZXVlW2ldLnF1ZXVlX2lkID0gcXVldWVfaWQ7XG4tXHRcdGVuc3RfcXVldWVbaV0uc3RhcnRfdGltZV9tYXNrID1cbitcdFx0ZW5zdF9xdWV1ZVtxdWV1ZV9pZF0uc3RhcnRfdGltZV9tYXNrID1cbiBcdFx0XHQoc3RhcnRfdGltZV9zZWMgXHUwMDNjXHUwMDNjIEdFTV9TVEFSVF9USU1FX1NFQ19PRkZTRVQpIHxcbiBcdFx0XHRzdGFydF90aW1lX25zZWM7XG4tXHRcdGVuc3RfcXVldWVbaV0ub25fdGltZV9ieXRlcyA9XG4rXHRcdGVuc3RfcXVldWVbcXVldWVfaWRdLm9uX3RpbWVfYnl0ZXMgPVxuIFx0XHRcdGVuc3RfbnNfdG9faHdfdW5pdHMoZW50cnktXHUwMDNlaW50ZXJ2YWwsIHNwZWVkKTtcbi1cdFx0ZW5zdF9xdWV1ZVtpXS5vZmZfdGltZV9ieXRlcyA9XG4rXHRcdGVuc3RfcXVldWVbcXVldWVfaWRdLm9mZl90aW1lX2J5dGVzID1cbiBcdFx0XHRlbnN0X25zX3RvX2h3X3VuaXRzKGNvbmYtXHUwMDNlY3ljbGVfdGltZSAtIGVudHJ5LVx1MDAzZWludGVydmFsLCBzcGVlZCk7XG4gXG4gXHRcdGNvbmZpZ3VyZWRfcXVldWVzIHw9IGVudHJ5LVx1MDAzZWdhdGVfbWFzaztcbkBAIC00NDQ4LDE1ICs0NDQ3LDE0IEBAIHN0YXRpYyBpbnQgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0Z2VtX3dyaXRlbChicCwgRU5TVF9DT05UUk9MLFxuIFx0XHRcdCAgIHF1ZXVlX21hc2sgXHUwMDNjXHUwMDNjIEdFTV9FTlNUX0RJU0FCTEVfUVVFVUVfT0ZGU0VUKTtcbiBcbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY29uZi1cdTAwM2VudW1fZW50cmllczsgaSsrKSB7XG4tXHRcdFx0cXVldWUgPSBcdTAwMjZicC1cdTAwM2VxdWV1ZXNbZW5zdF9xdWV1ZVtpXS5xdWV1ZV9pZF07XG4rXHRcdGZvciAocSA9IDAsIHF1ZXVlID0gYnAtXHUwMDNlcXVldWVzOyBxIFx1MDAzYyBicC1cdTAwM2VudW1fcXVldWVzOyArK3EsICsrcXVldWUpIHtcbiBcdFx0XHQvKiBDb25maWd1cmUgcXVldWUgdGltaW5nIHJlZ2lzdGVycyAqL1xuIFx0XHRcdHF1ZXVlX3dyaXRlbChxdWV1ZSwgRU5TVF9TVEFSVF9USU1FLFxuLVx0XHRcdFx0ICAgICBlbnN0X3F1ZXVlW2ldLnN0YXJ0X3RpbWVfbWFzayk7XG4rXHRcdFx0XHQgICAgIGVuc3RfcXVldWVbcV0uc3RhcnRfdGltZV9tYXNrKTtcbiBcdFx0XHRxdWV1ZV93cml0ZWwocXVldWUsIEVOU1RfT05fVElNRSxcbi1cdFx0XHRcdCAgICAgZW5zdF9xdWV1ZVtpXS5vbl90aW1lX2J5dGVzKTtcbitcdFx0XHRcdCAgICAgZW5zdF9xdWV1ZVtxXS5vbl90aW1lX2J5dGVzKTtcbiBcdFx0XHRxdWV1ZV93cml0ZWwocXVldWUsIEVOU1RfT0ZGX1RJTUUsXG4tXHRcdFx0XHQgICAgIGVuc3RfcXVldWVbaV0ub2ZmX3RpbWVfYnl0ZXMpO1xuK1x0XHRcdFx0ICAgICBlbnN0X3F1ZXVlW3FdLm9mZl90aW1lX2J5dGVzKTtcbiBcdFx0fVxuIFxuIFx0XHQvKiBFbmFibGUgRU5TVCBmb3IgYWxsIGNvbmZpZ3VyZWQgcXVldWVzIGluIG9uZSB3cml0ZSAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDI6NDcuNjI1ODI1ODkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkyNjAyMjI4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BQ0IgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgIHdpdGhpbiB0aGUgYG1hY2JfbWFpbi5jYCBmaWxlLiBSaWdodCwgdGhhdCdzIHRoZSBkcml2ZXIgZm9yIHRoZSBDYWRlbmNlIE1BQ0IvR0VNIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBTcGVjaWZpY2FsbHksIGl0J3MgbWVzc2luZyB3aXRoIGhvdyB0aGUgYGVuc3RfcXVldWVgIGlzIGhhbmRsZWQuIEl0IHNlZW1zIHRoZSBhbGxvY2F0aW9uIHNpemUgaXMgc2hpZnRpbmcgZnJvbSB1c2luZyBgY29uZi1cdTAwM2VudW1fZW50cmllc2AgdG8gbm93IHJlbHlpbmcgb24gYGJwLVx1MDAzZW51bV9xdWV1ZXNgLiBJbnRlcmVzdGluZy4gQW5kIGluc3RlYWQgb2YgdXNpbmcgYSBzdGFuZGFyZCBgaWAgZm9yIGluZGV4aW5nIGludG8gYGVuc3RfcXVldWVgLCBpdCdzIG5vdyBrZXllZCBvZmYgb2YgYHF1ZXVlX2lkYC4gVGhlbiB0aGUgbG9vcCB0byB3cml0ZSB0byB0aGUgcXVldWUgcmVnaXN0ZXJzIGl0ZXJhdGVzIGBicC1cdTAwM2VudW1fcXVldWVzYCB0aW1lcy5cblxuVGhlIGJpZyBxdWVzdGlvbiBub3cgaXMsIGlzIHRoaXMgZXZlbiAqdGVzdGFibGUqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBrbm93IHRoZXNlIENhZGVuY2UgTUFDQnMgYXJlIGNvbW1vbmx5IGZvdW5kIGluIGVtYmVkZGVkIHN5c3RlbXMg4oCTIEFSTSBTb0NzIGZyb20gQXRtZWwsIFhpbGlueCBaeW5xLCBTaUZpdmUsIHRoYXQgc29ydCBvZiB0aGluZy4gQnV0IHdhaXTigKYgd2Fzbid0IHRoZXJlIGEgUUVNVSBtb2RlbD8gQWgsIHllcywgYGh3L25ldC9jYWRlbmNlX2dlbS5jYC4gUUVNVSAqZG9lcyogZW11bGF0ZSB0aGUgQ2FkZW5jZSBHRU0sIHNvIHRoYXQgZ2l2ZXMgdXMgYSBwb3RlbnRpYWwgdGVzdGJlZCFcblxuTGV0J3Mgc2Vl4oCmIHRoaXMgcGF0Y2ggaXMgcmVsYXRlZCB0byB0aGUgYHRjYCAodHJhZmZpYyBjb250cm9sKSB0YXByaW8gb2ZmbG9hZCBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgaW4gYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgLiBDb3VsZCB3ZSBmdXp6IHRoaXM/IFRoYXQncyBkZWZpbml0ZWx5IHdvcnRoIGludmVzdGlnYXRpbmcuIEknbGwgbmVlZCB0byBjb25maXJtIHRoZSBkcml2ZXIgbmFtZSBpcyBgTUFDQmAuIEEgcXVpY2sgY2hlY2sgb2YgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZ2Agd2lsbCB0ZWxsIG1lIGZvciBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDMyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDI6NTMuNTUxODUwNzM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NjM1ODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUNCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9MjA9aWYgTkVUX1ZFTkRPUl9DQURFTkNFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzoyMjpjb25maWcgTUFDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yMy1cXHR0cmlzdGF0ZSBcXFwiQ2FkZW5jZSBNQUNCL0dFTSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzozNzpjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0zOC1cXHRib29sIFxcXCJVc2UgSUVFRSAxNTg4IGh3c3RhbXBcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjQ1OmNvbmZpZyBNQUNCX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiQ2FkZW5jZSBQQ0kgTUFDQi9HRU0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDI6NTMuNjM4NDk2OTA5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc2MzY3NDMyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYTpcblxuKipEaWdnaW5nIGludG8gdGhlIE1BQ0IgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBNQUNCIEV0aGVybmV0IGNvbnRyb2xsZXIgaXMgY29uZmlndXJlZCBhcyBhIFBDSSBkZXZpY2Ugb3IgYSBwbGF0Zm9ybSBkZXZpY2UuIEZpcnN0IHRoaW5ncyBmaXJzdCwgdGhlIHByZXNlbmNlIG9mIGBNQUNCX1BDSWAgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXMgYSBnb29kIGluZGljYXRvci4gSXQncyBhIHF1aWNrIHdheSB0byBrbm93IHRoZSBjb250cm9sbGVyIGlzIGNvbmZpZ3VyZWQgYXMgYSBQQ0kgZGV2aWNlLiBUaGlzIGltcGxpZXMgSSBzaG91bGQgZ28gbG9vayB0aGVyZSBmaXJzdCBmb3IgdGhlIHJlbGV2YW50IGRyaXZlciBpbXBsZW1lbnRhdGlvbi4gVGhhdCB3b3VsZCBtZWFuIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jYCBmaWxlLiBUaGF0J3Mgd2hlcmUgSSB3b3VsZCBleHBlY3QgdG8gZmluZCB0aGUgc3BlY2lmaWMgUENJLXJlbGF0ZWQgaW5pdGlhbGl6YXRpb24gYW5kIHNldHVwIGNvZGUgZm9yIHRoZSBNQUNCIGNvbnRyb2xsZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNjQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0Mjo1Ni40MDIxNzM3MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MzA4NDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JfcGNpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZz00NT1jb25maWcgTUFDQl9QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy01MS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6NTI6XFx0ICB3aWxsIGJlIGNhbGxlZCBtYWNiX3BjaS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19NQUNCKSArPSBtYWNiLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19NQUNCX1BDSSkgKz0gbWFjYl9wY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxOTojZGVmaW5lIFBDSV9EUklWRVJfTkFNRSBcXFwibWFjYl9wY2lcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTIwLSNkZWZpbmUgUExBVF9EUklWRVJfTkFNRSBcXFwibWFjYlxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGRldl9pZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTI1OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYWNiX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEyNi1cXHQubmFtZSAgICAgPSBQQ0lfRFJJVkVSX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMzI6bW9kdWxlX3BjaV9kcml2ZXIobWFjYl9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTMzLU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkZXZfaWRfdGFibGUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0Mjo1Ni41Mjc0ODY5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI5NDQyODI0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNQUNCIHdpdGggUENJIFdyYXBwZXIqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgYE1BQ0JfUENJYCwgd2hpY2ggaXMgZXNzZW50aWFsbHkgYSBQQ0kgd3JhcHBlciBhcm91bmQgdGhlIE1BQ0IgRXRoZXJuZXQgY29udHJvbGxlci4gQnV0IGhhbmcgb24sIHRoZSB0eXBpY2FsIFFFTVUgYGNhZGVuY2VfZ2VtYCBJJ20gdXNlZCB0byBzZWVpbmcgaXMgYSBwbGF0Zm9ybSBkZXZpY2UsIHN5c2J1cyBiYXNlZCwgYW5kIG1vc3RseSB1c2VkIG9uIEFSTSBib2FyZHMuIFRoaXMgZ2V0cyBtZSB0aGlua2luZy4uLiBjb3VsZCB3ZSBmdXp6IGBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlYD9cblxuVGhlIGFuc3dlciBpcyB5ZXMsIHBvdGVudGlhbGx5LiBTeXprYWxsZXIgY291bGQgaW5zdGFudGlhdGUgYE1BQ0JgIGFuZCBgTUFDQl9QQ0lgIGFzIGEgUENJIGRldmljZSwgaWYgaXQga25vd3MgdGhlIHJpZ2h0IFBDSSBJRHMuIEFsdGVybmF0aXZlbHksIHdlIGNvdWxkIHRyZWF0IGl0IHNpbXBseSBhcyBhIG5ldHdvcmsgZHJpdmVyLCBhbmQgdGhlbiBhY2Nlc3MgaXQgaWYgdGhlIGhhcmR3YXJlIGlzIHByZXNlbnQuXG5cbk5vdywgbGV0J3MgbG9vayBhdCBgbWFjYl9wY2kuY2AsIGRvZXMgaXQgaGF2ZSBhIGBkZXZfaWRfdGFibGVgPyBUaGF0J3Mgd2hhdCBJIG5lZWQgdG8gc2VlIHdoYXQgUENJIElEcyBhcmUgc3VwcG9ydGVkLiBVbmRlcnN0YW5kaW5nIHRoYXQgdGFibGUgaXMga2V5IHRvIG1ha2luZyB0aGlzIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMzIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MDAuODIxOTE2OTc4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTcxMTM0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZfaWRfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMDg9c3RhdGljIHZvaWQgbWFjYl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMjA6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGRldl9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjEtXFx0eyBQQ0lfVkRFVklDRShDRE5TLCBQQ0lfREVWSUNFX0lEX0NETlNfTUFDQikgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjU9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI2LVxcdC5uYW1lICAgICA9IFBDSV9EUklWRVJfTkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTI3OlxcdC5pZF90YWJsZSA9IGRldl9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI4LVxcdC5wcm9iZSAgICA9IG1hY2JfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM9MTMyPW1vZHVsZV9wY2lfZHJpdmVyKG1hY2JfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEzMzpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZGV2X2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTM0LU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MDAuOTMzNjMyODUyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyOTk0MDM5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIGRldmljZSBkcml2ZXJzIG9yIGVtYmVkZGVkIHN5c3RlbXM6XG5cbioqRGVjb2RpbmcgdGhlIFBDSSBEZXZpY2UgSUQqKlxuXG5BbHJpZ2h0LCB0aGUgc3lzdGVtJ3MgdGFsa2luZyBhYm91dCBgUENJX0RFVklDRV9JRF9DRE5TX01BQ0JgLiBJbW1lZGlhdGVseSwgbXkgYnJhaW4ga2lja3MgaW50byBnZWFyLiBUaGlzIGlzIGEgY3J1Y2lhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gVGhlIFwiUENJXCIgcHJlZml4IHRlbGxzIG1lIHRoaXMgbGlrZWx5IHJlbGF0ZXMgdG8gYSBkZXZpY2Ugb24gYSBQQ0kgYnVzLCBvYnZpb3VzbHkuIFRoZSBcIkRFVklDRV9JRFwiIHBhcnQgaXMga2V5OyBpdCdzIHRoZSB1bmlxdWUgaWRlbnRpZmllciB0aGUgUENJIGRldmljZSBwcmVzZW50cyB0byB0aGUgc3lzdGVtLiBUaGlzIElELCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBWZW5kb3IgSUQsIGlzIGhvdyB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIHRoZSBoYXJkd2FyZS5cblxuVGhlIFwiQ0ROU1wiIHBhcnQgaXMgd2hhdCByZWFsbHkgZ2V0cyBtZSBnb2luZzsgaXQncyBhIHZlcnkgcmVjb2duaXphYmxlIHZlbmRvciBwcmVmaXgsIGl0IHNpZ25pZmllcyBhIENhZGVuY2UgRGVzaWduIFN5c3RlbXMgcHJvZHVjdC4gVGhpcyBtb3N0IGxpa2VseSBuYXJyb3dzIHRoaW5ncyB0byBhbiBFdGhlcm5ldCBNQUMgKE1lZGlhIEFjY2VzcyBDb250cm9sbGVyKSBjb3JlLiBBbmQsIHRoZSBcIk1BQ0JcIiBzdWZmaXggc29saWRpZmllcyBpdC4gVGhlIG5hbWUgXCJNQUNCXCIgaXMgYSBjbGFzc2ljIGdpdmVhd2F5IHRvIHRoZSB0eXBlIG9mIGNvcmUgdXNlZC4gTW9zdCBsaWtlbHkgaXQgcmVmZXJzIHRvIGEgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBvZiBhbiBFdGhlcm5ldCBjb250cm9sbGVyLlxuXG5TbywganVzdCBmcm9tIHRoYXQgb25lIGxpbmUsIEkgY2FuIGltbWVkaWF0ZWx5IGluZmVyOiBXZSdyZSBsb29raW5nIGF0IGEgQ2FkZW5jZS1kZXNpZ25lZCBNQUMsIGxpa2VseSBhbiBFdGhlcm5ldCBjb250cm9sbGVyLCBvbiBhIFBDSSBidXMuIFRoaXMgaXMgdGhlIGRldmljZSB0aGUgc3lzdGVtIGhhcyBpZGVudGlmaWVkLiBNeSBuZXh0IHN0ZXBzIHdvdWxkIGJlIGxvb2tpbmcgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlciBhbmQgYW55IGFzc29jaWF0ZWQgZXJyYXRhIHRoYXQgSSBoYXZlIGFjY2VzcyB0by4gSSBrbm93IHdoYXQgSSdtIGxvb2tpbmcgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTM5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MDQuNDYzNTc3NTg5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU2MDczMDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBDSV9ERVZJQ0VfSURfQ0ROU19NQUNCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjIyOiNkZWZpbmUgUENJX0RFVklDRV9JRF9DRE5TX01BQ0IgMHhlMDA3XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jPTEyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGV2X2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEyMTpcXHR7IFBDSV9WREVWSUNFKENETlMsIFBDSV9ERVZJQ0VfSURfQ0ROU19NQUNCKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjItXFx0eyAwLCB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjA3LjAxOTY1OTM3N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzIwMTc1NDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbWFjYmAgZHJpdmVyIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBpdCdzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIEluaXRpYWxseSwgSSB0aG91Z2h0IHRoYXQgdGhlIFBDSSBJRCBmb3IgdGhpcyBzcGVjaWZpYyBkZXZpY2UgbWlnaHQgbm90IGJlIGRpcmVjdGx5IGluIFN5emthbGxlcidzIGBzeXMvbGludXgvZGV2X3BjaS50eHRgIG9yIGEgc2ltaWxhciBjb25maWd1cmF0aW9uIGZpbGUuIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCwgU3l6a2FsbGVyIGlzIHByZXR0eSBzbWFydCBhYm91dCBQQ0kgZnV6emluZy4gSXQgY2FuIGdlbmVyYXRlIHJhbmRvbSBQQ0kgSURzIG9yIGxldmVyYWdlIGV4aXN0aW5nIG9uZXMgdG8gYmluZCB0byBkcml2ZXJzLCBhcyBsb25nIGFzIHRoZSBQQ0kgZnV6emluZyBmdW5jdGlvbmFsaXR5IGlzIGNvbXBpbGVkIGludG8gdGhlIGZ1enppbmcgY29uZmlndXJhdGlvbi4gU28gdGhhdCdzIHBvdGVudGlhbGx5IHByb21pc2luZy5cblxuVGhlIGtleSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IGNhbiB3ZSBhY3R1YWxseSByZWFjaCBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWA/IFRoYXQncyB3aGF0IEkgd2FudCB0byBnZXQgYXQuIEkga25vdyBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAgaXMgY2FsbGVkIGZyb20gYG1hY2Jfc2V0dXBfdGNgLCBhbmQgdGhhdCBvbmUgaXMgdGhlIGBuZG9fc2V0dXBfdGNgIGNhbGxiYWNrIGZvciB0aGUgTUFDQiBkcml2ZXIuIFNpbmNlIGBuZG9fc2V0dXBfdGNgIGNhbGxiYWNrcyBhcmUgbmV0d29yayBkZXZpY2Ugb3BlcmF0aW9ucyBmb3Igc2V0dGluZyB0cmFmZmljIGNvbnRyb2wgKFRDKSBydWxlcywgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBtYWNiX3NldHVwX3RjYC4gVGhpcyBpcyB3aGVyZSBJJ2xsIGZvY3VzIG15IGludmVzdGlnYXRpb24gbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTAxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjExLjczOTgzNzE3M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY4MTA2NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjYl9zZXR1cF90Y1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDQ5Nz1zdGF0aWMgaW50IG1hY2Jfc2V0dXBfdGFwcmlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDUyNjpzdGF0aWMgaW50IG1hY2Jfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTI3LVxcdFxcdFxcdCB2b2lkICp0eXBlX2RhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ1NDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWNiX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ1NjMtXFx0Lm5kb19od3RzdGFtcF9nZXRcXHQ9IG1hY2JfaHd0c3RhbXBfZ2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDU2NDpcXHQubmRvX3NldHVwX3RjXFx0XFx0PSBtYWNiX3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDU2NS1cXHQubmRvX3R4X3RpbWVvdXRcXHRcXHQ9IG1hY2JfdHhfdGltZW91dCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MTEuODM2NjUzMTc4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2Njk5NzI0MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQUNCIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIGBtYWNiX3NldHVwX3RjYCBkZWZpbml0ZWx5IGhhbmRsZXMgdGhlIGBUQ19TRVRVUF9RRElTQ19UQVBSSU9gIGNhc2UuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgdGhlIHJpZ2h0IHNwb3QsIGFuZCB0aGUgdXNlcidzIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGB0YXByaW9gIHFkaXNjIG9uIHRoZSBuZXR3b3JrIGludGVyZmFjZSB0cmlnZ2VycyB0aGlzIHBhdGguIE5vdywgdGhlIG1lYXQgb2YgdGhlIHBhdGNoIGlzIGZpeGluZyBhbiBhbGxvY2F0aW9uIGlzc3VlIGluIGBlbnN0X3F1ZXVlYC4gQXBwYXJlbnRseSwgaXQgd2FzIGFsbG9jYXRlZCB3aXRoIGEgc2l6ZSBiYXNlZCBvbiBgY29uZi1cdTAwM2VudW1fZW50cmllc2AsIGJ1dCB0aGVuIGFjY2Vzc2VkIHdpdGggYHF1ZXVlX2lkYCwgd2hpY2ggY291bGQgYmUgKmxhcmdlciogdGhhbiBgY29uZi1cdTAwM2VudW1fZW50cmllc2AsIHBvdGVudGlhbGx5IHVwIHRvIGBicC1cdTAwM2VudW1fcXVldWVzIC0gMWAuIFRoYXQgc2NyZWFtcyBvdXQtb2YtYm91bmRzIGFjY2VzcyEgVGhlIGZpeCBpcyBzdHJhaWdodGZvcndhcmQ6IHdlIHNpbXBseSBhbGxvY2F0ZSBgZW5zdF9xdWV1ZWAgdG8gdGhlIGNvcnJlY3Qgc2l6ZSwgYGJwLVx1MDAzZW51bV9xdWV1ZXNgLCBhbmQgaXRlcmF0ZSBhcHByb3ByaWF0ZWx5LlxuXG5JcyB0aGlzIHBhdGNoIGZ1enotd29ydGh5PyBBYnNvbHV0ZWx5ISBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgY29uY3JldGUgb3V0LW9mLWJvdW5kcyBmaXggd2l0aGluIGEgbmV0d29yayBkcml2ZXIncyB0cmFmZmljIGNvbnRyb2wgc2V0dXAuIFRoYXQncyBwcmVjaXNlbHkgdGhlIGtpbmQgb2YgdnVsbmVyYWJpbGl0eSB3ZSB3YW50IHRvIGNhdGNoIHByb2FjdGl2ZWx5LlxuXG5XYWl0IGEgbWludXRlLCBjYW4gd2UgZXZlbiAqdGVzdCogdGhlIE1BQ0IgZHJpdmVyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElmIHdlIGVuYWJsZSBgQ09ORklHX01BQ0JgIGFuZCBgQ09ORklHX01BQ0JfUENJYCwgdGhlb3JldGljYWxseSwgdGhlIFBDSSBmdXp6ZXIgaW4gc3l6a2FsbGVyIGNvdWxkIGluc3RhbnRpYXRlIGEgUENJIGRldmljZS4gT3IsIFFFTVUgbWlnaHQgcHJvdmlkZSB0aGUgcGxhdGZvcm0gZGV2aWNlLiBUaGF0IG1ha2VzIGl0IG1vcmUgbGlrZWx5IHRvIGJlIHRlc3RhYmxlLiBOb3csIGJlZm9yZSBJIGdldCB0b28gZXhjaXRlZCwgbGV0IG1lIHF1aWNrbHkgY2hlY2sgaWYgYENPTkZJR19NQUNCYCBoYXMgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMuIEdvdHRhIGJlIHN1cmUgd2UgY2FuIGFjdHVhbGx5IHJ1biB0aGUgdGVzdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MTcuNTA2NjI4ODE1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Nzc1OTY1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTIwPWlmIE5FVF9WRU5ET1JfQ0FERU5DRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6MjI6Y29uZmlnIE1BQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjMtXFx0dHJpc3RhdGUgXFxcIkNhZGVuY2UgTUFDQi9HRU0gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0zNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6Mzc6Y29uZmlnIE1BQ0JfVVNFX0hXU1RBTVBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMzgtXFx0Ym9vbCBcXFwiVXNlIElFRUUgMTU4OCBod3N0YW1wXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzo0NTpjb25maWcgTUFDQl9QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIkNhZGVuY2UgUENJIE1BQ0IvR0VNIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjE3LjYwNDM5NDUxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTQxOTgyNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMgb2YgYENPTkZJR19NQUNCYDpcblxuKipBbmFseXppbmcgQ09ORklHX01BQ0IncyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gYENPTkZJR19NQUNCYC4uLiByaWdodCwgdGhhdCdzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBNZWRpYSBBY2Nlc3MgQ29udHJvbGxlciBiYXNlZCBvbiB0aGUgQVJNIFByaW1lQ2VsbCBNQUMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgdG8gc2VlIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgdGhlIHByZXJlcXVpc2l0ZXMgaXMgY3J1Y2lhbCBmb3IgYSBjbGVhbiBhbmQgZWZmaWNpZW50IGJ1aWxkLCBhbmQgZm9yIHRyb3VibGVzaG9vdGluZyBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBpbiBwbGFjZSBmb3IgdGhlIGBNQUNCYCB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgbGlrZWx5IGludm9sdmVzIGNoZWNraW5nIGZvciByZWxhdGVkIGRldmljZSBkcml2ZXJzLCBidXMgc3VwcG9ydCAobGlrZSBQbGF0Zm9ybSBidXMsIHBlcmhhcHM/KSwgY2xvY2sgc2V0dGluZ3MsIGFuZCBwb3NzaWJseSBhbnkgY3J5cHRvZ3JhcGhpYyBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgaWYgdGhlIE1BQ0Igc3VwcG9ydHMgaGFyZHdhcmUgb2ZmbG9hZCBvZiBjcnlwdG8gZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gbG9vayBmb3IgYW55IHN5bWJvbHMgaXQgcmVxdWlyZXMsIGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYHNlbGVjdGAgcmVsYXRpb25zaGlwcyB0aGF0IG1pZ2h0IHB1bGwgaW4gb3RoZXIgY29tcG9uZW50cyBpbXBsaWNpdGx5LiBGdXJ0aGVybW9yZSwgSSdsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSBjb25mbGljdGluZyBjb25maWd1cmF0aW9ucywgZW5zdXJpbmcgYENPTkZJR19NQUNCYCB3b24ndCBjbGFzaCB3aXRoIGFueSBvdGhlciBlbmFibGVkIGRyaXZlcnMuIFRoaXMgaXMgYWxsIGFib3V0IGVuc3VyaW5nIHRoZSByaWdodCBwaWVjZXMgYXJlIGluIHBsYWNlLCBzbyB0aGUgc3lzdGVtIGNhbiBydW4gc21vb3RobHkgd2l0aCB0aGlzIEV0aGVybmV0IGNvbnRyb2xsZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNDcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MzoyMS4wOTg1OTU1NTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdGlmIE5FVF9WRU5ET1JfQ0FERU5DRVxcbiAgMjE6XFx0XFxuICAyMjpcXHRjb25maWcgTUFDQlxcbiAgMjM6XFx0XFx0dHJpc3RhdGUgXFxcIkNhZGVuY2UgTUFDQi9HRU0gc3VwcG9ydFxcXCJcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gSEFTX0RNQSBcXHUwMDI2XFx1MDAyNiBDT01NT05fQ0xLXFxuICAyNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAyNjpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMjc6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFRoZSBDYWRlbmNlIE1BQ0IgZXRoZXJuZXQgaW50ZXJmYWNlIGlzIGZvdW5kIG9uIG1hbnkgQXRtZWwgQVQzMiBhbmRcXG4gIDMwOlxcdFxcdCAgQVQ5MSBwYXJ0cy4gIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgdGhlIENhZGVuY2UgR0VNIChHaWdhYml0XFxuICAzMTpcXHRcXHQgIEV0aGVybmV0IE1BQyBmb3VuZCBpbiBzb21lIEFSTSBTb0MgZGV2aWNlcykuICBTYXkgWSB0byBpbmNsdWRlXFxuICAzMjpcXHRcXHQgIHN1cHBvcnQgZm9yIHRoZSBNQUNCL0dFTSBjaGlwLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDM1OlxcdFxcdCAgd2lsbCBiZSBtYWNiLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxcbiAgMzg6XFx0XFx0Ym9vbCBcXFwiVXNlIElFRUUgMTU4OCBod3N0YW1wXFxcIlxcbiAgMzk6XFx0XFx0ZGVwZW5kcyBvbiBNQUNCXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXFxuICA0MTpcXHRcXHRkZWZhdWx0IHlcXG4gIDQyOlxcdFxcdGhlbHBcXG4gIDQzOlxcdFxcdCAgRW5hYmxlIElFRUUgMTU4OCBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBzdXBwb3J0IGZvciBNQUNCLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWcgTUFDQl9QQ0lcXG4gIDQ2OlxcdFxcdHRyaXN0YXRlIFxcXCJDYWRlbmNlIFBDSSBNQUNCL0dFTSBzdXBwb3J0XFxcIlxcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBNQUNCIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgNDg6XFx0XFx0aGVscFxcbiAgNDk6XFx0XFx0ICBUaGlzIGlzIFBDSSB3cmFwcGVyIGZvciBNQUNCIGRyaXZlci5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MjEuMDk4NjkxOTc5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjQ4OTU3ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE1BQ0IgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGUgTUFDQiBFdGhlcm5ldCBkcml2ZXIuIEl0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBhdCBmaXJzdCBnbGFuY2UuIGBDT05GSUdfTUFDQmAgaXMgZGVwZW5kZW50IG9uIGJvdGggYEhBU19ETUFgIGFuZCBgQ09NTU9OX0NMS2AsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBETUEtYmFzZWQgaGFyZHdhcmUgYW5kIGNsb2NrIG1hbmFnZW1lbnQuIFRoZW4gd2UgaGF2ZSBgQ09ORklHX01BQ0JfUENJYCwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGZvciBQQ0kgdmVyc2lvbnMsIGRlcGVuZGluZyBvbiBgTUFDQmAgYW5kIGBQQ0lgLiBTaW5jZSBib3RoIGBNQUNCYCBhbmQgYE1BQ0JfUENJYCBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZCwgSSBjb3VsZCBlbmFibGUgYm90aCwgcmlnaHQ/IFdhaXQgYSBtaW51dGUuLi4gc29tZXRoaW5nIGZlZWxzIGluY29tcGxldGUuIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBjb25zaWRlciBwb3RlbnRpYWwgdmVuZG9yLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBXaGF0IGFib3V0IGBORVRfVkVORE9SX0NBREVOQ0VgPyBJIG5lZWQgdG8gY2hlY2sgaG93IHRoYXQgaW1wYWN0cyB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzLiBJcyB0aGVyZSBhbiBpbnRlcmFjdGlvbiB0aGVyZSBJIG5lZWQgdG8gYWNjb3VudCBmb3I/IEl0IGlzIGNyaXRpY2FsIHRvIG1ha2Ugc3VyZSBhbGwgZGVwZW5kZW5jaWVzIGFyZSBhY2NvdW50ZWQgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODcyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MzoyNC4yMjM1OTAyMjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDE5XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENhZGVuY2UgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE5FVF9WRU5ET1JfQ0FERU5DRVxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiQ2FkZW5jZSBkZXZpY2VzXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG4gICA5OlxcdFxcdGRlZmF1bHQgeVxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAxNjpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxNzpcXHRcXHQgIHJlbWFpbmluZyBDYWRlbmNlIG5ldHdvcmsgY2FyZCBxdWVzdGlvbnMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmVcXG4gIDE4OlxcdFxcdCAgYXNrZWQgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MzoyNC4yMjM2NDc2NjdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4OTA1NzcyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCBDb25maWd1cmF0aW9uIENoZWNrcyoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHdoYXQgSSBuZWVkIGZvciB0aGlzIG5ldHdvcmsgc2V0dXAuIEl0IHNlZW1zIGBORVRfVkVORE9SX0NBREVOQ0VgIGlzIGEgaGFyZCByZXF1aXJlbWVudCwgbm8gc3VycHJpc2VzIHRoZXJlLCB0aGF0J3Mgd2hhdCdzIGRyaXZpbmcgdGhpcyB3aG9sZSB0aGluZy4gTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSB0YXByaW8gcWRpc2Mgd2lsbCBiZSBjb25maWd1cmVkOyBmb3IgdGhhdCwgSSBiZWxpZXZlIGBORVRfU0NIX1RBUFJJT2AgaXMgbmVjZXNzYXJ5LiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24sIG1ha2Ugc3VyZSBpdOKAmXMgZW5hYmxlZCBhbmQgdGhhdCBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cyBpbiBpdHMgZGVwZW5kZW5jaWVzLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGF2b2lkIGFueSB1bmV4cGVjdGVkIGhlYWRhY2hlcyBkb3duIHRoZSBsaW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDA5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0MzoyNy4zMTI3MDgxODhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTQ2NjYyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSF9UQVBSSU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE3MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxubmV0L3NjaGVkL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MjcuNDI4MTgxNjUyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjYxMTM1MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlcGVuZGVuY3kgQ2hlY2sgZm9yIE5FVF9TQ0hfVEFQUklPKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gRmlyc3Qgb3JkZXIgb2YgYnVzaW5lc3M6ICpORVRfU0NIX1RBUFJJTyouLi4gSSBuZWVkIHRvIGltbWVkaWF0ZWx5IHN0YXJ0IHJ1bm5pbmcgdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzLiBJIGtub3cgdGhpcyBtb2R1bGUsIG9yIGF0IGxlYXN0IHRoZSBjYXBhYmlsaXRpZXMgaXQgdW5sb2NrcywgdG91Y2hlcyBhIGZldyBrZXkgYXJlYXMuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGF0IGFsbCBvZiB0aGVtIGFyZSBpbiBwbGFjZSwgY29uZmlndXJlZCBjb3JyZWN0bHksIGFuZCBub3QgZ29pbmcgdG8gaW50cm9kdWNlIGFueSB1bmV4cGVjdGVkIGNvbmZsaWN0cy4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgbmV0d29ya2luZyBzdGFjaywgb2YgY291cnNlLCBidXQgYWxzbyBhbnl0aGluZyByZWxhdGVkIHRvIHRpbWUtc2Vuc2l0aXZlIHNjaGVkdWxpbmcsIHBvdGVudGlhbGx5IGhhcmR3YXJlIHN1cHBvcnQgZm9yIHRoaW5ncyBsaWtlIHRyYWZmaWMgc2hhcGluZyBhbmQgdGltZSBzeW5jaHJvbml6YXRpb24uIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGV2aWNlIGRyaXZlcnMuIEkgd2FudCB0byBhdm9pZCBhbnkgbmFzdHkgc3VycHJpc2VzIGRvd24gdGhlIHJvYWQsIHNvIGEgcXVpY2sgdmVyaWZpY2F0aW9uIGlzIGNydWNpYWwuIEJhc2ljYWxseSwgYSBjbGVhbiBkZXBlbmRlbmN5IG1hcCBoZXJlIGlzIHRoZSBrZXkgdG8gcHJldmVudGluZyBhIGJ1bmNoIG9mIGRlYnVnZ2luZyBsYXRlciBvbi4gTGV0J3Mgc2VlIHdoYXQgd2UncmUgbG9va2luZyBhdC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzMxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MzAuNjk0Mjk3ODczWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzIsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzI6XFx0Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuIDE3NDpcXHRcXHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXFxuIDE3NTpcXHRcXHRoZWxwXFxuIDE3NjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxcbiAxNzc6XFx0XFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0XFx0ICBTZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXFx1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAxODA6XFx0XFxuIDE4MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6NDM6MzAuNjk0NDEyNzgzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzk3NDg5OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQVBSSU8gSW1wbGVtZW50YXRpb24gZm9yIHRoZSBNQUNCIERyaXZlcioqXG5cbk9rYXksIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBgTkVUX1NDSF9UQVBSSU9gIGhlcmUuIE15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIGhvdyB0aGUgVEFQUklPIHNjaGVkdWxpbmcgZGlzY2lwbGluZSBpcyBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUgTUFDQiBkcml2ZXIuIFRoZSBmdW5jdGlvbiB0aGF0J3MgYXBwYXJlbnRseSBiZWVuIG1vZGlmaWVkIGlzIGBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlYC4gTGV0J3MganVzdCBkb3VibGUtY2hlY2ssIGlzIHRoaXMgZnVuY3Rpb24gc3RhdGljPyBZZXMsIGl0IGlzLiBBbHJpZ2h0LCB0aGF0IG1lYW5zIHRoZSBlbnRyeSBwb2ludCwgdGhlIGV4dGVybmFsbHkgdmlzaWJsZSBmdW5jdGlvbiwgaXMgZ29pbmcgdG8gYmUgYG1hY2Jfc2V0dXBfdGNgLiBXYWl0IGEgc2Vjb25k4oCmIGxvb2tpbmcgYXQgdGhlIGNhbGwgZmxvdywgYG1hY2Jfc2V0dXBfdGNgIGFjdHVhbGx5IGNhbGxzIGBtYWNiX3NldHVwX3RhcHJpb2AsIHdoaWNoIGluIHR1cm4gY2FsbHMgYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgLiBUaGVyZWZvcmUsIGBtYWNiX3NldHVwX3RjYCBpcyB0aGUgcHJpbWFyeSBmb2NhbCBzeW1ib2wgd2UncmUgYWZ0ZXIsIHRoZSBmdW5jdGlvbiB0aGF0IHJlcHJlc2VudHMgdGhlIHBvaW50IG9mIGV4dGVybmFsIGFjY2Vzcy4gU28gSSBuZWVkIHRvIHZlcmlmeSBpdHMgc2lnbmF0dXJlIGFuZCBtYWtlIHN1cmUgdGhhdCBpdCBhbGwgbWFrZXMgc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2YgVEFQUklPLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE1OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjM0LjczNDE2MzcwNFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMjQ5MDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2Jfc2V0dXBfdGNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ0OTc9c3RhdGljIGludCBtYWNiX3NldHVwX3RhcHJpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDUyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1MjY6c3RhdGljIGludCBtYWNiX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDUyNy1cXHRcXHRcXHQgdm9pZCAqdHlwZV9kYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00NTQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWFjYl9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTYzLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBtYWNiX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1NjQ6XFx0Lm5kb19zZXR1cF90Y1xcdFxcdD0gbWFjYl9zZXR1cF90YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ1NjUtXFx0Lm5kb190eF90aW1lb3V0XFx0XFx0PSBtYWNiX3R4X3RpbWVvdXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjM0LjgzNzQxNjkwOVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTQ0NzcyMzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgZm9yIFN5emthbGxlciBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0byBiZXN0IGludGVncmF0ZSB0aGUgTUFDQiBkcml2ZXIgd2l0aCBTeXprYWxsZXIsIGZvY3VzaW5nIG9uIGZ1bmN0aW9uIHN5bWJvbHMuIFRoZSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHVzZSBgbWFjYl9zZXR1cF90Y2AgZGlyZWN0bHkgYXMgYSBmb2N1cyBzeW1ib2wuIFNpbmNlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIEkgd2FzIGNvbmNlcm5lZCBhYm91dCBpbmxpbmluZy4gSG93ZXZlciwgaXQncyBhc3NpZ25lZCB0byBhbiBgbmRvX3NldHVwX3RjYCBjYWxsYmFjaywgd2hpY2ggbWVhbnMgaXQgcHJvYmFibHkgKndvbid0KiBiZSBpbmxpbmVkLiBTdGlsbCwgU3l6a2FsbGVyIGdlbmVyYWxseSBwcmVmZXJzIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGZvciBiZXR0ZXIgc3ltYm9sIHJlc29sdXRpb24uIFRoZSBwcm9tcHQgYWN0dWFsbHkgZW1waGFzaXplcyBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyFcblxuVGhlbiBJIGNvbnNpZGVyZWQgdGhlIGdlbmVyaWMgYG5kb19zZXR1cF90Y2AgY2FsbGVyIOKAkyBzb21ldGhpbmcgbGlrZSBgZGV2X3RjX3NldHVwYC4gQnV0IHRoZSBnb2FsIGhlcmUgaXMgdG8gc3BlY2lmaWNhbGx5IHRhcmdldCB0aGUgTUFDQiBkcml2ZXIsIHNvIHRoYXQgYXBwcm9hY2ggZG9lc24ndCBnaXZlIG1lIHRoZSBzcGVjaWZpYyBmb2N1cyBJIG5lZWQuIEkgcmVhbGl6ZWQgSSBjYW4ganVzdCBsaXN0IGJvdGggYG1hY2Jfc2V0dXBfdGNgIGFuZCwgaWYgcmVsZXZhbnQsIGZ1bmN0aW9ucyBsaWtlIGBtYWNiX3NldHVwX3RhcHJpb2Agb3IgYG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2VgIGluIHRoZSBTeXprYWxsZXIgY29uZmlnIGlmIHRoZXkncmUgbm90IGlubGluZWQuIEFjdHVhbGx5LCBgbWFjYl9zZXR1cF90Y2Agc2hvdWxkIGJlIGZpbmUuIEl0IGJlaW5nIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciBzZWVtcyB0byBzb2x2ZSB0aGUgaW5saW5pbmcgcHJvYmxlbS5cblxuU28sIGxldCdzIHBpdm90IGFuZCBsb29rIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoZSBNQUNCIGRyaXZlci4gSSdtIHRoaW5raW5nIGFib3V0IHBvc3NpYmlsaXRpZXMgbGlrZSBgbWFjYl9wcm9iZWAgb3IgZXZlbiBgbWFjYl9wY2lfcHJvYmVgLiBOb3csIEknbGwgZ28gY2hlY2sgYG1hY2Jfc2V0dXBfdGNgIGluIGBtYWNiX21haW4uY2AganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg2NCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0Mzo0MC4zODIxOTI0OTJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI5NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDUyNixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDUyNjpcXHRzdGF0aWMgaW50IG1hY2Jfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuNDUyNzpcXHRcXHRcXHRcXHQgdm9pZCAqdHlwZV9kYXRhKVxcbjQ1Mjg6XFx0e1xcbjQ1Mjk6XFx0XFx0aWYgKCFkZXYgfHwgIXR5cGVfZGF0YSlcXG40NTMwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjQ1MzE6XFx0XFxuNDUzMjpcXHRcXHRzd2l0Y2ggKHR5cGUpIHtcXG40NTMzOlxcdFxcdGNhc2UgVENfU0VUVVBfUURJU0NfVEFQUklPOlxcbjQ1MzQ6XFx0XFx0XFx0cmV0dXJuIG1hY2Jfc2V0dXBfdGFwcmlvKGRldiwgdHlwZV9kYXRhKTtcXG40NTM1OlxcdFxcdGRlZmF1bHQ6XFxuNDUzNjpcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuNDUzNzpcXHRcXHR9XFxuNDUzODpcXHR9XFxuNDUzOTpcXHRcXG40NTQwOlxcdHN0YXRpYyB2b2lkIG1hY2JfdHhfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcSlcXG40NTQxOlxcdHtcXG40NTQyOlxcdFxcdHN0cnVjdCBtYWNiICpicCA9IG5ldGRldl9wcml2KGRldik7XFxuNDU0MzpcXHRcXG40NTQ0OlxcdFxcdG1hY2JfdHhfcmVzdGFydChcXHUwMDI2YnAtXFx1MDAzZXF1ZXVlc1txXSk7XFxuNDU0NTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjQwLjM4MjkyNTU3MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTAyNzYyMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgTUFDQiBJbml0aWFsaXphdGlvbioqXG5cbkhtbSwgYG1hY2Jfc2V0dXBfdGNgIGlzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBXZSdyZSBkZWFsaW5nIHdpdGggZGV2aWNlIHNldHVwLCBhbmQgYSBzdGF0aWMgZnVuY3Rpb24gc3VnZ2VzdHMgaXQncyB0aWdodGx5IGJvdW5kIHRvIHRoZSBjdXJyZW50IGNvbnRleHQsIHBvdGVudGlhbGx5IG1ha2luZyBpdCBoYXJkZXIgdG8gYWRhcHQgb3IgcmV1c2UgaW4gb3RoZXIgc2NlbmFyaW9zLiBJIHdvbmRlciBpZiB0aGVyZSdzIGEgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZSB0aGF0IG1pZ2h0IG9mZmVyIG1vcmUgZmxleGliaWxpdHkuIExldCBtZSB0aGluay4uLiBwZXJoYXBzIGBtYWNiX3Byb2JlYD8gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IGEgcHJvYmUgZnVuY3Rpb24gd291bGQgYmUgZGVzaWduZWQgdG8gYmUgbW9yZSBhZGFwdGFibGUsIHBvdGVudGlhbGx5IGNhbGxlZCBpbiB2YXJ5aW5nIGNvbnRleHRzLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGF0IHBvc3NpYmlsaXR5IGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExODM2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0Mzo0My40ODU2OTE1NDFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NjU2MTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ1NzE9c3RhdGljIHZvaWQgbWFjYl9jb25maWd1cmVfY2FwcyhzdHJ1Y3QgbWFjYiAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NjE1OnN0YXRpYyBpbnQgbWFjYl9wcm9iZV9xdWV1ZXMoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKm1lbSwgYm9vbCBuYXRpdmVfaW8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTc0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1hY2JfY29uZmlnIGRlZmF1bHRfZ2VtX2NvbmZpZyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTc1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3NTU6c3RhdGljIGludCBtYWNiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTc5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3OTE6XFx0bnVtX3F1ZXVlcyA9IG1hY2JfcHJvYmVfcXVldWVzKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIG1lbSwgbmF0aXZlX2lvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3OTItXFx0aWYgKG51bV9xdWV1ZXMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTYyNDQ9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWFjYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjQ1OlxcdC5wcm9iZVxcdFxcdD0gbWFjYl9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYyNDYtXFx0LnJlbW92ZVxcdFxcdD0gbWFjYl9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjQzLjU4MTM1MzUyNloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODkyMDczNzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBNQUNCIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbkhtbSwgc28gYG1hY2JfcHJvYmVgIGlzIGFsc28gc3RhdGljLiBJJ20gYWxyZWFkeSBkZWVwIGludG8gdGhlIGxvdy1sZXZlbCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBoZXJlLCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgZ2V0cyBvZmYgdGhlIGdyb3VuZC4gTm93LCBsZXQgbWUgc2VlLi4uIFdhaXQgYSBzZWNvbmQsIGlzIHRoZSBgbWFjYl9wY2lfcHJvYmVgIGZ1bmN0aW9uIHRoZSBvbmUgSSdtIGxvb2tpbmcgZm9yLCBhbmQgaXMgdGhhdCBkZWZpbmVkIGluIGBtYWNiX3BjaS5jYD8gR290dGEgZG91YmxlLWNoZWNrIHRoYXQgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1MzMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0Mzo0Ni40NzM0MzE2NDdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NzE2MzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0yNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6Mjc6c3RhdGljIGludCBtYWNiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjU9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjctXFx0LmlkX3RhYmxlID0gZGV2X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMjg6XFx0LnByb2JlICAgID0gbWFjYl9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI5LVxcdC5yZW1vdmVcXHQgID0gbWFjYl9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjQ2LjU1OTE1Mzc3MloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTUyMjk4MDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgTGluZSBvZiBSZWFzb25pbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhpcyBgbWFjYl9zZXR1cF90Y2AgZnVuY3Rpb24uIEl0J3MgcGVyZmVjdGx5IGFjY2VwdGFibGUgdG8gdHJlYXQgdGhpcyBhcyB0aGUgY2VudHJhbCBwb2ludCBmb3IgdGhlIGRyaXZlcidzIEFQSSBpbnRlcmFjdGlvbiwgc3BlY2lmaWNhbGx5IGJlY2F1c2UgaXQncyB0aGUgZW50cnkgcG9pbnQgdXNlZCBieSBgbmRvX3NldHVwX3RjYC4gTWFrZXMgc2Vuc2UuXG5cbk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJJ3ZlIGdvdCBgQ09ORklHX01BQ0JgLCBhbmQgYENPTkZJR19NQUNCX1BDSWAsIHRob3NlIGFyZSBleHBlY3RlZC4gQnV0IHdoYXQgYWJvdXQgYENPTkZJR19ORVRfU0NIX1RBUFJJT2A/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoYXQgb25lLiBKdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk3NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjUwLjExMTQ1NDU1OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk2NTA5MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfVEFQUklPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTE2Nz1jb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzEtXFxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjUwLjIxMTExMDQyM1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjk2OTg1OTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzOiBRdWljayBBbmFseXNpcyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UndmUgYWxyZWFkeSB2ZXJpZmllZCB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGZvY3VzZXMgc29sZWx5IG9uIHNlbGVjdGluZyBgTkVUX1NDSF9NUVBSSU9fTElCYC4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBsaWJyYXJ5IHNwZWNpZmljYWxseSBmb3IgdGhlIE1RUFJJTyBzY2hlZHVsZXIuXG5cblRoZSBuZXh0IHF1ZXN0aW9uIGluIG15IGhlYWQgaXM6IGRvZXMgYE5FVF9TQ0hfVEFQUklPYCBoYXZlIGEgZGVwZW5kZW5jeSBvbiB0aGUgZ2VuZXJhbCBuZXR3b3JraW5nIHNjaGVkdWxlciBmcmFtZXdvcmssIGBORVRfU0NIRURgPyBUaGUgbm90ZSBcIlllcywgaXQncyBpbnNpZGUgYGlmIE5FVF9TQ0hFRGBcIiBjb25maXJtcyB0aGF0IGl0ICppcyogZGVwZW5kZW50LiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGRpY3RhdGVzIHRoZSBidWlsZCBvcmRlciBhbmQgZW5zdXJlcyB0aGF0IGBORVRfU0NIRURgIGlzIGVuYWJsZWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIG9yIGVuYWJsZSBgTkVUX1NDSF9UQVBSSU9gLiBJJ2Qgd2FudCB0byBkb3VibGUgY2hlY2sgYW55IHBvdGVudGlhbCB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcyBvciBjb25mbGljdHMgd2l0aCBvdGhlciBzY2hlZHVsZXJzLCBqdXN0IGFzIGEgbWF0dGVyIG9mIGR1ZSBkaWxpZ2VuY2UgZ2l2ZW4gb3VyIGV4cGVyaWVuY2UgaW4gdGhpcyBhcmVhLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzM0OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjUzLjUwODEwMDA0M1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NjE2NjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjQzOjUzLjYxMzcyNzkzN1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDQwMTM1NDczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNQUNCIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBhc3Nlc3MgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBNQUNCIEV0aGVybmV0IGRyaXZlci4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gSSB0aGluaywgc2luY2UgdGhlIE1BQ0IgZHJpdmVyIGlzIGEgQ2FkZW5jZSBFdGhlcm5ldCBNQUMsIEkgc2hvdWxkIGVuYWJsZSBgTkVUX1ZFTkRPUl9DQURFTkNFYC4gQWxzbywgSSdsbCBuZWVkIGBNQUNCYCwgYW5kIGBNQUNCX1BDSWAsIHRoZSBQQ0kgdmFyaWFudCBvZiBpdCwgYWxvbmdzaWRlIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gLlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgbWVudGlvbiBjb2RlIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gUUVNVSwgc3VjaCBhcyBTbWFydE5JQ3Mgb3IgR1BVcy4gSXMgTUFDQiBvbmUgb2YgdGhvc2U/IE5vLCBpdCdzIGEgc3RhbmRhcmQgRXRoZXJuZXQgTUFDIHVzZWQgaW4gbWFueSBTb0NzLiBRRU1VICpkb2VzKiBlbXVsYXRlIGl0IChgaHcvbmV0L2NhZGVuY2VfZ2VtLmNgKS4gRXZlbiBpZiBRRU1VICpkb2Vzbid0KiBlbXVsYXRlIHRoZSBQQ0kgdmVyc2lvbiBvZiBNQUNCLCBzeXprYWxsZXIncyBQQ0kgZnV6emVyIHNob3VsZCBzdGlsbCBiZSBhYmxlIHRvIHByb2JlIGFuZCBmdXp6IGl0IHZpYSBpdHMgbmV0ZGV2IG9wZXJhdGlvbnMuIFRoZSBQQ0kgZnV6emVyIHNob3VsZCB3b3JrIGZvciAqYW55KiBQQ0kgZHJpdmVyIGJ5IG1hdGNoaW5nIHRoZSBQQ0kgSUQuIEZ1cnRoZXJtb3JlLCBldmVuIGlmIGl0J3Mgbm90IFBDSSwgdGhlIHBsYXRmb3JtIGRldmljZSBmdXp6ZXIgY2FuIGJlIHVzZWQgdG8gaW5zdGFudGlhdGUgaXQgb3IsIGZhaWxpbmcgdGhhdCwgUUVNVSBtaWdodCB3b3JrLCBkZXBlbmRpbmcgb24gdGhlIG1hY2hpbmUgdHlwZS4gVGhhdCBzb3VuZHMgZ29vZCwgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIHRoZW4uXG5cbkxldCdzIGxvb2sgYXQgdGhlIHBhdGNoIGl0c2VsZi4gQWgsIGl0J3MgZml4aW5nIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIHdpdGhpbiBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAuIFRoZSBgZW5zdF9xdWV1ZWAgaXMgYWxsb2NhdGVkIHdpdGggYGJwLVx1MDAzZW51bV9xdWV1ZXNgIHdoZW4gaXQgc2hvdWxkIGhhdmUgYmVlbiBhbGxvY2F0ZWQgd2l0aCBgY29uZi1cdTAwM2VudW1fZW50cmllc2AuIFRoZSBsb29wIHRoZW4gaXRlcmF0ZXMgb3ZlciBgYnAtXHUwMDNlbnVtX3F1ZXVlc2AgcmF0aGVyIHRoYW4gYGNvbmYtXHUwMDNlbnVtX2VudHJpZXNgLCB3aGljaCBjbGVhcmx5IGNhdXNlcyBhbiBpc3N1ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBmaXhpbmcgYSBidWcsIHdoaWNoIGlzIGdyZWF0LlxuXG5Gb2N1c2luZyBvbiB0aGUgc3ltYm9scywgSSdsbCBwYXkgYXR0ZW50aW9uIHRvIGBtYWNiX3NldHVwX3RjYCwgYG1hY2Jfc2V0dXBfdGFwcmlvYCwgYW5kIG9mIGNvdXJzZSBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAuXG5cblRvIHJlY2FwLCB0aGUgY29uZmlncyBJIG5lZWQgYXJlOiBgTkVUX1ZFTkRPUl9DQURFTkNFYCwgYE1BQ0JgLCBgTUFDQl9QQ0lgLCBgTkVUX1NDSEVEYCwgYW5kIGBORVRfU0NIX1RBUFJJT2AuIEknbSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGF0IGBNQUNCX1BDSWAgaW5kZWVkIGRlcGVuZHMgb24gYE1BQ0IgXHUwMDI2XHUwMDI2IFBDSWAgd2hpY2ggaXQgZG9lcy4gQWxzbywgSSdsbCBhc3N1bWUgdGhhdCBgUENJYCwgYEhBU19ETUFgLCBgQ09NTU9OX0NMS2AsIGFuZCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgIGFyZSB1c3VhbGx5IGVuYWJsZWQuXG5cbkZpbmFsbHksIEknbGwgY2hlY2sgdGhhdCBgbWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZWAgaXMgc3RhdGljLiBJdCBpcy4gU28sIEknbGwgcHJvdmlkZSBgbWFjYl9zZXR1cF90Y2AgYW5kIGBtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlYCBhcyB0aGUgc3ltYm9scyB0byBmb2N1cyBvbi5cblxuT2theSwgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjk0LCJPdXRwdXRUb2tlbnMiOjE2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwODo0NDowNC4wMTUwODQ2NTlaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjcwNTA3NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9WRU5ET1JfQ0FERU5DRVwiLFxuICAgIFwiTUFDQlwiLFxuICAgIFwiTUFDQl9QQ0lcIixcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWNiX3NldHVwX3RjXCIsXG4gICAgXCJtYWNiX3NldHVwX3RhcHJpb1wiLFxuICAgIFwibWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIHRoZSBNQUNCIGRyaXZlcidzIHRhcHJpbyB0cmFmZmljIGNvbnRyb2wgc2V0dXAgKG1hY2JfdGFwcmlvX3NldHVwX3JlcGxhY2UpLiBJdCBjaGFuZ2VzIHRoZSBhbGxvY2F0aW9uIHNpemUgYW5kIGxvb3AgYm91bmRzIHRvIHVzZSB0aGUgaGFyZHdhcmUncyBxdWV1ZSBjb3VudCBpbnN0ZWFkIG9mIHRoZSB1c2VyLXByb3ZpZGVkIGVudHJ5IGNvdW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggaW4gcmVhY2hhYmxlIG5ldHdvcmsgZHJpdmVyIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9DQURFTkNFXCIsXG4gICAgXCJNQUNCXCIsXG4gICAgXCJNQUNCX1BDSVwiLFxuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX1RBUFJJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY2Jfc2V0dXBfdGNcIixcbiAgICBcIm1hY2Jfc2V0dXBfdGFwcmlvXCIsXG4gICAgXCJtYWNiX3RhcHJpb19zZXR1cF9yZXBsYWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gdGhlIE1BQ0IgZHJpdmVyJ3MgdGFwcmlvIHRyYWZmaWMgY29udHJvbCBzZXR1cCAobWFjYl90YXByaW9fc2V0dXBfcmVwbGFjZSkuIEl0IGNoYW5nZXMgdGhlIGFsbG9jYXRpb24gc2l6ZSBhbmQgbG9vcCBib3VuZHMgdG8gdXNlIHRoZSBoYXJkd2FyZSdzIHF1ZXVlIGNvdW50IGluc3RlYWQgb2YgdGhlIHVzZXItcHJvdmlkZWQgZW50cnkgY291bnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeCBpbiByZWFjaGFibGUgbmV0d29yayBkcml2ZXIgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowxhnnn[1] Phase: Succeeded StartedAt: 2026-07-25 08:44:17 +0000 UTC FinishedAt: 2026-07-25 08:44:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 08:44:17 +0000 UTC FinishedAt: 2026-07-25 08:44:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2] Phase: Succeeded StartedAt: 2026-07-25 08:44:17 +0000 UTC FinishedAt: 2026-07-25 11:10:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 08:44:18 +0000 UTC FinishedAt: 2026-07-25 11:10:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 08:44:18 +0000 UTC FinishedAt: 2026-07-25 08:44:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 08:44:18 +0000 UTC FinishedAt: 2026-07-25 08:44:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowxhnnn/series-workflowxhnnn-convert-artifact-128735791/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 08:44:41 +0000 UTC FinishedAt: 2026-07-25 09:35:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 08:44:41 +0000 UTC FinishedAt: 2026-07-25 09:35:35 +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:*06a04b71-3e07-462e-ad56-5d20f6ee8a59,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-workflowxhnnn/series-workflowxhnnn-convert-artifact-128735791/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": "48a933bb-ae80-4caa-8e32-13235c893ca5", "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-workflowxhnnn/series-workflowxhnnn-build-action-2849628149/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 08:44:41 +0000 UTC FinishedAt: 2026-07-25 09:34:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*06a04b71-3e07-462e-ad56-5d20f6ee8a59,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-workflowxhnnn/series-workflowxhnnn-convert-artifact-128735791/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": "48a933bb-ae80-4caa-8e32-13235c893ca5", "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-workflowxhnnn/series-workflowxhnnn-build-action-2849628149/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 09:35:35 +0000 UTC FinishedAt: 2026-07-25 09:35:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 09:35:35 +0000 UTC FinishedAt: 2026-07-25 09:35:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 09:35:35 +0000 UTC FinishedAt: 2026-07-25 09:35:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 09:35:35 +0000 UTC FinishedAt: 2026-07-25 09:35:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowxhnnn/series-workflowxhnnn-convert-artifact-1800583038/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 09:35:56 +0000 UTC FinishedAt: 2026-07-25 09:38:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 09:35:57 +0000 UTC FinishedAt: 2026-07-25 09:38:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*48a933bb-ae80-4caa-8e32-13235c893ca5,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-workflowxhnnn/series-workflowxhnnn-build-action-2849628149/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-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 09:38:26 +0000 UTC FinishedAt: 2026-07-25 09:38:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 09:38:26 +0000 UTC FinishedAt: 2026-07-25 09:38:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 09:38:26 +0000 UTC FinishedAt: 2026-07-25 10:17:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 09:38:26 +0000 UTC FinishedAt: 2026-07-25 10:17:25 +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:*06a04b71-3e07-462e-ad56-5d20f6ee8a59,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-workflowxhnnn/series-workflowxhnnn-convert-artifact-1800583038/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": "bfe6cd30-7465-4162-b5b0-deb8e9b58512", "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-workflowxhnnn/series-workflowxhnnn-build-action-600409042/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 09:38:26 +0000 UTC FinishedAt: 2026-07-25 10:17:11 +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:*06a04b71-3e07-462e-ad56-5d20f6ee8a59,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-workflowxhnnn/series-workflowxhnnn-convert-artifact-1800583038/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": "bfe6cd30-7465-4162-b5b0-deb8e9b58512", "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-workflowxhnnn/series-workflowxhnnn-build-action-600409042/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 10:17:25 +0000 UTC FinishedAt: 2026-07-25 10:17:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 10:17:25 +0000 UTC FinishedAt: 2026-07-25 10:17:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 10:17:25 +0000 UTC FinishedAt: 2026-07-25 10:19:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 10:17:25 +0000 UTC FinishedAt: 2026-07-25 10:19:33 +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:*bfe6cd30-7465-4162-b5b0-deb8e9b58512,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-workflowxhnnn/series-workflowxhnnn-build-action-600409042/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-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 10:19:44 +0000 UTC FinishedAt: 2026-07-25 11:10:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 10:19:44 +0000 UTC FinishedAt: 2026-07-25 11:10:29 +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":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"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:*48a933bb-ae80-4caa-8e32-13235c893ca5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bfe6cd30-7465-4162-b5b0-deb8e9b58512,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-workflowxhnnn/series-workflowxhnnn-build-action-2849628149/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-workflowxhnnn/series-workflowxhnnn-build-action-600409042/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 10:19:44 +0000 UTC FinishedAt: 2026-07-25 10:19:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 10:19:44 +0000 UTC FinishedAt: 2026-07-25 10:19:51 +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":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"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-workflowxhnnn/series-workflowxhnnn-convert-artifact-2123846531/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 10:19:44 +0000 UTC FinishedAt: 2026-07-25 10:19:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 10:19:44 +0000 UTC FinishedAt: 2026-07-25 10:19:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 10:19:44 +0000 UTC FinishedAt: 2026-07-25 10:19:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 10:19:59 +0000 UTC FinishedAt: 2026-07-25 11:10:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxhnnn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_setup_tc","macb_setup_taprio","macb_taprio_setup_replace"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI","NET_SCHED","NET_SCH_TAPRIO"],"series_id":"33e634f6-a620-464d-a80b-735cd7caaf8d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 10:19:59 +0000 UTC FinishedAt: 2026-07-25 11:10:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*48a933bb-ae80-4caa-8e32-13235c893ca5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bfe6cd30-7465-4162-b5b0-deb8e9b58512,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-workflowxhnnn/series-workflowxhnnn-build-action-2849628149/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-workflowxhnnn/series-workflowxhnnn-build-action-600409042/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-workflowxhnnn/series-workflowxhnnn-convert-artifact-2123846531/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,}