Name: series-workflowd4z69 Phase: Succeeded StartedAt: 2026-09-04 18:10:55 +0000 UTC FinishedAt: 2026-09-04 21:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[0] Phase: Succeeded StartedAt: 2026-09-04 18:10:55 +0000 UTC FinishedAt: 2026-09-04 18:14:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 18:10:55 +0000 UTC FinishedAt: 2026-09-04 18:14:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc4b95b8fee95113587e93ca116356032d271371", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IEEE802154", "MAC802154", "IEEE802154_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc4b95b8fee95113587e93ca116356032d271371", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IEEE802154", "MAC802154", "IEEE802154_HWSIM" ], "series_id": "d49c8b1c-a4c8-4be0-a22b-8460db42d8dd" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mac802154_rx_beacon_worker", "mac802154_rx_mac_cmd_worker", "mac802154_rx_dequeue", "ieee802154_subif_frame", "mac802154_flush_queued_beacons", "ieee802154_alloc_hw" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lFRUU4MDIxNTQmIzM0OywKICAgICYjMzQ7TUFDODAyMTU0JiMzNDssCiAgICAmIzM0O0lFRUU4MDIxNTRfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlciYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXImIzM0OywKICAgICYjMzQ7bWFjODAyMTU0X3J4X2RlcXVldWUmIzM0OywKICAgICYjMzQ7aWVlZTgwMjE1NF9zdWJpZl9mcmFtZSYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnMmIzM0OywKICAgICYjMzQ7aWVlZTgwMjE1NF9hbGxvY19odyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHN5bmNocm9uaXphdGlvbiBhbmQgbmV0ZGV2IHJlZmVyZW5jZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgbWFjODAyMTU0IFJYIHF1ZXVlcyAoYmVhY29uIGFuZCBNQUMgY29tbWFuZCBxdWV1ZXMpLiBJdCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgYHJ4X2xpc3RzX2xvY2tgIHRvIHByb3RlY3QgcXVldWUgbWFuaXB1bGF0aW9uIGFuZCB1c2VzIGBuZXRkZXZpY2VfdHJhY2tlcmAgKGBuZXRkZXZfaG9sZGAgLyBgbmV0ZGV2X3B1dGApIHRvIHNhZmVseSByZXRhaW4gZGV2aWNlIHJlZmVyZW5jZXMgdW50aWwgcGFja2V0cyBhcmUgcHJvY2Vzc2VkIGFuZCBmcmVlZC5cblxuS0FTQU4sIExPQ0tERVAsIGFuZCB0aGUgbmV0ZGV2IHJlZmNvdW50IHRyYWNrZXIgYWRlcXVhdGVseSBjb3ZlciB0aGUgcmlza3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgcmFjZSBjb25kaXRpb25zLCBkZWFkbG9ja3MsIGFuZCB1c2UtYWZ0ZXItZnJlZS9saWZldGltZSBidWdzKS4gYHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmpgLCBlbnN1cmluZyBhbGwgZmllbGRzIGFyZSB6ZXJvLWluaXRpYWxpemVkLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkLCBicmFuY2hlZCBvbiwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgUlggYW5kIHF1ZXVlIG1hbmFnZW1lbnQgaW4gdGhlIG1hYzgwMjE1NCBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgZGVkaWNhdGVkIHNwaW5sb2NrIChyeF9saXN0c19sb2NrKSB0byBwcm90ZWN0IHJ4X2JlYWNvbl9saXN0IGFuZCByeF9tYWNfY21kX2xpc3QsIHVwZGF0aW5nIHRoZSB3b3JrZXIgZGVxdWV1ZSBsb2dpYywgYW5kIHRha2luZy9yZWxlYXNpbmcgbmV0ZGV2aWNlIHJlZmVyZW5jZSB0cmFja2VycyAobmV0ZGV2X2hvbGQvbmV0ZGV2X3B1dCkgd2hlbiBxdWV1ZWluZyBhbmQgcHJvY2Vzc2luZyBNQUMgcGFja2V0cy4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgbWFjODAyMTU0IHZpcnR1YWwgZHJpdmVycyAobWFjODAyMTU0X2h3c2ltKSBhbmQgc3RhbmRhcmQgSUVFRSA4MDIuMTUuNCBuZXR3b3JrIGludGVyZmFjZXMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nIGZvciBjb25jdXJyZW5jeSBidWdzLCBkZWFkbG9ja3MsIGFuZCBuZXRkZXYgcmVmY291bnRpbmcgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmUyOGMzYWQ4NDIxNTc5M2YzNzQ1Y2E0ZTNkZDdlMTkyOTYzNjdiZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTg6MTI6NTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmggYi9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaFxuaW5kZXggNzZkMmNkMmUyYjMwOS4uNTczNDM3NjJkN2YwYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaFxuQEAgLTM2OSw2ICYjNDM7MzY5LDcgQEAgc3RydWN0IGNmZzgwMjE1NF9iZWFjb25fcmVxdWVzdCB7XG4gICogQG5vZGU6IE1BQyBwYWNrZXRzIHRvIHByb2Nlc3MgbGlzdCBtZW1iZXJcbiAgKiBAc2tiOiB0aGUgcmVjZWl2ZWQgc2tfYnVmZlxuICAqIEBzZGF0YTogdGhlIGludGVyZmFjZSBvbiB3aGljaCBAc2tiIHdhcyByZWNlaXZlZFxuJiM0MzsgKiBAZGV2X3RyYWNrZXI6IG5ldGRldiByZWZlcmVuY2UgaGVsZCB1bnRpbCB0aGUgZGVzY3JpcHRvciBpcyByZWxlYXNlZFxuICAqIEBwYWdlOiBwYWdlIGNvbmZpZ3VyYXRpb24gd2hlbiBAc2tiIHdhcyByZWNlaXZlZFxuICAqIEBjaGFubmVsOiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gd2hlbiBAc2tiIHdhcyByZWNlaXZlZFxuICAqL1xuQEAgLTM3Niw2ICYjNDM7Mzc3LDcgQEAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0IHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgbm9kZTtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHRzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGE7XG4mIzQzO1x0bmV0ZGV2aWNlX3RyYWNrZXIgZGV2X3RyYWNrZXI7XG4gXHR1OCBwYWdlO1xuIFx0dTggY2hhbm5lbDtcbiB9O1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmggYi9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oXG5pbmRleCA4ZjJiZmYyNjgzOTJiLi4wOTZlNmYwMzQwZGM3IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaFxuQEAgLTc0LDYgJiM0Mzs3NCw4IEBAIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsIHtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCByeF9iZWFjb25fd29yaztcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcnhfbWFjX2NtZF9saXN0O1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IHJ4X21hY19jbWRfd29yaztcbiYjNDM7XHQvKiBQcm90ZWN0cyByeF9iZWFjb25fbGlzdCBhbmQgcnhfbWFjX2NtZF9saXN0LiAqL1xuJiM0MztcdHNwaW5sb2NrX3QgcnhfbGlzdHNfbG9jaztcbiBcbiBcdC8qIEFzc29jaWF0aW9uICovXG4gXHRzdHJ1Y3QgaWVlZTgwMjE1NF9wYW5fZGV2aWNlICphc3NvY19kZXY7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjE1NC9tYWluLmMgYi9uZXQvbWFjODAyMTU0L21haW4uY1xuaW5kZXggZWExZWZlZjM1NzJhZS4uYTZhOTc2YjBkZWE1NiAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxNTQvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTU0L21haW4uY1xuQEAgLTkxLDYgJiM0Mzs5MSw3IEBAIGllZWU4MDIxNTRfYWxsb2NfaHcoc2l6ZV90IHByaXZfZGF0YV9sZW4sIGNvbnN0IHN0cnVjdCBpZWVlODAyMTU0X29wcyAqb3BzKVxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bG9jYWwtXHUwMDNlaW50ZXJmYWNlcyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZsb2NhbC1cdTAwM2VyeF9tYWNfY21kX2xpc3QpO1xuJiM0MztcdHNwaW5fbG9ja19pbml0KFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2VpZmxpc3RfbXR4KTtcbiBcbiBcdHRhc2tsZXRfc2V0dXAoXHUwMDI2bG9jYWwtXHUwMDNldGFza2xldCwgaWVlZTgwMjE1NF90YXNrbGV0X2hhbmRsZXIpO1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvcnguYyBiL25ldC9tYWM4MDIxNTQvcnguY1xuaW5kZXggY2Q4ZjJhMTE5MjBkMC4uZGYyZjYxMjhkZGQ0YSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxNTQvcnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjE1NC9yeC5jXG5AQCAtMjksMjEgJiM0MzsyOSw0MCBAQCBzdGF0aWMgaW50IGllZWU4MDIxNTRfZGVsaXZlcl9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHJldHVybiBuZXRpZl9yZWNlaXZlX3NrYihza2IpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqXG4mIzQzO21hYzgwMjE1NF9yeF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCxcbiYjNDM7XHRcdCAgICAgc3RydWN0IGxpc3RfaGVhZCAqcnhfbGlzdCxcbiYjNDM7XHRcdCAgICAgc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xuJiM0MztcbiYjNDM7XHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4mIzQzO1x0bWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChyeF9saXN0LFxuJiM0MztcdFx0XHRcdFx0ICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTtcbiYjNDM7XHRpZiAobWFjX3BrdCkge1xuJiM0MztcdFx0bGlzdF9kZWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlKTtcbiYjNDM7XHRcdGlmICghbGlzdF9lbXB0eShyeF9saXN0KSlcbiYjNDM7XHRcdFx0cXVldWVfd29yayhsb2NhbC1cdTAwM2VtYWNfd3EsIHdvcmspO1xuJiM0MztcdH1cbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG1hY19wa3Q7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsID1cbiBcdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsLCByeF9iZWFjb25fd29yayk7XG4gXHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3Q7XG4gXG4tXHRtYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2JlYWNvbl9saXN0LFxuLVx0XHRcdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QsIG5vZGUpO1xuJiM0MztcdG1hY19wa3QgPSBtYWM4MDIxNTRfcnhfZGVxdWV1ZShsb2NhbCwgXHUwMDI2bG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QsIHdvcmspO1xuIFx0aWYgKCFtYWNfcGt0KVxuIFx0XHRyZXR1cm47XG4gXG4gXHRtYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24obG9jYWwsIG1hY19wa3QtXHUwMDNlc2tiLCBtYWNfcGt0LVx1MDAzZXBhZ2UsIG1hY19wa3QtXHUwMDNlY2hhbm5lbCk7XG4gXG4tXHRsaXN0X2RlbChcdTAwMjZtYWNfcGt0LVx1MDAzZW5vZGUpO1xuIFx0a2ZyZWVfc2tiKG1hY19wa3QtXHUwMDNlc2tiKTtcbiYjNDM7XHRuZXRkZXZfcHV0KG1hY19wa3QtXHUwMDNlc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyKTtcbiBcdGtmcmVlKG1hY19wa3QpO1xuIH1cbiBcbkBAIC03Niw4ICYjNDM7OTUsNyBAQCB2b2lkIG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHR1OCBtYWNfY21kO1xuIFx0aW50IHJjO1xuIFxuLVx0bWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcdTAwMjZsb2NhbC1cdTAwM2VyeF9tYWNfY21kX2xpc3QsXG4tXHRcdFx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7XG4mIzQzO1x0bWFjX3BrdCA9IG1hYzgwMjE1NF9yeF9kZXF1ZXVlKGxvY2FsLCBcdTAwMjZsb2NhbC1cdTAwM2VyeF9tYWNfY21kX2xpc3QsIHdvcmspO1xuIFx0aWYgKCFtYWNfcGt0KVxuIFx0XHRyZXR1cm47XG4gXG5AQCAtMTIzLDggJiM0MzsxNDEsOCBAQCB2b2lkIG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHR9XG4gXG4gb3V0OlxuLVx0bGlzdF9kZWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlKTtcbiBcdGtmcmVlX3NrYihtYWNfcGt0LVx1MDAzZXNrYik7XG4mIzQzO1x0bmV0ZGV2X3B1dChtYWNfcGt0LVx1MDAzZXNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bWFjX3BrdC1cdTAwM2VkZXZfdHJhY2tlcik7XG4gXHRrZnJlZShtYWNfcGt0KTtcbiB9XG4gXG5AQCAtMjIxLDggJiM0MzsyMzksMTEgQEAgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdG1hY19wa3QtXHUwMDNlc2RhdGEgPSBzZGF0YTtcbiBcdFx0bWFjX3BrdC1cdTAwM2VwYWdlID0gc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlc2Nhbl9wYWdlO1xuIFx0XHRtYWNfcGt0LVx1MDAzZWNoYW5uZWwgPSBzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VzY2FuX2NoYW5uZWw7XG4mIzQzO1x0XHRuZXRkZXZfaG9sZChzZGF0YS1cdTAwM2VkZXYsIFx1MDAyNm1hY19wa3QtXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QpO1xuIFx0XHRxdWV1ZV93b3JrKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZW1hY193cSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfYmVhY29uX3dvcmspO1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4gXHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiBcbiBcdGNhc2UgSUVFRTgwMjE1NF9GQ19UWVBFX01BQ19DTUQ6XG5AQCAtMjMzLDggJiM0MzsyNTQsMTEgQEAgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXG4gXHRcdG1hY19wa3QtXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xuIFx0XHRtYWNfcGt0LVx1MDAzZXNkYXRhID0gc2RhdGE7XG4mIzQzO1x0XHRuZXRkZXZfaG9sZChzZGF0YS1cdTAwM2VkZXYsIFx1MDAyNm1hY19wa3QtXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfbWFjX2NtZF9saXN0KTtcbiBcdFx0cXVldWVfd29yayhzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VtYWNfd3EsIFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X21hY19jbWRfd29yayk7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiBcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIFxuIFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfQUNLOlxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvc2Nhbi5jIGIvbmV0L21hYzgwMjE1NC9zY2FuLmNcbmluZGV4IDAwNTMzOGY4OWI3NWUuLmMzYzYxZWJkZTE1NjggMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTU0L3NjYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjE1NC9zY2FuLmNcbkBAIC0xMDUsMTAgJiM0MzsxMDUsMTYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBtYWM4MDIxNTRfc2Nhbl9nZXRfY2hhbm5lbF90aW1lKHU4IGR1cmF0aW9uX29yZGVyLFxuIHN0YXRpYyB2b2lkIG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyhzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwpXG4ge1xuIFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0LCAqdG1wO1xuJiM0MztcdExJU1RfSEVBRChtYWNfcGt0X2xpc3QpO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1hY19wa3QsIHRtcCwgXHUwMDI2bG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QsIG5vZGUpIHtcbiYjNDM7XHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4mIzQzO1x0bGlzdF9zcGxpY2VfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCwgXHUwMDI2bWFjX3BrdF9saXN0KTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1hY19wa3QsIHRtcCwgXHUwMDI2bWFjX3BrdF9saXN0LCBub2RlKSB7XG4gXHRcdGxpc3RfZGVsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSk7XG4gXHRcdGtmcmVlX3NrYihtYWNfcGt0LVx1MDAzZXNrYik7XG4mIzQzO1x0XHRuZXRkZXZfcHV0KG1hY19wa3QtXHUwMDNlc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyKTtcbiBcdFx0a2ZyZWUobWFjX3BrdCk7XG4gXHR9XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lFRUU4MDIxNTQmIzM0OywKICAgICYjMzQ7TUFDODAyMTU0JiMzNDssCiAgICAmIzM0O0lFRUU4MDIxNTRfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlciYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXImIzM0OywKICAgICYjMzQ7bWFjODAyMTU0X3J4X2RlcXVldWUmIzM0OywKICAgICYjMzQ7aWVlZTgwMjE1NF9zdWJpZl9mcmFtZSYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnMmIzM0OywKICAgICYjMzQ7aWVlZTgwMjE1NF9hbGxvY19odyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgUlggYW5kIHF1ZXVlIG1hbmFnZW1lbnQgaW4gdGhlIG1hYzgwMjE1NCBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgZGVkaWNhdGVkIHNwaW5sb2NrIChyeF9saXN0c19sb2NrKSB0byBwcm90ZWN0IHJ4X2JlYWNvbl9saXN0IGFuZCByeF9tYWNfY21kX2xpc3QsIHVwZGF0aW5nIHRoZSB3b3JrZXIgZGVxdWV1ZSBsb2dpYywgYW5kIHRha2luZy9yZWxlYXNpbmcgbmV0ZGV2aWNlIHJlZmVyZW5jZSB0cmFja2VycyAobmV0ZGV2X2hvbGQvbmV0ZGV2X3B1dCkgd2hlbiBxdWV1ZWluZyBhbmQgcHJvY2Vzc2luZyBNQUMgcGFja2V0cy4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgbWFjODAyMTU0IHZpcnR1YWwgZHJpdmVycyAobWFjODAyMTU0X2h3c2ltKSBhbmQgc3RhbmRhcmQgSUVFRSA4MDIuMTUuNCBuZXR3b3JrIGludGVyZmFjZXMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nIGZvciBjb25jdXJyZW5jeSBidWdzLCBkZWFkbG9ja3MsIGFuZCBuZXRkZXYgcmVmY291bnRpbmcgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmUyOGMzYWQ4NDIxNTc5M2YzNzQ1Y2E0ZTNkZDdlMTkyOTYzNjdiZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMTg6MTI6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaCBiL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oCmluZGV4IDc2ZDJjZDJlMmIzMDkuLjU3MzQzNzYyZDdmMGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oCkBAIC0zNjksNiAmIzQzOzM2OSw3IEBAIHN0cnVjdCBjZmc4MDIxNTRfYmVhY29uX3JlcXVlc3QgewogICogQG5vZGU6IE1BQyBwYWNrZXRzIHRvIHByb2Nlc3MgbGlzdCBtZW1iZXIKICAqIEBza2I6IHRoZSByZWNlaXZlZCBza19idWZmCiAgKiBAc2RhdGE6IHRoZSBpbnRlcmZhY2Ugb24gd2hpY2ggQHNrYiB3YXMgcmVjZWl2ZWQKJiM0MzsgKiBAZGV2X3RyYWNrZXI6IG5ldGRldiByZWZlcmVuY2UgaGVsZCB1bnRpbCB0aGUgZGVzY3JpcHRvciBpcyByZWxlYXNlZAogICogQHBhZ2U6IHBhZ2UgY29uZmlndXJhdGlvbiB3aGVuIEBza2Igd2FzIHJlY2VpdmVkCiAgKiBAY2hhbm5lbDogY2hhbm5lbCBjb25maWd1cmF0aW9uIHdoZW4gQHNrYiB3YXMgcmVjZWl2ZWQKICAqLwpAQCAtMzc2LDYgJiM0MzszNzcsNyBAQCBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgewogCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCXN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YTsKJiM0MzsJbmV0ZGV2aWNlX3RyYWNrZXIgZGV2X3RyYWNrZXI7CiAJdTggcGFnZTsKIAl1OCBjaGFubmVsOwogfTsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmggYi9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oCmluZGV4IDhmMmJmZjI2ODM5MmIuLjA5NmU2ZjAzNDBkYzcgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaApAQCAtNzQsNiAmIzQzOzc0LDggQEAgc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgewogCXN0cnVjdCB3b3JrX3N0cnVjdCByeF9iZWFjb25fd29yazsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHJ4X21hY19jbWRfbGlzdDsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnhfbWFjX2NtZF93b3JrOwomIzQzOwkvKiBQcm90ZWN0cyByeF9iZWFjb25fbGlzdCBhbmQgcnhfbWFjX2NtZF9saXN0LiAqLwomIzQzOwlzcGlubG9ja190IHJ4X2xpc3RzX2xvY2s7CiAKIAkvKiBBc3NvY2lhdGlvbiAqLwogCXN0cnVjdCBpZWVlODAyMTU0X3Bhbl9kZXZpY2UgKmFzc29jX2RldjsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvbWFpbi5jIGIvbmV0L21hYzgwMjE1NC9tYWluLmMKaW5kZXggZWExZWZlZjM1NzJhZS4uYTZhOTc2YjBkZWE1NiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjE1NC9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjE1NC9tYWluLmMKQEAgLTkxLDYgJiM0Mzs5MSw3IEBAIGllZWU4MDIxNTRfYWxsb2NfaHcoc2l6ZV90IHByaXZfZGF0YV9sZW4sIGNvbnN0IHN0cnVjdCBpZWVlODAyMTU0X29wcyAqb3BzKQogCUlOSVRfTElTVF9IRUFEKCZhbXA7bG9jYWwtJmd0O2ludGVyZmFjZXMpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7bG9jYWwtJmd0O3J4X2JlYWNvbl9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2xvY2FsLSZndDtyeF9tYWNfY21kX2xpc3QpOwomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKIAltdXRleF9pbml0KCZhbXA7bG9jYWwtJmd0O2lmbGlzdF9tdHgpOwogCiAJdGFza2xldF9zZXR1cCgmYW1wO2xvY2FsLSZndDt0YXNrbGV0LCBpZWVlODAyMTU0X3Rhc2tsZXRfaGFuZGxlcik7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L3J4LmMgYi9uZXQvbWFjODAyMTU0L3J4LmMKaW5kZXggY2Q4ZjJhMTE5MjBkMC4uZGYyZjYxMjhkZGQ0YSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjE1NC9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxNTQvcnguYwpAQCAtMjksMjEgJiM0MzsyOSw0MCBAQCBzdGF0aWMgaW50IGllZWU4MDIxNTRfZGVsaXZlcl9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlyZXR1cm4gbmV0aWZfcmVjZWl2ZV9za2Ioc2tiKTsKIH0KIAomIzQzO3N0YXRpYyBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKgomIzQzO21hYzgwMjE1NF9yeF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCwKJiM0MzsJCSAgICAgc3RydWN0IGxpc3RfaGVhZCAqcnhfbGlzdCwKJiM0MzsJCSAgICAgc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQomIzQzO3sKJiM0MzsJc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0OwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtsb2NhbC0mZ3Q7cnhfbGlzdHNfbG9jayk7CiYjNDM7CW1hY19wa3QgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwocnhfbGlzdCwKJiM0MzsJCQkJCSAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7CiYjNDM7CWlmIChtYWNfcGt0KSB7CiYjNDM7CQlsaXN0X2RlbCgmYW1wO21hY19wa3QtJmd0O25vZGUpOwomIzQzOwkJaWYgKCFsaXN0X2VtcHR5KHJ4X2xpc3QpKQomIzQzOwkJCXF1ZXVlX3dvcmsobG9jYWwtJmd0O21hY193cSwgd29yayk7CiYjNDM7CX0KJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtsb2NhbC0mZ3Q7cnhfbGlzdHNfbG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiBtYWNfcGt0OwomIzQzO30KJiM0MzsKIHZvaWQgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCA9CiAJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCwgcnhfYmVhY29uX3dvcmspOwogCXN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqbWFjX3BrdDsKIAotCW1hY19wa3QgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmFtcDtsb2NhbC0mZ3Q7cnhfYmVhY29uX2xpc3QsCi0JCQkJCSAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7CiYjNDM7CW1hY19wa3QgPSBtYWM4MDIxNTRfcnhfZGVxdWV1ZShsb2NhbCwgJmFtcDtsb2NhbC0mZ3Q7cnhfYmVhY29uX2xpc3QsIHdvcmspOwogCWlmICghbWFjX3BrdCkKIAkJcmV0dXJuOwogCiAJbWFjODAyMTU0X3Byb2Nlc3NfYmVhY29uKGxvY2FsLCBtYWNfcGt0LSZndDtza2IsIG1hY19wa3QtJmd0O3BhZ2UsIG1hY19wa3QtJmd0O2NoYW5uZWwpOwogCi0JbGlzdF9kZWwoJmFtcDttYWNfcGt0LSZndDtub2RlKTsKIAlrZnJlZV9za2IobWFjX3BrdC0mZ3Q7c2tiKTsKJiM0MzsJbmV0ZGV2X3B1dChtYWNfcGt0LSZndDtzZGF0YS0mZ3Q7ZGV2LCAmYW1wO21hY19wa3QtJmd0O2Rldl90cmFja2VyKTsKIAlrZnJlZShtYWNfcGt0KTsKIH0KIApAQCAtNzYsOCAmIzQzOzk1LDcgQEAgdm9pZCBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXU4IG1hY19jbWQ7CiAJaW50IHJjOwogCi0JbWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmYW1wO2xvY2FsLSZndDtyeF9tYWNfY21kX2xpc3QsCi0JCQkJCSAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7CiYjNDM7CW1hY19wa3QgPSBtYWM4MDIxNTRfcnhfZGVxdWV1ZShsb2NhbCwgJmFtcDtsb2NhbC0mZ3Q7cnhfbWFjX2NtZF9saXN0LCB3b3JrKTsKIAlpZiAoIW1hY19wa3QpCiAJCXJldHVybjsKIApAQCAtMTIzLDggJiM0MzsxNDEsOCBAQCB2b2lkIG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJfQogCiBvdXQ6Ci0JbGlzdF9kZWwoJmFtcDttYWNfcGt0LSZndDtub2RlKTsKIAlrZnJlZV9za2IobWFjX3BrdC0mZ3Q7c2tiKTsKJiM0MzsJbmV0ZGV2X3B1dChtYWNfcGt0LSZndDtzZGF0YS0mZ3Q7ZGV2LCAmYW1wO21hY19wa3QtJmd0O2Rldl90cmFja2VyKTsKIAlrZnJlZShtYWNfcGt0KTsKIH0KIApAQCAtMjIxLDggJiM0MzsyMzksMTEgQEAgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCW1hY19wa3QtJmd0O3NkYXRhID0gc2RhdGE7CiAJCW1hY19wa3QtJmd0O3BhZ2UgPSBzZGF0YS0mZ3Q7bG9jYWwtJmd0O3NjYW5fcGFnZTsKIAkJbWFjX3BrdC0mZ3Q7Y2hhbm5lbCA9IHNkYXRhLSZndDtsb2NhbC0mZ3Q7c2Nhbl9jaGFubmVsOwomIzQzOwkJbmV0ZGV2X2hvbGQoc2RhdGEtJmd0O2RldiwgJmFtcDttYWNfcGt0LSZndDtkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7CiYjNDM7CQlzcGluX2xvY2tfYmgoJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwogCQlsaXN0X2FkZF90YWlsKCZhbXA7bWFjX3BrdC0mZ3Q7bm9kZSwgJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X2JlYWNvbl9saXN0KTsKIAkJcXVldWVfd29yayhzZGF0YS0mZ3Q7bG9jYWwtJmd0O21hY193cSwgJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X2JlYWNvbl93b3JrKTsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7c2RhdGEtJmd0O2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKIAkJcmV0dXJuIE5FVF9SWF9TVUNDRVNTOwogCiAJY2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfTUFDX0NNRDoKQEAgLTIzMyw4ICYjNDM7MjU0LDExIEBAIGllZWU4MDIxNTRfc3ViaWZfZnJhbWUoc3RydWN0IGllZWU4MDIxNTRfc3ViX2lmX2RhdGEgKnNkYXRhLAogCiAJCW1hY19wa3QtJmd0O3NrYiA9IHNrYl9nZXQoc2tiKTsKIAkJbWFjX3BrdC0mZ3Q7c2RhdGEgPSBzZGF0YTsKJiM0MzsJCW5ldGRldl9ob2xkKHNkYXRhLSZndDtkZXYsICZhbXA7bWFjX3BrdC0mZ3Q7ZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpOwomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7c2RhdGEtJmd0O2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKIAkJbGlzdF9hZGRfdGFpbCgmYW1wO21hY19wa3QtJmd0O25vZGUsICZhbXA7c2RhdGEtJmd0O2xvY2FsLSZndDtyeF9tYWNfY21kX2xpc3QpOwogCQlxdWV1ZV93b3JrKHNkYXRhLSZndDtsb2NhbC0mZ3Q7bWFjX3dxLCAmYW1wO3NkYXRhLSZndDtsb2NhbC0mZ3Q7cnhfbWFjX2NtZF93b3JrKTsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7c2RhdGEtJmd0O2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKIAkJcmV0dXJuIE5FVF9SWF9TVUNDRVNTOwogCiAJY2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfQUNLOgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjE1NC9zY2FuLmMgYi9uZXQvbWFjODAyMTU0L3NjYW4uYwppbmRleCAwMDUzMzhmODliNzVlLi5jM2M2MWViZGUxNTY4IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTU0L3NjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTU0L3NjYW4uYwpAQCAtMTA1LDEwICYjNDM7MTA1LDE2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbWFjODAyMTU0X3NjYW5fZ2V0X2NoYW5uZWxfdGltZSh1OCBkdXJhdGlvbl9vcmRlciwKIHN0YXRpYyB2b2lkIG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyhzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwpCiB7CiAJc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0LCAqdG1wOwomIzQzOwlMSVNUX0hFQUQobWFjX3BrdF9saXN0KTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtYWNfcGt0LCB0bXAsICZhbXA7bG9jYWwtJmd0O3J4X2JlYWNvbl9saXN0LCBub2RlKSB7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKJiM0MzsJbGlzdF9zcGxpY2VfaW5pdCgmYW1wO2xvY2FsLSZndDtyeF9iZWFjb25fbGlzdCwgJmFtcDttYWNfcGt0X2xpc3QpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1hY19wa3QsIHRtcCwgJmFtcDttYWNfcGt0X2xpc3QsIG5vZGUpIHsKIAkJbGlzdF9kZWwoJmFtcDttYWNfcGt0LSZndDtub2RlKTsKIAkJa2ZyZWVfc2tiKG1hY19wa3QtJmd0O3NrYik7CiYjNDM7CQluZXRkZXZfcHV0KG1hY19wa3QtJmd0O3NkYXRhLSZndDtkZXYsICZhbXA7bWFjX3BrdC0mZ3Q7ZGV2X3RyYWNrZXIpOwogCQlrZnJlZShtYWNfcGt0KTsKIAl9CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNTIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1NjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSA4MDIuMTUuNCBNQUMgTGF5ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gdGhlIGBuZXQvbWFjODAyMTU0L2Agc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYGllZWU4MDIxNTRfaS5oYCwgYG1haW4uY2AsIGByeC5jYCwgYHNjYW4uY2AsIGFuZCBgaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBicmVhayBkb3duIHRoZSBjaGFuZ2VzIGFuZCB1bmRlcnN0YW5kIHRoZWlyIGltcGxpY2F0aW9ucyBmb3IgY29uY3VycmVuY3kgYW5kIGRldmljZSB0cmFja2luZy4KCkZpcnN0LCBgY2ZnODAyMTU0X21hY19wa3RgIGhhcyB0aGlzIGBuZXRkZXZpY2VfdHJhY2tlciBkZXZfdHJhY2tlcjtgIGFkZGVkLiBUaGlzIHN1Z2dlc3RzIHRoZXkgYXJlIGluY29ycG9yYXRpbmcgYSBkZXZpY2UgdHJhY2tpbmcgbWVjaGFuaXNtIHdpdGhpbiB0aGUgcGFja2V0IHN0cnVjdHVyZSwgcHJvYmFibHkgZm9yIHJlZmVyZW5jZSBjb3VudGluZyBvciBsaWZlY3ljbGUgbWFuYWdlbWVudCwgd2hpY2ggaXMgaW1wb3J0YW50LgoKVGhlbiwgaW4gYGllZWU4MDIxNTRfbG9jYWxgIHRoZXJl4oCZcyBhIG5ldyBgc3BpbmxvY2tfdCByeF9saXN0c19sb2NrO2AuIEFoYSEgVGhpcyBpcyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLCBjbGVhcmx5IGFpbWluZyB0byBwcm90ZWN0IGNvbmN1cnJlbnQgYWNjZXNzIHRvIGByeF9iZWFjb25fbGlzdGAgYW5kIGByeF9tYWNfY21kX2xpc3RgLiBUaGUgYHNwaW5fbG9ja19pbml0YCBpbiBgbWFpbi5jYCBjb25maXJtcyB0aGlzLiBUaGlzIGlzIGdvb2QgdG8gc2VlOyBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGluIG5ldHdvcmsgc3RhY2tzIGFyZSBwcmltZSB0YXJnZXRzIGZvciByYWNlIGNvbmRpdGlvbnMsIHNvIGV4cGxpY2l0IGxvY2tpbmcgaXMgYSBuZWNlc3NpdHkuCgpUaGUgYHJ4LmNgIGNoYW5nZXMgYXJlIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYG1hYzgwMjE1NF9yeF9kZXF1ZXVlYCBpbXBsaWVzIGEgbmV3IG1ldGhvZCBmb3IgaGFuZGxpbmcgcmVjZWl2ZWQgcGFja2V0cywgYW5kIHRoZSB1c2Ugb2YgdGhlIGByeF9saXN0c19sb2NrYCB3aXRoaW4gdGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCB0aGUgdXBkYXRlcyB0byBgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJgIGFuZCBgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyYCB0byB1c2UgaXQsIHNvbGlkaWZpZXMgdGhlIGludGVudGlvbiBvZiB0aHJlYWQtc2FmZXR5LiBUaGUgYWRkaXRpb24gb2YgYGRldl90cmFja2VyYCBpbiB0aGVzZSB3b3JrZXJzIGlzIGxvZ2ljYWwuIEkgY2FuIHNlZSB0aGUgbGlzdCBtYW5hZ2VtZW50IGFuZCBwYWNrZXQgbGlmZWN5Y2xlIGFyZSBub3cgdGlnaHRseSBjb250cm9sbGVkIHdpdGhpbiB0aGUgbG9ja2luZyBjb250ZXh0LiBBbHNvLCB0aGUgYG5ldGRldl9ob2xkYCB1c2FnZSBpbiBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAgaW5kaWNhdGVzIGRldmljZSByZWZlcmVuY2UgdHJhY2tpbmcsIHRpZWQgdG8gdGhlIGBkZXZfdHJhY2tlcmAuCgpGaW5hbGx5LCB0aGUgdXBkYXRlcyB0byBgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zYCBpbiBgc2Nhbi5jYCByZWluZm9yY2UgdGhlIHNhbWUgcGF0dGVybjogbGlzdCBsb2NraW5nIGFuZCBkZXZpY2UgdHJhY2tlciBoYW5kbGluZy4gVGhleSYjMzk7cmUgbWFraW5nIGEgZ29vZCBlZmZvcnQgdG8gZW5zdXJlIGNvaGVyZW5jZSB3aGVuIG1vdmluZyBkYXRhIGJldHdlZW4gbGlzdHMgYW5kIHRocmVhZHMuCgpOb3csIGFzIGEgbmV4dCBzdGVwLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZnV6emluZyBhdHRhY2sgc3VyZmFjZS4gSXQgbG9va3MgbGlrZSBgbWFjODAyMTU0YCBoYXMgbXVsdGlwbGUgaW50ZXJmYWNlcyBmb3IgaW50ZXJhY3Rpb24sIGluY2x1ZGluZyB0aGUgYG1hYzgwMjE1NF9od3NpbWAsIG5ldGxpbmssIDZMb1dQQU4sIGFuZCBzb2NrZXRzLiBUaGF0JiMzOTtzIGdvb2Qg4oCTIHBsZW50eSBvZiBlbnRyeSBwb2ludHMgZm9yIHZ1bG5lcmFiaWxpdHkgcmVzZWFyY2ggYW5kLCBpbXBvcnRhbnRseSwgU3l6a2FsbGVyIGlzIGFscmVhZHkgZnV6emluZyBpdC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgdG8gc2VlIGlmIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0IG9yIHJlcXVpcmUgc3BlY2lmaWMga2VybmVsIGJ1aWxkIG9wdGlvbnMuIFRoaXMgc291bmRzIHByb21pc2luZywgYW5kIEkmIzM5O2xsIG5lZWQgdG8gZXZhbHVhdGUgdGhlIHBvdGVudGlhbCBmb3IgcmFjZSBjb25kaXRpb25zIHdpdGhpbiB0aGUgcHJvdGVjdGVkIGNyaXRpY2FsIHNlY3Rpb25zLiBJIGV4cGVjdCB0aGVyZSB0byBiZSBhIGdvb2QgYXR0YWNrIHN1cmZhY2UsIEkmIzM5O2xsIG1vdmUgb24gdG8gYSBsaW5lLWJ5LWxpbmUgcmV2aWV3IG9mIHRoZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxNTQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTU0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxNTQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L21hYzgwMjE1NC9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjE1NFxubmV0L21hYzgwMjE1NC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjE1LjQgU29mdCBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxNTQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjczNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgRGVwZW5kZW5jeSBEZWVwIERpdmUqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYG5ldC9tYWM4MDIxNTRgIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IG1vdmUgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIGBLY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBmaW5kIGFsbCB0aGUganVpY3kgZGV0YWlscyBhYm91dCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gYWZ0ZXIgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBkaWZmZXJlbnQgZmVhdHVyZXMsIG9wdGlvbnMsIGFuZCBwb3RlbnRpYWxseSBvdGhlciBzdWJzeXN0ZW1zLiBUaGlzIGlzIHRoZSBxdWlja2VzdCB3YXkgdG8gdW5kZXJzdGFuZCB3aGF0IGVuYWJsaW5nIG9yIGRpc2FibGluZyBhIHBhcnRpY3VsYXIgTUFDODAyMTU0IGNvbXBvbmVudCBhY3R1YWxseSAqZG9lcyogaW4gdGhlIGdyYW5kIHNjaGVtZSBvZiB0aGUga2VybmVsIGJ1aWxkLiBJJiMzOTttIHRoaW5raW5nIEkgY2FuIHF1aWNrbHkgc2VlIHdoYXQgb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcyBpdCByZWxpZXMgb24sIGFuZCBwZXJoYXBzIGlkZW50aWZ5IHBvdGVudGlhbCBjb25mbGljdHMgb3IgYXJlYXMgd2hlcmUgSSBuZWVkIHRvIHBheSBleHRyYSBhdHRlbnRpb24uIFRpbWUgdG8gZ2V0IHRvIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgYEtjb25maWdgIHJldmVhbHMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxNTQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNQUM4MDIxNTRcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTUuNCBTb2Z0IE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjE1NClcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSUVFRTgwMjE1NFxuICAgNTpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuICAgNjpcdFx0c2VsZWN0IENSWVBUT1xuICAgNzpcdFx0c2VsZWN0IENSWVBUT19BVVRIRU5DXG4gICA4Olx0XHRzZWxlY3QgQ1JZUFRPX0NDTVxuICAgOTpcdFx0c2VsZWN0IENSWVBUT19DVFJcbiAgMTA6XHRcdHNlbGVjdCBDUllQVE9fQUVTXG4gIDExOlx0XHRoZWxwXG4gIDEyOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGhhcmR3YXJlIGluZGVwZW5kZW50IElFRUUgODAyLjE1LjRcbiAgMTM6XHRcdCAgbmV0d29ya2luZyBzdGFjayBmb3IgU29mdE1BQyBkZXZpY2VzICh0aGUgb25lcyBpbXBsZW1lbnRpbmdcbiAgMTQ6XHRcdCAgb25seSBQSFkgbGV2ZWwgb2YgSUVFRSA4MDIuMTUuNCBzdGFuZGFyZCkuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIE5vdGU6IHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbmVpdGhlciBjZXJ0aWZpZWQsIG5vciBmZWF0dXJlXG4gIDE3Olx0XHQgIGNvbXBsZXRlISBDb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zIGhhc24mIzM5O3RcbiAgMTg6XHRcdCAgYmVlbiB0ZXN0ZWQgeWV0IVxuICAxOTpcdFxuICAyMDpcdFx0ICBJZiB5b3UgcGxhbiB0byB1c2UgSGFyZE1BQyBJRUVFIDgwMi4xNS40IGRldmljZXMsIHlvdSBjYW5cbiAgMjE6XHRcdCAgc2F5IE4gaGVyZS4gQWx0ZXJuYXRpdmVseSB5b3UgY2FuIHNheSBNIHRvIGNvbXBpbGUgaXQgYXNcbiAgMjI6XHRcdCAgbW9kdWxlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMDUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBJRUVFIDgwMi4xNS40IExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBicm9hZGVyIGNvbnRleHQgaGVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgSUVFRSA4MDIuMTUuNCBjb25maWd1cmF0aW9uIGFuZCBkcml2ZXIgc3RydWN0dXJlLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBgbmV0L2llZWU4MDIxNTQvS2NvbmZpZ2AgZmlsZSBzZWVtcyBsaWtlIGEgbG9naWNhbCBmaXJzdCBzdG9wLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgaGlnaC1sZXZlbCB2aWV3IG9mIHRoZSBjb25maWd1cmFibGUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGF0IG5ldHdvcmtpbmcgYXJlYS4gQWx0ZXJuYXRpdmVseSwgYGRyaXZlcnMvbmV0L2llZWU4MDIxNTQvYCBtaWdodCBiZSBmcnVpdGZ1bCwgYXMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgYWN0dWFsIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgcmVzaWRlLiBJJiMzOTttIGhvcGluZyB0byBpZGVudGlmeSByZWxhdGVkIGNvbXBvbmVudHMuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhpbmdzIGxpa2UgdGhlIG92ZXJhbGwgSUVFRSA4MDIuMTUuNCBzdXBwb3J0IGFuZCBhbnkgc2ltdWxhdGlvbi1yZWxhdGVkIG1vZHVsZXMsIHBlcmhhcHMgc29tZXRoaW5nIGxpa2UgYE1BQzgwMjE1NF9IV1NJTWAuIEkgbmVlZCB0byBlbnN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgcmVsZXZhbnQgbW9kdWxlcywgdGhhdCBwZXJoYXBzIHByb3ZpZGUgc29tZSBpbnNpZ2h0LiBUaGlzIHF1aWNrIHN3ZWVwIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHNlbnNlIG9mIHRoZSBhdmFpbGFibGUgYnVpbGRpbmcgYmxvY2tzIGFuZCB3aGljaCBvbmVzIGFyZSBwb3RlbnRpYWxseSBrZXkgdG8gdGhlIG5leHQgcGhhc2Ugb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSUVFRTgwMjE1NCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pZWVlODAyMTU0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pZWVlODAyMTU0LzZsb3dwYW4vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9LY29uZmlnOjI6Y29uZmlnIElFRUU4MDIxNTRfNkxPV1BBTlxubmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDs2bG93cGFuIHN1cHBvcnQgb3ZlciBJRUVFIDgwMi4xNS40XCYjMzQ7XG4tLVxubmV0L2llZWU4MDIxNTQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L2llZWU4MDIxNTQvS2NvbmZpZzoyOm1lbnVjb25maWcgSUVFRTgwMjE1NFxubmV0L2llZWU4MDIxNTQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SUVFRSBTdGQgODAyLjE1LjQgTG93LVJhdGUgV2lyZWxlc3MgUGVyc29uYWwgQXJlYSBOZXR3b3JrcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2llZWU4MDIxNTQvS2NvbmZpZz0xND1pZiBJRUVFODAyMTU0XG5uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTE1LVxubmV0L2llZWU4MDIxNTQvS2NvbmZpZzoxNjpjb25maWcgSUVFRTgwMjE1NF9OTDgwMjE1NF9FWFBFUklNRU5UQUxcbm5ldC9pZWVlODAyMTU0L0tjb25maWctMTctXHRib29sIFwmIzM0O0lFRUUgODAyLjE1LjQgZXhwZXJpbWVudGFsIG5ldGxpbmsgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pZWVlODAyMTU0L0tjb25maWctMjAtXG5uZXQvaWVlZTgwMjE1NC9LY29uZmlnOjIxOmNvbmZpZyBJRUVFODAyMTU0X1NPQ0tFVFxubmV0L2llZWU4MDIxNTQvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O0lFRUUgODAyLjE1LjQgc29ja2V0IGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwODcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgbWFjODAyMTU0X2h3c2ltYCBNb2R1bGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb3IgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBtYWM4MDIxNTRfaHdzaW1gIGNvbXBvbmVudC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIGl0cyBuYW1lLCBpcyB0aGF0IGl0JiMzOTtzIHByb2JhYmx5IHJlbGF0ZWQgdG8gaGFyZHdhcmUgc2ltdWxhdGlvbiBmb3IgODAyLjE1LjQgbmV0d29ya2luZy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgc3RhbmRhcmQga2VybmVsIGRyaXZlciBsb2NhdGlvbnMuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2VzOiAgdGhlIGBkcml2ZXJzL25ldC9pZWVlODAyMTU0L2AgYW5kIGBkcml2ZXJzL25ldC9tYWM4MDIxNTQvYCBkaXJlY3Rvcmllcy4gSXQmIzM5O3MgYWxzbyBwb3NzaWJsZSBpdCYjMzk7cyBiZWVuIG1vdmVkIGludG8ganVzdCBgbmV0L21hYzgwMjE1NC9gIGF0IHNvbWUgcG9pbnQsIHNvIEkgc2hvdWxkIGJlIHN1cmUgdG8gY2hlY2sgdGhlcmUgYXMgd2VsbC4gSSYjMzk7bSBhc3N1bWluZyBpdCB3aWxsIGxpa2VseSBiZSBhIG1vZHVsZSBvciBwYXJ0IG9mIGEgbGFyZ2VyIG1vZHVsZSwgYW5kIEkmIzM5O20gaG9waW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBjb25zaXN0ZW50IGVub3VnaCB0byBtYWtlIHRoaXMgcXVpY2suIEhvcGVmdWxseSwgdGhpcyBpc24mIzM5O3QgYSBjdXN0b20gaW1wbGVtZW50YXRpb24gYnVyaWVkIGRlZXAgd2l0aGluIGEgcHJvamVjdC1zcGVjaWZpYyBwYXRoLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDODAyMTU0X0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz0zMz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqbWFjODAyMTU0aHdzaW1fZGV2O1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zNC1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6MzU6LyogTUFDODAyMTU0X0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM2LXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHk7XG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz0zNDU9c3RhdGljIGludCBod3NpbV9kZWxfcmFkaW9fbmwoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM0OS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6MzUwOlx0aWYgKCFpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSlcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMzUxLVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMzUyLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozNTM6XHRpZHggPSBubGFfZ2V0X3UzMihpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM1NC1cbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTM2OD1zdGF0aWMgaW50IGFwcGVuZF9yYWRpb19tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGh3c2ltX3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMzc0LVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozNzU6XHRyZXQgPSBubGFfcHV0X3UzMihza2IsIE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lELCBwaHktXHUwMDNlaWR4KTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMzc2LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM4NS1cdG5sX2VkZ2VzID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKHNrYixcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6Mzg2Olx0XHRcdFx0XHQgTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRVMpO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zODctXHRpZiAoIW5sX2VkZ2VzKSB7XG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zOTMtXHRcdG5sX2VkZ2UgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcoc2tiLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozOTQ6XHRcdFx0XHRcdFx0TUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM5NS1cdFx0aWYgKCFubF9lZGdlKSB7XG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00MDAtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjQwMTpcdFx0cmV0ID0gbmxhX3B1dF91MzIoc2tiLCBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lELFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00MDItXHRcdFx0XHQgIGUtXHUwMDNlZW5kcG9pbnQtXHUwMDNlaWR4KTtcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTQxMC1cdFx0ZWluZm8gPSByY3VfZGVyZWZlcmVuY2UoZS1cdTAwM2VpbmZvKTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NDExOlx0XHRyZXQgPSBubGFfcHV0X3U4KHNrYiwgTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9MUUksXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTQxMi1cdFx0XHRcdCBlaW5mby1cdTAwM2VscWkpO1xuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9NDI5PXN0YXRpYyBpbnQgaHdzaW1fZ2V0X3JhZGlvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBod3NpbV9waHkgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTQzNi1cdGhkciA9IGdlbmxtc2dfcHV0KHNrYiwgcG9ydGlkLCBzZXEsIFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCBmbGFncyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NDM3Olx0XHRcdCAgTUFDODAyMTU0X0hXU0lNX0NNRF9HRVRfUkFESU8pO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00MzgtXHRpZiAoIWhkcilcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTQ1Nj1zdGF0aWMgaW50IGh3c2ltX2dldF9yYWRpb19ubChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNDYxLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo0NjI6XHRpZiAoIWluZm8tXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSURdKVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00NjMtXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo0NjQ6XHRpZHggPSBubGFfZ2V0X3UzMihpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTQ2NS1cbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTUyNj1zdGF0aWMgc3RydWN0IGh3c2ltX3BoeSAqaHdzaW1fZ2V0X3JhZGlvX2J5X2lkKHVpbnQzMl90IGlkeClcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTUzNy1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBod3NpbV9lZGdlX3BvbGljeVtNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX01BWCAmIzQzOyAxXSA9IHtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTM5Olx0W01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSURdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTQwOlx0W01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTFFJXSA9IHsgLnR5cGUgPSBOTEFfVTggfSxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNTQxLX07XG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz01Nzc9c3RhdGljIGludCBod3NpbV9uZXdfZWRnZV9ubChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01Nzgte1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo1Nzk6XHRzdHJ1Y3QgbmxhdHRyICplZGdlX2F0dHJzW01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTUFYICYjNDM7IDFdO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01ODAtXHRzdHJ1Y3QgaHdzaW1fcGh5ICpwaHlfdjAsICpwaHlfdjE7XG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01ODMtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjU4NDpcdGlmICghaW5mby1cdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRF0gfHxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTg1Olx0ICAgICFpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0VER0VdKVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01ODYtXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01ODctXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjU4ODpcdGlmIChubGFfcGFyc2VfbmVzdGVkX2RlcHJlY2F0ZWQoZWRnZV9hdHRycywgTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVgsIGluZm8tXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0sIGh3c2ltX2VkZ2VfcG9saWN5LCBOVUxMKSlcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNTg5LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNTkwLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo1OTE6XHRpZiAoIWVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9FTkRQT0lOVF9JRF0pXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU5Mi1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU5My1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTk0Olx0djAgPSBubGFfZ2V0X3UzMihpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjU5NTpcdHYxID0gbmxhX2dldF91MzIoZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lEXSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU5Ni1cbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTYzOT1zdGF0aWMgaW50IGh3c2ltX2RlbF9lZGdlX25sKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0MC17XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY0MTpcdHN0cnVjdCBubGF0dHIgKmVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVggJiM0MzsgMV07XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0Mi1cdHN0cnVjdCBod3NpbV9waHkgKnBoeV92MDtcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0NS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NjQ2Olx0aWYgKCFpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSB8fFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2NDc6XHQgICAgIWluZm8tXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0pXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0OC1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0OS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NjUwOlx0aWYgKG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZChlZGdlX2F0dHJzLCBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX01BWCwgaW5mby1cdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19FREdFXSwgaHdzaW1fZWRnZV9wb2xpY3ksIE5VTEwpKVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NTEtXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NTItXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY1MzpcdGlmICghZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lEXSlcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjU0LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjU1LVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2NTY6XHR2MCA9IG5sYV9nZXRfdTMyKGluZm8tXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSURdKTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NjU3Olx0djEgPSBubGFfZ2V0X3UzMihlZGdlX2F0dHJzW01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSURdKTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjU4LVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9Njg1PXN0YXRpYyBpbnQgaHdzaW1fc2V0X2VkZ2VfbHFpKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY4Ni17XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY4NzpcdHN0cnVjdCBubGF0dHIgKmVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVggJiM0MzsgMV07XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY4OC1cdHN0cnVjdCBod3NpbV9lZGdlX2luZm8gKmVpbmZvLCAqZWluZm9fb2xkO1xuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjkzLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2OTQ6XHRpZiAoIWluZm8tXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSURdIHx8XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY5NTpcdCAgICAhaW5mby1cdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19FREdFXSlcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjk2LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjk3LVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2OTg6XHRpZiAobmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKGVkZ2VfYXR0cnMsIE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTUFYLCBpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0VER0VdLCBod3NpbV9lZGdlX3BvbGljeSwgTlVMTCkpXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY5OS1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTcwMC1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzAxOlx0aWYgKCFlZGdlX2F0dHJzW01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSURdIHx8XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjcwMjpcdCAgICAhZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0xRSV0pXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTcwMy1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTcwNC1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzA1Olx0djAgPSBubGFfZ2V0X3UzMihpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjcwNjpcdHYxID0gbmxhX2dldF91MzIoZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lEXSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjcwNzpcdGxxaSA9IG5sYV9nZXRfdTgoZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0xRSV0pO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03MDgtXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NDEtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc0MjovKiBNQUM4MDIxNTRfSFdTSU0gbmV0bGluayBwb2xpY3kgKi9cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzQzLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W01BQzgwMjE1NF9IV1NJTV9BVFRSX01BWCAmIzQzOyAxXSA9IHtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzQ1Olx0W01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc0NjpcdFtNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19FREdFXSA9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc0NzpcdFtNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19FREdFU10gPSB7IC50eXBlID0gTkxBX05FU1RFRCB9LFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NDgtfTtcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTc1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIGh3c2ltX25sX29wc1tdID0ge1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NTItXHR7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc1MzpcdFx0LmNtZCA9IE1BQzgwMjE1NF9IV1NJTV9DTURfTkVXX1JBRElPLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NTQtXHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc1OC1cdHtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzU5Olx0XHQuY21kID0gTUFDODAyMTU0X0hXU0lNX0NNRF9ERUxfUkFESU8sXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc2MC1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzY0LVx0e1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3NjU6XHRcdC5jbWQgPSBNQUM4MDIxNTRfSFdTSU1fQ01EX0dFVF9SQURJTyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzY2LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NzAtXHR7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc3MTpcdFx0LmNtZCA9IE1BQzgwMjE1NF9IV1NJTV9DTURfTkVXX0VER0UsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc3Mi1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzc2LVx0e1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3Nzc6XHRcdC5jbWQgPSBNQUM4MDIxNTRfSFdTSU1fQ01EX0RFTF9FREdFLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NzgtXHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc4Mi1cdHtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzgzOlx0XHQuY21kID0gTUFDODAyMTU0X0hXU0lNX0NNRF9TRVRfRURHRSxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzg0LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz03OTA9c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseSBfX3JvX2FmdGVyX2luaXQgPSB7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc5MTpcdC5uYW1lID0gXCYjMzQ7TUFDODAyMTU0X0hXU0lNXCYjMzQ7LFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTItXHQudmVyc2lvbiA9IDEsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc5MzpcdC5tYXhhdHRyID0gTUFDODAyMTU0X0hXU0lNX0FUVFJfTUFYLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTQtXHQucG9saWN5ID0gaHdzaW1fZ2VubF9wb2xpY3ksXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTctXHQubl9zbWFsbF9vcHMgPSBBUlJBWV9TSVpFKGh3c2ltX25sX29wcyksXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc5ODpcdC5yZXN2X3N0YXJ0X29wID0gTUFDODAyMTU0X0hXU0lNX0NNRF9ORVdfRURHRSAmIzQzOyAxLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTktXHQubWNncnBzID0gaHdzaW1fbWNncnBzLFxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9ODE0PXN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBzdHJ1Y3QgaHdzaW1fcGh5ICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy04MjMtXHRkYXRhID0gZ2VubG1zZ19wdXQobWNhc3Rfc2tiLCAwLCAwLCBcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgMCxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6ODI0Olx0XHRcdCAgIE1BQzgwMjE1NF9IV1NJTV9DTURfTkVXX1JBRElPKTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtODI1LVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MTojaWZuZGVmIF9fTUFDODAyMTU0X0hXU0lNX0hcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjojZGVmaW5lIF9fTUFDODAyMTU0X0hXU0lNX0hcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMy1cbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTUtICpcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NjogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9VTlNQRUM6IHVuc3BlY2lmaWVkIGNvbW1hbmQgdG8gY2F0Y2ggZXJyb3JcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NzogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9HRVRfUkFESU86IGZldGNoIGluZm9ybWF0aW9uIGFib3V0IGV4aXN0aW5nIHJhZGlvc1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo4OiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX1NFVF9SQURJTzogY2hhbmdlIHJhZGlvIHBhcmFtZXRlcnMgZHVyaW5nIHJ1bnRpbWVcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6OTogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9ORVdfUkFESU86IGNyZWF0ZSBhIG5ldyByYWRpbyB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTEwLSAqXHRyZXR1cm5zIHRoZSByYWRpbyBJRCAoXHUwMDNlPSAwKSBvciBuZWdhdGl2ZSBvbiBlcnJvcnMsIGlmIHN1Y2Nlc3NmdWxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMTEtICpcdHRoZW4gbXVsdGljYXN0IHRoZSByZXN1bHRcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MTI6ICogQE1BQzgwMjE1NF9IV1NJTV9DTURfREVMX1JBRElPOiBkZXN0cm95IGEgcmFkaW8sIHJlcGx5IGlzIG11bHRpY2FzdGVkXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjEzOiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX0dFVF9FREdFOiBmZXRjaCBpbmZvcm1hdGlvbiBhYm91dCBleGlzdGluZyBlZGdlc1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoxNDogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9TRVRfRURHRTogY2hhbmdlIGVkZ2UgcGFyYW1ldGVycyBkdXJpbmcgcnVudGltZVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoxNTogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9ERUxfRURHRTogZGVsZXRlIGVkZ2VzIGJldHdlZW4gcmFkaW9zXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjE2OiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19FREdFOiBjcmVhdGUgYSBuZXcgZWRnZSBiZXR3ZWVuIHR3byByYWRpb3NcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MTc6ICogQF9fTUFDODAyMTU0X0hXU0lNX0NNRF9NQVg6IGVudW0gbGltaXRcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMTgtICovXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oPTE5PWVudW0ge1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoyMDpcdE1BQzgwMjE1NF9IV1NJTV9DTURfVU5TUEVDLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC0yMS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjI6XHRNQUM4MDIxNTRfSFdTSU1fQ01EX0dFVF9SQURJTyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjM6XHRNQUM4MDIxNTRfSFdTSU1fQ01EX1NFVF9SQURJTyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjQ6XHRNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19SQURJTyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjU6XHRNQUM4MDIxNTRfSFdTSU1fQ01EX0RFTF9SQURJTyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMjYtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjI3Olx0TUFDODAyMTU0X0hXU0lNX0NNRF9HRVRfRURHRSxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6Mjg6XHRNQUM4MDIxNTRfSFdTSU1fQ01EX1NFVF9FREdFLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoyOTpcdE1BQzgwMjE1NF9IV1NJTV9DTURfREVMX0VER0UsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjMwOlx0TUFDODAyMTU0X0hXU0lNX0NNRF9ORVdfRURHRSxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMzEtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjMyOlx0X19NQUM4MDIxNTRfSFdTSU1fQ01EX01BWCxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMzMtfTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMzQtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjM1OiNkZWZpbmUgTUFDODAyMTU0X0hXU0lNX0NNRF9NQVggKF9fTUFDODAyMTU0X0hXU0lNX01BWCAtIDEpXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTM2LVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMzgtICpcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6Mzk6ICogQE1BQzgwMjE1NF9IV1NJTV9BVFRSX1VOU1BFQzogdW5zcGVjaWZpZWQgYXR0cmlidXRlIHRvIGNhdGNoIGVycm9yXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjQwOiAqIEBNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRDogdTMyIGF0dHJpYnV0ZSB0byBpZGVudGlmeSB0aGUgcmFkaW9cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NDE6ICogQE1BQzgwMjE1NF9IV1NJTV9BVFRSX0VER0U6IG5lc3RlZCBhdHRyaWJ1dGUgb2YgZWRnZXNcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NDI6ICogQE1BQzgwMjE1NF9IV1NJTV9BVFRSX0VER0VTOiBsaXN0IGlmIG5lc3RlZCBhdHRyaWJ1dGVzIHdoaWNoIGNvbnRhaW5zIHRoZVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC00My0gKlx0ZWRnZSBpbmZvcm1hdGlvbiBhY2NvcmRpbmcgdGhlIHJhZGlvIGlkXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjQ0OiAqIEBfX01BQzgwMjE1NF9IV1NJTV9BVFRSX01BWDogZW51bSBsaW1pdFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC00NS0gKi9cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg9NDY9ZW51bSB7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjQ3Olx0TUFDODAyMTU0X0hXU0lNX0FUVFJfVU5TUEVDLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo0ODpcdE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lELFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo0OTpcdE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0VER0UsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjUwOlx0TUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRVMsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjUxOlx0X19NQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVgsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTUyLX07XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTUzLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo1NDojZGVmaW5lIE1BQzgwMjE1NF9IV1NJTV9BVFRSX01BWCAoX19NQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVggLSAxKVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC01NS1cbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTU3LSAqXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjU4OiAqIEBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX1VOU1BFQzogdW5zcGVjaWZpZWQgYXR0cmlidXRlIHRvIGNhdGNoIGVycm9yXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjU5OiAqIEBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lEOiByYWRpbyBpZCB3aGVyZSB0aGUgZWRnZSBwb2ludHMgdG9cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NjA6ICogQE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTFFJOiBMUUkgdmFsdWUgd2hpY2ggdGhlIGVuZHBvaW50IHJhZGlvIHdpbGxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNjEtICpcdHJlY2VpdmUgZm9yIHRoaXMgZWRnZVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2MjogKiBAX19NQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVg6IGVudW0gbGltaXRcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNjMtICovXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oPTY0PWVudW0ge1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2NTpcdE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfVU5TUEVDLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2NjpcdE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSUQsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjY3Olx0TUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9MUUksXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjY4Olx0X19NQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX01BWCxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNjktfTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNzAtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjcxOiNkZWZpbmUgTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVggKF9fTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVggLSAxKVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC03Mi1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NzM6I2VuZGlmIC8qIF9fTUFDODAyMTU0X0hXU0lNX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyODkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIE1BQzgwMjE1NCBIYXJkd2FyZSBTaW11bGF0aW9uIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGUgcGxhY2UgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2wgZm9yIHRoZSBNQUM4MDIxNTQgaGFyZHdhcmUgc2ltdWxhdGlvbiBmZWF0dXJlICh0aGF0JiMzOTtzIGBNQUM4MDIxNTRfSFdTSU1gIGlmIG1lbW9yeSBzZXJ2ZXMsIGJ1dCBhIHF1aWNrIGNoZWNrIG5ldmVyIGh1cnRzKSBpcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9pZWVlODAyMTU0L0tjb25maWdgIGZpbGUuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3Mgc3RydWN0dXJlZCBpbiB0aGUgc3RhbmRhcmQgd2F5LCBzbyB0aGUgS2NvbmZpZyBzaG91bGQgZGVmaW5lIGl0cyBjb25kaXRpb25hbCBpbmNsdXNpb24gYW5kIGFueSBkZXBlbmRlbmNpZXMuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIGFuZCB3aGF0IG90aGVyIGZlYXR1cmVzIG9yIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHRpZWQgdG8gaXRzIHVzZS4gSXQgbWlnaHQgc2hlZCBsaWdodCBvbiBob3cgdGhlIHNpbXVsYXRpb24gaXMgaW1wbGVtZW50ZWQgb3IgYW55IGFzc3VtcHRpb25zIG1hZGUgYWJvdXQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYWJzdHJhY3Rpb24uIFRpbWUgdG8gdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbiBhbmQgZ2V0IGEgcHJvcGVyIGxvb2sgYXQgaG93IHRoaXMgc2ltdWxhdGVkIGRldmljZSBpcyBjb250cm9sbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxNTRfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pZWVlODAyMTU0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2MDIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB3b3JraW5nIG9uIHRoaXM6CgoqKkxvY2F0aW5nIHRoZSBLY29uZmlnIEZpbGUgZm9yIDgwMi4xNS40IERyaXZlcnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIElFRUUgODAyLjE1LjQgbmV0d29ya2luZyBkcml2ZXJzLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgc3RhbmRhcmQgYXBwcm9hY2ggaW4gdGhlIExpbnV4IGtlcm5lbCB3b3VsZCBiZSB0byBsb29rIHdpdGhpbiB0aGUgcmVsZXZhbnQgZHJpdmVyIGRpcmVjdG9yeS4gSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCYjMzk7cyB1bmRlciBgZHJpdmVycy9uZXQvYCwgYW5kIHNpbmNlIGl0JiMzOTtzIDgwMi4xNS40LCB0aGF0IG5hcnJvd3MgaXQgZG93biB0byBgaWVlZTgwMjE1NGAuIFRoZXJlZm9yZSwgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGBkcml2ZXJzL25ldC9pZWVlODAyMTU0YCBkaXJlY3RvcnkuIFRoZSBLY29uZmlnIGZpbGUgc2hvdWxkIHJlc2lkZSB0aGVyZSwgb3IgcGVyaGFwcyBpbiBhIHN1YmRpcmVjdG9yeSwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgc3Vic3lzdGVtIGlzIHN0cnVjdHVyZWQuIEkmIzM5O2xsIGJlZ2luIGJ5IGp1c3QgbmF2aWdhdGluZyBpbnRvIHRoYXQgZGlyZWN0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pZWVlODAyMTU0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWRmNzI0Mi5jJiMzNDssCiAgICAmIzM0O2F0ODZyZjIzMC5jJiMzNDssCiAgICAmIzM0O2F0ODZyZjIzMC5oJiMzNDssCiAgICAmIzM0O2F0dXNiLmMmIzM0OywKICAgICYjMzQ7YXR1c2IuaCYjMzQ7LAogICAgJiMzNDtjYTgyMTAuYyYjMzQ7LAogICAgJiMzNDtjYzI1MjAuYyYjMzQ7LAogICAgJiMzNDtmYWtlbGIuYyYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfaHdzaW0uYyYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfaHdzaW0uaCYjMzQ7LAogICAgJiMzNDttY3IyMGEuYyYjMzQ7LAogICAgJiMzNDttY3IyMGEuaCYjMzQ7LAogICAgJiMzNDttcmYyNGo0MC5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5OTMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRmluZGluZyB0aGUgTWFjODAyMTU0X2h3c2ltIEtjb25maWcqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIEtjb25maWcgZmlsZSB0aGF0IGRlZmluZXMgb3IgcmVmZXJlbmNlcyB0aGUgYG1hYzgwMjE1NF9od3NpbWAgc3ltYm9sLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBLY29uZmlnIHN0cnVjdHVyZSwgSSYjMzk7bGwgbGlrZWx5IG5lZWQgdG8gc2VhcmNoIHRoZSByZWxldmFudCBzb3VyY2UgY29kZSBkaXJlY3Rvcmllcy4gSSB3b3VsZCB0eXBpY2FsbHkgc3RhcnQgd2l0aCBicm9hZCBzZWFyY2hlcyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgb3Igd2lyZWxlc3Mgc3ViLXN5c3RlbXMuIEkgd291bGQgdXNlIHRvb2xzIGxpa2UgYGZpbmRgIG9yIGBncmVwYCB0byBxdWlja2x5IHBpbnBvaW50IHRoZSBmaWxlLiBUaGlua2luZyBzdHJhdGVnaWNhbGx5LCB0aGUgbmFtZSAmIzM0O21hYzgwMjE1NCYjMzQ7IHN1Z2dlc3RzIElFRUUgODAyLjE1LjQsIHNvIEkgd2lsbCBzdGFydCB0aGVyZSwgbG9va2luZyBmb3IgbGlrZWx5IGNhbmRpZGF0ZSBkaXJlY3RvcmllcyB0aGF0IHdvdWxkIGluY2x1ZGUgdGhpcyBraW5kIG9mIHNpbXVsYXRlZCBoYXJkd2FyZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl0IGlzIGxpa2VseSB0byBiZSB1bmRlciBhIGRyaXZlciBvciBtb2R1bGUmIzM5O3MgZGlyZWN0b3J5LiBPbmNlIEkgZmluZCBhIGxpa2VseSBjYW5kaWRhdGUgZmlsZSwgSSYjMzk7bGwgZXhhbWluZSBpdHMgY29udGVudCB0byB2ZXJpZnkgaWYgYG1hYzgwMjE1NF9od3NpbWAgaXMgYWN0dWFsbHkgZGVmaW5lZCwgb3IsIG1vcmUgbGlrZWx5LCB1c2VkIGFzIGEgZmVhdHVyZSwgb3B0aW9uLCBvciBkZXBlbmRlbmN5IHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEkgd291bGQgYWxzbyBpbnZlc3RpZ2F0ZSBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0aW9uc2hpcHMgaXQgbWlnaHQgaGF2ZSB0byBvdGhlciBjb25maWd1cmF0aW9ucyBvciBkcml2ZXJzLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUgcmVmZXJlbmNlIGlzIGdvaW5nIHRvIGJlIHdpdGhpbiBhIGBLY29uZmlnYCBmaWxlLCBidXQgSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSB0aGF0IHdpdGggYSBzZWFyY2ggYXMgd2VsbC4gT25jZSBJIGhhdmUgdGhlIGZpbGUgSSBjYW4gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzdXJyb3VuZGluZyBgbWFjODAyMTU0X2h3c2ltYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjODAyMTU0X2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnPTExND1jb25maWcgSUVFRTgwMjE1NF9IV1NJTVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvS2NvbmZpZy0xMjItXHQgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBUbyBkbyBzbyBzYXkgTSBoZXJlLlxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnOjEyMzpcdCAgVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCAmIzM5O21hYzgwMjE1NF9od3NpbSYjMzk7LlxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfSUVFRTgwMjE1NF9NQ1IyMEEpICYjNDM7PSBtY3IyMGEub1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfSUVFRTgwMjE1NF9IV1NJTSkgJiM0Mzs9IG1hYzgwMjE1NF9od3NpbS5vXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9mYWtlbGIuYz0yNDQ9c3RhdGljIF9faW5pdCBpbnQgZmFrZWxiX2luaXRfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9mYWtlbGIuYy0yNDgtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L2Zha2VsYi5jOjI0OTpcdHByX3dhcm4oXCYjMzQ7ZmFrZWxiIGRyaXZlciBpcyBtYXJrZWQgYXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBtYWM4MDIxNTRfaHdzaW0hXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvZmFrZWxiLmMtMjUwLVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMjQtI2luY2x1ZGUgXHUwMDNjbmV0L2dlbmV0bGluay5oXHUwMDNlXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjI1OiNpbmNsdWRlIFwmIzM0O21hYzgwMjE1NF9od3NpbS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTI2LVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9MTA0OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtYWM4MDIxNTRod3NpbV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0xMDUxLVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6MTA1MjpcdFx0XHQubmFtZSA9IFwmIzM0O21hYzgwMjE1NF9od3NpbVwmIzM0OyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMTA1My1cdH0sXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz0xMDU2PXN0YXRpYyBfX2luaXQgaW50IGh3c2ltX2luaXRfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0xMDYzLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzoxMDY0Olx0bWFjODAyMTU0aHdzaW1fZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX3NpbXBsZShcJiMzNDttYWM4MDIxNTRfaHdzaW1cJiMzNDssXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTEwNjUtXHRcdFx0XHRcdFx0XHQgICAgIC0xLCBOVUxMLCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxOTQKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSA4MDIuMTUuNCBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGtlcm5lbCYjMzk7cyA4MDIuMTUuNCBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gemVybyBpbiBvbiBgZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnYCDigJMgc3BlY2lmaWNhbGx5LCBhcm91bmQgbGluZSAxMTQuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIHNwb3QgdG8gc3RhcnQsIGJhc2VkIG9uIG15IHBhc3QgZXhwZXJpZW5jZSB3aXRoIHRoZXNlIHNvcnRzIG9mIGtlcm5lbCBkcml2ZXJzOyBgS2NvbmZpZ2AgZmlsZXMgYXJlIHVzdWFsbHkgc3RydWN0dXJlZCB0byBwdXQgdGhlIG1vc3QgZXNzZW50aWFsIG9wdGlvbnMgZWFybGllci4gSSYjMzk7bSBndWVzc2luZyB0aGF0IGxpbmUgd2lsbCBsZWFkIG1lIGludG8gdGhlIGNvcmUgZmVhdHVyZSBzZWxlY3Rpb25zLCBvciBtYXliZSBhIGhpZ2gtbGV2ZWwgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEl0IGNvdWxkIGJlIGRldmljZSBzcGVjaWZpYy4gRWl0aGVyIHdheSwgdGhpcyBzaG91bGQgYmUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGJlaW5nIGNvbmZpZ3VyZWQgb3Igd2hhdCBvcHRpb25zIHRoZSBkZXZlbG9wZXIgaXMgb2ZmZXJpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMDU6XHRcdGRlcGVuZHMgb24gSUVFRTgwMjE1NF9EUklWRVJTIFx1MDAyNlx1MDAyNiBNQUM4MDIxNTRcbiAxMDY6XHRcdGRlcGVuZHMgb24gU1BJXG4gMTA3Olx0XHRoZWxwXG4gMTA4Olx0XHQgIFNheSBZIGhlcmUgdG8gZW5hYmxlIHRoZSBNQ1IyMEEgU1BJIDgwMi4xNS40IHdpcmVsZXNzXG4gMTA5Olx0XHQgIGNvbnRyb2xsZXIuXG4gMTEwOlx0XG4gMTExOlx0XHQgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBUbyBkbyBzbywgc2F5IE0gaGVyZS5cbiAxMTI6XHRcdCAgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCAmIzM5O21jcjIwYSYjMzk7LlxuIDExMzpcdFxuIDExNDpcdGNvbmZpZyBJRUVFODAyMTU0X0hXU0lNXG4gMTE1Olx0XHRkZXBlbmRzIG9uIElFRUU4MDIxNTRfRFJJVkVSUyBcdTAwMjZcdTAwMjYgTUFDODAyMTU0XG4gMTE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxNTRcJiMzNDtcbiAxMTc6XHRcdGhlbHBcbiAxMTg6XHRcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVzdFxuIDExOTpcdFx0ICBJRUVFIDgwMi4xNS40IG5ldHdvcmtpbmcgc3RhY2sgKG1hYzgwMjE1NCkgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBub3RcbiAxMjA6XHRcdCAgbmVlZGVkIGZvciBub3JtYWwgd3BhbiB1c2FnZSBhbmQgaXMgb25seSBmb3IgdGVzdGluZy5cbiAxMjE6XHRcbiAxMjI6XHRcdCAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIFRvIGRvIHNvIHNheSBNIGhlcmUuXG4gMTIzOlx0XHQgIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgJiMzOTttYWM4MDIxNTRfaHdzaW0mIzM5Oy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4MTcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIElFRUU4MDIxNTRfRFJJVkVSUyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYElFRUU4MDIxNTRfRFJJVkVSU2AuIFdoZXJlIGV4YWN0bHkgaXMgdGhpcyB2YXJpYWJsZSBvciBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlIGVzdGFibGlzaGVkPyBVbmRlcnN0YW5kaW5nIGl0cyBkZWZpbml0aW9uIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIHByb2NlZWQgYW55IGZ1cnRoZXIuIEkgbmVlZCB0byBrbm93IHdoYXQgaXQgY29udHJvbHMgb3IgcmVwcmVzZW50cyB3aXRoaW4gdGhlIHN5c3RlbS4gVGhpcyBpcyBhIGZvdW5kYXRpb25hbCBzdGVwLCBhbmQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCBpdCByaWdodCBiZWZvcmUgbWFraW5nIGFueSBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElFRUU4MDIxNTRfRFJJVkVSUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2llZWU4MDIxNTQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L0tjb25maWc6MjptZW51Y29uZmlnIElFRUU4MDIxNTRfRFJJVkVSU1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJRUVFIDgwMi4xNS40IGRyaXZlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExMDUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb2RlIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgbW9kaWZpY2F0aW9ucy4gSSBzZWUgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaGF2ZSBiZWVuIHRvdWNoZWQ6CgoqICAgYG1hYzgwMjE1NF9yeF9kZXF1ZXVlYCDigJMgU3RhdGljIGluIGByeC5jYCwgaW50ZXJlc3RpbmcsIHByb2JhYmx5IGEgY3JpdGljYWwgcmVjZWl2ZSBwYXRoIGZ1bmN0aW9uLgoqICAgYG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyYCAmYW1wOyBgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyYCDigJMgQm90aCBpbiBgcnguY2AgYW5kIGRlY2xhcmVkIGluIHRoZSBpbnRlcm5hbCBoZWFkZXIuIFNlZW1zIGxpa2Ugd2UmIzM5O3JlIGxvb2tpbmcgYXQgYXN5bmNocm9ub3VzIGhhbmRsaW5nIG9mIGJlYWNvbnMgYW5kIE1BQyBjb21tYW5kcyBkdXJpbmcgcmVjZXB0aW9uLgoqICAgYGllZWU4MDIxNTRfc3ViaWZfZnJhbWVgIOKAkyBBbHNvIGluIGByeC5jYC4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGluY29taW5nIGZyYW1lIGlzIHByb2Nlc3NlZCwgcG9zc2libHkgZGVwZW5kaW5nIG9uIHRoZSBzdWJpbnRlcmZhY2UuCiogICBgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zYCDigJMgQW5vdGhlciBzdGF0aWMgb25lLCB0aGlzIHRpbWUgaW4gYHNjYW4uY2AuIE9idmlvdXMsIGJlYWNvbi1yZWxhdGVkIGFuZCBxdWV1ZWQsIG1heWJlIHJlbGF0ZWQgdG8gc2NhbiByZXF1ZXN0cyBvciBiZWFjb24gbWFuYWdlbWVudCBkdXJpbmcgc2Nhbm5pbmcuCiogICBgaWVlZTgwMjE1NF9hbGxvY19od2Ag4oCTIEluIGBtYWluLmNgLCBhbmQgSSYjMzk7bSBndWVzc2luZyBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgaGFyZHdhcmUgYWxsb2NhdGlvbi9pbml0aWFsaXphdGlvbi4KCk5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZXNlIGNoYW5nZWQgZnVuY3Rpb25zLiBHaXZlbiB0aGF0IGBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnNgIGlzIGludm9sdmVkLCBJIHdhbnQgdG8gc2VlIGlmIGBtYWM4MDIxNTRfc2Nhbl9yZXFgIChvciBhbnkgb2YgaXRzIGNhbGxlcnMpIGFyZSBpbXBhY3RlZCwgb3IgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBjYWxsZWQgYG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29uc2AuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgaW1wYWN0IGFuZCBwdXJwb3NlIG9mIHRoZSBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjE1NCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTU0L3NjYW4uYz05NT1zdGF0aWMgdW5zaWduZWQgaW50IG1hYzgwMjE1NF9zY2FuX2dldF9jaGFubmVsX3RpbWUodTggZHVyYXRpb25fb3JkZXIsXG4tLVxubmV0L21hYzgwMjE1NC9zY2FuLmMtMTA0LVxubmV0L21hYzgwMjE1NC9zY2FuLmM6MTA1OnN0YXRpYyB2b2lkIG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyhzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwpXG5uZXQvbWFjODAyMTU0L3NjYW4uYy0xMDYte1xuLS1cbm5ldC9tYWM4MDIxNTQvc2Nhbi5jPTE4MD12b2lkIG1hYzgwMjE1NF9zY2FuX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L21hYzgwMjE1NC9zY2FuLmMtMTk5LVx0c3luY2hyb25pemVfbmV0KCk7XG5uZXQvbWFjODAyMTU0L3NjYW4uYzoyMDA6XHRtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnMobG9jYWwpO1xubmV0L21hYzgwMjE1NC9zY2FuLmMtMjAxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjEwNwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBDYWxsZXIgb2YgYGllZWU4MDIxNTRfc3ViaWZfZnJhbWVgKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGBpZWVlODAyMTU0X3N1YmlmX2ZyYW1lYC4gRmlyc3QsIEkgd2FudCB0byB0cmFjZSBiYWNrIGFuZCBpZGVudGlmeSBwcmVjaXNlbHkgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLCBpdHMgbW9kdWxlLCBhbmQgaWRlYWxseSB0aGUgc3Vycm91bmRpbmcgY29kZSB3aXRoaW4gdGhhdCBtb2R1bGUsIHdpbGwgcHJvdmlkZSBjcnVjaWFsIGluc2lnaHRzIGludG8gaXRzIHB1cnBvc2UgYW5kIHdoYXQgaXQmIzM5O3MgdHJ5aW5nIHRvIGFjaGlldmUgd2l0aGluIHRoZSBJRUVFIDgwMi4xNS40IHN0YWNrLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBjYWxsIHNpdGVzIGRpcmVjdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggbW9kdWxlIHRoaXMgaXMgaW4sIGFuZCB0aGVuIEkgd2lsbCBzZWFyY2ggZm9yIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgdG8gZGV0ZXJtaW5lIHRoZSBleGFjdCBjYWxsLiBUaGVuLCBkZXBlbmRpbmcgb24gaG93IGNvbXBsZXggdGhlIHN5c3RlbSBpcywgSSBtYXkgbmVlZCB0byBsb29rIGF0IGluZGlyZWN0IGNhbGxzIHRvIGdhaW4gY29tcGxldGUgY2xhcml0eS4gVW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUgb2YgaG93IGZyYW1lcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhpcyBzdWItaW50ZXJmYWNlIGlzIGtleSB0byBhIHNvbGlkIGFuYWx5c2lzLCBiZWZvcmUgSSBldmVuIHN0YXJ0IGxvb2tpbmcgYXQgdGhlIGZ1bmN0aW9uIGludGVybmFscyB0aGVtc2VsdmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTU0X3N1YmlmX2ZyYW1lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjE1NCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTU0L3J4LmM9MTQ5PXN0YXRpYyBpbnRcbm5ldC9tYWM4MDIxNTQvcnguYzoxNTA6aWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTU0L3J4LmMtMTUxLVx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IGllZWU4MDIxNTRfaGRyICpoZHIpXG4tLVxubmV0L21hYzgwMjE1NC9yeC5jPTM1OT1fX2llZWU4MDIxNTRfcnhfaGFuZGxlX3BhY2tldChzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjE1NC9yeC5jLTM4OS1cdFx0XHRza2IyLVx1MDAzZWRldiA9IHNkYXRhLVx1MDAzZWRldjtcbm5ldC9tYWM4MDIxNTQvcnguYzozOTA6XHRcdFx0aWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzZGF0YSwgc2tiMiwgXHUwMDI2aGRyKTtcbm5ldC9tYWM4MDIxNTQvcnguYy0zOTEtXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI2NzQKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqQW5hbHl6aW5nIFBhY2tldCBIYW5kbGluZyBDYWxsZXJzKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gaG93IHRoaXMgcGFja2V0IHJlY2VwdGlvbiBpcyBiZWluZyBoYW5kbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gd2hvJiMzOTtzIGNhbGxpbmcgZWl0aGVyIGBfX2llZWU4MDIxNTRfcnhfaGFuZGxlX3BhY2tldGAgb3IgYGllZWU4MDIxNTRfcnhfaXJxc2FmZWAuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50cyB0byB0aGVzZSBjcml0aWNhbCBmdW5jdGlvbnMgaXMgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRhdGEgZmxvdywgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgYW5kIGhvdyB0aGUgc3lzdGVtIHJlc3BvbmRzIHRvIGluY29taW5nIDgwMi4xNS40IHBhY2tldHMuIFRoaXMgd2lsbCBnaXZlIG1lIGNydWNpYWwgY29udGV4dCBmb3IgYW55IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBvZiB0aGUgODAyLjE1LjQgc3RhY2suIEl0JiMzOTtzIHRoZSBmaXJzdCBzdGVwIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlIGRhdGEgY29tZXMgZnJvbSBhbmQgd2hvIHN0YXJ0cyB0aGUgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pZWVlODAyMTU0X3J4X2hhbmRsZV9wYWNrZXR8aWVlZTgwMjE1NF9yeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxNTQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaD0xODY9ZXh0ZXJuIHN0cnVjdCBpZWVlODAyMTU0X21sbWVfb3BzIG1hYzgwMjE1NF9tbG1lX3dwYW47XG5uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oLTE4Ny1cbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmg6MTg4OnZvaWQgaWVlZTgwMjE1NF9yeChzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpO1xubmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaC0xODktdm9pZCBpZWVlODAyMTU0X3htaXRfc3luY193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbi0tXG5uZXQvbWFjODAyMTU0L21haW4uYz0yMz1zdGF0aWMgdm9pZCBpZWVlODAyMTU0X3Rhc2tsZXRfaGFuZGxlcihzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxubmV0L21hYzgwMjE1NC9tYWluLmMtMzQtXHRcdFx0c2tiLVx1MDAzZXBrdF90eXBlID0gMDtcbm5ldC9tYWM4MDIxNTQvbWFpbi5jOjM1Olx0XHRcdGllZWU4MDIxNTRfcngobG9jYWwsIHNrYik7XG5uZXQvbWFjODAyMTU0L21haW4uYy0zNi1cdFx0XHRicmVhaztcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmM9MzU4PXN0YXRpYyB2b2lkXG5uZXQvbWFjODAyMTU0L3J4LmM6MzU5Ol9faWVlZTgwMjE1NF9yeF9oYW5kbGVfcGFja2V0KHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxNTQvcnguYy0zNjAtXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmM9Mzk2PWllZWU4MDIxNTRfbW9uaXRvcnNfcngoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tYWM4MDIxNTQvcnguYy00MjMtXG5uZXQvbWFjODAyMTU0L3J4LmM6NDI0OnZvaWQgaWVlZTgwMjE1NF9yeChzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbWFjODAyMTU0L3J4LmMtNDI1LXtcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmMtNDU0LVxubmV0L21hYzgwMjE1NC9yeC5jOjQ1NTpcdF9faWVlZTgwMjE1NF9yeF9oYW5kbGVfcGFja2V0KGxvY2FsLCBza2IpO1xubmV0L21hYzgwMjE1NC9yeC5jLTQ1Ni1cbi0tXG5uZXQvbWFjODAyMTU0L3J4LmM9NDYzPXZvaWRcbm5ldC9tYWM4MDIxNTQvcnguYzo0NjQ6aWVlZTgwMjE1NF9yeF9pcnFzYWZlKHN0cnVjdCBpZWVlODAyMTU0X2h3ICpodywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggbHFpKVxubmV0L21hYzgwMjE1NC9yeC5jLTQ2NS17XG4tLVxubmV0L21hYzgwMjE1NC9yeC5jLTQ3My19XG5uZXQvbWFjODAyMTU0L3J4LmM6NDc0OkVYUE9SVF9TWU1CT0woaWVlZTgwMjE1NF9yeF9pcnFzYWZlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3ODIKCQkJCQkJCW91dHB1dDogMzAwCgkJCQkJCQl0aG91Z2h0czogMTAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIENhbmRpZGF0ZSBBc3Nlc3NtZW50OiBtYWM4MDIxNTQgQ29yZSBSWCBQYXRoKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIGxpc3Qgb2Ygc3ltYm9sczogYGllZWU4MDIxNTRfYWxsb2NfaHdgLCBgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJgLCBgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyYCwgYGllZWU4MDIxNTRfc3ViaWZfZnJhbWVgLCBgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zYCwgYW5kIGBtYWM4MDIxNTRfc2Nhbl93b3JrZXJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7V29ydGggZnV6emluZz8mIzM0Oy4gTGV0JiMzOTtzIGFwcGx5IG15IHN0YW5kYXJkIGNyaXRlcmlhLgoKRmlyc3QsICpyZWFjaGFiaWxpdHkqLiBUaGlzIGlzIGNyaXRpY2FsLiBJIGNhbiBzZWUgdGhhdCBNQUM4MDIxNTQgaXMgcmVhY2hhYmxlIHRocm91Z2ggdmlydHVhbCBkZXZpY2VzIGxpa2UgYG1hYzgwMjE1NF9od3NpbWAsIG5ldGxpbmsgY29tbWFuZHMgKGBubDgwMjE1NGApLCBhbmQgQUZfSUVFRTgwMjE1NCBzb2NrZXRzLiBDcnVjaWFsbHksIHRoZSBjb2RlIGJlaW5nIGV4YW1pbmVkIGRlYWxzIHdpdGggUlggcHJvY2Vzc2luZyBvZiBiZWFjb24gYW5kIE1BQyBjb21tYW5kIGZyYW1lcy4gSXQmIzM5O3MgYWxzbyBjb25jZXJuZWQgd2l0aCBxdWV1aW5nLCB3b3JrZXIgcHJvY2Vzc2luZywgc3luY2hyb25pemF0aW9uIHVzaW5nIGEgbmV3IHNwaW5sb2NrLCBgcnhfbGlzdHNfbG9ja2AsIGFuZCBuZXRkZXYgcmVmZXJlbmNlIGNvdW50aW5nIHdpdGggYG5ldGRldl9ob2xkYCwgYG5ldGRldl9wdXRgLCBhbmQgYG5ldGRldmljZV90cmFja2VyYC4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgYW5kIGRyaXZlciBzdGFjayBjb2RlLiBHb29kLCB0aGlzIGRlZmluaXRlbHkgbWVldHMgdGhlIHJlYWNoYWJpbGl0eSBjcml0ZXJpYS4KClNlY29uZCwgdGhlICpmdXp6aW5nIGJlbmVmaXRzKi4gVGhpcyBraW5kIG9mIGNvZGUgaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIENvbmN1cnJlbmN5IGlzc3VlcywgcmFjZSBjb25kaXRpb25zLCBsaXN0IGNvcnJ1cHRpb24sIG5ldGRldiByZWZjb3VudCBsZWFrcyBvciB0cmFja2VyIGltYmFsYW5jZXMsIGFuZCBwb3RlbnRpYWwgZGVhZGxvY2tzIGFyZSBhbGwgdGhpbmdzIEkmIzM5O2QgZXhwZWN0IGZ1enppbmcgdG8gdW5jb3ZlciBmYWlybHkgcXVpY2tseS4gSXQgaXMgaGlnaC12YWx1ZSBmb3IgZnV6emluZy4KClRodXMsIGJhc2VkIG9uIG15IGFuYWx5c2lzLCAqV29ydGhGdXp6aW5nPXRydWUqLgoKTm93LCB0aGUgbmVjZXNzYXJ5ICpFbmFibGVDb25maWdzKiBhbmQgKkZvY3VzU3ltYm9scyouCgpJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZTogYE1BQzgwMjE1NGAsIGBJRUVFODAyMTU0YCwgYElFRUU4MDIxNTRfTkw4MDIxNTRfRVhQRVJJTUVOVEFMYCAob3B0aW9uYWwsIGJ1dCBubDgwMjE1NCBpcyBhbHdheXMgYSBnb29kIG9wdGlvbiksIGBJRUVFODAyMTU0X0hXU0lNYCwgYW5kIGBJRUVFODAyMTU0X0RSSVZFUlNgLiBgTUFDODAyMTU0YCBkZXBlbmRzIG9uIGBJRUVFODAyMTU0YCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEFsc28gYElFRUU4MDIxNTRfSFdTSU1gIGRlcGVuZHMgb24gYElFRUU4MDIxNTRfRFJJVkVSUyAmYW1wOyZhbXA7IE1BQzgwMjE1NGAuCgpGb3IgKkZvY3VzU3ltYm9scyosIEkmIzM5O2xsIHRhcmdldDogYG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyYCwgYG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcmAsIGBpZWVlODAyMTU0X3N1YmlmX2ZyYW1lYCwgYG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29uc2AsIGBtYWM4MDIxNTRfcnhfZGVxdWV1ZWAgKGV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYywgSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGdldCB0aGF0IG9uZSwgYXMgdGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IG9mIGl0IGJlaW5nIGlubGluZWQsIG9yIHNpbWlsYXIpLiBBbHNvIGluY2x1ZGUgbm9uLXN0YXRpYyBvbmVzIHN1Y2ggYXM6IGBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcmAsIGBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXJgLCBgbWFjODAyMTU0X3NjYW5fd29ya2VyYCBhbmQgYGllZWU4MDIxNTRfcnhgLiBMZXQmIzM5O3Mgbm90IGZvcmdldCBgaWVlZTgwMjE1NF9hbGxvY19od2AuCgpUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIGRvdWJsZS1jaGVjazogYG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyYCwgYG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcmAsIGBpZWVlODAyMTU0X3J4YCwgYW5kIGBpZWVlODAyMTU0X2FsbG9jX2h3YCwgd2hpY2ggYXJlIGFsbCBmb3VuZCB3aXRoaW4gYG5ldC9tYWM4MDIxNTQvcnguY2AsIGFuZCBgbWFjODAyMTU0X3NjYW5fd29ya2VyYCBpbiBgbmV0L21hYzgwMjE1NC9zY2FuLmNgLiBJdCBhbGwgbGluZXMgdXAgd2l0aCBteSBleHBlY3RhdGlvbnMuCgpKdXN0IGEgZmluYWwgc2FuaXR5IGNoZWNrIG9mIHRoZSBpbXBvcnRhbnQgYml0czogQ29uZmlnIG9wdGlvbnM6IGBJRUVFODAyMTU0YCwgYE1BQzgwMjE1NGAsIGFuZCBgSUVFRTgwMjE1NF9IV1NJTWAuIFRoZSBzeW1ib2xzIGFyZTogYG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyYCwgYG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcmAsIGBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnNgLCBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAsIGBtYWM4MDIxNTRfcnhfZGVxdWV1ZWAsIGFuZCBgaWVlZTgwMjE1NF9hbGxvY19od2AuCgpUaGF0IGxvb2tzIGdvb2QuIEkmIzM5O20gcmVhZHkKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SUVFRTgwMjE1NCYjMzQ7LAogICAgJiMzNDtNQUM4MDIxNTQmIzM0OywKICAgICYjMzQ7SUVFRTgwMjE1NF9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyJiMzNDssCiAgICAmIzM0O21hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlciYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfcnhfZGVxdWV1ZSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTU0X3N1YmlmX2ZyYW1lJiMzNDssCiAgICAmIzM0O21hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTU0X2FsbG9jX2h3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCBSWCBhbmQgcXVldWUgbWFuYWdlbWVudCBpbiB0aGUgbWFjODAyMTU0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBkZWRpY2F0ZWQgc3BpbmxvY2sgKHJ4X2xpc3RzX2xvY2spIHRvIHByb3RlY3QgcnhfYmVhY29uX2xpc3QgYW5kIHJ4X21hY19jbWRfbGlzdCwgdXBkYXRpbmcgdGhlIHdvcmtlciBkZXF1ZXVlIGxvZ2ljLCBhbmQgdGFraW5nL3JlbGVhc2luZyBuZXRkZXZpY2UgcmVmZXJlbmNlIHRyYWNrZXJzIChuZXRkZXZfaG9sZC9uZXRkZXZfcHV0KSB3aGVuIHF1ZXVlaW5nIGFuZCBwcm9jZXNzaW5nIE1BQyBwYWNrZXRzLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSBtYWM4MDIxNTQgdmlydHVhbCBkcml2ZXJzIChtYWM4MDIxNTRfaHdzaW0pIGFuZCBzdGFuZGFyZCBJRUVFIDgwMi4xNS40IG5ldHdvcmsgaW50ZXJmYWNlcywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcgZm9yIGNvbmN1cnJlbmN5IGJ1Z3MsIGRlYWRsb2NrcywgYW5kIG5ldGRldiByZWZjb3VudGluZyBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lFRUU4MDIxNTQmIzM0OywKICAgICYjMzQ7TUFDODAyMTU0JiMzNDssCiAgICAmIzM0O0lFRUU4MDIxNTRfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlciYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXImIzM0OywKICAgICYjMzQ7bWFjODAyMTU0X3J4X2RlcXVldWUmIzM0OywKICAgICYjMzQ7aWVlZTgwMjE1NF9zdWJpZl9mcmFtZSYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnMmIzM0OywKICAgICYjMzQ7aWVlZTgwMjE1NF9hbGxvY19odyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgUlggYW5kIHF1ZXVlIG1hbmFnZW1lbnQgaW4gdGhlIG1hYzgwMjE1NCBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgZGVkaWNhdGVkIHNwaW5sb2NrIChyeF9saXN0c19sb2NrKSB0byBwcm90ZWN0IHJ4X2JlYWNvbl9saXN0IGFuZCByeF9tYWNfY21kX2xpc3QsIHVwZGF0aW5nIHRoZSB3b3JrZXIgZGVxdWV1ZSBsb2dpYywgYW5kIHRha2luZy9yZWxlYXNpbmcgbmV0ZGV2aWNlIHJlZmVyZW5jZSB0cmFja2VycyAobmV0ZGV2X2hvbGQvbmV0ZGV2X3B1dCkgd2hlbiBxdWV1ZWluZyBhbmQgcHJvY2Vzc2luZyBNQUMgcGFja2V0cy4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgbWFjODAyMTU0IHZpcnR1YWwgZHJpdmVycyAobWFjODAyMTU0X2h3c2ltKSBhbmQgc3RhbmRhcmQgSUVFRSA4MDIuMTUuNCBuZXR3b3JrIGludGVyZmFjZXMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nIGZvciBjb25jdXJyZW5jeSBidWdzLCBkZWFkbG9ja3MsIGFuZCBuZXRkZXYgcmVmY291bnRpbmcgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgc3luY2hyb25pemF0aW9uIGFuZCBuZXRkZXYgcmVmZXJlbmNlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZvciBtYWM4MDIxNTQgUlggcXVldWVzIChiZWFjb24gYW5kIE1BQyBjb21tYW5kIHF1ZXVlcykuIEl0IGludHJvZHVjZXMgYSBzcGlubG9jayBgcnhfbGlzdHNfbG9ja2AgdG8gcHJvdGVjdCBxdWV1ZSBtYW5pcHVsYXRpb24gYW5kIHVzZXMgYG5ldGRldmljZV90cmFja2VyYCAoYG5ldGRldl9ob2xkYCAvIGBuZXRkZXZfcHV0YCkgdG8gc2FmZWx5IHJldGFpbiBkZXZpY2UgcmVmZXJlbmNlcyB1bnRpbCBwYWNrZXRzIGFyZSBwcm9jZXNzZWQgYW5kIGZyZWVkLlxuXG5LQVNBTiwgTE9DS0RFUCwgYW5kIHRoZSBuZXRkZXYgcmVmY291bnQgdHJhY2tlciBhZGVxdWF0ZWx5IGNvdmVyIHRoZSByaXNrcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXRjaCAoc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGRlYWRsb2NrcywgYW5kIHVzZS1hZnRlci1mcmVlL2xpZmV0aW1lIGJ1Z3MpLiBgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0YCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iamAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYXJlIHplcm8taW5pdGlhbGl6ZWQuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHJlYWQsIGJyYW5jaGVkIG9uLCBvciBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyZTI4YzNhZDg0MjE1NzkzZjM3NDVjYTRlM2RkN2UxOTI5NjM2N2JkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAxODoxMjo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmgKaW5kZXggNzZkMmNkMmUyYjMwOS4uNTczNDM3NjJkN2YwYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmgKQEAgLTM2OSw2ICYjNDM7MzY5LDcgQEAgc3RydWN0IGNmZzgwMjE1NF9iZWFjb25fcmVxdWVzdCB7CiAgKiBAbm9kZTogTUFDIHBhY2tldHMgdG8gcHJvY2VzcyBsaXN0IG1lbWJlcgogICogQHNrYjogdGhlIHJlY2VpdmVkIHNrX2J1ZmYKICAqIEBzZGF0YTogdGhlIGludGVyZmFjZSBvbiB3aGljaCBAc2tiIHdhcyByZWNlaXZlZAomIzQzOyAqIEBkZXZfdHJhY2tlcjogbmV0ZGV2IHJlZmVyZW5jZSBoZWxkIHVudGlsIHRoZSBkZXNjcmlwdG9yIGlzIHJlbGVhc2VkCiAgKiBAcGFnZTogcGFnZSBjb25maWd1cmF0aW9uIHdoZW4gQHNrYiB3YXMgcmVjZWl2ZWQKICAqIEBjaGFubmVsOiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gd2hlbiBAc2tiIHdhcyByZWNlaXZlZAogICovCkBAIC0zNzYsNiAmIzQzOzM3Nyw3IEBAIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCB7CiAJc3RydWN0IGxpc3RfaGVhZCBub2RlOwogCXN0cnVjdCBza19idWZmICpza2I7CiAJc3RydWN0IGllZWU4MDIxNTRfc3ViX2lmX2RhdGEgKnNkYXRhOwomIzQzOwluZXRkZXZpY2VfdHJhY2tlciBkZXZfdHJhY2tlcjsKIAl1OCBwYWdlOwogCXU4IGNoYW5uZWw7CiB9OwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaCBiL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmgKaW5kZXggOGYyYmZmMjY4MzkyYi4uMDk2ZTZmMDM0MGRjNyAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oCkBAIC03NCw2ICYjNDM7NzQsOCBAQCBzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCB7CiAJc3RydWN0IHdvcmtfc3RydWN0IHJ4X2JlYWNvbl93b3JrOwogCXN0cnVjdCBsaXN0X2hlYWQgcnhfbWFjX2NtZF9saXN0OwogCXN0cnVjdCB3b3JrX3N0cnVjdCByeF9tYWNfY21kX3dvcms7CiYjNDM7CS8qIFByb3RlY3RzIHJ4X2JlYWNvbl9saXN0IGFuZCByeF9tYWNfY21kX2xpc3QuICovCiYjNDM7CXNwaW5sb2NrX3QgcnhfbGlzdHNfbG9jazsKIAogCS8qIEFzc29jaWF0aW9uICovCiAJc3RydWN0IGllZWU4MDIxNTRfcGFuX2RldmljZSAqYXNzb2NfZGV2OwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjE1NC9tYWluLmMgYi9uZXQvbWFjODAyMTU0L21haW4uYwppbmRleCBlYTFlZmVmMzU3MmFlLi5hNmE5NzZiMGRlYTU2IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTU0L21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTU0L21haW4uYwpAQCAtOTEsNiAmIzQzOzkxLDcgQEAgaWVlZTgwMjE1NF9hbGxvY19odyhzaXplX3QgcHJpdl9kYXRhX2xlbiwgY29uc3Qgc3RydWN0IGllZWU4MDIxNTRfb3BzICpvcHMpCiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtsb2NhbC0mZ3Q7aW50ZXJmYWNlcyk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtsb2NhbC0mZ3Q7cnhfYmVhY29uX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7bG9jYWwtJmd0O3J4X21hY19jbWRfbGlzdCk7CiYjNDM7CXNwaW5fbG9ja19pbml0KCZhbXA7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwogCW11dGV4X2luaXQoJmFtcDtsb2NhbC0mZ3Q7aWZsaXN0X210eCk7CiAKIAl0YXNrbGV0X3NldHVwKCZhbXA7bG9jYWwtJmd0O3Rhc2tsZXQsIGllZWU4MDIxNTRfdGFza2xldF9oYW5kbGVyKTsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvcnguYyBiL25ldC9tYWM4MDIxNTQvcnguYwppbmRleCBjZDhmMmExMTkyMGQwLi5kZjJmNjEyOGRkZDRhIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTU0L3J4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjE1NC9yeC5jCkBAIC0yOSwyMSAmIzQzOzI5LDQwIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjE1NF9kZWxpdmVyX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXJldHVybiBuZXRpZl9yZWNlaXZlX3NrYihza2IpOwogfQogCiYjNDM7c3RhdGljIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqCiYjNDM7bWFjODAyMTU0X3J4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLAomIzQzOwkJICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpyeF9saXN0LAomIzQzOwkJICAgICBzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiYjNDM7ewomIzQzOwlzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3Q7CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKJiM0MzsJbWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChyeF9saXN0LAomIzQzOwkJCQkJICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTsKJiM0MzsJaWYgKG1hY19wa3QpIHsKJiM0MzsJCWxpc3RfZGVsKCZhbXA7bWFjX3BrdC0mZ3Q7bm9kZSk7CiYjNDM7CQlpZiAoIWxpc3RfZW1wdHkocnhfbGlzdCkpCiYjNDM7CQkJcXVldWVfd29yayhsb2NhbC0mZ3Q7bWFjX3dxLCB3b3JrKTsKJiM0MzsJfQomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG1hY19wa3Q7CiYjNDM7fQomIzQzOwogdm9pZCBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7CiAJc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsID0KIAkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsLCByeF9iZWFjb25fd29yayk7CiAJc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0OwogCi0JbWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmYW1wO2xvY2FsLSZndDtyeF9iZWFjb25fbGlzdCwKLQkJCQkJICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTsKJiM0MzsJbWFjX3BrdCA9IG1hYzgwMjE1NF9yeF9kZXF1ZXVlKGxvY2FsLCAmYW1wO2xvY2FsLSZndDtyeF9iZWFjb25fbGlzdCwgd29yayk7CiAJaWYgKCFtYWNfcGt0KQogCQlyZXR1cm47CiAKIAltYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24obG9jYWwsIG1hY19wa3QtJmd0O3NrYiwgbWFjX3BrdC0mZ3Q7cGFnZSwgbWFjX3BrdC0mZ3Q7Y2hhbm5lbCk7CiAKLQlsaXN0X2RlbCgmYW1wO21hY19wa3QtJmd0O25vZGUpOwogCWtmcmVlX3NrYihtYWNfcGt0LSZndDtza2IpOwomIzQzOwluZXRkZXZfcHV0KG1hY19wa3QtJmd0O3NkYXRhLSZndDtkZXYsICZhbXA7bWFjX3BrdC0mZ3Q7ZGV2X3RyYWNrZXIpOwogCWtmcmVlKG1hY19wa3QpOwogfQogCkBAIC03Niw4ICYjNDM7OTUsNyBAQCB2b2lkIG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJdTggbWFjX2NtZDsKIAlpbnQgcmM7CiAKLQltYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZhbXA7bG9jYWwtJmd0O3J4X21hY19jbWRfbGlzdCwKLQkJCQkJICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTsKJiM0MzsJbWFjX3BrdCA9IG1hYzgwMjE1NF9yeF9kZXF1ZXVlKGxvY2FsLCAmYW1wO2xvY2FsLSZndDtyeF9tYWNfY21kX2xpc3QsIHdvcmspOwogCWlmICghbWFjX3BrdCkKIAkJcmV0dXJuOwogCkBAIC0xMjMsOCAmIzQzOzE0MSw4IEBAIHZvaWQgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAl9CiAKIG91dDoKLQlsaXN0X2RlbCgmYW1wO21hY19wa3QtJmd0O25vZGUpOwogCWtmcmVlX3NrYihtYWNfcGt0LSZndDtza2IpOwomIzQzOwluZXRkZXZfcHV0KG1hY19wa3QtJmd0O3NkYXRhLSZndDtkZXYsICZhbXA7bWFjX3BrdC0mZ3Q7ZGV2X3RyYWNrZXIpOwogCWtmcmVlKG1hY19wa3QpOwogfQogCkBAIC0yMjEsOCAmIzQzOzIzOSwxMSBAQCBpZWVlODAyMTU0X3N1YmlmX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJbWFjX3BrdC0mZ3Q7c2RhdGEgPSBzZGF0YTsKIAkJbWFjX3BrdC0mZ3Q7cGFnZSA9IHNkYXRhLSZndDtsb2NhbC0mZ3Q7c2Nhbl9wYWdlOwogCQltYWNfcGt0LSZndDtjaGFubmVsID0gc2RhdGEtJmd0O2xvY2FsLSZndDtzY2FuX2NoYW5uZWw7CiYjNDM7CQluZXRkZXZfaG9sZChzZGF0YS0mZ3Q7ZGV2LCAmYW1wO21hY19wa3QtJmd0O2Rldl90cmFja2VyLCBHRlBfQVRPTUlDKTsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO3NkYXRhLSZndDtsb2NhbC0mZ3Q7cnhfbGlzdHNfbG9jayk7CiAJCWxpc3RfYWRkX3RhaWwoJmFtcDttYWNfcGt0LSZndDtub2RlLCAmYW1wO3NkYXRhLSZndDtsb2NhbC0mZ3Q7cnhfYmVhY29uX2xpc3QpOwogCQlxdWV1ZV93b3JrKHNkYXRhLSZndDtsb2NhbC0mZ3Q7bWFjX3dxLCAmYW1wO3NkYXRhLSZndDtsb2NhbC0mZ3Q7cnhfYmVhY29uX3dvcmspOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwogCQlyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7CiAKIAljYXNlIElFRUU4MDIxNTRfRkNfVFlQRV9NQUNfQ01EOgpAQCAtMjMzLDggJiM0MzsyNTQsMTEgQEAgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsCiAKIAkJbWFjX3BrdC0mZ3Q7c2tiID0gc2tiX2dldChza2IpOwogCQltYWNfcGt0LSZndDtzZGF0YSA9IHNkYXRhOwomIzQzOwkJbmV0ZGV2X2hvbGQoc2RhdGEtJmd0O2RldiwgJmFtcDttYWNfcGt0LSZndDtkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7CiYjNDM7CQlzcGluX2xvY2tfYmgoJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwogCQlsaXN0X2FkZF90YWlsKCZhbXA7bWFjX3BrdC0mZ3Q7bm9kZSwgJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X21hY19jbWRfbGlzdCk7CiAJCXF1ZXVlX3dvcmsoc2RhdGEtJmd0O2xvY2FsLSZndDttYWNfd3EsICZhbXA7c2RhdGEtJmd0O2xvY2FsLSZndDtyeF9tYWNfY21kX3dvcmspOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwogCQlyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7CiAKIAljYXNlIElFRUU4MDIxNTRfRkNfVFlQRV9BQ0s6CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L3NjYW4uYyBiL25ldC9tYWM4MDIxNTQvc2Nhbi5jCmluZGV4IDAwNTMzOGY4OWI3NWUuLmMzYzYxZWJkZTE1NjggMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxNTQvc2Nhbi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxNTQvc2Nhbi5jCkBAIC0xMDUsMTAgJiM0MzsxMDUsMTYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBtYWM4MDIxNTRfc2Nhbl9nZXRfY2hhbm5lbF90aW1lKHU4IGR1cmF0aW9uX29yZGVyLAogc3RhdGljIHZvaWQgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCkKIHsKIAlzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3QsICp0bXA7CiYjNDM7CUxJU1RfSEVBRChtYWNfcGt0X2xpc3QpOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1hY19wa3QsIHRtcCwgJmFtcDtsb2NhbC0mZ3Q7cnhfYmVhY29uX2xpc3QsIG5vZGUpIHsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwomIzQzOwlsaXN0X3NwbGljZV9pbml0KCZhbXA7bG9jYWwtJmd0O3J4X2JlYWNvbl9saXN0LCAmYW1wO21hY19wa3RfbGlzdCk7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobWFjX3BrdCwgdG1wLCAmYW1wO21hY19wa3RfbGlzdCwgbm9kZSkgewogCQlsaXN0X2RlbCgmYW1wO21hY19wa3QtJmd0O25vZGUpOwogCQlrZnJlZV9za2IobWFjX3BrdC0mZ3Q7c2tiKTsKJiM0MzsJCW5ldGRldl9wdXQobWFjX3BrdC0mZ3Q7c2RhdGEtJmd0O2RldiwgJmFtcDttYWNfcGt0LSZndDtkZXZfdHJhY2tlcik7CiAJCWtmcmVlKG1hY19wa3QpOwogCX0KIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NjQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbWFjODAyMTU0YCBQYXRjaCBmb3IgVW5pbml0aWFsaXplZCBNZW1vcnkgUmlza3MqKgoKT2theSwgbGV0JiMzOTtzIGRpc3NlY3QgdGhpcyBwYXRjaCBmb3IgdGhlIGBtYWM4MDIxNTRgIHN1YnN5c3RlbS4gTXkgcHJpbWFyeSBjb25jZXJuIGhlcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2Yga2VybmVsIGRldmVsb3BtZW50LCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzIHRoYXQgcmVxdWlyZSBLTVNBTi1sZXZlbCBzY3J1dGlueSBvciBpZiBzdGFuZGFyZCBLQVNBTiwgTE9DS0RFUCwgYW5kIHJlbGF0ZWQgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgpGaXJzdCwgSSYjMzk7bGwgYnJlYWsgZG93biB0aGUgY2hhbmdlcy4gVGhlIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBmaWxlczogYGNmZzgwMjE1NC5oYCwgYGllZWU4MDIxNTRfaS5oYCwgYG1haW4uY2AsIGByeC5jYCwgYW5kIGBzY2FuLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHByaW1hcmlseSBhYm91dCBpbXByb3Zpbmcgc3luY2hyb25pemF0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUlggcGF0aC4KClNwZWNpZmljYWxseSwgSSYjMzk7bSBzZWVpbmcgYWRkaXRpb25zIG9mIGBuZXRkZXZpY2VfdHJhY2tlciBkZXZfdHJhY2tlcmAgdG8gYHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdGAgYW5kIGEgYHNwaW5sb2NrX3QgcnhfbGlzdHNfbG9ja2AgdG8gYHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsYC4gSW5pdGlhbGl6YXRpb24gb2YgdGhlIHNwaW5sb2NrIGlzIGhhbmRsZWQsIHRoYW5rZnVsbHkuIFRoZSBtb3JlIGludGVyZXN0aW5nIGNoYW5nZXMgYXJlIGluIGByeC5jYCBhbmQgYHNjYW4uY2AuCgpUaGUgaW50cm9kdWN0aW9uIG9mIGBtYWM4MDIxNTRfcnhfZGVxdWV1ZWAgbG9va3MgbGlrZSBhIGtleSBjaGFuZ2UsIGVuY2Fwc3VsYXRpbmcgdGhlIGxpc3QgZGVxdWV1ZSBsb2dpYyB3aXRoIHRoZSBsb2NrLiBHb29kLCB0aGlzIGlzIHByb2JhYmx5IHRvIHByb3RlY3QgdGhlIGByeF9saXN0c2Agb3Igc2ltaWxhci4gSSBub3RpY2UgdGhlIGxvY2sgYWNxdWlzaXRpb24gYW5kIHRoZSByZS1xdWV1aW5nIGxvZ2ljLiBBbHNvLCB0aGUgdXNlIG9mIGBuZXRkZXZfcHV0YCBpbiBzZXZlcmFsIHBsYWNlcyBhZnRlciB1c2luZyB0aGUgZGVxdWV1ZSBoZWxwZXIgaXMgaW1wb3J0YW50LiBUaGUgdXNlIG9mIGBuZXRkZXZfaG9sZGAgYW5kIGBuZXRkZXZfcHV0YCBhcm91bmQgdGhlIHBhY2tldCBzdHJ1Y3R1cmVzIGxvb2tzIGdvb2QgLSBwcm90ZWN0aW5nIHRoZSBgc2RhdGEtJmd0O2RldmAgcHJvcGVybHkgd2l0aCB0aGUgYGRldl90cmFja2VyYCBpbiBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAgaXMgY3J1Y2lhbC4KCkkgbmVlZCB0byBjb25maXJtIGhvdyBgbWFjX3BrdGAgaXMgYWxsb2NhdGVkLiBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGZvciBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLiBJJiMzOTtsbCBmb2N1cyBvbiB3aGVyZSBgbWFjX3BrdGAgaXMgYWxsb2NhdGVkLCBlc3BlY2lhbGx5IHdpdGhpbiBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAsIGFuZCBpZiB0aGVyZSBhcmUgb3RoZXIgcG90ZW50aWFsIGFsbG9jYXRpb24gc2l0ZXMuIEkgd2lsbCB1c2UgYHJlYWQtZmlsZWAgdG8gemVybyBpbiBvbiBgbmV0L21hYzgwMjE1NC9yeC5jYCBhbmQgbG9vayBmb3IgYWxsb2NhdGlvbnMuIEkmIzM5O20gbG9va2luZyBmb3Igd2hlcmUgd2UmIzM5O3JlIGNyZWF0aW5nIHRoZXNlIHBhY2tldHMgYW5kIGhvdyB0aGUgbWVtb3J5IGlzIGJlaW5nIGhhbmRsZWQuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBzcGVjaWZpY2FsbHkgZm9yIGNhc2VzIHdoZXJlIHRoZSBkYXRhIHdpdGhpbiB0aGUgYG1hY19wa3RgIGNvdWxkIGJlIHVzZWQgYmVmb3JlIGJlaW5nIGluaXRpYWxpemVkLgoKVGhlIGNoYW5nZXMgaW4gYHNjYW4uY2Agc2VlbSBzdHJhaWdodGZvcndhcmQ6IG1vdmluZyB0aGUgYHJ4X2JlYWNvbl9saXN0YCB1bmRlciB0aGUgbG9jayBhbmQgZnJlZWluZyB0aGUgZWxlbWVudHMuIFRoaXMgbG9va3MgbGlrZSBzdGFuZGFyZCBsaXN0IHN5bmNocm9uaXphdGlvbiBwcmFjdGljZXMuIEkgbmVlZCB0byBzdGlsbCBlbnN1cmUgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIHRoZXNlIHN0cnVjdHVyZXMgYXJlIHJvYnVzdC4KCk15IHN1c3BpY2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgc29saWQgZnJvbSBhIGN1cnNvcnkgZ2xhbmNlLCBidXQgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gY29kZSBmb3IgdGhlIHN0cnVjdHVyZXMsIHNwZWNpZmljYWxseSBgbWFjX3BrdGAuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBgbWFjX3BrdGAgaXMgaGFuZGxlZCB3aGVuIHJlLXVzZWQgYWZ0ZXIgYmVpbmcgb24gdGhlIGByeF9saXN0c19sb2NrYCBwcm90ZWN0ZWQgcXVldWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxNTQvcnguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0XHRcdGVsc2UgaWYgKG1hY19jYihza2IpLVx1MDAzZWRlc3Quc2hvcnRfYWRkciA9PSBzc2hvcnQpXG4gMjAxOlx0XHRcdFx0c2tiLVx1MDAzZXBrdF90eXBlID0gUEFDS0VUX0hPU1Q7XG4gMjAyOlx0XHRcdGVsc2UgaWYgKG1hY19jYihza2IpLVx1MDAzZWRlc3Quc2hvcnRfYWRkciA9PVxuIDIwMzpcdFx0XHRcdCAgY3B1X3RvX2xlMTYoSUVFRTgwMjE1NF9BRERSX0JST0FEQ0FTVCkpXG4gMjA0Olx0XHRcdFx0c2tiLVx1MDAzZXBrdF90eXBlID0gUEFDS0VUX0JST0FEQ0FTVDtcbiAyMDU6XHRcdFx0ZWxzZVxuIDIwNjpcdFx0XHRcdHNrYi1cdTAwM2Vwa3RfdHlwZSA9IFBBQ0tFVF9PVEhFUkhPU1Q7XG4gMjA3Olx0XHRcdGJyZWFrO1xuIDIwODpcdFx0ZGVmYXVsdDpcbiAyMDk6XHRcdFx0cHJfZGVidWcoXCYjMzQ7aW52YWxpZCBkZXN0IG1vZGVcXG5cJiMzNDspO1xuIDIxMDpcdFx0XHRnb3RvIGZhaWw7XG4gMjExOlx0XHR9XG4gMjEyOlx0XG4gMjEzOlx0XHRza2ItXHUwMDNlZGV2ID0gc2RhdGEtXHUwMDNlZGV2O1xuIDIxNDpcdFxuIDIxNTpcdFx0LyogVE9ETyB0aGlzIHNob3VsZCBiZSBtb3ZlZCBhZnRlciBuZXRpZl9yZWNlaXZlX3NrYiBjYWxsLCBvdGhlcndpc2VcbiAyMTY6XHRcdCAqIHdpcmVzaGFyayB3aWxsIHNob3cgYSBtYWMgaGVhZGVyIHdpdGggc2VjdXJpdHkgZmllbGRzIGFuZCB0aGVcbiAyMTc6XHRcdCAqIHBheWxvYWQgaXMgYWxyZWFkeSBkZWNyeXB0ZWQuXG4gMjE4Olx0XHQgKi9cbiAyMTk6XHRcdHJjID0gbWFjODAyMTU0X2xsc2VjX2RlY3J5cHQoXHUwMDI2c2RhdGEtXHUwMDNlc2VjLCBza2IpO1xuIDIyMDpcdFx0aWYgKHJjKSB7XG4gMjIxOlx0XHRcdHByX2RlYnVnKFwmIzM0O2RlY3J5cHRpb24gZmFpbGVkOiAlaVxcblwmIzM0OywgcmMpO1xuIDIyMjpcdFx0XHRnb3RvIGZhaWw7XG4gMjIzOlx0XHR9XG4gMjI0Olx0XG4gMjI1Olx0XHRzZGF0YS1cdTAwM2VkZXYtXHUwMDNlc3RhdHMucnhfcGFja2V0cyYjNDM7JiM0Mzs7XG4gMjI2Olx0XHRzZGF0YS1cdTAwM2VkZXYtXHUwMDNlc3RhdHMucnhfYnl0ZXMgJiM0Mzs9IHNrYi1cdTAwM2VsZW47XG4gMjI3Olx0XG4gMjI4Olx0XHRzd2l0Y2ggKG1hY19jYihza2IpLVx1MDAzZXR5cGUpIHtcbiAyMjk6XHRcdGNhc2UgSUVFRTgwMjE1NF9GQ19UWVBFX0JFQUNPTjpcbiAyMzA6XHRcdFx0ZGV2X2RiZyhcdTAwMjZzZGF0YS1cdTAwM2VkZXYtXHUwMDNlZGV2LCBcJiMzNDtCRUFDT04gcmVjZWl2ZWRcXG5cJiMzNDspO1xuIDIzMTpcdFx0XHRpZiAoIW1hYzgwMjE1NF9pc19zY2FubmluZyhzZGF0YS1cdTAwM2Vsb2NhbCkpXG4gMjMyOlx0XHRcdFx0Z290byBmYWlsO1xuIDIzMzpcdFxuIDIzNDpcdFx0XHRtYWNfcGt0ID0ga3phbGxvY19vYmooKm1hY19wa3QsIEdGUF9BVE9NSUMpO1xuIDIzNTpcdFx0XHRpZiAoIW1hY19wa3QpXG4gMjM2Olx0XHRcdFx0Z290byBmYWlsO1xuIDIzNzpcdFxuIDIzODpcdFx0XHRtYWNfcGt0LVx1MDAzZXNrYiA9IHNrYl9nZXQoc2tiKTtcbiAyMzk6XHRcdFx0bWFjX3BrdC1cdTAwM2VzZGF0YSA9IHNkYXRhO1xuIDI0MDpcdFx0XHRtYWNfcGt0LVx1MDAzZXBhZ2UgPSBzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VzY2FuX3BhZ2U7XG4gMjQxOlx0XHRcdG1hY19wa3QtXHUwMDNlY2hhbm5lbCA9IHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXNjYW5fY2hhbm5lbDtcbiAyNDI6XHRcdFx0bmV0ZGV2X2hvbGQoc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcbiAyNDM6XHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIDI0NDpcdFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QpO1xuIDI0NTpcdFx0XHRxdWV1ZV93b3JrKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZW1hY193cSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfYmVhY29uX3dvcmspO1xuIDI0NjpcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiAyNDc6XHRcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIDI0ODpcdFxuIDI0OTpcdFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfTUFDX0NNRDpcbiAyNTA6XHRcdFx0ZGV2X2RiZyhcdTAwMjZzZGF0YS1cdTAwM2VkZXYtXHUwMDNlZGV2LCBcJiMzNDtNQUMgQ09NTUFORCByZWNlaXZlZFxcblwmIzM0Oyk7XG4gMjUxOlx0XHRcdG1hY19wa3QgPSBremFsbG9jX29iaigqbWFjX3BrdCwgR0ZQX0FUT01JQyk7XG4gMjUyOlx0XHRcdGlmICghbWFjX3BrdClcbiAyNTM6XHRcdFx0XHRnb3RvIGZhaWw7XG4gMjU0Olx0XG4gMjU1Olx0XHRcdG1hY19wa3QtXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xuIDI1NjpcdFx0XHRtYWNfcGt0LVx1MDAzZXNkYXRhID0gc2RhdGE7XG4gMjU3Olx0XHRcdG5ldGRldl9ob2xkKHNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bWFjX3BrdC1cdTAwM2VkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7XG4gMjU4Olx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiAyNTk6XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZtYWNfcGt0LVx1MDAzZW5vZGUsIFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X21hY19jbWRfbGlzdCk7XG4gMjYwOlx0XHRcdHF1ZXVlX3dvcmsoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlbWFjX3dxLCBcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9tYWNfY21kX3dvcmspO1xuIDI2MTpcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiAyNjI6XHRcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIDI2MzpcdFxuIDI2NDpcdFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfQUNLOlxuIDI2NTpcdFx0XHRnb3RvIGZhaWw7XG4gMjY2Olx0XG4gMjY3Olx0XHRjYXNlIElFRUU4MDIxNTRfRkNfVFlQRV9EQVRBOlxuIDI2ODpcdFx0XHRyZXR1cm4gaWVlZTgwMjE1NF9kZWxpdmVyX3NrYihza2IpO1xuIDI2OTpcdFx0ZGVmYXVsdDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA2MgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExpZmVjeWNsZSBvZiBgY2ZnODAyMTU0X21hY19wa3RgKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBhIGBjZmc4MDIxNTRfbWFjX3BrdGAgc3RydWN0dXJlIGlzIGFsbG9jYXRlZCB1c2luZyBga3phbGxvY2AuIFRoZSBpbXBvcnRhbnQgdGhpbmcgaGVyZSBpcyB0aGF0IGBremFsbG9jYCBndWFyYW50ZWVzIGl0JiMzOTtzIHplcm9lZCwgYSBnb29kIHByYWN0aWNlIHRvIGF2b2lkIHVuaW5pdGlhbGl6ZWQgZGF0YSB2dWxuZXJhYmlsaXRpZXMuIFRoZW4sIHRoZSBgbmV0ZGV2X3RyYWNrZXJgIHdpdGhpbiB0aGUgYG1hY19wa3RgIGlzIGluaXRpYWxpemVkIHZpYSBgbmV0ZGV2X2hvbGRgLiBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBkZXNpZ25lZCB0byB0cmFjayB0aGUgbmV0d29yayBkZXZpY2UgYXNzb2NpYXRpb24gb2YgdGhpcyBwYWNrZXQuCgpOb3csIHRoZSBkZWFsbG9jYXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkOiBhIGBuZXRkZXZfcHV0YCBvbiB0aGUgYGRldl90cmFja2VyYCBhbmQgdGhlbiBhIGBrZnJlZWAgb2YgdGhlIHN0cnVjdHVyZS4gQ2xhc3NpYyBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBwYWlyLCBubyBzdXJwcmlzZXMgdGhlcmUuIEFuZCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYHJ4X2xpc3RzX2xvY2tgIGlzIHVzZWQgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2VzcyB0byB0aGUgbGlua2VkIGxpc3QgYW5kIGl0IHdpbGwgc2VyaWFsaXplIGFjY2VzcyB3aXRoIHdvcmsgcXVldWUgcHJvY2Vzc2luZy4KCkkgd2FudCB0byBiZSB0aG9yb3VnaC4gSSBuZWVkIHRvIGtub3cgd2hlcmUgZWxzZSB0aGlzIHN0cnVjdHVyZSBpcyB1c2VkLiBJJiMzOTtsbCBuZWVkIHRvIGdyZXAgdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGFueSBvdGhlciBvY2N1cnJlbmNlcyBvZiBgY2ZnODAyMTU0X21hY19wa3RgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIG9wZXJhdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEkmIzM5O20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBtb2RpZnkgdGhlIGFsbG9jYXRpb24sIGRlYWxsb2NhdGlvbiwgb3IgdXNhZ2UgcGF0dGVybnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjE1NF9tYWNfcGt0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oPTM2MT1zdHJ1Y3QgY2ZnODAyMTU0X2JlYWNvbl9yZXF1ZXN0IHtcbi0tXG5pbmNsdWRlL25ldC9jZmc4MDIxNTQuaC0zNjctLyoqXG5pbmNsdWRlL25ldC9jZmc4MDIxNTQuaDozNjg6ICogc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0IC0gTUFDIHBhY2tldCBkZXNjcmlwdG9yIChiZWFjb24vY29tbWFuZClcbmluY2x1ZGUvbmV0L2NmZzgwMjE1NC5oLTM2OS0gKiBAbm9kZTogTUFDIHBhY2tldHMgdG8gcHJvY2VzcyBsaXN0IG1lbWJlclxuLS1cbmluY2x1ZGUvbmV0L2NmZzgwMjE1NC5oLTM3NS0gKi9cbmluY2x1ZGUvbmV0L2NmZzgwMjE1NC5oOjM3NjpzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3Qge1xuaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmgtMzc3LVx0c3RydWN0IGxpc3RfaGVhZCBub2RlO1xuLS1cbm5ldC9tYWM4MDIxNTQvcnguYz0yND1zdGF0aWMgaW50IGllZWU4MDIxNTRfZGVsaXZlcl9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmMtMzEtXG5uZXQvbWFjODAyMTU0L3J4LmM6MzI6c3RhdGljIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqXG5uZXQvbWFjODAyMTU0L3J4LmMtMzMtbWFjODAyMTU0X3J4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxNTQvcnguYy0zNi17XG5uZXQvbWFjODAyMTU0L3J4LmM6Mzc6XHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3Q7XG5uZXQvbWFjODAyMTU0L3J4LmMtMzgtXG4tLVxubmV0L21hYzgwMjE1NC9yeC5jLTQwLVx0bWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChyeF9saXN0LFxubmV0L21hYzgwMjE1NC9yeC5jOjQxOlx0XHRcdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QsIG5vZGUpO1xubmV0L21hYzgwMjE1NC9yeC5jLTQyLVx0aWYgKG1hY19wa3QpIHtcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmM9NTI9dm9pZCBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L21hYzgwMjE1NC9yeC5jLTU1LVx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGllZWU4MDIxNTRfbG9jYWwsIHJ4X2JlYWNvbl93b3JrKTtcbm5ldC9tYWM4MDIxNTQvcnguYzo1NjpcdHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqbWFjX3BrdDtcbm5ldC9tYWM4MDIxNTQvcnguYy01Ny1cbi0tXG5uZXQvbWFjODAyMTU0L3J4LmM9OTA9dm9pZCBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9tYWM4MDIxNTQvcnguYy05My1cdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsLCByeF9tYWNfY21kX3dvcmspO1xubmV0L21hYzgwMjE1NC9yeC5jOjk0Olx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xubmV0L21hYzgwMjE1NC9yeC5jLTk1LVx0dTggbWFjX2NtZDtcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmM9MTUwPWllZWU4MDIxNTRfc3ViaWZfZnJhbWUoc3RydWN0IGllZWU4MDIxNTRfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxNTQvcnguYy0xNTQtXHRzdHJ1Y3Qgd3Bhbl9kZXYgKndwYW5fZGV2ID0gXHUwMDI2c2RhdGEtXHUwMDNld3Bhbl9kZXY7XG5uZXQvbWFjODAyMTU0L3J4LmM6MTU1Olx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xubmV0L21hYzgwMjE1NC9yeC5jLTE1Ni1cdF9fbGUxNiBzcGFuLCBzc2hvcnQ7XG4tLVxubmV0L21hYzgwMjE1NC9zY2FuLmM9MTA1PXN0YXRpYyB2b2lkIG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyhzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwpXG5uZXQvbWFjODAyMTU0L3NjYW4uYy0xMDYte1xubmV0L21hYzgwMjE1NC9zY2FuLmM6MTA3Olx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0LCAqdG1wO1xubmV0L21hYzgwMjE1NC9zY2FuLmMtMTA4LVx0TElTVF9IRUFEKG1hY19wa3RfbGlzdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2ODgKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVGhvcm91Z2huZXNzIGlzIEtleTogQmVhY29uIFByb2Nlc3NpbmcgJmFtcDsgU2Nhbm5pbmcgUmV2aWV3KioKClJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gYW55IG9uZSBhcmVhLCBJIHNob3VsZCBkbyBhIHF1aWNrIHN3ZWVwLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHdlIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbWFjODAyMTU0X3Byb2Nlc3NfYmVhY29uYCBzcGVjaWZpY2FsbHkg4oCTIHRoYXQmIzM5O3MgYSBwcmltZSBzdXNwZWN0LCBvZiBjb3Vyc2UuIEJ1dCBJIHNob3VsZG4mIzM5O3Qgc3RvcCB0aGVyZS4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gd2UgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgcmVwb3J0ZWQgaXNzdWUsIEkmIzM5O2xsIGFsc28gZ2xhbmNlIHRocm91Z2ggb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgc2VjdGlvbnMgd2l0aGluIGBzY2FuLmNgLiBJdCYjMzk7cyBwb3NzaWJsZSB0aGUgcm9vdCBjYXVzZSBpcyBiZWluZyB0cmlnZ2VyZWQgb3IgbWlzbWFuYWdlZCBpbiBhbm90aGVyIHBhcnQgb2YgdGhlIHNjYW5uaW5nIGxvZ2ljIGl0c2VsZi4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcyB0byBhdm9pZCBhIGZydXN0cmF0aW5nIHdpbGQgZ29vc2UgY2hhc2UgbGF0ZXIuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgZGVidWdnaW5nIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hYzgwMjE1NF9wcm9jZXNzX2JlYWNvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oPTI4MT1pbnQgbWFjODAyMTU0X2Fib3J0X3NjYW5fbG9ja2VkKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmgtMjgyLVx0XHRcdFx0c3RydWN0IGllZWU4MDIxNTRfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmg6MjgzOmludCBtYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24oc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaC0yODQtXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tYWM4MDIxNTQvcnguYz01Mj12b2lkIG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmMtNjEtXG5uZXQvbWFjODAyMTU0L3J4LmM6NjI6XHRtYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24obG9jYWwsIG1hY19wa3QtXHUwMDNlc2tiLCBtYWNfcGt0LVx1MDAzZXBhZ2UsIG1hY19wa3QtXHUwMDNlY2hhbm5lbCk7XG5uZXQvbWFjODAyMTU0L3J4LmMtNjMtXG4tLVxubmV0L21hYzgwMjE1NC9zY2FuLmM9MjkwPWludCBtYWM4MDIxNTRfdHJpZ2dlcl9zY2FuX2xvY2tlZChzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjE1NC9zY2FuLmMtMzI1LVxubmV0L21hYzgwMjE1NC9zY2FuLmM6MzI2OmludCBtYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24oc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjE1NC9zY2FuLmMtMzI3LVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQyOAoJCQkJCQkJb3V0cHV0OiAyMDIKCQkJCQkJCXRob3VnaHRzOiA1MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbWFjODAyMTU0IFJ4IFByb2Nlc3NpbmcgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBmb2N1c2VkIG9uIHN0YWJpbGl6aW5nIHRoZSBgbWFjODAyMTU0YCByZWNlaXZlIHBhdGgsIHNwZWNpZmljYWxseSBhZGRyZXNzaW5nIGNvbmN1cnJlbmN5IGFuZCByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgbG9va3MgcHJvbWlzaW5nLgoKRmlyc3QsIEkgc2VlIHRoZSBjb3JlIHByb2JsZW06IGNvbmN1cnJlbnQgYWNjZXNzIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGluIHRoZSBgcnhfYmVhY29uX2xpc3RgIGFuZCBgcnhfbWFjX2NtZF9saXN0YC4gVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgYHJ4X2xpc3RzX2xvY2tgIHNwaW5sb2NrIGlzIGEgc3RhbmRhcmQgYW5kIGVmZmVjdGl2ZSBhcHByb2FjaCB0byBzZXJpYWxpemUgZW5xdWV1ZWluZyBhbmQgZGVxdWV1ZWluZyBvcGVyYXRpb25zLiBUaGlzIGlzIGdvb2Q7IExPQ0tERVAgc2hvdWxkIGNhdGNoIGFueSBpc3N1ZXMgaGVyZS4gVGhlIGBuZXRkZXZpY2VfdHJhY2tlcmAgaXMga2V5IGZvciBwcmV2ZW50aW5nIHRoZSBjbGFzc2ljIHVzZS1hZnRlci1mcmVlIHByb2JsZW0gYXNzb2NpYXRlZCB3aXRoIGBzZGF0YS0mZ3Q7ZGV2YCDigJMgaXQmIzM5O3MgY3J1Y2lhbCB0byB0cmFjayB0aGUgZGV2aWNlJiMzOTtzIGxpZmV0aW1lIHdoZW4gYSBwYWNrZXQgaXMgcXVldWVkLiBUaGF0JiMzOTtzIGEgc29saWQgZGVmZW5zZS4KCk5leHQsIHRoZSB1c2Ugb2YgYGt6YWxsb2Nfb2JqYCBmb3IgYGNmZzgwMjE1NF9tYWNfcGt0YCBhbGxvY2F0aW9ucyBpcyBleGFjdGx5IHdoYXQgSSYjMzk7ZCBleHBlY3QuIFplcm9pbmcgYWxsIGZpZWxkcyBlbGltaW5hdGVzIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkLiBJIG5lZWQgdG8gYmUgc3VyZSB0aG91Z2gsIGFyZSB0aGVyZSBhbnkgaW5mbyBsZWFrcz8gTm8uIFplcm9pbmcgdGhlIGFsbG9jYXRpb25zLCBwYXNzaW5nIGBtYWNfcGt0LSZndDtkZXZfdHJhY2tlcmAgdG8gYG5ldGRldl9ob2xkYCwgYG5ldGRldl9wdXRgLCBhbmQgbm8gbmV3IGBjb3B5X3RvX3VzZXJgIGNhbGxzIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBkYXRhLiBFeGNlbGxlbnQuIE5vIG9idmlvdXMgYXZlbnVlcyBmb3IgbGVha2luZyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS4gTm8gY2hhbmdlcyB0byBib3VuZHMgY2hlY2tpbmcgb3IgbGVuZ3RoIGNhbGN1bGF0aW9uIHRoYXQgd291bGQgYWxsb3cgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBlaXRoZXIuCgpNeSBhbmFseXNpcyBjb25maXJtcyB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IEtNU0FOIGNvbmNlcm5zLiBJdCYjMzk7cyByZWFsbHkgYWJvdXQgY29uY3VycmVuY3kgYW5kIG1lbW9yeSBzYWZldHksIHdoaWNoIGFyZSBwcmVjaXNlbHkgd2hhdCBLQVNBTiBhbmQgTE9DS0RFUCBhcmUgZGVzaWduZWQgZm9yLiBUaGUgbG9ja2luZywgdGhlIHJlZmVyZW5jZSB0cmFja2luZywgYW5kIHRoZSB6ZXJvZWQgbWVtb3J5IGFsbG9jYXRpb25zIGFsbCBwb2ludCB0byB0aGlzLiBJdCBzZWVtcyB0aGF0IHRoaXMgcGF0Y2ggY2FuIGJlIGNsYXNzaWZpZWQgYXMgc2FmZSBmb3IgS1NNQU4uCgpTbywgdGhlIHJlYXNvbmluZyBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogS0FTQU4gYW5kIExPQ0tERVAgYXJlIGZ1bGx5IGFkZXF1YXRlLiBUaGlzIHBhdGNoIGRlYWxzIHdpdGggcmFjZSBjb25kaXRpb25zLCBkZXZpY2UgbGlmZXRpbWUsIGFuZCByZWZjb3VudGluZy4gYGt6YWxsb2Nfb2JqYCB0YWtlcyBjYXJlIG9mIHRoZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gTm8gbmVlZCBmb3IgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcuIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBzeW5jaHJvbml6YXRpb24gYW5kIG5ldGRldiByZWZlcmVuY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIG1hYzgwMjE1NCBSWCBxdWV1ZXMgKGJlYWNvbiBhbmQgTUFDIGNvbW1hbmQgcXVldWVzKS4gSXQgaW50cm9kdWNlcyBhIHNwaW5sb2NrIGByeF9saXN0c19sb2NrYCB0byBwcm90ZWN0IHF1ZXVlIG1hbmlwdWxhdGlvbiBhbmQgdXNlcyBgbmV0ZGV2aWNlX3RyYWNrZXJgIChgbmV0ZGV2X2hvbGRgIC8gYG5ldGRldl9wdXRgKSB0byBzYWZlbHkgcmV0YWluIGRldmljZSByZWZlcmVuY2VzIHVudGlsIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgZnJlZWQuXG5cbktBU0FOLCBMT0NLREVQLCBhbmQgdGhlIG5ldGRldiByZWZjb3VudCB0cmFja2VyIGFkZXF1YXRlbHkgY292ZXIgdGhlIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhdGNoIChzdWNoIGFzIHJhY2UgY29uZGl0aW9ucywgZGVhZGxvY2tzLCBhbmQgdXNlLWFmdGVyLWZyZWUvbGlmZXRpbWUgYnVncykuIGBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3RgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgZW5zdXJpbmcgYWxsIGZpZWxkcyBhcmUgemVyby1pbml0aWFsaXplZC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgcmVhZCwgYnJhbmNoZWQgb24sIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHN5bmNocm9uaXphdGlvbiBhbmQgbmV0ZGV2IHJlZmVyZW5jZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgbWFjODAyMTU0IFJYIHF1ZXVlcyAoYmVhY29uIGFuZCBNQUMgY29tbWFuZCBxdWV1ZXMpLiBJdCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgYHJ4X2xpc3RzX2xvY2tgIHRvIHByb3RlY3QgcXVldWUgbWFuaXB1bGF0aW9uIGFuZCB1c2VzIGBuZXRkZXZpY2VfdHJhY2tlcmAgKGBuZXRkZXZfaG9sZGAgLyBgbmV0ZGV2X3B1dGApIHRvIHNhZmVseSByZXRhaW4gZGV2aWNlIHJlZmVyZW5jZXMgdW50aWwgcGFja2V0cyBhcmUgcHJvY2Vzc2VkIGFuZCBmcmVlZC5cblxuS0FTQU4sIExPQ0tERVAsIGFuZCB0aGUgbmV0ZGV2IHJlZmNvdW50IHRyYWNrZXIgYWRlcXVhdGVseSBjb3ZlciB0aGUgcmlza3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgcmFjZSBjb25kaXRpb25zLCBkZWFkbG9ja3MsIGFuZCB1c2UtYWZ0ZXItZnJlZS9saWZldGltZSBidWdzKS4gYHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmpgLCBlbnN1cmluZyBhbGwgZmllbGRzIGFyZSB6ZXJvLWluaXRpYWxpemVkLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkLCBicmFuY2hlZCBvbiwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxMjo1Ni41NTg5MTcyMTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDcwNDc2NjIyNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUVFRTgwMjE1NFwiLFxuICAgIFwiTUFDODAyMTU0XCIsXG4gICAgXCJJRUVFODAyMTU0X0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJcIixcbiAgICBcIm1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlclwiLFxuICAgIFwibWFjODAyMTU0X3J4X2RlcXVldWVcIixcbiAgICBcImllZWU4MDIxNTRfc3ViaWZfZnJhbWVcIixcbiAgICBcIm1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29uc1wiLFxuICAgIFwiaWVlZTgwMjE1NF9hbGxvY19od1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgc3luY2hyb25pemF0aW9uIGFuZCBuZXRkZXYgcmVmZXJlbmNlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZvciBtYWM4MDIxNTQgUlggcXVldWVzIChiZWFjb24gYW5kIE1BQyBjb21tYW5kIHF1ZXVlcykuIEl0IGludHJvZHVjZXMgYSBzcGlubG9jayBgcnhfbGlzdHNfbG9ja2AgdG8gcHJvdGVjdCBxdWV1ZSBtYW5pcHVsYXRpb24gYW5kIHVzZXMgYG5ldGRldmljZV90cmFja2VyYCAoYG5ldGRldl9ob2xkYCAvIGBuZXRkZXZfcHV0YCkgdG8gc2FmZWx5IHJldGFpbiBkZXZpY2UgcmVmZXJlbmNlcyB1bnRpbCBwYWNrZXRzIGFyZSBwcm9jZXNzZWQgYW5kIGZyZWVkLlxcblxcbktBU0FOLCBMT0NLREVQLCBhbmQgdGhlIG5ldGRldiByZWZjb3VudCB0cmFja2VyIGFkZXF1YXRlbHkgY292ZXIgdGhlIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhdGNoIChzdWNoIGFzIHJhY2UgY29uZGl0aW9ucywgZGVhZGxvY2tzLCBhbmQgdXNlLWFmdGVyLWZyZWUvbGlmZXRpbWUgYnVncykuIGBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3RgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgZW5zdXJpbmcgYWxsIGZpZWxkcyBhcmUgemVyby1pbml0aWFsaXplZC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgcmVhZCwgYnJhbmNoZWQgb24sIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgUlggYW5kIHF1ZXVlIG1hbmFnZW1lbnQgaW4gdGhlIG1hYzgwMjE1NCBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgZGVkaWNhdGVkIHNwaW5sb2NrIChyeF9saXN0c19sb2NrKSB0byBwcm90ZWN0IHJ4X2JlYWNvbl9saXN0IGFuZCByeF9tYWNfY21kX2xpc3QsIHVwZGF0aW5nIHRoZSB3b3JrZXIgZGVxdWV1ZSBsb2dpYywgYW5kIHRha2luZy9yZWxlYXNpbmcgbmV0ZGV2aWNlIHJlZmVyZW5jZSB0cmFja2VycyAobmV0ZGV2X2hvbGQvbmV0ZGV2X3B1dCkgd2hlbiBxdWV1ZWluZyBhbmQgcHJvY2Vzc2luZyBNQUMgcGFja2V0cy4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgbWFjODAyMTU0IHZpcnR1YWwgZHJpdmVycyAobWFjODAyMTU0X2h3c2ltKSBhbmQgc3RhbmRhcmQgSUVFRSA4MDIuMTUuNCBuZXR3b3JrIGludGVyZmFjZXMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nIGZvciBjb25jdXJyZW5jeSBidWdzLCBkZWFkbG9ja3MsIGFuZCBuZXRkZXYgcmVmY291bnRpbmcgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxMjo1Ni41NTg5MjMyMzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NzYyNzgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJlMjhjM2FkODQyMTU3OTNmMzc0NWNhNGUzZGQ3ZTE5Mjk2MzY3YmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBTZXAgNCAxODoxMjo1NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaCBiL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oXFxuaW5kZXggNzZkMmNkMmUyYjMwOS4uNTczNDM3NjJkN2YwYiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oXFxuQEAgLTM2OSw2ICszNjksNyBAQCBzdHJ1Y3QgY2ZnODAyMTU0X2JlYWNvbl9yZXF1ZXN0IHtcXG4gICogQG5vZGU6IE1BQyBwYWNrZXRzIHRvIHByb2Nlc3MgbGlzdCBtZW1iZXJcXG4gICogQHNrYjogdGhlIHJlY2VpdmVkIHNrX2J1ZmZcXG4gICogQHNkYXRhOiB0aGUgaW50ZXJmYWNlIG9uIHdoaWNoIEBza2Igd2FzIHJlY2VpdmVkXFxuKyAqIEBkZXZfdHJhY2tlcjogbmV0ZGV2IHJlZmVyZW5jZSBoZWxkIHVudGlsIHRoZSBkZXNjcmlwdG9yIGlzIHJlbGVhc2VkXFxuICAqIEBwYWdlOiBwYWdlIGNvbmZpZ3VyYXRpb24gd2hlbiBAc2tiIHdhcyByZWNlaXZlZFxcbiAgKiBAY2hhbm5lbDogY2hhbm5lbCBjb25maWd1cmF0aW9uIHdoZW4gQHNrYiB3YXMgcmVjZWl2ZWRcXG4gICovXFxuQEAgLTM3Niw2ICszNzcsNyBAQCBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3Qge1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YTtcXG4rXFx0bmV0ZGV2aWNlX3RyYWNrZXIgZGV2X3RyYWNrZXI7XFxuIFxcdHU4IHBhZ2U7XFxuIFxcdHU4IGNoYW5uZWw7XFxuIH07XFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmggYi9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oXFxuaW5kZXggOGYyYmZmMjY4MzkyYi4uMDk2ZTZmMDM0MGRjNyAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oXFxuKysrIGIvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaFxcbkBAIC03NCw2ICs3NCw4IEBAIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsIHtcXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0IHJ4X2JlYWNvbl93b3JrO1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIHJ4X21hY19jbWRfbGlzdDtcXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0IHJ4X21hY19jbWRfd29yaztcXG4rXFx0LyogUHJvdGVjdHMgcnhfYmVhY29uX2xpc3QgYW5kIHJ4X21hY19jbWRfbGlzdC4gKi9cXG4rXFx0c3BpbmxvY2tfdCByeF9saXN0c19sb2NrO1xcbiBcXG4gXFx0LyogQXNzb2NpYXRpb24gKi9cXG4gXFx0c3RydWN0IGllZWU4MDIxNTRfcGFuX2RldmljZSAqYXNzb2NfZGV2O1xcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L21haW4uYyBiL25ldC9tYWM4MDIxNTQvbWFpbi5jXFxuaW5kZXggZWExZWZlZjM1NzJhZS4uYTZhOTc2YjBkZWE1NiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTU0L21haW4uY1xcbisrKyBiL25ldC9tYWM4MDIxNTQvbWFpbi5jXFxuQEAgLTkxLDYgKzkxLDcgQEAgaWVlZTgwMjE1NF9hbGxvY19odyhzaXplX3QgcHJpdl9kYXRhX2xlbiwgY29uc3Qgc3RydWN0IGllZWU4MDIxNTRfb3BzICpvcHMpXFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZsb2NhbC1cXHUwMDNlaW50ZXJmYWNlcyk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfYmVhY29uX2xpc3QpO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X21hY19jbWRfbGlzdCk7XFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfbGlzdHNfbG9jayk7XFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNmxvY2FsLVxcdTAwM2VpZmxpc3RfbXR4KTtcXG4gXFxuIFxcdHRhc2tsZXRfc2V0dXAoXFx1MDAyNmxvY2FsLVxcdTAwM2V0YXNrbGV0LCBpZWVlODAyMTU0X3Rhc2tsZXRfaGFuZGxlcik7XFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvcnguYyBiL25ldC9tYWM4MDIxNTQvcnguY1xcbmluZGV4IGNkOGYyYTExOTIwZDAuLmRmMmY2MTI4ZGRkNGEgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjE1NC9yeC5jXFxuKysrIGIvbmV0L21hYzgwMjE1NC9yeC5jXFxuQEAgLTI5LDIxICsyOSw0MCBAQCBzdGF0aWMgaW50IGllZWU4MDIxNTRfZGVsaXZlcl9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0cmV0dXJuIG5ldGlmX3JlY2VpdmVfc2tiKHNrYik7XFxuIH1cXG4gXFxuK3N0YXRpYyBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKlxcbittYWM4MDIxNTRfcnhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsXFxuK1xcdFxcdCAgICAgc3RydWN0IGxpc3RfaGVhZCAqcnhfbGlzdCxcXG4rXFx0XFx0ICAgICBzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuK3tcXG4rXFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfbGlzdHNfbG9jayk7XFxuK1xcdG1hY19wa3QgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwocnhfbGlzdCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTtcXG4rXFx0aWYgKG1hY19wa3QpIHtcXG4rXFx0XFx0bGlzdF9kZWwoXFx1MDAyNm1hY19wa3QtXFx1MDAzZW5vZGUpO1xcbitcXHRcXHRpZiAoIWxpc3RfZW1wdHkocnhfbGlzdCkpXFxuK1xcdFxcdFxcdHF1ZXVlX3dvcmsobG9jYWwtXFx1MDAzZW1hY193cSwgd29yayk7XFxuK1xcdH1cXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmxvY2FsLVxcdTAwM2VyeF9saXN0c19sb2NrKTtcXG4rXFxuK1xcdHJldHVybiBtYWNfcGt0O1xcbit9XFxuK1xcbiB2b2lkIG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwgPVxcbiBcXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGllZWU4MDIxNTRfbG9jYWwsIHJ4X2JlYWNvbl93b3JrKTtcXG4gXFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xcbiBcXG4tXFx0bWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X2JlYWNvbl9saXN0LFxcbi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QsIG5vZGUpO1xcbitcXHRtYWNfcGt0ID0gbWFjODAyMTU0X3J4X2RlcXVldWUobG9jYWwsIFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfYmVhY29uX2xpc3QsIHdvcmspO1xcbiBcXHRpZiAoIW1hY19wa3QpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdG1hYzgwMjE1NF9wcm9jZXNzX2JlYWNvbihsb2NhbCwgbWFjX3BrdC1cXHUwMDNlc2tiLCBtYWNfcGt0LVxcdTAwM2VwYWdlLCBtYWNfcGt0LVxcdTAwM2VjaGFubmVsKTtcXG4gXFxuLVxcdGxpc3RfZGVsKFxcdTAwMjZtYWNfcGt0LVxcdTAwM2Vub2RlKTtcXG4gXFx0a2ZyZWVfc2tiKG1hY19wa3QtXFx1MDAzZXNrYik7XFxuK1xcdG5ldGRldl9wdXQobWFjX3BrdC1cXHUwMDNlc2RhdGEtXFx1MDAzZWRldiwgXFx1MDAyNm1hY19wa3QtXFx1MDAzZWRldl90cmFja2VyKTtcXG4gXFx0a2ZyZWUobWFjX3BrdCk7XFxuIH1cXG4gXFxuQEAgLTc2LDggKzk1LDcgQEAgdm9pZCBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHR1OCBtYWNfY21kO1xcbiBcXHRpbnQgcmM7XFxuIFxcbi1cXHRtYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfbWFjX2NtZF9saXN0LFxcbi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QsIG5vZGUpO1xcbitcXHRtYWNfcGt0ID0gbWFjODAyMTU0X3J4X2RlcXVldWUobG9jYWwsIFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfbWFjX2NtZF9saXN0LCB3b3JrKTtcXG4gXFx0aWYgKCFtYWNfcGt0KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbkBAIC0xMjMsOCArMTQxLDggQEAgdm9pZCBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHR9XFxuIFxcbiBvdXQ6XFxuLVxcdGxpc3RfZGVsKFxcdTAwMjZtYWNfcGt0LVxcdTAwM2Vub2RlKTtcXG4gXFx0a2ZyZWVfc2tiKG1hY19wa3QtXFx1MDAzZXNrYik7XFxuK1xcdG5ldGRldl9wdXQobWFjX3BrdC1cXHUwMDNlc2RhdGEtXFx1MDAzZWRldiwgXFx1MDAyNm1hY19wa3QtXFx1MDAzZWRldl90cmFja2VyKTtcXG4gXFx0a2ZyZWUobWFjX3BrdCk7XFxuIH1cXG4gXFxuQEAgLTIyMSw4ICsyMzksMTEgQEAgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcdFxcdG1hY19wa3QtXFx1MDAzZXNkYXRhID0gc2RhdGE7XFxuIFxcdFxcdG1hY19wa3QtXFx1MDAzZXBhZ2UgPSBzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXNjYW5fcGFnZTtcXG4gXFx0XFx0bWFjX3BrdC1cXHUwMDNlY2hhbm5lbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlc2Nhbl9jaGFubmVsO1xcbitcXHRcXHRuZXRkZXZfaG9sZChzZGF0YS1cXHUwMDNlZGV2LCBcXHUwMDI2bWFjX3BrdC1cXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xcbitcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfbGlzdHNfbG9jayk7XFxuIFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm1hY19wa3QtXFx1MDAzZW5vZGUsIFxcdTAwMjZzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2JlYWNvbl9saXN0KTtcXG4gXFx0XFx0cXVldWVfd29yayhzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZW1hY193cSwgXFx1MDAyNnNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfYmVhY29uX3dvcmspO1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9saXN0c19sb2NrKTtcXG4gXFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiBcXG4gXFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfTUFDX0NNRDpcXG5AQCAtMjMzLDggKzI1NCwxMSBAQCBpZWVlODAyMTU0X3N1YmlmX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFxuIFxcdFxcdG1hY19wa3QtXFx1MDAzZXNrYiA9IHNrYl9nZXQoc2tiKTtcXG4gXFx0XFx0bWFjX3BrdC1cXHUwMDNlc2RhdGEgPSBzZGF0YTtcXG4rXFx0XFx0bmV0ZGV2X2hvbGQoc2RhdGEtXFx1MDAzZWRldiwgXFx1MDAyNm1hY19wa3QtXFx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2xpc3RzX2xvY2spO1xcbiBcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZtYWNfcGt0LVxcdTAwM2Vub2RlLCBcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9tYWNfY21kX2xpc3QpO1xcbiBcXHRcXHRxdWV1ZV93b3JrKHNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlbWFjX3dxLCBcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9tYWNfY21kX3dvcmspO1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9saXN0c19sb2NrKTtcXG4gXFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiBcXG4gXFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfQUNLOlxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L3NjYW4uYyBiL25ldC9tYWM4MDIxNTQvc2Nhbi5jXFxuaW5kZXggMDA1MzM4Zjg5Yjc1ZS4uYzNjNjFlYmRlMTU2OCAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTU0L3NjYW4uY1xcbisrKyBiL25ldC9tYWM4MDIxNTQvc2Nhbi5jXFxuQEAgLTEwNSwxMCArMTA1LDE2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbWFjODAyMTU0X3NjYW5fZ2V0X2NoYW5uZWxfdGltZSh1OCBkdXJhdGlvbl9vcmRlcixcXG4gc3RhdGljIHZvaWQgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbClcXG4ge1xcbiBcXHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3QsICp0bXA7XFxuK1xcdExJU1RfSEVBRChtYWNfcGt0X2xpc3QpO1xcbiBcXG4tXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1hY19wa3QsIHRtcCwgXFx1MDAyNmxvY2FsLVxcdTAwM2VyeF9iZWFjb25fbGlzdCwgbm9kZSkge1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmxvY2FsLVxcdTAwM2VyeF9saXN0c19sb2NrKTtcXG4rXFx0bGlzdF9zcGxpY2VfaW5pdChcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X2JlYWNvbl9saXN0LCBcXHUwMDI2bWFjX3BrdF9saXN0KTtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmxvY2FsLVxcdTAwM2VyeF9saXN0c19sb2NrKTtcXG4rXFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtYWNfcGt0LCB0bXAsIFxcdTAwMjZtYWNfcGt0X2xpc3QsIG5vZGUpIHtcXG4gXFx0XFx0bGlzdF9kZWwoXFx1MDAyNm1hY19wa3QtXFx1MDAzZW5vZGUpO1xcbiBcXHRcXHRrZnJlZV9za2IobWFjX3BrdC1cXHUwMDNlc2tiKTtcXG4rXFx0XFx0bmV0ZGV2X3B1dChtYWNfcGt0LVxcdTAwM2VzZGF0YS1cXHUwMDNlZGV2LCBcXHUwMDI2bWFjX3BrdC1cXHUwMDNlZGV2X3RyYWNrZXIpO1xcbiBcXHRcXHRrZnJlZShtYWNfcGt0KTtcXG4gXFx0fVxcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEyOjU3LjA1NzMxNjc1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzUxNjA3NTY0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUVFRTgwMjE1NFwiLFxuICAgIFwiTUFDODAyMTU0XCIsXG4gICAgXCJJRUVFODAyMTU0X0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJcIixcbiAgICBcIm1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlclwiLFxuICAgIFwibWFjODAyMTU0X3J4X2RlcXVldWVcIixcbiAgICBcImllZWU4MDIxNTRfc3ViaWZfZnJhbWVcIixcbiAgICBcIm1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29uc1wiLFxuICAgIFwiaWVlZTgwMjE1NF9hbGxvY19od1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCBSWCBhbmQgcXVldWUgbWFuYWdlbWVudCBpbiB0aGUgbWFjODAyMTU0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBkZWRpY2F0ZWQgc3BpbmxvY2sgKHJ4X2xpc3RzX2xvY2spIHRvIHByb3RlY3QgcnhfYmVhY29uX2xpc3QgYW5kIHJ4X21hY19jbWRfbGlzdCwgdXBkYXRpbmcgdGhlIHdvcmtlciBkZXF1ZXVlIGxvZ2ljLCBhbmQgdGFraW5nL3JlbGVhc2luZyBuZXRkZXZpY2UgcmVmZXJlbmNlIHRyYWNrZXJzIChuZXRkZXZfaG9sZC9uZXRkZXZfcHV0KSB3aGVuIHF1ZXVlaW5nIGFuZCBwcm9jZXNzaW5nIE1BQyBwYWNrZXRzLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSBtYWM4MDIxNTQgdmlydHVhbCBkcml2ZXJzIChtYWM4MDIxNTRfaHdzaW0pIGFuZCBzdGFuZGFyZCBJRUVFIDgwMi4xNS40IG5ldHdvcmsgaW50ZXJmYWNlcywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcgZm9yIGNvbmN1cnJlbmN5IGJ1Z3MsIGRlYWRsb2NrcywgYW5kIG5ldGRldiByZWZjb3VudGluZyBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmUyOGMzYWQ4NDIxNTc5M2YzNzQ1Y2E0ZTNkZDdlMTkyOTYzNjdiZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTg6MTI6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaCBiL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oXG5pbmRleCA3NmQyY2QyZTJiMzA5Li41NzM0Mzc2MmQ3ZjBiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmhcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oXG5AQCAtMzY5LDYgKzM2OSw3IEBAIHN0cnVjdCBjZmc4MDIxNTRfYmVhY29uX3JlcXVlc3Qge1xuICAqIEBub2RlOiBNQUMgcGFja2V0cyB0byBwcm9jZXNzIGxpc3QgbWVtYmVyXG4gICogQHNrYjogdGhlIHJlY2VpdmVkIHNrX2J1ZmZcbiAgKiBAc2RhdGE6IHRoZSBpbnRlcmZhY2Ugb24gd2hpY2ggQHNrYiB3YXMgcmVjZWl2ZWRcbisgKiBAZGV2X3RyYWNrZXI6IG5ldGRldiByZWZlcmVuY2UgaGVsZCB1bnRpbCB0aGUgZGVzY3JpcHRvciBpcyByZWxlYXNlZFxuICAqIEBwYWdlOiBwYWdlIGNvbmZpZ3VyYXRpb24gd2hlbiBAc2tiIHdhcyByZWNlaXZlZFxuICAqIEBjaGFubmVsOiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gd2hlbiBAc2tiIHdhcyByZWNlaXZlZFxuICAqL1xuQEAgLTM3Niw2ICszNzcsNyBAQCBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3Qge1xuIFx0c3RydWN0IGxpc3RfaGVhZCBub2RlO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcdHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YTtcbitcdG5ldGRldmljZV90cmFja2VyIGRldl90cmFja2VyO1xuIFx0dTggcGFnZTtcbiBcdHU4IGNoYW5uZWw7XG4gfTtcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oIGIvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaFxuaW5kZXggOGYyYmZmMjY4MzkyYi4uMDk2ZTZmMDM0MGRjNyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmhcbisrKyBiL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmhcbkBAIC03NCw2ICs3NCw4IEBAIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsIHtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCByeF9iZWFjb25fd29yaztcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcnhfbWFjX2NtZF9saXN0O1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IHJ4X21hY19jbWRfd29yaztcbitcdC8qIFByb3RlY3RzIHJ4X2JlYWNvbl9saXN0IGFuZCByeF9tYWNfY21kX2xpc3QuICovXG4rXHRzcGlubG9ja190IHJ4X2xpc3RzX2xvY2s7XG4gXG4gXHQvKiBBc3NvY2lhdGlvbiAqL1xuIFx0c3RydWN0IGllZWU4MDIxNTRfcGFuX2RldmljZSAqYXNzb2NfZGV2O1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvbWFpbi5jIGIvbmV0L21hYzgwMjE1NC9tYWluLmNcbmluZGV4IGVhMWVmZWYzNTcyYWUuLmE2YTk3NmIwZGVhNTYgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTU0L21haW4uY1xuKysrIGIvbmV0L21hYzgwMjE1NC9tYWluLmNcbkBAIC05MSw2ICs5MSw3IEBAIGllZWU4MDIxNTRfYWxsb2NfaHcoc2l6ZV90IHByaXZfZGF0YV9sZW4sIGNvbnN0IHN0cnVjdCBpZWVlODAyMTU0X29wcyAqb3BzKVxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bG9jYWwtXHUwMDNlaW50ZXJmYWNlcyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZsb2NhbC1cdTAwM2VyeF9tYWNfY21kX2xpc3QpO1xuK1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4gXHRtdXRleF9pbml0KFx1MDAyNmxvY2FsLVx1MDAzZWlmbGlzdF9tdHgpO1xuIFxuIFx0dGFza2xldF9zZXR1cChcdTAwMjZsb2NhbC1cdTAwM2V0YXNrbGV0LCBpZWVlODAyMTU0X3Rhc2tsZXRfaGFuZGxlcik7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjE1NC9yeC5jIGIvbmV0L21hYzgwMjE1NC9yeC5jXG5pbmRleCBjZDhmMmExMTkyMGQwLi5kZjJmNjEyOGRkZDRhIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjE1NC9yeC5jXG4rKysgYi9uZXQvbWFjODAyMTU0L3J4LmNcbkBAIC0yOSwyMSArMjksNDAgQEAgc3RhdGljIGludCBpZWVlODAyMTU0X2RlbGl2ZXJfc2tiKHN0cnVjdCBza19idWZmICpza2IpXG4gXHRyZXR1cm4gbmV0aWZfcmVjZWl2ZV9za2Ioc2tiKTtcbiB9XG4gXG4rc3RhdGljIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqXG4rbWFjODAyMTU0X3J4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxuK1x0XHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ4X2xpc3QsXG4rXHRcdCAgICAgc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuK3tcbitcdHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqbWFjX3BrdDtcbitcbitcdHNwaW5fbG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbitcdG1hY19wa3QgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwocnhfbGlzdCxcbitcdFx0XHRcdFx0ICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTtcbitcdGlmIChtYWNfcGt0KSB7XG4rXHRcdGxpc3RfZGVsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSk7XG4rXHRcdGlmICghbGlzdF9lbXB0eShyeF9saXN0KSlcbitcdFx0XHRxdWV1ZV93b3JrKGxvY2FsLVx1MDAzZW1hY193cSwgd29yayk7XG4rXHR9XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbitcbitcdHJldHVybiBtYWNfcGt0O1xuK31cbitcbiB2b2lkIG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwgPVxuIFx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGllZWU4MDIxNTRfbG9jYWwsIHJ4X2JlYWNvbl93b3JrKTtcbiBcdHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqbWFjX3BrdDtcbiBcbi1cdG1hY19wa3QgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXHUwMDI2bG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QsXG4tXHRcdFx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7XG4rXHRtYWNfcGt0ID0gbWFjODAyMTU0X3J4X2RlcXVldWUobG9jYWwsIFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2JlYWNvbl9saXN0LCB3b3JrKTtcbiBcdGlmICghbWFjX3BrdClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0bWFjODAyMTU0X3Byb2Nlc3NfYmVhY29uKGxvY2FsLCBtYWNfcGt0LVx1MDAzZXNrYiwgbWFjX3BrdC1cdTAwM2VwYWdlLCBtYWNfcGt0LVx1MDAzZWNoYW5uZWwpO1xuIFxuLVx0bGlzdF9kZWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlKTtcbiBcdGtmcmVlX3NrYihtYWNfcGt0LVx1MDAzZXNrYik7XG4rXHRuZXRkZXZfcHV0KG1hY19wa3QtXHUwMDNlc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyKTtcbiBcdGtmcmVlKG1hY19wa3QpO1xuIH1cbiBcbkBAIC03Niw4ICs5NSw3IEBAIHZvaWQgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHU4IG1hY19jbWQ7XG4gXHRpbnQgcmM7XG4gXG4tXHRtYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmxvY2FsLVx1MDAzZXJ4X21hY19jbWRfbGlzdCxcbi1cdFx0XHRcdFx0ICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTtcbitcdG1hY19wa3QgPSBtYWM4MDIxNTRfcnhfZGVxdWV1ZShsb2NhbCwgXHUwMDI2bG9jYWwtXHUwMDNlcnhfbWFjX2NtZF9saXN0LCB3b3JrKTtcbiBcdGlmICghbWFjX3BrdClcbiBcdFx0cmV0dXJuO1xuIFxuQEAgLTEyMyw4ICsxNDEsOCBAQCB2b2lkIG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHR9XG4gXG4gb3V0OlxuLVx0bGlzdF9kZWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlKTtcbiBcdGtmcmVlX3NrYihtYWNfcGt0LVx1MDAzZXNrYik7XG4rXHRuZXRkZXZfcHV0KG1hY19wa3QtXHUwMDNlc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyKTtcbiBcdGtmcmVlKG1hY19wa3QpO1xuIH1cbiBcbkBAIC0yMjEsOCArMjM5LDExIEBAIGllZWU4MDIxNTRfc3ViaWZfZnJhbWUoc3RydWN0IGllZWU4MDIxNTRfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRtYWNfcGt0LVx1MDAzZXNkYXRhID0gc2RhdGE7XG4gXHRcdG1hY19wa3QtXHUwMDNlcGFnZSA9IHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXNjYW5fcGFnZTtcbiBcdFx0bWFjX3BrdC1cdTAwM2VjaGFubmVsID0gc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlc2Nhbl9jaGFubmVsO1xuK1x0XHRuZXRkZXZfaG9sZChzZGF0YS1cdTAwM2VkZXYsIFx1MDAyNm1hY19wa3QtXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlLCBcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCk7XG4gXHRcdHF1ZXVlX3dvcmsoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlbWFjX3dxLCBcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9iZWFjb25fd29yayk7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIFx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4gXG4gXHRjYXNlIElFRUU4MDIxNTRfRkNfVFlQRV9NQUNfQ01EOlxuQEAgLTIzMyw4ICsyNTQsMTEgQEAgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXG4gXHRcdG1hY19wa3QtXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xuIFx0XHRtYWNfcGt0LVx1MDAzZXNkYXRhID0gc2RhdGE7XG4rXHRcdG5ldGRldl9ob2xkKHNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bWFjX3BrdC1cdTAwM2VkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7XG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiBcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZtYWNfcGt0LVx1MDAzZW5vZGUsIFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X21hY19jbWRfbGlzdCk7XG4gXHRcdHF1ZXVlX3dvcmsoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlbWFjX3dxLCBcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9tYWNfY21kX3dvcmspO1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiBcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIFxuIFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfQUNLOlxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvc2Nhbi5jIGIvbmV0L21hYzgwMjE1NC9zY2FuLmNcbmluZGV4IDAwNTMzOGY4OWI3NWUuLmMzYzYxZWJkZTE1NjggMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTU0L3NjYW4uY1xuKysrIGIvbmV0L21hYzgwMjE1NC9zY2FuLmNcbkBAIC0xMDUsMTAgKzEwNSwxNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG1hYzgwMjE1NF9zY2FuX2dldF9jaGFubmVsX3RpbWUodTggZHVyYXRpb25fb3JkZXIsXG4gc3RhdGljIHZvaWQgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbClcbiB7XG4gXHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3QsICp0bXA7XG4rXHRMSVNUX0hFQUQobWFjX3BrdF9saXN0KTtcbiBcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtYWNfcGt0LCB0bXAsIFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2JlYWNvbl9saXN0LCBub2RlKSB7XG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4rXHRsaXN0X3NwbGljZV9pbml0KFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2JlYWNvbl9saXN0LCBcdTAwMjZtYWNfcGt0X2xpc3QpO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4rXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobWFjX3BrdCwgdG1wLCBcdTAwMjZtYWNfcGt0X2xpc3QsIG5vZGUpIHtcbiBcdFx0bGlzdF9kZWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlKTtcbiBcdFx0a2ZyZWVfc2tiKG1hY19wa3QtXHUwMDNlc2tiKTtcbitcdFx0bmV0ZGV2X3B1dChtYWNfcGt0LVx1MDAzZXNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bWFjX3BrdC1cdTAwM2VkZXZfdHJhY2tlcik7XG4gXHRcdGtmcmVlKG1hY19wa3QpO1xuIFx0fVxuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEyOjU3LjA1NzMxODUxOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzMDU5Nzc4MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgODAyLjE1LjQgTUFDIExheWVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gdGhlIGBuZXQvbWFjODAyMTU0L2Agc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYGllZWU4MDIxNTRfaS5oYCwgYG1haW4uY2AsIGByeC5jYCwgYHNjYW4uY2AsIGFuZCBgaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBicmVhayBkb3duIHRoZSBjaGFuZ2VzIGFuZCB1bmRlcnN0YW5kIHRoZWlyIGltcGxpY2F0aW9ucyBmb3IgY29uY3VycmVuY3kgYW5kIGRldmljZSB0cmFja2luZy5cblxuRmlyc3QsIGBjZmc4MDIxNTRfbWFjX3BrdGAgaGFzIHRoaXMgYG5ldGRldmljZV90cmFja2VyIGRldl90cmFja2VyO2AgYWRkZWQuIFRoaXMgc3VnZ2VzdHMgdGhleSBhcmUgaW5jb3Jwb3JhdGluZyBhIGRldmljZSB0cmFja2luZyBtZWNoYW5pc20gd2l0aGluIHRoZSBwYWNrZXQgc3RydWN0dXJlLCBwcm9iYWJseSBmb3IgcmVmZXJlbmNlIGNvdW50aW5nIG9yIGxpZmVjeWNsZSBtYW5hZ2VtZW50LCB3aGljaCBpcyBpbXBvcnRhbnQuXG5cblRoZW4sIGluIGBpZWVlODAyMTU0X2xvY2FsYCB0aGVyZeKAmXMgYSBuZXcgYHNwaW5sb2NrX3QgcnhfbGlzdHNfbG9jaztgLiBBaGEhIFRoaXMgaXMgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSwgY2xlYXJseSBhaW1pbmcgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2VzcyB0byBgcnhfYmVhY29uX2xpc3RgIGFuZCBgcnhfbWFjX2NtZF9saXN0YC4gVGhlIGBzcGluX2xvY2tfaW5pdGAgaW4gYG1haW4uY2AgY29uZmlybXMgdGhpcy4gVGhpcyBpcyBnb29kIHRvIHNlZTsgc2hhcmVkIGRhdGEgc3RydWN0dXJlcyBpbiBuZXR3b3JrIHN0YWNrcyBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgcmFjZSBjb25kaXRpb25zLCBzbyBleHBsaWNpdCBsb2NraW5nIGlzIGEgbmVjZXNzaXR5LlxuXG5UaGUgYHJ4LmNgIGNoYW5nZXMgYXJlIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYG1hYzgwMjE1NF9yeF9kZXF1ZXVlYCBpbXBsaWVzIGEgbmV3IG1ldGhvZCBmb3IgaGFuZGxpbmcgcmVjZWl2ZWQgcGFja2V0cywgYW5kIHRoZSB1c2Ugb2YgdGhlIGByeF9saXN0c19sb2NrYCB3aXRoaW4gdGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCB0aGUgdXBkYXRlcyB0byBgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJgIGFuZCBgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyYCB0byB1c2UgaXQsIHNvbGlkaWZpZXMgdGhlIGludGVudGlvbiBvZiB0aHJlYWQtc2FmZXR5LiBUaGUgYWRkaXRpb24gb2YgYGRldl90cmFja2VyYCBpbiB0aGVzZSB3b3JrZXJzIGlzIGxvZ2ljYWwuIEkgY2FuIHNlZSB0aGUgbGlzdCBtYW5hZ2VtZW50IGFuZCBwYWNrZXQgbGlmZWN5Y2xlIGFyZSBub3cgdGlnaHRseSBjb250cm9sbGVkIHdpdGhpbiB0aGUgbG9ja2luZyBjb250ZXh0LiBBbHNvLCB0aGUgYG5ldGRldl9ob2xkYCB1c2FnZSBpbiBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAgaW5kaWNhdGVzIGRldmljZSByZWZlcmVuY2UgdHJhY2tpbmcsIHRpZWQgdG8gdGhlIGBkZXZfdHJhY2tlcmAuXG5cbkZpbmFsbHksIHRoZSB1cGRhdGVzIHRvIGBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnNgIGluIGBzY2FuLmNgIHJlaW5mb3JjZSB0aGUgc2FtZSBwYXR0ZXJuOiBsaXN0IGxvY2tpbmcgYW5kIGRldmljZSB0cmFja2VyIGhhbmRsaW5nLiBUaGV5J3JlIG1ha2luZyBhIGdvb2QgZWZmb3J0IHRvIGVuc3VyZSBjb2hlcmVuY2Ugd2hlbiBtb3ZpbmcgZGF0YSBiZXR3ZWVuIGxpc3RzIGFuZCB0aHJlYWRzLlxuXG5Ob3csIGFzIGEgbmV4dCBzdGVwLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZnV6emluZyBhdHRhY2sgc3VyZmFjZS4gSXQgbG9va3MgbGlrZSBgbWFjODAyMTU0YCBoYXMgbXVsdGlwbGUgaW50ZXJmYWNlcyBmb3IgaW50ZXJhY3Rpb24sIGluY2x1ZGluZyB0aGUgYG1hYzgwMjE1NF9od3NpbWAsIG5ldGxpbmssIDZMb1dQQU4sIGFuZCBzb2NrZXRzLiBUaGF0J3MgZ29vZCDigJMgcGxlbnR5IG9mIGVudHJ5IHBvaW50cyBmb3IgdnVsbmVyYWJpbGl0eSByZXNlYXJjaCBhbmQsIGltcG9ydGFudGx5LCBTeXprYWxsZXIgaXMgYWxyZWFkeSBmdXp6aW5nIGl0LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIHRvIHNlZSBpZiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBvciByZXF1aXJlIHNwZWNpZmljIGtlcm5lbCBidWlsZCBvcHRpb25zLiBUaGlzIHNvdW5kcyBwcm9taXNpbmcsIGFuZCBJJ2xsIG5lZWQgdG8gZXZhbHVhdGUgdGhlIHBvdGVudGlhbCBmb3IgcmFjZSBjb25kaXRpb25zIHdpdGhpbiB0aGUgcHJvdGVjdGVkIGNyaXRpY2FsIHNlY3Rpb25zLiBJIGV4cGVjdCB0aGVyZSB0byBiZSBhIGdvb2QgYXR0YWNrIHN1cmZhY2UsIEknbGwgbW92ZSBvbiB0byBhIGxpbmUtYnktbGluZSByZXZpZXcgb2YgdGhlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxMzoyMC4xMTcxMDA5NDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE4MDQ1MTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxNTRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjE1NFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTU0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTU0L0tjb25maWc6Mjpjb25maWcgTUFDODAyMTU0XFxubmV0L21hYzgwMjE1NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTUuNCBTb2Z0IE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjE1NClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjIwLjQzNTE1ODEyM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQzMTIzMDEwNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktjb25maWcgRGVwZW5kZW5jeSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBgbmV0L21hYzgwMjE1NGAgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgbW92ZSBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gYEtjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdsbCBmaW5kIGFsbCB0aGUganVpY3kgZGV0YWlscyBhYm91dCBkZXBlbmRlbmNpZXMuIEknbSBhZnRlciB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBmZWF0dXJlcywgb3B0aW9ucywgYW5kIHBvdGVudGlhbGx5IG90aGVyIHN1YnN5c3RlbXMuIFRoaXMgaXMgdGhlIHF1aWNrZXN0IHdheSB0byB1bmRlcnN0YW5kIHdoYXQgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGEgcGFydGljdWxhciBNQUM4MDIxNTQgY29tcG9uZW50IGFjdHVhbGx5ICpkb2VzKiBpbiB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoZSBrZXJuZWwgYnVpbGQuIEknbSB0aGlua2luZyBJIGNhbiBxdWlja2x5IHNlZSB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIG9uLCBhbmQgcGVyaGFwcyBpZGVudGlmeSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGFyZWFzIHdoZXJlIEkgbmVlZCB0byBwYXkgZXh0cmEgYXR0ZW50aW9uLiBUaW1lIHRvIGdldCB0byBpdC4gTGV0J3Mgc2VlIHdoYXQgYEtjb25maWdgIHJldmVhbHMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjczNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjI0Ljc0NzQ2MjkyM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4ODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxNTQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1BQzgwMjE1NFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTUuNCBTb2Z0IE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjE1NClcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIElFRUU4MDIxNTRcXG4gICA1OlxcdFxcdHNlbGVjdCBDUkNfQ0NJVFRcXG4gICA2OlxcdFxcdHNlbGVjdCBDUllQVE9cXG4gICA3OlxcdFxcdHNlbGVjdCBDUllQVE9fQVVUSEVOQ1xcbiAgIDg6XFx0XFx0c2VsZWN0IENSWVBUT19DQ01cXG4gICA5OlxcdFxcdHNlbGVjdCBDUllQVE9fQ1RSXFxuICAxMDpcXHRcXHRzZWxlY3QgQ1JZUFRPX0FFU1xcbiAgMTE6XFx0XFx0aGVscFxcbiAgMTI6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBoYXJkd2FyZSBpbmRlcGVuZGVudCBJRUVFIDgwMi4xNS40XFxuICAxMzpcXHRcXHQgIG5ldHdvcmtpbmcgc3RhY2sgZm9yIFNvZnRNQUMgZGV2aWNlcyAodGhlIG9uZXMgaW1wbGVtZW50aW5nXFxuICAxNDpcXHRcXHQgIG9ubHkgUEhZIGxldmVsIG9mIElFRUUgODAyLjE1LjQgc3RhbmRhcmQpLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIE5vdGU6IHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbmVpdGhlciBjZXJ0aWZpZWQsIG5vciBmZWF0dXJlXFxuICAxNzpcXHRcXHQgIGNvbXBsZXRlISBDb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zIGhhc24ndFxcbiAgMTg6XFx0XFx0ICBiZWVuIHRlc3RlZCB5ZXQhXFxuICAxOTpcXHRcXG4gIDIwOlxcdFxcdCAgSWYgeW91IHBsYW4gdG8gdXNlIEhhcmRNQUMgSUVFRSA4MDIuMTUuNCBkZXZpY2VzLCB5b3UgY2FuXFxuICAyMTpcXHRcXHQgIHNheSBOIGhlcmUuIEFsdGVybmF0aXZlbHkgeW91IGNhbiBzYXkgTSB0byBjb21waWxlIGl0IGFzXFxuICAyMjpcXHRcXHQgIG1vZHVsZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTM6MjQuNzQ3NTQ0MDQzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUyNzM3NDcwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgSUVFRSA4MDIuMTUuNCBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBicm9hZGVyIGNvbnRleHQgaGVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBrZXJuZWwncyBJRUVFIDgwMi4xNS40IGNvbmZpZ3VyYXRpb24gYW5kIGRyaXZlciBzdHJ1Y3R1cmUuIExldCdzIHNlZS4uLiB0aGUgYG5ldC9pZWVlODAyMTU0L0tjb25maWdgIGZpbGUgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgZmlyc3Qgc3RvcC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGhpZ2gtbGV2ZWwgdmlldyBvZiB0aGUgY29uZmlndXJhYmxlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhhdCBuZXR3b3JraW5nIGFyZWEuIEFsdGVybmF0aXZlbHksIGBkcml2ZXJzL25ldC9pZWVlODAyMTU0L2AgbWlnaHQgYmUgZnJ1aXRmdWwsIGFzIHRoYXQncyB3aGVyZSB0aGUgYWN0dWFsIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgcmVzaWRlLiBJJ20gaG9waW5nIHRvIGlkZW50aWZ5IHJlbGF0ZWQgY29tcG9uZW50cy5cblxuU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhpbmdzIGxpa2UgdGhlIG92ZXJhbGwgSUVFRSA4MDIuMTUuNCBzdXBwb3J0IGFuZCBhbnkgc2ltdWxhdGlvbi1yZWxhdGVkIG1vZHVsZXMsIHBlcmhhcHMgc29tZXRoaW5nIGxpa2UgYE1BQzgwMjE1NF9IV1NJTWAuIEkgbmVlZCB0byBlbnN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSByZWxldmFudCBtb2R1bGVzLCB0aGF0IHBlcmhhcHMgcHJvdmlkZSBzb21lIGluc2lnaHQuIFRoaXMgcXVpY2sgc3dlZXAgc2hvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgc2Vuc2Ugb2YgdGhlIGF2YWlsYWJsZSBidWlsZGluZyBibG9ja3MgYW5kIHdoaWNoIG9uZXMgYXJlIHBvdGVudGlhbGx5IGtleSB0byB0aGUgbmV4dCBwaGFzZSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzA1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxMzoyNy4yNzQ5MjExNjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2NTg3MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElFRUU4MDIxNTRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2llZWU4MDIxNTRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9LY29uZmlnOjI6Y29uZmlnIElFRUU4MDIxNTRfNkxPV1BBTlxcbm5ldC9pZWVlODAyMTU0LzZsb3dwYW4vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCI2bG93cGFuIHN1cHBvcnQgb3ZlciBJRUVFIDgwMi4xNS40XFxcIlxcbi0tXFxubmV0L2llZWU4MDIxNTQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9pZWVlODAyMTU0L0tjb25maWc6MjptZW51Y29uZmlnIElFRUU4MDIxNTRcXG5uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklFRUUgU3RkIDgwMi4xNS40IExvdy1SYXRlIFdpcmVsZXNzIFBlcnNvbmFsIEFyZWEgTmV0d29ya3Mgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pZWVlODAyMTU0L0tjb25maWc9MTQ9aWYgSUVFRTgwMjE1NFxcbm5ldC9pZWVlODAyMTU0L0tjb25maWctMTUtXFxubmV0L2llZWU4MDIxNTQvS2NvbmZpZzoxNjpjb25maWcgSUVFRTgwMjE1NF9OTDgwMjE1NF9FWFBFUklNRU5UQUxcXG5uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTE3LVxcdGJvb2wgXFxcIklFRUUgODAyLjE1LjQgZXhwZXJpbWVudGFsIG5ldGxpbmsgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pZWVlODAyMTU0L0tjb25maWctMjAtXFxubmV0L2llZWU4MDIxNTQvS2NvbmZpZzoyMTpjb25maWcgSUVFRTgwMjE1NF9TT0NLRVRcXG5uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTIyLVxcdHRyaXN0YXRlIFxcXCJJRUVFIDgwMi4xNS40IHNvY2tldCBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjI3LjMzMjU4NzQwM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2Njg1MDY2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBtYWM4MDIxNTRfaHdzaW1gIE1vZHVsZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgbWFjODAyMTU0X2h3c2ltYCBjb21wb25lbnQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBpdHMgbmFtZSwgaXMgdGhhdCBpdCdzIHByb2JhYmx5IHJlbGF0ZWQgdG8gaGFyZHdhcmUgc2ltdWxhdGlvbiBmb3IgODAyLjE1LjQgbmV0d29ya2luZy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBzdGFuZGFyZCBrZXJuZWwgZHJpdmVyIGxvY2F0aW9ucy4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlczogIHRoZSBgZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9gIGFuZCBgZHJpdmVycy9uZXQvbWFjODAyMTU0L2AgZGlyZWN0b3JpZXMuIEl0J3MgYWxzbyBwb3NzaWJsZSBpdCdzIGJlZW4gbW92ZWQgaW50byBqdXN0IGBuZXQvbWFjODAyMTU0L2AgYXQgc29tZSBwb2ludCwgc28gSSBzaG91bGQgYmUgc3VyZSB0byBjaGVjayB0aGVyZSBhcyB3ZWxsLiBJJ20gYXNzdW1pbmcgaXQgd2lsbCBsaWtlbHkgYmUgYSBtb2R1bGUgb3IgcGFydCBvZiBhIGxhcmdlciBtb2R1bGUsIGFuZCBJJ20gaG9waW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBjb25zaXN0ZW50IGVub3VnaCB0byBtYWtlIHRoaXMgcXVpY2suIEhvcGVmdWxseSwgdGhpcyBpc24ndCBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBidXJpZWQgZGVlcCB3aXRoaW4gYSBwcm9qZWN0LXNwZWNpZmljIHBhdGguIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwODcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxMzozMC4wMDEwOTcyNzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTY1NzU3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUM4MDIxNTRfSFdTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz0zMz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqbWFjODAyMTU0aHdzaW1fZGV2O1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMzQtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozNTovKiBNQUM4MDIxNTRfSFdTSU0gbmV0bGluayBmYW1pbHkgKi9cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM2LXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHk7XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTM0NT1zdGF0aWMgaW50IGh3c2ltX2RlbF9yYWRpb19ubChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zNDktXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozNTA6XFx0aWYgKCFpbmZvLVxcdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRF0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zNTEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zNTItXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozNTM6XFx0aWR4ID0gbmxhX2dldF91MzIoaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSURdKTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9MzY4PXN0YXRpYyBpbnQgYXBwZW5kX3JhZGlvX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaHdzaW1fcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM3NC1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjM3NTpcXHRyZXQgPSBubGFfcHV0X3UzMihza2IsIE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lELCBwaHktXFx1MDAzZWlkeCk7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zNzYtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM4NS1cXHRubF9lZGdlcyA9IG5sYV9uZXN0X3N0YXJ0X25vZmxhZyhza2IsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozODY6XFx0XFx0XFx0XFx0XFx0IE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0VER0VTKTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM4Ny1cXHRpZiAoIW5sX2VkZ2VzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM5My1cXHRcXHRubF9lZGdlID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKHNrYixcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjM5NDpcXHRcXHRcXHRcXHRcXHRcXHRNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19FREdFKTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM5NS1cXHRcXHRpZiAoIW5sX2VkZ2UpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNDAwLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NDAxOlxcdFxcdHJldCA9IG5sYV9wdXRfdTMyKHNrYiwgTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9FTkRQT0lOVF9JRCxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTQwMi1cXHRcXHRcXHRcXHQgIGUtXFx1MDAzZWVuZHBvaW50LVxcdTAwM2VpZHgpO1xcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00MTAtXFx0XFx0ZWluZm8gPSByY3VfZGVyZWZlcmVuY2UoZS1cXHUwMDNlaW5mbyk7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo0MTE6XFx0XFx0cmV0ID0gbmxhX3B1dF91OChza2IsIE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTFFJLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNDEyLVxcdFxcdFxcdFxcdCBlaW5mby1cXHUwMDNlbHFpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9NDI5PXN0YXRpYyBpbnQgaHdzaW1fZ2V0X3JhZGlvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBod3NpbV9waHkgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNDM2LVxcdGhkciA9IGdlbmxtc2dfcHV0KHNrYiwgcG9ydGlkLCBzZXEsIFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgZmxhZ3MsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo0Mzc6XFx0XFx0XFx0ICBNQUM4MDIxNTRfSFdTSU1fQ01EX0dFVF9SQURJTyk7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00MzgtXFx0aWYgKCFoZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTQ1Nj1zdGF0aWMgaW50IGh3c2ltX2dldF9yYWRpb19ubChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00NjEtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo0NjI6XFx0aWYgKCFpbmZvLVxcdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRF0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00NjMtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo0NjQ6XFx0aWR4ID0gbmxhX2dldF91MzIoaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSURdKTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTQ2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9NTI2PXN0YXRpYyBzdHJ1Y3QgaHdzaW1fcGh5ICpod3NpbV9nZXRfcmFkaW9fYnlfaWQodWludDMyX3QgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01MzctXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo1Mzg6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2VkZ2VfcG9saWN5W01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTUFYICsgMV0gPSB7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo1Mzk6XFx0W01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSURdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjU0MDpcXHRbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9MUUldID0geyAudHlwZSA9IE5MQV9VOCB9LFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNTQxLX07XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTU3Nz1zdGF0aWMgaW50IGh3c2ltX25ld19lZGdlX25sKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01Nzgte1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTc5OlxcdHN0cnVjdCBubGF0dHIgKmVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVggKyAxXTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU4MC1cXHRzdHJ1Y3QgaHdzaW1fcGh5ICpwaHlfdjAsICpwaHlfdjE7XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU4My1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjU4NDpcXHRpZiAoIWluZm8tXFx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSB8fFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTg1OlxcdCAgICAhaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01ODYtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01ODctXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo1ODg6XFx0aWYgKG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZChlZGdlX2F0dHJzLCBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX01BWCwgaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0sIGh3c2ltX2VkZ2VfcG9saWN5LCBOVUxMKSlcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU4OS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU5MC1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjU5MTpcXHRpZiAoIWVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9FTkRQT0lOVF9JRF0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01OTItXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01OTMtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo1OTQ6XFx0djAgPSBubGFfZ2V0X3UzMihpbmZvLVxcdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRF0pO1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTk1OlxcdHYxID0gbmxhX2dldF91MzIoZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lEXSk7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01OTYtXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTYzOT1zdGF0aWMgaW50IGh3c2ltX2RlbF9lZGdlX25sKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NDAte1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NjQxOlxcdHN0cnVjdCBubGF0dHIgKmVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVggKyAxXTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0Mi1cXHRzdHJ1Y3QgaHdzaW1fcGh5ICpwaHlfdjA7XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0NS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY0NjpcXHRpZiAoIWluZm8tXFx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSB8fFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NjQ3OlxcdCAgICAhaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NDgtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NDktXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2NTA6XFx0aWYgKG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZChlZGdlX2F0dHJzLCBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX01BWCwgaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0sIGh3c2ltX2VkZ2VfcG9saWN5LCBOVUxMKSlcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY1MS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY1Mi1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY1MzpcXHRpZiAoIWVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9FTkRQT0lOVF9JRF0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NTQtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NTUtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2NTY6XFx0djAgPSBubGFfZ2V0X3UzMihpbmZvLVxcdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRF0pO1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NjU3OlxcdHYxID0gbmxhX2dldF91MzIoZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lEXSk7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NTgtXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTY4NT1zdGF0aWMgaW50IGh3c2ltX3NldF9lZGdlX2xxaShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjg2LXtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY4NzpcXHRzdHJ1Y3QgbmxhdHRyICplZGdlX2F0dHJzW01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTUFYICsgMV07XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02ODgtXFx0c3RydWN0IGh3c2ltX2VkZ2VfaW5mbyAqZWluZm8sICplaW5mb19vbGQ7XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY5My1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY5NDpcXHRpZiAoIWluZm8tXFx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSB8fFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6Njk1OlxcdCAgICAhaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02OTYtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02OTctXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2OTg6XFx0aWYgKG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZChlZGdlX2F0dHJzLCBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX01BWCwgaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0sIGh3c2ltX2VkZ2VfcG9saWN5LCBOVUxMKSlcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY5OS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTcwMC1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjcwMTpcXHRpZiAoIWVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9FTkRQT0lOVF9JRF0gfHxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjcwMjpcXHQgICAgIWVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9MUUldKVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzAzLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzA0LVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzA1OlxcdHYwID0gbmxhX2dldF91MzIoaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSURdKTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjcwNjpcXHR2MSA9IG5sYV9nZXRfdTMyKGVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9FTkRQT0lOVF9JRF0pO1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzA3OlxcdGxxaSA9IG5sYV9nZXRfdTgoZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0xRSV0pO1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzA4LVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NDEtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3NDI6LyogTUFDODAyMTU0X0hXU0lNIG5ldGxpbmsgcG9saWN5ICovXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NDMtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W01BQzgwMjE1NF9IV1NJTV9BVFRSX01BWCArIDFdID0ge1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzQ1OlxcdFtNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzQ2OlxcdFtNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19FREdFXSA9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3NDc6XFx0W01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0VER0VTXSA9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NDgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9NzUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fbmxfb3BzW10gPSB7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NTItXFx0e1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzUzOlxcdFxcdC5jbWQgPSBNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19SQURJTyxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc1NC1cXHRcXHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc1OC1cXHR7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3NTk6XFx0XFx0LmNtZCA9IE1BQzgwMjE1NF9IV1NJTV9DTURfREVMX1JBRElPLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzYwLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzY0LVxcdHtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc2NTpcXHRcXHQuY21kID0gTUFDODAyMTU0X0hXU0lNX0NNRF9HRVRfUkFESU8sXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NjYtXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NzAtXFx0e1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzcxOlxcdFxcdC5jbWQgPSBNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19FREdFLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzcyLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzc2LVxcdHtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc3NzpcXHRcXHQuY21kID0gTUFDODAyMTU0X0hXU0lNX0NNRF9ERUxfRURHRSxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc3OC1cXHRcXHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc4Mi1cXHR7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3ODM6XFx0XFx0LmNtZCA9IE1BQzgwMjE1NF9IV1NJTV9DTURfU0VUX0VER0UsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03ODQtXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz03OTA9c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseSBfX3JvX2FmdGVyX2luaXQgPSB7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3OTE6XFx0Lm5hbWUgPSBcXFwiTUFDODAyMTU0X0hXU0lNXFxcIixcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc5Mi1cXHQudmVyc2lvbiA9IDEsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3OTM6XFx0Lm1heGF0dHIgPSBNQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVgsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTQtXFx0LnBvbGljeSA9IGh3c2ltX2dlbmxfcG9saWN5LFxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTctXFx0Lm5fc21hbGxfb3BzID0gQVJSQVlfU0laRShod3NpbV9ubF9vcHMpLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6Nzk4OlxcdC5yZXN2X3N0YXJ0X29wID0gTUFDODAyMTU0X0hXU0lNX0NNRF9ORVdfRURHRSArIDEsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTktXFx0Lm1jZ3JwcyA9IGh3c2ltX21jZ3JwcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9ODE0PXN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBzdHJ1Y3QgaHdzaW1fcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTgyMy1cXHRkYXRhID0gZ2VubG1zZ19wdXQobWNhc3Rfc2tiLCAwLCAwLCBcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIDAsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo4MjQ6XFx0XFx0XFx0ICAgTUFDODAyMTU0X0hXU0lNX0NNRF9ORVdfUkFESU8pO1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtODI1LVxcdGlmICghZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MTojaWZuZGVmIF9fTUFDODAyMTU0X0hXU0lNX0hcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjI6I2RlZmluZSBfX01BQzgwMjE1NF9IV1NJTV9IXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC0zLVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC01LSAqXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2OiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX1VOU1BFQzogdW5zcGVjaWZpZWQgY29tbWFuZCB0byBjYXRjaCBlcnJvclxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NzogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9HRVRfUkFESU86IGZldGNoIGluZm9ybWF0aW9uIGFib3V0IGV4aXN0aW5nIHJhZGlvc1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6ODogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9TRVRfUkFESU86IGNoYW5nZSByYWRpbyBwYXJhbWV0ZXJzIGR1cmluZyBydW50aW1lXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo5OiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19SQURJTzogY3JlYXRlIGEgbmV3IHJhZGlvIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTEwLSAqXFx0cmV0dXJucyB0aGUgcmFkaW8gSUQgKFxcdTAwM2U9IDApIG9yIG5lZ2F0aXZlIG9uIGVycm9ycywgaWYgc3VjY2Vzc2Z1bFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMTEtICpcXHR0aGVuIG11bHRpY2FzdCB0aGUgcmVzdWx0XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoxMjogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9ERUxfUkFESU86IGRlc3Ryb3kgYSByYWRpbywgcmVwbHkgaXMgbXVsdGljYXN0ZWRcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjEzOiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX0dFVF9FREdFOiBmZXRjaCBpbmZvcm1hdGlvbiBhYm91dCBleGlzdGluZyBlZGdlc1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MTQ6ICogQE1BQzgwMjE1NF9IV1NJTV9DTURfU0VUX0VER0U6IGNoYW5nZSBlZGdlIHBhcmFtZXRlcnMgZHVyaW5nIHJ1bnRpbWVcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjE1OiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX0RFTF9FREdFOiBkZWxldGUgZWRnZXMgYmV0d2VlbiByYWRpb3NcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjE2OiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19FREdFOiBjcmVhdGUgYSBuZXcgZWRnZSBiZXR3ZWVuIHR3byByYWRpb3NcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjE3OiAqIEBfX01BQzgwMjE1NF9IV1NJTV9DTURfTUFYOiBlbnVtIGxpbWl0XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC0xOC0gKi9cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oPTE5PWVudW0ge1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjA6XFx0TUFDODAyMTU0X0hXU0lNX0NNRF9VTlNQRUMsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC0yMS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjIyOlxcdE1BQzgwMjE1NF9IV1NJTV9DTURfR0VUX1JBRElPLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjM6XFx0TUFDODAyMTU0X0hXU0lNX0NNRF9TRVRfUkFESU8sXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoyNDpcXHRNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19SQURJTyxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjI1OlxcdE1BQzgwMjE1NF9IV1NJTV9DTURfREVMX1JBRElPLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMjYtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoyNzpcXHRNQUM4MDIxNTRfSFdTSU1fQ01EX0dFVF9FREdFLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6Mjg6XFx0TUFDODAyMTU0X0hXU0lNX0NNRF9TRVRfRURHRSxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjI5OlxcdE1BQzgwMjE1NF9IV1NJTV9DTURfREVMX0VER0UsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDozMDpcXHRNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19FREdFLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMzEtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDozMjpcXHRfX01BQzgwMjE1NF9IV1NJTV9DTURfTUFYLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMzMtfTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTM0LVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MzU6I2RlZmluZSBNQUM4MDIxNTRfSFdTSU1fQ01EX01BWCAoX19NQUM4MDIxNTRfSFdTSU1fTUFYIC0gMSlcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC0zOC0gKlxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6Mzk6ICogQE1BQzgwMjE1NF9IV1NJTV9BVFRSX1VOU1BFQzogdW5zcGVjaWZpZWQgYXR0cmlidXRlIHRvIGNhdGNoIGVycm9yXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo0MDogKiBATUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSUQ6IHUzMiBhdHRyaWJ1dGUgdG8gaWRlbnRpZnkgdGhlIHJhZGlvXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo0MTogKiBATUFDODAyMTU0X0hXU0lNX0FUVFJfRURHRTogbmVzdGVkIGF0dHJpYnV0ZSBvZiBlZGdlc1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NDI6ICogQE1BQzgwMjE1NF9IV1NJTV9BVFRSX0VER0VTOiBsaXN0IGlmIG5lc3RlZCBhdHRyaWJ1dGVzIHdoaWNoIGNvbnRhaW5zIHRoZVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNDMtICpcXHRlZGdlIGluZm9ybWF0aW9uIGFjY29yZGluZyB0aGUgcmFkaW8gaWRcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjQ0OiAqIEBfX01BQzgwMjE1NF9IV1NJTV9BVFRSX01BWDogZW51bSBsaW1pdFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNDUtICovXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaD00Nj1lbnVtIHtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjQ3OlxcdE1BQzgwMjE1NF9IV1NJTV9BVFRSX1VOU1BFQyxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjQ4OlxcdE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lELFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NDk6XFx0TUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRSxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjUwOlxcdE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0VER0VTLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NTE6XFx0X19NQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVgsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC01Mi19O1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNTMtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo1NDojZGVmaW5lIE1BQzgwMjE1NF9IV1NJTV9BVFRSX01BWCAoX19NQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVggLSAxKVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTU3LSAqXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo1ODogKiBATUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9VTlNQRUM6IHVuc3BlY2lmaWVkIGF0dHJpYnV0ZSB0byBjYXRjaCBlcnJvclxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NTk6ICogQE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSUQ6IHJhZGlvIGlkIHdoZXJlIHRoZSBlZGdlIHBvaW50cyB0b1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NjA6ICogQE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTFFJOiBMUUkgdmFsdWUgd2hpY2ggdGhlIGVuZHBvaW50IHJhZGlvIHdpbGxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTYxLSAqXFx0cmVjZWl2ZSBmb3IgdGhpcyBlZGdlXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2MjogKiBAX19NQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVg6IGVudW0gbGltaXRcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTYzLSAqL1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg9NjQ9ZW51bSB7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2NTpcXHRNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX1VOU1BFQyxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjY2OlxcdE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSUQsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2NzpcXHRNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0xRSSxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjY4OlxcdF9fTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVgsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC02OS19O1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNzAtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo3MTojZGVmaW5lIE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTUFYIChfX01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTUFYIC0gMSlcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTcyLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NzM6I2VuZGlmIC8qIF9fTUFDODAyMTU0X0hXU0lNX0ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTM6MzAuMTk2NzY0NTI0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1OTI3MjE3MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTUFDODAyMTU0IEhhcmR3YXJlIFNpbXVsYXRpb24gQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGUgcGxhY2UgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2wgZm9yIHRoZSBNQUM4MDIxNTQgaGFyZHdhcmUgc2ltdWxhdGlvbiBmZWF0dXJlICh0aGF0J3MgYE1BQzgwMjE1NF9IV1NJTWAgaWYgbWVtb3J5IHNlcnZlcywgYnV0IGEgcXVpY2sgY2hlY2sgbmV2ZXIgaHVydHMpIGlzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2llZWU4MDIxNTQvS2NvbmZpZ2AgZmlsZS4gSSdtIGFzc3VtaW5nIGl0J3Mgc3RydWN0dXJlZCBpbiB0aGUgc3RhbmRhcmQgd2F5LCBzbyB0aGUgS2NvbmZpZyBzaG91bGQgZGVmaW5lIGl0cyBjb25kaXRpb25hbCBpbmNsdXNpb24gYW5kIGFueSBkZXBlbmRlbmNpZXMuIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IGl0J3MgaW50ZWdyYXRlZCBhbmQgd2hhdCBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSB0aWVkIHRvIGl0cyB1c2UuIEl0IG1pZ2h0IHNoZWQgbGlnaHQgb24gaG93IHRoZSBzaW11bGF0aW9uIGlzIGltcGxlbWVudGVkIG9yIGFueSBhc3N1bXB0aW9ucyBtYWRlIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFic3RyYWN0aW9uLiBUaW1lIHRvIHZlcmlmeSB0aGF0IGFzc3VtcHRpb24gYW5kIGdldCBhIHByb3BlciBsb29rIGF0IGhvdyB0aGlzIHNpbXVsYXRlZCBkZXZpY2UgaXMgY29udHJvbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyODksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxMzozMi43ODk0OTA4MDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTI4OTg3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTU0X0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2llZWU4MDIxNTRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjMyLjgzODYzMTIxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MDI3MDA5NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgd29ya2luZyBvbiB0aGlzOlxuXG4qKkxvY2F0aW5nIHRoZSBLY29uZmlnIEZpbGUgZm9yIDgwMi4xNS40IERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgS2NvbmZpZyBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgSUVFRSA4MDIuMTUuNCBuZXR3b3JraW5nIGRyaXZlcnMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBzdGFuZGFyZCBhcHByb2FjaCBpbiB0aGUgTGludXgga2VybmVsIHdvdWxkIGJlIHRvIGxvb2sgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3J5LiBJJ20gcHJldHR5IHN1cmUgaXQncyB1bmRlciBgZHJpdmVycy9uZXQvYCwgYW5kIHNpbmNlIGl0J3MgODAyLjE1LjQsIHRoYXQgbmFycm93cyBpdCBkb3duIHRvIGBpZWVlODAyMTU0YC4gVGhlcmVmb3JlLCBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBgZHJpdmVycy9uZXQvaWVlZTgwMjE1NGAgZGlyZWN0b3J5LiBUaGUgS2NvbmZpZyBmaWxlIHNob3VsZCByZXNpZGUgdGhlcmUsIG9yIHBlcmhhcHMgaW4gYSBzdWJkaXJlY3RvcnksIGRlcGVuZGluZyBvbiBob3cgdGhlIHN1YnN5c3RlbSBpcyBzdHJ1Y3R1cmVkLiBJJ2xsIGJlZ2luIGJ5IGp1c3QgbmF2aWdhdGluZyBpbnRvIHRoYXQgZGlyZWN0b3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODYwMiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjQxLjg2NTY0Njg1NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvaWVlZTgwMjE1NFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhZGY3MjQyLmNcIixcbiAgICBcImF0ODZyZjIzMC5jXCIsXG4gICAgXCJhdDg2cmYyMzAuaFwiLFxuICAgIFwiYXR1c2IuY1wiLFxuICAgIFwiYXR1c2IuaFwiLFxuICAgIFwiY2E4MjEwLmNcIixcbiAgICBcImNjMjUyMC5jXCIsXG4gICAgXCJmYWtlbGIuY1wiLFxuICAgIFwibWFjODAyMTU0X2h3c2ltLmNcIixcbiAgICBcIm1hYzgwMjE1NF9od3NpbS5oXCIsXG4gICAgXCJtY3IyMGEuY1wiLFxuICAgIFwibWNyMjBhLmhcIixcbiAgICBcIm1yZjI0ajQwLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTM6NDEuODY1NzI0MjE2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2MzY3OTczMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipGaW5kaW5nIHRoZSBNYWM4MDIxNTRfaHdzaW0gS2NvbmZpZyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBLY29uZmlnIGZpbGUgdGhhdCBkZWZpbmVzIG9yIHJlZmVyZW5jZXMgdGhlIGBtYWM4MDIxNTRfaHdzaW1gIHN5bWJvbC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBhbmQgS2NvbmZpZyBzdHJ1Y3R1cmUsIEknbGwgbGlrZWx5IG5lZWQgdG8gc2VhcmNoIHRoZSByZWxldmFudCBzb3VyY2UgY29kZSBkaXJlY3Rvcmllcy4gSSB3b3VsZCB0eXBpY2FsbHkgc3RhcnQgd2l0aCBicm9hZCBzZWFyY2hlcyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgb3Igd2lyZWxlc3Mgc3ViLXN5c3RlbXMuIEkgd291bGQgdXNlIHRvb2xzIGxpa2UgYGZpbmRgIG9yIGBncmVwYCB0byBxdWlja2x5IHBpbnBvaW50IHRoZSBmaWxlLiBUaGlua2luZyBzdHJhdGVnaWNhbGx5LCB0aGUgbmFtZSBcIm1hYzgwMjE1NFwiIHN1Z2dlc3RzIElFRUUgODAyLjE1LjQsIHNvIEkgd2lsbCBzdGFydCB0aGVyZSwgbG9va2luZyBmb3IgbGlrZWx5IGNhbmRpZGF0ZSBkaXJlY3RvcmllcyB0aGF0IHdvdWxkIGluY2x1ZGUgdGhpcyBraW5kIG9mIHNpbXVsYXRlZCBoYXJkd2FyZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl0IGlzIGxpa2VseSB0byBiZSB1bmRlciBhIGRyaXZlciBvciBtb2R1bGUncyBkaXJlY3RvcnkuIE9uY2UgSSBmaW5kIGEgbGlrZWx5IGNhbmRpZGF0ZSBmaWxlLCBJJ2xsIGV4YW1pbmUgaXRzIGNvbnRlbnQgdG8gdmVyaWZ5IGlmIGBtYWM4MDIxNTRfaHdzaW1gIGlzIGFjdHVhbGx5IGRlZmluZWQsIG9yLCBtb3JlIGxpa2VseSwgdXNlZCBhcyBhIGZlYXR1cmUsIG9wdGlvbiwgb3IgZGVwZW5kZW5jeSB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBJIHdvdWxkIGFsc28gaW52ZXN0aWdhdGUgYW55IGRlcGVuZGVuY2llcyBvciByZWxhdGlvbnNoaXBzIGl0IG1pZ2h0IGhhdmUgdG8gb3RoZXIgY29uZmlndXJhdGlvbnMgb3IgZHJpdmVycy4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhlIHJlZmVyZW5jZSBpcyBnb2luZyB0byBiZSB3aXRoaW4gYSBgS2NvbmZpZ2AgZmlsZSwgYnV0IEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gdGhhdCB3aXRoIGEgc2VhcmNoIGFzIHdlbGwuIE9uY2UgSSBoYXZlIHRoZSBmaWxlIEkgY2FuIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgc3Vycm91bmRpbmcgYG1hYzgwMjE1NF9od3NpbWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTkzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjQ0LjUwMjUyNjI1M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzExOTY3NDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hYzgwMjE1NF9od3NpbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9pZWVlODAyMTU0L0tjb25maWc9MTE0PWNvbmZpZyBJRUVFODAyMTU0X0hXU0lNXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L0tjb25maWctMTIyLVxcdCAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIFRvIGRvIHNvIHNheSBNIGhlcmUuXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnOjEyMzpcXHQgIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgJ21hYzgwMjE1NF9od3NpbScuXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX0lFRUU4MDIxNTRfTUNSMjBBKSArPSBtY3IyMGEub1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0lFRUU4MDIxNTRfSFdTSU0pICs9IG1hYzgwMjE1NF9od3NpbS5vXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L2Zha2VsYi5jPTI0ND1zdGF0aWMgX19pbml0IGludCBmYWtlbGJfaW5pdF9tb2R1bGUodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvZmFrZWxiLmMtMjQ4LVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvZmFrZWxiLmM6MjQ5OlxcdHByX3dhcm4oXFxcImZha2VsYiBkcml2ZXIgaXMgbWFya2VkIGFzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgbWFjODAyMTU0X2h3c2ltIVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9mYWtlbGIuYy0yNTAtXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTI0LSNpbmNsdWRlIFxcdTAwM2NuZXQvZ2VuZXRsaW5rLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzoyNTojaW5jbHVkZSBcXFwibWFjODAyMTU0X2h3c2ltLmhcXFwiXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0yNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9MTA0OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtYWM4MDIxNTRod3NpbV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTEwNTEtXFx0LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjEwNTI6XFx0XFx0XFx0Lm5hbWUgPSBcXFwibWFjODAyMTU0X2h3c2ltXFxcIixcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTEwNTMtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9MTA1Nj1zdGF0aWMgX19pbml0IGludCBod3NpbV9pbml0X21vZHVsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0xMDYzLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6MTA2NDpcXHRtYWM4MDIxNTRod3NpbV9kZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2ltcGxlKFxcXCJtYWM4MDIxNTRfaHdzaW1cXFwiLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMTA2NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIC0xLCBOVUxMLCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTM6NDQuODE0NTAzMjE5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNjIyNDQ5NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIDgwMi4xNS40IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwncyA4MDIuMTUuNCBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gemVybyBpbiBvbiBgZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnYCDigJMgc3BlY2lmaWNhbGx5LCBhcm91bmQgbGluZSAxMTQuIFRoYXQncyBhIHJlYXNvbmFibGUgc3BvdCB0byBzdGFydCwgYmFzZWQgb24gbXkgcGFzdCBleHBlcmllbmNlIHdpdGggdGhlc2Ugc29ydHMgb2Yga2VybmVsIGRyaXZlcnM7IGBLY29uZmlnYCBmaWxlcyBhcmUgdXN1YWxseSBzdHJ1Y3R1cmVkIHRvIHB1dCB0aGUgbW9zdCBlc3NlbnRpYWwgb3B0aW9ucyBlYXJsaWVyLiBJJ20gZ3Vlc3NpbmcgdGhhdCBsaW5lIHdpbGwgbGVhZCBtZSBpbnRvIHRoZSBjb3JlIGZlYXR1cmUgc2VsZWN0aW9ucywgb3IgbWF5YmUgYSBoaWdoLWxldmVsIGRyaXZlciBjb25maWd1cmF0aW9uLiBJdCBjb3VsZCBiZSBkZXZpY2Ugc3BlY2lmaWMuIEVpdGhlciB3YXksIHRoaXMgc2hvdWxkIGJlIGEgZ29vZCBlbnRyeSBwb2ludCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBiZWluZyBjb25maWd1cmVkIG9yIHdoYXQgb3B0aW9ucyB0aGUgZGV2ZWxvcGVyIGlzIG9mZmVyaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE5NCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjQ3LjA3Njc1MzM4M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9pZWVlODAyMTU0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTA1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTA1OlxcdFxcdGRlcGVuZHMgb24gSUVFRTgwMjE1NF9EUklWRVJTIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjE1NFxcbiAxMDY6XFx0XFx0ZGVwZW5kcyBvbiBTUElcXG4gMTA3OlxcdFxcdGhlbHBcXG4gMTA4OlxcdFxcdCAgU2F5IFkgaGVyZSB0byBlbmFibGUgdGhlIE1DUjIwQSBTUEkgODAyLjE1LjQgd2lyZWxlc3NcXG4gMTA5OlxcdFxcdCAgY29udHJvbGxlci5cXG4gMTEwOlxcdFxcbiAxMTE6XFx0XFx0ICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gVG8gZG8gc28sIHNheSBNIGhlcmUuXFxuIDExMjpcXHRcXHQgIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgJ21jcjIwYScuXFxuIDExMzpcXHRcXG4gMTE0OlxcdGNvbmZpZyBJRUVFODAyMTU0X0hXU0lNXFxuIDExNTpcXHRcXHRkZXBlbmRzIG9uIElFRUU4MDIxNTRfRFJJVkVSUyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxNTRcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxNTRcXFwiXFxuIDExNzpcXHRcXHRoZWxwXFxuIDExODpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3RcXG4gMTE5OlxcdFxcdCAgSUVFRSA4MDIuMTUuNCBuZXR3b3JraW5nIHN0YWNrIChtYWM4MDIxNTQpIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgbm90XFxuIDEyMDpcXHRcXHQgIG5lZWRlZCBmb3Igbm9ybWFsIHdwYW4gdXNhZ2UgYW5kIGlzIG9ubHkgZm9yIHRlc3RpbmcuXFxuIDEyMTpcXHRcXG4gMTIyOlxcdFxcdCAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIFRvIGRvIHNvIHNheSBNIGhlcmUuXFxuIDEyMzpcXHRcXHQgIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgJ21hYzgwMjE1NF9od3NpbScuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjQ3LjA3NjgzMzM4M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDkxMTg1NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgSUVFRTgwMjE1NF9EUklWRVJTKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYElFRUU4MDIxNTRfRFJJVkVSU2AuIFdoZXJlIGV4YWN0bHkgaXMgdGhpcyB2YXJpYWJsZSBvciBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlIGVzdGFibGlzaGVkPyBVbmRlcnN0YW5kaW5nIGl0cyBkZWZpbml0aW9uIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIHByb2NlZWQgYW55IGZ1cnRoZXIuIEkgbmVlZCB0byBrbm93IHdoYXQgaXQgY29udHJvbHMgb3IgcmVwcmVzZW50cyB3aXRoaW4gdGhlIHN5c3RlbS4gVGhpcyBpcyBhIGZvdW5kYXRpb25hbCBzdGVwLCBhbmQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCBpdCByaWdodCBiZWZvcmUgbWFraW5nIGFueSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4MTcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjQ5LjU2ODAyMzg5MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI2MjIyMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElFRUU4MDIxNTRfRFJJVkVSU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9pZWVlODAyMTU0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2llZWU4MDIxNTQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvS2NvbmZpZzoyOm1lbnVjb25maWcgSUVFRTgwMjE1NF9EUklWRVJTXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklFRUUgODAyLjE1LjQgZHJpdmVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTM6NDkuNjIwNjU0OTQ3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgxMjg2Mjg0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIG1vZGlmaWNhdGlvbnMuIEkgc2VlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGhhdmUgYmVlbiB0b3VjaGVkOlxuXG4qICAgYG1hYzgwMjE1NF9yeF9kZXF1ZXVlYCDigJMgU3RhdGljIGluIGByeC5jYCwgaW50ZXJlc3RpbmcsIHByb2JhYmx5IGEgY3JpdGljYWwgcmVjZWl2ZSBwYXRoIGZ1bmN0aW9uLlxuKiAgIGBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcmAgXHUwMDI2IGBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXJgIOKAkyBCb3RoIGluIGByeC5jYCBhbmQgZGVjbGFyZWQgaW4gdGhlIGludGVybmFsIGhlYWRlci4gU2VlbXMgbGlrZSB3ZSdyZSBsb29raW5nIGF0IGFzeW5jaHJvbm91cyBoYW5kbGluZyBvZiBiZWFjb25zIGFuZCBNQUMgY29tbWFuZHMgZHVyaW5nIHJlY2VwdGlvbi5cbiogICBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAg4oCTIEFsc28gaW4gYHJ4LmNgLiBUaGlzIGlzIGxpa2VseSB3aGVyZSB0aGUgaW5jb21pbmcgZnJhbWUgaXMgcHJvY2Vzc2VkLCBwb3NzaWJseSBkZXBlbmRpbmcgb24gdGhlIHN1YmludGVyZmFjZS5cbiogICBgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zYCDigJMgQW5vdGhlciBzdGF0aWMgb25lLCB0aGlzIHRpbWUgaW4gYHNjYW4uY2AuIE9idmlvdXMsIGJlYWNvbi1yZWxhdGVkIGFuZCBxdWV1ZWQsIG1heWJlIHJlbGF0ZWQgdG8gc2NhbiByZXF1ZXN0cyBvciBiZWFjb24gbWFuYWdlbWVudCBkdXJpbmcgc2Nhbm5pbmcuXG4qICAgYGllZWU4MDIxNTRfYWxsb2NfaHdgIOKAkyBJbiBgbWFpbi5jYCwgYW5kIEknbSBndWVzc2luZyBpdCdzIHJlc3BvbnNpYmxlIGZvciBoYXJkd2FyZSBhbGxvY2F0aW9uL2luaXRpYWxpemF0aW9uLlxuXG5Ob3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGVzZSBjaGFuZ2VkIGZ1bmN0aW9ucy4gR2l2ZW4gdGhhdCBgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zYCBpcyBpbnZvbHZlZCwgSSB3YW50IHRvIHNlZSBpZiBgbWFjODAyMTU0X3NjYW5fcmVxYCAob3IgYW55IG9mIGl0cyBjYWxsZXJzKSBhcmUgaW1wYWN0ZWQsIG9yIGlmIGFueSBvdGhlciBmdW5jdGlvbnMgY2FsbGVkIGBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnNgLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGltcGFjdCBhbmQgcHVycG9zZSBvZiB0aGUgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTA1LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjU3Ljc0OTI4ODE3MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk5Mjk2NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxNTRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjE1NC9zY2FuLmM9OTU9c3RhdGljIHVuc2lnbmVkIGludCBtYWM4MDIxNTRfc2Nhbl9nZXRfY2hhbm5lbF90aW1lKHU4IGR1cmF0aW9uX29yZGVyLFxcbi0tXFxubmV0L21hYzgwMjE1NC9zY2FuLmMtMTA0LVxcbm5ldC9tYWM4MDIxNTQvc2Nhbi5jOjEwNTpzdGF0aWMgdm9pZCBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnMoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsKVxcbm5ldC9tYWM4MDIxNTQvc2Nhbi5jLTEwNi17XFxuLS1cXG5uZXQvbWFjODAyMTU0L3NjYW4uYz0xODA9dm9pZCBtYWM4MDIxNTRfc2Nhbl93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L21hYzgwMjE1NC9zY2FuLmMtMTk5LVxcdHN5bmNocm9uaXplX25ldCgpO1xcbm5ldC9tYWM4MDIxNTQvc2Nhbi5jOjIwMDpcXHRtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnMobG9jYWwpO1xcbm5ldC9tYWM4MDIxNTQvc2Nhbi5jLTIwMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTM6NTcuODA5MjI4OTQ4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0MDA0OTE4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsZXIgb2YgYGllZWU4MDIxNTRfc3ViaWZfZnJhbWVgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYGllZWU4MDIxNTRfc3ViaWZfZnJhbWVgLiBGaXJzdCwgSSB3YW50IHRvIHRyYWNlIGJhY2sgYW5kIGlkZW50aWZ5IHByZWNpc2VseSAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20uIEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb24sIGl0cyBtb2R1bGUsIGFuZCBpZGVhbGx5IHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpdGhpbiB0aGF0IG1vZHVsZSwgd2lsbCBwcm92aWRlIGNydWNpYWwgaW5zaWdodHMgaW50byBpdHMgcHVycG9zZSBhbmQgd2hhdCBpdCdzIHRyeWluZyB0byBhY2hpZXZlIHdpdGhpbiB0aGUgSUVFRSA4MDIuMTUuNCBzdGFjay4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBjYWxsIHNpdGVzIGRpcmVjdGx5LiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBtb2R1bGUgdGhpcyBpcyBpbiwgYW5kIHRoZW4gSSB3aWxsIHNlYXJjaCBmb3IgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byBkZXRlcm1pbmUgdGhlIGV4YWN0IGNhbGwuIFRoZW4sIGRlcGVuZGluZyBvbiBob3cgY29tcGxleCB0aGUgc3lzdGVtIGlzLCBJIG1heSBuZWVkIHRvIGxvb2sgYXQgaW5kaXJlY3QgY2FsbHMgdG8gZ2FpbiBjb21wbGV0ZSBjbGFyaXR5LiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGFyY2hpdGVjdHVyZSBvZiBob3cgZnJhbWVzIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGlzIHN1Yi1pbnRlcmZhY2UgaXMga2V5IHRvIGEgc29saWQgYW5hbHlzaXMsIGJlZm9yZSBJIGV2ZW4gc3RhcnQgbG9va2luZyBhdCB0aGUgZnVuY3Rpb24gaW50ZXJuYWxzIHRoZW1zZWx2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTA3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MDAuMjA5NzI2MjMxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzg1MTc2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTU0X3N1YmlmX2ZyYW1lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxNTRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjE1NC9yeC5jPTE0OT1zdGF0aWMgaW50XFxubmV0L21hYzgwMjE1NC9yeC5jOjE1MDppZWVlODAyMTU0X3N1YmlmX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTU0L3J4LmMtMTUxLVxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgaWVlZTgwMjE1NF9oZHIgKmhkcilcXG4tLVxcbm5ldC9tYWM4MDIxNTQvcnguYz0zNTk9X19pZWVlODAyMTU0X3J4X2hhbmRsZV9wYWNrZXQoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jLTM4OS1cXHRcXHRcXHRza2IyLVxcdTAwM2VkZXYgPSBzZGF0YS1cXHUwMDNlZGV2O1xcbm5ldC9tYWM4MDIxNTQvcnguYzozOTA6XFx0XFx0XFx0aWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzZGF0YSwgc2tiMiwgXFx1MDAyNmhkcik7XFxubmV0L21hYzgwMjE1NC9yeC5jLTM5MS1cXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjAwLjI2MzU5MDQyNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjkzMDk1NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqQW5hbHl6aW5nIFBhY2tldCBIYW5kbGluZyBDYWxsZXJzKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byBob3cgdGhpcyBwYWNrZXQgcmVjZXB0aW9uIGlzIGJlaW5nIGhhbmRsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEknbSBnb2luZyB0byB0cmFjayBkb3duIHdobydzIGNhbGxpbmcgZWl0aGVyIGBfX2llZWU4MDIxNTRfcnhfaGFuZGxlX3BhY2tldGAgb3IgYGllZWU4MDIxNTRfcnhfaXJxc2FmZWAuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50cyB0byB0aGVzZSBjcml0aWNhbCBmdW5jdGlvbnMgaXMgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRhdGEgZmxvdywgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgYW5kIGhvdyB0aGUgc3lzdGVtIHJlc3BvbmRzIHRvIGluY29taW5nIDgwMi4xNS40IHBhY2tldHMuIFRoaXMgd2lsbCBnaXZlIG1lIGNydWNpYWwgY29udGV4dCBmb3IgYW55IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBvZiB0aGUgODAyLjE1LjQgc3RhY2suIEl0J3MgdGhlIGZpcnN0IHN0ZXAgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGUgZGF0YSBjb21lcyBmcm9tIGFuZCB3aG8gc3RhcnRzIHRoZSB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjY3NCwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjAyLjk1NjY5MTI1OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM3NjUyNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pZWVlODAyMTU0X3J4X2hhbmRsZV9wYWNrZXR8aWVlZTgwMjE1NF9yeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTU0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmg9MTg2PWV4dGVybiBzdHJ1Y3QgaWVlZTgwMjE1NF9tbG1lX29wcyBtYWM4MDIxNTRfbWxtZV93cGFuO1xcbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmgtMTg3LVxcbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmg6MTg4OnZvaWQgaWVlZTgwMjE1NF9yeChzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpO1xcbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmgtMTg5LXZvaWQgaWVlZTgwMjE1NF94bWl0X3N5bmNfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuLS1cXG5uZXQvbWFjODAyMTU0L21haW4uYz0yMz1zdGF0aWMgdm9pZCBpZWVlODAyMTU0X3Rhc2tsZXRfaGFuZGxlcihzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5uZXQvbWFjODAyMTU0L21haW4uYy0zNC1cXHRcXHRcXHRza2ItXFx1MDAzZXBrdF90eXBlID0gMDtcXG5uZXQvbWFjODAyMTU0L21haW4uYzozNTpcXHRcXHRcXHRpZWVlODAyMTU0X3J4KGxvY2FsLCBza2IpO1xcbm5ldC9tYWM4MDIxNTQvbWFpbi5jLTM2LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jPTM1OD1zdGF0aWMgdm9pZFxcbm5ldC9tYWM4MDIxNTQvcnguYzozNTk6X19pZWVlODAyMTU0X3J4X2hhbmRsZV9wYWNrZXQoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxNTQvcnguYy0zNjAtXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9tYWM4MDIxNTQvcnguYz0zOTY9aWVlZTgwMjE1NF9tb25pdG9yc19yeChzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbWFjODAyMTU0L3J4LmMtNDIzLVxcbm5ldC9tYWM4MDIxNTQvcnguYzo0MjQ6dm9pZCBpZWVlODAyMTU0X3J4KHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbWFjODAyMTU0L3J4LmMtNDI1LXtcXG4tLVxcbm5ldC9tYWM4MDIxNTQvcnguYy00NTQtXFxubmV0L21hYzgwMjE1NC9yeC5jOjQ1NTpcXHRfX2llZWU4MDIxNTRfcnhfaGFuZGxlX3BhY2tldChsb2NhbCwgc2tiKTtcXG5uZXQvbWFjODAyMTU0L3J4LmMtNDU2LVxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jPTQ2Mz12b2lkXFxubmV0L21hYzgwMjE1NC9yeC5jOjQ2NDppZWVlODAyMTU0X3J4X2lycXNhZmUoc3RydWN0IGllZWU4MDIxNTRfaHcgKmh3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBscWkpXFxubmV0L21hYzgwMjE1NC9yeC5jLTQ2NS17XFxuLS1cXG5uZXQvbWFjODAyMTU0L3J4LmMtNDczLX1cXG5uZXQvbWFjODAyMTU0L3J4LmM6NDc0OkVYUE9SVF9TWU1CT0woaWVlZTgwMjE1NF9yeF9pcnFzYWZlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MDMuMDEwNDY3NDk0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkxMDg1MDQ4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBDYW5kaWRhdGUgQXNzZXNzbWVudDogbWFjODAyMTU0IENvcmUgUlggUGF0aCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgbGlzdCBvZiBzeW1ib2xzOiBgaWVlZTgwMjE1NF9hbGxvY19od2AsIGBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcmAsIGBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXJgLCBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAsIGBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnNgLCBhbmQgYG1hYzgwMjE1NF9zY2FuX3dvcmtlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJXb3J0aCBmdXp6aW5nP1wiLiBMZXQncyBhcHBseSBteSBzdGFuZGFyZCBjcml0ZXJpYS5cblxuRmlyc3QsICpyZWFjaGFiaWxpdHkqLiBUaGlzIGlzIGNyaXRpY2FsLiBJIGNhbiBzZWUgdGhhdCBNQUM4MDIxNTQgaXMgcmVhY2hhYmxlIHRocm91Z2ggdmlydHVhbCBkZXZpY2VzIGxpa2UgYG1hYzgwMjE1NF9od3NpbWAsIG5ldGxpbmsgY29tbWFuZHMgKGBubDgwMjE1NGApLCBhbmQgQUZfSUVFRTgwMjE1NCBzb2NrZXRzLiBDcnVjaWFsbHksIHRoZSBjb2RlIGJlaW5nIGV4YW1pbmVkIGRlYWxzIHdpdGggUlggcHJvY2Vzc2luZyBvZiBiZWFjb24gYW5kIE1BQyBjb21tYW5kIGZyYW1lcy4gSXQncyBhbHNvIGNvbmNlcm5lZCB3aXRoIHF1ZXVpbmcsIHdvcmtlciBwcm9jZXNzaW5nLCBzeW5jaHJvbml6YXRpb24gdXNpbmcgYSBuZXcgc3BpbmxvY2ssIGByeF9saXN0c19sb2NrYCwgYW5kIG5ldGRldiByZWZlcmVuY2UgY291bnRpbmcgd2l0aCBgbmV0ZGV2X2hvbGRgLCBgbmV0ZGV2X3B1dGAsIGFuZCBgbmV0ZGV2aWNlX3RyYWNrZXJgLiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBhbmQgZHJpdmVyIHN0YWNrIGNvZGUuIEdvb2QsIHRoaXMgZGVmaW5pdGVseSBtZWV0cyB0aGUgcmVhY2hhYmlsaXR5IGNyaXRlcmlhLlxuXG5TZWNvbmQsIHRoZSAqZnV6emluZyBiZW5lZml0cyouIFRoaXMga2luZCBvZiBjb2RlIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBDb25jdXJyZW5jeSBpc3N1ZXMsIHJhY2UgY29uZGl0aW9ucywgbGlzdCBjb3JydXB0aW9uLCBuZXRkZXYgcmVmY291bnQgbGVha3Mgb3IgdHJhY2tlciBpbWJhbGFuY2VzLCBhbmQgcG90ZW50aWFsIGRlYWRsb2NrcyBhcmUgYWxsIHRoaW5ncyBJJ2QgZXhwZWN0IGZ1enppbmcgdG8gdW5jb3ZlciBmYWlybHkgcXVpY2tseS4gSXQgaXMgaGlnaC12YWx1ZSBmb3IgZnV6emluZy5cblxuVGh1cywgYmFzZWQgb24gbXkgYW5hbHlzaXMsICpXb3J0aEZ1enppbmc9dHJ1ZSouXG5cbk5vdywgdGhlIG5lY2Vzc2FyeSAqRW5hYmxlQ29uZmlncyogYW5kICpGb2N1c1N5bWJvbHMqLlxuXG5JJ2xsIG5lZWQgdG8gZW5hYmxlOiBgTUFDODAyMTU0YCwgYElFRUU4MDIxNTRgLCBgSUVFRTgwMjE1NF9OTDgwMjE1NF9FWFBFUklNRU5UQUxgIChvcHRpb25hbCwgYnV0IG5sODAyMTU0IGlzIGFsd2F5cyBhIGdvb2Qgb3B0aW9uKSwgYElFRUU4MDIxNTRfSFdTSU1gLCBhbmQgYElFRUU4MDIxNTRfRFJJVkVSU2AuIGBNQUM4MDIxNTRgIGRlcGVuZHMgb24gYElFRUU4MDIxNTRgLCB3aGljaCBtYWtlcyBzZW5zZS4gQWxzbyBgSUVFRTgwMjE1NF9IV1NJTWAgZGVwZW5kcyBvbiBgSUVFRTgwMjE1NF9EUklWRVJTIFx1MDAyNlx1MDAyNiBNQUM4MDIxNTRgLlxuXG5Gb3IgKkZvY3VzU3ltYm9scyosIEknbGwgdGFyZ2V0OiBgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJgLCBgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyYCwgYGllZWU4MDIxNTRfc3ViaWZfZnJhbWVgLCBgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zYCwgYG1hYzgwMjE1NF9yeF9kZXF1ZXVlYCAoZXZlbiB0aG91Z2ggaXQncyBzdGF0aWMsIEkgd2FudCB0byBtYWtlIHN1cmUgSSBnZXQgdGhhdCBvbmUsIGFzIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSBvZiBpdCBiZWluZyBpbmxpbmVkLCBvciBzaW1pbGFyKS4gQWxzbyBpbmNsdWRlIG5vbi1zdGF0aWMgb25lcyBzdWNoIGFzOiBgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJgLCBgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyYCwgYG1hYzgwMjE1NF9zY2FuX3dvcmtlcmAgYW5kIGBpZWVlODAyMTU0X3J4YC4gTGV0J3Mgbm90IGZvcmdldCBgaWVlZTgwMjE1NF9hbGxvY19od2AuXG5cblRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBkb3VibGUtY2hlY2s6IGBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcmAsIGBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXJgLCBgaWVlZTgwMjE1NF9yeGAsIGFuZCBgaWVlZTgwMjE1NF9hbGxvY19od2AsIHdoaWNoIGFyZSBhbGwgZm91bmQgd2l0aGluIGBuZXQvbWFjODAyMTU0L3J4LmNgLCBhbmQgYG1hYzgwMjE1NF9zY2FuX3dvcmtlcmAgaW4gYG5ldC9tYWM4MDIxNTQvc2Nhbi5jYC4gSXQgYWxsIGxpbmVzIHVwIHdpdGggbXkgZXhwZWN0YXRpb25zLlxuXG5KdXN0IGEgZmluYWwgc2FuaXR5IGNoZWNrIG9mIHRoZSBpbXBvcnRhbnQgYml0czogQ29uZmlnIG9wdGlvbnM6IGBJRUVFODAyMTU0YCwgYE1BQzgwMjE1NGAsIGFuZCBgSUVFRTgwMjE1NF9IV1NJTWAuIFRoZSBzeW1ib2xzIGFyZTogYG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyYCwgYG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcmAsIGBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnNgLCBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAsIGBtYWM4MDIxNTRfcnhfZGVxdWV1ZWAsIGFuZCBgaWVlZTgwMjE1NF9hbGxvY19od2AuXG5cblRoYXQgbG9va3MgZ29vZC4gSSdtIHJlYWR5XG5cbiIsIklucHV0VG9rZW5zIjoyMzc4MiwiT3V0cHV0VG9rZW5zIjozMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjEyLjExODk3NjY3MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5MDkwNDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRUVFODAyMTU0XCIsXG4gICAgXCJNQUM4MDIxNTRcIixcbiAgICBcIklFRUU4MDIxNTRfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlclwiLFxuICAgIFwibWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyXCIsXG4gICAgXCJtYWM4MDIxNTRfcnhfZGVxdWV1ZVwiLFxuICAgIFwiaWVlZTgwMjE1NF9zdWJpZl9mcmFtZVwiLFxuICAgIFwibWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zXCIsXG4gICAgXCJpZWVlODAyMTU0X2FsbG9jX2h3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IFJYIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IGluIHRoZSBtYWM4MDIxNTQgc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGRlZGljYXRlZCBzcGlubG9jayAocnhfbGlzdHNfbG9jaykgdG8gcHJvdGVjdCByeF9iZWFjb25fbGlzdCBhbmQgcnhfbWFjX2NtZF9saXN0LCB1cGRhdGluZyB0aGUgd29ya2VyIGRlcXVldWUgbG9naWMsIGFuZCB0YWtpbmcvcmVsZWFzaW5nIG5ldGRldmljZSByZWZlcmVuY2UgdHJhY2tlcnMgKG5ldGRldl9ob2xkL25ldGRldl9wdXQpIHdoZW4gcXVldWVpbmcgYW5kIHByb2Nlc3NpbmcgTUFDIHBhY2tldHMuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIG1hYzgwMjE1NCB2aXJ0dWFsIGRyaXZlcnMgKG1hYzgwMjE1NF9od3NpbSkgYW5kIHN0YW5kYXJkIElFRUUgODAyLjE1LjQgbmV0d29yayBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZyBmb3IgY29uY3VycmVuY3kgYnVncywgZGVhZGxvY2tzLCBhbmQgbmV0ZGV2IHJlZmNvdW50aW5nIGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRUVFODAyMTU0XCIsXG4gICAgXCJNQUM4MDIxNTRcIixcbiAgICBcIklFRUU4MDIxNTRfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlclwiLFxuICAgIFwibWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyXCIsXG4gICAgXCJtYWM4MDIxNTRfcnhfZGVxdWV1ZVwiLFxuICAgIFwiaWVlZTgwMjE1NF9zdWJpZl9mcmFtZVwiLFxuICAgIFwibWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zXCIsXG4gICAgXCJpZWVlODAyMTU0X2FsbG9jX2h3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IFJYIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IGluIHRoZSBtYWM4MDIxNTQgc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGRlZGljYXRlZCBzcGlubG9jayAocnhfbGlzdHNfbG9jaykgdG8gcHJvdGVjdCByeF9iZWFjb25fbGlzdCBhbmQgcnhfbWFjX2NtZF9saXN0LCB1cGRhdGluZyB0aGUgd29ya2VyIGRlcXVldWUgbG9naWMsIGFuZCB0YWtpbmcvcmVsZWFzaW5nIG5ldGRldmljZSByZWZlcmVuY2UgdHJhY2tlcnMgKG5ldGRldl9ob2xkL25ldGRldl9wdXQpIHdoZW4gcXVldWVpbmcgYW5kIHByb2Nlc3NpbmcgTUFDIHBhY2tldHMuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIG1hYzgwMjE1NCB2aXJ0dWFsIGRyaXZlcnMgKG1hYzgwMjE1NF9od3NpbSkgYW5kIHN0YW5kYXJkIElFRUUgODAyLjE1LjQgbmV0d29yayBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZyBmb3IgY29uY3VycmVuY3kgYnVncywgZGVhZGxvY2tzLCBhbmQgbmV0ZGV2IHJlZmNvdW50aW5nIGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MTIuMjE4MDc5ODM1WiIsIlNlcSI6MjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTM4ODQ0ODA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjEyLjIxODc3NTc1NVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjMxMzg3NzQzNDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBzeW5jaHJvbml6YXRpb24gYW5kIG5ldGRldiByZWZlcmVuY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIG1hYzgwMjE1NCBSWCBxdWV1ZXMgKGJlYWNvbiBhbmQgTUFDIGNvbW1hbmQgcXVldWVzKS4gSXQgaW50cm9kdWNlcyBhIHNwaW5sb2NrIGByeF9saXN0c19sb2NrYCB0byBwcm90ZWN0IHF1ZXVlIG1hbmlwdWxhdGlvbiBhbmQgdXNlcyBgbmV0ZGV2aWNlX3RyYWNrZXJgIChgbmV0ZGV2X2hvbGRgIC8gYG5ldGRldl9wdXRgKSB0byBzYWZlbHkgcmV0YWluIGRldmljZSByZWZlcmVuY2VzIHVudGlsIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgZnJlZWQuXFxuXFxuS0FTQU4sIExPQ0tERVAsIGFuZCB0aGUgbmV0ZGV2IHJlZmNvdW50IHRyYWNrZXIgYWRlcXVhdGVseSBjb3ZlciB0aGUgcmlza3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgcmFjZSBjb25kaXRpb25zLCBkZWFkbG9ja3MsIGFuZCB1c2UtYWZ0ZXItZnJlZS9saWZldGltZSBidWdzKS4gYHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmpgLCBlbnN1cmluZyBhbGwgZmllbGRzIGFyZSB6ZXJvLWluaXRpYWxpemVkLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkLCBicmFuY2hlZCBvbiwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJlMjhjM2FkODQyMTU3OTNmMzc0NWNhNGUzZGQ3ZTE5Mjk2MzY3YmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDE4OjEyOjU1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmggYi9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaFxuaW5kZXggNzZkMmNkMmUyYjMwOS4uNTczNDM3NjJkN2YwYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oXG4rKysgYi9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaFxuQEAgLTM2OSw2ICszNjksNyBAQCBzdHJ1Y3QgY2ZnODAyMTU0X2JlYWNvbl9yZXF1ZXN0IHtcbiAgKiBAbm9kZTogTUFDIHBhY2tldHMgdG8gcHJvY2VzcyBsaXN0IG1lbWJlclxuICAqIEBza2I6IHRoZSByZWNlaXZlZCBza19idWZmXG4gICogQHNkYXRhOiB0aGUgaW50ZXJmYWNlIG9uIHdoaWNoIEBza2Igd2FzIHJlY2VpdmVkXG4rICogQGRldl90cmFja2VyOiBuZXRkZXYgcmVmZXJlbmNlIGhlbGQgdW50aWwgdGhlIGRlc2NyaXB0b3IgaXMgcmVsZWFzZWRcbiAgKiBAcGFnZTogcGFnZSBjb25maWd1cmF0aW9uIHdoZW4gQHNrYiB3YXMgcmVjZWl2ZWRcbiAgKiBAY2hhbm5lbDogY2hhbm5lbCBjb25maWd1cmF0aW9uIHdoZW4gQHNrYiB3YXMgcmVjZWl2ZWRcbiAgKi9cbkBAIC0zNzYsNiArMzc3LDcgQEAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0IHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgbm9kZTtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHRzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGE7XG4rXHRuZXRkZXZpY2VfdHJhY2tlciBkZXZfdHJhY2tlcjtcbiBcdHU4IHBhZ2U7XG4gXHR1OCBjaGFubmVsO1xuIH07XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaCBiL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmhcbmluZGV4IDhmMmJmZjI2ODM5MmIuLjA5NmU2ZjAzNDBkYzcgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oXG4rKysgYi9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oXG5AQCAtNzQsNiArNzQsOCBAQCBzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCB7XG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnhfYmVhY29uX3dvcms7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHJ4X21hY19jbWRfbGlzdDtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCByeF9tYWNfY21kX3dvcms7XG4rXHQvKiBQcm90ZWN0cyByeF9iZWFjb25fbGlzdCBhbmQgcnhfbWFjX2NtZF9saXN0LiAqL1xuK1x0c3BpbmxvY2tfdCByeF9saXN0c19sb2NrO1xuIFxuIFx0LyogQXNzb2NpYXRpb24gKi9cbiBcdHN0cnVjdCBpZWVlODAyMTU0X3Bhbl9kZXZpY2UgKmFzc29jX2RldjtcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L21haW4uYyBiL25ldC9tYWM4MDIxNTQvbWFpbi5jXG5pbmRleCBlYTFlZmVmMzU3MmFlLi5hNmE5NzZiMGRlYTU2IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjE1NC9tYWluLmNcbisrKyBiL25ldC9tYWM4MDIxNTQvbWFpbi5jXG5AQCAtOTEsNiArOTEsNyBAQCBpZWVlODAyMTU0X2FsbG9jX2h3KHNpemVfdCBwcml2X2RhdGFfbGVuLCBjb25zdCBzdHJ1Y3QgaWVlZTgwMjE1NF9vcHMgKm9wcylcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmxvY2FsLVx1MDAzZWludGVyZmFjZXMpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbWFjX2NtZF9saXN0KTtcbitcdHNwaW5fbG9ja19pbml0KFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2VpZmxpc3RfbXR4KTtcbiBcbiBcdHRhc2tsZXRfc2V0dXAoXHUwMDI2bG9jYWwtXHUwMDNldGFza2xldCwgaWVlZTgwMjE1NF90YXNrbGV0X2hhbmRsZXIpO1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvcnguYyBiL25ldC9tYWM4MDIxNTQvcnguY1xuaW5kZXggY2Q4ZjJhMTE5MjBkMC4uZGYyZjYxMjhkZGQ0YSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxNTQvcnguY1xuKysrIGIvbmV0L21hYzgwMjE1NC9yeC5jXG5AQCAtMjksMjEgKzI5LDQwIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjE1NF9kZWxpdmVyX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0cmV0dXJuIG5ldGlmX3JlY2VpdmVfc2tiKHNrYik7XG4gfVxuIFxuK3N0YXRpYyBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKlxuK21hYzgwMjE1NF9yeF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCxcbitcdFx0ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpyeF9saXN0LFxuK1x0XHQgICAgIHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbit7XG4rXHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3Q7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4rXHRtYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKHJ4X2xpc3QsXG4rXHRcdFx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7XG4rXHRpZiAobWFjX3BrdCkge1xuK1x0XHRsaXN0X2RlbChcdTAwMjZtYWNfcGt0LVx1MDAzZW5vZGUpO1xuK1x0XHRpZiAoIWxpc3RfZW1wdHkocnhfbGlzdCkpXG4rXHRcdFx0cXVldWVfd29yayhsb2NhbC1cdTAwM2VtYWNfd3EsIHdvcmspO1xuK1x0fVxuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4rXG4rXHRyZXR1cm4gbWFjX3BrdDtcbit9XG4rXG4gdm9pZCBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsID1cbiBcdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsLCByeF9iZWFjb25fd29yayk7XG4gXHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3Q7XG4gXG4tXHRtYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2JlYWNvbl9saXN0LFxuLVx0XHRcdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QsIG5vZGUpO1xuK1x0bWFjX3BrdCA9IG1hYzgwMjE1NF9yeF9kZXF1ZXVlKGxvY2FsLCBcdTAwMjZsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCwgd29yayk7XG4gXHRpZiAoIW1hY19wa3QpXG4gXHRcdHJldHVybjtcbiBcbiBcdG1hYzgwMjE1NF9wcm9jZXNzX2JlYWNvbihsb2NhbCwgbWFjX3BrdC1cdTAwM2Vza2IsIG1hY19wa3QtXHUwMDNlcGFnZSwgbWFjX3BrdC1cdTAwM2VjaGFubmVsKTtcbiBcbi1cdGxpc3RfZGVsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSk7XG4gXHRrZnJlZV9za2IobWFjX3BrdC1cdTAwM2Vza2IpO1xuK1x0bmV0ZGV2X3B1dChtYWNfcGt0LVx1MDAzZXNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bWFjX3BrdC1cdTAwM2VkZXZfdHJhY2tlcik7XG4gXHRrZnJlZShtYWNfcGt0KTtcbiB9XG4gXG5AQCAtNzYsOCArOTUsNyBAQCB2b2lkIG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHR1OCBtYWNfY21kO1xuIFx0aW50IHJjO1xuIFxuLVx0bWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcdTAwMjZsb2NhbC1cdTAwM2VyeF9tYWNfY21kX2xpc3QsXG4tXHRcdFx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7XG4rXHRtYWNfcGt0ID0gbWFjODAyMTU0X3J4X2RlcXVldWUobG9jYWwsIFx1MDAyNmxvY2FsLVx1MDAzZXJ4X21hY19jbWRfbGlzdCwgd29yayk7XG4gXHRpZiAoIW1hY19wa3QpXG4gXHRcdHJldHVybjtcbiBcbkBAIC0xMjMsOCArMTQxLDggQEAgdm9pZCBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0fVxuIFxuIG91dDpcbi1cdGxpc3RfZGVsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSk7XG4gXHRrZnJlZV9za2IobWFjX3BrdC1cdTAwM2Vza2IpO1xuK1x0bmV0ZGV2X3B1dChtYWNfcGt0LVx1MDAzZXNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bWFjX3BrdC1cdTAwM2VkZXZfdHJhY2tlcik7XG4gXHRrZnJlZShtYWNfcGt0KTtcbiB9XG4gXG5AQCAtMjIxLDggKzIzOSwxMSBAQCBpZWVlODAyMTU0X3N1YmlmX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0bWFjX3BrdC1cdTAwM2VzZGF0YSA9IHNkYXRhO1xuIFx0XHRtYWNfcGt0LVx1MDAzZXBhZ2UgPSBzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VzY2FuX3BhZ2U7XG4gXHRcdG1hY19wa3QtXHUwMDNlY2hhbm5lbCA9IHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXNjYW5fY2hhbm5lbDtcbitcdFx0bmV0ZGV2X2hvbGQoc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcbitcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QpO1xuIFx0XHRxdWV1ZV93b3JrKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZW1hY193cSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfYmVhY29uX3dvcmspO1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiBcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIFxuIFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfTUFDX0NNRDpcbkBAIC0yMzMsOCArMjU0LDExIEBAIGllZWU4MDIxNTRfc3ViaWZfZnJhbWUoc3RydWN0IGllZWU4MDIxNTRfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFxuIFx0XHRtYWNfcGt0LVx1MDAzZXNrYiA9IHNrYl9nZXQoc2tiKTtcbiBcdFx0bWFjX3BrdC1cdTAwM2VzZGF0YSA9IHNkYXRhO1xuK1x0XHRuZXRkZXZfaG9sZChzZGF0YS1cdTAwM2VkZXYsIFx1MDAyNm1hY19wa3QtXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlLCBcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9tYWNfY21kX2xpc3QpO1xuIFx0XHRxdWV1ZV93b3JrKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZW1hY193cSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfbWFjX2NtZF93b3JrKTtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4gXHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiBcbiBcdGNhc2UgSUVFRTgwMjE1NF9GQ19UWVBFX0FDSzpcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L3NjYW4uYyBiL25ldC9tYWM4MDIxNTQvc2Nhbi5jXG5pbmRleCAwMDUzMzhmODliNzVlLi5jM2M2MWViZGUxNTY4IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjE1NC9zY2FuLmNcbisrKyBiL25ldC9tYWM4MDIxNTQvc2Nhbi5jXG5AQCAtMTA1LDEwICsxMDUsMTYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBtYWM4MDIxNTRfc2Nhbl9nZXRfY2hhbm5lbF90aW1lKHU4IGR1cmF0aW9uX29yZGVyLFxuIHN0YXRpYyB2b2lkIG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyhzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwpXG4ge1xuIFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0LCAqdG1wO1xuK1x0TElTVF9IRUFEKG1hY19wa3RfbGlzdCk7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobWFjX3BrdCwgdG1wLCBcdTAwMjZsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCwgbm9kZSkge1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuK1x0bGlzdF9zcGxpY2VfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCwgXHUwMDI2bWFjX3BrdF9saXN0KTtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1hY19wa3QsIHRtcCwgXHUwMDI2bWFjX3BrdF9saXN0LCBub2RlKSB7XG4gXHRcdGxpc3RfZGVsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSk7XG4gXHRcdGtmcmVlX3NrYihtYWNfcGt0LVx1MDAzZXNrYik7XG4rXHRcdG5ldGRldl9wdXQobWFjX3BrdC1cdTAwM2VzZGF0YS1cdTAwM2VkZXYsIFx1MDAyNm1hY19wa3QtXHUwMDNlZGV2X3RyYWNrZXIpO1xuIFx0XHRrZnJlZShtYWNfcGt0KTtcbiBcdH1cbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxNDoxMi4yMTg3Nzc2NzVaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODU1NzIyNzU5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBtYWM4MDIxNTRgIFBhdGNoIGZvciBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqXG5cbk9rYXksIGxldCdzIGRpc3NlY3QgdGhpcyBwYXRjaCBmb3IgdGhlIGBtYWM4MDIxNTRgIHN1YnN5c3RlbS4gTXkgcHJpbWFyeSBjb25jZXJuIGhlcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2Yga2VybmVsIGRldmVsb3BtZW50LCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzIHRoYXQgcmVxdWlyZSBLTVNBTi1sZXZlbCBzY3J1dGlueSBvciBpZiBzdGFuZGFyZCBLQVNBTiwgTE9DS0RFUCwgYW5kIHJlbGF0ZWQgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guXG5cbkZpcnN0LCBJJ2xsIGJyZWFrIGRvd24gdGhlIGNoYW5nZXMuIFRoZSBwYXRjaCB0b3VjaGVzIHNldmVyYWwgZmlsZXM6IGBjZmc4MDIxNTQuaGAsIGBpZWVlODAyMTU0X2kuaGAsIGBtYWluLmNgLCBgcnguY2AsIGFuZCBgc2Nhbi5jYC4gSXQgbG9va3MgbGlrZSBpdCdzIHByaW1hcmlseSBhYm91dCBpbXByb3Zpbmcgc3luY2hyb25pemF0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUlggcGF0aC5cblxuU3BlY2lmaWNhbGx5LCBJJ20gc2VlaW5nIGFkZGl0aW9ucyBvZiBgbmV0ZGV2aWNlX3RyYWNrZXIgZGV2X3RyYWNrZXJgIHRvIGBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3RgIGFuZCBhIGBzcGlubG9ja190IHJ4X2xpc3RzX2xvY2tgIHRvIGBzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbGAuIEluaXRpYWxpemF0aW9uIG9mIHRoZSBzcGlubG9jayBpcyBoYW5kbGVkLCB0aGFua2Z1bGx5LiBUaGUgbW9yZSBpbnRlcmVzdGluZyBjaGFuZ2VzIGFyZSBpbiBgcnguY2AgYW5kIGBzY2FuLmNgLlxuXG5UaGUgaW50cm9kdWN0aW9uIG9mIGBtYWM4MDIxNTRfcnhfZGVxdWV1ZWAgbG9va3MgbGlrZSBhIGtleSBjaGFuZ2UsIGVuY2Fwc3VsYXRpbmcgdGhlIGxpc3QgZGVxdWV1ZSBsb2dpYyB3aXRoIHRoZSBsb2NrLiBHb29kLCB0aGlzIGlzIHByb2JhYmx5IHRvIHByb3RlY3QgdGhlIGByeF9saXN0c2Agb3Igc2ltaWxhci4gSSBub3RpY2UgdGhlIGxvY2sgYWNxdWlzaXRpb24gYW5kIHRoZSByZS1xdWV1aW5nIGxvZ2ljLiBBbHNvLCB0aGUgdXNlIG9mIGBuZXRkZXZfcHV0YCBpbiBzZXZlcmFsIHBsYWNlcyBhZnRlciB1c2luZyB0aGUgZGVxdWV1ZSBoZWxwZXIgaXMgaW1wb3J0YW50LiBUaGUgdXNlIG9mIGBuZXRkZXZfaG9sZGAgYW5kIGBuZXRkZXZfcHV0YCBhcm91bmQgdGhlIHBhY2tldCBzdHJ1Y3R1cmVzIGxvb2tzIGdvb2QgLSBwcm90ZWN0aW5nIHRoZSBgc2RhdGEtXHUwMDNlZGV2YCBwcm9wZXJseSB3aXRoIHRoZSBgZGV2X3RyYWNrZXJgIGluIGBpZWVlODAyMTU0X3N1YmlmX2ZyYW1lYCBpcyBjcnVjaWFsLlxuXG5JIG5lZWQgdG8gY29uZmlybSBob3cgYG1hY19wa3RgIGlzIGFsbG9jYXRlZC4gSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBmb3IgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZS4gSSdsbCBmb2N1cyBvbiB3aGVyZSBgbWFjX3BrdGAgaXMgYWxsb2NhdGVkLCBlc3BlY2lhbGx5IHdpdGhpbiBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAsIGFuZCBpZiB0aGVyZSBhcmUgb3RoZXIgcG90ZW50aWFsIGFsbG9jYXRpb24gc2l0ZXMuIEkgd2lsbCB1c2UgYHJlYWQtZmlsZWAgdG8gemVybyBpbiBvbiBgbmV0L21hYzgwMjE1NC9yeC5jYCBhbmQgbG9vayBmb3IgYWxsb2NhdGlvbnMuIEknbSBsb29raW5nIGZvciB3aGVyZSB3ZSdyZSBjcmVhdGluZyB0aGVzZSBwYWNrZXRzIGFuZCBob3cgdGhlIG1lbW9yeSBpcyBiZWluZyBoYW5kbGVkLiBJJ20gZ29pbmcgdG8gbG9vayBzcGVjaWZpY2FsbHkgZm9yIGNhc2VzIHdoZXJlIHRoZSBkYXRhIHdpdGhpbiB0aGUgYG1hY19wa3RgIGNvdWxkIGJlIHVzZWQgYmVmb3JlIGJlaW5nIGluaXRpYWxpemVkLlxuXG5UaGUgY2hhbmdlcyBpbiBgc2Nhbi5jYCBzZWVtIHN0cmFpZ2h0Zm9yd2FyZDogbW92aW5nIHRoZSBgcnhfYmVhY29uX2xpc3RgIHVuZGVyIHRoZSBsb2NrIGFuZCBmcmVlaW5nIHRoZSBlbGVtZW50cy4gVGhpcyBsb29rcyBsaWtlIHN0YW5kYXJkIGxpc3Qgc3luY2hyb25pemF0aW9uIHByYWN0aWNlcy4gSSBuZWVkIHRvIHN0aWxsIGVuc3VyZSB0aGUgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gb2YgdGhlc2Ugc3RydWN0dXJlcyBhcmUgcm9idXN0LlxuXG5NeSBzdXNwaWNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIGlzIHNvbGlkIGZyb20gYSBjdXJzb3J5IGdsYW5jZSwgYnV0IEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGNvZGUgZm9yIHRoZSBzdHJ1Y3R1cmVzLCBzcGVjaWZpY2FsbHkgYG1hY19wa3RgLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBgbWFjX3BrdGAgaXMgaGFuZGxlZCB3aGVuIHJlLXVzZWQgYWZ0ZXIgYmVpbmcgb24gdGhlIGByeF9saXN0c19sb2NrYCBwcm90ZWN0ZWQgcXVldWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTY0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MjAuNzc2MDA5NTY1WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxNTQvcnguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDAsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMDA6XFx0XFx0XFx0ZWxzZSBpZiAobWFjX2NiKHNrYiktXFx1MDAzZWRlc3Quc2hvcnRfYWRkciA9PSBzc2hvcnQpXFxuIDIwMTpcXHRcXHRcXHRcXHRza2ItXFx1MDAzZXBrdF90eXBlID0gUEFDS0VUX0hPU1Q7XFxuIDIwMjpcXHRcXHRcXHRlbHNlIGlmIChtYWNfY2Ioc2tiKS1cXHUwMDNlZGVzdC5zaG9ydF9hZGRyID09XFxuIDIwMzpcXHRcXHRcXHRcXHQgIGNwdV90b19sZTE2KElFRUU4MDIxNTRfQUREUl9CUk9BRENBU1QpKVxcbiAyMDQ6XFx0XFx0XFx0XFx0c2tiLVxcdTAwM2Vwa3RfdHlwZSA9IFBBQ0tFVF9CUk9BRENBU1Q7XFxuIDIwNTpcXHRcXHRcXHRlbHNlXFxuIDIwNjpcXHRcXHRcXHRcXHRza2ItXFx1MDAzZXBrdF90eXBlID0gUEFDS0VUX09USEVSSE9TVDtcXG4gMjA3OlxcdFxcdFxcdGJyZWFrO1xcbiAyMDg6XFx0XFx0ZGVmYXVsdDpcXG4gMjA5OlxcdFxcdFxcdHByX2RlYnVnKFxcXCJpbnZhbGlkIGRlc3QgbW9kZVxcXFxuXFxcIik7XFxuIDIxMDpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuIDIxMTpcXHRcXHR9XFxuIDIxMjpcXHRcXG4gMjEzOlxcdFxcdHNrYi1cXHUwMDNlZGV2ID0gc2RhdGEtXFx1MDAzZWRldjtcXG4gMjE0OlxcdFxcbiAyMTU6XFx0XFx0LyogVE9ETyB0aGlzIHNob3VsZCBiZSBtb3ZlZCBhZnRlciBuZXRpZl9yZWNlaXZlX3NrYiBjYWxsLCBvdGhlcndpc2VcXG4gMjE2OlxcdFxcdCAqIHdpcmVzaGFyayB3aWxsIHNob3cgYSBtYWMgaGVhZGVyIHdpdGggc2VjdXJpdHkgZmllbGRzIGFuZCB0aGVcXG4gMjE3OlxcdFxcdCAqIHBheWxvYWQgaXMgYWxyZWFkeSBkZWNyeXB0ZWQuXFxuIDIxODpcXHRcXHQgKi9cXG4gMjE5OlxcdFxcdHJjID0gbWFjODAyMTU0X2xsc2VjX2RlY3J5cHQoXFx1MDAyNnNkYXRhLVxcdTAwM2VzZWMsIHNrYik7XFxuIDIyMDpcXHRcXHRpZiAocmMpIHtcXG4gMjIxOlxcdFxcdFxcdHByX2RlYnVnKFxcXCJkZWNyeXB0aW9uIGZhaWxlZDogJWlcXFxcblxcXCIsIHJjKTtcXG4gMjIyOlxcdFxcdFxcdGdvdG8gZmFpbDtcXG4gMjIzOlxcdFxcdH1cXG4gMjI0OlxcdFxcbiAyMjU6XFx0XFx0c2RhdGEtXFx1MDAzZWRldi1cXHUwMDNlc3RhdHMucnhfcGFja2V0cysrO1xcbiAyMjY6XFx0XFx0c2RhdGEtXFx1MDAzZWRldi1cXHUwMDNlc3RhdHMucnhfYnl0ZXMgKz0gc2tiLVxcdTAwM2VsZW47XFxuIDIyNzpcXHRcXG4gMjI4OlxcdFxcdHN3aXRjaCAobWFjX2NiKHNrYiktXFx1MDAzZXR5cGUpIHtcXG4gMjI5OlxcdFxcdGNhc2UgSUVFRTgwMjE1NF9GQ19UWVBFX0JFQUNPTjpcXG4gMjMwOlxcdFxcdFxcdGRldl9kYmcoXFx1MDAyNnNkYXRhLVxcdTAwM2VkZXYtXFx1MDAzZWRldiwgXFxcIkJFQUNPTiByZWNlaXZlZFxcXFxuXFxcIik7XFxuIDIzMTpcXHRcXHRcXHRpZiAoIW1hYzgwMjE1NF9pc19zY2FubmluZyhzZGF0YS1cXHUwMDNlbG9jYWwpKVxcbiAyMzI6XFx0XFx0XFx0XFx0Z290byBmYWlsO1xcbiAyMzM6XFx0XFxuIDIzNDpcXHRcXHRcXHRtYWNfcGt0ID0ga3phbGxvY19vYmooKm1hY19wa3QsIEdGUF9BVE9NSUMpO1xcbiAyMzU6XFx0XFx0XFx0aWYgKCFtYWNfcGt0KVxcbiAyMzY6XFx0XFx0XFx0XFx0Z290byBmYWlsO1xcbiAyMzc6XFx0XFxuIDIzODpcXHRcXHRcXHRtYWNfcGt0LVxcdTAwM2Vza2IgPSBza2JfZ2V0KHNrYik7XFxuIDIzOTpcXHRcXHRcXHRtYWNfcGt0LVxcdTAwM2VzZGF0YSA9IHNkYXRhO1xcbiAyNDA6XFx0XFx0XFx0bWFjX3BrdC1cXHUwMDNlcGFnZSA9IHNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlc2Nhbl9wYWdlO1xcbiAyNDE6XFx0XFx0XFx0bWFjX3BrdC1cXHUwMDNlY2hhbm5lbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlc2Nhbl9jaGFubmVsO1xcbiAyNDI6XFx0XFx0XFx0bmV0ZGV2X2hvbGQoc2RhdGEtXFx1MDAzZWRldiwgXFx1MDAyNm1hY19wa3QtXFx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcXG4gMjQzOlxcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9saXN0c19sb2NrKTtcXG4gMjQ0OlxcdFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm1hY19wa3QtXFx1MDAzZW5vZGUsIFxcdTAwMjZzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2JlYWNvbl9saXN0KTtcXG4gMjQ1OlxcdFxcdFxcdHF1ZXVlX3dvcmsoc2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VtYWNfd3EsIFxcdTAwMjZzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2JlYWNvbl93b3JrKTtcXG4gMjQ2OlxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2xpc3RzX2xvY2spO1xcbiAyNDc6XFx0XFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiAyNDg6XFx0XFxuIDI0OTpcXHRcXHRjYXNlIElFRUU4MDIxNTRfRkNfVFlQRV9NQUNfQ01EOlxcbiAyNTA6XFx0XFx0XFx0ZGV2X2RiZyhcXHUwMDI2c2RhdGEtXFx1MDAzZWRldi1cXHUwMDNlZGV2LCBcXFwiTUFDIENPTU1BTkQgcmVjZWl2ZWRcXFxcblxcXCIpO1xcbiAyNTE6XFx0XFx0XFx0bWFjX3BrdCA9IGt6YWxsb2Nfb2JqKCptYWNfcGt0LCBHRlBfQVRPTUlDKTtcXG4gMjUyOlxcdFxcdFxcdGlmICghbWFjX3BrdClcXG4gMjUzOlxcdFxcdFxcdFxcdGdvdG8gZmFpbDtcXG4gMjU0OlxcdFxcbiAyNTU6XFx0XFx0XFx0bWFjX3BrdC1cXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xcbiAyNTY6XFx0XFx0XFx0bWFjX3BrdC1cXHUwMDNlc2RhdGEgPSBzZGF0YTtcXG4gMjU3OlxcdFxcdFxcdG5ldGRldl9ob2xkKHNkYXRhLVxcdTAwM2VkZXYsIFxcdTAwMjZtYWNfcGt0LVxcdTAwM2VkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7XFxuIDI1ODpcXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfbGlzdHNfbG9jayk7XFxuIDI1OTpcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZtYWNfcGt0LVxcdTAwM2Vub2RlLCBcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9tYWNfY21kX2xpc3QpO1xcbiAyNjA6XFx0XFx0XFx0cXVldWVfd29yayhzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZW1hY193cSwgXFx1MDAyNnNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfbWFjX2NtZF93b3JrKTtcXG4gMjYxOlxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2xpc3RzX2xvY2spO1xcbiAyNjI6XFx0XFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiAyNjM6XFx0XFxuIDI2NDpcXHRcXHRjYXNlIElFRUU4MDIxNTRfRkNfVFlQRV9BQ0s6XFxuIDI2NTpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuIDI2NjpcXHRcXG4gMjY3OlxcdFxcdGNhc2UgSUVFRTgwMjE1NF9GQ19UWVBFX0RBVEE6XFxuIDI2ODpcXHRcXHRcXHRyZXR1cm4gaWVlZTgwMjE1NF9kZWxpdmVyX3NrYihza2IpO1xcbiAyNjk6XFx0XFx0ZGVmYXVsdDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MjAuNzc2MTEwMDM2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk0NTI0Nzk5MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMaWZlY3ljbGUgb2YgYGNmZzgwMjE1NF9tYWNfcGt0YCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGEgYGNmZzgwMjE1NF9tYWNfcGt0YCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYC4gVGhlIGltcG9ydGFudCB0aGluZyBoZXJlIGlzIHRoYXQgYGt6YWxsb2NgIGd1YXJhbnRlZXMgaXQncyB6ZXJvZWQsIGEgZ29vZCBwcmFjdGljZSB0byBhdm9pZCB1bmluaXRpYWxpemVkIGRhdGEgdnVsbmVyYWJpbGl0aWVzLiBUaGVuLCB0aGUgYG5ldGRldl90cmFja2VyYCB3aXRoaW4gdGhlIGBtYWNfcGt0YCBpcyBpbml0aWFsaXplZCB2aWEgYG5ldGRldl9ob2xkYC4gSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gSXQgbG9va3MgbGlrZSBpdCdzIGRlc2lnbmVkIHRvIHRyYWNrIHRoZSBuZXR3b3JrIGRldmljZSBhc3NvY2lhdGlvbiBvZiB0aGlzIHBhY2tldC5cblxuTm93LCB0aGUgZGVhbGxvY2F0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYSBgbmV0ZGV2X3B1dGAgb24gdGhlIGBkZXZfdHJhY2tlcmAgYW5kIHRoZW4gYSBga2ZyZWVgIG9mIHRoZSBzdHJ1Y3R1cmUuIENsYXNzaWMgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24gcGFpciwgbm8gc3VycHJpc2VzIHRoZXJlLiBBbmQsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIGByeF9saXN0c19sb2NrYCBpcyB1c2VkIHRvIHByb3RlY3QgY29uY3VycmVudCBhY2Nlc3MgdG8gdGhlIGxpbmtlZCBsaXN0IGFuZCBpdCB3aWxsIHNlcmlhbGl6ZSBhY2Nlc3Mgd2l0aCB3b3JrIHF1ZXVlIHByb2Nlc3NpbmcuXG5cbkkgd2FudCB0byBiZSB0aG9yb3VnaC4gSSBuZWVkIHRvIGtub3cgd2hlcmUgZWxzZSB0aGlzIHN0cnVjdHVyZSBpcyB1c2VkLiBJJ2xsIG5lZWQgdG8gZ3JlcCB0aGUga2VybmVsIHNvdXJjZSBmb3IgYW55IG90aGVyIG9jY3VycmVuY2VzIG9mIGBjZmc4MDIxNTRfbWFjX3BrdGAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgb3BlcmF0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gSSdtIGxvb2tpbmcgZm9yIGFueXRoaW5nIHRoYXQgbWlnaHQgbW9kaWZ5IHRoZSBhbGxvY2F0aW9uLCBkZWFsbG9jYXRpb24sIG9yIHVzYWdlIHBhdHRlcm5zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDYyLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MzAuMjI4NTk3MTg4WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTUzMzgwNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmZzgwMjE1NF9tYWNfcGt0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2NmZzgwMjE1NC5oPTM2MT1zdHJ1Y3QgY2ZnODAyMTU0X2JlYWNvbl9yZXF1ZXN0IHtcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjE1NC5oLTM2Ny0vKipcXG5pbmNsdWRlL25ldC9jZmc4MDIxNTQuaDozNjg6ICogc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0IC0gTUFDIHBhY2tldCBkZXNjcmlwdG9yIChiZWFjb24vY29tbWFuZClcXG5pbmNsdWRlL25ldC9jZmc4MDIxNTQuaC0zNjktICogQG5vZGU6IE1BQyBwYWNrZXRzIHRvIHByb2Nlc3MgbGlzdCBtZW1iZXJcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjE1NC5oLTM3NS0gKi9cXG5pbmNsdWRlL25ldC9jZmc4MDIxNTQuaDozNzY6c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0IHtcXG5pbmNsdWRlL25ldC9jZmc4MDIxNTQuaC0zNzctXFx0c3RydWN0IGxpc3RfaGVhZCBub2RlO1xcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jPTI0PXN0YXRpYyBpbnQgaWVlZTgwMjE1NF9kZWxpdmVyX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jLTMxLVxcbm5ldC9tYWM4MDIxNTQvcnguYzozMjpzdGF0aWMgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICpcXG5uZXQvbWFjODAyMTU0L3J4LmMtMzMtbWFjODAyMTU0X3J4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jLTM2LXtcXG5uZXQvbWFjODAyMTU0L3J4LmM6Mzc6XFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xcbm5ldC9tYWM4MDIxNTQvcnguYy0zOC1cXG4tLVxcbm5ldC9tYWM4MDIxNTQvcnguYy00MC1cXHRtYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKHJ4X2xpc3QsXFxubmV0L21hYzgwMjE1NC9yeC5jOjQxOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7XFxubmV0L21hYzgwMjE1NC9yeC5jLTQyLVxcdGlmIChtYWNfcGt0KSB7XFxuLS1cXG5uZXQvbWFjODAyMTU0L3J4LmM9NTI9dm9pZCBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbWFjODAyMTU0L3J4LmMtNTUtXFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsLCByeF9iZWFjb25fd29yayk7XFxubmV0L21hYzgwMjE1NC9yeC5jOjU2OlxcdHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqbWFjX3BrdDtcXG5uZXQvbWFjODAyMTU0L3J4LmMtNTctXFxuLS1cXG5uZXQvbWFjODAyMTU0L3J4LmM9OTA9dm9pZCBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jLTkzLVxcdFxcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCwgcnhfbWFjX2NtZF93b3JrKTtcXG5uZXQvbWFjODAyMTU0L3J4LmM6OTQ6XFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xcbm5ldC9tYWM4MDIxNTQvcnguYy05NS1cXHR1OCBtYWNfY21kO1xcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jPTE1MD1pZWVlODAyMTU0X3N1YmlmX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxNTQvcnguYy0xNTQtXFx0c3RydWN0IHdwYW5fZGV2ICp3cGFuX2RldiA9IFxcdTAwMjZzZGF0YS1cXHUwMDNld3Bhbl9kZXY7XFxubmV0L21hYzgwMjE1NC9yeC5jOjE1NTpcXHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3Q7XFxubmV0L21hYzgwMjE1NC9yeC5jLTE1Ni1cXHRfX2xlMTYgc3Bhbiwgc3Nob3J0O1xcbi0tXFxubmV0L21hYzgwMjE1NC9zY2FuLmM9MTA1PXN0YXRpYyB2b2lkIG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyhzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwpXFxubmV0L21hYzgwMjE1NC9zY2FuLmMtMTA2LXtcXG5uZXQvbWFjODAyMTU0L3NjYW4uYzoxMDc6XFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0LCAqdG1wO1xcbm5ldC9tYWM4MDIxNTQvc2Nhbi5jLTEwOC1cXHRMSVNUX0hFQUQobWFjX3BrdF9saXN0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MzIuNzgxOTk1NzA4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxMjUwMzk5MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRob3JvdWdobmVzcyBpcyBLZXk6IEJlYWNvbiBQcm9jZXNzaW5nIFx1MDAyNiBTY2FubmluZyBSZXZpZXcqKlxuXG5SaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIGFueSBvbmUgYXJlYSwgSSBzaG91bGQgZG8gYSBxdWljayBzd2VlcC4gTGV0J3MgbWFrZSBzdXJlIHdlIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYG1hYzgwMjE1NF9wcm9jZXNzX2JlYWNvbmAgc3BlY2lmaWNhbGx5IOKAkyB0aGF0J3MgYSBwcmltZSBzdXNwZWN0LCBvZiBjb3Vyc2UuIEJ1dCBJIHNob3VsZG4ndCBzdG9wIHRoZXJlLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB3ZSBoYXZlbid0IG92ZXJsb29rZWQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHJlcG9ydGVkIGlzc3VlLCBJJ2xsIGFsc28gZ2xhbmNlIHRocm91Z2ggb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgc2VjdGlvbnMgd2l0aGluIGBzY2FuLmNgLiBJdCdzIHBvc3NpYmxlIHRoZSByb290IGNhdXNlIGlzIGJlaW5nIHRyaWdnZXJlZCBvciBtaXNtYW5hZ2VkIGluIGFub3RoZXIgcGFydCBvZiB0aGUgc2Nhbm5pbmcgbG9naWMgaXRzZWxmLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzIHRvIGF2b2lkIGEgZnJ1c3RyYXRpbmcgd2lsZCBnb29zZSBjaGFzZSBsYXRlci4gSXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIGRlYnVnZ2luZyBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Njg4LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MzQuOTA3MDM5NThaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzIyMzIwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjODAyMTU0X3Byb2Nlc3NfYmVhY29uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmg9MjgxPWludCBtYWM4MDIxNTRfYWJvcnRfc2Nhbl9sb2NrZWQoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmgtMjgyLVxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxubmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaDoyODM6aW50IG1hYzgwMjE1NF9wcm9jZXNzX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaC0yODQtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jPTUyPXZvaWQgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jLTYxLVxcbm5ldC9tYWM4MDIxNTQvcnguYzo2MjpcXHRtYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24obG9jYWwsIG1hY19wa3QtXFx1MDAzZXNrYiwgbWFjX3BrdC1cXHUwMDNlcGFnZSwgbWFjX3BrdC1cXHUwMDNlY2hhbm5lbCk7XFxubmV0L21hYzgwMjE1NC9yeC5jLTYzLVxcbi0tXFxubmV0L21hYzgwMjE1NC9zY2FuLmM9MjkwPWludCBtYWM4MDIxNTRfdHJpZ2dlcl9zY2FuX2xvY2tlZChzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTU0L3NjYW4uYy0zMjUtXFxubmV0L21hYzgwMjE1NC9zY2FuLmM6MzI2OmludCBtYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24oc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxNTQvc2Nhbi5jLTMyNy1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjM3LjE3OTI3OTQ4WiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY0MjcxOTQwMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbWFjODAyMTU0IFJ4IFByb2Nlc3NpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiBzdGFiaWxpemluZyB0aGUgYG1hYzgwMjE1NGAgcmVjZWl2ZSBwYXRoLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBjb25jdXJyZW5jeSBhbmQgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3Vlcy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGxvb2tzIHByb21pc2luZy5cblxuRmlyc3QsIEkgc2VlIHRoZSBjb3JlIHByb2JsZW06IGNvbmN1cnJlbnQgYWNjZXNzIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGluIHRoZSBgcnhfYmVhY29uX2xpc3RgIGFuZCBgcnhfbWFjX2NtZF9saXN0YC4gVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgYHJ4X2xpc3RzX2xvY2tgIHNwaW5sb2NrIGlzIGEgc3RhbmRhcmQgYW5kIGVmZmVjdGl2ZSBhcHByb2FjaCB0byBzZXJpYWxpemUgZW5xdWV1ZWluZyBhbmQgZGVxdWV1ZWluZyBvcGVyYXRpb25zLiBUaGlzIGlzIGdvb2Q7IExPQ0tERVAgc2hvdWxkIGNhdGNoIGFueSBpc3N1ZXMgaGVyZS4gVGhlIGBuZXRkZXZpY2VfdHJhY2tlcmAgaXMga2V5IGZvciBwcmV2ZW50aW5nIHRoZSBjbGFzc2ljIHVzZS1hZnRlci1mcmVlIHByb2JsZW0gYXNzb2NpYXRlZCB3aXRoIGBzZGF0YS1cdTAwM2VkZXZgIOKAkyBpdCdzIGNydWNpYWwgdG8gdHJhY2sgdGhlIGRldmljZSdzIGxpZmV0aW1lIHdoZW4gYSBwYWNrZXQgaXMgcXVldWVkLiBUaGF0J3MgYSBzb2xpZCBkZWZlbnNlLlxuXG5OZXh0LCB0aGUgdXNlIG9mIGBremFsbG9jX29iamAgZm9yIGBjZmc4MDIxNTRfbWFjX3BrdGAgYWxsb2NhdGlvbnMgaXMgZXhhY3RseSB3aGF0IEknZCBleHBlY3QuIFplcm9pbmcgYWxsIGZpZWxkcyBlbGltaW5hdGVzIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkLiBJIG5lZWQgdG8gYmUgc3VyZSB0aG91Z2gsIGFyZSB0aGVyZSBhbnkgaW5mbyBsZWFrcz8gTm8uIFplcm9pbmcgdGhlIGFsbG9jYXRpb25zLCBwYXNzaW5nIGBtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyYCB0byBgbmV0ZGV2X2hvbGRgLCBgbmV0ZGV2X3B1dGAsIGFuZCBubyBuZXcgYGNvcHlfdG9fdXNlcmAgY2FsbHMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGRhdGEuIEV4Y2VsbGVudC4gTm8gb2J2aW91cyBhdmVudWVzIGZvciBsZWFraW5nIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlLiBObyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBsZW5ndGggY2FsY3VsYXRpb24gdGhhdCB3b3VsZCBhbGxvdyByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGVpdGhlci5cblxuTXkgYW5hbHlzaXMgY29uZmlybXMgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IEtNU0FOIGNvbmNlcm5zLiBJdCdzIHJlYWxseSBhYm91dCBjb25jdXJyZW5jeSBhbmQgbWVtb3J5IHNhZmV0eSwgd2hpY2ggYXJlIHByZWNpc2VseSB3aGF0IEtBU0FOIGFuZCBMT0NLREVQIGFyZSBkZXNpZ25lZCBmb3IuIFRoZSBsb2NraW5nLCB0aGUgcmVmZXJlbmNlIHRyYWNraW5nLCBhbmQgdGhlIHplcm9lZCBtZW1vcnkgYWxsb2NhdGlvbnMgYWxsIHBvaW50IHRvIHRoaXMuIEl0IHNlZW1zIHRoYXQgdGhpcyBwYXRjaCBjYW4gYmUgY2xhc3NpZmllZCBhcyBzYWZlIGZvciBLU01BTi5cblxuU28sIHRoZSByZWFzb25pbmcgaGVyZSBpcyBzdHJhaWdodGZvcndhcmQ6IEtBU0FOIGFuZCBMT0NLREVQIGFyZSBmdWxseSBhZGVxdWF0ZS4gVGhpcyBwYXRjaCBkZWFscyB3aXRoIHJhY2UgY29uZGl0aW9ucywgZGV2aWNlIGxpZmV0aW1lLCBhbmQgcmVmY291bnRpbmcuIGBremFsbG9jX29iamAgdGFrZXMgY2FyZSBvZiB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnkuIE5vIG5lZWQgZm9yIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nLiBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDI4LCJPdXRwdXRUb2tlbnMiOjIwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxNDo0My42MDY0NzkwOTVaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHN5bmNocm9uaXphdGlvbiBhbmQgbmV0ZGV2IHJlZmVyZW5jZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgbWFjODAyMTU0IFJYIHF1ZXVlcyAoYmVhY29uIGFuZCBNQUMgY29tbWFuZCBxdWV1ZXMpLiBJdCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgYHJ4X2xpc3RzX2xvY2tgIHRvIHByb3RlY3QgcXVldWUgbWFuaXB1bGF0aW9uIGFuZCB1c2VzIGBuZXRkZXZpY2VfdHJhY2tlcmAgKGBuZXRkZXZfaG9sZGAgLyBgbmV0ZGV2X3B1dGApIHRvIHNhZmVseSByZXRhaW4gZGV2aWNlIHJlZmVyZW5jZXMgdW50aWwgcGFja2V0cyBhcmUgcHJvY2Vzc2VkIGFuZCBmcmVlZC5cXG5cXG5LQVNBTiwgTE9DS0RFUCwgYW5kIHRoZSBuZXRkZXYgcmVmY291bnQgdHJhY2tlciBhZGVxdWF0ZWx5IGNvdmVyIHRoZSByaXNrcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXRjaCAoc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGRlYWRsb2NrcywgYW5kIHVzZS1hZnRlci1mcmVlL2xpZmV0aW1lIGJ1Z3MpLiBgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0YCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iamAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYXJlIHplcm8taW5pdGlhbGl6ZWQuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHJlYWQsIGJyYW5jaGVkIG9uLCBvciBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgc3luY2hyb25pemF0aW9uIGFuZCBuZXRkZXYgcmVmZXJlbmNlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZvciBtYWM4MDIxNTQgUlggcXVldWVzIChiZWFjb24gYW5kIE1BQyBjb21tYW5kIHF1ZXVlcykuIEl0IGludHJvZHVjZXMgYSBzcGlubG9jayBgcnhfbGlzdHNfbG9ja2AgdG8gcHJvdGVjdCBxdWV1ZSBtYW5pcHVsYXRpb24gYW5kIHVzZXMgYG5ldGRldmljZV90cmFja2VyYCAoYG5ldGRldl9ob2xkYCAvIGBuZXRkZXZfcHV0YCkgdG8gc2FmZWx5IHJldGFpbiBkZXZpY2UgcmVmZXJlbmNlcyB1bnRpbCBwYWNrZXRzIGFyZSBwcm9jZXNzZWQgYW5kIGZyZWVkLlxcblxcbktBU0FOLCBMT0NLREVQLCBhbmQgdGhlIG5ldGRldiByZWZjb3VudCB0cmFja2VyIGFkZXF1YXRlbHkgY292ZXIgdGhlIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhdGNoIChzdWNoIGFzIHJhY2UgY29uZGl0aW9ucywgZGVhZGxvY2tzLCBhbmQgdXNlLWFmdGVyLWZyZWUvbGlmZXRpbWUgYnVncykuIGBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3RgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgZW5zdXJpbmcgYWxsIGZpZWxkcyBhcmUgemVyby1pbml0aWFsaXplZC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgcmVhZCwgYnJhbmNoZWQgb24sIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd4z69[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 18:10:55 +0000 UTC FinishedAt: 2026-09-04 18:14:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc4b95b8fee95113587e93ca116356032d271371", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IEEE802154", "MAC802154", "IEEE802154_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "dc4b95b8fee95113587e93ca116356032d271371", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IEEE802154", "MAC802154", "IEEE802154_HWSIM" ], "series_id": "d49c8b1c-a4c8-4be0-a22b-8460db42d8dd" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mac802154_rx_beacon_worker", "mac802154_rx_mac_cmd_worker", "mac802154_rx_dequeue", "ieee802154_subif_frame", "mac802154_flush_queued_beacons", "ieee802154_alloc_hw" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lFRUU4MDIxNTQmIzM0OywKICAgICYjMzQ7TUFDODAyMTU0JiMzNDssCiAgICAmIzM0O0lFRUU4MDIxNTRfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlciYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXImIzM0OywKICAgICYjMzQ7bWFjODAyMTU0X3J4X2RlcXVldWUmIzM0OywKICAgICYjMzQ7aWVlZTgwMjE1NF9zdWJpZl9mcmFtZSYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnMmIzM0OywKICAgICYjMzQ7aWVlZTgwMjE1NF9hbGxvY19odyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHN5bmNocm9uaXphdGlvbiBhbmQgbmV0ZGV2IHJlZmVyZW5jZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgbWFjODAyMTU0IFJYIHF1ZXVlcyAoYmVhY29uIGFuZCBNQUMgY29tbWFuZCBxdWV1ZXMpLiBJdCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgYHJ4X2xpc3RzX2xvY2tgIHRvIHByb3RlY3QgcXVldWUgbWFuaXB1bGF0aW9uIGFuZCB1c2VzIGBuZXRkZXZpY2VfdHJhY2tlcmAgKGBuZXRkZXZfaG9sZGAgLyBgbmV0ZGV2X3B1dGApIHRvIHNhZmVseSByZXRhaW4gZGV2aWNlIHJlZmVyZW5jZXMgdW50aWwgcGFja2V0cyBhcmUgcHJvY2Vzc2VkIGFuZCBmcmVlZC5cblxuS0FTQU4sIExPQ0tERVAsIGFuZCB0aGUgbmV0ZGV2IHJlZmNvdW50IHRyYWNrZXIgYWRlcXVhdGVseSBjb3ZlciB0aGUgcmlza3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgcmFjZSBjb25kaXRpb25zLCBkZWFkbG9ja3MsIGFuZCB1c2UtYWZ0ZXItZnJlZS9saWZldGltZSBidWdzKS4gYHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmpgLCBlbnN1cmluZyBhbGwgZmllbGRzIGFyZSB6ZXJvLWluaXRpYWxpemVkLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkLCBicmFuY2hlZCBvbiwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgUlggYW5kIHF1ZXVlIG1hbmFnZW1lbnQgaW4gdGhlIG1hYzgwMjE1NCBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgZGVkaWNhdGVkIHNwaW5sb2NrIChyeF9saXN0c19sb2NrKSB0byBwcm90ZWN0IHJ4X2JlYWNvbl9saXN0IGFuZCByeF9tYWNfY21kX2xpc3QsIHVwZGF0aW5nIHRoZSB3b3JrZXIgZGVxdWV1ZSBsb2dpYywgYW5kIHRha2luZy9yZWxlYXNpbmcgbmV0ZGV2aWNlIHJlZmVyZW5jZSB0cmFja2VycyAobmV0ZGV2X2hvbGQvbmV0ZGV2X3B1dCkgd2hlbiBxdWV1ZWluZyBhbmQgcHJvY2Vzc2luZyBNQUMgcGFja2V0cy4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgbWFjODAyMTU0IHZpcnR1YWwgZHJpdmVycyAobWFjODAyMTU0X2h3c2ltKSBhbmQgc3RhbmRhcmQgSUVFRSA4MDIuMTUuNCBuZXR3b3JrIGludGVyZmFjZXMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nIGZvciBjb25jdXJyZW5jeSBidWdzLCBkZWFkbG9ja3MsIGFuZCBuZXRkZXYgcmVmY291bnRpbmcgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmUyOGMzYWQ4NDIxNTc5M2YzNzQ1Y2E0ZTNkZDdlMTkyOTYzNjdiZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTg6MTI6NTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmggYi9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaFxuaW5kZXggNzZkMmNkMmUyYjMwOS4uNTczNDM3NjJkN2YwYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaFxuQEAgLTM2OSw2ICYjNDM7MzY5LDcgQEAgc3RydWN0IGNmZzgwMjE1NF9iZWFjb25fcmVxdWVzdCB7XG4gICogQG5vZGU6IE1BQyBwYWNrZXRzIHRvIHByb2Nlc3MgbGlzdCBtZW1iZXJcbiAgKiBAc2tiOiB0aGUgcmVjZWl2ZWQgc2tfYnVmZlxuICAqIEBzZGF0YTogdGhlIGludGVyZmFjZSBvbiB3aGljaCBAc2tiIHdhcyByZWNlaXZlZFxuJiM0MzsgKiBAZGV2X3RyYWNrZXI6IG5ldGRldiByZWZlcmVuY2UgaGVsZCB1bnRpbCB0aGUgZGVzY3JpcHRvciBpcyByZWxlYXNlZFxuICAqIEBwYWdlOiBwYWdlIGNvbmZpZ3VyYXRpb24gd2hlbiBAc2tiIHdhcyByZWNlaXZlZFxuICAqIEBjaGFubmVsOiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gd2hlbiBAc2tiIHdhcyByZWNlaXZlZFxuICAqL1xuQEAgLTM3Niw2ICYjNDM7Mzc3LDcgQEAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0IHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgbm9kZTtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHRzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGE7XG4mIzQzO1x0bmV0ZGV2aWNlX3RyYWNrZXIgZGV2X3RyYWNrZXI7XG4gXHR1OCBwYWdlO1xuIFx0dTggY2hhbm5lbDtcbiB9O1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmggYi9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oXG5pbmRleCA4ZjJiZmYyNjgzOTJiLi4wOTZlNmYwMzQwZGM3IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaFxuQEAgLTc0LDYgJiM0Mzs3NCw4IEBAIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsIHtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCByeF9iZWFjb25fd29yaztcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcnhfbWFjX2NtZF9saXN0O1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IHJ4X21hY19jbWRfd29yaztcbiYjNDM7XHQvKiBQcm90ZWN0cyByeF9iZWFjb25fbGlzdCBhbmQgcnhfbWFjX2NtZF9saXN0LiAqL1xuJiM0MztcdHNwaW5sb2NrX3QgcnhfbGlzdHNfbG9jaztcbiBcbiBcdC8qIEFzc29jaWF0aW9uICovXG4gXHRzdHJ1Y3QgaWVlZTgwMjE1NF9wYW5fZGV2aWNlICphc3NvY19kZXY7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjE1NC9tYWluLmMgYi9uZXQvbWFjODAyMTU0L21haW4uY1xuaW5kZXggZWExZWZlZjM1NzJhZS4uYTZhOTc2YjBkZWE1NiAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxNTQvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTU0L21haW4uY1xuQEAgLTkxLDYgJiM0Mzs5MSw3IEBAIGllZWU4MDIxNTRfYWxsb2NfaHcoc2l6ZV90IHByaXZfZGF0YV9sZW4sIGNvbnN0IHN0cnVjdCBpZWVlODAyMTU0X29wcyAqb3BzKVxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bG9jYWwtXHUwMDNlaW50ZXJmYWNlcyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZsb2NhbC1cdTAwM2VyeF9tYWNfY21kX2xpc3QpO1xuJiM0MztcdHNwaW5fbG9ja19pbml0KFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2VpZmxpc3RfbXR4KTtcbiBcbiBcdHRhc2tsZXRfc2V0dXAoXHUwMDI2bG9jYWwtXHUwMDNldGFza2xldCwgaWVlZTgwMjE1NF90YXNrbGV0X2hhbmRsZXIpO1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvcnguYyBiL25ldC9tYWM4MDIxNTQvcnguY1xuaW5kZXggY2Q4ZjJhMTE5MjBkMC4uZGYyZjYxMjhkZGQ0YSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxNTQvcnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjE1NC9yeC5jXG5AQCAtMjksMjEgJiM0MzsyOSw0MCBAQCBzdGF0aWMgaW50IGllZWU4MDIxNTRfZGVsaXZlcl9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHJldHVybiBuZXRpZl9yZWNlaXZlX3NrYihza2IpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqXG4mIzQzO21hYzgwMjE1NF9yeF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCxcbiYjNDM7XHRcdCAgICAgc3RydWN0IGxpc3RfaGVhZCAqcnhfbGlzdCxcbiYjNDM7XHRcdCAgICAgc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xuJiM0MztcbiYjNDM7XHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4mIzQzO1x0bWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChyeF9saXN0LFxuJiM0MztcdFx0XHRcdFx0ICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTtcbiYjNDM7XHRpZiAobWFjX3BrdCkge1xuJiM0MztcdFx0bGlzdF9kZWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlKTtcbiYjNDM7XHRcdGlmICghbGlzdF9lbXB0eShyeF9saXN0KSlcbiYjNDM7XHRcdFx0cXVldWVfd29yayhsb2NhbC1cdTAwM2VtYWNfd3EsIHdvcmspO1xuJiM0MztcdH1cbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG1hY19wa3Q7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsID1cbiBcdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsLCByeF9iZWFjb25fd29yayk7XG4gXHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3Q7XG4gXG4tXHRtYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2JlYWNvbl9saXN0LFxuLVx0XHRcdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QsIG5vZGUpO1xuJiM0MztcdG1hY19wa3QgPSBtYWM4MDIxNTRfcnhfZGVxdWV1ZShsb2NhbCwgXHUwMDI2bG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QsIHdvcmspO1xuIFx0aWYgKCFtYWNfcGt0KVxuIFx0XHRyZXR1cm47XG4gXG4gXHRtYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24obG9jYWwsIG1hY19wa3QtXHUwMDNlc2tiLCBtYWNfcGt0LVx1MDAzZXBhZ2UsIG1hY19wa3QtXHUwMDNlY2hhbm5lbCk7XG4gXG4tXHRsaXN0X2RlbChcdTAwMjZtYWNfcGt0LVx1MDAzZW5vZGUpO1xuIFx0a2ZyZWVfc2tiKG1hY19wa3QtXHUwMDNlc2tiKTtcbiYjNDM7XHRuZXRkZXZfcHV0KG1hY19wa3QtXHUwMDNlc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyKTtcbiBcdGtmcmVlKG1hY19wa3QpO1xuIH1cbiBcbkBAIC03Niw4ICYjNDM7OTUsNyBAQCB2b2lkIG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHR1OCBtYWNfY21kO1xuIFx0aW50IHJjO1xuIFxuLVx0bWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcdTAwMjZsb2NhbC1cdTAwM2VyeF9tYWNfY21kX2xpc3QsXG4tXHRcdFx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7XG4mIzQzO1x0bWFjX3BrdCA9IG1hYzgwMjE1NF9yeF9kZXF1ZXVlKGxvY2FsLCBcdTAwMjZsb2NhbC1cdTAwM2VyeF9tYWNfY21kX2xpc3QsIHdvcmspO1xuIFx0aWYgKCFtYWNfcGt0KVxuIFx0XHRyZXR1cm47XG4gXG5AQCAtMTIzLDggJiM0MzsxNDEsOCBAQCB2b2lkIG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHR9XG4gXG4gb3V0OlxuLVx0bGlzdF9kZWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlKTtcbiBcdGtmcmVlX3NrYihtYWNfcGt0LVx1MDAzZXNrYik7XG4mIzQzO1x0bmV0ZGV2X3B1dChtYWNfcGt0LVx1MDAzZXNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bWFjX3BrdC1cdTAwM2VkZXZfdHJhY2tlcik7XG4gXHRrZnJlZShtYWNfcGt0KTtcbiB9XG4gXG5AQCAtMjIxLDggJiM0MzsyMzksMTEgQEAgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdG1hY19wa3QtXHUwMDNlc2RhdGEgPSBzZGF0YTtcbiBcdFx0bWFjX3BrdC1cdTAwM2VwYWdlID0gc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlc2Nhbl9wYWdlO1xuIFx0XHRtYWNfcGt0LVx1MDAzZWNoYW5uZWwgPSBzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VzY2FuX2NoYW5uZWw7XG4mIzQzO1x0XHRuZXRkZXZfaG9sZChzZGF0YS1cdTAwM2VkZXYsIFx1MDAyNm1hY19wa3QtXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QpO1xuIFx0XHRxdWV1ZV93b3JrKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZW1hY193cSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfYmVhY29uX3dvcmspO1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4gXHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiBcbiBcdGNhc2UgSUVFRTgwMjE1NF9GQ19UWVBFX01BQ19DTUQ6XG5AQCAtMjMzLDggJiM0MzsyNTQsMTEgQEAgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXG4gXHRcdG1hY19wa3QtXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xuIFx0XHRtYWNfcGt0LVx1MDAzZXNkYXRhID0gc2RhdGE7XG4mIzQzO1x0XHRuZXRkZXZfaG9sZChzZGF0YS1cdTAwM2VkZXYsIFx1MDAyNm1hY19wa3QtXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfbWFjX2NtZF9saXN0KTtcbiBcdFx0cXVldWVfd29yayhzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VtYWNfd3EsIFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X21hY19jbWRfd29yayk7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiBcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIFxuIFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfQUNLOlxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvc2Nhbi5jIGIvbmV0L21hYzgwMjE1NC9zY2FuLmNcbmluZGV4IDAwNTMzOGY4OWI3NWUuLmMzYzYxZWJkZTE1NjggMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTU0L3NjYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjE1NC9zY2FuLmNcbkBAIC0xMDUsMTAgJiM0MzsxMDUsMTYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBtYWM4MDIxNTRfc2Nhbl9nZXRfY2hhbm5lbF90aW1lKHU4IGR1cmF0aW9uX29yZGVyLFxuIHN0YXRpYyB2b2lkIG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyhzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwpXG4ge1xuIFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0LCAqdG1wO1xuJiM0MztcdExJU1RfSEVBRChtYWNfcGt0X2xpc3QpO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1hY19wa3QsIHRtcCwgXHUwMDI2bG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QsIG5vZGUpIHtcbiYjNDM7XHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4mIzQzO1x0bGlzdF9zcGxpY2VfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCwgXHUwMDI2bWFjX3BrdF9saXN0KTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1hY19wa3QsIHRtcCwgXHUwMDI2bWFjX3BrdF9saXN0LCBub2RlKSB7XG4gXHRcdGxpc3RfZGVsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSk7XG4gXHRcdGtmcmVlX3NrYihtYWNfcGt0LVx1MDAzZXNrYik7XG4mIzQzO1x0XHRuZXRkZXZfcHV0KG1hY19wa3QtXHUwMDNlc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyKTtcbiBcdFx0a2ZyZWUobWFjX3BrdCk7XG4gXHR9XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lFRUU4MDIxNTQmIzM0OywKICAgICYjMzQ7TUFDODAyMTU0JiMzNDssCiAgICAmIzM0O0lFRUU4MDIxNTRfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlciYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXImIzM0OywKICAgICYjMzQ7bWFjODAyMTU0X3J4X2RlcXVldWUmIzM0OywKICAgICYjMzQ7aWVlZTgwMjE1NF9zdWJpZl9mcmFtZSYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnMmIzM0OywKICAgICYjMzQ7aWVlZTgwMjE1NF9hbGxvY19odyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgUlggYW5kIHF1ZXVlIG1hbmFnZW1lbnQgaW4gdGhlIG1hYzgwMjE1NCBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgZGVkaWNhdGVkIHNwaW5sb2NrIChyeF9saXN0c19sb2NrKSB0byBwcm90ZWN0IHJ4X2JlYWNvbl9saXN0IGFuZCByeF9tYWNfY21kX2xpc3QsIHVwZGF0aW5nIHRoZSB3b3JrZXIgZGVxdWV1ZSBsb2dpYywgYW5kIHRha2luZy9yZWxlYXNpbmcgbmV0ZGV2aWNlIHJlZmVyZW5jZSB0cmFja2VycyAobmV0ZGV2X2hvbGQvbmV0ZGV2X3B1dCkgd2hlbiBxdWV1ZWluZyBhbmQgcHJvY2Vzc2luZyBNQUMgcGFja2V0cy4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgbWFjODAyMTU0IHZpcnR1YWwgZHJpdmVycyAobWFjODAyMTU0X2h3c2ltKSBhbmQgc3RhbmRhcmQgSUVFRSA4MDIuMTUuNCBuZXR3b3JrIGludGVyZmFjZXMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nIGZvciBjb25jdXJyZW5jeSBidWdzLCBkZWFkbG9ja3MsIGFuZCBuZXRkZXYgcmVmY291bnRpbmcgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmUyOGMzYWQ4NDIxNTc5M2YzNzQ1Y2E0ZTNkZDdlMTkyOTYzNjdiZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMTg6MTI6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaCBiL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oCmluZGV4IDc2ZDJjZDJlMmIzMDkuLjU3MzQzNzYyZDdmMGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oCkBAIC0zNjksNiAmIzQzOzM2OSw3IEBAIHN0cnVjdCBjZmc4MDIxNTRfYmVhY29uX3JlcXVlc3QgewogICogQG5vZGU6IE1BQyBwYWNrZXRzIHRvIHByb2Nlc3MgbGlzdCBtZW1iZXIKICAqIEBza2I6IHRoZSByZWNlaXZlZCBza19idWZmCiAgKiBAc2RhdGE6IHRoZSBpbnRlcmZhY2Ugb24gd2hpY2ggQHNrYiB3YXMgcmVjZWl2ZWQKJiM0MzsgKiBAZGV2X3RyYWNrZXI6IG5ldGRldiByZWZlcmVuY2UgaGVsZCB1bnRpbCB0aGUgZGVzY3JpcHRvciBpcyByZWxlYXNlZAogICogQHBhZ2U6IHBhZ2UgY29uZmlndXJhdGlvbiB3aGVuIEBza2Igd2FzIHJlY2VpdmVkCiAgKiBAY2hhbm5lbDogY2hhbm5lbCBjb25maWd1cmF0aW9uIHdoZW4gQHNrYiB3YXMgcmVjZWl2ZWQKICAqLwpAQCAtMzc2LDYgJiM0MzszNzcsNyBAQCBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgewogCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCXN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YTsKJiM0MzsJbmV0ZGV2aWNlX3RyYWNrZXIgZGV2X3RyYWNrZXI7CiAJdTggcGFnZTsKIAl1OCBjaGFubmVsOwogfTsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmggYi9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oCmluZGV4IDhmMmJmZjI2ODM5MmIuLjA5NmU2ZjAzNDBkYzcgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaApAQCAtNzQsNiAmIzQzOzc0LDggQEAgc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgewogCXN0cnVjdCB3b3JrX3N0cnVjdCByeF9iZWFjb25fd29yazsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHJ4X21hY19jbWRfbGlzdDsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnhfbWFjX2NtZF93b3JrOwomIzQzOwkvKiBQcm90ZWN0cyByeF9iZWFjb25fbGlzdCBhbmQgcnhfbWFjX2NtZF9saXN0LiAqLwomIzQzOwlzcGlubG9ja190IHJ4X2xpc3RzX2xvY2s7CiAKIAkvKiBBc3NvY2lhdGlvbiAqLwogCXN0cnVjdCBpZWVlODAyMTU0X3Bhbl9kZXZpY2UgKmFzc29jX2RldjsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvbWFpbi5jIGIvbmV0L21hYzgwMjE1NC9tYWluLmMKaW5kZXggZWExZWZlZjM1NzJhZS4uYTZhOTc2YjBkZWE1NiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjE1NC9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjE1NC9tYWluLmMKQEAgLTkxLDYgJiM0Mzs5MSw3IEBAIGllZWU4MDIxNTRfYWxsb2NfaHcoc2l6ZV90IHByaXZfZGF0YV9sZW4sIGNvbnN0IHN0cnVjdCBpZWVlODAyMTU0X29wcyAqb3BzKQogCUlOSVRfTElTVF9IRUFEKCZhbXA7bG9jYWwtJmd0O2ludGVyZmFjZXMpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7bG9jYWwtJmd0O3J4X2JlYWNvbl9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2xvY2FsLSZndDtyeF9tYWNfY21kX2xpc3QpOwomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKIAltdXRleF9pbml0KCZhbXA7bG9jYWwtJmd0O2lmbGlzdF9tdHgpOwogCiAJdGFza2xldF9zZXR1cCgmYW1wO2xvY2FsLSZndDt0YXNrbGV0LCBpZWVlODAyMTU0X3Rhc2tsZXRfaGFuZGxlcik7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L3J4LmMgYi9uZXQvbWFjODAyMTU0L3J4LmMKaW5kZXggY2Q4ZjJhMTE5MjBkMC4uZGYyZjYxMjhkZGQ0YSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjE1NC9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxNTQvcnguYwpAQCAtMjksMjEgJiM0MzsyOSw0MCBAQCBzdGF0aWMgaW50IGllZWU4MDIxNTRfZGVsaXZlcl9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlyZXR1cm4gbmV0aWZfcmVjZWl2ZV9za2Ioc2tiKTsKIH0KIAomIzQzO3N0YXRpYyBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKgomIzQzO21hYzgwMjE1NF9yeF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCwKJiM0MzsJCSAgICAgc3RydWN0IGxpc3RfaGVhZCAqcnhfbGlzdCwKJiM0MzsJCSAgICAgc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQomIzQzO3sKJiM0MzsJc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0OwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtsb2NhbC0mZ3Q7cnhfbGlzdHNfbG9jayk7CiYjNDM7CW1hY19wa3QgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwocnhfbGlzdCwKJiM0MzsJCQkJCSAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7CiYjNDM7CWlmIChtYWNfcGt0KSB7CiYjNDM7CQlsaXN0X2RlbCgmYW1wO21hY19wa3QtJmd0O25vZGUpOwomIzQzOwkJaWYgKCFsaXN0X2VtcHR5KHJ4X2xpc3QpKQomIzQzOwkJCXF1ZXVlX3dvcmsobG9jYWwtJmd0O21hY193cSwgd29yayk7CiYjNDM7CX0KJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtsb2NhbC0mZ3Q7cnhfbGlzdHNfbG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiBtYWNfcGt0OwomIzQzO30KJiM0MzsKIHZvaWQgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCA9CiAJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCwgcnhfYmVhY29uX3dvcmspOwogCXN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqbWFjX3BrdDsKIAotCW1hY19wa3QgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmFtcDtsb2NhbC0mZ3Q7cnhfYmVhY29uX2xpc3QsCi0JCQkJCSAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7CiYjNDM7CW1hY19wa3QgPSBtYWM4MDIxNTRfcnhfZGVxdWV1ZShsb2NhbCwgJmFtcDtsb2NhbC0mZ3Q7cnhfYmVhY29uX2xpc3QsIHdvcmspOwogCWlmICghbWFjX3BrdCkKIAkJcmV0dXJuOwogCiAJbWFjODAyMTU0X3Byb2Nlc3NfYmVhY29uKGxvY2FsLCBtYWNfcGt0LSZndDtza2IsIG1hY19wa3QtJmd0O3BhZ2UsIG1hY19wa3QtJmd0O2NoYW5uZWwpOwogCi0JbGlzdF9kZWwoJmFtcDttYWNfcGt0LSZndDtub2RlKTsKIAlrZnJlZV9za2IobWFjX3BrdC0mZ3Q7c2tiKTsKJiM0MzsJbmV0ZGV2X3B1dChtYWNfcGt0LSZndDtzZGF0YS0mZ3Q7ZGV2LCAmYW1wO21hY19wa3QtJmd0O2Rldl90cmFja2VyKTsKIAlrZnJlZShtYWNfcGt0KTsKIH0KIApAQCAtNzYsOCAmIzQzOzk1LDcgQEAgdm9pZCBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXU4IG1hY19jbWQ7CiAJaW50IHJjOwogCi0JbWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmYW1wO2xvY2FsLSZndDtyeF9tYWNfY21kX2xpc3QsCi0JCQkJCSAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7CiYjNDM7CW1hY19wa3QgPSBtYWM4MDIxNTRfcnhfZGVxdWV1ZShsb2NhbCwgJmFtcDtsb2NhbC0mZ3Q7cnhfbWFjX2NtZF9saXN0LCB3b3JrKTsKIAlpZiAoIW1hY19wa3QpCiAJCXJldHVybjsKIApAQCAtMTIzLDggJiM0MzsxNDEsOCBAQCB2b2lkIG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJfQogCiBvdXQ6Ci0JbGlzdF9kZWwoJmFtcDttYWNfcGt0LSZndDtub2RlKTsKIAlrZnJlZV9za2IobWFjX3BrdC0mZ3Q7c2tiKTsKJiM0MzsJbmV0ZGV2X3B1dChtYWNfcGt0LSZndDtzZGF0YS0mZ3Q7ZGV2LCAmYW1wO21hY19wa3QtJmd0O2Rldl90cmFja2VyKTsKIAlrZnJlZShtYWNfcGt0KTsKIH0KIApAQCAtMjIxLDggJiM0MzsyMzksMTEgQEAgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCW1hY19wa3QtJmd0O3NkYXRhID0gc2RhdGE7CiAJCW1hY19wa3QtJmd0O3BhZ2UgPSBzZGF0YS0mZ3Q7bG9jYWwtJmd0O3NjYW5fcGFnZTsKIAkJbWFjX3BrdC0mZ3Q7Y2hhbm5lbCA9IHNkYXRhLSZndDtsb2NhbC0mZ3Q7c2Nhbl9jaGFubmVsOwomIzQzOwkJbmV0ZGV2X2hvbGQoc2RhdGEtJmd0O2RldiwgJmFtcDttYWNfcGt0LSZndDtkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7CiYjNDM7CQlzcGluX2xvY2tfYmgoJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwogCQlsaXN0X2FkZF90YWlsKCZhbXA7bWFjX3BrdC0mZ3Q7bm9kZSwgJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X2JlYWNvbl9saXN0KTsKIAkJcXVldWVfd29yayhzZGF0YS0mZ3Q7bG9jYWwtJmd0O21hY193cSwgJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X2JlYWNvbl93b3JrKTsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7c2RhdGEtJmd0O2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKIAkJcmV0dXJuIE5FVF9SWF9TVUNDRVNTOwogCiAJY2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfTUFDX0NNRDoKQEAgLTIzMyw4ICYjNDM7MjU0LDExIEBAIGllZWU4MDIxNTRfc3ViaWZfZnJhbWUoc3RydWN0IGllZWU4MDIxNTRfc3ViX2lmX2RhdGEgKnNkYXRhLAogCiAJCW1hY19wa3QtJmd0O3NrYiA9IHNrYl9nZXQoc2tiKTsKIAkJbWFjX3BrdC0mZ3Q7c2RhdGEgPSBzZGF0YTsKJiM0MzsJCW5ldGRldl9ob2xkKHNkYXRhLSZndDtkZXYsICZhbXA7bWFjX3BrdC0mZ3Q7ZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpOwomIzQzOwkJc3Bpbl9sb2NrX2JoKCZhbXA7c2RhdGEtJmd0O2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKIAkJbGlzdF9hZGRfdGFpbCgmYW1wO21hY19wa3QtJmd0O25vZGUsICZhbXA7c2RhdGEtJmd0O2xvY2FsLSZndDtyeF9tYWNfY21kX2xpc3QpOwogCQlxdWV1ZV93b3JrKHNkYXRhLSZndDtsb2NhbC0mZ3Q7bWFjX3dxLCAmYW1wO3NkYXRhLSZndDtsb2NhbC0mZ3Q7cnhfbWFjX2NtZF93b3JrKTsKJiM0MzsJCXNwaW5fdW5sb2NrX2JoKCZhbXA7c2RhdGEtJmd0O2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKIAkJcmV0dXJuIE5FVF9SWF9TVUNDRVNTOwogCiAJY2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfQUNLOgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjE1NC9zY2FuLmMgYi9uZXQvbWFjODAyMTU0L3NjYW4uYwppbmRleCAwMDUzMzhmODliNzVlLi5jM2M2MWViZGUxNTY4IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTU0L3NjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTU0L3NjYW4uYwpAQCAtMTA1LDEwICYjNDM7MTA1LDE2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbWFjODAyMTU0X3NjYW5fZ2V0X2NoYW5uZWxfdGltZSh1OCBkdXJhdGlvbl9vcmRlciwKIHN0YXRpYyB2b2lkIG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyhzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwpCiB7CiAJc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0LCAqdG1wOwomIzQzOwlMSVNUX0hFQUQobWFjX3BrdF9saXN0KTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtYWNfcGt0LCB0bXAsICZhbXA7bG9jYWwtJmd0O3J4X2JlYWNvbl9saXN0LCBub2RlKSB7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKJiM0MzsJbGlzdF9zcGxpY2VfaW5pdCgmYW1wO2xvY2FsLSZndDtyeF9iZWFjb25fbGlzdCwgJmFtcDttYWNfcGt0X2xpc3QpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1hY19wa3QsIHRtcCwgJmFtcDttYWNfcGt0X2xpc3QsIG5vZGUpIHsKIAkJbGlzdF9kZWwoJmFtcDttYWNfcGt0LSZndDtub2RlKTsKIAkJa2ZyZWVfc2tiKG1hY19wa3QtJmd0O3NrYik7CiYjNDM7CQluZXRkZXZfcHV0KG1hY19wa3QtJmd0O3NkYXRhLSZndDtkZXYsICZhbXA7bWFjX3BrdC0mZ3Q7ZGV2X3RyYWNrZXIpOwogCQlrZnJlZShtYWNfcGt0KTsKIAl9CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNTIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1NjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSA4MDIuMTUuNCBNQUMgTGF5ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gdGhlIGBuZXQvbWFjODAyMTU0L2Agc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYGllZWU4MDIxNTRfaS5oYCwgYG1haW4uY2AsIGByeC5jYCwgYHNjYW4uY2AsIGFuZCBgaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBicmVhayBkb3duIHRoZSBjaGFuZ2VzIGFuZCB1bmRlcnN0YW5kIHRoZWlyIGltcGxpY2F0aW9ucyBmb3IgY29uY3VycmVuY3kgYW5kIGRldmljZSB0cmFja2luZy4KCkZpcnN0LCBgY2ZnODAyMTU0X21hY19wa3RgIGhhcyB0aGlzIGBuZXRkZXZpY2VfdHJhY2tlciBkZXZfdHJhY2tlcjtgIGFkZGVkLiBUaGlzIHN1Z2dlc3RzIHRoZXkgYXJlIGluY29ycG9yYXRpbmcgYSBkZXZpY2UgdHJhY2tpbmcgbWVjaGFuaXNtIHdpdGhpbiB0aGUgcGFja2V0IHN0cnVjdHVyZSwgcHJvYmFibHkgZm9yIHJlZmVyZW5jZSBjb3VudGluZyBvciBsaWZlY3ljbGUgbWFuYWdlbWVudCwgd2hpY2ggaXMgaW1wb3J0YW50LgoKVGhlbiwgaW4gYGllZWU4MDIxNTRfbG9jYWxgIHRoZXJl4oCZcyBhIG5ldyBgc3BpbmxvY2tfdCByeF9saXN0c19sb2NrO2AuIEFoYSEgVGhpcyBpcyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLCBjbGVhcmx5IGFpbWluZyB0byBwcm90ZWN0IGNvbmN1cnJlbnQgYWNjZXNzIHRvIGByeF9iZWFjb25fbGlzdGAgYW5kIGByeF9tYWNfY21kX2xpc3RgLiBUaGUgYHNwaW5fbG9ja19pbml0YCBpbiBgbWFpbi5jYCBjb25maXJtcyB0aGlzLiBUaGlzIGlzIGdvb2QgdG8gc2VlOyBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGluIG5ldHdvcmsgc3RhY2tzIGFyZSBwcmltZSB0YXJnZXRzIGZvciByYWNlIGNvbmRpdGlvbnMsIHNvIGV4cGxpY2l0IGxvY2tpbmcgaXMgYSBuZWNlc3NpdHkuCgpUaGUgYHJ4LmNgIGNoYW5nZXMgYXJlIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYG1hYzgwMjE1NF9yeF9kZXF1ZXVlYCBpbXBsaWVzIGEgbmV3IG1ldGhvZCBmb3IgaGFuZGxpbmcgcmVjZWl2ZWQgcGFja2V0cywgYW5kIHRoZSB1c2Ugb2YgdGhlIGByeF9saXN0c19sb2NrYCB3aXRoaW4gdGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCB0aGUgdXBkYXRlcyB0byBgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJgIGFuZCBgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyYCB0byB1c2UgaXQsIHNvbGlkaWZpZXMgdGhlIGludGVudGlvbiBvZiB0aHJlYWQtc2FmZXR5LiBUaGUgYWRkaXRpb24gb2YgYGRldl90cmFja2VyYCBpbiB0aGVzZSB3b3JrZXJzIGlzIGxvZ2ljYWwuIEkgY2FuIHNlZSB0aGUgbGlzdCBtYW5hZ2VtZW50IGFuZCBwYWNrZXQgbGlmZWN5Y2xlIGFyZSBub3cgdGlnaHRseSBjb250cm9sbGVkIHdpdGhpbiB0aGUgbG9ja2luZyBjb250ZXh0LiBBbHNvLCB0aGUgYG5ldGRldl9ob2xkYCB1c2FnZSBpbiBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAgaW5kaWNhdGVzIGRldmljZSByZWZlcmVuY2UgdHJhY2tpbmcsIHRpZWQgdG8gdGhlIGBkZXZfdHJhY2tlcmAuCgpGaW5hbGx5LCB0aGUgdXBkYXRlcyB0byBgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zYCBpbiBgc2Nhbi5jYCByZWluZm9yY2UgdGhlIHNhbWUgcGF0dGVybjogbGlzdCBsb2NraW5nIGFuZCBkZXZpY2UgdHJhY2tlciBoYW5kbGluZy4gVGhleSYjMzk7cmUgbWFraW5nIGEgZ29vZCBlZmZvcnQgdG8gZW5zdXJlIGNvaGVyZW5jZSB3aGVuIG1vdmluZyBkYXRhIGJldHdlZW4gbGlzdHMgYW5kIHRocmVhZHMuCgpOb3csIGFzIGEgbmV4dCBzdGVwLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZnV6emluZyBhdHRhY2sgc3VyZmFjZS4gSXQgbG9va3MgbGlrZSBgbWFjODAyMTU0YCBoYXMgbXVsdGlwbGUgaW50ZXJmYWNlcyBmb3IgaW50ZXJhY3Rpb24sIGluY2x1ZGluZyB0aGUgYG1hYzgwMjE1NF9od3NpbWAsIG5ldGxpbmssIDZMb1dQQU4sIGFuZCBzb2NrZXRzLiBUaGF0JiMzOTtzIGdvb2Qg4oCTIHBsZW50eSBvZiBlbnRyeSBwb2ludHMgZm9yIHZ1bG5lcmFiaWxpdHkgcmVzZWFyY2ggYW5kLCBpbXBvcnRhbnRseSwgU3l6a2FsbGVyIGlzIGFscmVhZHkgZnV6emluZyBpdC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgdG8gc2VlIGlmIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0IG9yIHJlcXVpcmUgc3BlY2lmaWMga2VybmVsIGJ1aWxkIG9wdGlvbnMuIFRoaXMgc291bmRzIHByb21pc2luZywgYW5kIEkmIzM5O2xsIG5lZWQgdG8gZXZhbHVhdGUgdGhlIHBvdGVudGlhbCBmb3IgcmFjZSBjb25kaXRpb25zIHdpdGhpbiB0aGUgcHJvdGVjdGVkIGNyaXRpY2FsIHNlY3Rpb25zLiBJIGV4cGVjdCB0aGVyZSB0byBiZSBhIGdvb2QgYXR0YWNrIHN1cmZhY2UsIEkmIzM5O2xsIG1vdmUgb24gdG8gYSBsaW5lLWJ5LWxpbmUgcmV2aWV3IG9mIHRoZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxNTQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTU0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxNTQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L21hYzgwMjE1NC9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjE1NFxubmV0L21hYzgwMjE1NC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjE1LjQgU29mdCBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxNTQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjczNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgRGVwZW5kZW5jeSBEZWVwIERpdmUqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYG5ldC9tYWM4MDIxNTRgIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IG1vdmUgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIGBLY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBmaW5kIGFsbCB0aGUganVpY3kgZGV0YWlscyBhYm91dCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gYWZ0ZXIgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBkaWZmZXJlbnQgZmVhdHVyZXMsIG9wdGlvbnMsIGFuZCBwb3RlbnRpYWxseSBvdGhlciBzdWJzeXN0ZW1zLiBUaGlzIGlzIHRoZSBxdWlja2VzdCB3YXkgdG8gdW5kZXJzdGFuZCB3aGF0IGVuYWJsaW5nIG9yIGRpc2FibGluZyBhIHBhcnRpY3VsYXIgTUFDODAyMTU0IGNvbXBvbmVudCBhY3R1YWxseSAqZG9lcyogaW4gdGhlIGdyYW5kIHNjaGVtZSBvZiB0aGUga2VybmVsIGJ1aWxkLiBJJiMzOTttIHRoaW5raW5nIEkgY2FuIHF1aWNrbHkgc2VlIHdoYXQgb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcyBpdCByZWxpZXMgb24sIGFuZCBwZXJoYXBzIGlkZW50aWZ5IHBvdGVudGlhbCBjb25mbGljdHMgb3IgYXJlYXMgd2hlcmUgSSBuZWVkIHRvIHBheSBleHRyYSBhdHRlbnRpb24uIFRpbWUgdG8gZ2V0IHRvIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgYEtjb25maWdgIHJldmVhbHMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxNTQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNQUM4MDIxNTRcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTUuNCBTb2Z0IE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjE1NClcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSUVFRTgwMjE1NFxuICAgNTpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuICAgNjpcdFx0c2VsZWN0IENSWVBUT1xuICAgNzpcdFx0c2VsZWN0IENSWVBUT19BVVRIRU5DXG4gICA4Olx0XHRzZWxlY3QgQ1JZUFRPX0NDTVxuICAgOTpcdFx0c2VsZWN0IENSWVBUT19DVFJcbiAgMTA6XHRcdHNlbGVjdCBDUllQVE9fQUVTXG4gIDExOlx0XHRoZWxwXG4gIDEyOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGhhcmR3YXJlIGluZGVwZW5kZW50IElFRUUgODAyLjE1LjRcbiAgMTM6XHRcdCAgbmV0d29ya2luZyBzdGFjayBmb3IgU29mdE1BQyBkZXZpY2VzICh0aGUgb25lcyBpbXBsZW1lbnRpbmdcbiAgMTQ6XHRcdCAgb25seSBQSFkgbGV2ZWwgb2YgSUVFRSA4MDIuMTUuNCBzdGFuZGFyZCkuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIE5vdGU6IHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbmVpdGhlciBjZXJ0aWZpZWQsIG5vciBmZWF0dXJlXG4gIDE3Olx0XHQgIGNvbXBsZXRlISBDb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zIGhhc24mIzM5O3RcbiAgMTg6XHRcdCAgYmVlbiB0ZXN0ZWQgeWV0IVxuICAxOTpcdFxuICAyMDpcdFx0ICBJZiB5b3UgcGxhbiB0byB1c2UgSGFyZE1BQyBJRUVFIDgwMi4xNS40IGRldmljZXMsIHlvdSBjYW5cbiAgMjE6XHRcdCAgc2F5IE4gaGVyZS4gQWx0ZXJuYXRpdmVseSB5b3UgY2FuIHNheSBNIHRvIGNvbXBpbGUgaXQgYXNcbiAgMjI6XHRcdCAgbW9kdWxlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMDUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBJRUVFIDgwMi4xNS40IExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBicm9hZGVyIGNvbnRleHQgaGVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgSUVFRSA4MDIuMTUuNCBjb25maWd1cmF0aW9uIGFuZCBkcml2ZXIgc3RydWN0dXJlLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBgbmV0L2llZWU4MDIxNTQvS2NvbmZpZ2AgZmlsZSBzZWVtcyBsaWtlIGEgbG9naWNhbCBmaXJzdCBzdG9wLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgaGlnaC1sZXZlbCB2aWV3IG9mIHRoZSBjb25maWd1cmFibGUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGF0IG5ldHdvcmtpbmcgYXJlYS4gQWx0ZXJuYXRpdmVseSwgYGRyaXZlcnMvbmV0L2llZWU4MDIxNTQvYCBtaWdodCBiZSBmcnVpdGZ1bCwgYXMgdGhhdCYjMzk7cyB3aGVyZSB0aGUgYWN0dWFsIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgcmVzaWRlLiBJJiMzOTttIGhvcGluZyB0byBpZGVudGlmeSByZWxhdGVkIGNvbXBvbmVudHMuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhpbmdzIGxpa2UgdGhlIG92ZXJhbGwgSUVFRSA4MDIuMTUuNCBzdXBwb3J0IGFuZCBhbnkgc2ltdWxhdGlvbi1yZWxhdGVkIG1vZHVsZXMsIHBlcmhhcHMgc29tZXRoaW5nIGxpa2UgYE1BQzgwMjE1NF9IV1NJTWAuIEkgbmVlZCB0byBlbnN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgcmVsZXZhbnQgbW9kdWxlcywgdGhhdCBwZXJoYXBzIHByb3ZpZGUgc29tZSBpbnNpZ2h0LiBUaGlzIHF1aWNrIHN3ZWVwIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHNlbnNlIG9mIHRoZSBhdmFpbGFibGUgYnVpbGRpbmcgYmxvY2tzIGFuZCB3aGljaCBvbmVzIGFyZSBwb3RlbnRpYWxseSBrZXkgdG8gdGhlIG5leHQgcGhhc2Ugb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSUVFRTgwMjE1NCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pZWVlODAyMTU0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pZWVlODAyMTU0LzZsb3dwYW4vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9LY29uZmlnOjI6Y29uZmlnIElFRUU4MDIxNTRfNkxPV1BBTlxubmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDs2bG93cGFuIHN1cHBvcnQgb3ZlciBJRUVFIDgwMi4xNS40XCYjMzQ7XG4tLVxubmV0L2llZWU4MDIxNTQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L2llZWU4MDIxNTQvS2NvbmZpZzoyOm1lbnVjb25maWcgSUVFRTgwMjE1NFxubmV0L2llZWU4MDIxNTQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SUVFRSBTdGQgODAyLjE1LjQgTG93LVJhdGUgV2lyZWxlc3MgUGVyc29uYWwgQXJlYSBOZXR3b3JrcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2llZWU4MDIxNTQvS2NvbmZpZz0xND1pZiBJRUVFODAyMTU0XG5uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTE1LVxubmV0L2llZWU4MDIxNTQvS2NvbmZpZzoxNjpjb25maWcgSUVFRTgwMjE1NF9OTDgwMjE1NF9FWFBFUklNRU5UQUxcbm5ldC9pZWVlODAyMTU0L0tjb25maWctMTctXHRib29sIFwmIzM0O0lFRUUgODAyLjE1LjQgZXhwZXJpbWVudGFsIG5ldGxpbmsgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pZWVlODAyMTU0L0tjb25maWctMjAtXG5uZXQvaWVlZTgwMjE1NC9LY29uZmlnOjIxOmNvbmZpZyBJRUVFODAyMTU0X1NPQ0tFVFxubmV0L2llZWU4MDIxNTQvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O0lFRUUgODAyLjE1LjQgc29ja2V0IGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwODcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgbWFjODAyMTU0X2h3c2ltYCBNb2R1bGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb3IgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBtYWM4MDIxNTRfaHdzaW1gIGNvbXBvbmVudC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIGl0cyBuYW1lLCBpcyB0aGF0IGl0JiMzOTtzIHByb2JhYmx5IHJlbGF0ZWQgdG8gaGFyZHdhcmUgc2ltdWxhdGlvbiBmb3IgODAyLjE1LjQgbmV0d29ya2luZy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgc3RhbmRhcmQga2VybmVsIGRyaXZlciBsb2NhdGlvbnMuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2VzOiAgdGhlIGBkcml2ZXJzL25ldC9pZWVlODAyMTU0L2AgYW5kIGBkcml2ZXJzL25ldC9tYWM4MDIxNTQvYCBkaXJlY3Rvcmllcy4gSXQmIzM5O3MgYWxzbyBwb3NzaWJsZSBpdCYjMzk7cyBiZWVuIG1vdmVkIGludG8ganVzdCBgbmV0L21hYzgwMjE1NC9gIGF0IHNvbWUgcG9pbnQsIHNvIEkgc2hvdWxkIGJlIHN1cmUgdG8gY2hlY2sgdGhlcmUgYXMgd2VsbC4gSSYjMzk7bSBhc3N1bWluZyBpdCB3aWxsIGxpa2VseSBiZSBhIG1vZHVsZSBvciBwYXJ0IG9mIGEgbGFyZ2VyIG1vZHVsZSwgYW5kIEkmIzM5O20gaG9waW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBjb25zaXN0ZW50IGVub3VnaCB0byBtYWtlIHRoaXMgcXVpY2suIEhvcGVmdWxseSwgdGhpcyBpc24mIzM5O3QgYSBjdXN0b20gaW1wbGVtZW50YXRpb24gYnVyaWVkIGRlZXAgd2l0aGluIGEgcHJvamVjdC1zcGVjaWZpYyBwYXRoLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDODAyMTU0X0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz0zMz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqbWFjODAyMTU0aHdzaW1fZGV2O1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zNC1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6MzU6LyogTUFDODAyMTU0X0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM2LXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHk7XG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz0zNDU9c3RhdGljIGludCBod3NpbV9kZWxfcmFkaW9fbmwoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM0OS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6MzUwOlx0aWYgKCFpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSlcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMzUxLVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMzUyLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozNTM6XHRpZHggPSBubGFfZ2V0X3UzMihpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM1NC1cbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTM2OD1zdGF0aWMgaW50IGFwcGVuZF9yYWRpb19tc2coc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGh3c2ltX3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMzc0LVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozNzU6XHRyZXQgPSBubGFfcHV0X3UzMihza2IsIE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lELCBwaHktXHUwMDNlaWR4KTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMzc2LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM4NS1cdG5sX2VkZ2VzID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKHNrYixcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6Mzg2Olx0XHRcdFx0XHQgTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRVMpO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zODctXHRpZiAoIW5sX2VkZ2VzKSB7XG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zOTMtXHRcdG5sX2VkZ2UgPSBubGFfbmVzdF9zdGFydF9ub2ZsYWcoc2tiLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozOTQ6XHRcdFx0XHRcdFx0TUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM5NS1cdFx0aWYgKCFubF9lZGdlKSB7XG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00MDAtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjQwMTpcdFx0cmV0ID0gbmxhX3B1dF91MzIoc2tiLCBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lELFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00MDItXHRcdFx0XHQgIGUtXHUwMDNlZW5kcG9pbnQtXHUwMDNlaWR4KTtcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTQxMC1cdFx0ZWluZm8gPSByY3VfZGVyZWZlcmVuY2UoZS1cdTAwM2VpbmZvKTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NDExOlx0XHRyZXQgPSBubGFfcHV0X3U4KHNrYiwgTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9MUUksXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTQxMi1cdFx0XHRcdCBlaW5mby1cdTAwM2VscWkpO1xuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9NDI5PXN0YXRpYyBpbnQgaHdzaW1fZ2V0X3JhZGlvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBod3NpbV9waHkgKnBoeSxcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTQzNi1cdGhkciA9IGdlbmxtc2dfcHV0KHNrYiwgcG9ydGlkLCBzZXEsIFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCBmbGFncyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NDM3Olx0XHRcdCAgTUFDODAyMTU0X0hXU0lNX0NNRF9HRVRfUkFESU8pO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00MzgtXHRpZiAoIWhkcilcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTQ1Nj1zdGF0aWMgaW50IGh3c2ltX2dldF9yYWRpb19ubChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNDYxLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo0NjI6XHRpZiAoIWluZm8tXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSURdKVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00NjMtXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo0NjQ6XHRpZHggPSBubGFfZ2V0X3UzMihpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTQ2NS1cbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTUyNj1zdGF0aWMgc3RydWN0IGh3c2ltX3BoeSAqaHdzaW1fZ2V0X3JhZGlvX2J5X2lkKHVpbnQzMl90IGlkeClcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTUzNy1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBod3NpbV9lZGdlX3BvbGljeVtNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX01BWCAmIzQzOyAxXSA9IHtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTM5Olx0W01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSURdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTQwOlx0W01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTFFJXSA9IHsgLnR5cGUgPSBOTEFfVTggfSxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNTQxLX07XG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz01Nzc9c3RhdGljIGludCBod3NpbV9uZXdfZWRnZV9ubChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01Nzgte1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo1Nzk6XHRzdHJ1Y3QgbmxhdHRyICplZGdlX2F0dHJzW01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTUFYICYjNDM7IDFdO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01ODAtXHRzdHJ1Y3QgaHdzaW1fcGh5ICpwaHlfdjAsICpwaHlfdjE7XG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01ODMtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjU4NDpcdGlmICghaW5mby1cdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRF0gfHxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTg1Olx0ICAgICFpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0VER0VdKVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01ODYtXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01ODctXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjU4ODpcdGlmIChubGFfcGFyc2VfbmVzdGVkX2RlcHJlY2F0ZWQoZWRnZV9hdHRycywgTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVgsIGluZm8tXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0sIGh3c2ltX2VkZ2VfcG9saWN5LCBOVUxMKSlcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNTg5LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNTkwLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo1OTE6XHRpZiAoIWVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9FTkRQT0lOVF9JRF0pXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU5Mi1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU5My1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTk0Olx0djAgPSBubGFfZ2V0X3UzMihpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjU5NTpcdHYxID0gbmxhX2dldF91MzIoZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lEXSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU5Ni1cbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTYzOT1zdGF0aWMgaW50IGh3c2ltX2RlbF9lZGdlX25sKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0MC17XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY0MTpcdHN0cnVjdCBubGF0dHIgKmVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVggJiM0MzsgMV07XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0Mi1cdHN0cnVjdCBod3NpbV9waHkgKnBoeV92MDtcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0NS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NjQ2Olx0aWYgKCFpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSB8fFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2NDc6XHQgICAgIWluZm8tXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0pXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0OC1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0OS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NjUwOlx0aWYgKG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZChlZGdlX2F0dHJzLCBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX01BWCwgaW5mby1cdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19FREdFXSwgaHdzaW1fZWRnZV9wb2xpY3ksIE5VTEwpKVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NTEtXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NTItXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY1MzpcdGlmICghZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lEXSlcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjU0LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjU1LVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2NTY6XHR2MCA9IG5sYV9nZXRfdTMyKGluZm8tXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSURdKTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NjU3Olx0djEgPSBubGFfZ2V0X3UzMihlZGdlX2F0dHJzW01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSURdKTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjU4LVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9Njg1PXN0YXRpYyBpbnQgaHdzaW1fc2V0X2VkZ2VfbHFpKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY4Ni17XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY4NzpcdHN0cnVjdCBubGF0dHIgKmVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVggJiM0MzsgMV07XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY4OC1cdHN0cnVjdCBod3NpbV9lZGdlX2luZm8gKmVpbmZvLCAqZWluZm9fb2xkO1xuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjkzLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2OTQ6XHRpZiAoIWluZm8tXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSURdIHx8XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY5NTpcdCAgICAhaW5mby1cdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19FREdFXSlcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjk2LVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjk3LVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2OTg6XHRpZiAobmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKGVkZ2VfYXR0cnMsIE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTUFYLCBpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0VER0VdLCBod3NpbV9lZGdlX3BvbGljeSwgTlVMTCkpXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY5OS1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTcwMC1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzAxOlx0aWYgKCFlZGdlX2F0dHJzW01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSURdIHx8XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjcwMjpcdCAgICAhZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0xRSV0pXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTcwMy1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTcwNC1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzA1Olx0djAgPSBubGFfZ2V0X3UzMihpbmZvLVx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjcwNjpcdHYxID0gbmxhX2dldF91MzIoZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lEXSk7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjcwNzpcdGxxaSA9IG5sYV9nZXRfdTgoZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0xRSV0pO1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03MDgtXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NDEtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc0MjovKiBNQUM4MDIxNTRfSFdTSU0gbmV0bGluayBwb2xpY3kgKi9cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzQzLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W01BQzgwMjE1NF9IV1NJTV9BVFRSX01BWCAmIzQzOyAxXSA9IHtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzQ1Olx0W01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc0NjpcdFtNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19FREdFXSA9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc0NzpcdFtNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19FREdFU10gPSB7IC50eXBlID0gTkxBX05FU1RFRCB9LFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NDgtfTtcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTc1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIGh3c2ltX25sX29wc1tdID0ge1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NTItXHR7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc1MzpcdFx0LmNtZCA9IE1BQzgwMjE1NF9IV1NJTV9DTURfTkVXX1JBRElPLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NTQtXHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc1OC1cdHtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzU5Olx0XHQuY21kID0gTUFDODAyMTU0X0hXU0lNX0NNRF9ERUxfUkFESU8sXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc2MC1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzY0LVx0e1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3NjU6XHRcdC5jbWQgPSBNQUM4MDIxNTRfSFdTSU1fQ01EX0dFVF9SQURJTyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzY2LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NzAtXHR7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc3MTpcdFx0LmNtZCA9IE1BQzgwMjE1NF9IV1NJTV9DTURfTkVXX0VER0UsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc3Mi1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzc2LVx0e1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3Nzc6XHRcdC5jbWQgPSBNQUM4MDIxNTRfSFdTSU1fQ01EX0RFTF9FREdFLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NzgtXHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc4Mi1cdHtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzgzOlx0XHQuY21kID0gTUFDODAyMTU0X0hXU0lNX0NNRF9TRVRfRURHRSxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzg0LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz03OTA9c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseSBfX3JvX2FmdGVyX2luaXQgPSB7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc5MTpcdC5uYW1lID0gXCYjMzQ7TUFDODAyMTU0X0hXU0lNXCYjMzQ7LFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTItXHQudmVyc2lvbiA9IDEsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc5MzpcdC5tYXhhdHRyID0gTUFDODAyMTU0X0hXU0lNX0FUVFJfTUFYLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTQtXHQucG9saWN5ID0gaHdzaW1fZ2VubF9wb2xpY3ksXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTctXHQubl9zbWFsbF9vcHMgPSBBUlJBWV9TSVpFKGh3c2ltX25sX29wcyksXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc5ODpcdC5yZXN2X3N0YXJ0X29wID0gTUFDODAyMTU0X0hXU0lNX0NNRF9ORVdfRURHRSAmIzQzOyAxLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTktXHQubWNncnBzID0gaHdzaW1fbWNncnBzLFxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9ODE0PXN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBzdHJ1Y3QgaHdzaW1fcGh5ICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy04MjMtXHRkYXRhID0gZ2VubG1zZ19wdXQobWNhc3Rfc2tiLCAwLCAwLCBcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgMCxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6ODI0Olx0XHRcdCAgIE1BQzgwMjE1NF9IV1NJTV9DTURfTkVXX1JBRElPKTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtODI1LVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MTojaWZuZGVmIF9fTUFDODAyMTU0X0hXU0lNX0hcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjojZGVmaW5lIF9fTUFDODAyMTU0X0hXU0lNX0hcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMy1cbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTUtICpcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NjogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9VTlNQRUM6IHVuc3BlY2lmaWVkIGNvbW1hbmQgdG8gY2F0Y2ggZXJyb3JcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NzogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9HRVRfUkFESU86IGZldGNoIGluZm9ybWF0aW9uIGFib3V0IGV4aXN0aW5nIHJhZGlvc1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo4OiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX1NFVF9SQURJTzogY2hhbmdlIHJhZGlvIHBhcmFtZXRlcnMgZHVyaW5nIHJ1bnRpbWVcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6OTogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9ORVdfUkFESU86IGNyZWF0ZSBhIG5ldyByYWRpbyB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTEwLSAqXHRyZXR1cm5zIHRoZSByYWRpbyBJRCAoXHUwMDNlPSAwKSBvciBuZWdhdGl2ZSBvbiBlcnJvcnMsIGlmIHN1Y2Nlc3NmdWxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMTEtICpcdHRoZW4gbXVsdGljYXN0IHRoZSByZXN1bHRcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MTI6ICogQE1BQzgwMjE1NF9IV1NJTV9DTURfREVMX1JBRElPOiBkZXN0cm95IGEgcmFkaW8sIHJlcGx5IGlzIG11bHRpY2FzdGVkXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjEzOiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX0dFVF9FREdFOiBmZXRjaCBpbmZvcm1hdGlvbiBhYm91dCBleGlzdGluZyBlZGdlc1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoxNDogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9TRVRfRURHRTogY2hhbmdlIGVkZ2UgcGFyYW1ldGVycyBkdXJpbmcgcnVudGltZVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoxNTogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9ERUxfRURHRTogZGVsZXRlIGVkZ2VzIGJldHdlZW4gcmFkaW9zXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjE2OiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19FREdFOiBjcmVhdGUgYSBuZXcgZWRnZSBiZXR3ZWVuIHR3byByYWRpb3NcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MTc6ICogQF9fTUFDODAyMTU0X0hXU0lNX0NNRF9NQVg6IGVudW0gbGltaXRcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMTgtICovXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oPTE5PWVudW0ge1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoyMDpcdE1BQzgwMjE1NF9IV1NJTV9DTURfVU5TUEVDLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC0yMS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjI6XHRNQUM4MDIxNTRfSFdTSU1fQ01EX0dFVF9SQURJTyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjM6XHRNQUM4MDIxNTRfSFdTSU1fQ01EX1NFVF9SQURJTyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjQ6XHRNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19SQURJTyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjU6XHRNQUM4MDIxNTRfSFdTSU1fQ01EX0RFTF9SQURJTyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMjYtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjI3Olx0TUFDODAyMTU0X0hXU0lNX0NNRF9HRVRfRURHRSxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6Mjg6XHRNQUM4MDIxNTRfSFdTSU1fQ01EX1NFVF9FREdFLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoyOTpcdE1BQzgwMjE1NF9IV1NJTV9DTURfREVMX0VER0UsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjMwOlx0TUFDODAyMTU0X0hXU0lNX0NNRF9ORVdfRURHRSxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMzEtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjMyOlx0X19NQUM4MDIxNTRfSFdTSU1fQ01EX01BWCxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMzMtfTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMzQtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjM1OiNkZWZpbmUgTUFDODAyMTU0X0hXU0lNX0NNRF9NQVggKF9fTUFDODAyMTU0X0hXU0lNX01BWCAtIDEpXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTM2LVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMzgtICpcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6Mzk6ICogQE1BQzgwMjE1NF9IV1NJTV9BVFRSX1VOU1BFQzogdW5zcGVjaWZpZWQgYXR0cmlidXRlIHRvIGNhdGNoIGVycm9yXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjQwOiAqIEBNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRDogdTMyIGF0dHJpYnV0ZSB0byBpZGVudGlmeSB0aGUgcmFkaW9cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NDE6ICogQE1BQzgwMjE1NF9IV1NJTV9BVFRSX0VER0U6IG5lc3RlZCBhdHRyaWJ1dGUgb2YgZWRnZXNcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NDI6ICogQE1BQzgwMjE1NF9IV1NJTV9BVFRSX0VER0VTOiBsaXN0IGlmIG5lc3RlZCBhdHRyaWJ1dGVzIHdoaWNoIGNvbnRhaW5zIHRoZVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC00My0gKlx0ZWRnZSBpbmZvcm1hdGlvbiBhY2NvcmRpbmcgdGhlIHJhZGlvIGlkXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjQ0OiAqIEBfX01BQzgwMjE1NF9IV1NJTV9BVFRSX01BWDogZW51bSBsaW1pdFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC00NS0gKi9cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg9NDY9ZW51bSB7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjQ3Olx0TUFDODAyMTU0X0hXU0lNX0FUVFJfVU5TUEVDLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo0ODpcdE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lELFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo0OTpcdE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0VER0UsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjUwOlx0TUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRVMsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjUxOlx0X19NQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVgsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTUyLX07XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTUzLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo1NDojZGVmaW5lIE1BQzgwMjE1NF9IV1NJTV9BVFRSX01BWCAoX19NQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVggLSAxKVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC01NS1cbi0tXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTU3LSAqXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjU4OiAqIEBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX1VOU1BFQzogdW5zcGVjaWZpZWQgYXR0cmlidXRlIHRvIGNhdGNoIGVycm9yXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjU5OiAqIEBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lEOiByYWRpbyBpZCB3aGVyZSB0aGUgZWRnZSBwb2ludHMgdG9cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NjA6ICogQE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTFFJOiBMUUkgdmFsdWUgd2hpY2ggdGhlIGVuZHBvaW50IHJhZGlvIHdpbGxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNjEtICpcdHJlY2VpdmUgZm9yIHRoaXMgZWRnZVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2MjogKiBAX19NQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVg6IGVudW0gbGltaXRcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNjMtICovXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oPTY0PWVudW0ge1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2NTpcdE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfVU5TUEVDLFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2NjpcdE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSUQsXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjY3Olx0TUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9MUUksXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjY4Olx0X19NQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX01BWCxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNjktfTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNzAtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjcxOiNkZWZpbmUgTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVggKF9fTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVggLSAxKVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC03Mi1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NzM6I2VuZGlmIC8qIF9fTUFDODAyMTU0X0hXU0lNX0ggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyODkKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIE1BQzgwMjE1NCBIYXJkd2FyZSBTaW11bGF0aW9uIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGUgcGxhY2UgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2wgZm9yIHRoZSBNQUM4MDIxNTQgaGFyZHdhcmUgc2ltdWxhdGlvbiBmZWF0dXJlICh0aGF0JiMzOTtzIGBNQUM4MDIxNTRfSFdTSU1gIGlmIG1lbW9yeSBzZXJ2ZXMsIGJ1dCBhIHF1aWNrIGNoZWNrIG5ldmVyIGh1cnRzKSBpcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9pZWVlODAyMTU0L0tjb25maWdgIGZpbGUuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3Mgc3RydWN0dXJlZCBpbiB0aGUgc3RhbmRhcmQgd2F5LCBzbyB0aGUgS2NvbmZpZyBzaG91bGQgZGVmaW5lIGl0cyBjb25kaXRpb25hbCBpbmNsdXNpb24gYW5kIGFueSBkZXBlbmRlbmNpZXMuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIGFuZCB3aGF0IG90aGVyIGZlYXR1cmVzIG9yIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHRpZWQgdG8gaXRzIHVzZS4gSXQgbWlnaHQgc2hlZCBsaWdodCBvbiBob3cgdGhlIHNpbXVsYXRpb24gaXMgaW1wbGVtZW50ZWQgb3IgYW55IGFzc3VtcHRpb25zIG1hZGUgYWJvdXQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYWJzdHJhY3Rpb24uIFRpbWUgdG8gdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbiBhbmQgZ2V0IGEgcHJvcGVyIGxvb2sgYXQgaG93IHRoaXMgc2ltdWxhdGVkIGRldmljZSBpcyBjb250cm9sbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxNTRfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pZWVlODAyMTU0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2MDIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB3b3JraW5nIG9uIHRoaXM6CgoqKkxvY2F0aW5nIHRoZSBLY29uZmlnIEZpbGUgZm9yIDgwMi4xNS40IERyaXZlcnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIEtjb25maWcgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIElFRUUgODAyLjE1LjQgbmV0d29ya2luZyBkcml2ZXJzLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgc3RhbmRhcmQgYXBwcm9hY2ggaW4gdGhlIExpbnV4IGtlcm5lbCB3b3VsZCBiZSB0byBsb29rIHdpdGhpbiB0aGUgcmVsZXZhbnQgZHJpdmVyIGRpcmVjdG9yeS4gSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCYjMzk7cyB1bmRlciBgZHJpdmVycy9uZXQvYCwgYW5kIHNpbmNlIGl0JiMzOTtzIDgwMi4xNS40LCB0aGF0IG5hcnJvd3MgaXQgZG93biB0byBgaWVlZTgwMjE1NGAuIFRoZXJlZm9yZSwgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGBkcml2ZXJzL25ldC9pZWVlODAyMTU0YCBkaXJlY3RvcnkuIFRoZSBLY29uZmlnIGZpbGUgc2hvdWxkIHJlc2lkZSB0aGVyZSwgb3IgcGVyaGFwcyBpbiBhIHN1YmRpcmVjdG9yeSwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgc3Vic3lzdGVtIGlzIHN0cnVjdHVyZWQuIEkmIzM5O2xsIGJlZ2luIGJ5IGp1c3QgbmF2aWdhdGluZyBpbnRvIHRoYXQgZGlyZWN0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pZWVlODAyMTU0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWRmNzI0Mi5jJiMzNDssCiAgICAmIzM0O2F0ODZyZjIzMC5jJiMzNDssCiAgICAmIzM0O2F0ODZyZjIzMC5oJiMzNDssCiAgICAmIzM0O2F0dXNiLmMmIzM0OywKICAgICYjMzQ7YXR1c2IuaCYjMzQ7LAogICAgJiMzNDtjYTgyMTAuYyYjMzQ7LAogICAgJiMzNDtjYzI1MjAuYyYjMzQ7LAogICAgJiMzNDtmYWtlbGIuYyYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfaHdzaW0uYyYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfaHdzaW0uaCYjMzQ7LAogICAgJiMzNDttY3IyMGEuYyYjMzQ7LAogICAgJiMzNDttY3IyMGEuaCYjMzQ7LAogICAgJiMzNDttcmYyNGo0MC5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5OTMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRmluZGluZyB0aGUgTWFjODAyMTU0X2h3c2ltIEtjb25maWcqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIEtjb25maWcgZmlsZSB0aGF0IGRlZmluZXMgb3IgcmVmZXJlbmNlcyB0aGUgYG1hYzgwMjE1NF9od3NpbWAgc3ltYm9sLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBLY29uZmlnIHN0cnVjdHVyZSwgSSYjMzk7bGwgbGlrZWx5IG5lZWQgdG8gc2VhcmNoIHRoZSByZWxldmFudCBzb3VyY2UgY29kZSBkaXJlY3Rvcmllcy4gSSB3b3VsZCB0eXBpY2FsbHkgc3RhcnQgd2l0aCBicm9hZCBzZWFyY2hlcyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgb3Igd2lyZWxlc3Mgc3ViLXN5c3RlbXMuIEkgd291bGQgdXNlIHRvb2xzIGxpa2UgYGZpbmRgIG9yIGBncmVwYCB0byBxdWlja2x5IHBpbnBvaW50IHRoZSBmaWxlLiBUaGlua2luZyBzdHJhdGVnaWNhbGx5LCB0aGUgbmFtZSAmIzM0O21hYzgwMjE1NCYjMzQ7IHN1Z2dlc3RzIElFRUUgODAyLjE1LjQsIHNvIEkgd2lsbCBzdGFydCB0aGVyZSwgbG9va2luZyBmb3IgbGlrZWx5IGNhbmRpZGF0ZSBkaXJlY3RvcmllcyB0aGF0IHdvdWxkIGluY2x1ZGUgdGhpcyBraW5kIG9mIHNpbXVsYXRlZCBoYXJkd2FyZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl0IGlzIGxpa2VseSB0byBiZSB1bmRlciBhIGRyaXZlciBvciBtb2R1bGUmIzM5O3MgZGlyZWN0b3J5LiBPbmNlIEkgZmluZCBhIGxpa2VseSBjYW5kaWRhdGUgZmlsZSwgSSYjMzk7bGwgZXhhbWluZSBpdHMgY29udGVudCB0byB2ZXJpZnkgaWYgYG1hYzgwMjE1NF9od3NpbWAgaXMgYWN0dWFsbHkgZGVmaW5lZCwgb3IsIG1vcmUgbGlrZWx5LCB1c2VkIGFzIGEgZmVhdHVyZSwgb3B0aW9uLCBvciBkZXBlbmRlbmN5IHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEkgd291bGQgYWxzbyBpbnZlc3RpZ2F0ZSBhbnkgZGVwZW5kZW5jaWVzIG9yIHJlbGF0aW9uc2hpcHMgaXQgbWlnaHQgaGF2ZSB0byBvdGhlciBjb25maWd1cmF0aW9ucyBvciBkcml2ZXJzLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUgcmVmZXJlbmNlIGlzIGdvaW5nIHRvIGJlIHdpdGhpbiBhIGBLY29uZmlnYCBmaWxlLCBidXQgSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSB0aGF0IHdpdGggYSBzZWFyY2ggYXMgd2VsbC4gT25jZSBJIGhhdmUgdGhlIGZpbGUgSSBjYW4gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzdXJyb3VuZGluZyBgbWFjODAyMTU0X2h3c2ltYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjODAyMTU0X2h3c2ltJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnPTExND1jb25maWcgSUVFRTgwMjE1NF9IV1NJTVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvS2NvbmZpZy0xMjItXHQgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBUbyBkbyBzbyBzYXkgTSBoZXJlLlxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnOjEyMzpcdCAgVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCAmIzM5O21hYzgwMjE1NF9od3NpbSYjMzk7LlxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfSUVFRTgwMjE1NF9NQ1IyMEEpICYjNDM7PSBtY3IyMGEub1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfSUVFRTgwMjE1NF9IV1NJTSkgJiM0Mzs9IG1hYzgwMjE1NF9od3NpbS5vXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9mYWtlbGIuYz0yNDQ9c3RhdGljIF9faW5pdCBpbnQgZmFrZWxiX2luaXRfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9mYWtlbGIuYy0yNDgtXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L2Zha2VsYi5jOjI0OTpcdHByX3dhcm4oXCYjMzQ7ZmFrZWxiIGRyaXZlciBpcyBtYXJrZWQgYXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBtYWM4MDIxNTRfaHdzaW0hXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvZmFrZWxiLmMtMjUwLVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMjQtI2luY2x1ZGUgXHUwMDNjbmV0L2dlbmV0bGluay5oXHUwMDNlXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjI1OiNpbmNsdWRlIFwmIzM0O21hYzgwMjE1NF9od3NpbS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTI2LVxuLS1cbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9MTA0OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtYWM4MDIxNTRod3NpbV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0xMDUxLVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6MTA1MjpcdFx0XHQubmFtZSA9IFwmIzM0O21hYzgwMjE1NF9od3NpbVwmIzM0OyxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMTA1My1cdH0sXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz0xMDU2PXN0YXRpYyBfX2luaXQgaW50IGh3c2ltX2luaXRfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0xMDYzLVxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzoxMDY0Olx0bWFjODAyMTU0aHdzaW1fZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX3NpbXBsZShcJiMzNDttYWM4MDIxNTRfaHdzaW1cJiMzNDssXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTEwNjUtXHRcdFx0XHRcdFx0XHQgICAgIC0xLCBOVUxMLCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxOTQKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSA4MDIuMTUuNCBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGtlcm5lbCYjMzk7cyA4MDIuMTUuNCBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gemVybyBpbiBvbiBgZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnYCDigJMgc3BlY2lmaWNhbGx5LCBhcm91bmQgbGluZSAxMTQuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIHNwb3QgdG8gc3RhcnQsIGJhc2VkIG9uIG15IHBhc3QgZXhwZXJpZW5jZSB3aXRoIHRoZXNlIHNvcnRzIG9mIGtlcm5lbCBkcml2ZXJzOyBgS2NvbmZpZ2AgZmlsZXMgYXJlIHVzdWFsbHkgc3RydWN0dXJlZCB0byBwdXQgdGhlIG1vc3QgZXNzZW50aWFsIG9wdGlvbnMgZWFybGllci4gSSYjMzk7bSBndWVzc2luZyB0aGF0IGxpbmUgd2lsbCBsZWFkIG1lIGludG8gdGhlIGNvcmUgZmVhdHVyZSBzZWxlY3Rpb25zLCBvciBtYXliZSBhIGhpZ2gtbGV2ZWwgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEl0IGNvdWxkIGJlIGRldmljZSBzcGVjaWZpYy4gRWl0aGVyIHdheSwgdGhpcyBzaG91bGQgYmUgYSBnb29kIGVudHJ5IHBvaW50IHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGJlaW5nIGNvbmZpZ3VyZWQgb3Igd2hhdCBvcHRpb25zIHRoZSBkZXZlbG9wZXIgaXMgb2ZmZXJpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTA1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMDU6XHRcdGRlcGVuZHMgb24gSUVFRTgwMjE1NF9EUklWRVJTIFx1MDAyNlx1MDAyNiBNQUM4MDIxNTRcbiAxMDY6XHRcdGRlcGVuZHMgb24gU1BJXG4gMTA3Olx0XHRoZWxwXG4gMTA4Olx0XHQgIFNheSBZIGhlcmUgdG8gZW5hYmxlIHRoZSBNQ1IyMEEgU1BJIDgwMi4xNS40IHdpcmVsZXNzXG4gMTA5Olx0XHQgIGNvbnRyb2xsZXIuXG4gMTEwOlx0XG4gMTExOlx0XHQgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBUbyBkbyBzbywgc2F5IE0gaGVyZS5cbiAxMTI6XHRcdCAgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCAmIzM5O21jcjIwYSYjMzk7LlxuIDExMzpcdFxuIDExNDpcdGNvbmZpZyBJRUVFODAyMTU0X0hXU0lNXG4gMTE1Olx0XHRkZXBlbmRzIG9uIElFRUU4MDIxNTRfRFJJVkVSUyBcdTAwMjZcdTAwMjYgTUFDODAyMTU0XG4gMTE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxNTRcJiMzNDtcbiAxMTc6XHRcdGhlbHBcbiAxMTg6XHRcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVzdFxuIDExOTpcdFx0ICBJRUVFIDgwMi4xNS40IG5ldHdvcmtpbmcgc3RhY2sgKG1hYzgwMjE1NCkgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBub3RcbiAxMjA6XHRcdCAgbmVlZGVkIGZvciBub3JtYWwgd3BhbiB1c2FnZSBhbmQgaXMgb25seSBmb3IgdGVzdGluZy5cbiAxMjE6XHRcbiAxMjI6XHRcdCAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIFRvIGRvIHNvIHNheSBNIGhlcmUuXG4gMTIzOlx0XHQgIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgJiMzOTttYWM4MDIxNTRfaHdzaW0mIzM5Oy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4MTcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIElFRUU4MDIxNTRfRFJJVkVSUyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYElFRUU4MDIxNTRfRFJJVkVSU2AuIFdoZXJlIGV4YWN0bHkgaXMgdGhpcyB2YXJpYWJsZSBvciBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlIGVzdGFibGlzaGVkPyBVbmRlcnN0YW5kaW5nIGl0cyBkZWZpbml0aW9uIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIHByb2NlZWQgYW55IGZ1cnRoZXIuIEkgbmVlZCB0byBrbm93IHdoYXQgaXQgY29udHJvbHMgb3IgcmVwcmVzZW50cyB3aXRoaW4gdGhlIHN5c3RlbS4gVGhpcyBpcyBhIGZvdW5kYXRpb25hbCBzdGVwLCBhbmQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCBpdCByaWdodCBiZWZvcmUgbWFraW5nIGFueSBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElFRUU4MDIxNTRfRFJJVkVSUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2llZWU4MDIxNTQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L0tjb25maWc6MjptZW51Y29uZmlnIElFRUU4MDIxNTRfRFJJVkVSU1xuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJRUVFIDgwMi4xNS40IGRyaXZlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExMDUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb2RlIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgbW9kaWZpY2F0aW9ucy4gSSBzZWUgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaGF2ZSBiZWVuIHRvdWNoZWQ6CgoqICAgYG1hYzgwMjE1NF9yeF9kZXF1ZXVlYCDigJMgU3RhdGljIGluIGByeC5jYCwgaW50ZXJlc3RpbmcsIHByb2JhYmx5IGEgY3JpdGljYWwgcmVjZWl2ZSBwYXRoIGZ1bmN0aW9uLgoqICAgYG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyYCAmYW1wOyBgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyYCDigJMgQm90aCBpbiBgcnguY2AgYW5kIGRlY2xhcmVkIGluIHRoZSBpbnRlcm5hbCBoZWFkZXIuIFNlZW1zIGxpa2Ugd2UmIzM5O3JlIGxvb2tpbmcgYXQgYXN5bmNocm9ub3VzIGhhbmRsaW5nIG9mIGJlYWNvbnMgYW5kIE1BQyBjb21tYW5kcyBkdXJpbmcgcmVjZXB0aW9uLgoqICAgYGllZWU4MDIxNTRfc3ViaWZfZnJhbWVgIOKAkyBBbHNvIGluIGByeC5jYC4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGluY29taW5nIGZyYW1lIGlzIHByb2Nlc3NlZCwgcG9zc2libHkgZGVwZW5kaW5nIG9uIHRoZSBzdWJpbnRlcmZhY2UuCiogICBgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zYCDigJMgQW5vdGhlciBzdGF0aWMgb25lLCB0aGlzIHRpbWUgaW4gYHNjYW4uY2AuIE9idmlvdXMsIGJlYWNvbi1yZWxhdGVkIGFuZCBxdWV1ZWQsIG1heWJlIHJlbGF0ZWQgdG8gc2NhbiByZXF1ZXN0cyBvciBiZWFjb24gbWFuYWdlbWVudCBkdXJpbmcgc2Nhbm5pbmcuCiogICBgaWVlZTgwMjE1NF9hbGxvY19od2Ag4oCTIEluIGBtYWluLmNgLCBhbmQgSSYjMzk7bSBndWVzc2luZyBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgaGFyZHdhcmUgYWxsb2NhdGlvbi9pbml0aWFsaXphdGlvbi4KCk5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZXNlIGNoYW5nZWQgZnVuY3Rpb25zLiBHaXZlbiB0aGF0IGBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnNgIGlzIGludm9sdmVkLCBJIHdhbnQgdG8gc2VlIGlmIGBtYWM4MDIxNTRfc2Nhbl9yZXFgIChvciBhbnkgb2YgaXRzIGNhbGxlcnMpIGFyZSBpbXBhY3RlZCwgb3IgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBjYWxsZWQgYG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29uc2AuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgaW1wYWN0IGFuZCBwdXJwb3NlIG9mIHRoZSBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjE1NCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTU0L3NjYW4uYz05NT1zdGF0aWMgdW5zaWduZWQgaW50IG1hYzgwMjE1NF9zY2FuX2dldF9jaGFubmVsX3RpbWUodTggZHVyYXRpb25fb3JkZXIsXG4tLVxubmV0L21hYzgwMjE1NC9zY2FuLmMtMTA0LVxubmV0L21hYzgwMjE1NC9zY2FuLmM6MTA1OnN0YXRpYyB2b2lkIG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyhzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwpXG5uZXQvbWFjODAyMTU0L3NjYW4uYy0xMDYte1xuLS1cbm5ldC9tYWM4MDIxNTQvc2Nhbi5jPTE4MD12b2lkIG1hYzgwMjE1NF9zY2FuX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L21hYzgwMjE1NC9zY2FuLmMtMTk5LVx0c3luY2hyb25pemVfbmV0KCk7XG5uZXQvbWFjODAyMTU0L3NjYW4uYzoyMDA6XHRtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnMobG9jYWwpO1xubmV0L21hYzgwMjE1NC9zY2FuLmMtMjAxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjEwNwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBDYWxsZXIgb2YgYGllZWU4MDIxNTRfc3ViaWZfZnJhbWVgKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGBpZWVlODAyMTU0X3N1YmlmX2ZyYW1lYC4gRmlyc3QsIEkgd2FudCB0byB0cmFjZSBiYWNrIGFuZCBpZGVudGlmeSBwcmVjaXNlbHkgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLCBpdHMgbW9kdWxlLCBhbmQgaWRlYWxseSB0aGUgc3Vycm91bmRpbmcgY29kZSB3aXRoaW4gdGhhdCBtb2R1bGUsIHdpbGwgcHJvdmlkZSBjcnVjaWFsIGluc2lnaHRzIGludG8gaXRzIHB1cnBvc2UgYW5kIHdoYXQgaXQmIzM5O3MgdHJ5aW5nIHRvIGFjaGlldmUgd2l0aGluIHRoZSBJRUVFIDgwMi4xNS40IHN0YWNrLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBjYWxsIHNpdGVzIGRpcmVjdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggbW9kdWxlIHRoaXMgaXMgaW4sIGFuZCB0aGVuIEkgd2lsbCBzZWFyY2ggZm9yIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgdG8gZGV0ZXJtaW5lIHRoZSBleGFjdCBjYWxsLiBUaGVuLCBkZXBlbmRpbmcgb24gaG93IGNvbXBsZXggdGhlIHN5c3RlbSBpcywgSSBtYXkgbmVlZCB0byBsb29rIGF0IGluZGlyZWN0IGNhbGxzIHRvIGdhaW4gY29tcGxldGUgY2xhcml0eS4gVW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUgb2YgaG93IGZyYW1lcyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhpcyBzdWItaW50ZXJmYWNlIGlzIGtleSB0byBhIHNvbGlkIGFuYWx5c2lzLCBiZWZvcmUgSSBldmVuIHN0YXJ0IGxvb2tpbmcgYXQgdGhlIGZ1bmN0aW9uIGludGVybmFscyB0aGVtc2VsdmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTU0X3N1YmlmX2ZyYW1lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjE1NCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTU0L3J4LmM9MTQ5PXN0YXRpYyBpbnRcbm5ldC9tYWM4MDIxNTQvcnguYzoxNTA6aWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTU0L3J4LmMtMTUxLVx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IGllZWU4MDIxNTRfaGRyICpoZHIpXG4tLVxubmV0L21hYzgwMjE1NC9yeC5jPTM1OT1fX2llZWU4MDIxNTRfcnhfaGFuZGxlX3BhY2tldChzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjE1NC9yeC5jLTM4OS1cdFx0XHRza2IyLVx1MDAzZWRldiA9IHNkYXRhLVx1MDAzZWRldjtcbm5ldC9tYWM4MDIxNTQvcnguYzozOTA6XHRcdFx0aWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzZGF0YSwgc2tiMiwgXHUwMDI2aGRyKTtcbm5ldC9tYWM4MDIxNTQvcnguYy0zOTEtXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI2NzQKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqQW5hbHl6aW5nIFBhY2tldCBIYW5kbGluZyBDYWxsZXJzKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gaG93IHRoaXMgcGFja2V0IHJlY2VwdGlvbiBpcyBiZWluZyBoYW5kbGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gd2hvJiMzOTtzIGNhbGxpbmcgZWl0aGVyIGBfX2llZWU4MDIxNTRfcnhfaGFuZGxlX3BhY2tldGAgb3IgYGllZWU4MDIxNTRfcnhfaXJxc2FmZWAuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50cyB0byB0aGVzZSBjcml0aWNhbCBmdW5jdGlvbnMgaXMgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRhdGEgZmxvdywgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgYW5kIGhvdyB0aGUgc3lzdGVtIHJlc3BvbmRzIHRvIGluY29taW5nIDgwMi4xNS40IHBhY2tldHMuIFRoaXMgd2lsbCBnaXZlIG1lIGNydWNpYWwgY29udGV4dCBmb3IgYW55IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBvZiB0aGUgODAyLjE1LjQgc3RhY2suIEl0JiMzOTtzIHRoZSBmaXJzdCBzdGVwIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlIGRhdGEgY29tZXMgZnJvbSBhbmQgd2hvIHN0YXJ0cyB0aGUgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pZWVlODAyMTU0X3J4X2hhbmRsZV9wYWNrZXR8aWVlZTgwMjE1NF9yeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxNTQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaD0xODY9ZXh0ZXJuIHN0cnVjdCBpZWVlODAyMTU0X21sbWVfb3BzIG1hYzgwMjE1NF9tbG1lX3dwYW47XG5uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oLTE4Ny1cbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmg6MTg4OnZvaWQgaWVlZTgwMjE1NF9yeChzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpO1xubmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaC0xODktdm9pZCBpZWVlODAyMTU0X3htaXRfc3luY193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbi0tXG5uZXQvbWFjODAyMTU0L21haW4uYz0yMz1zdGF0aWMgdm9pZCBpZWVlODAyMTU0X3Rhc2tsZXRfaGFuZGxlcihzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4tLVxubmV0L21hYzgwMjE1NC9tYWluLmMtMzQtXHRcdFx0c2tiLVx1MDAzZXBrdF90eXBlID0gMDtcbm5ldC9tYWM4MDIxNTQvbWFpbi5jOjM1Olx0XHRcdGllZWU4MDIxNTRfcngobG9jYWwsIHNrYik7XG5uZXQvbWFjODAyMTU0L21haW4uYy0zNi1cdFx0XHRicmVhaztcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmM9MzU4PXN0YXRpYyB2b2lkXG5uZXQvbWFjODAyMTU0L3J4LmM6MzU5Ol9faWVlZTgwMjE1NF9yeF9oYW5kbGVfcGFja2V0KHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxNTQvcnguYy0zNjAtXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmM9Mzk2PWllZWU4MDIxNTRfbW9uaXRvcnNfcngoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tYWM4MDIxNTQvcnguYy00MjMtXG5uZXQvbWFjODAyMTU0L3J4LmM6NDI0OnZvaWQgaWVlZTgwMjE1NF9yeChzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbWFjODAyMTU0L3J4LmMtNDI1LXtcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmMtNDU0LVxubmV0L21hYzgwMjE1NC9yeC5jOjQ1NTpcdF9faWVlZTgwMjE1NF9yeF9oYW5kbGVfcGFja2V0KGxvY2FsLCBza2IpO1xubmV0L21hYzgwMjE1NC9yeC5jLTQ1Ni1cbi0tXG5uZXQvbWFjODAyMTU0L3J4LmM9NDYzPXZvaWRcbm5ldC9tYWM4MDIxNTQvcnguYzo0NjQ6aWVlZTgwMjE1NF9yeF9pcnFzYWZlKHN0cnVjdCBpZWVlODAyMTU0X2h3ICpodywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggbHFpKVxubmV0L21hYzgwMjE1NC9yeC5jLTQ2NS17XG4tLVxubmV0L21hYzgwMjE1NC9yeC5jLTQ3My19XG5uZXQvbWFjODAyMTU0L3J4LmM6NDc0OkVYUE9SVF9TWU1CT0woaWVlZTgwMjE1NF9yeF9pcnFzYWZlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3ODIKCQkJCQkJCW91dHB1dDogMzAwCgkJCQkJCQl0aG91Z2h0czogMTAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIENhbmRpZGF0ZSBBc3Nlc3NtZW50OiBtYWM4MDIxNTQgQ29yZSBSWCBQYXRoKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIGxpc3Qgb2Ygc3ltYm9sczogYGllZWU4MDIxNTRfYWxsb2NfaHdgLCBgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJgLCBgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyYCwgYGllZWU4MDIxNTRfc3ViaWZfZnJhbWVgLCBgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zYCwgYW5kIGBtYWM4MDIxNTRfc2Nhbl93b3JrZXJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7V29ydGggZnV6emluZz8mIzM0Oy4gTGV0JiMzOTtzIGFwcGx5IG15IHN0YW5kYXJkIGNyaXRlcmlhLgoKRmlyc3QsICpyZWFjaGFiaWxpdHkqLiBUaGlzIGlzIGNyaXRpY2FsLiBJIGNhbiBzZWUgdGhhdCBNQUM4MDIxNTQgaXMgcmVhY2hhYmxlIHRocm91Z2ggdmlydHVhbCBkZXZpY2VzIGxpa2UgYG1hYzgwMjE1NF9od3NpbWAsIG5ldGxpbmsgY29tbWFuZHMgKGBubDgwMjE1NGApLCBhbmQgQUZfSUVFRTgwMjE1NCBzb2NrZXRzLiBDcnVjaWFsbHksIHRoZSBjb2RlIGJlaW5nIGV4YW1pbmVkIGRlYWxzIHdpdGggUlggcHJvY2Vzc2luZyBvZiBiZWFjb24gYW5kIE1BQyBjb21tYW5kIGZyYW1lcy4gSXQmIzM5O3MgYWxzbyBjb25jZXJuZWQgd2l0aCBxdWV1aW5nLCB3b3JrZXIgcHJvY2Vzc2luZywgc3luY2hyb25pemF0aW9uIHVzaW5nIGEgbmV3IHNwaW5sb2NrLCBgcnhfbGlzdHNfbG9ja2AsIGFuZCBuZXRkZXYgcmVmZXJlbmNlIGNvdW50aW5nIHdpdGggYG5ldGRldl9ob2xkYCwgYG5ldGRldl9wdXRgLCBhbmQgYG5ldGRldmljZV90cmFja2VyYC4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgYW5kIGRyaXZlciBzdGFjayBjb2RlLiBHb29kLCB0aGlzIGRlZmluaXRlbHkgbWVldHMgdGhlIHJlYWNoYWJpbGl0eSBjcml0ZXJpYS4KClNlY29uZCwgdGhlICpmdXp6aW5nIGJlbmVmaXRzKi4gVGhpcyBraW5kIG9mIGNvZGUgaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIENvbmN1cnJlbmN5IGlzc3VlcywgcmFjZSBjb25kaXRpb25zLCBsaXN0IGNvcnJ1cHRpb24sIG5ldGRldiByZWZjb3VudCBsZWFrcyBvciB0cmFja2VyIGltYmFsYW5jZXMsIGFuZCBwb3RlbnRpYWwgZGVhZGxvY2tzIGFyZSBhbGwgdGhpbmdzIEkmIzM5O2QgZXhwZWN0IGZ1enppbmcgdG8gdW5jb3ZlciBmYWlybHkgcXVpY2tseS4gSXQgaXMgaGlnaC12YWx1ZSBmb3IgZnV6emluZy4KClRodXMsIGJhc2VkIG9uIG15IGFuYWx5c2lzLCAqV29ydGhGdXp6aW5nPXRydWUqLgoKTm93LCB0aGUgbmVjZXNzYXJ5ICpFbmFibGVDb25maWdzKiBhbmQgKkZvY3VzU3ltYm9scyouCgpJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZTogYE1BQzgwMjE1NGAsIGBJRUVFODAyMTU0YCwgYElFRUU4MDIxNTRfTkw4MDIxNTRfRVhQRVJJTUVOVEFMYCAob3B0aW9uYWwsIGJ1dCBubDgwMjE1NCBpcyBhbHdheXMgYSBnb29kIG9wdGlvbiksIGBJRUVFODAyMTU0X0hXU0lNYCwgYW5kIGBJRUVFODAyMTU0X0RSSVZFUlNgLiBgTUFDODAyMTU0YCBkZXBlbmRzIG9uIGBJRUVFODAyMTU0YCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEFsc28gYElFRUU4MDIxNTRfSFdTSU1gIGRlcGVuZHMgb24gYElFRUU4MDIxNTRfRFJJVkVSUyAmYW1wOyZhbXA7IE1BQzgwMjE1NGAuCgpGb3IgKkZvY3VzU3ltYm9scyosIEkmIzM5O2xsIHRhcmdldDogYG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyYCwgYG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcmAsIGBpZWVlODAyMTU0X3N1YmlmX2ZyYW1lYCwgYG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29uc2AsIGBtYWM4MDIxNTRfcnhfZGVxdWV1ZWAgKGV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYywgSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGdldCB0aGF0IG9uZSwgYXMgdGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IG9mIGl0IGJlaW5nIGlubGluZWQsIG9yIHNpbWlsYXIpLiBBbHNvIGluY2x1ZGUgbm9uLXN0YXRpYyBvbmVzIHN1Y2ggYXM6IGBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcmAsIGBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXJgLCBgbWFjODAyMTU0X3NjYW5fd29ya2VyYCBhbmQgYGllZWU4MDIxNTRfcnhgLiBMZXQmIzM5O3Mgbm90IGZvcmdldCBgaWVlZTgwMjE1NF9hbGxvY19od2AuCgpUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIGRvdWJsZS1jaGVjazogYG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyYCwgYG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcmAsIGBpZWVlODAyMTU0X3J4YCwgYW5kIGBpZWVlODAyMTU0X2FsbG9jX2h3YCwgd2hpY2ggYXJlIGFsbCBmb3VuZCB3aXRoaW4gYG5ldC9tYWM4MDIxNTQvcnguY2AsIGFuZCBgbWFjODAyMTU0X3NjYW5fd29ya2VyYCBpbiBgbmV0L21hYzgwMjE1NC9zY2FuLmNgLiBJdCBhbGwgbGluZXMgdXAgd2l0aCBteSBleHBlY3RhdGlvbnMuCgpKdXN0IGEgZmluYWwgc2FuaXR5IGNoZWNrIG9mIHRoZSBpbXBvcnRhbnQgYml0czogQ29uZmlnIG9wdGlvbnM6IGBJRUVFODAyMTU0YCwgYE1BQzgwMjE1NGAsIGFuZCBgSUVFRTgwMjE1NF9IV1NJTWAuIFRoZSBzeW1ib2xzIGFyZTogYG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyYCwgYG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcmAsIGBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnNgLCBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAsIGBtYWM4MDIxNTRfcnhfZGVxdWV1ZWAsIGFuZCBgaWVlZTgwMjE1NF9hbGxvY19od2AuCgpUaGF0IGxvb2tzIGdvb2QuIEkmIzM5O20gcmVhZHkKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SUVFRTgwMjE1NCYjMzQ7LAogICAgJiMzNDtNQUM4MDIxNTQmIzM0OywKICAgICYjMzQ7SUVFRTgwMjE1NF9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyJiMzNDssCiAgICAmIzM0O21hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlciYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfcnhfZGVxdWV1ZSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTU0X3N1YmlmX2ZyYW1lJiMzNDssCiAgICAmIzM0O21hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTU0X2FsbG9jX2h3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCBSWCBhbmQgcXVldWUgbWFuYWdlbWVudCBpbiB0aGUgbWFjODAyMTU0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBkZWRpY2F0ZWQgc3BpbmxvY2sgKHJ4X2xpc3RzX2xvY2spIHRvIHByb3RlY3QgcnhfYmVhY29uX2xpc3QgYW5kIHJ4X21hY19jbWRfbGlzdCwgdXBkYXRpbmcgdGhlIHdvcmtlciBkZXF1ZXVlIGxvZ2ljLCBhbmQgdGFraW5nL3JlbGVhc2luZyBuZXRkZXZpY2UgcmVmZXJlbmNlIHRyYWNrZXJzIChuZXRkZXZfaG9sZC9uZXRkZXZfcHV0KSB3aGVuIHF1ZXVlaW5nIGFuZCBwcm9jZXNzaW5nIE1BQyBwYWNrZXRzLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSBtYWM4MDIxNTQgdmlydHVhbCBkcml2ZXJzIChtYWM4MDIxNTRfaHdzaW0pIGFuZCBzdGFuZGFyZCBJRUVFIDgwMi4xNS40IG5ldHdvcmsgaW50ZXJmYWNlcywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcgZm9yIGNvbmN1cnJlbmN5IGJ1Z3MsIGRlYWRsb2NrcywgYW5kIG5ldGRldiByZWZjb3VudGluZyBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lFRUU4MDIxNTQmIzM0OywKICAgICYjMzQ7TUFDODAyMTU0JiMzNDssCiAgICAmIzM0O0lFRUU4MDIxNTRfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlciYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXImIzM0OywKICAgICYjMzQ7bWFjODAyMTU0X3J4X2RlcXVldWUmIzM0OywKICAgICYjMzQ7aWVlZTgwMjE1NF9zdWJpZl9mcmFtZSYjMzQ7LAogICAgJiMzNDttYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnMmIzM0OywKICAgICYjMzQ7aWVlZTgwMjE1NF9hbGxvY19odyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgUlggYW5kIHF1ZXVlIG1hbmFnZW1lbnQgaW4gdGhlIG1hYzgwMjE1NCBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgZGVkaWNhdGVkIHNwaW5sb2NrIChyeF9saXN0c19sb2NrKSB0byBwcm90ZWN0IHJ4X2JlYWNvbl9saXN0IGFuZCByeF9tYWNfY21kX2xpc3QsIHVwZGF0aW5nIHRoZSB3b3JrZXIgZGVxdWV1ZSBsb2dpYywgYW5kIHRha2luZy9yZWxlYXNpbmcgbmV0ZGV2aWNlIHJlZmVyZW5jZSB0cmFja2VycyAobmV0ZGV2X2hvbGQvbmV0ZGV2X3B1dCkgd2hlbiBxdWV1ZWluZyBhbmQgcHJvY2Vzc2luZyBNQUMgcGFja2V0cy4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgbWFjODAyMTU0IHZpcnR1YWwgZHJpdmVycyAobWFjODAyMTU0X2h3c2ltKSBhbmQgc3RhbmRhcmQgSUVFRSA4MDIuMTUuNCBuZXR3b3JrIGludGVyZmFjZXMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nIGZvciBjb25jdXJyZW5jeSBidWdzLCBkZWFkbG9ja3MsIGFuZCBuZXRkZXYgcmVmY291bnRpbmcgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgc3luY2hyb25pemF0aW9uIGFuZCBuZXRkZXYgcmVmZXJlbmNlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZvciBtYWM4MDIxNTQgUlggcXVldWVzIChiZWFjb24gYW5kIE1BQyBjb21tYW5kIHF1ZXVlcykuIEl0IGludHJvZHVjZXMgYSBzcGlubG9jayBgcnhfbGlzdHNfbG9ja2AgdG8gcHJvdGVjdCBxdWV1ZSBtYW5pcHVsYXRpb24gYW5kIHVzZXMgYG5ldGRldmljZV90cmFja2VyYCAoYG5ldGRldl9ob2xkYCAvIGBuZXRkZXZfcHV0YCkgdG8gc2FmZWx5IHJldGFpbiBkZXZpY2UgcmVmZXJlbmNlcyB1bnRpbCBwYWNrZXRzIGFyZSBwcm9jZXNzZWQgYW5kIGZyZWVkLlxuXG5LQVNBTiwgTE9DS0RFUCwgYW5kIHRoZSBuZXRkZXYgcmVmY291bnQgdHJhY2tlciBhZGVxdWF0ZWx5IGNvdmVyIHRoZSByaXNrcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXRjaCAoc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGRlYWRsb2NrcywgYW5kIHVzZS1hZnRlci1mcmVlL2xpZmV0aW1lIGJ1Z3MpLiBgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0YCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iamAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYXJlIHplcm8taW5pdGlhbGl6ZWQuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHJlYWQsIGJyYW5jaGVkIG9uLCBvciBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyZTI4YzNhZDg0MjE1NzkzZjM3NDVjYTRlM2RkN2UxOTI5NjM2N2JkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAxODoxMjo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmgKaW5kZXggNzZkMmNkMmUyYjMwOS4uNTczNDM3NjJkN2YwYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmgKQEAgLTM2OSw2ICYjNDM7MzY5LDcgQEAgc3RydWN0IGNmZzgwMjE1NF9iZWFjb25fcmVxdWVzdCB7CiAgKiBAbm9kZTogTUFDIHBhY2tldHMgdG8gcHJvY2VzcyBsaXN0IG1lbWJlcgogICogQHNrYjogdGhlIHJlY2VpdmVkIHNrX2J1ZmYKICAqIEBzZGF0YTogdGhlIGludGVyZmFjZSBvbiB3aGljaCBAc2tiIHdhcyByZWNlaXZlZAomIzQzOyAqIEBkZXZfdHJhY2tlcjogbmV0ZGV2IHJlZmVyZW5jZSBoZWxkIHVudGlsIHRoZSBkZXNjcmlwdG9yIGlzIHJlbGVhc2VkCiAgKiBAcGFnZTogcGFnZSBjb25maWd1cmF0aW9uIHdoZW4gQHNrYiB3YXMgcmVjZWl2ZWQKICAqIEBjaGFubmVsOiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gd2hlbiBAc2tiIHdhcyByZWNlaXZlZAogICovCkBAIC0zNzYsNiAmIzQzOzM3Nyw3IEBAIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCB7CiAJc3RydWN0IGxpc3RfaGVhZCBub2RlOwogCXN0cnVjdCBza19idWZmICpza2I7CiAJc3RydWN0IGllZWU4MDIxNTRfc3ViX2lmX2RhdGEgKnNkYXRhOwomIzQzOwluZXRkZXZpY2VfdHJhY2tlciBkZXZfdHJhY2tlcjsKIAl1OCBwYWdlOwogCXU4IGNoYW5uZWw7CiB9OwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaCBiL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmgKaW5kZXggOGYyYmZmMjY4MzkyYi4uMDk2ZTZmMDM0MGRjNyAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oCkBAIC03NCw2ICYjNDM7NzQsOCBAQCBzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCB7CiAJc3RydWN0IHdvcmtfc3RydWN0IHJ4X2JlYWNvbl93b3JrOwogCXN0cnVjdCBsaXN0X2hlYWQgcnhfbWFjX2NtZF9saXN0OwogCXN0cnVjdCB3b3JrX3N0cnVjdCByeF9tYWNfY21kX3dvcms7CiYjNDM7CS8qIFByb3RlY3RzIHJ4X2JlYWNvbl9saXN0IGFuZCByeF9tYWNfY21kX2xpc3QuICovCiYjNDM7CXNwaW5sb2NrX3QgcnhfbGlzdHNfbG9jazsKIAogCS8qIEFzc29jaWF0aW9uICovCiAJc3RydWN0IGllZWU4MDIxNTRfcGFuX2RldmljZSAqYXNzb2NfZGV2OwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjE1NC9tYWluLmMgYi9uZXQvbWFjODAyMTU0L21haW4uYwppbmRleCBlYTFlZmVmMzU3MmFlLi5hNmE5NzZiMGRlYTU2IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTU0L21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTU0L21haW4uYwpAQCAtOTEsNiAmIzQzOzkxLDcgQEAgaWVlZTgwMjE1NF9hbGxvY19odyhzaXplX3QgcHJpdl9kYXRhX2xlbiwgY29uc3Qgc3RydWN0IGllZWU4MDIxNTRfb3BzICpvcHMpCiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtsb2NhbC0mZ3Q7aW50ZXJmYWNlcyk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtsb2NhbC0mZ3Q7cnhfYmVhY29uX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7bG9jYWwtJmd0O3J4X21hY19jbWRfbGlzdCk7CiYjNDM7CXNwaW5fbG9ja19pbml0KCZhbXA7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwogCW11dGV4X2luaXQoJmFtcDtsb2NhbC0mZ3Q7aWZsaXN0X210eCk7CiAKIAl0YXNrbGV0X3NldHVwKCZhbXA7bG9jYWwtJmd0O3Rhc2tsZXQsIGllZWU4MDIxNTRfdGFza2xldF9oYW5kbGVyKTsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvcnguYyBiL25ldC9tYWM4MDIxNTQvcnguYwppbmRleCBjZDhmMmExMTkyMGQwLi5kZjJmNjEyOGRkZDRhIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTU0L3J4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjE1NC9yeC5jCkBAIC0yOSwyMSAmIzQzOzI5LDQwIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjE1NF9kZWxpdmVyX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXJldHVybiBuZXRpZl9yZWNlaXZlX3NrYihza2IpOwogfQogCiYjNDM7c3RhdGljIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqCiYjNDM7bWFjODAyMTU0X3J4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLAomIzQzOwkJICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpyeF9saXN0LAomIzQzOwkJICAgICBzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiYjNDM7ewomIzQzOwlzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3Q7CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKJiM0MzsJbWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChyeF9saXN0LAomIzQzOwkJCQkJICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTsKJiM0MzsJaWYgKG1hY19wa3QpIHsKJiM0MzsJCWxpc3RfZGVsKCZhbXA7bWFjX3BrdC0mZ3Q7bm9kZSk7CiYjNDM7CQlpZiAoIWxpc3RfZW1wdHkocnhfbGlzdCkpCiYjNDM7CQkJcXVldWVfd29yayhsb2NhbC0mZ3Q7bWFjX3dxLCB3b3JrKTsKJiM0MzsJfQomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2xvY2FsLSZndDtyeF9saXN0c19sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG1hY19wa3Q7CiYjNDM7fQomIzQzOwogdm9pZCBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7CiAJc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsID0KIAkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsLCByeF9iZWFjb25fd29yayk7CiAJc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0OwogCi0JbWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmYW1wO2xvY2FsLSZndDtyeF9iZWFjb25fbGlzdCwKLQkJCQkJICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTsKJiM0MzsJbWFjX3BrdCA9IG1hYzgwMjE1NF9yeF9kZXF1ZXVlKGxvY2FsLCAmYW1wO2xvY2FsLSZndDtyeF9iZWFjb25fbGlzdCwgd29yayk7CiAJaWYgKCFtYWNfcGt0KQogCQlyZXR1cm47CiAKIAltYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24obG9jYWwsIG1hY19wa3QtJmd0O3NrYiwgbWFjX3BrdC0mZ3Q7cGFnZSwgbWFjX3BrdC0mZ3Q7Y2hhbm5lbCk7CiAKLQlsaXN0X2RlbCgmYW1wO21hY19wa3QtJmd0O25vZGUpOwogCWtmcmVlX3NrYihtYWNfcGt0LSZndDtza2IpOwomIzQzOwluZXRkZXZfcHV0KG1hY19wa3QtJmd0O3NkYXRhLSZndDtkZXYsICZhbXA7bWFjX3BrdC0mZ3Q7ZGV2X3RyYWNrZXIpOwogCWtmcmVlKG1hY19wa3QpOwogfQogCkBAIC03Niw4ICYjNDM7OTUsNyBAQCB2b2lkIG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJdTggbWFjX2NtZDsKIAlpbnQgcmM7CiAKLQltYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZhbXA7bG9jYWwtJmd0O3J4X21hY19jbWRfbGlzdCwKLQkJCQkJICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTsKJiM0MzsJbWFjX3BrdCA9IG1hYzgwMjE1NF9yeF9kZXF1ZXVlKGxvY2FsLCAmYW1wO2xvY2FsLSZndDtyeF9tYWNfY21kX2xpc3QsIHdvcmspOwogCWlmICghbWFjX3BrdCkKIAkJcmV0dXJuOwogCkBAIC0xMjMsOCAmIzQzOzE0MSw4IEBAIHZvaWQgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAl9CiAKIG91dDoKLQlsaXN0X2RlbCgmYW1wO21hY19wa3QtJmd0O25vZGUpOwogCWtmcmVlX3NrYihtYWNfcGt0LSZndDtza2IpOwomIzQzOwluZXRkZXZfcHV0KG1hY19wa3QtJmd0O3NkYXRhLSZndDtkZXYsICZhbXA7bWFjX3BrdC0mZ3Q7ZGV2X3RyYWNrZXIpOwogCWtmcmVlKG1hY19wa3QpOwogfQogCkBAIC0yMjEsOCAmIzQzOzIzOSwxMSBAQCBpZWVlODAyMTU0X3N1YmlmX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJbWFjX3BrdC0mZ3Q7c2RhdGEgPSBzZGF0YTsKIAkJbWFjX3BrdC0mZ3Q7cGFnZSA9IHNkYXRhLSZndDtsb2NhbC0mZ3Q7c2Nhbl9wYWdlOwogCQltYWNfcGt0LSZndDtjaGFubmVsID0gc2RhdGEtJmd0O2xvY2FsLSZndDtzY2FuX2NoYW5uZWw7CiYjNDM7CQluZXRkZXZfaG9sZChzZGF0YS0mZ3Q7ZGV2LCAmYW1wO21hY19wa3QtJmd0O2Rldl90cmFja2VyLCBHRlBfQVRPTUlDKTsKJiM0MzsJCXNwaW5fbG9ja19iaCgmYW1wO3NkYXRhLSZndDtsb2NhbC0mZ3Q7cnhfbGlzdHNfbG9jayk7CiAJCWxpc3RfYWRkX3RhaWwoJmFtcDttYWNfcGt0LSZndDtub2RlLCAmYW1wO3NkYXRhLSZndDtsb2NhbC0mZ3Q7cnhfYmVhY29uX2xpc3QpOwogCQlxdWV1ZV93b3JrKHNkYXRhLSZndDtsb2NhbC0mZ3Q7bWFjX3dxLCAmYW1wO3NkYXRhLSZndDtsb2NhbC0mZ3Q7cnhfYmVhY29uX3dvcmspOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwogCQlyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7CiAKIAljYXNlIElFRUU4MDIxNTRfRkNfVFlQRV9NQUNfQ01EOgpAQCAtMjMzLDggJiM0MzsyNTQsMTEgQEAgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsCiAKIAkJbWFjX3BrdC0mZ3Q7c2tiID0gc2tiX2dldChza2IpOwogCQltYWNfcGt0LSZndDtzZGF0YSA9IHNkYXRhOwomIzQzOwkJbmV0ZGV2X2hvbGQoc2RhdGEtJmd0O2RldiwgJmFtcDttYWNfcGt0LSZndDtkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7CiYjNDM7CQlzcGluX2xvY2tfYmgoJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwogCQlsaXN0X2FkZF90YWlsKCZhbXA7bWFjX3BrdC0mZ3Q7bm9kZSwgJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X21hY19jbWRfbGlzdCk7CiAJCXF1ZXVlX3dvcmsoc2RhdGEtJmd0O2xvY2FsLSZndDttYWNfd3EsICZhbXA7c2RhdGEtJmd0O2xvY2FsLSZndDtyeF9tYWNfY21kX3dvcmspOwomIzQzOwkJc3Bpbl91bmxvY2tfYmgoJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwogCQlyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7CiAKIAljYXNlIElFRUU4MDIxNTRfRkNfVFlQRV9BQ0s6CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L3NjYW4uYyBiL25ldC9tYWM4MDIxNTQvc2Nhbi5jCmluZGV4IDAwNTMzOGY4OWI3NWUuLmMzYzYxZWJkZTE1NjggMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxNTQvc2Nhbi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxNTQvc2Nhbi5jCkBAIC0xMDUsMTAgJiM0MzsxMDUsMTYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBtYWM4MDIxNTRfc2Nhbl9nZXRfY2hhbm5lbF90aW1lKHU4IGR1cmF0aW9uX29yZGVyLAogc3RhdGljIHZvaWQgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCkKIHsKIAlzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3QsICp0bXA7CiYjNDM7CUxJU1RfSEVBRChtYWNfcGt0X2xpc3QpOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1hY19wa3QsIHRtcCwgJmFtcDtsb2NhbC0mZ3Q7cnhfYmVhY29uX2xpc3QsIG5vZGUpIHsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwomIzQzOwlsaXN0X3NwbGljZV9pbml0KCZhbXA7bG9jYWwtJmd0O3J4X2JlYWNvbl9saXN0LCAmYW1wO21hY19wa3RfbGlzdCk7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7bG9jYWwtJmd0O3J4X2xpc3RzX2xvY2spOwomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobWFjX3BrdCwgdG1wLCAmYW1wO21hY19wa3RfbGlzdCwgbm9kZSkgewogCQlsaXN0X2RlbCgmYW1wO21hY19wa3QtJmd0O25vZGUpOwogCQlrZnJlZV9za2IobWFjX3BrdC0mZ3Q7c2tiKTsKJiM0MzsJCW5ldGRldl9wdXQobWFjX3BrdC0mZ3Q7c2RhdGEtJmd0O2RldiwgJmFtcDttYWNfcGt0LSZndDtkZXZfdHJhY2tlcik7CiAJCWtmcmVlKG1hY19wa3QpOwogCX0KIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NjQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbWFjODAyMTU0YCBQYXRjaCBmb3IgVW5pbml0aWFsaXplZCBNZW1vcnkgUmlza3MqKgoKT2theSwgbGV0JiMzOTtzIGRpc3NlY3QgdGhpcyBwYXRjaCBmb3IgdGhlIGBtYWM4MDIxNTRgIHN1YnN5c3RlbS4gTXkgcHJpbWFyeSBjb25jZXJuIGhlcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2Yga2VybmVsIGRldmVsb3BtZW50LCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzIHRoYXQgcmVxdWlyZSBLTVNBTi1sZXZlbCBzY3J1dGlueSBvciBpZiBzdGFuZGFyZCBLQVNBTiwgTE9DS0RFUCwgYW5kIHJlbGF0ZWQgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgpGaXJzdCwgSSYjMzk7bGwgYnJlYWsgZG93biB0aGUgY2hhbmdlcy4gVGhlIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBmaWxlczogYGNmZzgwMjE1NC5oYCwgYGllZWU4MDIxNTRfaS5oYCwgYG1haW4uY2AsIGByeC5jYCwgYW5kIGBzY2FuLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHByaW1hcmlseSBhYm91dCBpbXByb3Zpbmcgc3luY2hyb25pemF0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUlggcGF0aC4KClNwZWNpZmljYWxseSwgSSYjMzk7bSBzZWVpbmcgYWRkaXRpb25zIG9mIGBuZXRkZXZpY2VfdHJhY2tlciBkZXZfdHJhY2tlcmAgdG8gYHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdGAgYW5kIGEgYHNwaW5sb2NrX3QgcnhfbGlzdHNfbG9ja2AgdG8gYHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsYC4gSW5pdGlhbGl6YXRpb24gb2YgdGhlIHNwaW5sb2NrIGlzIGhhbmRsZWQsIHRoYW5rZnVsbHkuIFRoZSBtb3JlIGludGVyZXN0aW5nIGNoYW5nZXMgYXJlIGluIGByeC5jYCBhbmQgYHNjYW4uY2AuCgpUaGUgaW50cm9kdWN0aW9uIG9mIGBtYWM4MDIxNTRfcnhfZGVxdWV1ZWAgbG9va3MgbGlrZSBhIGtleSBjaGFuZ2UsIGVuY2Fwc3VsYXRpbmcgdGhlIGxpc3QgZGVxdWV1ZSBsb2dpYyB3aXRoIHRoZSBsb2NrLiBHb29kLCB0aGlzIGlzIHByb2JhYmx5IHRvIHByb3RlY3QgdGhlIGByeF9saXN0c2Agb3Igc2ltaWxhci4gSSBub3RpY2UgdGhlIGxvY2sgYWNxdWlzaXRpb24gYW5kIHRoZSByZS1xdWV1aW5nIGxvZ2ljLiBBbHNvLCB0aGUgdXNlIG9mIGBuZXRkZXZfcHV0YCBpbiBzZXZlcmFsIHBsYWNlcyBhZnRlciB1c2luZyB0aGUgZGVxdWV1ZSBoZWxwZXIgaXMgaW1wb3J0YW50LiBUaGUgdXNlIG9mIGBuZXRkZXZfaG9sZGAgYW5kIGBuZXRkZXZfcHV0YCBhcm91bmQgdGhlIHBhY2tldCBzdHJ1Y3R1cmVzIGxvb2tzIGdvb2QgLSBwcm90ZWN0aW5nIHRoZSBgc2RhdGEtJmd0O2RldmAgcHJvcGVybHkgd2l0aCB0aGUgYGRldl90cmFja2VyYCBpbiBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAgaXMgY3J1Y2lhbC4KCkkgbmVlZCB0byBjb25maXJtIGhvdyBgbWFjX3BrdGAgaXMgYWxsb2NhdGVkLiBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGZvciBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLiBJJiMzOTtsbCBmb2N1cyBvbiB3aGVyZSBgbWFjX3BrdGAgaXMgYWxsb2NhdGVkLCBlc3BlY2lhbGx5IHdpdGhpbiBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAsIGFuZCBpZiB0aGVyZSBhcmUgb3RoZXIgcG90ZW50aWFsIGFsbG9jYXRpb24gc2l0ZXMuIEkgd2lsbCB1c2UgYHJlYWQtZmlsZWAgdG8gemVybyBpbiBvbiBgbmV0L21hYzgwMjE1NC9yeC5jYCBhbmQgbG9vayBmb3IgYWxsb2NhdGlvbnMuIEkmIzM5O20gbG9va2luZyBmb3Igd2hlcmUgd2UmIzM5O3JlIGNyZWF0aW5nIHRoZXNlIHBhY2tldHMgYW5kIGhvdyB0aGUgbWVtb3J5IGlzIGJlaW5nIGhhbmRsZWQuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBzcGVjaWZpY2FsbHkgZm9yIGNhc2VzIHdoZXJlIHRoZSBkYXRhIHdpdGhpbiB0aGUgYG1hY19wa3RgIGNvdWxkIGJlIHVzZWQgYmVmb3JlIGJlaW5nIGluaXRpYWxpemVkLgoKVGhlIGNoYW5nZXMgaW4gYHNjYW4uY2Agc2VlbSBzdHJhaWdodGZvcndhcmQ6IG1vdmluZyB0aGUgYHJ4X2JlYWNvbl9saXN0YCB1bmRlciB0aGUgbG9jayBhbmQgZnJlZWluZyB0aGUgZWxlbWVudHMuIFRoaXMgbG9va3MgbGlrZSBzdGFuZGFyZCBsaXN0IHN5bmNocm9uaXphdGlvbiBwcmFjdGljZXMuIEkgbmVlZCB0byBzdGlsbCBlbnN1cmUgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIHRoZXNlIHN0cnVjdHVyZXMgYXJlIHJvYnVzdC4KCk15IHN1c3BpY2lvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgc29saWQgZnJvbSBhIGN1cnNvcnkgZ2xhbmNlLCBidXQgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gY29kZSBmb3IgdGhlIHN0cnVjdHVyZXMsIHNwZWNpZmljYWxseSBgbWFjX3BrdGAuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBgbWFjX3BrdGAgaXMgaGFuZGxlZCB3aGVuIHJlLXVzZWQgYWZ0ZXIgYmVpbmcgb24gdGhlIGByeF9saXN0c19sb2NrYCBwcm90ZWN0ZWQgcXVldWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxNTQvcnguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0XHRcdGVsc2UgaWYgKG1hY19jYihza2IpLVx1MDAzZWRlc3Quc2hvcnRfYWRkciA9PSBzc2hvcnQpXG4gMjAxOlx0XHRcdFx0c2tiLVx1MDAzZXBrdF90eXBlID0gUEFDS0VUX0hPU1Q7XG4gMjAyOlx0XHRcdGVsc2UgaWYgKG1hY19jYihza2IpLVx1MDAzZWRlc3Quc2hvcnRfYWRkciA9PVxuIDIwMzpcdFx0XHRcdCAgY3B1X3RvX2xlMTYoSUVFRTgwMjE1NF9BRERSX0JST0FEQ0FTVCkpXG4gMjA0Olx0XHRcdFx0c2tiLVx1MDAzZXBrdF90eXBlID0gUEFDS0VUX0JST0FEQ0FTVDtcbiAyMDU6XHRcdFx0ZWxzZVxuIDIwNjpcdFx0XHRcdHNrYi1cdTAwM2Vwa3RfdHlwZSA9IFBBQ0tFVF9PVEhFUkhPU1Q7XG4gMjA3Olx0XHRcdGJyZWFrO1xuIDIwODpcdFx0ZGVmYXVsdDpcbiAyMDk6XHRcdFx0cHJfZGVidWcoXCYjMzQ7aW52YWxpZCBkZXN0IG1vZGVcXG5cJiMzNDspO1xuIDIxMDpcdFx0XHRnb3RvIGZhaWw7XG4gMjExOlx0XHR9XG4gMjEyOlx0XG4gMjEzOlx0XHRza2ItXHUwMDNlZGV2ID0gc2RhdGEtXHUwMDNlZGV2O1xuIDIxNDpcdFxuIDIxNTpcdFx0LyogVE9ETyB0aGlzIHNob3VsZCBiZSBtb3ZlZCBhZnRlciBuZXRpZl9yZWNlaXZlX3NrYiBjYWxsLCBvdGhlcndpc2VcbiAyMTY6XHRcdCAqIHdpcmVzaGFyayB3aWxsIHNob3cgYSBtYWMgaGVhZGVyIHdpdGggc2VjdXJpdHkgZmllbGRzIGFuZCB0aGVcbiAyMTc6XHRcdCAqIHBheWxvYWQgaXMgYWxyZWFkeSBkZWNyeXB0ZWQuXG4gMjE4Olx0XHQgKi9cbiAyMTk6XHRcdHJjID0gbWFjODAyMTU0X2xsc2VjX2RlY3J5cHQoXHUwMDI2c2RhdGEtXHUwMDNlc2VjLCBza2IpO1xuIDIyMDpcdFx0aWYgKHJjKSB7XG4gMjIxOlx0XHRcdHByX2RlYnVnKFwmIzM0O2RlY3J5cHRpb24gZmFpbGVkOiAlaVxcblwmIzM0OywgcmMpO1xuIDIyMjpcdFx0XHRnb3RvIGZhaWw7XG4gMjIzOlx0XHR9XG4gMjI0Olx0XG4gMjI1Olx0XHRzZGF0YS1cdTAwM2VkZXYtXHUwMDNlc3RhdHMucnhfcGFja2V0cyYjNDM7JiM0Mzs7XG4gMjI2Olx0XHRzZGF0YS1cdTAwM2VkZXYtXHUwMDNlc3RhdHMucnhfYnl0ZXMgJiM0Mzs9IHNrYi1cdTAwM2VsZW47XG4gMjI3Olx0XG4gMjI4Olx0XHRzd2l0Y2ggKG1hY19jYihza2IpLVx1MDAzZXR5cGUpIHtcbiAyMjk6XHRcdGNhc2UgSUVFRTgwMjE1NF9GQ19UWVBFX0JFQUNPTjpcbiAyMzA6XHRcdFx0ZGV2X2RiZyhcdTAwMjZzZGF0YS1cdTAwM2VkZXYtXHUwMDNlZGV2LCBcJiMzNDtCRUFDT04gcmVjZWl2ZWRcXG5cJiMzNDspO1xuIDIzMTpcdFx0XHRpZiAoIW1hYzgwMjE1NF9pc19zY2FubmluZyhzZGF0YS1cdTAwM2Vsb2NhbCkpXG4gMjMyOlx0XHRcdFx0Z290byBmYWlsO1xuIDIzMzpcdFxuIDIzNDpcdFx0XHRtYWNfcGt0ID0ga3phbGxvY19vYmooKm1hY19wa3QsIEdGUF9BVE9NSUMpO1xuIDIzNTpcdFx0XHRpZiAoIW1hY19wa3QpXG4gMjM2Olx0XHRcdFx0Z290byBmYWlsO1xuIDIzNzpcdFxuIDIzODpcdFx0XHRtYWNfcGt0LVx1MDAzZXNrYiA9IHNrYl9nZXQoc2tiKTtcbiAyMzk6XHRcdFx0bWFjX3BrdC1cdTAwM2VzZGF0YSA9IHNkYXRhO1xuIDI0MDpcdFx0XHRtYWNfcGt0LVx1MDAzZXBhZ2UgPSBzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VzY2FuX3BhZ2U7XG4gMjQxOlx0XHRcdG1hY19wa3QtXHUwMDNlY2hhbm5lbCA9IHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXNjYW5fY2hhbm5lbDtcbiAyNDI6XHRcdFx0bmV0ZGV2X2hvbGQoc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcbiAyNDM6XHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIDI0NDpcdFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QpO1xuIDI0NTpcdFx0XHRxdWV1ZV93b3JrKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZW1hY193cSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfYmVhY29uX3dvcmspO1xuIDI0NjpcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiAyNDc6XHRcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIDI0ODpcdFxuIDI0OTpcdFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfTUFDX0NNRDpcbiAyNTA6XHRcdFx0ZGV2X2RiZyhcdTAwMjZzZGF0YS1cdTAwM2VkZXYtXHUwMDNlZGV2LCBcJiMzNDtNQUMgQ09NTUFORCByZWNlaXZlZFxcblwmIzM0Oyk7XG4gMjUxOlx0XHRcdG1hY19wa3QgPSBremFsbG9jX29iaigqbWFjX3BrdCwgR0ZQX0FUT01JQyk7XG4gMjUyOlx0XHRcdGlmICghbWFjX3BrdClcbiAyNTM6XHRcdFx0XHRnb3RvIGZhaWw7XG4gMjU0Olx0XG4gMjU1Olx0XHRcdG1hY19wa3QtXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xuIDI1NjpcdFx0XHRtYWNfcGt0LVx1MDAzZXNkYXRhID0gc2RhdGE7XG4gMjU3Olx0XHRcdG5ldGRldl9ob2xkKHNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bWFjX3BrdC1cdTAwM2VkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7XG4gMjU4Olx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiAyNTk6XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZtYWNfcGt0LVx1MDAzZW5vZGUsIFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X21hY19jbWRfbGlzdCk7XG4gMjYwOlx0XHRcdHF1ZXVlX3dvcmsoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlbWFjX3dxLCBcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9tYWNfY21kX3dvcmspO1xuIDI2MTpcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiAyNjI6XHRcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIDI2MzpcdFxuIDI2NDpcdFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfQUNLOlxuIDI2NTpcdFx0XHRnb3RvIGZhaWw7XG4gMjY2Olx0XG4gMjY3Olx0XHRjYXNlIElFRUU4MDIxNTRfRkNfVFlQRV9EQVRBOlxuIDI2ODpcdFx0XHRyZXR1cm4gaWVlZTgwMjE1NF9kZWxpdmVyX3NrYihza2IpO1xuIDI2OTpcdFx0ZGVmYXVsdDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA2MgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExpZmVjeWNsZSBvZiBgY2ZnODAyMTU0X21hY19wa3RgKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBhIGBjZmc4MDIxNTRfbWFjX3BrdGAgc3RydWN0dXJlIGlzIGFsbG9jYXRlZCB1c2luZyBga3phbGxvY2AuIFRoZSBpbXBvcnRhbnQgdGhpbmcgaGVyZSBpcyB0aGF0IGBremFsbG9jYCBndWFyYW50ZWVzIGl0JiMzOTtzIHplcm9lZCwgYSBnb29kIHByYWN0aWNlIHRvIGF2b2lkIHVuaW5pdGlhbGl6ZWQgZGF0YSB2dWxuZXJhYmlsaXRpZXMuIFRoZW4sIHRoZSBgbmV0ZGV2X3RyYWNrZXJgIHdpdGhpbiB0aGUgYG1hY19wa3RgIGlzIGluaXRpYWxpemVkIHZpYSBgbmV0ZGV2X2hvbGRgLiBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBkZXNpZ25lZCB0byB0cmFjayB0aGUgbmV0d29yayBkZXZpY2UgYXNzb2NpYXRpb24gb2YgdGhpcyBwYWNrZXQuCgpOb3csIHRoZSBkZWFsbG9jYXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkOiBhIGBuZXRkZXZfcHV0YCBvbiB0aGUgYGRldl90cmFja2VyYCBhbmQgdGhlbiBhIGBrZnJlZWAgb2YgdGhlIHN0cnVjdHVyZS4gQ2xhc3NpYyBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBwYWlyLCBubyBzdXJwcmlzZXMgdGhlcmUuIEFuZCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYHJ4X2xpc3RzX2xvY2tgIGlzIHVzZWQgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2VzcyB0byB0aGUgbGlua2VkIGxpc3QgYW5kIGl0IHdpbGwgc2VyaWFsaXplIGFjY2VzcyB3aXRoIHdvcmsgcXVldWUgcHJvY2Vzc2luZy4KCkkgd2FudCB0byBiZSB0aG9yb3VnaC4gSSBuZWVkIHRvIGtub3cgd2hlcmUgZWxzZSB0aGlzIHN0cnVjdHVyZSBpcyB1c2VkLiBJJiMzOTtsbCBuZWVkIHRvIGdyZXAgdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGFueSBvdGhlciBvY2N1cnJlbmNlcyBvZiBgY2ZnODAyMTU0X21hY19wa3RgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIG9wZXJhdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEkmIzM5O20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBtb2RpZnkgdGhlIGFsbG9jYXRpb24sIGRlYWxsb2NhdGlvbiwgb3IgdXNhZ2UgcGF0dGVybnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjE1NF9tYWNfcGt0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oPTM2MT1zdHJ1Y3QgY2ZnODAyMTU0X2JlYWNvbl9yZXF1ZXN0IHtcbi0tXG5pbmNsdWRlL25ldC9jZmc4MDIxNTQuaC0zNjctLyoqXG5pbmNsdWRlL25ldC9jZmc4MDIxNTQuaDozNjg6ICogc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0IC0gTUFDIHBhY2tldCBkZXNjcmlwdG9yIChiZWFjb24vY29tbWFuZClcbmluY2x1ZGUvbmV0L2NmZzgwMjE1NC5oLTM2OS0gKiBAbm9kZTogTUFDIHBhY2tldHMgdG8gcHJvY2VzcyBsaXN0IG1lbWJlclxuLS1cbmluY2x1ZGUvbmV0L2NmZzgwMjE1NC5oLTM3NS0gKi9cbmluY2x1ZGUvbmV0L2NmZzgwMjE1NC5oOjM3NjpzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3Qge1xuaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmgtMzc3LVx0c3RydWN0IGxpc3RfaGVhZCBub2RlO1xuLS1cbm5ldC9tYWM4MDIxNTQvcnguYz0yND1zdGF0aWMgaW50IGllZWU4MDIxNTRfZGVsaXZlcl9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmMtMzEtXG5uZXQvbWFjODAyMTU0L3J4LmM6MzI6c3RhdGljIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqXG5uZXQvbWFjODAyMTU0L3J4LmMtMzMtbWFjODAyMTU0X3J4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxNTQvcnguYy0zNi17XG5uZXQvbWFjODAyMTU0L3J4LmM6Mzc6XHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3Q7XG5uZXQvbWFjODAyMTU0L3J4LmMtMzgtXG4tLVxubmV0L21hYzgwMjE1NC9yeC5jLTQwLVx0bWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChyeF9saXN0LFxubmV0L21hYzgwMjE1NC9yeC5jOjQxOlx0XHRcdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QsIG5vZGUpO1xubmV0L21hYzgwMjE1NC9yeC5jLTQyLVx0aWYgKG1hY19wa3QpIHtcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmM9NTI9dm9pZCBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L21hYzgwMjE1NC9yeC5jLTU1LVx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGllZWU4MDIxNTRfbG9jYWwsIHJ4X2JlYWNvbl93b3JrKTtcbm5ldC9tYWM4MDIxNTQvcnguYzo1NjpcdHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqbWFjX3BrdDtcbm5ldC9tYWM4MDIxNTQvcnguYy01Ny1cbi0tXG5uZXQvbWFjODAyMTU0L3J4LmM9OTA9dm9pZCBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9tYWM4MDIxNTQvcnguYy05My1cdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsLCByeF9tYWNfY21kX3dvcmspO1xubmV0L21hYzgwMjE1NC9yeC5jOjk0Olx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xubmV0L21hYzgwMjE1NC9yeC5jLTk1LVx0dTggbWFjX2NtZDtcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmM9MTUwPWllZWU4MDIxNTRfc3ViaWZfZnJhbWUoc3RydWN0IGllZWU4MDIxNTRfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxNTQvcnguYy0xNTQtXHRzdHJ1Y3Qgd3Bhbl9kZXYgKndwYW5fZGV2ID0gXHUwMDI2c2RhdGEtXHUwMDNld3Bhbl9kZXY7XG5uZXQvbWFjODAyMTU0L3J4LmM6MTU1Olx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xubmV0L21hYzgwMjE1NC9yeC5jLTE1Ni1cdF9fbGUxNiBzcGFuLCBzc2hvcnQ7XG4tLVxubmV0L21hYzgwMjE1NC9zY2FuLmM9MTA1PXN0YXRpYyB2b2lkIG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyhzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwpXG5uZXQvbWFjODAyMTU0L3NjYW4uYy0xMDYte1xubmV0L21hYzgwMjE1NC9zY2FuLmM6MTA3Olx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0LCAqdG1wO1xubmV0L21hYzgwMjE1NC9zY2FuLmMtMTA4LVx0TElTVF9IRUFEKG1hY19wa3RfbGlzdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2ODgKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVGhvcm91Z2huZXNzIGlzIEtleTogQmVhY29uIFByb2Nlc3NpbmcgJmFtcDsgU2Nhbm5pbmcgUmV2aWV3KioKClJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gYW55IG9uZSBhcmVhLCBJIHNob3VsZCBkbyBhIHF1aWNrIHN3ZWVwLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHdlIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbWFjODAyMTU0X3Byb2Nlc3NfYmVhY29uYCBzcGVjaWZpY2FsbHkg4oCTIHRoYXQmIzM5O3MgYSBwcmltZSBzdXNwZWN0LCBvZiBjb3Vyc2UuIEJ1dCBJIHNob3VsZG4mIzM5O3Qgc3RvcCB0aGVyZS4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gd2UgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgcmVwb3J0ZWQgaXNzdWUsIEkmIzM5O2xsIGFsc28gZ2xhbmNlIHRocm91Z2ggb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgc2VjdGlvbnMgd2l0aGluIGBzY2FuLmNgLiBJdCYjMzk7cyBwb3NzaWJsZSB0aGUgcm9vdCBjYXVzZSBpcyBiZWluZyB0cmlnZ2VyZWQgb3IgbWlzbWFuYWdlZCBpbiBhbm90aGVyIHBhcnQgb2YgdGhlIHNjYW5uaW5nIGxvZ2ljIGl0c2VsZi4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcyB0byBhdm9pZCBhIGZydXN0cmF0aW5nIHdpbGQgZ29vc2UgY2hhc2UgbGF0ZXIuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgZGVidWdnaW5nIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hYzgwMjE1NF9wcm9jZXNzX2JlYWNvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oPTI4MT1pbnQgbWFjODAyMTU0X2Fib3J0X3NjYW5fbG9ja2VkKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmgtMjgyLVx0XHRcdFx0c3RydWN0IGllZWU4MDIxNTRfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmg6MjgzOmludCBtYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24oc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaC0yODQtXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tYWM4MDIxNTQvcnguYz01Mj12b2lkIG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvbWFjODAyMTU0L3J4LmMtNjEtXG5uZXQvbWFjODAyMTU0L3J4LmM6NjI6XHRtYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24obG9jYWwsIG1hY19wa3QtXHUwMDNlc2tiLCBtYWNfcGt0LVx1MDAzZXBhZ2UsIG1hY19wa3QtXHUwMDNlY2hhbm5lbCk7XG5uZXQvbWFjODAyMTU0L3J4LmMtNjMtXG4tLVxubmV0L21hYzgwMjE1NC9zY2FuLmM9MjkwPWludCBtYWM4MDIxNTRfdHJpZ2dlcl9zY2FuX2xvY2tlZChzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjE1NC9zY2FuLmMtMzI1LVxubmV0L21hYzgwMjE1NC9zY2FuLmM6MzI2OmludCBtYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24oc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjE1NC9zY2FuLmMtMzI3LVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQyOAoJCQkJCQkJb3V0cHV0OiAyMDIKCQkJCQkJCXRob3VnaHRzOiA1MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbWFjODAyMTU0IFJ4IFByb2Nlc3NpbmcgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBmb2N1c2VkIG9uIHN0YWJpbGl6aW5nIHRoZSBgbWFjODAyMTU0YCByZWNlaXZlIHBhdGgsIHNwZWNpZmljYWxseSBhZGRyZXNzaW5nIGNvbmN1cnJlbmN5IGFuZCByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgbG9va3MgcHJvbWlzaW5nLgoKRmlyc3QsIEkgc2VlIHRoZSBjb3JlIHByb2JsZW06IGNvbmN1cnJlbnQgYWNjZXNzIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGluIHRoZSBgcnhfYmVhY29uX2xpc3RgIGFuZCBgcnhfbWFjX2NtZF9saXN0YC4gVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgYHJ4X2xpc3RzX2xvY2tgIHNwaW5sb2NrIGlzIGEgc3RhbmRhcmQgYW5kIGVmZmVjdGl2ZSBhcHByb2FjaCB0byBzZXJpYWxpemUgZW5xdWV1ZWluZyBhbmQgZGVxdWV1ZWluZyBvcGVyYXRpb25zLiBUaGlzIGlzIGdvb2Q7IExPQ0tERVAgc2hvdWxkIGNhdGNoIGFueSBpc3N1ZXMgaGVyZS4gVGhlIGBuZXRkZXZpY2VfdHJhY2tlcmAgaXMga2V5IGZvciBwcmV2ZW50aW5nIHRoZSBjbGFzc2ljIHVzZS1hZnRlci1mcmVlIHByb2JsZW0gYXNzb2NpYXRlZCB3aXRoIGBzZGF0YS0mZ3Q7ZGV2YCDigJMgaXQmIzM5O3MgY3J1Y2lhbCB0byB0cmFjayB0aGUgZGV2aWNlJiMzOTtzIGxpZmV0aW1lIHdoZW4gYSBwYWNrZXQgaXMgcXVldWVkLiBUaGF0JiMzOTtzIGEgc29saWQgZGVmZW5zZS4KCk5leHQsIHRoZSB1c2Ugb2YgYGt6YWxsb2Nfb2JqYCBmb3IgYGNmZzgwMjE1NF9tYWNfcGt0YCBhbGxvY2F0aW9ucyBpcyBleGFjdGx5IHdoYXQgSSYjMzk7ZCBleHBlY3QuIFplcm9pbmcgYWxsIGZpZWxkcyBlbGltaW5hdGVzIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkLiBJIG5lZWQgdG8gYmUgc3VyZSB0aG91Z2gsIGFyZSB0aGVyZSBhbnkgaW5mbyBsZWFrcz8gTm8uIFplcm9pbmcgdGhlIGFsbG9jYXRpb25zLCBwYXNzaW5nIGBtYWNfcGt0LSZndDtkZXZfdHJhY2tlcmAgdG8gYG5ldGRldl9ob2xkYCwgYG5ldGRldl9wdXRgLCBhbmQgbm8gbmV3IGBjb3B5X3RvX3VzZXJgIGNhbGxzIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBkYXRhLiBFeGNlbGxlbnQuIE5vIG9idmlvdXMgYXZlbnVlcyBmb3IgbGVha2luZyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS4gTm8gY2hhbmdlcyB0byBib3VuZHMgY2hlY2tpbmcgb3IgbGVuZ3RoIGNhbGN1bGF0aW9uIHRoYXQgd291bGQgYWxsb3cgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBlaXRoZXIuCgpNeSBhbmFseXNpcyBjb25maXJtcyB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IEtNU0FOIGNvbmNlcm5zLiBJdCYjMzk7cyByZWFsbHkgYWJvdXQgY29uY3VycmVuY3kgYW5kIG1lbW9yeSBzYWZldHksIHdoaWNoIGFyZSBwcmVjaXNlbHkgd2hhdCBLQVNBTiBhbmQgTE9DS0RFUCBhcmUgZGVzaWduZWQgZm9yLiBUaGUgbG9ja2luZywgdGhlIHJlZmVyZW5jZSB0cmFja2luZywgYW5kIHRoZSB6ZXJvZWQgbWVtb3J5IGFsbG9jYXRpb25zIGFsbCBwb2ludCB0byB0aGlzLiBJdCBzZWVtcyB0aGF0IHRoaXMgcGF0Y2ggY2FuIGJlIGNsYXNzaWZpZWQgYXMgc2FmZSBmb3IgS1NNQU4uCgpTbywgdGhlIHJlYXNvbmluZyBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogS0FTQU4gYW5kIExPQ0tERVAgYXJlIGZ1bGx5IGFkZXF1YXRlLiBUaGlzIHBhdGNoIGRlYWxzIHdpdGggcmFjZSBjb25kaXRpb25zLCBkZXZpY2UgbGlmZXRpbWUsIGFuZCByZWZjb3VudGluZy4gYGt6YWxsb2Nfb2JqYCB0YWtlcyBjYXJlIG9mIHRoZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gTm8gbmVlZCBmb3IgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcuIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBzeW5jaHJvbml6YXRpb24gYW5kIG5ldGRldiByZWZlcmVuY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIG1hYzgwMjE1NCBSWCBxdWV1ZXMgKGJlYWNvbiBhbmQgTUFDIGNvbW1hbmQgcXVldWVzKS4gSXQgaW50cm9kdWNlcyBhIHNwaW5sb2NrIGByeF9saXN0c19sb2NrYCB0byBwcm90ZWN0IHF1ZXVlIG1hbmlwdWxhdGlvbiBhbmQgdXNlcyBgbmV0ZGV2aWNlX3RyYWNrZXJgIChgbmV0ZGV2X2hvbGRgIC8gYG5ldGRldl9wdXRgKSB0byBzYWZlbHkgcmV0YWluIGRldmljZSByZWZlcmVuY2VzIHVudGlsIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgZnJlZWQuXG5cbktBU0FOLCBMT0NLREVQLCBhbmQgdGhlIG5ldGRldiByZWZjb3VudCB0cmFja2VyIGFkZXF1YXRlbHkgY292ZXIgdGhlIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhdGNoIChzdWNoIGFzIHJhY2UgY29uZGl0aW9ucywgZGVhZGxvY2tzLCBhbmQgdXNlLWFmdGVyLWZyZWUvbGlmZXRpbWUgYnVncykuIGBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3RgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgZW5zdXJpbmcgYWxsIGZpZWxkcyBhcmUgemVyby1pbml0aWFsaXplZC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgcmVhZCwgYnJhbmNoZWQgb24sIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHN5bmNocm9uaXphdGlvbiBhbmQgbmV0ZGV2IHJlZmVyZW5jZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgbWFjODAyMTU0IFJYIHF1ZXVlcyAoYmVhY29uIGFuZCBNQUMgY29tbWFuZCBxdWV1ZXMpLiBJdCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgYHJ4X2xpc3RzX2xvY2tgIHRvIHByb3RlY3QgcXVldWUgbWFuaXB1bGF0aW9uIGFuZCB1c2VzIGBuZXRkZXZpY2VfdHJhY2tlcmAgKGBuZXRkZXZfaG9sZGAgLyBgbmV0ZGV2X3B1dGApIHRvIHNhZmVseSByZXRhaW4gZGV2aWNlIHJlZmVyZW5jZXMgdW50aWwgcGFja2V0cyBhcmUgcHJvY2Vzc2VkIGFuZCBmcmVlZC5cblxuS0FTQU4sIExPQ0tERVAsIGFuZCB0aGUgbmV0ZGV2IHJlZmNvdW50IHRyYWNrZXIgYWRlcXVhdGVseSBjb3ZlciB0aGUgcmlza3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgcmFjZSBjb25kaXRpb25zLCBkZWFkbG9ja3MsIGFuZCB1c2UtYWZ0ZXItZnJlZS9saWZldGltZSBidWdzKS4gYHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmpgLCBlbnN1cmluZyBhbGwgZmllbGRzIGFyZSB6ZXJvLWluaXRpYWxpemVkLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkLCBicmFuY2hlZCBvbiwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxMjo1Ni41NTg5MTcyMTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDcwNDc2NjIyNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUVFRTgwMjE1NFwiLFxuICAgIFwiTUFDODAyMTU0XCIsXG4gICAgXCJJRUVFODAyMTU0X0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJcIixcbiAgICBcIm1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlclwiLFxuICAgIFwibWFjODAyMTU0X3J4X2RlcXVldWVcIixcbiAgICBcImllZWU4MDIxNTRfc3ViaWZfZnJhbWVcIixcbiAgICBcIm1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29uc1wiLFxuICAgIFwiaWVlZTgwMjE1NF9hbGxvY19od1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgc3luY2hyb25pemF0aW9uIGFuZCBuZXRkZXYgcmVmZXJlbmNlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZvciBtYWM4MDIxNTQgUlggcXVldWVzIChiZWFjb24gYW5kIE1BQyBjb21tYW5kIHF1ZXVlcykuIEl0IGludHJvZHVjZXMgYSBzcGlubG9jayBgcnhfbGlzdHNfbG9ja2AgdG8gcHJvdGVjdCBxdWV1ZSBtYW5pcHVsYXRpb24gYW5kIHVzZXMgYG5ldGRldmljZV90cmFja2VyYCAoYG5ldGRldl9ob2xkYCAvIGBuZXRkZXZfcHV0YCkgdG8gc2FmZWx5IHJldGFpbiBkZXZpY2UgcmVmZXJlbmNlcyB1bnRpbCBwYWNrZXRzIGFyZSBwcm9jZXNzZWQgYW5kIGZyZWVkLlxcblxcbktBU0FOLCBMT0NLREVQLCBhbmQgdGhlIG5ldGRldiByZWZjb3VudCB0cmFja2VyIGFkZXF1YXRlbHkgY292ZXIgdGhlIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhdGNoIChzdWNoIGFzIHJhY2UgY29uZGl0aW9ucywgZGVhZGxvY2tzLCBhbmQgdXNlLWFmdGVyLWZyZWUvbGlmZXRpbWUgYnVncykuIGBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3RgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgZW5zdXJpbmcgYWxsIGZpZWxkcyBhcmUgemVyby1pbml0aWFsaXplZC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgcmVhZCwgYnJhbmNoZWQgb24sIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgUlggYW5kIHF1ZXVlIG1hbmFnZW1lbnQgaW4gdGhlIG1hYzgwMjE1NCBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgZGVkaWNhdGVkIHNwaW5sb2NrIChyeF9saXN0c19sb2NrKSB0byBwcm90ZWN0IHJ4X2JlYWNvbl9saXN0IGFuZCByeF9tYWNfY21kX2xpc3QsIHVwZGF0aW5nIHRoZSB3b3JrZXIgZGVxdWV1ZSBsb2dpYywgYW5kIHRha2luZy9yZWxlYXNpbmcgbmV0ZGV2aWNlIHJlZmVyZW5jZSB0cmFja2VycyAobmV0ZGV2X2hvbGQvbmV0ZGV2X3B1dCkgd2hlbiBxdWV1ZWluZyBhbmQgcHJvY2Vzc2luZyBNQUMgcGFja2V0cy4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgbWFjODAyMTU0IHZpcnR1YWwgZHJpdmVycyAobWFjODAyMTU0X2h3c2ltKSBhbmQgc3RhbmRhcmQgSUVFRSA4MDIuMTUuNCBuZXR3b3JrIGludGVyZmFjZXMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nIGZvciBjb25jdXJyZW5jeSBidWdzLCBkZWFkbG9ja3MsIGFuZCBuZXRkZXYgcmVmY291bnRpbmcgaXNzdWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxMjo1Ni41NTg5MjMyMzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NzYyNzgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJlMjhjM2FkODQyMTU3OTNmMzc0NWNhNGUzZGQ3ZTE5Mjk2MzY3YmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBTZXAgNCAxODoxMjo1NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaCBiL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oXFxuaW5kZXggNzZkMmNkMmUyYjMwOS4uNTczNDM3NjJkN2YwYiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oXFxuQEAgLTM2OSw2ICszNjksNyBAQCBzdHJ1Y3QgY2ZnODAyMTU0X2JlYWNvbl9yZXF1ZXN0IHtcXG4gICogQG5vZGU6IE1BQyBwYWNrZXRzIHRvIHByb2Nlc3MgbGlzdCBtZW1iZXJcXG4gICogQHNrYjogdGhlIHJlY2VpdmVkIHNrX2J1ZmZcXG4gICogQHNkYXRhOiB0aGUgaW50ZXJmYWNlIG9uIHdoaWNoIEBza2Igd2FzIHJlY2VpdmVkXFxuKyAqIEBkZXZfdHJhY2tlcjogbmV0ZGV2IHJlZmVyZW5jZSBoZWxkIHVudGlsIHRoZSBkZXNjcmlwdG9yIGlzIHJlbGVhc2VkXFxuICAqIEBwYWdlOiBwYWdlIGNvbmZpZ3VyYXRpb24gd2hlbiBAc2tiIHdhcyByZWNlaXZlZFxcbiAgKiBAY2hhbm5lbDogY2hhbm5lbCBjb25maWd1cmF0aW9uIHdoZW4gQHNrYiB3YXMgcmVjZWl2ZWRcXG4gICovXFxuQEAgLTM3Niw2ICszNzcsNyBAQCBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3Qge1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YTtcXG4rXFx0bmV0ZGV2aWNlX3RyYWNrZXIgZGV2X3RyYWNrZXI7XFxuIFxcdHU4IHBhZ2U7XFxuIFxcdHU4IGNoYW5uZWw7XFxuIH07XFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmggYi9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oXFxuaW5kZXggOGYyYmZmMjY4MzkyYi4uMDk2ZTZmMDM0MGRjNyAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oXFxuKysrIGIvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaFxcbkBAIC03NCw2ICs3NCw4IEBAIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsIHtcXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0IHJ4X2JlYWNvbl93b3JrO1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIHJ4X21hY19jbWRfbGlzdDtcXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0IHJ4X21hY19jbWRfd29yaztcXG4rXFx0LyogUHJvdGVjdHMgcnhfYmVhY29uX2xpc3QgYW5kIHJ4X21hY19jbWRfbGlzdC4gKi9cXG4rXFx0c3BpbmxvY2tfdCByeF9saXN0c19sb2NrO1xcbiBcXG4gXFx0LyogQXNzb2NpYXRpb24gKi9cXG4gXFx0c3RydWN0IGllZWU4MDIxNTRfcGFuX2RldmljZSAqYXNzb2NfZGV2O1xcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L21haW4uYyBiL25ldC9tYWM4MDIxNTQvbWFpbi5jXFxuaW5kZXggZWExZWZlZjM1NzJhZS4uYTZhOTc2YjBkZWE1NiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTU0L21haW4uY1xcbisrKyBiL25ldC9tYWM4MDIxNTQvbWFpbi5jXFxuQEAgLTkxLDYgKzkxLDcgQEAgaWVlZTgwMjE1NF9hbGxvY19odyhzaXplX3QgcHJpdl9kYXRhX2xlbiwgY29uc3Qgc3RydWN0IGllZWU4MDIxNTRfb3BzICpvcHMpXFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZsb2NhbC1cXHUwMDNlaW50ZXJmYWNlcyk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfYmVhY29uX2xpc3QpO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X21hY19jbWRfbGlzdCk7XFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfbGlzdHNfbG9jayk7XFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNmxvY2FsLVxcdTAwM2VpZmxpc3RfbXR4KTtcXG4gXFxuIFxcdHRhc2tsZXRfc2V0dXAoXFx1MDAyNmxvY2FsLVxcdTAwM2V0YXNrbGV0LCBpZWVlODAyMTU0X3Rhc2tsZXRfaGFuZGxlcik7XFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvcnguYyBiL25ldC9tYWM4MDIxNTQvcnguY1xcbmluZGV4IGNkOGYyYTExOTIwZDAuLmRmMmY2MTI4ZGRkNGEgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjE1NC9yeC5jXFxuKysrIGIvbmV0L21hYzgwMjE1NC9yeC5jXFxuQEAgLTI5LDIxICsyOSw0MCBAQCBzdGF0aWMgaW50IGllZWU4MDIxNTRfZGVsaXZlcl9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0cmV0dXJuIG5ldGlmX3JlY2VpdmVfc2tiKHNrYik7XFxuIH1cXG4gXFxuK3N0YXRpYyBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKlxcbittYWM4MDIxNTRfcnhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsXFxuK1xcdFxcdCAgICAgc3RydWN0IGxpc3RfaGVhZCAqcnhfbGlzdCxcXG4rXFx0XFx0ICAgICBzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuK3tcXG4rXFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfbGlzdHNfbG9jayk7XFxuK1xcdG1hY19wa3QgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwocnhfbGlzdCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTtcXG4rXFx0aWYgKG1hY19wa3QpIHtcXG4rXFx0XFx0bGlzdF9kZWwoXFx1MDAyNm1hY19wa3QtXFx1MDAzZW5vZGUpO1xcbitcXHRcXHRpZiAoIWxpc3RfZW1wdHkocnhfbGlzdCkpXFxuK1xcdFxcdFxcdHF1ZXVlX3dvcmsobG9jYWwtXFx1MDAzZW1hY193cSwgd29yayk7XFxuK1xcdH1cXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmxvY2FsLVxcdTAwM2VyeF9saXN0c19sb2NrKTtcXG4rXFxuK1xcdHJldHVybiBtYWNfcGt0O1xcbit9XFxuK1xcbiB2b2lkIG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwgPVxcbiBcXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGllZWU4MDIxNTRfbG9jYWwsIHJ4X2JlYWNvbl93b3JrKTtcXG4gXFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xcbiBcXG4tXFx0bWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X2JlYWNvbl9saXN0LFxcbi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QsIG5vZGUpO1xcbitcXHRtYWNfcGt0ID0gbWFjODAyMTU0X3J4X2RlcXVldWUobG9jYWwsIFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfYmVhY29uX2xpc3QsIHdvcmspO1xcbiBcXHRpZiAoIW1hY19wa3QpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdG1hYzgwMjE1NF9wcm9jZXNzX2JlYWNvbihsb2NhbCwgbWFjX3BrdC1cXHUwMDNlc2tiLCBtYWNfcGt0LVxcdTAwM2VwYWdlLCBtYWNfcGt0LVxcdTAwM2VjaGFubmVsKTtcXG4gXFxuLVxcdGxpc3RfZGVsKFxcdTAwMjZtYWNfcGt0LVxcdTAwM2Vub2RlKTtcXG4gXFx0a2ZyZWVfc2tiKG1hY19wa3QtXFx1MDAzZXNrYik7XFxuK1xcdG5ldGRldl9wdXQobWFjX3BrdC1cXHUwMDNlc2RhdGEtXFx1MDAzZWRldiwgXFx1MDAyNm1hY19wa3QtXFx1MDAzZWRldl90cmFja2VyKTtcXG4gXFx0a2ZyZWUobWFjX3BrdCk7XFxuIH1cXG4gXFxuQEAgLTc2LDggKzk1LDcgQEAgdm9pZCBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHR1OCBtYWNfY21kO1xcbiBcXHRpbnQgcmM7XFxuIFxcbi1cXHRtYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfbWFjX2NtZF9saXN0LFxcbi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QsIG5vZGUpO1xcbitcXHRtYWNfcGt0ID0gbWFjODAyMTU0X3J4X2RlcXVldWUobG9jYWwsIFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfbWFjX2NtZF9saXN0LCB3b3JrKTtcXG4gXFx0aWYgKCFtYWNfcGt0KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbkBAIC0xMjMsOCArMTQxLDggQEAgdm9pZCBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHR9XFxuIFxcbiBvdXQ6XFxuLVxcdGxpc3RfZGVsKFxcdTAwMjZtYWNfcGt0LVxcdTAwM2Vub2RlKTtcXG4gXFx0a2ZyZWVfc2tiKG1hY19wa3QtXFx1MDAzZXNrYik7XFxuK1xcdG5ldGRldl9wdXQobWFjX3BrdC1cXHUwMDNlc2RhdGEtXFx1MDAzZWRldiwgXFx1MDAyNm1hY19wa3QtXFx1MDAzZWRldl90cmFja2VyKTtcXG4gXFx0a2ZyZWUobWFjX3BrdCk7XFxuIH1cXG4gXFxuQEAgLTIyMSw4ICsyMzksMTEgQEAgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcdFxcdG1hY19wa3QtXFx1MDAzZXNkYXRhID0gc2RhdGE7XFxuIFxcdFxcdG1hY19wa3QtXFx1MDAzZXBhZ2UgPSBzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXNjYW5fcGFnZTtcXG4gXFx0XFx0bWFjX3BrdC1cXHUwMDNlY2hhbm5lbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlc2Nhbl9jaGFubmVsO1xcbitcXHRcXHRuZXRkZXZfaG9sZChzZGF0YS1cXHUwMDNlZGV2LCBcXHUwMDI2bWFjX3BrdC1cXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xcbitcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfbGlzdHNfbG9jayk7XFxuIFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm1hY19wa3QtXFx1MDAzZW5vZGUsIFxcdTAwMjZzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2JlYWNvbl9saXN0KTtcXG4gXFx0XFx0cXVldWVfd29yayhzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZW1hY193cSwgXFx1MDAyNnNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfYmVhY29uX3dvcmspO1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9saXN0c19sb2NrKTtcXG4gXFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiBcXG4gXFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfTUFDX0NNRDpcXG5AQCAtMjMzLDggKzI1NCwxMSBAQCBpZWVlODAyMTU0X3N1YmlmX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFxuIFxcdFxcdG1hY19wa3QtXFx1MDAzZXNrYiA9IHNrYl9nZXQoc2tiKTtcXG4gXFx0XFx0bWFjX3BrdC1cXHUwMDNlc2RhdGEgPSBzZGF0YTtcXG4rXFx0XFx0bmV0ZGV2X2hvbGQoc2RhdGEtXFx1MDAzZWRldiwgXFx1MDAyNm1hY19wa3QtXFx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcXG4rXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2xpc3RzX2xvY2spO1xcbiBcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZtYWNfcGt0LVxcdTAwM2Vub2RlLCBcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9tYWNfY21kX2xpc3QpO1xcbiBcXHRcXHRxdWV1ZV93b3JrKHNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlbWFjX3dxLCBcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9tYWNfY21kX3dvcmspO1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9saXN0c19sb2NrKTtcXG4gXFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiBcXG4gXFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfQUNLOlxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L3NjYW4uYyBiL25ldC9tYWM4MDIxNTQvc2Nhbi5jXFxuaW5kZXggMDA1MzM4Zjg5Yjc1ZS4uYzNjNjFlYmRlMTU2OCAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTU0L3NjYW4uY1xcbisrKyBiL25ldC9tYWM4MDIxNTQvc2Nhbi5jXFxuQEAgLTEwNSwxMCArMTA1LDE2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbWFjODAyMTU0X3NjYW5fZ2V0X2NoYW5uZWxfdGltZSh1OCBkdXJhdGlvbl9vcmRlcixcXG4gc3RhdGljIHZvaWQgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbClcXG4ge1xcbiBcXHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3QsICp0bXA7XFxuK1xcdExJU1RfSEVBRChtYWNfcGt0X2xpc3QpO1xcbiBcXG4tXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1hY19wa3QsIHRtcCwgXFx1MDAyNmxvY2FsLVxcdTAwM2VyeF9iZWFjb25fbGlzdCwgbm9kZSkge1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmxvY2FsLVxcdTAwM2VyeF9saXN0c19sb2NrKTtcXG4rXFx0bGlzdF9zcGxpY2VfaW5pdChcXHUwMDI2bG9jYWwtXFx1MDAzZXJ4X2JlYWNvbl9saXN0LCBcXHUwMDI2bWFjX3BrdF9saXN0KTtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmxvY2FsLVxcdTAwM2VyeF9saXN0c19sb2NrKTtcXG4rXFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtYWNfcGt0LCB0bXAsIFxcdTAwMjZtYWNfcGt0X2xpc3QsIG5vZGUpIHtcXG4gXFx0XFx0bGlzdF9kZWwoXFx1MDAyNm1hY19wa3QtXFx1MDAzZW5vZGUpO1xcbiBcXHRcXHRrZnJlZV9za2IobWFjX3BrdC1cXHUwMDNlc2tiKTtcXG4rXFx0XFx0bmV0ZGV2X3B1dChtYWNfcGt0LVxcdTAwM2VzZGF0YS1cXHUwMDNlZGV2LCBcXHUwMDI2bWFjX3BrdC1cXHUwMDNlZGV2X3RyYWNrZXIpO1xcbiBcXHRcXHRrZnJlZShtYWNfcGt0KTtcXG4gXFx0fVxcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEyOjU3LjA1NzMxNjc1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzUxNjA3NTY0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUVFRTgwMjE1NFwiLFxuICAgIFwiTUFDODAyMTU0XCIsXG4gICAgXCJJRUVFODAyMTU0X0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJcIixcbiAgICBcIm1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlclwiLFxuICAgIFwibWFjODAyMTU0X3J4X2RlcXVldWVcIixcbiAgICBcImllZWU4MDIxNTRfc3ViaWZfZnJhbWVcIixcbiAgICBcIm1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29uc1wiLFxuICAgIFwiaWVlZTgwMjE1NF9hbGxvY19od1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCBSWCBhbmQgcXVldWUgbWFuYWdlbWVudCBpbiB0aGUgbWFjODAyMTU0IHN1YnN5c3RlbSBieSBhZGRpbmcgYSBkZWRpY2F0ZWQgc3BpbmxvY2sgKHJ4X2xpc3RzX2xvY2spIHRvIHByb3RlY3QgcnhfYmVhY29uX2xpc3QgYW5kIHJ4X21hY19jbWRfbGlzdCwgdXBkYXRpbmcgdGhlIHdvcmtlciBkZXF1ZXVlIGxvZ2ljLCBhbmQgdGFraW5nL3JlbGVhc2luZyBuZXRkZXZpY2UgcmVmZXJlbmNlIHRyYWNrZXJzIChuZXRkZXZfaG9sZC9uZXRkZXZfcHV0KSB3aGVuIHF1ZXVlaW5nIGFuZCBwcm9jZXNzaW5nIE1BQyBwYWNrZXRzLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSBtYWM4MDIxNTQgdmlydHVhbCBkcml2ZXJzIChtYWM4MDIxNTRfaHdzaW0pIGFuZCBzdGFuZGFyZCBJRUVFIDgwMi4xNS40IG5ldHdvcmsgaW50ZXJmYWNlcywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcgZm9yIGNvbmN1cnJlbmN5IGJ1Z3MsIGRlYWRsb2NrcywgYW5kIG5ldGRldiByZWZjb3VudGluZyBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmUyOGMzYWQ4NDIxNTc5M2YzNzQ1Y2E0ZTNkZDdlMTkyOTYzNjdiZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTg6MTI6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaCBiL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oXG5pbmRleCA3NmQyY2QyZTJiMzA5Li41NzM0Mzc2MmQ3ZjBiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmhcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oXG5AQCAtMzY5LDYgKzM2OSw3IEBAIHN0cnVjdCBjZmc4MDIxNTRfYmVhY29uX3JlcXVlc3Qge1xuICAqIEBub2RlOiBNQUMgcGFja2V0cyB0byBwcm9jZXNzIGxpc3QgbWVtYmVyXG4gICogQHNrYjogdGhlIHJlY2VpdmVkIHNrX2J1ZmZcbiAgKiBAc2RhdGE6IHRoZSBpbnRlcmZhY2Ugb24gd2hpY2ggQHNrYiB3YXMgcmVjZWl2ZWRcbisgKiBAZGV2X3RyYWNrZXI6IG5ldGRldiByZWZlcmVuY2UgaGVsZCB1bnRpbCB0aGUgZGVzY3JpcHRvciBpcyByZWxlYXNlZFxuICAqIEBwYWdlOiBwYWdlIGNvbmZpZ3VyYXRpb24gd2hlbiBAc2tiIHdhcyByZWNlaXZlZFxuICAqIEBjaGFubmVsOiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gd2hlbiBAc2tiIHdhcyByZWNlaXZlZFxuICAqL1xuQEAgLTM3Niw2ICszNzcsNyBAQCBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3Qge1xuIFx0c3RydWN0IGxpc3RfaGVhZCBub2RlO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcdHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YTtcbitcdG5ldGRldmljZV90cmFja2VyIGRldl90cmFja2VyO1xuIFx0dTggcGFnZTtcbiBcdHU4IGNoYW5uZWw7XG4gfTtcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oIGIvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaFxuaW5kZXggOGYyYmZmMjY4MzkyYi4uMDk2ZTZmMDM0MGRjNyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmhcbisrKyBiL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmhcbkBAIC03NCw2ICs3NCw4IEBAIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsIHtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCByeF9iZWFjb25fd29yaztcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcnhfbWFjX2NtZF9saXN0O1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IHJ4X21hY19jbWRfd29yaztcbitcdC8qIFByb3RlY3RzIHJ4X2JlYWNvbl9saXN0IGFuZCByeF9tYWNfY21kX2xpc3QuICovXG4rXHRzcGlubG9ja190IHJ4X2xpc3RzX2xvY2s7XG4gXG4gXHQvKiBBc3NvY2lhdGlvbiAqL1xuIFx0c3RydWN0IGllZWU4MDIxNTRfcGFuX2RldmljZSAqYXNzb2NfZGV2O1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvbWFpbi5jIGIvbmV0L21hYzgwMjE1NC9tYWluLmNcbmluZGV4IGVhMWVmZWYzNTcyYWUuLmE2YTk3NmIwZGVhNTYgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTU0L21haW4uY1xuKysrIGIvbmV0L21hYzgwMjE1NC9tYWluLmNcbkBAIC05MSw2ICs5MSw3IEBAIGllZWU4MDIxNTRfYWxsb2NfaHcoc2l6ZV90IHByaXZfZGF0YV9sZW4sIGNvbnN0IHN0cnVjdCBpZWVlODAyMTU0X29wcyAqb3BzKVxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bG9jYWwtXHUwMDNlaW50ZXJmYWNlcyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZsb2NhbC1cdTAwM2VyeF9tYWNfY21kX2xpc3QpO1xuK1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4gXHRtdXRleF9pbml0KFx1MDAyNmxvY2FsLVx1MDAzZWlmbGlzdF9tdHgpO1xuIFxuIFx0dGFza2xldF9zZXR1cChcdTAwMjZsb2NhbC1cdTAwM2V0YXNrbGV0LCBpZWVlODAyMTU0X3Rhc2tsZXRfaGFuZGxlcik7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjE1NC9yeC5jIGIvbmV0L21hYzgwMjE1NC9yeC5jXG5pbmRleCBjZDhmMmExMTkyMGQwLi5kZjJmNjEyOGRkZDRhIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjE1NC9yeC5jXG4rKysgYi9uZXQvbWFjODAyMTU0L3J4LmNcbkBAIC0yOSwyMSArMjksNDAgQEAgc3RhdGljIGludCBpZWVlODAyMTU0X2RlbGl2ZXJfc2tiKHN0cnVjdCBza19idWZmICpza2IpXG4gXHRyZXR1cm4gbmV0aWZfcmVjZWl2ZV9za2Ioc2tiKTtcbiB9XG4gXG4rc3RhdGljIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqXG4rbWFjODAyMTU0X3J4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxuK1x0XHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ4X2xpc3QsXG4rXHRcdCAgICAgc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuK3tcbitcdHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqbWFjX3BrdDtcbitcbitcdHNwaW5fbG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbitcdG1hY19wa3QgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwocnhfbGlzdCxcbitcdFx0XHRcdFx0ICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTtcbitcdGlmIChtYWNfcGt0KSB7XG4rXHRcdGxpc3RfZGVsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSk7XG4rXHRcdGlmICghbGlzdF9lbXB0eShyeF9saXN0KSlcbitcdFx0XHRxdWV1ZV93b3JrKGxvY2FsLVx1MDAzZW1hY193cSwgd29yayk7XG4rXHR9XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbitcbitcdHJldHVybiBtYWNfcGt0O1xuK31cbitcbiB2b2lkIG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwgPVxuIFx0XHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGllZWU4MDIxNTRfbG9jYWwsIHJ4X2JlYWNvbl93b3JrKTtcbiBcdHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqbWFjX3BrdDtcbiBcbi1cdG1hY19wa3QgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXHUwMDI2bG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QsXG4tXHRcdFx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7XG4rXHRtYWNfcGt0ID0gbWFjODAyMTU0X3J4X2RlcXVldWUobG9jYWwsIFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2JlYWNvbl9saXN0LCB3b3JrKTtcbiBcdGlmICghbWFjX3BrdClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0bWFjODAyMTU0X3Byb2Nlc3NfYmVhY29uKGxvY2FsLCBtYWNfcGt0LVx1MDAzZXNrYiwgbWFjX3BrdC1cdTAwM2VwYWdlLCBtYWNfcGt0LVx1MDAzZWNoYW5uZWwpO1xuIFxuLVx0bGlzdF9kZWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlKTtcbiBcdGtmcmVlX3NrYihtYWNfcGt0LVx1MDAzZXNrYik7XG4rXHRuZXRkZXZfcHV0KG1hY19wa3QtXHUwMDNlc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyKTtcbiBcdGtmcmVlKG1hY19wa3QpO1xuIH1cbiBcbkBAIC03Niw4ICs5NSw3IEBAIHZvaWQgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHU4IG1hY19jbWQ7XG4gXHRpbnQgcmM7XG4gXG4tXHRtYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmxvY2FsLVx1MDAzZXJ4X21hY19jbWRfbGlzdCxcbi1cdFx0XHRcdFx0ICAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0LCBub2RlKTtcbitcdG1hY19wa3QgPSBtYWM4MDIxNTRfcnhfZGVxdWV1ZShsb2NhbCwgXHUwMDI2bG9jYWwtXHUwMDNlcnhfbWFjX2NtZF9saXN0LCB3b3JrKTtcbiBcdGlmICghbWFjX3BrdClcbiBcdFx0cmV0dXJuO1xuIFxuQEAgLTEyMyw4ICsxNDEsOCBAQCB2b2lkIG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHR9XG4gXG4gb3V0OlxuLVx0bGlzdF9kZWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlKTtcbiBcdGtmcmVlX3NrYihtYWNfcGt0LVx1MDAzZXNrYik7XG4rXHRuZXRkZXZfcHV0KG1hY19wa3QtXHUwMDNlc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyKTtcbiBcdGtmcmVlKG1hY19wa3QpO1xuIH1cbiBcbkBAIC0yMjEsOCArMjM5LDExIEBAIGllZWU4MDIxNTRfc3ViaWZfZnJhbWUoc3RydWN0IGllZWU4MDIxNTRfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRtYWNfcGt0LVx1MDAzZXNkYXRhID0gc2RhdGE7XG4gXHRcdG1hY19wa3QtXHUwMDNlcGFnZSA9IHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXNjYW5fcGFnZTtcbiBcdFx0bWFjX3BrdC1cdTAwM2VjaGFubmVsID0gc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlc2Nhbl9jaGFubmVsO1xuK1x0XHRuZXRkZXZfaG9sZChzZGF0YS1cdTAwM2VkZXYsIFx1MDAyNm1hY19wa3QtXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlLCBcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCk7XG4gXHRcdHF1ZXVlX3dvcmsoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlbWFjX3dxLCBcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9iZWFjb25fd29yayk7XG4rXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIFx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4gXG4gXHRjYXNlIElFRUU4MDIxNTRfRkNfVFlQRV9NQUNfQ01EOlxuQEAgLTIzMyw4ICsyNTQsMTEgQEAgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXG4gXHRcdG1hY19wa3QtXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xuIFx0XHRtYWNfcGt0LVx1MDAzZXNkYXRhID0gc2RhdGE7XG4rXHRcdG5ldGRldl9ob2xkKHNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bWFjX3BrdC1cdTAwM2VkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7XG4rXHRcdHNwaW5fbG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiBcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZtYWNfcGt0LVx1MDAzZW5vZGUsIFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X21hY19jbWRfbGlzdCk7XG4gXHRcdHF1ZXVlX3dvcmsoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlbWFjX3dxLCBcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9tYWNfY21kX3dvcmspO1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiBcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIFxuIFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfQUNLOlxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvc2Nhbi5jIGIvbmV0L21hYzgwMjE1NC9zY2FuLmNcbmluZGV4IDAwNTMzOGY4OWI3NWUuLmMzYzYxZWJkZTE1NjggMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTU0L3NjYW4uY1xuKysrIGIvbmV0L21hYzgwMjE1NC9zY2FuLmNcbkBAIC0xMDUsMTAgKzEwNSwxNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG1hYzgwMjE1NF9zY2FuX2dldF9jaGFubmVsX3RpbWUodTggZHVyYXRpb25fb3JkZXIsXG4gc3RhdGljIHZvaWQgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbClcbiB7XG4gXHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3QsICp0bXA7XG4rXHRMSVNUX0hFQUQobWFjX3BrdF9saXN0KTtcbiBcbi1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtYWNfcGt0LCB0bXAsIFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2JlYWNvbl9saXN0LCBub2RlKSB7XG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4rXHRsaXN0X3NwbGljZV9pbml0KFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2JlYWNvbl9saXN0LCBcdTAwMjZtYWNfcGt0X2xpc3QpO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4rXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobWFjX3BrdCwgdG1wLCBcdTAwMjZtYWNfcGt0X2xpc3QsIG5vZGUpIHtcbiBcdFx0bGlzdF9kZWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlKTtcbiBcdFx0a2ZyZWVfc2tiKG1hY19wa3QtXHUwMDNlc2tiKTtcbitcdFx0bmV0ZGV2X3B1dChtYWNfcGt0LVx1MDAzZXNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bWFjX3BrdC1cdTAwM2VkZXZfdHJhY2tlcik7XG4gXHRcdGtmcmVlKG1hY19wa3QpO1xuIFx0fVxuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEyOjU3LjA1NzMxODUxOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzMDU5Nzc4MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgODAyLjE1LjQgTUFDIExheWVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IGZvY3VzZWQgb24gdGhlIGBuZXQvbWFjODAyMTU0L2Agc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYGllZWU4MDIxNTRfaS5oYCwgYG1haW4uY2AsIGByeC5jYCwgYHNjYW4uY2AsIGFuZCBgaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBicmVhayBkb3duIHRoZSBjaGFuZ2VzIGFuZCB1bmRlcnN0YW5kIHRoZWlyIGltcGxpY2F0aW9ucyBmb3IgY29uY3VycmVuY3kgYW5kIGRldmljZSB0cmFja2luZy5cblxuRmlyc3QsIGBjZmc4MDIxNTRfbWFjX3BrdGAgaGFzIHRoaXMgYG5ldGRldmljZV90cmFja2VyIGRldl90cmFja2VyO2AgYWRkZWQuIFRoaXMgc3VnZ2VzdHMgdGhleSBhcmUgaW5jb3Jwb3JhdGluZyBhIGRldmljZSB0cmFja2luZyBtZWNoYW5pc20gd2l0aGluIHRoZSBwYWNrZXQgc3RydWN0dXJlLCBwcm9iYWJseSBmb3IgcmVmZXJlbmNlIGNvdW50aW5nIG9yIGxpZmVjeWNsZSBtYW5hZ2VtZW50LCB3aGljaCBpcyBpbXBvcnRhbnQuXG5cblRoZW4sIGluIGBpZWVlODAyMTU0X2xvY2FsYCB0aGVyZeKAmXMgYSBuZXcgYHNwaW5sb2NrX3QgcnhfbGlzdHNfbG9jaztgLiBBaGEhIFRoaXMgaXMgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSwgY2xlYXJseSBhaW1pbmcgdG8gcHJvdGVjdCBjb25jdXJyZW50IGFjY2VzcyB0byBgcnhfYmVhY29uX2xpc3RgIGFuZCBgcnhfbWFjX2NtZF9saXN0YC4gVGhlIGBzcGluX2xvY2tfaW5pdGAgaW4gYG1haW4uY2AgY29uZmlybXMgdGhpcy4gVGhpcyBpcyBnb29kIHRvIHNlZTsgc2hhcmVkIGRhdGEgc3RydWN0dXJlcyBpbiBuZXR3b3JrIHN0YWNrcyBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgcmFjZSBjb25kaXRpb25zLCBzbyBleHBsaWNpdCBsb2NraW5nIGlzIGEgbmVjZXNzaXR5LlxuXG5UaGUgYHJ4LmNgIGNoYW5nZXMgYXJlIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYG1hYzgwMjE1NF9yeF9kZXF1ZXVlYCBpbXBsaWVzIGEgbmV3IG1ldGhvZCBmb3IgaGFuZGxpbmcgcmVjZWl2ZWQgcGFja2V0cywgYW5kIHRoZSB1c2Ugb2YgdGhlIGByeF9saXN0c19sb2NrYCB3aXRoaW4gdGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCB0aGUgdXBkYXRlcyB0byBgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJgIGFuZCBgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyYCB0byB1c2UgaXQsIHNvbGlkaWZpZXMgdGhlIGludGVudGlvbiBvZiB0aHJlYWQtc2FmZXR5LiBUaGUgYWRkaXRpb24gb2YgYGRldl90cmFja2VyYCBpbiB0aGVzZSB3b3JrZXJzIGlzIGxvZ2ljYWwuIEkgY2FuIHNlZSB0aGUgbGlzdCBtYW5hZ2VtZW50IGFuZCBwYWNrZXQgbGlmZWN5Y2xlIGFyZSBub3cgdGlnaHRseSBjb250cm9sbGVkIHdpdGhpbiB0aGUgbG9ja2luZyBjb250ZXh0LiBBbHNvLCB0aGUgYG5ldGRldl9ob2xkYCB1c2FnZSBpbiBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAgaW5kaWNhdGVzIGRldmljZSByZWZlcmVuY2UgdHJhY2tpbmcsIHRpZWQgdG8gdGhlIGBkZXZfdHJhY2tlcmAuXG5cbkZpbmFsbHksIHRoZSB1cGRhdGVzIHRvIGBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnNgIGluIGBzY2FuLmNgIHJlaW5mb3JjZSB0aGUgc2FtZSBwYXR0ZXJuOiBsaXN0IGxvY2tpbmcgYW5kIGRldmljZSB0cmFja2VyIGhhbmRsaW5nLiBUaGV5J3JlIG1ha2luZyBhIGdvb2QgZWZmb3J0IHRvIGVuc3VyZSBjb2hlcmVuY2Ugd2hlbiBtb3ZpbmcgZGF0YSBiZXR3ZWVuIGxpc3RzIGFuZCB0aHJlYWRzLlxuXG5Ob3csIGFzIGEgbmV4dCBzdGVwLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZnV6emluZyBhdHRhY2sgc3VyZmFjZS4gSXQgbG9va3MgbGlrZSBgbWFjODAyMTU0YCBoYXMgbXVsdGlwbGUgaW50ZXJmYWNlcyBmb3IgaW50ZXJhY3Rpb24sIGluY2x1ZGluZyB0aGUgYG1hYzgwMjE1NF9od3NpbWAsIG5ldGxpbmssIDZMb1dQQU4sIGFuZCBzb2NrZXRzLiBUaGF0J3MgZ29vZCDigJMgcGxlbnR5IG9mIGVudHJ5IHBvaW50cyBmb3IgdnVsbmVyYWJpbGl0eSByZXNlYXJjaCBhbmQsIGltcG9ydGFudGx5LCBTeXprYWxsZXIgaXMgYWxyZWFkeSBmdXp6aW5nIGl0LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIHRvIHNlZSBpZiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBvciByZXF1aXJlIHNwZWNpZmljIGtlcm5lbCBidWlsZCBvcHRpb25zLiBUaGlzIHNvdW5kcyBwcm9taXNpbmcsIGFuZCBJJ2xsIG5lZWQgdG8gZXZhbHVhdGUgdGhlIHBvdGVudGlhbCBmb3IgcmFjZSBjb25kaXRpb25zIHdpdGhpbiB0aGUgcHJvdGVjdGVkIGNyaXRpY2FsIHNlY3Rpb25zLiBJIGV4cGVjdCB0aGVyZSB0byBiZSBhIGdvb2QgYXR0YWNrIHN1cmZhY2UsIEknbGwgbW92ZSBvbiB0byBhIGxpbmUtYnktbGluZSByZXZpZXcgb2YgdGhlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxMzoyMC4xMTcxMDA5NDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE4MDQ1MTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxNTRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjE1NFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTU0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTU0L0tjb25maWc6Mjpjb25maWcgTUFDODAyMTU0XFxubmV0L21hYzgwMjE1NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTUuNCBTb2Z0IE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjE1NClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjIwLjQzNTE1ODEyM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQzMTIzMDEwNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktjb25maWcgRGVwZW5kZW5jeSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBgbmV0L21hYzgwMjE1NGAgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgbW92ZSBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gYEtjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdsbCBmaW5kIGFsbCB0aGUganVpY3kgZGV0YWlscyBhYm91dCBkZXBlbmRlbmNpZXMuIEknbSBhZnRlciB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBmZWF0dXJlcywgb3B0aW9ucywgYW5kIHBvdGVudGlhbGx5IG90aGVyIHN1YnN5c3RlbXMuIFRoaXMgaXMgdGhlIHF1aWNrZXN0IHdheSB0byB1bmRlcnN0YW5kIHdoYXQgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGEgcGFydGljdWxhciBNQUM4MDIxNTQgY29tcG9uZW50IGFjdHVhbGx5ICpkb2VzKiBpbiB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoZSBrZXJuZWwgYnVpbGQuIEknbSB0aGlua2luZyBJIGNhbiBxdWlja2x5IHNlZSB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMgaXQgcmVsaWVzIG9uLCBhbmQgcGVyaGFwcyBpZGVudGlmeSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGFyZWFzIHdoZXJlIEkgbmVlZCB0byBwYXkgZXh0cmEgYXR0ZW50aW9uLiBUaW1lIHRvIGdldCB0byBpdC4gTGV0J3Mgc2VlIHdoYXQgYEtjb25maWdgIHJldmVhbHMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjczNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjI0Ljc0NzQ2MjkyM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4ODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxNTQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1BQzgwMjE1NFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTUuNCBTb2Z0IE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjE1NClcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIElFRUU4MDIxNTRcXG4gICA1OlxcdFxcdHNlbGVjdCBDUkNfQ0NJVFRcXG4gICA2OlxcdFxcdHNlbGVjdCBDUllQVE9cXG4gICA3OlxcdFxcdHNlbGVjdCBDUllQVE9fQVVUSEVOQ1xcbiAgIDg6XFx0XFx0c2VsZWN0IENSWVBUT19DQ01cXG4gICA5OlxcdFxcdHNlbGVjdCBDUllQVE9fQ1RSXFxuICAxMDpcXHRcXHRzZWxlY3QgQ1JZUFRPX0FFU1xcbiAgMTE6XFx0XFx0aGVscFxcbiAgMTI6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBoYXJkd2FyZSBpbmRlcGVuZGVudCBJRUVFIDgwMi4xNS40XFxuICAxMzpcXHRcXHQgIG5ldHdvcmtpbmcgc3RhY2sgZm9yIFNvZnRNQUMgZGV2aWNlcyAodGhlIG9uZXMgaW1wbGVtZW50aW5nXFxuICAxNDpcXHRcXHQgIG9ubHkgUEhZIGxldmVsIG9mIElFRUUgODAyLjE1LjQgc3RhbmRhcmQpLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIE5vdGU6IHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbmVpdGhlciBjZXJ0aWZpZWQsIG5vciBmZWF0dXJlXFxuICAxNzpcXHRcXHQgIGNvbXBsZXRlISBDb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zIGhhc24ndFxcbiAgMTg6XFx0XFx0ICBiZWVuIHRlc3RlZCB5ZXQhXFxuICAxOTpcXHRcXG4gIDIwOlxcdFxcdCAgSWYgeW91IHBsYW4gdG8gdXNlIEhhcmRNQUMgSUVFRSA4MDIuMTUuNCBkZXZpY2VzLCB5b3UgY2FuXFxuICAyMTpcXHRcXHQgIHNheSBOIGhlcmUuIEFsdGVybmF0aXZlbHkgeW91IGNhbiBzYXkgTSB0byBjb21waWxlIGl0IGFzXFxuICAyMjpcXHRcXHQgIG1vZHVsZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTM6MjQuNzQ3NTQ0MDQzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUyNzM3NDcwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgSUVFRSA4MDIuMTUuNCBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBicm9hZGVyIGNvbnRleHQgaGVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBrZXJuZWwncyBJRUVFIDgwMi4xNS40IGNvbmZpZ3VyYXRpb24gYW5kIGRyaXZlciBzdHJ1Y3R1cmUuIExldCdzIHNlZS4uLiB0aGUgYG5ldC9pZWVlODAyMTU0L0tjb25maWdgIGZpbGUgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgZmlyc3Qgc3RvcC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGhpZ2gtbGV2ZWwgdmlldyBvZiB0aGUgY29uZmlndXJhYmxlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhhdCBuZXR3b3JraW5nIGFyZWEuIEFsdGVybmF0aXZlbHksIGBkcml2ZXJzL25ldC9pZWVlODAyMTU0L2AgbWlnaHQgYmUgZnJ1aXRmdWwsIGFzIHRoYXQncyB3aGVyZSB0aGUgYWN0dWFsIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgcmVzaWRlLiBJJ20gaG9waW5nIHRvIGlkZW50aWZ5IHJlbGF0ZWQgY29tcG9uZW50cy5cblxuU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhpbmdzIGxpa2UgdGhlIG92ZXJhbGwgSUVFRSA4MDIuMTUuNCBzdXBwb3J0IGFuZCBhbnkgc2ltdWxhdGlvbi1yZWxhdGVkIG1vZHVsZXMsIHBlcmhhcHMgc29tZXRoaW5nIGxpa2UgYE1BQzgwMjE1NF9IV1NJTWAuIEkgbmVlZCB0byBlbnN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSByZWxldmFudCBtb2R1bGVzLCB0aGF0IHBlcmhhcHMgcHJvdmlkZSBzb21lIGluc2lnaHQuIFRoaXMgcXVpY2sgc3dlZXAgc2hvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgc2Vuc2Ugb2YgdGhlIGF2YWlsYWJsZSBidWlsZGluZyBibG9ja3MgYW5kIHdoaWNoIG9uZXMgYXJlIHBvdGVudGlhbGx5IGtleSB0byB0aGUgbmV4dCBwaGFzZSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzA1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxMzoyNy4yNzQ5MjExNjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2NTg3MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElFRUU4MDIxNTRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2llZWU4MDIxNTRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L2llZWU4MDIxNTQvNmxvd3Bhbi9LY29uZmlnOjI6Y29uZmlnIElFRUU4MDIxNTRfNkxPV1BBTlxcbm5ldC9pZWVlODAyMTU0LzZsb3dwYW4vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCI2bG93cGFuIHN1cHBvcnQgb3ZlciBJRUVFIDgwMi4xNS40XFxcIlxcbi0tXFxubmV0L2llZWU4MDIxNTQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9pZWVlODAyMTU0L0tjb25maWc6MjptZW51Y29uZmlnIElFRUU4MDIxNTRcXG5uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklFRUUgU3RkIDgwMi4xNS40IExvdy1SYXRlIFdpcmVsZXNzIFBlcnNvbmFsIEFyZWEgTmV0d29ya3Mgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pZWVlODAyMTU0L0tjb25maWc9MTQ9aWYgSUVFRTgwMjE1NFxcbm5ldC9pZWVlODAyMTU0L0tjb25maWctMTUtXFxubmV0L2llZWU4MDIxNTQvS2NvbmZpZzoxNjpjb25maWcgSUVFRTgwMjE1NF9OTDgwMjE1NF9FWFBFUklNRU5UQUxcXG5uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTE3LVxcdGJvb2wgXFxcIklFRUUgODAyLjE1LjQgZXhwZXJpbWVudGFsIG5ldGxpbmsgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pZWVlODAyMTU0L0tjb25maWctMjAtXFxubmV0L2llZWU4MDIxNTQvS2NvbmZpZzoyMTpjb25maWcgSUVFRTgwMjE1NF9TT0NLRVRcXG5uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTIyLVxcdHRyaXN0YXRlIFxcXCJJRUVFIDgwMi4xNS40IHNvY2tldCBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjI3LjMzMjU4NzQwM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2Njg1MDY2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBtYWM4MDIxNTRfaHdzaW1gIE1vZHVsZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgbWFjODAyMTU0X2h3c2ltYCBjb21wb25lbnQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBpdHMgbmFtZSwgaXMgdGhhdCBpdCdzIHByb2JhYmx5IHJlbGF0ZWQgdG8gaGFyZHdhcmUgc2ltdWxhdGlvbiBmb3IgODAyLjE1LjQgbmV0d29ya2luZy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBzdGFuZGFyZCBrZXJuZWwgZHJpdmVyIGxvY2F0aW9ucy4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlczogIHRoZSBgZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9gIGFuZCBgZHJpdmVycy9uZXQvbWFjODAyMTU0L2AgZGlyZWN0b3JpZXMuIEl0J3MgYWxzbyBwb3NzaWJsZSBpdCdzIGJlZW4gbW92ZWQgaW50byBqdXN0IGBuZXQvbWFjODAyMTU0L2AgYXQgc29tZSBwb2ludCwgc28gSSBzaG91bGQgYmUgc3VyZSB0byBjaGVjayB0aGVyZSBhcyB3ZWxsLiBJJ20gYXNzdW1pbmcgaXQgd2lsbCBsaWtlbHkgYmUgYSBtb2R1bGUgb3IgcGFydCBvZiBhIGxhcmdlciBtb2R1bGUsIGFuZCBJJ20gaG9waW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBjb25zaXN0ZW50IGVub3VnaCB0byBtYWtlIHRoaXMgcXVpY2suIEhvcGVmdWxseSwgdGhpcyBpc24ndCBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBidXJpZWQgZGVlcCB3aXRoaW4gYSBwcm9qZWN0LXNwZWNpZmljIHBhdGguIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwODcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxMzozMC4wMDEwOTcyNzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTY1NzU3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUM4MDIxNTRfSFdTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz0zMz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqbWFjODAyMTU0aHdzaW1fZGV2O1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMzQtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozNTovKiBNQUM4MDIxNTRfSFdTSU0gbmV0bGluayBmYW1pbHkgKi9cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM2LXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHk7XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTM0NT1zdGF0aWMgaW50IGh3c2ltX2RlbF9yYWRpb19ubChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zNDktXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozNTA6XFx0aWYgKCFpbmZvLVxcdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRF0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zNTEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zNTItXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozNTM6XFx0aWR4ID0gbmxhX2dldF91MzIoaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSURdKTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9MzY4PXN0YXRpYyBpbnQgYXBwZW5kX3JhZGlvX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaHdzaW1fcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM3NC1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjM3NTpcXHRyZXQgPSBubGFfcHV0X3UzMihza2IsIE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lELCBwaHktXFx1MDAzZWlkeCk7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0zNzYtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM4NS1cXHRubF9lZGdlcyA9IG5sYV9uZXN0X3N0YXJ0X25vZmxhZyhza2IsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzozODY6XFx0XFx0XFx0XFx0XFx0IE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0VER0VTKTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM4Ny1cXHRpZiAoIW5sX2VkZ2VzKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM5My1cXHRcXHRubF9lZGdlID0gbmxhX25lc3Rfc3RhcnRfbm9mbGFnKHNrYixcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjM5NDpcXHRcXHRcXHRcXHRcXHRcXHRNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19FREdFKTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTM5NS1cXHRcXHRpZiAoIW5sX2VkZ2UpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNDAwLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NDAxOlxcdFxcdHJldCA9IG5sYV9wdXRfdTMyKHNrYiwgTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9FTkRQT0lOVF9JRCxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTQwMi1cXHRcXHRcXHRcXHQgIGUtXFx1MDAzZWVuZHBvaW50LVxcdTAwM2VpZHgpO1xcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00MTAtXFx0XFx0ZWluZm8gPSByY3VfZGVyZWZlcmVuY2UoZS1cXHUwMDNlaW5mbyk7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo0MTE6XFx0XFx0cmV0ID0gbmxhX3B1dF91OChza2IsIE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTFFJLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNDEyLVxcdFxcdFxcdFxcdCBlaW5mby1cXHUwMDNlbHFpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9NDI5PXN0YXRpYyBpbnQgaHdzaW1fZ2V0X3JhZGlvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBod3NpbV9waHkgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNDM2LVxcdGhkciA9IGdlbmxtc2dfcHV0KHNrYiwgcG9ydGlkLCBzZXEsIFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgZmxhZ3MsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo0Mzc6XFx0XFx0XFx0ICBNQUM4MDIxNTRfSFdTSU1fQ01EX0dFVF9SQURJTyk7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00MzgtXFx0aWYgKCFoZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTQ1Nj1zdGF0aWMgaW50IGh3c2ltX2dldF9yYWRpb19ubChzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00NjEtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo0NjI6XFx0aWYgKCFpbmZvLVxcdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRF0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy00NjMtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo0NjQ6XFx0aWR4ID0gbmxhX2dldF91MzIoaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSURdKTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTQ2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9NTI2PXN0YXRpYyBzdHJ1Y3QgaHdzaW1fcGh5ICpod3NpbV9nZXRfcmFkaW9fYnlfaWQodWludDMyX3QgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01MzctXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo1Mzg6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2VkZ2VfcG9saWN5W01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTUFYICsgMV0gPSB7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo1Mzk6XFx0W01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSURdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjU0MDpcXHRbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9MUUldID0geyAudHlwZSA9IE5MQV9VOCB9LFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNTQxLX07XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTU3Nz1zdGF0aWMgaW50IGh3c2ltX25ld19lZGdlX25sKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01Nzgte1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTc5OlxcdHN0cnVjdCBubGF0dHIgKmVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVggKyAxXTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU4MC1cXHRzdHJ1Y3QgaHdzaW1fcGh5ICpwaHlfdjAsICpwaHlfdjE7XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU4My1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjU4NDpcXHRpZiAoIWluZm8tXFx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSB8fFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTg1OlxcdCAgICAhaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01ODYtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01ODctXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo1ODg6XFx0aWYgKG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZChlZGdlX2F0dHJzLCBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX01BWCwgaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0sIGh3c2ltX2VkZ2VfcG9saWN5LCBOVUxMKSlcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU4OS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTU5MC1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjU5MTpcXHRpZiAoIWVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9FTkRQT0lOVF9JRF0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01OTItXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01OTMtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo1OTQ6XFx0djAgPSBubGFfZ2V0X3UzMihpbmZvLVxcdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRF0pO1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NTk1OlxcdHYxID0gbmxhX2dldF91MzIoZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lEXSk7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy01OTYtXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTYzOT1zdGF0aWMgaW50IGh3c2ltX2RlbF9lZGdlX25sKHN0cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NDAte1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NjQxOlxcdHN0cnVjdCBubGF0dHIgKmVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVggKyAxXTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0Mi1cXHRzdHJ1Y3QgaHdzaW1fcGh5ICpwaHlfdjA7XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY0NS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY0NjpcXHRpZiAoIWluZm8tXFx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSB8fFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NjQ3OlxcdCAgICAhaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NDgtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NDktXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2NTA6XFx0aWYgKG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZChlZGdlX2F0dHJzLCBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX01BWCwgaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0sIGh3c2ltX2VkZ2VfcG9saWN5LCBOVUxMKSlcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY1MS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY1Mi1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY1MzpcXHRpZiAoIWVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9FTkRQT0lOVF9JRF0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NTQtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NTUtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2NTY6XFx0djAgPSBubGFfZ2V0X3UzMihpbmZvLVxcdTAwM2VhdHRyc1tNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRF0pO1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NjU3OlxcdHYxID0gbmxhX2dldF91MzIoZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0VORFBPSU5UX0lEXSk7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02NTgtXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jPTY4NT1zdGF0aWMgaW50IGh3c2ltX3NldF9lZGdlX2xxaShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNjg2LXtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY4NzpcXHRzdHJ1Y3QgbmxhdHRyICplZGdlX2F0dHJzW01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTUFYICsgMV07XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02ODgtXFx0c3RydWN0IGh3c2ltX2VkZ2VfaW5mbyAqZWluZm8sICplaW5mb19vbGQ7XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY5My1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjY5NDpcXHRpZiAoIWluZm8tXFx1MDAzZWF0dHJzW01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lEXSB8fFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6Njk1OlxcdCAgICAhaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0pXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02OTYtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy02OTctXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo2OTg6XFx0aWYgKG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZChlZGdlX2F0dHJzLCBNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX01BWCwgaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRV0sIGh3c2ltX2VkZ2VfcG9saWN5LCBOVUxMKSlcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTY5OS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTcwMC1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjcwMTpcXHRpZiAoIWVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9FTkRQT0lOVF9JRF0gfHxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjcwMjpcXHQgICAgIWVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9MUUldKVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzAzLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzA0LVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzA1OlxcdHYwID0gbmxhX2dldF91MzIoaW5mby1cXHUwMDNlYXR0cnNbTUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSURdKTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjcwNjpcXHR2MSA9IG5sYV9nZXRfdTMyKGVkZ2VfYXR0cnNbTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9FTkRQT0lOVF9JRF0pO1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzA3OlxcdGxxaSA9IG5sYV9nZXRfdTgoZWRnZV9hdHRyc1tNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0xRSV0pO1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzA4LVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NDEtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3NDI6LyogTUFDODAyMTU0X0hXU0lNIG5ldGxpbmsgcG9saWN5ICovXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NDMtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3NDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W01BQzgwMjE1NF9IV1NJTV9BVFRSX01BWCArIDFdID0ge1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzQ1OlxcdFtNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19JRF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzQ2OlxcdFtNQUM4MDIxNTRfSFdTSU1fQVRUUl9SQURJT19FREdFXSA9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3NDc6XFx0W01BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0VER0VTXSA9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NDgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9NzUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fbmxfb3BzW10gPSB7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NTItXFx0e1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzUzOlxcdFxcdC5jbWQgPSBNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19SQURJTyxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc1NC1cXHRcXHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc1OC1cXHR7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3NTk6XFx0XFx0LmNtZCA9IE1BQzgwMjE1NF9IV1NJTV9DTURfREVMX1JBRElPLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzYwLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzY0LVxcdHtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc2NTpcXHRcXHQuY21kID0gTUFDODAyMTU0X0hXU0lNX0NNRF9HRVRfUkFESU8sXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NjYtXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03NzAtXFx0e1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6NzcxOlxcdFxcdC5jbWQgPSBNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19FREdFLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzcyLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtNzc2LVxcdHtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjc3NzpcXHRcXHQuY21kID0gTUFDODAyMTU0X0hXU0lNX0NNRF9ERUxfRURHRSxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc3OC1cXHRcXHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc4Mi1cXHR7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3ODM6XFx0XFx0LmNtZCA9IE1BQzgwMjE1NF9IV1NJTV9DTURfU0VUX0VER0UsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03ODQtXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYz03OTA9c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseSBfX3JvX2FmdGVyX2luaXQgPSB7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3OTE6XFx0Lm5hbWUgPSBcXFwiTUFDODAyMTU0X0hXU0lNXFxcIixcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTc5Mi1cXHQudmVyc2lvbiA9IDEsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo3OTM6XFx0Lm1heGF0dHIgPSBNQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVgsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTQtXFx0LnBvbGljeSA9IGh3c2ltX2dlbmxfcG9saWN5LFxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTctXFx0Lm5fc21hbGxfb3BzID0gQVJSQVlfU0laRShod3NpbV9ubF9vcHMpLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6Nzk4OlxcdC5yZXN2X3N0YXJ0X29wID0gTUFDODAyMTU0X0hXU0lNX0NNRF9ORVdfRURHRSArIDEsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy03OTktXFx0Lm1jZ3JwcyA9IGh3c2ltX21jZ3JwcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9ODE0PXN0YXRpYyB2b2lkIGh3c2ltX21jYXN0X25ld19yYWRpbyhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBzdHJ1Y3QgaHdzaW1fcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTgyMy1cXHRkYXRhID0gZ2VubG1zZ19wdXQobWNhc3Rfc2tiLCAwLCAwLCBcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIDAsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzo4MjQ6XFx0XFx0XFx0ICAgTUFDODAyMTU0X0hXU0lNX0NNRF9ORVdfUkFESU8pO1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtODI1LVxcdGlmICghZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MTojaWZuZGVmIF9fTUFDODAyMTU0X0hXU0lNX0hcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjI6I2RlZmluZSBfX01BQzgwMjE1NF9IV1NJTV9IXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC0zLVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC01LSAqXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2OiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX1VOU1BFQzogdW5zcGVjaWZpZWQgY29tbWFuZCB0byBjYXRjaCBlcnJvclxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NzogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9HRVRfUkFESU86IGZldGNoIGluZm9ybWF0aW9uIGFib3V0IGV4aXN0aW5nIHJhZGlvc1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6ODogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9TRVRfUkFESU86IGNoYW5nZSByYWRpbyBwYXJhbWV0ZXJzIGR1cmluZyBydW50aW1lXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo5OiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19SQURJTzogY3JlYXRlIGEgbmV3IHJhZGlvIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTEwLSAqXFx0cmV0dXJucyB0aGUgcmFkaW8gSUQgKFxcdTAwM2U9IDApIG9yIG5lZ2F0aXZlIG9uIGVycm9ycywgaWYgc3VjY2Vzc2Z1bFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMTEtICpcXHR0aGVuIG11bHRpY2FzdCB0aGUgcmVzdWx0XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoxMjogKiBATUFDODAyMTU0X0hXU0lNX0NNRF9ERUxfUkFESU86IGRlc3Ryb3kgYSByYWRpbywgcmVwbHkgaXMgbXVsdGljYXN0ZWRcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjEzOiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX0dFVF9FREdFOiBmZXRjaCBpbmZvcm1hdGlvbiBhYm91dCBleGlzdGluZyBlZGdlc1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MTQ6ICogQE1BQzgwMjE1NF9IV1NJTV9DTURfU0VUX0VER0U6IGNoYW5nZSBlZGdlIHBhcmFtZXRlcnMgZHVyaW5nIHJ1bnRpbWVcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjE1OiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX0RFTF9FREdFOiBkZWxldGUgZWRnZXMgYmV0d2VlbiByYWRpb3NcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjE2OiAqIEBNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19FREdFOiBjcmVhdGUgYSBuZXcgZWRnZSBiZXR3ZWVuIHR3byByYWRpb3NcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjE3OiAqIEBfX01BQzgwMjE1NF9IV1NJTV9DTURfTUFYOiBlbnVtIGxpbWl0XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC0xOC0gKi9cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oPTE5PWVudW0ge1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjA6XFx0TUFDODAyMTU0X0hXU0lNX0NNRF9VTlNQRUMsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC0yMS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjIyOlxcdE1BQzgwMjE1NF9IV1NJTV9DTURfR0VUX1JBRElPLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MjM6XFx0TUFDODAyMTU0X0hXU0lNX0NNRF9TRVRfUkFESU8sXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoyNDpcXHRNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19SQURJTyxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjI1OlxcdE1BQzgwMjE1NF9IV1NJTV9DTURfREVMX1JBRElPLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMjYtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDoyNzpcXHRNQUM4MDIxNTRfSFdTSU1fQ01EX0dFVF9FREdFLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6Mjg6XFx0TUFDODAyMTU0X0hXU0lNX0NNRF9TRVRfRURHRSxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjI5OlxcdE1BQzgwMjE1NF9IV1NJTV9DTURfREVMX0VER0UsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDozMDpcXHRNQUM4MDIxNTRfSFdTSU1fQ01EX05FV19FREdFLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMzEtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDozMjpcXHRfX01BQzgwMjE1NF9IV1NJTV9DTURfTUFYLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtMzMtfTtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTM0LVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6MzU6I2RlZmluZSBNQUM4MDIxNTRfSFdTSU1fQ01EX01BWCAoX19NQUM4MDIxNTRfSFdTSU1fTUFYIC0gMSlcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC0zOC0gKlxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6Mzk6ICogQE1BQzgwMjE1NF9IV1NJTV9BVFRSX1VOU1BFQzogdW5zcGVjaWZpZWQgYXR0cmlidXRlIHRvIGNhdGNoIGVycm9yXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo0MDogKiBATUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fSUQ6IHUzMiBhdHRyaWJ1dGUgdG8gaWRlbnRpZnkgdGhlIHJhZGlvXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo0MTogKiBATUFDODAyMTU0X0hXU0lNX0FUVFJfRURHRTogbmVzdGVkIGF0dHJpYnV0ZSBvZiBlZGdlc1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NDI6ICogQE1BQzgwMjE1NF9IV1NJTV9BVFRSX0VER0VTOiBsaXN0IGlmIG5lc3RlZCBhdHRyaWJ1dGVzIHdoaWNoIGNvbnRhaW5zIHRoZVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNDMtICpcXHRlZGdlIGluZm9ybWF0aW9uIGFjY29yZGluZyB0aGUgcmFkaW8gaWRcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjQ0OiAqIEBfX01BQzgwMjE1NF9IV1NJTV9BVFRSX01BWDogZW51bSBsaW1pdFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNDUtICovXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaD00Nj1lbnVtIHtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjQ3OlxcdE1BQzgwMjE1NF9IV1NJTV9BVFRSX1VOU1BFQyxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjQ4OlxcdE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0lELFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NDk6XFx0TUFDODAyMTU0X0hXU0lNX0FUVFJfUkFESU9fRURHRSxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjUwOlxcdE1BQzgwMjE1NF9IV1NJTV9BVFRSX1JBRElPX0VER0VTLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NTE6XFx0X19NQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVgsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC01Mi19O1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNTMtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo1NDojZGVmaW5lIE1BQzgwMjE1NF9IV1NJTV9BVFRSX01BWCAoX19NQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVggLSAxKVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTU3LSAqXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo1ODogKiBATUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9VTlNQRUM6IHVuc3BlY2lmaWVkIGF0dHJpYnV0ZSB0byBjYXRjaCBlcnJvclxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NTk6ICogQE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSUQ6IHJhZGlvIGlkIHdoZXJlIHRoZSBlZGdlIHBvaW50cyB0b1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NjA6ICogQE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTFFJOiBMUUkgdmFsdWUgd2hpY2ggdGhlIGVuZHBvaW50IHJhZGlvIHdpbGxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTYxLSAqXFx0cmVjZWl2ZSBmb3IgdGhpcyBlZGdlXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2MjogKiBAX19NQUM4MDIxNTRfSFdTSU1fQVRUUl9NQVg6IGVudW0gbGltaXRcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTYzLSAqL1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg9NjQ9ZW51bSB7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2NTpcXHRNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX1VOU1BFQyxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjY2OlxcdE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfRU5EUE9JTlRfSUQsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo2NzpcXHRNQUM4MDIxNTRfSFdTSU1fRURHRV9BVFRSX0xRSSxcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oOjY4OlxcdF9fTUFDODAyMTU0X0hXU0lNX0VER0VfQVRUUl9NQVgsXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaC02OS19O1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmgtNzAtXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uaDo3MTojZGVmaW5lIE1BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTUFYIChfX01BQzgwMjE1NF9IV1NJTV9FREdFX0FUVFJfTUFYIC0gMSlcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5oLTcyLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmg6NzM6I2VuZGlmIC8qIF9fTUFDODAyMTU0X0hXU0lNX0ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTM6MzAuMTk2NzY0NTI0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1OTI3MjE3MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTUFDODAyMTU0IEhhcmR3YXJlIFNpbXVsYXRpb24gQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGUgcGxhY2UgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2wgZm9yIHRoZSBNQUM4MDIxNTQgaGFyZHdhcmUgc2ltdWxhdGlvbiBmZWF0dXJlICh0aGF0J3MgYE1BQzgwMjE1NF9IV1NJTWAgaWYgbWVtb3J5IHNlcnZlcywgYnV0IGEgcXVpY2sgY2hlY2sgbmV2ZXIgaHVydHMpIGlzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2llZWU4MDIxNTQvS2NvbmZpZ2AgZmlsZS4gSSdtIGFzc3VtaW5nIGl0J3Mgc3RydWN0dXJlZCBpbiB0aGUgc3RhbmRhcmQgd2F5LCBzbyB0aGUgS2NvbmZpZyBzaG91bGQgZGVmaW5lIGl0cyBjb25kaXRpb25hbCBpbmNsdXNpb24gYW5kIGFueSBkZXBlbmRlbmNpZXMuIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IGl0J3MgaW50ZWdyYXRlZCBhbmQgd2hhdCBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSB0aWVkIHRvIGl0cyB1c2UuIEl0IG1pZ2h0IHNoZWQgbGlnaHQgb24gaG93IHRoZSBzaW11bGF0aW9uIGlzIGltcGxlbWVudGVkIG9yIGFueSBhc3N1bXB0aW9ucyBtYWRlIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFic3RyYWN0aW9uLiBUaW1lIHRvIHZlcmlmeSB0aGF0IGFzc3VtcHRpb24gYW5kIGdldCBhIHByb3BlciBsb29rIGF0IGhvdyB0aGlzIHNpbXVsYXRlZCBkZXZpY2UgaXMgY29udHJvbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyODksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxMzozMi43ODk0OTA4MDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTI4OTg3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTU0X0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2llZWU4MDIxNTRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjMyLjgzODYzMTIxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MDI3MDA5NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgd29ya2luZyBvbiB0aGlzOlxuXG4qKkxvY2F0aW5nIHRoZSBLY29uZmlnIEZpbGUgZm9yIDgwMi4xNS40IERyaXZlcnMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgS2NvbmZpZyBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgSUVFRSA4MDIuMTUuNCBuZXR3b3JraW5nIGRyaXZlcnMuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoZSBzdGFuZGFyZCBhcHByb2FjaCBpbiB0aGUgTGludXgga2VybmVsIHdvdWxkIGJlIHRvIGxvb2sgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3J5LiBJJ20gcHJldHR5IHN1cmUgaXQncyB1bmRlciBgZHJpdmVycy9uZXQvYCwgYW5kIHNpbmNlIGl0J3MgODAyLjE1LjQsIHRoYXQgbmFycm93cyBpdCBkb3duIHRvIGBpZWVlODAyMTU0YC4gVGhlcmVmb3JlLCBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBgZHJpdmVycy9uZXQvaWVlZTgwMjE1NGAgZGlyZWN0b3J5LiBUaGUgS2NvbmZpZyBmaWxlIHNob3VsZCByZXNpZGUgdGhlcmUsIG9yIHBlcmhhcHMgaW4gYSBzdWJkaXJlY3RvcnksIGRlcGVuZGluZyBvbiBob3cgdGhlIHN1YnN5c3RlbSBpcyBzdHJ1Y3R1cmVkLiBJJ2xsIGJlZ2luIGJ5IGp1c3QgbmF2aWdhdGluZyBpbnRvIHRoYXQgZGlyZWN0b3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODYwMiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjQxLjg2NTY0Njg1NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvaWVlZTgwMjE1NFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJhZGY3MjQyLmNcIixcbiAgICBcImF0ODZyZjIzMC5jXCIsXG4gICAgXCJhdDg2cmYyMzAuaFwiLFxuICAgIFwiYXR1c2IuY1wiLFxuICAgIFwiYXR1c2IuaFwiLFxuICAgIFwiY2E4MjEwLmNcIixcbiAgICBcImNjMjUyMC5jXCIsXG4gICAgXCJmYWtlbGIuY1wiLFxuICAgIFwibWFjODAyMTU0X2h3c2ltLmNcIixcbiAgICBcIm1hYzgwMjE1NF9od3NpbS5oXCIsXG4gICAgXCJtY3IyMGEuY1wiLFxuICAgIFwibWNyMjBhLmhcIixcbiAgICBcIm1yZjI0ajQwLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTM6NDEuODY1NzI0MjE2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2MzY3OTczMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipGaW5kaW5nIHRoZSBNYWM4MDIxNTRfaHdzaW0gS2NvbmZpZyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBLY29uZmlnIGZpbGUgdGhhdCBkZWZpbmVzIG9yIHJlZmVyZW5jZXMgdGhlIGBtYWM4MDIxNTRfaHdzaW1gIHN5bWJvbC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBhbmQgS2NvbmZpZyBzdHJ1Y3R1cmUsIEknbGwgbGlrZWx5IG5lZWQgdG8gc2VhcmNoIHRoZSByZWxldmFudCBzb3VyY2UgY29kZSBkaXJlY3Rvcmllcy4gSSB3b3VsZCB0eXBpY2FsbHkgc3RhcnQgd2l0aCBicm9hZCBzZWFyY2hlcyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgb3Igd2lyZWxlc3Mgc3ViLXN5c3RlbXMuIEkgd291bGQgdXNlIHRvb2xzIGxpa2UgYGZpbmRgIG9yIGBncmVwYCB0byBxdWlja2x5IHBpbnBvaW50IHRoZSBmaWxlLiBUaGlua2luZyBzdHJhdGVnaWNhbGx5LCB0aGUgbmFtZSBcIm1hYzgwMjE1NFwiIHN1Z2dlc3RzIElFRUUgODAyLjE1LjQsIHNvIEkgd2lsbCBzdGFydCB0aGVyZSwgbG9va2luZyBmb3IgbGlrZWx5IGNhbmRpZGF0ZSBkaXJlY3RvcmllcyB0aGF0IHdvdWxkIGluY2x1ZGUgdGhpcyBraW5kIG9mIHNpbXVsYXRlZCBoYXJkd2FyZS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl0IGlzIGxpa2VseSB0byBiZSB1bmRlciBhIGRyaXZlciBvciBtb2R1bGUncyBkaXJlY3RvcnkuIE9uY2UgSSBmaW5kIGEgbGlrZWx5IGNhbmRpZGF0ZSBmaWxlLCBJJ2xsIGV4YW1pbmUgaXRzIGNvbnRlbnQgdG8gdmVyaWZ5IGlmIGBtYWM4MDIxNTRfaHdzaW1gIGlzIGFjdHVhbGx5IGRlZmluZWQsIG9yLCBtb3JlIGxpa2VseSwgdXNlZCBhcyBhIGZlYXR1cmUsIG9wdGlvbiwgb3IgZGVwZW5kZW5jeSB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBJIHdvdWxkIGFsc28gaW52ZXN0aWdhdGUgYW55IGRlcGVuZGVuY2llcyBvciByZWxhdGlvbnNoaXBzIGl0IG1pZ2h0IGhhdmUgdG8gb3RoZXIgY29uZmlndXJhdGlvbnMgb3IgZHJpdmVycy4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhlIHJlZmVyZW5jZSBpcyBnb2luZyB0byBiZSB3aXRoaW4gYSBgS2NvbmZpZ2AgZmlsZSwgYnV0IEkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gdGhhdCB3aXRoIGEgc2VhcmNoIGFzIHdlbGwuIE9uY2UgSSBoYXZlIHRoZSBmaWxlIEkgY2FuIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgc3Vycm91bmRpbmcgYG1hYzgwMjE1NF9od3NpbWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTkzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjQ0LjUwMjUyNjI1M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzExOTY3NDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hYzgwMjE1NF9od3NpbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9pZWVlODAyMTU0L0tjb25maWc9MTE0PWNvbmZpZyBJRUVFODAyMTU0X0hXU0lNXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L0tjb25maWctMTIyLVxcdCAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIFRvIGRvIHNvIHNheSBNIGhlcmUuXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnOjEyMzpcXHQgIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgJ21hYzgwMjE1NF9od3NpbScuXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX0lFRUU4MDIxNTRfTUNSMjBBKSArPSBtY3IyMGEub1xcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0lFRUU4MDIxNTRfSFdTSU0pICs9IG1hYzgwMjE1NF9od3NpbS5vXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L2Zha2VsYi5jPTI0ND1zdGF0aWMgX19pbml0IGludCBmYWtlbGJfaW5pdF9tb2R1bGUodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvZmFrZWxiLmMtMjQ4LVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvZmFrZWxiLmM6MjQ5OlxcdHByX3dhcm4oXFxcImZha2VsYiBkcml2ZXIgaXMgbWFya2VkIGFzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgbWFjODAyMTU0X2h3c2ltIVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9mYWtlbGIuYy0yNTAtXFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTI0LSNpbmNsdWRlIFxcdTAwM2NuZXQvZ2VuZXRsaW5rLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYzoyNTojaW5jbHVkZSBcXFwibWFjODAyMTU0X2h3c2ltLmhcXFwiXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0yNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9MTA0OD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtYWM4MDIxNTRod3NpbV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTEwNTEtXFx0LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jOjEwNTI6XFx0XFx0XFx0Lm5hbWUgPSBcXFwibWFjODAyMTU0X2h3c2ltXFxcIixcXG5kcml2ZXJzL25ldC9pZWVlODAyMTU0L21hYzgwMjE1NF9od3NpbS5jLTEwNTMtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM9MTA1Nj1zdGF0aWMgX19pbml0IGludCBod3NpbV9pbml0X21vZHVsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9tYWM4MDIxNTRfaHdzaW0uYy0xMDYzLVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmM6MTA2NDpcXHRtYWM4MDIxNTRod3NpbV9kZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2ltcGxlKFxcXCJtYWM4MDIxNTRfaHdzaW1cXFwiLFxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvbWFjODAyMTU0X2h3c2ltLmMtMTA2NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIC0xLCBOVUxMLCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTM6NDQuODE0NTAzMjE5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNjIyNDQ5NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIDgwMi4xNS40IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwncyA4MDIuMTUuNCBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gemVybyBpbiBvbiBgZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnYCDigJMgc3BlY2lmaWNhbGx5LCBhcm91bmQgbGluZSAxMTQuIFRoYXQncyBhIHJlYXNvbmFibGUgc3BvdCB0byBzdGFydCwgYmFzZWQgb24gbXkgcGFzdCBleHBlcmllbmNlIHdpdGggdGhlc2Ugc29ydHMgb2Yga2VybmVsIGRyaXZlcnM7IGBLY29uZmlnYCBmaWxlcyBhcmUgdXN1YWxseSBzdHJ1Y3R1cmVkIHRvIHB1dCB0aGUgbW9zdCBlc3NlbnRpYWwgb3B0aW9ucyBlYXJsaWVyLiBJJ20gZ3Vlc3NpbmcgdGhhdCBsaW5lIHdpbGwgbGVhZCBtZSBpbnRvIHRoZSBjb3JlIGZlYXR1cmUgc2VsZWN0aW9ucywgb3IgbWF5YmUgYSBoaWdoLWxldmVsIGRyaXZlciBjb25maWd1cmF0aW9uLiBJdCBjb3VsZCBiZSBkZXZpY2Ugc3BlY2lmaWMuIEVpdGhlciB3YXksIHRoaXMgc2hvdWxkIGJlIGEgZ29vZCBlbnRyeSBwb2ludCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBiZWluZyBjb25maWd1cmVkIG9yIHdoYXQgb3B0aW9ucyB0aGUgZGV2ZWxvcGVyIGlzIG9mZmVyaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE5NCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjQ3LjA3Njc1MzM4M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9pZWVlODAyMTU0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTA1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTA1OlxcdFxcdGRlcGVuZHMgb24gSUVFRTgwMjE1NF9EUklWRVJTIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjE1NFxcbiAxMDY6XFx0XFx0ZGVwZW5kcyBvbiBTUElcXG4gMTA3OlxcdFxcdGhlbHBcXG4gMTA4OlxcdFxcdCAgU2F5IFkgaGVyZSB0byBlbmFibGUgdGhlIE1DUjIwQSBTUEkgODAyLjE1LjQgd2lyZWxlc3NcXG4gMTA5OlxcdFxcdCAgY29udHJvbGxlci5cXG4gMTEwOlxcdFxcbiAxMTE6XFx0XFx0ICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gVG8gZG8gc28sIHNheSBNIGhlcmUuXFxuIDExMjpcXHRcXHQgIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgJ21jcjIwYScuXFxuIDExMzpcXHRcXG4gMTE0OlxcdGNvbmZpZyBJRUVFODAyMTU0X0hXU0lNXFxuIDExNTpcXHRcXHRkZXBlbmRzIG9uIElFRUU4MDIxNTRfRFJJVkVSUyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxNTRcXG4gMTE2OlxcdFxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxNTRcXFwiXFxuIDExNzpcXHRcXHRoZWxwXFxuIDExODpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3RcXG4gMTE5OlxcdFxcdCAgSUVFRSA4MDIuMTUuNCBuZXR3b3JraW5nIHN0YWNrIChtYWM4MDIxNTQpIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgbm90XFxuIDEyMDpcXHRcXHQgIG5lZWRlZCBmb3Igbm9ybWFsIHdwYW4gdXNhZ2UgYW5kIGlzIG9ubHkgZm9yIHRlc3RpbmcuXFxuIDEyMTpcXHRcXG4gMTIyOlxcdFxcdCAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIFRvIGRvIHNvIHNheSBNIGhlcmUuXFxuIDEyMzpcXHRcXHQgIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgJ21hYzgwMjE1NF9od3NpbScuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjQ3LjA3NjgzMzM4M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDkxMTg1NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgSUVFRTgwMjE1NF9EUklWRVJTKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYElFRUU4MDIxNTRfRFJJVkVSU2AuIFdoZXJlIGV4YWN0bHkgaXMgdGhpcyB2YXJpYWJsZSBvciBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlIGVzdGFibGlzaGVkPyBVbmRlcnN0YW5kaW5nIGl0cyBkZWZpbml0aW9uIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIHByb2NlZWQgYW55IGZ1cnRoZXIuIEkgbmVlZCB0byBrbm93IHdoYXQgaXQgY29udHJvbHMgb3IgcmVwcmVzZW50cyB3aXRoaW4gdGhlIHN5c3RlbS4gVGhpcyBpcyBhIGZvdW5kYXRpb25hbCBzdGVwLCBhbmQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCBpdCByaWdodCBiZWZvcmUgbWFraW5nIGFueSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4MTcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjQ5LjU2ODAyMzg5MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI2MjIyMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElFRUU4MDIxNTRfRFJJVkVSU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9pZWVlODAyMTU0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2llZWU4MDIxNTQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2llZWU4MDIxNTQvS2NvbmZpZzoyOm1lbnVjb25maWcgSUVFRTgwMjE1NF9EUklWRVJTXFxuZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklFRUUgODAyLjE1LjQgZHJpdmVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTM6NDkuNjIwNjU0OTQ3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgxMjg2Mjg0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIG1vZGlmaWNhdGlvbnMuIEkgc2VlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGhhdmUgYmVlbiB0b3VjaGVkOlxuXG4qICAgYG1hYzgwMjE1NF9yeF9kZXF1ZXVlYCDigJMgU3RhdGljIGluIGByeC5jYCwgaW50ZXJlc3RpbmcsIHByb2JhYmx5IGEgY3JpdGljYWwgcmVjZWl2ZSBwYXRoIGZ1bmN0aW9uLlxuKiAgIGBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcmAgXHUwMDI2IGBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXJgIOKAkyBCb3RoIGluIGByeC5jYCBhbmQgZGVjbGFyZWQgaW4gdGhlIGludGVybmFsIGhlYWRlci4gU2VlbXMgbGlrZSB3ZSdyZSBsb29raW5nIGF0IGFzeW5jaHJvbm91cyBoYW5kbGluZyBvZiBiZWFjb25zIGFuZCBNQUMgY29tbWFuZHMgZHVyaW5nIHJlY2VwdGlvbi5cbiogICBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAg4oCTIEFsc28gaW4gYHJ4LmNgLiBUaGlzIGlzIGxpa2VseSB3aGVyZSB0aGUgaW5jb21pbmcgZnJhbWUgaXMgcHJvY2Vzc2VkLCBwb3NzaWJseSBkZXBlbmRpbmcgb24gdGhlIHN1YmludGVyZmFjZS5cbiogICBgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zYCDigJMgQW5vdGhlciBzdGF0aWMgb25lLCB0aGlzIHRpbWUgaW4gYHNjYW4uY2AuIE9idmlvdXMsIGJlYWNvbi1yZWxhdGVkIGFuZCBxdWV1ZWQsIG1heWJlIHJlbGF0ZWQgdG8gc2NhbiByZXF1ZXN0cyBvciBiZWFjb24gbWFuYWdlbWVudCBkdXJpbmcgc2Nhbm5pbmcuXG4qICAgYGllZWU4MDIxNTRfYWxsb2NfaHdgIOKAkyBJbiBgbWFpbi5jYCwgYW5kIEknbSBndWVzc2luZyBpdCdzIHJlc3BvbnNpYmxlIGZvciBoYXJkd2FyZSBhbGxvY2F0aW9uL2luaXRpYWxpemF0aW9uLlxuXG5Ob3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGVzZSBjaGFuZ2VkIGZ1bmN0aW9ucy4gR2l2ZW4gdGhhdCBgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zYCBpcyBpbnZvbHZlZCwgSSB3YW50IHRvIHNlZSBpZiBgbWFjODAyMTU0X3NjYW5fcmVxYCAob3IgYW55IG9mIGl0cyBjYWxsZXJzKSBhcmUgaW1wYWN0ZWQsIG9yIGlmIGFueSBvdGhlciBmdW5jdGlvbnMgY2FsbGVkIGBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnNgLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGltcGFjdCBhbmQgcHVycG9zZSBvZiB0aGUgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTA1LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjEzOjU3Ljc0OTI4ODE3MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk5Mjk2NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxNTRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjE1NC9zY2FuLmM9OTU9c3RhdGljIHVuc2lnbmVkIGludCBtYWM4MDIxNTRfc2Nhbl9nZXRfY2hhbm5lbF90aW1lKHU4IGR1cmF0aW9uX29yZGVyLFxcbi0tXFxubmV0L21hYzgwMjE1NC9zY2FuLmMtMTA0LVxcbm5ldC9tYWM4MDIxNTQvc2Nhbi5jOjEwNTpzdGF0aWMgdm9pZCBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnMoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsKVxcbm5ldC9tYWM4MDIxNTQvc2Nhbi5jLTEwNi17XFxuLS1cXG5uZXQvbWFjODAyMTU0L3NjYW4uYz0xODA9dm9pZCBtYWM4MDIxNTRfc2Nhbl93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L21hYzgwMjE1NC9zY2FuLmMtMTk5LVxcdHN5bmNocm9uaXplX25ldCgpO1xcbm5ldC9tYWM4MDIxNTQvc2Nhbi5jOjIwMDpcXHRtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnMobG9jYWwpO1xcbm5ldC9tYWM4MDIxNTQvc2Nhbi5jLTIwMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTM6NTcuODA5MjI4OTQ4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0MDA0OTE4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsZXIgb2YgYGllZWU4MDIxNTRfc3ViaWZfZnJhbWVgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYGllZWU4MDIxNTRfc3ViaWZfZnJhbWVgLiBGaXJzdCwgSSB3YW50IHRvIHRyYWNlIGJhY2sgYW5kIGlkZW50aWZ5IHByZWNpc2VseSAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20uIEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb24sIGl0cyBtb2R1bGUsIGFuZCBpZGVhbGx5IHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpdGhpbiB0aGF0IG1vZHVsZSwgd2lsbCBwcm92aWRlIGNydWNpYWwgaW5zaWdodHMgaW50byBpdHMgcHVycG9zZSBhbmQgd2hhdCBpdCdzIHRyeWluZyB0byBhY2hpZXZlIHdpdGhpbiB0aGUgSUVFRSA4MDIuMTUuNCBzdGFjay4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBjYWxsIHNpdGVzIGRpcmVjdGx5LiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBtb2R1bGUgdGhpcyBpcyBpbiwgYW5kIHRoZW4gSSB3aWxsIHNlYXJjaCBmb3IgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byBkZXRlcm1pbmUgdGhlIGV4YWN0IGNhbGwuIFRoZW4sIGRlcGVuZGluZyBvbiBob3cgY29tcGxleCB0aGUgc3lzdGVtIGlzLCBJIG1heSBuZWVkIHRvIGxvb2sgYXQgaW5kaXJlY3QgY2FsbHMgdG8gZ2FpbiBjb21wbGV0ZSBjbGFyaXR5LiBVbmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGFyY2hpdGVjdHVyZSBvZiBob3cgZnJhbWVzIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGlzIHN1Yi1pbnRlcmZhY2UgaXMga2V5IHRvIGEgc29saWQgYW5hbHlzaXMsIGJlZm9yZSBJIGV2ZW4gc3RhcnQgbG9va2luZyBhdCB0aGUgZnVuY3Rpb24gaW50ZXJuYWxzIHRoZW1zZWx2ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTA3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MDAuMjA5NzI2MjMxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzg1MTc2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTU0X3N1YmlmX2ZyYW1lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxNTRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjE1NC9yeC5jPTE0OT1zdGF0aWMgaW50XFxubmV0L21hYzgwMjE1NC9yeC5jOjE1MDppZWVlODAyMTU0X3N1YmlmX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTU0L3J4LmMtMTUxLVxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgaWVlZTgwMjE1NF9oZHIgKmhkcilcXG4tLVxcbm5ldC9tYWM4MDIxNTQvcnguYz0zNTk9X19pZWVlODAyMTU0X3J4X2hhbmRsZV9wYWNrZXQoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jLTM4OS1cXHRcXHRcXHRza2IyLVxcdTAwM2VkZXYgPSBzZGF0YS1cXHUwMDNlZGV2O1xcbm5ldC9tYWM4MDIxNTQvcnguYzozOTA6XFx0XFx0XFx0aWVlZTgwMjE1NF9zdWJpZl9mcmFtZShzZGF0YSwgc2tiMiwgXFx1MDAyNmhkcik7XFxubmV0L21hYzgwMjE1NC9yeC5jLTM5MS1cXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjAwLjI2MzU5MDQyNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjkzMDk1NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqQW5hbHl6aW5nIFBhY2tldCBIYW5kbGluZyBDYWxsZXJzKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byBob3cgdGhpcyBwYWNrZXQgcmVjZXB0aW9uIGlzIGJlaW5nIGhhbmRsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEknbSBnb2luZyB0byB0cmFjayBkb3duIHdobydzIGNhbGxpbmcgZWl0aGVyIGBfX2llZWU4MDIxNTRfcnhfaGFuZGxlX3BhY2tldGAgb3IgYGllZWU4MDIxNTRfcnhfaXJxc2FmZWAuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50cyB0byB0aGVzZSBjcml0aWNhbCBmdW5jdGlvbnMgaXMgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRhdGEgZmxvdywgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgYW5kIGhvdyB0aGUgc3lzdGVtIHJlc3BvbmRzIHRvIGluY29taW5nIDgwMi4xNS40IHBhY2tldHMuIFRoaXMgd2lsbCBnaXZlIG1lIGNydWNpYWwgY29udGV4dCBmb3IgYW55IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBvZiB0aGUgODAyLjE1LjQgc3RhY2suIEl0J3MgdGhlIGZpcnN0IHN0ZXAgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGUgZGF0YSBjb21lcyBmcm9tIGFuZCB3aG8gc3RhcnRzIHRoZSB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjY3NCwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjAyLjk1NjY5MTI1OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM3NjUyNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pZWVlODAyMTU0X3J4X2hhbmRsZV9wYWNrZXR8aWVlZTgwMjE1NF9yeFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTU0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmg9MTg2PWV4dGVybiBzdHJ1Y3QgaWVlZTgwMjE1NF9tbG1lX29wcyBtYWM4MDIxNTRfbWxtZV93cGFuO1xcbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmgtMTg3LVxcbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmg6MTg4OnZvaWQgaWVlZTgwMjE1NF9yeChzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpO1xcbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmgtMTg5LXZvaWQgaWVlZTgwMjE1NF94bWl0X3N5bmNfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuLS1cXG5uZXQvbWFjODAyMTU0L21haW4uYz0yMz1zdGF0aWMgdm9pZCBpZWVlODAyMTU0X3Rhc2tsZXRfaGFuZGxlcihzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5uZXQvbWFjODAyMTU0L21haW4uYy0zNC1cXHRcXHRcXHRza2ItXFx1MDAzZXBrdF90eXBlID0gMDtcXG5uZXQvbWFjODAyMTU0L21haW4uYzozNTpcXHRcXHRcXHRpZWVlODAyMTU0X3J4KGxvY2FsLCBza2IpO1xcbm5ldC9tYWM4MDIxNTQvbWFpbi5jLTM2LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jPTM1OD1zdGF0aWMgdm9pZFxcbm5ldC9tYWM4MDIxNTQvcnguYzozNTk6X19pZWVlODAyMTU0X3J4X2hhbmRsZV9wYWNrZXQoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxNTQvcnguYy0zNjAtXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9tYWM4MDIxNTQvcnguYz0zOTY9aWVlZTgwMjE1NF9tb25pdG9yc19yeChzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbWFjODAyMTU0L3J4LmMtNDIzLVxcbm5ldC9tYWM4MDIxNTQvcnguYzo0MjQ6dm9pZCBpZWVlODAyMTU0X3J4KHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbWFjODAyMTU0L3J4LmMtNDI1LXtcXG4tLVxcbm5ldC9tYWM4MDIxNTQvcnguYy00NTQtXFxubmV0L21hYzgwMjE1NC9yeC5jOjQ1NTpcXHRfX2llZWU4MDIxNTRfcnhfaGFuZGxlX3BhY2tldChsb2NhbCwgc2tiKTtcXG5uZXQvbWFjODAyMTU0L3J4LmMtNDU2LVxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jPTQ2Mz12b2lkXFxubmV0L21hYzgwMjE1NC9yeC5jOjQ2NDppZWVlODAyMTU0X3J4X2lycXNhZmUoc3RydWN0IGllZWU4MDIxNTRfaHcgKmh3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBscWkpXFxubmV0L21hYzgwMjE1NC9yeC5jLTQ2NS17XFxuLS1cXG5uZXQvbWFjODAyMTU0L3J4LmMtNDczLX1cXG5uZXQvbWFjODAyMTU0L3J4LmM6NDc0OkVYUE9SVF9TWU1CT0woaWVlZTgwMjE1NF9yeF9pcnFzYWZlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MDMuMDEwNDY3NDk0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkxMDg1MDQ4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBDYW5kaWRhdGUgQXNzZXNzbWVudDogbWFjODAyMTU0IENvcmUgUlggUGF0aCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgbGlzdCBvZiBzeW1ib2xzOiBgaWVlZTgwMjE1NF9hbGxvY19od2AsIGBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcmAsIGBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXJgLCBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAsIGBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnNgLCBhbmQgYG1hYzgwMjE1NF9zY2FuX3dvcmtlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJXb3J0aCBmdXp6aW5nP1wiLiBMZXQncyBhcHBseSBteSBzdGFuZGFyZCBjcml0ZXJpYS5cblxuRmlyc3QsICpyZWFjaGFiaWxpdHkqLiBUaGlzIGlzIGNyaXRpY2FsLiBJIGNhbiBzZWUgdGhhdCBNQUM4MDIxNTQgaXMgcmVhY2hhYmxlIHRocm91Z2ggdmlydHVhbCBkZXZpY2VzIGxpa2UgYG1hYzgwMjE1NF9od3NpbWAsIG5ldGxpbmsgY29tbWFuZHMgKGBubDgwMjE1NGApLCBhbmQgQUZfSUVFRTgwMjE1NCBzb2NrZXRzLiBDcnVjaWFsbHksIHRoZSBjb2RlIGJlaW5nIGV4YW1pbmVkIGRlYWxzIHdpdGggUlggcHJvY2Vzc2luZyBvZiBiZWFjb24gYW5kIE1BQyBjb21tYW5kIGZyYW1lcy4gSXQncyBhbHNvIGNvbmNlcm5lZCB3aXRoIHF1ZXVpbmcsIHdvcmtlciBwcm9jZXNzaW5nLCBzeW5jaHJvbml6YXRpb24gdXNpbmcgYSBuZXcgc3BpbmxvY2ssIGByeF9saXN0c19sb2NrYCwgYW5kIG5ldGRldiByZWZlcmVuY2UgY291bnRpbmcgd2l0aCBgbmV0ZGV2X2hvbGRgLCBgbmV0ZGV2X3B1dGAsIGFuZCBgbmV0ZGV2aWNlX3RyYWNrZXJgLiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBhbmQgZHJpdmVyIHN0YWNrIGNvZGUuIEdvb2QsIHRoaXMgZGVmaW5pdGVseSBtZWV0cyB0aGUgcmVhY2hhYmlsaXR5IGNyaXRlcmlhLlxuXG5TZWNvbmQsIHRoZSAqZnV6emluZyBiZW5lZml0cyouIFRoaXMga2luZCBvZiBjb2RlIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBDb25jdXJyZW5jeSBpc3N1ZXMsIHJhY2UgY29uZGl0aW9ucywgbGlzdCBjb3JydXB0aW9uLCBuZXRkZXYgcmVmY291bnQgbGVha3Mgb3IgdHJhY2tlciBpbWJhbGFuY2VzLCBhbmQgcG90ZW50aWFsIGRlYWRsb2NrcyBhcmUgYWxsIHRoaW5ncyBJJ2QgZXhwZWN0IGZ1enppbmcgdG8gdW5jb3ZlciBmYWlybHkgcXVpY2tseS4gSXQgaXMgaGlnaC12YWx1ZSBmb3IgZnV6emluZy5cblxuVGh1cywgYmFzZWQgb24gbXkgYW5hbHlzaXMsICpXb3J0aEZ1enppbmc9dHJ1ZSouXG5cbk5vdywgdGhlIG5lY2Vzc2FyeSAqRW5hYmxlQ29uZmlncyogYW5kICpGb2N1c1N5bWJvbHMqLlxuXG5JJ2xsIG5lZWQgdG8gZW5hYmxlOiBgTUFDODAyMTU0YCwgYElFRUU4MDIxNTRgLCBgSUVFRTgwMjE1NF9OTDgwMjE1NF9FWFBFUklNRU5UQUxgIChvcHRpb25hbCwgYnV0IG5sODAyMTU0IGlzIGFsd2F5cyBhIGdvb2Qgb3B0aW9uKSwgYElFRUU4MDIxNTRfSFdTSU1gLCBhbmQgYElFRUU4MDIxNTRfRFJJVkVSU2AuIGBNQUM4MDIxNTRgIGRlcGVuZHMgb24gYElFRUU4MDIxNTRgLCB3aGljaCBtYWtlcyBzZW5zZS4gQWxzbyBgSUVFRTgwMjE1NF9IV1NJTWAgZGVwZW5kcyBvbiBgSUVFRTgwMjE1NF9EUklWRVJTIFx1MDAyNlx1MDAyNiBNQUM4MDIxNTRgLlxuXG5Gb3IgKkZvY3VzU3ltYm9scyosIEknbGwgdGFyZ2V0OiBgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJgLCBgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyYCwgYGllZWU4MDIxNTRfc3ViaWZfZnJhbWVgLCBgbWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zYCwgYG1hYzgwMjE1NF9yeF9kZXF1ZXVlYCAoZXZlbiB0aG91Z2ggaXQncyBzdGF0aWMsIEkgd2FudCB0byBtYWtlIHN1cmUgSSBnZXQgdGhhdCBvbmUsIGFzIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSBvZiBpdCBiZWluZyBpbmxpbmVkLCBvciBzaW1pbGFyKS4gQWxzbyBpbmNsdWRlIG5vbi1zdGF0aWMgb25lcyBzdWNoIGFzOiBgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXJgLCBgbWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyYCwgYG1hYzgwMjE1NF9zY2FuX3dvcmtlcmAgYW5kIGBpZWVlODAyMTU0X3J4YC4gTGV0J3Mgbm90IGZvcmdldCBgaWVlZTgwMjE1NF9hbGxvY19od2AuXG5cblRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBkb3VibGUtY2hlY2s6IGBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcmAsIGBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXJgLCBgaWVlZTgwMjE1NF9yeGAsIGFuZCBgaWVlZTgwMjE1NF9hbGxvY19od2AsIHdoaWNoIGFyZSBhbGwgZm91bmQgd2l0aGluIGBuZXQvbWFjODAyMTU0L3J4LmNgLCBhbmQgYG1hYzgwMjE1NF9zY2FuX3dvcmtlcmAgaW4gYG5ldC9tYWM4MDIxNTQvc2Nhbi5jYC4gSXQgYWxsIGxpbmVzIHVwIHdpdGggbXkgZXhwZWN0YXRpb25zLlxuXG5KdXN0IGEgZmluYWwgc2FuaXR5IGNoZWNrIG9mIHRoZSBpbXBvcnRhbnQgYml0czogQ29uZmlnIG9wdGlvbnM6IGBJRUVFODAyMTU0YCwgYE1BQzgwMjE1NGAsIGFuZCBgSUVFRTgwMjE1NF9IV1NJTWAuIFRoZSBzeW1ib2xzIGFyZTogYG1hYzgwMjE1NF9yeF9iZWFjb25fd29ya2VyYCwgYG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcmAsIGBtYWM4MDIxNTRfZmx1c2hfcXVldWVkX2JlYWNvbnNgLCBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAsIGBtYWM4MDIxNTRfcnhfZGVxdWV1ZWAsIGFuZCBgaWVlZTgwMjE1NF9hbGxvY19od2AuXG5cblRoYXQgbG9va3MgZ29vZC4gSSdtIHJlYWR5XG5cbiIsIklucHV0VG9rZW5zIjoyMzc4MiwiT3V0cHV0VG9rZW5zIjozMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjEyLjExODk3NjY3MloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5MDkwNDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRUVFODAyMTU0XCIsXG4gICAgXCJNQUM4MDIxNTRcIixcbiAgICBcIklFRUU4MDIxNTRfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlclwiLFxuICAgIFwibWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyXCIsXG4gICAgXCJtYWM4MDIxNTRfcnhfZGVxdWV1ZVwiLFxuICAgIFwiaWVlZTgwMjE1NF9zdWJpZl9mcmFtZVwiLFxuICAgIFwibWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zXCIsXG4gICAgXCJpZWVlODAyMTU0X2FsbG9jX2h3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IFJYIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IGluIHRoZSBtYWM4MDIxNTQgc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGRlZGljYXRlZCBzcGlubG9jayAocnhfbGlzdHNfbG9jaykgdG8gcHJvdGVjdCByeF9iZWFjb25fbGlzdCBhbmQgcnhfbWFjX2NtZF9saXN0LCB1cGRhdGluZyB0aGUgd29ya2VyIGRlcXVldWUgbG9naWMsIGFuZCB0YWtpbmcvcmVsZWFzaW5nIG5ldGRldmljZSByZWZlcmVuY2UgdHJhY2tlcnMgKG5ldGRldl9ob2xkL25ldGRldl9wdXQpIHdoZW4gcXVldWVpbmcgYW5kIHByb2Nlc3NpbmcgTUFDIHBhY2tldHMuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIG1hYzgwMjE1NCB2aXJ0dWFsIGRyaXZlcnMgKG1hYzgwMjE1NF9od3NpbSkgYW5kIHN0YW5kYXJkIElFRUUgODAyLjE1LjQgbmV0d29yayBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZyBmb3IgY29uY3VycmVuY3kgYnVncywgZGVhZGxvY2tzLCBhbmQgbmV0ZGV2IHJlZmNvdW50aW5nIGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRUVFODAyMTU0XCIsXG4gICAgXCJNQUM4MDIxNTRcIixcbiAgICBcIklFRUU4MDIxNTRfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlclwiLFxuICAgIFwibWFjODAyMTU0X3J4X21hY19jbWRfd29ya2VyXCIsXG4gICAgXCJtYWM4MDIxNTRfcnhfZGVxdWV1ZVwiLFxuICAgIFwiaWVlZTgwMjE1NF9zdWJpZl9mcmFtZVwiLFxuICAgIFwibWFjODAyMTU0X2ZsdXNoX3F1ZXVlZF9iZWFjb25zXCIsXG4gICAgXCJpZWVlODAyMTU0X2FsbG9jX2h3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IFJYIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IGluIHRoZSBtYWM4MDIxNTQgc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGRlZGljYXRlZCBzcGlubG9jayAocnhfbGlzdHNfbG9jaykgdG8gcHJvdGVjdCByeF9iZWFjb25fbGlzdCBhbmQgcnhfbWFjX2NtZF9saXN0LCB1cGRhdGluZyB0aGUgd29ya2VyIGRlcXVldWUgbG9naWMsIGFuZCB0YWtpbmcvcmVsZWFzaW5nIG5ldGRldmljZSByZWZlcmVuY2UgdHJhY2tlcnMgKG5ldGRldl9ob2xkL25ldGRldl9wdXQpIHdoZW4gcXVldWVpbmcgYW5kIHByb2Nlc3NpbmcgTUFDIHBhY2tldHMuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIG1hYzgwMjE1NCB2aXJ0dWFsIGRyaXZlcnMgKG1hYzgwMjE1NF9od3NpbSkgYW5kIHN0YW5kYXJkIElFRUUgODAyLjE1LjQgbmV0d29yayBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZyBmb3IgY29uY3VycmVuY3kgYnVncywgZGVhZGxvY2tzLCBhbmQgbmV0ZGV2IHJlZmNvdW50aW5nIGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MTIuMjE4MDc5ODM1WiIsIlNlcSI6MjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTM4ODQ0ODA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjEyLjIxODc3NTc1NVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjMxMzg3NzQzNDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBzeW5jaHJvbml6YXRpb24gYW5kIG5ldGRldiByZWZlcmVuY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIG1hYzgwMjE1NCBSWCBxdWV1ZXMgKGJlYWNvbiBhbmQgTUFDIGNvbW1hbmQgcXVldWVzKS4gSXQgaW50cm9kdWNlcyBhIHNwaW5sb2NrIGByeF9saXN0c19sb2NrYCB0byBwcm90ZWN0IHF1ZXVlIG1hbmlwdWxhdGlvbiBhbmQgdXNlcyBgbmV0ZGV2aWNlX3RyYWNrZXJgIChgbmV0ZGV2X2hvbGRgIC8gYG5ldGRldl9wdXRgKSB0byBzYWZlbHkgcmV0YWluIGRldmljZSByZWZlcmVuY2VzIHVudGlsIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgZnJlZWQuXFxuXFxuS0FTQU4sIExPQ0tERVAsIGFuZCB0aGUgbmV0ZGV2IHJlZmNvdW50IHRyYWNrZXIgYWRlcXVhdGVseSBjb3ZlciB0aGUgcmlza3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgcmFjZSBjb25kaXRpb25zLCBkZWFkbG9ja3MsIGFuZCB1c2UtYWZ0ZXItZnJlZS9saWZldGltZSBidWdzKS4gYHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmpgLCBlbnN1cmluZyBhbGwgZmllbGRzIGFyZSB6ZXJvLWluaXRpYWxpemVkLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkLCBicmFuY2hlZCBvbiwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJlMjhjM2FkODQyMTU3OTNmMzc0NWNhNGUzZGQ3ZTE5Mjk2MzY3YmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDE4OjEyOjU1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmggYi9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaFxuaW5kZXggNzZkMmNkMmUyYjMwOS4uNTczNDM3NjJkN2YwYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2NmZzgwMjE1NC5oXG4rKysgYi9pbmNsdWRlL25ldC9jZmc4MDIxNTQuaFxuQEAgLTM2OSw2ICszNjksNyBAQCBzdHJ1Y3QgY2ZnODAyMTU0X2JlYWNvbl9yZXF1ZXN0IHtcbiAgKiBAbm9kZTogTUFDIHBhY2tldHMgdG8gcHJvY2VzcyBsaXN0IG1lbWJlclxuICAqIEBza2I6IHRoZSByZWNlaXZlZCBza19idWZmXG4gICogQHNkYXRhOiB0aGUgaW50ZXJmYWNlIG9uIHdoaWNoIEBza2Igd2FzIHJlY2VpdmVkXG4rICogQGRldl90cmFja2VyOiBuZXRkZXYgcmVmZXJlbmNlIGhlbGQgdW50aWwgdGhlIGRlc2NyaXB0b3IgaXMgcmVsZWFzZWRcbiAgKiBAcGFnZTogcGFnZSBjb25maWd1cmF0aW9uIHdoZW4gQHNrYiB3YXMgcmVjZWl2ZWRcbiAgKiBAY2hhbm5lbDogY2hhbm5lbCBjb25maWd1cmF0aW9uIHdoZW4gQHNrYiB3YXMgcmVjZWl2ZWRcbiAgKi9cbkBAIC0zNzYsNiArMzc3LDcgQEAgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0IHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgbm9kZTtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4gXHRzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGE7XG4rXHRuZXRkZXZpY2VfdHJhY2tlciBkZXZfdHJhY2tlcjtcbiBcdHU4IHBhZ2U7XG4gXHR1OCBjaGFubmVsO1xuIH07XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaCBiL25ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmhcbmluZGV4IDhmMmJmZjI2ODM5MmIuLjA5NmU2ZjAzNDBkYzcgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oXG4rKysgYi9uZXQvbWFjODAyMTU0L2llZWU4MDIxNTRfaS5oXG5AQCAtNzQsNiArNzQsOCBAQCBzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCB7XG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnhfYmVhY29uX3dvcms7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHJ4X21hY19jbWRfbGlzdDtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCByeF9tYWNfY21kX3dvcms7XG4rXHQvKiBQcm90ZWN0cyByeF9iZWFjb25fbGlzdCBhbmQgcnhfbWFjX2NtZF9saXN0LiAqL1xuK1x0c3BpbmxvY2tfdCByeF9saXN0c19sb2NrO1xuIFxuIFx0LyogQXNzb2NpYXRpb24gKi9cbiBcdHN0cnVjdCBpZWVlODAyMTU0X3Bhbl9kZXZpY2UgKmFzc29jX2RldjtcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L21haW4uYyBiL25ldC9tYWM4MDIxNTQvbWFpbi5jXG5pbmRleCBlYTFlZmVmMzU3MmFlLi5hNmE5NzZiMGRlYTU2IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjE1NC9tYWluLmNcbisrKyBiL25ldC9tYWM4MDIxNTQvbWFpbi5jXG5AQCAtOTEsNiArOTEsNyBAQCBpZWVlODAyMTU0X2FsbG9jX2h3KHNpemVfdCBwcml2X2RhdGFfbGVuLCBjb25zdCBzdHJ1Y3QgaWVlZTgwMjE1NF9vcHMgKm9wcylcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmxvY2FsLVx1MDAzZWludGVyZmFjZXMpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbWFjX2NtZF9saXN0KTtcbitcdHNwaW5fbG9ja19pbml0KFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2VpZmxpc3RfbXR4KTtcbiBcbiBcdHRhc2tsZXRfc2V0dXAoXHUwMDI2bG9jYWwtXHUwMDNldGFza2xldCwgaWVlZTgwMjE1NF90YXNrbGV0X2hhbmRsZXIpO1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxNTQvcnguYyBiL25ldC9tYWM4MDIxNTQvcnguY1xuaW5kZXggY2Q4ZjJhMTE5MjBkMC4uZGYyZjYxMjhkZGQ0YSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxNTQvcnguY1xuKysrIGIvbmV0L21hYzgwMjE1NC9yeC5jXG5AQCAtMjksMjEgKzI5LDQwIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjE1NF9kZWxpdmVyX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0cmV0dXJuIG5ldGlmX3JlY2VpdmVfc2tiKHNrYik7XG4gfVxuIFxuK3N0YXRpYyBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKlxuK21hYzgwMjE1NF9yeF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsICpsb2NhbCxcbitcdFx0ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpyeF9saXN0LFxuK1x0XHQgICAgIHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbit7XG4rXHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3Q7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4rXHRtYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKHJ4X2xpc3QsXG4rXHRcdFx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7XG4rXHRpZiAobWFjX3BrdCkge1xuK1x0XHRsaXN0X2RlbChcdTAwMjZtYWNfcGt0LVx1MDAzZW5vZGUpO1xuK1x0XHRpZiAoIWxpc3RfZW1wdHkocnhfbGlzdCkpXG4rXHRcdFx0cXVldWVfd29yayhsb2NhbC1cdTAwM2VtYWNfd3EsIHdvcmspO1xuK1x0fVxuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4rXG4rXHRyZXR1cm4gbWFjX3BrdDtcbit9XG4rXG4gdm9pZCBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsID1cbiBcdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsLCByeF9iZWFjb25fd29yayk7XG4gXHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3Q7XG4gXG4tXHRtYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2JlYWNvbl9saXN0LFxuLVx0XHRcdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QsIG5vZGUpO1xuK1x0bWFjX3BrdCA9IG1hYzgwMjE1NF9yeF9kZXF1ZXVlKGxvY2FsLCBcdTAwMjZsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCwgd29yayk7XG4gXHRpZiAoIW1hY19wa3QpXG4gXHRcdHJldHVybjtcbiBcbiBcdG1hYzgwMjE1NF9wcm9jZXNzX2JlYWNvbihsb2NhbCwgbWFjX3BrdC1cdTAwM2Vza2IsIG1hY19wa3QtXHUwMDNlcGFnZSwgbWFjX3BrdC1cdTAwM2VjaGFubmVsKTtcbiBcbi1cdGxpc3RfZGVsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSk7XG4gXHRrZnJlZV9za2IobWFjX3BrdC1cdTAwM2Vza2IpO1xuK1x0bmV0ZGV2X3B1dChtYWNfcGt0LVx1MDAzZXNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bWFjX3BrdC1cdTAwM2VkZXZfdHJhY2tlcik7XG4gXHRrZnJlZShtYWNfcGt0KTtcbiB9XG4gXG5AQCAtNzYsOCArOTUsNyBAQCB2b2lkIG1hYzgwMjE1NF9yeF9tYWNfY21kX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHR1OCBtYWNfY21kO1xuIFx0aW50IHJjO1xuIFxuLVx0bWFjX3BrdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcdTAwMjZsb2NhbC1cdTAwM2VyeF9tYWNfY21kX2xpc3QsXG4tXHRcdFx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7XG4rXHRtYWNfcGt0ID0gbWFjODAyMTU0X3J4X2RlcXVldWUobG9jYWwsIFx1MDAyNmxvY2FsLVx1MDAzZXJ4X21hY19jbWRfbGlzdCwgd29yayk7XG4gXHRpZiAoIW1hY19wa3QpXG4gXHRcdHJldHVybjtcbiBcbkBAIC0xMjMsOCArMTQxLDggQEAgdm9pZCBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0fVxuIFxuIG91dDpcbi1cdGxpc3RfZGVsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSk7XG4gXHRrZnJlZV9za2IobWFjX3BrdC1cdTAwM2Vza2IpO1xuK1x0bmV0ZGV2X3B1dChtYWNfcGt0LVx1MDAzZXNkYXRhLVx1MDAzZWRldiwgXHUwMDI2bWFjX3BrdC1cdTAwM2VkZXZfdHJhY2tlcik7XG4gXHRrZnJlZShtYWNfcGt0KTtcbiB9XG4gXG5AQCAtMjIxLDggKzIzOSwxMSBAQCBpZWVlODAyMTU0X3N1YmlmX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0bWFjX3BrdC1cdTAwM2VzZGF0YSA9IHNkYXRhO1xuIFx0XHRtYWNfcGt0LVx1MDAzZXBhZ2UgPSBzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VzY2FuX3BhZ2U7XG4gXHRcdG1hY19wa3QtXHUwMDNlY2hhbm5lbCA9IHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXNjYW5fY2hhbm5lbDtcbitcdFx0bmV0ZGV2X2hvbGQoc2RhdGEtXHUwMDNlZGV2LCBcdTAwMjZtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcbitcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfYmVhY29uX2xpc3QpO1xuIFx0XHRxdWV1ZV93b3JrKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZW1hY193cSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfYmVhY29uX3dvcmspO1xuK1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9saXN0c19sb2NrKTtcbiBcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIFxuIFx0Y2FzZSBJRUVFODAyMTU0X0ZDX1RZUEVfTUFDX0NNRDpcbkBAIC0yMzMsOCArMjU0LDExIEBAIGllZWU4MDIxNTRfc3ViaWZfZnJhbWUoc3RydWN0IGllZWU4MDIxNTRfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFxuIFx0XHRtYWNfcGt0LVx1MDAzZXNrYiA9IHNrYl9nZXQoc2tiKTtcbiBcdFx0bWFjX3BrdC1cdTAwM2VzZGF0YSA9IHNkYXRhO1xuK1x0XHRuZXRkZXZfaG9sZChzZGF0YS1cdTAwM2VkZXYsIFx1MDAyNm1hY19wa3QtXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuK1x0XHRzcGluX2xvY2tfYmgoXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bWFjX3BrdC1cdTAwM2Vub2RlLCBcdTAwMjZzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2VyeF9tYWNfY21kX2xpc3QpO1xuIFx0XHRxdWV1ZV93b3JrKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZW1hY193cSwgXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfbWFjX2NtZF93b3JrKTtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlcnhfbGlzdHNfbG9jayk7XG4gXHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbiBcbiBcdGNhc2UgSUVFRTgwMjE1NF9GQ19UWVBFX0FDSzpcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTU0L3NjYW4uYyBiL25ldC9tYWM4MDIxNTQvc2Nhbi5jXG5pbmRleCAwMDUzMzhmODliNzVlLi5jM2M2MWViZGUxNTY4IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjE1NC9zY2FuLmNcbisrKyBiL25ldC9tYWM4MDIxNTQvc2Nhbi5jXG5AQCAtMTA1LDEwICsxMDUsMTYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBtYWM4MDIxNTRfc2Nhbl9nZXRfY2hhbm5lbF90aW1lKHU4IGR1cmF0aW9uX29yZGVyLFxuIHN0YXRpYyB2b2lkIG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyhzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwpXG4ge1xuIFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0LCAqdG1wO1xuK1x0TElTVF9IRUFEKG1hY19wa3RfbGlzdCk7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobWFjX3BrdCwgdG1wLCBcdTAwMjZsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCwgbm9kZSkge1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuK1x0bGlzdF9zcGxpY2VfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2VyeF9iZWFjb25fbGlzdCwgXHUwMDI2bWFjX3BrdF9saXN0KTtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmxvY2FsLVx1MDAzZXJ4X2xpc3RzX2xvY2spO1xuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1hY19wa3QsIHRtcCwgXHUwMDI2bWFjX3BrdF9saXN0LCBub2RlKSB7XG4gXHRcdGxpc3RfZGVsKFx1MDAyNm1hY19wa3QtXHUwMDNlbm9kZSk7XG4gXHRcdGtmcmVlX3NrYihtYWNfcGt0LVx1MDAzZXNrYik7XG4rXHRcdG5ldGRldl9wdXQobWFjX3BrdC1cdTAwM2VzZGF0YS1cdTAwM2VkZXYsIFx1MDAyNm1hY19wa3QtXHUwMDNlZGV2X3RyYWNrZXIpO1xuIFx0XHRrZnJlZShtYWNfcGt0KTtcbiBcdH1cbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxNDoxMi4yMTg3Nzc2NzVaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODU1NzIyNzU5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBtYWM4MDIxNTRgIFBhdGNoIGZvciBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqXG5cbk9rYXksIGxldCdzIGRpc3NlY3QgdGhpcyBwYXRjaCBmb3IgdGhlIGBtYWM4MDIxNTRgIHN1YnN5c3RlbS4gTXkgcHJpbWFyeSBjb25jZXJuIGhlcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2Yga2VybmVsIGRldmVsb3BtZW50LCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzIHRoYXQgcmVxdWlyZSBLTVNBTi1sZXZlbCBzY3J1dGlueSBvciBpZiBzdGFuZGFyZCBLQVNBTiwgTE9DS0RFUCwgYW5kIHJlbGF0ZWQgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guXG5cbkZpcnN0LCBJJ2xsIGJyZWFrIGRvd24gdGhlIGNoYW5nZXMuIFRoZSBwYXRjaCB0b3VjaGVzIHNldmVyYWwgZmlsZXM6IGBjZmc4MDIxNTQuaGAsIGBpZWVlODAyMTU0X2kuaGAsIGBtYWluLmNgLCBgcnguY2AsIGFuZCBgc2Nhbi5jYC4gSXQgbG9va3MgbGlrZSBpdCdzIHByaW1hcmlseSBhYm91dCBpbXByb3Zpbmcgc3luY2hyb25pemF0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgUlggcGF0aC5cblxuU3BlY2lmaWNhbGx5LCBJJ20gc2VlaW5nIGFkZGl0aW9ucyBvZiBgbmV0ZGV2aWNlX3RyYWNrZXIgZGV2X3RyYWNrZXJgIHRvIGBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3RgIGFuZCBhIGBzcGlubG9ja190IHJ4X2xpc3RzX2xvY2tgIHRvIGBzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbGAuIEluaXRpYWxpemF0aW9uIG9mIHRoZSBzcGlubG9jayBpcyBoYW5kbGVkLCB0aGFua2Z1bGx5LiBUaGUgbW9yZSBpbnRlcmVzdGluZyBjaGFuZ2VzIGFyZSBpbiBgcnguY2AgYW5kIGBzY2FuLmNgLlxuXG5UaGUgaW50cm9kdWN0aW9uIG9mIGBtYWM4MDIxNTRfcnhfZGVxdWV1ZWAgbG9va3MgbGlrZSBhIGtleSBjaGFuZ2UsIGVuY2Fwc3VsYXRpbmcgdGhlIGxpc3QgZGVxdWV1ZSBsb2dpYyB3aXRoIHRoZSBsb2NrLiBHb29kLCB0aGlzIGlzIHByb2JhYmx5IHRvIHByb3RlY3QgdGhlIGByeF9saXN0c2Agb3Igc2ltaWxhci4gSSBub3RpY2UgdGhlIGxvY2sgYWNxdWlzaXRpb24gYW5kIHRoZSByZS1xdWV1aW5nIGxvZ2ljLiBBbHNvLCB0aGUgdXNlIG9mIGBuZXRkZXZfcHV0YCBpbiBzZXZlcmFsIHBsYWNlcyBhZnRlciB1c2luZyB0aGUgZGVxdWV1ZSBoZWxwZXIgaXMgaW1wb3J0YW50LiBUaGUgdXNlIG9mIGBuZXRkZXZfaG9sZGAgYW5kIGBuZXRkZXZfcHV0YCBhcm91bmQgdGhlIHBhY2tldCBzdHJ1Y3R1cmVzIGxvb2tzIGdvb2QgLSBwcm90ZWN0aW5nIHRoZSBgc2RhdGEtXHUwMDNlZGV2YCBwcm9wZXJseSB3aXRoIHRoZSBgZGV2X3RyYWNrZXJgIGluIGBpZWVlODAyMTU0X3N1YmlmX2ZyYW1lYCBpcyBjcnVjaWFsLlxuXG5JIG5lZWQgdG8gY29uZmlybSBob3cgYG1hY19wa3RgIGlzIGFsbG9jYXRlZC4gSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBmb3IgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZS4gSSdsbCBmb2N1cyBvbiB3aGVyZSBgbWFjX3BrdGAgaXMgYWxsb2NhdGVkLCBlc3BlY2lhbGx5IHdpdGhpbiBgaWVlZTgwMjE1NF9zdWJpZl9mcmFtZWAsIGFuZCBpZiB0aGVyZSBhcmUgb3RoZXIgcG90ZW50aWFsIGFsbG9jYXRpb24gc2l0ZXMuIEkgd2lsbCB1c2UgYHJlYWQtZmlsZWAgdG8gemVybyBpbiBvbiBgbmV0L21hYzgwMjE1NC9yeC5jYCBhbmQgbG9vayBmb3IgYWxsb2NhdGlvbnMuIEknbSBsb29raW5nIGZvciB3aGVyZSB3ZSdyZSBjcmVhdGluZyB0aGVzZSBwYWNrZXRzIGFuZCBob3cgdGhlIG1lbW9yeSBpcyBiZWluZyBoYW5kbGVkLiBJJ20gZ29pbmcgdG8gbG9vayBzcGVjaWZpY2FsbHkgZm9yIGNhc2VzIHdoZXJlIHRoZSBkYXRhIHdpdGhpbiB0aGUgYG1hY19wa3RgIGNvdWxkIGJlIHVzZWQgYmVmb3JlIGJlaW5nIGluaXRpYWxpemVkLlxuXG5UaGUgY2hhbmdlcyBpbiBgc2Nhbi5jYCBzZWVtIHN0cmFpZ2h0Zm9yd2FyZDogbW92aW5nIHRoZSBgcnhfYmVhY29uX2xpc3RgIHVuZGVyIHRoZSBsb2NrIGFuZCBmcmVlaW5nIHRoZSBlbGVtZW50cy4gVGhpcyBsb29rcyBsaWtlIHN0YW5kYXJkIGxpc3Qgc3luY2hyb25pemF0aW9uIHByYWN0aWNlcy4gSSBuZWVkIHRvIHN0aWxsIGVuc3VyZSB0aGUgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gb2YgdGhlc2Ugc3RydWN0dXJlcyBhcmUgcm9idXN0LlxuXG5NeSBzdXNwaWNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIGlzIHNvbGlkIGZyb20gYSBjdXJzb3J5IGdsYW5jZSwgYnV0IEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGNvZGUgZm9yIHRoZSBzdHJ1Y3R1cmVzLCBzcGVjaWZpY2FsbHkgYG1hY19wa3RgLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBgbWFjX3BrdGAgaXMgaGFuZGxlZCB3aGVuIHJlLXVzZWQgYWZ0ZXIgYmVpbmcgb24gdGhlIGByeF9saXN0c19sb2NrYCBwcm90ZWN0ZWQgcXVldWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTY0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MjAuNzc2MDA5NTY1WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxNTQvcnguY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDAsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMDA6XFx0XFx0XFx0ZWxzZSBpZiAobWFjX2NiKHNrYiktXFx1MDAzZWRlc3Quc2hvcnRfYWRkciA9PSBzc2hvcnQpXFxuIDIwMTpcXHRcXHRcXHRcXHRza2ItXFx1MDAzZXBrdF90eXBlID0gUEFDS0VUX0hPU1Q7XFxuIDIwMjpcXHRcXHRcXHRlbHNlIGlmIChtYWNfY2Ioc2tiKS1cXHUwMDNlZGVzdC5zaG9ydF9hZGRyID09XFxuIDIwMzpcXHRcXHRcXHRcXHQgIGNwdV90b19sZTE2KElFRUU4MDIxNTRfQUREUl9CUk9BRENBU1QpKVxcbiAyMDQ6XFx0XFx0XFx0XFx0c2tiLVxcdTAwM2Vwa3RfdHlwZSA9IFBBQ0tFVF9CUk9BRENBU1Q7XFxuIDIwNTpcXHRcXHRcXHRlbHNlXFxuIDIwNjpcXHRcXHRcXHRcXHRza2ItXFx1MDAzZXBrdF90eXBlID0gUEFDS0VUX09USEVSSE9TVDtcXG4gMjA3OlxcdFxcdFxcdGJyZWFrO1xcbiAyMDg6XFx0XFx0ZGVmYXVsdDpcXG4gMjA5OlxcdFxcdFxcdHByX2RlYnVnKFxcXCJpbnZhbGlkIGRlc3QgbW9kZVxcXFxuXFxcIik7XFxuIDIxMDpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuIDIxMTpcXHRcXHR9XFxuIDIxMjpcXHRcXG4gMjEzOlxcdFxcdHNrYi1cXHUwMDNlZGV2ID0gc2RhdGEtXFx1MDAzZWRldjtcXG4gMjE0OlxcdFxcbiAyMTU6XFx0XFx0LyogVE9ETyB0aGlzIHNob3VsZCBiZSBtb3ZlZCBhZnRlciBuZXRpZl9yZWNlaXZlX3NrYiBjYWxsLCBvdGhlcndpc2VcXG4gMjE2OlxcdFxcdCAqIHdpcmVzaGFyayB3aWxsIHNob3cgYSBtYWMgaGVhZGVyIHdpdGggc2VjdXJpdHkgZmllbGRzIGFuZCB0aGVcXG4gMjE3OlxcdFxcdCAqIHBheWxvYWQgaXMgYWxyZWFkeSBkZWNyeXB0ZWQuXFxuIDIxODpcXHRcXHQgKi9cXG4gMjE5OlxcdFxcdHJjID0gbWFjODAyMTU0X2xsc2VjX2RlY3J5cHQoXFx1MDAyNnNkYXRhLVxcdTAwM2VzZWMsIHNrYik7XFxuIDIyMDpcXHRcXHRpZiAocmMpIHtcXG4gMjIxOlxcdFxcdFxcdHByX2RlYnVnKFxcXCJkZWNyeXB0aW9uIGZhaWxlZDogJWlcXFxcblxcXCIsIHJjKTtcXG4gMjIyOlxcdFxcdFxcdGdvdG8gZmFpbDtcXG4gMjIzOlxcdFxcdH1cXG4gMjI0OlxcdFxcbiAyMjU6XFx0XFx0c2RhdGEtXFx1MDAzZWRldi1cXHUwMDNlc3RhdHMucnhfcGFja2V0cysrO1xcbiAyMjY6XFx0XFx0c2RhdGEtXFx1MDAzZWRldi1cXHUwMDNlc3RhdHMucnhfYnl0ZXMgKz0gc2tiLVxcdTAwM2VsZW47XFxuIDIyNzpcXHRcXG4gMjI4OlxcdFxcdHN3aXRjaCAobWFjX2NiKHNrYiktXFx1MDAzZXR5cGUpIHtcXG4gMjI5OlxcdFxcdGNhc2UgSUVFRTgwMjE1NF9GQ19UWVBFX0JFQUNPTjpcXG4gMjMwOlxcdFxcdFxcdGRldl9kYmcoXFx1MDAyNnNkYXRhLVxcdTAwM2VkZXYtXFx1MDAzZWRldiwgXFxcIkJFQUNPTiByZWNlaXZlZFxcXFxuXFxcIik7XFxuIDIzMTpcXHRcXHRcXHRpZiAoIW1hYzgwMjE1NF9pc19zY2FubmluZyhzZGF0YS1cXHUwMDNlbG9jYWwpKVxcbiAyMzI6XFx0XFx0XFx0XFx0Z290byBmYWlsO1xcbiAyMzM6XFx0XFxuIDIzNDpcXHRcXHRcXHRtYWNfcGt0ID0ga3phbGxvY19vYmooKm1hY19wa3QsIEdGUF9BVE9NSUMpO1xcbiAyMzU6XFx0XFx0XFx0aWYgKCFtYWNfcGt0KVxcbiAyMzY6XFx0XFx0XFx0XFx0Z290byBmYWlsO1xcbiAyMzc6XFx0XFxuIDIzODpcXHRcXHRcXHRtYWNfcGt0LVxcdTAwM2Vza2IgPSBza2JfZ2V0KHNrYik7XFxuIDIzOTpcXHRcXHRcXHRtYWNfcGt0LVxcdTAwM2VzZGF0YSA9IHNkYXRhO1xcbiAyNDA6XFx0XFx0XFx0bWFjX3BrdC1cXHUwMDNlcGFnZSA9IHNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlc2Nhbl9wYWdlO1xcbiAyNDE6XFx0XFx0XFx0bWFjX3BrdC1cXHUwMDNlY2hhbm5lbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlc2Nhbl9jaGFubmVsO1xcbiAyNDI6XFx0XFx0XFx0bmV0ZGV2X2hvbGQoc2RhdGEtXFx1MDAzZWRldiwgXFx1MDAyNm1hY19wa3QtXFx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcXG4gMjQzOlxcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9saXN0c19sb2NrKTtcXG4gMjQ0OlxcdFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm1hY19wa3QtXFx1MDAzZW5vZGUsIFxcdTAwMjZzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2JlYWNvbl9saXN0KTtcXG4gMjQ1OlxcdFxcdFxcdHF1ZXVlX3dvcmsoc2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VtYWNfd3EsIFxcdTAwMjZzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2JlYWNvbl93b3JrKTtcXG4gMjQ2OlxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2xpc3RzX2xvY2spO1xcbiAyNDc6XFx0XFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiAyNDg6XFx0XFxuIDI0OTpcXHRcXHRjYXNlIElFRUU4MDIxNTRfRkNfVFlQRV9NQUNfQ01EOlxcbiAyNTA6XFx0XFx0XFx0ZGV2X2RiZyhcXHUwMDI2c2RhdGEtXFx1MDAzZWRldi1cXHUwMDNlZGV2LCBcXFwiTUFDIENPTU1BTkQgcmVjZWl2ZWRcXFxcblxcXCIpO1xcbiAyNTE6XFx0XFx0XFx0bWFjX3BrdCA9IGt6YWxsb2Nfb2JqKCptYWNfcGt0LCBHRlBfQVRPTUlDKTtcXG4gMjUyOlxcdFxcdFxcdGlmICghbWFjX3BrdClcXG4gMjUzOlxcdFxcdFxcdFxcdGdvdG8gZmFpbDtcXG4gMjU0OlxcdFxcbiAyNTU6XFx0XFx0XFx0bWFjX3BrdC1cXHUwMDNlc2tiID0gc2tiX2dldChza2IpO1xcbiAyNTY6XFx0XFx0XFx0bWFjX3BrdC1cXHUwMDNlc2RhdGEgPSBzZGF0YTtcXG4gMjU3OlxcdFxcdFxcdG5ldGRldl9ob2xkKHNkYXRhLVxcdTAwM2VkZXYsIFxcdTAwMjZtYWNfcGt0LVxcdTAwM2VkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7XFxuIDI1ODpcXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfbGlzdHNfbG9jayk7XFxuIDI1OTpcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZtYWNfcGt0LVxcdTAwM2Vub2RlLCBcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VyeF9tYWNfY21kX2xpc3QpO1xcbiAyNjA6XFx0XFx0XFx0cXVldWVfd29yayhzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZW1hY193cSwgXFx1MDAyNnNkYXRhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlcnhfbWFjX2NtZF93b3JrKTtcXG4gMjYxOlxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZXJ4X2xpc3RzX2xvY2spO1xcbiAyNjI6XFx0XFx0XFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xcbiAyNjM6XFx0XFxuIDI2NDpcXHRcXHRjYXNlIElFRUU4MDIxNTRfRkNfVFlQRV9BQ0s6XFxuIDI2NTpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuIDI2NjpcXHRcXG4gMjY3OlxcdFxcdGNhc2UgSUVFRTgwMjE1NF9GQ19UWVBFX0RBVEE6XFxuIDI2ODpcXHRcXHRcXHRyZXR1cm4gaWVlZTgwMjE1NF9kZWxpdmVyX3NrYihza2IpO1xcbiAyNjk6XFx0XFx0ZGVmYXVsdDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MjAuNzc2MTEwMDM2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk0NTI0Nzk5MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMaWZlY3ljbGUgb2YgYGNmZzgwMjE1NF9tYWNfcGt0YCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGEgYGNmZzgwMjE1NF9tYWNfcGt0YCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYC4gVGhlIGltcG9ydGFudCB0aGluZyBoZXJlIGlzIHRoYXQgYGt6YWxsb2NgIGd1YXJhbnRlZXMgaXQncyB6ZXJvZWQsIGEgZ29vZCBwcmFjdGljZSB0byBhdm9pZCB1bmluaXRpYWxpemVkIGRhdGEgdnVsbmVyYWJpbGl0aWVzLiBUaGVuLCB0aGUgYG5ldGRldl90cmFja2VyYCB3aXRoaW4gdGhlIGBtYWNfcGt0YCBpcyBpbml0aWFsaXplZCB2aWEgYG5ldGRldl9ob2xkYC4gSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gSXQgbG9va3MgbGlrZSBpdCdzIGRlc2lnbmVkIHRvIHRyYWNrIHRoZSBuZXR3b3JrIGRldmljZSBhc3NvY2lhdGlvbiBvZiB0aGlzIHBhY2tldC5cblxuTm93LCB0aGUgZGVhbGxvY2F0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYSBgbmV0ZGV2X3B1dGAgb24gdGhlIGBkZXZfdHJhY2tlcmAgYW5kIHRoZW4gYSBga2ZyZWVgIG9mIHRoZSBzdHJ1Y3R1cmUuIENsYXNzaWMgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24gcGFpciwgbm8gc3VycHJpc2VzIHRoZXJlLiBBbmQsIGJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIGByeF9saXN0c19sb2NrYCBpcyB1c2VkIHRvIHByb3RlY3QgY29uY3VycmVudCBhY2Nlc3MgdG8gdGhlIGxpbmtlZCBsaXN0IGFuZCBpdCB3aWxsIHNlcmlhbGl6ZSBhY2Nlc3Mgd2l0aCB3b3JrIHF1ZXVlIHByb2Nlc3NpbmcuXG5cbkkgd2FudCB0byBiZSB0aG9yb3VnaC4gSSBuZWVkIHRvIGtub3cgd2hlcmUgZWxzZSB0aGlzIHN0cnVjdHVyZSBpcyB1c2VkLiBJJ2xsIG5lZWQgdG8gZ3JlcCB0aGUga2VybmVsIHNvdXJjZSBmb3IgYW55IG90aGVyIG9jY3VycmVuY2VzIG9mIGBjZmc4MDIxNTRfbWFjX3BrdGAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgb3BlcmF0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gSSdtIGxvb2tpbmcgZm9yIGFueXRoaW5nIHRoYXQgbWlnaHQgbW9kaWZ5IHRoZSBhbGxvY2F0aW9uLCBkZWFsbG9jYXRpb24sIG9yIHVzYWdlIHBhdHRlcm5zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDYyLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MzAuMjI4NTk3MTg4WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTUzMzgwNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmZzgwMjE1NF9tYWNfcGt0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2NmZzgwMjE1NC5oPTM2MT1zdHJ1Y3QgY2ZnODAyMTU0X2JlYWNvbl9yZXF1ZXN0IHtcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjE1NC5oLTM2Ny0vKipcXG5pbmNsdWRlL25ldC9jZmc4MDIxNTQuaDozNjg6ICogc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0IC0gTUFDIHBhY2tldCBkZXNjcmlwdG9yIChiZWFjb24vY29tbWFuZClcXG5pbmNsdWRlL25ldC9jZmc4MDIxNTQuaC0zNjktICogQG5vZGU6IE1BQyBwYWNrZXRzIHRvIHByb2Nlc3MgbGlzdCBtZW1iZXJcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjE1NC5oLTM3NS0gKi9cXG5pbmNsdWRlL25ldC9jZmc4MDIxNTQuaDozNzY6c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0IHtcXG5pbmNsdWRlL25ldC9jZmc4MDIxNTQuaC0zNzctXFx0c3RydWN0IGxpc3RfaGVhZCBub2RlO1xcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jPTI0PXN0YXRpYyBpbnQgaWVlZTgwMjE1NF9kZWxpdmVyX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jLTMxLVxcbm5ldC9tYWM4MDIxNTQvcnguYzozMjpzdGF0aWMgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICpcXG5uZXQvbWFjODAyMTU0L3J4LmMtMzMtbWFjODAyMTU0X3J4X2RlcXVldWUoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jLTM2LXtcXG5uZXQvbWFjODAyMTU0L3J4LmM6Mzc6XFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xcbm5ldC9tYWM4MDIxNTQvcnguYy0zOC1cXG4tLVxcbm5ldC9tYWM4MDIxNTQvcnguYy00MC1cXHRtYWNfcGt0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKHJ4X2xpc3QsXFxubmV0L21hYzgwMjE1NC9yeC5jOjQxOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCwgbm9kZSk7XFxubmV0L21hYzgwMjE1NC9yeC5jLTQyLVxcdGlmIChtYWNfcGt0KSB7XFxuLS1cXG5uZXQvbWFjODAyMTU0L3J4LmM9NTI9dm9pZCBtYWM4MDIxNTRfcnhfYmVhY29uX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbWFjODAyMTU0L3J4LmMtNTUtXFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpZWVlODAyMTU0X2xvY2FsLCByeF9iZWFjb25fd29yayk7XFxubmV0L21hYzgwMjE1NC9yeC5jOjU2OlxcdHN0cnVjdCBjZmc4MDIxNTRfbWFjX3BrdCAqbWFjX3BrdDtcXG5uZXQvbWFjODAyMTU0L3J4LmMtNTctXFxuLS1cXG5uZXQvbWFjODAyMTU0L3J4LmM9OTA9dm9pZCBtYWM4MDIxNTRfcnhfbWFjX2NtZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jLTkzLVxcdFxcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCwgcnhfbWFjX2NtZF93b3JrKTtcXG5uZXQvbWFjODAyMTU0L3J4LmM6OTQ6XFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0O1xcbm5ldC9tYWM4MDIxNTQvcnguYy05NS1cXHR1OCBtYWNfY21kO1xcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jPTE1MD1pZWVlODAyMTU0X3N1YmlmX2ZyYW1lKHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxNTQvcnguYy0xNTQtXFx0c3RydWN0IHdwYW5fZGV2ICp3cGFuX2RldiA9IFxcdTAwMjZzZGF0YS1cXHUwMDNld3Bhbl9kZXY7XFxubmV0L21hYzgwMjE1NC9yeC5jOjE1NTpcXHRzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3QgKm1hY19wa3Q7XFxubmV0L21hYzgwMjE1NC9yeC5jLTE1Ni1cXHRfX2xlMTYgc3Bhbiwgc3Nob3J0O1xcbi0tXFxubmV0L21hYzgwMjE1NC9zY2FuLmM9MTA1PXN0YXRpYyB2b2lkIG1hYzgwMjE1NF9mbHVzaF9xdWV1ZWRfYmVhY29ucyhzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwpXFxubmV0L21hYzgwMjE1NC9zY2FuLmMtMTA2LXtcXG5uZXQvbWFjODAyMTU0L3NjYW4uYzoxMDc6XFx0c3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0ICptYWNfcGt0LCAqdG1wO1xcbm5ldC9tYWM4MDIxNTQvc2Nhbi5jLTEwOC1cXHRMSVNUX0hFQUQobWFjX3BrdF9saXN0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MzIuNzgxOTk1NzA4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxMjUwMzk5MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRob3JvdWdobmVzcyBpcyBLZXk6IEJlYWNvbiBQcm9jZXNzaW5nIFx1MDAyNiBTY2FubmluZyBSZXZpZXcqKlxuXG5SaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIGFueSBvbmUgYXJlYSwgSSBzaG91bGQgZG8gYSBxdWljayBzd2VlcC4gTGV0J3MgbWFrZSBzdXJlIHdlIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYG1hYzgwMjE1NF9wcm9jZXNzX2JlYWNvbmAgc3BlY2lmaWNhbGx5IOKAkyB0aGF0J3MgYSBwcmltZSBzdXNwZWN0LCBvZiBjb3Vyc2UuIEJ1dCBJIHNob3VsZG4ndCBzdG9wIHRoZXJlLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB3ZSBoYXZlbid0IG92ZXJsb29rZWQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHJlcG9ydGVkIGlzc3VlLCBJJ2xsIGFsc28gZ2xhbmNlIHRocm91Z2ggb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgc2VjdGlvbnMgd2l0aGluIGBzY2FuLmNgLiBJdCdzIHBvc3NpYmxlIHRoZSByb290IGNhdXNlIGlzIGJlaW5nIHRyaWdnZXJlZCBvciBtaXNtYW5hZ2VkIGluIGFub3RoZXIgcGFydCBvZiB0aGUgc2Nhbm5pbmcgbG9naWMgaXRzZWxmLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzIHRvIGF2b2lkIGEgZnJ1c3RyYXRpbmcgd2lsZCBnb29zZSBjaGFzZSBsYXRlci4gSXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIGRlYnVnZ2luZyBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Njg4LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6MTQ6MzQuOTA3MDM5NThaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzIyMzIwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjODAyMTU0X3Byb2Nlc3NfYmVhY29uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmg9MjgxPWludCBtYWM4MDIxNTRfYWJvcnRfc2Nhbl9sb2NrZWQoc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxNTQvaWVlZTgwMjE1NF9pLmgtMjgyLVxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTU0X3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxubmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaDoyODM6aW50IG1hYzgwMjE1NF9wcm9jZXNzX2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjE1NF9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjE1NC9pZWVlODAyMTU0X2kuaC0yODQtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jPTUyPXZvaWQgbWFjODAyMTU0X3J4X2JlYWNvbl93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L21hYzgwMjE1NC9yeC5jLTYxLVxcbm5ldC9tYWM4MDIxNTQvcnguYzo2MjpcXHRtYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24obG9jYWwsIG1hY19wa3QtXFx1MDAzZXNrYiwgbWFjX3BrdC1cXHUwMDNlcGFnZSwgbWFjX3BrdC1cXHUwMDNlY2hhbm5lbCk7XFxubmV0L21hYzgwMjE1NC9yeC5jLTYzLVxcbi0tXFxubmV0L21hYzgwMjE1NC9zY2FuLmM9MjkwPWludCBtYWM4MDIxNTRfdHJpZ2dlcl9zY2FuX2xvY2tlZChzdHJ1Y3QgaWVlZTgwMjE1NF9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTU0L3NjYW4uYy0zMjUtXFxubmV0L21hYzgwMjE1NC9zY2FuLmM6MzI2OmludCBtYWM4MDIxNTRfcHJvY2Vzc19iZWFjb24oc3RydWN0IGllZWU4MDIxNTRfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxNTQvc2Nhbi5jLTMyNy1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjE0OjM3LjE3OTI3OTQ4WiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY0MjcxOTQwMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgbWFjODAyMTU0IFJ4IFByb2Nlc3NpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiBzdGFiaWxpemluZyB0aGUgYG1hYzgwMjE1NGAgcmVjZWl2ZSBwYXRoLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBjb25jdXJyZW5jeSBhbmQgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3Vlcy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGxvb2tzIHByb21pc2luZy5cblxuRmlyc3QsIEkgc2VlIHRoZSBjb3JlIHByb2JsZW06IGNvbmN1cnJlbnQgYWNjZXNzIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGluIHRoZSBgcnhfYmVhY29uX2xpc3RgIGFuZCBgcnhfbWFjX2NtZF9saXN0YC4gVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgYHJ4X2xpc3RzX2xvY2tgIHNwaW5sb2NrIGlzIGEgc3RhbmRhcmQgYW5kIGVmZmVjdGl2ZSBhcHByb2FjaCB0byBzZXJpYWxpemUgZW5xdWV1ZWluZyBhbmQgZGVxdWV1ZWluZyBvcGVyYXRpb25zLiBUaGlzIGlzIGdvb2Q7IExPQ0tERVAgc2hvdWxkIGNhdGNoIGFueSBpc3N1ZXMgaGVyZS4gVGhlIGBuZXRkZXZpY2VfdHJhY2tlcmAgaXMga2V5IGZvciBwcmV2ZW50aW5nIHRoZSBjbGFzc2ljIHVzZS1hZnRlci1mcmVlIHByb2JsZW0gYXNzb2NpYXRlZCB3aXRoIGBzZGF0YS1cdTAwM2VkZXZgIOKAkyBpdCdzIGNydWNpYWwgdG8gdHJhY2sgdGhlIGRldmljZSdzIGxpZmV0aW1lIHdoZW4gYSBwYWNrZXQgaXMgcXVldWVkLiBUaGF0J3MgYSBzb2xpZCBkZWZlbnNlLlxuXG5OZXh0LCB0aGUgdXNlIG9mIGBremFsbG9jX29iamAgZm9yIGBjZmc4MDIxNTRfbWFjX3BrdGAgYWxsb2NhdGlvbnMgaXMgZXhhY3RseSB3aGF0IEknZCBleHBlY3QuIFplcm9pbmcgYWxsIGZpZWxkcyBlbGltaW5hdGVzIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkLiBJIG5lZWQgdG8gYmUgc3VyZSB0aG91Z2gsIGFyZSB0aGVyZSBhbnkgaW5mbyBsZWFrcz8gTm8uIFplcm9pbmcgdGhlIGFsbG9jYXRpb25zLCBwYXNzaW5nIGBtYWNfcGt0LVx1MDAzZWRldl90cmFja2VyYCB0byBgbmV0ZGV2X2hvbGRgLCBgbmV0ZGV2X3B1dGAsIGFuZCBubyBuZXcgYGNvcHlfdG9fdXNlcmAgY2FsbHMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGRhdGEuIEV4Y2VsbGVudC4gTm8gb2J2aW91cyBhdmVudWVzIGZvciBsZWFraW5nIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlLiBObyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBsZW5ndGggY2FsY3VsYXRpb24gdGhhdCB3b3VsZCBhbGxvdyByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGVpdGhlci5cblxuTXkgYW5hbHlzaXMgY29uZmlybXMgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IEtNU0FOIGNvbmNlcm5zLiBJdCdzIHJlYWxseSBhYm91dCBjb25jdXJyZW5jeSBhbmQgbWVtb3J5IHNhZmV0eSwgd2hpY2ggYXJlIHByZWNpc2VseSB3aGF0IEtBU0FOIGFuZCBMT0NLREVQIGFyZSBkZXNpZ25lZCBmb3IuIFRoZSBsb2NraW5nLCB0aGUgcmVmZXJlbmNlIHRyYWNraW5nLCBhbmQgdGhlIHplcm9lZCBtZW1vcnkgYWxsb2NhdGlvbnMgYWxsIHBvaW50IHRvIHRoaXMuIEl0IHNlZW1zIHRoYXQgdGhpcyBwYXRjaCBjYW4gYmUgY2xhc3NpZmllZCBhcyBzYWZlIGZvciBLU01BTi5cblxuU28sIHRoZSByZWFzb25pbmcgaGVyZSBpcyBzdHJhaWdodGZvcndhcmQ6IEtBU0FOIGFuZCBMT0NLREVQIGFyZSBmdWxseSBhZGVxdWF0ZS4gVGhpcyBwYXRjaCBkZWFscyB3aXRoIHJhY2UgY29uZGl0aW9ucywgZGV2aWNlIGxpZmV0aW1lLCBhbmQgcmVmY291bnRpbmcuIGBremFsbG9jX29iamAgdGFrZXMgY2FyZSBvZiB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnkuIE5vIG5lZWQgZm9yIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nLiBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDI4LCJPdXRwdXRUb2tlbnMiOjIwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODoxNDo0My42MDY0NzkwOTVaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHN5bmNocm9uaXphdGlvbiBhbmQgbmV0ZGV2IHJlZmVyZW5jZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBmb3IgbWFjODAyMTU0IFJYIHF1ZXVlcyAoYmVhY29uIGFuZCBNQUMgY29tbWFuZCBxdWV1ZXMpLiBJdCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2sgYHJ4X2xpc3RzX2xvY2tgIHRvIHByb3RlY3QgcXVldWUgbWFuaXB1bGF0aW9uIGFuZCB1c2VzIGBuZXRkZXZpY2VfdHJhY2tlcmAgKGBuZXRkZXZfaG9sZGAgLyBgbmV0ZGV2X3B1dGApIHRvIHNhZmVseSByZXRhaW4gZGV2aWNlIHJlZmVyZW5jZXMgdW50aWwgcGFja2V0cyBhcmUgcHJvY2Vzc2VkIGFuZCBmcmVlZC5cXG5cXG5LQVNBTiwgTE9DS0RFUCwgYW5kIHRoZSBuZXRkZXYgcmVmY291bnQgdHJhY2tlciBhZGVxdWF0ZWx5IGNvdmVyIHRoZSByaXNrcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXRjaCAoc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGRlYWRsb2NrcywgYW5kIHVzZS1hZnRlci1mcmVlL2xpZmV0aW1lIGJ1Z3MpLiBgc3RydWN0IGNmZzgwMjE1NF9tYWNfcGt0YCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iamAsIGVuc3VyaW5nIGFsbCBmaWVsZHMgYXJlIHplcm8taW5pdGlhbGl6ZWQuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHJlYWQsIGJyYW5jaGVkIG9uLCBvciBjb3BpZWQgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgc3luY2hyb25pemF0aW9uIGFuZCBuZXRkZXYgcmVmZXJlbmNlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZvciBtYWM4MDIxNTQgUlggcXVldWVzIChiZWFjb24gYW5kIE1BQyBjb21tYW5kIHF1ZXVlcykuIEl0IGludHJvZHVjZXMgYSBzcGlubG9jayBgcnhfbGlzdHNfbG9ja2AgdG8gcHJvdGVjdCBxdWV1ZSBtYW5pcHVsYXRpb24gYW5kIHVzZXMgYG5ldGRldmljZV90cmFja2VyYCAoYG5ldGRldl9ob2xkYCAvIGBuZXRkZXZfcHV0YCkgdG8gc2FmZWx5IHJldGFpbiBkZXZpY2UgcmVmZXJlbmNlcyB1bnRpbCBwYWNrZXRzIGFyZSBwcm9jZXNzZWQgYW5kIGZyZWVkLlxcblxcbktBU0FOLCBMT0NLREVQLCBhbmQgdGhlIG5ldGRldiByZWZjb3VudCB0cmFja2VyIGFkZXF1YXRlbHkgY292ZXIgdGhlIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhdGNoIChzdWNoIGFzIHJhY2UgY29uZGl0aW9ucywgZGVhZGxvY2tzLCBhbmQgdXNlLWFmdGVyLWZyZWUvbGlmZXRpbWUgYnVncykuIGBzdHJ1Y3QgY2ZnODAyMTU0X21hY19wa3RgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgZW5zdXJpbmcgYWxsIGZpZWxkcyBhcmUgemVyby1pbml0aWFsaXplZC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgcmVhZCwgYnJhbmNoZWQgb24sIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd4z69[1] Phase: Succeeded StartedAt: 2026-09-04 18:14:55 +0000 UTC FinishedAt: 2026-09-04 18:14:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-04 18:14:55 +0000 UTC FinishedAt: 2026-09-04 18:14:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2] Phase: Succeeded StartedAt: 2026-09-04 18:14:55 +0000 UTC FinishedAt: 2026-09-04 21:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-04 18:14:55 +0000 UTC FinishedAt: 2026-09-04 21:53:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-04 18:14:55 +0000 UTC FinishedAt: 2026-09-04 18:15:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-04 18:14:55 +0000 UTC FinishedAt: 2026-09-04 18:15:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowd4z69/series-workflowd4z69-convert-artifact-3196420927/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-04 18:15:05 +0000 UTC FinishedAt: 2026-09-04 18:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-04 18:15:05 +0000 UTC FinishedAt: 2026-09-04 18:30:52 +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:*6ea6b7d4-360d-4cd9-9013-828a4d44b429,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-workflowd4z69/series-workflowd4z69-convert-artifact-3196420927/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": "5ce2f56b-67b1-4b42-b408-bbfc6d86d97c", "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-workflowd4z69/series-workflowd4z69-build-action-4245523909/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-04 18:15:05 +0000 UTC FinishedAt: 2026-09-04 18:30:42 +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:*6ea6b7d4-360d-4cd9-9013-828a4d44b429,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-workflowd4z69/series-workflowd4z69-convert-artifact-3196420927/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": "5ce2f56b-67b1-4b42-b408-bbfc6d86d97c", "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-workflowd4z69/series-workflowd4z69-build-action-4245523909/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-04 18:30:52 +0000 UTC FinishedAt: 2026-09-04 18:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-04 18:30:52 +0000 UTC FinishedAt: 2026-09-04 18:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-04 18:30:52 +0000 UTC FinishedAt: 2026-09-04 18:31:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-04 18:30:52 +0000 UTC FinishedAt: 2026-09-04 18:30:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowd4z69/series-workflowd4z69-convert-artifact-3947489358/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-04 18:31:02 +0000 UTC FinishedAt: 2026-09-04 18:32:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-04 18:31:02 +0000 UTC FinishedAt: 2026-09-04 18:32:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5ce2f56b-67b1-4b42-b408-bbfc6d86d97c,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-workflowd4z69/series-workflowd4z69-build-action-4245523909/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-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-04 18:32:55 +0000 UTC FinishedAt: 2026-09-04 18:32:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-04 18:32:55 +0000 UTC FinishedAt: 2026-09-04 18:32:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-04 18:32:55 +0000 UTC FinishedAt: 2026-09-04 18:49:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-04 18:32:55 +0000 UTC FinishedAt: 2026-09-04 18:49: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:*6ea6b7d4-360d-4cd9-9013-828a4d44b429,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-workflowd4z69/series-workflowd4z69-convert-artifact-3947489358/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": "40b429de-a850-4816-8ebb-35adcc33ea39", "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-workflowd4z69/series-workflowd4z69-build-action-4269836770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-04 18:32:55 +0000 UTC FinishedAt: 2026-09-04 18:49:01 +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:*6ea6b7d4-360d-4cd9-9013-828a4d44b429,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-workflowd4z69/series-workflowd4z69-convert-artifact-3947489358/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": "40b429de-a850-4816-8ebb-35adcc33ea39", "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-workflowd4z69/series-workflowd4z69-build-action-4269836770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-04 18:49:11 +0000 UTC FinishedAt: 2026-09-04 18:49:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-04 18:49:11 +0000 UTC FinishedAt: 2026-09-04 18:49:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-04 18:49:11 +0000 UTC FinishedAt: 2026-09-04 18:51:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-04 18:49:11 +0000 UTC FinishedAt: 2026-09-04 18:50:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*40b429de-a850-4816-8ebb-35adcc33ea39,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-workflowd4z69/series-workflowd4z69-build-action-4269836770/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-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-04 18:51:09 +0000 UTC FinishedAt: 2026-09-04 21:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-04 18:51:09 +0000 UTC FinishedAt: 2026-09-04 21:53:40 +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":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"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:*5ce2f56b-67b1-4b42-b408-bbfc6d86d97c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*40b429de-a850-4816-8ebb-35adcc33ea39,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-workflowd4z69/series-workflowd4z69-build-action-4245523909/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-workflowd4z69/series-workflowd4z69-build-action-4269836770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-04 18:51:09 +0000 UTC FinishedAt: 2026-09-04 18:51:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-04 18:51:09 +0000 UTC FinishedAt: 2026-09-04 18:51:13 +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":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"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-workflowd4z69/series-workflowd4z69-convert-artifact-1938867827/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-04 18:51:09 +0000 UTC FinishedAt: 2026-09-04 18:51:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-04 18:51:09 +0000 UTC FinishedAt: 2026-09-04 18:51:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-04 18:51:09 +0000 UTC FinishedAt: 2026-09-04 18:51:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-04 18:51:19 +0000 UTC FinishedAt: 2026-09-04 21:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4z69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mac802154_rx_beacon_worker","mac802154_rx_mac_cmd_worker","mac802154_rx_dequeue","ieee802154_subif_frame","mac802154_flush_queued_beacons","ieee802154_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc4b95b8fee95113587e93ca116356032d271371","config_name":"upstream-apparmor-kasan.config","enable_configs":["IEEE802154","MAC802154","IEEE802154_HWSIM"],"series_id":"d49c8b1c-a4c8-4be0-a22b-8460db42d8dd","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-04 18:51:19 +0000 UTC FinishedAt: 2026-09-04 21:53:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5ce2f56b-67b1-4b42-b408-bbfc6d86d97c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*40b429de-a850-4816-8ebb-35adcc33ea39,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-workflowd4z69/series-workflowd4z69-build-action-4245523909/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-workflowd4z69/series-workflowd4z69-build-action-4269836770/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-workflowd4z69/series-workflowd4z69-convert-artifact-1938867827/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,}