Name: series-workflowjp5hb Phase: Succeeded StartedAt: 2026-07-31 03:40:51 +0000 UTC FinishedAt: 2026-07-31 05:29:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[0] Phase: Succeeded StartedAt: 2026-07-31 03:40:51 +0000 UTC FinishedAt: 2026-07-31 04:01:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 03:40:51 +0000 UTC FinishedAt: 2026-07-31 04:01:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "8e4d7d120734936cb961d9dc46b788e0487d3256", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_CADENCE", "MACB", "MACB_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "8e4d7d120734936cb961d9dc46b788e0487d3256", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_CADENCE", "MACB", "MACB_PCI" ], "series_id": "3fd51bf2-efe9-4ae2-8197-fbb4aaa28202" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macb_probe", "macb_pcs_an_restart", "macb_mac_config", "macb_mac_select_pcs", "macb_mii_probe", "macb_init_dflt" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9WRU5ET1JfQ0FERU5DRSYjMzQ7LAogICAgJiMzNDtNQUNCJiMzNDssCiAgICAmIzM0O01BQ0JfUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjYl9wcm9iZSYjMzQ7LAogICAgJiMzNDttYWNiX3Bjc19hbl9yZXN0YXJ0JiMzNDssCiAgICAmIzM0O21hY2JfbWFjX2NvbmZpZyYjMzQ7LAogICAgJiMzNDttYWNiX21hY19zZWxlY3RfcGNzJiMzNDssCiAgICAmIzM0O21hY2JfbWlpX3Byb2JlJiMzNDssCiAgICAmIzM0O21hY2JfaW5pdF9kZmx0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBDYWRlbmNlIE1BQ0IgZXRoZXJuZXQgZHJpdmVyIHRvIHN1cHBvcnQgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCBhbmQgaW1wbGVtZW50cyB0aGUgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgIHBoeWxpbmsgY2FsbGJhY2suIFRoZSBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgd3JhcHBlciAoYG1hY2JfcGNpLmNgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBmb3IgZnV6emluZy4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBoYW5kbGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBhbmQgbGluayBzdGF0ZSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2IyNDMxMTU2ZWE1OGU2MWRkNTFhOGE1ZGJhZjE1ZjFiZDJhYzhhNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDAzOjU2OjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG5pbmRleCBkMzk0ZjFmNDNiNjg1Li4zMTBhZDhlYWMyMWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xuQEAgLTU4Myw3ICYjNDM7NTgzLDEyIEBAIHN0YXRpYyB2b2lkIG1hY2JfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIFxuIHN0YXRpYyB2b2lkIG1hY2JfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4ge1xuLVx0LyogTm90IHN1cHBvcnRlZCAqL1xuJiM0MztcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7XG4mIzQzO1x0dTMyIG9sZCwgbmV3O1xuJiM0MztcbiYjNDM7XHRvbGQgPSBnZW1fcmVhZGwoYnAsIFBDU0NOVFJMKTtcbiYjNDM7XHRuZXcgPSBvbGQgfCBCTUNSX0FOUkVTVEFSVDtcbiYjNDM7XHRnZW1fd3JpdGVsKGJwLCBQQ1NDTlRSTCwgbmV3KTtcbiB9XG4gXG4gc3RhdGljIGludCBtYWNiX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5AQCAtNzUwLDcgJiM0Mzs3NTUsOSBAQCBzdGF0aWMgdm9pZCBtYWNiX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuIFx0XHRjdHJsIFx1MDAyNj0gfihHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpKTtcbiBcdFx0bmNyIFx1MDAyNj0gfkdFTV9CSVQoRU5BQkxFX0hTX01BQyk7XG4gXG4tXHRcdGlmIChzdGF0ZS1cdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7XG4mIzQzO1x0XHRpZiAoc3RhdGUtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpIHtcbiYjNDM7XHRcdFx0Y3RybCB8PSBHRU1fQklUKFBDU1NFTCk7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHN0YXRlLVx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcbiBcdFx0XHRjdHJsIHw9IEdFTV9CSVQoU0dNSUlFTikgfCBHRU1fQklUKFBDU1NFTCk7XG4gXHRcdH0gZWxzZSBpZiAoc3RhdGUtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUikge1xuIFx0XHRcdGN0cmwgfD0gR0VNX0JJVChQQ1NTRUwpO1xuQEAgLTk1Nyw3ICYjNDM7OTY0LDggQEAgc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWFjYl9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcbiBcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSKVxuIFx0XHRyZXR1cm4gXHUwMDI2YnAtXHUwMDNlcGh5bGlua191c3hfcGNzO1xuLVx0ZWxzZSBpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbiYjNDM7XHRlbHNlIGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCB8fFxuJiM0MztcdCAgICAgICAgIGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXG4gXHRcdHJldHVybiBcdTAwMjZicC1cdTAwM2VwaHlsaW5rX3NnbWlpX3BjcztcbiBcdGVsc2VcbiBcdFx0cmV0dXJuIE5VTEw7XG5AQCAtMTAyNSwxMyAmIzQzOzEwMzMsMTUgQEAgc3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbiBcdGJwLVx1MDAzZXBoeWxpbmtfc2dtaWlfcGNzLm9wcyA9IFx1MDAyNm1hY2JfcGh5bGlua19wY3Nfb3BzO1xuJiM0MztcdGJwLVx1MDAzZXBoeWxpbmtfc2dtaWlfcGNzLnBvbGwgPSB0cnVlO1xuIFx0YnAtXHUwMDNlcGh5bGlua191c3hfcGNzLm9wcyA9IFx1MDAyNm1hY2JfcGh5bGlua191c3hfcGNzX29wcztcbiBcbiBcdGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFx1MDAyNmRldi1cdTAwM2VkZXY7XG4gXHRicC1cdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XG4gXHRicC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfbWFuYWdlZF9wbSA9IHRydWU7XG4gXG4tXHRpZiAoYnAtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcbiYjNDM7XHRpZiAoYnAtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XG4mIzQzO1x0ICAgIGJwLVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7XG4gXHRcdGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnBvbGxfZml4ZWRfc3RhdGUgPSB0cnVlO1xuIFx0XHRicC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5nZXRfZml4ZWRfc3RhdGUgPSBtYWNiX2dldF9wY3NfZml4ZWRfc3RhdGU7XG4gXHRcdC8qIFRoZSBQQ1NBVVRPTkVHIGJpdCBpbiBQQ1NDTlRSTCBpcyBvbiBvdXQgb2YgcmVzZXQuIFNldHRpbmdcbkBAIC0xMDYwLDkgJiM0MzsxMDcwLDEyIEBAIHN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0XHQgIGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiBcdFx0cGh5X2ludGVyZmFjZV9zZXRfcmdtaWkoYnAtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuIFxuLVx0XHRpZiAoYnAtXHUwMDNlY2FwcyBcdTAwMjYgTUFDQl9DQVBTX1BDUylcbiYjNDM7XHRcdGlmIChicC1cdTAwM2VjYXBzIFx1MDAyNiBNQUNCX0NBUFNfUENTKSB7XG4mIzQzO1x0XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYLFxuJiM0MztcdFx0XHRcdCAgYnAtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuIFx0XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfU0dNSUksXG4gXHRcdFx0XHQgIGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XHRcdH1cbiBcbiBcdFx0aWYgKGJwLVx1MDAzZWNhcHMgXHUwMDI2IE1BQ0JfQ0FQU19ISUdIX1NQRUVEKSB7XG4gXHRcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUixcbkBAIC00OTMxLDcgJiM0Mzs0OTQ0LDkgQEAgc3RhdGljIGludCBtYWNiX2luaXRfZGZsdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0LyogU2V0IE1JSSBtYW5hZ2VtZW50IGNsb2NrIGRpdmlkZXIgKi9cbiBcdHZhbCA9IG1hY2JfbWRjX2Nsa19kaXYoYnApO1xuIFx0dmFsIHw9IG1hY2JfZGJ3KGJwKTtcbi1cdGlmIChicC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbiYjNDM7XHRpZiAoYnAtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKVxuJiM0MztcdFx0dmFsIHw9IEdFTV9CSVQoUENTU0VMKTtcbiYjNDM7XHRlbHNlIGlmIChicC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbiBcdFx0dmFsIHw9IEdFTV9CSVQoU0dNSUlFTikgfCBHRU1fQklUKFBDU1NFTCk7XG4gXHRtYWNiX3dyaXRlbChicCwgTkNGR1IsIHZhbCk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9WRU5ET1JfQ0FERU5DRSYjMzQ7LAogICAgJiMzNDtNQUNCJiMzNDssCiAgICAmIzM0O01BQ0JfUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjYl9wcm9iZSYjMzQ7LAogICAgJiMzNDttYWNiX3Bjc19hbl9yZXN0YXJ0JiMzNDssCiAgICAmIzM0O21hY2JfbWFjX2NvbmZpZyYjMzQ7LAogICAgJiMzNDttYWNiX21hY19zZWxlY3RfcGNzJiMzNDssCiAgICAmIzM0O21hY2JfbWlpX3Byb2JlJiMzNDssCiAgICAmIzM0O21hY2JfaW5pdF9kZmx0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBDYWRlbmNlIE1BQ0IgZXRoZXJuZXQgZHJpdmVyIHRvIHN1cHBvcnQgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCBhbmQgaW1wbGVtZW50cyB0aGUgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgIHBoeWxpbmsgY2FsbGJhY2suIFRoZSBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgd3JhcHBlciAoYG1hY2JfcGNpLmNgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBmb3IgZnV6emluZy4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBoYW5kbGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBhbmQgbGluayBzdGF0ZSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2IyNDMxMTU2ZWE1OGU2MWRkNTFhOGE1ZGJhZjE1ZjFiZDJhYzhhNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDAzOjU2OjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMKaW5kZXggZDM5NGYxZjQzYjY4NS4uMzEwYWQ4ZWFjMjFmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jCkBAIC01ODMsNyAmIzQzOzU4MywxMiBAQCBzdGF0aWMgdm9pZCBtYWNiX3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSwKIAogc3RhdGljIHZvaWQgbWFjYl9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcykKIHsKLQkvKiBOb3Qgc3VwcG9ydGVkICovCiYjNDM7CXN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7CiYjNDM7CXUzMiBvbGQsIG5ldzsKJiM0MzsKJiM0MzsJb2xkID0gZ2VtX3JlYWRsKGJwLCBQQ1NDTlRSTCk7CiYjNDM7CW5ldyA9IG9sZCB8IEJNQ1JfQU5SRVNUQVJUOwomIzQzOwlnZW1fd3JpdGVsKGJwLCBQQ1NDTlRSTCwgbmV3KTsKIH0KIAogc3RhdGljIGludCBtYWNiX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsCkBAIC03NTAsNyAmIzQzOzc1NSw5IEBAIHN0YXRpYyB2b2lkIG1hY2JfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsCiAJCWN0cmwgJmFtcDs9IH4oR0VNX0JJVChTR01JSUVOKSB8IEdFTV9CSVQoUENTU0VMKSk7CiAJCW5jciAmYW1wOz0gfkdFTV9CSVQoRU5BQkxFX0hTX01BQyk7CiAKLQkJaWYgKHN0YXRlLSZndDtpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7CiYjNDM7CQlpZiAoc3RhdGUtJmd0O2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKSB7CiYjNDM7CQkJY3RybCB8PSBHRU1fQklUKFBDU1NFTCk7CiYjNDM7CQl9IGVsc2UgaWYgKHN0YXRlLSZndDtpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7CiAJCQljdHJsIHw9IEdFTV9CSVQoU0dNSUlFTikgfCBHRU1fQklUKFBDU1NFTCk7CiAJCX0gZWxzZSBpZiAoc3RhdGUtJmd0O2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpIHsKIAkJCWN0cmwgfD0gR0VNX0JJVChQQ1NTRUwpOwpAQCAtOTU3LDcgJiM0Mzs5NjQsOCBAQCBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICptYWNiX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAogCiAJaWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpCiAJCXJldHVybiAmYW1wO2JwLSZndDtwaHlsaW5rX3VzeF9wY3M7Ci0JZWxzZSBpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkKJiM0MzsJZWxzZSBpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHwKJiM0MzsJICAgICAgICAgaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkKIAkJcmV0dXJuICZhbXA7YnAtJmd0O3BoeWxpbmtfc2dtaWlfcGNzOwogCWVsc2UKIAkJcmV0dXJuIE5VTEw7CkBAIC0xMDI1LDEzICYjNDM7MTAzMywxNSBAQCBzdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJc3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAogCWJwLSZndDtwaHlsaW5rX3NnbWlpX3Bjcy5vcHMgPSAmYW1wO21hY2JfcGh5bGlua19wY3Nfb3BzOwomIzQzOwlicC0mZ3Q7cGh5bGlua19zZ21paV9wY3MucG9sbCA9IHRydWU7CiAJYnAtJmd0O3BoeWxpbmtfdXN4X3Bjcy5vcHMgPSAmYW1wO21hY2JfcGh5bGlua191c3hfcGNzX29wczsKIAogCWJwLSZndDtwaHlsaW5rX2NvbmZpZy5kZXYgPSAmYW1wO2Rldi0mZ3Q7ZGV2OwogCWJwLSZndDtwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7CiAJYnAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTsKIAotCWlmIChicC0mZ3Q7cGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHsKJiM0MzsJaWYgKGJwLSZndDtwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHwKJiM0MzsJICAgIGJwLSZndDtwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkgewogCQlicC0mZ3Q7cGh5bGlua19jb25maWcucG9sbF9maXhlZF9zdGF0ZSA9IHRydWU7CiAJCWJwLSZndDtwaHlsaW5rX2NvbmZpZy5nZXRfZml4ZWRfc3RhdGUgPSBtYWNiX2dldF9wY3NfZml4ZWRfc3RhdGU7CiAJCS8qIFRoZSBQQ1NBVVRPTkVHIGJpdCBpbiBQQ1NDTlRSTCBpcyBvbiBvdXQgb2YgcmVzZXQuIFNldHRpbmcKQEAgLTEwNjAsOSAmIzQzOzEwNzAsMTIgQEAgc3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQkJICBicC0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwogCQlwaHlfaW50ZXJmYWNlX3NldF9yZ21paShicC0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwogCi0JCWlmIChicC0mZ3Q7Y2FwcyAmYW1wOyBNQUNCX0NBUFNfUENTKQomIzQzOwkJaWYgKGJwLSZndDtjYXBzICZhbXA7IE1BQ0JfQ0FQU19QQ1MpIHsKJiM0MzsJCQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCwKJiM0MzsJCQkJICBicC0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwogCQkJX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwKIAkJCQkgIGJwLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CQl9CiAKIAkJaWYgKGJwLSZndDtjYXBzICZhbXA7IE1BQ0JfQ0FQU19ISUdIX1NQRUVEKSB7CiAJCQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSLApAQCAtNDkzMSw3ICYjNDM7NDk0NCw5IEBAIHN0YXRpYyBpbnQgbWFjYl9pbml0X2RmbHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkvKiBTZXQgTUlJIG1hbmFnZW1lbnQgY2xvY2sgZGl2aWRlciAqLwogCXZhbCA9IG1hY2JfbWRjX2Nsa19kaXYoYnApOwogCXZhbCB8PSBtYWNiX2RidyhicCk7Ci0JaWYgKGJwLSZndDtwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkKJiM0MzsJaWYgKGJwLSZndDtwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpCiYjNDM7CQl2YWwgfD0gR0VNX0JJVChQQ1NTRUwpOwomIzQzOwllbHNlIGlmIChicC0mZ3Q7cGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpCiAJCXZhbCB8PSBHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpOwogCW1hY2Jfd3JpdGVsKGJwLCBOQ0ZHUiwgdmFsKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjMzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ2FkZW5jZSBNQUNCIEV0aGVybmV0IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBGZWFzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNgLiBJdCYjMzk7cyB0b3VjaGluZyBzZXZlcmFsIGZ1bmN0aW9uczogYG1hY2JfcGNzX2FuX3Jlc3RhcnRgLCBgbWFjYl9tYWNfY29uZmlnYCwgYG1hY2JfbWFjX3NlbGVjdF9wY3NgLCBgbWFjYl9taWlfcHJvYmVgLCBhbmQgYG1hY2JfaW5pdF9kZmx0YC4gVGhlIGNvcmUgdGhpbmcgaXMsIGl0JiMzOTtzIGFkZGluZyBzdXBwb3J0IGZvciBgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWGAsIHdoaWNoIGlzIGdyZWF0IGJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgaW4gYSBmdXp6aW5nIGVudmlyb25tZW50PyBUaGlzIGlzIGEgQ2FkZW5jZSBNQUNCL0dFTSBFdGhlcm5ldCBjb250cm9sbGVyIGRyaXZlciwgc28gdGhhdCByYWlzZXMgaW1tZWRpYXRlIGNvbmNlcm5zLgoKRmlyc3QsIEkgbmVlZCB0byBrbm93IGlmIFFFTVUgZXZlbiAqZW11bGF0ZXMqIHRoaXMgdGhpbmcuIFJpZ2h0LCBsZXQgbWUgY2hlY2suLi4geWVwLCBRRU1VIGhhcyBgaHcvbmV0L2NhZGVuY2VfZ2VtLmNgLiBPa2F5LCB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydC4gSSBrbm93IGl0JiMzOTtzIHVzZWQgaW4gdGhpbmdzIGxpa2UgWGlsaW54IFp5bnEgYW5kIG90aGVyIEFSTSBib2FyZHMuIEJ1dCBpcyBpdCBhdmFpbGFibGUgb24gc3RhbmRhcmQgeDg2IFFFTVU/IEhtbSwgdGhhdCYjMzk7cyB0aGUgcnViLiBJcyBpdCBhbiBBUk0tc3BlY2lmaWMgZGV2aWNlIG9yIGNhbiBpdCBiZSBpbnN0YW50aWF0ZWQgdmlhIFBDST8gSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3MgYSBwbGF0Zm9ybSBvciBQQ0kgZGV2aWNlLgoKTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IGBtYWNiX2luaXRfZGZsdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KWAsIGFoIGhhLCBpdCYjMzk7cyBhICpwbGF0Zm9ybSogZGV2aWNlLiBUaGF0IG1lYW5zIGl0JiMzOTtzIG5vdCBhIFBDSSBkZXZpY2UuIEFuZCBoZXJlIGlzIHdoZXJlIHRoaW5ncyBnZXQgdHJpY2t5LiBJbiBzeXprYWxsZXIsIHdlIHVzdWFsbHkgZm9jdXMgb24geDg2XzY0LCBhcm02NCwgYW5kIHRoZSBsaWtlLiBUaGlzIGJlaW5nIGEgcGxhdGZvcm0gZGV2aWNlLCB0aGF0IGltcGxpZXMgaXQgcmVxdWlyZXMgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBvciBib2FyZCBzdXBwb3J0LgoKVGhlIHJlYWwgcHJvYmxlbSBpcywgY2FuIEkgcmVhbGlzdGljYWxseSBmdXp6IHRoaXMgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBQbGF0Zm9ybSBkZXZpY2VzIHRoYXQgYXJlbiYjMzk7dCBpbnN0YW50aWF0ZWQgaW4gdGhlIHN0YW5kYXJkIHRlc3QgZW52aXJvbm1lbnRzIChsaWtlIHRoZSB2aXJ0IGJvYXJkIG9uIGFybTY0LCBvciB0aGUgcGMvcTM1IG9uIHg4Nl82NCkgYXJlIG9mdGVuIHVucmVhY2hhYmxlIHVubGVzcyB0aGVyZSYjMzk7cyBhIHdheSB0byBpbnN0YW50aWF0ZSB0aGVtLiBEZXZpY2UgdHJlZSBvdmVybGF5cyB3b3VsZCB3b3JrLCBidXQgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGRvIHRoYXQgYnkgZGVmYXVsdCBmb3IgdGhpcyBzcGVjaWZpYyBkZXZpY2UuIFNvIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWdgIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBwb3NzaWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUNCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZz0yMD1pZiBORVRfVkVORE9SX0NBREVOQ0VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzoyMjpjb25maWcgTUFDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTIzLVx0dHJpc3RhdGUgXCYjMzQ7Q2FkZW5jZSBNQUNCL0dFTSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjM3OmNvbmZpZyBNQUNCX1VTRV9IV1NUQU1QXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMzgtXHRib29sIFwmIzM0O1VzZSBJRUVFIDE1ODggaHdzdGFtcFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy00NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzo0NTpjb25maWcgTUFDQl9QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy00Ni1cdHRyaXN0YXRlIFwmIzM0O0NhZGVuY2UgUENJIE1BQ0IvR0VNIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDM3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjoKCioqTUFDQiBQQ0kgQ29uZmlndXJhdGlvbjogRGl2aW5nIGludG8gdGhlIENvZGUqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBJIHNlZSBgY29uZmlnIE1BQ0JfUENJYCEgVGhhdCYjMzk7cyBhIGtleSBkZXRhaWwgSSBhbG1vc3QgbWlzc2VkLiBUaGlzIGxpa2VseSBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBQQ0ktYmFzZWQgdmVyc2lvbiBvZiB0aGUgTUFDQiBFdGhlcm5ldCBjb250cm9sbGVyLiBOb3csIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgc3BlY2lmaWMgdmFyaWFudCBpcyBpbml0aWFsaXplZCBhbmQgbWFuYWdlZC4KCkxldCYjMzk7cyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIHdvdWxkIGJlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmNgLiBUaGF0IHNob3VsZCBjb250YWluIGFsbCB0aGUgUENJLXNwZWNpZmljIGluaXRpYWxpemF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgZGV2aWNlIGRyaXZlciBjb2RlIGZvciB0aGUgTUFDQiB3aGVuIG9wZXJhdGluZyBvbiBhIFBDSSBidXMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBvbiBob3cgdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGlzIHByb2JlZCwgdGhlIGludGVycnVwdCBsaW5lcyBhcmUgaGFuZGxlZCwgYW5kIGhvdyB0aGUgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgbmV0d29yayBzdGFjay4gSSYjMzk7bGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMgYW5kIGhvdyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gaW50ZXJhY3RzIHdpdGggdGhlIGNvcmUgTUFDQiBkcml2ZXIgZnVuY3Rpb25hbGl0eS4gVGltZSB0byBnZXQgY29kaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY2JfcGNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTQ1PWNvbmZpZyBNQUNCX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy01MS1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjUyOlx0ICB3aWxsIGJlIGNhbGxlZCBtYWNiX3BjaS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy01My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19NQUNCKSAmIzQzOz0gbWFjYi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19NQUNCX1BDSSkgJiM0Mzs9IG1hY2JfcGNpLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTk6I2RlZmluZSBQQ0lfRFJJVkVSX05BTUUgXCYjMzQ7bWFjYl9wY2lcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0yMC0jZGVmaW5lIFBMQVRfRFJJVkVSX05BTUUgXCYjMzQ7bWFjYlwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGRldl9pZF90YWJsZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTI1OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYWNiX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI2LVx0Lm5hbWUgICAgID0gUENJX0RSSVZFUl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTMyOm1vZHVsZV9wY2lfZHJpdmVyKG1hY2JfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTMzLU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkZXZfaWRfdGFibGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNDEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipQQ0kgSW5zdGFudGlhdGlvbiBhbmQgRGV2aWNlIElEIFRhYmxlIEluc3BlY3Rpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgTUFDQiBjb250cm9sbGVyLCBhbmQgdGhlIGltcGxpY2F0aW9uIGhlcmUgaXMgdGhhdCBpdCBjYW4gYmUgYnJvdWdodCB1cCB0aHJvdWdoIFBDSS4gRXhjZWxsZW50LiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhpcywgYW5kIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgZGV2X2lkX3RhYmxlYCB3aXRoaW4gYG1hY2JfcGNpLmNgLiBJIG5lZWQgdG8gdmVyaWZ5IHdoaWNoIFBDSSBkZXZpY2UgSURzIGFyZSBzdXBwb3J0ZWQgZm9yIHRoaXMgc3BlY2lmaWMgTUFDQiBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZHJpdmVyJiMzOTtzIGRldmljZSBJRCB0YWJsZSBpbmNsdWRlcyB0aGUgc3BlY2lmaWMgSURzIEkmIzM5O20gZGVhbGluZyB3aXRoLiBUaGlzIGlzIGNydWNpYWwgZm9yIHByb3BlciBQQ0kgZGV2aWNlIHByb2JlIGFuZCBkcml2ZXIgYXR0YWNobWVudC4gTGV0JiMzOTtzIHNlZSBpZiB0aG9zZSBJRHMgbWF0Y2ggdXAuIEdvdHRhIGNoZWNrIGZvciB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSUQsIHN1YnZlbmRvciwgc3ViZGV2aWNlLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUsIGJ1dCBJIGp1c3Qgd2FudCB0byBxdWlja2x5IGNvbmZpcm0gaXQmIzM5O3Mgbm90IGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIG9yIHZhcmlhdGlvbiBiZWZvcmUgSSBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExMDpcdFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxhdF9kZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG4gMTExOlx0XHRzdHJ1Y3QgbWFjYl9wbGF0Zm9ybV9kYXRhICpwbGF0X2RhdGEgPSBkZXZfZ2V0X3BsYXRkYXRhKFx1MDAyNnBsYXRfZGV2LVx1MDAzZWRldik7XG4gMTEyOlx0XHRzdHJ1Y3QgY2xrICpwY2xrID0gcGxhdF9kYXRhLVx1MDAzZXBjbGs7XG4gMTEzOlx0XHRzdHJ1Y3QgY2xrICpoY2xrID0gcGxhdF9kYXRhLVx1MDAzZWhjbGs7XG4gMTE0Olx0XG4gMTE1Olx0XHRwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihwbGF0X2Rldik7XG4gMTE2Olx0XHRjbGtfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKHBjbGspO1xuIDExNzpcdFx0Y2xrX3VucmVnaXN0ZXJfZml4ZWRfcmF0ZShoY2xrKTtcbiAxMTg6XHR9XG4gMTE5Olx0XG4gMTIwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGRldl9pZF90YWJsZVtdID0ge1xuIDEyMTpcdFx0eyBQQ0lfVkRFVklDRShDRE5TLCBQQ0lfREVWSUNFX0lEX0NETlNfTUFDQikgfSxcbiAxMjI6XHRcdHsgMCwgfVxuIDEyMzpcdH07XG4gMTI0Olx0XG4gMTI1Olx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcbiAxMjY6XHRcdC5uYW1lICAgICA9IFBDSV9EUklWRVJfTkFNRSxcbiAxMjc6XHRcdC5pZF90YWJsZSA9IGRldl9pZF90YWJsZSxcbiAxMjg6XHRcdC5wcm9iZSAgICA9IG1hY2JfcHJvYmUsXG4gMTI5Olx0XHQucmVtb3ZlXHQgID0gbWFjYl9yZW1vdmUsXG4gMTMwOlx0fTtcbiAxMzE6XHRcbiAxMzI6XHRtb2R1bGVfcGNpX2RyaXZlcihtYWNiX3BjaV9kcml2ZXIpO1xuIDEzMzpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkZXZfaWRfdGFibGUpO1xuIDEzNDpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4gMTM1Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0NhZGVuY2UgTklDIFBDSSB3cmFwcGVyXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTYxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE1BQ0IgRXRoZXJuZXQgRHJpdmVyIHZpYSBQQ0kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQmIzM5O3MgdXNpbmcgYFBDSV9WREVWSUNFKENETlMsIFBDSV9ERVZJQ0VfSURfQ0ROU19NQUNCKWAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBhIENhZGVuY2UgTUFDQiBjb250cm9sbGVyIGFuZCBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGggUENJLiBHcmVhdCEgSWYgYENPTkZJR19NQUNCX1BDSWAgaXMgZW5hYmxlZCwgd2UmIzM5O3ZlIGdvdCBhIHBvdGVudGlhbCBQQ0kgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGF0JiMzOTtzIHRoZSBtb3N0IGxpa2VseSBhdHRhY2sgdmVjdG9yLCBhbmQgc2luY2UgaXQgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBpdCBpcyBpZGVhbC4KCk5vdywgd2FpdCBhIHNlY29uZC4uLiB0aGUgcGF0Y2ggbW9kaWZpZXMgYG1hY2JfbWFpbi5jYC4gVGhhdCYjMzk7cyB0aGUgY29yZSBkcml2ZXIgZmlsZSwgdXN1YWxseS4gRG9lcyBgbWFjYl9wY2kuY2AsIHdoaWNoIGlzIHRoZSBQQ0ktc3BlY2lmaWMgcGFydCwgcmVseSBvbiB0aGUgY29yZSBkcml2ZXI/IE5lZWQgdG8gbWFrZSBzdXJlLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgcHJvYmUgZnVuY3Rpb24gaW4gYG1hY2JfcGNpLmNgLiBBaCwgeWVzISBJdCByZWdpc3RlcnMgYSBwbGF0Zm9ybSBkZXZpY2UgbmFtZWQgJiMzNDttYWNiLiYjMzQ7IE9rYXksIHNvIHRoZSBQQ0kgY29kZSBpcyBsaWtlbHkgdXNpbmcgdGhlIGNvcmUgZHJpdmVyIGNvZGUuIEV4Y2VsbGVudC4gTG9va3MgcHJvbWlzaW5nIGZvciB0ZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjA6XHRcdC8qIGluaXRpYWxpemUgY2xvY2tzICovXG4gIDYxOlx0XHRwbGF0X2RhdGEucGNsayA9IGNsa19yZWdpc3Rlcl9maXhlZF9yYXRlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtwY2xrXCYjMzQ7LCBOVUxMLCAwLFxuICA2MjpcdFx0XHRcdFx0XHRcdCBHRU1fUENMS19SQVRFKTtcbiAgNjM6XHRcdGlmIChJU19FUlIocGxhdF9kYXRhLnBjbGspKSB7XG4gIDY0Olx0XHRcdGVyciA9IFBUUl9FUlIocGxhdF9kYXRhLnBjbGspO1xuICA2NTpcdFx0XHRnb3RvIGVycl9wY2xrX3JlZ2lzdGVyO1xuICA2NjpcdFx0fVxuICA2NzpcdFxuICA2ODpcdFx0cGxhdF9kYXRhLmhjbGsgPSBjbGtfcmVnaXN0ZXJfZml4ZWRfcmF0ZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7aGNsa1wmIzM0OywgTlVMTCwgMCxcbiAgNjk6XHRcdFx0XHRcdFx0XHQgR0VNX0hDTEtfUkFURSk7XG4gIDcwOlx0XHRpZiAoSVNfRVJSKHBsYXRfZGF0YS5oY2xrKSkge1xuICA3MTpcdFx0XHRlcnIgPSBQVFJfRVJSKHBsYXRfZGF0YS5oY2xrKTtcbiAgNzI6XHRcdFx0Z290byBlcnJfaGNsa19yZWdpc3RlcjtcbiAgNzM6XHRcdH1cbiAgNzQ6XHRcbiAgNzU6XHRcdC8qIHNldCB1cCBwbGF0Zm9ybSBkZXZpY2UgaW5mbyAqL1xuICA3NjpcdFx0bWVtc2V0KFx1MDAyNnBsYXRfaW5mbywgMCwgc2l6ZW9mKHBsYXRfaW5mbykpO1xuICA3NzpcdFx0cGxhdF9pbmZvLnBhcmVudCA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuICA3ODpcdFx0cGxhdF9pbmZvLmZ3bm9kZSA9IHBkZXYtXHUwMDNlZGV2LmZ3bm9kZTtcbiAgNzk6XHRcdHBsYXRfaW5mby5uYW1lID0gUExBVF9EUklWRVJfTkFNRTtcbiAgODA6XHRcdHBsYXRfaW5mby5pZCA9IHBkZXYtXHUwMDNlZGV2Zm47XG4gIDgxOlx0XHRwbGF0X2luZm8ucmVzID0gcmVzO1xuICA4MjpcdFx0cGxhdF9pbmZvLm51bV9yZXMgPSBBUlJBWV9TSVpFKHJlcyk7XG4gIDgzOlx0XHRwbGF0X2luZm8uZGF0YSA9IFx1MDAyNnBsYXRfZGF0YTtcbiAgODQ6XHRcdHBsYXRfaW5mby5zaXplX2RhdGEgPSBzaXplb2YocGxhdF9kYXRhKTtcbiAgODU6XHRcdHBsYXRfaW5mby5kbWFfbWFzayA9IHBkZXYtXHUwMDNlZG1hX21hc2s7XG4gIDg2Olx0XG4gIDg3Olx0XHQvKiByZWdpc3RlciBwbGF0Zm9ybSBkZXZpY2UgKi9cbiAgODg6XHRcdHBsYXRfZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX2Z1bGwoXHUwMDI2cGxhdF9pbmZvKTtcbiAgODk6XHRcdGlmIChJU19FUlIocGxhdF9kZXYpKSB7XG4gIDkwOlx0XHRcdGVyciA9IFBUUl9FUlIocGxhdF9kZXYpO1xuICA5MTpcdFx0XHRnb3RvIGVycl9wbGF0X2Rldl9yZWdpc3RlcjtcbiAgOTI6XHRcdH1cbiAgOTM6XHRcbiAgOTQ6XHRcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBwbGF0X2Rldik7XG4gIDk1Olx0XG4gIDk2Olx0XHRyZXR1cm4gMDtcbiAgOTc6XHRcbiAgOTg6XHRlcnJfcGxhdF9kZXZfcmVnaXN0ZXI6XG4gIDk5Olx0XHRjbGtfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKHBsYXRfZGF0YS5oY2xrKTtcbiAxMDA6XHRcbiAxMDE6XHRlcnJfaGNsa19yZWdpc3RlcjpcbiAxMDI6XHRcdGNsa191bnJlZ2lzdGVyX2ZpeGVkX3JhdGUocGxhdF9kYXRhLnBjbGspO1xuIDEwMzpcdFxuIDEwNDpcdGVycl9wY2xrX3JlZ2lzdGVyOlxuIDEwNTpcdFx0cmV0dXJuIGVycjtcbiAxMDY6XHR9XG4gMTA3Olx0XG4gMTA4Olx0c3RhdGljIHZvaWQgbWFjYl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gMTA5Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDkzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKm1hY2IgRGV2aWNlIEJpbmRpbmcgLSBBIFF1aWNrIENoZWNrKioKClJpZ2h0LCBzbyBJIHNlZSB0aGlzICYjMzQ7bWFjYiYjMzQ7IHBsYXRmb3JtIGRldmljZSByZWdpc3RlcmluZy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCBzaG91bGQgYmluZCB0byB0aGUgYG1hY2JgIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBvbmUgZGVmaW5lZCBpbiBgbWFjYl9tYWluLmNgLiBNYWtlcyBzZW5zZSwgdGhlIG5hbWluZyBjb252ZW50aW9uIGlzIGNvbnNpc3RlbnQsIHdoaWNoIGlzIGFsd2F5cyBhIGdvb2Qgc2lnbi4gQnV0IGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIEkganVzdCB3YW50IHRvIG1ha2UgYSBxdWljayB2ZXJpZmljYXRpb24uIExldCBtZSBqdXN0IGNvbmZpcm0gdGhlIGRyaXZlciYjMzk7cyBuYW1lIGluIGBtYWNiX21haW4uY2AgbWF0Y2hlcyB0aGUgcmVnaXN0ZXJlZCBkZXZpY2UuIE5vdGhpbmcgY29tcGxleCwganVzdCBtYWtpbmcgc3VyZSB0aGUgZnVuZGFtZW50YWxzIGFyZSBzb3VuZCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIG1vcmUgaW50ZXJlc3RpbmcgYXNwZWN0cyBvZiB0aGUgZHJpdmVyJiMzOTtzIG9wZXJhdGlvbi4gR290dGEgc3RheSBzaGFycCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDI1OTkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDEtI2luY2x1ZGUgXHUwMDNjbmV0L3BrdF9zY2hlZC5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQyOiNpbmNsdWRlIFwmIzM0O21hY2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDQtLyogVGhpcyBzdHJ1Y3R1cmUgaXMgb25seSB1c2VkIGZvciBNQUNCIG9uIFNpRml2ZSBGVTU0MCBkZXZpY2VzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1OnN0cnVjdCBzaWZpdmVfZnU1NDBfbWFjYl9tZ210IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDYtXHR2b2lkIF9faW9tZW0gKnJlZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEyOC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTI5OnN0YXRpYyB1bnNpZ25lZCBpbnQgbWFjYl9kbWFfZGVzY19nZXRfc2l6ZShzdHJ1Y3QgbWFjYiAqYnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEzMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEzMTpcdHVuc2lnbmVkIGludCBkZXNjX3NpemUgPSBzaXplb2Yoc3RydWN0IG1hY2JfZG1hX2Rlc2MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEzMzpcdGlmIChtYWNiX2RtYTY0KGJwKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTM0Olx0XHRkZXNjX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbWFjYl9kbWFfZGVzY182NCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEzNTpcdGlmIChtYWNiX2RtYV9wdHAoYnApKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMzY6XHRcdGRlc2Nfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBtYWNiX2RtYV9kZXNjX3B0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEzNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTQxOnN0YXRpYyB1bnNpZ25lZCBpbnQgbWFjYl9hZGpfZG1hX2Rlc2NfaWR4KHN0cnVjdCBtYWNiICpicCwgdW5zaWduZWQgaW50IGRlc2NfaWR4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNDIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNDM6XHRyZXR1cm4gZGVzY19pZHggKiAoMSAmIzQzOyBtYWNiX2RtYTY0KGJwKSAmIzQzOyBtYWNiX2RtYV9wdHAoYnApKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTQ0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNDY6c3RhdGljIHN0cnVjdCBtYWNiX2RtYV9kZXNjXzY0ICptYWNiXzY0Yl9kZXNjKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IG1hY2JfZG1hX2Rlc2MgKmRlc2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE0Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE0ODpcdHJldHVybiAoc3RydWN0IG1hY2JfZG1hX2Rlc2NfNjQgKikoKHZvaWQgKilkZXNjXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE0OTpcdFx0JiM0Mzsgc2l6ZW9mKHN0cnVjdCBtYWNiX2RtYV9kZXNjKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE1MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNTItLyogUmluZyBidWZmZXIgYWNjZXNzb3JzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE1MzpzdGF0aWMgdW5zaWduZWQgaW50IG1hY2JfdHhfcmluZ193cmFwKHN0cnVjdCBtYWNiICpicCwgdW5zaWduZWQgaW50IGluZGV4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNTg6c3RhdGljIHN0cnVjdCBtYWNiX2RtYV9kZXNjICptYWNiX3R4X2Rlc2Moc3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNTktXHRcdFx0XHRcdCAgdW5zaWduZWQgaW50IGluZGV4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNjE6XHRpbmRleCA9IG1hY2JfdHhfcmluZ193cmFwKHF1ZXVlLVx1MDAzZWJwLCBpbmRleCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE2MjpcdGluZGV4ID0gbWFjYl9hZGpfZG1hX2Rlc2NfaWR4KHF1ZXVlLVx1MDAzZWJwLCBpbmRleCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE2My1cdHJldHVybiBcdTAwMjZxdWV1ZS1cdTAwM2V0eF9yaW5nW2luZGV4XTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTY2OnN0YXRpYyBzdHJ1Y3QgbWFjYl90eF9za2IgKm1hY2JfdHhfc2tiKHN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTY3LVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBpbmRleClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTY4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTY5Olx0cmV0dXJuIFx1MDAyNnF1ZXVlLVx1MDAzZXR4X3NrYlttYWNiX3R4X3Jpbmdfd3JhcChxdWV1ZS1cdTAwM2VicCwgaW5kZXgpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTcwLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNzI6c3RhdGljIGRtYV9hZGRyX3QgbWFjYl90eF9kbWEoc3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlLCB1bnNpZ25lZCBpbnQgaW5kZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE3My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE3NjpcdG9mZnNldCA9IG1hY2JfdHhfcmluZ193cmFwKHF1ZXVlLVx1MDAzZWJwLCBpbmRleCkgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNzc6XHRcdFx0bWFjYl9kbWFfZGVzY19nZXRfc2l6ZShxdWV1ZS1cdTAwM2VicCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE3OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTgyOnN0YXRpYyB1bnNpZ25lZCBpbnQgbWFjYl9yeF9yaW5nX3dyYXAoc3RydWN0IG1hY2IgKmJwLCB1bnNpZ25lZCBpbnQgaW5kZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE4My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE4NzpzdGF0aWMgc3RydWN0IG1hY2JfZG1hX2Rlc2MgKm1hY2JfcnhfZGVzYyhzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWUsIHVuc2lnbmVkIGludCBpbmRleClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTg4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTg5Olx0aW5kZXggPSBtYWNiX3J4X3Jpbmdfd3JhcChxdWV1ZS1cdTAwM2VicCwgaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxOTA6XHRpbmRleCA9IG1hY2JfYWRqX2RtYV9kZXNjX2lkeChxdWV1ZS1cdTAwM2VicCwgaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xOTEtXHRyZXR1cm4gXHUwMDI2cXVldWUtXHUwMDNlcnhfcmluZ1tpbmRleF07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE5NDpzdGF0aWMgdm9pZCAqbWFjYl9yeF9idWZmZXIoc3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlLCB1bnNpZ25lZCBpbnQgaW5kZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE5NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE5Ni1cdHJldHVybiBxdWV1ZS1cdTAwM2VyeF9idWZmZXJzICYjNDM7IHF1ZXVlLVx1MDAzZWJwLVx1MDAzZXJ4X2J1ZmZlcl9zaXplICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTk3Olx0ICAgICAgIG1hY2JfcnhfcmluZ193cmFwKHF1ZXVlLVx1MDAzZWJwLCBpbmRleCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE5OC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMDAtLyogSS9PIGFjY2Vzc29ycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyMDE6c3RhdGljIHUzMiBod19yZWFkbF9uYXRpdmUoc3RydWN0IG1hY2IgKmJwLCBpbnQgb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMDIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyMDY6c3RhdGljIHZvaWQgaHdfd3JpdGVsX25hdGl2ZShzdHJ1Y3QgbWFjYiAqYnAsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjA3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTIxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MjExOnN0YXRpYyB1MzIgaHdfcmVhZGwoc3RydWN0IG1hY2IgKmJwLCBpbnQgb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMTIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyMTY6c3RhdGljIHZvaWQgaHdfd3JpdGVsKHN0cnVjdCBtYWNiICpicCwgaW50IG9mZnNldCwgdTMyIHZhbHVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MjM4PXN0YXRpYyBib29sIGh3X2lzX2dlbSh2b2lkIF9faW9tZW0gKmFkZHIsIGJvb2wgbmF0aXZlX2lvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNTA6c3RhdGljIHZvaWQgbWFjYl9zZXRfaHdhZGRyKHN0cnVjdCBtYWNiICpicClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI1NS1cdGJvdHRvbSA9IGdldF91bmFsaWduZWRfbGUzMihicC1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNTY6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBMUIsIGJvdHRvbSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI1Ny1cdHRvcCA9IGdldF91bmFsaWduZWRfbGUxNihicC1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHIgJiM0MzsgNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjI1ODpcdG1hY2Jfb3JfZ2VtX3dyaXRlbChicCwgU0ExVCwgdG9wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjY1LVx0LyogQ2xlYXIgdW51c2VkIGFkZHJlc3MgcmVnaXN0ZXIgc2V0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNjY6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBMkIsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNjc6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBMlQsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNjg6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBM0IsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNjk6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBM1QsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNzA6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBNEIsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNzE6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBNFQsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yNzItfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjI3NDpzdGF0aWMgdm9pZCBtYWNiX2dldF9od2FkZHIoc3RydWN0IG1hY2IgKmJwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yNzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjgyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgNDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MjgzOlx0XHRib3R0b20gPSBtYWNiX29yX2dlbV9yZWFkbChicCwgU0ExQiAmIzQzOyBpICogOCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjI4NDpcdFx0dG9wID0gbWFjYl9vcl9nZW1fcmVhZGwoYnAsIFNBMVQgJiM0MzsgaSAqIDgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yODUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMwMzpzdGF0aWMgaW50IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKHN0cnVjdCBtYWNiICpicClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzA0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzExOnN0YXRpYyBpbnQgbWFjYl9tZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBtaWlfaWQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMxMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMxMzpcdHN0cnVjdCBtYWNiICpicCA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMTQtXHRpbnQgc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozMjA6XHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMyMS1cdGlmIChzdGF0dXMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMyNDpcdG1hY2Jfd3JpdGVsKGJwLCBNQU4sIChNQUNCX0JGKFNPRiwgTUFDQl9NQU5fQzIyX1NPRilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzI1LVx0XHRcdCAgICAgIHwgTUFDQl9CRihSVywgTUFDQl9NQU5fQzIyX1JFQUQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMzMDpcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzMxLVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzM0Olx0c3RhdHVzID0gTUFDQl9CRkVYVChEQVRBLCBtYWNiX3JlYWRsKGJwLCBNQU4pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzM1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozNDI6c3RhdGljIGludCBtYWNiX21kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IG1paV9pZCwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNDMtXHRcdFx0ICAgICAgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzQ0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzQ1Olx0c3RydWN0IG1hY2IgKmJwID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM0Ni1cdGludCBzdGF0dXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM1NDpcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzU1LVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzU4Olx0bWFjYl93cml0ZWwoYnAsIE1BTiwgKE1BQ0JfQkYoU09GLCBNQUNCX01BTl9DNDVfU09GKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNTktXHRcdFx0ICAgICAgfCBNQUNCX0JGKFJXLCBNQUNCX01BTl9DNDVfQUREUilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzY1Olx0c3RhdHVzID0gbWFjYl9tZGlvX3dhaXRfZm9yX2lkbGUoYnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNjYtXHRpZiAoc3RhdHVzIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozNjk6XHRtYWNiX3dyaXRlbChicCwgTUFOLCAoTUFDQl9CRihTT0YsIE1BQ0JfTUFOX0M0NV9TT0YpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM3MC1cdFx0XHQgICAgICB8IE1BQ0JfQkYoUlcsIE1BQ0JfTUFOX0M0NV9SRUFEKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozNzU6XHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM3Ni1cdGlmIChzdGF0dXMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM3OTpcdHN0YXR1cyA9IE1BQ0JfQkZFWFQoREFUQSwgbWFjYl9yZWFkbChicCwgTUFOKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM4MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Mzg3OnN0YXRpYyBpbnQgbWFjYl9tZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgbWlpX2lkLCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zODgtXHRcdFx0ICAgICAgIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzg5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzkwOlx0c3RydWN0IG1hY2IgKmJwID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM5MS1cdGludCBzdGF0dXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM5NzpcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzk4LVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDAxOlx0bWFjYl93cml0ZWwoYnAsIE1BTiwgKE1BQ0JfQkYoU09GLCBNQUNCX01BTl9DMjJfU09GKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MDItXHRcdFx0ICAgICAgfCBNQUNCX0JGKFJXLCBNQUNCX01BTl9DMjJfV1JJVEUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQwODpcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDA5LVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDE4OnN0YXRpYyBpbnQgbWFjYl9tZGlvX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgbWlpX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MTktXHRcdFx0ICAgICAgIGludCBkZXZhZCwgaW50IHJlZ251bSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQyMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQyMjpcdHN0cnVjdCBtYWNiICpicCA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MjMtXHRpbnQgc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0MzE6XHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQzMi1cdGlmIChzdGF0dXMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQzNTpcdG1hY2Jfd3JpdGVsKGJwLCBNQU4sIChNQUNCX0JGKFNPRiwgTUFDQl9NQU5fQzQ1X1NPRilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDM2LVx0XHRcdCAgICAgIHwgTUFDQl9CRihSVywgTUFDQl9NQU5fQzQ1X0FERFIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ0MjpcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDQzLVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDQ2Olx0bWFjYl93cml0ZWwoYnAsIE1BTiwgKE1BQ0JfQkYoU09GLCBNQUNCX01BTl9DNDVfU09GKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NDctXHRcdFx0ICAgICAgfCBNQUNCX0JGKFJXLCBNQUNCX01BTl9DNDVfV1JJVEUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1MzpcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDU0LVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDYzOnN0YXRpYyB2b2lkIG1hY2JfaW5pdF9idWZmZXJzKHN0cnVjdCBtYWNiICpicClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDY0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDY1Olx0c3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjYtXHR1bnNpZ25lZCBpbnQgcTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2OC1cdC8qIFNpbmdsZSByZWdpc3RlciBmb3IgYWxsIHF1ZXVlcyYjMzk7IGhpZ2ggMzIgYml0cy4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDY5Olx0aWYgKG1hY2JfZG1hNjQoYnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ3MDpcdFx0bWFjYl93cml0ZWwoYnAsIFJCUVBILFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NzEtXHRcdFx0ICAgIHVwcGVyXzMyX2JpdHMoYnAtXHUwMDNlcXVldWVzWzBdLnJ4X3JpbmdfZG1hKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ3MjpcdFx0bWFjYl93cml0ZWwoYnAsIFRCUVBILFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NzMtXHRcdFx0ICAgIHVwcGVyXzMyX2JpdHMoYnAtXHUwMDNlcXVldWVzWzBdLnR4X3JpbmdfZG1hKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00ODItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ4MzogKiBtYWNiX3NldF90eF9jbGsoKSAtIFNldCBhIGNsb2NrIHRvIGEgbmV3IGZyZXF1ZW5jeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0ODQ6ICogQGJwOlx0XHRwb2ludGVyIHRvIHN0cnVjdCBtYWNiXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ4NS0gKiBAc3BlZWQ6XHROZXcgZnJlcXVlbmN5IGluIEh6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ4Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDg3OnN0YXRpYyB2b2lkIG1hY2Jfc2V0X3R4X2NsayhzdHJ1Y3QgbWFjYiAqYnAsIGludCBzcGVlZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDg4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTIwOnN0YXRpYyB2b2lkIG1hY2JfdXN4X3Bjc19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUyMS1cdFx0XHRcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLCBpbnQgc3BlZWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MjMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MjQ6XHRzdHJ1Y3QgbWFjYiAqYnAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgbWFjYiwgcGh5bGlua191c3hfcGNzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTI1LVx0dTMyIGNvbmZpZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM1OnN0YXRpYyB2b2lkIG1hY2JfdXN4X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzOTpcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3VzeF9wY3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDAtXHR1MzIgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTM6c3RhdGljIGludCBtYWNiX3VzeF9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTQtXHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU1OTpcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3VzeF9wY3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU2NzpzdGF0aWMgdW5zaWduZWQgaW50IG1hY2JfcGNzX2luYmFuZF9jYXBzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NjgtXHRcdFx0XHRcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NzM6c3RhdGljIHZvaWQgbWFjYl9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NC1cdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3NjpcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3Ny1cdHUxNiBibXNyLCBscGE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU4NDpzdGF0aWMgdm9pZCBtYWNiX3Bjc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1ODY6XHRzdHJ1Y3QgbWFjYiAqYnAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgbWFjYiwgcGh5bGlua19zZ21paV9wY3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODctXHR1MzIgb2xkLCBuZXc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU5NDpzdGF0aWMgaW50IG1hY2JfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTk1LVx0XHRcdCAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU5OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYwMDpcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYwMS1cdHUzMiBvbGQsIG5ldztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYwOS1cdCAqIE11c3QgYmUgd3JpdHRlbiBhZnRlciBQQ1NTRUwgaXMgc2V0IGluIE5DRkdSIHdoaWNoIGlzIGRvbmUgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjEwOlx0ICogbWFjYl9tYWNfY29uZmlnKCksIG90aGVyd2lzZSB3cml0ZXMgd2lsbCBub3QgdGFrZSBlZmZlY3QuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYxMS1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjM6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgbWFjYl9waHlsaW5rX3VzeF9wY3Nfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjQ6XHQucGNzX2dldF9zdGF0ZSA9IG1hY2JfdXN4X3Bjc19nZXRfc3RhdGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyNTpcdC5wY3NfY29uZmlnID0gbWFjYl91c3hfcGNzX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjI2Olx0LnBjc19saW5rX3VwID0gbWFjYl91c3hfcGNzX2xpbmtfdXAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYyNy19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyOTpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfcGNzX29wcyBtYWNiX3BoeWxpbmtfcGNzX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjMwOlx0LnBjc19pbmJhbmRfY2FwcyA9IG1hY2JfcGNzX2luYmFuZF9jYXBzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MzE6XHQucGNzX2dldF9zdGF0ZSA9IG1hY2JfcGNzX2dldF9zdGF0ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjMyOlx0LnBjc19hbl9yZXN0YXJ0ID0gbWFjYl9wY3NfYW5fcmVzdGFydCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjMzOlx0LnBjc19jb25maWcgPSBtYWNiX3Bjc19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYzNC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYzNjpzdGF0aWMgYm9vbCBtYWNiX3R4X2xwaV9zZXQoc3RydWN0IG1hY2IgKmJwLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjM3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjQyOlx0bmNyID0gbWFjYl9yZWFkbChicCwgTkNSKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjQzLVx0b2xkID0gbmNyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjQ4LVx0aWYgKG9sZCAhPSBuY3IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjY0OTpcdFx0bWFjYl93cml0ZWwoYnAsIE5DUiwgbmNyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjUwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NTQ6c3RhdGljIGJvb2wgbWFjYl90eF9hbGxfcXVldWVzX2lkbGUoc3RydWN0IG1hY2IgKmJwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NTY6XHRzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY1Ny1cdHVuc2lnbmVkIGludCBxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NjY6c3RhdGljIHZvaWQgbWFjYl90eF9scGlfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY2Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjY2ODpcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbWFjYiwgdHhfbHBpX3dvcmsud29yayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY2OS1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NzEtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZicC1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjY3MjpcdGlmIChicC1cdTAwM2VlZWVfYWN0aXZlIFx1MDAyNlx1MDAyNiBtYWNiX3R4X2FsbF9xdWV1ZXNfaWRsZShicCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjY3MzpcdFx0bWFjYl90eF9scGlfc2V0KGJwLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjc0LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZicC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjY3NzpzdGF0aWMgdm9pZCBtYWNiX3R4X2xwaV9zY2hlZHVsZShzdHJ1Y3QgbWFjYiAqYnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY3OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02ODgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjY4OTpzdGF0aWMgdm9pZCBtYWNiX3R4X2xwaV93YWtlKHN0cnVjdCBtYWNiICpicClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjkwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Njk2Olx0aWYgKCFtYWNiX3R4X2xwaV9zZXQoYnAsIGZhbHNlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjk3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjcwMzpzdGF0aWMgdm9pZCBtYWNiX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzA0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzA1LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB0b19uZXRfZGV2KGNvbmZpZy1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3MDY6XHRzdHJ1Y3QgbWFjYiAqYnAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzA3LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTcxMi1cdGJwLVx1MDAzZWVlZV9hY3RpdmUgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NzEzOlx0bWFjYl90eF9scGlfc2V0KGJwLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTcxNC1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2YnAtXHUwMDNlbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3MTc6c3RhdGljIGludCBtYWNiX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgdGltZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTcxOC1cdFx0XHRcdCAgYm9vbCB0eF9jbGtfc3RvcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTcyMC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gdG9fbmV0X2Rldihjb25maWctXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NzIxOlx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTcyMi1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjczNzpzdGF0aWMgdm9pZCBtYWNiX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MzgtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzQwLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB0b19uZXRfZGV2KGNvbmZpZy1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3NDE6XHRzdHJ1Y3QgbWFjYiAqYnAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzQyLVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NzQ4Olx0b2xkX2N0cmwgPSBjdHJsID0gbWFjYl9vcl9nZW1fcmVhZGwoYnAsIE5DRkdSKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NzQ5Olx0b2xkX25jciA9IG5jciA9IG1hY2Jfb3JfZ2VtX3JlYWRsKGJwLCBOQ1IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NTMtXHRcdFx0Y3RybCB8PSBNQUNCX0JJVChSTTkyMDBfUk1JSSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc1NDpcdH0gZWxzZSBpZiAobWFjYl9pc19nZW0oYnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc1NS1cdFx0Y3RybCBcdTAwMjY9IH4oR0VNX0JJVChTR01JSUVOKSB8IEdFTV9CSVQoUENTU0VMKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NzItXHRpZiAob2xkX2N0cmwgXiBjdHJsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3NzM6XHRcdG1hY2Jfb3JfZ2VtX3dyaXRlbChicCwgTkNGR1IsIGN0cmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc3NS1cdGlmIChvbGRfbmNyIF4gbmNyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3NzY6XHRcdG1hY2Jfb3JfZ2VtX3dyaXRlbChicCwgTkNSLCBuY3IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03ODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc4MTpzdGF0aWMgdm9pZCBtYWNiX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03ODItXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03ODQtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHRvX25ldF9kZXYoY29uZmlnLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc4NTpcdHN0cnVjdCBtYWNiICpicCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3ODY6XHRzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc4Ny1cdHVuc2lnbmVkIGludCBxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzk1LVx0LyogRGlzYWJsZSBSeCBhbmQgVHggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Nzk2Olx0Y3RybCA9IG1hY2JfcmVhZGwoYnAsIE5DUikgXHUwMDI2IH4oTUFDQl9CSVQoUkUpIHwgTUFDQl9CSVQoVEUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Nzk3Olx0bWFjYl93cml0ZWwoYnAsIE5DUiwgY3RybCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc5OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTgwMi0vKiBVc2UganVnZ2xpbmcgYWxnb3JpdGhtIHRvIGxlZnQgcm90YXRlIHR4IHJpbmcgYW5kIHR4IHNrYiBhcnJheSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4MDM6c3RhdGljIHZvaWQgZ2VtX3NodWZmbGVfdHhfb25lX3Jpbmcoc3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MDQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MDUtXHR1bnNpZ25lZCBpbnQgaGVhZCwgdGFpbCwgY291bnQsIHJpbmdfc2l6ZSwgZGVzY19zaXplO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4MDY6XHRzdHJ1Y3QgbWFjYl90eF9za2IgdHhfc2tiLCAqc2tiX2N1cnIsICpza2JfbmV4dDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODA3Olx0c3RydWN0IG1hY2JfZG1hX2Rlc2MgKmRlc2NfY3VyciwgKmRlc2NfbmV4dDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODA4LVx0dW5zaWduZWQgaW50IGksIGN5Y2xlcywgc2hpZnQsIGN1cnIsIG5leHQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjgwOTpcdHN0cnVjdCBtYWNiICpicCA9IHF1ZXVlLVx1MDAzZWJwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MTAtXHR1bnNpZ25lZCBjaGFyIGRlc2NbMjRdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4MTM6XHRkZXNjX3NpemUgPSBtYWNiX2RtYV9kZXNjX2dldF9zaXplKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODE0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODM2LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY3ljbGVzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4Mzc6XHRcdG1lbWNweShcdTAwMjZkZXNjLCBtYWNiX3R4X2Rlc2MocXVldWUsIGkpLCBkZXNjX3NpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4Mzg6XHRcdG1lbWNweShcdTAwMjZ0eF9za2IsIG1hY2JfdHhfc2tiKHF1ZXVlLCBpKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODM5Olx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtYWNiX3R4X3NrYikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NDAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NDQtXHRcdHdoaWxlIChuZXh0ICE9IGkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODQ1Olx0XHRcdGRlc2NfY3VyciA9IG1hY2JfdHhfZGVzYyhxdWV1ZSwgY3Vycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg0NjpcdFx0XHRkZXNjX25leHQgPSBtYWNiX3R4X2Rlc2MocXVldWUsIG5leHQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg1NTpcdFx0XHRza2JfY3VyciA9IG1hY2JfdHhfc2tiKHF1ZXVlLCBjdXJyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODU2Olx0XHRcdHNrYl9uZXh0ID0gbWFjYl90eF9za2IocXVldWUsIG5leHQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4NTc6XHRcdFx0bWVtY3B5KHNrYl9jdXJyLCBza2JfbmV4dCwgc2l6ZW9mKHN0cnVjdCBtYWNiX3R4X3NrYikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg2MzpcdFx0ZGVzY19jdXJyID0gbWFjYl90eF9kZXNjKHF1ZXVlLCBjdXJyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODY0LVx0XHRtZW1jcHkoZGVzY19jdXJyLCBcdTAwMjZkZXNjLCBkZXNjX3NpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODY4LVx0XHRcdGRlc2NfY3Vyci1cdTAwM2VjdHJsIHw9IE1BQ0JfQklUKFRYX1dSQVApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4Njk6XHRcdG1lbWNweShtYWNiX3R4X3NrYihxdWV1ZSwgY3VyciksIFx1MDAyNnR4X3NrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODcwOlx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtYWNiX3R4X3NrYikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NzEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04ODMtLyogUm90YXRlIHRoZSBxdWV1ZSBzbyB0aGF0IHRoZSB0YWlsIGlzIGF0IGluZGV4IDAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODg0OnN0YXRpYyB2b2lkIGdlbV9zaHVmZmxlX3R4X3JpbmdzKHN0cnVjdCBtYWNiICpicClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODg1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODg2Olx0c3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04ODctXHRpbnQgcTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODkzOnN0YXRpYyB2b2lkIG1hY2JfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg5NC1cdFx0XHQgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04OTktXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHRvX25ldF9kZXYoY29uZmlnLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjkwMDpcdHN0cnVjdCBtYWNiICpicCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5MDE6XHRzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkwMi1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjkwODpcdGN0cmwgPSBtYWNiX29yX2dlbV9yZWFkbChicCwgTkNGR1IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05MDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05MTktXHRcdGN0cmwgXHUwMDI2PSB+TUFDQl9CSVQoUEFFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTIwOlx0XHRpZiAobWFjYl9pc19nZW0oYnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkyMS1cdFx0XHRjdHJsIFx1MDAyNj0gfkdFTV9CSVQoR0JFKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTM2Olx0bWFjYl9vcl9nZW1fd3JpdGVsKGJwLCBOQ0ZHUiwgY3RybCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkzNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk0NC1cdGlmICghKGJwLVx1MDAzZWNhcHMgXHUwMDI2IE1BQ0JfQ0FQU19NQUNCX0lTX0VNQUMpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk0NTpcdFx0bWFjYl9zZXRfdHhfY2xrKGJwLCBzcGVlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk0Ni1cdFx0Z2VtX3NodWZmbGVfdHhfcmluZ3MoYnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTQ5LVx0LyogRW5hYmxlIFJ4IGFuZCBUeDsgRW5hYmxlIFBUUCB1bmljYXN0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk1MDpcdGN0cmwgPSBtYWNiX3JlYWRsKGJwLCBOQ1IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05NTEtXHRpZiAoZ2VtX2hhc19wdHAoYnApKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NTQ6XHRtYWNiX3dyaXRlbChicCwgTkNSLCBjdHJsIHwgTUFDQl9CSVQoUkUpIHwgTUFDQl9CSVQoVEUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NTk6c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWFjYl9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTYwLVx0XHRcdFx0XHQgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk2Mi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gdG9fbmV0X2Rldihjb25maWctXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTYzOlx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk2NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTc0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIG1hY2JfcGh5bGlua19vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk3NTpcdC5tYWNfc2VsZWN0X3BjcyA9IG1hY2JfbWFjX3NlbGVjdF9wY3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk3NjpcdC5tYWNfY29uZmlnID0gbWFjYl9tYWNfY29uZmlnLFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzc4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIHRoZSAmIzM0O21hY2ImIzM0OyBEcml2ZXIqKgoKQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGUgJiMzNDttYWNiJiMzNDsgbmFtZS4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSByaW5naW5nIGJlbGxzIOKAkyBzb3VuZHMgbGlrZSBhIE1BQyAoTWVkaWEgQWNjZXNzIENvbnRyb2xsZXIpIEV0aGVybmV0IGRyaXZlciwgbGlrZWx5IGZvciBhIHNwZWNpZmljIHBsYXRmb3JtLiBNeSBmaXJzdCBtb3ZlIGlzIGFsd2F5cyB0byBjb25maXJtIHRoZSBkcml2ZXIgbmFtZSBhbmQgYW55IGFzc29jaWF0ZWQgZmlsZXMuICYjMzQ7bWFjYiYjMzQ7IGl0IGlzLCBzbyBub3cgSSBuZWVkIHRvIGRpdmUgaW4gYW5kIGdldCBteSBiZWFyaW5ncy4KCk15IGltbWVkaWF0ZSBhc3N1bXB0aW9uIGlzIHRoYXQgdGhpcyB3aWxsIGJlIGEgYHBsYXRmb3JtX2RyaXZlcmAsIGdpdmVuIHRoZSBjb250ZXh0LiBUaGUgbmV4dCBzdGVwIGlzIHRvIGxvY2F0ZSB0aGUgc291cmNlIGNvZGUsIGFuZCBJIHdvdWxkIHN0YXJ0IHdpdGggYG1hY2JfbWFpbi5jYCDigJMgdGhhdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBuYW1pbmcgY29udmVudGlvbi4gSSYjMzk7bGwgbGlrZWx5IGZpbmQgdGhlIGBwbGF0Zm9ybV9kcml2ZXJgIHN0cnVjdHVyZSBkZWZpbml0aW9uIGFuZCByZWdpc3RyYXRpb24gd2l0aGluIHRoYXQgZmlsZS4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCYjMzk7cyBwbGF0Zm9ybSBidXMsIGhvdyBpdCBnZXRzIHByb2JlZCwgYW5kIGhvdyBpdCBoYW5kbGVzIGRldmljZSBpbml0aWFsaXphdGlvbi4gRnJvbSB0aGVyZSwgSSBjYW4gZHJpbGwgZG93biBmdXJ0aGVyIGJhc2VkIG9uIHdoYXQgSSBmaW5kIGluIHRoYXQgaW5pdGlhbCBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NjI1Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgbWFjYl9wbV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjYxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1hY2JfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjYyLVx0LnByb2JlXHRcdD0gbWFjYl9wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYyNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyNzI6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtYWNiX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYyNzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjk4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIHRoZSBgbWFjYl9kcml2ZXJgIGlzIGRlZmluaXRlbHkgcmVnaXN0ZXJlZCBhcyBhIHBsYXRmb3JtIGRyaXZlci4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEFuZCBgbWFjYl9wY2kuY2AgcmVnaXN0ZXJzIGEgcGxhdGZvcm0gZGV2aWNlIHRoYXQgKmRvZXMqIG1hdGNoIHRoaXMgZHJpdmVyLCBzbyB0aGUgZHJpdmVyIHNob3VsZCBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggUENJLiBUaGF0JiMzOTtzIGhvdyB0aGlzIGlzIHN1cHBvc2VkIHRvIHdvcmssIHJpZ2h0PwoKTm93LCB0aGUgcXVlc3Rpb24gaXMsIGhhcyB0aGUgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24gYmVlbiBzZXQgdXAgY29ycmVjdGx5PyBEbyB0aGUgc3RhbmRhcmQgY29uZmlncyBlbmFibGUgYENPTkZJR19NQUNCX1BDSWA/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSWYgaXQmIzM5O3Mgbm90IGVuYWJsZWQgYnkgZGVmYXVsdCwgdGhlbiB3ZSYjMzk7bGwgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBpdC4gVGltZSB0byBkaWcgaW50byB0aGUgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgpSaWdodCwgc28gd2UmIzM5O2xsIG5lZWQgdG8gYWRkIGBNQUNCX1BDSWAgYW5kIGBNQUNCYCB0byBgRW5hYmxlQ29uZmlnc2AuIEJ1dCBiZWZvcmUgSSBkbyB0aGF0LCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBLY29uZmlnLi4uIGJlY2F1c2UgYE1BQ0JfUENJYCBwcm9iYWJseSBoYXMgYSBkZXBlbmRlbmN5IG9uIGBNQUNCYC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IGRlcGVuZGVuY3kgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZ2AganVzdCB0byBiZSBzdXJlLCBhbmQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGl0IGlzIHJlZmxlY3RlZCBpbiBvdXIgY29uZmlnIGZpbGUuIE9rYXksIGdvb2QuIFRoYXQgc2hvdWxkIGRvIGl0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9MjA9aWYgTkVUX1ZFTkRPUl9DQURFTkNFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6MjI6Y29uZmlnIE1BQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yMy1cdHRyaXN0YXRlIFwmIzM0O0NhZGVuY2UgTUFDQi9HRU0gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzozNzpjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTM4LVx0Ym9vbCBcJiMzNDtVc2UgSUVFRSAxNTg4IGh3c3RhbXBcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6NDU6Y29uZmlnIE1BQ0JfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtDYWRlbmNlIFBDSSBNQUNCL0dFTSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTc0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgYE1BQ0JfUENJYCBEZXBlbmRlbmNpZXMqKgoKT2theSwgdGltZSB0byBkaWcgaW4uIFRoZSBwcm9qZWN0JiMzOTtzIGJlZW4gZmxhZ2dlZCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCB0aGlzIGBNQUNCX1BDSWAgbW9kdWxlLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGxldCYjMzk7cyBnZXQgYSBoYW5kbGUgb24gaXRzIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBjb21wb25lbnRzLCBsaWJyYXJpZXMsIG9yIGV2ZW4gc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgYXJlIHJlbHlpbmcgb24gdGhpcyB0aGluZy4gQSBkZXBlbmRlbmN5IGdyYXBoIHdvdWxkIGJlIGlkZWFsLCBidXQgZXZlbiBhIGJhc2ljIGxpc3Qgd2lsbCBnZXQgbWUgc3RhcnRlZC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgZHJpdmVyLCBvciBzb21ldGhpbmcgbW9yZSBkZWVwbHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBzeXN0ZW0mIzM5O3MgYXJjaGl0ZWN0dXJlPyBLbm93aW5nIGlmIGl0IHRvdWNoZXMgdGhlIGtlcm5lbCwgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzLCBvciByZWxpZXMgb24gc29tZSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgd2lsbCBkcml2ZSB0aGUgaW52ZXN0aWdhdGlvbi4gR290dGEgZW5zdXJlIHRoZXJlIGFyZSBubyBicmVha2luZyBjaGFuZ2VzIG9yIHVuZXhwZWN0ZWQgY29uZmxpY3RzIGlmIHdlIHBsYW4gYW55IGNoYW5nZXMuIFNvLCBsZXQmIzM5O3Mgc3RhcnQgbWFwcGluZyBvdXQgdGhpcyBkZXBlbmRlbmN5IGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXG4gIDQxOlx0XHRkZWZhdWx0IHlcbiAgNDI6XHRcdGhlbHBcbiAgNDM6XHRcdCAgRW5hYmxlIElFRUUgMTU4OCBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBzdXBwb3J0IGZvciBNQUNCLlxuICA0NDpcdFxuICA0NTpcdGNvbmZpZyBNQUNCX1BDSVxuICA0NjpcdFx0dHJpc3RhdGUgXCYjMzQ7Q2FkZW5jZSBQQ0kgTUFDQi9HRU0gc3VwcG9ydFwmIzM0O1xuICA0NzpcdFx0ZGVwZW5kcyBvbiBNQUNCIFx1MDAyNlx1MDAyNiBQQ0lcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBpcyBQQ0kgd3JhcHBlciBmb3IgTUFDQiBkcml2ZXIuXG4gIDUwOlx0XG4gIDUxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgNTI6XHRcdCAgd2lsbCBiZSBjYWxsZWQgbWFjYl9wY2kuXG4gIDUzOlx0XG4gIDU0Olx0ZW5kaWYgIyBORVRfVkVORE9SX0NBREVOQ0VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0MTgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipEZWNvbnN0cnVjdGluZyB0aGUgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGFuZCBpdCYjMzk7cyBjbGVhciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGhpbmdlcyBvbiB0d28gcHJpbWFyeSBmYWN0b3JzOiBgTUFDQmAgYW5kIGBQQ0lgLiBUaGF0IG11Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBOb3csIHRoZSBjb21wbGV4aXR5IHN0YXJ0cyB0byB1bmZvbGQgYXMgSSBkaWcgZGVlcGVyLiBJdCYjMzk7cyBldmlkZW50IHRoYXQgYE1BQ0JgIGlzbiYjMzk7dCBhIHN0YW5kYWxvbmUgZWxlbWVudDsgaXRzIG9wZXJhdGlvbiBvciBpbXBsZW1lbnRhdGlvbiwgYXQgbGVhc3QgaW4gdGhpcyBjb250ZXh0LCBpcyBpdHNlbGYgZGVwZW5kZW50IG9uIGBIQVNfRE1BYCBhbmQgYENPTU1PTl9DTEtgLiBUaGlzIG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzdGF0ZSBvZiAqdGhvc2UqIGNvbXBvbmVudHMgdG8gZnVsbHkgZ3Jhc3AgdGhlIHN0YXRlIG9mIGBNQUNCYCwgd2hpY2ggdGhlbiBkaXJlY3RseSBpbXBhY3RzIHRoZSBvdmVyYWxsIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZGVwZW5kZW5jeSBjaGFpbiB2ZXJ5IGNhcmVmdWxseS4gSSYjMzk7bSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBjb25maWd1cmF0aW9ucyB3aGVyZSBgSEFTX0RNQWAgb3IgYENPTU1PTl9DTEtgIG1pZ2h0IGJlIHNldCBkaWZmZXJlbnRseSwgbGVhZGluZyB0byBkaWZmZXJlbnQgYmVoYXZpb3JzIGZvciBgTUFDQmAgYW5kIGRvd25zdHJlYW0gZWZmZWN0cyBvbiBgUENJYC4gVGhlIGdvYWwgaXMgdG8gaXNvbGF0ZSB0aGUgY3JpdGljYWwgcGF0aCBhbmQgdW5kZXJzdGFuZCBlYWNoIGVsZW1lbnQmIzM5O3Mgcm9sZSB3aXRoaW4gdGhlIHN5c3RlbS4gSSBoYXZlIHRvIGFzc2VzcyB3aGV0aGVyIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGhhcmQgcmVxdWlyZW1lbnRzLCBvciBjb25kaXRpb25hbCwgYW5kIHRoZSBzcGVjaWZpYyBpbXBhY3Qgb24gdGhlIGVuZCBnb2FsIG9mIHRoaXMgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0aWYgTkVUX1ZFTkRPUl9DQURFTkNFXG4gIDIxOlx0XG4gIDIyOlx0Y29uZmlnIE1BQ0JcbiAgMjM6XHRcdHRyaXN0YXRlIFwmIzM0O0NhZGVuY2UgTUFDQi9HRU0gc3VwcG9ydFwmIzM0O1xuICAyNDpcdFx0ZGVwZW5kcyBvbiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLXG4gIDI1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDI2Olx0XHRzZWxlY3QgUEhZTElOS1xuICAyNzpcdFx0c2VsZWN0IENSQzMyXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIFRoZSBDYWRlbmNlIE1BQ0IgZXRoZXJuZXQgaW50ZXJmYWNlIGlzIGZvdW5kIG9uIG1hbnkgQXRtZWwgQVQzMiBhbmRcbiAgMzA6XHRcdCAgQVQ5MSBwYXJ0cy4gIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgdGhlIENhZGVuY2UgR0VNIChHaWdhYml0XG4gIDMxOlx0XHQgIEV0aGVybmV0IE1BQyBmb3VuZCBpbiBzb21lIEFSTSBTb0MgZGV2aWNlcykuICBTYXkgWSB0byBpbmNsdWRlXG4gIDMyOlx0XHQgIHN1cHBvcnQgZm9yIHRoZSBNQUNCL0dFTSBjaGlwLlxuICAzMzpcdFxuICAzNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDM1Olx0XHQgIHdpbGwgYmUgbWFjYi5cbiAgMzY6XHRcbiAgMzc6XHRjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxuICAzODpcdFx0Ym9vbCBcJiMzNDtVc2UgSUVFRSAxNTg4IGh3c3RhbXBcJiMzNDtcbiAgMzk6XHRcdGRlcGVuZHMgb24gTUFDQlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzAxNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBDYWRlbmNlIE5ldHdvcmsgSW50ZXJmYWNlIERyaXZlcnMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBpbnRlZ3JhdGluZyBhIENhZGVuY2UgbmV0d29yayBpbnRlcmZhY2UgaW50byBhIG5ldyBzeXN0ZW0uIFRoZSBrZXkgdGhpbmcgSSBpbW1lZGlhdGVseSBuZWVkIHRvIGNvbmZpcm0gaXMgdGhhdCB0aGUgYE5FVF9WRU5ET1JfQ0FERU5DRWAga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGRlZmluaXRlbHkgZW5hYmxlZC4gVGhpcyBpcyB0aGUgZm91bmRhdGlvbmFsIGJ1aWxkaW5nIGJsb2NrLiBXaXRob3V0IGl0LCBJJiMzOTttIG5vdCBldmVuIGdvaW5nIHRvIGdldCB0aGUgbmVjZXNzYXJ5IGZyYW1ld29yayBmb3IgdGhlIENhZGVuY2Utc3BlY2lmaWMgZHJpdmVycyB0byBjb21waWxlIGFuZCBsaW5rLiBJdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcCwgdGhlIGdhdGVrZWVwZXIsIHJlYWxseS4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoYXQgdGhpcyBpcyBpbiBwbGFjZSBiZWZvcmUgSSBwcm9jZWVkIGFueSBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIENhZGVuY2UgZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE5FVF9WRU5ET1JfQ0FERU5DRVxuICAgNzpcdFx0Ym9vbCBcJiMzNDtDYWRlbmNlIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gICA5Olx0XHRkZWZhdWx0IHlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gIDEyOlx0XG4gIDEzOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxNjpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxNzpcdFx0ICByZW1haW5pbmcgQ2FkZW5jZSBuZXR3b3JrIGNhcmQgcXVlc3Rpb25zLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlXG4gIDE4Olx0XHQgIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE5Olx0XG4gIDIwOlx0aWYgTkVUX1ZFTkRPUl9DQURFTkNFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNDY4CgkJCQkJCQlvdXRwdXQ6IDc2CgkJCQkJCQl0aG91Z2h0czogNDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBNQUNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBwYXJ0cyB0b3VjaGluZyBgTkVUX1ZFTkRPUl9DQURFTkNFYCwgYE1BQ0JgLCBhbmQgYE1BQ0JfUENJYCBjb25maWd1cmF0aW9ucy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBtb2RpZnlpbmcgc2V2ZXJhbCBmdW5jdGlvbnMsIG5hbWVseSBgbWFjYl9wY3NfYW5fcmVzdGFydGAsIGBtYWNiX21hY19jb25maWdgLCBgbWFjYl9tYWNfc2VsZWN0X3Bjc2AsIGBtYWNiX21paV9wcm9iZWAsIGFuZCBgbWFjYl9pbml0X2RmbHRgLiBUaGVzZSBhcmUgYWxsIGNsZWFybHkgdGllZCBpbnRvIHRoZSBwaHlsaW5rIG9wZXJhdGlvbnMgYW5kIHByb2JlIHByb2NlZHVyZXMgZm9yIHRoaXMgaGFyZHdhcmUuCgpgbWFjYl9taWlfcHJvYmVgIGdldHMgY2FsbGVkIGR1cmluZyBgbWFjYl9wcm9iZWAsIGFuZCB0aGUgb3RoZXJzIOKAkyBgbWFjYl9tYWNfY29uZmlnYCwgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgLCBhbmQgYG1hY2JfbWFjX3NlbGVjdF9wY3NgIOKAkyBhcmUgY2FsbGVkIGJ5IHBoeWxpbmsuIGBtYWNiX2luaXRfZGZsdGAgaXMgYWxzbyB1c2VkIGR1cmluZyBwcm9iZS4gU2luY2UgdGhpcyBpcyBhIGhhcmR3YXJlIGRyaXZlciwgYW5kIGl0IHN1cHBvcnRzIFBDSSwgSSBjYW4gcmVhY2ggaXQgaW4gUUVNVSBpZiB0aGUgUENJIGRldmljZSBpcyBlbXVsYXRlZCwgb3IgaWYgc3l6a2FsbGVyIGlzIGxldmVyYWdpbmcgdGhlIFBDSSBmdXp6ZXIuIEhvbGQgb24sIHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIgdGhhdCBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzIGFuZCBmdXp6IE1NSU8vUElPL0RNQS4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGF0dGFjayB2ZWN0b3IuIFRoaXMgbWVhbnMgdGhlc2UgZHJpdmVycyBhcmUgKmFic29sdXRlbHkqIHdvcnRoIGZ1enppbmcuCgpUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkaW5nIHN1cHBvcnQgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYYCB0byB0aGUgTUFDQiBkcml2ZXIuIFNvLCB0aGUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBmb3IgZnV6emluZyBhcmU6IGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCwgYG1hY2JfbWFjX2NvbmZpZ2AsIGBtYWNiX21hY19zZWxlY3RfcGNzYCwgYG1hY2JfbWlpX3Byb2JlYCwgYW5kIGBtYWNiX2luaXRfZGZsdGAuCgpXYWl0LCB0aGVzZSBhcmUgYWxsIGRlY2xhcmVkIGFzIHN0YXRpYyBmdW5jdGlvbnMhIEkgbmVlZCB0byBjaGVjayBpZiB0aGV5JiMzOTtyZSBpbmxpbmVkIG9yIGlmIHRoZXkmIzM5O3JlIGFjdHVhbGx5IHJlYWNoYWJsZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY2JfcGNzX2FuX3Jlc3RhcnR8bWFjYl9tYWNfY29uZmlnfG1hY2JfbWFjX3NlbGVjdF9wY3N8bWFjYl9taWlfcHJvYmV8bWFjYl9pbml0X2RmbHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTczPXN0YXRpYyB2b2lkIG1hY2JfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1ODQ6c3RhdGljIHZvaWQgbWFjYl9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTg1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU5ND1zdGF0aWMgaW50IG1hY2JfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYwOS1cdCAqIE11c3QgYmUgd3JpdHRlbiBhZnRlciBQQ1NTRUwgaXMgc2V0IGluIE5DRkdSIHdoaWNoIGlzIGRvbmUgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjEwOlx0ICogbWFjYl9tYWNfY29uZmlnKCksIG90aGVyd2lzZSB3cml0ZXMgd2lsbCBub3QgdGFrZSBlZmZlY3QuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYxMS1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NjI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIG1hY2JfcGh5bGlua19wY3Nfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjMxLVx0LnBjc19nZXRfc3RhdGUgPSBtYWNiX3Bjc19nZXRfc3RhdGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYzMjpcdC5wY3NfYW5fcmVzdGFydCA9IG1hY2JfcGNzX2FuX3Jlc3RhcnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYzMy1cdC5wY3NfY29uZmlnID0gbWFjYl9wY3NfY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NzE3PXN0YXRpYyBpbnQgbWFjYl9tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdTMyIHRpbWVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3Mzc6c3RhdGljIHZvaWQgbWFjYl9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzM4LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTg5Mz1zdGF0aWMgdm9pZCBtYWNiX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NTk6c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWFjYl9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTYwLVx0XHRcdFx0XHQgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTk3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBtYWNiX3BoeWxpbmtfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NzU6XHQubWFjX3NlbGVjdF9wY3MgPSBtYWNiX21hY19zZWxlY3RfcGNzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NzY6XHQubWFjX2NvbmZpZyA9IG1hY2JfbWFjX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTc3LVx0Lm1hY19saW5rX2Rvd24gPSBtYWNiX21hY19saW5rX2Rvd24sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIxPXN0YXRpYyB2b2lkIG1hY2JfZ2V0X3Bjc19maXhlZF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwMzAtLyogYmFzZWQgb24gYXUxMDAwX2V0aC4gYyovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwMzE6c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDMyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTExMzg9c3RhdGljIGludCBtYWNiX21paV9pbml0KHN0cnVjdCBtYWNiICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNDgtXHRpZiAoIW1kaW9fbnAgXHUwMDI2XHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKG5wKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTE0OTpcdFx0cmV0dXJuIG1hY2JfbWlpX3Byb2JlKGJwLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTc2Olx0ZXJyID0gbWFjYl9taWlfcHJvYmUoYnAtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE3Ny1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00NzUwPXN0YXRpYyBpbnQgbWFjYl9jbGtfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqcGNsayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3NjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ3NjM6c3RhdGljIGludCBtYWNiX2luaXRfZGZsdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NzY0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ5NTY9c3RhdGljIGludCBtYWNiX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ5NjEtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ5NjI6XHRcdHJldHVybiBtYWNiX2luaXRfZGZsdChwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDk2My19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NDU5PXN0YXRpYyBpbnQgZnU1NDBfYzAwMF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NDY1Olx0cmV0dXJuIG1hY2JfaW5pdF9kZmx0KHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDY2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU0Njg9c3RhdGljIGludCBpbml0X3Jlc2V0X29wdGlvbmFsKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTE1Olx0cmV0ID0gbWFjYl9pbml0X2RmbHQocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1MTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NTI0PXN0YXRpYyBpbnQgZXllcTVfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTUzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTU0MDpcdHJldCA9IG1hY2JfaW5pdF9kZmx0KHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTQxLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzNzAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUNCIERyaXZlciBGdW5jdGlvbiBTdHJ1Y3R1cmUqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBNQUNCIGRyaXZlciBjb2RlLCBhbmQgSSBzZWUgaG93IGl0JiMzOTtzIHN0cnVjdHVyZWQuIFRoZXNlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGBtYWNiX3BoeWxpbmtfcGNzX29wc2AgYW5kIGBtYWNiX3BoeWxpbmtfb3BzYCBzdHJ1Y3RzIGFyZSB0ZWNobmljYWxseSBzdGF0aWMgZnVuY3Rpb25zLCByaWdodD8gQnV0IHRoZSBrZXkgaGVyZSBpcyB0aGF0IHRoZXkmIzM5O3JlICphc3NpZ25lZCogdG8gZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIHRob3NlIHN0cnVjdHMuIFRoYXQmIzM5O3MgY3J1Y2lhbC4gQmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuLCBpdCBtZWFucyB0aGUgY29tcGlsZXIgKmNhbiYjMzk7dCogZnVsbHkgaW5saW5lIHRoZW0uIFRoZXkgZW5kIHVwIHdpdGggdGhlaXIgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIHdoaWNoIG1ha2VzIHRoZW0gdmlzaWJsZSBhbmQsIGZyYW5rbHksIG11Y2ggZWFzaWVyIHRvIGFuYWx5emUuIFRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IEkgbmVlZC4KCldhaXQgYSBzZWNvbmQsIGxldCBtZSByZS1yZWFkIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGhlcmUsIGl0IHNwZWNpZmllcyB0aGF0IGl0IHByZWZlcnMgZnVuY3Rpb25zIHRoYXQgYXJlIG5vbi1zdGF0aWMgYW5kIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBiZWNhdXNlIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gVGhhdCBtYWtlcyBzZW5zZSwgYmVjYXVzZSBJIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGFjY2VzcyB0aG9zZSBpbmxpbmVkIGZ1bmN0aW9ucy4KCkFscmlnaHQsIHNvIHRoZSBmYWN0IHRoYXQgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiBoZXJlIG1lYW5zIHRoYXQgdGhleSBhcmUgbm90IGlubGluZWQsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIG5lZWQuIEFuZCwgc2luY2UgdGhlc2UgZnVuY3Rpb25zIGFyZSBBUEkgZW50cnkgcG9pbnRzLCBpdCBpcyBhbHNvIGdvb2QhCgpCdXQsIEkgdGhpbmsgaXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gY29uc2lkZXIgdGhlIHByb2JlIGZ1bmN0aW9uIGBtYWNiX3Byb2JlYC4gSXQmIzM5O3MgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIGlzbiYjMzk7dCBpdD8gTGV0IG1lIGNoZWNrIHRoYXQgcXVpY2tseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00NTg2PXN0YXRpYyB2b2lkIG1hY2JfY29uZmlndXJlX2NhcHMoc3RydWN0IG1hY2IgKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDYyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDYzMDpzdGF0aWMgaW50IG1hY2JfcHJvYmVfcXVldWVzKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCBfX2lvbWVtICptZW0sIGJvb2wgbmF0aXZlX2lvKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjMxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX2NvbmZpZyBkZWZhdWx0X2dlbV9jb25maWcgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NzcyOnN0YXRpYyBpbnQgbWFjYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzczLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU4MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU4MDg6XHRudW1fcXVldWVzID0gbWFjYl9wcm9iZV9xdWV1ZXMoXHUwMDI2cGRldi1cdTAwM2VkZXYsIG1lbSwgbmF0aXZlX2lvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTgwOS1cdGlmIChudW1fcXVldWVzIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz02MjYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1hY2JfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjYyOlx0LnByb2JlXHRcdD0gbWFjYl9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjI2My1cdC5yZW1vdmVcdFx0PSBtYWNiX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczMzgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBNQUNCIERyaXZlcioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgbWFjYmAgZHJpdmVyLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgYmVzdCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgaW5pdGlhbGl6YXRpb24gaXMgdGhlIGBtYWNiX3Byb2JlYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyB0byBiZSB0aGUgbG9naWNhbCBlbnRyeSBwb2ludC4gQWRkaXRpb25hbGx5LCBJIG5lZWQgdG8gZm9jdXMgb24gc29tZSBvdGhlciBmdW5jdGlvbnMgc2luY2UgdGhlc2UgYXJlIGxpa2VseSB0byBiZSBkaXJlY3RseSBtb2RpZmllZCBkdXJpbmcgYW55IGNoYW5nZSBvZiB0aGUgc3lzdGVtLiBJIGFsc28gbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlzIHJlc3RhcnRlZCwgd2hhdCB0aGUgTUFDIGNvbmZpZ3VyYXRpb24gaXMuCgpTcGVjaWZpY2FsbHksIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCBgbWFjYl9wY3NfYW5fcmVzdGFydGAsIGBtYWNiX21hY19jb25maWdgLCBgbWFjYl9tYWNfc2VsZWN0X3Bjc2AsIGBtYWNiX21paV9wcm9iZWAsIGFuZCBgbWFjYl9pbml0X2RmbHRgLiBUaGVzZSBhcHBlYXIgdG8gYmUgdGhlIGNvcmUgcm91dGluZXMgdGhhdCBoYW5kbGUgdGhlIFBDUyAoUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyKSwgTUFDIChNZWRpYSBBY2Nlc3MgQ29udHJvbCkgY29uZmlndXJhdGlvbiwgYW5kIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24uIFRoZXkgYXJlIHRoZSBvYnZpb3VzIHNwb3RzIHRvIHN0YXJ0LgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gaWYgdGhlIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBpcyBoYW5kbGVkIGluIGEgc2VwYXJhdGUgZmlsZS4gSSBuZWVkIHRvIGtub3cgaWYgdGhlIGBtYWNiX3BjaS5jYCBmaWxlIGNvbnRhaW5zIGl0cyBvd24gcHJvYmUgZnVuY3Rpb24uIFRoYXQgd2lsbCBxdWlja2x5IHRlbGwgbWUgaWYgSSBuZWVkIHRvIGxvb2sgaW50byBhIHNlcGFyYXRlIFBDSS1yZWxhdGVkIGluaXRpYWxpemF0aW9uIHBhdGggb3IgaWYgZXZlcnl0aGluZyBpcyBjb250YWluZWQgd2l0aGluIHRoaXMgcHJpbWFyeSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY2JfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjI3OnN0YXRpYyBpbnQgbWFjYl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTI4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYWNiX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEyNy1cdC5pZF90YWJsZSA9IGRldl9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMjg6XHQucHJvYmUgICAgPSBtYWNiX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEyOS1cdC5yZW1vdmVcdCAgPSBtYWNiX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc5ODkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUNCIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIHRoYXQgYG1hY2JfcGNpLmNgIGFsc28gaW5jbHVkZXMgYSBgbWFjYl9wcm9iZWAgZnVuY3Rpb24uIFNpbmNlIHdlJiMzOTtyZSB0cnlpbmcgdG8gcGlucG9pbnQgdGhlIG1vZGlmaWNhdGlvbnMsIHNob3VsZCBJIHNwZWNpZnkgYG1hY2JfcHJvYmVgIGFzIHdlbGwsIG9yIGp1c3QgZm9jdXMgb24gdGhlIGNoYW5nZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgcGF0Y2g/IEkgdGhpbmsgSSYjMzk7bGwganVzdCBsaXN0IHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgZm9yIG5vdy4KCkxldCYjMzk7cyBzZWUsIHRoZSBwYXRjaCBhbHRlcnMgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgLCBgbWFjYl9tYWNfY29uZmlnYCwgYG1hY2JfbWFjX3NlbGVjdF9wY3NgLCBgbWFjYl9taWlfcHJvYmVgLCBhbmQgYG1hY2JfaW5pdF9kZmx0YC4gSSBzaG91bGQgcHJvYmFibHkgbGlzdCB0aG9zZSBhcyBgRm9jdXNTeW1ib2xzYC4KCk9rYXksIGhlcmUgdGhleSBhcmU6CmBtYWNiX3Bjc19hbl9yZXN0YXJ0YApgbWFjYl9tYWNfY29uZmlnYApgbWFjYl9tYWNfc2VsZWN0X3Bjc2AKYG1hY2JfbWlpX3Byb2JlYApgbWFjYl9pbml0X2RmbHRgCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBJIGtub3cgaG93IHRoZXkmIzM5O3JlIHVzZWQuIEkgc2VlIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCBpcyBzdGF0aWMsIGJ1dCBpdCYjMzk7cyBhc3NpZ25lZCB0byBgbWFjYl9waHlsaW5rX3Bjc19vcHMucGNzX2FuX3Jlc3RhcnRgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gVGhlbiBgbWFjYl9tYWNfY29uZmlnYCBpcyBhc3NpZ25lZCB0byBgbWFjYl9waHlsaW5rX29wcy5tYWNfY29uZmlnYC4gQW5kIGBtYWNiX21hY19zZWxlY3RfcGNzYCBpcyBhc3NpZ25lZCB0byBgbWFjYl9waHlsaW5rX29wcy5tYWNfc2VsZWN0X3Bjc2AuIFJpZ2h0LCBnb29kLiBgbWFjYl9taWlfcHJvYmVgIGlzIGNhbGxlZCBieSBgbWFjYl9taWlfaW5pdGAsIGFuZCBgbWFjYl9pbml0X2RmbHRgIGlzIGNhbGxlZCBieSBgbWFjYl9pbml0YC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgcGljdHVyZSBvZiBob3cgdGhlIGNoYW5nZWQgY29kZSBpcyBpbnRlZ3JhdGVkLgoKQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWdzIGludm9sdmVkPyBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnM6IGBORVRfVkVORE9SX0NBREVOQ0VgLCBgTUFDQmAsIGFuZCBgTUFDQl9QQ0lgLiBXYWl0LCBgTUFDQmAgZGVwZW5kcyBvbiBgSEFTX0RNQWAgYW5kIGBDT01NT05fQ0xLYC4gYEhBU19ETUFgIGlzIHByZXR0eSBzdGFuZGFyZCwgdGhhdCYjMzk7cyB1c3VhbGx5IGVuYWJsZWQuIGBDT01NT05fQ0xLYCBpcyB0eXBpY2FsIGZvciBBUk0sIGJ1dCBJIHNob3VsZCBjaGVjayBpZiBpdCYjMzk7cyBldmVuIHJlbGV2YW50IG9uIHg4Ni4gTGV0IG1lIHNlZSBpZiBgQ09NTU9OX0NMS2AgaXMgYXZhaWxhYmxlIG9uIHg4Ni4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ09NTU9OX0NMSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2xrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jbGsvS2NvbmZpZz0xMj1jb25maWcgSEFWRV9MRUdBQ1lfQ0xLICMgVE9ETzogUmVtb3ZlIG9uY2UgYWxsIGxlZ2FjeSB1c2VycyBhcmUgbWlncmF0ZWRcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIwLVxuZHJpdmVycy9jbGsvS2NvbmZpZzoyMTptZW51Y29uZmlnIENPTU1PTl9DTEtcbmRyaXZlcnMvY2xrL0tjb25maWctMjItXHRib29sIFwmIzM0O0NvbW1vbiBDbG9jayBGcmFtZXdvcmtcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnPTM0PWlmIENPTU1PTl9DTEtcbmRyaXZlcnMvY2xrL0tjb25maWctMzUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM2OmNvbmZpZyBDT01NT05fQ0xLX1dNODMxWFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgV004MzF4LzJ4IFBNSUNzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZz01Mz1jb25maWcgTE1LMDQ4MzJcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTYwLVxuZHJpdmVycy9jbGsvS2NvbmZpZzo2MTpjb25maWcgQ09NTU9OX0NMS19BUFBMRV9OQ09cbmRyaXZlcnMvY2xrL0tjb25maWctNjItXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIEFwcGxlIFNvQyBOQ09zXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy02OC1cbmRyaXZlcnMvY2xrL0tjb25maWc6Njk6Y29uZmlnIENPTU1PTl9DTEtfTUFYNzc2ODZcbmRyaXZlcnMvY2xrL0tjb25maWctNzAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1heGltIDc3NjIwLzc3Njg2Lzc3ODAyIE1GRFwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNzUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjc2OmNvbmZpZyBDT01NT05fQ0xLX01BWDk0ODVcbmRyaXZlcnMvY2xrL0tjb25maWctNzctXHR0cmlzdGF0ZSBcJiMzNDtNYXhpbSA5NDg1IFByb2dyYW1tYWJsZSBDbG9jayBHZW5lcmF0b3JcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTgxLVxuZHJpdmVycy9jbGsvS2NvbmZpZzo4Mjpjb25maWcgQ09NTU9OX0NMS19SSzgwOFxuZHJpdmVycy9jbGsvS2NvbmZpZy04My1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgUks4MDUvUks4MDgvUks4MDkvUks4MTcvUks4MThcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTg5LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo5MDpjb25maWcgQ09NTU9OX0NMS19SUDFcbmRyaXZlcnMvY2xrL0tjb25maWctOTEtXHR0cmlzdGF0ZSBcJiMzNDtSYXNwYmVycnkgUGkgUlAxLWJhc2VkIGNsb2NrIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTk4LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo5OTpjb25maWcgQ09NTU9OX0NMS19ISTY1NVhcbmRyaXZlcnMvY2xrL0tjb25maWctMTAwLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBIaTY1NXhcJiMzNDsgaWYgRVhQRVJUXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMDgtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjEwOTpjb25maWcgQ09NTU9OX0NMS19TQ01JXG5kcml2ZXJzL2Nsay9LY29uZmlnLTExMC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBjb250cm9sbGVkIHZpYSBTQ01JIGludGVyZmFjZVwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTE4LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxMTk6Y29uZmlnIENPTU1PTl9DTEtfU0NQSVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMjAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgY29udHJvbGxlZCB2aWEgU0NQSSBpbnRlcmZhY2VcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTEyOC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTI5OmNvbmZpZyBDT01NT05fQ0xLX1NJNTM0MVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMzAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MzQxIGFuZCA1MzQwIEEvQi9DL0QgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTM5LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxNDA6Y29uZmlnIENPTU1PTl9DTEtfU0k1MzUxXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE0MS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgU2lMYWJzIDUzNTFBL0IvQ1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTQ3LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxNDg6Y29uZmlnIENPTU1PTl9DTEtfU0k1MTRcbmRyaXZlcnMvY2xrL0tjb25maWctMTQ5LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBTaUxhYnMgNTE0IGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE1Ni1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTU3OmNvbmZpZyBDT01NT05fQ0xLX1NJNTQ0XG5kcml2ZXJzL2Nsay9LY29uZmlnLTE1OC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgU2lMYWJzIDU0NCBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNjQtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE2NTpjb25maWcgQ09NTU9OX0NMS19TSTU3MFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNjYtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1NzAgYW5kIGNvbXBhdGlibGUgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTczLVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxNzQ6Y29uZmlnIENPTU1PTl9DTEtfQk0xODgwXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE3NS1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBCaXRtYWluIEJNMTg4MCBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE4MC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTgxOmNvbmZpZyBDT01NT05fQ0xLX0NEQ0U3MDZcbmRyaXZlcnMvY2xrL0tjb25maWctMTgyLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBUSSBDRENFNzA2IGNsb2NrIHN5bnRoZXNpemVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xODctXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE4ODpjb25maWcgQ09NTU9OX0NMS19UUFM2ODQ3MFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xODktXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBEcml2ZXIgZm9yIFRJIFRQUzY4NDcwIFBNSUNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE5NS1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTk2OmNvbmZpZyBDT01NT05fQ0xLX0NEQ0U5MjVcbmRyaXZlcnMvY2xrL0tjb25maWctMTk3LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBUSSBDRENFOTEzLzkyNS85MzcvOTQ5IGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIxMi1cbmRyaXZlcnMvY2xrL0tjb25maWc6MjEzOmNvbmZpZyBDT01NT05fQ0xLX0NTMjAwMF9DUFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMTQtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIENTMjAwMCBGcmFjdGlvbmFsLU4gQ2xvY2sgU3ludGhlc2l6ZXIgXHUwMDI2IENsb2NrIE11bHRpcGxpZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIxOS1cbmRyaXZlcnMvY2xrL0tjb25maWc6MjIwOmNvbmZpZyBDT01NT05fQ0xLX0VONzUyM1xuZHJpdmVycy9jbGsvS2NvbmZpZy0yMjEtXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgQWlyb2hhL0Vjb05ldCBTb0Mgc3lzdGVtIGNsb2Nrc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMjI4LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoyMjk6Y29uZmlnIENPTU1PTl9DTEtfRVA5M1hYXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIzMC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgQ2lycnVzIExvZ2ljIGVwOTN4eCBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIzNi1cbmRyaXZlcnMvY2xrL0tjb25maWc6MjM3OmNvbmZpZyBDT01NT05fQ0xLX0VZRVFcbmRyaXZlcnMvY2xrL0tjb25maWctMjM4LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIHRoZSBNb2JpbGV5ZSBFeWVRIHBsYXRmb3JtXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNDctXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI0ODpjb25maWcgQ09NTU9OX0NMS19GU0xfRkxFWFNQSVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNDktXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIEZsZXhTUEkgb24gTGF5ZXJzY2FwZSBTb0NzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNTUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI1Njpjb25maWcgQ09NTU9OX0NMS19GU0xfU0FJXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI1Ny1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBCQ0xLIG9mIEZyZWVzY2FsZSBTQUkgY29yZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI2Ny1cbmRyaXZlcnMvY2xrL0tjb25maWc6MjY4OmNvbmZpZyBDT01NT05fQ0xLX0dFTUlOSVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNjktXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgQ29ydGluYSBTeXN0ZW1zIEdlbWluaSBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI3Ni1cbmRyaXZlcnMvY2xrL0tjb25maWc6Mjc3OmNvbmZpZyBDT01NT05fQ0xLX0xBTjk2NlhcbmRyaXZlcnMvY2xrL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBDbG9jayBDb250cm9sbGVyIGRyaXZlciBmb3IgTEFOOTY2WCBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI4Ni1cbmRyaXZlcnMvY2xrL0tjb25maWc6Mjg3OmNvbmZpZyBDT01NT05fQ0xLX1MyTVBTMTFcbmRyaXZlcnMvY2xrL0tjb25maWctMjg4LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBTMk1QUzFYL1M1TTg3NjcgTUZEXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZz0zMDQ9Y29uZmlnIENMS19UV0w2MDQwXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zMTEtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjMxMjpjb25maWcgQ09NTU9OX0NMS19BWElfQ0xLR0VOXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMxMy1cdHRyaXN0YXRlIFwmIzM0O0FYSSBjbGtnZW4gZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZz0zMjg9Y29uZmlnIENMS19MUzEwMjhBX1BMTERJR1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMzM3LVxuZHJpdmVycy9jbGsvS2NvbmZpZzozMzg6Y29uZmlnIENPTU1PTl9DTEtfWEdFTkVcbmRyaXZlcnMvY2xrL0tjb25maWctMzM5LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIEFQTSBYR2VuZSBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM0NC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MzQ1OmNvbmZpZyBDT01NT05fQ0xLX0xPQ0hOQUdBUlxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNDYtXHR0cmlzdGF0ZSBcJiMzNDtDaXJydXMgTG9naWMgTG9jaG5hZ2FyIGNsb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMzUxLVxuZHJpdmVycy9jbGsvS2NvbmZpZzozNTI6Y29uZmlnIENPTU1PTl9DTEtfTlBDTThYWFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNTMtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIHRoZSBOUENNOFhYIFNvQyBGYW1pbHlcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM2MC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MzYxOmNvbmZpZyBDT01NT05fQ0xLX0xPT05HU09OMlxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNjItXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTG9vbmdzb24tMiBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM2OS1cbmRyaXZlcnMvY2xrL0tjb25maWc6MzcwOmNvbmZpZyBDT01NT05fQ0xLX05YUFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzEtXHRkZWZfYm9vbCBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiAoQVJDSF9MUEMxOFhYIHx8IEFSQ0hfTFBDMzJYWClcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM3Ni1cbmRyaXZlcnMvY2xrL0tjb25maWc6Mzc3OmNvbmZpZyBDT01NT05fQ0xLX1BBTE1BU1xuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzgtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFRJIFBhbG1hcyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zODMtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM4NDpjb25maWcgQ09NTU9OX0NMS19QV01cbmRyaXZlcnMvY2xrL0tjb25maWctMzg1LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBQV01zIHVzZWQgYXMgY2xvY2sgb3V0cHV0c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMzkwLVxuZHJpdmVycy9jbGsvS2NvbmZpZzozOTE6Y29uZmlnIENPTU1PTl9DTEtfUFhBXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM5Mi1cdGRlZl9ib29sIENPTU1PTl9DTEsgXHUwMDI2XHUwMDI2IEFSQ0hfUFhBXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zOTUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM5Njpjb25maWcgQ09NTU9OX0NMS19SUzlfUENJRVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zOTctXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFJlbmVzYXMgOS1zZXJpZXMgUENJZSBjbG9jayBnZW5lcmF0b3JzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00MDQtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQwNTpjb25maWcgQ09NTU9OX0NMS19TSTUyMVhYXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQwNi1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgU2t5V29ya3MgU2k1MjF4eCBQQ0llIGNsb2NrIGdlbmVyYXRvcnNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQxMy1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDE0OmNvbmZpZyBDT01NT05fQ0xLX1ZDM1xuZHJpdmVycy9jbGsvS2NvbmZpZy00MTUtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFJlbmVzYXMgVmVyc2FDbG9jayAzIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQyMi1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDIzOmNvbmZpZyBDT01NT05fQ0xLX1ZDNVxuZHJpdmVycy9jbGsvS2NvbmZpZy00MjQtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIElEVCBWZXJzYUNsb2NrIDUsNiBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00MzEtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQzMjpjb25maWcgQ09NTU9OX0NMS19WQzdcbmRyaXZlcnMvY2xrL0tjb25maWctNDMzLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIFZlcnNhY2xvY2sgNyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDAtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ0MTpjb25maWcgQ09NTU9OX0NMS19TVE0zMkZcbmRyaXZlcnMvY2xrL0tjb25maWctNDQyLVx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgKE1BQ0hfU1RNMzJGNDI5IHx8IE1BQ0hfU1RNMzJGNDY5IHx8IE1BQ0hfU1RNMzJGNzQ2KVxuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDQ1LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NDY6Y29uZmlnIENPTU1PTl9DTEtfU1RNMzJIN1xuZHJpdmVycy9jbGsvS2NvbmZpZy00NDctXHRkZWZfYm9vbCBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiBNQUNIX1NUTTMySDc0M1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDUwLVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NTE6Y29uZmlnIENPTU1PTl9DTEtfTU1QMlxuZHJpdmVycy9jbGsvS2NvbmZpZy00NTItXHRkZWZfYm9vbCBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiAoTUFDSF9NTVAyX0RUIHx8IE1BQ0hfTU1QM19EVClcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ1NS1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDU2OmNvbmZpZyBDT01NT05fQ0xLX01NUDJfQVVESU9cbmRyaXZlcnMvY2xrL0tjb25maWctNDU3LSAgICAgICAgdHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNTVAyIEF1ZGlvIHN1YnN5c3RlbVwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDYxLVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NjI6Y29uZmlnIENPTU1PTl9DTEtfQkQ3MThYWFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NjMtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIDMySyBjbGsgZ2F0ZXMgb24gUk9ITSBQTUlDc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDY4LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0Njk6Y29uZmlnIENPTU1PTl9DTEtfRklYRURfTU1JT1xuZHJpdmVycy9jbGsvS2NvbmZpZy00NzAtXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVtb3J5IE1hcHBlZCBGaXhlZCB2YWx1ZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ3NS1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDc2OmNvbmZpZyBDT01NT05fQ0xLX0syMTBcbmRyaXZlcnMvY2xrL0tjb25maWctNDc3LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIHRoZSBDYW5hYW4gS2VuZHJ5dGUgSzIxMCBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ4Mi1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDgzOmNvbmZpZyBDT01NT05fQ0xLX0syMzBcbmRyaXZlcnMvY2xrL0tjb25maWctNDg0LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIHRoZSBDYW5hYW4gS2VuZHJ5dGUgSzIzMCBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ4OC1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDg5OmNvbmZpZyBDT01NT05fQ0xLX1NQNzAyMVxuZHJpdmVycy9jbGsvS2NvbmZpZy00OTAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFN1bnBsdXMgU1A3MDIxIFNvQ1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDk4LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0OTk6Y29uZmlnIENPTU1PTl9DTEtfUlBNSVxuZHJpdmVycy9jbGsvS2NvbmZpZy01MDAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgYmFzZWQgb24gUklTQy1WIFJQTUlcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzNzkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBNQUNCIGFuZCBDT01NT05fQ0xLIG9uIHg4NioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgYENPTU1PTl9DTEtgIGNvbmZpZy4gSXQmIzM5O3MgcHJldHR5IGdlbmVyaWMsIHJpZ2h0PyBJJiMzOTtkIGV4cGVjdCBpdCB0byBiZSBlbmFibGVkIG9uIGEgbG90IG9mIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLiBOb3csIHRoZSBpc3N1ZSBhdCBoYW5kOiBgTUFDQmAgaGFzIGEgZGVwZW5kZW5jeSBvbiBib3RoIGBIQVNfRE1BYCBhbmQgYENPTU1PTl9DTEtgLiBUaGF0JiMzOTtzIGEga2V5IGRldGFpbC4gVGhpcyBtZWFucyB0aGF0IGlmIGBDT01NT05fQ0xLYCAqaXNuJiMzOTt0KiBlbmFibGVkIG9uIHg4NiwgdGhlbiBJIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGVuYWJsZSBgTUFDQmAgb24geDg2LgoKTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBDT01NT05fQ0xLYCBpcyBhY3R1YWxseSBlbmFibGVkIGZvciB4ODYuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBpdCAqc2hvdWxkKiBiZSBlbmFibGVkIGluIG1vc3Qgc3RhbmRhcmQgeDg2IGNvbmZpZ3VyYXRpb25zIGJlY2F1c2UgYSBsb3Qgb2YgZHJpdmVycyB0ZW5kIHRvIHJlbHkgb24gaXQuIEJ1dCBJIGNhbiYjMzk7dCBqdXN0IGFzc3VtZTsgSSBuZWVkIHRvIHZlcmlmeS4KClRoZXJlZm9yZSwgdGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoIGlzIHRvIGNvbnN1bHQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZTogYGFyY2gveDg2L0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBsb29rIGZvciB0aGUgZGVmaW5pdGlvbiBhbmQgcG90ZW50aWFsIGVuYWJsZW1lbnQgb2YgYENPTU1PTl9DTEtgIHdpdGhpbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT01NT05fQ0xLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9LY29uZmlnPTY4MD1jb25maWcgWDg2X0lOVEVMX1FVQVJLXG4tLVxuYXJjaC94ODYvS2NvbmZpZy02ODktXHRzZWxlY3QgSU5URUxfSU1SXG5hcmNoL3g4Ni9LY29uZmlnOjY5MDpcdHNlbGVjdCBDT01NT05fQ0xLXG5hcmNoL3g4Ni9LY29uZmlnLTY5MS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTY5Nj1jb25maWcgWDg2X0lOVEVMX0xQU1Ncbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTY5OC1cdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBBQ1BJIFx1MDAyNlx1MDAyNiBQQ0lcbmFyY2gveDg2L0tjb25maWc6Njk5Olx0c2VsZWN0IENPTU1PTl9DTEtcbmFyY2gveDg2L0tjb25maWctNzAwLVx0c2VsZWN0IFBJTkNUUkxcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTcwOD1jb25maWcgWDg2X0FNRF9QTEFURk9STV9ERVZJQ0Vcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTcxMC1cdGRlcGVuZHMgb24gQUNQSVxuYXJjaC94ODYvS2NvbmZpZzo3MTE6XHRzZWxlY3QgQ09NTU9OX0NMS1xuYXJjaC94ODYvS2NvbmZpZy03MTItXHRzZWxlY3QgUElOQ1RSTFxuLS1cbmFyY2gveDg2L0tjb25maWctNzE1LVx0ICBzdWNoIGFzIEkyQywgVUFSVCwgR1BJTyBmb3VuZCBvbiBBTUQgQ2Fycml6byBhbmQgbGF0ZXIgY2hpcHNldHMuXG5hcmNoL3g4Ni9LY29uZmlnOjcxNjpcdCAgSTJDIGFuZCBVQVJUIGRlcGVuZCBvbiBDT01NT05fQ0xLIHRvIHNldCBjbG9jay4gR1BJTyBkcml2ZXIgaXNcbmFyY2gveDg2L0tjb25maWctNzE3LVx0ICBpbXBsZW1lbnRlZCB1bmRlciBQSU5DVFJMIHN1YnN5c3RlbS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxNDYKCQkJCQkJCW91dHB1dDogMTg5CgkJCQkJCQl0aG91Z2h0czogNTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIENhZGVuY2UgTUFDQiBEcml2ZXIgd2l0aCAxMDAwQkFTRVggU3VwcG9ydCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGZvciBhIGZ1enppbmcgcGxhbi4gVGhlIGBDT01NT05fQ0xLYCBpcyBhdmFpbGFibGUsIHdoaWNoIGlzIGV4cGVjdGVkIG9uIHRoZXNlIHg4NiBwbGF0Zm9ybXMgdGhhbmtzIHRvIGBYODZfSU5URUxfTFBTU2AgYW5kIGBYODZfQU1EX1BMQVRGT1JNX0RFVklDRWAuIFNvLCB3ZSYjMzk7cmUgZ29vZCB0aGVyZS4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIGluIHRoZSBjb25maWcuIFdlJiMzOTt2ZSBnb3QgYE5FVF9WRU5ET1JfQ0FERU5DRWAsIGBNQUNCYCwgYW5kIGBNQUNCX1BDSWAuIEFueSBvdGhlciBkZXBlbmRlbmNpZXM/IEhtbSwgYE1BQ0JgIHB1bGxzIGluIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGJ1dCB0aGF0JiMzOTtzIHVzdWFsbHkgbm90IGEgcHJvYmxlbS4gYE1BQ0JfUENJYD8gSXRzIGRlcGVuZGVuY3kgaXMgYE1BQ0IgJmFtcDsmYW1wOyBQQ0lgLCB3aGljaCBpcyBleHBlY3RlZC4gU28gdGhlIHRocmVlIGNvbmZpZ3MgYXJlIHRoZSByaWdodCBjaG9pY2VzLgoKTm93LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBwYXRjaCBpdHNlbGYgYW5kIHRoZSBmdW5jdGlvbnMgaXQgdG91Y2hlcy4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgbW9kaWZpY2F0aW9ucyB0byBgbWFjYl9wY3NfYW5fcmVzdGFydGAsIGBtYWNiX21hY19jb25maWdgLCBgbWFjYl9tYWNfc2VsZWN0X3Bjc2AsIGBtYWNiX21paV9wcm9iZWAsIGFuZCBgbWFjYl9pbml0X2RmbHRgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBkdXJpbmcgdGhlIE1BQ0IgZHJpdmVyJiMzOTtzIHByb2JlIHNlcXVlbmNlIGFuZCB3aGVuIHBoeWxpbmsgY29uZmlndXJlcyB0aGUgbGluay4gU2luY2Ugd2UgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyB1c2luZyBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIsIHdlIGNhbiB0cmlnZ2VyIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUsIGFuZCB0aGVuIGludGVyYWN0IHdpdGggdGhlIG5ldCBkZXZpY2UuIFdlIGNhbiByZWFjaCB0aGVzZSBmdW5jdGlvbnMhCgpUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWGAgYW5kLCBpbXBvcnRhbnRseSwgbW9kaWZpZXMgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgIHRvIGFjdHVhbGx5IHJlc3RhcnQgYXV0b25lZ290aWF0aW9uIGJ5IHdyaXRpbmcgdG8gdGhlIGBQQ1NDTlRSTGAgcmVnaXN0ZXIuIFRoaXMgaXMgd2hlcmUgd2Ugd2FudCB0byBmb2N1cy4gVGhpcyBpcyBmdW5jdGlvbmFsIGxvZ2ljLCBhbmQgaXQmIzM5O3MgcmlwZSBmb3IgZnV6emluZy4KCkFscmlnaHQsIHRpbWUgdG8gZmluYWxpemUgdGhlIHN0cmF0ZWd5OgoKYFdvcnRoRnV6emluZzogdHJ1ZWAgLSBBYnNvbHV0ZWx5LgoKYEZvY3VzU3ltYm9sc2A6IFdlJiMzOTtsbCBmb2N1cyBmdXp6aW5nIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucyBtZW50aW9uZWQ6CiogICBgbWFjYl9wcm9iZWAKKiAgIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YAoqICAgYG1hY2JfbWFjX2NvbmZpZ2AKKiAgIGBtYWNiX21hY19zZWxlY3RfcGNzYAoqICAgYG1hY2JfbWlpX3Byb2JlYAoqICAgYG1hY2JfaW5pdF9kZmx0YAoKYEVuYWJsZUNvbmZpZ3NgOgoqICAgYE5FVF9WRU5ET1JfQ0FERU5DRWAKKiAgIGBNQUNCYAoqICAgYE1BQ0JfUENJYAoKYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBhZGRzIDEwMDBCQVNFWCBQSFkgc3VwcG9ydCB0byB0aGUgQ2FkZW5jZSBNQUNCIGV0aGVybmV0IGRyaXZlciBhbmQgaW1wbGVtZW50cyB0aGUgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgIHBoeWxpbmsgY2FsbGJhY2suIFRoZSBQQ0kgd3JhcHBlciBtYWtlcyB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgbWFuYWdlbWVudC4gTGV0JiMzOTtzIHNlbmQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfVkVORE9SX0NBREVOQ0UmIzM0OywKICAgICYjMzQ7TUFDQiYjMzQ7LAogICAgJiMzNDtNQUNCX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hY2JfcHJvYmUmIzM0OywKICAgICYjMzQ7bWFjYl9wY3NfYW5fcmVzdGFydCYjMzQ7LAogICAgJiMzNDttYWNiX21hY19jb25maWcmIzM0OywKICAgICYjMzQ7bWFjYl9tYWNfc2VsZWN0X3BjcyYjMzQ7LAogICAgJiMzNDttYWNiX21paV9wcm9iZSYjMzQ7LAogICAgJiMzNDttYWNiX2luaXRfZGZsdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ2FkZW5jZSBNQUNCIGV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggYW5kIGltcGxlbWVudHMgdGhlIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCBwaHlsaW5rIGNhbGxiYWNrLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIHdyYXBwZXIgKGBtYWNiX3BjaS5jYCksIG1ha2luZyBpdCByZWFjaGFibGUgZm9yIGZ1enppbmcuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgaGFuZGxlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgbWFuYWdlbWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1ZFTkRPUl9DQURFTkNFJiMzNDssCiAgICAmIzM0O01BQ0ImIzM0OywKICAgICYjMzQ7TUFDQl9QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWNiX3Byb2JlJiMzNDssCiAgICAmIzM0O21hY2JfcGNzX2FuX3Jlc3RhcnQmIzM0OywKICAgICYjMzQ7bWFjYl9tYWNfY29uZmlnJiMzNDssCiAgICAmIzM0O21hY2JfbWFjX3NlbGVjdF9wY3MmIzM0OywKICAgICYjMzQ7bWFjYl9taWlfcHJvYmUmIzM0OywKICAgICYjMzQ7bWFjYl9pbml0X2RmbHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIENhZGVuY2UgTUFDQiBldGhlcm5ldCBkcml2ZXIgdG8gc3VwcG9ydCBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIGFuZCBpbXBsZW1lbnRzIHRoZSBgbWFjYl9wY3NfYW5fcmVzdGFydGAgcGh5bGluayBjYWxsYmFjay4gVGhlIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgaXRzIFBDSSB3cmFwcGVyIChgbWFjYl9wY2kuY2ApLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGZvciBmdXp6aW5nLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGhhbmRsZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGFuZCBsaW5rIHN0YXRlIG1hbmFnZW1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1NjowNi43MzIyMTQ3NjFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODkxMjkxNTIwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9DQURFTkNFXCIsXG4gICAgXCJNQUNCXCIsXG4gICAgXCJNQUNCX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY2JfcHJvYmVcIixcbiAgICBcIm1hY2JfcGNzX2FuX3Jlc3RhcnRcIixcbiAgICBcIm1hY2JfbWFjX2NvbmZpZ1wiLFxuICAgIFwibWFjYl9tYWNfc2VsZWN0X3Bjc1wiLFxuICAgIFwibWFjYl9taWlfcHJvYmVcIixcbiAgICBcIm1hY2JfaW5pdF9kZmx0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIENhZGVuY2UgTUFDQiBldGhlcm5ldCBkcml2ZXIgdG8gc3VwcG9ydCBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIGFuZCBpbXBsZW1lbnRzIHRoZSBgbWFjYl9wY3NfYW5fcmVzdGFydGAgcGh5bGluayBjYWxsYmFjay4gVGhlIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgaXRzIFBDSSB3cmFwcGVyIChgbWFjYl9wY2kuY2ApLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGZvciBmdXp6aW5nLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGhhbmRsZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGFuZCBsaW5rIHN0YXRlIG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjA2LjczMjIyMTExMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEyMDI3MzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2IyNDMxMTU2ZWE1OGU2MWRkNTFhOGE1ZGJhZjE1ZjFiZDJhYzhhNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMzo1NjowNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xcbmluZGV4IGQzOTRmMWY0M2I2ODUuLjMxMGFkOGVhYzIxZmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcXG5AQCAtNTgzLDcgKzU4MywxMiBAQCBzdGF0aWMgdm9pZCBtYWNiX3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4gXFxuIHN0YXRpYyB2b2lkIG1hY2JfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuIHtcXG4tXFx0LyogTm90IHN1cHBvcnRlZCAqL1xcbitcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgbWFjYiwgcGh5bGlua19zZ21paV9wY3MpO1xcbitcXHR1MzIgb2xkLCBuZXc7XFxuK1xcbitcXHRvbGQgPSBnZW1fcmVhZGwoYnAsIFBDU0NOVFJMKTtcXG4rXFx0bmV3ID0gb2xkIHwgQk1DUl9BTlJFU1RBUlQ7XFxuK1xcdGdlbV93cml0ZWwoYnAsIFBDU0NOVFJMLCBuZXcpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG1hY2JfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG5AQCAtNzUwLDcgKzc1NSw5IEBAIHN0YXRpYyB2b2lkIG1hY2JfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXFxuIFxcdFxcdGN0cmwgXFx1MDAyNj0gfihHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpKTtcXG4gXFx0XFx0bmNyIFxcdTAwMjY9IH5HRU1fQklUKEVOQUJMRV9IU19NQUMpO1xcbiBcXG4tXFx0XFx0aWYgKHN0YXRlLVxcdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7XFxuK1xcdFxcdGlmIChzdGF0ZS1cXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpIHtcXG4rXFx0XFx0XFx0Y3RybCB8PSBHRU1fQklUKFBDU1NFTCk7XFxuK1xcdFxcdH0gZWxzZSBpZiAoc3RhdGUtXFx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcXG4gXFx0XFx0XFx0Y3RybCB8PSBHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHN0YXRlLVxcdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSKSB7XFxuIFxcdFxcdFxcdGN0cmwgfD0gR0VNX0JJVChQQ1NTRUwpO1xcbkBAIC05NTcsNyArOTY0LDggQEAgc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWFjYl9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFxuIFxcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSKVxcbiBcXHRcXHRyZXR1cm4gXFx1MDAyNmJwLVxcdTAwM2VwaHlsaW5rX3VzeF9wY3M7XFxuLVxcdGVsc2UgaWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuK1xcdGVsc2UgaWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XFxuK1xcdCAgICAgICAgIGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuIFxcdFxcdHJldHVybiBcXHUwMDI2YnAtXFx1MDAzZXBoeWxpbmtfc2dtaWlfcGNzO1xcbiBcXHRlbHNlXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbkBAIC0xMDI1LDEzICsxMDMzLDE1IEBAIHN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gXFxuIFxcdGJwLVxcdTAwM2VwaHlsaW5rX3NnbWlpX3Bjcy5vcHMgPSBcXHUwMDI2bWFjYl9waHlsaW5rX3Bjc19vcHM7XFxuK1xcdGJwLVxcdTAwM2VwaHlsaW5rX3NnbWlpX3Bjcy5wb2xsID0gdHJ1ZTtcXG4gXFx0YnAtXFx1MDAzZXBoeWxpbmtfdXN4X3Bjcy5vcHMgPSBcXHUwMDI2bWFjYl9waHlsaW5rX3VzeF9wY3Nfb3BzO1xcbiBcXG4gXFx0YnAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFxcdTAwMjZkZXYtXFx1MDAzZWRldjtcXG4gXFx0YnAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjtcXG4gXFx0YnAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcXG4gXFxuLVxcdGlmIChicC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcXG4rXFx0aWYgKGJwLVxcdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHxcXG4rXFx0ICAgIGJwLVxcdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkge1xcbiBcXHRcXHRicC1cXHUwMDNlcGh5bGlua19jb25maWcucG9sbF9maXhlZF9zdGF0ZSA9IHRydWU7XFxuIFxcdFxcdGJwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5nZXRfZml4ZWRfc3RhdGUgPSBtYWNiX2dldF9wY3NfZml4ZWRfc3RhdGU7XFxuIFxcdFxcdC8qIFRoZSBQQ1NBVVRPTkVHIGJpdCBpbiBQQ1NDTlRSTCBpcyBvbiBvdXQgb2YgcmVzZXQuIFNldHRpbmdcXG5AQCAtMTA2MCw5ICsxMDcwLDEyIEBAIHN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0XFx0ICBicC1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbiBcXHRcXHRwaHlfaW50ZXJmYWNlX3NldF9yZ21paShicC1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbiBcXG4tXFx0XFx0aWYgKGJwLVxcdTAwM2VjYXBzIFxcdTAwMjYgTUFDQl9DQVBTX1BDUylcXG4rXFx0XFx0aWYgKGJwLVxcdTAwM2VjYXBzIFxcdTAwMjYgTUFDQl9DQVBTX1BDUykge1xcbitcXHRcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCxcXG4rXFx0XFx0XFx0XFx0ICBicC1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbiBcXHRcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLFxcbiBcXHRcXHRcXHRcXHQgIGJwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdGlmIChicC1cXHUwMDNlY2FwcyBcXHUwMDI2IE1BQ0JfQ0FQU19ISUdIX1NQRUVEKSB7XFxuIFxcdFxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIsXFxuQEAgLTQ5MzEsNyArNDk0NCw5IEBAIHN0YXRpYyBpbnQgbWFjYl9pbml0X2RmbHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0LyogU2V0IE1JSSBtYW5hZ2VtZW50IGNsb2NrIGRpdmlkZXIgKi9cXG4gXFx0dmFsID0gbWFjYl9tZGNfY2xrX2RpdihicCk7XFxuIFxcdHZhbCB8PSBtYWNiX2RidyhicCk7XFxuLVxcdGlmIChicC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuK1xcdGlmIChicC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKVxcbitcXHRcXHR2YWwgfD0gR0VNX0JJVChQQ1NTRUwpO1xcbitcXHRlbHNlIGlmIChicC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuIFxcdFxcdHZhbCB8PSBHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpO1xcbiBcXHRtYWNiX3dyaXRlbChicCwgTkNGR1IsIHZhbCk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1NjowNy4wNDQ5NjU3MzlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyODg4MTYzNjgzNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9DQURFTkNFXCIsXG4gICAgXCJNQUNCXCIsXG4gICAgXCJNQUNCX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY2JfcHJvYmVcIixcbiAgICBcIm1hY2JfcGNzX2FuX3Jlc3RhcnRcIixcbiAgICBcIm1hY2JfbWFjX2NvbmZpZ1wiLFxuICAgIFwibWFjYl9tYWNfc2VsZWN0X3Bjc1wiLFxuICAgIFwibWFjYl9taWlfcHJvYmVcIixcbiAgICBcIm1hY2JfaW5pdF9kZmx0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIENhZGVuY2UgTUFDQiBldGhlcm5ldCBkcml2ZXIgdG8gc3VwcG9ydCBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIGFuZCBpbXBsZW1lbnRzIHRoZSBgbWFjYl9wY3NfYW5fcmVzdGFydGAgcGh5bGluayBjYWxsYmFjay4gVGhlIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgaXRzIFBDSSB3cmFwcGVyIChgbWFjYl9wY2kuY2ApLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGZvciBmdXp6aW5nLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGhhbmRsZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGFuZCBsaW5rIHN0YXRlIG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNiMjQzMTE1NmVhNThlNjFkZDUxYThhNWRiYWYxNWYxYmQyYWM4YTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMzo1NjowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG5pbmRleCBkMzk0ZjFmNDNiNjg1Li4zMTBhZDhlYWMyMWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xuQEAgLTU4Myw3ICs1ODMsMTIgQEAgc3RhdGljIHZvaWQgbWFjYl9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4gXG4gc3RhdGljIHZvaWQgbWFjYl9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbiB7XG4tXHQvKiBOb3Qgc3VwcG9ydGVkICovXG4rXHRzdHJ1Y3QgbWFjYiAqYnAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgbWFjYiwgcGh5bGlua19zZ21paV9wY3MpO1xuK1x0dTMyIG9sZCwgbmV3O1xuK1xuK1x0b2xkID0gZ2VtX3JlYWRsKGJwLCBQQ1NDTlRSTCk7XG4rXHRuZXcgPSBvbGQgfCBCTUNSX0FOUkVTVEFSVDtcbitcdGdlbV93cml0ZWwoYnAsIFBDU0NOVFJMLCBuZXcpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG1hY2JfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbkBAIC03NTAsNyArNzU1LDkgQEAgc3RhdGljIHZvaWQgbWFjYl9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiBcdFx0Y3RybCBcdTAwMjY9IH4oR0VNX0JJVChTR01JSUVOKSB8IEdFTV9CSVQoUENTU0VMKSk7XG4gXHRcdG5jciBcdTAwMjY9IH5HRU1fQklUKEVOQUJMRV9IU19NQUMpO1xuIFxuLVx0XHRpZiAoc3RhdGUtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkge1xuK1x0XHRpZiAoc3RhdGUtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpIHtcbitcdFx0XHRjdHJsIHw9IEdFTV9CSVQoUENTU0VMKTtcbitcdFx0fSBlbHNlIGlmIChzdGF0ZS1cdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7XG4gXHRcdFx0Y3RybCB8PSBHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpO1xuIFx0XHR9IGVsc2UgaWYgKHN0YXRlLVx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpIHtcbiBcdFx0XHRjdHJsIHw9IEdFTV9CSVQoUENTU0VMKTtcbkBAIC05NTcsNyArOTY0LDggQEAgc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWFjYl9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcbiBcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSKVxuIFx0XHRyZXR1cm4gXHUwMDI2YnAtXHUwMDNlcGh5bGlua191c3hfcGNzO1xuLVx0ZWxzZSBpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbitcdGVsc2UgaWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XG4rXHQgICAgICAgICBpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKVxuIFx0XHRyZXR1cm4gXHUwMDI2YnAtXHUwMDNlcGh5bGlua19zZ21paV9wY3M7XG4gXHRlbHNlXG4gXHRcdHJldHVybiBOVUxMO1xuQEAgLTEwMjUsMTMgKzEwMzMsMTUgQEAgc3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbiBcdGJwLVx1MDAzZXBoeWxpbmtfc2dtaWlfcGNzLm9wcyA9IFx1MDAyNm1hY2JfcGh5bGlua19wY3Nfb3BzO1xuK1x0YnAtXHUwMDNlcGh5bGlua19zZ21paV9wY3MucG9sbCA9IHRydWU7XG4gXHRicC1cdTAwM2VwaHlsaW5rX3VzeF9wY3Mub3BzID0gXHUwMDI2bWFjYl9waHlsaW5rX3VzeF9wY3Nfb3BzO1xuIFxuIFx0YnAtXHUwMDNlcGh5bGlua19jb25maWcuZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZWRldjtcbiBcdGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjtcbiBcdGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbiBcbi1cdGlmIChicC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkge1xuK1x0aWYgKGJwLVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCB8fFxuK1x0ICAgIGJwLVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7XG4gXHRcdGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnBvbGxfZml4ZWRfc3RhdGUgPSB0cnVlO1xuIFx0XHRicC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5nZXRfZml4ZWRfc3RhdGUgPSBtYWNiX2dldF9wY3NfZml4ZWRfc3RhdGU7XG4gXHRcdC8qIFRoZSBQQ1NBVVRPTkVHIGJpdCBpbiBQQ1NDTlRSTCBpcyBvbiBvdXQgb2YgcmVzZXQuIFNldHRpbmdcbkBAIC0xMDYwLDkgKzEwNzAsMTIgQEAgc3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRcdCAgYnAtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuIFx0XHRwaHlfaW50ZXJmYWNlX3NldF9yZ21paShicC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4gXG4tXHRcdGlmIChicC1cdTAwM2VjYXBzIFx1MDAyNiBNQUNCX0NBUFNfUENTKVxuK1x0XHRpZiAoYnAtXHUwMDNlY2FwcyBcdTAwMjYgTUFDQl9DQVBTX1BDUykge1xuK1x0XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYLFxuK1x0XHRcdFx0ICBicC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4gXHRcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSxcbiBcdFx0XHRcdCAgYnAtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuK1x0XHR9XG4gXG4gXHRcdGlmIChicC1cdTAwM2VjYXBzIFx1MDAyNiBNQUNCX0NBUFNfSElHSF9TUEVFRCkge1xuIFx0XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIsXG5AQCAtNDkzMSw3ICs0OTQ0LDkgQEAgc3RhdGljIGludCBtYWNiX2luaXRfZGZsdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0LyogU2V0IE1JSSBtYW5hZ2VtZW50IGNsb2NrIGRpdmlkZXIgKi9cbiBcdHZhbCA9IG1hY2JfbWRjX2Nsa19kaXYoYnApO1xuIFx0dmFsIHw9IG1hY2JfZGJ3KGJwKTtcbi1cdGlmIChicC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbitcdGlmIChicC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpXG4rXHRcdHZhbCB8PSBHRU1fQklUKFBDU1NFTCk7XG4rXHRlbHNlIGlmIChicC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbiBcdFx0dmFsIHw9IEdFTV9CSVQoU0dNSUlFTikgfCBHRU1fQklUKFBDU1NFTCk7XG4gXHRtYWNiX3dyaXRlbChicCwgTkNGR1IsIHZhbCk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1NjowNy4wNDQ5NjY4OTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTQzMTg1NDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ2FkZW5jZSBNQUNCIEV0aGVybmV0IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBGZWFzaWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jYC4gSXQncyB0b3VjaGluZyBzZXZlcmFsIGZ1bmN0aW9uczogYG1hY2JfcGNzX2FuX3Jlc3RhcnRgLCBgbWFjYl9tYWNfY29uZmlnYCwgYG1hY2JfbWFjX3NlbGVjdF9wY3NgLCBgbWFjYl9taWlfcHJvYmVgLCBhbmQgYG1hY2JfaW5pdF9kZmx0YC4gVGhlIGNvcmUgdGhpbmcgaXMsIGl0J3MgYWRkaW5nIHN1cHBvcnQgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYYCwgd2hpY2ggaXMgZ3JlYXQgYnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyBpbiBhIGZ1enppbmcgZW52aXJvbm1lbnQ/IFRoaXMgaXMgYSBDYWRlbmNlIE1BQ0IvR0VNIEV0aGVybmV0IGNvbnRyb2xsZXIgZHJpdmVyLCBzbyB0aGF0IHJhaXNlcyBpbW1lZGlhdGUgY29uY2VybnMuXG5cbkZpcnN0LCBJIG5lZWQgdG8ga25vdyBpZiBRRU1VIGV2ZW4gKmVtdWxhdGVzKiB0aGlzIHRoaW5nLiBSaWdodCwgbGV0IG1lIGNoZWNrLi4uIHllcCwgUUVNVSBoYXMgYGh3L25ldC9jYWRlbmNlX2dlbS5jYC4gT2theSwgdGhhdCdzIGEgZ29vZCBzdGFydC4gSSBrbm93IGl0J3MgdXNlZCBpbiB0aGluZ3MgbGlrZSBYaWxpbnggWnlucSBhbmQgb3RoZXIgQVJNIGJvYXJkcy4gQnV0IGlzIGl0IGF2YWlsYWJsZSBvbiBzdGFuZGFyZCB4ODYgUUVNVT8gSG1tLCB0aGF0J3MgdGhlIHJ1Yi4gSXMgaXQgYW4gQVJNLXNwZWNpZmljIGRldmljZSBvciBjYW4gaXQgYmUgaW5zdGFudGlhdGVkIHZpYSBQQ0k/IEkgbmVlZCB0byBrbm93IGlmIGl0J3MgYSBwbGF0Zm9ybSBvciBQQ0kgZGV2aWNlLlxuXG5MZXQncyBzZWUuLi4gbG9va2luZyBhdCBgbWFjYl9pbml0X2RmbHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilgLCBhaCBoYSwgaXQncyBhICpwbGF0Zm9ybSogZGV2aWNlLiBUaGF0IG1lYW5zIGl0J3Mgbm90IGEgUENJIGRldmljZS4gQW5kIGhlcmUgaXMgd2hlcmUgdGhpbmdzIGdldCB0cmlja3kuIEluIHN5emthbGxlciwgd2UgdXN1YWxseSBmb2N1cyBvbiB4ODZfNjQsIGFybTY0LCBhbmQgdGhlIGxpa2UuIFRoaXMgYmVpbmcgYSBwbGF0Zm9ybSBkZXZpY2UsIHRoYXQgaW1wbGllcyBpdCByZXF1aXJlcyBhIHNwZWNpZmljIGRldmljZSB0cmVlIG9yIGJvYXJkIHN1cHBvcnQuXG5cblRoZSByZWFsIHByb2JsZW0gaXMsIGNhbiBJIHJlYWxpc3RpY2FsbHkgZnV6eiB0aGlzIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gUGxhdGZvcm0gZGV2aWNlcyB0aGF0IGFyZW4ndCBpbnN0YW50aWF0ZWQgaW4gdGhlIHN0YW5kYXJkIHRlc3QgZW52aXJvbm1lbnRzIChsaWtlIHRoZSB2aXJ0IGJvYXJkIG9uIGFybTY0LCBvciB0aGUgcGMvcTM1IG9uIHg4Nl82NCkgYXJlIG9mdGVuIHVucmVhY2hhYmxlIHVubGVzcyB0aGVyZSdzIGEgd2F5IHRvIGluc3RhbnRpYXRlIHRoZW0uIERldmljZSB0cmVlIG92ZXJsYXlzIHdvdWxkIHdvcmssIGJ1dCBzeXprYWxsZXIgZG9lc24ndCBkbyB0aGF0IGJ5IGRlZmF1bHQgZm9yIHRoaXMgc3BlY2lmaWMgZGV2aWNlLiBTbyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWdgIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBwb3NzaWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjMzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6MTUuOTg4MTU1MDc3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNDI0NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUNCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9MjA9aWYgTkVUX1ZFTkRPUl9DQURFTkNFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzoyMjpjb25maWcgTUFDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yMy1cXHR0cmlzdGF0ZSBcXFwiQ2FkZW5jZSBNQUNCL0dFTSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzozNzpjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0zOC1cXHRib29sIFxcXCJVc2UgSUVFRSAxNTg4IGh3c3RhbXBcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjQ1OmNvbmZpZyBNQUNCX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiQ2FkZW5jZSBQQ0kgTUFDQi9HRU0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6MTYuMDMwNTgzNTA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgwMDIzMTgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipNQUNCIFBDSSBDb25maWd1cmF0aW9uOiBEaXZpbmcgaW50byB0aGUgQ29kZSoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gSSBzZWUgYGNvbmZpZyBNQUNCX1BDSWAhIFRoYXQncyBhIGtleSBkZXRhaWwgSSBhbG1vc3QgbWlzc2VkLiBUaGlzIGxpa2VseSBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIFBDSS1iYXNlZCB2ZXJzaW9uIG9mIHRoZSBNQUNCIEV0aGVybmV0IGNvbnRyb2xsZXIuIE5vdywgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBzcGVjaWZpYyB2YXJpYW50IGlzIGluaXRpYWxpemVkIGFuZCBtYW5hZ2VkLlxuXG5MZXQncyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIHdvdWxkIGJlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmNgLiBUaGF0IHNob3VsZCBjb250YWluIGFsbCB0aGUgUENJLXNwZWNpZmljIGluaXRpYWxpemF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgZGV2aWNlIGRyaXZlciBjb2RlIGZvciB0aGUgTUFDQiB3aGVuIG9wZXJhdGluZyBvbiBhIFBDSSBidXMuIEknbSBleHBlY3RpbmcgdG8gZmluZCBkZXRhaWxzIG9uIGhvdyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgaXMgcHJvYmVkLCB0aGUgaW50ZXJydXB0IGxpbmVzIGFyZSBoYW5kbGVkLCBhbmQgaG93IHRoZSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBuZXR3b3JrIHN0YWNrLiBJJ2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueSBwb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zIGFuZCBob3cgdGhlIFBDSSBjb25maWd1cmF0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBjb3JlIE1BQ0IgZHJpdmVyIGZ1bmN0aW9uYWxpdHkuIFRpbWUgdG8gZ2V0IGNvZGluZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NDQzNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjIwLjgzMDgxOTY3NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTAzMDkyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWNiX3BjaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9NDU9Y29uZmlnIE1BQ0JfUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNTEtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjUyOlxcdCAgd2lsbCBiZSBjYWxsZWQgbWFjYl9wY2kuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTUzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfTUFDQikgKz0gbWFjYi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTUFDQl9QQ0kpICs9IG1hY2JfcGNpLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTk6I2RlZmluZSBQQ0lfRFJJVkVSX05BTUUgXFxcIm1hY2JfcGNpXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0yMC0jZGVmaW5lIFBMQVRfRFJJVkVSX05BTUUgXFxcIm1hY2JcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM9MTIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBkZXZfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEyNTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWFjYl9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjYtXFx0Lm5hbWUgICAgID0gUENJX0RSSVZFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTMyOm1vZHVsZV9wY2lfZHJpdmVyKG1hY2JfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEzMy1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZGV2X2lkX3RhYmxlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6MjAuODcxODU2MzY1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU2MzIyMDQwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUENJIEluc3RhbnRpYXRpb24gYW5kIERldmljZSBJRCBUYWJsZSBJbnNwZWN0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYSBNQUNCIGNvbnRyb2xsZXIsIGFuZCB0aGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IGl0IGNhbiBiZSBicm91Z2h0IHVwIHRocm91Z2ggUENJLiBFeGNlbGxlbnQuIFRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uZmlybSB0aGlzLCBhbmQgdGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBkZXZfaWRfdGFibGVgIHdpdGhpbiBgbWFjYl9wY2kuY2AuIEkgbmVlZCB0byB2ZXJpZnkgd2hpY2ggUENJIGRldmljZSBJRHMgYXJlIHN1cHBvcnRlZCBmb3IgdGhpcyBzcGVjaWZpYyBNQUNCIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBkcml2ZXIncyBkZXZpY2UgSUQgdGFibGUgaW5jbHVkZXMgdGhlIHNwZWNpZmljIElEcyBJJ20gZGVhbGluZyB3aXRoLiBUaGlzIGlzIGNydWNpYWwgZm9yIHByb3BlciBQQ0kgZGV2aWNlIHByb2JlIGFuZCBkcml2ZXIgYXR0YWNobWVudC4gTGV0J3Mgc2VlIGlmIHRob3NlIElEcyBtYXRjaCB1cC4gR290dGEgY2hlY2sgZm9yIHRoZSB2ZW5kb3IgYW5kIGRldmljZSBJRCwgc3VidmVuZG9yLCBzdWJkZXZpY2UuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSwgYnV0IEkganVzdCB3YW50IHRvIHF1aWNrbHkgY29uZmlybSBpdCdzIG5vdCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBvciB2YXJpYXRpb24gYmVmb3JlIEkgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjQxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6MjUuNDM1MDc5MDA2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExMDpcXHRcXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0X2RldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4gMTExOlxcdFxcdHN0cnVjdCBtYWNiX3BsYXRmb3JtX2RhdGEgKnBsYXRfZGF0YSA9IGRldl9nZXRfcGxhdGRhdGEoXFx1MDAyNnBsYXRfZGV2LVxcdTAwM2VkZXYpO1xcbiAxMTI6XFx0XFx0c3RydWN0IGNsayAqcGNsayA9IHBsYXRfZGF0YS1cXHUwMDNlcGNsaztcXG4gMTEzOlxcdFxcdHN0cnVjdCBjbGsgKmhjbGsgPSBwbGF0X2RhdGEtXFx1MDAzZWhjbGs7XFxuIDExNDpcXHRcXG4gMTE1OlxcdFxcdHBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKHBsYXRfZGV2KTtcXG4gMTE2OlxcdFxcdGNsa191bnJlZ2lzdGVyX2ZpeGVkX3JhdGUocGNsayk7XFxuIDExNzpcXHRcXHRjbGtfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKGhjbGspO1xcbiAxMTg6XFx0fVxcbiAxMTk6XFx0XFxuIDEyMDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGV2X2lkX3RhYmxlW10gPSB7XFxuIDEyMTpcXHRcXHR7IFBDSV9WREVWSUNFKENETlMsIFBDSV9ERVZJQ0VfSURfQ0ROU19NQUNCKSB9LFxcbiAxMjI6XFx0XFx0eyAwLCB9XFxuIDEyMzpcXHR9O1xcbiAxMjQ6XFx0XFxuIDEyNTpcXHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWFjYl9wY2lfZHJpdmVyID0ge1xcbiAxMjY6XFx0XFx0Lm5hbWUgICAgID0gUENJX0RSSVZFUl9OQU1FLFxcbiAxMjc6XFx0XFx0LmlkX3RhYmxlID0gZGV2X2lkX3RhYmxlLFxcbiAxMjg6XFx0XFx0LnByb2JlICAgID0gbWFjYl9wcm9iZSxcXG4gMTI5OlxcdFxcdC5yZW1vdmVcXHQgID0gbWFjYl9yZW1vdmUsXFxuIDEzMDpcXHR9O1xcbiAxMzE6XFx0XFxuIDEzMjpcXHRtb2R1bGVfcGNpX2RyaXZlcihtYWNiX3BjaV9kcml2ZXIpO1xcbiAxMzM6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGRldl9pZF90YWJsZSk7XFxuIDEzNDpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuIDEzNTpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkNhZGVuY2UgTklDIFBDSSB3cmFwcGVyXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjI1LjQzNTE0MDY3NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjE1NDE1NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTUFDQiBFdGhlcm5ldCBEcml2ZXIgdmlhIFBDSSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyB1c2luZyBgUENJX1ZERVZJQ0UoQ0ROUywgUENJX0RFVklDRV9JRF9DRE5TX01BQ0IpYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEgQ2FkZW5jZSBNQUNCIGNvbnRyb2xsZXIgYW5kIGl0J3MgYmVpbmcgdXNlZCB3aXRoIFBDSS4gR3JlYXQhIElmIGBDT05GSUdfTUFDQl9QQ0lgIGlzIGVuYWJsZWQsIHdlJ3ZlIGdvdCBhIHBvdGVudGlhbCBQQ0kgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGF0J3MgdGhlIG1vc3QgbGlrZWx5IGF0dGFjayB2ZWN0b3IsIGFuZCBzaW5jZSBpdCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGl0IGlzIGlkZWFsLlxuXG5Ob3csIHdhaXQgYSBzZWNvbmQuLi4gdGhlIHBhdGNoIG1vZGlmaWVzIGBtYWNiX21haW4uY2AuIFRoYXQncyB0aGUgY29yZSBkcml2ZXIgZmlsZSwgdXN1YWxseS4gRG9lcyBgbWFjYl9wY2kuY2AsIHdoaWNoIGlzIHRoZSBQQ0ktc3BlY2lmaWMgcGFydCwgcmVseSBvbiB0aGUgY29yZSBkcml2ZXI/IE5lZWQgdG8gbWFrZSBzdXJlLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgcHJvYmUgZnVuY3Rpb24gaW4gYG1hY2JfcGNpLmNgLiBBaCwgeWVzISBJdCByZWdpc3RlcnMgYSBwbGF0Zm9ybSBkZXZpY2UgbmFtZWQgXCJtYWNiLlwiIE9rYXksIHNvIHRoZSBQQ0kgY29kZSBpcyBsaWtlbHkgdXNpbmcgdGhlIGNvcmUgZHJpdmVyIGNvZGUuIEV4Y2VsbGVudC4gTG9va3MgcHJvbWlzaW5nIGZvciB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTYxLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6MzAuMjU2Njg0NDQzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2MDpcXHRcXHQvKiBpbml0aWFsaXplIGNsb2NrcyAqL1xcbiAgNjE6XFx0XFx0cGxhdF9kYXRhLnBjbGsgPSBjbGtfcmVnaXN0ZXJfZml4ZWRfcmF0ZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwicGNsa1xcXCIsIE5VTEwsIDAsXFxuICA2MjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgR0VNX1BDTEtfUkFURSk7XFxuICA2MzpcXHRcXHRpZiAoSVNfRVJSKHBsYXRfZGF0YS5wY2xrKSkge1xcbiAgNjQ6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihwbGF0X2RhdGEucGNsayk7XFxuICA2NTpcXHRcXHRcXHRnb3RvIGVycl9wY2xrX3JlZ2lzdGVyO1xcbiAgNjY6XFx0XFx0fVxcbiAgNjc6XFx0XFxuICA2ODpcXHRcXHRwbGF0X2RhdGEuaGNsayA9IGNsa19yZWdpc3Rlcl9maXhlZF9yYXRlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJoY2xrXFxcIiwgTlVMTCwgMCxcXG4gIDY5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBHRU1fSENMS19SQVRFKTtcXG4gIDcwOlxcdFxcdGlmIChJU19FUlIocGxhdF9kYXRhLmhjbGspKSB7XFxuICA3MTpcXHRcXHRcXHRlcnIgPSBQVFJfRVJSKHBsYXRfZGF0YS5oY2xrKTtcXG4gIDcyOlxcdFxcdFxcdGdvdG8gZXJyX2hjbGtfcmVnaXN0ZXI7XFxuICA3MzpcXHRcXHR9XFxuICA3NDpcXHRcXG4gIDc1OlxcdFxcdC8qIHNldCB1cCBwbGF0Zm9ybSBkZXZpY2UgaW5mbyAqL1xcbiAgNzY6XFx0XFx0bWVtc2V0KFxcdTAwMjZwbGF0X2luZm8sIDAsIHNpemVvZihwbGF0X2luZm8pKTtcXG4gIDc3OlxcdFxcdHBsYXRfaW5mby5wYXJlbnQgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiAgNzg6XFx0XFx0cGxhdF9pbmZvLmZ3bm9kZSA9IHBkZXYtXFx1MDAzZWRldi5md25vZGU7XFxuICA3OTpcXHRcXHRwbGF0X2luZm8ubmFtZSA9IFBMQVRfRFJJVkVSX05BTUU7XFxuICA4MDpcXHRcXHRwbGF0X2luZm8uaWQgPSBwZGV2LVxcdTAwM2VkZXZmbjtcXG4gIDgxOlxcdFxcdHBsYXRfaW5mby5yZXMgPSByZXM7XFxuICA4MjpcXHRcXHRwbGF0X2luZm8ubnVtX3JlcyA9IEFSUkFZX1NJWkUocmVzKTtcXG4gIDgzOlxcdFxcdHBsYXRfaW5mby5kYXRhID0gXFx1MDAyNnBsYXRfZGF0YTtcXG4gIDg0OlxcdFxcdHBsYXRfaW5mby5zaXplX2RhdGEgPSBzaXplb2YocGxhdF9kYXRhKTtcXG4gIDg1OlxcdFxcdHBsYXRfaW5mby5kbWFfbWFzayA9IHBkZXYtXFx1MDAzZWRtYV9tYXNrO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHQvKiByZWdpc3RlciBwbGF0Zm9ybSBkZXZpY2UgKi9cXG4gIDg4OlxcdFxcdHBsYXRfZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX2Z1bGwoXFx1MDAyNnBsYXRfaW5mbyk7XFxuICA4OTpcXHRcXHRpZiAoSVNfRVJSKHBsYXRfZGV2KSkge1xcbiAgOTA6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihwbGF0X2Rldik7XFxuICA5MTpcXHRcXHRcXHRnb3RvIGVycl9wbGF0X2Rldl9yZWdpc3RlcjtcXG4gIDkyOlxcdFxcdH1cXG4gIDkzOlxcdFxcbiAgOTQ6XFx0XFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIHBsYXRfZGV2KTtcXG4gIDk1OlxcdFxcbiAgOTY6XFx0XFx0cmV0dXJuIDA7XFxuICA5NzpcXHRcXG4gIDk4OlxcdGVycl9wbGF0X2Rldl9yZWdpc3RlcjpcXG4gIDk5OlxcdFxcdGNsa191bnJlZ2lzdGVyX2ZpeGVkX3JhdGUocGxhdF9kYXRhLmhjbGspO1xcbiAxMDA6XFx0XFxuIDEwMTpcXHRlcnJfaGNsa19yZWdpc3RlcjpcXG4gMTAyOlxcdFxcdGNsa191bnJlZ2lzdGVyX2ZpeGVkX3JhdGUocGxhdF9kYXRhLnBjbGspO1xcbiAxMDM6XFx0XFxuIDEwNDpcXHRlcnJfcGNsa19yZWdpc3RlcjpcXG4gMTA1OlxcdFxcdHJldHVybiBlcnI7XFxuIDEwNjpcXHR9XFxuIDEwNzpcXHRcXG4gMTA4OlxcdHN0YXRpYyB2b2lkIG1hY2JfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiAxMDk6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1NjozMC4yNTY3NTU4NDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0NDE2ODY1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqbWFjYiBEZXZpY2UgQmluZGluZyAtIEEgUXVpY2sgQ2hlY2sqKlxuXG5SaWdodCwgc28gSSBzZWUgdGhpcyBcIm1hY2JcIiBwbGF0Zm9ybSBkZXZpY2UgcmVnaXN0ZXJpbmcuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQgc2hvdWxkIGJpbmQgdG8gdGhlIGBtYWNiYCBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgb25lIGRlZmluZWQgaW4gYG1hY2JfbWFpbi5jYC4gTWFrZXMgc2Vuc2UsIHRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBjb25zaXN0ZW50LCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHNpZ24uIEJ1dCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBJIGp1c3Qgd2FudCB0byBtYWtlIGEgcXVpY2sgdmVyaWZpY2F0aW9uLiBMZXQgbWUganVzdCBjb25maXJtIHRoZSBkcml2ZXIncyBuYW1lIGluIGBtYWNiX21haW4uY2AgbWF0Y2hlcyB0aGUgcmVnaXN0ZXJlZCBkZXZpY2UuIE5vdGhpbmcgY29tcGxleCwganVzdCBtYWtpbmcgc3VyZSB0aGUgZnVuZGFtZW50YWxzIGFyZSBzb3VuZCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIG1vcmUgaW50ZXJlc3RpbmcgYXNwZWN0cyBvZiB0aGUgZHJpdmVyJ3Mgb3BlcmF0aW9uLiBHb3R0YSBzdGF5IHNoYXJwIVxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDkzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1NjozMy44MDA5MjY3NDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODEwNjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDI1OTkgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDEtI2luY2x1ZGUgXFx1MDAzY25ldC9wa3Rfc2NoZWQuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQyOiNpbmNsdWRlIFxcXCJtYWNiLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ0LS8qIFRoaXMgc3RydWN0dXJlIGlzIG9ubHkgdXNlZCBmb3IgTUFDQiBvbiBTaUZpdmUgRlU1NDAgZGV2aWNlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDU6c3RydWN0IHNpZml2ZV9mdTU0MF9tYWNiX21nbXQge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDYtXFx0dm9pZCBfX2lvbWVtICpyZWc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEyOC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEyOTpzdGF0aWMgdW5zaWduZWQgaW50IG1hY2JfZG1hX2Rlc2NfZ2V0X3NpemUoc3RydWN0IG1hY2IgKmJwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTMwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEzMTpcXHR1bnNpZ25lZCBpbnQgZGVzY19zaXplID0gc2l6ZW9mKHN0cnVjdCBtYWNiX2RtYV9kZXNjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEzMzpcXHRpZiAobWFjYl9kbWE2NChicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMzQ6XFx0XFx0ZGVzY19zaXplICs9IHNpemVvZihzdHJ1Y3QgbWFjYl9kbWFfZGVzY182NCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMzU6XFx0aWYgKG1hY2JfZG1hX3B0cChicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMzY6XFx0XFx0ZGVzY19zaXplICs9IHNpemVvZihzdHJ1Y3QgbWFjYl9kbWFfZGVzY19wdHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNDE6c3RhdGljIHVuc2lnbmVkIGludCBtYWNiX2Fkal9kbWFfZGVzY19pZHgoc3RydWN0IG1hY2IgKmJwLCB1bnNpZ25lZCBpbnQgZGVzY19pZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNDIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTQzOlxcdHJldHVybiBkZXNjX2lkeCAqICgxICsgbWFjYl9kbWE2NChicCkgKyBtYWNiX2RtYV9wdHAoYnApKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE0NC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNDY6c3RhdGljIHN0cnVjdCBtYWNiX2RtYV9kZXNjXzY0ICptYWNiXzY0Yl9kZXNjKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IG1hY2JfZG1hX2Rlc2MgKmRlc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNDcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTQ4OlxcdHJldHVybiAoc3RydWN0IG1hY2JfZG1hX2Rlc2NfNjQgKikoKHZvaWQgKilkZXNjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNDk6XFx0XFx0KyBzaXplb2Yoc3RydWN0IG1hY2JfZG1hX2Rlc2MpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE1MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE1Mi0vKiBSaW5nIGJ1ZmZlciBhY2Nlc3NvcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE1MzpzdGF0aWMgdW5zaWduZWQgaW50IG1hY2JfdHhfcmluZ193cmFwKHN0cnVjdCBtYWNiICpicCwgdW5zaWduZWQgaW50IGluZGV4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTU4OnN0YXRpYyBzdHJ1Y3QgbWFjYl9kbWFfZGVzYyAqbWFjYl90eF9kZXNjKHN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE1OS1cXHRcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBpbmRleClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNjE6XFx0aW5kZXggPSBtYWNiX3R4X3Jpbmdfd3JhcChxdWV1ZS1cXHUwMDNlYnAsIGluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE2MjpcXHRpbmRleCA9IG1hY2JfYWRqX2RtYV9kZXNjX2lkeChxdWV1ZS1cXHUwMDNlYnAsIGluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE2My1cXHRyZXR1cm4gXFx1MDAyNnF1ZXVlLVxcdTAwM2V0eF9yaW5nW2luZGV4XTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTY2OnN0YXRpYyBzdHJ1Y3QgbWFjYl90eF9za2IgKm1hY2JfdHhfc2tiKHN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE2Ny1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGluZGV4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTY4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE2OTpcXHRyZXR1cm4gXFx1MDAyNnF1ZXVlLVxcdTAwM2V0eF9za2JbbWFjYl90eF9yaW5nX3dyYXAocXVldWUtXFx1MDAzZWJwLCBpbmRleCldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTcwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE3MjpzdGF0aWMgZG1hX2FkZHJfdCBtYWNiX3R4X2RtYShzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWUsIHVuc2lnbmVkIGludCBpbmRleClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE3My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE3NjpcXHRvZmZzZXQgPSBtYWNiX3R4X3Jpbmdfd3JhcChxdWV1ZS1cXHUwMDNlYnAsIGluZGV4KSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNzc6XFx0XFx0XFx0bWFjYl9kbWFfZGVzY19nZXRfc2l6ZShxdWV1ZS1cXHUwMDNlYnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxODI6c3RhdGljIHVuc2lnbmVkIGludCBtYWNiX3J4X3Jpbmdfd3JhcChzdHJ1Y3QgbWFjYiAqYnAsIHVuc2lnbmVkIGludCBpbmRleClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE4My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE4NzpzdGF0aWMgc3RydWN0IG1hY2JfZG1hX2Rlc2MgKm1hY2JfcnhfZGVzYyhzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWUsIHVuc2lnbmVkIGludCBpbmRleClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE4OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxODk6XFx0aW5kZXggPSBtYWNiX3J4X3Jpbmdfd3JhcChxdWV1ZS1cXHUwMDNlYnAsIGluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE5MDpcXHRpbmRleCA9IG1hY2JfYWRqX2RtYV9kZXNjX2lkeChxdWV1ZS1cXHUwMDNlYnAsIGluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE5MS1cXHRyZXR1cm4gXFx1MDAyNnF1ZXVlLVxcdTAwM2VyeF9yaW5nW2luZGV4XTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTk0OnN0YXRpYyB2b2lkICptYWNiX3J4X2J1ZmZlcihzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWUsIHVuc2lnbmVkIGludCBpbmRleClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE5NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xOTYtXFx0cmV0dXJuIHF1ZXVlLVxcdTAwM2VyeF9idWZmZXJzICsgcXVldWUtXFx1MDAzZWJwLVxcdTAwM2VyeF9idWZmZXJfc2l6ZSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxOTc6XFx0ICAgICAgIG1hY2JfcnhfcmluZ193cmFwKHF1ZXVlLVxcdTAwM2VicCwgaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjAwLS8qIEkvTyBhY2Nlc3NvcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjIwMTpzdGF0aWMgdTMyIGh3X3JlYWRsX25hdGl2ZShzdHJ1Y3QgbWFjYiAqYnAsIGludCBvZmZzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMDIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyMDY6c3RhdGljIHZvaWQgaHdfd3JpdGVsX25hdGl2ZShzdHJ1Y3QgbWFjYiAqYnAsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTIwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTIxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjIxMTpzdGF0aWMgdTMyIGh3X3JlYWRsKHN0cnVjdCBtYWNiICpicCwgaW50IG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTIxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTIxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjIxNjpzdGF0aWMgdm9pZCBod193cml0ZWwoc3RydWN0IG1hY2IgKmJwLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0yMzg9c3RhdGljIGJvb2wgaHdfaXNfZ2VtKHZvaWQgX19pb21lbSAqYWRkciwgYm9vbCBuYXRpdmVfaW8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjI1MDpzdGF0aWMgdm9pZCBtYWNiX3NldF9od2FkZHIoc3RydWN0IG1hY2IgKmJwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjU1LVxcdGJvdHRvbSA9IGdldF91bmFsaWduZWRfbGUzMihicC1cXHUwMDNlZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNTY6XFx0bWFjYl9vcl9nZW1fd3JpdGVsKGJwLCBTQTFCLCBib3R0b20pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjU3LVxcdHRvcCA9IGdldF91bmFsaWduZWRfbGUxNihicC1cXHUwMDNlZGV2LVxcdTAwM2VkZXZfYWRkciArIDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MjU4OlxcdG1hY2Jfb3JfZ2VtX3dyaXRlbChicCwgU0ExVCwgdG9wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjY1LVxcdC8qIENsZWFyIHVudXNlZCBhZGRyZXNzIHJlZ2lzdGVyIHNldHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjI2NjpcXHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBMkIsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MjY3OlxcdG1hY2Jfb3JfZ2VtX3dyaXRlbChicCwgU0EyVCwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNjg6XFx0bWFjYl9vcl9nZW1fd3JpdGVsKGJwLCBTQTNCLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjI2OTpcXHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBM1QsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MjcwOlxcdG1hY2Jfb3JfZ2VtX3dyaXRlbChicCwgU0E0QiwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNzE6XFx0bWFjYl9vcl9nZW1fd3JpdGVsKGJwLCBTQTRULCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI3Mi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNzQ6c3RhdGljIHZvaWQgbWFjYl9nZXRfaHdhZGRyKHN0cnVjdCBtYWNiICpicClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI3NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI4Mi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgNDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyODM6XFx0XFx0Ym90dG9tID0gbWFjYl9vcl9nZW1fcmVhZGwoYnAsIFNBMUIgKyBpICogOCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyODQ6XFx0XFx0dG9wID0gbWFjYl9vcl9nZW1fcmVhZGwoYnAsIFNBMVQgKyBpICogOCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yODUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMwMzpzdGF0aWMgaW50IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKHN0cnVjdCBtYWNiICpicClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMxMTpzdGF0aWMgaW50IG1hY2JfbWRpb19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgbWlpX2lkLCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzEyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMxMzpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMTQtXFx0aW50IHN0YXR1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzIwOlxcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMyMS1cXHRpZiAoc3RhdHVzIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzI0OlxcdG1hY2Jfd3JpdGVsKGJwLCBNQU4sIChNQUNCX0JGKFNPRiwgTUFDQl9NQU5fQzIyX1NPRilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMyNS1cXHRcXHRcXHQgICAgICB8IE1BQ0JfQkYoUlcsIE1BQ0JfTUFOX0MyMl9SRUFEKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozMzA6XFx0c3RhdHVzID0gbWFjYl9tZGlvX3dhaXRfZm9yX2lkbGUoYnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzMxLVxcdGlmIChzdGF0dXMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozMzQ6XFx0c3RhdHVzID0gTUFDQl9CRkVYVChEQVRBLCBtYWNiX3JlYWRsKGJwLCBNQU4pKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzQyOnN0YXRpYyBpbnQgbWFjYl9tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBtaWlfaWQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM0My1cXHRcXHRcXHQgICAgICBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzQ0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM0NTpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNDYtXFx0aW50IHN0YXR1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzU0OlxcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM1NS1cXHRpZiAoc3RhdHVzIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzU4OlxcdG1hY2Jfd3JpdGVsKGJwLCBNQU4sIChNQUNCX0JGKFNPRiwgTUFDQl9NQU5fQzQ1X1NPRilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM1OS1cXHRcXHRcXHQgICAgICB8IE1BQ0JfQkYoUlcsIE1BQ0JfTUFOX0M0NV9BRERSKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozNjU6XFx0c3RhdHVzID0gbWFjYl9tZGlvX3dhaXRfZm9yX2lkbGUoYnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzY2LVxcdGlmIChzdGF0dXMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozNjk6XFx0bWFjYl93cml0ZWwoYnAsIE1BTiwgKE1BQ0JfQkYoU09GLCBNQUNCX01BTl9DNDVfU09GKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzcwLVxcdFxcdFxcdCAgICAgIHwgTUFDQl9CRihSVywgTUFDQl9NQU5fQzQ1X1JFQUQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM3NTpcXHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNzYtXFx0aWYgKHN0YXR1cyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM3OTpcXHRzdGF0dXMgPSBNQUNCX0JGRVhUKERBVEEsIG1hY2JfcmVhZGwoYnAsIE1BTikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzgwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozODc6c3RhdGljIGludCBtYWNiX21kaW9fd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBtaWlfaWQsIGludCByZWdudW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zODgtXFx0XFx0XFx0ICAgICAgIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM4OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozOTA6XFx0c3RydWN0IG1hY2IgKmJwID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzkxLVxcdGludCBzdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM5NzpcXHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zOTgtXFx0aWYgKHN0YXR1cyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQwMTpcXHRtYWNiX3dyaXRlbChicCwgTUFOLCAoTUFDQl9CRihTT0YsIE1BQ0JfTUFOX0MyMl9TT0YpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MDItXFx0XFx0XFx0ICAgICAgfCBNQUNCX0JGKFJXLCBNQUNCX01BTl9DMjJfV1JJVEUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQwODpcXHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MDktXFx0aWYgKHN0YXR1cyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQxODpzdGF0aWMgaW50IG1hY2JfbWRpb193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IG1paV9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQxOS1cXHRcXHRcXHQgICAgICAgaW50IGRldmFkLCBpbnQgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MjEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDIyOlxcdHN0cnVjdCBtYWNiICpicCA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQyMy1cXHRpbnQgc3RhdHVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0MzE6XFx0c3RhdHVzID0gbWFjYl9tZGlvX3dhaXRfZm9yX2lkbGUoYnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDMyLVxcdGlmIChzdGF0dXMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0MzU6XFx0bWFjYl93cml0ZWwoYnAsIE1BTiwgKE1BQ0JfQkYoU09GLCBNQUNCX01BTl9DNDVfU09GKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDM2LVxcdFxcdFxcdCAgICAgIHwgTUFDQl9CRihSVywgTUFDQl9NQU5fQzQ1X0FERFIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ0MjpcXHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NDMtXFx0aWYgKHN0YXR1cyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ0NjpcXHRtYWNiX3dyaXRlbChicCwgTUFOLCAoTUFDQl9CRihTT0YsIE1BQ0JfTUFOX0M0NV9TT0YpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NDctXFx0XFx0XFx0ICAgICAgfCBNQUNCX0JGKFJXLCBNQUNCX01BTl9DNDVfV1JJVEUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1MzpcXHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTQtXFx0aWYgKHN0YXR1cyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ2MzpzdGF0aWMgdm9pZCBtYWNiX2luaXRfYnVmZmVycyhzdHJ1Y3QgbWFjYiAqYnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDY1OlxcdHN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2Ni1cXHR1bnNpZ25lZCBpbnQgcTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDY4LVxcdC8qIFNpbmdsZSByZWdpc3RlciBmb3IgYWxsIHF1ZXVlcycgaGlnaCAzMiBiaXRzLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDY5OlxcdGlmIChtYWNiX2RtYTY0KGJwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDcwOlxcdFxcdG1hY2Jfd3JpdGVsKGJwLCBSQlFQSCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3MS1cXHRcXHRcXHQgICAgdXBwZXJfMzJfYml0cyhicC1cXHUwMDNlcXVldWVzWzBdLnJ4X3JpbmdfZG1hKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NzI6XFx0XFx0bWFjYl93cml0ZWwoYnAsIFRCUVBILFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDczLVxcdFxcdFxcdCAgICB1cHBlcl8zMl9iaXRzKGJwLVxcdTAwM2VxdWV1ZXNbMF0udHhfcmluZ19kbWEpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDgyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDgzOiAqIG1hY2Jfc2V0X3R4X2NsaygpIC0gU2V0IGEgY2xvY2sgdG8gYSBuZXcgZnJlcXVlbmN5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0ODQ6ICogQGJwOlxcdFxcdHBvaW50ZXIgdG8gc3RydWN0IG1hY2JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ4NS0gKiBAc3BlZWQ6XFx0TmV3IGZyZXF1ZW5jeSBpbiBIelxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDg2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDg3OnN0YXRpYyB2b2lkIG1hY2Jfc2V0X3R4X2NsayhzdHJ1Y3QgbWFjYiAqYnAsIGludCBzcGVlZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ4OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUxOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUyMDpzdGF0aWMgdm9pZCBtYWNiX3VzeF9wY3NfbGlua191cChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTIxLVxcdFxcdFxcdFxcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLCBpbnQgc3BlZWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUyMy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MjQ6XFx0c3RydWN0IG1hY2IgKmJwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IG1hY2IsIHBoeWxpbmtfdXN4X3Bjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MjUtXFx0dTMyIGNvbmZpZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM1OnN0YXRpYyB2b2lkIG1hY2JfdXN4X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzYtXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mzgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM5OlxcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3VzeF9wY3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTQwLVxcdHUzMiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU1MzpzdGF0aWMgaW50IG1hY2JfdXN4X3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTQtXFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU1OTpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgbWFjYiwgcGh5bGlua191c3hfcGNzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU2MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTY3OnN0YXRpYyB1bnNpZ25lZCBpbnQgbWFjYl9wY3NfaW5iYW5kX2NhcHMoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NjgtXFx0XFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3MzpzdGF0aWMgdm9pZCBtYWNiX3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTc2OlxcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzctXFx0dTE2IGJtc3IsIGxwYTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTg0OnN0YXRpYyB2b2lkIG1hY2JfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTg2OlxcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODctXFx0dTMyIG9sZCwgbmV3O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1OTQ6c3RhdGljIGludCBtYWNiX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01OTUtXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01OTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjAwOlxcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MDEtXFx0dTMyIG9sZCwgbmV3O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MDktXFx0ICogTXVzdCBiZSB3cml0dGVuIGFmdGVyIFBDU1NFTCBpcyBzZXQgaW4gTkNGR1Igd2hpY2ggaXMgZG9uZSBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjEwOlxcdCAqIG1hY2JfbWFjX2NvbmZpZygpLCBvdGhlcndpc2Ugd3JpdGVzIHdpbGwgbm90IHRha2UgZWZmZWN0LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjExLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjM6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgbWFjYl9waHlsaW5rX3VzeF9wY3Nfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjI0OlxcdC5wY3NfZ2V0X3N0YXRlID0gbWFjYl91c3hfcGNzX2dldF9zdGF0ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyNTpcXHQucGNzX2NvbmZpZyA9IG1hY2JfdXN4X3Bjc19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjY6XFx0LnBjc19saW5rX3VwID0gbWFjYl91c3hfcGNzX2xpbmtfdXAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjctfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyOTpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfcGNzX29wcyBtYWNiX3BoeWxpbmtfcGNzX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYzMDpcXHQucGNzX2luYmFuZF9jYXBzID0gbWFjYl9wY3NfaW5iYW5kX2NhcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MzE6XFx0LnBjc19nZXRfc3RhdGUgPSBtYWNiX3Bjc19nZXRfc3RhdGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MzI6XFx0LnBjc19hbl9yZXN0YXJ0ID0gbWFjYl9wY3NfYW5fcmVzdGFydCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYzMzpcXHQucGNzX2NvbmZpZyA9IG1hY2JfcGNzX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYzNC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjM2OnN0YXRpYyBib29sIG1hY2JfdHhfbHBpX3NldChzdHJ1Y3QgbWFjYiAqYnAsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjQyOlxcdG5jciA9IG1hY2JfcmVhZGwoYnAsIE5DUik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NDMtXFx0b2xkID0gbmNyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NDgtXFx0aWYgKG9sZCAhPSBuY3IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NDk6XFx0XFx0bWFjYl93cml0ZWwoYnAsIE5DUiwgbmNyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjU0OnN0YXRpYyBib29sIG1hY2JfdHhfYWxsX3F1ZXVlc19pZGxlKHN0cnVjdCBtYWNiICpicClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY1NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NTY6XFx0c3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjU3LVxcdHVuc2lnbmVkIGludCBxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NjY6c3RhdGljIHZvaWQgbWFjYl90eF9scGlfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02Njcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjY4OlxcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbWFjYiwgdHhfbHBpX3dvcmsud29yayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NjktXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjcxLVxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZicC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjcyOlxcdGlmIChicC1cXHUwMDNlZWVlX2FjdGl2ZSBcXHUwMDI2XFx1MDAyNiBtYWNiX3R4X2FsbF9xdWV1ZXNfaWRsZShicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NzM6XFx0XFx0bWFjYl90eF9scGlfc2V0KGJwLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY3NC1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZicC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2Nzc6c3RhdGljIHZvaWQgbWFjYl90eF9scGlfc2NoZWR1bGUoc3RydWN0IG1hY2IgKmJwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjg4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Njg5OnN0YXRpYyB2b2lkIG1hY2JfdHhfbHBpX3dha2Uoc3RydWN0IG1hY2IgKmJwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Njk2OlxcdGlmICghbWFjYl90eF9scGlfc2V0KGJwLCBmYWxzZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02OTctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3MDM6c3RhdGljIHZvaWQgbWFjYl9tYWNfZGlzYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MDQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzA1LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gdG9fbmV0X2Rldihjb25maWctXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3MDY6XFx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MDctXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzEyLVxcdGJwLVxcdTAwM2VlZWVfYWN0aXZlID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3MTM6XFx0bWFjYl90eF9scGlfc2V0KGJwLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MTQtXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2YnAtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NzE3OnN0YXRpYyBpbnQgbWFjYl9tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdTMyIHRpbWVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzE4LVxcdFxcdFxcdFxcdCAgYm9vbCB0eF9jbGtfc3RvcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzIwLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gdG9fbmV0X2Rldihjb25maWctXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3MjE6XFx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MjItXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NzM3OnN0YXRpYyB2b2lkIG1hY2JfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MzgtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NDAtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB0b19uZXRfZGV2KGNvbmZpZy1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc0MTpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc0Mi1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3NDg6XFx0b2xkX2N0cmwgPSBjdHJsID0gbWFjYl9vcl9nZW1fcmVhZGwoYnAsIE5DRkdSKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc0OTpcXHRvbGRfbmNyID0gbmNyID0gbWFjYl9vcl9nZW1fcmVhZGwoYnAsIE5DUik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc1My1cXHRcXHRcXHRjdHJsIHw9IE1BQ0JfQklUKFJNOTIwMF9STUlJKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc1NDpcXHR9IGVsc2UgaWYgKG1hY2JfaXNfZ2VtKGJwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzU1LVxcdFxcdGN0cmwgXFx1MDAyNj0gfihHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzcyLVxcdGlmIChvbGRfY3RybCBeIGN0cmwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3NzM6XFx0XFx0bWFjYl9vcl9nZW1fd3JpdGVsKGJwLCBOQ0ZHUiwgY3RybCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NzUtXFx0aWYgKG9sZF9uY3IgXiBuY3IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3NzY6XFx0XFx0bWFjYl9vcl9nZW1fd3JpdGVsKGJwLCBOQ1IsIG5jcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc4MTpzdGF0aWMgdm9pZCBtYWNiX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzgyLVxcdFxcdFxcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03ODQtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB0b19uZXRfZGV2KGNvbmZpZy1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc4NTpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc4NjpcXHRzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03ODctXFx0dW5zaWduZWQgaW50IHE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc5NS1cXHQvKiBEaXNhYmxlIFJ4IGFuZCBUeCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Nzk2OlxcdGN0cmwgPSBtYWNiX3JlYWRsKGJwLCBOQ1IpIFxcdTAwMjYgfihNQUNCX0JJVChSRSkgfCBNQUNCX0JJVChURSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Nzk3OlxcdG1hY2Jfd3JpdGVsKGJwLCBOQ1IsIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzk4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MDItLyogVXNlIGp1Z2dsaW5nIGFsZ29yaXRobSB0byBsZWZ0IHJvdGF0ZSB0eCByaW5nIGFuZCB0eCBza2IgYXJyYXkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjgwMzpzdGF0aWMgdm9pZCBnZW1fc2h1ZmZsZV90eF9vbmVfcmluZyhzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MDQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODA1LVxcdHVuc2lnbmVkIGludCBoZWFkLCB0YWlsLCBjb3VudCwgcmluZ19zaXplLCBkZXNjX3NpemU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4MDY6XFx0c3RydWN0IG1hY2JfdHhfc2tiIHR4X3NrYiwgKnNrYl9jdXJyLCAqc2tiX25leHQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4MDc6XFx0c3RydWN0IG1hY2JfZG1hX2Rlc2MgKmRlc2NfY3VyciwgKmRlc2NfbmV4dDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTgwOC1cXHR1bnNpZ25lZCBpbnQgaSwgY3ljbGVzLCBzaGlmdCwgY3VyciwgbmV4dDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjgwOTpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBxdWV1ZS1cXHUwMDNlYnA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MTAtXFx0dW5zaWduZWQgY2hhciBkZXNjWzI0XTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODEzOlxcdGRlc2Nfc2l6ZSA9IG1hY2JfZG1hX2Rlc2NfZ2V0X3NpemUoYnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MzYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGN5Y2xlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4Mzc6XFx0XFx0bWVtY3B5KFxcdTAwMjZkZXNjLCBtYWNiX3R4X2Rlc2MocXVldWUsIGkpLCBkZXNjX3NpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODM4OlxcdFxcdG1lbWNweShcXHUwMDI2dHhfc2tiLCBtYWNiX3R4X3NrYihxdWV1ZSwgaSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4Mzk6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbWFjYl90eF9za2IpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODQ0LVxcdFxcdHdoaWxlIChuZXh0ICE9IGkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg0NTpcXHRcXHRcXHRkZXNjX2N1cnIgPSBtYWNiX3R4X2Rlc2MocXVldWUsIGN1cnIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODQ2OlxcdFxcdFxcdGRlc2NfbmV4dCA9IG1hY2JfdHhfZGVzYyhxdWV1ZSwgbmV4dCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg1NTpcXHRcXHRcXHRza2JfY3VyciA9IG1hY2JfdHhfc2tiKHF1ZXVlLCBjdXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg1NjpcXHRcXHRcXHRza2JfbmV4dCA9IG1hY2JfdHhfc2tiKHF1ZXVlLCBuZXh0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg1NzpcXHRcXHRcXHRtZW1jcHkoc2tiX2N1cnIsIHNrYl9uZXh0LCBzaXplb2Yoc3RydWN0IG1hY2JfdHhfc2tiKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg2MzpcXHRcXHRkZXNjX2N1cnIgPSBtYWNiX3R4X2Rlc2MocXVldWUsIGN1cnIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODY0LVxcdFxcdG1lbWNweShkZXNjX2N1cnIsIFxcdTAwMjZkZXNjLCBkZXNjX3NpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NjgtXFx0XFx0XFx0ZGVzY19jdXJyLVxcdTAwM2VjdHJsIHw9IE1BQ0JfQklUKFRYX1dSQVApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODY5OlxcdFxcdG1lbWNweShtYWNiX3R4X3NrYihxdWV1ZSwgY3VyciksIFxcdTAwMjZ0eF9za2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4NzA6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbWFjYl90eF9za2IpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg3MS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg4My0vKiBSb3RhdGUgdGhlIHF1ZXVlIHNvIHRoYXQgdGhlIHRhaWwgaXMgYXQgaW5kZXggMCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODg0OnN0YXRpYyB2b2lkIGdlbV9zaHVmZmxlX3R4X3JpbmdzKHN0cnVjdCBtYWNiICpicClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg4NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4ODY6XFx0c3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODg3LVxcdGludCBxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04OTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4OTM6c3RhdGljIHZvaWQgbWFjYl9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg5NC1cXHRcXHRcXHQgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg5OS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHRvX25ldF9kZXYoY29uZmlnLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTAwOlxcdHN0cnVjdCBtYWNiICpicCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTAxOlxcdHN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkwMi1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05MDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5MDg6XFx0Y3RybCA9IG1hY2Jfb3JfZ2VtX3JlYWRsKGJwLCBOQ0ZHUik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05MDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkxOS1cXHRcXHRjdHJsIFxcdTAwMjY9IH5NQUNCX0JJVChQQUUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTIwOlxcdFxcdGlmIChtYWNiX2lzX2dlbShicCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkyMS1cXHRcXHRcXHRjdHJsIFxcdTAwMjY9IH5HRU1fQklUKEdCRSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjkzNjpcXHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIE5DRkdSLCBjdHJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTQ0LVxcdGlmICghKGJwLVxcdTAwM2VjYXBzIFxcdTAwMjYgTUFDQl9DQVBTX01BQ0JfSVNfRU1BQykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk0NTpcXHRcXHRtYWNiX3NldF90eF9jbGsoYnAsIHNwZWVkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk0Ni1cXHRcXHRnZW1fc2h1ZmZsZV90eF9yaW5ncyhicCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk0OS1cXHQvKiBFbmFibGUgUnggYW5kIFR4OyBFbmFibGUgUFRQIHVuaWNhc3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk1MDpcXHRjdHJsID0gbWFjYl9yZWFkbChicCwgTkNSKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk1MS1cXHRpZiAoZ2VtX2hhc19wdHAoYnApKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05NTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NTQ6XFx0bWFjYl93cml0ZWwoYnAsIE5DUiwgY3RybCB8IE1BQ0JfQklUKFJFKSB8IE1BQ0JfQklUKFRFKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05NTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk1OTpzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICptYWNiX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTYwLVxcdFxcdFxcdFxcdFxcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05NjItXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB0b19uZXRfZGV2KGNvbmZpZy1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk2MzpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTc0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIG1hY2JfcGh5bGlua19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NzU6XFx0Lm1hY19zZWxlY3RfcGNzID0gbWFjYl9tYWNfc2VsZWN0X3BjcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk3NjpcXHQubWFjX2NvbmZpZyA9IG1hY2JfbWFjX2NvbmZpZyxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6MzMuODQ0NzQxNzMzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDI3ODIxNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgXCJtYWNiXCIgRHJpdmVyKipcblxuQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGUgXCJtYWNiXCIgbmFtZS4gVGhhdCdzIGltbWVkaWF0ZWx5IHJpbmdpbmcgYmVsbHMg4oCTIHNvdW5kcyBsaWtlIGEgTUFDIChNZWRpYSBBY2Nlc3MgQ29udHJvbGxlcikgRXRoZXJuZXQgZHJpdmVyLCBsaWtlbHkgZm9yIGEgc3BlY2lmaWMgcGxhdGZvcm0uIE15IGZpcnN0IG1vdmUgaXMgYWx3YXlzIHRvIGNvbmZpcm0gdGhlIGRyaXZlciBuYW1lIGFuZCBhbnkgYXNzb2NpYXRlZCBmaWxlcy4gXCJtYWNiXCIgaXQgaXMsIHNvIG5vdyBJIG5lZWQgdG8gZGl2ZSBpbiBhbmQgZ2V0IG15IGJlYXJpbmdzLlxuXG5NeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgd2lsbCBiZSBhIGBwbGF0Zm9ybV9kcml2ZXJgLCBnaXZlbiB0aGUgY29udGV4dC4gVGhlIG5leHQgc3RlcCBpcyB0byBsb2NhdGUgdGhlIHNvdXJjZSBjb2RlLCBhbmQgSSB3b3VsZCBzdGFydCB3aXRoIGBtYWNiX21haW4uY2Ag4oCTIHRoYXQncyBhIHByZXR0eSBzdGFuZGFyZCBuYW1pbmcgY29udmVudGlvbi4gSSdsbCBsaWtlbHkgZmluZCB0aGUgYHBsYXRmb3JtX2RyaXZlcmAgc3RydWN0dXJlIGRlZmluaXRpb24gYW5kIHJlZ2lzdHJhdGlvbiB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBrZXJuZWwncyBwbGF0Zm9ybSBidXMsIGhvdyBpdCBnZXRzIHByb2JlZCwgYW5kIGhvdyBpdCBoYW5kbGVzIGRldmljZSBpbml0aWFsaXphdGlvbi4gRnJvbSB0aGVyZSwgSSBjYW4gZHJpbGwgZG93biBmdXJ0aGVyIGJhc2VkIG9uIHdoYXQgSSBmaW5kIGluIHRoYXQgaW5pdGlhbCBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc3OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjM4Ljg0NzUyNjQ0NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzNDc3OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGxhdGZvcm1fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz02MjU2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBtYWNiX3BtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjI2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyNjE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWFjYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjYyLVxcdC5wcm9iZVxcdFxcdD0gbWFjYl9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjI3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyNzI6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtYWNiX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjczLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1NjozOC44ODg4Nzk1OTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE1OTgwNDE4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BQ0IgRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgbWFjYl9kcml2ZXJgIGlzIGRlZmluaXRlbHkgcmVnaXN0ZXJlZCBhcyBhIHBsYXRmb3JtIGRyaXZlci4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gQW5kIGBtYWNiX3BjaS5jYCByZWdpc3RlcnMgYSBwbGF0Zm9ybSBkZXZpY2UgdGhhdCAqZG9lcyogbWF0Y2ggdGhpcyBkcml2ZXIsIHNvIHRoZSBkcml2ZXIgc2hvdWxkIGJlIGFjY2Vzc2libGUgdGhyb3VnaCBQQ0kuIFRoYXQncyBob3cgdGhpcyBpcyBzdXBwb3NlZCB0byB3b3JrLCByaWdodD9cblxuTm93LCB0aGUgcXVlc3Rpb24gaXMsIGhhcyB0aGUgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24gYmVlbiBzZXQgdXAgY29ycmVjdGx5PyBEbyB0aGUgc3RhbmRhcmQgY29uZmlncyBlbmFibGUgYENPTkZJR19NQUNCX1BDSWA/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSWYgaXQncyBub3QgZW5hYmxlZCBieSBkZWZhdWx0LCB0aGVuIHdlJ2xsIG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgaXQuIFRpbWUgdG8gZGlnIGludG8gdGhlIHN5emthbGxlciBjb25maWd1cmF0aW9uIGZpbGVzLlxuXG5SaWdodCwgc28gd2UnbGwgbmVlZCB0byBhZGQgYE1BQ0JfUENJYCBhbmQgYE1BQ0JgIHRvIGBFbmFibGVDb25maWdzYC4gQnV0IGJlZm9yZSBJIGRvIHRoYXQsIGEgcXVpY2sgY2hlY2sgb2YgdGhlIEtjb25maWcuLi4gYmVjYXVzZSBgTUFDQl9QQ0lgIHByb2JhYmx5IGhhcyBhIGRlcGVuZGVuY3kgb24gYE1BQ0JgLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQgZGVwZW5kZW5jeSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnYCBqdXN0IHRvIGJlIHN1cmUsIGFuZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gaXQgaXMgcmVmbGVjdGVkIGluIG91ciBjb25maWcgZmlsZS4gT2theSwgZ29vZC4gVGhhdCBzaG91bGQgZG8gaXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjk4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjQ2LjA0ODY4NjEyM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzOTU3NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQ0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZz0yMD1pZiBORVRfVkVORE9SX0NBREVOQ0VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjIyOmNvbmZpZyBNQUNCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJDYWRlbmNlIE1BQ0IvR0VNIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjM3OmNvbmZpZyBNQUNCX1VTRV9IV1NUQU1QXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTM4LVxcdGJvb2wgXFxcIlVzZSBJRUVFIDE1ODggaHdzdGFtcFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6NDU6Y29uZmlnIE1BQ0JfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTQ2LVxcdHRyaXN0YXRlIFxcXCJDYWRlbmNlIFBDSSBNQUNCL0dFTSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1Njo0Ni4wOTIwODgxNDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE5NTIxNDk4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgTUFDQl9QQ0lgIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBUaGUgcHJvamVjdCdzIGJlZW4gZmxhZ2dlZCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiB3aXRoIHRoaXMgYE1BQ0JfUENJYCBtb2R1bGUuIEZpcnN0IHRoaW5ncyBmaXJzdDogbGV0J3MgZ2V0IGEgaGFuZGxlIG9uIGl0cyBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgY29tcG9uZW50cywgbGlicmFyaWVzLCBvciBldmVuIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGFyZSByZWx5aW5nIG9uIHRoaXMgdGhpbmcuIEEgZGVwZW5kZW5jeSBncmFwaCB3b3VsZCBiZSBpZGVhbCwgYnV0IGV2ZW4gYSBiYXNpYyBsaXN0IHdpbGwgZ2V0IG1lIHN0YXJ0ZWQuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc2ltcGxlIGRyaXZlciwgb3Igc29tZXRoaW5nIG1vcmUgZGVlcGx5IGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtJ3MgYXJjaGl0ZWN0dXJlPyBLbm93aW5nIGlmIGl0IHRvdWNoZXMgdGhlIGtlcm5lbCwgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzLCBvciByZWxpZXMgb24gc29tZSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgd2lsbCBkcml2ZSB0aGUgaW52ZXN0aWdhdGlvbi4gR290dGEgZW5zdXJlIHRoZXJlIGFyZSBubyBicmVha2luZyBjaGFuZ2VzIG9yIHVuZXhwZWN0ZWQgY29uZmxpY3RzIGlmIHdlIHBsYW4gYW55IGNoYW5nZXMuIFNvLCBsZXQncyBzdGFydCBtYXBwaW5nIG91dCB0aGlzIGRlcGVuZGVuY3kgbGFuZHNjYXBlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTk3NCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjUyLjI4NzMwNjA4MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDcxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDQwOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gIDQxOlxcdFxcdGRlZmF1bHQgeVxcbiAgNDI6XFx0XFx0aGVscFxcbiAgNDM6XFx0XFx0ICBFbmFibGUgSUVFRSAxNTg4IFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIHN1cHBvcnQgZm9yIE1BQ0IuXFxuICA0NDpcXHRcXG4gIDQ1OlxcdGNvbmZpZyBNQUNCX1BDSVxcbiAgNDY6XFx0XFx0dHJpc3RhdGUgXFxcIkNhZGVuY2UgUENJIE1BQ0IvR0VNIHN1cHBvcnRcXFwiXFxuICA0NzpcXHRcXHRkZXBlbmRzIG9uIE1BQ0IgXFx1MDAyNlxcdTAwMjYgUENJXFxuICA0ODpcXHRcXHRoZWxwXFxuICA0OTpcXHRcXHQgIFRoaXMgaXMgUENJIHdyYXBwZXIgZm9yIE1BQ0IgZHJpdmVyLlxcbiAgNTA6XFx0XFxuICA1MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDUyOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbWFjYl9wY2kuXFxuICA1MzpcXHRcXG4gIDU0OlxcdGVuZGlmICMgTkVUX1ZFTkRPUl9DQURFTkNFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjUyLjI4NzQxNTQ1MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQxMzY5NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBhbmQgaXQncyBjbGVhciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGhpbmdlcyBvbiB0d28gcHJpbWFyeSBmYWN0b3JzOiBgTUFDQmAgYW5kIGBQQ0lgLiBUaGF0IG11Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBOb3csIHRoZSBjb21wbGV4aXR5IHN0YXJ0cyB0byB1bmZvbGQgYXMgSSBkaWcgZGVlcGVyLiBJdCdzIGV2aWRlbnQgdGhhdCBgTUFDQmAgaXNuJ3QgYSBzdGFuZGFsb25lIGVsZW1lbnQ7IGl0cyBvcGVyYXRpb24gb3IgaW1wbGVtZW50YXRpb24sIGF0IGxlYXN0IGluIHRoaXMgY29udGV4dCwgaXMgaXRzZWxmIGRlcGVuZGVudCBvbiBgSEFTX0RNQWAgYW5kIGBDT01NT05fQ0xLYC4gVGhpcyBtZWFucyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3RhdGUgb2YgKnRob3NlKiBjb21wb25lbnRzIHRvIGZ1bGx5IGdyYXNwIHRoZSBzdGF0ZSBvZiBgTUFDQmAsIHdoaWNoIHRoZW4gZGlyZWN0bHkgaW1wYWN0cyB0aGUgb3ZlcmFsbCBzeXN0ZW0uIEkgbmVlZCB0byB0cmFjZSB0aGlzIGRlcGVuZGVuY3kgY2hhaW4gdmVyeSBjYXJlZnVsbHkuIEknbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBjb25maWd1cmF0aW9ucyB3aGVyZSBgSEFTX0RNQWAgb3IgYENPTU1PTl9DTEtgIG1pZ2h0IGJlIHNldCBkaWZmZXJlbnRseSwgbGVhZGluZyB0byBkaWZmZXJlbnQgYmVoYXZpb3JzIGZvciBgTUFDQmAgYW5kIGRvd25zdHJlYW0gZWZmZWN0cyBvbiBgUENJYC4gVGhlIGdvYWwgaXMgdG8gaXNvbGF0ZSB0aGUgY3JpdGljYWwgcGF0aCBhbmQgdW5kZXJzdGFuZCBlYWNoIGVsZW1lbnQncyByb2xlIHdpdGhpbiB0aGUgc3lzdGVtLiBJIGhhdmUgdG8gYXNzZXNzIHdoZXRoZXIgdGhlIGRlcGVuZGVuY2llcyBhcmUgaGFyZCByZXF1aXJlbWVudHMsIG9yIGNvbmRpdGlvbmFsLCBhbmQgdGhlIHNwZWNpZmljIGltcGFjdCBvbiB0aGUgZW5kIGdvYWwgb2YgdGhpcyBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQxOCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6NTYuODI4Nzg3NjcyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMDpcXHRpZiBORVRfVkVORE9SX0NBREVOQ0VcXG4gIDIxOlxcdFxcbiAgMjI6XFx0Y29uZmlnIE1BQ0JcXG4gIDIzOlxcdFxcdHRyaXN0YXRlIFxcXCJDYWRlbmNlIE1BQ0IvR0VNIHN1cHBvcnRcXFwiXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19ETUEgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMS1xcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMjY6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDI3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMjg6XFx0XFx0aGVscFxcbiAgMjk6XFx0XFx0ICBUaGUgQ2FkZW5jZSBNQUNCIGV0aGVybmV0IGludGVyZmFjZSBpcyBmb3VuZCBvbiBtYW55IEF0bWVsIEFUMzIgYW5kXFxuICAzMDpcXHRcXHQgIEFUOTEgcGFydHMuICBUaGlzIGRyaXZlciBhbHNvIHN1cHBvcnRzIHRoZSBDYWRlbmNlIEdFTSAoR2lnYWJpdFxcbiAgMzE6XFx0XFx0ICBFdGhlcm5ldCBNQUMgZm91bmQgaW4gc29tZSBBUk0gU29DIGRldmljZXMpLiAgU2F5IFkgdG8gaW5jbHVkZVxcbiAgMzI6XFx0XFx0ICBzdXBwb3J0IGZvciB0aGUgTUFDQi9HRU0gY2hpcC5cXG4gIDMzOlxcdFxcbiAgMzQ6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICAzNTpcXHRcXHQgIHdpbGwgYmUgbWFjYi5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIE1BQ0JfVVNFX0hXU1RBTVBcXG4gIDM4OlxcdFxcdGJvb2wgXFxcIlVzZSBJRUVFIDE1ODggaHdzdGFtcFxcXCJcXG4gIDM5OlxcdFxcdGRlcGVuZHMgb24gTUFDQlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1Njo1Ni44Mjg4NTc0MDJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYyMTE3NDk2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMgZm9yIENhZGVuY2UgTmV0d29yayBJbnRlcmZhY2UgRHJpdmVycyoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBpbnRlZ3JhdGluZyBhIENhZGVuY2UgbmV0d29yayBpbnRlcmZhY2UgaW50byBhIG5ldyBzeXN0ZW0uIFRoZSBrZXkgdGhpbmcgSSBpbW1lZGlhdGVseSBuZWVkIHRvIGNvbmZpcm0gaXMgdGhhdCB0aGUgYE5FVF9WRU5ET1JfQ0FERU5DRWAga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGRlZmluaXRlbHkgZW5hYmxlZC4gVGhpcyBpcyB0aGUgZm91bmRhdGlvbmFsIGJ1aWxkaW5nIGJsb2NrLiBXaXRob3V0IGl0LCBJJ20gbm90IGV2ZW4gZ29pbmcgdG8gZ2V0IHRoZSBuZWNlc3NhcnkgZnJhbWV3b3JrIGZvciB0aGUgQ2FkZW5jZS1zcGVjaWZpYyBkcml2ZXJzIHRvIGNvbXBpbGUgYW5kIGxpbmsuIEl0J3MgdGhlIGZpcnN0IHN0ZXAsIHRoZSBnYXRla2VlcGVyLCByZWFsbHkuIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0aGF0IHRoaXMgaXMgaW4gcGxhY2UgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwMTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU3OjAxLjQ1MDAzNTc1NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgQ2FkZW5jZSBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9DQURFTkNFXFxuICAgNzpcXHRcXHRib29sIFxcXCJDYWRlbmNlIGRldmljZXNcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbiAgIDk6XFx0XFx0ZGVmYXVsdCB5XFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDE2OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcXG4gIDE3OlxcdFxcdCAgcmVtYWluaW5nIENhZGVuY2UgbmV0d29yayBjYXJkIHF1ZXN0aW9ucy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZVxcbiAgMTg6XFx0XFx0ICBhc2tlZCBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRpZiBORVRfVkVORE9SX0NBREVOQ0VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTc6MDEuNDUwMTA0NTY1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNjcyNjkyODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTUFDQiBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgcGFydHMgdG91Y2hpbmcgYE5FVF9WRU5ET1JfQ0FERU5DRWAsIGBNQUNCYCwgYW5kIGBNQUNCX1BDSWAgY29uZmlndXJhdGlvbnMuIEl0IGxvb2tzIGxpa2UgaXQncyBtb2RpZnlpbmcgc2V2ZXJhbCBmdW5jdGlvbnMsIG5hbWVseSBgbWFjYl9wY3NfYW5fcmVzdGFydGAsIGBtYWNiX21hY19jb25maWdgLCBgbWFjYl9tYWNfc2VsZWN0X3Bjc2AsIGBtYWNiX21paV9wcm9iZWAsIGFuZCBgbWFjYl9pbml0X2RmbHRgLiBUaGVzZSBhcmUgYWxsIGNsZWFybHkgdGllZCBpbnRvIHRoZSBwaHlsaW5rIG9wZXJhdGlvbnMgYW5kIHByb2JlIHByb2NlZHVyZXMgZm9yIHRoaXMgaGFyZHdhcmUuXG5cbmBtYWNiX21paV9wcm9iZWAgZ2V0cyBjYWxsZWQgZHVyaW5nIGBtYWNiX3Byb2JlYCwgYW5kIHRoZSBvdGhlcnMg4oCTIGBtYWNiX21hY19jb25maWdgLCBgbWFjYl9wY3NfYW5fcmVzdGFydGAsIGFuZCBgbWFjYl9tYWNfc2VsZWN0X3Bjc2Ag4oCTIGFyZSBjYWxsZWQgYnkgcGh5bGluay4gYG1hY2JfaW5pdF9kZmx0YCBpcyBhbHNvIHVzZWQgZHVyaW5nIHByb2JlLiBTaW5jZSB0aGlzIGlzIGEgaGFyZHdhcmUgZHJpdmVyLCBhbmQgaXQgc3VwcG9ydHMgUENJLCBJIGNhbiByZWFjaCBpdCBpbiBRRU1VIGlmIHRoZSBQQ0kgZGV2aWNlIGlzIGVtdWxhdGVkLCBvciBpZiBzeXprYWxsZXIgaXMgbGV2ZXJhZ2luZyB0aGUgUENJIGZ1enplci4gSG9sZCBvbiwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciB0aGF0IGNhbiBpbmplY3QgUENJIGRldmljZXMgYW5kIGZ1enogTU1JTy9QSU8vRE1BLiBUaGF0J3MgYSBkZWZpbml0ZSBhdHRhY2sgdmVjdG9yLiBUaGlzIG1lYW5zIHRoZXNlIGRyaXZlcnMgYXJlICphYnNvbHV0ZWx5KiB3b3J0aCBmdXp6aW5nLlxuXG5UaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkaW5nIHN1cHBvcnQgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYYCB0byB0aGUgTUFDQiBkcml2ZXIuIFNvLCB0aGUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBmb3IgZnV6emluZyBhcmU6IGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCwgYG1hY2JfbWFjX2NvbmZpZ2AsIGBtYWNiX21hY19zZWxlY3RfcGNzYCwgYG1hY2JfbWlpX3Byb2JlYCwgYW5kIGBtYWNiX2luaXRfZGZsdGAuXG5cbldhaXQsIHRoZXNlIGFyZSBhbGwgZGVjbGFyZWQgYXMgc3RhdGljIGZ1bmN0aW9ucyEgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkncmUgaW5saW5lZCBvciBpZiB0aGV5J3JlIGFjdHVhbGx5IHJlYWNoYWJsZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNDY4LCJPdXRwdXRUb2tlbnMiOjc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTc6MTIuMTIyODAwMDMxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk5ODY0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWNiX3Bjc19hbl9yZXN0YXJ0fG1hY2JfbWFjX2NvbmZpZ3xtYWNiX21hY19zZWxlY3RfcGNzfG1hY2JfbWlpX3Byb2JlfG1hY2JfaW5pdF9kZmx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NzM9c3RhdGljIHZvaWQgbWFjYl9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU4NDpzdGF0aWMgdm9pZCBtYWNiX3Bjc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTk0PXN0YXRpYyBpbnQgbWFjYl9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MDktXFx0ICogTXVzdCBiZSB3cml0dGVuIGFmdGVyIFBDU1NFTCBpcyBzZXQgaW4gTkNGR1Igd2hpY2ggaXMgZG9uZSBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjEwOlxcdCAqIG1hY2JfbWFjX2NvbmZpZygpLCBvdGhlcndpc2Ugd3JpdGVzIHdpbGwgbm90IHRha2UgZWZmZWN0LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjExLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz02Mjk9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgbWFjYl9waHlsaW5rX3Bjc19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYzMS1cXHQucGNzX2dldF9zdGF0ZSA9IG1hY2JfcGNzX2dldF9zdGF0ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYzMjpcXHQucGNzX2FuX3Jlc3RhcnQgPSBtYWNiX3Bjc19hbl9yZXN0YXJ0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjMzLVxcdC5wY3NfY29uZmlnID0gbWFjYl9wY3NfY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz03MTc9c3RhdGljIGludCBtYWNiX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgdGltZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTczNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjczNzpzdGF0aWMgdm9pZCBtYWNiX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzM4LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9ODkzPXN0YXRpYyB2b2lkIG1hY2JfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk1OTpzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICptYWNiX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTYwLVxcdFxcdFxcdFxcdFxcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz05NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbWFjYl9waHlsaW5rX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk3NTpcXHQubWFjX3NlbGVjdF9wY3MgPSBtYWNiX21hY19zZWxlY3RfcGNzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTc2OlxcdC5tYWNfY29uZmlnID0gbWFjYl9tYWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTc3LVxcdC5tYWNfbGlua19kb3duID0gbWFjYl9tYWNfbGlua19kb3duLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIxPXN0YXRpYyB2b2lkIG1hY2JfZ2V0X3Bjc19maXhlZF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTAzMC0vKiBiYXNlZCBvbiBhdTEwMDBfZXRoLiBjKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwMzE6c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTAzMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTExMzg9c3RhdGljIGludCBtYWNiX21paV9pbml0KHN0cnVjdCBtYWNiICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE0OC1cXHRpZiAoIW1kaW9fbnAgXFx1MDAyNlxcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTE0OTpcXHRcXHRyZXR1cm4gbWFjYl9taWlfcHJvYmUoYnAtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTUwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTE3NjpcXHRlcnIgPSBtYWNiX21paV9wcm9iZShicC1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNzctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDc1MD1zdGF0aWMgaW50IG1hY2JfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3NjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NzYzOnN0YXRpYyBpbnQgbWFjYl9pbml0X2RmbHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3NjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00OTU2PXN0YXRpYyBpbnQgbWFjYl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ5NjEtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDk2MjpcXHRcXHRyZXR1cm4gbWFjYl9pbml0X2RmbHQocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00OTYzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTQ1OT1zdGF0aWMgaW50IGZ1NTQwX2MwMDBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTQ2NTpcXHRyZXR1cm4gbWFjYl9pbml0X2RmbHQocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDY2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTQ2OD1zdGF0aWMgaW50IGluaXRfcmVzZXRfb3B0aW9uYWwoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTUxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU1MTU6XFx0cmV0ID0gbWFjYl9pbml0X2RmbHQocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTE2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NTI0PXN0YXRpYyBpbnQgZXllcTVfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTU0MDpcXHRyZXQgPSBtYWNiX2luaXRfZGZsdChwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1NDEtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTc6MTIuMTY3ODA0MDMyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNzA1NjIyNzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BQ0IgRHJpdmVyIEZ1bmN0aW9uIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBNQUNCIGRyaXZlciBjb2RlLCBhbmQgSSBzZWUgaG93IGl0J3Mgc3RydWN0dXJlZC4gVGhlc2UgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYG1hY2JfcGh5bGlua19wY3Nfb3BzYCBhbmQgYG1hY2JfcGh5bGlua19vcHNgIHN0cnVjdHMgYXJlIHRlY2huaWNhbGx5IHN0YXRpYyBmdW5jdGlvbnMsIHJpZ2h0PyBCdXQgdGhlIGtleSBoZXJlIGlzIHRoYXQgdGhleSdyZSAqYXNzaWduZWQqIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIHdpdGhpbiB0aG9zZSBzdHJ1Y3RzLiBUaGF0J3MgY3J1Y2lhbC4gQmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuLCBpdCBtZWFucyB0aGUgY29tcGlsZXIgKmNhbid0KiBmdWxseSBpbmxpbmUgdGhlbS4gVGhleSBlbmQgdXAgd2l0aCB0aGVpciBvd24gZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcywgd2hpY2ggbWFrZXMgdGhlbSB2aXNpYmxlIGFuZCwgZnJhbmtseSwgbXVjaCBlYXNpZXIgdG8gYW5hbHl6ZS4gVGhhdCdzIGV4YWN0bHkgd2hhdCBJIG5lZWQuXG5cbldhaXQgYSBzZWNvbmQsIGxldCBtZSByZS1yZWFkIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGhlcmUsIGl0IHNwZWNpZmllcyB0aGF0IGl0IHByZWZlcnMgZnVuY3Rpb25zIHRoYXQgYXJlIG5vbi1zdGF0aWMgYW5kIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBiZWNhdXNlIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gVGhhdCBtYWtlcyBzZW5zZSwgYmVjYXVzZSBJIHdvbid0IGJlIGFibGUgdG8gYWNjZXNzIHRob3NlIGlubGluZWQgZnVuY3Rpb25zLlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmFjdCB0aGF0IHRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4gaGVyZSBtZWFucyB0aGF0IHRoZXkgYXJlIG5vdCBpbmxpbmVkLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSBuZWVkLiBBbmQsIHNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgQVBJIGVudHJ5IHBvaW50cywgaXQgaXMgYWxzbyBnb29kIVxuXG5CdXQsIEkgdGhpbmsgaXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gY29uc2lkZXIgdGhlIHByb2JlIGZ1bmN0aW9uIGBtYWNiX3Byb2JlYC4gSXQncyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCwgaXNuJ3QgaXQ/IExldCBtZSBjaGVjayB0aGF0IHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MzcwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU5OjA5LjIyNDAzNDk4N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIzNDgzMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjYl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDU4Nj1zdGF0aWMgdm9pZCBtYWNiX2NvbmZpZ3VyZV9jYXBzKHN0cnVjdCBtYWNiICpicCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDYyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ2MzA6c3RhdGljIGludCBtYWNiX3Byb2JlX3F1ZXVlcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqbWVtLCBib29sIG5hdGl2ZV9pbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFjYl9jb25maWcgZGVmYXVsdF9nZW1fY29uZmlnID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTc3MjpzdGF0aWMgaW50IG1hY2JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NzMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTgwODpcXHRudW1fcXVldWVzID0gbWFjYl9wcm9iZV9xdWV1ZXMoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgbWVtLCBuYXRpdmVfaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTgwOS1cXHRpZiAobnVtX3F1ZXVlcyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NjI2MT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtYWNiX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyNjI6XFx0LnByb2JlXFx0XFx0PSBtYWNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjI2My1cXHQucmVtb3ZlXFx0XFx0PSBtYWNiX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTk6MDkuMjY2Mzg4MjA4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNzM5NDc0ODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBNQUNCIERyaXZlcioqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYG1hY2JgIGRyaXZlciwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGJlc3Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGluaXRpYWxpemF0aW9uIGlzIHRoZSBgbWFjYl9wcm9iZWAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgdG8gYmUgdGhlIGxvZ2ljYWwgZW50cnkgcG9pbnQuIEFkZGl0aW9uYWxseSwgSSBuZWVkIHRvIGZvY3VzIG9uIHNvbWUgb3RoZXIgZnVuY3Rpb25zIHNpbmNlIHRoZXNlIGFyZSBsaWtlbHkgdG8gYmUgZGlyZWN0bHkgbW9kaWZpZWQgZHVyaW5nIGFueSBjaGFuZ2Ugb2YgdGhlIHN5c3RlbS4gSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyByZXN0YXJ0ZWQsIHdoYXQgdGhlIE1BQyBjb25maWd1cmF0aW9uIGlzLlxuXG5TcGVjaWZpY2FsbHksIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCBgbWFjYl9wY3NfYW5fcmVzdGFydGAsIGBtYWNiX21hY19jb25maWdgLCBgbWFjYl9tYWNfc2VsZWN0X3Bjc2AsIGBtYWNiX21paV9wcm9iZWAsIGFuZCBgbWFjYl9pbml0X2RmbHRgLiBUaGVzZSBhcHBlYXIgdG8gYmUgdGhlIGNvcmUgcm91dGluZXMgdGhhdCBoYW5kbGUgdGhlIFBDUyAoUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyKSwgTUFDIChNZWRpYSBBY2Nlc3MgQ29udHJvbCkgY29uZmlndXJhdGlvbiwgYW5kIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24uIFRoZXkgYXJlIHRoZSBvYnZpb3VzIHNwb3RzIHRvIHN0YXJ0LlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSBpZiB0aGUgUENJLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGlzIGhhbmRsZWQgaW4gYSBzZXBhcmF0ZSBmaWxlLiBJIG5lZWQgdG8ga25vdyBpZiB0aGUgYG1hY2JfcGNpLmNgIGZpbGUgY29udGFpbnMgaXRzIG93biBwcm9iZSBmdW5jdGlvbi4gVGhhdCB3aWxsIHF1aWNrbHkgdGVsbCBtZSBpZiBJIG5lZWQgdG8gbG9vayBpbnRvIGEgc2VwYXJhdGUgUENJLXJlbGF0ZWQgaW5pdGlhbGl6YXRpb24gcGF0aCBvciBpZiBldmVyeXRoaW5nIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBwcmltYXJ5IGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjczMzgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDowMDoxMC4wMDU4NjU2NTVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjEzOTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0yNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6Mjc6c3RhdGljIGludCBtYWNiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjU9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjctXFx0LmlkX3RhYmxlID0gZGV2X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMjg6XFx0LnByb2JlICAgID0gbWFjYl9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI5LVxcdC5yZW1vdmVcXHQgID0gbWFjYl9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjAwOjEwLjA0ODA4NDYyNloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Mzc4NjgzOTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgdGhhdCBgbWFjYl9wY2kuY2AgYWxzbyBpbmNsdWRlcyBhIGBtYWNiX3Byb2JlYCBmdW5jdGlvbi4gU2luY2Ugd2UncmUgdHJ5aW5nIHRvIHBpbnBvaW50IHRoZSBtb2RpZmljYXRpb25zLCBzaG91bGQgSSBzcGVjaWZ5IGBtYWNiX3Byb2JlYCBhcyB3ZWxsLCBvciBqdXN0IGZvY3VzIG9uIHRoZSBjaGFuZ2VkIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIHBhdGNoPyBJIHRoaW5rIEknbGwganVzdCBsaXN0IHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgZm9yIG5vdy5cblxuTGV0J3Mgc2VlLCB0aGUgcGF0Y2ggYWx0ZXJzIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCwgYG1hY2JfbWFjX2NvbmZpZ2AsIGBtYWNiX21hY19zZWxlY3RfcGNzYCwgYG1hY2JfbWlpX3Byb2JlYCwgYW5kIGBtYWNiX2luaXRfZGZsdGAuIEkgc2hvdWxkIHByb2JhYmx5IGxpc3QgdGhvc2UgYXMgYEZvY3VzU3ltYm9sc2AuXG5cbk9rYXksIGhlcmUgdGhleSBhcmU6XG5gbWFjYl9wY3NfYW5fcmVzdGFydGBcbmBtYWNiX21hY19jb25maWdgXG5gbWFjYl9tYWNfc2VsZWN0X3Bjc2BcbmBtYWNiX21paV9wcm9iZWBcbmBtYWNiX2luaXRfZGZsdGBcblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBJIGtub3cgaG93IHRoZXkncmUgdXNlZC4gSSBzZWUgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgIGlzIHN0YXRpYywgYnV0IGl0J3MgYXNzaWduZWQgdG8gYG1hY2JfcGh5bGlua19wY3Nfb3BzLnBjc19hbl9yZXN0YXJ0YC4gVGhhdCdzIGltcG9ydGFudC4gVGhlbiBgbWFjYl9tYWNfY29uZmlnYCBpcyBhc3NpZ25lZCB0byBgbWFjYl9waHlsaW5rX29wcy5tYWNfY29uZmlnYC4gQW5kIGBtYWNiX21hY19zZWxlY3RfcGNzYCBpcyBhc3NpZ25lZCB0byBgbWFjYl9waHlsaW5rX29wcy5tYWNfc2VsZWN0X3Bjc2AuIFJpZ2h0LCBnb29kLiBgbWFjYl9taWlfcHJvYmVgIGlzIGNhbGxlZCBieSBgbWFjYl9taWlfaW5pdGAsIGFuZCBgbWFjYl9pbml0X2RmbHRgIGlzIGNhbGxlZCBieSBgbWFjYl9pbml0YC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgcGljdHVyZSBvZiBob3cgdGhlIGNoYW5nZWQgY29kZSBpcyBpbnRlZ3JhdGVkLlxuXG5BcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3MgaW52b2x2ZWQ/IEknbGwgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zOiBgTkVUX1ZFTkRPUl9DQURFTkNFYCwgYE1BQ0JgLCBhbmQgYE1BQ0JfUENJYC4gV2FpdCwgYE1BQ0JgIGRlcGVuZHMgb24gYEhBU19ETUFgIGFuZCBgQ09NTU9OX0NMS2AuIGBIQVNfRE1BYCBpcyBwcmV0dHkgc3RhbmRhcmQsIHRoYXQncyB1c3VhbGx5IGVuYWJsZWQuIGBDT01NT05fQ0xLYCBpcyB0eXBpY2FsIGZvciBBUk0sIGJ1dCBJIHNob3VsZCBjaGVjayBpZiBpdCdzIGV2ZW4gcmVsZXZhbnQgb24geDg2LiBMZXQgbWUgc2VlIGlmIGBDT01NT05fQ0xLYCBpcyBhdmFpbGFibGUgb24geDg2Li4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3OTg5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjAwOjE5LjQyNjc3MDkzNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwOTI4MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENPTU1PTl9DTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9jbGsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Nsay9LY29uZmlnPTEyPWNvbmZpZyBIQVZFX0xFR0FDWV9DTEsgIyBUT0RPOiBSZW1vdmUgb25jZSBhbGwgbGVnYWN5IHVzZXJzIGFyZSBtaWdyYXRlZFxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIxOm1lbnVjb25maWcgQ09NTU9OX0NMS1xcbmRyaXZlcnMvY2xrL0tjb25maWctMjItXFx0Ym9vbCBcXFwiQ29tbW9uIENsb2NrIEZyYW1ld29ya1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWc9MzQ9aWYgQ09NTU9OX0NMS1xcbmRyaXZlcnMvY2xrL0tjb25maWctMzUtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzozNjpjb25maWcgQ09NTU9OX0NMS19XTTgzMVhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM3LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFdNODMxeC8yeCBQTUlDc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWc9NTM9Y29uZmlnIExNSzA0ODMyXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTYwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6NjE6Y29uZmlnIENPTU1PTl9DTEtfQVBQTEVfTkNPXFxuZHJpdmVycy9jbGsvS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBBcHBsZSBTb0MgTkNPc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctNjgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo2OTpjb25maWcgQ09NTU9OX0NMS19NQVg3NzY4NlxcbmRyaXZlcnMvY2xrL0tjb25maWctNzAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWF4aW0gNzc2MjAvNzc2ODYvNzc4MDIgTUZEXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy03NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjc2OmNvbmZpZyBDT01NT05fQ0xLX01BWDk0ODVcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTc3LVxcdHRyaXN0YXRlIFxcXCJNYXhpbSA5NDg1IFByb2dyYW1tYWJsZSBDbG9jayBHZW5lcmF0b3JcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTgxLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6ODI6Y29uZmlnIENPTU1PTl9DTEtfUks4MDhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFJLODA1L1JLODA4L1JLODA5L1JLODE3L1JLODE4XFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy04OS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjkwOmNvbmZpZyBDT01NT05fQ0xLX1JQMVxcbmRyaXZlcnMvY2xrL0tjb25maWctOTEtXFx0dHJpc3RhdGUgXFxcIlJhc3BiZXJyeSBQaSBSUDEtYmFzZWQgY2xvY2sgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctOTgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo5OTpjb25maWcgQ09NTU9OX0NMS19ISTY1NVhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTEwMC1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBIaTY1NXhcXFwiIGlmIEVYUEVSVFxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMDgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxMDk6Y29uZmlnIENPTU1PTl9DTEtfU0NNSVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTEwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgY29udHJvbGxlZCB2aWEgU0NNSSBpbnRlcmZhY2VcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTExOC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjExOTpjb25maWcgQ09NTU9OX0NMS19TQ1BJXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMjAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBjb250cm9sbGVkIHZpYSBTQ1BJIGludGVyZmFjZVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTI4LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTI5OmNvbmZpZyBDT01NT05fQ0xLX1NJNTM0MVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTMwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MzQxIGFuZCA1MzQwIEEvQi9DL0QgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTM5LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTQwOmNvbmZpZyBDT01NT05fQ0xLX1NJNTM1MVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTQxLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MzUxQS9CL0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE0Ny1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE0ODpjb25maWcgQ09NTU9OX0NMS19TSTUxNFxcbmRyaXZlcnMvY2xrL0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MTQgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTU2LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTU3OmNvbmZpZyBDT01NT05fQ0xLX1NJNTQ0XFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNTgtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgU2lMYWJzIDU0NCBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNjQtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxNjU6Y29uZmlnIENPTU1PTl9DTEtfU0k1NzBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE2Ni1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBTaUxhYnMgNTcwIGFuZCBjb21wYXRpYmxlIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE3My1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE3NDpjb25maWcgQ09NTU9OX0NMS19CTTE4ODBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE3NS1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIEJpdG1haW4gQk0xODgwIFNvQ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTgwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTgxOmNvbmZpZyBDT01NT05fQ0xLX0NEQ0U3MDZcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE4Mi1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBUSSBDRENFNzA2IGNsb2NrIHN5bnRoZXNpemVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xODctXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxODg6Y29uZmlnIENPTU1PTl9DTEtfVFBTNjg0NzBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE4OS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgRHJpdmVyIGZvciBUSSBUUFM2ODQ3MCBQTUlDXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xOTUtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxOTY6Y29uZmlnIENPTU1PTl9DTEtfQ0RDRTkyNVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTk3LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFRJIENEQ0U5MTMvOTI1LzkzNy85NDkgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMjEyLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MjEzOmNvbmZpZyBDT01NT05fQ0xLX0NTMjAwMF9DUFxcbmRyaXZlcnMvY2xrL0tjb25maWctMjE0LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIENTMjAwMCBGcmFjdGlvbmFsLU4gQ2xvY2sgU3ludGhlc2l6ZXIgXFx1MDAyNiBDbG9jayBNdWx0aXBsaWVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMTktXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoyMjA6Y29uZmlnIENPTU1PTl9DTEtfRU43NTIzXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMjEtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBBaXJvaGEvRWNvTmV0IFNvQyBzeXN0ZW0gY2xvY2tzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMjgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoyMjk6Y29uZmlnIENPTU1PTl9DTEtfRVA5M1hYXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMzAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgQ2lycnVzIExvZ2ljIGVwOTN4eCBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIzNi1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIzNzpjb25maWcgQ09NTU9OX0NMS19FWUVRXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMzgtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciB0aGUgTW9iaWxleWUgRXllUSBwbGF0Zm9ybVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMjQ3LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MjQ4OmNvbmZpZyBDT01NT05fQ0xLX0ZTTF9GTEVYU1BJXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNDktXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgRmxleFNQSSBvbiBMYXllcnNjYXBlIFNvQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI1NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI1Njpjb25maWcgQ09NTU9OX0NMS19GU0xfU0FJXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNTctXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBCQ0xLIG9mIEZyZWVzY2FsZSBTQUkgY29yZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI2Ny1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI2ODpjb25maWcgQ09NTU9OX0NMS19HRU1JTklcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI2OS1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIENvcnRpbmEgU3lzdGVtcyBHZW1pbmkgU29DXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNzYtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoyNzc6Y29uZmlnIENPTU1PTl9DTEtfTEFOOTY2WFxcbmRyaXZlcnMvY2xrL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIENsb2NrIENvbnRyb2xsZXIgZHJpdmVyIGZvciBMQU45NjZYIFNvQ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMjg2LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6Mjg3OmNvbmZpZyBDT01NT05fQ0xLX1MyTVBTMTFcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI4OC1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBTMk1QUzFYL1M1TTg3NjcgTUZEXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZz0zMDQ9Y29uZmlnIENMS19UV0w2MDQwXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMxMS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjMxMjpjb25maWcgQ09NTU9OX0NMS19BWElfQ0xLR0VOXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zMTMtXFx0dHJpc3RhdGUgXFxcIkFYSSBjbGtnZW4gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZz0zMjg9Y29uZmlnIENMS19MUzEwMjhBX1BMTERJR1xcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zMzctXFxuZHJpdmVycy9jbGsvS2NvbmZpZzozMzg6Y29uZmlnIENPTU1PTl9DTEtfWEdFTkVcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMzOS1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIEFQTSBYR2VuZSBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM0NTpjb25maWcgQ09NTU9OX0NMS19MT0NITkFHQVJcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM0Ni1cXHR0cmlzdGF0ZSBcXFwiQ2lycnVzIExvZ2ljIExvY2huYWdhciBjbG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM1MS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM1Mjpjb25maWcgQ09NTU9OX0NMS19OUENNOFhYXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNTMtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgdGhlIE5QQ004WFggU29DIEZhbWlseVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzYwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MzYxOmNvbmZpZyBDT01NT05fQ0xLX0xPT05HU09OMlxcbmRyaXZlcnMvY2xrL0tjb25maWctMzYyLVxcdGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTG9vbmdzb24tMiBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM2OS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM3MDpjb25maWcgQ09NTU9OX0NMS19OWFBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM3MS1cXHRkZWZfYm9vbCBDT01NT05fQ0xLIFxcdTAwMjZcXHUwMDI2IChBUkNIX0xQQzE4WFggfHwgQVJDSF9MUEMzMlhYKVxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzYtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzozNzc6Y29uZmlnIENPTU1PTl9DTEtfUEFMTUFTXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzgtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgVEkgUGFsbWFzIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM4My1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM4NDpjb25maWcgQ09NTU9OX0NMS19QV01cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM4NS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBQV01zIHVzZWQgYXMgY2xvY2sgb3V0cHV0c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzkwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MzkxOmNvbmZpZyBDT01NT05fQ0xLX1BYQVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzkyLVxcdGRlZl9ib29sIENPTU1PTl9DTEsgXFx1MDAyNlxcdTAwMjYgQVJDSF9QWEFcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzk1LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6Mzk2OmNvbmZpZyBDT01NT05fQ0xLX1JTOV9QQ0lFXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zOTctXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgUmVuZXNhcyA5LXNlcmllcyBQQ0llIGNsb2NrIGdlbmVyYXRvcnNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQwNC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQwNTpjb25maWcgQ09NTU9OX0NMS19TSTUyMVhYXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MDYtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgU2t5V29ya3MgU2k1MjF4eCBQQ0llIGNsb2NrIGdlbmVyYXRvcnNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQxMy1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQxNDpjb25maWcgQ09NTU9OX0NMS19WQzNcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQxNS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIFZlcnNhQ2xvY2sgMyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MjItXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0MjM6Y29uZmlnIENPTU1PTl9DTEtfVkM1XFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MjQtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgSURUIFZlcnNhQ2xvY2sgNSw2IGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQzMS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQzMjpjb25maWcgQ09NTU9OX0NMS19WQzdcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQzMy1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIFZlcnNhY2xvY2sgNyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDAtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NDE6Y29uZmlnIENPTU1PTl9DTEtfU1RNMzJGXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDItXFx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiAoTUFDSF9TVE0zMkY0MjkgfHwgTUFDSF9TVE0zMkY0NjkgfHwgTUFDSF9TVE0zMkY3NDYpXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ0NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ0Njpjb25maWcgQ09NTU9OX0NMS19TVE0zMkg3XFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDctXFx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiBNQUNIX1NUTTMySDc0M1xcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NTAtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NTE6Y29uZmlnIENPTU1PTl9DTEtfTU1QMlxcbmRyaXZlcnMvY2xrL0tjb25maWctNDUyLVxcdGRlZl9ib29sIENPTU1PTl9DTEsgXFx1MDAyNlxcdTAwMjYgKE1BQ0hfTU1QMl9EVCB8fCBNQUNIX01NUDNfRFQpXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ1NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ1Njpjb25maWcgQ09NTU9OX0NMS19NTVAyX0FVRElPXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NTctICAgICAgICB0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNTVAyIEF1ZGlvIHN1YnN5c3RlbVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctNDYxLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6NDYyOmNvbmZpZyBDT01NT05fQ0xLX0JENzE4WFhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ2My1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciAzMksgY2xrIGdhdGVzIG9uIFJPSE0gUE1JQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ2OC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ2OTpjb25maWcgQ09NTU9OX0NMS19GSVhFRF9NTUlPXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NzAtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZW1vcnkgTWFwcGVkIEZpeGVkIHZhbHVlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctNDc1LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6NDc2OmNvbmZpZyBDT01NT05fQ0xLX0syMTBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ3Ny1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIHRoZSBDYW5hYW4gS2VuZHJ5dGUgSzIxMCBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ4Mi1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ4Mzpjb25maWcgQ09NTU9OX0NMS19LMjMwXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00ODQtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciB0aGUgQ2FuYWFuIEtlbmRyeXRlIEsyMzAgU29DXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00ODgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0ODk6Y29uZmlnIENPTU1PTl9DTEtfU1A3MDIxXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00OTAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgU3VucGx1cyBTUDcwMjEgU29DXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00OTgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0OTk6Y29uZmlnIENPTU1PTl9DTEtfUlBNSVxcbmRyaXZlcnMvY2xrL0tjb25maWctNTAwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgYmFzZWQgb24gUklTQy1WIFJQTUlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjAwOjE5LjQ3MDg3MDcxNVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTI0Mjk2MjUzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE1BQ0IgYW5kIENPTU1PTl9DTEsgb24geDg2KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgYENPTU1PTl9DTEtgIGNvbmZpZy4gSXQncyBwcmV0dHkgZ2VuZXJpYywgcmlnaHQ/IEknZCBleHBlY3QgaXQgdG8gYmUgZW5hYmxlZCBvbiBhIGxvdCBvZiBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcy4gTm93LCB0aGUgaXNzdWUgYXQgaGFuZDogYE1BQ0JgIGhhcyBhIGRlcGVuZGVuY3kgb24gYm90aCBgSEFTX0RNQWAgYW5kIGBDT01NT05fQ0xLYC4gVGhhdCdzIGEga2V5IGRldGFpbC4gVGhpcyBtZWFucyB0aGF0IGlmIGBDT01NT05fQ0xLYCAqaXNuJ3QqIGVuYWJsZWQgb24geDg2LCB0aGVuIEkgd29uJ3QgYmUgYWJsZSB0byBlbmFibGUgYE1BQ0JgIG9uIHg4Ni5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBDT01NT05fQ0xLYCBpcyBhY3R1YWxseSBlbmFibGVkIGZvciB4ODYuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBpdCAqc2hvdWxkKiBiZSBlbmFibGVkIGluIG1vc3Qgc3RhbmRhcmQgeDg2IGNvbmZpZ3VyYXRpb25zIGJlY2F1c2UgYSBsb3Qgb2YgZHJpdmVycyB0ZW5kIHRvIHJlbHkgb24gaXQuIEJ1dCBJIGNhbid0IGp1c3QgYXNzdW1lOyBJIG5lZWQgdG8gdmVyaWZ5LlxuXG5UaGVyZWZvcmUsIHRoZSBtb3N0IGRpcmVjdCBhcHByb2FjaCBpcyB0byBjb25zdWx0IHRoZSBjb25maWd1cmF0aW9uIGZpbGU6IGBhcmNoL3g4Ni9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBsb29rIGZvciB0aGUgZGVmaW5pdGlvbiBhbmQgcG90ZW50aWFsIGVuYWJsZW1lbnQgb2YgYENPTU1PTl9DTEtgIHdpdGhpbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjM3OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDowMDo0NC43MTM4MzYzMjRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNDE1NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTU1PTl9DTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9LY29uZmlnPTY4MD1jb25maWcgWDg2X0lOVEVMX1FVQVJLXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTY4OS1cXHRzZWxlY3QgSU5URUxfSU1SXFxuYXJjaC94ODYvS2NvbmZpZzo2OTA6XFx0c2VsZWN0IENPTU1PTl9DTEtcXG5hcmNoL3g4Ni9LY29uZmlnLTY5MS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTY5Nj1jb25maWcgWDg2X0lOVEVMX0xQU1NcXG4tLVxcbmFyY2gveDg2L0tjb25maWctNjk4LVxcdGRlcGVuZHMgb24gWDg2IFxcdTAwMjZcXHUwMDI2IEFDUEkgXFx1MDAyNlxcdTAwMjYgUENJXFxuYXJjaC94ODYvS2NvbmZpZzo2OTk6XFx0c2VsZWN0IENPTU1PTl9DTEtcXG5hcmNoL3g4Ni9LY29uZmlnLTcwMC1cXHRzZWxlY3QgUElOQ1RSTFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz03MDg9Y29uZmlnIFg4Nl9BTURfUExBVEZPUk1fREVWSUNFXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTcxMC1cXHRkZXBlbmRzIG9uIEFDUElcXG5hcmNoL3g4Ni9LY29uZmlnOjcxMTpcXHRzZWxlY3QgQ09NTU9OX0NMS1xcbmFyY2gveDg2L0tjb25maWctNzEyLVxcdHNlbGVjdCBQSU5DVFJMXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTcxNS1cXHQgIHN1Y2ggYXMgSTJDLCBVQVJULCBHUElPIGZvdW5kIG9uIEFNRCBDYXJyaXpvIGFuZCBsYXRlciBjaGlwc2V0cy5cXG5hcmNoL3g4Ni9LY29uZmlnOjcxNjpcXHQgIEkyQyBhbmQgVUFSVCBkZXBlbmQgb24gQ09NTU9OX0NMSyB0byBzZXQgY2xvY2suIEdQSU8gZHJpdmVyIGlzXFxuYXJjaC94ODYvS2NvbmZpZy03MTctXFx0ICBpbXBsZW1lbnRlZCB1bmRlciBQSU5DVFJMIHN1YnN5c3RlbS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6MDA6NDQuNzU2MjU4MDk1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDA4MDAwMTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIENhZGVuY2UgTUFDQiBEcml2ZXIgd2l0aCAxMDAwQkFTRVggU3VwcG9ydCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmb3IgYSBmdXp6aW5nIHBsYW4uIFRoZSBgQ09NTU9OX0NMS2AgaXMgYXZhaWxhYmxlLCB3aGljaCBpcyBleHBlY3RlZCBvbiB0aGVzZSB4ODYgcGxhdGZvcm1zIHRoYW5rcyB0byBgWDg2X0lOVEVMX0xQU1NgIGFuZCBgWDg2X0FNRF9QTEFURk9STV9ERVZJQ0VgLiBTbywgd2UncmUgZ29vZCB0aGVyZS5cblxuTm93LCBsZXQncyBsb29rIGF0IHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBpbiB0aGUgY29uZmlnLiBXZSd2ZSBnb3QgYE5FVF9WRU5ET1JfQ0FERU5DRWAsIGBNQUNCYCwgYW5kIGBNQUNCX1BDSWAuIEFueSBvdGhlciBkZXBlbmRlbmNpZXM/IEhtbSwgYE1BQ0JgIHB1bGxzIGluIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGJ1dCB0aGF0J3MgdXN1YWxseSBub3QgYSBwcm9ibGVtLiBgTUFDQl9QQ0lgPyBJdHMgZGVwZW5kZW5jeSBpcyBgTUFDQiBcdTAwMjZcdTAwMjYgUENJYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIFNvIHRoZSB0aHJlZSBjb25maWdzIGFyZSB0aGUgcmlnaHQgY2hvaWNlcy5cblxuTm93LCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIHBhdGNoIGl0c2VsZiBhbmQgdGhlIGZ1bmN0aW9ucyBpdCB0b3VjaGVzLiBXZSdyZSBsb29raW5nIGF0IG1vZGlmaWNhdGlvbnMgdG8gYG1hY2JfcGNzX2FuX3Jlc3RhcnRgLCBgbWFjYl9tYWNfY29uZmlnYCwgYG1hY2JfbWFjX3NlbGVjdF9wY3NgLCBgbWFjYl9taWlfcHJvYmVgLCBhbmQgYG1hY2JfaW5pdF9kZmx0YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgZHVyaW5nIHRoZSBNQUNCIGRyaXZlcidzIHByb2JlIHNlcXVlbmNlIGFuZCB3aGVuIHBoeWxpbmsgY29uZmlndXJlcyB0aGUgbGluay4gU2luY2Ugd2UgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyB1c2luZyBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIsIHdlIGNhbiB0cmlnZ2VyIHRoZSBkcml2ZXIncyBwcm9iZSwgYW5kIHRoZW4gaW50ZXJhY3Qgd2l0aCB0aGUgbmV0IGRldmljZS4gV2UgY2FuIHJlYWNoIHRoZXNlIGZ1bmN0aW9ucyFcblxuVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVhgIGFuZCwgaW1wb3J0YW50bHksIG1vZGlmaWVzIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCB0byBhY3R1YWxseSByZXN0YXJ0IGF1dG9uZWdvdGlhdGlvbiBieSB3cml0aW5nIHRvIHRoZSBgUENTQ05UUkxgIHJlZ2lzdGVyLiBUaGlzIGlzIHdoZXJlIHdlIHdhbnQgdG8gZm9jdXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBsb2dpYywgYW5kIGl0J3MgcmlwZSBmb3IgZnV6emluZy5cblxuQWxyaWdodCwgdGltZSB0byBmaW5hbGl6ZSB0aGUgc3RyYXRlZ3k6XG5cbmBXb3J0aEZ1enppbmc6IHRydWVgIC0gQWJzb2x1dGVseS5cblxuYEZvY3VzU3ltYm9sc2A6IFdlJ2xsIGZvY3VzIGZ1enppbmcgb24gdGhlIGNvcmUgZnVuY3Rpb25zIG1lbnRpb25lZDpcbiogICBgbWFjYl9wcm9iZWBcbiogICBgbWFjYl9wY3NfYW5fcmVzdGFydGBcbiogICBgbWFjYl9tYWNfY29uZmlnYFxuKiAgIGBtYWNiX21hY19zZWxlY3RfcGNzYFxuKiAgIGBtYWNiX21paV9wcm9iZWBcbiogICBgbWFjYl9pbml0X2RmbHRgXG5cbmBFbmFibGVDb25maWdzYDpcbiogICBgTkVUX1ZFTkRPUl9DQURFTkNFYFxuKiAgIGBNQUNCYFxuKiAgIGBNQUNCX1BDSWBcblxuYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBhZGRzIDEwMDBCQVNFWCBQSFkgc3VwcG9ydCB0byB0aGUgQ2FkZW5jZSBNQUNCIGV0aGVybmV0IGRyaXZlciBhbmQgaW1wbGVtZW50cyB0aGUgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgIHBoeWxpbmsgY2FsbGJhY2suIFRoZSBQQ0kgd3JhcHBlciBtYWtlcyB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgbWFuYWdlbWVudC4gTGV0J3Mgc2VuZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxNDYsIk91dHB1dFRva2VucyI6MTg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjAwOjU1Ljc2NDI2MTI5OVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MDY3ODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfVkVORE9SX0NBREVOQ0VcIixcbiAgICBcIk1BQ0JcIixcbiAgICBcIk1BQ0JfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjYl9wcm9iZVwiLFxuICAgIFwibWFjYl9wY3NfYW5fcmVzdGFydFwiLFxuICAgIFwibWFjYl9tYWNfY29uZmlnXCIsXG4gICAgXCJtYWNiX21hY19zZWxlY3RfcGNzXCIsXG4gICAgXCJtYWNiX21paV9wcm9iZVwiLFxuICAgIFwibWFjYl9pbml0X2RmbHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ2FkZW5jZSBNQUNCIGV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggYW5kIGltcGxlbWVudHMgdGhlIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCBwaHlsaW5rIGNhbGxiYWNrLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIHdyYXBwZXIgKGBtYWNiX3BjaS5jYCksIG1ha2luZyBpdCByZWFjaGFibGUgZm9yIGZ1enppbmcuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgaGFuZGxlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgbWFuYWdlbWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfVkVORE9SX0NBREVOQ0VcIixcbiAgICBcIk1BQ0JcIixcbiAgICBcIk1BQ0JfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjYl9wcm9iZVwiLFxuICAgIFwibWFjYl9wY3NfYW5fcmVzdGFydFwiLFxuICAgIFwibWFjYl9tYWNfY29uZmlnXCIsXG4gICAgXCJtYWNiX21hY19zZWxlY3RfcGNzXCIsXG4gICAgXCJtYWNiX21paV9wcm9iZVwiLFxuICAgIFwibWFjYl9pbml0X2RmbHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ2FkZW5jZSBNQUNCIGV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggYW5kIGltcGxlbWVudHMgdGhlIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCBwaHlsaW5rIGNhbGxiYWNrLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIHdyYXBwZXIgKGBtYWNiX3BjaS5jYCksIG1ha2luZyBpdCByZWFjaGFibGUgZm9yIGZ1enppbmcuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgaGFuZGxlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgbWFuYWdlbWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjp5hb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 03:40:51 +0000 UTC FinishedAt: 2026-07-31 04:00:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "8e4d7d120734936cb961d9dc46b788e0487d3256", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_CADENCE", "MACB", "MACB_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "8e4d7d120734936cb961d9dc46b788e0487d3256", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_VENDOR_CADENCE", "MACB", "MACB_PCI" ], "series_id": "3fd51bf2-efe9-4ae2-8197-fbb4aaa28202" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macb_probe", "macb_pcs_an_restart", "macb_mac_config", "macb_mac_select_pcs", "macb_mii_probe", "macb_init_dflt" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9WRU5ET1JfQ0FERU5DRSYjMzQ7LAogICAgJiMzNDtNQUNCJiMzNDssCiAgICAmIzM0O01BQ0JfUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjYl9wcm9iZSYjMzQ7LAogICAgJiMzNDttYWNiX3Bjc19hbl9yZXN0YXJ0JiMzNDssCiAgICAmIzM0O21hY2JfbWFjX2NvbmZpZyYjMzQ7LAogICAgJiMzNDttYWNiX21hY19zZWxlY3RfcGNzJiMzNDssCiAgICAmIzM0O21hY2JfbWlpX3Byb2JlJiMzNDssCiAgICAmIzM0O21hY2JfaW5pdF9kZmx0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBDYWRlbmNlIE1BQ0IgZXRoZXJuZXQgZHJpdmVyIHRvIHN1cHBvcnQgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCBhbmQgaW1wbGVtZW50cyB0aGUgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgIHBoeWxpbmsgY2FsbGJhY2suIFRoZSBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgd3JhcHBlciAoYG1hY2JfcGNpLmNgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBmb3IgZnV6emluZy4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBoYW5kbGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBhbmQgbGluayBzdGF0ZSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2IyNDMxMTU2ZWE1OGU2MWRkNTFhOGE1ZGJhZjE1ZjFiZDJhYzhhNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDAzOjU2OjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG5pbmRleCBkMzk0ZjFmNDNiNjg1Li4zMTBhZDhlYWMyMWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xuQEAgLTU4Myw3ICYjNDM7NTgzLDEyIEBAIHN0YXRpYyB2b2lkIG1hY2JfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIFxuIHN0YXRpYyB2b2lkIG1hY2JfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG4ge1xuLVx0LyogTm90IHN1cHBvcnRlZCAqL1xuJiM0MztcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7XG4mIzQzO1x0dTMyIG9sZCwgbmV3O1xuJiM0MztcbiYjNDM7XHRvbGQgPSBnZW1fcmVhZGwoYnAsIFBDU0NOVFJMKTtcbiYjNDM7XHRuZXcgPSBvbGQgfCBCTUNSX0FOUkVTVEFSVDtcbiYjNDM7XHRnZW1fd3JpdGVsKGJwLCBQQ1NDTlRSTCwgbmV3KTtcbiB9XG4gXG4gc3RhdGljIGludCBtYWNiX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5AQCAtNzUwLDcgJiM0Mzs3NTUsOSBAQCBzdGF0aWMgdm9pZCBtYWNiX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuIFx0XHRjdHJsIFx1MDAyNj0gfihHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpKTtcbiBcdFx0bmNyIFx1MDAyNj0gfkdFTV9CSVQoRU5BQkxFX0hTX01BQyk7XG4gXG4tXHRcdGlmIChzdGF0ZS1cdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7XG4mIzQzO1x0XHRpZiAoc3RhdGUtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpIHtcbiYjNDM7XHRcdFx0Y3RybCB8PSBHRU1fQklUKFBDU1NFTCk7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHN0YXRlLVx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcbiBcdFx0XHRjdHJsIHw9IEdFTV9CSVQoU0dNSUlFTikgfCBHRU1fQklUKFBDU1NFTCk7XG4gXHRcdH0gZWxzZSBpZiAoc3RhdGUtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUikge1xuIFx0XHRcdGN0cmwgfD0gR0VNX0JJVChQQ1NTRUwpO1xuQEAgLTk1Nyw3ICYjNDM7OTY0LDggQEAgc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWFjYl9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcbiBcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSKVxuIFx0XHRyZXR1cm4gXHUwMDI2YnAtXHUwMDNlcGh5bGlua191c3hfcGNzO1xuLVx0ZWxzZSBpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbiYjNDM7XHRlbHNlIGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCB8fFxuJiM0MztcdCAgICAgICAgIGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXG4gXHRcdHJldHVybiBcdTAwMjZicC1cdTAwM2VwaHlsaW5rX3NnbWlpX3BjcztcbiBcdGVsc2VcbiBcdFx0cmV0dXJuIE5VTEw7XG5AQCAtMTAyNSwxMyAmIzQzOzEwMzMsMTUgQEAgc3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbiBcdGJwLVx1MDAzZXBoeWxpbmtfc2dtaWlfcGNzLm9wcyA9IFx1MDAyNm1hY2JfcGh5bGlua19wY3Nfb3BzO1xuJiM0MztcdGJwLVx1MDAzZXBoeWxpbmtfc2dtaWlfcGNzLnBvbGwgPSB0cnVlO1xuIFx0YnAtXHUwMDNlcGh5bGlua191c3hfcGNzLm9wcyA9IFx1MDAyNm1hY2JfcGh5bGlua191c3hfcGNzX29wcztcbiBcbiBcdGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFx1MDAyNmRldi1cdTAwM2VkZXY7XG4gXHRicC1cdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XG4gXHRicC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfbWFuYWdlZF9wbSA9IHRydWU7XG4gXG4tXHRpZiAoYnAtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcbiYjNDM7XHRpZiAoYnAtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XG4mIzQzO1x0ICAgIGJwLVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7XG4gXHRcdGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnBvbGxfZml4ZWRfc3RhdGUgPSB0cnVlO1xuIFx0XHRicC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5nZXRfZml4ZWRfc3RhdGUgPSBtYWNiX2dldF9wY3NfZml4ZWRfc3RhdGU7XG4gXHRcdC8qIFRoZSBQQ1NBVVRPTkVHIGJpdCBpbiBQQ1NDTlRSTCBpcyBvbiBvdXQgb2YgcmVzZXQuIFNldHRpbmdcbkBAIC0xMDYwLDkgJiM0MzsxMDcwLDEyIEBAIHN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0XHQgIGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiBcdFx0cGh5X2ludGVyZmFjZV9zZXRfcmdtaWkoYnAtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuIFxuLVx0XHRpZiAoYnAtXHUwMDNlY2FwcyBcdTAwMjYgTUFDQl9DQVBTX1BDUylcbiYjNDM7XHRcdGlmIChicC1cdTAwM2VjYXBzIFx1MDAyNiBNQUNCX0NBUFNfUENTKSB7XG4mIzQzO1x0XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYLFxuJiM0MztcdFx0XHRcdCAgYnAtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuIFx0XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfU0dNSUksXG4gXHRcdFx0XHQgIGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XHRcdH1cbiBcbiBcdFx0aWYgKGJwLVx1MDAzZWNhcHMgXHUwMDI2IE1BQ0JfQ0FQU19ISUdIX1NQRUVEKSB7XG4gXHRcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdCQVNFUixcbkBAIC00OTMxLDcgJiM0Mzs0OTQ0LDkgQEAgc3RhdGljIGludCBtYWNiX2luaXRfZGZsdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0LyogU2V0IE1JSSBtYW5hZ2VtZW50IGNsb2NrIGRpdmlkZXIgKi9cbiBcdHZhbCA9IG1hY2JfbWRjX2Nsa19kaXYoYnApO1xuIFx0dmFsIHw9IG1hY2JfZGJ3KGJwKTtcbi1cdGlmIChicC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbiYjNDM7XHRpZiAoYnAtXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKVxuJiM0MztcdFx0dmFsIHw9IEdFTV9CSVQoUENTU0VMKTtcbiYjNDM7XHRlbHNlIGlmIChicC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbiBcdFx0dmFsIHw9IEdFTV9CSVQoU0dNSUlFTikgfCBHRU1fQklUKFBDU1NFTCk7XG4gXHRtYWNiX3dyaXRlbChicCwgTkNGR1IsIHZhbCk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9WRU5ET1JfQ0FERU5DRSYjMzQ7LAogICAgJiMzNDtNQUNCJiMzNDssCiAgICAmIzM0O01BQ0JfUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjYl9wcm9iZSYjMzQ7LAogICAgJiMzNDttYWNiX3Bjc19hbl9yZXN0YXJ0JiMzNDssCiAgICAmIzM0O21hY2JfbWFjX2NvbmZpZyYjMzQ7LAogICAgJiMzNDttYWNiX21hY19zZWxlY3RfcGNzJiMzNDssCiAgICAmIzM0O21hY2JfbWlpX3Byb2JlJiMzNDssCiAgICAmIzM0O21hY2JfaW5pdF9kZmx0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBDYWRlbmNlIE1BQ0IgZXRoZXJuZXQgZHJpdmVyIHRvIHN1cHBvcnQgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCBhbmQgaW1wbGVtZW50cyB0aGUgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgIHBoeWxpbmsgY2FsbGJhY2suIFRoZSBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgd3JhcHBlciAoYG1hY2JfcGNpLmNgKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBmb3IgZnV6emluZy4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBoYW5kbGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBhbmQgbGluayBzdGF0ZSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2IyNDMxMTU2ZWE1OGU2MWRkNTFhOGE1ZGJhZjE1ZjFiZDJhYzhhNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDAzOjU2OjA2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMKaW5kZXggZDM5NGYxZjQzYjY4NS4uMzEwYWQ4ZWFjMjFmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jCkBAIC01ODMsNyAmIzQzOzU4MywxMiBAQCBzdGF0aWMgdm9pZCBtYWNiX3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSwKIAogc3RhdGljIHZvaWQgbWFjYl9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcykKIHsKLQkvKiBOb3Qgc3VwcG9ydGVkICovCiYjNDM7CXN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7CiYjNDM7CXUzMiBvbGQsIG5ldzsKJiM0MzsKJiM0MzsJb2xkID0gZ2VtX3JlYWRsKGJwLCBQQ1NDTlRSTCk7CiYjNDM7CW5ldyA9IG9sZCB8IEJNQ1JfQU5SRVNUQVJUOwomIzQzOwlnZW1fd3JpdGVsKGJwLCBQQ1NDTlRSTCwgbmV3KTsKIH0KIAogc3RhdGljIGludCBtYWNiX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsCkBAIC03NTAsNyAmIzQzOzc1NSw5IEBAIHN0YXRpYyB2b2lkIG1hY2JfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsCiAJCWN0cmwgJmFtcDs9IH4oR0VNX0JJVChTR01JSUVOKSB8IEdFTV9CSVQoUENTU0VMKSk7CiAJCW5jciAmYW1wOz0gfkdFTV9CSVQoRU5BQkxFX0hTX01BQyk7CiAKLQkJaWYgKHN0YXRlLSZndDtpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7CiYjNDM7CQlpZiAoc3RhdGUtJmd0O2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKSB7CiYjNDM7CQkJY3RybCB8PSBHRU1fQklUKFBDU1NFTCk7CiYjNDM7CQl9IGVsc2UgaWYgKHN0YXRlLSZndDtpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7CiAJCQljdHJsIHw9IEdFTV9CSVQoU0dNSUlFTikgfCBHRU1fQklUKFBDU1NFTCk7CiAJCX0gZWxzZSBpZiAoc3RhdGUtJmd0O2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpIHsKIAkJCWN0cmwgfD0gR0VNX0JJVChQQ1NTRUwpOwpAQCAtOTU3LDcgJiM0Mzs5NjQsOCBAQCBzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICptYWNiX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAogCiAJaWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpCiAJCXJldHVybiAmYW1wO2JwLSZndDtwaHlsaW5rX3VzeF9wY3M7Ci0JZWxzZSBpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkKJiM0MzsJZWxzZSBpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHwKJiM0MzsJICAgICAgICAgaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkKIAkJcmV0dXJuICZhbXA7YnAtJmd0O3BoeWxpbmtfc2dtaWlfcGNzOwogCWVsc2UKIAkJcmV0dXJuIE5VTEw7CkBAIC0xMDI1LDEzICYjNDM7MTAzMywxNSBAQCBzdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJc3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAogCWJwLSZndDtwaHlsaW5rX3NnbWlpX3Bjcy5vcHMgPSAmYW1wO21hY2JfcGh5bGlua19wY3Nfb3BzOwomIzQzOwlicC0mZ3Q7cGh5bGlua19zZ21paV9wY3MucG9sbCA9IHRydWU7CiAJYnAtJmd0O3BoeWxpbmtfdXN4X3Bjcy5vcHMgPSAmYW1wO21hY2JfcGh5bGlua191c3hfcGNzX29wczsKIAogCWJwLSZndDtwaHlsaW5rX2NvbmZpZy5kZXYgPSAmYW1wO2Rldi0mZ3Q7ZGV2OwogCWJwLSZndDtwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7CiAJYnAtJmd0O3BoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTsKIAotCWlmIChicC0mZ3Q7cGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHsKJiM0MzsJaWYgKGJwLSZndDtwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHwKJiM0MzsJICAgIGJwLSZndDtwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkgewogCQlicC0mZ3Q7cGh5bGlua19jb25maWcucG9sbF9maXhlZF9zdGF0ZSA9IHRydWU7CiAJCWJwLSZndDtwaHlsaW5rX2NvbmZpZy5nZXRfZml4ZWRfc3RhdGUgPSBtYWNiX2dldF9wY3NfZml4ZWRfc3RhdGU7CiAJCS8qIFRoZSBQQ1NBVVRPTkVHIGJpdCBpbiBQQ1NDTlRSTCBpcyBvbiBvdXQgb2YgcmVzZXQuIFNldHRpbmcKQEAgLTEwNjAsOSAmIzQzOzEwNzAsMTIgQEAgc3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQkJICBicC0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwogCQlwaHlfaW50ZXJmYWNlX3NldF9yZ21paShicC0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwogCi0JCWlmIChicC0mZ3Q7Y2FwcyAmYW1wOyBNQUNCX0NBUFNfUENTKQomIzQzOwkJaWYgKGJwLSZndDtjYXBzICZhbXA7IE1BQ0JfQ0FQU19QQ1MpIHsKJiM0MzsJCQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCwKJiM0MzsJCQkJICBicC0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwogCQkJX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwKIAkJCQkgIGJwLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CQl9CiAKIAkJaWYgKGJwLSZndDtjYXBzICZhbXA7IE1BQ0JfQ0FQU19ISUdIX1NQRUVEKSB7CiAJCQlfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSLApAQCAtNDkzMSw3ICYjNDM7NDk0NCw5IEBAIHN0YXRpYyBpbnQgbWFjYl9pbml0X2RmbHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkvKiBTZXQgTUlJIG1hbmFnZW1lbnQgY2xvY2sgZGl2aWRlciAqLwogCXZhbCA9IG1hY2JfbWRjX2Nsa19kaXYoYnApOwogCXZhbCB8PSBtYWNiX2RidyhicCk7Ci0JaWYgKGJwLSZndDtwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkKJiM0MzsJaWYgKGJwLSZndDtwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpCiYjNDM7CQl2YWwgfD0gR0VNX0JJVChQQ1NTRUwpOwomIzQzOwllbHNlIGlmIChicC0mZ3Q7cGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpCiAJCXZhbCB8PSBHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpOwogCW1hY2Jfd3JpdGVsKGJwLCBOQ0ZHUiwgdmFsKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjMzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ2FkZW5jZSBNQUNCIEV0aGVybmV0IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBGZWFzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNgLiBJdCYjMzk7cyB0b3VjaGluZyBzZXZlcmFsIGZ1bmN0aW9uczogYG1hY2JfcGNzX2FuX3Jlc3RhcnRgLCBgbWFjYl9tYWNfY29uZmlnYCwgYG1hY2JfbWFjX3NlbGVjdF9wY3NgLCBgbWFjYl9taWlfcHJvYmVgLCBhbmQgYG1hY2JfaW5pdF9kZmx0YC4gVGhlIGNvcmUgdGhpbmcgaXMsIGl0JiMzOTtzIGFkZGluZyBzdXBwb3J0IGZvciBgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWGAsIHdoaWNoIGlzIGdyZWF0IGJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgaW4gYSBmdXp6aW5nIGVudmlyb25tZW50PyBUaGlzIGlzIGEgQ2FkZW5jZSBNQUNCL0dFTSBFdGhlcm5ldCBjb250cm9sbGVyIGRyaXZlciwgc28gdGhhdCByYWlzZXMgaW1tZWRpYXRlIGNvbmNlcm5zLgoKRmlyc3QsIEkgbmVlZCB0byBrbm93IGlmIFFFTVUgZXZlbiAqZW11bGF0ZXMqIHRoaXMgdGhpbmcuIFJpZ2h0LCBsZXQgbWUgY2hlY2suLi4geWVwLCBRRU1VIGhhcyBgaHcvbmV0L2NhZGVuY2VfZ2VtLmNgLiBPa2F5LCB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydC4gSSBrbm93IGl0JiMzOTtzIHVzZWQgaW4gdGhpbmdzIGxpa2UgWGlsaW54IFp5bnEgYW5kIG90aGVyIEFSTSBib2FyZHMuIEJ1dCBpcyBpdCBhdmFpbGFibGUgb24gc3RhbmRhcmQgeDg2IFFFTVU/IEhtbSwgdGhhdCYjMzk7cyB0aGUgcnViLiBJcyBpdCBhbiBBUk0tc3BlY2lmaWMgZGV2aWNlIG9yIGNhbiBpdCBiZSBpbnN0YW50aWF0ZWQgdmlhIFBDST8gSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3MgYSBwbGF0Zm9ybSBvciBQQ0kgZGV2aWNlLgoKTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IGBtYWNiX2luaXRfZGZsdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KWAsIGFoIGhhLCBpdCYjMzk7cyBhICpwbGF0Zm9ybSogZGV2aWNlLiBUaGF0IG1lYW5zIGl0JiMzOTtzIG5vdCBhIFBDSSBkZXZpY2UuIEFuZCBoZXJlIGlzIHdoZXJlIHRoaW5ncyBnZXQgdHJpY2t5LiBJbiBzeXprYWxsZXIsIHdlIHVzdWFsbHkgZm9jdXMgb24geDg2XzY0LCBhcm02NCwgYW5kIHRoZSBsaWtlLiBUaGlzIGJlaW5nIGEgcGxhdGZvcm0gZGV2aWNlLCB0aGF0IGltcGxpZXMgaXQgcmVxdWlyZXMgYSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBvciBib2FyZCBzdXBwb3J0LgoKVGhlIHJlYWwgcHJvYmxlbSBpcywgY2FuIEkgcmVhbGlzdGljYWxseSBmdXp6IHRoaXMgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBQbGF0Zm9ybSBkZXZpY2VzIHRoYXQgYXJlbiYjMzk7dCBpbnN0YW50aWF0ZWQgaW4gdGhlIHN0YW5kYXJkIHRlc3QgZW52aXJvbm1lbnRzIChsaWtlIHRoZSB2aXJ0IGJvYXJkIG9uIGFybTY0LCBvciB0aGUgcGMvcTM1IG9uIHg4Nl82NCkgYXJlIG9mdGVuIHVucmVhY2hhYmxlIHVubGVzcyB0aGVyZSYjMzk7cyBhIHdheSB0byBpbnN0YW50aWF0ZSB0aGVtLiBEZXZpY2UgdHJlZSBvdmVybGF5cyB3b3VsZCB3b3JrLCBidXQgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGRvIHRoYXQgYnkgZGVmYXVsdCBmb3IgdGhpcyBzcGVjaWZpYyBkZXZpY2UuIFNvIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWdgIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBwb3NzaWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUNCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZz0yMD1pZiBORVRfVkVORE9SX0NBREVOQ0VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzoyMjpjb25maWcgTUFDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTIzLVx0dHJpc3RhdGUgXCYjMzQ7Q2FkZW5jZSBNQUNCL0dFTSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjM3OmNvbmZpZyBNQUNCX1VTRV9IV1NUQU1QXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMzgtXHRib29sIFwmIzM0O1VzZSBJRUVFIDE1ODggaHdzdGFtcFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy00NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzo0NTpjb25maWcgTUFDQl9QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy00Ni1cdHRyaXN0YXRlIFwmIzM0O0NhZGVuY2UgUENJIE1BQ0IvR0VNIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDM3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjoKCioqTUFDQiBQQ0kgQ29uZmlndXJhdGlvbjogRGl2aW5nIGludG8gdGhlIENvZGUqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBJIHNlZSBgY29uZmlnIE1BQ0JfUENJYCEgVGhhdCYjMzk7cyBhIGtleSBkZXRhaWwgSSBhbG1vc3QgbWlzc2VkLiBUaGlzIGxpa2VseSBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBQQ0ktYmFzZWQgdmVyc2lvbiBvZiB0aGUgTUFDQiBFdGhlcm5ldCBjb250cm9sbGVyLiBOb3csIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgc3BlY2lmaWMgdmFyaWFudCBpcyBpbml0aWFsaXplZCBhbmQgbWFuYWdlZC4KCkxldCYjMzk7cyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIHdvdWxkIGJlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmNgLiBUaGF0IHNob3VsZCBjb250YWluIGFsbCB0aGUgUENJLXNwZWNpZmljIGluaXRpYWxpemF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgZGV2aWNlIGRyaXZlciBjb2RlIGZvciB0aGUgTUFDQiB3aGVuIG9wZXJhdGluZyBvbiBhIFBDSSBidXMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBvbiBob3cgdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIGlzIHByb2JlZCwgdGhlIGludGVycnVwdCBsaW5lcyBhcmUgaGFuZGxlZCwgYW5kIGhvdyB0aGUgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgbmV0d29yayBzdGFjay4gSSYjMzk7bGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYW55IHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMgYW5kIGhvdyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gaW50ZXJhY3RzIHdpdGggdGhlIGNvcmUgTUFDQiBkcml2ZXIgZnVuY3Rpb25hbGl0eS4gVGltZSB0byBnZXQgY29kaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY2JfcGNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTQ1PWNvbmZpZyBNQUNCX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy01MS1cdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjUyOlx0ICB3aWxsIGJlIGNhbGxlZCBtYWNiX3BjaS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy01My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19NQUNCKSAmIzQzOz0gbWFjYi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19NQUNCX1BDSSkgJiM0Mzs9IG1hY2JfcGNpLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTk6I2RlZmluZSBQQ0lfRFJJVkVSX05BTUUgXCYjMzQ7bWFjYl9wY2lcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0yMC0jZGVmaW5lIFBMQVRfRFJJVkVSX05BTUUgXCYjMzQ7bWFjYlwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGRldl9pZF90YWJsZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTI1OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYWNiX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI2LVx0Lm5hbWUgICAgID0gUENJX0RSSVZFUl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTMyOm1vZHVsZV9wY2lfZHJpdmVyKG1hY2JfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTMzLU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkZXZfaWRfdGFibGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNDEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipQQ0kgSW5zdGFudGlhdGlvbiBhbmQgRGV2aWNlIElEIFRhYmxlIEluc3BlY3Rpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgTUFDQiBjb250cm9sbGVyLCBhbmQgdGhlIGltcGxpY2F0aW9uIGhlcmUgaXMgdGhhdCBpdCBjYW4gYmUgYnJvdWdodCB1cCB0aHJvdWdoIFBDSS4gRXhjZWxsZW50LiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhpcywgYW5kIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgZGV2X2lkX3RhYmxlYCB3aXRoaW4gYG1hY2JfcGNpLmNgLiBJIG5lZWQgdG8gdmVyaWZ5IHdoaWNoIFBDSSBkZXZpY2UgSURzIGFyZSBzdXBwb3J0ZWQgZm9yIHRoaXMgc3BlY2lmaWMgTUFDQiBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZHJpdmVyJiMzOTtzIGRldmljZSBJRCB0YWJsZSBpbmNsdWRlcyB0aGUgc3BlY2lmaWMgSURzIEkmIzM5O20gZGVhbGluZyB3aXRoLiBUaGlzIGlzIGNydWNpYWwgZm9yIHByb3BlciBQQ0kgZGV2aWNlIHByb2JlIGFuZCBkcml2ZXIgYXR0YWNobWVudC4gTGV0JiMzOTtzIHNlZSBpZiB0aG9zZSBJRHMgbWF0Y2ggdXAuIEdvdHRhIGNoZWNrIGZvciB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSUQsIHN1YnZlbmRvciwgc3ViZGV2aWNlLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUsIGJ1dCBJIGp1c3Qgd2FudCB0byBxdWlja2x5IGNvbmZpcm0gaXQmIzM5O3Mgbm90IGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIG9yIHZhcmlhdGlvbiBiZWZvcmUgSSBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExMDpcdFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxhdF9kZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG4gMTExOlx0XHRzdHJ1Y3QgbWFjYl9wbGF0Zm9ybV9kYXRhICpwbGF0X2RhdGEgPSBkZXZfZ2V0X3BsYXRkYXRhKFx1MDAyNnBsYXRfZGV2LVx1MDAzZWRldik7XG4gMTEyOlx0XHRzdHJ1Y3QgY2xrICpwY2xrID0gcGxhdF9kYXRhLVx1MDAzZXBjbGs7XG4gMTEzOlx0XHRzdHJ1Y3QgY2xrICpoY2xrID0gcGxhdF9kYXRhLVx1MDAzZWhjbGs7XG4gMTE0Olx0XG4gMTE1Olx0XHRwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihwbGF0X2Rldik7XG4gMTE2Olx0XHRjbGtfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKHBjbGspO1xuIDExNzpcdFx0Y2xrX3VucmVnaXN0ZXJfZml4ZWRfcmF0ZShoY2xrKTtcbiAxMTg6XHR9XG4gMTE5Olx0XG4gMTIwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGRldl9pZF90YWJsZVtdID0ge1xuIDEyMTpcdFx0eyBQQ0lfVkRFVklDRShDRE5TLCBQQ0lfREVWSUNFX0lEX0NETlNfTUFDQikgfSxcbiAxMjI6XHRcdHsgMCwgfVxuIDEyMzpcdH07XG4gMTI0Olx0XG4gMTI1Olx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcbiAxMjY6XHRcdC5uYW1lICAgICA9IFBDSV9EUklWRVJfTkFNRSxcbiAxMjc6XHRcdC5pZF90YWJsZSA9IGRldl9pZF90YWJsZSxcbiAxMjg6XHRcdC5wcm9iZSAgICA9IG1hY2JfcHJvYmUsXG4gMTI5Olx0XHQucmVtb3ZlXHQgID0gbWFjYl9yZW1vdmUsXG4gMTMwOlx0fTtcbiAxMzE6XHRcbiAxMzI6XHRtb2R1bGVfcGNpX2RyaXZlcihtYWNiX3BjaV9kcml2ZXIpO1xuIDEzMzpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkZXZfaWRfdGFibGUpO1xuIDEzNDpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4gMTM1Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0NhZGVuY2UgTklDIFBDSSB3cmFwcGVyXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTYxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE1BQ0IgRXRoZXJuZXQgRHJpdmVyIHZpYSBQQ0kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQmIzM5O3MgdXNpbmcgYFBDSV9WREVWSUNFKENETlMsIFBDSV9ERVZJQ0VfSURfQ0ROU19NQUNCKWAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBhIENhZGVuY2UgTUFDQiBjb250cm9sbGVyIGFuZCBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGggUENJLiBHcmVhdCEgSWYgYENPTkZJR19NQUNCX1BDSWAgaXMgZW5hYmxlZCwgd2UmIzM5O3ZlIGdvdCBhIHBvdGVudGlhbCBQQ0kgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGF0JiMzOTtzIHRoZSBtb3N0IGxpa2VseSBhdHRhY2sgdmVjdG9yLCBhbmQgc2luY2UgaXQgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBpdCBpcyBpZGVhbC4KCk5vdywgd2FpdCBhIHNlY29uZC4uLiB0aGUgcGF0Y2ggbW9kaWZpZXMgYG1hY2JfbWFpbi5jYC4gVGhhdCYjMzk7cyB0aGUgY29yZSBkcml2ZXIgZmlsZSwgdXN1YWxseS4gRG9lcyBgbWFjYl9wY2kuY2AsIHdoaWNoIGlzIHRoZSBQQ0ktc3BlY2lmaWMgcGFydCwgcmVseSBvbiB0aGUgY29yZSBkcml2ZXI/IE5lZWQgdG8gbWFrZSBzdXJlLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgcHJvYmUgZnVuY3Rpb24gaW4gYG1hY2JfcGNpLmNgLiBBaCwgeWVzISBJdCByZWdpc3RlcnMgYSBwbGF0Zm9ybSBkZXZpY2UgbmFtZWQgJiMzNDttYWNiLiYjMzQ7IE9rYXksIHNvIHRoZSBQQ0kgY29kZSBpcyBsaWtlbHkgdXNpbmcgdGhlIGNvcmUgZHJpdmVyIGNvZGUuIEV4Y2VsbGVudC4gTG9va3MgcHJvbWlzaW5nIGZvciB0ZXN0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjA6XHRcdC8qIGluaXRpYWxpemUgY2xvY2tzICovXG4gIDYxOlx0XHRwbGF0X2RhdGEucGNsayA9IGNsa19yZWdpc3Rlcl9maXhlZF9yYXRlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtwY2xrXCYjMzQ7LCBOVUxMLCAwLFxuICA2MjpcdFx0XHRcdFx0XHRcdCBHRU1fUENMS19SQVRFKTtcbiAgNjM6XHRcdGlmIChJU19FUlIocGxhdF9kYXRhLnBjbGspKSB7XG4gIDY0Olx0XHRcdGVyciA9IFBUUl9FUlIocGxhdF9kYXRhLnBjbGspO1xuICA2NTpcdFx0XHRnb3RvIGVycl9wY2xrX3JlZ2lzdGVyO1xuICA2NjpcdFx0fVxuICA2NzpcdFxuICA2ODpcdFx0cGxhdF9kYXRhLmhjbGsgPSBjbGtfcmVnaXN0ZXJfZml4ZWRfcmF0ZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7aGNsa1wmIzM0OywgTlVMTCwgMCxcbiAgNjk6XHRcdFx0XHRcdFx0XHQgR0VNX0hDTEtfUkFURSk7XG4gIDcwOlx0XHRpZiAoSVNfRVJSKHBsYXRfZGF0YS5oY2xrKSkge1xuICA3MTpcdFx0XHRlcnIgPSBQVFJfRVJSKHBsYXRfZGF0YS5oY2xrKTtcbiAgNzI6XHRcdFx0Z290byBlcnJfaGNsa19yZWdpc3RlcjtcbiAgNzM6XHRcdH1cbiAgNzQ6XHRcbiAgNzU6XHRcdC8qIHNldCB1cCBwbGF0Zm9ybSBkZXZpY2UgaW5mbyAqL1xuICA3NjpcdFx0bWVtc2V0KFx1MDAyNnBsYXRfaW5mbywgMCwgc2l6ZW9mKHBsYXRfaW5mbykpO1xuICA3NzpcdFx0cGxhdF9pbmZvLnBhcmVudCA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuICA3ODpcdFx0cGxhdF9pbmZvLmZ3bm9kZSA9IHBkZXYtXHUwMDNlZGV2LmZ3bm9kZTtcbiAgNzk6XHRcdHBsYXRfaW5mby5uYW1lID0gUExBVF9EUklWRVJfTkFNRTtcbiAgODA6XHRcdHBsYXRfaW5mby5pZCA9IHBkZXYtXHUwMDNlZGV2Zm47XG4gIDgxOlx0XHRwbGF0X2luZm8ucmVzID0gcmVzO1xuICA4MjpcdFx0cGxhdF9pbmZvLm51bV9yZXMgPSBBUlJBWV9TSVpFKHJlcyk7XG4gIDgzOlx0XHRwbGF0X2luZm8uZGF0YSA9IFx1MDAyNnBsYXRfZGF0YTtcbiAgODQ6XHRcdHBsYXRfaW5mby5zaXplX2RhdGEgPSBzaXplb2YocGxhdF9kYXRhKTtcbiAgODU6XHRcdHBsYXRfaW5mby5kbWFfbWFzayA9IHBkZXYtXHUwMDNlZG1hX21hc2s7XG4gIDg2Olx0XG4gIDg3Olx0XHQvKiByZWdpc3RlciBwbGF0Zm9ybSBkZXZpY2UgKi9cbiAgODg6XHRcdHBsYXRfZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX2Z1bGwoXHUwMDI2cGxhdF9pbmZvKTtcbiAgODk6XHRcdGlmIChJU19FUlIocGxhdF9kZXYpKSB7XG4gIDkwOlx0XHRcdGVyciA9IFBUUl9FUlIocGxhdF9kZXYpO1xuICA5MTpcdFx0XHRnb3RvIGVycl9wbGF0X2Rldl9yZWdpc3RlcjtcbiAgOTI6XHRcdH1cbiAgOTM6XHRcbiAgOTQ6XHRcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBwbGF0X2Rldik7XG4gIDk1Olx0XG4gIDk2Olx0XHRyZXR1cm4gMDtcbiAgOTc6XHRcbiAgOTg6XHRlcnJfcGxhdF9kZXZfcmVnaXN0ZXI6XG4gIDk5Olx0XHRjbGtfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKHBsYXRfZGF0YS5oY2xrKTtcbiAxMDA6XHRcbiAxMDE6XHRlcnJfaGNsa19yZWdpc3RlcjpcbiAxMDI6XHRcdGNsa191bnJlZ2lzdGVyX2ZpeGVkX3JhdGUocGxhdF9kYXRhLnBjbGspO1xuIDEwMzpcdFxuIDEwNDpcdGVycl9wY2xrX3JlZ2lzdGVyOlxuIDEwNTpcdFx0cmV0dXJuIGVycjtcbiAxMDY6XHR9XG4gMTA3Olx0XG4gMTA4Olx0c3RhdGljIHZvaWQgbWFjYl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gMTA5Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDkzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKm1hY2IgRGV2aWNlIEJpbmRpbmcgLSBBIFF1aWNrIENoZWNrKioKClJpZ2h0LCBzbyBJIHNlZSB0aGlzICYjMzQ7bWFjYiYjMzQ7IHBsYXRmb3JtIGRldmljZSByZWdpc3RlcmluZy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCBzaG91bGQgYmluZCB0byB0aGUgYG1hY2JgIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBvbmUgZGVmaW5lZCBpbiBgbWFjYl9tYWluLmNgLiBNYWtlcyBzZW5zZSwgdGhlIG5hbWluZyBjb252ZW50aW9uIGlzIGNvbnNpc3RlbnQsIHdoaWNoIGlzIGFsd2F5cyBhIGdvb2Qgc2lnbi4gQnV0IGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIEkganVzdCB3YW50IHRvIG1ha2UgYSBxdWljayB2ZXJpZmljYXRpb24uIExldCBtZSBqdXN0IGNvbmZpcm0gdGhlIGRyaXZlciYjMzk7cyBuYW1lIGluIGBtYWNiX21haW4uY2AgbWF0Y2hlcyB0aGUgcmVnaXN0ZXJlZCBkZXZpY2UuIE5vdGhpbmcgY29tcGxleCwganVzdCBtYWtpbmcgc3VyZSB0aGUgZnVuZGFtZW50YWxzIGFyZSBzb3VuZCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIG1vcmUgaW50ZXJlc3RpbmcgYXNwZWN0cyBvZiB0aGUgZHJpdmVyJiMzOTtzIG9wZXJhdGlvbi4gR290dGEgc3RheSBzaGFycCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDI1OTkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDEtI2luY2x1ZGUgXHUwMDNjbmV0L3BrdF9zY2hlZC5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQyOiNpbmNsdWRlIFwmIzM0O21hY2IuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDQtLyogVGhpcyBzdHJ1Y3R1cmUgaXMgb25seSB1c2VkIGZvciBNQUNCIG9uIFNpRml2ZSBGVTU0MCBkZXZpY2VzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1OnN0cnVjdCBzaWZpdmVfZnU1NDBfbWFjYl9tZ210IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDYtXHR2b2lkIF9faW9tZW0gKnJlZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEyOC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTI5OnN0YXRpYyB1bnNpZ25lZCBpbnQgbWFjYl9kbWFfZGVzY19nZXRfc2l6ZShzdHJ1Y3QgbWFjYiAqYnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEzMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEzMTpcdHVuc2lnbmVkIGludCBkZXNjX3NpemUgPSBzaXplb2Yoc3RydWN0IG1hY2JfZG1hX2Rlc2MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEzMzpcdGlmIChtYWNiX2RtYTY0KGJwKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTM0Olx0XHRkZXNjX3NpemUgJiM0Mzs9IHNpemVvZihzdHJ1Y3QgbWFjYl9kbWFfZGVzY182NCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEzNTpcdGlmIChtYWNiX2RtYV9wdHAoYnApKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMzY6XHRcdGRlc2Nfc2l6ZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBtYWNiX2RtYV9kZXNjX3B0cCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEzNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTQxOnN0YXRpYyB1bnNpZ25lZCBpbnQgbWFjYl9hZGpfZG1hX2Rlc2NfaWR4KHN0cnVjdCBtYWNiICpicCwgdW5zaWduZWQgaW50IGRlc2NfaWR4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNDIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNDM6XHRyZXR1cm4gZGVzY19pZHggKiAoMSAmIzQzOyBtYWNiX2RtYTY0KGJwKSAmIzQzOyBtYWNiX2RtYV9wdHAoYnApKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTQ0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNDY6c3RhdGljIHN0cnVjdCBtYWNiX2RtYV9kZXNjXzY0ICptYWNiXzY0Yl9kZXNjKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IG1hY2JfZG1hX2Rlc2MgKmRlc2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE0Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE0ODpcdHJldHVybiAoc3RydWN0IG1hY2JfZG1hX2Rlc2NfNjQgKikoKHZvaWQgKilkZXNjXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE0OTpcdFx0JiM0Mzsgc2l6ZW9mKHN0cnVjdCBtYWNiX2RtYV9kZXNjKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE1MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNTItLyogUmluZyBidWZmZXIgYWNjZXNzb3JzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE1MzpzdGF0aWMgdW5zaWduZWQgaW50IG1hY2JfdHhfcmluZ193cmFwKHN0cnVjdCBtYWNiICpicCwgdW5zaWduZWQgaW50IGluZGV4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNTg6c3RhdGljIHN0cnVjdCBtYWNiX2RtYV9kZXNjICptYWNiX3R4X2Rlc2Moc3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNTktXHRcdFx0XHRcdCAgdW5zaWduZWQgaW50IGluZGV4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNjE6XHRpbmRleCA9IG1hY2JfdHhfcmluZ193cmFwKHF1ZXVlLVx1MDAzZWJwLCBpbmRleCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE2MjpcdGluZGV4ID0gbWFjYl9hZGpfZG1hX2Rlc2NfaWR4KHF1ZXVlLVx1MDAzZWJwLCBpbmRleCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE2My1cdHJldHVybiBcdTAwMjZxdWV1ZS1cdTAwM2V0eF9yaW5nW2luZGV4XTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTY2OnN0YXRpYyBzdHJ1Y3QgbWFjYl90eF9za2IgKm1hY2JfdHhfc2tiKHN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTY3LVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBpbmRleClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTY4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTY5Olx0cmV0dXJuIFx1MDAyNnF1ZXVlLVx1MDAzZXR4X3NrYlttYWNiX3R4X3Jpbmdfd3JhcChxdWV1ZS1cdTAwM2VicCwgaW5kZXgpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTcwLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNzI6c3RhdGljIGRtYV9hZGRyX3QgbWFjYl90eF9kbWEoc3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlLCB1bnNpZ25lZCBpbnQgaW5kZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE3My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE3NjpcdG9mZnNldCA9IG1hY2JfdHhfcmluZ193cmFwKHF1ZXVlLVx1MDAzZWJwLCBpbmRleCkgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNzc6XHRcdFx0bWFjYl9kbWFfZGVzY19nZXRfc2l6ZShxdWV1ZS1cdTAwM2VicCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE3OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTgyOnN0YXRpYyB1bnNpZ25lZCBpbnQgbWFjYl9yeF9yaW5nX3dyYXAoc3RydWN0IG1hY2IgKmJwLCB1bnNpZ25lZCBpbnQgaW5kZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE4My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE4NzpzdGF0aWMgc3RydWN0IG1hY2JfZG1hX2Rlc2MgKm1hY2JfcnhfZGVzYyhzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWUsIHVuc2lnbmVkIGludCBpbmRleClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTg4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTg5Olx0aW5kZXggPSBtYWNiX3J4X3Jpbmdfd3JhcChxdWV1ZS1cdTAwM2VicCwgaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxOTA6XHRpbmRleCA9IG1hY2JfYWRqX2RtYV9kZXNjX2lkeChxdWV1ZS1cdTAwM2VicCwgaW5kZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xOTEtXHRyZXR1cm4gXHUwMDI2cXVldWUtXHUwMDNlcnhfcmluZ1tpbmRleF07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE5NDpzdGF0aWMgdm9pZCAqbWFjYl9yeF9idWZmZXIoc3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlLCB1bnNpZ25lZCBpbnQgaW5kZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE5NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE5Ni1cdHJldHVybiBxdWV1ZS1cdTAwM2VyeF9idWZmZXJzICYjNDM7IHF1ZXVlLVx1MDAzZWJwLVx1MDAzZXJ4X2J1ZmZlcl9zaXplICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTk3Olx0ICAgICAgIG1hY2JfcnhfcmluZ193cmFwKHF1ZXVlLVx1MDAzZWJwLCBpbmRleCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE5OC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMDAtLyogSS9PIGFjY2Vzc29ycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyMDE6c3RhdGljIHUzMiBod19yZWFkbF9uYXRpdmUoc3RydWN0IG1hY2IgKmJwLCBpbnQgb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMDIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyMDY6c3RhdGljIHZvaWQgaHdfd3JpdGVsX25hdGl2ZShzdHJ1Y3QgbWFjYiAqYnAsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjA3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTIxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MjExOnN0YXRpYyB1MzIgaHdfcmVhZGwoc3RydWN0IG1hY2IgKmJwLCBpbnQgb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMTIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyMTY6c3RhdGljIHZvaWQgaHdfd3JpdGVsKHN0cnVjdCBtYWNiICpicCwgaW50IG9mZnNldCwgdTMyIHZhbHVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MjM4PXN0YXRpYyBib29sIGh3X2lzX2dlbSh2b2lkIF9faW9tZW0gKmFkZHIsIGJvb2wgbmF0aXZlX2lvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNTA6c3RhdGljIHZvaWQgbWFjYl9zZXRfaHdhZGRyKHN0cnVjdCBtYWNiICpicClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI1NS1cdGJvdHRvbSA9IGdldF91bmFsaWduZWRfbGUzMihicC1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNTY6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBMUIsIGJvdHRvbSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI1Ny1cdHRvcCA9IGdldF91bmFsaWduZWRfbGUxNihicC1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHIgJiM0MzsgNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjI1ODpcdG1hY2Jfb3JfZ2VtX3dyaXRlbChicCwgU0ExVCwgdG9wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjY1LVx0LyogQ2xlYXIgdW51c2VkIGFkZHJlc3MgcmVnaXN0ZXIgc2V0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNjY6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBMkIsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNjc6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBMlQsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNjg6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBM0IsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNjk6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBM1QsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNzA6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBNEIsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNzE6XHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBNFQsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yNzItfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjI3NDpzdGF0aWMgdm9pZCBtYWNiX2dldF9od2FkZHIoc3RydWN0IG1hY2IgKmJwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yNzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjgyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgNDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MjgzOlx0XHRib3R0b20gPSBtYWNiX29yX2dlbV9yZWFkbChicCwgU0ExQiAmIzQzOyBpICogOCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjI4NDpcdFx0dG9wID0gbWFjYl9vcl9nZW1fcmVhZGwoYnAsIFNBMVQgJiM0MzsgaSAqIDgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yODUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMwMzpzdGF0aWMgaW50IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKHN0cnVjdCBtYWNiICpicClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzA0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzExOnN0YXRpYyBpbnQgbWFjYl9tZGlvX3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBtaWlfaWQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMxMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMxMzpcdHN0cnVjdCBtYWNiICpicCA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMTQtXHRpbnQgc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozMjA6XHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMyMS1cdGlmIChzdGF0dXMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMyNDpcdG1hY2Jfd3JpdGVsKGJwLCBNQU4sIChNQUNCX0JGKFNPRiwgTUFDQl9NQU5fQzIyX1NPRilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzI1LVx0XHRcdCAgICAgIHwgTUFDQl9CRihSVywgTUFDQl9NQU5fQzIyX1JFQUQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMzMDpcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzMxLVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzM0Olx0c3RhdHVzID0gTUFDQl9CRkVYVChEQVRBLCBtYWNiX3JlYWRsKGJwLCBNQU4pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzM1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozNDI6c3RhdGljIGludCBtYWNiX21kaW9fcmVhZF9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IG1paV9pZCwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNDMtXHRcdFx0ICAgICAgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzQ0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzQ1Olx0c3RydWN0IG1hY2IgKmJwID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM0Ni1cdGludCBzdGF0dXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM1NDpcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzU1LVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzU4Olx0bWFjYl93cml0ZWwoYnAsIE1BTiwgKE1BQ0JfQkYoU09GLCBNQUNCX01BTl9DNDVfU09GKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNTktXHRcdFx0ICAgICAgfCBNQUNCX0JGKFJXLCBNQUNCX01BTl9DNDVfQUREUilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzY1Olx0c3RhdHVzID0gbWFjYl9tZGlvX3dhaXRfZm9yX2lkbGUoYnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNjYtXHRpZiAoc3RhdHVzIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozNjk6XHRtYWNiX3dyaXRlbChicCwgTUFOLCAoTUFDQl9CRihTT0YsIE1BQ0JfTUFOX0M0NV9TT0YpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM3MC1cdFx0XHQgICAgICB8IE1BQ0JfQkYoUlcsIE1BQ0JfTUFOX0M0NV9SRUFEKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozNzU6XHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM3Ni1cdGlmIChzdGF0dXMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM3OTpcdHN0YXR1cyA9IE1BQ0JfQkZFWFQoREFUQSwgbWFjYl9yZWFkbChicCwgTUFOKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM4MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Mzg3OnN0YXRpYyBpbnQgbWFjYl9tZGlvX3dyaXRlX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgbWlpX2lkLCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zODgtXHRcdFx0ICAgICAgIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzg5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzkwOlx0c3RydWN0IG1hY2IgKmJwID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM5MS1cdGludCBzdGF0dXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM5NzpcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzk4LVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDAxOlx0bWFjYl93cml0ZWwoYnAsIE1BTiwgKE1BQ0JfQkYoU09GLCBNQUNCX01BTl9DMjJfU09GKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MDItXHRcdFx0ICAgICAgfCBNQUNCX0JGKFJXLCBNQUNCX01BTl9DMjJfV1JJVEUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQwODpcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDA5LVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDE4OnN0YXRpYyBpbnQgbWFjYl9tZGlvX3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgbWlpX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MTktXHRcdFx0ICAgICAgIGludCBkZXZhZCwgaW50IHJlZ251bSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQyMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQyMjpcdHN0cnVjdCBtYWNiICpicCA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MjMtXHRpbnQgc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0MzE6XHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQzMi1cdGlmIChzdGF0dXMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQzNTpcdG1hY2Jfd3JpdGVsKGJwLCBNQU4sIChNQUNCX0JGKFNPRiwgTUFDQl9NQU5fQzQ1X1NPRilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDM2LVx0XHRcdCAgICAgIHwgTUFDQl9CRihSVywgTUFDQl9NQU5fQzQ1X0FERFIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ0MjpcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDQzLVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDQ2Olx0bWFjYl93cml0ZWwoYnAsIE1BTiwgKE1BQ0JfQkYoU09GLCBNQUNCX01BTl9DNDVfU09GKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NDctXHRcdFx0ICAgICAgfCBNQUNCX0JGKFJXLCBNQUNCX01BTl9DNDVfV1JJVEUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1MzpcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDU0LVx0aWYgKHN0YXR1cyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDYzOnN0YXRpYyB2b2lkIG1hY2JfaW5pdF9idWZmZXJzKHN0cnVjdCBtYWNiICpicClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDY0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDY1Olx0c3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjYtXHR1bnNpZ25lZCBpbnQgcTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2OC1cdC8qIFNpbmdsZSByZWdpc3RlciBmb3IgYWxsIHF1ZXVlcyYjMzk7IGhpZ2ggMzIgYml0cy4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDY5Olx0aWYgKG1hY2JfZG1hNjQoYnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ3MDpcdFx0bWFjYl93cml0ZWwoYnAsIFJCUVBILFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NzEtXHRcdFx0ICAgIHVwcGVyXzMyX2JpdHMoYnAtXHUwMDNlcXVldWVzWzBdLnJ4X3JpbmdfZG1hKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ3MjpcdFx0bWFjYl93cml0ZWwoYnAsIFRCUVBILFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NzMtXHRcdFx0ICAgIHVwcGVyXzMyX2JpdHMoYnAtXHUwMDNlcXVldWVzWzBdLnR4X3JpbmdfZG1hKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00ODItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ4MzogKiBtYWNiX3NldF90eF9jbGsoKSAtIFNldCBhIGNsb2NrIHRvIGEgbmV3IGZyZXF1ZW5jeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0ODQ6ICogQGJwOlx0XHRwb2ludGVyIHRvIHN0cnVjdCBtYWNiXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ4NS0gKiBAc3BlZWQ6XHROZXcgZnJlcXVlbmN5IGluIEh6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ4Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDg3OnN0YXRpYyB2b2lkIG1hY2Jfc2V0X3R4X2NsayhzdHJ1Y3QgbWFjYiAqYnAsIGludCBzcGVlZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDg4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTIwOnN0YXRpYyB2b2lkIG1hY2JfdXN4X3Bjc19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUyMS1cdFx0XHRcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLCBpbnQgc3BlZWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MjMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MjQ6XHRzdHJ1Y3QgbWFjYiAqYnAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgbWFjYiwgcGh5bGlua191c3hfcGNzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTI1LVx0dTMyIGNvbmZpZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM1OnN0YXRpYyB2b2lkIG1hY2JfdXN4X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzNi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUzOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUzOTpcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3VzeF9wY3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDAtXHR1MzIgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTM6c3RhdGljIGludCBtYWNiX3VzeF9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTQtXHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU1OTpcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3VzeF9wY3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU2NzpzdGF0aWMgdW5zaWduZWQgaW50IG1hY2JfcGNzX2luYmFuZF9jYXBzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NjgtXHRcdFx0XHRcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NzM6c3RhdGljIHZvaWQgbWFjYl9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NC1cdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3NjpcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3Ny1cdHUxNiBibXNyLCBscGE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU4NDpzdGF0aWMgdm9pZCBtYWNiX3Bjc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1ODY6XHRzdHJ1Y3QgbWFjYiAqYnAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgbWFjYiwgcGh5bGlua19zZ21paV9wY3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODctXHR1MzIgb2xkLCBuZXc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01OTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU5NDpzdGF0aWMgaW50IG1hY2JfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTk1LVx0XHRcdCAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU5OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYwMDpcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYwMS1cdHUzMiBvbGQsIG5ldztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYwOS1cdCAqIE11c3QgYmUgd3JpdHRlbiBhZnRlciBQQ1NTRUwgaXMgc2V0IGluIE5DRkdSIHdoaWNoIGlzIGRvbmUgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjEwOlx0ICogbWFjYl9tYWNfY29uZmlnKCksIG90aGVyd2lzZSB3cml0ZXMgd2lsbCBub3QgdGFrZSBlZmZlY3QuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYxMS1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjM6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgbWFjYl9waHlsaW5rX3VzeF9wY3Nfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjQ6XHQucGNzX2dldF9zdGF0ZSA9IG1hY2JfdXN4X3Bjc19nZXRfc3RhdGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyNTpcdC5wY3NfY29uZmlnID0gbWFjYl91c3hfcGNzX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjI2Olx0LnBjc19saW5rX3VwID0gbWFjYl91c3hfcGNzX2xpbmtfdXAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYyNy19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyOTpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfcGNzX29wcyBtYWNiX3BoeWxpbmtfcGNzX29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjMwOlx0LnBjc19pbmJhbmRfY2FwcyA9IG1hY2JfcGNzX2luYmFuZF9jYXBzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MzE6XHQucGNzX2dldF9zdGF0ZSA9IG1hY2JfcGNzX2dldF9zdGF0ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjMyOlx0LnBjc19hbl9yZXN0YXJ0ID0gbWFjYl9wY3NfYW5fcmVzdGFydCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjMzOlx0LnBjc19jb25maWcgPSBtYWNiX3Bjc19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYzNC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYzNjpzdGF0aWMgYm9vbCBtYWNiX3R4X2xwaV9zZXQoc3RydWN0IG1hY2IgKmJwLCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjM3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjQyOlx0bmNyID0gbWFjYl9yZWFkbChicCwgTkNSKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjQzLVx0b2xkID0gbmNyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjQ4LVx0aWYgKG9sZCAhPSBuY3IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjY0OTpcdFx0bWFjYl93cml0ZWwoYnAsIE5DUiwgbmNyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjUwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NTQ6c3RhdGljIGJvb2wgbWFjYl90eF9hbGxfcXVldWVzX2lkbGUoc3RydWN0IG1hY2IgKmJwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NTY6XHRzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY1Ny1cdHVuc2lnbmVkIGludCBxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NjY6c3RhdGljIHZvaWQgbWFjYl90eF9scGlfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY2Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjY2ODpcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbWFjYiwgdHhfbHBpX3dvcmsud29yayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY2OS1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NzEtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZicC1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjY3MjpcdGlmIChicC1cdTAwM2VlZWVfYWN0aXZlIFx1MDAyNlx1MDAyNiBtYWNiX3R4X2FsbF9xdWV1ZXNfaWRsZShicCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjY3MzpcdFx0bWFjYl90eF9scGlfc2V0KGJwLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjc0LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZicC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjY3NzpzdGF0aWMgdm9pZCBtYWNiX3R4X2xwaV9zY2hlZHVsZShzdHJ1Y3QgbWFjYiAqYnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY3OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02ODgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjY4OTpzdGF0aWMgdm9pZCBtYWNiX3R4X2xwaV93YWtlKHN0cnVjdCBtYWNiICpicClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjkwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Njk2Olx0aWYgKCFtYWNiX3R4X2xwaV9zZXQoYnAsIGZhbHNlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjk3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjcwMzpzdGF0aWMgdm9pZCBtYWNiX21hY19kaXNhYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzA0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzA1LVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB0b19uZXRfZGV2KGNvbmZpZy1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3MDY6XHRzdHJ1Y3QgbWFjYiAqYnAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzA3LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTcxMi1cdGJwLVx1MDAzZWVlZV9hY3RpdmUgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NzEzOlx0bWFjYl90eF9scGlfc2V0KGJwLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTcxNC1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2YnAtXHUwMDNlbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3MTc6c3RhdGljIGludCBtYWNiX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgdGltZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTcxOC1cdFx0XHRcdCAgYm9vbCB0eF9jbGtfc3RvcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTcyMC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gdG9fbmV0X2Rldihjb25maWctXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NzIxOlx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTcyMi1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjczNzpzdGF0aWMgdm9pZCBtYWNiX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MzgtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzQwLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB0b19uZXRfZGV2KGNvbmZpZy1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3NDE6XHRzdHJ1Y3QgbWFjYiAqYnAgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzQyLVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NzQ4Olx0b2xkX2N0cmwgPSBjdHJsID0gbWFjYl9vcl9nZW1fcmVhZGwoYnAsIE5DRkdSKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NzQ5Olx0b2xkX25jciA9IG5jciA9IG1hY2Jfb3JfZ2VtX3JlYWRsKGJwLCBOQ1IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NTMtXHRcdFx0Y3RybCB8PSBNQUNCX0JJVChSTTkyMDBfUk1JSSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc1NDpcdH0gZWxzZSBpZiAobWFjYl9pc19nZW0oYnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc1NS1cdFx0Y3RybCBcdTAwMjY9IH4oR0VNX0JJVChTR01JSUVOKSB8IEdFTV9CSVQoUENTU0VMKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NzItXHRpZiAob2xkX2N0cmwgXiBjdHJsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3NzM6XHRcdG1hY2Jfb3JfZ2VtX3dyaXRlbChicCwgTkNGR1IsIGN0cmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc3NS1cdGlmIChvbGRfbmNyIF4gbmNyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3NzY6XHRcdG1hY2Jfb3JfZ2VtX3dyaXRlbChicCwgTkNSLCBuY3IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03ODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc4MTpzdGF0aWMgdm9pZCBtYWNiX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03ODItXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03ODQtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHRvX25ldF9kZXYoY29uZmlnLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc4NTpcdHN0cnVjdCBtYWNiICpicCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3ODY6XHRzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc4Ny1cdHVuc2lnbmVkIGludCBxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzk1LVx0LyogRGlzYWJsZSBSeCBhbmQgVHggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Nzk2Olx0Y3RybCA9IG1hY2JfcmVhZGwoYnAsIE5DUikgXHUwMDI2IH4oTUFDQl9CSVQoUkUpIHwgTUFDQl9CSVQoVEUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Nzk3Olx0bWFjYl93cml0ZWwoYnAsIE5DUiwgY3RybCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc5OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTgwMi0vKiBVc2UganVnZ2xpbmcgYWxnb3JpdGhtIHRvIGxlZnQgcm90YXRlIHR4IHJpbmcgYW5kIHR4IHNrYiBhcnJheSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4MDM6c3RhdGljIHZvaWQgZ2VtX3NodWZmbGVfdHhfb25lX3Jpbmcoc3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MDQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MDUtXHR1bnNpZ25lZCBpbnQgaGVhZCwgdGFpbCwgY291bnQsIHJpbmdfc2l6ZSwgZGVzY19zaXplO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4MDY6XHRzdHJ1Y3QgbWFjYl90eF9za2IgdHhfc2tiLCAqc2tiX2N1cnIsICpza2JfbmV4dDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODA3Olx0c3RydWN0IG1hY2JfZG1hX2Rlc2MgKmRlc2NfY3VyciwgKmRlc2NfbmV4dDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODA4LVx0dW5zaWduZWQgaW50IGksIGN5Y2xlcywgc2hpZnQsIGN1cnIsIG5leHQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjgwOTpcdHN0cnVjdCBtYWNiICpicCA9IHF1ZXVlLVx1MDAzZWJwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MTAtXHR1bnNpZ25lZCBjaGFyIGRlc2NbMjRdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4MTM6XHRkZXNjX3NpemUgPSBtYWNiX2RtYV9kZXNjX2dldF9zaXplKGJwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODE0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODM2LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY3ljbGVzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4Mzc6XHRcdG1lbWNweShcdTAwMjZkZXNjLCBtYWNiX3R4X2Rlc2MocXVldWUsIGkpLCBkZXNjX3NpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4Mzg6XHRcdG1lbWNweShcdTAwMjZ0eF9za2IsIG1hY2JfdHhfc2tiKHF1ZXVlLCBpKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODM5Olx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtYWNiX3R4X3NrYikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NDAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NDQtXHRcdHdoaWxlIChuZXh0ICE9IGkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODQ1Olx0XHRcdGRlc2NfY3VyciA9IG1hY2JfdHhfZGVzYyhxdWV1ZSwgY3Vycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg0NjpcdFx0XHRkZXNjX25leHQgPSBtYWNiX3R4X2Rlc2MocXVldWUsIG5leHQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg1NTpcdFx0XHRza2JfY3VyciA9IG1hY2JfdHhfc2tiKHF1ZXVlLCBjdXJyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODU2Olx0XHRcdHNrYl9uZXh0ID0gbWFjYl90eF9za2IocXVldWUsIG5leHQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4NTc6XHRcdFx0bWVtY3B5KHNrYl9jdXJyLCBza2JfbmV4dCwgc2l6ZW9mKHN0cnVjdCBtYWNiX3R4X3NrYikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg2MzpcdFx0ZGVzY19jdXJyID0gbWFjYl90eF9kZXNjKHF1ZXVlLCBjdXJyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODY0LVx0XHRtZW1jcHkoZGVzY19jdXJyLCBcdTAwMjZkZXNjLCBkZXNjX3NpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODY4LVx0XHRcdGRlc2NfY3Vyci1cdTAwM2VjdHJsIHw9IE1BQ0JfQklUKFRYX1dSQVApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4Njk6XHRcdG1lbWNweShtYWNiX3R4X3NrYihxdWV1ZSwgY3VyciksIFx1MDAyNnR4X3NrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODcwOlx0XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBtYWNiX3R4X3NrYikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NzEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04ODMtLyogUm90YXRlIHRoZSBxdWV1ZSBzbyB0aGF0IHRoZSB0YWlsIGlzIGF0IGluZGV4IDAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODg0OnN0YXRpYyB2b2lkIGdlbV9zaHVmZmxlX3R4X3JpbmdzKHN0cnVjdCBtYWNiICpicClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODg1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODg2Olx0c3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04ODctXHRpbnQgcTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODkzOnN0YXRpYyB2b2lkIG1hY2JfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg5NC1cdFx0XHQgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04OTktXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHRvX25ldF9kZXYoY29uZmlnLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjkwMDpcdHN0cnVjdCBtYWNiICpicCA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5MDE6XHRzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkwMi1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjkwODpcdGN0cmwgPSBtYWNiX29yX2dlbV9yZWFkbChicCwgTkNGR1IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05MDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05MTktXHRcdGN0cmwgXHUwMDI2PSB+TUFDQl9CSVQoUEFFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTIwOlx0XHRpZiAobWFjYl9pc19nZW0oYnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkyMS1cdFx0XHRjdHJsIFx1MDAyNj0gfkdFTV9CSVQoR0JFKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTM2Olx0bWFjYl9vcl9nZW1fd3JpdGVsKGJwLCBOQ0ZHUiwgY3RybCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkzNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk0NC1cdGlmICghKGJwLVx1MDAzZWNhcHMgXHUwMDI2IE1BQ0JfQ0FQU19NQUNCX0lTX0VNQUMpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk0NTpcdFx0bWFjYl9zZXRfdHhfY2xrKGJwLCBzcGVlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk0Ni1cdFx0Z2VtX3NodWZmbGVfdHhfcmluZ3MoYnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTQ5LVx0LyogRW5hYmxlIFJ4IGFuZCBUeDsgRW5hYmxlIFBUUCB1bmljYXN0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk1MDpcdGN0cmwgPSBtYWNiX3JlYWRsKGJwLCBOQ1IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05NTEtXHRpZiAoZ2VtX2hhc19wdHAoYnApKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NTQ6XHRtYWNiX3dyaXRlbChicCwgTkNSLCBjdHJsIHwgTUFDQl9CSVQoUkUpIHwgTUFDQl9CSVQoVEUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NTk6c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWFjYl9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTYwLVx0XHRcdFx0XHQgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk2Mi1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gdG9fbmV0X2Rldihjb25maWctXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTYzOlx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk2NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTc0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIG1hY2JfcGh5bGlua19vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk3NTpcdC5tYWNfc2VsZWN0X3BjcyA9IG1hY2JfbWFjX3NlbGVjdF9wY3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk3NjpcdC5tYWNfY29uZmlnID0gbWFjYl9tYWNfY29uZmlnLFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzc4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIHRoZSAmIzM0O21hY2ImIzM0OyBEcml2ZXIqKgoKQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGUgJiMzNDttYWNiJiMzNDsgbmFtZS4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSByaW5naW5nIGJlbGxzIOKAkyBzb3VuZHMgbGlrZSBhIE1BQyAoTWVkaWEgQWNjZXNzIENvbnRyb2xsZXIpIEV0aGVybmV0IGRyaXZlciwgbGlrZWx5IGZvciBhIHNwZWNpZmljIHBsYXRmb3JtLiBNeSBmaXJzdCBtb3ZlIGlzIGFsd2F5cyB0byBjb25maXJtIHRoZSBkcml2ZXIgbmFtZSBhbmQgYW55IGFzc29jaWF0ZWQgZmlsZXMuICYjMzQ7bWFjYiYjMzQ7IGl0IGlzLCBzbyBub3cgSSBuZWVkIHRvIGRpdmUgaW4gYW5kIGdldCBteSBiZWFyaW5ncy4KCk15IGltbWVkaWF0ZSBhc3N1bXB0aW9uIGlzIHRoYXQgdGhpcyB3aWxsIGJlIGEgYHBsYXRmb3JtX2RyaXZlcmAsIGdpdmVuIHRoZSBjb250ZXh0LiBUaGUgbmV4dCBzdGVwIGlzIHRvIGxvY2F0ZSB0aGUgc291cmNlIGNvZGUsIGFuZCBJIHdvdWxkIHN0YXJ0IHdpdGggYG1hY2JfbWFpbi5jYCDigJMgdGhhdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBuYW1pbmcgY29udmVudGlvbi4gSSYjMzk7bGwgbGlrZWx5IGZpbmQgdGhlIGBwbGF0Zm9ybV9kcml2ZXJgIHN0cnVjdHVyZSBkZWZpbml0aW9uIGFuZCByZWdpc3RyYXRpb24gd2l0aGluIHRoYXQgZmlsZS4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCYjMzk7cyBwbGF0Zm9ybSBidXMsIGhvdyBpdCBnZXRzIHByb2JlZCwgYW5kIGhvdyBpdCBoYW5kbGVzIGRldmljZSBpbml0aWFsaXphdGlvbi4gRnJvbSB0aGVyZSwgSSBjYW4gZHJpbGwgZG93biBmdXJ0aGVyIGJhc2VkIG9uIHdoYXQgSSBmaW5kIGluIHRoYXQgaW5pdGlhbCBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NjI1Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgbWFjYl9wbV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjYxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1hY2JfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjYyLVx0LnByb2JlXHRcdD0gbWFjYl9wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYyNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyNzI6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtYWNiX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYyNzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjk4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIHRoZSBgbWFjYl9kcml2ZXJgIGlzIGRlZmluaXRlbHkgcmVnaXN0ZXJlZCBhcyBhIHBsYXRmb3JtIGRyaXZlci4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEFuZCBgbWFjYl9wY2kuY2AgcmVnaXN0ZXJzIGEgcGxhdGZvcm0gZGV2aWNlIHRoYXQgKmRvZXMqIG1hdGNoIHRoaXMgZHJpdmVyLCBzbyB0aGUgZHJpdmVyIHNob3VsZCBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggUENJLiBUaGF0JiMzOTtzIGhvdyB0aGlzIGlzIHN1cHBvc2VkIHRvIHdvcmssIHJpZ2h0PwoKTm93LCB0aGUgcXVlc3Rpb24gaXMsIGhhcyB0aGUgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24gYmVlbiBzZXQgdXAgY29ycmVjdGx5PyBEbyB0aGUgc3RhbmRhcmQgY29uZmlncyBlbmFibGUgYENPTkZJR19NQUNCX1BDSWA/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSWYgaXQmIzM5O3Mgbm90IGVuYWJsZWQgYnkgZGVmYXVsdCwgdGhlbiB3ZSYjMzk7bGwgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSBpdC4gVGltZSB0byBkaWcgaW50byB0aGUgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgpSaWdodCwgc28gd2UmIzM5O2xsIG5lZWQgdG8gYWRkIGBNQUNCX1BDSWAgYW5kIGBNQUNCYCB0byBgRW5hYmxlQ29uZmlnc2AuIEJ1dCBiZWZvcmUgSSBkbyB0aGF0LCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBLY29uZmlnLi4uIGJlY2F1c2UgYE1BQ0JfUENJYCBwcm9iYWJseSBoYXMgYSBkZXBlbmRlbmN5IG9uIGBNQUNCYC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IGRlcGVuZGVuY3kgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZ2AganVzdCB0byBiZSBzdXJlLCBhbmQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGl0IGlzIHJlZmxlY3RlZCBpbiBvdXIgY29uZmlnIGZpbGUuIE9rYXksIGdvb2QuIFRoYXQgc2hvdWxkIGRvIGl0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9MjA9aWYgTkVUX1ZFTkRPUl9DQURFTkNFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6MjI6Y29uZmlnIE1BQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yMy1cdHRyaXN0YXRlIFwmIzM0O0NhZGVuY2UgTUFDQi9HRU0gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzozNzpjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTM4LVx0Ym9vbCBcJiMzNDtVc2UgSUVFRSAxNTg4IGh3c3RhbXBcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6NDU6Y29uZmlnIE1BQ0JfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtDYWRlbmNlIFBDSSBNQUNCL0dFTSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTc0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgYE1BQ0JfUENJYCBEZXBlbmRlbmNpZXMqKgoKT2theSwgdGltZSB0byBkaWcgaW4uIFRoZSBwcm9qZWN0JiMzOTtzIGJlZW4gZmxhZ2dlZCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCB0aGlzIGBNQUNCX1BDSWAgbW9kdWxlLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGxldCYjMzk7cyBnZXQgYSBoYW5kbGUgb24gaXRzIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBjb21wb25lbnRzLCBsaWJyYXJpZXMsIG9yIGV2ZW4gc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgYXJlIHJlbHlpbmcgb24gdGhpcyB0aGluZy4gQSBkZXBlbmRlbmN5IGdyYXBoIHdvdWxkIGJlIGlkZWFsLCBidXQgZXZlbiBhIGJhc2ljIGxpc3Qgd2lsbCBnZXQgbWUgc3RhcnRlZC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgZHJpdmVyLCBvciBzb21ldGhpbmcgbW9yZSBkZWVwbHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBzeXN0ZW0mIzM5O3MgYXJjaGl0ZWN0dXJlPyBLbm93aW5nIGlmIGl0IHRvdWNoZXMgdGhlIGtlcm5lbCwgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzLCBvciByZWxpZXMgb24gc29tZSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgd2lsbCBkcml2ZSB0aGUgaW52ZXN0aWdhdGlvbi4gR290dGEgZW5zdXJlIHRoZXJlIGFyZSBubyBicmVha2luZyBjaGFuZ2VzIG9yIHVuZXhwZWN0ZWQgY29uZmxpY3RzIGlmIHdlIHBsYW4gYW55IGNoYW5nZXMuIFNvLCBsZXQmIzM5O3Mgc3RhcnQgbWFwcGluZyBvdXQgdGhpcyBkZXBlbmRlbmN5IGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXG4gIDQxOlx0XHRkZWZhdWx0IHlcbiAgNDI6XHRcdGhlbHBcbiAgNDM6XHRcdCAgRW5hYmxlIElFRUUgMTU4OCBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBzdXBwb3J0IGZvciBNQUNCLlxuICA0NDpcdFxuICA0NTpcdGNvbmZpZyBNQUNCX1BDSVxuICA0NjpcdFx0dHJpc3RhdGUgXCYjMzQ7Q2FkZW5jZSBQQ0kgTUFDQi9HRU0gc3VwcG9ydFwmIzM0O1xuICA0NzpcdFx0ZGVwZW5kcyBvbiBNQUNCIFx1MDAyNlx1MDAyNiBQQ0lcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBpcyBQQ0kgd3JhcHBlciBmb3IgTUFDQiBkcml2ZXIuXG4gIDUwOlx0XG4gIDUxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgNTI6XHRcdCAgd2lsbCBiZSBjYWxsZWQgbWFjYl9wY2kuXG4gIDUzOlx0XG4gIDU0Olx0ZW5kaWYgIyBORVRfVkVORE9SX0NBREVOQ0VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI0MTgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipEZWNvbnN0cnVjdGluZyB0aGUgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGFuZCBpdCYjMzk7cyBjbGVhciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGhpbmdlcyBvbiB0d28gcHJpbWFyeSBmYWN0b3JzOiBgTUFDQmAgYW5kIGBQQ0lgLiBUaGF0IG11Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBOb3csIHRoZSBjb21wbGV4aXR5IHN0YXJ0cyB0byB1bmZvbGQgYXMgSSBkaWcgZGVlcGVyLiBJdCYjMzk7cyBldmlkZW50IHRoYXQgYE1BQ0JgIGlzbiYjMzk7dCBhIHN0YW5kYWxvbmUgZWxlbWVudDsgaXRzIG9wZXJhdGlvbiBvciBpbXBsZW1lbnRhdGlvbiwgYXQgbGVhc3QgaW4gdGhpcyBjb250ZXh0LCBpcyBpdHNlbGYgZGVwZW5kZW50IG9uIGBIQVNfRE1BYCBhbmQgYENPTU1PTl9DTEtgLiBUaGlzIG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzdGF0ZSBvZiAqdGhvc2UqIGNvbXBvbmVudHMgdG8gZnVsbHkgZ3Jhc3AgdGhlIHN0YXRlIG9mIGBNQUNCYCwgd2hpY2ggdGhlbiBkaXJlY3RseSBpbXBhY3RzIHRoZSBvdmVyYWxsIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZGVwZW5kZW5jeSBjaGFpbiB2ZXJ5IGNhcmVmdWxseS4gSSYjMzk7bSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBjb25maWd1cmF0aW9ucyB3aGVyZSBgSEFTX0RNQWAgb3IgYENPTU1PTl9DTEtgIG1pZ2h0IGJlIHNldCBkaWZmZXJlbnRseSwgbGVhZGluZyB0byBkaWZmZXJlbnQgYmVoYXZpb3JzIGZvciBgTUFDQmAgYW5kIGRvd25zdHJlYW0gZWZmZWN0cyBvbiBgUENJYC4gVGhlIGdvYWwgaXMgdG8gaXNvbGF0ZSB0aGUgY3JpdGljYWwgcGF0aCBhbmQgdW5kZXJzdGFuZCBlYWNoIGVsZW1lbnQmIzM5O3Mgcm9sZSB3aXRoaW4gdGhlIHN5c3RlbS4gSSBoYXZlIHRvIGFzc2VzcyB3aGV0aGVyIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGhhcmQgcmVxdWlyZW1lbnRzLCBvciBjb25kaXRpb25hbCwgYW5kIHRoZSBzcGVjaWZpYyBpbXBhY3Qgb24gdGhlIGVuZCBnb2FsIG9mIHRoaXMgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0aWYgTkVUX1ZFTkRPUl9DQURFTkNFXG4gIDIxOlx0XG4gIDIyOlx0Y29uZmlnIE1BQ0JcbiAgMjM6XHRcdHRyaXN0YXRlIFwmIzM0O0NhZGVuY2UgTUFDQi9HRU0gc3VwcG9ydFwmIzM0O1xuICAyNDpcdFx0ZGVwZW5kcyBvbiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLXG4gIDI1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDI2Olx0XHRzZWxlY3QgUEhZTElOS1xuICAyNzpcdFx0c2VsZWN0IENSQzMyXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIFRoZSBDYWRlbmNlIE1BQ0IgZXRoZXJuZXQgaW50ZXJmYWNlIGlzIGZvdW5kIG9uIG1hbnkgQXRtZWwgQVQzMiBhbmRcbiAgMzA6XHRcdCAgQVQ5MSBwYXJ0cy4gIFRoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgdGhlIENhZGVuY2UgR0VNIChHaWdhYml0XG4gIDMxOlx0XHQgIEV0aGVybmV0IE1BQyBmb3VuZCBpbiBzb21lIEFSTSBTb0MgZGV2aWNlcykuICBTYXkgWSB0byBpbmNsdWRlXG4gIDMyOlx0XHQgIHN1cHBvcnQgZm9yIHRoZSBNQUNCL0dFTSBjaGlwLlxuICAzMzpcdFxuICAzNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDM1Olx0XHQgIHdpbGwgYmUgbWFjYi5cbiAgMzY6XHRcbiAgMzc6XHRjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxuICAzODpcdFx0Ym9vbCBcJiMzNDtVc2UgSUVFRSAxNTg4IGh3c3RhbXBcJiMzNDtcbiAgMzk6XHRcdGRlcGVuZHMgb24gTUFDQlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzAxNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBDYWRlbmNlIE5ldHdvcmsgSW50ZXJmYWNlIERyaXZlcnMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBpbnRlZ3JhdGluZyBhIENhZGVuY2UgbmV0d29yayBpbnRlcmZhY2UgaW50byBhIG5ldyBzeXN0ZW0uIFRoZSBrZXkgdGhpbmcgSSBpbW1lZGlhdGVseSBuZWVkIHRvIGNvbmZpcm0gaXMgdGhhdCB0aGUgYE5FVF9WRU5ET1JfQ0FERU5DRWAga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGRlZmluaXRlbHkgZW5hYmxlZC4gVGhpcyBpcyB0aGUgZm91bmRhdGlvbmFsIGJ1aWxkaW5nIGJsb2NrLiBXaXRob3V0IGl0LCBJJiMzOTttIG5vdCBldmVuIGdvaW5nIHRvIGdldCB0aGUgbmVjZXNzYXJ5IGZyYW1ld29yayBmb3IgdGhlIENhZGVuY2Utc3BlY2lmaWMgZHJpdmVycyB0byBjb21waWxlIGFuZCBsaW5rLiBJdCYjMzk7cyB0aGUgZmlyc3Qgc3RlcCwgdGhlIGdhdGVrZWVwZXIsIHJlYWxseS4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoYXQgdGhpcyBpcyBpbiBwbGFjZSBiZWZvcmUgSSBwcm9jZWVkIGFueSBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIENhZGVuY2UgZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE5FVF9WRU5ET1JfQ0FERU5DRVxuICAgNzpcdFx0Ym9vbCBcJiMzNDtDYWRlbmNlIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gICA5Olx0XHRkZWZhdWx0IHlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gIDEyOlx0XG4gIDEzOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxNjpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxNzpcdFx0ICByZW1haW5pbmcgQ2FkZW5jZSBuZXR3b3JrIGNhcmQgcXVlc3Rpb25zLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlXG4gIDE4Olx0XHQgIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE5Olx0XG4gIDIwOlx0aWYgTkVUX1ZFTkRPUl9DQURFTkNFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNDY4CgkJCQkJCQlvdXRwdXQ6IDc2CgkJCQkJCQl0aG91Z2h0czogNDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBNQUNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBwYXJ0cyB0b3VjaGluZyBgTkVUX1ZFTkRPUl9DQURFTkNFYCwgYE1BQ0JgLCBhbmQgYE1BQ0JfUENJYCBjb25maWd1cmF0aW9ucy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBtb2RpZnlpbmcgc2V2ZXJhbCBmdW5jdGlvbnMsIG5hbWVseSBgbWFjYl9wY3NfYW5fcmVzdGFydGAsIGBtYWNiX21hY19jb25maWdgLCBgbWFjYl9tYWNfc2VsZWN0X3Bjc2AsIGBtYWNiX21paV9wcm9iZWAsIGFuZCBgbWFjYl9pbml0X2RmbHRgLiBUaGVzZSBhcmUgYWxsIGNsZWFybHkgdGllZCBpbnRvIHRoZSBwaHlsaW5rIG9wZXJhdGlvbnMgYW5kIHByb2JlIHByb2NlZHVyZXMgZm9yIHRoaXMgaGFyZHdhcmUuCgpgbWFjYl9taWlfcHJvYmVgIGdldHMgY2FsbGVkIGR1cmluZyBgbWFjYl9wcm9iZWAsIGFuZCB0aGUgb3RoZXJzIOKAkyBgbWFjYl9tYWNfY29uZmlnYCwgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgLCBhbmQgYG1hY2JfbWFjX3NlbGVjdF9wY3NgIOKAkyBhcmUgY2FsbGVkIGJ5IHBoeWxpbmsuIGBtYWNiX2luaXRfZGZsdGAgaXMgYWxzbyB1c2VkIGR1cmluZyBwcm9iZS4gU2luY2UgdGhpcyBpcyBhIGhhcmR3YXJlIGRyaXZlciwgYW5kIGl0IHN1cHBvcnRzIFBDSSwgSSBjYW4gcmVhY2ggaXQgaW4gUUVNVSBpZiB0aGUgUENJIGRldmljZSBpcyBlbXVsYXRlZCwgb3IgaWYgc3l6a2FsbGVyIGlzIGxldmVyYWdpbmcgdGhlIFBDSSBmdXp6ZXIuIEhvbGQgb24sIHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIgdGhhdCBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzIGFuZCBmdXp6IE1NSU8vUElPL0RNQS4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGF0dGFjayB2ZWN0b3IuIFRoaXMgbWVhbnMgdGhlc2UgZHJpdmVycyBhcmUgKmFic29sdXRlbHkqIHdvcnRoIGZ1enppbmcuCgpUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkaW5nIHN1cHBvcnQgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYYCB0byB0aGUgTUFDQiBkcml2ZXIuIFNvLCB0aGUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBmb3IgZnV6emluZyBhcmU6IGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCwgYG1hY2JfbWFjX2NvbmZpZ2AsIGBtYWNiX21hY19zZWxlY3RfcGNzYCwgYG1hY2JfbWlpX3Byb2JlYCwgYW5kIGBtYWNiX2luaXRfZGZsdGAuCgpXYWl0LCB0aGVzZSBhcmUgYWxsIGRlY2xhcmVkIGFzIHN0YXRpYyBmdW5jdGlvbnMhIEkgbmVlZCB0byBjaGVjayBpZiB0aGV5JiMzOTtyZSBpbmxpbmVkIG9yIGlmIHRoZXkmIzM5O3JlIGFjdHVhbGx5IHJlYWNoYWJsZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAzOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY2JfcGNzX2FuX3Jlc3RhcnR8bWFjYl9tYWNfY29uZmlnfG1hY2JfbWFjX3NlbGVjdF9wY3N8bWFjYl9taWlfcHJvYmV8bWFjYl9pbml0X2RmbHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTczPXN0YXRpYyB2b2lkIG1hY2JfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1ODQ6c3RhdGljIHZvaWQgbWFjYl9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTg1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU5ND1zdGF0aWMgaW50IG1hY2JfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYwOS1cdCAqIE11c3QgYmUgd3JpdHRlbiBhZnRlciBQQ1NTRUwgaXMgc2V0IGluIE5DRkdSIHdoaWNoIGlzIGRvbmUgaW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjEwOlx0ICogbWFjYl9tYWNfY29uZmlnKCksIG90aGVyd2lzZSB3cml0ZXMgd2lsbCBub3QgdGFrZSBlZmZlY3QuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYxMS1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NjI5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIG1hY2JfcGh5bGlua19wY3Nfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjMxLVx0LnBjc19nZXRfc3RhdGUgPSBtYWNiX3Bjc19nZXRfc3RhdGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYzMjpcdC5wY3NfYW5fcmVzdGFydCA9IG1hY2JfcGNzX2FuX3Jlc3RhcnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYzMy1cdC5wY3NfY29uZmlnID0gbWFjYl9wY3NfY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NzE3PXN0YXRpYyBpbnQgbWFjYl9tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdTMyIHRpbWVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3Mzc6c3RhdGljIHZvaWQgbWFjYl9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzM4LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTg5Mz1zdGF0aWMgdm9pZCBtYWNiX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NTk6c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWFjYl9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTYwLVx0XHRcdFx0XHQgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTk3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBtYWNiX3BoeWxpbmtfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NzU6XHQubWFjX3NlbGVjdF9wY3MgPSBtYWNiX21hY19zZWxlY3RfcGNzLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NzY6XHQubWFjX2NvbmZpZyA9IG1hY2JfbWFjX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTc3LVx0Lm1hY19saW5rX2Rvd24gPSBtYWNiX21hY19saW5rX2Rvd24sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIxPXN0YXRpYyB2b2lkIG1hY2JfZ2V0X3Bjc19maXhlZF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwMzAtLyogYmFzZWQgb24gYXUxMDAwX2V0aC4gYyovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwMzE6c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDMyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTExMzg9c3RhdGljIGludCBtYWNiX21paV9pbml0KHN0cnVjdCBtYWNiICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNDgtXHRpZiAoIW1kaW9fbnAgXHUwMDI2XHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKG5wKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTE0OTpcdFx0cmV0dXJuIG1hY2JfbWlpX3Byb2JlKGJwLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTc2Olx0ZXJyID0gbWFjYl9taWlfcHJvYmUoYnAtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE3Ny1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00NzUwPXN0YXRpYyBpbnQgbWFjYl9jbGtfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqcGNsayxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3NjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ3NjM6c3RhdGljIGludCBtYWNiX2luaXRfZGZsdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NzY0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTQ5NTY9c3RhdGljIGludCBtYWNiX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ5NjEtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ5NjI6XHRcdHJldHVybiBtYWNiX2luaXRfZGZsdChwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDk2My19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NDU5PXN0YXRpYyBpbnQgZnU1NDBfYzAwMF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NDY1Olx0cmV0dXJuIG1hY2JfaW5pdF9kZmx0KHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDY2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU0Njg9c3RhdGljIGludCBpbml0X3Jlc2V0X29wdGlvbmFsKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NTE1Olx0cmV0ID0gbWFjYl9pbml0X2RmbHQocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1MTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NTI0PXN0YXRpYyBpbnQgZXllcTVfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTUzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTU0MDpcdHJldCA9IG1hY2JfaW5pdF9kZmx0KHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTQxLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzNzAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUNCIERyaXZlciBGdW5jdGlvbiBTdHJ1Y3R1cmUqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBNQUNCIGRyaXZlciBjb2RlLCBhbmQgSSBzZWUgaG93IGl0JiMzOTtzIHN0cnVjdHVyZWQuIFRoZXNlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGBtYWNiX3BoeWxpbmtfcGNzX29wc2AgYW5kIGBtYWNiX3BoeWxpbmtfb3BzYCBzdHJ1Y3RzIGFyZSB0ZWNobmljYWxseSBzdGF0aWMgZnVuY3Rpb25zLCByaWdodD8gQnV0IHRoZSBrZXkgaGVyZSBpcyB0aGF0IHRoZXkmIzM5O3JlICphc3NpZ25lZCogdG8gZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIHRob3NlIHN0cnVjdHMuIFRoYXQmIzM5O3MgY3J1Y2lhbC4gQmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuLCBpdCBtZWFucyB0aGUgY29tcGlsZXIgKmNhbiYjMzk7dCogZnVsbHkgaW5saW5lIHRoZW0uIFRoZXkgZW5kIHVwIHdpdGggdGhlaXIgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIHdoaWNoIG1ha2VzIHRoZW0gdmlzaWJsZSBhbmQsIGZyYW5rbHksIG11Y2ggZWFzaWVyIHRvIGFuYWx5emUuIFRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IEkgbmVlZC4KCldhaXQgYSBzZWNvbmQsIGxldCBtZSByZS1yZWFkIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGhlcmUsIGl0IHNwZWNpZmllcyB0aGF0IGl0IHByZWZlcnMgZnVuY3Rpb25zIHRoYXQgYXJlIG5vbi1zdGF0aWMgYW5kIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBiZWNhdXNlIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gVGhhdCBtYWtlcyBzZW5zZSwgYmVjYXVzZSBJIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGFjY2VzcyB0aG9zZSBpbmxpbmVkIGZ1bmN0aW9ucy4KCkFscmlnaHQsIHNvIHRoZSBmYWN0IHRoYXQgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiBoZXJlIG1lYW5zIHRoYXQgdGhleSBhcmUgbm90IGlubGluZWQsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIG5lZWQuIEFuZCwgc2luY2UgdGhlc2UgZnVuY3Rpb25zIGFyZSBBUEkgZW50cnkgcG9pbnRzLCBpdCBpcyBhbHNvIGdvb2QhCgpCdXQsIEkgdGhpbmsgaXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gY29uc2lkZXIgdGhlIHByb2JlIGZ1bmN0aW9uIGBtYWNiX3Byb2JlYC4gSXQmIzM5O3MgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIGlzbiYjMzk7dCBpdD8gTGV0IG1lIGNoZWNrIHRoYXQgcXVpY2tseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00NTg2PXN0YXRpYyB2b2lkIG1hY2JfY29uZmlndXJlX2NhcHMoc3RydWN0IG1hY2IgKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDYyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDYzMDpzdGF0aWMgaW50IG1hY2JfcHJvYmVfcXVldWVzKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCBfX2lvbWVtICptZW0sIGJvb2wgbmF0aXZlX2lvKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjMxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBtYWNiX2NvbmZpZyBkZWZhdWx0X2dlbV9jb25maWcgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1NzcyOnN0YXRpYyBpbnQgbWFjYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzczLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU4MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU4MDg6XHRudW1fcXVldWVzID0gbWFjYl9wcm9iZV9xdWV1ZXMoXHUwMDI2cGRldi1cdTAwM2VkZXYsIG1lbSwgbmF0aXZlX2lvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTgwOS1cdGlmIChudW1fcXVldWVzIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz02MjYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1hY2JfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjYyOlx0LnByb2JlXHRcdD0gbWFjYl9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjI2My1cdC5yZW1vdmVcdFx0PSBtYWNiX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczMzgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBNQUNCIERyaXZlcioqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgbWFjYmAgZHJpdmVyLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgYmVzdCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgaW5pdGlhbGl6YXRpb24gaXMgdGhlIGBtYWNiX3Byb2JlYCBmdW5jdGlvbi4gVGhhdCBzZWVtcyB0byBiZSB0aGUgbG9naWNhbCBlbnRyeSBwb2ludC4gQWRkaXRpb25hbGx5LCBJIG5lZWQgdG8gZm9jdXMgb24gc29tZSBvdGhlciBmdW5jdGlvbnMgc2luY2UgdGhlc2UgYXJlIGxpa2VseSB0byBiZSBkaXJlY3RseSBtb2RpZmllZCBkdXJpbmcgYW55IGNoYW5nZSBvZiB0aGUgc3lzdGVtLiBJIGFsc28gbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlzIHJlc3RhcnRlZCwgd2hhdCB0aGUgTUFDIGNvbmZpZ3VyYXRpb24gaXMuCgpTcGVjaWZpY2FsbHksIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCBgbWFjYl9wY3NfYW5fcmVzdGFydGAsIGBtYWNiX21hY19jb25maWdgLCBgbWFjYl9tYWNfc2VsZWN0X3Bjc2AsIGBtYWNiX21paV9wcm9iZWAsIGFuZCBgbWFjYl9pbml0X2RmbHRgLiBUaGVzZSBhcHBlYXIgdG8gYmUgdGhlIGNvcmUgcm91dGluZXMgdGhhdCBoYW5kbGUgdGhlIFBDUyAoUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyKSwgTUFDIChNZWRpYSBBY2Nlc3MgQ29udHJvbCkgY29uZmlndXJhdGlvbiwgYW5kIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24uIFRoZXkgYXJlIHRoZSBvYnZpb3VzIHNwb3RzIHRvIHN0YXJ0LgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gaWYgdGhlIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBpcyBoYW5kbGVkIGluIGEgc2VwYXJhdGUgZmlsZS4gSSBuZWVkIHRvIGtub3cgaWYgdGhlIGBtYWNiX3BjaS5jYCBmaWxlIGNvbnRhaW5zIGl0cyBvd24gcHJvYmUgZnVuY3Rpb24uIFRoYXQgd2lsbCBxdWlja2x5IHRlbGwgbWUgaWYgSSBuZWVkIHRvIGxvb2sgaW50byBhIHNlcGFyYXRlIFBDSS1yZWxhdGVkIGluaXRpYWxpemF0aW9uIHBhdGggb3IgaWYgZXZlcnl0aGluZyBpcyBjb250YWluZWQgd2l0aGluIHRoaXMgcHJpbWFyeSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY2JfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjI3OnN0YXRpYyBpbnQgbWFjYl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTI4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYWNiX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEyNy1cdC5pZF90YWJsZSA9IGRldl9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMjg6XHQucHJvYmUgICAgPSBtYWNiX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEyOS1cdC5yZW1vdmVcdCAgPSBtYWNiX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc5ODkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUNCIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIHRoYXQgYG1hY2JfcGNpLmNgIGFsc28gaW5jbHVkZXMgYSBgbWFjYl9wcm9iZWAgZnVuY3Rpb24uIFNpbmNlIHdlJiMzOTtyZSB0cnlpbmcgdG8gcGlucG9pbnQgdGhlIG1vZGlmaWNhdGlvbnMsIHNob3VsZCBJIHNwZWNpZnkgYG1hY2JfcHJvYmVgIGFzIHdlbGwsIG9yIGp1c3QgZm9jdXMgb24gdGhlIGNoYW5nZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgcGF0Y2g/IEkgdGhpbmsgSSYjMzk7bGwganVzdCBsaXN0IHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgZm9yIG5vdy4KCkxldCYjMzk7cyBzZWUsIHRoZSBwYXRjaCBhbHRlcnMgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgLCBgbWFjYl9tYWNfY29uZmlnYCwgYG1hY2JfbWFjX3NlbGVjdF9wY3NgLCBgbWFjYl9taWlfcHJvYmVgLCBhbmQgYG1hY2JfaW5pdF9kZmx0YC4gSSBzaG91bGQgcHJvYmFibHkgbGlzdCB0aG9zZSBhcyBgRm9jdXNTeW1ib2xzYC4KCk9rYXksIGhlcmUgdGhleSBhcmU6CmBtYWNiX3Bjc19hbl9yZXN0YXJ0YApgbWFjYl9tYWNfY29uZmlnYApgbWFjYl9tYWNfc2VsZWN0X3Bjc2AKYG1hY2JfbWlpX3Byb2JlYApgbWFjYl9pbml0X2RmbHRgCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBJIGtub3cgaG93IHRoZXkmIzM5O3JlIHVzZWQuIEkgc2VlIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCBpcyBzdGF0aWMsIGJ1dCBpdCYjMzk7cyBhc3NpZ25lZCB0byBgbWFjYl9waHlsaW5rX3Bjc19vcHMucGNzX2FuX3Jlc3RhcnRgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gVGhlbiBgbWFjYl9tYWNfY29uZmlnYCBpcyBhc3NpZ25lZCB0byBgbWFjYl9waHlsaW5rX29wcy5tYWNfY29uZmlnYC4gQW5kIGBtYWNiX21hY19zZWxlY3RfcGNzYCBpcyBhc3NpZ25lZCB0byBgbWFjYl9waHlsaW5rX29wcy5tYWNfc2VsZWN0X3Bjc2AuIFJpZ2h0LCBnb29kLiBgbWFjYl9taWlfcHJvYmVgIGlzIGNhbGxlZCBieSBgbWFjYl9taWlfaW5pdGAsIGFuZCBgbWFjYl9pbml0X2RmbHRgIGlzIGNhbGxlZCBieSBgbWFjYl9pbml0YC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgcGljdHVyZSBvZiBob3cgdGhlIGNoYW5nZWQgY29kZSBpcyBpbnRlZ3JhdGVkLgoKQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWdzIGludm9sdmVkPyBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnM6IGBORVRfVkVORE9SX0NBREVOQ0VgLCBgTUFDQmAsIGFuZCBgTUFDQl9QQ0lgLiBXYWl0LCBgTUFDQmAgZGVwZW5kcyBvbiBgSEFTX0RNQWAgYW5kIGBDT01NT05fQ0xLYC4gYEhBU19ETUFgIGlzIHByZXR0eSBzdGFuZGFyZCwgdGhhdCYjMzk7cyB1c3VhbGx5IGVuYWJsZWQuIGBDT01NT05fQ0xLYCBpcyB0eXBpY2FsIGZvciBBUk0sIGJ1dCBJIHNob3VsZCBjaGVjayBpZiBpdCYjMzk7cyBldmVuIHJlbGV2YW50IG9uIHg4Ni4gTGV0IG1lIHNlZSBpZiBgQ09NTU9OX0NMS2AgaXMgYXZhaWxhYmxlIG9uIHg4Ni4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ09NTU9OX0NMSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2xrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jbGsvS2NvbmZpZz0xMj1jb25maWcgSEFWRV9MRUdBQ1lfQ0xLICMgVE9ETzogUmVtb3ZlIG9uY2UgYWxsIGxlZ2FjeSB1c2VycyBhcmUgbWlncmF0ZWRcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIwLVxuZHJpdmVycy9jbGsvS2NvbmZpZzoyMTptZW51Y29uZmlnIENPTU1PTl9DTEtcbmRyaXZlcnMvY2xrL0tjb25maWctMjItXHRib29sIFwmIzM0O0NvbW1vbiBDbG9jayBGcmFtZXdvcmtcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnPTM0PWlmIENPTU1PTl9DTEtcbmRyaXZlcnMvY2xrL0tjb25maWctMzUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM2OmNvbmZpZyBDT01NT05fQ0xLX1dNODMxWFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgV004MzF4LzJ4IFBNSUNzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZz01Mz1jb25maWcgTE1LMDQ4MzJcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTYwLVxuZHJpdmVycy9jbGsvS2NvbmZpZzo2MTpjb25maWcgQ09NTU9OX0NMS19BUFBMRV9OQ09cbmRyaXZlcnMvY2xrL0tjb25maWctNjItXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIEFwcGxlIFNvQyBOQ09zXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy02OC1cbmRyaXZlcnMvY2xrL0tjb25maWc6Njk6Y29uZmlnIENPTU1PTl9DTEtfTUFYNzc2ODZcbmRyaXZlcnMvY2xrL0tjb25maWctNzAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIE1heGltIDc3NjIwLzc3Njg2Lzc3ODAyIE1GRFwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNzUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjc2OmNvbmZpZyBDT01NT05fQ0xLX01BWDk0ODVcbmRyaXZlcnMvY2xrL0tjb25maWctNzctXHR0cmlzdGF0ZSBcJiMzNDtNYXhpbSA5NDg1IFByb2dyYW1tYWJsZSBDbG9jayBHZW5lcmF0b3JcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTgxLVxuZHJpdmVycy9jbGsvS2NvbmZpZzo4Mjpjb25maWcgQ09NTU9OX0NMS19SSzgwOFxuZHJpdmVycy9jbGsvS2NvbmZpZy04My1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgUks4MDUvUks4MDgvUks4MDkvUks4MTcvUks4MThcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTg5LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo5MDpjb25maWcgQ09NTU9OX0NMS19SUDFcbmRyaXZlcnMvY2xrL0tjb25maWctOTEtXHR0cmlzdGF0ZSBcJiMzNDtSYXNwYmVycnkgUGkgUlAxLWJhc2VkIGNsb2NrIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTk4LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo5OTpjb25maWcgQ09NTU9OX0NMS19ISTY1NVhcbmRyaXZlcnMvY2xrL0tjb25maWctMTAwLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBIaTY1NXhcJiMzNDsgaWYgRVhQRVJUXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMDgtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjEwOTpjb25maWcgQ09NTU9OX0NMS19TQ01JXG5kcml2ZXJzL2Nsay9LY29uZmlnLTExMC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBjb250cm9sbGVkIHZpYSBTQ01JIGludGVyZmFjZVwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTE4LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxMTk6Y29uZmlnIENPTU1PTl9DTEtfU0NQSVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMjAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgY29udHJvbGxlZCB2aWEgU0NQSSBpbnRlcmZhY2VcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTEyOC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTI5OmNvbmZpZyBDT01NT05fQ0xLX1NJNTM0MVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMzAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MzQxIGFuZCA1MzQwIEEvQi9DL0QgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTM5LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxNDA6Y29uZmlnIENPTU1PTl9DTEtfU0k1MzUxXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE0MS1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgU2lMYWJzIDUzNTFBL0IvQ1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTQ3LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxNDg6Y29uZmlnIENPTU1PTl9DTEtfU0k1MTRcbmRyaXZlcnMvY2xrL0tjb25maWctMTQ5LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBTaUxhYnMgNTE0IGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE1Ni1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTU3OmNvbmZpZyBDT01NT05fQ0xLX1NJNTQ0XG5kcml2ZXJzL2Nsay9LY29uZmlnLTE1OC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgU2lMYWJzIDU0NCBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNjQtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE2NTpjb25maWcgQ09NTU9OX0NMS19TSTU3MFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNjYtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1NzAgYW5kIGNvbXBhdGlibGUgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMTczLVxuZHJpdmVycy9jbGsvS2NvbmZpZzoxNzQ6Y29uZmlnIENPTU1PTl9DTEtfQk0xODgwXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE3NS1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBCaXRtYWluIEJNMTg4MCBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE4MC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTgxOmNvbmZpZyBDT01NT05fQ0xLX0NEQ0U3MDZcbmRyaXZlcnMvY2xrL0tjb25maWctMTgyLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBUSSBDRENFNzA2IGNsb2NrIHN5bnRoZXNpemVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0xODctXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE4ODpjb25maWcgQ09NTU9OX0NMS19UUFM2ODQ3MFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xODktXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBEcml2ZXIgZm9yIFRJIFRQUzY4NDcwIFBNSUNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE5NS1cbmRyaXZlcnMvY2xrL0tjb25maWc6MTk2OmNvbmZpZyBDT01NT05fQ0xLX0NEQ0U5MjVcbmRyaXZlcnMvY2xrL0tjb25maWctMTk3LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBUSSBDRENFOTEzLzkyNS85MzcvOTQ5IGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIxMi1cbmRyaXZlcnMvY2xrL0tjb25maWc6MjEzOmNvbmZpZyBDT01NT05fQ0xLX0NTMjAwMF9DUFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMTQtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIENTMjAwMCBGcmFjdGlvbmFsLU4gQ2xvY2sgU3ludGhlc2l6ZXIgXHUwMDI2IENsb2NrIE11bHRpcGxpZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIxOS1cbmRyaXZlcnMvY2xrL0tjb25maWc6MjIwOmNvbmZpZyBDT01NT05fQ0xLX0VONzUyM1xuZHJpdmVycy9jbGsvS2NvbmZpZy0yMjEtXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgQWlyb2hhL0Vjb05ldCBTb0Mgc3lzdGVtIGNsb2Nrc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMjI4LVxuZHJpdmVycy9jbGsvS2NvbmZpZzoyMjk6Y29uZmlnIENPTU1PTl9DTEtfRVA5M1hYXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIzMC1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgQ2lycnVzIExvZ2ljIGVwOTN4eCBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIzNi1cbmRyaXZlcnMvY2xrL0tjb25maWc6MjM3OmNvbmZpZyBDT01NT05fQ0xLX0VZRVFcbmRyaXZlcnMvY2xrL0tjb25maWctMjM4LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIHRoZSBNb2JpbGV5ZSBFeWVRIHBsYXRmb3JtXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNDctXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI0ODpjb25maWcgQ09NTU9OX0NMS19GU0xfRkxFWFNQSVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNDktXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIEZsZXhTUEkgb24gTGF5ZXJzY2FwZSBTb0NzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNTUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI1Njpjb25maWcgQ09NTU9OX0NMS19GU0xfU0FJXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI1Ny1cdGJvb2wgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBCQ0xLIG9mIEZyZWVzY2FsZSBTQUkgY29yZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI2Ny1cbmRyaXZlcnMvY2xrL0tjb25maWc6MjY4OmNvbmZpZyBDT01NT05fQ0xLX0dFTUlOSVxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNjktXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgQ29ydGluYSBTeXN0ZW1zIEdlbWluaSBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI3Ni1cbmRyaXZlcnMvY2xrL0tjb25maWc6Mjc3OmNvbmZpZyBDT01NT05fQ0xLX0xBTjk2NlhcbmRyaXZlcnMvY2xrL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBDbG9jayBDb250cm9sbGVyIGRyaXZlciBmb3IgTEFOOTY2WCBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI4Ni1cbmRyaXZlcnMvY2xrL0tjb25maWc6Mjg3OmNvbmZpZyBDT01NT05fQ0xLX1MyTVBTMTFcbmRyaXZlcnMvY2xrL0tjb25maWctMjg4LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBTMk1QUzFYL1M1TTg3NjcgTUZEXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZz0zMDQ9Y29uZmlnIENMS19UV0w2MDQwXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zMTEtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjMxMjpjb25maWcgQ09NTU9OX0NMS19BWElfQ0xLR0VOXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMxMy1cdHRyaXN0YXRlIFwmIzM0O0FYSSBjbGtnZW4gZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZz0zMjg9Y29uZmlnIENMS19MUzEwMjhBX1BMTERJR1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMzM3LVxuZHJpdmVycy9jbGsvS2NvbmZpZzozMzg6Y29uZmlnIENPTU1PTl9DTEtfWEdFTkVcbmRyaXZlcnMvY2xrL0tjb25maWctMzM5LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIEFQTSBYR2VuZSBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM0NC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MzQ1OmNvbmZpZyBDT01NT05fQ0xLX0xPQ0hOQUdBUlxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNDYtXHR0cmlzdGF0ZSBcJiMzNDtDaXJydXMgTG9naWMgTG9jaG5hZ2FyIGNsb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMzUxLVxuZHJpdmVycy9jbGsvS2NvbmZpZzozNTI6Y29uZmlnIENPTU1PTl9DTEtfTlBDTThYWFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNTMtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIHRoZSBOUENNOFhYIFNvQyBGYW1pbHlcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM2MC1cbmRyaXZlcnMvY2xrL0tjb25maWc6MzYxOmNvbmZpZyBDT01NT05fQ0xLX0xPT05HU09OMlxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNjItXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTG9vbmdzb24tMiBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM2OS1cbmRyaXZlcnMvY2xrL0tjb25maWc6MzcwOmNvbmZpZyBDT01NT05fQ0xLX05YUFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzEtXHRkZWZfYm9vbCBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiAoQVJDSF9MUEMxOFhYIHx8IEFSQ0hfTFBDMzJYWClcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM3Ni1cbmRyaXZlcnMvY2xrL0tjb25maWc6Mzc3OmNvbmZpZyBDT01NT05fQ0xLX1BBTE1BU1xuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzgtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFRJIFBhbG1hcyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zODMtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM4NDpjb25maWcgQ09NTU9OX0NMS19QV01cbmRyaXZlcnMvY2xrL0tjb25maWctMzg1LVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBQV01zIHVzZWQgYXMgY2xvY2sgb3V0cHV0c1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctMzkwLVxuZHJpdmVycy9jbGsvS2NvbmZpZzozOTE6Y29uZmlnIENPTU1PTl9DTEtfUFhBXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM5Mi1cdGRlZl9ib29sIENPTU1PTl9DTEsgXHUwMDI2XHUwMDI2IEFSQ0hfUFhBXG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zOTUtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM5Njpjb25maWcgQ09NTU9OX0NMS19SUzlfUENJRVxuZHJpdmVycy9jbGsvS2NvbmZpZy0zOTctXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFJlbmVzYXMgOS1zZXJpZXMgUENJZSBjbG9jayBnZW5lcmF0b3JzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00MDQtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQwNTpjb25maWcgQ09NTU9OX0NMS19TSTUyMVhYXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQwNi1cdHRyaXN0YXRlIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgU2t5V29ya3MgU2k1MjF4eCBQQ0llIGNsb2NrIGdlbmVyYXRvcnNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQxMy1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDE0OmNvbmZpZyBDT01NT05fQ0xLX1ZDM1xuZHJpdmVycy9jbGsvS2NvbmZpZy00MTUtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFJlbmVzYXMgVmVyc2FDbG9jayAzIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQyMi1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDIzOmNvbmZpZyBDT01NT05fQ0xLX1ZDNVxuZHJpdmVycy9jbGsvS2NvbmZpZy00MjQtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIElEVCBWZXJzYUNsb2NrIDUsNiBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00MzEtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQzMjpjb25maWcgQ09NTU9OX0NMS19WQzdcbmRyaXZlcnMvY2xrL0tjb25maWctNDMzLVx0dHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIFZlcnNhY2xvY2sgNyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDAtXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ0MTpjb25maWcgQ09NTU9OX0NMS19TVE0zMkZcbmRyaXZlcnMvY2xrL0tjb25maWctNDQyLVx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgKE1BQ0hfU1RNMzJGNDI5IHx8IE1BQ0hfU1RNMzJGNDY5IHx8IE1BQ0hfU1RNMzJGNzQ2KVxuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDQ1LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NDY6Y29uZmlnIENPTU1PTl9DTEtfU1RNMzJIN1xuZHJpdmVycy9jbGsvS2NvbmZpZy00NDctXHRkZWZfYm9vbCBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiBNQUNIX1NUTTMySDc0M1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDUwLVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NTE6Y29uZmlnIENPTU1PTl9DTEtfTU1QMlxuZHJpdmVycy9jbGsvS2NvbmZpZy00NTItXHRkZWZfYm9vbCBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiAoTUFDSF9NTVAyX0RUIHx8IE1BQ0hfTU1QM19EVClcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ1NS1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDU2OmNvbmZpZyBDT01NT05fQ0xLX01NUDJfQVVESU9cbmRyaXZlcnMvY2xrL0tjb25maWctNDU3LSAgICAgICAgdHJpc3RhdGUgXCYjMzQ7Q2xvY2sgZHJpdmVyIGZvciBNTVAyIEF1ZGlvIHN1YnN5c3RlbVwmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDYxLVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NjI6Y29uZmlnIENPTU1PTl9DTEtfQkQ3MThYWFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NjMtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIDMySyBjbGsgZ2F0ZXMgb24gUk9ITSBQTUlDc1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDY4LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0Njk6Y29uZmlnIENPTU1PTl9DTEtfRklYRURfTU1JT1xuZHJpdmVycy9jbGsvS2NvbmZpZy00NzAtXHRib29sIFwmIzM0O0Nsb2NrIGRyaXZlciBmb3IgTWVtb3J5IE1hcHBlZCBGaXhlZCB2YWx1ZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ3NS1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDc2OmNvbmZpZyBDT01NT05fQ0xLX0syMTBcbmRyaXZlcnMvY2xrL0tjb25maWctNDc3LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIHRoZSBDYW5hYW4gS2VuZHJ5dGUgSzIxMCBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ4Mi1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDgzOmNvbmZpZyBDT01NT05fQ0xLX0syMzBcbmRyaXZlcnMvY2xrL0tjb25maWctNDg0LVx0Ym9vbCBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIHRoZSBDYW5hYW4gS2VuZHJ5dGUgSzIzMCBTb0NcJiMzNDtcbi0tXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ4OC1cbmRyaXZlcnMvY2xrL0tjb25maWc6NDg5OmNvbmZpZyBDT01NT05fQ0xLX1NQNzAyMVxuZHJpdmVycy9jbGsvS2NvbmZpZy00OTAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgZm9yIFN1bnBsdXMgU1A3MDIxIFNvQ1wmIzM0O1xuLS1cbmRyaXZlcnMvY2xrL0tjb25maWctNDk4LVxuZHJpdmVycy9jbGsvS2NvbmZpZzo0OTk6Y29uZmlnIENPTU1PTl9DTEtfUlBNSVxuZHJpdmVycy9jbGsvS2NvbmZpZy01MDAtXHR0cmlzdGF0ZSBcJiMzNDtDbG9jayBkcml2ZXIgYmFzZWQgb24gUklTQy1WIFJQTUlcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzNzkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBNQUNCIGFuZCBDT01NT05fQ0xLIG9uIHg4NioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgYENPTU1PTl9DTEtgIGNvbmZpZy4gSXQmIzM5O3MgcHJldHR5IGdlbmVyaWMsIHJpZ2h0PyBJJiMzOTtkIGV4cGVjdCBpdCB0byBiZSBlbmFibGVkIG9uIGEgbG90IG9mIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLiBOb3csIHRoZSBpc3N1ZSBhdCBoYW5kOiBgTUFDQmAgaGFzIGEgZGVwZW5kZW5jeSBvbiBib3RoIGBIQVNfRE1BYCBhbmQgYENPTU1PTl9DTEtgLiBUaGF0JiMzOTtzIGEga2V5IGRldGFpbC4gVGhpcyBtZWFucyB0aGF0IGlmIGBDT01NT05fQ0xLYCAqaXNuJiMzOTt0KiBlbmFibGVkIG9uIHg4NiwgdGhlbiBJIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGVuYWJsZSBgTUFDQmAgb24geDg2LgoKTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBDT01NT05fQ0xLYCBpcyBhY3R1YWxseSBlbmFibGVkIGZvciB4ODYuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBpdCAqc2hvdWxkKiBiZSBlbmFibGVkIGluIG1vc3Qgc3RhbmRhcmQgeDg2IGNvbmZpZ3VyYXRpb25zIGJlY2F1c2UgYSBsb3Qgb2YgZHJpdmVycyB0ZW5kIHRvIHJlbHkgb24gaXQuIEJ1dCBJIGNhbiYjMzk7dCBqdXN0IGFzc3VtZTsgSSBuZWVkIHRvIHZlcmlmeS4KClRoZXJlZm9yZSwgdGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoIGlzIHRvIGNvbnN1bHQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZTogYGFyY2gveDg2L0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBsb29rIGZvciB0aGUgZGVmaW5pdGlvbiBhbmQgcG90ZW50aWFsIGVuYWJsZW1lbnQgb2YgYENPTU1PTl9DTEtgIHdpdGhpbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT01NT05fQ0xLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9LY29uZmlnPTY4MD1jb25maWcgWDg2X0lOVEVMX1FVQVJLXG4tLVxuYXJjaC94ODYvS2NvbmZpZy02ODktXHRzZWxlY3QgSU5URUxfSU1SXG5hcmNoL3g4Ni9LY29uZmlnOjY5MDpcdHNlbGVjdCBDT01NT05fQ0xLXG5hcmNoL3g4Ni9LY29uZmlnLTY5MS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTY5Nj1jb25maWcgWDg2X0lOVEVMX0xQU1Ncbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTY5OC1cdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBBQ1BJIFx1MDAyNlx1MDAyNiBQQ0lcbmFyY2gveDg2L0tjb25maWc6Njk5Olx0c2VsZWN0IENPTU1PTl9DTEtcbmFyY2gveDg2L0tjb25maWctNzAwLVx0c2VsZWN0IFBJTkNUUkxcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTcwOD1jb25maWcgWDg2X0FNRF9QTEFURk9STV9ERVZJQ0Vcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTcxMC1cdGRlcGVuZHMgb24gQUNQSVxuYXJjaC94ODYvS2NvbmZpZzo3MTE6XHRzZWxlY3QgQ09NTU9OX0NMS1xuYXJjaC94ODYvS2NvbmZpZy03MTItXHRzZWxlY3QgUElOQ1RSTFxuLS1cbmFyY2gveDg2L0tjb25maWctNzE1LVx0ICBzdWNoIGFzIEkyQywgVUFSVCwgR1BJTyBmb3VuZCBvbiBBTUQgQ2Fycml6byBhbmQgbGF0ZXIgY2hpcHNldHMuXG5hcmNoL3g4Ni9LY29uZmlnOjcxNjpcdCAgSTJDIGFuZCBVQVJUIGRlcGVuZCBvbiBDT01NT05fQ0xLIHRvIHNldCBjbG9jay4gR1BJTyBkcml2ZXIgaXNcbmFyY2gveDg2L0tjb25maWctNzE3LVx0ICBpbXBsZW1lbnRlZCB1bmRlciBQSU5DVFJMIHN1YnN5c3RlbS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxNDYKCQkJCQkJCW91dHB1dDogMTg5CgkJCQkJCQl0aG91Z2h0czogNTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIENhZGVuY2UgTUFDQiBEcml2ZXIgd2l0aCAxMDAwQkFTRVggU3VwcG9ydCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGZvciBhIGZ1enppbmcgcGxhbi4gVGhlIGBDT01NT05fQ0xLYCBpcyBhdmFpbGFibGUsIHdoaWNoIGlzIGV4cGVjdGVkIG9uIHRoZXNlIHg4NiBwbGF0Zm9ybXMgdGhhbmtzIHRvIGBYODZfSU5URUxfTFBTU2AgYW5kIGBYODZfQU1EX1BMQVRGT1JNX0RFVklDRWAuIFNvLCB3ZSYjMzk7cmUgZ29vZCB0aGVyZS4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIGluIHRoZSBjb25maWcuIFdlJiMzOTt2ZSBnb3QgYE5FVF9WRU5ET1JfQ0FERU5DRWAsIGBNQUNCYCwgYW5kIGBNQUNCX1BDSWAuIEFueSBvdGhlciBkZXBlbmRlbmNpZXM/IEhtbSwgYE1BQ0JgIHB1bGxzIGluIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGJ1dCB0aGF0JiMzOTtzIHVzdWFsbHkgbm90IGEgcHJvYmxlbS4gYE1BQ0JfUENJYD8gSXRzIGRlcGVuZGVuY3kgaXMgYE1BQ0IgJmFtcDsmYW1wOyBQQ0lgLCB3aGljaCBpcyBleHBlY3RlZC4gU28gdGhlIHRocmVlIGNvbmZpZ3MgYXJlIHRoZSByaWdodCBjaG9pY2VzLgoKTm93LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBwYXRjaCBpdHNlbGYgYW5kIHRoZSBmdW5jdGlvbnMgaXQgdG91Y2hlcy4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgbW9kaWZpY2F0aW9ucyB0byBgbWFjYl9wY3NfYW5fcmVzdGFydGAsIGBtYWNiX21hY19jb25maWdgLCBgbWFjYl9tYWNfc2VsZWN0X3Bjc2AsIGBtYWNiX21paV9wcm9iZWAsIGFuZCBgbWFjYl9pbml0X2RmbHRgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBkdXJpbmcgdGhlIE1BQ0IgZHJpdmVyJiMzOTtzIHByb2JlIHNlcXVlbmNlIGFuZCB3aGVuIHBoeWxpbmsgY29uZmlndXJlcyB0aGUgbGluay4gU2luY2Ugd2UgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyB1c2luZyBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIsIHdlIGNhbiB0cmlnZ2VyIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUsIGFuZCB0aGVuIGludGVyYWN0IHdpdGggdGhlIG5ldCBkZXZpY2UuIFdlIGNhbiByZWFjaCB0aGVzZSBmdW5jdGlvbnMhCgpUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWGAgYW5kLCBpbXBvcnRhbnRseSwgbW9kaWZpZXMgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgIHRvIGFjdHVhbGx5IHJlc3RhcnQgYXV0b25lZ290aWF0aW9uIGJ5IHdyaXRpbmcgdG8gdGhlIGBQQ1NDTlRSTGAgcmVnaXN0ZXIuIFRoaXMgaXMgd2hlcmUgd2Ugd2FudCB0byBmb2N1cy4gVGhpcyBpcyBmdW5jdGlvbmFsIGxvZ2ljLCBhbmQgaXQmIzM5O3MgcmlwZSBmb3IgZnV6emluZy4KCkFscmlnaHQsIHRpbWUgdG8gZmluYWxpemUgdGhlIHN0cmF0ZWd5OgoKYFdvcnRoRnV6emluZzogdHJ1ZWAgLSBBYnNvbHV0ZWx5LgoKYEZvY3VzU3ltYm9sc2A6IFdlJiMzOTtsbCBmb2N1cyBmdXp6aW5nIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucyBtZW50aW9uZWQ6CiogICBgbWFjYl9wcm9iZWAKKiAgIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YAoqICAgYG1hY2JfbWFjX2NvbmZpZ2AKKiAgIGBtYWNiX21hY19zZWxlY3RfcGNzYAoqICAgYG1hY2JfbWlpX3Byb2JlYAoqICAgYG1hY2JfaW5pdF9kZmx0YAoKYEVuYWJsZUNvbmZpZ3NgOgoqICAgYE5FVF9WRU5ET1JfQ0FERU5DRWAKKiAgIGBNQUNCYAoqICAgYE1BQ0JfUENJYAoKYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBhZGRzIDEwMDBCQVNFWCBQSFkgc3VwcG9ydCB0byB0aGUgQ2FkZW5jZSBNQUNCIGV0aGVybmV0IGRyaXZlciBhbmQgaW1wbGVtZW50cyB0aGUgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgIHBoeWxpbmsgY2FsbGJhY2suIFRoZSBQQ0kgd3JhcHBlciBtYWtlcyB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgbWFuYWdlbWVudC4gTGV0JiMzOTtzIHNlbmQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfVkVORE9SX0NBREVOQ0UmIzM0OywKICAgICYjMzQ7TUFDQiYjMzQ7LAogICAgJiMzNDtNQUNCX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hY2JfcHJvYmUmIzM0OywKICAgICYjMzQ7bWFjYl9wY3NfYW5fcmVzdGFydCYjMzQ7LAogICAgJiMzNDttYWNiX21hY19jb25maWcmIzM0OywKICAgICYjMzQ7bWFjYl9tYWNfc2VsZWN0X3BjcyYjMzQ7LAogICAgJiMzNDttYWNiX21paV9wcm9iZSYjMzQ7LAogICAgJiMzNDttYWNiX2luaXRfZGZsdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ2FkZW5jZSBNQUNCIGV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggYW5kIGltcGxlbWVudHMgdGhlIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCBwaHlsaW5rIGNhbGxiYWNrLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIHdyYXBwZXIgKGBtYWNiX3BjaS5jYCksIG1ha2luZyBpdCByZWFjaGFibGUgZm9yIGZ1enppbmcuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgaGFuZGxlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgbWFuYWdlbWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1ZFTkRPUl9DQURFTkNFJiMzNDssCiAgICAmIzM0O01BQ0ImIzM0OywKICAgICYjMzQ7TUFDQl9QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWNiX3Byb2JlJiMzNDssCiAgICAmIzM0O21hY2JfcGNzX2FuX3Jlc3RhcnQmIzM0OywKICAgICYjMzQ7bWFjYl9tYWNfY29uZmlnJiMzNDssCiAgICAmIzM0O21hY2JfbWFjX3NlbGVjdF9wY3MmIzM0OywKICAgICYjMzQ7bWFjYl9taWlfcHJvYmUmIzM0OywKICAgICYjMzQ7bWFjYl9pbml0X2RmbHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIENhZGVuY2UgTUFDQiBldGhlcm5ldCBkcml2ZXIgdG8gc3VwcG9ydCBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIGFuZCBpbXBsZW1lbnRzIHRoZSBgbWFjYl9wY3NfYW5fcmVzdGFydGAgcGh5bGluayBjYWxsYmFjay4gVGhlIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgaXRzIFBDSSB3cmFwcGVyIChgbWFjYl9wY2kuY2ApLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGZvciBmdXp6aW5nLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGhhbmRsZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGFuZCBsaW5rIHN0YXRlIG1hbmFnZW1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1NjowNi43MzIyMTQ3NjFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODkxMjkxNTIwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9DQURFTkNFXCIsXG4gICAgXCJNQUNCXCIsXG4gICAgXCJNQUNCX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY2JfcHJvYmVcIixcbiAgICBcIm1hY2JfcGNzX2FuX3Jlc3RhcnRcIixcbiAgICBcIm1hY2JfbWFjX2NvbmZpZ1wiLFxuICAgIFwibWFjYl9tYWNfc2VsZWN0X3Bjc1wiLFxuICAgIFwibWFjYl9taWlfcHJvYmVcIixcbiAgICBcIm1hY2JfaW5pdF9kZmx0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIENhZGVuY2UgTUFDQiBldGhlcm5ldCBkcml2ZXIgdG8gc3VwcG9ydCBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIGFuZCBpbXBsZW1lbnRzIHRoZSBgbWFjYl9wY3NfYW5fcmVzdGFydGAgcGh5bGluayBjYWxsYmFjay4gVGhlIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgaXRzIFBDSSB3cmFwcGVyIChgbWFjYl9wY2kuY2ApLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGZvciBmdXp6aW5nLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGhhbmRsZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGFuZCBsaW5rIHN0YXRlIG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjA2LjczMjIyMTExMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEyMDI3MzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2IyNDMxMTU2ZWE1OGU2MWRkNTFhOGE1ZGJhZjE1ZjFiZDJhYzhhNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMzo1NjowNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xcbmluZGV4IGQzOTRmMWY0M2I2ODUuLjMxMGFkOGVhYzIxZmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcXG5AQCAtNTgzLDcgKzU4MywxMiBAQCBzdGF0aWMgdm9pZCBtYWNiX3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4gXFxuIHN0YXRpYyB2b2lkIG1hY2JfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuIHtcXG4tXFx0LyogTm90IHN1cHBvcnRlZCAqL1xcbitcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgbWFjYiwgcGh5bGlua19zZ21paV9wY3MpO1xcbitcXHR1MzIgb2xkLCBuZXc7XFxuK1xcbitcXHRvbGQgPSBnZW1fcmVhZGwoYnAsIFBDU0NOVFJMKTtcXG4rXFx0bmV3ID0gb2xkIHwgQk1DUl9BTlJFU1RBUlQ7XFxuK1xcdGdlbV93cml0ZWwoYnAsIFBDU0NOVFJMLCBuZXcpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG1hY2JfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG5AQCAtNzUwLDcgKzc1NSw5IEBAIHN0YXRpYyB2b2lkIG1hY2JfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXFxuIFxcdFxcdGN0cmwgXFx1MDAyNj0gfihHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpKTtcXG4gXFx0XFx0bmNyIFxcdTAwMjY9IH5HRU1fQklUKEVOQUJMRV9IU19NQUMpO1xcbiBcXG4tXFx0XFx0aWYgKHN0YXRlLVxcdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7XFxuK1xcdFxcdGlmIChzdGF0ZS1cXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpIHtcXG4rXFx0XFx0XFx0Y3RybCB8PSBHRU1fQklUKFBDU1NFTCk7XFxuK1xcdFxcdH0gZWxzZSBpZiAoc3RhdGUtXFx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcXG4gXFx0XFx0XFx0Y3RybCB8PSBHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHN0YXRlLVxcdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSKSB7XFxuIFxcdFxcdFxcdGN0cmwgfD0gR0VNX0JJVChQQ1NTRUwpO1xcbkBAIC05NTcsNyArOTY0LDggQEAgc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWFjYl9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFxuIFxcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSKVxcbiBcXHRcXHRyZXR1cm4gXFx1MDAyNmJwLVxcdTAwM2VwaHlsaW5rX3VzeF9wY3M7XFxuLVxcdGVsc2UgaWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuK1xcdGVsc2UgaWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XFxuK1xcdCAgICAgICAgIGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuIFxcdFxcdHJldHVybiBcXHUwMDI2YnAtXFx1MDAzZXBoeWxpbmtfc2dtaWlfcGNzO1xcbiBcXHRlbHNlXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbkBAIC0xMDI1LDEzICsxMDMzLDE1IEBAIHN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gXFxuIFxcdGJwLVxcdTAwM2VwaHlsaW5rX3NnbWlpX3Bjcy5vcHMgPSBcXHUwMDI2bWFjYl9waHlsaW5rX3Bjc19vcHM7XFxuK1xcdGJwLVxcdTAwM2VwaHlsaW5rX3NnbWlpX3Bjcy5wb2xsID0gdHJ1ZTtcXG4gXFx0YnAtXFx1MDAzZXBoeWxpbmtfdXN4X3Bjcy5vcHMgPSBcXHUwMDI2bWFjYl9waHlsaW5rX3VzeF9wY3Nfb3BzO1xcbiBcXG4gXFx0YnAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFxcdTAwMjZkZXYtXFx1MDAzZWRldjtcXG4gXFx0YnAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjtcXG4gXFx0YnAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcXG4gXFxuLVxcdGlmIChicC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpIHtcXG4rXFx0aWYgKGJwLVxcdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggfHxcXG4rXFx0ICAgIGJwLVxcdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkge1xcbiBcXHRcXHRicC1cXHUwMDNlcGh5bGlua19jb25maWcucG9sbF9maXhlZF9zdGF0ZSA9IHRydWU7XFxuIFxcdFxcdGJwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5nZXRfZml4ZWRfc3RhdGUgPSBtYWNiX2dldF9wY3NfZml4ZWRfc3RhdGU7XFxuIFxcdFxcdC8qIFRoZSBQQ1NBVVRPTkVHIGJpdCBpbiBQQ1NDTlRSTCBpcyBvbiBvdXQgb2YgcmVzZXQuIFNldHRpbmdcXG5AQCAtMTA2MCw5ICsxMDcwLDEyIEBAIHN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0XFx0ICBicC1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbiBcXHRcXHRwaHlfaW50ZXJmYWNlX3NldF9yZ21paShicC1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbiBcXG4tXFx0XFx0aWYgKGJwLVxcdTAwM2VjYXBzIFxcdTAwMjYgTUFDQl9DQVBTX1BDUylcXG4rXFx0XFx0aWYgKGJwLVxcdTAwM2VjYXBzIFxcdTAwMjYgTUFDQl9DQVBTX1BDUykge1xcbitcXHRcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCxcXG4rXFx0XFx0XFx0XFx0ICBicC1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbiBcXHRcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLFxcbiBcXHRcXHRcXHRcXHQgIGJwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdGlmIChicC1cXHUwMDNlY2FwcyBcXHUwMDI2IE1BQ0JfQ0FQU19ISUdIX1NQRUVEKSB7XFxuIFxcdFxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIsXFxuQEAgLTQ5MzEsNyArNDk0NCw5IEBAIHN0YXRpYyBpbnQgbWFjYl9pbml0X2RmbHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0LyogU2V0IE1JSSBtYW5hZ2VtZW50IGNsb2NrIGRpdmlkZXIgKi9cXG4gXFx0dmFsID0gbWFjYl9tZGNfY2xrX2RpdihicCk7XFxuIFxcdHZhbCB8PSBtYWNiX2RidyhicCk7XFxuLVxcdGlmIChicC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuK1xcdGlmIChicC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYKVxcbitcXHRcXHR2YWwgfD0gR0VNX0JJVChQQ1NTRUwpO1xcbitcXHRlbHNlIGlmIChicC1cXHUwMDNlcGh5X2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuIFxcdFxcdHZhbCB8PSBHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpO1xcbiBcXHRtYWNiX3dyaXRlbChicCwgTkNGR1IsIHZhbCk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1NjowNy4wNDQ5NjU3MzlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyODg4MTYzNjgzNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1ZFTkRPUl9DQURFTkNFXCIsXG4gICAgXCJNQUNCXCIsXG4gICAgXCJNQUNCX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY2JfcHJvYmVcIixcbiAgICBcIm1hY2JfcGNzX2FuX3Jlc3RhcnRcIixcbiAgICBcIm1hY2JfbWFjX2NvbmZpZ1wiLFxuICAgIFwibWFjYl9tYWNfc2VsZWN0X3Bjc1wiLFxuICAgIFwibWFjYl9taWlfcHJvYmVcIixcbiAgICBcIm1hY2JfaW5pdF9kZmx0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIENhZGVuY2UgTUFDQiBldGhlcm5ldCBkcml2ZXIgdG8gc3VwcG9ydCBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIGFuZCBpbXBsZW1lbnRzIHRoZSBgbWFjYl9wY3NfYW5fcmVzdGFydGAgcGh5bGluayBjYWxsYmFjay4gVGhlIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgaXRzIFBDSSB3cmFwcGVyIChgbWFjYl9wY2kuY2ApLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGZvciBmdXp6aW5nLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGhhbmRsZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGFuZCBsaW5rIHN0YXRlIG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNiMjQzMTE1NmVhNThlNjFkZDUxYThhNWRiYWYxNWYxYmQyYWM4YTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwMzo1NjowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXG5pbmRleCBkMzk0ZjFmNDNiNjg1Li4zMTBhZDhlYWMyMWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1xuQEAgLTU4Myw3ICs1ODMsMTIgQEAgc3RhdGljIHZvaWQgbWFjYl9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4gXG4gc3RhdGljIHZvaWQgbWFjYl9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbiB7XG4tXHQvKiBOb3Qgc3VwcG9ydGVkICovXG4rXHRzdHJ1Y3QgbWFjYiAqYnAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgbWFjYiwgcGh5bGlua19zZ21paV9wY3MpO1xuK1x0dTMyIG9sZCwgbmV3O1xuK1xuK1x0b2xkID0gZ2VtX3JlYWRsKGJwLCBQQ1NDTlRSTCk7XG4rXHRuZXcgPSBvbGQgfCBCTUNSX0FOUkVTVEFSVDtcbitcdGdlbV93cml0ZWwoYnAsIFBDU0NOVFJMLCBuZXcpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG1hY2JfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbkBAIC03NTAsNyArNzU1LDkgQEAgc3RhdGljIHZvaWQgbWFjYl9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiBcdFx0Y3RybCBcdTAwMjY9IH4oR0VNX0JJVChTR01JSUVOKSB8IEdFTV9CSVQoUENTU0VMKSk7XG4gXHRcdG5jciBcdTAwMjY9IH5HRU1fQklUKEVOQUJMRV9IU19NQUMpO1xuIFxuLVx0XHRpZiAoc3RhdGUtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkge1xuK1x0XHRpZiAoc3RhdGUtXHUwMDNlaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpIHtcbitcdFx0XHRjdHJsIHw9IEdFTV9CSVQoUENTU0VMKTtcbitcdFx0fSBlbHNlIGlmIChzdGF0ZS1cdTAwM2VpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7XG4gXHRcdFx0Y3RybCB8PSBHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpO1xuIFx0XHR9IGVsc2UgaWYgKHN0YXRlLVx1MDAzZWludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIpIHtcbiBcdFx0XHRjdHJsIHw9IEdFTV9CSVQoUENTU0VMKTtcbkBAIC05NTcsNyArOTY0LDggQEAgc3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqbWFjYl9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcbiBcdGlmIChpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwR0JBU0VSKVxuIFx0XHRyZXR1cm4gXHUwMDI2YnAtXHUwMDNlcGh5bGlua191c3hfcGNzO1xuLVx0ZWxzZSBpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbitcdGVsc2UgaWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYIHx8XG4rXHQgICAgICAgICBpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKVxuIFx0XHRyZXR1cm4gXHUwMDI2YnAtXHUwMDNlcGh5bGlua19zZ21paV9wY3M7XG4gXHRlbHNlXG4gXHRcdHJldHVybiBOVUxMO1xuQEAgLTEwMjUsMTMgKzEwMzMsMTUgQEAgc3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbiBcdGJwLVx1MDAzZXBoeWxpbmtfc2dtaWlfcGNzLm9wcyA9IFx1MDAyNm1hY2JfcGh5bGlua19wY3Nfb3BzO1xuK1x0YnAtXHUwMDNlcGh5bGlua19zZ21paV9wY3MucG9sbCA9IHRydWU7XG4gXHRicC1cdTAwM2VwaHlsaW5rX3VzeF9wY3Mub3BzID0gXHUwMDI2bWFjYl9waHlsaW5rX3VzeF9wY3Nfb3BzO1xuIFxuIFx0YnAtXHUwMDNlcGh5bGlua19jb25maWcuZGV2ID0gXHUwMDI2ZGV2LVx1MDAzZWRldjtcbiBcdGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnR5cGUgPSBQSFlMSU5LX05FVERFVjtcbiBcdGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbiBcbi1cdGlmIChicC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSkge1xuK1x0aWYgKGJwLVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWCB8fFxuK1x0ICAgIGJwLVx1MDAzZXBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKSB7XG4gXHRcdGJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLnBvbGxfZml4ZWRfc3RhdGUgPSB0cnVlO1xuIFx0XHRicC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5nZXRfZml4ZWRfc3RhdGUgPSBtYWNiX2dldF9wY3NfZml4ZWRfc3RhdGU7XG4gXHRcdC8qIFRoZSBQQ1NBVVRPTkVHIGJpdCBpbiBQQ1NDTlRSTCBpcyBvbiBvdXQgb2YgcmVzZXQuIFNldHRpbmdcbkBAIC0xMDYwLDkgKzEwNzAsMTIgQEAgc3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRcdCAgYnAtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuIFx0XHRwaHlfaW50ZXJmYWNlX3NldF9yZ21paShicC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4gXG4tXHRcdGlmIChicC1cdTAwM2VjYXBzIFx1MDAyNiBNQUNCX0NBUFNfUENTKVxuK1x0XHRpZiAoYnAtXHUwMDNlY2FwcyBcdTAwMjYgTUFDQl9DQVBTX1BDUykge1xuK1x0XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYLFxuK1x0XHRcdFx0ICBicC1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4gXHRcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSxcbiBcdFx0XHRcdCAgYnAtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuK1x0XHR9XG4gXG4gXHRcdGlmIChicC1cdTAwM2VjYXBzIFx1MDAyNiBNQUNCX0NBUFNfSElHSF9TUEVFRCkge1xuIFx0XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMTBHQkFTRVIsXG5AQCAtNDkzMSw3ICs0OTQ0LDkgQEAgc3RhdGljIGludCBtYWNiX2luaXRfZGZsdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0LyogU2V0IE1JSSBtYW5hZ2VtZW50IGNsb2NrIGRpdmlkZXIgKi9cbiBcdHZhbCA9IG1hY2JfbWRjX2Nsa19kaXYoYnApO1xuIFx0dmFsIHw9IG1hY2JfZGJ3KGJwKTtcbi1cdGlmIChicC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbitcdGlmIChicC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVgpXG4rXHRcdHZhbCB8PSBHRU1fQklUKFBDU1NFTCk7XG4rXHRlbHNlIGlmIChicC1cdTAwM2VwaHlfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSlcbiBcdFx0dmFsIHw9IEdFTV9CSVQoU0dNSUlFTikgfCBHRU1fQklUKFBDU1NFTCk7XG4gXHRtYWNiX3dyaXRlbChicCwgTkNGR1IsIHZhbCk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1NjowNy4wNDQ5NjY4OTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTQzMTg1NDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ2FkZW5jZSBNQUNCIEV0aGVybmV0IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBGZWFzaWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jYC4gSXQncyB0b3VjaGluZyBzZXZlcmFsIGZ1bmN0aW9uczogYG1hY2JfcGNzX2FuX3Jlc3RhcnRgLCBgbWFjYl9tYWNfY29uZmlnYCwgYG1hY2JfbWFjX3NlbGVjdF9wY3NgLCBgbWFjYl9taWlfcHJvYmVgLCBhbmQgYG1hY2JfaW5pdF9kZmx0YC4gVGhlIGNvcmUgdGhpbmcgaXMsIGl0J3MgYWRkaW5nIHN1cHBvcnQgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYYCwgd2hpY2ggaXMgZ3JlYXQgYnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyBpbiBhIGZ1enppbmcgZW52aXJvbm1lbnQ/IFRoaXMgaXMgYSBDYWRlbmNlIE1BQ0IvR0VNIEV0aGVybmV0IGNvbnRyb2xsZXIgZHJpdmVyLCBzbyB0aGF0IHJhaXNlcyBpbW1lZGlhdGUgY29uY2VybnMuXG5cbkZpcnN0LCBJIG5lZWQgdG8ga25vdyBpZiBRRU1VIGV2ZW4gKmVtdWxhdGVzKiB0aGlzIHRoaW5nLiBSaWdodCwgbGV0IG1lIGNoZWNrLi4uIHllcCwgUUVNVSBoYXMgYGh3L25ldC9jYWRlbmNlX2dlbS5jYC4gT2theSwgdGhhdCdzIGEgZ29vZCBzdGFydC4gSSBrbm93IGl0J3MgdXNlZCBpbiB0aGluZ3MgbGlrZSBYaWxpbnggWnlucSBhbmQgb3RoZXIgQVJNIGJvYXJkcy4gQnV0IGlzIGl0IGF2YWlsYWJsZSBvbiBzdGFuZGFyZCB4ODYgUUVNVT8gSG1tLCB0aGF0J3MgdGhlIHJ1Yi4gSXMgaXQgYW4gQVJNLXNwZWNpZmljIGRldmljZSBvciBjYW4gaXQgYmUgaW5zdGFudGlhdGVkIHZpYSBQQ0k/IEkgbmVlZCB0byBrbm93IGlmIGl0J3MgYSBwbGF0Zm9ybSBvciBQQ0kgZGV2aWNlLlxuXG5MZXQncyBzZWUuLi4gbG9va2luZyBhdCBgbWFjYl9pbml0X2RmbHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilgLCBhaCBoYSwgaXQncyBhICpwbGF0Zm9ybSogZGV2aWNlLiBUaGF0IG1lYW5zIGl0J3Mgbm90IGEgUENJIGRldmljZS4gQW5kIGhlcmUgaXMgd2hlcmUgdGhpbmdzIGdldCB0cmlja3kuIEluIHN5emthbGxlciwgd2UgdXN1YWxseSBmb2N1cyBvbiB4ODZfNjQsIGFybTY0LCBhbmQgdGhlIGxpa2UuIFRoaXMgYmVpbmcgYSBwbGF0Zm9ybSBkZXZpY2UsIHRoYXQgaW1wbGllcyBpdCByZXF1aXJlcyBhIHNwZWNpZmljIGRldmljZSB0cmVlIG9yIGJvYXJkIHN1cHBvcnQuXG5cblRoZSByZWFsIHByb2JsZW0gaXMsIGNhbiBJIHJlYWxpc3RpY2FsbHkgZnV6eiB0aGlzIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gUGxhdGZvcm0gZGV2aWNlcyB0aGF0IGFyZW4ndCBpbnN0YW50aWF0ZWQgaW4gdGhlIHN0YW5kYXJkIHRlc3QgZW52aXJvbm1lbnRzIChsaWtlIHRoZSB2aXJ0IGJvYXJkIG9uIGFybTY0LCBvciB0aGUgcGMvcTM1IG9uIHg4Nl82NCkgYXJlIG9mdGVuIHVucmVhY2hhYmxlIHVubGVzcyB0aGVyZSdzIGEgd2F5IHRvIGluc3RhbnRpYXRlIHRoZW0uIERldmljZSB0cmVlIG92ZXJsYXlzIHdvdWxkIHdvcmssIGJ1dCBzeXprYWxsZXIgZG9lc24ndCBkbyB0aGF0IGJ5IGRlZmF1bHQgZm9yIHRoaXMgc3BlY2lmaWMgZGV2aWNlLiBTbyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWdgIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBwb3NzaWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjMzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6MTUuOTg4MTU1MDc3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNDI0NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUNCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9MjA9aWYgTkVUX1ZFTkRPUl9DQURFTkNFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzoyMjpjb25maWcgTUFDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yMy1cXHR0cmlzdGF0ZSBcXFwiQ2FkZW5jZSBNQUNCL0dFTSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzozNzpjb25maWcgTUFDQl9VU0VfSFdTVEFNUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0zOC1cXHRib29sIFxcXCJVc2UgSUVFRSAxNTg4IGh3c3RhbXBcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjQ1OmNvbmZpZyBNQUNCX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiQ2FkZW5jZSBQQ0kgTUFDQi9HRU0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6MTYuMDMwNTgzNTA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgwMDIzMTgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipNQUNCIFBDSSBDb25maWd1cmF0aW9uOiBEaXZpbmcgaW50byB0aGUgQ29kZSoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gSSBzZWUgYGNvbmZpZyBNQUNCX1BDSWAhIFRoYXQncyBhIGtleSBkZXRhaWwgSSBhbG1vc3QgbWlzc2VkLiBUaGlzIGxpa2VseSBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIFBDSS1iYXNlZCB2ZXJzaW9uIG9mIHRoZSBNQUNCIEV0aGVybmV0IGNvbnRyb2xsZXIuIE5vdywgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBzcGVjaWZpYyB2YXJpYW50IGlzIGluaXRpYWxpemVkIGFuZCBtYW5hZ2VkLlxuXG5MZXQncyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIHdvdWxkIGJlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmNgLiBUaGF0IHNob3VsZCBjb250YWluIGFsbCB0aGUgUENJLXNwZWNpZmljIGluaXRpYWxpemF0aW9uLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgZGV2aWNlIGRyaXZlciBjb2RlIGZvciB0aGUgTUFDQiB3aGVuIG9wZXJhdGluZyBvbiBhIFBDSSBidXMuIEknbSBleHBlY3RpbmcgdG8gZmluZCBkZXRhaWxzIG9uIGhvdyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgaXMgcHJvYmVkLCB0aGUgaW50ZXJydXB0IGxpbmVzIGFyZSBoYW5kbGVkLCBhbmQgaG93IHRoZSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBuZXR3b3JrIHN0YWNrLiBJJ2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFueSBwb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zIGFuZCBob3cgdGhlIFBDSSBjb25maWd1cmF0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBjb3JlIE1BQ0IgZHJpdmVyIGZ1bmN0aW9uYWxpdHkuIFRpbWUgdG8gZ2V0IGNvZGluZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NDQzNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjIwLjgzMDgxOTY3NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTAzMDkyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWNiX3BjaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9NDU9Y29uZmlnIE1BQ0JfUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctNTEtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjUyOlxcdCAgd2lsbCBiZSBjYWxsZWQgbWFjYl9wY2kuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTUzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfTUFDQikgKz0gbWFjYi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTUFDQl9QQ0kpICs9IG1hY2JfcGNpLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTk6I2RlZmluZSBQQ0lfRFJJVkVSX05BTUUgXFxcIm1hY2JfcGNpXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0yMC0jZGVmaW5lIFBMQVRfRFJJVkVSX05BTUUgXFxcIm1hY2JcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM9MTIwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBkZXZfaWRfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jOjEyNTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWFjYl9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjYtXFx0Lm5hbWUgICAgID0gUENJX0RSSVZFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6MTMyOm1vZHVsZV9wY2lfZHJpdmVyKG1hY2JfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTEzMy1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZGV2X2lkX3RhYmxlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6MjAuODcxODU2MzY1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU2MzIyMDQwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUENJIEluc3RhbnRpYXRpb24gYW5kIERldmljZSBJRCBUYWJsZSBJbnNwZWN0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYSBNQUNCIGNvbnRyb2xsZXIsIGFuZCB0aGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IGl0IGNhbiBiZSBicm91Z2h0IHVwIHRocm91Z2ggUENJLiBFeGNlbGxlbnQuIFRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uZmlybSB0aGlzLCBhbmQgdGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBkZXZfaWRfdGFibGVgIHdpdGhpbiBgbWFjYl9wY2kuY2AuIEkgbmVlZCB0byB2ZXJpZnkgd2hpY2ggUENJIGRldmljZSBJRHMgYXJlIHN1cHBvcnRlZCBmb3IgdGhpcyBzcGVjaWZpYyBNQUNCIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBkcml2ZXIncyBkZXZpY2UgSUQgdGFibGUgaW5jbHVkZXMgdGhlIHNwZWNpZmljIElEcyBJJ20gZGVhbGluZyB3aXRoLiBUaGlzIGlzIGNydWNpYWwgZm9yIHByb3BlciBQQ0kgZGV2aWNlIHByb2JlIGFuZCBkcml2ZXIgYXR0YWNobWVudC4gTGV0J3Mgc2VlIGlmIHRob3NlIElEcyBtYXRjaCB1cC4gR290dGEgY2hlY2sgZm9yIHRoZSB2ZW5kb3IgYW5kIGRldmljZSBJRCwgc3VidmVuZG9yLCBzdWJkZXZpY2UuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSwgYnV0IEkganVzdCB3YW50IHRvIHF1aWNrbHkgY29uZmlybSBpdCdzIG5vdCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBvciB2YXJpYXRpb24gYmVmb3JlIEkgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjQxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6MjUuNDM1MDc5MDA2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExMDpcXHRcXHRzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0X2RldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4gMTExOlxcdFxcdHN0cnVjdCBtYWNiX3BsYXRmb3JtX2RhdGEgKnBsYXRfZGF0YSA9IGRldl9nZXRfcGxhdGRhdGEoXFx1MDAyNnBsYXRfZGV2LVxcdTAwM2VkZXYpO1xcbiAxMTI6XFx0XFx0c3RydWN0IGNsayAqcGNsayA9IHBsYXRfZGF0YS1cXHUwMDNlcGNsaztcXG4gMTEzOlxcdFxcdHN0cnVjdCBjbGsgKmhjbGsgPSBwbGF0X2RhdGEtXFx1MDAzZWhjbGs7XFxuIDExNDpcXHRcXG4gMTE1OlxcdFxcdHBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKHBsYXRfZGV2KTtcXG4gMTE2OlxcdFxcdGNsa191bnJlZ2lzdGVyX2ZpeGVkX3JhdGUocGNsayk7XFxuIDExNzpcXHRcXHRjbGtfdW5yZWdpc3Rlcl9maXhlZF9yYXRlKGhjbGspO1xcbiAxMTg6XFx0fVxcbiAxMTk6XFx0XFxuIDEyMDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZGV2X2lkX3RhYmxlW10gPSB7XFxuIDEyMTpcXHRcXHR7IFBDSV9WREVWSUNFKENETlMsIFBDSV9ERVZJQ0VfSURfQ0ROU19NQUNCKSB9LFxcbiAxMjI6XFx0XFx0eyAwLCB9XFxuIDEyMzpcXHR9O1xcbiAxMjQ6XFx0XFxuIDEyNTpcXHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWFjYl9wY2lfZHJpdmVyID0ge1xcbiAxMjY6XFx0XFx0Lm5hbWUgICAgID0gUENJX0RSSVZFUl9OQU1FLFxcbiAxMjc6XFx0XFx0LmlkX3RhYmxlID0gZGV2X2lkX3RhYmxlLFxcbiAxMjg6XFx0XFx0LnByb2JlICAgID0gbWFjYl9wcm9iZSxcXG4gMTI5OlxcdFxcdC5yZW1vdmVcXHQgID0gbWFjYl9yZW1vdmUsXFxuIDEzMDpcXHR9O1xcbiAxMzE6XFx0XFxuIDEzMjpcXHRtb2R1bGVfcGNpX2RyaXZlcihtYWNiX3BjaV9kcml2ZXIpO1xcbiAxMzM6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGRldl9pZF90YWJsZSk7XFxuIDEzNDpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuIDEzNTpcXHRNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkNhZGVuY2UgTklDIFBDSSB3cmFwcGVyXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjI1LjQzNTE0MDY3NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjE1NDE1NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTUFDQiBFdGhlcm5ldCBEcml2ZXIgdmlhIFBDSSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyB1c2luZyBgUENJX1ZERVZJQ0UoQ0ROUywgUENJX0RFVklDRV9JRF9DRE5TX01BQ0IpYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEgQ2FkZW5jZSBNQUNCIGNvbnRyb2xsZXIgYW5kIGl0J3MgYmVpbmcgdXNlZCB3aXRoIFBDSS4gR3JlYXQhIElmIGBDT05GSUdfTUFDQl9QQ0lgIGlzIGVuYWJsZWQsIHdlJ3ZlIGdvdCBhIHBvdGVudGlhbCBQQ0kgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGF0J3MgdGhlIG1vc3QgbGlrZWx5IGF0dGFjayB2ZWN0b3IsIGFuZCBzaW5jZSBpdCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGl0IGlzIGlkZWFsLlxuXG5Ob3csIHdhaXQgYSBzZWNvbmQuLi4gdGhlIHBhdGNoIG1vZGlmaWVzIGBtYWNiX21haW4uY2AuIFRoYXQncyB0aGUgY29yZSBkcml2ZXIgZmlsZSwgdXN1YWxseS4gRG9lcyBgbWFjYl9wY2kuY2AsIHdoaWNoIGlzIHRoZSBQQ0ktc3BlY2lmaWMgcGFydCwgcmVseSBvbiB0aGUgY29yZSBkcml2ZXI/IE5lZWQgdG8gbWFrZSBzdXJlLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgcHJvYmUgZnVuY3Rpb24gaW4gYG1hY2JfcGNpLmNgLiBBaCwgeWVzISBJdCByZWdpc3RlcnMgYSBwbGF0Zm9ybSBkZXZpY2UgbmFtZWQgXCJtYWNiLlwiIE9rYXksIHNvIHRoZSBQQ0kgY29kZSBpcyBsaWtlbHkgdXNpbmcgdGhlIGNvcmUgZHJpdmVyIGNvZGUuIEV4Y2VsbGVudC4gTG9va3MgcHJvbWlzaW5nIGZvciB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTYxLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6MzAuMjU2Njg0NDQzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2MDpcXHRcXHQvKiBpbml0aWFsaXplIGNsb2NrcyAqL1xcbiAgNjE6XFx0XFx0cGxhdF9kYXRhLnBjbGsgPSBjbGtfcmVnaXN0ZXJfZml4ZWRfcmF0ZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwicGNsa1xcXCIsIE5VTEwsIDAsXFxuICA2MjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgR0VNX1BDTEtfUkFURSk7XFxuICA2MzpcXHRcXHRpZiAoSVNfRVJSKHBsYXRfZGF0YS5wY2xrKSkge1xcbiAgNjQ6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihwbGF0X2RhdGEucGNsayk7XFxuICA2NTpcXHRcXHRcXHRnb3RvIGVycl9wY2xrX3JlZ2lzdGVyO1xcbiAgNjY6XFx0XFx0fVxcbiAgNjc6XFx0XFxuICA2ODpcXHRcXHRwbGF0X2RhdGEuaGNsayA9IGNsa19yZWdpc3Rlcl9maXhlZF9yYXRlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJoY2xrXFxcIiwgTlVMTCwgMCxcXG4gIDY5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCBHRU1fSENMS19SQVRFKTtcXG4gIDcwOlxcdFxcdGlmIChJU19FUlIocGxhdF9kYXRhLmhjbGspKSB7XFxuICA3MTpcXHRcXHRcXHRlcnIgPSBQVFJfRVJSKHBsYXRfZGF0YS5oY2xrKTtcXG4gIDcyOlxcdFxcdFxcdGdvdG8gZXJyX2hjbGtfcmVnaXN0ZXI7XFxuICA3MzpcXHRcXHR9XFxuICA3NDpcXHRcXG4gIDc1OlxcdFxcdC8qIHNldCB1cCBwbGF0Zm9ybSBkZXZpY2UgaW5mbyAqL1xcbiAgNzY6XFx0XFx0bWVtc2V0KFxcdTAwMjZwbGF0X2luZm8sIDAsIHNpemVvZihwbGF0X2luZm8pKTtcXG4gIDc3OlxcdFxcdHBsYXRfaW5mby5wYXJlbnQgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiAgNzg6XFx0XFx0cGxhdF9pbmZvLmZ3bm9kZSA9IHBkZXYtXFx1MDAzZWRldi5md25vZGU7XFxuICA3OTpcXHRcXHRwbGF0X2luZm8ubmFtZSA9IFBMQVRfRFJJVkVSX05BTUU7XFxuICA4MDpcXHRcXHRwbGF0X2luZm8uaWQgPSBwZGV2LVxcdTAwM2VkZXZmbjtcXG4gIDgxOlxcdFxcdHBsYXRfaW5mby5yZXMgPSByZXM7XFxuICA4MjpcXHRcXHRwbGF0X2luZm8ubnVtX3JlcyA9IEFSUkFZX1NJWkUocmVzKTtcXG4gIDgzOlxcdFxcdHBsYXRfaW5mby5kYXRhID0gXFx1MDAyNnBsYXRfZGF0YTtcXG4gIDg0OlxcdFxcdHBsYXRfaW5mby5zaXplX2RhdGEgPSBzaXplb2YocGxhdF9kYXRhKTtcXG4gIDg1OlxcdFxcdHBsYXRfaW5mby5kbWFfbWFzayA9IHBkZXYtXFx1MDAzZWRtYV9tYXNrO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHQvKiByZWdpc3RlciBwbGF0Zm9ybSBkZXZpY2UgKi9cXG4gIDg4OlxcdFxcdHBsYXRfZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX2Z1bGwoXFx1MDAyNnBsYXRfaW5mbyk7XFxuICA4OTpcXHRcXHRpZiAoSVNfRVJSKHBsYXRfZGV2KSkge1xcbiAgOTA6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihwbGF0X2Rldik7XFxuICA5MTpcXHRcXHRcXHRnb3RvIGVycl9wbGF0X2Rldl9yZWdpc3RlcjtcXG4gIDkyOlxcdFxcdH1cXG4gIDkzOlxcdFxcbiAgOTQ6XFx0XFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIHBsYXRfZGV2KTtcXG4gIDk1OlxcdFxcbiAgOTY6XFx0XFx0cmV0dXJuIDA7XFxuICA5NzpcXHRcXG4gIDk4OlxcdGVycl9wbGF0X2Rldl9yZWdpc3RlcjpcXG4gIDk5OlxcdFxcdGNsa191bnJlZ2lzdGVyX2ZpeGVkX3JhdGUocGxhdF9kYXRhLmhjbGspO1xcbiAxMDA6XFx0XFxuIDEwMTpcXHRlcnJfaGNsa19yZWdpc3RlcjpcXG4gMTAyOlxcdFxcdGNsa191bnJlZ2lzdGVyX2ZpeGVkX3JhdGUocGxhdF9kYXRhLnBjbGspO1xcbiAxMDM6XFx0XFxuIDEwNDpcXHRlcnJfcGNsa19yZWdpc3RlcjpcXG4gMTA1OlxcdFxcdHJldHVybiBlcnI7XFxuIDEwNjpcXHR9XFxuIDEwNzpcXHRcXG4gMTA4OlxcdHN0YXRpYyB2b2lkIG1hY2JfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiAxMDk6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1NjozMC4yNTY3NTU4NDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0NDE2ODY1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqbWFjYiBEZXZpY2UgQmluZGluZyAtIEEgUXVpY2sgQ2hlY2sqKlxuXG5SaWdodCwgc28gSSBzZWUgdGhpcyBcIm1hY2JcIiBwbGF0Zm9ybSBkZXZpY2UgcmVnaXN0ZXJpbmcuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQgc2hvdWxkIGJpbmQgdG8gdGhlIGBtYWNiYCBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgb25lIGRlZmluZWQgaW4gYG1hY2JfbWFpbi5jYC4gTWFrZXMgc2Vuc2UsIHRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBjb25zaXN0ZW50LCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHNpZ24uIEJ1dCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBJIGp1c3Qgd2FudCB0byBtYWtlIGEgcXVpY2sgdmVyaWZpY2F0aW9uLiBMZXQgbWUganVzdCBjb25maXJtIHRoZSBkcml2ZXIncyBuYW1lIGluIGBtYWNiX21haW4uY2AgbWF0Y2hlcyB0aGUgcmVnaXN0ZXJlZCBkZXZpY2UuIE5vdGhpbmcgY29tcGxleCwganVzdCBtYWtpbmcgc3VyZSB0aGUgZnVuZGFtZW50YWxzIGFyZSBzb3VuZCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIG1vcmUgaW50ZXJlc3RpbmcgYXNwZWN0cyBvZiB0aGUgZHJpdmVyJ3Mgb3BlcmF0aW9uLiBHb3R0YSBzdGF5IHNoYXJwIVxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDkzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1NjozMy44MDA5MjY3NDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODEwNjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDI1OTkgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDEtI2luY2x1ZGUgXFx1MDAzY25ldC9wa3Rfc2NoZWQuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQyOiNpbmNsdWRlIFxcXCJtYWNiLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ0LS8qIFRoaXMgc3RydWN0dXJlIGlzIG9ubHkgdXNlZCBmb3IgTUFDQiBvbiBTaUZpdmUgRlU1NDAgZGV2aWNlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDU6c3RydWN0IHNpZml2ZV9mdTU0MF9tYWNiX21nbXQge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDYtXFx0dm9pZCBfX2lvbWVtICpyZWc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEyOC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEyOTpzdGF0aWMgdW5zaWduZWQgaW50IG1hY2JfZG1hX2Rlc2NfZ2V0X3NpemUoc3RydWN0IG1hY2IgKmJwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTMwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEzMTpcXHR1bnNpZ25lZCBpbnQgZGVzY19zaXplID0gc2l6ZW9mKHN0cnVjdCBtYWNiX2RtYV9kZXNjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEzMzpcXHRpZiAobWFjYl9kbWE2NChicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMzQ6XFx0XFx0ZGVzY19zaXplICs9IHNpemVvZihzdHJ1Y3QgbWFjYl9kbWFfZGVzY182NCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMzU6XFx0aWYgKG1hY2JfZG1hX3B0cChicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMzY6XFx0XFx0ZGVzY19zaXplICs9IHNpemVvZihzdHJ1Y3QgbWFjYl9kbWFfZGVzY19wdHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNDE6c3RhdGljIHVuc2lnbmVkIGludCBtYWNiX2Fkal9kbWFfZGVzY19pZHgoc3RydWN0IG1hY2IgKmJwLCB1bnNpZ25lZCBpbnQgZGVzY19pZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNDIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTQzOlxcdHJldHVybiBkZXNjX2lkeCAqICgxICsgbWFjYl9kbWE2NChicCkgKyBtYWNiX2RtYV9wdHAoYnApKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE0NC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNDY6c3RhdGljIHN0cnVjdCBtYWNiX2RtYV9kZXNjXzY0ICptYWNiXzY0Yl9kZXNjKHN0cnVjdCBtYWNiICpicCwgc3RydWN0IG1hY2JfZG1hX2Rlc2MgKmRlc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xNDcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTQ4OlxcdHJldHVybiAoc3RydWN0IG1hY2JfZG1hX2Rlc2NfNjQgKikoKHZvaWQgKilkZXNjXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNDk6XFx0XFx0KyBzaXplb2Yoc3RydWN0IG1hY2JfZG1hX2Rlc2MpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE1MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE1Mi0vKiBSaW5nIGJ1ZmZlciBhY2Nlc3NvcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE1MzpzdGF0aWMgdW5zaWduZWQgaW50IG1hY2JfdHhfcmluZ193cmFwKHN0cnVjdCBtYWNiICpicCwgdW5zaWduZWQgaW50IGluZGV4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTU4OnN0YXRpYyBzdHJ1Y3QgbWFjYl9kbWFfZGVzYyAqbWFjYl90eF9kZXNjKHN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE1OS1cXHRcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBpbmRleClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNjE6XFx0aW5kZXggPSBtYWNiX3R4X3Jpbmdfd3JhcChxdWV1ZS1cXHUwMDNlYnAsIGluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE2MjpcXHRpbmRleCA9IG1hY2JfYWRqX2RtYV9kZXNjX2lkeChxdWV1ZS1cXHUwMDNlYnAsIGluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE2My1cXHRyZXR1cm4gXFx1MDAyNnF1ZXVlLVxcdTAwM2V0eF9yaW5nW2luZGV4XTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTY2OnN0YXRpYyBzdHJ1Y3QgbWFjYl90eF9za2IgKm1hY2JfdHhfc2tiKHN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE2Ny1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGluZGV4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTY4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE2OTpcXHRyZXR1cm4gXFx1MDAyNnF1ZXVlLVxcdTAwM2V0eF9za2JbbWFjYl90eF9yaW5nX3dyYXAocXVldWUtXFx1MDAzZWJwLCBpbmRleCldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTcwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE3MjpzdGF0aWMgZG1hX2FkZHJfdCBtYWNiX3R4X2RtYShzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWUsIHVuc2lnbmVkIGludCBpbmRleClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE3My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE3NjpcXHRvZmZzZXQgPSBtYWNiX3R4X3Jpbmdfd3JhcChxdWV1ZS1cXHUwMDNlYnAsIGluZGV4KSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxNzc6XFx0XFx0XFx0bWFjYl9kbWFfZGVzY19nZXRfc2l6ZShxdWV1ZS1cXHUwMDNlYnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxODI6c3RhdGljIHVuc2lnbmVkIGludCBtYWNiX3J4X3Jpbmdfd3JhcChzdHJ1Y3QgbWFjYiAqYnAsIHVuc2lnbmVkIGludCBpbmRleClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE4My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE4NzpzdGF0aWMgc3RydWN0IG1hY2JfZG1hX2Rlc2MgKm1hY2JfcnhfZGVzYyhzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWUsIHVuc2lnbmVkIGludCBpbmRleClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE4OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxODk6XFx0aW5kZXggPSBtYWNiX3J4X3Jpbmdfd3JhcChxdWV1ZS1cXHUwMDNlYnAsIGluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjE5MDpcXHRpbmRleCA9IG1hY2JfYWRqX2RtYV9kZXNjX2lkeChxdWV1ZS1cXHUwMDNlYnAsIGluZGV4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE5MS1cXHRyZXR1cm4gXFx1MDAyNnF1ZXVlLVxcdTAwM2VyeF9yaW5nW2luZGV4XTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTk0OnN0YXRpYyB2b2lkICptYWNiX3J4X2J1ZmZlcihzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWUsIHVuc2lnbmVkIGludCBpbmRleClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTE5NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xOTYtXFx0cmV0dXJuIHF1ZXVlLVxcdTAwM2VyeF9idWZmZXJzICsgcXVldWUtXFx1MDAzZWJwLVxcdTAwM2VyeF9idWZmZXJfc2l6ZSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxOTc6XFx0ICAgICAgIG1hY2JfcnhfcmluZ193cmFwKHF1ZXVlLVxcdTAwM2VicCwgaW5kZXgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjAwLS8qIEkvTyBhY2Nlc3NvcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjIwMTpzdGF0aWMgdTMyIGh3X3JlYWRsX25hdGl2ZShzdHJ1Y3QgbWFjYiAqYnAsIGludCBvZmZzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMDIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyMDY6c3RhdGljIHZvaWQgaHdfd3JpdGVsX25hdGl2ZShzdHJ1Y3QgbWFjYiAqYnAsIGludCBvZmZzZXQsIHUzMiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTIwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTIxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjIxMTpzdGF0aWMgdTMyIGh3X3JlYWRsKHN0cnVjdCBtYWNiICpicCwgaW50IG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTIxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTIxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjIxNjpzdGF0aWMgdm9pZCBod193cml0ZWwoc3RydWN0IG1hY2IgKmJwLCBpbnQgb2Zmc2V0LCB1MzIgdmFsdWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0yMzg9c3RhdGljIGJvb2wgaHdfaXNfZ2VtKHZvaWQgX19pb21lbSAqYWRkciwgYm9vbCBuYXRpdmVfaW8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjI1MDpzdGF0aWMgdm9pZCBtYWNiX3NldF9od2FkZHIoc3RydWN0IG1hY2IgKmJwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjU1LVxcdGJvdHRvbSA9IGdldF91bmFsaWduZWRfbGUzMihicC1cXHUwMDNlZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNTY6XFx0bWFjYl9vcl9nZW1fd3JpdGVsKGJwLCBTQTFCLCBib3R0b20pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjU3LVxcdHRvcCA9IGdldF91bmFsaWduZWRfbGUxNihicC1cXHUwMDNlZGV2LVxcdTAwM2VkZXZfYWRkciArIDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MjU4OlxcdG1hY2Jfb3JfZ2VtX3dyaXRlbChicCwgU0ExVCwgdG9wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMjY1LVxcdC8qIENsZWFyIHVudXNlZCBhZGRyZXNzIHJlZ2lzdGVyIHNldHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjI2NjpcXHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBMkIsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MjY3OlxcdG1hY2Jfb3JfZ2VtX3dyaXRlbChicCwgU0EyVCwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNjg6XFx0bWFjYl9vcl9nZW1fd3JpdGVsKGJwLCBTQTNCLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjI2OTpcXHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIFNBM1QsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MjcwOlxcdG1hY2Jfb3JfZ2VtX3dyaXRlbChicCwgU0E0QiwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNzE6XFx0bWFjYl9vcl9nZW1fd3JpdGVsKGJwLCBTQTRULCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI3Mi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyNzQ6c3RhdGljIHZvaWQgbWFjYl9nZXRfaHdhZGRyKHN0cnVjdCBtYWNiICpicClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI3NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTI4Mi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgNDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyODM6XFx0XFx0Ym90dG9tID0gbWFjYl9vcl9nZW1fcmVhZGwoYnAsIFNBMUIgKyBpICogOCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoyODQ6XFx0XFx0dG9wID0gbWFjYl9vcl9nZW1fcmVhZGwoYnAsIFNBMVQgKyBpICogOCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0yODUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMwMzpzdGF0aWMgaW50IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKHN0cnVjdCBtYWNiICpicClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMxMTpzdGF0aWMgaW50IG1hY2JfbWRpb19yZWFkX2MyMihzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgbWlpX2lkLCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzEyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjMxMzpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMTQtXFx0aW50IHN0YXR1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzIwOlxcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMyMS1cXHRpZiAoc3RhdHVzIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzI0OlxcdG1hY2Jfd3JpdGVsKGJwLCBNQU4sIChNQUNCX0JGKFNPRiwgTUFDQl9NQU5fQzIyX1NPRilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMyNS1cXHRcXHRcXHQgICAgICB8IE1BQ0JfQkYoUlcsIE1BQ0JfTUFOX0MyMl9SRUFEKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozMzA6XFx0c3RhdHVzID0gbWFjYl9tZGlvX3dhaXRfZm9yX2lkbGUoYnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzMxLVxcdGlmIChzdGF0dXMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozMzQ6XFx0c3RhdHVzID0gTUFDQl9CRkVYVChEQVRBLCBtYWNiX3JlYWRsKGJwLCBNQU4pKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTMzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzQyOnN0YXRpYyBpbnQgbWFjYl9tZGlvX3JlYWRfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBtaWlfaWQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM0My1cXHRcXHRcXHQgICAgICBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzQ0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM0NTpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNDYtXFx0aW50IHN0YXR1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzU0OlxcdHN0YXR1cyA9IG1hY2JfbWRpb193YWl0X2Zvcl9pZGxlKGJwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM1NS1cXHRpZiAoc3RhdHVzIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MzU4OlxcdG1hY2Jfd3JpdGVsKGJwLCBNQU4sIChNQUNCX0JGKFNPRiwgTUFDQl9NQU5fQzQ1X1NPRilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM1OS1cXHRcXHRcXHQgICAgICB8IE1BQ0JfQkYoUlcsIE1BQ0JfTUFOX0M0NV9BRERSKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozNjU6XFx0c3RhdHVzID0gbWFjYl9tZGlvX3dhaXRfZm9yX2lkbGUoYnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzY2LVxcdGlmIChzdGF0dXMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozNjk6XFx0bWFjYl93cml0ZWwoYnAsIE1BTiwgKE1BQ0JfQkYoU09GLCBNQUNCX01BTl9DNDVfU09GKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzcwLVxcdFxcdFxcdCAgICAgIHwgTUFDQl9CRihSVywgTUFDQl9NQU5fQzQ1X1JFQUQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM3NTpcXHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zNzYtXFx0aWYgKHN0YXR1cyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM3OTpcXHRzdGF0dXMgPSBNQUNCX0JGRVhUKERBVEEsIG1hY2JfcmVhZGwoYnAsIE1BTikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzgwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozODc6c3RhdGljIGludCBtYWNiX21kaW9fd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBtaWlfaWQsIGludCByZWdudW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zODgtXFx0XFx0XFx0ICAgICAgIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM4OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzozOTA6XFx0c3RydWN0IG1hY2IgKmJwID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMzkxLVxcdGludCBzdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTM5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjM5NzpcXHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0zOTgtXFx0aWYgKHN0YXR1cyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQwMTpcXHRtYWNiX3dyaXRlbChicCwgTUFOLCAoTUFDQl9CRihTT0YsIE1BQ0JfTUFOX0MyMl9TT0YpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MDItXFx0XFx0XFx0ICAgICAgfCBNQUNCX0JGKFJXLCBNQUNCX01BTl9DMjJfV1JJVEUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQwODpcXHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MDktXFx0aWYgKHN0YXR1cyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQxODpzdGF0aWMgaW50IG1hY2JfbWRpb193cml0ZV9jNDUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IG1paV9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQxOS1cXHRcXHRcXHQgICAgICAgaW50IGRldmFkLCBpbnQgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MjEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDIyOlxcdHN0cnVjdCBtYWNiICpicCA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQyMy1cXHRpbnQgc3RhdHVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0MzE6XFx0c3RhdHVzID0gbWFjYl9tZGlvX3dhaXRfZm9yX2lkbGUoYnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDMyLVxcdGlmIChzdGF0dXMgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00MzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0MzU6XFx0bWFjYl93cml0ZWwoYnAsIE1BTiwgKE1BQ0JfQkYoU09GLCBNQUNCX01BTl9DNDVfU09GKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDM2LVxcdFxcdFxcdCAgICAgIHwgTUFDQl9CRihSVywgTUFDQl9NQU5fQzQ1X0FERFIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ0MjpcXHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NDMtXFx0aWYgKHN0YXR1cyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ0NjpcXHRtYWNiX3dyaXRlbChicCwgTUFOLCAoTUFDQl9CRihTT0YsIE1BQ0JfTUFOX0M0NV9TT0YpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NDctXFx0XFx0XFx0ICAgICAgfCBNQUNCX0JGKFJXLCBNQUNCX01BTl9DNDVfV1JJVEUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ1MzpcXHRzdGF0dXMgPSBtYWNiX21kaW9fd2FpdF9mb3JfaWRsZShicCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NTQtXFx0aWYgKHN0YXR1cyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ2MzpzdGF0aWMgdm9pZCBtYWNiX2luaXRfYnVmZmVycyhzdHJ1Y3QgbWFjYiAqYnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00NjQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDY1OlxcdHN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2Ni1cXHR1bnNpZ25lZCBpbnQgcTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDY4LVxcdC8qIFNpbmdsZSByZWdpc3RlciBmb3IgYWxsIHF1ZXVlcycgaGlnaCAzMiBiaXRzLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDY5OlxcdGlmIChtYWNiX2RtYTY0KGJwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDcwOlxcdFxcdG1hY2Jfd3JpdGVsKGJwLCBSQlFQSCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3MS1cXHRcXHRcXHQgICAgdXBwZXJfMzJfYml0cyhicC1cXHUwMDNlcXVldWVzWzBdLnJ4X3JpbmdfZG1hKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NzI6XFx0XFx0bWFjYl93cml0ZWwoYnAsIFRCUVBILFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDczLVxcdFxcdFxcdCAgICB1cHBlcl8zMl9iaXRzKGJwLVxcdTAwM2VxdWV1ZXNbMF0udHhfcmluZ19kbWEpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDgyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDgzOiAqIG1hY2Jfc2V0X3R4X2NsaygpIC0gU2V0IGEgY2xvY2sgdG8gYSBuZXcgZnJlcXVlbmN5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0ODQ6ICogQGJwOlxcdFxcdHBvaW50ZXIgdG8gc3RydWN0IG1hY2JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ4NS0gKiBAc3BlZWQ6XFx0TmV3IGZyZXF1ZW5jeSBpbiBIelxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDg2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDg3OnN0YXRpYyB2b2lkIG1hY2Jfc2V0X3R4X2NsayhzdHJ1Y3QgbWFjYiAqYnAsIGludCBzcGVlZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ4OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUxOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjUyMDpzdGF0aWMgdm9pZCBtYWNiX3VzeF9wY3NfbGlua191cChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTIxLVxcdFxcdFxcdFxcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLCBpbnQgc3BlZWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTUyMy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1MjQ6XFx0c3RydWN0IG1hY2IgKmJwID0gY29udGFpbmVyX29mKHBjcywgc3RydWN0IG1hY2IsIHBoeWxpbmtfdXN4X3Bjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MjUtXFx0dTMyIGNvbmZpZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM1OnN0YXRpYyB2b2lkIG1hY2JfdXN4X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01MzYtXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01Mzgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTM5OlxcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3VzeF9wY3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTQwLVxcdHUzMiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU1MzpzdGF0aWMgaW50IG1hY2JfdXN4X3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTQtXFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTU4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU1OTpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBjb250YWluZXJfb2YocGNzLCBzdHJ1Y3QgbWFjYiwgcGh5bGlua191c3hfcGNzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU2MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTY3OnN0YXRpYyB1bnNpZ25lZCBpbnQgbWFjYl9wY3NfaW5iYW5kX2NhcHMoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NjgtXFx0XFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU3MzpzdGF0aWMgdm9pZCBtYWNiX3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTc2OlxcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzctXFx0dTE2IGJtc3IsIGxwYTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTg0OnN0YXRpYyB2b2lkIG1hY2JfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTg2OlxcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODctXFx0dTMyIG9sZCwgbmV3O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1OTQ6c3RhdGljIGludCBtYWNiX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01OTUtXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01OTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjAwOlxcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZihwY3MsIHN0cnVjdCBtYWNiLCBwaHlsaW5rX3NnbWlpX3Bjcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MDEtXFx0dTMyIG9sZCwgbmV3O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MDktXFx0ICogTXVzdCBiZSB3cml0dGVuIGFmdGVyIFBDU1NFTCBpcyBzZXQgaW4gTkNGR1Igd2hpY2ggaXMgZG9uZSBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjEwOlxcdCAqIG1hY2JfbWFjX2NvbmZpZygpLCBvdGhlcndpc2Ugd3JpdGVzIHdpbGwgbm90IHRha2UgZWZmZWN0LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjExLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjM6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgbWFjYl9waHlsaW5rX3VzeF9wY3Nfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjI0OlxcdC5wY3NfZ2V0X3N0YXRlID0gbWFjYl91c3hfcGNzX2dldF9zdGF0ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyNTpcXHQucGNzX2NvbmZpZyA9IG1hY2JfdXN4X3Bjc19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MjY6XFx0LnBjc19saW5rX3VwID0gbWFjYl91c3hfcGNzX2xpbmtfdXAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjctfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyOTpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfcGNzX29wcyBtYWNiX3BoeWxpbmtfcGNzX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYzMDpcXHQucGNzX2luYmFuZF9jYXBzID0gbWFjYl9wY3NfaW5iYW5kX2NhcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MzE6XFx0LnBjc19nZXRfc3RhdGUgPSBtYWNiX3Bjc19nZXRfc3RhdGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2MzI6XFx0LnBjc19hbl9yZXN0YXJ0ID0gbWFjYl9wY3NfYW5fcmVzdGFydCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYzMzpcXHQucGNzX2NvbmZpZyA9IG1hY2JfcGNzX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYzNC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjM2OnN0YXRpYyBib29sIG1hY2JfdHhfbHBpX3NldChzdHJ1Y3QgbWFjYiAqYnAsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjQyOlxcdG5jciA9IG1hY2JfcmVhZGwoYnAsIE5DUik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NDMtXFx0b2xkID0gbmNyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NDgtXFx0aWYgKG9sZCAhPSBuY3IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NDk6XFx0XFx0bWFjYl93cml0ZWwoYnAsIE5DUiwgbmNyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjU0OnN0YXRpYyBib29sIG1hY2JfdHhfYWxsX3F1ZXVlc19pZGxlKHN0cnVjdCBtYWNiICpicClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY1NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NTY6XFx0c3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjU3LVxcdHVuc2lnbmVkIGludCBxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NjY6c3RhdGljIHZvaWQgbWFjYl90eF9scGlfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02Njcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjY4OlxcdHN0cnVjdCBtYWNiICpicCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbWFjYiwgdHhfbHBpX3dvcmsud29yayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NjktXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjcxLVxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZicC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjcyOlxcdGlmIChicC1cXHUwMDNlZWVlX2FjdGl2ZSBcXHUwMDI2XFx1MDAyNiBtYWNiX3R4X2FsbF9xdWV1ZXNfaWRsZShicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2NzM6XFx0XFx0bWFjYl90eF9scGlfc2V0KGJwLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTY3NC1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZicC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo2Nzc6c3RhdGljIHZvaWQgbWFjYl90eF9scGlfc2NoZWR1bGUoc3RydWN0IG1hY2IgKmJwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjg4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Njg5OnN0YXRpYyB2b2lkIG1hY2JfdHhfbHBpX3dha2Uoc3RydWN0IG1hY2IgKmJwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Njk2OlxcdGlmICghbWFjYl90eF9scGlfc2V0KGJwLCBmYWxzZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02OTctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3MDM6c3RhdGljIHZvaWQgbWFjYl9tYWNfZGlzYWJsZV90eF9scGkoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MDQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzA1LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gdG9fbmV0X2Rldihjb25maWctXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3MDY6XFx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MDctXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzEyLVxcdGJwLVxcdTAwM2VlZWVfYWN0aXZlID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3MTM6XFx0bWFjYl90eF9scGlfc2V0KGJwLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MTQtXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2YnAtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NzE3OnN0YXRpYyBpbnQgbWFjYl9tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdTMyIHRpbWVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzE4LVxcdFxcdFxcdFxcdCAgYm9vbCB0eF9jbGtfc3RvcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzIwLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gdG9fbmV0X2Rldihjb25maWctXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3MjE6XFx0c3RydWN0IG1hY2IgKmJwID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MjItXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NzM3OnN0YXRpYyB2b2lkIG1hY2JfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03MzgtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NDAtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB0b19uZXRfZGV2KGNvbmZpZy1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc0MTpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc0Mi1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3NDg6XFx0b2xkX2N0cmwgPSBjdHJsID0gbWFjYl9vcl9nZW1fcmVhZGwoYnAsIE5DRkdSKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc0OTpcXHRvbGRfbmNyID0gbmNyID0gbWFjYl9vcl9nZW1fcmVhZGwoYnAsIE5DUik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc1My1cXHRcXHRcXHRjdHJsIHw9IE1BQ0JfQklUKFJNOTIwMF9STUlJKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc1NDpcXHR9IGVsc2UgaWYgKG1hY2JfaXNfZ2VtKGJwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzU1LVxcdFxcdGN0cmwgXFx1MDAyNj0gfihHRU1fQklUKFNHTUlJRU4pIHwgR0VNX0JJVChQQ1NTRUwpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzcyLVxcdGlmIChvbGRfY3RybCBeIGN0cmwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3NzM6XFx0XFx0bWFjYl9vcl9nZW1fd3JpdGVsKGJwLCBOQ0ZHUiwgY3RybCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NzUtXFx0aWYgKG9sZF9uY3IgXiBuY3IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo3NzY6XFx0XFx0bWFjYl9vcl9nZW1fd3JpdGVsKGJwLCBOQ1IsIG5jcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03NzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc4MTpzdGF0aWMgdm9pZCBtYWNiX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzgyLVxcdFxcdFxcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03ODQtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB0b19uZXRfZGV2KGNvbmZpZy1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc4NTpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjc4NjpcXHRzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy03ODctXFx0dW5zaWduZWQgaW50IHE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTc5NS1cXHQvKiBEaXNhYmxlIFJ4IGFuZCBUeCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Nzk2OlxcdGN0cmwgPSBtYWNiX3JlYWRsKGJwLCBOQ1IpIFxcdTAwMjYgfihNQUNCX0JJVChSRSkgfCBNQUNCX0JJVChURSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6Nzk3OlxcdG1hY2Jfd3JpdGVsKGJwLCBOQ1IsIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzk4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MDItLyogVXNlIGp1Z2dsaW5nIGFsZ29yaXRobSB0byBsZWZ0IHJvdGF0ZSB0eCByaW5nIGFuZCB0eCBza2IgYXJyYXkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjgwMzpzdGF0aWMgdm9pZCBnZW1fc2h1ZmZsZV90eF9vbmVfcmluZyhzdHJ1Y3QgbWFjYl9xdWV1ZSAqcXVldWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MDQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODA1LVxcdHVuc2lnbmVkIGludCBoZWFkLCB0YWlsLCBjb3VudCwgcmluZ19zaXplLCBkZXNjX3NpemU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4MDY6XFx0c3RydWN0IG1hY2JfdHhfc2tiIHR4X3NrYiwgKnNrYl9jdXJyLCAqc2tiX25leHQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4MDc6XFx0c3RydWN0IG1hY2JfZG1hX2Rlc2MgKmRlc2NfY3VyciwgKmRlc2NfbmV4dDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTgwOC1cXHR1bnNpZ25lZCBpbnQgaSwgY3ljbGVzLCBzaGlmdCwgY3VyciwgbmV4dDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjgwOTpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBxdWV1ZS1cXHUwMDNlYnA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MTAtXFx0dW5zaWduZWQgY2hhciBkZXNjWzI0XTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODEzOlxcdGRlc2Nfc2l6ZSA9IG1hY2JfZG1hX2Rlc2NfZ2V0X3NpemUoYnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04MzYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGN5Y2xlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4Mzc6XFx0XFx0bWVtY3B5KFxcdTAwMjZkZXNjLCBtYWNiX3R4X2Rlc2MocXVldWUsIGkpLCBkZXNjX3NpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODM4OlxcdFxcdG1lbWNweShcXHUwMDI2dHhfc2tiLCBtYWNiX3R4X3NrYihxdWV1ZSwgaSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4Mzk6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbWFjYl90eF9za2IpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODQ0LVxcdFxcdHdoaWxlIChuZXh0ICE9IGkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg0NTpcXHRcXHRcXHRkZXNjX2N1cnIgPSBtYWNiX3R4X2Rlc2MocXVldWUsIGN1cnIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODQ2OlxcdFxcdFxcdGRlc2NfbmV4dCA9IG1hY2JfdHhfZGVzYyhxdWV1ZSwgbmV4dCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg1NTpcXHRcXHRcXHRza2JfY3VyciA9IG1hY2JfdHhfc2tiKHF1ZXVlLCBjdXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg1NjpcXHRcXHRcXHRza2JfbmV4dCA9IG1hY2JfdHhfc2tiKHF1ZXVlLCBuZXh0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg1NzpcXHRcXHRcXHRtZW1jcHkoc2tiX2N1cnIsIHNrYl9uZXh0LCBzaXplb2Yoc3RydWN0IG1hY2JfdHhfc2tiKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjg2MzpcXHRcXHRkZXNjX2N1cnIgPSBtYWNiX3R4X2Rlc2MocXVldWUsIGN1cnIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODY0LVxcdFxcdG1lbWNweShkZXNjX2N1cnIsIFxcdTAwMjZkZXNjLCBkZXNjX3NpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04NjgtXFx0XFx0XFx0ZGVzY19jdXJyLVxcdTAwM2VjdHJsIHw9IE1BQ0JfQklUKFRYX1dSQVApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODY5OlxcdFxcdG1lbWNweShtYWNiX3R4X3NrYihxdWV1ZSwgY3VyciksIFxcdTAwMjZ0eF9za2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4NzA6XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgbWFjYl90eF9za2IpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg3MS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg4My0vKiBSb3RhdGUgdGhlIHF1ZXVlIHNvIHRoYXQgdGhlIHRhaWwgaXMgYXQgaW5kZXggMCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6ODg0OnN0YXRpYyB2b2lkIGdlbV9zaHVmZmxlX3R4X3JpbmdzKHN0cnVjdCBtYWNiICpicClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg4NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4ODY6XFx0c3RydWN0IG1hY2JfcXVldWUgKnF1ZXVlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtODg3LVxcdGludCBxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy04OTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo4OTM6c3RhdGljIHZvaWQgbWFjYl9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg5NC1cXHRcXHRcXHQgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTg5OS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHRvX25ldF9kZXYoY29uZmlnLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTAwOlxcdHN0cnVjdCBtYWNiICpicCA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTAxOlxcdHN0cnVjdCBtYWNiX3F1ZXVlICpxdWV1ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkwMi1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05MDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5MDg6XFx0Y3RybCA9IG1hY2Jfb3JfZ2VtX3JlYWRsKGJwLCBOQ0ZHUik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05MDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkxOS1cXHRcXHRjdHJsIFxcdTAwMjY9IH5NQUNCX0JJVChQQUUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTIwOlxcdFxcdGlmIChtYWNiX2lzX2dlbShicCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkyMS1cXHRcXHRcXHRjdHJsIFxcdTAwMjY9IH5HRU1fQklUKEdCRSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjkzNjpcXHRtYWNiX29yX2dlbV93cml0ZWwoYnAsIE5DRkdSLCBjdHJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTkzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTQ0LVxcdGlmICghKGJwLVxcdTAwM2VjYXBzIFxcdTAwMjYgTUFDQl9DQVBTX01BQ0JfSVNfRU1BQykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk0NTpcXHRcXHRtYWNiX3NldF90eF9jbGsoYnAsIHNwZWVkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk0Ni1cXHRcXHRnZW1fc2h1ZmZsZV90eF9yaW5ncyhicCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk0OS1cXHQvKiBFbmFibGUgUnggYW5kIFR4OyBFbmFibGUgUFRQIHVuaWNhc3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk1MDpcXHRjdHJsID0gbWFjYl9yZWFkbChicCwgTkNSKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk1MS1cXHRpZiAoZ2VtX2hhc19wdHAoYnApKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05NTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NTQ6XFx0bWFjYl93cml0ZWwoYnAsIE5DUiwgY3RybCB8IE1BQ0JfQklUKFJFKSB8IE1BQ0JfQklUKFRFKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05NTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk1OTpzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICptYWNiX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTYwLVxcdFxcdFxcdFxcdFxcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy05NjItXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB0b19uZXRfZGV2KGNvbmZpZy1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk2MzpcXHRzdHJ1Y3QgbWFjYiAqYnAgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTc0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIG1hY2JfcGh5bGlua19vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo5NzU6XFx0Lm1hY19zZWxlY3RfcGNzID0gbWFjYl9tYWNfc2VsZWN0X3BjcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk3NjpcXHQubWFjX2NvbmZpZyA9IG1hY2JfbWFjX2NvbmZpZyxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6MzMuODQ0NzQxNzMzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDI3ODIxNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgXCJtYWNiXCIgRHJpdmVyKipcblxuQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGUgXCJtYWNiXCIgbmFtZS4gVGhhdCdzIGltbWVkaWF0ZWx5IHJpbmdpbmcgYmVsbHMg4oCTIHNvdW5kcyBsaWtlIGEgTUFDIChNZWRpYSBBY2Nlc3MgQ29udHJvbGxlcikgRXRoZXJuZXQgZHJpdmVyLCBsaWtlbHkgZm9yIGEgc3BlY2lmaWMgcGxhdGZvcm0uIE15IGZpcnN0IG1vdmUgaXMgYWx3YXlzIHRvIGNvbmZpcm0gdGhlIGRyaXZlciBuYW1lIGFuZCBhbnkgYXNzb2NpYXRlZCBmaWxlcy4gXCJtYWNiXCIgaXQgaXMsIHNvIG5vdyBJIG5lZWQgdG8gZGl2ZSBpbiBhbmQgZ2V0IG15IGJlYXJpbmdzLlxuXG5NeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgd2lsbCBiZSBhIGBwbGF0Zm9ybV9kcml2ZXJgLCBnaXZlbiB0aGUgY29udGV4dC4gVGhlIG5leHQgc3RlcCBpcyB0byBsb2NhdGUgdGhlIHNvdXJjZSBjb2RlLCBhbmQgSSB3b3VsZCBzdGFydCB3aXRoIGBtYWNiX21haW4uY2Ag4oCTIHRoYXQncyBhIHByZXR0eSBzdGFuZGFyZCBuYW1pbmcgY29udmVudGlvbi4gSSdsbCBsaWtlbHkgZmluZCB0aGUgYHBsYXRmb3JtX2RyaXZlcmAgc3RydWN0dXJlIGRlZmluaXRpb24gYW5kIHJlZ2lzdHJhdGlvbiB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBrZXJuZWwncyBwbGF0Zm9ybSBidXMsIGhvdyBpdCBnZXRzIHByb2JlZCwgYW5kIGhvdyBpdCBoYW5kbGVzIGRldmljZSBpbml0aWFsaXphdGlvbi4gRnJvbSB0aGVyZSwgSSBjYW4gZHJpbGwgZG93biBmdXJ0aGVyIGJhc2VkIG9uIHdoYXQgSSBmaW5kIGluIHRoYXQgaW5pdGlhbCBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc3OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjM4Ljg0NzUyNjQ0NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEzNDc3OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGxhdGZvcm1fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz02MjU2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBtYWNiX3BtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjI2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyNjE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWFjYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjYyLVxcdC5wcm9iZVxcdFxcdD0gbWFjYl9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjI3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyNzI6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtYWNiX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MjczLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1NjozOC44ODg4Nzk1OTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE1OTgwNDE4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BQ0IgRHJpdmVyIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgbWFjYl9kcml2ZXJgIGlzIGRlZmluaXRlbHkgcmVnaXN0ZXJlZCBhcyBhIHBsYXRmb3JtIGRyaXZlci4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gQW5kIGBtYWNiX3BjaS5jYCByZWdpc3RlcnMgYSBwbGF0Zm9ybSBkZXZpY2UgdGhhdCAqZG9lcyogbWF0Y2ggdGhpcyBkcml2ZXIsIHNvIHRoZSBkcml2ZXIgc2hvdWxkIGJlIGFjY2Vzc2libGUgdGhyb3VnaCBQQ0kuIFRoYXQncyBob3cgdGhpcyBpcyBzdXBwb3NlZCB0byB3b3JrLCByaWdodD9cblxuTm93LCB0aGUgcXVlc3Rpb24gaXMsIGhhcyB0aGUgc3l6a2FsbGVyIGNvbmZpZ3VyYXRpb24gYmVlbiBzZXQgdXAgY29ycmVjdGx5PyBEbyB0aGUgc3RhbmRhcmQgY29uZmlncyBlbmFibGUgYENPTkZJR19NQUNCX1BDSWA/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSWYgaXQncyBub3QgZW5hYmxlZCBieSBkZWZhdWx0LCB0aGVuIHdlJ2xsIG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUgaXQuIFRpbWUgdG8gZGlnIGludG8gdGhlIHN5emthbGxlciBjb25maWd1cmF0aW9uIGZpbGVzLlxuXG5SaWdodCwgc28gd2UnbGwgbmVlZCB0byBhZGQgYE1BQ0JfUENJYCBhbmQgYE1BQ0JgIHRvIGBFbmFibGVDb25maWdzYC4gQnV0IGJlZm9yZSBJIGRvIHRoYXQsIGEgcXVpY2sgY2hlY2sgb2YgdGhlIEtjb25maWcuLi4gYmVjYXVzZSBgTUFDQl9QQ0lgIHByb2JhYmx5IGhhcyBhIGRlcGVuZGVuY3kgb24gYE1BQ0JgLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQgZGVwZW5kZW5jeSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnYCBqdXN0IHRvIGJlIHN1cmUsIGFuZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gaXQgaXMgcmVmbGVjdGVkIGluIG91ciBjb25maWcgZmlsZS4gT2theSwgZ29vZC4gVGhhdCBzaG91bGQgZG8gaXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjk4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjQ2LjA0ODY4NjEyM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzOTU3NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQ0JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZz0yMD1pZiBORVRfVkVORE9SX0NBREVOQ0VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjIyOmNvbmZpZyBNQUNCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJDYWRlbmNlIE1BQ0IvR0VNIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjM3OmNvbmZpZyBNQUNCX1VTRV9IV1NUQU1QXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTM4LVxcdGJvb2wgXFxcIlVzZSBJRUVFIDE1ODggaHdzdGFtcFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6NDU6Y29uZmlnIE1BQ0JfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTQ2LVxcdHRyaXN0YXRlIFxcXCJDYWRlbmNlIFBDSSBNQUNCL0dFTSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1Njo0Ni4wOTIwODgxNDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE5NTIxNDk4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgTUFDQl9QQ0lgIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBUaGUgcHJvamVjdCdzIGJlZW4gZmxhZ2dlZCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiB3aXRoIHRoaXMgYE1BQ0JfUENJYCBtb2R1bGUuIEZpcnN0IHRoaW5ncyBmaXJzdDogbGV0J3MgZ2V0IGEgaGFuZGxlIG9uIGl0cyBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgY29tcG9uZW50cywgbGlicmFyaWVzLCBvciBldmVuIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGFyZSByZWx5aW5nIG9uIHRoaXMgdGhpbmcuIEEgZGVwZW5kZW5jeSBncmFwaCB3b3VsZCBiZSBpZGVhbCwgYnV0IGV2ZW4gYSBiYXNpYyBsaXN0IHdpbGwgZ2V0IG1lIHN0YXJ0ZWQuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc2ltcGxlIGRyaXZlciwgb3Igc29tZXRoaW5nIG1vcmUgZGVlcGx5IGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtJ3MgYXJjaGl0ZWN0dXJlPyBLbm93aW5nIGlmIGl0IHRvdWNoZXMgdGhlIGtlcm5lbCwgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXJzLCBvciByZWxpZXMgb24gc29tZSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgd2lsbCBkcml2ZSB0aGUgaW52ZXN0aWdhdGlvbi4gR290dGEgZW5zdXJlIHRoZXJlIGFyZSBubyBicmVha2luZyBjaGFuZ2VzIG9yIHVuZXhwZWN0ZWQgY29uZmxpY3RzIGlmIHdlIHBsYW4gYW55IGNoYW5nZXMuIFNvLCBsZXQncyBzdGFydCBtYXBwaW5nIG91dCB0aGlzIGRlcGVuZGVuY3kgbGFuZHNjYXBlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTk3NCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjUyLjI4NzMwNjA4MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDcxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDQwOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gIDQxOlxcdFxcdGRlZmF1bHQgeVxcbiAgNDI6XFx0XFx0aGVscFxcbiAgNDM6XFx0XFx0ICBFbmFibGUgSUVFRSAxNTg4IFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIHN1cHBvcnQgZm9yIE1BQ0IuXFxuICA0NDpcXHRcXG4gIDQ1OlxcdGNvbmZpZyBNQUNCX1BDSVxcbiAgNDY6XFx0XFx0dHJpc3RhdGUgXFxcIkNhZGVuY2UgUENJIE1BQ0IvR0VNIHN1cHBvcnRcXFwiXFxuICA0NzpcXHRcXHRkZXBlbmRzIG9uIE1BQ0IgXFx1MDAyNlxcdTAwMjYgUENJXFxuICA0ODpcXHRcXHRoZWxwXFxuICA0OTpcXHRcXHQgIFRoaXMgaXMgUENJIHdyYXBwZXIgZm9yIE1BQ0IgZHJpdmVyLlxcbiAgNTA6XFx0XFxuICA1MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDUyOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbWFjYl9wY2kuXFxuICA1MzpcXHRcXG4gIDU0OlxcdGVuZGlmICMgTkVUX1ZFTkRPUl9DQURFTkNFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU2OjUyLjI4NzQxNTQ1MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQxMzY5NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBhbmQgaXQncyBjbGVhciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGhpbmdlcyBvbiB0d28gcHJpbWFyeSBmYWN0b3JzOiBgTUFDQmAgYW5kIGBQQ0lgLiBUaGF0IG11Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBOb3csIHRoZSBjb21wbGV4aXR5IHN0YXJ0cyB0byB1bmZvbGQgYXMgSSBkaWcgZGVlcGVyLiBJdCdzIGV2aWRlbnQgdGhhdCBgTUFDQmAgaXNuJ3QgYSBzdGFuZGFsb25lIGVsZW1lbnQ7IGl0cyBvcGVyYXRpb24gb3IgaW1wbGVtZW50YXRpb24sIGF0IGxlYXN0IGluIHRoaXMgY29udGV4dCwgaXMgaXRzZWxmIGRlcGVuZGVudCBvbiBgSEFTX0RNQWAgYW5kIGBDT01NT05fQ0xLYC4gVGhpcyBtZWFucyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3RhdGUgb2YgKnRob3NlKiBjb21wb25lbnRzIHRvIGZ1bGx5IGdyYXNwIHRoZSBzdGF0ZSBvZiBgTUFDQmAsIHdoaWNoIHRoZW4gZGlyZWN0bHkgaW1wYWN0cyB0aGUgb3ZlcmFsbCBzeXN0ZW0uIEkgbmVlZCB0byB0cmFjZSB0aGlzIGRlcGVuZGVuY3kgY2hhaW4gdmVyeSBjYXJlZnVsbHkuIEknbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBjb25maWd1cmF0aW9ucyB3aGVyZSBgSEFTX0RNQWAgb3IgYENPTU1PTl9DTEtgIG1pZ2h0IGJlIHNldCBkaWZmZXJlbnRseSwgbGVhZGluZyB0byBkaWZmZXJlbnQgYmVoYXZpb3JzIGZvciBgTUFDQmAgYW5kIGRvd25zdHJlYW0gZWZmZWN0cyBvbiBgUENJYC4gVGhlIGdvYWwgaXMgdG8gaXNvbGF0ZSB0aGUgY3JpdGljYWwgcGF0aCBhbmQgdW5kZXJzdGFuZCBlYWNoIGVsZW1lbnQncyByb2xlIHdpdGhpbiB0aGUgc3lzdGVtLiBJIGhhdmUgdG8gYXNzZXNzIHdoZXRoZXIgdGhlIGRlcGVuZGVuY2llcyBhcmUgaGFyZCByZXF1aXJlbWVudHMsIG9yIGNvbmRpdGlvbmFsLCBhbmQgdGhlIHNwZWNpZmljIGltcGFjdCBvbiB0aGUgZW5kIGdvYWwgb2YgdGhpcyBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjQxOCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTY6NTYuODI4Nzg3NjcyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMDpcXHRpZiBORVRfVkVORE9SX0NBREVOQ0VcXG4gIDIxOlxcdFxcbiAgMjI6XFx0Y29uZmlnIE1BQ0JcXG4gIDIzOlxcdFxcdHRyaXN0YXRlIFxcXCJDYWRlbmNlIE1BQ0IvR0VNIHN1cHBvcnRcXFwiXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19ETUEgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMS1xcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMjY6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDI3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMjg6XFx0XFx0aGVscFxcbiAgMjk6XFx0XFx0ICBUaGUgQ2FkZW5jZSBNQUNCIGV0aGVybmV0IGludGVyZmFjZSBpcyBmb3VuZCBvbiBtYW55IEF0bWVsIEFUMzIgYW5kXFxuICAzMDpcXHRcXHQgIEFUOTEgcGFydHMuICBUaGlzIGRyaXZlciBhbHNvIHN1cHBvcnRzIHRoZSBDYWRlbmNlIEdFTSAoR2lnYWJpdFxcbiAgMzE6XFx0XFx0ICBFdGhlcm5ldCBNQUMgZm91bmQgaW4gc29tZSBBUk0gU29DIGRldmljZXMpLiAgU2F5IFkgdG8gaW5jbHVkZVxcbiAgMzI6XFx0XFx0ICBzdXBwb3J0IGZvciB0aGUgTUFDQi9HRU0gY2hpcC5cXG4gIDMzOlxcdFxcbiAgMzQ6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICAzNTpcXHRcXHQgIHdpbGwgYmUgbWFjYi5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIE1BQ0JfVVNFX0hXU1RBTVBcXG4gIDM4OlxcdFxcdGJvb2wgXFxcIlVzZSBJRUVFIDE1ODggaHdzdGFtcFxcXCJcXG4gIDM5OlxcdFxcdGRlcGVuZHMgb24gTUFDQlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMzo1Njo1Ni44Mjg4NTc0MDJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYyMTE3NDk2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMgZm9yIENhZGVuY2UgTmV0d29yayBJbnRlcmZhY2UgRHJpdmVycyoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBpbnRlZ3JhdGluZyBhIENhZGVuY2UgbmV0d29yayBpbnRlcmZhY2UgaW50byBhIG5ldyBzeXN0ZW0uIFRoZSBrZXkgdGhpbmcgSSBpbW1lZGlhdGVseSBuZWVkIHRvIGNvbmZpcm0gaXMgdGhhdCB0aGUgYE5FVF9WRU5ET1JfQ0FERU5DRWAga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGRlZmluaXRlbHkgZW5hYmxlZC4gVGhpcyBpcyB0aGUgZm91bmRhdGlvbmFsIGJ1aWxkaW5nIGJsb2NrLiBXaXRob3V0IGl0LCBJJ20gbm90IGV2ZW4gZ29pbmcgdG8gZ2V0IHRoZSBuZWNlc3NhcnkgZnJhbWV3b3JrIGZvciB0aGUgQ2FkZW5jZS1zcGVjaWZpYyBkcml2ZXJzIHRvIGNvbXBpbGUgYW5kIGxpbmsuIEl0J3MgdGhlIGZpcnN0IHN0ZXAsIHRoZSBnYXRla2VlcGVyLCByZWFsbHkuIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0aGF0IHRoaXMgaXMgaW4gcGxhY2UgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwMTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU3OjAxLjQ1MDAzNTc1NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgQ2FkZW5jZSBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9DQURFTkNFXFxuICAgNzpcXHRcXHRib29sIFxcXCJDYWRlbmNlIGRldmljZXNcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbiAgIDk6XFx0XFx0ZGVmYXVsdCB5XFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDE2OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcXG4gIDE3OlxcdFxcdCAgcmVtYWluaW5nIENhZGVuY2UgbmV0d29yayBjYXJkIHF1ZXN0aW9ucy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZVxcbiAgMTg6XFx0XFx0ICBhc2tlZCBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRpZiBORVRfVkVORE9SX0NBREVOQ0VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTc6MDEuNDUwMTA0NTY1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNjcyNjkyODA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTUFDQiBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgcGFydHMgdG91Y2hpbmcgYE5FVF9WRU5ET1JfQ0FERU5DRWAsIGBNQUNCYCwgYW5kIGBNQUNCX1BDSWAgY29uZmlndXJhdGlvbnMuIEl0IGxvb2tzIGxpa2UgaXQncyBtb2RpZnlpbmcgc2V2ZXJhbCBmdW5jdGlvbnMsIG5hbWVseSBgbWFjYl9wY3NfYW5fcmVzdGFydGAsIGBtYWNiX21hY19jb25maWdgLCBgbWFjYl9tYWNfc2VsZWN0X3Bjc2AsIGBtYWNiX21paV9wcm9iZWAsIGFuZCBgbWFjYl9pbml0X2RmbHRgLiBUaGVzZSBhcmUgYWxsIGNsZWFybHkgdGllZCBpbnRvIHRoZSBwaHlsaW5rIG9wZXJhdGlvbnMgYW5kIHByb2JlIHByb2NlZHVyZXMgZm9yIHRoaXMgaGFyZHdhcmUuXG5cbmBtYWNiX21paV9wcm9iZWAgZ2V0cyBjYWxsZWQgZHVyaW5nIGBtYWNiX3Byb2JlYCwgYW5kIHRoZSBvdGhlcnMg4oCTIGBtYWNiX21hY19jb25maWdgLCBgbWFjYl9wY3NfYW5fcmVzdGFydGAsIGFuZCBgbWFjYl9tYWNfc2VsZWN0X3Bjc2Ag4oCTIGFyZSBjYWxsZWQgYnkgcGh5bGluay4gYG1hY2JfaW5pdF9kZmx0YCBpcyBhbHNvIHVzZWQgZHVyaW5nIHByb2JlLiBTaW5jZSB0aGlzIGlzIGEgaGFyZHdhcmUgZHJpdmVyLCBhbmQgaXQgc3VwcG9ydHMgUENJLCBJIGNhbiByZWFjaCBpdCBpbiBRRU1VIGlmIHRoZSBQQ0kgZGV2aWNlIGlzIGVtdWxhdGVkLCBvciBpZiBzeXprYWxsZXIgaXMgbGV2ZXJhZ2luZyB0aGUgUENJIGZ1enplci4gSG9sZCBvbiwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciB0aGF0IGNhbiBpbmplY3QgUENJIGRldmljZXMgYW5kIGZ1enogTU1JTy9QSU8vRE1BLiBUaGF0J3MgYSBkZWZpbml0ZSBhdHRhY2sgdmVjdG9yLiBUaGlzIG1lYW5zIHRoZXNlIGRyaXZlcnMgYXJlICphYnNvbHV0ZWx5KiB3b3J0aCBmdXp6aW5nLlxuXG5UaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkaW5nIHN1cHBvcnQgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYYCB0byB0aGUgTUFDQiBkcml2ZXIuIFNvLCB0aGUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBmb3IgZnV6emluZyBhcmU6IGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCwgYG1hY2JfbWFjX2NvbmZpZ2AsIGBtYWNiX21hY19zZWxlY3RfcGNzYCwgYG1hY2JfbWlpX3Byb2JlYCwgYW5kIGBtYWNiX2luaXRfZGZsdGAuXG5cbldhaXQsIHRoZXNlIGFyZSBhbGwgZGVjbGFyZWQgYXMgc3RhdGljIGZ1bmN0aW9ucyEgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXkncmUgaW5saW5lZCBvciBpZiB0aGV5J3JlIGFjdHVhbGx5IHJlYWNoYWJsZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNDY4LCJPdXRwdXRUb2tlbnMiOjc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTc6MTIuMTIyODAwMDMxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk5ODY0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWNiX3Bjc19hbl9yZXN0YXJ0fG1hY2JfbWFjX2NvbmZpZ3xtYWNiX21hY19zZWxlY3RfcGNzfG1hY2JfbWlpX3Byb2JlfG1hY2JfaW5pdF9kZmx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NzM9c3RhdGljIHZvaWQgbWFjYl9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU4NDpzdGF0aWMgdm9pZCBtYWNiX3Bjc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTk0PXN0YXRpYyBpbnQgbWFjYl9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy02MDktXFx0ICogTXVzdCBiZSB3cml0dGVuIGFmdGVyIFBDU1NFTCBpcyBzZXQgaW4gTkNGR1Igd2hpY2ggaXMgZG9uZSBpblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NjEwOlxcdCAqIG1hY2JfbWFjX2NvbmZpZygpLCBvdGhlcndpc2Ugd3JpdGVzIHdpbGwgbm90IHRha2UgZWZmZWN0LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjExLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz02Mjk9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX3Bjc19vcHMgbWFjYl9waHlsaW5rX3Bjc19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTYzMS1cXHQucGNzX2dldF9zdGF0ZSA9IG1hY2JfcGNzX2dldF9zdGF0ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYzMjpcXHQucGNzX2FuX3Jlc3RhcnQgPSBtYWNiX3Bjc19hbl9yZXN0YXJ0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjMzLVxcdC5wY3NfY29uZmlnID0gbWFjYl9wY3NfY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz03MTc9c3RhdGljIGludCBtYWNiX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgdGltZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTczNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjczNzpzdGF0aWMgdm9pZCBtYWNiX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNzM4LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9ODkzPXN0YXRpYyB2b2lkIG1hY2JfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTk1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk1OTpzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICptYWNiX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTYwLVxcdFxcdFxcdFxcdFxcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz05NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbWFjYl9waHlsaW5rX29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjk3NTpcXHQubWFjX3NlbGVjdF9wY3MgPSBtYWNiX21hY19zZWxlY3RfcGNzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6OTc2OlxcdC5tYWNfY29uZmlnID0gbWFjYl9tYWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtOTc3LVxcdC5tYWNfbGlua19kb3duID0gbWFjYl9tYWNfbGlua19kb3duLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIxPXN0YXRpYyB2b2lkIG1hY2JfZ2V0X3Bjc19maXhlZF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTAzMC0vKiBiYXNlZCBvbiBhdTEwMDBfZXRoLiBjKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwMzE6c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTAzMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTExMzg9c3RhdGljIGludCBtYWNiX21paV9pbml0KHN0cnVjdCBtYWNiICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE0OC1cXHRpZiAoIW1kaW9fbnAgXFx1MDAyNlxcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTE0OTpcXHRcXHRyZXR1cm4gbWFjYl9taWlfcHJvYmUoYnAtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTUwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTE3NjpcXHRlcnIgPSBtYWNiX21paV9wcm9iZShicC1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNzctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDc1MD1zdGF0aWMgaW50IG1hY2JfY2xrX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKnBjbGssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3NjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo0NzYzOnN0YXRpYyBpbnQgbWFjYl9pbml0X2RmbHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ3NjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz00OTU2PXN0YXRpYyBpbnQgbWFjYl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ5NjEtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NDk2MjpcXHRcXHRyZXR1cm4gbWFjYl9pbml0X2RmbHQocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy00OTYzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTQ1OT1zdGF0aWMgaW50IGZ1NTQwX2MwMDBfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTQ2NTpcXHRyZXR1cm4gbWFjYl9pbml0X2RmbHQocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NDY2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NTQ2OD1zdGF0aWMgaW50IGluaXRfcmVzZXRfb3B0aW9uYWwoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTUxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjU1MTU6XFx0cmV0ID0gbWFjYl9pbml0X2RmbHQocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTE2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NTI0PXN0YXRpYyBpbnQgZXllcTVfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTU0MDpcXHRyZXQgPSBtYWNiX2luaXRfZGZsdChwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU1NDEtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTc6MTIuMTY3ODA0MDMyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNzA1NjIyNzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BQ0IgRHJpdmVyIEZ1bmN0aW9uIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBNQUNCIGRyaXZlciBjb2RlLCBhbmQgSSBzZWUgaG93IGl0J3Mgc3RydWN0dXJlZC4gVGhlc2UgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYG1hY2JfcGh5bGlua19wY3Nfb3BzYCBhbmQgYG1hY2JfcGh5bGlua19vcHNgIHN0cnVjdHMgYXJlIHRlY2huaWNhbGx5IHN0YXRpYyBmdW5jdGlvbnMsIHJpZ2h0PyBCdXQgdGhlIGtleSBoZXJlIGlzIHRoYXQgdGhleSdyZSAqYXNzaWduZWQqIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIHdpdGhpbiB0aG9zZSBzdHJ1Y3RzLiBUaGF0J3MgY3J1Y2lhbC4gQmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuLCBpdCBtZWFucyB0aGUgY29tcGlsZXIgKmNhbid0KiBmdWxseSBpbmxpbmUgdGhlbS4gVGhleSBlbmQgdXAgd2l0aCB0aGVpciBvd24gZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcywgd2hpY2ggbWFrZXMgdGhlbSB2aXNpYmxlIGFuZCwgZnJhbmtseSwgbXVjaCBlYXNpZXIgdG8gYW5hbHl6ZS4gVGhhdCdzIGV4YWN0bHkgd2hhdCBJIG5lZWQuXG5cbldhaXQgYSBzZWNvbmQsIGxldCBtZSByZS1yZWFkIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGhlcmUsIGl0IHNwZWNpZmllcyB0aGF0IGl0IHByZWZlcnMgZnVuY3Rpb25zIHRoYXQgYXJlIG5vbi1zdGF0aWMgYW5kIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBiZWNhdXNlIHRoZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gVGhhdCBtYWtlcyBzZW5zZSwgYmVjYXVzZSBJIHdvbid0IGJlIGFibGUgdG8gYWNjZXNzIHRob3NlIGlubGluZWQgZnVuY3Rpb25zLlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmFjdCB0aGF0IHRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4gaGVyZSBtZWFucyB0aGF0IHRoZXkgYXJlIG5vdCBpbmxpbmVkLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSBuZWVkLiBBbmQsIHNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgQVBJIGVudHJ5IHBvaW50cywgaXQgaXMgYWxzbyBnb29kIVxuXG5CdXQsIEkgdGhpbmsgaXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gY29uc2lkZXIgdGhlIHByb2JlIGZ1bmN0aW9uIGBtYWNiX3Byb2JlYC4gSXQncyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCwgaXNuJ3QgaXQ/IExldCBtZSBjaGVjayB0aGF0IHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MzcwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAzOjU5OjA5LjIyNDAzNDk4N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIzNDgzMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjYl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NDU4Nj1zdGF0aWMgdm9pZCBtYWNiX2NvbmZpZ3VyZV9jYXBzKHN0cnVjdCBtYWNiICpicCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNDYyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjQ2MzA6c3RhdGljIGludCBtYWNiX3Byb2JlX3F1ZXVlcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqbWVtLCBib29sIG5hdGl2ZV9pbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTQ2MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFjYl9jb25maWcgZGVmYXVsdF9nZW1fY29uZmlnID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01NzcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTc3MjpzdGF0aWMgaW50IG1hY2JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU3NzMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTgwODpcXHRudW1fcXVldWVzID0gbWFjYl9wcm9iZV9xdWV1ZXMoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgbWVtLCBuYXRpdmVfaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTgwOS1cXHRpZiAobnVtX3F1ZXVlcyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9NjI2MT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtYWNiX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjYyNjI6XFx0LnByb2JlXFx0XFx0PSBtYWNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNjI2My1cXHQucmVtb3ZlXFx0XFx0PSBtYWNiX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDM6NTk6MDkuMjY2Mzg4MjA4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNzM5NDc0ODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBNQUNCIERyaXZlcioqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYG1hY2JgIGRyaXZlciwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGJlc3Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGluaXRpYWxpemF0aW9uIGlzIHRoZSBgbWFjYl9wcm9iZWAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgdG8gYmUgdGhlIGxvZ2ljYWwgZW50cnkgcG9pbnQuIEFkZGl0aW9uYWxseSwgSSBuZWVkIHRvIGZvY3VzIG9uIHNvbWUgb3RoZXIgZnVuY3Rpb25zIHNpbmNlIHRoZXNlIGFyZSBsaWtlbHkgdG8gYmUgZGlyZWN0bHkgbW9kaWZpZWQgZHVyaW5nIGFueSBjaGFuZ2Ugb2YgdGhlIHN5c3RlbS4gSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyByZXN0YXJ0ZWQsIHdoYXQgdGhlIE1BQyBjb25maWd1cmF0aW9uIGlzLlxuXG5TcGVjaWZpY2FsbHksIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCBgbWFjYl9wY3NfYW5fcmVzdGFydGAsIGBtYWNiX21hY19jb25maWdgLCBgbWFjYl9tYWNfc2VsZWN0X3Bjc2AsIGBtYWNiX21paV9wcm9iZWAsIGFuZCBgbWFjYl9pbml0X2RmbHRgLiBUaGVzZSBhcHBlYXIgdG8gYmUgdGhlIGNvcmUgcm91dGluZXMgdGhhdCBoYW5kbGUgdGhlIFBDUyAoUGh5c2ljYWwgQ29kaW5nIFN1YmxheWVyKSwgTUFDIChNZWRpYSBBY2Nlc3MgQ29udHJvbCkgY29uZmlndXJhdGlvbiwgYW5kIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24uIFRoZXkgYXJlIHRoZSBvYnZpb3VzIHNwb3RzIHRvIHN0YXJ0LlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSBpZiB0aGUgUENJLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGlzIGhhbmRsZWQgaW4gYSBzZXBhcmF0ZSBmaWxlLiBJIG5lZWQgdG8ga25vdyBpZiB0aGUgYG1hY2JfcGNpLmNgIGZpbGUgY29udGFpbnMgaXRzIG93biBwcm9iZSBmdW5jdGlvbi4gVGhhdCB3aWxsIHF1aWNrbHkgdGVsbCBtZSBpZiBJIG5lZWQgdG8gbG9vayBpbnRvIGEgc2VwYXJhdGUgUENJLXJlbGF0ZWQgaW5pdGlhbGl6YXRpb24gcGF0aCBvciBpZiBldmVyeXRoaW5nIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBwcmltYXJ5IGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjczMzgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDowMDoxMC4wMDU4NjU2NTVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjEzOTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY2JfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0yNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmM6Mjc6c3RhdGljIGludCBtYWNiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX3BjaS5jLTI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYz0xMjU9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hY2JfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYy0xMjctXFx0LmlkX3RhYmxlID0gZGV2X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9wY2kuYzoxMjg6XFx0LnByb2JlICAgID0gbWFjYl9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfcGNpLmMtMTI5LVxcdC5yZW1vdmVcXHQgID0gbWFjYl9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjAwOjEwLjA0ODA4NDYyNloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Mzc4NjgzOTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFDQiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgdGhhdCBgbWFjYl9wY2kuY2AgYWxzbyBpbmNsdWRlcyBhIGBtYWNiX3Byb2JlYCBmdW5jdGlvbi4gU2luY2Ugd2UncmUgdHJ5aW5nIHRvIHBpbnBvaW50IHRoZSBtb2RpZmljYXRpb25zLCBzaG91bGQgSSBzcGVjaWZ5IGBtYWNiX3Byb2JlYCBhcyB3ZWxsLCBvciBqdXN0IGZvY3VzIG9uIHRoZSBjaGFuZ2VkIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIHBhdGNoPyBJIHRoaW5rIEknbGwganVzdCBsaXN0IHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgZm9yIG5vdy5cblxuTGV0J3Mgc2VlLCB0aGUgcGF0Y2ggYWx0ZXJzIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCwgYG1hY2JfbWFjX2NvbmZpZ2AsIGBtYWNiX21hY19zZWxlY3RfcGNzYCwgYG1hY2JfbWlpX3Byb2JlYCwgYW5kIGBtYWNiX2luaXRfZGZsdGAuIEkgc2hvdWxkIHByb2JhYmx5IGxpc3QgdGhvc2UgYXMgYEZvY3VzU3ltYm9sc2AuXG5cbk9rYXksIGhlcmUgdGhleSBhcmU6XG5gbWFjYl9wY3NfYW5fcmVzdGFydGBcbmBtYWNiX21hY19jb25maWdgXG5gbWFjYl9tYWNfc2VsZWN0X3Bjc2BcbmBtYWNiX21paV9wcm9iZWBcbmBtYWNiX2luaXRfZGZsdGBcblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBJIGtub3cgaG93IHRoZXkncmUgdXNlZC4gSSBzZWUgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgIGlzIHN0YXRpYywgYnV0IGl0J3MgYXNzaWduZWQgdG8gYG1hY2JfcGh5bGlua19wY3Nfb3BzLnBjc19hbl9yZXN0YXJ0YC4gVGhhdCdzIGltcG9ydGFudC4gVGhlbiBgbWFjYl9tYWNfY29uZmlnYCBpcyBhc3NpZ25lZCB0byBgbWFjYl9waHlsaW5rX29wcy5tYWNfY29uZmlnYC4gQW5kIGBtYWNiX21hY19zZWxlY3RfcGNzYCBpcyBhc3NpZ25lZCB0byBgbWFjYl9waHlsaW5rX29wcy5tYWNfc2VsZWN0X3Bjc2AuIFJpZ2h0LCBnb29kLiBgbWFjYl9taWlfcHJvYmVgIGlzIGNhbGxlZCBieSBgbWFjYl9taWlfaW5pdGAsIGFuZCBgbWFjYl9pbml0X2RmbHRgIGlzIGNhbGxlZCBieSBgbWFjYl9pbml0YC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgcGljdHVyZSBvZiBob3cgdGhlIGNoYW5nZWQgY29kZSBpcyBpbnRlZ3JhdGVkLlxuXG5BcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3MgaW52b2x2ZWQ/IEknbGwgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zOiBgTkVUX1ZFTkRPUl9DQURFTkNFYCwgYE1BQ0JgLCBhbmQgYE1BQ0JfUENJYC4gV2FpdCwgYE1BQ0JgIGRlcGVuZHMgb24gYEhBU19ETUFgIGFuZCBgQ09NTU9OX0NMS2AuIGBIQVNfRE1BYCBpcyBwcmV0dHkgc3RhbmRhcmQsIHRoYXQncyB1c3VhbGx5IGVuYWJsZWQuIGBDT01NT05fQ0xLYCBpcyB0eXBpY2FsIGZvciBBUk0sIGJ1dCBJIHNob3VsZCBjaGVjayBpZiBpdCdzIGV2ZW4gcmVsZXZhbnQgb24geDg2LiBMZXQgbWUgc2VlIGlmIGBDT01NT05fQ0xLYCBpcyBhdmFpbGFibGUgb24geDg2Li4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3OTg5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjAwOjE5LjQyNjc3MDkzNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwOTI4MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENPTU1PTl9DTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9jbGsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Nsay9LY29uZmlnPTEyPWNvbmZpZyBIQVZFX0xFR0FDWV9DTEsgIyBUT0RPOiBSZW1vdmUgb25jZSBhbGwgbGVnYWN5IHVzZXJzIGFyZSBtaWdyYXRlZFxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIxOm1lbnVjb25maWcgQ09NTU9OX0NMS1xcbmRyaXZlcnMvY2xrL0tjb25maWctMjItXFx0Ym9vbCBcXFwiQ29tbW9uIENsb2NrIEZyYW1ld29ya1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWc9MzQ9aWYgQ09NTU9OX0NMS1xcbmRyaXZlcnMvY2xrL0tjb25maWctMzUtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzozNjpjb25maWcgQ09NTU9OX0NMS19XTTgzMVhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM3LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFdNODMxeC8yeCBQTUlDc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWc9NTM9Y29uZmlnIExNSzA0ODMyXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTYwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6NjE6Y29uZmlnIENPTU1PTl9DTEtfQVBQTEVfTkNPXFxuZHJpdmVycy9jbGsvS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBBcHBsZSBTb0MgTkNPc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctNjgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo2OTpjb25maWcgQ09NTU9OX0NMS19NQVg3NzY4NlxcbmRyaXZlcnMvY2xrL0tjb25maWctNzAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgTWF4aW0gNzc2MjAvNzc2ODYvNzc4MDIgTUZEXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy03NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjc2OmNvbmZpZyBDT01NT05fQ0xLX01BWDk0ODVcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTc3LVxcdHRyaXN0YXRlIFxcXCJNYXhpbSA5NDg1IFByb2dyYW1tYWJsZSBDbG9jayBHZW5lcmF0b3JcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTgxLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6ODI6Y29uZmlnIENPTU1PTl9DTEtfUks4MDhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFJLODA1L1JLODA4L1JLODA5L1JLODE3L1JLODE4XFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy04OS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjkwOmNvbmZpZyBDT01NT05fQ0xLX1JQMVxcbmRyaXZlcnMvY2xrL0tjb25maWctOTEtXFx0dHJpc3RhdGUgXFxcIlJhc3BiZXJyeSBQaSBSUDEtYmFzZWQgY2xvY2sgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctOTgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo5OTpjb25maWcgQ09NTU9OX0NMS19ISTY1NVhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTEwMC1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBIaTY1NXhcXFwiIGlmIEVYUEVSVFxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMDgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxMDk6Y29uZmlnIENPTU1PTl9DTEtfU0NNSVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTEwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgY29udHJvbGxlZCB2aWEgU0NNSSBpbnRlcmZhY2VcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTExOC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjExOTpjb25maWcgQ09NTU9OX0NMS19TQ1BJXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xMjAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBjb250cm9sbGVkIHZpYSBTQ1BJIGludGVyZmFjZVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTI4LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTI5OmNvbmZpZyBDT01NT05fQ0xLX1NJNTM0MVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTMwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MzQxIGFuZCA1MzQwIEEvQi9DL0QgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTM5LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTQwOmNvbmZpZyBDT01NT05fQ0xLX1NJNTM1MVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTQxLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MzUxQS9CL0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE0Ny1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE0ODpjb25maWcgQ09NTU9OX0NMS19TSTUxNFxcbmRyaXZlcnMvY2xrL0tjb25maWctMTQ5LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFNpTGFicyA1MTQgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTU2LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTU3OmNvbmZpZyBDT01NT05fQ0xLX1NJNTQ0XFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNTgtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgU2lMYWJzIDU0NCBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xNjQtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxNjU6Y29uZmlnIENPTU1PTl9DTEtfU0k1NzBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE2Ni1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBTaUxhYnMgNTcwIGFuZCBjb21wYXRpYmxlIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE3My1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjE3NDpjb25maWcgQ09NTU9OX0NMS19CTTE4ODBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE3NS1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIEJpdG1haW4gQk0xODgwIFNvQ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTgwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MTgxOmNvbmZpZyBDT01NT05fQ0xLX0NEQ0U3MDZcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE4Mi1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBUSSBDRENFNzA2IGNsb2NrIHN5bnRoZXNpemVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xODctXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxODg6Y29uZmlnIENPTU1PTl9DTEtfVFBTNjg0NzBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTE4OS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgRHJpdmVyIGZvciBUSSBUUFM2ODQ3MCBQTUlDXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0xOTUtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoxOTY6Y29uZmlnIENPTU1PTl9DTEtfQ0RDRTkyNVxcbmRyaXZlcnMvY2xrL0tjb25maWctMTk3LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIFRJIENEQ0U5MTMvOTI1LzkzNy85NDkgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMjEyLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MjEzOmNvbmZpZyBDT01NT05fQ0xLX0NTMjAwMF9DUFxcbmRyaXZlcnMvY2xrL0tjb25maWctMjE0LVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgZm9yIENTMjAwMCBGcmFjdGlvbmFsLU4gQ2xvY2sgU3ludGhlc2l6ZXIgXFx1MDAyNiBDbG9jayBNdWx0aXBsaWVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMTktXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoyMjA6Y29uZmlnIENPTU1PTl9DTEtfRU43NTIzXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMjEtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBBaXJvaGEvRWNvTmV0IFNvQyBzeXN0ZW0gY2xvY2tzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMjgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoyMjk6Y29uZmlnIENPTU1PTl9DTEtfRVA5M1hYXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMzAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgQ2lycnVzIExvZ2ljIGVwOTN4eCBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTIzNi1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjIzNzpjb25maWcgQ09NTU9OX0NMS19FWUVRXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yMzgtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciB0aGUgTW9iaWxleWUgRXllUSBwbGF0Zm9ybVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMjQ3LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MjQ4OmNvbmZpZyBDT01NT05fQ0xLX0ZTTF9GTEVYU1BJXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNDktXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgRmxleFNQSSBvbiBMYXllcnNjYXBlIFNvQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI1NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI1Njpjb25maWcgQ09NTU9OX0NMS19GU0xfU0FJXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNTctXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBCQ0xLIG9mIEZyZWVzY2FsZSBTQUkgY29yZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI2Ny1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjI2ODpjb25maWcgQ09NTU9OX0NMS19HRU1JTklcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI2OS1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIENvcnRpbmEgU3lzdGVtcyBHZW1pbmkgU29DXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0yNzYtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzoyNzc6Y29uZmlnIENPTU1PTl9DTEtfTEFOOTY2WFxcbmRyaXZlcnMvY2xrL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIENsb2NrIENvbnRyb2xsZXIgZHJpdmVyIGZvciBMQU45NjZYIFNvQ1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMjg2LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6Mjg3OmNvbmZpZyBDT01NT05fQ0xLX1MyTVBTMTFcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTI4OC1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBTMk1QUzFYL1M1TTg3NjcgTUZEXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZz0zMDQ9Y29uZmlnIENMS19UV0w2MDQwXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMxMS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjMxMjpjb25maWcgQ09NTU9OX0NMS19BWElfQ0xLR0VOXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zMTMtXFx0dHJpc3RhdGUgXFxcIkFYSSBjbGtnZW4gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZz0zMjg9Y29uZmlnIENMS19MUzEwMjhBX1BMTERJR1xcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zMzctXFxuZHJpdmVycy9jbGsvS2NvbmZpZzozMzg6Y29uZmlnIENPTU1PTl9DTEtfWEdFTkVcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTMzOS1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIEFQTSBYR2VuZSBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM0NTpjb25maWcgQ09NTU9OX0NMS19MT0NITkFHQVJcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM0Ni1cXHR0cmlzdGF0ZSBcXFwiQ2lycnVzIExvZ2ljIExvY2huYWdhciBjbG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM1MS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM1Mjpjb25maWcgQ09NTU9OX0NMS19OUENNOFhYXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNTMtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgdGhlIE5QQ004WFggU29DIEZhbWlseVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzYwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MzYxOmNvbmZpZyBDT01NT05fQ0xLX0xPT05HU09OMlxcbmRyaXZlcnMvY2xrL0tjb25maWctMzYyLVxcdGJvb2wgXFxcIkNsb2NrIGRyaXZlciBmb3IgTG9vbmdzb24tMiBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM2OS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM3MDpjb25maWcgQ09NTU9OX0NMS19OWFBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM3MS1cXHRkZWZfYm9vbCBDT01NT05fQ0xLIFxcdTAwMjZcXHUwMDI2IChBUkNIX0xQQzE4WFggfHwgQVJDSF9MUEMzMlhYKVxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzYtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzozNzc6Y29uZmlnIENPTU1PTl9DTEtfUEFMTUFTXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zNzgtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgVEkgUGFsbWFzIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM4My1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjM4NDpjb25maWcgQ09NTU9OX0NMS19QV01cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTM4NS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBQV01zIHVzZWQgYXMgY2xvY2sgb3V0cHV0c1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzkwLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6MzkxOmNvbmZpZyBDT01NT05fQ0xLX1BYQVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzkyLVxcdGRlZl9ib29sIENPTU1PTl9DTEsgXFx1MDAyNlxcdTAwMjYgQVJDSF9QWEFcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctMzk1LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6Mzk2OmNvbmZpZyBDT01NT05fQ0xLX1JTOV9QQ0lFXFxuZHJpdmVycy9jbGsvS2NvbmZpZy0zOTctXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgUmVuZXNhcyA5LXNlcmllcyBQQ0llIGNsb2NrIGdlbmVyYXRvcnNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQwNC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQwNTpjb25maWcgQ09NTU9OX0NMS19TSTUyMVhYXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MDYtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgU2t5V29ya3MgU2k1MjF4eCBQQ0llIGNsb2NrIGdlbmVyYXRvcnNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQxMy1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQxNDpjb25maWcgQ09NTU9OX0NMS19WQzNcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQxNS1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIFZlcnNhQ2xvY2sgMyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MjItXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0MjM6Y29uZmlnIENPTU1PTl9DTEtfVkM1XFxuZHJpdmVycy9jbGsvS2NvbmZpZy00MjQtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgSURUIFZlcnNhQ2xvY2sgNSw2IGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQzMS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQzMjpjb25maWcgQ09NTU9OX0NMS19WQzdcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQzMy1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBSZW5lc2FzIFZlcnNhY2xvY2sgNyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDAtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NDE6Y29uZmlnIENPTU1PTl9DTEtfU1RNMzJGXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDItXFx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiAoTUFDSF9TVE0zMkY0MjkgfHwgTUFDSF9TVE0zMkY0NjkgfHwgTUFDSF9TVE0zMkY3NDYpXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ0NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ0Njpjb25maWcgQ09NTU9OX0NMS19TVE0zMkg3XFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NDctXFx0ZGVmX2Jvb2wgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiBNQUNIX1NUTTMySDc0M1xcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NTAtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0NTE6Y29uZmlnIENPTU1PTl9DTEtfTU1QMlxcbmRyaXZlcnMvY2xrL0tjb25maWctNDUyLVxcdGRlZl9ib29sIENPTU1PTl9DTEsgXFx1MDAyNlxcdTAwMjYgKE1BQ0hfTU1QMl9EVCB8fCBNQUNIX01NUDNfRFQpXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ1NS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ1Njpjb25maWcgQ09NTU9OX0NMS19NTVAyX0FVRElPXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NTctICAgICAgICB0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNTVAyIEF1ZGlvIHN1YnN5c3RlbVxcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctNDYxLVxcbmRyaXZlcnMvY2xrL0tjb25maWc6NDYyOmNvbmZpZyBDT01NT05fQ0xLX0JENzE4WFhcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ2My1cXHR0cmlzdGF0ZSBcXFwiQ2xvY2sgZHJpdmVyIGZvciAzMksgY2xrIGdhdGVzIG9uIFJPSE0gUE1JQ3NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ2OC1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ2OTpjb25maWcgQ09NTU9OX0NMS19GSVhFRF9NTUlPXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00NzAtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciBNZW1vcnkgTWFwcGVkIEZpeGVkIHZhbHVlc1xcXCJcXG4tLVxcbmRyaXZlcnMvY2xrL0tjb25maWctNDc1LVxcbmRyaXZlcnMvY2xrL0tjb25maWc6NDc2OmNvbmZpZyBDT01NT05fQ0xLX0syMTBcXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ3Ny1cXHRib29sIFxcXCJDbG9jayBkcml2ZXIgZm9yIHRoZSBDYW5hYW4gS2VuZHJ5dGUgSzIxMCBTb0NcXFwiXFxuLS1cXG5kcml2ZXJzL2Nsay9LY29uZmlnLTQ4Mi1cXG5kcml2ZXJzL2Nsay9LY29uZmlnOjQ4Mzpjb25maWcgQ09NTU9OX0NMS19LMjMwXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00ODQtXFx0Ym9vbCBcXFwiQ2xvY2sgZHJpdmVyIGZvciB0aGUgQ2FuYWFuIEtlbmRyeXRlIEsyMzAgU29DXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00ODgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0ODk6Y29uZmlnIENPTU1PTl9DTEtfU1A3MDIxXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00OTAtXFx0dHJpc3RhdGUgXFxcIkNsb2NrIGRyaXZlciBmb3IgU3VucGx1cyBTUDcwMjEgU29DXFxcIlxcbi0tXFxuZHJpdmVycy9jbGsvS2NvbmZpZy00OTgtXFxuZHJpdmVycy9jbGsvS2NvbmZpZzo0OTk6Y29uZmlnIENPTU1PTl9DTEtfUlBNSVxcbmRyaXZlcnMvY2xrL0tjb25maWctNTAwLVxcdHRyaXN0YXRlIFxcXCJDbG9jayBkcml2ZXIgYmFzZWQgb24gUklTQy1WIFJQTUlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjAwOjE5LjQ3MDg3MDcxNVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTI0Mjk2MjUzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE1BQ0IgYW5kIENPTU1PTl9DTEsgb24geDg2KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgYENPTU1PTl9DTEtgIGNvbmZpZy4gSXQncyBwcmV0dHkgZ2VuZXJpYywgcmlnaHQ/IEknZCBleHBlY3QgaXQgdG8gYmUgZW5hYmxlZCBvbiBhIGxvdCBvZiBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcy4gTm93LCB0aGUgaXNzdWUgYXQgaGFuZDogYE1BQ0JgIGhhcyBhIGRlcGVuZGVuY3kgb24gYm90aCBgSEFTX0RNQWAgYW5kIGBDT01NT05fQ0xLYC4gVGhhdCdzIGEga2V5IGRldGFpbC4gVGhpcyBtZWFucyB0aGF0IGlmIGBDT01NT05fQ0xLYCAqaXNuJ3QqIGVuYWJsZWQgb24geDg2LCB0aGVuIEkgd29uJ3QgYmUgYWJsZSB0byBlbmFibGUgYE1BQ0JgIG9uIHg4Ni5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBDT01NT05fQ0xLYCBpcyBhY3R1YWxseSBlbmFibGVkIGZvciB4ODYuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBpdCAqc2hvdWxkKiBiZSBlbmFibGVkIGluIG1vc3Qgc3RhbmRhcmQgeDg2IGNvbmZpZ3VyYXRpb25zIGJlY2F1c2UgYSBsb3Qgb2YgZHJpdmVycyB0ZW5kIHRvIHJlbHkgb24gaXQuIEJ1dCBJIGNhbid0IGp1c3QgYXNzdW1lOyBJIG5lZWQgdG8gdmVyaWZ5LlxuXG5UaGVyZWZvcmUsIHRoZSBtb3N0IGRpcmVjdCBhcHByb2FjaCBpcyB0byBjb25zdWx0IHRoZSBjb25maWd1cmF0aW9uIGZpbGU6IGBhcmNoL3g4Ni9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBsb29rIGZvciB0aGUgZGVmaW5pdGlvbiBhbmQgcG90ZW50aWFsIGVuYWJsZW1lbnQgb2YgYENPTU1PTl9DTEtgIHdpdGhpbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjM3OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDowMDo0NC43MTM4MzYzMjRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNDE1NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTU1PTl9DTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9LY29uZmlnPTY4MD1jb25maWcgWDg2X0lOVEVMX1FVQVJLXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTY4OS1cXHRzZWxlY3QgSU5URUxfSU1SXFxuYXJjaC94ODYvS2NvbmZpZzo2OTA6XFx0c2VsZWN0IENPTU1PTl9DTEtcXG5hcmNoL3g4Ni9LY29uZmlnLTY5MS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTY5Nj1jb25maWcgWDg2X0lOVEVMX0xQU1NcXG4tLVxcbmFyY2gveDg2L0tjb25maWctNjk4LVxcdGRlcGVuZHMgb24gWDg2IFxcdTAwMjZcXHUwMDI2IEFDUEkgXFx1MDAyNlxcdTAwMjYgUENJXFxuYXJjaC94ODYvS2NvbmZpZzo2OTk6XFx0c2VsZWN0IENPTU1PTl9DTEtcXG5hcmNoL3g4Ni9LY29uZmlnLTcwMC1cXHRzZWxlY3QgUElOQ1RSTFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz03MDg9Y29uZmlnIFg4Nl9BTURfUExBVEZPUk1fREVWSUNFXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTcxMC1cXHRkZXBlbmRzIG9uIEFDUElcXG5hcmNoL3g4Ni9LY29uZmlnOjcxMTpcXHRzZWxlY3QgQ09NTU9OX0NMS1xcbmFyY2gveDg2L0tjb25maWctNzEyLVxcdHNlbGVjdCBQSU5DVFJMXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTcxNS1cXHQgIHN1Y2ggYXMgSTJDLCBVQVJULCBHUElPIGZvdW5kIG9uIEFNRCBDYXJyaXpvIGFuZCBsYXRlciBjaGlwc2V0cy5cXG5hcmNoL3g4Ni9LY29uZmlnOjcxNjpcXHQgIEkyQyBhbmQgVUFSVCBkZXBlbmQgb24gQ09NTU9OX0NMSyB0byBzZXQgY2xvY2suIEdQSU8gZHJpdmVyIGlzXFxuYXJjaC94ODYvS2NvbmZpZy03MTctXFx0ICBpbXBsZW1lbnRlZCB1bmRlciBQSU5DVFJMIHN1YnN5c3RlbS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6MDA6NDQuNzU2MjU4MDk1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDA4MDAwMTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIENhZGVuY2UgTUFDQiBEcml2ZXIgd2l0aCAxMDAwQkFTRVggU3VwcG9ydCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmb3IgYSBmdXp6aW5nIHBsYW4uIFRoZSBgQ09NTU9OX0NMS2AgaXMgYXZhaWxhYmxlLCB3aGljaCBpcyBleHBlY3RlZCBvbiB0aGVzZSB4ODYgcGxhdGZvcm1zIHRoYW5rcyB0byBgWDg2X0lOVEVMX0xQU1NgIGFuZCBgWDg2X0FNRF9QTEFURk9STV9ERVZJQ0VgLiBTbywgd2UncmUgZ29vZCB0aGVyZS5cblxuTm93LCBsZXQncyBsb29rIGF0IHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBpbiB0aGUgY29uZmlnLiBXZSd2ZSBnb3QgYE5FVF9WRU5ET1JfQ0FERU5DRWAsIGBNQUNCYCwgYW5kIGBNQUNCX1BDSWAuIEFueSBvdGhlciBkZXBlbmRlbmNpZXM/IEhtbSwgYE1BQ0JgIHB1bGxzIGluIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGJ1dCB0aGF0J3MgdXN1YWxseSBub3QgYSBwcm9ibGVtLiBgTUFDQl9QQ0lgPyBJdHMgZGVwZW5kZW5jeSBpcyBgTUFDQiBcdTAwMjZcdTAwMjYgUENJYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIFNvIHRoZSB0aHJlZSBjb25maWdzIGFyZSB0aGUgcmlnaHQgY2hvaWNlcy5cblxuTm93LCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIHBhdGNoIGl0c2VsZiBhbmQgdGhlIGZ1bmN0aW9ucyBpdCB0b3VjaGVzLiBXZSdyZSBsb29raW5nIGF0IG1vZGlmaWNhdGlvbnMgdG8gYG1hY2JfcGNzX2FuX3Jlc3RhcnRgLCBgbWFjYl9tYWNfY29uZmlnYCwgYG1hY2JfbWFjX3NlbGVjdF9wY3NgLCBgbWFjYl9taWlfcHJvYmVgLCBhbmQgYG1hY2JfaW5pdF9kZmx0YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgZHVyaW5nIHRoZSBNQUNCIGRyaXZlcidzIHByb2JlIHNlcXVlbmNlIGFuZCB3aGVuIHBoeWxpbmsgY29uZmlndXJlcyB0aGUgbGluay4gU2luY2Ugd2UgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyB1c2luZyBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIsIHdlIGNhbiB0cmlnZ2VyIHRoZSBkcml2ZXIncyBwcm9iZSwgYW5kIHRoZW4gaW50ZXJhY3Qgd2l0aCB0aGUgbmV0IGRldmljZS4gV2UgY2FuIHJlYWNoIHRoZXNlIGZ1bmN0aW9ucyFcblxuVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVhgIGFuZCwgaW1wb3J0YW50bHksIG1vZGlmaWVzIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCB0byBhY3R1YWxseSByZXN0YXJ0IGF1dG9uZWdvdGlhdGlvbiBieSB3cml0aW5nIHRvIHRoZSBgUENTQ05UUkxgIHJlZ2lzdGVyLiBUaGlzIGlzIHdoZXJlIHdlIHdhbnQgdG8gZm9jdXMuIFRoaXMgaXMgZnVuY3Rpb25hbCBsb2dpYywgYW5kIGl0J3MgcmlwZSBmb3IgZnV6emluZy5cblxuQWxyaWdodCwgdGltZSB0byBmaW5hbGl6ZSB0aGUgc3RyYXRlZ3k6XG5cbmBXb3J0aEZ1enppbmc6IHRydWVgIC0gQWJzb2x1dGVseS5cblxuYEZvY3VzU3ltYm9sc2A6IFdlJ2xsIGZvY3VzIGZ1enppbmcgb24gdGhlIGNvcmUgZnVuY3Rpb25zIG1lbnRpb25lZDpcbiogICBgbWFjYl9wcm9iZWBcbiogICBgbWFjYl9wY3NfYW5fcmVzdGFydGBcbiogICBgbWFjYl9tYWNfY29uZmlnYFxuKiAgIGBtYWNiX21hY19zZWxlY3RfcGNzYFxuKiAgIGBtYWNiX21paV9wcm9iZWBcbiogICBgbWFjYl9pbml0X2RmbHRgXG5cbmBFbmFibGVDb25maWdzYDpcbiogICBgTkVUX1ZFTkRPUl9DQURFTkNFYFxuKiAgIGBNQUNCYFxuKiAgIGBNQUNCX1BDSWBcblxuYFJlYXNvbmluZ2A6IFRoZSBwYXRjaCBhZGRzIDEwMDBCQVNFWCBQSFkgc3VwcG9ydCB0byB0aGUgQ2FkZW5jZSBNQUNCIGV0aGVybmV0IGRyaXZlciBhbmQgaW1wbGVtZW50cyB0aGUgYG1hY2JfcGNzX2FuX3Jlc3RhcnRgIHBoeWxpbmsgY2FsbGJhY2suIFRoZSBQQ0kgd3JhcHBlciBtYWtlcyB0aGlzIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgbWFuYWdlbWVudC4gTGV0J3Mgc2VuZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxNDYsIk91dHB1dFRva2VucyI6MTg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjAwOjU1Ljc2NDI2MTI5OVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MDY3ODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfVkVORE9SX0NBREVOQ0VcIixcbiAgICBcIk1BQ0JcIixcbiAgICBcIk1BQ0JfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjYl9wcm9iZVwiLFxuICAgIFwibWFjYl9wY3NfYW5fcmVzdGFydFwiLFxuICAgIFwibWFjYl9tYWNfY29uZmlnXCIsXG4gICAgXCJtYWNiX21hY19zZWxlY3RfcGNzXCIsXG4gICAgXCJtYWNiX21paV9wcm9iZVwiLFxuICAgIFwibWFjYl9pbml0X2RmbHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ2FkZW5jZSBNQUNCIGV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggYW5kIGltcGxlbWVudHMgdGhlIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCBwaHlsaW5rIGNhbGxiYWNrLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIHdyYXBwZXIgKGBtYWNiX3BjaS5jYCksIG1ha2luZyBpdCByZWFjaGFibGUgZm9yIGZ1enppbmcuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgaGFuZGxlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgbWFuYWdlbWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfVkVORE9SX0NBREVOQ0VcIixcbiAgICBcIk1BQ0JcIixcbiAgICBcIk1BQ0JfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjYl9wcm9iZVwiLFxuICAgIFwibWFjYl9wY3NfYW5fcmVzdGFydFwiLFxuICAgIFwibWFjYl9tYWNfY29uZmlnXCIsXG4gICAgXCJtYWNiX21hY19zZWxlY3RfcGNzXCIsXG4gICAgXCJtYWNiX21paV9wcm9iZVwiLFxuICAgIFwibWFjYl9pbml0X2RmbHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ2FkZW5jZSBNQUNCIGV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVggYW5kIGltcGxlbWVudHMgdGhlIGBtYWNiX3Bjc19hbl9yZXN0YXJ0YCBwaHlsaW5rIGNhbGxiYWNrLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIHdyYXBwZXIgKGBtYWNiX3BjaS5jYCksIG1ha2luZyBpdCByZWFjaGFibGUgZm9yIGZ1enppbmcuIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgaGFuZGxlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgbWFuYWdlbWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjp5hb[1] Phase: Succeeded StartedAt: 2026-07-31 04:01:07 +0000 UTC FinishedAt: 2026-07-31 04:01:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 04:01:07 +0000 UTC FinishedAt: 2026-07-31 04:01:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2] Phase: Succeeded StartedAt: 2026-07-31 04:01:07 +0000 UTC FinishedAt: 2026-07-31 05:29:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 04:01:07 +0000 UTC FinishedAt: 2026-07-31 05:29:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 04:01:07 +0000 UTC FinishedAt: 2026-07-31 04:01:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 04:01:07 +0000 UTC FinishedAt: 2026-07-31 04:01:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjp5hb/series-workflowjp5hb-convert-artifact-4045548028/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 04:01:17 +0000 UTC FinishedAt: 2026-07-31 04:17:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 04:01:17 +0000 UTC FinishedAt: 2026-07-31 04:17:11 +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:*0e68b485-6b03-4b32-8a31-9f209070f520,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-workflowjp5hb/series-workflowjp5hb-convert-artifact-4045548028/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": "61bee31f-e781-4f8c-9b82-a8321e7618b7", "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-workflowjp5hb/series-workflowjp5hb-build-action-1942889770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 04:01:17 +0000 UTC FinishedAt: 2026-07-31 04:17:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0e68b485-6b03-4b32-8a31-9f209070f520,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-workflowjp5hb/series-workflowjp5hb-convert-artifact-4045548028/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": "61bee31f-e781-4f8c-9b82-a8321e7618b7", "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-workflowjp5hb/series-workflowjp5hb-build-action-1942889770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 04:17:11 +0000 UTC FinishedAt: 2026-07-31 04:17:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 04:17:11 +0000 UTC FinishedAt: 2026-07-31 04:17:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 04:17:11 +0000 UTC FinishedAt: 2026-07-31 04:17:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 04:17:11 +0000 UTC FinishedAt: 2026-07-31 04:17:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjp5hb/series-workflowjp5hb-convert-artifact-370230075/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 04:17:21 +0000 UTC FinishedAt: 2026-07-31 04:19:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 04:17:21 +0000 UTC FinishedAt: 2026-07-31 04:19:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*61bee31f-e781-4f8c-9b82-a8321e7618b7,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-workflowjp5hb/series-workflowjp5hb-build-action-1942889770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 04:19:13 +0000 UTC FinishedAt: 2026-07-31 04:19:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 04:19:13 +0000 UTC FinishedAt: 2026-07-31 04:19:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 04:19:13 +0000 UTC FinishedAt: 2026-07-31 04:38:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 04:19:13 +0000 UTC FinishedAt: 2026-07-31 04:38:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0e68b485-6b03-4b32-8a31-9f209070f520,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-workflowjp5hb/series-workflowjp5hb-convert-artifact-370230075/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": "c56eb69b-9ce3-4ee1-8f4b-1cc8e787e648", "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-workflowjp5hb/series-workflowjp5hb-build-action-3978935903/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 04:19:13 +0000 UTC FinishedAt: 2026-07-31 04:37:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0e68b485-6b03-4b32-8a31-9f209070f520,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-workflowjp5hb/series-workflowjp5hb-convert-artifact-370230075/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": "c56eb69b-9ce3-4ee1-8f4b-1cc8e787e648", "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-workflowjp5hb/series-workflowjp5hb-build-action-3978935903/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 04:38:07 +0000 UTC FinishedAt: 2026-07-31 04:38:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 04:38:07 +0000 UTC FinishedAt: 2026-07-31 04:38:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 04:38:07 +0000 UTC FinishedAt: 2026-07-31 04:40:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 04:38:07 +0000 UTC FinishedAt: 2026-07-31 04:39:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c56eb69b-9ce3-4ee1-8f4b-1cc8e787e648,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjp5hb/series-workflowjp5hb-build-action-3978935903/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 04:40:01 +0000 UTC FinishedAt: 2026-07-31 05:29:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 04:40:01 +0000 UTC FinishedAt: 2026-07-31 05:29:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*61bee31f-e781-4f8c-9b82-a8321e7618b7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c56eb69b-9ce3-4ee1-8f4b-1cc8e787e648,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjp5hb/series-workflowjp5hb-build-action-1942889770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjp5hb/series-workflowjp5hb-build-action-3978935903/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 04:40:01 +0000 UTC FinishedAt: 2026-07-31 04:40:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 04:40:01 +0000 UTC FinishedAt: 2026-07-31 04:40:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjp5hb/series-workflowjp5hb-convert-artifact-3556945204/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 04:40:01 +0000 UTC FinishedAt: 2026-07-31 04:40:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 04:40:01 +0000 UTC FinishedAt: 2026-07-31 04:40:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 04:40:01 +0000 UTC FinishedAt: 2026-07-31 04:40:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 04:40:24 +0000 UTC FinishedAt: 2026-07-31 05:29:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjp5hb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macb_probe","macb_pcs_an_restart","macb_mac_config","macb_mac_select_pcs","macb_mii_probe","macb_init_dflt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8e4d7d120734936cb961d9dc46b788e0487d3256","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_VENDOR_CADENCE","MACB","MACB_PCI"],"series_id":"3fd51bf2-efe9-4ae2-8197-fbb4aaa28202","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 04:40:24 +0000 UTC FinishedAt: 2026-07-31 05:29:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*61bee31f-e781-4f8c-9b82-a8321e7618b7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c56eb69b-9ce3-4ee1-8f4b-1cc8e787e648,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjp5hb/series-workflowjp5hb-build-action-1942889770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjp5hb/series-workflowjp5hb-build-action-3978935903/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjp5hb/series-workflowjp5hb-convert-artifact-3556945204/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}