Name: series-workflow77x68 Phase: Succeeded StartedAt: 2026-08-07 20:37:43 +0000 UTC FinishedAt: 2026-08-08 00:44:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[0] Phase: Succeeded StartedAt: 2026-08-07 20:37:43 +0000 UTC FinishedAt: 2026-08-07 20:57:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 20:37:43 +0000 UTC FinishedAt: 2026-08-07 20:57:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "594d905195024b228c962627ae5ae7c17bd582a4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "594d905195024b228c962627ae5ae7c17bd582a4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "6db4ecea-60a2-4589-8bee-19c7e2036449" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "fnhe_update_pmtu", "fib_nhc_update_mtu", "fib_sync_mtu" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbmhlX3VwZGF0ZV9wbXR1JiMzNDssCiAgICAmIzM0O2ZpYl9uaGNfdXBkYXRlX210dSYjMzQ7LAogICAgJiMzNDtmaWJfc3luY19tdHUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSAobWlzc2luZyBSQ1UgcmVhZCBsb2NrIGFuZCBzcGlubG9jayBwcm90ZWN0aW9uKSB3aGVuIHVwZGF0aW5nIFBNVFUgaW4gZmliX25oX2V4Y2VwdGlvbiBlbnRyaWVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOLCBLQ1NBTiwgb3IgTE9DS0RFUCBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJUHY0IHJvdXRpbmcgbG9naWMgdG8gY29ycmVjdGx5IHVwZGF0ZSB0aGUgUGF0aCBNVFUgKFBNVFUpIG9mIGZpYiBuZXh0aG9wIGV4Y2VwdGlvbnMgd2hlbiB0aGUgTVRVIG9mIHRoZSBmaXJzdCBob3AgY2hhbmdlcy4gSXQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgZm5oZV91cGRhdGVfcG10dWAgYW5kIG1vZGlmaWVzIGBmaWJfbmhjX3VwZGF0ZV9tdHVgIHRvIHVzZSBSQ1UgYW5kIGEgc3BpbmxvY2suIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgY2hhbmdpbmcgdGhlIE1UVSBvZiBhIG5ldHdvcmsgZGV2aWNlIChlLmcuLCB2aWEgbmV0bGluayBvciBpb2N0bCkgd2hpY2ggdHJpZ2dlcnMgYGZpYl9zeW5jX210dWAgYW5kIGBuZXh0aG9wX3N5bmNfbXR1YC4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMjczMzY0MzE5M2E0ZWFmNTBmZGM2ZWZjMjBiMjAyM2U2Mzk3ZDgwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAyMDo1NjowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9yb3V0ZS5oIGIvaW5jbHVkZS9uZXQvcm91dGUuaFxuaW5kZXggZjkwMTA2ZjM4M2M1Ni4uNDUyOTAxNzdhMzNjNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3JvdXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3JvdXRlLmhcbkBAIC0yNzYsNiAmIzQzOzI3Niw4IEBAIGludCBmaWJfZHVtcF9pbmZvX2ZuaGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLFxuIFx0XHQgICAgICAgdTMyIHRhYmxlX2lkLCBzdHJ1Y3QgZmliX2luZm8gKmZpLFxuIFx0XHQgICAgICAgaW50ICpmYV9pbmRleCwgaW50IGZhX3N0YXJ0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpO1xuIFxuJiM0Mzt2b2lkIGZuaGVfdXBkYXRlX3BtdHUoc3RydWN0IGZpYl9uaF9leGNlcHRpb24gKmZuaGUsIHUzMiBuZXcsIHUzMiBvcmlnKTtcbiYjNDM7XG4gc3RhdGljIGlubGluZSB2b2lkIGlwX3J0X3B1dChzdHJ1Y3QgcnRhYmxlICpydClcbiB7XG4gXHQvKiBkc3RfcmVsZWFzZSgpIGFjY2VwdHMgYSBOVUxMIHBhcmFtZXRlci5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMgYi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcbmluZGV4IDc4Zjg0YWUzZWUxMjAuLjA0ODM1MTliN2ZiMGQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY1xuQEAgLTE4OTUsNDIgJiM0MzsxODk1LDMwIEBAIHN0YXRpYyBpbnQgY2FsbF9maWJfbmhfbm90aWZpZXJzKHN0cnVjdCBmaWJfbmggKm5oLFxuIFx0cmV0dXJuIE5PVElGWV9ET05FO1xuIH1cbiBcbi0vKiBVcGRhdGUgdGhlIFBNVFUgb2YgZXhjZXB0aW9ucyB3aGVuOlxuLSAqIC0gdGhlIG5ldyBNVFUgb2YgdGhlIGZpcnN0IGhvcCBiZWNvbWVzIHNtYWxsZXIgdGhhbiB0aGUgUE1UVVxuLSAqIC0gdGhlIG9sZCBNVFUgd2FzIHRoZSBzYW1lIGFzIHRoZSBQTVRVLCBhbmQgaXQgbGltaXRlZCBkaXNjb3Zlcnkgb2Zcbi0gKiAgIGxhcmdlciBNVFVzIG9uIHRoZSBwYXRoLiBXaXRoIHRoYXQgbGltaXQgcmFpc2VkLCB3ZSBjYW4gbm93XG4tICogICBkaXNjb3ZlciBsYXJnZXIgTVRVc1xuLSAqIEEgc3BlY2lhbCBjYXNlIGlzIGxvY2tlZCBleGNlcHRpb25zLCBmb3Igd2hpY2ggdGhlIFBNVFUgaXMgc21hbGxlclxuLSAqIHRoYW4gdGhlIG1pbmltYWwgYWNjZXB0ZWQgUE1UVTpcbi0gKiAtIGlmIHRoZSBuZXcgTVRVIGlzIGdyZWF0ZXIgdGhhbiB0aGUgUE1UVSwgZG9uJiMzOTt0IG1ha2UgYW55IGNoYW5nZVxuLSAqIC0gb3RoZXJ3aXNlLCB1bmxvY2sgYW5kIHNldCBQTVRVXG4mIzQzOy8qIFdhbGsgdGhlIGV4Y2VwdGlvbnMgb2YgYSBuZXh0aG9wIGFmdGVyIGl0cyBmaXJzdCBob3AgTVRVIGNoYW5nZWQuIFRoZVxuJiM0MzsgKiBjaGFpbiBpcyBSQ1UgcHJvdGVjdGVkIGhlcmUsIHdoaWxlIGZuaGVfdXBkYXRlX3BtdHUoKSB0YWtlcyBmbmhlX2xvY2tcbiYjNDM7ICogZm9yIHRoZSB1cGRhdGUgb2YgZWFjaCBlbnRyeS5cbiAgKi9cbiB2b2lkIGZpYl9uaGNfdXBkYXRlX210dShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCB1MzIgbmV3LCB1MzIgb3JpZylcbiB7XG4gXHRzdHJ1Y3QgZm5oZV9oYXNoX2J1Y2tldCAqYnVja2V0O1xuIFx0aW50IGk7XG4gXG4tXHRidWNrZXQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG5oYy1cdTAwM2VuaGNfZXhjZXB0aW9ucywgMSk7XG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuJiM0MztcdGJ1Y2tldCA9IHJjdV9kZXJlZmVyZW5jZShuaGMtXHUwMDNlbmhjX2V4Y2VwdGlvbnMpO1xuIFx0aWYgKCFidWNrZXQpXG4tXHRcdHJldHVybjtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRk5IRV9IQVNIX1NJWkU7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlO1xuIFxuLVx0XHRmb3IgKGZuaGUgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGJ1Y2tldFtpXS5jaGFpbiwgMSk7XG4mIzQzO1x0XHRmb3IgKGZuaGUgPSByY3VfZGVyZWZlcmVuY2UoYnVja2V0W2ldLmNoYWluKTtcbiBcdFx0ICAgICBmbmhlO1xuLVx0XHQgICAgIGZuaGUgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGZuaGUtXHUwMDNlZm5oZV9uZXh0LCAxKSkge1xuLVx0XHRcdGlmIChmbmhlLVx1MDAzZWZuaGVfbXR1X2xvY2tlZCkge1xuLVx0XHRcdFx0aWYgKG5ldyBcdTAwM2M9IGZuaGUtXHUwMDNlZm5oZV9wbXR1KSB7XG4tXHRcdFx0XHRcdGZuaGUtXHUwMDNlZm5oZV9wbXR1ID0gbmV3O1xuLVx0XHRcdFx0XHRmbmhlLVx1MDAzZWZuaGVfbXR1X2xvY2tlZCA9IGZhbHNlO1xuLVx0XHRcdFx0fVxuLVx0XHRcdH0gZWxzZSBpZiAobmV3IFx1MDAzYyBmbmhlLVx1MDAzZWZuaGVfcG10dSB8fFxuLVx0XHRcdFx0ICAgb3JpZyA9PSBmbmhlLVx1MDAzZWZuaGVfcG10dSkge1xuLVx0XHRcdFx0Zm5oZS1cdTAwM2VmbmhlX3BtdHUgPSBuZXc7XG4tXHRcdFx0fVxuLVx0XHR9XG4mIzQzO1x0XHQgICAgIGZuaGUgPSByY3VfZGVyZWZlcmVuY2UoZm5oZS1cdTAwM2VmbmhlX25leHQpKVxuJiM0MztcdFx0XHRmbmhlX3VwZGF0ZV9wbXR1KGZuaGUsIG5ldywgb3JpZyk7XG4gXHR9XG4mIzQzO291dDpcbiYjNDM7XHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG4gdm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jXG5pbmRleCAxNTJkOGNiMjhmNjVhLi5iODI0MDFhNmJhZWQ3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvcm91dGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvcm91dGUuY1xuQEAgLTc0MSw2ICYjNDM7NzQxLDM1IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9vcl9jcmVhdGVfZm5oZShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCBfX2JlMzIgZGFkZHIsXG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZmbmhlX2xvY2spO1xuIH1cbiBcbiYjNDM7LyogVXBkYXRlIHRoZSBQTVRVIG9mIGFuIGV4Y2VwdGlvbiB3aGVuOlxuJiM0MzsgKiAtIHRoZSBuZXcgTVRVIG9mIHRoZSBmaXJzdCBob3AgYmVjb21lcyBzbWFsbGVyIHRoYW4gdGhlIFBNVFVcbiYjNDM7ICogLSB0aGUgb2xkIE1UVSB3YXMgdGhlIHNhbWUgYXMgdGhlIFBNVFUsIGFuZCBpdCBsaW1pdGVkIGRpc2NvdmVyeSBvZlxuJiM0MzsgKiAgIGxhcmdlciBNVFVzIG9uIHRoZSBwYXRoLiBXaXRoIHRoYXQgbGltaXQgcmFpc2VkLCB3ZSBjYW4gbm93XG4mIzQzOyAqICAgZGlzY292ZXIgbGFyZ2VyIE1UVXNcbiYjNDM7ICogQSBzcGVjaWFsIGNhc2UgaXMgbG9ja2VkIGV4Y2VwdGlvbnMsIGZvciB3aGljaCB0aGUgUE1UVSBpcyBzbWFsbGVyXG4mIzQzOyAqIHRoYW4gdGhlIG1pbmltYWwgYWNjZXB0ZWQgUE1UVTpcbiYjNDM7ICogLSBpZiB0aGUgbmV3IE1UVSBpcyBncmVhdGVyIHRoYW4gdGhlIFBNVFUsIGRvbiYjMzk7dCBtYWtlIGFueSBjaGFuZ2VcbiYjNDM7ICogLSBvdGhlcndpc2UsIHVubG9jayBhbmQgc2V0IFBNVFVcbiYjNDM7ICpcbiYjNDM7ICogZm5oZV9sb2NrIGtlZXBzIGZuaGVfcG10dSBhbmQgZm5oZV9tdHVfbG9ja2VkIGNvbnNpc3RlbnQgYWdhaW5zdFxuJiM0MzsgKiB1cGRhdGVfb3JfY3JlYXRlX2ZuaGUoKSwgd2hpY2ggc2V0cyBib3RoIHVuZGVyIHRoZSBzYW1lIGxvY2suXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIGZuaGVfdXBkYXRlX3BtdHUoc3RydWN0IGZpYl9uaF9leGNlcHRpb24gKmZuaGUsIHUzMiBuZXcsIHUzMiBvcmlnKVxuJiM0Mzt7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmZuaGVfbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmIChmbmhlLVx1MDAzZWZuaGVfbXR1X2xvY2tlZCkge1xuJiM0MztcdFx0aWYgKG5ldyBcdTAwM2M9IGZuaGUtXHUwMDNlZm5oZV9wbXR1KSB7XG4mIzQzO1x0XHRcdGZuaGUtXHUwMDNlZm5oZV9wbXR1ID0gbmV3O1xuJiM0MztcdFx0XHRmbmhlLVx1MDAzZWZuaGVfbXR1X2xvY2tlZCA9IGZhbHNlO1xuJiM0MztcdFx0fVxuJiM0MztcdH0gZWxzZSBpZiAobmV3IFx1MDAzYyBmbmhlLVx1MDAzZWZuaGVfcG10dSB8fCBvcmlnID09IGZuaGUtXHUwMDNlZm5oZV9wbXR1KSB7XG4mIzQzO1x0XHRmbmhlLVx1MDAzZWZuaGVfcG10dSA9IG5ldztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmZuaGVfbG9jayk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgX19pcF9kb19yZWRpcmVjdChzdHJ1Y3QgcnRhYmxlICpydCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZsb3dpNCAqZmw0LFxuIFx0XHRcdCAgICAgYm9vbCBraWxsX3JvdXRlKVxuIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZuaGVfdXBkYXRlX3BtdHUmIzM0OywKICAgICYjMzQ7ZmliX25oY191cGRhdGVfbXR1JiMzNDssCiAgICAmIzM0O2ZpYl9zeW5jX210dSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSVB2NCByb3V0aW5nIGxvZ2ljIHRvIGNvcnJlY3RseSB1cGRhdGUgdGhlIFBhdGggTVRVIChQTVRVKSBvZiBmaWIgbmV4dGhvcCBleGNlcHRpb25zIHdoZW4gdGhlIE1UVSBvZiB0aGUgZmlyc3QgaG9wIGNoYW5nZXMuIEl0IGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYGZuaGVfdXBkYXRlX3BtdHVgIGFuZCBtb2RpZmllcyBgZmliX25oY191cGRhdGVfbXR1YCB0byB1c2UgUkNVIGFuZCBhIHNwaW5sb2NrLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGJ5IGNoYW5naW5nIHRoZSBNVFUgb2YgYSBuZXR3b3JrIGRldmljZSAoZS5nLiwgdmlhIG5ldGxpbmsgb3IgaW9jdGwpIHdoaWNoIHRyaWdnZXJzIGBmaWJfc3luY19tdHVgIGFuZCBgbmV4dGhvcF9zeW5jX210dWAuIFRoaXMgaXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjI3MzM2NDMxOTNhNGVhZjUwZmRjNmVmYzIwYjIwMjNlNjM5N2Q4MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMjA6NTY6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9yb3V0ZS5oIGIvaW5jbHVkZS9uZXQvcm91dGUuaAppbmRleCBmOTAxMDZmMzgzYzU2Li40NTI5MDE3N2EzM2M0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9yb3V0ZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3JvdXRlLmgKQEAgLTI3Niw2ICYjNDM7Mjc2LDggQEAgaW50IGZpYl9kdW1wX2luZm9fZm5oZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsCiAJCSAgICAgICB1MzIgdGFibGVfaWQsIHN0cnVjdCBmaWJfaW5mbyAqZmksCiAJCSAgICAgICBpbnQgKmZhX2luZGV4LCBpbnQgZmFfc3RhcnQsIHVuc2lnbmVkIGludCBmbGFncyk7CiAKJiM0Mzt2b2lkIGZuaGVfdXBkYXRlX3BtdHUoc3RydWN0IGZpYl9uaF9leGNlcHRpb24gKmZuaGUsIHUzMiBuZXcsIHUzMiBvcmlnKTsKJiM0MzsKIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF9ydF9wdXQoc3RydWN0IHJ0YWJsZSAqcnQpCiB7CiAJLyogZHN0X3JlbGVhc2UoKSBhY2NlcHRzIGEgTlVMTCBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMgYi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMKaW5kZXggNzhmODRhZTNlZTEyMC4uMDQ4MzUxOWI3ZmIwZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvZmliX3NlbWFudGljcy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYwpAQCAtMTg5NSw0MiAmIzQzOzE4OTUsMzAgQEAgc3RhdGljIGludCBjYWxsX2ZpYl9uaF9ub3RpZmllcnMoc3RydWN0IGZpYl9uaCAqbmgsCiAJcmV0dXJuIE5PVElGWV9ET05FOwogfQogCi0vKiBVcGRhdGUgdGhlIFBNVFUgb2YgZXhjZXB0aW9ucyB3aGVuOgotICogLSB0aGUgbmV3IE1UVSBvZiB0aGUgZmlyc3QgaG9wIGJlY29tZXMgc21hbGxlciB0aGFuIHRoZSBQTVRVCi0gKiAtIHRoZSBvbGQgTVRVIHdhcyB0aGUgc2FtZSBhcyB0aGUgUE1UVSwgYW5kIGl0IGxpbWl0ZWQgZGlzY292ZXJ5IG9mCi0gKiAgIGxhcmdlciBNVFVzIG9uIHRoZSBwYXRoLiBXaXRoIHRoYXQgbGltaXQgcmFpc2VkLCB3ZSBjYW4gbm93Ci0gKiAgIGRpc2NvdmVyIGxhcmdlciBNVFVzCi0gKiBBIHNwZWNpYWwgY2FzZSBpcyBsb2NrZWQgZXhjZXB0aW9ucywgZm9yIHdoaWNoIHRoZSBQTVRVIGlzIHNtYWxsZXIKLSAqIHRoYW4gdGhlIG1pbmltYWwgYWNjZXB0ZWQgUE1UVToKLSAqIC0gaWYgdGhlIG5ldyBNVFUgaXMgZ3JlYXRlciB0aGFuIHRoZSBQTVRVLCBkb24mIzM5O3QgbWFrZSBhbnkgY2hhbmdlCi0gKiAtIG90aGVyd2lzZSwgdW5sb2NrIGFuZCBzZXQgUE1UVQomIzQzOy8qIFdhbGsgdGhlIGV4Y2VwdGlvbnMgb2YgYSBuZXh0aG9wIGFmdGVyIGl0cyBmaXJzdCBob3AgTVRVIGNoYW5nZWQuIFRoZQomIzQzOyAqIGNoYWluIGlzIFJDVSBwcm90ZWN0ZWQgaGVyZSwgd2hpbGUgZm5oZV91cGRhdGVfcG10dSgpIHRha2VzIGZuaGVfbG9jawomIzQzOyAqIGZvciB0aGUgdXBkYXRlIG9mIGVhY2ggZW50cnkuCiAgKi8KIHZvaWQgZmliX25oY191cGRhdGVfbXR1KHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGMsIHUzMiBuZXcsIHUzMiBvcmlnKQogewogCXN0cnVjdCBmbmhlX2hhc2hfYnVja2V0ICpidWNrZXQ7CiAJaW50IGk7CiAKLQlidWNrZXQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG5oYy0mZ3Q7bmhjX2V4Y2VwdGlvbnMsIDEpOwomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CWJ1Y2tldCA9IHJjdV9kZXJlZmVyZW5jZShuaGMtJmd0O25oY19leGNlcHRpb25zKTsKIAlpZiAoIWJ1Y2tldCkKLQkJcmV0dXJuOwomIzQzOwkJZ290byBvdXQ7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgRk5IRV9IQVNIX1NJWkU7IGkmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlOwogCi0JCWZvciAoZm5oZSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoYnVja2V0W2ldLmNoYWluLCAxKTsKJiM0MzsJCWZvciAoZm5oZSA9IHJjdV9kZXJlZmVyZW5jZShidWNrZXRbaV0uY2hhaW4pOwogCQkgICAgIGZuaGU7Ci0JCSAgICAgZm5oZSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZm5oZS0mZ3Q7Zm5oZV9uZXh0LCAxKSkgewotCQkJaWYgKGZuaGUtJmd0O2ZuaGVfbXR1X2xvY2tlZCkgewotCQkJCWlmIChuZXcgJmx0Oz0gZm5oZS0mZ3Q7Zm5oZV9wbXR1KSB7Ci0JCQkJCWZuaGUtJmd0O2ZuaGVfcG10dSA9IG5ldzsKLQkJCQkJZm5oZS0mZ3Q7Zm5oZV9tdHVfbG9ja2VkID0gZmFsc2U7Ci0JCQkJfQotCQkJfSBlbHNlIGlmIChuZXcgJmx0OyBmbmhlLSZndDtmbmhlX3BtdHUgfHwKLQkJCQkgICBvcmlnID09IGZuaGUtJmd0O2ZuaGVfcG10dSkgewotCQkJCWZuaGUtJmd0O2ZuaGVfcG10dSA9IG5ldzsKLQkJCX0KLQkJfQomIzQzOwkJICAgICBmbmhlID0gcmN1X2RlcmVmZXJlbmNlKGZuaGUtJmd0O2ZuaGVfbmV4dCkpCiYjNDM7CQkJZm5oZV91cGRhdGVfcG10dShmbmhlLCBuZXcsIG9yaWcpOwogCX0KJiM0MztvdXQ6CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwogfQogCiB2b2lkIGZpYl9zeW5jX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgb3JpZ19tdHUpCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9yb3V0ZS5jIGIvbmV0L2lwdjQvcm91dGUuYwppbmRleCAxNTJkOGNiMjhmNjVhLi5iODI0MDFhNmJhZWQ3IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9yb3V0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3JvdXRlLmMKQEAgLTc0MSw2ICYjNDM7NzQxLDM1IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9vcl9jcmVhdGVfZm5oZShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCBfX2JlMzIgZGFkZHIsCiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtmbmhlX2xvY2spOwogfQogCiYjNDM7LyogVXBkYXRlIHRoZSBQTVRVIG9mIGFuIGV4Y2VwdGlvbiB3aGVuOgomIzQzOyAqIC0gdGhlIG5ldyBNVFUgb2YgdGhlIGZpcnN0IGhvcCBiZWNvbWVzIHNtYWxsZXIgdGhhbiB0aGUgUE1UVQomIzQzOyAqIC0gdGhlIG9sZCBNVFUgd2FzIHRoZSBzYW1lIGFzIHRoZSBQTVRVLCBhbmQgaXQgbGltaXRlZCBkaXNjb3Zlcnkgb2YKJiM0MzsgKiAgIGxhcmdlciBNVFVzIG9uIHRoZSBwYXRoLiBXaXRoIHRoYXQgbGltaXQgcmFpc2VkLCB3ZSBjYW4gbm93CiYjNDM7ICogICBkaXNjb3ZlciBsYXJnZXIgTVRVcwomIzQzOyAqIEEgc3BlY2lhbCBjYXNlIGlzIGxvY2tlZCBleGNlcHRpb25zLCBmb3Igd2hpY2ggdGhlIFBNVFUgaXMgc21hbGxlcgomIzQzOyAqIHRoYW4gdGhlIG1pbmltYWwgYWNjZXB0ZWQgUE1UVToKJiM0MzsgKiAtIGlmIHRoZSBuZXcgTVRVIGlzIGdyZWF0ZXIgdGhhbiB0aGUgUE1UVSwgZG9uJiMzOTt0IG1ha2UgYW55IGNoYW5nZQomIzQzOyAqIC0gb3RoZXJ3aXNlLCB1bmxvY2sgYW5kIHNldCBQTVRVCiYjNDM7ICoKJiM0MzsgKiBmbmhlX2xvY2sga2VlcHMgZm5oZV9wbXR1IGFuZCBmbmhlX210dV9sb2NrZWQgY29uc2lzdGVudCBhZ2FpbnN0CiYjNDM7ICogdXBkYXRlX29yX2NyZWF0ZV9mbmhlKCksIHdoaWNoIHNldHMgYm90aCB1bmRlciB0aGUgc2FtZSBsb2NrLgomIzQzOyAqLwomIzQzO3ZvaWQgZm5oZV91cGRhdGVfcG10dShzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZSwgdTMyIG5ldywgdTMyIG9yaWcpCiYjNDM7ewomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtmbmhlX2xvY2spOwomIzQzOwomIzQzOwlpZiAoZm5oZS0mZ3Q7Zm5oZV9tdHVfbG9ja2VkKSB7CiYjNDM7CQlpZiAobmV3ICZsdDs9IGZuaGUtJmd0O2ZuaGVfcG10dSkgewomIzQzOwkJCWZuaGUtJmd0O2ZuaGVfcG10dSA9IG5ldzsKJiM0MzsJCQlmbmhlLSZndDtmbmhlX210dV9sb2NrZWQgPSBmYWxzZTsKJiM0MzsJCX0KJiM0MzsJfSBlbHNlIGlmIChuZXcgJmx0OyBmbmhlLSZndDtmbmhlX3BtdHUgfHwgb3JpZyA9PSBmbmhlLSZndDtmbmhlX3BtdHUpIHsKJiM0MzsJCWZuaGUtJmd0O2ZuaGVfcG10dSA9IG5ldzsKJiM0MzsJfQomIzQzOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2ZuaGVfbG9jayk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgX19pcF9kb19yZWRpcmVjdChzdHJ1Y3QgcnRhYmxlICpydCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZsb3dpNCAqZmw0LAogCQkJICAgICBib29sIGtpbGxfcm91dGUpCiB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNTEKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQTVRVIFVwZGF0ZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYGZpYl9uaGNfdXBkYXRlX210dWAgaW4gYG5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY2AgYW5kIGFkZGluZyBgZm5oZV91cGRhdGVfcG10dWAgdG8gYG5ldC9pcHY0L3JvdXRlLmNgLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBob3cgdGhlIFBhdGggTVRVIChQTVRVKSBpcyB1cGRhdGVkIGZvciBleGNlcHRpb25zIHdoZW4gdGhlIE1UVSBvZiB0aGUgZmlyc3QgaG9wIGNoYW5nZXMuIEdvb2QuIFNtYXJ0IHRvIHByb3RlY3QgYGZuaGVfcG10dWAgYW5kIGBmbmhlX210dV9sb2NrZWRgIHdpdGggUkNVIGFuZCBhIHNwaW5sb2NrLCBgZm5oZV9sb2NrYCDigJMgdGhhdCYjMzk7cyBjcnVjaWFsIGZvciBjb25jdXJyZW5jeSwgZXNwZWNpYWxseSBpbiByb3V0aW5nLgoKUmlnaHQsIHNvIGxldCYjMzk7cyBkaWcgaW50byBgZmliX25oY191cGRhdGVfbXR1YCBhbmQgdGhlIG5ldyBgZm5oZV91cGRhdGVfcG10dWAuIEltbWVkaWF0ZWx5LCBJIHNlZSB0aGlzIGlzIGFsbCBJUHY0IHJvdXRpbmcgbG9naWMsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGRlZmluaXRlbHkgaW4gdGhlIGNyaXRpY2FsIHBhdGguIEdvb2Qgc3BvdC4gYGZpYl9uaGNfdXBkYXRlX210dWAgaXMgY2FsbGVkIGZyb20gYGZpYl9zeW5jX210dWAsIHdoaWNoIGl0c2VsZiBnZXRzIGNhbGxlZCB3aGVuIGEgZGV2aWNlJiMzOTtzIE1UVSBjaGFuZ2VzLiBHaXZlbiB0aGUgZGV2aWNlIE1UVSBjaGFuZ2UgdHJpZ2dlcnMgdGhpcyBwYXRoLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gUHJvbWlzaW5nLCBhbmQgd29ydGggYSB0YXJnZXRlZCBmdXp6aW5nIGVmZm9ydC4KCk5vdywgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgaWYgdGhlc2UgZnVuY3Rpb25zIGFyZSBleHBvcnRlZC4gYGZpYl9uaGNfdXBkYXRlX210dWAgaXMgYWxyZWFkeSB0aGVyZSBhbmQsIGFzIGV4cGVjdGVkLCBgZm5oZV91cGRhdGVfcG10dWAgaXMgbmV3LiBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbGVycyBvZiBgZmliX25oY191cGRhdGVfbXR1YCwgc2luY2UgdGhhdCYjMzk7cyB0aGUgZXN0YWJsaXNoZWQgY29kZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGJlaW5nIGFmZmVjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpYl9uaGNfdXBkYXRlX210dSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9pcF9maWIuaD00OTU9dm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KTtcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjQ5Njp2b2lkIGZpYl9uaGNfdXBkYXRlX210dShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCB1MzIgbmV3LCB1MzIgb3JpZyk7XG5pbmNsdWRlL25ldC9pcF9maWIuaC00OTctXG4tLVxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jPTE4Njk9c3RhdGljIGludCBjYWxsX2ZpYl9uaF9ub3RpZmllcnMoc3RydWN0IGZpYl9uaCAqbmgsXG4tLVxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5MDEtICovXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM6MTkwMjp2b2lkIGZpYl9uaGNfdXBkYXRlX210dShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCB1MzIgbmV3LCB1MzIgb3JpZylcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0xOTAzLXtcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM9MTkyND12b2lkIGZpYl9zeW5jX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgb3JpZ19tdHUpXG4tLVxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5MzAtXHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobmgtXHUwMDNlZmliX25oX2RldiAhPSBkZXYpO1xubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjE5MzE6XHRcdGZpYl9uaGNfdXBkYXRlX210dShcdTAwMjZuaC1cdTAwM2VuaF9jb21tb24sIGRldi1cdTAwM2VtdHUsIG9yaWdfbXR1KTtcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0xOTMyLVx0fVxuLS1cbm5ldC9pcHY0L25leHRob3AuYz0zOTU1PXN0YXRpYyB2b2lkIG5leHRob3Bfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0zOTY1LVx0XHRcdGlmIChuaGktXHUwMDNlZmFtaWx5ID09IEFGX0lORVQpXG5uZXQvaXB2NC9uZXh0aG9wLmM6Mzk2NjpcdFx0XHRcdGZpYl9uaGNfdXBkYXRlX210dShcdTAwMjZuaGktXHUwMDNlZmliX25oYywgZGV2LVx1MDAzZW10dSxcbm5ldC9pcHY0L25leHRob3AuYy0zOTY3LVx0XHRcdFx0XHRcdCAgIG9yaWdfbXR1KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTE4CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBNVFUgU3luY2hyb25pemF0aW9uKioKCk9rYXksIHNvIHRoZSBgZmliX3N5bmNfbXR1YCBhbmQgYG5leHRob3Bfc3luY19tdHVgIGZ1bmN0aW9ucyBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIHRoaXMgY29kZSwgYW5kIHRoZXkmIzM5O3JlIHRyaWdnZXJlZCBieSBuZXRkZXYgTVRVIGNoYW5nZXMg4oCTIHNwZWNpZmljYWxseSB0aGUgYE5FVERFVl9DSEFOR0VNVFVgIGV2ZW50LiBUaGF0IG1ha2VzIHRoaXMgYSBwcmV0dHkgYWNjZXNzaWJsZSBhbmQgcG90ZW50aWFsbHkgZnJ1aXRmdWwgYXJlYSBmb3IgZnV6emluZy4gRGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0LgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNpdHVhdGlvbiB3aGVyZSBhIG5ldHdvcmsgZGV2aWNlJiMzOTtzIE1UVSBjaGFuZ2UgbmVlZHMgdG8gYmUgcHJvcGFnYXRlZCB0byB0aGUgZm9yd2FyZGluZyBpbmZvcm1hdGlvbiBiYXNlIChGSUIpIGFuZCBuZXh0IGhvcCB0YWJsZXMgdG8gZW5zdXJlIGNvbnNpc3RlbnQgcGFja2V0IHNpemUgaGFuZGxpbmcuIEEgbWlzY2FsY3VsYXRpb24gb3IgaW5jb25zaXN0ZW5jeSBoZXJlIGNvdWxkIGxlYWQgdG8gZnJhZ21lbnRhdGlvbiBpc3N1ZXMsIHBhdGggTVRVIGRpc2NvdmVyeSBwcm9ibGVtcywgb3IgZXZlbiBwb3RlbnRpYWwgZGVuaWFsLW9mLXNlcnZpY2UgdnVsbmVyYWJpbGl0aWVzLgoKVGhlIHByaW1hcnkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZTogYGZpYl9uaGNfdXBkYXRlX210dWAsIGBmbmhlX3VwZGF0ZV9wbXR1YCwgYW5kIG9mIGNvdXJzZSBgZmliX3N5bmNfbXR1YCBhbmQgYG5leHRob3Bfc3luY19tdHVgIHRoZW1zZWx2ZXMuIFRoZXNlIGFyZSB0aGUgd29ya2hvcnNlcyBkb2luZyB0aGUgYWN0dWFsIHVwZGF0ZXMgYW5kIHN5bmNocm9uaXphdGlvbi4KCkkgc2hvdWxkIGFsc28gY2hlY2sgYG5ldC9pcHY0L0tjb25maWdgIGZvciBhbnkgZmVhdHVyZSBmbGFncyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgYmVoYXZpb3Igb2YgdGhpcyBjb2RlLiBgSVBfUk9VVEVfTVVMVElQQVRIYCBpcyBhIHN0cm9uZyBtYXliZTsgaWYgbXVsdGlwbGUgcGF0aHMgYXJlIGludm9sdmVkLCB0aGUgTVRVIHN5bmNocm9uaXphdGlvbiBsb2dpYyB3aWxsIGxpa2VseSBiZSBtb3JlIGNvbXBsZXguIGBJUF9ST1VURV9DTEFTU0lEYCBpcyBhbm90aGVyIG9uZSB0byBjb25zaWRlci4KCkVzc2VudGlhbGx5LCBJJiMzOTttIHRoaW5raW5nIHRoYXQgaWYgSSBjYW4gcmVsaWFibHkgdHJpZ2dlciBgTkVUREVWX0NIQU5HRU1UVWAgZXZlbnRzIGFuZCBjYXJlZnVsbHkgY3JhZnQgdGhlIHBhcmFtZXRlcnMsIEkgY2FuIHN0YXJ0IHByb2JpbmcgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIE1UVSBzeW5jaHJvbml6YXRpb24gcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBGSUIsIG5leHQgaG9wcywgYW5kIHBhdGggTVRVIGRpc2NvdmVyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfUk9VVEUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz02Mz1jb25maWcgSVBfTVVMVElQTEVfVEFCTEVTXG4tLVxubmV0L2lwdjQvS2NvbmZpZy03OS1cbm5ldC9pcHY0L0tjb25maWc6ODA6Y29uZmlnIElQX1JPVVRFX01VTFRJUEFUSFxubmV0L2lwdjQvS2NvbmZpZy04MS1cdGJvb2wgXCYjMzQ7SVA6IGVxdWFsIGNvc3QgbXVsdGlwYXRoXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy05MS1cbm5ldC9pcHY0L0tjb25maWc6OTI6Y29uZmlnIElQX1JPVVRFX1ZFUkJPU0Vcbm5ldC9pcHY0L0tjb25maWctOTMtXHRib29sIFwmIzM0O0lQOiB2ZXJib3NlIHJvdXRlIG1vbml0b3JpbmdcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTEwMi1cbm5ldC9pcHY0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9ST1VURV9DTEFTU0lEXG5uZXQvaXB2NC9LY29uZmlnLTEwNC1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzA1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBJUHY0IFJvdXRpbmcgQ29kZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIElQdjQgcm91dGluZyBpbXBsZW1lbnRhdGlvbi4gV2hlcmUgZG8gSSBzdGFydD8gUmlnaHQsIHRoZSBjb3JlIGxvZ2ljIHNob3VsZCBiZSBpbiBgbmV0L2lwdjQvZmliX3NlbWFudGljcy5jYCBhbmQgYG5ldC9pcHY0L3JvdXRlLmNgLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBBbmQgc2luY2UgdGhpcyBpcyBJUHY0LCBpdCYjMzk7cyBjb21waWxlZCBpbiB1bmNvbmRpdGlvbmFsbHk7IG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgY29uZGl0aW9uYWxzLiBOb3csIHRvIGJlIGNvbXBsZXRlbHkgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBwaWVjZXMsIEkgc2hvdWxkIHZlcmlmeSB0aGUgYnVpbGQgcHJvY2Vzcy4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgYG5ldC9pcHY0L01ha2VmaWxlYC4gVGhhdCBzaG91bGQgY29uZmlybSBob3cgdGhlc2UgZmlsZXMgYXJlIGhhbmRsZWQgZHVyaW5nIHRoZSBjb21waWxhdGlvbiBzdGFnZSBhbmQgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIG1vZHVsZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpYl9zZW1hbnRpY3MubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE0LVx0ICAgICB1ZHBfb2ZmbG9hZC5vIGFycC5vIGljbXAubyBkZXZpbmV0Lm8gYWZfaW5ldC5vIGlnbXAubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTU6XHQgICAgIGZpYl9mcm9udGVuZC5vIGZpYl9zZW1hbnRpY3MubyBmaWJfdHJpZS5vIGZpYl9ub3RpZmllci5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNi1cdCAgICAgaW5ldF9mcmFnbWVudC5vIHBpbmcubyBpcF90dW5uZWxfY29yZS5vIGdyZV9vZmZsb2FkLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjcxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKklQdjQgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCBzbyB0aGUgYnVpbGQgcHJvY2VzcyBleHBsaWNpdGx5IGluY2x1ZGVzIElQdjQgc3VwcG9ydCwgbm8gbWF0dGVyIHdoYXQuIFRoYXQgbWVhbnMsIHRvIGdldCB0aGluZ3MgdXAgYW5kIHJ1bm5pbmcsIGFsbCBJICpyZWFsbHkqIG5lZWQgdG8gZm9jdXMgb24gaXMgdGhlIGBJTkVUYCBjb25maWd1cmF0aW9uLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4KCk5vdywgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQgdGhhdCBgZm5oZV91cGRhdGVfcG10dWAgZnVuY3Rpb24gaXMgYWN0dWFsbHkgZXhwb3NlZCBhbmQgYXZhaWxhYmxlIGZvciB1c2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBjYW4gaW50ZXJmYWNlIHdpdGggaXQgaWYgbmVjZXNzYXJ5LiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBleHBvcnRzIHdpbGwgY29uZmlybSB0aGlzIGZvciBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLipmbmhlX3VwZGF0ZV9wbXR1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg4NAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uCgoqKkFuYWx5emluZyBGdW5jdGlvbiBEZWNsYXJhdGlvbiBhbmQgRXhwb3J0IFN0YXR1cyoqCgpBbHJpZ2h0LCBzbyB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24sIGl0JiMzOTtzIG5vdCBhY3R1YWxseSBleHBvcnRlZCBhcyBzdWNoLCBtZWFuaW5nIGl0JiMzOTtzIG5vdCBkZWZpbmVkIHdpdGhpbiBhIGAuY2AgZmlsZSBhbmQgdGhlbiBkZWNsYXJlZCBpbiBhIGhlYWRlciBmaWxlIGZvciBvdGhlciBtb2R1bGVzIHRvIHVzZS4gSXTigJlzIGRlY2xhcmVkLCBhbmQgdGhlcmVmb3JlIGRlZmluZWQgd2l0aGluIGBpbmNsdWRlL25ldC9yb3V0ZS5oYC4gVGhhdCBtYWtlcyBpdCBhIG5vbi1zdGF0aWMgZnVuY3Rpb24uIFNvLCBpdCYjMzk7cyBub3QgYSB0cnVseSBzdGF0aWMgZnVuY3Rpb247IGl0IGhhcyB2aXNpYmlsaXR5IHdpdGhpbiB0aGUgbW9kdWxlIGl0IGJlbG9uZ3MgdG8sIGJ1dCBpc27igJl0ICpleHBsaWNpdGx5KiBleHBvcnRlZCBmb3IgZXh0ZXJuYWwgdXNlLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGFjY2VzcyBjb250cm9sLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGlmIGBmaWJfbmhjX3VwZGF0ZV9tdHVgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgaXRzIGRlZmluaXRpb24gYW5kIHZpc2liaWxpdHkgYXJlIGFzIHN1c3BlY3RlZC4gVGhpcyBzdGVwIGlzIGNydWNpYWwgZm9yIHZlcmlmeWluZyBob3cgaXQmIzM5O3MgaW50ZW5kZWQgdG8gYmUgdXRpbGl6ZWQgd2l0aGluIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qZmliX25oY191cGRhdGVfbXR1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE3NQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIE5vbi1FeHBvcnRlZCwgTm9uLVN0YXRpYyBWYXJpYWJsZXMqKgoKQWxyaWdodCwgSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlYmFzZSBhbmQgSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBzb21ldGhpbmcgdGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3Q6IGEgdmFyaWFibGUgdGhhdCYjMzk7cyAqbm90KiBwYXJ0IG9mIHRoZSBleHBvcnRlZCBBUEksIHlldCBhbHNvIGlzbiYjMzk7dCBkZWNsYXJlZCBgc3RhdGljYC4gVGhpcyBpcyBhIGNsYXNzaWMgcG90ZW50aWFsIHBvaW50IG9mIGNvbmZ1c2lvbiBhbmQvb3IgdW5pbnRlbnRpb25hbCBhY2Nlc3MuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hlcmUgaXMgdGhpcyB2YXJpYWJsZSBiZWluZyB1c2VkPyBJcyBpdCB0cnVseSAqaW50ZW5kZWQqIHRvIGJlIGhpZGRlbj8gQW5kIGlmIHNvLCB3aHkgaXMgaXQgbm9uLXN0YXRpYz8gSXMgaXQgdXNlZCBpbiB0aGlzIGZpbGUgaW4gd2F5cyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSBsb2NhbCB0byB0aGUgZmlsZSwgYW5kIHNob3VsZCB0aHVzIGJlIHN0YXRpYz8gT3IgaXMgaXQgZ2xvYmFsbHkgYWNjZXNzZWQgaW4gYW5vdGhlciBwbGFjZT8KClNvLCBJIHRoaW5rIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBoZXJlIGlzIHRvIGNvbmZpcm0gd2hldGhlciBgZmliX3N5bmNfbXR1YCBpcyBleHBvcnRlZC4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgbGlua2VyIHRlbGxzIHVzIHNvbWV0aGluZyBoZXJlLiBUaW1lIHRvIGNoZWNrIHRoZSBzeW1ib2wgdGFibGUhIEkmIzM5O2xsIHF1aWNrbHkgdXNlIG15IHN0YW5kYXJkIHRvb2xzIChubSwgb2JqZHVtcCwgb3IgbWF5YmUgZXZlbiBncmVwKSB0byBwaW5wb2ludCBpdHMgc3RhdHVzLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBleHBvcnQsIGp1c3QgdG8gYmUgc3VyZS4gSSYjMzk7bSBnb2luZyB0byB0cmFjayBpdCBkb3duLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmZpYl9zeW5jX210dSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0OTYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gRXhwb3J0ZWQgVmFyaWFibGVzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBleHBvcnRhYmlsaXR5LiBJJiMzOTt2ZSBub3RpY2VkIHNvbWV0aGluZywgYW5kIGl0JiMzOTtzIGdvdCBtZSBjdXJpb3VzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgb24gdmFyaWFibGVzIHRoYXQgYXJlbiYjMzk7dCAqZXhwbGljaXRseSogZmxhZ2dlZCBmb3IgZXhwb3J0IChub24tc3RhdGljLCBieSB0aGUgbG9va3Mgb2YgaXQpLiBUaGlzIG1lYW5zIHRoZXkgYXJlbiYjMzk7dCBkaXJlY3RseSBhdmFpbGFibGUgb3V0c2lkZSB0aGVpciBjb250YWluaW5nIHNjb3BlIGJ5IGRlZmF1bHQuIFRoaXMgcmFpc2VzIGFuIGludGVyZXN0aW5nIHF1ZXN0aW9uIGFib3V0IGFjY2Vzc2liaWxpdHkgYW5kIGhvdyB0aGVzZSB2YXJpYWJsZXMgYXJlIHVzZWQuCgpUbyBtYWtlIHN1cmUgSSBmdWxseSB1bmRlcnN0YW5kLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYG5leHRob3Bfc3luY19tdHVgIGlzIGV4cG9ydGVkLiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgdGhlIGNvbnRleHQgb2YgaXRzIHVzZSB3aXRoaW4gdGhlIGxhcmdlciBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qbmV4dGhvcF9zeW5jX210dSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MjYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBkcmF3aW5nIG9uIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgTVRVIFN5bmNocm9uaXphdGlvbiBhbmQgU2NvcGUqKgoKQWxyaWdodCwgc28gdGhlc2UgZnVuY3Rpb25zIGFyZW4mIzM5O3QgYmVpbmcgZXhwb3J0ZWQsIGJ1dCB0aGV5JiMzOTtyZSAqYWxzbyogbm90IGRlY2xhcmVkIGFzIHN0YXRpYy4gSW50ZXJlc3RpbmcuIFRoYXQgc3VnZ2VzdHMgdGhleSBoYXZlIGludGVybmFsIHVzZSB3aXRoaW4gdGhlIGxpYnJhcnkgb3IgbW9kdWxlLCBidXQgYXJlIHBvdGVudGlhbGx5IGFjY2Vzc2libGUgaW4gYSB3YXkgdGhhdCBnb2VzIGJleW9uZCBhIHN0cmljdGx5IHByaXZhdGUgc2NvcGUuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoYXQgYXNzdW1wdGlvbi4KClRoZSBrZXkgZm9jdXMgc2VlbXMgdG8gYmUgb24gdGhlc2UgTVRVLXJlbGF0ZWQgZnVuY3Rpb25zOiBgZmliX25oY191cGRhdGVfbXR1YCwgYGZuaGVfdXBkYXRlX3BtdHVgLCBhbmQgYGZpYl9zeW5jX210dWAuIFRoZXNlIGFyZSB0aGUgY29yZSByb3V0aW5lcyByZXNwb25zaWJsZSBmb3Igc3luY2hyb25pemluZyBNVFUgKE1heGltdW0gVHJhbnNtaXNzaW9uIFVuaXQpIHZhbHVlcyBhY3Jvc3MgdGhlIGZvcndhcmRpbmcgaW5mb3JtYXRpb24gYmFzZSAoRklCKSBhbmQgcmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMuIE1ha2VzIHNlbnNlOyBNVFUgaW5jb25zaXN0ZW5jaWVzIGNhbiBjYXVzZSBzZXJpb3VzIHBhY2tldCBmcmFnbWVudGF0aW9uIGlzc3Vlcy4KCk5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uLCBhbmQgdGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBkaXZlIGEgbGl0dGxlIGRlZXBlcjogSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiBgbmV4dGhvcF9zeW5jX210dWAuIElzIHRoYXQgZnVuY3Rpb24gc3RhdGljPyBJZiBpdCAqaXMqIHN0YXRpYywgdGhlbiBpdHMgdXNlIGlzIHN0cmljdGx5IGxpbWl0ZWQgdG8gdGhlIGZpbGUgaXQmIzM5O3MgZGVmaW5lZCBpbiwgd2hpY2ggc2ltcGxpZmllcyB0aGUgb3ZlcmFsbCBtZW50YWwgbW9kZWwgYSBiaXQuIElmIGl0JiMzOTtzICpub3QqIHN0YXRpYywgdGhlbiBpdCYjMzk7cyBhY2Nlc3NpYmxlIGF0IG1vZHVsZSBzY29wZSBvciBtYXliZSBldmVuIGdsb2JhbGx5LCBhbmQgd2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgZnVuY3Rpb25zLiBJJiMzOTtsbCBjaGVjayB0aGF0IG5leHQuIFRoYXQmIzM5O3Mga2V5IGZvciBkZXBlbmRlbmN5IGFuZCBzY29wZSBtYXBwaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wX3N5bmNfbXR1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYz0zOTA4PXN0YXRpYyBpbnQgcnRtX2dldF9uZXh0aG9wX2J1Y2tldChzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzk1NC1cbm5ldC9pcHY0L25leHRob3AuYzozOTU1OnN0YXRpYyB2b2lkIG5leHRob3Bfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxubmV0L2lwdjQvbmV4dGhvcC5jLTM5NTYte1xuLS1cbm5ldC9pcHY0L25leHRob3AuYz0zOTczPXN0YXRpYyBpbnQgbmhfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzk4OS1cdFx0aW5mb19leHQgPSBwdHI7XG5uZXQvaXB2NC9uZXh0aG9wLmM6Mzk5MDpcdFx0bmV4dGhvcF9zeW5jX210dShkZXYsIGluZm9fZXh0LVx1MDAzZWV4dC5tdHUpO1xubmV0L2lwdjQvbmV4dGhvcC5jLTM5OTEtXHRcdHJ0X2NhY2hlX2ZsdXNoKGRldl9uZXQoZGV2KSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczODgKCQkJCQkJCW91dHB1dDogMTk0CgkJCQkJCQl0aG91Z2h0czogNDA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVB2NCBQTVRVIFVwZGF0ZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBtb2RpZnlpbmcgdGhlIElQdjQgcm91dGluZyBsb2dpYyBmb3IgUGF0aCBNVFUgKFBNVFUpIHVwZGF0ZXMgaW4gZmliIG5leHRob3AgZXhjZXB0aW9ucy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgZnVuY3Rpb25zIGBmbmhlX3VwZGF0ZV9wbXR1YCBhbmQgdGhlIG1vZGlmaWVkIGBmaWJfbmhjX3VwZGF0ZV9tdHVgLiBUaGUgY29kZSBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgTVRVIG9mIGEgbmV0d29yayBkZXZpY2UgY2hhbmdlcywgd2hpY2ggdGhlbiBraWNrcyBvZmYgYGZpYl9zeW5jX210dWAgYW5kIGBuZXh0aG9wX3N5bmNfbXR1YC4gR29vZC4gSXQmIzM5O3MgY29yZSBuZXR3b3JraW5nIHN0dWZmLCBzbyBkZWZpbml0ZWx5IGZ1enppbmcgdGFyZ2V0cy4KCkkgc2VlIHRoYXQgYG5leHRob3Bfc3luY19tdHVgIGlzIHN0YXRpYyBzbyB3ZSBjYW4gb21pdCB0aGlzIGZyb20gYW55IGFuYWx5c2lzLgoKTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBmdW5jdGlvbiB2aXNpYmlsaXR5LiBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUuIE9rYXksIGhlcmUgYXJlIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzOgoqICAgYHZvaWQgZmliX25oY191cGRhdGVfbXR1KHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGMsIHUzMiBuZXcsIHUzMiBvcmlnKWAgLSBOb3Qgc3RhdGljLiBHb29kIHRvIGtub3cuCiogICBgdm9pZCBmbmhlX3VwZGF0ZV9wbXR1KHN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlLCB1MzIgbmV3LCB1MzIgb3JpZylgIC0gTm90IHN0YXRpYy4gQW5kIGBmbmhlX3VwZGF0ZV9wbXR1YCBpcyB3aGF0JiMzOTtzIG5ld2x5IGludHJvZHVjZWQuCiogICBgdm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KWAgLSBOb3Qgc3RhdGljLgoKYElORVRgIGlzIG9idmlvdXNseSByZWxldmFudCAoSVB2NCksIGJ1dCBJJiMzOTttIGdvaW5nIHRvIGxlYXZlIHRoZSBjb25maWcgc2VjdGlvbiBlbXB0eSBzaW5jZSBpdCYjMzk7cyBwcm9iYWJseSBlbmFibGVkIGJ5IGRlZmF1bHQuIE9rYXksIEkgaGF2ZSBldmVyeXRoaW5nIEkgbmVlZCwgYW5kIG5vdyBJJiMzOTtsbCBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zm5oZV91cGRhdGVfcG10dSYjMzQ7LAogICAgJiMzNDtmaWJfbmhjX3VwZGF0ZV9tdHUmIzM0OywKICAgICYjMzQ7ZmliX3N5bmNfbXR1JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJUHY0IHJvdXRpbmcgbG9naWMgdG8gY29ycmVjdGx5IHVwZGF0ZSB0aGUgUGF0aCBNVFUgKFBNVFUpIG9mIGZpYiBuZXh0aG9wIGV4Y2VwdGlvbnMgd2hlbiB0aGUgTVRVIG9mIHRoZSBmaXJzdCBob3AgY2hhbmdlcy4gSXQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgZm5oZV91cGRhdGVfcG10dWAgYW5kIG1vZGlmaWVzIGBmaWJfbmhjX3VwZGF0ZV9tdHVgIHRvIHVzZSBSQ1UgYW5kIGEgc3BpbmxvY2suIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgY2hhbmdpbmcgdGhlIE1UVSBvZiBhIG5ldHdvcmsgZGV2aWNlIChlLmcuLCB2aWEgbmV0bGluayBvciBpb2N0bCkgd2hpY2ggdHJpZ2dlcnMgYGZpYl9zeW5jX210dWAgYW5kIGBuZXh0aG9wX3N5bmNfbXR1YC4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbmhlX3VwZGF0ZV9wbXR1JiMzNDssCiAgICAmIzM0O2ZpYl9uaGNfdXBkYXRlX210dSYjMzQ7LAogICAgJiMzNDtmaWJfc3luY19tdHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQdjQgcm91dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgdXBkYXRlIHRoZSBQYXRoIE1UVSAoUE1UVSkgb2YgZmliIG5leHRob3AgZXhjZXB0aW9ucyB3aGVuIHRoZSBNVFUgb2YgdGhlIGZpcnN0IGhvcCBjaGFuZ2VzLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBmbmhlX3VwZGF0ZV9wbXR1YCBhbmQgbW9kaWZpZXMgYGZpYl9uaGNfdXBkYXRlX210dWAgdG8gdXNlIFJDVSBhbmQgYSBzcGlubG9jay4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBjaGFuZ2luZyB0aGUgTVRVIG9mIGEgbmV0d29yayBkZXZpY2UgKGUuZy4sIHZpYSBuZXRsaW5rIG9yIGlvY3RsKSB3aGljaCB0cmlnZ2VycyBgZmliX3N5bmNfbXR1YCBhbmQgYG5leHRob3Bfc3luY19tdHVgLiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSAobWlzc2luZyBSQ1UgcmVhZCBsb2NrIGFuZCBzcGlubG9jayBwcm90ZWN0aW9uKSB3aGVuIHVwZGF0aW5nIFBNVFUgaW4gZmliX25oX2V4Y2VwdGlvbiBlbnRyaWVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOLCBLQ1NBTiwgb3IgTE9DS0RFUCBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDIyNzMzNjQzMTkzYTRlYWY1MGZkYzZlZmMyMGIyMDIzZTYzOTdkODAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyA3IDIwOjU2OjAyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcm91dGUuaCBiL2luY2x1ZGUvbmV0L3JvdXRlLmgKaW5kZXggZjkwMTA2ZjM4M2M1Ni4uNDUyOTAxNzdhMzNjNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvcm91dGUuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9yb3V0ZS5oCkBAIC0yNzYsNiAmIzQzOzI3Niw4IEBAIGludCBmaWJfZHVtcF9pbmZvX2ZuaGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLAogCQkgICAgICAgdTMyIHRhYmxlX2lkLCBzdHJ1Y3QgZmliX2luZm8gKmZpLAogCQkgICAgICAgaW50ICpmYV9pbmRleCwgaW50IGZhX3N0YXJ0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwogCiYjNDM7dm9pZCBmbmhlX3VwZGF0ZV9wbXR1KHN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlLCB1MzIgbmV3LCB1MzIgb3JpZyk7CiYjNDM7CiBzdGF0aWMgaW5saW5lIHZvaWQgaXBfcnRfcHV0KHN0cnVjdCBydGFibGUgKnJ0KQogewogCS8qIGRzdF9yZWxlYXNlKCkgYWNjZXB0cyBhIE5VTEwgcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX3NlbWFudGljcy5jIGIvbmV0L2lwdjQvZmliX3NlbWFudGljcy5jCmluZGV4IDc4Zjg0YWUzZWUxMjAuLjA0ODM1MTliN2ZiMGQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMKQEAgLTE4OTUsNDIgJiM0MzsxODk1LDMwIEBAIHN0YXRpYyBpbnQgY2FsbF9maWJfbmhfbm90aWZpZXJzKHN0cnVjdCBmaWJfbmggKm5oLAogCXJldHVybiBOT1RJRllfRE9ORTsKIH0KIAotLyogVXBkYXRlIHRoZSBQTVRVIG9mIGV4Y2VwdGlvbnMgd2hlbjoKLSAqIC0gdGhlIG5ldyBNVFUgb2YgdGhlIGZpcnN0IGhvcCBiZWNvbWVzIHNtYWxsZXIgdGhhbiB0aGUgUE1UVQotICogLSB0aGUgb2xkIE1UVSB3YXMgdGhlIHNhbWUgYXMgdGhlIFBNVFUsIGFuZCBpdCBsaW1pdGVkIGRpc2NvdmVyeSBvZgotICogICBsYXJnZXIgTVRVcyBvbiB0aGUgcGF0aC4gV2l0aCB0aGF0IGxpbWl0IHJhaXNlZCwgd2UgY2FuIG5vdwotICogICBkaXNjb3ZlciBsYXJnZXIgTVRVcwotICogQSBzcGVjaWFsIGNhc2UgaXMgbG9ja2VkIGV4Y2VwdGlvbnMsIGZvciB3aGljaCB0aGUgUE1UVSBpcyBzbWFsbGVyCi0gKiB0aGFuIHRoZSBtaW5pbWFsIGFjY2VwdGVkIFBNVFU6Ci0gKiAtIGlmIHRoZSBuZXcgTVRVIGlzIGdyZWF0ZXIgdGhhbiB0aGUgUE1UVSwgZG9uJiMzOTt0IG1ha2UgYW55IGNoYW5nZQotICogLSBvdGhlcndpc2UsIHVubG9jayBhbmQgc2V0IFBNVFUKJiM0MzsvKiBXYWxrIHRoZSBleGNlcHRpb25zIG9mIGEgbmV4dGhvcCBhZnRlciBpdHMgZmlyc3QgaG9wIE1UVSBjaGFuZ2VkLiBUaGUKJiM0MzsgKiBjaGFpbiBpcyBSQ1UgcHJvdGVjdGVkIGhlcmUsIHdoaWxlIGZuaGVfdXBkYXRlX3BtdHUoKSB0YWtlcyBmbmhlX2xvY2sKJiM0MzsgKiBmb3IgdGhlIHVwZGF0ZSBvZiBlYWNoIGVudHJ5LgogICovCiB2b2lkIGZpYl9uaGNfdXBkYXRlX210dShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCB1MzIgbmV3LCB1MzIgb3JpZykKIHsKIAlzdHJ1Y3QgZm5oZV9oYXNoX2J1Y2tldCAqYnVja2V0OwogCWludCBpOwogCi0JYnVja2V0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChuaGMtJmd0O25oY19leGNlcHRpb25zLCAxKTsKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwomIzQzOwlidWNrZXQgPSByY3VfZGVyZWZlcmVuY2UobmhjLSZndDtuaGNfZXhjZXB0aW9ucyk7CiAJaWYgKCFidWNrZXQpCi0JCXJldHVybjsKJiM0MzsJCWdvdG8gb3V0OwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEZOSEVfSEFTSF9TSVpFOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZTsKIAotCQlmb3IgKGZuaGUgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGJ1Y2tldFtpXS5jaGFpbiwgMSk7CiYjNDM7CQlmb3IgKGZuaGUgPSByY3VfZGVyZWZlcmVuY2UoYnVja2V0W2ldLmNoYWluKTsKIAkJICAgICBmbmhlOwotCQkgICAgIGZuaGUgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGZuaGUtJmd0O2ZuaGVfbmV4dCwgMSkpIHsKLQkJCWlmIChmbmhlLSZndDtmbmhlX210dV9sb2NrZWQpIHsKLQkJCQlpZiAobmV3ICZsdDs9IGZuaGUtJmd0O2ZuaGVfcG10dSkgewotCQkJCQlmbmhlLSZndDtmbmhlX3BtdHUgPSBuZXc7Ci0JCQkJCWZuaGUtJmd0O2ZuaGVfbXR1X2xvY2tlZCA9IGZhbHNlOwotCQkJCX0KLQkJCX0gZWxzZSBpZiAobmV3ICZsdDsgZm5oZS0mZ3Q7Zm5oZV9wbXR1IHx8Ci0JCQkJICAgb3JpZyA9PSBmbmhlLSZndDtmbmhlX3BtdHUpIHsKLQkJCQlmbmhlLSZndDtmbmhlX3BtdHUgPSBuZXc7Ci0JCQl9Ci0JCX0KJiM0MzsJCSAgICAgZm5oZSA9IHJjdV9kZXJlZmVyZW5jZShmbmhlLSZndDtmbmhlX25leHQpKQomIzQzOwkJCWZuaGVfdXBkYXRlX3BtdHUoZm5oZSwgbmV3LCBvcmlnKTsKIAl9CiYjNDM7b3V0OgomIzQzOwlyY3VfcmVhZF91bmxvY2soKTsKIH0KIAogdm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcm91dGUuYyBiL25ldC9pcHY0L3JvdXRlLmMKaW5kZXggMTUyZDhjYjI4ZjY1YS4uYjgyNDAxYTZiYWVkNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvcm91dGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9yb3V0ZS5jCkBAIC03NDEsNiAmIzQzOzc0MSwzNSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfb3JfY3JlYXRlX2ZuaGUoc3RydWN0IGZpYl9uaF9jb21tb24gKm5oYywgX19iZTMyIGRhZGRyLAogCXNwaW5fdW5sb2NrX2JoKCZhbXA7Zm5oZV9sb2NrKTsKIH0KIAomIzQzOy8qIFVwZGF0ZSB0aGUgUE1UVSBvZiBhbiBleGNlcHRpb24gd2hlbjoKJiM0MzsgKiAtIHRoZSBuZXcgTVRVIG9mIHRoZSBmaXJzdCBob3AgYmVjb21lcyBzbWFsbGVyIHRoYW4gdGhlIFBNVFUKJiM0MzsgKiAtIHRoZSBvbGQgTVRVIHdhcyB0aGUgc2FtZSBhcyB0aGUgUE1UVSwgYW5kIGl0IGxpbWl0ZWQgZGlzY292ZXJ5IG9mCiYjNDM7ICogICBsYXJnZXIgTVRVcyBvbiB0aGUgcGF0aC4gV2l0aCB0aGF0IGxpbWl0IHJhaXNlZCwgd2UgY2FuIG5vdwomIzQzOyAqICAgZGlzY292ZXIgbGFyZ2VyIE1UVXMKJiM0MzsgKiBBIHNwZWNpYWwgY2FzZSBpcyBsb2NrZWQgZXhjZXB0aW9ucywgZm9yIHdoaWNoIHRoZSBQTVRVIGlzIHNtYWxsZXIKJiM0MzsgKiB0aGFuIHRoZSBtaW5pbWFsIGFjY2VwdGVkIFBNVFU6CiYjNDM7ICogLSBpZiB0aGUgbmV3IE1UVSBpcyBncmVhdGVyIHRoYW4gdGhlIFBNVFUsIGRvbiYjMzk7dCBtYWtlIGFueSBjaGFuZ2UKJiM0MzsgKiAtIG90aGVyd2lzZSwgdW5sb2NrIGFuZCBzZXQgUE1UVQomIzQzOyAqCiYjNDM7ICogZm5oZV9sb2NrIGtlZXBzIGZuaGVfcG10dSBhbmQgZm5oZV9tdHVfbG9ja2VkIGNvbnNpc3RlbnQgYWdhaW5zdAomIzQzOyAqIHVwZGF0ZV9vcl9jcmVhdGVfZm5oZSgpLCB3aGljaCBzZXRzIGJvdGggdW5kZXIgdGhlIHNhbWUgbG9jay4KJiM0MzsgKi8KJiM0Mzt2b2lkIGZuaGVfdXBkYXRlX3BtdHUoc3RydWN0IGZpYl9uaF9leGNlcHRpb24gKmZuaGUsIHUzMiBuZXcsIHUzMiBvcmlnKQomIzQzO3sKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7Zm5oZV9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKGZuaGUtJmd0O2ZuaGVfbXR1X2xvY2tlZCkgewomIzQzOwkJaWYgKG5ldyAmbHQ7PSBmbmhlLSZndDtmbmhlX3BtdHUpIHsKJiM0MzsJCQlmbmhlLSZndDtmbmhlX3BtdHUgPSBuZXc7CiYjNDM7CQkJZm5oZS0mZ3Q7Zm5oZV9tdHVfbG9ja2VkID0gZmFsc2U7CiYjNDM7CQl9CiYjNDM7CX0gZWxzZSBpZiAobmV3ICZsdDsgZm5oZS0mZ3Q7Zm5oZV9wbXR1IHx8IG9yaWcgPT0gZm5oZS0mZ3Q7Zm5oZV9wbXR1KSB7CiYjNDM7CQlmbmhlLSZndDtmbmhlX3BtdHUgPSBuZXc7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtmbmhlX2xvY2spOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIF9faXBfZG9fcmVkaXJlY3Qoc3RydWN0IHJ0YWJsZSAqcnQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBmbG93aTQgKmZsNCwKIAkJCSAgICAgYm9vbCBraWxsX3JvdXRlKQogewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0OAoJCQkJCQkJb3V0cHV0OiAxMDEKCQkJCQkJCXRob3VnaHRzOiA0NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogQSBTb2xpZCBDb25jdXJyZW5jeSBCdWcgRml4KioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgaXQmIzM5O3MgYSBjcml0aWNhbCBmaXgsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYSBjb25jdXJyZW5jeSBidWcgd2l0aGluIHRoZSBgZmliX25oX2V4Y2VwdGlvbmAgaGFuZGxpbmcuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGhvdyBNVFUgdXBkYXRlcyBhcmUgbWFuYWdlZCBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhlc2UgZXhjZXB0aW9ucywgYSBjb21tb24gYXJlYSBmb3Igc3VidGxlIHJhY2UgY29uZGl0aW9ucyBpbiBhIG5ldHdvcmsgc3RhY2suCgpQcmV2aW91c2x5LCB0aGUgYGZpYl9uaGNfdXBkYXRlX210dWAgZnVuY3Rpb24gaW4gYG5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY2AgaGFkIGEgZmxhdy4gSXQgd2FzIGl0ZXJhdGluZyB0aHJvdWdoIGV4Y2VwdGlvbiBlbnRyaWVzIHVzaW5nIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYCB3aXRob3V0IGhvbGRpbmcgYSBwcm9wZXIgUkNVIHJlYWQgbG9jayBvciB0aGUgYXBwcm9wcmlhdGUgc3BpbmxvY2sgKGBmbmhlX2xvY2tgKS4gVGhpcyBpcyB3aGVyZSB0aGUgcmFjZSBjb25kaXRpb24gbGlrZWx5IGV4aXN0ZWQsIGEgdGV4dGJvb2sgZXhhbXBsZSBvZiBkYXRhIHJhY2UgdnVsbmVyYWJpbGl0eSwgZXNwZWNpYWxseSBpbiBhIGhlYXZpbHkgdGhyZWFkZWQga2VybmVsIGVudmlyb25tZW50LgoKVGhlIHBhdGNoJiMzOTtzIHNvbHV0aW9uIGlzIHF1aXRlIGVsZWdhbnQgYW5kIGFkZHJlc3NlcyB0aGUgcHJvYmxlbSBoZWFkLW9uLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uLCBgZm5oZV91cGRhdGVfcG10dWAgaW4gYG5ldC9pcHY0L3JvdXRlLmNgLCB0byBlbmNhcHN1bGF0ZSB0aGUgUE1UVSB1cGRhdGUgbG9naWMuIENyaXRpY2FsbHksIHRoaXMgbmV3IGZ1bmN0aW9uIG5vdyAqcHJvcGVybHkqIGFjcXVpcmVzIGBzcGluX2xvY2tfYmgoJmFtcDtmbmhlX2xvY2spYCBiZWZvcmUgbW9kaWZ5aW5nIGBmbmhlX3BtdHVgIGFuZCBgZm5oZV9tdHVfbG9ja2VkYCwgZW5zdXJpbmcgYXRvbWljIHVwZGF0ZXMgYW5kIHByZXZlbnRpbmcgdGhlIHJhY2UuICBNb3Jlb3ZlciwgYGZpYl9uaGNfdXBkYXRlX210dWAgaGFzIGJlZW4gdXBkYXRlZCB0byBjb3JyZWN0bHkgdGFrZSBgcmN1X3JlYWRfbG9jaygpYCBhbmQgdXNlIGByY3VfZGVyZWZlcmVuY2UoKWAgd2hlbiBhY2Nlc3NpbmcgdGhlIGV4Y2VwdGlvbiBlbnRyaWVzLiBUaGlzIGlzIHRoZSBjb3JyZWN0LCBzYWZlIHdheSB0byBoYW5kbGUgdGhlc2UgUkNVIHByb3RlY3RlZCBkYXRhIHN0cnVjdHVyZXMuCgpJJiMzOTt2ZSB0YWtlbiBhIHF1aWNrIGxvb2sgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgYWNjaWRlbnRhbGx5IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBpbml0aWFsaXphdGlvbiBpc3N1ZXMsIG9yIGxlYWsgYW55dGhpbmcgdG8gdXNlciBzcGFjZS4gSXQgZG9lc24mIzM5O3QuIE15IGFuYWx5c2lzIGNvbmZpcm1zIHRoYXQgdGhpcyBwYXRjaCBpcyBlbnRpcmVseSBmb2N1c2VkIG9uIGxvY2tpbmcgYW5kIFJDVSBjb3JyZWN0bmVzcy4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCAqZG9lc24mIzM5O3QqIHJlcXVpcmUgS01TQU4uIFRoZSBidWcgaXQgZml4ZXMgaXMgYSBjb25jdXJyZW5jeSBidWcsIHNwZWNpZmljYWxseSBhIGRhdGEgcmFjZSwgd2hpY2ggd291bGQgYmUgZGV0ZWN0ZWQgYnkgS0NTQU4gb3IgTE9DS0RFUC4gU3RhbmRhcmQgS0FTQU4gc2hvdWxkIGJlIHN1ZmZpY2llbnQsIGFzc3VtaW5nIGFsbCBjb2RlIHBhdGhzIGFyZSBjb3ZlcmVkLiAgTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9uLCBubyB1c2VyLXNwYWNlIGluZm9ybWF0aW9uIGxlYWtzLCBqdXN0IGdvb2Qgb2xkLWZhc2hpb25lZCBjb25jdXJyZW5jeSBidWcgZml4aW5nLiAgTG9va3MgbGlrZSBhIHNvbGlkLCBjbGVhbiwgYW5kIGltcG9ydGFudCBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIGNvbmN1cnJlbmN5IGlzc3VlIChtaXNzaW5nIFJDVSByZWFkIGxvY2sgYW5kIHNwaW5sb2NrIHByb3RlY3Rpb24pIHdoZW4gdXBkYXRpbmcgUE1UVSBpbiBmaWJfbmhfZXhjZXB0aW9uIGVudHJpZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4sIEtDU0FOLCBvciBMT0NLREVQIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIGNvbmN1cnJlbmN5IGlzc3VlIChtaXNzaW5nIFJDVSByZWFkIGxvY2sgYW5kIHNwaW5sb2NrIHByb3RlY3Rpb24pIHdoZW4gdXBkYXRpbmcgUE1UVSBpbiBmaWJfbmhfZXhjZXB0aW9uIGVudHJpZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4sIEtDU0FOLCBvciBMT0NLREVQIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6MDMuNDc3NDcxNzU1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgwMjcyNTI3MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZuaGVfdXBkYXRlX3BtdHVcIixcbiAgICBcImZpYl9uaGNfdXBkYXRlX210dVwiLFxuICAgIFwiZmliX3N5bmNfbXR1XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSAobWlzc2luZyBSQ1UgcmVhZCBsb2NrIGFuZCBzcGlubG9jayBwcm90ZWN0aW9uKSB3aGVuIHVwZGF0aW5nIFBNVFUgaW4gZmliX25oX2V4Y2VwdGlvbiBlbnRyaWVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOLCBLQ1NBTiwgb3IgTE9DS0RFUCBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQdjQgcm91dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgdXBkYXRlIHRoZSBQYXRoIE1UVSAoUE1UVSkgb2YgZmliIG5leHRob3AgZXhjZXB0aW9ucyB3aGVuIHRoZSBNVFUgb2YgdGhlIGZpcnN0IGhvcCBjaGFuZ2VzLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBmbmhlX3VwZGF0ZV9wbXR1YCBhbmQgbW9kaWZpZXMgYGZpYl9uaGNfdXBkYXRlX210dWAgdG8gdXNlIFJDVSBhbmQgYSBzcGlubG9jay4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBjaGFuZ2luZyB0aGUgTVRVIG9mIGEgbmV0d29yayBkZXZpY2UgKGUuZy4sIHZpYSBuZXRsaW5rIG9yIGlvY3RsKSB3aGljaCB0cmlnZ2VycyBgZmliX3N5bmNfbXR1YCBhbmQgYG5leHRob3Bfc3luY19tdHVgLiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6MDMuNDc3NDc5NDE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTMwODA4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyMjczMzY0MzE5M2E0ZWFmNTBmZGM2ZWZjMjBiMjAyM2U2Mzk3ZDgwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMjA6NTY6MDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcm91dGUuaCBiL2luY2x1ZGUvbmV0L3JvdXRlLmhcXG5pbmRleCBmOTAxMDZmMzgzYzU2Li40NTI5MDE3N2EzM2M0IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3JvdXRlLmhcXG4rKysgYi9pbmNsdWRlL25ldC9yb3V0ZS5oXFxuQEAgLTI3Niw2ICsyNzYsOCBAQCBpbnQgZmliX2R1bXBfaW5mb19mbmhlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYixcXG4gXFx0XFx0ICAgICAgIHUzMiB0YWJsZV9pZCwgc3RydWN0IGZpYl9pbmZvICpmaSxcXG4gXFx0XFx0ICAgICAgIGludCAqZmFfaW5kZXgsIGludCBmYV9zdGFydCwgdW5zaWduZWQgaW50IGZsYWdzKTtcXG4gXFxuK3ZvaWQgZm5oZV91cGRhdGVfcG10dShzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZSwgdTMyIG5ldywgdTMyIG9yaWcpO1xcbitcXG4gc3RhdGljIGlubGluZSB2b2lkIGlwX3J0X3B1dChzdHJ1Y3QgcnRhYmxlICpydClcXG4ge1xcbiBcXHQvKiBkc3RfcmVsZWFzZSgpIGFjY2VwdHMgYSBOVUxMIHBhcmFtZXRlci5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX3NlbWFudGljcy5jIGIvbmV0L2lwdjQvZmliX3NlbWFudGljcy5jXFxuaW5kZXggNzhmODRhZTNlZTEyMC4uMDQ4MzUxOWI3ZmIwZCAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcXG4rKysgYi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcXG5AQCAtMTg5NSw0MiArMTg5NSwzMCBAQCBzdGF0aWMgaW50IGNhbGxfZmliX25oX25vdGlmaWVycyhzdHJ1Y3QgZmliX25oICpuaCxcXG4gXFx0cmV0dXJuIE5PVElGWV9ET05FO1xcbiB9XFxuIFxcbi0vKiBVcGRhdGUgdGhlIFBNVFUgb2YgZXhjZXB0aW9ucyB3aGVuOlxcbi0gKiAtIHRoZSBuZXcgTVRVIG9mIHRoZSBmaXJzdCBob3AgYmVjb21lcyBzbWFsbGVyIHRoYW4gdGhlIFBNVFVcXG4tICogLSB0aGUgb2xkIE1UVSB3YXMgdGhlIHNhbWUgYXMgdGhlIFBNVFUsIGFuZCBpdCBsaW1pdGVkIGRpc2NvdmVyeSBvZlxcbi0gKiAgIGxhcmdlciBNVFVzIG9uIHRoZSBwYXRoLiBXaXRoIHRoYXQgbGltaXQgcmFpc2VkLCB3ZSBjYW4gbm93XFxuLSAqICAgZGlzY292ZXIgbGFyZ2VyIE1UVXNcXG4tICogQSBzcGVjaWFsIGNhc2UgaXMgbG9ja2VkIGV4Y2VwdGlvbnMsIGZvciB3aGljaCB0aGUgUE1UVSBpcyBzbWFsbGVyXFxuLSAqIHRoYW4gdGhlIG1pbmltYWwgYWNjZXB0ZWQgUE1UVTpcXG4tICogLSBpZiB0aGUgbmV3IE1UVSBpcyBncmVhdGVyIHRoYW4gdGhlIFBNVFUsIGRvbid0IG1ha2UgYW55IGNoYW5nZVxcbi0gKiAtIG90aGVyd2lzZSwgdW5sb2NrIGFuZCBzZXQgUE1UVVxcbisvKiBXYWxrIHRoZSBleGNlcHRpb25zIG9mIGEgbmV4dGhvcCBhZnRlciBpdHMgZmlyc3QgaG9wIE1UVSBjaGFuZ2VkLiBUaGVcXG4rICogY2hhaW4gaXMgUkNVIHByb3RlY3RlZCBoZXJlLCB3aGlsZSBmbmhlX3VwZGF0ZV9wbXR1KCkgdGFrZXMgZm5oZV9sb2NrXFxuKyAqIGZvciB0aGUgdXBkYXRlIG9mIGVhY2ggZW50cnkuXFxuICAqL1xcbiB2b2lkIGZpYl9uaGNfdXBkYXRlX210dShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCB1MzIgbmV3LCB1MzIgb3JpZylcXG4ge1xcbiBcXHRzdHJ1Y3QgZm5oZV9oYXNoX2J1Y2tldCAqYnVja2V0O1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGJ1Y2tldCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobmhjLVxcdTAwM2VuaGNfZXhjZXB0aW9ucywgMSk7XFxuK1xcdHJjdV9yZWFkX2xvY2soKTtcXG4rXFx0YnVja2V0ID0gcmN1X2RlcmVmZXJlbmNlKG5oYy1cXHUwMDNlbmhjX2V4Y2VwdGlvbnMpO1xcbiBcXHRpZiAoIWJ1Y2tldClcXG4tXFx0XFx0cmV0dXJuO1xcbitcXHRcXHRnb3RvIG91dDtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBGTkhFX0hBU0hfU0laRTsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlO1xcbiBcXG4tXFx0XFx0Zm9yIChmbmhlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChidWNrZXRbaV0uY2hhaW4sIDEpO1xcbitcXHRcXHRmb3IgKGZuaGUgPSByY3VfZGVyZWZlcmVuY2UoYnVja2V0W2ldLmNoYWluKTtcXG4gXFx0XFx0ICAgICBmbmhlO1xcbi1cXHRcXHQgICAgIGZuaGUgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGZuaGUtXFx1MDAzZWZuaGVfbmV4dCwgMSkpIHtcXG4tXFx0XFx0XFx0aWYgKGZuaGUtXFx1MDAzZWZuaGVfbXR1X2xvY2tlZCkge1xcbi1cXHRcXHRcXHRcXHRpZiAobmV3IFxcdTAwM2M9IGZuaGUtXFx1MDAzZWZuaGVfcG10dSkge1xcbi1cXHRcXHRcXHRcXHRcXHRmbmhlLVxcdTAwM2VmbmhlX3BtdHUgPSBuZXc7XFxuLVxcdFxcdFxcdFxcdFxcdGZuaGUtXFx1MDAzZWZuaGVfbXR1X2xvY2tlZCA9IGZhbHNlO1xcbi1cXHRcXHRcXHRcXHR9XFxuLVxcdFxcdFxcdH0gZWxzZSBpZiAobmV3IFxcdTAwM2MgZm5oZS1cXHUwMDNlZm5oZV9wbXR1IHx8XFxuLVxcdFxcdFxcdFxcdCAgIG9yaWcgPT0gZm5oZS1cXHUwMDNlZm5oZV9wbXR1KSB7XFxuLVxcdFxcdFxcdFxcdGZuaGUtXFx1MDAzZWZuaGVfcG10dSA9IG5ldztcXG4tXFx0XFx0XFx0fVxcbi1cXHRcXHR9XFxuK1xcdFxcdCAgICAgZm5oZSA9IHJjdV9kZXJlZmVyZW5jZShmbmhlLVxcdTAwM2VmbmhlX25leHQpKVxcbitcXHRcXHRcXHRmbmhlX3VwZGF0ZV9wbXR1KGZuaGUsIG5ldywgb3JpZyk7XFxuIFxcdH1cXG4rb3V0OlxcbitcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gfVxcbiBcXG4gdm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9yb3V0ZS5jIGIvbmV0L2lwdjQvcm91dGUuY1xcbmluZGV4IDE1MmQ4Y2IyOGY2NWEuLmI4MjQwMWE2YmFlZDcgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvcm91dGUuY1xcbisrKyBiL25ldC9pcHY0L3JvdXRlLmNcXG5AQCAtNzQxLDYgKzc0MSwzNSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfb3JfY3JlYXRlX2ZuaGUoc3RydWN0IGZpYl9uaF9jb21tb24gKm5oYywgX19iZTMyIGRhZGRyLFxcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Zm5oZV9sb2NrKTtcXG4gfVxcbiBcXG4rLyogVXBkYXRlIHRoZSBQTVRVIG9mIGFuIGV4Y2VwdGlvbiB3aGVuOlxcbisgKiAtIHRoZSBuZXcgTVRVIG9mIHRoZSBmaXJzdCBob3AgYmVjb21lcyBzbWFsbGVyIHRoYW4gdGhlIFBNVFVcXG4rICogLSB0aGUgb2xkIE1UVSB3YXMgdGhlIHNhbWUgYXMgdGhlIFBNVFUsIGFuZCBpdCBsaW1pdGVkIGRpc2NvdmVyeSBvZlxcbisgKiAgIGxhcmdlciBNVFVzIG9uIHRoZSBwYXRoLiBXaXRoIHRoYXQgbGltaXQgcmFpc2VkLCB3ZSBjYW4gbm93XFxuKyAqICAgZGlzY292ZXIgbGFyZ2VyIE1UVXNcXG4rICogQSBzcGVjaWFsIGNhc2UgaXMgbG9ja2VkIGV4Y2VwdGlvbnMsIGZvciB3aGljaCB0aGUgUE1UVSBpcyBzbWFsbGVyXFxuKyAqIHRoYW4gdGhlIG1pbmltYWwgYWNjZXB0ZWQgUE1UVTpcXG4rICogLSBpZiB0aGUgbmV3IE1UVSBpcyBncmVhdGVyIHRoYW4gdGhlIFBNVFUsIGRvbid0IG1ha2UgYW55IGNoYW5nZVxcbisgKiAtIG90aGVyd2lzZSwgdW5sb2NrIGFuZCBzZXQgUE1UVVxcbisgKlxcbisgKiBmbmhlX2xvY2sga2VlcHMgZm5oZV9wbXR1IGFuZCBmbmhlX210dV9sb2NrZWQgY29uc2lzdGVudCBhZ2FpbnN0XFxuKyAqIHVwZGF0ZV9vcl9jcmVhdGVfZm5oZSgpLCB3aGljaCBzZXRzIGJvdGggdW5kZXIgdGhlIHNhbWUgbG9jay5cXG4rICovXFxuK3ZvaWQgZm5oZV91cGRhdGVfcG10dShzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZSwgdTMyIG5ldywgdTMyIG9yaWcpXFxuK3tcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZmbmhlX2xvY2spO1xcbitcXG4rXFx0aWYgKGZuaGUtXFx1MDAzZWZuaGVfbXR1X2xvY2tlZCkge1xcbitcXHRcXHRpZiAobmV3IFxcdTAwM2M9IGZuaGUtXFx1MDAzZWZuaGVfcG10dSkge1xcbitcXHRcXHRcXHRmbmhlLVxcdTAwM2VmbmhlX3BtdHUgPSBuZXc7XFxuK1xcdFxcdFxcdGZuaGUtXFx1MDAzZWZuaGVfbXR1X2xvY2tlZCA9IGZhbHNlO1xcbitcXHRcXHR9XFxuK1xcdH0gZWxzZSBpZiAobmV3IFxcdTAwM2MgZm5oZS1cXHUwMDNlZm5oZV9wbXR1IHx8IG9yaWcgPT0gZm5oZS1cXHUwMDNlZm5oZV9wbXR1KSB7XFxuK1xcdFxcdGZuaGUtXFx1MDAzZWZuaGVfcG10dSA9IG5ldztcXG4rXFx0fVxcbitcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmZuaGVfbG9jayk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIF9faXBfZG9fcmVkaXJlY3Qoc3RydWN0IHJ0YWJsZSAqcnQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBmbG93aTQgKmZsNCxcXG4gXFx0XFx0XFx0ICAgICBib29sIGtpbGxfcm91dGUpXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6MDQuMDMxMTgzNjE3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTkwMTAwNjc4NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZuaGVfdXBkYXRlX3BtdHVcIixcbiAgICBcImZpYl9uaGNfdXBkYXRlX210dVwiLFxuICAgIFwiZmliX3N5bmNfbXR1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQdjQgcm91dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgdXBkYXRlIHRoZSBQYXRoIE1UVSAoUE1UVSkgb2YgZmliIG5leHRob3AgZXhjZXB0aW9ucyB3aGVuIHRoZSBNVFUgb2YgdGhlIGZpcnN0IGhvcCBjaGFuZ2VzLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBmbmhlX3VwZGF0ZV9wbXR1YCBhbmQgbW9kaWZpZXMgYGZpYl9uaGNfdXBkYXRlX210dWAgdG8gdXNlIFJDVSBhbmQgYSBzcGlubG9jay4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBjaGFuZ2luZyB0aGUgTVRVIG9mIGEgbmV0d29yayBkZXZpY2UgKGUuZy4sIHZpYSBuZXRsaW5rIG9yIGlvY3RsKSB3aGljaCB0cmlnZ2VycyBgZmliX3N5bmNfbXR1YCBhbmQgYG5leHRob3Bfc3luY19tdHVgLiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjI3MzM2NDMxOTNhNGVhZjUwZmRjNmVmYzIwYjIwMjNlNjM5N2Q4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMjA6NTY6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9yb3V0ZS5oIGIvaW5jbHVkZS9uZXQvcm91dGUuaFxuaW5kZXggZjkwMTA2ZjM4M2M1Ni4uNDUyOTAxNzdhMzNjNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3JvdXRlLmhcbisrKyBiL2luY2x1ZGUvbmV0L3JvdXRlLmhcbkBAIC0yNzYsNiArMjc2LDggQEAgaW50IGZpYl9kdW1wX2luZm9fZm5oZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsXG4gXHRcdCAgICAgICB1MzIgdGFibGVfaWQsIHN0cnVjdCBmaWJfaW5mbyAqZmksXG4gXHRcdCAgICAgICBpbnQgKmZhX2luZGV4LCBpbnQgZmFfc3RhcnQsIHVuc2lnbmVkIGludCBmbGFncyk7XG4gXG4rdm9pZCBmbmhlX3VwZGF0ZV9wbXR1KHN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlLCB1MzIgbmV3LCB1MzIgb3JpZyk7XG4rXG4gc3RhdGljIGlubGluZSB2b2lkIGlwX3J0X3B1dChzdHJ1Y3QgcnRhYmxlICpydClcbiB7XG4gXHQvKiBkc3RfcmVsZWFzZSgpIGFjY2VwdHMgYSBOVUxMIHBhcmFtZXRlci5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMgYi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcbmluZGV4IDc4Zjg0YWUzZWUxMjAuLjA0ODM1MTliN2ZiMGQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcbisrKyBiL25ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY1xuQEAgLTE4OTUsNDIgKzE4OTUsMzAgQEAgc3RhdGljIGludCBjYWxsX2ZpYl9uaF9ub3RpZmllcnMoc3RydWN0IGZpYl9uaCAqbmgsXG4gXHRyZXR1cm4gTk9USUZZX0RPTkU7XG4gfVxuIFxuLS8qIFVwZGF0ZSB0aGUgUE1UVSBvZiBleGNlcHRpb25zIHdoZW46XG4tICogLSB0aGUgbmV3IE1UVSBvZiB0aGUgZmlyc3QgaG9wIGJlY29tZXMgc21hbGxlciB0aGFuIHRoZSBQTVRVXG4tICogLSB0aGUgb2xkIE1UVSB3YXMgdGhlIHNhbWUgYXMgdGhlIFBNVFUsIGFuZCBpdCBsaW1pdGVkIGRpc2NvdmVyeSBvZlxuLSAqICAgbGFyZ2VyIE1UVXMgb24gdGhlIHBhdGguIFdpdGggdGhhdCBsaW1pdCByYWlzZWQsIHdlIGNhbiBub3dcbi0gKiAgIGRpc2NvdmVyIGxhcmdlciBNVFVzXG4tICogQSBzcGVjaWFsIGNhc2UgaXMgbG9ja2VkIGV4Y2VwdGlvbnMsIGZvciB3aGljaCB0aGUgUE1UVSBpcyBzbWFsbGVyXG4tICogdGhhbiB0aGUgbWluaW1hbCBhY2NlcHRlZCBQTVRVOlxuLSAqIC0gaWYgdGhlIG5ldyBNVFUgaXMgZ3JlYXRlciB0aGFuIHRoZSBQTVRVLCBkb24ndCBtYWtlIGFueSBjaGFuZ2Vcbi0gKiAtIG90aGVyd2lzZSwgdW5sb2NrIGFuZCBzZXQgUE1UVVxuKy8qIFdhbGsgdGhlIGV4Y2VwdGlvbnMgb2YgYSBuZXh0aG9wIGFmdGVyIGl0cyBmaXJzdCBob3AgTVRVIGNoYW5nZWQuIFRoZVxuKyAqIGNoYWluIGlzIFJDVSBwcm90ZWN0ZWQgaGVyZSwgd2hpbGUgZm5oZV91cGRhdGVfcG10dSgpIHRha2VzIGZuaGVfbG9ja1xuKyAqIGZvciB0aGUgdXBkYXRlIG9mIGVhY2ggZW50cnkuXG4gICovXG4gdm9pZCBmaWJfbmhjX3VwZGF0ZV9tdHUoc3RydWN0IGZpYl9uaF9jb21tb24gKm5oYywgdTMyIG5ldywgdTMyIG9yaWcpXG4ge1xuIFx0c3RydWN0IGZuaGVfaGFzaF9idWNrZXQgKmJ1Y2tldDtcbiBcdGludCBpO1xuIFxuLVx0YnVja2V0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChuaGMtXHUwMDNlbmhjX2V4Y2VwdGlvbnMsIDEpO1xuK1x0cmN1X3JlYWRfbG9jaygpO1xuK1x0YnVja2V0ID0gcmN1X2RlcmVmZXJlbmNlKG5oYy1cdTAwM2VuaGNfZXhjZXB0aW9ucyk7XG4gXHRpZiAoIWJ1Y2tldClcbi1cdFx0cmV0dXJuO1xuK1x0XHRnb3RvIG91dDtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEZOSEVfSEFTSF9TSVpFOyBpKyspIHtcbiBcdFx0c3RydWN0IGZpYl9uaF9leGNlcHRpb24gKmZuaGU7XG4gXG4tXHRcdGZvciAoZm5oZSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoYnVja2V0W2ldLmNoYWluLCAxKTtcbitcdFx0Zm9yIChmbmhlID0gcmN1X2RlcmVmZXJlbmNlKGJ1Y2tldFtpXS5jaGFpbik7XG4gXHRcdCAgICAgZm5oZTtcbi1cdFx0ICAgICBmbmhlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChmbmhlLVx1MDAzZWZuaGVfbmV4dCwgMSkpIHtcbi1cdFx0XHRpZiAoZm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQpIHtcbi1cdFx0XHRcdGlmIChuZXcgXHUwMDNjPSBmbmhlLVx1MDAzZWZuaGVfcG10dSkge1xuLVx0XHRcdFx0XHRmbmhlLVx1MDAzZWZuaGVfcG10dSA9IG5ldztcbi1cdFx0XHRcdFx0Zm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQgPSBmYWxzZTtcbi1cdFx0XHRcdH1cbi1cdFx0XHR9IGVsc2UgaWYgKG5ldyBcdTAwM2MgZm5oZS1cdTAwM2VmbmhlX3BtdHUgfHxcbi1cdFx0XHRcdCAgIG9yaWcgPT0gZm5oZS1cdTAwM2VmbmhlX3BtdHUpIHtcbi1cdFx0XHRcdGZuaGUtXHUwMDNlZm5oZV9wbXR1ID0gbmV3O1xuLVx0XHRcdH1cbi1cdFx0fVxuK1x0XHQgICAgIGZuaGUgPSByY3VfZGVyZWZlcmVuY2UoZm5oZS1cdTAwM2VmbmhlX25leHQpKVxuK1x0XHRcdGZuaGVfdXBkYXRlX3BtdHUoZm5oZSwgbmV3LCBvcmlnKTtcbiBcdH1cbitvdXQ6XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG4gdm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jXG5pbmRleCAxNTJkOGNiMjhmNjVhLi5iODI0MDFhNmJhZWQ3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvcm91dGUuY1xuKysrIGIvbmV0L2lwdjQvcm91dGUuY1xuQEAgLTc0MSw2ICs3NDEsMzUgQEAgc3RhdGljIHZvaWQgdXBkYXRlX29yX2NyZWF0ZV9mbmhlKHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGMsIF9fYmUzMiBkYWRkcixcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmZuaGVfbG9jayk7XG4gfVxuIFxuKy8qIFVwZGF0ZSB0aGUgUE1UVSBvZiBhbiBleGNlcHRpb24gd2hlbjpcbisgKiAtIHRoZSBuZXcgTVRVIG9mIHRoZSBmaXJzdCBob3AgYmVjb21lcyBzbWFsbGVyIHRoYW4gdGhlIFBNVFVcbisgKiAtIHRoZSBvbGQgTVRVIHdhcyB0aGUgc2FtZSBhcyB0aGUgUE1UVSwgYW5kIGl0IGxpbWl0ZWQgZGlzY292ZXJ5IG9mXG4rICogICBsYXJnZXIgTVRVcyBvbiB0aGUgcGF0aC4gV2l0aCB0aGF0IGxpbWl0IHJhaXNlZCwgd2UgY2FuIG5vd1xuKyAqICAgZGlzY292ZXIgbGFyZ2VyIE1UVXNcbisgKiBBIHNwZWNpYWwgY2FzZSBpcyBsb2NrZWQgZXhjZXB0aW9ucywgZm9yIHdoaWNoIHRoZSBQTVRVIGlzIHNtYWxsZXJcbisgKiB0aGFuIHRoZSBtaW5pbWFsIGFjY2VwdGVkIFBNVFU6XG4rICogLSBpZiB0aGUgbmV3IE1UVSBpcyBncmVhdGVyIHRoYW4gdGhlIFBNVFUsIGRvbid0IG1ha2UgYW55IGNoYW5nZVxuKyAqIC0gb3RoZXJ3aXNlLCB1bmxvY2sgYW5kIHNldCBQTVRVXG4rICpcbisgKiBmbmhlX2xvY2sga2VlcHMgZm5oZV9wbXR1IGFuZCBmbmhlX210dV9sb2NrZWQgY29uc2lzdGVudCBhZ2FpbnN0XG4rICogdXBkYXRlX29yX2NyZWF0ZV9mbmhlKCksIHdoaWNoIHNldHMgYm90aCB1bmRlciB0aGUgc2FtZSBsb2NrLlxuKyAqL1xuK3ZvaWQgZm5oZV91cGRhdGVfcG10dShzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZSwgdTMyIG5ldywgdTMyIG9yaWcpXG4re1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmZuaGVfbG9jayk7XG4rXG4rXHRpZiAoZm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQpIHtcbitcdFx0aWYgKG5ldyBcdTAwM2M9IGZuaGUtXHUwMDNlZm5oZV9wbXR1KSB7XG4rXHRcdFx0Zm5oZS1cdTAwM2VmbmhlX3BtdHUgPSBuZXc7XG4rXHRcdFx0Zm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQgPSBmYWxzZTtcbitcdFx0fVxuK1x0fSBlbHNlIGlmIChuZXcgXHUwMDNjIGZuaGUtXHUwMDNlZm5oZV9wbXR1IHx8IG9yaWcgPT0gZm5oZS1cdTAwM2VmbmhlX3BtdHUpIHtcbitcdFx0Zm5oZS1cdTAwM2VmbmhlX3BtdHUgPSBuZXc7XG4rXHR9XG4rXG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZmbmhlX2xvY2spO1xuK31cbitcbiBzdGF0aWMgdm9pZCBfX2lwX2RvX3JlZGlyZWN0KHN0cnVjdCBydGFibGUgKnJ0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG4gXHRcdFx0ICAgICBib29sIGtpbGxfcm91dGUpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6MDQuMDMxMTg1MDM3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgwMjA4Nzk5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBNVFUgVXBkYXRlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYGZpYl9uaGNfdXBkYXRlX210dWAgaW4gYG5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY2AgYW5kIGFkZGluZyBgZm5oZV91cGRhdGVfcG10dWAgdG8gYG5ldC9pcHY0L3JvdXRlLmNgLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBob3cgdGhlIFBhdGggTVRVIChQTVRVKSBpcyB1cGRhdGVkIGZvciBleGNlcHRpb25zIHdoZW4gdGhlIE1UVSBvZiB0aGUgZmlyc3QgaG9wIGNoYW5nZXMuIEdvb2QuIFNtYXJ0IHRvIHByb3RlY3QgYGZuaGVfcG10dWAgYW5kIGBmbmhlX210dV9sb2NrZWRgIHdpdGggUkNVIGFuZCBhIHNwaW5sb2NrLCBgZm5oZV9sb2NrYCDigJMgdGhhdCdzIGNydWNpYWwgZm9yIGNvbmN1cnJlbmN5LCBlc3BlY2lhbGx5IGluIHJvdXRpbmcuXG5cblJpZ2h0LCBzbyBsZXQncyBkaWcgaW50byBgZmliX25oY191cGRhdGVfbXR1YCBhbmQgdGhlIG5ldyBgZm5oZV91cGRhdGVfcG10dWAuIEltbWVkaWF0ZWx5LCBJIHNlZSB0aGlzIGlzIGFsbCBJUHY0IHJvdXRpbmcgbG9naWMsIHdoaWNoIG1lYW5zIGl0J3MgZGVmaW5pdGVseSBpbiB0aGUgY3JpdGljYWwgcGF0aC4gR29vZCBzcG90LiBgZmliX25oY191cGRhdGVfbXR1YCBpcyBjYWxsZWQgZnJvbSBgZmliX3N5bmNfbXR1YCwgd2hpY2ggaXRzZWxmIGdldHMgY2FsbGVkIHdoZW4gYSBkZXZpY2UncyBNVFUgY2hhbmdlcy4gR2l2ZW4gdGhlIGRldmljZSBNVFUgY2hhbmdlIHRyaWdnZXJzIHRoaXMgcGF0aCwgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gUHJvbWlzaW5nLCBhbmQgd29ydGggYSB0YXJnZXRlZCBmdXp6aW5nIGVmZm9ydC5cblxuTm93LCBsZXQncyBxdWlja2x5IGNoZWNrIGlmIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQuIGBmaWJfbmhjX3VwZGF0ZV9tdHVgIGlzIGFscmVhZHkgdGhlcmUgYW5kLCBhcyBleHBlY3RlZCwgYGZuaGVfdXBkYXRlX3BtdHVgIGlzIG5ldy4gSSBuZWVkIHRvIGZpbmQgdGhlIGNhbGxlcnMgb2YgYGZpYl9uaGNfdXBkYXRlX210dWAsIHNpbmNlIHRoYXQncyB0aGUgZXN0YWJsaXNoZWQgY29kZS4gTGV0J3Mgc2VlIHdoYXQncyBiZWluZyBhZmZlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM1MSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU2OjA5LjgzMzI3NTc4M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjUxMTEzMTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpYl9uaGNfdXBkYXRlX210dVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9pcF9maWIuaD00OTU9dm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KTtcXG5pbmNsdWRlL25ldC9pcF9maWIuaDo0OTY6dm9pZCBmaWJfbmhjX3VwZGF0ZV9tdHUoc3RydWN0IGZpYl9uaF9jb21tb24gKm5oYywgdTMyIG5ldywgdTMyIG9yaWcpO1xcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTQ5Ny1cXG4tLVxcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYz0xODY5PXN0YXRpYyBpbnQgY2FsbF9maWJfbmhfbm90aWZpZXJzKHN0cnVjdCBmaWJfbmggKm5oLFxcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5MDEtICovXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjE5MDI6dm9pZCBmaWJfbmhjX3VwZGF0ZV9tdHUoc3RydWN0IGZpYl9uaF9jb21tb24gKm5oYywgdTMyIG5ldywgdTMyIG9yaWcpXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5MDMte1xcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jPTE5MjQ9dm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5MzAtXFx0XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShuaC1cXHUwMDNlZmliX25oX2RldiAhPSBkZXYpO1xcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYzoxOTMxOlxcdFxcdGZpYl9uaGNfdXBkYXRlX210dShcXHUwMDI2bmgtXFx1MDAzZW5oX2NvbW1vbiwgZGV2LVxcdTAwM2VtdHUsIG9yaWdfbXR1KTtcXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTkzMi1cXHR9XFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9Mzk1NT1zdGF0aWMgdm9pZCBuZXh0aG9wX3N5bmNfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBvcmlnX210dSlcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zOTY1LVxcdFxcdFxcdGlmIChuaGktXFx1MDAzZWZhbWlseSA9PSBBRl9JTkVUKVxcbm5ldC9pcHY0L25leHRob3AuYzozOTY2OlxcdFxcdFxcdFxcdGZpYl9uaGNfdXBkYXRlX210dShcXHUwMDI2bmhpLVxcdTAwM2VmaWJfbmhjLCBkZXYtXFx1MDAzZW10dSxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzk2Ny1cXHRcXHRcXHRcXHRcXHRcXHQgICBvcmlnX210dSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU2OjEyLjQ4NDM5NDY5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MzA5NTM4OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IE1UVSBTeW5jaHJvbml6YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYGZpYl9zeW5jX210dWAgYW5kIGBuZXh0aG9wX3N5bmNfbXR1YCBmdW5jdGlvbnMgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciB0aGlzIGNvZGUsIGFuZCB0aGV5J3JlIHRyaWdnZXJlZCBieSBuZXRkZXYgTVRVIGNoYW5nZXMg4oCTIHNwZWNpZmljYWxseSB0aGUgYE5FVERFVl9DSEFOR0VNVFVgIGV2ZW50LiBUaGF0IG1ha2VzIHRoaXMgYSBwcmV0dHkgYWNjZXNzaWJsZSBhbmQgcG90ZW50aWFsbHkgZnJ1aXRmdWwgYXJlYSBmb3IgZnV6emluZy4gRGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBzaXR1YXRpb24gd2hlcmUgYSBuZXR3b3JrIGRldmljZSdzIE1UVSBjaGFuZ2UgbmVlZHMgdG8gYmUgcHJvcGFnYXRlZCB0byB0aGUgZm9yd2FyZGluZyBpbmZvcm1hdGlvbiBiYXNlIChGSUIpIGFuZCBuZXh0IGhvcCB0YWJsZXMgdG8gZW5zdXJlIGNvbnNpc3RlbnQgcGFja2V0IHNpemUgaGFuZGxpbmcuIEEgbWlzY2FsY3VsYXRpb24gb3IgaW5jb25zaXN0ZW5jeSBoZXJlIGNvdWxkIGxlYWQgdG8gZnJhZ21lbnRhdGlvbiBpc3N1ZXMsIHBhdGggTVRVIGRpc2NvdmVyeSBwcm9ibGVtcywgb3IgZXZlbiBwb3RlbnRpYWwgZGVuaWFsLW9mLXNlcnZpY2UgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGUgcHJpbWFyeSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlOiBgZmliX25oY191cGRhdGVfbXR1YCwgYGZuaGVfdXBkYXRlX3BtdHVgLCBhbmQgb2YgY291cnNlIGBmaWJfc3luY19tdHVgIGFuZCBgbmV4dGhvcF9zeW5jX210dWAgdGhlbXNlbHZlcy4gVGhlc2UgYXJlIHRoZSB3b3JraG9yc2VzIGRvaW5nIHRoZSBhY3R1YWwgdXBkYXRlcyBhbmQgc3luY2hyb25pemF0aW9uLlxuXG5JIHNob3VsZCBhbHNvIGNoZWNrIGBuZXQvaXB2NC9LY29uZmlnYCBmb3IgYW55IGZlYXR1cmUgZmxhZ3MgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhlIGJlaGF2aW9yIG9mIHRoaXMgY29kZS4gYElQX1JPVVRFX01VTFRJUEFUSGAgaXMgYSBzdHJvbmcgbWF5YmU7IGlmIG11bHRpcGxlIHBhdGhzIGFyZSBpbnZvbHZlZCwgdGhlIE1UVSBzeW5jaHJvbml6YXRpb24gbG9naWMgd2lsbCBsaWtlbHkgYmUgbW9yZSBjb21wbGV4LiBgSVBfUk9VVEVfQ0xBU1NJRGAgaXMgYW5vdGhlciBvbmUgdG8gY29uc2lkZXIuXG5cbkVzc2VudGlhbGx5LCBJJ20gdGhpbmtpbmcgdGhhdCBpZiBJIGNhbiByZWxpYWJseSB0cmlnZ2VyIGBORVRERVZfQ0hBTkdFTVRVYCBldmVudHMgYW5kIGNhcmVmdWxseSBjcmFmdCB0aGUgcGFyYW1ldGVycywgSSBjYW4gc3RhcnQgcHJvYmluZyBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgTVRVIHN5bmNocm9uaXphdGlvbiBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgRklCLCBuZXh0IGhvcHMsIGFuZCBwYXRoIE1UVSBkaXNjb3ZlcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MTgsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6MTguMDE1MzUzMDE0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTcwMDA4MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1JPVVRFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9NjM9Y29uZmlnIElQX01VTFRJUExFX1RBQkxFU1xcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy03OS1cXG5uZXQvaXB2NC9LY29uZmlnOjgwOmNvbmZpZyBJUF9ST1VURV9NVUxUSVBBVEhcXG5uZXQvaXB2NC9LY29uZmlnLTgxLVxcdGJvb2wgXFxcIklQOiBlcXVhbCBjb3N0IG11bHRpcGF0aFxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctOTEtXFxubmV0L2lwdjQvS2NvbmZpZzo5Mjpjb25maWcgSVBfUk9VVEVfVkVSQk9TRVxcbm5ldC9pcHY0L0tjb25maWctOTMtXFx0Ym9vbCBcXFwiSVA6IHZlcmJvc2Ugcm91dGUgbW9uaXRvcmluZ1xcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTAyLVxcbm5ldC9pcHY0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9ST1VURV9DTEFTU0lEXFxubmV0L2lwdjQvS2NvbmZpZy0xMDQtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMDo1NjoyMC4zMzIzNTkwOTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTIwNzcxNTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgSVB2NCBSb3V0aW5nIENvZGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIElQdjQgcm91dGluZyBpbXBsZW1lbnRhdGlvbi4gV2hlcmUgZG8gSSBzdGFydD8gUmlnaHQsIHRoZSBjb3JlIGxvZ2ljIHNob3VsZCBiZSBpbiBgbmV0L2lwdjQvZmliX3NlbWFudGljcy5jYCBhbmQgYG5ldC9pcHY0L3JvdXRlLmNgLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBBbmQgc2luY2UgdGhpcyBpcyBJUHY0LCBpdCdzIGNvbXBpbGVkIGluIHVuY29uZGl0aW9uYWxseTsgbm8gbmVlZCB0byB3b3JyeSBhYm91dCBjb25kaXRpb25hbHMuIE5vdywgdG8gYmUgY29tcGxldGVseSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgcGllY2VzLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGJ1aWxkIHByb2Nlc3MuIExldCBtZSBxdWlja2x5IGNoZWNrIGBuZXQvaXB2NC9NYWtlZmlsZWAuIFRoYXQgc2hvdWxkIGNvbmZpcm0gaG93IHRoZXNlIGZpbGVzIGFyZSBoYW5kbGVkIGR1cmluZyB0aGUgY29tcGlsYXRpb24gc3RhZ2UgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBtb2R1bGVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMwNSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU2OjIzLjQ1MzEzMjU4MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg1MDY5MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpYl9zZW1hbnRpY3Mub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZS0xNC1cXHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNTpcXHQgICAgIGZpYl9mcm9udGVuZC5vIGZpYl9zZW1hbnRpY3MubyBmaWJfdHJpZS5vIGZpYl9ub3RpZmllci5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNi1cXHQgICAgIGluZXRfZnJhZ21lbnQubyBwaW5nLm8gaXBfdHVubmVsX2NvcmUubyBncmVfb2ZmbG9hZC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6MjYuMDM4MjA1OTE5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAzMDQzNDE3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqSVB2NCBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgc28gdGhlIGJ1aWxkIHByb2Nlc3MgZXhwbGljaXRseSBpbmNsdWRlcyBJUHY0IHN1cHBvcnQsIG5vIG1hdHRlciB3aGF0LiBUaGF0IG1lYW5zLCB0byBnZXQgdGhpbmdzIHVwIGFuZCBydW5uaW5nLCBhbGwgSSAqcmVhbGx5KiBuZWVkIHRvIGZvY3VzIG9uIGlzIHRoZSBgSU5FVGAgY29uZmlndXJhdGlvbi4gVGhhdCdzIHRoZSBiYXNlbGluZS5cblxuTm93LCBiZWZvcmUgSSBwcm9jZWVkIGZ1cnRoZXIsIGxldCdzIGp1c3QgY29uZmlybSB0aGF0IHRoYXQgYGZuaGVfdXBkYXRlX3BtdHVgIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGV4cG9zZWQgYW5kIGF2YWlsYWJsZSBmb3IgdXNlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgY2FuIGludGVyZmFjZSB3aXRoIGl0IGlmIG5lY2Vzc2FyeS4gQSBxdWljayBjaGVjayBvZiB0aGUgZXhwb3J0cyB3aWxsIGNvbmZpcm0gdGhpcyBmb3IgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NzEsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMDo1NjoyOS4wNjg2NDI2MjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NTc4MzE3NzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmZuaGVfdXBkYXRlX3BtdHVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU2OjMxLjYyNjQ4MzUwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjkzNjkzOTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipBbmFseXppbmcgRnVuY3Rpb24gRGVjbGFyYXRpb24gYW5kIEV4cG9ydCBTdGF0dXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24sIGl0J3Mgbm90IGFjdHVhbGx5IGV4cG9ydGVkIGFzIHN1Y2gsIG1lYW5pbmcgaXQncyBub3QgZGVmaW5lZCB3aXRoaW4gYSBgLmNgIGZpbGUgYW5kIHRoZW4gZGVjbGFyZWQgaW4gYSBoZWFkZXIgZmlsZSBmb3Igb3RoZXIgbW9kdWxlcyB0byB1c2UuIEl04oCZcyBkZWNsYXJlZCwgYW5kIHRoZXJlZm9yZSBkZWZpbmVkIHdpdGhpbiBgaW5jbHVkZS9uZXQvcm91dGUuaGAuIFRoYXQgbWFrZXMgaXQgYSBub24tc3RhdGljIGZ1bmN0aW9uLiBTbywgaXQncyBub3QgYSB0cnVseSBzdGF0aWMgZnVuY3Rpb247IGl0IGhhcyB2aXNpYmlsaXR5IHdpdGhpbiB0aGUgbW9kdWxlIGl0IGJlbG9uZ3MgdG8sIGJ1dCBpc27igJl0ICpleHBsaWNpdGx5KiBleHBvcnRlZCBmb3IgZXh0ZXJuYWwgdXNlLiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgYWNjZXNzIGNvbnRyb2wuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGlmIGBmaWJfbmhjX3VwZGF0ZV9tdHVgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgaXRzIGRlZmluaXRpb24gYW5kIHZpc2liaWxpdHkgYXJlIGFzIHN1c3BlY3RlZC4gVGhpcyBzdGVwIGlzIGNydWNpYWwgZm9yIHZlcmlmeWluZyBob3cgaXQncyBpbnRlbmRlZCB0byBiZSB1dGlsaXplZCB3aXRoaW4gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg4NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU2OjM0LjkyMDE4MDAyOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxNzU2NDkwMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qZmliX25oY191cGRhdGVfbXR1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMDo1NjozNy40Mzc3NTI3ODhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxMzkzNjQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgTm9uLUV4cG9ydGVkLCBOb24tU3RhdGljIFZhcmlhYmxlcyoqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyBjb2RlYmFzZSBhbmQgSSd2ZSBzdHVtYmxlZCB1cG9uIHNvbWV0aGluZyB0aGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdDogYSB2YXJpYWJsZSB0aGF0J3MgKm5vdCogcGFydCBvZiB0aGUgZXhwb3J0ZWQgQVBJLCB5ZXQgYWxzbyBpc24ndCBkZWNsYXJlZCBgc3RhdGljYC4gVGhpcyBpcyBhIGNsYXNzaWMgcG90ZW50aWFsIHBvaW50IG9mIGNvbmZ1c2lvbiBhbmQvb3IgdW5pbnRlbnRpb25hbCBhY2Nlc3MuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hlcmUgaXMgdGhpcyB2YXJpYWJsZSBiZWluZyB1c2VkPyBJcyBpdCB0cnVseSAqaW50ZW5kZWQqIHRvIGJlIGhpZGRlbj8gQW5kIGlmIHNvLCB3aHkgaXMgaXQgbm9uLXN0YXRpYz8gSXMgaXQgdXNlZCBpbiB0aGlzIGZpbGUgaW4gd2F5cyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSBsb2NhbCB0byB0aGUgZmlsZSwgYW5kIHNob3VsZCB0aHVzIGJlIHN0YXRpYz8gT3IgaXMgaXQgZ2xvYmFsbHkgYWNjZXNzZWQgaW4gYW5vdGhlciBwbGFjZT9cblxuU28sIEkgdGhpbmsgdGhlIG5leHQgbG9naWNhbCBzdGVwIGhlcmUgaXMgdG8gY29uZmlybSB3aGV0aGVyIGBmaWJfc3luY19tdHVgIGlzIGV4cG9ydGVkLiBMZXQncyBzZWUgaWYgdGhlIGxpbmtlciB0ZWxscyB1cyBzb21ldGhpbmcgaGVyZS4gVGltZSB0byBjaGVjayB0aGUgc3ltYm9sIHRhYmxlISBJJ2xsIHF1aWNrbHkgdXNlIG15IHN0YW5kYXJkIHRvb2xzIChubSwgb2JqZHVtcCwgb3IgbWF5YmUgZXZlbiBncmVwKSB0byBwaW5wb2ludCBpdHMgc3RhdHVzLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBleHBvcnQsIGp1c3QgdG8gYmUgc3VyZS4gSSdtIGdvaW5nIHRvIHRyYWNrIGl0IGRvd24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNzUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMDo1Njo0MC45NTE2OTE1NDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODUxNjE4NDQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmZpYl9zeW5jX210dVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6NDMuNjM2ODU5NDMyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NzUzNzcxMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byBFeHBvcnRlZCBWYXJpYWJsZXMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBleHBvcnRhYmlsaXR5LiBJJ3ZlIG5vdGljZWQgc29tZXRoaW5nLCBhbmQgaXQncyBnb3QgbWUgY3VyaW91cy4gU3BlY2lmaWNhbGx5LCBJJ20gZm9jdXNpbmcgb24gdmFyaWFibGVzIHRoYXQgYXJlbid0ICpleHBsaWNpdGx5KiBmbGFnZ2VkIGZvciBleHBvcnQgKG5vbi1zdGF0aWMsIGJ5IHRoZSBsb29rcyBvZiBpdCkuIFRoaXMgbWVhbnMgdGhleSBhcmVuJ3QgZGlyZWN0bHkgYXZhaWxhYmxlIG91dHNpZGUgdGhlaXIgY29udGFpbmluZyBzY29wZSBieSBkZWZhdWx0LiBUaGlzIHJhaXNlcyBhbiBpbnRlcmVzdGluZyBxdWVzdGlvbiBhYm91dCBhY2Nlc3NpYmlsaXR5IGFuZCBob3cgdGhlc2UgdmFyaWFibGVzIGFyZSB1c2VkLlxuXG5UbyBtYWtlIHN1cmUgSSBmdWxseSB1bmRlcnN0YW5kLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBgbmV4dGhvcF9zeW5jX210dWAgaXMgZXhwb3J0ZWQuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSB0aGUgY29udGV4dCBvZiBpdHMgdXNlIHdpdGhpbiB0aGUgbGFyZ2VyIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ5NiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU2OjQ2LjYxMjI0MDQxN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYxNzM0Mzk2NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qbmV4dGhvcF9zeW5jX210dVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6NDkuMjI5NTkxNDk0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTk1NzQ1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBkcmF3aW5nIG9uIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBNVFUgU3luY2hyb25pemF0aW9uIGFuZCBTY29wZSoqXG5cbkFscmlnaHQsIHNvIHRoZXNlIGZ1bmN0aW9ucyBhcmVuJ3QgYmVpbmcgZXhwb3J0ZWQsIGJ1dCB0aGV5J3JlICphbHNvKiBub3QgZGVjbGFyZWQgYXMgc3RhdGljLiBJbnRlcmVzdGluZy4gVGhhdCBzdWdnZXN0cyB0aGV5IGhhdmUgaW50ZXJuYWwgdXNlIHdpdGhpbiB0aGUgbGlicmFyeSBvciBtb2R1bGUsIGJ1dCBhcmUgcG90ZW50aWFsbHkgYWNjZXNzaWJsZSBpbiBhIHdheSB0aGF0IGdvZXMgYmV5b25kIGEgc3RyaWN0bHkgcHJpdmF0ZSBzY29wZS4gV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhhdCBhc3N1bXB0aW9uLlxuXG5UaGUga2V5IGZvY3VzIHNlZW1zIHRvIGJlIG9uIHRoZXNlIE1UVS1yZWxhdGVkIGZ1bmN0aW9uczogYGZpYl9uaGNfdXBkYXRlX210dWAsIGBmbmhlX3VwZGF0ZV9wbXR1YCwgYW5kIGBmaWJfc3luY19tdHVgLiBUaGVzZSBhcmUgdGhlIGNvcmUgcm91dGluZXMgcmVzcG9uc2libGUgZm9yIHN5bmNocm9uaXppbmcgTVRVIChNYXhpbXVtIFRyYW5zbWlzc2lvbiBVbml0KSB2YWx1ZXMgYWNyb3NzIHRoZSBmb3J3YXJkaW5nIGluZm9ybWF0aW9uIGJhc2UgKEZJQikgYW5kIHJlbGF0ZWQgZGF0YSBzdHJ1Y3R1cmVzLiBNYWtlcyBzZW5zZTsgTVRVIGluY29uc2lzdGVuY2llcyBjYW4gY2F1c2Ugc2VyaW91cyBwYWNrZXQgZnJhZ21lbnRhdGlvbiBpc3N1ZXMuXG5cbk5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uLCBhbmQgdGhpcyBpcyB3aGVyZSBJJ2xsIGRpdmUgYSBsaXR0bGUgZGVlcGVyOiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHNjb3BlIG9mIGBuZXh0aG9wX3N5bmNfbXR1YC4gSXMgdGhhdCBmdW5jdGlvbiBzdGF0aWM/IElmIGl0ICppcyogc3RhdGljLCB0aGVuIGl0cyB1c2UgaXMgc3RyaWN0bHkgbGltaXRlZCB0byB0aGUgZmlsZSBpdCdzIGRlZmluZWQgaW4sIHdoaWNoIHNpbXBsaWZpZXMgdGhlIG92ZXJhbGwgbWVudGFsIG1vZGVsIGEgYml0LiBJZiBpdCdzICpub3QqIHN0YXRpYywgdGhlbiBpdCdzIGFjY2Vzc2libGUgYXQgbW9kdWxlIHNjb3BlIG9yIG1heWJlIGV2ZW4gZ2xvYmFsbHksIGFuZCB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBvdGhlciBmdW5jdGlvbnMuIEknbGwgY2hlY2sgdGhhdCBuZXh0LiBUaGF0J3Mga2V5IGZvciBkZXBlbmRlbmN5IGFuZCBzY29wZSBtYXBwaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzI2LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6NTIuODQ5MTY4MjA5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjcyNjExOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5leHRob3Bfc3luY19tdHVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jPTM5MDg9c3RhdGljIGludCBydG1fZ2V0X25leHRob3BfYnVja2V0KHN0cnVjdCBza19idWZmICppbl9za2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTM5NTQtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjM5NTU6c3RhdGljIHZvaWQgbmV4dGhvcF9zeW5jX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgb3JpZ19tdHUpXFxubmV0L2lwdjQvbmV4dGhvcC5jLTM5NTYte1xcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jPTM5NzM9c3RhdGljIGludCBuaF9uZXRkZXZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTM5ODktXFx0XFx0aW5mb19leHQgPSBwdHI7XFxubmV0L2lwdjQvbmV4dGhvcC5jOjM5OTA6XFx0XFx0bmV4dGhvcF9zeW5jX210dShkZXYsIGluZm9fZXh0LVxcdTAwM2VleHQubXR1KTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzk5MS1cXHRcXHRydF9jYWNoZV9mbHVzaChkZXZfbmV0KGRldikpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMDo1Njo1NS4xMjE3ODc0ODdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwMTIxNzk5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQdjQgUE1UVSBVcGRhdGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyB0aGUgSVB2NCByb3V0aW5nIGxvZ2ljIGZvciBQYXRoIE1UVSAoUE1UVSkgdXBkYXRlcyBpbiBmaWIgbmV4dGhvcCBleGNlcHRpb25zLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZSBmdW5jdGlvbnMgYGZuaGVfdXBkYXRlX3BtdHVgIGFuZCB0aGUgbW9kaWZpZWQgYGZpYl9uaGNfdXBkYXRlX210dWAuIFRoZSBjb2RlIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBNVFUgb2YgYSBuZXR3b3JrIGRldmljZSBjaGFuZ2VzLCB3aGljaCB0aGVuIGtpY2tzIG9mZiBgZmliX3N5bmNfbXR1YCBhbmQgYG5leHRob3Bfc3luY19tdHVgLiBHb29kLiBJdCdzIGNvcmUgbmV0d29ya2luZyBzdHVmZiwgc28gZGVmaW5pdGVseSBmdXp6aW5nIHRhcmdldHMuXG5cbkkgc2VlIHRoYXQgYG5leHRob3Bfc3luY19tdHVgIGlzIHN0YXRpYyBzbyB3ZSBjYW4gb21pdCB0aGlzIGZyb20gYW55IGFuYWx5c2lzLlxuXG5Ob3csIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9uIHZpc2liaWxpdHkuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZS4gT2theSwgaGVyZSBhcmUgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXM6XG4qICAgYHZvaWQgZmliX25oY191cGRhdGVfbXR1KHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGMsIHUzMiBuZXcsIHUzMiBvcmlnKWAgLSBOb3Qgc3RhdGljLiBHb29kIHRvIGtub3cuXG4qICAgYHZvaWQgZm5oZV91cGRhdGVfcG10dShzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZSwgdTMyIG5ldywgdTMyIG9yaWcpYCAtIE5vdCBzdGF0aWMuIEFuZCBgZm5oZV91cGRhdGVfcG10dWAgaXMgd2hhdCdzIG5ld2x5IGludHJvZHVjZWQuXG4qICAgYHZvaWQgZmliX3N5bmNfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBvcmlnX210dSlgIC0gTm90IHN0YXRpYy5cblxuYElORVRgIGlzIG9idmlvdXNseSByZWxldmFudCAoSVB2NCksIGJ1dCBJJ20gZ29pbmcgdG8gbGVhdmUgdGhlIGNvbmZpZyBzZWN0aW9uIGVtcHR5IHNpbmNlIGl0J3MgcHJvYmFibHkgZW5hYmxlZCBieSBkZWZhdWx0LiBPa2F5LCBJIGhhdmUgZXZlcnl0aGluZyBJIG5lZWQsIGFuZCBub3cgSSdsbCBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczODgsIk91dHB1dFRva2VucyI6MTk0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU3OjAyLjkyMzAwODEzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4MjQwNzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZm5oZV91cGRhdGVfcG10dVwiLFxuICAgIFwiZmliX25oY191cGRhdGVfbXR1XCIsXG4gICAgXCJmaWJfc3luY19tdHVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSVB2NCByb3V0aW5nIGxvZ2ljIHRvIGNvcnJlY3RseSB1cGRhdGUgdGhlIFBhdGggTVRVIChQTVRVKSBvZiBmaWIgbmV4dGhvcCBleGNlcHRpb25zIHdoZW4gdGhlIE1UVSBvZiB0aGUgZmlyc3QgaG9wIGNoYW5nZXMuIEl0IGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYGZuaGVfdXBkYXRlX3BtdHVgIGFuZCBtb2RpZmllcyBgZmliX25oY191cGRhdGVfbXR1YCB0byB1c2UgUkNVIGFuZCBhIHNwaW5sb2NrLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGJ5IGNoYW5naW5nIHRoZSBNVFUgb2YgYSBuZXR3b3JrIGRldmljZSAoZS5nLiwgdmlhIG5ldGxpbmsgb3IgaW9jdGwpIHdoaWNoIHRyaWdnZXJzIGBmaWJfc3luY19tdHVgIGFuZCBgbmV4dGhvcF9zeW5jX210dWAuIFRoaXMgaXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmbmhlX3VwZGF0ZV9wbXR1XCIsXG4gICAgXCJmaWJfbmhjX3VwZGF0ZV9tdHVcIixcbiAgICBcImZpYl9zeW5jX210dVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJUHY0IHJvdXRpbmcgbG9naWMgdG8gY29ycmVjdGx5IHVwZGF0ZSB0aGUgUGF0aCBNVFUgKFBNVFUpIG9mIGZpYiBuZXh0aG9wIGV4Y2VwdGlvbnMgd2hlbiB0aGUgTVRVIG9mIHRoZSBmaXJzdCBob3AgY2hhbmdlcy4gSXQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgZm5oZV91cGRhdGVfcG10dWAgYW5kIG1vZGlmaWVzIGBmaWJfbmhjX3VwZGF0ZV9tdHVgIHRvIHVzZSBSQ1UgYW5kIGEgc3BpbmxvY2suIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgY2hhbmdpbmcgdGhlIE1UVSBvZiBhIG5ldHdvcmsgZGV2aWNlIChlLmcuLCB2aWEgbmV0bGluayBvciBpb2N0bCkgd2hpY2ggdHJpZ2dlcnMgYGZpYl9zeW5jX210dWAgYW5kIGBuZXh0aG9wX3N5bmNfbXR1YC4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU3OjAzLjA0MTI1NDk5NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ2MzQ1NTg3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU3OjAzLjA0MTcyOTIzNloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NDYyOTc2NjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSAobWlzc2luZyBSQ1UgcmVhZCBsb2NrIGFuZCBzcGlubG9jayBwcm90ZWN0aW9uKSB3aGVuIHVwZGF0aW5nIFBNVFUgaW4gZmliX25oX2V4Y2VwdGlvbiBlbnRyaWVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOLCBLQ1NBTiwgb3IgTE9DS0RFUCBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjI3MzM2NDMxOTNhNGVhZjUwZmRjNmVmYzIwYjIwMjNlNjM5N2Q4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMjA6NTY6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9yb3V0ZS5oIGIvaW5jbHVkZS9uZXQvcm91dGUuaFxuaW5kZXggZjkwMTA2ZjM4M2M1Ni4uNDUyOTAxNzdhMzNjNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3JvdXRlLmhcbisrKyBiL2luY2x1ZGUvbmV0L3JvdXRlLmhcbkBAIC0yNzYsNiArMjc2LDggQEAgaW50IGZpYl9kdW1wX2luZm9fZm5oZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsXG4gXHRcdCAgICAgICB1MzIgdGFibGVfaWQsIHN0cnVjdCBmaWJfaW5mbyAqZmksXG4gXHRcdCAgICAgICBpbnQgKmZhX2luZGV4LCBpbnQgZmFfc3RhcnQsIHVuc2lnbmVkIGludCBmbGFncyk7XG4gXG4rdm9pZCBmbmhlX3VwZGF0ZV9wbXR1KHN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlLCB1MzIgbmV3LCB1MzIgb3JpZyk7XG4rXG4gc3RhdGljIGlubGluZSB2b2lkIGlwX3J0X3B1dChzdHJ1Y3QgcnRhYmxlICpydClcbiB7XG4gXHQvKiBkc3RfcmVsZWFzZSgpIGFjY2VwdHMgYSBOVUxMIHBhcmFtZXRlci5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMgYi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcbmluZGV4IDc4Zjg0YWUzZWUxMjAuLjA0ODM1MTliN2ZiMGQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcbisrKyBiL25ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY1xuQEAgLTE4OTUsNDIgKzE4OTUsMzAgQEAgc3RhdGljIGludCBjYWxsX2ZpYl9uaF9ub3RpZmllcnMoc3RydWN0IGZpYl9uaCAqbmgsXG4gXHRyZXR1cm4gTk9USUZZX0RPTkU7XG4gfVxuIFxuLS8qIFVwZGF0ZSB0aGUgUE1UVSBvZiBleGNlcHRpb25zIHdoZW46XG4tICogLSB0aGUgbmV3IE1UVSBvZiB0aGUgZmlyc3QgaG9wIGJlY29tZXMgc21hbGxlciB0aGFuIHRoZSBQTVRVXG4tICogLSB0aGUgb2xkIE1UVSB3YXMgdGhlIHNhbWUgYXMgdGhlIFBNVFUsIGFuZCBpdCBsaW1pdGVkIGRpc2NvdmVyeSBvZlxuLSAqICAgbGFyZ2VyIE1UVXMgb24gdGhlIHBhdGguIFdpdGggdGhhdCBsaW1pdCByYWlzZWQsIHdlIGNhbiBub3dcbi0gKiAgIGRpc2NvdmVyIGxhcmdlciBNVFVzXG4tICogQSBzcGVjaWFsIGNhc2UgaXMgbG9ja2VkIGV4Y2VwdGlvbnMsIGZvciB3aGljaCB0aGUgUE1UVSBpcyBzbWFsbGVyXG4tICogdGhhbiB0aGUgbWluaW1hbCBhY2NlcHRlZCBQTVRVOlxuLSAqIC0gaWYgdGhlIG5ldyBNVFUgaXMgZ3JlYXRlciB0aGFuIHRoZSBQTVRVLCBkb24ndCBtYWtlIGFueSBjaGFuZ2Vcbi0gKiAtIG90aGVyd2lzZSwgdW5sb2NrIGFuZCBzZXQgUE1UVVxuKy8qIFdhbGsgdGhlIGV4Y2VwdGlvbnMgb2YgYSBuZXh0aG9wIGFmdGVyIGl0cyBmaXJzdCBob3AgTVRVIGNoYW5nZWQuIFRoZVxuKyAqIGNoYWluIGlzIFJDVSBwcm90ZWN0ZWQgaGVyZSwgd2hpbGUgZm5oZV91cGRhdGVfcG10dSgpIHRha2VzIGZuaGVfbG9ja1xuKyAqIGZvciB0aGUgdXBkYXRlIG9mIGVhY2ggZW50cnkuXG4gICovXG4gdm9pZCBmaWJfbmhjX3VwZGF0ZV9tdHUoc3RydWN0IGZpYl9uaF9jb21tb24gKm5oYywgdTMyIG5ldywgdTMyIG9yaWcpXG4ge1xuIFx0c3RydWN0IGZuaGVfaGFzaF9idWNrZXQgKmJ1Y2tldDtcbiBcdGludCBpO1xuIFxuLVx0YnVja2V0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChuaGMtXHUwMDNlbmhjX2V4Y2VwdGlvbnMsIDEpO1xuK1x0cmN1X3JlYWRfbG9jaygpO1xuK1x0YnVja2V0ID0gcmN1X2RlcmVmZXJlbmNlKG5oYy1cdTAwM2VuaGNfZXhjZXB0aW9ucyk7XG4gXHRpZiAoIWJ1Y2tldClcbi1cdFx0cmV0dXJuO1xuK1x0XHRnb3RvIG91dDtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEZOSEVfSEFTSF9TSVpFOyBpKyspIHtcbiBcdFx0c3RydWN0IGZpYl9uaF9leGNlcHRpb24gKmZuaGU7XG4gXG4tXHRcdGZvciAoZm5oZSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoYnVja2V0W2ldLmNoYWluLCAxKTtcbitcdFx0Zm9yIChmbmhlID0gcmN1X2RlcmVmZXJlbmNlKGJ1Y2tldFtpXS5jaGFpbik7XG4gXHRcdCAgICAgZm5oZTtcbi1cdFx0ICAgICBmbmhlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChmbmhlLVx1MDAzZWZuaGVfbmV4dCwgMSkpIHtcbi1cdFx0XHRpZiAoZm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQpIHtcbi1cdFx0XHRcdGlmIChuZXcgXHUwMDNjPSBmbmhlLVx1MDAzZWZuaGVfcG10dSkge1xuLVx0XHRcdFx0XHRmbmhlLVx1MDAzZWZuaGVfcG10dSA9IG5ldztcbi1cdFx0XHRcdFx0Zm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQgPSBmYWxzZTtcbi1cdFx0XHRcdH1cbi1cdFx0XHR9IGVsc2UgaWYgKG5ldyBcdTAwM2MgZm5oZS1cdTAwM2VmbmhlX3BtdHUgfHxcbi1cdFx0XHRcdCAgIG9yaWcgPT0gZm5oZS1cdTAwM2VmbmhlX3BtdHUpIHtcbi1cdFx0XHRcdGZuaGUtXHUwMDNlZm5oZV9wbXR1ID0gbmV3O1xuLVx0XHRcdH1cbi1cdFx0fVxuK1x0XHQgICAgIGZuaGUgPSByY3VfZGVyZWZlcmVuY2UoZm5oZS1cdTAwM2VmbmhlX25leHQpKVxuK1x0XHRcdGZuaGVfdXBkYXRlX3BtdHUoZm5oZSwgbmV3LCBvcmlnKTtcbiBcdH1cbitvdXQ6XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG4gdm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jXG5pbmRleCAxNTJkOGNiMjhmNjVhLi5iODI0MDFhNmJhZWQ3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvcm91dGUuY1xuKysrIGIvbmV0L2lwdjQvcm91dGUuY1xuQEAgLTc0MSw2ICs3NDEsMzUgQEAgc3RhdGljIHZvaWQgdXBkYXRlX29yX2NyZWF0ZV9mbmhlKHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGMsIF9fYmUzMiBkYWRkcixcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmZuaGVfbG9jayk7XG4gfVxuIFxuKy8qIFVwZGF0ZSB0aGUgUE1UVSBvZiBhbiBleGNlcHRpb24gd2hlbjpcbisgKiAtIHRoZSBuZXcgTVRVIG9mIHRoZSBmaXJzdCBob3AgYmVjb21lcyBzbWFsbGVyIHRoYW4gdGhlIFBNVFVcbisgKiAtIHRoZSBvbGQgTVRVIHdhcyB0aGUgc2FtZSBhcyB0aGUgUE1UVSwgYW5kIGl0IGxpbWl0ZWQgZGlzY292ZXJ5IG9mXG4rICogICBsYXJnZXIgTVRVcyBvbiB0aGUgcGF0aC4gV2l0aCB0aGF0IGxpbWl0IHJhaXNlZCwgd2UgY2FuIG5vd1xuKyAqICAgZGlzY292ZXIgbGFyZ2VyIE1UVXNcbisgKiBBIHNwZWNpYWwgY2FzZSBpcyBsb2NrZWQgZXhjZXB0aW9ucywgZm9yIHdoaWNoIHRoZSBQTVRVIGlzIHNtYWxsZXJcbisgKiB0aGFuIHRoZSBtaW5pbWFsIGFjY2VwdGVkIFBNVFU6XG4rICogLSBpZiB0aGUgbmV3IE1UVSBpcyBncmVhdGVyIHRoYW4gdGhlIFBNVFUsIGRvbid0IG1ha2UgYW55IGNoYW5nZVxuKyAqIC0gb3RoZXJ3aXNlLCB1bmxvY2sgYW5kIHNldCBQTVRVXG4rICpcbisgKiBmbmhlX2xvY2sga2VlcHMgZm5oZV9wbXR1IGFuZCBmbmhlX210dV9sb2NrZWQgY29uc2lzdGVudCBhZ2FpbnN0XG4rICogdXBkYXRlX29yX2NyZWF0ZV9mbmhlKCksIHdoaWNoIHNldHMgYm90aCB1bmRlciB0aGUgc2FtZSBsb2NrLlxuKyAqL1xuK3ZvaWQgZm5oZV91cGRhdGVfcG10dShzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZSwgdTMyIG5ldywgdTMyIG9yaWcpXG4re1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmZuaGVfbG9jayk7XG4rXG4rXHRpZiAoZm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQpIHtcbitcdFx0aWYgKG5ldyBcdTAwM2M9IGZuaGUtXHUwMDNlZm5oZV9wbXR1KSB7XG4rXHRcdFx0Zm5oZS1cdTAwM2VmbmhlX3BtdHUgPSBuZXc7XG4rXHRcdFx0Zm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQgPSBmYWxzZTtcbitcdFx0fVxuK1x0fSBlbHNlIGlmIChuZXcgXHUwMDNjIGZuaGUtXHUwMDNlZm5oZV9wbXR1IHx8IG9yaWcgPT0gZm5oZS1cdTAwM2VmbmhlX3BtdHUpIHtcbitcdFx0Zm5oZS1cdTAwM2VmbmhlX3BtdHUgPSBuZXc7XG4rXHR9XG4rXG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZmbmhlX2xvY2spO1xuK31cbitcbiBzdGF0aWMgdm9pZCBfX2lwX2RvX3JlZGlyZWN0KHN0cnVjdCBydGFibGUgKnJ0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG4gXHRcdFx0ICAgICBib29sIGtpbGxfcm91dGUpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTc6MDMuMDQxNzI5OTc2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NjI5NDcwMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogQSBTb2xpZCBDb25jdXJyZW5jeSBCdWcgRml4KipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCdzIGEgY3JpdGljYWwgZml4LCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGEgY29uY3VycmVuY3kgYnVnIHdpdGhpbiB0aGUgYGZpYl9uaF9leGNlcHRpb25gIGhhbmRsaW5nLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBob3cgTVRVIHVwZGF0ZXMgYXJlIG1hbmFnZWQgaW4gdGhlIHByZXNlbmNlIG9mIHRoZXNlIGV4Y2VwdGlvbnMsIGEgY29tbW9uIGFyZWEgZm9yIHN1YnRsZSByYWNlIGNvbmRpdGlvbnMgaW4gYSBuZXR3b3JrIHN0YWNrLlxuXG5QcmV2aW91c2x5LCB0aGUgYGZpYl9uaGNfdXBkYXRlX210dWAgZnVuY3Rpb24gaW4gYG5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY2AgaGFkIGEgZmxhdy4gSXQgd2FzIGl0ZXJhdGluZyB0aHJvdWdoIGV4Y2VwdGlvbiBlbnRyaWVzIHVzaW5nIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYCB3aXRob3V0IGhvbGRpbmcgYSBwcm9wZXIgUkNVIHJlYWQgbG9jayBvciB0aGUgYXBwcm9wcmlhdGUgc3BpbmxvY2sgKGBmbmhlX2xvY2tgKS4gVGhpcyBpcyB3aGVyZSB0aGUgcmFjZSBjb25kaXRpb24gbGlrZWx5IGV4aXN0ZWQsIGEgdGV4dGJvb2sgZXhhbXBsZSBvZiBkYXRhIHJhY2UgdnVsbmVyYWJpbGl0eSwgZXNwZWNpYWxseSBpbiBhIGhlYXZpbHkgdGhyZWFkZWQga2VybmVsIGVudmlyb25tZW50LlxuXG5UaGUgcGF0Y2gncyBzb2x1dGlvbiBpcyBxdWl0ZSBlbGVnYW50IGFuZCBhZGRyZXNzZXMgdGhlIHByb2JsZW0gaGVhZC1vbi4gSXQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYGZuaGVfdXBkYXRlX3BtdHVgIGluIGBuZXQvaXB2NC9yb3V0ZS5jYCwgdG8gZW5jYXBzdWxhdGUgdGhlIFBNVFUgdXBkYXRlIGxvZ2ljLiBDcml0aWNhbGx5LCB0aGlzIG5ldyBmdW5jdGlvbiBub3cgKnByb3Blcmx5KiBhY3F1aXJlcyBgc3Bpbl9sb2NrX2JoKFx1MDAyNmZuaGVfbG9jaylgIGJlZm9yZSBtb2RpZnlpbmcgYGZuaGVfcG10dWAgYW5kIGBmbmhlX210dV9sb2NrZWRgLCBlbnN1cmluZyBhdG9taWMgdXBkYXRlcyBhbmQgcHJldmVudGluZyB0aGUgcmFjZS4gIE1vcmVvdmVyLCBgZmliX25oY191cGRhdGVfbXR1YCBoYXMgYmVlbiB1cGRhdGVkIHRvIGNvcnJlY3RseSB0YWtlIGByY3VfcmVhZF9sb2NrKClgIGFuZCB1c2UgYHJjdV9kZXJlZmVyZW5jZSgpYCB3aGVuIGFjY2Vzc2luZyB0aGUgZXhjZXB0aW9uIGVudHJpZXMuIFRoaXMgaXMgdGhlIGNvcnJlY3QsIHNhZmUgd2F5IHRvIGhhbmRsZSB0aGVzZSBSQ1UgcHJvdGVjdGVkIGRhdGEgc3RydWN0dXJlcy5cblxuSSd2ZSB0YWtlbiBhIHF1aWNrIGxvb2sgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBhY2NpZGVudGFsbHkgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGluaXRpYWxpemF0aW9uIGlzc3Vlcywgb3IgbGVhayBhbnl0aGluZyB0byB1c2VyIHNwYWNlLiBJdCBkb2Vzbid0LiBNeSBhbmFseXNpcyBjb25maXJtcyB0aGF0IHRoaXMgcGF0Y2ggaXMgZW50aXJlbHkgZm9jdXNlZCBvbiBsb2NraW5nIGFuZCBSQ1UgY29ycmVjdG5lc3MuXG5cblRoZXJlZm9yZSwgdGhpcyBwYXRjaCAqZG9lc24ndCogcmVxdWlyZSBLTVNBTi4gVGhlIGJ1ZyBpdCBmaXhlcyBpcyBhIGNvbmN1cnJlbmN5IGJ1Zywgc3BlY2lmaWNhbGx5IGEgZGF0YSByYWNlLCB3aGljaCB3b3VsZCBiZSBkZXRlY3RlZCBieSBLQ1NBTiBvciBMT0NLREVQLiBTdGFuZGFyZCBLQVNBTiBzaG91bGQgYmUgc3VmZmljaWVudCwgYXNzdW1pbmcgYWxsIGNvZGUgcGF0aHMgYXJlIGNvdmVyZWQuICBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb24sIG5vIHVzZXItc3BhY2UgaW5mb3JtYXRpb24gbGVha3MsIGp1c3QgZ29vZCBvbGQtZmFzaGlvbmVkIGNvbmN1cnJlbmN5IGJ1ZyBmaXhpbmcuICBMb29rcyBsaWtlIGEgc29saWQsIGNsZWFuLCBhbmQgaW1wb3J0YW50IGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM0OCwiT3V0cHV0VG9rZW5zIjoxMDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMDo1NzoxMS41MDQ2ODE0MjhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGNvbmN1cnJlbmN5IGlzc3VlIChtaXNzaW5nIFJDVSByZWFkIGxvY2sgYW5kIHNwaW5sb2NrIHByb3RlY3Rpb24pIHdoZW4gdXBkYXRpbmcgUE1UVSBpbiBmaWJfbmhfZXhjZXB0aW9uIGVudHJpZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4sIEtDU0FOLCBvciBMT0NLREVQIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSAobWlzc2luZyBSQ1UgcmVhZCBsb2NrIGFuZCBzcGlubG9jayBwcm90ZWN0aW9uKSB3aGVuIHVwZGF0aW5nIFBNVFUgaW4gZmliX25oX2V4Y2VwdGlvbiBlbnRyaWVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOLCBLQ1NBTiwgb3IgTE9DS0RFUCBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow77x68[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 20:37:43 +0000 UTC FinishedAt: 2026-08-07 20:57:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "594d905195024b228c962627ae5ae7c17bd582a4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "594d905195024b228c962627ae5ae7c17bd582a4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "6db4ecea-60a2-4589-8bee-19c7e2036449" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "fnhe_update_pmtu", "fib_nhc_update_mtu", "fib_sync_mtu" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbmhlX3VwZGF0ZV9wbXR1JiMzNDssCiAgICAmIzM0O2ZpYl9uaGNfdXBkYXRlX210dSYjMzQ7LAogICAgJiMzNDtmaWJfc3luY19tdHUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSAobWlzc2luZyBSQ1UgcmVhZCBsb2NrIGFuZCBzcGlubG9jayBwcm90ZWN0aW9uKSB3aGVuIHVwZGF0aW5nIFBNVFUgaW4gZmliX25oX2V4Y2VwdGlvbiBlbnRyaWVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOLCBLQ1NBTiwgb3IgTE9DS0RFUCBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJUHY0IHJvdXRpbmcgbG9naWMgdG8gY29ycmVjdGx5IHVwZGF0ZSB0aGUgUGF0aCBNVFUgKFBNVFUpIG9mIGZpYiBuZXh0aG9wIGV4Y2VwdGlvbnMgd2hlbiB0aGUgTVRVIG9mIHRoZSBmaXJzdCBob3AgY2hhbmdlcy4gSXQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgZm5oZV91cGRhdGVfcG10dWAgYW5kIG1vZGlmaWVzIGBmaWJfbmhjX3VwZGF0ZV9tdHVgIHRvIHVzZSBSQ1UgYW5kIGEgc3BpbmxvY2suIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgY2hhbmdpbmcgdGhlIE1UVSBvZiBhIG5ldHdvcmsgZGV2aWNlIChlLmcuLCB2aWEgbmV0bGluayBvciBpb2N0bCkgd2hpY2ggdHJpZ2dlcnMgYGZpYl9zeW5jX210dWAgYW5kIGBuZXh0aG9wX3N5bmNfbXR1YC4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMjczMzY0MzE5M2E0ZWFmNTBmZGM2ZWZjMjBiMjAyM2U2Mzk3ZDgwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAyMDo1NjowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9yb3V0ZS5oIGIvaW5jbHVkZS9uZXQvcm91dGUuaFxuaW5kZXggZjkwMTA2ZjM4M2M1Ni4uNDUyOTAxNzdhMzNjNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3JvdXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3JvdXRlLmhcbkBAIC0yNzYsNiAmIzQzOzI3Niw4IEBAIGludCBmaWJfZHVtcF9pbmZvX2ZuaGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLFxuIFx0XHQgICAgICAgdTMyIHRhYmxlX2lkLCBzdHJ1Y3QgZmliX2luZm8gKmZpLFxuIFx0XHQgICAgICAgaW50ICpmYV9pbmRleCwgaW50IGZhX3N0YXJ0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpO1xuIFxuJiM0Mzt2b2lkIGZuaGVfdXBkYXRlX3BtdHUoc3RydWN0IGZpYl9uaF9leGNlcHRpb24gKmZuaGUsIHUzMiBuZXcsIHUzMiBvcmlnKTtcbiYjNDM7XG4gc3RhdGljIGlubGluZSB2b2lkIGlwX3J0X3B1dChzdHJ1Y3QgcnRhYmxlICpydClcbiB7XG4gXHQvKiBkc3RfcmVsZWFzZSgpIGFjY2VwdHMgYSBOVUxMIHBhcmFtZXRlci5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMgYi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcbmluZGV4IDc4Zjg0YWUzZWUxMjAuLjA0ODM1MTliN2ZiMGQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY1xuQEAgLTE4OTUsNDIgJiM0MzsxODk1LDMwIEBAIHN0YXRpYyBpbnQgY2FsbF9maWJfbmhfbm90aWZpZXJzKHN0cnVjdCBmaWJfbmggKm5oLFxuIFx0cmV0dXJuIE5PVElGWV9ET05FO1xuIH1cbiBcbi0vKiBVcGRhdGUgdGhlIFBNVFUgb2YgZXhjZXB0aW9ucyB3aGVuOlxuLSAqIC0gdGhlIG5ldyBNVFUgb2YgdGhlIGZpcnN0IGhvcCBiZWNvbWVzIHNtYWxsZXIgdGhhbiB0aGUgUE1UVVxuLSAqIC0gdGhlIG9sZCBNVFUgd2FzIHRoZSBzYW1lIGFzIHRoZSBQTVRVLCBhbmQgaXQgbGltaXRlZCBkaXNjb3Zlcnkgb2Zcbi0gKiAgIGxhcmdlciBNVFVzIG9uIHRoZSBwYXRoLiBXaXRoIHRoYXQgbGltaXQgcmFpc2VkLCB3ZSBjYW4gbm93XG4tICogICBkaXNjb3ZlciBsYXJnZXIgTVRVc1xuLSAqIEEgc3BlY2lhbCBjYXNlIGlzIGxvY2tlZCBleGNlcHRpb25zLCBmb3Igd2hpY2ggdGhlIFBNVFUgaXMgc21hbGxlclxuLSAqIHRoYW4gdGhlIG1pbmltYWwgYWNjZXB0ZWQgUE1UVTpcbi0gKiAtIGlmIHRoZSBuZXcgTVRVIGlzIGdyZWF0ZXIgdGhhbiB0aGUgUE1UVSwgZG9uJiMzOTt0IG1ha2UgYW55IGNoYW5nZVxuLSAqIC0gb3RoZXJ3aXNlLCB1bmxvY2sgYW5kIHNldCBQTVRVXG4mIzQzOy8qIFdhbGsgdGhlIGV4Y2VwdGlvbnMgb2YgYSBuZXh0aG9wIGFmdGVyIGl0cyBmaXJzdCBob3AgTVRVIGNoYW5nZWQuIFRoZVxuJiM0MzsgKiBjaGFpbiBpcyBSQ1UgcHJvdGVjdGVkIGhlcmUsIHdoaWxlIGZuaGVfdXBkYXRlX3BtdHUoKSB0YWtlcyBmbmhlX2xvY2tcbiYjNDM7ICogZm9yIHRoZSB1cGRhdGUgb2YgZWFjaCBlbnRyeS5cbiAgKi9cbiB2b2lkIGZpYl9uaGNfdXBkYXRlX210dShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCB1MzIgbmV3LCB1MzIgb3JpZylcbiB7XG4gXHRzdHJ1Y3QgZm5oZV9oYXNoX2J1Y2tldCAqYnVja2V0O1xuIFx0aW50IGk7XG4gXG4tXHRidWNrZXQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG5oYy1cdTAwM2VuaGNfZXhjZXB0aW9ucywgMSk7XG4mIzQzO1x0cmN1X3JlYWRfbG9jaygpO1xuJiM0MztcdGJ1Y2tldCA9IHJjdV9kZXJlZmVyZW5jZShuaGMtXHUwMDNlbmhjX2V4Y2VwdGlvbnMpO1xuIFx0aWYgKCFidWNrZXQpXG4tXHRcdHJldHVybjtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRk5IRV9IQVNIX1NJWkU7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlO1xuIFxuLVx0XHRmb3IgKGZuaGUgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGJ1Y2tldFtpXS5jaGFpbiwgMSk7XG4mIzQzO1x0XHRmb3IgKGZuaGUgPSByY3VfZGVyZWZlcmVuY2UoYnVja2V0W2ldLmNoYWluKTtcbiBcdFx0ICAgICBmbmhlO1xuLVx0XHQgICAgIGZuaGUgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGZuaGUtXHUwMDNlZm5oZV9uZXh0LCAxKSkge1xuLVx0XHRcdGlmIChmbmhlLVx1MDAzZWZuaGVfbXR1X2xvY2tlZCkge1xuLVx0XHRcdFx0aWYgKG5ldyBcdTAwM2M9IGZuaGUtXHUwMDNlZm5oZV9wbXR1KSB7XG4tXHRcdFx0XHRcdGZuaGUtXHUwMDNlZm5oZV9wbXR1ID0gbmV3O1xuLVx0XHRcdFx0XHRmbmhlLVx1MDAzZWZuaGVfbXR1X2xvY2tlZCA9IGZhbHNlO1xuLVx0XHRcdFx0fVxuLVx0XHRcdH0gZWxzZSBpZiAobmV3IFx1MDAzYyBmbmhlLVx1MDAzZWZuaGVfcG10dSB8fFxuLVx0XHRcdFx0ICAgb3JpZyA9PSBmbmhlLVx1MDAzZWZuaGVfcG10dSkge1xuLVx0XHRcdFx0Zm5oZS1cdTAwM2VmbmhlX3BtdHUgPSBuZXc7XG4tXHRcdFx0fVxuLVx0XHR9XG4mIzQzO1x0XHQgICAgIGZuaGUgPSByY3VfZGVyZWZlcmVuY2UoZm5oZS1cdTAwM2VmbmhlX25leHQpKVxuJiM0MztcdFx0XHRmbmhlX3VwZGF0ZV9wbXR1KGZuaGUsIG5ldywgb3JpZyk7XG4gXHR9XG4mIzQzO291dDpcbiYjNDM7XHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG4gdm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jXG5pbmRleCAxNTJkOGNiMjhmNjVhLi5iODI0MDFhNmJhZWQ3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvcm91dGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvcm91dGUuY1xuQEAgLTc0MSw2ICYjNDM7NzQxLDM1IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9vcl9jcmVhdGVfZm5oZShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCBfX2JlMzIgZGFkZHIsXG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZmbmhlX2xvY2spO1xuIH1cbiBcbiYjNDM7LyogVXBkYXRlIHRoZSBQTVRVIG9mIGFuIGV4Y2VwdGlvbiB3aGVuOlxuJiM0MzsgKiAtIHRoZSBuZXcgTVRVIG9mIHRoZSBmaXJzdCBob3AgYmVjb21lcyBzbWFsbGVyIHRoYW4gdGhlIFBNVFVcbiYjNDM7ICogLSB0aGUgb2xkIE1UVSB3YXMgdGhlIHNhbWUgYXMgdGhlIFBNVFUsIGFuZCBpdCBsaW1pdGVkIGRpc2NvdmVyeSBvZlxuJiM0MzsgKiAgIGxhcmdlciBNVFVzIG9uIHRoZSBwYXRoLiBXaXRoIHRoYXQgbGltaXQgcmFpc2VkLCB3ZSBjYW4gbm93XG4mIzQzOyAqICAgZGlzY292ZXIgbGFyZ2VyIE1UVXNcbiYjNDM7ICogQSBzcGVjaWFsIGNhc2UgaXMgbG9ja2VkIGV4Y2VwdGlvbnMsIGZvciB3aGljaCB0aGUgUE1UVSBpcyBzbWFsbGVyXG4mIzQzOyAqIHRoYW4gdGhlIG1pbmltYWwgYWNjZXB0ZWQgUE1UVTpcbiYjNDM7ICogLSBpZiB0aGUgbmV3IE1UVSBpcyBncmVhdGVyIHRoYW4gdGhlIFBNVFUsIGRvbiYjMzk7dCBtYWtlIGFueSBjaGFuZ2VcbiYjNDM7ICogLSBvdGhlcndpc2UsIHVubG9jayBhbmQgc2V0IFBNVFVcbiYjNDM7ICpcbiYjNDM7ICogZm5oZV9sb2NrIGtlZXBzIGZuaGVfcG10dSBhbmQgZm5oZV9tdHVfbG9ja2VkIGNvbnNpc3RlbnQgYWdhaW5zdFxuJiM0MzsgKiB1cGRhdGVfb3JfY3JlYXRlX2ZuaGUoKSwgd2hpY2ggc2V0cyBib3RoIHVuZGVyIHRoZSBzYW1lIGxvY2suXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIGZuaGVfdXBkYXRlX3BtdHUoc3RydWN0IGZpYl9uaF9leGNlcHRpb24gKmZuaGUsIHUzMiBuZXcsIHUzMiBvcmlnKVxuJiM0Mzt7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmZuaGVfbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmIChmbmhlLVx1MDAzZWZuaGVfbXR1X2xvY2tlZCkge1xuJiM0MztcdFx0aWYgKG5ldyBcdTAwM2M9IGZuaGUtXHUwMDNlZm5oZV9wbXR1KSB7XG4mIzQzO1x0XHRcdGZuaGUtXHUwMDNlZm5oZV9wbXR1ID0gbmV3O1xuJiM0MztcdFx0XHRmbmhlLVx1MDAzZWZuaGVfbXR1X2xvY2tlZCA9IGZhbHNlO1xuJiM0MztcdFx0fVxuJiM0MztcdH0gZWxzZSBpZiAobmV3IFx1MDAzYyBmbmhlLVx1MDAzZWZuaGVfcG10dSB8fCBvcmlnID09IGZuaGUtXHUwMDNlZm5oZV9wbXR1KSB7XG4mIzQzO1x0XHRmbmhlLVx1MDAzZWZuaGVfcG10dSA9IG5ldztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmZuaGVfbG9jayk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgX19pcF9kb19yZWRpcmVjdChzdHJ1Y3QgcnRhYmxlICpydCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZsb3dpNCAqZmw0LFxuIFx0XHRcdCAgICAgYm9vbCBraWxsX3JvdXRlKVxuIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZuaGVfdXBkYXRlX3BtdHUmIzM0OywKICAgICYjMzQ7ZmliX25oY191cGRhdGVfbXR1JiMzNDssCiAgICAmIzM0O2ZpYl9zeW5jX210dSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSVB2NCByb3V0aW5nIGxvZ2ljIHRvIGNvcnJlY3RseSB1cGRhdGUgdGhlIFBhdGggTVRVIChQTVRVKSBvZiBmaWIgbmV4dGhvcCBleGNlcHRpb25zIHdoZW4gdGhlIE1UVSBvZiB0aGUgZmlyc3QgaG9wIGNoYW5nZXMuIEl0IGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYGZuaGVfdXBkYXRlX3BtdHVgIGFuZCBtb2RpZmllcyBgZmliX25oY191cGRhdGVfbXR1YCB0byB1c2UgUkNVIGFuZCBhIHNwaW5sb2NrLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGJ5IGNoYW5naW5nIHRoZSBNVFUgb2YgYSBuZXR3b3JrIGRldmljZSAoZS5nLiwgdmlhIG5ldGxpbmsgb3IgaW9jdGwpIHdoaWNoIHRyaWdnZXJzIGBmaWJfc3luY19tdHVgIGFuZCBgbmV4dGhvcF9zeW5jX210dWAuIFRoaXMgaXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjI3MzM2NDMxOTNhNGVhZjUwZmRjNmVmYzIwYjIwMjNlNjM5N2Q4MApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMjA6NTY6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9yb3V0ZS5oIGIvaW5jbHVkZS9uZXQvcm91dGUuaAppbmRleCBmOTAxMDZmMzgzYzU2Li40NTI5MDE3N2EzM2M0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9yb3V0ZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3JvdXRlLmgKQEAgLTI3Niw2ICYjNDM7Mjc2LDggQEAgaW50IGZpYl9kdW1wX2luZm9fZm5oZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsCiAJCSAgICAgICB1MzIgdGFibGVfaWQsIHN0cnVjdCBmaWJfaW5mbyAqZmksCiAJCSAgICAgICBpbnQgKmZhX2luZGV4LCBpbnQgZmFfc3RhcnQsIHVuc2lnbmVkIGludCBmbGFncyk7CiAKJiM0Mzt2b2lkIGZuaGVfdXBkYXRlX3BtdHUoc3RydWN0IGZpYl9uaF9leGNlcHRpb24gKmZuaGUsIHUzMiBuZXcsIHUzMiBvcmlnKTsKJiM0MzsKIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF9ydF9wdXQoc3RydWN0IHJ0YWJsZSAqcnQpCiB7CiAJLyogZHN0X3JlbGVhc2UoKSBhY2NlcHRzIGEgTlVMTCBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMgYi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMKaW5kZXggNzhmODRhZTNlZTEyMC4uMDQ4MzUxOWI3ZmIwZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvZmliX3NlbWFudGljcy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYwpAQCAtMTg5NSw0MiAmIzQzOzE4OTUsMzAgQEAgc3RhdGljIGludCBjYWxsX2ZpYl9uaF9ub3RpZmllcnMoc3RydWN0IGZpYl9uaCAqbmgsCiAJcmV0dXJuIE5PVElGWV9ET05FOwogfQogCi0vKiBVcGRhdGUgdGhlIFBNVFUgb2YgZXhjZXB0aW9ucyB3aGVuOgotICogLSB0aGUgbmV3IE1UVSBvZiB0aGUgZmlyc3QgaG9wIGJlY29tZXMgc21hbGxlciB0aGFuIHRoZSBQTVRVCi0gKiAtIHRoZSBvbGQgTVRVIHdhcyB0aGUgc2FtZSBhcyB0aGUgUE1UVSwgYW5kIGl0IGxpbWl0ZWQgZGlzY292ZXJ5IG9mCi0gKiAgIGxhcmdlciBNVFVzIG9uIHRoZSBwYXRoLiBXaXRoIHRoYXQgbGltaXQgcmFpc2VkLCB3ZSBjYW4gbm93Ci0gKiAgIGRpc2NvdmVyIGxhcmdlciBNVFVzCi0gKiBBIHNwZWNpYWwgY2FzZSBpcyBsb2NrZWQgZXhjZXB0aW9ucywgZm9yIHdoaWNoIHRoZSBQTVRVIGlzIHNtYWxsZXIKLSAqIHRoYW4gdGhlIG1pbmltYWwgYWNjZXB0ZWQgUE1UVToKLSAqIC0gaWYgdGhlIG5ldyBNVFUgaXMgZ3JlYXRlciB0aGFuIHRoZSBQTVRVLCBkb24mIzM5O3QgbWFrZSBhbnkgY2hhbmdlCi0gKiAtIG90aGVyd2lzZSwgdW5sb2NrIGFuZCBzZXQgUE1UVQomIzQzOy8qIFdhbGsgdGhlIGV4Y2VwdGlvbnMgb2YgYSBuZXh0aG9wIGFmdGVyIGl0cyBmaXJzdCBob3AgTVRVIGNoYW5nZWQuIFRoZQomIzQzOyAqIGNoYWluIGlzIFJDVSBwcm90ZWN0ZWQgaGVyZSwgd2hpbGUgZm5oZV91cGRhdGVfcG10dSgpIHRha2VzIGZuaGVfbG9jawomIzQzOyAqIGZvciB0aGUgdXBkYXRlIG9mIGVhY2ggZW50cnkuCiAgKi8KIHZvaWQgZmliX25oY191cGRhdGVfbXR1KHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGMsIHUzMiBuZXcsIHUzMiBvcmlnKQogewogCXN0cnVjdCBmbmhlX2hhc2hfYnVja2V0ICpidWNrZXQ7CiAJaW50IGk7CiAKLQlidWNrZXQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG5oYy0mZ3Q7bmhjX2V4Y2VwdGlvbnMsIDEpOwomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CWJ1Y2tldCA9IHJjdV9kZXJlZmVyZW5jZShuaGMtJmd0O25oY19leGNlcHRpb25zKTsKIAlpZiAoIWJ1Y2tldCkKLQkJcmV0dXJuOwomIzQzOwkJZ290byBvdXQ7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgRk5IRV9IQVNIX1NJWkU7IGkmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlOwogCi0JCWZvciAoZm5oZSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoYnVja2V0W2ldLmNoYWluLCAxKTsKJiM0MzsJCWZvciAoZm5oZSA9IHJjdV9kZXJlZmVyZW5jZShidWNrZXRbaV0uY2hhaW4pOwogCQkgICAgIGZuaGU7Ci0JCSAgICAgZm5oZSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoZm5oZS0mZ3Q7Zm5oZV9uZXh0LCAxKSkgewotCQkJaWYgKGZuaGUtJmd0O2ZuaGVfbXR1X2xvY2tlZCkgewotCQkJCWlmIChuZXcgJmx0Oz0gZm5oZS0mZ3Q7Zm5oZV9wbXR1KSB7Ci0JCQkJCWZuaGUtJmd0O2ZuaGVfcG10dSA9IG5ldzsKLQkJCQkJZm5oZS0mZ3Q7Zm5oZV9tdHVfbG9ja2VkID0gZmFsc2U7Ci0JCQkJfQotCQkJfSBlbHNlIGlmIChuZXcgJmx0OyBmbmhlLSZndDtmbmhlX3BtdHUgfHwKLQkJCQkgICBvcmlnID09IGZuaGUtJmd0O2ZuaGVfcG10dSkgewotCQkJCWZuaGUtJmd0O2ZuaGVfcG10dSA9IG5ldzsKLQkJCX0KLQkJfQomIzQzOwkJICAgICBmbmhlID0gcmN1X2RlcmVmZXJlbmNlKGZuaGUtJmd0O2ZuaGVfbmV4dCkpCiYjNDM7CQkJZm5oZV91cGRhdGVfcG10dShmbmhlLCBuZXcsIG9yaWcpOwogCX0KJiM0MztvdXQ6CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwogfQogCiB2b2lkIGZpYl9zeW5jX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgb3JpZ19tdHUpCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9yb3V0ZS5jIGIvbmV0L2lwdjQvcm91dGUuYwppbmRleCAxNTJkOGNiMjhmNjVhLi5iODI0MDFhNmJhZWQ3IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9yb3V0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3JvdXRlLmMKQEAgLTc0MSw2ICYjNDM7NzQxLDM1IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9vcl9jcmVhdGVfZm5oZShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCBfX2JlMzIgZGFkZHIsCiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtmbmhlX2xvY2spOwogfQogCiYjNDM7LyogVXBkYXRlIHRoZSBQTVRVIG9mIGFuIGV4Y2VwdGlvbiB3aGVuOgomIzQzOyAqIC0gdGhlIG5ldyBNVFUgb2YgdGhlIGZpcnN0IGhvcCBiZWNvbWVzIHNtYWxsZXIgdGhhbiB0aGUgUE1UVQomIzQzOyAqIC0gdGhlIG9sZCBNVFUgd2FzIHRoZSBzYW1lIGFzIHRoZSBQTVRVLCBhbmQgaXQgbGltaXRlZCBkaXNjb3Zlcnkgb2YKJiM0MzsgKiAgIGxhcmdlciBNVFVzIG9uIHRoZSBwYXRoLiBXaXRoIHRoYXQgbGltaXQgcmFpc2VkLCB3ZSBjYW4gbm93CiYjNDM7ICogICBkaXNjb3ZlciBsYXJnZXIgTVRVcwomIzQzOyAqIEEgc3BlY2lhbCBjYXNlIGlzIGxvY2tlZCBleGNlcHRpb25zLCBmb3Igd2hpY2ggdGhlIFBNVFUgaXMgc21hbGxlcgomIzQzOyAqIHRoYW4gdGhlIG1pbmltYWwgYWNjZXB0ZWQgUE1UVToKJiM0MzsgKiAtIGlmIHRoZSBuZXcgTVRVIGlzIGdyZWF0ZXIgdGhhbiB0aGUgUE1UVSwgZG9uJiMzOTt0IG1ha2UgYW55IGNoYW5nZQomIzQzOyAqIC0gb3RoZXJ3aXNlLCB1bmxvY2sgYW5kIHNldCBQTVRVCiYjNDM7ICoKJiM0MzsgKiBmbmhlX2xvY2sga2VlcHMgZm5oZV9wbXR1IGFuZCBmbmhlX210dV9sb2NrZWQgY29uc2lzdGVudCBhZ2FpbnN0CiYjNDM7ICogdXBkYXRlX29yX2NyZWF0ZV9mbmhlKCksIHdoaWNoIHNldHMgYm90aCB1bmRlciB0aGUgc2FtZSBsb2NrLgomIzQzOyAqLwomIzQzO3ZvaWQgZm5oZV91cGRhdGVfcG10dShzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZSwgdTMyIG5ldywgdTMyIG9yaWcpCiYjNDM7ewomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtmbmhlX2xvY2spOwomIzQzOwomIzQzOwlpZiAoZm5oZS0mZ3Q7Zm5oZV9tdHVfbG9ja2VkKSB7CiYjNDM7CQlpZiAobmV3ICZsdDs9IGZuaGUtJmd0O2ZuaGVfcG10dSkgewomIzQzOwkJCWZuaGUtJmd0O2ZuaGVfcG10dSA9IG5ldzsKJiM0MzsJCQlmbmhlLSZndDtmbmhlX210dV9sb2NrZWQgPSBmYWxzZTsKJiM0MzsJCX0KJiM0MzsJfSBlbHNlIGlmIChuZXcgJmx0OyBmbmhlLSZndDtmbmhlX3BtdHUgfHwgb3JpZyA9PSBmbmhlLSZndDtmbmhlX3BtdHUpIHsKJiM0MzsJCWZuaGUtJmd0O2ZuaGVfcG10dSA9IG5ldzsKJiM0MzsJfQomIzQzOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2ZuaGVfbG9jayk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgX19pcF9kb19yZWRpcmVjdChzdHJ1Y3QgcnRhYmxlICpydCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZsb3dpNCAqZmw0LAogCQkJICAgICBib29sIGtpbGxfcm91dGUpCiB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNTEKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQTVRVIFVwZGF0ZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYGZpYl9uaGNfdXBkYXRlX210dWAgaW4gYG5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY2AgYW5kIGFkZGluZyBgZm5oZV91cGRhdGVfcG10dWAgdG8gYG5ldC9pcHY0L3JvdXRlLmNgLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBob3cgdGhlIFBhdGggTVRVIChQTVRVKSBpcyB1cGRhdGVkIGZvciBleGNlcHRpb25zIHdoZW4gdGhlIE1UVSBvZiB0aGUgZmlyc3QgaG9wIGNoYW5nZXMuIEdvb2QuIFNtYXJ0IHRvIHByb3RlY3QgYGZuaGVfcG10dWAgYW5kIGBmbmhlX210dV9sb2NrZWRgIHdpdGggUkNVIGFuZCBhIHNwaW5sb2NrLCBgZm5oZV9sb2NrYCDigJMgdGhhdCYjMzk7cyBjcnVjaWFsIGZvciBjb25jdXJyZW5jeSwgZXNwZWNpYWxseSBpbiByb3V0aW5nLgoKUmlnaHQsIHNvIGxldCYjMzk7cyBkaWcgaW50byBgZmliX25oY191cGRhdGVfbXR1YCBhbmQgdGhlIG5ldyBgZm5oZV91cGRhdGVfcG10dWAuIEltbWVkaWF0ZWx5LCBJIHNlZSB0aGlzIGlzIGFsbCBJUHY0IHJvdXRpbmcgbG9naWMsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGRlZmluaXRlbHkgaW4gdGhlIGNyaXRpY2FsIHBhdGguIEdvb2Qgc3BvdC4gYGZpYl9uaGNfdXBkYXRlX210dWAgaXMgY2FsbGVkIGZyb20gYGZpYl9zeW5jX210dWAsIHdoaWNoIGl0c2VsZiBnZXRzIGNhbGxlZCB3aGVuIGEgZGV2aWNlJiMzOTtzIE1UVSBjaGFuZ2VzLiBHaXZlbiB0aGUgZGV2aWNlIE1UVSBjaGFuZ2UgdHJpZ2dlcnMgdGhpcyBwYXRoLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gUHJvbWlzaW5nLCBhbmQgd29ydGggYSB0YXJnZXRlZCBmdXp6aW5nIGVmZm9ydC4KCk5vdywgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgaWYgdGhlc2UgZnVuY3Rpb25zIGFyZSBleHBvcnRlZC4gYGZpYl9uaGNfdXBkYXRlX210dWAgaXMgYWxyZWFkeSB0aGVyZSBhbmQsIGFzIGV4cGVjdGVkLCBgZm5oZV91cGRhdGVfcG10dWAgaXMgbmV3LiBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbGVycyBvZiBgZmliX25oY191cGRhdGVfbXR1YCwgc2luY2UgdGhhdCYjMzk7cyB0aGUgZXN0YWJsaXNoZWQgY29kZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGJlaW5nIGFmZmVjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpYl9uaGNfdXBkYXRlX210dSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9pcF9maWIuaD00OTU9dm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KTtcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oOjQ5Njp2b2lkIGZpYl9uaGNfdXBkYXRlX210dShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCB1MzIgbmV3LCB1MzIgb3JpZyk7XG5pbmNsdWRlL25ldC9pcF9maWIuaC00OTctXG4tLVxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jPTE4Njk9c3RhdGljIGludCBjYWxsX2ZpYl9uaF9ub3RpZmllcnMoc3RydWN0IGZpYl9uaCAqbmgsXG4tLVxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5MDEtICovXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM6MTkwMjp2b2lkIGZpYl9uaGNfdXBkYXRlX210dShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCB1MzIgbmV3LCB1MzIgb3JpZylcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0xOTAzLXtcbi0tXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmM9MTkyND12b2lkIGZpYl9zeW5jX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgb3JpZ19tdHUpXG4tLVxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5MzAtXHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UobmgtXHUwMDNlZmliX25oX2RldiAhPSBkZXYpO1xubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjE5MzE6XHRcdGZpYl9uaGNfdXBkYXRlX210dShcdTAwMjZuaC1cdTAwM2VuaF9jb21tb24sIGRldi1cdTAwM2VtdHUsIG9yaWdfbXR1KTtcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYy0xOTMyLVx0fVxuLS1cbm5ldC9pcHY0L25leHRob3AuYz0zOTU1PXN0YXRpYyB2b2lkIG5leHRob3Bfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0zOTY1LVx0XHRcdGlmIChuaGktXHUwMDNlZmFtaWx5ID09IEFGX0lORVQpXG5uZXQvaXB2NC9uZXh0aG9wLmM6Mzk2NjpcdFx0XHRcdGZpYl9uaGNfdXBkYXRlX210dShcdTAwMjZuaGktXHUwMDNlZmliX25oYywgZGV2LVx1MDAzZW10dSxcbm5ldC9pcHY0L25leHRob3AuYy0zOTY3LVx0XHRcdFx0XHRcdCAgIG9yaWdfbXR1KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTE4CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBNVFUgU3luY2hyb25pemF0aW9uKioKCk9rYXksIHNvIHRoZSBgZmliX3N5bmNfbXR1YCBhbmQgYG5leHRob3Bfc3luY19tdHVgIGZ1bmN0aW9ucyBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIHRoaXMgY29kZSwgYW5kIHRoZXkmIzM5O3JlIHRyaWdnZXJlZCBieSBuZXRkZXYgTVRVIGNoYW5nZXMg4oCTIHNwZWNpZmljYWxseSB0aGUgYE5FVERFVl9DSEFOR0VNVFVgIGV2ZW50LiBUaGF0IG1ha2VzIHRoaXMgYSBwcmV0dHkgYWNjZXNzaWJsZSBhbmQgcG90ZW50aWFsbHkgZnJ1aXRmdWwgYXJlYSBmb3IgZnV6emluZy4gRGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0LgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNpdHVhdGlvbiB3aGVyZSBhIG5ldHdvcmsgZGV2aWNlJiMzOTtzIE1UVSBjaGFuZ2UgbmVlZHMgdG8gYmUgcHJvcGFnYXRlZCB0byB0aGUgZm9yd2FyZGluZyBpbmZvcm1hdGlvbiBiYXNlIChGSUIpIGFuZCBuZXh0IGhvcCB0YWJsZXMgdG8gZW5zdXJlIGNvbnNpc3RlbnQgcGFja2V0IHNpemUgaGFuZGxpbmcuIEEgbWlzY2FsY3VsYXRpb24gb3IgaW5jb25zaXN0ZW5jeSBoZXJlIGNvdWxkIGxlYWQgdG8gZnJhZ21lbnRhdGlvbiBpc3N1ZXMsIHBhdGggTVRVIGRpc2NvdmVyeSBwcm9ibGVtcywgb3IgZXZlbiBwb3RlbnRpYWwgZGVuaWFsLW9mLXNlcnZpY2UgdnVsbmVyYWJpbGl0aWVzLgoKVGhlIHByaW1hcnkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZTogYGZpYl9uaGNfdXBkYXRlX210dWAsIGBmbmhlX3VwZGF0ZV9wbXR1YCwgYW5kIG9mIGNvdXJzZSBgZmliX3N5bmNfbXR1YCBhbmQgYG5leHRob3Bfc3luY19tdHVgIHRoZW1zZWx2ZXMuIFRoZXNlIGFyZSB0aGUgd29ya2hvcnNlcyBkb2luZyB0aGUgYWN0dWFsIHVwZGF0ZXMgYW5kIHN5bmNocm9uaXphdGlvbi4KCkkgc2hvdWxkIGFsc28gY2hlY2sgYG5ldC9pcHY0L0tjb25maWdgIGZvciBhbnkgZmVhdHVyZSBmbGFncyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgYmVoYXZpb3Igb2YgdGhpcyBjb2RlLiBgSVBfUk9VVEVfTVVMVElQQVRIYCBpcyBhIHN0cm9uZyBtYXliZTsgaWYgbXVsdGlwbGUgcGF0aHMgYXJlIGludm9sdmVkLCB0aGUgTVRVIHN5bmNocm9uaXphdGlvbiBsb2dpYyB3aWxsIGxpa2VseSBiZSBtb3JlIGNvbXBsZXguIGBJUF9ST1VURV9DTEFTU0lEYCBpcyBhbm90aGVyIG9uZSB0byBjb25zaWRlci4KCkVzc2VudGlhbGx5LCBJJiMzOTttIHRoaW5raW5nIHRoYXQgaWYgSSBjYW4gcmVsaWFibHkgdHJpZ2dlciBgTkVUREVWX0NIQU5HRU1UVWAgZXZlbnRzIGFuZCBjYXJlZnVsbHkgY3JhZnQgdGhlIHBhcmFtZXRlcnMsIEkgY2FuIHN0YXJ0IHByb2JpbmcgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIE1UVSBzeW5jaHJvbml6YXRpb24gcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBGSUIsIG5leHQgaG9wcywgYW5kIHBhdGggTVRVIGRpc2NvdmVyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfUk9VVEUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz02Mz1jb25maWcgSVBfTVVMVElQTEVfVEFCTEVTXG4tLVxubmV0L2lwdjQvS2NvbmZpZy03OS1cbm5ldC9pcHY0L0tjb25maWc6ODA6Y29uZmlnIElQX1JPVVRFX01VTFRJUEFUSFxubmV0L2lwdjQvS2NvbmZpZy04MS1cdGJvb2wgXCYjMzQ7SVA6IGVxdWFsIGNvc3QgbXVsdGlwYXRoXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy05MS1cbm5ldC9pcHY0L0tjb25maWc6OTI6Y29uZmlnIElQX1JPVVRFX1ZFUkJPU0Vcbm5ldC9pcHY0L0tjb25maWctOTMtXHRib29sIFwmIzM0O0lQOiB2ZXJib3NlIHJvdXRlIG1vbml0b3JpbmdcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTEwMi1cbm5ldC9pcHY0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9ST1VURV9DTEFTU0lEXG5uZXQvaXB2NC9LY29uZmlnLTEwNC1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzA1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBJUHY0IFJvdXRpbmcgQ29kZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIElQdjQgcm91dGluZyBpbXBsZW1lbnRhdGlvbi4gV2hlcmUgZG8gSSBzdGFydD8gUmlnaHQsIHRoZSBjb3JlIGxvZ2ljIHNob3VsZCBiZSBpbiBgbmV0L2lwdjQvZmliX3NlbWFudGljcy5jYCBhbmQgYG5ldC9pcHY0L3JvdXRlLmNgLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBBbmQgc2luY2UgdGhpcyBpcyBJUHY0LCBpdCYjMzk7cyBjb21waWxlZCBpbiB1bmNvbmRpdGlvbmFsbHk7IG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgY29uZGl0aW9uYWxzLiBOb3csIHRvIGJlIGNvbXBsZXRlbHkgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBwaWVjZXMsIEkgc2hvdWxkIHZlcmlmeSB0aGUgYnVpbGQgcHJvY2Vzcy4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgYG5ldC9pcHY0L01ha2VmaWxlYC4gVGhhdCBzaG91bGQgY29uZmlybSBob3cgdGhlc2UgZmlsZXMgYXJlIGhhbmRsZWQgZHVyaW5nIHRoZSBjb21waWxhdGlvbiBzdGFnZSBhbmQgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIG1vZHVsZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpYl9zZW1hbnRpY3MubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE0LVx0ICAgICB1ZHBfb2ZmbG9hZC5vIGFycC5vIGljbXAubyBkZXZpbmV0Lm8gYWZfaW5ldC5vIGlnbXAubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTU6XHQgICAgIGZpYl9mcm9udGVuZC5vIGZpYl9zZW1hbnRpY3MubyBmaWJfdHJpZS5vIGZpYl9ub3RpZmllci5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNi1cdCAgICAgaW5ldF9mcmFnbWVudC5vIHBpbmcubyBpcF90dW5uZWxfY29yZS5vIGdyZV9vZmZsb2FkLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjcxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKklQdjQgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCBzbyB0aGUgYnVpbGQgcHJvY2VzcyBleHBsaWNpdGx5IGluY2x1ZGVzIElQdjQgc3VwcG9ydCwgbm8gbWF0dGVyIHdoYXQuIFRoYXQgbWVhbnMsIHRvIGdldCB0aGluZ3MgdXAgYW5kIHJ1bm5pbmcsIGFsbCBJICpyZWFsbHkqIG5lZWQgdG8gZm9jdXMgb24gaXMgdGhlIGBJTkVUYCBjb25maWd1cmF0aW9uLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4KCk5vdywgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQgdGhhdCBgZm5oZV91cGRhdGVfcG10dWAgZnVuY3Rpb24gaXMgYWN0dWFsbHkgZXhwb3NlZCBhbmQgYXZhaWxhYmxlIGZvciB1c2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBjYW4gaW50ZXJmYWNlIHdpdGggaXQgaWYgbmVjZXNzYXJ5LiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBleHBvcnRzIHdpbGwgY29uZmlybSB0aGlzIGZvciBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLipmbmhlX3VwZGF0ZV9wbXR1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg4NAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLi4uCgoqKkFuYWx5emluZyBGdW5jdGlvbiBEZWNsYXJhdGlvbiBhbmQgRXhwb3J0IFN0YXR1cyoqCgpBbHJpZ2h0LCBzbyB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24sIGl0JiMzOTtzIG5vdCBhY3R1YWxseSBleHBvcnRlZCBhcyBzdWNoLCBtZWFuaW5nIGl0JiMzOTtzIG5vdCBkZWZpbmVkIHdpdGhpbiBhIGAuY2AgZmlsZSBhbmQgdGhlbiBkZWNsYXJlZCBpbiBhIGhlYWRlciBmaWxlIGZvciBvdGhlciBtb2R1bGVzIHRvIHVzZS4gSXTigJlzIGRlY2xhcmVkLCBhbmQgdGhlcmVmb3JlIGRlZmluZWQgd2l0aGluIGBpbmNsdWRlL25ldC9yb3V0ZS5oYC4gVGhhdCBtYWtlcyBpdCBhIG5vbi1zdGF0aWMgZnVuY3Rpb24uIFNvLCBpdCYjMzk7cyBub3QgYSB0cnVseSBzdGF0aWMgZnVuY3Rpb247IGl0IGhhcyB2aXNpYmlsaXR5IHdpdGhpbiB0aGUgbW9kdWxlIGl0IGJlbG9uZ3MgdG8sIGJ1dCBpc27igJl0ICpleHBsaWNpdGx5KiBleHBvcnRlZCBmb3IgZXh0ZXJuYWwgdXNlLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGFjY2VzcyBjb250cm9sLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGlmIGBmaWJfbmhjX3VwZGF0ZV9tdHVgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgaXRzIGRlZmluaXRpb24gYW5kIHZpc2liaWxpdHkgYXJlIGFzIHN1c3BlY3RlZC4gVGhpcyBzdGVwIGlzIGNydWNpYWwgZm9yIHZlcmlmeWluZyBob3cgaXQmIzM5O3MgaW50ZW5kZWQgdG8gYmUgdXRpbGl6ZWQgd2l0aGluIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qZmliX25oY191cGRhdGVfbXR1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE3NQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIE5vbi1FeHBvcnRlZCwgTm9uLVN0YXRpYyBWYXJpYWJsZXMqKgoKQWxyaWdodCwgSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlYmFzZSBhbmQgSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBzb21ldGhpbmcgdGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3Q6IGEgdmFyaWFibGUgdGhhdCYjMzk7cyAqbm90KiBwYXJ0IG9mIHRoZSBleHBvcnRlZCBBUEksIHlldCBhbHNvIGlzbiYjMzk7dCBkZWNsYXJlZCBgc3RhdGljYC4gVGhpcyBpcyBhIGNsYXNzaWMgcG90ZW50aWFsIHBvaW50IG9mIGNvbmZ1c2lvbiBhbmQvb3IgdW5pbnRlbnRpb25hbCBhY2Nlc3MuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hlcmUgaXMgdGhpcyB2YXJpYWJsZSBiZWluZyB1c2VkPyBJcyBpdCB0cnVseSAqaW50ZW5kZWQqIHRvIGJlIGhpZGRlbj8gQW5kIGlmIHNvLCB3aHkgaXMgaXQgbm9uLXN0YXRpYz8gSXMgaXQgdXNlZCBpbiB0aGlzIGZpbGUgaW4gd2F5cyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSBsb2NhbCB0byB0aGUgZmlsZSwgYW5kIHNob3VsZCB0aHVzIGJlIHN0YXRpYz8gT3IgaXMgaXQgZ2xvYmFsbHkgYWNjZXNzZWQgaW4gYW5vdGhlciBwbGFjZT8KClNvLCBJIHRoaW5rIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBoZXJlIGlzIHRvIGNvbmZpcm0gd2hldGhlciBgZmliX3N5bmNfbXR1YCBpcyBleHBvcnRlZC4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgbGlua2VyIHRlbGxzIHVzIHNvbWV0aGluZyBoZXJlLiBUaW1lIHRvIGNoZWNrIHRoZSBzeW1ib2wgdGFibGUhIEkmIzM5O2xsIHF1aWNrbHkgdXNlIG15IHN0YW5kYXJkIHRvb2xzIChubSwgb2JqZHVtcCwgb3IgbWF5YmUgZXZlbiBncmVwKSB0byBwaW5wb2ludCBpdHMgc3RhdHVzLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBleHBvcnQsIGp1c3QgdG8gYmUgc3VyZS4gSSYjMzk7bSBnb2luZyB0byB0cmFjayBpdCBkb3duLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmZpYl9zeW5jX210dSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0OTYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaWdnaW5nIGludG8gRXhwb3J0ZWQgVmFyaWFibGVzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBleHBvcnRhYmlsaXR5LiBJJiMzOTt2ZSBub3RpY2VkIHNvbWV0aGluZywgYW5kIGl0JiMzOTtzIGdvdCBtZSBjdXJpb3VzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgb24gdmFyaWFibGVzIHRoYXQgYXJlbiYjMzk7dCAqZXhwbGljaXRseSogZmxhZ2dlZCBmb3IgZXhwb3J0IChub24tc3RhdGljLCBieSB0aGUgbG9va3Mgb2YgaXQpLiBUaGlzIG1lYW5zIHRoZXkgYXJlbiYjMzk7dCBkaXJlY3RseSBhdmFpbGFibGUgb3V0c2lkZSB0aGVpciBjb250YWluaW5nIHNjb3BlIGJ5IGRlZmF1bHQuIFRoaXMgcmFpc2VzIGFuIGludGVyZXN0aW5nIHF1ZXN0aW9uIGFib3V0IGFjY2Vzc2liaWxpdHkgYW5kIGhvdyB0aGVzZSB2YXJpYWJsZXMgYXJlIHVzZWQuCgpUbyBtYWtlIHN1cmUgSSBmdWxseSB1bmRlcnN0YW5kLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYG5leHRob3Bfc3luY19tdHVgIGlzIGV4cG9ydGVkLiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgdGhlIGNvbnRleHQgb2YgaXRzIHVzZSB3aXRoaW4gdGhlIGxhcmdlciBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qbmV4dGhvcF9zeW5jX210dSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MjYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBkcmF3aW5nIG9uIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgTVRVIFN5bmNocm9uaXphdGlvbiBhbmQgU2NvcGUqKgoKQWxyaWdodCwgc28gdGhlc2UgZnVuY3Rpb25zIGFyZW4mIzM5O3QgYmVpbmcgZXhwb3J0ZWQsIGJ1dCB0aGV5JiMzOTtyZSAqYWxzbyogbm90IGRlY2xhcmVkIGFzIHN0YXRpYy4gSW50ZXJlc3RpbmcuIFRoYXQgc3VnZ2VzdHMgdGhleSBoYXZlIGludGVybmFsIHVzZSB3aXRoaW4gdGhlIGxpYnJhcnkgb3IgbW9kdWxlLCBidXQgYXJlIHBvdGVudGlhbGx5IGFjY2Vzc2libGUgaW4gYSB3YXkgdGhhdCBnb2VzIGJleW9uZCBhIHN0cmljdGx5IHByaXZhdGUgc2NvcGUuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoYXQgYXNzdW1wdGlvbi4KClRoZSBrZXkgZm9jdXMgc2VlbXMgdG8gYmUgb24gdGhlc2UgTVRVLXJlbGF0ZWQgZnVuY3Rpb25zOiBgZmliX25oY191cGRhdGVfbXR1YCwgYGZuaGVfdXBkYXRlX3BtdHVgLCBhbmQgYGZpYl9zeW5jX210dWAuIFRoZXNlIGFyZSB0aGUgY29yZSByb3V0aW5lcyByZXNwb25zaWJsZSBmb3Igc3luY2hyb25pemluZyBNVFUgKE1heGltdW0gVHJhbnNtaXNzaW9uIFVuaXQpIHZhbHVlcyBhY3Jvc3MgdGhlIGZvcndhcmRpbmcgaW5mb3JtYXRpb24gYmFzZSAoRklCKSBhbmQgcmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMuIE1ha2VzIHNlbnNlOyBNVFUgaW5jb25zaXN0ZW5jaWVzIGNhbiBjYXVzZSBzZXJpb3VzIHBhY2tldCBmcmFnbWVudGF0aW9uIGlzc3Vlcy4KCk5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uLCBhbmQgdGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBkaXZlIGEgbGl0dGxlIGRlZXBlcjogSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiBgbmV4dGhvcF9zeW5jX210dWAuIElzIHRoYXQgZnVuY3Rpb24gc3RhdGljPyBJZiBpdCAqaXMqIHN0YXRpYywgdGhlbiBpdHMgdXNlIGlzIHN0cmljdGx5IGxpbWl0ZWQgdG8gdGhlIGZpbGUgaXQmIzM5O3MgZGVmaW5lZCBpbiwgd2hpY2ggc2ltcGxpZmllcyB0aGUgb3ZlcmFsbCBtZW50YWwgbW9kZWwgYSBiaXQuIElmIGl0JiMzOTtzICpub3QqIHN0YXRpYywgdGhlbiBpdCYjMzk7cyBhY2Nlc3NpYmxlIGF0IG1vZHVsZSBzY29wZSBvciBtYXliZSBldmVuIGdsb2JhbGx5LCBhbmQgd2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgZnVuY3Rpb25zLiBJJiMzOTtsbCBjaGVjayB0aGF0IG5leHQuIFRoYXQmIzM5O3Mga2V5IGZvciBkZXBlbmRlbmN5IGFuZCBzY29wZSBtYXBwaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wX3N5bmNfbXR1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25leHRob3AuYz0zOTA4PXN0YXRpYyBpbnQgcnRtX2dldF9uZXh0aG9wX2J1Y2tldChzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzk1NC1cbm5ldC9pcHY0L25leHRob3AuYzozOTU1OnN0YXRpYyB2b2lkIG5leHRob3Bfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxubmV0L2lwdjQvbmV4dGhvcC5jLTM5NTYte1xuLS1cbm5ldC9pcHY0L25leHRob3AuYz0zOTczPXN0YXRpYyBpbnQgbmhfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzk4OS1cdFx0aW5mb19leHQgPSBwdHI7XG5uZXQvaXB2NC9uZXh0aG9wLmM6Mzk5MDpcdFx0bmV4dGhvcF9zeW5jX210dShkZXYsIGluZm9fZXh0LVx1MDAzZWV4dC5tdHUpO1xubmV0L2lwdjQvbmV4dGhvcC5jLTM5OTEtXHRcdHJ0X2NhY2hlX2ZsdXNoKGRldl9uZXQoZGV2KSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczODgKCQkJCQkJCW91dHB1dDogMTk0CgkJCQkJCQl0aG91Z2h0czogNDA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVB2NCBQTVRVIFVwZGF0ZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBtb2RpZnlpbmcgdGhlIElQdjQgcm91dGluZyBsb2dpYyBmb3IgUGF0aCBNVFUgKFBNVFUpIHVwZGF0ZXMgaW4gZmliIG5leHRob3AgZXhjZXB0aW9ucy4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgZnVuY3Rpb25zIGBmbmhlX3VwZGF0ZV9wbXR1YCBhbmQgdGhlIG1vZGlmaWVkIGBmaWJfbmhjX3VwZGF0ZV9tdHVgLiBUaGUgY29kZSBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgTVRVIG9mIGEgbmV0d29yayBkZXZpY2UgY2hhbmdlcywgd2hpY2ggdGhlbiBraWNrcyBvZmYgYGZpYl9zeW5jX210dWAgYW5kIGBuZXh0aG9wX3N5bmNfbXR1YC4gR29vZC4gSXQmIzM5O3MgY29yZSBuZXR3b3JraW5nIHN0dWZmLCBzbyBkZWZpbml0ZWx5IGZ1enppbmcgdGFyZ2V0cy4KCkkgc2VlIHRoYXQgYG5leHRob3Bfc3luY19tdHVgIGlzIHN0YXRpYyBzbyB3ZSBjYW4gb21pdCB0aGlzIGZyb20gYW55IGFuYWx5c2lzLgoKTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBmdW5jdGlvbiB2aXNpYmlsaXR5LiBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUuIE9rYXksIGhlcmUgYXJlIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzOgoqICAgYHZvaWQgZmliX25oY191cGRhdGVfbXR1KHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGMsIHUzMiBuZXcsIHUzMiBvcmlnKWAgLSBOb3Qgc3RhdGljLiBHb29kIHRvIGtub3cuCiogICBgdm9pZCBmbmhlX3VwZGF0ZV9wbXR1KHN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlLCB1MzIgbmV3LCB1MzIgb3JpZylgIC0gTm90IHN0YXRpYy4gQW5kIGBmbmhlX3VwZGF0ZV9wbXR1YCBpcyB3aGF0JiMzOTtzIG5ld2x5IGludHJvZHVjZWQuCiogICBgdm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KWAgLSBOb3Qgc3RhdGljLgoKYElORVRgIGlzIG9idmlvdXNseSByZWxldmFudCAoSVB2NCksIGJ1dCBJJiMzOTttIGdvaW5nIHRvIGxlYXZlIHRoZSBjb25maWcgc2VjdGlvbiBlbXB0eSBzaW5jZSBpdCYjMzk7cyBwcm9iYWJseSBlbmFibGVkIGJ5IGRlZmF1bHQuIE9rYXksIEkgaGF2ZSBldmVyeXRoaW5nIEkgbmVlZCwgYW5kIG5vdyBJJiMzOTtsbCBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zm5oZV91cGRhdGVfcG10dSYjMzQ7LAogICAgJiMzNDtmaWJfbmhjX3VwZGF0ZV9tdHUmIzM0OywKICAgICYjMzQ7ZmliX3N5bmNfbXR1JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJUHY0IHJvdXRpbmcgbG9naWMgdG8gY29ycmVjdGx5IHVwZGF0ZSB0aGUgUGF0aCBNVFUgKFBNVFUpIG9mIGZpYiBuZXh0aG9wIGV4Y2VwdGlvbnMgd2hlbiB0aGUgTVRVIG9mIHRoZSBmaXJzdCBob3AgY2hhbmdlcy4gSXQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgZm5oZV91cGRhdGVfcG10dWAgYW5kIG1vZGlmaWVzIGBmaWJfbmhjX3VwZGF0ZV9tdHVgIHRvIHVzZSBSQ1UgYW5kIGEgc3BpbmxvY2suIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgY2hhbmdpbmcgdGhlIE1UVSBvZiBhIG5ldHdvcmsgZGV2aWNlIChlLmcuLCB2aWEgbmV0bGluayBvciBpb2N0bCkgd2hpY2ggdHJpZ2dlcnMgYGZpYl9zeW5jX210dWAgYW5kIGBuZXh0aG9wX3N5bmNfbXR1YC4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbmhlX3VwZGF0ZV9wbXR1JiMzNDssCiAgICAmIzM0O2ZpYl9uaGNfdXBkYXRlX210dSYjMzQ7LAogICAgJiMzNDtmaWJfc3luY19tdHUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQdjQgcm91dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgdXBkYXRlIHRoZSBQYXRoIE1UVSAoUE1UVSkgb2YgZmliIG5leHRob3AgZXhjZXB0aW9ucyB3aGVuIHRoZSBNVFUgb2YgdGhlIGZpcnN0IGhvcCBjaGFuZ2VzLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBmbmhlX3VwZGF0ZV9wbXR1YCBhbmQgbW9kaWZpZXMgYGZpYl9uaGNfdXBkYXRlX210dWAgdG8gdXNlIFJDVSBhbmQgYSBzcGlubG9jay4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBjaGFuZ2luZyB0aGUgTVRVIG9mIGEgbmV0d29yayBkZXZpY2UgKGUuZy4sIHZpYSBuZXRsaW5rIG9yIGlvY3RsKSB3aGljaCB0cmlnZ2VycyBgZmliX3N5bmNfbXR1YCBhbmQgYG5leHRob3Bfc3luY19tdHVgLiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSAobWlzc2luZyBSQ1UgcmVhZCBsb2NrIGFuZCBzcGlubG9jayBwcm90ZWN0aW9uKSB3aGVuIHVwZGF0aW5nIFBNVFUgaW4gZmliX25oX2V4Y2VwdGlvbiBlbnRyaWVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOLCBLQ1NBTiwgb3IgTE9DS0RFUCBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDIyNzMzNjQzMTkzYTRlYWY1MGZkYzZlZmMyMGIyMDIzZTYzOTdkODAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyA3IDIwOjU2OjAyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcm91dGUuaCBiL2luY2x1ZGUvbmV0L3JvdXRlLmgKaW5kZXggZjkwMTA2ZjM4M2M1Ni4uNDUyOTAxNzdhMzNjNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvcm91dGUuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9yb3V0ZS5oCkBAIC0yNzYsNiAmIzQzOzI3Niw4IEBAIGludCBmaWJfZHVtcF9pbmZvX2ZuaGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLAogCQkgICAgICAgdTMyIHRhYmxlX2lkLCBzdHJ1Y3QgZmliX2luZm8gKmZpLAogCQkgICAgICAgaW50ICpmYV9pbmRleCwgaW50IGZhX3N0YXJ0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwogCiYjNDM7dm9pZCBmbmhlX3VwZGF0ZV9wbXR1KHN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlLCB1MzIgbmV3LCB1MzIgb3JpZyk7CiYjNDM7CiBzdGF0aWMgaW5saW5lIHZvaWQgaXBfcnRfcHV0KHN0cnVjdCBydGFibGUgKnJ0KQogewogCS8qIGRzdF9yZWxlYXNlKCkgYWNjZXB0cyBhIE5VTEwgcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX3NlbWFudGljcy5jIGIvbmV0L2lwdjQvZmliX3NlbWFudGljcy5jCmluZGV4IDc4Zjg0YWUzZWUxMjAuLjA0ODM1MTliN2ZiMGQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMKQEAgLTE4OTUsNDIgJiM0MzsxODk1LDMwIEBAIHN0YXRpYyBpbnQgY2FsbF9maWJfbmhfbm90aWZpZXJzKHN0cnVjdCBmaWJfbmggKm5oLAogCXJldHVybiBOT1RJRllfRE9ORTsKIH0KIAotLyogVXBkYXRlIHRoZSBQTVRVIG9mIGV4Y2VwdGlvbnMgd2hlbjoKLSAqIC0gdGhlIG5ldyBNVFUgb2YgdGhlIGZpcnN0IGhvcCBiZWNvbWVzIHNtYWxsZXIgdGhhbiB0aGUgUE1UVQotICogLSB0aGUgb2xkIE1UVSB3YXMgdGhlIHNhbWUgYXMgdGhlIFBNVFUsIGFuZCBpdCBsaW1pdGVkIGRpc2NvdmVyeSBvZgotICogICBsYXJnZXIgTVRVcyBvbiB0aGUgcGF0aC4gV2l0aCB0aGF0IGxpbWl0IHJhaXNlZCwgd2UgY2FuIG5vdwotICogICBkaXNjb3ZlciBsYXJnZXIgTVRVcwotICogQSBzcGVjaWFsIGNhc2UgaXMgbG9ja2VkIGV4Y2VwdGlvbnMsIGZvciB3aGljaCB0aGUgUE1UVSBpcyBzbWFsbGVyCi0gKiB0aGFuIHRoZSBtaW5pbWFsIGFjY2VwdGVkIFBNVFU6Ci0gKiAtIGlmIHRoZSBuZXcgTVRVIGlzIGdyZWF0ZXIgdGhhbiB0aGUgUE1UVSwgZG9uJiMzOTt0IG1ha2UgYW55IGNoYW5nZQotICogLSBvdGhlcndpc2UsIHVubG9jayBhbmQgc2V0IFBNVFUKJiM0MzsvKiBXYWxrIHRoZSBleGNlcHRpb25zIG9mIGEgbmV4dGhvcCBhZnRlciBpdHMgZmlyc3QgaG9wIE1UVSBjaGFuZ2VkLiBUaGUKJiM0MzsgKiBjaGFpbiBpcyBSQ1UgcHJvdGVjdGVkIGhlcmUsIHdoaWxlIGZuaGVfdXBkYXRlX3BtdHUoKSB0YWtlcyBmbmhlX2xvY2sKJiM0MzsgKiBmb3IgdGhlIHVwZGF0ZSBvZiBlYWNoIGVudHJ5LgogICovCiB2b2lkIGZpYl9uaGNfdXBkYXRlX210dShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCB1MzIgbmV3LCB1MzIgb3JpZykKIHsKIAlzdHJ1Y3QgZm5oZV9oYXNoX2J1Y2tldCAqYnVja2V0OwogCWludCBpOwogCi0JYnVja2V0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChuaGMtJmd0O25oY19leGNlcHRpb25zLCAxKTsKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwomIzQzOwlidWNrZXQgPSByY3VfZGVyZWZlcmVuY2UobmhjLSZndDtuaGNfZXhjZXB0aW9ucyk7CiAJaWYgKCFidWNrZXQpCi0JCXJldHVybjsKJiM0MzsJCWdvdG8gb3V0OwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEZOSEVfSEFTSF9TSVpFOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZTsKIAotCQlmb3IgKGZuaGUgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGJ1Y2tldFtpXS5jaGFpbiwgMSk7CiYjNDM7CQlmb3IgKGZuaGUgPSByY3VfZGVyZWZlcmVuY2UoYnVja2V0W2ldLmNoYWluKTsKIAkJICAgICBmbmhlOwotCQkgICAgIGZuaGUgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGZuaGUtJmd0O2ZuaGVfbmV4dCwgMSkpIHsKLQkJCWlmIChmbmhlLSZndDtmbmhlX210dV9sb2NrZWQpIHsKLQkJCQlpZiAobmV3ICZsdDs9IGZuaGUtJmd0O2ZuaGVfcG10dSkgewotCQkJCQlmbmhlLSZndDtmbmhlX3BtdHUgPSBuZXc7Ci0JCQkJCWZuaGUtJmd0O2ZuaGVfbXR1X2xvY2tlZCA9IGZhbHNlOwotCQkJCX0KLQkJCX0gZWxzZSBpZiAobmV3ICZsdDsgZm5oZS0mZ3Q7Zm5oZV9wbXR1IHx8Ci0JCQkJICAgb3JpZyA9PSBmbmhlLSZndDtmbmhlX3BtdHUpIHsKLQkJCQlmbmhlLSZndDtmbmhlX3BtdHUgPSBuZXc7Ci0JCQl9Ci0JCX0KJiM0MzsJCSAgICAgZm5oZSA9IHJjdV9kZXJlZmVyZW5jZShmbmhlLSZndDtmbmhlX25leHQpKQomIzQzOwkJCWZuaGVfdXBkYXRlX3BtdHUoZm5oZSwgbmV3LCBvcmlnKTsKIAl9CiYjNDM7b3V0OgomIzQzOwlyY3VfcmVhZF91bmxvY2soKTsKIH0KIAogdm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcm91dGUuYyBiL25ldC9pcHY0L3JvdXRlLmMKaW5kZXggMTUyZDhjYjI4ZjY1YS4uYjgyNDAxYTZiYWVkNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvcm91dGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9yb3V0ZS5jCkBAIC03NDEsNiAmIzQzOzc0MSwzNSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfb3JfY3JlYXRlX2ZuaGUoc3RydWN0IGZpYl9uaF9jb21tb24gKm5oYywgX19iZTMyIGRhZGRyLAogCXNwaW5fdW5sb2NrX2JoKCZhbXA7Zm5oZV9sb2NrKTsKIH0KIAomIzQzOy8qIFVwZGF0ZSB0aGUgUE1UVSBvZiBhbiBleGNlcHRpb24gd2hlbjoKJiM0MzsgKiAtIHRoZSBuZXcgTVRVIG9mIHRoZSBmaXJzdCBob3AgYmVjb21lcyBzbWFsbGVyIHRoYW4gdGhlIFBNVFUKJiM0MzsgKiAtIHRoZSBvbGQgTVRVIHdhcyB0aGUgc2FtZSBhcyB0aGUgUE1UVSwgYW5kIGl0IGxpbWl0ZWQgZGlzY292ZXJ5IG9mCiYjNDM7ICogICBsYXJnZXIgTVRVcyBvbiB0aGUgcGF0aC4gV2l0aCB0aGF0IGxpbWl0IHJhaXNlZCwgd2UgY2FuIG5vdwomIzQzOyAqICAgZGlzY292ZXIgbGFyZ2VyIE1UVXMKJiM0MzsgKiBBIHNwZWNpYWwgY2FzZSBpcyBsb2NrZWQgZXhjZXB0aW9ucywgZm9yIHdoaWNoIHRoZSBQTVRVIGlzIHNtYWxsZXIKJiM0MzsgKiB0aGFuIHRoZSBtaW5pbWFsIGFjY2VwdGVkIFBNVFU6CiYjNDM7ICogLSBpZiB0aGUgbmV3IE1UVSBpcyBncmVhdGVyIHRoYW4gdGhlIFBNVFUsIGRvbiYjMzk7dCBtYWtlIGFueSBjaGFuZ2UKJiM0MzsgKiAtIG90aGVyd2lzZSwgdW5sb2NrIGFuZCBzZXQgUE1UVQomIzQzOyAqCiYjNDM7ICogZm5oZV9sb2NrIGtlZXBzIGZuaGVfcG10dSBhbmQgZm5oZV9tdHVfbG9ja2VkIGNvbnNpc3RlbnQgYWdhaW5zdAomIzQzOyAqIHVwZGF0ZV9vcl9jcmVhdGVfZm5oZSgpLCB3aGljaCBzZXRzIGJvdGggdW5kZXIgdGhlIHNhbWUgbG9jay4KJiM0MzsgKi8KJiM0Mzt2b2lkIGZuaGVfdXBkYXRlX3BtdHUoc3RydWN0IGZpYl9uaF9leGNlcHRpb24gKmZuaGUsIHUzMiBuZXcsIHUzMiBvcmlnKQomIzQzO3sKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7Zm5oZV9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKGZuaGUtJmd0O2ZuaGVfbXR1X2xvY2tlZCkgewomIzQzOwkJaWYgKG5ldyAmbHQ7PSBmbmhlLSZndDtmbmhlX3BtdHUpIHsKJiM0MzsJCQlmbmhlLSZndDtmbmhlX3BtdHUgPSBuZXc7CiYjNDM7CQkJZm5oZS0mZ3Q7Zm5oZV9tdHVfbG9ja2VkID0gZmFsc2U7CiYjNDM7CQl9CiYjNDM7CX0gZWxzZSBpZiAobmV3ICZsdDsgZm5oZS0mZ3Q7Zm5oZV9wbXR1IHx8IG9yaWcgPT0gZm5oZS0mZ3Q7Zm5oZV9wbXR1KSB7CiYjNDM7CQlmbmhlLSZndDtmbmhlX3BtdHUgPSBuZXc7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtmbmhlX2xvY2spOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIF9faXBfZG9fcmVkaXJlY3Qoc3RydWN0IHJ0YWJsZSAqcnQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBmbG93aTQgKmZsNCwKIAkJCSAgICAgYm9vbCBraWxsX3JvdXRlKQogewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0OAoJCQkJCQkJb3V0cHV0OiAxMDEKCQkJCQkJCXRob3VnaHRzOiA0NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogQSBTb2xpZCBDb25jdXJyZW5jeSBCdWcgRml4KioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgaXQmIzM5O3MgYSBjcml0aWNhbCBmaXgsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYSBjb25jdXJyZW5jeSBidWcgd2l0aGluIHRoZSBgZmliX25oX2V4Y2VwdGlvbmAgaGFuZGxpbmcuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGhvdyBNVFUgdXBkYXRlcyBhcmUgbWFuYWdlZCBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhlc2UgZXhjZXB0aW9ucywgYSBjb21tb24gYXJlYSBmb3Igc3VidGxlIHJhY2UgY29uZGl0aW9ucyBpbiBhIG5ldHdvcmsgc3RhY2suCgpQcmV2aW91c2x5LCB0aGUgYGZpYl9uaGNfdXBkYXRlX210dWAgZnVuY3Rpb24gaW4gYG5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY2AgaGFkIGEgZmxhdy4gSXQgd2FzIGl0ZXJhdGluZyB0aHJvdWdoIGV4Y2VwdGlvbiBlbnRyaWVzIHVzaW5nIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYCB3aXRob3V0IGhvbGRpbmcgYSBwcm9wZXIgUkNVIHJlYWQgbG9jayBvciB0aGUgYXBwcm9wcmlhdGUgc3BpbmxvY2sgKGBmbmhlX2xvY2tgKS4gVGhpcyBpcyB3aGVyZSB0aGUgcmFjZSBjb25kaXRpb24gbGlrZWx5IGV4aXN0ZWQsIGEgdGV4dGJvb2sgZXhhbXBsZSBvZiBkYXRhIHJhY2UgdnVsbmVyYWJpbGl0eSwgZXNwZWNpYWxseSBpbiBhIGhlYXZpbHkgdGhyZWFkZWQga2VybmVsIGVudmlyb25tZW50LgoKVGhlIHBhdGNoJiMzOTtzIHNvbHV0aW9uIGlzIHF1aXRlIGVsZWdhbnQgYW5kIGFkZHJlc3NlcyB0aGUgcHJvYmxlbSBoZWFkLW9uLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uLCBgZm5oZV91cGRhdGVfcG10dWAgaW4gYG5ldC9pcHY0L3JvdXRlLmNgLCB0byBlbmNhcHN1bGF0ZSB0aGUgUE1UVSB1cGRhdGUgbG9naWMuIENyaXRpY2FsbHksIHRoaXMgbmV3IGZ1bmN0aW9uIG5vdyAqcHJvcGVybHkqIGFjcXVpcmVzIGBzcGluX2xvY2tfYmgoJmFtcDtmbmhlX2xvY2spYCBiZWZvcmUgbW9kaWZ5aW5nIGBmbmhlX3BtdHVgIGFuZCBgZm5oZV9tdHVfbG9ja2VkYCwgZW5zdXJpbmcgYXRvbWljIHVwZGF0ZXMgYW5kIHByZXZlbnRpbmcgdGhlIHJhY2UuICBNb3Jlb3ZlciwgYGZpYl9uaGNfdXBkYXRlX210dWAgaGFzIGJlZW4gdXBkYXRlZCB0byBjb3JyZWN0bHkgdGFrZSBgcmN1X3JlYWRfbG9jaygpYCBhbmQgdXNlIGByY3VfZGVyZWZlcmVuY2UoKWAgd2hlbiBhY2Nlc3NpbmcgdGhlIGV4Y2VwdGlvbiBlbnRyaWVzLiBUaGlzIGlzIHRoZSBjb3JyZWN0LCBzYWZlIHdheSB0byBoYW5kbGUgdGhlc2UgUkNVIHByb3RlY3RlZCBkYXRhIHN0cnVjdHVyZXMuCgpJJiMzOTt2ZSB0YWtlbiBhIHF1aWNrIGxvb2sgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgYWNjaWRlbnRhbGx5IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBpbml0aWFsaXphdGlvbiBpc3N1ZXMsIG9yIGxlYWsgYW55dGhpbmcgdG8gdXNlciBzcGFjZS4gSXQgZG9lc24mIzM5O3QuIE15IGFuYWx5c2lzIGNvbmZpcm1zIHRoYXQgdGhpcyBwYXRjaCBpcyBlbnRpcmVseSBmb2N1c2VkIG9uIGxvY2tpbmcgYW5kIFJDVSBjb3JyZWN0bmVzcy4KClRoZXJlZm9yZSwgdGhpcyBwYXRjaCAqZG9lc24mIzM5O3QqIHJlcXVpcmUgS01TQU4uIFRoZSBidWcgaXQgZml4ZXMgaXMgYSBjb25jdXJyZW5jeSBidWcsIHNwZWNpZmljYWxseSBhIGRhdGEgcmFjZSwgd2hpY2ggd291bGQgYmUgZGV0ZWN0ZWQgYnkgS0NTQU4gb3IgTE9DS0RFUC4gU3RhbmRhcmQgS0FTQU4gc2hvdWxkIGJlIHN1ZmZpY2llbnQsIGFzc3VtaW5nIGFsbCBjb2RlIHBhdGhzIGFyZSBjb3ZlcmVkLiAgTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9uLCBubyB1c2VyLXNwYWNlIGluZm9ybWF0aW9uIGxlYWtzLCBqdXN0IGdvb2Qgb2xkLWZhc2hpb25lZCBjb25jdXJyZW5jeSBidWcgZml4aW5nLiAgTG9va3MgbGlrZSBhIHNvbGlkLCBjbGVhbiwgYW5kIGltcG9ydGFudCBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIGNvbmN1cnJlbmN5IGlzc3VlIChtaXNzaW5nIFJDVSByZWFkIGxvY2sgYW5kIHNwaW5sb2NrIHByb3RlY3Rpb24pIHdoZW4gdXBkYXRpbmcgUE1UVSBpbiBmaWJfbmhfZXhjZXB0aW9uIGVudHJpZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4sIEtDU0FOLCBvciBMT0NLREVQIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIGNvbmN1cnJlbmN5IGlzc3VlIChtaXNzaW5nIFJDVSByZWFkIGxvY2sgYW5kIHNwaW5sb2NrIHByb3RlY3Rpb24pIHdoZW4gdXBkYXRpbmcgUE1UVSBpbiBmaWJfbmhfZXhjZXB0aW9uIGVudHJpZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4sIEtDU0FOLCBvciBMT0NLREVQIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6MDMuNDc3NDcxNzU1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgwMjcyNTI3MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZuaGVfdXBkYXRlX3BtdHVcIixcbiAgICBcImZpYl9uaGNfdXBkYXRlX210dVwiLFxuICAgIFwiZmliX3N5bmNfbXR1XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSAobWlzc2luZyBSQ1UgcmVhZCBsb2NrIGFuZCBzcGlubG9jayBwcm90ZWN0aW9uKSB3aGVuIHVwZGF0aW5nIFBNVFUgaW4gZmliX25oX2V4Y2VwdGlvbiBlbnRyaWVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOLCBLQ1NBTiwgb3IgTE9DS0RFUCBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQdjQgcm91dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgdXBkYXRlIHRoZSBQYXRoIE1UVSAoUE1UVSkgb2YgZmliIG5leHRob3AgZXhjZXB0aW9ucyB3aGVuIHRoZSBNVFUgb2YgdGhlIGZpcnN0IGhvcCBjaGFuZ2VzLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBmbmhlX3VwZGF0ZV9wbXR1YCBhbmQgbW9kaWZpZXMgYGZpYl9uaGNfdXBkYXRlX210dWAgdG8gdXNlIFJDVSBhbmQgYSBzcGlubG9jay4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBjaGFuZ2luZyB0aGUgTVRVIG9mIGEgbmV0d29yayBkZXZpY2UgKGUuZy4sIHZpYSBuZXRsaW5rIG9yIGlvY3RsKSB3aGljaCB0cmlnZ2VycyBgZmliX3N5bmNfbXR1YCBhbmQgYG5leHRob3Bfc3luY19tdHVgLiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6MDMuNDc3NDc5NDE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTMwODA4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyMjczMzY0MzE5M2E0ZWFmNTBmZGM2ZWZjMjBiMjAyM2U2Mzk3ZDgwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMjA6NTY6MDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcm91dGUuaCBiL2luY2x1ZGUvbmV0L3JvdXRlLmhcXG5pbmRleCBmOTAxMDZmMzgzYzU2Li40NTI5MDE3N2EzM2M0IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3JvdXRlLmhcXG4rKysgYi9pbmNsdWRlL25ldC9yb3V0ZS5oXFxuQEAgLTI3Niw2ICsyNzYsOCBAQCBpbnQgZmliX2R1bXBfaW5mb19mbmhlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYixcXG4gXFx0XFx0ICAgICAgIHUzMiB0YWJsZV9pZCwgc3RydWN0IGZpYl9pbmZvICpmaSxcXG4gXFx0XFx0ICAgICAgIGludCAqZmFfaW5kZXgsIGludCBmYV9zdGFydCwgdW5zaWduZWQgaW50IGZsYWdzKTtcXG4gXFxuK3ZvaWQgZm5oZV91cGRhdGVfcG10dShzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZSwgdTMyIG5ldywgdTMyIG9yaWcpO1xcbitcXG4gc3RhdGljIGlubGluZSB2b2lkIGlwX3J0X3B1dChzdHJ1Y3QgcnRhYmxlICpydClcXG4ge1xcbiBcXHQvKiBkc3RfcmVsZWFzZSgpIGFjY2VwdHMgYSBOVUxMIHBhcmFtZXRlci5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZmliX3NlbWFudGljcy5jIGIvbmV0L2lwdjQvZmliX3NlbWFudGljcy5jXFxuaW5kZXggNzhmODRhZTNlZTEyMC4uMDQ4MzUxOWI3ZmIwZCAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcXG4rKysgYi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcXG5AQCAtMTg5NSw0MiArMTg5NSwzMCBAQCBzdGF0aWMgaW50IGNhbGxfZmliX25oX25vdGlmaWVycyhzdHJ1Y3QgZmliX25oICpuaCxcXG4gXFx0cmV0dXJuIE5PVElGWV9ET05FO1xcbiB9XFxuIFxcbi0vKiBVcGRhdGUgdGhlIFBNVFUgb2YgZXhjZXB0aW9ucyB3aGVuOlxcbi0gKiAtIHRoZSBuZXcgTVRVIG9mIHRoZSBmaXJzdCBob3AgYmVjb21lcyBzbWFsbGVyIHRoYW4gdGhlIFBNVFVcXG4tICogLSB0aGUgb2xkIE1UVSB3YXMgdGhlIHNhbWUgYXMgdGhlIFBNVFUsIGFuZCBpdCBsaW1pdGVkIGRpc2NvdmVyeSBvZlxcbi0gKiAgIGxhcmdlciBNVFVzIG9uIHRoZSBwYXRoLiBXaXRoIHRoYXQgbGltaXQgcmFpc2VkLCB3ZSBjYW4gbm93XFxuLSAqICAgZGlzY292ZXIgbGFyZ2VyIE1UVXNcXG4tICogQSBzcGVjaWFsIGNhc2UgaXMgbG9ja2VkIGV4Y2VwdGlvbnMsIGZvciB3aGljaCB0aGUgUE1UVSBpcyBzbWFsbGVyXFxuLSAqIHRoYW4gdGhlIG1pbmltYWwgYWNjZXB0ZWQgUE1UVTpcXG4tICogLSBpZiB0aGUgbmV3IE1UVSBpcyBncmVhdGVyIHRoYW4gdGhlIFBNVFUsIGRvbid0IG1ha2UgYW55IGNoYW5nZVxcbi0gKiAtIG90aGVyd2lzZSwgdW5sb2NrIGFuZCBzZXQgUE1UVVxcbisvKiBXYWxrIHRoZSBleGNlcHRpb25zIG9mIGEgbmV4dGhvcCBhZnRlciBpdHMgZmlyc3QgaG9wIE1UVSBjaGFuZ2VkLiBUaGVcXG4rICogY2hhaW4gaXMgUkNVIHByb3RlY3RlZCBoZXJlLCB3aGlsZSBmbmhlX3VwZGF0ZV9wbXR1KCkgdGFrZXMgZm5oZV9sb2NrXFxuKyAqIGZvciB0aGUgdXBkYXRlIG9mIGVhY2ggZW50cnkuXFxuICAqL1xcbiB2b2lkIGZpYl9uaGNfdXBkYXRlX210dShzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjLCB1MzIgbmV3LCB1MzIgb3JpZylcXG4ge1xcbiBcXHRzdHJ1Y3QgZm5oZV9oYXNoX2J1Y2tldCAqYnVja2V0O1xcbiBcXHRpbnQgaTtcXG4gXFxuLVxcdGJ1Y2tldCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobmhjLVxcdTAwM2VuaGNfZXhjZXB0aW9ucywgMSk7XFxuK1xcdHJjdV9yZWFkX2xvY2soKTtcXG4rXFx0YnVja2V0ID0gcmN1X2RlcmVmZXJlbmNlKG5oYy1cXHUwMDNlbmhjX2V4Y2VwdGlvbnMpO1xcbiBcXHRpZiAoIWJ1Y2tldClcXG4tXFx0XFx0cmV0dXJuO1xcbitcXHRcXHRnb3RvIG91dDtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBGTkhFX0hBU0hfU0laRTsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlO1xcbiBcXG4tXFx0XFx0Zm9yIChmbmhlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChidWNrZXRbaV0uY2hhaW4sIDEpO1xcbitcXHRcXHRmb3IgKGZuaGUgPSByY3VfZGVyZWZlcmVuY2UoYnVja2V0W2ldLmNoYWluKTtcXG4gXFx0XFx0ICAgICBmbmhlO1xcbi1cXHRcXHQgICAgIGZuaGUgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGZuaGUtXFx1MDAzZWZuaGVfbmV4dCwgMSkpIHtcXG4tXFx0XFx0XFx0aWYgKGZuaGUtXFx1MDAzZWZuaGVfbXR1X2xvY2tlZCkge1xcbi1cXHRcXHRcXHRcXHRpZiAobmV3IFxcdTAwM2M9IGZuaGUtXFx1MDAzZWZuaGVfcG10dSkge1xcbi1cXHRcXHRcXHRcXHRcXHRmbmhlLVxcdTAwM2VmbmhlX3BtdHUgPSBuZXc7XFxuLVxcdFxcdFxcdFxcdFxcdGZuaGUtXFx1MDAzZWZuaGVfbXR1X2xvY2tlZCA9IGZhbHNlO1xcbi1cXHRcXHRcXHRcXHR9XFxuLVxcdFxcdFxcdH0gZWxzZSBpZiAobmV3IFxcdTAwM2MgZm5oZS1cXHUwMDNlZm5oZV9wbXR1IHx8XFxuLVxcdFxcdFxcdFxcdCAgIG9yaWcgPT0gZm5oZS1cXHUwMDNlZm5oZV9wbXR1KSB7XFxuLVxcdFxcdFxcdFxcdGZuaGUtXFx1MDAzZWZuaGVfcG10dSA9IG5ldztcXG4tXFx0XFx0XFx0fVxcbi1cXHRcXHR9XFxuK1xcdFxcdCAgICAgZm5oZSA9IHJjdV9kZXJlZmVyZW5jZShmbmhlLVxcdTAwM2VmbmhlX25leHQpKVxcbitcXHRcXHRcXHRmbmhlX3VwZGF0ZV9wbXR1KGZuaGUsIG5ldywgb3JpZyk7XFxuIFxcdH1cXG4rb3V0OlxcbitcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gfVxcbiBcXG4gdm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9yb3V0ZS5jIGIvbmV0L2lwdjQvcm91dGUuY1xcbmluZGV4IDE1MmQ4Y2IyOGY2NWEuLmI4MjQwMWE2YmFlZDcgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvcm91dGUuY1xcbisrKyBiL25ldC9pcHY0L3JvdXRlLmNcXG5AQCAtNzQxLDYgKzc0MSwzNSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfb3JfY3JlYXRlX2ZuaGUoc3RydWN0IGZpYl9uaF9jb21tb24gKm5oYywgX19iZTMyIGRhZGRyLFxcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Zm5oZV9sb2NrKTtcXG4gfVxcbiBcXG4rLyogVXBkYXRlIHRoZSBQTVRVIG9mIGFuIGV4Y2VwdGlvbiB3aGVuOlxcbisgKiAtIHRoZSBuZXcgTVRVIG9mIHRoZSBmaXJzdCBob3AgYmVjb21lcyBzbWFsbGVyIHRoYW4gdGhlIFBNVFVcXG4rICogLSB0aGUgb2xkIE1UVSB3YXMgdGhlIHNhbWUgYXMgdGhlIFBNVFUsIGFuZCBpdCBsaW1pdGVkIGRpc2NvdmVyeSBvZlxcbisgKiAgIGxhcmdlciBNVFVzIG9uIHRoZSBwYXRoLiBXaXRoIHRoYXQgbGltaXQgcmFpc2VkLCB3ZSBjYW4gbm93XFxuKyAqICAgZGlzY292ZXIgbGFyZ2VyIE1UVXNcXG4rICogQSBzcGVjaWFsIGNhc2UgaXMgbG9ja2VkIGV4Y2VwdGlvbnMsIGZvciB3aGljaCB0aGUgUE1UVSBpcyBzbWFsbGVyXFxuKyAqIHRoYW4gdGhlIG1pbmltYWwgYWNjZXB0ZWQgUE1UVTpcXG4rICogLSBpZiB0aGUgbmV3IE1UVSBpcyBncmVhdGVyIHRoYW4gdGhlIFBNVFUsIGRvbid0IG1ha2UgYW55IGNoYW5nZVxcbisgKiAtIG90aGVyd2lzZSwgdW5sb2NrIGFuZCBzZXQgUE1UVVxcbisgKlxcbisgKiBmbmhlX2xvY2sga2VlcHMgZm5oZV9wbXR1IGFuZCBmbmhlX210dV9sb2NrZWQgY29uc2lzdGVudCBhZ2FpbnN0XFxuKyAqIHVwZGF0ZV9vcl9jcmVhdGVfZm5oZSgpLCB3aGljaCBzZXRzIGJvdGggdW5kZXIgdGhlIHNhbWUgbG9jay5cXG4rICovXFxuK3ZvaWQgZm5oZV91cGRhdGVfcG10dShzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZSwgdTMyIG5ldywgdTMyIG9yaWcpXFxuK3tcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZmbmhlX2xvY2spO1xcbitcXG4rXFx0aWYgKGZuaGUtXFx1MDAzZWZuaGVfbXR1X2xvY2tlZCkge1xcbitcXHRcXHRpZiAobmV3IFxcdTAwM2M9IGZuaGUtXFx1MDAzZWZuaGVfcG10dSkge1xcbitcXHRcXHRcXHRmbmhlLVxcdTAwM2VmbmhlX3BtdHUgPSBuZXc7XFxuK1xcdFxcdFxcdGZuaGUtXFx1MDAzZWZuaGVfbXR1X2xvY2tlZCA9IGZhbHNlO1xcbitcXHRcXHR9XFxuK1xcdH0gZWxzZSBpZiAobmV3IFxcdTAwM2MgZm5oZS1cXHUwMDNlZm5oZV9wbXR1IHx8IG9yaWcgPT0gZm5oZS1cXHUwMDNlZm5oZV9wbXR1KSB7XFxuK1xcdFxcdGZuaGUtXFx1MDAzZWZuaGVfcG10dSA9IG5ldztcXG4rXFx0fVxcbitcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmZuaGVfbG9jayk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIF9faXBfZG9fcmVkaXJlY3Qoc3RydWN0IHJ0YWJsZSAqcnQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBmbG93aTQgKmZsNCxcXG4gXFx0XFx0XFx0ICAgICBib29sIGtpbGxfcm91dGUpXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6MDQuMDMxMTgzNjE3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTkwMTAwNjc4NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZuaGVfdXBkYXRlX3BtdHVcIixcbiAgICBcImZpYl9uaGNfdXBkYXRlX210dVwiLFxuICAgIFwiZmliX3N5bmNfbXR1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElQdjQgcm91dGluZyBsb2dpYyB0byBjb3JyZWN0bHkgdXBkYXRlIHRoZSBQYXRoIE1UVSAoUE1UVSkgb2YgZmliIG5leHRob3AgZXhjZXB0aW9ucyB3aGVuIHRoZSBNVFUgb2YgdGhlIGZpcnN0IGhvcCBjaGFuZ2VzLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBmbmhlX3VwZGF0ZV9wbXR1YCBhbmQgbW9kaWZpZXMgYGZpYl9uaGNfdXBkYXRlX210dWAgdG8gdXNlIFJDVSBhbmQgYSBzcGlubG9jay4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBieSBjaGFuZ2luZyB0aGUgTVRVIG9mIGEgbmV0d29yayBkZXZpY2UgKGUuZy4sIHZpYSBuZXRsaW5rIG9yIGlvY3RsKSB3aGljaCB0cmlnZ2VycyBgZmliX3N5bmNfbXR1YCBhbmQgYG5leHRob3Bfc3luY19tdHVgLiBUaGlzIGlzIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjI3MzM2NDMxOTNhNGVhZjUwZmRjNmVmYzIwYjIwMjNlNjM5N2Q4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMjA6NTY6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9yb3V0ZS5oIGIvaW5jbHVkZS9uZXQvcm91dGUuaFxuaW5kZXggZjkwMTA2ZjM4M2M1Ni4uNDUyOTAxNzdhMzNjNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3JvdXRlLmhcbisrKyBiL2luY2x1ZGUvbmV0L3JvdXRlLmhcbkBAIC0yNzYsNiArMjc2LDggQEAgaW50IGZpYl9kdW1wX2luZm9fZm5oZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsXG4gXHRcdCAgICAgICB1MzIgdGFibGVfaWQsIHN0cnVjdCBmaWJfaW5mbyAqZmksXG4gXHRcdCAgICAgICBpbnQgKmZhX2luZGV4LCBpbnQgZmFfc3RhcnQsIHVuc2lnbmVkIGludCBmbGFncyk7XG4gXG4rdm9pZCBmbmhlX3VwZGF0ZV9wbXR1KHN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlLCB1MzIgbmV3LCB1MzIgb3JpZyk7XG4rXG4gc3RhdGljIGlubGluZSB2b2lkIGlwX3J0X3B1dChzdHJ1Y3QgcnRhYmxlICpydClcbiB7XG4gXHQvKiBkc3RfcmVsZWFzZSgpIGFjY2VwdHMgYSBOVUxMIHBhcmFtZXRlci5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMgYi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcbmluZGV4IDc4Zjg0YWUzZWUxMjAuLjA0ODM1MTliN2ZiMGQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcbisrKyBiL25ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY1xuQEAgLTE4OTUsNDIgKzE4OTUsMzAgQEAgc3RhdGljIGludCBjYWxsX2ZpYl9uaF9ub3RpZmllcnMoc3RydWN0IGZpYl9uaCAqbmgsXG4gXHRyZXR1cm4gTk9USUZZX0RPTkU7XG4gfVxuIFxuLS8qIFVwZGF0ZSB0aGUgUE1UVSBvZiBleGNlcHRpb25zIHdoZW46XG4tICogLSB0aGUgbmV3IE1UVSBvZiB0aGUgZmlyc3QgaG9wIGJlY29tZXMgc21hbGxlciB0aGFuIHRoZSBQTVRVXG4tICogLSB0aGUgb2xkIE1UVSB3YXMgdGhlIHNhbWUgYXMgdGhlIFBNVFUsIGFuZCBpdCBsaW1pdGVkIGRpc2NvdmVyeSBvZlxuLSAqICAgbGFyZ2VyIE1UVXMgb24gdGhlIHBhdGguIFdpdGggdGhhdCBsaW1pdCByYWlzZWQsIHdlIGNhbiBub3dcbi0gKiAgIGRpc2NvdmVyIGxhcmdlciBNVFVzXG4tICogQSBzcGVjaWFsIGNhc2UgaXMgbG9ja2VkIGV4Y2VwdGlvbnMsIGZvciB3aGljaCB0aGUgUE1UVSBpcyBzbWFsbGVyXG4tICogdGhhbiB0aGUgbWluaW1hbCBhY2NlcHRlZCBQTVRVOlxuLSAqIC0gaWYgdGhlIG5ldyBNVFUgaXMgZ3JlYXRlciB0aGFuIHRoZSBQTVRVLCBkb24ndCBtYWtlIGFueSBjaGFuZ2Vcbi0gKiAtIG90aGVyd2lzZSwgdW5sb2NrIGFuZCBzZXQgUE1UVVxuKy8qIFdhbGsgdGhlIGV4Y2VwdGlvbnMgb2YgYSBuZXh0aG9wIGFmdGVyIGl0cyBmaXJzdCBob3AgTVRVIGNoYW5nZWQuIFRoZVxuKyAqIGNoYWluIGlzIFJDVSBwcm90ZWN0ZWQgaGVyZSwgd2hpbGUgZm5oZV91cGRhdGVfcG10dSgpIHRha2VzIGZuaGVfbG9ja1xuKyAqIGZvciB0aGUgdXBkYXRlIG9mIGVhY2ggZW50cnkuXG4gICovXG4gdm9pZCBmaWJfbmhjX3VwZGF0ZV9tdHUoc3RydWN0IGZpYl9uaF9jb21tb24gKm5oYywgdTMyIG5ldywgdTMyIG9yaWcpXG4ge1xuIFx0c3RydWN0IGZuaGVfaGFzaF9idWNrZXQgKmJ1Y2tldDtcbiBcdGludCBpO1xuIFxuLVx0YnVja2V0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChuaGMtXHUwMDNlbmhjX2V4Y2VwdGlvbnMsIDEpO1xuK1x0cmN1X3JlYWRfbG9jaygpO1xuK1x0YnVja2V0ID0gcmN1X2RlcmVmZXJlbmNlKG5oYy1cdTAwM2VuaGNfZXhjZXB0aW9ucyk7XG4gXHRpZiAoIWJ1Y2tldClcbi1cdFx0cmV0dXJuO1xuK1x0XHRnb3RvIG91dDtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEZOSEVfSEFTSF9TSVpFOyBpKyspIHtcbiBcdFx0c3RydWN0IGZpYl9uaF9leGNlcHRpb24gKmZuaGU7XG4gXG4tXHRcdGZvciAoZm5oZSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoYnVja2V0W2ldLmNoYWluLCAxKTtcbitcdFx0Zm9yIChmbmhlID0gcmN1X2RlcmVmZXJlbmNlKGJ1Y2tldFtpXS5jaGFpbik7XG4gXHRcdCAgICAgZm5oZTtcbi1cdFx0ICAgICBmbmhlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChmbmhlLVx1MDAzZWZuaGVfbmV4dCwgMSkpIHtcbi1cdFx0XHRpZiAoZm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQpIHtcbi1cdFx0XHRcdGlmIChuZXcgXHUwMDNjPSBmbmhlLVx1MDAzZWZuaGVfcG10dSkge1xuLVx0XHRcdFx0XHRmbmhlLVx1MDAzZWZuaGVfcG10dSA9IG5ldztcbi1cdFx0XHRcdFx0Zm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQgPSBmYWxzZTtcbi1cdFx0XHRcdH1cbi1cdFx0XHR9IGVsc2UgaWYgKG5ldyBcdTAwM2MgZm5oZS1cdTAwM2VmbmhlX3BtdHUgfHxcbi1cdFx0XHRcdCAgIG9yaWcgPT0gZm5oZS1cdTAwM2VmbmhlX3BtdHUpIHtcbi1cdFx0XHRcdGZuaGUtXHUwMDNlZm5oZV9wbXR1ID0gbmV3O1xuLVx0XHRcdH1cbi1cdFx0fVxuK1x0XHQgICAgIGZuaGUgPSByY3VfZGVyZWZlcmVuY2UoZm5oZS1cdTAwM2VmbmhlX25leHQpKVxuK1x0XHRcdGZuaGVfdXBkYXRlX3BtdHUoZm5oZSwgbmV3LCBvcmlnKTtcbiBcdH1cbitvdXQ6XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG4gdm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jXG5pbmRleCAxNTJkOGNiMjhmNjVhLi5iODI0MDFhNmJhZWQ3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvcm91dGUuY1xuKysrIGIvbmV0L2lwdjQvcm91dGUuY1xuQEAgLTc0MSw2ICs3NDEsMzUgQEAgc3RhdGljIHZvaWQgdXBkYXRlX29yX2NyZWF0ZV9mbmhlKHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGMsIF9fYmUzMiBkYWRkcixcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmZuaGVfbG9jayk7XG4gfVxuIFxuKy8qIFVwZGF0ZSB0aGUgUE1UVSBvZiBhbiBleGNlcHRpb24gd2hlbjpcbisgKiAtIHRoZSBuZXcgTVRVIG9mIHRoZSBmaXJzdCBob3AgYmVjb21lcyBzbWFsbGVyIHRoYW4gdGhlIFBNVFVcbisgKiAtIHRoZSBvbGQgTVRVIHdhcyB0aGUgc2FtZSBhcyB0aGUgUE1UVSwgYW5kIGl0IGxpbWl0ZWQgZGlzY292ZXJ5IG9mXG4rICogICBsYXJnZXIgTVRVcyBvbiB0aGUgcGF0aC4gV2l0aCB0aGF0IGxpbWl0IHJhaXNlZCwgd2UgY2FuIG5vd1xuKyAqICAgZGlzY292ZXIgbGFyZ2VyIE1UVXNcbisgKiBBIHNwZWNpYWwgY2FzZSBpcyBsb2NrZWQgZXhjZXB0aW9ucywgZm9yIHdoaWNoIHRoZSBQTVRVIGlzIHNtYWxsZXJcbisgKiB0aGFuIHRoZSBtaW5pbWFsIGFjY2VwdGVkIFBNVFU6XG4rICogLSBpZiB0aGUgbmV3IE1UVSBpcyBncmVhdGVyIHRoYW4gdGhlIFBNVFUsIGRvbid0IG1ha2UgYW55IGNoYW5nZVxuKyAqIC0gb3RoZXJ3aXNlLCB1bmxvY2sgYW5kIHNldCBQTVRVXG4rICpcbisgKiBmbmhlX2xvY2sga2VlcHMgZm5oZV9wbXR1IGFuZCBmbmhlX210dV9sb2NrZWQgY29uc2lzdGVudCBhZ2FpbnN0XG4rICogdXBkYXRlX29yX2NyZWF0ZV9mbmhlKCksIHdoaWNoIHNldHMgYm90aCB1bmRlciB0aGUgc2FtZSBsb2NrLlxuKyAqL1xuK3ZvaWQgZm5oZV91cGRhdGVfcG10dShzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZSwgdTMyIG5ldywgdTMyIG9yaWcpXG4re1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmZuaGVfbG9jayk7XG4rXG4rXHRpZiAoZm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQpIHtcbitcdFx0aWYgKG5ldyBcdTAwM2M9IGZuaGUtXHUwMDNlZm5oZV9wbXR1KSB7XG4rXHRcdFx0Zm5oZS1cdTAwM2VmbmhlX3BtdHUgPSBuZXc7XG4rXHRcdFx0Zm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQgPSBmYWxzZTtcbitcdFx0fVxuK1x0fSBlbHNlIGlmIChuZXcgXHUwMDNjIGZuaGUtXHUwMDNlZm5oZV9wbXR1IHx8IG9yaWcgPT0gZm5oZS1cdTAwM2VmbmhlX3BtdHUpIHtcbitcdFx0Zm5oZS1cdTAwM2VmbmhlX3BtdHUgPSBuZXc7XG4rXHR9XG4rXG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZmbmhlX2xvY2spO1xuK31cbitcbiBzdGF0aWMgdm9pZCBfX2lwX2RvX3JlZGlyZWN0KHN0cnVjdCBydGFibGUgKnJ0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG4gXHRcdFx0ICAgICBib29sIGtpbGxfcm91dGUpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6MDQuMDMxMTg1MDM3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgwMjA4Nzk5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBNVFUgVXBkYXRlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYGZpYl9uaGNfdXBkYXRlX210dWAgaW4gYG5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY2AgYW5kIGFkZGluZyBgZm5oZV91cGRhdGVfcG10dWAgdG8gYG5ldC9pcHY0L3JvdXRlLmNgLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBob3cgdGhlIFBhdGggTVRVIChQTVRVKSBpcyB1cGRhdGVkIGZvciBleGNlcHRpb25zIHdoZW4gdGhlIE1UVSBvZiB0aGUgZmlyc3QgaG9wIGNoYW5nZXMuIEdvb2QuIFNtYXJ0IHRvIHByb3RlY3QgYGZuaGVfcG10dWAgYW5kIGBmbmhlX210dV9sb2NrZWRgIHdpdGggUkNVIGFuZCBhIHNwaW5sb2NrLCBgZm5oZV9sb2NrYCDigJMgdGhhdCdzIGNydWNpYWwgZm9yIGNvbmN1cnJlbmN5LCBlc3BlY2lhbGx5IGluIHJvdXRpbmcuXG5cblJpZ2h0LCBzbyBsZXQncyBkaWcgaW50byBgZmliX25oY191cGRhdGVfbXR1YCBhbmQgdGhlIG5ldyBgZm5oZV91cGRhdGVfcG10dWAuIEltbWVkaWF0ZWx5LCBJIHNlZSB0aGlzIGlzIGFsbCBJUHY0IHJvdXRpbmcgbG9naWMsIHdoaWNoIG1lYW5zIGl0J3MgZGVmaW5pdGVseSBpbiB0aGUgY3JpdGljYWwgcGF0aC4gR29vZCBzcG90LiBgZmliX25oY191cGRhdGVfbXR1YCBpcyBjYWxsZWQgZnJvbSBgZmliX3N5bmNfbXR1YCwgd2hpY2ggaXRzZWxmIGdldHMgY2FsbGVkIHdoZW4gYSBkZXZpY2UncyBNVFUgY2hhbmdlcy4gR2l2ZW4gdGhlIGRldmljZSBNVFUgY2hhbmdlIHRyaWdnZXJzIHRoaXMgcGF0aCwgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gUHJvbWlzaW5nLCBhbmQgd29ydGggYSB0YXJnZXRlZCBmdXp6aW5nIGVmZm9ydC5cblxuTm93LCBsZXQncyBxdWlja2x5IGNoZWNrIGlmIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQuIGBmaWJfbmhjX3VwZGF0ZV9tdHVgIGlzIGFscmVhZHkgdGhlcmUgYW5kLCBhcyBleHBlY3RlZCwgYGZuaGVfdXBkYXRlX3BtdHVgIGlzIG5ldy4gSSBuZWVkIHRvIGZpbmQgdGhlIGNhbGxlcnMgb2YgYGZpYl9uaGNfdXBkYXRlX210dWAsIHNpbmNlIHRoYXQncyB0aGUgZXN0YWJsaXNoZWQgY29kZS4gTGV0J3Mgc2VlIHdoYXQncyBiZWluZyBhZmZlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM1MSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU2OjA5LjgzMzI3NTc4M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjUxMTEzMTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpYl9uaGNfdXBkYXRlX210dVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9pcF9maWIuaD00OTU9dm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KTtcXG5pbmNsdWRlL25ldC9pcF9maWIuaDo0OTY6dm9pZCBmaWJfbmhjX3VwZGF0ZV9tdHUoc3RydWN0IGZpYl9uaF9jb21tb24gKm5oYywgdTMyIG5ldywgdTMyIG9yaWcpO1xcbmluY2x1ZGUvbmV0L2lwX2ZpYi5oLTQ5Ny1cXG4tLVxcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYz0xODY5PXN0YXRpYyBpbnQgY2FsbF9maWJfbmhfbm90aWZpZXJzKHN0cnVjdCBmaWJfbmggKm5oLFxcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5MDEtICovXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jOjE5MDI6dm9pZCBmaWJfbmhjX3VwZGF0ZV9tdHUoc3RydWN0IGZpYl9uaF9jb21tb24gKm5oYywgdTMyIG5ldywgdTMyIG9yaWcpXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5MDMte1xcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jPTE5MjQ9dm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxcbi0tXFxubmV0L2lwdjQvZmliX3NlbWFudGljcy5jLTE5MzAtXFx0XFx0REVCVUdfTkVUX1dBUk5fT05fT05DRShuaC1cXHUwMDNlZmliX25oX2RldiAhPSBkZXYpO1xcbm5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYzoxOTMxOlxcdFxcdGZpYl9uaGNfdXBkYXRlX210dShcXHUwMDI2bmgtXFx1MDAzZW5oX2NvbW1vbiwgZGV2LVxcdTAwM2VtdHUsIG9yaWdfbXR1KTtcXG5uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMtMTkzMi1cXHR9XFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9Mzk1NT1zdGF0aWMgdm9pZCBuZXh0aG9wX3N5bmNfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBvcmlnX210dSlcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zOTY1LVxcdFxcdFxcdGlmIChuaGktXFx1MDAzZWZhbWlseSA9PSBBRl9JTkVUKVxcbm5ldC9pcHY0L25leHRob3AuYzozOTY2OlxcdFxcdFxcdFxcdGZpYl9uaGNfdXBkYXRlX210dShcXHUwMDI2bmhpLVxcdTAwM2VmaWJfbmhjLCBkZXYtXFx1MDAzZW10dSxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzk2Ny1cXHRcXHRcXHRcXHRcXHRcXHQgICBvcmlnX210dSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU2OjEyLjQ4NDM5NDY5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MzA5NTM4OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IE1UVSBTeW5jaHJvbml6YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYGZpYl9zeW5jX210dWAgYW5kIGBuZXh0aG9wX3N5bmNfbXR1YCBmdW5jdGlvbnMgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciB0aGlzIGNvZGUsIGFuZCB0aGV5J3JlIHRyaWdnZXJlZCBieSBuZXRkZXYgTVRVIGNoYW5nZXMg4oCTIHNwZWNpZmljYWxseSB0aGUgYE5FVERFVl9DSEFOR0VNVFVgIGV2ZW50LiBUaGF0IG1ha2VzIHRoaXMgYSBwcmV0dHkgYWNjZXNzaWJsZSBhbmQgcG90ZW50aWFsbHkgZnJ1aXRmdWwgYXJlYSBmb3IgZnV6emluZy4gRGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBzaXR1YXRpb24gd2hlcmUgYSBuZXR3b3JrIGRldmljZSdzIE1UVSBjaGFuZ2UgbmVlZHMgdG8gYmUgcHJvcGFnYXRlZCB0byB0aGUgZm9yd2FyZGluZyBpbmZvcm1hdGlvbiBiYXNlIChGSUIpIGFuZCBuZXh0IGhvcCB0YWJsZXMgdG8gZW5zdXJlIGNvbnNpc3RlbnQgcGFja2V0IHNpemUgaGFuZGxpbmcuIEEgbWlzY2FsY3VsYXRpb24gb3IgaW5jb25zaXN0ZW5jeSBoZXJlIGNvdWxkIGxlYWQgdG8gZnJhZ21lbnRhdGlvbiBpc3N1ZXMsIHBhdGggTVRVIGRpc2NvdmVyeSBwcm9ibGVtcywgb3IgZXZlbiBwb3RlbnRpYWwgZGVuaWFsLW9mLXNlcnZpY2UgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGUgcHJpbWFyeSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlOiBgZmliX25oY191cGRhdGVfbXR1YCwgYGZuaGVfdXBkYXRlX3BtdHVgLCBhbmQgb2YgY291cnNlIGBmaWJfc3luY19tdHVgIGFuZCBgbmV4dGhvcF9zeW5jX210dWAgdGhlbXNlbHZlcy4gVGhlc2UgYXJlIHRoZSB3b3JraG9yc2VzIGRvaW5nIHRoZSBhY3R1YWwgdXBkYXRlcyBhbmQgc3luY2hyb25pemF0aW9uLlxuXG5JIHNob3VsZCBhbHNvIGNoZWNrIGBuZXQvaXB2NC9LY29uZmlnYCBmb3IgYW55IGZlYXR1cmUgZmxhZ3MgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhlIGJlaGF2aW9yIG9mIHRoaXMgY29kZS4gYElQX1JPVVRFX01VTFRJUEFUSGAgaXMgYSBzdHJvbmcgbWF5YmU7IGlmIG11bHRpcGxlIHBhdGhzIGFyZSBpbnZvbHZlZCwgdGhlIE1UVSBzeW5jaHJvbml6YXRpb24gbG9naWMgd2lsbCBsaWtlbHkgYmUgbW9yZSBjb21wbGV4LiBgSVBfUk9VVEVfQ0xBU1NJRGAgaXMgYW5vdGhlciBvbmUgdG8gY29uc2lkZXIuXG5cbkVzc2VudGlhbGx5LCBJJ20gdGhpbmtpbmcgdGhhdCBpZiBJIGNhbiByZWxpYWJseSB0cmlnZ2VyIGBORVRERVZfQ0hBTkdFTVRVYCBldmVudHMgYW5kIGNhcmVmdWxseSBjcmFmdCB0aGUgcGFyYW1ldGVycywgSSBjYW4gc3RhcnQgcHJvYmluZyBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgTVRVIHN5bmNocm9uaXphdGlvbiBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgRklCLCBuZXh0IGhvcHMsIGFuZCBwYXRoIE1UVSBkaXNjb3ZlcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MTgsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6MTguMDE1MzUzMDE0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTcwMDA4MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1JPVVRFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9NjM9Y29uZmlnIElQX01VTFRJUExFX1RBQkxFU1xcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy03OS1cXG5uZXQvaXB2NC9LY29uZmlnOjgwOmNvbmZpZyBJUF9ST1VURV9NVUxUSVBBVEhcXG5uZXQvaXB2NC9LY29uZmlnLTgxLVxcdGJvb2wgXFxcIklQOiBlcXVhbCBjb3N0IG11bHRpcGF0aFxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctOTEtXFxubmV0L2lwdjQvS2NvbmZpZzo5Mjpjb25maWcgSVBfUk9VVEVfVkVSQk9TRVxcbm5ldC9pcHY0L0tjb25maWctOTMtXFx0Ym9vbCBcXFwiSVA6IHZlcmJvc2Ugcm91dGUgbW9uaXRvcmluZ1xcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTAyLVxcbm5ldC9pcHY0L0tjb25maWc6MTAzOmNvbmZpZyBJUF9ST1VURV9DTEFTU0lEXFxubmV0L2lwdjQvS2NvbmZpZy0xMDQtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMDo1NjoyMC4zMzIzNTkwOTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTIwNzcxNTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgSVB2NCBSb3V0aW5nIENvZGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIElQdjQgcm91dGluZyBpbXBsZW1lbnRhdGlvbi4gV2hlcmUgZG8gSSBzdGFydD8gUmlnaHQsIHRoZSBjb3JlIGxvZ2ljIHNob3VsZCBiZSBpbiBgbmV0L2lwdjQvZmliX3NlbWFudGljcy5jYCBhbmQgYG5ldC9pcHY0L3JvdXRlLmNgLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLiBBbmQgc2luY2UgdGhpcyBpcyBJUHY0LCBpdCdzIGNvbXBpbGVkIGluIHVuY29uZGl0aW9uYWxseTsgbm8gbmVlZCB0byB3b3JyeSBhYm91dCBjb25kaXRpb25hbHMuIE5vdywgdG8gYmUgY29tcGxldGVseSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgcGllY2VzLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGJ1aWxkIHByb2Nlc3MuIExldCBtZSBxdWlja2x5IGNoZWNrIGBuZXQvaXB2NC9NYWtlZmlsZWAuIFRoYXQgc2hvdWxkIGNvbmZpcm0gaG93IHRoZXNlIGZpbGVzIGFyZSBoYW5kbGVkIGR1cmluZyB0aGUgY29tcGlsYXRpb24gc3RhZ2UgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBtb2R1bGVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMwNSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU2OjIzLjQ1MzEzMjU4MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg1MDY5MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpYl9zZW1hbnRpY3Mub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZS0xNC1cXHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNTpcXHQgICAgIGZpYl9mcm9udGVuZC5vIGZpYl9zZW1hbnRpY3MubyBmaWJfdHJpZS5vIGZpYl9ub3RpZmllci5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNi1cXHQgICAgIGluZXRfZnJhZ21lbnQubyBwaW5nLm8gaXBfdHVubmVsX2NvcmUubyBncmVfb2ZmbG9hZC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6MjYuMDM4MjA1OTE5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAzMDQzNDE3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqSVB2NCBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgc28gdGhlIGJ1aWxkIHByb2Nlc3MgZXhwbGljaXRseSBpbmNsdWRlcyBJUHY0IHN1cHBvcnQsIG5vIG1hdHRlciB3aGF0LiBUaGF0IG1lYW5zLCB0byBnZXQgdGhpbmdzIHVwIGFuZCBydW5uaW5nLCBhbGwgSSAqcmVhbGx5KiBuZWVkIHRvIGZvY3VzIG9uIGlzIHRoZSBgSU5FVGAgY29uZmlndXJhdGlvbi4gVGhhdCdzIHRoZSBiYXNlbGluZS5cblxuTm93LCBiZWZvcmUgSSBwcm9jZWVkIGZ1cnRoZXIsIGxldCdzIGp1c3QgY29uZmlybSB0aGF0IHRoYXQgYGZuaGVfdXBkYXRlX3BtdHVgIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGV4cG9zZWQgYW5kIGF2YWlsYWJsZSBmb3IgdXNlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgY2FuIGludGVyZmFjZSB3aXRoIGl0IGlmIG5lY2Vzc2FyeS4gQSBxdWljayBjaGVjayBvZiB0aGUgZXhwb3J0cyB3aWxsIGNvbmZpcm0gdGhpcyBmb3IgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NzEsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMDo1NjoyOS4wNjg2NDI2MjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NTc4MzE3NzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmZuaGVfdXBkYXRlX3BtdHVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU2OjMxLjYyNjQ4MzUwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjkzNjkzOTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipBbmFseXppbmcgRnVuY3Rpb24gRGVjbGFyYXRpb24gYW5kIEV4cG9ydCBTdGF0dXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24sIGl0J3Mgbm90IGFjdHVhbGx5IGV4cG9ydGVkIGFzIHN1Y2gsIG1lYW5pbmcgaXQncyBub3QgZGVmaW5lZCB3aXRoaW4gYSBgLmNgIGZpbGUgYW5kIHRoZW4gZGVjbGFyZWQgaW4gYSBoZWFkZXIgZmlsZSBmb3Igb3RoZXIgbW9kdWxlcyB0byB1c2UuIEl04oCZcyBkZWNsYXJlZCwgYW5kIHRoZXJlZm9yZSBkZWZpbmVkIHdpdGhpbiBgaW5jbHVkZS9uZXQvcm91dGUuaGAuIFRoYXQgbWFrZXMgaXQgYSBub24tc3RhdGljIGZ1bmN0aW9uLiBTbywgaXQncyBub3QgYSB0cnVseSBzdGF0aWMgZnVuY3Rpb247IGl0IGhhcyB2aXNpYmlsaXR5IHdpdGhpbiB0aGUgbW9kdWxlIGl0IGJlbG9uZ3MgdG8sIGJ1dCBpc27igJl0ICpleHBsaWNpdGx5KiBleHBvcnRlZCBmb3IgZXh0ZXJuYWwgdXNlLiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgYWNjZXNzIGNvbnRyb2wuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGlmIGBmaWJfbmhjX3VwZGF0ZV9tdHVgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgaXRzIGRlZmluaXRpb24gYW5kIHZpc2liaWxpdHkgYXJlIGFzIHN1c3BlY3RlZC4gVGhpcyBzdGVwIGlzIGNydWNpYWwgZm9yIHZlcmlmeWluZyBob3cgaXQncyBpbnRlbmRlZCB0byBiZSB1dGlsaXplZCB3aXRoaW4gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg4NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU2OjM0LjkyMDE4MDAyOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxNzU2NDkwMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qZmliX25oY191cGRhdGVfbXR1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMDo1NjozNy40Mzc3NTI3ODhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxMzkzNjQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgTm9uLUV4cG9ydGVkLCBOb24tU3RhdGljIFZhcmlhYmxlcyoqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyBjb2RlYmFzZSBhbmQgSSd2ZSBzdHVtYmxlZCB1cG9uIHNvbWV0aGluZyB0aGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdDogYSB2YXJpYWJsZSB0aGF0J3MgKm5vdCogcGFydCBvZiB0aGUgZXhwb3J0ZWQgQVBJLCB5ZXQgYWxzbyBpc24ndCBkZWNsYXJlZCBgc3RhdGljYC4gVGhpcyBpcyBhIGNsYXNzaWMgcG90ZW50aWFsIHBvaW50IG9mIGNvbmZ1c2lvbiBhbmQvb3IgdW5pbnRlbnRpb25hbCBhY2Nlc3MuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgd2hlcmUgaXMgdGhpcyB2YXJpYWJsZSBiZWluZyB1c2VkPyBJcyBpdCB0cnVseSAqaW50ZW5kZWQqIHRvIGJlIGhpZGRlbj8gQW5kIGlmIHNvLCB3aHkgaXMgaXQgbm9uLXN0YXRpYz8gSXMgaXQgdXNlZCBpbiB0aGlzIGZpbGUgaW4gd2F5cyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSBsb2NhbCB0byB0aGUgZmlsZSwgYW5kIHNob3VsZCB0aHVzIGJlIHN0YXRpYz8gT3IgaXMgaXQgZ2xvYmFsbHkgYWNjZXNzZWQgaW4gYW5vdGhlciBwbGFjZT9cblxuU28sIEkgdGhpbmsgdGhlIG5leHQgbG9naWNhbCBzdGVwIGhlcmUgaXMgdG8gY29uZmlybSB3aGV0aGVyIGBmaWJfc3luY19tdHVgIGlzIGV4cG9ydGVkLiBMZXQncyBzZWUgaWYgdGhlIGxpbmtlciB0ZWxscyB1cyBzb21ldGhpbmcgaGVyZS4gVGltZSB0byBjaGVjayB0aGUgc3ltYm9sIHRhYmxlISBJJ2xsIHF1aWNrbHkgdXNlIG15IHN0YW5kYXJkIHRvb2xzIChubSwgb2JqZHVtcCwgb3IgbWF5YmUgZXZlbiBncmVwKSB0byBwaW5wb2ludCBpdHMgc3RhdHVzLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBleHBvcnQsIGp1c3QgdG8gYmUgc3VyZS4gSSdtIGdvaW5nIHRvIHRyYWNrIGl0IGRvd24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNzUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMDo1Njo0MC45NTE2OTE1NDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODUxNjE4NDQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmZpYl9zeW5jX210dVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6NDMuNjM2ODU5NDMyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NzUzNzcxMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byBFeHBvcnRlZCBWYXJpYWJsZXMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBleHBvcnRhYmlsaXR5LiBJJ3ZlIG5vdGljZWQgc29tZXRoaW5nLCBhbmQgaXQncyBnb3QgbWUgY3VyaW91cy4gU3BlY2lmaWNhbGx5LCBJJ20gZm9jdXNpbmcgb24gdmFyaWFibGVzIHRoYXQgYXJlbid0ICpleHBsaWNpdGx5KiBmbGFnZ2VkIGZvciBleHBvcnQgKG5vbi1zdGF0aWMsIGJ5IHRoZSBsb29rcyBvZiBpdCkuIFRoaXMgbWVhbnMgdGhleSBhcmVuJ3QgZGlyZWN0bHkgYXZhaWxhYmxlIG91dHNpZGUgdGhlaXIgY29udGFpbmluZyBzY29wZSBieSBkZWZhdWx0LiBUaGlzIHJhaXNlcyBhbiBpbnRlcmVzdGluZyBxdWVzdGlvbiBhYm91dCBhY2Nlc3NpYmlsaXR5IGFuZCBob3cgdGhlc2UgdmFyaWFibGVzIGFyZSB1c2VkLlxuXG5UbyBtYWtlIHN1cmUgSSBmdWxseSB1bmRlcnN0YW5kLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBgbmV4dGhvcF9zeW5jX210dWAgaXMgZXhwb3J0ZWQuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSB0aGUgY29udGV4dCBvZiBpdHMgdXNlIHdpdGhpbiB0aGUgbGFyZ2VyIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ5NiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU2OjQ2LjYxMjI0MDQxN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYxNzM0Mzk2NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qbmV4dGhvcF9zeW5jX210dVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6NDkuMjI5NTkxNDk0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTk1NzQ1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBkcmF3aW5nIG9uIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBNVFUgU3luY2hyb25pemF0aW9uIGFuZCBTY29wZSoqXG5cbkFscmlnaHQsIHNvIHRoZXNlIGZ1bmN0aW9ucyBhcmVuJ3QgYmVpbmcgZXhwb3J0ZWQsIGJ1dCB0aGV5J3JlICphbHNvKiBub3QgZGVjbGFyZWQgYXMgc3RhdGljLiBJbnRlcmVzdGluZy4gVGhhdCBzdWdnZXN0cyB0aGV5IGhhdmUgaW50ZXJuYWwgdXNlIHdpdGhpbiB0aGUgbGlicmFyeSBvciBtb2R1bGUsIGJ1dCBhcmUgcG90ZW50aWFsbHkgYWNjZXNzaWJsZSBpbiBhIHdheSB0aGF0IGdvZXMgYmV5b25kIGEgc3RyaWN0bHkgcHJpdmF0ZSBzY29wZS4gV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhhdCBhc3N1bXB0aW9uLlxuXG5UaGUga2V5IGZvY3VzIHNlZW1zIHRvIGJlIG9uIHRoZXNlIE1UVS1yZWxhdGVkIGZ1bmN0aW9uczogYGZpYl9uaGNfdXBkYXRlX210dWAsIGBmbmhlX3VwZGF0ZV9wbXR1YCwgYW5kIGBmaWJfc3luY19tdHVgLiBUaGVzZSBhcmUgdGhlIGNvcmUgcm91dGluZXMgcmVzcG9uc2libGUgZm9yIHN5bmNocm9uaXppbmcgTVRVIChNYXhpbXVtIFRyYW5zbWlzc2lvbiBVbml0KSB2YWx1ZXMgYWNyb3NzIHRoZSBmb3J3YXJkaW5nIGluZm9ybWF0aW9uIGJhc2UgKEZJQikgYW5kIHJlbGF0ZWQgZGF0YSBzdHJ1Y3R1cmVzLiBNYWtlcyBzZW5zZTsgTVRVIGluY29uc2lzdGVuY2llcyBjYW4gY2F1c2Ugc2VyaW91cyBwYWNrZXQgZnJhZ21lbnRhdGlvbiBpc3N1ZXMuXG5cbk5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uLCBhbmQgdGhpcyBpcyB3aGVyZSBJJ2xsIGRpdmUgYSBsaXR0bGUgZGVlcGVyOiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHNjb3BlIG9mIGBuZXh0aG9wX3N5bmNfbXR1YC4gSXMgdGhhdCBmdW5jdGlvbiBzdGF0aWM/IElmIGl0ICppcyogc3RhdGljLCB0aGVuIGl0cyB1c2UgaXMgc3RyaWN0bHkgbGltaXRlZCB0byB0aGUgZmlsZSBpdCdzIGRlZmluZWQgaW4sIHdoaWNoIHNpbXBsaWZpZXMgdGhlIG92ZXJhbGwgbWVudGFsIG1vZGVsIGEgYml0LiBJZiBpdCdzICpub3QqIHN0YXRpYywgdGhlbiBpdCdzIGFjY2Vzc2libGUgYXQgbW9kdWxlIHNjb3BlIG9yIG1heWJlIGV2ZW4gZ2xvYmFsbHksIGFuZCB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBvdGhlciBmdW5jdGlvbnMuIEknbGwgY2hlY2sgdGhhdCBuZXh0LiBUaGF0J3Mga2V5IGZvciBkZXBlbmRlbmN5IGFuZCBzY29wZSBtYXBwaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzI2LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTY6NTIuODQ5MTY4MjA5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjcyNjExOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5leHRob3Bfc3luY19tdHVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jPTM5MDg9c3RhdGljIGludCBydG1fZ2V0X25leHRob3BfYnVja2V0KHN0cnVjdCBza19idWZmICppbl9za2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTM5NTQtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjM5NTU6c3RhdGljIHZvaWQgbmV4dGhvcF9zeW5jX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgb3JpZ19tdHUpXFxubmV0L2lwdjQvbmV4dGhvcC5jLTM5NTYte1xcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jPTM5NzM9c3RhdGljIGludCBuaF9uZXRkZXZfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTM5ODktXFx0XFx0aW5mb19leHQgPSBwdHI7XFxubmV0L2lwdjQvbmV4dGhvcC5jOjM5OTA6XFx0XFx0bmV4dGhvcF9zeW5jX210dShkZXYsIGluZm9fZXh0LVxcdTAwM2VleHQubXR1KTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzk5MS1cXHRcXHRydF9jYWNoZV9mbHVzaChkZXZfbmV0KGRldikpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMDo1Njo1NS4xMjE3ODc0ODdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwMTIxNzk5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQdjQgUE1UVSBVcGRhdGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIG1vZGlmeWluZyB0aGUgSVB2NCByb3V0aW5nIGxvZ2ljIGZvciBQYXRoIE1UVSAoUE1UVSkgdXBkYXRlcyBpbiBmaWIgbmV4dGhvcCBleGNlcHRpb25zLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZSBmdW5jdGlvbnMgYGZuaGVfdXBkYXRlX3BtdHVgIGFuZCB0aGUgbW9kaWZpZWQgYGZpYl9uaGNfdXBkYXRlX210dWAuIFRoZSBjb2RlIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBNVFUgb2YgYSBuZXR3b3JrIGRldmljZSBjaGFuZ2VzLCB3aGljaCB0aGVuIGtpY2tzIG9mZiBgZmliX3N5bmNfbXR1YCBhbmQgYG5leHRob3Bfc3luY19tdHVgLiBHb29kLiBJdCdzIGNvcmUgbmV0d29ya2luZyBzdHVmZiwgc28gZGVmaW5pdGVseSBmdXp6aW5nIHRhcmdldHMuXG5cbkkgc2VlIHRoYXQgYG5leHRob3Bfc3luY19tdHVgIGlzIHN0YXRpYyBzbyB3ZSBjYW4gb21pdCB0aGlzIGZyb20gYW55IGFuYWx5c2lzLlxuXG5Ob3csIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9uIHZpc2liaWxpdHkuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZS4gT2theSwgaGVyZSBhcmUgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXM6XG4qICAgYHZvaWQgZmliX25oY191cGRhdGVfbXR1KHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGMsIHUzMiBuZXcsIHUzMiBvcmlnKWAgLSBOb3Qgc3RhdGljLiBHb29kIHRvIGtub3cuXG4qICAgYHZvaWQgZm5oZV91cGRhdGVfcG10dShzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZSwgdTMyIG5ldywgdTMyIG9yaWcpYCAtIE5vdCBzdGF0aWMuIEFuZCBgZm5oZV91cGRhdGVfcG10dWAgaXMgd2hhdCdzIG5ld2x5IGludHJvZHVjZWQuXG4qICAgYHZvaWQgZmliX3N5bmNfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBvcmlnX210dSlgIC0gTm90IHN0YXRpYy5cblxuYElORVRgIGlzIG9idmlvdXNseSByZWxldmFudCAoSVB2NCksIGJ1dCBJJ20gZ29pbmcgdG8gbGVhdmUgdGhlIGNvbmZpZyBzZWN0aW9uIGVtcHR5IHNpbmNlIGl0J3MgcHJvYmFibHkgZW5hYmxlZCBieSBkZWZhdWx0LiBPa2F5LCBJIGhhdmUgZXZlcnl0aGluZyBJIG5lZWQsIGFuZCBub3cgSSdsbCBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczODgsIk91dHB1dFRva2VucyI6MTk0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU3OjAyLjkyMzAwODEzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4MjQwNzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZm5oZV91cGRhdGVfcG10dVwiLFxuICAgIFwiZmliX25oY191cGRhdGVfbXR1XCIsXG4gICAgXCJmaWJfc3luY19tdHVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSVB2NCByb3V0aW5nIGxvZ2ljIHRvIGNvcnJlY3RseSB1cGRhdGUgdGhlIFBhdGggTVRVIChQTVRVKSBvZiBmaWIgbmV4dGhvcCBleGNlcHRpb25zIHdoZW4gdGhlIE1UVSBvZiB0aGUgZmlyc3QgaG9wIGNoYW5nZXMuIEl0IGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYGZuaGVfdXBkYXRlX3BtdHVgIGFuZCBtb2RpZmllcyBgZmliX25oY191cGRhdGVfbXR1YCB0byB1c2UgUkNVIGFuZCBhIHNwaW5sb2NrLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGJ5IGNoYW5naW5nIHRoZSBNVFUgb2YgYSBuZXR3b3JrIGRldmljZSAoZS5nLiwgdmlhIG5ldGxpbmsgb3IgaW9jdGwpIHdoaWNoIHRyaWdnZXJzIGBmaWJfc3luY19tdHVgIGFuZCBgbmV4dGhvcF9zeW5jX210dWAuIFRoaXMgaXMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmbmhlX3VwZGF0ZV9wbXR1XCIsXG4gICAgXCJmaWJfbmhjX3VwZGF0ZV9tdHVcIixcbiAgICBcImZpYl9zeW5jX210dVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJUHY0IHJvdXRpbmcgbG9naWMgdG8gY29ycmVjdGx5IHVwZGF0ZSB0aGUgUGF0aCBNVFUgKFBNVFUpIG9mIGZpYiBuZXh0aG9wIGV4Y2VwdGlvbnMgd2hlbiB0aGUgTVRVIG9mIHRoZSBmaXJzdCBob3AgY2hhbmdlcy4gSXQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgZm5oZV91cGRhdGVfcG10dWAgYW5kIG1vZGlmaWVzIGBmaWJfbmhjX3VwZGF0ZV9tdHVgIHRvIHVzZSBSQ1UgYW5kIGEgc3BpbmxvY2suIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYnkgY2hhbmdpbmcgdGhlIE1UVSBvZiBhIG5ldHdvcmsgZGV2aWNlIChlLmcuLCB2aWEgbmV0bGluayBvciBpb2N0bCkgd2hpY2ggdHJpZ2dlcnMgYGZpYl9zeW5jX210dWAgYW5kIGBuZXh0aG9wX3N5bmNfbXR1YC4gVGhpcyBpcyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU3OjAzLjA0MTI1NDk5NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ2MzQ1NTg3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjU3OjAzLjA0MTcyOTIzNloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NDYyOTc2NjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSAobWlzc2luZyBSQ1UgcmVhZCBsb2NrIGFuZCBzcGlubG9jayBwcm90ZWN0aW9uKSB3aGVuIHVwZGF0aW5nIFBNVFUgaW4gZmliX25oX2V4Y2VwdGlvbiBlbnRyaWVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOLCBLQ1NBTiwgb3IgTE9DS0RFUCBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjI3MzM2NDMxOTNhNGVhZjUwZmRjNmVmYzIwYjIwMjNlNjM5N2Q4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMjA6NTY6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9yb3V0ZS5oIGIvaW5jbHVkZS9uZXQvcm91dGUuaFxuaW5kZXggZjkwMTA2ZjM4M2M1Ni4uNDUyOTAxNzdhMzNjNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3JvdXRlLmhcbisrKyBiL2luY2x1ZGUvbmV0L3JvdXRlLmhcbkBAIC0yNzYsNiArMjc2LDggQEAgaW50IGZpYl9kdW1wX2luZm9fZm5oZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsXG4gXHRcdCAgICAgICB1MzIgdGFibGVfaWQsIHN0cnVjdCBmaWJfaW5mbyAqZmksXG4gXHRcdCAgICAgICBpbnQgKmZhX2luZGV4LCBpbnQgZmFfc3RhcnQsIHVuc2lnbmVkIGludCBmbGFncyk7XG4gXG4rdm9pZCBmbmhlX3VwZGF0ZV9wbXR1KHN0cnVjdCBmaWJfbmhfZXhjZXB0aW9uICpmbmhlLCB1MzIgbmV3LCB1MzIgb3JpZyk7XG4rXG4gc3RhdGljIGlubGluZSB2b2lkIGlwX3J0X3B1dChzdHJ1Y3QgcnRhYmxlICpydClcbiB7XG4gXHQvKiBkc3RfcmVsZWFzZSgpIGFjY2VwdHMgYSBOVUxMIHBhcmFtZXRlci5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMgYi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcbmluZGV4IDc4Zjg0YWUzZWUxMjAuLjA0ODM1MTliN2ZiMGQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmNcbisrKyBiL25ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY1xuQEAgLTE4OTUsNDIgKzE4OTUsMzAgQEAgc3RhdGljIGludCBjYWxsX2ZpYl9uaF9ub3RpZmllcnMoc3RydWN0IGZpYl9uaCAqbmgsXG4gXHRyZXR1cm4gTk9USUZZX0RPTkU7XG4gfVxuIFxuLS8qIFVwZGF0ZSB0aGUgUE1UVSBvZiBleGNlcHRpb25zIHdoZW46XG4tICogLSB0aGUgbmV3IE1UVSBvZiB0aGUgZmlyc3QgaG9wIGJlY29tZXMgc21hbGxlciB0aGFuIHRoZSBQTVRVXG4tICogLSB0aGUgb2xkIE1UVSB3YXMgdGhlIHNhbWUgYXMgdGhlIFBNVFUsIGFuZCBpdCBsaW1pdGVkIGRpc2NvdmVyeSBvZlxuLSAqICAgbGFyZ2VyIE1UVXMgb24gdGhlIHBhdGguIFdpdGggdGhhdCBsaW1pdCByYWlzZWQsIHdlIGNhbiBub3dcbi0gKiAgIGRpc2NvdmVyIGxhcmdlciBNVFVzXG4tICogQSBzcGVjaWFsIGNhc2UgaXMgbG9ja2VkIGV4Y2VwdGlvbnMsIGZvciB3aGljaCB0aGUgUE1UVSBpcyBzbWFsbGVyXG4tICogdGhhbiB0aGUgbWluaW1hbCBhY2NlcHRlZCBQTVRVOlxuLSAqIC0gaWYgdGhlIG5ldyBNVFUgaXMgZ3JlYXRlciB0aGFuIHRoZSBQTVRVLCBkb24ndCBtYWtlIGFueSBjaGFuZ2Vcbi0gKiAtIG90aGVyd2lzZSwgdW5sb2NrIGFuZCBzZXQgUE1UVVxuKy8qIFdhbGsgdGhlIGV4Y2VwdGlvbnMgb2YgYSBuZXh0aG9wIGFmdGVyIGl0cyBmaXJzdCBob3AgTVRVIGNoYW5nZWQuIFRoZVxuKyAqIGNoYWluIGlzIFJDVSBwcm90ZWN0ZWQgaGVyZSwgd2hpbGUgZm5oZV91cGRhdGVfcG10dSgpIHRha2VzIGZuaGVfbG9ja1xuKyAqIGZvciB0aGUgdXBkYXRlIG9mIGVhY2ggZW50cnkuXG4gICovXG4gdm9pZCBmaWJfbmhjX3VwZGF0ZV9tdHUoc3RydWN0IGZpYl9uaF9jb21tb24gKm5oYywgdTMyIG5ldywgdTMyIG9yaWcpXG4ge1xuIFx0c3RydWN0IGZuaGVfaGFzaF9idWNrZXQgKmJ1Y2tldDtcbiBcdGludCBpO1xuIFxuLVx0YnVja2V0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChuaGMtXHUwMDNlbmhjX2V4Y2VwdGlvbnMsIDEpO1xuK1x0cmN1X3JlYWRfbG9jaygpO1xuK1x0YnVja2V0ID0gcmN1X2RlcmVmZXJlbmNlKG5oYy1cdTAwM2VuaGNfZXhjZXB0aW9ucyk7XG4gXHRpZiAoIWJ1Y2tldClcbi1cdFx0cmV0dXJuO1xuK1x0XHRnb3RvIG91dDtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEZOSEVfSEFTSF9TSVpFOyBpKyspIHtcbiBcdFx0c3RydWN0IGZpYl9uaF9leGNlcHRpb24gKmZuaGU7XG4gXG4tXHRcdGZvciAoZm5oZSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoYnVja2V0W2ldLmNoYWluLCAxKTtcbitcdFx0Zm9yIChmbmhlID0gcmN1X2RlcmVmZXJlbmNlKGJ1Y2tldFtpXS5jaGFpbik7XG4gXHRcdCAgICAgZm5oZTtcbi1cdFx0ICAgICBmbmhlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChmbmhlLVx1MDAzZWZuaGVfbmV4dCwgMSkpIHtcbi1cdFx0XHRpZiAoZm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQpIHtcbi1cdFx0XHRcdGlmIChuZXcgXHUwMDNjPSBmbmhlLVx1MDAzZWZuaGVfcG10dSkge1xuLVx0XHRcdFx0XHRmbmhlLVx1MDAzZWZuaGVfcG10dSA9IG5ldztcbi1cdFx0XHRcdFx0Zm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQgPSBmYWxzZTtcbi1cdFx0XHRcdH1cbi1cdFx0XHR9IGVsc2UgaWYgKG5ldyBcdTAwM2MgZm5oZS1cdTAwM2VmbmhlX3BtdHUgfHxcbi1cdFx0XHRcdCAgIG9yaWcgPT0gZm5oZS1cdTAwM2VmbmhlX3BtdHUpIHtcbi1cdFx0XHRcdGZuaGUtXHUwMDNlZm5oZV9wbXR1ID0gbmV3O1xuLVx0XHRcdH1cbi1cdFx0fVxuK1x0XHQgICAgIGZuaGUgPSByY3VfZGVyZWZlcmVuY2UoZm5oZS1cdTAwM2VmbmhlX25leHQpKVxuK1x0XHRcdGZuaGVfdXBkYXRlX3BtdHUoZm5oZSwgbmV3LCBvcmlnKTtcbiBcdH1cbitvdXQ6XG4rXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG4gdm9pZCBmaWJfc3luY19tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIG9yaWdfbXR1KVxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jXG5pbmRleCAxNTJkOGNiMjhmNjVhLi5iODI0MDFhNmJhZWQ3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvcm91dGUuY1xuKysrIGIvbmV0L2lwdjQvcm91dGUuY1xuQEAgLTc0MSw2ICs3NDEsMzUgQEAgc3RhdGljIHZvaWQgdXBkYXRlX29yX2NyZWF0ZV9mbmhlKHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGMsIF9fYmUzMiBkYWRkcixcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmZuaGVfbG9jayk7XG4gfVxuIFxuKy8qIFVwZGF0ZSB0aGUgUE1UVSBvZiBhbiBleGNlcHRpb24gd2hlbjpcbisgKiAtIHRoZSBuZXcgTVRVIG9mIHRoZSBmaXJzdCBob3AgYmVjb21lcyBzbWFsbGVyIHRoYW4gdGhlIFBNVFVcbisgKiAtIHRoZSBvbGQgTVRVIHdhcyB0aGUgc2FtZSBhcyB0aGUgUE1UVSwgYW5kIGl0IGxpbWl0ZWQgZGlzY292ZXJ5IG9mXG4rICogICBsYXJnZXIgTVRVcyBvbiB0aGUgcGF0aC4gV2l0aCB0aGF0IGxpbWl0IHJhaXNlZCwgd2UgY2FuIG5vd1xuKyAqICAgZGlzY292ZXIgbGFyZ2VyIE1UVXNcbisgKiBBIHNwZWNpYWwgY2FzZSBpcyBsb2NrZWQgZXhjZXB0aW9ucywgZm9yIHdoaWNoIHRoZSBQTVRVIGlzIHNtYWxsZXJcbisgKiB0aGFuIHRoZSBtaW5pbWFsIGFjY2VwdGVkIFBNVFU6XG4rICogLSBpZiB0aGUgbmV3IE1UVSBpcyBncmVhdGVyIHRoYW4gdGhlIFBNVFUsIGRvbid0IG1ha2UgYW55IGNoYW5nZVxuKyAqIC0gb3RoZXJ3aXNlLCB1bmxvY2sgYW5kIHNldCBQTVRVXG4rICpcbisgKiBmbmhlX2xvY2sga2VlcHMgZm5oZV9wbXR1IGFuZCBmbmhlX210dV9sb2NrZWQgY29uc2lzdGVudCBhZ2FpbnN0XG4rICogdXBkYXRlX29yX2NyZWF0ZV9mbmhlKCksIHdoaWNoIHNldHMgYm90aCB1bmRlciB0aGUgc2FtZSBsb2NrLlxuKyAqL1xuK3ZvaWQgZm5oZV91cGRhdGVfcG10dShzdHJ1Y3QgZmliX25oX2V4Y2VwdGlvbiAqZm5oZSwgdTMyIG5ldywgdTMyIG9yaWcpXG4re1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmZuaGVfbG9jayk7XG4rXG4rXHRpZiAoZm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQpIHtcbitcdFx0aWYgKG5ldyBcdTAwM2M9IGZuaGUtXHUwMDNlZm5oZV9wbXR1KSB7XG4rXHRcdFx0Zm5oZS1cdTAwM2VmbmhlX3BtdHUgPSBuZXc7XG4rXHRcdFx0Zm5oZS1cdTAwM2VmbmhlX210dV9sb2NrZWQgPSBmYWxzZTtcbitcdFx0fVxuK1x0fSBlbHNlIGlmIChuZXcgXHUwMDNjIGZuaGUtXHUwMDNlZm5oZV9wbXR1IHx8IG9yaWcgPT0gZm5oZS1cdTAwM2VmbmhlX3BtdHUpIHtcbitcdFx0Zm5oZS1cdTAwM2VmbmhlX3BtdHUgPSBuZXc7XG4rXHR9XG4rXG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZmbmhlX2xvY2spO1xuK31cbitcbiBzdGF0aWMgdm9pZCBfX2lwX2RvX3JlZGlyZWN0KHN0cnVjdCBydGFibGUgKnJ0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG4gXHRcdFx0ICAgICBib29sIGtpbGxfcm91dGUpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6NTc6MDMuMDQxNzI5OTc2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0NjI5NDcwMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogQSBTb2xpZCBDb25jdXJyZW5jeSBCdWcgRml4KipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCdzIGEgY3JpdGljYWwgZml4LCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGEgY29uY3VycmVuY3kgYnVnIHdpdGhpbiB0aGUgYGZpYl9uaF9leGNlcHRpb25gIGhhbmRsaW5nLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBob3cgTVRVIHVwZGF0ZXMgYXJlIG1hbmFnZWQgaW4gdGhlIHByZXNlbmNlIG9mIHRoZXNlIGV4Y2VwdGlvbnMsIGEgY29tbW9uIGFyZWEgZm9yIHN1YnRsZSByYWNlIGNvbmRpdGlvbnMgaW4gYSBuZXR3b3JrIHN0YWNrLlxuXG5QcmV2aW91c2x5LCB0aGUgYGZpYl9uaGNfdXBkYXRlX210dWAgZnVuY3Rpb24gaW4gYG5ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuY2AgaGFkIGEgZmxhdy4gSXQgd2FzIGl0ZXJhdGluZyB0aHJvdWdoIGV4Y2VwdGlvbiBlbnRyaWVzIHVzaW5nIGByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkYCB3aXRob3V0IGhvbGRpbmcgYSBwcm9wZXIgUkNVIHJlYWQgbG9jayBvciB0aGUgYXBwcm9wcmlhdGUgc3BpbmxvY2sgKGBmbmhlX2xvY2tgKS4gVGhpcyBpcyB3aGVyZSB0aGUgcmFjZSBjb25kaXRpb24gbGlrZWx5IGV4aXN0ZWQsIGEgdGV4dGJvb2sgZXhhbXBsZSBvZiBkYXRhIHJhY2UgdnVsbmVyYWJpbGl0eSwgZXNwZWNpYWxseSBpbiBhIGhlYXZpbHkgdGhyZWFkZWQga2VybmVsIGVudmlyb25tZW50LlxuXG5UaGUgcGF0Y2gncyBzb2x1dGlvbiBpcyBxdWl0ZSBlbGVnYW50IGFuZCBhZGRyZXNzZXMgdGhlIHByb2JsZW0gaGVhZC1vbi4gSXQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYGZuaGVfdXBkYXRlX3BtdHVgIGluIGBuZXQvaXB2NC9yb3V0ZS5jYCwgdG8gZW5jYXBzdWxhdGUgdGhlIFBNVFUgdXBkYXRlIGxvZ2ljLiBDcml0aWNhbGx5LCB0aGlzIG5ldyBmdW5jdGlvbiBub3cgKnByb3Blcmx5KiBhY3F1aXJlcyBgc3Bpbl9sb2NrX2JoKFx1MDAyNmZuaGVfbG9jaylgIGJlZm9yZSBtb2RpZnlpbmcgYGZuaGVfcG10dWAgYW5kIGBmbmhlX210dV9sb2NrZWRgLCBlbnN1cmluZyBhdG9taWMgdXBkYXRlcyBhbmQgcHJldmVudGluZyB0aGUgcmFjZS4gIE1vcmVvdmVyLCBgZmliX25oY191cGRhdGVfbXR1YCBoYXMgYmVlbiB1cGRhdGVkIHRvIGNvcnJlY3RseSB0YWtlIGByY3VfcmVhZF9sb2NrKClgIGFuZCB1c2UgYHJjdV9kZXJlZmVyZW5jZSgpYCB3aGVuIGFjY2Vzc2luZyB0aGUgZXhjZXB0aW9uIGVudHJpZXMuIFRoaXMgaXMgdGhlIGNvcnJlY3QsIHNhZmUgd2F5IHRvIGhhbmRsZSB0aGVzZSBSQ1UgcHJvdGVjdGVkIGRhdGEgc3RydWN0dXJlcy5cblxuSSd2ZSB0YWtlbiBhIHF1aWNrIGxvb2sgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBhY2NpZGVudGFsbHkgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGluaXRpYWxpemF0aW9uIGlzc3Vlcywgb3IgbGVhayBhbnl0aGluZyB0byB1c2VyIHNwYWNlLiBJdCBkb2Vzbid0LiBNeSBhbmFseXNpcyBjb25maXJtcyB0aGF0IHRoaXMgcGF0Y2ggaXMgZW50aXJlbHkgZm9jdXNlZCBvbiBsb2NraW5nIGFuZCBSQ1UgY29ycmVjdG5lc3MuXG5cblRoZXJlZm9yZSwgdGhpcyBwYXRjaCAqZG9lc24ndCogcmVxdWlyZSBLTVNBTi4gVGhlIGJ1ZyBpdCBmaXhlcyBpcyBhIGNvbmN1cnJlbmN5IGJ1Zywgc3BlY2lmaWNhbGx5IGEgZGF0YSByYWNlLCB3aGljaCB3b3VsZCBiZSBkZXRlY3RlZCBieSBLQ1NBTiBvciBMT0NLREVQLiBTdGFuZGFyZCBLQVNBTiBzaG91bGQgYmUgc3VmZmljaWVudCwgYXNzdW1pbmcgYWxsIGNvZGUgcGF0aHMgYXJlIGNvdmVyZWQuICBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb24sIG5vIHVzZXItc3BhY2UgaW5mb3JtYXRpb24gbGVha3MsIGp1c3QgZ29vZCBvbGQtZmFzaGlvbmVkIGNvbmN1cnJlbmN5IGJ1ZyBmaXhpbmcuICBMb29rcyBsaWtlIGEgc29saWQsIGNsZWFuLCBhbmQgaW1wb3J0YW50IGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM0OCwiT3V0cHV0VG9rZW5zIjoxMDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMDo1NzoxMS41MDQ2ODE0MjhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGNvbmN1cnJlbmN5IGlzc3VlIChtaXNzaW5nIFJDVSByZWFkIGxvY2sgYW5kIHNwaW5sb2NrIHByb3RlY3Rpb24pIHdoZW4gdXBkYXRpbmcgUE1UVSBpbiBmaWJfbmhfZXhjZXB0aW9uIGVudHJpZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4sIEtDU0FOLCBvciBMT0NLREVQIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSAobWlzc2luZyBSQ1UgcmVhZCBsb2NrIGFuZCBzcGlubG9jayBwcm90ZWN0aW9uKSB3aGVuIHVwZGF0aW5nIFBNVFUgaW4gZmliX25oX2V4Y2VwdGlvbiBlbnRyaWVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOLCBLQ1NBTiwgb3IgTE9DS0RFUCBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow77x68[1] Phase: Succeeded StartedAt: 2026-08-07 20:57:23 +0000 UTC FinishedAt: 2026-08-07 20:57:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 20:57:23 +0000 UTC FinishedAt: 2026-08-07 20:57:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2] Phase: Succeeded StartedAt: 2026-08-07 20:57:23 +0000 UTC FinishedAt: 2026-08-08 00:44:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 20:57:23 +0000 UTC FinishedAt: 2026-08-08 00:44:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 20:57:23 +0000 UTC FinishedAt: 2026-08-07 20:57:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 20:57:23 +0000 UTC FinishedAt: 2026-08-07 20:57:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow77x68/series-workflow77x68-convert-artifact-3680124877/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 20:57:45 +0000 UTC FinishedAt: 2026-08-07 21:16:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 20:57:45 +0000 UTC FinishedAt: 2026-08-07 21:16:32 +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:*ec5611c1-7ac0-4cbe-9ef9-804c494b4791,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-workflow77x68/series-workflow77x68-convert-artifact-3680124877/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": "14f31460-0bfa-49d3-afe3-f5c479e6ba45", "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-workflow77x68/series-workflow77x68-build-action-1565425731/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 20:57:45 +0000 UTC FinishedAt: 2026-08-07 21:16:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ec5611c1-7ac0-4cbe-9ef9-804c494b4791,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-workflow77x68/series-workflow77x68-convert-artifact-3680124877/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": "14f31460-0bfa-49d3-afe3-f5c479e6ba45", "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-workflow77x68/series-workflow77x68-build-action-1565425731/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 21:16:32 +0000 UTC FinishedAt: 2026-08-07 21:16:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 21:16:32 +0000 UTC FinishedAt: 2026-08-07 21:16:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 21:16:32 +0000 UTC FinishedAt: 2026-08-07 21:16:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 21:16:32 +0000 UTC FinishedAt: 2026-08-07 21:16:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow77x68/series-workflow77x68-convert-artifact-2462152744/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 21:16:43 +0000 UTC FinishedAt: 2026-08-07 21:18:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 21:16:43 +0000 UTC FinishedAt: 2026-08-07 21:18:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*14f31460-0bfa-49d3-afe3-f5c479e6ba45,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-workflow77x68/series-workflow77x68-build-action-1565425731/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-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 21:18:55 +0000 UTC FinishedAt: 2026-08-07 21:18:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 21:18:55 +0000 UTC FinishedAt: 2026-08-07 21:18:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 21:18:55 +0000 UTC FinishedAt: 2026-08-07 21:39:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 21:18:55 +0000 UTC FinishedAt: 2026-08-07 21:39:41 +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:*ec5611c1-7ac0-4cbe-9ef9-804c494b4791,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-workflow77x68/series-workflow77x68-convert-artifact-2462152744/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": "fd0e1876-7249-40db-9afd-5ff8a6ddd623", "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-workflow77x68/series-workflow77x68-build-action-1107981780/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 21:18:55 +0000 UTC FinishedAt: 2026-08-07 21:39:31 +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:*ec5611c1-7ac0-4cbe-9ef9-804c494b4791,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-workflow77x68/series-workflow77x68-convert-artifact-2462152744/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": "fd0e1876-7249-40db-9afd-5ff8a6ddd623", "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-workflow77x68/series-workflow77x68-build-action-1107981780/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 21:39:41 +0000 UTC FinishedAt: 2026-08-07 21:39:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 21:39:41 +0000 UTC FinishedAt: 2026-08-07 21:39:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 21:39:41 +0000 UTC FinishedAt: 2026-08-07 21:42:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 21:39:41 +0000 UTC FinishedAt: 2026-08-07 21:41:56 +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:*fd0e1876-7249-40db-9afd-5ff8a6ddd623,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-workflow77x68/series-workflow77x68-build-action-1107981780/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-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 21:42:06 +0000 UTC FinishedAt: 2026-08-08 00:44:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 21:42:06 +0000 UTC FinishedAt: 2026-08-08 00:44:30 +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":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"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:*14f31460-0bfa-49d3-afe3-f5c479e6ba45,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fd0e1876-7249-40db-9afd-5ff8a6ddd623,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-workflow77x68/series-workflow77x68-build-action-1565425731/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-workflow77x68/series-workflow77x68-build-action-1107981780/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 21:42:06 +0000 UTC FinishedAt: 2026-08-07 21:42:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 21:42:06 +0000 UTC FinishedAt: 2026-08-07 21:42:11 +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":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"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-workflow77x68/series-workflow77x68-convert-artifact-864205409/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 21:42:06 +0000 UTC FinishedAt: 2026-08-07 21:42:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 21:42:06 +0000 UTC FinishedAt: 2026-08-07 21:42:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 21:42:06 +0000 UTC FinishedAt: 2026-08-07 21:42:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 21:42:16 +0000 UTC FinishedAt: 2026-08-08 00:44:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow77x68[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fnhe_update_pmtu","fib_nhc_update_mtu","fib_sync_mtu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"6db4ecea-60a2-4589-8bee-19c7e2036449","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 21:42:16 +0000 UTC FinishedAt: 2026-08-08 00:44:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*14f31460-0bfa-49d3-afe3-f5c479e6ba45,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fd0e1876-7249-40db-9afd-5ff8a6ddd623,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-workflow77x68/series-workflow77x68-build-action-1565425731/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-workflow77x68/series-workflow77x68-build-action-1107981780/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-workflow77x68/series-workflow77x68-convert-artifact-864205409/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,}