Name: series-workflowd7586 Phase: Succeeded StartedAt: 2026-07-16 02:01:28 +0000 UTC FinishedAt: 2026-07-16 03:24:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7586[0] Phase: Succeeded StartedAt: 2026-07-16 02:01:28 +0000 UTC FinishedAt: 2026-07-16 02:20:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7586[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 02:01:28 +0000 UTC FinishedAt: 2026-07-16 02:20:42 +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": "b8809969e1d7a591e0f49dd464a5d04b3cf02ab1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "IWLMVM", "IWLMLD" ], "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": "b8809969e1d7a591e0f49dd464a5d04b3cf02ab1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "IWLMVM", "IWLMLD" ], "series_id": "20ec2eb9-ffbe-424e-86e1-bd7af3132741" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "iwl_pnvm_complete_fn", "iwl_parse_shared_mem_22000", "iwl_parse_shared_mem", "iwl_get_nvm", "iwl_mvm_report_wakeup_reasons", "iwl_mvm_wowlan_store_wake_pkt", "iwl_mvm_nd_match_info_handler", "iwl_mvm_ftm_set_secured_ranging", "iwl_mvm_get_sar_geo_profile", "iwl_mvm_get_crosstimestamp_fw", "iwl_pcie_init_fw_sec" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7SVdMTVZNJiMzNDssCiAgICAmIzM0O0lXTE1MRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF9wbnZtX2NvbXBsZXRlX2ZuJiMzNDssCiAgICAmIzM0O2l3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwJiMzNDssCiAgICAmIzM0O2l3bF9wYXJzZV9zaGFyZWRfbWVtJiMzNDssCiAgICAmIzM0O2l3bF9nZXRfbnZtJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0JiMzNDssCiAgICAmIzM0O2l3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmcmIzM0OywKICAgICYjMzQ7aXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3JiMzNDssCiAgICAmIzM0O2l3bF9wY2llX2luaXRfZndfc2VjJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgaXdsd2lmaSBkcml2ZXIsIGluY2x1ZGluZyBhZGRpbmcgc3VwcG9ydCBmb3IgVU5JSS05IGNoYW5uZWxzLCBhZGRpbmcgYm91bmRzIGNoZWNrcyBmb3IgZmlybXdhcmUgbm90aWZpY2F0aW9ucyBhbmQgcmVzcG9uc2VzLCBmaXhpbmcgbWVtb3J5IGxlYWtzLCBhbmQgbW9kaWZ5aW5nIE5WTSBwYXJzaW5nIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBsb2dpYyBvZiB0aGUgZHJpdmVyIGFuZCBhcmUgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGUzNGM5ZTU4ZDJiMjRkNTdmYjkzMTMxZGRlNzZmMmE2NDA2MDQ4NThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAwMjoxOTo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9jZmcvcmYtcGUuY1xuaW5kZXggN2EwNGNiMTIwYjFiMjMuLjYwODBmNWYyM2U2OTg3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9jZmcvcmYtcGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9jZmcvcmYtcGUuY1xuQEAgLTE1LDYgJiM0MzsxNSw3IEBAXG4gXHQubm9uX3NoYXJlZF9hbnQgPSBBTlRfQixcdFx0XHRcdFx0XFxcbiBcdC52aHRfbXVfbWltb19zdXBwb3J0ZWQgPSB0cnVlLFx0XHRcdFx0XHRcXFxuIFx0LnVoYl9zdXBwb3J0ZWQgPSB0cnVlLFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0LnVuaWk5X3N1cHBvcnRlZCA9IHRydWUsXHRcdFx0XHRcdFxcXG4gXHQuZWh0X3N1cHBvcnRlZCA9IHRydWUsXHRcdFx0XHRcdFx0XFxcbiBcdC51aHJfc3VwcG9ydGVkID0gdHJ1ZSxcdFx0XHRcdFx0XHRcXFxuIFx0Lm51bV9yYmRzID0gSVdMX05VTV9SQkRTX0VIVCxcdFx0XHRcdFx0XFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmhcbmluZGV4IDQ0M2E5YTQxNjMyNTIzLi4wMTcyYzA3NDdhNDdjOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL252bS1yZWcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbnZtLXJlZy5oXG5AQCAtMjA1LDYgJiM0MzsyMDUsNyBAQCBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19waHkge1xuIFxuICNkZWZpbmUgSVdMX05VTV9DSEFOTkVMU19WMVx0NTFcbiAjZGVmaW5lIElXTF9OVU1fQ0hBTk5FTFNfVjJcdDExMFxuJiM0MzsjZGVmaW5lIElXTF9OVU1fQ0hBTk5FTFNfVjNcdDExNVxuIFxuIC8qKlxuICAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjEgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXG5AQCAtMjE5LDEyICYjNDM7MjIwLDEyIEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjEge1xuIH0gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JFR1VMQVRPUllfU19WRVJfMSAqL1xuIFxuIC8qKlxuLSAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXG4mIzQzOyAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjIgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXG4gICogQGxhcl9lbmFibGVkOiBpcyBMQVIgZW5hYmxlZFxuICAqIEBuX2NoYW5uZWxzOiBudW1iZXIgb2YgdmFsaWQgY2hhbm5lbHMgaW4gdGhlIGFycmF5XG4gICogQGNoYW5uZWxfcHJvZmlsZTogcmVndWxhdG9yeSBkYXRhIG9mIHRoaXMgY2hhbm5lbFxuICAqL1xuLXN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkge1xuJiM0MztzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5X3YyIHtcbiBcdF9fbGUzMiBsYXJfZW5hYmxlZDtcbiBcdF9fbGUzMiBuX2NoYW5uZWxzO1xuIFx0X19sZTMyIGNoYW5uZWxfcHJvZmlsZVtJV0xfTlVNX0NIQU5ORUxTX1YyXTtcbkBAIC0yNDQsNiAmIzQzOzI0NSwzMiBAQCBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjMge1xuIFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MSByZWd1bGF0b3J5O1xuIH0gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JTUF9BUElfU19WRVJfMyAqL1xuIFxuJiM0MzsvKipcbiYjNDM7ICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3Y0IC0gcmVzcG9uc2UgdG8gZ2V0IE5WTSBkYXRhXG4mIzQzOyAqIEBnZW5lcmFsOiBnZW5lcmFsIE5WTSBkYXRhXG4mIzQzOyAqIEBtYWNfc2t1OiBkYXRhIHJlbGF0aW5nIHRvIE1BQyBza3VcbiYjNDM7ICogQHBoeV9za3U6IGRhdGEgcmVsYXRpbmcgdG8gUEhZIHNrdVxuJiM0MzsgKiBAcmVndWxhdG9yeTogcmVndWxhdG9yeSBkYXRhXG4mIzQzOyAqL1xuJiM0MztzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjQge1xuJiM0MztcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX2dlbmVyYWwgZ2VuZXJhbDtcbiYjNDM7XHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19za3UgbWFjX3NrdTtcbiYjNDM7XHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19waHkgcGh5X3NrdTtcbiYjNDM7XHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5X3YyIHJlZ3VsYXRvcnk7XG4mIzQzO30gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JTUF9BUElfU19WRVJfNCAqL1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXG4mIzQzOyAqIEBsYXJfZW5hYmxlZDogaXMgTEFSIGVuYWJsZWRcbiYjNDM7ICogQG5fY2hhbm5lbHM6IG51bWJlciBvZiB2YWxpZCBjaGFubmVscyBpbiB0aGUgYXJyYXlcbiYjNDM7ICogQGNoYW5uZWxfcHJvZmlsZTogcmVndWxhdG9yeSBkYXRhIG9mIHRoaXMgY2hhbm5lbFxuJiM0MzsgKi9cbiYjNDM7c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSB7XG4mIzQzO1x0X19sZTMyIGxhcl9lbmFibGVkO1xuJiM0MztcdF9fbGUzMiBuX2NoYW5uZWxzO1xuJiM0MztcdF9fbGUzMiBjaGFubmVsX3Byb2ZpbGVbSVdMX05VTV9DSEFOTkVMU19WM107XG4mIzQzO30gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JFR1VMQVRPUllfU19WRVJfMyAqL1xuJiM0MztcbiAvKipcbiAgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3AgLSByZXNwb25zZSB0byBnZXQgTlZNIGRhdGFcbiAgKiBAZ2VuZXJhbDogZ2VuZXJhbCBOVk0gZGF0YVxuQEAgLTI1Niw3ICYjNDM7MjgzLDcgQEAgc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwIHtcbiBcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3NrdSBtYWNfc2t1O1xuIFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcGh5IHBoeV9za3U7XG4gXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5IHJlZ3VsYXRvcnk7XG4tfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl80ICovXG4mIzQzO30gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JTUF9BUElfU19WRVJfNSAqL1xuIFxuIC8qKlxuICAqIHN0cnVjdCBpd2xfbnZtX2FjY2Vzc19jb21wbGV0ZV9jbWQgLSBOVk1fQUNDRVNTIGNvbW1hbmRzIGFyZSBjb21wbGV0ZWRcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmhcbmluZGV4IDA4ZjRjYzNlYTFjMzA0Li5lZTc4MzcxMDgyYjA5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oXG5AQCAtMSw2ICYjNDM7MSw2IEBAXG4gLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlICovXG4gLypcbi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgMjAxOC0yMDI1IEludGVsIENvcnBvcmF0aW9uXG4mIzQzOyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBJbnRlbCBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgR21iSFxuICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEludGVsIERldXRzY2hsYW5kIEdtYkhcbiAgKi9cbkBAIC0xMzE5LDcgJiM0MzsxMzE5LDcgQEAgc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbyB7XG4gXHR1OCByZXN1bWVfd2hpbGVfc2Nhbm5pbmc7XG4gXHR1OCBzZWxmX3JlY292ZXJ5O1xuIFx0X19sZTE2IHJlc2VydmVkO1xuLVx0c3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZV9tYXRjaCBtYXRjaGVzW107XG4mIzQzO1x0c3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZV9tYXRjaCBtYXRjaGVzW0lXTF9TQ0FOX01BWF9QUk9GSUxFU19WMl07XG4gfSBfX3BhY2tlZDsgLyogU0NBTl9PRkZMT0FEX1BST0ZJTEVTX1FVRVJZX1JTUF9TX1ZFUl8zIGFuZFxuIFx0ICAgICAqIFNDQU5fT0ZGTE9BRF9NQVRDSF9JTkZPX05PVElGSUNBVElPTl9TX1ZFUl8xXG4gXHQgICAgICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xuaW5kZXggYWZmZjhkNTFjYTk1MGMuLmVjMGZmNThhYjMxMmQ1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jXG5AQCAtMSw2ICYjNDM7MSw2IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4gLypcbi0gKiBDb3B5cmlnaHQoYykgMjAyMC0yMDI1IEludGVsIENvcnBvcmF0aW9uXG4mIzQzOyAqIENvcHlyaWdodChjKSAyMDIwLTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cbiAgKi9cbiBcbiAjaW5jbHVkZSBcJiMzNDtpd2wtZHJ2LmhcJiMzNDtcbkBAIC0xMiw2ICYjNDM7MTIsNyBAQFxuICNpbmNsdWRlIFwmIzM0O2Z3L2FwaS9hbGl2ZS5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZncvdWVmaS5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZncvaW1nLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7ZncvZGJnLmhcJiMzNDtcbiBcbiAjZGVmaW5lIElXTF9QTlZNX1JFRFVDRURfQ0FQX0JJVCBCSVQoMjUpXG4gXG5AQCAtMjYsNiAmIzQzOzI3LDEyIEBAIHN0YXRpYyBib29sIGl3bF9wbnZtX2NvbXBsZXRlX2ZuKHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LFxuIFx0c3RydWN0IGl3bF90cmFucyAqdHJhbnMgPSAoc3RydWN0IGl3bF90cmFucyAqKWRhdGE7XG4gXHRzdHJ1Y3QgaXdsX3Budm1faW5pdF9jb21wbGV0ZV9udGZ5ICpwbnZtX250ZiA9ICh2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4gXG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyh0cmFucyxcbiYjNDM7XHRcdFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcdTAwM2Mgc2l6ZW9mKCpwbnZtX250ZiksXG4mIzQzO1x0XHRcdCBcJiMzNDtCYWQgbm90aWYgbGVuOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSkpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4gXHRJV0xfREVCVUdfRlcodHJhbnMsXG4gXHRcdCAgICAgXCYjMzQ7UE5WTSBjb21wbGV0ZSBub3RpZmljYXRpb24gcmVjZWl2ZWQgd2l0aCBzdGF0dXMgMHglMHhcXG5cJiMzNDssXG4gXHRcdCAgICAgbGUzMl90b19jcHUocG52bV9udGYtXHUwMDNlc3RhdHVzKSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuY1xuaW5kZXggOGQ5ZmYzNmUzMGY1ZTMuLjFkNmQzOGVlNTViNDk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jXG5AQCAtMzg5LDcgJiM0MzszODksNyBAQCBib29sIGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0KHUxNiAqbGlzdCwgdTggKnNpemUsIHUxNiBtY2MpXG4gXHRpZiAoKnNpemUgXHUwMDNlPSBJV0xfV1RBU19CTEFDS19MSVNUX01BWClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0bGlzdFsqc2l6ZSYjNDM7JiM0MztdID0gbWNjO1xuJiM0MztcdGxpc3RbKCpzaXplKSYjNDM7JiM0MztdID0gbWNjO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIElXTF9FWFBPUlRfU1lNQk9MKGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvc21lbS5jXG5pbmRleCAzNDRkZGRlODViMTg5Ny4uMjBlZDI2YTFiYjAwZWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9zbWVtLmNcbkBAIC0xLDYgJiM0MzsxLDYgQEBcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiAvKlxuLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjEsIDIwMjUgSW50ZWwgQ29ycG9yYXRpb25cbiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQsIDIwMTgtMjAyMSwgMjAyNS0yMDI2IEludGVsIENvcnBvcmF0aW9uXG4gICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgSW50ZWwgTW9iaWxlIENvbW11bmljYXRpb25zIEdtYkhcbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJIXG4gICovXG5AQCAtMTQsOSAmIzQzOzE0LDE3IEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbiB7XG4gXHRzdHJ1Y3QgaXdsX3NoYXJlZF9tZW1fY2ZnICptZW1fY2ZnID0gKHZvaWQgKilwa3QtXHUwMDNlZGF0YTtcbiBcdGludCBpLCBsbWFjO1xuLVx0aW50IGxtYWNfbnVtID0gbGUzMl90b19jcHUobWVtX2NmZy1cdTAwM2VsbWFjX251bSk7XG4tXHR1OCBhcGlfdmVyID0gaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZndydC1cdTAwM2VmdywgU1lTVEVNX0dST1VQLFxuLVx0XHRcdFx0XHQgICAgIFNIQVJFRF9NRU1fQ0ZHX0NNRCwgMCk7XG4mIzQzO1x0aW50IGxtYWNfbnVtO1xuJiM0MztcdHU4IGFwaV92ZXI7XG4mIzQzO1xuJiM0MztcdGlmIChJV0xfRldfQ0hFQ0soZndydCwgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzY1xuJiM0MztcdFx0XHQgb2Zmc2V0b2ZlbmQoc3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZywgbG1hY19zbWVtWzFdKSxcbiYjNDM7XHRcdFx0IFwmIzM0O2JhZCBzaGFyZWQgbWVtIG5vdGlmaWNhdGlvbiBzaXplXFxuXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bG1hY19udW0gPSBsZTMyX3RvX2NwdShtZW1fY2ZnLVx1MDAzZWxtYWNfbnVtKTtcbiYjNDM7XHRhcGlfdmVyID0gaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZndydC1cdTAwM2VmdywgU1lTVEVNX0dST1VQLFxuJiM0MztcdFx0XHRcdFx0ICBTSEFSRURfTUVNX0NGR19DTUQsIDApO1xuIFxuIFx0LyogTm90ZTogbm90aWZpY2F0aW9uIGhhcyAzIGVudHJpZXMsIGJ1dCB3ZSBvbmx5IGV4cGVjdCAyICovXG4gXHRpZiAoSVdMX0ZXX0NIRUNLKGZ3cnQsIGxtYWNfbnVtIFx1MDAzZSBBUlJBWV9TSVpFKGZ3cnQtXHUwMDNlc21lbV9jZmcubG1hYyksXG5AQCAtMzAsNyAmIzQzOzM4LDcgQEAgc3RhdGljIHZvaWQgaXdsX3BhcnNlX3NoYXJlZF9tZW1fMjIwMDAoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxuIFxuIFx0aWYgKGFwaV92ZXIgXHUwMDNlPSA0IFx1MDAyNlx1MDAyNlxuIFx0ICAgICFJV0xfRldfQ0hFQ0soZndydCwgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzYyBzaXplb2YoKm1lbV9jZmcpLFxuLVx0XHRcdCAgXCYjMzQ7YmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemVcXG5cJiMzNDspKSB7XG4mIzQzO1x0XHRcdCAgXCYjMzQ7YmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemUgKHY0KVxcblwmIzM0OykpIHtcbiBcdFx0ZndydC1cdTAwM2VzbWVtX2NmZy5yeGZpZm8yX2NvbnRyb2xfc2l6ZSA9XG4gXHRcdFx0bGUzMl90b19jcHUobWVtX2NmZy1cdTAwM2VyeGZpZm8yX2NvbnRyb2xfc2l6ZSk7XG4gXHR9XG5AQCAtNTMsNiAmIzQzOzYxLDExIEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbiBcdHN0cnVjdCBpd2xfc2hhcmVkX21lbV9jZmdfdjIgKm1lbV9jZmcgPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXHUwMDNjXG4mIzQzO1x0XHRcdCBvZmZzZXRvZihzdHJ1Y3QgaXdsX3NoYXJlZF9tZW1fY2ZnX3YyLCByeGZpZm9fYWRkciksXG4mIzQzO1x0XHRcdCBcJiMzNDtiYWQgc2hhcmVkIG1lbSBub3RpZmljYXRpb24gc2l6ZVxcblwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0ZndydC1cdTAwM2VzbWVtX2NmZy5udW1fbG1hY3MgPSAxO1xuIFxuIFx0ZndydC1cdTAwM2VzbWVtX2NmZy5udW1fdHhmaWZvX2VudHJpZXMgPSBBUlJBWV9TSVpFKG1lbV9jZmctXHUwMDNldHhmaWZvX3NpemUpO1xuQEAgLTY3LDYgJiM0Mzs4MCwxMSBAQCBzdGF0aWMgdm9pZCBpd2xfcGFyc2Vfc2hhcmVkX21lbShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXG4gXHQvKiBuZXcgQVBJIGhhcyBtb3JlIGRhdGEsIGZyb20gcnhmaWZvX2FkZHIgZmllbGQgYW5kIG9uICovXG4gXHRpZiAoZndfaGFzX2NhcGEoXHUwMDI2ZndydC1cdTAwM2Vmdy1cdTAwM2V1Y29kZV9jYXBhLFxuIFx0XHRcdElXTF9VQ09ERV9UTFZfQ0FQQV9FWFRFTkRfU0hBUkVEX01FTV9DRkcpKSB7XG4mIzQzO1x0XHRpZiAoSVdMX0ZXX0NIRUNLKGZ3cnQsIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcdTAwM2NcbiYjNDM7XHRcdFx0XHQgc2l6ZW9mKCptZW1fY2ZnKSxcbiYjNDM7XHRcdFx0XHQgXCYjMzQ7YmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemUgKGV4dGVuZClcXG5cJiMzNDspKVxuJiM0MztcdFx0XHRyZXR1cm47XG4mIzQzO1xuIFx0XHRCVUlMRF9CVUdfT04oc2l6ZW9mKGZ3cnQtXHUwMDNlc21lbV9jZmcuaW50ZXJuYWxfdHhmaWZvX3NpemUpICE9XG4gXHRcdFx0ICAgICBzaXplb2YobWVtX2NmZy1cdTAwM2VpbnRlcm5hbF90eGZpZm9fc2l6ZSkpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmhcbmluZGV4IDZhMzUzOWFkNzMzMTdlLi4zYWM3ZjAwMGVkZTQ3OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaFxuQEAgLTQxNSw2ICYjNDM7NDE1LDcgQEAgc3RydWN0IGl3bF9tYWNfY2ZnIHtcbiAgKiBAdmh0X211X21pbW9fc3VwcG9ydGVkOiBWSFQgTVUtTUlNTyBzdXBwb3J0XG4gICogQG52bV90eXBlOiBzZWUgXHUwMDI2ZW51bSBpd2xfbnZtX3R5cGVcbiAgKiBAdWhiX3N1cHBvcnRlZDogdWx0cmEgaGlnaCBiYW5kIGNoYW5uZWxzIHN1cHBvcnRlZFxuJiM0MzsgKiBAdW5paTlfc3VwcG9ydGVkOiBVTklJLTkgY2hhbm5lbHMgc3VwcG9ydGVkXG4gICogQGVodF9zdXBwb3J0ZWQ6IEVIVCBzdXBwb3J0ZWRcbiAgKiBAdWhyX3N1cHBvcnRlZDogVUhSIHN1cHBvcnRlZFxuICAqIEBudW1fcmJkczogbnVtYmVyIG9mIHJlY2VpdmUgYnVmZmVyIGRlc2NyaXB0b3JzIHRvIHVzZVxuQEAgLTQ1MCw2ICYjNDM7NDUxLDcgQEAgc3RydWN0IGl3bF9yZl9jZmcge1xuIFx0ICAgIGxwX3h0YWxfd29ya2Fyb3VuZDoxLFxuIFx0ICAgIHZodF9tdV9taW1vX3N1cHBvcnRlZDoxLFxuIFx0ICAgIHVoYl9zdXBwb3J0ZWQ6MSxcbiYjNDM7XHQgICAgdW5paTlfc3VwcG9ydGVkOjEsXG4gXHQgICAgZWh0X3N1cHBvcnRlZDoxLFxuIFx0ICAgIHVocl9zdXBwb3J0ZWQ6MTtcbiBcdHU4IHZhbGlkX3R4X2FudDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jXG5pbmRleCBkNDdiNGFlMmY0ODYzMC4uYmQ1MzUzZmRkZTgxYTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmNcbkBAIC04NSwxNiAmIzQzOzg1LDcgQEAgc3RhdGljIGNvbnN0IHUxNiBpd2xfbnZtX2NoYW5uZWxzW10gPSB7XG4gXHQxNDksIDE1MywgMTU3LCAxNjEsIDE2NVxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHUxNiBpd2xfZXh0X252bV9jaGFubmVsc1tdID0ge1xuLVx0LyogMi40IEdIeiAqL1xuLVx0MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LFxuLVx0LyogNSBHSHogKi9cbi1cdDM2LCA0MCwgNDQsIDQ4LCA1MiwgNTYsIDYwLCA2NCwgNjgsIDcyLCA3NiwgODAsIDg0LCA4OCwgOTIsXG4tXHQ5NiwgMTAwLCAxMDQsIDEwOCwgMTEyLCAxMTYsIDEyMCwgMTI0LCAxMjgsIDEzMiwgMTM2LCAxNDAsIDE0NCxcbi1cdDE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1LCAxNjksIDE3MywgMTc3LCAxODFcbi19O1xuLVxuLXN0YXRpYyBjb25zdCB1MTYgaXdsX3VoYl9udm1fY2hhbm5lbHNbXSA9IHtcbiYjNDM7c3RhdGljIGNvbnN0IHUxNiBpd2xfdW5paTlfbnZtX2NoYW5uZWxzW10gPSB7XG4gXHQvKiAyLjQgR0h6ICovXG4gXHQxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsXG4gXHQvKiA1IEdIeiAqL1xuQEAgLTEwNSwxMiAmIzQzOzk2LDE2IEBAIHN0YXRpYyBjb25zdCB1MTYgaXdsX3VoYl9udm1fY2hhbm5lbHNbXSA9IHtcbiBcdDEsIDUsIDksIDEzLCAxNywgMjEsIDI1LCAyOSwgMzMsIDM3LCA0MSwgNDUsIDQ5LCA1MywgNTcsIDYxLCA2NSwgNjksXG4gXHQ3MywgNzcsIDgxLCA4NSwgODksIDkzLCA5NywgMTAxLCAxMDUsIDEwOSwgMTEzLCAxMTcsIDEyMSwgMTI1LCAxMjksXG4gXHQxMzMsIDEzNywgMTQxLCAxNDUsIDE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1LCAxNjksIDE3MywgMTc3LCAxODEsIDE4NSxcbi1cdDE4OSwgMTkzLCAxOTcsIDIwMSwgMjA1LCAyMDksIDIxMywgMjE3LCAyMjEsIDIyNSwgMjI5LCAyMzNcbiYjNDM7XHQxODksIDE5MywgMTk3LCAyMDEsIDIwNSwgMjA5LCAyMTMsIDIxNywgMjIxLCAyMjUsIDIyOSwgMjMzLFxuJiM0MztcbiYjNDM7XHQvKiBVTklJLTkgKi9cbiYjNDM7XHQyMzcsIDI0MSwgMjQ1LCAyNDksIDI1M1xuIH07XG4gXG4gI2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU1x0XHRBUlJBWV9TSVpFKGl3bF9udm1fY2hhbm5lbHMpXG4tI2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU19FWFRcdEFSUkFZX1NJWkUoaXdsX2V4dF9udm1fY2hhbm5lbHMpXG4tI2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU19VSEJcdEFSUkFZX1NJWkUoaXdsX3VoYl9udm1fY2hhbm5lbHMpXG4mIzQzOyNkZWZpbmUgSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUXHQ1MVxuJiM0MzsjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQlx0MTEwXG4mIzQzOyNkZWZpbmUgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVU5JSTlcdEFSUkFZX1NJWkUoaXdsX3VuaWk5X252bV9jaGFubmVscylcbiAjZGVmaW5lIE5VTV8yR0haX0NIQU5ORUxTXHRcdDE0XG4gI2RlZmluZSBOVU1fNUdIWl9DSEFOTkVMU1x0XHQzN1xuICNkZWZpbmUgRklSU1RfMkdIWl9IVF9NSU5VU1x0XHQ1XG5AQCAtMzUxLDEyICYjNDM7MzQ2LDE1IEBAIHN0YXRpYyBpbnQgaXdsX2luaXRfY2hhbm5lbF9tYXAoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gXHRpbnQgbnVtX29mX2NoO1xuIFx0Y29uc3QgdTE2ICpudm1fY2hhbjtcbiBcbi1cdGlmIChjZmctXHUwMDNldWhiX3N1cHBvcnRlZCkge1xuJiM0MztcdGlmIChjZmctXHUwMDNldW5paTlfc3VwcG9ydGVkKSB7XG4mIzQzO1x0XHRudW1fb2ZfY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMU19VTklJOTtcbiYjNDM7XHRcdG52bV9jaGFuID0gaXdsX3VuaWk5X252bV9jaGFubmVscztcbiYjNDM7XHR9IGVsc2UgaWYgKGNmZy1cdTAwM2V1aGJfc3VwcG9ydGVkKSB7XG4gXHRcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQjtcbi1cdFx0bnZtX2NoYW4gPSBpd2xfdWhiX252bV9jaGFubmVscztcbiYjNDM7XHRcdG52bV9jaGFuID0gaXdsX3VuaWk5X252bV9jaGFubmVscztcbiBcdH0gZWxzZSBpZiAoY2ZnLVx1MDAzZW52bV90eXBlID09IElXTF9OVk1fRVhUKSB7XG4gXHRcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVDtcbi1cdFx0bnZtX2NoYW4gPSBpd2xfZXh0X252bV9jaGFubmVscztcbiYjNDM7XHRcdG52bV9jaGFuID0gaXdsX3VuaWk5X252bV9jaGFubmVscztcbiBcdH0gZWxzZSB7XG4gXHRcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTO1xuIFx0XHRudm1fY2hhbiA9IGl3bF9udm1fY2hhbm5lbHM7XG5AQCAtMTQ0MSw3ICYjNDM7MTQzOSw5IEBAIGl3bF9wYXJzZV9tZWlfbnZtX2RhdGEoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnICpjZmcsXG4gXHR1OCByeF9jaGFpbnMgPSBmdy1cdTAwM2V2YWxpZF9yeF9hbnQ7XG4gXHR1OCB0eF9jaGFpbnMgPSBmdy1cdTAwM2V2YWxpZF9yeF9hbnQ7XG4gXG4tXHRpZiAoY2ZnLVx1MDAzZXVoYl9zdXBwb3J0ZWQpXG4mIzQzO1x0aWYgKGNmZy1cdTAwM2V1bmlpOV9zdXBwb3J0ZWQpXG4mIzQzO1x0XHRkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVU5JSTkpO1xuJiM0MztcdGVsc2UgaWYgKGNmZy1cdTAwM2V1aGJfc3VwcG9ydGVkKVxuIFx0XHRkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCKTtcbiBcdGVsc2VcbiBcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVCk7XG5AQCAtMTUwNiw3ICYjNDM7MTUwNiw5IEBAIGl3bF9wYXJzZV9udm1fZGF0YShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgKmNmZyxcbiBcdHUxNiBsYXJfY29uZmlnO1xuIFx0Y29uc3QgX19sZTE2ICpjaF9zZWN0aW9uO1xuIFxuLVx0aWYgKGNmZy1cdTAwM2V1aGJfc3VwcG9ydGVkKVxuJiM0MztcdGlmIChjZmctXHUwMDNldW5paTlfc3VwcG9ydGVkKVxuJiM0MztcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5KTtcbiYjNDM7XHRlbHNlIGlmIChjZmctXHUwMDNldWhiX3N1cHBvcnRlZClcbiBcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQik7XG4gXHRlbHNlIGlmIChjZmctXHUwMDNlbnZtX3R5cGUgIT0gSVdMX05WTV9FWFQpXG4gXHRcdGRhdGEgPSBremFsbG9jX2ZsZXgoKmRhdGEsIGNoYW5uZWxzLCBJV0xfTlZNX05VTV9DSEFOTkVMUyk7XG5AQCAtMTcyNywxMiAmIzQzOzE3MjksMTUgQEAgaXdsX3BhcnNlX252bV9tY2NfaW5mbyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiBcdGludCBtYXhfbnVtX2NoO1xuIFx0c3RydWN0IGl3bF9yZWdfY2FwYSByZWdfY2FwYTtcbiBcbi1cdGlmIChjZmctXHUwMDNldWhiX3N1cHBvcnRlZCkge1xuJiM0MztcdGlmIChjZmctXHUwMDNldW5paTlfc3VwcG9ydGVkKSB7XG4mIzQzO1x0XHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfVU5JSTk7XG4mIzQzO1x0XHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XG4mIzQzO1x0fSBlbHNlIGlmIChjZmctXHUwMDNldWhiX3N1cHBvcnRlZCkge1xuIFx0XHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCO1xuLVx0XHRudm1fY2hhbiA9IGl3bF91aGJfbnZtX2NoYW5uZWxzO1xuJiM0MztcdFx0bnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzO1xuIFx0fSBlbHNlIGlmIChjZmctXHUwMDNlbnZtX3R5cGUgPT0gSVdMX05WTV9FWFQpIHtcbiBcdFx0bWF4X251bV9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVDtcbi1cdFx0bnZtX2NoYW4gPSBpd2xfZXh0X252bV9jaGFubmVscztcbiYjNDM7XHRcdG52bV9jaGFuID0gaXdsX3VuaWk5X252bV9jaGFubmVscztcbiBcdH0gZWxzZSB7XG4gXHRcdG1heF9udW1fY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMUztcbiBcdFx0bnZtX2NoYW4gPSBpd2xfbnZtX2NoYW5uZWxzO1xuQEAgLTIwODcsMTMgJiM0MzsyMDkyLDI2IEBAIHN0cnVjdCBpd2xfbnZtX2RhdGEgKml3bF9nZXRfbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3YzICpyc3BfdjM7XG4gXHRib29sIHY0ID0gZndfaGFzX2FwaShcdTAwMjZmdy1cdTAwM2V1Y29kZV9jYXBhLFxuIFx0XHRcdCAgICAgSVdMX1VDT0RFX1RMVl9BUElfUkVHVUxBVE9SWV9OVk1fSU5GTyk7XG4tXHRzaXplX3QgcnNwX3NpemUgPSB2NCA/IHNpemVvZigqcnNwKSA6IHNpemVvZigqcnNwX3YzKTtcbiYjNDM7XHRzaXplX3QgcnNwX3NpemU7XG4gXHR2b2lkICpjaGFubmVsX3Byb2ZpbGU7XG4gXG4gXHRyZXQgPSBpd2xfdHJhbnNfc2VuZF9jbWQodHJhbnMsIFx1MDAyNmhjbWQpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbiBcbiYjNDM7XHRzd2l0Y2ggKGl3bF9md19sb29rdXBfbm90aWZfdmVyKGZ3LCBSRUdVTEFUT1JZX0FORF9OVk1fR1JPVVAsXG4mIzQzO1x0XHRcdFx0XHROVk1fR0VUX0lORk8sIDApKSB7XG4mIzQzO1x0Y2FzZSA1OlxuJiM0MztcdFx0cnNwX3NpemUgPSBzaXplb2Yoc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgNDpcbiYjNDM7XHRcdHJzcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcF92NCk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cnNwX3NpemUgPSBzaXplb2Yoc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3YzKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoV0FSTihpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKGhjbWQucmVzcF9wa3QpICE9IHJzcF9zaXplLFxuIFx0XHQgXCYjMzQ7SW52YWxpZCBwYXlsb2FkIGxlbiBpbiBOVk0gcmVzcG9uc2UgZnJvbSBGVyAlZFwmIzM0OyxcbiBcdFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oaGNtZC5yZXNwX3BrdCkpKSB7XG5AQCAtMjEwNyw3ICYjNDM7MjEyNSw3IEBAIHN0cnVjdCBpd2xfbnZtX2RhdGEgKml3bF9nZXRfbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIFx0aWYgKGVtcHR5X290cClcbiBcdFx0SVdMX0lORk8odHJhbnMsIFwmIzM0O09UUCBpcyBlbXB0eVxcblwmIzM0Oyk7XG4gXG4tXHRudm0gPSBremFsbG9jX2ZsZXgoKm52bSwgY2hhbm5lbHMsIElXTF9OVU1fQ0hBTk5FTFNfVjIpO1xuJiM0MztcdG52bSA9IGt6YWxsb2NfZmxleCgqbnZtLCBjaGFubmVscywgSVdMX05VTV9DSEFOTkVMU19WMyk7XG4gXHRpZiAoIW52bSkge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguY1xuaW5kZXggMjE4NWRhZGU5NWY4Y2IuLjJkZjY2NDNhNWFhODBmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguY1xuQEAgLTExMjAsNiAmIzQzOzExMjAsMTAgQEAgdm9pZCBpd2xfbWxkX2hhbmRsZV90eF9yZXNwX25vdGlmKHN0cnVjdCBpd2xfbWxkICptbGQsXG4gXHRzc24gPSBsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKWFnZ19zdGF0dXMgJiM0MztcbiBcdFx0XHQgICB0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50KSBcdTAwMjYgMHhGRkZGO1xuIFxuJiM0MztcdGlmIChJV0xfRldfQ0hFQ0sobWxkLCB0eHFfaWQgXHUwMDNlPSBBUlJBWV9TSVpFKG1sZC1cdTAwM2Vmd19pZF90b190eHEpLFxuJiM0MztcdFx0XHQgXCYjMzQ7SW52YWxpZCB0eHEgaWQgJWRcXG5cJiMzNDssIHR4cV9pZCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnNrYnMpO1xuIFxuIFx0Lyogd2UgY2FuIGZyZWUgdW50aWwgc3NuICUgcS5uX2JkIG5vdCBpbmNsdXNpdmUgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuY1xuaW5kZXggMzQyOWQ5YTEwZTQyMDkuLjZiMTFmYTMyZWE1YzZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuY1xuQEAgLTE1MDksNiAmIzQzOzE1MDksMTAgQEAgc3RhdGljIHZvaWQgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnMoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0aWYgKFdBUk5fT05fT05DRSh0cnVuY2F0ZWQgXHUwMDNjIDApKVxuIFx0XHRcdHRydW5jYXRlZCA9IDA7XG4gXG4mIzQzO1x0XHQvKiB0aGlzIHdvdWxkIGJlIGEgZmlybXdhcmUgYnVnICovXG4mIzQzO1x0XHRpZiAoV0FSTl9PTl9PTkNFKHBrdHNpemUgXHUwMDNjIHNpemVvZigqaGRyKSkpXG4mIzQzO1x0XHRcdHJldHVybjtcbiYjNDM7XG4gXHRcdGlmIChpZWVlODAyMTFfaXNfZGF0YShoZHItXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbiBcdFx0XHRpbnQgaGRybGVuID0gaWVlZTgwMjExX2hkcmxlbihoZHItXHUwMDNlZnJhbWVfY29udHJvbCk7XG4gXHRcdFx0aW50IGl2bGVuID0gMCwgaWN2bGVuID0gNDsgLyogYWxzbyBGQ1MgKi9cbkBAIC0xNTE3LDEwICYjNDM7MTUyMSw2IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRcdFx0aWYgKCFwa3QpXG4gXHRcdFx0XHRnb3RvIHJlcG9ydDtcbiBcbi1cdFx0XHRza2JfcHV0X2RhdGEocGt0LCBwa3RkYXRhLCBoZHJsZW4pO1xuLVx0XHRcdHBrdGRhdGEgJiM0Mzs9IGhkcmxlbjtcbi1cdFx0XHRwa3RzaXplIC09IGhkcmxlbjtcbi1cbiBcdFx0XHRpZiAoaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XG4gXHRcdFx0XHQvKlxuIFx0XHRcdFx0ICogVGhpcyBpcyB1bmxvY2tlZCBhbmQgdXNpbmcgZ3RrX2koYyl2bGVuLFxuQEAgLTE1NDYsNiAmIzQzOzE1NDYsMTcgQEAgc3RhdGljIHZvaWQgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnMoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0XHRcdHRydW5jYXRlZCA9IDA7XG4gXHRcdFx0fVxuIFxuJiM0MztcdFx0XHRpZiAoSVdMX0ZXX0NIRUNLKG12bSxcbiYjNDM7XHRcdFx0XHRcdCBwa3RzaXplIFx1MDAzYz0gaGRybGVuICYjNDM7IGl2bGVuICYjNDM7IGljdmxlbixcbiYjNDM7XHRcdFx0XHRcdCBcJiMzNDtwa3RzaXplIGlzIHRvbyBzbWFsbCAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCBwa3RzaXplKSkge1xuJiM0MztcdFx0XHRcdGtmcmVlX3NrYihwa3QpO1xuJiM0MztcdFx0XHRcdHJldHVybjtcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0c2tiX3B1dF9kYXRhKHBrdCwgcGt0ZGF0YSwgaGRybGVuKTtcbiYjNDM7XHRcdFx0cGt0ZGF0YSAmIzQzOz0gaGRybGVuO1xuJiM0MztcdFx0XHRwa3RzaXplIC09IGhkcmxlbjtcbiBcdFx0XHRwa3RzaXplIC09IGl2bGVuICYjNDM7IGljdmxlbjtcbiBcdFx0XHRwa3RkYXRhICYjNDM7PSBpdmxlbjtcbiBcbkBAIC0yNDQ4LDEzICYjNDM7MjQ1OSwxNSBAQCBpd2xfbXZtX25ldGRldGVjdF9xdWVyeV9yZXN1bHRzKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXG4gXHRpZiAoZndfaGFzX2FwaShcdTAwMjZtdm0tXHUwMDNlZnctXHUwMDNldWNvZGVfY2FwYSxcbiBcdFx0ICAgICAgIElXTF9VQ09ERV9UTFZfQVBJX1NDQU5fT0ZGTE9BRF9DSEFOUykpIHtcbi1cdFx0cXVlcnlfbGVuID0gc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8pO1xuIFx0XHRtYXRjaGVzX2xlbiA9IHNpemVvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlX21hdGNoKSAqXG4gXHRcdFx0bWF4X3Byb2ZpbGVzO1xuJiM0MztcdFx0cXVlcnlfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbyxcbiYjNDM7XHRcdFx0XHQgICAgIG1hdGNoZXMpICYjNDM7IG1hdGNoZXNfbGVuO1xuIFx0fSBlbHNlIHtcbi1cdFx0cXVlcnlfbGVuID0gc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX3Byb2ZpbGVzX3F1ZXJ5X3YxKTtcbiBcdFx0bWF0Y2hlc19sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZV9tYXRjaF92MSkgKlxuIFx0XHRcdG1heF9wcm9maWxlcztcbiYjNDM7XHRcdHF1ZXJ5X2xlbiA9IHNpemVvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlc19xdWVyeV92MSkgJiM0MztcbiYjNDM7XHRcdFx0bWF0Y2hlc19sZW47XG4gXHR9XG4gXG4gXHRsZW4gPSBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKGNtZC5yZXNwX3BrdCk7XG5AQCAtMjc1Niw3ICYjNDM7Mjc2OSw3IEBAIHN0YXRpYyBpbnQgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3Qoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0XHRcdFx0IHN0cnVjdCBpd2xfd293bGFuX3N0YXR1c19kYXRhICpzdGF0dXMsXG4gXHRcdFx0XHRcdCB1MzIgbGVuKVxuIHtcbi1cdHUzMiBkYXRhX3NpemUsIHBhY2tldF9sZW4gPSBsZTMyX3RvX2NwdShub3RpZi1cdTAwM2V3YWtlX3BhY2tldF9sZW5ndGgpO1xuJiM0MztcdHUzMiBkYXRhX3NpemUsIHBhY2tldF9sZW47XG4gXG4gXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKm5vdGlmKSkge1xuIFx0XHRJV0xfRVJSKG12bSwgXCYjMzQ7SW52YWxpZCBXb1dMQU4gd2FrZSBwYWNrZXQgbm90aWZpY2F0aW9uIVxcblwmIzM0Oyk7XG5AQCAtMjc3NSw2ICYjNDM7Mjc4OCw3IEBAIHN0YXRpYyBpbnQgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3Qoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXG4mIzQzO1x0cGFja2V0X2xlbiA9IGxlMzJfdG9fY3B1KG5vdGlmLVx1MDAzZXdha2VfcGFja2V0X2xlbmd0aCk7XG4gXHRkYXRhX3NpemUgPSBsZW4gLSBvZmZzZXRvZihzdHJ1Y3QgaXdsX3dvd2xhbl93YWtlX3BrdF9ub3RpZiwgd2FrZV9wYWNrZXQpO1xuIFxuIFx0LyogZGF0YV9zaXplIGdvdCB0aGUgcGFkZGluZyBmcm9tIHRoZSBub3RpZmljYXRpb24sIHJlbW92ZSBpdC4gKi9cbkBAIC0yODA3LDcgJiM0MzsyODIxLDggQEAgc3RhdGljIHZvaWQgaXdsX212bV9uZF9tYXRjaF9pbmZvX2hhbmRsZXIoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdGlmIChJU19FUlJfT1JfTlVMTCh2aWYpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRpZiAobGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbykgJiM0MzsgbWF0Y2hlc19sZW4pIHtcbiYjNDM7XHRpZiAobGVuIFx1MDAzYyBvZmZzZXRvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9tYXRjaF9pbmZvLCBtYXRjaGVzKSAmIzQzO1xuJiM0MztcdFx0ICAgIG1hdGNoZXNfbGVuKSB7XG4gXHRcdElXTF9FUlIobXZtLCBcJiMzNDtJbnZhbGlkIHNjYW4gbWF0Y2ggaW5mbyBub3RpZmljYXRpb25cXG5cJiMzNDspO1xuIFx0XHRyZXR1cm47XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jXG5pbmRleCAzYTE0Y2E1ZTUxMmFlMy4uOGQ3ZjYwZGNkMDI3MGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuY1xuQEAgLTY0Niw3ICYjNDM7NjQ2LDggQEAgc3RhdGljIHZvaWQgaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFdBUk5fT04oKnRhcmdldC1cdTAwM2VjaXBoZXIgPT0gSVdMX0xPQ0FUSU9OX0NJUEhFUl9JTlZBTElEKTtcbiB9XG4gXG4tc3RhdGljIHZvaWRcbiYjNDM7LyogVGhlIHRrIGJ1ZmZlciBpcyBhc3N1bWVkIHRvIGJlIGV4YWN0bHkgVEtfMTFBWl9MRU4gYnl0ZXMgKi9cbiYjNDM7c3RhdGljIGludFxuIGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3Jhbmdpbmcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdFx0XHRcdHU4ICpic3NpZCwgdTggKmNpcGhlciwgdTggKmhsdGssIHU4ICp0ayxcbiBcdFx0XHRcdHU4ICpyeF9wbiwgdTggKnR4X3BuLCBfX2xlMzIgKmZsYWdzKVxuQEAgLTY1NiwxMiAmIzQzOzY1NywxMiBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRzdHJ1Y3QgaXdsX212bV92aWYgKm12bXZpZiA9IGl3bF9tdm1fdmlmX2Zyb21fbWFjODAyMTEodmlmKTtcbiBcbiBcdGlmIChtdm12aWYtXHUwMDNlZnRtX3VucHJvdGVjdGVkKVxuLVx0XHRyZXR1cm47XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiAjZW5kaWZcbiBcbiBcdGlmICghKGxlMzJfdG9fY3B1KCpmbGFncykgXHUwMDI2IChJV0xfSU5JVElBVE9SX0FQX0ZMQUdTX05PTl9UQiB8XG4gXHRcdCAgICAgICBJV0xfSU5JVElBVE9SX0FQX0ZMQUdTX1RCKSkpXG4tXHRcdHJldHVybjtcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuIFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZtdm0tXHUwMDNlbXV0ZXgpO1xuIFxuQEAgLTY3OSwxNCAmIzQzOzY4MCwzMSBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdGlmICh2aWYtXHUwMDNlY2ZnLmFzc29jIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIW1lbWNtcCh2aWYtXHUwMDNlYnNzX2NvbmYuYnNzaWQsIGJzc2lkLCBFVEhfQUxFTikpIHtcbiBcdFx0XHRzdHJ1Y3QgaXdsX212bV9mdG1faXRlcl9kYXRhIHRhcmdldDtcbiYjNDM7XHRcdFx0dTMyIGtleV9sZW47XG4gXG4gXHRcdFx0dGFyZ2V0LmJzc2lkID0gYnNzaWQ7XG4gXHRcdFx0dGFyZ2V0LmNpcGhlciA9IGNpcGhlcjtcbiBcdFx0XHR0YXJnZXQudGsgPSBOVUxMO1xuIFx0XHRcdGllZWU4MDIxMV9pdGVyX2tleXMobXZtLVx1MDAzZWh3LCB2aWYsIGl0ZXIsIFx1MDAyNnRhcmdldCk7XG4gXG4tXHRcdFx0aWYgKCFXQVJOX09OKCF0YXJnZXQudGspKVxuLVx0XHRcdFx0bWVtY3B5KHRrLCB0YXJnZXQudGssIFRLXzExQVpfTEVOKTtcbiYjNDM7XHRcdFx0aWYgKFdBUk5fT04oIXRhcmdldC50aykpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdFx0XHRzd2l0Y2ggKCp0YXJnZXQuY2lwaGVyKSB7XG4mIzQzO1x0XHRcdGNhc2UgSVdMX0xPQ0FUSU9OX0NJUEhFUl9DQ01QXzEyODpcbiYjNDM7XHRcdFx0Y2FzZSBJV0xfTE9DQVRJT05fQ0lQSEVSX0dDTVBfMTI4OlxuJiM0MztcdFx0XHRcdGtleV9sZW4gPSBXTEFOX0tFWV9MRU5fQ0NNUDtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0Y2FzZSBJV0xfTE9DQVRJT05fQ0lQSEVSX0dDTVBfMjU2OlxuJiM0MztcdFx0XHRcdGtleV9sZW4gPSBXTEFOX0tFWV9MRU5fR0NNUF8yNTY7XG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdGRlZmF1bHQ6XG4mIzQzO1x0XHRcdFx0V0FSTl9PTigxKTtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0bWVtc2V0KHRrLCAwLCBUS18xMUFaX0xFTik7XG4mIzQzO1x0XHRcdG1lbWNweSh0aywgdGFyZ2V0LnRrLCBrZXlfbGVuKTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRtZW1jcHkodGssIGVudHJ5LVx1MDAzZXRrLCBzaXplb2YoZW50cnktXHUwMDNldGspKTtcbiBcdFx0fVxuQEAgLTY5NSw4ICYjNDM7NzEzLDEwIEBAIGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3Jhbmdpbmcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdFx0bWVtY3B5KHR4X3BuLCBlbnRyeS1cdTAwM2V0eF9wbiwgc2l6ZW9mKGVudHJ5LVx1MDAzZXR4X3BuKSk7XG4gXG4gXHRcdEZUTV9TRVRfRkxBRyhTRUNVUkVEKTtcbi1cdFx0cmV0dXJuO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4gXHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50XG5AQCAtNzA4LDEyICYjNDM7NzI4LDExIEBAIGl3bF9tdm1fZnRtX3B1dF90YXJnZXRfdjcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKG12bSwgdmlmLCB0YXJnZXQtXHUwMDNlYnNzaWQsXG4tXHRcdFx0XHRcdFx1MDAyNnRhcmdldC1cdTAwM2VjaXBoZXIsIHRhcmdldC1cdTAwM2VobHRrLFxuLVx0XHRcdFx0XHR0YXJnZXQtXHUwMDNldGssIHRhcmdldC1cdTAwM2VyeF9wbixcbi1cdFx0XHRcdFx0dGFyZ2V0LVx1MDAzZXR4X3BuLFxuLVx0XHRcdFx0XHRcdTAwMjZ0YXJnZXQtXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcbi1cdHJldHVybiBlcnI7XG4mIzQzO1x0cmV0dXJuIGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmcobXZtLCB2aWYsIHRhcmdldC1cdTAwM2Vic3NpZCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIFx1MDAyNnRhcmdldC1cdTAwM2VjaXBoZXIsIHRhcmdldC1cdTAwM2VobHRrLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgdGFyZ2V0LVx1MDAzZXRrLCB0YXJnZXQtXHUwMDNlcnhfcG4sXG4mIzQzO1x0XHRcdFx0XHQgICAgICB0YXJnZXQtXHUwMDNldHhfcG4sXG4mIzQzO1x0XHRcdFx0XHQgICAgICBcdTAwMjZ0YXJnZXQtXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIGludCBpd2xfbXZtX2Z0bV9zdGFydF92MTEoc3RydWN0IGl3bF9tdm0gKm12bSxcbkBAIC04ODEsMTEgJiM0Mzs5MDAsMTMgQEAgaXdsX212bV9mdG1fcHV0X3RhcmdldF92MTAoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdGl3bF9tdm1fZnRtX3NldF90YXJnZXRfZmxhZ3MobXZtLCBwZWVyLCBcdTAwMjZ0YXJnZXQtXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcbiBcdGl3bF9tdm1fZnRtX3NldF9zdGEobXZtLCB2aWYsIHBlZXIsIFx1MDAyNnRhcmdldC1cdTAwM2VzdGFfaWQsXG4gXHRcdFx0ICAgIFx1MDAyNnRhcmdldC1cdTAwM2Vpbml0aWF0b3JfYXBfZmxhZ3MpO1xuLVx0aXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LVx1MDAzZWJzc2lkLFxuLVx0XHRcdFx0XHRcdTAwMjZ0YXJnZXQtXHUwMDNlY2lwaGVyLCB0YXJnZXQtXHUwMDNlaGx0ayxcbi1cdFx0XHRcdFx0dGFyZ2V0LVx1MDAzZXRrLCB0YXJnZXQtXHUwMDNlcnhfcG4sXG4tXHRcdFx0XHRcdHRhcmdldC1cdTAwM2V0eF9wbixcbi1cdFx0XHRcdFx0XHUwMDI2dGFyZ2V0LVx1MDAzZWluaXRpYXRvcl9hcF9mbGFncyk7XG4mIzQzO1x0cmV0ID0gaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LVx1MDAzZWJzc2lkLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgXHUwMDI2dGFyZ2V0LVx1MDAzZWNpcGhlciwgdGFyZ2V0LVx1MDAzZWhsdGssXG4mIzQzO1x0XHRcdFx0XHQgICAgICB0YXJnZXQtXHUwMDNldGssIHRhcmdldC1cdTAwM2VyeF9wbixcbiYjNDM7XHRcdFx0XHRcdCAgICAgIHRhcmdldC1cdTAwM2V0eF9wbixcbiYjNDM7XHRcdFx0XHRcdCAgICAgIFx1MDAyNnRhcmdldC1cdTAwM2Vpbml0aWF0b3JfYXBfZmxhZ3MpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuIFxuIFx0aTJyX21heF9zdHMgPSBJV0xfTVZNX0ZUTV9JMlJfTUFYX1NUUyBcdTAwM2UgMSA/IDEgOlxuIFx0XHRJV0xfTVZNX0ZUTV9JMlJfTUFYX1NUUztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuY1xuaW5kZXggNmU1MDdkNmRjZGQyYTEuLmZhNTIzYmU5MWQ4YWQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuY1xuQEAgLTk2NCwxMiAmIzQzOzk2NCwyMiBAQCBpbnQgaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlKHN0cnVjdCBpd2xfbXZtICptdm0pXG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyhtdm0sXG4mIzQzO1x0XHRcdCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKGNtZC5yZXNwX3BrdCkgIT1cbiYjNDM7XHRcdFx0IHNpemVvZigqcmVzcCksXG4mIzQzO1x0XHRcdCBcJiMzNDtXcm9uZyBzaXplIGZvciBpd2xfZ2VvX3R4X3Bvd2VyX3Byb2ZpbGVzX3Jlc3A6ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihjbWQucmVzcF9wa3QpKSkge1xuJiM0MztcdFx0cmV0ID0gLUVJTztcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXNwID0gKHZvaWQgKiljbWQucmVzcF9wa3QtXHUwMDNlZGF0YTtcbiBcdHJldCA9IGxlMzJfdG9fY3B1KHJlc3AtXHUwMDNlcHJvZmlsZV9pZHgpO1xuIFxuIFx0aWYgKFdBUk5fT04ocmV0IFx1MDAzZSBCSU9TX0dFT19NQVhfUFJPRklMRV9OVU0pKVxuIFx0XHRyZXQgPSAtRUlPO1xuIFxuJiM0MztvdXQ6XG4gXHRpd2xfZnJlZV9yZXNwKFx1MDAyNmNtZCk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9wdHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3B0cC5jXG5pbmRleCBmMzllYjQ4ODY0ZWI0Yi4uNDlkY2IxMzg4MDA3YmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9wdHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcHRwLmNcbkBAIC0xLDYgJiM0MzsxLDYgQEBcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiAvKlxuLSAqIENvcHlyaWdodCAoQykgMjAyMSAtIDIwMjMsIDIwMjUgSW50ZWwgQ29ycG9yYXRpb25cbiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDIxIC0gMjAyMywgMjAyNS0yMDI2IEludGVsIENvcnBvcmF0aW9uXG4gICovXG4gXG4gI2luY2x1ZGUgXCYjMzQ7bXZtLmhcJiMzNDtcbkBAIC0xMjEsNiAmIzQzOzEyMSw4IEBAIGl3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3KHN0cnVjdCBpd2xfbXZtICptdm0sIHUzMiAqZ3AyLCB1NjQgKnN5c190aW1lKVxuIFx0KnN5c190aW1lID0gKHU2NClsZTMyX3RvX2NwdShyZXNwLVx1MDAzZXBsYXRmb3JtX3RpbWVzdGFtcF9oaSkgXHUwMDNjXHUwMDNjIDMyIHxcbiBcdFx0bGUzMl90b19jcHUocmVzcC1cdTAwM2VwbGF0Zm9ybV90aW1lc3RhbXBfbG8pO1xuIFxuJiM0MztcdGl3bF9mcmVlX3Jlc3AoXHUwMDI2Y21kKTtcbiYjNDM7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xuaW5kZXggZGM2OWM3MWZhYTc2Y2EuLmQzYzJmZTgzMDQ3NzdiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xuQEAgLTE1NDQsNiAmIzQzOzE1NDQsMTcgQEAgc3RhdGljIGlubGluZSB1MzIgaXdsX212bV9nZXRfc2NkX3NzbihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuIFx0cmV0dXJuIHZhbCBcdTAwMjYgMHhGRkY7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIHNpemVfdCBpd2xfbXZtX3R4X3Jlc3BfbWluX2xlbihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuJiM0MztcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgaXdsX3R4X3Jlc3AgKnR4X3Jlc3ApXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYWdnX3R4X3N0YXR1cyAqYWdnX3N0YXR1cyA9XG4mIzQzO1x0XHRpd2xfbXZtX2dldF9hZ2dfc3RhdHVzKG12bSwgdHhfcmVzcCk7XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBhZ2dyZWdhdGUgcmVzcG9uc2UgZW5kcyB3aXRoIGEgdHJhaWxpbmcgU0NEIFNTTiBfX2xlMzIgd29yZC4gKi9cbiYjNDM7XHRyZXR1cm4gKHU4ICopKGFnZ19zdGF0dXMgJiM0MzsgdHhfcmVzcC1cdTAwM2VmcmFtZV9jb3VudCkgLSAodTggKil0eF9yZXNwICYjNDM7XG4mIzQzO1x0XHRzaXplb2YoX19sZTMyKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBpd2xfbXZtX3J4X3R4X2NtZF9zaW5nbGUoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdClcbiB7XG5AQCAtMTg0Nyw2ICYjNDM7MTg1OCw5IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcnhfdHhfY21kX2FnZyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxuIFx0aW50IHF1ZXVlID0gU0VRX1RPX1FVRVVFKHNlcXVlbmNlKTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGE7XG4gXG4mIzQzO1x0aWYgKFdBUk5fT05fT05DRShpd2xfbXZtX2hhc19uZXdfdHhfYXBpKG12bSkpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdGlmIChXQVJOX09OX09OQ0UocXVldWUgXHUwMDNjIElXTF9NVk1fRFFBX01JTl9EQVRBX1FVRVVFIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAocXVldWUgIT0gSVdMX01WTV9EUUFfQlNTX0NMSUVOVF9RVUVVRSkpKVxuIFx0XHRyZXR1cm47XG5AQCAtMTg4MSw2ICYjNDM7MTg5NSwyNiBAQCB2b2lkIGl3bF9tdm1fcnhfdHhfY21kKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxuIHtcbiBcdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpO1xuIFx0c3RydWN0IGl3bF90eF9yZXNwICp0eF9yZXNwID0gKHZvaWQgKilwa3QtXHUwMDNlZGF0YTtcbiYjNDM7XHRzaXplX3QgbWluX2xlbjtcbiYjNDM7XG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyhtdm0sICF0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50LFxuJiM0MztcdFx0XHQgXCYjMzQ7aW52YWxpZCBUWF9DTUQgZnJhbWVfY291bnQgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCB0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyhtdm0sXG4mIzQzO1x0XHRcdCBpd2xfbXZtX2hhc19uZXdfdHhfYXBpKG12bSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCB0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50ICE9IDEsXG4mIzQzO1x0XHRcdCBcJiMzNDtpbnZhbGlkIFRYX0NNRCBmcmFtZV9jb3VudCAldSBmb3IgbmV3IFRYIEFQSVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0IHR4X3Jlc3AtXHUwMDNlZnJhbWVfY291bnQpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRtaW5fbGVuID0gaXdsX212bV90eF9yZXNwX21pbl9sZW4obXZtLCB0eF9yZXNwKTtcbiYjNDM7XHRpZiAoSVdMX0ZXX0NIRUNLKG12bSwgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzYyBtaW5fbGVuLFxuJiM0MztcdFx0XHQgXCYjMzQ7aW52YWxpZCBUWF9DTUQgbGVuICV1IChmcmFtZV9jb3VudCAldSwgbWluICV6dSlcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCksIHR4X3Jlc3AtXHUwMDNlZnJhbWVfY291bnQsXG4mIzQzO1x0XHRcdCBtaW5fbGVuKSlcbiYjNDM7XHRcdHJldHVybjtcbiBcbiBcdGlmICh0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50ID09IDEpXG4gXHRcdGl3bF9tdm1fcnhfdHhfY21kX3NpbmdsZShtdm0sIHBrdCk7XG5AQCAtMjEwMCw4ICYjNDM7MjEzNCwxNCBAQCB2b2lkIGl3bF9tdm1fcnhfYmFfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4gXHRcdFx0aWYgKHRpZCA9PSBJV0xfTUdNVF9USUQpXG4gXHRcdFx0XHR0aWQgPSBJV0xfTUFYX1RJRF9DT1VOVDtcbiBcbiYjNDM7XHRcdFx0aWYgKElXTF9GV19DSEVDSyhtdm0sIHRpZCBcdTAwM2U9XG4mIzQzO1x0XHRcdFx0XHQgQVJSQVlfU0laRShtdm1zdGEtXHUwMDNldGlkX2RhdGEpLFxuJiM0MztcdFx0XHRcdFx0IFwmIzM0O2ludmFsaWQgVElEICVkIGluIGNvbXByZXNzZWQgQkFcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0XHQgdGlkKSlcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4gXHRcdFx0aWYgKG12bXN0YSlcbi1cdFx0XHRcdG12bXN0YS1cdTAwM2V0aWRfZGF0YVtpXS5scV9jb2xvciA9IGxxX2NvbG9yO1xuJiM0MztcdFx0XHRcdG12bXN0YS1cdTAwM2V0aWRfZGF0YVt0aWRdLmxxX2NvbG9yID0gbHFfY29sb3I7XG4gXG4gXHRcdFx0aXdsX212bV90eF9yZWNsYWltKG12bSwgc3RhX2lkLCB0aWQsXG4gXHRcdFx0XHRcdCAgIChpbnQpKGxlMTZfdG9fY3B1KGJhX3RmZC1cdTAwM2VxX251bSkpLFxuQEAgLTIxMjEsNiAmIzQzOzIxNjEsOSBAQCB2b2lkIGl3bF9tdm1fcnhfYmFfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4gXHRiYV9ub3RpZiA9ICh2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4gXHRzdGFfaWQgPSBiYV9ub3RpZi1cdTAwM2VzdGFfaWQ7XG4gXHR0aWQgPSBiYV9ub3RpZi1cdTAwM2V0aWQ7XG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyhtdm0sIHRpZCBcdTAwM2U9IEFSUkFZX1NJWkUobXZtc3RhLVx1MDAzZXRpZF9kYXRhKSxcbiYjNDM7XHRcdFx0IFwmIzM0O2ludmFsaWQgVElEICVkIGluIEJBIG5vdGlmXFxuXCYjMzQ7LCB0aWQpKVxuJiM0MztcdFx0cmV0dXJuO1xuIFx0LyogXCYjMzQ7Zmxvd1wmIzM0OyBjb3JyZXNwb25kcyB0byBUeCBxdWV1ZSAqL1xuIFx0dHhxID0gbGUxNl90b19jcHUoYmFfbm90aWYtXHUwMDNlc2NkX2Zsb3cpO1xuIFx0LyogXCYjMzQ7c3NuXCYjMzQ7IGlzIHN0YXJ0IG9mIGJsb2NrLWFjayBUeCB3aW5kb3csIGNvcnJlc3BvbmRzIHRvIGluZGV4XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby5jXG5pbmRleCBkNWViODk1MTQ0ZWZjOS4uN2Y4ODYyMDBkNjkzMzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8uY1xuQEAgLTEsNyAmIzQzOzEsNyBAQFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuIC8qXG4gICogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIERldXRzY2hsYW5kIEdtYkhcbi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNSBJbnRlbCBDb3Jwb3JhdGlvblxuJiM0MzsgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxuICAqL1xuICNpbmNsdWRlIFwmIzM0O2l3bC10cmFucy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7aXdsLWZoLmhcJiMzNDtcbkBAIC05OSw2ICYjNDM7OTksMTEgQEAgaW50IGl3bF9wY2llX2luaXRfZndfc2VjKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIFx0LyogYWRkIDIgZHVlIHRvIHNlcGFyYXRvcnMgKi9cbiBcdHBhZ2luZ19jbnQgPSBpd2xfcGNpZV9nZXRfbnVtX3NlY3Rpb25zKGZ3LCBsbWFjX2NudCAmIzQzOyB1bWFjX2NudCAmIzQzOyAyKTtcbiBcbiYjNDM7XHRpZiAoV0FSTl9PTihsbWFjX2NudCBcdTAwM2UgQVJSQVlfU0laRShjdHh0X2RyYW0tXHUwMDNlbG1hY19pbWcpIHx8XG4mIzQzO1x0XHQgICAgdW1hY19jbnQgXHUwMDNlIEFSUkFZX1NJWkUoY3R4dF9kcmFtLVx1MDAzZXVtYWNfaW1nKSB8fFxuJiM0MztcdFx0ICAgIHBhZ2luZ19jbnQgXHUwMDNlIEFSUkFZX1NJWkUoY3R4dF9kcmFtLVx1MDAzZXZpcnR1YWxfaW1nKSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRkcmFtLVx1MDAzZWZ3ID0ga3phbGxvY19vYmpzKCpkcmFtLVx1MDAzZWZ3LCB1bWFjX2NudCAmIzQzOyBsbWFjX2NudCk7XG4gXHRpZiAoIWRyYW0tXHUwMDNlZncpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7SVdMTVZNJiMzNDssCiAgICAmIzM0O0lXTE1MRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF9wbnZtX2NvbXBsZXRlX2ZuJiMzNDssCiAgICAmIzM0O2l3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwJiMzNDssCiAgICAmIzM0O2l3bF9wYXJzZV9zaGFyZWRfbWVtJiMzNDssCiAgICAmIzM0O2l3bF9nZXRfbnZtJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0JiMzNDssCiAgICAmIzM0O2l3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmcmIzM0OywKICAgICYjMzQ7aXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3JiMzNDssCiAgICAmIzM0O2l3bF9wY2llX2luaXRfZndfc2VjJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgaXdsd2lmaSBkcml2ZXIsIGluY2x1ZGluZyBhZGRpbmcgc3VwcG9ydCBmb3IgVU5JSS05IGNoYW5uZWxzLCBhZGRpbmcgYm91bmRzIGNoZWNrcyBmb3IgZmlybXdhcmUgbm90aWZpY2F0aW9ucyBhbmQgcmVzcG9uc2VzLCBmaXhpbmcgbWVtb3J5IGxlYWtzLCBhbmQgbW9kaWZ5aW5nIE5WTSBwYXJzaW5nIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBsb2dpYyBvZiB0aGUgZHJpdmVyIGFuZCBhcmUgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTM0YzllNThkMmIyNGQ1N2ZiOTMxMzFkZGU3NmYyYTY0MDYwNDg1OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDE2IDAyOjE5OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9jZmcvcmYtcGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL3JmLXBlLmMKaW5kZXggN2EwNGNiMTIwYjFiMjMuLjYwODBmNWYyM2U2OTg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL3JmLXBlLmMKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAJLm5vbl9zaGFyZWRfYW50ID0gQU5UX0IsCQkJCQlcCiAJLnZodF9tdV9taW1vX3N1cHBvcnRlZCA9IHRydWUsCQkJCQlcCiAJLnVoYl9zdXBwb3J0ZWQgPSB0cnVlLAkJCQkJCVwKJiM0MzsJLnVuaWk5X3N1cHBvcnRlZCA9IHRydWUsCQkJCQlcCiAJLmVodF9zdXBwb3J0ZWQgPSB0cnVlLAkJCQkJCVwKIAkudWhyX3N1cHBvcnRlZCA9IHRydWUsCQkJCQkJXAogCS5udW1fcmJkcyA9IElXTF9OVU1fUkJEU19FSFQsCQkJCQlcCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmgKaW5kZXggNDQzYTlhNDE2MzI1MjMuLjAxNzJjMDc0N2E0N2M5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbnZtLXJlZy5oCkBAIC0yMDUsNiAmIzQzOzIwNSw3IEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3BoeSB7CiAKICNkZWZpbmUgSVdMX05VTV9DSEFOTkVMU19WMQk1MQogI2RlZmluZSBJV0xfTlVNX0NIQU5ORUxTX1YyCTExMAomIzQzOyNkZWZpbmUgSVdMX05VTV9DSEFOTkVMU19WMwkxMTUKIAogLyoqCiAgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5X3YxIC0gcmVndWxhdG9yeSBpbmZvcm1hdGlvbgpAQCAtMjE5LDEyICYjNDM7MjIwLDEyIEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjEgewogfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUkVHVUxBVE9SWV9TX1ZFUl8xICovCiAKIC8qKgotICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSAtIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb24KJiM0MzsgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5X3YyIC0gcmVndWxhdG9yeSBpbmZvcm1hdGlvbgogICogQGxhcl9lbmFibGVkOiBpcyBMQVIgZW5hYmxlZAogICogQG5fY2hhbm5lbHM6IG51bWJlciBvZiB2YWxpZCBjaGFubmVscyBpbiB0aGUgYXJyYXkKICAqIEBjaGFubmVsX3Byb2ZpbGU6IHJlZ3VsYXRvcnkgZGF0YSBvZiB0aGlzIGNoYW5uZWwKICAqLwotc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSB7CiYjNDM7c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MiB7CiAJX19sZTMyIGxhcl9lbmFibGVkOwogCV9fbGUzMiBuX2NoYW5uZWxzOwogCV9fbGUzMiBjaGFubmVsX3Byb2ZpbGVbSVdMX05VTV9DSEFOTkVMU19WMl07CkBAIC0yNDQsNiAmIzQzOzI0NSwzMiBAQCBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjMgewogCXN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjEgcmVndWxhdG9yeTsKIH0gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JTUF9BUElfU19WRVJfMyAqLwogCiYjNDM7LyoqCiYjNDM7ICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3Y0IC0gcmVzcG9uc2UgdG8gZ2V0IE5WTSBkYXRhCiYjNDM7ICogQGdlbmVyYWw6IGdlbmVyYWwgTlZNIGRhdGEKJiM0MzsgKiBAbWFjX3NrdTogZGF0YSByZWxhdGluZyB0byBNQUMgc2t1CiYjNDM7ICogQHBoeV9za3U6IGRhdGEgcmVsYXRpbmcgdG8gUEhZIHNrdQomIzQzOyAqIEByZWd1bGF0b3J5OiByZWd1bGF0b3J5IGRhdGEKJiM0MzsgKi8KJiM0MztzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjQgewomIzQzOwlzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19nZW5lcmFsIGdlbmVyYWw7CiYjNDM7CXN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3NrdSBtYWNfc2t1OwomIzQzOwlzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19waHkgcGh5X3NrdTsKJiM0MzsJc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MiByZWd1bGF0b3J5OwomIzQzO30gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JTUF9BUElfU19WRVJfNCAqLwomIzQzOwomIzQzOy8qKgomIzQzOyAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uCiYjNDM7ICogQGxhcl9lbmFibGVkOiBpcyBMQVIgZW5hYmxlZAomIzQzOyAqIEBuX2NoYW5uZWxzOiBudW1iZXIgb2YgdmFsaWQgY2hhbm5lbHMgaW4gdGhlIGFycmF5CiYjNDM7ICogQGNoYW5uZWxfcHJvZmlsZTogcmVndWxhdG9yeSBkYXRhIG9mIHRoaXMgY2hhbm5lbAomIzQzOyAqLwomIzQzO3N0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkgewomIzQzOwlfX2xlMzIgbGFyX2VuYWJsZWQ7CiYjNDM7CV9fbGUzMiBuX2NoYW5uZWxzOwomIzQzOwlfX2xlMzIgY2hhbm5lbF9wcm9maWxlW0lXTF9OVU1fQ0hBTk5FTFNfVjNdOwomIzQzO30gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JFR1VMQVRPUllfU19WRVJfMyAqLwomIzQzOwogLyoqCiAgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3AgLSByZXNwb25zZSB0byBnZXQgTlZNIGRhdGEKICAqIEBnZW5lcmFsOiBnZW5lcmFsIE5WTSBkYXRhCkBAIC0yNTYsNyAmIzQzOzI4Myw3IEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcCB7CiAJc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fc2t1IG1hY19za3U7CiAJc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcGh5IHBoeV9za3U7CiAJc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSByZWd1bGF0b3J5OwotfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl80ICovCiYjNDM7fSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl81ICovCiAKIC8qKgogICogc3RydWN0IGl3bF9udm1fYWNjZXNzX2NvbXBsZXRlX2NtZCAtIE5WTV9BQ0NFU1MgY29tbWFuZHMgYXJlIGNvbXBsZXRlZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oCmluZGV4IDA4ZjRjYzNlYTFjMzA0Li5lZTc4MzcxMDgyYjA5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaApAQCAtMSw2ICYjNDM7MSw2IEBACiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2UgKi8KIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgMjAxOC0yMDI1IEludGVsIENvcnBvcmF0aW9uCiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQsIDIwMTgtMjAyNiBJbnRlbCBDb3Jwb3JhdGlvbgogICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgSW50ZWwgTW9iaWxlIENvbW11bmljYXRpb25zIEdtYkgKICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEludGVsIERldXRzY2hsYW5kIEdtYkgKICAqLwpAQCAtMTMxOSw3ICYjNDM7MTMxOSw3IEBAIHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8gewogCXU4IHJlc3VtZV93aGlsZV9zY2FubmluZzsKIAl1OCBzZWxmX3JlY292ZXJ5OwogCV9fbGUxNiByZXNlcnZlZDsKLQlzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlX21hdGNoIG1hdGNoZXNbXTsKJiM0MzsJc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZV9tYXRjaCBtYXRjaGVzW0lXTF9TQ0FOX01BWF9QUk9GSUxFU19WMl07CiB9IF9fcGFja2VkOyAvKiBTQ0FOX09GRkxPQURfUFJPRklMRVNfUVVFUllfUlNQX1NfVkVSXzMgYW5kCiAJICAgICAqIFNDQU5fT0ZGTE9BRF9NQVRDSF9JTkZPX05PVElGSUNBVElPTl9TX1ZFUl8xCiAJICAgICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYwppbmRleCBhZmZmOGQ1MWNhOTUwYy4uZWMwZmY1OGFiMzEyZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jCkBAIC0xLDYgJiM0MzsxLDYgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZQogLyoKLSAqIENvcHlyaWdodChjKSAyMDIwLTIwMjUgSW50ZWwgQ29ycG9yYXRpb24KJiM0MzsgKiBDb3B5cmlnaHQoYykgMjAyMC0yMDI2IEludGVsIENvcnBvcmF0aW9uCiAgKi8KIAogI2luY2x1ZGUgJiMzNDtpd2wtZHJ2LmgmIzM0OwpAQCAtMTIsNiAmIzQzOzEyLDcgQEAKICNpbmNsdWRlICYjMzQ7ZncvYXBpL2FsaXZlLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtmdy91ZWZpLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtmdy9pbWcuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtmdy9kYmcuaCYjMzQ7CiAKICNkZWZpbmUgSVdMX1BOVk1fUkVEVUNFRF9DQVBfQklUIEJJVCgyNSkKIApAQCAtMjYsNiAmIzQzOzI3LDEyIEBAIHN0YXRpYyBib29sIGl3bF9wbnZtX2NvbXBsZXRlX2ZuKHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LAogCXN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zID0gKHN0cnVjdCBpd2xfdHJhbnMgKilkYXRhOwogCXN0cnVjdCBpd2xfcG52bV9pbml0X2NvbXBsZXRlX250ZnkgKnBudm1fbnRmID0gKHZvaWQgKilwa3QtJmd0O2RhdGE7CiAKJiM0MzsJaWYgKElXTF9GV19DSEVDSyh0cmFucywKJiM0MzsJCQkgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpICZsdDsgc2l6ZW9mKCpwbnZtX250ZiksCiYjNDM7CQkJICYjMzQ7QmFkIG5vdGlmIGxlbjogJWRcbiYjMzQ7LAomIzQzOwkJCSBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkpKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiAJSVdMX0RFQlVHX0ZXKHRyYW5zLAogCQkgICAgICYjMzQ7UE5WTSBjb21wbGV0ZSBub3RpZmljYXRpb24gcmVjZWl2ZWQgd2l0aCBzdGF0dXMgMHglMHhcbiYjMzQ7LAogCQkgICAgIGxlMzJfdG9fY3B1KHBudm1fbnRmLSZndDtzdGF0dXMpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmMKaW5kZXggOGQ5ZmYzNmUzMGY1ZTMuLjFkNmQzOGVlNTViNDk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYwpAQCAtMzg5LDcgJiM0MzszODksNyBAQCBib29sIGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0KHUxNiAqbGlzdCwgdTggKnNpemUsIHUxNiBtY2MpCiAJaWYgKCpzaXplICZndDs9IElXTF9XVEFTX0JMQUNLX0xJU1RfTUFYKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlsaXN0WypzaXplJiM0MzsmIzQzO10gPSBtY2M7CiYjNDM7CWxpc3RbKCpzaXplKSYjNDM7JiM0MztdID0gbWNjOwogCXJldHVybiB0cnVlOwogfQogSVdMX0VYUE9SVF9TWU1CT0woaXdsX2FkZF9tY2NfdG9fdGFzX2Jsb2NrX2xpc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9zbWVtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uYwppbmRleCAzNDRkZGRlODViMTg5Ny4uMjBlZDI2YTFiYjAwZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvc21lbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvc21lbS5jCkBAIC0xLDYgJiM0MzsxLDYgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZQogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjEsIDIwMjUgSW50ZWwgQ29ycG9yYXRpb24KJiM0MzsgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgMjAxOC0yMDIxLCAyMDI1LTIwMjYgSW50ZWwgQ29ycG9yYXRpb24KICAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEludGVsIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBHbWJICiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJICiAgKi8KQEAgLTE0LDkgJiM0MzsxNCwxNyBAQCBzdGF0aWMgdm9pZCBpd2xfcGFyc2Vfc2hhcmVkX21lbV8yMjAwMChzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsCiB7CiAJc3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZyAqbWVtX2NmZyA9ICh2b2lkICopcGt0LSZndDtkYXRhOwogCWludCBpLCBsbWFjOwotCWludCBsbWFjX251bSA9IGxlMzJfdG9fY3B1KG1lbV9jZmctJmd0O2xtYWNfbnVtKTsKLQl1OCBhcGlfdmVyID0gaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZndydC0mZ3Q7ZncsIFNZU1RFTV9HUk9VUCwKLQkJCQkJICAgICBTSEFSRURfTUVNX0NGR19DTUQsIDApOwomIzQzOwlpbnQgbG1hY19udW07CiYjNDM7CXU4IGFwaV92ZXI7CiYjNDM7CiYjNDM7CWlmIChJV0xfRldfQ0hFQ0soZndydCwgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpICZsdDsKJiM0MzsJCQkgb2Zmc2V0b2ZlbmQoc3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZywgbG1hY19zbWVtWzFdKSwKJiM0MzsJCQkgJiMzNDtiYWQgc2hhcmVkIG1lbSBub3RpZmljYXRpb24gc2l6ZVxuJiMzNDspKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlsbWFjX251bSA9IGxlMzJfdG9fY3B1KG1lbV9jZmctJmd0O2xtYWNfbnVtKTsKJiM0MzsJYXBpX3ZlciA9IGl3bF9md19sb29rdXBfbm90aWZfdmVyKGZ3cnQtJmd0O2Z3LCBTWVNURU1fR1JPVVAsCiYjNDM7CQkJCQkgIFNIQVJFRF9NRU1fQ0ZHX0NNRCwgMCk7CiAKIAkvKiBOb3RlOiBub3RpZmljYXRpb24gaGFzIDMgZW50cmllcywgYnV0IHdlIG9ubHkgZXhwZWN0IDIgKi8KIAlpZiAoSVdMX0ZXX0NIRUNLKGZ3cnQsIGxtYWNfbnVtICZndDsgQVJSQVlfU0laRShmd3J0LSZndDtzbWVtX2NmZy5sbWFjKSwKQEAgLTMwLDcgJiM0MzszOCw3IEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwKIAogCWlmIChhcGlfdmVyICZndDs9IDQgJmFtcDsmYW1wOwogCSAgICAhSVdMX0ZXX0NIRUNLKGZ3cnQsIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSAmbHQ7IHNpemVvZigqbWVtX2NmZyksCi0JCQkgICYjMzQ7YmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemVcbiYjMzQ7KSkgewomIzQzOwkJCSAgJiMzNDtiYWQgc2hhcmVkIG1lbSBub3RpZmljYXRpb24gc2l6ZSAodjQpXG4mIzM0OykpIHsKIAkJZndydC0mZ3Q7c21lbV9jZmcucnhmaWZvMl9jb250cm9sX3NpemUgPQogCQkJbGUzMl90b19jcHUobWVtX2NmZy0mZ3Q7cnhmaWZvMl9jb250cm9sX3NpemUpOwogCX0KQEAgLTUzLDYgJiM0Mzs2MSwxMSBAQCBzdGF0aWMgdm9pZCBpd2xfcGFyc2Vfc2hhcmVkX21lbShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsCiAJc3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZ192MiAqbWVtX2NmZyA9ICh2b2lkICopcGt0LSZndDtkYXRhOwogCWludCBpOwogCiYjNDM7CWlmIChJV0xfRldfQ0hFQ0soZndydCwgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpICZsdDsKJiM0MzsJCQkgb2Zmc2V0b2Yoc3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZ192MiwgcnhmaWZvX2FkZHIpLAomIzQzOwkJCSAmIzM0O2JhZCBzaGFyZWQgbWVtIG5vdGlmaWNhdGlvbiBzaXplXG4mIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJZndydC0mZ3Q7c21lbV9jZmcubnVtX2xtYWNzID0gMTsKIAogCWZ3cnQtJmd0O3NtZW1fY2ZnLm51bV90eGZpZm9fZW50cmllcyA9IEFSUkFZX1NJWkUobWVtX2NmZy0mZ3Q7dHhmaWZvX3NpemUpOwpAQCAtNjcsNiAmIzQzOzgwLDExIEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwKIAkvKiBuZXcgQVBJIGhhcyBtb3JlIGRhdGEsIGZyb20gcnhmaWZvX2FkZHIgZmllbGQgYW5kIG9uICovCiAJaWYgKGZ3X2hhc19jYXBhKCZhbXA7ZndydC0mZ3Q7ZnctJmd0O3Vjb2RlX2NhcGEsCiAJCQlJV0xfVUNPREVfVExWX0NBUEFfRVhURU5EX1NIQVJFRF9NRU1fQ0ZHKSkgewomIzQzOwkJaWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgJmx0OwomIzQzOwkJCQkgc2l6ZW9mKCptZW1fY2ZnKSwKJiM0MzsJCQkJICYjMzQ7YmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemUgKGV4dGVuZClcbiYjMzQ7KSkKJiM0MzsJCQlyZXR1cm47CiYjNDM7CiAJCUJVSUxEX0JVR19PTihzaXplb2YoZndydC0mZ3Q7c21lbV9jZmcuaW50ZXJuYWxfdHhmaWZvX3NpemUpICE9CiAJCQkgICAgIHNpemVvZihtZW1fY2ZnLSZndDtpbnRlcm5hbF90eGZpZm9fc2l6ZSkpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oCmluZGV4IDZhMzUzOWFkNzMzMTdlLi4zYWM3ZjAwMGVkZTQ3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmgKQEAgLTQxNSw2ICYjNDM7NDE1LDcgQEAgc3RydWN0IGl3bF9tYWNfY2ZnIHsKICAqIEB2aHRfbXVfbWltb19zdXBwb3J0ZWQ6IFZIVCBNVS1NSU1PIHN1cHBvcnQKICAqIEBudm1fdHlwZTogc2VlICZhbXA7ZW51bSBpd2xfbnZtX3R5cGUKICAqIEB1aGJfc3VwcG9ydGVkOiB1bHRyYSBoaWdoIGJhbmQgY2hhbm5lbHMgc3VwcG9ydGVkCiYjNDM7ICogQHVuaWk5X3N1cHBvcnRlZDogVU5JSS05IGNoYW5uZWxzIHN1cHBvcnRlZAogICogQGVodF9zdXBwb3J0ZWQ6IEVIVCBzdXBwb3J0ZWQKICAqIEB1aHJfc3VwcG9ydGVkOiBVSFIgc3VwcG9ydGVkCiAgKiBAbnVtX3JiZHM6IG51bWJlciBvZiByZWNlaXZlIGJ1ZmZlciBkZXNjcmlwdG9ycyB0byB1c2UKQEAgLTQ1MCw2ICYjNDM7NDUxLDcgQEAgc3RydWN0IGl3bF9yZl9jZmcgewogCSAgICBscF94dGFsX3dvcmthcm91bmQ6MSwKIAkgICAgdmh0X211X21pbW9fc3VwcG9ydGVkOjEsCiAJICAgIHVoYl9zdXBwb3J0ZWQ6MSwKJiM0MzsJICAgIHVuaWk5X3N1cHBvcnRlZDoxLAogCSAgICBlaHRfc3VwcG9ydGVkOjEsCiAJICAgIHVocl9zdXBwb3J0ZWQ6MTsKIAl1OCB2YWxpZF90eF9hbnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jCmluZGV4IGQ0N2I0YWUyZjQ4NjMwLi5iZDUzNTNmZGRlODFhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMKQEAgLTg1LDE2ICYjNDM7ODUsNyBAQCBzdGF0aWMgY29uc3QgdTE2IGl3bF9udm1fY2hhbm5lbHNbXSA9IHsKIAkxNDksIDE1MywgMTU3LCAxNjEsIDE2NQogfTsKIAotc3RhdGljIGNvbnN0IHUxNiBpd2xfZXh0X252bV9jaGFubmVsc1tdID0gewotCS8qIDIuNCBHSHogKi8KLQkxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsCi0JLyogNSBHSHogKi8KLQkzNiwgNDAsIDQ0LCA0OCwgNTIsIDU2LCA2MCwgNjQsIDY4LCA3MiwgNzYsIDgwLCA4NCwgODgsIDkyLAotCTk2LCAxMDAsIDEwNCwgMTA4LCAxMTIsIDExNiwgMTIwLCAxMjQsIDEyOCwgMTMyLCAxMzYsIDE0MCwgMTQ0LAotCTE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1LCAxNjksIDE3MywgMTc3LCAxODEKLX07Ci0KLXN0YXRpYyBjb25zdCB1MTYgaXdsX3VoYl9udm1fY2hhbm5lbHNbXSA9IHsKJiM0MztzdGF0aWMgY29uc3QgdTE2IGl3bF91bmlpOV9udm1fY2hhbm5lbHNbXSA9IHsKIAkvKiAyLjQgR0h6ICovCiAJMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LAogCS8qIDUgR0h6ICovCkBAIC0xMDUsMTIgJiM0Mzs5NiwxNiBAQCBzdGF0aWMgY29uc3QgdTE2IGl3bF91aGJfbnZtX2NoYW5uZWxzW10gPSB7CiAJMSwgNSwgOSwgMTMsIDE3LCAyMSwgMjUsIDI5LCAzMywgMzcsIDQxLCA0NSwgNDksIDUzLCA1NywgNjEsIDY1LCA2OSwKIAk3MywgNzcsIDgxLCA4NSwgODksIDkzLCA5NywgMTAxLCAxMDUsIDEwOSwgMTEzLCAxMTcsIDEyMSwgMTI1LCAxMjksCiAJMTMzLCAxMzcsIDE0MSwgMTQ1LCAxNDksIDE1MywgMTU3LCAxNjEsIDE2NSwgMTY5LCAxNzMsIDE3NywgMTgxLCAxODUsCi0JMTg5LCAxOTMsIDE5NywgMjAxLCAyMDUsIDIwOSwgMjEzLCAyMTcsIDIyMSwgMjI1LCAyMjksIDIzMwomIzQzOwkxODksIDE5MywgMTk3LCAyMDEsIDIwNSwgMjA5LCAyMTMsIDIxNywgMjIxLCAyMjUsIDIyOSwgMjMzLAomIzQzOwomIzQzOwkvKiBVTklJLTkgKi8KJiM0MzsJMjM3LCAyNDEsIDI0NSwgMjQ5LCAyNTMKIH07CiAKICNkZWZpbmUgSVdMX05WTV9OVU1fQ0hBTk5FTFMJCUFSUkFZX1NJWkUoaXdsX252bV9jaGFubmVscykKLSNkZWZpbmUgSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUCUFSUkFZX1NJWkUoaXdsX2V4dF9udm1fY2hhbm5lbHMpCi0jZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQglBUlJBWV9TSVpFKGl3bF91aGJfbnZtX2NoYW5uZWxzKQomIzQzOyNkZWZpbmUgSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUCTUxCiYjNDM7I2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU19VSEIJMTEwCiYjNDM7I2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU19VTklJOQlBUlJBWV9TSVpFKGl3bF91bmlpOV9udm1fY2hhbm5lbHMpCiAjZGVmaW5lIE5VTV8yR0haX0NIQU5ORUxTCQkxNAogI2RlZmluZSBOVU1fNUdIWl9DSEFOTkVMUwkJMzcKICNkZWZpbmUgRklSU1RfMkdIWl9IVF9NSU5VUwkJNQpAQCAtMzUxLDEyICYjNDM7MzQ2LDE1IEBAIHN0YXRpYyBpbnQgaXdsX2luaXRfY2hhbm5lbF9tYXAoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsCiAJaW50IG51bV9vZl9jaDsKIAljb25zdCB1MTYgKm52bV9jaGFuOwogCi0JaWYgKGNmZy0mZ3Q7dWhiX3N1cHBvcnRlZCkgewomIzQzOwlpZiAoY2ZnLSZndDt1bmlpOV9zdXBwb3J0ZWQpIHsKJiM0MzsJCW51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5OwomIzQzOwkJbnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzOwomIzQzOwl9IGVsc2UgaWYgKGNmZy0mZ3Q7dWhiX3N1cHBvcnRlZCkgewogCQludW1fb2ZfY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMU19VSEI7Ci0JCW52bV9jaGFuID0gaXdsX3VoYl9udm1fY2hhbm5lbHM7CiYjNDM7CQludm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7CiAJfSBlbHNlIGlmIChjZmctJmd0O252bV90eXBlID09IElXTF9OVk1fRVhUKSB7CiAJCW51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVDsKLQkJbnZtX2NoYW4gPSBpd2xfZXh0X252bV9jaGFubmVsczsKJiM0MzsJCW52bV9jaGFuID0gaXdsX3VuaWk5X252bV9jaGFubmVsczsKIAl9IGVsc2UgewogCQludW1fb2ZfY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMUzsKIAkJbnZtX2NoYW4gPSBpd2xfbnZtX2NoYW5uZWxzOwpAQCAtMTQ0MSw3ICYjNDM7MTQzOSw5IEBAIGl3bF9wYXJzZV9tZWlfbnZtX2RhdGEoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnICpjZmcsCiAJdTggcnhfY2hhaW5zID0gZnctJmd0O3ZhbGlkX3J4X2FudDsKIAl1OCB0eF9jaGFpbnMgPSBmdy0mZ3Q7dmFsaWRfcnhfYW50OwogCi0JaWYgKGNmZy0mZ3Q7dWhiX3N1cHBvcnRlZCkKJiM0MzsJaWYgKGNmZy0mZ3Q7dW5paTlfc3VwcG9ydGVkKQomIzQzOwkJZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5KTsKJiM0MzsJZWxzZSBpZiAoY2ZnLSZndDt1aGJfc3VwcG9ydGVkKQogCQlkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCKTsKIAllbHNlCiAJCWRhdGEgPSBremFsbG9jX2ZsZXgoKmRhdGEsIGNoYW5uZWxzLCBJV0xfTlZNX05VTV9DSEFOTkVMU19FWFQpOwpAQCAtMTUwNiw3ICYjNDM7MTUwNiw5IEBAIGl3bF9wYXJzZV9udm1fZGF0YShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgKmNmZywKIAl1MTYgbGFyX2NvbmZpZzsKIAljb25zdCBfX2xlMTYgKmNoX3NlY3Rpb247CiAKLQlpZiAoY2ZnLSZndDt1aGJfc3VwcG9ydGVkKQomIzQzOwlpZiAoY2ZnLSZndDt1bmlpOV9zdXBwb3J0ZWQpCiYjNDM7CQlkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVU5JSTkpOwomIzQzOwllbHNlIGlmIChjZmctJmd0O3VoYl9zdXBwb3J0ZWQpCiAJCWRhdGEgPSBremFsbG9jX2ZsZXgoKmRhdGEsIGNoYW5uZWxzLCBJV0xfTlZNX05VTV9DSEFOTkVMU19VSEIpOwogCWVsc2UgaWYgKGNmZy0mZ3Q7bnZtX3R5cGUgIT0gSVdMX05WTV9FWFQpCiAJCWRhdGEgPSBremFsbG9jX2ZsZXgoKmRhdGEsIGNoYW5uZWxzLCBJV0xfTlZNX05VTV9DSEFOTkVMUyk7CkBAIC0xNzI3LDEyICYjNDM7MTcyOSwxNSBAQCBpd2xfcGFyc2VfbnZtX21jY19pbmZvKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLAogCWludCBtYXhfbnVtX2NoOwogCXN0cnVjdCBpd2xfcmVnX2NhcGEgcmVnX2NhcGE7CiAKLQlpZiAoY2ZnLSZndDt1aGJfc3VwcG9ydGVkKSB7CiYjNDM7CWlmIChjZmctJmd0O3VuaWk5X3N1cHBvcnRlZCkgewomIzQzOwkJbWF4X251bV9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5OwomIzQzOwkJbnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzOwomIzQzOwl9IGVsc2UgaWYgKGNmZy0mZ3Q7dWhiX3N1cHBvcnRlZCkgewogCQltYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCOwotCQludm1fY2hhbiA9IGl3bF91aGJfbnZtX2NoYW5uZWxzOwomIzQzOwkJbnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzOwogCX0gZWxzZSBpZiAoY2ZnLSZndDtudm1fdHlwZSA9PSBJV0xfTlZNX0VYVCkgewogCQltYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUOwotCQludm1fY2hhbiA9IGl3bF9leHRfbnZtX2NoYW5uZWxzOwomIzQzOwkJbnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzOwogCX0gZWxzZSB7CiAJCW1heF9udW1fY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMUzsKIAkJbnZtX2NoYW4gPSBpd2xfbnZtX2NoYW5uZWxzOwpAQCAtMjA4NywxMyAmIzQzOzIwOTIsMjYgQEAgc3RydWN0IGl3bF9udm1fZGF0YSAqaXdsX2dldF9udm0oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsCiAJc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3YzICpyc3BfdjM7CiAJYm9vbCB2NCA9IGZ3X2hhc19hcGkoJmFtcDtmdy0mZ3Q7dWNvZGVfY2FwYSwKIAkJCSAgICAgSVdMX1VDT0RFX1RMVl9BUElfUkVHVUxBVE9SWV9OVk1fSU5GTyk7Ci0Jc2l6ZV90IHJzcF9zaXplID0gdjQgPyBzaXplb2YoKnJzcCkgOiBzaXplb2YoKnJzcF92Myk7CiYjNDM7CXNpemVfdCByc3Bfc2l6ZTsKIAl2b2lkICpjaGFubmVsX3Byb2ZpbGU7CiAKIAlyZXQgPSBpd2xfdHJhbnNfc2VuZF9jbWQodHJhbnMsICZhbXA7aGNtZCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIAomIzQzOwlzd2l0Y2ggKGl3bF9md19sb29rdXBfbm90aWZfdmVyKGZ3LCBSRUdVTEFUT1JZX0FORF9OVk1fR1JPVVAsCiYjNDM7CQkJCQlOVk1fR0VUX0lORk8sIDApKSB7CiYjNDM7CWNhc2UgNToKJiM0MzsJCXJzcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcCk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSA0OgomIzQzOwkJcnNwX3NpemUgPSBzaXplb2Yoc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3Y0KTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcnNwX3NpemUgPSBzaXplb2Yoc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3YzKTsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CiAJaWYgKFdBUk4oaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihoY21kLnJlc3BfcGt0KSAhPSByc3Bfc2l6ZSwKIAkJICYjMzQ7SW52YWxpZCBwYXlsb2FkIGxlbiBpbiBOVk0gcmVzcG9uc2UgZnJvbSBGVyAlZCYjMzQ7LAogCQkgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihoY21kLnJlc3BfcGt0KSkpIHsKQEAgLTIxMDcsNyAmIzQzOzIxMjUsNyBAQCBzdHJ1Y3QgaXdsX252bV9kYXRhICppd2xfZ2V0X252bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywKIAlpZiAoZW1wdHlfb3RwKQogCQlJV0xfSU5GTyh0cmFucywgJiMzNDtPVFAgaXMgZW1wdHlcbiYjMzQ7KTsKIAotCW52bSA9IGt6YWxsb2NfZmxleCgqbnZtLCBjaGFubmVscywgSVdMX05VTV9DSEFOTkVMU19WMik7CiYjNDM7CW52bSA9IGt6YWxsb2NfZmxleCgqbnZtLCBjaGFubmVscywgSVdMX05VTV9DSEFOTkVMU19WMyk7CiAJaWYgKCFudm0pIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYwppbmRleCAyMTg1ZGFkZTk1ZjhjYi4uMmRmNjY0M2E1YWE4MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYwpAQCAtMTEyMCw2ICYjNDM7MTEyMCwxMCBAQCB2b2lkIGl3bF9tbGRfaGFuZGxlX3R4X3Jlc3Bfbm90aWYoc3RydWN0IGl3bF9tbGQgKm1sZCwKIAlzc24gPSBsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKWFnZ19zdGF0dXMgJiM0MzsKIAkJCSAgIHR4X3Jlc3AtJmd0O2ZyYW1lX2NvdW50KSAmYW1wOyAweEZGRkY7CiAKJiM0MzsJaWYgKElXTF9GV19DSEVDSyhtbGQsIHR4cV9pZCAmZ3Q7PSBBUlJBWV9TSVpFKG1sZC0mZ3Q7ZndfaWRfdG9fdHhxKSwKJiM0MzsJCQkgJiMzNDtJbnZhbGlkIHR4cSBpZCAlZFxuJiMzNDssIHR4cV9pZCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJX19za2JfcXVldWVfaGVhZF9pbml0KCZhbXA7c2ticyk7CiAKIAkvKiB3ZSBjYW4gZnJlZSB1bnRpbCBzc24gJSBxLm5fYmQgbm90IGluY2x1c2l2ZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmMKaW5kZXggMzQyOWQ5YTEwZTQyMDkuLjZiMTFmYTMyZWE1YzZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmMKQEAgLTE1MDksNiAmIzQzOzE1MDksMTAgQEAgc3RhdGljIHZvaWQgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnMoc3RydWN0IGl3bF9tdm0gKm12bSwKIAkJaWYgKFdBUk5fT05fT05DRSh0cnVuY2F0ZWQgJmx0OyAwKSkKIAkJCXRydW5jYXRlZCA9IDA7CiAKJiM0MzsJCS8qIHRoaXMgd291bGQgYmUgYSBmaXJtd2FyZSBidWcgKi8KJiM0MzsJCWlmIChXQVJOX09OX09OQ0UocGt0c2l6ZSAmbHQ7IHNpemVvZigqaGRyKSkpCiYjNDM7CQkJcmV0dXJuOwomIzQzOwogCQlpZiAoaWVlZTgwMjExX2lzX2RhdGEoaGRyLSZndDtmcmFtZV9jb250cm9sKSkgewogCQkJaW50IGhkcmxlbiA9IGllZWU4MDIxMV9oZHJsZW4oaGRyLSZndDtmcmFtZV9jb250cm9sKTsKIAkJCWludCBpdmxlbiA9IDAsIGljdmxlbiA9IDQ7IC8qIGFsc28gRkNTICovCkBAIC0xNTE3LDEwICYjNDM7MTUyMSw2IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zKHN0cnVjdCBpd2xfbXZtICptdm0sCiAJCQlpZiAoIXBrdCkKIAkJCQlnb3RvIHJlcG9ydDsKIAotCQkJc2tiX3B1dF9kYXRhKHBrdCwgcGt0ZGF0YSwgaGRybGVuKTsKLQkJCXBrdGRhdGEgJiM0Mzs9IGhkcmxlbjsKLQkJCXBrdHNpemUgLT0gaGRybGVuOwotCiAJCQlpZiAoaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLSZndDtmcmFtZV9jb250cm9sKSkgewogCQkJCS8qCiAJCQkJICogVGhpcyBpcyB1bmxvY2tlZCBhbmQgdXNpbmcgZ3RrX2koYyl2bGVuLApAQCAtMTU0Niw2ICYjNDM7MTU0NiwxNyBAQCBzdGF0aWMgdm9pZCBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29ucyhzdHJ1Y3QgaXdsX212bSAqbXZtLAogCQkJCXRydW5jYXRlZCA9IDA7CiAJCQl9CiAKJiM0MzsJCQlpZiAoSVdMX0ZXX0NIRUNLKG12bSwKJiM0MzsJCQkJCSBwa3RzaXplICZsdDs9IGhkcmxlbiAmIzQzOyBpdmxlbiAmIzQzOyBpY3ZsZW4sCiYjNDM7CQkJCQkgJiMzNDtwa3RzaXplIGlzIHRvbyBzbWFsbCAlZFxuJiMzNDssCiYjNDM7CQkJCQkgcGt0c2l6ZSkpIHsKJiM0MzsJCQkJa2ZyZWVfc2tiKHBrdCk7CiYjNDM7CQkJCXJldHVybjsKJiM0MzsJCQl9CiYjNDM7CiYjNDM7CQkJc2tiX3B1dF9kYXRhKHBrdCwgcGt0ZGF0YSwgaGRybGVuKTsKJiM0MzsJCQlwa3RkYXRhICYjNDM7PSBoZHJsZW47CiYjNDM7CQkJcGt0c2l6ZSAtPSBoZHJsZW47CiAJCQlwa3RzaXplIC09IGl2bGVuICYjNDM7IGljdmxlbjsKIAkJCXBrdGRhdGEgJiM0Mzs9IGl2bGVuOwogCkBAIC0yNDQ4LDEzICYjNDM7MjQ1OSwxNSBAQCBpd2xfbXZtX25ldGRldGVjdF9xdWVyeV9yZXN1bHRzKHN0cnVjdCBpd2xfbXZtICptdm0sCiAKIAlpZiAoZndfaGFzX2FwaSgmYW1wO212bS0mZ3Q7ZnctJmd0O3Vjb2RlX2NhcGEsCiAJCSAgICAgICBJV0xfVUNPREVfVExWX0FQSV9TQ0FOX09GRkxPQURfQ0hBTlMpKSB7Ci0JCXF1ZXJ5X2xlbiA9IHNpemVvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9tYXRjaF9pbmZvKTsKIAkJbWF0Y2hlc19sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZV9tYXRjaCkgKgogCQkJbWF4X3Byb2ZpbGVzOwomIzQzOwkJcXVlcnlfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbywKJiM0MzsJCQkJICAgICBtYXRjaGVzKSAmIzQzOyBtYXRjaGVzX2xlbjsKIAl9IGVsc2UgewotCQlxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZXNfcXVlcnlfdjEpOwogCQltYXRjaGVzX2xlbiA9IHNpemVvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlX21hdGNoX3YxKSAqCiAJCQltYXhfcHJvZmlsZXM7CiYjNDM7CQlxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZXNfcXVlcnlfdjEpICYjNDM7CiYjNDM7CQkJbWF0Y2hlc19sZW47CiAJfQogCiAJbGVuID0gaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihjbWQucmVzcF9wa3QpOwpAQCAtMjc1Niw3ICYjNDM7Mjc2OSw3IEBAIHN0YXRpYyBpbnQgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3Qoc3RydWN0IGl3bF9tdm0gKm12bSwKIAkJCQkJIHN0cnVjdCBpd2xfd293bGFuX3N0YXR1c19kYXRhICpzdGF0dXMsCiAJCQkJCSB1MzIgbGVuKQogewotCXUzMiBkYXRhX3NpemUsIHBhY2tldF9sZW4gPSBsZTMyX3RvX2NwdShub3RpZi0mZ3Q7d2FrZV9wYWNrZXRfbGVuZ3RoKTsKJiM0MzsJdTMyIGRhdGFfc2l6ZSwgcGFja2V0X2xlbjsKIAogCWlmIChsZW4gJmx0OyBzaXplb2YoKm5vdGlmKSkgewogCQlJV0xfRVJSKG12bSwgJiMzNDtJbnZhbGlkIFdvV0xBTiB3YWtlIHBhY2tldCBub3RpZmljYXRpb24hXG4mIzM0Oyk7CkBAIC0yNzc1LDYgJiM0MzsyNzg4LDcgQEAgc3RhdGljIGludCBpd2xfbXZtX3dvd2xhbl9zdG9yZV93YWtlX3BrdChzdHJ1Y3QgaXdsX212bSAqbXZtLAogCQlyZXR1cm4gLUVJTzsKIAl9CiAKJiM0MzsJcGFja2V0X2xlbiA9IGxlMzJfdG9fY3B1KG5vdGlmLSZndDt3YWtlX3BhY2tldF9sZW5ndGgpOwogCWRhdGFfc2l6ZSA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCBpd2xfd293bGFuX3dha2VfcGt0X25vdGlmLCB3YWtlX3BhY2tldCk7CiAKIAkvKiBkYXRhX3NpemUgZ290IHRoZSBwYWRkaW5nIGZyb20gdGhlIG5vdGlmaWNhdGlvbiwgcmVtb3ZlIGl0LiAqLwpAQCAtMjgwNyw3ICYjNDM7MjgyMSw4IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyKHN0cnVjdCBpd2xfbXZtICptdm0sCiAJaWYgKElTX0VSUl9PUl9OVUxMKHZpZikpCiAJCXJldHVybjsKIAotCWlmIChsZW4gJmx0OyBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbykgJiM0MzsgbWF0Y2hlc19sZW4pIHsKJiM0MzsJaWYgKGxlbiAmbHQ7IG9mZnNldG9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8sIG1hdGNoZXMpICYjNDM7CiYjNDM7CQkgICAgbWF0Y2hlc19sZW4pIHsKIAkJSVdMX0VSUihtdm0sICYjMzQ7SW52YWxpZCBzY2FuIG1hdGNoIGluZm8gbm90aWZpY2F0aW9uXG4mIzM0Oyk7CiAJCXJldHVybjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmMKaW5kZXggM2ExNGNhNWU1MTJhZTMuLjhkN2Y2MGRjZDAyNzBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jCkBAIC02NDYsNyAmIzQzOzY0Niw4IEBAIHN0YXRpYyB2b2lkIGl0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJV0FSTl9PTigqdGFyZ2V0LSZndDtjaXBoZXIgPT0gSVdMX0xPQ0FUSU9OX0NJUEhFUl9JTlZBTElEKTsKIH0KIAotc3RhdGljIHZvaWQKJiM0MzsvKiBUaGUgdGsgYnVmZmVyIGlzIGFzc3VtZWQgdG8gYmUgZXhhY3RseSBUS18xMUFaX0xFTiBieXRlcyAqLwomIzQzO3N0YXRpYyBpbnQKIGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3Jhbmdpbmcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAkJCQl1OCAqYnNzaWQsIHU4ICpjaXBoZXIsIHU4ICpobHRrLCB1OCAqdGssCiAJCQkJdTggKnJ4X3BuLCB1OCAqdHhfcG4sIF9fbGUzMiAqZmxhZ3MpCkBAIC02NTYsMTIgJiM0Mzs2NTcsMTIgQEAgaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCXN0cnVjdCBpd2xfbXZtX3ZpZiAqbXZtdmlmID0gaXdsX212bV92aWZfZnJvbV9tYWM4MDIxMSh2aWYpOwogCiAJaWYgKG12bXZpZi0mZ3Q7ZnRtX3VucHJvdGVjdGVkKQotCQlyZXR1cm47CiYjNDM7CQlyZXR1cm4gMDsKICNlbmRpZgogCiAJaWYgKCEobGUzMl90b19jcHUoKmZsYWdzKSAmYW1wOyAoSVdMX0lOSVRJQVRPUl9BUF9GTEFHU19OT05fVEIgfAogCQkgICAgICAgSVdMX0lOSVRJQVRPUl9BUF9GTEFHU19UQikpKQotCQlyZXR1cm47CiYjNDM7CQlyZXR1cm4gMDsKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDttdm0tJmd0O211dGV4KTsKIApAQCAtNjc5LDE0ICYjNDM7NjgwLDMxIEBAIGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3Jhbmdpbmcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAkJaWYgKHZpZi0mZ3Q7Y2ZnLmFzc29jICZhbXA7JmFtcDsKIAkJICAgICFtZW1jbXAodmlmLSZndDtic3NfY29uZi5ic3NpZCwgYnNzaWQsIEVUSF9BTEVOKSkgewogCQkJc3RydWN0IGl3bF9tdm1fZnRtX2l0ZXJfZGF0YSB0YXJnZXQ7CiYjNDM7CQkJdTMyIGtleV9sZW47CiAKIAkJCXRhcmdldC5ic3NpZCA9IGJzc2lkOwogCQkJdGFyZ2V0LmNpcGhlciA9IGNpcGhlcjsKIAkJCXRhcmdldC50ayA9IE5VTEw7CiAJCQlpZWVlODAyMTFfaXRlcl9rZXlzKG12bS0mZ3Q7aHcsIHZpZiwgaXRlciwgJmFtcDt0YXJnZXQpOwogCi0JCQlpZiAoIVdBUk5fT04oIXRhcmdldC50aykpCi0JCQkJbWVtY3B5KHRrLCB0YXJnZXQudGssIFRLXzExQVpfTEVOKTsKJiM0MzsJCQlpZiAoV0FSTl9PTighdGFyZ2V0LnRrKSkKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CQkJc3dpdGNoICgqdGFyZ2V0LmNpcGhlcikgewomIzQzOwkJCWNhc2UgSVdMX0xPQ0FUSU9OX0NJUEhFUl9DQ01QXzEyODoKJiM0MzsJCQljYXNlIElXTF9MT0NBVElPTl9DSVBIRVJfR0NNUF8xMjg6CiYjNDM7CQkJCWtleV9sZW4gPSBXTEFOX0tFWV9MRU5fQ0NNUDsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJY2FzZSBJV0xfTE9DQVRJT05fQ0lQSEVSX0dDTVBfMjU2OgomIzQzOwkJCQlrZXlfbGVuID0gV0xBTl9LRVlfTEVOX0dDTVBfMjU2OwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQlkZWZhdWx0OgomIzQzOwkJCQlXQVJOX09OKDEpOwomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCQl9CiYjNDM7CiYjNDM7CQkJbWVtc2V0KHRrLCAwLCBUS18xMUFaX0xFTik7CiYjNDM7CQkJbWVtY3B5KHRrLCB0YXJnZXQudGssIGtleV9sZW4pOwogCQl9IGVsc2UgewogCQkJbWVtY3B5KHRrLCBlbnRyeS0mZ3Q7dGssIHNpemVvZihlbnRyeS0mZ3Q7dGspKTsKIAkJfQpAQCAtNjk1LDggJiM0Mzs3MTMsMTAgQEAgaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCQltZW1jcHkodHhfcG4sIGVudHJ5LSZndDt0eF9wbiwgc2l6ZW9mKGVudHJ5LSZndDt0eF9wbikpOwogCiAJCUZUTV9TRVRfRkxBRyhTRUNVUkVEKTsKLQkJcmV0dXJuOwomIzQzOwkJcmV0dXJuIDA7CiAJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludApAQCAtNzA4LDEyICYjNDM7NzI4LDExIEBAIGl3bF9tdm1fZnRtX3B1dF90YXJnZXRfdjcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LSZndDtic3NpZCwKLQkJCQkJJmFtcDt0YXJnZXQtJmd0O2NpcGhlciwgdGFyZ2V0LSZndDtobHRrLAotCQkJCQl0YXJnZXQtJmd0O3RrLCB0YXJnZXQtJmd0O3J4X3BuLAotCQkJCQl0YXJnZXQtJmd0O3R4X3BuLAotCQkJCQkmYW1wO3RhcmdldC0mZ3Q7aW5pdGlhdG9yX2FwX2ZsYWdzKTsKLQlyZXR1cm4gZXJyOwomIzQzOwlyZXR1cm4gaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LSZndDtic3NpZCwKJiM0MzsJCQkJCSAgICAgICZhbXA7dGFyZ2V0LSZndDtjaXBoZXIsIHRhcmdldC0mZ3Q7aGx0aywKJiM0MzsJCQkJCSAgICAgIHRhcmdldC0mZ3Q7dGssIHRhcmdldC0mZ3Q7cnhfcG4sCiYjNDM7CQkJCQkgICAgICB0YXJnZXQtJmd0O3R4X3BuLAomIzQzOwkJCQkJICAgICAgJmFtcDt0YXJnZXQtJmd0O2luaXRpYXRvcl9hcF9mbGFncyk7CiB9CiAKIHN0YXRpYyBpbnQgaXdsX212bV9mdG1fc3RhcnRfdjExKHN0cnVjdCBpd2xfbXZtICptdm0sCkBAIC04ODEsMTEgJiM0Mzs5MDAsMTMgQEAgaXdsX212bV9mdG1fcHV0X3RhcmdldF92MTAoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAlpd2xfbXZtX2Z0bV9zZXRfdGFyZ2V0X2ZsYWdzKG12bSwgcGVlciwgJmFtcDt0YXJnZXQtJmd0O2luaXRpYXRvcl9hcF9mbGFncyk7CiAJaXdsX212bV9mdG1fc2V0X3N0YShtdm0sIHZpZiwgcGVlciwgJmFtcDt0YXJnZXQtJmd0O3N0YV9pZCwKIAkJCSAgICAmYW1wO3RhcmdldC0mZ3Q7aW5pdGlhdG9yX2FwX2ZsYWdzKTsKLQlpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKG12bSwgdmlmLCB0YXJnZXQtJmd0O2Jzc2lkLAotCQkJCQkmYW1wO3RhcmdldC0mZ3Q7Y2lwaGVyLCB0YXJnZXQtJmd0O2hsdGssCi0JCQkJCXRhcmdldC0mZ3Q7dGssIHRhcmdldC0mZ3Q7cnhfcG4sCi0JCQkJCXRhcmdldC0mZ3Q7dHhfcG4sCi0JCQkJCSZhbXA7dGFyZ2V0LSZndDtpbml0aWF0b3JfYXBfZmxhZ3MpOwomIzQzOwlyZXQgPSBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKG12bSwgdmlmLCB0YXJnZXQtJmd0O2Jzc2lkLAomIzQzOwkJCQkJICAgICAgJmFtcDt0YXJnZXQtJmd0O2NpcGhlciwgdGFyZ2V0LSZndDtobHRrLAomIzQzOwkJCQkJICAgICAgdGFyZ2V0LSZndDt0aywgdGFyZ2V0LSZndDtyeF9wbiwKJiM0MzsJCQkJCSAgICAgIHRhcmdldC0mZ3Q7dHhfcG4sCiYjNDM7CQkJCQkgICAgICAmYW1wO3RhcmdldC0mZ3Q7aW5pdGlhdG9yX2FwX2ZsYWdzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiAKIAlpMnJfbWF4X3N0cyA9IElXTF9NVk1fRlRNX0kyUl9NQVhfU1RTICZndDsgMSA/IDEgOgogCQlJV0xfTVZNX0ZUTV9JMlJfTUFYX1NUUzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jCmluZGV4IDZlNTA3ZDZkY2RkMmExLi5mYTUyM2JlOTFkOGFkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jCkBAIC05NjQsMTIgJiM0Mzs5NjQsMjIgQEAgaW50IGl3bF9tdm1fZ2V0X3Nhcl9nZW9fcHJvZmlsZShzdHJ1Y3QgaXdsX212bSAqbXZtKQogCQlyZXR1cm4gcmV0OwogCX0KIAomIzQzOwlpZiAoSVdMX0ZXX0NIRUNLKG12bSwKJiM0MzsJCQkgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihjbWQucmVzcF9wa3QpICE9CiYjNDM7CQkJIHNpemVvZigqcmVzcCksCiYjNDM7CQkJICYjMzQ7V3Jvbmcgc2l6ZSBmb3IgaXdsX2dlb190eF9wb3dlcl9wcm9maWxlc19yZXNwOiAlZFxuJiMzNDssCiYjNDM7CQkJIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oY21kLnJlc3BfcGt0KSkpIHsKJiM0MzsJCXJldCA9IC1FSU87CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwogCXJlc3AgPSAodm9pZCAqKWNtZC5yZXNwX3BrdC0mZ3Q7ZGF0YTsKIAlyZXQgPSBsZTMyX3RvX2NwdShyZXNwLSZndDtwcm9maWxlX2lkeCk7CiAKIAlpZiAoV0FSTl9PTihyZXQgJmd0OyBCSU9TX0dFT19NQVhfUFJPRklMRV9OVU0pKQogCQlyZXQgPSAtRUlPOwogCiYjNDM7b3V0OgogCWl3bF9mcmVlX3Jlc3AoJmFtcDtjbWQpOwogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9wdHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3B0cC5jCmluZGV4IGYzOWViNDg4NjRlYjRiLi40OWRjYjEzODgwMDdiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcHRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcHRwLmMKQEAgLTEsNiAmIzQzOzEsNiBAQAogLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlCiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIC0gMjAyMywgMjAyNSBJbnRlbCBDb3Jwb3JhdGlvbgomIzQzOyAqIENvcHlyaWdodCAoQykgMjAyMSAtIDIwMjMsIDIwMjUtMjAyNiBJbnRlbCBDb3Jwb3JhdGlvbgogICovCiAKICNpbmNsdWRlICYjMzQ7bXZtLmgmIzM0OwpAQCAtMTIxLDYgJiM0MzsxMjEsOCBAQCBpd2xfbXZtX2dldF9jcm9zc3RpbWVzdGFtcF9mdyhzdHJ1Y3QgaXdsX212bSAqbXZtLCB1MzIgKmdwMiwgdTY0ICpzeXNfdGltZSkKIAkqc3lzX3RpbWUgPSAodTY0KWxlMzJfdG9fY3B1KHJlc3AtJmd0O3BsYXRmb3JtX3RpbWVzdGFtcF9oaSkgJmx0OyZsdDsgMzIgfAogCQlsZTMyX3RvX2NwdShyZXNwLSZndDtwbGF0Zm9ybV90aW1lc3RhbXBfbG8pOwogCiYjNDM7CWl3bF9mcmVlX3Jlc3AoJmFtcDtjbWQpOwomIzQzOwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jCmluZGV4IGRjNjljNzFmYWE3NmNhLi5kM2MyZmU4MzA0Nzc3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jCkBAIC0xNTQ0LDYgJiM0MzsxNTQ0LDE3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGl3bF9tdm1fZ2V0X3NjZF9zc24oc3RydWN0IGl3bF9tdm0gKm12bSwKIAlyZXR1cm4gdmFsICZhbXA7IDB4RkZGOwogfQogCiYjNDM7c3RhdGljIGlubGluZSBzaXplX3QgaXdsX212bV90eF9yZXNwX21pbl9sZW4oc3RydWN0IGl3bF9tdm0gKm12bSwKJiM0MzsJCQkJCSAgICAgc3RydWN0IGl3bF90eF9yZXNwICp0eF9yZXNwKQomIzQzO3sKJiM0MzsJc3RydWN0IGFnZ190eF9zdGF0dXMgKmFnZ19zdGF0dXMgPQomIzQzOwkJaXdsX212bV9nZXRfYWdnX3N0YXR1cyhtdm0sIHR4X3Jlc3ApOwomIzQzOwomIzQzOwkvKiBUaGUgYWdncmVnYXRlIHJlc3BvbnNlIGVuZHMgd2l0aCBhIHRyYWlsaW5nIFNDRCBTU04gX19sZTMyIHdvcmQuICovCiYjNDM7CXJldHVybiAodTggKikoYWdnX3N0YXR1cyAmIzQzOyB0eF9yZXNwLSZndDtmcmFtZV9jb3VudCkgLSAodTggKil0eF9yZXNwICYjNDM7CiYjNDM7CQlzaXplb2YoX19sZTMyKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBpd2xfbXZtX3J4X3R4X2NtZF9zaW5nbGUoc3RydWN0IGl3bF9tdm0gKm12bSwKIAkJCQkgICAgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QpCiB7CkBAIC0xODQ3LDYgJiM0MzsxODU4LDkgQEAgc3RhdGljIHZvaWQgaXdsX212bV9yeF90eF9jbWRfYWdnKHN0cnVjdCBpd2xfbXZtICptdm0sCiAJaW50IHF1ZXVlID0gU0VRX1RPX1FVRVVFKHNlcXVlbmNlKTsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhOwogCiYjNDM7CWlmIChXQVJOX09OX09OQ0UoaXdsX212bV9oYXNfbmV3X3R4X2FwaShtdm0pKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlpZiAoV0FSTl9PTl9PTkNFKHF1ZXVlICZsdDsgSVdMX01WTV9EUUFfTUlOX0RBVEFfUVVFVUUgJmFtcDsmYW1wOwogCQkJIChxdWV1ZSAhPSBJV0xfTVZNX0RRQV9CU1NfQ0xJRU5UX1FVRVVFKSkpCiAJCXJldHVybjsKQEAgLTE4ODEsNiAmIzQzOzE4OTUsMjYgQEAgdm9pZCBpd2xfbXZtX3J4X3R4X2NtZChzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4YikKIHsKIAlzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTsKIAlzdHJ1Y3QgaXdsX3R4X3Jlc3AgKnR4X3Jlc3AgPSAodm9pZCAqKXBrdC0mZ3Q7ZGF0YTsKJiM0MzsJc2l6ZV90IG1pbl9sZW47CiYjNDM7CiYjNDM7CWlmIChJV0xfRldfQ0hFQ0sobXZtLCAhdHhfcmVzcC0mZ3Q7ZnJhbWVfY291bnQsCiYjNDM7CQkJICYjMzQ7aW52YWxpZCBUWF9DTUQgZnJhbWVfY291bnQgJXVcbiYjMzQ7LAomIzQzOwkJCSB0eF9yZXNwLSZndDtmcmFtZV9jb3VudCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWlmIChJV0xfRldfQ0hFQ0sobXZtLAomIzQzOwkJCSBpd2xfbXZtX2hhc19uZXdfdHhfYXBpKG12bSkgJmFtcDsmYW1wOwomIzQzOwkJCSB0eF9yZXNwLSZndDtmcmFtZV9jb3VudCAhPSAxLAomIzQzOwkJCSAmIzM0O2ludmFsaWQgVFhfQ01EIGZyYW1lX2NvdW50ICV1IGZvciBuZXcgVFggQVBJXG4mIzM0OywKJiM0MzsJCQkgdHhfcmVzcC0mZ3Q7ZnJhbWVfY291bnQpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltaW5fbGVuID0gaXdsX212bV90eF9yZXNwX21pbl9sZW4obXZtLCB0eF9yZXNwKTsKJiM0MzsJaWYgKElXTF9GV19DSEVDSyhtdm0sIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSAmbHQ7IG1pbl9sZW4sCiYjNDM7CQkJICYjMzQ7aW52YWxpZCBUWF9DTUQgbGVuICV1IChmcmFtZV9jb3VudCAldSwgbWluICV6dSlcbiYjMzQ7LAomIzQzOwkJCSBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCksIHR4X3Jlc3AtJmd0O2ZyYW1lX2NvdW50LAomIzQzOwkJCSBtaW5fbGVuKSkKJiM0MzsJCXJldHVybjsKIAogCWlmICh0eF9yZXNwLSZndDtmcmFtZV9jb3VudCA9PSAxKQogCQlpd2xfbXZtX3J4X3R4X2NtZF9zaW5nbGUobXZtLCBwa3QpOwpAQCAtMjEwMCw4ICYjNDM7MjEzNCwxNCBAQCB2b2lkIGl3bF9tdm1fcnhfYmFfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpCiAJCQlpZiAodGlkID09IElXTF9NR01UX1RJRCkKIAkJCQl0aWQgPSBJV0xfTUFYX1RJRF9DT1VOVDsKIAomIzQzOwkJCWlmIChJV0xfRldfQ0hFQ0sobXZtLCB0aWQgJmd0Oz0KJiM0MzsJCQkJCSBBUlJBWV9TSVpFKG12bXN0YS0mZ3Q7dGlkX2RhdGEpLAomIzQzOwkJCQkJICYjMzQ7aW52YWxpZCBUSUQgJWQgaW4gY29tcHJlc3NlZCBCQVxuJiMzNDssCiYjNDM7CQkJCQkgdGlkKSkKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CiAJCQlpZiAobXZtc3RhKQotCQkJCW12bXN0YS0mZ3Q7dGlkX2RhdGFbaV0ubHFfY29sb3IgPSBscV9jb2xvcjsKJiM0MzsJCQkJbXZtc3RhLSZndDt0aWRfZGF0YVt0aWRdLmxxX2NvbG9yID0gbHFfY29sb3I7CiAKIAkJCWl3bF9tdm1fdHhfcmVjbGFpbShtdm0sIHN0YV9pZCwgdGlkLAogCQkJCQkgICAoaW50KShsZTE2X3RvX2NwdShiYV90ZmQtJmd0O3FfbnVtKSksCkBAIC0yMTIxLDYgJiM0MzsyMTYxLDkgQEAgdm9pZCBpd2xfbXZtX3J4X2JhX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKQogCWJhX25vdGlmID0gKHZvaWQgKilwa3QtJmd0O2RhdGE7CiAJc3RhX2lkID0gYmFfbm90aWYtJmd0O3N0YV9pZDsKIAl0aWQgPSBiYV9ub3RpZi0mZ3Q7dGlkOwomIzQzOwlpZiAoSVdMX0ZXX0NIRUNLKG12bSwgdGlkICZndDs9IEFSUkFZX1NJWkUobXZtc3RhLSZndDt0aWRfZGF0YSksCiYjNDM7CQkJICYjMzQ7aW52YWxpZCBUSUQgJWQgaW4gQkEgbm90aWZcbiYjMzQ7LCB0aWQpKQomIzQzOwkJcmV0dXJuOwogCS8qICYjMzQ7ZmxvdyYjMzQ7IGNvcnJlc3BvbmRzIHRvIFR4IHF1ZXVlICovCiAJdHhxID0gbGUxNl90b19jcHUoYmFfbm90aWYtJmd0O3NjZF9mbG93KTsKIAkvKiAmIzM0O3NzbiYjMzQ7IGlzIHN0YXJ0IG9mIGJsb2NrLWFjayBUeCB3aW5kb3csIGNvcnJlc3BvbmRzIHRvIGluZGV4CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLmMKaW5kZXggZDVlYjg5NTE0NGVmYzkuLjdmODg2MjAwZDY5MzMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby5jCkBAIC0xLDcgJiM0MzsxLDcgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJICi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNSBJbnRlbCBDb3Jwb3JhdGlvbgomIzQzOyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI2IEludGVsIENvcnBvcmF0aW9uCiAgKi8KICNpbmNsdWRlICYjMzQ7aXdsLXRyYW5zLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtpd2wtZmguaCYjMzQ7CkBAIC05OSw2ICYjNDM7OTksMTEgQEAgaW50IGl3bF9wY2llX2luaXRfZndfc2VjKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLAogCS8qIGFkZCAyIGR1ZSB0byBzZXBhcmF0b3JzICovCiAJcGFnaW5nX2NudCA9IGl3bF9wY2llX2dldF9udW1fc2VjdGlvbnMoZncsIGxtYWNfY250ICYjNDM7IHVtYWNfY250ICYjNDM7IDIpOwogCiYjNDM7CWlmIChXQVJOX09OKGxtYWNfY250ICZndDsgQVJSQVlfU0laRShjdHh0X2RyYW0tJmd0O2xtYWNfaW1nKSB8fAomIzQzOwkJICAgIHVtYWNfY250ICZndDsgQVJSQVlfU0laRShjdHh0X2RyYW0tJmd0O3VtYWNfaW1nKSB8fAomIzQzOwkJICAgIHBhZ2luZ19jbnQgJmd0OyBBUlJBWV9TSVpFKGN0eHRfZHJhbS0mZ3Q7dmlydHVhbF9pbWcpKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCWRyYW0tJmd0O2Z3ID0ga3phbGxvY19vYmpzKCpkcmFtLSZndDtmdywgdW1hY19jbnQgJiM0MzsgbG1hY19jbnQpOwogCWlmICghZHJhbS0mZ3Q7ZncpCiAJCXJldHVybiAtRU5PTUVNOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDYxNgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBPcHBvcnR1bml0aWVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGZvciB0aGUgYGl3bHdpZmlgIGRyaXZlciwgd2hpY2ggbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGNvcmUgY29tcG9uZW50IG9mIExpbnV4IGtlcm5lbCB3aXJlbGVzcyBuZXR3b3JraW5nLCBzcGVjaWZpY2FsbHkgZm9yIEludGVsJiMzOTtzIFdpLUZpIGFkYXB0ZXJzLiBUaGUgc2hlZXIgbnVtYmVyIG9mIGZpbGVzIHRvdWNoZWQgaXMgdGhlIGZpcnN0IGluZGljYXRvciB0aGF0IHRoaXMgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UsIGltcGFjdGluZyBhIHdpZGUgcmFuZ2Ugb2YgZnVuY3Rpb25hbGl0aWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGdpdmVuIGl0cyBjbG9zZSBpbnRlcmFjdGlvbiB3aXRoIGJvdGggaGFyZHdhcmUgYW5kIGZpcm13YXJlLgoKTG9va2luZyBhdCB0aGUgZmlsZXMsIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGV2ZXJ5dGhpbmcgZnJvbSBSRiBjb25maWd1cmF0aW9uIChgcmYtcGUuY2ApLCBOVk0gKG5vbi12b2xhdGlsZSBtZW1vcnkpIHBhcnNpbmcgYW5kIGhhbmRsaW5nIChgbnZtLXJlZy5oYCwgYHBudm0uY2AsIGBpd2wtbnZtLXBhcnNlLmNgLCBhbmQgc28gb24pLCByZWd1bGF0b3J5IGRvbWFpbiBoYW5kbGluZyAoYHJlZ3VsYXRvcnkuY2ApLCBzaGFyZWQgbWVtb3J5IG1hbmFnZW1lbnQgKGBzbWVtLmNgKSwgTXVsdGljYXN0L01WTSBhbmQgVFgvUlggZGF0YSBwcm9jZXNzaW5nIChgdHguY2AsIGBkMy5jYCwgYGZ0bS1pbml0aWF0b3IuY2AsIGBmdy5jYCwgYHB0cC5jYCwgYHR4LmNgLCBgY3R4dC1pbmZvLmNgKSwgYW5kIGNvcmUgZHJpdmVyIGNvbmZpZ3VyYXRpb24gKGBpd2wtY29uZmlnLmhgKS4gVGhpcyB0b3VjaGVzIGEgbG90IG9mIHN1cmZhY2UgYXJlYSEKClRoZSBjaGFuZ2VzIHRoZW1zZWx2ZXMgYXJlIGludGVyZXN0aW5nLiBUaGUgYWRkaXRpb24gb2YgYHVuaWk5X3N1cHBvcnRlZGAgaW4gdGhlIFJGIGFuZCBNQUMgY29uZmlndXJhdGlvbnMgaGludHMgYXQgbmV3IGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvciBzdXBwb3J0IGZvciB1cGRhdGVkIHN0YW5kYXJkcy4gTmV3IGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gTlZNIGRhdGEgc3RydWN0dXJlcyAoYElXTF9OVU1fQ0hBTk5FTFNfVjNgLCBgaXdsX252bV9nZXRfaW5mb19yc3BfdjRgIGV0Yy4pIHN1Z2dlc3QgZXhwYW5kZWQgTlZNIGRhdGEgaGFuZGxpbmcgYW5kIHBvdGVudGlhbGx5IG5ldyByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbi4KCkNydWNpYWxseSwgdGhlIG1lbnRpb25zIG9mIGFkZGVkIGJvdW5kcyBjaGVja3MgYW5kIHBheWxvYWQgbGVuZ3RoIGNoZWNrcyBmb3IgZmlybXdhcmUgY29tbXVuaWNhdGlvbnMgYXJlIGh1Z2UuIFRoaXMgaXMgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB0aGF0IGZ1enplcnMgbG92ZSB0byB0YXJnZXQuIFRoZXNlIGNoZWNrcyByZXByZXNlbnQgYXJlYXMgd2hlcmUgaW5wdXQgdmFsaWRhdGlvbiBjb3VsZCBiZSBpbXByb3ZlZCwgaW5jcmVhc2luZyB0aGUgcG90ZW50aWFsIGZvciBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcyBvciBvdGhlciBleHBsb2l0YWJsZSBjb25kaXRpb25zLiBUaGUgYnVnIGZpeGVzLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgcmVsYXRlZCB0byBtZW1vcnkgbGVha3MgYW5kIGluY29ycmVjdCBkYXRhIGNvcGllcyAoIGBpd2xfYWRkX21jY190b190YXNfYmxvY2tfbGlzdGAsIGBpd2xfbXZtX2dldF9jcm9zc3RpbWVzdGFtcF9md2AsIGBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nYCwgYGl3bF9tdm1fcnhfdHhfY21kYCwgYGl3bF9tdm1fcnhfYmFfbm90aWZgKSwgaGlnaGxpZ2h0IGFyZWFzIHdoZXJlIHN1YnRsZSBwcm9ncmFtbWluZyBlcnJvcnMgY291bGQgbGVhZCB0byBzZXJpb3VzIGNvbnNlcXVlbmNlcy4gVGhlc2UgYXJlIGdyZWF0IHRhcmdldHMgdG8gZXhwbG9pdC4KClNvLCB3aGVyZSBkbyB3ZSBmb2N1cyB0aGUgZnV6emVyPyBMZXQmIzM5O3MgY29tcGlsZSBhIGxpc3Qgb2YgaW50ZXJlc3RpbmcgZnVuY3Rpb25zIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IHRoZSBwYXRjaDogYGl3bF9wbnZtX2NvbXBsZXRlX2ZuYCwgYGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0YCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwYCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtYCwgYGl3bF9pbml0X2NoYW5uZWxfbWFwYCwgYGl3bF9wYXJzZV9tZWlfbnZtX2RhdGFgLCBgaXdsX3BhcnNlX252bV9kYXRhYCwgYGl3bF9wYXJzZV9udm1fbWNjX2luZm9gLCBgaXdsX2dldF9udm1gLCBgaXdsX21sZF9oYW5kbGVfdHhfcmVzcF9ub3RpZmAsIGBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29uc2AsIGBpd2xfbXZtX25ldGRldGVjdF9xdWVyeV9yZXN1bHRzYCwgYGl3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0YCwgYGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyYCwgYGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdgLCBgaXdsX212bV9mdG1fcHV0X3RhcmdldF92N2AsIGBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3YxMGAsIGBpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGVgLCBgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZndgLCBgaXdsX212bV9yeF90eF9jbWRfYWdnYCwgYGl3bF9tdm1fcnhfdHhfY21kYCwgYGl3bF9tdm1fcnhfYmFfbm90aWZgLCBgaXdsX3BjaWVfaW5pdF9md19zZWNgLgoKQmVmb3JlIHdlIGV2ZW4gc3RhcnQgZnV6emluZywgbGV0JiMzOTtzIHZlcmlmeSB0aGF0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQuIFdlJiMzOTtyZSBsb29raW5nIGF0IGBJV0xXSUZJYCwgYElXTE1WTWAgZm9yIHN1cmUuIFBvdGVudGlhbGx5IGBJV0xNRUlgIHRvby4gVGhlIGZ1enppbmcgc2V0dXAgd2lsbCBuZWVkIHRvIGhhdmUgdGhlc2UgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMV0lGSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz00Nz1pZiBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbiYjMzk7dCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFwmIzM0O0RlYnVnZ2luZyBPcHRpb25zXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzMTpjb25maWcgSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDAwCgkJCQkJCQlvdXRwdXQ6IDgyCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgSW50ZWwgV2lyZWxlc3MgRHJpdmVycyYjMzk7IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGVzZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXJzIGFyZSBjb25maWd1cmVkLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNdWx0aS1WaXJ0dWFsIE1hY2hpbmUgKGBJV0xNVk1gKSBhbmQgdGhlIE1FSSAoTWFuYWdlbWVudCBFbmdpbmUgSW50ZXJmYWNlKSBmZWF0dXJlcyAoYElXTE1FSWApLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIHRoZXkmIzM5O3JlIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgdGhlc2Ugc29ydHMgb2YgY29uZmlndXJhdGlvbnMuIEkgc2hvdWxkIGZpbmQgYElXTE1WTWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL0tjb25maWdgIGFuZCBgSVdMTUVJYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvS2NvbmZpZ2AuIExldCBtZSBnbyBjaGVjayB0aG9zZSBmaWxlcyBhbmQgY29uZmlybSBteSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBoZWxwIG1lIHRvIGNvbnRleHR1YWxpemUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBwcm9jZWVkIGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMTVZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMTUVJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc3MzQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBJbnRlbCBXaXJlbGVzcyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYGl3bHdpZmlgIG1vZHVsZXMuIFRoZSBlYXNpZXN0IHdheSB0byBnZXQgYW4gaW5pdGlhbCBvdmVydmlldyBpcyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcgZmlsZXMuIEkmIzM5O20gZ29pbmcgdG8gc2VhcmNoIGZvciBzb21ldGhpbmcgc2ltcGxlIGFuZCB0YXJnZXRlZCB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBzZWN0aW9ucyBxdWlja2x5LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGdlbmVyYWwgc2VhcmNoIGZvciBgY29uZmlnIElXTGAsIGZvY3VzaW5nIG9uIHRob3NlIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLiBJJiMzOTtsbCBzZWFyY2ggYm90aCB0aGUgdG9wLWxldmVsIGBpd2x3aWZpYCBkaXJlY3RvcnkmIzM5O3MgYEtjb25maWdgIGFuZCwgc2luY2UgaXQgaGFzIGdyb3duLCBhbHNvIHRoZSBgbXZtYCBzdWItZGlyZWN0b3J5JiMzOTtzIGBLY29uZmlnYCB0byBjb3ZlciBhbGwgb2YgdGhlIG1vZHVsZXMgdGhhdCBtaWdodCBiZSBpbXBhY3RlZCBieSBteSBjb25maWd1cmF0aW9uIG9yIHRlc3RpbmcuIEhvcGVmdWxseSwgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgYmFzZSB0byBzdGFydCB3aXRoLCByZXZlYWxpbmcgdGhlIG1haW4ga25vYnMgSSBjYW4gdHdlYWsgYW5kIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVtLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byBidWlsZCBhIG1vcmUgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgd2hvbGUgc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OTpjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo2Njpjb25maWcgSVdMRFZNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjctXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIERWTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjc0OmNvbmZpZyBJV0xNVk1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTVZNIEZpcm13YXJlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6ODQ6Y29uZmlnIElXTE1MRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNTEQgRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbiYjMzk7dCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFwmIzM0O0RlYnVnZ2luZyBPcHRpb25zXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzMTpjb25maWcgSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xNTg9ZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTYwOmNvbmZpZyBJV0xNRUlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNjEtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBNYW5hZ2VtZW50IEVuZ2luZSBjb21tdW5pY2F0aW9uIG92ZXIgV0xBTlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTAwMgoJCQkJCQkJb3V0cHV0OiAyNjgKCQkJCQkJCXRob3VnaHRzOiAyMTMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBJV2x3aWZpIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLCBgaXdsd2lmaWAuIFRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcHBlYXIgdG8gYmUgYElXTFdJRklgLCBgSVdMTVZNYCwgYW5kIGBJV0xNTERgLiAgVGhlIHBhdGNoIHRvdWNoZXMgZmlsZXMgaW4gYG12bS9gLCBgbWxkL2AsIGBmdy9gLCBgcGNpZS9gLCBhbmQgYGNmZy9gLCBzbyBpdCYjMzk7cyBhIGZhaXJseSB3aWRlc3ByZWFkIG1vZGlmaWNhdGlvbi4gIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBhZGRlZCBvciBtb2RpZmllZCBhbmQgc2VlIGlmIHRoZXkmIzM5O3JlIHdvcnRoIGZ1enppbmcuCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHRoZXNlIGZ1bmN0aW9ucyBhcyBwb3RlbnRpYWxseSBpbnRlcmVzdGluZzogYGl3bF9wbnZtX2NvbXBsZXRlX2ZuYCwgYGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0YCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwYCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtYCwgYGl3bF9pbml0X2NoYW5uZWxfbWFwYCwgYGl3bF9wYXJzZV9tZWlfbnZtX2RhdGFgLCBgaXdsX3BhcnNlX252bV9kYXRhYCwgYGl3bF9wYXJzZV9udm1fbWNjX2luZm9gLCBgaXdsX2dldF9udm1gLCBgaXdsX21sZF9oYW5kbGVfdHhfcmVzcF9ub3RpZmAsIGBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29uc2AsIGBpd2xfbXZtX25ldGRldGVjdF9xdWVyeV9yZXN1bHRzYCwgYGl3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0YCwgYGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyYCwgYGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdgLCBgaXdsX212bV9mdG1fcHV0X3RhcmdldF92N2AsIGBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3YxMGAsIGBpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGVgLCBgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZndgLCBgaXdsX212bV9yeF90eF9jbWRgLCBgaXdsX212bV9yeF90eF9jbWRfYWdnYCwgYGl3bF9tdm1fcnhfYmFfbm90aWZgLCBhbmQgYGl3bF9wY2llX2luaXRfZndfc2VjYC4KCk5vdywgbGV0JiMzOTtzIGZpbHRlciB0aGUgbm9pc2UuIGBpd2xfbXZtX3J4X3R4X2NtZGAsIGBpd2xfbXZtX3J4X3R4X2NtZF9hZ2dgLCBhbmQgYGl3bF9tdm1fcnhfYmFfbm90aWZgIGFyZSBjbGVhcmx5IGluIHRoZSBob3QtcGF0aCBSWC9UWC4gIGBpd2xfbWxkX2hhbmRsZV90eF9yZXNwX25vdGlmYCBhbHNvIHNlZW1zIGhpZ2gtZnJlcXVlbmN5LiBgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnNgLCBgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3RgLCBgaXdsX212bV9uZXRkZXRlY3RfcXVlcnlfcmVzdWx0c2AsIGFuZCBgaXdsX212bV9uZF9tYXRjaF9pbmZvX2hhbmRsZXJgIGFsbCBkZWFsIHdpdGggV29XTEFOL05ldGRldGVjdC4gYGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdgIGFuZCBgaXdsX212bV9mdG1fcHV0X3RhcmdldF92N2AsIGBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3YxMGAgcmVsYXRlIHRvIEZUTSAoRmluZSBUaW1pbmcgTWVhc3VyZW1lbnQpLCBgaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlYCBpcyBTQVIsIGFuZCBgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZndgIGRlYWxzIHdpdGggUFRQLiAgYGl3bF9wY2llX2luaXRfZndfc2VjYCBhcHBlYXJzIHRvIGJlIGZpcm13YXJlIGluaXRpYWxpemF0aW9uLCBgaXdsX3Budm1fY29tcGxldGVfZm5gIGhhbmRsZXMgUE5WTSBpbml0aWFsaXphdGlvbiwgYW5kIGBpd2xfcGFyc2Vfc2hhcmVkX21lbV8yMjAwMGAsIGBpd2xfcGFyc2Vfc2hhcmVkX21lbWAsIGBpd2xfaW5pdF9jaGFubmVsX21hcGAsIGBpd2xfcGFyc2VfbnZtX2RhdGFgLCBhbmQgYGl3bF9nZXRfbnZtYCBhcHBlYXIgdG8gcmVsYXRlIHRvIE5WTSBwYXJzaW5nIGFuZCBmaXJtd2FyZSBsb2FkaW5nLgoKSSBuZWVkIHRvIGZvY3VzIG9uIGZ1bmN0aW9ucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgcmVhY2hlZCB0aHJvdWdoIGRpZmZlcmVudCBjb2RlIHBhdGhzLCBhbmQgYXJlIG5vdCBqdXN0IGhpZ2gtZnJlcXVlbmN5IHBhY2tldCBwcm9jZXNzaW5nLiAgVGhlcmVmb3JlLCBJJiMzOTttIGV4Y2x1ZGluZyB0aGUgaG90LXBhdGggZnVuY3Rpb25zLgoKU28sIEkmIzM5O2xsIGluaXRpYWxseSBpbmNsdWRlOiBgaXdsX3Budm1fY29tcGxldGVfZm5gLCBgaXdsX3BhcnNlX3NoYXJlZF9tZW1fMjIwMDBgLCBgaXdsX3BhcnNlX3NoYXJlZF9tZW1gLCBgaXdsX2dldF9udm1gLCBgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnNgLCBgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3RgLCBgaXdsX212bV9uZF9tYXRjaF9pbmZvX2hhbmRsZXJgLCBgaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZ2AsIGBpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGVgLCBgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZndgLCBhbmQgYGl3bF9wY2llX2luaXRfZndfc2VjYCBhcyB0aGUgZm9jdXMKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVdMV0lGSSYjMzQ7LAogICAgJiMzNDtJV0xNVk0mIzM0OywKICAgICYjMzQ7SVdMTUxEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXdsX3Budm1fY29tcGxldGVfZm4mIzM0OywKICAgICYjMzQ7aXdsX3BhcnNlX3NoYXJlZF9tZW1fMjIwMDAmIzM0OywKICAgICYjMzQ7aXdsX3BhcnNlX3NoYXJlZF9tZW0mIzM0OywKICAgICYjMzQ7aXdsX2dldF9udm0mIzM0OywKICAgICYjMzQ7aXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnMmIzM0OywKICAgICYjMzQ7aXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3QmIzM0OywKICAgICYjMzQ7aXdsX212bV9uZF9tYXRjaF9pbmZvX2hhbmRsZXImIzM0OywKICAgICYjMzQ7aXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyYjMzQ7LAogICAgJiMzNDtpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGUmIzM0OywKICAgICYjMzQ7aXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZncmIzM0OywKICAgICYjMzQ7aXdsX3BjaWVfaW5pdF9md19zZWMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBpd2x3aWZpIGRyaXZlciwgaW5jbHVkaW5nIGFkZGluZyBzdXBwb3J0IGZvciBVTklJLTkgY2hhbm5lbHMsIGFkZGluZyBib3VuZHMgY2hlY2tzIGZvciBmaXJtd2FyZSBub3RpZmljYXRpb25zIGFuZCByZXNwb25zZXMsIGZpeGluZyBtZW1vcnkgbGVha3MsIGFuZCBtb2RpZnlpbmcgTlZNIHBhcnNpbmcgbG9naWMuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBkcml2ZXIgYW5kIGFyZSB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7LAogICAgJiMzNDtJV0xNTEQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfcG52bV9jb21wbGV0ZV9mbiYjMzQ7LAogICAgJiMzNDtpd2xfcGFyc2Vfc2hhcmVkX21lbV8yMjAwMCYjMzQ7LAogICAgJiMzNDtpd2xfcGFyc2Vfc2hhcmVkX21lbSYjMzQ7LAogICAgJiMzNDtpd2xfZ2V0X252bSYjMzQ7LAogICAgJiMzNDtpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29ucyYjMzQ7LAogICAgJiMzNDtpd2xfbXZtX3dvd2xhbl9zdG9yZV93YWtlX3BrdCYjMzQ7LAogICAgJiMzNDtpd2xfbXZtX25kX21hdGNoX2luZm9faGFuZGxlciYjMzQ7LAogICAgJiMzNDtpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fZ2V0X3Nhcl9nZW9fcHJvZmlsZSYjMzQ7LAogICAgJiMzNDtpd2xfbXZtX2dldF9jcm9zc3RpbWVzdGFtcF9mdyYjMzQ7LAogICAgJiMzNDtpd2xfcGNpZV9pbml0X2Z3X3NlYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGl3bHdpZmkgZHJpdmVyLCBpbmNsdWRpbmcgYWRkaW5nIHN1cHBvcnQgZm9yIFVOSUktOSBjaGFubmVscywgYWRkaW5nIGJvdW5kcyBjaGVja3MgZm9yIGZpcm13YXJlIG5vdGlmaWNhdGlvbnMgYW5kIHJlc3BvbnNlcywgZml4aW5nIG1lbW9yeSBsZWFrcywgYW5kIG1vZGlmeWluZyBOVk0gcGFyc2luZyBsb2dpYy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgbG9naWMgb2YgdGhlIGRyaXZlciBhbmQgYXJlIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoxOTo0Ny4yMjg2MzA5NDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzk4NDA0MDU4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJV0xXSUZJXCIsXG4gICAgXCJJV0xNVk1cIixcbiAgICBcIklXTE1MRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF9wbnZtX2NvbXBsZXRlX2ZuXCIsXG4gICAgXCJpd2xfcGFyc2Vfc2hhcmVkX21lbV8yMjAwMFwiLFxuICAgIFwiaXdsX3BhcnNlX3NoYXJlZF9tZW1cIixcbiAgICBcIml3bF9nZXRfbnZtXCIsXG4gICAgXCJpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29uc1wiLFxuICAgIFwiaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3RcIixcbiAgICBcIml3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyXCIsXG4gICAgXCJpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nXCIsXG4gICAgXCJpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGVcIixcbiAgICBcIml3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3XCIsXG4gICAgXCJpd2xfcGNpZV9pbml0X2Z3X3NlY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgaXdsd2lmaSBkcml2ZXIsIGluY2x1ZGluZyBhZGRpbmcgc3VwcG9ydCBmb3IgVU5JSS05IGNoYW5uZWxzLCBhZGRpbmcgYm91bmRzIGNoZWNrcyBmb3IgZmlybXdhcmUgbm90aWZpY2F0aW9ucyBhbmQgcmVzcG9uc2VzLCBmaXhpbmcgbWVtb3J5IGxlYWtzLCBhbmQgbW9kaWZ5aW5nIE5WTSBwYXJzaW5nIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBsb2dpYyBvZiB0aGUgZHJpdmVyIGFuZCBhcmUgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6MTk6NDcuMjI4NjM3NjU1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTYyODQxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlMzRjOWU1OGQyYjI0ZDU3ZmI5MzEzMWRkZTc2ZjJhNjQwNjA0ODU4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDE2IDAyOjE5OjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL3JmLXBlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jXFxuaW5kZXggN2EwNGNiMTIwYjFiMjMuLjYwODBmNWYyM2U2OTg3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL3JmLXBlLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gXFx0Lm5vbl9zaGFyZWRfYW50ID0gQU5UX0IsXFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHQudmh0X211X21pbW9fc3VwcG9ydGVkID0gdHJ1ZSxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdC51aGJfc3VwcG9ydGVkID0gdHJ1ZSxcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdC51bmlpOV9zdXBwb3J0ZWQgPSB0cnVlLFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0LmVodF9zdXBwb3J0ZWQgPSB0cnVlLFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0LnVocl9zdXBwb3J0ZWQgPSB0cnVlLFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0Lm51bV9yYmRzID0gSVdMX05VTV9SQkRTX0VIVCxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL252bS1yZWcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL252bS1yZWcuaFxcbmluZGV4IDQ0M2E5YTQxNjMyNTIzLi4wMTcyYzA3NDdhNDdjOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmhcXG5AQCAtMjA1LDYgKzIwNSw3IEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3BoeSB7XFxuIFxcbiAjZGVmaW5lIElXTF9OVU1fQ0hBTk5FTFNfVjFcXHQ1MVxcbiAjZGVmaW5lIElXTF9OVU1fQ0hBTk5FTFNfVjJcXHQxMTBcXG4rI2RlZmluZSBJV0xfTlVNX0NIQU5ORUxTX1YzXFx0MTE1XFxuIFxcbiAvKipcXG4gICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MSAtIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb25cXG5AQCAtMjE5LDEyICsyMjAsMTIgQEAgc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MSB7XFxuIH0gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JFR1VMQVRPUllfU19WRVJfMSAqL1xcbiBcXG4gLyoqXFxuLSAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXFxuKyAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjIgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXFxuICAqIEBsYXJfZW5hYmxlZDogaXMgTEFSIGVuYWJsZWRcXG4gICogQG5fY2hhbm5lbHM6IG51bWJlciBvZiB2YWxpZCBjaGFubmVscyBpbiB0aGUgYXJyYXlcXG4gICogQGNoYW5uZWxfcHJvZmlsZTogcmVndWxhdG9yeSBkYXRhIG9mIHRoaXMgY2hhbm5lbFxcbiAgKi9cXG4tc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSB7XFxuK3N0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjIge1xcbiBcXHRfX2xlMzIgbGFyX2VuYWJsZWQ7XFxuIFxcdF9fbGUzMiBuX2NoYW5uZWxzO1xcbiBcXHRfX2xlMzIgY2hhbm5lbF9wcm9maWxlW0lXTF9OVU1fQ0hBTk5FTFNfVjJdO1xcbkBAIC0yNDQsNiArMjQ1LDMyIEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcF92MyB7XFxuIFxcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjEgcmVndWxhdG9yeTtcXG4gfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl8zICovXFxuIFxcbisvKipcXG4rICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3Y0IC0gcmVzcG9uc2UgdG8gZ2V0IE5WTSBkYXRhXFxuKyAqIEBnZW5lcmFsOiBnZW5lcmFsIE5WTSBkYXRhXFxuKyAqIEBtYWNfc2t1OiBkYXRhIHJlbGF0aW5nIHRvIE1BQyBza3VcXG4rICogQHBoeV9za3U6IGRhdGEgcmVsYXRpbmcgdG8gUEhZIHNrdVxcbisgKiBAcmVndWxhdG9yeTogcmVndWxhdG9yeSBkYXRhXFxuKyAqL1xcbitzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjQge1xcbitcXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19nZW5lcmFsIGdlbmVyYWw7XFxuK1xcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3NrdSBtYWNfc2t1O1xcbitcXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19waHkgcGh5X3NrdTtcXG4rXFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MiByZWd1bGF0b3J5O1xcbit9IF9fcGFja2VkOyAvKiBSRUdVTEFUT1JZX05WTV9HRVRfSU5GT19SU1BfQVBJX1NfVkVSXzQgKi9cXG4rXFxuKy8qKlxcbisgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5IC0gcmVndWxhdG9yeSBpbmZvcm1hdGlvblxcbisgKiBAbGFyX2VuYWJsZWQ6IGlzIExBUiBlbmFibGVkXFxuKyAqIEBuX2NoYW5uZWxzOiBudW1iZXIgb2YgdmFsaWQgY2hhbm5lbHMgaW4gdGhlIGFycmF5XFxuKyAqIEBjaGFubmVsX3Byb2ZpbGU6IHJlZ3VsYXRvcnkgZGF0YSBvZiB0aGlzIGNoYW5uZWxcXG4rICovXFxuK3N0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkge1xcbitcXHRfX2xlMzIgbGFyX2VuYWJsZWQ7XFxuK1xcdF9fbGUzMiBuX2NoYW5uZWxzO1xcbitcXHRfX2xlMzIgY2hhbm5lbF9wcm9maWxlW0lXTF9OVU1fQ0hBTk5FTFNfVjNdO1xcbit9IF9fcGFja2VkOyAvKiBSRUdVTEFUT1JZX05WTV9HRVRfSU5GT19SRUdVTEFUT1JZX1NfVkVSXzMgKi9cXG4rXFxuIC8qKlxcbiAgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3AgLSByZXNwb25zZSB0byBnZXQgTlZNIGRhdGFcXG4gICogQGdlbmVyYWw6IGdlbmVyYWwgTlZNIGRhdGFcXG5AQCAtMjU2LDcgKzI4Myw3IEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcCB7XFxuIFxcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3NrdSBtYWNfc2t1O1xcbiBcXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19waHkgcGh5X3NrdTtcXG4gXFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSByZWd1bGF0b3J5O1xcbi19IF9fcGFja2VkOyAvKiBSRUdVTEFUT1JZX05WTV9HRVRfSU5GT19SU1BfQVBJX1NfVkVSXzQgKi9cXG4rfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl81ICovXFxuIFxcbiAvKipcXG4gICogc3RydWN0IGl3bF9udm1fYWNjZXNzX2NvbXBsZXRlX2NtZCAtIE5WTV9BQ0NFU1MgY29tbWFuZHMgYXJlIGNvbXBsZXRlZFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmhcXG5pbmRleCAwOGY0Y2MzZWExYzMwNC4uZWU3ODM3MTA4MmIwOTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oXFxuQEAgLTEsNiArMSw2IEBAXFxuIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZSAqL1xcbiAvKlxcbi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgMjAxOC0yMDI1IEludGVsIENvcnBvcmF0aW9uXFxuKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cXG4gICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgSW50ZWwgTW9iaWxlIENvbW11bmljYXRpb25zIEdtYkhcXG4gICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgSW50ZWwgRGV1dHNjaGxhbmQgR21iSFxcbiAgKi9cXG5AQCAtMTMxOSw3ICsxMzE5LDcgQEAgc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbyB7XFxuIFxcdHU4IHJlc3VtZV93aGlsZV9zY2FubmluZztcXG4gXFx0dTggc2VsZl9yZWNvdmVyeTtcXG4gXFx0X19sZTE2IHJlc2VydmVkO1xcbi1cXHRzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlX21hdGNoIG1hdGNoZXNbXTtcXG4rXFx0c3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZV9tYXRjaCBtYXRjaGVzW0lXTF9TQ0FOX01BWF9QUk9GSUxFU19WMl07XFxuIH0gX19wYWNrZWQ7IC8qIFNDQU5fT0ZGTE9BRF9QUk9GSUxFU19RVUVSWV9SU1BfU19WRVJfMyBhbmRcXG4gXFx0ICAgICAqIFNDQU5fT0ZGTE9BRF9NQVRDSF9JTkZPX05PVElGSUNBVElPTl9TX1ZFUl8xXFxuIFxcdCAgICAgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xcbmluZGV4IGFmZmY4ZDUxY2E5NTBjLi5lYzBmZjU4YWIzMTJkNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jXFxuQEAgLTEsNiArMSw2IEBAXFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbiAvKlxcbi0gKiBDb3B5cmlnaHQoYykgMjAyMC0yMDI1IEludGVsIENvcnBvcmF0aW9uXFxuKyAqIENvcHlyaWdodChjKSAyMDIwLTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cXG4gICovXFxuIFxcbiAjaW5jbHVkZSBcXFwiaXdsLWRydi5oXFxcIlxcbkBAIC0xMiw2ICsxMiw3IEBAXFxuICNpbmNsdWRlIFxcXCJmdy9hcGkvYWxpdmUuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImZ3L3VlZmkuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImZ3L2ltZy5oXFxcIlxcbisjaW5jbHVkZSBcXFwiZncvZGJnLmhcXFwiXFxuIFxcbiAjZGVmaW5lIElXTF9QTlZNX1JFRFVDRURfQ0FQX0JJVCBCSVQoMjUpXFxuIFxcbkBAIC0yNiw2ICsyNywxMiBAQCBzdGF0aWMgYm9vbCBpd2xfcG52bV9jb21wbGV0ZV9mbihzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcXG4gXFx0c3RydWN0IGl3bF90cmFucyAqdHJhbnMgPSAoc3RydWN0IGl3bF90cmFucyAqKWRhdGE7XFxuIFxcdHN0cnVjdCBpd2xfcG52bV9pbml0X2NvbXBsZXRlX250ZnkgKnBudm1fbnRmID0gKHZvaWQgKilwa3QtXFx1MDAzZWRhdGE7XFxuIFxcbitcXHRpZiAoSVdMX0ZXX0NIRUNLKHRyYW5zLFxcbitcXHRcXHRcXHQgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFxcdTAwM2Mgc2l6ZW9mKCpwbnZtX250ZiksXFxuK1xcdFxcdFxcdCBcXFwiQmFkIG5vdGlmIGxlbjogJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkpKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuIFxcdElXTF9ERUJVR19GVyh0cmFucyxcXG4gXFx0XFx0ICAgICBcXFwiUE5WTSBjb21wbGV0ZSBub3RpZmljYXRpb24gcmVjZWl2ZWQgd2l0aCBzdGF0dXMgMHglMHhcXFxcblxcXCIsXFxuIFxcdFxcdCAgICAgbGUzMl90b19jcHUocG52bV9udGYtXFx1MDAzZXN0YXR1cykpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jXFxuaW5kZXggOGQ5ZmYzNmUzMGY1ZTMuLjFkNmQzOGVlNTViNDk5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmNcXG5AQCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgaXdsX2FkZF9tY2NfdG9fdGFzX2Jsb2NrX2xpc3QodTE2ICpsaXN0LCB1OCAqc2l6ZSwgdTE2IG1jYylcXG4gXFx0aWYgKCpzaXplIFxcdTAwM2U9IElXTF9XVEFTX0JMQUNLX0xJU1RfTUFYKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbi1cXHRsaXN0WypzaXplKytdID0gbWNjO1xcbitcXHRsaXN0Wygqc2l6ZSkrK10gPSBtY2M7XFxuIFxcdHJldHVybiB0cnVlO1xcbiB9XFxuIElXTF9FWFBPUlRfU1lNQk9MKGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9zbWVtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uY1xcbmluZGV4IDM0NGRkZGU4NWIxODk3Li4yMGVkMjZhMWJiMDBlYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvc21lbS5jXFxuQEAgLTEsNiArMSw2IEBAXFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbiAvKlxcbi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgMjAxOC0yMDIxLCAyMDI1IEludGVsIENvcnBvcmF0aW9uXFxuKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjEsIDIwMjUtMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxcbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBJbnRlbCBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgR21iSFxcbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJIXFxuICAqL1xcbkBAIC0xNCw5ICsxNCwxNyBAQCBzdGF0aWMgdm9pZCBpd2xfcGFyc2Vfc2hhcmVkX21lbV8yMjAwMChzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuIHtcXG4gXFx0c3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZyAqbWVtX2NmZyA9ICh2b2lkICopcGt0LVxcdTAwM2VkYXRhO1xcbiBcXHRpbnQgaSwgbG1hYztcXG4tXFx0aW50IGxtYWNfbnVtID0gbGUzMl90b19jcHUobWVtX2NmZy1cXHUwMDNlbG1hY19udW0pO1xcbi1cXHR1OCBhcGlfdmVyID0gaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZndydC1cXHUwMDNlZncsIFNZU1RFTV9HUk9VUCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBTSEFSRURfTUVNX0NGR19DTUQsIDApO1xcbitcXHRpbnQgbG1hY19udW07XFxuK1xcdHU4IGFwaV92ZXI7XFxuK1xcbitcXHRpZiAoSVdMX0ZXX0NIRUNLKGZ3cnQsIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcXHUwMDNjXFxuK1xcdFxcdFxcdCBvZmZzZXRvZmVuZChzdHJ1Y3QgaXdsX3NoYXJlZF9tZW1fY2ZnLCBsbWFjX3NtZW1bMV0pLFxcbitcXHRcXHRcXHQgXFxcImJhZCBzaGFyZWQgbWVtIG5vdGlmaWNhdGlvbiBzaXplXFxcXG5cXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0bG1hY19udW0gPSBsZTMyX3RvX2NwdShtZW1fY2ZnLVxcdTAwM2VsbWFjX251bSk7XFxuK1xcdGFwaV92ZXIgPSBpd2xfZndfbG9va3VwX25vdGlmX3Zlcihmd3J0LVxcdTAwM2VmdywgU1lTVEVNX0dST1VQLFxcbitcXHRcXHRcXHRcXHRcXHQgIFNIQVJFRF9NRU1fQ0ZHX0NNRCwgMCk7XFxuIFxcbiBcXHQvKiBOb3RlOiBub3RpZmljYXRpb24gaGFzIDMgZW50cmllcywgYnV0IHdlIG9ubHkgZXhwZWN0IDIgKi9cXG4gXFx0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBsbWFjX251bSBcXHUwMDNlIEFSUkFZX1NJWkUoZndydC1cXHUwMDNlc21lbV9jZmcubG1hYyksXFxuQEAgLTMwLDcgKzM4LDcgQEAgc3RhdGljIHZvaWQgaXdsX3BhcnNlX3NoYXJlZF9tZW1fMjIwMDAoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxcbiBcXG4gXFx0aWYgKGFwaV92ZXIgXFx1MDAzZT0gNCBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgIUlXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXFx1MDAzYyBzaXplb2YoKm1lbV9jZmcpLFxcbi1cXHRcXHRcXHQgIFxcXCJiYWQgc2hhcmVkIG1lbSBub3RpZmljYXRpb24gc2l6ZVxcXFxuXFxcIikpIHtcXG4rXFx0XFx0XFx0ICBcXFwiYmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemUgKHY0KVxcXFxuXFxcIikpIHtcXG4gXFx0XFx0ZndydC1cXHUwMDNlc21lbV9jZmcucnhmaWZvMl9jb250cm9sX3NpemUgPVxcbiBcXHRcXHRcXHRsZTMyX3RvX2NwdShtZW1fY2ZnLVxcdTAwM2VyeGZpZm8yX2NvbnRyb2xfc2l6ZSk7XFxuIFxcdH1cXG5AQCAtNTMsNiArNjEsMTEgQEAgc3RhdGljIHZvaWQgaXdsX3BhcnNlX3NoYXJlZF9tZW0oc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxcbiBcXHRzdHJ1Y3QgaXdsX3NoYXJlZF9tZW1fY2ZnX3YyICptZW1fY2ZnID0gKHZvaWQgKilwa3QtXFx1MDAzZWRhdGE7XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXFx1MDAzY1xcbitcXHRcXHRcXHQgb2Zmc2V0b2Yoc3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZ192MiwgcnhmaWZvX2FkZHIpLFxcbitcXHRcXHRcXHQgXFxcImJhZCBzaGFyZWQgbWVtIG5vdGlmaWNhdGlvbiBzaXplXFxcXG5cXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0ZndydC1cXHUwMDNlc21lbV9jZmcubnVtX2xtYWNzID0gMTtcXG4gXFxuIFxcdGZ3cnQtXFx1MDAzZXNtZW1fY2ZnLm51bV90eGZpZm9fZW50cmllcyA9IEFSUkFZX1NJWkUobWVtX2NmZy1cXHUwMDNldHhmaWZvX3NpemUpO1xcbkBAIC02Nyw2ICs4MCwxMSBAQCBzdGF0aWMgdm9pZCBpd2xfcGFyc2Vfc2hhcmVkX21lbShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuIFxcdC8qIG5ldyBBUEkgaGFzIG1vcmUgZGF0YSwgZnJvbSByeGZpZm9fYWRkciBmaWVsZCBhbmQgb24gKi9cXG4gXFx0aWYgKGZ3X2hhc19jYXBhKFxcdTAwMjZmd3J0LVxcdTAwM2Vmdy1cXHUwMDNldWNvZGVfY2FwYSxcXG4gXFx0XFx0XFx0SVdMX1VDT0RFX1RMVl9DQVBBX0VYVEVORF9TSEFSRURfTUVNX0NGRykpIHtcXG4rXFx0XFx0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXFx1MDAzY1xcbitcXHRcXHRcXHRcXHQgc2l6ZW9mKCptZW1fY2ZnKSxcXG4rXFx0XFx0XFx0XFx0IFxcXCJiYWQgc2hhcmVkIG1lbSBub3RpZmljYXRpb24gc2l6ZSAoZXh0ZW5kKVxcXFxuXFxcIikpXFxuK1xcdFxcdFxcdHJldHVybjtcXG4rXFxuIFxcdFxcdEJVSUxEX0JVR19PTihzaXplb2YoZndydC1cXHUwMDNlc21lbV9jZmcuaW50ZXJuYWxfdHhmaWZvX3NpemUpICE9XFxuIFxcdFxcdFxcdCAgICAgc2l6ZW9mKG1lbV9jZmctXFx1MDAzZWludGVybmFsX3R4Zmlmb19zaXplKSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oXFxuaW5kZXggNmEzNTM5YWQ3MzMxN2UuLjNhYzdmMDAwZWRlNDc4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmhcXG5AQCAtNDE1LDYgKzQxNSw3IEBAIHN0cnVjdCBpd2xfbWFjX2NmZyB7XFxuICAqIEB2aHRfbXVfbWltb19zdXBwb3J0ZWQ6IFZIVCBNVS1NSU1PIHN1cHBvcnRcXG4gICogQG52bV90eXBlOiBzZWUgXFx1MDAyNmVudW0gaXdsX252bV90eXBlXFxuICAqIEB1aGJfc3VwcG9ydGVkOiB1bHRyYSBoaWdoIGJhbmQgY2hhbm5lbHMgc3VwcG9ydGVkXFxuKyAqIEB1bmlpOV9zdXBwb3J0ZWQ6IFVOSUktOSBjaGFubmVscyBzdXBwb3J0ZWRcXG4gICogQGVodF9zdXBwb3J0ZWQ6IEVIVCBzdXBwb3J0ZWRcXG4gICogQHVocl9zdXBwb3J0ZWQ6IFVIUiBzdXBwb3J0ZWRcXG4gICogQG51bV9yYmRzOiBudW1iZXIgb2YgcmVjZWl2ZSBidWZmZXIgZGVzY3JpcHRvcnMgdG8gdXNlXFxuQEAgLTQ1MCw2ICs0NTEsNyBAQCBzdHJ1Y3QgaXdsX3JmX2NmZyB7XFxuIFxcdCAgICBscF94dGFsX3dvcmthcm91bmQ6MSxcXG4gXFx0ICAgIHZodF9tdV9taW1vX3N1cHBvcnRlZDoxLFxcbiBcXHQgICAgdWhiX3N1cHBvcnRlZDoxLFxcbitcXHQgICAgdW5paTlfc3VwcG9ydGVkOjEsXFxuIFxcdCAgICBlaHRfc3VwcG9ydGVkOjEsXFxuIFxcdCAgICB1aHJfc3VwcG9ydGVkOjE7XFxuIFxcdHU4IHZhbGlkX3R4X2FudDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuY1xcbmluZGV4IGQ0N2I0YWUyZjQ4NjMwLi5iZDUzNTNmZGRlODFhNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jXFxuQEAgLTg1LDE2ICs4NSw3IEBAIHN0YXRpYyBjb25zdCB1MTYgaXdsX252bV9jaGFubmVsc1tdID0ge1xcbiBcXHQxNDksIDE1MywgMTU3LCAxNjEsIDE2NVxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHUxNiBpd2xfZXh0X252bV9jaGFubmVsc1tdID0ge1xcbi1cXHQvKiAyLjQgR0h6ICovXFxuLVxcdDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCxcXG4tXFx0LyogNSBHSHogKi9cXG4tXFx0MzYsIDQwLCA0NCwgNDgsIDUyLCA1NiwgNjAsIDY0LCA2OCwgNzIsIDc2LCA4MCwgODQsIDg4LCA5MixcXG4tXFx0OTYsIDEwMCwgMTA0LCAxMDgsIDExMiwgMTE2LCAxMjAsIDEyNCwgMTI4LCAxMzIsIDEzNiwgMTQwLCAxNDQsXFxuLVxcdDE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1LCAxNjksIDE3MywgMTc3LCAxODFcXG4tfTtcXG4tXFxuLXN0YXRpYyBjb25zdCB1MTYgaXdsX3VoYl9udm1fY2hhbm5lbHNbXSA9IHtcXG4rc3RhdGljIGNvbnN0IHUxNiBpd2xfdW5paTlfbnZtX2NoYW5uZWxzW10gPSB7XFxuIFxcdC8qIDIuNCBHSHogKi9cXG4gXFx0MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LFxcbiBcXHQvKiA1IEdIeiAqL1xcbkBAIC0xMDUsMTIgKzk2LDE2IEBAIHN0YXRpYyBjb25zdCB1MTYgaXdsX3VoYl9udm1fY2hhbm5lbHNbXSA9IHtcXG4gXFx0MSwgNSwgOSwgMTMsIDE3LCAyMSwgMjUsIDI5LCAzMywgMzcsIDQxLCA0NSwgNDksIDUzLCA1NywgNjEsIDY1LCA2OSxcXG4gXFx0NzMsIDc3LCA4MSwgODUsIDg5LCA5MywgOTcsIDEwMSwgMTA1LCAxMDksIDExMywgMTE3LCAxMjEsIDEyNSwgMTI5LFxcbiBcXHQxMzMsIDEzNywgMTQxLCAxNDUsIDE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1LCAxNjksIDE3MywgMTc3LCAxODEsIDE4NSxcXG4tXFx0MTg5LCAxOTMsIDE5NywgMjAxLCAyMDUsIDIwOSwgMjEzLCAyMTcsIDIyMSwgMjI1LCAyMjksIDIzM1xcbitcXHQxODksIDE5MywgMTk3LCAyMDEsIDIwNSwgMjA5LCAyMTMsIDIxNywgMjIxLCAyMjUsIDIyOSwgMjMzLFxcbitcXG4rXFx0LyogVU5JSS05ICovXFxuK1xcdDIzNywgMjQxLCAyNDUsIDI0OSwgMjUzXFxuIH07XFxuIFxcbiAjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTXFx0XFx0QVJSQVlfU0laRShpd2xfbnZtX2NoYW5uZWxzKVxcbi0jZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVFxcdEFSUkFZX1NJWkUoaXdsX2V4dF9udm1fY2hhbm5lbHMpXFxuLSNkZWZpbmUgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCXFx0QVJSQVlfU0laRShpd2xfdWhiX252bV9jaGFubmVscylcXG4rI2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU19FWFRcXHQ1MVxcbisjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQlxcdDExMFxcbisjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5XFx0QVJSQVlfU0laRShpd2xfdW5paTlfbnZtX2NoYW5uZWxzKVxcbiAjZGVmaW5lIE5VTV8yR0haX0NIQU5ORUxTXFx0XFx0MTRcXG4gI2RlZmluZSBOVU1fNUdIWl9DSEFOTkVMU1xcdFxcdDM3XFxuICNkZWZpbmUgRklSU1RfMkdIWl9IVF9NSU5VU1xcdFxcdDVcXG5AQCAtMzUxLDEyICszNDYsMTUgQEAgc3RhdGljIGludCBpd2xfaW5pdF9jaGFubmVsX21hcChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4gXFx0aW50IG51bV9vZl9jaDtcXG4gXFx0Y29uc3QgdTE2ICpudm1fY2hhbjtcXG4gXFxuLVxcdGlmIChjZmctXFx1MDAzZXVoYl9zdXBwb3J0ZWQpIHtcXG4rXFx0aWYgKGNmZy1cXHUwMDNldW5paTlfc3VwcG9ydGVkKSB7XFxuK1xcdFxcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5O1xcbitcXHRcXHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XFxuK1xcdH0gZWxzZSBpZiAoY2ZnLVxcdTAwM2V1aGJfc3VwcG9ydGVkKSB7XFxuIFxcdFxcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQjtcXG4tXFx0XFx0bnZtX2NoYW4gPSBpd2xfdWhiX252bV9jaGFubmVscztcXG4rXFx0XFx0bnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzO1xcbiBcXHR9IGVsc2UgaWYgKGNmZy1cXHUwMDNlbnZtX3R5cGUgPT0gSVdMX05WTV9FWFQpIHtcXG4gXFx0XFx0bnVtX29mX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUO1xcbi1cXHRcXHRudm1fY2hhbiA9IGl3bF9leHRfbnZtX2NoYW5uZWxzO1xcbitcXHRcXHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTO1xcbiBcXHRcXHRudm1fY2hhbiA9IGl3bF9udm1fY2hhbm5lbHM7XFxuQEAgLTE0NDEsNyArMTQzOSw5IEBAIGl3bF9wYXJzZV9tZWlfbnZtX2RhdGEoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnICpjZmcsXFxuIFxcdHU4IHJ4X2NoYWlucyA9IGZ3LVxcdTAwM2V2YWxpZF9yeF9hbnQ7XFxuIFxcdHU4IHR4X2NoYWlucyA9IGZ3LVxcdTAwM2V2YWxpZF9yeF9hbnQ7XFxuIFxcbi1cXHRpZiAoY2ZnLVxcdTAwM2V1aGJfc3VwcG9ydGVkKVxcbitcXHRpZiAoY2ZnLVxcdTAwM2V1bmlpOV9zdXBwb3J0ZWQpXFxuK1xcdFxcdGRhdGEgPSBremFsbG9jX2ZsZXgoKmRhdGEsIGNoYW5uZWxzLCBJV0xfTlZNX05VTV9DSEFOTkVMU19VTklJOSk7XFxuK1xcdGVsc2UgaWYgKGNmZy1cXHUwMDNldWhiX3N1cHBvcnRlZClcXG4gXFx0XFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQik7XFxuIFxcdGVsc2VcXG4gXFx0XFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVCk7XFxuQEAgLTE1MDYsNyArMTUwNiw5IEBAIGl3bF9wYXJzZV9udm1fZGF0YShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgKmNmZyxcXG4gXFx0dTE2IGxhcl9jb25maWc7XFxuIFxcdGNvbnN0IF9fbGUxNiAqY2hfc2VjdGlvbjtcXG4gXFxuLVxcdGlmIChjZmctXFx1MDAzZXVoYl9zdXBwb3J0ZWQpXFxuK1xcdGlmIChjZmctXFx1MDAzZXVuaWk5X3N1cHBvcnRlZClcXG4rXFx0XFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5KTtcXG4rXFx0ZWxzZSBpZiAoY2ZnLVxcdTAwM2V1aGJfc3VwcG9ydGVkKVxcbiBcXHRcXHRkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCKTtcXG4gXFx0ZWxzZSBpZiAoY2ZnLVxcdTAwM2Vudm1fdHlwZSAhPSBJV0xfTlZNX0VYVClcXG4gXFx0XFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTKTtcXG5AQCAtMTcyNywxMiArMTcyOSwxNSBAQCBpd2xfcGFyc2VfbnZtX21jY19pbmZvKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbiBcXHRpbnQgbWF4X251bV9jaDtcXG4gXFx0c3RydWN0IGl3bF9yZWdfY2FwYSByZWdfY2FwYTtcXG4gXFxuLVxcdGlmIChjZmctXFx1MDAzZXVoYl9zdXBwb3J0ZWQpIHtcXG4rXFx0aWYgKGNmZy1cXHUwMDNldW5paTlfc3VwcG9ydGVkKSB7XFxuK1xcdFxcdG1heF9udW1fY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMU19VTklJOTtcXG4rXFx0XFx0bnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzO1xcbitcXHR9IGVsc2UgaWYgKGNmZy1cXHUwMDNldWhiX3N1cHBvcnRlZCkge1xcbiBcXHRcXHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCO1xcbi1cXHRcXHRudm1fY2hhbiA9IGl3bF91aGJfbnZtX2NoYW5uZWxzO1xcbitcXHRcXHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XFxuIFxcdH0gZWxzZSBpZiAoY2ZnLVxcdTAwM2Vudm1fdHlwZSA9PSBJV0xfTlZNX0VYVCkge1xcbiBcXHRcXHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUO1xcbi1cXHRcXHRudm1fY2hhbiA9IGl3bF9leHRfbnZtX2NoYW5uZWxzO1xcbitcXHRcXHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdG1heF9udW1fY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMUztcXG4gXFx0XFx0bnZtX2NoYW4gPSBpd2xfbnZtX2NoYW5uZWxzO1xcbkBAIC0yMDg3LDEzICsyMDkyLDI2IEBAIHN0cnVjdCBpd2xfbnZtX2RhdGEgKml3bF9nZXRfbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbiBcXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjMgKnJzcF92MztcXG4gXFx0Ym9vbCB2NCA9IGZ3X2hhc19hcGkoXFx1MDAyNmZ3LVxcdTAwM2V1Y29kZV9jYXBhLFxcbiBcXHRcXHRcXHQgICAgIElXTF9VQ09ERV9UTFZfQVBJX1JFR1VMQVRPUllfTlZNX0lORk8pO1xcbi1cXHRzaXplX3QgcnNwX3NpemUgPSB2NCA/IHNpemVvZigqcnNwKSA6IHNpemVvZigqcnNwX3YzKTtcXG4rXFx0c2l6ZV90IHJzcF9zaXplO1xcbiBcXHR2b2lkICpjaGFubmVsX3Byb2ZpbGU7XFxuIFxcbiBcXHRyZXQgPSBpd2xfdHJhbnNfc2VuZF9jbWQodHJhbnMsIFxcdTAwMjZoY21kKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gXFxuK1xcdHN3aXRjaCAoaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZncsIFJFR1VMQVRPUllfQU5EX05WTV9HUk9VUCxcXG4rXFx0XFx0XFx0XFx0XFx0TlZNX0dFVF9JTkZPLCAwKSkge1xcbitcXHRjYXNlIDU6XFxuK1xcdFxcdHJzcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIDQ6XFxuK1xcdFxcdHJzcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcF92NCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyc3Bfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjMpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbitcXG4gXFx0aWYgKFdBUk4oaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihoY21kLnJlc3BfcGt0KSAhPSByc3Bfc2l6ZSxcXG4gXFx0XFx0IFxcXCJJbnZhbGlkIHBheWxvYWQgbGVuIGluIE5WTSByZXNwb25zZSBmcm9tIEZXICVkXFxcIixcXG4gXFx0XFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oaGNtZC5yZXNwX3BrdCkpKSB7XFxuQEAgLTIxMDcsNyArMjEyNSw3IEBAIHN0cnVjdCBpd2xfbnZtX2RhdGEgKml3bF9nZXRfbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbiBcXHRpZiAoZW1wdHlfb3RwKVxcbiBcXHRcXHRJV0xfSU5GTyh0cmFucywgXFxcIk9UUCBpcyBlbXB0eVxcXFxuXFxcIik7XFxuIFxcbi1cXHRudm0gPSBremFsbG9jX2ZsZXgoKm52bSwgY2hhbm5lbHMsIElXTF9OVU1fQ0hBTk5FTFNfVjIpO1xcbitcXHRudm0gPSBremFsbG9jX2ZsZXgoKm52bSwgY2hhbm5lbHMsIElXTF9OVU1fQ0hBTk5FTFNfVjMpO1xcbiBcXHRpZiAoIW52bSkge1xcbiBcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmNcXG5pbmRleCAyMTg1ZGFkZTk1ZjhjYi4uMmRmNjY0M2E1YWE4MGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmNcXG5AQCAtMTEyMCw2ICsxMTIwLDEwIEBAIHZvaWQgaXdsX21sZF9oYW5kbGVfdHhfcmVzcF9ub3RpZihzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbiBcXHRzc24gPSBsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKWFnZ19zdGF0dXMgK1xcbiBcXHRcXHRcXHQgICB0eF9yZXNwLVxcdTAwM2VmcmFtZV9jb3VudCkgXFx1MDAyNiAweEZGRkY7XFxuIFxcbitcXHRpZiAoSVdMX0ZXX0NIRUNLKG1sZCwgdHhxX2lkIFxcdTAwM2U9IEFSUkFZX1NJWkUobWxkLVxcdTAwM2Vmd19pZF90b190eHEpLFxcbitcXHRcXHRcXHQgXFxcIkludmFsaWQgdHhxIGlkICVkXFxcXG5cXFwiLCB0eHFfaWQpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnNrYnMpO1xcbiBcXG4gXFx0Lyogd2UgY2FuIGZyZWUgdW50aWwgc3NuICUgcS5uX2JkIG5vdCBpbmNsdXNpdmUgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmNcXG5pbmRleCAzNDI5ZDlhMTBlNDIwOS4uNmIxMWZhMzJlYTVjNmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmNcXG5AQCAtMTUwOSw2ICsxNTA5LDEwIEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuIFxcdFxcdGlmIChXQVJOX09OX09OQ0UodHJ1bmNhdGVkIFxcdTAwM2MgMCkpXFxuIFxcdFxcdFxcdHRydW5jYXRlZCA9IDA7XFxuIFxcbitcXHRcXHQvKiB0aGlzIHdvdWxkIGJlIGEgZmlybXdhcmUgYnVnICovXFxuK1xcdFxcdGlmIChXQVJOX09OX09OQ0UocGt0c2l6ZSBcXHUwMDNjIHNpemVvZigqaGRyKSkpXFxuK1xcdFxcdFxcdHJldHVybjtcXG4rXFxuIFxcdFxcdGlmIChpZWVlODAyMTFfaXNfZGF0YShoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XFxuIFxcdFxcdFxcdGludCBoZHJsZW4gPSBpZWVlODAyMTFfaGRybGVuKGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCk7XFxuIFxcdFxcdFxcdGludCBpdmxlbiA9IDAsIGljdmxlbiA9IDQ7IC8qIGFsc28gRkNTICovXFxuQEAgLTE1MTcsMTAgKzE1MjEsNiBAQCBzdGF0aWMgdm9pZCBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29ucyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbiBcXHRcXHRcXHRpZiAoIXBrdClcXG4gXFx0XFx0XFx0XFx0Z290byByZXBvcnQ7XFxuIFxcbi1cXHRcXHRcXHRza2JfcHV0X2RhdGEocGt0LCBwa3RkYXRhLCBoZHJsZW4pO1xcbi1cXHRcXHRcXHRwa3RkYXRhICs9IGhkcmxlbjtcXG4tXFx0XFx0XFx0cGt0c2l6ZSAtPSBoZHJsZW47XFxuLVxcbiBcXHRcXHRcXHRpZiAoaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLVxcdTAwM2VmcmFtZV9jb250cm9sKSkge1xcbiBcXHRcXHRcXHRcXHQvKlxcbiBcXHRcXHRcXHRcXHQgKiBUaGlzIGlzIHVubG9ja2VkIGFuZCB1c2luZyBndGtfaShjKXZsZW4sXFxuQEAgLTE1NDYsNiArMTU0NiwxNyBAQCBzdGF0aWMgdm9pZCBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29ucyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbiBcXHRcXHRcXHRcXHR0cnVuY2F0ZWQgPSAwO1xcbiBcXHRcXHRcXHR9XFxuIFxcbitcXHRcXHRcXHRpZiAoSVdMX0ZXX0NIRUNLKG12bSxcXG4rXFx0XFx0XFx0XFx0XFx0IHBrdHNpemUgXFx1MDAzYz0gaGRybGVuICsgaXZsZW4gKyBpY3ZsZW4sXFxuK1xcdFxcdFxcdFxcdFxcdCBcXFwicGt0c2l6ZSBpcyB0b28gc21hbGwgJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCBwa3RzaXplKSkge1xcbitcXHRcXHRcXHRcXHRrZnJlZV9za2IocGt0KTtcXG4rXFx0XFx0XFx0XFx0cmV0dXJuO1xcbitcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHRza2JfcHV0X2RhdGEocGt0LCBwa3RkYXRhLCBoZHJsZW4pO1xcbitcXHRcXHRcXHRwa3RkYXRhICs9IGhkcmxlbjtcXG4rXFx0XFx0XFx0cGt0c2l6ZSAtPSBoZHJsZW47XFxuIFxcdFxcdFxcdHBrdHNpemUgLT0gaXZsZW4gKyBpY3ZsZW47XFxuIFxcdFxcdFxcdHBrdGRhdGEgKz0gaXZsZW47XFxuIFxcbkBAIC0yNDQ4LDEzICsyNDU5LDE1IEBAIGl3bF9tdm1fbmV0ZGV0ZWN0X3F1ZXJ5X3Jlc3VsdHMoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4gXFxuIFxcdGlmIChmd19oYXNfYXBpKFxcdTAwMjZtdm0tXFx1MDAzZWZ3LVxcdTAwM2V1Y29kZV9jYXBhLFxcbiBcXHRcXHQgICAgICAgSVdMX1VDT0RFX1RMVl9BUElfU0NBTl9PRkZMT0FEX0NIQU5TKSkge1xcbi1cXHRcXHRxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbyk7XFxuIFxcdFxcdG1hdGNoZXNfbGVuID0gc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX3Byb2ZpbGVfbWF0Y2gpICpcXG4gXFx0XFx0XFx0bWF4X3Byb2ZpbGVzO1xcbitcXHRcXHRxdWVyeV9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9tYXRjaF9pbmZvLFxcbitcXHRcXHRcXHRcXHQgICAgIG1hdGNoZXMpICsgbWF0Y2hlc19sZW47XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdHF1ZXJ5X2xlbiA9IHNpemVvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlc19xdWVyeV92MSk7XFxuIFxcdFxcdG1hdGNoZXNfbGVuID0gc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX3Byb2ZpbGVfbWF0Y2hfdjEpICpcXG4gXFx0XFx0XFx0bWF4X3Byb2ZpbGVzO1xcbitcXHRcXHRxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZXNfcXVlcnlfdjEpICtcXG4rXFx0XFx0XFx0bWF0Y2hlc19sZW47XFxuIFxcdH1cXG4gXFxuIFxcdGxlbiA9IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oY21kLnJlc3BfcGt0KTtcXG5AQCAtMjc1Niw3ICsyNzY5LDcgQEAgc3RhdGljIGludCBpd2xfbXZtX3dvd2xhbl9zdG9yZV93YWtlX3BrdChzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbiBcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGl3bF93b3dsYW5fc3RhdHVzX2RhdGEgKnN0YXR1cyxcXG4gXFx0XFx0XFx0XFx0XFx0IHUzMiBsZW4pXFxuIHtcXG4tXFx0dTMyIGRhdGFfc2l6ZSwgcGFja2V0X2xlbiA9IGxlMzJfdG9fY3B1KG5vdGlmLVxcdTAwM2V3YWtlX3BhY2tldF9sZW5ndGgpO1xcbitcXHR1MzIgZGF0YV9zaXplLCBwYWNrZXRfbGVuO1xcbiBcXG4gXFx0aWYgKGxlbiBcXHUwMDNjIHNpemVvZigqbm90aWYpKSB7XFxuIFxcdFxcdElXTF9FUlIobXZtLCBcXFwiSW52YWxpZCBXb1dMQU4gd2FrZSBwYWNrZXQgbm90aWZpY2F0aW9uIVxcXFxuXFxcIik7XFxuQEAgLTI3NzUsNiArMjc4OCw3IEBAIHN0YXRpYyBpbnQgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3Qoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4gXFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcdH1cXG4gXFxuK1xcdHBhY2tldF9sZW4gPSBsZTMyX3RvX2NwdShub3RpZi1cXHUwMDNld2FrZV9wYWNrZXRfbGVuZ3RoKTtcXG4gXFx0ZGF0YV9zaXplID0gbGVuIC0gb2Zmc2V0b2Yoc3RydWN0IGl3bF93b3dsYW5fd2FrZV9wa3Rfbm90aWYsIHdha2VfcGFja2V0KTtcXG4gXFxuIFxcdC8qIGRhdGFfc2l6ZSBnb3QgdGhlIHBhZGRpbmcgZnJvbSB0aGUgbm90aWZpY2F0aW9uLCByZW1vdmUgaXQuICovXFxuQEAgLTI4MDcsNyArMjgyMSw4IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuIFxcdGlmIChJU19FUlJfT1JfTlVMTCh2aWYpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRpZiAobGVuIFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8pICsgbWF0Y2hlc19sZW4pIHtcXG4rXFx0aWYgKGxlbiBcXHUwMDNjIG9mZnNldG9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8sIG1hdGNoZXMpICtcXG4rXFx0XFx0ICAgIG1hdGNoZXNfbGVuKSB7XFxuIFxcdFxcdElXTF9FUlIobXZtLCBcXFwiSW52YWxpZCBzY2FuIG1hdGNoIGluZm8gbm90aWZpY2F0aW9uXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuY1xcbmluZGV4IDNhMTRjYTVlNTEyYWUzLi44ZDdmNjBkY2QwMjcwZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmNcXG5AQCAtNjQ2LDcgKzY0Niw4IEBAIHN0YXRpYyB2b2lkIGl0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFdBUk5fT04oKnRhcmdldC1cXHUwMDNlY2lwaGVyID09IElXTF9MT0NBVElPTl9DSVBIRVJfSU5WQUxJRCk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkXFxuKy8qIFRoZSB0ayBidWZmZXIgaXMgYXNzdW1lZCB0byBiZSBleGFjdGx5IFRLXzExQVpfTEVOIGJ5dGVzICovXFxuK3N0YXRpYyBpbnRcXG4gaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbiBcXHRcXHRcXHRcXHR1OCAqYnNzaWQsIHU4ICpjaXBoZXIsIHU4ICpobHRrLCB1OCAqdGssXFxuIFxcdFxcdFxcdFxcdHU4ICpyeF9wbiwgdTggKnR4X3BuLCBfX2xlMzIgKmZsYWdzKVxcbkBAIC02NTYsMTIgKzY1NywxMiBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuIFxcdHN0cnVjdCBpd2xfbXZtX3ZpZiAqbXZtdmlmID0gaXdsX212bV92aWZfZnJvbV9tYWM4MDIxMSh2aWYpO1xcbiBcXG4gXFx0aWYgKG12bXZpZi1cXHUwMDNlZnRtX3VucHJvdGVjdGVkKVxcbi1cXHRcXHRyZXR1cm47XFxuK1xcdFxcdHJldHVybiAwO1xcbiAjZW5kaWZcXG4gXFxuIFxcdGlmICghKGxlMzJfdG9fY3B1KCpmbGFncykgXFx1MDAyNiAoSVdMX0lOSVRJQVRPUl9BUF9GTEFHU19OT05fVEIgfFxcbiBcXHRcXHQgICAgICAgSVdMX0lOSVRJQVRPUl9BUF9GTEFHU19UQikpKVxcbi1cXHRcXHRyZXR1cm47XFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2bXZtLVxcdTAwM2VtdXRleCk7XFxuIFxcbkBAIC02NzksMTQgKzY4MCwzMSBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuIFxcdFxcdGlmICh2aWYtXFx1MDAzZWNmZy5hc3NvYyBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgIW1lbWNtcCh2aWYtXFx1MDAzZWJzc19jb25mLmJzc2lkLCBic3NpZCwgRVRIX0FMRU4pKSB7XFxuIFxcdFxcdFxcdHN0cnVjdCBpd2xfbXZtX2Z0bV9pdGVyX2RhdGEgdGFyZ2V0O1xcbitcXHRcXHRcXHR1MzIga2V5X2xlbjtcXG4gXFxuIFxcdFxcdFxcdHRhcmdldC5ic3NpZCA9IGJzc2lkO1xcbiBcXHRcXHRcXHR0YXJnZXQuY2lwaGVyID0gY2lwaGVyO1xcbiBcXHRcXHRcXHR0YXJnZXQudGsgPSBOVUxMO1xcbiBcXHRcXHRcXHRpZWVlODAyMTFfaXRlcl9rZXlzKG12bS1cXHUwMDNlaHcsIHZpZiwgaXRlciwgXFx1MDAyNnRhcmdldCk7XFxuIFxcbi1cXHRcXHRcXHRpZiAoIVdBUk5fT04oIXRhcmdldC50aykpXFxuLVxcdFxcdFxcdFxcdG1lbWNweSh0aywgdGFyZ2V0LnRrLCBUS18xMUFaX0xFTik7XFxuK1xcdFxcdFxcdGlmIChXQVJOX09OKCF0YXJnZXQudGspKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdFxcdFxcdHN3aXRjaCAoKnRhcmdldC5jaXBoZXIpIHtcXG4rXFx0XFx0XFx0Y2FzZSBJV0xfTE9DQVRJT05fQ0lQSEVSX0NDTVBfMTI4OlxcbitcXHRcXHRcXHRjYXNlIElXTF9MT0NBVElPTl9DSVBIRVJfR0NNUF8xMjg6XFxuK1xcdFxcdFxcdFxcdGtleV9sZW4gPSBXTEFOX0tFWV9MRU5fQ0NNUDtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGNhc2UgSVdMX0xPQ0FUSU9OX0NJUEhFUl9HQ01QXzI1NjpcXG4rXFx0XFx0XFx0XFx0a2V5X2xlbiA9IFdMQU5fS0VZX0xFTl9HQ01QXzI1NjtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGRlZmF1bHQ6XFxuK1xcdFxcdFxcdFxcdFdBUk5fT04oMSk7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHRtZW1zZXQodGssIDAsIFRLXzExQVpfTEVOKTtcXG4rXFx0XFx0XFx0bWVtY3B5KHRrLCB0YXJnZXQudGssIGtleV9sZW4pO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRtZW1jcHkodGssIGVudHJ5LVxcdTAwM2V0aywgc2l6ZW9mKGVudHJ5LVxcdTAwM2V0aykpO1xcbiBcXHRcXHR9XFxuQEAgLTY5NSw4ICs3MTMsMTAgQEAgaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbiBcXHRcXHRtZW1jcHkodHhfcG4sIGVudHJ5LVxcdTAwM2V0eF9wbiwgc2l6ZW9mKGVudHJ5LVxcdTAwM2V0eF9wbikpO1xcbiBcXG4gXFx0XFx0RlRNX1NFVF9GTEFHKFNFQ1VSRUQpO1xcbi1cXHRcXHRyZXR1cm47XFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gc3RhdGljIGludFxcbkBAIC03MDgsMTIgKzcyOCwxMSBAQCBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3Y3KHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHRpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKG12bSwgdmlmLCB0YXJnZXQtXFx1MDAzZWJzc2lkLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2dGFyZ2V0LVxcdTAwM2VjaXBoZXIsIHRhcmdldC1cXHUwMDNlaGx0ayxcXG4tXFx0XFx0XFx0XFx0XFx0dGFyZ2V0LVxcdTAwM2V0aywgdGFyZ2V0LVxcdTAwM2VyeF9wbixcXG4tXFx0XFx0XFx0XFx0XFx0dGFyZ2V0LVxcdTAwM2V0eF9wbixcXG4tXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnRhcmdldC1cXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcXG4tXFx0cmV0dXJuIGVycjtcXG4rXFx0cmV0dXJuIGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmcobXZtLCB2aWYsIHRhcmdldC1cXHUwMDNlYnNzaWQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZ0YXJnZXQtXFx1MDAzZWNpcGhlciwgdGFyZ2V0LVxcdTAwM2VobHRrLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICB0YXJnZXQtXFx1MDAzZXRrLCB0YXJnZXQtXFx1MDAzZXJ4X3BuLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICB0YXJnZXQtXFx1MDAzZXR4X3BuLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2dGFyZ2V0LVxcdTAwM2Vpbml0aWF0b3JfYXBfZmxhZ3MpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGl3bF9tdm1fZnRtX3N0YXJ0X3YxMShzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbkBAIC04ODEsMTEgKzkwMCwxMyBAQCBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3YxMChzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbiBcXHRpd2xfbXZtX2Z0bV9zZXRfdGFyZ2V0X2ZsYWdzKG12bSwgcGVlciwgXFx1MDAyNnRhcmdldC1cXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcXG4gXFx0aXdsX212bV9mdG1fc2V0X3N0YShtdm0sIHZpZiwgcGVlciwgXFx1MDAyNnRhcmdldC1cXHUwMDNlc3RhX2lkLFxcbiBcXHRcXHRcXHQgICAgXFx1MDAyNnRhcmdldC1cXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcXG4tXFx0aXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LVxcdTAwM2Vic3NpZCxcXG4tXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnRhcmdldC1cXHUwMDNlY2lwaGVyLCB0YXJnZXQtXFx1MDAzZWhsdGssXFxuLVxcdFxcdFxcdFxcdFxcdHRhcmdldC1cXHUwMDNldGssIHRhcmdldC1cXHUwMDNlcnhfcG4sXFxuLVxcdFxcdFxcdFxcdFxcdHRhcmdldC1cXHUwMDNldHhfcG4sXFxuLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZ0YXJnZXQtXFx1MDAzZWluaXRpYXRvcl9hcF9mbGFncyk7XFxuK1xcdHJldCA9IGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmcobXZtLCB2aWYsIHRhcmdldC1cXHUwMDNlYnNzaWQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZ0YXJnZXQtXFx1MDAzZWNpcGhlciwgdGFyZ2V0LVxcdTAwM2VobHRrLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICB0YXJnZXQtXFx1MDAzZXRrLCB0YXJnZXQtXFx1MDAzZXJ4X3BuLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICB0YXJnZXQtXFx1MDAzZXR4X3BuLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2dGFyZ2V0LVxcdTAwM2Vpbml0aWF0b3JfYXBfZmxhZ3MpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4gXFx0aTJyX21heF9zdHMgPSBJV0xfTVZNX0ZUTV9JMlJfTUFYX1NUUyBcXHUwMDNlIDEgPyAxIDpcXG4gXFx0XFx0SVdMX01WTV9GVE1fSTJSX01BWF9TVFM7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jXFxuaW5kZXggNmU1MDdkNmRjZGQyYTEuLmZhNTIzYmU5MWQ4YWQzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jXFxuQEAgLTk2NCwxMiArOTY0LDIyIEBAIGludCBpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGUoc3RydWN0IGl3bF9tdm0gKm12bSlcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKElXTF9GV19DSEVDSyhtdm0sXFxuK1xcdFxcdFxcdCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKGNtZC5yZXNwX3BrdCkgIT1cXG4rXFx0XFx0XFx0IHNpemVvZigqcmVzcCksXFxuK1xcdFxcdFxcdCBcXFwiV3Jvbmcgc2l6ZSBmb3IgaXdsX2dlb190eF9wb3dlcl9wcm9maWxlc19yZXNwOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oY21kLnJlc3BfcGt0KSkpIHtcXG4rXFx0XFx0cmV0ID0gLUVJTztcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuIFxcdHJlc3AgPSAodm9pZCAqKWNtZC5yZXNwX3BrdC1cXHUwMDNlZGF0YTtcXG4gXFx0cmV0ID0gbGUzMl90b19jcHUocmVzcC1cXHUwMDNlcHJvZmlsZV9pZHgpO1xcbiBcXG4gXFx0aWYgKFdBUk5fT04ocmV0IFxcdTAwM2UgQklPU19HRU9fTUFYX1BST0ZJTEVfTlVNKSlcXG4gXFx0XFx0cmV0ID0gLUVJTztcXG4gXFxuK291dDpcXG4gXFx0aXdsX2ZyZWVfcmVzcChcXHUwMDI2Y21kKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9wdHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3B0cC5jXFxuaW5kZXggZjM5ZWI0ODg2NGViNGIuLjQ5ZGNiMTM4ODAwN2JjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3B0cC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcHRwLmNcXG5AQCAtMSw2ICsxLDYgQEBcXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuIC8qXFxuLSAqIENvcHlyaWdodCAoQykgMjAyMSAtIDIwMjMsIDIwMjUgSW50ZWwgQ29ycG9yYXRpb25cXG4rICogQ29weXJpZ2h0IChDKSAyMDIxIC0gMjAyMywgMjAyNS0yMDI2IEludGVsIENvcnBvcmF0aW9uXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFxcIm12bS5oXFxcIlxcbkBAIC0xMjEsNiArMTIxLDggQEAgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZncoc3RydWN0IGl3bF9tdm0gKm12bSwgdTMyICpncDIsIHU2NCAqc3lzX3RpbWUpXFxuIFxcdCpzeXNfdGltZSA9ICh1NjQpbGUzMl90b19jcHUocmVzcC1cXHUwMDNlcGxhdGZvcm1fdGltZXN0YW1wX2hpKSBcXHUwMDNjXFx1MDAzYyAzMiB8XFxuIFxcdFxcdGxlMzJfdG9fY3B1KHJlc3AtXFx1MDAzZXBsYXRmb3JtX3RpbWVzdGFtcF9sbyk7XFxuIFxcbitcXHRpd2xfZnJlZV9yZXNwKFxcdTAwMjZjbWQpO1xcbitcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmNcXG5pbmRleCBkYzY5YzcxZmFhNzZjYS4uZDNjMmZlODMwNDc3N2IgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmNcXG5AQCAtMTU0NCw2ICsxNTQ0LDE3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGl3bF9tdm1fZ2V0X3NjZF9zc24oc3RydWN0IGl3bF9tdm0gKm12bSxcXG4gXFx0cmV0dXJuIHZhbCBcXHUwMDI2IDB4RkZGO1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIHNpemVfdCBpd2xfbXZtX3R4X3Jlc3BfbWluX2xlbihzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpd2xfdHhfcmVzcCAqdHhfcmVzcClcXG4re1xcbitcXHRzdHJ1Y3QgYWdnX3R4X3N0YXR1cyAqYWdnX3N0YXR1cyA9XFxuK1xcdFxcdGl3bF9tdm1fZ2V0X2FnZ19zdGF0dXMobXZtLCB0eF9yZXNwKTtcXG4rXFxuK1xcdC8qIFRoZSBhZ2dyZWdhdGUgcmVzcG9uc2UgZW5kcyB3aXRoIGEgdHJhaWxpbmcgU0NEIFNTTiBfX2xlMzIgd29yZC4gKi9cXG4rXFx0cmV0dXJuICh1OCAqKShhZ2dfc3RhdHVzICsgdHhfcmVzcC1cXHUwMDNlZnJhbWVfY291bnQpIC0gKHU4ICopdHhfcmVzcCArXFxuK1xcdFxcdHNpemVvZihfX2xlMzIpO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBpd2xfbXZtX3J4X3R4X2NtZF9zaW5nbGUoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0KVxcbiB7XFxuQEAgLTE4NDcsNiArMTg1OCw5IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcnhfdHhfY21kX2FnZyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbiBcXHRpbnQgcXVldWUgPSBTRVFfVE9fUVVFVUUoc2VxdWVuY2UpO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhO1xcbiBcXG4rXFx0aWYgKFdBUk5fT05fT05DRShpd2xfbXZtX2hhc19uZXdfdHhfYXBpKG12bSkpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRpZiAoV0FSTl9PTl9PTkNFKHF1ZXVlIFxcdTAwM2MgSVdMX01WTV9EUUFfTUlOX0RBVEFfUVVFVUUgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0IChxdWV1ZSAhPSBJV0xfTVZNX0RRQV9CU1NfQ0xJRU5UX1FVRVVFKSkpXFxuIFxcdFxcdHJldHVybjtcXG5AQCAtMTg4MSw2ICsxODk1LDI2IEBAIHZvaWQgaXdsX212bV9yeF90eF9jbWQoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXFxuIHtcXG4gXFx0c3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7XFxuIFxcdHN0cnVjdCBpd2xfdHhfcmVzcCAqdHhfcmVzcCA9ICh2b2lkICopcGt0LVxcdTAwM2VkYXRhO1xcbitcXHRzaXplX3QgbWluX2xlbjtcXG4rXFxuK1xcdGlmIChJV0xfRldfQ0hFQ0sobXZtLCAhdHhfcmVzcC1cXHUwMDNlZnJhbWVfY291bnQsXFxuK1xcdFxcdFxcdCBcXFwiaW52YWxpZCBUWF9DTUQgZnJhbWVfY291bnQgJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCB0eF9yZXNwLVxcdTAwM2VmcmFtZV9jb3VudCkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChJV0xfRldfQ0hFQ0sobXZtLFxcbitcXHRcXHRcXHQgaXdsX212bV9oYXNfbmV3X3R4X2FwaShtdm0pIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCB0eF9yZXNwLVxcdTAwM2VmcmFtZV9jb3VudCAhPSAxLFxcbitcXHRcXHRcXHQgXFxcImludmFsaWQgVFhfQ01EIGZyYW1lX2NvdW50ICV1IGZvciBuZXcgVFggQVBJXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgdHhfcmVzcC1cXHUwMDNlZnJhbWVfY291bnQpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRtaW5fbGVuID0gaXdsX212bV90eF9yZXNwX21pbl9sZW4obXZtLCB0eF9yZXNwKTtcXG4rXFx0aWYgKElXTF9GV19DSEVDSyhtdm0sIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcXHUwMDNjIG1pbl9sZW4sXFxuK1xcdFxcdFxcdCBcXFwiaW52YWxpZCBUWF9DTUQgbGVuICV1IChmcmFtZV9jb3VudCAldSwgbWluICV6dSlcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCksIHR4X3Jlc3AtXFx1MDAzZWZyYW1lX2NvdW50LFxcbitcXHRcXHRcXHQgbWluX2xlbikpXFxuK1xcdFxcdHJldHVybjtcXG4gXFxuIFxcdGlmICh0eF9yZXNwLVxcdTAwM2VmcmFtZV9jb3VudCA9PSAxKVxcbiBcXHRcXHRpd2xfbXZtX3J4X3R4X2NtZF9zaW5nbGUobXZtLCBwa3QpO1xcbkBAIC0yMTAwLDggKzIxMzQsMTQgQEAgdm9pZCBpd2xfbXZtX3J4X2JhX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxcbiBcXHRcXHRcXHRpZiAodGlkID09IElXTF9NR01UX1RJRClcXG4gXFx0XFx0XFx0XFx0dGlkID0gSVdMX01BWF9USURfQ09VTlQ7XFxuIFxcbitcXHRcXHRcXHRpZiAoSVdMX0ZXX0NIRUNLKG12bSwgdGlkIFxcdTAwM2U9XFxuK1xcdFxcdFxcdFxcdFxcdCBBUlJBWV9TSVpFKG12bXN0YS1cXHUwMDNldGlkX2RhdGEpLFxcbitcXHRcXHRcXHRcXHRcXHQgXFxcImludmFsaWQgVElEICVkIGluIGNvbXByZXNzZWQgQkFcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCB0aWQpKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuIFxcdFxcdFxcdGlmIChtdm1zdGEpXFxuLVxcdFxcdFxcdFxcdG12bXN0YS1cXHUwMDNldGlkX2RhdGFbaV0ubHFfY29sb3IgPSBscV9jb2xvcjtcXG4rXFx0XFx0XFx0XFx0bXZtc3RhLVxcdTAwM2V0aWRfZGF0YVt0aWRdLmxxX2NvbG9yID0gbHFfY29sb3I7XFxuIFxcbiBcXHRcXHRcXHRpd2xfbXZtX3R4X3JlY2xhaW0obXZtLCBzdGFfaWQsIHRpZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgKGludCkobGUxNl90b19jcHUoYmFfdGZkLVxcdTAwM2VxX251bSkpLFxcbkBAIC0yMTIxLDYgKzIxNjEsOSBAQCB2b2lkIGl3bF9tdm1fcnhfYmFfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXFxuIFxcdGJhX25vdGlmID0gKHZvaWQgKilwa3QtXFx1MDAzZWRhdGE7XFxuIFxcdHN0YV9pZCA9IGJhX25vdGlmLVxcdTAwM2VzdGFfaWQ7XFxuIFxcdHRpZCA9IGJhX25vdGlmLVxcdTAwM2V0aWQ7XFxuK1xcdGlmIChJV0xfRldfQ0hFQ0sobXZtLCB0aWQgXFx1MDAzZT0gQVJSQVlfU0laRShtdm1zdGEtXFx1MDAzZXRpZF9kYXRhKSxcXG4rXFx0XFx0XFx0IFxcXCJpbnZhbGlkIFRJRCAlZCBpbiBCQSBub3RpZlxcXFxuXFxcIiwgdGlkKSlcXG4rXFx0XFx0cmV0dXJuO1xcbiBcXHQvKiBcXFwiZmxvd1xcXCIgY29ycmVzcG9uZHMgdG8gVHggcXVldWUgKi9cXG4gXFx0dHhxID0gbGUxNl90b19jcHUoYmFfbm90aWYtXFx1MDAzZXNjZF9mbG93KTtcXG4gXFx0LyogXFxcInNzblxcXCIgaXMgc3RhcnQgb2YgYmxvY2stYWNrIFR4IHdpbmRvdywgY29ycmVzcG9uZHMgdG8gaW5kZXhcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby5jXFxuaW5kZXggZDVlYjg5NTE0NGVmYzkuLjdmODg2MjAwZDY5MzMzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8uY1xcbkBAIC0xLDcgKzEsNyBAQFxcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcXG4gLypcXG4gICogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIERldXRzY2hsYW5kIEdtYkhcXG4tICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjUgSW50ZWwgQ29ycG9yYXRpb25cXG4rICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cXG4gICovXFxuICNpbmNsdWRlIFxcXCJpd2wtdHJhbnMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIml3bC1maC5oXFxcIlxcbkBAIC05OSw2ICs5OSwxMSBAQCBpbnQgaXdsX3BjaWVfaW5pdF9md19zZWMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIFxcdC8qIGFkZCAyIGR1ZSB0byBzZXBhcmF0b3JzICovXFxuIFxcdHBhZ2luZ19jbnQgPSBpd2xfcGNpZV9nZXRfbnVtX3NlY3Rpb25zKGZ3LCBsbWFjX2NudCArIHVtYWNfY250ICsgMik7XFxuIFxcbitcXHRpZiAoV0FSTl9PTihsbWFjX2NudCBcXHUwMDNlIEFSUkFZX1NJWkUoY3R4dF9kcmFtLVxcdTAwM2VsbWFjX2ltZykgfHxcXG4rXFx0XFx0ICAgIHVtYWNfY250IFxcdTAwM2UgQVJSQVlfU0laRShjdHh0X2RyYW0tXFx1MDAzZXVtYWNfaW1nKSB8fFxcbitcXHRcXHQgICAgcGFnaW5nX2NudCBcXHUwMDNlIEFSUkFZX1NJWkUoY3R4dF9kcmFtLVxcdTAwM2V2aXJ0dWFsX2ltZykpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdGRyYW0tXFx1MDAzZWZ3ID0ga3phbGxvY19vYmpzKCpkcmFtLVxcdTAwM2VmdywgdW1hY19jbnQgKyBsbWFjX2NudCk7XFxuIFxcdGlmICghZHJhbS1cXHUwMDNlZncpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoxOTo0OC4yMjY1NTQ4MjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTg2MTA0MTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIixcbiAgICBcIklXTE1WTVwiLFxuICAgIFwiSVdMTUxEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXdsX3Budm1fY29tcGxldGVfZm5cIixcbiAgICBcIml3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwXCIsXG4gICAgXCJpd2xfcGFyc2Vfc2hhcmVkX21lbVwiLFxuICAgIFwiaXdsX2dldF9udm1cIixcbiAgICBcIml3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zXCIsXG4gICAgXCJpd2xfbXZtX3dvd2xhbl9zdG9yZV93YWtlX3BrdFwiLFxuICAgIFwiaXdsX212bV9uZF9tYXRjaF9pbmZvX2hhbmRsZXJcIixcbiAgICBcIml3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdcIixcbiAgICBcIml3bF9tdm1fZ2V0X3Nhcl9nZW9fcHJvZmlsZVwiLFxuICAgIFwiaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZndcIixcbiAgICBcIml3bF9wY2llX2luaXRfZndfc2VjXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBpd2x3aWZpIGRyaXZlciwgaW5jbHVkaW5nIGFkZGluZyBzdXBwb3J0IGZvciBVTklJLTkgY2hhbm5lbHMsIGFkZGluZyBib3VuZHMgY2hlY2tzIGZvciBmaXJtd2FyZSBub3RpZmljYXRpb25zIGFuZCByZXNwb25zZXMsIGZpeGluZyBtZW1vcnkgbGVha3MsIGFuZCBtb2RpZnlpbmcgTlZNIHBhcnNpbmcgbG9naWMuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBkcml2ZXIgYW5kIGFyZSB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGUzNGM5ZTU4ZDJiMjRkNTdmYjkzMTMxZGRlNzZmMmE2NDA2MDQ4NThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAwMjoxOTo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL3JmLXBlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jXG5pbmRleCA3YTA0Y2IxMjBiMWIyMy4uNjA4MGY1ZjIzZTY5ODcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jXG5AQCAtMTUsNiArMTUsNyBAQFxuIFx0Lm5vbl9zaGFyZWRfYW50ID0gQU5UX0IsXHRcdFx0XHRcdFxcXG4gXHQudmh0X211X21pbW9fc3VwcG9ydGVkID0gdHJ1ZSxcdFx0XHRcdFx0XFxcbiBcdC51aGJfc3VwcG9ydGVkID0gdHJ1ZSxcdFx0XHRcdFx0XHRcXFxuK1x0LnVuaWk5X3N1cHBvcnRlZCA9IHRydWUsXHRcdFx0XHRcdFxcXG4gXHQuZWh0X3N1cHBvcnRlZCA9IHRydWUsXHRcdFx0XHRcdFx0XFxcbiBcdC51aHJfc3VwcG9ydGVkID0gdHJ1ZSxcdFx0XHRcdFx0XHRcXFxuIFx0Lm51bV9yYmRzID0gSVdMX05VTV9SQkRTX0VIVCxcdFx0XHRcdFx0XFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmhcbmluZGV4IDQ0M2E5YTQxNjMyNTIzLi4wMTcyYzA3NDdhNDdjOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL252bS1yZWcuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbnZtLXJlZy5oXG5AQCAtMjA1LDYgKzIwNSw3IEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3BoeSB7XG4gXG4gI2RlZmluZSBJV0xfTlVNX0NIQU5ORUxTX1YxXHQ1MVxuICNkZWZpbmUgSVdMX05VTV9DSEFOTkVMU19WMlx0MTEwXG4rI2RlZmluZSBJV0xfTlVNX0NIQU5ORUxTX1YzXHQxMTVcbiBcbiAvKipcbiAgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5X3YxIC0gcmVndWxhdG9yeSBpbmZvcm1hdGlvblxuQEAgLTIxOSwxMiArMjIwLDEyIEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjEge1xuIH0gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JFR1VMQVRPUllfU19WRVJfMSAqL1xuIFxuIC8qKlxuLSAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXG4rICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MiAtIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb25cbiAgKiBAbGFyX2VuYWJsZWQ6IGlzIExBUiBlbmFibGVkXG4gICogQG5fY2hhbm5lbHM6IG51bWJlciBvZiB2YWxpZCBjaGFubmVscyBpbiB0aGUgYXJyYXlcbiAgKiBAY2hhbm5lbF9wcm9maWxlOiByZWd1bGF0b3J5IGRhdGEgb2YgdGhpcyBjaGFubmVsXG4gICovXG4tc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSB7XG4rc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MiB7XG4gXHRfX2xlMzIgbGFyX2VuYWJsZWQ7XG4gXHRfX2xlMzIgbl9jaGFubmVscztcbiBcdF9fbGUzMiBjaGFubmVsX3Byb2ZpbGVbSVdMX05VTV9DSEFOTkVMU19WMl07XG5AQCAtMjQ0LDYgKzI0NSwzMiBAQCBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjMge1xuIFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MSByZWd1bGF0b3J5O1xuIH0gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JTUF9BUElfU19WRVJfMyAqL1xuIFxuKy8qKlxuKyAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcF92NCAtIHJlc3BvbnNlIHRvIGdldCBOVk0gZGF0YVxuKyAqIEBnZW5lcmFsOiBnZW5lcmFsIE5WTSBkYXRhXG4rICogQG1hY19za3U6IGRhdGEgcmVsYXRpbmcgdG8gTUFDIHNrdVxuKyAqIEBwaHlfc2t1OiBkYXRhIHJlbGF0aW5nIHRvIFBIWSBza3VcbisgKiBAcmVndWxhdG9yeTogcmVndWxhdG9yeSBkYXRhXG4rICovXG4rc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3Y0IHtcbitcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX2dlbmVyYWwgZ2VuZXJhbDtcbitcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3NrdSBtYWNfc2t1O1xuK1x0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcGh5IHBoeV9za3U7XG4rXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5X3YyIHJlZ3VsYXRvcnk7XG4rfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl80ICovXG4rXG4rLyoqXG4rICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSAtIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb25cbisgKiBAbGFyX2VuYWJsZWQ6IGlzIExBUiBlbmFibGVkXG4rICogQG5fY2hhbm5lbHM6IG51bWJlciBvZiB2YWxpZCBjaGFubmVscyBpbiB0aGUgYXJyYXlcbisgKiBAY2hhbm5lbF9wcm9maWxlOiByZWd1bGF0b3J5IGRhdGEgb2YgdGhpcyBjaGFubmVsXG4rICovXG4rc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSB7XG4rXHRfX2xlMzIgbGFyX2VuYWJsZWQ7XG4rXHRfX2xlMzIgbl9jaGFubmVscztcbitcdF9fbGUzMiBjaGFubmVsX3Byb2ZpbGVbSVdMX05VTV9DSEFOTkVMU19WM107XG4rfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUkVHVUxBVE9SWV9TX1ZFUl8zICovXG4rXG4gLyoqXG4gICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwIC0gcmVzcG9uc2UgdG8gZ2V0IE5WTSBkYXRhXG4gICogQGdlbmVyYWw6IGdlbmVyYWwgTlZNIGRhdGFcbkBAIC0yNTYsNyArMjgzLDcgQEAgc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwIHtcbiBcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3NrdSBtYWNfc2t1O1xuIFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcGh5IHBoeV9za3U7XG4gXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5IHJlZ3VsYXRvcnk7XG4tfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl80ICovXG4rfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl81ICovXG4gXG4gLyoqXG4gICogc3RydWN0IGl3bF9udm1fYWNjZXNzX2NvbXBsZXRlX2NtZCAtIE5WTV9BQ0NFU1MgY29tbWFuZHMgYXJlIGNvbXBsZXRlZFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaFxuaW5kZXggMDhmNGNjM2VhMWMzMDQuLmVlNzgzNzEwODJiMDk0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmhcbkBAIC0xLDYgKzEsNiBAQFxuIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZSAqL1xuIC8qXG4tICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQsIDIwMTgtMjAyNSBJbnRlbCBDb3Jwb3JhdGlvblxuKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBJbnRlbCBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgR21iSFxuICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEludGVsIERldXRzY2hsYW5kIEdtYkhcbiAgKi9cbkBAIC0xMzE5LDcgKzEzMTksNyBAQCBzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9tYXRjaF9pbmZvIHtcbiBcdHU4IHJlc3VtZV93aGlsZV9zY2FubmluZztcbiBcdHU4IHNlbGZfcmVjb3Zlcnk7XG4gXHRfX2xlMTYgcmVzZXJ2ZWQ7XG4tXHRzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlX21hdGNoIG1hdGNoZXNbXTtcbitcdHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX3Byb2ZpbGVfbWF0Y2ggbWF0Y2hlc1tJV0xfU0NBTl9NQVhfUFJPRklMRVNfVjJdO1xuIH0gX19wYWNrZWQ7IC8qIFNDQU5fT0ZGTE9BRF9QUk9GSUxFU19RVUVSWV9SU1BfU19WRVJfMyBhbmRcbiBcdCAgICAgKiBTQ0FOX09GRkxPQURfTUFUQ0hfSU5GT19OT1RJRklDQVRJT05fU19WRVJfMVxuIFx0ICAgICAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcbmluZGV4IGFmZmY4ZDUxY2E5NTBjLi5lYzBmZjU4YWIzMTJkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xuQEAgLTEsNiArMSw2IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4gLypcbi0gKiBDb3B5cmlnaHQoYykgMjAyMC0yMDI1IEludGVsIENvcnBvcmF0aW9uXG4rICogQ29weXJpZ2h0KGMpIDIwMjAtMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxuICAqL1xuIFxuICNpbmNsdWRlIFwiaXdsLWRydi5oXCJcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2luY2x1ZGUgXCJmdy9hcGkvYWxpdmUuaFwiXG4gI2luY2x1ZGUgXCJmdy91ZWZpLmhcIlxuICNpbmNsdWRlIFwiZncvaW1nLmhcIlxuKyNpbmNsdWRlIFwiZncvZGJnLmhcIlxuIFxuICNkZWZpbmUgSVdMX1BOVk1fUkVEVUNFRF9DQVBfQklUIEJJVCgyNSlcbiBcbkBAIC0yNiw2ICsyNywxMiBAQCBzdGF0aWMgYm9vbCBpd2xfcG52bV9jb21wbGV0ZV9mbihzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcbiBcdHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zID0gKHN0cnVjdCBpd2xfdHJhbnMgKilkYXRhO1xuIFx0c3RydWN0IGl3bF9wbnZtX2luaXRfY29tcGxldGVfbnRmeSAqcG52bV9udGYgPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuIFxuK1x0aWYgKElXTF9GV19DSEVDSyh0cmFucyxcbitcdFx0XHQgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzYyBzaXplb2YoKnBudm1fbnRmKSxcbitcdFx0XHQgXCJCYWQgbm90aWYgbGVuOiAlZFxcblwiLFxuK1x0XHRcdCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkpKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbiBcdElXTF9ERUJVR19GVyh0cmFucyxcbiBcdFx0ICAgICBcIlBOVk0gY29tcGxldGUgbm90aWZpY2F0aW9uIHJlY2VpdmVkIHdpdGggc3RhdHVzIDB4JTB4XFxuXCIsXG4gXHRcdCAgICAgbGUzMl90b19jcHUocG52bV9udGYtXHUwMDNlc3RhdHVzKSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuY1xuaW5kZXggOGQ5ZmYzNmUzMGY1ZTMuLjFkNmQzOGVlNTViNDk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jXG5AQCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgaXdsX2FkZF9tY2NfdG9fdGFzX2Jsb2NrX2xpc3QodTE2ICpsaXN0LCB1OCAqc2l6ZSwgdTE2IG1jYylcbiBcdGlmICgqc2l6ZSBcdTAwM2U9IElXTF9XVEFTX0JMQUNLX0xJU1RfTUFYKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4tXHRsaXN0WypzaXplKytdID0gbWNjO1xuK1x0bGlzdFsoKnNpemUpKytdID0gbWNjO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIElXTF9FWFBPUlRfU1lNQk9MKGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvc21lbS5jXG5pbmRleCAzNDRkZGRlODViMTg5Ny4uMjBlZDI2YTFiYjAwZWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9zbWVtLmNcbkBAIC0xLDYgKzEsNiBAQFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuIC8qXG4tICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQsIDIwMTgtMjAyMSwgMjAyNSBJbnRlbCBDb3Jwb3JhdGlvblxuKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjEsIDIwMjUtMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxuICAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEludGVsIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBHbWJIXG4gICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgSW50ZWwgRGV1dHNjaGxhbmQgR21iSFxuICAqL1xuQEAgLTE0LDkgKzE0LDE3IEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbiB7XG4gXHRzdHJ1Y3QgaXdsX3NoYXJlZF9tZW1fY2ZnICptZW1fY2ZnID0gKHZvaWQgKilwa3QtXHUwMDNlZGF0YTtcbiBcdGludCBpLCBsbWFjO1xuLVx0aW50IGxtYWNfbnVtID0gbGUzMl90b19jcHUobWVtX2NmZy1cdTAwM2VsbWFjX251bSk7XG4tXHR1OCBhcGlfdmVyID0gaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZndydC1cdTAwM2VmdywgU1lTVEVNX0dST1VQLFxuLVx0XHRcdFx0XHQgICAgIFNIQVJFRF9NRU1fQ0ZHX0NNRCwgMCk7XG4rXHRpbnQgbG1hY19udW07XG4rXHR1OCBhcGlfdmVyO1xuK1xuK1x0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXHUwMDNjXG4rXHRcdFx0IG9mZnNldG9mZW5kKHN0cnVjdCBpd2xfc2hhcmVkX21lbV9jZmcsIGxtYWNfc21lbVsxXSksXG4rXHRcdFx0IFwiYmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemVcXG5cIikpXG4rXHRcdHJldHVybjtcbitcbitcdGxtYWNfbnVtID0gbGUzMl90b19jcHUobWVtX2NmZy1cdTAwM2VsbWFjX251bSk7XG4rXHRhcGlfdmVyID0gaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZndydC1cdTAwM2VmdywgU1lTVEVNX0dST1VQLFxuK1x0XHRcdFx0XHQgIFNIQVJFRF9NRU1fQ0ZHX0NNRCwgMCk7XG4gXG4gXHQvKiBOb3RlOiBub3RpZmljYXRpb24gaGFzIDMgZW50cmllcywgYnV0IHdlIG9ubHkgZXhwZWN0IDIgKi9cbiBcdGlmIChJV0xfRldfQ0hFQ0soZndydCwgbG1hY19udW0gXHUwMDNlIEFSUkFZX1NJWkUoZndydC1cdTAwM2VzbWVtX2NmZy5sbWFjKSxcbkBAIC0zMCw3ICszOCw3IEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbiBcbiBcdGlmIChhcGlfdmVyIFx1MDAzZT0gNCBcdTAwMjZcdTAwMjZcbiBcdCAgICAhSVdMX0ZXX0NIRUNLKGZ3cnQsIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcdTAwM2Mgc2l6ZW9mKCptZW1fY2ZnKSxcbi1cdFx0XHQgIFwiYmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemVcXG5cIikpIHtcbitcdFx0XHQgIFwiYmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemUgKHY0KVxcblwiKSkge1xuIFx0XHRmd3J0LVx1MDAzZXNtZW1fY2ZnLnJ4ZmlmbzJfY29udHJvbF9zaXplID1cbiBcdFx0XHRsZTMyX3RvX2NwdShtZW1fY2ZnLVx1MDAzZXJ4ZmlmbzJfY29udHJvbF9zaXplKTtcbiBcdH1cbkBAIC01Myw2ICs2MSwxMSBAQCBzdGF0aWMgdm9pZCBpd2xfcGFyc2Vfc2hhcmVkX21lbShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXG4gXHRzdHJ1Y3QgaXdsX3NoYXJlZF9tZW1fY2ZnX3YyICptZW1fY2ZnID0gKHZvaWQgKilwa3QtXHUwMDNlZGF0YTtcbiBcdGludCBpO1xuIFxuK1x0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXHUwMDNjXG4rXHRcdFx0IG9mZnNldG9mKHN0cnVjdCBpd2xfc2hhcmVkX21lbV9jZmdfdjIsIHJ4Zmlmb19hZGRyKSxcbitcdFx0XHQgXCJiYWQgc2hhcmVkIG1lbSBub3RpZmljYXRpb24gc2l6ZVxcblwiKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0ZndydC1cdTAwM2VzbWVtX2NmZy5udW1fbG1hY3MgPSAxO1xuIFxuIFx0ZndydC1cdTAwM2VzbWVtX2NmZy5udW1fdHhmaWZvX2VudHJpZXMgPSBBUlJBWV9TSVpFKG1lbV9jZmctXHUwMDNldHhmaWZvX3NpemUpO1xuQEAgLTY3LDYgKzgwLDExIEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbiBcdC8qIG5ldyBBUEkgaGFzIG1vcmUgZGF0YSwgZnJvbSByeGZpZm9fYWRkciBmaWVsZCBhbmQgb24gKi9cbiBcdGlmIChmd19oYXNfY2FwYShcdTAwMjZmd3J0LVx1MDAzZWZ3LVx1MDAzZXVjb2RlX2NhcGEsXG4gXHRcdFx0SVdMX1VDT0RFX1RMVl9DQVBBX0VYVEVORF9TSEFSRURfTUVNX0NGRykpIHtcbitcdFx0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXHUwMDNjXG4rXHRcdFx0XHQgc2l6ZW9mKCptZW1fY2ZnKSxcbitcdFx0XHRcdCBcImJhZCBzaGFyZWQgbWVtIG5vdGlmaWNhdGlvbiBzaXplIChleHRlbmQpXFxuXCIpKVxuK1x0XHRcdHJldHVybjtcbitcbiBcdFx0QlVJTERfQlVHX09OKHNpemVvZihmd3J0LVx1MDAzZXNtZW1fY2ZnLmludGVybmFsX3R4Zmlmb19zaXplKSAhPVxuIFx0XHRcdCAgICAgc2l6ZW9mKG1lbV9jZmctXHUwMDNlaW50ZXJuYWxfdHhmaWZvX3NpemUpKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oXG5pbmRleCA2YTM1MzlhZDczMzE3ZS4uM2FjN2YwMDBlZGU0NzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmhcbkBAIC00MTUsNiArNDE1LDcgQEAgc3RydWN0IGl3bF9tYWNfY2ZnIHtcbiAgKiBAdmh0X211X21pbW9fc3VwcG9ydGVkOiBWSFQgTVUtTUlNTyBzdXBwb3J0XG4gICogQG52bV90eXBlOiBzZWUgXHUwMDI2ZW51bSBpd2xfbnZtX3R5cGVcbiAgKiBAdWhiX3N1cHBvcnRlZDogdWx0cmEgaGlnaCBiYW5kIGNoYW5uZWxzIHN1cHBvcnRlZFxuKyAqIEB1bmlpOV9zdXBwb3J0ZWQ6IFVOSUktOSBjaGFubmVscyBzdXBwb3J0ZWRcbiAgKiBAZWh0X3N1cHBvcnRlZDogRUhUIHN1cHBvcnRlZFxuICAqIEB1aHJfc3VwcG9ydGVkOiBVSFIgc3VwcG9ydGVkXG4gICogQG51bV9yYmRzOiBudW1iZXIgb2YgcmVjZWl2ZSBidWZmZXIgZGVzY3JpcHRvcnMgdG8gdXNlXG5AQCAtNDUwLDYgKzQ1MSw3IEBAIHN0cnVjdCBpd2xfcmZfY2ZnIHtcbiBcdCAgICBscF94dGFsX3dvcmthcm91bmQ6MSxcbiBcdCAgICB2aHRfbXVfbWltb19zdXBwb3J0ZWQ6MSxcbiBcdCAgICB1aGJfc3VwcG9ydGVkOjEsXG4rXHQgICAgdW5paTlfc3VwcG9ydGVkOjEsXG4gXHQgICAgZWh0X3N1cHBvcnRlZDoxLFxuIFx0ICAgIHVocl9zdXBwb3J0ZWQ6MTtcbiBcdHU4IHZhbGlkX3R4X2FudDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jXG5pbmRleCBkNDdiNGFlMmY0ODYzMC4uYmQ1MzUzZmRkZTgxYTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmNcbkBAIC04NSwxNiArODUsNyBAQCBzdGF0aWMgY29uc3QgdTE2IGl3bF9udm1fY2hhbm5lbHNbXSA9IHtcbiBcdDE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1XG4gfTtcbiBcbi1zdGF0aWMgY29uc3QgdTE2IGl3bF9leHRfbnZtX2NoYW5uZWxzW10gPSB7XG4tXHQvKiAyLjQgR0h6ICovXG4tXHQxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsXG4tXHQvKiA1IEdIeiAqL1xuLVx0MzYsIDQwLCA0NCwgNDgsIDUyLCA1NiwgNjAsIDY0LCA2OCwgNzIsIDc2LCA4MCwgODQsIDg4LCA5Mixcbi1cdDk2LCAxMDAsIDEwNCwgMTA4LCAxMTIsIDExNiwgMTIwLCAxMjQsIDEyOCwgMTMyLCAxMzYsIDE0MCwgMTQ0LFxuLVx0MTQ5LCAxNTMsIDE1NywgMTYxLCAxNjUsIDE2OSwgMTczLCAxNzcsIDE4MVxuLX07XG4tXG4tc3RhdGljIGNvbnN0IHUxNiBpd2xfdWhiX252bV9jaGFubmVsc1tdID0ge1xuK3N0YXRpYyBjb25zdCB1MTYgaXdsX3VuaWk5X252bV9jaGFubmVsc1tdID0ge1xuIFx0LyogMi40IEdIeiAqL1xuIFx0MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LFxuIFx0LyogNSBHSHogKi9cbkBAIC0xMDUsMTIgKzk2LDE2IEBAIHN0YXRpYyBjb25zdCB1MTYgaXdsX3VoYl9udm1fY2hhbm5lbHNbXSA9IHtcbiBcdDEsIDUsIDksIDEzLCAxNywgMjEsIDI1LCAyOSwgMzMsIDM3LCA0MSwgNDUsIDQ5LCA1MywgNTcsIDYxLCA2NSwgNjksXG4gXHQ3MywgNzcsIDgxLCA4NSwgODksIDkzLCA5NywgMTAxLCAxMDUsIDEwOSwgMTEzLCAxMTcsIDEyMSwgMTI1LCAxMjksXG4gXHQxMzMsIDEzNywgMTQxLCAxNDUsIDE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1LCAxNjksIDE3MywgMTc3LCAxODEsIDE4NSxcbi1cdDE4OSwgMTkzLCAxOTcsIDIwMSwgMjA1LCAyMDksIDIxMywgMjE3LCAyMjEsIDIyNSwgMjI5LCAyMzNcbitcdDE4OSwgMTkzLCAxOTcsIDIwMSwgMjA1LCAyMDksIDIxMywgMjE3LCAyMjEsIDIyNSwgMjI5LCAyMzMsXG4rXG4rXHQvKiBVTklJLTkgKi9cbitcdDIzNywgMjQxLCAyNDUsIDI0OSwgMjUzXG4gfTtcbiBcbiAjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTXHRcdEFSUkFZX1NJWkUoaXdsX252bV9jaGFubmVscylcbi0jZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVFx0QVJSQVlfU0laRShpd2xfZXh0X252bV9jaGFubmVscylcbi0jZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQlx0QVJSQVlfU0laRShpd2xfdWhiX252bV9jaGFubmVscylcbisjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVFx0NTFcbisjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQlx0MTEwXG4rI2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU19VTklJOVx0QVJSQVlfU0laRShpd2xfdW5paTlfbnZtX2NoYW5uZWxzKVxuICNkZWZpbmUgTlVNXzJHSFpfQ0hBTk5FTFNcdFx0MTRcbiAjZGVmaW5lIE5VTV81R0haX0NIQU5ORUxTXHRcdDM3XG4gI2RlZmluZSBGSVJTVF8yR0haX0hUX01JTlVTXHRcdDVcbkBAIC0zNTEsMTIgKzM0NiwxNSBAQCBzdGF0aWMgaW50IGl3bF9pbml0X2NoYW5uZWxfbWFwKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIFx0aW50IG51bV9vZl9jaDtcbiBcdGNvbnN0IHUxNiAqbnZtX2NoYW47XG4gXG4tXHRpZiAoY2ZnLVx1MDAzZXVoYl9zdXBwb3J0ZWQpIHtcbitcdGlmIChjZmctXHUwMDNldW5paTlfc3VwcG9ydGVkKSB7XG4rXHRcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5O1xuK1x0XHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XG4rXHR9IGVsc2UgaWYgKGNmZy1cdTAwM2V1aGJfc3VwcG9ydGVkKSB7XG4gXHRcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQjtcbi1cdFx0bnZtX2NoYW4gPSBpd2xfdWhiX252bV9jaGFubmVscztcbitcdFx0bnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzO1xuIFx0fSBlbHNlIGlmIChjZmctXHUwMDNlbnZtX3R5cGUgPT0gSVdMX05WTV9FWFQpIHtcbiBcdFx0bnVtX29mX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUO1xuLVx0XHRudm1fY2hhbiA9IGl3bF9leHRfbnZtX2NoYW5uZWxzO1xuK1x0XHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XG4gXHR9IGVsc2Uge1xuIFx0XHRudW1fb2ZfY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMUztcbiBcdFx0bnZtX2NoYW4gPSBpd2xfbnZtX2NoYW5uZWxzO1xuQEAgLTE0NDEsNyArMTQzOSw5IEBAIGl3bF9wYXJzZV9tZWlfbnZtX2RhdGEoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnICpjZmcsXG4gXHR1OCByeF9jaGFpbnMgPSBmdy1cdTAwM2V2YWxpZF9yeF9hbnQ7XG4gXHR1OCB0eF9jaGFpbnMgPSBmdy1cdTAwM2V2YWxpZF9yeF9hbnQ7XG4gXG4tXHRpZiAoY2ZnLVx1MDAzZXVoYl9zdXBwb3J0ZWQpXG4rXHRpZiAoY2ZnLVx1MDAzZXVuaWk5X3N1cHBvcnRlZClcbitcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5KTtcbitcdGVsc2UgaWYgKGNmZy1cdTAwM2V1aGJfc3VwcG9ydGVkKVxuIFx0XHRkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCKTtcbiBcdGVsc2VcbiBcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVCk7XG5AQCAtMTUwNiw3ICsxNTA2LDkgQEAgaXdsX3BhcnNlX252bV9kYXRhKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyAqY2ZnLFxuIFx0dTE2IGxhcl9jb25maWc7XG4gXHRjb25zdCBfX2xlMTYgKmNoX3NlY3Rpb247XG4gXG4tXHRpZiAoY2ZnLVx1MDAzZXVoYl9zdXBwb3J0ZWQpXG4rXHRpZiAoY2ZnLVx1MDAzZXVuaWk5X3N1cHBvcnRlZClcbitcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5KTtcbitcdGVsc2UgaWYgKGNmZy1cdTAwM2V1aGJfc3VwcG9ydGVkKVxuIFx0XHRkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCKTtcbiBcdGVsc2UgaWYgKGNmZy1cdTAwM2Vudm1fdHlwZSAhPSBJV0xfTlZNX0VYVClcbiBcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTKTtcbkBAIC0xNzI3LDEyICsxNzI5LDE1IEBAIGl3bF9wYXJzZV9udm1fbWNjX2luZm8oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gXHRpbnQgbWF4X251bV9jaDtcbiBcdHN0cnVjdCBpd2xfcmVnX2NhcGEgcmVnX2NhcGE7XG4gXG4tXHRpZiAoY2ZnLVx1MDAzZXVoYl9zdXBwb3J0ZWQpIHtcbitcdGlmIChjZmctXHUwMDNldW5paTlfc3VwcG9ydGVkKSB7XG4rXHRcdG1heF9udW1fY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMU19VTklJOTtcbitcdFx0bnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzO1xuK1x0fSBlbHNlIGlmIChjZmctXHUwMDNldWhiX3N1cHBvcnRlZCkge1xuIFx0XHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCO1xuLVx0XHRudm1fY2hhbiA9IGl3bF91aGJfbnZtX2NoYW5uZWxzO1xuK1x0XHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XG4gXHR9IGVsc2UgaWYgKGNmZy1cdTAwM2Vudm1fdHlwZSA9PSBJV0xfTlZNX0VYVCkge1xuIFx0XHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUO1xuLVx0XHRudm1fY2hhbiA9IGl3bF9leHRfbnZtX2NoYW5uZWxzO1xuK1x0XHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XG4gXHR9IGVsc2Uge1xuIFx0XHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFM7XG4gXHRcdG52bV9jaGFuID0gaXdsX252bV9jaGFubmVscztcbkBAIC0yMDg3LDEzICsyMDkyLDI2IEBAIHN0cnVjdCBpd2xfbnZtX2RhdGEgKml3bF9nZXRfbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3YzICpyc3BfdjM7XG4gXHRib29sIHY0ID0gZndfaGFzX2FwaShcdTAwMjZmdy1cdTAwM2V1Y29kZV9jYXBhLFxuIFx0XHRcdCAgICAgSVdMX1VDT0RFX1RMVl9BUElfUkVHVUxBVE9SWV9OVk1fSU5GTyk7XG4tXHRzaXplX3QgcnNwX3NpemUgPSB2NCA/IHNpemVvZigqcnNwKSA6IHNpemVvZigqcnNwX3YzKTtcbitcdHNpemVfdCByc3Bfc2l6ZTtcbiBcdHZvaWQgKmNoYW5uZWxfcHJvZmlsZTtcbiBcbiBcdHJldCA9IGl3bF90cmFuc19zZW5kX2NtZCh0cmFucywgXHUwMDI2aGNtZCk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIFxuK1x0c3dpdGNoIChpd2xfZndfbG9va3VwX25vdGlmX3ZlcihmdywgUkVHVUxBVE9SWV9BTkRfTlZNX0dST1VQLFxuK1x0XHRcdFx0XHROVk1fR0VUX0lORk8sIDApKSB7XG4rXHRjYXNlIDU6XG4rXHRcdHJzcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcCk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSA0OlxuK1x0XHRyc3Bfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjQpO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHJzcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcF92Myk7XG4rXHRcdGJyZWFrO1xuK1x0fVxuK1xuIFx0aWYgKFdBUk4oaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihoY21kLnJlc3BfcGt0KSAhPSByc3Bfc2l6ZSxcbiBcdFx0IFwiSW52YWxpZCBwYXlsb2FkIGxlbiBpbiBOVk0gcmVzcG9uc2UgZnJvbSBGVyAlZFwiLFxuIFx0XHQgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihoY21kLnJlc3BfcGt0KSkpIHtcbkBAIC0yMTA3LDcgKzIxMjUsNyBAQCBzdHJ1Y3QgaXdsX252bV9kYXRhICppd2xfZ2V0X252bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiBcdGlmIChlbXB0eV9vdHApXG4gXHRcdElXTF9JTkZPKHRyYW5zLCBcIk9UUCBpcyBlbXB0eVxcblwiKTtcbiBcbi1cdG52bSA9IGt6YWxsb2NfZmxleCgqbnZtLCBjaGFubmVscywgSVdMX05VTV9DSEFOTkVMU19WMik7XG4rXHRudm0gPSBremFsbG9jX2ZsZXgoKm52bSwgY2hhbm5lbHMsIElXTF9OVU1fQ0hBTk5FTFNfVjMpO1xuIFx0aWYgKCFudm0pIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbiBcdFx0Z290byBvdXQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmNcbmluZGV4IDIxODVkYWRlOTVmOGNiLi4yZGY2NjQzYTVhYTgwZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmNcbkBAIC0xMTIwLDYgKzExMjAsMTAgQEAgdm9pZCBpd2xfbWxkX2hhbmRsZV90eF9yZXNwX25vdGlmKHN0cnVjdCBpd2xfbWxkICptbGQsXG4gXHRzc24gPSBsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKWFnZ19zdGF0dXMgK1xuIFx0XHRcdCAgIHR4X3Jlc3AtXHUwMDNlZnJhbWVfY291bnQpIFx1MDAyNiAweEZGRkY7XG4gXG4rXHRpZiAoSVdMX0ZXX0NIRUNLKG1sZCwgdHhxX2lkIFx1MDAzZT0gQVJSQVlfU0laRShtbGQtXHUwMDNlZndfaWRfdG9fdHhxKSxcbitcdFx0XHQgXCJJbnZhbGlkIHR4cSBpZCAlZFxcblwiLCB0eHFfaWQpKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2c2ticyk7XG4gXG4gXHQvKiB3ZSBjYW4gZnJlZSB1bnRpbCBzc24gJSBxLm5fYmQgbm90IGluY2x1c2l2ZSAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jXG5pbmRleCAzNDI5ZDlhMTBlNDIwOS4uNmIxMWZhMzJlYTVjNmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jXG5AQCAtMTUwOSw2ICsxNTA5LDEwIEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRcdGlmIChXQVJOX09OX09OQ0UodHJ1bmNhdGVkIFx1MDAzYyAwKSlcbiBcdFx0XHR0cnVuY2F0ZWQgPSAwO1xuIFxuK1x0XHQvKiB0aGlzIHdvdWxkIGJlIGEgZmlybXdhcmUgYnVnICovXG4rXHRcdGlmIChXQVJOX09OX09OQ0UocGt0c2l6ZSBcdTAwM2Mgc2l6ZW9mKCpoZHIpKSlcbitcdFx0XHRyZXR1cm47XG4rXG4gXHRcdGlmIChpZWVlODAyMTFfaXNfZGF0YShoZHItXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbiBcdFx0XHRpbnQgaGRybGVuID0gaWVlZTgwMjExX2hkcmxlbihoZHItXHUwMDNlZnJhbWVfY29udHJvbCk7XG4gXHRcdFx0aW50IGl2bGVuID0gMCwgaWN2bGVuID0gNDsgLyogYWxzbyBGQ1MgKi9cbkBAIC0xNTE3LDEwICsxNTIxLDYgQEAgc3RhdGljIHZvaWQgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnMoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0XHRpZiAoIXBrdClcbiBcdFx0XHRcdGdvdG8gcmVwb3J0O1xuIFxuLVx0XHRcdHNrYl9wdXRfZGF0YShwa3QsIHBrdGRhdGEsIGhkcmxlbik7XG4tXHRcdFx0cGt0ZGF0YSArPSBoZHJsZW47XG4tXHRcdFx0cGt0c2l6ZSAtPSBoZHJsZW47XG4tXG4gXHRcdFx0aWYgKGllZWU4MDIxMV9oYXNfcHJvdGVjdGVkKGhkci1cdTAwM2VmcmFtZV9jb250cm9sKSkge1xuIFx0XHRcdFx0LypcbiBcdFx0XHRcdCAqIFRoaXMgaXMgdW5sb2NrZWQgYW5kIHVzaW5nIGd0a19pKGMpdmxlbixcbkBAIC0xNTQ2LDYgKzE1NDYsMTcgQEAgc3RhdGljIHZvaWQgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnMoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0XHRcdHRydW5jYXRlZCA9IDA7XG4gXHRcdFx0fVxuIFxuK1x0XHRcdGlmIChJV0xfRldfQ0hFQ0sobXZtLFxuK1x0XHRcdFx0XHQgcGt0c2l6ZSBcdTAwM2M9IGhkcmxlbiArIGl2bGVuICsgaWN2bGVuLFxuK1x0XHRcdFx0XHQgXCJwa3RzaXplIGlzIHRvbyBzbWFsbCAlZFxcblwiLFxuK1x0XHRcdFx0XHQgcGt0c2l6ZSkpIHtcbitcdFx0XHRcdGtmcmVlX3NrYihwa3QpO1xuK1x0XHRcdFx0cmV0dXJuO1xuK1x0XHRcdH1cbitcbitcdFx0XHRza2JfcHV0X2RhdGEocGt0LCBwa3RkYXRhLCBoZHJsZW4pO1xuK1x0XHRcdHBrdGRhdGEgKz0gaGRybGVuO1xuK1x0XHRcdHBrdHNpemUgLT0gaGRybGVuO1xuIFx0XHRcdHBrdHNpemUgLT0gaXZsZW4gKyBpY3ZsZW47XG4gXHRcdFx0cGt0ZGF0YSArPSBpdmxlbjtcbiBcbkBAIC0yNDQ4LDEzICsyNDU5LDE1IEBAIGl3bF9tdm1fbmV0ZGV0ZWN0X3F1ZXJ5X3Jlc3VsdHMoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcbiBcdGlmIChmd19oYXNfYXBpKFx1MDAyNm12bS1cdTAwM2Vmdy1cdTAwM2V1Y29kZV9jYXBhLFxuIFx0XHQgICAgICAgSVdMX1VDT0RFX1RMVl9BUElfU0NBTl9PRkZMT0FEX0NIQU5TKSkge1xuLVx0XHRxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbyk7XG4gXHRcdG1hdGNoZXNfbGVuID0gc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX3Byb2ZpbGVfbWF0Y2gpICpcbiBcdFx0XHRtYXhfcHJvZmlsZXM7XG4rXHRcdHF1ZXJ5X2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8sXG4rXHRcdFx0XHQgICAgIG1hdGNoZXMpICsgbWF0Y2hlc19sZW47XG4gXHR9IGVsc2Uge1xuLVx0XHRxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZXNfcXVlcnlfdjEpO1xuIFx0XHRtYXRjaGVzX2xlbiA9IHNpemVvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlX21hdGNoX3YxKSAqXG4gXHRcdFx0bWF4X3Byb2ZpbGVzO1xuK1x0XHRxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZXNfcXVlcnlfdjEpICtcbitcdFx0XHRtYXRjaGVzX2xlbjtcbiBcdH1cbiBcbiBcdGxlbiA9IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oY21kLnJlc3BfcGt0KTtcbkBAIC0yNzU2LDcgKzI3NjksNyBAQCBzdGF0aWMgaW50IGl3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0KHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRcdFx0XHRcdCBzdHJ1Y3QgaXdsX3dvd2xhbl9zdGF0dXNfZGF0YSAqc3RhdHVzLFxuIFx0XHRcdFx0XHQgdTMyIGxlbilcbiB7XG4tXHR1MzIgZGF0YV9zaXplLCBwYWNrZXRfbGVuID0gbGUzMl90b19jcHUobm90aWYtXHUwMDNld2FrZV9wYWNrZXRfbGVuZ3RoKTtcbitcdHUzMiBkYXRhX3NpemUsIHBhY2tldF9sZW47XG4gXG4gXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKm5vdGlmKSkge1xuIFx0XHRJV0xfRVJSKG12bSwgXCJJbnZhbGlkIFdvV0xBTiB3YWtlIHBhY2tldCBub3RpZmljYXRpb24hXFxuXCIpO1xuQEAgLTI3NzUsNiArMjc4OCw3IEBAIHN0YXRpYyBpbnQgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3Qoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXG4rXHRwYWNrZXRfbGVuID0gbGUzMl90b19jcHUobm90aWYtXHUwMDNld2FrZV9wYWNrZXRfbGVuZ3RoKTtcbiBcdGRhdGFfc2l6ZSA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCBpd2xfd293bGFuX3dha2VfcGt0X25vdGlmLCB3YWtlX3BhY2tldCk7XG4gXG4gXHQvKiBkYXRhX3NpemUgZ290IHRoZSBwYWRkaW5nIGZyb20gdGhlIG5vdGlmaWNhdGlvbiwgcmVtb3ZlIGl0LiAqL1xuQEAgLTI4MDcsNyArMjgyMSw4IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRpZiAoSVNfRVJSX09SX05VTEwodmlmKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8pICsgbWF0Y2hlc19sZW4pIHtcbitcdGlmIChsZW4gXHUwMDNjIG9mZnNldG9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8sIG1hdGNoZXMpICtcbitcdFx0ICAgIG1hdGNoZXNfbGVuKSB7XG4gXHRcdElXTF9FUlIobXZtLCBcIkludmFsaWQgc2NhbiBtYXRjaCBpbmZvIG5vdGlmaWNhdGlvblxcblwiKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuY1xuaW5kZXggM2ExNGNhNWU1MTJhZTMuLjhkN2Y2MGRjZDAyNzBlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmNcbkBAIC02NDYsNyArNjQ2LDggQEAgc3RhdGljIHZvaWQgaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFdBUk5fT04oKnRhcmdldC1cdTAwM2VjaXBoZXIgPT0gSVdMX0xPQ0FUSU9OX0NJUEhFUl9JTlZBTElEKTtcbiB9XG4gXG4tc3RhdGljIHZvaWRcbisvKiBUaGUgdGsgYnVmZmVyIGlzIGFzc3VtZWQgdG8gYmUgZXhhY3RseSBUS18xMUFaX0xFTiBieXRlcyAqL1xuK3N0YXRpYyBpbnRcbiBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdFx0XHR1OCAqYnNzaWQsIHU4ICpjaXBoZXIsIHU4ICpobHRrLCB1OCAqdGssXG4gXHRcdFx0XHR1OCAqcnhfcG4sIHU4ICp0eF9wbiwgX19sZTMyICpmbGFncylcbkBAIC02NTYsMTIgKzY1NywxMiBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRzdHJ1Y3QgaXdsX212bV92aWYgKm12bXZpZiA9IGl3bF9tdm1fdmlmX2Zyb21fbWFjODAyMTEodmlmKTtcbiBcbiBcdGlmIChtdm12aWYtXHUwMDNlZnRtX3VucHJvdGVjdGVkKVxuLVx0XHRyZXR1cm47XG4rXHRcdHJldHVybiAwO1xuICNlbmRpZlxuIFxuIFx0aWYgKCEobGUzMl90b19jcHUoKmZsYWdzKSBcdTAwMjYgKElXTF9JTklUSUFUT1JfQVBfRkxBR1NfTk9OX1RCIHxcbiBcdFx0ICAgICAgIElXTF9JTklUSUFUT1JfQVBfRkxBR1NfVEIpKSlcbi1cdFx0cmV0dXJuO1xuK1x0XHRyZXR1cm4gMDtcbiBcbiBcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2bXZtLVx1MDAzZW11dGV4KTtcbiBcbkBAIC02NzksMTQgKzY4MCwzMSBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdGlmICh2aWYtXHUwMDNlY2ZnLmFzc29jIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIW1lbWNtcCh2aWYtXHUwMDNlYnNzX2NvbmYuYnNzaWQsIGJzc2lkLCBFVEhfQUxFTikpIHtcbiBcdFx0XHRzdHJ1Y3QgaXdsX212bV9mdG1faXRlcl9kYXRhIHRhcmdldDtcbitcdFx0XHR1MzIga2V5X2xlbjtcbiBcbiBcdFx0XHR0YXJnZXQuYnNzaWQgPSBic3NpZDtcbiBcdFx0XHR0YXJnZXQuY2lwaGVyID0gY2lwaGVyO1xuIFx0XHRcdHRhcmdldC50ayA9IE5VTEw7XG4gXHRcdFx0aWVlZTgwMjExX2l0ZXJfa2V5cyhtdm0tXHUwMDNlaHcsIHZpZiwgaXRlciwgXHUwMDI2dGFyZ2V0KTtcbiBcbi1cdFx0XHRpZiAoIVdBUk5fT04oIXRhcmdldC50aykpXG4tXHRcdFx0XHRtZW1jcHkodGssIHRhcmdldC50aywgVEtfMTFBWl9MRU4pO1xuK1x0XHRcdGlmIChXQVJOX09OKCF0YXJnZXQudGspKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRcdFx0c3dpdGNoICgqdGFyZ2V0LmNpcGhlcikge1xuK1x0XHRcdGNhc2UgSVdMX0xPQ0FUSU9OX0NJUEhFUl9DQ01QXzEyODpcbitcdFx0XHRjYXNlIElXTF9MT0NBVElPTl9DSVBIRVJfR0NNUF8xMjg6XG4rXHRcdFx0XHRrZXlfbGVuID0gV0xBTl9LRVlfTEVOX0NDTVA7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHRjYXNlIElXTF9MT0NBVElPTl9DSVBIRVJfR0NNUF8yNTY6XG4rXHRcdFx0XHRrZXlfbGVuID0gV0xBTl9LRVlfTEVOX0dDTVBfMjU2O1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0ZGVmYXVsdDpcbitcdFx0XHRcdFdBUk5fT04oMSk7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXG4rXHRcdFx0bWVtc2V0KHRrLCAwLCBUS18xMUFaX0xFTik7XG4rXHRcdFx0bWVtY3B5KHRrLCB0YXJnZXQudGssIGtleV9sZW4pO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdG1lbWNweSh0aywgZW50cnktXHUwMDNldGssIHNpemVvZihlbnRyeS1cdTAwM2V0aykpO1xuIFx0XHR9XG5AQCAtNjk1LDggKzcxMywxMCBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdG1lbWNweSh0eF9wbiwgZW50cnktXHUwMDNldHhfcG4sIHNpemVvZihlbnRyeS1cdTAwM2V0eF9wbikpO1xuIFxuIFx0XHRGVE1fU0VUX0ZMQUcoU0VDVVJFRCk7XG4tXHRcdHJldHVybjtcbitcdFx0cmV0dXJuIDA7XG4gXHR9XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludFxuQEAgLTcwOCwxMiArNzI4LDExIEBAIGl3bF9tdm1fZnRtX3B1dF90YXJnZXRfdjcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKG12bSwgdmlmLCB0YXJnZXQtXHUwMDNlYnNzaWQsXG4tXHRcdFx0XHRcdFx1MDAyNnRhcmdldC1cdTAwM2VjaXBoZXIsIHRhcmdldC1cdTAwM2VobHRrLFxuLVx0XHRcdFx0XHR0YXJnZXQtXHUwMDNldGssIHRhcmdldC1cdTAwM2VyeF9wbixcbi1cdFx0XHRcdFx0dGFyZ2V0LVx1MDAzZXR4X3BuLFxuLVx0XHRcdFx0XHRcdTAwMjZ0YXJnZXQtXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcbi1cdHJldHVybiBlcnI7XG4rXHRyZXR1cm4gaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LVx1MDAzZWJzc2lkLFxuK1x0XHRcdFx0XHQgICAgICBcdTAwMjZ0YXJnZXQtXHUwMDNlY2lwaGVyLCB0YXJnZXQtXHUwMDNlaGx0ayxcbitcdFx0XHRcdFx0ICAgICAgdGFyZ2V0LVx1MDAzZXRrLCB0YXJnZXQtXHUwMDNlcnhfcG4sXG4rXHRcdFx0XHRcdCAgICAgIHRhcmdldC1cdTAwM2V0eF9wbixcbitcdFx0XHRcdFx0ICAgICAgXHUwMDI2dGFyZ2V0LVx1MDAzZWluaXRpYXRvcl9hcF9mbGFncyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaXdsX212bV9mdG1fc3RhcnRfdjExKHN0cnVjdCBpd2xfbXZtICptdm0sXG5AQCAtODgxLDExICs5MDAsMTMgQEAgaXdsX212bV9mdG1fcHV0X3RhcmdldF92MTAoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdGl3bF9tdm1fZnRtX3NldF90YXJnZXRfZmxhZ3MobXZtLCBwZWVyLCBcdTAwMjZ0YXJnZXQtXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcbiBcdGl3bF9tdm1fZnRtX3NldF9zdGEobXZtLCB2aWYsIHBlZXIsIFx1MDAyNnRhcmdldC1cdTAwM2VzdGFfaWQsXG4gXHRcdFx0ICAgIFx1MDAyNnRhcmdldC1cdTAwM2Vpbml0aWF0b3JfYXBfZmxhZ3MpO1xuLVx0aXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LVx1MDAzZWJzc2lkLFxuLVx0XHRcdFx0XHRcdTAwMjZ0YXJnZXQtXHUwMDNlY2lwaGVyLCB0YXJnZXQtXHUwMDNlaGx0ayxcbi1cdFx0XHRcdFx0dGFyZ2V0LVx1MDAzZXRrLCB0YXJnZXQtXHUwMDNlcnhfcG4sXG4tXHRcdFx0XHRcdHRhcmdldC1cdTAwM2V0eF9wbixcbi1cdFx0XHRcdFx0XHUwMDI2dGFyZ2V0LVx1MDAzZWluaXRpYXRvcl9hcF9mbGFncyk7XG4rXHRyZXQgPSBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKG12bSwgdmlmLCB0YXJnZXQtXHUwMDNlYnNzaWQsXG4rXHRcdFx0XHRcdCAgICAgIFx1MDAyNnRhcmdldC1cdTAwM2VjaXBoZXIsIHRhcmdldC1cdTAwM2VobHRrLFxuK1x0XHRcdFx0XHQgICAgICB0YXJnZXQtXHUwMDNldGssIHRhcmdldC1cdTAwM2VyeF9wbixcbitcdFx0XHRcdFx0ICAgICAgdGFyZ2V0LVx1MDAzZXR4X3BuLFxuK1x0XHRcdFx0XHQgICAgICBcdTAwMjZ0YXJnZXQtXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4gXG4gXHRpMnJfbWF4X3N0cyA9IElXTF9NVk1fRlRNX0kyUl9NQVhfU1RTIFx1MDAzZSAxID8gMSA6XG4gXHRcdElXTF9NVk1fRlRNX0kyUl9NQVhfU1RTO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jXG5pbmRleCA2ZTUwN2Q2ZGNkZDJhMS4uZmE1MjNiZTkxZDhhZDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jXG5AQCAtOTY0LDEyICs5NjQsMjIgQEAgaW50IGl3bF9tdm1fZ2V0X3Nhcl9nZW9fcHJvZmlsZShzdHJ1Y3QgaXdsX212bSAqbXZtKVxuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuK1x0aWYgKElXTF9GV19DSEVDSyhtdm0sXG4rXHRcdFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oY21kLnJlc3BfcGt0KSAhPVxuK1x0XHRcdCBzaXplb2YoKnJlc3ApLFxuK1x0XHRcdCBcIldyb25nIHNpemUgZm9yIGl3bF9nZW9fdHhfcG93ZXJfcHJvZmlsZXNfcmVzcDogJWRcXG5cIixcbitcdFx0XHQgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihjbWQucmVzcF9wa3QpKSkge1xuK1x0XHRyZXQgPSAtRUlPO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbiBcdHJlc3AgPSAodm9pZCAqKWNtZC5yZXNwX3BrdC1cdTAwM2VkYXRhO1xuIFx0cmV0ID0gbGUzMl90b19jcHUocmVzcC1cdTAwM2Vwcm9maWxlX2lkeCk7XG4gXG4gXHRpZiAoV0FSTl9PTihyZXQgXHUwMDNlIEJJT1NfR0VPX01BWF9QUk9GSUxFX05VTSkpXG4gXHRcdHJldCA9IC1FSU87XG4gXG4rb3V0OlxuIFx0aXdsX2ZyZWVfcmVzcChcdTAwMjZjbWQpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcHRwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9wdHAuY1xuaW5kZXggZjM5ZWI0ODg2NGViNGIuLjQ5ZGNiMTM4ODAwN2JjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3B0cC5jXG5AQCAtMSw2ICsxLDYgQEBcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiAvKlxuLSAqIENvcHlyaWdodCAoQykgMjAyMSAtIDIwMjMsIDIwMjUgSW50ZWwgQ29ycG9yYXRpb25cbisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgLSAyMDIzLCAyMDI1LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cbiAgKi9cbiBcbiAjaW5jbHVkZSBcIm12bS5oXCJcbkBAIC0xMjEsNiArMTIxLDggQEAgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZncoc3RydWN0IGl3bF9tdm0gKm12bSwgdTMyICpncDIsIHU2NCAqc3lzX3RpbWUpXG4gXHQqc3lzX3RpbWUgPSAodTY0KWxlMzJfdG9fY3B1KHJlc3AtXHUwMDNlcGxhdGZvcm1fdGltZXN0YW1wX2hpKSBcdTAwM2NcdTAwM2MgMzIgfFxuIFx0XHRsZTMyX3RvX2NwdShyZXNwLVx1MDAzZXBsYXRmb3JtX3RpbWVzdGFtcF9sbyk7XG4gXG4rXHRpd2xfZnJlZV9yZXNwKFx1MDAyNmNtZCk7XG4rXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xuaW5kZXggZGM2OWM3MWZhYTc2Y2EuLmQzYzJmZTgzMDQ3NzdiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xuQEAgLTE1NDQsNiArMTU0NCwxNyBAQCBzdGF0aWMgaW5saW5lIHUzMiBpd2xfbXZtX2dldF9zY2Rfc3NuKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRyZXR1cm4gdmFsIFx1MDAyNiAweEZGRjtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBzaXplX3QgaXdsX212bV90eF9yZXNwX21pbl9sZW4oc3RydWN0IGl3bF9tdm0gKm12bSxcbitcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgaXdsX3R4X3Jlc3AgKnR4X3Jlc3ApXG4re1xuK1x0c3RydWN0IGFnZ190eF9zdGF0dXMgKmFnZ19zdGF0dXMgPVxuK1x0XHRpd2xfbXZtX2dldF9hZ2dfc3RhdHVzKG12bSwgdHhfcmVzcCk7XG4rXG4rXHQvKiBUaGUgYWdncmVnYXRlIHJlc3BvbnNlIGVuZHMgd2l0aCBhIHRyYWlsaW5nIFNDRCBTU04gX19sZTMyIHdvcmQuICovXG4rXHRyZXR1cm4gKHU4ICopKGFnZ19zdGF0dXMgKyB0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50KSAtICh1OCAqKXR4X3Jlc3AgK1xuK1x0XHRzaXplb2YoX19sZTMyKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgaXdsX212bV9yeF90eF9jbWRfc2luZ2xlKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRcdFx0XHQgICAgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QpXG4ge1xuQEAgLTE4NDcsNiArMTg1OCw5IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcnhfdHhfY21kX2FnZyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxuIFx0aW50IHF1ZXVlID0gU0VRX1RPX1FVRVVFKHNlcXVlbmNlKTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGE7XG4gXG4rXHRpZiAoV0FSTl9PTl9PTkNFKGl3bF9tdm1faGFzX25ld190eF9hcGkobXZtKSkpXG4rXHRcdHJldHVybjtcbitcbiBcdGlmIChXQVJOX09OX09OQ0UocXVldWUgXHUwMDNjIElXTF9NVk1fRFFBX01JTl9EQVRBX1FVRVVFIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAocXVldWUgIT0gSVdMX01WTV9EUUFfQlNTX0NMSUVOVF9RVUVVRSkpKVxuIFx0XHRyZXR1cm47XG5AQCAtMTg4MSw2ICsxODk1LDI2IEBAIHZvaWQgaXdsX212bV9yeF90eF9jbWQoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4ge1xuIFx0c3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7XG4gXHRzdHJ1Y3QgaXdsX3R4X3Jlc3AgKnR4X3Jlc3AgPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuK1x0c2l6ZV90IG1pbl9sZW47XG4rXG4rXHRpZiAoSVdMX0ZXX0NIRUNLKG12bSwgIXR4X3Jlc3AtXHUwMDNlZnJhbWVfY291bnQsXG4rXHRcdFx0IFwiaW52YWxpZCBUWF9DTUQgZnJhbWVfY291bnQgJXVcXG5cIixcbitcdFx0XHQgdHhfcmVzcC1cdTAwM2VmcmFtZV9jb3VudCkpXG4rXHRcdHJldHVybjtcbitcbitcdGlmIChJV0xfRldfQ0hFQ0sobXZtLFxuK1x0XHRcdCBpd2xfbXZtX2hhc19uZXdfdHhfYXBpKG12bSkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0IHR4X3Jlc3AtXHUwMDNlZnJhbWVfY291bnQgIT0gMSxcbitcdFx0XHQgXCJpbnZhbGlkIFRYX0NNRCBmcmFtZV9jb3VudCAldSBmb3IgbmV3IFRYIEFQSVxcblwiLFxuK1x0XHRcdCB0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50KSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0bWluX2xlbiA9IGl3bF9tdm1fdHhfcmVzcF9taW5fbGVuKG12bSwgdHhfcmVzcCk7XG4rXHRpZiAoSVdMX0ZXX0NIRUNLKG12bSwgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzYyBtaW5fbGVuLFxuK1x0XHRcdCBcImludmFsaWQgVFhfQ01EIGxlbiAldSAoZnJhbWVfY291bnQgJXUsIG1pbiAlenUpXFxuXCIsXG4rXHRcdFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSwgdHhfcmVzcC1cdTAwM2VmcmFtZV9jb3VudCxcbitcdFx0XHQgbWluX2xlbikpXG4rXHRcdHJldHVybjtcbiBcbiBcdGlmICh0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50ID09IDEpXG4gXHRcdGl3bF9tdm1fcnhfdHhfY21kX3NpbmdsZShtdm0sIHBrdCk7XG5AQCAtMjEwMCw4ICsyMTM0LDE0IEBAIHZvaWQgaXdsX212bV9yeF9iYV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4YilcbiBcdFx0XHRpZiAodGlkID09IElXTF9NR01UX1RJRClcbiBcdFx0XHRcdHRpZCA9IElXTF9NQVhfVElEX0NPVU5UO1xuIFxuK1x0XHRcdGlmIChJV0xfRldfQ0hFQ0sobXZtLCB0aWQgXHUwMDNlPVxuK1x0XHRcdFx0XHQgQVJSQVlfU0laRShtdm1zdGEtXHUwMDNldGlkX2RhdGEpLFxuK1x0XHRcdFx0XHQgXCJpbnZhbGlkIFRJRCAlZCBpbiBjb21wcmVzc2VkIEJBXFxuXCIsXG4rXHRcdFx0XHRcdCB0aWQpKVxuK1x0XHRcdFx0Y29udGludWU7XG4rXG4gXHRcdFx0aWYgKG12bXN0YSlcbi1cdFx0XHRcdG12bXN0YS1cdTAwM2V0aWRfZGF0YVtpXS5scV9jb2xvciA9IGxxX2NvbG9yO1xuK1x0XHRcdFx0bXZtc3RhLVx1MDAzZXRpZF9kYXRhW3RpZF0ubHFfY29sb3IgPSBscV9jb2xvcjtcbiBcbiBcdFx0XHRpd2xfbXZtX3R4X3JlY2xhaW0obXZtLCBzdGFfaWQsIHRpZCxcbiBcdFx0XHRcdFx0ICAgKGludCkobGUxNl90b19jcHUoYmFfdGZkLVx1MDAzZXFfbnVtKSksXG5AQCAtMjEyMSw2ICsyMTYxLDkgQEAgdm9pZCBpd2xfbXZtX3J4X2JhX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxuIFx0YmFfbm90aWYgPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuIFx0c3RhX2lkID0gYmFfbm90aWYtXHUwMDNlc3RhX2lkO1xuIFx0dGlkID0gYmFfbm90aWYtXHUwMDNldGlkO1xuK1x0aWYgKElXTF9GV19DSEVDSyhtdm0sIHRpZCBcdTAwM2U9IEFSUkFZX1NJWkUobXZtc3RhLVx1MDAzZXRpZF9kYXRhKSxcbitcdFx0XHQgXCJpbnZhbGlkIFRJRCAlZCBpbiBCQSBub3RpZlxcblwiLCB0aWQpKVxuK1x0XHRyZXR1cm47XG4gXHQvKiBcImZsb3dcIiBjb3JyZXNwb25kcyB0byBUeCBxdWV1ZSAqL1xuIFx0dHhxID0gbGUxNl90b19jcHUoYmFfbm90aWYtXHUwMDNlc2NkX2Zsb3cpO1xuIFx0LyogXCJzc25cIiBpcyBzdGFydCBvZiBibG9jay1hY2sgVHggd2luZG93LCBjb3JyZXNwb25kcyB0byBpbmRleFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8uY1xuaW5kZXggZDVlYjg5NTE0NGVmYzkuLjdmODg2MjAwZDY5MzMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLmNcbkBAIC0xLDcgKzEsNyBAQFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuIC8qXG4gICogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIERldXRzY2hsYW5kIEdtYkhcbi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNSBJbnRlbCBDb3Jwb3JhdGlvblxuKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI2IEludGVsIENvcnBvcmF0aW9uXG4gICovXG4gI2luY2x1ZGUgXCJpd2wtdHJhbnMuaFwiXG4gI2luY2x1ZGUgXCJpd2wtZmguaFwiXG5AQCAtOTksNiArOTksMTEgQEAgaW50IGl3bF9wY2llX2luaXRfZndfc2VjKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIFx0LyogYWRkIDIgZHVlIHRvIHNlcGFyYXRvcnMgKi9cbiBcdHBhZ2luZ19jbnQgPSBpd2xfcGNpZV9nZXRfbnVtX3NlY3Rpb25zKGZ3LCBsbWFjX2NudCArIHVtYWNfY250ICsgMik7XG4gXG4rXHRpZiAoV0FSTl9PTihsbWFjX2NudCBcdTAwM2UgQVJSQVlfU0laRShjdHh0X2RyYW0tXHUwMDNlbG1hY19pbWcpIHx8XG4rXHRcdCAgICB1bWFjX2NudCBcdTAwM2UgQVJSQVlfU0laRShjdHh0X2RyYW0tXHUwMDNldW1hY19pbWcpIHx8XG4rXHRcdCAgICBwYWdpbmdfY250IFx1MDAzZSBBUlJBWV9TSVpFKGN0eHRfZHJhbS1cdTAwM2V2aXJ0dWFsX2ltZykpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdGRyYW0tXHUwMDNlZncgPSBremFsbG9jX29ianMoKmRyYW0tXHUwMDNlZncsIHVtYWNfY250ICsgbG1hY19jbnQpO1xuIFx0aWYgKCFkcmFtLVx1MDAzZWZ3KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjE5OjQ4LjIyNjU1NzM5M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMjc3NTI2MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXdsd2lmaSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggZm9yIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCB3aGljaCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBjb3JlIGNvbXBvbmVudCBvZiBMaW51eCBrZXJuZWwgd2lyZWxlc3MgbmV0d29ya2luZywgc3BlY2lmaWNhbGx5IGZvciBJbnRlbCdzIFdpLUZpIGFkYXB0ZXJzLiBUaGUgc2hlZXIgbnVtYmVyIG9mIGZpbGVzIHRvdWNoZWQgaXMgdGhlIGZpcnN0IGluZGljYXRvciB0aGF0IHRoaXMgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UsIGltcGFjdGluZyBhIHdpZGUgcmFuZ2Ugb2YgZnVuY3Rpb25hbGl0aWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGdpdmVuIGl0cyBjbG9zZSBpbnRlcmFjdGlvbiB3aXRoIGJvdGggaGFyZHdhcmUgYW5kIGZpcm13YXJlLlxuXG5Mb29raW5nIGF0IHRoZSBmaWxlcywgd2UncmUgdGFsa2luZyBhYm91dCBldmVyeXRoaW5nIGZyb20gUkYgY29uZmlndXJhdGlvbiAoYHJmLXBlLmNgKSwgTlZNIChub24tdm9sYXRpbGUgbWVtb3J5KSBwYXJzaW5nIGFuZCBoYW5kbGluZyAoYG52bS1yZWcuaGAsIGBwbnZtLmNgLCBgaXdsLW52bS1wYXJzZS5jYCwgYW5kIHNvIG9uKSwgcmVndWxhdG9yeSBkb21haW4gaGFuZGxpbmcgKGByZWd1bGF0b3J5LmNgKSwgc2hhcmVkIG1lbW9yeSBtYW5hZ2VtZW50IChgc21lbS5jYCksIE11bHRpY2FzdC9NVk0gYW5kIFRYL1JYIGRhdGEgcHJvY2Vzc2luZyAoYHR4LmNgLCBgZDMuY2AsIGBmdG0taW5pdGlhdG9yLmNgLCBgZncuY2AsIGBwdHAuY2AsIGB0eC5jYCwgYGN0eHQtaW5mby5jYCksIGFuZCBjb3JlIGRyaXZlciBjb25maWd1cmF0aW9uIChgaXdsLWNvbmZpZy5oYCkuIFRoaXMgdG91Y2hlcyBhIGxvdCBvZiBzdXJmYWNlIGFyZWEhXG5cblRoZSBjaGFuZ2VzIHRoZW1zZWx2ZXMgYXJlIGludGVyZXN0aW5nLiBUaGUgYWRkaXRpb24gb2YgYHVuaWk5X3N1cHBvcnRlZGAgaW4gdGhlIFJGIGFuZCBNQUMgY29uZmlndXJhdGlvbnMgaGludHMgYXQgbmV3IGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvciBzdXBwb3J0IGZvciB1cGRhdGVkIHN0YW5kYXJkcy4gTmV3IGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gTlZNIGRhdGEgc3RydWN0dXJlcyAoYElXTF9OVU1fQ0hBTk5FTFNfVjNgLCBgaXdsX252bV9nZXRfaW5mb19yc3BfdjRgIGV0Yy4pIHN1Z2dlc3QgZXhwYW5kZWQgTlZNIGRhdGEgaGFuZGxpbmcgYW5kIHBvdGVudGlhbGx5IG5ldyByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbi5cblxuQ3J1Y2lhbGx5LCB0aGUgbWVudGlvbnMgb2YgYWRkZWQgYm91bmRzIGNoZWNrcyBhbmQgcGF5bG9hZCBsZW5ndGggY2hlY2tzIGZvciBmaXJtd2FyZSBjb21tdW5pY2F0aW9ucyBhcmUgaHVnZS4gVGhpcyBpcyBleGFjdGx5IHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgZnV6emVycyBsb3ZlIHRvIHRhcmdldC4gVGhlc2UgY2hlY2tzIHJlcHJlc2VudCBhcmVhcyB3aGVyZSBpbnB1dCB2YWxpZGF0aW9uIGNvdWxkIGJlIGltcHJvdmVkLCBpbmNyZWFzaW5nIHRoZSBwb3RlbnRpYWwgZm9yIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIG9yIG90aGVyIGV4cGxvaXRhYmxlIGNvbmRpdGlvbnMuIFRoZSBidWcgZml4ZXMsIHNwZWNpZmljYWxseSB0aGUgb25lcyByZWxhdGVkIHRvIG1lbW9yeSBsZWFrcyBhbmQgaW5jb3JyZWN0IGRhdGEgY29waWVzICggYGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0YCwgYGl3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3YCwgYGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdgLCBgaXdsX212bV9yeF90eF9jbWRgLCBgaXdsX212bV9yeF9iYV9ub3RpZmApLCBoaWdobGlnaHQgYXJlYXMgd2hlcmUgc3VidGxlIHByb2dyYW1taW5nIGVycm9ycyBjb3VsZCBsZWFkIHRvIHNlcmlvdXMgY29uc2VxdWVuY2VzLiBUaGVzZSBhcmUgZ3JlYXQgdGFyZ2V0cyB0byBleHBsb2l0LlxuXG5Tbywgd2hlcmUgZG8gd2UgZm9jdXMgdGhlIGZ1enplcj8gTGV0J3MgY29tcGlsZSBhIGxpc3Qgb2YgaW50ZXJlc3RpbmcgZnVuY3Rpb25zIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IHRoZSBwYXRjaDogYGl3bF9wbnZtX2NvbXBsZXRlX2ZuYCwgYGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0YCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwYCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtYCwgYGl3bF9pbml0X2NoYW5uZWxfbWFwYCwgYGl3bF9wYXJzZV9tZWlfbnZtX2RhdGFgLCBgaXdsX3BhcnNlX252bV9kYXRhYCwgYGl3bF9wYXJzZV9udm1fbWNjX2luZm9gLCBgaXdsX2dldF9udm1gLCBgaXdsX21sZF9oYW5kbGVfdHhfcmVzcF9ub3RpZmAsIGBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29uc2AsIGBpd2xfbXZtX25ldGRldGVjdF9xdWVyeV9yZXN1bHRzYCwgYGl3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0YCwgYGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyYCwgYGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdgLCBgaXdsX212bV9mdG1fcHV0X3RhcmdldF92N2AsIGBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3YxMGAsIGBpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGVgLCBgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZndgLCBgaXdsX212bV9yeF90eF9jbWRfYWdnYCwgYGl3bF9tdm1fcnhfdHhfY21kYCwgYGl3bF9tdm1fcnhfYmFfbm90aWZgLCBgaXdsX3BjaWVfaW5pdF9md19zZWNgLlxuXG5CZWZvcmUgd2UgZXZlbiBzdGFydCBmdXp6aW5nLCBsZXQncyB2ZXJpZnkgdGhhdCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLiBXZSdyZSBsb29raW5nIGF0IGBJV0xXSUZJYCwgYElXTE1WTWAgZm9yIHN1cmUuIFBvdGVudGlhbGx5IGBJV0xNRUlgIHRvby4gVGhlIGZ1enppbmcgc2V0dXAgd2lsbCBuZWVkIHRvIGhhdmUgdGhlc2UgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2MTYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6MjA6MDEuNTA0MDg2NzE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjMzODg4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMV0lGSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTg0PWNvbmZpZyBJV0xNTERcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbid0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk2LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xMDU9bWVudSBcXFwiRGVidWdnaW5nIE9wdGlvbnNcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwOC1cXHRib29sIFxcXCJFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzMTpjb25maWcgSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMi1cXHRib29sIFxcXCJpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzOTpjb25maWcgSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXFx0Ym9vbCBcXFwiaXdsd2lmaSBkZXZpY2UgYWNjZXNzIHRyYWNpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjIwOjAxLjY2NjQzMzg5NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTMxODc3NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgSW50ZWwgV2lyZWxlc3MgRHJpdmVycycgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlc2UgSW50ZWwgd2lyZWxlc3MgZHJpdmVycyBhcmUgY29uZmlndXJlZCwgc3BlY2lmaWNhbGx5IGZvciB0aGUgTXVsdGktVmlydHVhbCBNYWNoaW5lIChgSVdMTVZNYCkgYW5kIHRoZSBNRUkgKE1hbmFnZW1lbnQgRW5naW5lIEludGVyZmFjZSkgZmVhdHVyZXMgKGBJV0xNRUlgKS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyB0aGV5J3JlIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgdGhlc2Ugc29ydHMgb2YgY29uZmlndXJhdGlvbnMuIEkgc2hvdWxkIGZpbmQgYElXTE1WTWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL0tjb25maWdgIGFuZCBgSVdMTUVJYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvS2NvbmZpZ2AuIExldCBtZSBnbyBjaGVjayB0aG9zZSBmaWxlcyBhbmQgY29uZmlybSBteSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBoZWxwIG1lIHRvIGNvbnRleHR1YWxpemUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBwcm9jZWVkIGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDAwLCJPdXRwdXRUb2tlbnMiOjgyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6MjA6MDUuMTc5NjIzOTE4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NzMzMjQ4NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElXTE1WTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyMDowNS44MjY5NzIzNTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExODU3MDE4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMTUVJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjIwOjA1LjkzODg0NDczMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDY4MzE3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgSW50ZWwgV2lyZWxlc3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYGl3bHdpZmlgIG1vZHVsZXMuIFRoZSBlYXNpZXN0IHdheSB0byBnZXQgYW4gaW5pdGlhbCBvdmVydmlldyBpcyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcgZmlsZXMuIEknbSBnb2luZyB0byBzZWFyY2ggZm9yIHNvbWV0aGluZyBzaW1wbGUgYW5kIHRhcmdldGVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IHNlY3Rpb25zIHF1aWNrbHkuIExldCdzIHN0YXJ0IHdpdGggYSBnZW5lcmFsIHNlYXJjaCBmb3IgYGNvbmZpZyBJV0xgLCBmb2N1c2luZyBvbiB0aG9zZSBjb25maWd1cmF0aW9uIGZyYWdtZW50cy4gSSdsbCBzZWFyY2ggYm90aCB0aGUgdG9wLWxldmVsIGBpd2x3aWZpYCBkaXJlY3RvcnkncyBgS2NvbmZpZ2AgYW5kLCBzaW5jZSBpdCBoYXMgZ3Jvd24sIGFsc28gdGhlIGBtdm1gIHN1Yi1kaXJlY3RvcnkncyBgS2NvbmZpZ2AgdG8gY292ZXIgYWxsIG9mIHRoZSBtb2R1bGVzIHRoYXQgbWlnaHQgYmUgaW1wYWN0ZWQgYnkgbXkgY29uZmlndXJhdGlvbiBvciB0ZXN0aW5nLiBIb3BlZnVsbHksIHRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGJhc2UgdG8gc3RhcnQgd2l0aCwgcmV2ZWFsaW5nIHRoZSBtYWluIGtub2JzIEkgY2FuIHR3ZWFrIGFuZCB0aGUgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlbS4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgdG8gYnVpbGQgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIHdob2xlIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzczNCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyMDowOS41NDU2NzkyNzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAzMTg3MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo2Njpjb25maWcgSVdMRFZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY3LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIERWTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NDpjb25maWcgSVdMTVZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo4NDpjb25maWcgSVdMTUxEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1MRCBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFxcXCJEZWJ1Z2dpbmcgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVxcdGJvb2wgXFxcIkVuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xNTg9ZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxNjA6Y29uZmlnIElXTE1FSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIkludGVsIE1hbmFnZW1lbnQgRW5naW5lIGNvbW11bmljYXRpb24gb3ZlciBXTEFOXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyMDowOS43NDg4NzI4OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTI0MTIxMjI5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgSVdsd2lmaSBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGBpd2x3aWZpYC4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFwcGVhciB0byBiZSBgSVdMV0lGSWAsIGBJV0xNVk1gLCBhbmQgYElXTE1MRGAuICBUaGUgcGF0Y2ggdG91Y2hlcyBmaWxlcyBpbiBgbXZtL2AsIGBtbGQvYCwgYGZ3L2AsIGBwY2llL2AsIGFuZCBgY2ZnL2AsIHNvIGl0J3MgYSBmYWlybHkgd2lkZXNwcmVhZCBtb2RpZmljYXRpb24uICBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgYWRkZWQgb3IgbW9kaWZpZWQgYW5kIHNlZSBpZiB0aGV5J3JlIHdvcnRoIGZ1enppbmcuXG5cbkkndmUgaWRlbnRpZmllZCB0aGVzZSBmdW5jdGlvbnMgYXMgcG90ZW50aWFsbHkgaW50ZXJlc3Rpbmc6IGBpd2xfcG52bV9jb21wbGV0ZV9mbmAsIGBpd2xfYWRkX21jY190b190YXNfYmxvY2tfbGlzdGAsIGBpd2xfcGFyc2Vfc2hhcmVkX21lbV8yMjAwMGAsIGBpd2xfcGFyc2Vfc2hhcmVkX21lbWAsIGBpd2xfaW5pdF9jaGFubmVsX21hcGAsIGBpd2xfcGFyc2VfbWVpX252bV9kYXRhYCwgYGl3bF9wYXJzZV9udm1fZGF0YWAsIGBpd2xfcGFyc2VfbnZtX21jY19pbmZvYCwgYGl3bF9nZXRfbnZtYCwgYGl3bF9tbGRfaGFuZGxlX3R4X3Jlc3Bfbm90aWZgLCBgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnNgLCBgaXdsX212bV9uZXRkZXRlY3RfcXVlcnlfcmVzdWx0c2AsIGBpd2xfbXZtX3dvd2xhbl9zdG9yZV93YWtlX3BrdGAsIGBpd2xfbXZtX25kX21hdGNoX2luZm9faGFuZGxlcmAsIGBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nYCwgYGl3bF9tdm1fZnRtX3B1dF90YXJnZXRfdjdgLCBgaXdsX212bV9mdG1fcHV0X3RhcmdldF92MTBgLCBgaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlYCwgYGl3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3YCwgYGl3bF9tdm1fcnhfdHhfY21kYCwgYGl3bF9tdm1fcnhfdHhfY21kX2FnZ2AsIGBpd2xfbXZtX3J4X2JhX25vdGlmYCwgYW5kIGBpd2xfcGNpZV9pbml0X2Z3X3NlY2AuXG5cbk5vdywgbGV0J3MgZmlsdGVyIHRoZSBub2lzZS4gYGl3bF9tdm1fcnhfdHhfY21kYCwgYGl3bF9tdm1fcnhfdHhfY21kX2FnZ2AsIGFuZCBgaXdsX212bV9yeF9iYV9ub3RpZmAgYXJlIGNsZWFybHkgaW4gdGhlIGhvdC1wYXRoIFJYL1RYLiAgYGl3bF9tbGRfaGFuZGxlX3R4X3Jlc3Bfbm90aWZgIGFsc28gc2VlbXMgaGlnaC1mcmVxdWVuY3kuIGBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29uc2AsIGBpd2xfbXZtX3dvd2xhbl9zdG9yZV93YWtlX3BrdGAsIGBpd2xfbXZtX25ldGRldGVjdF9xdWVyeV9yZXN1bHRzYCwgYW5kIGBpd2xfbXZtX25kX21hdGNoX2luZm9faGFuZGxlcmAgYWxsIGRlYWwgd2l0aCBXb1dMQU4vTmV0ZGV0ZWN0LiBgaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZ2AgYW5kIGBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3Y3YCwgYGl3bF9tdm1fZnRtX3B1dF90YXJnZXRfdjEwYCByZWxhdGUgdG8gRlRNIChGaW5lIFRpbWluZyBNZWFzdXJlbWVudCksIGBpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGVgIGlzIFNBUiwgYW5kIGBpd2xfbXZtX2dldF9jcm9zc3RpbWVzdGFtcF9md2AgZGVhbHMgd2l0aCBQVFAuICBgaXdsX3BjaWVfaW5pdF9md19zZWNgIGFwcGVhcnMgdG8gYmUgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24sIGBpd2xfcG52bV9jb21wbGV0ZV9mbmAgaGFuZGxlcyBQTlZNIGluaXRpYWxpemF0aW9uLCBhbmQgYGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwYCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtYCwgYGl3bF9pbml0X2NoYW5uZWxfbWFwYCwgYGl3bF9wYXJzZV9udm1fZGF0YWAsIGFuZCBgaXdsX2dldF9udm1gIGFwcGVhciB0byByZWxhdGUgdG8gTlZNIHBhcnNpbmcgYW5kIGZpcm13YXJlIGxvYWRpbmcuXG5cbkkgbmVlZCB0byBmb2N1cyBvbiBmdW5jdGlvbnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIHJlYWNoZWQgdGhyb3VnaCBkaWZmZXJlbnQgY29kZSBwYXRocywgYW5kIGFyZSBub3QganVzdCBoaWdoLWZyZXF1ZW5jeSBwYWNrZXQgcHJvY2Vzc2luZy4gIFRoZXJlZm9yZSwgSSdtIGV4Y2x1ZGluZyB0aGUgaG90LXBhdGggZnVuY3Rpb25zLlxuXG5TbywgSSdsbCBpbml0aWFsbHkgaW5jbHVkZTogYGl3bF9wbnZtX2NvbXBsZXRlX2ZuYCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwYCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtYCwgYGl3bF9nZXRfbnZtYCwgYGl3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zYCwgYGl3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0YCwgYGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyYCwgYGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdgLCBgaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlYCwgYGl3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3YCwgYW5kIGBpd2xfcGNpZV9pbml0X2Z3X3NlY2AgYXMgdGhlIGZvY3VzXG5cbiIsIklucHV0VG9rZW5zIjoxOTAwMiwiT3V0cHV0VG9rZW5zIjoyNjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjIwOjMwLjk5MDA4ODg5MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjU2MzM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVdMV0lGSVwiLFxuICAgIFwiSVdMTVZNXCIsXG4gICAgXCJJV0xNTERcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfcG52bV9jb21wbGV0ZV9mblwiLFxuICAgIFwiaXdsX3BhcnNlX3NoYXJlZF9tZW1fMjIwMDBcIixcbiAgICBcIml3bF9wYXJzZV9zaGFyZWRfbWVtXCIsXG4gICAgXCJpd2xfZ2V0X252bVwiLFxuICAgIFwiaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnNcIixcbiAgICBcIml3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0XCIsXG4gICAgXCJpd2xfbXZtX25kX21hdGNoX2luZm9faGFuZGxlclwiLFxuICAgIFwiaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZ1wiLFxuICAgIFwiaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlXCIsXG4gICAgXCJpd2xfbXZtX2dldF9jcm9zc3RpbWVzdGFtcF9md1wiLFxuICAgIFwiaXdsX3BjaWVfaW5pdF9md19zZWNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGl3bHdpZmkgZHJpdmVyLCBpbmNsdWRpbmcgYWRkaW5nIHN1cHBvcnQgZm9yIFVOSUktOSBjaGFubmVscywgYWRkaW5nIGJvdW5kcyBjaGVja3MgZm9yIGZpcm13YXJlIG5vdGlmaWNhdGlvbnMgYW5kIHJlc3BvbnNlcywgZml4aW5nIG1lbW9yeSBsZWFrcywgYW5kIG1vZGlmeWluZyBOVk0gcGFyc2luZyBsb2dpYy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgbG9naWMgb2YgdGhlIGRyaXZlciBhbmQgYXJlIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVdMV0lGSVwiLFxuICAgIFwiSVdMTVZNXCIsXG4gICAgXCJJV0xNTERcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfcG52bV9jb21wbGV0ZV9mblwiLFxuICAgIFwiaXdsX3BhcnNlX3NoYXJlZF9tZW1fMjIwMDBcIixcbiAgICBcIml3bF9wYXJzZV9zaGFyZWRfbWVtXCIsXG4gICAgXCJpd2xfZ2V0X252bVwiLFxuICAgIFwiaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnNcIixcbiAgICBcIml3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0XCIsXG4gICAgXCJpd2xfbXZtX25kX21hdGNoX2luZm9faGFuZGxlclwiLFxuICAgIFwiaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZ1wiLFxuICAgIFwiaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlXCIsXG4gICAgXCJpd2xfbXZtX2dldF9jcm9zc3RpbWVzdGFtcF9md1wiLFxuICAgIFwiaXdsX3BjaWVfaW5pdF9md19zZWNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGl3bHdpZmkgZHJpdmVyLCBpbmNsdWRpbmcgYWRkaW5nIHN1cHBvcnQgZm9yIFVOSUktOSBjaGFubmVscywgYWRkaW5nIGJvdW5kcyBjaGVja3MgZm9yIGZpcm13YXJlIG5vdGlmaWNhdGlvbnMgYW5kIHJlc3BvbnNlcywgZml4aW5nIG1lbW9yeSBsZWFrcywgYW5kIG1vZGlmeWluZyBOVk0gcGFyc2luZyBsb2dpYy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgbG9naWMgb2YgdGhlIGRyaXZlciBhbmQgYXJlIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowd7586[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 02:01:28 +0000 UTC FinishedAt: 2026-07-16 02:20:32 +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": "b8809969e1d7a591e0f49dd464a5d04b3cf02ab1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "IWLMVM", "IWLMLD" ], "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": "b8809969e1d7a591e0f49dd464a5d04b3cf02ab1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IWLWIFI", "IWLMVM", "IWLMLD" ], "series_id": "20ec2eb9-ffbe-424e-86e1-bd7af3132741" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "iwl_pnvm_complete_fn", "iwl_parse_shared_mem_22000", "iwl_parse_shared_mem", "iwl_get_nvm", "iwl_mvm_report_wakeup_reasons", "iwl_mvm_wowlan_store_wake_pkt", "iwl_mvm_nd_match_info_handler", "iwl_mvm_ftm_set_secured_ranging", "iwl_mvm_get_sar_geo_profile", "iwl_mvm_get_crosstimestamp_fw", "iwl_pcie_init_fw_sec" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7SVdMTVZNJiMzNDssCiAgICAmIzM0O0lXTE1MRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF9wbnZtX2NvbXBsZXRlX2ZuJiMzNDssCiAgICAmIzM0O2l3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwJiMzNDssCiAgICAmIzM0O2l3bF9wYXJzZV9zaGFyZWRfbWVtJiMzNDssCiAgICAmIzM0O2l3bF9nZXRfbnZtJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0JiMzNDssCiAgICAmIzM0O2l3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmcmIzM0OywKICAgICYjMzQ7aXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3JiMzNDssCiAgICAmIzM0O2l3bF9wY2llX2luaXRfZndfc2VjJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgaXdsd2lmaSBkcml2ZXIsIGluY2x1ZGluZyBhZGRpbmcgc3VwcG9ydCBmb3IgVU5JSS05IGNoYW5uZWxzLCBhZGRpbmcgYm91bmRzIGNoZWNrcyBmb3IgZmlybXdhcmUgbm90aWZpY2F0aW9ucyBhbmQgcmVzcG9uc2VzLCBmaXhpbmcgbWVtb3J5IGxlYWtzLCBhbmQgbW9kaWZ5aW5nIE5WTSBwYXJzaW5nIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBsb2dpYyBvZiB0aGUgZHJpdmVyIGFuZCBhcmUgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGUzNGM5ZTU4ZDJiMjRkNTdmYjkzMTMxZGRlNzZmMmE2NDA2MDQ4NThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAwMjoxOTo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9jZmcvcmYtcGUuY1xuaW5kZXggN2EwNGNiMTIwYjFiMjMuLjYwODBmNWYyM2U2OTg3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9jZmcvcmYtcGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9jZmcvcmYtcGUuY1xuQEAgLTE1LDYgJiM0MzsxNSw3IEBAXG4gXHQubm9uX3NoYXJlZF9hbnQgPSBBTlRfQixcdFx0XHRcdFx0XFxcbiBcdC52aHRfbXVfbWltb19zdXBwb3J0ZWQgPSB0cnVlLFx0XHRcdFx0XHRcXFxuIFx0LnVoYl9zdXBwb3J0ZWQgPSB0cnVlLFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0LnVuaWk5X3N1cHBvcnRlZCA9IHRydWUsXHRcdFx0XHRcdFxcXG4gXHQuZWh0X3N1cHBvcnRlZCA9IHRydWUsXHRcdFx0XHRcdFx0XFxcbiBcdC51aHJfc3VwcG9ydGVkID0gdHJ1ZSxcdFx0XHRcdFx0XHRcXFxuIFx0Lm51bV9yYmRzID0gSVdMX05VTV9SQkRTX0VIVCxcdFx0XHRcdFx0XFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmhcbmluZGV4IDQ0M2E5YTQxNjMyNTIzLi4wMTcyYzA3NDdhNDdjOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL252bS1yZWcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbnZtLXJlZy5oXG5AQCAtMjA1LDYgJiM0MzsyMDUsNyBAQCBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19waHkge1xuIFxuICNkZWZpbmUgSVdMX05VTV9DSEFOTkVMU19WMVx0NTFcbiAjZGVmaW5lIElXTF9OVU1fQ0hBTk5FTFNfVjJcdDExMFxuJiM0MzsjZGVmaW5lIElXTF9OVU1fQ0hBTk5FTFNfVjNcdDExNVxuIFxuIC8qKlxuICAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjEgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXG5AQCAtMjE5LDEyICYjNDM7MjIwLDEyIEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjEge1xuIH0gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JFR1VMQVRPUllfU19WRVJfMSAqL1xuIFxuIC8qKlxuLSAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXG4mIzQzOyAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjIgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXG4gICogQGxhcl9lbmFibGVkOiBpcyBMQVIgZW5hYmxlZFxuICAqIEBuX2NoYW5uZWxzOiBudW1iZXIgb2YgdmFsaWQgY2hhbm5lbHMgaW4gdGhlIGFycmF5XG4gICogQGNoYW5uZWxfcHJvZmlsZTogcmVndWxhdG9yeSBkYXRhIG9mIHRoaXMgY2hhbm5lbFxuICAqL1xuLXN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkge1xuJiM0MztzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5X3YyIHtcbiBcdF9fbGUzMiBsYXJfZW5hYmxlZDtcbiBcdF9fbGUzMiBuX2NoYW5uZWxzO1xuIFx0X19sZTMyIGNoYW5uZWxfcHJvZmlsZVtJV0xfTlVNX0NIQU5ORUxTX1YyXTtcbkBAIC0yNDQsNiAmIzQzOzI0NSwzMiBAQCBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjMge1xuIFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MSByZWd1bGF0b3J5O1xuIH0gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JTUF9BUElfU19WRVJfMyAqL1xuIFxuJiM0MzsvKipcbiYjNDM7ICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3Y0IC0gcmVzcG9uc2UgdG8gZ2V0IE5WTSBkYXRhXG4mIzQzOyAqIEBnZW5lcmFsOiBnZW5lcmFsIE5WTSBkYXRhXG4mIzQzOyAqIEBtYWNfc2t1OiBkYXRhIHJlbGF0aW5nIHRvIE1BQyBza3VcbiYjNDM7ICogQHBoeV9za3U6IGRhdGEgcmVsYXRpbmcgdG8gUEhZIHNrdVxuJiM0MzsgKiBAcmVndWxhdG9yeTogcmVndWxhdG9yeSBkYXRhXG4mIzQzOyAqL1xuJiM0MztzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjQge1xuJiM0MztcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX2dlbmVyYWwgZ2VuZXJhbDtcbiYjNDM7XHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19za3UgbWFjX3NrdTtcbiYjNDM7XHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19waHkgcGh5X3NrdTtcbiYjNDM7XHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5X3YyIHJlZ3VsYXRvcnk7XG4mIzQzO30gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JTUF9BUElfU19WRVJfNCAqL1xuJiM0MztcbiYjNDM7LyoqXG4mIzQzOyAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXG4mIzQzOyAqIEBsYXJfZW5hYmxlZDogaXMgTEFSIGVuYWJsZWRcbiYjNDM7ICogQG5fY2hhbm5lbHM6IG51bWJlciBvZiB2YWxpZCBjaGFubmVscyBpbiB0aGUgYXJyYXlcbiYjNDM7ICogQGNoYW5uZWxfcHJvZmlsZTogcmVndWxhdG9yeSBkYXRhIG9mIHRoaXMgY2hhbm5lbFxuJiM0MzsgKi9cbiYjNDM7c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSB7XG4mIzQzO1x0X19sZTMyIGxhcl9lbmFibGVkO1xuJiM0MztcdF9fbGUzMiBuX2NoYW5uZWxzO1xuJiM0MztcdF9fbGUzMiBjaGFubmVsX3Byb2ZpbGVbSVdMX05VTV9DSEFOTkVMU19WM107XG4mIzQzO30gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JFR1VMQVRPUllfU19WRVJfMyAqL1xuJiM0MztcbiAvKipcbiAgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3AgLSByZXNwb25zZSB0byBnZXQgTlZNIGRhdGFcbiAgKiBAZ2VuZXJhbDogZ2VuZXJhbCBOVk0gZGF0YVxuQEAgLTI1Niw3ICYjNDM7MjgzLDcgQEAgc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwIHtcbiBcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3NrdSBtYWNfc2t1O1xuIFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcGh5IHBoeV9za3U7XG4gXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5IHJlZ3VsYXRvcnk7XG4tfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl80ICovXG4mIzQzO30gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JTUF9BUElfU19WRVJfNSAqL1xuIFxuIC8qKlxuICAqIHN0cnVjdCBpd2xfbnZtX2FjY2Vzc19jb21wbGV0ZV9jbWQgLSBOVk1fQUNDRVNTIGNvbW1hbmRzIGFyZSBjb21wbGV0ZWRcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmhcbmluZGV4IDA4ZjRjYzNlYTFjMzA0Li5lZTc4MzcxMDgyYjA5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oXG5AQCAtMSw2ICYjNDM7MSw2IEBAXG4gLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlICovXG4gLypcbi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgMjAxOC0yMDI1IEludGVsIENvcnBvcmF0aW9uXG4mIzQzOyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBJbnRlbCBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgR21iSFxuICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEludGVsIERldXRzY2hsYW5kIEdtYkhcbiAgKi9cbkBAIC0xMzE5LDcgJiM0MzsxMzE5LDcgQEAgc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbyB7XG4gXHR1OCByZXN1bWVfd2hpbGVfc2Nhbm5pbmc7XG4gXHR1OCBzZWxmX3JlY292ZXJ5O1xuIFx0X19sZTE2IHJlc2VydmVkO1xuLVx0c3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZV9tYXRjaCBtYXRjaGVzW107XG4mIzQzO1x0c3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZV9tYXRjaCBtYXRjaGVzW0lXTF9TQ0FOX01BWF9QUk9GSUxFU19WMl07XG4gfSBfX3BhY2tlZDsgLyogU0NBTl9PRkZMT0FEX1BST0ZJTEVTX1FVRVJZX1JTUF9TX1ZFUl8zIGFuZFxuIFx0ICAgICAqIFNDQU5fT0ZGTE9BRF9NQVRDSF9JTkZPX05PVElGSUNBVElPTl9TX1ZFUl8xXG4gXHQgICAgICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xuaW5kZXggYWZmZjhkNTFjYTk1MGMuLmVjMGZmNThhYjMxMmQ1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jXG5AQCAtMSw2ICYjNDM7MSw2IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4gLypcbi0gKiBDb3B5cmlnaHQoYykgMjAyMC0yMDI1IEludGVsIENvcnBvcmF0aW9uXG4mIzQzOyAqIENvcHlyaWdodChjKSAyMDIwLTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cbiAgKi9cbiBcbiAjaW5jbHVkZSBcJiMzNDtpd2wtZHJ2LmhcJiMzNDtcbkBAIC0xMiw2ICYjNDM7MTIsNyBAQFxuICNpbmNsdWRlIFwmIzM0O2Z3L2FwaS9hbGl2ZS5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZncvdWVmaS5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZncvaW1nLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7ZncvZGJnLmhcJiMzNDtcbiBcbiAjZGVmaW5lIElXTF9QTlZNX1JFRFVDRURfQ0FQX0JJVCBCSVQoMjUpXG4gXG5AQCAtMjYsNiAmIzQzOzI3LDEyIEBAIHN0YXRpYyBib29sIGl3bF9wbnZtX2NvbXBsZXRlX2ZuKHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LFxuIFx0c3RydWN0IGl3bF90cmFucyAqdHJhbnMgPSAoc3RydWN0IGl3bF90cmFucyAqKWRhdGE7XG4gXHRzdHJ1Y3QgaXdsX3Budm1faW5pdF9jb21wbGV0ZV9udGZ5ICpwbnZtX250ZiA9ICh2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4gXG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyh0cmFucyxcbiYjNDM7XHRcdFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcdTAwM2Mgc2l6ZW9mKCpwbnZtX250ZiksXG4mIzQzO1x0XHRcdCBcJiMzNDtCYWQgbm90aWYgbGVuOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSkpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4gXHRJV0xfREVCVUdfRlcodHJhbnMsXG4gXHRcdCAgICAgXCYjMzQ7UE5WTSBjb21wbGV0ZSBub3RpZmljYXRpb24gcmVjZWl2ZWQgd2l0aCBzdGF0dXMgMHglMHhcXG5cJiMzNDssXG4gXHRcdCAgICAgbGUzMl90b19jcHUocG52bV9udGYtXHUwMDNlc3RhdHVzKSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuY1xuaW5kZXggOGQ5ZmYzNmUzMGY1ZTMuLjFkNmQzOGVlNTViNDk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jXG5AQCAtMzg5LDcgJiM0MzszODksNyBAQCBib29sIGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0KHUxNiAqbGlzdCwgdTggKnNpemUsIHUxNiBtY2MpXG4gXHRpZiAoKnNpemUgXHUwMDNlPSBJV0xfV1RBU19CTEFDS19MSVNUX01BWClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0bGlzdFsqc2l6ZSYjNDM7JiM0MztdID0gbWNjO1xuJiM0MztcdGxpc3RbKCpzaXplKSYjNDM7JiM0MztdID0gbWNjO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIElXTF9FWFBPUlRfU1lNQk9MKGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvc21lbS5jXG5pbmRleCAzNDRkZGRlODViMTg5Ny4uMjBlZDI2YTFiYjAwZWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9zbWVtLmNcbkBAIC0xLDYgJiM0MzsxLDYgQEBcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiAvKlxuLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjEsIDIwMjUgSW50ZWwgQ29ycG9yYXRpb25cbiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQsIDIwMTgtMjAyMSwgMjAyNS0yMDI2IEludGVsIENvcnBvcmF0aW9uXG4gICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgSW50ZWwgTW9iaWxlIENvbW11bmljYXRpb25zIEdtYkhcbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJIXG4gICovXG5AQCAtMTQsOSAmIzQzOzE0LDE3IEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbiB7XG4gXHRzdHJ1Y3QgaXdsX3NoYXJlZF9tZW1fY2ZnICptZW1fY2ZnID0gKHZvaWQgKilwa3QtXHUwMDNlZGF0YTtcbiBcdGludCBpLCBsbWFjO1xuLVx0aW50IGxtYWNfbnVtID0gbGUzMl90b19jcHUobWVtX2NmZy1cdTAwM2VsbWFjX251bSk7XG4tXHR1OCBhcGlfdmVyID0gaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZndydC1cdTAwM2VmdywgU1lTVEVNX0dST1VQLFxuLVx0XHRcdFx0XHQgICAgIFNIQVJFRF9NRU1fQ0ZHX0NNRCwgMCk7XG4mIzQzO1x0aW50IGxtYWNfbnVtO1xuJiM0MztcdHU4IGFwaV92ZXI7XG4mIzQzO1xuJiM0MztcdGlmIChJV0xfRldfQ0hFQ0soZndydCwgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzY1xuJiM0MztcdFx0XHQgb2Zmc2V0b2ZlbmQoc3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZywgbG1hY19zbWVtWzFdKSxcbiYjNDM7XHRcdFx0IFwmIzM0O2JhZCBzaGFyZWQgbWVtIG5vdGlmaWNhdGlvbiBzaXplXFxuXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0bG1hY19udW0gPSBsZTMyX3RvX2NwdShtZW1fY2ZnLVx1MDAzZWxtYWNfbnVtKTtcbiYjNDM7XHRhcGlfdmVyID0gaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZndydC1cdTAwM2VmdywgU1lTVEVNX0dST1VQLFxuJiM0MztcdFx0XHRcdFx0ICBTSEFSRURfTUVNX0NGR19DTUQsIDApO1xuIFxuIFx0LyogTm90ZTogbm90aWZpY2F0aW9uIGhhcyAzIGVudHJpZXMsIGJ1dCB3ZSBvbmx5IGV4cGVjdCAyICovXG4gXHRpZiAoSVdMX0ZXX0NIRUNLKGZ3cnQsIGxtYWNfbnVtIFx1MDAzZSBBUlJBWV9TSVpFKGZ3cnQtXHUwMDNlc21lbV9jZmcubG1hYyksXG5AQCAtMzAsNyAmIzQzOzM4LDcgQEAgc3RhdGljIHZvaWQgaXdsX3BhcnNlX3NoYXJlZF9tZW1fMjIwMDAoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxuIFxuIFx0aWYgKGFwaV92ZXIgXHUwMDNlPSA0IFx1MDAyNlx1MDAyNlxuIFx0ICAgICFJV0xfRldfQ0hFQ0soZndydCwgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzYyBzaXplb2YoKm1lbV9jZmcpLFxuLVx0XHRcdCAgXCYjMzQ7YmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemVcXG5cJiMzNDspKSB7XG4mIzQzO1x0XHRcdCAgXCYjMzQ7YmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemUgKHY0KVxcblwmIzM0OykpIHtcbiBcdFx0ZndydC1cdTAwM2VzbWVtX2NmZy5yeGZpZm8yX2NvbnRyb2xfc2l6ZSA9XG4gXHRcdFx0bGUzMl90b19jcHUobWVtX2NmZy1cdTAwM2VyeGZpZm8yX2NvbnRyb2xfc2l6ZSk7XG4gXHR9XG5AQCAtNTMsNiAmIzQzOzYxLDExIEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbiBcdHN0cnVjdCBpd2xfc2hhcmVkX21lbV9jZmdfdjIgKm1lbV9jZmcgPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXHUwMDNjXG4mIzQzO1x0XHRcdCBvZmZzZXRvZihzdHJ1Y3QgaXdsX3NoYXJlZF9tZW1fY2ZnX3YyLCByeGZpZm9fYWRkciksXG4mIzQzO1x0XHRcdCBcJiMzNDtiYWQgc2hhcmVkIG1lbSBub3RpZmljYXRpb24gc2l6ZVxcblwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0ZndydC1cdTAwM2VzbWVtX2NmZy5udW1fbG1hY3MgPSAxO1xuIFxuIFx0ZndydC1cdTAwM2VzbWVtX2NmZy5udW1fdHhmaWZvX2VudHJpZXMgPSBBUlJBWV9TSVpFKG1lbV9jZmctXHUwMDNldHhmaWZvX3NpemUpO1xuQEAgLTY3LDYgJiM0Mzs4MCwxMSBAQCBzdGF0aWMgdm9pZCBpd2xfcGFyc2Vfc2hhcmVkX21lbShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXG4gXHQvKiBuZXcgQVBJIGhhcyBtb3JlIGRhdGEsIGZyb20gcnhmaWZvX2FkZHIgZmllbGQgYW5kIG9uICovXG4gXHRpZiAoZndfaGFzX2NhcGEoXHUwMDI2ZndydC1cdTAwM2Vmdy1cdTAwM2V1Y29kZV9jYXBhLFxuIFx0XHRcdElXTF9VQ09ERV9UTFZfQ0FQQV9FWFRFTkRfU0hBUkVEX01FTV9DRkcpKSB7XG4mIzQzO1x0XHRpZiAoSVdMX0ZXX0NIRUNLKGZ3cnQsIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcdTAwM2NcbiYjNDM7XHRcdFx0XHQgc2l6ZW9mKCptZW1fY2ZnKSxcbiYjNDM7XHRcdFx0XHQgXCYjMzQ7YmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemUgKGV4dGVuZClcXG5cJiMzNDspKVxuJiM0MztcdFx0XHRyZXR1cm47XG4mIzQzO1xuIFx0XHRCVUlMRF9CVUdfT04oc2l6ZW9mKGZ3cnQtXHUwMDNlc21lbV9jZmcuaW50ZXJuYWxfdHhmaWZvX3NpemUpICE9XG4gXHRcdFx0ICAgICBzaXplb2YobWVtX2NmZy1cdTAwM2VpbnRlcm5hbF90eGZpZm9fc2l6ZSkpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmhcbmluZGV4IDZhMzUzOWFkNzMzMTdlLi4zYWM3ZjAwMGVkZTQ3OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaFxuQEAgLTQxNSw2ICYjNDM7NDE1LDcgQEAgc3RydWN0IGl3bF9tYWNfY2ZnIHtcbiAgKiBAdmh0X211X21pbW9fc3VwcG9ydGVkOiBWSFQgTVUtTUlNTyBzdXBwb3J0XG4gICogQG52bV90eXBlOiBzZWUgXHUwMDI2ZW51bSBpd2xfbnZtX3R5cGVcbiAgKiBAdWhiX3N1cHBvcnRlZDogdWx0cmEgaGlnaCBiYW5kIGNoYW5uZWxzIHN1cHBvcnRlZFxuJiM0MzsgKiBAdW5paTlfc3VwcG9ydGVkOiBVTklJLTkgY2hhbm5lbHMgc3VwcG9ydGVkXG4gICogQGVodF9zdXBwb3J0ZWQ6IEVIVCBzdXBwb3J0ZWRcbiAgKiBAdWhyX3N1cHBvcnRlZDogVUhSIHN1cHBvcnRlZFxuICAqIEBudW1fcmJkczogbnVtYmVyIG9mIHJlY2VpdmUgYnVmZmVyIGRlc2NyaXB0b3JzIHRvIHVzZVxuQEAgLTQ1MCw2ICYjNDM7NDUxLDcgQEAgc3RydWN0IGl3bF9yZl9jZmcge1xuIFx0ICAgIGxwX3h0YWxfd29ya2Fyb3VuZDoxLFxuIFx0ICAgIHZodF9tdV9taW1vX3N1cHBvcnRlZDoxLFxuIFx0ICAgIHVoYl9zdXBwb3J0ZWQ6MSxcbiYjNDM7XHQgICAgdW5paTlfc3VwcG9ydGVkOjEsXG4gXHQgICAgZWh0X3N1cHBvcnRlZDoxLFxuIFx0ICAgIHVocl9zdXBwb3J0ZWQ6MTtcbiBcdHU4IHZhbGlkX3R4X2FudDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jXG5pbmRleCBkNDdiNGFlMmY0ODYzMC4uYmQ1MzUzZmRkZTgxYTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmNcbkBAIC04NSwxNiAmIzQzOzg1LDcgQEAgc3RhdGljIGNvbnN0IHUxNiBpd2xfbnZtX2NoYW5uZWxzW10gPSB7XG4gXHQxNDksIDE1MywgMTU3LCAxNjEsIDE2NVxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHUxNiBpd2xfZXh0X252bV9jaGFubmVsc1tdID0ge1xuLVx0LyogMi40IEdIeiAqL1xuLVx0MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LFxuLVx0LyogNSBHSHogKi9cbi1cdDM2LCA0MCwgNDQsIDQ4LCA1MiwgNTYsIDYwLCA2NCwgNjgsIDcyLCA3NiwgODAsIDg0LCA4OCwgOTIsXG4tXHQ5NiwgMTAwLCAxMDQsIDEwOCwgMTEyLCAxMTYsIDEyMCwgMTI0LCAxMjgsIDEzMiwgMTM2LCAxNDAsIDE0NCxcbi1cdDE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1LCAxNjksIDE3MywgMTc3LCAxODFcbi19O1xuLVxuLXN0YXRpYyBjb25zdCB1MTYgaXdsX3VoYl9udm1fY2hhbm5lbHNbXSA9IHtcbiYjNDM7c3RhdGljIGNvbnN0IHUxNiBpd2xfdW5paTlfbnZtX2NoYW5uZWxzW10gPSB7XG4gXHQvKiAyLjQgR0h6ICovXG4gXHQxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsXG4gXHQvKiA1IEdIeiAqL1xuQEAgLTEwNSwxMiAmIzQzOzk2LDE2IEBAIHN0YXRpYyBjb25zdCB1MTYgaXdsX3VoYl9udm1fY2hhbm5lbHNbXSA9IHtcbiBcdDEsIDUsIDksIDEzLCAxNywgMjEsIDI1LCAyOSwgMzMsIDM3LCA0MSwgNDUsIDQ5LCA1MywgNTcsIDYxLCA2NSwgNjksXG4gXHQ3MywgNzcsIDgxLCA4NSwgODksIDkzLCA5NywgMTAxLCAxMDUsIDEwOSwgMTEzLCAxMTcsIDEyMSwgMTI1LCAxMjksXG4gXHQxMzMsIDEzNywgMTQxLCAxNDUsIDE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1LCAxNjksIDE3MywgMTc3LCAxODEsIDE4NSxcbi1cdDE4OSwgMTkzLCAxOTcsIDIwMSwgMjA1LCAyMDksIDIxMywgMjE3LCAyMjEsIDIyNSwgMjI5LCAyMzNcbiYjNDM7XHQxODksIDE5MywgMTk3LCAyMDEsIDIwNSwgMjA5LCAyMTMsIDIxNywgMjIxLCAyMjUsIDIyOSwgMjMzLFxuJiM0MztcbiYjNDM7XHQvKiBVTklJLTkgKi9cbiYjNDM7XHQyMzcsIDI0MSwgMjQ1LCAyNDksIDI1M1xuIH07XG4gXG4gI2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU1x0XHRBUlJBWV9TSVpFKGl3bF9udm1fY2hhbm5lbHMpXG4tI2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU19FWFRcdEFSUkFZX1NJWkUoaXdsX2V4dF9udm1fY2hhbm5lbHMpXG4tI2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU19VSEJcdEFSUkFZX1NJWkUoaXdsX3VoYl9udm1fY2hhbm5lbHMpXG4mIzQzOyNkZWZpbmUgSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUXHQ1MVxuJiM0MzsjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQlx0MTEwXG4mIzQzOyNkZWZpbmUgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVU5JSTlcdEFSUkFZX1NJWkUoaXdsX3VuaWk5X252bV9jaGFubmVscylcbiAjZGVmaW5lIE5VTV8yR0haX0NIQU5ORUxTXHRcdDE0XG4gI2RlZmluZSBOVU1fNUdIWl9DSEFOTkVMU1x0XHQzN1xuICNkZWZpbmUgRklSU1RfMkdIWl9IVF9NSU5VU1x0XHQ1XG5AQCAtMzUxLDEyICYjNDM7MzQ2LDE1IEBAIHN0YXRpYyBpbnQgaXdsX2luaXRfY2hhbm5lbF9tYXAoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gXHRpbnQgbnVtX29mX2NoO1xuIFx0Y29uc3QgdTE2ICpudm1fY2hhbjtcbiBcbi1cdGlmIChjZmctXHUwMDNldWhiX3N1cHBvcnRlZCkge1xuJiM0MztcdGlmIChjZmctXHUwMDNldW5paTlfc3VwcG9ydGVkKSB7XG4mIzQzO1x0XHRudW1fb2ZfY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMU19VTklJOTtcbiYjNDM7XHRcdG52bV9jaGFuID0gaXdsX3VuaWk5X252bV9jaGFubmVscztcbiYjNDM7XHR9IGVsc2UgaWYgKGNmZy1cdTAwM2V1aGJfc3VwcG9ydGVkKSB7XG4gXHRcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQjtcbi1cdFx0bnZtX2NoYW4gPSBpd2xfdWhiX252bV9jaGFubmVscztcbiYjNDM7XHRcdG52bV9jaGFuID0gaXdsX3VuaWk5X252bV9jaGFubmVscztcbiBcdH0gZWxzZSBpZiAoY2ZnLVx1MDAzZW52bV90eXBlID09IElXTF9OVk1fRVhUKSB7XG4gXHRcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVDtcbi1cdFx0bnZtX2NoYW4gPSBpd2xfZXh0X252bV9jaGFubmVscztcbiYjNDM7XHRcdG52bV9jaGFuID0gaXdsX3VuaWk5X252bV9jaGFubmVscztcbiBcdH0gZWxzZSB7XG4gXHRcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTO1xuIFx0XHRudm1fY2hhbiA9IGl3bF9udm1fY2hhbm5lbHM7XG5AQCAtMTQ0MSw3ICYjNDM7MTQzOSw5IEBAIGl3bF9wYXJzZV9tZWlfbnZtX2RhdGEoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnICpjZmcsXG4gXHR1OCByeF9jaGFpbnMgPSBmdy1cdTAwM2V2YWxpZF9yeF9hbnQ7XG4gXHR1OCB0eF9jaGFpbnMgPSBmdy1cdTAwM2V2YWxpZF9yeF9hbnQ7XG4gXG4tXHRpZiAoY2ZnLVx1MDAzZXVoYl9zdXBwb3J0ZWQpXG4mIzQzO1x0aWYgKGNmZy1cdTAwM2V1bmlpOV9zdXBwb3J0ZWQpXG4mIzQzO1x0XHRkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVU5JSTkpO1xuJiM0MztcdGVsc2UgaWYgKGNmZy1cdTAwM2V1aGJfc3VwcG9ydGVkKVxuIFx0XHRkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCKTtcbiBcdGVsc2VcbiBcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVCk7XG5AQCAtMTUwNiw3ICYjNDM7MTUwNiw5IEBAIGl3bF9wYXJzZV9udm1fZGF0YShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgKmNmZyxcbiBcdHUxNiBsYXJfY29uZmlnO1xuIFx0Y29uc3QgX19sZTE2ICpjaF9zZWN0aW9uO1xuIFxuLVx0aWYgKGNmZy1cdTAwM2V1aGJfc3VwcG9ydGVkKVxuJiM0MztcdGlmIChjZmctXHUwMDNldW5paTlfc3VwcG9ydGVkKVxuJiM0MztcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5KTtcbiYjNDM7XHRlbHNlIGlmIChjZmctXHUwMDNldWhiX3N1cHBvcnRlZClcbiBcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQik7XG4gXHRlbHNlIGlmIChjZmctXHUwMDNlbnZtX3R5cGUgIT0gSVdMX05WTV9FWFQpXG4gXHRcdGRhdGEgPSBremFsbG9jX2ZsZXgoKmRhdGEsIGNoYW5uZWxzLCBJV0xfTlZNX05VTV9DSEFOTkVMUyk7XG5AQCAtMTcyNywxMiAmIzQzOzE3MjksMTUgQEAgaXdsX3BhcnNlX252bV9tY2NfaW5mbyhzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiBcdGludCBtYXhfbnVtX2NoO1xuIFx0c3RydWN0IGl3bF9yZWdfY2FwYSByZWdfY2FwYTtcbiBcbi1cdGlmIChjZmctXHUwMDNldWhiX3N1cHBvcnRlZCkge1xuJiM0MztcdGlmIChjZmctXHUwMDNldW5paTlfc3VwcG9ydGVkKSB7XG4mIzQzO1x0XHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfVU5JSTk7XG4mIzQzO1x0XHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XG4mIzQzO1x0fSBlbHNlIGlmIChjZmctXHUwMDNldWhiX3N1cHBvcnRlZCkge1xuIFx0XHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCO1xuLVx0XHRudm1fY2hhbiA9IGl3bF91aGJfbnZtX2NoYW5uZWxzO1xuJiM0MztcdFx0bnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzO1xuIFx0fSBlbHNlIGlmIChjZmctXHUwMDNlbnZtX3R5cGUgPT0gSVdMX05WTV9FWFQpIHtcbiBcdFx0bWF4X251bV9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVDtcbi1cdFx0bnZtX2NoYW4gPSBpd2xfZXh0X252bV9jaGFubmVscztcbiYjNDM7XHRcdG52bV9jaGFuID0gaXdsX3VuaWk5X252bV9jaGFubmVscztcbiBcdH0gZWxzZSB7XG4gXHRcdG1heF9udW1fY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMUztcbiBcdFx0bnZtX2NoYW4gPSBpd2xfbnZtX2NoYW5uZWxzO1xuQEAgLTIwODcsMTMgJiM0MzsyMDkyLDI2IEBAIHN0cnVjdCBpd2xfbnZtX2RhdGEgKml3bF9nZXRfbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3YzICpyc3BfdjM7XG4gXHRib29sIHY0ID0gZndfaGFzX2FwaShcdTAwMjZmdy1cdTAwM2V1Y29kZV9jYXBhLFxuIFx0XHRcdCAgICAgSVdMX1VDT0RFX1RMVl9BUElfUkVHVUxBVE9SWV9OVk1fSU5GTyk7XG4tXHRzaXplX3QgcnNwX3NpemUgPSB2NCA/IHNpemVvZigqcnNwKSA6IHNpemVvZigqcnNwX3YzKTtcbiYjNDM7XHRzaXplX3QgcnNwX3NpemU7XG4gXHR2b2lkICpjaGFubmVsX3Byb2ZpbGU7XG4gXG4gXHRyZXQgPSBpd2xfdHJhbnNfc2VuZF9jbWQodHJhbnMsIFx1MDAyNmhjbWQpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcbiBcbiYjNDM7XHRzd2l0Y2ggKGl3bF9md19sb29rdXBfbm90aWZfdmVyKGZ3LCBSRUdVTEFUT1JZX0FORF9OVk1fR1JPVVAsXG4mIzQzO1x0XHRcdFx0XHROVk1fR0VUX0lORk8sIDApKSB7XG4mIzQzO1x0Y2FzZSA1OlxuJiM0MztcdFx0cnNwX3NpemUgPSBzaXplb2Yoc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgNDpcbiYjNDM7XHRcdHJzcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcF92NCk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cnNwX3NpemUgPSBzaXplb2Yoc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3YzKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAoV0FSTihpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKGhjbWQucmVzcF9wa3QpICE9IHJzcF9zaXplLFxuIFx0XHQgXCYjMzQ7SW52YWxpZCBwYXlsb2FkIGxlbiBpbiBOVk0gcmVzcG9uc2UgZnJvbSBGVyAlZFwmIzM0OyxcbiBcdFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oaGNtZC5yZXNwX3BrdCkpKSB7XG5AQCAtMjEwNyw3ICYjNDM7MjEyNSw3IEBAIHN0cnVjdCBpd2xfbnZtX2RhdGEgKml3bF9nZXRfbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIFx0aWYgKGVtcHR5X290cClcbiBcdFx0SVdMX0lORk8odHJhbnMsIFwmIzM0O09UUCBpcyBlbXB0eVxcblwmIzM0Oyk7XG4gXG4tXHRudm0gPSBremFsbG9jX2ZsZXgoKm52bSwgY2hhbm5lbHMsIElXTF9OVU1fQ0hBTk5FTFNfVjIpO1xuJiM0MztcdG52bSA9IGt6YWxsb2NfZmxleCgqbnZtLCBjaGFubmVscywgSVdMX05VTV9DSEFOTkVMU19WMyk7XG4gXHRpZiAoIW52bSkge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuIFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguY1xuaW5kZXggMjE4NWRhZGU5NWY4Y2IuLjJkZjY2NDNhNWFhODBmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguY1xuQEAgLTExMjAsNiAmIzQzOzExMjAsMTAgQEAgdm9pZCBpd2xfbWxkX2hhbmRsZV90eF9yZXNwX25vdGlmKHN0cnVjdCBpd2xfbWxkICptbGQsXG4gXHRzc24gPSBsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKWFnZ19zdGF0dXMgJiM0MztcbiBcdFx0XHQgICB0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50KSBcdTAwMjYgMHhGRkZGO1xuIFxuJiM0MztcdGlmIChJV0xfRldfQ0hFQ0sobWxkLCB0eHFfaWQgXHUwMDNlPSBBUlJBWV9TSVpFKG1sZC1cdTAwM2Vmd19pZF90b190eHEpLFxuJiM0MztcdFx0XHQgXCYjMzQ7SW52YWxpZCB0eHEgaWQgJWRcXG5cJiMzNDssIHR4cV9pZCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnNrYnMpO1xuIFxuIFx0Lyogd2UgY2FuIGZyZWUgdW50aWwgc3NuICUgcS5uX2JkIG5vdCBpbmNsdXNpdmUgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuY1xuaW5kZXggMzQyOWQ5YTEwZTQyMDkuLjZiMTFmYTMyZWE1YzZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuY1xuQEAgLTE1MDksNiAmIzQzOzE1MDksMTAgQEAgc3RhdGljIHZvaWQgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnMoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0aWYgKFdBUk5fT05fT05DRSh0cnVuY2F0ZWQgXHUwMDNjIDApKVxuIFx0XHRcdHRydW5jYXRlZCA9IDA7XG4gXG4mIzQzO1x0XHQvKiB0aGlzIHdvdWxkIGJlIGEgZmlybXdhcmUgYnVnICovXG4mIzQzO1x0XHRpZiAoV0FSTl9PTl9PTkNFKHBrdHNpemUgXHUwMDNjIHNpemVvZigqaGRyKSkpXG4mIzQzO1x0XHRcdHJldHVybjtcbiYjNDM7XG4gXHRcdGlmIChpZWVlODAyMTFfaXNfZGF0YShoZHItXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbiBcdFx0XHRpbnQgaGRybGVuID0gaWVlZTgwMjExX2hkcmxlbihoZHItXHUwMDNlZnJhbWVfY29udHJvbCk7XG4gXHRcdFx0aW50IGl2bGVuID0gMCwgaWN2bGVuID0gNDsgLyogYWxzbyBGQ1MgKi9cbkBAIC0xNTE3LDEwICYjNDM7MTUyMSw2IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRcdFx0aWYgKCFwa3QpXG4gXHRcdFx0XHRnb3RvIHJlcG9ydDtcbiBcbi1cdFx0XHRza2JfcHV0X2RhdGEocGt0LCBwa3RkYXRhLCBoZHJsZW4pO1xuLVx0XHRcdHBrdGRhdGEgJiM0Mzs9IGhkcmxlbjtcbi1cdFx0XHRwa3RzaXplIC09IGhkcmxlbjtcbi1cbiBcdFx0XHRpZiAoaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XG4gXHRcdFx0XHQvKlxuIFx0XHRcdFx0ICogVGhpcyBpcyB1bmxvY2tlZCBhbmQgdXNpbmcgZ3RrX2koYyl2bGVuLFxuQEAgLTE1NDYsNiAmIzQzOzE1NDYsMTcgQEAgc3RhdGljIHZvaWQgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnMoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0XHRcdHRydW5jYXRlZCA9IDA7XG4gXHRcdFx0fVxuIFxuJiM0MztcdFx0XHRpZiAoSVdMX0ZXX0NIRUNLKG12bSxcbiYjNDM7XHRcdFx0XHRcdCBwa3RzaXplIFx1MDAzYz0gaGRybGVuICYjNDM7IGl2bGVuICYjNDM7IGljdmxlbixcbiYjNDM7XHRcdFx0XHRcdCBcJiMzNDtwa3RzaXplIGlzIHRvbyBzbWFsbCAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCBwa3RzaXplKSkge1xuJiM0MztcdFx0XHRcdGtmcmVlX3NrYihwa3QpO1xuJiM0MztcdFx0XHRcdHJldHVybjtcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0c2tiX3B1dF9kYXRhKHBrdCwgcGt0ZGF0YSwgaGRybGVuKTtcbiYjNDM7XHRcdFx0cGt0ZGF0YSAmIzQzOz0gaGRybGVuO1xuJiM0MztcdFx0XHRwa3RzaXplIC09IGhkcmxlbjtcbiBcdFx0XHRwa3RzaXplIC09IGl2bGVuICYjNDM7IGljdmxlbjtcbiBcdFx0XHRwa3RkYXRhICYjNDM7PSBpdmxlbjtcbiBcbkBAIC0yNDQ4LDEzICYjNDM7MjQ1OSwxNSBAQCBpd2xfbXZtX25ldGRldGVjdF9xdWVyeV9yZXN1bHRzKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXG4gXHRpZiAoZndfaGFzX2FwaShcdTAwMjZtdm0tXHUwMDNlZnctXHUwMDNldWNvZGVfY2FwYSxcbiBcdFx0ICAgICAgIElXTF9VQ09ERV9UTFZfQVBJX1NDQU5fT0ZGTE9BRF9DSEFOUykpIHtcbi1cdFx0cXVlcnlfbGVuID0gc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8pO1xuIFx0XHRtYXRjaGVzX2xlbiA9IHNpemVvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlX21hdGNoKSAqXG4gXHRcdFx0bWF4X3Byb2ZpbGVzO1xuJiM0MztcdFx0cXVlcnlfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbyxcbiYjNDM7XHRcdFx0XHQgICAgIG1hdGNoZXMpICYjNDM7IG1hdGNoZXNfbGVuO1xuIFx0fSBlbHNlIHtcbi1cdFx0cXVlcnlfbGVuID0gc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX3Byb2ZpbGVzX3F1ZXJ5X3YxKTtcbiBcdFx0bWF0Y2hlc19sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZV9tYXRjaF92MSkgKlxuIFx0XHRcdG1heF9wcm9maWxlcztcbiYjNDM7XHRcdHF1ZXJ5X2xlbiA9IHNpemVvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlc19xdWVyeV92MSkgJiM0MztcbiYjNDM7XHRcdFx0bWF0Y2hlc19sZW47XG4gXHR9XG4gXG4gXHRsZW4gPSBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKGNtZC5yZXNwX3BrdCk7XG5AQCAtMjc1Niw3ICYjNDM7Mjc2OSw3IEBAIHN0YXRpYyBpbnQgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3Qoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0XHRcdFx0IHN0cnVjdCBpd2xfd293bGFuX3N0YXR1c19kYXRhICpzdGF0dXMsXG4gXHRcdFx0XHRcdCB1MzIgbGVuKVxuIHtcbi1cdHUzMiBkYXRhX3NpemUsIHBhY2tldF9sZW4gPSBsZTMyX3RvX2NwdShub3RpZi1cdTAwM2V3YWtlX3BhY2tldF9sZW5ndGgpO1xuJiM0MztcdHUzMiBkYXRhX3NpemUsIHBhY2tldF9sZW47XG4gXG4gXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKm5vdGlmKSkge1xuIFx0XHRJV0xfRVJSKG12bSwgXCYjMzQ7SW52YWxpZCBXb1dMQU4gd2FrZSBwYWNrZXQgbm90aWZpY2F0aW9uIVxcblwmIzM0Oyk7XG5AQCAtMjc3NSw2ICYjNDM7Mjc4OCw3IEBAIHN0YXRpYyBpbnQgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3Qoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXG4mIzQzO1x0cGFja2V0X2xlbiA9IGxlMzJfdG9fY3B1KG5vdGlmLVx1MDAzZXdha2VfcGFja2V0X2xlbmd0aCk7XG4gXHRkYXRhX3NpemUgPSBsZW4gLSBvZmZzZXRvZihzdHJ1Y3QgaXdsX3dvd2xhbl93YWtlX3BrdF9ub3RpZiwgd2FrZV9wYWNrZXQpO1xuIFxuIFx0LyogZGF0YV9zaXplIGdvdCB0aGUgcGFkZGluZyBmcm9tIHRoZSBub3RpZmljYXRpb24sIHJlbW92ZSBpdC4gKi9cbkBAIC0yODA3LDcgJiM0MzsyODIxLDggQEAgc3RhdGljIHZvaWQgaXdsX212bV9uZF9tYXRjaF9pbmZvX2hhbmRsZXIoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdGlmIChJU19FUlJfT1JfTlVMTCh2aWYpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRpZiAobGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbykgJiM0MzsgbWF0Y2hlc19sZW4pIHtcbiYjNDM7XHRpZiAobGVuIFx1MDAzYyBvZmZzZXRvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9tYXRjaF9pbmZvLCBtYXRjaGVzKSAmIzQzO1xuJiM0MztcdFx0ICAgIG1hdGNoZXNfbGVuKSB7XG4gXHRcdElXTF9FUlIobXZtLCBcJiMzNDtJbnZhbGlkIHNjYW4gbWF0Y2ggaW5mbyBub3RpZmljYXRpb25cXG5cJiMzNDspO1xuIFx0XHRyZXR1cm47XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jXG5pbmRleCAzYTE0Y2E1ZTUxMmFlMy4uOGQ3ZjYwZGNkMDI3MGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuY1xuQEAgLTY0Niw3ICYjNDM7NjQ2LDggQEAgc3RhdGljIHZvaWQgaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFdBUk5fT04oKnRhcmdldC1cdTAwM2VjaXBoZXIgPT0gSVdMX0xPQ0FUSU9OX0NJUEhFUl9JTlZBTElEKTtcbiB9XG4gXG4tc3RhdGljIHZvaWRcbiYjNDM7LyogVGhlIHRrIGJ1ZmZlciBpcyBhc3N1bWVkIHRvIGJlIGV4YWN0bHkgVEtfMTFBWl9MRU4gYnl0ZXMgKi9cbiYjNDM7c3RhdGljIGludFxuIGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3Jhbmdpbmcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdFx0XHRcdHU4ICpic3NpZCwgdTggKmNpcGhlciwgdTggKmhsdGssIHU4ICp0ayxcbiBcdFx0XHRcdHU4ICpyeF9wbiwgdTggKnR4X3BuLCBfX2xlMzIgKmZsYWdzKVxuQEAgLTY1NiwxMiAmIzQzOzY1NywxMiBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRzdHJ1Y3QgaXdsX212bV92aWYgKm12bXZpZiA9IGl3bF9tdm1fdmlmX2Zyb21fbWFjODAyMTEodmlmKTtcbiBcbiBcdGlmIChtdm12aWYtXHUwMDNlZnRtX3VucHJvdGVjdGVkKVxuLVx0XHRyZXR1cm47XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiAjZW5kaWZcbiBcbiBcdGlmICghKGxlMzJfdG9fY3B1KCpmbGFncykgXHUwMDI2IChJV0xfSU5JVElBVE9SX0FQX0ZMQUdTX05PTl9UQiB8XG4gXHRcdCAgICAgICBJV0xfSU5JVElBVE9SX0FQX0ZMQUdTX1RCKSkpXG4tXHRcdHJldHVybjtcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuIFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZtdm0tXHUwMDNlbXV0ZXgpO1xuIFxuQEAgLTY3OSwxNCAmIzQzOzY4MCwzMSBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdGlmICh2aWYtXHUwMDNlY2ZnLmFzc29jIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIW1lbWNtcCh2aWYtXHUwMDNlYnNzX2NvbmYuYnNzaWQsIGJzc2lkLCBFVEhfQUxFTikpIHtcbiBcdFx0XHRzdHJ1Y3QgaXdsX212bV9mdG1faXRlcl9kYXRhIHRhcmdldDtcbiYjNDM7XHRcdFx0dTMyIGtleV9sZW47XG4gXG4gXHRcdFx0dGFyZ2V0LmJzc2lkID0gYnNzaWQ7XG4gXHRcdFx0dGFyZ2V0LmNpcGhlciA9IGNpcGhlcjtcbiBcdFx0XHR0YXJnZXQudGsgPSBOVUxMO1xuIFx0XHRcdGllZWU4MDIxMV9pdGVyX2tleXMobXZtLVx1MDAzZWh3LCB2aWYsIGl0ZXIsIFx1MDAyNnRhcmdldCk7XG4gXG4tXHRcdFx0aWYgKCFXQVJOX09OKCF0YXJnZXQudGspKVxuLVx0XHRcdFx0bWVtY3B5KHRrLCB0YXJnZXQudGssIFRLXzExQVpfTEVOKTtcbiYjNDM7XHRcdFx0aWYgKFdBUk5fT04oIXRhcmdldC50aykpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdFx0XHRzd2l0Y2ggKCp0YXJnZXQuY2lwaGVyKSB7XG4mIzQzO1x0XHRcdGNhc2UgSVdMX0xPQ0FUSU9OX0NJUEhFUl9DQ01QXzEyODpcbiYjNDM7XHRcdFx0Y2FzZSBJV0xfTE9DQVRJT05fQ0lQSEVSX0dDTVBfMTI4OlxuJiM0MztcdFx0XHRcdGtleV9sZW4gPSBXTEFOX0tFWV9MRU5fQ0NNUDtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0Y2FzZSBJV0xfTE9DQVRJT05fQ0lQSEVSX0dDTVBfMjU2OlxuJiM0MztcdFx0XHRcdGtleV9sZW4gPSBXTEFOX0tFWV9MRU5fR0NNUF8yNTY7XG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdGRlZmF1bHQ6XG4mIzQzO1x0XHRcdFx0V0FSTl9PTigxKTtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0bWVtc2V0KHRrLCAwLCBUS18xMUFaX0xFTik7XG4mIzQzO1x0XHRcdG1lbWNweSh0aywgdGFyZ2V0LnRrLCBrZXlfbGVuKTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRtZW1jcHkodGssIGVudHJ5LVx1MDAzZXRrLCBzaXplb2YoZW50cnktXHUwMDNldGspKTtcbiBcdFx0fVxuQEAgLTY5NSw4ICYjNDM7NzEzLDEwIEBAIGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3Jhbmdpbmcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdFx0bWVtY3B5KHR4X3BuLCBlbnRyeS1cdTAwM2V0eF9wbiwgc2l6ZW9mKGVudHJ5LVx1MDAzZXR4X3BuKSk7XG4gXG4gXHRcdEZUTV9TRVRfRkxBRyhTRUNVUkVEKTtcbi1cdFx0cmV0dXJuO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4gXHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50XG5AQCAtNzA4LDEyICYjNDM7NzI4LDExIEBAIGl3bF9tdm1fZnRtX3B1dF90YXJnZXRfdjcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKG12bSwgdmlmLCB0YXJnZXQtXHUwMDNlYnNzaWQsXG4tXHRcdFx0XHRcdFx1MDAyNnRhcmdldC1cdTAwM2VjaXBoZXIsIHRhcmdldC1cdTAwM2VobHRrLFxuLVx0XHRcdFx0XHR0YXJnZXQtXHUwMDNldGssIHRhcmdldC1cdTAwM2VyeF9wbixcbi1cdFx0XHRcdFx0dGFyZ2V0LVx1MDAzZXR4X3BuLFxuLVx0XHRcdFx0XHRcdTAwMjZ0YXJnZXQtXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcbi1cdHJldHVybiBlcnI7XG4mIzQzO1x0cmV0dXJuIGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmcobXZtLCB2aWYsIHRhcmdldC1cdTAwM2Vic3NpZCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIFx1MDAyNnRhcmdldC1cdTAwM2VjaXBoZXIsIHRhcmdldC1cdTAwM2VobHRrLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgdGFyZ2V0LVx1MDAzZXRrLCB0YXJnZXQtXHUwMDNlcnhfcG4sXG4mIzQzO1x0XHRcdFx0XHQgICAgICB0YXJnZXQtXHUwMDNldHhfcG4sXG4mIzQzO1x0XHRcdFx0XHQgICAgICBcdTAwMjZ0YXJnZXQtXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIGludCBpd2xfbXZtX2Z0bV9zdGFydF92MTEoc3RydWN0IGl3bF9tdm0gKm12bSxcbkBAIC04ODEsMTEgJiM0Mzs5MDAsMTMgQEAgaXdsX212bV9mdG1fcHV0X3RhcmdldF92MTAoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdGl3bF9tdm1fZnRtX3NldF90YXJnZXRfZmxhZ3MobXZtLCBwZWVyLCBcdTAwMjZ0YXJnZXQtXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcbiBcdGl3bF9tdm1fZnRtX3NldF9zdGEobXZtLCB2aWYsIHBlZXIsIFx1MDAyNnRhcmdldC1cdTAwM2VzdGFfaWQsXG4gXHRcdFx0ICAgIFx1MDAyNnRhcmdldC1cdTAwM2Vpbml0aWF0b3JfYXBfZmxhZ3MpO1xuLVx0aXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LVx1MDAzZWJzc2lkLFxuLVx0XHRcdFx0XHRcdTAwMjZ0YXJnZXQtXHUwMDNlY2lwaGVyLCB0YXJnZXQtXHUwMDNlaGx0ayxcbi1cdFx0XHRcdFx0dGFyZ2V0LVx1MDAzZXRrLCB0YXJnZXQtXHUwMDNlcnhfcG4sXG4tXHRcdFx0XHRcdHRhcmdldC1cdTAwM2V0eF9wbixcbi1cdFx0XHRcdFx0XHUwMDI2dGFyZ2V0LVx1MDAzZWluaXRpYXRvcl9hcF9mbGFncyk7XG4mIzQzO1x0cmV0ID0gaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LVx1MDAzZWJzc2lkLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgXHUwMDI2dGFyZ2V0LVx1MDAzZWNpcGhlciwgdGFyZ2V0LVx1MDAzZWhsdGssXG4mIzQzO1x0XHRcdFx0XHQgICAgICB0YXJnZXQtXHUwMDNldGssIHRhcmdldC1cdTAwM2VyeF9wbixcbiYjNDM7XHRcdFx0XHRcdCAgICAgIHRhcmdldC1cdTAwM2V0eF9wbixcbiYjNDM7XHRcdFx0XHRcdCAgICAgIFx1MDAyNnRhcmdldC1cdTAwM2Vpbml0aWF0b3JfYXBfZmxhZ3MpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuIFxuIFx0aTJyX21heF9zdHMgPSBJV0xfTVZNX0ZUTV9JMlJfTUFYX1NUUyBcdTAwM2UgMSA/IDEgOlxuIFx0XHRJV0xfTVZNX0ZUTV9JMlJfTUFYX1NUUztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuY1xuaW5kZXggNmU1MDdkNmRjZGQyYTEuLmZhNTIzYmU5MWQ4YWQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuY1xuQEAgLTk2NCwxMiAmIzQzOzk2NCwyMiBAQCBpbnQgaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlKHN0cnVjdCBpd2xfbXZtICptdm0pXG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyhtdm0sXG4mIzQzO1x0XHRcdCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKGNtZC5yZXNwX3BrdCkgIT1cbiYjNDM7XHRcdFx0IHNpemVvZigqcmVzcCksXG4mIzQzO1x0XHRcdCBcJiMzNDtXcm9uZyBzaXplIGZvciBpd2xfZ2VvX3R4X3Bvd2VyX3Byb2ZpbGVzX3Jlc3A6ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihjbWQucmVzcF9wa3QpKSkge1xuJiM0MztcdFx0cmV0ID0gLUVJTztcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXNwID0gKHZvaWQgKiljbWQucmVzcF9wa3QtXHUwMDNlZGF0YTtcbiBcdHJldCA9IGxlMzJfdG9fY3B1KHJlc3AtXHUwMDNlcHJvZmlsZV9pZHgpO1xuIFxuIFx0aWYgKFdBUk5fT04ocmV0IFx1MDAzZSBCSU9TX0dFT19NQVhfUFJPRklMRV9OVU0pKVxuIFx0XHRyZXQgPSAtRUlPO1xuIFxuJiM0MztvdXQ6XG4gXHRpd2xfZnJlZV9yZXNwKFx1MDAyNmNtZCk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9wdHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3B0cC5jXG5pbmRleCBmMzllYjQ4ODY0ZWI0Yi4uNDlkY2IxMzg4MDA3YmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9wdHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcHRwLmNcbkBAIC0xLDYgJiM0MzsxLDYgQEBcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiAvKlxuLSAqIENvcHlyaWdodCAoQykgMjAyMSAtIDIwMjMsIDIwMjUgSW50ZWwgQ29ycG9yYXRpb25cbiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDIxIC0gMjAyMywgMjAyNS0yMDI2IEludGVsIENvcnBvcmF0aW9uXG4gICovXG4gXG4gI2luY2x1ZGUgXCYjMzQ7bXZtLmhcJiMzNDtcbkBAIC0xMjEsNiAmIzQzOzEyMSw4IEBAIGl3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3KHN0cnVjdCBpd2xfbXZtICptdm0sIHUzMiAqZ3AyLCB1NjQgKnN5c190aW1lKVxuIFx0KnN5c190aW1lID0gKHU2NClsZTMyX3RvX2NwdShyZXNwLVx1MDAzZXBsYXRmb3JtX3RpbWVzdGFtcF9oaSkgXHUwMDNjXHUwMDNjIDMyIHxcbiBcdFx0bGUzMl90b19jcHUocmVzcC1cdTAwM2VwbGF0Zm9ybV90aW1lc3RhbXBfbG8pO1xuIFxuJiM0MztcdGl3bF9mcmVlX3Jlc3AoXHUwMDI2Y21kKTtcbiYjNDM7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xuaW5kZXggZGM2OWM3MWZhYTc2Y2EuLmQzYzJmZTgzMDQ3NzdiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xuQEAgLTE1NDQsNiAmIzQzOzE1NDQsMTcgQEAgc3RhdGljIGlubGluZSB1MzIgaXdsX212bV9nZXRfc2NkX3NzbihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuIFx0cmV0dXJuIHZhbCBcdTAwMjYgMHhGRkY7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIHNpemVfdCBpd2xfbXZtX3R4X3Jlc3BfbWluX2xlbihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuJiM0MztcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgaXdsX3R4X3Jlc3AgKnR4X3Jlc3ApXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYWdnX3R4X3N0YXR1cyAqYWdnX3N0YXR1cyA9XG4mIzQzO1x0XHRpd2xfbXZtX2dldF9hZ2dfc3RhdHVzKG12bSwgdHhfcmVzcCk7XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBhZ2dyZWdhdGUgcmVzcG9uc2UgZW5kcyB3aXRoIGEgdHJhaWxpbmcgU0NEIFNTTiBfX2xlMzIgd29yZC4gKi9cbiYjNDM7XHRyZXR1cm4gKHU4ICopKGFnZ19zdGF0dXMgJiM0MzsgdHhfcmVzcC1cdTAwM2VmcmFtZV9jb3VudCkgLSAodTggKil0eF9yZXNwICYjNDM7XG4mIzQzO1x0XHRzaXplb2YoX19sZTMyKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBpd2xfbXZtX3J4X3R4X2NtZF9zaW5nbGUoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdClcbiB7XG5AQCAtMTg0Nyw2ICYjNDM7MTg1OCw5IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcnhfdHhfY21kX2FnZyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxuIFx0aW50IHF1ZXVlID0gU0VRX1RPX1FVRVVFKHNlcXVlbmNlKTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGE7XG4gXG4mIzQzO1x0aWYgKFdBUk5fT05fT05DRShpd2xfbXZtX2hhc19uZXdfdHhfYXBpKG12bSkpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdGlmIChXQVJOX09OX09OQ0UocXVldWUgXHUwMDNjIElXTF9NVk1fRFFBX01JTl9EQVRBX1FVRVVFIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAocXVldWUgIT0gSVdMX01WTV9EUUFfQlNTX0NMSUVOVF9RVUVVRSkpKVxuIFx0XHRyZXR1cm47XG5AQCAtMTg4MSw2ICYjNDM7MTg5NSwyNiBAQCB2b2lkIGl3bF9tdm1fcnhfdHhfY21kKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxuIHtcbiBcdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpO1xuIFx0c3RydWN0IGl3bF90eF9yZXNwICp0eF9yZXNwID0gKHZvaWQgKilwa3QtXHUwMDNlZGF0YTtcbiYjNDM7XHRzaXplX3QgbWluX2xlbjtcbiYjNDM7XG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyhtdm0sICF0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50LFxuJiM0MztcdFx0XHQgXCYjMzQ7aW52YWxpZCBUWF9DTUQgZnJhbWVfY291bnQgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCB0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyhtdm0sXG4mIzQzO1x0XHRcdCBpd2xfbXZtX2hhc19uZXdfdHhfYXBpKG12bSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCB0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50ICE9IDEsXG4mIzQzO1x0XHRcdCBcJiMzNDtpbnZhbGlkIFRYX0NNRCBmcmFtZV9jb3VudCAldSBmb3IgbmV3IFRYIEFQSVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0IHR4X3Jlc3AtXHUwMDNlZnJhbWVfY291bnQpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRtaW5fbGVuID0gaXdsX212bV90eF9yZXNwX21pbl9sZW4obXZtLCB0eF9yZXNwKTtcbiYjNDM7XHRpZiAoSVdMX0ZXX0NIRUNLKG12bSwgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzYyBtaW5fbGVuLFxuJiM0MztcdFx0XHQgXCYjMzQ7aW52YWxpZCBUWF9DTUQgbGVuICV1IChmcmFtZV9jb3VudCAldSwgbWluICV6dSlcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCksIHR4X3Jlc3AtXHUwMDNlZnJhbWVfY291bnQsXG4mIzQzO1x0XHRcdCBtaW5fbGVuKSlcbiYjNDM7XHRcdHJldHVybjtcbiBcbiBcdGlmICh0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50ID09IDEpXG4gXHRcdGl3bF9tdm1fcnhfdHhfY21kX3NpbmdsZShtdm0sIHBrdCk7XG5AQCAtMjEwMCw4ICYjNDM7MjEzNCwxNCBAQCB2b2lkIGl3bF9tdm1fcnhfYmFfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4gXHRcdFx0aWYgKHRpZCA9PSBJV0xfTUdNVF9USUQpXG4gXHRcdFx0XHR0aWQgPSBJV0xfTUFYX1RJRF9DT1VOVDtcbiBcbiYjNDM7XHRcdFx0aWYgKElXTF9GV19DSEVDSyhtdm0sIHRpZCBcdTAwM2U9XG4mIzQzO1x0XHRcdFx0XHQgQVJSQVlfU0laRShtdm1zdGEtXHUwMDNldGlkX2RhdGEpLFxuJiM0MztcdFx0XHRcdFx0IFwmIzM0O2ludmFsaWQgVElEICVkIGluIGNvbXByZXNzZWQgQkFcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0XHQgdGlkKSlcbiYjNDM7XHRcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4gXHRcdFx0aWYgKG12bXN0YSlcbi1cdFx0XHRcdG12bXN0YS1cdTAwM2V0aWRfZGF0YVtpXS5scV9jb2xvciA9IGxxX2NvbG9yO1xuJiM0MztcdFx0XHRcdG12bXN0YS1cdTAwM2V0aWRfZGF0YVt0aWRdLmxxX2NvbG9yID0gbHFfY29sb3I7XG4gXG4gXHRcdFx0aXdsX212bV90eF9yZWNsYWltKG12bSwgc3RhX2lkLCB0aWQsXG4gXHRcdFx0XHRcdCAgIChpbnQpKGxlMTZfdG9fY3B1KGJhX3RmZC1cdTAwM2VxX251bSkpLFxuQEAgLTIxMjEsNiAmIzQzOzIxNjEsOSBAQCB2b2lkIGl3bF9tdm1fcnhfYmFfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4gXHRiYV9ub3RpZiA9ICh2b2lkICopcGt0LVx1MDAzZWRhdGE7XG4gXHRzdGFfaWQgPSBiYV9ub3RpZi1cdTAwM2VzdGFfaWQ7XG4gXHR0aWQgPSBiYV9ub3RpZi1cdTAwM2V0aWQ7XG4mIzQzO1x0aWYgKElXTF9GV19DSEVDSyhtdm0sIHRpZCBcdTAwM2U9IEFSUkFZX1NJWkUobXZtc3RhLVx1MDAzZXRpZF9kYXRhKSxcbiYjNDM7XHRcdFx0IFwmIzM0O2ludmFsaWQgVElEICVkIGluIEJBIG5vdGlmXFxuXCYjMzQ7LCB0aWQpKVxuJiM0MztcdFx0cmV0dXJuO1xuIFx0LyogXCYjMzQ7Zmxvd1wmIzM0OyBjb3JyZXNwb25kcyB0byBUeCBxdWV1ZSAqL1xuIFx0dHhxID0gbGUxNl90b19jcHUoYmFfbm90aWYtXHUwMDNlc2NkX2Zsb3cpO1xuIFx0LyogXCYjMzQ7c3NuXCYjMzQ7IGlzIHN0YXJ0IG9mIGJsb2NrLWFjayBUeCB3aW5kb3csIGNvcnJlc3BvbmRzIHRvIGluZGV4XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby5jXG5pbmRleCBkNWViODk1MTQ0ZWZjOS4uN2Y4ODYyMDBkNjkzMzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8uY1xuQEAgLTEsNyAmIzQzOzEsNyBAQFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuIC8qXG4gICogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIERldXRzY2hsYW5kIEdtYkhcbi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNSBJbnRlbCBDb3Jwb3JhdGlvblxuJiM0MzsgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxuICAqL1xuICNpbmNsdWRlIFwmIzM0O2l3bC10cmFucy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7aXdsLWZoLmhcJiMzNDtcbkBAIC05OSw2ICYjNDM7OTksMTEgQEAgaW50IGl3bF9wY2llX2luaXRfZndfc2VjKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIFx0LyogYWRkIDIgZHVlIHRvIHNlcGFyYXRvcnMgKi9cbiBcdHBhZ2luZ19jbnQgPSBpd2xfcGNpZV9nZXRfbnVtX3NlY3Rpb25zKGZ3LCBsbWFjX2NudCAmIzQzOyB1bWFjX2NudCAmIzQzOyAyKTtcbiBcbiYjNDM7XHRpZiAoV0FSTl9PTihsbWFjX2NudCBcdTAwM2UgQVJSQVlfU0laRShjdHh0X2RyYW0tXHUwMDNlbG1hY19pbWcpIHx8XG4mIzQzO1x0XHQgICAgdW1hY19jbnQgXHUwMDNlIEFSUkFZX1NJWkUoY3R4dF9kcmFtLVx1MDAzZXVtYWNfaW1nKSB8fFxuJiM0MztcdFx0ICAgIHBhZ2luZ19jbnQgXHUwMDNlIEFSUkFZX1NJWkUoY3R4dF9kcmFtLVx1MDAzZXZpcnR1YWxfaW1nKSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRkcmFtLVx1MDAzZWZ3ID0ga3phbGxvY19vYmpzKCpkcmFtLVx1MDAzZWZ3LCB1bWFjX2NudCAmIzQzOyBsbWFjX2NudCk7XG4gXHRpZiAoIWRyYW0tXHUwMDNlZncpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lXTFdJRkkmIzM0OywKICAgICYjMzQ7SVdMTVZNJiMzNDssCiAgICAmIzM0O0lXTE1MRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2l3bF9wbnZtX2NvbXBsZXRlX2ZuJiMzNDssCiAgICAmIzM0O2l3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwJiMzNDssCiAgICAmIzM0O2l3bF9wYXJzZV9zaGFyZWRfbWVtJiMzNDssCiAgICAmIzM0O2l3bF9nZXRfbnZtJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0JiMzNDssCiAgICAmIzM0O2l3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmcmIzM0OywKICAgICYjMzQ7aXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3JiMzNDssCiAgICAmIzM0O2l3bF9wY2llX2luaXRfZndfc2VjJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgaXdsd2lmaSBkcml2ZXIsIGluY2x1ZGluZyBhZGRpbmcgc3VwcG9ydCBmb3IgVU5JSS05IGNoYW5uZWxzLCBhZGRpbmcgYm91bmRzIGNoZWNrcyBmb3IgZmlybXdhcmUgbm90aWZpY2F0aW9ucyBhbmQgcmVzcG9uc2VzLCBmaXhpbmcgbWVtb3J5IGxlYWtzLCBhbmQgbW9kaWZ5aW5nIE5WTSBwYXJzaW5nIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBsb2dpYyBvZiB0aGUgZHJpdmVyIGFuZCBhcmUgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTM0YzllNThkMmIyNGQ1N2ZiOTMxMzFkZGU3NmYyYTY0MDYwNDg1OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDE2IDAyOjE5OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9jZmcvcmYtcGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL3JmLXBlLmMKaW5kZXggN2EwNGNiMTIwYjFiMjMuLjYwODBmNWYyM2U2OTg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL3JmLXBlLmMKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAJLm5vbl9zaGFyZWRfYW50ID0gQU5UX0IsCQkJCQlcCiAJLnZodF9tdV9taW1vX3N1cHBvcnRlZCA9IHRydWUsCQkJCQlcCiAJLnVoYl9zdXBwb3J0ZWQgPSB0cnVlLAkJCQkJCVwKJiM0MzsJLnVuaWk5X3N1cHBvcnRlZCA9IHRydWUsCQkJCQlcCiAJLmVodF9zdXBwb3J0ZWQgPSB0cnVlLAkJCQkJCVwKIAkudWhyX3N1cHBvcnRlZCA9IHRydWUsCQkJCQkJXAogCS5udW1fcmJkcyA9IElXTF9OVU1fUkJEU19FSFQsCQkJCQlcCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmgKaW5kZXggNDQzYTlhNDE2MzI1MjMuLjAxNzJjMDc0N2E0N2M5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbnZtLXJlZy5oCkBAIC0yMDUsNiAmIzQzOzIwNSw3IEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3BoeSB7CiAKICNkZWZpbmUgSVdMX05VTV9DSEFOTkVMU19WMQk1MQogI2RlZmluZSBJV0xfTlVNX0NIQU5ORUxTX1YyCTExMAomIzQzOyNkZWZpbmUgSVdMX05VTV9DSEFOTkVMU19WMwkxMTUKIAogLyoqCiAgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5X3YxIC0gcmVndWxhdG9yeSBpbmZvcm1hdGlvbgpAQCAtMjE5LDEyICYjNDM7MjIwLDEyIEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjEgewogfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUkVHVUxBVE9SWV9TX1ZFUl8xICovCiAKIC8qKgotICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSAtIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb24KJiM0MzsgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5X3YyIC0gcmVndWxhdG9yeSBpbmZvcm1hdGlvbgogICogQGxhcl9lbmFibGVkOiBpcyBMQVIgZW5hYmxlZAogICogQG5fY2hhbm5lbHM6IG51bWJlciBvZiB2YWxpZCBjaGFubmVscyBpbiB0aGUgYXJyYXkKICAqIEBjaGFubmVsX3Byb2ZpbGU6IHJlZ3VsYXRvcnkgZGF0YSBvZiB0aGlzIGNoYW5uZWwKICAqLwotc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSB7CiYjNDM7c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MiB7CiAJX19sZTMyIGxhcl9lbmFibGVkOwogCV9fbGUzMiBuX2NoYW5uZWxzOwogCV9fbGUzMiBjaGFubmVsX3Byb2ZpbGVbSVdMX05VTV9DSEFOTkVMU19WMl07CkBAIC0yNDQsNiAmIzQzOzI0NSwzMiBAQCBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjMgewogCXN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjEgcmVndWxhdG9yeTsKIH0gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JTUF9BUElfU19WRVJfMyAqLwogCiYjNDM7LyoqCiYjNDM7ICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3Y0IC0gcmVzcG9uc2UgdG8gZ2V0IE5WTSBkYXRhCiYjNDM7ICogQGdlbmVyYWw6IGdlbmVyYWwgTlZNIGRhdGEKJiM0MzsgKiBAbWFjX3NrdTogZGF0YSByZWxhdGluZyB0byBNQUMgc2t1CiYjNDM7ICogQHBoeV9za3U6IGRhdGEgcmVsYXRpbmcgdG8gUEhZIHNrdQomIzQzOyAqIEByZWd1bGF0b3J5OiByZWd1bGF0b3J5IGRhdGEKJiM0MzsgKi8KJiM0MztzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjQgewomIzQzOwlzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19nZW5lcmFsIGdlbmVyYWw7CiYjNDM7CXN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3NrdSBtYWNfc2t1OwomIzQzOwlzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19waHkgcGh5X3NrdTsKJiM0MzsJc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MiByZWd1bGF0b3J5OwomIzQzO30gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JTUF9BUElfU19WRVJfNCAqLwomIzQzOwomIzQzOy8qKgomIzQzOyAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uCiYjNDM7ICogQGxhcl9lbmFibGVkOiBpcyBMQVIgZW5hYmxlZAomIzQzOyAqIEBuX2NoYW5uZWxzOiBudW1iZXIgb2YgdmFsaWQgY2hhbm5lbHMgaW4gdGhlIGFycmF5CiYjNDM7ICogQGNoYW5uZWxfcHJvZmlsZTogcmVndWxhdG9yeSBkYXRhIG9mIHRoaXMgY2hhbm5lbAomIzQzOyAqLwomIzQzO3N0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkgewomIzQzOwlfX2xlMzIgbGFyX2VuYWJsZWQ7CiYjNDM7CV9fbGUzMiBuX2NoYW5uZWxzOwomIzQzOwlfX2xlMzIgY2hhbm5lbF9wcm9maWxlW0lXTF9OVU1fQ0hBTk5FTFNfVjNdOwomIzQzO30gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JFR1VMQVRPUllfU19WRVJfMyAqLwomIzQzOwogLyoqCiAgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3AgLSByZXNwb25zZSB0byBnZXQgTlZNIGRhdGEKICAqIEBnZW5lcmFsOiBnZW5lcmFsIE5WTSBkYXRhCkBAIC0yNTYsNyAmIzQzOzI4Myw3IEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcCB7CiAJc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fc2t1IG1hY19za3U7CiAJc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcGh5IHBoeV9za3U7CiAJc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSByZWd1bGF0b3J5OwotfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl80ICovCiYjNDM7fSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl81ICovCiAKIC8qKgogICogc3RydWN0IGl3bF9udm1fYWNjZXNzX2NvbXBsZXRlX2NtZCAtIE5WTV9BQ0NFU1MgY29tbWFuZHMgYXJlIGNvbXBsZXRlZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oCmluZGV4IDA4ZjRjYzNlYTFjMzA0Li5lZTc4MzcxMDgyYjA5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaApAQCAtMSw2ICYjNDM7MSw2IEBACiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2UgKi8KIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgMjAxOC0yMDI1IEludGVsIENvcnBvcmF0aW9uCiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQsIDIwMTgtMjAyNiBJbnRlbCBDb3Jwb3JhdGlvbgogICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgSW50ZWwgTW9iaWxlIENvbW11bmljYXRpb25zIEdtYkgKICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEludGVsIERldXRzY2hsYW5kIEdtYkgKICAqLwpAQCAtMTMxOSw3ICYjNDM7MTMxOSw3IEBAIHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8gewogCXU4IHJlc3VtZV93aGlsZV9zY2FubmluZzsKIAl1OCBzZWxmX3JlY292ZXJ5OwogCV9fbGUxNiByZXNlcnZlZDsKLQlzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlX21hdGNoIG1hdGNoZXNbXTsKJiM0MzsJc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZV9tYXRjaCBtYXRjaGVzW0lXTF9TQ0FOX01BWF9QUk9GSUxFU19WMl07CiB9IF9fcGFja2VkOyAvKiBTQ0FOX09GRkxPQURfUFJPRklMRVNfUVVFUllfUlNQX1NfVkVSXzMgYW5kCiAJICAgICAqIFNDQU5fT0ZGTE9BRF9NQVRDSF9JTkZPX05PVElGSUNBVElPTl9TX1ZFUl8xCiAJICAgICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uYwppbmRleCBhZmZmOGQ1MWNhOTUwYy4uZWMwZmY1OGFiMzEyZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jCkBAIC0xLDYgJiM0MzsxLDYgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZQogLyoKLSAqIENvcHlyaWdodChjKSAyMDIwLTIwMjUgSW50ZWwgQ29ycG9yYXRpb24KJiM0MzsgKiBDb3B5cmlnaHQoYykgMjAyMC0yMDI2IEludGVsIENvcnBvcmF0aW9uCiAgKi8KIAogI2luY2x1ZGUgJiMzNDtpd2wtZHJ2LmgmIzM0OwpAQCAtMTIsNiAmIzQzOzEyLDcgQEAKICNpbmNsdWRlICYjMzQ7ZncvYXBpL2FsaXZlLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtmdy91ZWZpLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtmdy9pbWcuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtmdy9kYmcuaCYjMzQ7CiAKICNkZWZpbmUgSVdMX1BOVk1fUkVEVUNFRF9DQVBfQklUIEJJVCgyNSkKIApAQCAtMjYsNiAmIzQzOzI3LDEyIEBAIHN0YXRpYyBib29sIGl3bF9wbnZtX2NvbXBsZXRlX2ZuKHN0cnVjdCBpd2xfbm90aWZfd2FpdF9kYXRhICpub3RpZl93YWl0LAogCXN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zID0gKHN0cnVjdCBpd2xfdHJhbnMgKilkYXRhOwogCXN0cnVjdCBpd2xfcG52bV9pbml0X2NvbXBsZXRlX250ZnkgKnBudm1fbnRmID0gKHZvaWQgKilwa3QtJmd0O2RhdGE7CiAKJiM0MzsJaWYgKElXTF9GV19DSEVDSyh0cmFucywKJiM0MzsJCQkgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpICZsdDsgc2l6ZW9mKCpwbnZtX250ZiksCiYjNDM7CQkJICYjMzQ7QmFkIG5vdGlmIGxlbjogJWRcbiYjMzQ7LAomIzQzOwkJCSBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkpKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiAJSVdMX0RFQlVHX0ZXKHRyYW5zLAogCQkgICAgICYjMzQ7UE5WTSBjb21wbGV0ZSBub3RpZmljYXRpb24gcmVjZWl2ZWQgd2l0aCBzdGF0dXMgMHglMHhcbiYjMzQ7LAogCQkgICAgIGxlMzJfdG9fY3B1KHBudm1fbnRmLSZndDtzdGF0dXMpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmMKaW5kZXggOGQ5ZmYzNmUzMGY1ZTMuLjFkNmQzOGVlNTViNDk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYwpAQCAtMzg5LDcgJiM0MzszODksNyBAQCBib29sIGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0KHUxNiAqbGlzdCwgdTggKnNpemUsIHUxNiBtY2MpCiAJaWYgKCpzaXplICZndDs9IElXTF9XVEFTX0JMQUNLX0xJU1RfTUFYKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlsaXN0WypzaXplJiM0MzsmIzQzO10gPSBtY2M7CiYjNDM7CWxpc3RbKCpzaXplKSYjNDM7JiM0MztdID0gbWNjOwogCXJldHVybiB0cnVlOwogfQogSVdMX0VYUE9SVF9TWU1CT0woaXdsX2FkZF9tY2NfdG9fdGFzX2Jsb2NrX2xpc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9zbWVtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uYwppbmRleCAzNDRkZGRlODViMTg5Ny4uMjBlZDI2YTFiYjAwZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvc21lbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvc21lbS5jCkBAIC0xLDYgJiM0MzsxLDYgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZQogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjEsIDIwMjUgSW50ZWwgQ29ycG9yYXRpb24KJiM0MzsgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgMjAxOC0yMDIxLCAyMDI1LTIwMjYgSW50ZWwgQ29ycG9yYXRpb24KICAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEludGVsIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBHbWJICiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJICiAgKi8KQEAgLTE0LDkgJiM0MzsxNCwxNyBAQCBzdGF0aWMgdm9pZCBpd2xfcGFyc2Vfc2hhcmVkX21lbV8yMjAwMChzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsCiB7CiAJc3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZyAqbWVtX2NmZyA9ICh2b2lkICopcGt0LSZndDtkYXRhOwogCWludCBpLCBsbWFjOwotCWludCBsbWFjX251bSA9IGxlMzJfdG9fY3B1KG1lbV9jZmctJmd0O2xtYWNfbnVtKTsKLQl1OCBhcGlfdmVyID0gaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZndydC0mZ3Q7ZncsIFNZU1RFTV9HUk9VUCwKLQkJCQkJICAgICBTSEFSRURfTUVNX0NGR19DTUQsIDApOwomIzQzOwlpbnQgbG1hY19udW07CiYjNDM7CXU4IGFwaV92ZXI7CiYjNDM7CiYjNDM7CWlmIChJV0xfRldfQ0hFQ0soZndydCwgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpICZsdDsKJiM0MzsJCQkgb2Zmc2V0b2ZlbmQoc3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZywgbG1hY19zbWVtWzFdKSwKJiM0MzsJCQkgJiMzNDtiYWQgc2hhcmVkIG1lbSBub3RpZmljYXRpb24gc2l6ZVxuJiMzNDspKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlsbWFjX251bSA9IGxlMzJfdG9fY3B1KG1lbV9jZmctJmd0O2xtYWNfbnVtKTsKJiM0MzsJYXBpX3ZlciA9IGl3bF9md19sb29rdXBfbm90aWZfdmVyKGZ3cnQtJmd0O2Z3LCBTWVNURU1fR1JPVVAsCiYjNDM7CQkJCQkgIFNIQVJFRF9NRU1fQ0ZHX0NNRCwgMCk7CiAKIAkvKiBOb3RlOiBub3RpZmljYXRpb24gaGFzIDMgZW50cmllcywgYnV0IHdlIG9ubHkgZXhwZWN0IDIgKi8KIAlpZiAoSVdMX0ZXX0NIRUNLKGZ3cnQsIGxtYWNfbnVtICZndDsgQVJSQVlfU0laRShmd3J0LSZndDtzbWVtX2NmZy5sbWFjKSwKQEAgLTMwLDcgJiM0MzszOCw3IEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwKIAogCWlmIChhcGlfdmVyICZndDs9IDQgJmFtcDsmYW1wOwogCSAgICAhSVdMX0ZXX0NIRUNLKGZ3cnQsIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSAmbHQ7IHNpemVvZigqbWVtX2NmZyksCi0JCQkgICYjMzQ7YmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemVcbiYjMzQ7KSkgewomIzQzOwkJCSAgJiMzNDtiYWQgc2hhcmVkIG1lbSBub3RpZmljYXRpb24gc2l6ZSAodjQpXG4mIzM0OykpIHsKIAkJZndydC0mZ3Q7c21lbV9jZmcucnhmaWZvMl9jb250cm9sX3NpemUgPQogCQkJbGUzMl90b19jcHUobWVtX2NmZy0mZ3Q7cnhmaWZvMl9jb250cm9sX3NpemUpOwogCX0KQEAgLTUzLDYgJiM0Mzs2MSwxMSBAQCBzdGF0aWMgdm9pZCBpd2xfcGFyc2Vfc2hhcmVkX21lbShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsCiAJc3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZ192MiAqbWVtX2NmZyA9ICh2b2lkICopcGt0LSZndDtkYXRhOwogCWludCBpOwogCiYjNDM7CWlmIChJV0xfRldfQ0hFQ0soZndydCwgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpICZsdDsKJiM0MzsJCQkgb2Zmc2V0b2Yoc3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZ192MiwgcnhmaWZvX2FkZHIpLAomIzQzOwkJCSAmIzM0O2JhZCBzaGFyZWQgbWVtIG5vdGlmaWNhdGlvbiBzaXplXG4mIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJZndydC0mZ3Q7c21lbV9jZmcubnVtX2xtYWNzID0gMTsKIAogCWZ3cnQtJmd0O3NtZW1fY2ZnLm51bV90eGZpZm9fZW50cmllcyA9IEFSUkFZX1NJWkUobWVtX2NmZy0mZ3Q7dHhmaWZvX3NpemUpOwpAQCAtNjcsNiAmIzQzOzgwLDExIEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCwKIAkvKiBuZXcgQVBJIGhhcyBtb3JlIGRhdGEsIGZyb20gcnhmaWZvX2FkZHIgZmllbGQgYW5kIG9uICovCiAJaWYgKGZ3X2hhc19jYXBhKCZhbXA7ZndydC0mZ3Q7ZnctJmd0O3Vjb2RlX2NhcGEsCiAJCQlJV0xfVUNPREVfVExWX0NBUEFfRVhURU5EX1NIQVJFRF9NRU1fQ0ZHKSkgewomIzQzOwkJaWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgJmx0OwomIzQzOwkJCQkgc2l6ZW9mKCptZW1fY2ZnKSwKJiM0MzsJCQkJICYjMzQ7YmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemUgKGV4dGVuZClcbiYjMzQ7KSkKJiM0MzsJCQlyZXR1cm47CiYjNDM7CiAJCUJVSUxEX0JVR19PTihzaXplb2YoZndydC0mZ3Q7c21lbV9jZmcuaW50ZXJuYWxfdHhmaWZvX3NpemUpICE9CiAJCQkgICAgIHNpemVvZihtZW1fY2ZnLSZndDtpbnRlcm5hbF90eGZpZm9fc2l6ZSkpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oCmluZGV4IDZhMzUzOWFkNzMzMTdlLi4zYWM3ZjAwMGVkZTQ3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmgKQEAgLTQxNSw2ICYjNDM7NDE1LDcgQEAgc3RydWN0IGl3bF9tYWNfY2ZnIHsKICAqIEB2aHRfbXVfbWltb19zdXBwb3J0ZWQ6IFZIVCBNVS1NSU1PIHN1cHBvcnQKICAqIEBudm1fdHlwZTogc2VlICZhbXA7ZW51bSBpd2xfbnZtX3R5cGUKICAqIEB1aGJfc3VwcG9ydGVkOiB1bHRyYSBoaWdoIGJhbmQgY2hhbm5lbHMgc3VwcG9ydGVkCiYjNDM7ICogQHVuaWk5X3N1cHBvcnRlZDogVU5JSS05IGNoYW5uZWxzIHN1cHBvcnRlZAogICogQGVodF9zdXBwb3J0ZWQ6IEVIVCBzdXBwb3J0ZWQKICAqIEB1aHJfc3VwcG9ydGVkOiBVSFIgc3VwcG9ydGVkCiAgKiBAbnVtX3JiZHM6IG51bWJlciBvZiByZWNlaXZlIGJ1ZmZlciBkZXNjcmlwdG9ycyB0byB1c2UKQEAgLTQ1MCw2ICYjNDM7NDUxLDcgQEAgc3RydWN0IGl3bF9yZl9jZmcgewogCSAgICBscF94dGFsX3dvcmthcm91bmQ6MSwKIAkgICAgdmh0X211X21pbW9fc3VwcG9ydGVkOjEsCiAJICAgIHVoYl9zdXBwb3J0ZWQ6MSwKJiM0MzsJICAgIHVuaWk5X3N1cHBvcnRlZDoxLAogCSAgICBlaHRfc3VwcG9ydGVkOjEsCiAJICAgIHVocl9zdXBwb3J0ZWQ6MTsKIAl1OCB2YWxpZF90eF9hbnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jCmluZGV4IGQ0N2I0YWUyZjQ4NjMwLi5iZDUzNTNmZGRlODFhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMKQEAgLTg1LDE2ICYjNDM7ODUsNyBAQCBzdGF0aWMgY29uc3QgdTE2IGl3bF9udm1fY2hhbm5lbHNbXSA9IHsKIAkxNDksIDE1MywgMTU3LCAxNjEsIDE2NQogfTsKIAotc3RhdGljIGNvbnN0IHUxNiBpd2xfZXh0X252bV9jaGFubmVsc1tdID0gewotCS8qIDIuNCBHSHogKi8KLQkxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsCi0JLyogNSBHSHogKi8KLQkzNiwgNDAsIDQ0LCA0OCwgNTIsIDU2LCA2MCwgNjQsIDY4LCA3MiwgNzYsIDgwLCA4NCwgODgsIDkyLAotCTk2LCAxMDAsIDEwNCwgMTA4LCAxMTIsIDExNiwgMTIwLCAxMjQsIDEyOCwgMTMyLCAxMzYsIDE0MCwgMTQ0LAotCTE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1LCAxNjksIDE3MywgMTc3LCAxODEKLX07Ci0KLXN0YXRpYyBjb25zdCB1MTYgaXdsX3VoYl9udm1fY2hhbm5lbHNbXSA9IHsKJiM0MztzdGF0aWMgY29uc3QgdTE2IGl3bF91bmlpOV9udm1fY2hhbm5lbHNbXSA9IHsKIAkvKiAyLjQgR0h6ICovCiAJMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LAogCS8qIDUgR0h6ICovCkBAIC0xMDUsMTIgJiM0Mzs5NiwxNiBAQCBzdGF0aWMgY29uc3QgdTE2IGl3bF91aGJfbnZtX2NoYW5uZWxzW10gPSB7CiAJMSwgNSwgOSwgMTMsIDE3LCAyMSwgMjUsIDI5LCAzMywgMzcsIDQxLCA0NSwgNDksIDUzLCA1NywgNjEsIDY1LCA2OSwKIAk3MywgNzcsIDgxLCA4NSwgODksIDkzLCA5NywgMTAxLCAxMDUsIDEwOSwgMTEzLCAxMTcsIDEyMSwgMTI1LCAxMjksCiAJMTMzLCAxMzcsIDE0MSwgMTQ1LCAxNDksIDE1MywgMTU3LCAxNjEsIDE2NSwgMTY5LCAxNzMsIDE3NywgMTgxLCAxODUsCi0JMTg5LCAxOTMsIDE5NywgMjAxLCAyMDUsIDIwOSwgMjEzLCAyMTcsIDIyMSwgMjI1LCAyMjksIDIzMwomIzQzOwkxODksIDE5MywgMTk3LCAyMDEsIDIwNSwgMjA5LCAyMTMsIDIxNywgMjIxLCAyMjUsIDIyOSwgMjMzLAomIzQzOwomIzQzOwkvKiBVTklJLTkgKi8KJiM0MzsJMjM3LCAyNDEsIDI0NSwgMjQ5LCAyNTMKIH07CiAKICNkZWZpbmUgSVdMX05WTV9OVU1fQ0hBTk5FTFMJCUFSUkFZX1NJWkUoaXdsX252bV9jaGFubmVscykKLSNkZWZpbmUgSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUCUFSUkFZX1NJWkUoaXdsX2V4dF9udm1fY2hhbm5lbHMpCi0jZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQglBUlJBWV9TSVpFKGl3bF91aGJfbnZtX2NoYW5uZWxzKQomIzQzOyNkZWZpbmUgSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUCTUxCiYjNDM7I2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU19VSEIJMTEwCiYjNDM7I2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU19VTklJOQlBUlJBWV9TSVpFKGl3bF91bmlpOV9udm1fY2hhbm5lbHMpCiAjZGVmaW5lIE5VTV8yR0haX0NIQU5ORUxTCQkxNAogI2RlZmluZSBOVU1fNUdIWl9DSEFOTkVMUwkJMzcKICNkZWZpbmUgRklSU1RfMkdIWl9IVF9NSU5VUwkJNQpAQCAtMzUxLDEyICYjNDM7MzQ2LDE1IEBAIHN0YXRpYyBpbnQgaXdsX2luaXRfY2hhbm5lbF9tYXAoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsCiAJaW50IG51bV9vZl9jaDsKIAljb25zdCB1MTYgKm52bV9jaGFuOwogCi0JaWYgKGNmZy0mZ3Q7dWhiX3N1cHBvcnRlZCkgewomIzQzOwlpZiAoY2ZnLSZndDt1bmlpOV9zdXBwb3J0ZWQpIHsKJiM0MzsJCW51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5OwomIzQzOwkJbnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzOwomIzQzOwl9IGVsc2UgaWYgKGNmZy0mZ3Q7dWhiX3N1cHBvcnRlZCkgewogCQludW1fb2ZfY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMU19VSEI7Ci0JCW52bV9jaGFuID0gaXdsX3VoYl9udm1fY2hhbm5lbHM7CiYjNDM7CQludm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7CiAJfSBlbHNlIGlmIChjZmctJmd0O252bV90eXBlID09IElXTF9OVk1fRVhUKSB7CiAJCW51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVDsKLQkJbnZtX2NoYW4gPSBpd2xfZXh0X252bV9jaGFubmVsczsKJiM0MzsJCW52bV9jaGFuID0gaXdsX3VuaWk5X252bV9jaGFubmVsczsKIAl9IGVsc2UgewogCQludW1fb2ZfY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMUzsKIAkJbnZtX2NoYW4gPSBpd2xfbnZtX2NoYW5uZWxzOwpAQCAtMTQ0MSw3ICYjNDM7MTQzOSw5IEBAIGl3bF9wYXJzZV9tZWlfbnZtX2RhdGEoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnICpjZmcsCiAJdTggcnhfY2hhaW5zID0gZnctJmd0O3ZhbGlkX3J4X2FudDsKIAl1OCB0eF9jaGFpbnMgPSBmdy0mZ3Q7dmFsaWRfcnhfYW50OwogCi0JaWYgKGNmZy0mZ3Q7dWhiX3N1cHBvcnRlZCkKJiM0MzsJaWYgKGNmZy0mZ3Q7dW5paTlfc3VwcG9ydGVkKQomIzQzOwkJZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5KTsKJiM0MzsJZWxzZSBpZiAoY2ZnLSZndDt1aGJfc3VwcG9ydGVkKQogCQlkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCKTsKIAllbHNlCiAJCWRhdGEgPSBremFsbG9jX2ZsZXgoKmRhdGEsIGNoYW5uZWxzLCBJV0xfTlZNX05VTV9DSEFOTkVMU19FWFQpOwpAQCAtMTUwNiw3ICYjNDM7MTUwNiw5IEBAIGl3bF9wYXJzZV9udm1fZGF0YShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgKmNmZywKIAl1MTYgbGFyX2NvbmZpZzsKIAljb25zdCBfX2xlMTYgKmNoX3NlY3Rpb247CiAKLQlpZiAoY2ZnLSZndDt1aGJfc3VwcG9ydGVkKQomIzQzOwlpZiAoY2ZnLSZndDt1bmlpOV9zdXBwb3J0ZWQpCiYjNDM7CQlkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVU5JSTkpOwomIzQzOwllbHNlIGlmIChjZmctJmd0O3VoYl9zdXBwb3J0ZWQpCiAJCWRhdGEgPSBremFsbG9jX2ZsZXgoKmRhdGEsIGNoYW5uZWxzLCBJV0xfTlZNX05VTV9DSEFOTkVMU19VSEIpOwogCWVsc2UgaWYgKGNmZy0mZ3Q7bnZtX3R5cGUgIT0gSVdMX05WTV9FWFQpCiAJCWRhdGEgPSBremFsbG9jX2ZsZXgoKmRhdGEsIGNoYW5uZWxzLCBJV0xfTlZNX05VTV9DSEFOTkVMUyk7CkBAIC0xNzI3LDEyICYjNDM7MTcyOSwxNSBAQCBpd2xfcGFyc2VfbnZtX21jY19pbmZvKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLAogCWludCBtYXhfbnVtX2NoOwogCXN0cnVjdCBpd2xfcmVnX2NhcGEgcmVnX2NhcGE7CiAKLQlpZiAoY2ZnLSZndDt1aGJfc3VwcG9ydGVkKSB7CiYjNDM7CWlmIChjZmctJmd0O3VuaWk5X3N1cHBvcnRlZCkgewomIzQzOwkJbWF4X251bV9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5OwomIzQzOwkJbnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzOwomIzQzOwl9IGVsc2UgaWYgKGNmZy0mZ3Q7dWhiX3N1cHBvcnRlZCkgewogCQltYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCOwotCQludm1fY2hhbiA9IGl3bF91aGJfbnZtX2NoYW5uZWxzOwomIzQzOwkJbnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzOwogCX0gZWxzZSBpZiAoY2ZnLSZndDtudm1fdHlwZSA9PSBJV0xfTlZNX0VYVCkgewogCQltYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUOwotCQludm1fY2hhbiA9IGl3bF9leHRfbnZtX2NoYW5uZWxzOwomIzQzOwkJbnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzOwogCX0gZWxzZSB7CiAJCW1heF9udW1fY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMUzsKIAkJbnZtX2NoYW4gPSBpd2xfbnZtX2NoYW5uZWxzOwpAQCAtMjA4NywxMyAmIzQzOzIwOTIsMjYgQEAgc3RydWN0IGl3bF9udm1fZGF0YSAqaXdsX2dldF9udm0oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsCiAJc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3YzICpyc3BfdjM7CiAJYm9vbCB2NCA9IGZ3X2hhc19hcGkoJmFtcDtmdy0mZ3Q7dWNvZGVfY2FwYSwKIAkJCSAgICAgSVdMX1VDT0RFX1RMVl9BUElfUkVHVUxBVE9SWV9OVk1fSU5GTyk7Ci0Jc2l6ZV90IHJzcF9zaXplID0gdjQgPyBzaXplb2YoKnJzcCkgOiBzaXplb2YoKnJzcF92Myk7CiYjNDM7CXNpemVfdCByc3Bfc2l6ZTsKIAl2b2lkICpjaGFubmVsX3Byb2ZpbGU7CiAKIAlyZXQgPSBpd2xfdHJhbnNfc2VuZF9jbWQodHJhbnMsICZhbXA7aGNtZCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIAomIzQzOwlzd2l0Y2ggKGl3bF9md19sb29rdXBfbm90aWZfdmVyKGZ3LCBSRUdVTEFUT1JZX0FORF9OVk1fR1JPVVAsCiYjNDM7CQkJCQlOVk1fR0VUX0lORk8sIDApKSB7CiYjNDM7CWNhc2UgNToKJiM0MzsJCXJzcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcCk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSA0OgomIzQzOwkJcnNwX3NpemUgPSBzaXplb2Yoc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3Y0KTsKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcnNwX3NpemUgPSBzaXplb2Yoc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3YzKTsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CiAJaWYgKFdBUk4oaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihoY21kLnJlc3BfcGt0KSAhPSByc3Bfc2l6ZSwKIAkJICYjMzQ7SW52YWxpZCBwYXlsb2FkIGxlbiBpbiBOVk0gcmVzcG9uc2UgZnJvbSBGVyAlZCYjMzQ7LAogCQkgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihoY21kLnJlc3BfcGt0KSkpIHsKQEAgLTIxMDcsNyAmIzQzOzIxMjUsNyBAQCBzdHJ1Y3QgaXdsX252bV9kYXRhICppd2xfZ2V0X252bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywKIAlpZiAoZW1wdHlfb3RwKQogCQlJV0xfSU5GTyh0cmFucywgJiMzNDtPVFAgaXMgZW1wdHlcbiYjMzQ7KTsKIAotCW52bSA9IGt6YWxsb2NfZmxleCgqbnZtLCBjaGFubmVscywgSVdMX05VTV9DSEFOTkVMU19WMik7CiYjNDM7CW52bSA9IGt6YWxsb2NfZmxleCgqbnZtLCBjaGFubmVscywgSVdMX05VTV9DSEFOTkVMU19WMyk7CiAJaWYgKCFudm0pIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYwppbmRleCAyMTg1ZGFkZTk1ZjhjYi4uMmRmNjY0M2E1YWE4MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYwpAQCAtMTEyMCw2ICYjNDM7MTEyMCwxMCBAQCB2b2lkIGl3bF9tbGRfaGFuZGxlX3R4X3Jlc3Bfbm90aWYoc3RydWN0IGl3bF9tbGQgKm1sZCwKIAlzc24gPSBsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKWFnZ19zdGF0dXMgJiM0MzsKIAkJCSAgIHR4X3Jlc3AtJmd0O2ZyYW1lX2NvdW50KSAmYW1wOyAweEZGRkY7CiAKJiM0MzsJaWYgKElXTF9GV19DSEVDSyhtbGQsIHR4cV9pZCAmZ3Q7PSBBUlJBWV9TSVpFKG1sZC0mZ3Q7ZndfaWRfdG9fdHhxKSwKJiM0MzsJCQkgJiMzNDtJbnZhbGlkIHR4cSBpZCAlZFxuJiMzNDssIHR4cV9pZCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJX19za2JfcXVldWVfaGVhZF9pbml0KCZhbXA7c2ticyk7CiAKIAkvKiB3ZSBjYW4gZnJlZSB1bnRpbCBzc24gJSBxLm5fYmQgbm90IGluY2x1c2l2ZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmMKaW5kZXggMzQyOWQ5YTEwZTQyMDkuLjZiMTFmYTMyZWE1YzZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmMKQEAgLTE1MDksNiAmIzQzOzE1MDksMTAgQEAgc3RhdGljIHZvaWQgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnMoc3RydWN0IGl3bF9tdm0gKm12bSwKIAkJaWYgKFdBUk5fT05fT05DRSh0cnVuY2F0ZWQgJmx0OyAwKSkKIAkJCXRydW5jYXRlZCA9IDA7CiAKJiM0MzsJCS8qIHRoaXMgd291bGQgYmUgYSBmaXJtd2FyZSBidWcgKi8KJiM0MzsJCWlmIChXQVJOX09OX09OQ0UocGt0c2l6ZSAmbHQ7IHNpemVvZigqaGRyKSkpCiYjNDM7CQkJcmV0dXJuOwomIzQzOwogCQlpZiAoaWVlZTgwMjExX2lzX2RhdGEoaGRyLSZndDtmcmFtZV9jb250cm9sKSkgewogCQkJaW50IGhkcmxlbiA9IGllZWU4MDIxMV9oZHJsZW4oaGRyLSZndDtmcmFtZV9jb250cm9sKTsKIAkJCWludCBpdmxlbiA9IDAsIGljdmxlbiA9IDQ7IC8qIGFsc28gRkNTICovCkBAIC0xNTE3LDEwICYjNDM7MTUyMSw2IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zKHN0cnVjdCBpd2xfbXZtICptdm0sCiAJCQlpZiAoIXBrdCkKIAkJCQlnb3RvIHJlcG9ydDsKIAotCQkJc2tiX3B1dF9kYXRhKHBrdCwgcGt0ZGF0YSwgaGRybGVuKTsKLQkJCXBrdGRhdGEgJiM0Mzs9IGhkcmxlbjsKLQkJCXBrdHNpemUgLT0gaGRybGVuOwotCiAJCQlpZiAoaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLSZndDtmcmFtZV9jb250cm9sKSkgewogCQkJCS8qCiAJCQkJICogVGhpcyBpcyB1bmxvY2tlZCBhbmQgdXNpbmcgZ3RrX2koYyl2bGVuLApAQCAtMTU0Niw2ICYjNDM7MTU0NiwxNyBAQCBzdGF0aWMgdm9pZCBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29ucyhzdHJ1Y3QgaXdsX212bSAqbXZtLAogCQkJCXRydW5jYXRlZCA9IDA7CiAJCQl9CiAKJiM0MzsJCQlpZiAoSVdMX0ZXX0NIRUNLKG12bSwKJiM0MzsJCQkJCSBwa3RzaXplICZsdDs9IGhkcmxlbiAmIzQzOyBpdmxlbiAmIzQzOyBpY3ZsZW4sCiYjNDM7CQkJCQkgJiMzNDtwa3RzaXplIGlzIHRvbyBzbWFsbCAlZFxuJiMzNDssCiYjNDM7CQkJCQkgcGt0c2l6ZSkpIHsKJiM0MzsJCQkJa2ZyZWVfc2tiKHBrdCk7CiYjNDM7CQkJCXJldHVybjsKJiM0MzsJCQl9CiYjNDM7CiYjNDM7CQkJc2tiX3B1dF9kYXRhKHBrdCwgcGt0ZGF0YSwgaGRybGVuKTsKJiM0MzsJCQlwa3RkYXRhICYjNDM7PSBoZHJsZW47CiYjNDM7CQkJcGt0c2l6ZSAtPSBoZHJsZW47CiAJCQlwa3RzaXplIC09IGl2bGVuICYjNDM7IGljdmxlbjsKIAkJCXBrdGRhdGEgJiM0Mzs9IGl2bGVuOwogCkBAIC0yNDQ4LDEzICYjNDM7MjQ1OSwxNSBAQCBpd2xfbXZtX25ldGRldGVjdF9xdWVyeV9yZXN1bHRzKHN0cnVjdCBpd2xfbXZtICptdm0sCiAKIAlpZiAoZndfaGFzX2FwaSgmYW1wO212bS0mZ3Q7ZnctJmd0O3Vjb2RlX2NhcGEsCiAJCSAgICAgICBJV0xfVUNPREVfVExWX0FQSV9TQ0FOX09GRkxPQURfQ0hBTlMpKSB7Ci0JCXF1ZXJ5X2xlbiA9IHNpemVvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9tYXRjaF9pbmZvKTsKIAkJbWF0Y2hlc19sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZV9tYXRjaCkgKgogCQkJbWF4X3Byb2ZpbGVzOwomIzQzOwkJcXVlcnlfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbywKJiM0MzsJCQkJICAgICBtYXRjaGVzKSAmIzQzOyBtYXRjaGVzX2xlbjsKIAl9IGVsc2UgewotCQlxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZXNfcXVlcnlfdjEpOwogCQltYXRjaGVzX2xlbiA9IHNpemVvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlX21hdGNoX3YxKSAqCiAJCQltYXhfcHJvZmlsZXM7CiYjNDM7CQlxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZXNfcXVlcnlfdjEpICYjNDM7CiYjNDM7CQkJbWF0Y2hlc19sZW47CiAJfQogCiAJbGVuID0gaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihjbWQucmVzcF9wa3QpOwpAQCAtMjc1Niw3ICYjNDM7Mjc2OSw3IEBAIHN0YXRpYyBpbnQgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3Qoc3RydWN0IGl3bF9tdm0gKm12bSwKIAkJCQkJIHN0cnVjdCBpd2xfd293bGFuX3N0YXR1c19kYXRhICpzdGF0dXMsCiAJCQkJCSB1MzIgbGVuKQogewotCXUzMiBkYXRhX3NpemUsIHBhY2tldF9sZW4gPSBsZTMyX3RvX2NwdShub3RpZi0mZ3Q7d2FrZV9wYWNrZXRfbGVuZ3RoKTsKJiM0MzsJdTMyIGRhdGFfc2l6ZSwgcGFja2V0X2xlbjsKIAogCWlmIChsZW4gJmx0OyBzaXplb2YoKm5vdGlmKSkgewogCQlJV0xfRVJSKG12bSwgJiMzNDtJbnZhbGlkIFdvV0xBTiB3YWtlIHBhY2tldCBub3RpZmljYXRpb24hXG4mIzM0Oyk7CkBAIC0yNzc1LDYgJiM0MzsyNzg4LDcgQEAgc3RhdGljIGludCBpd2xfbXZtX3dvd2xhbl9zdG9yZV93YWtlX3BrdChzdHJ1Y3QgaXdsX212bSAqbXZtLAogCQlyZXR1cm4gLUVJTzsKIAl9CiAKJiM0MzsJcGFja2V0X2xlbiA9IGxlMzJfdG9fY3B1KG5vdGlmLSZndDt3YWtlX3BhY2tldF9sZW5ndGgpOwogCWRhdGFfc2l6ZSA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCBpd2xfd293bGFuX3dha2VfcGt0X25vdGlmLCB3YWtlX3BhY2tldCk7CiAKIAkvKiBkYXRhX3NpemUgZ290IHRoZSBwYWRkaW5nIGZyb20gdGhlIG5vdGlmaWNhdGlvbiwgcmVtb3ZlIGl0LiAqLwpAQCAtMjgwNyw3ICYjNDM7MjgyMSw4IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyKHN0cnVjdCBpd2xfbXZtICptdm0sCiAJaWYgKElTX0VSUl9PUl9OVUxMKHZpZikpCiAJCXJldHVybjsKIAotCWlmIChsZW4gJmx0OyBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbykgJiM0MzsgbWF0Y2hlc19sZW4pIHsKJiM0MzsJaWYgKGxlbiAmbHQ7IG9mZnNldG9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8sIG1hdGNoZXMpICYjNDM7CiYjNDM7CQkgICAgbWF0Y2hlc19sZW4pIHsKIAkJSVdMX0VSUihtdm0sICYjMzQ7SW52YWxpZCBzY2FuIG1hdGNoIGluZm8gbm90aWZpY2F0aW9uXG4mIzM0Oyk7CiAJCXJldHVybjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmMKaW5kZXggM2ExNGNhNWU1MTJhZTMuLjhkN2Y2MGRjZDAyNzBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jCkBAIC02NDYsNyAmIzQzOzY0Niw4IEBAIHN0YXRpYyB2b2lkIGl0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJV0FSTl9PTigqdGFyZ2V0LSZndDtjaXBoZXIgPT0gSVdMX0xPQ0FUSU9OX0NJUEhFUl9JTlZBTElEKTsKIH0KIAotc3RhdGljIHZvaWQKJiM0MzsvKiBUaGUgdGsgYnVmZmVyIGlzIGFzc3VtZWQgdG8gYmUgZXhhY3RseSBUS18xMUFaX0xFTiBieXRlcyAqLwomIzQzO3N0YXRpYyBpbnQKIGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3Jhbmdpbmcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAkJCQl1OCAqYnNzaWQsIHU4ICpjaXBoZXIsIHU4ICpobHRrLCB1OCAqdGssCiAJCQkJdTggKnJ4X3BuLCB1OCAqdHhfcG4sIF9fbGUzMiAqZmxhZ3MpCkBAIC02NTYsMTIgJiM0Mzs2NTcsMTIgQEAgaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCXN0cnVjdCBpd2xfbXZtX3ZpZiAqbXZtdmlmID0gaXdsX212bV92aWZfZnJvbV9tYWM4MDIxMSh2aWYpOwogCiAJaWYgKG12bXZpZi0mZ3Q7ZnRtX3VucHJvdGVjdGVkKQotCQlyZXR1cm47CiYjNDM7CQlyZXR1cm4gMDsKICNlbmRpZgogCiAJaWYgKCEobGUzMl90b19jcHUoKmZsYWdzKSAmYW1wOyAoSVdMX0lOSVRJQVRPUl9BUF9GTEFHU19OT05fVEIgfAogCQkgICAgICAgSVdMX0lOSVRJQVRPUl9BUF9GTEFHU19UQikpKQotCQlyZXR1cm47CiYjNDM7CQlyZXR1cm4gMDsKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDttdm0tJmd0O211dGV4KTsKIApAQCAtNjc5LDE0ICYjNDM7NjgwLDMxIEBAIGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3Jhbmdpbmcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAkJaWYgKHZpZi0mZ3Q7Y2ZnLmFzc29jICZhbXA7JmFtcDsKIAkJICAgICFtZW1jbXAodmlmLSZndDtic3NfY29uZi5ic3NpZCwgYnNzaWQsIEVUSF9BTEVOKSkgewogCQkJc3RydWN0IGl3bF9tdm1fZnRtX2l0ZXJfZGF0YSB0YXJnZXQ7CiYjNDM7CQkJdTMyIGtleV9sZW47CiAKIAkJCXRhcmdldC5ic3NpZCA9IGJzc2lkOwogCQkJdGFyZ2V0LmNpcGhlciA9IGNpcGhlcjsKIAkJCXRhcmdldC50ayA9IE5VTEw7CiAJCQlpZWVlODAyMTFfaXRlcl9rZXlzKG12bS0mZ3Q7aHcsIHZpZiwgaXRlciwgJmFtcDt0YXJnZXQpOwogCi0JCQlpZiAoIVdBUk5fT04oIXRhcmdldC50aykpCi0JCQkJbWVtY3B5KHRrLCB0YXJnZXQudGssIFRLXzExQVpfTEVOKTsKJiM0MzsJCQlpZiAoV0FSTl9PTighdGFyZ2V0LnRrKSkKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CQkJc3dpdGNoICgqdGFyZ2V0LmNpcGhlcikgewomIzQzOwkJCWNhc2UgSVdMX0xPQ0FUSU9OX0NJUEhFUl9DQ01QXzEyODoKJiM0MzsJCQljYXNlIElXTF9MT0NBVElPTl9DSVBIRVJfR0NNUF8xMjg6CiYjNDM7CQkJCWtleV9sZW4gPSBXTEFOX0tFWV9MRU5fQ0NNUDsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJY2FzZSBJV0xfTE9DQVRJT05fQ0lQSEVSX0dDTVBfMjU2OgomIzQzOwkJCQlrZXlfbGVuID0gV0xBTl9LRVlfTEVOX0dDTVBfMjU2OwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQlkZWZhdWx0OgomIzQzOwkJCQlXQVJOX09OKDEpOwomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCQl9CiYjNDM7CiYjNDM7CQkJbWVtc2V0KHRrLCAwLCBUS18xMUFaX0xFTik7CiYjNDM7CQkJbWVtY3B5KHRrLCB0YXJnZXQudGssIGtleV9sZW4pOwogCQl9IGVsc2UgewogCQkJbWVtY3B5KHRrLCBlbnRyeS0mZ3Q7dGssIHNpemVvZihlbnRyeS0mZ3Q7dGspKTsKIAkJfQpAQCAtNjk1LDggJiM0Mzs3MTMsMTAgQEAgaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCQltZW1jcHkodHhfcG4sIGVudHJ5LSZndDt0eF9wbiwgc2l6ZW9mKGVudHJ5LSZndDt0eF9wbikpOwogCiAJCUZUTV9TRVRfRkxBRyhTRUNVUkVEKTsKLQkJcmV0dXJuOwomIzQzOwkJcmV0dXJuIDA7CiAJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludApAQCAtNzA4LDEyICYjNDM7NzI4LDExIEBAIGl3bF9tdm1fZnRtX3B1dF90YXJnZXRfdjcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCi0JaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LSZndDtic3NpZCwKLQkJCQkJJmFtcDt0YXJnZXQtJmd0O2NpcGhlciwgdGFyZ2V0LSZndDtobHRrLAotCQkJCQl0YXJnZXQtJmd0O3RrLCB0YXJnZXQtJmd0O3J4X3BuLAotCQkJCQl0YXJnZXQtJmd0O3R4X3BuLAotCQkJCQkmYW1wO3RhcmdldC0mZ3Q7aW5pdGlhdG9yX2FwX2ZsYWdzKTsKLQlyZXR1cm4gZXJyOwomIzQzOwlyZXR1cm4gaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LSZndDtic3NpZCwKJiM0MzsJCQkJCSAgICAgICZhbXA7dGFyZ2V0LSZndDtjaXBoZXIsIHRhcmdldC0mZ3Q7aGx0aywKJiM0MzsJCQkJCSAgICAgIHRhcmdldC0mZ3Q7dGssIHRhcmdldC0mZ3Q7cnhfcG4sCiYjNDM7CQkJCQkgICAgICB0YXJnZXQtJmd0O3R4X3BuLAomIzQzOwkJCQkJICAgICAgJmFtcDt0YXJnZXQtJmd0O2luaXRpYXRvcl9hcF9mbGFncyk7CiB9CiAKIHN0YXRpYyBpbnQgaXdsX212bV9mdG1fc3RhcnRfdjExKHN0cnVjdCBpd2xfbXZtICptdm0sCkBAIC04ODEsMTEgJiM0Mzs5MDAsMTMgQEAgaXdsX212bV9mdG1fcHV0X3RhcmdldF92MTAoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAlpd2xfbXZtX2Z0bV9zZXRfdGFyZ2V0X2ZsYWdzKG12bSwgcGVlciwgJmFtcDt0YXJnZXQtJmd0O2luaXRpYXRvcl9hcF9mbGFncyk7CiAJaXdsX212bV9mdG1fc2V0X3N0YShtdm0sIHZpZiwgcGVlciwgJmFtcDt0YXJnZXQtJmd0O3N0YV9pZCwKIAkJCSAgICAmYW1wO3RhcmdldC0mZ3Q7aW5pdGlhdG9yX2FwX2ZsYWdzKTsKLQlpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKG12bSwgdmlmLCB0YXJnZXQtJmd0O2Jzc2lkLAotCQkJCQkmYW1wO3RhcmdldC0mZ3Q7Y2lwaGVyLCB0YXJnZXQtJmd0O2hsdGssCi0JCQkJCXRhcmdldC0mZ3Q7dGssIHRhcmdldC0mZ3Q7cnhfcG4sCi0JCQkJCXRhcmdldC0mZ3Q7dHhfcG4sCi0JCQkJCSZhbXA7dGFyZ2V0LSZndDtpbml0aWF0b3JfYXBfZmxhZ3MpOwomIzQzOwlyZXQgPSBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKG12bSwgdmlmLCB0YXJnZXQtJmd0O2Jzc2lkLAomIzQzOwkJCQkJICAgICAgJmFtcDt0YXJnZXQtJmd0O2NpcGhlciwgdGFyZ2V0LSZndDtobHRrLAomIzQzOwkJCQkJICAgICAgdGFyZ2V0LSZndDt0aywgdGFyZ2V0LSZndDtyeF9wbiwKJiM0MzsJCQkJCSAgICAgIHRhcmdldC0mZ3Q7dHhfcG4sCiYjNDM7CQkJCQkgICAgICAmYW1wO3RhcmdldC0mZ3Q7aW5pdGlhdG9yX2FwX2ZsYWdzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiAKIAlpMnJfbWF4X3N0cyA9IElXTF9NVk1fRlRNX0kyUl9NQVhfU1RTICZndDsgMSA/IDEgOgogCQlJV0xfTVZNX0ZUTV9JMlJfTUFYX1NUUzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jCmluZGV4IDZlNTA3ZDZkY2RkMmExLi5mYTUyM2JlOTFkOGFkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZncuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jCkBAIC05NjQsMTIgJiM0Mzs5NjQsMjIgQEAgaW50IGl3bF9tdm1fZ2V0X3Nhcl9nZW9fcHJvZmlsZShzdHJ1Y3QgaXdsX212bSAqbXZtKQogCQlyZXR1cm4gcmV0OwogCX0KIAomIzQzOwlpZiAoSVdMX0ZXX0NIRUNLKG12bSwKJiM0MzsJCQkgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihjbWQucmVzcF9wa3QpICE9CiYjNDM7CQkJIHNpemVvZigqcmVzcCksCiYjNDM7CQkJICYjMzQ7V3Jvbmcgc2l6ZSBmb3IgaXdsX2dlb190eF9wb3dlcl9wcm9maWxlc19yZXNwOiAlZFxuJiMzNDssCiYjNDM7CQkJIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oY21kLnJlc3BfcGt0KSkpIHsKJiM0MzsJCXJldCA9IC1FSU87CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwogCXJlc3AgPSAodm9pZCAqKWNtZC5yZXNwX3BrdC0mZ3Q7ZGF0YTsKIAlyZXQgPSBsZTMyX3RvX2NwdShyZXNwLSZndDtwcm9maWxlX2lkeCk7CiAKIAlpZiAoV0FSTl9PTihyZXQgJmd0OyBCSU9TX0dFT19NQVhfUFJPRklMRV9OVU0pKQogCQlyZXQgPSAtRUlPOwogCiYjNDM7b3V0OgogCWl3bF9mcmVlX3Jlc3AoJmFtcDtjbWQpOwogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9wdHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3B0cC5jCmluZGV4IGYzOWViNDg4NjRlYjRiLi40OWRjYjEzODgwMDdiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcHRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcHRwLmMKQEAgLTEsNiAmIzQzOzEsNiBAQAogLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlCiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIC0gMjAyMywgMjAyNSBJbnRlbCBDb3Jwb3JhdGlvbgomIzQzOyAqIENvcHlyaWdodCAoQykgMjAyMSAtIDIwMjMsIDIwMjUtMjAyNiBJbnRlbCBDb3Jwb3JhdGlvbgogICovCiAKICNpbmNsdWRlICYjMzQ7bXZtLmgmIzM0OwpAQCAtMTIxLDYgJiM0MzsxMjEsOCBAQCBpd2xfbXZtX2dldF9jcm9zc3RpbWVzdGFtcF9mdyhzdHJ1Y3QgaXdsX212bSAqbXZtLCB1MzIgKmdwMiwgdTY0ICpzeXNfdGltZSkKIAkqc3lzX3RpbWUgPSAodTY0KWxlMzJfdG9fY3B1KHJlc3AtJmd0O3BsYXRmb3JtX3RpbWVzdGFtcF9oaSkgJmx0OyZsdDsgMzIgfAogCQlsZTMyX3RvX2NwdShyZXNwLSZndDtwbGF0Zm9ybV90aW1lc3RhbXBfbG8pOwogCiYjNDM7CWl3bF9mcmVlX3Jlc3AoJmFtcDtjbWQpOwomIzQzOwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jCmluZGV4IGRjNjljNzFmYWE3NmNhLi5kM2MyZmU4MzA0Nzc3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jCkBAIC0xNTQ0LDYgJiM0MzsxNTQ0LDE3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGl3bF9tdm1fZ2V0X3NjZF9zc24oc3RydWN0IGl3bF9tdm0gKm12bSwKIAlyZXR1cm4gdmFsICZhbXA7IDB4RkZGOwogfQogCiYjNDM7c3RhdGljIGlubGluZSBzaXplX3QgaXdsX212bV90eF9yZXNwX21pbl9sZW4oc3RydWN0IGl3bF9tdm0gKm12bSwKJiM0MzsJCQkJCSAgICAgc3RydWN0IGl3bF90eF9yZXNwICp0eF9yZXNwKQomIzQzO3sKJiM0MzsJc3RydWN0IGFnZ190eF9zdGF0dXMgKmFnZ19zdGF0dXMgPQomIzQzOwkJaXdsX212bV9nZXRfYWdnX3N0YXR1cyhtdm0sIHR4X3Jlc3ApOwomIzQzOwomIzQzOwkvKiBUaGUgYWdncmVnYXRlIHJlc3BvbnNlIGVuZHMgd2l0aCBhIHRyYWlsaW5nIFNDRCBTU04gX19sZTMyIHdvcmQuICovCiYjNDM7CXJldHVybiAodTggKikoYWdnX3N0YXR1cyAmIzQzOyB0eF9yZXNwLSZndDtmcmFtZV9jb3VudCkgLSAodTggKil0eF9yZXNwICYjNDM7CiYjNDM7CQlzaXplb2YoX19sZTMyKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBpd2xfbXZtX3J4X3R4X2NtZF9zaW5nbGUoc3RydWN0IGl3bF9tdm0gKm12bSwKIAkJCQkgICAgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QpCiB7CkBAIC0xODQ3LDYgJiM0MzsxODU4LDkgQEAgc3RhdGljIHZvaWQgaXdsX212bV9yeF90eF9jbWRfYWdnKHN0cnVjdCBpd2xfbXZtICptdm0sCiAJaW50IHF1ZXVlID0gU0VRX1RPX1FVRVVFKHNlcXVlbmNlKTsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhOwogCiYjNDM7CWlmIChXQVJOX09OX09OQ0UoaXdsX212bV9oYXNfbmV3X3R4X2FwaShtdm0pKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlpZiAoV0FSTl9PTl9PTkNFKHF1ZXVlICZsdDsgSVdMX01WTV9EUUFfTUlOX0RBVEFfUVVFVUUgJmFtcDsmYW1wOwogCQkJIChxdWV1ZSAhPSBJV0xfTVZNX0RRQV9CU1NfQ0xJRU5UX1FVRVVFKSkpCiAJCXJldHVybjsKQEAgLTE4ODEsNiAmIzQzOzE4OTUsMjYgQEAgdm9pZCBpd2xfbXZtX3J4X3R4X2NtZChzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4YikKIHsKIAlzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0ID0gcnhiX2FkZHIocnhiKTsKIAlzdHJ1Y3QgaXdsX3R4X3Jlc3AgKnR4X3Jlc3AgPSAodm9pZCAqKXBrdC0mZ3Q7ZGF0YTsKJiM0MzsJc2l6ZV90IG1pbl9sZW47CiYjNDM7CiYjNDM7CWlmIChJV0xfRldfQ0hFQ0sobXZtLCAhdHhfcmVzcC0mZ3Q7ZnJhbWVfY291bnQsCiYjNDM7CQkJICYjMzQ7aW52YWxpZCBUWF9DTUQgZnJhbWVfY291bnQgJXVcbiYjMzQ7LAomIzQzOwkJCSB0eF9yZXNwLSZndDtmcmFtZV9jb3VudCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWlmIChJV0xfRldfQ0hFQ0sobXZtLAomIzQzOwkJCSBpd2xfbXZtX2hhc19uZXdfdHhfYXBpKG12bSkgJmFtcDsmYW1wOwomIzQzOwkJCSB0eF9yZXNwLSZndDtmcmFtZV9jb3VudCAhPSAxLAomIzQzOwkJCSAmIzM0O2ludmFsaWQgVFhfQ01EIGZyYW1lX2NvdW50ICV1IGZvciBuZXcgVFggQVBJXG4mIzM0OywKJiM0MzsJCQkgdHhfcmVzcC0mZ3Q7ZnJhbWVfY291bnQpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltaW5fbGVuID0gaXdsX212bV90eF9yZXNwX21pbl9sZW4obXZtLCB0eF9yZXNwKTsKJiM0MzsJaWYgKElXTF9GV19DSEVDSyhtdm0sIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSAmbHQ7IG1pbl9sZW4sCiYjNDM7CQkJICYjMzQ7aW52YWxpZCBUWF9DTUQgbGVuICV1IChmcmFtZV9jb3VudCAldSwgbWluICV6dSlcbiYjMzQ7LAomIzQzOwkJCSBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCksIHR4X3Jlc3AtJmd0O2ZyYW1lX2NvdW50LAomIzQzOwkJCSBtaW5fbGVuKSkKJiM0MzsJCXJldHVybjsKIAogCWlmICh0eF9yZXNwLSZndDtmcmFtZV9jb3VudCA9PSAxKQogCQlpd2xfbXZtX3J4X3R4X2NtZF9zaW5nbGUobXZtLCBwa3QpOwpAQCAtMjEwMCw4ICYjNDM7MjEzNCwxNCBAQCB2b2lkIGl3bF9tdm1fcnhfYmFfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpCiAJCQlpZiAodGlkID09IElXTF9NR01UX1RJRCkKIAkJCQl0aWQgPSBJV0xfTUFYX1RJRF9DT1VOVDsKIAomIzQzOwkJCWlmIChJV0xfRldfQ0hFQ0sobXZtLCB0aWQgJmd0Oz0KJiM0MzsJCQkJCSBBUlJBWV9TSVpFKG12bXN0YS0mZ3Q7dGlkX2RhdGEpLAomIzQzOwkJCQkJICYjMzQ7aW52YWxpZCBUSUQgJWQgaW4gY29tcHJlc3NlZCBCQVxuJiMzNDssCiYjNDM7CQkJCQkgdGlkKSkKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CiAJCQlpZiAobXZtc3RhKQotCQkJCW12bXN0YS0mZ3Q7dGlkX2RhdGFbaV0ubHFfY29sb3IgPSBscV9jb2xvcjsKJiM0MzsJCQkJbXZtc3RhLSZndDt0aWRfZGF0YVt0aWRdLmxxX2NvbG9yID0gbHFfY29sb3I7CiAKIAkJCWl3bF9tdm1fdHhfcmVjbGFpbShtdm0sIHN0YV9pZCwgdGlkLAogCQkJCQkgICAoaW50KShsZTE2X3RvX2NwdShiYV90ZmQtJmd0O3FfbnVtKSksCkBAIC0yMTIxLDYgJiM0MzsyMTYxLDkgQEAgdm9pZCBpd2xfbXZtX3J4X2JhX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKQogCWJhX25vdGlmID0gKHZvaWQgKilwa3QtJmd0O2RhdGE7CiAJc3RhX2lkID0gYmFfbm90aWYtJmd0O3N0YV9pZDsKIAl0aWQgPSBiYV9ub3RpZi0mZ3Q7dGlkOwomIzQzOwlpZiAoSVdMX0ZXX0NIRUNLKG12bSwgdGlkICZndDs9IEFSUkFZX1NJWkUobXZtc3RhLSZndDt0aWRfZGF0YSksCiYjNDM7CQkJICYjMzQ7aW52YWxpZCBUSUQgJWQgaW4gQkEgbm90aWZcbiYjMzQ7LCB0aWQpKQomIzQzOwkJcmV0dXJuOwogCS8qICYjMzQ7ZmxvdyYjMzQ7IGNvcnJlc3BvbmRzIHRvIFR4IHF1ZXVlICovCiAJdHhxID0gbGUxNl90b19jcHUoYmFfbm90aWYtJmd0O3NjZF9mbG93KTsKIAkvKiAmIzM0O3NzbiYjMzQ7IGlzIHN0YXJ0IG9mIGJsb2NrLWFjayBUeCB3aW5kb3csIGNvcnJlc3BvbmRzIHRvIGluZGV4CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLmMKaW5kZXggZDVlYjg5NTE0NGVmYzkuLjdmODg2MjAwZDY5MzMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby5jCkBAIC0xLDcgJiM0MzsxLDcgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJICi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNSBJbnRlbCBDb3Jwb3JhdGlvbgomIzQzOyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI2IEludGVsIENvcnBvcmF0aW9uCiAgKi8KICNpbmNsdWRlICYjMzQ7aXdsLXRyYW5zLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtpd2wtZmguaCYjMzQ7CkBAIC05OSw2ICYjNDM7OTksMTEgQEAgaW50IGl3bF9wY2llX2luaXRfZndfc2VjKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLAogCS8qIGFkZCAyIGR1ZSB0byBzZXBhcmF0b3JzICovCiAJcGFnaW5nX2NudCA9IGl3bF9wY2llX2dldF9udW1fc2VjdGlvbnMoZncsIGxtYWNfY250ICYjNDM7IHVtYWNfY250ICYjNDM7IDIpOwogCiYjNDM7CWlmIChXQVJOX09OKGxtYWNfY250ICZndDsgQVJSQVlfU0laRShjdHh0X2RyYW0tJmd0O2xtYWNfaW1nKSB8fAomIzQzOwkJICAgIHVtYWNfY250ICZndDsgQVJSQVlfU0laRShjdHh0X2RyYW0tJmd0O3VtYWNfaW1nKSB8fAomIzQzOwkJICAgIHBhZ2luZ19jbnQgJmd0OyBBUlJBWV9TSVpFKGN0eHRfZHJhbS0mZ3Q7dmlydHVhbF9pbWcpKSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCWRyYW0tJmd0O2Z3ID0ga3phbGxvY19vYmpzKCpkcmFtLSZndDtmdywgdW1hY19jbnQgJiM0MzsgbG1hY19jbnQpOwogCWlmICghZHJhbS0mZ3Q7ZncpCiAJCXJldHVybiAtRU5PTUVNOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDYxNgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBpd2x3aWZpIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBPcHBvcnR1bml0aWVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGZvciB0aGUgYGl3bHdpZmlgIGRyaXZlciwgd2hpY2ggbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGNvcmUgY29tcG9uZW50IG9mIExpbnV4IGtlcm5lbCB3aXJlbGVzcyBuZXR3b3JraW5nLCBzcGVjaWZpY2FsbHkgZm9yIEludGVsJiMzOTtzIFdpLUZpIGFkYXB0ZXJzLiBUaGUgc2hlZXIgbnVtYmVyIG9mIGZpbGVzIHRvdWNoZWQgaXMgdGhlIGZpcnN0IGluZGljYXRvciB0aGF0IHRoaXMgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UsIGltcGFjdGluZyBhIHdpZGUgcmFuZ2Ugb2YgZnVuY3Rpb25hbGl0aWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGdpdmVuIGl0cyBjbG9zZSBpbnRlcmFjdGlvbiB3aXRoIGJvdGggaGFyZHdhcmUgYW5kIGZpcm13YXJlLgoKTG9va2luZyBhdCB0aGUgZmlsZXMsIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGV2ZXJ5dGhpbmcgZnJvbSBSRiBjb25maWd1cmF0aW9uIChgcmYtcGUuY2ApLCBOVk0gKG5vbi12b2xhdGlsZSBtZW1vcnkpIHBhcnNpbmcgYW5kIGhhbmRsaW5nIChgbnZtLXJlZy5oYCwgYHBudm0uY2AsIGBpd2wtbnZtLXBhcnNlLmNgLCBhbmQgc28gb24pLCByZWd1bGF0b3J5IGRvbWFpbiBoYW5kbGluZyAoYHJlZ3VsYXRvcnkuY2ApLCBzaGFyZWQgbWVtb3J5IG1hbmFnZW1lbnQgKGBzbWVtLmNgKSwgTXVsdGljYXN0L01WTSBhbmQgVFgvUlggZGF0YSBwcm9jZXNzaW5nIChgdHguY2AsIGBkMy5jYCwgYGZ0bS1pbml0aWF0b3IuY2AsIGBmdy5jYCwgYHB0cC5jYCwgYHR4LmNgLCBgY3R4dC1pbmZvLmNgKSwgYW5kIGNvcmUgZHJpdmVyIGNvbmZpZ3VyYXRpb24gKGBpd2wtY29uZmlnLmhgKS4gVGhpcyB0b3VjaGVzIGEgbG90IG9mIHN1cmZhY2UgYXJlYSEKClRoZSBjaGFuZ2VzIHRoZW1zZWx2ZXMgYXJlIGludGVyZXN0aW5nLiBUaGUgYWRkaXRpb24gb2YgYHVuaWk5X3N1cHBvcnRlZGAgaW4gdGhlIFJGIGFuZCBNQUMgY29uZmlndXJhdGlvbnMgaGludHMgYXQgbmV3IGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvciBzdXBwb3J0IGZvciB1cGRhdGVkIHN0YW5kYXJkcy4gTmV3IGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gTlZNIGRhdGEgc3RydWN0dXJlcyAoYElXTF9OVU1fQ0hBTk5FTFNfVjNgLCBgaXdsX252bV9nZXRfaW5mb19yc3BfdjRgIGV0Yy4pIHN1Z2dlc3QgZXhwYW5kZWQgTlZNIGRhdGEgaGFuZGxpbmcgYW5kIHBvdGVudGlhbGx5IG5ldyByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbi4KCkNydWNpYWxseSwgdGhlIG1lbnRpb25zIG9mIGFkZGVkIGJvdW5kcyBjaGVja3MgYW5kIHBheWxvYWQgbGVuZ3RoIGNoZWNrcyBmb3IgZmlybXdhcmUgY29tbXVuaWNhdGlvbnMgYXJlIGh1Z2UuIFRoaXMgaXMgZXhhY3RseSB0aGUga2luZCBvZiB0aGluZyB0aGF0IGZ1enplcnMgbG92ZSB0byB0YXJnZXQuIFRoZXNlIGNoZWNrcyByZXByZXNlbnQgYXJlYXMgd2hlcmUgaW5wdXQgdmFsaWRhdGlvbiBjb3VsZCBiZSBpbXByb3ZlZCwgaW5jcmVhc2luZyB0aGUgcG90ZW50aWFsIGZvciBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcyBvciBvdGhlciBleHBsb2l0YWJsZSBjb25kaXRpb25zLiBUaGUgYnVnIGZpeGVzLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgcmVsYXRlZCB0byBtZW1vcnkgbGVha3MgYW5kIGluY29ycmVjdCBkYXRhIGNvcGllcyAoIGBpd2xfYWRkX21jY190b190YXNfYmxvY2tfbGlzdGAsIGBpd2xfbXZtX2dldF9jcm9zc3RpbWVzdGFtcF9md2AsIGBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nYCwgYGl3bF9tdm1fcnhfdHhfY21kYCwgYGl3bF9tdm1fcnhfYmFfbm90aWZgKSwgaGlnaGxpZ2h0IGFyZWFzIHdoZXJlIHN1YnRsZSBwcm9ncmFtbWluZyBlcnJvcnMgY291bGQgbGVhZCB0byBzZXJpb3VzIGNvbnNlcXVlbmNlcy4gVGhlc2UgYXJlIGdyZWF0IHRhcmdldHMgdG8gZXhwbG9pdC4KClNvLCB3aGVyZSBkbyB3ZSBmb2N1cyB0aGUgZnV6emVyPyBMZXQmIzM5O3MgY29tcGlsZSBhIGxpc3Qgb2YgaW50ZXJlc3RpbmcgZnVuY3Rpb25zIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IHRoZSBwYXRjaDogYGl3bF9wbnZtX2NvbXBsZXRlX2ZuYCwgYGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0YCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwYCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtYCwgYGl3bF9pbml0X2NoYW5uZWxfbWFwYCwgYGl3bF9wYXJzZV9tZWlfbnZtX2RhdGFgLCBgaXdsX3BhcnNlX252bV9kYXRhYCwgYGl3bF9wYXJzZV9udm1fbWNjX2luZm9gLCBgaXdsX2dldF9udm1gLCBgaXdsX21sZF9oYW5kbGVfdHhfcmVzcF9ub3RpZmAsIGBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29uc2AsIGBpd2xfbXZtX25ldGRldGVjdF9xdWVyeV9yZXN1bHRzYCwgYGl3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0YCwgYGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyYCwgYGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdgLCBgaXdsX212bV9mdG1fcHV0X3RhcmdldF92N2AsIGBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3YxMGAsIGBpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGVgLCBgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZndgLCBgaXdsX212bV9yeF90eF9jbWRfYWdnYCwgYGl3bF9tdm1fcnhfdHhfY21kYCwgYGl3bF9tdm1fcnhfYmFfbm90aWZgLCBgaXdsX3BjaWVfaW5pdF9md19zZWNgLgoKQmVmb3JlIHdlIGV2ZW4gc3RhcnQgZnV6emluZywgbGV0JiMzOTtzIHZlcmlmeSB0aGF0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQuIFdlJiMzOTtyZSBsb29raW5nIGF0IGBJV0xXSUZJYCwgYElXTE1WTWAgZm9yIHN1cmUuIFBvdGVudGlhbGx5IGBJV0xNRUlgIHRvby4gVGhlIGZ1enppbmcgc2V0dXAgd2lsbCBuZWVkIHRvIGhhdmUgdGhlc2UgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMV0lGSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoyOmNvbmZpZyBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTmV4dCBHZW4gQUdOIC0gV2lyZWxlc3MtTi9BZHZhbmNlZC1OL1VsdGltYXRlLU4gKGl3bHdpZmkpIFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz00Nz1pZiBJV0xXSUZJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NDk6Y29uZmlnIElXTFdJRklfS1VOSVRfVEVTVFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy01OS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9ODQ9Y29uZmlnIElXTE1MRFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbiYjMzk7dCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFwmIzM0O0RlYnVnZ2luZyBPcHRpb25zXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzMTpjb25maWcgSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDAwCgkJCQkJCQlvdXRwdXQ6IDgyCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgSW50ZWwgV2lyZWxlc3MgRHJpdmVycyYjMzk7IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGVzZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXJzIGFyZSBjb25maWd1cmVkLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNdWx0aS1WaXJ0dWFsIE1hY2hpbmUgKGBJV0xNVk1gKSBhbmQgdGhlIE1FSSAoTWFuYWdlbWVudCBFbmdpbmUgSW50ZXJmYWNlKSBmZWF0dXJlcyAoYElXTE1FSWApLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIHRoZXkmIzM5O3JlIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgdGhlc2Ugc29ydHMgb2YgY29uZmlndXJhdGlvbnMuIEkgc2hvdWxkIGZpbmQgYElXTE1WTWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL0tjb25maWdgIGFuZCBgSVdMTUVJYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvS2NvbmZpZ2AuIExldCBtZSBnbyBjaGVjayB0aG9zZSBmaWxlcyBhbmQgY29uZmlybSBteSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBoZWxwIG1lIHRvIGNvbnRleHR1YWxpemUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBwcm9jZWVkIGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMTVZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVdMTUVJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc3MzQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBJbnRlbCBXaXJlbGVzcyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYGl3bHdpZmlgIG1vZHVsZXMuIFRoZSBlYXNpZXN0IHdheSB0byBnZXQgYW4gaW5pdGlhbCBvdmVydmlldyBpcyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcgZmlsZXMuIEkmIzM5O20gZ29pbmcgdG8gc2VhcmNoIGZvciBzb21ldGhpbmcgc2ltcGxlIGFuZCB0YXJnZXRlZCB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBzZWN0aW9ucyBxdWlja2x5LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGdlbmVyYWwgc2VhcmNoIGZvciBgY29uZmlnIElXTGAsIGZvY3VzaW5nIG9uIHRob3NlIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzLiBJJiMzOTtsbCBzZWFyY2ggYm90aCB0aGUgdG9wLWxldmVsIGBpd2x3aWZpYCBkaXJlY3RvcnkmIzM5O3MgYEtjb25maWdgIGFuZCwgc2luY2UgaXQgaGFzIGdyb3duLCBhbHNvIHRoZSBgbXZtYCBzdWItZGlyZWN0b3J5JiMzOTtzIGBLY29uZmlnYCB0byBjb3ZlciBhbGwgb2YgdGhlIG1vZHVsZXMgdGhhdCBtaWdodCBiZSBpbXBhY3RlZCBieSBteSBjb25maWd1cmF0aW9uIG9yIHRlc3RpbmcuIEhvcGVmdWxseSwgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgYmFzZSB0byBzdGFydCB3aXRoLCByZXZlYWxpbmcgdGhlIG1haW4ga25vYnMgSSBjYW4gdHdlYWsgYW5kIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVtLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byBidWlsZCBhIG1vcmUgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgd2hvbGUgc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElXTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo0OTpjb25maWcgSVdMV0lGSV9LVU5JVF9URVNUU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6NTg6Y29uZmlnIElXTFdJRklfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTU5LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo2Njpjb25maWcgSVdMRFZNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNjctXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBXaXJlbGVzcyBXaUZpIERWTSBGaXJtd2FyZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjc0OmNvbmZpZyBJV0xNVk1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy03NS1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFdpcmVsZXNzIFdpRmkgTVZNIEZpcm13YXJlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6ODQ6Y29uZmlnIElXTE1MRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgV2lyZWxlc3MgV2lGaSBNTEQgRmlybXdhcmUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbiYjMzk7dCBjYWxsIGl0IF9NT0RVTEUgLS0gd2lsbCBjb25mdXNlIEtjb25maWcvZml4ZGVwLy4uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFwmIzM0O0RlYnVnZ2luZyBPcHRpb25zXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEwNzpjb25maWcgSVdMV0lGSV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGZ1bGwgZGVidWdnaW5nIG91dHB1dCBpbiB0aGUgaXdsd2lmaSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzMTpjb25maWcgSVdMV0lGSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTQwLVx0Ym9vbCBcJiMzNDtpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xNTg9ZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTYwOmNvbmZpZyBJV0xNRUlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNjEtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBNYW5hZ2VtZW50IEVuZ2luZSBjb21tdW5pY2F0aW9uIG92ZXIgV0xBTlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTAwMgoJCQkJCQkJb3V0cHV0OiAyNjgKCQkJCQkJCXRob3VnaHRzOiAyMTMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBJV2x3aWZpIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgSW50ZWwgd2lyZWxlc3MgZHJpdmVyLCBgaXdsd2lmaWAuIFRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcHBlYXIgdG8gYmUgYElXTFdJRklgLCBgSVdMTVZNYCwgYW5kIGBJV0xNTERgLiAgVGhlIHBhdGNoIHRvdWNoZXMgZmlsZXMgaW4gYG12bS9gLCBgbWxkL2AsIGBmdy9gLCBgcGNpZS9gLCBhbmQgYGNmZy9gLCBzbyBpdCYjMzk7cyBhIGZhaXJseSB3aWRlc3ByZWFkIG1vZGlmaWNhdGlvbi4gIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBhZGRlZCBvciBtb2RpZmllZCBhbmQgc2VlIGlmIHRoZXkmIzM5O3JlIHdvcnRoIGZ1enppbmcuCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHRoZXNlIGZ1bmN0aW9ucyBhcyBwb3RlbnRpYWxseSBpbnRlcmVzdGluZzogYGl3bF9wbnZtX2NvbXBsZXRlX2ZuYCwgYGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0YCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwYCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtYCwgYGl3bF9pbml0X2NoYW5uZWxfbWFwYCwgYGl3bF9wYXJzZV9tZWlfbnZtX2RhdGFgLCBgaXdsX3BhcnNlX252bV9kYXRhYCwgYGl3bF9wYXJzZV9udm1fbWNjX2luZm9gLCBgaXdsX2dldF9udm1gLCBgaXdsX21sZF9oYW5kbGVfdHhfcmVzcF9ub3RpZmAsIGBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29uc2AsIGBpd2xfbXZtX25ldGRldGVjdF9xdWVyeV9yZXN1bHRzYCwgYGl3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0YCwgYGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyYCwgYGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdgLCBgaXdsX212bV9mdG1fcHV0X3RhcmdldF92N2AsIGBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3YxMGAsIGBpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGVgLCBgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZndgLCBgaXdsX212bV9yeF90eF9jbWRgLCBgaXdsX212bV9yeF90eF9jbWRfYWdnYCwgYGl3bF9tdm1fcnhfYmFfbm90aWZgLCBhbmQgYGl3bF9wY2llX2luaXRfZndfc2VjYC4KCk5vdywgbGV0JiMzOTtzIGZpbHRlciB0aGUgbm9pc2UuIGBpd2xfbXZtX3J4X3R4X2NtZGAsIGBpd2xfbXZtX3J4X3R4X2NtZF9hZ2dgLCBhbmQgYGl3bF9tdm1fcnhfYmFfbm90aWZgIGFyZSBjbGVhcmx5IGluIHRoZSBob3QtcGF0aCBSWC9UWC4gIGBpd2xfbWxkX2hhbmRsZV90eF9yZXNwX25vdGlmYCBhbHNvIHNlZW1zIGhpZ2gtZnJlcXVlbmN5LiBgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnNgLCBgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3RgLCBgaXdsX212bV9uZXRkZXRlY3RfcXVlcnlfcmVzdWx0c2AsIGFuZCBgaXdsX212bV9uZF9tYXRjaF9pbmZvX2hhbmRsZXJgIGFsbCBkZWFsIHdpdGggV29XTEFOL05ldGRldGVjdC4gYGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdgIGFuZCBgaXdsX212bV9mdG1fcHV0X3RhcmdldF92N2AsIGBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3YxMGAgcmVsYXRlIHRvIEZUTSAoRmluZSBUaW1pbmcgTWVhc3VyZW1lbnQpLCBgaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlYCBpcyBTQVIsIGFuZCBgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZndgIGRlYWxzIHdpdGggUFRQLiAgYGl3bF9wY2llX2luaXRfZndfc2VjYCBhcHBlYXJzIHRvIGJlIGZpcm13YXJlIGluaXRpYWxpemF0aW9uLCBgaXdsX3Budm1fY29tcGxldGVfZm5gIGhhbmRsZXMgUE5WTSBpbml0aWFsaXphdGlvbiwgYW5kIGBpd2xfcGFyc2Vfc2hhcmVkX21lbV8yMjAwMGAsIGBpd2xfcGFyc2Vfc2hhcmVkX21lbWAsIGBpd2xfaW5pdF9jaGFubmVsX21hcGAsIGBpd2xfcGFyc2VfbnZtX2RhdGFgLCBhbmQgYGl3bF9nZXRfbnZtYCBhcHBlYXIgdG8gcmVsYXRlIHRvIE5WTSBwYXJzaW5nIGFuZCBmaXJtd2FyZSBsb2FkaW5nLgoKSSBuZWVkIHRvIGZvY3VzIG9uIGZ1bmN0aW9ucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgcmVhY2hlZCB0aHJvdWdoIGRpZmZlcmVudCBjb2RlIHBhdGhzLCBhbmQgYXJlIG5vdCBqdXN0IGhpZ2gtZnJlcXVlbmN5IHBhY2tldCBwcm9jZXNzaW5nLiAgVGhlcmVmb3JlLCBJJiMzOTttIGV4Y2x1ZGluZyB0aGUgaG90LXBhdGggZnVuY3Rpb25zLgoKU28sIEkmIzM5O2xsIGluaXRpYWxseSBpbmNsdWRlOiBgaXdsX3Budm1fY29tcGxldGVfZm5gLCBgaXdsX3BhcnNlX3NoYXJlZF9tZW1fMjIwMDBgLCBgaXdsX3BhcnNlX3NoYXJlZF9tZW1gLCBgaXdsX2dldF9udm1gLCBgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnNgLCBgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3RgLCBgaXdsX212bV9uZF9tYXRjaF9pbmZvX2hhbmRsZXJgLCBgaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZ2AsIGBpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGVgLCBgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZndgLCBhbmQgYGl3bF9wY2llX2luaXRfZndfc2VjYCBhcyB0aGUgZm9jdXMKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVdMV0lGSSYjMzQ7LAogICAgJiMzNDtJV0xNVk0mIzM0OywKICAgICYjMzQ7SVdMTUxEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXdsX3Budm1fY29tcGxldGVfZm4mIzM0OywKICAgICYjMzQ7aXdsX3BhcnNlX3NoYXJlZF9tZW1fMjIwMDAmIzM0OywKICAgICYjMzQ7aXdsX3BhcnNlX3NoYXJlZF9tZW0mIzM0OywKICAgICYjMzQ7aXdsX2dldF9udm0mIzM0OywKICAgICYjMzQ7aXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnMmIzM0OywKICAgICYjMzQ7aXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3QmIzM0OywKICAgICYjMzQ7aXdsX212bV9uZF9tYXRjaF9pbmZvX2hhbmRsZXImIzM0OywKICAgICYjMzQ7aXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyYjMzQ7LAogICAgJiMzNDtpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGUmIzM0OywKICAgICYjMzQ7aXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZncmIzM0OywKICAgICYjMzQ7aXdsX3BjaWVfaW5pdF9md19zZWMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBpd2x3aWZpIGRyaXZlciwgaW5jbHVkaW5nIGFkZGluZyBzdXBwb3J0IGZvciBVTklJLTkgY2hhbm5lbHMsIGFkZGluZyBib3VuZHMgY2hlY2tzIGZvciBmaXJtd2FyZSBub3RpZmljYXRpb25zIGFuZCByZXNwb25zZXMsIGZpeGluZyBtZW1vcnkgbGVha3MsIGFuZCBtb2RpZnlpbmcgTlZNIHBhcnNpbmcgbG9naWMuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBkcml2ZXIgYW5kIGFyZSB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJV0xXSUZJJiMzNDssCiAgICAmIzM0O0lXTE1WTSYjMzQ7LAogICAgJiMzNDtJV0xNTEQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpd2xfcG52bV9jb21wbGV0ZV9mbiYjMzQ7LAogICAgJiMzNDtpd2xfcGFyc2Vfc2hhcmVkX21lbV8yMjAwMCYjMzQ7LAogICAgJiMzNDtpd2xfcGFyc2Vfc2hhcmVkX21lbSYjMzQ7LAogICAgJiMzNDtpd2xfZ2V0X252bSYjMzQ7LAogICAgJiMzNDtpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29ucyYjMzQ7LAogICAgJiMzNDtpd2xfbXZtX3dvd2xhbl9zdG9yZV93YWtlX3BrdCYjMzQ7LAogICAgJiMzNDtpd2xfbXZtX25kX21hdGNoX2luZm9faGFuZGxlciYjMzQ7LAogICAgJiMzNDtpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nJiMzNDssCiAgICAmIzM0O2l3bF9tdm1fZ2V0X3Nhcl9nZW9fcHJvZmlsZSYjMzQ7LAogICAgJiMzNDtpd2xfbXZtX2dldF9jcm9zc3RpbWVzdGFtcF9mdyYjMzQ7LAogICAgJiMzNDtpd2xfcGNpZV9pbml0X2Z3X3NlYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGl3bHdpZmkgZHJpdmVyLCBpbmNsdWRpbmcgYWRkaW5nIHN1cHBvcnQgZm9yIFVOSUktOSBjaGFubmVscywgYWRkaW5nIGJvdW5kcyBjaGVja3MgZm9yIGZpcm13YXJlIG5vdGlmaWNhdGlvbnMgYW5kIHJlc3BvbnNlcywgZml4aW5nIG1lbW9yeSBsZWFrcywgYW5kIG1vZGlmeWluZyBOVk0gcGFyc2luZyBsb2dpYy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgbG9naWMgb2YgdGhlIGRyaXZlciBhbmQgYXJlIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoxOTo0Ny4yMjg2MzA5NDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzk4NDA0MDU4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJV0xXSUZJXCIsXG4gICAgXCJJV0xNVk1cIixcbiAgICBcIklXTE1MRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIml3bF9wbnZtX2NvbXBsZXRlX2ZuXCIsXG4gICAgXCJpd2xfcGFyc2Vfc2hhcmVkX21lbV8yMjAwMFwiLFxuICAgIFwiaXdsX3BhcnNlX3NoYXJlZF9tZW1cIixcbiAgICBcIml3bF9nZXRfbnZtXCIsXG4gICAgXCJpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29uc1wiLFxuICAgIFwiaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3RcIixcbiAgICBcIml3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyXCIsXG4gICAgXCJpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nXCIsXG4gICAgXCJpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGVcIixcbiAgICBcIml3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3XCIsXG4gICAgXCJpd2xfcGNpZV9pbml0X2Z3X3NlY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgaXdsd2lmaSBkcml2ZXIsIGluY2x1ZGluZyBhZGRpbmcgc3VwcG9ydCBmb3IgVU5JSS05IGNoYW5uZWxzLCBhZGRpbmcgYm91bmRzIGNoZWNrcyBmb3IgZmlybXdhcmUgbm90aWZpY2F0aW9ucyBhbmQgcmVzcG9uc2VzLCBmaXhpbmcgbWVtb3J5IGxlYWtzLCBhbmQgbW9kaWZ5aW5nIE5WTSBwYXJzaW5nIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBsb2dpYyBvZiB0aGUgZHJpdmVyIGFuZCBhcmUgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6MTk6NDcuMjI4NjM3NjU1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTYyODQxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlMzRjOWU1OGQyYjI0ZDU3ZmI5MzEzMWRkZTc2ZjJhNjQwNjA0ODU4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDE2IDAyOjE5OjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL3JmLXBlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jXFxuaW5kZXggN2EwNGNiMTIwYjFiMjMuLjYwODBmNWYyM2U2OTg3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL3JmLXBlLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gXFx0Lm5vbl9zaGFyZWRfYW50ID0gQU5UX0IsXFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHQudmh0X211X21pbW9fc3VwcG9ydGVkID0gdHJ1ZSxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdC51aGJfc3VwcG9ydGVkID0gdHJ1ZSxcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdC51bmlpOV9zdXBwb3J0ZWQgPSB0cnVlLFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0LmVodF9zdXBwb3J0ZWQgPSB0cnVlLFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0LnVocl9zdXBwb3J0ZWQgPSB0cnVlLFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0Lm51bV9yYmRzID0gSVdMX05VTV9SQkRTX0VIVCxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL252bS1yZWcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL252bS1yZWcuaFxcbmluZGV4IDQ0M2E5YTQxNjMyNTIzLi4wMTcyYzA3NDdhNDdjOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmhcXG5AQCAtMjA1LDYgKzIwNSw3IEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3BoeSB7XFxuIFxcbiAjZGVmaW5lIElXTF9OVU1fQ0hBTk5FTFNfVjFcXHQ1MVxcbiAjZGVmaW5lIElXTF9OVU1fQ0hBTk5FTFNfVjJcXHQxMTBcXG4rI2RlZmluZSBJV0xfTlVNX0NIQU5ORUxTX1YzXFx0MTE1XFxuIFxcbiAvKipcXG4gICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MSAtIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb25cXG5AQCAtMjE5LDEyICsyMjAsMTIgQEAgc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MSB7XFxuIH0gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JFR1VMQVRPUllfU19WRVJfMSAqL1xcbiBcXG4gLyoqXFxuLSAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXFxuKyAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjIgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXFxuICAqIEBsYXJfZW5hYmxlZDogaXMgTEFSIGVuYWJsZWRcXG4gICogQG5fY2hhbm5lbHM6IG51bWJlciBvZiB2YWxpZCBjaGFubmVscyBpbiB0aGUgYXJyYXlcXG4gICogQGNoYW5uZWxfcHJvZmlsZTogcmVndWxhdG9yeSBkYXRhIG9mIHRoaXMgY2hhbm5lbFxcbiAgKi9cXG4tc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSB7XFxuK3N0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjIge1xcbiBcXHRfX2xlMzIgbGFyX2VuYWJsZWQ7XFxuIFxcdF9fbGUzMiBuX2NoYW5uZWxzO1xcbiBcXHRfX2xlMzIgY2hhbm5lbF9wcm9maWxlW0lXTF9OVU1fQ0hBTk5FTFNfVjJdO1xcbkBAIC0yNDQsNiArMjQ1LDMyIEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcF92MyB7XFxuIFxcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjEgcmVndWxhdG9yeTtcXG4gfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl8zICovXFxuIFxcbisvKipcXG4rICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3Y0IC0gcmVzcG9uc2UgdG8gZ2V0IE5WTSBkYXRhXFxuKyAqIEBnZW5lcmFsOiBnZW5lcmFsIE5WTSBkYXRhXFxuKyAqIEBtYWNfc2t1OiBkYXRhIHJlbGF0aW5nIHRvIE1BQyBza3VcXG4rICogQHBoeV9za3U6IGRhdGEgcmVsYXRpbmcgdG8gUEhZIHNrdVxcbisgKiBAcmVndWxhdG9yeTogcmVndWxhdG9yeSBkYXRhXFxuKyAqL1xcbitzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjQge1xcbitcXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19nZW5lcmFsIGdlbmVyYWw7XFxuK1xcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3NrdSBtYWNfc2t1O1xcbitcXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19waHkgcGh5X3NrdTtcXG4rXFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MiByZWd1bGF0b3J5O1xcbit9IF9fcGFja2VkOyAvKiBSRUdVTEFUT1JZX05WTV9HRVRfSU5GT19SU1BfQVBJX1NfVkVSXzQgKi9cXG4rXFxuKy8qKlxcbisgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5IC0gcmVndWxhdG9yeSBpbmZvcm1hdGlvblxcbisgKiBAbGFyX2VuYWJsZWQ6IGlzIExBUiBlbmFibGVkXFxuKyAqIEBuX2NoYW5uZWxzOiBudW1iZXIgb2YgdmFsaWQgY2hhbm5lbHMgaW4gdGhlIGFycmF5XFxuKyAqIEBjaGFubmVsX3Byb2ZpbGU6IHJlZ3VsYXRvcnkgZGF0YSBvZiB0aGlzIGNoYW5uZWxcXG4rICovXFxuK3N0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkge1xcbitcXHRfX2xlMzIgbGFyX2VuYWJsZWQ7XFxuK1xcdF9fbGUzMiBuX2NoYW5uZWxzO1xcbitcXHRfX2xlMzIgY2hhbm5lbF9wcm9maWxlW0lXTF9OVU1fQ0hBTk5FTFNfVjNdO1xcbit9IF9fcGFja2VkOyAvKiBSRUdVTEFUT1JZX05WTV9HRVRfSU5GT19SRUdVTEFUT1JZX1NfVkVSXzMgKi9cXG4rXFxuIC8qKlxcbiAgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3AgLSByZXNwb25zZSB0byBnZXQgTlZNIGRhdGFcXG4gICogQGdlbmVyYWw6IGdlbmVyYWwgTlZNIGRhdGFcXG5AQCAtMjU2LDcgKzI4Myw3IEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcCB7XFxuIFxcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3NrdSBtYWNfc2t1O1xcbiBcXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19waHkgcGh5X3NrdTtcXG4gXFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSByZWd1bGF0b3J5O1xcbi19IF9fcGFja2VkOyAvKiBSRUdVTEFUT1JZX05WTV9HRVRfSU5GT19SU1BfQVBJX1NfVkVSXzQgKi9cXG4rfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl81ICovXFxuIFxcbiAvKipcXG4gICogc3RydWN0IGl3bF9udm1fYWNjZXNzX2NvbXBsZXRlX2NtZCAtIE5WTV9BQ0NFU1MgY29tbWFuZHMgYXJlIGNvbXBsZXRlZFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmhcXG5pbmRleCAwOGY0Y2MzZWExYzMwNC4uZWU3ODM3MTA4MmIwOTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oXFxuQEAgLTEsNiArMSw2IEBAXFxuIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZSAqL1xcbiAvKlxcbi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgMjAxOC0yMDI1IEludGVsIENvcnBvcmF0aW9uXFxuKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cXG4gICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgSW50ZWwgTW9iaWxlIENvbW11bmljYXRpb25zIEdtYkhcXG4gICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgSW50ZWwgRGV1dHNjaGxhbmQgR21iSFxcbiAgKi9cXG5AQCAtMTMxOSw3ICsxMzE5LDcgQEAgc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbyB7XFxuIFxcdHU4IHJlc3VtZV93aGlsZV9zY2FubmluZztcXG4gXFx0dTggc2VsZl9yZWNvdmVyeTtcXG4gXFx0X19sZTE2IHJlc2VydmVkO1xcbi1cXHRzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlX21hdGNoIG1hdGNoZXNbXTtcXG4rXFx0c3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZV9tYXRjaCBtYXRjaGVzW0lXTF9TQ0FOX01BWF9QUk9GSUxFU19WMl07XFxuIH0gX19wYWNrZWQ7IC8qIFNDQU5fT0ZGTE9BRF9QUk9GSUxFU19RVUVSWV9SU1BfU19WRVJfMyBhbmRcXG4gXFx0ICAgICAqIFNDQU5fT0ZGTE9BRF9NQVRDSF9JTkZPX05PVElGSUNBVElPTl9TX1ZFUl8xXFxuIFxcdCAgICAgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xcbmluZGV4IGFmZmY4ZDUxY2E5NTBjLi5lYzBmZjU4YWIzMTJkNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jXFxuQEAgLTEsNiArMSw2IEBAXFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbiAvKlxcbi0gKiBDb3B5cmlnaHQoYykgMjAyMC0yMDI1IEludGVsIENvcnBvcmF0aW9uXFxuKyAqIENvcHlyaWdodChjKSAyMDIwLTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cXG4gICovXFxuIFxcbiAjaW5jbHVkZSBcXFwiaXdsLWRydi5oXFxcIlxcbkBAIC0xMiw2ICsxMiw3IEBAXFxuICNpbmNsdWRlIFxcXCJmdy9hcGkvYWxpdmUuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImZ3L3VlZmkuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImZ3L2ltZy5oXFxcIlxcbisjaW5jbHVkZSBcXFwiZncvZGJnLmhcXFwiXFxuIFxcbiAjZGVmaW5lIElXTF9QTlZNX1JFRFVDRURfQ0FQX0JJVCBCSVQoMjUpXFxuIFxcbkBAIC0yNiw2ICsyNywxMiBAQCBzdGF0aWMgYm9vbCBpd2xfcG52bV9jb21wbGV0ZV9mbihzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcXG4gXFx0c3RydWN0IGl3bF90cmFucyAqdHJhbnMgPSAoc3RydWN0IGl3bF90cmFucyAqKWRhdGE7XFxuIFxcdHN0cnVjdCBpd2xfcG52bV9pbml0X2NvbXBsZXRlX250ZnkgKnBudm1fbnRmID0gKHZvaWQgKilwa3QtXFx1MDAzZWRhdGE7XFxuIFxcbitcXHRpZiAoSVdMX0ZXX0NIRUNLKHRyYW5zLFxcbitcXHRcXHRcXHQgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFxcdTAwM2Mgc2l6ZW9mKCpwbnZtX250ZiksXFxuK1xcdFxcdFxcdCBcXFwiQmFkIG5vdGlmIGxlbjogJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkpKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuIFxcdElXTF9ERUJVR19GVyh0cmFucyxcXG4gXFx0XFx0ICAgICBcXFwiUE5WTSBjb21wbGV0ZSBub3RpZmljYXRpb24gcmVjZWl2ZWQgd2l0aCBzdGF0dXMgMHglMHhcXFxcblxcXCIsXFxuIFxcdFxcdCAgICAgbGUzMl90b19jcHUocG52bV9udGYtXFx1MDAzZXN0YXR1cykpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jXFxuaW5kZXggOGQ5ZmYzNmUzMGY1ZTMuLjFkNmQzOGVlNTViNDk5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmNcXG5AQCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgaXdsX2FkZF9tY2NfdG9fdGFzX2Jsb2NrX2xpc3QodTE2ICpsaXN0LCB1OCAqc2l6ZSwgdTE2IG1jYylcXG4gXFx0aWYgKCpzaXplIFxcdTAwM2U9IElXTF9XVEFTX0JMQUNLX0xJU1RfTUFYKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbi1cXHRsaXN0WypzaXplKytdID0gbWNjO1xcbitcXHRsaXN0Wygqc2l6ZSkrK10gPSBtY2M7XFxuIFxcdHJldHVybiB0cnVlO1xcbiB9XFxuIElXTF9FWFBPUlRfU1lNQk9MKGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9zbWVtLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uY1xcbmluZGV4IDM0NGRkZGU4NWIxODk3Li4yMGVkMjZhMWJiMDBlYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvc21lbS5jXFxuQEAgLTEsNiArMSw2IEBAXFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbiAvKlxcbi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCwgMjAxOC0yMDIxLCAyMDI1IEludGVsIENvcnBvcmF0aW9uXFxuKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjEsIDIwMjUtMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxcbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBJbnRlbCBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgR21iSFxcbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBJbnRlbCBEZXV0c2NobGFuZCBHbWJIXFxuICAqL1xcbkBAIC0xNCw5ICsxNCwxNyBAQCBzdGF0aWMgdm9pZCBpd2xfcGFyc2Vfc2hhcmVkX21lbV8yMjAwMChzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuIHtcXG4gXFx0c3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZyAqbWVtX2NmZyA9ICh2b2lkICopcGt0LVxcdTAwM2VkYXRhO1xcbiBcXHRpbnQgaSwgbG1hYztcXG4tXFx0aW50IGxtYWNfbnVtID0gbGUzMl90b19jcHUobWVtX2NmZy1cXHUwMDNlbG1hY19udW0pO1xcbi1cXHR1OCBhcGlfdmVyID0gaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZndydC1cXHUwMDNlZncsIFNZU1RFTV9HUk9VUCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBTSEFSRURfTUVNX0NGR19DTUQsIDApO1xcbitcXHRpbnQgbG1hY19udW07XFxuK1xcdHU4IGFwaV92ZXI7XFxuK1xcbitcXHRpZiAoSVdMX0ZXX0NIRUNLKGZ3cnQsIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcXHUwMDNjXFxuK1xcdFxcdFxcdCBvZmZzZXRvZmVuZChzdHJ1Y3QgaXdsX3NoYXJlZF9tZW1fY2ZnLCBsbWFjX3NtZW1bMV0pLFxcbitcXHRcXHRcXHQgXFxcImJhZCBzaGFyZWQgbWVtIG5vdGlmaWNhdGlvbiBzaXplXFxcXG5cXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0bG1hY19udW0gPSBsZTMyX3RvX2NwdShtZW1fY2ZnLVxcdTAwM2VsbWFjX251bSk7XFxuK1xcdGFwaV92ZXIgPSBpd2xfZndfbG9va3VwX25vdGlmX3Zlcihmd3J0LVxcdTAwM2VmdywgU1lTVEVNX0dST1VQLFxcbitcXHRcXHRcXHRcXHRcXHQgIFNIQVJFRF9NRU1fQ0ZHX0NNRCwgMCk7XFxuIFxcbiBcXHQvKiBOb3RlOiBub3RpZmljYXRpb24gaGFzIDMgZW50cmllcywgYnV0IHdlIG9ubHkgZXhwZWN0IDIgKi9cXG4gXFx0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBsbWFjX251bSBcXHUwMDNlIEFSUkFZX1NJWkUoZndydC1cXHUwMDNlc21lbV9jZmcubG1hYyksXFxuQEAgLTMwLDcgKzM4LDcgQEAgc3RhdGljIHZvaWQgaXdsX3BhcnNlX3NoYXJlZF9tZW1fMjIwMDAoc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxcbiBcXG4gXFx0aWYgKGFwaV92ZXIgXFx1MDAzZT0gNCBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgIUlXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXFx1MDAzYyBzaXplb2YoKm1lbV9jZmcpLFxcbi1cXHRcXHRcXHQgIFxcXCJiYWQgc2hhcmVkIG1lbSBub3RpZmljYXRpb24gc2l6ZVxcXFxuXFxcIikpIHtcXG4rXFx0XFx0XFx0ICBcXFwiYmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemUgKHY0KVxcXFxuXFxcIikpIHtcXG4gXFx0XFx0ZndydC1cXHUwMDNlc21lbV9jZmcucnhmaWZvMl9jb250cm9sX3NpemUgPVxcbiBcXHRcXHRcXHRsZTMyX3RvX2NwdShtZW1fY2ZnLVxcdTAwM2VyeGZpZm8yX2NvbnRyb2xfc2l6ZSk7XFxuIFxcdH1cXG5AQCAtNTMsNiArNjEsMTEgQEAgc3RhdGljIHZvaWQgaXdsX3BhcnNlX3NoYXJlZF9tZW0oc3RydWN0IGl3bF9md19ydW50aW1lICpmd3J0LFxcbiBcXHRzdHJ1Y3QgaXdsX3NoYXJlZF9tZW1fY2ZnX3YyICptZW1fY2ZnID0gKHZvaWQgKilwa3QtXFx1MDAzZWRhdGE7XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXFx1MDAzY1xcbitcXHRcXHRcXHQgb2Zmc2V0b2Yoc3RydWN0IGl3bF9zaGFyZWRfbWVtX2NmZ192MiwgcnhmaWZvX2FkZHIpLFxcbitcXHRcXHRcXHQgXFxcImJhZCBzaGFyZWQgbWVtIG5vdGlmaWNhdGlvbiBzaXplXFxcXG5cXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0ZndydC1cXHUwMDNlc21lbV9jZmcubnVtX2xtYWNzID0gMTtcXG4gXFxuIFxcdGZ3cnQtXFx1MDAzZXNtZW1fY2ZnLm51bV90eGZpZm9fZW50cmllcyA9IEFSUkFZX1NJWkUobWVtX2NmZy1cXHUwMDNldHhmaWZvX3NpemUpO1xcbkBAIC02Nyw2ICs4MCwxMSBAQCBzdGF0aWMgdm9pZCBpd2xfcGFyc2Vfc2hhcmVkX21lbShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXFxuIFxcdC8qIG5ldyBBUEkgaGFzIG1vcmUgZGF0YSwgZnJvbSByeGZpZm9fYWRkciBmaWVsZCBhbmQgb24gKi9cXG4gXFx0aWYgKGZ3X2hhc19jYXBhKFxcdTAwMjZmd3J0LVxcdTAwM2Vmdy1cXHUwMDNldWNvZGVfY2FwYSxcXG4gXFx0XFx0XFx0SVdMX1VDT0RFX1RMVl9DQVBBX0VYVEVORF9TSEFSRURfTUVNX0NGRykpIHtcXG4rXFx0XFx0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXFx1MDAzY1xcbitcXHRcXHRcXHRcXHQgc2l6ZW9mKCptZW1fY2ZnKSxcXG4rXFx0XFx0XFx0XFx0IFxcXCJiYWQgc2hhcmVkIG1lbSBub3RpZmljYXRpb24gc2l6ZSAoZXh0ZW5kKVxcXFxuXFxcIikpXFxuK1xcdFxcdFxcdHJldHVybjtcXG4rXFxuIFxcdFxcdEJVSUxEX0JVR19PTihzaXplb2YoZndydC1cXHUwMDNlc21lbV9jZmcuaW50ZXJuYWxfdHhmaWZvX3NpemUpICE9XFxuIFxcdFxcdFxcdCAgICAgc2l6ZW9mKG1lbV9jZmctXFx1MDAzZWludGVybmFsX3R4Zmlmb19zaXplKSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oXFxuaW5kZXggNmEzNTM5YWQ3MzMxN2UuLjNhYzdmMDAwZWRlNDc4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmhcXG5AQCAtNDE1LDYgKzQxNSw3IEBAIHN0cnVjdCBpd2xfbWFjX2NmZyB7XFxuICAqIEB2aHRfbXVfbWltb19zdXBwb3J0ZWQ6IFZIVCBNVS1NSU1PIHN1cHBvcnRcXG4gICogQG52bV90eXBlOiBzZWUgXFx1MDAyNmVudW0gaXdsX252bV90eXBlXFxuICAqIEB1aGJfc3VwcG9ydGVkOiB1bHRyYSBoaWdoIGJhbmQgY2hhbm5lbHMgc3VwcG9ydGVkXFxuKyAqIEB1bmlpOV9zdXBwb3J0ZWQ6IFVOSUktOSBjaGFubmVscyBzdXBwb3J0ZWRcXG4gICogQGVodF9zdXBwb3J0ZWQ6IEVIVCBzdXBwb3J0ZWRcXG4gICogQHVocl9zdXBwb3J0ZWQ6IFVIUiBzdXBwb3J0ZWRcXG4gICogQG51bV9yYmRzOiBudW1iZXIgb2YgcmVjZWl2ZSBidWZmZXIgZGVzY3JpcHRvcnMgdG8gdXNlXFxuQEAgLTQ1MCw2ICs0NTEsNyBAQCBzdHJ1Y3QgaXdsX3JmX2NmZyB7XFxuIFxcdCAgICBscF94dGFsX3dvcmthcm91bmQ6MSxcXG4gXFx0ICAgIHZodF9tdV9taW1vX3N1cHBvcnRlZDoxLFxcbiBcXHQgICAgdWhiX3N1cHBvcnRlZDoxLFxcbitcXHQgICAgdW5paTlfc3VwcG9ydGVkOjEsXFxuIFxcdCAgICBlaHRfc3VwcG9ydGVkOjEsXFxuIFxcdCAgICB1aHJfc3VwcG9ydGVkOjE7XFxuIFxcdHU4IHZhbGlkX3R4X2FudDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuY1xcbmluZGV4IGQ0N2I0YWUyZjQ4NjMwLi5iZDUzNTNmZGRlODFhNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jXFxuQEAgLTg1LDE2ICs4NSw3IEBAIHN0YXRpYyBjb25zdCB1MTYgaXdsX252bV9jaGFubmVsc1tdID0ge1xcbiBcXHQxNDksIDE1MywgMTU3LCAxNjEsIDE2NVxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHUxNiBpd2xfZXh0X252bV9jaGFubmVsc1tdID0ge1xcbi1cXHQvKiAyLjQgR0h6ICovXFxuLVxcdDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCxcXG4tXFx0LyogNSBHSHogKi9cXG4tXFx0MzYsIDQwLCA0NCwgNDgsIDUyLCA1NiwgNjAsIDY0LCA2OCwgNzIsIDc2LCA4MCwgODQsIDg4LCA5MixcXG4tXFx0OTYsIDEwMCwgMTA0LCAxMDgsIDExMiwgMTE2LCAxMjAsIDEyNCwgMTI4LCAxMzIsIDEzNiwgMTQwLCAxNDQsXFxuLVxcdDE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1LCAxNjksIDE3MywgMTc3LCAxODFcXG4tfTtcXG4tXFxuLXN0YXRpYyBjb25zdCB1MTYgaXdsX3VoYl9udm1fY2hhbm5lbHNbXSA9IHtcXG4rc3RhdGljIGNvbnN0IHUxNiBpd2xfdW5paTlfbnZtX2NoYW5uZWxzW10gPSB7XFxuIFxcdC8qIDIuNCBHSHogKi9cXG4gXFx0MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LFxcbiBcXHQvKiA1IEdIeiAqL1xcbkBAIC0xMDUsMTIgKzk2LDE2IEBAIHN0YXRpYyBjb25zdCB1MTYgaXdsX3VoYl9udm1fY2hhbm5lbHNbXSA9IHtcXG4gXFx0MSwgNSwgOSwgMTMsIDE3LCAyMSwgMjUsIDI5LCAzMywgMzcsIDQxLCA0NSwgNDksIDUzLCA1NywgNjEsIDY1LCA2OSxcXG4gXFx0NzMsIDc3LCA4MSwgODUsIDg5LCA5MywgOTcsIDEwMSwgMTA1LCAxMDksIDExMywgMTE3LCAxMjEsIDEyNSwgMTI5LFxcbiBcXHQxMzMsIDEzNywgMTQxLCAxNDUsIDE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1LCAxNjksIDE3MywgMTc3LCAxODEsIDE4NSxcXG4tXFx0MTg5LCAxOTMsIDE5NywgMjAxLCAyMDUsIDIwOSwgMjEzLCAyMTcsIDIyMSwgMjI1LCAyMjksIDIzM1xcbitcXHQxODksIDE5MywgMTk3LCAyMDEsIDIwNSwgMjA5LCAyMTMsIDIxNywgMjIxLCAyMjUsIDIyOSwgMjMzLFxcbitcXG4rXFx0LyogVU5JSS05ICovXFxuK1xcdDIzNywgMjQxLCAyNDUsIDI0OSwgMjUzXFxuIH07XFxuIFxcbiAjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTXFx0XFx0QVJSQVlfU0laRShpd2xfbnZtX2NoYW5uZWxzKVxcbi0jZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVFxcdEFSUkFZX1NJWkUoaXdsX2V4dF9udm1fY2hhbm5lbHMpXFxuLSNkZWZpbmUgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCXFx0QVJSQVlfU0laRShpd2xfdWhiX252bV9jaGFubmVscylcXG4rI2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU19FWFRcXHQ1MVxcbisjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQlxcdDExMFxcbisjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5XFx0QVJSQVlfU0laRShpd2xfdW5paTlfbnZtX2NoYW5uZWxzKVxcbiAjZGVmaW5lIE5VTV8yR0haX0NIQU5ORUxTXFx0XFx0MTRcXG4gI2RlZmluZSBOVU1fNUdIWl9DSEFOTkVMU1xcdFxcdDM3XFxuICNkZWZpbmUgRklSU1RfMkdIWl9IVF9NSU5VU1xcdFxcdDVcXG5AQCAtMzUxLDEyICszNDYsMTUgQEAgc3RhdGljIGludCBpd2xfaW5pdF9jaGFubmVsX21hcChzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcXG4gXFx0aW50IG51bV9vZl9jaDtcXG4gXFx0Y29uc3QgdTE2ICpudm1fY2hhbjtcXG4gXFxuLVxcdGlmIChjZmctXFx1MDAzZXVoYl9zdXBwb3J0ZWQpIHtcXG4rXFx0aWYgKGNmZy1cXHUwMDNldW5paTlfc3VwcG9ydGVkKSB7XFxuK1xcdFxcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5O1xcbitcXHRcXHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XFxuK1xcdH0gZWxzZSBpZiAoY2ZnLVxcdTAwM2V1aGJfc3VwcG9ydGVkKSB7XFxuIFxcdFxcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQjtcXG4tXFx0XFx0bnZtX2NoYW4gPSBpd2xfdWhiX252bV9jaGFubmVscztcXG4rXFx0XFx0bnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzO1xcbiBcXHR9IGVsc2UgaWYgKGNmZy1cXHUwMDNlbnZtX3R5cGUgPT0gSVdMX05WTV9FWFQpIHtcXG4gXFx0XFx0bnVtX29mX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUO1xcbi1cXHRcXHRudm1fY2hhbiA9IGl3bF9leHRfbnZtX2NoYW5uZWxzO1xcbitcXHRcXHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTO1xcbiBcXHRcXHRudm1fY2hhbiA9IGl3bF9udm1fY2hhbm5lbHM7XFxuQEAgLTE0NDEsNyArMTQzOSw5IEBAIGl3bF9wYXJzZV9tZWlfbnZtX2RhdGEoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnICpjZmcsXFxuIFxcdHU4IHJ4X2NoYWlucyA9IGZ3LVxcdTAwM2V2YWxpZF9yeF9hbnQ7XFxuIFxcdHU4IHR4X2NoYWlucyA9IGZ3LVxcdTAwM2V2YWxpZF9yeF9hbnQ7XFxuIFxcbi1cXHRpZiAoY2ZnLVxcdTAwM2V1aGJfc3VwcG9ydGVkKVxcbitcXHRpZiAoY2ZnLVxcdTAwM2V1bmlpOV9zdXBwb3J0ZWQpXFxuK1xcdFxcdGRhdGEgPSBremFsbG9jX2ZsZXgoKmRhdGEsIGNoYW5uZWxzLCBJV0xfTlZNX05VTV9DSEFOTkVMU19VTklJOSk7XFxuK1xcdGVsc2UgaWYgKGNmZy1cXHUwMDNldWhiX3N1cHBvcnRlZClcXG4gXFx0XFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQik7XFxuIFxcdGVsc2VcXG4gXFx0XFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVCk7XFxuQEAgLTE1MDYsNyArMTUwNiw5IEBAIGl3bF9wYXJzZV9udm1fZGF0YShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucywgY29uc3Qgc3RydWN0IGl3bF9yZl9jZmcgKmNmZyxcXG4gXFx0dTE2IGxhcl9jb25maWc7XFxuIFxcdGNvbnN0IF9fbGUxNiAqY2hfc2VjdGlvbjtcXG4gXFxuLVxcdGlmIChjZmctXFx1MDAzZXVoYl9zdXBwb3J0ZWQpXFxuK1xcdGlmIChjZmctXFx1MDAzZXVuaWk5X3N1cHBvcnRlZClcXG4rXFx0XFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5KTtcXG4rXFx0ZWxzZSBpZiAoY2ZnLVxcdTAwM2V1aGJfc3VwcG9ydGVkKVxcbiBcXHRcXHRkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCKTtcXG4gXFx0ZWxzZSBpZiAoY2ZnLVxcdTAwM2Vudm1fdHlwZSAhPSBJV0xfTlZNX0VYVClcXG4gXFx0XFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTKTtcXG5AQCAtMTcyNywxMiArMTcyOSwxNSBAQCBpd2xfcGFyc2VfbnZtX21jY19pbmZvKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbiBcXHRpbnQgbWF4X251bV9jaDtcXG4gXFx0c3RydWN0IGl3bF9yZWdfY2FwYSByZWdfY2FwYTtcXG4gXFxuLVxcdGlmIChjZmctXFx1MDAzZXVoYl9zdXBwb3J0ZWQpIHtcXG4rXFx0aWYgKGNmZy1cXHUwMDNldW5paTlfc3VwcG9ydGVkKSB7XFxuK1xcdFxcdG1heF9udW1fY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMU19VTklJOTtcXG4rXFx0XFx0bnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzO1xcbitcXHR9IGVsc2UgaWYgKGNmZy1cXHUwMDNldWhiX3N1cHBvcnRlZCkge1xcbiBcXHRcXHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCO1xcbi1cXHRcXHRudm1fY2hhbiA9IGl3bF91aGJfbnZtX2NoYW5uZWxzO1xcbitcXHRcXHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XFxuIFxcdH0gZWxzZSBpZiAoY2ZnLVxcdTAwM2Vudm1fdHlwZSA9PSBJV0xfTlZNX0VYVCkge1xcbiBcXHRcXHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUO1xcbi1cXHRcXHRudm1fY2hhbiA9IGl3bF9leHRfbnZtX2NoYW5uZWxzO1xcbitcXHRcXHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdG1heF9udW1fY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMUztcXG4gXFx0XFx0bnZtX2NoYW4gPSBpd2xfbnZtX2NoYW5uZWxzO1xcbkBAIC0yMDg3LDEzICsyMDkyLDI2IEBAIHN0cnVjdCBpd2xfbnZtX2RhdGEgKml3bF9nZXRfbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbiBcXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjMgKnJzcF92MztcXG4gXFx0Ym9vbCB2NCA9IGZ3X2hhc19hcGkoXFx1MDAyNmZ3LVxcdTAwM2V1Y29kZV9jYXBhLFxcbiBcXHRcXHRcXHQgICAgIElXTF9VQ09ERV9UTFZfQVBJX1JFR1VMQVRPUllfTlZNX0lORk8pO1xcbi1cXHRzaXplX3QgcnNwX3NpemUgPSB2NCA/IHNpemVvZigqcnNwKSA6IHNpemVvZigqcnNwX3YzKTtcXG4rXFx0c2l6ZV90IHJzcF9zaXplO1xcbiBcXHR2b2lkICpjaGFubmVsX3Byb2ZpbGU7XFxuIFxcbiBcXHRyZXQgPSBpd2xfdHJhbnNfc2VuZF9jbWQodHJhbnMsIFxcdTAwMjZoY21kKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gXFxuK1xcdHN3aXRjaCAoaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZncsIFJFR1VMQVRPUllfQU5EX05WTV9HUk9VUCxcXG4rXFx0XFx0XFx0XFx0XFx0TlZNX0dFVF9JTkZPLCAwKSkge1xcbitcXHRjYXNlIDU6XFxuK1xcdFxcdHJzcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIDQ6XFxuK1xcdFxcdHJzcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcF92NCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyc3Bfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjMpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0fVxcbitcXG4gXFx0aWYgKFdBUk4oaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihoY21kLnJlc3BfcGt0KSAhPSByc3Bfc2l6ZSxcXG4gXFx0XFx0IFxcXCJJbnZhbGlkIHBheWxvYWQgbGVuIGluIE5WTSByZXNwb25zZSBmcm9tIEZXICVkXFxcIixcXG4gXFx0XFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oaGNtZC5yZXNwX3BrdCkpKSB7XFxuQEAgLTIxMDcsNyArMjEyNSw3IEBAIHN0cnVjdCBpd2xfbnZtX2RhdGEgKml3bF9nZXRfbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxcbiBcXHRpZiAoZW1wdHlfb3RwKVxcbiBcXHRcXHRJV0xfSU5GTyh0cmFucywgXFxcIk9UUCBpcyBlbXB0eVxcXFxuXFxcIik7XFxuIFxcbi1cXHRudm0gPSBremFsbG9jX2ZsZXgoKm52bSwgY2hhbm5lbHMsIElXTF9OVU1fQ0hBTk5FTFNfVjIpO1xcbitcXHRudm0gPSBremFsbG9jX2ZsZXgoKm52bSwgY2hhbm5lbHMsIElXTF9OVU1fQ0hBTk5FTFNfVjMpO1xcbiBcXHRpZiAoIW52bSkge1xcbiBcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmNcXG5pbmRleCAyMTg1ZGFkZTk1ZjhjYi4uMmRmNjY0M2E1YWE4MGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmNcXG5AQCAtMTEyMCw2ICsxMTIwLDEwIEBAIHZvaWQgaXdsX21sZF9oYW5kbGVfdHhfcmVzcF9ub3RpZihzdHJ1Y3QgaXdsX21sZCAqbWxkLFxcbiBcXHRzc24gPSBsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKWFnZ19zdGF0dXMgK1xcbiBcXHRcXHRcXHQgICB0eF9yZXNwLVxcdTAwM2VmcmFtZV9jb3VudCkgXFx1MDAyNiAweEZGRkY7XFxuIFxcbitcXHRpZiAoSVdMX0ZXX0NIRUNLKG1sZCwgdHhxX2lkIFxcdTAwM2U9IEFSUkFZX1NJWkUobWxkLVxcdTAwM2Vmd19pZF90b190eHEpLFxcbitcXHRcXHRcXHQgXFxcIkludmFsaWQgdHhxIGlkICVkXFxcXG5cXFwiLCB0eHFfaWQpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNnNrYnMpO1xcbiBcXG4gXFx0Lyogd2UgY2FuIGZyZWUgdW50aWwgc3NuICUgcS5uX2JkIG5vdCBpbmNsdXNpdmUgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmNcXG5pbmRleCAzNDI5ZDlhMTBlNDIwOS4uNmIxMWZhMzJlYTVjNmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmNcXG5AQCAtMTUwOSw2ICsxNTA5LDEwIEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuIFxcdFxcdGlmIChXQVJOX09OX09OQ0UodHJ1bmNhdGVkIFxcdTAwM2MgMCkpXFxuIFxcdFxcdFxcdHRydW5jYXRlZCA9IDA7XFxuIFxcbitcXHRcXHQvKiB0aGlzIHdvdWxkIGJlIGEgZmlybXdhcmUgYnVnICovXFxuK1xcdFxcdGlmIChXQVJOX09OX09OQ0UocGt0c2l6ZSBcXHUwMDNjIHNpemVvZigqaGRyKSkpXFxuK1xcdFxcdFxcdHJldHVybjtcXG4rXFxuIFxcdFxcdGlmIChpZWVlODAyMTFfaXNfZGF0YShoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XFxuIFxcdFxcdFxcdGludCBoZHJsZW4gPSBpZWVlODAyMTFfaGRybGVuKGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCk7XFxuIFxcdFxcdFxcdGludCBpdmxlbiA9IDAsIGljdmxlbiA9IDQ7IC8qIGFsc28gRkNTICovXFxuQEAgLTE1MTcsMTAgKzE1MjEsNiBAQCBzdGF0aWMgdm9pZCBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29ucyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbiBcXHRcXHRcXHRpZiAoIXBrdClcXG4gXFx0XFx0XFx0XFx0Z290byByZXBvcnQ7XFxuIFxcbi1cXHRcXHRcXHRza2JfcHV0X2RhdGEocGt0LCBwa3RkYXRhLCBoZHJsZW4pO1xcbi1cXHRcXHRcXHRwa3RkYXRhICs9IGhkcmxlbjtcXG4tXFx0XFx0XFx0cGt0c2l6ZSAtPSBoZHJsZW47XFxuLVxcbiBcXHRcXHRcXHRpZiAoaWVlZTgwMjExX2hhc19wcm90ZWN0ZWQoaGRyLVxcdTAwM2VmcmFtZV9jb250cm9sKSkge1xcbiBcXHRcXHRcXHRcXHQvKlxcbiBcXHRcXHRcXHRcXHQgKiBUaGlzIGlzIHVubG9ja2VkIGFuZCB1c2luZyBndGtfaShjKXZsZW4sXFxuQEAgLTE1NDYsNiArMTU0NiwxNyBAQCBzdGF0aWMgdm9pZCBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29ucyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbiBcXHRcXHRcXHRcXHR0cnVuY2F0ZWQgPSAwO1xcbiBcXHRcXHRcXHR9XFxuIFxcbitcXHRcXHRcXHRpZiAoSVdMX0ZXX0NIRUNLKG12bSxcXG4rXFx0XFx0XFx0XFx0XFx0IHBrdHNpemUgXFx1MDAzYz0gaGRybGVuICsgaXZsZW4gKyBpY3ZsZW4sXFxuK1xcdFxcdFxcdFxcdFxcdCBcXFwicGt0c2l6ZSBpcyB0b28gc21hbGwgJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCBwa3RzaXplKSkge1xcbitcXHRcXHRcXHRcXHRrZnJlZV9za2IocGt0KTtcXG4rXFx0XFx0XFx0XFx0cmV0dXJuO1xcbitcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHRza2JfcHV0X2RhdGEocGt0LCBwa3RkYXRhLCBoZHJsZW4pO1xcbitcXHRcXHRcXHRwa3RkYXRhICs9IGhkcmxlbjtcXG4rXFx0XFx0XFx0cGt0c2l6ZSAtPSBoZHJsZW47XFxuIFxcdFxcdFxcdHBrdHNpemUgLT0gaXZsZW4gKyBpY3ZsZW47XFxuIFxcdFxcdFxcdHBrdGRhdGEgKz0gaXZsZW47XFxuIFxcbkBAIC0yNDQ4LDEzICsyNDU5LDE1IEBAIGl3bF9tdm1fbmV0ZGV0ZWN0X3F1ZXJ5X3Jlc3VsdHMoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4gXFxuIFxcdGlmIChmd19oYXNfYXBpKFxcdTAwMjZtdm0tXFx1MDAzZWZ3LVxcdTAwM2V1Y29kZV9jYXBhLFxcbiBcXHRcXHQgICAgICAgSVdMX1VDT0RFX1RMVl9BUElfU0NBTl9PRkZMT0FEX0NIQU5TKSkge1xcbi1cXHRcXHRxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbyk7XFxuIFxcdFxcdG1hdGNoZXNfbGVuID0gc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX3Byb2ZpbGVfbWF0Y2gpICpcXG4gXFx0XFx0XFx0bWF4X3Byb2ZpbGVzO1xcbitcXHRcXHRxdWVyeV9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9tYXRjaF9pbmZvLFxcbitcXHRcXHRcXHRcXHQgICAgIG1hdGNoZXMpICsgbWF0Y2hlc19sZW47XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdHF1ZXJ5X2xlbiA9IHNpemVvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlc19xdWVyeV92MSk7XFxuIFxcdFxcdG1hdGNoZXNfbGVuID0gc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX3Byb2ZpbGVfbWF0Y2hfdjEpICpcXG4gXFx0XFx0XFx0bWF4X3Byb2ZpbGVzO1xcbitcXHRcXHRxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZXNfcXVlcnlfdjEpICtcXG4rXFx0XFx0XFx0bWF0Y2hlc19sZW47XFxuIFxcdH1cXG4gXFxuIFxcdGxlbiA9IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oY21kLnJlc3BfcGt0KTtcXG5AQCAtMjc1Niw3ICsyNzY5LDcgQEAgc3RhdGljIGludCBpd2xfbXZtX3dvd2xhbl9zdG9yZV93YWtlX3BrdChzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbiBcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGl3bF93b3dsYW5fc3RhdHVzX2RhdGEgKnN0YXR1cyxcXG4gXFx0XFx0XFx0XFx0XFx0IHUzMiBsZW4pXFxuIHtcXG4tXFx0dTMyIGRhdGFfc2l6ZSwgcGFja2V0X2xlbiA9IGxlMzJfdG9fY3B1KG5vdGlmLVxcdTAwM2V3YWtlX3BhY2tldF9sZW5ndGgpO1xcbitcXHR1MzIgZGF0YV9zaXplLCBwYWNrZXRfbGVuO1xcbiBcXG4gXFx0aWYgKGxlbiBcXHUwMDNjIHNpemVvZigqbm90aWYpKSB7XFxuIFxcdFxcdElXTF9FUlIobXZtLCBcXFwiSW52YWxpZCBXb1dMQU4gd2FrZSBwYWNrZXQgbm90aWZpY2F0aW9uIVxcXFxuXFxcIik7XFxuQEAgLTI3NzUsNiArMjc4OCw3IEBAIHN0YXRpYyBpbnQgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3Qoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4gXFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcdH1cXG4gXFxuK1xcdHBhY2tldF9sZW4gPSBsZTMyX3RvX2NwdShub3RpZi1cXHUwMDNld2FrZV9wYWNrZXRfbGVuZ3RoKTtcXG4gXFx0ZGF0YV9zaXplID0gbGVuIC0gb2Zmc2V0b2Yoc3RydWN0IGl3bF93b3dsYW5fd2FrZV9wa3Rfbm90aWYsIHdha2VfcGFja2V0KTtcXG4gXFxuIFxcdC8qIGRhdGFfc2l6ZSBnb3QgdGhlIHBhZGRpbmcgZnJvbSB0aGUgbm90aWZpY2F0aW9uLCByZW1vdmUgaXQuICovXFxuQEAgLTI4MDcsNyArMjgyMSw4IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuIFxcdGlmIChJU19FUlJfT1JfTlVMTCh2aWYpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRpZiAobGVuIFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8pICsgbWF0Y2hlc19sZW4pIHtcXG4rXFx0aWYgKGxlbiBcXHUwMDNjIG9mZnNldG9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8sIG1hdGNoZXMpICtcXG4rXFx0XFx0ICAgIG1hdGNoZXNfbGVuKSB7XFxuIFxcdFxcdElXTF9FUlIobXZtLCBcXFwiSW52YWxpZCBzY2FuIG1hdGNoIGluZm8gbm90aWZpY2F0aW9uXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuY1xcbmluZGV4IDNhMTRjYTVlNTEyYWUzLi44ZDdmNjBkY2QwMjcwZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmNcXG5AQCAtNjQ2LDcgKzY0Niw4IEBAIHN0YXRpYyB2b2lkIGl0ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFdBUk5fT04oKnRhcmdldC1cXHUwMDNlY2lwaGVyID09IElXTF9MT0NBVElPTl9DSVBIRVJfSU5WQUxJRCk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkXFxuKy8qIFRoZSB0ayBidWZmZXIgaXMgYXNzdW1lZCB0byBiZSBleGFjdGx5IFRLXzExQVpfTEVOIGJ5dGVzICovXFxuK3N0YXRpYyBpbnRcXG4gaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbiBcXHRcXHRcXHRcXHR1OCAqYnNzaWQsIHU4ICpjaXBoZXIsIHU4ICpobHRrLCB1OCAqdGssXFxuIFxcdFxcdFxcdFxcdHU4ICpyeF9wbiwgdTggKnR4X3BuLCBfX2xlMzIgKmZsYWdzKVxcbkBAIC02NTYsMTIgKzY1NywxMiBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuIFxcdHN0cnVjdCBpd2xfbXZtX3ZpZiAqbXZtdmlmID0gaXdsX212bV92aWZfZnJvbV9tYWM4MDIxMSh2aWYpO1xcbiBcXG4gXFx0aWYgKG12bXZpZi1cXHUwMDNlZnRtX3VucHJvdGVjdGVkKVxcbi1cXHRcXHRyZXR1cm47XFxuK1xcdFxcdHJldHVybiAwO1xcbiAjZW5kaWZcXG4gXFxuIFxcdGlmICghKGxlMzJfdG9fY3B1KCpmbGFncykgXFx1MDAyNiAoSVdMX0lOSVRJQVRPUl9BUF9GTEFHU19OT05fVEIgfFxcbiBcXHRcXHQgICAgICAgSVdMX0lOSVRJQVRPUl9BUF9GTEFHU19UQikpKVxcbi1cXHRcXHRyZXR1cm47XFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2bXZtLVxcdTAwM2VtdXRleCk7XFxuIFxcbkBAIC02NzksMTQgKzY4MCwzMSBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuIFxcdFxcdGlmICh2aWYtXFx1MDAzZWNmZy5hc3NvYyBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgIW1lbWNtcCh2aWYtXFx1MDAzZWJzc19jb25mLmJzc2lkLCBic3NpZCwgRVRIX0FMRU4pKSB7XFxuIFxcdFxcdFxcdHN0cnVjdCBpd2xfbXZtX2Z0bV9pdGVyX2RhdGEgdGFyZ2V0O1xcbitcXHRcXHRcXHR1MzIga2V5X2xlbjtcXG4gXFxuIFxcdFxcdFxcdHRhcmdldC5ic3NpZCA9IGJzc2lkO1xcbiBcXHRcXHRcXHR0YXJnZXQuY2lwaGVyID0gY2lwaGVyO1xcbiBcXHRcXHRcXHR0YXJnZXQudGsgPSBOVUxMO1xcbiBcXHRcXHRcXHRpZWVlODAyMTFfaXRlcl9rZXlzKG12bS1cXHUwMDNlaHcsIHZpZiwgaXRlciwgXFx1MDAyNnRhcmdldCk7XFxuIFxcbi1cXHRcXHRcXHRpZiAoIVdBUk5fT04oIXRhcmdldC50aykpXFxuLVxcdFxcdFxcdFxcdG1lbWNweSh0aywgdGFyZ2V0LnRrLCBUS18xMUFaX0xFTik7XFxuK1xcdFxcdFxcdGlmIChXQVJOX09OKCF0YXJnZXQudGspKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdFxcdFxcdHN3aXRjaCAoKnRhcmdldC5jaXBoZXIpIHtcXG4rXFx0XFx0XFx0Y2FzZSBJV0xfTE9DQVRJT05fQ0lQSEVSX0NDTVBfMTI4OlxcbitcXHRcXHRcXHRjYXNlIElXTF9MT0NBVElPTl9DSVBIRVJfR0NNUF8xMjg6XFxuK1xcdFxcdFxcdFxcdGtleV9sZW4gPSBXTEFOX0tFWV9MRU5fQ0NNUDtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGNhc2UgSVdMX0xPQ0FUSU9OX0NJUEhFUl9HQ01QXzI1NjpcXG4rXFx0XFx0XFx0XFx0a2V5X2xlbiA9IFdMQU5fS0VZX0xFTl9HQ01QXzI1NjtcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGRlZmF1bHQ6XFxuK1xcdFxcdFxcdFxcdFdBUk5fT04oMSk7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHRtZW1zZXQodGssIDAsIFRLXzExQVpfTEVOKTtcXG4rXFx0XFx0XFx0bWVtY3B5KHRrLCB0YXJnZXQudGssIGtleV9sZW4pO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRtZW1jcHkodGssIGVudHJ5LVxcdTAwM2V0aywgc2l6ZW9mKGVudHJ5LVxcdTAwM2V0aykpO1xcbiBcXHRcXHR9XFxuQEAgLTY5NSw4ICs3MTMsMTAgQEAgaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbiBcXHRcXHRtZW1jcHkodHhfcG4sIGVudHJ5LVxcdTAwM2V0eF9wbiwgc2l6ZW9mKGVudHJ5LVxcdTAwM2V0eF9wbikpO1xcbiBcXG4gXFx0XFx0RlRNX1NFVF9GTEFHKFNFQ1VSRUQpO1xcbi1cXHRcXHRyZXR1cm47XFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gc3RhdGljIGludFxcbkBAIC03MDgsMTIgKzcyOCwxMSBAQCBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3Y3KHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHRpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKG12bSwgdmlmLCB0YXJnZXQtXFx1MDAzZWJzc2lkLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2dGFyZ2V0LVxcdTAwM2VjaXBoZXIsIHRhcmdldC1cXHUwMDNlaGx0ayxcXG4tXFx0XFx0XFx0XFx0XFx0dGFyZ2V0LVxcdTAwM2V0aywgdGFyZ2V0LVxcdTAwM2VyeF9wbixcXG4tXFx0XFx0XFx0XFx0XFx0dGFyZ2V0LVxcdTAwM2V0eF9wbixcXG4tXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnRhcmdldC1cXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcXG4tXFx0cmV0dXJuIGVycjtcXG4rXFx0cmV0dXJuIGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmcobXZtLCB2aWYsIHRhcmdldC1cXHUwMDNlYnNzaWQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZ0YXJnZXQtXFx1MDAzZWNpcGhlciwgdGFyZ2V0LVxcdTAwM2VobHRrLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICB0YXJnZXQtXFx1MDAzZXRrLCB0YXJnZXQtXFx1MDAzZXJ4X3BuLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICB0YXJnZXQtXFx1MDAzZXR4X3BuLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2dGFyZ2V0LVxcdTAwM2Vpbml0aWF0b3JfYXBfZmxhZ3MpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGl3bF9tdm1fZnRtX3N0YXJ0X3YxMShzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbkBAIC04ODEsMTEgKzkwMCwxMyBAQCBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3YxMChzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbiBcXHRpd2xfbXZtX2Z0bV9zZXRfdGFyZ2V0X2ZsYWdzKG12bSwgcGVlciwgXFx1MDAyNnRhcmdldC1cXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcXG4gXFx0aXdsX212bV9mdG1fc2V0X3N0YShtdm0sIHZpZiwgcGVlciwgXFx1MDAyNnRhcmdldC1cXHUwMDNlc3RhX2lkLFxcbiBcXHRcXHRcXHQgICAgXFx1MDAyNnRhcmdldC1cXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcXG4tXFx0aXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LVxcdTAwM2Vic3NpZCxcXG4tXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnRhcmdldC1cXHUwMDNlY2lwaGVyLCB0YXJnZXQtXFx1MDAzZWhsdGssXFxuLVxcdFxcdFxcdFxcdFxcdHRhcmdldC1cXHUwMDNldGssIHRhcmdldC1cXHUwMDNlcnhfcG4sXFxuLVxcdFxcdFxcdFxcdFxcdHRhcmdldC1cXHUwMDNldHhfcG4sXFxuLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZ0YXJnZXQtXFx1MDAzZWluaXRpYXRvcl9hcF9mbGFncyk7XFxuK1xcdHJldCA9IGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmcobXZtLCB2aWYsIHRhcmdldC1cXHUwMDNlYnNzaWQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZ0YXJnZXQtXFx1MDAzZWNpcGhlciwgdGFyZ2V0LVxcdTAwM2VobHRrLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICB0YXJnZXQtXFx1MDAzZXRrLCB0YXJnZXQtXFx1MDAzZXJ4X3BuLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICB0YXJnZXQtXFx1MDAzZXR4X3BuLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2dGFyZ2V0LVxcdTAwM2Vpbml0aWF0b3JfYXBfZmxhZ3MpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4gXFx0aTJyX21heF9zdHMgPSBJV0xfTVZNX0ZUTV9JMlJfTUFYX1NUUyBcXHUwMDNlIDEgPyAxIDpcXG4gXFx0XFx0SVdMX01WTV9GVE1fSTJSX01BWF9TVFM7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jXFxuaW5kZXggNmU1MDdkNmRjZGQyYTEuLmZhNTIzYmU5MWQ4YWQzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jXFxuQEAgLTk2NCwxMiArOTY0LDIyIEBAIGludCBpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGUoc3RydWN0IGl3bF9tdm0gKm12bSlcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKElXTF9GV19DSEVDSyhtdm0sXFxuK1xcdFxcdFxcdCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKGNtZC5yZXNwX3BrdCkgIT1cXG4rXFx0XFx0XFx0IHNpemVvZigqcmVzcCksXFxuK1xcdFxcdFxcdCBcXFwiV3Jvbmcgc2l6ZSBmb3IgaXdsX2dlb190eF9wb3dlcl9wcm9maWxlc19yZXNwOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oY21kLnJlc3BfcGt0KSkpIHtcXG4rXFx0XFx0cmV0ID0gLUVJTztcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuIFxcdHJlc3AgPSAodm9pZCAqKWNtZC5yZXNwX3BrdC1cXHUwMDNlZGF0YTtcXG4gXFx0cmV0ID0gbGUzMl90b19jcHUocmVzcC1cXHUwMDNlcHJvZmlsZV9pZHgpO1xcbiBcXG4gXFx0aWYgKFdBUk5fT04ocmV0IFxcdTAwM2UgQklPU19HRU9fTUFYX1BST0ZJTEVfTlVNKSlcXG4gXFx0XFx0cmV0ID0gLUVJTztcXG4gXFxuK291dDpcXG4gXFx0aXdsX2ZyZWVfcmVzcChcXHUwMDI2Y21kKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9wdHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3B0cC5jXFxuaW5kZXggZjM5ZWI0ODg2NGViNGIuLjQ5ZGNiMTM4ODAwN2JjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3B0cC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcHRwLmNcXG5AQCAtMSw2ICsxLDYgQEBcXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuIC8qXFxuLSAqIENvcHlyaWdodCAoQykgMjAyMSAtIDIwMjMsIDIwMjUgSW50ZWwgQ29ycG9yYXRpb25cXG4rICogQ29weXJpZ2h0IChDKSAyMDIxIC0gMjAyMywgMjAyNS0yMDI2IEludGVsIENvcnBvcmF0aW9uXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFxcIm12bS5oXFxcIlxcbkBAIC0xMjEsNiArMTIxLDggQEAgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZncoc3RydWN0IGl3bF9tdm0gKm12bSwgdTMyICpncDIsIHU2NCAqc3lzX3RpbWUpXFxuIFxcdCpzeXNfdGltZSA9ICh1NjQpbGUzMl90b19jcHUocmVzcC1cXHUwMDNlcGxhdGZvcm1fdGltZXN0YW1wX2hpKSBcXHUwMDNjXFx1MDAzYyAzMiB8XFxuIFxcdFxcdGxlMzJfdG9fY3B1KHJlc3AtXFx1MDAzZXBsYXRmb3JtX3RpbWVzdGFtcF9sbyk7XFxuIFxcbitcXHRpd2xfZnJlZV9yZXNwKFxcdTAwMjZjbWQpO1xcbitcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmNcXG5pbmRleCBkYzY5YzcxZmFhNzZjYS4uZDNjMmZlODMwNDc3N2IgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3R4LmNcXG5AQCAtMTU0NCw2ICsxNTQ0LDE3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGl3bF9tdm1fZ2V0X3NjZF9zc24oc3RydWN0IGl3bF9tdm0gKm12bSxcXG4gXFx0cmV0dXJuIHZhbCBcXHUwMDI2IDB4RkZGO1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIHNpemVfdCBpd2xfbXZtX3R4X3Jlc3BfbWluX2xlbihzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpd2xfdHhfcmVzcCAqdHhfcmVzcClcXG4re1xcbitcXHRzdHJ1Y3QgYWdnX3R4X3N0YXR1cyAqYWdnX3N0YXR1cyA9XFxuK1xcdFxcdGl3bF9tdm1fZ2V0X2FnZ19zdGF0dXMobXZtLCB0eF9yZXNwKTtcXG4rXFxuK1xcdC8qIFRoZSBhZ2dyZWdhdGUgcmVzcG9uc2UgZW5kcyB3aXRoIGEgdHJhaWxpbmcgU0NEIFNTTiBfX2xlMzIgd29yZC4gKi9cXG4rXFx0cmV0dXJuICh1OCAqKShhZ2dfc3RhdHVzICsgdHhfcmVzcC1cXHUwMDNlZnJhbWVfY291bnQpIC0gKHU4ICopdHhfcmVzcCArXFxuK1xcdFxcdHNpemVvZihfX2xlMzIpO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBpd2xfbXZtX3J4X3R4X2NtZF9zaW5nbGUoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaXdsX3J4X3BhY2tldCAqcGt0KVxcbiB7XFxuQEAgLTE4NDcsNiArMTg1OCw5IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcnhfdHhfY21kX2FnZyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbiBcXHRpbnQgcXVldWUgPSBTRVFfVE9fUVVFVUUoc2VxdWVuY2UpO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhO1xcbiBcXG4rXFx0aWYgKFdBUk5fT05fT05DRShpd2xfbXZtX2hhc19uZXdfdHhfYXBpKG12bSkpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRpZiAoV0FSTl9PTl9PTkNFKHF1ZXVlIFxcdTAwM2MgSVdMX01WTV9EUUFfTUlOX0RBVEFfUVVFVUUgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0IChxdWV1ZSAhPSBJV0xfTVZNX0RRQV9CU1NfQ0xJRU5UX1FVRVVFKSkpXFxuIFxcdFxcdHJldHVybjtcXG5AQCAtMTg4MSw2ICsxODk1LDI2IEBAIHZvaWQgaXdsX212bV9yeF90eF9jbWQoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXFxuIHtcXG4gXFx0c3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7XFxuIFxcdHN0cnVjdCBpd2xfdHhfcmVzcCAqdHhfcmVzcCA9ICh2b2lkICopcGt0LVxcdTAwM2VkYXRhO1xcbitcXHRzaXplX3QgbWluX2xlbjtcXG4rXFxuK1xcdGlmIChJV0xfRldfQ0hFQ0sobXZtLCAhdHhfcmVzcC1cXHUwMDNlZnJhbWVfY291bnQsXFxuK1xcdFxcdFxcdCBcXFwiaW52YWxpZCBUWF9DTUQgZnJhbWVfY291bnQgJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCB0eF9yZXNwLVxcdTAwM2VmcmFtZV9jb3VudCkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChJV0xfRldfQ0hFQ0sobXZtLFxcbitcXHRcXHRcXHQgaXdsX212bV9oYXNfbmV3X3R4X2FwaShtdm0pIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCB0eF9yZXNwLVxcdTAwM2VmcmFtZV9jb3VudCAhPSAxLFxcbitcXHRcXHRcXHQgXFxcImludmFsaWQgVFhfQ01EIGZyYW1lX2NvdW50ICV1IGZvciBuZXcgVFggQVBJXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgdHhfcmVzcC1cXHUwMDNlZnJhbWVfY291bnQpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRtaW5fbGVuID0gaXdsX212bV90eF9yZXNwX21pbl9sZW4obXZtLCB0eF9yZXNwKTtcXG4rXFx0aWYgKElXTF9GV19DSEVDSyhtdm0sIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcXHUwMDNjIG1pbl9sZW4sXFxuK1xcdFxcdFxcdCBcXFwiaW52YWxpZCBUWF9DTUQgbGVuICV1IChmcmFtZV9jb3VudCAldSwgbWluICV6dSlcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCksIHR4X3Jlc3AtXFx1MDAzZWZyYW1lX2NvdW50LFxcbitcXHRcXHRcXHQgbWluX2xlbikpXFxuK1xcdFxcdHJldHVybjtcXG4gXFxuIFxcdGlmICh0eF9yZXNwLVxcdTAwM2VmcmFtZV9jb3VudCA9PSAxKVxcbiBcXHRcXHRpd2xfbXZtX3J4X3R4X2NtZF9zaW5nbGUobXZtLCBwa3QpO1xcbkBAIC0yMTAwLDggKzIxMzQsMTQgQEAgdm9pZCBpd2xfbXZtX3J4X2JhX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxcbiBcXHRcXHRcXHRpZiAodGlkID09IElXTF9NR01UX1RJRClcXG4gXFx0XFx0XFx0XFx0dGlkID0gSVdMX01BWF9USURfQ09VTlQ7XFxuIFxcbitcXHRcXHRcXHRpZiAoSVdMX0ZXX0NIRUNLKG12bSwgdGlkIFxcdTAwM2U9XFxuK1xcdFxcdFxcdFxcdFxcdCBBUlJBWV9TSVpFKG12bXN0YS1cXHUwMDNldGlkX2RhdGEpLFxcbitcXHRcXHRcXHRcXHRcXHQgXFxcImludmFsaWQgVElEICVkIGluIGNvbXByZXNzZWQgQkFcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCB0aWQpKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuIFxcdFxcdFxcdGlmIChtdm1zdGEpXFxuLVxcdFxcdFxcdFxcdG12bXN0YS1cXHUwMDNldGlkX2RhdGFbaV0ubHFfY29sb3IgPSBscV9jb2xvcjtcXG4rXFx0XFx0XFx0XFx0bXZtc3RhLVxcdTAwM2V0aWRfZGF0YVt0aWRdLmxxX2NvbG9yID0gbHFfY29sb3I7XFxuIFxcbiBcXHRcXHRcXHRpd2xfbXZtX3R4X3JlY2xhaW0obXZtLCBzdGFfaWQsIHRpZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgKGludCkobGUxNl90b19jcHUoYmFfdGZkLVxcdTAwM2VxX251bSkpLFxcbkBAIC0yMTIxLDYgKzIxNjEsOSBAQCB2b2lkIGl3bF9tdm1fcnhfYmFfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXFxuIFxcdGJhX25vdGlmID0gKHZvaWQgKilwa3QtXFx1MDAzZWRhdGE7XFxuIFxcdHN0YV9pZCA9IGJhX25vdGlmLVxcdTAwM2VzdGFfaWQ7XFxuIFxcdHRpZCA9IGJhX25vdGlmLVxcdTAwM2V0aWQ7XFxuK1xcdGlmIChJV0xfRldfQ0hFQ0sobXZtLCB0aWQgXFx1MDAzZT0gQVJSQVlfU0laRShtdm1zdGEtXFx1MDAzZXRpZF9kYXRhKSxcXG4rXFx0XFx0XFx0IFxcXCJpbnZhbGlkIFRJRCAlZCBpbiBCQSBub3RpZlxcXFxuXFxcIiwgdGlkKSlcXG4rXFx0XFx0cmV0dXJuO1xcbiBcXHQvKiBcXFwiZmxvd1xcXCIgY29ycmVzcG9uZHMgdG8gVHggcXVldWUgKi9cXG4gXFx0dHhxID0gbGUxNl90b19jcHUoYmFfbm90aWYtXFx1MDAzZXNjZF9mbG93KTtcXG4gXFx0LyogXFxcInNzblxcXCIgaXMgc3RhcnQgb2YgYmxvY2stYWNrIFR4IHdpbmRvdywgY29ycmVzcG9uZHMgdG8gaW5kZXhcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby5jXFxuaW5kZXggZDVlYjg5NTE0NGVmYzkuLjdmODg2MjAwZDY5MzMzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8uY1xcbkBAIC0xLDcgKzEsNyBAQFxcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcXG4gLypcXG4gICogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIERldXRzY2hsYW5kIEdtYkhcXG4tICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjUgSW50ZWwgQ29ycG9yYXRpb25cXG4rICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cXG4gICovXFxuICNpbmNsdWRlIFxcXCJpd2wtdHJhbnMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcIml3bC1maC5oXFxcIlxcbkBAIC05OSw2ICs5OSwxMSBAQCBpbnQgaXdsX3BjaWVfaW5pdF9md19zZWMoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXFxuIFxcdC8qIGFkZCAyIGR1ZSB0byBzZXBhcmF0b3JzICovXFxuIFxcdHBhZ2luZ19jbnQgPSBpd2xfcGNpZV9nZXRfbnVtX3NlY3Rpb25zKGZ3LCBsbWFjX2NudCArIHVtYWNfY250ICsgMik7XFxuIFxcbitcXHRpZiAoV0FSTl9PTihsbWFjX2NudCBcXHUwMDNlIEFSUkFZX1NJWkUoY3R4dF9kcmFtLVxcdTAwM2VsbWFjX2ltZykgfHxcXG4rXFx0XFx0ICAgIHVtYWNfY250IFxcdTAwM2UgQVJSQVlfU0laRShjdHh0X2RyYW0tXFx1MDAzZXVtYWNfaW1nKSB8fFxcbitcXHRcXHQgICAgcGFnaW5nX2NudCBcXHUwMDNlIEFSUkFZX1NJWkUoY3R4dF9kcmFtLVxcdTAwM2V2aXJ0dWFsX2ltZykpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdGRyYW0tXFx1MDAzZWZ3ID0ga3phbGxvY19vYmpzKCpkcmFtLVxcdTAwM2VmdywgdW1hY19jbnQgKyBsbWFjX2NudCk7XFxuIFxcdGlmICghZHJhbS1cXHUwMDNlZncpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoxOTo0OC4yMjY1NTQ4MjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTg2MTA0MTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklXTFdJRklcIixcbiAgICBcIklXTE1WTVwiLFxuICAgIFwiSVdMTUxEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXdsX3Budm1fY29tcGxldGVfZm5cIixcbiAgICBcIml3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwXCIsXG4gICAgXCJpd2xfcGFyc2Vfc2hhcmVkX21lbVwiLFxuICAgIFwiaXdsX2dldF9udm1cIixcbiAgICBcIml3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zXCIsXG4gICAgXCJpd2xfbXZtX3dvd2xhbl9zdG9yZV93YWtlX3BrdFwiLFxuICAgIFwiaXdsX212bV9uZF9tYXRjaF9pbmZvX2hhbmRsZXJcIixcbiAgICBcIml3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdcIixcbiAgICBcIml3bF9tdm1fZ2V0X3Nhcl9nZW9fcHJvZmlsZVwiLFxuICAgIFwiaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZndcIixcbiAgICBcIml3bF9wY2llX2luaXRfZndfc2VjXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBpd2x3aWZpIGRyaXZlciwgaW5jbHVkaW5nIGFkZGluZyBzdXBwb3J0IGZvciBVTklJLTkgY2hhbm5lbHMsIGFkZGluZyBib3VuZHMgY2hlY2tzIGZvciBmaXJtd2FyZSBub3RpZmljYXRpb25zIGFuZCByZXNwb25zZXMsIGZpeGluZyBtZW1vcnkgbGVha3MsIGFuZCBtb2RpZnlpbmcgTlZNIHBhcnNpbmcgbG9naWMuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBkcml2ZXIgYW5kIGFyZSB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGUzNGM5ZTU4ZDJiMjRkNTdmYjkzMTMxZGRlNzZmMmE2NDA2MDQ4NThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAwMjoxOTo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvY2ZnL3JmLXBlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jXG5pbmRleCA3YTA0Y2IxMjBiMWIyMy4uNjA4MGY1ZjIzZTY5ODcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2NmZy9yZi1wZS5jXG5AQCAtMTUsNiArMTUsNyBAQFxuIFx0Lm5vbl9zaGFyZWRfYW50ID0gQU5UX0IsXHRcdFx0XHRcdFxcXG4gXHQudmh0X211X21pbW9fc3VwcG9ydGVkID0gdHJ1ZSxcdFx0XHRcdFx0XFxcbiBcdC51aGJfc3VwcG9ydGVkID0gdHJ1ZSxcdFx0XHRcdFx0XHRcXFxuK1x0LnVuaWk5X3N1cHBvcnRlZCA9IHRydWUsXHRcdFx0XHRcdFxcXG4gXHQuZWh0X3N1cHBvcnRlZCA9IHRydWUsXHRcdFx0XHRcdFx0XFxcbiBcdC51aHJfc3VwcG9ydGVkID0gdHJ1ZSxcdFx0XHRcdFx0XHRcXFxuIFx0Lm51bV9yYmRzID0gSVdMX05VTV9SQkRTX0VIVCxcdFx0XHRcdFx0XFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9udm0tcmVnLmhcbmluZGV4IDQ0M2E5YTQxNjMyNTIzLi4wMTcyYzA3NDdhNDdjOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL252bS1yZWcuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvbnZtLXJlZy5oXG5AQCAtMjA1LDYgKzIwNSw3IEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3BoeSB7XG4gXG4gI2RlZmluZSBJV0xfTlVNX0NIQU5ORUxTX1YxXHQ1MVxuICNkZWZpbmUgSVdMX05VTV9DSEFOTkVMU19WMlx0MTEwXG4rI2RlZmluZSBJV0xfTlVNX0NIQU5ORUxTX1YzXHQxMTVcbiBcbiAvKipcbiAgKiBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5X3YxIC0gcmVndWxhdG9yeSBpbmZvcm1hdGlvblxuQEAgLTIxOSwxMiArMjIwLDEyIEBAIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnlfdjEge1xuIH0gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JFR1VMQVRPUllfU19WRVJfMSAqL1xuIFxuIC8qKlxuLSAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JlZ3VsYXRvcnkgLSByZWd1bGF0b3J5IGluZm9ybWF0aW9uXG4rICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MiAtIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb25cbiAgKiBAbGFyX2VuYWJsZWQ6IGlzIExBUiBlbmFibGVkXG4gICogQG5fY2hhbm5lbHM6IG51bWJlciBvZiB2YWxpZCBjaGFubmVscyBpbiB0aGUgYXJyYXlcbiAgKiBAY2hhbm5lbF9wcm9maWxlOiByZWd1bGF0b3J5IGRhdGEgb2YgdGhpcyBjaGFubmVsXG4gICovXG4tc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSB7XG4rc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MiB7XG4gXHRfX2xlMzIgbGFyX2VuYWJsZWQ7XG4gXHRfX2xlMzIgbl9jaGFubmVscztcbiBcdF9fbGUzMiBjaGFubmVsX3Byb2ZpbGVbSVdMX05VTV9DSEFOTkVMU19WMl07XG5AQCAtMjQ0LDYgKzI0NSwzMiBAQCBzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjMge1xuIFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeV92MSByZWd1bGF0b3J5O1xuIH0gX19wYWNrZWQ7IC8qIFJFR1VMQVRPUllfTlZNX0dFVF9JTkZPX1JTUF9BUElfU19WRVJfMyAqL1xuIFxuKy8qKlxuKyAqIHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcF92NCAtIHJlc3BvbnNlIHRvIGdldCBOVk0gZGF0YVxuKyAqIEBnZW5lcmFsOiBnZW5lcmFsIE5WTSBkYXRhXG4rICogQG1hY19za3U6IGRhdGEgcmVsYXRpbmcgdG8gTUFDIHNrdVxuKyAqIEBwaHlfc2t1OiBkYXRhIHJlbGF0aW5nIHRvIFBIWSBza3VcbisgKiBAcmVndWxhdG9yeTogcmVndWxhdG9yeSBkYXRhXG4rICovXG4rc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3Y0IHtcbitcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX2dlbmVyYWwgZ2VuZXJhbDtcbitcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3NrdSBtYWNfc2t1O1xuK1x0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcGh5IHBoeV9za3U7XG4rXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5X3YyIHJlZ3VsYXRvcnk7XG4rfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl80ICovXG4rXG4rLyoqXG4rICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSAtIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb25cbisgKiBAbGFyX2VuYWJsZWQ6IGlzIExBUiBlbmFibGVkXG4rICogQG5fY2hhbm5lbHM6IG51bWJlciBvZiB2YWxpZCBjaGFubmVscyBpbiB0aGUgYXJyYXlcbisgKiBAY2hhbm5lbF9wcm9maWxlOiByZWd1bGF0b3J5IGRhdGEgb2YgdGhpcyBjaGFubmVsXG4rICovXG4rc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcmVndWxhdG9yeSB7XG4rXHRfX2xlMzIgbGFyX2VuYWJsZWQ7XG4rXHRfX2xlMzIgbl9jaGFubmVscztcbitcdF9fbGUzMiBjaGFubmVsX3Byb2ZpbGVbSVdMX05VTV9DSEFOTkVMU19WM107XG4rfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUkVHVUxBVE9SWV9TX1ZFUl8zICovXG4rXG4gLyoqXG4gICogc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwIC0gcmVzcG9uc2UgdG8gZ2V0IE5WTSBkYXRhXG4gICogQGdlbmVyYWw6IGdlbmVyYWwgTlZNIGRhdGFcbkBAIC0yNTYsNyArMjgzLDcgQEAgc3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwIHtcbiBcdHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3NrdSBtYWNfc2t1O1xuIFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcGh5IHBoeV9za3U7XG4gXHRzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yZWd1bGF0b3J5IHJlZ3VsYXRvcnk7XG4tfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl80ICovXG4rfSBfX3BhY2tlZDsgLyogUkVHVUxBVE9SWV9OVk1fR0VUX0lORk9fUlNQX0FQSV9TX1ZFUl81ICovXG4gXG4gLyoqXG4gICogc3RydWN0IGl3bF9udm1fYWNjZXNzX2NvbXBsZXRlX2NtZCAtIE5WTV9BQ0NFU1MgY29tbWFuZHMgYXJlIGNvbXBsZXRlZFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvYXBpL3NjYW4uaFxuaW5kZXggMDhmNGNjM2VhMWMzMDQuLmVlNzgzNzEwODJiMDk0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9hcGkvc2Nhbi5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L2FwaS9zY2FuLmhcbkBAIC0xLDYgKzEsNiBAQFxuIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZSAqL1xuIC8qXG4tICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQsIDIwMTgtMjAyNSBJbnRlbCBDb3Jwb3JhdGlvblxuKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cbiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBJbnRlbCBNb2JpbGUgQ29tbXVuaWNhdGlvbnMgR21iSFxuICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEludGVsIERldXRzY2hsYW5kIEdtYkhcbiAgKi9cbkBAIC0xMzE5LDcgKzEzMTksNyBAQCBzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9tYXRjaF9pbmZvIHtcbiBcdHU4IHJlc3VtZV93aGlsZV9zY2FubmluZztcbiBcdHU4IHNlbGZfcmVjb3Zlcnk7XG4gXHRfX2xlMTYgcmVzZXJ2ZWQ7XG4tXHRzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlX21hdGNoIG1hdGNoZXNbXTtcbitcdHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX3Byb2ZpbGVfbWF0Y2ggbWF0Y2hlc1tJV0xfU0NBTl9NQVhfUFJPRklMRVNfVjJdO1xuIH0gX19wYWNrZWQ7IC8qIFNDQU5fT0ZGTE9BRF9QUk9GSUxFU19RVUVSWV9SU1BfU19WRVJfMyBhbmRcbiBcdCAgICAgKiBTQ0FOX09GRkxPQURfTUFUQ0hfSU5GT19OT1RJRklDQVRJT05fU19WRVJfMVxuIFx0ICAgICAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9wbnZtLmNcbmluZGV4IGFmZmY4ZDUxY2E5NTBjLi5lYzBmZjU4YWIzMTJkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcG52bS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3Budm0uY1xuQEAgLTEsNiArMSw2IEBAXG4gLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG4gLypcbi0gKiBDb3B5cmlnaHQoYykgMjAyMC0yMDI1IEludGVsIENvcnBvcmF0aW9uXG4rICogQ29weXJpZ2h0KGMpIDIwMjAtMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxuICAqL1xuIFxuICNpbmNsdWRlIFwiaXdsLWRydi5oXCJcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2luY2x1ZGUgXCJmdy9hcGkvYWxpdmUuaFwiXG4gI2luY2x1ZGUgXCJmdy91ZWZpLmhcIlxuICNpbmNsdWRlIFwiZncvaW1nLmhcIlxuKyNpbmNsdWRlIFwiZncvZGJnLmhcIlxuIFxuICNkZWZpbmUgSVdMX1BOVk1fUkVEVUNFRF9DQVBfQklUIEJJVCgyNSlcbiBcbkBAIC0yNiw2ICsyNywxMiBAQCBzdGF0aWMgYm9vbCBpd2xfcG52bV9jb21wbGV0ZV9mbihzdHJ1Y3QgaXdsX25vdGlmX3dhaXRfZGF0YSAqbm90aWZfd2FpdCxcbiBcdHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zID0gKHN0cnVjdCBpd2xfdHJhbnMgKilkYXRhO1xuIFx0c3RydWN0IGl3bF9wbnZtX2luaXRfY29tcGxldGVfbnRmeSAqcG52bV9udGYgPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuIFxuK1x0aWYgKElXTF9GV19DSEVDSyh0cmFucyxcbitcdFx0XHQgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzYyBzaXplb2YoKnBudm1fbnRmKSxcbitcdFx0XHQgXCJCYWQgbm90aWYgbGVuOiAlZFxcblwiLFxuK1x0XHRcdCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkpKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbiBcdElXTF9ERUJVR19GVyh0cmFucyxcbiBcdFx0ICAgICBcIlBOVk0gY29tcGxldGUgbm90aWZpY2F0aW9uIHJlY2VpdmVkIHdpdGggc3RhdHVzIDB4JTB4XFxuXCIsXG4gXHRcdCAgICAgbGUzMl90b19jcHUocG52bV9udGYtXHUwMDNlc3RhdHVzKSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3JlZ3VsYXRvcnkuY1xuaW5kZXggOGQ5ZmYzNmUzMGY1ZTMuLjFkNmQzOGVlNTViNDk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9yZWd1bGF0b3J5LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvcmVndWxhdG9yeS5jXG5AQCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgaXdsX2FkZF9tY2NfdG9fdGFzX2Jsb2NrX2xpc3QodTE2ICpsaXN0LCB1OCAqc2l6ZSwgdTE2IG1jYylcbiBcdGlmICgqc2l6ZSBcdTAwM2U9IElXTF9XVEFTX0JMQUNLX0xJU1RfTUFYKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4tXHRsaXN0WypzaXplKytdID0gbWNjO1xuK1x0bGlzdFsoKnNpemUpKytdID0gbWNjO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIElXTF9FWFBPUlRfU1lNQk9MKGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZncvc21lbS5jXG5pbmRleCAzNDRkZGRlODViMTg5Ny4uMjBlZDI2YTFiYjAwZWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2Z3L3NtZW0uY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9mdy9zbWVtLmNcbkBAIC0xLDYgKzEsNiBAQFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuIC8qXG4tICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQsIDIwMTgtMjAyMSwgMjAyNSBJbnRlbCBDb3Jwb3JhdGlvblxuKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0LCAyMDE4LTIwMjEsIDIwMjUtMjAyNiBJbnRlbCBDb3Jwb3JhdGlvblxuICAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEludGVsIE1vYmlsZSBDb21tdW5pY2F0aW9ucyBHbWJIXG4gICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgSW50ZWwgRGV1dHNjaGxhbmQgR21iSFxuICAqL1xuQEAgLTE0LDkgKzE0LDE3IEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbiB7XG4gXHRzdHJ1Y3QgaXdsX3NoYXJlZF9tZW1fY2ZnICptZW1fY2ZnID0gKHZvaWQgKilwa3QtXHUwMDNlZGF0YTtcbiBcdGludCBpLCBsbWFjO1xuLVx0aW50IGxtYWNfbnVtID0gbGUzMl90b19jcHUobWVtX2NmZy1cdTAwM2VsbWFjX251bSk7XG4tXHR1OCBhcGlfdmVyID0gaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZndydC1cdTAwM2VmdywgU1lTVEVNX0dST1VQLFxuLVx0XHRcdFx0XHQgICAgIFNIQVJFRF9NRU1fQ0ZHX0NNRCwgMCk7XG4rXHRpbnQgbG1hY19udW07XG4rXHR1OCBhcGlfdmVyO1xuK1xuK1x0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXHUwMDNjXG4rXHRcdFx0IG9mZnNldG9mZW5kKHN0cnVjdCBpd2xfc2hhcmVkX21lbV9jZmcsIGxtYWNfc21lbVsxXSksXG4rXHRcdFx0IFwiYmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemVcXG5cIikpXG4rXHRcdHJldHVybjtcbitcbitcdGxtYWNfbnVtID0gbGUzMl90b19jcHUobWVtX2NmZy1cdTAwM2VsbWFjX251bSk7XG4rXHRhcGlfdmVyID0gaXdsX2Z3X2xvb2t1cF9ub3RpZl92ZXIoZndydC1cdTAwM2VmdywgU1lTVEVNX0dST1VQLFxuK1x0XHRcdFx0XHQgIFNIQVJFRF9NRU1fQ0ZHX0NNRCwgMCk7XG4gXG4gXHQvKiBOb3RlOiBub3RpZmljYXRpb24gaGFzIDMgZW50cmllcywgYnV0IHdlIG9ubHkgZXhwZWN0IDIgKi9cbiBcdGlmIChJV0xfRldfQ0hFQ0soZndydCwgbG1hY19udW0gXHUwMDNlIEFSUkFZX1NJWkUoZndydC1cdTAwM2VzbWVtX2NmZy5sbWFjKSxcbkBAIC0zMCw3ICszOCw3IEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbiBcbiBcdGlmIChhcGlfdmVyIFx1MDAzZT0gNCBcdTAwMjZcdTAwMjZcbiBcdCAgICAhSVdMX0ZXX0NIRUNLKGZ3cnQsIGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSBcdTAwM2Mgc2l6ZW9mKCptZW1fY2ZnKSxcbi1cdFx0XHQgIFwiYmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemVcXG5cIikpIHtcbitcdFx0XHQgIFwiYmFkIHNoYXJlZCBtZW0gbm90aWZpY2F0aW9uIHNpemUgKHY0KVxcblwiKSkge1xuIFx0XHRmd3J0LVx1MDAzZXNtZW1fY2ZnLnJ4ZmlmbzJfY29udHJvbF9zaXplID1cbiBcdFx0XHRsZTMyX3RvX2NwdShtZW1fY2ZnLVx1MDAzZXJ4ZmlmbzJfY29udHJvbF9zaXplKTtcbiBcdH1cbkBAIC01Myw2ICs2MSwxMSBAQCBzdGF0aWMgdm9pZCBpd2xfcGFyc2Vfc2hhcmVkX21lbShzdHJ1Y3QgaXdsX2Z3X3J1bnRpbWUgKmZ3cnQsXG4gXHRzdHJ1Y3QgaXdsX3NoYXJlZF9tZW1fY2ZnX3YyICptZW1fY2ZnID0gKHZvaWQgKilwa3QtXHUwMDNlZGF0YTtcbiBcdGludCBpO1xuIFxuK1x0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXHUwMDNjXG4rXHRcdFx0IG9mZnNldG9mKHN0cnVjdCBpd2xfc2hhcmVkX21lbV9jZmdfdjIsIHJ4Zmlmb19hZGRyKSxcbitcdFx0XHQgXCJiYWQgc2hhcmVkIG1lbSBub3RpZmljYXRpb24gc2l6ZVxcblwiKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0ZndydC1cdTAwM2VzbWVtX2NmZy5udW1fbG1hY3MgPSAxO1xuIFxuIFx0ZndydC1cdTAwM2VzbWVtX2NmZy5udW1fdHhmaWZvX2VudHJpZXMgPSBBUlJBWV9TSVpFKG1lbV9jZmctXHUwMDNldHhmaWZvX3NpemUpO1xuQEAgLTY3LDYgKzgwLDExIEBAIHN0YXRpYyB2b2lkIGl3bF9wYXJzZV9zaGFyZWRfbWVtKHN0cnVjdCBpd2xfZndfcnVudGltZSAqZndydCxcbiBcdC8qIG5ldyBBUEkgaGFzIG1vcmUgZGF0YSwgZnJvbSByeGZpZm9fYWRkciBmaWVsZCBhbmQgb24gKi9cbiBcdGlmIChmd19oYXNfY2FwYShcdTAwMjZmd3J0LVx1MDAzZWZ3LVx1MDAzZXVjb2RlX2NhcGEsXG4gXHRcdFx0SVdMX1VDT0RFX1RMVl9DQVBBX0VYVEVORF9TSEFSRURfTUVNX0NGRykpIHtcbitcdFx0aWYgKElXTF9GV19DSEVDSyhmd3J0LCBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCkgXHUwMDNjXG4rXHRcdFx0XHQgc2l6ZW9mKCptZW1fY2ZnKSxcbitcdFx0XHRcdCBcImJhZCBzaGFyZWQgbWVtIG5vdGlmaWNhdGlvbiBzaXplIChleHRlbmQpXFxuXCIpKVxuK1x0XHRcdHJldHVybjtcbitcbiBcdFx0QlVJTERfQlVHX09OKHNpemVvZihmd3J0LVx1MDAzZXNtZW1fY2ZnLmludGVybmFsX3R4Zmlmb19zaXplKSAhPVxuIFx0XHRcdCAgICAgc2l6ZW9mKG1lbV9jZmctXHUwMDNlaW50ZXJuYWxfdHhmaWZvX3NpemUpKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLWNvbmZpZy5oXG5pbmRleCA2YTM1MzlhZDczMzE3ZS4uM2FjN2YwMDBlZGU0NzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1jb25maWcuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtY29uZmlnLmhcbkBAIC00MTUsNiArNDE1LDcgQEAgc3RydWN0IGl3bF9tYWNfY2ZnIHtcbiAgKiBAdmh0X211X21pbW9fc3VwcG9ydGVkOiBWSFQgTVUtTUlNTyBzdXBwb3J0XG4gICogQG52bV90eXBlOiBzZWUgXHUwMDI2ZW51bSBpd2xfbnZtX3R5cGVcbiAgKiBAdWhiX3N1cHBvcnRlZDogdWx0cmEgaGlnaCBiYW5kIGNoYW5uZWxzIHN1cHBvcnRlZFxuKyAqIEB1bmlpOV9zdXBwb3J0ZWQ6IFVOSUktOSBjaGFubmVscyBzdXBwb3J0ZWRcbiAgKiBAZWh0X3N1cHBvcnRlZDogRUhUIHN1cHBvcnRlZFxuICAqIEB1aHJfc3VwcG9ydGVkOiBVSFIgc3VwcG9ydGVkXG4gICogQG51bV9yYmRzOiBudW1iZXIgb2YgcmVjZWl2ZSBidWZmZXIgZGVzY3JpcHRvcnMgdG8gdXNlXG5AQCAtNDUwLDYgKzQ1MSw3IEBAIHN0cnVjdCBpd2xfcmZfY2ZnIHtcbiBcdCAgICBscF94dGFsX3dvcmthcm91bmQ6MSxcbiBcdCAgICB2aHRfbXVfbWltb19zdXBwb3J0ZWQ6MSxcbiBcdCAgICB1aGJfc3VwcG9ydGVkOjEsXG4rXHQgICAgdW5paTlfc3VwcG9ydGVkOjEsXG4gXHQgICAgZWh0X3N1cHBvcnRlZDoxLFxuIFx0ICAgIHVocl9zdXBwb3J0ZWQ6MTtcbiBcdHU4IHZhbGlkX3R4X2FudDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLW52bS1wYXJzZS5jXG5pbmRleCBkNDdiNGFlMmY0ODYzMC4uYmQ1MzUzZmRkZTgxYTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC1udm0tcGFyc2UuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtbnZtLXBhcnNlLmNcbkBAIC04NSwxNiArODUsNyBAQCBzdGF0aWMgY29uc3QgdTE2IGl3bF9udm1fY2hhbm5lbHNbXSA9IHtcbiBcdDE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1XG4gfTtcbiBcbi1zdGF0aWMgY29uc3QgdTE2IGl3bF9leHRfbnZtX2NoYW5uZWxzW10gPSB7XG4tXHQvKiAyLjQgR0h6ICovXG4tXHQxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsXG4tXHQvKiA1IEdIeiAqL1xuLVx0MzYsIDQwLCA0NCwgNDgsIDUyLCA1NiwgNjAsIDY0LCA2OCwgNzIsIDc2LCA4MCwgODQsIDg4LCA5Mixcbi1cdDk2LCAxMDAsIDEwNCwgMTA4LCAxMTIsIDExNiwgMTIwLCAxMjQsIDEyOCwgMTMyLCAxMzYsIDE0MCwgMTQ0LFxuLVx0MTQ5LCAxNTMsIDE1NywgMTYxLCAxNjUsIDE2OSwgMTczLCAxNzcsIDE4MVxuLX07XG4tXG4tc3RhdGljIGNvbnN0IHUxNiBpd2xfdWhiX252bV9jaGFubmVsc1tdID0ge1xuK3N0YXRpYyBjb25zdCB1MTYgaXdsX3VuaWk5X252bV9jaGFubmVsc1tdID0ge1xuIFx0LyogMi40IEdIeiAqL1xuIFx0MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LFxuIFx0LyogNSBHSHogKi9cbkBAIC0xMDUsMTIgKzk2LDE2IEBAIHN0YXRpYyBjb25zdCB1MTYgaXdsX3VoYl9udm1fY2hhbm5lbHNbXSA9IHtcbiBcdDEsIDUsIDksIDEzLCAxNywgMjEsIDI1LCAyOSwgMzMsIDM3LCA0MSwgNDUsIDQ5LCA1MywgNTcsIDYxLCA2NSwgNjksXG4gXHQ3MywgNzcsIDgxLCA4NSwgODksIDkzLCA5NywgMTAxLCAxMDUsIDEwOSwgMTEzLCAxMTcsIDEyMSwgMTI1LCAxMjksXG4gXHQxMzMsIDEzNywgMTQxLCAxNDUsIDE0OSwgMTUzLCAxNTcsIDE2MSwgMTY1LCAxNjksIDE3MywgMTc3LCAxODEsIDE4NSxcbi1cdDE4OSwgMTkzLCAxOTcsIDIwMSwgMjA1LCAyMDksIDIxMywgMjE3LCAyMjEsIDIyNSwgMjI5LCAyMzNcbitcdDE4OSwgMTkzLCAxOTcsIDIwMSwgMjA1LCAyMDksIDIxMywgMjE3LCAyMjEsIDIyNSwgMjI5LCAyMzMsXG4rXG4rXHQvKiBVTklJLTkgKi9cbitcdDIzNywgMjQxLCAyNDUsIDI0OSwgMjUzXG4gfTtcbiBcbiAjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTXHRcdEFSUkFZX1NJWkUoaXdsX252bV9jaGFubmVscylcbi0jZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVFx0QVJSQVlfU0laRShpd2xfZXh0X252bV9jaGFubmVscylcbi0jZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQlx0QVJSQVlfU0laRShpd2xfdWhiX252bV9jaGFubmVscylcbisjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVFx0NTFcbisjZGVmaW5lIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQlx0MTEwXG4rI2RlZmluZSBJV0xfTlZNX05VTV9DSEFOTkVMU19VTklJOVx0QVJSQVlfU0laRShpd2xfdW5paTlfbnZtX2NoYW5uZWxzKVxuICNkZWZpbmUgTlVNXzJHSFpfQ0hBTk5FTFNcdFx0MTRcbiAjZGVmaW5lIE5VTV81R0haX0NIQU5ORUxTXHRcdDM3XG4gI2RlZmluZSBGSVJTVF8yR0haX0hUX01JTlVTXHRcdDVcbkBAIC0zNTEsMTIgKzM0NiwxNSBAQCBzdGF0aWMgaW50IGl3bF9pbml0X2NoYW5uZWxfbWFwKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIFx0aW50IG51bV9vZl9jaDtcbiBcdGNvbnN0IHUxNiAqbnZtX2NoYW47XG4gXG4tXHRpZiAoY2ZnLVx1MDAzZXVoYl9zdXBwb3J0ZWQpIHtcbitcdGlmIChjZmctXHUwMDNldW5paTlfc3VwcG9ydGVkKSB7XG4rXHRcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5O1xuK1x0XHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XG4rXHR9IGVsc2UgaWYgKGNmZy1cdTAwM2V1aGJfc3VwcG9ydGVkKSB7XG4gXHRcdG51bV9vZl9jaCA9IElXTF9OVk1fTlVNX0NIQU5ORUxTX1VIQjtcbi1cdFx0bnZtX2NoYW4gPSBpd2xfdWhiX252bV9jaGFubmVscztcbitcdFx0bnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzO1xuIFx0fSBlbHNlIGlmIChjZmctXHUwMDNlbnZtX3R5cGUgPT0gSVdMX05WTV9FWFQpIHtcbiBcdFx0bnVtX29mX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUO1xuLVx0XHRudm1fY2hhbiA9IGl3bF9leHRfbnZtX2NoYW5uZWxzO1xuK1x0XHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XG4gXHR9IGVsc2Uge1xuIFx0XHRudW1fb2ZfY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMUztcbiBcdFx0bnZtX2NoYW4gPSBpd2xfbnZtX2NoYW5uZWxzO1xuQEAgLTE0NDEsNyArMTQzOSw5IEBAIGl3bF9wYXJzZV9tZWlfbnZtX2RhdGEoc3RydWN0IGl3bF90cmFucyAqdHJhbnMsIGNvbnN0IHN0cnVjdCBpd2xfcmZfY2ZnICpjZmcsXG4gXHR1OCByeF9jaGFpbnMgPSBmdy1cdTAwM2V2YWxpZF9yeF9hbnQ7XG4gXHR1OCB0eF9jaGFpbnMgPSBmdy1cdTAwM2V2YWxpZF9yeF9hbnQ7XG4gXG4tXHRpZiAoY2ZnLVx1MDAzZXVoYl9zdXBwb3J0ZWQpXG4rXHRpZiAoY2ZnLVx1MDAzZXVuaWk5X3N1cHBvcnRlZClcbitcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5KTtcbitcdGVsc2UgaWYgKGNmZy1cdTAwM2V1aGJfc3VwcG9ydGVkKVxuIFx0XHRkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCKTtcbiBcdGVsc2VcbiBcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX0VYVCk7XG5AQCAtMTUwNiw3ICsxNTA2LDkgQEAgaXdsX3BhcnNlX252bV9kYXRhKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLCBjb25zdCBzdHJ1Y3QgaXdsX3JmX2NmZyAqY2ZnLFxuIFx0dTE2IGxhcl9jb25maWc7XG4gXHRjb25zdCBfX2xlMTYgKmNoX3NlY3Rpb247XG4gXG4tXHRpZiAoY2ZnLVx1MDAzZXVoYl9zdXBwb3J0ZWQpXG4rXHRpZiAoY2ZnLVx1MDAzZXVuaWk5X3N1cHBvcnRlZClcbitcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTX1VOSUk5KTtcbitcdGVsc2UgaWYgKGNmZy1cdTAwM2V1aGJfc3VwcG9ydGVkKVxuIFx0XHRkYXRhID0ga3phbGxvY19mbGV4KCpkYXRhLCBjaGFubmVscywgSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCKTtcbiBcdGVsc2UgaWYgKGNmZy1cdTAwM2Vudm1fdHlwZSAhPSBJV0xfTlZNX0VYVClcbiBcdFx0ZGF0YSA9IGt6YWxsb2NfZmxleCgqZGF0YSwgY2hhbm5lbHMsIElXTF9OVk1fTlVNX0NIQU5ORUxTKTtcbkBAIC0xNzI3LDEyICsxNzI5LDE1IEBAIGl3bF9wYXJzZV9udm1fbWNjX2luZm8oc3RydWN0IGl3bF90cmFucyAqdHJhbnMsXG4gXHRpbnQgbWF4X251bV9jaDtcbiBcdHN0cnVjdCBpd2xfcmVnX2NhcGEgcmVnX2NhcGE7XG4gXG4tXHRpZiAoY2ZnLVx1MDAzZXVoYl9zdXBwb3J0ZWQpIHtcbitcdGlmIChjZmctXHUwMDNldW5paTlfc3VwcG9ydGVkKSB7XG4rXHRcdG1heF9udW1fY2ggPSBJV0xfTlZNX05VTV9DSEFOTkVMU19VTklJOTtcbitcdFx0bnZtX2NoYW4gPSBpd2xfdW5paTlfbnZtX2NoYW5uZWxzO1xuK1x0fSBlbHNlIGlmIChjZmctXHUwMDNldWhiX3N1cHBvcnRlZCkge1xuIFx0XHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfVUhCO1xuLVx0XHRudm1fY2hhbiA9IGl3bF91aGJfbnZtX2NoYW5uZWxzO1xuK1x0XHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XG4gXHR9IGVsc2UgaWYgKGNmZy1cdTAwM2Vudm1fdHlwZSA9PSBJV0xfTlZNX0VYVCkge1xuIFx0XHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFNfRVhUO1xuLVx0XHRudm1fY2hhbiA9IGl3bF9leHRfbnZtX2NoYW5uZWxzO1xuK1x0XHRudm1fY2hhbiA9IGl3bF91bmlpOV9udm1fY2hhbm5lbHM7XG4gXHR9IGVsc2Uge1xuIFx0XHRtYXhfbnVtX2NoID0gSVdMX05WTV9OVU1fQ0hBTk5FTFM7XG4gXHRcdG52bV9jaGFuID0gaXdsX252bV9jaGFubmVscztcbkBAIC0yMDg3LDEzICsyMDkyLDI2IEBAIHN0cnVjdCBpd2xfbnZtX2RhdGEgKml3bF9nZXRfbnZtKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIFx0c3RydWN0IGl3bF9udm1fZ2V0X2luZm9fcnNwX3YzICpyc3BfdjM7XG4gXHRib29sIHY0ID0gZndfaGFzX2FwaShcdTAwMjZmdy1cdTAwM2V1Y29kZV9jYXBhLFxuIFx0XHRcdCAgICAgSVdMX1VDT0RFX1RMVl9BUElfUkVHVUxBVE9SWV9OVk1fSU5GTyk7XG4tXHRzaXplX3QgcnNwX3NpemUgPSB2NCA/IHNpemVvZigqcnNwKSA6IHNpemVvZigqcnNwX3YzKTtcbitcdHNpemVfdCByc3Bfc2l6ZTtcbiBcdHZvaWQgKmNoYW5uZWxfcHJvZmlsZTtcbiBcbiBcdHJldCA9IGl3bF90cmFuc19zZW5kX2NtZCh0cmFucywgXHUwMDI2aGNtZCk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIFxuK1x0c3dpdGNoIChpd2xfZndfbG9va3VwX25vdGlmX3ZlcihmdywgUkVHVUxBVE9SWV9BTkRfTlZNX0dST1VQLFxuK1x0XHRcdFx0XHROVk1fR0VUX0lORk8sIDApKSB7XG4rXHRjYXNlIDU6XG4rXHRcdHJzcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcCk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSA0OlxuK1x0XHRyc3Bfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaXdsX252bV9nZXRfaW5mb19yc3BfdjQpO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHJzcF9zaXplID0gc2l6ZW9mKHN0cnVjdCBpd2xfbnZtX2dldF9pbmZvX3JzcF92Myk7XG4rXHRcdGJyZWFrO1xuK1x0fVxuK1xuIFx0aWYgKFdBUk4oaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihoY21kLnJlc3BfcGt0KSAhPSByc3Bfc2l6ZSxcbiBcdFx0IFwiSW52YWxpZCBwYXlsb2FkIGxlbiBpbiBOVk0gcmVzcG9uc2UgZnJvbSBGVyAlZFwiLFxuIFx0XHQgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihoY21kLnJlc3BfcGt0KSkpIHtcbkBAIC0yMTA3LDcgKzIxMjUsNyBAQCBzdHJ1Y3QgaXdsX252bV9kYXRhICppd2xfZ2V0X252bShzdHJ1Y3QgaXdsX3RyYW5zICp0cmFucyxcbiBcdGlmIChlbXB0eV9vdHApXG4gXHRcdElXTF9JTkZPKHRyYW5zLCBcIk9UUCBpcyBlbXB0eVxcblwiKTtcbiBcbi1cdG52bSA9IGt6YWxsb2NfZmxleCgqbnZtLCBjaGFubmVscywgSVdMX05VTV9DSEFOTkVMU19WMik7XG4rXHRudm0gPSBremFsbG9jX2ZsZXgoKm52bSwgY2hhbm5lbHMsIElXTF9OVU1fQ0hBTk5FTFNfVjMpO1xuIFx0aWYgKCFudm0pIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbiBcdFx0Z290byBvdXQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmNcbmluZGV4IDIxODVkYWRlOTVmOGNiLi4yZGY2NjQzYTVhYTgwZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3R4LmNcbkBAIC0xMTIwLDYgKzExMjAsMTAgQEAgdm9pZCBpd2xfbWxkX2hhbmRsZV90eF9yZXNwX25vdGlmKHN0cnVjdCBpd2xfbWxkICptbGQsXG4gXHRzc24gPSBsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKWFnZ19zdGF0dXMgK1xuIFx0XHRcdCAgIHR4X3Jlc3AtXHUwMDNlZnJhbWVfY291bnQpIFx1MDAyNiAweEZGRkY7XG4gXG4rXHRpZiAoSVdMX0ZXX0NIRUNLKG1sZCwgdHhxX2lkIFx1MDAzZT0gQVJSQVlfU0laRShtbGQtXHUwMDNlZndfaWRfdG9fdHhxKSxcbitcdFx0XHQgXCJJbnZhbGlkIHR4cSBpZCAlZFxcblwiLCB0eHFfaWQpKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2c2ticyk7XG4gXG4gXHQvKiB3ZSBjYW4gZnJlZSB1bnRpbCBzc24gJSBxLm5fYmQgbm90IGluY2x1c2l2ZSAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jXG5pbmRleCAzNDI5ZDlhMTBlNDIwOS4uNmIxMWZhMzJlYTVjNmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jXG5AQCAtMTUwOSw2ICsxNTA5LDEwIEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRcdGlmIChXQVJOX09OX09OQ0UodHJ1bmNhdGVkIFx1MDAzYyAwKSlcbiBcdFx0XHR0cnVuY2F0ZWQgPSAwO1xuIFxuK1x0XHQvKiB0aGlzIHdvdWxkIGJlIGEgZmlybXdhcmUgYnVnICovXG4rXHRcdGlmIChXQVJOX09OX09OQ0UocGt0c2l6ZSBcdTAwM2Mgc2l6ZW9mKCpoZHIpKSlcbitcdFx0XHRyZXR1cm47XG4rXG4gXHRcdGlmIChpZWVlODAyMTFfaXNfZGF0YShoZHItXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbiBcdFx0XHRpbnQgaGRybGVuID0gaWVlZTgwMjExX2hkcmxlbihoZHItXHUwMDNlZnJhbWVfY29udHJvbCk7XG4gXHRcdFx0aW50IGl2bGVuID0gMCwgaWN2bGVuID0gNDsgLyogYWxzbyBGQ1MgKi9cbkBAIC0xNTE3LDEwICsxNTIxLDYgQEAgc3RhdGljIHZvaWQgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnMoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0XHRpZiAoIXBrdClcbiBcdFx0XHRcdGdvdG8gcmVwb3J0O1xuIFxuLVx0XHRcdHNrYl9wdXRfZGF0YShwa3QsIHBrdGRhdGEsIGhkcmxlbik7XG4tXHRcdFx0cGt0ZGF0YSArPSBoZHJsZW47XG4tXHRcdFx0cGt0c2l6ZSAtPSBoZHJsZW47XG4tXG4gXHRcdFx0aWYgKGllZWU4MDIxMV9oYXNfcHJvdGVjdGVkKGhkci1cdTAwM2VmcmFtZV9jb250cm9sKSkge1xuIFx0XHRcdFx0LypcbiBcdFx0XHRcdCAqIFRoaXMgaXMgdW5sb2NrZWQgYW5kIHVzaW5nIGd0a19pKGMpdmxlbixcbkBAIC0xNTQ2LDYgKzE1NDYsMTcgQEAgc3RhdGljIHZvaWQgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnMoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0XHRcdHRydW5jYXRlZCA9IDA7XG4gXHRcdFx0fVxuIFxuK1x0XHRcdGlmIChJV0xfRldfQ0hFQ0sobXZtLFxuK1x0XHRcdFx0XHQgcGt0c2l6ZSBcdTAwM2M9IGhkcmxlbiArIGl2bGVuICsgaWN2bGVuLFxuK1x0XHRcdFx0XHQgXCJwa3RzaXplIGlzIHRvbyBzbWFsbCAlZFxcblwiLFxuK1x0XHRcdFx0XHQgcGt0c2l6ZSkpIHtcbitcdFx0XHRcdGtmcmVlX3NrYihwa3QpO1xuK1x0XHRcdFx0cmV0dXJuO1xuK1x0XHRcdH1cbitcbitcdFx0XHRza2JfcHV0X2RhdGEocGt0LCBwa3RkYXRhLCBoZHJsZW4pO1xuK1x0XHRcdHBrdGRhdGEgKz0gaGRybGVuO1xuK1x0XHRcdHBrdHNpemUgLT0gaGRybGVuO1xuIFx0XHRcdHBrdHNpemUgLT0gaXZsZW4gKyBpY3ZsZW47XG4gXHRcdFx0cGt0ZGF0YSArPSBpdmxlbjtcbiBcbkBAIC0yNDQ4LDEzICsyNDU5LDE1IEBAIGl3bF9tdm1fbmV0ZGV0ZWN0X3F1ZXJ5X3Jlc3VsdHMoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcbiBcdGlmIChmd19oYXNfYXBpKFx1MDAyNm12bS1cdTAwM2Vmdy1cdTAwM2V1Y29kZV9jYXBhLFxuIFx0XHQgICAgICAgSVdMX1VDT0RFX1RMVl9BUElfU0NBTl9PRkZMT0FEX0NIQU5TKSkge1xuLVx0XHRxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfbWF0Y2hfaW5mbyk7XG4gXHRcdG1hdGNoZXNfbGVuID0gc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX3Byb2ZpbGVfbWF0Y2gpICpcbiBcdFx0XHRtYXhfcHJvZmlsZXM7XG4rXHRcdHF1ZXJ5X2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8sXG4rXHRcdFx0XHQgICAgIG1hdGNoZXMpICsgbWF0Y2hlc19sZW47XG4gXHR9IGVsc2Uge1xuLVx0XHRxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZXNfcXVlcnlfdjEpO1xuIFx0XHRtYXRjaGVzX2xlbiA9IHNpemVvZihzdHJ1Y3QgaXdsX3NjYW5fb2ZmbG9hZF9wcm9maWxlX21hdGNoX3YxKSAqXG4gXHRcdFx0bWF4X3Byb2ZpbGVzO1xuK1x0XHRxdWVyeV9sZW4gPSBzaXplb2Yoc3RydWN0IGl3bF9zY2FuX29mZmxvYWRfcHJvZmlsZXNfcXVlcnlfdjEpICtcbitcdFx0XHRtYXRjaGVzX2xlbjtcbiBcdH1cbiBcbiBcdGxlbiA9IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oY21kLnJlc3BfcGt0KTtcbkBAIC0yNzU2LDcgKzI3NjksNyBAQCBzdGF0aWMgaW50IGl3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0KHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRcdFx0XHRcdCBzdHJ1Y3QgaXdsX3dvd2xhbl9zdGF0dXNfZGF0YSAqc3RhdHVzLFxuIFx0XHRcdFx0XHQgdTMyIGxlbilcbiB7XG4tXHR1MzIgZGF0YV9zaXplLCBwYWNrZXRfbGVuID0gbGUzMl90b19jcHUobm90aWYtXHUwMDNld2FrZV9wYWNrZXRfbGVuZ3RoKTtcbitcdHUzMiBkYXRhX3NpemUsIHBhY2tldF9sZW47XG4gXG4gXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKm5vdGlmKSkge1xuIFx0XHRJV0xfRVJSKG12bSwgXCJJbnZhbGlkIFdvV0xBTiB3YWtlIHBhY2tldCBub3RpZmljYXRpb24hXFxuXCIpO1xuQEAgLTI3NzUsNiArMjc4OCw3IEBAIHN0YXRpYyBpbnQgaXdsX212bV93b3dsYW5fc3RvcmVfd2FrZV9wa3Qoc3RydWN0IGl3bF9tdm0gKm12bSxcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXG4rXHRwYWNrZXRfbGVuID0gbGUzMl90b19jcHUobm90aWYtXHUwMDNld2FrZV9wYWNrZXRfbGVuZ3RoKTtcbiBcdGRhdGFfc2l6ZSA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCBpd2xfd293bGFuX3dha2VfcGt0X25vdGlmLCB3YWtlX3BhY2tldCk7XG4gXG4gXHQvKiBkYXRhX3NpemUgZ290IHRoZSBwYWRkaW5nIGZyb20gdGhlIG5vdGlmaWNhdGlvbiwgcmVtb3ZlIGl0LiAqL1xuQEAgLTI4MDcsNyArMjgyMSw4IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRpZiAoSVNfRVJSX09SX05VTEwodmlmKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8pICsgbWF0Y2hlc19sZW4pIHtcbitcdGlmIChsZW4gXHUwMDNjIG9mZnNldG9mKHN0cnVjdCBpd2xfc2Nhbl9vZmZsb2FkX21hdGNoX2luZm8sIG1hdGNoZXMpICtcbitcdFx0ICAgIG1hdGNoZXNfbGVuKSB7XG4gXHRcdElXTF9FUlIobXZtLCBcIkludmFsaWQgc2NhbiBtYXRjaCBpbmZvIG5vdGlmaWNhdGlvblxcblwiKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuY1xuaW5kZXggM2ExNGNhNWU1MTJhZTMuLjhkN2Y2MGRjZDAyNzBlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmNcbkBAIC02NDYsNyArNjQ2LDggQEAgc3RhdGljIHZvaWQgaXRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFdBUk5fT04oKnRhcmdldC1cdTAwM2VjaXBoZXIgPT0gSVdMX0xPQ0FUSU9OX0NJUEhFUl9JTlZBTElEKTtcbiB9XG4gXG4tc3RhdGljIHZvaWRcbisvKiBUaGUgdGsgYnVmZmVyIGlzIGFzc3VtZWQgdG8gYmUgZXhhY3RseSBUS18xMUFaX0xFTiBieXRlcyAqL1xuK3N0YXRpYyBpbnRcbiBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdFx0XHR1OCAqYnNzaWQsIHU4ICpjaXBoZXIsIHU4ICpobHRrLCB1OCAqdGssXG4gXHRcdFx0XHR1OCAqcnhfcG4sIHU4ICp0eF9wbiwgX19sZTMyICpmbGFncylcbkBAIC02NTYsMTIgKzY1NywxMiBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRzdHJ1Y3QgaXdsX212bV92aWYgKm12bXZpZiA9IGl3bF9tdm1fdmlmX2Zyb21fbWFjODAyMTEodmlmKTtcbiBcbiBcdGlmIChtdm12aWYtXHUwMDNlZnRtX3VucHJvdGVjdGVkKVxuLVx0XHRyZXR1cm47XG4rXHRcdHJldHVybiAwO1xuICNlbmRpZlxuIFxuIFx0aWYgKCEobGUzMl90b19jcHUoKmZsYWdzKSBcdTAwMjYgKElXTF9JTklUSUFUT1JfQVBfRkxBR1NfTk9OX1RCIHxcbiBcdFx0ICAgICAgIElXTF9JTklUSUFUT1JfQVBfRkxBR1NfVEIpKSlcbi1cdFx0cmV0dXJuO1xuK1x0XHRyZXR1cm4gMDtcbiBcbiBcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2bXZtLVx1MDAzZW11dGV4KTtcbiBcbkBAIC02NzksMTQgKzY4MCwzMSBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdGlmICh2aWYtXHUwMDNlY2ZnLmFzc29jIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIW1lbWNtcCh2aWYtXHUwMDNlYnNzX2NvbmYuYnNzaWQsIGJzc2lkLCBFVEhfQUxFTikpIHtcbiBcdFx0XHRzdHJ1Y3QgaXdsX212bV9mdG1faXRlcl9kYXRhIHRhcmdldDtcbitcdFx0XHR1MzIga2V5X2xlbjtcbiBcbiBcdFx0XHR0YXJnZXQuYnNzaWQgPSBic3NpZDtcbiBcdFx0XHR0YXJnZXQuY2lwaGVyID0gY2lwaGVyO1xuIFx0XHRcdHRhcmdldC50ayA9IE5VTEw7XG4gXHRcdFx0aWVlZTgwMjExX2l0ZXJfa2V5cyhtdm0tXHUwMDNlaHcsIHZpZiwgaXRlciwgXHUwMDI2dGFyZ2V0KTtcbiBcbi1cdFx0XHRpZiAoIVdBUk5fT04oIXRhcmdldC50aykpXG4tXHRcdFx0XHRtZW1jcHkodGssIHRhcmdldC50aywgVEtfMTFBWl9MRU4pO1xuK1x0XHRcdGlmIChXQVJOX09OKCF0YXJnZXQudGspKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRcdFx0c3dpdGNoICgqdGFyZ2V0LmNpcGhlcikge1xuK1x0XHRcdGNhc2UgSVdMX0xPQ0FUSU9OX0NJUEhFUl9DQ01QXzEyODpcbitcdFx0XHRjYXNlIElXTF9MT0NBVElPTl9DSVBIRVJfR0NNUF8xMjg6XG4rXHRcdFx0XHRrZXlfbGVuID0gV0xBTl9LRVlfTEVOX0NDTVA7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHRjYXNlIElXTF9MT0NBVElPTl9DSVBIRVJfR0NNUF8yNTY6XG4rXHRcdFx0XHRrZXlfbGVuID0gV0xBTl9LRVlfTEVOX0dDTVBfMjU2O1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0ZGVmYXVsdDpcbitcdFx0XHRcdFdBUk5fT04oMSk7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXG4rXHRcdFx0bWVtc2V0KHRrLCAwLCBUS18xMUFaX0xFTik7XG4rXHRcdFx0bWVtY3B5KHRrLCB0YXJnZXQudGssIGtleV9sZW4pO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdG1lbWNweSh0aywgZW50cnktXHUwMDNldGssIHNpemVvZihlbnRyeS1cdTAwM2V0aykpO1xuIFx0XHR9XG5AQCAtNjk1LDggKzcxMywxMCBAQCBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdG1lbWNweSh0eF9wbiwgZW50cnktXHUwMDNldHhfcG4sIHNpemVvZihlbnRyeS1cdTAwM2V0eF9wbikpO1xuIFxuIFx0XHRGVE1fU0VUX0ZMQUcoU0VDVVJFRCk7XG4tXHRcdHJldHVybjtcbitcdFx0cmV0dXJuIDA7XG4gXHR9XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludFxuQEAgLTcwOCwxMiArNzI4LDExIEBAIGl3bF9tdm1fZnRtX3B1dF90YXJnZXRfdjcoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKG12bSwgdmlmLCB0YXJnZXQtXHUwMDNlYnNzaWQsXG4tXHRcdFx0XHRcdFx1MDAyNnRhcmdldC1cdTAwM2VjaXBoZXIsIHRhcmdldC1cdTAwM2VobHRrLFxuLVx0XHRcdFx0XHR0YXJnZXQtXHUwMDNldGssIHRhcmdldC1cdTAwM2VyeF9wbixcbi1cdFx0XHRcdFx0dGFyZ2V0LVx1MDAzZXR4X3BuLFxuLVx0XHRcdFx0XHRcdTAwMjZ0YXJnZXQtXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcbi1cdHJldHVybiBlcnI7XG4rXHRyZXR1cm4gaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LVx1MDAzZWJzc2lkLFxuK1x0XHRcdFx0XHQgICAgICBcdTAwMjZ0YXJnZXQtXHUwMDNlY2lwaGVyLCB0YXJnZXQtXHUwMDNlaGx0ayxcbitcdFx0XHRcdFx0ICAgICAgdGFyZ2V0LVx1MDAzZXRrLCB0YXJnZXQtXHUwMDNlcnhfcG4sXG4rXHRcdFx0XHRcdCAgICAgIHRhcmdldC1cdTAwM2V0eF9wbixcbitcdFx0XHRcdFx0ICAgICAgXHUwMDI2dGFyZ2V0LVx1MDAzZWluaXRpYXRvcl9hcF9mbGFncyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaXdsX212bV9mdG1fc3RhcnRfdjExKHN0cnVjdCBpd2xfbXZtICptdm0sXG5AQCAtODgxLDExICs5MDAsMTMgQEAgaXdsX212bV9mdG1fcHV0X3RhcmdldF92MTAoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdGl3bF9tdm1fZnRtX3NldF90YXJnZXRfZmxhZ3MobXZtLCBwZWVyLCBcdTAwMjZ0YXJnZXQtXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcbiBcdGl3bF9tdm1fZnRtX3NldF9zdGEobXZtLCB2aWYsIHBlZXIsIFx1MDAyNnRhcmdldC1cdTAwM2VzdGFfaWQsXG4gXHRcdFx0ICAgIFx1MDAyNnRhcmdldC1cdTAwM2Vpbml0aWF0b3JfYXBfZmxhZ3MpO1xuLVx0aXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZyhtdm0sIHZpZiwgdGFyZ2V0LVx1MDAzZWJzc2lkLFxuLVx0XHRcdFx0XHRcdTAwMjZ0YXJnZXQtXHUwMDNlY2lwaGVyLCB0YXJnZXQtXHUwMDNlaGx0ayxcbi1cdFx0XHRcdFx0dGFyZ2V0LVx1MDAzZXRrLCB0YXJnZXQtXHUwMDNlcnhfcG4sXG4tXHRcdFx0XHRcdHRhcmdldC1cdTAwM2V0eF9wbixcbi1cdFx0XHRcdFx0XHUwMDI2dGFyZ2V0LVx1MDAzZWluaXRpYXRvcl9hcF9mbGFncyk7XG4rXHRyZXQgPSBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nKG12bSwgdmlmLCB0YXJnZXQtXHUwMDNlYnNzaWQsXG4rXHRcdFx0XHRcdCAgICAgIFx1MDAyNnRhcmdldC1cdTAwM2VjaXBoZXIsIHRhcmdldC1cdTAwM2VobHRrLFxuK1x0XHRcdFx0XHQgICAgICB0YXJnZXQtXHUwMDNldGssIHRhcmdldC1cdTAwM2VyeF9wbixcbitcdFx0XHRcdFx0ICAgICAgdGFyZ2V0LVx1MDAzZXR4X3BuLFxuK1x0XHRcdFx0XHQgICAgICBcdTAwMjZ0YXJnZXQtXHUwMDNlaW5pdGlhdG9yX2FwX2ZsYWdzKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4gXG4gXHRpMnJfbWF4X3N0cyA9IElXTF9NVk1fRlRNX0kyUl9NQVhfU1RTIFx1MDAzZSAxID8gMSA6XG4gXHRcdElXTF9NVk1fRlRNX0kyUl9NQVhfU1RTO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jXG5pbmRleCA2ZTUwN2Q2ZGNkZDJhMS4uZmE1MjNiZTkxZDhhZDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdy5jXG5AQCAtOTY0LDEyICs5NjQsMjIgQEAgaW50IGl3bF9tdm1fZ2V0X3Nhcl9nZW9fcHJvZmlsZShzdHJ1Y3QgaXdsX212bSAqbXZtKVxuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuK1x0aWYgKElXTF9GV19DSEVDSyhtdm0sXG4rXHRcdFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4oY21kLnJlc3BfcGt0KSAhPVxuK1x0XHRcdCBzaXplb2YoKnJlc3ApLFxuK1x0XHRcdCBcIldyb25nIHNpemUgZm9yIGl3bF9nZW9fdHhfcG93ZXJfcHJvZmlsZXNfcmVzcDogJWRcXG5cIixcbitcdFx0XHQgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihjbWQucmVzcF9wa3QpKSkge1xuK1x0XHRyZXQgPSAtRUlPO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbiBcdHJlc3AgPSAodm9pZCAqKWNtZC5yZXNwX3BrdC1cdTAwM2VkYXRhO1xuIFx0cmV0ID0gbGUzMl90b19jcHUocmVzcC1cdTAwM2Vwcm9maWxlX2lkeCk7XG4gXG4gXHRpZiAoV0FSTl9PTihyZXQgXHUwMDNlIEJJT1NfR0VPX01BWF9QUk9GSUxFX05VTSkpXG4gXHRcdHJldCA9IC1FSU87XG4gXG4rb3V0OlxuIFx0aXdsX2ZyZWVfcmVzcChcdTAwMjZjbWQpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcHRwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9wdHAuY1xuaW5kZXggZjM5ZWI0ODg2NGViNGIuLjQ5ZGNiMTM4ODAwN2JjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3B0cC5jXG5AQCAtMSw2ICsxLDYgQEBcbiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbiAvKlxuLSAqIENvcHlyaWdodCAoQykgMjAyMSAtIDIwMjMsIDIwMjUgSW50ZWwgQ29ycG9yYXRpb25cbisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgLSAyMDIzLCAyMDI1LTIwMjYgSW50ZWwgQ29ycG9yYXRpb25cbiAgKi9cbiBcbiAjaW5jbHVkZSBcIm12bS5oXCJcbkBAIC0xMjEsNiArMTIxLDggQEAgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZncoc3RydWN0IGl3bF9tdm0gKm12bSwgdTMyICpncDIsIHU2NCAqc3lzX3RpbWUpXG4gXHQqc3lzX3RpbWUgPSAodTY0KWxlMzJfdG9fY3B1KHJlc3AtXHUwMDNlcGxhdGZvcm1fdGltZXN0YW1wX2hpKSBcdTAwM2NcdTAwM2MgMzIgfFxuIFx0XHRsZTMyX3RvX2NwdShyZXNwLVx1MDAzZXBsYXRmb3JtX3RpbWVzdGFtcF9sbyk7XG4gXG4rXHRpd2xfZnJlZV9yZXNwKFx1MDAyNmNtZCk7XG4rXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xuaW5kZXggZGM2OWM3MWZhYTc2Y2EuLmQzYzJmZTgzMDQ3NzdiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdHguY1xuQEAgLTE1NDQsNiArMTU0NCwxNyBAQCBzdGF0aWMgaW5saW5lIHUzMiBpd2xfbXZtX2dldF9zY2Rfc3NuKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRyZXR1cm4gdmFsIFx1MDAyNiAweEZGRjtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBzaXplX3QgaXdsX212bV90eF9yZXNwX21pbl9sZW4oc3RydWN0IGl3bF9tdm0gKm12bSxcbitcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgaXdsX3R4X3Jlc3AgKnR4X3Jlc3ApXG4re1xuK1x0c3RydWN0IGFnZ190eF9zdGF0dXMgKmFnZ19zdGF0dXMgPVxuK1x0XHRpd2xfbXZtX2dldF9hZ2dfc3RhdHVzKG12bSwgdHhfcmVzcCk7XG4rXG4rXHQvKiBUaGUgYWdncmVnYXRlIHJlc3BvbnNlIGVuZHMgd2l0aCBhIHRyYWlsaW5nIFNDRCBTU04gX19sZTMyIHdvcmQuICovXG4rXHRyZXR1cm4gKHU4ICopKGFnZ19zdGF0dXMgKyB0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50KSAtICh1OCAqKXR4X3Jlc3AgK1xuK1x0XHRzaXplb2YoX19sZTMyKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgaXdsX212bV9yeF90eF9jbWRfc2luZ2xlKHN0cnVjdCBpd2xfbXZtICptdm0sXG4gXHRcdFx0XHQgICAgIHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QpXG4ge1xuQEAgLTE4NDcsNiArMTg1OCw5IEBAIHN0YXRpYyB2b2lkIGl3bF9tdm1fcnhfdHhfY21kX2FnZyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxuIFx0aW50IHF1ZXVlID0gU0VRX1RPX1FVRVVFKHNlcXVlbmNlKTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGE7XG4gXG4rXHRpZiAoV0FSTl9PTl9PTkNFKGl3bF9tdm1faGFzX25ld190eF9hcGkobXZtKSkpXG4rXHRcdHJldHVybjtcbitcbiBcdGlmIChXQVJOX09OX09OQ0UocXVldWUgXHUwMDNjIElXTF9NVk1fRFFBX01JTl9EQVRBX1FVRVVFIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAocXVldWUgIT0gSVdMX01WTV9EUUFfQlNTX0NMSUVOVF9RVUVVRSkpKVxuIFx0XHRyZXR1cm47XG5AQCAtMTg4MSw2ICsxODk1LDI2IEBAIHZvaWQgaXdsX212bV9yeF90eF9jbWQoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4ge1xuIFx0c3RydWN0IGl3bF9yeF9wYWNrZXQgKnBrdCA9IHJ4Yl9hZGRyKHJ4Yik7XG4gXHRzdHJ1Y3QgaXdsX3R4X3Jlc3AgKnR4X3Jlc3AgPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuK1x0c2l6ZV90IG1pbl9sZW47XG4rXG4rXHRpZiAoSVdMX0ZXX0NIRUNLKG12bSwgIXR4X3Jlc3AtXHUwMDNlZnJhbWVfY291bnQsXG4rXHRcdFx0IFwiaW52YWxpZCBUWF9DTUQgZnJhbWVfY291bnQgJXVcXG5cIixcbitcdFx0XHQgdHhfcmVzcC1cdTAwM2VmcmFtZV9jb3VudCkpXG4rXHRcdHJldHVybjtcbitcbitcdGlmIChJV0xfRldfQ0hFQ0sobXZtLFxuK1x0XHRcdCBpd2xfbXZtX2hhc19uZXdfdHhfYXBpKG12bSkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0IHR4X3Jlc3AtXHUwMDNlZnJhbWVfY291bnQgIT0gMSxcbitcdFx0XHQgXCJpbnZhbGlkIFRYX0NNRCBmcmFtZV9jb3VudCAldSBmb3IgbmV3IFRYIEFQSVxcblwiLFxuK1x0XHRcdCB0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50KSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0bWluX2xlbiA9IGl3bF9tdm1fdHhfcmVzcF9taW5fbGVuKG12bSwgdHhfcmVzcCk7XG4rXHRpZiAoSVdMX0ZXX0NIRUNLKG12bSwgaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpIFx1MDAzYyBtaW5fbGVuLFxuK1x0XHRcdCBcImludmFsaWQgVFhfQ01EIGxlbiAldSAoZnJhbWVfY291bnQgJXUsIG1pbiAlenUpXFxuXCIsXG4rXHRcdFx0IGl3bF9yeF9wYWNrZXRfcGF5bG9hZF9sZW4ocGt0KSwgdHhfcmVzcC1cdTAwM2VmcmFtZV9jb3VudCxcbitcdFx0XHQgbWluX2xlbikpXG4rXHRcdHJldHVybjtcbiBcbiBcdGlmICh0eF9yZXNwLVx1MDAzZWZyYW1lX2NvdW50ID09IDEpXG4gXHRcdGl3bF9tdm1fcnhfdHhfY21kX3NpbmdsZShtdm0sIHBrdCk7XG5AQCAtMjEwMCw4ICsyMTM0LDE0IEBAIHZvaWQgaXdsX212bV9yeF9iYV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4YilcbiBcdFx0XHRpZiAodGlkID09IElXTF9NR01UX1RJRClcbiBcdFx0XHRcdHRpZCA9IElXTF9NQVhfVElEX0NPVU5UO1xuIFxuK1x0XHRcdGlmIChJV0xfRldfQ0hFQ0sobXZtLCB0aWQgXHUwMDNlPVxuK1x0XHRcdFx0XHQgQVJSQVlfU0laRShtdm1zdGEtXHUwMDNldGlkX2RhdGEpLFxuK1x0XHRcdFx0XHQgXCJpbnZhbGlkIFRJRCAlZCBpbiBjb21wcmVzc2VkIEJBXFxuXCIsXG4rXHRcdFx0XHRcdCB0aWQpKVxuK1x0XHRcdFx0Y29udGludWU7XG4rXG4gXHRcdFx0aWYgKG12bXN0YSlcbi1cdFx0XHRcdG12bXN0YS1cdTAwM2V0aWRfZGF0YVtpXS5scV9jb2xvciA9IGxxX2NvbG9yO1xuK1x0XHRcdFx0bXZtc3RhLVx1MDAzZXRpZF9kYXRhW3RpZF0ubHFfY29sb3IgPSBscV9jb2xvcjtcbiBcbiBcdFx0XHRpd2xfbXZtX3R4X3JlY2xhaW0obXZtLCBzdGFfaWQsIHRpZCxcbiBcdFx0XHRcdFx0ICAgKGludCkobGUxNl90b19jcHUoYmFfdGZkLVx1MDAzZXFfbnVtKSksXG5AQCAtMjEyMSw2ICsyMTYxLDkgQEAgdm9pZCBpd2xfbXZtX3J4X2JhX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxuIFx0YmFfbm90aWYgPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuIFx0c3RhX2lkID0gYmFfbm90aWYtXHUwMDNlc3RhX2lkO1xuIFx0dGlkID0gYmFfbm90aWYtXHUwMDNldGlkO1xuK1x0aWYgKElXTF9GV19DSEVDSyhtdm0sIHRpZCBcdTAwM2U9IEFSUkFZX1NJWkUobXZtc3RhLVx1MDAzZXRpZF9kYXRhKSxcbitcdFx0XHQgXCJpbnZhbGlkIFRJRCAlZCBpbiBCQSBub3RpZlxcblwiLCB0aWQpKVxuK1x0XHRyZXR1cm47XG4gXHQvKiBcImZsb3dcIiBjb3JyZXNwb25kcyB0byBUeCBxdWV1ZSAqL1xuIFx0dHhxID0gbGUxNl90b19jcHUoYmFfbm90aWYtXHUwMDNlc2NkX2Zsb3cpO1xuIFx0LyogXCJzc25cIiBpcyBzdGFydCBvZiBibG9jay1hY2sgVHggd2luZG93LCBjb3JyZXNwb25kcyB0byBpbmRleFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvcGNpZS9jdHh0LWluZm8uY1xuaW5kZXggZDVlYjg5NTE0NGVmYzkuLjdmODg2MjAwZDY5MzMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9wY2llL2N0eHQtaW5mby5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL3BjaWUvY3R4dC1pbmZvLmNcbkBAIC0xLDcgKzEsNyBAQFxuIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuIC8qXG4gICogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIERldXRzY2hsYW5kIEdtYkhcbi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNSBJbnRlbCBDb3Jwb3JhdGlvblxuKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI2IEludGVsIENvcnBvcmF0aW9uXG4gICovXG4gI2luY2x1ZGUgXCJpd2wtdHJhbnMuaFwiXG4gI2luY2x1ZGUgXCJpd2wtZmguaFwiXG5AQCAtOTksNiArOTksMTEgQEAgaW50IGl3bF9wY2llX2luaXRfZndfc2VjKHN0cnVjdCBpd2xfdHJhbnMgKnRyYW5zLFxuIFx0LyogYWRkIDIgZHVlIHRvIHNlcGFyYXRvcnMgKi9cbiBcdHBhZ2luZ19jbnQgPSBpd2xfcGNpZV9nZXRfbnVtX3NlY3Rpb25zKGZ3LCBsbWFjX2NudCArIHVtYWNfY250ICsgMik7XG4gXG4rXHRpZiAoV0FSTl9PTihsbWFjX2NudCBcdTAwM2UgQVJSQVlfU0laRShjdHh0X2RyYW0tXHUwMDNlbG1hY19pbWcpIHx8XG4rXHRcdCAgICB1bWFjX2NudCBcdTAwM2UgQVJSQVlfU0laRShjdHh0X2RyYW0tXHUwMDNldW1hY19pbWcpIHx8XG4rXHRcdCAgICBwYWdpbmdfY250IFx1MDAzZSBBUlJBWV9TSVpFKGN0eHRfZHJhbS1cdTAwM2V2aXJ0dWFsX2ltZykpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdGRyYW0tXHUwMDNlZncgPSBremFsbG9jX29ianMoKmRyYW0tXHUwMDNlZncsIHVtYWNfY250ICsgbG1hY19jbnQpO1xuIFx0aWYgKCFkcmFtLVx1MDAzZWZ3KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjE5OjQ4LjIyNjU1NzM5M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMjc3NTI2MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgaXdsd2lmaSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggZm9yIHRoZSBgaXdsd2lmaWAgZHJpdmVyLCB3aGljaCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBjb3JlIGNvbXBvbmVudCBvZiBMaW51eCBrZXJuZWwgd2lyZWxlc3MgbmV0d29ya2luZywgc3BlY2lmaWNhbGx5IGZvciBJbnRlbCdzIFdpLUZpIGFkYXB0ZXJzLiBUaGUgc2hlZXIgbnVtYmVyIG9mIGZpbGVzIHRvdWNoZWQgaXMgdGhlIGZpcnN0IGluZGljYXRvciB0aGF0IHRoaXMgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UsIGltcGFjdGluZyBhIHdpZGUgcmFuZ2Ugb2YgZnVuY3Rpb25hbGl0aWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGdpdmVuIGl0cyBjbG9zZSBpbnRlcmFjdGlvbiB3aXRoIGJvdGggaGFyZHdhcmUgYW5kIGZpcm13YXJlLlxuXG5Mb29raW5nIGF0IHRoZSBmaWxlcywgd2UncmUgdGFsa2luZyBhYm91dCBldmVyeXRoaW5nIGZyb20gUkYgY29uZmlndXJhdGlvbiAoYHJmLXBlLmNgKSwgTlZNIChub24tdm9sYXRpbGUgbWVtb3J5KSBwYXJzaW5nIGFuZCBoYW5kbGluZyAoYG52bS1yZWcuaGAsIGBwbnZtLmNgLCBgaXdsLW52bS1wYXJzZS5jYCwgYW5kIHNvIG9uKSwgcmVndWxhdG9yeSBkb21haW4gaGFuZGxpbmcgKGByZWd1bGF0b3J5LmNgKSwgc2hhcmVkIG1lbW9yeSBtYW5hZ2VtZW50IChgc21lbS5jYCksIE11bHRpY2FzdC9NVk0gYW5kIFRYL1JYIGRhdGEgcHJvY2Vzc2luZyAoYHR4LmNgLCBgZDMuY2AsIGBmdG0taW5pdGlhdG9yLmNgLCBgZncuY2AsIGBwdHAuY2AsIGB0eC5jYCwgYGN0eHQtaW5mby5jYCksIGFuZCBjb3JlIGRyaXZlciBjb25maWd1cmF0aW9uIChgaXdsLWNvbmZpZy5oYCkuIFRoaXMgdG91Y2hlcyBhIGxvdCBvZiBzdXJmYWNlIGFyZWEhXG5cblRoZSBjaGFuZ2VzIHRoZW1zZWx2ZXMgYXJlIGludGVyZXN0aW5nLiBUaGUgYWRkaXRpb24gb2YgYHVuaWk5X3N1cHBvcnRlZGAgaW4gdGhlIFJGIGFuZCBNQUMgY29uZmlndXJhdGlvbnMgaGludHMgYXQgbmV3IGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvciBzdXBwb3J0IGZvciB1cGRhdGVkIHN0YW5kYXJkcy4gTmV3IGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gTlZNIGRhdGEgc3RydWN0dXJlcyAoYElXTF9OVU1fQ0hBTk5FTFNfVjNgLCBgaXdsX252bV9nZXRfaW5mb19yc3BfdjRgIGV0Yy4pIHN1Z2dlc3QgZXhwYW5kZWQgTlZNIGRhdGEgaGFuZGxpbmcgYW5kIHBvdGVudGlhbGx5IG5ldyByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbi5cblxuQ3J1Y2lhbGx5LCB0aGUgbWVudGlvbnMgb2YgYWRkZWQgYm91bmRzIGNoZWNrcyBhbmQgcGF5bG9hZCBsZW5ndGggY2hlY2tzIGZvciBmaXJtd2FyZSBjb21tdW5pY2F0aW9ucyBhcmUgaHVnZS4gVGhpcyBpcyBleGFjdGx5IHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgZnV6emVycyBsb3ZlIHRvIHRhcmdldC4gVGhlc2UgY2hlY2tzIHJlcHJlc2VudCBhcmVhcyB3aGVyZSBpbnB1dCB2YWxpZGF0aW9uIGNvdWxkIGJlIGltcHJvdmVkLCBpbmNyZWFzaW5nIHRoZSBwb3RlbnRpYWwgZm9yIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIG9yIG90aGVyIGV4cGxvaXRhYmxlIGNvbmRpdGlvbnMuIFRoZSBidWcgZml4ZXMsIHNwZWNpZmljYWxseSB0aGUgb25lcyByZWxhdGVkIHRvIG1lbW9yeSBsZWFrcyBhbmQgaW5jb3JyZWN0IGRhdGEgY29waWVzICggYGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0YCwgYGl3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3YCwgYGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdgLCBgaXdsX212bV9yeF90eF9jbWRgLCBgaXdsX212bV9yeF9iYV9ub3RpZmApLCBoaWdobGlnaHQgYXJlYXMgd2hlcmUgc3VidGxlIHByb2dyYW1taW5nIGVycm9ycyBjb3VsZCBsZWFkIHRvIHNlcmlvdXMgY29uc2VxdWVuY2VzLiBUaGVzZSBhcmUgZ3JlYXQgdGFyZ2V0cyB0byBleHBsb2l0LlxuXG5Tbywgd2hlcmUgZG8gd2UgZm9jdXMgdGhlIGZ1enplcj8gTGV0J3MgY29tcGlsZSBhIGxpc3Qgb2YgaW50ZXJlc3RpbmcgZnVuY3Rpb25zIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IHRoZSBwYXRjaDogYGl3bF9wbnZtX2NvbXBsZXRlX2ZuYCwgYGl3bF9hZGRfbWNjX3RvX3Rhc19ibG9ja19saXN0YCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwYCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtYCwgYGl3bF9pbml0X2NoYW5uZWxfbWFwYCwgYGl3bF9wYXJzZV9tZWlfbnZtX2RhdGFgLCBgaXdsX3BhcnNlX252bV9kYXRhYCwgYGl3bF9wYXJzZV9udm1fbWNjX2luZm9gLCBgaXdsX2dldF9udm1gLCBgaXdsX21sZF9oYW5kbGVfdHhfcmVzcF9ub3RpZmAsIGBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29uc2AsIGBpd2xfbXZtX25ldGRldGVjdF9xdWVyeV9yZXN1bHRzYCwgYGl3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0YCwgYGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyYCwgYGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdgLCBgaXdsX212bV9mdG1fcHV0X3RhcmdldF92N2AsIGBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3YxMGAsIGBpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGVgLCBgaXdsX212bV9nZXRfY3Jvc3N0aW1lc3RhbXBfZndgLCBgaXdsX212bV9yeF90eF9jbWRfYWdnYCwgYGl3bF9tdm1fcnhfdHhfY21kYCwgYGl3bF9tdm1fcnhfYmFfbm90aWZgLCBgaXdsX3BjaWVfaW5pdF9md19zZWNgLlxuXG5CZWZvcmUgd2UgZXZlbiBzdGFydCBmdXp6aW5nLCBsZXQncyB2ZXJpZnkgdGhhdCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLiBXZSdyZSBsb29raW5nIGF0IGBJV0xXSUZJYCwgYElXTE1WTWAgZm9yIHN1cmUuIFBvdGVudGlhbGx5IGBJV0xNRUlgIHRvby4gVGhlIGZ1enppbmcgc2V0dXAgd2lsbCBuZWVkIHRvIGhhdmUgdGhlc2UgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2MTYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6MjA6MDEuNTA0MDg2NzE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjMzODg4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMV0lGSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTg0PWNvbmZpZyBJV0xNTERcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy05NC0jIGRvbid0IGNhbGwgaXQgX01PRFVMRSAtLSB3aWxsIGNvbmZ1c2UgS2NvbmZpZy9maXhkZXAvLi4uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjk1OmNvbmZpZyBJV0xXSUZJX09QTU9ERV9NT0RVTEFSXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk2LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xMDU9bWVudSBcXFwiRGVidWdnaW5nIE9wdGlvbnNcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTA3OmNvbmZpZyBJV0xXSUZJX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEwOC1cXHRib29sIFxcXCJFbmFibGUgZnVsbCBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBpd2x3aWZpIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzMTpjb25maWcgSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMi1cXHRib29sIFxcXCJpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjEzOTpjb25maWcgSVdMV0lGSV9ERVZJQ0VfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNDAtXFx0Ym9vbCBcXFwiaXdsd2lmaSBkZXZpY2UgYWNjZXNzIHRyYWNpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjIwOjAxLjY2NjQzMzg5NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MTMxODc3NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgSW50ZWwgV2lyZWxlc3MgRHJpdmVycycgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlc2UgSW50ZWwgd2lyZWxlc3MgZHJpdmVycyBhcmUgY29uZmlndXJlZCwgc3BlY2lmaWNhbGx5IGZvciB0aGUgTXVsdGktVmlydHVhbCBNYWNoaW5lIChgSVdMTVZNYCkgYW5kIHRoZSBNRUkgKE1hbmFnZW1lbnQgRW5naW5lIEludGVyZmFjZSkgZmVhdHVyZXMgKGBJV0xNRUlgKS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyB0aGV5J3JlIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgdGhlc2Ugc29ydHMgb2YgY29uZmlndXJhdGlvbnMuIEkgc2hvdWxkIGZpbmQgYElXTE1WTWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL0tjb25maWdgIGFuZCBgSVdMTUVJYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tZWkvS2NvbmZpZ2AuIExldCBtZSBnbyBjaGVjayB0aG9zZSBmaWxlcyBhbmQgY29uZmlybSBteSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBoZWxwIG1lIHRvIGNvbnRleHR1YWxpemUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBwcm9jZWVkIGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDAwLCJPdXRwdXRUb2tlbnMiOjgyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6MjA6MDUuMTc5NjIzOTE4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NzMzMjQ4NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElXTE1WTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyMDowNS44MjY5NzIzNTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExODU3MDE4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVdMTUVJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWVpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjIwOjA1LjkzODg0NDczMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDY4MzE3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgSW50ZWwgV2lyZWxlc3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEludGVsIHdpcmVsZXNzIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYGl3bHdpZmlgIG1vZHVsZXMuIFRoZSBlYXNpZXN0IHdheSB0byBnZXQgYW4gaW5pdGlhbCBvdmVydmlldyBpcyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcgZmlsZXMuIEknbSBnb2luZyB0byBzZWFyY2ggZm9yIHNvbWV0aGluZyBzaW1wbGUgYW5kIHRhcmdldGVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IHNlY3Rpb25zIHF1aWNrbHkuIExldCdzIHN0YXJ0IHdpdGggYSBnZW5lcmFsIHNlYXJjaCBmb3IgYGNvbmZpZyBJV0xgLCBmb2N1c2luZyBvbiB0aG9zZSBjb25maWd1cmF0aW9uIGZyYWdtZW50cy4gSSdsbCBzZWFyY2ggYm90aCB0aGUgdG9wLWxldmVsIGBpd2x3aWZpYCBkaXJlY3RvcnkncyBgS2NvbmZpZ2AgYW5kLCBzaW5jZSBpdCBoYXMgZ3Jvd24sIGFsc28gdGhlIGBtdm1gIHN1Yi1kaXJlY3RvcnkncyBgS2NvbmZpZ2AgdG8gY292ZXIgYWxsIG9mIHRoZSBtb2R1bGVzIHRoYXQgbWlnaHQgYmUgaW1wYWN0ZWQgYnkgbXkgY29uZmlndXJhdGlvbiBvciB0ZXN0aW5nLiBIb3BlZnVsbHksIHRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGJhc2UgdG8gc3RhcnQgd2l0aCwgcmV2ZWFsaW5nIHRoZSBtYWluIGtub2JzIEkgY2FuIHR3ZWFrIGFuZCB0aGUgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlbS4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgdG8gYnVpbGQgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIHdob2xlIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzczNCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyMDowOS41NDU2NzkyNzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAzMTg3MjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJV0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjI6Y29uZmlnIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgV2lyZWxlc3MgV2lGaSBOZXh0IEdlbiBBR04gLSBXaXJlbGVzcy1OL0FkdmFuY2VkLU4vVWx0aW1hdGUtTiAoaXdsd2lmaSkgXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTQ3PWlmIElXTFdJRklcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjQ5OmNvbmZpZyBJV0xXSUZJX0tVTklUX1RFU1RTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTUwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnOjU4OmNvbmZpZyBJV0xXSUZJX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctNTktXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo2Njpjb25maWcgSVdMRFZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTY3LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIERWTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo3NDpjb25maWcgSVdMTVZNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTc1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1WTSBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzo4NDpjb25maWcgSVdMTUxEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBXaXJlbGVzcyBXaUZpIE1MRCBGaXJtd2FyZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTk0LSMgZG9uJ3QgY2FsbCBpdCBfTU9EVUxFIC0tIHdpbGwgY29uZnVzZSBLY29uZmlnL2ZpeGRlcC8uLi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6OTU6Y29uZmlnIElXTFdJRklfT1BNT0RFX01PRFVMQVJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctOTYtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEwNT1tZW51IFxcXCJEZWJ1Z2dpbmcgT3B0aW9uc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxMDc6Y29uZmlnIElXTFdJRklfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTA4LVxcdGJvb2wgXFxcIkVuYWJsZSBmdWxsIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGl3bHdpZmkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMxOmNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTMyLVxcdGJvb2wgXFxcIml3bHdpZmkgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTM5OmNvbmZpZyBJV0xXSUZJX0RFVklDRV9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTE0MC1cXHRib29sIFxcXCJpd2x3aWZpIGRldmljZSBhY2Nlc3MgdHJhY2luZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZz0xNTg9ZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZzoxNjA6Y29uZmlnIElXTE1FSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIkludGVsIE1hbmFnZW1lbnQgRW5naW5lIGNvbW11bmljYXRpb24gb3ZlciBXTEFOXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyMDowOS43NDg4NzI4OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTI0MTIxMjI5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgSVdsd2lmaSBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBJbnRlbCB3aXJlbGVzcyBkcml2ZXIsIGBpd2x3aWZpYC4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFwcGVhciB0byBiZSBgSVdMV0lGSWAsIGBJV0xNVk1gLCBhbmQgYElXTE1MRGAuICBUaGUgcGF0Y2ggdG91Y2hlcyBmaWxlcyBpbiBgbXZtL2AsIGBtbGQvYCwgYGZ3L2AsIGBwY2llL2AsIGFuZCBgY2ZnL2AsIHNvIGl0J3MgYSBmYWlybHkgd2lkZXNwcmVhZCBtb2RpZmljYXRpb24uICBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgYWRkZWQgb3IgbW9kaWZpZWQgYW5kIHNlZSBpZiB0aGV5J3JlIHdvcnRoIGZ1enppbmcuXG5cbkkndmUgaWRlbnRpZmllZCB0aGVzZSBmdW5jdGlvbnMgYXMgcG90ZW50aWFsbHkgaW50ZXJlc3Rpbmc6IGBpd2xfcG52bV9jb21wbGV0ZV9mbmAsIGBpd2xfYWRkX21jY190b190YXNfYmxvY2tfbGlzdGAsIGBpd2xfcGFyc2Vfc2hhcmVkX21lbV8yMjAwMGAsIGBpd2xfcGFyc2Vfc2hhcmVkX21lbWAsIGBpd2xfaW5pdF9jaGFubmVsX21hcGAsIGBpd2xfcGFyc2VfbWVpX252bV9kYXRhYCwgYGl3bF9wYXJzZV9udm1fZGF0YWAsIGBpd2xfcGFyc2VfbnZtX21jY19pbmZvYCwgYGl3bF9nZXRfbnZtYCwgYGl3bF9tbGRfaGFuZGxlX3R4X3Jlc3Bfbm90aWZgLCBgaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnNgLCBgaXdsX212bV9uZXRkZXRlY3RfcXVlcnlfcmVzdWx0c2AsIGBpd2xfbXZtX3dvd2xhbl9zdG9yZV93YWtlX3BrdGAsIGBpd2xfbXZtX25kX21hdGNoX2luZm9faGFuZGxlcmAsIGBpd2xfbXZtX2Z0bV9zZXRfc2VjdXJlZF9yYW5naW5nYCwgYGl3bF9tdm1fZnRtX3B1dF90YXJnZXRfdjdgLCBgaXdsX212bV9mdG1fcHV0X3RhcmdldF92MTBgLCBgaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlYCwgYGl3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3YCwgYGl3bF9tdm1fcnhfdHhfY21kYCwgYGl3bF9tdm1fcnhfdHhfY21kX2FnZ2AsIGBpd2xfbXZtX3J4X2JhX25vdGlmYCwgYW5kIGBpd2xfcGNpZV9pbml0X2Z3X3NlY2AuXG5cbk5vdywgbGV0J3MgZmlsdGVyIHRoZSBub2lzZS4gYGl3bF9tdm1fcnhfdHhfY21kYCwgYGl3bF9tdm1fcnhfdHhfY21kX2FnZ2AsIGFuZCBgaXdsX212bV9yeF9iYV9ub3RpZmAgYXJlIGNsZWFybHkgaW4gdGhlIGhvdC1wYXRoIFJYL1RYLiAgYGl3bF9tbGRfaGFuZGxlX3R4X3Jlc3Bfbm90aWZgIGFsc28gc2VlbXMgaGlnaC1mcmVxdWVuY3kuIGBpd2xfbXZtX3JlcG9ydF93YWtldXBfcmVhc29uc2AsIGBpd2xfbXZtX3dvd2xhbl9zdG9yZV93YWtlX3BrdGAsIGBpd2xfbXZtX25ldGRldGVjdF9xdWVyeV9yZXN1bHRzYCwgYW5kIGBpd2xfbXZtX25kX21hdGNoX2luZm9faGFuZGxlcmAgYWxsIGRlYWwgd2l0aCBXb1dMQU4vTmV0ZGV0ZWN0LiBgaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZ2AgYW5kIGBpd2xfbXZtX2Z0bV9wdXRfdGFyZ2V0X3Y3YCwgYGl3bF9tdm1fZnRtX3B1dF90YXJnZXRfdjEwYCByZWxhdGUgdG8gRlRNIChGaW5lIFRpbWluZyBNZWFzdXJlbWVudCksIGBpd2xfbXZtX2dldF9zYXJfZ2VvX3Byb2ZpbGVgIGlzIFNBUiwgYW5kIGBpd2xfbXZtX2dldF9jcm9zc3RpbWVzdGFtcF9md2AgZGVhbHMgd2l0aCBQVFAuICBgaXdsX3BjaWVfaW5pdF9md19zZWNgIGFwcGVhcnMgdG8gYmUgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24sIGBpd2xfcG52bV9jb21wbGV0ZV9mbmAgaGFuZGxlcyBQTlZNIGluaXRpYWxpemF0aW9uLCBhbmQgYGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwYCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtYCwgYGl3bF9pbml0X2NoYW5uZWxfbWFwYCwgYGl3bF9wYXJzZV9udm1fZGF0YWAsIGFuZCBgaXdsX2dldF9udm1gIGFwcGVhciB0byByZWxhdGUgdG8gTlZNIHBhcnNpbmcgYW5kIGZpcm13YXJlIGxvYWRpbmcuXG5cbkkgbmVlZCB0byBmb2N1cyBvbiBmdW5jdGlvbnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIHJlYWNoZWQgdGhyb3VnaCBkaWZmZXJlbnQgY29kZSBwYXRocywgYW5kIGFyZSBub3QganVzdCBoaWdoLWZyZXF1ZW5jeSBwYWNrZXQgcHJvY2Vzc2luZy4gIFRoZXJlZm9yZSwgSSdtIGV4Y2x1ZGluZyB0aGUgaG90LXBhdGggZnVuY3Rpb25zLlxuXG5TbywgSSdsbCBpbml0aWFsbHkgaW5jbHVkZTogYGl3bF9wbnZtX2NvbXBsZXRlX2ZuYCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtXzIyMDAwYCwgYGl3bF9wYXJzZV9zaGFyZWRfbWVtYCwgYGl3bF9nZXRfbnZtYCwgYGl3bF9tdm1fcmVwb3J0X3dha2V1cF9yZWFzb25zYCwgYGl3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0YCwgYGl3bF9tdm1fbmRfbWF0Y2hfaW5mb19oYW5kbGVyYCwgYGl3bF9tdm1fZnRtX3NldF9zZWN1cmVkX3JhbmdpbmdgLCBgaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlYCwgYGl3bF9tdm1fZ2V0X2Nyb3NzdGltZXN0YW1wX2Z3YCwgYW5kIGBpd2xfcGNpZV9pbml0X2Z3X3NlY2AgYXMgdGhlIGZvY3VzXG5cbiIsIklucHV0VG9rZW5zIjoxOTAwMiwiT3V0cHV0VG9rZW5zIjoyNjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjIwOjMwLjk5MDA4ODg5MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjU2MzM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVdMV0lGSVwiLFxuICAgIFwiSVdMTVZNXCIsXG4gICAgXCJJV0xNTERcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfcG52bV9jb21wbGV0ZV9mblwiLFxuICAgIFwiaXdsX3BhcnNlX3NoYXJlZF9tZW1fMjIwMDBcIixcbiAgICBcIml3bF9wYXJzZV9zaGFyZWRfbWVtXCIsXG4gICAgXCJpd2xfZ2V0X252bVwiLFxuICAgIFwiaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnNcIixcbiAgICBcIml3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0XCIsXG4gICAgXCJpd2xfbXZtX25kX21hdGNoX2luZm9faGFuZGxlclwiLFxuICAgIFwiaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZ1wiLFxuICAgIFwiaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlXCIsXG4gICAgXCJpd2xfbXZtX2dldF9jcm9zc3RpbWVzdGFtcF9md1wiLFxuICAgIFwiaXdsX3BjaWVfaW5pdF9md19zZWNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGl3bHdpZmkgZHJpdmVyLCBpbmNsdWRpbmcgYWRkaW5nIHN1cHBvcnQgZm9yIFVOSUktOSBjaGFubmVscywgYWRkaW5nIGJvdW5kcyBjaGVja3MgZm9yIGZpcm13YXJlIG5vdGlmaWNhdGlvbnMgYW5kIHJlc3BvbnNlcywgZml4aW5nIG1lbW9yeSBsZWFrcywgYW5kIG1vZGlmeWluZyBOVk0gcGFyc2luZyBsb2dpYy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgbG9naWMgb2YgdGhlIGRyaXZlciBhbmQgYXJlIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVdMV0lGSVwiLFxuICAgIFwiSVdMTVZNXCIsXG4gICAgXCJJV0xNTERcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpd2xfcG52bV9jb21wbGV0ZV9mblwiLFxuICAgIFwiaXdsX3BhcnNlX3NoYXJlZF9tZW1fMjIwMDBcIixcbiAgICBcIml3bF9wYXJzZV9zaGFyZWRfbWVtXCIsXG4gICAgXCJpd2xfZ2V0X252bVwiLFxuICAgIFwiaXdsX212bV9yZXBvcnRfd2FrZXVwX3JlYXNvbnNcIixcbiAgICBcIml3bF9tdm1fd293bGFuX3N0b3JlX3dha2VfcGt0XCIsXG4gICAgXCJpd2xfbXZtX25kX21hdGNoX2luZm9faGFuZGxlclwiLFxuICAgIFwiaXdsX212bV9mdG1fc2V0X3NlY3VyZWRfcmFuZ2luZ1wiLFxuICAgIFwiaXdsX212bV9nZXRfc2FyX2dlb19wcm9maWxlXCIsXG4gICAgXCJpd2xfbXZtX2dldF9jcm9zc3RpbWVzdGFtcF9md1wiLFxuICAgIFwiaXdsX3BjaWVfaW5pdF9md19zZWNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGl3bHdpZmkgZHJpdmVyLCBpbmNsdWRpbmcgYWRkaW5nIHN1cHBvcnQgZm9yIFVOSUktOSBjaGFubmVscywgYWRkaW5nIGJvdW5kcyBjaGVja3MgZm9yIGZpcm13YXJlIG5vdGlmaWNhdGlvbnMgYW5kIHJlc3BvbnNlcywgZml4aW5nIG1lbW9yeSBsZWFrcywgYW5kIG1vZGlmeWluZyBOVk0gcGFyc2luZyBsb2dpYy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgbG9naWMgb2YgdGhlIGRyaXZlciBhbmQgYXJlIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowd7586[1] Phase: Succeeded StartedAt: 2026-07-16 02:20:42 +0000 UTC FinishedAt: 2026-07-16 02:20:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7586[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-16 02:20:42 +0000 UTC FinishedAt: 2026-07-16 02:20:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7586[2] Phase: Succeeded StartedAt: 2026-07-16 02:20:42 +0000 UTC FinishedAt: 2026-07-16 03:24:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-16 02:20:42 +0000 UTC FinishedAt: 2026-07-16 03:24:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-07-16 02:20:42 +0000 UTC FinishedAt: 2026-07-16 02:21:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-07-16 02:20:42 +0000 UTC FinishedAt: 2026-07-16 02:20:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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-workflowd7586/series-workflowd7586-convert-artifact-2451196044/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-07-16 02:21:01 +0000 UTC FinishedAt: 2026-07-16 02:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-07-16 02:21:02 +0000 UTC FinishedAt: 2026-07-16 02:52:40 +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:*5f236b18-2a07-445e-a3ea-b30f19fed0e8,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-workflowd7586/series-workflowd7586-convert-artifact-2451196044/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": "d3339343-26b0-4fc2-85ec-bc68086aaeeb", "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-workflowd7586/series-workflowd7586-build-action-2830700218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-07-16 02:21:03 +0000 UTC FinishedAt: 2026-07-16 02:52:30 +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:*5f236b18-2a07-445e-a3ea-b30f19fed0e8,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-workflowd7586/series-workflowd7586-convert-artifact-2451196044/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": "d3339343-26b0-4fc2-85ec-bc68086aaeeb", "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-workflowd7586/series-workflowd7586-build-action-2830700218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-07-16 02:52:40 +0000 UTC FinishedAt: 2026-07-16 02:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-07-16 02:52:40 +0000 UTC FinishedAt: 2026-07-16 02:52:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-07-16 02:52:40 +0000 UTC FinishedAt: 2026-07-16 02:53:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-07-16 02:52:40 +0000 UTC FinishedAt: 2026-07-16 02:53:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-workflowd7586/series-workflowd7586-convert-artifact-462853323/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-07-16 02:53:11 +0000 UTC FinishedAt: 2026-07-16 03:24:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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-07-16 02:53:11 +0000 UTC FinishedAt: 2026-07-16 03:24:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d3339343-26b0-4fc2-85ec-bc68086aaeeb,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-workflowd7586/series-workflowd7586-build-action-2830700218/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": false },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-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Failed StartedAt: 2026-07-16 03:24:26 +0000 UTC FinishedAt: 2026-07-16 03:24:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd7586[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"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":["iwl_pnvm_complete_fn","iwl_parse_shared_mem_22000","iwl_parse_shared_mem","iwl_get_nvm","iwl_mvm_report_wakeup_reasons","iwl_mvm_wowlan_store_wake_pkt","iwl_mvm_nd_match_info_handler","iwl_mvm_ftm_set_secured_ranging","iwl_mvm_get_sar_geo_profile","iwl_mvm_get_crosstimestamp_fw","iwl_pcie_init_fw_sec"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b8809969e1d7a591e0f49dd464a5d04b3cf02ab1","config_name":"upstream-apparmor-kasan.config","enable_configs":["IWLWIFI","IWLMVM","IWLMLD"],"series_id":"20ec2eb9-ffbe-424e-86e1-bd7af3132741","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: Failed StartedAt: 2026-07-16 03:24:26 +0000 UTC FinishedAt: 2026-07-16 03:24:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}