Name: series-workflow62k44 Phase: Succeeded StartedAt: 2026-09-02 16:32:22 +0000 UTC FinishedAt: 2026-09-02 20:21:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[0] Phase: Succeeded StartedAt: 2026-09-02 16:32:22 +0000 UTC FinishedAt: 2026-09-02 16:37:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 16:32:22 +0000 UTC FinishedAt: 2026-09-02 16:37:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPTP", "PPP", "NET_IPGRE_DEMUX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPTP", "PPP", "NET_IPGRE_DEMUX" ], "series_id": "1db59710-19c0-4c5f-957c-b012fe6ca0a4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "pptp_rcv_core", "pptp_rcv", "pptp_create", "pptp_connect", "pptp_bind" ], "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+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQVFAmIzM0OywKICAgICYjMzQ7UFBQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwdHBfcmN2X2NvcmUmIzM0OywKICAgICYjMzQ7cHB0cF9yY3YmIzM0OywKICAgICYjMzQ7cHB0cF9jcmVhdGUmIzM0OywKICAgICYjMzQ7cHB0cF9jb25uZWN0JiMzNDssCiAgICAmIzM0O3BwdHBfYmluZCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBib3VuZHMgY2hlY2tpbmcgYW5kIHNrYiBwdWxsIG9wZXJhdGlvbnMgaW4gdGhlIFBQVFAgcmVjZWl2ZSBwYXRoIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKS4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgYWRlcXVhdGUgcGF5bG9hZCBieXRlcyBhcmUgYXZhaWxhYmxlIGFuZCBwdWxsZWQgaW50byB0aGUgc2tiIGxpbmVhciBhcmVhIGJlZm9yZSBpbmRleGluZyBpbnRvIHNrYiBwYXlsb2FkIG9mZnNldHMgKHBheWxvYWRbMF0gdGhyb3VnaCBwYXlsb2FkWzRdIGFuZCBza2ItXHUwMDNlZGF0YVswXSB0aHJvdWdoIHNrYi1cdTAwM2VkYXRhWzFdKS5cblxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgKE9PQikgbWVtb3J5IHJlYWRzIG9uIHRydW5jYXRlZCBvciBtYWxmb3JtZWQgbmV0d29yayBwYWNrZXRzLiBPT0IgcmVhZHMgYW5kIGludmFsaWQgc2tiIGJ1ZmZlciBkZXJlZmVyZW5jZXMgYXJlIGRpcmVjdGx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIEtBU0FOIGJ1aWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgY29weSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCByZWNlcHRpb24gcGFyc2luZyBhbmQgYm91bmRzIGNoZWNraW5nIGxvZ2ljIGluIHBwdHBfcmN2X2NvcmUoKSB3aXRoaW4gdGhlIFBQVFAgbmV0d29yayBwcm90b2NvbCBkcml2ZXIgKGRyaXZlcnMvbmV0L3BwcC9wcHRwLmMpLCBlbnN1cmluZyBwYXlsb2FkIGF2YWlsYWJpbGl0eSBjaGVja3MgYW5kIHBza2JfbWF5X3B1bGwoKSBjYWxscyBwcmVjZWRlIGhlYWRlciBkZXJlZmVyZW5jaW5nIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgcGFja2V0cy4gVGhpcyBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9QUFBPWCBzb2NrZXRzIGFuZCBHUkUgcGFja2V0IGRlbGl2ZXJ5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjE1NTk1OTI1ZjI5OGVlZjVmMjJkOWM3ZDI4YjM1MTIyZGEwMmM4ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTY6MzU6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbmluZGV4IGE3OTdhMDYwNmY2YjQuLjRmYjk0YTQ1NWM1NzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXG5AQCAtMjc1LDYgJiM0MzsyNzUsNyBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0c3RydWN0IHBwcG94X3NvY2sgKnBvID0gcHBwb3hfc2soc2spO1xuIFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcdTAwMjZwby1cdTAwM2Vwcm90by5wcHRwO1xuIFx0aW50IGhlYWRlcnNpemUsIHBheWxvYWRfbGVuLCBzZXE7XG4mIzQzO1x0dW5zaWduZWQgaW50IHBheWxvYWRfYXZhaWw7XG4gXHRfX3U4ICpwYXlsb2FkO1xuIFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuIFxuQEAgLTMxNCwyMyAmIzQzOzMxNSwzNCBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBwYXlsb2FkX2xlbikpXG4gXHRcdGdvdG8gZHJvcDtcbiBcbi1cdHBheWxvYWQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBoZWFkZXJzaXplO1xuJiM0MztcdHBheWxvYWRfYXZhaWwgPSBza2ItXHUwMDNlbGVuIC0gaGVhZGVyc2l6ZTtcbiBcdC8qIGNoZWNrIGZvciBleHBlY3RlZCBzZXF1ZW5jZSBudW1iZXIgKi9cbiBcdGlmIChzZXEgXHUwMDNjIG9wdC1cdTAwM2VzZXFfcmVjdiAmIzQzOyAxIHx8IFdSQVBQRUQob3B0LVx1MDAzZXNlcV9yZWN2LCBzZXEpKSB7XG4tXHRcdGlmICgocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMpIFx1MDAyNlx1MDAyNiAocGF5bG9hZFsxXSA9PSBQUFBfVUkpIFx1MDAyNlx1MDAyNlxuLVx0XHRcdFx0KFBQUF9QUk9UT0NPTChwYXlsb2FkKSA9PSBQUFBfTENQKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHRcdCgocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEpIHx8IChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUCkpKVxuLVx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuJiM0MztcdFx0aWYgKHBheWxvYWRfYXZhaWwgXHUwMDNlPSBQUFBfSERSTEVOICYjNDM7IDEpIHtcbiYjNDM7XHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBQUFBfSERSTEVOICYjNDM7IDEpKVxuJiM0MztcdFx0XHRcdGdvdG8gZHJvcDtcbiYjNDM7XG4mIzQzO1x0XHRcdHBheWxvYWQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBoZWFkZXJzaXplO1xuJiM0MztcdFx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0XHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxuJiM0MztcdFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuJiM0MztcdFx0fVxuIFx0fSBlbHNlIHtcbiBcdFx0b3B0LVx1MDAzZXNlcV9yZWN2ID0gc2VxO1xuIGFsbG93X3BhY2tldDpcbiBcdFx0c2tiX3B1bGwoc2tiLCBoZWFkZXJzaXplKTtcbiBcbi1cdFx0aWYgKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFx1MDAyNlx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSkge1xuLVx0XHRcdC8qIGNob3Agb2ZmIGFkZHJlc3MvY29udHJvbCAqL1xuLVx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAzKVxuJiM0MztcdFx0aWYgKHBheWxvYWRfYXZhaWwgXHUwMDNlPSAyKSB7XG4mIzQzO1x0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIDIpKVxuIFx0XHRcdFx0Z290byBkcm9wO1xuLVx0XHRcdHNrYl9wdWxsKHNrYiwgMik7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoc2tiLVx1MDAzZWRhdGFbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFx1MDAyNlx1MDAyNiBza2ItXHUwMDNlZGF0YVsxXSA9PSBQUFBfVUkpIHtcbiYjNDM7XHRcdFx0XHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cbiYjNDM7XHRcdFx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgMylcbiYjNDM7XHRcdFx0XHRcdGdvdG8gZHJvcDtcbiYjNDM7XHRcdFx0XHRza2JfcHVsbChza2IsIDIpO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0c2tiLVx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX05PTkU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFBUUCYjMzQ7LAogICAgJiMzNDtQUFAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICAgJiMzNDtwcHRwX3JjdiYjMzQ7LAogICAgJiMzNDtwcHRwX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtwcHRwX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cHB0cF9iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCByZWNlcHRpb24gcGFyc2luZyBhbmQgYm91bmRzIGNoZWNraW5nIGxvZ2ljIGluIHBwdHBfcmN2X2NvcmUoKSB3aXRoaW4gdGhlIFBQVFAgbmV0d29yayBwcm90b2NvbCBkcml2ZXIgKGRyaXZlcnMvbmV0L3BwcC9wcHRwLmMpLCBlbnN1cmluZyBwYXlsb2FkIGF2YWlsYWJpbGl0eSBjaGVja3MgYW5kIHBza2JfbWF5X3B1bGwoKSBjYWxscyBwcmVjZWRlIGhlYWRlciBkZXJlZmVyZW5jaW5nIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgcGFja2V0cy4gVGhpcyBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9QUFBPWCBzb2NrZXRzIGFuZCBHUkUgcGFja2V0IGRlbGl2ZXJ5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjE1NTk1OTI1ZjI5OGVlZjVmMjJkOWM3ZDI4YjM1MTIyZGEwMmM4ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTY6MzU6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwppbmRleCBhNzk3YTA2MDZmNmI0Li40ZmI5NGE0NTVjNTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMKQEAgLTI3NSw2ICYjNDM7Mjc1LDcgQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7CiAJc3RydWN0IHBwdHBfb3B0ICpvcHQgPSAmYW1wO3BvLSZndDtwcm90by5wcHRwOwogCWludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxOwomIzQzOwl1bnNpZ25lZCBpbnQgcGF5bG9hZF9hdmFpbDsKIAlfX3U4ICpwYXlsb2FkOwogCXN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjsKIApAQCAtMzE0LDIzICYjNDM7MzE1LDM0IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBwYXlsb2FkX2xlbikpCiAJCWdvdG8gZHJvcDsKIAotCXBheWxvYWQgPSBza2ItJmd0O2RhdGEgJiM0MzsgaGVhZGVyc2l6ZTsKJiM0MzsJcGF5bG9hZF9hdmFpbCA9IHNrYi0mZ3Q7bGVuIC0gaGVhZGVyc2l6ZTsKIAkvKiBjaGVjayBmb3IgZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyICovCiAJaWYgKHNlcSAmbHQ7IG9wdC0mZ3Q7c2VxX3JlY3YgJiM0MzsgMSB8fCBXUkFQUEVEKG9wdC0mZ3Q7c2VxX3JlY3YsIHNlcSkpIHsKLQkJaWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgJmFtcDsmYW1wOyAocGF5bG9hZFsxXSA9PSBQUFBfVUkpICZhbXA7JmFtcDsKLQkJCQkoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApICZhbXA7JmFtcDsKLQkJCQkoKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRKSB8fCAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKSkKLQkJCWdvdG8gYWxsb3dfcGFja2V0OwomIzQzOwkJaWYgKHBheWxvYWRfYXZhaWwgJmd0Oz0gUFBQX0hEUkxFTiAmIzQzOyAxKSB7CiYjNDM7CQkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBQUFBfSERSTEVOICYjNDM7IDEpKQomIzQzOwkJCQlnb3RvIGRyb3A7CiYjNDM7CiYjNDM7CQkJcGF5bG9hZCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBoZWFkZXJzaXplOwomIzQzOwkJCWlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJICZhbXA7JmFtcDsKJiM0MzsJCQkgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgJmFtcDsmYW1wOwomIzQzOwkJCSAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKQomIzQzOwkJCQlnb3RvIGFsbG93X3BhY2tldDsKJiM0MzsJCX0KIAl9IGVsc2UgewogCQlvcHQtJmd0O3NlcV9yZWN2ID0gc2VxOwogYWxsb3dfcGFja2V0OgogCQlza2JfcHVsbChza2IsIGhlYWRlcnNpemUpOwogCi0JCWlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7Ci0JCQkvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi8KLQkJCWlmIChza2ItJmd0O2xlbiAmbHQ7IDMpCiYjNDM7CQlpZiAocGF5bG9hZF9hdmFpbCAmZ3Q7PSAyKSB7CiYjNDM7CQkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgMikpCiAJCQkJZ290byBkcm9wOwotCQkJc2tiX3B1bGwoc2tiLCAyKTsKJiM0MzsKJiM0MzsJCQlpZiAoc2tiLSZndDtkYXRhWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHNrYi0mZ3Q7ZGF0YVsxXSA9PSBQUFBfVUkpIHsKJiM0MzsJCQkJLyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovCiYjNDM7CQkJCWlmIChza2ItJmd0O2xlbiAmbHQ7IDMpCiYjNDM7CQkJCQlnb3RvIGRyb3A7CiYjNDM7CQkJCXNrYl9wdWxsKHNrYiwgMik7CiYjNDM7CQkJfQogCQl9CiAKIAkJc2tiLSZndDtpcF9zdW1tZWQgPSBDSEVDS1NVTV9OT05FOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzAyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gdGhhdCBQUFRQIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCwgYW5kIG15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYCBmaWxlLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGNoYW5nZXMgc2VlbSB0byBiZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIGBwcHRwX3Jjdl9jb3JlYCBmdW5jdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaXNzZWN0IHRoYXQgdG8gZ3Jhc3AgdGhlIGltcGFjdCBvZiB0aGUgcGF0Y2guCgpCZXlvbmQgdGhlIGNvZGUgaXRzZWxmLCBJIHNob3VsZCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IGludGVyYWN0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGFuZCBzeW1ib2wgZGVmaW5pdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvcHBwL2AgZGlyZWN0b3J5LCBpbmNsdWRpbmcgdGhhdCBgcHB0cC5jYCBmaWxlLiBJIG5lZWQgdG8ga25vdyBob3cgdGhpcyBtb2RpZmljYXRpb24gaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIFBQUCBzdGFjaywgYW5kIGhvdyBpdCBtaWdodCBiZSBlbmFibGVkL2Rpc2FibGVkLgoKRmluYWxseSwgSSYjMzk7bGwgbGV2ZXJhZ2UgdGhlIHRvb2xzIGF0IG15IGRpc3Bvc2FsLiBHcmVwcGluZyB0aHJvdWdoIHRoZSBjb2RlYmFzZSBvciBzdHJhdGVnaWNhbGx5IHVzaW5nIGByZWFkLWZpbGVgIHRvIHplcm8gaW4gb24gcmVsZXZhbnQgY29kZSBzZWN0aW9ucywgZGVwZW5kZW5jaWVzLCBvciBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcC4gSXQmIzM5O3MgdGltZSB0byBnZXQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgY2hhbmdlcyBhbmQgaG93IHRoZXkgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI2MDpcdFx0aXBfc2VsZWN0X2lkZW50KG5ldCwgc2tiLCBOVUxMKTtcbiAyNjE6XHRcdGlwX3NlbmRfY2hlY2soaXBoKTtcbiAyNjI6XHRcbiAyNjM6XHRcdGlwX2xvY2FsX291dChuZXQsIHNrYi1cdTAwM2Vzaywgc2tiKTtcbiAyNjQ6XHRcdHJldHVybiAxO1xuIDI2NTpcdFxuIDI2NjpcdHR4X2Vycm9yOlxuIDI2NzpcdFx0aXBfcnRfcHV0KHJ0KTtcbiAyNjg6XHR0eF9kcm9wOlxuIDI2OTpcdFx0a2ZyZWVfc2tiKHNrYik7XG4gMjcwOlx0XHRyZXR1cm4gMTtcbiAyNzE6XHR9XG4gMjcyOlx0XG4gMjczOlx0c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAyNzQ6XHR7XG4gMjc1Olx0XHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XG4gMjc2Olx0XHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdCA9IFx1MDAyNnBvLVx1MDAzZXByb3RvLnBwdHA7XG4gMjc3Olx0XHRpbnQgaGVhZGVyc2l6ZSwgcGF5bG9hZF9sZW4sIHNlcTtcbiAyNzg6XHRcdHVuc2lnbmVkIGludCBwYXlsb2FkX2F2YWlsO1xuIDI3OTpcdFx0X191OCAqcGF5bG9hZDtcbiAyODA6XHRcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcbiAyODE6XHRcbiAyODI6XHRcdGlmICghKHNrLVx1MDAzZXNrX3N0YXRlIFx1MDAyNiBQUFBPWF9DT05ORUNURUQpKVxuIDI4MzpcdFx0XHRnb3RvIGRyb3A7XG4gMjg0Olx0XG4gMjg1Olx0XHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXHUwMDNlZGF0YSk7XG4gMjg2Olx0XHRoZWFkZXJzaXplICA9IHNpemVvZigqaGVhZGVyKTtcbiAyODc6XHRcbiAyODg6XHRcdC8qIHRlc3QgaWYgYWNrbm93bGVkZ2VtZW50IHByZXNlbnQgKi9cbiAyODk6XHRcdGlmIChHUkVfSVNfQUNLKGhlYWRlci1cdTAwM2VncmVfaGQuZmxhZ3MpKSB7XG4gMjkwOlx0XHRcdF9fdTMyIGFjaztcbiAyOTE6XHRcbiAyOTI6XHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSkpXG4gMjkzOlx0XHRcdFx0Z290byBkcm9wO1xuIDI5NDpcdFx0XHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXHUwMDNlZGF0YSk7XG4gMjk1Olx0XG4gMjk2Olx0XHRcdC8qIGFjayBpbiBkaWZmZXJlbnQgcGxhY2UgaWYgUyA9IDAgKi9cbiAyOTc6XHRcdFx0YWNrID0gR1JFX0lTX1NFUShoZWFkZXItXHUwMDNlZ3JlX2hkLmZsYWdzKSA/IG50b2hsKGhlYWRlci1cdTAwM2VhY2spIDpcbiAyOTg6XHRcdFx0XHRcdFx0XHRcdCBudG9obChoZWFkZXItXHUwMDNlc2VxKTtcbiAyOTk6XHRcdFx0aWYgKGFjayBcdTAwM2Ugb3B0LVx1MDAzZWFja19yZWN2KVxuIDMwMDpcdFx0XHRcdG9wdC1cdTAwM2VhY2tfcmVjdiA9IGFjaztcbiAzMDE6XHRcdFx0LyogYWxzbyBoYW5kbGUgc2VxdWVuY2UgbnVtYmVyIHdyYXAtYXJvdW5kICAqL1xuIDMwMjpcdFx0XHRpZiAoV1JBUFBFRChhY2ssIG9wdC1cdTAwM2VhY2tfcmVjdikpXG4gMzAzOlx0XHRcdFx0b3B0LVx1MDAzZWFja19yZWN2ID0gYWNrO1xuIDMwNDpcdFx0fSBlbHNlIHtcbiAzMDU6XHRcdFx0aGVhZGVyc2l6ZSAtPSBzaXplb2YoaGVhZGVyLVx1MDAzZWFjayk7XG4gMzA2Olx0XHR9XG4gMzA3Olx0XHQvKiB0ZXN0IGlmIHBheWxvYWQgcHJlc2VudCAqL1xuIDMwODpcdFx0aWYgKCFHUkVfSVNfU0VRKGhlYWRlci1cdTAwM2VncmVfaGQuZmxhZ3MpKVxuIDMwOTpcdFx0XHRnb3RvIGRyb3A7XG4gMzEwOlx0XG4gMzExOlx0XHRwYXlsb2FkX2xlbiA9IG50b2hzKGhlYWRlci1cdTAwM2VwYXlsb2FkX2xlbik7XG4gMzEyOlx0XHRzZXEgICAgICAgICA9IG50b2hsKGhlYWRlci1cdTAwM2VzZXEpO1xuIDMxMzpcdFxuIDMxNDpcdFx0LyogY2hlY2sgZm9yIGluY29tcGxldGUgcGFja2V0IChsZW5ndGggc21hbGxlciB0aGFuIGV4cGVjdGVkKSAqL1xuIDMxNTpcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBwYXlsb2FkX2xlbikpXG4gMzE2Olx0XHRcdGdvdG8gZHJvcDtcbiAzMTc6XHRcbiAzMTg6XHRcdHBheWxvYWRfYXZhaWwgPSBza2ItXHUwMDNlbGVuIC0gaGVhZGVyc2l6ZTtcbiAzMTk6XHRcdC8qIGNoZWNrIGZvciBleHBlY3RlZCBzZXF1ZW5jZSBudW1iZXIgKi9cbiAzMjA6XHRcdGlmIChzZXEgXHUwMDNjIG9wdC1cdTAwM2VzZXFfcmVjdiAmIzQzOyAxIHx8IFdSQVBQRUQob3B0LVx1MDAzZXNlcV9yZWN2LCBzZXEpKSB7XG4gMzIxOlx0XHRcdGlmIChwYXlsb2FkX2F2YWlsIFx1MDAzZT0gUFBQX0hEUkxFTiAmIzQzOyAxKSB7XG4gMzIyOlx0XHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBQUFBfSERSTEVOICYjNDM7IDEpKVxuIDMyMzpcdFx0XHRcdFx0Z290byBkcm9wO1xuIDMyNDpcdFxuIDMyNTpcdFx0XHRcdHBheWxvYWQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBoZWFkZXJzaXplO1xuIDMyNjpcdFx0XHRcdGlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyBcdTAwMjZcdTAwMjYgcGF5bG9hZFsxXSA9PSBQUFBfVUkgXHUwMDI2XHUwMDI2XG4gMzI3Olx0XHRcdFx0ICAgIFBQUF9QUk9UT0NPTChwYXlsb2FkKSA9PSBQUFBfTENQIFx1MDAyNlx1MDAyNlxuIDMyODpcdFx0XHRcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxuIDMyOTpcdFx0XHRcdFx0Z290byBhbGxvd19wYWNrZXQ7XG4gMzMwOlx0XHRcdH1cbiAzMzE6XHRcdH0gZWxzZSB7XG4gMzMyOlx0XHRcdG9wdC1cdTAwM2VzZXFfcmVjdiA9IHNlcTtcbiAzMzM6XHRhbGxvd19wYWNrZXQ6XG4gMzM0Olx0XHRcdHNrYl9wdWxsKHNrYiwgaGVhZGVyc2l6ZSk7XG4gMzM1Olx0XG4gMzM2Olx0XHRcdGlmIChwYXlsb2FkX2F2YWlsIFx1MDAzZT0gMikge1xuIDMzNzpcdFx0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIDIpKVxuIDMzODpcdFx0XHRcdFx0Z290byBkcm9wO1xuIDMzOTpcdFxuIDM0MDpcdFx0XHRcdGlmIChza2ItXHUwMDNlZGF0YVswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHNrYi1cdTAwM2VkYXRhWzFdID09IFBQUF9VSSkge1xuIDM0MTpcdFx0XHRcdFx0LyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovXG4gMzQyOlx0XHRcdFx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgMylcbiAzNDM6XHRcdFx0XHRcdFx0Z290byBkcm9wO1xuIDM0NDpcdFx0XHRcdFx0c2tiX3B1bGwoc2tiLCAyKTtcbiAzNDU6XHRcdFx0XHR9XG4gMzQ2Olx0XHRcdH1cbiAzNDc6XHRcbiAzNDg6XHRcdFx0c2tiLVx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX05PTkU7XG4gMzQ5Olx0XHRcdHNrYl9zZXRfbmV0d29ya19oZWFkZXIoc2tiLCBza2ItXHUwMDNlaGVhZC1za2ItXHUwMDNlZGF0YSk7XG4gMzUwOlx0XHRcdHBwcF9pbnB1dChcdTAwMjZwby1cdTAwM2VjaGFuLCBza2IpO1xuIDM1MTpcdFxuIDM1MjpcdFx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4gMzUzOlx0XHR9XG4gMzU0Olx0ZHJvcDpcbiAzNTU6XHRcdGtmcmVlX3NrYihza2IpO1xuIDM1NjpcdFx0cmV0dXJuIE5FVF9SWF9EUk9QO1xuIDM1NzpcdH1cbiAzNTg6XHRcbiAzNTk6XHRzdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYzMgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFBQUCBOZXR3b3JraW5nIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIFBQUCBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBkcml2ZXIgaW5mcmFzdHJ1Y3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgUG9pbnQtdG8tUG9pbnQgUHJvdG9jb2wgKFBQUCkgY29uZmlndXJhdGlvbi4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBzdGFydCBieSBkaWdnaW5nIGludG8gdGhlIEtjb25maWcgZmlsZXMsIHN0YXJ0aW5nIHdpdGggdGhlIGBkcml2ZXJzL25ldC9wcHAvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4sIHRvIGZpZ3VyZSBvdXQgd2hlcmUgUFBQIHN1cHBvcnQsIGFuZCBieSBleHRlbnNpb24sIHRoZSBQUFRQIChQb2ludC10by1Qb2ludCBUdW5uZWxpbmcgUHJvdG9jb2wpIG9wdGlvbnMgYXJlIGRlZmluZWQuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbHMgYW5kIGRlcGVuZGVuY2llcy4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBidWlsZCBvcHRpb25zIGFuZCB1bmRlcnN0YW5kIGhvdyBQUFRQIGlzIGludGVncmF0ZWQgYW5kIHBvc3NpYmx5IGV2ZW4sIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoZSBkZXNpZ24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHB0cFxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19QUFBPRSkgJiM0Mzs9IHBwcG9lLm9cbmRyaXZlcnMvbmV0L3BwcC9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfUFBUUCkgJiM0Mzs9IHBwdHAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MjYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyB0aGUgUFBUUCBDb25maWd1cmF0aW9uIGluIHRoZSBLZXJuZWwqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBDT05GSUdfUFBUUGAgb3B0aW9uIHJlc2lkZXMgaW4gdGhlIGtlcm5lbCYjMzk7cyBidWlsZCBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYW4gZXhwZXJpZW5jZWQga2VybmVsIGRldmVsb3BlciwgaXMgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZS4gVGhlIGxpa2VseSBwbGFjZSB0byBzdGFydCBpcyB0aGUgUFBQIG5ldHdvcmtpbmcgY29kZSwgc28gSSYjMzk7bGwgY2hlY2sgaW5zaWRlIHRoZSBgZHJpdmVycy9uZXQvcHBwYCBkaXJlY3RvcnkuIE1vcmUgc3BlY2lmaWNhbGx5LCBJIGtub3cgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHR5cGljYWxseSBkZWZpbmVkIGluIGBLY29uZmlnYCBmaWxlcy4gVGhlcmVmb3JlLCBteSBpbml0aWFsIHRhcmdldCB3aWxsIGJlIGBkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ2AuIFRoYXQgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgZGVmaW5pdGlvbiBmb3IgYENPTkZJR19QUFRQYCBhbmQgdGVsbCBtZSB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBQVFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTUzPWNvbmZpZyBQUFBPRV9IQVNIX0JJVFNcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjAtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNjE6Y29uZmlnIFBQVFBcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE2Mi1cdHRyaXN0YXRlIFwmIzM0O1BQUCBvdmVyIElQdjQgKFBQVFApXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIzNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgUFBUUCBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtMZXQmIzM5O3MgY3JhY2sgb3BlbiB0aGUgS2NvbmZpZyBmaWxlcyByZWxhdGVkIHRvIFBQVFAuJiMzNDsgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IFBQVFAgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9uIG9yIGNvbmZpZ3VyYXRpb24gY29udGV4dCwgc28gSSYjMzk7bSBmb2N1c2luZyBteSBtZW50YWwgZW5lcmd5IG9uIHRoYXQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBkZXBlbmRlbmNpZXMsIG9wdGlvbnMsIGRlZmF1bHRzLCBhbmQgcG90ZW50aWFsbHkgYW55IHRyaXN0YXRlIGxvZ2ljIGFzc29jaWF0ZWQgd2l0aCB0aGUgUFBUUCBzdXBwb3J0LiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGJlIGFzc2Vzc2luZyBob3cgUFBUUCBzdXBwb3J0IGludGVyYWN0cyB3aXRoIG90aGVyIG5ldHdvcmsgY29tcG9uZW50cyBhbmQgc2VjdXJpdHkgZmVhdHVyZXMuIE15IGdvYWwgaXMgYSBmdWxsIHBpY3R1cmUgb2YgUFBUUCYjMzk7cyBidWlsZCB0aW1lIGludGVncmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNTA6XHRcbiAxNTE6XHRlbmRjaG9pY2VcbiAxNTI6XHRcbiAxNTM6XHRjb25maWcgUFBQT0VfSEFTSF9CSVRTXG4gMTU0Olx0XHRpbnRcbiAxNTU6XHRcdGRlZmF1bHQgMSBpZiBQUFBPRV9IQVNIX0JJVFNfMVxuIDE1NjpcdFx0ZGVmYXVsdCAyIGlmIFBQUE9FX0hBU0hfQklUU18yXG4gMTU3Olx0XHRkZWZhdWx0IDQgaWYgUFBQT0VfSEFTSF9CSVRTXzRcbiAxNTg6XHRcdGRlZmF1bHQgOCBpZiBQUFBPRV9IQVNIX0JJVFNfOFxuIDE1OTpcdFx0ZGVmYXVsdCA0XG4gMTYwOlx0XG4gMTYxOlx0Y29uZmlnIFBQVFBcbiAxNjI6XHRcdHRyaXN0YXRlIFwmIzM0O1BQUCBvdmVyIElQdjQgKFBQVFApXCYjMzQ7XG4gMTYzOlx0XHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxuIDE2NDpcdFx0c2VsZWN0IFBQUE9YXG4gMTY1Olx0XHRoZWxwXG4gMTY2Olx0XHQgIFN1cHBvcnQgZm9yIFBQUCBvdmVyIElQdjQuKFBvaW50LXRvLVBvaW50IFR1bm5lbGluZyBQcm90b2NvbClcbiAxNjc6XHRcbiAxNjg6XHRcdCAgVGhpcyBkcml2ZXIgcmVxdWlyZXMgcHBwZCBwbHVnaW4gdG8gd29yayBpbiBjbGllbnQgbW9kZSBvclxuIDE2OTpcdFx0ICBtb2RpZmllZCBwcHRwZCAocG9wdG9wKSB0byB3b3JrIGluIHNlcnZlciBtb2RlLlxuIDE3MDpcdFx0ICBTZWUgaHR0cDovL2FjY2VsLXBwdHAuc291cmNlZm9yZ2UubmV0LyBmb3IgaW5mb3JtYXRpb24gaG93IHRvXG4gMTcxOlx0XHQgIHV0aWxpemUgdGhpcyBtb2R1bGUuXG4gMTcyOlx0XG4gMTczOlx0Y29uZmlnIFBQUE9MMlRQXG4gMTc0Olx0XHR0cmlzdGF0ZSBcJiMzNDtQUFAgb3ZlciBMMlRQXCYjMzQ7XG4gMTc1Olx0XHRkZXBlbmRzIG9uIEwyVFBcbiAxNzY6XHRcdHNlbGVjdCBQUFBPWFxuIDE3NzpcdFx0aGVscFxuIDE3ODpcdFx0ICBTdXBwb3J0IGZvciBQUFAtb3Zlci1MMlRQIHNvY2tldCBmYW1pbHkuIEwyVFAgaXMgYSBwcm90b2NvbFxuIDE3OTpcdFx0ICB1c2VkIGJ5IElTUHMgYW5kIGVudGVycHJpc2VzIHRvIHR1bm5lbCBQUFAgdHJhZmZpYyBvdmVyIFVEUFxuIDE4MDpcdFx0ICB0dW5uZWxzLiBMMlRQIGlzIHJlcGxhY2luZyBQUFRQIGZvciBWUE4gdXNlcy5cbiAxODE6XHRpZiBUVFlcbiAxODI6XHRcbiAxODM6XHRjb25maWcgUFBQX0FTWU5DXG4gMTg0Olx0XHR0cmlzdGF0ZSBcJiMzNDtQUFAgc3VwcG9ydCBmb3IgYXN5bmMgc2VyaWFsIHBvcnRzXCYjMzQ7XG4gMTg1Olx0XHRzZWxlY3QgQ1JDX0NDSVRUXG4gMTg2Olx0XHRoZWxwXG4gMTg3Olx0XHQgIFNheSBZIChvciBNKSBoZXJlIGlmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIFBQUCBvdmVyIHN0YW5kYXJkXG4gMTg4Olx0XHQgIGFzeW5jaHJvbm91cyBzZXJpYWwgcG9ydHMsIHN1Y2ggYXMgQ09NMSBvciBDT00yIG9uIGEgUEMuICBJZiB5b3UgdXNlXG4gMTg5Olx0XHQgIGEgbW9kZW0gKG5vdCBhIHN5bmNocm9ub3VzIG9yIElTRE4gbW9kZW0pIHRvIGNvbnRhY3QgeW91ciBJU1AsIHlvdVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDU0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBORVRfSVBHUkVfREVNVVhgIGluIEtjb25maWcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHNvbWV0aGluZyDigJMgbGV0JiMzOTtzIHNlZSwgaXQmIzM5O3MgYWJvdXQgdGhlIGRlbXVsdGlwbGV4aW5nIG9mIElQIEdSRSBwYWNrZXRzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hlcmUgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGNvbmZpZ3VyZWQ6IEkgbmVlZCB0byBjaGVjayBgS2NvbmZpZ2AgZm9yIHRoZSBgTkVUX0lQR1JFX0RFTVVYYCBzeW1ib2wuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgcHJvYmFibHkgYSBib29sZWFuIG9yIHRyaXN0YXRlLCBidXQgdGhlIGV4YWN0IGRldGFpbHMgd2lsbCBjb21lIG91dCBvZiBpbnNwZWN0aW5nIHRoZSBjb25maWcuIElmIGl0JiMzOTtzIGVuYWJsZWQsIHRoYXQgb2YgY291cnNlIHdvdWxkIHN1Z2dlc3Qgd2Ugd2FudCBzb21lIGRlbXVsdGlwbGV4aW5nOyBpZiBub3QsIHRoZXJlIG1pZ2h0IGJlIG90aGVyIG1lYW5zIG9mIEdSRSBkZW11eGluZyBoYXBwZW5pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGNvbmZpZyBvcHRpb24gYW5kIHRoZSBnZW5lcmFsIEdSRSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5ncyB0byBzZWUgdGhlIHR5cGljYWwgdXNlIGNhc2VzIGFuZCBob3cgdGhpcyBhbGlnbnMgd2l0aCB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfSVBHUkVfREVNVVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MTYyPWNvbmZpZyBORVRfSVBJUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTc5LVxubmV0L2lwdjQvS2NvbmZpZzoxODA6Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxubmV0L2lwdjQvS2NvbmZpZy0xODEtXHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIGRlbXVsdGlwbGV4ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM5NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIEdSRSBEZW11eCBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBORVRfSVBHUkVfREVNVVhgIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgY29uZmlndXJlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZS4gVGhpcyBpcyBsaWtlbHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgdG8gdHJhY2UgdGhlIEdSRSBkZW11bHRpcGxleGluZyBmdW5jdGlvbmFsaXR5LCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgY29uZmlndXJhdGlvbiBpcyB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIHRvd2FyZCB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvdXIgd2l0aGluIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTc1Olx0XG4gMTc2Olx0XHQgIFNheWluZyBZIHRvIHRoaXMgb3B0aW9uIHdpbGwgcHJvZHVjZSB0d28gbW9kdWxlcyAoID0gY29kZSB3aGljaCBjYW5cbiAxNzc6XHRcdCAgYmUgaW5zZXJ0ZWQgaW4gYW5kIHJlbW92ZWQgZnJvbSB0aGUgcnVubmluZyBrZXJuZWwgd2hlbmV2ZXIgeW91XG4gMTc4Olx0XHQgIHdhbnQpLiBNb3N0IHBlb3BsZSB3b24mIzM5O3QgbmVlZCB0aGlzIGFuZCBjYW4gc2F5IE4uXG4gMTc5Olx0XG4gMTgwOlx0Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxuIDE4MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4gMTgyOlx0XHRoZWxwXG4gMTgzOlx0XHQgIFRoaXMgaXMgaGVscGVyIG1vZHVsZSB0byBkZW11bHRpcGxleCBHUkUgcGFja2V0cyBvbiBHUkUgdmVyc2lvbiBmaWVsZCBjcml0ZXJpYS5cbiAxODQ6XHRcdCAgUmVxdWlyZWQgYnkgaXBfZ3JlIGFuZCBwcHRwIG1vZHVsZXMuXG4gMTg1Olx0XG4gMTg2Olx0Y29uZmlnIE5FVF9JUF9UVU5ORUxcbiAxODc6XHRcdHRyaXN0YXRlXG4gMTg4Olx0XHRzZWxlY3QgRFNUX0NBQ0hFXG4gMTg5Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4gMTkwOlx0XHRkZWZhdWx0IG5cbiAxOTE6XHRcbiAxOTI6XHRjb25maWcgTkVUX0lQR1JFXG4gMTkzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIHR1bm5lbHMgb3ZlciBJUFwmIzM0O1xuIDE5NDpcdFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcbiAxOTU6XHRcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG4gMTk2Olx0XHRoZWxwXG4gMTk3Olx0XHQgIFR1bm5lbGluZyBtZWFucyBlbmNhcHN1bGF0aW5nIGRhdGEgb2Ygb25lIHByb3RvY29sIHR5cGUgd2l0aGluXG4gMTk4Olx0XHQgIGFub3RoZXIgcHJvdG9jb2wgYW5kIHNlbmRpbmcgaXQgb3ZlciBhIGNoYW5uZWwgdGhhdCB1bmRlcnN0YW5kcyB0aGVcbiAxOTk6XHRcdCAgZW5jYXBzdWxhdGluZyBwcm90b2NvbC4gVGhpcyBwYXJ0aWN1bGFyIHR1bm5lbGluZyBkcml2ZXIgaW1wbGVtZW50c1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTUxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgcHB0cC5jIFBhY2tldCBSZWNlcHRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHJlYWxseSB1bmRlcnN0YW5kIGhvdyBQUFRQIHBhY2tldCByZWNlcHRpb24gaXMgaGFuZGxlZC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgaWRlbnRpZnkgdGhlIGtleSBlbnRyeSBwb2ludHMgd2l0aGluIGBwcHRwLmNgLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIHN0YXJ0IGJ5IGRpc3NlY3RpbmcgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgY29kZSBhbmQgbWFwIG91dCB0aGUgcGFja2V0IGhhbmRsaW5nIGxvZ2ljLiBJJiMzOTttIHByaW1hcmlseSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgdGhlIGRhdGFwYXRoIHdvcmtzLCBob3cgdGhlIHJlY2VpdmUgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYW5kIGhvdyB0aGUgcGFja2V0cyBtYWtlIHRoZWlyIHdheSB1cCB0aGUgbmV0d29ya2luZyBzdGFjay4gTG9va2luZyBhdCB0aGUgY29kZSBpcyB0aGUgb25seSB3YXkgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb24gYW55IG51YW5jZXMgaW4gdGhlIGltcGxlbWVudGF0aW9uLCBwYXJ0aWN1bGFybHkgZm9yIGVycm9yIGhhbmRsaW5nIG9yIG9wdGltaXphdGlvbiB0cmlja3MuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgd2lsbCBpbnZvbHZlIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBHUkUgcGFja2V0cyBhcmUgZGVtdWx0aXBsZXhlZCBhbmQsIHByZXN1bWFibHksIHBhc3NlZCB1cCB0byB0aGUgcmVsZXZhbnQgUFBQIGxheWVyLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaW5kIHRob3NlIGNydWNpYWwgZW50cnkgcG9pbnRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcHRwXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYz00Nz1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKGNoYW5fbG9jayk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0OTpzdGF0aWMgc3RydWN0IHByb3RvIHBwdHBfc2tfcHJvdG8gX19yZWFkX21vc3RseTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBwcHBfY2hhbm5lbF9vcHMgcHB0cF9jaGFuX29wcztcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTE6c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcHB0cF9vcHM7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUyLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz01Mz1zdGF0aWMgc3RydWN0IHBwcG94X3NvY2sgKmxvb2t1cF9jaGFuKHUxNiBjYWxsX2lkLCBfX2JlMzIgc19hZGRyKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTUtXHRzdHJ1Y3QgcHBwb3hfc29jayAqc29jaztcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTY6XHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTctXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz03Mj1zdGF0aWMgaW50IGxvb2t1cF9jaGFuX2RzdCh1MTYgY2FsbF9pZCwgX19iZTMyIGRfYWRkcilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTc0LVx0c3RydWN0IHBwcG94X3NvY2sgKnNvY2s7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjc1Olx0c3RydWN0IHBwdHBfb3B0ICpvcHQ7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTc2LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz05ND1zdGF0aWMgaW50IGFkZF9jaGFuKHN0cnVjdCBwcHBveF9zb2NrICpzb2NrLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo5NTpcdFx0ICAgIHN0cnVjdCBwcHRwX2FkZHIgKnNhKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy05Ni17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xMjQ9c3RhdGljIHZvaWQgZGVsX2NoYW4oc3RydWN0IHBwcG94X3NvY2sgKnNvY2spXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xMzEtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjEzMjpzdGF0aWMgc3RydWN0IHJ0YWJsZSAqcHB0cF9yb3V0ZV9vdXRwdXQoY29uc3Qgc3RydWN0IHBwcG94X3NvY2sgKnBvLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xMzMtXHRcdFx0XHRcdHN0cnVjdCBmbG93aTQgKmZsNClcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE0OC1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTQ5OnN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTUwLXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1My1cdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTU0Olx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcdTAwMjZwby1cdTAwM2Vwcm90by5wcHRwO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNTU6XHRzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICpoZHI7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1Ni1cdHVuc2lnbmVkIGludCBoZWFkZXJfbGVuID0gc2l6ZW9mKCpoZHIpO1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTY5LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNzA6XHRydCA9IHBwdHBfcm91dGVfb3V0cHV0KHBvLCBcdTAwMjZmbDQpO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNzEtXHRpZiAoSVNfRVJSKHJ0KSlcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTIxNi1cdHNrYl9wdXNoKHNrYiwgaGVhZGVyX2xlbik7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjIxNzpcdGhkciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cdTAwM2VkYXRhKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjE4LVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc1LVx0c3RydWN0IHBwcG94X3NvY2sgKnBvID0gcHBwb3hfc2soc2spO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzY6XHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdCA9IFx1MDAyNnBvLVx1MDAzZXByb3RvLnBwdHA7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Ny1cdGludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxO1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc5LVx0X191OCAqcGF5bG9hZDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjgwOlx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yODEtXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yODQtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI4NTpcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cdTAwM2VkYXRhKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjg2LVx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yOTMtXHRcdFx0Z290byBkcm9wO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyOTQ6XHRcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cdTAwM2VkYXRhKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjk1LVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzU4LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzozNTk6c3RhdGljIGludCBwcHRwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNjAte1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNjEtXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG87XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM2MjpcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzYzLVx0c3RydWN0IGlwaGRyICppcGg7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNzItXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM3MzpcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM3NC1cbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM5My1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Mzk0OnN0YXRpYyBpbnQgcHB0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1c2VydmFkZHIsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM5NS1cdFx0ICAgICBpbnQgc29ja2FkZHJfbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDI2LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0Mjc6c3RhdGljIGludCBwcHRwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDI4LVx0XHRcdGludCBzb2NrYWRkcl9sZW4sIGludCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQzMi1cdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDMzOlx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcdTAwMjZwby1cdTAwM2Vwcm90by5wcHRwO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00MzQtXHRzdHJ1Y3QgcnRhYmxlICpydDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2NS1cdHBvLVx1MDAzZWNoYW4ucHJpdmF0ZSA9IHNrO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NjY6XHRwby1cdTAwM2VjaGFuLm9wcyA9IFx1MDAyNnBwdHBfY2hhbl9vcHM7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDY4Olx0cnQgPSBwcHRwX3JvdXRlX291dHB1dChwbywgXHUwMDI2Zmw0KTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDY5LVx0aWYgKElTX0VSUihydCkpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ3OS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDgwOlx0cG8tXHUwMDNlY2hhbi5oZHJsZW4gPSAyICYjNDM7IHNpemVvZihzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDgxLVx0cG8tXHUwMDNlY2hhbi5kaXJlY3RfeG1pdCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00OTUtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ5NjpzdGF0aWMgaW50IHBwdHBfZ2V0bmFtZShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00OTctXHRpbnQgcGVlcilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUxMi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTEzOnN0YXRpYyBpbnQgcHB0cF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUxNC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDQtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU0NTpzdGF0aWMgdm9pZCBwcHRwX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDYte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTUzLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NTQ6c3RhdGljIGludCBwcHRwX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBrZXJuKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTUte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTU4LVx0c3RydWN0IHBwcG94X3NvY2sgKnBvO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NTk6XHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTYwLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NjE6XHRzayA9IHNrX2FsbG9jKG5ldCwgUEZfUFBQT1gsIEdGUF9LRVJORUwsIFx1MDAyNnBwdHBfc2tfcHJvdG8sIGtlcm4pO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjItXHRpZiAoIXNrKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTY3LVx0c29jay1cdTAwM2VzdGF0ZSA9IFNTX1VOQ09OTkVDVEVEO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1Njg6XHRzb2NrLVx1MDAzZW9wcyAgID0gXHUwMDI2cHB0cF9vcHM7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU2OS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTcwOlx0c2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzEtXHRzay1cdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzQtXHRzay1cdTAwM2Vza19wcm90b2NvbCAgICA9IFBYX1BST1RPX1BQVFA7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU3NTpcdHNrLVx1MDAzZXNrX2Rlc3RydWN0ICAgID0gcHB0cF9zb2NrX2Rlc3RydWN0O1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzYtXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01ODctXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU4ODpzdGF0aWMgaW50IHBwdHBfcHBwX2lvY3RsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgdW5zaWduZWQgaW50IGNtZCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTg5LVx0dW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01OTItXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU5MzpcdHN0cnVjdCBwcHRwX29wdCAqb3B0ID0gXHUwMDI2cG8tXHUwMDNlcHJvdG8ucHB0cDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTk0LVx0dm9pZCBfX3VzZXIgKmFyZ3AgPSAodm9pZCBfX3VzZXIgKilhcmc7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MTgtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcF9jaGFubmVsX29wcyBwcHRwX2NoYW5fb3BzID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjA6XHQuc3RhcnRfeG1pdCA9IHBwdHBfeG1pdCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjIxOlx0LmlvY3RsICAgICAgPSBwcHRwX3BwcF9pb2N0bCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjIyLX07XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYyMy1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjI0OnN0YXRpYyBzdHJ1Y3QgcHJvdG8gcHB0cF9za19wcm90byBfX3JlYWRfbW9zdGx5ID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MjUtXHQubmFtZSAgICAgPSBcJiMzNDtQUFRQXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjI5LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MzA6c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcHB0cF9vcHMgPSB7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzMS1cdC5mYW1pbHkgICAgID0gQUZfUFBQT1gsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzMi1cdC5vd25lciAgICAgID0gVEhJU19NT0RVTEUsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYzMzpcdC5yZWxlYXNlICAgID0gcHB0cF9yZWxlYXNlLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MzQ6XHQuYmluZCAgICAgICA9IHBwdHBfYmluZCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjM1Olx0LmNvbm5lY3QgICAgPSBwcHRwX2Nvbm5lY3QsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzNi1cdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MzctXHQuYWNjZXB0ICAgICA9IHNvY2tfbm9fYWNjZXB0LFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2Mzg6XHQuZ2V0bmFtZSAgICA9IHBwdHBfZ2V0bmFtZSxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjM5LVx0Lmxpc3RlbiAgICAgPSBzb2NrX25vX2xpc3Rlbixcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0OS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwb3hfcHJvdG8gcHBwb3hfcHB0cF9wcm90byA9IHtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjUxOlx0LmNyZWF0ZSA9IHBwdHBfY3JlYXRlLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NTItXHQub3duZXIgID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NTQtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY1NTpzdGF0aWMgY29uc3Qgc3RydWN0IGdyZV9wcm90b2NvbCBncmVfcHB0cF9wcm90b2NvbCA9IHtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjU2Olx0LmhhbmRsZXIgPSBwcHRwX3JjdixcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjU3LX07XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY1OC1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjU5OnN0YXRpYyBpbnQgX19pbml0IHBwdHBfaW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjYwLXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjY4Olx0ZXJyID0gZ3JlX2FkZF9wcm90b2NvbChcdTAwMjZncmVfcHB0cF9wcm90b2NvbCwgR1JFUFJPVE9fUFBUUCk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2OS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY3My1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njc0Olx0ZXJyID0gcHJvdG9fcmVnaXN0ZXIoXHUwMDI2cHB0cF9za19wcm90bywgMCk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY3NS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY3OS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjgwOlx0ZXJyID0gcmVnaXN0ZXJfcHBwb3hfcHJvdG8oUFhfUFJPVE9fUFBUUCwgXHUwMDI2cHBwb3hfcHB0cF9wcm90byk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4MS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4OC1vdXRfdW5yZWdpc3Rlcl9za19wcm90bzpcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njg5Olx0cHJvdG9fdW5yZWdpc3RlcihcdTAwMjZwcHRwX3NrX3Byb3RvKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjkwLW91dF9ncmVfZGVsX3Byb3RvY29sOlxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2OTE6XHRncmVfZGVsX3Byb3RvY29sKFx1MDAyNmdyZV9wcHRwX3Byb3RvY29sLCBHUkVQUk9UT19QUFRQKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjkyLW91dF9tZW1fZnJlZTpcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY5Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njk4OnN0YXRpYyB2b2lkIF9fZXhpdCBwcHRwX2V4aXRfbW9kdWxlKHZvaWQpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY5OS17XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTcwMC1cdHVucmVnaXN0ZXJfcHBwb3hfcHJvdG8oUFhfUFJPVE9fUFBUUCk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjcwMTpcdHByb3RvX3VucmVnaXN0ZXIoXHUwMDI2cHB0cF9za19wcm90byk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjcwMjpcdGdyZV9kZWxfcHJvdG9jb2woXHUwMDI2Z3JlX3BwdHBfcHJvdG9jb2wsIEdSRVBST1RPX1BQVFApO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy03MDMtXHR2ZnJlZShjYWxsaWRfc29jayk7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy03MDUtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjcwNjptb2R1bGVfaW5pdChwcHRwX2luaXRfbW9kdWxlKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NzA3Om1vZHVsZV9leGl0KHBwdHBfZXhpdF9tb2R1bGUpO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy03MDgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzQwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUFBUUCBHUkUgUGFja2V0IFJlY2VwdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyByaWdodCBub3cgaXMgb24gaG93IFBQVFAgdHJhZmZpYyBpcyBoYW5kbGVkIGF0IHRoZSBuZXR3b3JrIGxldmVsLCBzcGVjaWZpY2FsbHkgdGhlIHJlY2VwdGlvbiBvZiBHUkUgcGFja2V0cy4gRnJvbSB3aGF0IEkgdW5kZXJzdGFuZCwgdGhlIGZ1bmN0aW9uIGBwcHRwX3JjdmAgaXMgdGhlIGRlc2lnbmF0ZWQgaGFuZGxlciBmb3IgR1JFIHBhY2tldHMgZGVzaWduYXRlZCB3aXRoIGBHUkVQUk9UT19QUFRQYC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIHRoZSBnYXRla2VlcGVyIGZvciBQUFRQIHRyYWZmaWMgY29taW5nIGluIG92ZXIgR1JFLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHBwdHBfcmN2YCBuZWVkcyB0byBwcm9jZXNzIGluY29taW5nIEdSRSBwYWNrZXRzIGFuZCBkaXJlY3QgdGhlbSBhcHByb3ByaWF0ZWx5LCB3aGljaCBpdCBhY2NvbXBsaXNoZXMgYnkgZmluZGluZyB0aGUgcmVsZXZhbnQgc29ja2V0IGFuZCBwYXNzaW5nIHRoZSBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgdG8gYHNrX3JlY2VpdmVfc2tiYC4gVGhpcyBmdW5jdGlvbiB0aGVuIGxpa2VseSBpbnZva2VzIHRoZSBzb2NrZXQmIzM5O3MgYmFja2xvZyBoYW5kbGVyLiBUaGlzIHBhcnQgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCB0byBpbnZlc3RpZ2F0ZSBhcyBpdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgcGFja2V0cyBhcmUgcm91dGVkLiBgc2stJmd0O3NrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZWAgdGVsbHMgbWUgdGhhdCBgcHB0cF9yY3ZfY29yZWAgaXMgdGhlIGJhY2tsb2cgaGFuZGxlciBpbiB0aGlzIGNvbnRleHQuIE5vdyBJIHNob3VsZCBjaGVjayBleGFjdGx5IHdoYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBwcHRwX3JjdmAgZG9lcy4gSSB3aWxsIGNoZWNrIHBwdHAuYyBsaW5lcyAzNTgtMzkyIGFuZCBkaXNzZWN0IGl0cyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHB0cC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzU4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNTg6XHRcbiAzNTk6XHRzdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4gMzYwOlx0e1xuIDM2MTpcdFx0c3RydWN0IHBwcG94X3NvY2sgKnBvO1xuIDM2MjpcdFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuIDM2MzpcdFx0c3RydWN0IGlwaGRyICppcGg7XG4gMzY0Olx0XG4gMzY1Olx0XHRpZiAoc2tiLVx1MDAzZXBrdF90eXBlICE9IFBBQ0tFVF9IT1NUKVxuIDM2NjpcdFx0XHRnb3RvIGRyb3A7XG4gMzY3Olx0XG4gMzY4Olx0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCAxMikpXG4gMzY5Olx0XHRcdGdvdG8gZHJvcDtcbiAzNzA6XHRcbiAzNzE6XHRcdGlwaCA9IGlwX2hkcihza2IpO1xuIDM3MjpcdFxuIDM3MzpcdFx0aGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKilza2ItXHUwMDNlZGF0YTtcbiAzNzQ6XHRcbiAzNzU6XHRcdGlmIChoZWFkZXItXHUwMDNlZ3JlX2hkLnByb3RvY29sICE9IEdSRV9QUk9UT19QUFAgfHwgLyogUFBUUC1HUkUgcHJvdG9jb2wgZm9yIFBQVFAgKi9cbiAzNzY6XHRcdFx0R1JFX0lTX0NTVU0oaGVhZGVyLVx1MDAzZWdyZV9oZC5mbGFncykgfHwgICAgLyogZmxhZyBDU1VNIHNob3VsZCBiZSBjbGVhciAqL1xuIDM3NzpcdFx0XHRHUkVfSVNfUk9VVElORyhoZWFkZXItXHUwMDNlZ3JlX2hkLmZsYWdzKSB8fCAvKiBmbGFnIFJPVVRJTkcgc2hvdWxkIGJlIGNsZWFyICovXG4gMzc4Olx0XHRcdCFHUkVfSVNfS0VZKGhlYWRlci1cdTAwM2VncmVfaGQuZmxhZ3MpIHx8ICAgIC8qIGZsYWcgS0VZIHNob3VsZCBiZSBzZXQgKi9cbiAzNzk6XHRcdFx0KGhlYWRlci1cdTAwM2VncmVfaGQuZmxhZ3MgXHUwMDI2IEdSRV9GTEFHUykpICAgICAvKiBmbGFnIFJlY3Vyc2lvbiBDdHJsIHNob3VsZCBiZSBjbGVhciAqL1xuIDM4MDpcdFx0XHQvKiBpZiBpbnZhbGlkLCBkaXNjYXJkIHRoaXMgcGFja2V0ICovXG4gMzgxOlx0XHRcdGdvdG8gZHJvcDtcbiAzODI6XHRcbiAzODM6XHRcdHBvID0gbG9va3VwX2NoYW4obnRvaHMoaGVhZGVyLVx1MDAzZWNhbGxfaWQpLCBpcGgtXHUwMDNlc2FkZHIpO1xuIDM4NDpcdFx0aWYgKHBvKSB7XG4gMzg1Olx0XHRcdHNrYl9kc3RfZHJvcChza2IpO1xuIDM4NjpcdFx0XHRuZl9yZXNldF9jdChza2IpO1xuIDM4NzpcdFx0XHRyZXR1cm4gc2tfcmVjZWl2ZV9za2IoXHUwMDI2cG8tXHUwMDNlc2ssIHNrYiwgMCk7XG4gMzg4Olx0XHR9XG4gMzg5Olx0ZHJvcDpcbiAzOTA6XHRcdGtmcmVlX3NrYihza2IpO1xuIDM5MTpcdFx0cmV0dXJuIE5FVF9SWF9EUk9QO1xuIDM5MjpcdH1cbiAzOTM6XHRcbiAzOTQ6XHRzdGF0aWMgaW50IHBwdHBfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdXNlcnZhZGRyLFxuIDM5NTpcdFx0XHQgICAgIGludCBzb2NrYWRkcl9sZW4pXG4gMzk2Olx0e1xuIDM5NzpcdFx0c3RydWN0IHNvY2sgKnNrID0gc29jay1cdTAwM2VzaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzOTUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2MDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgUFBUUCBHUkUgSGFuZGxlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHBwdHBfcmN2X2NvcmVgLCBhbmQgaXQmIzM5O3MgZ290IG15IGF0dGVudGlvbi4gSXQmIzM5O3MgYSBmaXggcmVsYXRlZCB0byBwYWNrZXQgbGVuZ3RoIGFuZCBgcHNrYl9tYXlfcHVsbGAgY2hlY2tzIHdoZW4gdGhlIGtlcm5lbCBpcyBwcm9jZXNzaW5nIHJlY2VpdmVkIFBQVFAgR1JFIHBhY2tldHMuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGUgY2hlY2sgbm93IGVuc3VyZXMgdGhhdCB0aGUgcGF5bG9hZCBhdmFpbGFiaWxpdHkgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHJlcXVpcmVkLCBtZWFuaW5nIGBwYXlsb2FkX2F2YWlsICZndDs9IFBQUF9IRFJMRU4gJiM0MzsgMWAgYW5kIGBwYXlsb2FkX2F2YWlsICZndDs9IDJgIGFyZSBtZXQgYmVmb3JlIHRoZSBjb2RlIGFjY2Vzc2VzIHRoZSBwYXlsb2FkL2RhdGEuIFRoaXMgc291bmRzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBwYWNrZXQgcGFyc2luZyBsb2dpYyBhbmQgYm91bmRzIGNoZWNraW5nLCB3aGljaCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCkdpdmVuIHRoYXQgUFBUUCBzb2NrZXRzIGFyZSBzdGFuZGFyZCBuZXR3b3JrIHNvY2tldHMgYW5kIGFyZSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgdmlhIHN0YW5kYXJkIHNvY2tldCBzeXN0ZW0gY2FsbHMgKHRoaW5rIGBzb2NrZXQoQUZfUFBQT1gsIC4uLiwgUFhfUFJPVE9fUFBUUClgKSwgcmVjZWl2aW5nIEdSRSBwYWNrZXRzIChlLmcuLCBvdmVyIGxvb3BiYWNrIG9yIGEgbmV0bnMpLCB0aGlzIHNlZW1zIGxpa2UgYSBzb2xpZCBvcHBvcnR1bml0eS4gVGhlIGZhY3QgdGhhdCB0aGUgdnVsbmVyYWJpbGl0eSBpcyBpbiB0aGUgY29yZSBuZXR3b3JrIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIFBQUCBhbmQgUFBUUCwgZnVydGhlciBzdHJlbmd0aGVucyB0aGUgY2FzZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0IGZ1bmN0aW9ucyB0byBmb2N1cyBvbi4gT2J2aW91c2x5LCBgcHB0cF9yY3ZfY29yZWAgaXMgYSBrZXkgY2FuZGlkYXRlLiBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGBwcHRwX3JjdmAsIHNpbmNlIGl0IHNlZW1zIGxpa2UgYHBwdHBfcmN2X2NvcmVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVpbmcgdXNlZCBieSBgcHB0cF9yY3ZgLiBPdGhlciBpbnRlcmVzdGluZyBmdW5jdGlvbnMgdG8gaW5jbHVkZSBpbiB0aGUgZnV6emluZyBmb2N1cyBjb3VsZCBiZSBgcHB0cF9jb25uZWN0YCwgYHBwdHBfYmluZGAsIGBwcHRwX2NyZWF0ZWAsIGFuZCBgcHB0cF94bWl0YC4gSSYjMzk7bGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBpZiB0aGV5JiMzOTtyZSBzdGF0aWMsIGlubGluZWQsIG9yIGlmIEkgc2hvdWxkIGp1c3QgaW5jbHVkZSB0aGVtIGFsbCBmb3Igbm93LiBJIGtub3cgdGhhdCBgcHB0cF9yY3ZfY29yZWAgaXMgc3RhdGljLCBidXQgdGhlIGFkZHJlc3MgaXMgdGFrZW4gYnkgdGhlIGBzay0mZ3Q7c2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO2AgYXNzaWdubWVudC4gU2ltaWxhcmx5LCBgcHB0cF9yY3ZgIGlzIHN0YXRpYywgd2l0aCBpdHMgYWRkcmVzcyBiZWluZyB1c2VkIGJ5IGBncmVfcHB0cF9wcm90b2NvbC5oYW5kbGVyID0gcHB0cF9yY3ZgLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgc3ltYm9scyBkZWZpbmVkIGluIGBwcHRwLmNgIHRvby4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBJdCBsb29rcyBsaWtlIGBQUFRQYCBkZXBlbmRzIG9uIGBORVRfSVBHUkVfREVNVVhgIGFuZCBzZWxlY3RzIGBQUFBPWGAuIGBORVRfSVBHUkVfREVNVVhgIGl0c2VsZiBpcyBpbiB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGFuZCBpcyBhbHNvIHRyaXN0YXRlLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlIGJhc2UgYFBQUGAgc3Vic3lzdGVtIGl0c2VsZiAoYENPTkZJR19QUFBgKSBpcyBlbmFibGVkLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ2AgZmlsZSB0byBzZWUgd2hhdCBtZW51cyBhbmQgZGVwZW5kZW5jaWVzIHRoZXJlIGFyZSBhcyB3ZWxsLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgYnVpbGQgcmVxdWlyZW1lbnRzIGZvciBzdWNjZXNzZnVsIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgUFBQfGlmIFBQUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvS2NvbmZpZz02PWNvbmZpZyBQUFBcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjM1OmlmIFBQUFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMzYtXG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTUzPWNvbmZpZyBQUFBPRV9IQVNIX0JJVFNcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE1NC1cdGludFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTU1Olx0ZGVmYXVsdCAxIGlmIFBQUE9FX0hBU0hfQklUU18xXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNTY6XHRkZWZhdWx0IDIgaWYgUFBQT0VfSEFTSF9CSVRTXzJcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE1NzpcdGRlZmF1bHQgNCBpZiBQUFBPRV9IQVNIX0JJVFNfNFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTU4Olx0ZGVmYXVsdCA4IGlmIFBQUE9FX0hBU0hfQklUU184XG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTktXHRkZWZhdWx0IDRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4NjgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgS2VybmVsJiMzOTtzIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIFBQUCAoUG9pbnQtdG8tUG9pbnQgUHJvdG9jb2wpIGRyaXZlcnMgYXJlIGluY29ycG9yYXRlZCBpbnRvIHRoaXMga2VybmVsIGJ1aWxkLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydC4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIGRlcGVuZGVuY3kgb3IgaW5jbHVzaW9uIGxvZ2ljIGZvciB0aGUgUFBQLXJlbGF0ZWQgb3B0aW9ucy4gVGhpcyBmaWxlIGxpa2VseSBjb250cm9scyB0aGUgdmlzaWJpbGl0eSBhbmQgY29uZmlndXJhYmlsaXR5IG9mIHRoZSBQUFAgZHJpdmVycyBkdXJpbmcgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHByb2Nlc3MuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgb3IgYSBtZW51IGVudHJ5IHRoYXQgcG9pbnRzIG1lIHRvIHdoZXJlIHRoZSBQUFAgY29uZmlndXJhdGlvbiBlbGVtZW50cyBhcmUgZGVmaW5lZCwgaWYgbm90IGRlZmluZWQgZGlyZWN0bHkgd2l0aGluIHRoaXMgYEtjb25maWdgIGZpbGUgaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcHAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTMwMiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvS2NvbmZpZz01MjY9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3BsaXAvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy01MjctXG5kcml2ZXJzL25ldC9LY29uZmlnOjUyODpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctNTI5LVxuLS1cbmRyaXZlcnMvbmV0L01ha2VmaWxlPTU3PW9iai0kKENPTkZJR19QTElQKSAmIzQzOz0gcGxpcC9cbmRyaXZlcnMvbmV0L01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19QUFApICYjNDM7PSBwcHAvXG5kcml2ZXJzL25ldC9NYWtlZmlsZTo1OTpvYmotJChDT05GSUdfUFBQX0FTWU5DKSAmIzQzOz0gcHBwL1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX1BQUF9CU0RDT01QKSAmIzQzOz0gcHBwL1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX1BQUF9ERUZMQVRFKSAmIzQzOz0gcHBwL1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjI6b2JqLSQoQ09ORklHX1BQUF9NUFBFKSAmIzQzOz0gcHBwL1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX1BQUF9TWU5DX1RUWSkgJiM0Mzs9IHBwcC9cbmRyaXZlcnMvbmV0L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19QUFBPRSkgJiM0Mzs9IHBwcC9cbmRyaXZlcnMvbmV0L01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19QUFBPTDJUUCkgJiM0Mzs9IHBwcC9cbmRyaXZlcnMvbmV0L01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19QUFRQKSAmIzQzOz0gcHBwL1xuZHJpdmVycy9uZXQvTWFrZWZpbGUtNjctb2JqLSQoQ09ORklHX1NMSVApICYjNDM7PSBzbGlwL1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zODU3PXl0OTIxeF9kc2FfcG9ydF9zZXRfZGVmYXVsdF9wcmlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHU4IHByaW8pXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4NzUtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzg3NjpzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGFwcHByaW9zX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4Nzcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zODgyPXl0OTIxeF9kc2FfcG9ydF9nZXRfYXBwdHJ1c3Qoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdTggKnNlbCxcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzg4NS1cdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozODg2Olx0dTggYXBwcHJpb3NbMl1bMl0gPSB7fTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zODg3LVx0aW50IG5zZWw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4OTctXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzg5ODpcdGFwcHByaW9zWzBdWzBdID0gSUVFRV84MDIxUUFaX0FQUF9TRUxfRFNDUDtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozODk5Olx0YXBwcHJpb3NbMF1bMV0gPSAodmFsIFx1MDAzZVx1MDAzZSAoMyAqIFlUOTIxWF9BUFBfU0VMX0RTQ1ApKSBcdTAwMjYgNztcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozOTAwOlx0YXBwcHJpb3NbMV1bMF0gPSBEQ0JfQVBQX1NFTF9QQ1A7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzkwMTpcdGFwcHByaW9zWzFdWzFdID0gKHZhbCBcdTAwM2VcdTAwM2UgKDMgKiBZVDkyMVhfQVBQX1NFTF9DVkxBTl9QQ1ApKSBcdTAwMjYgNztcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozOTAyOlx0c29ydChhcHBwcmlvcywgQVJSQVlfU0laRShhcHBwcmlvcyksIHNpemVvZihhcHBwcmlvc1swXSksIGFwcHByaW9zX2NtcCxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zOTAzLVx0ICAgICBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzkwNS1cdG5zZWwgPSAwO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM5MDY6XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShhcHBwcmlvcykgXHUwMDI2XHUwMDI2IGFwcHByaW9zW2ldWzFdOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM5MDc6XHRcdHNlbFtuc2VsXSA9IGFwcHByaW9zW2ldWzBdO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM5MDgtXHRcdG5zZWwmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQtI2luY2x1ZGUgXHUwMDNjbmV0L3BrdF9jbHMuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTojaW5jbHVkZSBcdTAwM2N1YXBpL2xpbnV4L3BwcF9kZWZzLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD0zMTM9c3RydWN0IGFpcm9oYV9mb2VfbWFjX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgtMzE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaDozMTY6XHR1MTYgcHBwb2VfaWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oLTMxNy1cdHUxNiBzcmNfbWFjX2xvO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmg9NDczPXN0cnVjdCBhaXJvaGFfZmxvd19kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oLTUwMC1cdFx0dTggbnVtO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaDo1MDE6XHR9IHBwcG9lO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaC01MDItfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTM0Mj1zdGF0aWMgaW50IGFpcm9oYV9wcGVfZm9lX2VudHJ5X3ByZXBhcmUoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTM1OS1cdCAgICAgIEZJRUxEX1BSRVAoQUlST0hBX0ZPRV9JQjFfQklORF9WUE0sIGRhdGEtXHUwMDNldmxhbi5udW0pIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MzYwOlx0ICAgICAgRklFTERfUFJFUChBSVJPSEFfRk9FX0lCMV9CSU5EX1BQUE9FLCBkYXRhLVx1MDAzZXBwcG9lLm51bSkgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0zNjEtXHQgICAgICBBSVJPSEFfRk9FX0lCMV9CSU5EX1RUTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTQ1NS1cdFx0bWFjX2luZm8gPSAoc3RydWN0IGFpcm9oYV9mb2VfbWFjX2luZm8gKilsMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6NDU2Olx0XHRtYWNfaW5mby1cdTAwM2VwcHBvZV9pZCA9IGRhdGEtXHUwMDNlcHBwb2Uuc2lkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy00NTctXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDU5LVx0XHRcdFx0IEZJRUxEX1BSRVAoQUlST0hBX0ZPRV9NQUNfUFBQT0VfSUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjQ2MDpcdFx0XHRcdFx0ICAgIGRhdGEtXHUwMDNlcHBwb2Uuc2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDYxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDczLVx0XHRsMi1cdTAwM2VldHlwZSB8PSAhZGF0YS1cdTAwM2V2bGFuLm51bSA/IEJJVCgxNSkgOiAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzo0NzQ6XHR9IGVsc2UgaWYgKGRhdGEtXHUwMDNlcHBwb2UubnVtKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTQ3NS1cdFx0bDItXHUwMDNlZXR5cGUgPSBFVEhfUF9QUFBfU0VTO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MTA4OD1zdGF0aWMgaW50IGFpcm9oYV9wcGVfZmxvd19vZmZsb2FkX3JlcGxhY2Uoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTExNzctXHRcdGNhc2UgRkxPV19BQ1RJT05fUFBQT0VfUFVTSDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTE3ODpcdFx0XHRpZiAoZGF0YS5wcHBvZS5udW0gPT0gMSB8fCBkYXRhLnZsYW4ubnVtID09IDIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTExNzktXHRcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTExODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjExODE6XHRcdFx0ZGF0YS5wcHBvZS5zaWQgPSBhY3QtXHUwMDNlcHBwb2Uuc2lkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxMTgyOlx0XHRcdGRhdGEucHBwb2UubnVtJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTE4My1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM9MTkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtX3N5c3BvcnRfc3RhdHMgYmNtX3N5c3BvcnRfZ3N0cmluZ3Nfc3RhdHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjI5LVx0U1RBVF9NSUJfUlgoXCYjMzQ7cnhfdW5pY2FzdFwmIzM0OywgbWliLnJ4LnVjKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYzoyMzA6XHRTVEFUX01JQl9SWChcJiMzNDtyeF9wcHBcJiMzNDssIG1pYi5yeC5wcHApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTIzMS1cdFNUQVRfTUlCX1JYKFwmIzM0O3J4X2NyY1wmIzM0OywgbWliLnJ4LnJjcmMpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuaD01MTE9c3RydWN0IGJjbV9zeXNwb3J0X3J4X2NvdW50ZXJzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmgtNTI5LVx0dTMyXHR1YztcdFx0LyogUk8gIyBvZiB1bmljYXN0IHBrdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oOjUzMDpcdHUzMlx0cHBwO1x0XHQvKiBSTyAjIG9mIFBQUCBwa3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuaC01MzEtXHR1MzJcdHJjcmM7XHRcdC8qIFJPICgweDQ3MCksIyBvZiBDUkMgbWF0Y2ggcGt0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jPTIxMTg9c3RhdGljIHZvaWQgYm54MnhfdXBkYXRlX3BmY19uaWcoc3RydWN0IGxpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jLTIxMjEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jOjIxMjI6XHR1MzIgeGNtX21hc2sgPSAwLCBwcHBfZW5hYmxlID0gMCwgcGF1c2VfZW5hYmxlID0gMCwgbGxmY19vdXRfZW4gPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jLTIxMjMtXHR1MzIgbGxmY19lbmFibGUgPSAwLCB4Y21fb3V0X2VuID0gMCwgaHdwZmNfZW5hYmxlID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMtMjE0NS1cdFx0aWYgKENISVBfSVNfRTMoYnApKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jOjIxNDY6XHRcdFx0cHBwX2VuYWJsZSA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMtMjE0Ny1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jOjIxNDg6XHRcdFx0cHBwX2VuYWJsZSA9IDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMtMjE0OS1cdFx0eGNtX21hc2sgXHUwMDI2PSB+KHBvcnQgPyBOSUdfTExIMV9YQ01fTUFTS19SRUdfTExIMV9YQ01fTUFTS19CQ04gOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYy0yMTc2LVx0UkVHX1dSKGJwLCBwb3J0ID8gTklHX1JFR19QUFBfRU5BQkxFXzEgOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jOjIxNzc6XHQgICAgICAgTklHX1JFR19QUFBfRU5BQkxFXzAsIHBwcF9lbmFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jLTIxNzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmg9ODcxPWV4dGVybiBjb25zdCB1MzIgZG1hZV9yZWdfZ29fY1tdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oLTIwNjItI2RlZmluZSBOSUdfUkVHX0xFRF9NT0RFX1AwXHRcdFx0XHRcdCAweDEwMmYwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaDoyMDYzOi8qIFtSVyAzXSBmb3IgcG9ydDAgZW5hYmxlIGZvciBsbGZjIHBwcCBhbmQgcGF1c2UuIGIwIC0gYnJiMSBlbmFibGU7IGIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmgtMjA2NC0gICB0c2RtIGVuYWJsZTsgYjItIHVzZG0gZW5hYmxlICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmgtMjA2Ny0vKiBbUlcgMV0gU0FGQyBlbmFibGUgZm9yIHBvcnQwLiBUaGlzIHJlZ2lzdGVyIG1heSBnZXQgMSBvbmx5IHdoZW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oOjIwNjg6ICAgfnBwcF9lbmFibGUucHBwX2VuYWJsZSA9IDAgYW5kIHBhdXNlX2VuYWJsZS5wYXVzZV9lbmFibGUgPTAgZm9yIHRoZSBzYW1lXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaC0yMDY5LSAgIHBvcnQgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaC0yNjQwLS8qIFtSVyAxXSBQYXVzZSBlbmFibGUgZm9yIHBvcnQwLiBUaGlzIHJlZ2lzdGVyIG1heSBnZXQgMSBvbmx5IHdoZW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oOjI2NDE6ICAgfnNhZmNfZW5hYmxlLnNhZmNfZW5hYmxlID0gMCBhbmQgcHBwX2VuYWJsZS5wcHBfZW5hYmxlID0wIGZvciB0aGUgc2FtZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmgtMjY0Mi0gICBwb3J0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYz0xMDczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtZ2VuZXRfc3RhdHMgYmNtZ2VuZXRfZ3N0cmluZ3Nfc3RhdHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTExMTYtXHRTVEFUX0dFTkVUX01JQl9SWChcJiMzNDtyeF91bmljYXN0XCYjMzQ7LCBtaWIucngudWMpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYzoxMTE3Olx0U1RBVF9HRU5FVF9NSUJfUlgoXCYjMzQ7cnhfcHBwXCYjMzQ7LCBtaWIucngucHBwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMtMTExOC1cdFNUQVRfR0VORVRfTUlCX1JYKFwmIzM0O3J4X2NyY1wmIzM0OywgbWliLnJ4LnJjcmMpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0Lmg9OTU9c3RydWN0IGJjbWdlbmV0X3J4X2NvdW50ZXJzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5oLTExMy1cdHUzMlx0dWM7XHRcdC8qIFJPICMgb2YgdW5pY2FzdCBwa3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0Lmg6MTE0Olx0dTMyXHRwcHA7XHRcdC8qIFJPICMgb2YgUFBQIHBrdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuaC0xMTUtXHR1MzJcdHJjcmM7XHRcdC8qIFJPICgweDQ3MCksIyBvZiBDUkMgbWF0Y2ggcGt0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oPTIwNT1zdHJ1Y3QgcG9ydF9zdGF0cyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oLTIyMi1cdHU2NCB0eF9wYXVzZTsgICAgICAgICAgICAgLyogIyBvZiB0cmFuc21pdHRlZCBwYXVzZSBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjM6XHR1NjQgdHhfcHBwMDsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gMCBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjQ6XHR1NjQgdHhfcHBwMTsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gMSBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjU6XHR1NjQgdHhfcHBwMjsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gMiBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjY6XHR1NjQgdHhfcHBwMzsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gMyBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjc6XHR1NjQgdHhfcHBwNDsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gNCBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjg6XHR1NjQgdHhfcHBwNTsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gNSBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjk6XHR1NjQgdHhfcHBwNjsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gNiBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMzA6XHR1NjQgdHhfcHBwNzsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gNyBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaC0yMzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oLTI1Mi1cdHU2NCByeF9wYXVzZTsgICAgICAgICAgICAgLyogIyBvZiByZWNlaXZlZCBwYXVzZSBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTM6XHR1NjQgcnhfcHBwMDsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gMCBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTQ6XHR1NjQgcnhfcHBwMTsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gMSBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTU6XHR1NjQgcnhfcHBwMjsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gMiBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTY6XHR1NjQgcnhfcHBwMzsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gMyBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTc6XHR1NjQgcnhfcHBwNDsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gNCBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTg6XHR1NjQgcnhfcHBwNTsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gNSBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTk6XHR1NjQgcnhfcHBwNjsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gNiBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNjA6XHR1NjQgcnhfcHBwNzsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gNyBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaC0yNjEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM9NDU9c3RhdGljIGNvbnN0IGNoYXIgc3RhdHNfc3RyaW5nc1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmMtNjItXHRcJiMzNDt0eF9wYXVzZV9mcmFtZXMgICAgICAgIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjYzOlx0XCYjMzQ7dHhfcHBwMF9mcmFtZXMgICAgICAgICBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo2NDpcdFwmIzM0O3R4X3BwcDFfZnJhbWVzICAgICAgICAgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6NjU6XHRcJiMzNDt0eF9wcHAyX2ZyYW1lcyAgICAgICAgIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjY2Olx0XCYjMzQ7dHhfcHBwM19mcmFtZXMgICAgICAgICBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo2NzpcdFwmIzM0O3R4X3BwcDRfZnJhbWVzICAgICAgICAgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6Njg6XHRcJiMzNDt0eF9wcHA1X2ZyYW1lcyAgICAgICAgIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjY5Olx0XCYjMzQ7dHhfcHBwNl9mcmFtZXMgICAgICAgICBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo3MDpcdFwmIzM0O3R4X3BwcDdfZnJhbWVzICAgICAgICAgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmMtNzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmMtOTMtXHRcJiMzNDtyeF9wYXVzZV9mcmFtZXMgICAgICAgIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjk0Olx0XCYjMzQ7cnhfcHBwMF9mcmFtZXMgICAgICAgICBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo5NTpcdFwmIzM0O3J4X3BwcDFfZnJhbWVzICAgICAgICAgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6OTY6XHRcJiMzNDtyeF9wcHAyX2ZyYW1lcyAgICAgICAgIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjk3Olx0XCYjMzQ7cnhfcHBwM19mcmFtZXMgICAgICAgICBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo5ODpcdFwmIzM0O3J4X3BwcDRfZnJhbWVzICAgICAgICAgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6OTk6XHRcJiMzNDtyeF9wcHA1X2ZyYW1lcyAgICAgICAgIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjEwMDpcdFwmIzM0O3J4X3BwcDZfZnJhbWVzICAgICAgICAgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6MTAxOlx0XCYjMzQ7cnhfcHBwN19mcmFtZXMgICAgICAgICBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYy0xMDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jPTYzNDU9dm9pZCB0NF9nZXRfcG9ydF9zdGF0cyhzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgaW50IGlkeCwgc3RydWN0IHBvcnRfc3RhdHMgKnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jLTYzNzAtXHRwLVx1MDAzZXR4X3BhdXNlICAgICAgICAgICAgPSBHRVRfU1RBVChUWF9QT1JUX1BBVVNFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2MzcxOlx0cC1cdTAwM2V0eF9wcHAwICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2MzcyOlx0cC1cdTAwM2V0eF9wcHAxICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2MzczOlx0cC1cdTAwM2V0eF9wcHAyICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2Mzc0Olx0cC1cdTAwM2V0eF9wcHAzICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2Mzc1Olx0cC1cdTAwM2V0eF9wcHA0ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2Mzc2Olx0cC1cdTAwM2V0eF9wcHA1ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2Mzc3Olx0cC1cdTAwM2V0eF9wcHA2ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2Mzc4Olx0cC1cdTAwM2V0eF9wcHA3ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02Mzc5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02NDA0LVx0cC1cdTAwM2VyeF9wYXVzZSAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QQVVTRSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwNTpcdHAtXHUwMDNlcnhfcHBwMCAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwNjpcdHAtXHUwMDNlcnhfcHBwMSAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwNzpcdHAtXHUwMDNlcnhfcHBwMiAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQMik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwODpcdHAtXHUwMDNlcnhfcHBwMyAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQMyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwOTpcdHAtXHUwMDNlcnhfcHBwNCAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQxMDpcdHAtXHUwMDNlcnhfcHBwNSAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQNSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQxMTpcdHAtXHUwMDNlcnhfcHBwNiAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQNik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQxMjpcdHAtXHUwMDNlcnhfcHBwNyAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQNyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtNjQxMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmg9MzIxMD1zdHJ1Y3QgZndfcG9ydF9zdGF0c19jbWQge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaC0zMjQxLVx0XHRcdF9fYmU2NCB0eF9wYXVzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjQyOlx0XHRcdF9fYmU2NCB0eF9wcHAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDM6XHRcdFx0X19iZTY0IHR4X3BwcDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmg6MzI0NDpcdFx0XHRfX2JlNjQgdHhfcHBwMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjQ1Olx0XHRcdF9fYmU2NCB0eF9wcHAzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDY6XHRcdFx0X19iZTY0IHR4X3BwcDQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmg6MzI0NzpcdFx0XHRfX2JlNjQgdHhfcHBwNTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjQ4Olx0XHRcdF9fYmU2NCB0eF9wcHA2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDk6XHRcdFx0X19iZTY0IHR4X3BwcDc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmgtMzI1MC1cdFx0XHRfX2JlNjQgcnhfYnl0ZXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oLTMyNjctXHRcdFx0X19iZTY0IHJ4X3BhdXNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNjg6XHRcdFx0X19iZTY0IHJ4X3BwcDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmg6MzI2OTpcdFx0XHRfX2JlNjQgcnhfcHBwMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjcwOlx0XHRcdF9fYmU2NCByeF9wcHAyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNzE6XHRcdFx0X19iZTY0IHJ4X3BwcDM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmg6MzI3MjpcdFx0XHRfX2JlNjQgcnhfcHBwNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjczOlx0XHRcdF9fYmU2NCByeF9wcHA1O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNzQ6XHRcdFx0X19iZTY0IHJ4X3BwcDY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmg6MzI3NTpcdFx0XHRfX2JlNjQgcnhfcHBwNztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaC0zMjc2LVx0XHRcdF9fYmU2NCByeF9sZXNzXzY0Yjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmg9MjEzPXN0cnVjdCBkcGFhMl9mYXByIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtMjM2LVx0dTggbXBsc19vZmZzZXRfMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaDoyMzc6XHR1OCBwcHBvZV9vZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtMjM4LVx0LyogNjQtYml0IHdvcmQgNSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uaD0xMTQ9c3RydWN0IGZtYW5fcHJzX3Jlc3VsdCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5oLTEzNC1cdHU4IGV0eXBlX29mZjtcdFx0LyogRVRZUEUgb2Zmc2V0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmg6MTM1Olx0dTggcHBwb2Vfb2ZmO1x0XHQvKiBQUFAgb2Zmc2V0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmgtMTM2LVx0dTggbXBsc19vZmZbMl07XHRcdC8qIE1QTFMgb2Zmc2V0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC5oPTc0PXN0cnVjdCBmc19vcHMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQuaC05Ny0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQuaDo5ODojZGVmaW5lIE1BWF9NVFUgMTUwOFx0XHQvKiBBbGxvdyBmdWxsc2l6ZWQgcHBwb2UgcGFja2V0cyBvdmVyIFZMQU4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQuaC05OS0jZGVmaW5lIE1JTl9NVFUgNDZcdFx0LyogdGhpcyBpcyBkYXRhIHNpemUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2RlYnVnZnMuYz00Nz1zdGF0aWMgc3RydWN0IGhuczNfZGJnX2NtZF9pbmZvIGhuczNfZGJnX2NtZFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZGVidWdmcy5jLTIyMi1cdHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZGVidWdmcy5jOjIyMzpcdFx0Lm5hbWUgPSBcJiMzNDtwcHBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2RlYnVnZnMuYy0yMjQtXHRcdC5jbWQgPSBITkFFM19EQkdfQ01EX1JFR19QUFAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYz0zOTA9c3RhdGljIGNvbnN0IHN0cnVjdCBoY2xnZV9kYmdfZGZ4X21lc3NhZ2UgaGNsZ2VfZGJnX3J0Y19yZWdbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jLTQxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM6NDIwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaGNsZ2VfZGJnX2RmeF9tZXNzYWdlIGhjbGdlX2RiZ19wcHBfcmVnW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jLTQyMS1cdHtmYWxzZSwgXCYjMzQ7UmVzZXJ2ZWRcJiMzNDt9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM9NjY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGNsZ2VfZGJnX3JlZ190eXBlX2luZm8gaGNsZ2VfZGJnX3JlZ19pbmZvW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy03MTAtXHR7IC5jbWQgPSBITkFFM19EQkdfQ01EX1JFR19QUFAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jOjcxMTpcdCAgLmRmeF9tc2cgPSBcdTAwMjZoY2xnZV9kYmdfcHBwX3JlZ1swXSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM6NzEyOlx0ICAucmVnX21zZyA9IHsgLm1zZ19udW0gPSBBUlJBWV9TSVpFKGhjbGdlX2RiZ19wcHBfcmVnKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmMtNzEzLVx0XHQgICAgICAgLm9mZnNldCA9IEhDTEdFX0RCR19ERlhfUFBQX09GRlNFVCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jPTEyNDk9c3RhdGljIGludCBoY2xnZV9kYmdfZHVtcF9ydGNfcmVnX2NtZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy0xMjUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYzoxMjU0OnN0YXRpYyBpbnQgaGNsZ2VfZGJnX2R1bXBfcHBwX3JlZ19jbWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy0xMjU1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jPTI5Mzg9c3RhdGljIGNvbnN0IHN0cnVjdCBoY2xnZV9kYmdfZnVuYyBoY2xnZV9kYmdfY21kX2Z1bmNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jLTMwNDQtXHRcdC5jbWQgPSBITkFFM19EQkdfQ01EX1JFR19QUFAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jOjMwNDU6XHRcdC5kYmdfcmVhZF9mdW5jID0gaGNsZ2VfZGJnX2R1bXBfcHBwX3JlZ19jbWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jLTMwNDYtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYz0yMDg9c3RhdGljIGNvbnN0IHN0cnVjdCBoY2xnZV9od19lcnJvciBoY2xnZV9uY3NpX2Vycl9pbnRbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMjE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjIxODpzdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2Vycm9yIGhjbGdlX3BwcF9tcGZfYWJub3JtYWxfaW50X3N0MVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTIxOS1cdHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMzQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjM0ODpzdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2Vycm9yIGhjbGdlX3BwcF9wZl9hYm5vcm1hbF9pbnRbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0zNDktXHR7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTM2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYzozNjI6c3RhdGljIGNvbnN0IHN0cnVjdCBoY2xnZV9od19lcnJvciBoY2xnZV9wcHBfbXBmX2Fibm9ybWFsX2ludF9zdDNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0zNjMtXHR7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jPTg0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2Vycm9yIGhjbGdlX3NzdV9jb21fZXJyX2ludFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NTItXHRcdC5pbnRfbXNrID0gQklUKDEpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjg1MzpcdFx0Lm1zZyA9IFwmIzM0O3BwcF9tYl9udW1fZXJyXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTg1NC1cdFx0LnJlc2V0X2xldmVsID0gSE5BRTNfTk9ORV9SRVNFVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NTYtXHRcdC5pbnRfbXNrID0gQklUKDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjg1NzpcdFx0Lm1zZyA9IFwmIzM0O3BwcF9tYmlkX2VyclwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NTgtXHRcdC5yZXNldF9sZXZlbCA9IEhOQUUzX0dMT0JBTF9SRVNFVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NjAtXHRcdC5pbnRfbXNrID0gQklUKDMpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjg2MTpcdFx0Lm1zZyA9IFwmIzM0O3BwcF9ybHRfbWFjX2VyclwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NjItXHRcdC5yZXNldF9sZXZlbCA9IEhOQUUzX0dMT0JBTF9SRVNFVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NjQtXHRcdC5pbnRfbXNrID0gQklUKDQpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjg2NTpcdFx0Lm1zZyA9IFwmIzM0O3BwcF9ybHRfaG9zdF9lcnJcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtODY2LVx0XHQucmVzZXRfbGV2ZWwgPSBITkFFM19HTE9CQUxfUkVTRVRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM9MTg3OT1zdGF0aWMgaW50IGhjbGdlX2NvbmZpZ19pZ3VfZWd1X2h3X2Vycl9pbnQoc3RydWN0IGhjbGdlX2RldiAqaGRldiwgYm9vbCBlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTkxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYzoxOTE4OnN0YXRpYyBpbnQgaGNsZ2VfY29uZmlnX3BwcF9lcnJvcl9pbnRlcnJ1cHQoc3RydWN0IGhjbGdlX2RldiAqaGRldiwgdTMyIGNtZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0xOTE5LVx0XHRcdFx0XHQgICAgYm9vbCBlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYzoxOTY3OnN0YXRpYyBpbnQgaGNsZ2VfY29uZmlnX3BwcF9od19lcnJfaW50KHN0cnVjdCBoY2xnZV9kZXYgKmhkZXYsIGJvb2wgZW4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTE5NzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MTk3MTpcdHJldCA9IGhjbGdlX2NvbmZpZ19wcHBfZXJyb3JfaW50ZXJydXB0KGhkZXYsIEhDTEdFX1BQUF9DTUQwX0lOVF9DTUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk3Mi1cdFx0XHRcdFx0ICAgICAgIGVuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYzoxOTc2Olx0cmV0ID0gaGNsZ2VfY29uZmlnX3BwcF9lcnJvcl9pbnRlcnJ1cHQoaGRldiwgSENMR0VfUFBQX0NNRDFfSU5UX0NNRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0xOTc3LVx0XHRcdFx0XHQgICAgICAgZW4pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYz0yMjUwPXN0YXRpYyBpbnQgaGNsZ2VfaGFuZGxlX21wZl9yYXNfZXJyb3Ioc3RydWN0IGhjbGdlX2RldiAqaGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMjMzMC1cdFx0aGNsZ2VfbG9nX2Vycm9yKGRldiwgXCYjMzQ7UFBQX01QRl9BQk5PUk1BTF9JTlRfU1QxXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjIzMzE6XHRcdFx0XHRcdTAwMjZoY2xnZV9wcHBfbXBmX2Fibm9ybWFsX2ludF9zdDFbMF0sIHN0YXR1cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0yMzMyLVx0XHRcdFx0XHUwMDI2YWVfZGV2LVx1MDAzZWh3X2Vycl9yZXNldF9yZXEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0yMzM2LVx0XHRoY2xnZV9sb2dfZXJyb3IoZGV2LCBcJiMzNDtQUFBfTVBGX0FCTk9STUFMX0lOVF9TVDNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MjMzNzpcdFx0XHRcdFx1MDAyNmhjbGdlX3BwcF9tcGZfYWJub3JtYWxfaW50X3N0M1swXSwgc3RhdHVzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTIzMzgtXHRcdFx0XHRcdTAwMjZhZV9kZXYtXHUwMDNlaHdfZXJyX3Jlc2V0X3JlcSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jPTI3MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBoY2xnZV9od19ibGsgaHdfYmxrW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTI3MjMtXHRcdC5uYW1lID0gXCYjMzQ7UFBQXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjI3MjQ6XHRcdC5jb25maWdfZXJyX2ludCA9IGhjbGdlX2NvbmZpZ19wcHBfaHdfZXJyX2ludCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0yNzI1LVx0fSwge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYz0yOTc1PXN0YXRpYyBpbnQgaGNsZ2VfaGFuZGxlX3BmX21zaXhfZXJyb3Ioc3RydWN0IGhjbGdlX2RldiAqaGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMzAwNS1cdFx0aGNsZ2VfbG9nX2Vycm9yKGRldiwgXCYjMzQ7UFBQX1BGX0FCTk9STUFMX0lOVF9TVDBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MzAwNjpcdFx0XHRcdFx1MDAyNmhjbGdlX3BwcF9wZl9hYm5vcm1hbF9pbnRbMF0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMzAwNy1cdFx0XHRcdHN0YXR1cywgcmVzZXRfcmVxdWVzdHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC01Ni0jaW5jbHVkZSBcdTAwM2NuZXQvZ3RwLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaDo1NzojaW5jbHVkZSBcdTAwM2NsaW51eC9wcHBfZGVmcy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNTgtI2luY2x1ZGUgXCYjMzQ7aWNlX2Rldmlkcy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mZGlyLmg9MTMyPXN0cnVjdCBpY2VfZmRpcl91ZHBfZ3RwIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2ZkaXIuaC0xNDItXHRcdHNwYXJlOjQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2ZkaXIuaDoxNDM6XHR1OFx0cHBwOjEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2ZkaXIuaC0xNDQtXHRcdHJxaToxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jPTU4Nz1zdGF0aWMgY29uc3QgdTMyIGljZV9wdHlwZXNfZ3RwdVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jLTU5OC0vKiBQYWNrZXQgdHlwZXMgZm9yIFBQUG9FICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYzo1OTk6c3RhdGljIGNvbnN0IHUzMiBpY2VfcHR5cGVzX3BwcG9lW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYy02MDAtXHQweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jPTgwNz1zdGF0aWMgaW50IGljZV9mbG93X3Byb2Nfc2VnX2hkcnMoc3RydWN0IGljZV9mbG93X3Byb2ZfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mbG93LmMtODgxLVx0XHR9IGVsc2UgaWYgKGhkcnMgXHUwMDI2IElDRV9GTE9XX1NFR19IRFJfUFBQT0UpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jOjg4MjpcdFx0XHRzcmMgPSAoY29uc3QgdW5zaWduZWQgbG9uZyAqKWljZV9wdHlwZXNfcHBwb2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYy04ODMtXHRcdFx0Yml0bWFwX2FuZChwYXJhbXMtXHUwMDNlcHR5cGVzLCBwYXJhbXMtXHUwMDNlcHR5cGVzLCBzcmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mbG93LmMtODg1LVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mbG93LmM6ODg2Olx0XHRcdHNyYyA9IChjb25zdCB1bnNpZ25lZCBsb25nICopaWNlX3B0eXBlc19wcHBvZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jLTg4Ny1cdFx0XHRiaXRtYXBfYW5kbm90KHBhcmFtcy1cdTAwM2VwdHlwZXMsIHBhcmFtcy1cdTAwM2VwdHlwZXMsIHNyYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3Byb3RvY29sX3R5cGUuaD0yMzM9c3RydWN0IGljZV9wZmNwX2hkciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtMjQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmg6MjQyOnN0cnVjdCBpY2VfcHBwb2VfaGRyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oLTI0My1cdHU4IHJzcnZkX3Zlcl90eXBlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oLTI0Ni1cdF9fYmUxNiBsZW5ndGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3Byb3RvY29sX3R5cGUuaDoyNDc6XHRfX2JlMTYgcHBwX3Byb3RfaWQ7IC8qIGNvbnRyb2wgYW5kIGRhdGEgb25seSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtMjQ4LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmg9NDQ3PXVuaW9uIGljZV9wcm90X2hkciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtNDU4LVx0c3RydWN0IGljZV9wZmNwX2hkciBwZmNwX2hkcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oOjQ1OTpcdHN0cnVjdCBpY2VfcHBwb2VfaGRyIHBwcG9lX2hkcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oLTQ2MC1cdHN0cnVjdCBpY2VfbDJ0cHYzX3Nlc3NfaGRyIGwydHB2M19zZXNzX2hkcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jPTExNTc9SUNFX0RFQ0xBUkVfUEtUX1RFTVBMQVRFKHBmY3Bfc2Vzc2lvbl9pcHY2KSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTExODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjExODY6SUNFX0RFQ0xBUkVfUEtUX09GRlNFVFMocHBwb2VfaXB2NF90Y3ApID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMTg3LVx0eyBJQ0VfTUFDX09GT1MsXHRcdDAgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTExOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjExOTU6SUNFX0RFQ0xBUkVfUEtUX1RFTVBMQVRFKHBwcG9lX2lwdjRfdGNwKSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTE5Ni1cdDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIC8qIElDRV9NQUNfT0ZPUyAwICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxMjIyOklDRV9ERUNMQVJFX1BLVF9PRkZTRVRTKHBwcG9lX2lwdjRfdWRwKSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTIyMy1cdHsgSUNFX01BQ19PRk9TLFx0XHQwIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxMjMxOklDRV9ERUNMQVJFX1BLVF9URU1QTEFURShwcHBvZV9pcHY0X3VkcCkgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEyMzItXHQweDAwLCAweDAwLCAweDAwLCAweDAwLCAvKiBJQ0VfTUFDX09GT1MgMCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTI1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6MTI1NTpJQ0VfREVDTEFSRV9QS1RfT0ZGU0VUUyhwcHBvZV9pcHY2X3RjcCkgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEyNTYtXHR7IElDRV9NQUNfT0ZPUyxcdFx0MCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTI2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6MTI2NDpJQ0VfREVDTEFSRV9QS1RfVEVNUExBVEUocHBwb2VfaXB2Nl90Y3ApID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjY1LVx0MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgLyogSUNFX01BQ19PRk9TIDAgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEyOTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjEyOTY6SUNFX0RFQ0xBUkVfUEtUX09GRlNFVFMocHBwb2VfaXB2Nl91ZHApID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjk3LVx0eyBJQ0VfTUFDX09GT1MsXHRcdDAgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEzMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjEzMDU6SUNFX0RFQ0xBUkVfUEtUX1RFTVBMQVRFKHBwcG9lX2lwdjZfdWRwKSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTMwNi1cdDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIC8qIElDRV9NQUNfT0ZPUyAwICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYz0xMzkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNlX2R1bW15X3BrdF9wcm9maWxlIGljZV9kdW1teV9wa3RfcHJvZmlsZXNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTE0MjAtXHRJQ0VfUEtUX1BST0ZJTEUocGZjcF9zZXNzaW9uX2lwdjQsIElDRV9QS1RfUEZDUCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjE0MjE6XHRJQ0VfUEtUX1BST0ZJTEUocHBwb2VfaXB2Nl91ZHAsIElDRV9QS1RfUFBQT0UgfCBJQ0VfUEtUX09VVEVSX0lQVjYgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xNDIyLVx0XHRcdFx0XHRJQ0VfUEtUX0lOTkVSX1VEUCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjE0MjM6XHRJQ0VfUEtUX1BST0ZJTEUocHBwb2VfaXB2Nl90Y3AsIElDRV9QS1RfUFBQT0UgfCBJQ0VfUEtUX09VVEVSX0lQVjYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxNDI0Olx0SUNFX1BLVF9QUk9GSUxFKHBwcG9lX2lwdjRfdWRwLCBJQ0VfUEtUX1BQUE9FIHwgSUNFX1BLVF9JTk5FUl9VRFApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxNDI1Olx0SUNFX1BLVF9QUk9GSUxFKHBwcG9lX2lwdjRfdGNwLCBJQ0VfUEtUX1BQUE9FKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTQyNi1cdElDRV9QS1RfUFJPRklMRShncmVfaXB2Nl90Y3AsIElDRV9QS1RfVFVOX05WR1JFIHwgSUNFX1BLVF9JTk5FUl9JUFY2IHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jPTU1NTc9aWNlX2ZpbmRfZHVtbXlfcGFja2V0KHN0cnVjdCBpY2VfYWR2X2xrdXBfZWxlbSAqbGt1cHMsIHUxNiBsa3Vwc19jbnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy01NjE0LVx0XHRcdG1hdGNoIHw9IElDRV9QS1RfUFBQT0U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjU2MTU6XHRcdFx0aWYgKGxrdXBzW2ldLmhfdS5wcHBvZV9oZHIucHBwX3Byb3RfaWQgPT1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtNTYxNi1cdFx0XHQgICAgaHRvbnMoUFBQX0lQVjYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM9NTY0MT1pY2VfZmlsbF9hZHZfZHVtbXlfcGFja2V0KHN0cnVjdCBpY2VfYWR2X2xrdXBfZWxlbSAqbGt1cHMsIHUxNiBsa3Vwc19jbnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy01NzI0LVx0XHRjYXNlIElDRV9QUFBPRTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6NTcyNTpcdFx0XHRsZW4gPSBzaXplb2Yoc3RydWN0IGljZV9wcHBvZV9oZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy01NzI2LVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM9MzcxPWljZV90Y19maWxsX3J1bGVzKHN0cnVjdCBpY2VfaHcgKmh3LCB1MzIgZmxhZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy00OTAtXHRcdCAgICAgSUNFX1RDX0ZMV1JfRklFTERfUFBQX1BST1RPKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzo0OTE6XHRcdHN0cnVjdCBpY2VfcHBwb2VfaGRyICp2YWxzLCAqbWFza3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTQ5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6NDkzOlx0XHR2YWxzID0gXHUwMDI2bGlzdFtpXS5oX3UucHBwb2VfaGRyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzo0OTQ6XHRcdG1hc2tzID0gXHUwMDI2bGlzdFtpXS5tX3UucHBwb2VfaGRyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy00OTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy00OTgtXHRcdGlmIChmbGFncyBcdTAwMjYgSUNFX1RDX0ZMV1JfRklFTERfUFBQT0VfU0VTU0lEKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjQ5OTpcdFx0XHR2YWxzLVx1MDAzZXNlc3Npb25faWQgPSBoZWFkZXJzLVx1MDAzZXBwcG9lX2hkci5zZXNzaW9uX2lkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy01MDAtXHRcdFx0bWFza3MtXHUwMDNlc2Vzc2lvbl9pZCA9IGNwdV90b19iZTE2KDB4RkZGRik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy01MDMtXHRcdGlmIChmbGFncyBcdTAwMjYgSUNFX1RDX0ZMV1JfRklFTERfUFBQX1BST1RPKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjUwNDpcdFx0XHR2YWxzLVx1MDAzZXBwcF9wcm90X2lkID0gaGVhZGVycy1cdTAwM2VwcHBvZV9oZHIucHBwX3Byb3RvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzo1MDU6XHRcdFx0bWFza3MtXHUwMDNlcHBwX3Byb3RfaWQgPSBjcHVfdG9fYmUxNigweEZGRkYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy01MDYtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jPTExNDE9aWNlX2FkZF90Y19mbG93ZXJfYWR2X2ZsdHIoc3RydWN0IGljZV92c2kgKnZzaSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEyODktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjEyOTA6ICogaWNlX3RjX3NldF9wcHBvZSAtIFBhcnNlIFBQUG9FIGZpZWxkcyBmcm9tIFRDIGZsb3dlciBmaWx0ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTI5MS0gKiBAbWF0Y2g6IFBvaW50ZXIgdG8gZmxvdyBtYXRjaCBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEyOTMtICogQGhlYWRlcnM6IFBvaW50ZXIgdG8gb3V0ZXIgaGVhZGVyIGZpZWxkc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzoxMjk0OiAqIEByZXR1cm5zIFBQUCBwcm90b2NvbCB1c2VkIGluIGZpbHRlciAocHBwX3NlcyBvciBwcHBfZGlzYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTI5NS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM9MTI5Nj1zdGF0aWMgdTE2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjEyOTc6aWNlX3RjX3NldF9wcHBvZShzdHJ1Y3QgZmxvd19tYXRjaF9wcHBvZSAqbWF0Y2gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEyOTgtXHRcdCBzdHJ1Y3QgaWNlX3RjX2Zsb3dlcl9mbHRyICpmbHRyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwMi1cdFx0Zmx0ci1cdTAwM2VmbGFncyB8PSBJQ0VfVENfRkxXUl9GSUVMRF9QUFBPRV9TRVNTSUQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjEzMDM6XHRcdGhlYWRlcnMtXHUwMDNlcHBwb2VfaGRyLnNlc3Npb25faWQgPSBtYXRjaC1cdTAwM2VrZXktXHUwMDNlc2Vzc2lvbl9pZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwNC1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6MTMwNjpcdGlmIChtYXRjaC1cdTAwM2VtYXNrLVx1MDAzZXBwcF9wcm90bykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy0xMzA3LVx0XHRmbHRyLVx1MDAzZWZsYWdzIHw9IElDRV9UQ19GTFdSX0ZJRUxEX1BQUF9QUk9UTztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6MTMwODpcdFx0aGVhZGVycy1cdTAwM2VwcHBvZV9oZHIucHBwX3Byb3RvID0gbWF0Y2gtXHUwMDNla2V5LVx1MDAzZXBwcF9wcm90bztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwOS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jPTE2Mzc9aWNlX3BhcnNlX2Nsc19mbG93ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmZpbHRlcl9kZXYsIHN0cnVjdCBpY2VfdnNpICp2c2ksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy0xODM3LVx0aWYgKGZsb3dfcnVsZV9tYXRjaF9rZXkocnVsZSwgRkxPV19ESVNTRUNUT1JfS0VZX1BQUE9FKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzoxODM4Olx0XHRzdHJ1Y3QgZmxvd19tYXRjaF9wcHBvZSBtYXRjaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTgzOS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTcwNQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKlBQVFAgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKT2theSwgdGltZSB0byBjaXJjbGUgYmFjayBhbmQgZG91YmxlLWNoZWNrIHNvbWV0aGluZyBjcnVjaWFsIGZvciB0aGlzIFBQVFAgaW50ZWdyYXRpb24uIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IGRlcGVuZGVuY2llcyBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgc2hvdWxkIHJlLWV4YW1pbmUgYGRyaXZlcnMvbmV0L3BwcC9LY29uZmlnYCBhZ2FpbiwgbWV0aWN1bG91c2x5LiBJdOKAmXMgdG9vIGVhc3kgdG8gb3Zlcmxvb2sgc29tZXRoaW5nIGluIHRoZXNlIG5lc3RlZCBjb25maWd1cmF0aW9ucywgZXNwZWNpYWxseSB3aXRoIHRoZSBwb3RlbnRpYWwgZm9yIGludGVyYWN0aW9ucyBiZXR3ZWVuIGRpZmZlcmVudCBuZXR3b3JrIHN1YnN5c3RlbXMuIEkgd2FudCB0byBidWlsZCBhIGJ1bGxldHByb29mIHVuZGVyc3RhbmRpbmcsIHNvIGEgZnJlc2ggbG9vayBpcyBlc3NlbnRpYWwgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBQUCBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQUFBcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1BQUCAocG9pbnQtdG8tcG9pbnQgcHJvdG9jb2wpIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBTTEhDXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFBQUCAoUG9pbnQgdG8gUG9pbnQgUHJvdG9jb2wpIGlzIGEgbmV3ZXIgYW5kIGJldHRlciBTTElQLiAgSXQgc2VydmVzXG4gIDExOlx0XHQgIHRoZSBzYW1lIHB1cnBvc2U6IHNlbmRpbmcgSW50ZXJuZXQgdHJhZmZpYyBvdmVyIHRlbGVwaG9uZSAoYW5kIG90aGVyXG4gIDEyOlx0XHQgIHNlcmlhbCkgbGluZXMuICBBc2sgeW91ciBhY2Nlc3MgcHJvdmlkZXIgaWYgdGhleSBzdXBwb3J0IGl0LCBiZWNhdXNlXG4gIDEzOlx0XHQgIG90aGVyd2lzZSB5b3UgY2FuJiMzOTt0IHVzZSBpdDsgbW9zdCBJbnRlcm5ldCBhY2Nlc3MgcHJvdmlkZXJzIHRoZXNlXG4gIDE0Olx0XHQgIGRheXMgc3VwcG9ydCBQUFAgcmF0aGVyIHRoYW4gU0xJUC5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgVG8gdXNlIFBQUCwgeW91IG5lZWQgYW4gYWRkaXRpb25hbCBwcm9ncmFtIGNhbGxlZCBwcHBkLCBhdmFpbGFibGUgYXRcbiAgMTc6XHRcdCAgXHUwMDNjaHR0cHM6Ly9wcHAuc2FtYmEub3JnXHUwMDNlLiAgTWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgdGhlIHZlcnNpb24gb2YgcHBwZFxuICAxODpcdFx0ICByZWNvbW1lbmRlZCBpbiBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vQ2hhbmdlc1x1MDAzZS5cbiAgMTk6XHRcdCAgVGhlIFBQUCBvcHRpb24gZW5sYXJnZXMgeW91ciBrZXJuZWwgYnkgYWJvdXQgMTYgS0IuXG4gIDIwOlx0XG4gIDIxOlx0XHQgIFRoZXJlIGFyZSBhY3R1YWxseSB0d28gdmVyc2lvbnMgb2YgUFBQOiB0aGUgdHJhZGl0aW9uYWwgUFBQIGZvclxuICAyMjpcdFx0ICBhc3luY2hyb25vdXMgbGluZXMsIHN1Y2ggYXMgcmVndWxhciBhbmFsb2cgcGhvbmUgbGluZXMsIGFuZFxuICAyMzpcdFx0ICBzeW5jaHJvbm91cyBQUFAgd2hpY2ggY2FuIGJlIHVzZWQgb3ZlciBkaWdpdGFsIElTRE4gbGluZXMgZm9yXG4gIDI0Olx0XHQgIGV4YW1wbGUuICBJZiB5b3Ugd2FudCB0byB1c2UgUFBQIG92ZXIgcGhvbmUgbGluZXMgb3Igb3RoZXJcbiAgMjU6XHRcdCAgYXN5bmNocm9ub3VzIHNlcmlhbCBsaW5lcywgeW91IG5lZWQgdG8gc2F5IFkgKG9yIE0pIGhlcmUgYW5kIGFsc28gdG9cbiAgMjY6XHRcdCAgdGhlIG5leHQgb3B0aW9uLCBcJiMzNDtQUFAgc3VwcG9ydCBmb3IgYXN5bmMgc2VyaWFsIHBvcnRzXCYjMzQ7LiAgRm9yIFBQUCBvdmVyXG4gIDI3Olx0XHQgIHN5bmNocm9ub3VzIGxpbmVzLCB5b3Ugc2hvdWxkIHNheSBZIChvciBNKSBoZXJlIGFuZCB0byBcJiMzNDtTdXBwb3J0XG4gIDI4Olx0XHQgIHN5bmNocm9ub3VzIFBQUFwmIzM0OywgYmVsb3cuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIElmIHlvdSBzYWlkIFkgdG8gXCYjMzQ7VmVyc2lvbiBpbmZvcm1hdGlvbiBvbiBhbGwgc3ltYm9sc1wmIzM0OyBhYm92ZSwgdGhlblxuICAzMTpcdFx0ICB5b3UgY2Fubm90IGNvbXBpbGUgdGhlIFBQUCBkcml2ZXIgaW50byB0aGUga2VybmVsOyB5b3UgY2FuIHRoZW4gb25seVxuICAzMjpcdFx0ICBjb21waWxlIGl0IGFzIGEgbW9kdWxlLiBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTVxuICAzMzpcdFx0ICBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHBwcF9nZW5lcmljLlxuICAzNDpcdFxuICAzNTpcdGlmIFBQUFxuICAzNjpcdFxuICAzNzpcdGNvbmZpZyBQUFBfQlNEQ09NUFxuICAzODpcdFx0dHJpc3RhdGUgXCYjMzQ7UFBQIEJTRC1Db21wcmVzcyBjb21wcmVzc2lvblwmIzM0O1xuICAzOTpcdFx0aGVscFxuICA0MDpcdFx0ICBTdXBwb3J0IGZvciB0aGUgQlNELUNvbXByZXNzIGNvbXByZXNzaW9uIG1ldGhvZCBmb3IgUFBQLCB3aGljaCB1c2VzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTE1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFBQVFAgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgYFBQVFBgIGlzIG5lc3RlZCB3aXRoaW4gYW4gYGlmIFBQUCAuLi4gZW5kaWZgIGJsb2NrLiBUaGlzIHRlbGxzIG1lIHRoYXQgYENPTkZJR19QUFBgIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBlbmFibGluZyB0aGUgYFBQVFBgIG9wdGlvbiwgYW5kIHRoZXJlZm9yZSBzbyBpcyBgQ09ORklHX1BQVFBgLCBhbmQgYWxzbyBgQ09ORklHX05FVF9JUEdSRV9ERU1VWGAsIHdoaWNoIGBQUFRQYCByZWxpZXMgdXBvbi4gQW5kIGZ1cnRoZXIsIGl0IGxvb2tzIGxpa2UgYFBQVFBgIGFsc28gYXV0b21hdGljYWxseSBzZWxlY3RzIGBQUFBPWGAgdmlhIGBDT05GSUdfUFBQT1hgLgoKTm93LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBDT05GSUdfSU5FVGAgb3IgYW55IG90aGVyIGNvcmUgbmV0d29yayBjb25maWd1cmF0aW9uIGVsZW1lbnRzIGFyZSBlc3NlbnRpYWwgaGVyZS4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBgbmV0L2lwdjQvS2NvbmZpZ2AgZmlsZSwgYE5FVF9JUEdSRV9ERU1VWGAg4oCTIHdoaWNoIGlzICpyZXF1aXJlZCogZm9yIFBQVFAg4oCTIGRlcGVuZHMgb24gYElORVRgLiBHaXZlbiB0aGF0IGBJTkVUYCBpcyBmdW5kYW1lbnRhbGx5IHN0YW5kYXJkIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eSwgdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIHdpbGwgbm93IGRvdWJsZS1jaGVjayBgbmV0L2lwdjQvS2NvbmZpZ2AgZGlyZWN0bHkgZm9yIGFueSBvdGhlciBgTkVUX0lQR1JFX0RFTVVYYCBkZXBlbmRlbmNpZXMgdG8gY29tcGxldGUgdGhlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTc4Olx0XHQgIHdhbnQpLiBNb3N0IHBlb3BsZSB3b24mIzM5O3QgbmVlZCB0aGlzIGFuZCBjYW4gc2F5IE4uXG4gMTc5Olx0XG4gMTgwOlx0Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxuIDE4MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4gMTgyOlx0XHRoZWxwXG4gMTgzOlx0XHQgIFRoaXMgaXMgaGVscGVyIG1vZHVsZSB0byBkZW11bHRpcGxleCBHUkUgcGFja2V0cyBvbiBHUkUgdmVyc2lvbiBmaWVsZCBjcml0ZXJpYS5cbiAxODQ6XHRcdCAgUmVxdWlyZWQgYnkgaXBfZ3JlIGFuZCBwcHRwIG1vZHVsZXMuXG4gMTg1Olx0XG4gMTg2Olx0Y29uZmlnIE5FVF9JUF9UVU5ORUxcbiAxODc6XHRcdHRyaXN0YXRlXG4gMTg4Olx0XHRzZWxlY3QgRFNUX0NBQ0hFXG4gMTg5Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4gMTkwOlx0XHRkZWZhdWx0IG5cbiAxOTE6XHRcbiAxOTI6XHRjb25maWcgTkVUX0lQR1JFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTQ1CgkJCQkJCQlvdXRwdXQ6IDE3NgoJCQkJCQkJdGhvdWdodHM6IDQ2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFZlcmRpY3Q6IENvbmZpcm1lZCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSB3YW50ZWQgdG8gY29uZmlybSB0aGUgYE5FVF9JUEdSRV9ERU1VWGAgY29uZmlnIG9wdGlvbi4gSXQmIzM5O3Mgbm90IGRpcmVjdGx5IGRlcGVuZGVudCBvbiBhbnl0aGluZyBlbHNlLCBidXQgaXQgKmlzKiBuZXN0ZWQgd2l0aGluIGBuZXQvaXB2NC9LY29uZmlnYCB1bmRlciBgbWVudWNvbmZpZyBJTkVUYCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQuCgpOZXh0LCBJIGxvb2tlZCBhdCB0aGUgYEZvY3VzU3ltYm9sc2AuIFRoZSBhbmFseXNpcyBwb2ludGVkIHRvIHRoZXNlIGtleSBmdW5jdGlvbnM6IGBwcHRwX3Jjdl9jb3JlYCwgYHBwdHBfcmN2YCwgYHBwdHBfY29ubmVjdGAsIGBwcHRwX2JpbmRgLCBgcHB0cF9jcmVhdGVgLCBhbmQgYHBwdHBfeG1pdGAuIEkgaGFkIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIGFueSBvZiB0aGVzZSB3ZXJlIHN0YXRpYyBvciBpbmxpbmVkLCBzaW5jZSB0aGF0IHdvdWxkIGFmZmVjdCBmdXp6aW5nLiBJIGNvbmZpcm1lZCB0aGF0IGBwcHRwX3Jjdl9jb3JlYCBhbmQgYHBwdHBfcmN2YCBhcmUgc3RhdGljLCBhbmQgdGhlIG90aGVycywgYHBwdHBfY29ubmVjdGAsIGBwcHRwX2JpbmRgLCBgcHB0cF9jcmVhdGVgLCBgcHB0cF94bWl0YCwgYXJlIHVzZWQgdmlhIGZ1bmN0aW9uIHBvaW50ZXJzIGluIG9wcyBzdHJ1Y3R1cmVzLiBCZWNhdXNlIG9mIHRoaXMsIHRoZSBjb21waWxlciB3b24mIzM5O3QgYmUgaW5saW5pbmcgdGhlbS4gVGhpcyBtZWFucyB0aGUgbGlzdCBvZiBub24taW5saW5lZCBmdW5jdGlvbnMgdG8gdGFyZ2V0IGZvciBmdXp6aW5nIGlzOiBgcHB0cF9yY3ZfY29yZWAsIGBwcHRwX3JjdmAsIGBwcHRwX2NyZWF0ZWAsIGBwcHRwX2Nvbm5lY3RgLCBhbmQgYHBwdHBfYmluZGAuCgpJIHRoZW4gbWFkZSBzdXJlIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBtYXRjaGVkIHRoZSByZXF1aXJlbWVudHMuIEkmIzM5O3ZlIHZlcmlmaWVkIHRoYXQgYFBQVFBgLCBgUFBQYCwgYW5kIGBORVRfSVBHUkVfREVNVVhgIGFyZSB0aGUgY29ycmVjdCBjb25maWcgZmxhZ3MuCgpGaW5hbGx5LCBJIHJldmlld2VkIHRoZSBwcm9tcHQgcmVxdWlyZW1lbnRzOiB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBpcyB0cnVlLCBzaW5jZSB0aGVzZSBjaGFuZ2VzIGhhdmUgYSBmdW5jdGlvbmFsIGltcGFjdCB3b3J0aCBmdXp6aW5nLiBJIGhhdmUgYSBsaXN0IG9mIG5vbi1ob3QtcGF0aCBrZXJuZWwgZnVuY3Rpb25zIHRvIGZvY3VzIGZ1enppbmcgb24sIGFuZCB0aGUgcmVxdWlyZWQgZW5hYmxlIGNvbmZpZ3MuIEV2ZXJ5dGhpbmcgbWF0Y2hlcy4gVGhlIGRhdGEgaXMgdmFsaWRhdGVkLgoKTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQVFAmIzM0OywKICAgICYjMzQ7UFBQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwdHBfcmN2X2NvcmUmIzM0OywKICAgICYjMzQ7cHB0cF9yY3YmIzM0OywKICAgICYjMzQ7cHB0cF9jcmVhdGUmIzM0OywKICAgICYjMzQ7cHB0cF9jb25uZWN0JiMzNDssCiAgICAmIzM0O3BwdHBfYmluZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgcmVjZXB0aW9uIHBhcnNpbmcgYW5kIGJvdW5kcyBjaGVja2luZyBsb2dpYyBpbiBwcHRwX3Jjdl9jb3JlKCkgd2l0aGluIHRoZSBQUFRQIG5ldHdvcmsgcHJvdG9jb2wgZHJpdmVyIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKSwgZW5zdXJpbmcgcGF5bG9hZCBhdmFpbGFiaWxpdHkgY2hlY2tzIGFuZCBwc2tiX21heV9wdWxsKCkgY2FsbHMgcHJlY2VkZSBoZWFkZXIgZGVyZWZlcmVuY2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb24gdHJ1bmNhdGVkIHBhY2tldHMuIFRoaXMgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgQUZfUFBQT1ggc29ja2V0cyBhbmQgR1JFIHBhY2tldCBkZWxpdmVyeS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFBUUCYjMzQ7LAogICAgJiMzNDtQUFAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICAgJiMzNDtwcHRwX3JjdiYjMzQ7LAogICAgJiMzNDtwcHRwX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtwcHRwX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cHB0cF9iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCByZWNlcHRpb24gcGFyc2luZyBhbmQgYm91bmRzIGNoZWNraW5nIGxvZ2ljIGluIHBwdHBfcmN2X2NvcmUoKSB3aXRoaW4gdGhlIFBQVFAgbmV0d29yayBwcm90b2NvbCBkcml2ZXIgKGRyaXZlcnMvbmV0L3BwcC9wcHRwLmMpLCBlbnN1cmluZyBwYXlsb2FkIGF2YWlsYWJpbGl0eSBjaGVja3MgYW5kIHBza2JfbWF5X3B1bGwoKSBjYWxscyBwcmVjZWRlIGhlYWRlciBkZXJlZmVyZW5jaW5nIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgcGFja2V0cy4gVGhpcyBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9QUFBPWCBzb2NrZXRzIGFuZCBHUkUgcGFja2V0IGRlbGl2ZXJ5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGJvdW5kcyBjaGVja2luZyBhbmQgc2tiIHB1bGwgb3BlcmF0aW9ucyBpbiB0aGUgUFBUUCByZWNlaXZlIHBhdGggKGRyaXZlcnMvbmV0L3BwcC9wcHRwLmMpLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBhZGVxdWF0ZSBwYXlsb2FkIGJ5dGVzIGFyZSBhdmFpbGFibGUgYW5kIHB1bGxlZCBpbnRvIHRoZSBza2IgbGluZWFyIGFyZWEgYmVmb3JlIGluZGV4aW5nIGludG8gc2tiIHBheWxvYWQgb2Zmc2V0cyAocGF5bG9hZFswXSB0aHJvdWdoIHBheWxvYWRbNF0gYW5kIHNrYi1cdTAwM2VkYXRhWzBdIHRocm91Z2ggc2tiLVx1MDAzZWRhdGFbMV0pLlxuXG5UaGVzZSBjaGFuZ2VzIHByZXZlbnQgb3V0LW9mLWJvdW5kcyAoT09CKSBtZW1vcnkgcmVhZHMgb24gdHJ1bmNhdGVkIG9yIG1hbGZvcm1lZCBuZXR3b3JrIHBhY2tldHMuIE9PQiByZWFkcyBhbmQgaW52YWxpZCBza2IgYnVmZmVyIGRlcmVmZXJlbmNlcyBhcmUgZGlyZWN0bHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYnVpbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjE1NTk1OTI1ZjI5OGVlZjVmMjJkOWM3ZDI4YjM1MTIyZGEwMmM4ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTY6MzU6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwppbmRleCBhNzk3YTA2MDZmNmI0Li40ZmI5NGE0NTVjNTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMKQEAgLTI3NSw2ICYjNDM7Mjc1LDcgQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7CiAJc3RydWN0IHBwdHBfb3B0ICpvcHQgPSAmYW1wO3BvLSZndDtwcm90by5wcHRwOwogCWludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxOwomIzQzOwl1bnNpZ25lZCBpbnQgcGF5bG9hZF9hdmFpbDsKIAlfX3U4ICpwYXlsb2FkOwogCXN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjsKIApAQCAtMzE0LDIzICYjNDM7MzE1LDM0IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBwYXlsb2FkX2xlbikpCiAJCWdvdG8gZHJvcDsKIAotCXBheWxvYWQgPSBza2ItJmd0O2RhdGEgJiM0MzsgaGVhZGVyc2l6ZTsKJiM0MzsJcGF5bG9hZF9hdmFpbCA9IHNrYi0mZ3Q7bGVuIC0gaGVhZGVyc2l6ZTsKIAkvKiBjaGVjayBmb3IgZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyICovCiAJaWYgKHNlcSAmbHQ7IG9wdC0mZ3Q7c2VxX3JlY3YgJiM0MzsgMSB8fCBXUkFQUEVEKG9wdC0mZ3Q7c2VxX3JlY3YsIHNlcSkpIHsKLQkJaWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgJmFtcDsmYW1wOyAocGF5bG9hZFsxXSA9PSBQUFBfVUkpICZhbXA7JmFtcDsKLQkJCQkoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApICZhbXA7JmFtcDsKLQkJCQkoKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRKSB8fCAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKSkKLQkJCWdvdG8gYWxsb3dfcGFja2V0OwomIzQzOwkJaWYgKHBheWxvYWRfYXZhaWwgJmd0Oz0gUFBQX0hEUkxFTiAmIzQzOyAxKSB7CiYjNDM7CQkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBQUFBfSERSTEVOICYjNDM7IDEpKQomIzQzOwkJCQlnb3RvIGRyb3A7CiYjNDM7CiYjNDM7CQkJcGF5bG9hZCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBoZWFkZXJzaXplOwomIzQzOwkJCWlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJICZhbXA7JmFtcDsKJiM0MzsJCQkgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgJmFtcDsmYW1wOwomIzQzOwkJCSAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKQomIzQzOwkJCQlnb3RvIGFsbG93X3BhY2tldDsKJiM0MzsJCX0KIAl9IGVsc2UgewogCQlvcHQtJmd0O3NlcV9yZWN2ID0gc2VxOwogYWxsb3dfcGFja2V0OgogCQlza2JfcHVsbChza2IsIGhlYWRlcnNpemUpOwogCi0JCWlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7Ci0JCQkvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi8KLQkJCWlmIChza2ItJmd0O2xlbiAmbHQ7IDMpCiYjNDM7CQlpZiAocGF5bG9hZF9hdmFpbCAmZ3Q7PSAyKSB7CiYjNDM7CQkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgMikpCiAJCQkJZ290byBkcm9wOwotCQkJc2tiX3B1bGwoc2tiLCAyKTsKJiM0MzsKJiM0MzsJCQlpZiAoc2tiLSZndDtkYXRhWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHNrYi0mZ3Q7ZGF0YVsxXSA9PSBQUFBfVUkpIHsKJiM0MzsJCQkJLyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovCiYjNDM7CQkJCWlmIChza2ItJmd0O2xlbiAmbHQ7IDMpCiYjNDM7CQkJCQlnb3RvIGRyb3A7CiYjNDM7CQkJCXNrYl9wdWxsKHNrYiwgMik7CiYjNDM7CQkJfQogCQl9CiAKIAkJc2tiLSZndDtpcF9zdW1tZWQgPSBDSEVDS1NVTV9OT05FOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY5OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFdmFsdWF0aW5nIHRoZSBOZWNlc3NpdHkgb2YgS01TQU4gRnV6emluZyBmb3IgYSBQUFBUUCBQYXRjaCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3BwcC9wcHRwLmNgIHdhcnJhbnRzIGEgc2VwYXJhdGUgS01TQU4gZnV6emluZyBzZXNzaW9uLCBiZXlvbmQgdGhlIHVzdWFsIEtBU0FOIGNoZWNrcy4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSXQmIzM5O3MgcmVhbGx5IGp1c3Qgc29mdHdhcmUgZGVmZW5zZSBhbmQga2VybmVsIHBhdGNoIHJldmlldy4gVGhlIHNldmVyaXR5IGhlcmUgaXMgcHJldHR5IGxvdyDigJMganVzdCB0aGUgdXN1YWwgY29kZSByZXZpZXcgYW5kIHBpY2tpbmcgdGhlIHJpZ2h0IHNhbml0aXphdGlvbiB0b29sLiBObyBpbW1lZGlhdGUgZmlyZSBkcmlsbHMuCgpJIHNob3VsZCBleGFtaW5lIHRoZSBwYXRjaCBpdHNlbGYgZmlyc3QsIGFuZCB0aGVuIHJlYWxseSBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBxdWljayBnbGFuY2UsIGJ1dCBpZiBhbnl0aGluZyBsb29rcyBldmVuIHNsaWdodGx5IHN1c3BpY2lvdXMsIEkmIzM5O2xsIGRlZmluaXRlbHkgZGl2ZSBkZWVwZXIsIHVzaW5nIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGZ1bmN0aW9uIG9mIHRoZSBjb2RlIGFyb3VuZCB0aGlzIHBhdGNoIGFuZCB0aGUgdmFyaWFibGVzIGJlaW5nIHVzZWQuIFRoaXMgaXNuJiMzOTt0IGhpZ2gtc3Rha2VzLCBidXQgSSB3YW50IHRvIGJlIHRob3JvdWdoLiBJdCYjMzk7cyBhbGwgYWJvdXQgbWFraW5nIGFuIGluZm9ybWVkIGRlY2lzaW9uIGFib3V0IGFsbG9jYXRpbmcgcmVzb3VyY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogOTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdFx0cmV0dXJuIDE7XG4gMjcxOlx0fVxuIDI3MjpcdFxuIDI3MzpcdHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4gMjc0Olx0e1xuIDI3NTpcdFx0c3RydWN0IHBwcG94X3NvY2sgKnBvID0gcHBwb3hfc2soc2spO1xuIDI3NjpcdFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcdTAwMjZwby1cdTAwM2Vwcm90by5wcHRwO1xuIDI3NzpcdFx0aW50IGhlYWRlcnNpemUsIHBheWxvYWRfbGVuLCBzZXE7XG4gMjc4Olx0XHR1bnNpZ25lZCBpbnQgcGF5bG9hZF9hdmFpbDtcbiAyNzk6XHRcdF9fdTggKnBheWxvYWQ7XG4gMjgwOlx0XHRzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICpoZWFkZXI7XG4gMjgxOlx0XG4gMjgyOlx0XHRpZiAoIShzay1cdTAwM2Vza19zdGF0ZSBcdTAwMjYgUFBQT1hfQ09OTkVDVEVEKSlcbiAyODM6XHRcdFx0Z290byBkcm9wO1xuIDI4NDpcdFxuIDI4NTpcdFx0aGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLVx1MDAzZWRhdGEpO1xuIDI4NjpcdFx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XG4gMjg3Olx0XG4gMjg4Olx0XHQvKiB0ZXN0IGlmIGFja25vd2xlZGdlbWVudCBwcmVzZW50ICovXG4gMjg5Olx0XHRpZiAoR1JFX0lTX0FDSyhoZWFkZXItXHUwMDNlZ3JlX2hkLmZsYWdzKSkge1xuIDI5MDpcdFx0XHRfX3UzMiBhY2s7XG4gMjkxOlx0XG4gMjkyOlx0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUpKVxuIDI5MzpcdFx0XHRcdGdvdG8gZHJvcDtcbiAyOTQ6XHRcdFx0aGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLVx1MDAzZWRhdGEpO1xuIDI5NTpcdFxuIDI5NjpcdFx0XHQvKiBhY2sgaW4gZGlmZmVyZW50IHBsYWNlIGlmIFMgPSAwICovXG4gMjk3Olx0XHRcdGFjayA9IEdSRV9JU19TRVEoaGVhZGVyLVx1MDAzZWdyZV9oZC5mbGFncykgPyBudG9obChoZWFkZXItXHUwMDNlYWNrKSA6XG4gMjk4Olx0XHRcdFx0XHRcdFx0XHQgbnRvaGwoaGVhZGVyLVx1MDAzZXNlcSk7XG4gMjk5Olx0XHRcdGlmIChhY2sgXHUwMDNlIG9wdC1cdTAwM2VhY2tfcmVjdilcbiAzMDA6XHRcdFx0XHRvcHQtXHUwMDNlYWNrX3JlY3YgPSBhY2s7XG4gMzAxOlx0XHRcdC8qIGFsc28gaGFuZGxlIHNlcXVlbmNlIG51bWJlciB3cmFwLWFyb3VuZCAgKi9cbiAzMDI6XHRcdFx0aWYgKFdSQVBQRUQoYWNrLCBvcHQtXHUwMDNlYWNrX3JlY3YpKVxuIDMwMzpcdFx0XHRcdG9wdC1cdTAwM2VhY2tfcmVjdiA9IGFjaztcbiAzMDQ6XHRcdH0gZWxzZSB7XG4gMzA1Olx0XHRcdGhlYWRlcnNpemUgLT0gc2l6ZW9mKGhlYWRlci1cdTAwM2VhY2spO1xuIDMwNjpcdFx0fVxuIDMwNzpcdFx0LyogdGVzdCBpZiBwYXlsb2FkIHByZXNlbnQgKi9cbiAzMDg6XHRcdGlmICghR1JFX0lTX1NFUShoZWFkZXItXHUwMDNlZ3JlX2hkLmZsYWdzKSlcbiAzMDk6XHRcdFx0Z290byBkcm9wO1xuIDMxMDpcdFxuIDMxMTpcdFx0cGF5bG9hZF9sZW4gPSBudG9ocyhoZWFkZXItXHUwMDNlcGF5bG9hZF9sZW4pO1xuIDMxMjpcdFx0c2VxICAgICAgICAgPSBudG9obChoZWFkZXItXHUwMDNlc2VxKTtcbiAzMTM6XHRcbiAzMTQ6XHRcdC8qIGNoZWNrIGZvciBpbmNvbXBsZXRlIHBhY2tldCAobGVuZ3RoIHNtYWxsZXIgdGhhbiBleHBlY3RlZCkgKi9cbiAzMTU6XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgJiM0MzsgcGF5bG9hZF9sZW4pKVxuIDMxNjpcdFx0XHRnb3RvIGRyb3A7XG4gMzE3Olx0XG4gMzE4Olx0XHRwYXlsb2FkX2F2YWlsID0gc2tiLVx1MDAzZWxlbiAtIGhlYWRlcnNpemU7XG4gMzE5Olx0XHQvKiBjaGVjayBmb3IgZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyICovXG4gMzIwOlx0XHRpZiAoc2VxIFx1MDAzYyBvcHQtXHUwMDNlc2VxX3JlY3YgJiM0MzsgMSB8fCBXUkFQUEVEKG9wdC1cdTAwM2VzZXFfcmVjdiwgc2VxKSkge1xuIDMyMTpcdFx0XHRpZiAocGF5bG9hZF9hdmFpbCBcdTAwM2U9IFBQUF9IRFJMRU4gJiM0MzsgMSkge1xuIDMyMjpcdFx0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgJiM0MzsgUFBQX0hEUkxFTiAmIzQzOyAxKSlcbiAzMjM6XHRcdFx0XHRcdGdvdG8gZHJvcDtcbiAzMjQ6XHRcbiAzMjU6XHRcdFx0XHRwYXlsb2FkID0gc2tiLVx1MDAzZWRhdGEgJiM0MzsgaGVhZGVyc2l6ZTtcbiAzMjY6XHRcdFx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuIDMyNzpcdFx0XHRcdCAgICBQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCBcdTAwMjZcdTAwMjZcbiAzMjg6XHRcdFx0XHQgICAgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRIHx8IHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSlcbiAzMjk6XHRcdFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuIDMzMDpcdFx0XHR9XG4gMzMxOlx0XHR9IGVsc2Uge1xuIDMzMjpcdFx0XHRvcHQtXHUwMDNlc2VxX3JlY3YgPSBzZXE7XG4gMzMzOlx0YWxsb3dfcGFja2V0OlxuIDMzNDpcdFx0XHRza2JfcHVsbChza2IsIGhlYWRlcnNpemUpO1xuIDMzNTpcdFxuIDMzNjpcdFx0XHRpZiAocGF5bG9hZF9hdmFpbCBcdTAwM2U9IDIpIHtcbiAzMzc6XHRcdFx0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCAyKSlcbiAzMzg6XHRcdFx0XHRcdGdvdG8gZHJvcDtcbiAzMzk6XHRcbiAzNDA6XHRcdFx0XHRpZiAoc2tiLVx1MDAzZWRhdGFbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFx1MDAyNlx1MDAyNiBza2ItXHUwMDNlZGF0YVsxXSA9PSBQUFBfVUkpIHtcbiAzNDE6XHRcdFx0XHRcdC8qIGNob3Agb2ZmIGFkZHJlc3MvY29udHJvbCAqL1xuIDM0MjpcdFx0XHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIDMpXG4gMzQzOlx0XHRcdFx0XHRcdGdvdG8gZHJvcDtcbiAzNDQ6XHRcdFx0XHRcdHNrYl9wdWxsKHNrYiwgMik7XG4gMzQ1Olx0XHRcdFx0fVxuIDM0NjpcdFx0XHR9XG4gMzQ3Olx0XG4gMzQ4Olx0XHRcdHNrYi1cdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9OT05FO1xuIDM0OTpcdFx0XHRza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgc2tiLVx1MDAzZWhlYWQtc2tiLVx1MDAzZWRhdGEpO1xuIDM1MDpcdFx0XHRwcHBfaW5wdXQoXHUwMDI2cG8tXHUwMDNlY2hhbiwgc2tiKTtcbiAzNTE6XHRcbiAzNTI6XHRcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIDM1MzpcdFx0fVxuIDM1NDpcdGRyb3A6XG4gMzU1Olx0XHRrZnJlZV9za2Ioc2tiKTtcbiAzNTY6XHRcdHJldHVybiBORVRfUlhfRFJPUDtcbiAzNTc6XHR9XG4gMzU4Olx0XG4gMzU5Olx0c3RhdGljIGludCBwcHRwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDg3CgkJCQkJCQlvdXRwdXQ6IDE5MQoJCQkJCQkJdGhvdWdodHM6IDEwOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFBQVFAgUGF0Y2ggYW5kIFNhbml0aXplciBTZWxlY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgcGF0Y2ggd2l0aGluIGBwcHRwX3Jjdl9jb3JlKClgIGFuZCB0aGUgYnVnIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGZpeC4gIFByZXZpb3VzbHksIHRoZXJlIHdhcyBhIHNpZ25pZmljYW50IHZ1bG5lcmFiaWxpdHk6IGlmIHRoZSBpbmNvbWluZyBwYWNrZXQgcGF5bG9hZCB3YXMgc21hbGwsIHBhcnRpY3VsYXJseSB3aXRoIHplcm8gb3IgbWluaW1hbCBkYXRhLCB0aGUgY2hlY2tzIHdlcmUgaW5zdWZmaWNpZW50LiBgcHNrYl9tYXlfcHVsbGAgbWlnaHQgc3VjY2VlZCwgZXZlbiB0aG91Z2ggYWNjZXNzaW5nIGBwYXlsb2FkWzBdYCB0aHJvdWdoIGBwYXlsb2FkWzRdYCB3b3VsZCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIHRoZSBza2ImIzM5O3MgbGluZWFyIGJ1ZmZlciBvciB1bnB1bGxlZCBza2IgZGF0YS4gVGhpcyBpcyB0ZXh0Ym9vayBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3MuIFRoZSBzYW1lIGlzc3VlIGFsc28gb2NjdXJyZWQgaWYgYHNrYl9wdWxsYCB3YXMgY2FsbGVkLCB0aGVuIGBwYXlsb2FkWzBdYCB3YXMgYWNjZXNzZWQuIFRoZSBwYXRjaCBhZGRyZXNzZXMgdGhpcyBkaXJlY3RseS4KClRoZSBmaXggaW52b2x2ZXMgdHdvIGtleSBjaGFuZ2VzOiAgRmlyc3QsIHJpZ29yb3VzIGJvdW5kcyBjaGVja3MgYXJlIGludHJvZHVjZWQgKmJlZm9yZSogYW55IGFjY2VzcyB0byB0aGUgYHBheWxvYWRgIGRhdGEuIFRoaXMgZW1wbG95cyBhIGNvbWJpbmF0aW9uIG9mIGBwYXlsb2FkX2F2YWlsYCBhbmQgbW9yZSBwcmVjaXNlIGNhbGxzIHRvIGBwc2tiX21heV9wdWxsYCB3aXRoIGNhbGN1bGF0ZWQgbGVuZ3RocyAoYGhlYWRlcnNpemUgJiM0MzsgUFBQX0hEUkxFTiAmIzQzOyAxYCkuIFNlY29uZCwgYWNjZXNzIHRvIHRoZSBgc2tiLSZndDtkYXRhYCBwb2ludGVyIGFmdGVyIGBza2JfcHVsbGAgb2NjdXJzLgoKTm93LCBsZXQmIzM5O3MgZXZhbHVhdGUgd2hpY2ggc2FuaXRpemVyIGlzIG1vc3QgcmVsZXZhbnQuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGJ1ZywgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdpdGhpbiB0aGUgc2tiIGJ1ZmZlciwgdGhlIGNob2ljZSBpcyBmYWlybHkgY2xlYXIuIEtNU0FOIGlzIHByaW1hcmlseSBkZXNpZ25lZCB0byBkZXRlY3QgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRob3NlIGNvbmRpdGlvbnMgYXBwbHkgaGVyZS4KCjEuICAqKktlcm5lbCBkYXRhIGV4cG9zZWQgdG8gdXNlcnNwYWNlPyoqIE5vLiBUaGlzIGlzIGluY29taW5nIHBhY2tldCBwcm9jZXNzaW5nLgoyLiAgKipDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8qKiBOby4gQWxsIHZhcmlhYmxlcyB1c2VkIChwYXlsb2FkXF9hdmFpbCwgc2VxLCBoZWFkZXJzaXplLCBldGMuKSBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCjMuICAqKkNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggaW5pdGlhbGl6YXRpb24gaXNzdWVzPyoqIE5vLCB0aGUgY29kZSBpcyByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZC4KNC4gICoqQm91bmRzIGNoZWNrcyBsZWFkaW5nIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlPyoqIE5vLiBUaGUgZGF0YSBjb21pbmcgZnJvbSB0aGUgbmV0d29yayBpcyBwYWNrZXQgZGF0YSwgaW5pdGlhbGl6ZWQgdXBvbiByZWNlcHRpb24uCgpUaGUgYnVncyBhcmUgY2xlYXJseSBidWZmZXIgYm91bmRzIGlzc3VlcyDigJMgS0FTQU4gdGVycml0b3J5LiBLTVNBTiB3b3VsZCBiZSBpcnJlbGV2YW50LgoKKipLQVNBTiB2cy4gS01TQU46KioKCiogICAqKktBU0FOOioqICBEZXRlY3RzIGEgd2lkZSBhcnJheSBvZiBtZW1vcnkgc2FmZXR5IGlzc3VlcywgaW5jbHVkaW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzIChzbGFiLCBnbG9iYWwsIHN0YWNrKSwgYW5kIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMuIFRoZXNlIGFyZSBwcmVjaXNlbHkgdGhlIHR5cGVzIG9mIGlzc3VlcyB3ZSYjMzk7cmUgYWRkcmVzc2luZyB3aXRoIHRoZSBwYXRjaCYjMzk7cyBib3VuZHMgY2hlY2tzLgoqICAgKipLTVNBTjoqKiBUYXJnZXRzIHRoZSBkZXRlY3Rpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoaXMgaXMgbm90IHRoZSBpc3N1ZSBoZXJlLgoKSW4gc2hvcnQsIHRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgcGFyc2luZyBpbiB0aGUgUFBUUCBuZXR3b3JrIHJlY2VpdmUgcGF0aCwgYWRkaW5nIGNydWNpYWwgbGVuZ3RoIGNoZWNrcyAoYHBza2JfbWF5X3B1bGxgIGFuZCBgcGF5bG9hZF9hdmFpbCAmZ3Q7PSAuLi5gKSBiZWZvcmUgaW5kZXhpbmcgaW50byB0aGUgbmV0d29yayBza2IgcGF5bG9hZCBidWZmZXJzLiBUaGVzZSBhZGRpdGlvbnMgZGlyZWN0bHkgYWRkcmVzcyB0aGUgdnVsbmVyYWJpbGl0eSBvZiBvdXQtb2YtYm91bmRzIGJ1ZmZlciByZWFkcyBvbiBzaG9ydCBvciBub24tbGluZWFyIHNrYiBwYWNrZXRzLiBTaW5jZSB0aGVyZSYjMzk7cyBubyB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgaW52b2x2ZWQgb3IgYW55IG9mIHRoZSB1c3VhbCBLTVNBTiBjb25jZXJucywgS0FTQU4gaXMgdGhlIGNvcnJlY3Qgc2FuaXRpemVyIGhlcmUuIE5vIEtNU0FOIGZ1enppbmcgaXMgbmVjZXNzYXJ5LiBUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU5gIHRvIGBmYWxzZWAuIEkgbmVlZCB0byBub3cgZW5zdXJlIHRoYXQgbXkgYW5hbHlzaXMgYW5kIHJlYXNvbmluZyBhcmUgY2xlYXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBib3VuZHMgY2hlY2tpbmcgYW5kIHNrYiBwdWxsIG9wZXJhdGlvbnMgaW4gdGhlIFBQVFAgcmVjZWl2ZSBwYXRoIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKS4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgYWRlcXVhdGUgcGF5bG9hZCBieXRlcyBhcmUgYXZhaWxhYmxlIGFuZCBwdWxsZWQgaW50byB0aGUgc2tiIGxpbmVhciBhcmVhIGJlZm9yZSBpbmRleGluZyBpbnRvIHNrYiBwYXlsb2FkIG9mZnNldHMgKHBheWxvYWRbMF0gdGhyb3VnaCBwYXlsb2FkWzRdIGFuZCBza2ItXHUwMDNlZGF0YVswXSB0aHJvdWdoIHNrYi1cdTAwM2VkYXRhWzFdKS5cblxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgKE9PQikgbWVtb3J5IHJlYWRzIG9uIHRydW5jYXRlZCBvciBtYWxmb3JtZWQgbmV0d29yayBwYWNrZXRzLiBPT0IgcmVhZHMgYW5kIGludmFsaWQgc2tiIGJ1ZmZlciBkZXJlZmVyZW5jZXMgYXJlIGRpcmVjdGx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIEtBU0FOIGJ1aWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgY29weSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYm91bmRzIGNoZWNraW5nIGFuZCBza2IgcHVsbCBvcGVyYXRpb25zIGluIHRoZSBQUFRQIHJlY2VpdmUgcGF0aCAoZHJpdmVycy9uZXQvcHBwL3BwdHAuYykuIFNwZWNpZmljYWxseSwgaXQgZW5zdXJlcyB0aGF0IGFkZXF1YXRlIHBheWxvYWQgYnl0ZXMgYXJlIGF2YWlsYWJsZSBhbmQgcHVsbGVkIGludG8gdGhlIHNrYiBsaW5lYXIgYXJlYSBiZWZvcmUgaW5kZXhpbmcgaW50byBza2IgcGF5bG9hZCBvZmZzZXRzIChwYXlsb2FkWzBdIHRocm91Z2ggcGF5bG9hZFs0XSBhbmQgc2tiLVx1MDAzZWRhdGFbMF0gdGhyb3VnaCBza2ItXHUwMDNlZGF0YVsxXSkuXG5cblRoZXNlIGNoYW5nZXMgcHJldmVudCBvdXQtb2YtYm91bmRzIChPT0IpIG1lbW9yeSByZWFkcyBvbiB0cnVuY2F0ZWQgb3IgbWFsZm9ybWVkIG5ldHdvcmsgcGFja2V0cy4gT09CIHJlYWRzIGFuZCBpbnZhbGlkIHNrYiBidWZmZXIgZGVyZWZlcmVuY2VzIGFyZSBkaXJlY3RseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNTowMS40MzM1Mjc1MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYxNzM5MjY3MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBUUFwiLFxuICAgIFwiUFBQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHRwX3Jjdl9jb3JlXCIsXG4gICAgXCJwcHRwX3JjdlwiLFxuICAgIFwicHB0cF9jcmVhdGVcIixcbiAgICBcInBwdHBfY29ubmVjdFwiLFxuICAgIFwicHB0cF9iaW5kXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYm91bmRzIGNoZWNraW5nIGFuZCBza2IgcHVsbCBvcGVyYXRpb25zIGluIHRoZSBQUFRQIHJlY2VpdmUgcGF0aCAoZHJpdmVycy9uZXQvcHBwL3BwdHAuYykuIFNwZWNpZmljYWxseSwgaXQgZW5zdXJlcyB0aGF0IGFkZXF1YXRlIHBheWxvYWQgYnl0ZXMgYXJlIGF2YWlsYWJsZSBhbmQgcHVsbGVkIGludG8gdGhlIHNrYiBsaW5lYXIgYXJlYSBiZWZvcmUgaW5kZXhpbmcgaW50byBza2IgcGF5bG9hZCBvZmZzZXRzIChwYXlsb2FkWzBdIHRocm91Z2ggcGF5bG9hZFs0XSBhbmQgc2tiLVxcdTAwM2VkYXRhWzBdIHRocm91Z2ggc2tiLVxcdTAwM2VkYXRhWzFdKS5cXG5cXG5UaGVzZSBjaGFuZ2VzIHByZXZlbnQgb3V0LW9mLWJvdW5kcyAoT09CKSBtZW1vcnkgcmVhZHMgb24gdHJ1bmNhdGVkIG9yIG1hbGZvcm1lZCBuZXR3b3JrIHBhY2tldHMuIE9PQiByZWFkcyBhbmQgaW52YWxpZCBza2IgYnVmZmVyIGRlcmVmZXJlbmNlcyBhcmUgZGlyZWN0bHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYnVpbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgcmVjZXB0aW9uIHBhcnNpbmcgYW5kIGJvdW5kcyBjaGVja2luZyBsb2dpYyBpbiBwcHRwX3Jjdl9jb3JlKCkgd2l0aGluIHRoZSBQUFRQIG5ldHdvcmsgcHJvdG9jb2wgZHJpdmVyIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKSwgZW5zdXJpbmcgcGF5bG9hZCBhdmFpbGFiaWxpdHkgY2hlY2tzIGFuZCBwc2tiX21heV9wdWxsKCkgY2FsbHMgcHJlY2VkZSBoZWFkZXIgZGVyZWZlcmVuY2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb24gdHJ1bmNhdGVkIHBhY2tldHMuIFRoaXMgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgQUZfUFBQT1ggc29ja2V0cyBhbmQgR1JFIHBhY2tldCBkZWxpdmVyeS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MDEuNDMzNTM0Nzk3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODc0OTM2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyMTU1OTU5MjVmMjk4ZWVmNWYyMmQ5YzdkMjhiMzUxMjJkYTAyYzhmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDIgMTY6MzU6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcXG5pbmRleCBhNzk3YTA2MDZmNmI0Li40ZmI5NGE0NTVjNTc0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXFxuQEAgLTI3NSw2ICsyNzUsNyBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuIFxcdHN0cnVjdCBwcHRwX29wdCAqb3B0ID0gXFx1MDAyNnBvLVxcdTAwM2Vwcm90by5wcHRwO1xcbiBcXHRpbnQgaGVhZGVyc2l6ZSwgcGF5bG9hZF9sZW4sIHNlcTtcXG4rXFx0dW5zaWduZWQgaW50IHBheWxvYWRfYXZhaWw7XFxuIFxcdF9fdTggKnBheWxvYWQ7XFxuIFxcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcXG4gXFxuQEAgLTMxNCwyMyArMzE1LDM0IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgKyBwYXlsb2FkX2xlbikpXFxuIFxcdFxcdGdvdG8gZHJvcDtcXG4gXFxuLVxcdHBheWxvYWQgPSBza2ItXFx1MDAzZWRhdGEgKyBoZWFkZXJzaXplO1xcbitcXHRwYXlsb2FkX2F2YWlsID0gc2tiLVxcdTAwM2VsZW4gLSBoZWFkZXJzaXplO1xcbiBcXHQvKiBjaGVjayBmb3IgZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyICovXFxuIFxcdGlmIChzZXEgXFx1MDAzYyBvcHQtXFx1MDAzZXNlcV9yZWN2ICsgMSB8fCBXUkFQUEVEKG9wdC1cXHUwMDNlc2VxX3JlY3YsIHNlcSkpIHtcXG4tXFx0XFx0aWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgXFx1MDAyNlxcdTAwMjYgKHBheWxvYWRbMV0gPT0gUFBQX1VJKSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHRcXHQoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdFxcdCgocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEpIHx8IChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUCkpKVxcbi1cXHRcXHRcXHRnb3RvIGFsbG93X3BhY2tldDtcXG4rXFx0XFx0aWYgKHBheWxvYWRfYXZhaWwgXFx1MDAzZT0gUFBQX0hEUkxFTiArIDEpIHtcXG4rXFx0XFx0XFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSArIFBQUF9IRFJMRU4gKyAxKSlcXG4rXFx0XFx0XFx0XFx0Z290byBkcm9wO1xcbitcXG4rXFx0XFx0XFx0cGF5bG9hZCA9IHNrYi1cXHUwMDNlZGF0YSArIGhlYWRlcnNpemU7XFxuK1xcdFxcdFxcdGlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyBcXHUwMDI2XFx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0ICAgIChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSB8fCBwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUCkpXFxuK1xcdFxcdFxcdFxcdGdvdG8gYWxsb3dfcGFja2V0O1xcbitcXHRcXHR9XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdG9wdC1cXHUwMDNlc2VxX3JlY3YgPSBzZXE7XFxuIGFsbG93X3BhY2tldDpcXG4gXFx0XFx0c2tiX3B1bGwoc2tiLCBoZWFkZXJzaXplKTtcXG4gXFxuLVxcdFxcdGlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyBcXHUwMDI2XFx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSkge1xcbi1cXHRcXHRcXHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cXG4tXFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgMylcXG4rXFx0XFx0aWYgKHBheWxvYWRfYXZhaWwgXFx1MDAzZT0gMikge1xcbitcXHRcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCAyKSlcXG4gXFx0XFx0XFx0XFx0Z290byBkcm9wO1xcbi1cXHRcXHRcXHRza2JfcHVsbChza2IsIDIpO1xcbitcXG4rXFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlZGF0YVswXSA9PSBQUFBfQUxMU1RBVElPTlMgXFx1MDAyNlxcdTAwMjYgc2tiLVxcdTAwM2VkYXRhWzFdID09IFBQUF9VSSkge1xcbitcXHRcXHRcXHRcXHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cXG4rXFx0XFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgMylcXG4rXFx0XFx0XFx0XFx0XFx0Z290byBkcm9wO1xcbitcXHRcXHRcXHRcXHRza2JfcHVsbChza2IsIDIpO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHNrYi1cXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fTk9ORTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MDIuMDIxNzg3NzAzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NzkyODMyODIxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUFRQXCIsXG4gICAgXCJQUFBcIixcbiAgICBcIk5FVF9JUEdSRV9ERU1VWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBwdHBfcmN2X2NvcmVcIixcbiAgICBcInBwdHBfcmN2XCIsXG4gICAgXCJwcHRwX2NyZWF0ZVwiLFxuICAgIFwicHB0cF9jb25uZWN0XCIsXG4gICAgXCJwcHRwX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgcmVjZXB0aW9uIHBhcnNpbmcgYW5kIGJvdW5kcyBjaGVja2luZyBsb2dpYyBpbiBwcHRwX3Jjdl9jb3JlKCkgd2l0aGluIHRoZSBQUFRQIG5ldHdvcmsgcHJvdG9jb2wgZHJpdmVyIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKSwgZW5zdXJpbmcgcGF5bG9hZCBhdmFpbGFiaWxpdHkgY2hlY2tzIGFuZCBwc2tiX21heV9wdWxsKCkgY2FsbHMgcHJlY2VkZSBoZWFkZXIgZGVyZWZlcmVuY2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb24gdHJ1bmNhdGVkIHBhY2tldHMuIFRoaXMgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgQUZfUFBQT1ggc29ja2V0cyBhbmQgR1JFIHBhY2tldCBkZWxpdmVyeS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjE1NTk1OTI1ZjI5OGVlZjVmMjJkOWM3ZDI4YjM1MTIyZGEwMmM4ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTY6MzU6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggYTc5N2EwNjA2ZjZiNC4uNGZiOTRhNDU1YzU3NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0yNzUsNiArMjc1LDcgQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcbiBcdHN0cnVjdCBwcHRwX29wdCAqb3B0ID0gXHUwMDI2cG8tXHUwMDNlcHJvdG8ucHB0cDtcbiBcdGludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxO1xuK1x0dW5zaWduZWQgaW50IHBheWxvYWRfYXZhaWw7XG4gXHRfX3U4ICpwYXlsb2FkO1xuIFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuIFxuQEAgLTMxNCwyMyArMzE1LDM0IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZWFkZXJzaXplICsgcGF5bG9hZF9sZW4pKVxuIFx0XHRnb3RvIGRyb3A7XG4gXG4tXHRwYXlsb2FkID0gc2tiLVx1MDAzZWRhdGEgKyBoZWFkZXJzaXplO1xuK1x0cGF5bG9hZF9hdmFpbCA9IHNrYi1cdTAwM2VsZW4gLSBoZWFkZXJzaXplO1xuIFx0LyogY2hlY2sgZm9yIGV4cGVjdGVkIHNlcXVlbmNlIG51bWJlciAqL1xuIFx0aWYgKHNlcSBcdTAwM2Mgb3B0LVx1MDAzZXNlcV9yZWN2ICsgMSB8fCBXUkFQUEVEKG9wdC1cdTAwM2VzZXFfcmVjdiwgc2VxKSkge1xuLVx0XHRpZiAoKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TKSBcdTAwMjZcdTAwMjYgKHBheWxvYWRbMV0gPT0gUFBQX1VJKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHRcdChQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQoKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRKSB8fCAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKSlcbi1cdFx0XHRnb3RvIGFsbG93X3BhY2tldDtcbitcdFx0aWYgKHBheWxvYWRfYXZhaWwgXHUwMDNlPSBQUFBfSERSTEVOICsgMSkge1xuK1x0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgKyBQUFBfSERSTEVOICsgMSkpXG4rXHRcdFx0XHRnb3RvIGRyb3A7XG4rXG4rXHRcdFx0cGF5bG9hZCA9IHNrYi1cdTAwM2VkYXRhICsgaGVhZGVyc2l6ZTtcbitcdFx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuK1x0XHRcdCAgICBQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRIHx8IHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSlcbitcdFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuK1x0XHR9XG4gXHR9IGVsc2Uge1xuIFx0XHRvcHQtXHUwMDNlc2VxX3JlY3YgPSBzZXE7XG4gYWxsb3dfcGFja2V0OlxuIFx0XHRza2JfcHVsbChza2IsIGhlYWRlcnNpemUpO1xuIFxuLVx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7XG4tXHRcdFx0LyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovXG4tXHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIDMpXG4rXHRcdGlmIChwYXlsb2FkX2F2YWlsIFx1MDAzZT0gMikge1xuK1x0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIDIpKVxuIFx0XHRcdFx0Z290byBkcm9wO1xuLVx0XHRcdHNrYl9wdWxsKHNrYiwgMik7XG4rXG4rXHRcdFx0aWYgKHNrYi1cdTAwM2VkYXRhWzBdID09IFBQUF9BTExTVEFUSU9OUyBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWRhdGFbMV0gPT0gUFBQX1VJKSB7XG4rXHRcdFx0XHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cbitcdFx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAzKVxuK1x0XHRcdFx0XHRnb3RvIGRyb3A7XG4rXHRcdFx0XHRza2JfcHVsbChza2IsIDIpO1xuK1x0XHRcdH1cbiBcdFx0fVxuIFxuIFx0XHRza2ItXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fTk9ORTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjAyLjAyMTc5MDEzM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwOTUyNjc1MTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGF0IFBQVFAgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCwgYW5kIG15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYCBmaWxlLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgY2hhbmdlcyBzZWVtIHRvIGJlLiBTcGVjaWZpY2FsbHksIEknbSB6ZXJvaW5nIGluIG9uIHRoZSBgcHB0cF9yY3ZfY29yZWAgZnVuY3Rpb24uIEknbGwgbmVlZCB0byBkaXNzZWN0IHRoYXQgdG8gZ3Jhc3AgdGhlIGltcGFjdCBvZiB0aGUgcGF0Y2guXG5cbkJleW9uZCB0aGUgY29kZSBpdHNlbGYsIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBpbnRlcmFjdGlvbnMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGFuZCBzeW1ib2wgZGVmaW5pdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvcHBwL2AgZGlyZWN0b3J5LCBpbmNsdWRpbmcgdGhhdCBgcHB0cC5jYCBmaWxlLiBJIG5lZWQgdG8ga25vdyBob3cgdGhpcyBtb2RpZmljYXRpb24gaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIFBQUCBzdGFjaywgYW5kIGhvdyBpdCBtaWdodCBiZSBlbmFibGVkL2Rpc2FibGVkLlxuXG5GaW5hbGx5LCBJJ2xsIGxldmVyYWdlIHRoZSB0b29scyBhdCBteSBkaXNwb3NhbC4gR3JlcHBpbmcgdGhyb3VnaCB0aGUgY29kZWJhc2Ugb3Igc3RyYXRlZ2ljYWxseSB1c2luZyBgcmVhZC1maWxlYCB0byB6ZXJvIGluIG9uIHJlbGV2YW50IGNvZGUgc2VjdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyBpcyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIEl0J3MgdGltZSB0byBnZXQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgY2hhbmdlcyBhbmQgaG93IHRoZXkgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzAyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNToxMi45NzQ0NjgzNTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzkzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNjAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjYwOlxcdFxcdGlwX3NlbGVjdF9pZGVudChuZXQsIHNrYiwgTlVMTCk7XFxuIDI2MTpcXHRcXHRpcF9zZW5kX2NoZWNrKGlwaCk7XFxuIDI2MjpcXHRcXG4gMjYzOlxcdFxcdGlwX2xvY2FsX291dChuZXQsIHNrYi1cXHUwMDNlc2ssIHNrYik7XFxuIDI2NDpcXHRcXHRyZXR1cm4gMTtcXG4gMjY1OlxcdFxcbiAyNjY6XFx0dHhfZXJyb3I6XFxuIDI2NzpcXHRcXHRpcF9ydF9wdXQocnQpO1xcbiAyNjg6XFx0dHhfZHJvcDpcXG4gMjY5OlxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiAyNzA6XFx0XFx0cmV0dXJuIDE7XFxuIDI3MTpcXHR9XFxuIDI3MjpcXHRcXG4gMjczOlxcdHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIDI3NDpcXHR7XFxuIDI3NTpcXHRcXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuIDI3NjpcXHRcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdCA9IFxcdTAwMjZwby1cXHUwMDNlcHJvdG8ucHB0cDtcXG4gMjc3OlxcdFxcdGludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxO1xcbiAyNzg6XFx0XFx0dW5zaWduZWQgaW50IHBheWxvYWRfYXZhaWw7XFxuIDI3OTpcXHRcXHRfX3U4ICpwYXlsb2FkO1xcbiAyODA6XFx0XFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xcbiAyODE6XFx0XFxuIDI4MjpcXHRcXHRpZiAoIShzay1cXHUwMDNlc2tfc3RhdGUgXFx1MDAyNiBQUFBPWF9DT05ORUNURUQpKVxcbiAyODM6XFx0XFx0XFx0Z290byBkcm9wO1xcbiAyODQ6XFx0XFxuIDI4NTpcXHRcXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXFx1MDAzZWRhdGEpO1xcbiAyODY6XFx0XFx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XFxuIDI4NzpcXHRcXG4gMjg4OlxcdFxcdC8qIHRlc3QgaWYgYWNrbm93bGVkZ2VtZW50IHByZXNlbnQgKi9cXG4gMjg5OlxcdFxcdGlmIChHUkVfSVNfQUNLKGhlYWRlci1cXHUwMDNlZ3JlX2hkLmZsYWdzKSkge1xcbiAyOTA6XFx0XFx0XFx0X191MzIgYWNrO1xcbiAyOTE6XFx0XFxuIDI5MjpcXHRcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZWFkZXJzaXplKSlcXG4gMjkzOlxcdFxcdFxcdFxcdGdvdG8gZHJvcDtcXG4gMjk0OlxcdFxcdFxcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuIDI5NTpcXHRcXG4gMjk2OlxcdFxcdFxcdC8qIGFjayBpbiBkaWZmZXJlbnQgcGxhY2UgaWYgUyA9IDAgKi9cXG4gMjk3OlxcdFxcdFxcdGFjayA9IEdSRV9JU19TRVEoaGVhZGVyLVxcdTAwM2VncmVfaGQuZmxhZ3MpID8gbnRvaGwoaGVhZGVyLVxcdTAwM2VhY2spIDpcXG4gMjk4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBudG9obChoZWFkZXItXFx1MDAzZXNlcSk7XFxuIDI5OTpcXHRcXHRcXHRpZiAoYWNrIFxcdTAwM2Ugb3B0LVxcdTAwM2VhY2tfcmVjdilcXG4gMzAwOlxcdFxcdFxcdFxcdG9wdC1cXHUwMDNlYWNrX3JlY3YgPSBhY2s7XFxuIDMwMTpcXHRcXHRcXHQvKiBhbHNvIGhhbmRsZSBzZXF1ZW5jZSBudW1iZXIgd3JhcC1hcm91bmQgICovXFxuIDMwMjpcXHRcXHRcXHRpZiAoV1JBUFBFRChhY2ssIG9wdC1cXHUwMDNlYWNrX3JlY3YpKVxcbiAzMDM6XFx0XFx0XFx0XFx0b3B0LVxcdTAwM2VhY2tfcmVjdiA9IGFjaztcXG4gMzA0OlxcdFxcdH0gZWxzZSB7XFxuIDMwNTpcXHRcXHRcXHRoZWFkZXJzaXplIC09IHNpemVvZihoZWFkZXItXFx1MDAzZWFjayk7XFxuIDMwNjpcXHRcXHR9XFxuIDMwNzpcXHRcXHQvKiB0ZXN0IGlmIHBheWxvYWQgcHJlc2VudCAqL1xcbiAzMDg6XFx0XFx0aWYgKCFHUkVfSVNfU0VRKGhlYWRlci1cXHUwMDNlZ3JlX2hkLmZsYWdzKSlcXG4gMzA5OlxcdFxcdFxcdGdvdG8gZHJvcDtcXG4gMzEwOlxcdFxcbiAzMTE6XFx0XFx0cGF5bG9hZF9sZW4gPSBudG9ocyhoZWFkZXItXFx1MDAzZXBheWxvYWRfbGVuKTtcXG4gMzEyOlxcdFxcdHNlcSAgICAgICAgID0gbnRvaGwoaGVhZGVyLVxcdTAwM2VzZXEpO1xcbiAzMTM6XFx0XFxuIDMxNDpcXHRcXHQvKiBjaGVjayBmb3IgaW5jb21wbGV0ZSBwYWNrZXQgKGxlbmd0aCBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQpICovXFxuIDMxNTpcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZWFkZXJzaXplICsgcGF5bG9hZF9sZW4pKVxcbiAzMTY6XFx0XFx0XFx0Z290byBkcm9wO1xcbiAzMTc6XFx0XFxuIDMxODpcXHRcXHRwYXlsb2FkX2F2YWlsID0gc2tiLVxcdTAwM2VsZW4gLSBoZWFkZXJzaXplO1xcbiAzMTk6XFx0XFx0LyogY2hlY2sgZm9yIGV4cGVjdGVkIHNlcXVlbmNlIG51bWJlciAqL1xcbiAzMjA6XFx0XFx0aWYgKHNlcSBcXHUwMDNjIG9wdC1cXHUwMDNlc2VxX3JlY3YgKyAxIHx8IFdSQVBQRUQob3B0LVxcdTAwM2VzZXFfcmVjdiwgc2VxKSkge1xcbiAzMjE6XFx0XFx0XFx0aWYgKHBheWxvYWRfYXZhaWwgXFx1MDAzZT0gUFBQX0hEUkxFTiArIDEpIHtcXG4gMzIyOlxcdFxcdFxcdFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgKyBQUFBfSERSTEVOICsgMSkpXFxuIDMyMzpcXHRcXHRcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIDMyNDpcXHRcXG4gMzI1OlxcdFxcdFxcdFxcdHBheWxvYWQgPSBza2ItXFx1MDAzZWRhdGEgKyBoZWFkZXJzaXplO1xcbiAzMjY6XFx0XFx0XFx0XFx0aWYgKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFxcdTAwMjZcXHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFxcdTAwMjZcXHUwMDI2XFxuIDMyNzpcXHRcXHRcXHRcXHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXFx1MDAyNlxcdTAwMjZcXG4gMzI4OlxcdFxcdFxcdFxcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxcbiAzMjk6XFx0XFx0XFx0XFx0XFx0Z290byBhbGxvd19wYWNrZXQ7XFxuIDMzMDpcXHRcXHRcXHR9XFxuIDMzMTpcXHRcXHR9IGVsc2Uge1xcbiAzMzI6XFx0XFx0XFx0b3B0LVxcdTAwM2VzZXFfcmVjdiA9IHNlcTtcXG4gMzMzOlxcdGFsbG93X3BhY2tldDpcXG4gMzM0OlxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgaGVhZGVyc2l6ZSk7XFxuIDMzNTpcXHRcXG4gMzM2OlxcdFxcdFxcdGlmIChwYXlsb2FkX2F2YWlsIFxcdTAwM2U9IDIpIHtcXG4gMzM3OlxcdFxcdFxcdFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIDIpKVxcbiAzMzg6XFx0XFx0XFx0XFx0XFx0Z290byBkcm9wO1xcbiAzMzk6XFx0XFxuIDM0MDpcXHRcXHRcXHRcXHRpZiAoc2tiLVxcdTAwM2VkYXRhWzBdID09IFBQUF9BTExTVEFUSU9OUyBcXHUwMDI2XFx1MDAyNiBza2ItXFx1MDAzZWRhdGFbMV0gPT0gUFBQX1VJKSB7XFxuIDM0MTpcXHRcXHRcXHRcXHRcXHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cXG4gMzQyOlxcdFxcdFxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIDMpXFxuIDM0MzpcXHRcXHRcXHRcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIDM0NDpcXHRcXHRcXHRcXHRcXHRza2JfcHVsbChza2IsIDIpO1xcbiAzNDU6XFx0XFx0XFx0XFx0fVxcbiAzNDY6XFx0XFx0XFx0fVxcbiAzNDc6XFx0XFxuIDM0ODpcXHRcXHRcXHRza2ItXFx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX05PTkU7XFxuIDM0OTpcXHRcXHRcXHRza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgc2tiLVxcdTAwM2VoZWFkLXNrYi1cXHUwMDNlZGF0YSk7XFxuIDM1MDpcXHRcXHRcXHRwcHBfaW5wdXQoXFx1MDAyNnBvLVxcdTAwM2VjaGFuLCBza2IpO1xcbiAzNTE6XFx0XFxuIDM1MjpcXHRcXHRcXHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XFxuIDM1MzpcXHRcXHR9XFxuIDM1NDpcXHRkcm9wOlxcbiAzNTU6XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIDM1NjpcXHRcXHRyZXR1cm4gTkVUX1JYX0RST1A7XFxuIDM1NzpcXHR9XFxuIDM1ODpcXHRcXG4gMzU5OlxcdHN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MTIuOTc0NjEwNjE1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI2MzEwMDk0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUFBQIE5ldHdvcmtpbmcgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBmb2N1c2luZyBvbiB0aGUgUFBQIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUga2VybmVsJ3MgZHJpdmVyIGluZnJhc3RydWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIFBvaW50LXRvLVBvaW50IFByb3RvY29sIChQUFApIGNvbmZpZ3VyYXRpb24uIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgc3RhcnRpbmcgd2l0aCB0aGUgYGRyaXZlcnMvbmV0L3BwcC9gIGRpcmVjdG9yeS4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luLCB0byBmaWd1cmUgb3V0IHdoZXJlIFBQUCBzdXBwb3J0LCBhbmQgYnkgZXh0ZW5zaW9uLCB0aGUgUFBUUCAoUG9pbnQtdG8tUG9pbnQgVHVubmVsaW5nIFByb3RvY29sKSBvcHRpb25zIGFyZSBkZWZpbmVkLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzIGFuZCBkZXBlbmRlbmNpZXMuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgdW5kZXJzdGFuZCBob3cgUFBUUCBpcyBpbnRlZ3JhdGVkIGFuZCBwb3NzaWJseSBldmVuLCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGUgZGVzaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjMyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNToxNS4yMzc3MTU1NjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcwOTI5NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHB0cFxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19QUFBPRSkgKz0gcHBwb2Uub1xcbmRyaXZlcnMvbmV0L3BwcC9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfUFBUUCkgKz0gcHB0cC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjE1LjMxNDgxODUzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg5MzM1NzgwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFBQVFAgQ29uZmlndXJhdGlvbiBpbiB0aGUgS2VybmVsKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBDT05GSUdfUFBUUGAgb3B0aW9uIHJlc2lkZXMgaW4gdGhlIGtlcm5lbCdzIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbiBleHBlcmllbmNlZCBrZXJuZWwgZGV2ZWxvcGVyLCBpcyB0byBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlLiBUaGUgbGlrZWx5IHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBQUFAgbmV0d29ya2luZyBjb2RlLCBzbyBJJ2xsIGNoZWNrIGluc2lkZSB0aGUgYGRyaXZlcnMvbmV0L3BwcGAgZGlyZWN0b3J5LiBNb3JlIHNwZWNpZmljYWxseSwgSSBrbm93IHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSB0eXBpY2FsbHkgZGVmaW5lZCBpbiBgS2NvbmZpZ2AgZmlsZXMuIFRoZXJlZm9yZSwgbXkgaW5pdGlhbCB0YXJnZXQgd2lsbCBiZSBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgLiBUaGF0IGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIGRlZmluaXRpb24gZm9yIGBDT05GSUdfUFBUUGAgYW5kIHRlbGwgbWUgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLiBUaGF0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MjYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNToxNy4yMDgyMDQ4ODhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMzYwOTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQUFRQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNTM9Y29uZmlnIFBQUE9FX0hBU0hfQklUU1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTYwLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE2MTpjb25maWcgUFBUUFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE2Mi1cXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgSVB2NCAoUFBUUClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjE3LjMxMTU3MzE4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzE1ODgwNjc2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBQUFRQIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJMZXQncyBjcmFjayBvcGVuIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gUFBUUC5cIiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgUFBUUCBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gSSdtIGFzc3VtaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9uIG9yIGNvbmZpZ3VyYXRpb24gY29udGV4dCwgc28gSSdtIGZvY3VzaW5nIG15IG1lbnRhbCBlbmVyZ3kgb24gdGhhdC4gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgZGVwZW5kZW5jaWVzLCBvcHRpb25zLCBkZWZhdWx0cywgYW5kIHBvdGVudGlhbGx5IGFueSB0cmlzdGF0ZSBsb2dpYyBhc3NvY2lhdGVkIHdpdGggdGhlIFBQVFAgc3VwcG9ydC4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGFzc2Vzc2luZyBob3cgUFBUUCBzdXBwb3J0IGludGVyYWN0cyB3aXRoIG90aGVyIG5ldHdvcmsgY29tcG9uZW50cyBhbmQgc2VjdXJpdHkgZmVhdHVyZXMuIE15IGdvYWwgaXMgYSBmdWxsIHBpY3R1cmUgb2YgUFBUUCdzIGJ1aWxkIHRpbWUgaW50ZWdyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMzYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNToyMC40NzAzODM0MDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE1MDpcXHRcXG4gMTUxOlxcdGVuZGNob2ljZVxcbiAxNTI6XFx0XFxuIDE1MzpcXHRjb25maWcgUFBQT0VfSEFTSF9CSVRTXFxuIDE1NDpcXHRcXHRpbnRcXG4gMTU1OlxcdFxcdGRlZmF1bHQgMSBpZiBQUFBPRV9IQVNIX0JJVFNfMVxcbiAxNTY6XFx0XFx0ZGVmYXVsdCAyIGlmIFBQUE9FX0hBU0hfQklUU18yXFxuIDE1NzpcXHRcXHRkZWZhdWx0IDQgaWYgUFBQT0VfSEFTSF9CSVRTXzRcXG4gMTU4OlxcdFxcdGRlZmF1bHQgOCBpZiBQUFBPRV9IQVNIX0JJVFNfOFxcbiAxNTk6XFx0XFx0ZGVmYXVsdCA0XFxuIDE2MDpcXHRcXG4gMTYxOlxcdGNvbmZpZyBQUFRQXFxuIDE2MjpcXHRcXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgSVB2NCAoUFBUUClcXFwiXFxuIDE2MzpcXHRcXHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxcbiAxNjQ6XFx0XFx0c2VsZWN0IFBQUE9YXFxuIDE2NTpcXHRcXHRoZWxwXFxuIDE2NjpcXHRcXHQgIFN1cHBvcnQgZm9yIFBQUCBvdmVyIElQdjQuKFBvaW50LXRvLVBvaW50IFR1bm5lbGluZyBQcm90b2NvbClcXG4gMTY3OlxcdFxcbiAxNjg6XFx0XFx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBwcHBkIHBsdWdpbiB0byB3b3JrIGluIGNsaWVudCBtb2RlIG9yXFxuIDE2OTpcXHRcXHQgIG1vZGlmaWVkIHBwdHBkIChwb3B0b3ApIHRvIHdvcmsgaW4gc2VydmVyIG1vZGUuXFxuIDE3MDpcXHRcXHQgIFNlZSBodHRwOi8vYWNjZWwtcHB0cC5zb3VyY2Vmb3JnZS5uZXQvIGZvciBpbmZvcm1hdGlvbiBob3cgdG9cXG4gMTcxOlxcdFxcdCAgdXRpbGl6ZSB0aGlzIG1vZHVsZS5cXG4gMTcyOlxcdFxcbiAxNzM6XFx0Y29uZmlnIFBQUE9MMlRQXFxuIDE3NDpcXHRcXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgTDJUUFxcXCJcXG4gMTc1OlxcdFxcdGRlcGVuZHMgb24gTDJUUFxcbiAxNzY6XFx0XFx0c2VsZWN0IFBQUE9YXFxuIDE3NzpcXHRcXHRoZWxwXFxuIDE3ODpcXHRcXHQgIFN1cHBvcnQgZm9yIFBQUC1vdmVyLUwyVFAgc29ja2V0IGZhbWlseS4gTDJUUCBpcyBhIHByb3RvY29sXFxuIDE3OTpcXHRcXHQgIHVzZWQgYnkgSVNQcyBhbmQgZW50ZXJwcmlzZXMgdG8gdHVubmVsIFBQUCB0cmFmZmljIG92ZXIgVURQXFxuIDE4MDpcXHRcXHQgIHR1bm5lbHMuIEwyVFAgaXMgcmVwbGFjaW5nIFBQVFAgZm9yIFZQTiB1c2VzLlxcbiAxODE6XFx0aWYgVFRZXFxuIDE4MjpcXHRcXG4gMTgzOlxcdGNvbmZpZyBQUFBfQVNZTkNcXG4gMTg0OlxcdFxcdHRyaXN0YXRlIFxcXCJQUFAgc3VwcG9ydCBmb3IgYXN5bmMgc2VyaWFsIHBvcnRzXFxcIlxcbiAxODU6XFx0XFx0c2VsZWN0IENSQ19DQ0lUVFxcbiAxODY6XFx0XFx0aGVscFxcbiAxODc6XFx0XFx0ICBTYXkgWSAob3IgTSkgaGVyZSBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSBQUFAgb3ZlciBzdGFuZGFyZFxcbiAxODg6XFx0XFx0ICBhc3luY2hyb25vdXMgc2VyaWFsIHBvcnRzLCBzdWNoIGFzIENPTTEgb3IgQ09NMiBvbiBhIFBDLiAgSWYgeW91IHVzZVxcbiAxODk6XFx0XFx0ICBhIG1vZGVtIChub3QgYSBzeW5jaHJvbm91cyBvciBJU0ROIG1vZGVtKSB0byBjb250YWN0IHlvdXIgSVNQLCB5b3VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MjAuNDcwNTM0ODIyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNzk5OTAyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgTkVUX0lQR1JFX0RFTVVYYCBpbiBLY29uZmlnKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgc29tZXRoaW5nIOKAkyBsZXQncyBzZWUsIGl0J3MgYWJvdXQgdGhlIGRlbXVsdGlwbGV4aW5nIG9mIElQIEdSRSBwYWNrZXRzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hlcmUgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGNvbmZpZ3VyZWQ6IEkgbmVlZCB0byBjaGVjayBgS2NvbmZpZ2AgZm9yIHRoZSBgTkVUX0lQR1JFX0RFTVVYYCBzeW1ib2wuIEknbSBhc3N1bWluZyBpdCdzIHByb2JhYmx5IGEgYm9vbGVhbiBvciB0cmlzdGF0ZSwgYnV0IHRoZSBleGFjdCBkZXRhaWxzIHdpbGwgY29tZSBvdXQgb2YgaW5zcGVjdGluZyB0aGUgY29uZmlnLiBJZiBpdCdzIGVuYWJsZWQsIHRoYXQgb2YgY291cnNlIHdvdWxkIHN1Z2dlc3Qgd2Ugd2FudCBzb21lIGRlbXVsdGlwbGV4aW5nOyBpZiBub3QsIHRoZXJlIG1pZ2h0IGJlIG90aGVyIG1lYW5zIG9mIEdSRSBkZW11eGluZyBoYXBwZW5pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGNvbmZpZyBvcHRpb24gYW5kIHRoZSBnZW5lcmFsIEdSRSBpbXBsZW1lbnRhdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBkZWZhdWx0IHNldHRpbmdzIHRvIHNlZSB0aGUgdHlwaWNhbCB1c2UgY2FzZXMgYW5kIGhvdyB0aGlzIGFsaWducyB3aXRoIHRoZSBjdXJyZW50IGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA1NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MjIuNTUwNTMxNDI3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ0NjIzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9JUEdSRV9ERU1VWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MTYyPWNvbmZpZyBORVRfSVBJUFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0xNzktXFxubmV0L2lwdjQvS2NvbmZpZzoxODA6Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxcbm5ldC9pcHY0L0tjb25maWctMTgxLVxcdHRyaXN0YXRlIFxcXCJJUDogR1JFIGRlbXVsdGlwbGV4ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjIyLjY5NDk5OTc5NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTY5Nzc5OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBHUkUgRGVtdXggQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBgbmV0L2lwdjQvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYE5FVF9JUEdSRV9ERU1VWGAgb3B0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBjb25maWd1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLiBUaGlzIGlzIGxpa2VseSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydCB0byB0cmFjZSB0aGUgR1JFIGRlbXVsdGlwbGV4aW5nIGZ1bmN0aW9uYWxpdHksIGFuZCB1bmRlcnN0YW5kaW5nIGl0cyBjb25maWd1cmF0aW9uIGlzIHRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgdG93YXJkIHVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW91ciB3aXRoaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM5NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjI1Ljg2NDc4MzY1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3NSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3NTpcXHRcXG4gMTc2OlxcdFxcdCAgU2F5aW5nIFkgdG8gdGhpcyBvcHRpb24gd2lsbCBwcm9kdWNlIHR3byBtb2R1bGVzICggPSBjb2RlIHdoaWNoIGNhblxcbiAxNzc6XFx0XFx0ICBiZSBpbnNlcnRlZCBpbiBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCB3aGVuZXZlciB5b3VcXG4gMTc4OlxcdFxcdCAgd2FudCkuIE1vc3QgcGVvcGxlIHdvbid0IG5lZWQgdGhpcyBhbmQgY2FuIHNheSBOLlxcbiAxNzk6XFx0XFxuIDE4MDpcXHRjb25maWcgTkVUX0lQR1JFX0RFTVVYXFxuIDE4MTpcXHRcXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcbiAxODI6XFx0XFx0aGVscFxcbiAxODM6XFx0XFx0ICBUaGlzIGlzIGhlbHBlciBtb2R1bGUgdG8gZGVtdWx0aXBsZXggR1JFIHBhY2tldHMgb24gR1JFIHZlcnNpb24gZmllbGQgY3JpdGVyaWEuXFxuIDE4NDpcXHRcXHQgIFJlcXVpcmVkIGJ5IGlwX2dyZSBhbmQgcHB0cCBtb2R1bGVzLlxcbiAxODU6XFx0XFxuIDE4NjpcXHRjb25maWcgTkVUX0lQX1RVTk5FTFxcbiAxODc6XFx0XFx0dHJpc3RhdGVcXG4gMTg4OlxcdFxcdHNlbGVjdCBEU1RfQ0FDSEVcXG4gMTg5OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4gMTkwOlxcdFxcdGRlZmF1bHQgblxcbiAxOTE6XFx0XFxuIDE5MjpcXHRjb25maWcgTkVUX0lQR1JFXFxuIDE5MzpcXHRcXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcXFwiXFxuIDE5NDpcXHRcXHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxcbiAxOTU6XFx0XFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG4gMTk2OlxcdFxcdGhlbHBcXG4gMTk3OlxcdFxcdCAgVHVubmVsaW5nIG1lYW5zIGVuY2Fwc3VsYXRpbmcgZGF0YSBvZiBvbmUgcHJvdG9jb2wgdHlwZSB3aXRoaW5cXG4gMTk4OlxcdFxcdCAgYW5vdGhlciBwcm90b2NvbCBhbmQgc2VuZGluZyBpdCBvdmVyIGEgY2hhbm5lbCB0aGF0IHVuZGVyc3RhbmRzIHRoZVxcbiAxOTk6XFx0XFx0ICBlbmNhcHN1bGF0aW5nIHByb3RvY29sLiBUaGlzIHBhcnRpY3VsYXIgdHVubmVsaW5nIGRyaXZlciBpbXBsZW1lbnRzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjI1Ljg2NTAwMTIyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2NDUzMzIwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIHBwdHAuYyBQYWNrZXQgUmVjZXB0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHJlYWxseSB1bmRlcnN0YW5kIGhvdyBQUFRQIHBhY2tldCByZWNlcHRpb24gaXMgaGFuZGxlZC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgaWRlbnRpZnkgdGhlIGtleSBlbnRyeSBwb2ludHMgd2l0aGluIGBwcHRwLmNgLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCBieSBkaXNzZWN0aW5nIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGNvZGUgYW5kIG1hcCBvdXQgdGhlIHBhY2tldCBoYW5kbGluZyBsb2dpYy4gSSdtIHByaW1hcmlseSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgdGhlIGRhdGFwYXRoIHdvcmtzLCBob3cgdGhlIHJlY2VpdmUgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYW5kIGhvdyB0aGUgcGFja2V0cyBtYWtlIHRoZWlyIHdheSB1cCB0aGUgbmV0d29ya2luZyBzdGFjay4gTG9va2luZyBhdCB0aGUgY29kZSBpcyB0aGUgb25seSB3YXkgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb24gYW55IG51YW5jZXMgaW4gdGhlIGltcGxlbWVudGF0aW9uLCBwYXJ0aWN1bGFybHkgZm9yIGVycm9yIGhhbmRsaW5nIG9yIG9wdGltaXphdGlvbiB0cmlja3MuIEknbSBleHBlY3RpbmcgdGhpcyB3aWxsIGludm9sdmUgdW5kZXJzdGFuZGluZyBob3cgdGhlIEdSRSBwYWNrZXRzIGFyZSBkZW11bHRpcGxleGVkIGFuZCwgcHJlc3VtYWJseSwgcGFzc2VkIHVwIHRvIHRoZSByZWxldmFudCBQUFAgbGF5ZXIuIExldCdzIGRpZyBpbiBhbmQgZmluZCB0aG9zZSBjcnVjaWFsIGVudHJ5IHBvaW50cyFcblxuXG4iLCJJbnB1dFRva2VucyI6Njk1MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MjguNTEwMzM1NzYxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjM5ODM2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcHRwX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NDc9c3RhdGljIERFRklORV9TUElOTE9DSyhjaGFuX2xvY2spO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDgtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0OTpzdGF0aWMgc3RydWN0IHByb3RvIHBwdHBfc2tfcHJvdG8gX19yZWFkX21vc3RseTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwdHBfY2hhbl9vcHM7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MTpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwcHRwX29wcztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NTM9c3RhdGljIHN0cnVjdCBwcHBveF9zb2NrICpsb29rdXBfY2hhbih1MTYgY2FsbF9pZCwgX19iZTMyIHNfYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTUtXFx0c3RydWN0IHBwcG94X3NvY2sgKnNvY2s7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NjpcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz03Mj1zdGF0aWMgaW50IGxvb2t1cF9jaGFuX2RzdCh1MTYgY2FsbF9pZCwgX19iZTMyIGRfYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzQtXFx0c3RydWN0IHBwcG94X3NvY2sgKnNvY2s7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3NTpcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTc2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz05ND1zdGF0aWMgaW50IGFkZF9jaGFuKHN0cnVjdCBwcHBveF9zb2NrICpzb2NrLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6OTU6XFx0XFx0ICAgIHN0cnVjdCBwcHRwX2FkZHIgKnNhKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtOTYte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xMjQ9c3RhdGljIHZvaWQgZGVsX2NoYW4oc3RydWN0IHBwcG94X3NvY2sgKnNvY2spXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTEzMS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjEzMjpzdGF0aWMgc3RydWN0IHJ0YWJsZSAqcHB0cF9yb3V0ZV9vdXRwdXQoY29uc3Qgc3RydWN0IHBwcG94X3NvY2sgKnBvLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTMzLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBmbG93aTQgKmZsNClcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTQ5OnN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1My1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNTQ6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcXHUwMDI2cG8tXFx1MDAzZXByb3RvLnBwdHA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNTU6XFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGRyO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTU2LVxcdHVuc2lnbmVkIGludCBoZWFkZXJfbGVuID0gc2l6ZW9mKCpoZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNjktXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNzA6XFx0cnQgPSBwcHRwX3JvdXRlX291dHB1dChwbywgXFx1MDAyNmZsNCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNzEtXFx0aWYgKElTX0VSUihydCkpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTIxNi1cXHRza2JfcHVzaChza2IsIGhlYWRlcl9sZW4pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjE3OlxcdGhkciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NS1cXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzY6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcXHUwMDI2cG8tXFx1MDAzZXByb3RvLnBwdHA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzctXFx0aW50IGhlYWRlcnNpemUsIHBheWxvYWRfbGVuLCBzZXE7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3OS1cXHRfX3U4ICpwYXlsb2FkO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjgwOlxcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjg0LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Mjg1OlxcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yODYtXFx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI5My1cXHRcXHRcXHRnb3RvIGRyb3A7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyOTQ6XFx0XFx0aGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLVxcdTAwM2VkYXRhKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzU4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzU5OnN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM2MC17XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNjEtXFx0c3RydWN0IHBwcG94X3NvY2sgKnBvO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzYyOlxcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM2My1cXHRzdHJ1Y3QgaXBoZHIgKmlwaDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzcyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzczOlxcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzc0LVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zOTMtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzozOTQ6c3RhdGljIGludCBwcHRwX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM5NS1cXHRcXHQgICAgIGludCBzb2NrYWRkcl9sZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQyNi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQyNzpzdGF0aWMgaW50IHBwdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdXNlcnZhZGRyLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDI4LVxcdFxcdFxcdGludCBzb2NrYWRkcl9sZW4sIGludCBmbGFncylcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDMyLVxcdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQzMzpcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdCA9IFxcdTAwMjZwby1cXHUwMDNlcHJvdG8ucHB0cDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQzNC1cXHRzdHJ1Y3QgcnRhYmxlICpydDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDY1LVxcdHBvLVxcdTAwM2VjaGFuLnByaXZhdGUgPSBzaztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ2NjpcXHRwby1cXHUwMDNlY2hhbi5vcHMgPSBcXHUwMDI2cHB0cF9jaGFuX29wcztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2Ny1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ2ODpcXHRydCA9IHBwdHBfcm91dGVfb3V0cHV0KHBvLCBcXHUwMDI2Zmw0KTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2OS1cXHRpZiAoSVNfRVJSKHJ0KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00NzktXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0ODA6XFx0cG8tXFx1MDAzZWNoYW4uaGRybGVuID0gMiArIHNpemVvZihzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4MS1cXHRwby1cXHUwMDNlY2hhbi5kaXJlY3RfeG1pdCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ5NS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ5NjpzdGF0aWMgaW50IHBwdHBfZ2V0bmFtZShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDk3LVxcdGludCBwZWVyKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MTItXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MTM6c3RhdGljIGludCBwcHRwX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUxNC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0NC1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU0NTpzdGF0aWMgdm9pZCBwcHRwX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTUzLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTU0OnN0YXRpYyBpbnQgcHB0cF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQga2VybilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1OC1cXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG87XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NTk6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQ7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjAtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NjE6XFx0c2sgPSBza19hbGxvYyhuZXQsIFBGX1BQUE9YLCBHRlBfS0VSTkVMLCBcXHUwMDI2cHB0cF9za19wcm90bywga2Vybik7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjItXFx0aWYgKCFzaylcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTY3LVxcdHNvY2stXFx1MDAzZXN0YXRlID0gU1NfVU5DT05ORUNURUQ7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1Njg6XFx0c29jay1cXHUwMDNlb3BzICAgPSBcXHUwMDI2cHB0cF9vcHM7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjktXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NzA6XFx0c2stXFx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3MS1cXHRzay1cXHUwMDNlc2tfc3RhdGUgICAgICAgPSBQUFBPWF9OT05FO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzQtXFx0c2stXFx1MDAzZXNrX3Byb3RvY29sICAgID0gUFhfUFJPVE9fUFBUUDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU3NTpcXHRzay1cXHUwMDNlc2tfZGVzdHJ1Y3QgICAgPSBwcHRwX3NvY2tfZGVzdHJ1Y3Q7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzYtXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU4Ny1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU4ODpzdGF0aWMgaW50IHBwdHBfcHBwX2lvY3RsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgdW5zaWduZWQgaW50IGNtZCxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU4OS1cXHR1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTkyLVxcdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU5MzpcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdCA9IFxcdTAwMjZwby1cXHUwMDNlcHJvdG8ucHB0cDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU5NC1cXHR2b2lkIF9fdXNlciAqYXJncCA9ICh2b2lkIF9fdXNlciAqKWFyZztcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjE4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjE5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwdHBfY2hhbl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjA6XFx0LnN0YXJ0X3htaXQgPSBwcHRwX3htaXQsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjE6XFx0LmlvY3RsICAgICAgPSBwcHRwX3BwcF9pb2N0bCxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYyMi19O1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjIzLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjI0OnN0YXRpYyBzdHJ1Y3QgcHJvdG8gcHB0cF9za19wcm90byBfX3JlYWRfbW9zdGx5ID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjI1LVxcdC5uYW1lICAgICA9IFxcXCJQUFRQXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjI5LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjMwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwdHBfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjMxLVxcdC5mYW1pbHkgICAgID0gQUZfUFBQT1gsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MzItXFx0Lm93bmVyICAgICAgPSBUSElTX01PRFVMRSxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYzMzpcXHQucmVsZWFzZSAgICA9IHBwdHBfcmVsZWFzZSxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYzNDpcXHQuYmluZCAgICAgICA9IHBwdHBfYmluZCxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYzNTpcXHQuY29ubmVjdCAgICA9IHBwdHBfY29ubmVjdCxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzNi1cXHQuc29ja2V0cGFpciA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzNy1cXHQuYWNjZXB0ICAgICA9IHNvY2tfbm9fYWNjZXB0LFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjM4OlxcdC5nZXRuYW1lICAgID0gcHB0cF9nZXRuYW1lLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjM5LVxcdC5saXN0ZW4gICAgID0gc29ja19ub19saXN0ZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0OS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY1MDpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcG94X3Byb3RvIHBwcG94X3BwdHBfcHJvdG8gPSB7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2NTE6XFx0LmNyZWF0ZSA9IHBwdHBfY3JlYXRlLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjUyLVxcdC5vd25lciAgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjU0LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjU1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3JlX3Byb3RvY29sIGdyZV9wcHRwX3Byb3RvY29sID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjU2OlxcdC5oYW5kbGVyID0gcHB0cF9yY3YsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NTctfTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY1OC1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY1OTpzdGF0aWMgaW50IF9faW5pdCBwcHRwX2luaXRfbW9kdWxlKHZvaWQpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NjctXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2Njg6XFx0ZXJyID0gZ3JlX2FkZF9wcm90b2NvbChcXHUwMDI2Z3JlX3BwdHBfcHJvdG9jb2wsIEdSRVBST1RPX1BQVFApO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjY5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjczLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njc0OlxcdGVyciA9IHByb3RvX3JlZ2lzdGVyKFxcdTAwMjZwcHRwX3NrX3Byb3RvLCAwKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY3NS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY3OS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY4MDpcXHRlcnIgPSByZWdpc3Rlcl9wcHBveF9wcm90byhQWF9QUk9UT19QUFRQLCBcXHUwMDI2cHBwb3hfcHB0cF9wcm90byk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02ODEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02ODgtb3V0X3VucmVnaXN0ZXJfc2tfcHJvdG86XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2ODk6XFx0cHJvdG9fdW5yZWdpc3RlcihcXHUwMDI2cHB0cF9za19wcm90byk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02OTAtb3V0X2dyZV9kZWxfcHJvdG9jb2w6XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2OTE6XFx0Z3JlX2RlbF9wcm90b2NvbChcXHUwMDI2Z3JlX3BwdHBfcHJvdG9jb2wsIEdSRVBST1RPX1BQVFApO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjkyLW91dF9tZW1fZnJlZTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjk3LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njk4OnN0YXRpYyB2b2lkIF9fZXhpdCBwcHRwX2V4aXRfbW9kdWxlKHZvaWQpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02OTkte1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzAwLVxcdHVucmVnaXN0ZXJfcHBwb3hfcHJvdG8oUFhfUFJPVE9fUFBUUCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3MDE6XFx0cHJvdG9fdW5yZWdpc3RlcihcXHUwMDI2cHB0cF9za19wcm90byk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3MDI6XFx0Z3JlX2RlbF9wcm90b2NvbChcXHUwMDI2Z3JlX3BwdHBfcHJvdG9jb2wsIEdSRVBST1RPX1BQVFApO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzAzLVxcdHZmcmVlKGNhbGxpZF9zb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzA1LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NzA2Om1vZHVsZV9pbml0KHBwdHBfaW5pdF9tb2R1bGUpO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NzA3Om1vZHVsZV9leGl0KHBwdHBfZXhpdF9tb2R1bGUpO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzA4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNToyOC41OTY3NDA4NjVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzkzMzY4NjQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBQVFAgR1JFIFBhY2tldCBSZWNlcHRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBvbiBob3cgUFBUUCB0cmFmZmljIGlzIGhhbmRsZWQgYXQgdGhlIG5ldHdvcmsgbGV2ZWwsIHNwZWNpZmljYWxseSB0aGUgcmVjZXB0aW9uIG9mIEdSRSBwYWNrZXRzLiBGcm9tIHdoYXQgSSB1bmRlcnN0YW5kLCB0aGUgZnVuY3Rpb24gYHBwdHBfcmN2YCBpcyB0aGUgZGVzaWduYXRlZCBoYW5kbGVyIGZvciBHUkUgcGFja2V0cyBkZXNpZ25hdGVkIHdpdGggYEdSRVBST1RPX1BQVFBgLiBFc3NlbnRpYWxseSwgaXQncyB0aGUgZ2F0ZWtlZXBlciBmb3IgUFBUUCB0cmFmZmljIGNvbWluZyBpbiBvdmVyIEdSRS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHBwdHBfcmN2YCBuZWVkcyB0byBwcm9jZXNzIGluY29taW5nIEdSRSBwYWNrZXRzIGFuZCBkaXJlY3QgdGhlbSBhcHByb3ByaWF0ZWx5LCB3aGljaCBpdCBhY2NvbXBsaXNoZXMgYnkgZmluZGluZyB0aGUgcmVsZXZhbnQgc29ja2V0IGFuZCBwYXNzaW5nIHRoZSBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgdG8gYHNrX3JlY2VpdmVfc2tiYC4gVGhpcyBmdW5jdGlvbiB0aGVuIGxpa2VseSBpbnZva2VzIHRoZSBzb2NrZXQncyBiYWNrbG9nIGhhbmRsZXIuIFRoaXMgcGFydCBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IHRvIGludmVzdGlnYXRlIGFzIGl0J3MgdGhlIGNvcmUgb2YgaG93IHBhY2tldHMgYXJlIHJvdXRlZC4gYHNrLVx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZWAgdGVsbHMgbWUgdGhhdCBgcHB0cF9yY3ZfY29yZWAgaXMgdGhlIGJhY2tsb2cgaGFuZGxlciBpbiB0aGlzIGNvbnRleHQuIE5vdyBJIHNob3VsZCBjaGVjayBleGFjdGx5IHdoYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBwcHRwX3JjdmAgZG9lcy4gSSB3aWxsIGNoZWNrIHBwdHAuYyBsaW5lcyAzNTgtMzkyIGFuZCBkaXNzZWN0IGl0cyBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzNDAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MzIuNTMwNDMxMDlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzU4LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzU4OlxcdFxcbiAzNTk6XFx0c3RhdGljIGludCBwcHRwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAzNjA6XFx0e1xcbiAzNjE6XFx0XFx0c3RydWN0IHBwcG94X3NvY2sgKnBvO1xcbiAzNjI6XFx0XFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xcbiAzNjM6XFx0XFx0c3RydWN0IGlwaGRyICppcGg7XFxuIDM2NDpcXHRcXG4gMzY1OlxcdFxcdGlmIChza2ItXFx1MDAzZXBrdF90eXBlICE9IFBBQ0tFVF9IT1NUKVxcbiAzNjY6XFx0XFx0XFx0Z290byBkcm9wO1xcbiAzNjc6XFx0XFxuIDM2ODpcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCAxMikpXFxuIDM2OTpcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIDM3MDpcXHRcXG4gMzcxOlxcdFxcdGlwaCA9IGlwX2hkcihza2IpO1xcbiAzNzI6XFx0XFxuIDM3MzpcXHRcXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKXNrYi1cXHUwMDNlZGF0YTtcXG4gMzc0OlxcdFxcbiAzNzU6XFx0XFx0aWYgKGhlYWRlci1cXHUwMDNlZ3JlX2hkLnByb3RvY29sICE9IEdSRV9QUk9UT19QUFAgfHwgLyogUFBUUC1HUkUgcHJvdG9jb2wgZm9yIFBQVFAgKi9cXG4gMzc2OlxcdFxcdFxcdEdSRV9JU19DU1VNKGhlYWRlci1cXHUwMDNlZ3JlX2hkLmZsYWdzKSB8fCAgICAvKiBmbGFnIENTVU0gc2hvdWxkIGJlIGNsZWFyICovXFxuIDM3NzpcXHRcXHRcXHRHUkVfSVNfUk9VVElORyhoZWFkZXItXFx1MDAzZWdyZV9oZC5mbGFncykgfHwgLyogZmxhZyBST1VUSU5HIHNob3VsZCBiZSBjbGVhciAqL1xcbiAzNzg6XFx0XFx0XFx0IUdSRV9JU19LRVkoaGVhZGVyLVxcdTAwM2VncmVfaGQuZmxhZ3MpIHx8ICAgIC8qIGZsYWcgS0VZIHNob3VsZCBiZSBzZXQgKi9cXG4gMzc5OlxcdFxcdFxcdChoZWFkZXItXFx1MDAzZWdyZV9oZC5mbGFncyBcXHUwMDI2IEdSRV9GTEFHUykpICAgICAvKiBmbGFnIFJlY3Vyc2lvbiBDdHJsIHNob3VsZCBiZSBjbGVhciAqL1xcbiAzODA6XFx0XFx0XFx0LyogaWYgaW52YWxpZCwgZGlzY2FyZCB0aGlzIHBhY2tldCAqL1xcbiAzODE6XFx0XFx0XFx0Z290byBkcm9wO1xcbiAzODI6XFx0XFxuIDM4MzpcXHRcXHRwbyA9IGxvb2t1cF9jaGFuKG50b2hzKGhlYWRlci1cXHUwMDNlY2FsbF9pZCksIGlwaC1cXHUwMDNlc2FkZHIpO1xcbiAzODQ6XFx0XFx0aWYgKHBvKSB7XFxuIDM4NTpcXHRcXHRcXHRza2JfZHN0X2Ryb3Aoc2tiKTtcXG4gMzg2OlxcdFxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuIDM4NzpcXHRcXHRcXHRyZXR1cm4gc2tfcmVjZWl2ZV9za2IoXFx1MDAyNnBvLVxcdTAwM2Vzaywgc2tiLCAwKTtcXG4gMzg4OlxcdFxcdH1cXG4gMzg5OlxcdGRyb3A6XFxuIDM5MDpcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gMzkxOlxcdFxcdHJldHVybiBORVRfUlhfRFJPUDtcXG4gMzkyOlxcdH1cXG4gMzkzOlxcdFxcbiAzOTQ6XFx0c3RhdGljIGludCBwcHRwX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcXG4gMzk1OlxcdFxcdFxcdCAgICAgaW50IHNvY2thZGRyX2xlbilcXG4gMzk2OlxcdHtcXG4gMzk3OlxcdFxcdHN0cnVjdCBzb2NrICpzayA9IHNvY2stXFx1MDAzZXNrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNTozMi41MzA1Njg3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyNzUzMDAyMzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIFBQVFAgR1JFIEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgcHB0cF9yY3ZfY29yZWAsIGFuZCBpdCdzIGdvdCBteSBhdHRlbnRpb24uIEl0J3MgYSBmaXggcmVsYXRlZCB0byBwYWNrZXQgbGVuZ3RoIGFuZCBgcHNrYl9tYXlfcHVsbGAgY2hlY2tzIHdoZW4gdGhlIGtlcm5lbCBpcyBwcm9jZXNzaW5nIHJlY2VpdmVkIFBQVFAgR1JFIHBhY2tldHMuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGUgY2hlY2sgbm93IGVuc3VyZXMgdGhhdCB0aGUgcGF5bG9hZCBhdmFpbGFiaWxpdHkgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHJlcXVpcmVkLCBtZWFuaW5nIGBwYXlsb2FkX2F2YWlsIFx1MDAzZT0gUFBQX0hEUkxFTiArIDFgIGFuZCBgcGF5bG9hZF9hdmFpbCBcdTAwM2U9IDJgIGFyZSBtZXQgYmVmb3JlIHRoZSBjb2RlIGFjY2Vzc2VzIHRoZSBwYXlsb2FkL2RhdGEuIFRoaXMgc291bmRzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBwYWNrZXQgcGFyc2luZyBsb2dpYyBhbmQgYm91bmRzIGNoZWNraW5nLCB3aGljaCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy5cblxuR2l2ZW4gdGhhdCBQUFRQIHNvY2tldHMgYXJlIHN0YW5kYXJkIG5ldHdvcmsgc29ja2V0cyBhbmQgYXJlIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSB2aWEgc3RhbmRhcmQgc29ja2V0IHN5c3RlbSBjYWxscyAodGhpbmsgYHNvY2tldChBRl9QUFBPWCwgLi4uLCBQWF9QUk9UT19QUFRQKWApLCByZWNlaXZpbmcgR1JFIHBhY2tldHMgKGUuZy4sIG92ZXIgbG9vcGJhY2sgb3IgYSBuZXRucyksIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkIG9wcG9ydHVuaXR5LiBUaGUgZmFjdCB0aGF0IHRoZSB2dWxuZXJhYmlsaXR5IGlzIGluIHRoZSBjb3JlIG5ldHdvcmsgaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gUFBQIGFuZCBQUFRQLCBmdXJ0aGVyIHN0cmVuZ3RoZW5zIHRoZSBjYXNlLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB3aGF0IGZ1bmN0aW9ucyB0byBmb2N1cyBvbi4gT2J2aW91c2x5LCBgcHB0cF9yY3ZfY29yZWAgaXMgYSBrZXkgY2FuZGlkYXRlLiBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGBwcHRwX3JjdmAsIHNpbmNlIGl0IHNlZW1zIGxpa2UgYHBwdHBfcmN2X2NvcmVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHRoYXQncyBiZWluZyB1c2VkIGJ5IGBwcHRwX3JjdmAuIE90aGVyIGludGVyZXN0aW5nIGZ1bmN0aW9ucyB0byBpbmNsdWRlIGluIHRoZSBmdXp6aW5nIGZvY3VzIGNvdWxkIGJlIGBwcHRwX2Nvbm5lY3RgLCBgcHB0cF9iaW5kYCwgYHBwdHBfY3JlYXRlYCwgYW5kIGBwcHRwX3htaXRgLiBJJ2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgaWYgdGhleSdyZSBzdGF0aWMsIGlubGluZWQsIG9yIGlmIEkgc2hvdWxkIGp1c3QgaW5jbHVkZSB0aGVtIGFsbCBmb3Igbm93LiBJIGtub3cgdGhhdCBgcHB0cF9yY3ZfY29yZWAgaXMgc3RhdGljLCBidXQgdGhlIGFkZHJlc3MgaXMgdGFrZW4gYnkgdGhlIGBzay1cdTAwM2Vza19iYWNrbG9nX3JjdiA9IHBwdHBfcmN2X2NvcmU7YCBhc3NpZ25tZW50LiBTaW1pbGFybHksIGBwcHRwX3JjdmAgaXMgc3RhdGljLCB3aXRoIGl0cyBhZGRyZXNzIGJlaW5nIHVzZWQgYnkgYGdyZV9wcHRwX3Byb3RvY29sLmhhbmRsZXIgPSBwcHRwX3JjdmAuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBzeW1ib2xzIGRlZmluZWQgaW4gYHBwdHAuY2AgdG9vLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gSXQgbG9va3MgbGlrZSBgUFBUUGAgZGVwZW5kcyBvbiBgTkVUX0lQR1JFX0RFTVVYYCBhbmQgc2VsZWN0cyBgUFBQT1hgLiBgTkVUX0lQR1JFX0RFTVVYYCBpdHNlbGYgaXMgaW4gdGhlIGBuZXQvaXB2NC9LY29uZmlnYCBhbmQgaXMgYWxzbyB0cmlzdGF0ZS4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBiYXNlIGBQUFBgIHN1YnN5c3RlbSBpdHNlbGYgKGBDT05GSUdfUFBQYCkgaXMgZW5hYmxlZC4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgIGZpbGUgdG8gc2VlIHdoYXQgbWVudXMgYW5kIGRlcGVuZGVuY2llcyB0aGVyZSBhcmUgYXMgd2VsbC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGJ1aWxkIHJlcXVpcmVtZW50cyBmb3Igc3VjY2Vzc2Z1bCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM5NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjQ1LjI4MzU3NTUyNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NDI1NDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbnVjb25maWcgUFBQfGlmIFBQUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL0tjb25maWc9Nj1jb25maWcgUFBQXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzozNTppZiBQUFBcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0zNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE1Mz1jb25maWcgUFBQT0VfSEFTSF9CSVRTXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTU0LVxcdGludFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE1NTpcXHRkZWZhdWx0IDEgaWYgUFBQT0VfSEFTSF9CSVRTXzFcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNTY6XFx0ZGVmYXVsdCAyIGlmIFBQUE9FX0hBU0hfQklUU18yXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTU3OlxcdGRlZmF1bHQgNCBpZiBQUFBPRV9IQVNIX0JJVFNfNFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE1ODpcXHRkZWZhdWx0IDggaWYgUFBQT0VfSEFTSF9CSVRTXzhcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTktXFx0ZGVmYXVsdCA0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjQ1LjQwMTAwODEzNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjEyOTg0NzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgS2VybmVsJ3MgTmV0d29yayBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBQUFAgKFBvaW50LXRvLVBvaW50IFByb3RvY29sKSBkcml2ZXJzIGFyZSBpbmNvcnBvcmF0ZWQgaW50byB0aGlzIGtlcm5lbCBidWlsZC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIEtjb25maWcgZmlsZXMgYXJlIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuIEknbGwgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIGRlcGVuZGVuY3kgb3IgaW5jbHVzaW9uIGxvZ2ljIGZvciB0aGUgUFBQLXJlbGF0ZWQgb3B0aW9ucy4gVGhpcyBmaWxlIGxpa2VseSBjb250cm9scyB0aGUgdmlzaWJpbGl0eSBhbmQgY29uZmlndXJhYmlsaXR5IG9mIHRoZSBQUFAgZHJpdmVycyBkdXJpbmcgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHByb2Nlc3MuIEknbSBleHBlY3RpbmcgdG8gZmluZCBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBvciBhIG1lbnUgZW50cnkgdGhhdCBwb2ludHMgbWUgdG8gd2hlcmUgdGhlIFBQUCBjb25maWd1cmF0aW9uIGVsZW1lbnRzIGFyZSBkZWZpbmVkLCBpZiBub3QgZGVmaW5lZCBkaXJlY3RseSB3aXRoaW4gdGhpcyBgS2NvbmZpZ2AgZmlsZSBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODY4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6NDguNjEzOTk2NDY3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTkyODQ1NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHBwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTMwMiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01MjY9c291cmNlIFxcXCJkcml2ZXJzL25ldC9wbGlwL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01MjctXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1Mjg6c291cmNlIFxcXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTUyOS1cXG4tLVxcbmRyaXZlcnMvbmV0L01ha2VmaWxlPTU3PW9iai0kKENPTkZJR19QTElQKSArPSBwbGlwL1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19QUFApICs9IHBwcC9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZTo1OTpvYmotJChDT05GSUdfUFBQX0FTWU5DKSArPSBwcHAvXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX1BQUF9CU0RDT01QKSArPSBwcHAvXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX1BQUF9ERUZMQVRFKSArPSBwcHAvXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjI6b2JqLSQoQ09ORklHX1BQUF9NUFBFKSArPSBwcHAvXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX1BQUF9TWU5DX1RUWSkgKz0gcHBwL1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19QUFBPRSkgKz0gcHBwL1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19QUFBPTDJUUCkgKz0gcHBwL1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19QUFRQKSArPSBwcHAvXFxuZHJpdmVycy9uZXQvTWFrZWZpbGUtNjctb2JqLSQoQ09ORklHX1NMSVApICs9IHNsaXAvXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9Mzg1Nz15dDkyMXhfZHNhX3BvcnRfc2V0X2RlZmF1bHRfcHJpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1OCBwcmlvKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4NzUtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM4NzY6c3RhdGljIGludCBfX21heWJlX3VudXNlZCBhcHBwcmlvc19jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYilcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzg3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9Mzg4Mj15dDkyMXhfZHNhX3BvcnRfZ2V0X2FwcHRydXN0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHU4ICpzZWwsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzg4NS1cXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM4ODY6XFx0dTggYXBwcHJpb3NbMl1bMl0gPSB7fTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzg4Ny1cXHRpbnQgbnNlbDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zODk3LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozODk4OlxcdGFwcHByaW9zWzBdWzBdID0gSUVFRV84MDIxUUFaX0FQUF9TRUxfRFNDUDtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzg5OTpcXHRhcHBwcmlvc1swXVsxXSA9ICh2YWwgXFx1MDAzZVxcdTAwM2UgKDMgKiBZVDkyMVhfQVBQX1NFTF9EU0NQKSkgXFx1MDAyNiA3O1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozOTAwOlxcdGFwcHByaW9zWzFdWzBdID0gRENCX0FQUF9TRUxfUENQO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozOTAxOlxcdGFwcHByaW9zWzFdWzFdID0gKHZhbCBcXHUwMDNlXFx1MDAzZSAoMyAqIFlUOTIxWF9BUFBfU0VMX0NWTEFOX1BDUCkpIFxcdTAwMjYgNztcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzkwMjpcXHRzb3J0KGFwcHByaW9zLCBBUlJBWV9TSVpFKGFwcHByaW9zKSwgc2l6ZW9mKGFwcHByaW9zWzBdKSwgYXBwcHJpb3NfY21wLFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zOTAzLVxcdCAgICAgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzkwNS1cXHRuc2VsID0gMDtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzkwNjpcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoYXBwcHJpb3MpIFxcdTAwMjZcXHUwMDI2IGFwcHByaW9zW2ldWzFdOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzkwNzpcXHRcXHRzZWxbbnNlbF0gPSBhcHBwcmlvc1tpXVswXTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzkwOC1cXHRcXHRuc2VsKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0LSNpbmNsdWRlIFxcdTAwM2NuZXQvcGt0X2Nscy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTU6I2luY2x1ZGUgXFx1MDAzY3VhcGkvbGludXgvcHBwX2RlZnMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD0zMTM9c3RydWN0IGFpcm9oYV9mb2VfbWFjX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaC0zMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaDozMTY6XFx0dTE2IHBwcG9lX2lkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgtMzE3LVxcdHUxNiBzcmNfbWFjX2xvO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD00NzM9c3RydWN0IGFpcm9oYV9mbG93X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaC01MDAtXFx0XFx0dTggbnVtO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmg6NTAxOlxcdH0gcHBwb2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaC01MDItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MzQyPXN0YXRpYyBpbnQgYWlyb2hhX3BwZV9mb2VfZW50cnlfcHJlcGFyZShzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0zNTktXFx0ICAgICAgRklFTERfUFJFUChBSVJPSEFfRk9FX0lCMV9CSU5EX1ZQTSwgZGF0YS1cXHUwMDNldmxhbi5udW0pIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjM2MDpcXHQgICAgICBGSUVMRF9QUkVQKEFJUk9IQV9GT0VfSUIxX0JJTkRfUFBQT0UsIGRhdGEtXFx1MDAzZXBwcG9lLm51bSkgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMzYxLVxcdCAgICAgIEFJUk9IQV9GT0VfSUIxX0JJTkRfVFRMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy00NTUtXFx0XFx0bWFjX2luZm8gPSAoc3RydWN0IGFpcm9oYV9mb2VfbWFjX2luZm8gKilsMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjQ1NjpcXHRcXHRtYWNfaW5mby1cXHUwMDNlcHBwb2VfaWQgPSBkYXRhLVxcdTAwM2VwcHBvZS5zaWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy00NTctXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDU5LVxcdFxcdFxcdFxcdCBGSUVMRF9QUkVQKEFJUk9IQV9GT0VfTUFDX1BQUE9FX0lELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6NDYwOlxcdFxcdFxcdFxcdFxcdCAgICBkYXRhLVxcdTAwM2VwcHBvZS5zaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDYxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDczLVxcdFxcdGwyLVxcdTAwM2VldHlwZSB8PSAhZGF0YS1cXHUwMDNldmxhbi5udW0gPyBCSVQoMTUpIDogMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjQ3NDpcXHR9IGVsc2UgaWYgKGRhdGEtXFx1MDAzZXBwcG9lLm51bSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDc1LVxcdFxcdGwyLVxcdTAwM2VldHlwZSA9IEVUSF9QX1BQUF9TRVM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTEwODg9c3RhdGljIGludCBhaXJvaGFfcHBlX2Zsb3dfb2ZmbG9hZF9yZXBsYWNlKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTExNzctXFx0XFx0Y2FzZSBGTE9XX0FDVElPTl9QUFBPRV9QVVNIOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTE3ODpcXHRcXHRcXHRpZiAoZGF0YS5wcHBvZS5udW0gPT0gMSB8fCBkYXRhLnZsYW4ubnVtID09IDIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xMTc5LVxcdFxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTExODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxMTgxOlxcdFxcdFxcdGRhdGEucHBwb2Uuc2lkID0gYWN0LVxcdTAwM2VwcHBvZS5zaWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxMTgyOlxcdFxcdFxcdGRhdGEucHBwb2UubnVtKys7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xMTgzLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jPTE5MT1zdGF0aWMgY29uc3Qgc3RydWN0IGJjbV9zeXNwb3J0X3N0YXRzIGJjbV9zeXNwb3J0X2dzdHJpbmdzX3N0YXRzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjI5LVxcdFNUQVRfTUlCX1JYKFxcXCJyeF91bmljYXN0XFxcIiwgbWliLnJ4LnVjKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM6MjMwOlxcdFNUQVRfTUlCX1JYKFxcXCJyeF9wcHBcXFwiLCBtaWIucngucHBwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjMxLVxcdFNUQVRfTUlCX1JYKFxcXCJyeF9jcmNcXFwiLCBtaWIucngucmNyYyksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0Lmg9NTExPXN0cnVjdCBiY21fc3lzcG9ydF9yeF9jb3VudGVycyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmgtNTI5LVxcdHUzMlxcdHVjO1xcdFxcdC8qIFJPICMgb2YgdW5pY2FzdCBwa3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0Lmg6NTMwOlxcdHUzMlxcdHBwcDtcXHRcXHQvKiBSTyAjIG9mIFBQUCBwa3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmgtNTMxLVxcdHUzMlxcdHJjcmM7XFx0XFx0LyogUk8gKDB4NDcwKSwjIG9mIENSQyBtYXRjaCBwa3QgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYz0yMTE4PXN0YXRpYyB2b2lkIGJueDJ4X3VwZGF0ZV9wZmNfbmlnKHN0cnVjdCBsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jLTIxMjEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYzoyMTIyOlxcdHUzMiB4Y21fbWFzayA9IDAsIHBwcF9lbmFibGUgPSAwLCBwYXVzZV9lbmFibGUgPSAwLCBsbGZjX291dF9lbiA9IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jLTIxMjMtXFx0dTMyIGxsZmNfZW5hYmxlID0gMCwgeGNtX291dF9lbiA9IDAsIGh3cGZjX2VuYWJsZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMtMjE0NS1cXHRcXHRpZiAoQ0hJUF9JU19FMyhicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jOjIxNDY6XFx0XFx0XFx0cHBwX2VuYWJsZSA9IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jLTIxNDctXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYzoyMTQ4OlxcdFxcdFxcdHBwcF9lbmFibGUgPSAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYy0yMTQ5LVxcdFxcdHhjbV9tYXNrIFxcdTAwMjY9IH4ocG9ydCA/IE5JR19MTEgxX1hDTV9NQVNLX1JFR19MTEgxX1hDTV9NQVNLX0JDTiA6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMtMjE3Ni1cXHRSRUdfV1IoYnAsIHBvcnQgPyBOSUdfUkVHX1BQUF9FTkFCTEVfMSA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jOjIxNzc6XFx0ICAgICAgIE5JR19SRUdfUFBQX0VOQUJMRV8wLCBwcHBfZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMtMjE3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oPTg3MT1leHRlcm4gY29uc3QgdTMyIGRtYWVfcmVnX2dvX2NbXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oLTIwNjItI2RlZmluZSBOSUdfUkVHX0xFRF9NT0RFX1AwXFx0XFx0XFx0XFx0XFx0IDB4MTAyZjBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaDoyMDYzOi8qIFtSVyAzXSBmb3IgcG9ydDAgZW5hYmxlIGZvciBsbGZjIHBwcCBhbmQgcGF1c2UuIGIwIC0gYnJiMSBlbmFibGU7IGIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oLTIwNjQtICAgdHNkbSBlbmFibGU7IGIyLSB1c2RtIGVuYWJsZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmgtMjA2Ny0vKiBbUlcgMV0gU0FGQyBlbmFibGUgZm9yIHBvcnQwLiBUaGlzIHJlZ2lzdGVyIG1heSBnZXQgMSBvbmx5IHdoZW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaDoyMDY4OiAgIH5wcHBfZW5hYmxlLnBwcF9lbmFibGUgPSAwIGFuZCBwYXVzZV9lbmFibGUucGF1c2VfZW5hYmxlID0wIGZvciB0aGUgc2FtZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oLTIwNjktICAgcG9ydCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmgtMjY0MC0vKiBbUlcgMV0gUGF1c2UgZW5hYmxlIGZvciBwb3J0MC4gVGhpcyByZWdpc3RlciBtYXkgZ2V0IDEgb25seSB3aGVuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmg6MjY0MTogICB+c2FmY19lbmFibGUuc2FmY19lbmFibGUgPSAwIGFuZCBwcHBfZW5hYmxlLnBwcF9lbmFibGUgPTAgZm9yIHRoZSBzYW1lXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmgtMjY0Mi0gICBwb3J0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jPTEwNzM9c3RhdGljIGNvbnN0IHN0cnVjdCBiY21nZW5ldF9zdGF0cyBiY21nZW5ldF9nc3RyaW5nc19zdGF0c1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYy0xMTE2LVxcdFNUQVRfR0VORVRfTUlCX1JYKFxcXCJyeF91bmljYXN0XFxcIiwgbWliLnJ4LnVjKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jOjExMTc6XFx0U1RBVF9HRU5FVF9NSUJfUlgoXFxcInJ4X3BwcFxcXCIsIG1pYi5yeC5wcHApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMtMTExOC1cXHRTVEFUX0dFTkVUX01JQl9SWChcXFwicnhfY3JjXFxcIiwgbWliLnJ4LnJjcmMpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuaD05NT1zdHJ1Y3QgYmNtZ2VuZXRfcnhfY291bnRlcnMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuaC0xMTMtXFx0dTMyXFx0dWM7XFx0XFx0LyogUk8gIyBvZiB1bmljYXN0IHBrdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0Lmg6MTE0OlxcdHUzMlxcdHBwcDtcXHRcXHQvKiBSTyAjIG9mIFBQUCBwa3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5oLTExNS1cXHR1MzJcXHRyY3JjO1xcdFxcdC8qIFJPICgweDQ3MCksIyBvZiBDUkMgbWF0Y2ggcGt0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0Lmg9MjA1PXN0cnVjdCBwb3J0X3N0YXRzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaC0yMjItXFx0dTY0IHR4X3BhdXNlOyAgICAgICAgICAgICAvKiAjIG9mIHRyYW5zbWl0dGVkIHBhdXNlIGZyYW1lcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjM6XFx0dTY0IHR4X3BwcDA7ICAgICAgICAgICAgICAvKiAjIG9mIHRyYW5zbWl0dGVkIFBQUCBwcmlvIDAgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjIyNDpcXHR1NjQgdHhfcHBwMTsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gMSBmcmFtZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0Lmg6MjI1OlxcdHU2NCB0eF9wcHAyOyAgICAgICAgICAgICAgLyogIyBvZiB0cmFuc21pdHRlZCBQUFAgcHJpbyAyIGZyYW1lcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjY6XFx0dTY0IHR4X3BwcDM7ICAgICAgICAgICAgICAvKiAjIG9mIHRyYW5zbWl0dGVkIFBQUCBwcmlvIDMgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjIyNzpcXHR1NjQgdHhfcHBwNDsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gNCBmcmFtZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0Lmg6MjI4OlxcdHU2NCB0eF9wcHA1OyAgICAgICAgICAgICAgLyogIyBvZiB0cmFuc21pdHRlZCBQUFAgcHJpbyA1IGZyYW1lcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjk6XFx0dTY0IHR4X3BwcDY7ICAgICAgICAgICAgICAvKiAjIG9mIHRyYW5zbWl0dGVkIFBQUCBwcmlvIDYgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjIzMDpcXHR1NjQgdHhfcHBwNzsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gNyBmcmFtZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0LmgtMjMxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oLTI1Mi1cXHR1NjQgcnhfcGF1c2U7ICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgcGF1c2UgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjI1MzpcXHR1NjQgcnhfcHBwMDsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gMCBmcmFtZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0Lmg6MjU0OlxcdHU2NCByeF9wcHAxOyAgICAgICAgICAgICAgLyogIyBvZiByZWNlaXZlZCBQUFAgcHJpbyAxIGZyYW1lcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTU6XFx0dTY0IHJ4X3BwcDI7ICAgICAgICAgICAgICAvKiAjIG9mIHJlY2VpdmVkIFBQUCBwcmlvIDIgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjI1NjpcXHR1NjQgcnhfcHBwMzsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gMyBmcmFtZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0Lmg6MjU3OlxcdHU2NCByeF9wcHA0OyAgICAgICAgICAgICAgLyogIyBvZiByZWNlaXZlZCBQUFAgcHJpbyA0IGZyYW1lcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTg6XFx0dTY0IHJ4X3BwcDU7ICAgICAgICAgICAgICAvKiAjIG9mIHJlY2VpdmVkIFBQUCBwcmlvIDUgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjI1OTpcXHR1NjQgcnhfcHBwNjsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gNiBmcmFtZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0Lmg6MjYwOlxcdHU2NCByeF9wcHA3OyAgICAgICAgICAgICAgLyogIyBvZiByZWNlaXZlZCBQUFAgcHJpbyA3IGZyYW1lcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaC0yNjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYz00NT1zdGF0aWMgY29uc3QgY2hhciBzdGF0c19zdHJpbmdzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jLTYyLVxcdFxcXCJ0eF9wYXVzZV9mcmFtZXMgICAgICAgIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6NjM6XFx0XFxcInR4X3BwcDBfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo2NDpcXHRcXFwidHhfcHBwMV9mcmFtZXMgICAgICAgICBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjY1OlxcdFxcXCJ0eF9wcHAyX2ZyYW1lcyAgICAgICAgIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6NjY6XFx0XFxcInR4X3BwcDNfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo2NzpcXHRcXFwidHhfcHBwNF9mcmFtZXMgICAgICAgICBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjY4OlxcdFxcXCJ0eF9wcHA1X2ZyYW1lcyAgICAgICAgIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6Njk6XFx0XFxcInR4X3BwcDZfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo3MDpcXHRcXFwidHhfcHBwN19mcmFtZXMgICAgICAgICBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jLTcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmMtOTMtXFx0XFxcInJ4X3BhdXNlX2ZyYW1lcyAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo5NDpcXHRcXFwicnhfcHBwMF9mcmFtZXMgICAgICAgICBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjk1OlxcdFxcXCJyeF9wcHAxX2ZyYW1lcyAgICAgICAgIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6OTY6XFx0XFxcInJ4X3BwcDJfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo5NzpcXHRcXFwicnhfcHBwM19mcmFtZXMgICAgICAgICBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjk4OlxcdFxcXCJyeF9wcHA0X2ZyYW1lcyAgICAgICAgIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6OTk6XFx0XFxcInJ4X3BwcDVfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzoxMDA6XFx0XFxcInJ4X3BwcDZfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzoxMDE6XFx0XFxcInJ4X3BwcDdfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYy0xMDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM9NjM0NT12b2lkIHQ0X2dldF9wb3J0X3N0YXRzKHN0cnVjdCBhZGFwdGVyICphZGFwLCBpbnQgaWR4LCBzdHJ1Y3QgcG9ydF9zdGF0cyAqcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02MzcwLVxcdHAtXFx1MDAzZXR4X3BhdXNlICAgICAgICAgICAgPSBHRVRfU1RBVChUWF9QT1JUX1BBVVNFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3MTpcXHRwLVxcdTAwM2V0eF9wcHAwICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3MjpcXHRwLVxcdTAwM2V0eF9wcHAxICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3MzpcXHRwLVxcdTAwM2V0eF9wcHAyICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3NDpcXHRwLVxcdTAwM2V0eF9wcHAzICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3NTpcXHRwLVxcdTAwM2V0eF9wcHA0ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3NjpcXHRwLVxcdTAwM2V0eF9wcHA1ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3NzpcXHRwLVxcdTAwM2V0eF9wcHA2ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3ODpcXHRwLVxcdTAwM2V0eF9wcHA3ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtNjM3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02NDA0LVxcdHAtXFx1MDAzZXJ4X3BhdXNlICAgICAgICAgICAgPSBHRVRfU1RBVChSWF9QT1JUX1BBVVNFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwNTpcXHRwLVxcdTAwM2VyeF9wcHAwICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwNjpcXHRwLVxcdTAwM2VyeF9wcHAxICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFAxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwNzpcXHRwLVxcdTAwM2VyeF9wcHAyICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFAyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwODpcXHRwLVxcdTAwM2VyeF9wcHAzICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFAzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwOTpcXHRwLVxcdTAwM2VyeF9wcHA0ICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFA0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQxMDpcXHRwLVxcdTAwM2VyeF9wcHA1ICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFA1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQxMTpcXHRwLVxcdTAwM2VyeF9wcHA2ICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFA2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQxMjpcXHRwLVxcdTAwM2VyeF9wcHA3ICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFA3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtNjQxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaD0zMjEwPXN0cnVjdCBmd19wb3J0X3N0YXRzX2NtZCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmgtMzI0MS1cXHRcXHRcXHRfX2JlNjQgdHhfcGF1c2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDI6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDM6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDQ6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDU6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDY6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDc6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDg6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDk6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oLTMyNTAtXFx0XFx0XFx0X19iZTY0IHJ4X2J5dGVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oLTMyNjctXFx0XFx0XFx0X19iZTY0IHJ4X3BhdXNlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjY4OlxcdFxcdFxcdF9fYmU2NCByeF9wcHAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjY5OlxcdFxcdFxcdF9fYmU2NCByeF9wcHAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjcwOlxcdFxcdFxcdF9fYmU2NCByeF9wcHAyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjcxOlxcdFxcdFxcdF9fYmU2NCByeF9wcHAzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjcyOlxcdFxcdFxcdF9fYmU2NCByeF9wcHA0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjczOlxcdFxcdFxcdF9fYmU2NCByeF9wcHA1O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjc0OlxcdFxcdFxcdF9fYmU2NCByeF9wcHA2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjc1OlxcdFxcdFxcdF9fYmU2NCByeF9wcHA3O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaC0zMjc2LVxcdFxcdFxcdF9fYmU2NCByeF9sZXNzXzY0YjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaD0yMTM9c3RydWN0IGRwYWEyX2ZhcHIge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oLTIzNi1cXHR1OCBtcGxzX29mZnNldF8xO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaDoyMzc6XFx0dTggcHBwb2Vfb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaC0yMzgtXFx0LyogNjQtYml0IHdvcmQgNSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5oPTExND1zdHJ1Y3QgZm1hbl9wcnNfcmVzdWx0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uaC0xMzQtXFx0dTggZXR5cGVfb2ZmO1xcdFxcdC8qIEVUWVBFIG9mZnNldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uaDoxMzU6XFx0dTggcHBwb2Vfb2ZmO1xcdFxcdC8qIFBQUCBvZmZzZXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmgtMTM2LVxcdHU4IG1wbHNfb2ZmWzJdO1xcdFxcdC8qIE1QTFMgb2Zmc2V0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0Lmg9NzQ9c3RydWN0IGZzX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LmgtOTctICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC5oOjk4OiNkZWZpbmUgTUFYX01UVSAxNTA4XFx0XFx0LyogQWxsb3cgZnVsbHNpemVkIHBwcG9lIHBhY2tldHMgb3ZlciBWTEFOICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC5oLTk5LSNkZWZpbmUgTUlOX01UVSA0NlxcdFxcdC8qIHRoaXMgaXMgZGF0YSBzaXplICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2RlYnVnZnMuYz00Nz1zdGF0aWMgc3RydWN0IGhuczNfZGJnX2NtZF9pbmZvIGhuczNfZGJnX2NtZFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM19kZWJ1Z2ZzLmMtMjIyLVxcdHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2RlYnVnZnMuYzoyMjM6XFx0XFx0Lm5hbWUgPSBcXFwicHBwXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2RlYnVnZnMuYy0yMjQtXFx0XFx0LmNtZCA9IEhOQUUzX0RCR19DTURfUkVHX1BQUCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM9MzkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGNsZ2VfZGJnX2RmeF9tZXNzYWdlIGhjbGdlX2RiZ19ydGNfcmVnW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jLTQxOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jOjQyMDpzdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2RiZ19kZnhfbWVzc2FnZSBoY2xnZV9kYmdfcHBwX3JlZ1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmMtNDIxLVxcdHtmYWxzZSwgXFxcIlJlc2VydmVkXFxcIn0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jPTY2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2RiZ19yZWdfdHlwZV9pbmZvIGhjbGdlX2RiZ19yZWdfaW5mb1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy03MTAtXFx0eyAuY21kID0gSE5BRTNfREJHX0NNRF9SRUdfUFBQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM6NzExOlxcdCAgLmRmeF9tc2cgPSBcXHUwMDI2aGNsZ2VfZGJnX3BwcF9yZWdbMF0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYzo3MTI6XFx0ICAucmVnX21zZyA9IHsgLm1zZ19udW0gPSBBUlJBWV9TSVpFKGhjbGdlX2RiZ19wcHBfcmVnKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jLTcxMy1cXHRcXHQgICAgICAgLm9mZnNldCA9IEhDTEdFX0RCR19ERlhfUFBQX09GRlNFVCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM9MTI0OT1zdGF0aWMgaW50IGhjbGdlX2RiZ19kdW1wX3J0Y19yZWdfY21kKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmMtMTI1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jOjEyNTQ6c3RhdGljIGludCBoY2xnZV9kYmdfZHVtcF9wcHBfcmVnX2NtZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy0xMjU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM9MjkzOD1zdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2RiZ19mdW5jIGhjbGdlX2RiZ19jbWRfZnVuY1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy0zMDQ0LVxcdFxcdC5jbWQgPSBITkFFM19EQkdfQ01EX1JFR19QUFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYzozMDQ1OlxcdFxcdC5kYmdfcmVhZF9mdW5jID0gaGNsZ2VfZGJnX2R1bXBfcHBwX3JlZ19jbWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy0zMDQ2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM9MjA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGNsZ2VfaHdfZXJyb3IgaGNsZ2VfbmNzaV9lcnJfaW50W10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMjE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYzoyMTg6c3RhdGljIGNvbnN0IHN0cnVjdCBoY2xnZV9od19lcnJvciBoY2xnZV9wcHBfbXBmX2Fibm9ybWFsX2ludF9zdDFbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMjE5LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0zNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjM0ODpzdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2Vycm9yIGhjbGdlX3BwcF9wZl9hYm5vcm1hbF9pbnRbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMzQ5LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0zNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjM2MjpzdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2Vycm9yIGhjbGdlX3BwcF9tcGZfYWJub3JtYWxfaW50X3N0M1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0zNjMtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jPTg0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2Vycm9yIGhjbGdlX3NzdV9jb21fZXJyX2ludFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTg1Mi1cXHRcXHQuaW50X21zayA9IEJJVCgxKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6ODUzOlxcdFxcdC5tc2cgPSBcXFwicHBwX21iX251bV9lcnJcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NTQtXFx0XFx0LnJlc2V0X2xldmVsID0gSE5BRTNfTk9ORV9SRVNFVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTg1Ni1cXHRcXHQuaW50X21zayA9IEJJVCgyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6ODU3OlxcdFxcdC5tc2cgPSBcXFwicHBwX21iaWRfZXJyXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtODU4LVxcdFxcdC5yZXNldF9sZXZlbCA9IEhOQUUzX0dMT0JBTF9SRVNFVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTg2MC1cXHRcXHQuaW50X21zayA9IEJJVCgzKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6ODYxOlxcdFxcdC5tc2cgPSBcXFwicHBwX3JsdF9tYWNfZXJyXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtODYyLVxcdFxcdC5yZXNldF9sZXZlbCA9IEhOQUUzX0dMT0JBTF9SRVNFVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTg2NC1cXHRcXHQuaW50X21zayA9IEJJVCg0KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6ODY1OlxcdFxcdC5tc2cgPSBcXFwicHBwX3JsdF9ob3N0X2VyclxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTg2Ni1cXHRcXHQucmVzZXRfbGV2ZWwgPSBITkFFM19HTE9CQUxfUkVTRVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYz0xODc5PXN0YXRpYyBpbnQgaGNsZ2VfY29uZmlnX2lndV9lZ3VfaHdfZXJyX2ludChzdHJ1Y3QgaGNsZ2VfZGV2ICpoZGV2LCBib29sIGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTE5MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjE5MTg6c3RhdGljIGludCBoY2xnZV9jb25maWdfcHBwX2Vycm9yX2ludGVycnVwdChzdHJ1Y3QgaGNsZ2VfZGV2ICpoZGV2LCB1MzIgY21kLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0xOTE5LVxcdFxcdFxcdFxcdFxcdCAgICBib29sIGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTE5NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjE5Njc6c3RhdGljIGludCBoY2xnZV9jb25maWdfcHBwX2h3X2Vycl9pbnQoc3RydWN0IGhjbGdlX2RldiAqaGRldiwgYm9vbCBlbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk2OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MTk3MTpcXHRyZXQgPSBoY2xnZV9jb25maWdfcHBwX2Vycm9yX2ludGVycnVwdChoZGV2LCBIQ0xHRV9QUFBfQ01EMF9JTlRfQ01ELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0xOTcyLVxcdFxcdFxcdFxcdFxcdCAgICAgICBlbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MTk3NjpcXHRyZXQgPSBoY2xnZV9jb25maWdfcHBwX2Vycm9yX2ludGVycnVwdChoZGV2LCBIQ0xHRV9QUFBfQ01EMV9JTlRfQ01ELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0xOTc3LVxcdFxcdFxcdFxcdFxcdCAgICAgICBlbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM9MjI1MD1zdGF0aWMgaW50IGhjbGdlX2hhbmRsZV9tcGZfcmFzX2Vycm9yKHN0cnVjdCBoY2xnZV9kZXYgKmhkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMjMzMC1cXHRcXHRoY2xnZV9sb2dfZXJyb3IoZGV2LCBcXFwiUFBQX01QRl9BQk5PUk1BTF9JTlRfU1QxXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MjMzMTpcXHRcXHRcXHRcXHRcXHUwMDI2aGNsZ2VfcHBwX21wZl9hYm5vcm1hbF9pbnRfc3QxWzBdLCBzdGF0dXMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTIzMzItXFx0XFx0XFx0XFx0XFx1MDAyNmFlX2Rldi1cXHUwMDNlaHdfZXJyX3Jlc2V0X3JlcSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMjMzNi1cXHRcXHRoY2xnZV9sb2dfZXJyb3IoZGV2LCBcXFwiUFBQX01QRl9BQk5PUk1BTF9JTlRfU1QzXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MjMzNzpcXHRcXHRcXHRcXHRcXHUwMDI2aGNsZ2VfcHBwX21wZl9hYm5vcm1hbF9pbnRfc3QzWzBdLCBzdGF0dXMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTIzMzgtXFx0XFx0XFx0XFx0XFx1MDAyNmFlX2Rldi1cXHUwMDNlaHdfZXJyX3Jlc2V0X3JlcSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM9MjcxNj1zdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2JsayBod19ibGtbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0yNzIzLVxcdFxcdC5uYW1lID0gXFxcIlBQUFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjI3MjQ6XFx0XFx0LmNvbmZpZ19lcnJfaW50ID0gaGNsZ2VfY29uZmlnX3BwcF9od19lcnJfaW50LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0yNzI1LVxcdH0sIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYz0yOTc1PXN0YXRpYyBpbnQgaGNsZ2VfaGFuZGxlX3BmX21zaXhfZXJyb3Ioc3RydWN0IGhjbGdlX2RldiAqaGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0zMDA1LVxcdFxcdGhjbGdlX2xvZ19lcnJvcihkZXYsIFxcXCJQUFBfUEZfQUJOT1JNQUxfSU5UX1NUMFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjMwMDY6XFx0XFx0XFx0XFx0XFx1MDAyNmhjbGdlX3BwcF9wZl9hYm5vcm1hbF9pbnRbMF0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTMwMDctXFx0XFx0XFx0XFx0c3RhdHVzLCByZXNldF9yZXF1ZXN0cyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNTYtI2luY2x1ZGUgXFx1MDAzY25ldC9ndHAuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmg6NTc6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BwcF9kZWZzLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTU4LSNpbmNsdWRlIFxcXCJpY2VfZGV2aWRzLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2ZkaXIuaD0xMzI9c3RydWN0IGljZV9mZGlyX3VkcF9ndHAge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mZGlyLmgtMTQyLVxcdFxcdHNwYXJlOjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mZGlyLmg6MTQzOlxcdHU4XFx0cHBwOjEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mZGlyLmgtMTQ0LVxcdFxcdHJxaToxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mbG93LmM9NTg3PXN0YXRpYyBjb25zdCB1MzIgaWNlX3B0eXBlc19ndHB1W10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYy01OTgtLyogUGFja2V0IHR5cGVzIGZvciBQUFBvRSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jOjU5OTpzdGF0aWMgY29uc3QgdTMyIGljZV9wdHlwZXNfcHBwb2VbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYy02MDAtXFx0MHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jPTgwNz1zdGF0aWMgaW50IGljZV9mbG93X3Byb2Nfc2VnX2hkcnMoc3RydWN0IGljZV9mbG93X3Byb2ZfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYy04ODEtXFx0XFx0fSBlbHNlIGlmIChoZHJzIFxcdTAwMjYgSUNFX0ZMT1dfU0VHX0hEUl9QUFBPRSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jOjg4MjpcXHRcXHRcXHRzcmMgPSAoY29uc3QgdW5zaWduZWQgbG9uZyAqKWljZV9wdHlwZXNfcHBwb2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mbG93LmMtODgzLVxcdFxcdFxcdGJpdG1hcF9hbmQocGFyYW1zLVxcdTAwM2VwdHlwZXMsIHBhcmFtcy1cXHUwMDNlcHR5cGVzLCBzcmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYy04ODUtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYzo4ODY6XFx0XFx0XFx0c3JjID0gKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilpY2VfcHR5cGVzX3BwcG9lO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jLTg4Ny1cXHRcXHRcXHRiaXRtYXBfYW5kbm90KHBhcmFtcy1cXHUwMDNlcHR5cGVzLCBwYXJhbXMtXFx1MDAzZXB0eXBlcywgc3JjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmg9MjMzPXN0cnVjdCBpY2VfcGZjcF9oZHIge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtMjQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oOjI0MjpzdHJ1Y3QgaWNlX3BwcG9lX2hkciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtMjQzLVxcdHU4IHJzcnZkX3Zlcl90eXBlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtMjQ2LVxcdF9fYmUxNiBsZW5ndGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmg6MjQ3OlxcdF9fYmUxNiBwcHBfcHJvdF9pZDsgLyogY29udHJvbCBhbmQgZGF0YSBvbmx5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtMjQ4LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3Byb3RvY29sX3R5cGUuaD00NDc9dW5pb24gaWNlX3Byb3RfaGRyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oLTQ1OC1cXHRzdHJ1Y3QgaWNlX3BmY3BfaGRyIHBmY3BfaGRyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oOjQ1OTpcXHRzdHJ1Y3QgaWNlX3BwcG9lX2hkciBwcHBvZV9oZHI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtNDYwLVxcdHN0cnVjdCBpY2VfbDJ0cHYzX3Nlc3NfaGRyIGwydHB2M19zZXNzX2hkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM9MTE1Nz1JQ0VfREVDTEFSRV9QS1RfVEVNUExBVEUocGZjcF9zZXNzaW9uX2lwdjYpID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6MTE4NjpJQ0VfREVDTEFSRV9QS1RfT0ZGU0VUUyhwcHBvZV9pcHY0X3RjcCkgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMTg3LVxcdHsgSUNFX01BQ19PRk9TLFxcdFxcdDAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTE5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjExOTU6SUNFX0RFQ0xBUkVfUEtUX1RFTVBMQVRFKHBwcG9lX2lwdjRfdGNwKSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTExOTYtXFx0MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgLyogSUNFX01BQ19PRk9TIDAgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjEyMjI6SUNFX0RFQ0xBUkVfUEtUX09GRlNFVFMocHBwb2VfaXB2NF91ZHApID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTIyMy1cXHR7IElDRV9NQUNfT0ZPUyxcXHRcXHQwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEyMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxMjMxOklDRV9ERUNMQVJFX1BLVF9URU1QTEFURShwcHBvZV9pcHY0X3VkcCkgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjMyLVxcdDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIC8qIElDRV9NQUNfT0ZPUyAwICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEyNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxMjU1OklDRV9ERUNMQVJFX1BLVF9PRkZTRVRTKHBwcG9lX2lwdjZfdGNwKSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEyNTYtXFx0eyBJQ0VfTUFDX09GT1MsXFx0XFx0MCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6MTI2NDpJQ0VfREVDTEFSRV9QS1RfVEVNUExBVEUocHBwb2VfaXB2Nl90Y3ApID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTI2NS1cXHQweDAwLCAweDAwLCAweDAwLCAweDAwLCAvKiBJQ0VfTUFDX09GT1MgMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6MTI5NjpJQ0VfREVDTEFSRV9QS1RfT0ZGU0VUUyhwcHBvZV9pcHY2X3VkcCkgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjk3LVxcdHsgSUNFX01BQ19PRk9TLFxcdFxcdDAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTMwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjEzMDU6SUNFX0RFQ0xBUkVfUEtUX1RFTVBMQVRFKHBwcG9lX2lwdjZfdWRwKSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEzMDYtXFx0MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgLyogSUNFX01BQ19PRk9TIDAgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM9MTM5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGljZV9kdW1teV9wa3RfcHJvZmlsZSBpY2VfZHVtbXlfcGt0X3Byb2ZpbGVzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTE0MjAtXFx0SUNFX1BLVF9QUk9GSUxFKHBmY3Bfc2Vzc2lvbl9pcHY0LCBJQ0VfUEtUX1BGQ1ApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6MTQyMTpcXHRJQ0VfUEtUX1BST0ZJTEUocHBwb2VfaXB2Nl91ZHAsIElDRV9QS1RfUFBQT0UgfCBJQ0VfUEtUX09VVEVSX0lQVjYgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTQyMi1cXHRcXHRcXHRcXHRcXHRJQ0VfUEtUX0lOTkVSX1VEUCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxNDIzOlxcdElDRV9QS1RfUFJPRklMRShwcHBvZV9pcHY2X3RjcCwgSUNFX1BLVF9QUFBPRSB8IElDRV9QS1RfT1VURVJfSVBWNiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxNDI0OlxcdElDRV9QS1RfUFJPRklMRShwcHBvZV9pcHY0X3VkcCwgSUNFX1BLVF9QUFBPRSB8IElDRV9QS1RfSU5ORVJfVURQKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjE0MjU6XFx0SUNFX1BLVF9QUk9GSUxFKHBwcG9lX2lwdjRfdGNwLCBJQ0VfUEtUX1BQUE9FKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTE0MjYtXFx0SUNFX1BLVF9QUk9GSUxFKGdyZV9pcHY2X3RjcCwgSUNFX1BLVF9UVU5fTlZHUkUgfCBJQ0VfUEtUX0lOTkVSX0lQVjYgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYz01NTU3PWljZV9maW5kX2R1bW15X3BhY2tldChzdHJ1Y3QgaWNlX2Fkdl9sa3VwX2VsZW0gKmxrdXBzLCB1MTYgbGt1cHNfY250LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy01NjE0LVxcdFxcdFxcdG1hdGNoIHw9IElDRV9QS1RfUFBQT0U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzo1NjE1OlxcdFxcdFxcdGlmIChsa3Vwc1tpXS5oX3UucHBwb2VfaGRyLnBwcF9wcm90X2lkID09XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy01NjE2LVxcdFxcdFxcdCAgICBodG9ucyhQUFBfSVBWNikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jPTU2NDE9aWNlX2ZpbGxfYWR2X2R1bW15X3BhY2tldChzdHJ1Y3QgaWNlX2Fkdl9sa3VwX2VsZW0gKmxrdXBzLCB1MTYgbGt1cHNfY250LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy01NzI0LVxcdFxcdGNhc2UgSUNFX1BQUE9FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6NTcyNTpcXHRcXHRcXHRsZW4gPSBzaXplb2Yoc3RydWN0IGljZV9wcHBvZV9oZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtNTcyNi1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM9MzcxPWljZV90Y19maWxsX3J1bGVzKHN0cnVjdCBpY2VfaHcgKmh3LCB1MzIgZmxhZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTQ5MC1cXHRcXHQgICAgIElDRV9UQ19GTFdSX0ZJRUxEX1BQUF9QUk9UTykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjQ5MTpcXHRcXHRzdHJ1Y3QgaWNlX3BwcG9lX2hkciAqdmFscywgKm1hc2tzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtNDkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6NDkzOlxcdFxcdHZhbHMgPSBcXHUwMDI2bGlzdFtpXS5oX3UucHBwb2VfaGRyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6NDk0OlxcdFxcdG1hc2tzID0gXFx1MDAyNmxpc3RbaV0ubV91LnBwcG9lX2hkcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTQ5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtNDk4LVxcdFxcdGlmIChmbGFncyBcXHUwMDI2IElDRV9UQ19GTFdSX0ZJRUxEX1BQUE9FX1NFU1NJRCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6NDk5OlxcdFxcdFxcdHZhbHMtXFx1MDAzZXNlc3Npb25faWQgPSBoZWFkZXJzLVxcdTAwM2VwcHBvZV9oZHIuc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTUwMC1cXHRcXHRcXHRtYXNrcy1cXHUwMDNlc2Vzc2lvbl9pZCA9IGNwdV90b19iZTE2KDB4RkZGRik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTUwMy1cXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNiBJQ0VfVENfRkxXUl9GSUVMRF9QUFBfUFJPVE8pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjUwNDpcXHRcXHRcXHR2YWxzLVxcdTAwM2VwcHBfcHJvdF9pZCA9IGhlYWRlcnMtXFx1MDAzZXBwcG9lX2hkci5wcHBfcHJvdG87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzo1MDU6XFx0XFx0XFx0bWFza3MtXFx1MDAzZXBwcF9wcm90X2lkID0gY3B1X3RvX2JlMTYoMHhGRkZGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTUwNi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jPTExNDE9aWNlX2FkZF90Y19mbG93ZXJfYWR2X2ZsdHIoc3RydWN0IGljZV92c2kgKnZzaSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTI4OS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjEyOTA6ICogaWNlX3RjX3NldF9wcHBvZSAtIFBhcnNlIFBQUG9FIGZpZWxkcyBmcm9tIFRDIGZsb3dlciBmaWx0ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEyOTEtICogQG1hdGNoOiBQb2ludGVyIHRvIGZsb3cgbWF0Y2ggc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEyOTMtICogQGhlYWRlcnM6IFBvaW50ZXIgdG8gb3V0ZXIgaGVhZGVyIGZpZWxkc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6MTI5NDogKiBAcmV0dXJucyBQUFAgcHJvdG9jb2wgdXNlZCBpbiBmaWx0ZXIgKHBwcF9zZXMgb3IgcHBwX2Rpc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy0xMjk1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM9MTI5Nj1zdGF0aWMgdTE2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzoxMjk3OmljZV90Y19zZXRfcHBwb2Uoc3RydWN0IGZsb3dfbWF0Y2hfcHBwb2UgKm1hdGNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTI5OC1cXHRcXHQgc3RydWN0IGljZV90Y19mbG93ZXJfZmx0ciAqZmx0cixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwMi1cXHRcXHRmbHRyLVxcdTAwM2VmbGFncyB8PSBJQ0VfVENfRkxXUl9GSUVMRF9QUFBPRV9TRVNTSUQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzoxMzAzOlxcdFxcdGhlYWRlcnMtXFx1MDAzZXBwcG9lX2hkci5zZXNzaW9uX2lkID0gbWF0Y2gtXFx1MDAzZWtleS1cXHUwMDNlc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEzMDQtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjEzMDY6XFx0aWYgKG1hdGNoLVxcdTAwM2VtYXNrLVxcdTAwM2VwcHBfcHJvdG8pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEzMDctXFx0XFx0Zmx0ci1cXHUwMDNlZmxhZ3MgfD0gSUNFX1RDX0ZMV1JfRklFTERfUFBQX1BST1RPO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6MTMwODpcXHRcXHRoZWFkZXJzLVxcdTAwM2VwcHBvZV9oZHIucHBwX3Byb3RvID0gbWF0Y2gtXFx1MDAzZWtleS1cXHUwMDNlcHBwX3Byb3RvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwOS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jPTE2Mzc9aWNlX3BhcnNlX2Nsc19mbG93ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmZpbHRlcl9kZXYsIHN0cnVjdCBpY2VfdnNpICp2c2ksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTE4MzctXFx0aWYgKGZsb3dfcnVsZV9tYXRjaF9rZXkocnVsZSwgRkxPV19ESVNTRUNUT1JfS0VZX1BQUE9FKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6MTgzODpcXHRcXHRzdHJ1Y3QgZmxvd19tYXRjaF9wcHBvZSBtYXRjaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTE4MzktXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjQ5LjExMzI4ODI2OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTc3Njc4NzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipQUFRQIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuT2theSwgdGltZSB0byBjaXJjbGUgYmFjayBhbmQgZG91YmxlLWNoZWNrIHNvbWV0aGluZyBjcnVjaWFsIGZvciB0aGlzIFBQVFAgaW50ZWdyYXRpb24uIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSBoYXZlbid0IG1pc3NlZCBhbnkgZGVwZW5kZW5jaWVzIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBzaG91bGQgcmUtZXhhbWluZSBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgIGFnYWluLCBtZXRpY3Vsb3VzbHkuIEl04oCZcyB0b28gZWFzeSB0byBvdmVybG9vayBzb21ldGhpbmcgaW4gdGhlc2UgbmVzdGVkIGNvbmZpZ3VyYXRpb25zLCBlc3BlY2lhbGx5IHdpdGggdGhlIHBvdGVudGlhbCBmb3IgaW50ZXJhY3Rpb25zIGJldHdlZW4gZGlmZmVyZW50IG5ldHdvcmsgc3Vic3lzdGVtcy4gSSB3YW50IHRvIGJ1aWxkIGEgYnVsbGV0cHJvb2YgdW5kZXJzdGFuZGluZywgc28gYSBmcmVzaCBsb29rIGlzIGVzc2VudGlhbCBiZWZvcmUgSSBwcm9jZWVkIGFueSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTcwNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjUxLjI5MDk3MDU0NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcHBwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUFBQIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIFBQUFxcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIlBQUCAocG9pbnQtdG8tcG9pbnQgcHJvdG9jb2wpIHN1cHBvcnRcXFwiXFxuICAgODpcXHRcXHRzZWxlY3QgU0xIQ1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBQUFAgKFBvaW50IHRvIFBvaW50IFByb3RvY29sKSBpcyBhIG5ld2VyIGFuZCBiZXR0ZXIgU0xJUC4gIEl0IHNlcnZlc1xcbiAgMTE6XFx0XFx0ICB0aGUgc2FtZSBwdXJwb3NlOiBzZW5kaW5nIEludGVybmV0IHRyYWZmaWMgb3ZlciB0ZWxlcGhvbmUgKGFuZCBvdGhlclxcbiAgMTI6XFx0XFx0ICBzZXJpYWwpIGxpbmVzLiAgQXNrIHlvdXIgYWNjZXNzIHByb3ZpZGVyIGlmIHRoZXkgc3VwcG9ydCBpdCwgYmVjYXVzZVxcbiAgMTM6XFx0XFx0ICBvdGhlcndpc2UgeW91IGNhbid0IHVzZSBpdDsgbW9zdCBJbnRlcm5ldCBhY2Nlc3MgcHJvdmlkZXJzIHRoZXNlXFxuICAxNDpcXHRcXHQgIGRheXMgc3VwcG9ydCBQUFAgcmF0aGVyIHRoYW4gU0xJUC5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0ICBUbyB1c2UgUFBQLCB5b3UgbmVlZCBhbiBhZGRpdGlvbmFsIHByb2dyYW0gY2FsbGVkIHBwcGQsIGF2YWlsYWJsZSBhdFxcbiAgMTc6XFx0XFx0ICBcXHUwMDNjaHR0cHM6Ly9wcHAuc2FtYmEub3JnXFx1MDAzZS4gIE1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIHRoZSB2ZXJzaW9uIG9mIHBwcGRcXG4gIDE4OlxcdFxcdCAgcmVjb21tZW5kZWQgaW4gXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9DaGFuZ2VzXFx1MDAzZS5cXG4gIDE5OlxcdFxcdCAgVGhlIFBQUCBvcHRpb24gZW5sYXJnZXMgeW91ciBrZXJuZWwgYnkgYWJvdXQgMTYgS0IuXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdCAgVGhlcmUgYXJlIGFjdHVhbGx5IHR3byB2ZXJzaW9ucyBvZiBQUFA6IHRoZSB0cmFkaXRpb25hbCBQUFAgZm9yXFxuICAyMjpcXHRcXHQgIGFzeW5jaHJvbm91cyBsaW5lcywgc3VjaCBhcyByZWd1bGFyIGFuYWxvZyBwaG9uZSBsaW5lcywgYW5kXFxuICAyMzpcXHRcXHQgIHN5bmNocm9ub3VzIFBQUCB3aGljaCBjYW4gYmUgdXNlZCBvdmVyIGRpZ2l0YWwgSVNETiBsaW5lcyBmb3JcXG4gIDI0OlxcdFxcdCAgZXhhbXBsZS4gIElmIHlvdSB3YW50IHRvIHVzZSBQUFAgb3ZlciBwaG9uZSBsaW5lcyBvciBvdGhlclxcbiAgMjU6XFx0XFx0ICBhc3luY2hyb25vdXMgc2VyaWFsIGxpbmVzLCB5b3UgbmVlZCB0byBzYXkgWSAob3IgTSkgaGVyZSBhbmQgYWxzbyB0b1xcbiAgMjY6XFx0XFx0ICB0aGUgbmV4dCBvcHRpb24sIFxcXCJQUFAgc3VwcG9ydCBmb3IgYXN5bmMgc2VyaWFsIHBvcnRzXFxcIi4gIEZvciBQUFAgb3ZlclxcbiAgMjc6XFx0XFx0ICBzeW5jaHJvbm91cyBsaW5lcywgeW91IHNob3VsZCBzYXkgWSAob3IgTSkgaGVyZSBhbmQgdG8gXFxcIlN1cHBvcnRcXG4gIDI4OlxcdFxcdCAgc3luY2hyb25vdXMgUFBQXFxcIiwgYmVsb3cuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgSWYgeW91IHNhaWQgWSB0byBcXFwiVmVyc2lvbiBpbmZvcm1hdGlvbiBvbiBhbGwgc3ltYm9sc1xcXCIgYWJvdmUsIHRoZW5cXG4gIDMxOlxcdFxcdCAgeW91IGNhbm5vdCBjb21waWxlIHRoZSBQUFAgZHJpdmVyIGludG8gdGhlIGtlcm5lbDsgeW91IGNhbiB0aGVuIG9ubHlcXG4gIDMyOlxcdFxcdCAgY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4gVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE1cXG4gIDMzOlxcdFxcdCAgaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBwcHBfZ2VuZXJpYy5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0aWYgUFBQXFxuICAzNjpcXHRcXG4gIDM3OlxcdGNvbmZpZyBQUFBfQlNEQ09NUFxcbiAgMzg6XFx0XFx0dHJpc3RhdGUgXFxcIlBQUCBCU0QtQ29tcHJlc3MgY29tcHJlc3Npb25cXFwiXFxuICAzOTpcXHRcXHRoZWxwXFxuICA0MDpcXHRcXHQgIFN1cHBvcnQgZm9yIHRoZSBCU0QtQ29tcHJlc3MgY29tcHJlc3Npb24gbWV0aG9kIGZvciBQUFAsIHdoaWNoIHVzZXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6NTEuMjkxMTAyNzQ2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzNjEyODUyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgUFBUUCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgUFBUUGAgaXMgbmVzdGVkIHdpdGhpbiBhbiBgaWYgUFBQIC4uLiBlbmRpZmAgYmxvY2suIFRoaXMgdGVsbHMgbWUgdGhhdCBgQ09ORklHX1BQUGAgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIGVuYWJsaW5nIHRoZSBgUFBUUGAgb3B0aW9uLCBhbmQgdGhlcmVmb3JlIHNvIGlzIGBDT05GSUdfUFBUUGAsIGFuZCBhbHNvIGBDT05GSUdfTkVUX0lQR1JFX0RFTVVYYCwgd2hpY2ggYFBQVFBgIHJlbGllcyB1cG9uLiBBbmQgZnVydGhlciwgaXQgbG9va3MgbGlrZSBgUFBUUGAgYWxzbyBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgYFBQUE9YYCB2aWEgYENPTkZJR19QUFBPWGAuXG5cbk5vdywgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgQ09ORklHX0lORVRgIG9yIGFueSBvdGhlciBjb3JlIG5ldHdvcmsgY29uZmlndXJhdGlvbiBlbGVtZW50cyBhcmUgZXNzZW50aWFsIGhlcmUuIExldCdzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBgbmV0L2lwdjQvS2NvbmZpZ2AgZmlsZSwgYE5FVF9JUEdSRV9ERU1VWGAg4oCTIHdoaWNoIGlzICpyZXF1aXJlZCogZm9yIFBQVFAg4oCTIGRlcGVuZHMgb24gYElORVRgLiBHaXZlbiB0aGF0IGBJTkVUYCBpcyBmdW5kYW1lbnRhbGx5IHN0YW5kYXJkIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eSwgdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIHdpbGwgbm93IGRvdWJsZS1jaGVjayBgbmV0L2lwdjQvS2NvbmZpZ2AgZGlyZWN0bHkgZm9yIGFueSBvdGhlciBgTkVUX0lQR1JFX0RFTVVYYCBkZXBlbmRlbmNpZXMgdG8gY29tcGxldGUgdGhlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNTE1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6NTQuNjUyMzkyMzA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3OCxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3ODpcXHRcXHQgIHdhbnQpLiBNb3N0IHBlb3BsZSB3b24ndCBuZWVkIHRoaXMgYW5kIGNhbiBzYXkgTi5cXG4gMTc5OlxcdFxcbiAxODA6XFx0Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxcbiAxODE6XFx0XFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgZGVtdWx0aXBsZXhlclxcXCJcXG4gMTgyOlxcdFxcdGhlbHBcXG4gMTgzOlxcdFxcdCAgVGhpcyBpcyBoZWxwZXIgbW9kdWxlIHRvIGRlbXVsdGlwbGV4IEdSRSBwYWNrZXRzIG9uIEdSRSB2ZXJzaW9uIGZpZWxkIGNyaXRlcmlhLlxcbiAxODQ6XFx0XFx0ICBSZXF1aXJlZCBieSBpcF9ncmUgYW5kIHBwdHAgbW9kdWxlcy5cXG4gMTg1OlxcdFxcbiAxODY6XFx0Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4gMTg3OlxcdFxcdHRyaXN0YXRlXFxuIDE4ODpcXHRcXHRzZWxlY3QgRFNUX0NBQ0hFXFxuIDE4OTpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuIDE5MDpcXHRcXHRkZWZhdWx0IG5cXG4gMTkxOlxcdFxcbiAxOTI6XFx0Y29uZmlnIE5FVF9JUEdSRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNTo1NC42NTI1MjQ2MjVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTIxODEwOTU1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFZlcmRpY3Q6IENvbmZpcm1lZCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgd2FudGVkIHRvIGNvbmZpcm0gdGhlIGBORVRfSVBHUkVfREVNVVhgIGNvbmZpZyBvcHRpb24uIEl0J3Mgbm90IGRpcmVjdGx5IGRlcGVuZGVudCBvbiBhbnl0aGluZyBlbHNlLCBidXQgaXQgKmlzKiBuZXN0ZWQgd2l0aGluIGBuZXQvaXB2NC9LY29uZmlnYCB1bmRlciBgbWVudWNvbmZpZyBJTkVUYCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQuXG5cbk5leHQsIEkgbG9va2VkIGF0IHRoZSBgRm9jdXNTeW1ib2xzYC4gVGhlIGFuYWx5c2lzIHBvaW50ZWQgdG8gdGhlc2Uga2V5IGZ1bmN0aW9uczogYHBwdHBfcmN2X2NvcmVgLCBgcHB0cF9yY3ZgLCBgcHB0cF9jb25uZWN0YCwgYHBwdHBfYmluZGAsIGBwcHRwX2NyZWF0ZWAsIGFuZCBgcHB0cF94bWl0YC4gSSBoYWQgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgYW55IG9mIHRoZXNlIHdlcmUgc3RhdGljIG9yIGlubGluZWQsIHNpbmNlIHRoYXQgd291bGQgYWZmZWN0IGZ1enppbmcuIEkgY29uZmlybWVkIHRoYXQgYHBwdHBfcmN2X2NvcmVgIGFuZCBgcHB0cF9yY3ZgIGFyZSBzdGF0aWMsIGFuZCB0aGUgb3RoZXJzLCBgcHB0cF9jb25uZWN0YCwgYHBwdHBfYmluZGAsIGBwcHRwX2NyZWF0ZWAsIGBwcHRwX3htaXRgLCBhcmUgdXNlZCB2aWEgZnVuY3Rpb24gcG9pbnRlcnMgaW4gb3BzIHN0cnVjdHVyZXMuIEJlY2F1c2Ugb2YgdGhpcywgdGhlIGNvbXBpbGVyIHdvbid0IGJlIGlubGluaW5nIHRoZW0uIFRoaXMgbWVhbnMgdGhlIGxpc3Qgb2Ygbm9uLWlubGluZWQgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgZnV6emluZyBpczogYHBwdHBfcmN2X2NvcmVgLCBgcHB0cF9yY3ZgLCBgcHB0cF9jcmVhdGVgLCBgcHB0cF9jb25uZWN0YCwgYW5kIGBwcHRwX2JpbmRgLlxuXG5JIHRoZW4gbWFkZSBzdXJlIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBtYXRjaGVkIHRoZSByZXF1aXJlbWVudHMuIEkndmUgdmVyaWZpZWQgdGhhdCBgUFBUUGAsIGBQUFBgLCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAgYXJlIHRoZSBjb3JyZWN0IGNvbmZpZyBmbGFncy5cblxuRmluYWxseSwgSSByZXZpZXdlZCB0aGUgcHJvbXB0IHJlcXVpcmVtZW50czogdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgdHJ1ZSwgc2luY2UgdGhlc2UgY2hhbmdlcyBoYXZlIGEgZnVuY3Rpb25hbCBpbXBhY3Qgd29ydGggZnV6emluZy4gSSBoYXZlIGEgbGlzdCBvZiBub24taG90LXBhdGgga2VybmVsIGZ1bmN0aW9ucyB0byBmb2N1cyBmdXp6aW5nIG9uLCBhbmQgdGhlIHJlcXVpcmVkIGVuYWJsZSBjb25maWdzLiBFdmVyeXRoaW5nIG1hdGNoZXMuIFRoZSBkYXRhIGlzIHZhbGlkYXRlZC5cblxuTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE0NSwiT3V0cHV0VG9rZW5zIjoxNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNTo1OS44NzA2MzkyMTVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTQ3MzYzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBUUFwiLFxuICAgIFwiUFBQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHRwX3Jjdl9jb3JlXCIsXG4gICAgXCJwcHRwX3JjdlwiLFxuICAgIFwicHB0cF9jcmVhdGVcIixcbiAgICBcInBwdHBfY29ubmVjdFwiLFxuICAgIFwicHB0cF9iaW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IHJlY2VwdGlvbiBwYXJzaW5nIGFuZCBib3VuZHMgY2hlY2tpbmcgbG9naWMgaW4gcHB0cF9yY3ZfY29yZSgpIHdpdGhpbiB0aGUgUFBUUCBuZXR3b3JrIHByb3RvY29sIGRyaXZlciAoZHJpdmVycy9uZXQvcHBwL3BwdHAuYyksIGVuc3VyaW5nIHBheWxvYWQgYXZhaWxhYmlsaXR5IGNoZWNrcyBhbmQgcHNrYl9tYXlfcHVsbCgpIGNhbGxzIHByZWNlZGUgaGVhZGVyIGRlcmVmZXJlbmNpbmcgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9uIHRydW5jYXRlZCBwYWNrZXRzLiBUaGlzIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIEFGX1BQUE9YIHNvY2tldHMgYW5kIEdSRSBwYWNrZXQgZGVsaXZlcnkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBUUFwiLFxuICAgIFwiUFBQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHRwX3Jjdl9jb3JlXCIsXG4gICAgXCJwcHRwX3JjdlwiLFxuICAgIFwicHB0cF9jcmVhdGVcIixcbiAgICBcInBwdHBfY29ubmVjdFwiLFxuICAgIFwicHB0cF9iaW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IHJlY2VwdGlvbiBwYXJzaW5nIGFuZCBib3VuZHMgY2hlY2tpbmcgbG9naWMgaW4gcHB0cF9yY3ZfY29yZSgpIHdpdGhpbiB0aGUgUFBUUCBuZXR3b3JrIHByb3RvY29sIGRyaXZlciAoZHJpdmVycy9uZXQvcHBwL3BwdHAuYyksIGVuc3VyaW5nIHBheWxvYWQgYXZhaWxhYmlsaXR5IGNoZWNrcyBhbmQgcHNrYl9tYXlfcHVsbCgpIGNhbGxzIHByZWNlZGUgaGVhZGVyIGRlcmVmZXJlbmNpbmcgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9uIHRydW5jYXRlZCBwYWNrZXRzLiBUaGlzIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIEFGX1BQUE9YIHNvY2tldHMgYW5kIEdSRSBwYWNrZXQgZGVsaXZlcnkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjU5Ljk1MDEyMDQxOVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2NTczMjI5NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNTo1OS45NTA2MjAyMjlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NzY1NjgxODQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGJvdW5kcyBjaGVja2luZyBhbmQgc2tiIHB1bGwgb3BlcmF0aW9ucyBpbiB0aGUgUFBUUCByZWNlaXZlIHBhdGggKGRyaXZlcnMvbmV0L3BwcC9wcHRwLmMpLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBhZGVxdWF0ZSBwYXlsb2FkIGJ5dGVzIGFyZSBhdmFpbGFibGUgYW5kIHB1bGxlZCBpbnRvIHRoZSBza2IgbGluZWFyIGFyZWEgYmVmb3JlIGluZGV4aW5nIGludG8gc2tiIHBheWxvYWQgb2Zmc2V0cyAocGF5bG9hZFswXSB0aHJvdWdoIHBheWxvYWRbNF0gYW5kIHNrYi1cXHUwMDNlZGF0YVswXSB0aHJvdWdoIHNrYi1cXHUwMDNlZGF0YVsxXSkuXFxuXFxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgKE9PQikgbWVtb3J5IHJlYWRzIG9uIHRydW5jYXRlZCBvciBtYWxmb3JtZWQgbmV0d29yayBwYWNrZXRzLiBPT0IgcmVhZHMgYW5kIGludmFsaWQgc2tiIGJ1ZmZlciBkZXJlZmVyZW5jZXMgYXJlIGRpcmVjdGx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIEtBU0FOIGJ1aWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgY29weSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjE1NTk1OTI1ZjI5OGVlZjVmMjJkOWM3ZDI4YjM1MTIyZGEwMmM4ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTY6MzU6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggYTc5N2EwNjA2ZjZiNC4uNGZiOTRhNDU1YzU3NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0yNzUsNiArMjc1LDcgQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcbiBcdHN0cnVjdCBwcHRwX29wdCAqb3B0ID0gXHUwMDI2cG8tXHUwMDNlcHJvdG8ucHB0cDtcbiBcdGludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxO1xuK1x0dW5zaWduZWQgaW50IHBheWxvYWRfYXZhaWw7XG4gXHRfX3U4ICpwYXlsb2FkO1xuIFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuIFxuQEAgLTMxNCwyMyArMzE1LDM0IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZWFkZXJzaXplICsgcGF5bG9hZF9sZW4pKVxuIFx0XHRnb3RvIGRyb3A7XG4gXG4tXHRwYXlsb2FkID0gc2tiLVx1MDAzZWRhdGEgKyBoZWFkZXJzaXplO1xuK1x0cGF5bG9hZF9hdmFpbCA9IHNrYi1cdTAwM2VsZW4gLSBoZWFkZXJzaXplO1xuIFx0LyogY2hlY2sgZm9yIGV4cGVjdGVkIHNlcXVlbmNlIG51bWJlciAqL1xuIFx0aWYgKHNlcSBcdTAwM2Mgb3B0LVx1MDAzZXNlcV9yZWN2ICsgMSB8fCBXUkFQUEVEKG9wdC1cdTAwM2VzZXFfcmVjdiwgc2VxKSkge1xuLVx0XHRpZiAoKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TKSBcdTAwMjZcdTAwMjYgKHBheWxvYWRbMV0gPT0gUFBQX1VJKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHRcdChQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQoKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRKSB8fCAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKSlcbi1cdFx0XHRnb3RvIGFsbG93X3BhY2tldDtcbitcdFx0aWYgKHBheWxvYWRfYXZhaWwgXHUwMDNlPSBQUFBfSERSTEVOICsgMSkge1xuK1x0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgKyBQUFBfSERSTEVOICsgMSkpXG4rXHRcdFx0XHRnb3RvIGRyb3A7XG4rXG4rXHRcdFx0cGF5bG9hZCA9IHNrYi1cdTAwM2VkYXRhICsgaGVhZGVyc2l6ZTtcbitcdFx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuK1x0XHRcdCAgICBQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRIHx8IHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSlcbitcdFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuK1x0XHR9XG4gXHR9IGVsc2Uge1xuIFx0XHRvcHQtXHUwMDNlc2VxX3JlY3YgPSBzZXE7XG4gYWxsb3dfcGFja2V0OlxuIFx0XHRza2JfcHVsbChza2IsIGhlYWRlcnNpemUpO1xuIFxuLVx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7XG4tXHRcdFx0LyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovXG4tXHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIDMpXG4rXHRcdGlmIChwYXlsb2FkX2F2YWlsIFx1MDAzZT0gMikge1xuK1x0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIDIpKVxuIFx0XHRcdFx0Z290byBkcm9wO1xuLVx0XHRcdHNrYl9wdWxsKHNrYiwgMik7XG4rXG4rXHRcdFx0aWYgKHNrYi1cdTAwM2VkYXRhWzBdID09IFBQUF9BTExTVEFUSU9OUyBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWRhdGFbMV0gPT0gUFBQX1VJKSB7XG4rXHRcdFx0XHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cbitcdFx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAzKVxuK1x0XHRcdFx0XHRnb3RvIGRyb3A7XG4rXHRcdFx0XHRza2JfcHVsbChza2IsIDIpO1xuK1x0XHRcdH1cbiBcdFx0fVxuIFxuIFx0XHRza2ItXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fTk9ORTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjU5Ljk1MDYyMTIyOVoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDcwOTEwNjAyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFdmFsdWF0aW5nIHRoZSBOZWNlc3NpdHkgb2YgS01TQU4gRnV6emluZyBmb3IgYSBQUFBUUCBQYXRjaCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkZWNpZGUgaWYgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2Agd2FycmFudHMgYSBzZXBhcmF0ZSBLTVNBTiBmdXp6aW5nIHNlc3Npb24sIGJleW9uZCB0aGUgdXN1YWwgS0FTQU4gY2hlY2tzLiBMZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEl0J3MgcmVhbGx5IGp1c3Qgc29mdHdhcmUgZGVmZW5zZSBhbmQga2VybmVsIHBhdGNoIHJldmlldy4gVGhlIHNldmVyaXR5IGhlcmUgaXMgcHJldHR5IGxvdyDigJMganVzdCB0aGUgdXN1YWwgY29kZSByZXZpZXcgYW5kIHBpY2tpbmcgdGhlIHJpZ2h0IHNhbml0aXphdGlvbiB0b29sLiBObyBpbW1lZGlhdGUgZmlyZSBkcmlsbHMuXG5cbkkgc2hvdWxkIGV4YW1pbmUgdGhlIHBhdGNoIGl0c2VsZiBmaXJzdCwgYW5kIHRoZW4gcmVhbGx5IGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYC4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgcXVpY2sgZ2xhbmNlLCBidXQgaWYgYW55dGhpbmcgbG9va3MgZXZlbiBzbGlnaHRseSBzdXNwaWNpb3VzLCBJJ2xsIGRlZmluaXRlbHkgZGl2ZSBkZWVwZXIsIHVzaW5nIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGZ1bmN0aW9uIG9mIHRoZSBjb2RlIGFyb3VuZCB0aGlzIHBhdGNoIGFuZCB0aGUgdmFyaWFibGVzIGJlaW5nIHVzZWQuIFRoaXMgaXNuJ3QgaGlnaC1zdGFrZXMsIGJ1dCBJIHdhbnQgdG8gYmUgdGhvcm91Z2guIEl0J3MgYWxsIGFib3V0IG1ha2luZyBhbiBpbmZvcm1lZCBkZWNpc2lvbiBhYm91dCBhbGxvY2F0aW5nIHJlc291cmNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5OSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM2OjQ0LjY1OTczMDYzMVoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDAzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzAsXG4gIFwiTGluZUNvdW50XCI6IDkwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNzA6XFx0XFx0cmV0dXJuIDE7XFxuIDI3MTpcXHR9XFxuIDI3MjpcXHRcXG4gMjczOlxcdHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIDI3NDpcXHR7XFxuIDI3NTpcXHRcXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuIDI3NjpcXHRcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdCA9IFxcdTAwMjZwby1cXHUwMDNlcHJvdG8ucHB0cDtcXG4gMjc3OlxcdFxcdGludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxO1xcbiAyNzg6XFx0XFx0dW5zaWduZWQgaW50IHBheWxvYWRfYXZhaWw7XFxuIDI3OTpcXHRcXHRfX3U4ICpwYXlsb2FkO1xcbiAyODA6XFx0XFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xcbiAyODE6XFx0XFxuIDI4MjpcXHRcXHRpZiAoIShzay1cXHUwMDNlc2tfc3RhdGUgXFx1MDAyNiBQUFBPWF9DT05ORUNURUQpKVxcbiAyODM6XFx0XFx0XFx0Z290byBkcm9wO1xcbiAyODQ6XFx0XFxuIDI4NTpcXHRcXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXFx1MDAzZWRhdGEpO1xcbiAyODY6XFx0XFx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XFxuIDI4NzpcXHRcXG4gMjg4OlxcdFxcdC8qIHRlc3QgaWYgYWNrbm93bGVkZ2VtZW50IHByZXNlbnQgKi9cXG4gMjg5OlxcdFxcdGlmIChHUkVfSVNfQUNLKGhlYWRlci1cXHUwMDNlZ3JlX2hkLmZsYWdzKSkge1xcbiAyOTA6XFx0XFx0XFx0X191MzIgYWNrO1xcbiAyOTE6XFx0XFxuIDI5MjpcXHRcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZWFkZXJzaXplKSlcXG4gMjkzOlxcdFxcdFxcdFxcdGdvdG8gZHJvcDtcXG4gMjk0OlxcdFxcdFxcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuIDI5NTpcXHRcXG4gMjk2OlxcdFxcdFxcdC8qIGFjayBpbiBkaWZmZXJlbnQgcGxhY2UgaWYgUyA9IDAgKi9cXG4gMjk3OlxcdFxcdFxcdGFjayA9IEdSRV9JU19TRVEoaGVhZGVyLVxcdTAwM2VncmVfaGQuZmxhZ3MpID8gbnRvaGwoaGVhZGVyLVxcdTAwM2VhY2spIDpcXG4gMjk4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBudG9obChoZWFkZXItXFx1MDAzZXNlcSk7XFxuIDI5OTpcXHRcXHRcXHRpZiAoYWNrIFxcdTAwM2Ugb3B0LVxcdTAwM2VhY2tfcmVjdilcXG4gMzAwOlxcdFxcdFxcdFxcdG9wdC1cXHUwMDNlYWNrX3JlY3YgPSBhY2s7XFxuIDMwMTpcXHRcXHRcXHQvKiBhbHNvIGhhbmRsZSBzZXF1ZW5jZSBudW1iZXIgd3JhcC1hcm91bmQgICovXFxuIDMwMjpcXHRcXHRcXHRpZiAoV1JBUFBFRChhY2ssIG9wdC1cXHUwMDNlYWNrX3JlY3YpKVxcbiAzMDM6XFx0XFx0XFx0XFx0b3B0LVxcdTAwM2VhY2tfcmVjdiA9IGFjaztcXG4gMzA0OlxcdFxcdH0gZWxzZSB7XFxuIDMwNTpcXHRcXHRcXHRoZWFkZXJzaXplIC09IHNpemVvZihoZWFkZXItXFx1MDAzZWFjayk7XFxuIDMwNjpcXHRcXHR9XFxuIDMwNzpcXHRcXHQvKiB0ZXN0IGlmIHBheWxvYWQgcHJlc2VudCAqL1xcbiAzMDg6XFx0XFx0aWYgKCFHUkVfSVNfU0VRKGhlYWRlci1cXHUwMDNlZ3JlX2hkLmZsYWdzKSlcXG4gMzA5OlxcdFxcdFxcdGdvdG8gZHJvcDtcXG4gMzEwOlxcdFxcbiAzMTE6XFx0XFx0cGF5bG9hZF9sZW4gPSBudG9ocyhoZWFkZXItXFx1MDAzZXBheWxvYWRfbGVuKTtcXG4gMzEyOlxcdFxcdHNlcSAgICAgICAgID0gbnRvaGwoaGVhZGVyLVxcdTAwM2VzZXEpO1xcbiAzMTM6XFx0XFxuIDMxNDpcXHRcXHQvKiBjaGVjayBmb3IgaW5jb21wbGV0ZSBwYWNrZXQgKGxlbmd0aCBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQpICovXFxuIDMxNTpcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZWFkZXJzaXplICsgcGF5bG9hZF9sZW4pKVxcbiAzMTY6XFx0XFx0XFx0Z290byBkcm9wO1xcbiAzMTc6XFx0XFxuIDMxODpcXHRcXHRwYXlsb2FkX2F2YWlsID0gc2tiLVxcdTAwM2VsZW4gLSBoZWFkZXJzaXplO1xcbiAzMTk6XFx0XFx0LyogY2hlY2sgZm9yIGV4cGVjdGVkIHNlcXVlbmNlIG51bWJlciAqL1xcbiAzMjA6XFx0XFx0aWYgKHNlcSBcXHUwMDNjIG9wdC1cXHUwMDNlc2VxX3JlY3YgKyAxIHx8IFdSQVBQRUQob3B0LVxcdTAwM2VzZXFfcmVjdiwgc2VxKSkge1xcbiAzMjE6XFx0XFx0XFx0aWYgKHBheWxvYWRfYXZhaWwgXFx1MDAzZT0gUFBQX0hEUkxFTiArIDEpIHtcXG4gMzIyOlxcdFxcdFxcdFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgKyBQUFBfSERSTEVOICsgMSkpXFxuIDMyMzpcXHRcXHRcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIDMyNDpcXHRcXG4gMzI1OlxcdFxcdFxcdFxcdHBheWxvYWQgPSBza2ItXFx1MDAzZWRhdGEgKyBoZWFkZXJzaXplO1xcbiAzMjY6XFx0XFx0XFx0XFx0aWYgKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFxcdTAwMjZcXHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFxcdTAwMjZcXHUwMDI2XFxuIDMyNzpcXHRcXHRcXHRcXHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXFx1MDAyNlxcdTAwMjZcXG4gMzI4OlxcdFxcdFxcdFxcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxcbiAzMjk6XFx0XFx0XFx0XFx0XFx0Z290byBhbGxvd19wYWNrZXQ7XFxuIDMzMDpcXHRcXHRcXHR9XFxuIDMzMTpcXHRcXHR9IGVsc2Uge1xcbiAzMzI6XFx0XFx0XFx0b3B0LVxcdTAwM2VzZXFfcmVjdiA9IHNlcTtcXG4gMzMzOlxcdGFsbG93X3BhY2tldDpcXG4gMzM0OlxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgaGVhZGVyc2l6ZSk7XFxuIDMzNTpcXHRcXG4gMzM2OlxcdFxcdFxcdGlmIChwYXlsb2FkX2F2YWlsIFxcdTAwM2U9IDIpIHtcXG4gMzM3OlxcdFxcdFxcdFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIDIpKVxcbiAzMzg6XFx0XFx0XFx0XFx0XFx0Z290byBkcm9wO1xcbiAzMzk6XFx0XFxuIDM0MDpcXHRcXHRcXHRcXHRpZiAoc2tiLVxcdTAwM2VkYXRhWzBdID09IFBQUF9BTExTVEFUSU9OUyBcXHUwMDI2XFx1MDAyNiBza2ItXFx1MDAzZWRhdGFbMV0gPT0gUFBQX1VJKSB7XFxuIDM0MTpcXHRcXHRcXHRcXHRcXHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cXG4gMzQyOlxcdFxcdFxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIDMpXFxuIDM0MzpcXHRcXHRcXHRcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIDM0NDpcXHRcXHRcXHRcXHRcXHRza2JfcHVsbChza2IsIDIpO1xcbiAzNDU6XFx0XFx0XFx0XFx0fVxcbiAzNDY6XFx0XFx0XFx0fVxcbiAzNDc6XFx0XFxuIDM0ODpcXHRcXHRcXHRza2ItXFx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX05PTkU7XFxuIDM0OTpcXHRcXHRcXHRza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgc2tiLVxcdTAwM2VoZWFkLXNrYi1cXHUwMDNlZGF0YSk7XFxuIDM1MDpcXHRcXHRcXHRwcHBfaW5wdXQoXFx1MDAyNnBvLVxcdTAwM2VjaGFuLCBza2IpO1xcbiAzNTE6XFx0XFxuIDM1MjpcXHRcXHRcXHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XFxuIDM1MzpcXHRcXHR9XFxuIDM1NDpcXHRkcm9wOlxcbiAzNTU6XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIDM1NjpcXHRcXHRyZXR1cm4gTkVUX1JYX0RST1A7XFxuIDM1NzpcXHR9XFxuIDM1ODpcXHRcXG4gMzU5OlxcdHN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzY6NDQuNjYwMTM1MDAxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyOTQ3MjczNjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQUFRQIFBhdGNoIGFuZCBTYW5pdGl6ZXIgU2VsZWN0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBwYXRjaCB3aXRoaW4gYHBwdHBfcmN2X2NvcmUoKWAgYW5kIHRoZSBidWcgaXQncyBkZXNpZ25lZCB0byBmaXguICBQcmV2aW91c2x5LCB0aGVyZSB3YXMgYSBzaWduaWZpY2FudCB2dWxuZXJhYmlsaXR5OiBpZiB0aGUgaW5jb21pbmcgcGFja2V0IHBheWxvYWQgd2FzIHNtYWxsLCBwYXJ0aWN1bGFybHkgd2l0aCB6ZXJvIG9yIG1pbmltYWwgZGF0YSwgdGhlIGNoZWNrcyB3ZXJlIGluc3VmZmljaWVudC4gYHBza2JfbWF5X3B1bGxgIG1pZ2h0IHN1Y2NlZWQsIGV2ZW4gdGhvdWdoIGFjY2Vzc2luZyBgcGF5bG9hZFswXWAgdGhyb3VnaCBgcGF5bG9hZFs0XWAgd291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZnJvbSB0aGUgc2tiJ3MgbGluZWFyIGJ1ZmZlciBvciB1bnB1bGxlZCBza2IgZGF0YS4gVGhpcyBpcyB0ZXh0Ym9vayBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3MuIFRoZSBzYW1lIGlzc3VlIGFsc28gb2NjdXJyZWQgaWYgYHNrYl9wdWxsYCB3YXMgY2FsbGVkLCB0aGVuIGBwYXlsb2FkWzBdYCB3YXMgYWNjZXNzZWQuIFRoZSBwYXRjaCBhZGRyZXNzZXMgdGhpcyBkaXJlY3RseS5cblxuVGhlIGZpeCBpbnZvbHZlcyB0d28ga2V5IGNoYW5nZXM6ICBGaXJzdCwgcmlnb3JvdXMgYm91bmRzIGNoZWNrcyBhcmUgaW50cm9kdWNlZCAqYmVmb3JlKiBhbnkgYWNjZXNzIHRvIHRoZSBgcGF5bG9hZGAgZGF0YS4gVGhpcyBlbXBsb3lzIGEgY29tYmluYXRpb24gb2YgYHBheWxvYWRfYXZhaWxgIGFuZCBtb3JlIHByZWNpc2UgY2FsbHMgdG8gYHBza2JfbWF5X3B1bGxgIHdpdGggY2FsY3VsYXRlZCBsZW5ndGhzIChgaGVhZGVyc2l6ZSArIFBQUF9IRFJMRU4gKyAxYCkuIFNlY29uZCwgYWNjZXNzIHRvIHRoZSBgc2tiLVx1MDAzZWRhdGFgIHBvaW50ZXIgYWZ0ZXIgYHNrYl9wdWxsYCBvY2N1cnMuXG5cbk5vdywgbGV0J3MgZXZhbHVhdGUgd2hpY2ggc2FuaXRpemVyIGlzIG1vc3QgcmVsZXZhbnQuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGJ1ZywgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdpdGhpbiB0aGUgc2tiIGJ1ZmZlciwgdGhlIGNob2ljZSBpcyBmYWlybHkgY2xlYXIuIEtNU0FOIGlzIHByaW1hcmlseSBkZXNpZ25lZCB0byBkZXRlY3QgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRob3NlIGNvbmRpdGlvbnMgYXBwbHkgaGVyZS5cblxuMS4gICoqS2VybmVsIGRhdGEgZXhwb3NlZCB0byB1c2Vyc3BhY2U/KiogTm8uIFRoaXMgaXMgaW5jb21pbmcgcGFja2V0IHByb2Nlc3NpbmcuXG4yLiAgKipDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8qKiBOby4gQWxsIHZhcmlhYmxlcyB1c2VkIChwYXlsb2FkXFxfYXZhaWwsIHNlcSwgaGVhZGVyc2l6ZSwgZXRjLikgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLlxuMy4gICoqQ29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBpbml0aWFsaXphdGlvbiBpc3N1ZXM/KiogTm8sIHRoZSBjb2RlIGlzIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkLlxuNC4gICoqQm91bmRzIGNoZWNrcyBsZWFkaW5nIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlPyoqIE5vLiBUaGUgZGF0YSBjb21pbmcgZnJvbSB0aGUgbmV0d29yayBpcyBwYWNrZXQgZGF0YSwgaW5pdGlhbGl6ZWQgdXBvbiByZWNlcHRpb24uXG5cblRoZSBidWdzIGFyZSBjbGVhcmx5IGJ1ZmZlciBib3VuZHMgaXNzdWVzIOKAkyBLQVNBTiB0ZXJyaXRvcnkuIEtNU0FOIHdvdWxkIGJlIGlycmVsZXZhbnQuXG5cbioqS0FTQU4gdnMuIEtNU0FOOioqXG5cbiogICAqKktBU0FOOioqICBEZXRlY3RzIGEgd2lkZSBhcnJheSBvZiBtZW1vcnkgc2FmZXR5IGlzc3VlcywgaW5jbHVkaW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzIChzbGFiLCBnbG9iYWwsIHN0YWNrKSwgYW5kIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMuIFRoZXNlIGFyZSBwcmVjaXNlbHkgdGhlIHR5cGVzIG9mIGlzc3VlcyB3ZSdyZSBhZGRyZXNzaW5nIHdpdGggdGhlIHBhdGNoJ3MgYm91bmRzIGNoZWNrcy5cbiogICAqKktNU0FOOioqIFRhcmdldHMgdGhlIGRldGVjdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhpcyBpcyBub3QgdGhlIGlzc3VlIGhlcmUuXG5cbkluIHNob3J0LCB0aGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IHBhcnNpbmcgaW4gdGhlIFBQVFAgbmV0d29yayByZWNlaXZlIHBhdGgsIGFkZGluZyBjcnVjaWFsIGxlbmd0aCBjaGVja3MgKGBwc2tiX21heV9wdWxsYCBhbmQgYHBheWxvYWRfYXZhaWwgXHUwMDNlPSAuLi5gKSBiZWZvcmUgaW5kZXhpbmcgaW50byB0aGUgbmV0d29yayBza2IgcGF5bG9hZCBidWZmZXJzLiBUaGVzZSBhZGRpdGlvbnMgZGlyZWN0bHkgYWRkcmVzcyB0aGUgdnVsbmVyYWJpbGl0eSBvZiBvdXQtb2YtYm91bmRzIGJ1ZmZlciByZWFkcyBvbiBzaG9ydCBvciBub24tbGluZWFyIHNrYiBwYWNrZXRzLiBTaW5jZSB0aGVyZSdzIG5vIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSBpbnZvbHZlZCBvciBhbnkgb2YgdGhlIHVzdWFsIEtNU0FOIGNvbmNlcm5zLCBLQVNBTiBpcyB0aGUgY29ycmVjdCBzYW5pdGl6ZXIgaGVyZS4gTm8gS01TQU4gZnV6emluZyBpcyBuZWNlc3NhcnkuIFRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOYCB0byBgZmFsc2VgLiBJIG5lZWQgdG8gbm93IGVuc3VyZSB0aGF0IG15IGFuYWx5c2lzIGFuZCByZWFzb25pbmcgYXJlIGNsZWFyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDg3LCJPdXRwdXRUb2tlbnMiOjE5MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNjo1Ny42MDc0MTc0MzdaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBib3VuZHMgY2hlY2tpbmcgYW5kIHNrYiBwdWxsIG9wZXJhdGlvbnMgaW4gdGhlIFBQVFAgcmVjZWl2ZSBwYXRoIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKS4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgYWRlcXVhdGUgcGF5bG9hZCBieXRlcyBhcmUgYXZhaWxhYmxlIGFuZCBwdWxsZWQgaW50byB0aGUgc2tiIGxpbmVhciBhcmVhIGJlZm9yZSBpbmRleGluZyBpbnRvIHNrYiBwYXlsb2FkIG9mZnNldHMgKHBheWxvYWRbMF0gdGhyb3VnaCBwYXlsb2FkWzRdIGFuZCBza2ItXFx1MDAzZWRhdGFbMF0gdGhyb3VnaCBza2ItXFx1MDAzZWRhdGFbMV0pLlxcblxcblRoZXNlIGNoYW5nZXMgcHJldmVudCBvdXQtb2YtYm91bmRzIChPT0IpIG1lbW9yeSByZWFkcyBvbiB0cnVuY2F0ZWQgb3IgbWFsZm9ybWVkIG5ldHdvcmsgcGFja2V0cy4gT09CIHJlYWRzIGFuZCBpbnZhbGlkIHNrYiBidWZmZXIgZGVyZWZlcmVuY2VzIGFyZSBkaXJlY3RseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBib3VuZHMgY2hlY2tpbmcgYW5kIHNrYiBwdWxsIG9wZXJhdGlvbnMgaW4gdGhlIFBQVFAgcmVjZWl2ZSBwYXRoIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKS4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgYWRlcXVhdGUgcGF5bG9hZCBieXRlcyBhcmUgYXZhaWxhYmxlIGFuZCBwdWxsZWQgaW50byB0aGUgc2tiIGxpbmVhciBhcmVhIGJlZm9yZSBpbmRleGluZyBpbnRvIHNrYiBwYXlsb2FkIG9mZnNldHMgKHBheWxvYWRbMF0gdGhyb3VnaCBwYXlsb2FkWzRdIGFuZCBza2ItXFx1MDAzZWRhdGFbMF0gdGhyb3VnaCBza2ItXFx1MDAzZWRhdGFbMV0pLlxcblxcblRoZXNlIGNoYW5nZXMgcHJldmVudCBvdXQtb2YtYm91bmRzIChPT0IpIG1lbW9yeSByZWFkcyBvbiB0cnVuY2F0ZWQgb3IgbWFsZm9ybWVkIG5ldHdvcmsgcGFja2V0cy4gT09CIHJlYWRzIGFuZCBpbnZhbGlkIHNrYiBidWZmZXIgZGVyZWZlcmVuY2VzIGFyZSBkaXJlY3RseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow62k44[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 16:32:22 +0000 UTC FinishedAt: 2026-09-02 16:36:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPTP", "PPP", "NET_IPGRE_DEMUX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPTP", "PPP", "NET_IPGRE_DEMUX" ], "series_id": "1db59710-19c0-4c5f-957c-b012fe6ca0a4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "pptp_rcv_core", "pptp_rcv", "pptp_create", "pptp_connect", "pptp_bind" ], "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+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQVFAmIzM0OywKICAgICYjMzQ7UFBQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwdHBfcmN2X2NvcmUmIzM0OywKICAgICYjMzQ7cHB0cF9yY3YmIzM0OywKICAgICYjMzQ7cHB0cF9jcmVhdGUmIzM0OywKICAgICYjMzQ7cHB0cF9jb25uZWN0JiMzNDssCiAgICAmIzM0O3BwdHBfYmluZCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBib3VuZHMgY2hlY2tpbmcgYW5kIHNrYiBwdWxsIG9wZXJhdGlvbnMgaW4gdGhlIFBQVFAgcmVjZWl2ZSBwYXRoIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKS4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgYWRlcXVhdGUgcGF5bG9hZCBieXRlcyBhcmUgYXZhaWxhYmxlIGFuZCBwdWxsZWQgaW50byB0aGUgc2tiIGxpbmVhciBhcmVhIGJlZm9yZSBpbmRleGluZyBpbnRvIHNrYiBwYXlsb2FkIG9mZnNldHMgKHBheWxvYWRbMF0gdGhyb3VnaCBwYXlsb2FkWzRdIGFuZCBza2ItXHUwMDNlZGF0YVswXSB0aHJvdWdoIHNrYi1cdTAwM2VkYXRhWzFdKS5cblxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgKE9PQikgbWVtb3J5IHJlYWRzIG9uIHRydW5jYXRlZCBvciBtYWxmb3JtZWQgbmV0d29yayBwYWNrZXRzLiBPT0IgcmVhZHMgYW5kIGludmFsaWQgc2tiIGJ1ZmZlciBkZXJlZmVyZW5jZXMgYXJlIGRpcmVjdGx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIEtBU0FOIGJ1aWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgY29weSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCByZWNlcHRpb24gcGFyc2luZyBhbmQgYm91bmRzIGNoZWNraW5nIGxvZ2ljIGluIHBwdHBfcmN2X2NvcmUoKSB3aXRoaW4gdGhlIFBQVFAgbmV0d29yayBwcm90b2NvbCBkcml2ZXIgKGRyaXZlcnMvbmV0L3BwcC9wcHRwLmMpLCBlbnN1cmluZyBwYXlsb2FkIGF2YWlsYWJpbGl0eSBjaGVja3MgYW5kIHBza2JfbWF5X3B1bGwoKSBjYWxscyBwcmVjZWRlIGhlYWRlciBkZXJlZmVyZW5jaW5nIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgcGFja2V0cy4gVGhpcyBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9QUFBPWCBzb2NrZXRzIGFuZCBHUkUgcGFja2V0IGRlbGl2ZXJ5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjE1NTk1OTI1ZjI5OGVlZjVmMjJkOWM3ZDI4YjM1MTIyZGEwMmM4ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTY6MzU6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbmluZGV4IGE3OTdhMDYwNmY2YjQuLjRmYjk0YTQ1NWM1NzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXG5AQCAtMjc1LDYgJiM0MzsyNzUsNyBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0c3RydWN0IHBwcG94X3NvY2sgKnBvID0gcHBwb3hfc2soc2spO1xuIFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcdTAwMjZwby1cdTAwM2Vwcm90by5wcHRwO1xuIFx0aW50IGhlYWRlcnNpemUsIHBheWxvYWRfbGVuLCBzZXE7XG4mIzQzO1x0dW5zaWduZWQgaW50IHBheWxvYWRfYXZhaWw7XG4gXHRfX3U4ICpwYXlsb2FkO1xuIFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuIFxuQEAgLTMxNCwyMyAmIzQzOzMxNSwzNCBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBwYXlsb2FkX2xlbikpXG4gXHRcdGdvdG8gZHJvcDtcbiBcbi1cdHBheWxvYWQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBoZWFkZXJzaXplO1xuJiM0MztcdHBheWxvYWRfYXZhaWwgPSBza2ItXHUwMDNlbGVuIC0gaGVhZGVyc2l6ZTtcbiBcdC8qIGNoZWNrIGZvciBleHBlY3RlZCBzZXF1ZW5jZSBudW1iZXIgKi9cbiBcdGlmIChzZXEgXHUwMDNjIG9wdC1cdTAwM2VzZXFfcmVjdiAmIzQzOyAxIHx8IFdSQVBQRUQob3B0LVx1MDAzZXNlcV9yZWN2LCBzZXEpKSB7XG4tXHRcdGlmICgocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMpIFx1MDAyNlx1MDAyNiAocGF5bG9hZFsxXSA9PSBQUFBfVUkpIFx1MDAyNlx1MDAyNlxuLVx0XHRcdFx0KFBQUF9QUk9UT0NPTChwYXlsb2FkKSA9PSBQUFBfTENQKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHRcdCgocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEpIHx8IChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUCkpKVxuLVx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuJiM0MztcdFx0aWYgKHBheWxvYWRfYXZhaWwgXHUwMDNlPSBQUFBfSERSTEVOICYjNDM7IDEpIHtcbiYjNDM7XHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBQUFBfSERSTEVOICYjNDM7IDEpKVxuJiM0MztcdFx0XHRcdGdvdG8gZHJvcDtcbiYjNDM7XG4mIzQzO1x0XHRcdHBheWxvYWQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBoZWFkZXJzaXplO1xuJiM0MztcdFx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0XHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxuJiM0MztcdFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuJiM0MztcdFx0fVxuIFx0fSBlbHNlIHtcbiBcdFx0b3B0LVx1MDAzZXNlcV9yZWN2ID0gc2VxO1xuIGFsbG93X3BhY2tldDpcbiBcdFx0c2tiX3B1bGwoc2tiLCBoZWFkZXJzaXplKTtcbiBcbi1cdFx0aWYgKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFx1MDAyNlx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSkge1xuLVx0XHRcdC8qIGNob3Agb2ZmIGFkZHJlc3MvY29udHJvbCAqL1xuLVx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAzKVxuJiM0MztcdFx0aWYgKHBheWxvYWRfYXZhaWwgXHUwMDNlPSAyKSB7XG4mIzQzO1x0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIDIpKVxuIFx0XHRcdFx0Z290byBkcm9wO1xuLVx0XHRcdHNrYl9wdWxsKHNrYiwgMik7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoc2tiLVx1MDAzZWRhdGFbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFx1MDAyNlx1MDAyNiBza2ItXHUwMDNlZGF0YVsxXSA9PSBQUFBfVUkpIHtcbiYjNDM7XHRcdFx0XHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cbiYjNDM7XHRcdFx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgMylcbiYjNDM7XHRcdFx0XHRcdGdvdG8gZHJvcDtcbiYjNDM7XHRcdFx0XHRza2JfcHVsbChza2IsIDIpO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0c2tiLVx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX05PTkU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFBUUCYjMzQ7LAogICAgJiMzNDtQUFAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICAgJiMzNDtwcHRwX3JjdiYjMzQ7LAogICAgJiMzNDtwcHRwX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtwcHRwX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cHB0cF9iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCByZWNlcHRpb24gcGFyc2luZyBhbmQgYm91bmRzIGNoZWNraW5nIGxvZ2ljIGluIHBwdHBfcmN2X2NvcmUoKSB3aXRoaW4gdGhlIFBQVFAgbmV0d29yayBwcm90b2NvbCBkcml2ZXIgKGRyaXZlcnMvbmV0L3BwcC9wcHRwLmMpLCBlbnN1cmluZyBwYXlsb2FkIGF2YWlsYWJpbGl0eSBjaGVja3MgYW5kIHBza2JfbWF5X3B1bGwoKSBjYWxscyBwcmVjZWRlIGhlYWRlciBkZXJlZmVyZW5jaW5nIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgcGFja2V0cy4gVGhpcyBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9QUFBPWCBzb2NrZXRzIGFuZCBHUkUgcGFja2V0IGRlbGl2ZXJ5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjE1NTk1OTI1ZjI5OGVlZjVmMjJkOWM3ZDI4YjM1MTIyZGEwMmM4ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTY6MzU6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwppbmRleCBhNzk3YTA2MDZmNmI0Li40ZmI5NGE0NTVjNTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMKQEAgLTI3NSw2ICYjNDM7Mjc1LDcgQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7CiAJc3RydWN0IHBwdHBfb3B0ICpvcHQgPSAmYW1wO3BvLSZndDtwcm90by5wcHRwOwogCWludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxOwomIzQzOwl1bnNpZ25lZCBpbnQgcGF5bG9hZF9hdmFpbDsKIAlfX3U4ICpwYXlsb2FkOwogCXN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjsKIApAQCAtMzE0LDIzICYjNDM7MzE1LDM0IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBwYXlsb2FkX2xlbikpCiAJCWdvdG8gZHJvcDsKIAotCXBheWxvYWQgPSBza2ItJmd0O2RhdGEgJiM0MzsgaGVhZGVyc2l6ZTsKJiM0MzsJcGF5bG9hZF9hdmFpbCA9IHNrYi0mZ3Q7bGVuIC0gaGVhZGVyc2l6ZTsKIAkvKiBjaGVjayBmb3IgZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyICovCiAJaWYgKHNlcSAmbHQ7IG9wdC0mZ3Q7c2VxX3JlY3YgJiM0MzsgMSB8fCBXUkFQUEVEKG9wdC0mZ3Q7c2VxX3JlY3YsIHNlcSkpIHsKLQkJaWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgJmFtcDsmYW1wOyAocGF5bG9hZFsxXSA9PSBQUFBfVUkpICZhbXA7JmFtcDsKLQkJCQkoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApICZhbXA7JmFtcDsKLQkJCQkoKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRKSB8fCAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKSkKLQkJCWdvdG8gYWxsb3dfcGFja2V0OwomIzQzOwkJaWYgKHBheWxvYWRfYXZhaWwgJmd0Oz0gUFBQX0hEUkxFTiAmIzQzOyAxKSB7CiYjNDM7CQkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBQUFBfSERSTEVOICYjNDM7IDEpKQomIzQzOwkJCQlnb3RvIGRyb3A7CiYjNDM7CiYjNDM7CQkJcGF5bG9hZCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBoZWFkZXJzaXplOwomIzQzOwkJCWlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJICZhbXA7JmFtcDsKJiM0MzsJCQkgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgJmFtcDsmYW1wOwomIzQzOwkJCSAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKQomIzQzOwkJCQlnb3RvIGFsbG93X3BhY2tldDsKJiM0MzsJCX0KIAl9IGVsc2UgewogCQlvcHQtJmd0O3NlcV9yZWN2ID0gc2VxOwogYWxsb3dfcGFja2V0OgogCQlza2JfcHVsbChza2IsIGhlYWRlcnNpemUpOwogCi0JCWlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7Ci0JCQkvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi8KLQkJCWlmIChza2ItJmd0O2xlbiAmbHQ7IDMpCiYjNDM7CQlpZiAocGF5bG9hZF9hdmFpbCAmZ3Q7PSAyKSB7CiYjNDM7CQkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgMikpCiAJCQkJZ290byBkcm9wOwotCQkJc2tiX3B1bGwoc2tiLCAyKTsKJiM0MzsKJiM0MzsJCQlpZiAoc2tiLSZndDtkYXRhWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHNrYi0mZ3Q7ZGF0YVsxXSA9PSBQUFBfVUkpIHsKJiM0MzsJCQkJLyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovCiYjNDM7CQkJCWlmIChza2ItJmd0O2xlbiAmbHQ7IDMpCiYjNDM7CQkJCQlnb3RvIGRyb3A7CiYjNDM7CQkJCXNrYl9wdWxsKHNrYiwgMik7CiYjNDM7CQkJfQogCQl9CiAKIAkJc2tiLSZndDtpcF9zdW1tZWQgPSBDSEVDS1NVTV9OT05FOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzAyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gdGhhdCBQUFRQIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCwgYW5kIG15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYCBmaWxlLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGNoYW5nZXMgc2VlbSB0byBiZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIGBwcHRwX3Jjdl9jb3JlYCBmdW5jdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaXNzZWN0IHRoYXQgdG8gZ3Jhc3AgdGhlIGltcGFjdCBvZiB0aGUgcGF0Y2guCgpCZXlvbmQgdGhlIGNvZGUgaXRzZWxmLCBJIHNob3VsZCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IGludGVyYWN0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGFuZCBzeW1ib2wgZGVmaW5pdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvcHBwL2AgZGlyZWN0b3J5LCBpbmNsdWRpbmcgdGhhdCBgcHB0cC5jYCBmaWxlLiBJIG5lZWQgdG8ga25vdyBob3cgdGhpcyBtb2RpZmljYXRpb24gaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIFBQUCBzdGFjaywgYW5kIGhvdyBpdCBtaWdodCBiZSBlbmFibGVkL2Rpc2FibGVkLgoKRmluYWxseSwgSSYjMzk7bGwgbGV2ZXJhZ2UgdGhlIHRvb2xzIGF0IG15IGRpc3Bvc2FsLiBHcmVwcGluZyB0aHJvdWdoIHRoZSBjb2RlYmFzZSBvciBzdHJhdGVnaWNhbGx5IHVzaW5nIGByZWFkLWZpbGVgIHRvIHplcm8gaW4gb24gcmVsZXZhbnQgY29kZSBzZWN0aW9ucywgZGVwZW5kZW5jaWVzLCBvciBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcC4gSXQmIzM5O3MgdGltZSB0byBnZXQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgY2hhbmdlcyBhbmQgaG93IHRoZXkgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI2MDpcdFx0aXBfc2VsZWN0X2lkZW50KG5ldCwgc2tiLCBOVUxMKTtcbiAyNjE6XHRcdGlwX3NlbmRfY2hlY2soaXBoKTtcbiAyNjI6XHRcbiAyNjM6XHRcdGlwX2xvY2FsX291dChuZXQsIHNrYi1cdTAwM2Vzaywgc2tiKTtcbiAyNjQ6XHRcdHJldHVybiAxO1xuIDI2NTpcdFxuIDI2NjpcdHR4X2Vycm9yOlxuIDI2NzpcdFx0aXBfcnRfcHV0KHJ0KTtcbiAyNjg6XHR0eF9kcm9wOlxuIDI2OTpcdFx0a2ZyZWVfc2tiKHNrYik7XG4gMjcwOlx0XHRyZXR1cm4gMTtcbiAyNzE6XHR9XG4gMjcyOlx0XG4gMjczOlx0c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAyNzQ6XHR7XG4gMjc1Olx0XHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XG4gMjc2Olx0XHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdCA9IFx1MDAyNnBvLVx1MDAzZXByb3RvLnBwdHA7XG4gMjc3Olx0XHRpbnQgaGVhZGVyc2l6ZSwgcGF5bG9hZF9sZW4sIHNlcTtcbiAyNzg6XHRcdHVuc2lnbmVkIGludCBwYXlsb2FkX2F2YWlsO1xuIDI3OTpcdFx0X191OCAqcGF5bG9hZDtcbiAyODA6XHRcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcbiAyODE6XHRcbiAyODI6XHRcdGlmICghKHNrLVx1MDAzZXNrX3N0YXRlIFx1MDAyNiBQUFBPWF9DT05ORUNURUQpKVxuIDI4MzpcdFx0XHRnb3RvIGRyb3A7XG4gMjg0Olx0XG4gMjg1Olx0XHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXHUwMDNlZGF0YSk7XG4gMjg2Olx0XHRoZWFkZXJzaXplICA9IHNpemVvZigqaGVhZGVyKTtcbiAyODc6XHRcbiAyODg6XHRcdC8qIHRlc3QgaWYgYWNrbm93bGVkZ2VtZW50IHByZXNlbnQgKi9cbiAyODk6XHRcdGlmIChHUkVfSVNfQUNLKGhlYWRlci1cdTAwM2VncmVfaGQuZmxhZ3MpKSB7XG4gMjkwOlx0XHRcdF9fdTMyIGFjaztcbiAyOTE6XHRcbiAyOTI6XHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSkpXG4gMjkzOlx0XHRcdFx0Z290byBkcm9wO1xuIDI5NDpcdFx0XHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXHUwMDNlZGF0YSk7XG4gMjk1Olx0XG4gMjk2Olx0XHRcdC8qIGFjayBpbiBkaWZmZXJlbnQgcGxhY2UgaWYgUyA9IDAgKi9cbiAyOTc6XHRcdFx0YWNrID0gR1JFX0lTX1NFUShoZWFkZXItXHUwMDNlZ3JlX2hkLmZsYWdzKSA/IG50b2hsKGhlYWRlci1cdTAwM2VhY2spIDpcbiAyOTg6XHRcdFx0XHRcdFx0XHRcdCBudG9obChoZWFkZXItXHUwMDNlc2VxKTtcbiAyOTk6XHRcdFx0aWYgKGFjayBcdTAwM2Ugb3B0LVx1MDAzZWFja19yZWN2KVxuIDMwMDpcdFx0XHRcdG9wdC1cdTAwM2VhY2tfcmVjdiA9IGFjaztcbiAzMDE6XHRcdFx0LyogYWxzbyBoYW5kbGUgc2VxdWVuY2UgbnVtYmVyIHdyYXAtYXJvdW5kICAqL1xuIDMwMjpcdFx0XHRpZiAoV1JBUFBFRChhY2ssIG9wdC1cdTAwM2VhY2tfcmVjdikpXG4gMzAzOlx0XHRcdFx0b3B0LVx1MDAzZWFja19yZWN2ID0gYWNrO1xuIDMwNDpcdFx0fSBlbHNlIHtcbiAzMDU6XHRcdFx0aGVhZGVyc2l6ZSAtPSBzaXplb2YoaGVhZGVyLVx1MDAzZWFjayk7XG4gMzA2Olx0XHR9XG4gMzA3Olx0XHQvKiB0ZXN0IGlmIHBheWxvYWQgcHJlc2VudCAqL1xuIDMwODpcdFx0aWYgKCFHUkVfSVNfU0VRKGhlYWRlci1cdTAwM2VncmVfaGQuZmxhZ3MpKVxuIDMwOTpcdFx0XHRnb3RvIGRyb3A7XG4gMzEwOlx0XG4gMzExOlx0XHRwYXlsb2FkX2xlbiA9IG50b2hzKGhlYWRlci1cdTAwM2VwYXlsb2FkX2xlbik7XG4gMzEyOlx0XHRzZXEgICAgICAgICA9IG50b2hsKGhlYWRlci1cdTAwM2VzZXEpO1xuIDMxMzpcdFxuIDMxNDpcdFx0LyogY2hlY2sgZm9yIGluY29tcGxldGUgcGFja2V0IChsZW5ndGggc21hbGxlciB0aGFuIGV4cGVjdGVkKSAqL1xuIDMxNTpcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBwYXlsb2FkX2xlbikpXG4gMzE2Olx0XHRcdGdvdG8gZHJvcDtcbiAzMTc6XHRcbiAzMTg6XHRcdHBheWxvYWRfYXZhaWwgPSBza2ItXHUwMDNlbGVuIC0gaGVhZGVyc2l6ZTtcbiAzMTk6XHRcdC8qIGNoZWNrIGZvciBleHBlY3RlZCBzZXF1ZW5jZSBudW1iZXIgKi9cbiAzMjA6XHRcdGlmIChzZXEgXHUwMDNjIG9wdC1cdTAwM2VzZXFfcmVjdiAmIzQzOyAxIHx8IFdSQVBQRUQob3B0LVx1MDAzZXNlcV9yZWN2LCBzZXEpKSB7XG4gMzIxOlx0XHRcdGlmIChwYXlsb2FkX2F2YWlsIFx1MDAzZT0gUFBQX0hEUkxFTiAmIzQzOyAxKSB7XG4gMzIyOlx0XHRcdFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBQUFBfSERSTEVOICYjNDM7IDEpKVxuIDMyMzpcdFx0XHRcdFx0Z290byBkcm9wO1xuIDMyNDpcdFxuIDMyNTpcdFx0XHRcdHBheWxvYWQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBoZWFkZXJzaXplO1xuIDMyNjpcdFx0XHRcdGlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyBcdTAwMjZcdTAwMjYgcGF5bG9hZFsxXSA9PSBQUFBfVUkgXHUwMDI2XHUwMDI2XG4gMzI3Olx0XHRcdFx0ICAgIFBQUF9QUk9UT0NPTChwYXlsb2FkKSA9PSBQUFBfTENQIFx1MDAyNlx1MDAyNlxuIDMyODpcdFx0XHRcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxuIDMyOTpcdFx0XHRcdFx0Z290byBhbGxvd19wYWNrZXQ7XG4gMzMwOlx0XHRcdH1cbiAzMzE6XHRcdH0gZWxzZSB7XG4gMzMyOlx0XHRcdG9wdC1cdTAwM2VzZXFfcmVjdiA9IHNlcTtcbiAzMzM6XHRhbGxvd19wYWNrZXQ6XG4gMzM0Olx0XHRcdHNrYl9wdWxsKHNrYiwgaGVhZGVyc2l6ZSk7XG4gMzM1Olx0XG4gMzM2Olx0XHRcdGlmIChwYXlsb2FkX2F2YWlsIFx1MDAzZT0gMikge1xuIDMzNzpcdFx0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIDIpKVxuIDMzODpcdFx0XHRcdFx0Z290byBkcm9wO1xuIDMzOTpcdFxuIDM0MDpcdFx0XHRcdGlmIChza2ItXHUwMDNlZGF0YVswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHNrYi1cdTAwM2VkYXRhWzFdID09IFBQUF9VSSkge1xuIDM0MTpcdFx0XHRcdFx0LyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovXG4gMzQyOlx0XHRcdFx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgMylcbiAzNDM6XHRcdFx0XHRcdFx0Z290byBkcm9wO1xuIDM0NDpcdFx0XHRcdFx0c2tiX3B1bGwoc2tiLCAyKTtcbiAzNDU6XHRcdFx0XHR9XG4gMzQ2Olx0XHRcdH1cbiAzNDc6XHRcbiAzNDg6XHRcdFx0c2tiLVx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX05PTkU7XG4gMzQ5Olx0XHRcdHNrYl9zZXRfbmV0d29ya19oZWFkZXIoc2tiLCBza2ItXHUwMDNlaGVhZC1za2ItXHUwMDNlZGF0YSk7XG4gMzUwOlx0XHRcdHBwcF9pbnB1dChcdTAwMjZwby1cdTAwM2VjaGFuLCBza2IpO1xuIDM1MTpcdFxuIDM1MjpcdFx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4gMzUzOlx0XHR9XG4gMzU0Olx0ZHJvcDpcbiAzNTU6XHRcdGtmcmVlX3NrYihza2IpO1xuIDM1NjpcdFx0cmV0dXJuIE5FVF9SWF9EUk9QO1xuIDM1NzpcdH1cbiAzNTg6XHRcbiAzNTk6XHRzdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYzMgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFBQUCBOZXR3b3JraW5nIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIFBQUCBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBkcml2ZXIgaW5mcmFzdHJ1Y3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgUG9pbnQtdG8tUG9pbnQgUHJvdG9jb2wgKFBQUCkgY29uZmlndXJhdGlvbi4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBzdGFydCBieSBkaWdnaW5nIGludG8gdGhlIEtjb25maWcgZmlsZXMsIHN0YXJ0aW5nIHdpdGggdGhlIGBkcml2ZXJzL25ldC9wcHAvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gYmVnaW4sIHRvIGZpZ3VyZSBvdXQgd2hlcmUgUFBQIHN1cHBvcnQsIGFuZCBieSBleHRlbnNpb24sIHRoZSBQUFRQIChQb2ludC10by1Qb2ludCBUdW5uZWxpbmcgUHJvdG9jb2wpIG9wdGlvbnMgYXJlIGRlZmluZWQuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbHMgYW5kIGRlcGVuZGVuY2llcy4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBidWlsZCBvcHRpb25zIGFuZCB1bmRlcnN0YW5kIGhvdyBQUFRQIGlzIGludGVncmF0ZWQgYW5kIHBvc3NpYmx5IGV2ZW4sIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoZSBkZXNpZ24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHB0cFxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19QUFBPRSkgJiM0Mzs9IHBwcG9lLm9cbmRyaXZlcnMvbmV0L3BwcC9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfUFBUUCkgJiM0Mzs9IHBwdHAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MjYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyB0aGUgUFBUUCBDb25maWd1cmF0aW9uIGluIHRoZSBLZXJuZWwqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBDT05GSUdfUFBUUGAgb3B0aW9uIHJlc2lkZXMgaW4gdGhlIGtlcm5lbCYjMzk7cyBidWlsZCBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYW4gZXhwZXJpZW5jZWQga2VybmVsIGRldmVsb3BlciwgaXMgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZS4gVGhlIGxpa2VseSBwbGFjZSB0byBzdGFydCBpcyB0aGUgUFBQIG5ldHdvcmtpbmcgY29kZSwgc28gSSYjMzk7bGwgY2hlY2sgaW5zaWRlIHRoZSBgZHJpdmVycy9uZXQvcHBwYCBkaXJlY3RvcnkuIE1vcmUgc3BlY2lmaWNhbGx5LCBJIGtub3cgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHR5cGljYWxseSBkZWZpbmVkIGluIGBLY29uZmlnYCBmaWxlcy4gVGhlcmVmb3JlLCBteSBpbml0aWFsIHRhcmdldCB3aWxsIGJlIGBkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ2AuIFRoYXQgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgZGVmaW5pdGlvbiBmb3IgYENPTkZJR19QUFRQYCBhbmQgdGVsbCBtZSB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBQVFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTUzPWNvbmZpZyBQUFBPRV9IQVNIX0JJVFNcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjAtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNjE6Y29uZmlnIFBQVFBcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE2Mi1cdHRyaXN0YXRlIFwmIzM0O1BQUCBvdmVyIElQdjQgKFBQVFApXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIzNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgUFBUUCBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtMZXQmIzM5O3MgY3JhY2sgb3BlbiB0aGUgS2NvbmZpZyBmaWxlcyByZWxhdGVkIHRvIFBQVFAuJiMzNDsgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IFBQVFAgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9uIG9yIGNvbmZpZ3VyYXRpb24gY29udGV4dCwgc28gSSYjMzk7bSBmb2N1c2luZyBteSBtZW50YWwgZW5lcmd5IG9uIHRoYXQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBkZXBlbmRlbmNpZXMsIG9wdGlvbnMsIGRlZmF1bHRzLCBhbmQgcG90ZW50aWFsbHkgYW55IHRyaXN0YXRlIGxvZ2ljIGFzc29jaWF0ZWQgd2l0aCB0aGUgUFBUUCBzdXBwb3J0LiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGJlIGFzc2Vzc2luZyBob3cgUFBUUCBzdXBwb3J0IGludGVyYWN0cyB3aXRoIG90aGVyIG5ldHdvcmsgY29tcG9uZW50cyBhbmQgc2VjdXJpdHkgZmVhdHVyZXMuIE15IGdvYWwgaXMgYSBmdWxsIHBpY3R1cmUgb2YgUFBUUCYjMzk7cyBidWlsZCB0aW1lIGludGVncmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNTA6XHRcbiAxNTE6XHRlbmRjaG9pY2VcbiAxNTI6XHRcbiAxNTM6XHRjb25maWcgUFBQT0VfSEFTSF9CSVRTXG4gMTU0Olx0XHRpbnRcbiAxNTU6XHRcdGRlZmF1bHQgMSBpZiBQUFBPRV9IQVNIX0JJVFNfMVxuIDE1NjpcdFx0ZGVmYXVsdCAyIGlmIFBQUE9FX0hBU0hfQklUU18yXG4gMTU3Olx0XHRkZWZhdWx0IDQgaWYgUFBQT0VfSEFTSF9CSVRTXzRcbiAxNTg6XHRcdGRlZmF1bHQgOCBpZiBQUFBPRV9IQVNIX0JJVFNfOFxuIDE1OTpcdFx0ZGVmYXVsdCA0XG4gMTYwOlx0XG4gMTYxOlx0Y29uZmlnIFBQVFBcbiAxNjI6XHRcdHRyaXN0YXRlIFwmIzM0O1BQUCBvdmVyIElQdjQgKFBQVFApXCYjMzQ7XG4gMTYzOlx0XHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxuIDE2NDpcdFx0c2VsZWN0IFBQUE9YXG4gMTY1Olx0XHRoZWxwXG4gMTY2Olx0XHQgIFN1cHBvcnQgZm9yIFBQUCBvdmVyIElQdjQuKFBvaW50LXRvLVBvaW50IFR1bm5lbGluZyBQcm90b2NvbClcbiAxNjc6XHRcbiAxNjg6XHRcdCAgVGhpcyBkcml2ZXIgcmVxdWlyZXMgcHBwZCBwbHVnaW4gdG8gd29yayBpbiBjbGllbnQgbW9kZSBvclxuIDE2OTpcdFx0ICBtb2RpZmllZCBwcHRwZCAocG9wdG9wKSB0byB3b3JrIGluIHNlcnZlciBtb2RlLlxuIDE3MDpcdFx0ICBTZWUgaHR0cDovL2FjY2VsLXBwdHAuc291cmNlZm9yZ2UubmV0LyBmb3IgaW5mb3JtYXRpb24gaG93IHRvXG4gMTcxOlx0XHQgIHV0aWxpemUgdGhpcyBtb2R1bGUuXG4gMTcyOlx0XG4gMTczOlx0Y29uZmlnIFBQUE9MMlRQXG4gMTc0Olx0XHR0cmlzdGF0ZSBcJiMzNDtQUFAgb3ZlciBMMlRQXCYjMzQ7XG4gMTc1Olx0XHRkZXBlbmRzIG9uIEwyVFBcbiAxNzY6XHRcdHNlbGVjdCBQUFBPWFxuIDE3NzpcdFx0aGVscFxuIDE3ODpcdFx0ICBTdXBwb3J0IGZvciBQUFAtb3Zlci1MMlRQIHNvY2tldCBmYW1pbHkuIEwyVFAgaXMgYSBwcm90b2NvbFxuIDE3OTpcdFx0ICB1c2VkIGJ5IElTUHMgYW5kIGVudGVycHJpc2VzIHRvIHR1bm5lbCBQUFAgdHJhZmZpYyBvdmVyIFVEUFxuIDE4MDpcdFx0ICB0dW5uZWxzLiBMMlRQIGlzIHJlcGxhY2luZyBQUFRQIGZvciBWUE4gdXNlcy5cbiAxODE6XHRpZiBUVFlcbiAxODI6XHRcbiAxODM6XHRjb25maWcgUFBQX0FTWU5DXG4gMTg0Olx0XHR0cmlzdGF0ZSBcJiMzNDtQUFAgc3VwcG9ydCBmb3IgYXN5bmMgc2VyaWFsIHBvcnRzXCYjMzQ7XG4gMTg1Olx0XHRzZWxlY3QgQ1JDX0NDSVRUXG4gMTg2Olx0XHRoZWxwXG4gMTg3Olx0XHQgIFNheSBZIChvciBNKSBoZXJlIGlmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIFBQUCBvdmVyIHN0YW5kYXJkXG4gMTg4Olx0XHQgIGFzeW5jaHJvbm91cyBzZXJpYWwgcG9ydHMsIHN1Y2ggYXMgQ09NMSBvciBDT00yIG9uIGEgUEMuICBJZiB5b3UgdXNlXG4gMTg5Olx0XHQgIGEgbW9kZW0gKG5vdCBhIHN5bmNocm9ub3VzIG9yIElTRE4gbW9kZW0pIHRvIGNvbnRhY3QgeW91ciBJU1AsIHlvdVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDU0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBORVRfSVBHUkVfREVNVVhgIGluIEtjb25maWcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHNvbWV0aGluZyDigJMgbGV0JiMzOTtzIHNlZSwgaXQmIzM5O3MgYWJvdXQgdGhlIGRlbXVsdGlwbGV4aW5nIG9mIElQIEdSRSBwYWNrZXRzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hlcmUgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGNvbmZpZ3VyZWQ6IEkgbmVlZCB0byBjaGVjayBgS2NvbmZpZ2AgZm9yIHRoZSBgTkVUX0lQR1JFX0RFTVVYYCBzeW1ib2wuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgcHJvYmFibHkgYSBib29sZWFuIG9yIHRyaXN0YXRlLCBidXQgdGhlIGV4YWN0IGRldGFpbHMgd2lsbCBjb21lIG91dCBvZiBpbnNwZWN0aW5nIHRoZSBjb25maWcuIElmIGl0JiMzOTtzIGVuYWJsZWQsIHRoYXQgb2YgY291cnNlIHdvdWxkIHN1Z2dlc3Qgd2Ugd2FudCBzb21lIGRlbXVsdGlwbGV4aW5nOyBpZiBub3QsIHRoZXJlIG1pZ2h0IGJlIG90aGVyIG1lYW5zIG9mIEdSRSBkZW11eGluZyBoYXBwZW5pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGNvbmZpZyBvcHRpb24gYW5kIHRoZSBnZW5lcmFsIEdSRSBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5ncyB0byBzZWUgdGhlIHR5cGljYWwgdXNlIGNhc2VzIGFuZCBob3cgdGhpcyBhbGlnbnMgd2l0aCB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfSVBHUkVfREVNVVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MTYyPWNvbmZpZyBORVRfSVBJUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTc5LVxubmV0L2lwdjQvS2NvbmZpZzoxODA6Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxubmV0L2lwdjQvS2NvbmZpZy0xODEtXHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIGRlbXVsdGlwbGV4ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM5NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhlIEdSRSBEZW11eCBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGV4YW1pbmluZyB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBORVRfSVBHUkVfREVNVVhgIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgY29uZmlndXJlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZS4gVGhpcyBpcyBsaWtlbHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgdG8gdHJhY2UgdGhlIEdSRSBkZW11bHRpcGxleGluZyBmdW5jdGlvbmFsaXR5LCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgY29uZmlndXJhdGlvbiBpcyB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIHRvd2FyZCB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvdXIgd2l0aGluIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTc1Olx0XG4gMTc2Olx0XHQgIFNheWluZyBZIHRvIHRoaXMgb3B0aW9uIHdpbGwgcHJvZHVjZSB0d28gbW9kdWxlcyAoID0gY29kZSB3aGljaCBjYW5cbiAxNzc6XHRcdCAgYmUgaW5zZXJ0ZWQgaW4gYW5kIHJlbW92ZWQgZnJvbSB0aGUgcnVubmluZyBrZXJuZWwgd2hlbmV2ZXIgeW91XG4gMTc4Olx0XHQgIHdhbnQpLiBNb3N0IHBlb3BsZSB3b24mIzM5O3QgbmVlZCB0aGlzIGFuZCBjYW4gc2F5IE4uXG4gMTc5Olx0XG4gMTgwOlx0Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxuIDE4MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4gMTgyOlx0XHRoZWxwXG4gMTgzOlx0XHQgIFRoaXMgaXMgaGVscGVyIG1vZHVsZSB0byBkZW11bHRpcGxleCBHUkUgcGFja2V0cyBvbiBHUkUgdmVyc2lvbiBmaWVsZCBjcml0ZXJpYS5cbiAxODQ6XHRcdCAgUmVxdWlyZWQgYnkgaXBfZ3JlIGFuZCBwcHRwIG1vZHVsZXMuXG4gMTg1Olx0XG4gMTg2Olx0Y29uZmlnIE5FVF9JUF9UVU5ORUxcbiAxODc6XHRcdHRyaXN0YXRlXG4gMTg4Olx0XHRzZWxlY3QgRFNUX0NBQ0hFXG4gMTg5Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4gMTkwOlx0XHRkZWZhdWx0IG5cbiAxOTE6XHRcbiAxOTI6XHRjb25maWcgTkVUX0lQR1JFXG4gMTkzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIHR1bm5lbHMgb3ZlciBJUFwmIzM0O1xuIDE5NDpcdFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcbiAxOTU6XHRcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG4gMTk2Olx0XHRoZWxwXG4gMTk3Olx0XHQgIFR1bm5lbGluZyBtZWFucyBlbmNhcHN1bGF0aW5nIGRhdGEgb2Ygb25lIHByb3RvY29sIHR5cGUgd2l0aGluXG4gMTk4Olx0XHQgIGFub3RoZXIgcHJvdG9jb2wgYW5kIHNlbmRpbmcgaXQgb3ZlciBhIGNoYW5uZWwgdGhhdCB1bmRlcnN0YW5kcyB0aGVcbiAxOTk6XHRcdCAgZW5jYXBzdWxhdGluZyBwcm90b2NvbC4gVGhpcyBwYXJ0aWN1bGFyIHR1bm5lbGluZyBkcml2ZXIgaW1wbGVtZW50c1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTUxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgcHB0cC5jIFBhY2tldCBSZWNlcHRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHJlYWxseSB1bmRlcnN0YW5kIGhvdyBQUFRQIHBhY2tldCByZWNlcHRpb24gaXMgaGFuZGxlZC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgaWRlbnRpZnkgdGhlIGtleSBlbnRyeSBwb2ludHMgd2l0aGluIGBwcHRwLmNgLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIHN0YXJ0IGJ5IGRpc3NlY3RpbmcgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgY29kZSBhbmQgbWFwIG91dCB0aGUgcGFja2V0IGhhbmRsaW5nIGxvZ2ljLiBJJiMzOTttIHByaW1hcmlseSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgdGhlIGRhdGFwYXRoIHdvcmtzLCBob3cgdGhlIHJlY2VpdmUgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYW5kIGhvdyB0aGUgcGFja2V0cyBtYWtlIHRoZWlyIHdheSB1cCB0aGUgbmV0d29ya2luZyBzdGFjay4gTG9va2luZyBhdCB0aGUgY29kZSBpcyB0aGUgb25seSB3YXkgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb24gYW55IG51YW5jZXMgaW4gdGhlIGltcGxlbWVudGF0aW9uLCBwYXJ0aWN1bGFybHkgZm9yIGVycm9yIGhhbmRsaW5nIG9yIG9wdGltaXphdGlvbiB0cmlja3MuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgd2lsbCBpbnZvbHZlIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBHUkUgcGFja2V0cyBhcmUgZGVtdWx0aXBsZXhlZCBhbmQsIHByZXN1bWFibHksIHBhc3NlZCB1cCB0byB0aGUgcmVsZXZhbnQgUFBQIGxheWVyLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaW5kIHRob3NlIGNydWNpYWwgZW50cnkgcG9pbnRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcHRwXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYz00Nz1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKGNoYW5fbG9jayk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0OTpzdGF0aWMgc3RydWN0IHByb3RvIHBwdHBfc2tfcHJvdG8gX19yZWFkX21vc3RseTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTA6c3RhdGljIGNvbnN0IHN0cnVjdCBwcHBfY2hhbm5lbF9vcHMgcHB0cF9jaGFuX29wcztcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTE6c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcHB0cF9vcHM7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUyLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz01Mz1zdGF0aWMgc3RydWN0IHBwcG94X3NvY2sgKmxvb2t1cF9jaGFuKHUxNiBjYWxsX2lkLCBfX2JlMzIgc19hZGRyKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTUtXHRzdHJ1Y3QgcHBwb3hfc29jayAqc29jaztcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTY6XHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTctXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz03Mj1zdGF0aWMgaW50IGxvb2t1cF9jaGFuX2RzdCh1MTYgY2FsbF9pZCwgX19iZTMyIGRfYWRkcilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTc0LVx0c3RydWN0IHBwcG94X3NvY2sgKnNvY2s7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjc1Olx0c3RydWN0IHBwdHBfb3B0ICpvcHQ7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTc2LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz05ND1zdGF0aWMgaW50IGFkZF9jaGFuKHN0cnVjdCBwcHBveF9zb2NrICpzb2NrLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo5NTpcdFx0ICAgIHN0cnVjdCBwcHRwX2FkZHIgKnNhKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy05Ni17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xMjQ9c3RhdGljIHZvaWQgZGVsX2NoYW4oc3RydWN0IHBwcG94X3NvY2sgKnNvY2spXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xMzEtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjEzMjpzdGF0aWMgc3RydWN0IHJ0YWJsZSAqcHB0cF9yb3V0ZV9vdXRwdXQoY29uc3Qgc3RydWN0IHBwcG94X3NvY2sgKnBvLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xMzMtXHRcdFx0XHRcdHN0cnVjdCBmbG93aTQgKmZsNClcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE0OC1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTQ5OnN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTUwLXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1My1cdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTU0Olx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcdTAwMjZwby1cdTAwM2Vwcm90by5wcHRwO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNTU6XHRzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICpoZHI7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1Ni1cdHVuc2lnbmVkIGludCBoZWFkZXJfbGVuID0gc2l6ZW9mKCpoZHIpO1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTY5LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNzA6XHRydCA9IHBwdHBfcm91dGVfb3V0cHV0KHBvLCBcdTAwMjZmbDQpO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNzEtXHRpZiAoSVNfRVJSKHJ0KSlcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTIxNi1cdHNrYl9wdXNoKHNrYiwgaGVhZGVyX2xlbik7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjIxNzpcdGhkciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cdTAwM2VkYXRhKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjE4LVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc1LVx0c3RydWN0IHBwcG94X3NvY2sgKnBvID0gcHBwb3hfc2soc2spO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzY6XHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdCA9IFx1MDAyNnBvLVx1MDAzZXByb3RvLnBwdHA7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Ny1cdGludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxO1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc5LVx0X191OCAqcGF5bG9hZDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjgwOlx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yODEtXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yODQtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI4NTpcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cdTAwM2VkYXRhKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjg2LVx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yOTMtXHRcdFx0Z290byBkcm9wO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyOTQ6XHRcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cdTAwM2VkYXRhKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjk1LVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzU4LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzozNTk6c3RhdGljIGludCBwcHRwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNjAte1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNjEtXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG87XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM2MjpcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzYzLVx0c3RydWN0IGlwaGRyICppcGg7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNzItXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM3MzpcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM3NC1cbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM5My1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Mzk0OnN0YXRpYyBpbnQgcHB0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1c2VydmFkZHIsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM5NS1cdFx0ICAgICBpbnQgc29ja2FkZHJfbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDI2LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0Mjc6c3RhdGljIGludCBwcHRwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDI4LVx0XHRcdGludCBzb2NrYWRkcl9sZW4sIGludCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQzMi1cdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDMzOlx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcdTAwMjZwby1cdTAwM2Vwcm90by5wcHRwO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00MzQtXHRzdHJ1Y3QgcnRhYmxlICpydDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2NS1cdHBvLVx1MDAzZWNoYW4ucHJpdmF0ZSA9IHNrO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NjY6XHRwby1cdTAwM2VjaGFuLm9wcyA9IFx1MDAyNnBwdHBfY2hhbl9vcHM7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDY4Olx0cnQgPSBwcHRwX3JvdXRlX291dHB1dChwbywgXHUwMDI2Zmw0KTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDY5LVx0aWYgKElTX0VSUihydCkpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ3OS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDgwOlx0cG8tXHUwMDNlY2hhbi5oZHJsZW4gPSAyICYjNDM7IHNpemVvZihzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDgxLVx0cG8tXHUwMDNlY2hhbi5kaXJlY3RfeG1pdCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00OTUtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ5NjpzdGF0aWMgaW50IHBwdHBfZ2V0bmFtZShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00OTctXHRpbnQgcGVlcilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUxMi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTEzOnN0YXRpYyBpbnQgcHB0cF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUxNC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDQtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU0NTpzdGF0aWMgdm9pZCBwcHRwX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDYte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTUzLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NTQ6c3RhdGljIGludCBwcHRwX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBrZXJuKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTUte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTU4LVx0c3RydWN0IHBwcG94X3NvY2sgKnBvO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NTk6XHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTYwLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NjE6XHRzayA9IHNrX2FsbG9jKG5ldCwgUEZfUFBQT1gsIEdGUF9LRVJORUwsIFx1MDAyNnBwdHBfc2tfcHJvdG8sIGtlcm4pO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjItXHRpZiAoIXNrKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTY3LVx0c29jay1cdTAwM2VzdGF0ZSA9IFNTX1VOQ09OTkVDVEVEO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1Njg6XHRzb2NrLVx1MDAzZW9wcyAgID0gXHUwMDI2cHB0cF9vcHM7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU2OS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTcwOlx0c2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzEtXHRzay1cdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzQtXHRzay1cdTAwM2Vza19wcm90b2NvbCAgICA9IFBYX1BST1RPX1BQVFA7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU3NTpcdHNrLVx1MDAzZXNrX2Rlc3RydWN0ICAgID0gcHB0cF9zb2NrX2Rlc3RydWN0O1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzYtXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01ODctXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU4ODpzdGF0aWMgaW50IHBwdHBfcHBwX2lvY3RsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgdW5zaWduZWQgaW50IGNtZCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTg5LVx0dW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01OTItXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU5MzpcdHN0cnVjdCBwcHRwX29wdCAqb3B0ID0gXHUwMDI2cG8tXHUwMDNlcHJvdG8ucHB0cDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTk0LVx0dm9pZCBfX3VzZXIgKmFyZ3AgPSAodm9pZCBfX3VzZXIgKilhcmc7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MTgtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYxOTpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcF9jaGFubmVsX29wcyBwcHRwX2NoYW5fb3BzID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjA6XHQuc3RhcnRfeG1pdCA9IHBwdHBfeG1pdCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjIxOlx0LmlvY3RsICAgICAgPSBwcHRwX3BwcF9pb2N0bCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjIyLX07XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYyMy1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjI0OnN0YXRpYyBzdHJ1Y3QgcHJvdG8gcHB0cF9za19wcm90byBfX3JlYWRfbW9zdGx5ID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MjUtXHQubmFtZSAgICAgPSBcJiMzNDtQUFRQXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjI5LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MzA6c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcHB0cF9vcHMgPSB7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzMS1cdC5mYW1pbHkgICAgID0gQUZfUFBQT1gsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzMi1cdC5vd25lciAgICAgID0gVEhJU19NT0RVTEUsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYzMzpcdC5yZWxlYXNlICAgID0gcHB0cF9yZWxlYXNlLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MzQ6XHQuYmluZCAgICAgICA9IHBwdHBfYmluZCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjM1Olx0LmNvbm5lY3QgICAgPSBwcHRwX2Nvbm5lY3QsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzNi1cdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MzctXHQuYWNjZXB0ICAgICA9IHNvY2tfbm9fYWNjZXB0LFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2Mzg6XHQuZ2V0bmFtZSAgICA9IHBwdHBfZ2V0bmFtZSxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjM5LVx0Lmxpc3RlbiAgICAgPSBzb2NrX25vX2xpc3Rlbixcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0OS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwb3hfcHJvdG8gcHBwb3hfcHB0cF9wcm90byA9IHtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjUxOlx0LmNyZWF0ZSA9IHBwdHBfY3JlYXRlLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NTItXHQub3duZXIgID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NTQtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY1NTpzdGF0aWMgY29uc3Qgc3RydWN0IGdyZV9wcm90b2NvbCBncmVfcHB0cF9wcm90b2NvbCA9IHtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjU2Olx0LmhhbmRsZXIgPSBwcHRwX3JjdixcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjU3LX07XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY1OC1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjU5OnN0YXRpYyBpbnQgX19pbml0IHBwdHBfaW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjYwLXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjY4Olx0ZXJyID0gZ3JlX2FkZF9wcm90b2NvbChcdTAwMjZncmVfcHB0cF9wcm90b2NvbCwgR1JFUFJPVE9fUFBUUCk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2OS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY3My1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njc0Olx0ZXJyID0gcHJvdG9fcmVnaXN0ZXIoXHUwMDI2cHB0cF9za19wcm90bywgMCk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY3NS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY3OS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjgwOlx0ZXJyID0gcmVnaXN0ZXJfcHBwb3hfcHJvdG8oUFhfUFJPVE9fUFBUUCwgXHUwMDI2cHBwb3hfcHB0cF9wcm90byk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4MS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4OC1vdXRfdW5yZWdpc3Rlcl9za19wcm90bzpcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njg5Olx0cHJvdG9fdW5yZWdpc3RlcihcdTAwMjZwcHRwX3NrX3Byb3RvKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjkwLW91dF9ncmVfZGVsX3Byb3RvY29sOlxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2OTE6XHRncmVfZGVsX3Byb3RvY29sKFx1MDAyNmdyZV9wcHRwX3Byb3RvY29sLCBHUkVQUk9UT19QUFRQKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjkyLW91dF9tZW1fZnJlZTpcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY5Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njk4OnN0YXRpYyB2b2lkIF9fZXhpdCBwcHRwX2V4aXRfbW9kdWxlKHZvaWQpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY5OS17XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTcwMC1cdHVucmVnaXN0ZXJfcHBwb3hfcHJvdG8oUFhfUFJPVE9fUFBUUCk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjcwMTpcdHByb3RvX3VucmVnaXN0ZXIoXHUwMDI2cHB0cF9za19wcm90byk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjcwMjpcdGdyZV9kZWxfcHJvdG9jb2woXHUwMDI2Z3JlX3BwdHBfcHJvdG9jb2wsIEdSRVBST1RPX1BQVFApO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy03MDMtXHR2ZnJlZShjYWxsaWRfc29jayk7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy03MDUtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjcwNjptb2R1bGVfaW5pdChwcHRwX2luaXRfbW9kdWxlKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NzA3Om1vZHVsZV9leGl0KHBwdHBfZXhpdF9tb2R1bGUpO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy03MDgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzQwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUFBUUCBHUkUgUGFja2V0IFJlY2VwdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyByaWdodCBub3cgaXMgb24gaG93IFBQVFAgdHJhZmZpYyBpcyBoYW5kbGVkIGF0IHRoZSBuZXR3b3JrIGxldmVsLCBzcGVjaWZpY2FsbHkgdGhlIHJlY2VwdGlvbiBvZiBHUkUgcGFja2V0cy4gRnJvbSB3aGF0IEkgdW5kZXJzdGFuZCwgdGhlIGZ1bmN0aW9uIGBwcHRwX3JjdmAgaXMgdGhlIGRlc2lnbmF0ZWQgaGFuZGxlciBmb3IgR1JFIHBhY2tldHMgZGVzaWduYXRlZCB3aXRoIGBHUkVQUk9UT19QUFRQYC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIHRoZSBnYXRla2VlcGVyIGZvciBQUFRQIHRyYWZmaWMgY29taW5nIGluIG92ZXIgR1JFLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHBwdHBfcmN2YCBuZWVkcyB0byBwcm9jZXNzIGluY29taW5nIEdSRSBwYWNrZXRzIGFuZCBkaXJlY3QgdGhlbSBhcHByb3ByaWF0ZWx5LCB3aGljaCBpdCBhY2NvbXBsaXNoZXMgYnkgZmluZGluZyB0aGUgcmVsZXZhbnQgc29ja2V0IGFuZCBwYXNzaW5nIHRoZSBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgdG8gYHNrX3JlY2VpdmVfc2tiYC4gVGhpcyBmdW5jdGlvbiB0aGVuIGxpa2VseSBpbnZva2VzIHRoZSBzb2NrZXQmIzM5O3MgYmFja2xvZyBoYW5kbGVyLiBUaGlzIHBhcnQgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCB0byBpbnZlc3RpZ2F0ZSBhcyBpdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgcGFja2V0cyBhcmUgcm91dGVkLiBgc2stJmd0O3NrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZWAgdGVsbHMgbWUgdGhhdCBgcHB0cF9yY3ZfY29yZWAgaXMgdGhlIGJhY2tsb2cgaGFuZGxlciBpbiB0aGlzIGNvbnRleHQuIE5vdyBJIHNob3VsZCBjaGVjayBleGFjdGx5IHdoYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBwcHRwX3JjdmAgZG9lcy4gSSB3aWxsIGNoZWNrIHBwdHAuYyBsaW5lcyAzNTgtMzkyIGFuZCBkaXNzZWN0IGl0cyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHB0cC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzU4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNTg6XHRcbiAzNTk6XHRzdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4gMzYwOlx0e1xuIDM2MTpcdFx0c3RydWN0IHBwcG94X3NvY2sgKnBvO1xuIDM2MjpcdFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuIDM2MzpcdFx0c3RydWN0IGlwaGRyICppcGg7XG4gMzY0Olx0XG4gMzY1Olx0XHRpZiAoc2tiLVx1MDAzZXBrdF90eXBlICE9IFBBQ0tFVF9IT1NUKVxuIDM2NjpcdFx0XHRnb3RvIGRyb3A7XG4gMzY3Olx0XG4gMzY4Olx0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCAxMikpXG4gMzY5Olx0XHRcdGdvdG8gZHJvcDtcbiAzNzA6XHRcbiAzNzE6XHRcdGlwaCA9IGlwX2hkcihza2IpO1xuIDM3MjpcdFxuIDM3MzpcdFx0aGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKilza2ItXHUwMDNlZGF0YTtcbiAzNzQ6XHRcbiAzNzU6XHRcdGlmIChoZWFkZXItXHUwMDNlZ3JlX2hkLnByb3RvY29sICE9IEdSRV9QUk9UT19QUFAgfHwgLyogUFBUUC1HUkUgcHJvdG9jb2wgZm9yIFBQVFAgKi9cbiAzNzY6XHRcdFx0R1JFX0lTX0NTVU0oaGVhZGVyLVx1MDAzZWdyZV9oZC5mbGFncykgfHwgICAgLyogZmxhZyBDU1VNIHNob3VsZCBiZSBjbGVhciAqL1xuIDM3NzpcdFx0XHRHUkVfSVNfUk9VVElORyhoZWFkZXItXHUwMDNlZ3JlX2hkLmZsYWdzKSB8fCAvKiBmbGFnIFJPVVRJTkcgc2hvdWxkIGJlIGNsZWFyICovXG4gMzc4Olx0XHRcdCFHUkVfSVNfS0VZKGhlYWRlci1cdTAwM2VncmVfaGQuZmxhZ3MpIHx8ICAgIC8qIGZsYWcgS0VZIHNob3VsZCBiZSBzZXQgKi9cbiAzNzk6XHRcdFx0KGhlYWRlci1cdTAwM2VncmVfaGQuZmxhZ3MgXHUwMDI2IEdSRV9GTEFHUykpICAgICAvKiBmbGFnIFJlY3Vyc2lvbiBDdHJsIHNob3VsZCBiZSBjbGVhciAqL1xuIDM4MDpcdFx0XHQvKiBpZiBpbnZhbGlkLCBkaXNjYXJkIHRoaXMgcGFja2V0ICovXG4gMzgxOlx0XHRcdGdvdG8gZHJvcDtcbiAzODI6XHRcbiAzODM6XHRcdHBvID0gbG9va3VwX2NoYW4obnRvaHMoaGVhZGVyLVx1MDAzZWNhbGxfaWQpLCBpcGgtXHUwMDNlc2FkZHIpO1xuIDM4NDpcdFx0aWYgKHBvKSB7XG4gMzg1Olx0XHRcdHNrYl9kc3RfZHJvcChza2IpO1xuIDM4NjpcdFx0XHRuZl9yZXNldF9jdChza2IpO1xuIDM4NzpcdFx0XHRyZXR1cm4gc2tfcmVjZWl2ZV9za2IoXHUwMDI2cG8tXHUwMDNlc2ssIHNrYiwgMCk7XG4gMzg4Olx0XHR9XG4gMzg5Olx0ZHJvcDpcbiAzOTA6XHRcdGtmcmVlX3NrYihza2IpO1xuIDM5MTpcdFx0cmV0dXJuIE5FVF9SWF9EUk9QO1xuIDM5MjpcdH1cbiAzOTM6XHRcbiAzOTQ6XHRzdGF0aWMgaW50IHBwdHBfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdXNlcnZhZGRyLFxuIDM5NTpcdFx0XHQgICAgIGludCBzb2NrYWRkcl9sZW4pXG4gMzk2Olx0e1xuIDM5NzpcdFx0c3RydWN0IHNvY2sgKnNrID0gc29jay1cdTAwM2VzaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzOTUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2MDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgUFBUUCBHUkUgSGFuZGxlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHBwdHBfcmN2X2NvcmVgLCBhbmQgaXQmIzM5O3MgZ290IG15IGF0dGVudGlvbi4gSXQmIzM5O3MgYSBmaXggcmVsYXRlZCB0byBwYWNrZXQgbGVuZ3RoIGFuZCBgcHNrYl9tYXlfcHVsbGAgY2hlY2tzIHdoZW4gdGhlIGtlcm5lbCBpcyBwcm9jZXNzaW5nIHJlY2VpdmVkIFBQVFAgR1JFIHBhY2tldHMuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGUgY2hlY2sgbm93IGVuc3VyZXMgdGhhdCB0aGUgcGF5bG9hZCBhdmFpbGFiaWxpdHkgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHJlcXVpcmVkLCBtZWFuaW5nIGBwYXlsb2FkX2F2YWlsICZndDs9IFBQUF9IRFJMRU4gJiM0MzsgMWAgYW5kIGBwYXlsb2FkX2F2YWlsICZndDs9IDJgIGFyZSBtZXQgYmVmb3JlIHRoZSBjb2RlIGFjY2Vzc2VzIHRoZSBwYXlsb2FkL2RhdGEuIFRoaXMgc291bmRzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBwYWNrZXQgcGFyc2luZyBsb2dpYyBhbmQgYm91bmRzIGNoZWNraW5nLCB3aGljaCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCkdpdmVuIHRoYXQgUFBUUCBzb2NrZXRzIGFyZSBzdGFuZGFyZCBuZXR3b3JrIHNvY2tldHMgYW5kIGFyZSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgdmlhIHN0YW5kYXJkIHNvY2tldCBzeXN0ZW0gY2FsbHMgKHRoaW5rIGBzb2NrZXQoQUZfUFBQT1gsIC4uLiwgUFhfUFJPVE9fUFBUUClgKSwgcmVjZWl2aW5nIEdSRSBwYWNrZXRzIChlLmcuLCBvdmVyIGxvb3BiYWNrIG9yIGEgbmV0bnMpLCB0aGlzIHNlZW1zIGxpa2UgYSBzb2xpZCBvcHBvcnR1bml0eS4gVGhlIGZhY3QgdGhhdCB0aGUgdnVsbmVyYWJpbGl0eSBpcyBpbiB0aGUgY29yZSBuZXR3b3JrIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIFBQUCBhbmQgUFBUUCwgZnVydGhlciBzdHJlbmd0aGVucyB0aGUgY2FzZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0IGZ1bmN0aW9ucyB0byBmb2N1cyBvbi4gT2J2aW91c2x5LCBgcHB0cF9yY3ZfY29yZWAgaXMgYSBrZXkgY2FuZGlkYXRlLiBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGBwcHRwX3JjdmAsIHNpbmNlIGl0IHNlZW1zIGxpa2UgYHBwdHBfcmN2X2NvcmVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVpbmcgdXNlZCBieSBgcHB0cF9yY3ZgLiBPdGhlciBpbnRlcmVzdGluZyBmdW5jdGlvbnMgdG8gaW5jbHVkZSBpbiB0aGUgZnV6emluZyBmb2N1cyBjb3VsZCBiZSBgcHB0cF9jb25uZWN0YCwgYHBwdHBfYmluZGAsIGBwcHRwX2NyZWF0ZWAsIGFuZCBgcHB0cF94bWl0YC4gSSYjMzk7bGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBpZiB0aGV5JiMzOTtyZSBzdGF0aWMsIGlubGluZWQsIG9yIGlmIEkgc2hvdWxkIGp1c3QgaW5jbHVkZSB0aGVtIGFsbCBmb3Igbm93LiBJIGtub3cgdGhhdCBgcHB0cF9yY3ZfY29yZWAgaXMgc3RhdGljLCBidXQgdGhlIGFkZHJlc3MgaXMgdGFrZW4gYnkgdGhlIGBzay0mZ3Q7c2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO2AgYXNzaWdubWVudC4gU2ltaWxhcmx5LCBgcHB0cF9yY3ZgIGlzIHN0YXRpYywgd2l0aCBpdHMgYWRkcmVzcyBiZWluZyB1c2VkIGJ5IGBncmVfcHB0cF9wcm90b2NvbC5oYW5kbGVyID0gcHB0cF9yY3ZgLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgc3ltYm9scyBkZWZpbmVkIGluIGBwcHRwLmNgIHRvby4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBJdCBsb29rcyBsaWtlIGBQUFRQYCBkZXBlbmRzIG9uIGBORVRfSVBHUkVfREVNVVhgIGFuZCBzZWxlY3RzIGBQUFBPWGAuIGBORVRfSVBHUkVfREVNVVhgIGl0c2VsZiBpcyBpbiB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGFuZCBpcyBhbHNvIHRyaXN0YXRlLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhlIGJhc2UgYFBQUGAgc3Vic3lzdGVtIGl0c2VsZiAoYENPTkZJR19QUFBgKSBpcyBlbmFibGVkLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ2AgZmlsZSB0byBzZWUgd2hhdCBtZW51cyBhbmQgZGVwZW5kZW5jaWVzIHRoZXJlIGFyZSBhcyB3ZWxsLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgYnVpbGQgcmVxdWlyZW1lbnRzIGZvciBzdWNjZXNzZnVsIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgUFBQfGlmIFBQUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvS2NvbmZpZz02PWNvbmZpZyBQUFBcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjM1OmlmIFBQUFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMzYtXG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTUzPWNvbmZpZyBQUFBPRV9IQVNIX0JJVFNcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE1NC1cdGludFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTU1Olx0ZGVmYXVsdCAxIGlmIFBQUE9FX0hBU0hfQklUU18xXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNTY6XHRkZWZhdWx0IDIgaWYgUFBQT0VfSEFTSF9CSVRTXzJcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE1NzpcdGRlZmF1bHQgNCBpZiBQUFBPRV9IQVNIX0JJVFNfNFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTU4Olx0ZGVmYXVsdCA4IGlmIFBQUE9FX0hBU0hfQklUU184XG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTktXHRkZWZhdWx0IDRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4NjgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgS2VybmVsJiMzOTtzIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIFBQUCAoUG9pbnQtdG8tUG9pbnQgUHJvdG9jb2wpIGRyaXZlcnMgYXJlIGluY29ycG9yYXRlZCBpbnRvIHRoaXMga2VybmVsIGJ1aWxkLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydC4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIGRlcGVuZGVuY3kgb3IgaW5jbHVzaW9uIGxvZ2ljIGZvciB0aGUgUFBQLXJlbGF0ZWQgb3B0aW9ucy4gVGhpcyBmaWxlIGxpa2VseSBjb250cm9scyB0aGUgdmlzaWJpbGl0eSBhbmQgY29uZmlndXJhYmlsaXR5IG9mIHRoZSBQUFAgZHJpdmVycyBkdXJpbmcgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHByb2Nlc3MuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgb3IgYSBtZW51IGVudHJ5IHRoYXQgcG9pbnRzIG1lIHRvIHdoZXJlIHRoZSBQUFAgY29uZmlndXJhdGlvbiBlbGVtZW50cyBhcmUgZGVmaW5lZCwgaWYgbm90IGRlZmluZWQgZGlyZWN0bHkgd2l0aGluIHRoaXMgYEtjb25maWdgIGZpbGUgaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcHAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTMwMiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvS2NvbmZpZz01MjY9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3BsaXAvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy01MjctXG5kcml2ZXJzL25ldC9LY29uZmlnOjUyODpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctNTI5LVxuLS1cbmRyaXZlcnMvbmV0L01ha2VmaWxlPTU3PW9iai0kKENPTkZJR19QTElQKSAmIzQzOz0gcGxpcC9cbmRyaXZlcnMvbmV0L01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19QUFApICYjNDM7PSBwcHAvXG5kcml2ZXJzL25ldC9NYWtlZmlsZTo1OTpvYmotJChDT05GSUdfUFBQX0FTWU5DKSAmIzQzOz0gcHBwL1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX1BQUF9CU0RDT01QKSAmIzQzOz0gcHBwL1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX1BQUF9ERUZMQVRFKSAmIzQzOz0gcHBwL1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjI6b2JqLSQoQ09ORklHX1BQUF9NUFBFKSAmIzQzOz0gcHBwL1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX1BQUF9TWU5DX1RUWSkgJiM0Mzs9IHBwcC9cbmRyaXZlcnMvbmV0L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19QUFBPRSkgJiM0Mzs9IHBwcC9cbmRyaXZlcnMvbmV0L01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19QUFBPTDJUUCkgJiM0Mzs9IHBwcC9cbmRyaXZlcnMvbmV0L01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19QUFRQKSAmIzQzOz0gcHBwL1xuZHJpdmVycy9uZXQvTWFrZWZpbGUtNjctb2JqLSQoQ09ORklHX1NMSVApICYjNDM7PSBzbGlwL1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zODU3PXl0OTIxeF9kc2FfcG9ydF9zZXRfZGVmYXVsdF9wcmlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHU4IHByaW8pXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4NzUtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzg3NjpzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGFwcHByaW9zX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4Nzcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zODgyPXl0OTIxeF9kc2FfcG9ydF9nZXRfYXBwdHJ1c3Qoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdTggKnNlbCxcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzg4NS1cdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozODg2Olx0dTggYXBwcHJpb3NbMl1bMl0gPSB7fTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zODg3LVx0aW50IG5zZWw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4OTctXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzg5ODpcdGFwcHByaW9zWzBdWzBdID0gSUVFRV84MDIxUUFaX0FQUF9TRUxfRFNDUDtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozODk5Olx0YXBwcHJpb3NbMF1bMV0gPSAodmFsIFx1MDAzZVx1MDAzZSAoMyAqIFlUOTIxWF9BUFBfU0VMX0RTQ1ApKSBcdTAwMjYgNztcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozOTAwOlx0YXBwcHJpb3NbMV1bMF0gPSBEQ0JfQVBQX1NFTF9QQ1A7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzkwMTpcdGFwcHByaW9zWzFdWzFdID0gKHZhbCBcdTAwM2VcdTAwM2UgKDMgKiBZVDkyMVhfQVBQX1NFTF9DVkxBTl9QQ1ApKSBcdTAwMjYgNztcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozOTAyOlx0c29ydChhcHBwcmlvcywgQVJSQVlfU0laRShhcHBwcmlvcyksIHNpemVvZihhcHBwcmlvc1swXSksIGFwcHByaW9zX2NtcCxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zOTAzLVx0ICAgICBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzkwNS1cdG5zZWwgPSAwO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM5MDY6XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShhcHBwcmlvcykgXHUwMDI2XHUwMDI2IGFwcHByaW9zW2ldWzFdOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM5MDc6XHRcdHNlbFtuc2VsXSA9IGFwcHByaW9zW2ldWzBdO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM5MDgtXHRcdG5zZWwmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQtI2luY2x1ZGUgXHUwMDNjbmV0L3BrdF9jbHMuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTojaW5jbHVkZSBcdTAwM2N1YXBpL2xpbnV4L3BwcF9kZWZzLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD0zMTM9c3RydWN0IGFpcm9oYV9mb2VfbWFjX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgtMzE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaDozMTY6XHR1MTYgcHBwb2VfaWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oLTMxNy1cdHUxNiBzcmNfbWFjX2xvO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmg9NDczPXN0cnVjdCBhaXJvaGFfZmxvd19kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oLTUwMC1cdFx0dTggbnVtO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaDo1MDE6XHR9IHBwcG9lO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaC01MDItfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTM0Mj1zdGF0aWMgaW50IGFpcm9oYV9wcGVfZm9lX2VudHJ5X3ByZXBhcmUoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTM1OS1cdCAgICAgIEZJRUxEX1BSRVAoQUlST0hBX0ZPRV9JQjFfQklORF9WUE0sIGRhdGEtXHUwMDNldmxhbi5udW0pIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MzYwOlx0ICAgICAgRklFTERfUFJFUChBSVJPSEFfRk9FX0lCMV9CSU5EX1BQUE9FLCBkYXRhLVx1MDAzZXBwcG9lLm51bSkgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0zNjEtXHQgICAgICBBSVJPSEFfRk9FX0lCMV9CSU5EX1RUTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTQ1NS1cdFx0bWFjX2luZm8gPSAoc3RydWN0IGFpcm9oYV9mb2VfbWFjX2luZm8gKilsMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6NDU2Olx0XHRtYWNfaW5mby1cdTAwM2VwcHBvZV9pZCA9IGRhdGEtXHUwMDNlcHBwb2Uuc2lkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy00NTctXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDU5LVx0XHRcdFx0IEZJRUxEX1BSRVAoQUlST0hBX0ZPRV9NQUNfUFBQT0VfSUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjQ2MDpcdFx0XHRcdFx0ICAgIGRhdGEtXHUwMDNlcHBwb2Uuc2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDYxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDczLVx0XHRsMi1cdTAwM2VldHlwZSB8PSAhZGF0YS1cdTAwM2V2bGFuLm51bSA/IEJJVCgxNSkgOiAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzo0NzQ6XHR9IGVsc2UgaWYgKGRhdGEtXHUwMDNlcHBwb2UubnVtKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTQ3NS1cdFx0bDItXHUwMDNlZXR5cGUgPSBFVEhfUF9QUFBfU0VTO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MTA4OD1zdGF0aWMgaW50IGFpcm9oYV9wcGVfZmxvd19vZmZsb2FkX3JlcGxhY2Uoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTExNzctXHRcdGNhc2UgRkxPV19BQ1RJT05fUFBQT0VfUFVTSDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTE3ODpcdFx0XHRpZiAoZGF0YS5wcHBvZS5udW0gPT0gMSB8fCBkYXRhLnZsYW4ubnVtID09IDIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTExNzktXHRcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTExODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjExODE6XHRcdFx0ZGF0YS5wcHBvZS5zaWQgPSBhY3QtXHUwMDNlcHBwb2Uuc2lkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxMTgyOlx0XHRcdGRhdGEucHBwb2UubnVtJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTE4My1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM9MTkxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtX3N5c3BvcnRfc3RhdHMgYmNtX3N5c3BvcnRfZ3N0cmluZ3Nfc3RhdHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjI5LVx0U1RBVF9NSUJfUlgoXCYjMzQ7cnhfdW5pY2FzdFwmIzM0OywgbWliLnJ4LnVjKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYzoyMzA6XHRTVEFUX01JQl9SWChcJiMzNDtyeF9wcHBcJiMzNDssIG1pYi5yeC5wcHApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTIzMS1cdFNUQVRfTUlCX1JYKFwmIzM0O3J4X2NyY1wmIzM0OywgbWliLnJ4LnJjcmMpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuaD01MTE9c3RydWN0IGJjbV9zeXNwb3J0X3J4X2NvdW50ZXJzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmgtNTI5LVx0dTMyXHR1YztcdFx0LyogUk8gIyBvZiB1bmljYXN0IHBrdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oOjUzMDpcdHUzMlx0cHBwO1x0XHQvKiBSTyAjIG9mIFBQUCBwa3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuaC01MzEtXHR1MzJcdHJjcmM7XHRcdC8qIFJPICgweDQ3MCksIyBvZiBDUkMgbWF0Y2ggcGt0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jPTIxMTg9c3RhdGljIHZvaWQgYm54MnhfdXBkYXRlX3BmY19uaWcoc3RydWN0IGxpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jLTIxMjEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jOjIxMjI6XHR1MzIgeGNtX21hc2sgPSAwLCBwcHBfZW5hYmxlID0gMCwgcGF1c2VfZW5hYmxlID0gMCwgbGxmY19vdXRfZW4gPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jLTIxMjMtXHR1MzIgbGxmY19lbmFibGUgPSAwLCB4Y21fb3V0X2VuID0gMCwgaHdwZmNfZW5hYmxlID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMtMjE0NS1cdFx0aWYgKENISVBfSVNfRTMoYnApKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jOjIxNDY6XHRcdFx0cHBwX2VuYWJsZSA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMtMjE0Ny1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jOjIxNDg6XHRcdFx0cHBwX2VuYWJsZSA9IDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMtMjE0OS1cdFx0eGNtX21hc2sgXHUwMDI2PSB+KHBvcnQgPyBOSUdfTExIMV9YQ01fTUFTS19SRUdfTExIMV9YQ01fTUFTS19CQ04gOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYy0yMTc2LVx0UkVHX1dSKGJwLCBwb3J0ID8gTklHX1JFR19QUFBfRU5BQkxFXzEgOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jOjIxNzc6XHQgICAgICAgTklHX1JFR19QUFBfRU5BQkxFXzAsIHBwcF9lbmFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jLTIxNzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmg9ODcxPWV4dGVybiBjb25zdCB1MzIgZG1hZV9yZWdfZ29fY1tdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oLTIwNjItI2RlZmluZSBOSUdfUkVHX0xFRF9NT0RFX1AwXHRcdFx0XHRcdCAweDEwMmYwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaDoyMDYzOi8qIFtSVyAzXSBmb3IgcG9ydDAgZW5hYmxlIGZvciBsbGZjIHBwcCBhbmQgcGF1c2UuIGIwIC0gYnJiMSBlbmFibGU7IGIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmgtMjA2NC0gICB0c2RtIGVuYWJsZTsgYjItIHVzZG0gZW5hYmxlICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmgtMjA2Ny0vKiBbUlcgMV0gU0FGQyBlbmFibGUgZm9yIHBvcnQwLiBUaGlzIHJlZ2lzdGVyIG1heSBnZXQgMSBvbmx5IHdoZW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oOjIwNjg6ICAgfnBwcF9lbmFibGUucHBwX2VuYWJsZSA9IDAgYW5kIHBhdXNlX2VuYWJsZS5wYXVzZV9lbmFibGUgPTAgZm9yIHRoZSBzYW1lXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaC0yMDY5LSAgIHBvcnQgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaC0yNjQwLS8qIFtSVyAxXSBQYXVzZSBlbmFibGUgZm9yIHBvcnQwLiBUaGlzIHJlZ2lzdGVyIG1heSBnZXQgMSBvbmx5IHdoZW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oOjI2NDE6ICAgfnNhZmNfZW5hYmxlLnNhZmNfZW5hYmxlID0gMCBhbmQgcHBwX2VuYWJsZS5wcHBfZW5hYmxlID0wIGZvciB0aGUgc2FtZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmgtMjY0Mi0gICBwb3J0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYz0xMDczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtZ2VuZXRfc3RhdHMgYmNtZ2VuZXRfZ3N0cmluZ3Nfc3RhdHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jLTExMTYtXHRTVEFUX0dFTkVUX01JQl9SWChcJiMzNDtyeF91bmljYXN0XCYjMzQ7LCBtaWIucngudWMpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYzoxMTE3Olx0U1RBVF9HRU5FVF9NSUJfUlgoXCYjMzQ7cnhfcHBwXCYjMzQ7LCBtaWIucngucHBwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMtMTExOC1cdFNUQVRfR0VORVRfTUlCX1JYKFwmIzM0O3J4X2NyY1wmIzM0OywgbWliLnJ4LnJjcmMpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0Lmg9OTU9c3RydWN0IGJjbWdlbmV0X3J4X2NvdW50ZXJzIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5oLTExMy1cdHUzMlx0dWM7XHRcdC8qIFJPICMgb2YgdW5pY2FzdCBwa3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0Lmg6MTE0Olx0dTMyXHRwcHA7XHRcdC8qIFJPICMgb2YgUFBQIHBrdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuaC0xMTUtXHR1MzJcdHJjcmM7XHRcdC8qIFJPICgweDQ3MCksIyBvZiBDUkMgbWF0Y2ggcGt0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oPTIwNT1zdHJ1Y3QgcG9ydF9zdGF0cyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oLTIyMi1cdHU2NCB0eF9wYXVzZTsgICAgICAgICAgICAgLyogIyBvZiB0cmFuc21pdHRlZCBwYXVzZSBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjM6XHR1NjQgdHhfcHBwMDsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gMCBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjQ6XHR1NjQgdHhfcHBwMTsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gMSBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjU6XHR1NjQgdHhfcHBwMjsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gMiBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjY6XHR1NjQgdHhfcHBwMzsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gMyBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjc6XHR1NjQgdHhfcHBwNDsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gNCBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjg6XHR1NjQgdHhfcHBwNTsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gNSBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjk6XHR1NjQgdHhfcHBwNjsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gNiBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMzA6XHR1NjQgdHhfcHBwNzsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gNyBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaC0yMzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oLTI1Mi1cdHU2NCByeF9wYXVzZTsgICAgICAgICAgICAgLyogIyBvZiByZWNlaXZlZCBwYXVzZSBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTM6XHR1NjQgcnhfcHBwMDsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gMCBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTQ6XHR1NjQgcnhfcHBwMTsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gMSBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTU6XHR1NjQgcnhfcHBwMjsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gMiBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTY6XHR1NjQgcnhfcHBwMzsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gMyBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTc6XHR1NjQgcnhfcHBwNDsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gNCBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTg6XHR1NjQgcnhfcHBwNTsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gNSBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTk6XHR1NjQgcnhfcHBwNjsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gNiBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNjA6XHR1NjQgcnhfcHBwNzsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gNyBmcmFtZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaC0yNjEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM9NDU9c3RhdGljIGNvbnN0IGNoYXIgc3RhdHNfc3RyaW5nc1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmMtNjItXHRcJiMzNDt0eF9wYXVzZV9mcmFtZXMgICAgICAgIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjYzOlx0XCYjMzQ7dHhfcHBwMF9mcmFtZXMgICAgICAgICBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo2NDpcdFwmIzM0O3R4X3BwcDFfZnJhbWVzICAgICAgICAgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6NjU6XHRcJiMzNDt0eF9wcHAyX2ZyYW1lcyAgICAgICAgIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjY2Olx0XCYjMzQ7dHhfcHBwM19mcmFtZXMgICAgICAgICBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo2NzpcdFwmIzM0O3R4X3BwcDRfZnJhbWVzICAgICAgICAgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6Njg6XHRcJiMzNDt0eF9wcHA1X2ZyYW1lcyAgICAgICAgIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjY5Olx0XCYjMzQ7dHhfcHBwNl9mcmFtZXMgICAgICAgICBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo3MDpcdFwmIzM0O3R4X3BwcDdfZnJhbWVzICAgICAgICAgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmMtNzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmMtOTMtXHRcJiMzNDtyeF9wYXVzZV9mcmFtZXMgICAgICAgIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjk0Olx0XCYjMzQ7cnhfcHBwMF9mcmFtZXMgICAgICAgICBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo5NTpcdFwmIzM0O3J4X3BwcDFfZnJhbWVzICAgICAgICAgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6OTY6XHRcJiMzNDtyeF9wcHAyX2ZyYW1lcyAgICAgICAgIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjk3Olx0XCYjMzQ7cnhfcHBwM19mcmFtZXMgICAgICAgICBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo5ODpcdFwmIzM0O3J4X3BwcDRfZnJhbWVzICAgICAgICAgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6OTk6XHRcJiMzNDtyeF9wcHA1X2ZyYW1lcyAgICAgICAgIFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjEwMDpcdFwmIzM0O3J4X3BwcDZfZnJhbWVzICAgICAgICAgXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6MTAxOlx0XCYjMzQ7cnhfcHBwN19mcmFtZXMgICAgICAgICBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYy0xMDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jPTYzNDU9dm9pZCB0NF9nZXRfcG9ydF9zdGF0cyhzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgaW50IGlkeCwgc3RydWN0IHBvcnRfc3RhdHMgKnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NF9ody5jLTYzNzAtXHRwLVx1MDAzZXR4X3BhdXNlICAgICAgICAgICAgPSBHRVRfU1RBVChUWF9QT1JUX1BBVVNFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2MzcxOlx0cC1cdTAwM2V0eF9wcHAwICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2MzcyOlx0cC1cdTAwM2V0eF9wcHAxICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2MzczOlx0cC1cdTAwM2V0eF9wcHAyICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2Mzc0Olx0cC1cdTAwM2V0eF9wcHAzICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2Mzc1Olx0cC1cdTAwM2V0eF9wcHA0ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2Mzc2Olx0cC1cdTAwM2V0eF9wcHA1ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2Mzc3Olx0cC1cdTAwM2V0eF9wcHA2ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYzo2Mzc4Olx0cC1cdTAwM2V0eF9wcHA3ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02Mzc5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02NDA0LVx0cC1cdTAwM2VyeF9wYXVzZSAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QQVVTRSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwNTpcdHAtXHUwMDNlcnhfcHBwMCAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwNjpcdHAtXHUwMDNlcnhfcHBwMSAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwNzpcdHAtXHUwMDNlcnhfcHBwMiAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQMik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwODpcdHAtXHUwMDNlcnhfcHBwMyAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQMyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwOTpcdHAtXHUwMDNlcnhfcHBwNCAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQxMDpcdHAtXHUwMDNlcnhfcHBwNSAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQNSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQxMTpcdHAtXHUwMDNlcnhfcHBwNiAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQNik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQxMjpcdHAtXHUwMDNlcnhfcHBwNyAgICAgICAgICAgICA9IEdFVF9TVEFUKFJYX1BPUlRfUFBQNyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtNjQxMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmg9MzIxMD1zdHJ1Y3QgZndfcG9ydF9zdGF0c19jbWQge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaC0zMjQxLVx0XHRcdF9fYmU2NCB0eF9wYXVzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjQyOlx0XHRcdF9fYmU2NCB0eF9wcHAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDM6XHRcdFx0X19iZTY0IHR4X3BwcDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmg6MzI0NDpcdFx0XHRfX2JlNjQgdHhfcHBwMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjQ1Olx0XHRcdF9fYmU2NCB0eF9wcHAzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDY6XHRcdFx0X19iZTY0IHR4X3BwcDQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmg6MzI0NzpcdFx0XHRfX2JlNjQgdHhfcHBwNTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjQ4Olx0XHRcdF9fYmU2NCB0eF9wcHA2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDk6XHRcdFx0X19iZTY0IHR4X3BwcDc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmgtMzI1MC1cdFx0XHRfX2JlNjQgcnhfYnl0ZXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oLTMyNjctXHRcdFx0X19iZTY0IHJ4X3BhdXNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNjg6XHRcdFx0X19iZTY0IHJ4X3BwcDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmg6MzI2OTpcdFx0XHRfX2JlNjQgcnhfcHBwMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjcwOlx0XHRcdF9fYmU2NCByeF9wcHAyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNzE6XHRcdFx0X19iZTY0IHJ4X3BwcDM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmg6MzI3MjpcdFx0XHRfX2JlNjQgcnhfcHBwNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjczOlx0XHRcdF9fYmU2NCByeF9wcHA1O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNzQ6XHRcdFx0X19iZTY0IHJ4X3BwcDY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmg6MzI3NTpcdFx0XHRfX2JlNjQgcnhfcHBwNztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaC0zMjc2LVx0XHRcdF9fYmU2NCByeF9sZXNzXzY0Yjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmg9MjEzPXN0cnVjdCBkcGFhMl9mYXByIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtMjM2LVx0dTggbXBsc19vZmZzZXRfMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaDoyMzc6XHR1OCBwcHBvZV9vZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItZXRoLmgtMjM4LVx0LyogNjQtYml0IHdvcmQgNSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uaD0xMTQ9c3RydWN0IGZtYW5fcHJzX3Jlc3VsdCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5oLTEzNC1cdHU4IGV0eXBlX29mZjtcdFx0LyogRVRZUEUgb2Zmc2V0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmg6MTM1Olx0dTggcHBwb2Vfb2ZmO1x0XHQvKiBQUFAgb2Zmc2V0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmgtMTM2LVx0dTggbXBsc19vZmZbMl07XHRcdC8qIE1QTFMgb2Zmc2V0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC5oPTc0PXN0cnVjdCBmc19vcHMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQuaC05Ny0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQuaDo5ODojZGVmaW5lIE1BWF9NVFUgMTUwOFx0XHQvKiBBbGxvdyBmdWxsc2l6ZWQgcHBwb2UgcGFja2V0cyBvdmVyIFZMQU4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQuaC05OS0jZGVmaW5lIE1JTl9NVFUgNDZcdFx0LyogdGhpcyBpcyBkYXRhIHNpemUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2RlYnVnZnMuYz00Nz1zdGF0aWMgc3RydWN0IGhuczNfZGJnX2NtZF9pbmZvIGhuczNfZGJnX2NtZFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZGVidWdmcy5jLTIyMi1cdHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNfZGVidWdmcy5jOjIyMzpcdFx0Lm5hbWUgPSBcJiMzNDtwcHBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2RlYnVnZnMuYy0yMjQtXHRcdC5jbWQgPSBITkFFM19EQkdfQ01EX1JFR19QUFAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYz0zOTA9c3RhdGljIGNvbnN0IHN0cnVjdCBoY2xnZV9kYmdfZGZ4X21lc3NhZ2UgaGNsZ2VfZGJnX3J0Y19yZWdbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jLTQxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM6NDIwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaGNsZ2VfZGJnX2RmeF9tZXNzYWdlIGhjbGdlX2RiZ19wcHBfcmVnW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jLTQyMS1cdHtmYWxzZSwgXCYjMzQ7UmVzZXJ2ZWRcJiMzNDt9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM9NjY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGNsZ2VfZGJnX3JlZ190eXBlX2luZm8gaGNsZ2VfZGJnX3JlZ19pbmZvW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy03MTAtXHR7IC5jbWQgPSBITkFFM19EQkdfQ01EX1JFR19QUFAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jOjcxMTpcdCAgLmRmeF9tc2cgPSBcdTAwMjZoY2xnZV9kYmdfcHBwX3JlZ1swXSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM6NzEyOlx0ICAucmVnX21zZyA9IHsgLm1zZ19udW0gPSBBUlJBWV9TSVpFKGhjbGdlX2RiZ19wcHBfcmVnKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmMtNzEzLVx0XHQgICAgICAgLm9mZnNldCA9IEhDTEdFX0RCR19ERlhfUFBQX09GRlNFVCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jPTEyNDk9c3RhdGljIGludCBoY2xnZV9kYmdfZHVtcF9ydGNfcmVnX2NtZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy0xMjUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYzoxMjU0OnN0YXRpYyBpbnQgaGNsZ2VfZGJnX2R1bXBfcHBwX3JlZ19jbWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy0xMjU1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jPTI5Mzg9c3RhdGljIGNvbnN0IHN0cnVjdCBoY2xnZV9kYmdfZnVuYyBoY2xnZV9kYmdfY21kX2Z1bmNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jLTMwNDQtXHRcdC5jbWQgPSBITkFFM19EQkdfQ01EX1JFR19QUFAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jOjMwNDU6XHRcdC5kYmdfcmVhZF9mdW5jID0gaGNsZ2VfZGJnX2R1bXBfcHBwX3JlZ19jbWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jLTMwNDYtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYz0yMDg9c3RhdGljIGNvbnN0IHN0cnVjdCBoY2xnZV9od19lcnJvciBoY2xnZV9uY3NpX2Vycl9pbnRbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMjE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjIxODpzdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2Vycm9yIGhjbGdlX3BwcF9tcGZfYWJub3JtYWxfaW50X3N0MVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTIxOS1cdHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMzQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjM0ODpzdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2Vycm9yIGhjbGdlX3BwcF9wZl9hYm5vcm1hbF9pbnRbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0zNDktXHR7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTM2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYzozNjI6c3RhdGljIGNvbnN0IHN0cnVjdCBoY2xnZV9od19lcnJvciBoY2xnZV9wcHBfbXBmX2Fibm9ybWFsX2ludF9zdDNbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0zNjMtXHR7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jPTg0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2Vycm9yIGhjbGdlX3NzdV9jb21fZXJyX2ludFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NTItXHRcdC5pbnRfbXNrID0gQklUKDEpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjg1MzpcdFx0Lm1zZyA9IFwmIzM0O3BwcF9tYl9udW1fZXJyXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTg1NC1cdFx0LnJlc2V0X2xldmVsID0gSE5BRTNfTk9ORV9SRVNFVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NTYtXHRcdC5pbnRfbXNrID0gQklUKDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjg1NzpcdFx0Lm1zZyA9IFwmIzM0O3BwcF9tYmlkX2VyclwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NTgtXHRcdC5yZXNldF9sZXZlbCA9IEhOQUUzX0dMT0JBTF9SRVNFVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NjAtXHRcdC5pbnRfbXNrID0gQklUKDMpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjg2MTpcdFx0Lm1zZyA9IFwmIzM0O3BwcF9ybHRfbWFjX2VyclwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NjItXHRcdC5yZXNldF9sZXZlbCA9IEhOQUUzX0dMT0JBTF9SRVNFVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NjQtXHRcdC5pbnRfbXNrID0gQklUKDQpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjg2NTpcdFx0Lm1zZyA9IFwmIzM0O3BwcF9ybHRfaG9zdF9lcnJcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtODY2LVx0XHQucmVzZXRfbGV2ZWwgPSBITkFFM19HTE9CQUxfUkVTRVRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM9MTg3OT1zdGF0aWMgaW50IGhjbGdlX2NvbmZpZ19pZ3VfZWd1X2h3X2Vycl9pbnQoc3RydWN0IGhjbGdlX2RldiAqaGRldiwgYm9vbCBlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTkxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYzoxOTE4OnN0YXRpYyBpbnQgaGNsZ2VfY29uZmlnX3BwcF9lcnJvcl9pbnRlcnJ1cHQoc3RydWN0IGhjbGdlX2RldiAqaGRldiwgdTMyIGNtZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0xOTE5LVx0XHRcdFx0XHQgICAgYm9vbCBlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYzoxOTY3OnN0YXRpYyBpbnQgaGNsZ2VfY29uZmlnX3BwcF9od19lcnJfaW50KHN0cnVjdCBoY2xnZV9kZXYgKmhkZXYsIGJvb2wgZW4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk2OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTE5NzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MTk3MTpcdHJldCA9IGhjbGdlX2NvbmZpZ19wcHBfZXJyb3JfaW50ZXJydXB0KGhkZXYsIEhDTEdFX1BQUF9DTUQwX0lOVF9DTUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk3Mi1cdFx0XHRcdFx0ICAgICAgIGVuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYzoxOTc2Olx0cmV0ID0gaGNsZ2VfY29uZmlnX3BwcF9lcnJvcl9pbnRlcnJ1cHQoaGRldiwgSENMR0VfUFBQX0NNRDFfSU5UX0NNRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0xOTc3LVx0XHRcdFx0XHQgICAgICAgZW4pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYz0yMjUwPXN0YXRpYyBpbnQgaGNsZ2VfaGFuZGxlX21wZl9yYXNfZXJyb3Ioc3RydWN0IGhjbGdlX2RldiAqaGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMjMzMC1cdFx0aGNsZ2VfbG9nX2Vycm9yKGRldiwgXCYjMzQ7UFBQX01QRl9BQk5PUk1BTF9JTlRfU1QxXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjIzMzE6XHRcdFx0XHRcdTAwMjZoY2xnZV9wcHBfbXBmX2Fibm9ybWFsX2ludF9zdDFbMF0sIHN0YXR1cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0yMzMyLVx0XHRcdFx0XHUwMDI2YWVfZGV2LVx1MDAzZWh3X2Vycl9yZXNldF9yZXEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0yMzM2LVx0XHRoY2xnZV9sb2dfZXJyb3IoZGV2LCBcJiMzNDtQUFBfTVBGX0FCTk9STUFMX0lOVF9TVDNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MjMzNzpcdFx0XHRcdFx1MDAyNmhjbGdlX3BwcF9tcGZfYWJub3JtYWxfaW50X3N0M1swXSwgc3RhdHVzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTIzMzgtXHRcdFx0XHRcdTAwMjZhZV9kZXYtXHUwMDNlaHdfZXJyX3Jlc2V0X3JlcSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jPTI3MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBoY2xnZV9od19ibGsgaHdfYmxrW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTI3MjMtXHRcdC5uYW1lID0gXCYjMzQ7UFBQXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjI3MjQ6XHRcdC5jb25maWdfZXJyX2ludCA9IGhjbGdlX2NvbmZpZ19wcHBfaHdfZXJyX2ludCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0yNzI1LVx0fSwge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYz0yOTc1PXN0YXRpYyBpbnQgaGNsZ2VfaGFuZGxlX3BmX21zaXhfZXJyb3Ioc3RydWN0IGhjbGdlX2RldiAqaGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMzAwNS1cdFx0aGNsZ2VfbG9nX2Vycm9yKGRldiwgXCYjMzQ7UFBQX1BGX0FCTk9STUFMX0lOVF9TVDBcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MzAwNjpcdFx0XHRcdFx1MDAyNmhjbGdlX3BwcF9wZl9hYm5vcm1hbF9pbnRbMF0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMzAwNy1cdFx0XHRcdHN0YXR1cywgcmVzZXRfcmVxdWVzdHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaC01Ni0jaW5jbHVkZSBcdTAwM2NuZXQvZ3RwLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2UuaDo1NzojaW5jbHVkZSBcdTAwM2NsaW51eC9wcHBfZGVmcy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNTgtI2luY2x1ZGUgXCYjMzQ7aWNlX2Rldmlkcy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mZGlyLmg9MTMyPXN0cnVjdCBpY2VfZmRpcl91ZHBfZ3RwIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2ZkaXIuaC0xNDItXHRcdHNwYXJlOjQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2ZkaXIuaDoxNDM6XHR1OFx0cHBwOjEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2ZkaXIuaC0xNDQtXHRcdHJxaToxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jPTU4Nz1zdGF0aWMgY29uc3QgdTMyIGljZV9wdHlwZXNfZ3RwdVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jLTU5OC0vKiBQYWNrZXQgdHlwZXMgZm9yIFBQUG9FICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYzo1OTk6c3RhdGljIGNvbnN0IHUzMiBpY2VfcHR5cGVzX3BwcG9lW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYy02MDAtXHQweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jPTgwNz1zdGF0aWMgaW50IGljZV9mbG93X3Byb2Nfc2VnX2hkcnMoc3RydWN0IGljZV9mbG93X3Byb2ZfcGFyYW1zICpwYXJhbXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mbG93LmMtODgxLVx0XHR9IGVsc2UgaWYgKGhkcnMgXHUwMDI2IElDRV9GTE9XX1NFR19IRFJfUFBQT0UpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jOjg4MjpcdFx0XHRzcmMgPSAoY29uc3QgdW5zaWduZWQgbG9uZyAqKWljZV9wdHlwZXNfcHBwb2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYy04ODMtXHRcdFx0Yml0bWFwX2FuZChwYXJhbXMtXHUwMDNlcHR5cGVzLCBwYXJhbXMtXHUwMDNlcHR5cGVzLCBzcmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mbG93LmMtODg1LVx0XHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mbG93LmM6ODg2Olx0XHRcdHNyYyA9IChjb25zdCB1bnNpZ25lZCBsb25nICopaWNlX3B0eXBlc19wcHBvZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jLTg4Ny1cdFx0XHRiaXRtYXBfYW5kbm90KHBhcmFtcy1cdTAwM2VwdHlwZXMsIHBhcmFtcy1cdTAwM2VwdHlwZXMsIHNyYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3Byb3RvY29sX3R5cGUuaD0yMzM9c3RydWN0IGljZV9wZmNwX2hkciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtMjQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmg6MjQyOnN0cnVjdCBpY2VfcHBwb2VfaGRyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oLTI0My1cdHU4IHJzcnZkX3Zlcl90eXBlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oLTI0Ni1cdF9fYmUxNiBsZW5ndGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3Byb3RvY29sX3R5cGUuaDoyNDc6XHRfX2JlMTYgcHBwX3Byb3RfaWQ7IC8qIGNvbnRyb2wgYW5kIGRhdGEgb25seSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtMjQ4LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmg9NDQ3PXVuaW9uIGljZV9wcm90X2hkciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtNDU4LVx0c3RydWN0IGljZV9wZmNwX2hkciBwZmNwX2hkcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oOjQ1OTpcdHN0cnVjdCBpY2VfcHBwb2VfaGRyIHBwcG9lX2hkcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oLTQ2MC1cdHN0cnVjdCBpY2VfbDJ0cHYzX3Nlc3NfaGRyIGwydHB2M19zZXNzX2hkcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jPTExNTc9SUNFX0RFQ0xBUkVfUEtUX1RFTVBMQVRFKHBmY3Bfc2Vzc2lvbl9pcHY2KSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTExODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjExODY6SUNFX0RFQ0xBUkVfUEtUX09GRlNFVFMocHBwb2VfaXB2NF90Y3ApID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMTg3LVx0eyBJQ0VfTUFDX09GT1MsXHRcdDAgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTExOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjExOTU6SUNFX0RFQ0xBUkVfUEtUX1RFTVBMQVRFKHBwcG9lX2lwdjRfdGNwKSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTE5Ni1cdDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIC8qIElDRV9NQUNfT0ZPUyAwICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxMjIyOklDRV9ERUNMQVJFX1BLVF9PRkZTRVRTKHBwcG9lX2lwdjRfdWRwKSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTIyMy1cdHsgSUNFX01BQ19PRk9TLFx0XHQwIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxMjMxOklDRV9ERUNMQVJFX1BLVF9URU1QTEFURShwcHBvZV9pcHY0X3VkcCkgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEyMzItXHQweDAwLCAweDAwLCAweDAwLCAweDAwLCAvKiBJQ0VfTUFDX09GT1MgMCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTI1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6MTI1NTpJQ0VfREVDTEFSRV9QS1RfT0ZGU0VUUyhwcHBvZV9pcHY2X3RjcCkgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEyNTYtXHR7IElDRV9NQUNfT0ZPUyxcdFx0MCB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTI2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6MTI2NDpJQ0VfREVDTEFSRV9QS1RfVEVNUExBVEUocHBwb2VfaXB2Nl90Y3ApID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjY1LVx0MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgLyogSUNFX01BQ19PRk9TIDAgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEyOTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjEyOTY6SUNFX0RFQ0xBUkVfUEtUX09GRlNFVFMocHBwb2VfaXB2Nl91ZHApID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjk3LVx0eyBJQ0VfTUFDX09GT1MsXHRcdDAgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEzMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjEzMDU6SUNFX0RFQ0xBUkVfUEtUX1RFTVBMQVRFKHBwcG9lX2lwdjZfdWRwKSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTMwNi1cdDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIC8qIElDRV9NQUNfT0ZPUyAwICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYz0xMzkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNlX2R1bW15X3BrdF9wcm9maWxlIGljZV9kdW1teV9wa3RfcHJvZmlsZXNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTE0MjAtXHRJQ0VfUEtUX1BST0ZJTEUocGZjcF9zZXNzaW9uX2lwdjQsIElDRV9QS1RfUEZDUCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjE0MjE6XHRJQ0VfUEtUX1BST0ZJTEUocHBwb2VfaXB2Nl91ZHAsIElDRV9QS1RfUFBQT0UgfCBJQ0VfUEtUX09VVEVSX0lQVjYgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xNDIyLVx0XHRcdFx0XHRJQ0VfUEtUX0lOTkVSX1VEUCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjE0MjM6XHRJQ0VfUEtUX1BST0ZJTEUocHBwb2VfaXB2Nl90Y3AsIElDRV9QS1RfUFBQT0UgfCBJQ0VfUEtUX09VVEVSX0lQVjYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxNDI0Olx0SUNFX1BLVF9QUk9GSUxFKHBwcG9lX2lwdjRfdWRwLCBJQ0VfUEtUX1BQUE9FIHwgSUNFX1BLVF9JTk5FUl9VRFApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxNDI1Olx0SUNFX1BLVF9QUk9GSUxFKHBwcG9lX2lwdjRfdGNwLCBJQ0VfUEtUX1BQUE9FKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTQyNi1cdElDRV9QS1RfUFJPRklMRShncmVfaXB2Nl90Y3AsIElDRV9QS1RfVFVOX05WR1JFIHwgSUNFX1BLVF9JTk5FUl9JUFY2IHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jPTU1NTc9aWNlX2ZpbmRfZHVtbXlfcGFja2V0KHN0cnVjdCBpY2VfYWR2X2xrdXBfZWxlbSAqbGt1cHMsIHUxNiBsa3Vwc19jbnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy01NjE0LVx0XHRcdG1hdGNoIHw9IElDRV9QS1RfUFBQT0U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjU2MTU6XHRcdFx0aWYgKGxrdXBzW2ldLmhfdS5wcHBvZV9oZHIucHBwX3Byb3RfaWQgPT1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtNTYxNi1cdFx0XHQgICAgaHRvbnMoUFBQX0lQVjYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM9NTY0MT1pY2VfZmlsbF9hZHZfZHVtbXlfcGFja2V0KHN0cnVjdCBpY2VfYWR2X2xrdXBfZWxlbSAqbGt1cHMsIHUxNiBsa3Vwc19jbnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy01NzI0LVx0XHRjYXNlIElDRV9QUFBPRTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6NTcyNTpcdFx0XHRsZW4gPSBzaXplb2Yoc3RydWN0IGljZV9wcHBvZV9oZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy01NzI2LVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM9MzcxPWljZV90Y19maWxsX3J1bGVzKHN0cnVjdCBpY2VfaHcgKmh3LCB1MzIgZmxhZ3MsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy00OTAtXHRcdCAgICAgSUNFX1RDX0ZMV1JfRklFTERfUFBQX1BST1RPKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzo0OTE6XHRcdHN0cnVjdCBpY2VfcHBwb2VfaGRyICp2YWxzLCAqbWFza3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTQ5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6NDkzOlx0XHR2YWxzID0gXHUwMDI2bGlzdFtpXS5oX3UucHBwb2VfaGRyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzo0OTQ6XHRcdG1hc2tzID0gXHUwMDI2bGlzdFtpXS5tX3UucHBwb2VfaGRyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy00OTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy00OTgtXHRcdGlmIChmbGFncyBcdTAwMjYgSUNFX1RDX0ZMV1JfRklFTERfUFBQT0VfU0VTU0lEKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjQ5OTpcdFx0XHR2YWxzLVx1MDAzZXNlc3Npb25faWQgPSBoZWFkZXJzLVx1MDAzZXBwcG9lX2hkci5zZXNzaW9uX2lkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy01MDAtXHRcdFx0bWFza3MtXHUwMDNlc2Vzc2lvbl9pZCA9IGNwdV90b19iZTE2KDB4RkZGRik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy01MDMtXHRcdGlmIChmbGFncyBcdTAwMjYgSUNFX1RDX0ZMV1JfRklFTERfUFBQX1BST1RPKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjUwNDpcdFx0XHR2YWxzLVx1MDAzZXBwcF9wcm90X2lkID0gaGVhZGVycy1cdTAwM2VwcHBvZV9oZHIucHBwX3Byb3RvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzo1MDU6XHRcdFx0bWFza3MtXHUwMDNlcHBwX3Byb3RfaWQgPSBjcHVfdG9fYmUxNigweEZGRkYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy01MDYtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jPTExNDE9aWNlX2FkZF90Y19mbG93ZXJfYWR2X2ZsdHIoc3RydWN0IGljZV92c2kgKnZzaSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEyODktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjEyOTA6ICogaWNlX3RjX3NldF9wcHBvZSAtIFBhcnNlIFBQUG9FIGZpZWxkcyBmcm9tIFRDIGZsb3dlciBmaWx0ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTI5MS0gKiBAbWF0Y2g6IFBvaW50ZXIgdG8gZmxvdyBtYXRjaCBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEyOTMtICogQGhlYWRlcnM6IFBvaW50ZXIgdG8gb3V0ZXIgaGVhZGVyIGZpZWxkc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzoxMjk0OiAqIEByZXR1cm5zIFBQUCBwcm90b2NvbCB1c2VkIGluIGZpbHRlciAocHBwX3NlcyBvciBwcHBfZGlzYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTI5NS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM9MTI5Nj1zdGF0aWMgdTE2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjEyOTc6aWNlX3RjX3NldF9wcHBvZShzdHJ1Y3QgZmxvd19tYXRjaF9wcHBvZSAqbWF0Y2gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEyOTgtXHRcdCBzdHJ1Y3QgaWNlX3RjX2Zsb3dlcl9mbHRyICpmbHRyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwMi1cdFx0Zmx0ci1cdTAwM2VmbGFncyB8PSBJQ0VfVENfRkxXUl9GSUVMRF9QUFBPRV9TRVNTSUQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjEzMDM6XHRcdGhlYWRlcnMtXHUwMDNlcHBwb2VfaGRyLnNlc3Npb25faWQgPSBtYXRjaC1cdTAwM2VrZXktXHUwMDNlc2Vzc2lvbl9pZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwNC1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6MTMwNjpcdGlmIChtYXRjaC1cdTAwM2VtYXNrLVx1MDAzZXBwcF9wcm90bykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy0xMzA3LVx0XHRmbHRyLVx1MDAzZWZsYWdzIHw9IElDRV9UQ19GTFdSX0ZJRUxEX1BQUF9QUk9UTztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6MTMwODpcdFx0aGVhZGVycy1cdTAwM2VwcHBvZV9oZHIucHBwX3Byb3RvID0gbWF0Y2gtXHUwMDNla2V5LVx1MDAzZXBwcF9wcm90bztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwOS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jPTE2Mzc9aWNlX3BhcnNlX2Nsc19mbG93ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmZpbHRlcl9kZXYsIHN0cnVjdCBpY2VfdnNpICp2c2ksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy0xODM3LVx0aWYgKGZsb3dfcnVsZV9tYXRjaF9rZXkocnVsZSwgRkxPV19ESVNTRUNUT1JfS0VZX1BQUE9FKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzoxODM4Olx0XHRzdHJ1Y3QgZmxvd19tYXRjaF9wcHBvZSBtYXRjaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTgzOS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTcwNQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKlBQVFAgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKT2theSwgdGltZSB0byBjaXJjbGUgYmFjayBhbmQgZG91YmxlLWNoZWNrIHNvbWV0aGluZyBjcnVjaWFsIGZvciB0aGlzIFBQVFAgaW50ZWdyYXRpb24uIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IGRlcGVuZGVuY2llcyBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgc2hvdWxkIHJlLWV4YW1pbmUgYGRyaXZlcnMvbmV0L3BwcC9LY29uZmlnYCBhZ2FpbiwgbWV0aWN1bG91c2x5LiBJdOKAmXMgdG9vIGVhc3kgdG8gb3Zlcmxvb2sgc29tZXRoaW5nIGluIHRoZXNlIG5lc3RlZCBjb25maWd1cmF0aW9ucywgZXNwZWNpYWxseSB3aXRoIHRoZSBwb3RlbnRpYWwgZm9yIGludGVyYWN0aW9ucyBiZXR3ZWVuIGRpZmZlcmVudCBuZXR3b3JrIHN1YnN5c3RlbXMuIEkgd2FudCB0byBidWlsZCBhIGJ1bGxldHByb29mIHVuZGVyc3RhbmRpbmcsIHNvIGEgZnJlc2ggbG9vayBpcyBlc3NlbnRpYWwgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBQUCBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQUFBcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1BQUCAocG9pbnQtdG8tcG9pbnQgcHJvdG9jb2wpIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBTTEhDXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFBQUCAoUG9pbnQgdG8gUG9pbnQgUHJvdG9jb2wpIGlzIGEgbmV3ZXIgYW5kIGJldHRlciBTTElQLiAgSXQgc2VydmVzXG4gIDExOlx0XHQgIHRoZSBzYW1lIHB1cnBvc2U6IHNlbmRpbmcgSW50ZXJuZXQgdHJhZmZpYyBvdmVyIHRlbGVwaG9uZSAoYW5kIG90aGVyXG4gIDEyOlx0XHQgIHNlcmlhbCkgbGluZXMuICBBc2sgeW91ciBhY2Nlc3MgcHJvdmlkZXIgaWYgdGhleSBzdXBwb3J0IGl0LCBiZWNhdXNlXG4gIDEzOlx0XHQgIG90aGVyd2lzZSB5b3UgY2FuJiMzOTt0IHVzZSBpdDsgbW9zdCBJbnRlcm5ldCBhY2Nlc3MgcHJvdmlkZXJzIHRoZXNlXG4gIDE0Olx0XHQgIGRheXMgc3VwcG9ydCBQUFAgcmF0aGVyIHRoYW4gU0xJUC5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgVG8gdXNlIFBQUCwgeW91IG5lZWQgYW4gYWRkaXRpb25hbCBwcm9ncmFtIGNhbGxlZCBwcHBkLCBhdmFpbGFibGUgYXRcbiAgMTc6XHRcdCAgXHUwMDNjaHR0cHM6Ly9wcHAuc2FtYmEub3JnXHUwMDNlLiAgTWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgdGhlIHZlcnNpb24gb2YgcHBwZFxuICAxODpcdFx0ICByZWNvbW1lbmRlZCBpbiBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vQ2hhbmdlc1x1MDAzZS5cbiAgMTk6XHRcdCAgVGhlIFBQUCBvcHRpb24gZW5sYXJnZXMgeW91ciBrZXJuZWwgYnkgYWJvdXQgMTYgS0IuXG4gIDIwOlx0XG4gIDIxOlx0XHQgIFRoZXJlIGFyZSBhY3R1YWxseSB0d28gdmVyc2lvbnMgb2YgUFBQOiB0aGUgdHJhZGl0aW9uYWwgUFBQIGZvclxuICAyMjpcdFx0ICBhc3luY2hyb25vdXMgbGluZXMsIHN1Y2ggYXMgcmVndWxhciBhbmFsb2cgcGhvbmUgbGluZXMsIGFuZFxuICAyMzpcdFx0ICBzeW5jaHJvbm91cyBQUFAgd2hpY2ggY2FuIGJlIHVzZWQgb3ZlciBkaWdpdGFsIElTRE4gbGluZXMgZm9yXG4gIDI0Olx0XHQgIGV4YW1wbGUuICBJZiB5b3Ugd2FudCB0byB1c2UgUFBQIG92ZXIgcGhvbmUgbGluZXMgb3Igb3RoZXJcbiAgMjU6XHRcdCAgYXN5bmNocm9ub3VzIHNlcmlhbCBsaW5lcywgeW91IG5lZWQgdG8gc2F5IFkgKG9yIE0pIGhlcmUgYW5kIGFsc28gdG9cbiAgMjY6XHRcdCAgdGhlIG5leHQgb3B0aW9uLCBcJiMzNDtQUFAgc3VwcG9ydCBmb3IgYXN5bmMgc2VyaWFsIHBvcnRzXCYjMzQ7LiAgRm9yIFBQUCBvdmVyXG4gIDI3Olx0XHQgIHN5bmNocm9ub3VzIGxpbmVzLCB5b3Ugc2hvdWxkIHNheSBZIChvciBNKSBoZXJlIGFuZCB0byBcJiMzNDtTdXBwb3J0XG4gIDI4Olx0XHQgIHN5bmNocm9ub3VzIFBQUFwmIzM0OywgYmVsb3cuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIElmIHlvdSBzYWlkIFkgdG8gXCYjMzQ7VmVyc2lvbiBpbmZvcm1hdGlvbiBvbiBhbGwgc3ltYm9sc1wmIzM0OyBhYm92ZSwgdGhlblxuICAzMTpcdFx0ICB5b3UgY2Fubm90IGNvbXBpbGUgdGhlIFBQUCBkcml2ZXIgaW50byB0aGUga2VybmVsOyB5b3UgY2FuIHRoZW4gb25seVxuICAzMjpcdFx0ICBjb21waWxlIGl0IGFzIGEgbW9kdWxlLiBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTVxuICAzMzpcdFx0ICBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHBwcF9nZW5lcmljLlxuICAzNDpcdFxuICAzNTpcdGlmIFBQUFxuICAzNjpcdFxuICAzNzpcdGNvbmZpZyBQUFBfQlNEQ09NUFxuICAzODpcdFx0dHJpc3RhdGUgXCYjMzQ7UFBQIEJTRC1Db21wcmVzcyBjb21wcmVzc2lvblwmIzM0O1xuICAzOTpcdFx0aGVscFxuICA0MDpcdFx0ICBTdXBwb3J0IGZvciB0aGUgQlNELUNvbXByZXNzIGNvbXByZXNzaW9uIG1ldGhvZCBmb3IgUFBQLCB3aGljaCB1c2VzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNTE1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFBQVFAgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgYFBQVFBgIGlzIG5lc3RlZCB3aXRoaW4gYW4gYGlmIFBQUCAuLi4gZW5kaWZgIGJsb2NrLiBUaGlzIHRlbGxzIG1lIHRoYXQgYENPTkZJR19QUFBgIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBlbmFibGluZyB0aGUgYFBQVFBgIG9wdGlvbiwgYW5kIHRoZXJlZm9yZSBzbyBpcyBgQ09ORklHX1BQVFBgLCBhbmQgYWxzbyBgQ09ORklHX05FVF9JUEdSRV9ERU1VWGAsIHdoaWNoIGBQUFRQYCByZWxpZXMgdXBvbi4gQW5kIGZ1cnRoZXIsIGl0IGxvb2tzIGxpa2UgYFBQVFBgIGFsc28gYXV0b21hdGljYWxseSBzZWxlY3RzIGBQUFBPWGAgdmlhIGBDT05GSUdfUFBQT1hgLgoKTm93LCBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBDT05GSUdfSU5FVGAgb3IgYW55IG90aGVyIGNvcmUgbmV0d29yayBjb25maWd1cmF0aW9uIGVsZW1lbnRzIGFyZSBlc3NlbnRpYWwgaGVyZS4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBgbmV0L2lwdjQvS2NvbmZpZ2AgZmlsZSwgYE5FVF9JUEdSRV9ERU1VWGAg4oCTIHdoaWNoIGlzICpyZXF1aXJlZCogZm9yIFBQVFAg4oCTIGRlcGVuZHMgb24gYElORVRgLiBHaXZlbiB0aGF0IGBJTkVUYCBpcyBmdW5kYW1lbnRhbGx5IHN0YW5kYXJkIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eSwgdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIHdpbGwgbm93IGRvdWJsZS1jaGVjayBgbmV0L2lwdjQvS2NvbmZpZ2AgZGlyZWN0bHkgZm9yIGFueSBvdGhlciBgTkVUX0lQR1JFX0RFTVVYYCBkZXBlbmRlbmNpZXMgdG8gY29tcGxldGUgdGhlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTc4Olx0XHQgIHdhbnQpLiBNb3N0IHBlb3BsZSB3b24mIzM5O3QgbmVlZCB0aGlzIGFuZCBjYW4gc2F5IE4uXG4gMTc5Olx0XG4gMTgwOlx0Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxuIDE4MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4gMTgyOlx0XHRoZWxwXG4gMTgzOlx0XHQgIFRoaXMgaXMgaGVscGVyIG1vZHVsZSB0byBkZW11bHRpcGxleCBHUkUgcGFja2V0cyBvbiBHUkUgdmVyc2lvbiBmaWVsZCBjcml0ZXJpYS5cbiAxODQ6XHRcdCAgUmVxdWlyZWQgYnkgaXBfZ3JlIGFuZCBwcHRwIG1vZHVsZXMuXG4gMTg1Olx0XG4gMTg2Olx0Y29uZmlnIE5FVF9JUF9UVU5ORUxcbiAxODc6XHRcdHRyaXN0YXRlXG4gMTg4Olx0XHRzZWxlY3QgRFNUX0NBQ0hFXG4gMTg5Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4gMTkwOlx0XHRkZWZhdWx0IG5cbiAxOTE6XHRcbiAxOTI6XHRjb25maWcgTkVUX0lQR1JFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTQ1CgkJCQkJCQlvdXRwdXQ6IDE3NgoJCQkJCQkJdGhvdWdodHM6IDQ2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFZlcmRpY3Q6IENvbmZpcm1lZCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSB3YW50ZWQgdG8gY29uZmlybSB0aGUgYE5FVF9JUEdSRV9ERU1VWGAgY29uZmlnIG9wdGlvbi4gSXQmIzM5O3Mgbm90IGRpcmVjdGx5IGRlcGVuZGVudCBvbiBhbnl0aGluZyBlbHNlLCBidXQgaXQgKmlzKiBuZXN0ZWQgd2l0aGluIGBuZXQvaXB2NC9LY29uZmlnYCB1bmRlciBgbWVudWNvbmZpZyBJTkVUYCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQuCgpOZXh0LCBJIGxvb2tlZCBhdCB0aGUgYEZvY3VzU3ltYm9sc2AuIFRoZSBhbmFseXNpcyBwb2ludGVkIHRvIHRoZXNlIGtleSBmdW5jdGlvbnM6IGBwcHRwX3Jjdl9jb3JlYCwgYHBwdHBfcmN2YCwgYHBwdHBfY29ubmVjdGAsIGBwcHRwX2JpbmRgLCBgcHB0cF9jcmVhdGVgLCBhbmQgYHBwdHBfeG1pdGAuIEkgaGFkIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIGFueSBvZiB0aGVzZSB3ZXJlIHN0YXRpYyBvciBpbmxpbmVkLCBzaW5jZSB0aGF0IHdvdWxkIGFmZmVjdCBmdXp6aW5nLiBJIGNvbmZpcm1lZCB0aGF0IGBwcHRwX3Jjdl9jb3JlYCBhbmQgYHBwdHBfcmN2YCBhcmUgc3RhdGljLCBhbmQgdGhlIG90aGVycywgYHBwdHBfY29ubmVjdGAsIGBwcHRwX2JpbmRgLCBgcHB0cF9jcmVhdGVgLCBgcHB0cF94bWl0YCwgYXJlIHVzZWQgdmlhIGZ1bmN0aW9uIHBvaW50ZXJzIGluIG9wcyBzdHJ1Y3R1cmVzLiBCZWNhdXNlIG9mIHRoaXMsIHRoZSBjb21waWxlciB3b24mIzM5O3QgYmUgaW5saW5pbmcgdGhlbS4gVGhpcyBtZWFucyB0aGUgbGlzdCBvZiBub24taW5saW5lZCBmdW5jdGlvbnMgdG8gdGFyZ2V0IGZvciBmdXp6aW5nIGlzOiBgcHB0cF9yY3ZfY29yZWAsIGBwcHRwX3JjdmAsIGBwcHRwX2NyZWF0ZWAsIGBwcHRwX2Nvbm5lY3RgLCBhbmQgYHBwdHBfYmluZGAuCgpJIHRoZW4gbWFkZSBzdXJlIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBtYXRjaGVkIHRoZSByZXF1aXJlbWVudHMuIEkmIzM5O3ZlIHZlcmlmaWVkIHRoYXQgYFBQVFBgLCBgUFBQYCwgYW5kIGBORVRfSVBHUkVfREVNVVhgIGFyZSB0aGUgY29ycmVjdCBjb25maWcgZmxhZ3MuCgpGaW5hbGx5LCBJIHJldmlld2VkIHRoZSBwcm9tcHQgcmVxdWlyZW1lbnRzOiB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBpcyB0cnVlLCBzaW5jZSB0aGVzZSBjaGFuZ2VzIGhhdmUgYSBmdW5jdGlvbmFsIGltcGFjdCB3b3J0aCBmdXp6aW5nLiBJIGhhdmUgYSBsaXN0IG9mIG5vbi1ob3QtcGF0aCBrZXJuZWwgZnVuY3Rpb25zIHRvIGZvY3VzIGZ1enppbmcgb24sIGFuZCB0aGUgcmVxdWlyZWQgZW5hYmxlIGNvbmZpZ3MuIEV2ZXJ5dGhpbmcgbWF0Y2hlcy4gVGhlIGRhdGEgaXMgdmFsaWRhdGVkLgoKTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQVFAmIzM0OywKICAgICYjMzQ7UFBQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwdHBfcmN2X2NvcmUmIzM0OywKICAgICYjMzQ7cHB0cF9yY3YmIzM0OywKICAgICYjMzQ7cHB0cF9jcmVhdGUmIzM0OywKICAgICYjMzQ7cHB0cF9jb25uZWN0JiMzNDssCiAgICAmIzM0O3BwdHBfYmluZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgcmVjZXB0aW9uIHBhcnNpbmcgYW5kIGJvdW5kcyBjaGVja2luZyBsb2dpYyBpbiBwcHRwX3Jjdl9jb3JlKCkgd2l0aGluIHRoZSBQUFRQIG5ldHdvcmsgcHJvdG9jb2wgZHJpdmVyIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKSwgZW5zdXJpbmcgcGF5bG9hZCBhdmFpbGFiaWxpdHkgY2hlY2tzIGFuZCBwc2tiX21heV9wdWxsKCkgY2FsbHMgcHJlY2VkZSBoZWFkZXIgZGVyZWZlcmVuY2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb24gdHJ1bmNhdGVkIHBhY2tldHMuIFRoaXMgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgQUZfUFBQT1ggc29ja2V0cyBhbmQgR1JFIHBhY2tldCBkZWxpdmVyeS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UFBUUCYjMzQ7LAogICAgJiMzNDtQUFAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICAgJiMzNDtwcHRwX3JjdiYjMzQ7LAogICAgJiMzNDtwcHRwX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtwcHRwX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cHB0cF9iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCByZWNlcHRpb24gcGFyc2luZyBhbmQgYm91bmRzIGNoZWNraW5nIGxvZ2ljIGluIHBwdHBfcmN2X2NvcmUoKSB3aXRoaW4gdGhlIFBQVFAgbmV0d29yayBwcm90b2NvbCBkcml2ZXIgKGRyaXZlcnMvbmV0L3BwcC9wcHRwLmMpLCBlbnN1cmluZyBwYXlsb2FkIGF2YWlsYWJpbGl0eSBjaGVja3MgYW5kIHBza2JfbWF5X3B1bGwoKSBjYWxscyBwcmVjZWRlIGhlYWRlciBkZXJlZmVyZW5jaW5nIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgcGFja2V0cy4gVGhpcyBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBBRl9QUFBPWCBzb2NrZXRzIGFuZCBHUkUgcGFja2V0IGRlbGl2ZXJ5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGJvdW5kcyBjaGVja2luZyBhbmQgc2tiIHB1bGwgb3BlcmF0aW9ucyBpbiB0aGUgUFBUUCByZWNlaXZlIHBhdGggKGRyaXZlcnMvbmV0L3BwcC9wcHRwLmMpLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBhZGVxdWF0ZSBwYXlsb2FkIGJ5dGVzIGFyZSBhdmFpbGFibGUgYW5kIHB1bGxlZCBpbnRvIHRoZSBza2IgbGluZWFyIGFyZWEgYmVmb3JlIGluZGV4aW5nIGludG8gc2tiIHBheWxvYWQgb2Zmc2V0cyAocGF5bG9hZFswXSB0aHJvdWdoIHBheWxvYWRbNF0gYW5kIHNrYi1cdTAwM2VkYXRhWzBdIHRocm91Z2ggc2tiLVx1MDAzZWRhdGFbMV0pLlxuXG5UaGVzZSBjaGFuZ2VzIHByZXZlbnQgb3V0LW9mLWJvdW5kcyAoT09CKSBtZW1vcnkgcmVhZHMgb24gdHJ1bmNhdGVkIG9yIG1hbGZvcm1lZCBuZXR3b3JrIHBhY2tldHMuIE9PQiByZWFkcyBhbmQgaW52YWxpZCBza2IgYnVmZmVyIGRlcmVmZXJlbmNlcyBhcmUgZGlyZWN0bHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYnVpbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjE1NTk1OTI1ZjI5OGVlZjVmMjJkOWM3ZDI4YjM1MTIyZGEwMmM4ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTY6MzU6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwppbmRleCBhNzk3YTA2MDZmNmI0Li40ZmI5NGE0NTVjNTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMKQEAgLTI3NSw2ICYjNDM7Mjc1LDcgQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7CiAJc3RydWN0IHBwdHBfb3B0ICpvcHQgPSAmYW1wO3BvLSZndDtwcm90by5wcHRwOwogCWludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxOwomIzQzOwl1bnNpZ25lZCBpbnQgcGF5bG9hZF9hdmFpbDsKIAlfX3U4ICpwYXlsb2FkOwogCXN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjsKIApAQCAtMzE0LDIzICYjNDM7MzE1LDM0IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBwYXlsb2FkX2xlbikpCiAJCWdvdG8gZHJvcDsKIAotCXBheWxvYWQgPSBza2ItJmd0O2RhdGEgJiM0MzsgaGVhZGVyc2l6ZTsKJiM0MzsJcGF5bG9hZF9hdmFpbCA9IHNrYi0mZ3Q7bGVuIC0gaGVhZGVyc2l6ZTsKIAkvKiBjaGVjayBmb3IgZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyICovCiAJaWYgKHNlcSAmbHQ7IG9wdC0mZ3Q7c2VxX3JlY3YgJiM0MzsgMSB8fCBXUkFQUEVEKG9wdC0mZ3Q7c2VxX3JlY3YsIHNlcSkpIHsKLQkJaWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgJmFtcDsmYW1wOyAocGF5bG9hZFsxXSA9PSBQUFBfVUkpICZhbXA7JmFtcDsKLQkJCQkoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApICZhbXA7JmFtcDsKLQkJCQkoKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRKSB8fCAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKSkKLQkJCWdvdG8gYWxsb3dfcGFja2V0OwomIzQzOwkJaWYgKHBheWxvYWRfYXZhaWwgJmd0Oz0gUFBQX0hEUkxFTiAmIzQzOyAxKSB7CiYjNDM7CQkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSAmIzQzOyBQUFBfSERSTEVOICYjNDM7IDEpKQomIzQzOwkJCQlnb3RvIGRyb3A7CiYjNDM7CiYjNDM7CQkJcGF5bG9hZCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBoZWFkZXJzaXplOwomIzQzOwkJCWlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJICZhbXA7JmFtcDsKJiM0MzsJCQkgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgJmFtcDsmYW1wOwomIzQzOwkJCSAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKQomIzQzOwkJCQlnb3RvIGFsbG93X3BhY2tldDsKJiM0MzsJCX0KIAl9IGVsc2UgewogCQlvcHQtJmd0O3NlcV9yZWN2ID0gc2VxOwogYWxsb3dfcGFja2V0OgogCQlza2JfcHVsbChza2IsIGhlYWRlcnNpemUpOwogCi0JCWlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7Ci0JCQkvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi8KLQkJCWlmIChza2ItJmd0O2xlbiAmbHQ7IDMpCiYjNDM7CQlpZiAocGF5bG9hZF9hdmFpbCAmZ3Q7PSAyKSB7CiYjNDM7CQkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgMikpCiAJCQkJZ290byBkcm9wOwotCQkJc2tiX3B1bGwoc2tiLCAyKTsKJiM0MzsKJiM0MzsJCQlpZiAoc2tiLSZndDtkYXRhWzBdID09IFBQUF9BTExTVEFUSU9OUyAmYW1wOyZhbXA7IHNrYi0mZ3Q7ZGF0YVsxXSA9PSBQUFBfVUkpIHsKJiM0MzsJCQkJLyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovCiYjNDM7CQkJCWlmIChza2ItJmd0O2xlbiAmbHQ7IDMpCiYjNDM7CQkJCQlnb3RvIGRyb3A7CiYjNDM7CQkJCXNrYl9wdWxsKHNrYiwgMik7CiYjNDM7CQkJfQogCQl9CiAKIAkJc2tiLSZndDtpcF9zdW1tZWQgPSBDSEVDS1NVTV9OT05FOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY5OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFdmFsdWF0aW5nIHRoZSBOZWNlc3NpdHkgb2YgS01TQU4gRnV6emluZyBmb3IgYSBQUFBUUCBQYXRjaCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3BwcC9wcHRwLmNgIHdhcnJhbnRzIGEgc2VwYXJhdGUgS01TQU4gZnV6emluZyBzZXNzaW9uLCBiZXlvbmQgdGhlIHVzdWFsIEtBU0FOIGNoZWNrcy4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSXQmIzM5O3MgcmVhbGx5IGp1c3Qgc29mdHdhcmUgZGVmZW5zZSBhbmQga2VybmVsIHBhdGNoIHJldmlldy4gVGhlIHNldmVyaXR5IGhlcmUgaXMgcHJldHR5IGxvdyDigJMganVzdCB0aGUgdXN1YWwgY29kZSByZXZpZXcgYW5kIHBpY2tpbmcgdGhlIHJpZ2h0IHNhbml0aXphdGlvbiB0b29sLiBObyBpbW1lZGlhdGUgZmlyZSBkcmlsbHMuCgpJIHNob3VsZCBleGFtaW5lIHRoZSBwYXRjaCBpdHNlbGYgZmlyc3QsIGFuZCB0aGVuIHJlYWxseSBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBxdWljayBnbGFuY2UsIGJ1dCBpZiBhbnl0aGluZyBsb29rcyBldmVuIHNsaWdodGx5IHN1c3BpY2lvdXMsIEkmIzM5O2xsIGRlZmluaXRlbHkgZGl2ZSBkZWVwZXIsIHVzaW5nIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGZ1bmN0aW9uIG9mIHRoZSBjb2RlIGFyb3VuZCB0aGlzIHBhdGNoIGFuZCB0aGUgdmFyaWFibGVzIGJlaW5nIHVzZWQuIFRoaXMgaXNuJiMzOTt0IGhpZ2gtc3Rha2VzLCBidXQgSSB3YW50IHRvIGJlIHRob3JvdWdoLiBJdCYjMzk7cyBhbGwgYWJvdXQgbWFraW5nIGFuIGluZm9ybWVkIGRlY2lzaW9uIGFib3V0IGFsbG9jYXRpbmcgcmVzb3VyY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogOTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdFx0cmV0dXJuIDE7XG4gMjcxOlx0fVxuIDI3MjpcdFxuIDI3MzpcdHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4gMjc0Olx0e1xuIDI3NTpcdFx0c3RydWN0IHBwcG94X3NvY2sgKnBvID0gcHBwb3hfc2soc2spO1xuIDI3NjpcdFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcdTAwMjZwby1cdTAwM2Vwcm90by5wcHRwO1xuIDI3NzpcdFx0aW50IGhlYWRlcnNpemUsIHBheWxvYWRfbGVuLCBzZXE7XG4gMjc4Olx0XHR1bnNpZ25lZCBpbnQgcGF5bG9hZF9hdmFpbDtcbiAyNzk6XHRcdF9fdTggKnBheWxvYWQ7XG4gMjgwOlx0XHRzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICpoZWFkZXI7XG4gMjgxOlx0XG4gMjgyOlx0XHRpZiAoIShzay1cdTAwM2Vza19zdGF0ZSBcdTAwMjYgUFBQT1hfQ09OTkVDVEVEKSlcbiAyODM6XHRcdFx0Z290byBkcm9wO1xuIDI4NDpcdFxuIDI4NTpcdFx0aGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLVx1MDAzZWRhdGEpO1xuIDI4NjpcdFx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XG4gMjg3Olx0XG4gMjg4Olx0XHQvKiB0ZXN0IGlmIGFja25vd2xlZGdlbWVudCBwcmVzZW50ICovXG4gMjg5Olx0XHRpZiAoR1JFX0lTX0FDSyhoZWFkZXItXHUwMDNlZ3JlX2hkLmZsYWdzKSkge1xuIDI5MDpcdFx0XHRfX3UzMiBhY2s7XG4gMjkxOlx0XG4gMjkyOlx0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUpKVxuIDI5MzpcdFx0XHRcdGdvdG8gZHJvcDtcbiAyOTQ6XHRcdFx0aGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLVx1MDAzZWRhdGEpO1xuIDI5NTpcdFxuIDI5NjpcdFx0XHQvKiBhY2sgaW4gZGlmZmVyZW50IHBsYWNlIGlmIFMgPSAwICovXG4gMjk3Olx0XHRcdGFjayA9IEdSRV9JU19TRVEoaGVhZGVyLVx1MDAzZWdyZV9oZC5mbGFncykgPyBudG9obChoZWFkZXItXHUwMDNlYWNrKSA6XG4gMjk4Olx0XHRcdFx0XHRcdFx0XHQgbnRvaGwoaGVhZGVyLVx1MDAzZXNlcSk7XG4gMjk5Olx0XHRcdGlmIChhY2sgXHUwMDNlIG9wdC1cdTAwM2VhY2tfcmVjdilcbiAzMDA6XHRcdFx0XHRvcHQtXHUwMDNlYWNrX3JlY3YgPSBhY2s7XG4gMzAxOlx0XHRcdC8qIGFsc28gaGFuZGxlIHNlcXVlbmNlIG51bWJlciB3cmFwLWFyb3VuZCAgKi9cbiAzMDI6XHRcdFx0aWYgKFdSQVBQRUQoYWNrLCBvcHQtXHUwMDNlYWNrX3JlY3YpKVxuIDMwMzpcdFx0XHRcdG9wdC1cdTAwM2VhY2tfcmVjdiA9IGFjaztcbiAzMDQ6XHRcdH0gZWxzZSB7XG4gMzA1Olx0XHRcdGhlYWRlcnNpemUgLT0gc2l6ZW9mKGhlYWRlci1cdTAwM2VhY2spO1xuIDMwNjpcdFx0fVxuIDMwNzpcdFx0LyogdGVzdCBpZiBwYXlsb2FkIHByZXNlbnQgKi9cbiAzMDg6XHRcdGlmICghR1JFX0lTX1NFUShoZWFkZXItXHUwMDNlZ3JlX2hkLmZsYWdzKSlcbiAzMDk6XHRcdFx0Z290byBkcm9wO1xuIDMxMDpcdFxuIDMxMTpcdFx0cGF5bG9hZF9sZW4gPSBudG9ocyhoZWFkZXItXHUwMDNlcGF5bG9hZF9sZW4pO1xuIDMxMjpcdFx0c2VxICAgICAgICAgPSBudG9obChoZWFkZXItXHUwMDNlc2VxKTtcbiAzMTM6XHRcbiAzMTQ6XHRcdC8qIGNoZWNrIGZvciBpbmNvbXBsZXRlIHBhY2tldCAobGVuZ3RoIHNtYWxsZXIgdGhhbiBleHBlY3RlZCkgKi9cbiAzMTU6XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgJiM0MzsgcGF5bG9hZF9sZW4pKVxuIDMxNjpcdFx0XHRnb3RvIGRyb3A7XG4gMzE3Olx0XG4gMzE4Olx0XHRwYXlsb2FkX2F2YWlsID0gc2tiLVx1MDAzZWxlbiAtIGhlYWRlcnNpemU7XG4gMzE5Olx0XHQvKiBjaGVjayBmb3IgZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyICovXG4gMzIwOlx0XHRpZiAoc2VxIFx1MDAzYyBvcHQtXHUwMDNlc2VxX3JlY3YgJiM0MzsgMSB8fCBXUkFQUEVEKG9wdC1cdTAwM2VzZXFfcmVjdiwgc2VxKSkge1xuIDMyMTpcdFx0XHRpZiAocGF5bG9hZF9hdmFpbCBcdTAwM2U9IFBQUF9IRFJMRU4gJiM0MzsgMSkge1xuIDMyMjpcdFx0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgJiM0MzsgUFBQX0hEUkxFTiAmIzQzOyAxKSlcbiAzMjM6XHRcdFx0XHRcdGdvdG8gZHJvcDtcbiAzMjQ6XHRcbiAzMjU6XHRcdFx0XHRwYXlsb2FkID0gc2tiLVx1MDAzZWRhdGEgJiM0MzsgaGVhZGVyc2l6ZTtcbiAzMjY6XHRcdFx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuIDMyNzpcdFx0XHRcdCAgICBQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCBcdTAwMjZcdTAwMjZcbiAzMjg6XHRcdFx0XHQgICAgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRIHx8IHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSlcbiAzMjk6XHRcdFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuIDMzMDpcdFx0XHR9XG4gMzMxOlx0XHR9IGVsc2Uge1xuIDMzMjpcdFx0XHRvcHQtXHUwMDNlc2VxX3JlY3YgPSBzZXE7XG4gMzMzOlx0YWxsb3dfcGFja2V0OlxuIDMzNDpcdFx0XHRza2JfcHVsbChza2IsIGhlYWRlcnNpemUpO1xuIDMzNTpcdFxuIDMzNjpcdFx0XHRpZiAocGF5bG9hZF9hdmFpbCBcdTAwM2U9IDIpIHtcbiAzMzc6XHRcdFx0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCAyKSlcbiAzMzg6XHRcdFx0XHRcdGdvdG8gZHJvcDtcbiAzMzk6XHRcbiAzNDA6XHRcdFx0XHRpZiAoc2tiLVx1MDAzZWRhdGFbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFx1MDAyNlx1MDAyNiBza2ItXHUwMDNlZGF0YVsxXSA9PSBQUFBfVUkpIHtcbiAzNDE6XHRcdFx0XHRcdC8qIGNob3Agb2ZmIGFkZHJlc3MvY29udHJvbCAqL1xuIDM0MjpcdFx0XHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIDMpXG4gMzQzOlx0XHRcdFx0XHRcdGdvdG8gZHJvcDtcbiAzNDQ6XHRcdFx0XHRcdHNrYl9wdWxsKHNrYiwgMik7XG4gMzQ1Olx0XHRcdFx0fVxuIDM0NjpcdFx0XHR9XG4gMzQ3Olx0XG4gMzQ4Olx0XHRcdHNrYi1cdTAwM2VpcF9zdW1tZWQgPSBDSEVDS1NVTV9OT05FO1xuIDM0OTpcdFx0XHRza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgc2tiLVx1MDAzZWhlYWQtc2tiLVx1MDAzZWRhdGEpO1xuIDM1MDpcdFx0XHRwcHBfaW5wdXQoXHUwMDI2cG8tXHUwMDNlY2hhbiwgc2tiKTtcbiAzNTE6XHRcbiAzNTI6XHRcdFx0cmV0dXJuIE5FVF9SWF9TVUNDRVNTO1xuIDM1MzpcdFx0fVxuIDM1NDpcdGRyb3A6XG4gMzU1Olx0XHRrZnJlZV9za2Ioc2tiKTtcbiAzNTY6XHRcdHJldHVybiBORVRfUlhfRFJPUDtcbiAzNTc6XHR9XG4gMzU4Olx0XG4gMzU5Olx0c3RhdGljIGludCBwcHRwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDg3CgkJCQkJCQlvdXRwdXQ6IDE5MQoJCQkJCQkJdGhvdWdodHM6IDEwOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFBQVFAgUGF0Y2ggYW5kIFNhbml0aXplciBTZWxlY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgcGF0Y2ggd2l0aGluIGBwcHRwX3Jjdl9jb3JlKClgIGFuZCB0aGUgYnVnIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGZpeC4gIFByZXZpb3VzbHksIHRoZXJlIHdhcyBhIHNpZ25pZmljYW50IHZ1bG5lcmFiaWxpdHk6IGlmIHRoZSBpbmNvbWluZyBwYWNrZXQgcGF5bG9hZCB3YXMgc21hbGwsIHBhcnRpY3VsYXJseSB3aXRoIHplcm8gb3IgbWluaW1hbCBkYXRhLCB0aGUgY2hlY2tzIHdlcmUgaW5zdWZmaWNpZW50LiBgcHNrYl9tYXlfcHVsbGAgbWlnaHQgc3VjY2VlZCwgZXZlbiB0aG91Z2ggYWNjZXNzaW5nIGBwYXlsb2FkWzBdYCB0aHJvdWdoIGBwYXlsb2FkWzRdYCB3b3VsZCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIHRoZSBza2ImIzM5O3MgbGluZWFyIGJ1ZmZlciBvciB1bnB1bGxlZCBza2IgZGF0YS4gVGhpcyBpcyB0ZXh0Ym9vayBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3MuIFRoZSBzYW1lIGlzc3VlIGFsc28gb2NjdXJyZWQgaWYgYHNrYl9wdWxsYCB3YXMgY2FsbGVkLCB0aGVuIGBwYXlsb2FkWzBdYCB3YXMgYWNjZXNzZWQuIFRoZSBwYXRjaCBhZGRyZXNzZXMgdGhpcyBkaXJlY3RseS4KClRoZSBmaXggaW52b2x2ZXMgdHdvIGtleSBjaGFuZ2VzOiAgRmlyc3QsIHJpZ29yb3VzIGJvdW5kcyBjaGVja3MgYXJlIGludHJvZHVjZWQgKmJlZm9yZSogYW55IGFjY2VzcyB0byB0aGUgYHBheWxvYWRgIGRhdGEuIFRoaXMgZW1wbG95cyBhIGNvbWJpbmF0aW9uIG9mIGBwYXlsb2FkX2F2YWlsYCBhbmQgbW9yZSBwcmVjaXNlIGNhbGxzIHRvIGBwc2tiX21heV9wdWxsYCB3aXRoIGNhbGN1bGF0ZWQgbGVuZ3RocyAoYGhlYWRlcnNpemUgJiM0MzsgUFBQX0hEUkxFTiAmIzQzOyAxYCkuIFNlY29uZCwgYWNjZXNzIHRvIHRoZSBgc2tiLSZndDtkYXRhYCBwb2ludGVyIGFmdGVyIGBza2JfcHVsbGAgb2NjdXJzLgoKTm93LCBsZXQmIzM5O3MgZXZhbHVhdGUgd2hpY2ggc2FuaXRpemVyIGlzIG1vc3QgcmVsZXZhbnQuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGJ1ZywgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdpdGhpbiB0aGUgc2tiIGJ1ZmZlciwgdGhlIGNob2ljZSBpcyBmYWlybHkgY2xlYXIuIEtNU0FOIGlzIHByaW1hcmlseSBkZXNpZ25lZCB0byBkZXRlY3QgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRob3NlIGNvbmRpdGlvbnMgYXBwbHkgaGVyZS4KCjEuICAqKktlcm5lbCBkYXRhIGV4cG9zZWQgdG8gdXNlcnNwYWNlPyoqIE5vLiBUaGlzIGlzIGluY29taW5nIHBhY2tldCBwcm9jZXNzaW5nLgoyLiAgKipDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8qKiBOby4gQWxsIHZhcmlhYmxlcyB1c2VkIChwYXlsb2FkXF9hdmFpbCwgc2VxLCBoZWFkZXJzaXplLCBldGMuKSBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCjMuICAqKkNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggaW5pdGlhbGl6YXRpb24gaXNzdWVzPyoqIE5vLCB0aGUgY29kZSBpcyByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZC4KNC4gICoqQm91bmRzIGNoZWNrcyBsZWFkaW5nIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlPyoqIE5vLiBUaGUgZGF0YSBjb21pbmcgZnJvbSB0aGUgbmV0d29yayBpcyBwYWNrZXQgZGF0YSwgaW5pdGlhbGl6ZWQgdXBvbiByZWNlcHRpb24uCgpUaGUgYnVncyBhcmUgY2xlYXJseSBidWZmZXIgYm91bmRzIGlzc3VlcyDigJMgS0FTQU4gdGVycml0b3J5LiBLTVNBTiB3b3VsZCBiZSBpcnJlbGV2YW50LgoKKipLQVNBTiB2cy4gS01TQU46KioKCiogICAqKktBU0FOOioqICBEZXRlY3RzIGEgd2lkZSBhcnJheSBvZiBtZW1vcnkgc2FmZXR5IGlzc3VlcywgaW5jbHVkaW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzIChzbGFiLCBnbG9iYWwsIHN0YWNrKSwgYW5kIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMuIFRoZXNlIGFyZSBwcmVjaXNlbHkgdGhlIHR5cGVzIG9mIGlzc3VlcyB3ZSYjMzk7cmUgYWRkcmVzc2luZyB3aXRoIHRoZSBwYXRjaCYjMzk7cyBib3VuZHMgY2hlY2tzLgoqICAgKipLTVNBTjoqKiBUYXJnZXRzIHRoZSBkZXRlY3Rpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoaXMgaXMgbm90IHRoZSBpc3N1ZSBoZXJlLgoKSW4gc2hvcnQsIHRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgcGFyc2luZyBpbiB0aGUgUFBUUCBuZXR3b3JrIHJlY2VpdmUgcGF0aCwgYWRkaW5nIGNydWNpYWwgbGVuZ3RoIGNoZWNrcyAoYHBza2JfbWF5X3B1bGxgIGFuZCBgcGF5bG9hZF9hdmFpbCAmZ3Q7PSAuLi5gKSBiZWZvcmUgaW5kZXhpbmcgaW50byB0aGUgbmV0d29yayBza2IgcGF5bG9hZCBidWZmZXJzLiBUaGVzZSBhZGRpdGlvbnMgZGlyZWN0bHkgYWRkcmVzcyB0aGUgdnVsbmVyYWJpbGl0eSBvZiBvdXQtb2YtYm91bmRzIGJ1ZmZlciByZWFkcyBvbiBzaG9ydCBvciBub24tbGluZWFyIHNrYiBwYWNrZXRzLiBTaW5jZSB0aGVyZSYjMzk7cyBubyB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgaW52b2x2ZWQgb3IgYW55IG9mIHRoZSB1c3VhbCBLTVNBTiBjb25jZXJucywgS0FTQU4gaXMgdGhlIGNvcnJlY3Qgc2FuaXRpemVyIGhlcmUuIE5vIEtNU0FOIGZ1enppbmcgaXMgbmVjZXNzYXJ5LiBUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU5gIHRvIGBmYWxzZWAuIEkgbmVlZCB0byBub3cgZW5zdXJlIHRoYXQgbXkgYW5hbHlzaXMgYW5kIHJlYXNvbmluZyBhcmUgY2xlYXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBib3VuZHMgY2hlY2tpbmcgYW5kIHNrYiBwdWxsIG9wZXJhdGlvbnMgaW4gdGhlIFBQVFAgcmVjZWl2ZSBwYXRoIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKS4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgYWRlcXVhdGUgcGF5bG9hZCBieXRlcyBhcmUgYXZhaWxhYmxlIGFuZCBwdWxsZWQgaW50byB0aGUgc2tiIGxpbmVhciBhcmVhIGJlZm9yZSBpbmRleGluZyBpbnRvIHNrYiBwYXlsb2FkIG9mZnNldHMgKHBheWxvYWRbMF0gdGhyb3VnaCBwYXlsb2FkWzRdIGFuZCBza2ItXHUwMDNlZGF0YVswXSB0aHJvdWdoIHNrYi1cdTAwM2VkYXRhWzFdKS5cblxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgKE9PQikgbWVtb3J5IHJlYWRzIG9uIHRydW5jYXRlZCBvciBtYWxmb3JtZWQgbmV0d29yayBwYWNrZXRzLiBPT0IgcmVhZHMgYW5kIGludmFsaWQgc2tiIGJ1ZmZlciBkZXJlZmVyZW5jZXMgYXJlIGRpcmVjdGx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIEtBU0FOIGJ1aWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgY29weSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYm91bmRzIGNoZWNraW5nIGFuZCBza2IgcHVsbCBvcGVyYXRpb25zIGluIHRoZSBQUFRQIHJlY2VpdmUgcGF0aCAoZHJpdmVycy9uZXQvcHBwL3BwdHAuYykuIFNwZWNpZmljYWxseSwgaXQgZW5zdXJlcyB0aGF0IGFkZXF1YXRlIHBheWxvYWQgYnl0ZXMgYXJlIGF2YWlsYWJsZSBhbmQgcHVsbGVkIGludG8gdGhlIHNrYiBsaW5lYXIgYXJlYSBiZWZvcmUgaW5kZXhpbmcgaW50byBza2IgcGF5bG9hZCBvZmZzZXRzIChwYXlsb2FkWzBdIHRocm91Z2ggcGF5bG9hZFs0XSBhbmQgc2tiLVx1MDAzZWRhdGFbMF0gdGhyb3VnaCBza2ItXHUwMDNlZGF0YVsxXSkuXG5cblRoZXNlIGNoYW5nZXMgcHJldmVudCBvdXQtb2YtYm91bmRzIChPT0IpIG1lbW9yeSByZWFkcyBvbiB0cnVuY2F0ZWQgb3IgbWFsZm9ybWVkIG5ldHdvcmsgcGFja2V0cy4gT09CIHJlYWRzIGFuZCBpbnZhbGlkIHNrYiBidWZmZXIgZGVyZWZlcmVuY2VzIGFyZSBkaXJlY3RseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNTowMS40MzM1Mjc1MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYxNzM5MjY3MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBUUFwiLFxuICAgIFwiUFBQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHRwX3Jjdl9jb3JlXCIsXG4gICAgXCJwcHRwX3JjdlwiLFxuICAgIFwicHB0cF9jcmVhdGVcIixcbiAgICBcInBwdHBfY29ubmVjdFwiLFxuICAgIFwicHB0cF9iaW5kXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYm91bmRzIGNoZWNraW5nIGFuZCBza2IgcHVsbCBvcGVyYXRpb25zIGluIHRoZSBQUFRQIHJlY2VpdmUgcGF0aCAoZHJpdmVycy9uZXQvcHBwL3BwdHAuYykuIFNwZWNpZmljYWxseSwgaXQgZW5zdXJlcyB0aGF0IGFkZXF1YXRlIHBheWxvYWQgYnl0ZXMgYXJlIGF2YWlsYWJsZSBhbmQgcHVsbGVkIGludG8gdGhlIHNrYiBsaW5lYXIgYXJlYSBiZWZvcmUgaW5kZXhpbmcgaW50byBza2IgcGF5bG9hZCBvZmZzZXRzIChwYXlsb2FkWzBdIHRocm91Z2ggcGF5bG9hZFs0XSBhbmQgc2tiLVxcdTAwM2VkYXRhWzBdIHRocm91Z2ggc2tiLVxcdTAwM2VkYXRhWzFdKS5cXG5cXG5UaGVzZSBjaGFuZ2VzIHByZXZlbnQgb3V0LW9mLWJvdW5kcyAoT09CKSBtZW1vcnkgcmVhZHMgb24gdHJ1bmNhdGVkIG9yIG1hbGZvcm1lZCBuZXR3b3JrIHBhY2tldHMuIE9PQiByZWFkcyBhbmQgaW52YWxpZCBza2IgYnVmZmVyIGRlcmVmZXJlbmNlcyBhcmUgZGlyZWN0bHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgS0FTQU4gYnVpbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBjb3B5IGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgcmVjZXB0aW9uIHBhcnNpbmcgYW5kIGJvdW5kcyBjaGVja2luZyBsb2dpYyBpbiBwcHRwX3Jjdl9jb3JlKCkgd2l0aGluIHRoZSBQUFRQIG5ldHdvcmsgcHJvdG9jb2wgZHJpdmVyIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKSwgZW5zdXJpbmcgcGF5bG9hZCBhdmFpbGFiaWxpdHkgY2hlY2tzIGFuZCBwc2tiX21heV9wdWxsKCkgY2FsbHMgcHJlY2VkZSBoZWFkZXIgZGVyZWZlcmVuY2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb24gdHJ1bmNhdGVkIHBhY2tldHMuIFRoaXMgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgQUZfUFBQT1ggc29ja2V0cyBhbmQgR1JFIHBhY2tldCBkZWxpdmVyeS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MDEuNDMzNTM0Nzk3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODc0OTM2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyMTU1OTU5MjVmMjk4ZWVmNWYyMmQ5YzdkMjhiMzUxMjJkYTAyYzhmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDIgMTY6MzU6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcXG5pbmRleCBhNzk3YTA2MDZmNmI0Li40ZmI5NGE0NTVjNTc0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXFxuQEAgLTI3NSw2ICsyNzUsNyBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuIFxcdHN0cnVjdCBwcHRwX29wdCAqb3B0ID0gXFx1MDAyNnBvLVxcdTAwM2Vwcm90by5wcHRwO1xcbiBcXHRpbnQgaGVhZGVyc2l6ZSwgcGF5bG9hZF9sZW4sIHNlcTtcXG4rXFx0dW5zaWduZWQgaW50IHBheWxvYWRfYXZhaWw7XFxuIFxcdF9fdTggKnBheWxvYWQ7XFxuIFxcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcXG4gXFxuQEAgLTMxNCwyMyArMzE1LDM0IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgKyBwYXlsb2FkX2xlbikpXFxuIFxcdFxcdGdvdG8gZHJvcDtcXG4gXFxuLVxcdHBheWxvYWQgPSBza2ItXFx1MDAzZWRhdGEgKyBoZWFkZXJzaXplO1xcbitcXHRwYXlsb2FkX2F2YWlsID0gc2tiLVxcdTAwM2VsZW4gLSBoZWFkZXJzaXplO1xcbiBcXHQvKiBjaGVjayBmb3IgZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyICovXFxuIFxcdGlmIChzZXEgXFx1MDAzYyBvcHQtXFx1MDAzZXNlcV9yZWN2ICsgMSB8fCBXUkFQUEVEKG9wdC1cXHUwMDNlc2VxX3JlY3YsIHNlcSkpIHtcXG4tXFx0XFx0aWYgKChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUykgXFx1MDAyNlxcdTAwMjYgKHBheWxvYWRbMV0gPT0gUFBQX1VJKSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHRcXHQoUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1ApIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdFxcdCgocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEpIHx8IChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUCkpKVxcbi1cXHRcXHRcXHRnb3RvIGFsbG93X3BhY2tldDtcXG4rXFx0XFx0aWYgKHBheWxvYWRfYXZhaWwgXFx1MDAzZT0gUFBQX0hEUkxFTiArIDEpIHtcXG4rXFx0XFx0XFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGVhZGVyc2l6ZSArIFBQUF9IRFJMRU4gKyAxKSlcXG4rXFx0XFx0XFx0XFx0Z290byBkcm9wO1xcbitcXG4rXFx0XFx0XFx0cGF5bG9hZCA9IHNrYi1cXHUwMDNlZGF0YSArIGhlYWRlcnNpemU7XFxuK1xcdFxcdFxcdGlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyBcXHUwMDI2XFx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0ICAgIChwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUSB8fCBwYXlsb2FkWzRdID09IFBQUF9MQ1BfRUNIT1JFUCkpXFxuK1xcdFxcdFxcdFxcdGdvdG8gYWxsb3dfcGFja2V0O1xcbitcXHRcXHR9XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdG9wdC1cXHUwMDNlc2VxX3JlY3YgPSBzZXE7XFxuIGFsbG93X3BhY2tldDpcXG4gXFx0XFx0c2tiX3B1bGwoc2tiLCBoZWFkZXJzaXplKTtcXG4gXFxuLVxcdFxcdGlmIChwYXlsb2FkWzBdID09IFBQUF9BTExTVEFUSU9OUyBcXHUwMDI2XFx1MDAyNiBwYXlsb2FkWzFdID09IFBQUF9VSSkge1xcbi1cXHRcXHRcXHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cXG4tXFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgMylcXG4rXFx0XFx0aWYgKHBheWxvYWRfYXZhaWwgXFx1MDAzZT0gMikge1xcbitcXHRcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCAyKSlcXG4gXFx0XFx0XFx0XFx0Z290byBkcm9wO1xcbi1cXHRcXHRcXHRza2JfcHVsbChza2IsIDIpO1xcbitcXG4rXFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlZGF0YVswXSA9PSBQUFBfQUxMU1RBVElPTlMgXFx1MDAyNlxcdTAwMjYgc2tiLVxcdTAwM2VkYXRhWzFdID09IFBQUF9VSSkge1xcbitcXHRcXHRcXHRcXHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cXG4rXFx0XFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgMylcXG4rXFx0XFx0XFx0XFx0XFx0Z290byBkcm9wO1xcbitcXHRcXHRcXHRcXHRza2JfcHVsbChza2IsIDIpO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdHNrYi1cXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fTk9ORTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MDIuMDIxNzg3NzAzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NzkyODMyODIxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUFRQXCIsXG4gICAgXCJQUFBcIixcbiAgICBcIk5FVF9JUEdSRV9ERU1VWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBwdHBfcmN2X2NvcmVcIixcbiAgICBcInBwdHBfcmN2XCIsXG4gICAgXCJwcHRwX2NyZWF0ZVwiLFxuICAgIFwicHB0cF9jb25uZWN0XCIsXG4gICAgXCJwcHRwX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgcmVjZXB0aW9uIHBhcnNpbmcgYW5kIGJvdW5kcyBjaGVja2luZyBsb2dpYyBpbiBwcHRwX3Jjdl9jb3JlKCkgd2l0aGluIHRoZSBQUFRQIG5ldHdvcmsgcHJvdG9jb2wgZHJpdmVyIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKSwgZW5zdXJpbmcgcGF5bG9hZCBhdmFpbGFiaWxpdHkgY2hlY2tzIGFuZCBwc2tiX21heV9wdWxsKCkgY2FsbHMgcHJlY2VkZSBoZWFkZXIgZGVyZWZlcmVuY2luZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb24gdHJ1bmNhdGVkIHBhY2tldHMuIFRoaXMgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgQUZfUFBQT1ggc29ja2V0cyBhbmQgR1JFIHBhY2tldCBkZWxpdmVyeS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjE1NTk1OTI1ZjI5OGVlZjVmMjJkOWM3ZDI4YjM1MTIyZGEwMmM4ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTY6MzU6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggYTc5N2EwNjA2ZjZiNC4uNGZiOTRhNDU1YzU3NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0yNzUsNiArMjc1LDcgQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcbiBcdHN0cnVjdCBwcHRwX29wdCAqb3B0ID0gXHUwMDI2cG8tXHUwMDNlcHJvdG8ucHB0cDtcbiBcdGludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxO1xuK1x0dW5zaWduZWQgaW50IHBheWxvYWRfYXZhaWw7XG4gXHRfX3U4ICpwYXlsb2FkO1xuIFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuIFxuQEAgLTMxNCwyMyArMzE1LDM0IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZWFkZXJzaXplICsgcGF5bG9hZF9sZW4pKVxuIFx0XHRnb3RvIGRyb3A7XG4gXG4tXHRwYXlsb2FkID0gc2tiLVx1MDAzZWRhdGEgKyBoZWFkZXJzaXplO1xuK1x0cGF5bG9hZF9hdmFpbCA9IHNrYi1cdTAwM2VsZW4gLSBoZWFkZXJzaXplO1xuIFx0LyogY2hlY2sgZm9yIGV4cGVjdGVkIHNlcXVlbmNlIG51bWJlciAqL1xuIFx0aWYgKHNlcSBcdTAwM2Mgb3B0LVx1MDAzZXNlcV9yZWN2ICsgMSB8fCBXUkFQUEVEKG9wdC1cdTAwM2VzZXFfcmVjdiwgc2VxKSkge1xuLVx0XHRpZiAoKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TKSBcdTAwMjZcdTAwMjYgKHBheWxvYWRbMV0gPT0gUFBQX1VJKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHRcdChQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQoKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRKSB8fCAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKSlcbi1cdFx0XHRnb3RvIGFsbG93X3BhY2tldDtcbitcdFx0aWYgKHBheWxvYWRfYXZhaWwgXHUwMDNlPSBQUFBfSERSTEVOICsgMSkge1xuK1x0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgKyBQUFBfSERSTEVOICsgMSkpXG4rXHRcdFx0XHRnb3RvIGRyb3A7XG4rXG4rXHRcdFx0cGF5bG9hZCA9IHNrYi1cdTAwM2VkYXRhICsgaGVhZGVyc2l6ZTtcbitcdFx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuK1x0XHRcdCAgICBQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRIHx8IHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSlcbitcdFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuK1x0XHR9XG4gXHR9IGVsc2Uge1xuIFx0XHRvcHQtXHUwMDNlc2VxX3JlY3YgPSBzZXE7XG4gYWxsb3dfcGFja2V0OlxuIFx0XHRza2JfcHVsbChza2IsIGhlYWRlcnNpemUpO1xuIFxuLVx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7XG4tXHRcdFx0LyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovXG4tXHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIDMpXG4rXHRcdGlmIChwYXlsb2FkX2F2YWlsIFx1MDAzZT0gMikge1xuK1x0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIDIpKVxuIFx0XHRcdFx0Z290byBkcm9wO1xuLVx0XHRcdHNrYl9wdWxsKHNrYiwgMik7XG4rXG4rXHRcdFx0aWYgKHNrYi1cdTAwM2VkYXRhWzBdID09IFBQUF9BTExTVEFUSU9OUyBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWRhdGFbMV0gPT0gUFBQX1VJKSB7XG4rXHRcdFx0XHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cbitcdFx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAzKVxuK1x0XHRcdFx0XHRnb3RvIGRyb3A7XG4rXHRcdFx0XHRza2JfcHVsbChza2IsIDIpO1xuK1x0XHRcdH1cbiBcdFx0fVxuIFxuIFx0XHRza2ItXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fTk9ORTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjAyLjAyMTc5MDEzM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwOTUyNjc1MTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGF0IFBQVFAgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCwgYW5kIG15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYCBmaWxlLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgY2hhbmdlcyBzZWVtIHRvIGJlLiBTcGVjaWZpY2FsbHksIEknbSB6ZXJvaW5nIGluIG9uIHRoZSBgcHB0cF9yY3ZfY29yZWAgZnVuY3Rpb24uIEknbGwgbmVlZCB0byBkaXNzZWN0IHRoYXQgdG8gZ3Jhc3AgdGhlIGltcGFjdCBvZiB0aGUgcGF0Y2guXG5cbkJleW9uZCB0aGUgY29kZSBpdHNlbGYsIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBpbnRlcmFjdGlvbnMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGFuZCBzeW1ib2wgZGVmaW5pdGlvbnMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvcHBwL2AgZGlyZWN0b3J5LCBpbmNsdWRpbmcgdGhhdCBgcHB0cC5jYCBmaWxlLiBJIG5lZWQgdG8ga25vdyBob3cgdGhpcyBtb2RpZmljYXRpb24gaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIFBQUCBzdGFjaywgYW5kIGhvdyBpdCBtaWdodCBiZSBlbmFibGVkL2Rpc2FibGVkLlxuXG5GaW5hbGx5LCBJJ2xsIGxldmVyYWdlIHRoZSB0b29scyBhdCBteSBkaXNwb3NhbC4gR3JlcHBpbmcgdGhyb3VnaCB0aGUgY29kZWJhc2Ugb3Igc3RyYXRlZ2ljYWxseSB1c2luZyBgcmVhZC1maWxlYCB0byB6ZXJvIGluIG9uIHJlbGV2YW50IGNvZGUgc2VjdGlvbnMsIGRlcGVuZGVuY2llcywgb3IgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyBpcyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIEl0J3MgdGltZSB0byBnZXQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgY2hhbmdlcyBhbmQgaG93IHRoZXkgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzAyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNToxMi45NzQ0NjgzNTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzkzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNjAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjYwOlxcdFxcdGlwX3NlbGVjdF9pZGVudChuZXQsIHNrYiwgTlVMTCk7XFxuIDI2MTpcXHRcXHRpcF9zZW5kX2NoZWNrKGlwaCk7XFxuIDI2MjpcXHRcXG4gMjYzOlxcdFxcdGlwX2xvY2FsX291dChuZXQsIHNrYi1cXHUwMDNlc2ssIHNrYik7XFxuIDI2NDpcXHRcXHRyZXR1cm4gMTtcXG4gMjY1OlxcdFxcbiAyNjY6XFx0dHhfZXJyb3I6XFxuIDI2NzpcXHRcXHRpcF9ydF9wdXQocnQpO1xcbiAyNjg6XFx0dHhfZHJvcDpcXG4gMjY5OlxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiAyNzA6XFx0XFx0cmV0dXJuIDE7XFxuIDI3MTpcXHR9XFxuIDI3MjpcXHRcXG4gMjczOlxcdHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIDI3NDpcXHR7XFxuIDI3NTpcXHRcXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuIDI3NjpcXHRcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdCA9IFxcdTAwMjZwby1cXHUwMDNlcHJvdG8ucHB0cDtcXG4gMjc3OlxcdFxcdGludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxO1xcbiAyNzg6XFx0XFx0dW5zaWduZWQgaW50IHBheWxvYWRfYXZhaWw7XFxuIDI3OTpcXHRcXHRfX3U4ICpwYXlsb2FkO1xcbiAyODA6XFx0XFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xcbiAyODE6XFx0XFxuIDI4MjpcXHRcXHRpZiAoIShzay1cXHUwMDNlc2tfc3RhdGUgXFx1MDAyNiBQUFBPWF9DT05ORUNURUQpKVxcbiAyODM6XFx0XFx0XFx0Z290byBkcm9wO1xcbiAyODQ6XFx0XFxuIDI4NTpcXHRcXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXFx1MDAzZWRhdGEpO1xcbiAyODY6XFx0XFx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XFxuIDI4NzpcXHRcXG4gMjg4OlxcdFxcdC8qIHRlc3QgaWYgYWNrbm93bGVkZ2VtZW50IHByZXNlbnQgKi9cXG4gMjg5OlxcdFxcdGlmIChHUkVfSVNfQUNLKGhlYWRlci1cXHUwMDNlZ3JlX2hkLmZsYWdzKSkge1xcbiAyOTA6XFx0XFx0XFx0X191MzIgYWNrO1xcbiAyOTE6XFx0XFxuIDI5MjpcXHRcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZWFkZXJzaXplKSlcXG4gMjkzOlxcdFxcdFxcdFxcdGdvdG8gZHJvcDtcXG4gMjk0OlxcdFxcdFxcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuIDI5NTpcXHRcXG4gMjk2OlxcdFxcdFxcdC8qIGFjayBpbiBkaWZmZXJlbnQgcGxhY2UgaWYgUyA9IDAgKi9cXG4gMjk3OlxcdFxcdFxcdGFjayA9IEdSRV9JU19TRVEoaGVhZGVyLVxcdTAwM2VncmVfaGQuZmxhZ3MpID8gbnRvaGwoaGVhZGVyLVxcdTAwM2VhY2spIDpcXG4gMjk4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBudG9obChoZWFkZXItXFx1MDAzZXNlcSk7XFxuIDI5OTpcXHRcXHRcXHRpZiAoYWNrIFxcdTAwM2Ugb3B0LVxcdTAwM2VhY2tfcmVjdilcXG4gMzAwOlxcdFxcdFxcdFxcdG9wdC1cXHUwMDNlYWNrX3JlY3YgPSBhY2s7XFxuIDMwMTpcXHRcXHRcXHQvKiBhbHNvIGhhbmRsZSBzZXF1ZW5jZSBudW1iZXIgd3JhcC1hcm91bmQgICovXFxuIDMwMjpcXHRcXHRcXHRpZiAoV1JBUFBFRChhY2ssIG9wdC1cXHUwMDNlYWNrX3JlY3YpKVxcbiAzMDM6XFx0XFx0XFx0XFx0b3B0LVxcdTAwM2VhY2tfcmVjdiA9IGFjaztcXG4gMzA0OlxcdFxcdH0gZWxzZSB7XFxuIDMwNTpcXHRcXHRcXHRoZWFkZXJzaXplIC09IHNpemVvZihoZWFkZXItXFx1MDAzZWFjayk7XFxuIDMwNjpcXHRcXHR9XFxuIDMwNzpcXHRcXHQvKiB0ZXN0IGlmIHBheWxvYWQgcHJlc2VudCAqL1xcbiAzMDg6XFx0XFx0aWYgKCFHUkVfSVNfU0VRKGhlYWRlci1cXHUwMDNlZ3JlX2hkLmZsYWdzKSlcXG4gMzA5OlxcdFxcdFxcdGdvdG8gZHJvcDtcXG4gMzEwOlxcdFxcbiAzMTE6XFx0XFx0cGF5bG9hZF9sZW4gPSBudG9ocyhoZWFkZXItXFx1MDAzZXBheWxvYWRfbGVuKTtcXG4gMzEyOlxcdFxcdHNlcSAgICAgICAgID0gbnRvaGwoaGVhZGVyLVxcdTAwM2VzZXEpO1xcbiAzMTM6XFx0XFxuIDMxNDpcXHRcXHQvKiBjaGVjayBmb3IgaW5jb21wbGV0ZSBwYWNrZXQgKGxlbmd0aCBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQpICovXFxuIDMxNTpcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZWFkZXJzaXplICsgcGF5bG9hZF9sZW4pKVxcbiAzMTY6XFx0XFx0XFx0Z290byBkcm9wO1xcbiAzMTc6XFx0XFxuIDMxODpcXHRcXHRwYXlsb2FkX2F2YWlsID0gc2tiLVxcdTAwM2VsZW4gLSBoZWFkZXJzaXplO1xcbiAzMTk6XFx0XFx0LyogY2hlY2sgZm9yIGV4cGVjdGVkIHNlcXVlbmNlIG51bWJlciAqL1xcbiAzMjA6XFx0XFx0aWYgKHNlcSBcXHUwMDNjIG9wdC1cXHUwMDNlc2VxX3JlY3YgKyAxIHx8IFdSQVBQRUQob3B0LVxcdTAwM2VzZXFfcmVjdiwgc2VxKSkge1xcbiAzMjE6XFx0XFx0XFx0aWYgKHBheWxvYWRfYXZhaWwgXFx1MDAzZT0gUFBQX0hEUkxFTiArIDEpIHtcXG4gMzIyOlxcdFxcdFxcdFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgKyBQUFBfSERSTEVOICsgMSkpXFxuIDMyMzpcXHRcXHRcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIDMyNDpcXHRcXG4gMzI1OlxcdFxcdFxcdFxcdHBheWxvYWQgPSBza2ItXFx1MDAzZWRhdGEgKyBoZWFkZXJzaXplO1xcbiAzMjY6XFx0XFx0XFx0XFx0aWYgKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFxcdTAwMjZcXHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFxcdTAwMjZcXHUwMDI2XFxuIDMyNzpcXHRcXHRcXHRcXHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXFx1MDAyNlxcdTAwMjZcXG4gMzI4OlxcdFxcdFxcdFxcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxcbiAzMjk6XFx0XFx0XFx0XFx0XFx0Z290byBhbGxvd19wYWNrZXQ7XFxuIDMzMDpcXHRcXHRcXHR9XFxuIDMzMTpcXHRcXHR9IGVsc2Uge1xcbiAzMzI6XFx0XFx0XFx0b3B0LVxcdTAwM2VzZXFfcmVjdiA9IHNlcTtcXG4gMzMzOlxcdGFsbG93X3BhY2tldDpcXG4gMzM0OlxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgaGVhZGVyc2l6ZSk7XFxuIDMzNTpcXHRcXG4gMzM2OlxcdFxcdFxcdGlmIChwYXlsb2FkX2F2YWlsIFxcdTAwM2U9IDIpIHtcXG4gMzM3OlxcdFxcdFxcdFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIDIpKVxcbiAzMzg6XFx0XFx0XFx0XFx0XFx0Z290byBkcm9wO1xcbiAzMzk6XFx0XFxuIDM0MDpcXHRcXHRcXHRcXHRpZiAoc2tiLVxcdTAwM2VkYXRhWzBdID09IFBQUF9BTExTVEFUSU9OUyBcXHUwMDI2XFx1MDAyNiBza2ItXFx1MDAzZWRhdGFbMV0gPT0gUFBQX1VJKSB7XFxuIDM0MTpcXHRcXHRcXHRcXHRcXHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cXG4gMzQyOlxcdFxcdFxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIDMpXFxuIDM0MzpcXHRcXHRcXHRcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIDM0NDpcXHRcXHRcXHRcXHRcXHRza2JfcHVsbChza2IsIDIpO1xcbiAzNDU6XFx0XFx0XFx0XFx0fVxcbiAzNDY6XFx0XFx0XFx0fVxcbiAzNDc6XFx0XFxuIDM0ODpcXHRcXHRcXHRza2ItXFx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX05PTkU7XFxuIDM0OTpcXHRcXHRcXHRza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgc2tiLVxcdTAwM2VoZWFkLXNrYi1cXHUwMDNlZGF0YSk7XFxuIDM1MDpcXHRcXHRcXHRwcHBfaW5wdXQoXFx1MDAyNnBvLVxcdTAwM2VjaGFuLCBza2IpO1xcbiAzNTE6XFx0XFxuIDM1MjpcXHRcXHRcXHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XFxuIDM1MzpcXHRcXHR9XFxuIDM1NDpcXHRkcm9wOlxcbiAzNTU6XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIDM1NjpcXHRcXHRyZXR1cm4gTkVUX1JYX0RST1A7XFxuIDM1NzpcXHR9XFxuIDM1ODpcXHRcXG4gMzU5OlxcdHN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MTIuOTc0NjEwNjE1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI2MzEwMDk0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUFBQIE5ldHdvcmtpbmcgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBmb2N1c2luZyBvbiB0aGUgUFBQIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUga2VybmVsJ3MgZHJpdmVyIGluZnJhc3RydWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIFBvaW50LXRvLVBvaW50IFByb3RvY29sIChQUFApIGNvbmZpZ3VyYXRpb24uIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgc3RhcnRpbmcgd2l0aCB0aGUgYGRyaXZlcnMvbmV0L3BwcC9gIGRpcmVjdG9yeS4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luLCB0byBmaWd1cmUgb3V0IHdoZXJlIFBQUCBzdXBwb3J0LCBhbmQgYnkgZXh0ZW5zaW9uLCB0aGUgUFBUUCAoUG9pbnQtdG8tUG9pbnQgVHVubmVsaW5nIFByb3RvY29sKSBvcHRpb25zIGFyZSBkZWZpbmVkLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzIGFuZCBkZXBlbmRlbmNpZXMuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgdW5kZXJzdGFuZCBob3cgUFBUUCBpcyBpbnRlZ3JhdGVkIGFuZCBwb3NzaWJseSBldmVuLCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGUgZGVzaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjMyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNToxNS4yMzc3MTU1NjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcwOTI5NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHB0cFxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19QUFBPRSkgKz0gcHBwb2Uub1xcbmRyaXZlcnMvbmV0L3BwcC9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfUFBUUCkgKz0gcHB0cC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjE1LjMxNDgxODUzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg5MzM1NzgwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFBQVFAgQ29uZmlndXJhdGlvbiBpbiB0aGUgS2VybmVsKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBDT05GSUdfUFBUUGAgb3B0aW9uIHJlc2lkZXMgaW4gdGhlIGtlcm5lbCdzIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbiBleHBlcmllbmNlZCBrZXJuZWwgZGV2ZWxvcGVyLCBpcyB0byBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlLiBUaGUgbGlrZWx5IHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBQUFAgbmV0d29ya2luZyBjb2RlLCBzbyBJJ2xsIGNoZWNrIGluc2lkZSB0aGUgYGRyaXZlcnMvbmV0L3BwcGAgZGlyZWN0b3J5LiBNb3JlIHNwZWNpZmljYWxseSwgSSBrbm93IHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSB0eXBpY2FsbHkgZGVmaW5lZCBpbiBgS2NvbmZpZ2AgZmlsZXMuIFRoZXJlZm9yZSwgbXkgaW5pdGlhbCB0YXJnZXQgd2lsbCBiZSBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgLiBUaGF0IGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIGRlZmluaXRpb24gZm9yIGBDT05GSUdfUFBUUGAgYW5kIHRlbGwgbWUgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLiBUaGF0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MjYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNToxNy4yMDgyMDQ4ODhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMzYwOTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQUFRQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNTM9Y29uZmlnIFBQUE9FX0hBU0hfQklUU1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTYwLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE2MTpjb25maWcgUFBUUFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE2Mi1cXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgSVB2NCAoUFBUUClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjE3LjMxMTU3MzE4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzE1ODgwNjc2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBQUFRQIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJMZXQncyBjcmFjayBvcGVuIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gUFBUUC5cIiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgUFBUUCBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gSSdtIGFzc3VtaW5nIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIGtlcm5lbCB2ZXJzaW9uIG9yIGNvbmZpZ3VyYXRpb24gY29udGV4dCwgc28gSSdtIGZvY3VzaW5nIG15IG1lbnRhbCBlbmVyZ3kgb24gdGhhdC4gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgZGVwZW5kZW5jaWVzLCBvcHRpb25zLCBkZWZhdWx0cywgYW5kIHBvdGVudGlhbGx5IGFueSB0cmlzdGF0ZSBsb2dpYyBhc3NvY2lhdGVkIHdpdGggdGhlIFBQVFAgc3VwcG9ydC4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGFzc2Vzc2luZyBob3cgUFBUUCBzdXBwb3J0IGludGVyYWN0cyB3aXRoIG90aGVyIG5ldHdvcmsgY29tcG9uZW50cyBhbmQgc2VjdXJpdHkgZmVhdHVyZXMuIE15IGdvYWwgaXMgYSBmdWxsIHBpY3R1cmUgb2YgUFBUUCdzIGJ1aWxkIHRpbWUgaW50ZWdyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMzYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNToyMC40NzAzODM0MDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE1MDpcXHRcXG4gMTUxOlxcdGVuZGNob2ljZVxcbiAxNTI6XFx0XFxuIDE1MzpcXHRjb25maWcgUFBQT0VfSEFTSF9CSVRTXFxuIDE1NDpcXHRcXHRpbnRcXG4gMTU1OlxcdFxcdGRlZmF1bHQgMSBpZiBQUFBPRV9IQVNIX0JJVFNfMVxcbiAxNTY6XFx0XFx0ZGVmYXVsdCAyIGlmIFBQUE9FX0hBU0hfQklUU18yXFxuIDE1NzpcXHRcXHRkZWZhdWx0IDQgaWYgUFBQT0VfSEFTSF9CSVRTXzRcXG4gMTU4OlxcdFxcdGRlZmF1bHQgOCBpZiBQUFBPRV9IQVNIX0JJVFNfOFxcbiAxNTk6XFx0XFx0ZGVmYXVsdCA0XFxuIDE2MDpcXHRcXG4gMTYxOlxcdGNvbmZpZyBQUFRQXFxuIDE2MjpcXHRcXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgSVB2NCAoUFBUUClcXFwiXFxuIDE2MzpcXHRcXHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxcbiAxNjQ6XFx0XFx0c2VsZWN0IFBQUE9YXFxuIDE2NTpcXHRcXHRoZWxwXFxuIDE2NjpcXHRcXHQgIFN1cHBvcnQgZm9yIFBQUCBvdmVyIElQdjQuKFBvaW50LXRvLVBvaW50IFR1bm5lbGluZyBQcm90b2NvbClcXG4gMTY3OlxcdFxcbiAxNjg6XFx0XFx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBwcHBkIHBsdWdpbiB0byB3b3JrIGluIGNsaWVudCBtb2RlIG9yXFxuIDE2OTpcXHRcXHQgIG1vZGlmaWVkIHBwdHBkIChwb3B0b3ApIHRvIHdvcmsgaW4gc2VydmVyIG1vZGUuXFxuIDE3MDpcXHRcXHQgIFNlZSBodHRwOi8vYWNjZWwtcHB0cC5zb3VyY2Vmb3JnZS5uZXQvIGZvciBpbmZvcm1hdGlvbiBob3cgdG9cXG4gMTcxOlxcdFxcdCAgdXRpbGl6ZSB0aGlzIG1vZHVsZS5cXG4gMTcyOlxcdFxcbiAxNzM6XFx0Y29uZmlnIFBQUE9MMlRQXFxuIDE3NDpcXHRcXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgTDJUUFxcXCJcXG4gMTc1OlxcdFxcdGRlcGVuZHMgb24gTDJUUFxcbiAxNzY6XFx0XFx0c2VsZWN0IFBQUE9YXFxuIDE3NzpcXHRcXHRoZWxwXFxuIDE3ODpcXHRcXHQgIFN1cHBvcnQgZm9yIFBQUC1vdmVyLUwyVFAgc29ja2V0IGZhbWlseS4gTDJUUCBpcyBhIHByb3RvY29sXFxuIDE3OTpcXHRcXHQgIHVzZWQgYnkgSVNQcyBhbmQgZW50ZXJwcmlzZXMgdG8gdHVubmVsIFBQUCB0cmFmZmljIG92ZXIgVURQXFxuIDE4MDpcXHRcXHQgIHR1bm5lbHMuIEwyVFAgaXMgcmVwbGFjaW5nIFBQVFAgZm9yIFZQTiB1c2VzLlxcbiAxODE6XFx0aWYgVFRZXFxuIDE4MjpcXHRcXG4gMTgzOlxcdGNvbmZpZyBQUFBfQVNZTkNcXG4gMTg0OlxcdFxcdHRyaXN0YXRlIFxcXCJQUFAgc3VwcG9ydCBmb3IgYXN5bmMgc2VyaWFsIHBvcnRzXFxcIlxcbiAxODU6XFx0XFx0c2VsZWN0IENSQ19DQ0lUVFxcbiAxODY6XFx0XFx0aGVscFxcbiAxODc6XFx0XFx0ICBTYXkgWSAob3IgTSkgaGVyZSBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSBQUFAgb3ZlciBzdGFuZGFyZFxcbiAxODg6XFx0XFx0ICBhc3luY2hyb25vdXMgc2VyaWFsIHBvcnRzLCBzdWNoIGFzIENPTTEgb3IgQ09NMiBvbiBhIFBDLiAgSWYgeW91IHVzZVxcbiAxODk6XFx0XFx0ICBhIG1vZGVtIChub3QgYSBzeW5jaHJvbm91cyBvciBJU0ROIG1vZGVtKSB0byBjb250YWN0IHlvdXIgSVNQLCB5b3VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MjAuNDcwNTM0ODIyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNzk5OTAyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgTkVUX0lQR1JFX0RFTVVYYCBpbiBLY29uZmlnKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgc29tZXRoaW5nIOKAkyBsZXQncyBzZWUsIGl0J3MgYWJvdXQgdGhlIGRlbXVsdGlwbGV4aW5nIG9mIElQIEdSRSBwYWNrZXRzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hlcmUgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGNvbmZpZ3VyZWQ6IEkgbmVlZCB0byBjaGVjayBgS2NvbmZpZ2AgZm9yIHRoZSBgTkVUX0lQR1JFX0RFTVVYYCBzeW1ib2wuIEknbSBhc3N1bWluZyBpdCdzIHByb2JhYmx5IGEgYm9vbGVhbiBvciB0cmlzdGF0ZSwgYnV0IHRoZSBleGFjdCBkZXRhaWxzIHdpbGwgY29tZSBvdXQgb2YgaW5zcGVjdGluZyB0aGUgY29uZmlnLiBJZiBpdCdzIGVuYWJsZWQsIHRoYXQgb2YgY291cnNlIHdvdWxkIHN1Z2dlc3Qgd2Ugd2FudCBzb21lIGRlbXVsdGlwbGV4aW5nOyBpZiBub3QsIHRoZXJlIG1pZ2h0IGJlIG90aGVyIG1lYW5zIG9mIEdSRSBkZW11eGluZyBoYXBwZW5pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGNvbmZpZyBvcHRpb24gYW5kIHRoZSBnZW5lcmFsIEdSRSBpbXBsZW1lbnRhdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBkZWZhdWx0IHNldHRpbmdzIHRvIHNlZSB0aGUgdHlwaWNhbCB1c2UgY2FzZXMgYW5kIGhvdyB0aGlzIGFsaWducyB3aXRoIHRoZSBjdXJyZW50IGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA1NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MjIuNTUwNTMxNDI3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ0NjIzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9JUEdSRV9ERU1VWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MTYyPWNvbmZpZyBORVRfSVBJUFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0xNzktXFxubmV0L2lwdjQvS2NvbmZpZzoxODA6Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxcbm5ldC9pcHY0L0tjb25maWctMTgxLVxcdHRyaXN0YXRlIFxcXCJJUDogR1JFIGRlbXVsdGlwbGV4ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjIyLjY5NDk5OTc5NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTY5Nzc5OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBHUkUgRGVtdXggQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBgbmV0L2lwdjQvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYE5FVF9JUEdSRV9ERU1VWGAgb3B0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBjb25maWd1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLiBUaGlzIGlzIGxpa2VseSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydCB0byB0cmFjZSB0aGUgR1JFIGRlbXVsdGlwbGV4aW5nIGZ1bmN0aW9uYWxpdHksIGFuZCB1bmRlcnN0YW5kaW5nIGl0cyBjb25maWd1cmF0aW9uIGlzIHRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgdG93YXJkIHVuZGVyc3RhbmRpbmcgaXRzIGJlaGF2aW91ciB3aXRoaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM5NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjI1Ljg2NDc4MzY1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3NSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3NTpcXHRcXG4gMTc2OlxcdFxcdCAgU2F5aW5nIFkgdG8gdGhpcyBvcHRpb24gd2lsbCBwcm9kdWNlIHR3byBtb2R1bGVzICggPSBjb2RlIHdoaWNoIGNhblxcbiAxNzc6XFx0XFx0ICBiZSBpbnNlcnRlZCBpbiBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBydW5uaW5nIGtlcm5lbCB3aGVuZXZlciB5b3VcXG4gMTc4OlxcdFxcdCAgd2FudCkuIE1vc3QgcGVvcGxlIHdvbid0IG5lZWQgdGhpcyBhbmQgY2FuIHNheSBOLlxcbiAxNzk6XFx0XFxuIDE4MDpcXHRjb25maWcgTkVUX0lQR1JFX0RFTVVYXFxuIDE4MTpcXHRcXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcbiAxODI6XFx0XFx0aGVscFxcbiAxODM6XFx0XFx0ICBUaGlzIGlzIGhlbHBlciBtb2R1bGUgdG8gZGVtdWx0aXBsZXggR1JFIHBhY2tldHMgb24gR1JFIHZlcnNpb24gZmllbGQgY3JpdGVyaWEuXFxuIDE4NDpcXHRcXHQgIFJlcXVpcmVkIGJ5IGlwX2dyZSBhbmQgcHB0cCBtb2R1bGVzLlxcbiAxODU6XFx0XFxuIDE4NjpcXHRjb25maWcgTkVUX0lQX1RVTk5FTFxcbiAxODc6XFx0XFx0dHJpc3RhdGVcXG4gMTg4OlxcdFxcdHNlbGVjdCBEU1RfQ0FDSEVcXG4gMTg5OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4gMTkwOlxcdFxcdGRlZmF1bHQgblxcbiAxOTE6XFx0XFxuIDE5MjpcXHRjb25maWcgTkVUX0lQR1JFXFxuIDE5MzpcXHRcXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcXFwiXFxuIDE5NDpcXHRcXHRkZXBlbmRzIG9uIE5FVF9JUEdSRV9ERU1VWFxcbiAxOTU6XFx0XFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG4gMTk2OlxcdFxcdGhlbHBcXG4gMTk3OlxcdFxcdCAgVHVubmVsaW5nIG1lYW5zIGVuY2Fwc3VsYXRpbmcgZGF0YSBvZiBvbmUgcHJvdG9jb2wgdHlwZSB3aXRoaW5cXG4gMTk4OlxcdFxcdCAgYW5vdGhlciBwcm90b2NvbCBhbmQgc2VuZGluZyBpdCBvdmVyIGEgY2hhbm5lbCB0aGF0IHVuZGVyc3RhbmRzIHRoZVxcbiAxOTk6XFx0XFx0ICBlbmNhcHN1bGF0aW5nIHByb3RvY29sLiBUaGlzIHBhcnRpY3VsYXIgdHVubmVsaW5nIGRyaXZlciBpbXBsZW1lbnRzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjI1Ljg2NTAwMTIyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2NDUzMzIwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIHBwdHAuYyBQYWNrZXQgUmVjZXB0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHJlYWxseSB1bmRlcnN0YW5kIGhvdyBQUFRQIHBhY2tldCByZWNlcHRpb24gaXMgaGFuZGxlZC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgaWRlbnRpZnkgdGhlIGtleSBlbnRyeSBwb2ludHMgd2l0aGluIGBwcHRwLmNgLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCBieSBkaXNzZWN0aW5nIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGNvZGUgYW5kIG1hcCBvdXQgdGhlIHBhY2tldCBoYW5kbGluZyBsb2dpYy4gSSdtIHByaW1hcmlseSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgdGhlIGRhdGFwYXRoIHdvcmtzLCBob3cgdGhlIHJlY2VpdmUgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYW5kIGhvdyB0aGUgcGFja2V0cyBtYWtlIHRoZWlyIHdheSB1cCB0aGUgbmV0d29ya2luZyBzdGFjay4gTG9va2luZyBhdCB0aGUgY29kZSBpcyB0aGUgb25seSB3YXkgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb24gYW55IG51YW5jZXMgaW4gdGhlIGltcGxlbWVudGF0aW9uLCBwYXJ0aWN1bGFybHkgZm9yIGVycm9yIGhhbmRsaW5nIG9yIG9wdGltaXphdGlvbiB0cmlja3MuIEknbSBleHBlY3RpbmcgdGhpcyB3aWxsIGludm9sdmUgdW5kZXJzdGFuZGluZyBob3cgdGhlIEdSRSBwYWNrZXRzIGFyZSBkZW11bHRpcGxleGVkIGFuZCwgcHJlc3VtYWJseSwgcGFzc2VkIHVwIHRvIHRoZSByZWxldmFudCBQUFAgbGF5ZXIuIExldCdzIGRpZyBpbiBhbmQgZmluZCB0aG9zZSBjcnVjaWFsIGVudHJ5IHBvaW50cyFcblxuXG4iLCJJbnB1dFRva2VucyI6Njk1MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MjguNTEwMzM1NzYxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjM5ODM2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcHRwX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NDc9c3RhdGljIERFRklORV9TUElOTE9DSyhjaGFuX2xvY2spO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDgtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0OTpzdGF0aWMgc3RydWN0IHByb3RvIHBwdHBfc2tfcHJvdG8gX19yZWFkX21vc3RseTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwdHBfY2hhbl9vcHM7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MTpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwcHRwX29wcztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NTM9c3RhdGljIHN0cnVjdCBwcHBveF9zb2NrICpsb29rdXBfY2hhbih1MTYgY2FsbF9pZCwgX19iZTMyIHNfYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTUtXFx0c3RydWN0IHBwcG94X3NvY2sgKnNvY2s7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NjpcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz03Mj1zdGF0aWMgaW50IGxvb2t1cF9jaGFuX2RzdCh1MTYgY2FsbF9pZCwgX19iZTMyIGRfYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzQtXFx0c3RydWN0IHBwcG94X3NvY2sgKnNvY2s7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3NTpcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTc2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz05ND1zdGF0aWMgaW50IGFkZF9jaGFuKHN0cnVjdCBwcHBveF9zb2NrICpzb2NrLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6OTU6XFx0XFx0ICAgIHN0cnVjdCBwcHRwX2FkZHIgKnNhKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtOTYte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xMjQ9c3RhdGljIHZvaWQgZGVsX2NoYW4oc3RydWN0IHBwcG94X3NvY2sgKnNvY2spXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTEzMS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjEzMjpzdGF0aWMgc3RydWN0IHJ0YWJsZSAqcHB0cF9yb3V0ZV9vdXRwdXQoY29uc3Qgc3RydWN0IHBwcG94X3NvY2sgKnBvLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTMzLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBmbG93aTQgKmZsNClcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTQ5OnN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1My1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNTQ6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcXHUwMDI2cG8tXFx1MDAzZXByb3RvLnBwdHA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNTU6XFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGRyO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTU2LVxcdHVuc2lnbmVkIGludCBoZWFkZXJfbGVuID0gc2l6ZW9mKCpoZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNjktXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNzA6XFx0cnQgPSBwcHRwX3JvdXRlX291dHB1dChwbywgXFx1MDAyNmZsNCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNzEtXFx0aWYgKElTX0VSUihydCkpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTIxNi1cXHRza2JfcHVzaChza2IsIGhlYWRlcl9sZW4pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjE3OlxcdGhkciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NS1cXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzY6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcXHUwMDI2cG8tXFx1MDAzZXByb3RvLnBwdHA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzctXFx0aW50IGhlYWRlcnNpemUsIHBheWxvYWRfbGVuLCBzZXE7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3OS1cXHRfX3U4ICpwYXlsb2FkO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjgwOlxcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjg0LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Mjg1OlxcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yODYtXFx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI5My1cXHRcXHRcXHRnb3RvIGRyb3A7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyOTQ6XFx0XFx0aGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLVxcdTAwM2VkYXRhKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzU4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzU5OnN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM2MC17XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNjEtXFx0c3RydWN0IHBwcG94X3NvY2sgKnBvO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzYyOlxcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM2My1cXHRzdHJ1Y3QgaXBoZHIgKmlwaDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzcyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzczOlxcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzc0LVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zOTMtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzozOTQ6c3RhdGljIGludCBwcHRwX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM5NS1cXHRcXHQgICAgIGludCBzb2NrYWRkcl9sZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQyNi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQyNzpzdGF0aWMgaW50IHBwdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdXNlcnZhZGRyLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDI4LVxcdFxcdFxcdGludCBzb2NrYWRkcl9sZW4sIGludCBmbGFncylcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDMyLVxcdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQzMzpcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdCA9IFxcdTAwMjZwby1cXHUwMDNlcHJvdG8ucHB0cDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQzNC1cXHRzdHJ1Y3QgcnRhYmxlICpydDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDY1LVxcdHBvLVxcdTAwM2VjaGFuLnByaXZhdGUgPSBzaztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ2NjpcXHRwby1cXHUwMDNlY2hhbi5vcHMgPSBcXHUwMDI2cHB0cF9jaGFuX29wcztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2Ny1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ2ODpcXHRydCA9IHBwdHBfcm91dGVfb3V0cHV0KHBvLCBcXHUwMDI2Zmw0KTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2OS1cXHRpZiAoSVNfRVJSKHJ0KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00NzktXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0ODA6XFx0cG8tXFx1MDAzZWNoYW4uaGRybGVuID0gMiArIHNpemVvZihzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4MS1cXHRwby1cXHUwMDNlY2hhbi5kaXJlY3RfeG1pdCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ5NS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ5NjpzdGF0aWMgaW50IHBwdHBfZ2V0bmFtZShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDk3LVxcdGludCBwZWVyKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MTItXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MTM6c3RhdGljIGludCBwcHRwX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUxNC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0NC1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU0NTpzdGF0aWMgdm9pZCBwcHRwX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTUzLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTU0OnN0YXRpYyBpbnQgcHB0cF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQga2VybilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1OC1cXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG87XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NTk6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQ7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjAtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NjE6XFx0c2sgPSBza19hbGxvYyhuZXQsIFBGX1BQUE9YLCBHRlBfS0VSTkVMLCBcXHUwMDI2cHB0cF9za19wcm90bywga2Vybik7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjItXFx0aWYgKCFzaylcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTY3LVxcdHNvY2stXFx1MDAzZXN0YXRlID0gU1NfVU5DT05ORUNURUQ7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1Njg6XFx0c29jay1cXHUwMDNlb3BzICAgPSBcXHUwMDI2cHB0cF9vcHM7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjktXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NzA6XFx0c2stXFx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3MS1cXHRzay1cXHUwMDNlc2tfc3RhdGUgICAgICAgPSBQUFBPWF9OT05FO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzQtXFx0c2stXFx1MDAzZXNrX3Byb3RvY29sICAgID0gUFhfUFJPVE9fUFBUUDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU3NTpcXHRzay1cXHUwMDNlc2tfZGVzdHJ1Y3QgICAgPSBwcHRwX3NvY2tfZGVzdHJ1Y3Q7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzYtXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU4Ny1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU4ODpzdGF0aWMgaW50IHBwdHBfcHBwX2lvY3RsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgdW5zaWduZWQgaW50IGNtZCxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU4OS1cXHR1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTkyLVxcdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU5MzpcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdCA9IFxcdTAwMjZwby1cXHUwMDNlcHJvdG8ucHB0cDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU5NC1cXHR2b2lkIF9fdXNlciAqYXJncCA9ICh2b2lkIF9fdXNlciAqKWFyZztcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjE4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjE5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwdHBfY2hhbl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjA6XFx0LnN0YXJ0X3htaXQgPSBwcHRwX3htaXQsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjE6XFx0LmlvY3RsICAgICAgPSBwcHRwX3BwcF9pb2N0bCxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYyMi19O1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjIzLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjI0OnN0YXRpYyBzdHJ1Y3QgcHJvdG8gcHB0cF9za19wcm90byBfX3JlYWRfbW9zdGx5ID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjI1LVxcdC5uYW1lICAgICA9IFxcXCJQUFRQXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjI5LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjMwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwdHBfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjMxLVxcdC5mYW1pbHkgICAgID0gQUZfUFBQT1gsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MzItXFx0Lm93bmVyICAgICAgPSBUSElTX01PRFVMRSxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYzMzpcXHQucmVsZWFzZSAgICA9IHBwdHBfcmVsZWFzZSxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYzNDpcXHQuYmluZCAgICAgICA9IHBwdHBfYmluZCxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYzNTpcXHQuY29ubmVjdCAgICA9IHBwdHBfY29ubmVjdCxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzNi1cXHQuc29ja2V0cGFpciA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzNy1cXHQuYWNjZXB0ICAgICA9IHNvY2tfbm9fYWNjZXB0LFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjM4OlxcdC5nZXRuYW1lICAgID0gcHB0cF9nZXRuYW1lLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjM5LVxcdC5saXN0ZW4gICAgID0gc29ja19ub19saXN0ZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0OS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY1MDpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcG94X3Byb3RvIHBwcG94X3BwdHBfcHJvdG8gPSB7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2NTE6XFx0LmNyZWF0ZSA9IHBwdHBfY3JlYXRlLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjUyLVxcdC5vd25lciAgPSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjU0LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjU1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3JlX3Byb3RvY29sIGdyZV9wcHRwX3Byb3RvY29sID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjU2OlxcdC5oYW5kbGVyID0gcHB0cF9yY3YsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NTctfTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY1OC1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY1OTpzdGF0aWMgaW50IF9faW5pdCBwcHRwX2luaXRfbW9kdWxlKHZvaWQpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NjctXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2Njg6XFx0ZXJyID0gZ3JlX2FkZF9wcm90b2NvbChcXHUwMDI2Z3JlX3BwdHBfcHJvdG9jb2wsIEdSRVBST1RPX1BQVFApO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjY5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjczLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njc0OlxcdGVyciA9IHByb3RvX3JlZ2lzdGVyKFxcdTAwMjZwcHRwX3NrX3Byb3RvLCAwKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY3NS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY3OS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY4MDpcXHRlcnIgPSByZWdpc3Rlcl9wcHBveF9wcm90byhQWF9QUk9UT19QUFRQLCBcXHUwMDI2cHBwb3hfcHB0cF9wcm90byk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02ODEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02ODgtb3V0X3VucmVnaXN0ZXJfc2tfcHJvdG86XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2ODk6XFx0cHJvdG9fdW5yZWdpc3RlcihcXHUwMDI2cHB0cF9za19wcm90byk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02OTAtb3V0X2dyZV9kZWxfcHJvdG9jb2w6XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2OTE6XFx0Z3JlX2RlbF9wcm90b2NvbChcXHUwMDI2Z3JlX3BwdHBfcHJvdG9jb2wsIEdSRVBST1RPX1BQVFApO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjkyLW91dF9tZW1fZnJlZTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjk3LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njk4OnN0YXRpYyB2b2lkIF9fZXhpdCBwcHRwX2V4aXRfbW9kdWxlKHZvaWQpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02OTkte1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzAwLVxcdHVucmVnaXN0ZXJfcHBwb3hfcHJvdG8oUFhfUFJPVE9fUFBUUCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3MDE6XFx0cHJvdG9fdW5yZWdpc3RlcihcXHUwMDI2cHB0cF9za19wcm90byk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3MDI6XFx0Z3JlX2RlbF9wcm90b2NvbChcXHUwMDI2Z3JlX3BwdHBfcHJvdG9jb2wsIEdSRVBST1RPX1BQVFApO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzAzLVxcdHZmcmVlKGNhbGxpZF9zb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzA1LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NzA2Om1vZHVsZV9pbml0KHBwdHBfaW5pdF9tb2R1bGUpO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NzA3Om1vZHVsZV9leGl0KHBwdHBfZXhpdF9tb2R1bGUpO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzA4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNToyOC41OTY3NDA4NjVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzkzMzY4NjQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBQVFAgR1JFIFBhY2tldCBSZWNlcHRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBvbiBob3cgUFBUUCB0cmFmZmljIGlzIGhhbmRsZWQgYXQgdGhlIG5ldHdvcmsgbGV2ZWwsIHNwZWNpZmljYWxseSB0aGUgcmVjZXB0aW9uIG9mIEdSRSBwYWNrZXRzLiBGcm9tIHdoYXQgSSB1bmRlcnN0YW5kLCB0aGUgZnVuY3Rpb24gYHBwdHBfcmN2YCBpcyB0aGUgZGVzaWduYXRlZCBoYW5kbGVyIGZvciBHUkUgcGFja2V0cyBkZXNpZ25hdGVkIHdpdGggYEdSRVBST1RPX1BQVFBgLiBFc3NlbnRpYWxseSwgaXQncyB0aGUgZ2F0ZWtlZXBlciBmb3IgUFBUUCB0cmFmZmljIGNvbWluZyBpbiBvdmVyIEdSRS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHBwdHBfcmN2YCBuZWVkcyB0byBwcm9jZXNzIGluY29taW5nIEdSRSBwYWNrZXRzIGFuZCBkaXJlY3QgdGhlbSBhcHByb3ByaWF0ZWx5LCB3aGljaCBpdCBhY2NvbXBsaXNoZXMgYnkgZmluZGluZyB0aGUgcmVsZXZhbnQgc29ja2V0IGFuZCBwYXNzaW5nIHRoZSBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgdG8gYHNrX3JlY2VpdmVfc2tiYC4gVGhpcyBmdW5jdGlvbiB0aGVuIGxpa2VseSBpbnZva2VzIHRoZSBzb2NrZXQncyBiYWNrbG9nIGhhbmRsZXIuIFRoaXMgcGFydCBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IHRvIGludmVzdGlnYXRlIGFzIGl0J3MgdGhlIGNvcmUgb2YgaG93IHBhY2tldHMgYXJlIHJvdXRlZC4gYHNrLVx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZWAgdGVsbHMgbWUgdGhhdCBgcHB0cF9yY3ZfY29yZWAgaXMgdGhlIGJhY2tsb2cgaGFuZGxlciBpbiB0aGlzIGNvbnRleHQuIE5vdyBJIHNob3VsZCBjaGVjayBleGFjdGx5IHdoYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBwcHRwX3JjdmAgZG9lcy4gSSB3aWxsIGNoZWNrIHBwdHAuYyBsaW5lcyAzNTgtMzkyIGFuZCBkaXNzZWN0IGl0cyBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzNDAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6MzIuNTMwNDMxMDlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzU4LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzU4OlxcdFxcbiAzNTk6XFx0c3RhdGljIGludCBwcHRwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAzNjA6XFx0e1xcbiAzNjE6XFx0XFx0c3RydWN0IHBwcG94X3NvY2sgKnBvO1xcbiAzNjI6XFx0XFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xcbiAzNjM6XFx0XFx0c3RydWN0IGlwaGRyICppcGg7XFxuIDM2NDpcXHRcXG4gMzY1OlxcdFxcdGlmIChza2ItXFx1MDAzZXBrdF90eXBlICE9IFBBQ0tFVF9IT1NUKVxcbiAzNjY6XFx0XFx0XFx0Z290byBkcm9wO1xcbiAzNjc6XFx0XFxuIDM2ODpcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCAxMikpXFxuIDM2OTpcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIDM3MDpcXHRcXG4gMzcxOlxcdFxcdGlwaCA9IGlwX2hkcihza2IpO1xcbiAzNzI6XFx0XFxuIDM3MzpcXHRcXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKXNrYi1cXHUwMDNlZGF0YTtcXG4gMzc0OlxcdFxcbiAzNzU6XFx0XFx0aWYgKGhlYWRlci1cXHUwMDNlZ3JlX2hkLnByb3RvY29sICE9IEdSRV9QUk9UT19QUFAgfHwgLyogUFBUUC1HUkUgcHJvdG9jb2wgZm9yIFBQVFAgKi9cXG4gMzc2OlxcdFxcdFxcdEdSRV9JU19DU1VNKGhlYWRlci1cXHUwMDNlZ3JlX2hkLmZsYWdzKSB8fCAgICAvKiBmbGFnIENTVU0gc2hvdWxkIGJlIGNsZWFyICovXFxuIDM3NzpcXHRcXHRcXHRHUkVfSVNfUk9VVElORyhoZWFkZXItXFx1MDAzZWdyZV9oZC5mbGFncykgfHwgLyogZmxhZyBST1VUSU5HIHNob3VsZCBiZSBjbGVhciAqL1xcbiAzNzg6XFx0XFx0XFx0IUdSRV9JU19LRVkoaGVhZGVyLVxcdTAwM2VncmVfaGQuZmxhZ3MpIHx8ICAgIC8qIGZsYWcgS0VZIHNob3VsZCBiZSBzZXQgKi9cXG4gMzc5OlxcdFxcdFxcdChoZWFkZXItXFx1MDAzZWdyZV9oZC5mbGFncyBcXHUwMDI2IEdSRV9GTEFHUykpICAgICAvKiBmbGFnIFJlY3Vyc2lvbiBDdHJsIHNob3VsZCBiZSBjbGVhciAqL1xcbiAzODA6XFx0XFx0XFx0LyogaWYgaW52YWxpZCwgZGlzY2FyZCB0aGlzIHBhY2tldCAqL1xcbiAzODE6XFx0XFx0XFx0Z290byBkcm9wO1xcbiAzODI6XFx0XFxuIDM4MzpcXHRcXHRwbyA9IGxvb2t1cF9jaGFuKG50b2hzKGhlYWRlci1cXHUwMDNlY2FsbF9pZCksIGlwaC1cXHUwMDNlc2FkZHIpO1xcbiAzODQ6XFx0XFx0aWYgKHBvKSB7XFxuIDM4NTpcXHRcXHRcXHRza2JfZHN0X2Ryb3Aoc2tiKTtcXG4gMzg2OlxcdFxcdFxcdG5mX3Jlc2V0X2N0KHNrYik7XFxuIDM4NzpcXHRcXHRcXHRyZXR1cm4gc2tfcmVjZWl2ZV9za2IoXFx1MDAyNnBvLVxcdTAwM2Vzaywgc2tiLCAwKTtcXG4gMzg4OlxcdFxcdH1cXG4gMzg5OlxcdGRyb3A6XFxuIDM5MDpcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gMzkxOlxcdFxcdHJldHVybiBORVRfUlhfRFJPUDtcXG4gMzkyOlxcdH1cXG4gMzkzOlxcdFxcbiAzOTQ6XFx0c3RhdGljIGludCBwcHRwX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcXG4gMzk1OlxcdFxcdFxcdCAgICAgaW50IHNvY2thZGRyX2xlbilcXG4gMzk2OlxcdHtcXG4gMzk3OlxcdFxcdHN0cnVjdCBzb2NrICpzayA9IHNvY2stXFx1MDAzZXNrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNTozMi41MzA1Njg3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyNzUzMDAyMzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIFBQVFAgR1JFIEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgcHB0cF9yY3ZfY29yZWAsIGFuZCBpdCdzIGdvdCBteSBhdHRlbnRpb24uIEl0J3MgYSBmaXggcmVsYXRlZCB0byBwYWNrZXQgbGVuZ3RoIGFuZCBgcHNrYl9tYXlfcHVsbGAgY2hlY2tzIHdoZW4gdGhlIGtlcm5lbCBpcyBwcm9jZXNzaW5nIHJlY2VpdmVkIFBQVFAgR1JFIHBhY2tldHMuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGUgY2hlY2sgbm93IGVuc3VyZXMgdGhhdCB0aGUgcGF5bG9hZCBhdmFpbGFiaWxpdHkgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHJlcXVpcmVkLCBtZWFuaW5nIGBwYXlsb2FkX2F2YWlsIFx1MDAzZT0gUFBQX0hEUkxFTiArIDFgIGFuZCBgcGF5bG9hZF9hdmFpbCBcdTAwM2U9IDJgIGFyZSBtZXQgYmVmb3JlIHRoZSBjb2RlIGFjY2Vzc2VzIHRoZSBwYXlsb2FkL2RhdGEuIFRoaXMgc291bmRzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBwYWNrZXQgcGFyc2luZyBsb2dpYyBhbmQgYm91bmRzIGNoZWNraW5nLCB3aGljaCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy5cblxuR2l2ZW4gdGhhdCBQUFRQIHNvY2tldHMgYXJlIHN0YW5kYXJkIG5ldHdvcmsgc29ja2V0cyBhbmQgYXJlIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSB2aWEgc3RhbmRhcmQgc29ja2V0IHN5c3RlbSBjYWxscyAodGhpbmsgYHNvY2tldChBRl9QUFBPWCwgLi4uLCBQWF9QUk9UT19QUFRQKWApLCByZWNlaXZpbmcgR1JFIHBhY2tldHMgKGUuZy4sIG92ZXIgbG9vcGJhY2sgb3IgYSBuZXRucyksIHRoaXMgc2VlbXMgbGlrZSBhIHNvbGlkIG9wcG9ydHVuaXR5LiBUaGUgZmFjdCB0aGF0IHRoZSB2dWxuZXJhYmlsaXR5IGlzIGluIHRoZSBjb3JlIG5ldHdvcmsgaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gUFBQIGFuZCBQUFRQLCBmdXJ0aGVyIHN0cmVuZ3RoZW5zIHRoZSBjYXNlLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB3aGF0IGZ1bmN0aW9ucyB0byBmb2N1cyBvbi4gT2J2aW91c2x5LCBgcHB0cF9yY3ZfY29yZWAgaXMgYSBrZXkgY2FuZGlkYXRlLiBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGBwcHRwX3JjdmAsIHNpbmNlIGl0IHNlZW1zIGxpa2UgYHBwdHBfcmN2X2NvcmVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHRoYXQncyBiZWluZyB1c2VkIGJ5IGBwcHRwX3JjdmAuIE90aGVyIGludGVyZXN0aW5nIGZ1bmN0aW9ucyB0byBpbmNsdWRlIGluIHRoZSBmdXp6aW5nIGZvY3VzIGNvdWxkIGJlIGBwcHRwX2Nvbm5lY3RgLCBgcHB0cF9iaW5kYCwgYHBwdHBfY3JlYXRlYCwgYW5kIGBwcHRwX3htaXRgLiBJJ2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgaWYgdGhleSdyZSBzdGF0aWMsIGlubGluZWQsIG9yIGlmIEkgc2hvdWxkIGp1c3QgaW5jbHVkZSB0aGVtIGFsbCBmb3Igbm93LiBJIGtub3cgdGhhdCBgcHB0cF9yY3ZfY29yZWAgaXMgc3RhdGljLCBidXQgdGhlIGFkZHJlc3MgaXMgdGFrZW4gYnkgdGhlIGBzay1cdTAwM2Vza19iYWNrbG9nX3JjdiA9IHBwdHBfcmN2X2NvcmU7YCBhc3NpZ25tZW50LiBTaW1pbGFybHksIGBwcHRwX3JjdmAgaXMgc3RhdGljLCB3aXRoIGl0cyBhZGRyZXNzIGJlaW5nIHVzZWQgYnkgYGdyZV9wcHRwX3Byb3RvY29sLmhhbmRsZXIgPSBwcHRwX3JjdmAuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBzeW1ib2xzIGRlZmluZWQgaW4gYHBwdHAuY2AgdG9vLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gSXQgbG9va3MgbGlrZSBgUFBUUGAgZGVwZW5kcyBvbiBgTkVUX0lQR1JFX0RFTVVYYCBhbmQgc2VsZWN0cyBgUFBQT1hgLiBgTkVUX0lQR1JFX0RFTVVYYCBpdHNlbGYgaXMgaW4gdGhlIGBuZXQvaXB2NC9LY29uZmlnYCBhbmQgaXMgYWxzbyB0cmlzdGF0ZS4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBiYXNlIGBQUFBgIHN1YnN5c3RlbSBpdHNlbGYgKGBDT05GSUdfUFBQYCkgaXMgZW5hYmxlZC4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgIGZpbGUgdG8gc2VlIHdoYXQgbWVudXMgYW5kIGRlcGVuZGVuY2llcyB0aGVyZSBhcmUgYXMgd2VsbC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGJ1aWxkIHJlcXVpcmVtZW50cyBmb3Igc3VjY2Vzc2Z1bCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM5NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjQ1LjI4MzU3NTUyNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NDI1NDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbnVjb25maWcgUFBQfGlmIFBQUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL0tjb25maWc9Nj1jb25maWcgUFBQXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzozNTppZiBQUFBcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0zNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE1Mz1jb25maWcgUFBQT0VfSEFTSF9CSVRTXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTU0LVxcdGludFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE1NTpcXHRkZWZhdWx0IDEgaWYgUFBQT0VfSEFTSF9CSVRTXzFcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNTY6XFx0ZGVmYXVsdCAyIGlmIFBQUE9FX0hBU0hfQklUU18yXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTU3OlxcdGRlZmF1bHQgNCBpZiBQUFBPRV9IQVNIX0JJVFNfNFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE1ODpcXHRkZWZhdWx0IDggaWYgUFBQT0VfSEFTSF9CSVRTXzhcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTktXFx0ZGVmYXVsdCA0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjQ1LjQwMTAwODEzNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjEyOTg0NzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgS2VybmVsJ3MgTmV0d29yayBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBQUFAgKFBvaW50LXRvLVBvaW50IFByb3RvY29sKSBkcml2ZXJzIGFyZSBpbmNvcnBvcmF0ZWQgaW50byB0aGlzIGtlcm5lbCBidWlsZC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIEtjb25maWcgZmlsZXMgYXJlIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuIEknbGwgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIGRlcGVuZGVuY3kgb3IgaW5jbHVzaW9uIGxvZ2ljIGZvciB0aGUgUFBQLXJlbGF0ZWQgb3B0aW9ucy4gVGhpcyBmaWxlIGxpa2VseSBjb250cm9scyB0aGUgdmlzaWJpbGl0eSBhbmQgY29uZmlndXJhYmlsaXR5IG9mIHRoZSBQUFAgZHJpdmVycyBkdXJpbmcgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHByb2Nlc3MuIEknbSBleHBlY3RpbmcgdG8gZmluZCBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBvciBhIG1lbnUgZW50cnkgdGhhdCBwb2ludHMgbWUgdG8gd2hlcmUgdGhlIFBQUCBjb25maWd1cmF0aW9uIGVsZW1lbnRzIGFyZSBkZWZpbmVkLCBpZiBub3QgZGVmaW5lZCBkaXJlY3RseSB3aXRoaW4gdGhpcyBgS2NvbmZpZ2AgZmlsZSBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODY4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6NDguNjEzOTk2NDY3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTkyODQ1NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHBwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTMwMiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01MjY9c291cmNlIFxcXCJkcml2ZXJzL25ldC9wbGlwL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01MjctXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1Mjg6c291cmNlIFxcXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTUyOS1cXG4tLVxcbmRyaXZlcnMvbmV0L01ha2VmaWxlPTU3PW9iai0kKENPTkZJR19QTElQKSArPSBwbGlwL1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19QUFApICs9IHBwcC9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZTo1OTpvYmotJChDT05GSUdfUFBQX0FTWU5DKSArPSBwcHAvXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjA6b2JqLSQoQ09ORklHX1BQUF9CU0RDT01QKSArPSBwcHAvXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjE6b2JqLSQoQ09ORklHX1BQUF9ERUZMQVRFKSArPSBwcHAvXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjI6b2JqLSQoQ09ORklHX1BQUF9NUFBFKSArPSBwcHAvXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX1BQUF9TWU5DX1RUWSkgKz0gcHBwL1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19QUFBPRSkgKz0gcHBwL1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19QUFBPTDJUUCkgKz0gcHBwL1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19QUFRQKSArPSBwcHAvXFxuZHJpdmVycy9uZXQvTWFrZWZpbGUtNjctb2JqLSQoQ09ORklHX1NMSVApICs9IHNsaXAvXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9Mzg1Nz15dDkyMXhfZHNhX3BvcnRfc2V0X2RlZmF1bHRfcHJpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1OCBwcmlvKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4NzUtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM4NzY6c3RhdGljIGludCBfX21heWJlX3VudXNlZCBhcHBwcmlvc19jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYilcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzg3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9Mzg4Mj15dDkyMXhfZHNhX3BvcnRfZ2V0X2FwcHRydXN0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHU4ICpzZWwsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzg4NS1cXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM4ODY6XFx0dTggYXBwcHJpb3NbMl1bMl0gPSB7fTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzg4Ny1cXHRpbnQgbnNlbDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zODk3LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozODk4OlxcdGFwcHByaW9zWzBdWzBdID0gSUVFRV84MDIxUUFaX0FQUF9TRUxfRFNDUDtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzg5OTpcXHRhcHBwcmlvc1swXVsxXSA9ICh2YWwgXFx1MDAzZVxcdTAwM2UgKDMgKiBZVDkyMVhfQVBQX1NFTF9EU0NQKSkgXFx1MDAyNiA3O1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozOTAwOlxcdGFwcHByaW9zWzFdWzBdID0gRENCX0FQUF9TRUxfUENQO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozOTAxOlxcdGFwcHByaW9zWzFdWzFdID0gKHZhbCBcXHUwMDNlXFx1MDAzZSAoMyAqIFlUOTIxWF9BUFBfU0VMX0NWTEFOX1BDUCkpIFxcdTAwMjYgNztcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzkwMjpcXHRzb3J0KGFwcHByaW9zLCBBUlJBWV9TSVpFKGFwcHByaW9zKSwgc2l6ZW9mKGFwcHByaW9zWzBdKSwgYXBwcHJpb3NfY21wLFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zOTAzLVxcdCAgICAgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzkwNS1cXHRuc2VsID0gMDtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzkwNjpcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoYXBwcHJpb3MpIFxcdTAwMjZcXHUwMDI2IGFwcHByaW9zW2ldWzFdOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzkwNzpcXHRcXHRzZWxbbnNlbF0gPSBhcHBwcmlvc1tpXVswXTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzkwOC1cXHRcXHRuc2VsKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0LSNpbmNsdWRlIFxcdTAwM2NuZXQvcGt0X2Nscy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTU6I2luY2x1ZGUgXFx1MDAzY3VhcGkvbGludXgvcHBwX2RlZnMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD0zMTM9c3RydWN0IGFpcm9oYV9mb2VfbWFjX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaC0zMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaDozMTY6XFx0dTE2IHBwcG9lX2lkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgtMzE3LVxcdHUxNiBzcmNfbWFjX2xvO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD00NzM9c3RydWN0IGFpcm9oYV9mbG93X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaC01MDAtXFx0XFx0dTggbnVtO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmg6NTAxOlxcdH0gcHBwb2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaC01MDItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MzQyPXN0YXRpYyBpbnQgYWlyb2hhX3BwZV9mb2VfZW50cnlfcHJlcGFyZShzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0zNTktXFx0ICAgICAgRklFTERfUFJFUChBSVJPSEFfRk9FX0lCMV9CSU5EX1ZQTSwgZGF0YS1cXHUwMDNldmxhbi5udW0pIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjM2MDpcXHQgICAgICBGSUVMRF9QUkVQKEFJUk9IQV9GT0VfSUIxX0JJTkRfUFBQT0UsIGRhdGEtXFx1MDAzZXBwcG9lLm51bSkgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMzYxLVxcdCAgICAgIEFJUk9IQV9GT0VfSUIxX0JJTkRfVFRMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy00NTUtXFx0XFx0bWFjX2luZm8gPSAoc3RydWN0IGFpcm9oYV9mb2VfbWFjX2luZm8gKilsMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjQ1NjpcXHRcXHRtYWNfaW5mby1cXHUwMDNlcHBwb2VfaWQgPSBkYXRhLVxcdTAwM2VwcHBvZS5zaWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy00NTctXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDU5LVxcdFxcdFxcdFxcdCBGSUVMRF9QUkVQKEFJUk9IQV9GT0VfTUFDX1BQUE9FX0lELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6NDYwOlxcdFxcdFxcdFxcdFxcdCAgICBkYXRhLVxcdTAwM2VwcHBvZS5zaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDYxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDczLVxcdFxcdGwyLVxcdTAwM2VldHlwZSB8PSAhZGF0YS1cXHUwMDNldmxhbi5udW0gPyBCSVQoMTUpIDogMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjQ3NDpcXHR9IGVsc2UgaWYgKGRhdGEtXFx1MDAzZXBwcG9lLm51bSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNDc1LVxcdFxcdGwyLVxcdTAwM2VldHlwZSA9IEVUSF9QX1BQUF9TRVM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTEwODg9c3RhdGljIGludCBhaXJvaGFfcHBlX2Zsb3dfb2ZmbG9hZF9yZXBsYWNlKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTExNzctXFx0XFx0Y2FzZSBGTE9XX0FDVElPTl9QUFBPRV9QVVNIOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTE3ODpcXHRcXHRcXHRpZiAoZGF0YS5wcHBvZS5udW0gPT0gMSB8fCBkYXRhLnZsYW4ubnVtID09IDIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xMTc5LVxcdFxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTExODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxMTgxOlxcdFxcdFxcdGRhdGEucHBwb2Uuc2lkID0gYWN0LVxcdTAwM2VwcHBvZS5zaWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxMTgyOlxcdFxcdFxcdGRhdGEucHBwb2UubnVtKys7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xMTgzLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jPTE5MT1zdGF0aWMgY29uc3Qgc3RydWN0IGJjbV9zeXNwb3J0X3N0YXRzIGJjbV9zeXNwb3J0X2dzdHJpbmdzX3N0YXRzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjI5LVxcdFNUQVRfTUlCX1JYKFxcXCJyeF91bmljYXN0XFxcIiwgbWliLnJ4LnVjKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM6MjMwOlxcdFNUQVRfTUlCX1JYKFxcXCJyeF9wcHBcXFwiLCBtaWIucngucHBwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjMxLVxcdFNUQVRfTUlCX1JYKFxcXCJyeF9jcmNcXFwiLCBtaWIucngucmNyYyksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0Lmg9NTExPXN0cnVjdCBiY21fc3lzcG9ydF9yeF9jb3VudGVycyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmgtNTI5LVxcdHUzMlxcdHVjO1xcdFxcdC8qIFJPICMgb2YgdW5pY2FzdCBwa3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0Lmg6NTMwOlxcdHUzMlxcdHBwcDtcXHRcXHQvKiBSTyAjIG9mIFBQUCBwa3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmgtNTMxLVxcdHUzMlxcdHJjcmM7XFx0XFx0LyogUk8gKDB4NDcwKSwjIG9mIENSQyBtYXRjaCBwa3QgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYz0yMTE4PXN0YXRpYyB2b2lkIGJueDJ4X3VwZGF0ZV9wZmNfbmlnKHN0cnVjdCBsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jLTIxMjEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYzoyMTIyOlxcdHUzMiB4Y21fbWFzayA9IDAsIHBwcF9lbmFibGUgPSAwLCBwYXVzZV9lbmFibGUgPSAwLCBsbGZjX291dF9lbiA9IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jLTIxMjMtXFx0dTMyIGxsZmNfZW5hYmxlID0gMCwgeGNtX291dF9lbiA9IDAsIGh3cGZjX2VuYWJsZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMtMjE0NS1cXHRcXHRpZiAoQ0hJUF9JU19FMyhicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jOjIxNDY6XFx0XFx0XFx0cHBwX2VuYWJsZSA9IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jLTIxNDctXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYzoyMTQ4OlxcdFxcdFxcdHBwcF9lbmFibGUgPSAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYy0yMTQ5LVxcdFxcdHhjbV9tYXNrIFxcdTAwMjY9IH4ocG9ydCA/IE5JR19MTEgxX1hDTV9NQVNLX1JFR19MTEgxX1hDTV9NQVNLX0JDTiA6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMtMjE3Ni1cXHRSRUdfV1IoYnAsIHBvcnQgPyBOSUdfUkVHX1BQUF9FTkFCTEVfMSA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jOjIxNzc6XFx0ICAgICAgIE5JR19SRUdfUFBQX0VOQUJMRV8wLCBwcHBfZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMtMjE3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oPTg3MT1leHRlcm4gY29uc3QgdTMyIGRtYWVfcmVnX2dvX2NbXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oLTIwNjItI2RlZmluZSBOSUdfUkVHX0xFRF9NT0RFX1AwXFx0XFx0XFx0XFx0XFx0IDB4MTAyZjBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaDoyMDYzOi8qIFtSVyAzXSBmb3IgcG9ydDAgZW5hYmxlIGZvciBsbGZjIHBwcCBhbmQgcGF1c2UuIGIwIC0gYnJiMSBlbmFibGU7IGIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oLTIwNjQtICAgdHNkbSBlbmFibGU7IGIyLSB1c2RtIGVuYWJsZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmgtMjA2Ny0vKiBbUlcgMV0gU0FGQyBlbmFibGUgZm9yIHBvcnQwLiBUaGlzIHJlZ2lzdGVyIG1heSBnZXQgMSBvbmx5IHdoZW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaDoyMDY4OiAgIH5wcHBfZW5hYmxlLnBwcF9lbmFibGUgPSAwIGFuZCBwYXVzZV9lbmFibGUucGF1c2VfZW5hYmxlID0wIGZvciB0aGUgc2FtZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oLTIwNjktICAgcG9ydCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmgtMjY0MC0vKiBbUlcgMV0gUGF1c2UgZW5hYmxlIGZvciBwb3J0MC4gVGhpcyByZWdpc3RlciBtYXkgZ2V0IDEgb25seSB3aGVuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmg6MjY0MTogICB+c2FmY19lbmFibGUuc2FmY19lbmFibGUgPSAwIGFuZCBwcHBfZW5hYmxlLnBwcF9lbmFibGUgPTAgZm9yIHRoZSBzYW1lXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmgtMjY0Mi0gICBwb3J0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jPTEwNzM9c3RhdGljIGNvbnN0IHN0cnVjdCBiY21nZW5ldF9zdGF0cyBiY21nZW5ldF9nc3RyaW5nc19zdGF0c1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYy0xMTE2LVxcdFNUQVRfR0VORVRfTUlCX1JYKFxcXCJyeF91bmljYXN0XFxcIiwgbWliLnJ4LnVjKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jOjExMTc6XFx0U1RBVF9HRU5FVF9NSUJfUlgoXFxcInJ4X3BwcFxcXCIsIG1pYi5yeC5wcHApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMtMTExOC1cXHRTVEFUX0dFTkVUX01JQl9SWChcXFwicnhfY3JjXFxcIiwgbWliLnJ4LnJjcmMpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuaD05NT1zdHJ1Y3QgYmNtZ2VuZXRfcnhfY291bnRlcnMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuaC0xMTMtXFx0dTMyXFx0dWM7XFx0XFx0LyogUk8gIyBvZiB1bmljYXN0IHBrdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0Lmg6MTE0OlxcdHUzMlxcdHBwcDtcXHRcXHQvKiBSTyAjIG9mIFBQUCBwa3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5oLTExNS1cXHR1MzJcXHRyY3JjO1xcdFxcdC8qIFJPICgweDQ3MCksIyBvZiBDUkMgbWF0Y2ggcGt0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0Lmg9MjA1PXN0cnVjdCBwb3J0X3N0YXRzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaC0yMjItXFx0dTY0IHR4X3BhdXNlOyAgICAgICAgICAgICAvKiAjIG9mIHRyYW5zbWl0dGVkIHBhdXNlIGZyYW1lcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjM6XFx0dTY0IHR4X3BwcDA7ICAgICAgICAgICAgICAvKiAjIG9mIHRyYW5zbWl0dGVkIFBQUCBwcmlvIDAgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjIyNDpcXHR1NjQgdHhfcHBwMTsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gMSBmcmFtZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0Lmg6MjI1OlxcdHU2NCB0eF9wcHAyOyAgICAgICAgICAgICAgLyogIyBvZiB0cmFuc21pdHRlZCBQUFAgcHJpbyAyIGZyYW1lcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjY6XFx0dTY0IHR4X3BwcDM7ICAgICAgICAgICAgICAvKiAjIG9mIHRyYW5zbWl0dGVkIFBQUCBwcmlvIDMgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjIyNzpcXHR1NjQgdHhfcHBwNDsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gNCBmcmFtZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0Lmg6MjI4OlxcdHU2NCB0eF9wcHA1OyAgICAgICAgICAgICAgLyogIyBvZiB0cmFuc21pdHRlZCBQUFAgcHJpbyA1IGZyYW1lcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyMjk6XFx0dTY0IHR4X3BwcDY7ICAgICAgICAgICAgICAvKiAjIG9mIHRyYW5zbWl0dGVkIFBQUCBwcmlvIDYgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjIzMDpcXHR1NjQgdHhfcHBwNzsgICAgICAgICAgICAgIC8qICMgb2YgdHJhbnNtaXR0ZWQgUFBQIHByaW8gNyBmcmFtZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0LmgtMjMxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oLTI1Mi1cXHR1NjQgcnhfcGF1c2U7ICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgcGF1c2UgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjI1MzpcXHR1NjQgcnhfcHBwMDsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gMCBmcmFtZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0Lmg6MjU0OlxcdHU2NCByeF9wcHAxOyAgICAgICAgICAgICAgLyogIyBvZiByZWNlaXZlZCBQUFAgcHJpbyAxIGZyYW1lcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTU6XFx0dTY0IHJ4X3BwcDI7ICAgICAgICAgICAgICAvKiAjIG9mIHJlY2VpdmVkIFBQUCBwcmlvIDIgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjI1NjpcXHR1NjQgcnhfcHBwMzsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gMyBmcmFtZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0Lmg6MjU3OlxcdHU2NCByeF9wcHA0OyAgICAgICAgICAgICAgLyogIyBvZiByZWNlaXZlZCBQUFAgcHJpbyA0IGZyYW1lcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaDoyNTg6XFx0dTY0IHJ4X3BwcDU7ICAgICAgICAgICAgICAvKiAjIG9mIHJlY2VpdmVkIFBQUCBwcmlvIDUgZnJhbWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNC5oOjI1OTpcXHR1NjQgcnhfcHBwNjsgICAgICAgICAgICAgIC8qICMgb2YgcmVjZWl2ZWQgUFBQIHByaW8gNiBmcmFtZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0Lmg6MjYwOlxcdHU2NCByeF9wcHA3OyAgICAgICAgICAgICAgLyogIyBvZiByZWNlaXZlZCBQUFAgcHJpbyA3IGZyYW1lcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjQuaC0yNjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYz00NT1zdGF0aWMgY29uc3QgY2hhciBzdGF0c19zdHJpbmdzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jLTYyLVxcdFxcXCJ0eF9wYXVzZV9mcmFtZXMgICAgICAgIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6NjM6XFx0XFxcInR4X3BwcDBfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo2NDpcXHRcXFwidHhfcHBwMV9mcmFtZXMgICAgICAgICBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjY1OlxcdFxcXCJ0eF9wcHAyX2ZyYW1lcyAgICAgICAgIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6NjY6XFx0XFxcInR4X3BwcDNfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo2NzpcXHRcXFwidHhfcHBwNF9mcmFtZXMgICAgICAgICBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjY4OlxcdFxcXCJ0eF9wcHA1X2ZyYW1lcyAgICAgICAgIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6Njk6XFx0XFxcInR4X3BwcDZfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo3MDpcXHRcXFwidHhfcHBwN19mcmFtZXMgICAgICAgICBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jLTcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmMtOTMtXFx0XFxcInJ4X3BhdXNlX2ZyYW1lcyAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo5NDpcXHRcXFwicnhfcHBwMF9mcmFtZXMgICAgICAgICBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjk1OlxcdFxcXCJyeF9wcHAxX2ZyYW1lcyAgICAgICAgIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6OTY6XFx0XFxcInJ4X3BwcDJfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzo5NzpcXHRcXFwicnhfcHBwM19mcmFtZXMgICAgICAgICBcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfZXRodG9vbC5jOjk4OlxcdFxcXCJyeF9wcHA0X2ZyYW1lcyAgICAgICAgIFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9ldGh0b29sLmM6OTk6XFx0XFxcInJ4X3BwcDVfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzoxMDA6XFx0XFxcInJ4X3BwcDZfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYzoxMDE6XFx0XFxcInJ4X3BwcDdfZnJhbWVzICAgICAgICAgXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X2V0aHRvb2wuYy0xMDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM9NjM0NT12b2lkIHQ0X2dldF9wb3J0X3N0YXRzKHN0cnVjdCBhZGFwdGVyICphZGFwLCBpbnQgaWR4LCBzdHJ1Y3QgcG9ydF9zdGF0cyAqcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02MzcwLVxcdHAtXFx1MDAzZXR4X3BhdXNlICAgICAgICAgICAgPSBHRVRfU1RBVChUWF9QT1JUX1BBVVNFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3MTpcXHRwLVxcdTAwM2V0eF9wcHAwICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3MjpcXHRwLVxcdTAwM2V0eF9wcHAxICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3MzpcXHRwLVxcdTAwM2V0eF9wcHAyICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3NDpcXHRwLVxcdTAwM2V0eF9wcHAzICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFAzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3NTpcXHRwLVxcdTAwM2V0eF9wcHA0ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3NjpcXHRwLVxcdTAwM2V0eF9wcHA1ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3NzpcXHRwLVxcdTAwM2V0eF9wcHA2ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjM3ODpcXHRwLVxcdTAwM2V0eF9wcHA3ICAgICAgICAgICAgID0gR0VUX1NUQVQoVFhfUE9SVF9QUFA3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtNjM3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRfaHcuYy02NDA0LVxcdHAtXFx1MDAzZXJ4X3BhdXNlICAgICAgICAgICAgPSBHRVRfU1RBVChSWF9QT1JUX1BBVVNFKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwNTpcXHRwLVxcdTAwM2VyeF9wcHAwICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwNjpcXHRwLVxcdTAwM2VyeF9wcHAxICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFAxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwNzpcXHRwLVxcdTAwM2VyeF9wcHAyICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFAyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwODpcXHRwLVxcdTAwM2VyeF9wcHAzICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFAzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQwOTpcXHRwLVxcdTAwM2VyeF9wcHA0ICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFA0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQxMDpcXHRwLVxcdTAwM2VyeF9wcHA1ICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFA1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQxMTpcXHRwLVxcdTAwM2VyeF9wcHA2ICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFA2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmM6NjQxMjpcXHRwLVxcdTAwM2VyeF9wcHA3ICAgICAgICAgICAgID0gR0VUX1NUQVQoUlhfUE9SVF9QUFA3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0X2h3LmMtNjQxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaD0zMjEwPXN0cnVjdCBmd19wb3J0X3N0YXRzX2NtZCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L3Q0ZndfYXBpLmgtMzI0MS1cXHRcXHRcXHRfX2JlNjQgdHhfcGF1c2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDI6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDM6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDQ6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDU6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDY6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDc6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDg6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oOjMyNDk6XFx0XFx0XFx0X19iZTY0IHR4X3BwcDc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oLTMyNTAtXFx0XFx0XFx0X19iZTY0IHJ4X2J5dGVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC90NGZ3X2FwaS5oLTMyNjctXFx0XFx0XFx0X19iZTY0IHJ4X3BhdXNlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjY4OlxcdFxcdFxcdF9fYmU2NCByeF9wcHAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjY5OlxcdFxcdFxcdF9fYmU2NCByeF9wcHAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjcwOlxcdFxcdFxcdF9fYmU2NCByeF9wcHAyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjcxOlxcdFxcdFxcdF9fYmU2NCByeF9wcHAzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjcyOlxcdFxcdFxcdF9fYmU2NCByeF9wcHA0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjczOlxcdFxcdFxcdF9fYmU2NCByeF9wcHA1O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjc0OlxcdFxcdFxcdF9fYmU2NCByeF9wcHA2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaDozMjc1OlxcdFxcdFxcdF9fYmU2NCByeF9wcHA3O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvdDRmd19hcGkuaC0zMjc2LVxcdFxcdFxcdF9fYmU2NCByeF9sZXNzXzY0YjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaD0yMTM9c3RydWN0IGRwYWEyX2ZhcHIge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aC5oLTIzNi1cXHR1OCBtcGxzX29mZnNldF8xO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaDoyMzc6XFx0dTggcHBwb2Vfb2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1ldGguaC0yMzgtXFx0LyogNjQtYml0IHdvcmQgNSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5oPTExND1zdHJ1Y3QgZm1hbl9wcnNfcmVzdWx0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uaC0xMzQtXFx0dTggZXR5cGVfb2ZmO1xcdFxcdC8qIEVUWVBFIG9mZnNldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uaDoxMzU6XFx0dTggcHBwb2Vfb2ZmO1xcdFxcdC8qIFBQUCBvZmZzZXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmgtMTM2LVxcdHU4IG1wbHNfb2ZmWzJdO1xcdFxcdC8qIE1QTFMgb2Zmc2V0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0Lmg9NzQ9c3RydWN0IGZzX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LmgtOTctICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC5oOjk4OiNkZWZpbmUgTUFYX01UVSAxNTA4XFx0XFx0LyogQWxsb3cgZnVsbHNpemVkIHBwcG9lIHBhY2tldHMgb3ZlciBWTEFOICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC5oLTk5LSNkZWZpbmUgTUlOX01UVSA0NlxcdFxcdC8qIHRoaXMgaXMgZGF0YSBzaXplICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2RlYnVnZnMuYz00Nz1zdGF0aWMgc3RydWN0IGhuczNfZGJnX2NtZF9pbmZvIGhuczNfZGJnX2NtZFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM19kZWJ1Z2ZzLmMtMjIyLVxcdHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2RlYnVnZnMuYzoyMjM6XFx0XFx0Lm5hbWUgPSBcXFwicHBwXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzX2RlYnVnZnMuYy0yMjQtXFx0XFx0LmNtZCA9IEhOQUUzX0RCR19DTURfUkVHX1BQUCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM9MzkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGNsZ2VfZGJnX2RmeF9tZXNzYWdlIGhjbGdlX2RiZ19ydGNfcmVnW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jLTQxOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jOjQyMDpzdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2RiZ19kZnhfbWVzc2FnZSBoY2xnZV9kYmdfcHBwX3JlZ1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmMtNDIxLVxcdHtmYWxzZSwgXFxcIlJlc2VydmVkXFxcIn0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jPTY2ND1zdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2RiZ19yZWdfdHlwZV9pbmZvIGhjbGdlX2RiZ19yZWdfaW5mb1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy03MTAtXFx0eyAuY21kID0gSE5BRTNfREJHX0NNRF9SRUdfUFBQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM6NzExOlxcdCAgLmRmeF9tc2cgPSBcXHUwMDI2aGNsZ2VfZGJnX3BwcF9yZWdbMF0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYzo3MTI6XFx0ICAucmVnX21zZyA9IHsgLm1zZ19udW0gPSBBUlJBWV9TSVpFKGhjbGdlX2RiZ19wcHBfcmVnKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jLTcxMy1cXHRcXHQgICAgICAgLm9mZnNldCA9IEhDTEdFX0RCR19ERlhfUFBQX09GRlNFVCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM9MTI0OT1zdGF0aWMgaW50IGhjbGdlX2RiZ19kdW1wX3J0Y19yZWdfY21kKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmMtMTI1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZGVidWdmcy5jOjEyNTQ6c3RhdGljIGludCBoY2xnZV9kYmdfZHVtcF9wcHBfcmVnX2NtZChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy0xMjU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9kZWJ1Z2ZzLmM9MjkzOD1zdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2RiZ19mdW5jIGhjbGdlX2RiZ19jbWRfZnVuY1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy0zMDQ0LVxcdFxcdC5jbWQgPSBITkFFM19EQkdfQ01EX1JFR19QUFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYzozMDQ1OlxcdFxcdC5kYmdfcmVhZF9mdW5jID0gaGNsZ2VfZGJnX2R1bXBfcHBwX3JlZ19jbWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2RlYnVnZnMuYy0zMDQ2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM9MjA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGNsZ2VfaHdfZXJyb3IgaGNsZ2VfbmNzaV9lcnJfaW50W10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMjE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYzoyMTg6c3RhdGljIGNvbnN0IHN0cnVjdCBoY2xnZV9od19lcnJvciBoY2xnZV9wcHBfbXBmX2Fibm9ybWFsX2ludF9zdDFbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMjE5LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0zNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjM0ODpzdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2Vycm9yIGhjbGdlX3BwcF9wZl9hYm5vcm1hbF9pbnRbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMzQ5LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0zNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjM2MjpzdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2Vycm9yIGhjbGdlX3BwcF9tcGZfYWJub3JtYWxfaW50X3N0M1tdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0zNjMtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jPTg0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2Vycm9yIGhjbGdlX3NzdV9jb21fZXJyX2ludFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTg1Mi1cXHRcXHQuaW50X21zayA9IEJJVCgxKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6ODUzOlxcdFxcdC5tc2cgPSBcXFwicHBwX21iX251bV9lcnJcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy04NTQtXFx0XFx0LnJlc2V0X2xldmVsID0gSE5BRTNfTk9ORV9SRVNFVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTg1Ni1cXHRcXHQuaW50X21zayA9IEJJVCgyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6ODU3OlxcdFxcdC5tc2cgPSBcXFwicHBwX21iaWRfZXJyXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtODU4LVxcdFxcdC5yZXNldF9sZXZlbCA9IEhOQUUzX0dMT0JBTF9SRVNFVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTg2MC1cXHRcXHQuaW50X21zayA9IEJJVCgzKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6ODYxOlxcdFxcdC5tc2cgPSBcXFwicHBwX3JsdF9tYWNfZXJyXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtODYyLVxcdFxcdC5yZXNldF9sZXZlbCA9IEhOQUUzX0dMT0JBTF9SRVNFVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTg2NC1cXHRcXHQuaW50X21zayA9IEJJVCg0KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6ODY1OlxcdFxcdC5tc2cgPSBcXFwicHBwX3JsdF9ob3N0X2VyclxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTg2Ni1cXHRcXHQucmVzZXRfbGV2ZWwgPSBITkFFM19HTE9CQUxfUkVTRVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYz0xODc5PXN0YXRpYyBpbnQgaGNsZ2VfY29uZmlnX2lndV9lZ3VfaHdfZXJyX2ludChzdHJ1Y3QgaGNsZ2VfZGV2ICpoZGV2LCBib29sIGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTE5MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjE5MTg6c3RhdGljIGludCBoY2xnZV9jb25maWdfcHBwX2Vycm9yX2ludGVycnVwdChzdHJ1Y3QgaGNsZ2VfZGV2ICpoZGV2LCB1MzIgY21kLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0xOTE5LVxcdFxcdFxcdFxcdFxcdCAgICBib29sIGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTE5NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjE5Njc6c3RhdGljIGludCBoY2xnZV9jb25maWdfcHBwX2h3X2Vycl9pbnQoc3RydWN0IGhjbGdlX2RldiAqaGRldiwgYm9vbCBlbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk2OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MTk3MTpcXHRyZXQgPSBoY2xnZV9jb25maWdfcHBwX2Vycm9yX2ludGVycnVwdChoZGV2LCBIQ0xHRV9QUFBfQ01EMF9JTlRfQ01ELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0xOTcyLVxcdFxcdFxcdFxcdFxcdCAgICAgICBlbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMTk3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MTk3NjpcXHRyZXQgPSBoY2xnZV9jb25maWdfcHBwX2Vycm9yX2ludGVycnVwdChoZGV2LCBIQ0xHRV9QUFBfQ01EMV9JTlRfQ01ELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0xOTc3LVxcdFxcdFxcdFxcdFxcdCAgICAgICBlbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM9MjI1MD1zdGF0aWMgaW50IGhjbGdlX2hhbmRsZV9tcGZfcmFzX2Vycm9yKHN0cnVjdCBoY2xnZV9kZXYgKmhkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMjMzMC1cXHRcXHRoY2xnZV9sb2dfZXJyb3IoZGV2LCBcXFwiUFBQX01QRl9BQk5PUk1BTF9JTlRfU1QxXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MjMzMTpcXHRcXHRcXHRcXHRcXHUwMDI2aGNsZ2VfcHBwX21wZl9hYm5vcm1hbF9pbnRfc3QxWzBdLCBzdGF0dXMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTIzMzItXFx0XFx0XFx0XFx0XFx1MDAyNmFlX2Rldi1cXHUwMDNlaHdfZXJyX3Jlc2V0X3JlcSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmMtMjMzNi1cXHRcXHRoY2xnZV9sb2dfZXJyb3IoZGV2LCBcXFwiUFBQX01QRl9BQk5PUk1BTF9JTlRfU1QzXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM6MjMzNzpcXHRcXHRcXHRcXHRcXHUwMDI2aGNsZ2VfcHBwX21wZl9hYm5vcm1hbF9pbnRfc3QzWzBdLCBzdGF0dXMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTIzMzgtXFx0XFx0XFx0XFx0XFx1MDAyNmFlX2Rldi1cXHUwMDNlaHdfZXJyX3Jlc2V0X3JlcSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfZXJyLmM9MjcxNj1zdGF0aWMgY29uc3Qgc3RydWN0IGhjbGdlX2h3X2JsayBod19ibGtbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0yNzIzLVxcdFxcdC5uYW1lID0gXFxcIlBQUFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjI3MjQ6XFx0XFx0LmNvbmZpZ19lcnJfaW50ID0gaGNsZ2VfY29uZmlnX3BwcF9od19lcnJfaW50LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0yNzI1LVxcdH0sIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYz0yOTc1PXN0YXRpYyBpbnQgaGNsZ2VfaGFuZGxlX3BmX21zaXhfZXJyb3Ioc3RydWN0IGhjbGdlX2RldiAqaGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9lcnIuYy0zMDA1LVxcdFxcdGhjbGdlX2xvZ19lcnJvcihkZXYsIFxcXCJQUFBfUEZfQUJOT1JNQUxfSU5UX1NUMFxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jOjMwMDY6XFx0XFx0XFx0XFx0XFx1MDAyNmhjbGdlX3BwcF9wZl9hYm5vcm1hbF9pbnRbMF0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX2Vyci5jLTMwMDctXFx0XFx0XFx0XFx0c3RhdHVzLCByZXNldF9yZXF1ZXN0cyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmgtNTYtI2luY2x1ZGUgXFx1MDAzY25ldC9ndHAuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlLmg6NTc6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BwcF9kZWZzLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZS5oLTU4LSNpbmNsdWRlIFxcXCJpY2VfZGV2aWRzLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2ZkaXIuaD0xMzI9c3RydWN0IGljZV9mZGlyX3VkcF9ndHAge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mZGlyLmgtMTQyLVxcdFxcdHNwYXJlOjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mZGlyLmg6MTQzOlxcdHU4XFx0cHBwOjEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mZGlyLmgtMTQ0LVxcdFxcdHJxaToxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mbG93LmM9NTg3PXN0YXRpYyBjb25zdCB1MzIgaWNlX3B0eXBlc19ndHB1W10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYy01OTgtLyogUGFja2V0IHR5cGVzIGZvciBQUFBvRSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jOjU5OTpzdGF0aWMgY29uc3QgdTMyIGljZV9wdHlwZXNfcHBwb2VbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYy02MDAtXFx0MHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jPTgwNz1zdGF0aWMgaW50IGljZV9mbG93X3Byb2Nfc2VnX2hkcnMoc3RydWN0IGljZV9mbG93X3Byb2ZfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYy04ODEtXFx0XFx0fSBlbHNlIGlmIChoZHJzIFxcdTAwMjYgSUNFX0ZMT1dfU0VHX0hEUl9QUFBPRSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jOjg4MjpcXHRcXHRcXHRzcmMgPSAoY29uc3QgdW5zaWduZWQgbG9uZyAqKWljZV9wdHlwZXNfcHBwb2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9mbG93LmMtODgzLVxcdFxcdFxcdGJpdG1hcF9hbmQocGFyYW1zLVxcdTAwM2VwdHlwZXMsIHBhcmFtcy1cXHUwMDNlcHR5cGVzLCBzcmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYy04ODUtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Zsb3cuYzo4ODY6XFx0XFx0XFx0c3JjID0gKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilpY2VfcHR5cGVzX3BwcG9lO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZmxvdy5jLTg4Ny1cXHRcXHRcXHRiaXRtYXBfYW5kbm90KHBhcmFtcy1cXHUwMDNlcHR5cGVzLCBwYXJhbXMtXFx1MDAzZXB0eXBlcywgc3JjLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmg9MjMzPXN0cnVjdCBpY2VfcGZjcF9oZHIge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtMjQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oOjI0MjpzdHJ1Y3QgaWNlX3BwcG9lX2hkciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtMjQzLVxcdHU4IHJzcnZkX3Zlcl90eXBlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtMjQ2LVxcdF9fYmUxNiBsZW5ndGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmg6MjQ3OlxcdF9fYmUxNiBwcHBfcHJvdF9pZDsgLyogY29udHJvbCBhbmQgZGF0YSBvbmx5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtMjQ4LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3Byb3RvY29sX3R5cGUuaD00NDc9dW5pb24gaWNlX3Byb3RfaGRyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oLTQ1OC1cXHRzdHJ1Y3QgaWNlX3BmY3BfaGRyIHBmY3BfaGRyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfcHJvdG9jb2xfdHlwZS5oOjQ1OTpcXHRzdHJ1Y3QgaWNlX3BwcG9lX2hkciBwcHBvZV9oZHI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9wcm90b2NvbF90eXBlLmgtNDYwLVxcdHN0cnVjdCBpY2VfbDJ0cHYzX3Nlc3NfaGRyIGwydHB2M19zZXNzX2hkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM9MTE1Nz1JQ0VfREVDTEFSRV9QS1RfVEVNUExBVEUocGZjcF9zZXNzaW9uX2lwdjYpID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6MTE4NjpJQ0VfREVDTEFSRV9QS1RfT0ZGU0VUUyhwcHBvZV9pcHY0X3RjcCkgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMTg3LVxcdHsgSUNFX01BQ19PRk9TLFxcdFxcdDAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTE5NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjExOTU6SUNFX0RFQ0xBUkVfUEtUX1RFTVBMQVRFKHBwcG9lX2lwdjRfdGNwKSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTExOTYtXFx0MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgLyogSUNFX01BQ19PRk9TIDAgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjEyMjI6SUNFX0RFQ0xBUkVfUEtUX09GRlNFVFMocHBwb2VfaXB2NF91ZHApID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTIyMy1cXHR7IElDRV9NQUNfT0ZPUyxcXHRcXHQwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEyMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxMjMxOklDRV9ERUNMQVJFX1BLVF9URU1QTEFURShwcHBvZV9pcHY0X3VkcCkgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjMyLVxcdDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIC8qIElDRV9NQUNfT0ZPUyAwICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEyNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxMjU1OklDRV9ERUNMQVJFX1BLVF9PRkZTRVRTKHBwcG9lX2lwdjZfdGNwKSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEyNTYtXFx0eyBJQ0VfTUFDX09GT1MsXFx0XFx0MCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6MTI2NDpJQ0VfREVDTEFSRV9QS1RfVEVNUExBVEUocHBwb2VfaXB2Nl90Y3ApID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTI2NS1cXHQweDAwLCAweDAwLCAweDAwLCAweDAwLCAvKiBJQ0VfTUFDX09GT1MgMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6MTI5NjpJQ0VfREVDTEFSRV9QS1RfT0ZGU0VUUyhwcHBvZV9pcHY2X3VkcCkgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy0xMjk3LVxcdHsgSUNFX01BQ19PRk9TLFxcdFxcdDAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTMwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjEzMDU6SUNFX0RFQ0xBUkVfUEtUX1RFTVBMQVRFKHBwcG9lX2lwdjZfdWRwKSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTEzMDYtXFx0MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgLyogSUNFX01BQ19PRk9TIDAgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM9MTM5Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGljZV9kdW1teV9wa3RfcHJvZmlsZSBpY2VfZHVtbXlfcGt0X3Byb2ZpbGVzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTE0MjAtXFx0SUNFX1BLVF9QUk9GSUxFKHBmY3Bfc2Vzc2lvbl9pcHY0LCBJQ0VfUEtUX1BGQ1ApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6MTQyMTpcXHRJQ0VfUEtUX1BST0ZJTEUocHBwb2VfaXB2Nl91ZHAsIElDRV9QS1RfUFBQT0UgfCBJQ0VfUEtUX09VVEVSX0lQVjYgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtMTQyMi1cXHRcXHRcXHRcXHRcXHRJQ0VfUEtUX0lOTkVSX1VEUCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxNDIzOlxcdElDRV9QS1RfUFJPRklMRShwcHBvZV9pcHY2X3RjcCwgSUNFX1BLVF9QUFBPRSB8IElDRV9QS1RfT1VURVJfSVBWNiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzoxNDI0OlxcdElDRV9QS1RfUFJPRklMRShwcHBvZV9pcHY0X3VkcCwgSUNFX1BLVF9QUFBPRSB8IElDRV9QS1RfSU5ORVJfVURQKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jOjE0MjU6XFx0SUNFX1BLVF9QUk9GSUxFKHBwcG9lX2lwdjRfdGNwLCBJQ0VfUEtUX1BQUE9FKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jLTE0MjYtXFx0SUNFX1BLVF9QUk9GSUxFKGdyZV9pcHY2X3RjcCwgSUNFX1BLVF9UVU5fTlZHUkUgfCBJQ0VfUEtUX0lOTkVSX0lQVjYgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYz01NTU3PWljZV9maW5kX2R1bW15X3BhY2tldChzdHJ1Y3QgaWNlX2Fkdl9sa3VwX2VsZW0gKmxrdXBzLCB1MTYgbGt1cHNfY250LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy01NjE0LVxcdFxcdFxcdG1hdGNoIHw9IElDRV9QS1RfUFBQT0U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYzo1NjE1OlxcdFxcdFxcdGlmIChsa3Vwc1tpXS5oX3UucHBwb2VfaGRyLnBwcF9wcm90X2lkID09XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy01NjE2LVxcdFxcdFxcdCAgICBodG9ucyhQUFBfSVBWNikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3N3aXRjaC5jPTU2NDE9aWNlX2ZpbGxfYWR2X2R1bW15X3BhY2tldChzdHJ1Y3QgaWNlX2Fkdl9sa3VwX2VsZW0gKmxrdXBzLCB1MTYgbGt1cHNfY250LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9zd2l0Y2guYy01NzI0LVxcdFxcdGNhc2UgSUNFX1BQUE9FOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmM6NTcyNTpcXHRcXHRcXHRsZW4gPSBzaXplb2Yoc3RydWN0IGljZV9wcHBvZV9oZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2Vfc3dpdGNoLmMtNTcyNi1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM9MzcxPWljZV90Y19maWxsX3J1bGVzKHN0cnVjdCBpY2VfaHcgKmh3LCB1MzIgZmxhZ3MsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTQ5MC1cXHRcXHQgICAgIElDRV9UQ19GTFdSX0ZJRUxEX1BQUF9QUk9UTykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjQ5MTpcXHRcXHRzdHJ1Y3QgaWNlX3BwcG9lX2hkciAqdmFscywgKm1hc2tzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtNDkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6NDkzOlxcdFxcdHZhbHMgPSBcXHUwMDI2bGlzdFtpXS5oX3UucHBwb2VfaGRyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6NDk0OlxcdFxcdG1hc2tzID0gXFx1MDAyNmxpc3RbaV0ubV91LnBwcG9lX2hkcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTQ5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtNDk4LVxcdFxcdGlmIChmbGFncyBcXHUwMDI2IElDRV9UQ19GTFdSX0ZJRUxEX1BQUE9FX1NFU1NJRCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6NDk5OlxcdFxcdFxcdHZhbHMtXFx1MDAzZXNlc3Npb25faWQgPSBoZWFkZXJzLVxcdTAwM2VwcHBvZV9oZHIuc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTUwMC1cXHRcXHRcXHRtYXNrcy1cXHUwMDNlc2Vzc2lvbl9pZCA9IGNwdV90b19iZTE2KDB4RkZGRik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTUwMy1cXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNiBJQ0VfVENfRkxXUl9GSUVMRF9QUFBfUFJPVE8pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjUwNDpcXHRcXHRcXHR2YWxzLVxcdTAwM2VwcHBfcHJvdF9pZCA9IGhlYWRlcnMtXFx1MDAzZXBwcG9lX2hkci5wcHBfcHJvdG87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzo1MDU6XFx0XFx0XFx0bWFza3MtXFx1MDAzZXBwcF9wcm90X2lkID0gY3B1X3RvX2JlMTYoMHhGRkZGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTUwNi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jPTExNDE9aWNlX2FkZF90Y19mbG93ZXJfYWR2X2ZsdHIoc3RydWN0IGljZV92c2kgKnZzaSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTI4OS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjEyOTA6ICogaWNlX3RjX3NldF9wcHBvZSAtIFBhcnNlIFBQUG9FIGZpZWxkcyBmcm9tIFRDIGZsb3dlciBmaWx0ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEyOTEtICogQG1hdGNoOiBQb2ludGVyIHRvIGZsb3cgbWF0Y2ggc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEyOTMtICogQGhlYWRlcnM6IFBvaW50ZXIgdG8gb3V0ZXIgaGVhZGVyIGZpZWxkc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6MTI5NDogKiBAcmV0dXJucyBQUFAgcHJvdG9jb2wgdXNlZCBpbiBmaWx0ZXIgKHBwcF9zZXMgb3IgcHBwX2Rpc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYy0xMjk1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM9MTI5Nj1zdGF0aWMgdTE2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzoxMjk3OmljZV90Y19zZXRfcHBwb2Uoc3RydWN0IGZsb3dfbWF0Y2hfcHBwb2UgKm1hdGNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTI5OC1cXHRcXHQgc3RydWN0IGljZV90Y19mbG93ZXJfZmx0ciAqZmx0cixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwMi1cXHRcXHRmbHRyLVxcdTAwM2VmbGFncyB8PSBJQ0VfVENfRkxXUl9GSUVMRF9QUFBPRV9TRVNTSUQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90Y19saWIuYzoxMzAzOlxcdFxcdGhlYWRlcnMtXFx1MDAzZXBwcG9lX2hkci5zZXNzaW9uX2lkID0gbWF0Y2gtXFx1MDAzZWtleS1cXHUwMDNlc2Vzc2lvbl9pZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEzMDQtXFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jOjEzMDY6XFx0aWYgKG1hdGNoLVxcdTAwM2VtYXNrLVxcdTAwM2VwcHBfcHJvdG8pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTEzMDctXFx0XFx0Zmx0ci1cXHUwMDNlZmxhZ3MgfD0gSUNFX1RDX0ZMV1JfRklFTERfUFBQX1BST1RPO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6MTMwODpcXHRcXHRoZWFkZXJzLVxcdTAwM2VwcHBvZV9oZHIucHBwX3Byb3RvID0gbWF0Y2gtXFx1MDAzZWtleS1cXHUwMDNlcHBwX3Byb3RvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmMtMTMwOS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jPTE2Mzc9aWNlX3BhcnNlX2Nsc19mbG93ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmZpbHRlcl9kZXYsIHN0cnVjdCBpY2VfdnNpICp2c2ksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTE4MzctXFx0aWYgKGZsb3dfcnVsZV9tYXRjaF9rZXkocnVsZSwgRkxPV19ESVNTRUNUT1JfS0VZX1BQUE9FKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdGNfbGliLmM6MTgzODpcXHRcXHRzdHJ1Y3QgZmxvd19tYXRjaF9wcHBvZSBtYXRjaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3RjX2xpYi5jLTE4MzktXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjQ5LjExMzI4ODI2OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTc3Njc4NzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipQUFRQIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuT2theSwgdGltZSB0byBjaXJjbGUgYmFjayBhbmQgZG91YmxlLWNoZWNrIHNvbWV0aGluZyBjcnVjaWFsIGZvciB0aGlzIFBQVFAgaW50ZWdyYXRpb24uIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSBoYXZlbid0IG1pc3NlZCBhbnkgZGVwZW5kZW5jaWVzIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBzaG91bGQgcmUtZXhhbWluZSBgZHJpdmVycy9uZXQvcHBwL0tjb25maWdgIGFnYWluLCBtZXRpY3Vsb3VzbHkuIEl04oCZcyB0b28gZWFzeSB0byBvdmVybG9vayBzb21ldGhpbmcgaW4gdGhlc2UgbmVzdGVkIGNvbmZpZ3VyYXRpb25zLCBlc3BlY2lhbGx5IHdpdGggdGhlIHBvdGVudGlhbCBmb3IgaW50ZXJhY3Rpb25zIGJldHdlZW4gZGlmZmVyZW50IG5ldHdvcmsgc3Vic3lzdGVtcy4gSSB3YW50IHRvIGJ1aWxkIGEgYnVsbGV0cHJvb2YgdW5kZXJzdGFuZGluZywgc28gYSBmcmVzaCBsb29rIGlzIGVzc2VudGlhbCBiZWZvcmUgSSBwcm9jZWVkIGFueSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTcwNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjUxLjI5MDk3MDU0NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcHBwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUFBQIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIFBQUFxcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIlBQUCAocG9pbnQtdG8tcG9pbnQgcHJvdG9jb2wpIHN1cHBvcnRcXFwiXFxuICAgODpcXHRcXHRzZWxlY3QgU0xIQ1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBQUFAgKFBvaW50IHRvIFBvaW50IFByb3RvY29sKSBpcyBhIG5ld2VyIGFuZCBiZXR0ZXIgU0xJUC4gIEl0IHNlcnZlc1xcbiAgMTE6XFx0XFx0ICB0aGUgc2FtZSBwdXJwb3NlOiBzZW5kaW5nIEludGVybmV0IHRyYWZmaWMgb3ZlciB0ZWxlcGhvbmUgKGFuZCBvdGhlclxcbiAgMTI6XFx0XFx0ICBzZXJpYWwpIGxpbmVzLiAgQXNrIHlvdXIgYWNjZXNzIHByb3ZpZGVyIGlmIHRoZXkgc3VwcG9ydCBpdCwgYmVjYXVzZVxcbiAgMTM6XFx0XFx0ICBvdGhlcndpc2UgeW91IGNhbid0IHVzZSBpdDsgbW9zdCBJbnRlcm5ldCBhY2Nlc3MgcHJvdmlkZXJzIHRoZXNlXFxuICAxNDpcXHRcXHQgIGRheXMgc3VwcG9ydCBQUFAgcmF0aGVyIHRoYW4gU0xJUC5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0ICBUbyB1c2UgUFBQLCB5b3UgbmVlZCBhbiBhZGRpdGlvbmFsIHByb2dyYW0gY2FsbGVkIHBwcGQsIGF2YWlsYWJsZSBhdFxcbiAgMTc6XFx0XFx0ICBcXHUwMDNjaHR0cHM6Ly9wcHAuc2FtYmEub3JnXFx1MDAzZS4gIE1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIHRoZSB2ZXJzaW9uIG9mIHBwcGRcXG4gIDE4OlxcdFxcdCAgcmVjb21tZW5kZWQgaW4gXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9DaGFuZ2VzXFx1MDAzZS5cXG4gIDE5OlxcdFxcdCAgVGhlIFBQUCBvcHRpb24gZW5sYXJnZXMgeW91ciBrZXJuZWwgYnkgYWJvdXQgMTYgS0IuXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdCAgVGhlcmUgYXJlIGFjdHVhbGx5IHR3byB2ZXJzaW9ucyBvZiBQUFA6IHRoZSB0cmFkaXRpb25hbCBQUFAgZm9yXFxuICAyMjpcXHRcXHQgIGFzeW5jaHJvbm91cyBsaW5lcywgc3VjaCBhcyByZWd1bGFyIGFuYWxvZyBwaG9uZSBsaW5lcywgYW5kXFxuICAyMzpcXHRcXHQgIHN5bmNocm9ub3VzIFBQUCB3aGljaCBjYW4gYmUgdXNlZCBvdmVyIGRpZ2l0YWwgSVNETiBsaW5lcyBmb3JcXG4gIDI0OlxcdFxcdCAgZXhhbXBsZS4gIElmIHlvdSB3YW50IHRvIHVzZSBQUFAgb3ZlciBwaG9uZSBsaW5lcyBvciBvdGhlclxcbiAgMjU6XFx0XFx0ICBhc3luY2hyb25vdXMgc2VyaWFsIGxpbmVzLCB5b3UgbmVlZCB0byBzYXkgWSAob3IgTSkgaGVyZSBhbmQgYWxzbyB0b1xcbiAgMjY6XFx0XFx0ICB0aGUgbmV4dCBvcHRpb24sIFxcXCJQUFAgc3VwcG9ydCBmb3IgYXN5bmMgc2VyaWFsIHBvcnRzXFxcIi4gIEZvciBQUFAgb3ZlclxcbiAgMjc6XFx0XFx0ICBzeW5jaHJvbm91cyBsaW5lcywgeW91IHNob3VsZCBzYXkgWSAob3IgTSkgaGVyZSBhbmQgdG8gXFxcIlN1cHBvcnRcXG4gIDI4OlxcdFxcdCAgc3luY2hyb25vdXMgUFBQXFxcIiwgYmVsb3cuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgSWYgeW91IHNhaWQgWSB0byBcXFwiVmVyc2lvbiBpbmZvcm1hdGlvbiBvbiBhbGwgc3ltYm9sc1xcXCIgYWJvdmUsIHRoZW5cXG4gIDMxOlxcdFxcdCAgeW91IGNhbm5vdCBjb21waWxlIHRoZSBQUFAgZHJpdmVyIGludG8gdGhlIGtlcm5lbDsgeW91IGNhbiB0aGVuIG9ubHlcXG4gIDMyOlxcdFxcdCAgY29tcGlsZSBpdCBhcyBhIG1vZHVsZS4gVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE1cXG4gIDMzOlxcdFxcdCAgaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBwcHBfZ2VuZXJpYy5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0aWYgUFBQXFxuICAzNjpcXHRcXG4gIDM3OlxcdGNvbmZpZyBQUFBfQlNEQ09NUFxcbiAgMzg6XFx0XFx0dHJpc3RhdGUgXFxcIlBQUCBCU0QtQ29tcHJlc3MgY29tcHJlc3Npb25cXFwiXFxuICAzOTpcXHRcXHRoZWxwXFxuICA0MDpcXHRcXHQgIFN1cHBvcnQgZm9yIHRoZSBCU0QtQ29tcHJlc3MgY29tcHJlc3Npb24gbWV0aG9kIGZvciBQUFAsIHdoaWNoIHVzZXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6NTEuMjkxMTAyNzQ2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzNjEyODUyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgUFBUUCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgUFBUUGAgaXMgbmVzdGVkIHdpdGhpbiBhbiBgaWYgUFBQIC4uLiBlbmRpZmAgYmxvY2suIFRoaXMgdGVsbHMgbWUgdGhhdCBgQ09ORklHX1BQUGAgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIGVuYWJsaW5nIHRoZSBgUFBUUGAgb3B0aW9uLCBhbmQgdGhlcmVmb3JlIHNvIGlzIGBDT05GSUdfUFBUUGAsIGFuZCBhbHNvIGBDT05GSUdfTkVUX0lQR1JFX0RFTVVYYCwgd2hpY2ggYFBQVFBgIHJlbGllcyB1cG9uLiBBbmQgZnVydGhlciwgaXQgbG9va3MgbGlrZSBgUFBUUGAgYWxzbyBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgYFBQUE9YYCB2aWEgYENPTkZJR19QUFBPWGAuXG5cbk5vdywgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgQ09ORklHX0lORVRgIG9yIGFueSBvdGhlciBjb3JlIG5ldHdvcmsgY29uZmlndXJhdGlvbiBlbGVtZW50cyBhcmUgZXNzZW50aWFsIGhlcmUuIExldCdzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBgbmV0L2lwdjQvS2NvbmZpZ2AgZmlsZSwgYE5FVF9JUEdSRV9ERU1VWGAg4oCTIHdoaWNoIGlzICpyZXF1aXJlZCogZm9yIFBQVFAg4oCTIGRlcGVuZHMgb24gYElORVRgLiBHaXZlbiB0aGF0IGBJTkVUYCBpcyBmdW5kYW1lbnRhbGx5IHN0YW5kYXJkIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eSwgdGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIHdpbGwgbm93IGRvdWJsZS1jaGVjayBgbmV0L2lwdjQvS2NvbmZpZ2AgZGlyZWN0bHkgZm9yIGFueSBvdGhlciBgTkVUX0lQR1JFX0RFTVVYYCBkZXBlbmRlbmNpZXMgdG8gY29tcGxldGUgdGhlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNTE1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzU6NTQuNjUyMzkyMzA1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3OCxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3ODpcXHRcXHQgIHdhbnQpLiBNb3N0IHBlb3BsZSB3b24ndCBuZWVkIHRoaXMgYW5kIGNhbiBzYXkgTi5cXG4gMTc5OlxcdFxcbiAxODA6XFx0Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxcbiAxODE6XFx0XFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgZGVtdWx0aXBsZXhlclxcXCJcXG4gMTgyOlxcdFxcdGhlbHBcXG4gMTgzOlxcdFxcdCAgVGhpcyBpcyBoZWxwZXIgbW9kdWxlIHRvIGRlbXVsdGlwbGV4IEdSRSBwYWNrZXRzIG9uIEdSRSB2ZXJzaW9uIGZpZWxkIGNyaXRlcmlhLlxcbiAxODQ6XFx0XFx0ICBSZXF1aXJlZCBieSBpcF9ncmUgYW5kIHBwdHAgbW9kdWxlcy5cXG4gMTg1OlxcdFxcbiAxODY6XFx0Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4gMTg3OlxcdFxcdHRyaXN0YXRlXFxuIDE4ODpcXHRcXHRzZWxlY3QgRFNUX0NBQ0hFXFxuIDE4OTpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuIDE5MDpcXHRcXHRkZWZhdWx0IG5cXG4gMTkxOlxcdFxcbiAxOTI6XFx0Y29uZmlnIE5FVF9JUEdSRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNTo1NC42NTI1MjQ2MjVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTIxODEwOTU1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFZlcmRpY3Q6IENvbmZpcm1lZCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgd2FudGVkIHRvIGNvbmZpcm0gdGhlIGBORVRfSVBHUkVfREVNVVhgIGNvbmZpZyBvcHRpb24uIEl0J3Mgbm90IGRpcmVjdGx5IGRlcGVuZGVudCBvbiBhbnl0aGluZyBlbHNlLCBidXQgaXQgKmlzKiBuZXN0ZWQgd2l0aGluIGBuZXQvaXB2NC9LY29uZmlnYCB1bmRlciBgbWVudWNvbmZpZyBJTkVUYCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQuXG5cbk5leHQsIEkgbG9va2VkIGF0IHRoZSBgRm9jdXNTeW1ib2xzYC4gVGhlIGFuYWx5c2lzIHBvaW50ZWQgdG8gdGhlc2Uga2V5IGZ1bmN0aW9uczogYHBwdHBfcmN2X2NvcmVgLCBgcHB0cF9yY3ZgLCBgcHB0cF9jb25uZWN0YCwgYHBwdHBfYmluZGAsIGBwcHRwX2NyZWF0ZWAsIGFuZCBgcHB0cF94bWl0YC4gSSBoYWQgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgYW55IG9mIHRoZXNlIHdlcmUgc3RhdGljIG9yIGlubGluZWQsIHNpbmNlIHRoYXQgd291bGQgYWZmZWN0IGZ1enppbmcuIEkgY29uZmlybWVkIHRoYXQgYHBwdHBfcmN2X2NvcmVgIGFuZCBgcHB0cF9yY3ZgIGFyZSBzdGF0aWMsIGFuZCB0aGUgb3RoZXJzLCBgcHB0cF9jb25uZWN0YCwgYHBwdHBfYmluZGAsIGBwcHRwX2NyZWF0ZWAsIGBwcHRwX3htaXRgLCBhcmUgdXNlZCB2aWEgZnVuY3Rpb24gcG9pbnRlcnMgaW4gb3BzIHN0cnVjdHVyZXMuIEJlY2F1c2Ugb2YgdGhpcywgdGhlIGNvbXBpbGVyIHdvbid0IGJlIGlubGluaW5nIHRoZW0uIFRoaXMgbWVhbnMgdGhlIGxpc3Qgb2Ygbm9uLWlubGluZWQgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgZnV6emluZyBpczogYHBwdHBfcmN2X2NvcmVgLCBgcHB0cF9yY3ZgLCBgcHB0cF9jcmVhdGVgLCBgcHB0cF9jb25uZWN0YCwgYW5kIGBwcHRwX2JpbmRgLlxuXG5JIHRoZW4gbWFkZSBzdXJlIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBtYXRjaGVkIHRoZSByZXF1aXJlbWVudHMuIEkndmUgdmVyaWZpZWQgdGhhdCBgUFBUUGAsIGBQUFBgLCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAgYXJlIHRoZSBjb3JyZWN0IGNvbmZpZyBmbGFncy5cblxuRmluYWxseSwgSSByZXZpZXdlZCB0aGUgcHJvbXB0IHJlcXVpcmVtZW50czogdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgdHJ1ZSwgc2luY2UgdGhlc2UgY2hhbmdlcyBoYXZlIGEgZnVuY3Rpb25hbCBpbXBhY3Qgd29ydGggZnV6emluZy4gSSBoYXZlIGEgbGlzdCBvZiBub24taG90LXBhdGgga2VybmVsIGZ1bmN0aW9ucyB0byBmb2N1cyBmdXp6aW5nIG9uLCBhbmQgdGhlIHJlcXVpcmVkIGVuYWJsZSBjb25maWdzLiBFdmVyeXRoaW5nIG1hdGNoZXMuIFRoZSBkYXRhIGlzIHZhbGlkYXRlZC5cblxuTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE0NSwiT3V0cHV0VG9rZW5zIjoxNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNTo1OS44NzA2MzkyMTVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTQ3MzYzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBUUFwiLFxuICAgIFwiUFBQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHRwX3Jjdl9jb3JlXCIsXG4gICAgXCJwcHRwX3JjdlwiLFxuICAgIFwicHB0cF9jcmVhdGVcIixcbiAgICBcInBwdHBfY29ubmVjdFwiLFxuICAgIFwicHB0cF9iaW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IHJlY2VwdGlvbiBwYXJzaW5nIGFuZCBib3VuZHMgY2hlY2tpbmcgbG9naWMgaW4gcHB0cF9yY3ZfY29yZSgpIHdpdGhpbiB0aGUgUFBUUCBuZXR3b3JrIHByb3RvY29sIGRyaXZlciAoZHJpdmVycy9uZXQvcHBwL3BwdHAuYyksIGVuc3VyaW5nIHBheWxvYWQgYXZhaWxhYmlsaXR5IGNoZWNrcyBhbmQgcHNrYl9tYXlfcHVsbCgpIGNhbGxzIHByZWNlZGUgaGVhZGVyIGRlcmVmZXJlbmNpbmcgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9uIHRydW5jYXRlZCBwYWNrZXRzLiBUaGlzIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIEFGX1BQUE9YIHNvY2tldHMgYW5kIEdSRSBwYWNrZXQgZGVsaXZlcnkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBUUFwiLFxuICAgIFwiUFBQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHRwX3Jjdl9jb3JlXCIsXG4gICAgXCJwcHRwX3JjdlwiLFxuICAgIFwicHB0cF9jcmVhdGVcIixcbiAgICBcInBwdHBfY29ubmVjdFwiLFxuICAgIFwicHB0cF9iaW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IHJlY2VwdGlvbiBwYXJzaW5nIGFuZCBib3VuZHMgY2hlY2tpbmcgbG9naWMgaW4gcHB0cF9yY3ZfY29yZSgpIHdpdGhpbiB0aGUgUFBUUCBuZXR3b3JrIHByb3RvY29sIGRyaXZlciAoZHJpdmVycy9uZXQvcHBwL3BwdHAuYyksIGVuc3VyaW5nIHBheWxvYWQgYXZhaWxhYmlsaXR5IGNoZWNrcyBhbmQgcHNrYl9tYXlfcHVsbCgpIGNhbGxzIHByZWNlZGUgaGVhZGVyIGRlcmVmZXJlbmNpbmcgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9uIHRydW5jYXRlZCBwYWNrZXRzLiBUaGlzIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIEFGX1BQUE9YIHNvY2tldHMgYW5kIEdSRSBwYWNrZXQgZGVsaXZlcnkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjU5Ljk1MDEyMDQxOVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2NTczMjI5NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNTo1OS45NTA2MjAyMjlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NzY1NjgxODQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGJvdW5kcyBjaGVja2luZyBhbmQgc2tiIHB1bGwgb3BlcmF0aW9ucyBpbiB0aGUgUFBUUCByZWNlaXZlIHBhdGggKGRyaXZlcnMvbmV0L3BwcC9wcHRwLmMpLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCBhZGVxdWF0ZSBwYXlsb2FkIGJ5dGVzIGFyZSBhdmFpbGFibGUgYW5kIHB1bGxlZCBpbnRvIHRoZSBza2IgbGluZWFyIGFyZWEgYmVmb3JlIGluZGV4aW5nIGludG8gc2tiIHBheWxvYWQgb2Zmc2V0cyAocGF5bG9hZFswXSB0aHJvdWdoIHBheWxvYWRbNF0gYW5kIHNrYi1cXHUwMDNlZGF0YVswXSB0aHJvdWdoIHNrYi1cXHUwMDNlZGF0YVsxXSkuXFxuXFxuVGhlc2UgY2hhbmdlcyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgKE9PQikgbWVtb3J5IHJlYWRzIG9uIHRydW5jYXRlZCBvciBtYWxmb3JtZWQgbmV0d29yayBwYWNrZXRzLiBPT0IgcmVhZHMgYW5kIGludmFsaWQgc2tiIGJ1ZmZlciBkZXJlZmVyZW5jZXMgYXJlIGRpcmVjdGx5IGRldGVjdGVkIGJ5IHN0YW5kYXJkIEtBU0FOIGJ1aWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgY29weSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjE1NTk1OTI1ZjI5OGVlZjVmMjJkOWM3ZDI4YjM1MTIyZGEwMmM4ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTY6MzU6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggYTc5N2EwNjA2ZjZiNC4uNGZiOTRhNDU1YzU3NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0yNzUsNiArMjc1LDcgQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcbiBcdHN0cnVjdCBwcHRwX29wdCAqb3B0ID0gXHUwMDI2cG8tXHUwMDNlcHJvdG8ucHB0cDtcbiBcdGludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxO1xuK1x0dW5zaWduZWQgaW50IHBheWxvYWRfYXZhaWw7XG4gXHRfX3U4ICpwYXlsb2FkO1xuIFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuIFxuQEAgLTMxNCwyMyArMzE1LDM0IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZWFkZXJzaXplICsgcGF5bG9hZF9sZW4pKVxuIFx0XHRnb3RvIGRyb3A7XG4gXG4tXHRwYXlsb2FkID0gc2tiLVx1MDAzZWRhdGEgKyBoZWFkZXJzaXplO1xuK1x0cGF5bG9hZF9hdmFpbCA9IHNrYi1cdTAwM2VsZW4gLSBoZWFkZXJzaXplO1xuIFx0LyogY2hlY2sgZm9yIGV4cGVjdGVkIHNlcXVlbmNlIG51bWJlciAqL1xuIFx0aWYgKHNlcSBcdTAwM2Mgb3B0LVx1MDAzZXNlcV9yZWN2ICsgMSB8fCBXUkFQUEVEKG9wdC1cdTAwM2VzZXFfcmVjdiwgc2VxKSkge1xuLVx0XHRpZiAoKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TKSBcdTAwMjZcdTAwMjYgKHBheWxvYWRbMV0gPT0gUFBQX1VJKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHRcdChQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQoKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRKSB8fCAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKSlcbi1cdFx0XHRnb3RvIGFsbG93X3BhY2tldDtcbitcdFx0aWYgKHBheWxvYWRfYXZhaWwgXHUwMDNlPSBQUFBfSERSTEVOICsgMSkge1xuK1x0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgKyBQUFBfSERSTEVOICsgMSkpXG4rXHRcdFx0XHRnb3RvIGRyb3A7XG4rXG4rXHRcdFx0cGF5bG9hZCA9IHNrYi1cdTAwM2VkYXRhICsgaGVhZGVyc2l6ZTtcbitcdFx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFx1MDAyNlx1MDAyNlxuK1x0XHRcdCAgICBQUFBfUFJPVE9DT0wocGF5bG9hZCkgPT0gUFBQX0xDUCBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgKHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVRIHx8IHBheWxvYWRbNF0gPT0gUFBQX0xDUF9FQ0hPUkVQKSlcbitcdFx0XHRcdGdvdG8gYWxsb3dfcGFja2V0O1xuK1x0XHR9XG4gXHR9IGVsc2Uge1xuIFx0XHRvcHQtXHUwMDNlc2VxX3JlY3YgPSBzZXE7XG4gYWxsb3dfcGFja2V0OlxuIFx0XHRza2JfcHVsbChza2IsIGhlYWRlcnNpemUpO1xuIFxuLVx0XHRpZiAocGF5bG9hZFswXSA9PSBQUFBfQUxMU1RBVElPTlMgXHUwMDI2XHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJKSB7XG4tXHRcdFx0LyogY2hvcCBvZmYgYWRkcmVzcy9jb250cm9sICovXG4tXHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIDMpXG4rXHRcdGlmIChwYXlsb2FkX2F2YWlsIFx1MDAzZT0gMikge1xuK1x0XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIDIpKVxuIFx0XHRcdFx0Z290byBkcm9wO1xuLVx0XHRcdHNrYl9wdWxsKHNrYiwgMik7XG4rXG4rXHRcdFx0aWYgKHNrYi1cdTAwM2VkYXRhWzBdID09IFBQUF9BTExTVEFUSU9OUyBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWRhdGFbMV0gPT0gUFBQX1VJKSB7XG4rXHRcdFx0XHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cbitcdFx0XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyAzKVxuK1x0XHRcdFx0XHRnb3RvIGRyb3A7XG4rXHRcdFx0XHRza2JfcHVsbChza2IsIDIpO1xuK1x0XHRcdH1cbiBcdFx0fVxuIFxuIFx0XHRza2ItXHUwMDNlaXBfc3VtbWVkID0gQ0hFQ0tTVU1fTk9ORTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM1OjU5Ljk1MDYyMTIyOVoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDcwOTEwNjAyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFdmFsdWF0aW5nIHRoZSBOZWNlc3NpdHkgb2YgS01TQU4gRnV6emluZyBmb3IgYSBQUFBUUCBQYXRjaCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkZWNpZGUgaWYgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2Agd2FycmFudHMgYSBzZXBhcmF0ZSBLTVNBTiBmdXp6aW5nIHNlc3Npb24sIGJleW9uZCB0aGUgdXN1YWwgS0FTQU4gY2hlY2tzLiBMZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEl0J3MgcmVhbGx5IGp1c3Qgc29mdHdhcmUgZGVmZW5zZSBhbmQga2VybmVsIHBhdGNoIHJldmlldy4gVGhlIHNldmVyaXR5IGhlcmUgaXMgcHJldHR5IGxvdyDigJMganVzdCB0aGUgdXN1YWwgY29kZSByZXZpZXcgYW5kIHBpY2tpbmcgdGhlIHJpZ2h0IHNhbml0aXphdGlvbiB0b29sLiBObyBpbW1lZGlhdGUgZmlyZSBkcmlsbHMuXG5cbkkgc2hvdWxkIGV4YW1pbmUgdGhlIHBhdGNoIGl0c2VsZiBmaXJzdCwgYW5kIHRoZW4gcmVhbGx5IGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYC4gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIGEgcXVpY2sgZ2xhbmNlLCBidXQgaWYgYW55dGhpbmcgbG9va3MgZXZlbiBzbGlnaHRseSBzdXNwaWNpb3VzLCBJJ2xsIGRlZmluaXRlbHkgZGl2ZSBkZWVwZXIsIHVzaW5nIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGZ1bmN0aW9uIG9mIHRoZSBjb2RlIGFyb3VuZCB0aGlzIHBhdGNoIGFuZCB0aGUgdmFyaWFibGVzIGJlaW5nIHVzZWQuIFRoaXMgaXNuJ3QgaGlnaC1zdGFrZXMsIGJ1dCBJIHdhbnQgdG8gYmUgdGhvcm91Z2guIEl0J3MgYWxsIGFib3V0IG1ha2luZyBhbiBpbmZvcm1lZCBkZWNpc2lvbiBhYm91dCBhbGxvY2F0aW5nIHJlc291cmNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5OSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE2OjM2OjQ0LjY1OTczMDYzMVoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDAzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNzAsXG4gIFwiTGluZUNvdW50XCI6IDkwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNzA6XFx0XFx0cmV0dXJuIDE7XFxuIDI3MTpcXHR9XFxuIDI3MjpcXHRcXG4gMjczOlxcdHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIDI3NDpcXHR7XFxuIDI3NTpcXHRcXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuIDI3NjpcXHRcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdCA9IFxcdTAwMjZwby1cXHUwMDNlcHJvdG8ucHB0cDtcXG4gMjc3OlxcdFxcdGludCBoZWFkZXJzaXplLCBwYXlsb2FkX2xlbiwgc2VxO1xcbiAyNzg6XFx0XFx0dW5zaWduZWQgaW50IHBheWxvYWRfYXZhaWw7XFxuIDI3OTpcXHRcXHRfX3U4ICpwYXlsb2FkO1xcbiAyODA6XFx0XFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xcbiAyODE6XFx0XFxuIDI4MjpcXHRcXHRpZiAoIShzay1cXHUwMDNlc2tfc3RhdGUgXFx1MDAyNiBQUFBPWF9DT05ORUNURUQpKVxcbiAyODM6XFx0XFx0XFx0Z290byBkcm9wO1xcbiAyODQ6XFx0XFxuIDI4NTpcXHRcXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXFx1MDAzZWRhdGEpO1xcbiAyODY6XFx0XFx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XFxuIDI4NzpcXHRcXG4gMjg4OlxcdFxcdC8qIHRlc3QgaWYgYWNrbm93bGVkZ2VtZW50IHByZXNlbnQgKi9cXG4gMjg5OlxcdFxcdGlmIChHUkVfSVNfQUNLKGhlYWRlci1cXHUwMDNlZ3JlX2hkLmZsYWdzKSkge1xcbiAyOTA6XFx0XFx0XFx0X191MzIgYWNrO1xcbiAyOTE6XFx0XFxuIDI5MjpcXHRcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZWFkZXJzaXplKSlcXG4gMjkzOlxcdFxcdFxcdFxcdGdvdG8gZHJvcDtcXG4gMjk0OlxcdFxcdFxcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuIDI5NTpcXHRcXG4gMjk2OlxcdFxcdFxcdC8qIGFjayBpbiBkaWZmZXJlbnQgcGxhY2UgaWYgUyA9IDAgKi9cXG4gMjk3OlxcdFxcdFxcdGFjayA9IEdSRV9JU19TRVEoaGVhZGVyLVxcdTAwM2VncmVfaGQuZmxhZ3MpID8gbnRvaGwoaGVhZGVyLVxcdTAwM2VhY2spIDpcXG4gMjk4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBudG9obChoZWFkZXItXFx1MDAzZXNlcSk7XFxuIDI5OTpcXHRcXHRcXHRpZiAoYWNrIFxcdTAwM2Ugb3B0LVxcdTAwM2VhY2tfcmVjdilcXG4gMzAwOlxcdFxcdFxcdFxcdG9wdC1cXHUwMDNlYWNrX3JlY3YgPSBhY2s7XFxuIDMwMTpcXHRcXHRcXHQvKiBhbHNvIGhhbmRsZSBzZXF1ZW5jZSBudW1iZXIgd3JhcC1hcm91bmQgICovXFxuIDMwMjpcXHRcXHRcXHRpZiAoV1JBUFBFRChhY2ssIG9wdC1cXHUwMDNlYWNrX3JlY3YpKVxcbiAzMDM6XFx0XFx0XFx0XFx0b3B0LVxcdTAwM2VhY2tfcmVjdiA9IGFjaztcXG4gMzA0OlxcdFxcdH0gZWxzZSB7XFxuIDMwNTpcXHRcXHRcXHRoZWFkZXJzaXplIC09IHNpemVvZihoZWFkZXItXFx1MDAzZWFjayk7XFxuIDMwNjpcXHRcXHR9XFxuIDMwNzpcXHRcXHQvKiB0ZXN0IGlmIHBheWxvYWQgcHJlc2VudCAqL1xcbiAzMDg6XFx0XFx0aWYgKCFHUkVfSVNfU0VRKGhlYWRlci1cXHUwMDNlZ3JlX2hkLmZsYWdzKSlcXG4gMzA5OlxcdFxcdFxcdGdvdG8gZHJvcDtcXG4gMzEwOlxcdFxcbiAzMTE6XFx0XFx0cGF5bG9hZF9sZW4gPSBudG9ocyhoZWFkZXItXFx1MDAzZXBheWxvYWRfbGVuKTtcXG4gMzEyOlxcdFxcdHNlcSAgICAgICAgID0gbnRvaGwoaGVhZGVyLVxcdTAwM2VzZXEpO1xcbiAzMTM6XFx0XFxuIDMxNDpcXHRcXHQvKiBjaGVjayBmb3IgaW5jb21wbGV0ZSBwYWNrZXQgKGxlbmd0aCBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQpICovXFxuIDMxNTpcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZWFkZXJzaXplICsgcGF5bG9hZF9sZW4pKVxcbiAzMTY6XFx0XFx0XFx0Z290byBkcm9wO1xcbiAzMTc6XFx0XFxuIDMxODpcXHRcXHRwYXlsb2FkX2F2YWlsID0gc2tiLVxcdTAwM2VsZW4gLSBoZWFkZXJzaXplO1xcbiAzMTk6XFx0XFx0LyogY2hlY2sgZm9yIGV4cGVjdGVkIHNlcXVlbmNlIG51bWJlciAqL1xcbiAzMjA6XFx0XFx0aWYgKHNlcSBcXHUwMDNjIG9wdC1cXHUwMDNlc2VxX3JlY3YgKyAxIHx8IFdSQVBQRUQob3B0LVxcdTAwM2VzZXFfcmVjdiwgc2VxKSkge1xcbiAzMjE6XFx0XFx0XFx0aWYgKHBheWxvYWRfYXZhaWwgXFx1MDAzZT0gUFBQX0hEUkxFTiArIDEpIHtcXG4gMzIyOlxcdFxcdFxcdFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhlYWRlcnNpemUgKyBQUFBfSERSTEVOICsgMSkpXFxuIDMyMzpcXHRcXHRcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIDMyNDpcXHRcXG4gMzI1OlxcdFxcdFxcdFxcdHBheWxvYWQgPSBza2ItXFx1MDAzZWRhdGEgKyBoZWFkZXJzaXplO1xcbiAzMjY6XFx0XFx0XFx0XFx0aWYgKHBheWxvYWRbMF0gPT0gUFBQX0FMTFNUQVRJT05TIFxcdTAwMjZcXHUwMDI2IHBheWxvYWRbMV0gPT0gUFBQX1VJIFxcdTAwMjZcXHUwMDI2XFxuIDMyNzpcXHRcXHRcXHRcXHQgICAgUFBQX1BST1RPQ09MKHBheWxvYWQpID09IFBQUF9MQ1AgXFx1MDAyNlxcdTAwMjZcXG4gMzI4OlxcdFxcdFxcdFxcdCAgICAocGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVEgfHwgcGF5bG9hZFs0XSA9PSBQUFBfTENQX0VDSE9SRVApKVxcbiAzMjk6XFx0XFx0XFx0XFx0XFx0Z290byBhbGxvd19wYWNrZXQ7XFxuIDMzMDpcXHRcXHRcXHR9XFxuIDMzMTpcXHRcXHR9IGVsc2Uge1xcbiAzMzI6XFx0XFx0XFx0b3B0LVxcdTAwM2VzZXFfcmVjdiA9IHNlcTtcXG4gMzMzOlxcdGFsbG93X3BhY2tldDpcXG4gMzM0OlxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgaGVhZGVyc2l6ZSk7XFxuIDMzNTpcXHRcXG4gMzM2OlxcdFxcdFxcdGlmIChwYXlsb2FkX2F2YWlsIFxcdTAwM2U9IDIpIHtcXG4gMzM3OlxcdFxcdFxcdFxcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIDIpKVxcbiAzMzg6XFx0XFx0XFx0XFx0XFx0Z290byBkcm9wO1xcbiAzMzk6XFx0XFxuIDM0MDpcXHRcXHRcXHRcXHRpZiAoc2tiLVxcdTAwM2VkYXRhWzBdID09IFBQUF9BTExTVEFUSU9OUyBcXHUwMDI2XFx1MDAyNiBza2ItXFx1MDAzZWRhdGFbMV0gPT0gUFBQX1VJKSB7XFxuIDM0MTpcXHRcXHRcXHRcXHRcXHQvKiBjaG9wIG9mZiBhZGRyZXNzL2NvbnRyb2wgKi9cXG4gMzQyOlxcdFxcdFxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIDMpXFxuIDM0MzpcXHRcXHRcXHRcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIDM0NDpcXHRcXHRcXHRcXHRcXHRza2JfcHVsbChza2IsIDIpO1xcbiAzNDU6XFx0XFx0XFx0XFx0fVxcbiAzNDY6XFx0XFx0XFx0fVxcbiAzNDc6XFx0XFxuIDM0ODpcXHRcXHRcXHRza2ItXFx1MDAzZWlwX3N1bW1lZCA9IENIRUNLU1VNX05PTkU7XFxuIDM0OTpcXHRcXHRcXHRza2Jfc2V0X25ldHdvcmtfaGVhZGVyKHNrYiwgc2tiLVxcdTAwM2VoZWFkLXNrYi1cXHUwMDNlZGF0YSk7XFxuIDM1MDpcXHRcXHRcXHRwcHBfaW5wdXQoXFx1MDAyNnBvLVxcdTAwM2VjaGFuLCBza2IpO1xcbiAzNTE6XFx0XFxuIDM1MjpcXHRcXHRcXHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XFxuIDM1MzpcXHRcXHR9XFxuIDM1NDpcXHRkcm9wOlxcbiAzNTU6XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIDM1NjpcXHRcXHRyZXR1cm4gTkVUX1JYX0RST1A7XFxuIDM1NzpcXHR9XFxuIDM1ODpcXHRcXG4gMzU5OlxcdHN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTY6MzY6NDQuNjYwMTM1MDAxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyOTQ3MjczNjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQUFRQIFBhdGNoIGFuZCBTYW5pdGl6ZXIgU2VsZWN0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBwYXRjaCB3aXRoaW4gYHBwdHBfcmN2X2NvcmUoKWAgYW5kIHRoZSBidWcgaXQncyBkZXNpZ25lZCB0byBmaXguICBQcmV2aW91c2x5LCB0aGVyZSB3YXMgYSBzaWduaWZpY2FudCB2dWxuZXJhYmlsaXR5OiBpZiB0aGUgaW5jb21pbmcgcGFja2V0IHBheWxvYWQgd2FzIHNtYWxsLCBwYXJ0aWN1bGFybHkgd2l0aCB6ZXJvIG9yIG1pbmltYWwgZGF0YSwgdGhlIGNoZWNrcyB3ZXJlIGluc3VmZmljaWVudC4gYHBza2JfbWF5X3B1bGxgIG1pZ2h0IHN1Y2NlZWQsIGV2ZW4gdGhvdWdoIGFjY2Vzc2luZyBgcGF5bG9hZFswXWAgdGhyb3VnaCBgcGF5bG9hZFs0XWAgd291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQgZnJvbSB0aGUgc2tiJ3MgbGluZWFyIGJ1ZmZlciBvciB1bnB1bGxlZCBza2IgZGF0YS4gVGhpcyBpcyB0ZXh0Ym9vayBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3MuIFRoZSBzYW1lIGlzc3VlIGFsc28gb2NjdXJyZWQgaWYgYHNrYl9wdWxsYCB3YXMgY2FsbGVkLCB0aGVuIGBwYXlsb2FkWzBdYCB3YXMgYWNjZXNzZWQuIFRoZSBwYXRjaCBhZGRyZXNzZXMgdGhpcyBkaXJlY3RseS5cblxuVGhlIGZpeCBpbnZvbHZlcyB0d28ga2V5IGNoYW5nZXM6ICBGaXJzdCwgcmlnb3JvdXMgYm91bmRzIGNoZWNrcyBhcmUgaW50cm9kdWNlZCAqYmVmb3JlKiBhbnkgYWNjZXNzIHRvIHRoZSBgcGF5bG9hZGAgZGF0YS4gVGhpcyBlbXBsb3lzIGEgY29tYmluYXRpb24gb2YgYHBheWxvYWRfYXZhaWxgIGFuZCBtb3JlIHByZWNpc2UgY2FsbHMgdG8gYHBza2JfbWF5X3B1bGxgIHdpdGggY2FsY3VsYXRlZCBsZW5ndGhzIChgaGVhZGVyc2l6ZSArIFBQUF9IRFJMRU4gKyAxYCkuIFNlY29uZCwgYWNjZXNzIHRvIHRoZSBgc2tiLVx1MDAzZWRhdGFgIHBvaW50ZXIgYWZ0ZXIgYHNrYl9wdWxsYCBvY2N1cnMuXG5cbk5vdywgbGV0J3MgZXZhbHVhdGUgd2hpY2ggc2FuaXRpemVyIGlzIG1vc3QgcmVsZXZhbnQuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGJ1ZywgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHdpdGhpbiB0aGUgc2tiIGJ1ZmZlciwgdGhlIGNob2ljZSBpcyBmYWlybHkgY2xlYXIuIEtNU0FOIGlzIHByaW1hcmlseSBkZXNpZ25lZCB0byBkZXRlY3QgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRob3NlIGNvbmRpdGlvbnMgYXBwbHkgaGVyZS5cblxuMS4gICoqS2VybmVsIGRhdGEgZXhwb3NlZCB0byB1c2Vyc3BhY2U/KiogTm8uIFRoaXMgaXMgaW5jb21pbmcgcGFja2V0IHByb2Nlc3NpbmcuXG4yLiAgKipDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8qKiBOby4gQWxsIHZhcmlhYmxlcyB1c2VkIChwYXlsb2FkXFxfYXZhaWwsIHNlcSwgaGVhZGVyc2l6ZSwgZXRjLikgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLlxuMy4gICoqQ29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBpbml0aWFsaXphdGlvbiBpc3N1ZXM/KiogTm8sIHRoZSBjb2RlIGlzIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkLlxuNC4gICoqQm91bmRzIGNoZWNrcyBsZWFkaW5nIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlPyoqIE5vLiBUaGUgZGF0YSBjb21pbmcgZnJvbSB0aGUgbmV0d29yayBpcyBwYWNrZXQgZGF0YSwgaW5pdGlhbGl6ZWQgdXBvbiByZWNlcHRpb24uXG5cblRoZSBidWdzIGFyZSBjbGVhcmx5IGJ1ZmZlciBib3VuZHMgaXNzdWVzIOKAkyBLQVNBTiB0ZXJyaXRvcnkuIEtNU0FOIHdvdWxkIGJlIGlycmVsZXZhbnQuXG5cbioqS0FTQU4gdnMuIEtNU0FOOioqXG5cbiogICAqKktBU0FOOioqICBEZXRlY3RzIGEgd2lkZSBhcnJheSBvZiBtZW1vcnkgc2FmZXR5IGlzc3VlcywgaW5jbHVkaW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzIChzbGFiLCBnbG9iYWwsIHN0YWNrKSwgYW5kIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMuIFRoZXNlIGFyZSBwcmVjaXNlbHkgdGhlIHR5cGVzIG9mIGlzc3VlcyB3ZSdyZSBhZGRyZXNzaW5nIHdpdGggdGhlIHBhdGNoJ3MgYm91bmRzIGNoZWNrcy5cbiogICAqKktNU0FOOioqIFRhcmdldHMgdGhlIGRldGVjdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhpcyBpcyBub3QgdGhlIGlzc3VlIGhlcmUuXG5cbkluIHNob3J0LCB0aGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IHBhcnNpbmcgaW4gdGhlIFBQVFAgbmV0d29yayByZWNlaXZlIHBhdGgsIGFkZGluZyBjcnVjaWFsIGxlbmd0aCBjaGVja3MgKGBwc2tiX21heV9wdWxsYCBhbmQgYHBheWxvYWRfYXZhaWwgXHUwMDNlPSAuLi5gKSBiZWZvcmUgaW5kZXhpbmcgaW50byB0aGUgbmV0d29yayBza2IgcGF5bG9hZCBidWZmZXJzLiBUaGVzZSBhZGRpdGlvbnMgZGlyZWN0bHkgYWRkcmVzcyB0aGUgdnVsbmVyYWJpbGl0eSBvZiBvdXQtb2YtYm91bmRzIGJ1ZmZlciByZWFkcyBvbiBzaG9ydCBvciBub24tbGluZWFyIHNrYiBwYWNrZXRzLiBTaW5jZSB0aGVyZSdzIG5vIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSBpbnZvbHZlZCBvciBhbnkgb2YgdGhlIHVzdWFsIEtNU0FOIGNvbmNlcm5zLCBLQVNBTiBpcyB0aGUgY29ycmVjdCBzYW5pdGl6ZXIgaGVyZS4gTm8gS01TQU4gZnV6emluZyBpcyBuZWNlc3NhcnkuIFRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBOZWVkc0tNU0FOYCB0byBgZmFsc2VgLiBJIG5lZWQgdG8gbm93IGVuc3VyZSB0aGF0IG15IGFuYWx5c2lzIGFuZCByZWFzb25pbmcgYXJlIGNsZWFyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDg3LCJPdXRwdXRUb2tlbnMiOjE5MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNjozNjo1Ny42MDc0MTc0MzdaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBib3VuZHMgY2hlY2tpbmcgYW5kIHNrYiBwdWxsIG9wZXJhdGlvbnMgaW4gdGhlIFBQVFAgcmVjZWl2ZSBwYXRoIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKS4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgYWRlcXVhdGUgcGF5bG9hZCBieXRlcyBhcmUgYXZhaWxhYmxlIGFuZCBwdWxsZWQgaW50byB0aGUgc2tiIGxpbmVhciBhcmVhIGJlZm9yZSBpbmRleGluZyBpbnRvIHNrYiBwYXlsb2FkIG9mZnNldHMgKHBheWxvYWRbMF0gdGhyb3VnaCBwYXlsb2FkWzRdIGFuZCBza2ItXFx1MDAzZWRhdGFbMF0gdGhyb3VnaCBza2ItXFx1MDAzZWRhdGFbMV0pLlxcblxcblRoZXNlIGNoYW5nZXMgcHJldmVudCBvdXQtb2YtYm91bmRzIChPT0IpIG1lbW9yeSByZWFkcyBvbiB0cnVuY2F0ZWQgb3IgbWFsZm9ybWVkIG5ldHdvcmsgcGFja2V0cy4gT09CIHJlYWRzIGFuZCBpbnZhbGlkIHNrYiBidWZmZXIgZGVyZWZlcmVuY2VzIGFyZSBkaXJlY3RseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBib3VuZHMgY2hlY2tpbmcgYW5kIHNrYiBwdWxsIG9wZXJhdGlvbnMgaW4gdGhlIFBQVFAgcmVjZWl2ZSBwYXRoIChkcml2ZXJzL25ldC9wcHAvcHB0cC5jKS4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgYWRlcXVhdGUgcGF5bG9hZCBieXRlcyBhcmUgYXZhaWxhYmxlIGFuZCBwdWxsZWQgaW50byB0aGUgc2tiIGxpbmVhciBhcmVhIGJlZm9yZSBpbmRleGluZyBpbnRvIHNrYiBwYXlsb2FkIG9mZnNldHMgKHBheWxvYWRbMF0gdGhyb3VnaCBwYXlsb2FkWzRdIGFuZCBza2ItXFx1MDAzZWRhdGFbMF0gdGhyb3VnaCBza2ItXFx1MDAzZWRhdGFbMV0pLlxcblxcblRoZXNlIGNoYW5nZXMgcHJldmVudCBvdXQtb2YtYm91bmRzIChPT0IpIG1lbW9yeSByZWFkcyBvbiB0cnVuY2F0ZWQgb3IgbWFsZm9ybWVkIG5ldHdvcmsgcGFja2V0cy4gT09CIHJlYWRzIGFuZCBpbnZhbGlkIHNrYiBidWZmZXIgZGVyZWZlcmVuY2VzIGFyZSBkaXJlY3RseSBkZXRlY3RlZCBieSBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGNvcHkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow62k44[1] Phase: Succeeded StartedAt: 2026-09-02 16:37:23 +0000 UTC FinishedAt: 2026-09-02 16:37:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-02 16:37:23 +0000 UTC FinishedAt: 2026-09-02 16:37:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2] Phase: Succeeded StartedAt: 2026-09-02 16:37:23 +0000 UTC FinishedAt: 2026-09-02 20:21:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-02 16:37:23 +0000 UTC FinishedAt: 2026-09-02 20:21:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-02 16:37:23 +0000 UTC FinishedAt: 2026-09-02 16:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-02 16:37:23 +0000 UTC FinishedAt: 2026-09-02 16:37:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow62k44/series-workflow62k44-convert-artifact-811403373/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-02 16:37:33 +0000 UTC FinishedAt: 2026-09-02 16:54:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-02 16:37:33 +0000 UTC FinishedAt: 2026-09-02 16:54:46 +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:*049bcf57-9790-4c56-a621-ddd32af89ebd,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-workflow62k44/series-workflow62k44-convert-artifact-811403373/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": "574a7db5-7eb0-4d3b-95e0-322f387af0b4", "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-workflow62k44/series-workflow62k44-build-action-2799792739/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-02 16:37:33 +0000 UTC FinishedAt: 2026-09-02 16:54:36 +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:*049bcf57-9790-4c56-a621-ddd32af89ebd,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-workflow62k44/series-workflow62k44-convert-artifact-811403373/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": "574a7db5-7eb0-4d3b-95e0-322f387af0b4", "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-workflow62k44/series-workflow62k44-build-action-2799792739/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-02 16:54:46 +0000 UTC FinishedAt: 2026-09-02 16:54:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-02 16:54:46 +0000 UTC FinishedAt: 2026-09-02 16:54:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-02 16:54:46 +0000 UTC FinishedAt: 2026-09-02 16:54:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-02 16:54:46 +0000 UTC FinishedAt: 2026-09-02 16:54:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow62k44/series-workflow62k44-convert-artifact-226202312/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-02 16:54:56 +0000 UTC FinishedAt: 2026-09-02 16:56:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-02 16:54:56 +0000 UTC FinishedAt: 2026-09-02 16:56:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*574a7db5-7eb0-4d3b-95e0-322f387af0b4,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-workflow62k44/series-workflow62k44-build-action-2799792739/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-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-02 16:56:55 +0000 UTC FinishedAt: 2026-09-02 16:56:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-02 16:56:55 +0000 UTC FinishedAt: 2026-09-02 16:56:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-02 16:56:55 +0000 UTC FinishedAt: 2026-09-02 17:15:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-02 16:56:55 +0000 UTC FinishedAt: 2026-09-02 17:15:54 +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:*049bcf57-9790-4c56-a621-ddd32af89ebd,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-workflow62k44/series-workflow62k44-convert-artifact-226202312/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": "2514673e-4d30-45c9-9b4c-23c08e643dd9", "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-workflow62k44/series-workflow62k44-build-action-2439300980/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-02 16:56:55 +0000 UTC FinishedAt: 2026-09-02 17:15:44 +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:*049bcf57-9790-4c56-a621-ddd32af89ebd,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-workflow62k44/series-workflow62k44-convert-artifact-226202312/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": "2514673e-4d30-45c9-9b4c-23c08e643dd9", "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-workflow62k44/series-workflow62k44-build-action-2439300980/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-02 17:15:54 +0000 UTC FinishedAt: 2026-09-02 17:15:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-02 17:15:54 +0000 UTC FinishedAt: 2026-09-02 17:15:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-02 17:15:54 +0000 UTC FinishedAt: 2026-09-02 17:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-02 17:15:54 +0000 UTC FinishedAt: 2026-09-02 17:17:41 +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:*2514673e-4d30-45c9-9b4c-23c08e643dd9,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-workflow62k44/series-workflow62k44-build-action-2439300980/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-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-02 17:17:50 +0000 UTC FinishedAt: 2026-09-02 20:21:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-02 17:17:50 +0000 UTC FinishedAt: 2026-09-02 20:21:04 +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":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"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:*574a7db5-7eb0-4d3b-95e0-322f387af0b4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2514673e-4d30-45c9-9b4c-23c08e643dd9,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-workflow62k44/series-workflow62k44-build-action-2799792739/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-workflow62k44/series-workflow62k44-build-action-2439300980/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-02 17:17:50 +0000 UTC FinishedAt: 2026-09-02 17:18:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-02 17:17:50 +0000 UTC FinishedAt: 2026-09-02 17:17:55 +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":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"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-workflow62k44/series-workflow62k44-convert-artifact-1132095617/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-02 17:17:50 +0000 UTC FinishedAt: 2026-09-02 17:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-02 17:17:50 +0000 UTC FinishedAt: 2026-09-02 17:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-02 17:17:50 +0000 UTC FinishedAt: 2026-09-02 17:17:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-02 17:18:00 +0000 UTC FinishedAt: 2026-09-02 20:21:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow62k44[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_rcv","pptp_create","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25c1f6111034aef7fc06cfbdcf1e4f0d6e5ee74b","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","PPP","NET_IPGRE_DEMUX"],"series_id":"1db59710-19c0-4c5f-957c-b012fe6ca0a4","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-02 17:18:00 +0000 UTC FinishedAt: 2026-09-02 20:20:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*574a7db5-7eb0-4d3b-95e0-322f387af0b4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2514673e-4d30-45c9-9b4c-23c08e643dd9,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-workflow62k44/series-workflow62k44-build-action-2799792739/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-workflow62k44/series-workflow62k44-build-action-2439300980/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-workflow62k44/series-workflow62k44-convert-artifact-1132095617/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,}