Name: series-workflow6w89k Phase: Succeeded StartedAt: 2026-08-12 13:22:22 +0000 UTC FinishedAt: 2026-08-12 17:14:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[0] Phase: Succeeded StartedAt: 2026-08-12 13:22:22 +0000 UTC FinishedAt: 2026-08-12 13:30:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 13:22:22 +0000 UTC FinishedAt: 2026-08-12 13:30:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "322a3f5f-f45e-4efd-a122-8ade73ad3b21" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tipc_sk_rcv", "tipc_sk_mcast_rcv" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3NrX3JjdiYjMzQ7LAogICAgJiMzNDt0aXBjX3NrX21jYXN0X3JjdiYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgdGlwY19za19wdXNoX2JhY2tsb2dgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhbiBhZGRpdGlvbmFsIGB4bWl0cWAgYXJndW1lbnQsIGFsbG93aW5nIGl0IHRvIHNwbGljZSB0aGUgc29ja2V0JiMzOTtzIHdyaXRlIHF1ZXVlIGRpcmVjdGx5IGludG8gdGhlIHRyYW5zbWl0IHF1ZXVlIHdoZW4gc2VuZGluZyB0byB0aGUgc2FtZSBub2RlLCByYXRoZXIgdGhhbiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAuIFRoaXMgaXMgYSBjb250cm9sIGZsb3cgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgY2hhbmdlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBjb3B5aW5nIG9mIGRhdGEgdG8gdXNlciBzcGFjZS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2Ugd291bGQgYmUgcmVsYXRlZCB0byBxdWV1ZSBtYW5hZ2VtZW50IChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbWVtb3J5IGxlYWtzKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVElQQyBzb2NrZXQgcmVjZWl2ZSBhbmQgc2h1dGRvd24gcGF0aHMgYnkgY2hhbmdpbmcgaG93IHRoZSBzb2NrZXQgYmFja2xvZyBpcyBwdXNoZWQuIEl0IHNwbGljZXMgdGhlIHRyYW5zbWl0IHF1ZXVlIHRvIGEgcHJvdmlkZWQgeG1pdHEgaW5zdGVhZCBvZiB0cmFuc21pdHRpbmcgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIHNhbWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgVElQQyBzb2NrZXQgbG9naWMgdGhhdCBhZmZlY3RzIG1lc3NhZ2UgdHJhbnNtaXNzaW9uIGFuZCBxdWV1ZSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGIwNjQ1ZDU1MWQ4ZjRhOWQ3NWU3ZGZjMWIxNDIwYTc2ZjJjNzMwM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDEzOjI0OjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcbmluZGV4IGU1NjQzNDFlMDIxNmQuLjMzZDc0NGRjNTE0ZjUgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9zb2NrZXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvc29ja2V0LmNcbkBAIC0xNTYsNyAmIzQzOzE1Niw4IEBAIHN0YXRpYyBpbnQgdGlwY19za19pbnNlcnQoc3RydWN0IHRpcGNfc29jayAqdHNrKTtcbiBzdGF0aWMgdm9pZCB0aXBjX3NrX3JlbW92ZShzdHJ1Y3QgdGlwY19zb2NrICp0c2spO1xuIHN0YXRpYyBpbnQgX190aXBjX3NlbmRzdHJlYW0oc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgc2l6ZV90IGRzeik7XG4gc3RhdGljIGludCBfX3RpcGNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcbi1zdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKTtcbiYjNDM7c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjayxcbiYjNDM7XHRcdFx0XHQgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpO1xuIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApO1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHM7XG5AQCAtNTYwLDcgJiM0Mzs1NjEsNyBAQCBzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxuIFx0XHRcdFx0XHQgICAgIXRza19jb25uX2NvbmcodHNrKSkpO1xuIFxuIFx0LyogUHVzaCBvdXQgZGVsYXllZCBtZXNzYWdlcyBpZiBpbiBOYWdsZSBtb2RlICovXG4tXHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbiYjNDM7XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCBOVUxMKTtcbiBcdC8qIFJlbW92ZSBwZW5kaW5nIFNZTiAqL1xuIFx0X19za2JfcXVldWVfcHVyZ2UoXHUwMDI2c2stXHUwMDNlc2tfd3JpdGVfcXVldWUpO1xuIFxuQEAgLTEyNjcsOCAmIzQzOzEyNjgsMTAgQEAgdm9pZCB0aXBjX3NrX21jYXN0X3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmFycnZxLFxuIFxuIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWVcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNvY2tldCBpcyBpbiBOYWdsZSBtb2RlXG4mIzQzOyAqIEB4bWl0cTogcmVjZWl2ZSBvdXRwdXQgcXVldWUsIG9yIE5VTEwgb3V0c2lkZSByZWNlaXZlIGNvbnRleHRcbiAgKi9cbi1zdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKVxuJiM0MztzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLFxuJiM0MztcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSlcbiB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp0eHEgPSBcdTAwMjZ0c2stXHUwMDNlc2suc2tfd3JpdGVfcXVldWU7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX3BlZWtfdGFpbCh0eHEpO1xuQEAgLTEzMTAsNiAmIzQzOzEzMTMsMTIgQEAgc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaylcbiBcdFx0dHNrLVx1MDAzZXBrdF9jbnQgJiM0Mzs9IHNrYl9xdWV1ZV9sZW4odHhxKTtcbiBcdHRzay1cdTAwM2VzbnRfdW5hY2tlZCAmIzQzOz0gdHNrLVx1MDAzZXNuZF9iYWNrbG9nO1xuIFx0dHNrLVx1MDAzZXNuZF9iYWNrbG9nID0gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKHhtaXRxIFx1MDAyNlx1MDAyNiBpbl9vd25fbm9kZShuZXQsIGRub2RlKSkge1xuJiM0MztcdFx0c2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQodHhxLCB4bWl0cSk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJjID0gdGlwY19ub2RlX3htaXQobmV0LCB0eHEsIGRub2RlLCB0c2stXHUwMDNlcG9ydGlkKTtcbiBcdGlmIChyYyA9PSAtRUxJTktDT05HKVxuIFx0XHR0c2stXHUwMDNlY29uZ19saW5rX2NudCA9IDE7XG5AQCAtMTM2Nyw3ICYjNDM7MTM3Niw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfY29ubl9wcm90b19yY3Yoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdGdvdG8gZXhpdDtcbiBcbiBcdFx0d2FzX2NvbmcgPSB0c2tfY29ubl9jb25nKHRzayk7XG4tXHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpKTtcbiYjNDM7XHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpLCB4bWl0cSk7XG4gXHRcdHRzay1cdTAwM2VzbnRfdW5hY2tlZCAtPSBtc2dfY29ubl9hY2soaGRyKTtcbiBcdFx0aWYgKHRzay1cdTAwM2VwZWVyX2NhcHMgXHUwMDI2IFRJUENfQkxPQ0tfRkxPV0NUTClcbiBcdFx0XHR0c2stXHUwMDNlc25kX3dpbiA9IG1zZ19hZHZfd2luKGhkcik7XG5AQCAtMjE2NSw3ICYjNDM7MjE3NCw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcbiBcdFx0c21wX3dtYigpO1xuIFx0XHR0c2stXHUwMDNlY29uZ19saW5rX2NudC0tO1xuIFx0XHR3YWtldXAgPSB0cnVlO1xuLVx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbiYjNDM7XHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEdST1VQX1BST1RPQ09MOlxuIFx0XHR0aXBjX2dyb3VwX3Byb3RvX3JjdihncnAsIFx1MDAyNndha2V1cCwgaGRyLCBpbnB1dHEsIHhtaXRxKTtcbkBAIC0yMjU2LDcgJiM0MzsyMjY1LDcgQEAgc3RhdGljIGJvb2wgdGlwY19za19maWx0ZXJfY29ubmVjdChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdGNhc2UgVElQQ19FU1RBQkxJU0hFRDpcbiBcdFx0aWYgKCFza2JfcXVldWVfZW1wdHkoXHUwMDI2c2stXHUwMDNlc2tfd3JpdGVfcXVldWUpKVxuLVx0XHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuJiM0MztcdFx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7XG4gXHRcdC8qIEFjY2VwdCBvbmx5IGNvbm5lY3Rpb24tYmFzZWQgbWVzc2FnZXMgc2VudCBieSBwZWVyICovXG4gXHRcdGlmIChsaWtlbHkoY29uX21zZyBcdTAwMjZcdTAwMjYgIWVyciBcdTAwMjZcdTAwMjYgcHBvcnQgPT0gb3BvcnQgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgcG5vZGUgPT0gb25vZGUpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3NrX3JjdiYjMzQ7LAogICAgJiMzNDt0aXBjX3NrX21jYXN0X3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVElQQyBzb2NrZXQgcmVjZWl2ZSBhbmQgc2h1dGRvd24gcGF0aHMgYnkgY2hhbmdpbmcgaG93IHRoZSBzb2NrZXQgYmFja2xvZyBpcyBwdXNoZWQuIEl0IHNwbGljZXMgdGhlIHRyYW5zbWl0IHF1ZXVlIHRvIGEgcHJvdmlkZWQgeG1pdHEgaW5zdGVhZCBvZiB0cmFuc21pdHRpbmcgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIHNhbWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgVElQQyBzb2NrZXQgbG9naWMgdGhhdCBhZmZlY3RzIG1lc3NhZ2UgdHJhbnNtaXNzaW9uIGFuZCBxdWV1ZSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGIwNjQ1ZDU1MWQ4ZjRhOWQ3NWU3ZGZjMWIxNDIwYTc2ZjJjNzMwMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDEzOjI0OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvc29ja2V0LmMgYi9uZXQvdGlwYy9zb2NrZXQuYwppbmRleCBlNTY0MzQxZTAyMTZkLi4zM2Q3NDRkYzUxNGY1IDEwMDY0NAotLS0gYS9uZXQvdGlwYy9zb2NrZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9zb2NrZXQuYwpAQCAtMTU2LDcgJiM0MzsxNTYsOCBAQCBzdGF0aWMgaW50IHRpcGNfc2tfaW5zZXJ0KHN0cnVjdCB0aXBjX3NvY2sgKnRzayk7CiBzdGF0aWMgdm9pZCB0aXBjX3NrX3JlbW92ZShzdHJ1Y3QgdGlwY19zb2NrICp0c2spOwogc3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTsKIHN0YXRpYyBpbnQgX190aXBjX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgc2l6ZV90IGRzeik7Ci1zdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKTsKJiM0MztzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLAomIzQzOwkJCQkgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpOwogc3RhdGljIGludCB0aXBjX3dhaXRfZm9yX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgbG9uZyAqdGltZW9fcCk7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHM7CkBAIC01NjAsNyAmIzQzOzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpCiAJCQkJCSAgICAhdHNrX2Nvbm5fY29uZyh0c2spKSk7CiAKIAkvKiBQdXNoIG91dCBkZWxheWVkIG1lc3NhZ2VzIGlmIGluIE5hZ2xlIG1vZGUgKi8KLQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTsKJiM0MzsJdGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgTlVMTCk7CiAJLyogUmVtb3ZlIHBlbmRpbmcgU1lOICovCiAJX19za2JfcXVldWVfcHVyZ2UoJmFtcDtzay0mZ3Q7c2tfd3JpdGVfcXVldWUpOwogCkBAIC0xMjY3LDggJiM0MzsxMjY4LDEwIEBAIHZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSwKIAogLyogdGlwY19za19wdXNoX2JhY2tsb2coKTogc2VuZCBhY2N1bXVsYXRlZCBidWZmZXJzIGluIHNvY2tldCB3cml0ZSBxdWV1ZQogICogICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBzb2NrZXQgaXMgaW4gTmFnbGUgbW9kZQomIzQzOyAqIEB4bWl0cTogcmVjZWl2ZSBvdXRwdXQgcXVldWUsIG9yIE5VTEwgb3V0c2lkZSByZWNlaXZlIGNvbnRleHQKICAqLwotc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaykKJiM0MztzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLAomIzQzOwkJCQkgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpCiB7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCAqdHhxID0gJmFtcDt0c2stJmd0O3NrLnNrX3dyaXRlX3F1ZXVlOwogCXN0cnVjdCBza19idWZmICpza2IgPSBza2JfcGVla190YWlsKHR4cSk7CkBAIC0xMzEwLDYgJiM0MzsxMzEzLDEyIEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spCiAJCXRzay0mZ3Q7cGt0X2NudCAmIzQzOz0gc2tiX3F1ZXVlX2xlbih0eHEpOwogCXRzay0mZ3Q7c250X3VuYWNrZWQgJiM0Mzs9IHRzay0mZ3Q7c25kX2JhY2tsb2c7CiAJdHNrLSZndDtzbmRfYmFja2xvZyA9IDA7CiYjNDM7CiYjNDM7CWlmICh4bWl0cSAmYW1wOyZhbXA7IGluX293bl9ub2RlKG5ldCwgZG5vZGUpKSB7CiYjNDM7CQlza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdCh0eHEsIHhtaXRxKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCXJjID0gdGlwY19ub2RlX3htaXQobmV0LCB0eHEsIGRub2RlLCB0c2stJmd0O3BvcnRpZCk7CiAJaWYgKHJjID09IC1FTElOS0NPTkcpCiAJCXRzay0mZ3Q7Y29uZ19saW5rX2NudCA9IDE7CkBAIC0xMzY3LDcgJiM0MzsxMzc2LDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19jb25uX3Byb3RvX3JjdihzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJCQlnb3RvIGV4aXQ7CiAKIAkJd2FzX2NvbmcgPSB0c2tfY29ubl9jb25nKHRzayk7Ci0JCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpKTsKJiM0MzsJCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpLCB4bWl0cSk7CiAJCXRzay0mZ3Q7c250X3VuYWNrZWQgLT0gbXNnX2Nvbm5fYWNrKGhkcik7CiAJCWlmICh0c2stJmd0O3BlZXJfY2FwcyAmYW1wOyBUSVBDX0JMT0NLX0ZMT1dDVEwpCiAJCQl0c2stJmd0O3NuZF93aW4gPSBtc2dfYWR2X3dpbihoZHIpOwpAQCAtMjE2NSw3ICYjNDM7MjE3NCw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzaywKIAkJc21wX3dtYigpOwogCQl0c2stJmd0O2NvbmdfbGlua19jbnQtLTsKIAkJd2FrZXVwID0gdHJ1ZTsKLQkJdGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7CiYjNDM7CQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7CiAJCWJyZWFrOwogCWNhc2UgR1JPVVBfUFJPVE9DT0w6CiAJCXRpcGNfZ3JvdXBfcHJvdG9fcmN2KGdycCwgJmFtcDt3YWtldXAsIGhkciwgaW5wdXRxLCB4bWl0cSk7CkBAIC0yMjU2LDcgJiM0MzsyMjY1LDcgQEAgc3RhdGljIGJvb2wgdGlwY19za19maWx0ZXJfY29ubmVjdChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJCXJldHVybiBmYWxzZTsKIAljYXNlIFRJUENfRVNUQUJMSVNIRUQ6CiAJCWlmICghc2tiX3F1ZXVlX2VtcHR5KCZhbXA7c2stJmd0O3NrX3dyaXRlX3F1ZXVlKSkKLQkJCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpOwomIzQzOwkJCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTsKIAkJLyogQWNjZXB0IG9ubHkgY29ubmVjdGlvbi1iYXNlZCBtZXNzYWdlcyBzZW50IGJ5IHBlZXIgKi8KIAkJaWYgKGxpa2VseShjb25fbXNnICZhbXA7JmFtcDsgIWVyciAmYW1wOyZhbXA7IHBwb3J0ID09IG9wb3J0ICZhbXA7JmFtcDsKIAkJCSAgIHBub2RlID09IG9ub2RlKSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTAxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBTb2NrZXQgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBuZXQvdGlwYy9zb2NrZXQuY2AsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgVElQQyBzb2NrZXRzIGhhbmRsZSBiYWNrbG9nLiBUaGUgbW9zdCBzaWduaWZpY2FudCBjaGFuZ2UgSSBzZWUgaXMgdGhlIGFkZGVkIGBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cWAgcGFyYW1ldGVyIHRvIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIFRoYXQmIzM5O3MgYSBjbGVhciBzaWduYWwgb2YgYW4gYXJjaGl0ZWN0dXJhbCBzaGlmdC4gSSYjMzk7bSBub3RpbmcgdGhhdCB0aGUgZXhpc3RpbmcgY2FsbCBzaXRlcyBhcmUgYmVpbmcgdXBkYXRlZCB0byBwYXNzIGluIHRoaXMgbmV3IGB4bWl0cWAsIG9yIGBOVUxMYCBpbiB0aGUgYF9fdGlwY19zaHV0ZG93bmAgY2FzZS4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCBpdHNlbGY6IHRoaXMgbmV3IGNoZWNrIGZvciBgeG1pdHFgIGFuZCBgaW5fb3duX25vZGVgIHN1Z2dlc3RzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCBvciBwZXJoYXBzIGEgY2hhbmdlIGluIGhvdyBsb2NhbCBhbmQgcmVtb3RlIHRyYW5zbWlzc2lvbnMgYXJlIG1hbmFnZWQuIElmIGJvdGggY29uZGl0aW9ucyBhcmUgbWV0IOKAkyBhIHRyYW5zbWl0IHF1ZXVlIGlzIHByb3ZpZGVkIChgeG1pdHFgKSBhbmQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgc2FtZSBub2RlIOKAkyBpdCBzcGxpY2VzIHRoZSB0cmFuc21pdCBxdWV1ZSAoYHR4cWApIG9udG8gdGhlIHByb3ZpZGVkIGB4bWl0cWAgYW5kIHJldHVybnMuIE5vIGZ1cnRoZXIgcHJvY2Vzc2luZyBpcyBwZXJmb3JtZWQgZm9yIGxvY2FsIHRyYW5zbWlzc2lvbnMuCgpUaGlzIHNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IHRvIFRJUEMgc29ja2V0IGhhbmRsaW5nLCBsaWtlbHkgYWltZWQgYXQgaW1wcm92aW5nIGVmZmljaWVuY3kuIFRoaXMgY291bGQgYmUgYWltZWQgYXQgb3B0aW1pemluZyBwZXJmb3JtYW5jZSBvciBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGluIGhvdyBUSVBDIHNvY2tldHMgaGFuZGxlIHRyYW5zbWlzc2lvbiBiYWNrbG9ncy4KClRpbWUgdG8gZGVsdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgVElQQyBhbmQgdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhpcyBuZXR3b3JraW5nIHByb3RvY29sLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGludGVyYWN0cyB3aXRoIGFueSBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVElQQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnLTUtXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgVElQQyBQcm90b2NvbFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjMtXG5uZXQvdGlwYy9LY29uZmlnOjI0OmNvbmZpZyBUSVBDX01FRElBX0lCXG5uZXQvdGlwYy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjktXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL0tjb25maWctMzEtXHRib29sIFwmIzM0O0lQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxubmV0L3RpcGMvS2NvbmZpZzozODpjb25maWcgVElQQ19DUllQVE9cbm5ldC90aXBjL0tjb25maWctMzktXHRib29sIFwmIzM0O1RJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy01Mi1cbm5ldC90aXBjL0tjb25maWc6NTM6Y29uZmlnIFRJUENfRElBR1xubmV0L3RpcGMvS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O1RJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MDgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUSVBDIENvbmZpZ3VyYXRpb24gYW5kIEJhY2tsb2cgRnVuY3Rpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaGVyZSBpcyBgVElQQ2AuIE15IGF0dGVudGlvbiBpcyBkcmF3biB0byB0aGUgZnVuY3Rpb24gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBBaCwgcmlnaHQsIEkgc2VlIGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IGxpbWl0cyBteSBzY29wZSBvZiBpbnZlc3RpZ2F0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KCkxvb2tpbmcgYXQgdGhlIGNhbGxlcnMsIEkmIzM5O3ZlIGdvdCBgX190aXBjX3NodXRkb3duYCwgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgLCBgdGlwY19za19wcm90b19yY3ZgLCBhbmQgYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLiBOb3csIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIHN0YXRpYywgSSBjYW4mIzM5O3QganVzdCBsb29rIG91dHNpZGUgdGhlIGZpbGUgdGhlIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGluLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IHRoZXNlIGNhbGxlcnMsIGVzcGVjaWFsbHkgdGhlIG5vbi1zdGF0aWMgb25lcyAob3IgdGhlaXIgY2FsbGVycykgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93IGFuZCBkZXRlcm1pbmUgdGhlIGltcGxpY2F0aW9ucyBvZiBhbnkgY2hhbmdlcyB3aXRoaW4gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQgb2YgZWFjaCBjYWxsIHRvIGZ1bGx5IGdyYXNwIHRoZSBmdW5jdGlvbiYjMzk7cyByZXNwb25zaWJpbGl0eSBhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgbW9kaWZpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTEyNzM9c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2Fjayxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0xMzI3LS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MTMyODogKiB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2IC0gcmVjZWl2ZSBhIGNvbm5lY3Rpb24gbW5nIHByb3RvY29sIG1lc3NhZ2Vcbm5ldC90aXBjL3NvY2tldC5jLTEzMjktICogQHRzazogcmVjZWl2aW5nIHNvY2tldFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTEzMzMtICovXG5uZXQvdGlwYy9zb2NrZXQuYzoxMzM0OnN0YXRpYyB2b2lkIHRpcGNfc2tfY29ubl9wcm90b19yY3Yoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3RpcGMvc29ja2V0LmMtMTMzNS1cdFx0XHRcdCAgIHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0yMTU3PXN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTY4LVx0Y2FzZSBDT05OX01BTkFHRVI6XG5uZXQvdGlwYy9zb2NrZXQuYzoyMTY5Olx0XHR0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2KHRzaywgc2tiLCBpbnB1dHEsIHhtaXRxKTtcbm5ldC90aXBjL3NvY2tldC5jLTIxNzAtXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjE3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqQ2FsbGVyIEFuYWx5c2lzIGZvciBhIFN0YXRpYyBGdW5jdGlvbioqCgpPa2F5LCBzbyBgdGlwY19za19wcm90b19yY3ZgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIG9ubHkgdmlzaWJsZSB3aXRoaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIG1ha2VzIGRlYnVnZ2luZyBhIGxpdHRsZSB0cmlja2llciwgYnV0IGFsc28gZm9jdXNlcyBteSBzZWFyY2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0xldCYjMzk7cyBmaW5kIG91dCB3aG8mIzM5O3MgY2FsbGluZyBpdCYjMzQ7LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHRvb2xzIHRvIGxvY2F0ZSBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IGEgZ3Jhc3Agb2YgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGRhdGEgZmxvdy4gVW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBvZiB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgdmFsdWFibGUgaW5zaWdodHMgaW50byB3aGF0IHRoaXMgZnVuY3Rpb24gKmRvZXMqLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfcHJvdG9fcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTQwMz1zdGF0aWMgaW50IHRpcGNfc2tfc29ja19lcnIoc3RydWN0IHNvY2tldCAqc29jaywgbG9uZyAqdGltZW91dClcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy00MzEtXHR3aGlsZSAoKHJjXyA9ICEoY29uZGl0aW9uXykpKSB7XHRcdFx0XHRcdCAgICAgICBcXFxubmV0L3RpcGMvc29ja2V0LmM6NDMyOlx0XHQvKiBjb3VwbGVkIHdpdGggc21wX3dtYigpIGluIHRpcGNfc2tfcHJvdG9fcmN2KCkgKi8gICAgICAgICAgICBcXFxubmV0L3RpcGMvc29ja2V0LmMtNDMzLVx0XHRzbXBfcm1iKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTIxNTI9c3RhdGljIHZvaWQgdGlwY19zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTU2LVxubmV0L3RpcGMvc29ja2V0LmM6MjE1NzpzdGF0aWMgdm9pZCB0aXBjX3NrX3Byb3RvX3JjdihzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTU4LVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0yMzQ3PXN0YXRpYyB2b2lkIHRpcGNfc2tfZmlsdGVyX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjM2NC1cdGlmICh1bmxpa2VseSghbXNnX2lzZGF0YShoZHIpKSlcbm5ldC90aXBjL3NvY2tldC5jOjIzNjU6XHRcdHRpcGNfc2tfcHJvdG9fcmN2KHNrLCBcdTAwMjZpbnB1dHEsIHhtaXRxKTtcbm5ldC90aXBjL3NvY2tldC5jLTIzNjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE4MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkNhbGxlciBEaXNjb3ZlcnkgZm9yIGEgU3RhdGljIEZ1bmN0aW9uKioKCk9rYXksIHNvIGB0aXBjX3NrX2ZpbHRlcl9yY3ZgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIG9ubHkgdmlzaWJsZSB3aXRoaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIG1ha2VzIGZpZ3VyaW5nIG91dCB3aGVyZSBpdCYjMzk7cyAqYWN0dWFsbHkqIHVzZWQgYSBiaXQgdHJpY2tpZXIuIFRoZSBzdGFuZGFyZCB0b29scyB3b24mIzM5O3QganVzdCBpbW1lZGlhdGVseSBwb2ludCBtZSB0byBldmVyeSBjYWxsIHNpdGUgYWNyb3NzIHRoZSB3aG9sZSBjb2RlYmFzZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyB0cmFjayBkb3duIGFsbCB0aGUgY2FsbHMgdG8gaXQuIEtub3dpbmcgdGhlIGNhbGxlcnMgaXMgKmNydWNpYWwqIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlLCBwb3RlbnRpYWwgaW1wYWN0LCBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGlzIFRJUEMga2VybmVsIG1vZHVsZS4gVW5kZXJzdGFuZGluZyB3aG8mIzM5O3MgY2FsbGluZyBpdCBpcyB0aGUgZmlyc3Qgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19za19maWx0ZXJfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTIzMTk9c3RhdGljIHVuc2lnbmVkIGludCByY3ZidWZfbGltaXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTIzMzYtLyoqXG5uZXQvdGlwYy9zb2NrZXQuYzoyMzM3OiAqIHRpcGNfc2tfZmlsdGVyX3JjdiAtIHZhbGlkYXRlIGluY29taW5nIG1lc3NhZ2Vcbm5ldC90aXBjL3NvY2tldC5jLTIzMzgtICogQHNrOiBzb2NrZXRcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzQ2LSAqL1xubmV0L3RpcGMvc29ja2V0LmM6MjM0NzpzdGF0aWMgdm9pZCB0aXBjX3NrX2ZpbHRlcl9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3RpcGMvc29ja2V0LmMtMjM0OC1cdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjM1OC1cbm5ldC90aXBjL3NvY2tldC5jOjIzNTk6XHR0cmFjZV90aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgVElQQ19EVU1QX0FMTCwgXCYjMzQ7IFwmIzM0Oyk7XG5uZXQvdGlwYy9zb2NrZXQuYy0yMzYwLVx0VElQQ19TS0JfQ0Ioc2tiKS1cdTAwM2VieXRlc19yZWFkID0gMDtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0yNDEyPXN0YXRpYyBpbnQgdGlwY19za19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjQxOS1cbm5ldC90aXBjL3NvY2tldC5jOjI0MjA6XHR0aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgXHUwMDI2eG1pdHEpO1xubmV0L3RpcGMvc29ja2V0LmMtMjQyMS1cdGFkZGVkID0gc2tfcm1lbV9hbGxvY19nZXQoc2spIC0gYmVmb3JlO1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI0Mzk9c3RhdGljIHZvaWQgdGlwY19za19lbnF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI0NTctXHRcdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkge1xubmV0L3RpcGMvc29ja2V0LmM6MjQ1ODpcdFx0XHR0aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgeG1pdHEpO1xubmV0L3RpcGMvc29ja2V0LmMtMjQ1OS1cdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvdGlwYy90cmFjZS5oPTIyNz1ERUZJTkVfU0tfRVZFTlRfRklMVEVSKHRpcGNfc2tfcG9sbCk7XG5uZXQvdGlwYy90cmFjZS5oOjIyODpERUZJTkVfU0tfRVZFTlRfRklMVEVSKHRpcGNfc2tfZmlsdGVyX3Jjdik7XG5uZXQvdGlwYy90cmFjZS5oLTIyOS1ERUZJTkVfU0tfRVZFTlRfRklMVEVSKHRpcGNfc2tfYWR2YW5jZV9yeCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMjAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIGB0aXBjX3NrX2VucXVldWVgIGFuZCBgdGlwY19za19iYWNrbG9nX3JjdmAqKgoKT2theSwgc28gSSYjMzk7dmUgc3BvdHRlZCBgdGlwY19za19lbnF1ZXVlYCBhbmQgYHRpcGNfc2tfYmFja2xvZ19yY3ZgIOKAkyBhbmQgaXQmIzM5O3MgZmxhZ2dlZCB0aGF0IHRoZXkmIzM5O3JlIGBzdGF0aWNgLiBJbW1lZGlhdGVseSwgdGhhdCBzcGFya3MgbXkgY3VyaW9zaXR5LiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgZGVmaW5pdGlvbiwgbGltaXRlZCBpbiB0aGVpciBzY29wZS4gVGhleSYjMzk7cmUgaW50ZXJuYWwgdG8gdGhlaXIgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggbWVhbnMgdGhlaXIgdXNhZ2Ugc2hvdWxkIGJlIGNvbnRhaW5lZC4gVGhpcyBtYWtlcyB0aGVtIGdvb2QgY2FuZGlkYXRlcyBmb3IgZGVlcGVyIGFuYWx5c2lzLCBhbmQgaXQgc2hvdWxkIHNpbXBsaWZ5IHRyYWNraW5nIHdoZXJlIHRoZXkgYXJlIHVzZWQuCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbGwgdGhlIHBvaW50cyBpbiB0aGUgY29kZSB3aGVyZSB0aGVzZSB0d28gZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgd2hvJiMzOTtzIGludm9raW5nIHRoZW0gaXMgZnVuZGFtZW50YWwgdG8gdW5kZXJzdGFuZGluZyB0aGVpciBwdXJwb3NlIGFuZCBpbXBhY3Qgd2l0aGluIHRoZSBsYXJnZXIgVElQQyBzdWJzeXN0ZW0uIExldCYjMzk7cyB0cmFjZSB0aGVpciBjYWxsZXJzIGFuZCBzZWUgd2hlcmUgdGhleSBmaXQgaW4uIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIG1ldGhvZHMsIHdoZXRoZXIgdGhhdCYjMzk7cyBgZ3JlcGAsIGBjc2NvcGVgLCBgY2xhbmdkYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIG1ha2Ugc3VyZSB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IG9mIHRoZSBjYWxscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19za19lbnF1ZXVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTI0MTI9c3RhdGljIGludCB0aXBjX3NrX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDI5LS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MjQzMDogKiB0aXBjX3NrX2VucXVldWUgLSBleHRyYWN0IGFsbCBidWZmZXJzIHdpdGggZGVzdGluYXRpb24gJiMzOTtkcG9ydCYjMzk7IGZyb21cbm5ldC90aXBjL3NvY2tldC5jLTI0MzEtICogICAgICAgICAgICAgICAgICAgaW5wdXRxIGFuZCB0cnkgYWRkaW5nIHRoZW0gdG8gc29ja2V0IG9yIGJhY2tsb2cgcXVldWVcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDM4LSAqL1xubmV0L3RpcGMvc29ja2V0LmM6MjQzOTpzdGF0aWMgdm9pZCB0aXBjX3NrX2VucXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLCBzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDQwLVx0XHRcdCAgICB1MzIgZHBvcnQsIHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI0OTM9dm9pZCB0aXBjX3NrX3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSlcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yNTA5LVx0XHRcdGlmIChsaWtlbHkoc3Bpbl90cnlsb2NrX2JoKFx1MDAyNnNrLVx1MDAzZXNrX2xvY2suc2xvY2spKSkge1xubmV0L3RpcGMvc29ja2V0LmM6MjUxMDpcdFx0XHRcdHRpcGNfc2tfZW5xdWV1ZShpbnB1dHEsIHNrLCBkcG9ydCwgXHUwMDI2eG1pdHEpO1xubmV0L3RpcGMvc29ja2V0LmMtMjUxMS1cdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnNrLVx1MDAzZXNrX2xvY2suc2xvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njk0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBUSVBDIFNvY2tldCBSZWNlaXZlIFBhdGgqKgoKUmlnaHQsIGB0aXBjX3NrX3JjdmAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgYSBmdW5jdGlvbiB0aGF0JiMzOTtzIGVpdGhlciBleHBvcnRlZCBmb3IgdXNlIGVsc2V3aGVyZSBvciwgbW9yZSBsaWtlbHksIGlzIGNhbGxlZCBmcm9tIGFub3RoZXIgcGFydCBvZiB0aGUgVElQQyBzdWJzeXN0ZW0uIFRoYXQmIzM5O3Mga2V5LiBXZSBrbm93IHRoZSBmdW5jdGlvbiBpc24mIzM5O3QgaXNvbGF0ZWQuIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCB3aGVyZSBpcyBpdCBjYWxsZWQgZnJvbT8gTGV0JiMzOTtzIHRyYWNlIHRoaXMgYmFjay4gR2l2ZW4gaXRzIG5hbWUsIGl0JiMzOTtzIGxpa2VseSBpbnZvbHZlZCBpbiB0aGUgcmVjZWl2ZSBwYXRoLiBgdGlwY19za19iYWNrbG9nX3JjdmAgbG9va3MgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHBvaW50IHRvIGludmVzdGlnYXRlLiBJdCBjb3VsZCBiZSBwYXJ0IG9mIGEgYmFja2xvZyBtZWNoYW5pc20sIHBvdGVudGlhbGx5IGZlZWRpbmcgaW50byBgdGlwY19za19yY3ZgLiBUaGlzIGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfYmFja2xvZ19yY3YmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmM9MTEwPXN0cnVjdCB0aXBjX3NvY2sge1xuLS1cbm5ldC90aXBjL3NvY2tldC5jLTE0NC1cbm5ldC90aXBjL3NvY2tldC5jOjE0NTpzdGF0aWMgaW50IHRpcGNfc2tfYmFja2xvZ19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbm5ldC90aXBjL3NvY2tldC5jLTE0Ni1zdGF0aWMgdm9pZCB0aXBjX2RhdGFfcmVhZHkoc3RydWN0IHNvY2sgKnNrKTtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz00NjA9c3RhdGljIGludCB0aXBjX3NrX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtNTE4LVx0c2stXHUwMDNlc2tfc2h1dGRvd24gPSAwO1xubmV0L3RpcGMvc29ja2V0LmM6NTE5Olx0c2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSB0aXBjX3NrX2JhY2tsb2dfcmN2O1xubmV0L3RpcGMvc29ja2V0LmMtNTIwLVx0c2stXHUwMDNlc2tfcmN2YnVmID0gUkVBRF9PTkNFKHN5c2N0bF90aXBjX3JtZW1bMV0pO1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTIzNDc9c3RhdGljIHZvaWQgdGlwY19za19maWx0ZXJfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDA1LS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MjQwNjogKiB0aXBjX3NrX2JhY2tsb2dfcmN2IC0gaGFuZGxlIGluY29taW5nIG1lc3NhZ2UgZnJvbSBiYWNrbG9nIHF1ZXVlXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDA3LSAqIEBzazogc29ja2V0XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjQxMS0gKi9cbm5ldC90aXBjL3NvY2tldC5jOjI0MTI6c3RhdGljIGludCB0aXBjX3NrX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC90aXBjL3NvY2tldC5jLTI0MTMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzkyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRJUEMgU29ja2V0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBvdmVyIHRoaXMgVElQQyBzb2NrZXQgcGF0Y2gsIGFuZCBoZXJlJiMzOTtzIG15IHRha2UuIFRoZSBjcnVjaWFsIHBvaW50IGhlcmUgaXMgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBgdGlwY19za19iYWNrbG9nX3JjdmAgYW5kIGBzay0mZ3Q7c2tfYmFja2xvZ19yY3ZgIHdpdGhpbiBgdGlwY19za19jcmVhdGVgLiBUaGF0IHRlbGxzIG1lIHdlJiMzOTtyZSBsb29raW5nIGF0IGZ1bmN0aW9ucyBleHBvc2VkIHZpYSBzdGFuZGFyZCBzb2NrZXQgb3BlcmF0aW9ucy4gVGhpcyBwYXRjaCBtYWtlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AsIHRoZSBmdW5jdGlvbiBjYWxsZWQgdG8gcHJvY2VzcyBpbmNvbWluZyBtZXNzYWdlcy4gVGhlIHVwZGF0ZSBpbnRyb2R1Y2VzIHRoZSBgeG1pdHFgIHZhcmlhYmxlIGFuZCBjb25kaXRpb25hbGx5IHNwbGljZXMgdGhlIGB0eHFgIHRvIGB4bWl0cWAgaWYgdGhlIGRlc3RpbmF0aW9uIG5vZGUgaXMgdGhlIHNhbWUuIFRoaXMgbGlrZWx5IGFmZmVjdHMgaG93IE5hZ2xlJiMzOTtzIGFsZ29yaXRobSBpbnRlcmFjdHMgd2l0aCBiYWNrbG9nIHByb2Nlc3NpbmcuIFRoaXMgaXMgY29yZSBzb2NrZXQgbG9naWMgdGhhdCBoYXMgY2hhbmdlZCwgc28gZnV6emluZyB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aHdoaWxlLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHNvbWUgc3BlY2lmaWMgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgZnV6emluZy4gYHRpcGNfc2tfcmN2YCBpcyBhbiBvYnZpb3VzIGNob2ljZSBzaW5jZSBpdCYjMzk7cyBkaXJlY3RseSByZWxhdGVkIHRvIHJlY2VpdmluZyBkYXRhLiBgdGlwY19za19jcmVhdGVgIGlzIHRoZSBzb2NrZXQgY3JlYXRpb24gZnVuY3Rpb24sIHNvIHdlIG5lZWQgdG8gaGl0IHRoYXQgZm9yIHRlc3Qgc2V0dXAuIENvbnNpZGVyaW5nIHRoZSBjaGFuZ2VzLCBJIHNob3VsZCBjaGVjayB0aGUgZnVuY3Rpb25zIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGUgcGF0Y2gmIzM5O3MgY2hhbmdlcyBzdWNoIGFzIGB0aXBjX3NlbmRtc2dgIGFuZCBgdGlwY19zZW5kc3RyZWFtYC4gVGhlIHBhdGNoIHRvdWNoZXMgYF9fdGlwY19zaHV0ZG93bmAsIHdoaWNoIGNhbGxzIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIGB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2YCwgYHRpcGNfc2tfcHJvdG9fcmN2YCwgYW5kIGB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0YCBhcmUgYWxzbyBwb3RlbnRpYWxseSBpbnZvbHZlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IGNhbGxzIHRoZXNlIGZ1bmN0aW9ucy4KCmB0aXBjX3NrX3JjdmAgaXMgbm9uLXN0YXRpYywgd2hpY2ggaXMgZ29vZDsgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBmcm9tIG91dHNpZGUuIEFsc28sIGB0aXBjX3NrX21jYXN0X3JjdmAgaXMgbm9uLXN0YXRpYyBhbmQgcHJvYmFibHkgY2FuIGJlIHVzZWQgdG9vLiBgdGlwY19zZW5kbXNnYCBhbmQgYHRpcGNfc2VuZHN0cmVhbWAgYXJlIHN0YW5kYXJkIHNvY2tldCBvcGVyYXRpb25zLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGRlZXAgZGl2ZSBpbnRvIGB0aXBjX3NrX3JjdmAgYW5kIGZpZ3VyZSBvdXQgaG93IHRvIGZ1enogaXQgZWZmZWN0aXZlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL2JjYXN0LmM9NDM2PWludCB0aXBjX2JjYXN0X3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2xpbmsgKmwsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3RpcGMvYmNhc3QuYy00NjAtXHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShpbnB1dHEpKVxubmV0L3RpcGMvYmNhc3QuYzo0NjE6XHRcdHRpcGNfc2tfcmN2KG5ldCwgaW5wdXRxKTtcbm5ldC90aXBjL2JjYXN0LmMtNDYyLVxuLS1cbm5ldC90aXBjL2JjYXN0LmM9NDcwPXZvaWQgdGlwY19iY2FzdF9hY2tfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfbGluayAqbCxcbi0tXG5uZXQvdGlwYy9iY2FzdC5jLTQ5MC1cdGlmICghc2tiX3F1ZXVlX2VtcHR5KGlucHV0cSkpXG5uZXQvdGlwYy9iY2FzdC5jOjQ5MTpcdFx0dGlwY19za19yY3YobmV0LCBpbnB1dHEpO1xubmV0L3RpcGMvYmNhc3QuYy00OTItfVxuLS1cbm5ldC90aXBjL2JjYXN0LmM9NDk4PWludCB0aXBjX2JjYXN0X3N5bmNfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfbGluayAqbCxcbi0tXG5uZXQvdGlwYy9iY2FzdC5jLTUzMi1cdGlmICghc2tiX3F1ZXVlX2VtcHR5KGlucHV0cSkpXG5uZXQvdGlwYy9iY2FzdC5jOjUzMzpcdFx0dGlwY19za19yY3YobmV0LCBpbnB1dHEpO1xubmV0L3RpcGMvYmNhc3QuYy01MzQtXHRyZXR1cm4gcmM7XG4tLVxubmV0L3RpcGMvYmNhc3QuYz01NTc9dm9pZCB0aXBjX2JjYXN0X3JlbW92ZV9wZWVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfbGluayAqcmN2X2wpXG4tLVxubmV0L3RpcGMvYmNhc3QuYy01NzQtXHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShpbnB1dHEpKVxubmV0L3RpcGMvYmNhc3QuYzo1NzU6XHRcdHRpcGNfc2tfcmN2KG5ldCwgaW5wdXRxKTtcbm5ldC90aXBjL2JjYXN0LmMtNTc2LX1cbi0tXG5uZXQvdGlwYy9ub2RlLmM9MTA2Mj1zdGF0aWMgdm9pZCB0aXBjX25vZGVfbGlua19kb3duKHN0cnVjdCB0aXBjX25vZGUgKm4sIGludCBiZWFyZXJfaWQsIGJvb2wgZGVsZXRlKVxuLS1cbm5ldC90aXBjL25vZGUuYy0xMDkzLVx0XHR0aXBjX2JlYXJlcl94bWl0KG4tXHUwMDNlbmV0LCBiZWFyZXJfaWQsIFx1MDAyNnhtaXRxLCBtYWRkciwgbik7XG5uZXQvdGlwYy9ub2RlLmM6MTA5NDpcdHRpcGNfc2tfcmN2KG4tXHUwMDNlbmV0LCBcdTAwMjZsZS1cdTAwM2VpbnB1dHEpO1xubmV0L3RpcGMvbm9kZS5jLTEwOTUtfVxuLS1cbm5ldC90aXBjL25vZGUuYz0xNjI3PXN0YXRpYyB2b2lkIHRpcGNfbHhjX3htaXQoc3RydWN0IG5ldCAqcGVlcl9uZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QpXG4tLVxubmV0L3RpcGMvbm9kZS5jLTE2NDAtXHRcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bGlzdC1cdTAwM2Vsb2NrKTtcbm5ldC90aXBjL25vZGUuYzoxNjQxOlx0XHRcdHRpcGNfc2tfcmN2KHBlZXJfbmV0LCBsaXN0KTtcbm5ldC90aXBjL25vZGUuYy0xNjQyLVx0XHRcdHJldHVybjtcbi0tXG5uZXQvdGlwYy9ub2RlLmMtMTY2NS1cdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bGlzdC1cdTAwM2Vsb2NrKTtcbm5ldC90aXBjL25vZGUuYzoxNjY2Olx0XHR0aXBjX3NrX3JjdihwZWVyX25ldCwgbGlzdCk7XG5uZXQvdGlwYy9ub2RlLmMtMTY2Ny1cdFx0cmV0dXJuO1xuLS1cbm5ldC90aXBjL25vZGUuYz0xNjg3PWludCB0aXBjX25vZGVfeG1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXG4tLVxubmV0L3RpcGMvbm9kZS5jLTE3MDAtXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmxpc3QtXHUwMDNlbG9jayk7XG5uZXQvdGlwYy9ub2RlLmM6MTcwMTpcdFx0dGlwY19za19yY3YobmV0LCBsaXN0KTtcbm5ldC90aXBjL25vZGUuYy0xNzAyLVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvdGlwYy9ub2RlLmM9MjA4Nj12b2lkIHRpcGNfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRpcGNfYmVhcmVyICpiKVxuLS1cbm5ldC90aXBjL25vZGUuYy0yMjAyLVx0aWYgKCFza2JfcXVldWVfZW1wdHkoXHUwMDI2bGUtXHUwMDNlaW5wdXRxKSlcbm5ldC90aXBjL25vZGUuYzoyMjAzOlx0XHR0aXBjX3NrX3JjdihuZXQsIFx1MDAyNmxlLVx1MDAzZWlucHV0cSk7XG5uZXQvdGlwYy9ub2RlLmMtMjIwNC1cbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0xMTkyPXZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0xMjY1LVx0fVxubmV0L3RpcGMvc29ja2V0LmM6MTI2NjpcdHRpcGNfc2tfcmN2KG5ldCwgaW5wdXRxKTtcbm5ldC90aXBjL3NvY2tldC5jLTEyNjctfVxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI0Mzk9c3RhdGljIHZvaWQgdGlwY19za19lbnF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI0ODYtLyoqXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDg3OiAqIHRpcGNfc2tfcmN2IC0gaGFuZGxlIGEgY2hhaW4gb2YgaW5jb21pbmcgYnVmZmVyc1xubmV0L3RpcGMvc29ja2V0LmMtMjQ4OC0gKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI0OTItICovXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDkzOnZvaWQgdGlwY19za19yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICppbnB1dHEpXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDk0LXtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuaD01NT12b2lkIHRpcGNfc29ja2V0X3N0b3Aodm9pZCk7XG5uZXQvdGlwYy9zb2NrZXQuaDo1Njp2b2lkIHRpcGNfc2tfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxKTtcbm5ldC90aXBjL3NvY2tldC5oLTU3LXZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSxcbi0tXG5uZXQvdGlwYy90b3BzcnYuYz02MTQ9c3RhdGljIHZvaWQgdGlwY190b3BzcnZfa2Vybl9ldnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY19ldmVudCAqZXZ0KVxuLS1cbm5ldC90aXBjL3RvcHNydi5jLTYyOS1cdHRpcGNfbG9vcGJhY2tfdHJhY2UobmV0LCBcdTAwMjZldnRxKTtcbm5ldC90aXBjL3RvcHNydi5jOjYzMDpcdHRpcGNfc2tfcmN2KG5ldCwgXHUwMDI2ZXZ0cSk7XG5uZXQvdGlwYy90b3BzcnYuYy02MzEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODAzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBTb2NrZXQgUmVjZWl2ZSBQYXRoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvcmUgb2YgVElQQyBzb2NrZXQgbWVzc2FnZSBoYW5kbGluZy4gYHRpcGNfc2tfcmN2YCBpcyB0aGUgbWFpbiBmdW5jdGlvbiBmb3IgcmVjZWl2aW5nIG1lc3NhZ2VzIGludG8gc29ja2V0cywgYW5kIGB0aXBjX3NrX21jYXN0X3JjdmAgaGFuZGxlcyBtdWx0aWNhc3Qgc3BlY2lmaWNhbGx5LiBUcmFuc21pc3Npb24gaGFwcGVucyB2aWEgYHRpcGNfbm9kZV94bWl0YC4KClRoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEga2V5IGFyZWEuIE5vdywgKndobyogY2FsbHMgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYD8gVGhlIHRleHQgbGlzdHMgYSBudW1iZXIgb2YgY2FsbGVyczogYF9fdGlwY19zaHV0ZG93bmAsIGB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2YCwgYHRpcGNfc2tfcHJvdG9fcmN2YCwgYW5kIGB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0YC4gSG1tLCB0aGVzZSBhcmUgYWxsIGludGVyZXN0aW5nIGJlY2F1c2UgdGhleSYjMzk7cmUgKmRpcmVjdGx5KiBpbnZvbHZlZCBpbiBzb2NrZXQgcmVjZWl2ZSBvciBzaHV0ZG93biBvcGVyYXRpb25zLiBJdCYjMzk7cyBhIGNsZWFyIGZsb3c6IGB0aXBjX3NrX3JjdmAgY2FsbHMgYHRpcGNfc2tfZW5xdWV1ZWAsIHdoaWNoIGxlYWRzIHRvIGB0aXBjX3NrX2ZpbHRlcl9yY3ZgLCB3aGljaCB0aGVuIGRpc3BhdGNoZXMgdG8gYHRpcGNfc2tfcHJvdG9fcmN2YCBvciBgdGlwY19za19jb25uX3Byb3RvX3JjdmAgb3IgYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLiBUaGUgb3RoZXIgY2FsbCBwYXRoIGNvbWVzIGZyb20gYF9fdGlwY19zaHV0ZG93bmAuIFRoaXMgY2xlYXJseSBtZWFucyB0aGF0IGB0aXBjX3NrX3JjdmAgYW5kIHRoZSBzaHV0ZG93biBzZXF1ZW5jZSBhcmUgaW1wb3J0YW50IGVudHJ5IHBvaW50cyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcGF0Y2gmIzM5O3MgZWZmZWN0cy4gRXhjZWxsZW50LCBgdGlwY19za19yY3ZgIGlzIGEgZ29vZCBmb2N1cy4gQW5kIG9mIGNvdXJzZSwgdGhlIHNodXRkb3duIGlzIHJlbGV2YW50IGFzIHdlbGwuCgpXYWl0IGEgc2Vjb25kLiBgX190aXBjX3NodXRkb3duYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBtZWFucyBpdCBjYW4mIzM5O3QgYmUgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgc291cmNlIGZpbGUgaXQmIzM5O3MgZGVjbGFyZWQgaW4uIFNvLCB0byBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2Ygc2h1dGRvd24gYmVoYXZpb3VyLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBub24tc3RhdGljIGZ1bmN0aW9uIHdyYXBzIGBfX3RpcGNfc2h1dGRvd25gLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGUgcGF0Y2ggaXMgYWZmZWN0aW5nIHRoZSBlbnRyeSBwb2ludCBmdW5jdGlvbiBvZiB0aGUgc2h1dGRvd24gYmVoYXZpb3VyLiBUaW1lIHRvIGdvIGh1bnRpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdGlwY19zaHV0ZG93biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9zb2NrZXQuYz01NDI9c3RhdGljIHZvaWQgdGlwY19za19jYWxsYmFjayhzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtNTQ5LS8qIENhbGxlciBzaG91bGQgaG9sZCBzb2NrZXQgbG9jayBmb3IgdGhlIHNvY2tldC4gKi9cbm5ldC90aXBjL3NvY2tldC5jOjU1MDpzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxubmV0L3RpcGMvc29ja2V0LmMtNTUxLXtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz02MjY9c3RhdGljIGludCB0aXBjX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy02NDEtXHR0cmFjZV90aXBjX3NrX3JlbGVhc2Uoc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFwmIzM0OyBcJiMzNDspO1xubmV0L3RpcGMvc29ja2V0LmM6NjQyOlx0X190aXBjX3NodXRkb3duKHNvY2ssIFRJUENfRVJSX05PX1BPUlQpO1xubmV0L3RpcGMvc29ja2V0LmMtNjQzLVx0c2stXHUwMDNlc2tfc2h1dGRvd24gPSBTSFVURE9XTl9NQVNLO1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI4MDk9c3RhdGljIGludCB0aXBjX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBob3cpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjgxOS1cdHRyYWNlX3RpcGNfc2tfc2h1dGRvd24oc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFwmIzM0OyBcJiMzNDspO1xubmV0L3RpcGMvc29ja2V0LmM6MjgyMDpcdF9fdGlwY19zaHV0ZG93bihzb2NrLCBUSVBDX0NPTk5fU0hVVERPV04pO1xubmV0L3RpcGMvc29ja2V0LmMtMjgyMS1cdHNrLVx1MDAzZXNrX3NodXRkb3duID0gU0hVVERPV05fTUFTSztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4OTMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgU29ja2V0IE9wZXJhdGlvbnMgaW4gVElQQyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoZXNlIFRJUEMgc29ja2V0IG9wZXJhdGlvbnMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgdGlwY19yZWxlYXNlYCBhbmQgYHRpcGNfc2h1dGRvd25gIGFyZSBjb3JyZWN0bHkgd2lyZWQgdXAuIEkga25vdyB0aGV5JiMzOTtyZSB0aGUgbm9uLXN0YXRpYyBvbmVzIOKAkyB0aGUgb25lcyBkZWFsaW5nIHdpdGggdGhlIHNvY2tldCBpbnN0YW5jZSBpdHNlbGYgcmF0aGVyIHRoYW4ganVzdCB0aGUgdW5kZXJseWluZyBwcm90b2NvbC4gTXkgaW1tZWRpYXRlIGNoZWNrIGhhcyB0byBiZSB0aGUgYHByb3RvX29wc2Agc3RydWN0dXJlLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgZnVuZGFtZW50YWwgc29ja2V0IG9wZXJhdGlvbnMgYXJlIGRlZmluZWQuIEkgaGF2ZSB0byB2ZXJpZnkgdGhhdCB0aGVzZSB0d28gZnVuY3Rpb25zLCBgdGlwY19yZWxlYXNlYCBhbmQgYHRpcGNfc2h1dGRvd25gLCBhcmUgYWN0dWFsbHkgYXNzaWduZWQgd2l0aGluIHRoYXQgc3RydWN0dXJlLiBUaGF0IGlzIHRoZSBjcml0aWNhbCBwbGFjZSB0byBlbnN1cmUgcHJvcGVyIHNvY2tldCBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVElQQyBmcmFtZXdvcmsuIElmIHRoZXkgYXJlIG5vdCBpbiB0aGUgYHByb3RvX29wc2Agc3RydWN0dXJlLCB3ZSYjMzk7cmUgaW4gdHJvdWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19zaHV0ZG93biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9zb2NrZXQuYz01NDI9c3RhdGljIHZvaWQgdGlwY19za19jYWxsYmFjayhzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtNTQ5LS8qIENhbGxlciBzaG91bGQgaG9sZCBzb2NrZXQgbG9jayBmb3IgdGhlIHNvY2tldC4gKi9cbm5ldC90aXBjL3NvY2tldC5jOjU1MDpzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxubmV0L3RpcGMvc29ja2V0LmMtNTUxLXtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz02MjY9c3RhdGljIGludCB0aXBjX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy02NDEtXHR0cmFjZV90aXBjX3NrX3JlbGVhc2Uoc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFwmIzM0OyBcJiMzNDspO1xubmV0L3RpcGMvc29ja2V0LmM6NjQyOlx0X190aXBjX3NodXRkb3duKHNvY2ssIFRJUENfRVJSX05PX1BPUlQpO1xubmV0L3RpcGMvc29ja2V0LmMtNjQzLVx0c2stXHUwMDNlc2tfc2h1dGRvd24gPSBTSFVURE9XTl9NQVNLO1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI3Mjk9c3RhdGljIGludCB0aXBjX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdfc29jayxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yODAwLS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MjgwMTogKiB0aXBjX3NodXRkb3duIC0gc2h1dGRvd24gc29ja2V0IGNvbm5lY3Rpb25cbm5ldC90aXBjL3NvY2tldC5jLTI4MDItICogQHNvY2s6IHNvY2tldCBzdHJ1Y3R1cmVcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yODA4LSAqL1xubmV0L3RpcGMvc29ja2V0LmM6MjgwOTpzdGF0aWMgaW50IHRpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGhvdylcbm5ldC90aXBjL3NvY2tldC5jLTI4MTAte1xuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI4MTktXHR0cmFjZV90aXBjX3NrX3NodXRkb3duKHNrLCBOVUxMLCBUSVBDX0RVTVBfQUxMLCBcJiMzNDsgXCYjMzQ7KTtcbm5ldC90aXBjL3NvY2tldC5jOjI4MjA6XHRfX3RpcGNfc2h1dGRvd24oc29jaywgVElQQ19DT05OX1NIVVRET1dOKTtcbm5ldC90aXBjL3NvY2tldC5jLTI4MjEtXHRzay1cdTAwM2Vza19zaHV0ZG93biA9IFNIVVRET1dOX01BU0s7XG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MzM2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtc2dfb3BzID0ge1xuLS1cbm5ldC90aXBjL3NvY2tldC5jLTMzNzgtXHQubGlzdGVuXHRcdD0gc29ja19ub19saXN0ZW4sXG5uZXQvdGlwYy9zb2NrZXQuYzozMzc5Olx0LnNodXRkb3duXHQ9IHRpcGNfc2h1dGRvd24sXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzgwLVx0LnNldHNvY2tvcHRcdD0gdGlwY19zZXRzb2Nrb3B0LFxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTMzODc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzk4LVx0Lmxpc3Rlblx0XHQ9IHRpcGNfbGlzdGVuLFxubmV0L3RpcGMvc29ja2V0LmM6MzM5OTpcdC5zaHV0ZG93blx0PSB0aXBjX3NodXRkb3duLFxubmV0L3RpcGMvc29ja2V0LmMtMzQwMC1cdC5zZXRzb2Nrb3B0XHQ9IHRpcGNfc2V0c29ja29wdCxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0zNDA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHN0cmVhbV9vcHMgPSB7XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMzQxOC1cdC5saXN0ZW5cdFx0PSB0aXBjX2xpc3Rlbixcbm5ldC90aXBjL3NvY2tldC5jOjM0MTk6XHQuc2h1dGRvd25cdD0gdGlwY19zaHV0ZG93bixcbm5ldC90aXBjL3NvY2tldC5jLTM0MjAtXHQuc2V0c29ja29wdFx0PSB0aXBjX3NldHNvY2tvcHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTc2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUSVBDIFNvY2tldCBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIFRJUEMgc29ja2V0IG9wZXJhdGlvbnMsIHRyeWluZyB0byBpZGVudGlmeSBnb29kIGVudHJ5IHBvaW50cyBmb3Igc29tZXRoaW5nLi4uIEkgaW5pdGlhbGx5IHRob3VnaHQgYHRpcGNfc2h1dGRvd25gIGFuZCBgdGlwY19yZWxlYXNlYCBtaWdodCBiZSBkZWNlbnQsIGJ1dCB0aGV5JiMzOTtyZSBzdGF0aWMgc29ja2V0IG9wZXJhdGlvbnMuIFRoYXQmIzM5O3MgYSBmbGFnLiBXaGlsZSBpdCYjMzk7cyB1bmxpa2VseSwgYmVpbmcgc3RhdGljIG1lYW5zIHRoZXkgKmNvdWxkKiBiZSBpbmxpbmVkLiBTb2NrZXQgb3BlcmF0aW9ucyBhcmUgKnVzdWFsbHkqIG5vdCBpbmxpbmVkIGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB1c2VkIGZvciBgcHJvdG9fb3BzYCwgYnV0IGl0JiMzOTtzIHN0aWxsIHNvbWV0aGluZyB0byBjb25zaWRlci4KClRoZW4gSSBjaGVja2VkIGB0aXBjX3NrX3JjdmAg4oCTIGFuZCBpdCYjMzk7cyBnbG9iYWwsIGV4cG9ydGVkLCBhIHNvbGlkIGNhbmRpZGF0ZSEgTGV0JiMzOTtzIHZlcmlmeS4uLiB5ZXMsIGdsb2JhbC4gQmluZ28uIEFueSBvdGhlciBnbG9iYWwgZnVuY3Rpb25zIHRvIGNvbnNpZGVyPyBJIHF1aWNrbHkgZm91bmQgYHRpcGNfbm9kZV94bWl0YCBhbmQgYHRpcGNfc2tfbWNhc3RfcmN2YC4gU28sIGB0aXBjX3NrX3JjdmAsIGB0aXBjX25vZGVfeG1pdGAsIGFuZCBgdGlwY19za19tY2FzdF9yY3ZgIGFyZSBwb3RlbnRpYWwgKkZvY3VzU3ltYm9scyouCgpCdXQgbGV0JiMzOTtzIHRoaW5rIGEgYml0IG1vcmUgZGVlcGx5IGFib3V0IHRoZSBjYWxsIHBhdGguIFdhaXQsIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgaXMgY2FsbGVkIGZyb20gYHRpcGNfc2tfcmN2YCAodmlhIGB0aXBjX3NrX2ZpbHRlcl9yY3ZgIC0mZ3Q7IGB0aXBjX3NrX3Byb3RvX3JjdmAgZXRjLikuIEFoLCB0aGF0IHNldHRsZXMgaXQhIGB0aXBjX3NrX3JjdmAgbG9va3MgcGVyZmVjdCBiZWNhdXNlIGl0JiMzOTtzIGdsb2JhbCBhbmQgdGllcyBpbnRvIHRoZSByZWNlaXZlIHBhdGguCgpFdmVuIHRob3VnaCBgdGlwY19zaHV0ZG93bmAgYW5kIGB0aXBjX3JlbGVhc2VgIGFyZSBzdGF0aWMsIHRoZXkgc2hvdWxkIGJlIGFkZHJlc3MtdGFrZW4sIHNvIHRoZXkgd29uJiMzOTt0IGJlIGlubGluZWQuIEJ1dCBnaXZlbiB0aGUgcHJvbXB0ICYjMzQ7UHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zJiMzNDssIGB0aXBjX3NrX3JjdmAgaXMgdGhlIGJldHRlciBjaG9pY2UuCgpXaGF0IGFib3V0IG90aGVyIHNlbmQgb3BlcmF0aW9ucz8gQXJlIGB0aXBjX3NlbmRtc2dgIGFuZCBgdGlwY19zZW5kc3RyZWFtYCBwcm9taXNpbmc/IFRob3NlIGFyZSBzdGF0aWMgdG9vLiBJIHF1aWNrbHkgY2hlY2tlZCB3aGV0aGVyIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgaXMgY2FsbGVkIGZyb20gYHNlbmRtc2dgLCBidXQgbm8sIHRob3NlIGFyZSBhbGwgcmVjZWl2ZSBhbmQgc2h1dGRvd24gcGF0aCwgbGlrZSBJIGV4cGVjdGVkLiBPa2F5LCBzbyBgdGlwY19za19yY3ZgIGFuZCBgdGlwY19zaHV0ZG93bmAgKG9yIG1heWJlIGB0aXBjX3JlbGVhc2VgLCBhbHRob3VnaCB0aGV5IGFyZSBlcXVpdmFsZW50KSBhcmUgdGhlIGNsZWFuZXN0IGVudHJ5IHBvaW50cy4KCkZpbmFsbHksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGxvb2sgYXQgdGhlIEtjb25maWcgYW5kIHNlZSBob3cgYFRJUENgIGlzIGRlZmluZWQgYW5kIHdoYXQgaXQgZGVwZW5kcyBvbi4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBnb3RjaGFzIGluIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVElQQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnLTUtXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgVElQQyBQcm90b2NvbFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjMtXG5uZXQvdGlwYy9LY29uZmlnOjI0OmNvbmZpZyBUSVBDX01FRElBX0lCXG5uZXQvdGlwYy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjktXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL0tjb25maWctMzEtXHRib29sIFwmIzM0O0lQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxubmV0L3RpcGMvS2NvbmZpZzozODpjb25maWcgVElQQ19DUllQVE9cbm5ldC90aXBjL0tjb25maWctMzktXHRib29sIFwmIzM0O1RJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy01Mi1cbm5ldC90aXBjL0tjb25maWc6NTM6Y29uZmlnIFRJUENfRElBR1xubmV0L3RpcGMvS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O1RJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMyMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipFeGFtaW5pbmcgdGhlIFRJUEMgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgVElQQyAoVHJhbnNwYXJlbnQgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uKSBjb25maWd1cmF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBgbmV0L3RpcGMvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgc3RhbmRhcmQgcGxhY2UgZm9yIHRoaXMga2luZCBvZiBpbmZvcm1hdGlvbiwgc28gbGV0JiMzOTtzIHN0YXJ0IHRoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3Igb3B0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIFRJUEMgdG8gd29yayBjb3JyZWN0bHksIG9yIHdoYXQgb3RoZXIgb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIGNlcnRhaW4gVElQQyBmZWF0dXJlcy4gR290dGEgbWFrZSBzdXJlIEkgZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoYXQgY29uZmlndXJhdGlvbiBzcGFjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgVElQQyBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgVElQQ1xuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGhlIFRJUEMgUHJvdG9jb2xcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGUgVHJhbnNwYXJlbnQgSW50ZXIgUHJvY2VzcyBDb21tdW5pY2F0aW9uIChUSVBDKSBwcm90b2NvbCBpc1xuICAxMTpcdFx0ICBzcGVjaWFsbHkgZGVzaWduZWQgZm9yIGludHJhIGNsdXN0ZXIgY29tbXVuaWNhdGlvbi4gVGhpcyBwcm90b2NvbFxuICAxMjpcdFx0ICBvcmlnaW5hdGVzIGZyb20gRXJpY3Nzb24gd2hlcmUgaXQgaGFzIGJlZW4gdXNlZCBpbiBjYXJyaWVyIGdyYWRlXG4gIDEzOlx0XHQgIGNsdXN0ZXIgYXBwbGljYXRpb25zIGZvciBtYW55IHllYXJzLlxuICAxNDpcdFxuICAxNTpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBUSVBDLCBzZWUgaHR0cDovL3RpcGMuc291cmNlZm9yZ2UubmV0LlxuICAxNjpcdFxuICAxNzpcdFx0ICBUaGlzIHByb3RvY29sIHN1cHBvcnQgaXMgYWxzbyBhdmFpbGFibGUgYXMgYSBtb2R1bGUgKCA9IGNvZGUgd2hpY2hcbiAgMTg6XHRcdCAgY2FuIGJlIGluc2VydGVkIGluIGFuZCByZW1vdmVkIGZyb20gdGhlIHJ1bm5pbmcga2VybmVsIHdoZW5ldmVyIHlvdVxuICAxOTpcdFx0ICB3YW50KS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB0aXBjLiBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0XG4gIDIwOlx0XHQgIGFzIGEgbW9kdWxlLCBzYXkgTSBoZXJlIGFuZCByZWFkIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxlcy5yc3RcdTAwM2UuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzk5CgkJCQkJCQlvdXRwdXQ6IDEzMAoJCQkJCQkJdGhvdWdodHM6IDQwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBUaGlzIFRJUEMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBmdW5kYW1lbnRhbGx5IHRvdWNoZXMgYFRJUENgLCB3aGljaCBJIGtub3cgZGVwZW5kcyBvbiBgSU5FVGAuIFRoZXJlZm9yZSwgZW5hYmxpbmcgYFRJUENgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiB0byBnZXQgc3RhcnRlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZG91YmxlLWNoZWNrIHRoZSBlbnRyeSBwb2ludHMgdGhpcyBjaGFuZ2UgYWZmZWN0cywgc3BlY2lmaWNhbGx5IGlmIGB0aXBjX3NrX3JjdmAgaXMgdGhlIG9ubHkgbm9uLXN0YXRpYyBvbmUuIEJ1dCwgbm8sIGB0aXBjX3NrX21jYXN0X3JjdmAgaXMgYWxzbyBleHBvc2VkLiBJJiMzOTtsbCBhZGQgYm90aCBgdGlwY19za19yY3ZgIGFuZCBgdGlwY19za19tY2FzdF9yY3ZgIHRvIGBGb2N1c1N5bWJvbHNgIHRvIHRhcmdldCB0aGVtIHNwZWNpZmljYWxseS4KCk5vdywgbG9va2luZyBkZWVwZXIsIHRoZSBwYXRjaCBhbHRlcnMgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gSXQmIzM5O3Mgc3BsaWNpbmcgYHR4cWAgdG8gYHhtaXRxYCB3aGVuIGB4bWl0cWAgaXMgcHJvdmlkZWQgYW5kIHRoZSBkZXN0aW5hdGlvbiBpcyBvbiB0aGUgc2FtZSBub2RlLiBUaGlzIGlzIGEgY2xldmVyIG9wdGltaXphdGlvbiwgYnlwYXNzaW5nIHRoZSBub3JtYWwgYHRpcGNfbm9kZV94bWl0YCBwYXRoIGFuZCBkaXJlY3RseSBxdWV1ZWluZyBwYWNrZXRzIHRvIGB4bWl0cWAsIHdoaWNoIHRoZSBjYWxsZXIgdGhlbiBoYW5kbGVzLiBUaGlzIGlzIGVpdGhlciBhIHBlcmZvcm1hbmNlIHdpbiwgYSBsb2NrIGlzc3VlIGZpeCBvciBtYXliZSBqdXN0IGEgZnVuY3Rpb25hbCBiYXRjaGluZyBjaGFuZ2UuIFRoaXMgbmVlZHMgdG8gYmUgZnV6emVkIQoKQWxyaWdodCwgdGltZSB0byBkaXN0aWxsIHRoaXMgaW5mb3JtYXRpb24gaW50byB0aGUgcmVxdWlyZWQgcGFyYW1ldGVycy4gV2UmIzM5O3JlIGRlZmluaXRlbHkgdGFnZ2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIGBGb2N1c1N5bWJvbHNgIGluY2x1ZGVzIGB0aXBjX3NrX3JjdmAgYW5kIGB0aXBjX3NrX21jYXN0X3JjdmAuIGBFbmFibGVDb25maWdzYCB3aWxsIHN0YXJ0IHdpdGggYFRJUENgLiBUaGUgY29yZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgcGF0Y2ggZnVuZGFtZW50YWxseSBjaGFuZ2VzIHRoZSBUSVBDIHNvY2tldCByZWNlaXZlIGFuZCBzaHV0ZG93biBwYXRocyBieSBhbHRlcmluZyB0aGUgYmFja2xvZyBwdXNoaW5nIG1lY2hhbmlzbS4gSXQgc3BsaWNlcyB0aGUgdHJhbnNtaXQgcXVldWUgdG8gYSBwcm92aWRlZCB4bWl0cSByYXRoZXIgdGhhbiB0cmFuc21pdHRpbmcgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIHNhbWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgVElQQyBzb2NrZXQgbG9naWMuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBmb3IgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIEFoLCBgVElQQ19NRURJQV9VRFBgLiBXaGlsZSBgVElQQ2AgaXMgc3VmZmljaWVudCB0byBlbmFibGUgdGhlIGNvcmUsIGBUSVBDX01FRElBX1VEUGAgd291bGQgYmUgdXNlZnVsIGZvciBmdXp6aW5nIFRJUEMgb3ZlciBVRFAsIHdoaWNoIHN5emthbGxlciBvZnRlbiB0YXJnZXRzLiBTbywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYmVjYXVzZSBpdCBjYW4mIzM5O3QgaHVydCwgSSYjMzk7bGwgaW5jbHVkZSBib3RoIGBUSVBDYCBhbmQgYFRJUENfTUVESUFfVURQYCBpbiBgRW5hYmxlQ29uZmlnc2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUSVBDJiMzNDssCiAgICAmIzM0O1RJUENfTUVESUFfVURQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGlwY19za19yY3YmIzM0OywKICAgICYjMzQ7dGlwY19za19tY2FzdF9yY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRJUEMgc29ja2V0IHJlY2VpdmUgYW5kIHNodXRkb3duIHBhdGhzIGJ5IGNoYW5naW5nIGhvdyB0aGUgc29ja2V0IGJhY2tsb2cgaXMgcHVzaGVkLiBJdCBzcGxpY2VzIHRoZSB0cmFuc21pdCBxdWV1ZSB0byBhIHByb3ZpZGVkIHhtaXRxIGluc3RlYWQgb2YgdHJhbnNtaXR0aW5nIGRpcmVjdGx5IHdoZW4gdGhlIGRlc3RpbmF0aW9uIGlzIG9uIHRoZSBzYW1lIG5vZGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFRJUEMgc29ja2V0IGxvZ2ljIHRoYXQgYWZmZWN0cyBtZXNzYWdlIHRyYW5zbWlzc2lvbiBhbmQgcXVldWUgbWFuYWdlbWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VElQQyYjMzQ7LAogICAgJiMzNDtUSVBDX01FRElBX1VEUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RpcGNfc2tfcmN2JiMzNDssCiAgICAmIzM0O3RpcGNfc2tfbWNhc3RfcmN2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUSVBDIHNvY2tldCByZWNlaXZlIGFuZCBzaHV0ZG93biBwYXRocyBieSBjaGFuZ2luZyBob3cgdGhlIHNvY2tldCBiYWNrbG9nIGlzIHB1c2hlZC4gSXQgc3BsaWNlcyB0aGUgdHJhbnNtaXQgcXVldWUgdG8gYSBwcm92aWRlZCB4bWl0cSBpbnN0ZWFkIG9mIHRyYW5zbWl0dGluZyBkaXJlY3RseSB3aGVuIHRoZSBkZXN0aW5hdGlvbiBpcyBvbiB0aGUgc2FtZSBub2RlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBUSVBDIHNvY2tldCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVzc2FnZSB0cmFuc21pc3Npb24gYW5kIHF1ZXVlIG1hbmFnZW1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgZnVuY3Rpb24gdG8gYWNjZXB0IGFuIGFkZGl0aW9uYWwgYHhtaXRxYCBhcmd1bWVudCwgYWxsb3dpbmcgaXQgdG8gc3BsaWNlIHRoZSBzb2NrZXQmIzM5O3Mgd3JpdGUgcXVldWUgZGlyZWN0bHkgaW50byB0aGUgdHJhbnNtaXQgcXVldWUgd2hlbiBzZW5kaW5nIHRvIHRoZSBzYW1lIG5vZGUsIHJhdGhlciB0aGFuIGNhbGxpbmcgYHRpcGNfbm9kZV94bWl0YC4gVGhpcyBpcyBhIGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgbWFuYWdlbWVudCBjaGFuZ2UuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGNvcHlpbmcgb2YgZGF0YSB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIGNoYW5nZSB3b3VsZCBiZSByZWxhdGVkIHRvIHF1ZXVlIG1hbmFnZW1lbnQgKGUuZy4sIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBtZW1vcnkgbGVha3MpLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDRiMDY0NWQ1NTFkOGY0YTlkNzVlN2RmYzFiMTQyMGE3NmYyYzczMDMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAxMzoyNDozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmMKaW5kZXggZTU2NDM0MWUwMjE2ZC4uMzNkNzQ0ZGM1MTRmNSAxMDA2NDQKLS0tIGEvbmV0L3RpcGMvc29ja2V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvc29ja2V0LmMKQEAgLTE1Niw3ICYjNDM7MTU2LDggQEAgc3RhdGljIGludCB0aXBjX3NrX2luc2VydChzdHJ1Y3QgdGlwY19zb2NrICp0c2spOwogc3RhdGljIHZvaWQgdGlwY19za19yZW1vdmUoc3RydWN0IHRpcGNfc29jayAqdHNrKTsKIHN0YXRpYyBpbnQgX190aXBjX3NlbmRzdHJlYW0oc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgc2l6ZV90IGRzeik7CiBzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opOwotc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2Fjayk7CiYjNDM7c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaywKJiM0MzsJCQkJIHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKTsKIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzOwpAQCAtNTYwLDcgJiM0Mzs1NjEsNyBAQCBzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKQogCQkJCQkgICAgIXRza19jb25uX2NvbmcodHNrKSkpOwogCiAJLyogUHVzaCBvdXQgZGVsYXllZCBtZXNzYWdlcyBpZiBpbiBOYWdsZSBtb2RlICovCi0JdGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7CiYjNDM7CXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIE5VTEwpOwogCS8qIFJlbW92ZSBwZW5kaW5nIFNZTiAqLwogCV9fc2tiX3F1ZXVlX3B1cmdlKCZhbXA7c2stJmd0O3NrX3dyaXRlX3F1ZXVlKTsKIApAQCAtMTI2Nyw4ICYjNDM7MTI2OCwxMCBAQCB2b2lkIHRpcGNfc2tfbWNhc3RfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqYXJydnEsCiAKIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWUKICAqICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gc29ja2V0IGlzIGluIE5hZ2xlIG1vZGUKJiM0MzsgKiBAeG1pdHE6IHJlY2VpdmUgb3V0cHV0IHF1ZXVlLCBvciBOVUxMIG91dHNpZGUgcmVjZWl2ZSBjb250ZXh0CiAgKi8KLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spCiYjNDM7c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaywKJiM0MzsJCQkJIHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKQogewogCXN0cnVjdCBza19idWZmX2hlYWQgKnR4cSA9ICZhbXA7dHNrLSZndDtzay5za193cml0ZV9xdWV1ZTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX3BlZWtfdGFpbCh0eHEpOwpAQCAtMTMxMCw2ICYjNDM7MTMxMywxMiBAQCBzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKQogCQl0c2stJmd0O3BrdF9jbnQgJiM0Mzs9IHNrYl9xdWV1ZV9sZW4odHhxKTsKIAl0c2stJmd0O3NudF91bmFja2VkICYjNDM7PSB0c2stJmd0O3NuZF9iYWNrbG9nOwogCXRzay0mZ3Q7c25kX2JhY2tsb2cgPSAwOwomIzQzOwomIzQzOwlpZiAoeG1pdHEgJmFtcDsmYW1wOyBpbl9vd25fbm9kZShuZXQsIGRub2RlKSkgewomIzQzOwkJc2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQodHhxLCB4bWl0cSk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKIAlyYyA9IHRpcGNfbm9kZV94bWl0KG5ldCwgdHhxLCBkbm9kZSwgdHNrLSZndDtwb3J0aWQpOwogCWlmIChyYyA9PSAtRUxJTktDT05HKQogCQl0c2stJmd0O2NvbmdfbGlua19jbnQgPSAxOwpAQCAtMTM2Nyw3ICYjNDM7MTM3Niw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfY29ubl9wcm90b19yY3Yoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJZ290byBleGl0OwogCiAJCXdhc19jb25nID0gdHNrX2Nvbm5fY29uZyh0c2spOwotCQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSk7CiYjNDM7CQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSwgeG1pdHEpOwogCQl0c2stJmd0O3NudF91bmFja2VkIC09IG1zZ19jb25uX2FjayhoZHIpOwogCQlpZiAodHNrLSZndDtwZWVyX2NhcHMgJmFtcDsgVElQQ19CTE9DS19GTE9XQ1RMKQogCQkJdHNrLSZndDtzbmRfd2luID0gbXNnX2Fkdl93aW4oaGRyKTsKQEAgLTIxNjUsNyAmIzQzOzIxNzQsNyBAQCBzdGF0aWMgdm9pZCB0aXBjX3NrX3Byb3RvX3JjdihzdHJ1Y3Qgc29jayAqc2ssCiAJCXNtcF93bWIoKTsKIAkJdHNrLSZndDtjb25nX2xpbmtfY250LS07CiAJCXdha2V1cCA9IHRydWU7Ci0JCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpOwomIzQzOwkJdGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgeG1pdHEpOwogCQlicmVhazsKIAljYXNlIEdST1VQX1BST1RPQ09MOgogCQl0aXBjX2dyb3VwX3Byb3RvX3JjdihncnAsICZhbXA7d2FrZXVwLCBoZHIsIGlucHV0cSwgeG1pdHEpOwpAQCAtMjI1Niw3ICYjNDM7MjI2NSw3IEBAIHN0YXRpYyBib29sIHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3Qoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlyZXR1cm4gZmFsc2U7CiAJY2FzZSBUSVBDX0VTVEFCTElTSEVEOgogCQlpZiAoIXNrYl9xdWV1ZV9lbXB0eSgmYW1wO3NrLSZndDtza193cml0ZV9xdWV1ZSkpCi0JCQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTsKJiM0MzsJCQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7CiAJCS8qIEFjY2VwdCBvbmx5IGNvbm5lY3Rpb24tYmFzZWQgbWVzc2FnZXMgc2VudCBieSBwZWVyICovCiAJCWlmIChsaWtlbHkoY29uX21zZyAmYW1wOyZhbXA7ICFlcnIgJmFtcDsmYW1wOyBwcG9ydCA9PSBvcG9ydCAmYW1wOyZhbXA7CiAJCQkgICBwbm9kZSA9PSBvbm9kZSkpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTgKCQkJCQkJCW91dHB1dDogMTgzCgkJCQkJCQl0aG91Z2h0czogMzg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBTb2NrZXQgTW9kaWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCBjaGFuZ2VzIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2Agd2l0aGluIGBuZXQvdGlwYy9zb2NrZXQuY2AgdG8gaW5jbHVkZSBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50LCBgeG1pdHFgLCBhIHBvaW50ZXIgdG8gYSBgc3RydWN0IHNrX2J1ZmZfaGVhZGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiBjb25kaXRpb25hbGx5IHNwbGljaW5nIGB0eHFgIGludG8gYHhtaXRxYCBpZiBgeG1pdHFgIGlzIHByb3ZpZGVkIGFuZCB0aGUgZGVzdGluYXRpb24gbm9kZSBtYXRjaGVzIHRoZSBsb2NhbCBub2RlLiBUaGUgaW50ZW50IGhlcmUgaXMgY2xlYXI6IHRvIGJ5cGFzcyBhIGNhbGwgdG8gYHRpcGNfbm9kZV94bWl0YCB3aGVuIHJlY2VpdmluZyBvbiB0aGUgbG9jYWwgbm9kZSwgb3B0aW5nIGluc3RlYWQgdG8gYXBwZW5kIHRoZSBwYWNrZXRzIHRvIGB4bWl0cWAgZm9yIGxhdGVyIHByb2Nlc3NpbmcuCgpNeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgbWVtb3J5IHNhZmV0eS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaW50cm9kdWNlcyBhbnkgcmlza3MgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeS4gTGV0JiMzOTtzIHRyYWNlIGl0LiBUaGUgcGF0Y2ggcGFzc2VzIGB4bWl0cWAgdG8gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCBmcm9tIGV4aXN0aW5nIGNvbnRleHRzIGxpa2UgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgLCBgdGlwY19za19wcm90b19yY3ZgLCBhbmQgYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLCBpbXBseWluZyB0aGF0IHRoaXMgYHhtaXRxYCBhbHJlYWR5IGhvbGRzIGEgdmFsaWQgdmFsdWUuIEluc2lkZSBgdGlwY19za19wdXNoX2JhY2tsb2dgLCB3ZSBzZWUgdGhlIGZvbGxvd2luZzoKCmBgYGMKJiM0MzsJaWYgKHhtaXRxICZhbXA7JmFtcDsgaW5fb3duX25vZGUobmV0LCBkbm9kZSkpIHsKJiM0MzsJCXNrYl9xdWV1ZV9zcGxpY2VfdGFpbF9pbml0KHR4cSwgeG1pdHEpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CmBgYAoKTG9va2luZyBhdCB0aGUgY29kZSwgaXQmIzM5O3MganVzdCBtb3ZpbmcgU0tCcyBmcm9tIGB0eHFgIHRvIGB4bWl0cWAuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vdGhpbmcgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBuZXcgdmFyaWFibGVzIGFyZSBpbml0aWFsaXplZC4gSXQmIzM5O3MgYSBwdXJlIGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgbWFuYWdlbWVudCBjaGFuZ2UuCgpUaGVyZWZvcmUsIHNpbmNlIHRoaXMgaXMganVzdCBhIHJlLWFycmFuZ2VtZW50IG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucyBvciB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB0aGlzIGlzbiYjMzk7dCBhIEtNU0FOIGlzc3VlLiBUaGUgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBhcmUgb2YgdGhlIHR5cGUgdGhhdCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQgdGVzdGluZzsgbmFtZWx5LCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbG9naWMgZXJyb3JzIChsaWtlIGRyb3BwZWQgb3IgZG91YmxlLXF1ZXVlZCBwYWNrZXRzKS4gQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSB3aWxsIHNldCBgTmVlZHNLTVNBTmAgdG8gYGZhbHNlYC4gSSBjYW4gbm93IGZpbmFsaXplIHRoZSByZWFzb25pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgdGlwY19za19wdXNoX2JhY2tsb2dgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhbiBhZGRpdGlvbmFsIGB4bWl0cWAgYXJndW1lbnQsIGFsbG93aW5nIGl0IHRvIHNwbGljZSB0aGUgc29ja2V0JiMzOTtzIHdyaXRlIHF1ZXVlIGRpcmVjdGx5IGludG8gdGhlIHRyYW5zbWl0IHF1ZXVlIHdoZW4gc2VuZGluZyB0byB0aGUgc2FtZSBub2RlLCByYXRoZXIgdGhhbiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAuIFRoaXMgaXMgYSBjb250cm9sIGZsb3cgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgY2hhbmdlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBjb3B5aW5nIG9mIGRhdGEgdG8gdXNlciBzcGFjZS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2Ugd291bGQgYmUgcmVsYXRlZCB0byBxdWV1ZSBtYW5hZ2VtZW50IChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbWVtb3J5IGxlYWtzKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgZnVuY3Rpb24gdG8gYWNjZXB0IGFuIGFkZGl0aW9uYWwgYHhtaXRxYCBhcmd1bWVudCwgYWxsb3dpbmcgaXQgdG8gc3BsaWNlIHRoZSBzb2NrZXQmIzM5O3Mgd3JpdGUgcXVldWUgZGlyZWN0bHkgaW50byB0aGUgdHJhbnNtaXQgcXVldWUgd2hlbiBzZW5kaW5nIHRvIHRoZSBzYW1lIG5vZGUsIHJhdGhlciB0aGFuIGNhbGxpbmcgYHRpcGNfbm9kZV94bWl0YC4gVGhpcyBpcyBhIGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgbWFuYWdlbWVudCBjaGFuZ2UuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGNvcHlpbmcgb2YgZGF0YSB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIGNoYW5nZSB3b3VsZCBiZSByZWxhdGVkIHRvIHF1ZXVlIG1hbmFnZW1lbnQgKGUuZy4sIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBtZW1vcnkgbGVha3MpLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI0OjM0LjYxNzk5NTA3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MDQ1MDQ4NzQzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfc2tfcmN2XCIsXG4gICAgXCJ0aXBjX3NrX21jYXN0X3JjdlwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgZnVuY3Rpb24gdG8gYWNjZXB0IGFuIGFkZGl0aW9uYWwgYHhtaXRxYCBhcmd1bWVudCwgYWxsb3dpbmcgaXQgdG8gc3BsaWNlIHRoZSBzb2NrZXQncyB3cml0ZSBxdWV1ZSBkaXJlY3RseSBpbnRvIHRoZSB0cmFuc21pdCBxdWV1ZSB3aGVuIHNlbmRpbmcgdG8gdGhlIHNhbWUgbm9kZSwgcmF0aGVyIHRoYW4gY2FsbGluZyBgdGlwY19ub2RlX3htaXRgLiBUaGlzIGlzIGEgY29udHJvbCBmbG93IGFuZCBxdWV1ZSBtYW5hZ2VtZW50IGNoYW5nZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgY29weWluZyBvZiBkYXRhIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgY2hhbmdlIHdvdWxkIGJlIHJlbGF0ZWQgdG8gcXVldWUgbWFuYWdlbWVudCAoZS5nLiwgdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIG1lbW9yeSBsZWFrcyksIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVElQQyBzb2NrZXQgcmVjZWl2ZSBhbmQgc2h1dGRvd24gcGF0aHMgYnkgY2hhbmdpbmcgaG93IHRoZSBzb2NrZXQgYmFja2xvZyBpcyBwdXNoZWQuIEl0IHNwbGljZXMgdGhlIHRyYW5zbWl0IHF1ZXVlIHRvIGEgcHJvdmlkZWQgeG1pdHEgaW5zdGVhZCBvZiB0cmFuc21pdHRpbmcgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIHNhbWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgVElQQyBzb2NrZXQgbG9naWMgdGhhdCBhZmZlY3RzIG1lc3NhZ2UgdHJhbnNtaXNzaW9uIGFuZCBxdWV1ZSBtYW5hZ2VtZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNDozNC42MTgwMDE4MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjg3ODE3MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0YjA2NDVkNTUxZDhmNGE5ZDc1ZTdkZmMxYjE0MjBhNzZmMmM3MzAzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDEyIDEzOjI0OjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcXG5pbmRleCBlNTY0MzQxZTAyMTZkLi4zM2Q3NDRkYzUxNGY1IDEwMDY0NFxcbi0tLSBhL25ldC90aXBjL3NvY2tldC5jXFxuKysrIGIvbmV0L3RpcGMvc29ja2V0LmNcXG5AQCAtMTU2LDcgKzE1Niw4IEBAIHN0YXRpYyBpbnQgdGlwY19za19pbnNlcnQoc3RydWN0IHRpcGNfc29jayAqdHNrKTtcXG4gc3RhdGljIHZvaWQgdGlwY19za19yZW1vdmUoc3RydWN0IHRpcGNfc29jayAqdHNrKTtcXG4gc3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcXG4gc3RhdGljIGludCBfX3RpcGNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcXG4tc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2Fjayk7XFxuK3N0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSk7XFxuIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApO1xcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcztcXG5AQCAtNTYwLDcgKzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAhdHNrX2Nvbm5fY29uZyh0c2spKSk7XFxuIFxcbiBcXHQvKiBQdXNoIG91dCBkZWxheWVkIG1lc3NhZ2VzIGlmIGluIE5hZ2xlIG1vZGUgKi9cXG4tXFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7XFxuK1xcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIE5VTEwpO1xcbiBcXHQvKiBSZW1vdmUgcGVuZGluZyBTWU4gKi9cXG4gXFx0X19za2JfcXVldWVfcHVyZ2UoXFx1MDAyNnNrLVxcdTAwM2Vza193cml0ZV9xdWV1ZSk7XFxuIFxcbkBAIC0xMjY3LDggKzEyNjgsMTAgQEAgdm9pZCB0aXBjX3NrX21jYXN0X3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmFycnZxLFxcbiBcXG4gLyogdGlwY19za19wdXNoX2JhY2tsb2coKTogc2VuZCBhY2N1bXVsYXRlZCBidWZmZXJzIGluIHNvY2tldCB3cml0ZSBxdWV1ZVxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNvY2tldCBpcyBpbiBOYWdsZSBtb2RlXFxuKyAqIEB4bWl0cTogcmVjZWl2ZSBvdXRwdXQgcXVldWUsIG9yIE5VTEwgb3V0c2lkZSByZWNlaXZlIGNvbnRleHRcXG4gICovXFxuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spXFxuK3N0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSlcXG4ge1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp0eHEgPSBcXHUwMDI2dHNrLVxcdTAwM2Vzay5za193cml0ZV9xdWV1ZTtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHNrYl9wZWVrX3RhaWwodHhxKTtcXG5AQCAtMTMxMCw2ICsxMzEzLDEyIEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spXFxuIFxcdFxcdHRzay1cXHUwMDNlcGt0X2NudCArPSBza2JfcXVldWVfbGVuKHR4cSk7XFxuIFxcdHRzay1cXHUwMDNlc250X3VuYWNrZWQgKz0gdHNrLVxcdTAwM2VzbmRfYmFja2xvZztcXG4gXFx0dHNrLVxcdTAwM2VzbmRfYmFja2xvZyA9IDA7XFxuK1xcbitcXHRpZiAoeG1pdHEgXFx1MDAyNlxcdTAwMjYgaW5fb3duX25vZGUobmV0LCBkbm9kZSkpIHtcXG4rXFx0XFx0c2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQodHhxLCB4bWl0cSk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0cmMgPSB0aXBjX25vZGVfeG1pdChuZXQsIHR4cSwgZG5vZGUsIHRzay1cXHUwMDNlcG9ydGlkKTtcXG4gXFx0aWYgKHJjID09IC1FTElOS0NPTkcpXFxuIFxcdFxcdHRzay1cXHUwMDNlY29uZ19saW5rX2NudCA9IDE7XFxuQEAgLTEzNjcsNyArMTM3Niw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfY29ubl9wcm90b19yY3Yoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIFxcbiBcXHRcXHR3YXNfY29uZyA9IHRza19jb25uX2NvbmcodHNrKTtcXG4tXFx0XFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBtc2dfbmFnbGVfYWNrKGhkcikpO1xcbitcXHRcXHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSwgeG1pdHEpO1xcbiBcXHRcXHR0c2stXFx1MDAzZXNudF91bmFja2VkIC09IG1zZ19jb25uX2FjayhoZHIpO1xcbiBcXHRcXHRpZiAodHNrLVxcdTAwM2VwZWVyX2NhcHMgXFx1MDAyNiBUSVBDX0JMT0NLX0ZMT1dDVEwpXFxuIFxcdFxcdFxcdHRzay1cXHUwMDNlc25kX3dpbiA9IG1zZ19hZHZfd2luKGhkcik7XFxuQEAgLTIxNjUsNyArMjE3NCw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcXG4gXFx0XFx0c21wX3dtYigpO1xcbiBcXHRcXHR0c2stXFx1MDAzZWNvbmdfbGlua19jbnQtLTtcXG4gXFx0XFx0d2FrZXVwID0gdHJ1ZTtcXG4tXFx0XFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7XFxuK1xcdFxcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgR1JPVVBfUFJPVE9DT0w6XFxuIFxcdFxcdHRpcGNfZ3JvdXBfcHJvdG9fcmN2KGdycCwgXFx1MDAyNndha2V1cCwgaGRyLCBpbnB1dHEsIHhtaXRxKTtcXG5AQCAtMjI1Niw3ICsyMjY1LDcgQEAgc3RhdGljIGJvb2wgdGlwY19za19maWx0ZXJfY29ubmVjdChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0Y2FzZSBUSVBDX0VTVEFCTElTSEVEOlxcbiBcXHRcXHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShcXHUwMDI2c2stXFx1MDAzZXNrX3dyaXRlX3F1ZXVlKSlcXG4tXFx0XFx0XFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7XFxuK1xcdFxcdFxcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTtcXG4gXFx0XFx0LyogQWNjZXB0IG9ubHkgY29ubmVjdGlvbi1iYXNlZCBtZXNzYWdlcyBzZW50IGJ5IHBlZXIgKi9cXG4gXFx0XFx0aWYgKGxpa2VseShjb25fbXNnIFxcdTAwMjZcXHUwMDI2ICFlcnIgXFx1MDAyNlxcdTAwMjYgcHBvcnQgPT0gb3BvcnQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgcG5vZGUgPT0gb25vZGUpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI0OjM1Ljk4NzUxNzQxN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMyODg2ODg5NjYyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfc2tfcmN2XCIsXG4gICAgXCJ0aXBjX3NrX21jYXN0X3JjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUSVBDIHNvY2tldCByZWNlaXZlIGFuZCBzaHV0ZG93biBwYXRocyBieSBjaGFuZ2luZyBob3cgdGhlIHNvY2tldCBiYWNrbG9nIGlzIHB1c2hlZC4gSXQgc3BsaWNlcyB0aGUgdHJhbnNtaXQgcXVldWUgdG8gYSBwcm92aWRlZCB4bWl0cSBpbnN0ZWFkIG9mIHRyYW5zbWl0dGluZyBkaXJlY3RseSB3aGVuIHRoZSBkZXN0aW5hdGlvbiBpcyBvbiB0aGUgc2FtZSBub2RlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBUSVBDIHNvY2tldCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVzc2FnZSB0cmFuc21pc3Npb24gYW5kIHF1ZXVlIG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRiMDY0NWQ1NTFkOGY0YTlkNzVlN2RmYzFiMTQyMGE3NmYyYzczMDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxMzoyNDozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcbmluZGV4IGU1NjQzNDFlMDIxNmQuLjMzZDc0NGRjNTE0ZjUgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9zb2NrZXQuY1xuKysrIGIvbmV0L3RpcGMvc29ja2V0LmNcbkBAIC0xNTYsNyArMTU2LDggQEAgc3RhdGljIGludCB0aXBjX3NrX2luc2VydChzdHJ1Y3QgdGlwY19zb2NrICp0c2spO1xuIHN0YXRpYyB2b2lkIHRpcGNfc2tfcmVtb3ZlKHN0cnVjdCB0aXBjX3NvY2sgKnRzayk7XG4gc3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcbiBzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opO1xuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spO1xuK3N0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXG4rXHRcdFx0XHQgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpO1xuIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApO1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHM7XG5AQCAtNTYwLDcgKzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpXG4gXHRcdFx0XHRcdCAgICAhdHNrX2Nvbm5fY29uZyh0c2spKSk7XG4gXG4gXHQvKiBQdXNoIG91dCBkZWxheWVkIG1lc3NhZ2VzIGlmIGluIE5hZ2xlIG1vZGUgKi9cbi1cdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuK1x0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgTlVMTCk7XG4gXHQvKiBSZW1vdmUgcGVuZGluZyBTWU4gKi9cbiBcdF9fc2tiX3F1ZXVlX3B1cmdlKFx1MDAyNnNrLVx1MDAzZXNrX3dyaXRlX3F1ZXVlKTtcbiBcbkBAIC0xMjY3LDggKzEyNjgsMTAgQEAgdm9pZCB0aXBjX3NrX21jYXN0X3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmFycnZxLFxuIFxuIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWVcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNvY2tldCBpcyBpbiBOYWdsZSBtb2RlXG4rICogQHhtaXRxOiByZWNlaXZlIG91dHB1dCBxdWV1ZSwgb3IgTlVMTCBvdXRzaWRlIHJlY2VpdmUgY29udGV4dFxuICAqL1xuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spXG4rc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjayxcbitcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSlcbiB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp0eHEgPSBcdTAwMjZ0c2stXHUwMDNlc2suc2tfd3JpdGVfcXVldWU7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX3BlZWtfdGFpbCh0eHEpO1xuQEAgLTEzMTAsNiArMTMxMywxMiBAQCBzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKVxuIFx0XHR0c2stXHUwMDNlcGt0X2NudCArPSBza2JfcXVldWVfbGVuKHR4cSk7XG4gXHR0c2stXHUwMDNlc250X3VuYWNrZWQgKz0gdHNrLVx1MDAzZXNuZF9iYWNrbG9nO1xuIFx0dHNrLVx1MDAzZXNuZF9iYWNrbG9nID0gMDtcbitcbitcdGlmICh4bWl0cSBcdTAwMjZcdTAwMjYgaW5fb3duX25vZGUobmV0LCBkbm9kZSkpIHtcbitcdFx0c2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQodHhxLCB4bWl0cSk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHJjID0gdGlwY19ub2RlX3htaXQobmV0LCB0eHEsIGRub2RlLCB0c2stXHUwMDNlcG9ydGlkKTtcbiBcdGlmIChyYyA9PSAtRUxJTktDT05HKVxuIFx0XHR0c2stXHUwMDNlY29uZ19saW5rX2NudCA9IDE7XG5AQCAtMTM2Nyw3ICsxMzc2LDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19jb25uX3Byb3RvX3JjdihzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0Z290byBleGl0O1xuIFxuIFx0XHR3YXNfY29uZyA9IHRza19jb25uX2NvbmcodHNrKTtcbi1cdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBtc2dfbmFnbGVfYWNrKGhkcikpO1xuK1x0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSwgeG1pdHEpO1xuIFx0XHR0c2stXHUwMDNlc250X3VuYWNrZWQgLT0gbXNnX2Nvbm5fYWNrKGhkcik7XG4gXHRcdGlmICh0c2stXHUwMDNlcGVlcl9jYXBzIFx1MDAyNiBUSVBDX0JMT0NLX0ZMT1dDVEwpXG4gXHRcdFx0dHNrLVx1MDAzZXNuZF93aW4gPSBtc2dfYWR2X3dpbihoZHIpO1xuQEAgLTIxNjUsNyArMjE3NCw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcbiBcdFx0c21wX3dtYigpO1xuIFx0XHR0c2stXHUwMDNlY29uZ19saW5rX2NudC0tO1xuIFx0XHR3YWtldXAgPSB0cnVlO1xuLVx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbitcdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgeG1pdHEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgR1JPVVBfUFJPVE9DT0w6XG4gXHRcdHRpcGNfZ3JvdXBfcHJvdG9fcmN2KGdycCwgXHUwMDI2d2FrZXVwLCBoZHIsIGlucHV0cSwgeG1pdHEpO1xuQEAgLTIyNTYsNyArMjI2NSw3IEBAIHN0YXRpYyBib29sIHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3Qoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRjYXNlIFRJUENfRVNUQUJMSVNIRUQ6XG4gXHRcdGlmICghc2tiX3F1ZXVlX2VtcHR5KFx1MDAyNnNrLVx1MDAzZXNrX3dyaXRlX3F1ZXVlKSlcbi1cdFx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbitcdFx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7XG4gXHRcdC8qIEFjY2VwdCBvbmx5IGNvbm5lY3Rpb24tYmFzZWQgbWVzc2FnZXMgc2VudCBieSBwZWVyICovXG4gXHRcdGlmIChsaWtlbHkoY29uX21zZyBcdTAwMjZcdTAwMjYgIWVyciBcdTAwMjZcdTAwMjYgcHBvcnQgPT0gb3BvcnQgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgcG5vZGUgPT0gb25vZGUpKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNDozNS45ODc1MTg3MDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDgyNjc3MTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBTb2NrZXQgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG5ldC90aXBjL3NvY2tldC5jYCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBUSVBDIHNvY2tldHMgaGFuZGxlIGJhY2tsb2cuIFRoZSBtb3N0IHNpZ25pZmljYW50IGNoYW5nZSBJIHNlZSBpcyB0aGUgYWRkZWQgYHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxYCBwYXJhbWV0ZXIgdG8gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gVGhhdCdzIGEgY2xlYXIgc2lnbmFsIG9mIGFuIGFyY2hpdGVjdHVyYWwgc2hpZnQuIEknbSBub3RpbmcgdGhhdCB0aGUgZXhpc3RpbmcgY2FsbCBzaXRlcyBhcmUgYmVpbmcgdXBkYXRlZCB0byBwYXNzIGluIHRoaXMgbmV3IGB4bWl0cWAsIG9yIGBOVUxMYCBpbiB0aGUgYF9fdGlwY19zaHV0ZG93bmAgY2FzZS5cblxuVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgdGlwY19za19wdXNoX2JhY2tsb2dgIGl0c2VsZjogdGhpcyBuZXcgY2hlY2sgZm9yIGB4bWl0cWAgYW5kIGBpbl9vd25fbm9kZWAgc3VnZ2VzdHMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIG9yIHBlcmhhcHMgYSBjaGFuZ2UgaW4gaG93IGxvY2FsIGFuZCByZW1vdGUgdHJhbnNtaXNzaW9ucyBhcmUgbWFuYWdlZC4gSWYgYm90aCBjb25kaXRpb25zIGFyZSBtZXQg4oCTIGEgdHJhbnNtaXQgcXVldWUgaXMgcHJvdmlkZWQgKGB4bWl0cWApIGFuZCB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIHNhbWUgbm9kZSDigJMgaXQgc3BsaWNlcyB0aGUgdHJhbnNtaXQgcXVldWUgKGB0eHFgKSBvbnRvIHRoZSBwcm92aWRlZCBgeG1pdHFgIGFuZCByZXR1cm5zLiBObyBmdXJ0aGVyIHByb2Nlc3NpbmcgaXMgcGVyZm9ybWVkIGZvciBsb2NhbCB0cmFuc21pc3Npb25zLlxuXG5UaGlzIHNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IHRvIFRJUEMgc29ja2V0IGhhbmRsaW5nLCBsaWtlbHkgYWltZWQgYXQgaW1wcm92aW5nIGVmZmljaWVuY3kuIFRoaXMgY291bGQgYmUgYWltZWQgYXQgb3B0aW1pemluZyBwZXJmb3JtYW5jZSBvciBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGluIGhvdyBUSVBDIHNvY2tldHMgaGFuZGxlIHRyYW5zbWlzc2lvbiBiYWNrbG9ncy5cblxuVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBLY29uZmlnIGZvciBUSVBDIGFuZCB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGlzIG5ldHdvcmtpbmcgcHJvdG9jb2wuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgaW50ZXJhY3RzIHdpdGggYW55IG90aGVyIGZlYXR1cmVzIG9yIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAxLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MjQ6NDMuNDcwMTk4NzIxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3ODk0MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUSVBDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9LY29uZmlnLTUtXFxubmV0L3RpcGMvS2NvbmZpZzo2Om1lbnVjb25maWcgVElQQ1xcbm5ldC90aXBjL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFRJUEMgUHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTIzLVxcbm5ldC90aXBjL0tjb25maWc6MjQ6Y29uZmlnIFRJUENfTUVESUFfSUJcXG5uZXQvdGlwYy9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIkluZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZy0yOS1cXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxcbm5ldC90aXBjL0tjb25maWc6MzA6Y29uZmlnIFRJUENfTUVESUFfVURQXFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cXHRib29sIFxcXCJJUC9VRFAgbWVkaWEgdHlwZSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZy0zNy1cXG5uZXQvdGlwYy9LY29uZmlnOjM4OmNvbmZpZyBUSVBDX0NSWVBUT1xcbm5ldC90aXBjL0tjb25maWctMzktXFx0Ym9vbCBcXFwiVElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxcbm5ldC90aXBjL0tjb25maWc6NTM6Y29uZmlnIFRJUENfRElBR1xcbm5ldC90aXBjL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIlRJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MjQ6NDMuNTE4MDk4NzYxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI0MTIyNTQwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRJUEMgQ29uZmlndXJhdGlvbiBhbmQgQmFja2xvZyBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGhlcmUgaXMgYFRJUENgLiBNeSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhlIGZ1bmN0aW9uIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4gQWgsIHJpZ2h0LCBJIHNlZSBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IGxpbWl0cyBteSBzY29wZSBvZiBpbnZlc3RpZ2F0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gZmlndXJlIG91dCBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLlxuXG5Mb29raW5nIGF0IHRoZSBjYWxsZXJzLCBJJ3ZlIGdvdCBgX190aXBjX3NodXRkb3duYCwgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgLCBgdGlwY19za19wcm90b19yY3ZgLCBhbmQgYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLiBOb3csIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIHN0YXRpYywgSSBjYW4ndCBqdXN0IGxvb2sgb3V0c2lkZSB0aGUgZmlsZSB0aGUgZnVuY3Rpb24gaXMgZGVjbGFyZWQgaW4uIEknbSBnb2luZyB0byBxdWlja2x5IHJldmlldyB0aGVzZSBjYWxsZXJzLCBlc3BlY2lhbGx5IHRoZSBub24tc3RhdGljIG9uZXMgKG9yIHRoZWlyIGNhbGxlcnMpIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgZmxvdyBhbmQgZGV0ZXJtaW5lIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IGNoYW5nZXMgd2l0aGluIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IG9mIGVhY2ggY2FsbCB0byBmdWxseSBncmFzcCB0aGUgZnVuY3Rpb24ncyByZXNwb25zaWJpbGl0eSBhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgbW9kaWZpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkwOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNDo0OS43NTkzMjY3OTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwNzQ3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY19za19jb25uX3Byb3RvX3JjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvc29ja2V0LmM9MTI3Mz1zdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMTMyNy0vKipcXG5uZXQvdGlwYy9zb2NrZXQuYzoxMzI4OiAqIHRpcGNfc2tfY29ubl9wcm90b19yY3YgLSByZWNlaXZlIGEgY29ubmVjdGlvbiBtbmcgcHJvdG9jb2wgbWVzc2FnZVxcbm5ldC90aXBjL3NvY2tldC5jLTEzMjktICogQHRzazogcmVjZWl2aW5nIHNvY2tldFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMTMzMy0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoxMzM0OnN0YXRpYyB2b2lkIHRpcGNfc2tfY29ubl9wcm90b19yY3Yoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC90aXBjL3NvY2tldC5jLTEzMzUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjE1Nz1zdGF0aWMgdm9pZCB0aXBjX3NrX3Byb3RvX3JjdihzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTY4LVxcdGNhc2UgQ09OTl9NQU5BR0VSOlxcbm5ldC90aXBjL3NvY2tldC5jOjIxNjk6XFx0XFx0dGlwY19za19jb25uX3Byb3RvX3Jjdih0c2ssIHNrYiwgaW5wdXRxLCB4bWl0cSk7XFxubmV0L3RpcGMvc29ja2V0LmMtMjE3MC1cXHRcXHRyZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI0OjQ5LjgwNTQwNjM5NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MTU2MjY4NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkNhbGxlciBBbmFseXNpcyBmb3IgYSBTdGF0aWMgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgdGlwY19za19wcm90b19yY3ZgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0J3Mgb25seSB2aXNpYmxlIHdpdGhpbiBpdHMgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggbWFrZXMgZGVidWdnaW5nIGEgbGl0dGxlIHRyaWNraWVyLCBidXQgYWxzbyBmb2N1c2VzIG15IHNlYXJjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiTGV0J3MgZmluZCBvdXQgd2hvJ3MgY2FsbGluZyBpdFwiLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIEknbGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgdG8gbG9jYXRlIGFsbCB0aGUgY2FsbCBzaXRlcyB0byBnZXQgYSBncmFzcCBvZiBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgZGF0YSBmbG93LiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsZXJzIHdpbGwgcHJvdmlkZSB2YWx1YWJsZSBpbnNpZ2h0cyBpbnRvIHdoYXQgdGhpcyBmdW5jdGlvbiAqZG9lcyouXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNDo1NC4zMjEwMzYxNzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzNDI1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY19za19wcm90b19yY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTQwMz1zdGF0aWMgaW50IHRpcGNfc2tfc29ja19lcnIoc3RydWN0IHNvY2tldCAqc29jaywgbG9uZyAqdGltZW91dClcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTQzMS1cXHR3aGlsZSAoKHJjXyA9ICEoY29uZGl0aW9uXykpKSB7XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXFxcXG5uZXQvdGlwYy9zb2NrZXQuYzo0MzI6XFx0XFx0LyogY291cGxlZCB3aXRoIHNtcF93bWIoKSBpbiB0aXBjX3NrX3Byb3RvX3JjdigpICovICAgICAgICAgICAgXFxcXFxcbm5ldC90aXBjL3NvY2tldC5jLTQzMy1cXHRcXHRzbXBfcm1iKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0yMTUyPXN0YXRpYyB2b2lkIHRpcGNfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTU2LVxcbm5ldC90aXBjL3NvY2tldC5jOjIxNTc6c3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxcbm5ldC90aXBjL3NvY2tldC5jLTIxNTgtXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjM0Nz1zdGF0aWMgdm9pZCB0aXBjX3NrX2ZpbHRlcl9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjM2NC1cXHRpZiAodW5saWtlbHkoIW1zZ19pc2RhdGEoaGRyKSkpXFxubmV0L3RpcGMvc29ja2V0LmM6MjM2NTpcXHRcXHR0aXBjX3NrX3Byb3RvX3JjdihzaywgXFx1MDAyNmlucHV0cSwgeG1pdHEpO1xcbm5ldC90aXBjL3NvY2tldC5jLTIzNjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI0OjU0LjM2NTM4MjgyNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODExODA1ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkNhbGxlciBEaXNjb3ZlcnkgZm9yIGEgU3RhdGljIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHRpcGNfc2tfZmlsdGVyX3JjdmAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXQncyBvbmx5IHZpc2libGUgd2l0aGluIGl0cyBjb21waWxhdGlvbiB1bml0LCB3aGljaCBtYWtlcyBmaWd1cmluZyBvdXQgd2hlcmUgaXQncyAqYWN0dWFsbHkqIHVzZWQgYSBiaXQgdHJpY2tpZXIuIFRoZSBzdGFuZGFyZCB0b29scyB3b24ndCBqdXN0IGltbWVkaWF0ZWx5IHBvaW50IG1lIHRvIGV2ZXJ5IGNhbGwgc2l0ZSBhY3Jvc3MgdGhlIHdob2xlIGNvZGViYXNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgdHJhY2sgZG93biBhbGwgdGhlIGNhbGxzIHRvIGl0LiBLbm93aW5nIHRoZSBjYWxsZXJzIGlzICpjcnVjaWFsKiBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSwgcG90ZW50aWFsIGltcGFjdCwgYW5kIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhpcyBUSVBDIGtlcm5lbCBtb2R1bGUuIFVuZGVyc3RhbmRpbmcgd2hvJ3MgY2FsbGluZyBpdCBpcyB0aGUgZmlyc3Qgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE4MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI0OjU4Ljc0NjU2NTk0NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1NTY3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY19za19maWx0ZXJfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz0yMzE5PXN0YXRpYyB1bnNpZ25lZCBpbnQgcmN2YnVmX2xpbWl0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTIzMzYtLyoqXFxubmV0L3RpcGMvc29ja2V0LmM6MjMzNzogKiB0aXBjX3NrX2ZpbHRlcl9yY3YgLSB2YWxpZGF0ZSBpbmNvbWluZyBtZXNzYWdlXFxubmV0L3RpcGMvc29ja2V0LmMtMjMzOC0gKiBAc2s6IHNvY2tldFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjM0Ni0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoyMzQ3OnN0YXRpYyB2b2lkIHRpcGNfc2tfZmlsdGVyX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L3RpcGMvc29ja2V0LmMtMjM0OC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzU4LVxcbm5ldC90aXBjL3NvY2tldC5jOjIzNTk6XFx0dHJhY2VfdGlwY19za19maWx0ZXJfcmN2KHNrLCBza2IsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmMtMjM2MC1cXHRUSVBDX1NLQl9DQihza2IpLVxcdTAwM2VieXRlc19yZWFkID0gMDtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI0MTI9c3RhdGljIGludCB0aXBjX3NrX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTI0MTktXFxubmV0L3RpcGMvc29ja2V0LmM6MjQyMDpcXHR0aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgXFx1MDAyNnhtaXRxKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDIxLVxcdGFkZGVkID0gc2tfcm1lbV9hbGxvY19nZXQoc2spIC0gYmVmb3JlO1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjQzOT1zdGF0aWMgdm9pZCB0aXBjX3NrX2VucXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDU3LVxcdFxcdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkge1xcbm5ldC90aXBjL3NvY2tldC5jOjI0NTg6XFx0XFx0XFx0dGlwY19za19maWx0ZXJfcmN2KHNrLCBza2IsIHhtaXRxKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDU5LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubmV0L3RpcGMvdHJhY2UuaD0yMjc9REVGSU5FX1NLX0VWRU5UX0ZJTFRFUih0aXBjX3NrX3BvbGwpO1xcbm5ldC90aXBjL3RyYWNlLmg6MjI4OkRFRklORV9TS19FVkVOVF9GSUxURVIodGlwY19za19maWx0ZXJfcmN2KTtcXG5uZXQvdGlwYy90cmFjZS5oLTIyOS1ERUZJTkVfU0tfRVZFTlRfRklMVEVSKHRpcGNfc2tfYWR2YW5jZV9yeCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI0OjU4Ljc5MTEyNzMxNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzMzMjA5NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIGB0aXBjX3NrX2VucXVldWVgIGFuZCBgdGlwY19za19iYWNrbG9nX3JjdmAqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHNwb3R0ZWQgYHRpcGNfc2tfZW5xdWV1ZWAgYW5kIGB0aXBjX3NrX2JhY2tsb2dfcmN2YCDigJMgYW5kIGl0J3MgZmxhZ2dlZCB0aGF0IHRoZXkncmUgYHN0YXRpY2AuIEltbWVkaWF0ZWx5LCB0aGF0IHNwYXJrcyBteSBjdXJpb3NpdHkuIFN0YXRpYyBmdW5jdGlvbnMgYXJlLCBieSBkZWZpbml0aW9uLCBsaW1pdGVkIGluIHRoZWlyIHNjb3BlLiBUaGV5J3JlIGludGVybmFsIHRvIHRoZWlyIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIG1lYW5zIHRoZWlyIHVzYWdlIHNob3VsZCBiZSBjb250YWluZWQuIFRoaXMgbWFrZXMgdGhlbSBnb29kIGNhbmRpZGF0ZXMgZm9yIGRlZXBlciBhbmFseXNpcywgYW5kIGl0IHNob3VsZCBzaW1wbGlmeSB0cmFja2luZyB3aGVyZSB0aGV5IGFyZSB1c2VkLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbGwgdGhlIHBvaW50cyBpbiB0aGUgY29kZSB3aGVyZSB0aGVzZSB0d28gZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgd2hvJ3MgaW52b2tpbmcgdGhlbSBpcyBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIHRoZWlyIHB1cnBvc2UgYW5kIGltcGFjdCB3aXRoaW4gdGhlIGxhcmdlciBUSVBDIHN1YnN5c3RlbS4gTGV0J3MgdHJhY2UgdGhlaXIgY2FsbGVycyBhbmQgc2VlIHdoZXJlIHRoZXkgZml0IGluLiBJJ2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIG1ldGhvZHMsIHdoZXRoZXIgdGhhdCdzIGBncmVwYCwgYGNzY29wZWAsIGBjbGFuZ2RgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhbmQgbWFrZSBzdXJlIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgb2YgdGhlIGNhbGxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDIwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MjU6MDMuNTI0MzM5Mzc0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzgxNzYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NrX2VucXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTI0MTI9c3RhdGljIGludCB0aXBjX3NrX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTI0MjktLyoqXFxubmV0L3RpcGMvc29ja2V0LmM6MjQzMDogKiB0aXBjX3NrX2VucXVldWUgLSBleHRyYWN0IGFsbCBidWZmZXJzIHdpdGggZGVzdGluYXRpb24gJ2Rwb3J0JyBmcm9tXFxubmV0L3RpcGMvc29ja2V0LmMtMjQzMS0gKiAgICAgICAgICAgICAgICAgICBpbnB1dHEgYW5kIHRyeSBhZGRpbmcgdGhlbSB0byBzb2NrZXQgb3IgYmFja2xvZyBxdWV1ZVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjQzOC0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDM5OnN0YXRpYyB2b2lkIHRpcGNfc2tfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICppbnB1dHEsIHN0cnVjdCBzb2NrICpzayxcXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDQwLVxcdFxcdFxcdCAgICB1MzIgZHBvcnQsIHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjQ5Mz12b2lkIHRpcGNfc2tfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjUwOS1cXHRcXHRcXHRpZiAobGlrZWx5KHNwaW5fdHJ5bG9ja19iaChcXHUwMDI2c2stXFx1MDAzZXNrX2xvY2suc2xvY2spKSkge1xcbm5ldC90aXBjL3NvY2tldC5jOjI1MTA6XFx0XFx0XFx0XFx0dGlwY19za19lbnF1ZXVlKGlucHV0cSwgc2ssIGRwb3J0LCBcXHUwMDI2eG1pdHEpO1xcbm5ldC90aXBjL3NvY2tldC5jLTI1MTEtXFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnNrLVxcdTAwM2Vza19sb2NrLnNsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MjU6MDMuNTY4MTczMDQ0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzEwODY4MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgVElQQyBTb2NrZXQgUmVjZWl2ZSBQYXRoKipcblxuUmlnaHQsIGB0aXBjX3NrX3JjdmAgaXNuJ3Qgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhIGZ1bmN0aW9uIHRoYXQncyBlaXRoZXIgZXhwb3J0ZWQgZm9yIHVzZSBlbHNld2hlcmUgb3IsIG1vcmUgbGlrZWx5LCBpcyBjYWxsZWQgZnJvbSBhbm90aGVyIHBhcnQgb2YgdGhlIFRJUEMgc3Vic3lzdGVtLiBUaGF0J3Mga2V5LiBXZSBrbm93IHRoZSBmdW5jdGlvbiBpc24ndCBpc29sYXRlZC4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIHdoZXJlIGlzIGl0IGNhbGxlZCBmcm9tPyBMZXQncyB0cmFjZSB0aGlzIGJhY2suIEdpdmVuIGl0cyBuYW1lLCBpdCdzIGxpa2VseSBpbnZvbHZlZCBpbiB0aGUgcmVjZWl2ZSBwYXRoLiBgdGlwY19za19iYWNrbG9nX3JjdmAgbG9va3MgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHBvaW50IHRvIGludmVzdGlnYXRlLiBJdCBjb3VsZCBiZSBwYXJ0IG9mIGEgYmFja2xvZyBtZWNoYW5pc20sIHBvdGVudGlhbGx5IGZlZWRpbmcgaW50byBgdGlwY19za19yY3ZgLiBUaGlzIGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2OTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNTowNy43MzkyNjI1ODdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODU5NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpcGNfc2tfYmFja2xvZ19yY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTExMD1zdHJ1Y3QgdGlwY19zb2NrIHtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTE0NC1cXG5uZXQvdGlwYy9zb2NrZXQuYzoxNDU6c3RhdGljIGludCB0aXBjX3NrX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxubmV0L3RpcGMvc29ja2V0LmMtMTQ2LXN0YXRpYyB2b2lkIHRpcGNfZGF0YV9yZWFkeShzdHJ1Y3Qgc29jayAqc2spO1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9NDYwPXN0YXRpYyBpbnQgdGlwY19za19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtNTE4LVxcdHNrLVxcdTAwM2Vza19zaHV0ZG93biA9IDA7XFxubmV0L3RpcGMvc29ja2V0LmM6NTE5OlxcdHNrLVxcdTAwM2Vza19iYWNrbG9nX3JjdiA9IHRpcGNfc2tfYmFja2xvZ19yY3Y7XFxubmV0L3RpcGMvc29ja2V0LmMtNTIwLVxcdHNrLVxcdTAwM2Vza19yY3ZidWYgPSBSRUFEX09OQ0Uoc3lzY3RsX3RpcGNfcm1lbVsxXSk7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0yMzQ3PXN0YXRpYyB2b2lkIHRpcGNfc2tfZmlsdGVyX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDA1LS8qKlxcbm5ldC90aXBjL3NvY2tldC5jOjI0MDY6ICogdGlwY19za19iYWNrbG9nX3JjdiAtIGhhbmRsZSBpbmNvbWluZyBtZXNzYWdlIGZyb20gYmFja2xvZyBxdWV1ZVxcbm5ldC90aXBjL3NvY2tldC5jLTI0MDctICogQHNrOiBzb2NrZXRcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTI0MTEtICovXFxubmV0L3RpcGMvc29ja2V0LmM6MjQxMjpzdGF0aWMgaW50IHRpcGNfc2tfYmFja2xvZ19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC90aXBjL3NvY2tldC5jLTI0MTMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNTowNy43ODMxMjU3NjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU2Mjc2OTcxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUSVBDIFNvY2tldCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIG92ZXIgdGhpcyBUSVBDIHNvY2tldCBwYXRjaCwgYW5kIGhlcmUncyBteSB0YWtlLiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYHRpcGNfc2tfYmFja2xvZ19yY3ZgIGFuZCBgc2stXHUwMDNlc2tfYmFja2xvZ19yY3ZgIHdpdGhpbiBgdGlwY19za19jcmVhdGVgLiBUaGF0IHRlbGxzIG1lIHdlJ3JlIGxvb2tpbmcgYXQgZnVuY3Rpb25zIGV4cG9zZWQgdmlhIHN0YW5kYXJkIHNvY2tldCBvcGVyYXRpb25zLiBUaGlzIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCwgdGhlIGZ1bmN0aW9uIGNhbGxlZCB0byBwcm9jZXNzIGluY29taW5nIG1lc3NhZ2VzLiBUaGUgdXBkYXRlIGludHJvZHVjZXMgdGhlIGB4bWl0cWAgdmFyaWFibGUgYW5kIGNvbmRpdGlvbmFsbHkgc3BsaWNlcyB0aGUgYHR4cWAgdG8gYHhtaXRxYCBpZiB0aGUgZGVzdGluYXRpb24gbm9kZSBpcyB0aGUgc2FtZS4gVGhpcyBsaWtlbHkgYWZmZWN0cyBob3cgTmFnbGUncyBhbGdvcml0aG0gaW50ZXJhY3RzIHdpdGggYmFja2xvZyBwcm9jZXNzaW5nLiBUaGlzIGlzIGNvcmUgc29ja2V0IGxvZ2ljIHRoYXQgaGFzIGNoYW5nZWQsIHNvIGZ1enppbmcgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGh3aGlsZS5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gc29tZSBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gdGFyZ2V0IGZvciBmdXp6aW5nLiBgdGlwY19za19yY3ZgIGlzIGFuIG9idmlvdXMgY2hvaWNlIHNpbmNlIGl0J3MgZGlyZWN0bHkgcmVsYXRlZCB0byByZWNlaXZpbmcgZGF0YS4gYHRpcGNfc2tfY3JlYXRlYCBpcyB0aGUgc29ja2V0IGNyZWF0aW9uIGZ1bmN0aW9uLCBzbyB3ZSBuZWVkIHRvIGhpdCB0aGF0IGZvciB0ZXN0IHNldHVwLiBDb25zaWRlcmluZyB0aGUgY2hhbmdlcywgSSBzaG91bGQgY2hlY2sgdGhlIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IHdpdGggdGhlIHBhdGNoJ3MgY2hhbmdlcyBzdWNoIGFzIGB0aXBjX3NlbmRtc2dgIGFuZCBgdGlwY19zZW5kc3RyZWFtYC4gVGhlIHBhdGNoIHRvdWNoZXMgYF9fdGlwY19zaHV0ZG93bmAsIHdoaWNoIGNhbGxzIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIGB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2YCwgYHRpcGNfc2tfcHJvdG9fcmN2YCwgYW5kIGB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0YCBhcmUgYWxzbyBwb3RlbnRpYWxseSBpbnZvbHZlZC4gTGV0J3Mgc2VlIHdoYXQgY2FsbHMgdGhlc2UgZnVuY3Rpb25zLlxuXG5gdGlwY19za19yY3ZgIGlzIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGdvb2Q7IGl0J3MgbGlrZWx5IGNhbGxlZCBmcm9tIG91dHNpZGUuIEFsc28sIGB0aXBjX3NrX21jYXN0X3JjdmAgaXMgbm9uLXN0YXRpYyBhbmQgcHJvYmFibHkgY2FuIGJlIHVzZWQgdG9vLiBgdGlwY19zZW5kbXNnYCBhbmQgYHRpcGNfc2VuZHN0cmVhbWAgYXJlIHN0YW5kYXJkIHNvY2tldCBvcGVyYXRpb25zLiBMZXQncyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gYHRpcGNfc2tfcmN2YCBhbmQgZmlndXJlIG91dCBob3cgdG8gZnV6eiBpdCBlZmZlY3RpdmVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM5MiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNToxNi4zNDU4OTc4MDFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTkwMDM2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NrX3JjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvYmNhc3QuYz00MzY9aW50IHRpcGNfYmNhc3RfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfbGluayAqbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL2JjYXN0LmMtNDYwLVxcdGlmICghc2tiX3F1ZXVlX2VtcHR5KGlucHV0cSkpXFxubmV0L3RpcGMvYmNhc3QuYzo0NjE6XFx0XFx0dGlwY19za19yY3YobmV0LCBpbnB1dHEpO1xcbm5ldC90aXBjL2JjYXN0LmMtNDYyLVxcbi0tXFxubmV0L3RpcGMvYmNhc3QuYz00NzA9dm9pZCB0aXBjX2JjYXN0X2Fja19yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY19saW5rICpsLFxcbi0tXFxubmV0L3RpcGMvYmNhc3QuYy00OTAtXFx0aWYgKCFza2JfcXVldWVfZW1wdHkoaW5wdXRxKSlcXG5uZXQvdGlwYy9iY2FzdC5jOjQ5MTpcXHRcXHR0aXBjX3NrX3JjdihuZXQsIGlucHV0cSk7XFxubmV0L3RpcGMvYmNhc3QuYy00OTItfVxcbi0tXFxubmV0L3RpcGMvYmNhc3QuYz00OTg9aW50IHRpcGNfYmNhc3Rfc3luY19yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY19saW5rICpsLFxcbi0tXFxubmV0L3RpcGMvYmNhc3QuYy01MzItXFx0aWYgKCFza2JfcXVldWVfZW1wdHkoaW5wdXRxKSlcXG5uZXQvdGlwYy9iY2FzdC5jOjUzMzpcXHRcXHR0aXBjX3NrX3JjdihuZXQsIGlucHV0cSk7XFxubmV0L3RpcGMvYmNhc3QuYy01MzQtXFx0cmV0dXJuIHJjO1xcbi0tXFxubmV0L3RpcGMvYmNhc3QuYz01NTc9dm9pZCB0aXBjX2JjYXN0X3JlbW92ZV9wZWVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfbGluayAqcmN2X2wpXFxuLS1cXG5uZXQvdGlwYy9iY2FzdC5jLTU3NC1cXHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShpbnB1dHEpKVxcbm5ldC90aXBjL2JjYXN0LmM6NTc1OlxcdFxcdHRpcGNfc2tfcmN2KG5ldCwgaW5wdXRxKTtcXG5uZXQvdGlwYy9iY2FzdC5jLTU3Ni19XFxuLS1cXG5uZXQvdGlwYy9ub2RlLmM9MTA2Mj1zdGF0aWMgdm9pZCB0aXBjX25vZGVfbGlua19kb3duKHN0cnVjdCB0aXBjX25vZGUgKm4sIGludCBiZWFyZXJfaWQsIGJvb2wgZGVsZXRlKVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTEwOTMtXFx0XFx0dGlwY19iZWFyZXJfeG1pdChuLVxcdTAwM2VuZXQsIGJlYXJlcl9pZCwgXFx1MDAyNnhtaXRxLCBtYWRkciwgbik7XFxubmV0L3RpcGMvbm9kZS5jOjEwOTQ6XFx0dGlwY19za19yY3Yobi1cXHUwMDNlbmV0LCBcXHUwMDI2bGUtXFx1MDAzZWlucHV0cSk7XFxubmV0L3RpcGMvbm9kZS5jLTEwOTUtfVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jPTE2Mjc9c3RhdGljIHZvaWQgdGlwY19seGNfeG1pdChzdHJ1Y3QgbmV0ICpwZWVyX25ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdClcXG4tLVxcbm5ldC90aXBjL25vZGUuYy0xNjQwLVxcdFxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZsaXN0LVxcdTAwM2Vsb2NrKTtcXG5uZXQvdGlwYy9ub2RlLmM6MTY0MTpcXHRcXHRcXHR0aXBjX3NrX3JjdihwZWVyX25ldCwgbGlzdCk7XFxubmV0L3RpcGMvbm9kZS5jLTE2NDItXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTE2NjUtXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmxpc3QtXFx1MDAzZWxvY2spO1xcbm5ldC90aXBjL25vZGUuYzoxNjY2OlxcdFxcdHRpcGNfc2tfcmN2KHBlZXJfbmV0LCBsaXN0KTtcXG5uZXQvdGlwYy9ub2RlLmMtMTY2Ny1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvdGlwYy9ub2RlLmM9MTY4Nz1pbnQgdGlwY19ub2RlX3htaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LFxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTE3MDAtXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmxpc3QtXFx1MDAzZWxvY2spO1xcbm5ldC90aXBjL25vZGUuYzoxNzAxOlxcdFxcdHRpcGNfc2tfcmN2KG5ldCwgbGlzdCk7XFxubmV0L3RpcGMvbm9kZS5jLTE3MDItXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvdGlwYy9ub2RlLmM9MjA4Nj12b2lkIHRpcGNfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRpcGNfYmVhcmVyICpiKVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTIyMDItXFx0aWYgKCFza2JfcXVldWVfZW1wdHkoXFx1MDAyNmxlLVxcdTAwM2VpbnB1dHEpKVxcbm5ldC90aXBjL25vZGUuYzoyMjAzOlxcdFxcdHRpcGNfc2tfcmN2KG5ldCwgXFx1MDAyNmxlLVxcdTAwM2VpbnB1dHEpO1xcbm5ldC90aXBjL25vZGUuYy0yMjA0LVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MTE5Mj12b2lkIHRpcGNfc2tfbWNhc3RfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqYXJydnEsXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0xMjY1LVxcdH1cXG5uZXQvdGlwYy9zb2NrZXQuYzoxMjY2OlxcdHRpcGNfc2tfcmN2KG5ldCwgaW5wdXRxKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0xMjY3LX1cXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI0Mzk9c3RhdGljIHZvaWQgdGlwY19za19lbnF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjQ4Ni0vKipcXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDg3OiAqIHRpcGNfc2tfcmN2IC0gaGFuZGxlIGEgY2hhaW4gb2YgaW5jb21pbmcgYnVmZmVyc1xcbm5ldC90aXBjL3NvY2tldC5jLTI0ODgtICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2VcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTI0OTItICovXFxubmV0L3RpcGMvc29ja2V0LmM6MjQ5Mzp2b2lkIHRpcGNfc2tfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxKVxcbm5ldC90aXBjL3NvY2tldC5jLTI0OTQte1xcbi0tXFxubmV0L3RpcGMvc29ja2V0Lmg9NTU9dm9pZCB0aXBjX3NvY2tldF9zdG9wKHZvaWQpO1xcbm5ldC90aXBjL3NvY2tldC5oOjU2OnZvaWQgdGlwY19za19yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICppbnB1dHEpO1xcbm5ldC90aXBjL3NvY2tldC5oLTU3LXZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSxcXG4tLVxcbm5ldC90aXBjL3RvcHNydi5jPTYxND1zdGF0aWMgdm9pZCB0aXBjX3RvcHNydl9rZXJuX2V2dChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2V2ZW50ICpldnQpXFxuLS1cXG5uZXQvdGlwYy90b3BzcnYuYy02MjktXFx0dGlwY19sb29wYmFja190cmFjZShuZXQsIFxcdTAwMjZldnRxKTtcXG5uZXQvdGlwYy90b3BzcnYuYzo2MzA6XFx0dGlwY19za19yY3YobmV0LCBcXHUwMDI2ZXZ0cSk7XFxubmV0L3RpcGMvdG9wc3J2LmMtNjMxLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MjU6MTYuOTA3ODAyNDQ2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0Mzg0ODA4OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBTb2NrZXQgUmVjZWl2ZSBQYXRoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBjb3JlIG9mIFRJUEMgc29ja2V0IG1lc3NhZ2UgaGFuZGxpbmcuIGB0aXBjX3NrX3JjdmAgaXMgdGhlIG1haW4gZnVuY3Rpb24gZm9yIHJlY2VpdmluZyBtZXNzYWdlcyBpbnRvIHNvY2tldHMsIGFuZCBgdGlwY19za19tY2FzdF9yY3ZgIGhhbmRsZXMgbXVsdGljYXN0IHNwZWNpZmljYWxseS4gVHJhbnNtaXNzaW9uIGhhcHBlbnMgdmlhIGB0aXBjX25vZGVfeG1pdGAuXG5cblRoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEga2V5IGFyZWEuIE5vdywgKndobyogY2FsbHMgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYD8gVGhlIHRleHQgbGlzdHMgYSBudW1iZXIgb2YgY2FsbGVyczogYF9fdGlwY19zaHV0ZG93bmAsIGB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2YCwgYHRpcGNfc2tfcHJvdG9fcmN2YCwgYW5kIGB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0YC4gSG1tLCB0aGVzZSBhcmUgYWxsIGludGVyZXN0aW5nIGJlY2F1c2UgdGhleSdyZSAqZGlyZWN0bHkqIGludm9sdmVkIGluIHNvY2tldCByZWNlaXZlIG9yIHNodXRkb3duIG9wZXJhdGlvbnMuIEl0J3MgYSBjbGVhciBmbG93OiBgdGlwY19za19yY3ZgIGNhbGxzIGB0aXBjX3NrX2VucXVldWVgLCB3aGljaCBsZWFkcyB0byBgdGlwY19za19maWx0ZXJfcmN2YCwgd2hpY2ggdGhlbiBkaXNwYXRjaGVzIHRvIGB0aXBjX3NrX3Byb3RvX3JjdmAgb3IgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgIG9yIGB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0YC4gVGhlIG90aGVyIGNhbGwgcGF0aCBjb21lcyBmcm9tIGBfX3RpcGNfc2h1dGRvd25gLiBUaGlzIGNsZWFybHkgbWVhbnMgdGhhdCBgdGlwY19za19yY3ZgIGFuZCB0aGUgc2h1dGRvd24gc2VxdWVuY2UgYXJlIGltcG9ydGFudCBlbnRyeSBwb2ludHMgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHBhdGNoJ3MgZWZmZWN0cy4gRXhjZWxsZW50LCBgdGlwY19za19yY3ZgIGlzIGEgZ29vZCBmb2N1cy4gQW5kIG9mIGNvdXJzZSwgdGhlIHNodXRkb3duIGlzIHJlbGV2YW50IGFzIHdlbGwuXG5cbldhaXQgYSBzZWNvbmQuIGBfX3RpcGNfc2h1dGRvd25gIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0IGNhbid0IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIHNvdXJjZSBmaWxlIGl0J3MgZGVjbGFyZWQgaW4uIFNvLCB0byBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2Ygc2h1dGRvd24gYmVoYXZpb3VyLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBub24tc3RhdGljIGZ1bmN0aW9uIHdyYXBzIGBfX3RpcGNfc2h1dGRvd25gLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGUgcGF0Y2ggaXMgYWZmZWN0aW5nIHRoZSBlbnRyeSBwb2ludCBmdW5jdGlvbiBvZiB0aGUgc2h1dGRvd24gYmVoYXZpb3VyLiBUaW1lIHRvIGdvIGh1bnRpbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MDMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MjU6MzEuMjkyNjE1OTA1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjA1MDAxMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX190aXBjX3NodXRkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz01NDI9c3RhdGljIHZvaWQgdGlwY19za19jYWxsYmFjayhzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy01NDktLyogQ2FsbGVyIHNob3VsZCBob2xkIHNvY2tldCBsb2NrIGZvciB0aGUgc29ja2V0LiAqL1xcbm5ldC90aXBjL3NvY2tldC5jOjU1MDpzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxcbm5ldC90aXBjL3NvY2tldC5jLTU1MS17XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz02MjY9c3RhdGljIGludCB0aXBjX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTY0MS1cXHR0cmFjZV90aXBjX3NrX3JlbGVhc2Uoc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmM6NjQyOlxcdF9fdGlwY19zaHV0ZG93bihzb2NrLCBUSVBDX0VSUl9OT19QT1JUKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy02NDMtXFx0c2stXFx1MDAzZXNrX3NodXRkb3duID0gU0hVVERPV05fTUFTSztcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI4MDk9c3RhdGljIGludCB0aXBjX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBob3cpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yODE5LVxcdHRyYWNlX3RpcGNfc2tfc2h1dGRvd24oc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmM6MjgyMDpcXHRfX3RpcGNfc2h1dGRvd24oc29jaywgVElQQ19DT05OX1NIVVRET1dOKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yODIxLVxcdHNrLVxcdTAwM2Vza19zaHV0ZG93biA9IFNIVVRET1dOX01BU0s7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI1OjMyLjA1MzEyMjE2OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjgxMjM1MzU5OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW5uZXIgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIFNvY2tldCBPcGVyYXRpb25zIGluIFRJUEMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkcmlsbCBkb3duIGludG8gdGhlc2UgVElQQyBzb2NrZXQgb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIGB0aXBjX3JlbGVhc2VgIGFuZCBgdGlwY19zaHV0ZG93bmAgYXJlIGNvcnJlY3RseSB3aXJlZCB1cC4gSSBrbm93IHRoZXkncmUgdGhlIG5vbi1zdGF0aWMgb25lcyDigJMgdGhlIG9uZXMgZGVhbGluZyB3aXRoIHRoZSBzb2NrZXQgaW5zdGFuY2UgaXRzZWxmIHJhdGhlciB0aGFuIGp1c3QgdGhlIHVuZGVybHlpbmcgcHJvdG9jb2wuIE15IGltbWVkaWF0ZSBjaGVjayBoYXMgdG8gYmUgdGhlIGBwcm90b19vcHNgIHN0cnVjdHVyZS4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZnVuZGFtZW50YWwgc29ja2V0IG9wZXJhdGlvbnMgYXJlIGRlZmluZWQuIEkgaGF2ZSB0byB2ZXJpZnkgdGhhdCB0aGVzZSB0d28gZnVuY3Rpb25zLCBgdGlwY19yZWxlYXNlYCBhbmQgYHRpcGNfc2h1dGRvd25gLCBhcmUgYWN0dWFsbHkgYXNzaWduZWQgd2l0aGluIHRoYXQgc3RydWN0dXJlLiBUaGF0IGlzIHRoZSBjcml0aWNhbCBwbGFjZSB0byBlbnN1cmUgcHJvcGVyIHNvY2tldCBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVElQQyBmcmFtZXdvcmsuIElmIHRoZXkgYXJlIG5vdCBpbiB0aGUgYHByb3RvX29wc2Agc3RydWN0dXJlLCB3ZSdyZSBpbiB0cm91YmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg5MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI5OjIwLjE3NjY2MjEwNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MDUyNjkwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NodXRkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz01NDI9c3RhdGljIHZvaWQgdGlwY19za19jYWxsYmFjayhzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy01NDktLyogQ2FsbGVyIHNob3VsZCBob2xkIHNvY2tldCBsb2NrIGZvciB0aGUgc29ja2V0LiAqL1xcbm5ldC90aXBjL3NvY2tldC5jOjU1MDpzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxcbm5ldC90aXBjL3NvY2tldC5jLTU1MS17XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz02MjY9c3RhdGljIGludCB0aXBjX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTY0MS1cXHR0cmFjZV90aXBjX3NrX3JlbGVhc2Uoc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmM6NjQyOlxcdF9fdGlwY19zaHV0ZG93bihzb2NrLCBUSVBDX0VSUl9OT19QT1JUKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy02NDMtXFx0c2stXFx1MDAzZXNrX3NodXRkb3duID0gU0hVVERPV05fTUFTSztcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI3Mjk9c3RhdGljIGludCB0aXBjX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdfc29jayxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTI4MDAtLyoqXFxubmV0L3RpcGMvc29ja2V0LmM6MjgwMTogKiB0aXBjX3NodXRkb3duIC0gc2h1dGRvd24gc29ja2V0IGNvbm5lY3Rpb25cXG5uZXQvdGlwYy9zb2NrZXQuYy0yODAyLSAqIEBzb2NrOiBzb2NrZXQgc3RydWN0dXJlXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yODA4LSAqL1xcbm5ldC90aXBjL3NvY2tldC5jOjI4MDk6c3RhdGljIGludCB0aXBjX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBob3cpXFxubmV0L3RpcGMvc29ja2V0LmMtMjgxMC17XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yODE5LVxcdHRyYWNlX3RpcGNfc2tfc2h1dGRvd24oc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmM6MjgyMDpcXHRfX3RpcGNfc2h1dGRvd24oc29jaywgVElQQ19DT05OX1NIVVRET1dOKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yODIxLVxcdHNrLVxcdTAwM2Vza19zaHV0ZG93biA9IFNIVVRET1dOX01BU0s7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0zMzY3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIG1zZ19vcHMgPSB7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzc4LVxcdC5saXN0ZW5cXHRcXHQ9IHNvY2tfbm9fbGlzdGVuLFxcbm5ldC90aXBjL3NvY2tldC5jOjMzNzk6XFx0LnNodXRkb3duXFx0PSB0aXBjX3NodXRkb3duLFxcbm5ldC90aXBjL3NvY2tldC5jLTMzODAtXFx0LnNldHNvY2tvcHRcXHQ9IHRpcGNfc2V0c29ja29wdCxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTMzODc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTMzOTgtXFx0Lmxpc3RlblxcdFxcdD0gdGlwY19saXN0ZW4sXFxubmV0L3RpcGMvc29ja2V0LmM6MzM5OTpcXHQuc2h1dGRvd25cXHQ9IHRpcGNfc2h1dGRvd24sXFxubmV0L3RpcGMvc29ja2V0LmMtMzQwMC1cXHQuc2V0c29ja29wdFxcdD0gdGlwY19zZXRzb2Nrb3B0LFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzQwNz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBzdHJlYW1fb3BzID0ge1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzQxOC1cXHQubGlzdGVuXFx0XFx0PSB0aXBjX2xpc3RlbixcXG5uZXQvdGlwYy9zb2NrZXQuYzozNDE5OlxcdC5zaHV0ZG93blxcdD0gdGlwY19zaHV0ZG93bixcXG5uZXQvdGlwYy9zb2NrZXQuYy0zNDIwLVxcdC5zZXRzb2Nrb3B0XFx0PSB0aXBjX3NldHNvY2tvcHQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI5OjIxLjY0NzE5NTMwMVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDM4NTA1OTI3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVElQQyBTb2NrZXQgT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gVElQQyBzb2NrZXQgb3BlcmF0aW9ucywgdHJ5aW5nIHRvIGlkZW50aWZ5IGdvb2QgZW50cnkgcG9pbnRzIGZvciBzb21ldGhpbmcuLi4gSSBpbml0aWFsbHkgdGhvdWdodCBgdGlwY19zaHV0ZG93bmAgYW5kIGB0aXBjX3JlbGVhc2VgIG1pZ2h0IGJlIGRlY2VudCwgYnV0IHRoZXkncmUgc3RhdGljIHNvY2tldCBvcGVyYXRpb25zLiBUaGF0J3MgYSBmbGFnLiBXaGlsZSBpdCdzIHVubGlrZWx5LCBiZWluZyBzdGF0aWMgbWVhbnMgdGhleSAqY291bGQqIGJlIGlubGluZWQuIFNvY2tldCBvcGVyYXRpb25zIGFyZSAqdXN1YWxseSogbm90IGlubGluZWQgYmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHVzZWQgZm9yIGBwcm90b19vcHNgLCBidXQgaXQncyBzdGlsbCBzb21ldGhpbmcgdG8gY29uc2lkZXIuXG5cblRoZW4gSSBjaGVja2VkIGB0aXBjX3NrX3JjdmAg4oCTIGFuZCBpdCdzIGdsb2JhbCwgZXhwb3J0ZWQsIGEgc29saWQgY2FuZGlkYXRlISBMZXQncyB2ZXJpZnkuLi4geWVzLCBnbG9iYWwuIEJpbmdvLiBBbnkgb3RoZXIgZ2xvYmFsIGZ1bmN0aW9ucyB0byBjb25zaWRlcj8gSSBxdWlja2x5IGZvdW5kIGB0aXBjX25vZGVfeG1pdGAgYW5kIGB0aXBjX3NrX21jYXN0X3JjdmAuIFNvLCBgdGlwY19za19yY3ZgLCBgdGlwY19ub2RlX3htaXRgLCBhbmQgYHRpcGNfc2tfbWNhc3RfcmN2YCBhcmUgcG90ZW50aWFsICpGb2N1c1N5bWJvbHMqLlxuXG5CdXQgbGV0J3MgdGhpbmsgYSBiaXQgbW9yZSBkZWVwbHkgYWJvdXQgdGhlIGNhbGwgcGF0aC4gV2FpdCwgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCBpcyBjYWxsZWQgZnJvbSBgdGlwY19za19yY3ZgICh2aWEgYHRpcGNfc2tfZmlsdGVyX3JjdmAgLVx1MDAzZSBgdGlwY19za19wcm90b19yY3ZgIGV0Yy4pLiBBaCwgdGhhdCBzZXR0bGVzIGl0ISBgdGlwY19za19yY3ZgIGxvb2tzIHBlcmZlY3QgYmVjYXVzZSBpdCdzIGdsb2JhbCBhbmQgdGllcyBpbnRvIHRoZSByZWNlaXZlIHBhdGguXG5cbkV2ZW4gdGhvdWdoIGB0aXBjX3NodXRkb3duYCBhbmQgYHRpcGNfcmVsZWFzZWAgYXJlIHN0YXRpYywgdGhleSBzaG91bGQgYmUgYWRkcmVzcy10YWtlbiwgc28gdGhleSB3b24ndCBiZSBpbmxpbmVkLiBCdXQgZ2l2ZW4gdGhlIHByb21wdCBcIlByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1wiLCBgdGlwY19za19yY3ZgIGlzIHRoZSBiZXR0ZXIgY2hvaWNlLlxuXG5XaGF0IGFib3V0IG90aGVyIHNlbmQgb3BlcmF0aW9ucz8gQXJlIGB0aXBjX3NlbmRtc2dgIGFuZCBgdGlwY19zZW5kc3RyZWFtYCBwcm9taXNpbmc/IFRob3NlIGFyZSBzdGF0aWMgdG9vLiBJIHF1aWNrbHkgY2hlY2tlZCB3aGV0aGVyIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgaXMgY2FsbGVkIGZyb20gYHNlbmRtc2dgLCBidXQgbm8sIHRob3NlIGFyZSBhbGwgcmVjZWl2ZSBhbmQgc2h1dGRvd24gcGF0aCwgbGlrZSBJIGV4cGVjdGVkLiBPa2F5LCBzbyBgdGlwY19za19yY3ZgIGFuZCBgdGlwY19zaHV0ZG93bmAgKG9yIG1heWJlIGB0aXBjX3JlbGVhc2VgLCBhbHRob3VnaCB0aGV5IGFyZSBlcXVpdmFsZW50KSBhcmUgdGhlIGNsZWFuZXN0IGVudHJ5IHBvaW50cy5cblxuRmluYWxseSwganVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgbG9vayBhdCB0aGUgS2NvbmZpZyBhbmQgc2VlIGhvdyBgVElQQ2AgaXMgZGVmaW5lZCBhbmQgd2hhdCBpdCBkZXBlbmRzIG9uLiBMZXQncyBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBnb3RjaGFzIGluIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk3NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyOTo0Ni4wMzIyNTcyOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MjE0MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUSVBDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9LY29uZmlnLTUtXFxubmV0L3RpcGMvS2NvbmZpZzo2Om1lbnVjb25maWcgVElQQ1xcbm5ldC90aXBjL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFRJUEMgUHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTIzLVxcbm5ldC90aXBjL0tjb25maWc6MjQ6Y29uZmlnIFRJUENfTUVESUFfSUJcXG5uZXQvdGlwYy9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIkluZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZy0yOS1cXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxcbm5ldC90aXBjL0tjb25maWc6MzA6Y29uZmlnIFRJUENfTUVESUFfVURQXFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cXHRib29sIFxcXCJJUC9VRFAgbWVkaWEgdHlwZSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZy0zNy1cXG5uZXQvdGlwYy9LY29uZmlnOjM4OmNvbmZpZyBUSVBDX0NSWVBUT1xcbm5ldC90aXBjL0tjb25maWctMzktXFx0Ym9vbCBcXFwiVElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxcbm5ldC90aXBjL0tjb25maWc6NTM6Y29uZmlnIFRJUENfRElBR1xcbm5ldC90aXBjL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIlRJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6Mjk6NDYuMTQwNDc1MDU5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNjczODYyMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipFeGFtaW5pbmcgdGhlIFRJUEMgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBUSVBDIChUcmFuc3BhcmVudCBJbnRlci1Qcm9jZXNzIENvbW11bmljYXRpb24pIGNvbmZpZ3VyYXRpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGBuZXQvdGlwYy9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIHN0YW5kYXJkIHBsYWNlIGZvciB0aGlzIGtpbmQgb2YgaW5mb3JtYXRpb24sIHNvIGxldCdzIHN0YXJ0IHRoZXJlLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBmb3IgVElQQyB0byB3b3JrIGNvcnJlY3RseSwgb3Igd2hhdCBvdGhlciBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgY2VydGFpbiBUSVBDIGZlYXR1cmVzLiBHb3R0YSBtYWtlIHN1cmUgSSBnZXQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhhdCBjb25maWd1cmF0aW9uIHNwYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzMyMCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI5OjU0LjUwNzg2NDM1NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvdGlwYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFRJUEMgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIFRJUENcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGUgVHJhbnNwYXJlbnQgSW50ZXIgUHJvY2VzcyBDb21tdW5pY2F0aW9uIChUSVBDKSBwcm90b2NvbCBpc1xcbiAgMTE6XFx0XFx0ICBzcGVjaWFsbHkgZGVzaWduZWQgZm9yIGludHJhIGNsdXN0ZXIgY29tbXVuaWNhdGlvbi4gVGhpcyBwcm90b2NvbFxcbiAgMTI6XFx0XFx0ICBvcmlnaW5hdGVzIGZyb20gRXJpY3Nzb24gd2hlcmUgaXQgaGFzIGJlZW4gdXNlZCBpbiBjYXJyaWVyIGdyYWRlXFxuICAxMzpcXHRcXHQgIGNsdXN0ZXIgYXBwbGljYXRpb25zIGZvciBtYW55IHllYXJzLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFRJUEMsIHNlZSBodHRwOi8vdGlwYy5zb3VyY2Vmb3JnZS5uZXQuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgVGhpcyBwcm90b2NvbCBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgbW9kdWxlICggPSBjb2RlIHdoaWNoXFxuICAxODpcXHRcXHQgIGNhbiBiZSBpbnNlcnRlZCBpbiBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCB3aGVuZXZlciB5b3VcXG4gIDE5OlxcdFxcdCAgd2FudCkuIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdGlwYy4gSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdFxcbiAgMjA6XFx0XFx0ICBhcyBhIG1vZHVsZSwgc2F5IE0gaGVyZSBhbmQgcmVhZCBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2tidWlsZC9tb2R1bGVzLnJzdFxcdTAwM2UuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI5OjU0LjUwNzk2MjQwNVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDIyOTAxNTc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIFRJUEMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGZ1bmRhbWVudGFsbHkgdG91Y2hlcyBgVElQQ2AsIHdoaWNoIEkga25vdyBkZXBlbmRzIG9uIGBJTkVUYC4gVGhlcmVmb3JlLCBlbmFibGluZyBgVElQQ2AgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIHRvIGdldCBzdGFydGVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkb3VibGUtY2hlY2sgdGhlIGVudHJ5IHBvaW50cyB0aGlzIGNoYW5nZSBhZmZlY3RzLCBzcGVjaWZpY2FsbHkgaWYgYHRpcGNfc2tfcmN2YCBpcyB0aGUgb25seSBub24tc3RhdGljIG9uZS4gQnV0LCBubywgYHRpcGNfc2tfbWNhc3RfcmN2YCBpcyBhbHNvIGV4cG9zZWQuIEknbGwgYWRkIGJvdGggYHRpcGNfc2tfcmN2YCBhbmQgYHRpcGNfc2tfbWNhc3RfcmN2YCB0byBgRm9jdXNTeW1ib2xzYCB0byB0YXJnZXQgdGhlbSBzcGVjaWZpY2FsbHkuXG5cbk5vdywgbG9va2luZyBkZWVwZXIsIHRoZSBwYXRjaCBhbHRlcnMgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gSXQncyBzcGxpY2luZyBgdHhxYCB0byBgeG1pdHFgIHdoZW4gYHhtaXRxYCBpcyBwcm92aWRlZCBhbmQgdGhlIGRlc3RpbmF0aW9uIGlzIG9uIHRoZSBzYW1lIG5vZGUuIFRoaXMgaXMgYSBjbGV2ZXIgb3B0aW1pemF0aW9uLCBieXBhc3NpbmcgdGhlIG5vcm1hbCBgdGlwY19ub2RlX3htaXRgIHBhdGggYW5kIGRpcmVjdGx5IHF1ZXVlaW5nIHBhY2tldHMgdG8gYHhtaXRxYCwgd2hpY2ggdGhlIGNhbGxlciB0aGVuIGhhbmRsZXMuIFRoaXMgaXMgZWl0aGVyIGEgcGVyZm9ybWFuY2Ugd2luLCBhIGxvY2sgaXNzdWUgZml4IG9yIG1heWJlIGp1c3QgYSBmdW5jdGlvbmFsIGJhdGNoaW5nIGNoYW5nZS4gVGhpcyBuZWVkcyB0byBiZSBmdXp6ZWQhXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlzdGlsbCB0aGlzIGluZm9ybWF0aW9uIGludG8gdGhlIHJlcXVpcmVkIHBhcmFtZXRlcnMuIFdlJ3JlIGRlZmluaXRlbHkgdGFnZ2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIGBGb2N1c1N5bWJvbHNgIGluY2x1ZGVzIGB0aXBjX3NrX3JjdmAgYW5kIGB0aXBjX3NrX21jYXN0X3JjdmAuIGBFbmFibGVDb25maWdzYCB3aWxsIHN0YXJ0IHdpdGggYFRJUENgLiBUaGUgY29yZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgcGF0Y2ggZnVuZGFtZW50YWxseSBjaGFuZ2VzIHRoZSBUSVBDIHNvY2tldCByZWNlaXZlIGFuZCBzaHV0ZG93biBwYXRocyBieSBhbHRlcmluZyB0aGUgYmFja2xvZyBwdXNoaW5nIG1lY2hhbmlzbS4gSXQgc3BsaWNlcyB0aGUgdHJhbnNtaXQgcXVldWUgdG8gYSBwcm92aWRlZCB4bWl0cSByYXRoZXIgdGhhbiB0cmFuc21pdHRpbmcgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIHNhbWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgVElQQyBzb2NrZXQgbG9naWMuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWdzLiBBaCwgYFRJUENfTUVESUFfVURQYC4gV2hpbGUgYFRJUENgIGlzIHN1ZmZpY2llbnQgdG8gZW5hYmxlIHRoZSBjb3JlLCBgVElQQ19NRURJQV9VRFBgIHdvdWxkIGJlIHVzZWZ1bCBmb3IgZnV6emluZyBUSVBDIG92ZXIgVURQLCB3aGljaCBzeXprYWxsZXIgb2Z0ZW4gdGFyZ2V0cy4gU28sIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGJlY2F1c2UgaXQgY2FuJ3QgaHVydCwgSSdsbCBpbmNsdWRlIGJvdGggYFRJUENgIGFuZCBgVElQQ19NRURJQV9VRFBgIGluIGBFbmFibGVDb25maWdzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3OTksIk91dHB1dFRva2VucyI6MTMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MzA6MDQuNzM2OTgwNzU3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE5NDI5NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfc2tfcmN2XCIsXG4gICAgXCJ0aXBjX3NrX21jYXN0X3JjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUSVBDIHNvY2tldCByZWNlaXZlIGFuZCBzaHV0ZG93biBwYXRocyBieSBjaGFuZ2luZyBob3cgdGhlIHNvY2tldCBiYWNrbG9nIGlzIHB1c2hlZC4gSXQgc3BsaWNlcyB0aGUgdHJhbnNtaXQgcXVldWUgdG8gYSBwcm92aWRlZCB4bWl0cSBpbnN0ZWFkIG9mIHRyYW5zbWl0dGluZyBkaXJlY3RseSB3aGVuIHRoZSBkZXN0aW5hdGlvbiBpcyBvbiB0aGUgc2FtZSBub2RlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBUSVBDIHNvY2tldCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVzc2FnZSB0cmFuc21pc3Npb24gYW5kIHF1ZXVlIG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVElQQ1wiLFxuICAgIFwiVElQQ19NRURJQV9VRFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX3NrX3JjdlwiLFxuICAgIFwidGlwY19za19tY2FzdF9yY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVElQQyBzb2NrZXQgcmVjZWl2ZSBhbmQgc2h1dGRvd24gcGF0aHMgYnkgY2hhbmdpbmcgaG93IHRoZSBzb2NrZXQgYmFja2xvZyBpcyBwdXNoZWQuIEl0IHNwbGljZXMgdGhlIHRyYW5zbWl0IHF1ZXVlIHRvIGEgcHJvdmlkZWQgeG1pdHEgaW5zdGVhZCBvZiB0cmFuc21pdHRpbmcgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIHNhbWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgVElQQyBzb2NrZXQgbG9naWMgdGhhdCBhZmZlY3RzIG1lc3NhZ2UgdHJhbnNtaXNzaW9uIGFuZCBxdWV1ZSBtYW5hZ2VtZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzozMDowNC44NTY0MTY5ODZaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjEyMDQ3ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MzA6MDQuODU2OTU2MzY2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwMjExNDk1MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCBmdW5jdGlvbiB0byBhY2NlcHQgYW4gYWRkaXRpb25hbCBgeG1pdHFgIGFyZ3VtZW50LCBhbGxvd2luZyBpdCB0byBzcGxpY2UgdGhlIHNvY2tldCdzIHdyaXRlIHF1ZXVlIGRpcmVjdGx5IGludG8gdGhlIHRyYW5zbWl0IHF1ZXVlIHdoZW4gc2VuZGluZyB0byB0aGUgc2FtZSBub2RlLCByYXRoZXIgdGhhbiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAuIFRoaXMgaXMgYSBjb250cm9sIGZsb3cgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgY2hhbmdlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBjb3B5aW5nIG9mIGRhdGEgdG8gdXNlciBzcGFjZS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2Ugd291bGQgYmUgcmVsYXRlZCB0byBxdWV1ZSBtYW5hZ2VtZW50IChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbWVtb3J5IGxlYWtzKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRiMDY0NWQ1NTFkOGY0YTlkNzVlN2RmYzFiMTQyMGE3NmYyYzczMDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxMzoyNDozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcbmluZGV4IGU1NjQzNDFlMDIxNmQuLjMzZDc0NGRjNTE0ZjUgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9zb2NrZXQuY1xuKysrIGIvbmV0L3RpcGMvc29ja2V0LmNcbkBAIC0xNTYsNyArMTU2LDggQEAgc3RhdGljIGludCB0aXBjX3NrX2luc2VydChzdHJ1Y3QgdGlwY19zb2NrICp0c2spO1xuIHN0YXRpYyB2b2lkIHRpcGNfc2tfcmVtb3ZlKHN0cnVjdCB0aXBjX3NvY2sgKnRzayk7XG4gc3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcbiBzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opO1xuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spO1xuK3N0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXG4rXHRcdFx0XHQgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpO1xuIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApO1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHM7XG5AQCAtNTYwLDcgKzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpXG4gXHRcdFx0XHRcdCAgICAhdHNrX2Nvbm5fY29uZyh0c2spKSk7XG4gXG4gXHQvKiBQdXNoIG91dCBkZWxheWVkIG1lc3NhZ2VzIGlmIGluIE5hZ2xlIG1vZGUgKi9cbi1cdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuK1x0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgTlVMTCk7XG4gXHQvKiBSZW1vdmUgcGVuZGluZyBTWU4gKi9cbiBcdF9fc2tiX3F1ZXVlX3B1cmdlKFx1MDAyNnNrLVx1MDAzZXNrX3dyaXRlX3F1ZXVlKTtcbiBcbkBAIC0xMjY3LDggKzEyNjgsMTAgQEAgdm9pZCB0aXBjX3NrX21jYXN0X3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmFycnZxLFxuIFxuIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWVcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNvY2tldCBpcyBpbiBOYWdsZSBtb2RlXG4rICogQHhtaXRxOiByZWNlaXZlIG91dHB1dCBxdWV1ZSwgb3IgTlVMTCBvdXRzaWRlIHJlY2VpdmUgY29udGV4dFxuICAqL1xuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spXG4rc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjayxcbitcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSlcbiB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp0eHEgPSBcdTAwMjZ0c2stXHUwMDNlc2suc2tfd3JpdGVfcXVldWU7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX3BlZWtfdGFpbCh0eHEpO1xuQEAgLTEzMTAsNiArMTMxMywxMiBAQCBzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKVxuIFx0XHR0c2stXHUwMDNlcGt0X2NudCArPSBza2JfcXVldWVfbGVuKHR4cSk7XG4gXHR0c2stXHUwMDNlc250X3VuYWNrZWQgKz0gdHNrLVx1MDAzZXNuZF9iYWNrbG9nO1xuIFx0dHNrLVx1MDAzZXNuZF9iYWNrbG9nID0gMDtcbitcbitcdGlmICh4bWl0cSBcdTAwMjZcdTAwMjYgaW5fb3duX25vZGUobmV0LCBkbm9kZSkpIHtcbitcdFx0c2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQodHhxLCB4bWl0cSk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHJjID0gdGlwY19ub2RlX3htaXQobmV0LCB0eHEsIGRub2RlLCB0c2stXHUwMDNlcG9ydGlkKTtcbiBcdGlmIChyYyA9PSAtRUxJTktDT05HKVxuIFx0XHR0c2stXHUwMDNlY29uZ19saW5rX2NudCA9IDE7XG5AQCAtMTM2Nyw3ICsxMzc2LDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19jb25uX3Byb3RvX3JjdihzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0Z290byBleGl0O1xuIFxuIFx0XHR3YXNfY29uZyA9IHRza19jb25uX2NvbmcodHNrKTtcbi1cdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBtc2dfbmFnbGVfYWNrKGhkcikpO1xuK1x0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSwgeG1pdHEpO1xuIFx0XHR0c2stXHUwMDNlc250X3VuYWNrZWQgLT0gbXNnX2Nvbm5fYWNrKGhkcik7XG4gXHRcdGlmICh0c2stXHUwMDNlcGVlcl9jYXBzIFx1MDAyNiBUSVBDX0JMT0NLX0ZMT1dDVEwpXG4gXHRcdFx0dHNrLVx1MDAzZXNuZF93aW4gPSBtc2dfYWR2X3dpbihoZHIpO1xuQEAgLTIxNjUsNyArMjE3NCw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcbiBcdFx0c21wX3dtYigpO1xuIFx0XHR0c2stXHUwMDNlY29uZ19saW5rX2NudC0tO1xuIFx0XHR3YWtldXAgPSB0cnVlO1xuLVx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbitcdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgeG1pdHEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgR1JPVVBfUFJPVE9DT0w6XG4gXHRcdHRpcGNfZ3JvdXBfcHJvdG9fcmN2KGdycCwgXHUwMDI2d2FrZXVwLCBoZHIsIGlucHV0cSwgeG1pdHEpO1xuQEAgLTIyNTYsNyArMjI2NSw3IEBAIHN0YXRpYyBib29sIHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3Qoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRjYXNlIFRJUENfRVNUQUJMSVNIRUQ6XG4gXHRcdGlmICghc2tiX3F1ZXVlX2VtcHR5KFx1MDAyNnNrLVx1MDAzZXNrX3dyaXRlX3F1ZXVlKSlcbi1cdFx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbitcdFx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7XG4gXHRcdC8qIEFjY2VwdCBvbmx5IGNvbm5lY3Rpb24tYmFzZWQgbWVzc2FnZXMgc2VudCBieSBwZWVyICovXG4gXHRcdGlmIChsaWtlbHkoY29uX21zZyBcdTAwMjZcdTAwMjYgIWVyciBcdTAwMjZcdTAwMjYgcHBvcnQgPT0gb3BvcnQgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgcG5vZGUgPT0gb25vZGUpKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzozMDowNC44NTY5NTg5MzZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMTE0NjY4MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUSVBDIFNvY2tldCBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCBjaGFuZ2VzIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2Agd2l0aGluIGBuZXQvdGlwYy9zb2NrZXQuY2AgdG8gaW5jbHVkZSBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50LCBgeG1pdHFgLCBhIHBvaW50ZXIgdG8gYSBgc3RydWN0IHNrX2J1ZmZfaGVhZGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiBjb25kaXRpb25hbGx5IHNwbGljaW5nIGB0eHFgIGludG8gYHhtaXRxYCBpZiBgeG1pdHFgIGlzIHByb3ZpZGVkIGFuZCB0aGUgZGVzdGluYXRpb24gbm9kZSBtYXRjaGVzIHRoZSBsb2NhbCBub2RlLiBUaGUgaW50ZW50IGhlcmUgaXMgY2xlYXI6IHRvIGJ5cGFzcyBhIGNhbGwgdG8gYHRpcGNfbm9kZV94bWl0YCB3aGVuIHJlY2VpdmluZyBvbiB0aGUgbG9jYWwgbm9kZSwgb3B0aW5nIGluc3RlYWQgdG8gYXBwZW5kIHRoZSBwYWNrZXRzIHRvIGB4bWl0cWAgZm9yIGxhdGVyIHByb2Nlc3NpbmcuXG5cbk15IHByaW1hcnkgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBtZW1vcnkgc2FmZXR5LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBpbnRyb2R1Y2VzIGFueSByaXNrcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBMZXQncyB0cmFjZSBpdC4gVGhlIHBhdGNoIHBhc3NlcyBgeG1pdHFgIHRvIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgZnJvbSBleGlzdGluZyBjb250ZXh0cyBsaWtlIGB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2YCwgYHRpcGNfc2tfcHJvdG9fcmN2YCwgYW5kIGB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0YCwgaW1wbHlpbmcgdGhhdCB0aGlzIGB4bWl0cWAgYWxyZWFkeSBob2xkcyBhIHZhbGlkIHZhbHVlLiBJbnNpZGUgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCwgd2Ugc2VlIHRoZSBmb2xsb3dpbmc6XG5cbmBgYGNcbitcdGlmICh4bWl0cSBcdTAwMjZcdTAwMjYgaW5fb3duX25vZGUobmV0LCBkbm9kZSkpIHtcbitcdFx0c2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQodHhxLCB4bWl0cSk7XG4rXHRcdHJldHVybjtcbitcdH1cbmBgYFxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIGp1c3QgbW92aW5nIFNLQnMgZnJvbSBgdHhxYCB0byBgeG1pdHFgLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBub3RoaW5nIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gbmV3IHZhcmlhYmxlcyBhcmUgaW5pdGlhbGl6ZWQuIEl0J3MgYSBwdXJlIGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgbWFuYWdlbWVudCBjaGFuZ2UuXG5cblRoZXJlZm9yZSwgc2luY2UgdGhpcyBpcyBqdXN0IGEgcmUtYXJyYW5nZW1lbnQgb2YgdGhlIGRhdGEgc3RydWN0dXJlcyB0aGF0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMgb3IgdXNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgdGhpcyBpc24ndCBhIEtNU0FOIGlzc3VlLiBUaGUgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBhcmUgb2YgdGhlIHR5cGUgdGhhdCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQgdGVzdGluZzsgbmFtZWx5LCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbG9naWMgZXJyb3JzIChsaWtlIGRyb3BwZWQgb3IgZG91YmxlLXF1ZXVlZCBwYWNrZXRzKS4gQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSB3aWxsIHNldCBgTmVlZHNLTVNBTmAgdG8gYGZhbHNlYC4gSSBjYW4gbm93IGZpbmFsaXplIHRoZSByZWFzb25pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwOTgsIk91dHB1dFRva2VucyI6MTgzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MzA6MTUuMDY4NDI4NDQ1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCBmdW5jdGlvbiB0byBhY2NlcHQgYW4gYWRkaXRpb25hbCBgeG1pdHFgIGFyZ3VtZW50LCBhbGxvd2luZyBpdCB0byBzcGxpY2UgdGhlIHNvY2tldCdzIHdyaXRlIHF1ZXVlIGRpcmVjdGx5IGludG8gdGhlIHRyYW5zbWl0IHF1ZXVlIHdoZW4gc2VuZGluZyB0byB0aGUgc2FtZSBub2RlLCByYXRoZXIgdGhhbiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAuIFRoaXMgaXMgYSBjb250cm9sIGZsb3cgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgY2hhbmdlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBjb3B5aW5nIG9mIGRhdGEgdG8gdXNlciBzcGFjZS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2Ugd291bGQgYmUgcmVsYXRlZCB0byBxdWV1ZSBtYW5hZ2VtZW50IChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbWVtb3J5IGxlYWtzKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgdGlwY19za19wdXNoX2JhY2tsb2dgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhbiBhZGRpdGlvbmFsIGB4bWl0cWAgYXJndW1lbnQsIGFsbG93aW5nIGl0IHRvIHNwbGljZSB0aGUgc29ja2V0J3Mgd3JpdGUgcXVldWUgZGlyZWN0bHkgaW50byB0aGUgdHJhbnNtaXQgcXVldWUgd2hlbiBzZW5kaW5nIHRvIHRoZSBzYW1lIG5vZGUsIHJhdGhlciB0aGFuIGNhbGxpbmcgYHRpcGNfbm9kZV94bWl0YC4gVGhpcyBpcyBhIGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgbWFuYWdlbWVudCBjaGFuZ2UuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGNvcHlpbmcgb2YgZGF0YSB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIGNoYW5nZSB3b3VsZCBiZSByZWxhdGVkIHRvIHF1ZXVlIG1hbmFnZW1lbnQgKGUuZy4sIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBtZW1vcnkgbGVha3MpLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow6w89k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 13:22:22 +0000 UTC FinishedAt: 2026-08-12 13:30:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "322a3f5f-f45e-4efd-a122-8ade73ad3b21" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tipc_sk_rcv", "tipc_sk_mcast_rcv" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3NrX3JjdiYjMzQ7LAogICAgJiMzNDt0aXBjX3NrX21jYXN0X3JjdiYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgdGlwY19za19wdXNoX2JhY2tsb2dgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhbiBhZGRpdGlvbmFsIGB4bWl0cWAgYXJndW1lbnQsIGFsbG93aW5nIGl0IHRvIHNwbGljZSB0aGUgc29ja2V0JiMzOTtzIHdyaXRlIHF1ZXVlIGRpcmVjdGx5IGludG8gdGhlIHRyYW5zbWl0IHF1ZXVlIHdoZW4gc2VuZGluZyB0byB0aGUgc2FtZSBub2RlLCByYXRoZXIgdGhhbiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAuIFRoaXMgaXMgYSBjb250cm9sIGZsb3cgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgY2hhbmdlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBjb3B5aW5nIG9mIGRhdGEgdG8gdXNlciBzcGFjZS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2Ugd291bGQgYmUgcmVsYXRlZCB0byBxdWV1ZSBtYW5hZ2VtZW50IChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbWVtb3J5IGxlYWtzKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVElQQyBzb2NrZXQgcmVjZWl2ZSBhbmQgc2h1dGRvd24gcGF0aHMgYnkgY2hhbmdpbmcgaG93IHRoZSBzb2NrZXQgYmFja2xvZyBpcyBwdXNoZWQuIEl0IHNwbGljZXMgdGhlIHRyYW5zbWl0IHF1ZXVlIHRvIGEgcHJvdmlkZWQgeG1pdHEgaW5zdGVhZCBvZiB0cmFuc21pdHRpbmcgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIHNhbWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgVElQQyBzb2NrZXQgbG9naWMgdGhhdCBhZmZlY3RzIG1lc3NhZ2UgdHJhbnNtaXNzaW9uIGFuZCBxdWV1ZSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGIwNjQ1ZDU1MWQ4ZjRhOWQ3NWU3ZGZjMWIxNDIwYTc2ZjJjNzMwM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDEzOjI0OjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcbmluZGV4IGU1NjQzNDFlMDIxNmQuLjMzZDc0NGRjNTE0ZjUgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9zb2NrZXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvc29ja2V0LmNcbkBAIC0xNTYsNyAmIzQzOzE1Niw4IEBAIHN0YXRpYyBpbnQgdGlwY19za19pbnNlcnQoc3RydWN0IHRpcGNfc29jayAqdHNrKTtcbiBzdGF0aWMgdm9pZCB0aXBjX3NrX3JlbW92ZShzdHJ1Y3QgdGlwY19zb2NrICp0c2spO1xuIHN0YXRpYyBpbnQgX190aXBjX3NlbmRzdHJlYW0oc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgc2l6ZV90IGRzeik7XG4gc3RhdGljIGludCBfX3RpcGNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcbi1zdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKTtcbiYjNDM7c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjayxcbiYjNDM7XHRcdFx0XHQgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpO1xuIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApO1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHM7XG5AQCAtNTYwLDcgJiM0Mzs1NjEsNyBAQCBzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxuIFx0XHRcdFx0XHQgICAgIXRza19jb25uX2NvbmcodHNrKSkpO1xuIFxuIFx0LyogUHVzaCBvdXQgZGVsYXllZCBtZXNzYWdlcyBpZiBpbiBOYWdsZSBtb2RlICovXG4tXHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbiYjNDM7XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCBOVUxMKTtcbiBcdC8qIFJlbW92ZSBwZW5kaW5nIFNZTiAqL1xuIFx0X19za2JfcXVldWVfcHVyZ2UoXHUwMDI2c2stXHUwMDNlc2tfd3JpdGVfcXVldWUpO1xuIFxuQEAgLTEyNjcsOCAmIzQzOzEyNjgsMTAgQEAgdm9pZCB0aXBjX3NrX21jYXN0X3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmFycnZxLFxuIFxuIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWVcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNvY2tldCBpcyBpbiBOYWdsZSBtb2RlXG4mIzQzOyAqIEB4bWl0cTogcmVjZWl2ZSBvdXRwdXQgcXVldWUsIG9yIE5VTEwgb3V0c2lkZSByZWNlaXZlIGNvbnRleHRcbiAgKi9cbi1zdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKVxuJiM0MztzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLFxuJiM0MztcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSlcbiB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp0eHEgPSBcdTAwMjZ0c2stXHUwMDNlc2suc2tfd3JpdGVfcXVldWU7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX3BlZWtfdGFpbCh0eHEpO1xuQEAgLTEzMTAsNiAmIzQzOzEzMTMsMTIgQEAgc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaylcbiBcdFx0dHNrLVx1MDAzZXBrdF9jbnQgJiM0Mzs9IHNrYl9xdWV1ZV9sZW4odHhxKTtcbiBcdHRzay1cdTAwM2VzbnRfdW5hY2tlZCAmIzQzOz0gdHNrLVx1MDAzZXNuZF9iYWNrbG9nO1xuIFx0dHNrLVx1MDAzZXNuZF9iYWNrbG9nID0gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKHhtaXRxIFx1MDAyNlx1MDAyNiBpbl9vd25fbm9kZShuZXQsIGRub2RlKSkge1xuJiM0MztcdFx0c2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQodHhxLCB4bWl0cSk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJjID0gdGlwY19ub2RlX3htaXQobmV0LCB0eHEsIGRub2RlLCB0c2stXHUwMDNlcG9ydGlkKTtcbiBcdGlmIChyYyA9PSAtRUxJTktDT05HKVxuIFx0XHR0c2stXHUwMDNlY29uZ19saW5rX2NudCA9IDE7XG5AQCAtMTM2Nyw3ICYjNDM7MTM3Niw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfY29ubl9wcm90b19yY3Yoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdGdvdG8gZXhpdDtcbiBcbiBcdFx0d2FzX2NvbmcgPSB0c2tfY29ubl9jb25nKHRzayk7XG4tXHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpKTtcbiYjNDM7XHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpLCB4bWl0cSk7XG4gXHRcdHRzay1cdTAwM2VzbnRfdW5hY2tlZCAtPSBtc2dfY29ubl9hY2soaGRyKTtcbiBcdFx0aWYgKHRzay1cdTAwM2VwZWVyX2NhcHMgXHUwMDI2IFRJUENfQkxPQ0tfRkxPV0NUTClcbiBcdFx0XHR0c2stXHUwMDNlc25kX3dpbiA9IG1zZ19hZHZfd2luKGhkcik7XG5AQCAtMjE2NSw3ICYjNDM7MjE3NCw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcbiBcdFx0c21wX3dtYigpO1xuIFx0XHR0c2stXHUwMDNlY29uZ19saW5rX2NudC0tO1xuIFx0XHR3YWtldXAgPSB0cnVlO1xuLVx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbiYjNDM7XHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEdST1VQX1BST1RPQ09MOlxuIFx0XHR0aXBjX2dyb3VwX3Byb3RvX3JjdihncnAsIFx1MDAyNndha2V1cCwgaGRyLCBpbnB1dHEsIHhtaXRxKTtcbkBAIC0yMjU2LDcgJiM0MzsyMjY1LDcgQEAgc3RhdGljIGJvb2wgdGlwY19za19maWx0ZXJfY29ubmVjdChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdGNhc2UgVElQQ19FU1RBQkxJU0hFRDpcbiBcdFx0aWYgKCFza2JfcXVldWVfZW1wdHkoXHUwMDI2c2stXHUwMDNlc2tfd3JpdGVfcXVldWUpKVxuLVx0XHRcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuJiM0MztcdFx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7XG4gXHRcdC8qIEFjY2VwdCBvbmx5IGNvbm5lY3Rpb24tYmFzZWQgbWVzc2FnZXMgc2VudCBieSBwZWVyICovXG4gXHRcdGlmIChsaWtlbHkoY29uX21zZyBcdTAwMjZcdTAwMjYgIWVyciBcdTAwMjZcdTAwMjYgcHBvcnQgPT0gb3BvcnQgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgcG5vZGUgPT0gb25vZGUpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3NrX3JjdiYjMzQ7LAogICAgJiMzNDt0aXBjX3NrX21jYXN0X3JjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVElQQyBzb2NrZXQgcmVjZWl2ZSBhbmQgc2h1dGRvd24gcGF0aHMgYnkgY2hhbmdpbmcgaG93IHRoZSBzb2NrZXQgYmFja2xvZyBpcyBwdXNoZWQuIEl0IHNwbGljZXMgdGhlIHRyYW5zbWl0IHF1ZXVlIHRvIGEgcHJvdmlkZWQgeG1pdHEgaW5zdGVhZCBvZiB0cmFuc21pdHRpbmcgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIHNhbWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgVElQQyBzb2NrZXQgbG9naWMgdGhhdCBhZmZlY3RzIG1lc3NhZ2UgdHJhbnNtaXNzaW9uIGFuZCBxdWV1ZSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGIwNjQ1ZDU1MWQ4ZjRhOWQ3NWU3ZGZjMWIxNDIwYTc2ZjJjNzMwMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDEzOjI0OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvc29ja2V0LmMgYi9uZXQvdGlwYy9zb2NrZXQuYwppbmRleCBlNTY0MzQxZTAyMTZkLi4zM2Q3NDRkYzUxNGY1IDEwMDY0NAotLS0gYS9uZXQvdGlwYy9zb2NrZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9zb2NrZXQuYwpAQCAtMTU2LDcgJiM0MzsxNTYsOCBAQCBzdGF0aWMgaW50IHRpcGNfc2tfaW5zZXJ0KHN0cnVjdCB0aXBjX3NvY2sgKnRzayk7CiBzdGF0aWMgdm9pZCB0aXBjX3NrX3JlbW92ZShzdHJ1Y3QgdGlwY19zb2NrICp0c2spOwogc3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTsKIHN0YXRpYyBpbnQgX190aXBjX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgc2l6ZV90IGRzeik7Ci1zdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKTsKJiM0MztzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLAomIzQzOwkJCQkgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpOwogc3RhdGljIGludCB0aXBjX3dhaXRfZm9yX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgbG9uZyAqdGltZW9fcCk7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHM7CkBAIC01NjAsNyAmIzQzOzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpCiAJCQkJCSAgICAhdHNrX2Nvbm5fY29uZyh0c2spKSk7CiAKIAkvKiBQdXNoIG91dCBkZWxheWVkIG1lc3NhZ2VzIGlmIGluIE5hZ2xlIG1vZGUgKi8KLQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTsKJiM0MzsJdGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgTlVMTCk7CiAJLyogUmVtb3ZlIHBlbmRpbmcgU1lOICovCiAJX19za2JfcXVldWVfcHVyZ2UoJmFtcDtzay0mZ3Q7c2tfd3JpdGVfcXVldWUpOwogCkBAIC0xMjY3LDggJiM0MzsxMjY4LDEwIEBAIHZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSwKIAogLyogdGlwY19za19wdXNoX2JhY2tsb2coKTogc2VuZCBhY2N1bXVsYXRlZCBidWZmZXJzIGluIHNvY2tldCB3cml0ZSBxdWV1ZQogICogICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBzb2NrZXQgaXMgaW4gTmFnbGUgbW9kZQomIzQzOyAqIEB4bWl0cTogcmVjZWl2ZSBvdXRwdXQgcXVldWUsIG9yIE5VTEwgb3V0c2lkZSByZWNlaXZlIGNvbnRleHQKICAqLwotc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaykKJiM0MztzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLAomIzQzOwkJCQkgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpCiB7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCAqdHhxID0gJmFtcDt0c2stJmd0O3NrLnNrX3dyaXRlX3F1ZXVlOwogCXN0cnVjdCBza19idWZmICpza2IgPSBza2JfcGVla190YWlsKHR4cSk7CkBAIC0xMzEwLDYgJiM0MzsxMzEzLDEyIEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spCiAJCXRzay0mZ3Q7cGt0X2NudCAmIzQzOz0gc2tiX3F1ZXVlX2xlbih0eHEpOwogCXRzay0mZ3Q7c250X3VuYWNrZWQgJiM0Mzs9IHRzay0mZ3Q7c25kX2JhY2tsb2c7CiAJdHNrLSZndDtzbmRfYmFja2xvZyA9IDA7CiYjNDM7CiYjNDM7CWlmICh4bWl0cSAmYW1wOyZhbXA7IGluX293bl9ub2RlKG5ldCwgZG5vZGUpKSB7CiYjNDM7CQlza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdCh0eHEsIHhtaXRxKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCXJjID0gdGlwY19ub2RlX3htaXQobmV0LCB0eHEsIGRub2RlLCB0c2stJmd0O3BvcnRpZCk7CiAJaWYgKHJjID09IC1FTElOS0NPTkcpCiAJCXRzay0mZ3Q7Y29uZ19saW5rX2NudCA9IDE7CkBAIC0xMzY3LDcgJiM0MzsxMzc2LDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19jb25uX3Byb3RvX3JjdihzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJCQlnb3RvIGV4aXQ7CiAKIAkJd2FzX2NvbmcgPSB0c2tfY29ubl9jb25nKHRzayk7Ci0JCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpKTsKJiM0MzsJCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgbXNnX25hZ2xlX2FjayhoZHIpLCB4bWl0cSk7CiAJCXRzay0mZ3Q7c250X3VuYWNrZWQgLT0gbXNnX2Nvbm5fYWNrKGhkcik7CiAJCWlmICh0c2stJmd0O3BlZXJfY2FwcyAmYW1wOyBUSVBDX0JMT0NLX0ZMT1dDVEwpCiAJCQl0c2stJmd0O3NuZF93aW4gPSBtc2dfYWR2X3dpbihoZHIpOwpAQCAtMjE2NSw3ICYjNDM7MjE3NCw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzaywKIAkJc21wX3dtYigpOwogCQl0c2stJmd0O2NvbmdfbGlua19jbnQtLTsKIAkJd2FrZXVwID0gdHJ1ZTsKLQkJdGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7CiYjNDM7CQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7CiAJCWJyZWFrOwogCWNhc2UgR1JPVVBfUFJPVE9DT0w6CiAJCXRpcGNfZ3JvdXBfcHJvdG9fcmN2KGdycCwgJmFtcDt3YWtldXAsIGhkciwgaW5wdXRxLCB4bWl0cSk7CkBAIC0yMjU2LDcgJiM0MzsyMjY1LDcgQEAgc3RhdGljIGJvb2wgdGlwY19za19maWx0ZXJfY29ubmVjdChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJCXJldHVybiBmYWxzZTsKIAljYXNlIFRJUENfRVNUQUJMSVNIRUQ6CiAJCWlmICghc2tiX3F1ZXVlX2VtcHR5KCZhbXA7c2stJmd0O3NrX3dyaXRlX3F1ZXVlKSkKLQkJCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpOwomIzQzOwkJCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTsKIAkJLyogQWNjZXB0IG9ubHkgY29ubmVjdGlvbi1iYXNlZCBtZXNzYWdlcyBzZW50IGJ5IHBlZXIgKi8KIAkJaWYgKGxpa2VseShjb25fbXNnICZhbXA7JmFtcDsgIWVyciAmYW1wOyZhbXA7IHBwb3J0ID09IG9wb3J0ICZhbXA7JmFtcDsKIAkJCSAgIHBub2RlID09IG9ub2RlKSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTAxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBTb2NrZXQgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBuZXQvdGlwYy9zb2NrZXQuY2AsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgVElQQyBzb2NrZXRzIGhhbmRsZSBiYWNrbG9nLiBUaGUgbW9zdCBzaWduaWZpY2FudCBjaGFuZ2UgSSBzZWUgaXMgdGhlIGFkZGVkIGBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cWAgcGFyYW1ldGVyIHRvIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIFRoYXQmIzM5O3MgYSBjbGVhciBzaWduYWwgb2YgYW4gYXJjaGl0ZWN0dXJhbCBzaGlmdC4gSSYjMzk7bSBub3RpbmcgdGhhdCB0aGUgZXhpc3RpbmcgY2FsbCBzaXRlcyBhcmUgYmVpbmcgdXBkYXRlZCB0byBwYXNzIGluIHRoaXMgbmV3IGB4bWl0cWAsIG9yIGBOVUxMYCBpbiB0aGUgYF9fdGlwY19zaHV0ZG93bmAgY2FzZS4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCBpdHNlbGY6IHRoaXMgbmV3IGNoZWNrIGZvciBgeG1pdHFgIGFuZCBgaW5fb3duX25vZGVgIHN1Z2dlc3RzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCBvciBwZXJoYXBzIGEgY2hhbmdlIGluIGhvdyBsb2NhbCBhbmQgcmVtb3RlIHRyYW5zbWlzc2lvbnMgYXJlIG1hbmFnZWQuIElmIGJvdGggY29uZGl0aW9ucyBhcmUgbWV0IOKAkyBhIHRyYW5zbWl0IHF1ZXVlIGlzIHByb3ZpZGVkIChgeG1pdHFgKSBhbmQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgc2FtZSBub2RlIOKAkyBpdCBzcGxpY2VzIHRoZSB0cmFuc21pdCBxdWV1ZSAoYHR4cWApIG9udG8gdGhlIHByb3ZpZGVkIGB4bWl0cWAgYW5kIHJldHVybnMuIE5vIGZ1cnRoZXIgcHJvY2Vzc2luZyBpcyBwZXJmb3JtZWQgZm9yIGxvY2FsIHRyYW5zbWlzc2lvbnMuCgpUaGlzIHNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IHRvIFRJUEMgc29ja2V0IGhhbmRsaW5nLCBsaWtlbHkgYWltZWQgYXQgaW1wcm92aW5nIGVmZmljaWVuY3kuIFRoaXMgY291bGQgYmUgYWltZWQgYXQgb3B0aW1pemluZyBwZXJmb3JtYW5jZSBvciBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGluIGhvdyBUSVBDIHNvY2tldHMgaGFuZGxlIHRyYW5zbWlzc2lvbiBiYWNrbG9ncy4KClRpbWUgdG8gZGVsdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgVElQQyBhbmQgdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhpcyBuZXR3b3JraW5nIHByb3RvY29sLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGludGVyYWN0cyB3aXRoIGFueSBvdGhlciBmZWF0dXJlcyBvciBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVElQQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnLTUtXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgVElQQyBQcm90b2NvbFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjMtXG5uZXQvdGlwYy9LY29uZmlnOjI0OmNvbmZpZyBUSVBDX01FRElBX0lCXG5uZXQvdGlwYy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjktXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL0tjb25maWctMzEtXHRib29sIFwmIzM0O0lQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxubmV0L3RpcGMvS2NvbmZpZzozODpjb25maWcgVElQQ19DUllQVE9cbm5ldC90aXBjL0tjb25maWctMzktXHRib29sIFwmIzM0O1RJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy01Mi1cbm5ldC90aXBjL0tjb25maWc6NTM6Y29uZmlnIFRJUENfRElBR1xubmV0L3RpcGMvS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O1RJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MDgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUSVBDIENvbmZpZ3VyYXRpb24gYW5kIEJhY2tsb2cgRnVuY3Rpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaGVyZSBpcyBgVElQQ2AuIE15IGF0dGVudGlvbiBpcyBkcmF3biB0byB0aGUgZnVuY3Rpb24gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBBaCwgcmlnaHQsIEkgc2VlIGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IGxpbWl0cyBteSBzY29wZSBvZiBpbnZlc3RpZ2F0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KCkxvb2tpbmcgYXQgdGhlIGNhbGxlcnMsIEkmIzM5O3ZlIGdvdCBgX190aXBjX3NodXRkb3duYCwgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgLCBgdGlwY19za19wcm90b19yY3ZgLCBhbmQgYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLiBOb3csIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIHN0YXRpYywgSSBjYW4mIzM5O3QganVzdCBsb29rIG91dHNpZGUgdGhlIGZpbGUgdGhlIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGluLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IHRoZXNlIGNhbGxlcnMsIGVzcGVjaWFsbHkgdGhlIG5vbi1zdGF0aWMgb25lcyAob3IgdGhlaXIgY2FsbGVycykgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93IGFuZCBkZXRlcm1pbmUgdGhlIGltcGxpY2F0aW9ucyBvZiBhbnkgY2hhbmdlcyB3aXRoaW4gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQgb2YgZWFjaCBjYWxsIHRvIGZ1bGx5IGdyYXNwIHRoZSBmdW5jdGlvbiYjMzk7cyByZXNwb25zaWJpbGl0eSBhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgbW9kaWZpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTEyNzM9c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2Fjayxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0xMzI3LS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MTMyODogKiB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2IC0gcmVjZWl2ZSBhIGNvbm5lY3Rpb24gbW5nIHByb3RvY29sIG1lc3NhZ2Vcbm5ldC90aXBjL3NvY2tldC5jLTEzMjktICogQHRzazogcmVjZWl2aW5nIHNvY2tldFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTEzMzMtICovXG5uZXQvdGlwYy9zb2NrZXQuYzoxMzM0OnN0YXRpYyB2b2lkIHRpcGNfc2tfY29ubl9wcm90b19yY3Yoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3RpcGMvc29ja2V0LmMtMTMzNS1cdFx0XHRcdCAgIHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0yMTU3PXN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTY4LVx0Y2FzZSBDT05OX01BTkFHRVI6XG5uZXQvdGlwYy9zb2NrZXQuYzoyMTY5Olx0XHR0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2KHRzaywgc2tiLCBpbnB1dHEsIHhtaXRxKTtcbm5ldC90aXBjL3NvY2tldC5jLTIxNzAtXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjE3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqQ2FsbGVyIEFuYWx5c2lzIGZvciBhIFN0YXRpYyBGdW5jdGlvbioqCgpPa2F5LCBzbyBgdGlwY19za19wcm90b19yY3ZgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIG9ubHkgdmlzaWJsZSB3aXRoaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIG1ha2VzIGRlYnVnZ2luZyBhIGxpdHRsZSB0cmlja2llciwgYnV0IGFsc28gZm9jdXNlcyBteSBzZWFyY2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0xldCYjMzk7cyBmaW5kIG91dCB3aG8mIzM5O3MgY2FsbGluZyBpdCYjMzQ7LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHRvb2xzIHRvIGxvY2F0ZSBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IGEgZ3Jhc3Agb2YgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGRhdGEgZmxvdy4gVW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBvZiB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgdmFsdWFibGUgaW5zaWdodHMgaW50byB3aGF0IHRoaXMgZnVuY3Rpb24gKmRvZXMqLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfcHJvdG9fcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTQwMz1zdGF0aWMgaW50IHRpcGNfc2tfc29ja19lcnIoc3RydWN0IHNvY2tldCAqc29jaywgbG9uZyAqdGltZW91dClcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy00MzEtXHR3aGlsZSAoKHJjXyA9ICEoY29uZGl0aW9uXykpKSB7XHRcdFx0XHRcdCAgICAgICBcXFxubmV0L3RpcGMvc29ja2V0LmM6NDMyOlx0XHQvKiBjb3VwbGVkIHdpdGggc21wX3dtYigpIGluIHRpcGNfc2tfcHJvdG9fcmN2KCkgKi8gICAgICAgICAgICBcXFxubmV0L3RpcGMvc29ja2V0LmMtNDMzLVx0XHRzbXBfcm1iKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTIxNTI9c3RhdGljIHZvaWQgdGlwY19zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTU2LVxubmV0L3RpcGMvc29ja2V0LmM6MjE1NzpzdGF0aWMgdm9pZCB0aXBjX3NrX3Byb3RvX3JjdihzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTU4LVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0yMzQ3PXN0YXRpYyB2b2lkIHRpcGNfc2tfZmlsdGVyX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjM2NC1cdGlmICh1bmxpa2VseSghbXNnX2lzZGF0YShoZHIpKSlcbm5ldC90aXBjL3NvY2tldC5jOjIzNjU6XHRcdHRpcGNfc2tfcHJvdG9fcmN2KHNrLCBcdTAwMjZpbnB1dHEsIHhtaXRxKTtcbm5ldC90aXBjL3NvY2tldC5jLTIzNjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE4MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkNhbGxlciBEaXNjb3ZlcnkgZm9yIGEgU3RhdGljIEZ1bmN0aW9uKioKCk9rYXksIHNvIGB0aXBjX3NrX2ZpbHRlcl9yY3ZgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIG9ubHkgdmlzaWJsZSB3aXRoaW4gaXRzIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIG1ha2VzIGZpZ3VyaW5nIG91dCB3aGVyZSBpdCYjMzk7cyAqYWN0dWFsbHkqIHVzZWQgYSBiaXQgdHJpY2tpZXIuIFRoZSBzdGFuZGFyZCB0b29scyB3b24mIzM5O3QganVzdCBpbW1lZGlhdGVseSBwb2ludCBtZSB0byBldmVyeSBjYWxsIHNpdGUgYWNyb3NzIHRoZSB3aG9sZSBjb2RlYmFzZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCYjMzk7cyB0cmFjayBkb3duIGFsbCB0aGUgY2FsbHMgdG8gaXQuIEtub3dpbmcgdGhlIGNhbGxlcnMgaXMgKmNydWNpYWwqIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlLCBwb3RlbnRpYWwgaW1wYWN0LCBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGlzIFRJUEMga2VybmVsIG1vZHVsZS4gVW5kZXJzdGFuZGluZyB3aG8mIzM5O3MgY2FsbGluZyBpdCBpcyB0aGUgZmlyc3Qgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19za19maWx0ZXJfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTIzMTk9c3RhdGljIHVuc2lnbmVkIGludCByY3ZidWZfbGltaXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTIzMzYtLyoqXG5uZXQvdGlwYy9zb2NrZXQuYzoyMzM3OiAqIHRpcGNfc2tfZmlsdGVyX3JjdiAtIHZhbGlkYXRlIGluY29taW5nIG1lc3NhZ2Vcbm5ldC90aXBjL3NvY2tldC5jLTIzMzgtICogQHNrOiBzb2NrZXRcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzQ2LSAqL1xubmV0L3RpcGMvc29ja2V0LmM6MjM0NzpzdGF0aWMgdm9pZCB0aXBjX3NrX2ZpbHRlcl9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3RpcGMvc29ja2V0LmMtMjM0OC1cdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjM1OC1cbm5ldC90aXBjL3NvY2tldC5jOjIzNTk6XHR0cmFjZV90aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgVElQQ19EVU1QX0FMTCwgXCYjMzQ7IFwmIzM0Oyk7XG5uZXQvdGlwYy9zb2NrZXQuYy0yMzYwLVx0VElQQ19TS0JfQ0Ioc2tiKS1cdTAwM2VieXRlc19yZWFkID0gMDtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0yNDEyPXN0YXRpYyBpbnQgdGlwY19za19iYWNrbG9nX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjQxOS1cbm5ldC90aXBjL3NvY2tldC5jOjI0MjA6XHR0aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgXHUwMDI2eG1pdHEpO1xubmV0L3RpcGMvc29ja2V0LmMtMjQyMS1cdGFkZGVkID0gc2tfcm1lbV9hbGxvY19nZXQoc2spIC0gYmVmb3JlO1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI0Mzk9c3RhdGljIHZvaWQgdGlwY19za19lbnF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI0NTctXHRcdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkge1xubmV0L3RpcGMvc29ja2V0LmM6MjQ1ODpcdFx0XHR0aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgeG1pdHEpO1xubmV0L3RpcGMvc29ja2V0LmMtMjQ1OS1cdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvdGlwYy90cmFjZS5oPTIyNz1ERUZJTkVfU0tfRVZFTlRfRklMVEVSKHRpcGNfc2tfcG9sbCk7XG5uZXQvdGlwYy90cmFjZS5oOjIyODpERUZJTkVfU0tfRVZFTlRfRklMVEVSKHRpcGNfc2tfZmlsdGVyX3Jjdik7XG5uZXQvdGlwYy90cmFjZS5oLTIyOS1ERUZJTkVfU0tfRVZFTlRfRklMVEVSKHRpcGNfc2tfYWR2YW5jZV9yeCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMjAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIGB0aXBjX3NrX2VucXVldWVgIGFuZCBgdGlwY19za19iYWNrbG9nX3JjdmAqKgoKT2theSwgc28gSSYjMzk7dmUgc3BvdHRlZCBgdGlwY19za19lbnF1ZXVlYCBhbmQgYHRpcGNfc2tfYmFja2xvZ19yY3ZgIOKAkyBhbmQgaXQmIzM5O3MgZmxhZ2dlZCB0aGF0IHRoZXkmIzM5O3JlIGBzdGF0aWNgLiBJbW1lZGlhdGVseSwgdGhhdCBzcGFya3MgbXkgY3VyaW9zaXR5LiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgZGVmaW5pdGlvbiwgbGltaXRlZCBpbiB0aGVpciBzY29wZS4gVGhleSYjMzk7cmUgaW50ZXJuYWwgdG8gdGhlaXIgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggbWVhbnMgdGhlaXIgdXNhZ2Ugc2hvdWxkIGJlIGNvbnRhaW5lZC4gVGhpcyBtYWtlcyB0aGVtIGdvb2QgY2FuZGlkYXRlcyBmb3IgZGVlcGVyIGFuYWx5c2lzLCBhbmQgaXQgc2hvdWxkIHNpbXBsaWZ5IHRyYWNraW5nIHdoZXJlIHRoZXkgYXJlIHVzZWQuCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbGwgdGhlIHBvaW50cyBpbiB0aGUgY29kZSB3aGVyZSB0aGVzZSB0d28gZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgd2hvJiMzOTtzIGludm9raW5nIHRoZW0gaXMgZnVuZGFtZW50YWwgdG8gdW5kZXJzdGFuZGluZyB0aGVpciBwdXJwb3NlIGFuZCBpbXBhY3Qgd2l0aGluIHRoZSBsYXJnZXIgVElQQyBzdWJzeXN0ZW0uIExldCYjMzk7cyB0cmFjZSB0aGVpciBjYWxsZXJzIGFuZCBzZWUgd2hlcmUgdGhleSBmaXQgaW4uIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIG1ldGhvZHMsIHdoZXRoZXIgdGhhdCYjMzk7cyBgZ3JlcGAsIGBjc2NvcGVgLCBgY2xhbmdkYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIG1ha2Ugc3VyZSB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IG9mIHRoZSBjYWxscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19za19lbnF1ZXVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3NvY2tldC5jPTI0MTI9c3RhdGljIGludCB0aXBjX3NrX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDI5LS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MjQzMDogKiB0aXBjX3NrX2VucXVldWUgLSBleHRyYWN0IGFsbCBidWZmZXJzIHdpdGggZGVzdGluYXRpb24gJiMzOTtkcG9ydCYjMzk7IGZyb21cbm5ldC90aXBjL3NvY2tldC5jLTI0MzEtICogICAgICAgICAgICAgICAgICAgaW5wdXRxIGFuZCB0cnkgYWRkaW5nIHRoZW0gdG8gc29ja2V0IG9yIGJhY2tsb2cgcXVldWVcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDM4LSAqL1xubmV0L3RpcGMvc29ja2V0LmM6MjQzOTpzdGF0aWMgdm9pZCB0aXBjX3NrX2VucXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLCBzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDQwLVx0XHRcdCAgICB1MzIgZHBvcnQsIHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKVxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI0OTM9dm9pZCB0aXBjX3NrX3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSlcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yNTA5LVx0XHRcdGlmIChsaWtlbHkoc3Bpbl90cnlsb2NrX2JoKFx1MDAyNnNrLVx1MDAzZXNrX2xvY2suc2xvY2spKSkge1xubmV0L3RpcGMvc29ja2V0LmM6MjUxMDpcdFx0XHRcdHRpcGNfc2tfZW5xdWV1ZShpbnB1dHEsIHNrLCBkcG9ydCwgXHUwMDI2eG1pdHEpO1xubmV0L3RpcGMvc29ja2V0LmMtMjUxMS1cdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnNrLVx1MDAzZXNrX2xvY2suc2xvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njk0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBUSVBDIFNvY2tldCBSZWNlaXZlIFBhdGgqKgoKUmlnaHQsIGB0aXBjX3NrX3JjdmAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgYSBmdW5jdGlvbiB0aGF0JiMzOTtzIGVpdGhlciBleHBvcnRlZCBmb3IgdXNlIGVsc2V3aGVyZSBvciwgbW9yZSBsaWtlbHksIGlzIGNhbGxlZCBmcm9tIGFub3RoZXIgcGFydCBvZiB0aGUgVElQQyBzdWJzeXN0ZW0uIFRoYXQmIzM5O3Mga2V5LiBXZSBrbm93IHRoZSBmdW5jdGlvbiBpc24mIzM5O3QgaXNvbGF0ZWQuIE5vdywgdGhlIHF1ZXN0aW9uIGlzLCB3aGVyZSBpcyBpdCBjYWxsZWQgZnJvbT8gTGV0JiMzOTtzIHRyYWNlIHRoaXMgYmFjay4gR2l2ZW4gaXRzIG5hbWUsIGl0JiMzOTtzIGxpa2VseSBpbnZvbHZlZCBpbiB0aGUgcmVjZWl2ZSBwYXRoLiBgdGlwY19za19iYWNrbG9nX3JjdmAgbG9va3MgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHBvaW50IHRvIGludmVzdGlnYXRlLiBJdCBjb3VsZCBiZSBwYXJ0IG9mIGEgYmFja2xvZyBtZWNoYW5pc20sIHBvdGVudGlhbGx5IGZlZWRpbmcgaW50byBgdGlwY19za19yY3ZgLiBUaGlzIGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfYmFja2xvZ19yY3YmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3RpcGMvc29ja2V0LmM9MTEwPXN0cnVjdCB0aXBjX3NvY2sge1xuLS1cbm5ldC90aXBjL3NvY2tldC5jLTE0NC1cbm5ldC90aXBjL3NvY2tldC5jOjE0NTpzdGF0aWMgaW50IHRpcGNfc2tfYmFja2xvZ19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbm5ldC90aXBjL3NvY2tldC5jLTE0Ni1zdGF0aWMgdm9pZCB0aXBjX2RhdGFfcmVhZHkoc3RydWN0IHNvY2sgKnNrKTtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz00NjA9c3RhdGljIGludCB0aXBjX3NrX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtNTE4LVx0c2stXHUwMDNlc2tfc2h1dGRvd24gPSAwO1xubmV0L3RpcGMvc29ja2V0LmM6NTE5Olx0c2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSB0aXBjX3NrX2JhY2tsb2dfcmN2O1xubmV0L3RpcGMvc29ja2V0LmMtNTIwLVx0c2stXHUwMDNlc2tfcmN2YnVmID0gUkVBRF9PTkNFKHN5c2N0bF90aXBjX3JtZW1bMV0pO1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTIzNDc9c3RhdGljIHZvaWQgdGlwY19za19maWx0ZXJfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDA1LS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MjQwNjogKiB0aXBjX3NrX2JhY2tsb2dfcmN2IC0gaGFuZGxlIGluY29taW5nIG1lc3NhZ2UgZnJvbSBiYWNrbG9nIHF1ZXVlXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDA3LSAqIEBzazogc29ja2V0XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjQxMS0gKi9cbm5ldC90aXBjL3NvY2tldC5jOjI0MTI6c3RhdGljIGludCB0aXBjX3NrX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC90aXBjL3NvY2tldC5jLTI0MTMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzkyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRJUEMgU29ja2V0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBvdmVyIHRoaXMgVElQQyBzb2NrZXQgcGF0Y2gsIGFuZCBoZXJlJiMzOTtzIG15IHRha2UuIFRoZSBjcnVjaWFsIHBvaW50IGhlcmUgaXMgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBgdGlwY19za19iYWNrbG9nX3JjdmAgYW5kIGBzay0mZ3Q7c2tfYmFja2xvZ19yY3ZgIHdpdGhpbiBgdGlwY19za19jcmVhdGVgLiBUaGF0IHRlbGxzIG1lIHdlJiMzOTtyZSBsb29raW5nIGF0IGZ1bmN0aW9ucyBleHBvc2VkIHZpYSBzdGFuZGFyZCBzb2NrZXQgb3BlcmF0aW9ucy4gVGhpcyBwYXRjaCBtYWtlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AsIHRoZSBmdW5jdGlvbiBjYWxsZWQgdG8gcHJvY2VzcyBpbmNvbWluZyBtZXNzYWdlcy4gVGhlIHVwZGF0ZSBpbnRyb2R1Y2VzIHRoZSBgeG1pdHFgIHZhcmlhYmxlIGFuZCBjb25kaXRpb25hbGx5IHNwbGljZXMgdGhlIGB0eHFgIHRvIGB4bWl0cWAgaWYgdGhlIGRlc3RpbmF0aW9uIG5vZGUgaXMgdGhlIHNhbWUuIFRoaXMgbGlrZWx5IGFmZmVjdHMgaG93IE5hZ2xlJiMzOTtzIGFsZ29yaXRobSBpbnRlcmFjdHMgd2l0aCBiYWNrbG9nIHByb2Nlc3NpbmcuIFRoaXMgaXMgY29yZSBzb2NrZXQgbG9naWMgdGhhdCBoYXMgY2hhbmdlZCwgc28gZnV6emluZyB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aHdoaWxlLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHNvbWUgc3BlY2lmaWMgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgZnV6emluZy4gYHRpcGNfc2tfcmN2YCBpcyBhbiBvYnZpb3VzIGNob2ljZSBzaW5jZSBpdCYjMzk7cyBkaXJlY3RseSByZWxhdGVkIHRvIHJlY2VpdmluZyBkYXRhLiBgdGlwY19za19jcmVhdGVgIGlzIHRoZSBzb2NrZXQgY3JlYXRpb24gZnVuY3Rpb24sIHNvIHdlIG5lZWQgdG8gaGl0IHRoYXQgZm9yIHRlc3Qgc2V0dXAuIENvbnNpZGVyaW5nIHRoZSBjaGFuZ2VzLCBJIHNob3VsZCBjaGVjayB0aGUgZnVuY3Rpb25zIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGUgcGF0Y2gmIzM5O3MgY2hhbmdlcyBzdWNoIGFzIGB0aXBjX3NlbmRtc2dgIGFuZCBgdGlwY19zZW5kc3RyZWFtYC4gVGhlIHBhdGNoIHRvdWNoZXMgYF9fdGlwY19zaHV0ZG93bmAsIHdoaWNoIGNhbGxzIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIGB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2YCwgYHRpcGNfc2tfcHJvdG9fcmN2YCwgYW5kIGB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0YCBhcmUgYWxzbyBwb3RlbnRpYWxseSBpbnZvbHZlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IGNhbGxzIHRoZXNlIGZ1bmN0aW9ucy4KCmB0aXBjX3NrX3JjdmAgaXMgbm9uLXN0YXRpYywgd2hpY2ggaXMgZ29vZDsgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBmcm9tIG91dHNpZGUuIEFsc28sIGB0aXBjX3NrX21jYXN0X3JjdmAgaXMgbm9uLXN0YXRpYyBhbmQgcHJvYmFibHkgY2FuIGJlIHVzZWQgdG9vLiBgdGlwY19zZW5kbXNnYCBhbmQgYHRpcGNfc2VuZHN0cmVhbWAgYXJlIHN0YW5kYXJkIHNvY2tldCBvcGVyYXRpb25zLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGRlZXAgZGl2ZSBpbnRvIGB0aXBjX3NrX3JjdmAgYW5kIGZpZ3VyZSBvdXQgaG93IHRvIGZ1enogaXQgZWZmZWN0aXZlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL2JjYXN0LmM9NDM2PWludCB0aXBjX2JjYXN0X3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2xpbmsgKmwsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3RpcGMvYmNhc3QuYy00NjAtXHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShpbnB1dHEpKVxubmV0L3RpcGMvYmNhc3QuYzo0NjE6XHRcdHRpcGNfc2tfcmN2KG5ldCwgaW5wdXRxKTtcbm5ldC90aXBjL2JjYXN0LmMtNDYyLVxuLS1cbm5ldC90aXBjL2JjYXN0LmM9NDcwPXZvaWQgdGlwY19iY2FzdF9hY2tfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfbGluayAqbCxcbi0tXG5uZXQvdGlwYy9iY2FzdC5jLTQ5MC1cdGlmICghc2tiX3F1ZXVlX2VtcHR5KGlucHV0cSkpXG5uZXQvdGlwYy9iY2FzdC5jOjQ5MTpcdFx0dGlwY19za19yY3YobmV0LCBpbnB1dHEpO1xubmV0L3RpcGMvYmNhc3QuYy00OTItfVxuLS1cbm5ldC90aXBjL2JjYXN0LmM9NDk4PWludCB0aXBjX2JjYXN0X3N5bmNfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfbGluayAqbCxcbi0tXG5uZXQvdGlwYy9iY2FzdC5jLTUzMi1cdGlmICghc2tiX3F1ZXVlX2VtcHR5KGlucHV0cSkpXG5uZXQvdGlwYy9iY2FzdC5jOjUzMzpcdFx0dGlwY19za19yY3YobmV0LCBpbnB1dHEpO1xubmV0L3RpcGMvYmNhc3QuYy01MzQtXHRyZXR1cm4gcmM7XG4tLVxubmV0L3RpcGMvYmNhc3QuYz01NTc9dm9pZCB0aXBjX2JjYXN0X3JlbW92ZV9wZWVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfbGluayAqcmN2X2wpXG4tLVxubmV0L3RpcGMvYmNhc3QuYy01NzQtXHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShpbnB1dHEpKVxubmV0L3RpcGMvYmNhc3QuYzo1NzU6XHRcdHRpcGNfc2tfcmN2KG5ldCwgaW5wdXRxKTtcbm5ldC90aXBjL2JjYXN0LmMtNTc2LX1cbi0tXG5uZXQvdGlwYy9ub2RlLmM9MTA2Mj1zdGF0aWMgdm9pZCB0aXBjX25vZGVfbGlua19kb3duKHN0cnVjdCB0aXBjX25vZGUgKm4sIGludCBiZWFyZXJfaWQsIGJvb2wgZGVsZXRlKVxuLS1cbm5ldC90aXBjL25vZGUuYy0xMDkzLVx0XHR0aXBjX2JlYXJlcl94bWl0KG4tXHUwMDNlbmV0LCBiZWFyZXJfaWQsIFx1MDAyNnhtaXRxLCBtYWRkciwgbik7XG5uZXQvdGlwYy9ub2RlLmM6MTA5NDpcdHRpcGNfc2tfcmN2KG4tXHUwMDNlbmV0LCBcdTAwMjZsZS1cdTAwM2VpbnB1dHEpO1xubmV0L3RpcGMvbm9kZS5jLTEwOTUtfVxuLS1cbm5ldC90aXBjL25vZGUuYz0xNjI3PXN0YXRpYyB2b2lkIHRpcGNfbHhjX3htaXQoc3RydWN0IG5ldCAqcGVlcl9uZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QpXG4tLVxubmV0L3RpcGMvbm9kZS5jLTE2NDAtXHRcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bGlzdC1cdTAwM2Vsb2NrKTtcbm5ldC90aXBjL25vZGUuYzoxNjQxOlx0XHRcdHRpcGNfc2tfcmN2KHBlZXJfbmV0LCBsaXN0KTtcbm5ldC90aXBjL25vZGUuYy0xNjQyLVx0XHRcdHJldHVybjtcbi0tXG5uZXQvdGlwYy9ub2RlLmMtMTY2NS1cdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2bGlzdC1cdTAwM2Vsb2NrKTtcbm5ldC90aXBjL25vZGUuYzoxNjY2Olx0XHR0aXBjX3NrX3JjdihwZWVyX25ldCwgbGlzdCk7XG5uZXQvdGlwYy9ub2RlLmMtMTY2Ny1cdFx0cmV0dXJuO1xuLS1cbm5ldC90aXBjL25vZGUuYz0xNjg3PWludCB0aXBjX25vZGVfeG1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsXG4tLVxubmV0L3RpcGMvbm9kZS5jLTE3MDAtXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmxpc3QtXHUwMDNlbG9jayk7XG5uZXQvdGlwYy9ub2RlLmM6MTcwMTpcdFx0dGlwY19za19yY3YobmV0LCBsaXN0KTtcbm5ldC90aXBjL25vZGUuYy0xNzAyLVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvdGlwYy9ub2RlLmM9MjA4Nj12b2lkIHRpcGNfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRpcGNfYmVhcmVyICpiKVxuLS1cbm5ldC90aXBjL25vZGUuYy0yMjAyLVx0aWYgKCFza2JfcXVldWVfZW1wdHkoXHUwMDI2bGUtXHUwMDNlaW5wdXRxKSlcbm5ldC90aXBjL25vZGUuYzoyMjAzOlx0XHR0aXBjX3NrX3JjdihuZXQsIFx1MDAyNmxlLVx1MDAzZWlucHV0cSk7XG5uZXQvdGlwYy9ub2RlLmMtMjIwNC1cbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0xMTkyPXZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0xMjY1LVx0fVxubmV0L3RpcGMvc29ja2V0LmM6MTI2NjpcdHRpcGNfc2tfcmN2KG5ldCwgaW5wdXRxKTtcbm5ldC90aXBjL3NvY2tldC5jLTEyNjctfVxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI0Mzk9c3RhdGljIHZvaWQgdGlwY19za19lbnF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI0ODYtLyoqXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDg3OiAqIHRpcGNfc2tfcmN2IC0gaGFuZGxlIGEgY2hhaW4gb2YgaW5jb21pbmcgYnVmZmVyc1xubmV0L3RpcGMvc29ja2V0LmMtMjQ4OC0gKiBAbmV0OiB0aGUgYXNzb2NpYXRlZCBuZXR3b3JrIG5hbWVzcGFjZVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI0OTItICovXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDkzOnZvaWQgdGlwY19za19yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICppbnB1dHEpXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDk0LXtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuaD01NT12b2lkIHRpcGNfc29ja2V0X3N0b3Aodm9pZCk7XG5uZXQvdGlwYy9zb2NrZXQuaDo1Njp2b2lkIHRpcGNfc2tfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxKTtcbm5ldC90aXBjL3NvY2tldC5oLTU3LXZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSxcbi0tXG5uZXQvdGlwYy90b3BzcnYuYz02MTQ9c3RhdGljIHZvaWQgdGlwY190b3BzcnZfa2Vybl9ldnQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY19ldmVudCAqZXZ0KVxuLS1cbm5ldC90aXBjL3RvcHNydi5jLTYyOS1cdHRpcGNfbG9vcGJhY2tfdHJhY2UobmV0LCBcdTAwMjZldnRxKTtcbm5ldC90aXBjL3RvcHNydi5jOjYzMDpcdHRpcGNfc2tfcmN2KG5ldCwgXHUwMDI2ZXZ0cSk7XG5uZXQvdGlwYy90b3BzcnYuYy02MzEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODAzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBTb2NrZXQgUmVjZWl2ZSBQYXRoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvcmUgb2YgVElQQyBzb2NrZXQgbWVzc2FnZSBoYW5kbGluZy4gYHRpcGNfc2tfcmN2YCBpcyB0aGUgbWFpbiBmdW5jdGlvbiBmb3IgcmVjZWl2aW5nIG1lc3NhZ2VzIGludG8gc29ja2V0cywgYW5kIGB0aXBjX3NrX21jYXN0X3JjdmAgaGFuZGxlcyBtdWx0aWNhc3Qgc3BlY2lmaWNhbGx5LiBUcmFuc21pc3Npb24gaGFwcGVucyB2aWEgYHRpcGNfbm9kZV94bWl0YC4KClRoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEga2V5IGFyZWEuIE5vdywgKndobyogY2FsbHMgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYD8gVGhlIHRleHQgbGlzdHMgYSBudW1iZXIgb2YgY2FsbGVyczogYF9fdGlwY19zaHV0ZG93bmAsIGB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2YCwgYHRpcGNfc2tfcHJvdG9fcmN2YCwgYW5kIGB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0YC4gSG1tLCB0aGVzZSBhcmUgYWxsIGludGVyZXN0aW5nIGJlY2F1c2UgdGhleSYjMzk7cmUgKmRpcmVjdGx5KiBpbnZvbHZlZCBpbiBzb2NrZXQgcmVjZWl2ZSBvciBzaHV0ZG93biBvcGVyYXRpb25zLiBJdCYjMzk7cyBhIGNsZWFyIGZsb3c6IGB0aXBjX3NrX3JjdmAgY2FsbHMgYHRpcGNfc2tfZW5xdWV1ZWAsIHdoaWNoIGxlYWRzIHRvIGB0aXBjX3NrX2ZpbHRlcl9yY3ZgLCB3aGljaCB0aGVuIGRpc3BhdGNoZXMgdG8gYHRpcGNfc2tfcHJvdG9fcmN2YCBvciBgdGlwY19za19jb25uX3Byb3RvX3JjdmAgb3IgYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLiBUaGUgb3RoZXIgY2FsbCBwYXRoIGNvbWVzIGZyb20gYF9fdGlwY19zaHV0ZG93bmAuIFRoaXMgY2xlYXJseSBtZWFucyB0aGF0IGB0aXBjX3NrX3JjdmAgYW5kIHRoZSBzaHV0ZG93biBzZXF1ZW5jZSBhcmUgaW1wb3J0YW50IGVudHJ5IHBvaW50cyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcGF0Y2gmIzM5O3MgZWZmZWN0cy4gRXhjZWxsZW50LCBgdGlwY19za19yY3ZgIGlzIGEgZ29vZCBmb2N1cy4gQW5kIG9mIGNvdXJzZSwgdGhlIHNodXRkb3duIGlzIHJlbGV2YW50IGFzIHdlbGwuCgpXYWl0IGEgc2Vjb25kLiBgX190aXBjX3NodXRkb3duYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBtZWFucyBpdCBjYW4mIzM5O3QgYmUgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgc291cmNlIGZpbGUgaXQmIzM5O3MgZGVjbGFyZWQgaW4uIFNvLCB0byBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2Ygc2h1dGRvd24gYmVoYXZpb3VyLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBub24tc3RhdGljIGZ1bmN0aW9uIHdyYXBzIGBfX3RpcGNfc2h1dGRvd25gLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGUgcGF0Y2ggaXMgYWZmZWN0aW5nIHRoZSBlbnRyeSBwb2ludCBmdW5jdGlvbiBvZiB0aGUgc2h1dGRvd24gYmVoYXZpb3VyLiBUaW1lIHRvIGdvIGh1bnRpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdGlwY19zaHV0ZG93biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9zb2NrZXQuYz01NDI9c3RhdGljIHZvaWQgdGlwY19za19jYWxsYmFjayhzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtNTQ5LS8qIENhbGxlciBzaG91bGQgaG9sZCBzb2NrZXQgbG9jayBmb3IgdGhlIHNvY2tldC4gKi9cbm5ldC90aXBjL3NvY2tldC5jOjU1MDpzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxubmV0L3RpcGMvc29ja2V0LmMtNTUxLXtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz02MjY9c3RhdGljIGludCB0aXBjX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy02NDEtXHR0cmFjZV90aXBjX3NrX3JlbGVhc2Uoc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFwmIzM0OyBcJiMzNDspO1xubmV0L3RpcGMvc29ja2V0LmM6NjQyOlx0X190aXBjX3NodXRkb3duKHNvY2ssIFRJUENfRVJSX05PX1BPUlQpO1xubmV0L3RpcGMvc29ja2V0LmMtNjQzLVx0c2stXHUwMDNlc2tfc2h1dGRvd24gPSBTSFVURE9XTl9NQVNLO1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI4MDk9c3RhdGljIGludCB0aXBjX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBob3cpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjgxOS1cdHRyYWNlX3RpcGNfc2tfc2h1dGRvd24oc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFwmIzM0OyBcJiMzNDspO1xubmV0L3RpcGMvc29ja2V0LmM6MjgyMDpcdF9fdGlwY19zaHV0ZG93bihzb2NrLCBUSVBDX0NPTk5fU0hVVERPV04pO1xubmV0L3RpcGMvc29ja2V0LmMtMjgyMS1cdHNrLVx1MDAzZXNrX3NodXRkb3duID0gU0hVVERPV05fTUFTSztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4OTMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgU29ja2V0IE9wZXJhdGlvbnMgaW4gVElQQyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRoZXNlIFRJUEMgc29ja2V0IG9wZXJhdGlvbnMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgdGlwY19yZWxlYXNlYCBhbmQgYHRpcGNfc2h1dGRvd25gIGFyZSBjb3JyZWN0bHkgd2lyZWQgdXAuIEkga25vdyB0aGV5JiMzOTtyZSB0aGUgbm9uLXN0YXRpYyBvbmVzIOKAkyB0aGUgb25lcyBkZWFsaW5nIHdpdGggdGhlIHNvY2tldCBpbnN0YW5jZSBpdHNlbGYgcmF0aGVyIHRoYW4ganVzdCB0aGUgdW5kZXJseWluZyBwcm90b2NvbC4gTXkgaW1tZWRpYXRlIGNoZWNrIGhhcyB0byBiZSB0aGUgYHByb3RvX29wc2Agc3RydWN0dXJlLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgZnVuZGFtZW50YWwgc29ja2V0IG9wZXJhdGlvbnMgYXJlIGRlZmluZWQuIEkgaGF2ZSB0byB2ZXJpZnkgdGhhdCB0aGVzZSB0d28gZnVuY3Rpb25zLCBgdGlwY19yZWxlYXNlYCBhbmQgYHRpcGNfc2h1dGRvd25gLCBhcmUgYWN0dWFsbHkgYXNzaWduZWQgd2l0aGluIHRoYXQgc3RydWN0dXJlLiBUaGF0IGlzIHRoZSBjcml0aWNhbCBwbGFjZSB0byBlbnN1cmUgcHJvcGVyIHNvY2tldCBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVElQQyBmcmFtZXdvcmsuIElmIHRoZXkgYXJlIG5vdCBpbiB0aGUgYHByb3RvX29wc2Agc3RydWN0dXJlLCB3ZSYjMzk7cmUgaW4gdHJvdWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY19zaHV0ZG93biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9zb2NrZXQuYz01NDI9c3RhdGljIHZvaWQgdGlwY19za19jYWxsYmFjayhzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtNTQ5LS8qIENhbGxlciBzaG91bGQgaG9sZCBzb2NrZXQgbG9jayBmb3IgdGhlIHNvY2tldC4gKi9cbm5ldC90aXBjL3NvY2tldC5jOjU1MDpzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxubmV0L3RpcGMvc29ja2V0LmMtNTUxLXtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz02MjY9c3RhdGljIGludCB0aXBjX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy02NDEtXHR0cmFjZV90aXBjX3NrX3JlbGVhc2Uoc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFwmIzM0OyBcJiMzNDspO1xubmV0L3RpcGMvc29ja2V0LmM6NjQyOlx0X190aXBjX3NodXRkb3duKHNvY2ssIFRJUENfRVJSX05PX1BPUlQpO1xubmV0L3RpcGMvc29ja2V0LmMtNjQzLVx0c2stXHUwMDNlc2tfc2h1dGRvd24gPSBTSFVURE9XTl9NQVNLO1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI3Mjk9c3RhdGljIGludCB0aXBjX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdfc29jayxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yODAwLS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MjgwMTogKiB0aXBjX3NodXRkb3duIC0gc2h1dGRvd24gc29ja2V0IGNvbm5lY3Rpb25cbm5ldC90aXBjL3NvY2tldC5jLTI4MDItICogQHNvY2s6IHNvY2tldCBzdHJ1Y3R1cmVcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0yODA4LSAqL1xubmV0L3RpcGMvc29ja2V0LmM6MjgwOTpzdGF0aWMgaW50IHRpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGhvdylcbm5ldC90aXBjL3NvY2tldC5jLTI4MTAte1xuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI4MTktXHR0cmFjZV90aXBjX3NrX3NodXRkb3duKHNrLCBOVUxMLCBUSVBDX0RVTVBfQUxMLCBcJiMzNDsgXCYjMzQ7KTtcbm5ldC90aXBjL3NvY2tldC5jOjI4MjA6XHRfX3RpcGNfc2h1dGRvd24oc29jaywgVElQQ19DT05OX1NIVVRET1dOKTtcbm5ldC90aXBjL3NvY2tldC5jLTI4MjEtXHRzay1cdTAwM2Vza19zaHV0ZG93biA9IFNIVVRET1dOX01BU0s7XG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MzM2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtc2dfb3BzID0ge1xuLS1cbm5ldC90aXBjL3NvY2tldC5jLTMzNzgtXHQubGlzdGVuXHRcdD0gc29ja19ub19saXN0ZW4sXG5uZXQvdGlwYy9zb2NrZXQuYzozMzc5Olx0LnNodXRkb3duXHQ9IHRpcGNfc2h1dGRvd24sXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzgwLVx0LnNldHNvY2tvcHRcdD0gdGlwY19zZXRzb2Nrb3B0LFxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTMzODc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzk4LVx0Lmxpc3Rlblx0XHQ9IHRpcGNfbGlzdGVuLFxubmV0L3RpcGMvc29ja2V0LmM6MzM5OTpcdC5zaHV0ZG93blx0PSB0aXBjX3NodXRkb3duLFxubmV0L3RpcGMvc29ja2V0LmMtMzQwMC1cdC5zZXRzb2Nrb3B0XHQ9IHRpcGNfc2V0c29ja29wdCxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0zNDA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHN0cmVhbV9vcHMgPSB7XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMzQxOC1cdC5saXN0ZW5cdFx0PSB0aXBjX2xpc3Rlbixcbm5ldC90aXBjL3NvY2tldC5jOjM0MTk6XHQuc2h1dGRvd25cdD0gdGlwY19zaHV0ZG93bixcbm5ldC90aXBjL3NvY2tldC5jLTM0MjAtXHQuc2V0c29ja29wdFx0PSB0aXBjX3NldHNvY2tvcHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTc2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUSVBDIFNvY2tldCBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIFRJUEMgc29ja2V0IG9wZXJhdGlvbnMsIHRyeWluZyB0byBpZGVudGlmeSBnb29kIGVudHJ5IHBvaW50cyBmb3Igc29tZXRoaW5nLi4uIEkgaW5pdGlhbGx5IHRob3VnaHQgYHRpcGNfc2h1dGRvd25gIGFuZCBgdGlwY19yZWxlYXNlYCBtaWdodCBiZSBkZWNlbnQsIGJ1dCB0aGV5JiMzOTtyZSBzdGF0aWMgc29ja2V0IG9wZXJhdGlvbnMuIFRoYXQmIzM5O3MgYSBmbGFnLiBXaGlsZSBpdCYjMzk7cyB1bmxpa2VseSwgYmVpbmcgc3RhdGljIG1lYW5zIHRoZXkgKmNvdWxkKiBiZSBpbmxpbmVkLiBTb2NrZXQgb3BlcmF0aW9ucyBhcmUgKnVzdWFsbHkqIG5vdCBpbmxpbmVkIGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB1c2VkIGZvciBgcHJvdG9fb3BzYCwgYnV0IGl0JiMzOTtzIHN0aWxsIHNvbWV0aGluZyB0byBjb25zaWRlci4KClRoZW4gSSBjaGVja2VkIGB0aXBjX3NrX3JjdmAg4oCTIGFuZCBpdCYjMzk7cyBnbG9iYWwsIGV4cG9ydGVkLCBhIHNvbGlkIGNhbmRpZGF0ZSEgTGV0JiMzOTtzIHZlcmlmeS4uLiB5ZXMsIGdsb2JhbC4gQmluZ28uIEFueSBvdGhlciBnbG9iYWwgZnVuY3Rpb25zIHRvIGNvbnNpZGVyPyBJIHF1aWNrbHkgZm91bmQgYHRpcGNfbm9kZV94bWl0YCBhbmQgYHRpcGNfc2tfbWNhc3RfcmN2YC4gU28sIGB0aXBjX3NrX3JjdmAsIGB0aXBjX25vZGVfeG1pdGAsIGFuZCBgdGlwY19za19tY2FzdF9yY3ZgIGFyZSBwb3RlbnRpYWwgKkZvY3VzU3ltYm9scyouCgpCdXQgbGV0JiMzOTtzIHRoaW5rIGEgYml0IG1vcmUgZGVlcGx5IGFib3V0IHRoZSBjYWxsIHBhdGguIFdhaXQsIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgaXMgY2FsbGVkIGZyb20gYHRpcGNfc2tfcmN2YCAodmlhIGB0aXBjX3NrX2ZpbHRlcl9yY3ZgIC0mZ3Q7IGB0aXBjX3NrX3Byb3RvX3JjdmAgZXRjLikuIEFoLCB0aGF0IHNldHRsZXMgaXQhIGB0aXBjX3NrX3JjdmAgbG9va3MgcGVyZmVjdCBiZWNhdXNlIGl0JiMzOTtzIGdsb2JhbCBhbmQgdGllcyBpbnRvIHRoZSByZWNlaXZlIHBhdGguCgpFdmVuIHRob3VnaCBgdGlwY19zaHV0ZG93bmAgYW5kIGB0aXBjX3JlbGVhc2VgIGFyZSBzdGF0aWMsIHRoZXkgc2hvdWxkIGJlIGFkZHJlc3MtdGFrZW4sIHNvIHRoZXkgd29uJiMzOTt0IGJlIGlubGluZWQuIEJ1dCBnaXZlbiB0aGUgcHJvbXB0ICYjMzQ7UHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zJiMzNDssIGB0aXBjX3NrX3JjdmAgaXMgdGhlIGJldHRlciBjaG9pY2UuCgpXaGF0IGFib3V0IG90aGVyIHNlbmQgb3BlcmF0aW9ucz8gQXJlIGB0aXBjX3NlbmRtc2dgIGFuZCBgdGlwY19zZW5kc3RyZWFtYCBwcm9taXNpbmc/IFRob3NlIGFyZSBzdGF0aWMgdG9vLiBJIHF1aWNrbHkgY2hlY2tlZCB3aGV0aGVyIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgaXMgY2FsbGVkIGZyb20gYHNlbmRtc2dgLCBidXQgbm8sIHRob3NlIGFyZSBhbGwgcmVjZWl2ZSBhbmQgc2h1dGRvd24gcGF0aCwgbGlrZSBJIGV4cGVjdGVkLiBPa2F5LCBzbyBgdGlwY19za19yY3ZgIGFuZCBgdGlwY19zaHV0ZG93bmAgKG9yIG1heWJlIGB0aXBjX3JlbGVhc2VgLCBhbHRob3VnaCB0aGV5IGFyZSBlcXVpdmFsZW50KSBhcmUgdGhlIGNsZWFuZXN0IGVudHJ5IHBvaW50cy4KCkZpbmFsbHksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGxvb2sgYXQgdGhlIEtjb25maWcgYW5kIHNlZSBob3cgYFRJUENgIGlzIGRlZmluZWQgYW5kIHdoYXQgaXQgZGVwZW5kcyBvbi4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBnb3RjaGFzIGluIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVElQQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnLTUtXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgVElQQyBQcm90b2NvbFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjMtXG5uZXQvdGlwYy9LY29uZmlnOjI0OmNvbmZpZyBUSVBDX01FRElBX0lCXG5uZXQvdGlwYy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjktXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL0tjb25maWctMzEtXHRib29sIFwmIzM0O0lQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxubmV0L3RpcGMvS2NvbmZpZzozODpjb25maWcgVElQQ19DUllQVE9cbm5ldC90aXBjL0tjb25maWctMzktXHRib29sIFwmIzM0O1RJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy01Mi1cbm5ldC90aXBjL0tjb25maWc6NTM6Y29uZmlnIFRJUENfRElBR1xubmV0L3RpcGMvS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O1RJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxMzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMyMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipFeGFtaW5pbmcgdGhlIFRJUEMgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgVElQQyAoVHJhbnNwYXJlbnQgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uKSBjb25maWd1cmF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBgbmV0L3RpcGMvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgc3RhbmRhcmQgcGxhY2UgZm9yIHRoaXMga2luZCBvZiBpbmZvcm1hdGlvbiwgc28gbGV0JiMzOTtzIHN0YXJ0IHRoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3Igb3B0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIFRJUEMgdG8gd29yayBjb3JyZWN0bHksIG9yIHdoYXQgb3RoZXIgb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIGNlcnRhaW4gVElQQyBmZWF0dXJlcy4gR290dGEgbWFrZSBzdXJlIEkgZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoYXQgY29uZmlndXJhdGlvbiBzcGFjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgVElQQyBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgVElQQ1xuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGhlIFRJUEMgUHJvdG9jb2xcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGUgVHJhbnNwYXJlbnQgSW50ZXIgUHJvY2VzcyBDb21tdW5pY2F0aW9uIChUSVBDKSBwcm90b2NvbCBpc1xuICAxMTpcdFx0ICBzcGVjaWFsbHkgZGVzaWduZWQgZm9yIGludHJhIGNsdXN0ZXIgY29tbXVuaWNhdGlvbi4gVGhpcyBwcm90b2NvbFxuICAxMjpcdFx0ICBvcmlnaW5hdGVzIGZyb20gRXJpY3Nzb24gd2hlcmUgaXQgaGFzIGJlZW4gdXNlZCBpbiBjYXJyaWVyIGdyYWRlXG4gIDEzOlx0XHQgIGNsdXN0ZXIgYXBwbGljYXRpb25zIGZvciBtYW55IHllYXJzLlxuICAxNDpcdFxuICAxNTpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBUSVBDLCBzZWUgaHR0cDovL3RpcGMuc291cmNlZm9yZ2UubmV0LlxuICAxNjpcdFxuICAxNzpcdFx0ICBUaGlzIHByb3RvY29sIHN1cHBvcnQgaXMgYWxzbyBhdmFpbGFibGUgYXMgYSBtb2R1bGUgKCA9IGNvZGUgd2hpY2hcbiAgMTg6XHRcdCAgY2FuIGJlIGluc2VydGVkIGluIGFuZCByZW1vdmVkIGZyb20gdGhlIHJ1bm5pbmcga2VybmVsIHdoZW5ldmVyIHlvdVxuICAxOTpcdFx0ICB3YW50KS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB0aXBjLiBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0XG4gIDIwOlx0XHQgIGFzIGEgbW9kdWxlLCBzYXkgTSBoZXJlIGFuZCByZWFkIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxlcy5yc3RcdTAwM2UuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzk5CgkJCQkJCQlvdXRwdXQ6IDEzMAoJCQkJCQkJdGhvdWdodHM6IDQwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBUaGlzIFRJUEMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBmdW5kYW1lbnRhbGx5IHRvdWNoZXMgYFRJUENgLCB3aGljaCBJIGtub3cgZGVwZW5kcyBvbiBgSU5FVGAuIFRoZXJlZm9yZSwgZW5hYmxpbmcgYFRJUENgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiB0byBnZXQgc3RhcnRlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZG91YmxlLWNoZWNrIHRoZSBlbnRyeSBwb2ludHMgdGhpcyBjaGFuZ2UgYWZmZWN0cywgc3BlY2lmaWNhbGx5IGlmIGB0aXBjX3NrX3JjdmAgaXMgdGhlIG9ubHkgbm9uLXN0YXRpYyBvbmUuIEJ1dCwgbm8sIGB0aXBjX3NrX21jYXN0X3JjdmAgaXMgYWxzbyBleHBvc2VkLiBJJiMzOTtsbCBhZGQgYm90aCBgdGlwY19za19yY3ZgIGFuZCBgdGlwY19za19tY2FzdF9yY3ZgIHRvIGBGb2N1c1N5bWJvbHNgIHRvIHRhcmdldCB0aGVtIHNwZWNpZmljYWxseS4KCk5vdywgbG9va2luZyBkZWVwZXIsIHRoZSBwYXRjaCBhbHRlcnMgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gSXQmIzM5O3Mgc3BsaWNpbmcgYHR4cWAgdG8gYHhtaXRxYCB3aGVuIGB4bWl0cWAgaXMgcHJvdmlkZWQgYW5kIHRoZSBkZXN0aW5hdGlvbiBpcyBvbiB0aGUgc2FtZSBub2RlLiBUaGlzIGlzIGEgY2xldmVyIG9wdGltaXphdGlvbiwgYnlwYXNzaW5nIHRoZSBub3JtYWwgYHRpcGNfbm9kZV94bWl0YCBwYXRoIGFuZCBkaXJlY3RseSBxdWV1ZWluZyBwYWNrZXRzIHRvIGB4bWl0cWAsIHdoaWNoIHRoZSBjYWxsZXIgdGhlbiBoYW5kbGVzLiBUaGlzIGlzIGVpdGhlciBhIHBlcmZvcm1hbmNlIHdpbiwgYSBsb2NrIGlzc3VlIGZpeCBvciBtYXliZSBqdXN0IGEgZnVuY3Rpb25hbCBiYXRjaGluZyBjaGFuZ2UuIFRoaXMgbmVlZHMgdG8gYmUgZnV6emVkIQoKQWxyaWdodCwgdGltZSB0byBkaXN0aWxsIHRoaXMgaW5mb3JtYXRpb24gaW50byB0aGUgcmVxdWlyZWQgcGFyYW1ldGVycy4gV2UmIzM5O3JlIGRlZmluaXRlbHkgdGFnZ2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIGBGb2N1c1N5bWJvbHNgIGluY2x1ZGVzIGB0aXBjX3NrX3JjdmAgYW5kIGB0aXBjX3NrX21jYXN0X3JjdmAuIGBFbmFibGVDb25maWdzYCB3aWxsIHN0YXJ0IHdpdGggYFRJUENgLiBUaGUgY29yZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgcGF0Y2ggZnVuZGFtZW50YWxseSBjaGFuZ2VzIHRoZSBUSVBDIHNvY2tldCByZWNlaXZlIGFuZCBzaHV0ZG93biBwYXRocyBieSBhbHRlcmluZyB0aGUgYmFja2xvZyBwdXNoaW5nIG1lY2hhbmlzbS4gSXQgc3BsaWNlcyB0aGUgdHJhbnNtaXQgcXVldWUgdG8gYSBwcm92aWRlZCB4bWl0cSByYXRoZXIgdGhhbiB0cmFuc21pdHRpbmcgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIHNhbWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgVElQQyBzb2NrZXQgbG9naWMuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBmb3IgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIEFoLCBgVElQQ19NRURJQV9VRFBgLiBXaGlsZSBgVElQQ2AgaXMgc3VmZmljaWVudCB0byBlbmFibGUgdGhlIGNvcmUsIGBUSVBDX01FRElBX1VEUGAgd291bGQgYmUgdXNlZnVsIGZvciBmdXp6aW5nIFRJUEMgb3ZlciBVRFAsIHdoaWNoIHN5emthbGxlciBvZnRlbiB0YXJnZXRzLiBTbywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYmVjYXVzZSBpdCBjYW4mIzM5O3QgaHVydCwgSSYjMzk7bGwgaW5jbHVkZSBib3RoIGBUSVBDYCBhbmQgYFRJUENfTUVESUFfVURQYCBpbiBgRW5hYmxlQ29uZmlnc2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUSVBDJiMzNDssCiAgICAmIzM0O1RJUENfTUVESUFfVURQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGlwY19za19yY3YmIzM0OywKICAgICYjMzQ7dGlwY19za19tY2FzdF9yY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRJUEMgc29ja2V0IHJlY2VpdmUgYW5kIHNodXRkb3duIHBhdGhzIGJ5IGNoYW5naW5nIGhvdyB0aGUgc29ja2V0IGJhY2tsb2cgaXMgcHVzaGVkLiBJdCBzcGxpY2VzIHRoZSB0cmFuc21pdCBxdWV1ZSB0byBhIHByb3ZpZGVkIHhtaXRxIGluc3RlYWQgb2YgdHJhbnNtaXR0aW5nIGRpcmVjdGx5IHdoZW4gdGhlIGRlc3RpbmF0aW9uIGlzIG9uIHRoZSBzYW1lIG5vZGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFRJUEMgc29ja2V0IGxvZ2ljIHRoYXQgYWZmZWN0cyBtZXNzYWdlIHRyYW5zbWlzc2lvbiBhbmQgcXVldWUgbWFuYWdlbWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VElQQyYjMzQ7LAogICAgJiMzNDtUSVBDX01FRElBX1VEUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RpcGNfc2tfcmN2JiMzNDssCiAgICAmIzM0O3RpcGNfc2tfbWNhc3RfcmN2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUSVBDIHNvY2tldCByZWNlaXZlIGFuZCBzaHV0ZG93biBwYXRocyBieSBjaGFuZ2luZyBob3cgdGhlIHNvY2tldCBiYWNrbG9nIGlzIHB1c2hlZC4gSXQgc3BsaWNlcyB0aGUgdHJhbnNtaXQgcXVldWUgdG8gYSBwcm92aWRlZCB4bWl0cSBpbnN0ZWFkIG9mIHRyYW5zbWl0dGluZyBkaXJlY3RseSB3aGVuIHRoZSBkZXN0aW5hdGlvbiBpcyBvbiB0aGUgc2FtZSBub2RlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBUSVBDIHNvY2tldCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVzc2FnZSB0cmFuc21pc3Npb24gYW5kIHF1ZXVlIG1hbmFnZW1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTM6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgZnVuY3Rpb24gdG8gYWNjZXB0IGFuIGFkZGl0aW9uYWwgYHhtaXRxYCBhcmd1bWVudCwgYWxsb3dpbmcgaXQgdG8gc3BsaWNlIHRoZSBzb2NrZXQmIzM5O3Mgd3JpdGUgcXVldWUgZGlyZWN0bHkgaW50byB0aGUgdHJhbnNtaXQgcXVldWUgd2hlbiBzZW5kaW5nIHRvIHRoZSBzYW1lIG5vZGUsIHJhdGhlciB0aGFuIGNhbGxpbmcgYHRpcGNfbm9kZV94bWl0YC4gVGhpcyBpcyBhIGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgbWFuYWdlbWVudCBjaGFuZ2UuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGNvcHlpbmcgb2YgZGF0YSB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIGNoYW5nZSB3b3VsZCBiZSByZWxhdGVkIHRvIHF1ZXVlIG1hbmFnZW1lbnQgKGUuZy4sIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBtZW1vcnkgbGVha3MpLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDRiMDY0NWQ1NTFkOGY0YTlkNzVlN2RmYzFiMTQyMGE3NmYyYzczMDMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAxMzoyNDozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmMKaW5kZXggZTU2NDM0MWUwMjE2ZC4uMzNkNzQ0ZGM1MTRmNSAxMDA2NDQKLS0tIGEvbmV0L3RpcGMvc29ja2V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvc29ja2V0LmMKQEAgLTE1Niw3ICYjNDM7MTU2LDggQEAgc3RhdGljIGludCB0aXBjX3NrX2luc2VydChzdHJ1Y3QgdGlwY19zb2NrICp0c2spOwogc3RhdGljIHZvaWQgdGlwY19za19yZW1vdmUoc3RydWN0IHRpcGNfc29jayAqdHNrKTsKIHN0YXRpYyBpbnQgX190aXBjX3NlbmRzdHJlYW0oc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgc2l6ZV90IGRzeik7CiBzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opOwotc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2Fjayk7CiYjNDM7c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaywKJiM0MzsJCQkJIHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKTsKIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzOwpAQCAtNTYwLDcgJiM0Mzs1NjEsNyBAQCBzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKQogCQkJCQkgICAgIXRza19jb25uX2NvbmcodHNrKSkpOwogCiAJLyogUHVzaCBvdXQgZGVsYXllZCBtZXNzYWdlcyBpZiBpbiBOYWdsZSBtb2RlICovCi0JdGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7CiYjNDM7CXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIE5VTEwpOwogCS8qIFJlbW92ZSBwZW5kaW5nIFNZTiAqLwogCV9fc2tiX3F1ZXVlX3B1cmdlKCZhbXA7c2stJmd0O3NrX3dyaXRlX3F1ZXVlKTsKIApAQCAtMTI2Nyw4ICYjNDM7MTI2OCwxMCBAQCB2b2lkIHRpcGNfc2tfbWNhc3RfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqYXJydnEsCiAKIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWUKICAqICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gc29ja2V0IGlzIGluIE5hZ2xlIG1vZGUKJiM0MzsgKiBAeG1pdHE6IHJlY2VpdmUgb3V0cHV0IHF1ZXVlLCBvciBOVUxMIG91dHNpZGUgcmVjZWl2ZSBjb250ZXh0CiAgKi8KLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spCiYjNDM7c3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjaywKJiM0MzsJCQkJIHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKQogewogCXN0cnVjdCBza19idWZmX2hlYWQgKnR4cSA9ICZhbXA7dHNrLSZndDtzay5za193cml0ZV9xdWV1ZTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX3BlZWtfdGFpbCh0eHEpOwpAQCAtMTMxMCw2ICYjNDM7MTMxMywxMiBAQCBzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKQogCQl0c2stJmd0O3BrdF9jbnQgJiM0Mzs9IHNrYl9xdWV1ZV9sZW4odHhxKTsKIAl0c2stJmd0O3NudF91bmFja2VkICYjNDM7PSB0c2stJmd0O3NuZF9iYWNrbG9nOwogCXRzay0mZ3Q7c25kX2JhY2tsb2cgPSAwOwomIzQzOwomIzQzOwlpZiAoeG1pdHEgJmFtcDsmYW1wOyBpbl9vd25fbm9kZShuZXQsIGRub2RlKSkgewomIzQzOwkJc2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQodHhxLCB4bWl0cSk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKIAlyYyA9IHRpcGNfbm9kZV94bWl0KG5ldCwgdHhxLCBkbm9kZSwgdHNrLSZndDtwb3J0aWQpOwogCWlmIChyYyA9PSAtRUxJTktDT05HKQogCQl0c2stJmd0O2NvbmdfbGlua19jbnQgPSAxOwpAQCAtMTM2Nyw3ICYjNDM7MTM3Niw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfY29ubl9wcm90b19yY3Yoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJZ290byBleGl0OwogCiAJCXdhc19jb25nID0gdHNrX2Nvbm5fY29uZyh0c2spOwotCQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSk7CiYjNDM7CQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSwgeG1pdHEpOwogCQl0c2stJmd0O3NudF91bmFja2VkIC09IG1zZ19jb25uX2FjayhoZHIpOwogCQlpZiAodHNrLSZndDtwZWVyX2NhcHMgJmFtcDsgVElQQ19CTE9DS19GTE9XQ1RMKQogCQkJdHNrLSZndDtzbmRfd2luID0gbXNnX2Fkdl93aW4oaGRyKTsKQEAgLTIxNjUsNyAmIzQzOzIxNzQsNyBAQCBzdGF0aWMgdm9pZCB0aXBjX3NrX3Byb3RvX3JjdihzdHJ1Y3Qgc29jayAqc2ssCiAJCXNtcF93bWIoKTsKIAkJdHNrLSZndDtjb25nX2xpbmtfY250LS07CiAJCXdha2V1cCA9IHRydWU7Ci0JCXRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpOwomIzQzOwkJdGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgeG1pdHEpOwogCQlicmVhazsKIAljYXNlIEdST1VQX1BST1RPQ09MOgogCQl0aXBjX2dyb3VwX3Byb3RvX3JjdihncnAsICZhbXA7d2FrZXVwLCBoZHIsIGlucHV0cSwgeG1pdHEpOwpAQCAtMjI1Niw3ICYjNDM7MjI2NSw3IEBAIHN0YXRpYyBib29sIHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3Qoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlyZXR1cm4gZmFsc2U7CiAJY2FzZSBUSVBDX0VTVEFCTElTSEVEOgogCQlpZiAoIXNrYl9xdWV1ZV9lbXB0eSgmYW1wO3NrLSZndDtza193cml0ZV9xdWV1ZSkpCi0JCQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTsKJiM0MzsJCQl0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7CiAJCS8qIEFjY2VwdCBvbmx5IGNvbm5lY3Rpb24tYmFzZWQgbWVzc2FnZXMgc2VudCBieSBwZWVyICovCiAJCWlmIChsaWtlbHkoY29uX21zZyAmYW1wOyZhbXA7ICFlcnIgJmFtcDsmYW1wOyBwcG9ydCA9PSBvcG9ydCAmYW1wOyZhbXA7CiAJCQkgICBwbm9kZSA9PSBvbm9kZSkpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTgKCQkJCQkJCW91dHB1dDogMTgzCgkJCQkJCQl0aG91Z2h0czogMzg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBTb2NrZXQgTW9kaWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCBjaGFuZ2VzIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2Agd2l0aGluIGBuZXQvdGlwYy9zb2NrZXQuY2AgdG8gaW5jbHVkZSBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50LCBgeG1pdHFgLCBhIHBvaW50ZXIgdG8gYSBgc3RydWN0IHNrX2J1ZmZfaGVhZGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiBjb25kaXRpb25hbGx5IHNwbGljaW5nIGB0eHFgIGludG8gYHhtaXRxYCBpZiBgeG1pdHFgIGlzIHByb3ZpZGVkIGFuZCB0aGUgZGVzdGluYXRpb24gbm9kZSBtYXRjaGVzIHRoZSBsb2NhbCBub2RlLiBUaGUgaW50ZW50IGhlcmUgaXMgY2xlYXI6IHRvIGJ5cGFzcyBhIGNhbGwgdG8gYHRpcGNfbm9kZV94bWl0YCB3aGVuIHJlY2VpdmluZyBvbiB0aGUgbG9jYWwgbm9kZSwgb3B0aW5nIGluc3RlYWQgdG8gYXBwZW5kIHRoZSBwYWNrZXRzIHRvIGB4bWl0cWAgZm9yIGxhdGVyIHByb2Nlc3NpbmcuCgpNeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgbWVtb3J5IHNhZmV0eS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaW50cm9kdWNlcyBhbnkgcmlza3MgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeS4gTGV0JiMzOTtzIHRyYWNlIGl0LiBUaGUgcGF0Y2ggcGFzc2VzIGB4bWl0cWAgdG8gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCBmcm9tIGV4aXN0aW5nIGNvbnRleHRzIGxpa2UgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgLCBgdGlwY19za19wcm90b19yY3ZgLCBhbmQgYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLCBpbXBseWluZyB0aGF0IHRoaXMgYHhtaXRxYCBhbHJlYWR5IGhvbGRzIGEgdmFsaWQgdmFsdWUuIEluc2lkZSBgdGlwY19za19wdXNoX2JhY2tsb2dgLCB3ZSBzZWUgdGhlIGZvbGxvd2luZzoKCmBgYGMKJiM0MzsJaWYgKHhtaXRxICZhbXA7JmFtcDsgaW5fb3duX25vZGUobmV0LCBkbm9kZSkpIHsKJiM0MzsJCXNrYl9xdWV1ZV9zcGxpY2VfdGFpbF9pbml0KHR4cSwgeG1pdHEpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CmBgYAoKTG9va2luZyBhdCB0aGUgY29kZSwgaXQmIzM5O3MganVzdCBtb3ZpbmcgU0tCcyBmcm9tIGB0eHFgIHRvIGB4bWl0cWAuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vdGhpbmcgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBuZXcgdmFyaWFibGVzIGFyZSBpbml0aWFsaXplZC4gSXQmIzM5O3MgYSBwdXJlIGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgbWFuYWdlbWVudCBjaGFuZ2UuCgpUaGVyZWZvcmUsIHNpbmNlIHRoaXMgaXMganVzdCBhIHJlLWFycmFuZ2VtZW50IG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucyBvciB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB0aGlzIGlzbiYjMzk7dCBhIEtNU0FOIGlzc3VlLiBUaGUgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBhcmUgb2YgdGhlIHR5cGUgdGhhdCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQgdGVzdGluZzsgbmFtZWx5LCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbG9naWMgZXJyb3JzIChsaWtlIGRyb3BwZWQgb3IgZG91YmxlLXF1ZXVlZCBwYWNrZXRzKS4gQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSB3aWxsIHNldCBgTmVlZHNLTVNBTmAgdG8gYGZhbHNlYC4gSSBjYW4gbm93IGZpbmFsaXplIHRoZSByZWFzb25pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDEzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgdGlwY19za19wdXNoX2JhY2tsb2dgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhbiBhZGRpdGlvbmFsIGB4bWl0cWAgYXJndW1lbnQsIGFsbG93aW5nIGl0IHRvIHNwbGljZSB0aGUgc29ja2V0JiMzOTtzIHdyaXRlIHF1ZXVlIGRpcmVjdGx5IGludG8gdGhlIHRyYW5zbWl0IHF1ZXVlIHdoZW4gc2VuZGluZyB0byB0aGUgc2FtZSBub2RlLCByYXRoZXIgdGhhbiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAuIFRoaXMgaXMgYSBjb250cm9sIGZsb3cgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgY2hhbmdlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBjb3B5aW5nIG9mIGRhdGEgdG8gdXNlciBzcGFjZS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2Ugd291bGQgYmUgcmVsYXRlZCB0byBxdWV1ZSBtYW5hZ2VtZW50IChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbWVtb3J5IGxlYWtzKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgZnVuY3Rpb24gdG8gYWNjZXB0IGFuIGFkZGl0aW9uYWwgYHhtaXRxYCBhcmd1bWVudCwgYWxsb3dpbmcgaXQgdG8gc3BsaWNlIHRoZSBzb2NrZXQmIzM5O3Mgd3JpdGUgcXVldWUgZGlyZWN0bHkgaW50byB0aGUgdHJhbnNtaXQgcXVldWUgd2hlbiBzZW5kaW5nIHRvIHRoZSBzYW1lIG5vZGUsIHJhdGhlciB0aGFuIGNhbGxpbmcgYHRpcGNfbm9kZV94bWl0YC4gVGhpcyBpcyBhIGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgbWFuYWdlbWVudCBjaGFuZ2UuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGNvcHlpbmcgb2YgZGF0YSB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIGNoYW5nZSB3b3VsZCBiZSByZWxhdGVkIHRvIHF1ZXVlIG1hbmFnZW1lbnQgKGUuZy4sIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBtZW1vcnkgbGVha3MpLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI0OjM0LjYxNzk5NTA3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MDQ1MDQ4NzQzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfc2tfcmN2XCIsXG4gICAgXCJ0aXBjX3NrX21jYXN0X3JjdlwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgZnVuY3Rpb24gdG8gYWNjZXB0IGFuIGFkZGl0aW9uYWwgYHhtaXRxYCBhcmd1bWVudCwgYWxsb3dpbmcgaXQgdG8gc3BsaWNlIHRoZSBzb2NrZXQncyB3cml0ZSBxdWV1ZSBkaXJlY3RseSBpbnRvIHRoZSB0cmFuc21pdCBxdWV1ZSB3aGVuIHNlbmRpbmcgdG8gdGhlIHNhbWUgbm9kZSwgcmF0aGVyIHRoYW4gY2FsbGluZyBgdGlwY19ub2RlX3htaXRgLiBUaGlzIGlzIGEgY29udHJvbCBmbG93IGFuZCBxdWV1ZSBtYW5hZ2VtZW50IGNoYW5nZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgY29weWluZyBvZiBkYXRhIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgY2hhbmdlIHdvdWxkIGJlIHJlbGF0ZWQgdG8gcXVldWUgbWFuYWdlbWVudCAoZS5nLiwgdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIG1lbW9yeSBsZWFrcyksIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVElQQyBzb2NrZXQgcmVjZWl2ZSBhbmQgc2h1dGRvd24gcGF0aHMgYnkgY2hhbmdpbmcgaG93IHRoZSBzb2NrZXQgYmFja2xvZyBpcyBwdXNoZWQuIEl0IHNwbGljZXMgdGhlIHRyYW5zbWl0IHF1ZXVlIHRvIGEgcHJvdmlkZWQgeG1pdHEgaW5zdGVhZCBvZiB0cmFuc21pdHRpbmcgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIHNhbWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgVElQQyBzb2NrZXQgbG9naWMgdGhhdCBhZmZlY3RzIG1lc3NhZ2UgdHJhbnNtaXNzaW9uIGFuZCBxdWV1ZSBtYW5hZ2VtZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNDozNC42MTgwMDE4MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjg3ODE3MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0YjA2NDVkNTUxZDhmNGE5ZDc1ZTdkZmMxYjE0MjBhNzZmMmM3MzAzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDEyIDEzOjI0OjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcXG5pbmRleCBlNTY0MzQxZTAyMTZkLi4zM2Q3NDRkYzUxNGY1IDEwMDY0NFxcbi0tLSBhL25ldC90aXBjL3NvY2tldC5jXFxuKysrIGIvbmV0L3RpcGMvc29ja2V0LmNcXG5AQCAtMTU2LDcgKzE1Niw4IEBAIHN0YXRpYyBpbnQgdGlwY19za19pbnNlcnQoc3RydWN0IHRpcGNfc29jayAqdHNrKTtcXG4gc3RhdGljIHZvaWQgdGlwY19za19yZW1vdmUoc3RydWN0IHRpcGNfc29jayAqdHNrKTtcXG4gc3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcXG4gc3RhdGljIGludCBfX3RpcGNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcXG4tc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2Fjayk7XFxuK3N0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSk7XFxuIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApO1xcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcztcXG5AQCAtNTYwLDcgKzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAhdHNrX2Nvbm5fY29uZyh0c2spKSk7XFxuIFxcbiBcXHQvKiBQdXNoIG91dCBkZWxheWVkIG1lc3NhZ2VzIGlmIGluIE5hZ2xlIG1vZGUgKi9cXG4tXFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7XFxuK1xcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIE5VTEwpO1xcbiBcXHQvKiBSZW1vdmUgcGVuZGluZyBTWU4gKi9cXG4gXFx0X19za2JfcXVldWVfcHVyZ2UoXFx1MDAyNnNrLVxcdTAwM2Vza193cml0ZV9xdWV1ZSk7XFxuIFxcbkBAIC0xMjY3LDggKzEyNjgsMTAgQEAgdm9pZCB0aXBjX3NrX21jYXN0X3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmFycnZxLFxcbiBcXG4gLyogdGlwY19za19wdXNoX2JhY2tsb2coKTogc2VuZCBhY2N1bXVsYXRlZCBidWZmZXJzIGluIHNvY2tldCB3cml0ZSBxdWV1ZVxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNvY2tldCBpcyBpbiBOYWdsZSBtb2RlXFxuKyAqIEB4bWl0cTogcmVjZWl2ZSBvdXRwdXQgcXVldWUsIG9yIE5VTEwgb3V0c2lkZSByZWNlaXZlIGNvbnRleHRcXG4gICovXFxuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spXFxuK3N0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSlcXG4ge1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp0eHEgPSBcXHUwMDI2dHNrLVxcdTAwM2Vzay5za193cml0ZV9xdWV1ZTtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHNrYl9wZWVrX3RhaWwodHhxKTtcXG5AQCAtMTMxMCw2ICsxMzEzLDEyIEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spXFxuIFxcdFxcdHRzay1cXHUwMDNlcGt0X2NudCArPSBza2JfcXVldWVfbGVuKHR4cSk7XFxuIFxcdHRzay1cXHUwMDNlc250X3VuYWNrZWQgKz0gdHNrLVxcdTAwM2VzbmRfYmFja2xvZztcXG4gXFx0dHNrLVxcdTAwM2VzbmRfYmFja2xvZyA9IDA7XFxuK1xcbitcXHRpZiAoeG1pdHEgXFx1MDAyNlxcdTAwMjYgaW5fb3duX25vZGUobmV0LCBkbm9kZSkpIHtcXG4rXFx0XFx0c2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQodHhxLCB4bWl0cSk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0cmMgPSB0aXBjX25vZGVfeG1pdChuZXQsIHR4cSwgZG5vZGUsIHRzay1cXHUwMDNlcG9ydGlkKTtcXG4gXFx0aWYgKHJjID09IC1FTElOS0NPTkcpXFxuIFxcdFxcdHRzay1cXHUwMDNlY29uZ19saW5rX2NudCA9IDE7XFxuQEAgLTEzNjcsNyArMTM3Niw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfY29ubl9wcm90b19yY3Yoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIFxcbiBcXHRcXHR3YXNfY29uZyA9IHRza19jb25uX2NvbmcodHNrKTtcXG4tXFx0XFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBtc2dfbmFnbGVfYWNrKGhkcikpO1xcbitcXHRcXHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSwgeG1pdHEpO1xcbiBcXHRcXHR0c2stXFx1MDAzZXNudF91bmFja2VkIC09IG1zZ19jb25uX2FjayhoZHIpO1xcbiBcXHRcXHRpZiAodHNrLVxcdTAwM2VwZWVyX2NhcHMgXFx1MDAyNiBUSVBDX0JMT0NLX0ZMT1dDVEwpXFxuIFxcdFxcdFxcdHRzay1cXHUwMDNlc25kX3dpbiA9IG1zZ19hZHZfd2luKGhkcik7XFxuQEAgLTIxNjUsNyArMjE3NCw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcXG4gXFx0XFx0c21wX3dtYigpO1xcbiBcXHRcXHR0c2stXFx1MDAzZWNvbmdfbGlua19jbnQtLTtcXG4gXFx0XFx0d2FrZXVwID0gdHJ1ZTtcXG4tXFx0XFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7XFxuK1xcdFxcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgR1JPVVBfUFJPVE9DT0w6XFxuIFxcdFxcdHRpcGNfZ3JvdXBfcHJvdG9fcmN2KGdycCwgXFx1MDAyNndha2V1cCwgaGRyLCBpbnB1dHEsIHhtaXRxKTtcXG5AQCAtMjI1Niw3ICsyMjY1LDcgQEAgc3RhdGljIGJvb2wgdGlwY19za19maWx0ZXJfY29ubmVjdChzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0Y2FzZSBUSVBDX0VTVEFCTElTSEVEOlxcbiBcXHRcXHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShcXHUwMDI2c2stXFx1MDAzZXNrX3dyaXRlX3F1ZXVlKSlcXG4tXFx0XFx0XFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSk7XFxuK1xcdFxcdFxcdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UsIHhtaXRxKTtcXG4gXFx0XFx0LyogQWNjZXB0IG9ubHkgY29ubmVjdGlvbi1iYXNlZCBtZXNzYWdlcyBzZW50IGJ5IHBlZXIgKi9cXG4gXFx0XFx0aWYgKGxpa2VseShjb25fbXNnIFxcdTAwMjZcXHUwMDI2ICFlcnIgXFx1MDAyNlxcdTAwMjYgcHBvcnQgPT0gb3BvcnQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgcG5vZGUgPT0gb25vZGUpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI0OjM1Ljk4NzUxNzQxN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMyODg2ODg5NjYyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfc2tfcmN2XCIsXG4gICAgXCJ0aXBjX3NrX21jYXN0X3JjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUSVBDIHNvY2tldCByZWNlaXZlIGFuZCBzaHV0ZG93biBwYXRocyBieSBjaGFuZ2luZyBob3cgdGhlIHNvY2tldCBiYWNrbG9nIGlzIHB1c2hlZC4gSXQgc3BsaWNlcyB0aGUgdHJhbnNtaXQgcXVldWUgdG8gYSBwcm92aWRlZCB4bWl0cSBpbnN0ZWFkIG9mIHRyYW5zbWl0dGluZyBkaXJlY3RseSB3aGVuIHRoZSBkZXN0aW5hdGlvbiBpcyBvbiB0aGUgc2FtZSBub2RlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBUSVBDIHNvY2tldCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVzc2FnZSB0cmFuc21pc3Npb24gYW5kIHF1ZXVlIG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRiMDY0NWQ1NTFkOGY0YTlkNzVlN2RmYzFiMTQyMGE3NmYyYzczMDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxMzoyNDozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcbmluZGV4IGU1NjQzNDFlMDIxNmQuLjMzZDc0NGRjNTE0ZjUgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9zb2NrZXQuY1xuKysrIGIvbmV0L3RpcGMvc29ja2V0LmNcbkBAIC0xNTYsNyArMTU2LDggQEAgc3RhdGljIGludCB0aXBjX3NrX2luc2VydChzdHJ1Y3QgdGlwY19zb2NrICp0c2spO1xuIHN0YXRpYyB2b2lkIHRpcGNfc2tfcmVtb3ZlKHN0cnVjdCB0aXBjX3NvY2sgKnRzayk7XG4gc3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcbiBzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opO1xuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spO1xuK3N0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXG4rXHRcdFx0XHQgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpO1xuIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApO1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHM7XG5AQCAtNTYwLDcgKzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpXG4gXHRcdFx0XHRcdCAgICAhdHNrX2Nvbm5fY29uZyh0c2spKSk7XG4gXG4gXHQvKiBQdXNoIG91dCBkZWxheWVkIG1lc3NhZ2VzIGlmIGluIE5hZ2xlIG1vZGUgKi9cbi1cdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuK1x0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgTlVMTCk7XG4gXHQvKiBSZW1vdmUgcGVuZGluZyBTWU4gKi9cbiBcdF9fc2tiX3F1ZXVlX3B1cmdlKFx1MDAyNnNrLVx1MDAzZXNrX3dyaXRlX3F1ZXVlKTtcbiBcbkBAIC0xMjY3LDggKzEyNjgsMTAgQEAgdm9pZCB0aXBjX3NrX21jYXN0X3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmFycnZxLFxuIFxuIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWVcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNvY2tldCBpcyBpbiBOYWdsZSBtb2RlXG4rICogQHhtaXRxOiByZWNlaXZlIG91dHB1dCBxdWV1ZSwgb3IgTlVMTCBvdXRzaWRlIHJlY2VpdmUgY29udGV4dFxuICAqL1xuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spXG4rc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjayxcbitcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSlcbiB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp0eHEgPSBcdTAwMjZ0c2stXHUwMDNlc2suc2tfd3JpdGVfcXVldWU7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX3BlZWtfdGFpbCh0eHEpO1xuQEAgLTEzMTAsNiArMTMxMywxMiBAQCBzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKVxuIFx0XHR0c2stXHUwMDNlcGt0X2NudCArPSBza2JfcXVldWVfbGVuKHR4cSk7XG4gXHR0c2stXHUwMDNlc250X3VuYWNrZWQgKz0gdHNrLVx1MDAzZXNuZF9iYWNrbG9nO1xuIFx0dHNrLVx1MDAzZXNuZF9iYWNrbG9nID0gMDtcbitcbitcdGlmICh4bWl0cSBcdTAwMjZcdTAwMjYgaW5fb3duX25vZGUobmV0LCBkbm9kZSkpIHtcbitcdFx0c2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQodHhxLCB4bWl0cSk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHJjID0gdGlwY19ub2RlX3htaXQobmV0LCB0eHEsIGRub2RlLCB0c2stXHUwMDNlcG9ydGlkKTtcbiBcdGlmIChyYyA9PSAtRUxJTktDT05HKVxuIFx0XHR0c2stXHUwMDNlY29uZ19saW5rX2NudCA9IDE7XG5AQCAtMTM2Nyw3ICsxMzc2LDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19jb25uX3Byb3RvX3JjdihzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0Z290byBleGl0O1xuIFxuIFx0XHR3YXNfY29uZyA9IHRza19jb25uX2NvbmcodHNrKTtcbi1cdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBtc2dfbmFnbGVfYWNrKGhkcikpO1xuK1x0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSwgeG1pdHEpO1xuIFx0XHR0c2stXHUwMDNlc250X3VuYWNrZWQgLT0gbXNnX2Nvbm5fYWNrKGhkcik7XG4gXHRcdGlmICh0c2stXHUwMDNlcGVlcl9jYXBzIFx1MDAyNiBUSVBDX0JMT0NLX0ZMT1dDVEwpXG4gXHRcdFx0dHNrLVx1MDAzZXNuZF93aW4gPSBtc2dfYWR2X3dpbihoZHIpO1xuQEAgLTIxNjUsNyArMjE3NCw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcbiBcdFx0c21wX3dtYigpO1xuIFx0XHR0c2stXHUwMDNlY29uZ19saW5rX2NudC0tO1xuIFx0XHR3YWtldXAgPSB0cnVlO1xuLVx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbitcdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgeG1pdHEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgR1JPVVBfUFJPVE9DT0w6XG4gXHRcdHRpcGNfZ3JvdXBfcHJvdG9fcmN2KGdycCwgXHUwMDI2d2FrZXVwLCBoZHIsIGlucHV0cSwgeG1pdHEpO1xuQEAgLTIyNTYsNyArMjI2NSw3IEBAIHN0YXRpYyBib29sIHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3Qoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRjYXNlIFRJUENfRVNUQUJMSVNIRUQ6XG4gXHRcdGlmICghc2tiX3F1ZXVlX2VtcHR5KFx1MDAyNnNrLVx1MDAzZXNrX3dyaXRlX3F1ZXVlKSlcbi1cdFx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbitcdFx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7XG4gXHRcdC8qIEFjY2VwdCBvbmx5IGNvbm5lY3Rpb24tYmFzZWQgbWVzc2FnZXMgc2VudCBieSBwZWVyICovXG4gXHRcdGlmIChsaWtlbHkoY29uX21zZyBcdTAwMjZcdTAwMjYgIWVyciBcdTAwMjZcdTAwMjYgcHBvcnQgPT0gb3BvcnQgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgcG5vZGUgPT0gb25vZGUpKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNDozNS45ODc1MTg3MDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDgyNjc3MTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBTb2NrZXQgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG5ldC90aXBjL3NvY2tldC5jYCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBUSVBDIHNvY2tldHMgaGFuZGxlIGJhY2tsb2cuIFRoZSBtb3N0IHNpZ25pZmljYW50IGNoYW5nZSBJIHNlZSBpcyB0aGUgYWRkZWQgYHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxYCBwYXJhbWV0ZXIgdG8gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gVGhhdCdzIGEgY2xlYXIgc2lnbmFsIG9mIGFuIGFyY2hpdGVjdHVyYWwgc2hpZnQuIEknbSBub3RpbmcgdGhhdCB0aGUgZXhpc3RpbmcgY2FsbCBzaXRlcyBhcmUgYmVpbmcgdXBkYXRlZCB0byBwYXNzIGluIHRoaXMgbmV3IGB4bWl0cWAsIG9yIGBOVUxMYCBpbiB0aGUgYF9fdGlwY19zaHV0ZG93bmAgY2FzZS5cblxuVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgdGlwY19za19wdXNoX2JhY2tsb2dgIGl0c2VsZjogdGhpcyBuZXcgY2hlY2sgZm9yIGB4bWl0cWAgYW5kIGBpbl9vd25fbm9kZWAgc3VnZ2VzdHMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIG9yIHBlcmhhcHMgYSBjaGFuZ2UgaW4gaG93IGxvY2FsIGFuZCByZW1vdGUgdHJhbnNtaXNzaW9ucyBhcmUgbWFuYWdlZC4gSWYgYm90aCBjb25kaXRpb25zIGFyZSBtZXQg4oCTIGEgdHJhbnNtaXQgcXVldWUgaXMgcHJvdmlkZWQgKGB4bWl0cWApIGFuZCB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIHNhbWUgbm9kZSDigJMgaXQgc3BsaWNlcyB0aGUgdHJhbnNtaXQgcXVldWUgKGB0eHFgKSBvbnRvIHRoZSBwcm92aWRlZCBgeG1pdHFgIGFuZCByZXR1cm5zLiBObyBmdXJ0aGVyIHByb2Nlc3NpbmcgaXMgcGVyZm9ybWVkIGZvciBsb2NhbCB0cmFuc21pc3Npb25zLlxuXG5UaGlzIHNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IHRvIFRJUEMgc29ja2V0IGhhbmRsaW5nLCBsaWtlbHkgYWltZWQgYXQgaW1wcm92aW5nIGVmZmljaWVuY3kuIFRoaXMgY291bGQgYmUgYWltZWQgYXQgb3B0aW1pemluZyBwZXJmb3JtYW5jZSBvciBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGluIGhvdyBUSVBDIHNvY2tldHMgaGFuZGxlIHRyYW5zbWlzc2lvbiBiYWNrbG9ncy5cblxuVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBLY29uZmlnIGZvciBUSVBDIGFuZCB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGlzIG5ldHdvcmtpbmcgcHJvdG9jb2wuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgaW50ZXJhY3RzIHdpdGggYW55IG90aGVyIGZlYXR1cmVzIG9yIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAxLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MjQ6NDMuNDcwMTk4NzIxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3ODk0MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUSVBDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9LY29uZmlnLTUtXFxubmV0L3RpcGMvS2NvbmZpZzo2Om1lbnVjb25maWcgVElQQ1xcbm5ldC90aXBjL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFRJUEMgUHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTIzLVxcbm5ldC90aXBjL0tjb25maWc6MjQ6Y29uZmlnIFRJUENfTUVESUFfSUJcXG5uZXQvdGlwYy9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIkluZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZy0yOS1cXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxcbm5ldC90aXBjL0tjb25maWc6MzA6Y29uZmlnIFRJUENfTUVESUFfVURQXFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cXHRib29sIFxcXCJJUC9VRFAgbWVkaWEgdHlwZSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZy0zNy1cXG5uZXQvdGlwYy9LY29uZmlnOjM4OmNvbmZpZyBUSVBDX0NSWVBUT1xcbm5ldC90aXBjL0tjb25maWctMzktXFx0Ym9vbCBcXFwiVElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxcbm5ldC90aXBjL0tjb25maWc6NTM6Y29uZmlnIFRJUENfRElBR1xcbm5ldC90aXBjL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIlRJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MjQ6NDMuNTE4MDk4NzYxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI0MTIyNTQwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRJUEMgQ29uZmlndXJhdGlvbiBhbmQgQmFja2xvZyBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGhlcmUgaXMgYFRJUENgLiBNeSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhlIGZ1bmN0aW9uIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4gQWgsIHJpZ2h0LCBJIHNlZSBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IGxpbWl0cyBteSBzY29wZSBvZiBpbnZlc3RpZ2F0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gZmlndXJlIG91dCBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLlxuXG5Mb29raW5nIGF0IHRoZSBjYWxsZXJzLCBJJ3ZlIGdvdCBgX190aXBjX3NodXRkb3duYCwgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgLCBgdGlwY19za19wcm90b19yY3ZgLCBhbmQgYHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3RgLiBOb3csIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIHN0YXRpYywgSSBjYW4ndCBqdXN0IGxvb2sgb3V0c2lkZSB0aGUgZmlsZSB0aGUgZnVuY3Rpb24gaXMgZGVjbGFyZWQgaW4uIEknbSBnb2luZyB0byBxdWlja2x5IHJldmlldyB0aGVzZSBjYWxsZXJzLCBlc3BlY2lhbGx5IHRoZSBub24tc3RhdGljIG9uZXMgKG9yIHRoZWlyIGNhbGxlcnMpIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgZmxvdyBhbmQgZGV0ZXJtaW5lIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IGNoYW5nZXMgd2l0aGluIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IG9mIGVhY2ggY2FsbCB0byBmdWxseSBncmFzcCB0aGUgZnVuY3Rpb24ncyByZXNwb25zaWJpbGl0eSBhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgbW9kaWZpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkwOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNDo0OS43NTkzMjY3OTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwNzQ3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY19za19jb25uX3Byb3RvX3JjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvc29ja2V0LmM9MTI3Mz1zdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMTMyNy0vKipcXG5uZXQvdGlwYy9zb2NrZXQuYzoxMzI4OiAqIHRpcGNfc2tfY29ubl9wcm90b19yY3YgLSByZWNlaXZlIGEgY29ubmVjdGlvbiBtbmcgcHJvdG9jb2wgbWVzc2FnZVxcbm5ldC90aXBjL3NvY2tldC5jLTEzMjktICogQHRzazogcmVjZWl2aW5nIHNvY2tldFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMTMzMy0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoxMzM0OnN0YXRpYyB2b2lkIHRpcGNfc2tfY29ubl9wcm90b19yY3Yoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC90aXBjL3NvY2tldC5jLTEzMzUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjE1Nz1zdGF0aWMgdm9pZCB0aXBjX3NrX3Byb3RvX3JjdihzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTY4LVxcdGNhc2UgQ09OTl9NQU5BR0VSOlxcbm5ldC90aXBjL3NvY2tldC5jOjIxNjk6XFx0XFx0dGlwY19za19jb25uX3Byb3RvX3Jjdih0c2ssIHNrYiwgaW5wdXRxLCB4bWl0cSk7XFxubmV0L3RpcGMvc29ja2V0LmMtMjE3MC1cXHRcXHRyZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI0OjQ5LjgwNTQwNjM5NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MTU2MjY4NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkNhbGxlciBBbmFseXNpcyBmb3IgYSBTdGF0aWMgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgdGlwY19za19wcm90b19yY3ZgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0J3Mgb25seSB2aXNpYmxlIHdpdGhpbiBpdHMgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggbWFrZXMgZGVidWdnaW5nIGEgbGl0dGxlIHRyaWNraWVyLCBidXQgYWxzbyBmb2N1c2VzIG15IHNlYXJjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiTGV0J3MgZmluZCBvdXQgd2hvJ3MgY2FsbGluZyBpdFwiLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIEknbGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgdG8gbG9jYXRlIGFsbCB0aGUgY2FsbCBzaXRlcyB0byBnZXQgYSBncmFzcCBvZiBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgZGF0YSBmbG93LiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsZXJzIHdpbGwgcHJvdmlkZSB2YWx1YWJsZSBpbnNpZ2h0cyBpbnRvIHdoYXQgdGhpcyBmdW5jdGlvbiAqZG9lcyouXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNDo1NC4zMjEwMzYxNzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzNDI1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY19za19wcm90b19yY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTQwMz1zdGF0aWMgaW50IHRpcGNfc2tfc29ja19lcnIoc3RydWN0IHNvY2tldCAqc29jaywgbG9uZyAqdGltZW91dClcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTQzMS1cXHR3aGlsZSAoKHJjXyA9ICEoY29uZGl0aW9uXykpKSB7XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXFxcXG5uZXQvdGlwYy9zb2NrZXQuYzo0MzI6XFx0XFx0LyogY291cGxlZCB3aXRoIHNtcF93bWIoKSBpbiB0aXBjX3NrX3Byb3RvX3JjdigpICovICAgICAgICAgICAgXFxcXFxcbm5ldC90aXBjL3NvY2tldC5jLTQzMy1cXHRcXHRzbXBfcm1iKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0yMTUyPXN0YXRpYyB2b2lkIHRpcGNfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yMTU2LVxcbm5ldC90aXBjL3NvY2tldC5jOjIxNTc6c3RhdGljIHZvaWQgdGlwY19za19wcm90b19yY3Yoc3RydWN0IHNvY2sgKnNrLFxcbm5ldC90aXBjL3NvY2tldC5jLTIxNTgtXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjM0Nz1zdGF0aWMgdm9pZCB0aXBjX3NrX2ZpbHRlcl9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjM2NC1cXHRpZiAodW5saWtlbHkoIW1zZ19pc2RhdGEoaGRyKSkpXFxubmV0L3RpcGMvc29ja2V0LmM6MjM2NTpcXHRcXHR0aXBjX3NrX3Byb3RvX3JjdihzaywgXFx1MDAyNmlucHV0cSwgeG1pdHEpO1xcbm5ldC90aXBjL3NvY2tldC5jLTIzNjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI0OjU0LjM2NTM4MjgyNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODExODA1ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkNhbGxlciBEaXNjb3ZlcnkgZm9yIGEgU3RhdGljIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHRpcGNfc2tfZmlsdGVyX3JjdmAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXQncyBvbmx5IHZpc2libGUgd2l0aGluIGl0cyBjb21waWxhdGlvbiB1bml0LCB3aGljaCBtYWtlcyBmaWd1cmluZyBvdXQgd2hlcmUgaXQncyAqYWN0dWFsbHkqIHVzZWQgYSBiaXQgdHJpY2tpZXIuIFRoZSBzdGFuZGFyZCB0b29scyB3b24ndCBqdXN0IGltbWVkaWF0ZWx5IHBvaW50IG1lIHRvIGV2ZXJ5IGNhbGwgc2l0ZSBhY3Jvc3MgdGhlIHdob2xlIGNvZGViYXNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3MgdHJhY2sgZG93biBhbGwgdGhlIGNhbGxzIHRvIGl0LiBLbm93aW5nIHRoZSBjYWxsZXJzIGlzICpjcnVjaWFsKiBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSwgcG90ZW50aWFsIGltcGFjdCwgYW5kIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhpcyBUSVBDIGtlcm5lbCBtb2R1bGUuIFVuZGVyc3RhbmRpbmcgd2hvJ3MgY2FsbGluZyBpdCBpcyB0aGUgZmlyc3Qgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE4MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI0OjU4Ljc0NjU2NTk0NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1NTY3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY19za19maWx0ZXJfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz0yMzE5PXN0YXRpYyB1bnNpZ25lZCBpbnQgcmN2YnVmX2xpbWl0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTIzMzYtLyoqXFxubmV0L3RpcGMvc29ja2V0LmM6MjMzNzogKiB0aXBjX3NrX2ZpbHRlcl9yY3YgLSB2YWxpZGF0ZSBpbmNvbWluZyBtZXNzYWdlXFxubmV0L3RpcGMvc29ja2V0LmMtMjMzOC0gKiBAc2s6IHNvY2tldFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjM0Ni0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoyMzQ3OnN0YXRpYyB2b2lkIHRpcGNfc2tfZmlsdGVyX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L3RpcGMvc29ja2V0LmMtMjM0OC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yMzU4LVxcbm5ldC90aXBjL3NvY2tldC5jOjIzNTk6XFx0dHJhY2VfdGlwY19za19maWx0ZXJfcmN2KHNrLCBza2IsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmMtMjM2MC1cXHRUSVBDX1NLQl9DQihza2IpLVxcdTAwM2VieXRlc19yZWFkID0gMDtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI0MTI9c3RhdGljIGludCB0aXBjX3NrX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTI0MTktXFxubmV0L3RpcGMvc29ja2V0LmM6MjQyMDpcXHR0aXBjX3NrX2ZpbHRlcl9yY3Yoc2ssIHNrYiwgXFx1MDAyNnhtaXRxKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDIxLVxcdGFkZGVkID0gc2tfcm1lbV9hbGxvY19nZXQoc2spIC0gYmVmb3JlO1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjQzOT1zdGF0aWMgdm9pZCB0aXBjX3NrX2VucXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxLCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDU3LVxcdFxcdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSkge1xcbm5ldC90aXBjL3NvY2tldC5jOjI0NTg6XFx0XFx0XFx0dGlwY19za19maWx0ZXJfcmN2KHNrLCBza2IsIHhtaXRxKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDU5LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubmV0L3RpcGMvdHJhY2UuaD0yMjc9REVGSU5FX1NLX0VWRU5UX0ZJTFRFUih0aXBjX3NrX3BvbGwpO1xcbm5ldC90aXBjL3RyYWNlLmg6MjI4OkRFRklORV9TS19FVkVOVF9GSUxURVIodGlwY19za19maWx0ZXJfcmN2KTtcXG5uZXQvdGlwYy90cmFjZS5oLTIyOS1ERUZJTkVfU0tfRVZFTlRfRklMVEVSKHRpcGNfc2tfYWR2YW5jZV9yeCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI0OjU4Ljc5MTEyNzMxNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzMzMjA5NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIGB0aXBjX3NrX2VucXVldWVgIGFuZCBgdGlwY19za19iYWNrbG9nX3JjdmAqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHNwb3R0ZWQgYHRpcGNfc2tfZW5xdWV1ZWAgYW5kIGB0aXBjX3NrX2JhY2tsb2dfcmN2YCDigJMgYW5kIGl0J3MgZmxhZ2dlZCB0aGF0IHRoZXkncmUgYHN0YXRpY2AuIEltbWVkaWF0ZWx5LCB0aGF0IHNwYXJrcyBteSBjdXJpb3NpdHkuIFN0YXRpYyBmdW5jdGlvbnMgYXJlLCBieSBkZWZpbml0aW9uLCBsaW1pdGVkIGluIHRoZWlyIHNjb3BlLiBUaGV5J3JlIGludGVybmFsIHRvIHRoZWlyIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIG1lYW5zIHRoZWlyIHVzYWdlIHNob3VsZCBiZSBjb250YWluZWQuIFRoaXMgbWFrZXMgdGhlbSBnb29kIGNhbmRpZGF0ZXMgZm9yIGRlZXBlciBhbmFseXNpcywgYW5kIGl0IHNob3VsZCBzaW1wbGlmeSB0cmFja2luZyB3aGVyZSB0aGV5IGFyZSB1c2VkLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbGwgdGhlIHBvaW50cyBpbiB0aGUgY29kZSB3aGVyZSB0aGVzZSB0d28gZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgd2hvJ3MgaW52b2tpbmcgdGhlbSBpcyBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIHRoZWlyIHB1cnBvc2UgYW5kIGltcGFjdCB3aXRoaW4gdGhlIGxhcmdlciBUSVBDIHN1YnN5c3RlbS4gTGV0J3MgdHJhY2UgdGhlaXIgY2FsbGVycyBhbmQgc2VlIHdoZXJlIHRoZXkgZml0IGluLiBJJ2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIG1ldGhvZHMsIHdoZXRoZXIgdGhhdCdzIGBncmVwYCwgYGNzY29wZWAsIGBjbGFuZ2RgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhbmQgbWFrZSBzdXJlIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgb2YgdGhlIGNhbGxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDIwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MjU6MDMuNTI0MzM5Mzc0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzgxNzYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NrX2VucXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTI0MTI9c3RhdGljIGludCB0aXBjX3NrX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTI0MjktLyoqXFxubmV0L3RpcGMvc29ja2V0LmM6MjQzMDogKiB0aXBjX3NrX2VucXVldWUgLSBleHRyYWN0IGFsbCBidWZmZXJzIHdpdGggZGVzdGluYXRpb24gJ2Rwb3J0JyBmcm9tXFxubmV0L3RpcGMvc29ja2V0LmMtMjQzMS0gKiAgICAgICAgICAgICAgICAgICBpbnB1dHEgYW5kIHRyeSBhZGRpbmcgdGhlbSB0byBzb2NrZXQgb3IgYmFja2xvZyBxdWV1ZVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjQzOC0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDM5OnN0YXRpYyB2b2lkIHRpcGNfc2tfZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICppbnB1dHEsIHN0cnVjdCBzb2NrICpzayxcXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDQwLVxcdFxcdFxcdCAgICB1MzIgZHBvcnQsIHN0cnVjdCBza19idWZmX2hlYWQgKnhtaXRxKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MjQ5Mz12b2lkIHRpcGNfc2tfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxKVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjUwOS1cXHRcXHRcXHRpZiAobGlrZWx5KHNwaW5fdHJ5bG9ja19iaChcXHUwMDI2c2stXFx1MDAzZXNrX2xvY2suc2xvY2spKSkge1xcbm5ldC90aXBjL3NvY2tldC5jOjI1MTA6XFx0XFx0XFx0XFx0dGlwY19za19lbnF1ZXVlKGlucHV0cSwgc2ssIGRwb3J0LCBcXHUwMDI2eG1pdHEpO1xcbm5ldC90aXBjL3NvY2tldC5jLTI1MTEtXFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnNrLVxcdTAwM2Vza19sb2NrLnNsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MjU6MDMuNTY4MTczMDQ0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzEwODY4MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgVElQQyBTb2NrZXQgUmVjZWl2ZSBQYXRoKipcblxuUmlnaHQsIGB0aXBjX3NrX3JjdmAgaXNuJ3Qgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhIGZ1bmN0aW9uIHRoYXQncyBlaXRoZXIgZXhwb3J0ZWQgZm9yIHVzZSBlbHNld2hlcmUgb3IsIG1vcmUgbGlrZWx5LCBpcyBjYWxsZWQgZnJvbSBhbm90aGVyIHBhcnQgb2YgdGhlIFRJUEMgc3Vic3lzdGVtLiBUaGF0J3Mga2V5LiBXZSBrbm93IHRoZSBmdW5jdGlvbiBpc24ndCBpc29sYXRlZC4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIHdoZXJlIGlzIGl0IGNhbGxlZCBmcm9tPyBMZXQncyB0cmFjZSB0aGlzIGJhY2suIEdpdmVuIGl0cyBuYW1lLCBpdCdzIGxpa2VseSBpbnZvbHZlZCBpbiB0aGUgcmVjZWl2ZSBwYXRoLiBgdGlwY19za19iYWNrbG9nX3JjdmAgbG9va3MgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHBvaW50IHRvIGludmVzdGlnYXRlLiBJdCBjb3VsZCBiZSBwYXJ0IG9mIGEgYmFja2xvZyBtZWNoYW5pc20sIHBvdGVudGlhbGx5IGZlZWRpbmcgaW50byBgdGlwY19za19yY3ZgLiBUaGlzIGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2OTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNTowNy43MzkyNjI1ODdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODU5NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpcGNfc2tfYmFja2xvZ19yY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTExMD1zdHJ1Y3QgdGlwY19zb2NrIHtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTE0NC1cXG5uZXQvdGlwYy9zb2NrZXQuYzoxNDU6c3RhdGljIGludCB0aXBjX3NrX2JhY2tsb2dfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxubmV0L3RpcGMvc29ja2V0LmMtMTQ2LXN0YXRpYyB2b2lkIHRpcGNfZGF0YV9yZWFkeShzdHJ1Y3Qgc29jayAqc2spO1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9NDYwPXN0YXRpYyBpbnQgdGlwY19za19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtNTE4LVxcdHNrLVxcdTAwM2Vza19zaHV0ZG93biA9IDA7XFxubmV0L3RpcGMvc29ja2V0LmM6NTE5OlxcdHNrLVxcdTAwM2Vza19iYWNrbG9nX3JjdiA9IHRpcGNfc2tfYmFja2xvZ19yY3Y7XFxubmV0L3RpcGMvc29ja2V0LmMtNTIwLVxcdHNrLVxcdTAwM2Vza19yY3ZidWYgPSBSRUFEX09OQ0Uoc3lzY3RsX3RpcGNfcm1lbVsxXSk7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0yMzQ3PXN0YXRpYyB2b2lkIHRpcGNfc2tfZmlsdGVyX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yNDA1LS8qKlxcbm5ldC90aXBjL3NvY2tldC5jOjI0MDY6ICogdGlwY19za19iYWNrbG9nX3JjdiAtIGhhbmRsZSBpbmNvbWluZyBtZXNzYWdlIGZyb20gYmFja2xvZyBxdWV1ZVxcbm5ldC90aXBjL3NvY2tldC5jLTI0MDctICogQHNrOiBzb2NrZXRcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTI0MTEtICovXFxubmV0L3RpcGMvc29ja2V0LmM6MjQxMjpzdGF0aWMgaW50IHRpcGNfc2tfYmFja2xvZ19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC90aXBjL3NvY2tldC5jLTI0MTMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNTowNy43ODMxMjU3NjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU2Mjc2OTcxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUSVBDIFNvY2tldCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIG92ZXIgdGhpcyBUSVBDIHNvY2tldCBwYXRjaCwgYW5kIGhlcmUncyBteSB0YWtlLiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYHRpcGNfc2tfYmFja2xvZ19yY3ZgIGFuZCBgc2stXHUwMDNlc2tfYmFja2xvZ19yY3ZgIHdpdGhpbiBgdGlwY19za19jcmVhdGVgLiBUaGF0IHRlbGxzIG1lIHdlJ3JlIGxvb2tpbmcgYXQgZnVuY3Rpb25zIGV4cG9zZWQgdmlhIHN0YW5kYXJkIHNvY2tldCBvcGVyYXRpb25zLiBUaGlzIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCwgdGhlIGZ1bmN0aW9uIGNhbGxlZCB0byBwcm9jZXNzIGluY29taW5nIG1lc3NhZ2VzLiBUaGUgdXBkYXRlIGludHJvZHVjZXMgdGhlIGB4bWl0cWAgdmFyaWFibGUgYW5kIGNvbmRpdGlvbmFsbHkgc3BsaWNlcyB0aGUgYHR4cWAgdG8gYHhtaXRxYCBpZiB0aGUgZGVzdGluYXRpb24gbm9kZSBpcyB0aGUgc2FtZS4gVGhpcyBsaWtlbHkgYWZmZWN0cyBob3cgTmFnbGUncyBhbGdvcml0aG0gaW50ZXJhY3RzIHdpdGggYmFja2xvZyBwcm9jZXNzaW5nLiBUaGlzIGlzIGNvcmUgc29ja2V0IGxvZ2ljIHRoYXQgaGFzIGNoYW5nZWQsIHNvIGZ1enppbmcgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGh3aGlsZS5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gc29tZSBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gdGFyZ2V0IGZvciBmdXp6aW5nLiBgdGlwY19za19yY3ZgIGlzIGFuIG9idmlvdXMgY2hvaWNlIHNpbmNlIGl0J3MgZGlyZWN0bHkgcmVsYXRlZCB0byByZWNlaXZpbmcgZGF0YS4gYHRpcGNfc2tfY3JlYXRlYCBpcyB0aGUgc29ja2V0IGNyZWF0aW9uIGZ1bmN0aW9uLCBzbyB3ZSBuZWVkIHRvIGhpdCB0aGF0IGZvciB0ZXN0IHNldHVwLiBDb25zaWRlcmluZyB0aGUgY2hhbmdlcywgSSBzaG91bGQgY2hlY2sgdGhlIGZ1bmN0aW9ucyB0aGF0IGludGVyYWN0IHdpdGggdGhlIHBhdGNoJ3MgY2hhbmdlcyBzdWNoIGFzIGB0aXBjX3NlbmRtc2dgIGFuZCBgdGlwY19zZW5kc3RyZWFtYC4gVGhlIHBhdGNoIHRvdWNoZXMgYF9fdGlwY19zaHV0ZG93bmAsIHdoaWNoIGNhbGxzIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AuIGB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2YCwgYHRpcGNfc2tfcHJvdG9fcmN2YCwgYW5kIGB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0YCBhcmUgYWxzbyBwb3RlbnRpYWxseSBpbnZvbHZlZC4gTGV0J3Mgc2VlIHdoYXQgY2FsbHMgdGhlc2UgZnVuY3Rpb25zLlxuXG5gdGlwY19za19yY3ZgIGlzIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGdvb2Q7IGl0J3MgbGlrZWx5IGNhbGxlZCBmcm9tIG91dHNpZGUuIEFsc28sIGB0aXBjX3NrX21jYXN0X3JjdmAgaXMgbm9uLXN0YXRpYyBhbmQgcHJvYmFibHkgY2FuIGJlIHVzZWQgdG9vLiBgdGlwY19zZW5kbXNnYCBhbmQgYHRpcGNfc2VuZHN0cmVhbWAgYXJlIHN0YW5kYXJkIHNvY2tldCBvcGVyYXRpb25zLiBMZXQncyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gYHRpcGNfc2tfcmN2YCBhbmQgZmlndXJlIG91dCBob3cgdG8gZnV6eiBpdCBlZmZlY3RpdmVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM5MiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyNToxNi4zNDU4OTc4MDFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTkwMDM2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NrX3JjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvYmNhc3QuYz00MzY9aW50IHRpcGNfYmNhc3RfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfbGluayAqbCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL2JjYXN0LmMtNDYwLVxcdGlmICghc2tiX3F1ZXVlX2VtcHR5KGlucHV0cSkpXFxubmV0L3RpcGMvYmNhc3QuYzo0NjE6XFx0XFx0dGlwY19za19yY3YobmV0LCBpbnB1dHEpO1xcbm5ldC90aXBjL2JjYXN0LmMtNDYyLVxcbi0tXFxubmV0L3RpcGMvYmNhc3QuYz00NzA9dm9pZCB0aXBjX2JjYXN0X2Fja19yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY19saW5rICpsLFxcbi0tXFxubmV0L3RpcGMvYmNhc3QuYy00OTAtXFx0aWYgKCFza2JfcXVldWVfZW1wdHkoaW5wdXRxKSlcXG5uZXQvdGlwYy9iY2FzdC5jOjQ5MTpcXHRcXHR0aXBjX3NrX3JjdihuZXQsIGlucHV0cSk7XFxubmV0L3RpcGMvYmNhc3QuYy00OTItfVxcbi0tXFxubmV0L3RpcGMvYmNhc3QuYz00OTg9aW50IHRpcGNfYmNhc3Rfc3luY19yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY19saW5rICpsLFxcbi0tXFxubmV0L3RpcGMvYmNhc3QuYy01MzItXFx0aWYgKCFza2JfcXVldWVfZW1wdHkoaW5wdXRxKSlcXG5uZXQvdGlwYy9iY2FzdC5jOjUzMzpcXHRcXHR0aXBjX3NrX3JjdihuZXQsIGlucHV0cSk7XFxubmV0L3RpcGMvYmNhc3QuYy01MzQtXFx0cmV0dXJuIHJjO1xcbi0tXFxubmV0L3RpcGMvYmNhc3QuYz01NTc9dm9pZCB0aXBjX2JjYXN0X3JlbW92ZV9wZWVyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfbGluayAqcmN2X2wpXFxuLS1cXG5uZXQvdGlwYy9iY2FzdC5jLTU3NC1cXHRpZiAoIXNrYl9xdWV1ZV9lbXB0eShpbnB1dHEpKVxcbm5ldC90aXBjL2JjYXN0LmM6NTc1OlxcdFxcdHRpcGNfc2tfcmN2KG5ldCwgaW5wdXRxKTtcXG5uZXQvdGlwYy9iY2FzdC5jLTU3Ni19XFxuLS1cXG5uZXQvdGlwYy9ub2RlLmM9MTA2Mj1zdGF0aWMgdm9pZCB0aXBjX25vZGVfbGlua19kb3duKHN0cnVjdCB0aXBjX25vZGUgKm4sIGludCBiZWFyZXJfaWQsIGJvb2wgZGVsZXRlKVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTEwOTMtXFx0XFx0dGlwY19iZWFyZXJfeG1pdChuLVxcdTAwM2VuZXQsIGJlYXJlcl9pZCwgXFx1MDAyNnhtaXRxLCBtYWRkciwgbik7XFxubmV0L3RpcGMvbm9kZS5jOjEwOTQ6XFx0dGlwY19za19yY3Yobi1cXHUwMDNlbmV0LCBcXHUwMDI2bGUtXFx1MDAzZWlucHV0cSk7XFxubmV0L3RpcGMvbm9kZS5jLTEwOTUtfVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jPTE2Mjc9c3RhdGljIHZvaWQgdGlwY19seGNfeG1pdChzdHJ1Y3QgbmV0ICpwZWVyX25ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdClcXG4tLVxcbm5ldC90aXBjL25vZGUuYy0xNjQwLVxcdFxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZsaXN0LVxcdTAwM2Vsb2NrKTtcXG5uZXQvdGlwYy9ub2RlLmM6MTY0MTpcXHRcXHRcXHR0aXBjX3NrX3JjdihwZWVyX25ldCwgbGlzdCk7XFxubmV0L3RpcGMvbm9kZS5jLTE2NDItXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTE2NjUtXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmxpc3QtXFx1MDAzZWxvY2spO1xcbm5ldC90aXBjL25vZGUuYzoxNjY2OlxcdFxcdHRpcGNfc2tfcmN2KHBlZXJfbmV0LCBsaXN0KTtcXG5uZXQvdGlwYy9ub2RlLmMtMTY2Ny1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvdGlwYy9ub2RlLmM9MTY4Nz1pbnQgdGlwY19ub2RlX3htaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LFxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTE3MDAtXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmxpc3QtXFx1MDAzZWxvY2spO1xcbm5ldC90aXBjL25vZGUuYzoxNzAxOlxcdFxcdHRpcGNfc2tfcmN2KG5ldCwgbGlzdCk7XFxubmV0L3RpcGMvbm9kZS5jLTE3MDItXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvdGlwYy9ub2RlLmM9MjA4Nj12b2lkIHRpcGNfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRpcGNfYmVhcmVyICpiKVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTIyMDItXFx0aWYgKCFza2JfcXVldWVfZW1wdHkoXFx1MDAyNmxlLVxcdTAwM2VpbnB1dHEpKVxcbm5ldC90aXBjL25vZGUuYzoyMjAzOlxcdFxcdHRpcGNfc2tfcmN2KG5ldCwgXFx1MDAyNmxlLVxcdTAwM2VpbnB1dHEpO1xcbm5ldC90aXBjL25vZGUuYy0yMjA0LVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MTE5Mj12b2lkIHRpcGNfc2tfbWNhc3RfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqYXJydnEsXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0xMjY1LVxcdH1cXG5uZXQvdGlwYy9zb2NrZXQuYzoxMjY2OlxcdHRpcGNfc2tfcmN2KG5ldCwgaW5wdXRxKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0xMjY3LX1cXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI0Mzk9c3RhdGljIHZvaWQgdGlwY19za19lbnF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjQ4Ni0vKipcXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDg3OiAqIHRpcGNfc2tfcmN2IC0gaGFuZGxlIGEgY2hhaW4gb2YgaW5jb21pbmcgYnVmZmVyc1xcbm5ldC90aXBjL3NvY2tldC5jLTI0ODgtICogQG5ldDogdGhlIGFzc29jaWF0ZWQgbmV0d29yayBuYW1lc3BhY2VcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTI0OTItICovXFxubmV0L3RpcGMvc29ja2V0LmM6MjQ5Mzp2b2lkIHRpcGNfc2tfcmN2KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqaW5wdXRxKVxcbm5ldC90aXBjL3NvY2tldC5jLTI0OTQte1xcbi0tXFxubmV0L3RpcGMvc29ja2V0Lmg9NTU9dm9pZCB0aXBjX3NvY2tldF9zdG9wKHZvaWQpO1xcbm5ldC90aXBjL3NvY2tldC5oOjU2OnZvaWQgdGlwY19za19yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICppbnB1dHEpO1xcbm5ldC90aXBjL3NvY2tldC5oLTU3LXZvaWQgdGlwY19za19tY2FzdF9yY3Yoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICphcnJ2cSxcXG4tLVxcbm5ldC90aXBjL3RvcHNydi5jPTYxND1zdGF0aWMgdm9pZCB0aXBjX3RvcHNydl9rZXJuX2V2dChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2V2ZW50ICpldnQpXFxuLS1cXG5uZXQvdGlwYy90b3BzcnYuYy02MjktXFx0dGlwY19sb29wYmFja190cmFjZShuZXQsIFxcdTAwMjZldnRxKTtcXG5uZXQvdGlwYy90b3BzcnYuYzo2MzA6XFx0dGlwY19za19yY3YobmV0LCBcXHUwMDI2ZXZ0cSk7XFxubmV0L3RpcGMvdG9wc3J2LmMtNjMxLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MjU6MTYuOTA3ODAyNDQ2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0Mzg0ODA4OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBTb2NrZXQgUmVjZWl2ZSBQYXRoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBjb3JlIG9mIFRJUEMgc29ja2V0IG1lc3NhZ2UgaGFuZGxpbmcuIGB0aXBjX3NrX3JjdmAgaXMgdGhlIG1haW4gZnVuY3Rpb24gZm9yIHJlY2VpdmluZyBtZXNzYWdlcyBpbnRvIHNvY2tldHMsIGFuZCBgdGlwY19za19tY2FzdF9yY3ZgIGhhbmRsZXMgbXVsdGljYXN0IHNwZWNpZmljYWxseS4gVHJhbnNtaXNzaW9uIGhhcHBlbnMgdmlhIGB0aXBjX25vZGVfeG1pdGAuXG5cblRoZSBwYXRjaCBtb2RpZmllcyBgdGlwY19za19wdXNoX2JhY2tsb2dgLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEga2V5IGFyZWEuIE5vdywgKndobyogY2FsbHMgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYD8gVGhlIHRleHQgbGlzdHMgYSBudW1iZXIgb2YgY2FsbGVyczogYF9fdGlwY19zaHV0ZG93bmAsIGB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2YCwgYHRpcGNfc2tfcHJvdG9fcmN2YCwgYW5kIGB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0YC4gSG1tLCB0aGVzZSBhcmUgYWxsIGludGVyZXN0aW5nIGJlY2F1c2UgdGhleSdyZSAqZGlyZWN0bHkqIGludm9sdmVkIGluIHNvY2tldCByZWNlaXZlIG9yIHNodXRkb3duIG9wZXJhdGlvbnMuIEl0J3MgYSBjbGVhciBmbG93OiBgdGlwY19za19yY3ZgIGNhbGxzIGB0aXBjX3NrX2VucXVldWVgLCB3aGljaCBsZWFkcyB0byBgdGlwY19za19maWx0ZXJfcmN2YCwgd2hpY2ggdGhlbiBkaXNwYXRjaGVzIHRvIGB0aXBjX3NrX3Byb3RvX3JjdmAgb3IgYHRpcGNfc2tfY29ubl9wcm90b19yY3ZgIG9yIGB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0YC4gVGhlIG90aGVyIGNhbGwgcGF0aCBjb21lcyBmcm9tIGBfX3RpcGNfc2h1dGRvd25gLiBUaGlzIGNsZWFybHkgbWVhbnMgdGhhdCBgdGlwY19za19yY3ZgIGFuZCB0aGUgc2h1dGRvd24gc2VxdWVuY2UgYXJlIGltcG9ydGFudCBlbnRyeSBwb2ludHMgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHBhdGNoJ3MgZWZmZWN0cy4gRXhjZWxsZW50LCBgdGlwY19za19yY3ZgIGlzIGEgZ29vZCBmb2N1cy4gQW5kIG9mIGNvdXJzZSwgdGhlIHNodXRkb3duIGlzIHJlbGV2YW50IGFzIHdlbGwuXG5cbldhaXQgYSBzZWNvbmQuIGBfX3RpcGNfc2h1dGRvd25gIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0IGNhbid0IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIHNvdXJjZSBmaWxlIGl0J3MgZGVjbGFyZWQgaW4uIFNvLCB0byBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2Ygc2h1dGRvd24gYmVoYXZpb3VyLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBub24tc3RhdGljIGZ1bmN0aW9uIHdyYXBzIGBfX3RpcGNfc2h1dGRvd25gLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGUgcGF0Y2ggaXMgYWZmZWN0aW5nIHRoZSBlbnRyeSBwb2ludCBmdW5jdGlvbiBvZiB0aGUgc2h1dGRvd24gYmVoYXZpb3VyLiBUaW1lIHRvIGdvIGh1bnRpbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MDMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MjU6MzEuMjkyNjE1OTA1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjA1MDAxMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX190aXBjX3NodXRkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz01NDI9c3RhdGljIHZvaWQgdGlwY19za19jYWxsYmFjayhzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy01NDktLyogQ2FsbGVyIHNob3VsZCBob2xkIHNvY2tldCBsb2NrIGZvciB0aGUgc29ja2V0LiAqL1xcbm5ldC90aXBjL3NvY2tldC5jOjU1MDpzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxcbm5ldC90aXBjL3NvY2tldC5jLTU1MS17XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz02MjY9c3RhdGljIGludCB0aXBjX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTY0MS1cXHR0cmFjZV90aXBjX3NrX3JlbGVhc2Uoc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmM6NjQyOlxcdF9fdGlwY19zaHV0ZG93bihzb2NrLCBUSVBDX0VSUl9OT19QT1JUKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy02NDMtXFx0c2stXFx1MDAzZXNrX3NodXRkb3duID0gU0hVVERPV05fTUFTSztcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI4MDk9c3RhdGljIGludCB0aXBjX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBob3cpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yODE5LVxcdHRyYWNlX3RpcGNfc2tfc2h1dGRvd24oc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmM6MjgyMDpcXHRfX3RpcGNfc2h1dGRvd24oc29jaywgVElQQ19DT05OX1NIVVRET1dOKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yODIxLVxcdHNrLVxcdTAwM2Vza19zaHV0ZG93biA9IFNIVVRET1dOX01BU0s7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI1OjMyLjA1MzEyMjE2OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjgxMjM1MzU5OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW5uZXIgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIFNvY2tldCBPcGVyYXRpb25zIGluIFRJUEMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkcmlsbCBkb3duIGludG8gdGhlc2UgVElQQyBzb2NrZXQgb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIGB0aXBjX3JlbGVhc2VgIGFuZCBgdGlwY19zaHV0ZG93bmAgYXJlIGNvcnJlY3RseSB3aXJlZCB1cC4gSSBrbm93IHRoZXkncmUgdGhlIG5vbi1zdGF0aWMgb25lcyDigJMgdGhlIG9uZXMgZGVhbGluZyB3aXRoIHRoZSBzb2NrZXQgaW5zdGFuY2UgaXRzZWxmIHJhdGhlciB0aGFuIGp1c3QgdGhlIHVuZGVybHlpbmcgcHJvdG9jb2wuIE15IGltbWVkaWF0ZSBjaGVjayBoYXMgdG8gYmUgdGhlIGBwcm90b19vcHNgIHN0cnVjdHVyZS4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZnVuZGFtZW50YWwgc29ja2V0IG9wZXJhdGlvbnMgYXJlIGRlZmluZWQuIEkgaGF2ZSB0byB2ZXJpZnkgdGhhdCB0aGVzZSB0d28gZnVuY3Rpb25zLCBgdGlwY19yZWxlYXNlYCBhbmQgYHRpcGNfc2h1dGRvd25gLCBhcmUgYWN0dWFsbHkgYXNzaWduZWQgd2l0aGluIHRoYXQgc3RydWN0dXJlLiBUaGF0IGlzIHRoZSBjcml0aWNhbCBwbGFjZSB0byBlbnN1cmUgcHJvcGVyIHNvY2tldCBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVElQQyBmcmFtZXdvcmsuIElmIHRoZXkgYXJlIG5vdCBpbiB0aGUgYHByb3RvX29wc2Agc3RydWN0dXJlLCB3ZSdyZSBpbiB0cm91YmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg5MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI5OjIwLjE3NjY2MjEwNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MDUyNjkwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3NodXRkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9zb2NrZXQuYz01NDI9c3RhdGljIHZvaWQgdGlwY19za19jYWxsYmFjayhzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy01NDktLyogQ2FsbGVyIHNob3VsZCBob2xkIHNvY2tldCBsb2NrIGZvciB0aGUgc29ja2V0LiAqL1xcbm5ldC90aXBjL3NvY2tldC5jOjU1MDpzdGF0aWMgdm9pZCBfX3RpcGNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGVycm9yKVxcbm5ldC90aXBjL3NvY2tldC5jLTU1MS17XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz02MjY9c3RhdGljIGludCB0aXBjX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTY0MS1cXHR0cmFjZV90aXBjX3NrX3JlbGVhc2Uoc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmM6NjQyOlxcdF9fdGlwY19zaHV0ZG93bihzb2NrLCBUSVBDX0VSUl9OT19QT1JUKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy02NDMtXFx0c2stXFx1MDAzZXNrX3NodXRkb3duID0gU0hVVERPV05fTUFTSztcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI3Mjk9c3RhdGljIGludCB0aXBjX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdfc29jayxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTI4MDAtLyoqXFxubmV0L3RpcGMvc29ja2V0LmM6MjgwMTogKiB0aXBjX3NodXRkb3duIC0gc2h1dGRvd24gc29ja2V0IGNvbm5lY3Rpb25cXG5uZXQvdGlwYy9zb2NrZXQuYy0yODAyLSAqIEBzb2NrOiBzb2NrZXQgc3RydWN0dXJlXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yODA4LSAqL1xcbm5ldC90aXBjL3NvY2tldC5jOjI4MDk6c3RhdGljIGludCB0aXBjX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBob3cpXFxubmV0L3RpcGMvc29ja2V0LmMtMjgxMC17XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0yODE5LVxcdHRyYWNlX3RpcGNfc2tfc2h1dGRvd24oc2ssIE5VTEwsIFRJUENfRFVNUF9BTEwsIFxcXCIgXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmM6MjgyMDpcXHRfX3RpcGNfc2h1dGRvd24oc29jaywgVElQQ19DT05OX1NIVVRET1dOKTtcXG5uZXQvdGlwYy9zb2NrZXQuYy0yODIxLVxcdHNrLVxcdTAwM2Vza19zaHV0ZG93biA9IFNIVVRET1dOX01BU0s7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYz0zMzY3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIG1zZ19vcHMgPSB7XFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzc4LVxcdC5saXN0ZW5cXHRcXHQ9IHNvY2tfbm9fbGlzdGVuLFxcbm5ldC90aXBjL3NvY2tldC5jOjMzNzk6XFx0LnNodXRkb3duXFx0PSB0aXBjX3NodXRkb3duLFxcbm5ldC90aXBjL3NvY2tldC5jLTMzODAtXFx0LnNldHNvY2tvcHRcXHQ9IHRpcGNfc2V0c29ja29wdCxcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTMzODc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTMzOTgtXFx0Lmxpc3RlblxcdFxcdD0gdGlwY19saXN0ZW4sXFxubmV0L3RpcGMvc29ja2V0LmM6MzM5OTpcXHQuc2h1dGRvd25cXHQ9IHRpcGNfc2h1dGRvd24sXFxubmV0L3RpcGMvc29ja2V0LmMtMzQwMC1cXHQuc2V0c29ja29wdFxcdD0gdGlwY19zZXRzb2Nrb3B0LFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzQwNz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBzdHJlYW1fb3BzID0ge1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzQxOC1cXHQubGlzdGVuXFx0XFx0PSB0aXBjX2xpc3RlbixcXG5uZXQvdGlwYy9zb2NrZXQuYzozNDE5OlxcdC5zaHV0ZG93blxcdD0gdGlwY19zaHV0ZG93bixcXG5uZXQvdGlwYy9zb2NrZXQuYy0zNDIwLVxcdC5zZXRzb2Nrb3B0XFx0PSB0aXBjX3NldHNvY2tvcHQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI5OjIxLjY0NzE5NTMwMVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNDM4NTA1OTI3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVElQQyBTb2NrZXQgT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gVElQQyBzb2NrZXQgb3BlcmF0aW9ucywgdHJ5aW5nIHRvIGlkZW50aWZ5IGdvb2QgZW50cnkgcG9pbnRzIGZvciBzb21ldGhpbmcuLi4gSSBpbml0aWFsbHkgdGhvdWdodCBgdGlwY19zaHV0ZG93bmAgYW5kIGB0aXBjX3JlbGVhc2VgIG1pZ2h0IGJlIGRlY2VudCwgYnV0IHRoZXkncmUgc3RhdGljIHNvY2tldCBvcGVyYXRpb25zLiBUaGF0J3MgYSBmbGFnLiBXaGlsZSBpdCdzIHVubGlrZWx5LCBiZWluZyBzdGF0aWMgbWVhbnMgdGhleSAqY291bGQqIGJlIGlubGluZWQuIFNvY2tldCBvcGVyYXRpb25zIGFyZSAqdXN1YWxseSogbm90IGlubGluZWQgYmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHVzZWQgZm9yIGBwcm90b19vcHNgLCBidXQgaXQncyBzdGlsbCBzb21ldGhpbmcgdG8gY29uc2lkZXIuXG5cblRoZW4gSSBjaGVja2VkIGB0aXBjX3NrX3JjdmAg4oCTIGFuZCBpdCdzIGdsb2JhbCwgZXhwb3J0ZWQsIGEgc29saWQgY2FuZGlkYXRlISBMZXQncyB2ZXJpZnkuLi4geWVzLCBnbG9iYWwuIEJpbmdvLiBBbnkgb3RoZXIgZ2xvYmFsIGZ1bmN0aW9ucyB0byBjb25zaWRlcj8gSSBxdWlja2x5IGZvdW5kIGB0aXBjX25vZGVfeG1pdGAgYW5kIGB0aXBjX3NrX21jYXN0X3JjdmAuIFNvLCBgdGlwY19za19yY3ZgLCBgdGlwY19ub2RlX3htaXRgLCBhbmQgYHRpcGNfc2tfbWNhc3RfcmN2YCBhcmUgcG90ZW50aWFsICpGb2N1c1N5bWJvbHMqLlxuXG5CdXQgbGV0J3MgdGhpbmsgYSBiaXQgbW9yZSBkZWVwbHkgYWJvdXQgdGhlIGNhbGwgcGF0aC4gV2FpdCwgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCBpcyBjYWxsZWQgZnJvbSBgdGlwY19za19yY3ZgICh2aWEgYHRpcGNfc2tfZmlsdGVyX3JjdmAgLVx1MDAzZSBgdGlwY19za19wcm90b19yY3ZgIGV0Yy4pLiBBaCwgdGhhdCBzZXR0bGVzIGl0ISBgdGlwY19za19yY3ZgIGxvb2tzIHBlcmZlY3QgYmVjYXVzZSBpdCdzIGdsb2JhbCBhbmQgdGllcyBpbnRvIHRoZSByZWNlaXZlIHBhdGguXG5cbkV2ZW4gdGhvdWdoIGB0aXBjX3NodXRkb3duYCBhbmQgYHRpcGNfcmVsZWFzZWAgYXJlIHN0YXRpYywgdGhleSBzaG91bGQgYmUgYWRkcmVzcy10YWtlbiwgc28gdGhleSB3b24ndCBiZSBpbmxpbmVkLiBCdXQgZ2l2ZW4gdGhlIHByb21wdCBcIlByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1wiLCBgdGlwY19za19yY3ZgIGlzIHRoZSBiZXR0ZXIgY2hvaWNlLlxuXG5XaGF0IGFib3V0IG90aGVyIHNlbmQgb3BlcmF0aW9ucz8gQXJlIGB0aXBjX3NlbmRtc2dgIGFuZCBgdGlwY19zZW5kc3RyZWFtYCBwcm9taXNpbmc/IFRob3NlIGFyZSBzdGF0aWMgdG9vLiBJIHF1aWNrbHkgY2hlY2tlZCB3aGV0aGVyIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgaXMgY2FsbGVkIGZyb20gYHNlbmRtc2dgLCBidXQgbm8sIHRob3NlIGFyZSBhbGwgcmVjZWl2ZSBhbmQgc2h1dGRvd24gcGF0aCwgbGlrZSBJIGV4cGVjdGVkLiBPa2F5LCBzbyBgdGlwY19za19yY3ZgIGFuZCBgdGlwY19zaHV0ZG93bmAgKG9yIG1heWJlIGB0aXBjX3JlbGVhc2VgLCBhbHRob3VnaCB0aGV5IGFyZSBlcXVpdmFsZW50KSBhcmUgdGhlIGNsZWFuZXN0IGVudHJ5IHBvaW50cy5cblxuRmluYWxseSwganVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgbG9vayBhdCB0aGUgS2NvbmZpZyBhbmQgc2VlIGhvdyBgVElQQ2AgaXMgZGVmaW5lZCBhbmQgd2hhdCBpdCBkZXBlbmRzIG9uLiBMZXQncyBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBnb3RjaGFzIGluIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk3NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzoyOTo0Ni4wMzIyNTcyOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MjE0MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUSVBDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9LY29uZmlnLTUtXFxubmV0L3RpcGMvS2NvbmZpZzo2Om1lbnVjb25maWcgVElQQ1xcbm5ldC90aXBjL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFRJUEMgUHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTIzLVxcbm5ldC90aXBjL0tjb25maWc6MjQ6Y29uZmlnIFRJUENfTUVESUFfSUJcXG5uZXQvdGlwYy9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIkluZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZy0yOS1cXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxcbm5ldC90aXBjL0tjb25maWc6MzA6Y29uZmlnIFRJUENfTUVESUFfVURQXFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cXHRib29sIFxcXCJJUC9VRFAgbWVkaWEgdHlwZSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3RpcGMvS2NvbmZpZy0zNy1cXG5uZXQvdGlwYy9LY29uZmlnOjM4OmNvbmZpZyBUSVBDX0NSWVBUT1xcbm5ldC90aXBjL0tjb25maWctMzktXFx0Ym9vbCBcXFwiVElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxcbm5ldC90aXBjL0tjb25maWc6NTM6Y29uZmlnIFRJUENfRElBR1xcbm5ldC90aXBjL0tjb25maWctNTQtXFx0dHJpc3RhdGUgXFxcIlRJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6Mjk6NDYuMTQwNDc1MDU5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNjczODYyMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipFeGFtaW5pbmcgdGhlIFRJUEMgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBUSVBDIChUcmFuc3BhcmVudCBJbnRlci1Qcm9jZXNzIENvbW11bmljYXRpb24pIGNvbmZpZ3VyYXRpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGBuZXQvdGlwYy9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIHN0YW5kYXJkIHBsYWNlIGZvciB0aGlzIGtpbmQgb2YgaW5mb3JtYXRpb24sIHNvIGxldCdzIHN0YXJ0IHRoZXJlLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBmb3IgVElQQyB0byB3b3JrIGNvcnJlY3RseSwgb3Igd2hhdCBvdGhlciBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgY2VydGFpbiBUSVBDIGZlYXR1cmVzLiBHb3R0YSBtYWtlIHN1cmUgSSBnZXQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhhdCBjb25maWd1cmF0aW9uIHNwYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzMyMCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI5OjU0LjUwNzg2NDM1NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvdGlwYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFRJUEMgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIFRJUENcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGUgVHJhbnNwYXJlbnQgSW50ZXIgUHJvY2VzcyBDb21tdW5pY2F0aW9uIChUSVBDKSBwcm90b2NvbCBpc1xcbiAgMTE6XFx0XFx0ICBzcGVjaWFsbHkgZGVzaWduZWQgZm9yIGludHJhIGNsdXN0ZXIgY29tbXVuaWNhdGlvbi4gVGhpcyBwcm90b2NvbFxcbiAgMTI6XFx0XFx0ICBvcmlnaW5hdGVzIGZyb20gRXJpY3Nzb24gd2hlcmUgaXQgaGFzIGJlZW4gdXNlZCBpbiBjYXJyaWVyIGdyYWRlXFxuICAxMzpcXHRcXHQgIGNsdXN0ZXIgYXBwbGljYXRpb25zIGZvciBtYW55IHllYXJzLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFRJUEMsIHNlZSBodHRwOi8vdGlwYy5zb3VyY2Vmb3JnZS5uZXQuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgVGhpcyBwcm90b2NvbCBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgbW9kdWxlICggPSBjb2RlIHdoaWNoXFxuICAxODpcXHRcXHQgIGNhbiBiZSBpbnNlcnRlZCBpbiBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCB3aGVuZXZlciB5b3VcXG4gIDE5OlxcdFxcdCAgd2FudCkuIFRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdGlwYy4gSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdFxcbiAgMjA6XFx0XFx0ICBhcyBhIG1vZHVsZSwgc2F5IE0gaGVyZSBhbmQgcmVhZCBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2tidWlsZC9tb2R1bGVzLnJzdFxcdTAwM2UuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDEzOjI5OjU0LjUwNzk2MjQwNVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDIyOTAxNTc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIFRJUEMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGZ1bmRhbWVudGFsbHkgdG91Y2hlcyBgVElQQ2AsIHdoaWNoIEkga25vdyBkZXBlbmRzIG9uIGBJTkVUYC4gVGhlcmVmb3JlLCBlbmFibGluZyBgVElQQ2AgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIHRvIGdldCBzdGFydGVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkb3VibGUtY2hlY2sgdGhlIGVudHJ5IHBvaW50cyB0aGlzIGNoYW5nZSBhZmZlY3RzLCBzcGVjaWZpY2FsbHkgaWYgYHRpcGNfc2tfcmN2YCBpcyB0aGUgb25seSBub24tc3RhdGljIG9uZS4gQnV0LCBubywgYHRpcGNfc2tfbWNhc3RfcmN2YCBpcyBhbHNvIGV4cG9zZWQuIEknbGwgYWRkIGJvdGggYHRpcGNfc2tfcmN2YCBhbmQgYHRpcGNfc2tfbWNhc3RfcmN2YCB0byBgRm9jdXNTeW1ib2xzYCB0byB0YXJnZXQgdGhlbSBzcGVjaWZpY2FsbHkuXG5cbk5vdywgbG9va2luZyBkZWVwZXIsIHRoZSBwYXRjaCBhbHRlcnMgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYC4gSXQncyBzcGxpY2luZyBgdHhxYCB0byBgeG1pdHFgIHdoZW4gYHhtaXRxYCBpcyBwcm92aWRlZCBhbmQgdGhlIGRlc3RpbmF0aW9uIGlzIG9uIHRoZSBzYW1lIG5vZGUuIFRoaXMgaXMgYSBjbGV2ZXIgb3B0aW1pemF0aW9uLCBieXBhc3NpbmcgdGhlIG5vcm1hbCBgdGlwY19ub2RlX3htaXRgIHBhdGggYW5kIGRpcmVjdGx5IHF1ZXVlaW5nIHBhY2tldHMgdG8gYHhtaXRxYCwgd2hpY2ggdGhlIGNhbGxlciB0aGVuIGhhbmRsZXMuIFRoaXMgaXMgZWl0aGVyIGEgcGVyZm9ybWFuY2Ugd2luLCBhIGxvY2sgaXNzdWUgZml4IG9yIG1heWJlIGp1c3QgYSBmdW5jdGlvbmFsIGJhdGNoaW5nIGNoYW5nZS4gVGhpcyBuZWVkcyB0byBiZSBmdXp6ZWQhXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlzdGlsbCB0aGlzIGluZm9ybWF0aW9uIGludG8gdGhlIHJlcXVpcmVkIHBhcmFtZXRlcnMuIFdlJ3JlIGRlZmluaXRlbHkgdGFnZ2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIGBGb2N1c1N5bWJvbHNgIGluY2x1ZGVzIGB0aXBjX3NrX3JjdmAgYW5kIGB0aXBjX3NrX21jYXN0X3JjdmAuIGBFbmFibGVDb25maWdzYCB3aWxsIHN0YXJ0IHdpdGggYFRJUENgLiBUaGUgY29yZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgcGF0Y2ggZnVuZGFtZW50YWxseSBjaGFuZ2VzIHRoZSBUSVBDIHNvY2tldCByZWNlaXZlIGFuZCBzaHV0ZG93biBwYXRocyBieSBhbHRlcmluZyB0aGUgYmFja2xvZyBwdXNoaW5nIG1lY2hhbmlzbS4gSXQgc3BsaWNlcyB0aGUgdHJhbnNtaXQgcXVldWUgdG8gYSBwcm92aWRlZCB4bWl0cSByYXRoZXIgdGhhbiB0cmFuc21pdHRpbmcgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIHNhbWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgVElQQyBzb2NrZXQgbG9naWMuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWdzLiBBaCwgYFRJUENfTUVESUFfVURQYC4gV2hpbGUgYFRJUENgIGlzIHN1ZmZpY2llbnQgdG8gZW5hYmxlIHRoZSBjb3JlLCBgVElQQ19NRURJQV9VRFBgIHdvdWxkIGJlIHVzZWZ1bCBmb3IgZnV6emluZyBUSVBDIG92ZXIgVURQLCB3aGljaCBzeXprYWxsZXIgb2Z0ZW4gdGFyZ2V0cy4gU28sIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGJlY2F1c2UgaXQgY2FuJ3QgaHVydCwgSSdsbCBpbmNsdWRlIGJvdGggYFRJUENgIGFuZCBgVElQQ19NRURJQV9VRFBgIGluIGBFbmFibGVDb25maWdzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3OTksIk91dHB1dFRva2VucyI6MTMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MzA6MDQuNzM2OTgwNzU3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE5NDI5NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfc2tfcmN2XCIsXG4gICAgXCJ0aXBjX3NrX21jYXN0X3JjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUSVBDIHNvY2tldCByZWNlaXZlIGFuZCBzaHV0ZG93biBwYXRocyBieSBjaGFuZ2luZyBob3cgdGhlIHNvY2tldCBiYWNrbG9nIGlzIHB1c2hlZC4gSXQgc3BsaWNlcyB0aGUgdHJhbnNtaXQgcXVldWUgdG8gYSBwcm92aWRlZCB4bWl0cSBpbnN0ZWFkIG9mIHRyYW5zbWl0dGluZyBkaXJlY3RseSB3aGVuIHRoZSBkZXN0aW5hdGlvbiBpcyBvbiB0aGUgc2FtZSBub2RlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBUSVBDIHNvY2tldCBsb2dpYyB0aGF0IGFmZmVjdHMgbWVzc2FnZSB0cmFuc21pc3Npb24gYW5kIHF1ZXVlIG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVElQQ1wiLFxuICAgIFwiVElQQ19NRURJQV9VRFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0aXBjX3NrX3JjdlwiLFxuICAgIFwidGlwY19za19tY2FzdF9yY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVElQQyBzb2NrZXQgcmVjZWl2ZSBhbmQgc2h1dGRvd24gcGF0aHMgYnkgY2hhbmdpbmcgaG93IHRoZSBzb2NrZXQgYmFja2xvZyBpcyBwdXNoZWQuIEl0IHNwbGljZXMgdGhlIHRyYW5zbWl0IHF1ZXVlIHRvIGEgcHJvdmlkZWQgeG1pdHEgaW5zdGVhZCBvZiB0cmFuc21pdHRpbmcgZGlyZWN0bHkgd2hlbiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIHNhbWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgVElQQyBzb2NrZXQgbG9naWMgdGhhdCBhZmZlY3RzIG1lc3NhZ2UgdHJhbnNtaXNzaW9uIGFuZCBxdWV1ZSBtYW5hZ2VtZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzozMDowNC44NTY0MTY5ODZaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjEyMDQ3ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MzA6MDQuODU2OTU2MzY2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwMjExNDk1MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCBmdW5jdGlvbiB0byBhY2NlcHQgYW4gYWRkaXRpb25hbCBgeG1pdHFgIGFyZ3VtZW50LCBhbGxvd2luZyBpdCB0byBzcGxpY2UgdGhlIHNvY2tldCdzIHdyaXRlIHF1ZXVlIGRpcmVjdGx5IGludG8gdGhlIHRyYW5zbWl0IHF1ZXVlIHdoZW4gc2VuZGluZyB0byB0aGUgc2FtZSBub2RlLCByYXRoZXIgdGhhbiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAuIFRoaXMgaXMgYSBjb250cm9sIGZsb3cgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgY2hhbmdlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBjb3B5aW5nIG9mIGRhdGEgdG8gdXNlciBzcGFjZS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2Ugd291bGQgYmUgcmVsYXRlZCB0byBxdWV1ZSBtYW5hZ2VtZW50IChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbWVtb3J5IGxlYWtzKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRiMDY0NWQ1NTFkOGY0YTlkNzVlN2RmYzFiMTQyMGE3NmYyYzczMDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxMzoyNDozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcbmluZGV4IGU1NjQzNDFlMDIxNmQuLjMzZDc0NGRjNTE0ZjUgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9zb2NrZXQuY1xuKysrIGIvbmV0L3RpcGMvc29ja2V0LmNcbkBAIC0xNTYsNyArMTU2LDggQEAgc3RhdGljIGludCB0aXBjX3NrX2luc2VydChzdHJ1Y3QgdGlwY19zb2NrICp0c2spO1xuIHN0YXRpYyB2b2lkIHRpcGNfc2tfcmVtb3ZlKHN0cnVjdCB0aXBjX3NvY2sgKnRzayk7XG4gc3RhdGljIGludCBfX3RpcGNfc2VuZHN0cmVhbShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgZHN6KTtcbiBzdGF0aWMgaW50IF9fdGlwY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCBkc3opO1xuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spO1xuK3N0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2ssXG4rXHRcdFx0XHQgc3RydWN0IHNrX2J1ZmZfaGVhZCAqeG1pdHEpO1xuIHN0YXRpYyBpbnQgdGlwY193YWl0X2Zvcl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGxvbmcgKnRpbWVvX3ApO1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHM7XG5AQCAtNTYwLDcgKzU2MSw3IEBAIHN0YXRpYyB2b2lkIF9fdGlwY19zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZXJyb3IpXG4gXHRcdFx0XHRcdCAgICAhdHNrX2Nvbm5fY29uZyh0c2spKSk7XG4gXG4gXHQvKiBQdXNoIG91dCBkZWxheWVkIG1lc3NhZ2VzIGlmIGluIE5hZ2xlIG1vZGUgKi9cbi1cdHRpcGNfc2tfcHVzaF9iYWNrbG9nKHRzaywgZmFsc2UpO1xuK1x0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgTlVMTCk7XG4gXHQvKiBSZW1vdmUgcGVuZGluZyBTWU4gKi9cbiBcdF9fc2tiX3F1ZXVlX3B1cmdlKFx1MDAyNnNrLVx1MDAzZXNrX3dyaXRlX3F1ZXVlKTtcbiBcbkBAIC0xMjY3LDggKzEyNjgsMTAgQEAgdm9pZCB0aXBjX3NrX21jYXN0X3JjdihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmX2hlYWQgKmFycnZxLFxuIFxuIC8qIHRpcGNfc2tfcHVzaF9iYWNrbG9nKCk6IHNlbmQgYWNjdW11bGF0ZWQgYnVmZmVycyBpbiBzb2NrZXQgd3JpdGUgcXVldWVcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNvY2tldCBpcyBpbiBOYWdsZSBtb2RlXG4rICogQHhtaXRxOiByZWNlaXZlIG91dHB1dCBxdWV1ZSwgb3IgTlVMTCBvdXRzaWRlIHJlY2VpdmUgY29udGV4dFxuICAqL1xuLXN0YXRpYyB2b2lkIHRpcGNfc2tfcHVzaF9iYWNrbG9nKHN0cnVjdCB0aXBjX3NvY2sgKnRzaywgYm9vbCBuYWdsZV9hY2spXG4rc3RhdGljIHZvaWQgdGlwY19za19wdXNoX2JhY2tsb2coc3RydWN0IHRpcGNfc29jayAqdHNrLCBib29sIG5hZ2xlX2FjayxcbitcdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp4bWl0cSlcbiB7XG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICp0eHEgPSBcdTAwMjZ0c2stXHUwMDNlc2suc2tfd3JpdGVfcXVldWU7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gc2tiX3BlZWtfdGFpbCh0eHEpO1xuQEAgLTEzMTAsNiArMTMxMywxMiBAQCBzdGF0aWMgdm9pZCB0aXBjX3NrX3B1c2hfYmFja2xvZyhzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIGJvb2wgbmFnbGVfYWNrKVxuIFx0XHR0c2stXHUwMDNlcGt0X2NudCArPSBza2JfcXVldWVfbGVuKHR4cSk7XG4gXHR0c2stXHUwMDNlc250X3VuYWNrZWQgKz0gdHNrLVx1MDAzZXNuZF9iYWNrbG9nO1xuIFx0dHNrLVx1MDAzZXNuZF9iYWNrbG9nID0gMDtcbitcbitcdGlmICh4bWl0cSBcdTAwMjZcdTAwMjYgaW5fb3duX25vZGUobmV0LCBkbm9kZSkpIHtcbitcdFx0c2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQodHhxLCB4bWl0cSk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHJjID0gdGlwY19ub2RlX3htaXQobmV0LCB0eHEsIGRub2RlLCB0c2stXHUwMDNlcG9ydGlkKTtcbiBcdGlmIChyYyA9PSAtRUxJTktDT05HKVxuIFx0XHR0c2stXHUwMDNlY29uZ19saW5rX2NudCA9IDE7XG5AQCAtMTM2Nyw3ICsxMzc2LDcgQEAgc3RhdGljIHZvaWQgdGlwY19za19jb25uX3Byb3RvX3JjdihzdHJ1Y3QgdGlwY19zb2NrICp0c2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0Z290byBleGl0O1xuIFxuIFx0XHR3YXNfY29uZyA9IHRza19jb25uX2NvbmcodHNrKTtcbi1cdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBtc2dfbmFnbGVfYWNrKGhkcikpO1xuK1x0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIG1zZ19uYWdsZV9hY2soaGRyKSwgeG1pdHEpO1xuIFx0XHR0c2stXHUwMDNlc250X3VuYWNrZWQgLT0gbXNnX2Nvbm5fYWNrKGhkcik7XG4gXHRcdGlmICh0c2stXHUwMDNlcGVlcl9jYXBzIFx1MDAyNiBUSVBDX0JMT0NLX0ZMT1dDVEwpXG4gXHRcdFx0dHNrLVx1MDAzZXNuZF93aW4gPSBtc2dfYWR2X3dpbihoZHIpO1xuQEAgLTIxNjUsNyArMjE3NCw3IEBAIHN0YXRpYyB2b2lkIHRpcGNfc2tfcHJvdG9fcmN2KHN0cnVjdCBzb2NrICpzayxcbiBcdFx0c21wX3dtYigpO1xuIFx0XHR0c2stXHUwMDNlY29uZ19saW5rX2NudC0tO1xuIFx0XHR3YWtldXAgPSB0cnVlO1xuLVx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbitcdFx0dGlwY19za19wdXNoX2JhY2tsb2codHNrLCBmYWxzZSwgeG1pdHEpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgR1JPVVBfUFJPVE9DT0w6XG4gXHRcdHRpcGNfZ3JvdXBfcHJvdG9fcmN2KGdycCwgXHUwMDI2d2FrZXVwLCBoZHIsIGlucHV0cSwgeG1pdHEpO1xuQEAgLTIyNTYsNyArMjI2NSw3IEBAIHN0YXRpYyBib29sIHRpcGNfc2tfZmlsdGVyX2Nvbm5lY3Qoc3RydWN0IHRpcGNfc29jayAqdHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRjYXNlIFRJUENfRVNUQUJMSVNIRUQ6XG4gXHRcdGlmICghc2tiX3F1ZXVlX2VtcHR5KFx1MDAyNnNrLVx1MDAzZXNrX3dyaXRlX3F1ZXVlKSlcbi1cdFx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlKTtcbitcdFx0XHR0aXBjX3NrX3B1c2hfYmFja2xvZyh0c2ssIGZhbHNlLCB4bWl0cSk7XG4gXHRcdC8qIEFjY2VwdCBvbmx5IGNvbm5lY3Rpb24tYmFzZWQgbWVzc2FnZXMgc2VudCBieSBwZWVyICovXG4gXHRcdGlmIChsaWtlbHkoY29uX21zZyBcdTAwMjZcdTAwMjYgIWVyciBcdTAwMjZcdTAwMjYgcHBvcnQgPT0gb3BvcnQgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgcG5vZGUgPT0gb25vZGUpKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxMzozMDowNC44NTY5NTg5MzZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMTE0NjY4MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUSVBDIFNvY2tldCBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCBjaGFuZ2VzIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2Agd2l0aGluIGBuZXQvdGlwYy9zb2NrZXQuY2AgdG8gaW5jbHVkZSBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50LCBgeG1pdHFgLCBhIHBvaW50ZXIgdG8gYSBgc3RydWN0IHNrX2J1ZmZfaGVhZGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyBpbiBjb25kaXRpb25hbGx5IHNwbGljaW5nIGB0eHFgIGludG8gYHhtaXRxYCBpZiBgeG1pdHFgIGlzIHByb3ZpZGVkIGFuZCB0aGUgZGVzdGluYXRpb24gbm9kZSBtYXRjaGVzIHRoZSBsb2NhbCBub2RlLiBUaGUgaW50ZW50IGhlcmUgaXMgY2xlYXI6IHRvIGJ5cGFzcyBhIGNhbGwgdG8gYHRpcGNfbm9kZV94bWl0YCB3aGVuIHJlY2VpdmluZyBvbiB0aGUgbG9jYWwgbm9kZSwgb3B0aW5nIGluc3RlYWQgdG8gYXBwZW5kIHRoZSBwYWNrZXRzIHRvIGB4bWl0cWAgZm9yIGxhdGVyIHByb2Nlc3NpbmcuXG5cbk15IHByaW1hcnkgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBtZW1vcnkgc2FmZXR5LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBpbnRyb2R1Y2VzIGFueSByaXNrcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBMZXQncyB0cmFjZSBpdC4gVGhlIHBhdGNoIHBhc3NlcyBgeG1pdHFgIHRvIGB0aXBjX3NrX3B1c2hfYmFja2xvZ2AgZnJvbSBleGlzdGluZyBjb250ZXh0cyBsaWtlIGB0aXBjX3NrX2Nvbm5fcHJvdG9fcmN2YCwgYHRpcGNfc2tfcHJvdG9fcmN2YCwgYW5kIGB0aXBjX3NrX2ZpbHRlcl9jb25uZWN0YCwgaW1wbHlpbmcgdGhhdCB0aGlzIGB4bWl0cWAgYWxyZWFkeSBob2xkcyBhIHZhbGlkIHZhbHVlLiBJbnNpZGUgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCwgd2Ugc2VlIHRoZSBmb2xsb3dpbmc6XG5cbmBgYGNcbitcdGlmICh4bWl0cSBcdTAwMjZcdTAwMjYgaW5fb3duX25vZGUobmV0LCBkbm9kZSkpIHtcbitcdFx0c2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQodHhxLCB4bWl0cSk7XG4rXHRcdHJldHVybjtcbitcdH1cbmBgYFxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIGp1c3QgbW92aW5nIFNLQnMgZnJvbSBgdHhxYCB0byBgeG1pdHFgLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBub3RoaW5nIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gbmV3IHZhcmlhYmxlcyBhcmUgaW5pdGlhbGl6ZWQuIEl0J3MgYSBwdXJlIGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgbWFuYWdlbWVudCBjaGFuZ2UuXG5cblRoZXJlZm9yZSwgc2luY2UgdGhpcyBpcyBqdXN0IGEgcmUtYXJyYW5nZW1lbnQgb2YgdGhlIGRhdGEgc3RydWN0dXJlcyB0aGF0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMgb3IgdXNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgdGhpcyBpc24ndCBhIEtNU0FOIGlzc3VlLiBUaGUgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBhcmUgb2YgdGhlIHR5cGUgdGhhdCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQgdGVzdGluZzsgbmFtZWx5LCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbG9naWMgZXJyb3JzIChsaWtlIGRyb3BwZWQgb3IgZG91YmxlLXF1ZXVlZCBwYWNrZXRzKS4gQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSB3aWxsIHNldCBgTmVlZHNLTVNBTmAgdG8gYGZhbHNlYC4gSSBjYW4gbm93IGZpbmFsaXplIHRoZSByZWFzb25pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwOTgsIk91dHB1dFRva2VucyI6MTgzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTM6MzA6MTUuMDY4NDI4NDQ1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHRpcGNfc2tfcHVzaF9iYWNrbG9nYCBmdW5jdGlvbiB0byBhY2NlcHQgYW4gYWRkaXRpb25hbCBgeG1pdHFgIGFyZ3VtZW50LCBhbGxvd2luZyBpdCB0byBzcGxpY2UgdGhlIHNvY2tldCdzIHdyaXRlIHF1ZXVlIGRpcmVjdGx5IGludG8gdGhlIHRyYW5zbWl0IHF1ZXVlIHdoZW4gc2VuZGluZyB0byB0aGUgc2FtZSBub2RlLCByYXRoZXIgdGhhbiBjYWxsaW5nIGB0aXBjX25vZGVfeG1pdGAuIFRoaXMgaXMgYSBjb250cm9sIGZsb3cgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgY2hhbmdlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBjb3B5aW5nIG9mIGRhdGEgdG8gdXNlciBzcGFjZS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBjaGFuZ2Ugd291bGQgYmUgcmVsYXRlZCB0byBxdWV1ZSBtYW5hZ2VtZW50IChlLmcuLCB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbWVtb3J5IGxlYWtzKSwgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgdGlwY19za19wdXNoX2JhY2tsb2dgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhbiBhZGRpdGlvbmFsIGB4bWl0cWAgYXJndW1lbnQsIGFsbG93aW5nIGl0IHRvIHNwbGljZSB0aGUgc29ja2V0J3Mgd3JpdGUgcXVldWUgZGlyZWN0bHkgaW50byB0aGUgdHJhbnNtaXQgcXVldWUgd2hlbiBzZW5kaW5nIHRvIHRoZSBzYW1lIG5vZGUsIHJhdGhlciB0aGFuIGNhbGxpbmcgYHRpcGNfbm9kZV94bWl0YC4gVGhpcyBpcyBhIGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgbWFuYWdlbWVudCBjaGFuZ2UuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGNvcHlpbmcgb2YgZGF0YSB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIGNoYW5nZSB3b3VsZCBiZSByZWxhdGVkIHRvIHF1ZXVlIG1hbmFnZW1lbnQgKGUuZy4sIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBtZW1vcnkgbGVha3MpLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow6w89k[1] Phase: Succeeded StartedAt: 2026-08-12 13:30:35 +0000 UTC FinishedAt: 2026-08-12 13:30:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-12 13:30:35 +0000 UTC FinishedAt: 2026-08-12 13:30:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2] Phase: Succeeded StartedAt: 2026-08-12 13:30:35 +0000 UTC FinishedAt: 2026-08-12 17:14:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-12 13:30:35 +0000 UTC FinishedAt: 2026-08-12 17:14:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-12 13:30:35 +0000 UTC FinishedAt: 2026-08-12 13:30:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-12 13:30:35 +0000 UTC FinishedAt: 2026-08-12 13:30:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6w89k/series-workflow6w89k-convert-artifact-931064803/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-12 13:30:54 +0000 UTC FinishedAt: 2026-08-12 13:51:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-12 13:30:54 +0000 UTC FinishedAt: 2026-08-12 13:51:01 +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:*738e5860-a1de-4d0f-9281-9ec62d792fc6,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-workflow6w89k/series-workflow6w89k-convert-artifact-931064803/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": "73cd7c88-e228-4aa5-9ae0-298913f5fc5a", "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-workflow6w89k/series-workflow6w89k-build-action-4154132305/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-12 13:30:54 +0000 UTC FinishedAt: 2026-08-12 13:50:51 +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:*738e5860-a1de-4d0f-9281-9ec62d792fc6,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-workflow6w89k/series-workflow6w89k-convert-artifact-931064803/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": "73cd7c88-e228-4aa5-9ae0-298913f5fc5a", "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-workflow6w89k/series-workflow6w89k-build-action-4154132305/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-12 13:51:01 +0000 UTC FinishedAt: 2026-08-12 13:51:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-12 13:51:01 +0000 UTC FinishedAt: 2026-08-12 13:51:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-12 13:51:01 +0000 UTC FinishedAt: 2026-08-12 13:51:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-12 13:51:01 +0000 UTC FinishedAt: 2026-08-12 13:51:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6w89k/series-workflow6w89k-convert-artifact-3712459546/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-12 13:51:11 +0000 UTC FinishedAt: 2026-08-12 13:53:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-12 13:51:11 +0000 UTC FinishedAt: 2026-08-12 13:53:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*73cd7c88-e228-4aa5-9ae0-298913f5fc5a,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-workflow6w89k/series-workflow6w89k-build-action-4154132305/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-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-12 13:53:16 +0000 UTC FinishedAt: 2026-08-12 13:53:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-12 13:53:16 +0000 UTC FinishedAt: 2026-08-12 13:53:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-12 13:53:16 +0000 UTC FinishedAt: 2026-08-12 14:10:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-12 13:53:16 +0000 UTC FinishedAt: 2026-08-12 14:10:33 +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:*738e5860-a1de-4d0f-9281-9ec62d792fc6,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-workflow6w89k/series-workflow6w89k-convert-artifact-3712459546/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": "acde48ca-ff9b-4e3d-9230-6496691f1086", "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-workflow6w89k/series-workflow6w89k-build-action-4090449662/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-12 13:53:16 +0000 UTC FinishedAt: 2026-08-12 14:10:23 +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:*738e5860-a1de-4d0f-9281-9ec62d792fc6,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-workflow6w89k/series-workflow6w89k-convert-artifact-3712459546/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": "acde48ca-ff9b-4e3d-9230-6496691f1086", "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-workflow6w89k/series-workflow6w89k-build-action-4090449662/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-12 14:10:33 +0000 UTC FinishedAt: 2026-08-12 14:10:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-12 14:10:33 +0000 UTC FinishedAt: 2026-08-12 14:10:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-12 14:10:33 +0000 UTC FinishedAt: 2026-08-12 14:12:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-12 14:10:33 +0000 UTC FinishedAt: 2026-08-12 14:12:27 +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:*acde48ca-ff9b-4e3d-9230-6496691f1086,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-workflow6w89k/series-workflow6w89k-build-action-4090449662/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-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-12 14:12:37 +0000 UTC FinishedAt: 2026-08-12 17:14:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-12 14:12:37 +0000 UTC FinishedAt: 2026-08-12 17:14:32 +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":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"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:*73cd7c88-e228-4aa5-9ae0-298913f5fc5a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*acde48ca-ff9b-4e3d-9230-6496691f1086,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-workflow6w89k/series-workflow6w89k-build-action-4154132305/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-workflow6w89k/series-workflow6w89k-build-action-4090449662/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-12 14:12:37 +0000 UTC FinishedAt: 2026-08-12 14:12:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-12 14:12:37 +0000 UTC FinishedAt: 2026-08-12 14:12:43 +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":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"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-workflow6w89k/series-workflow6w89k-convert-artifact-1534041551/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-12 14:12:37 +0000 UTC FinishedAt: 2026-08-12 14:12:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-12 14:12:37 +0000 UTC FinishedAt: 2026-08-12 14:12:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-12 14:12:37 +0000 UTC FinishedAt: 2026-08-12 14:12:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-12 14:12:47 +0000 UTC FinishedAt: 2026-08-12 17:14:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6w89k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_sk_rcv","tipc_sk_mcast_rcv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"322a3f5f-f45e-4efd-a122-8ade73ad3b21","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-12 14:12:47 +0000 UTC FinishedAt: 2026-08-12 17:14:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*73cd7c88-e228-4aa5-9ae0-298913f5fc5a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*acde48ca-ff9b-4e3d-9230-6496691f1086,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-workflow6w89k/series-workflow6w89k-build-action-4154132305/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-workflow6w89k/series-workflow6w89k-build-action-4090449662/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-workflow6w89k/series-workflow6w89k-convert-artifact-1534041551/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,}