Name: series-workflow6c4dh Phase: Succeeded StartedAt: 2026-07-26 00:04:38 +0000 UTC FinishedAt: 2026-07-26 02:58:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[0] Phase: Succeeded StartedAt: 2026-07-26 00:04:38 +0000 UTC FinishedAt: 2026-07-26 00:52:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 00:04:38 +0000 UTC FinishedAt: 2026-07-26 00:52:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_REALTEK", "CFG80211", "MAC80211", "RTL8180", "RTL8187", "USB", "PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_REALTEK", "CFG80211", "MAC80211", "RTL8180", "RTL8187", "USB", "PCI" ], "series_id": "58040f84-9dde-4c57-a0e6-0f13d5caedc1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtl8180_probe", "rtl8187_probe" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfUkVBTFRFSyYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtSVEw4MTgwJiMzNDssCiAgICAmIzM0O1JUTDgxODcmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bDgxODBfcHJvYmUmIzM0OywKICAgICYjMzQ7cnRsODE4N19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlIGJ5IHplcm8taW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbWAgaW4gdGhlIHByb2JlIHBhdGhzIG9mIHRoZSBydGw4MTgwIChQQ0kpIGFuZCBydGw4MTg3IChVU0IpIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBVU0IgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15X2hjZCwgYW5kIHRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMWRkMWFmOTkwOGFmNDFmZTYyOWExNmZjMmFmYWUwYWVjOWVjMmJjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDA6NTA6NTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuY1xuaW5kZXggMDcwYzA0MzFjNDgyMWMuLjRhNTk4OTE3MmE1ZTNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jXG5AQCAtMTY1Miw3ICYjNDM7MTY1Miw3IEBAIHN0YXRpYyB2b2lkIHJ0bDgxODBfZWVwcm9tX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBlZXByb21fOTNjeDYgKmVlcHJvbSlcbiBcbiBzdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWFkKHN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYpXG4ge1xuLVx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XG4mIzQzO1x0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcbiBcdGludCBlZXByb21fY2NrX3RhYmxlX2FkcjtcbiBcdHUxNiBlZXByb21fdmFsO1xuIFx0aW50IGk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuY1xuaW5kZXggMWQyMWM0NjhhMjM2ODUuLmE3NjY3MTIxODdmNzdjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jXG5AQCAtMTQ0NSw3ICYjNDM7MTQ0NSw3IEBAIHN0YXRpYyBpbnQgcnRsODE4N19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbiBcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRmKTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldjtcbiBcdHN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXY7XG4tXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcbiYjNDM7XHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsO1xuIFx0Y29uc3QgY2hhciAqY2hpcF9uYW1lO1xuIFx0dTE2IHR4cHdyLCByZWc7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfUkVBTFRFSyYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtSVEw4MTgwJiMzNDssCiAgICAmIzM0O1JUTDgxODcmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bDgxODBfcHJvYmUmIzM0OywKICAgICYjMzQ7cnRsODE4N19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlIGJ5IHplcm8taW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbWAgaW4gdGhlIHByb2JlIHBhdGhzIG9mIHRoZSBydGw4MTgwIChQQ0kpIGFuZCBydGw4MTg3IChVU0IpIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBVU0IgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15X2hjZCwgYW5kIHRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwMWRkMWFmOTkwOGFmNDFmZTYyOWExNmZjMmFmYWUwYWVjOWVjMmJjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMjYgMDA6NTA6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jCmluZGV4IDA3MGMwNDMxYzQ4MjFjLi40YTU5ODkxNzJhNWUzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMKQEAgLTE2NTIsNyAmIzQzOzE2NTIsNyBAQCBzdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWdpc3Rlcl93cml0ZShzdHJ1Y3QgZWVwcm9tXzkzY3g2ICplZXByb20pCiAKIHN0YXRpYyB2b2lkIHJ0bDgxODBfZWVwcm9tX3JlYWQoc3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdikKIHsKLQlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTsKJiM0MzsJc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTsKIAlpbnQgZWVwcm9tX2Nja190YWJsZV9hZHI7CiAJdTE2IGVlcHJvbV92YWw7CiAJaW50IGk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jCmluZGV4IDFkMjFjNDY4YTIzNjg1Li5hNzY2NzEyMTg3Zjc3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmMKQEAgLTE0NDUsNyAmIzQzOzE0NDUsNyBAQCBzdGF0aWMgaW50IHJ0bDgxODdfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAJc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpOwogCXN0cnVjdCBpZWVlODAyMTFfaHcgKmRldjsKIAlzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2OwotCXN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tOwomIzQzOwlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9OwogCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbDsKIAljb25zdCBjaGFyICpjaGlwX25hbWU7CiAJdTE2IHR4cHdyLCByZWc7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MzEKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5pbml0aWFsaXplZCBWYXJpYWJsZSBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgaW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O2AgaW4gYSBjb3VwbGUgb2YgcGxhY2VzOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNgICh3aXRoaW4gYHJ0bDgxODBfZWVwcm9tX3JlYWRgKSBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jYCAoaW4gYHJ0bDgxODdfcHJvYmVgKS4gIFNvdW5kcyBsaWtlIGEgY2xhc3NpYyB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGZpeC4gIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGFyZWFzIGFyZSBldmVuIHJlYWNoYWJsZSwgcmlnaHQ/IFRoZSBwb3RlbnRpYWwgaW1wYWN0IGRlcGVuZHMgb24gaG93IGxpa2VseSB0aGlzIGNvZGUgaXMgdG8gYmUgZXhlY3V0ZWQuCgpgcnRsODE4MGAgaXMgYSBQQ0kgZHJpdmVyLCB3aGljaCBpcyBsZXNzIGxpa2VseSB0byBiZSBmdXp6ZWQgaW4gbXkgZXhwZXJpZW5jZS4gIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MgZXhpc3QsIGJ1dCBhcmVuJiMzOTt0IGFzIGNvbW1vbiBhcyB0aG9zZSBmb3IgVVNCLgoKYHJ0bDgxODdgLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgYSBVU0IgZHJpdmVyLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLiBVU0IgZHJpdmVycyBhcmUgKmRlZmluaXRlbHkqIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcg4oCTIHRvb2xzIGxpa2UgYGR1bW15X2hjZGAgYW5kIG90aGVyIFVTQiBmdXp6aW5nIGZyYW1ld29ya3MgYXJlIGZyZXF1ZW50bHkgdXNlZCBvbiB0aGVzZS4gSXQmIzM5O3MgYSBtdWNoIG1vcmUgc3RyYWlnaHRmb3J3YXJkIHBhdGggdG8gcmVhY2ggdGhvc2UgZnVuY3Rpb25zLiBUaGUgcGF0Y2ggaXMgcHJvYmFibHkgdmVyeSBpbXBvcnRhbnQgaWYgYHJ0bDgxODdgIGlzIGVuYWJsZWQuCgpJIHJlYWxseSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZXNlIGRyaXZlcnMgYXJlIGJ1aWx0IHdpdGggdGhlIGtlcm5lbC4gVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyB0byBzZWUgaWYgdGhlIG1vZHVsZXMgYXJlIGV2ZW4gZW5hYmxlZCwgb3IgYXJlIGJ1aWx0IGFzIG1vZHVsZXMgaW4gdGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODE4MF9lZXByb21fcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE2MzQ9c3RhdGljIHZvaWQgcnRsODE4MF9lZXByb21fcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE2NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYzoxNjUzOnN0YXRpYyB2b2lkIHJ0bDgxODBfZWVwcm9tX3JlYWQoc3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE2NTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE3MzA9c3RhdGljIGludCBydGw4MTgwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE4ODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYzoxODg5Olx0cnRsODE4MF9lZXByb21fcmVhZChwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE4OTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM3MQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRob3NlIGxpbmVzLCBhcyBJIHVuZGVyc3RhbmQgdGhlIHNpdHVhdGlvbjoKCioqUHJvYmluZyB0aGUgUlRMODE4WCBDaGlwc2V0KioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGRyaXZlciBpbml0aWFsaXphdGlvbiBmb3IgYSBSZWFsdGVrIDgxODAvODE4NyBzZXJpZXMgY2hpcHNldC4gRnJvbSB3aGF0IEkgc2VlLCBgcnRsODE4MF9lZXByb21fcmVhZGAgaXMgdHJpZ2dlcmVkIGR1cmluZyB0aGUgYHJ0bDgxODBfcHJvYmVgIHByb2Nlc3MuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCByZWFkaW5nIHRoZSBFRVBST00gaXMgYSBjcnVjaWFsIHN0ZXAgaW4gYnJpbmdpbmcgdXAgdGhlIDgxODAgdmFyaWFudCBvZiB0aGUgY2hpcHNldC4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBBbmQsIG9mIGNvdXJzZSwgYHJ0bDgxODdfcHJvYmVgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIDgxODcgdmFyaWFudCwgY29uZmlybWluZyBhIHNlcGFyYXRlIHByb2JlIGZ1bmN0aW9uIGV4aXN0cyBmb3IgaXQuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIHNwbGl0LCBnaXZlbiB0aGUgcG90ZW50aWFsIGhhcmR3YXJlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIDgxODAgYW5kIDgxODcuCgpHaXZlbiB0aGVzZSB0d28gZnVuY3Rpb25zIGFyZSBjbG9zZWx5IGFzc29jaWF0ZWQgd2l0aCBkaWZmZXJlbnQgZGV2aWNlcywgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBydGw4MTh4YC4gVGhpcyB3aWxsIHRlbGwgbWUgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lIGFuZCByZXZlYWwgYW55IGRlcGVuZGVuY2llcy4gS25vd2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIHZpdGFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZHJpdmVyIGlzIHN0cnVjdHVyZWQgYW5kIGhvdyBkaWZmZXJlbnQgaGFyZHdhcmUgdmFyaWF0aW9ucyBhcmUgaGFuZGxlZC4gSSBuZWVkIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBtaWdodCBhbGxvdy9kaXNhYmxlIGBydGw4MTgwX3Byb2JlYCBhbmQgYHJ0bDgxODdfcHJvYmVgIGFuZCB1bmRlcnN0YW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB0aGUgb3ZlcmFsbCBkcml2ZXIgYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUTDgxOCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTQtI1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWc6NTpjb25maWcgUlRMODE4MFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODE4MC84MTg1LzgxODdTRSBQQ0kgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWc6NjE6Y29uZmlnIFJUTDgxODdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTYyLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MTg3IGFuZCA4MTg3QiBVU0Igc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWc6ODU6Y29uZmlnIFJUTDgxODdfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctODYtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA0OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogRHJpdmVyIExhbmRzY2FwZSoqCgpSaWdodCwgc28gdGhlIGtleSBjb25maWd1cmF0aW9ucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUgYXJlIGBSVEw4MTgwYCBhbmQgYFJUTDgxODdgLiBJbW1lZGlhdGVseSwgSSBzZWUgYSBkaXN0aW5jdGlvbi4gVGhlIGBSVEw4MTg3YCBpcyBhIFVTQiBkcml2ZXIsIHdoaWNoIGluc3RhbnRseSBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVVNCIGRyaXZlcnMsIGluIG15IGV4cGVyaWVuY2UsIG9mdGVuIHByZXNlbnQgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2VzLiBUaGUgYFJUTDgxODBgLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgUENJLWJhc2VkLiBUaGF0IGludHJvZHVjZXMgYSBkaWZmZXJlbnQgc2V0IG9mIGNvbnNpZGVyYXRpb25zLCBhIGRpZmZlcmVudCBhdHRhY2sgdmVjdG9yIGFsdG9nZXRoZXIuIEdpdmVuIG15IGZvY3VzIGlzIGdlbmVyYWxseSBvbiBmdXp6aW5nIGFuZCB0YXJnZXRlZCB2dWxuZXJhYmlsaXR5IHJlc2VhcmNoLCB0aGUgVVNCIGRyaXZlciBkZWZpbml0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdCB0aGUgbW9zdCByaWdodCBub3cuCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgYFJUTDgxODdgIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBvdGhlciBtb2R1bGVzIGRvZXMgaXQgcmVseSBvbj8gV2hhdCBpbnRlcmZhY2VzIGRvZXMgaXQgZXhwb3NlPyBUaGlzIHdpbGwgZ3VpZGUgbXkgZnV6emluZyBlZmZvcnRzIGFuZCBoZWxwIG1lIGlkZW50aWZ5IHRoZSBtb3N0IHByb21pc2luZyBlbnRyeSBwb2ludHMuIFVuZGVyc3RhbmRpbmcgdGhlIGVjb3N5c3RlbSBpdCBvcGVyYXRlcyBpbiBpcyBjcnVjaWFsIGZvciBzdWNjZXNzZnVsIHZ1bG5lcmFiaWxpdHkgZGlzY292ZXJ5LiBUaW1lIHRvIGRpZyBpbnRvIHRob3NlIGRlcGVuZGVuY2llcyBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUTDgxODcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZz01PWNvbmZpZyBSVEw4MTgwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZzo2MTpjb25maWcgUlRMODE4N1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctNjItXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgxODcgYW5kIDgxODdCIFVTQiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZzo4NTpjb25maWcgUlRMODE4N19MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZy04Ni1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjI0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBSVEw4MTg3KioKCkFscmlnaHQsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0JlZm9yZSBJIHByb2NlZWQsIEkgKm5lZWQqIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMgb2YgYFJUTDgxODdgLiYjMzQ7IEkmIzM5O20gbm90IGdvaW5nIHRvIHJ1c2ggaW50byBhbnl0aGluZyB3aXRob3V0IGtub3dpbmcgd2hhdCBpdCYjMzk7cyBjb25uZWN0ZWQgdG8uIFdoZXRoZXIgSSYjMzk7bSBsb29raW5nIGF0IGEgaGFyZHdhcmUgZGVzaWduLCBhIHNvZnR3YXJlIGRyaXZlciwgYSBzcGVjaWZpYyBjaGlwLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseSwgdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIHBhcmFtb3VudC4gV2hhdCBvdGhlciBjb21wb25lbnRzIG9yIG1vZHVsZXMgcmVseSBvbiBgUlRMODE4N2A/IFdoYXQgZG9lcyBpdCBkZXBlbmQgb24gaW4gcmV0dXJuPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSBjb21wb25lbnQsIG9yIHNvbWV0aGluZyBtb3JlIGludGVydHdpbmVkIGFuZCBjb21wbGV4PyBUaGUgbmF0dXJlIG9mIHRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIGNvbXBsZXRlbHkgc2hhcGUgaG93IEkgYXBwcm9hY2ggdGhlIG5leHQgc3RlcCwgc28gSSBoYXZlIHRvIGFzY2VydGFpbiB0aGVtIGFzIGEgcHJpb3JpdHkuIFRoaXMgaXMgZXNzZW50aWFsIGZvciBwcm9wZXIgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDYxOlx0Y29uZmlnIFJUTDgxODdcbiAgNjI6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODE4NyBhbmQgODE4N0IgVVNCIHN1cHBvcnRcJiMzNDtcbiAgNjM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IFVTQlxuICA2NDpcdFx0c2VsZWN0IEVFUFJPTV85M0NYNlxuICA2NTpcdFx0aGVscFxuICA2NjpcdFx0ICBUaGlzIGlzIGEgZHJpdmVyIGZvciBSVEw4MTg3IGFuZCBSVEw4MTg3QiBiYXNlZCBjYXJkcy5cbiAgNjc6XHRcdCAgVGhlc2UgYXJlIFVTQiBiYXNlZCBjaGlwcyBmb3VuZCBpbiBkZXZpY2VzIHN1Y2ggYXM6XG4gIDY4Olx0XG4gIDY5Olx0XHQgIE5ldGdlYXIgV0cxMTF2MlxuICA3MDpcdFx0ICBMZXZlbCAxIFdOQy0wMzAxVVNCXG4gIDcxOlx0XHQgIE1pY3JvbmV0IFNQOTA3R0sgVjVcbiAgNzI6XHRcdCAgRW5jb3JlIEVOVVdJLUcyXG4gIDczOlx0XHQgIFRyZW5kbmV0IFRFVy00MjRVQlxuICA3NDpcdFx0ICBBU1VTIFA1QiBEZWx1eGUvUDVLIFByZW1pdW0gbW90aGVyYm9hcmRzXG4gIDc1Olx0XHQgIFRvc2hpYmEgU2F0ZWxsaXRlIFBybyBzZXJpZXMgb2YgbGFwdG9wc1xuICA3NjpcdFx0ICBBc3VzIFdpcmVsZXNzIExpbmtcbiAgNzc6XHRcdCAgTGlua3N5cyBXVVNCNTRHQy1FVSB2MlxuICA3ODpcdFx0ICAgICh2MSA9IHJ0NzN1c2I7IHYzIGlzIHJ0MjA3MC1iYXNlZCxcbiAgNzk6XHRcdCAgICAgdXNlIHN0YWdpbmcvcnQzMDcwIG9yIHRyeSBydDI4MDB1c2IpXG4gIDgwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxOTgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGRlcGVuZGVuY2llcywgc3VtbWFyaXplZCBhcyBhIHRob3VnaHQgcHJvY2VzczoKCioqRGVwZW5kZW5jaWVzIGFuZCBEcml2ZXIgQ2hlY2sqKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBzZWVtcyB0byBpbnZvbHZlIGVpdGhlciAqTUFDODAyMTEqIG9yIHRoZSAqVVNCKiBzdWJzeXN0ZW0uIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhcyBpdCBpbW1lZGlhdGVseSBpZGVudGlmaWVzIHRoZSBjb3JlIGFyZWFzIEkgbmVlZCB0byBmb2N1cyBvbi4gVGhlIGRyaXZlciBpdHNlbGYgaXMgY2xlYXJseSAqUlRMODE4NyouCgpOb3csIGdpdmVuIHRoYXQgaXQmIzM5O3MgYW4gUlRMODE4NywgSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiBSVEw4MTgwIGhhcyBhbnkgcGFydGljdWxhciBkZXBlbmRlbmN5LCBvciBpZiB0aGVyZSYjMzk7cyBhbnkgaW1wb3J0YW50IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGl0IGFuZCBSVEw4MTg3LiBUaGlzIGlzIGxpa2VseSBqdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgYXNzdW1wdGlvbnMgb3Igb3ZlcmxhcHMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIHBvc3NpYmx5IHNvbWUgc291cmNlIGNvZGUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGF0IGRldmljZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgNTpcdGNvbmZpZyBSVEw4MTgwXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgxODAvODE4NS84MTg3U0UgUENJIHN1cHBvcnRcJiMzNDtcbiAgIDc6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IFBDSVxuICAgODpcdFx0c2VsZWN0IEVFUFJPTV85M0NYNlxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGlzIGlzIGEgZHJpdmVyIGZvciBSVEw4MTgwLCBSVEw4MTg1IGFuZCBSVEw4MTg3U0UgYmFzZWQgY2FyZHMuXG4gIDExOlx0XHQgIFRoZXNlIGFyZSBQQ0kgYmFzZWQgY2hpcHMgZm91bmQgaW4gY2FyZHMgc3VjaCBhczpcbiAgMTI6XHRcbiAgMTM6XHRcdCAgKFJUTDgxODUgODAyLjExZylcbiAgMTQ6XHRcdCAgQS1MaW5rIFdMNTRQQ1xuICAxNTpcdFxuICAxNjpcdFx0ICAoUlRMODE4MCA4MDIuMTFiKVxuICAxNzpcdFx0ICBCZWxraW4gRjVENjAyMCB2M1xuICAxODpcdFx0ICBCZWxraW4gRjVENjAyMCB2M1xuICAxOTpcdFx0ICBEbGluayBEV0wtNjEwXG4gIDIwOlx0XHQgIERsaW5rIERXTC01MTBcbiAgMjE6XHRcdCAgTmV0Z2VhciBNQTUyMVxuICAyMjpcdFx0ICBMZXZlbC1PbmUgV1BDLTAxMDFcbiAgMjM6XHRcdCAgQWNlciBBc3BpcmUgMTM1NyBMTWlcbiAgMjQ6XHRcdCAgVkNUbmV0IFBDLTExQjFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc5OAoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDUxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQcmlvcml0aXppbmcgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgbW9zdCBwcm9taXNpbmcgZnV6emluZyB0YXJnZXRzIGdpdmVuIHRoZSBwcm92aWRlZCBjb250ZXh0LiBJIHNlZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBgTUFDODAyMTFgIGFuZCBgUENJYCwgd2l0aCB0aGUgZHJpdmVycyBiZWluZyBgUlRMODE4MGAgKFBDSSkgYW5kIGBSVEw4MTg3YCAoVVNCKS4KCk15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGxlYW4gdG93YXJkcyBgUlRMODE4N2AgYmVjYXVzZSBpdCYjMzk7cyBhIFVTQiBkcml2ZXIuIFVTQiBkcml2ZXJzIGFyZSB0eXBpY2FsbHkgZWFzaWVyIHRvIGZ1enogdXNpbmcgZnJhbWV3b3JrcyBsaWtlIGBkdW1teV9oY2RgLCBhbmQgdGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIGBydGw4MTg3X3Byb2JlYCBhbmQgYHJ0bDgxODBfZWVwcm9tX3JlYWRgLiBUaGUgYWR2YW50YWdlIHdpdGggYHJ0bDgxODdfcHJvYmVgIGlzIHRoYXQgdGhpcyBpcyB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIHRoZSBVU0IgZHJpdmVyLiBgcnRsODE4MF9lZXByb21fcmVhZGAgaXMgY2FsbGVkIGZyb20gdGhlIHByb2JlIGZvciB0aGUgUENJIGRyaXZlci4gIFBDSSBkcml2ZXJzIGFyZSB0cmlja2llciBpbiBzdGFuZGFyZCBRRU1VOyB1bmxlc3MgdGhlcmUgaXMgYSBQQ0kgZnV6emluZyBmcmFtZXdvcmssIFVTQiBpcyB0aGUgb2J2aW91cyBjaG9pY2UuCgpUaGVuIEkgZ2V0IGEgcmVtaW5kZXIgZnJvbSB0aGUgcHJvbXB0OiBpdCYjMzk7cyBmb2N1c2luZyBvbiAqc3BlY2lmaWMqIFBDSWUgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUsIGxpa2UgZm9yIFBDSWUgc3dpdGNoIGFuZCBHUFUgZHJpdmVycy4gYFJUTDgxODBgIGlzIGp1c3QgYSBnZW5lcmljIHdpcmVsZXNzIFBDSSBkcml2ZXIsIHNvIHRoYXQgZG9lc24mIzM5O3QgYXBwbHkuIEkmIzM5O20gcmVjYWxsaW5nIHRoYXQgU3l6a2FsbGVyIGRvZXMgaGF2ZSAqc29tZSogUENJIGZ1enppbmcgY2FwYWJpbGl0eSB2aWEgYHN5el9wY2lfZGV2aWNlYCwgYnV0IFVTQiBpcyBkZWZpbml0ZWx5IGJldHRlciBzdXBwb3J0ZWQgd2l0aCBgc3l6X3VzYl9jb25uZWN0YC4KCkdpdmVuIGFsbCBvZiB0aGlzLCBsZXQmIzM5O3MgY29uZmlybSB0aGUgcHJvYmUgZnVuY3Rpb25zIGFyZSBnb29kIGNob2ljZXMuIEkgd2FudCB0byBtYWtlIHN1cmUgSSYjMzk7bSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGVudHJ5cG9pbnRzLiBgcnRsODE4N19wcm9iZWAgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciBVU0IsIGFuZCBgcnRsODE4MF9wcm9iZWAgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciBQQ0kuIE9rYXksIGdvb2QuCgpOb3csIGEgY3JpdGljYWwgdGhvdWdodDogdGhlIHByb21wdCBwcmVmZXJzIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBJIHNlZSB0aGF0IGBydGw4MTgwX2VlcHJvbV9yZWFkYCBpcyBzdGF0aWMuIFNpbmNlIGBydGw4MTgwX3Byb2JlYCBpcyBub24tc3RhdGljLCBJIHNob3VsZCBmb2N1cyBvbiBgcnRsODE4MF9wcm9iZWAuIFNhbWUgcXVlc3Rpb24gZm9yIHRoZSBVU0Igc2lkZTogYHJ0bDgxODdfcHJvYmVgIGlzIHN0YXRpYyB0b28/IExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODE4N19wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jPTE0MjM9c3RhdGljIHZvaWQgcnRsODE4N19lZXByb21fcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jLTE0NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYzoxNDQyOnN0YXRpYyBpbnQgcnRsODE4N19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jLTE0NDMtXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmM9MTY4OT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnRsODE4N19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmMtMTY5MS1cdC5pZF90YWJsZVx0PSBydGw4MTg3X3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmM6MTY5MjpcdC5wcm9iZVx0XHQ9IHJ0bDgxODdfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYy0xNjkzLVx0LmRpc2Nvbm5lY3RcdD0gcnRsODE4N19kaXNjb25uZWN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjMwCgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgYXMgYW4gZXhwZXJ0IGluIHRoaXMgYXJlYToKCioqQW5hbHl6aW5nIERyaXZlciBQcm9iZSBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIHByb2JlIGZ1bmN0aW9ucywgYHJ0bDgxODdfcHJvYmVgIGFuZCBgcnRsODE4MF9wcm9iZWAuIFRoZSBrZXkgcG9pbnQgaGVyZSBpcyB0aGF0IHRoZXkmIzM5O3JlIGJvdGggZGVjbGFyZWQgYHN0YXRpY2AsIGJ1dCB0aGV5JiMzOTtyZSBhY3RpbmcgYXMgdGhlIGAucHJvYmVgIGNhbGxiYWNrIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIFVTQiBhbmQgUENJIGRyaXZlcnMuIEkga25vdyBhIHN0YXRpYyBmdW5jdGlvbiBpcywgYnkgZGVmYXVsdCwgb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgY29tcGlsYXRpb24gdW5pdCBpdCYjMzk7cyBkZWZpbmVkIGluLiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IGBydGw4MTg3X3Byb2JlYCYjMzk7cyBhZGRyZXNzIGlzIHRha2VuLCBzcGVjaWZpY2FsbHksIHRoYXQgaXRzIGFkZHJlc3MgaXMgYmVpbmcgYXNzaWduZWQgYXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciBhIFVTQiBkcml2ZXIgbWVhbnMgaXQgKmlzKiBhIHZhbGlkIHN5bWJvbCBleHRlcm5hbGx5LCBldmVuIHRob3VnaCBpdCYjMzk7cyBgc3RhdGljYC4gVGhpcyBpcyBhIHZlcnkgY29tbW9uIHBhdHRlcm4gaW4gZHJpdmVyIGRldmVsb3BtZW50LCBhIHByb2JlIGNhbGxiYWNrIGlzIGFzc2lnbmVkLCBpdOKAmXMgbm90IGlubGluZWQgYmVjYXVzZSBpdCBuZWVkcyBhbiBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkIHNvIGl0IGJlY29tZXMgZXh0ZXJuYWxseSB2aXNpYmxlIGFuZCBjYW4gYmUgY2FsbGVkIGJ5IHRoZSBkcml2ZXIgY29yZS4gVGhlIGNvbXBpbGVyIGtub3dzIHRvIG1ha2UgaXQgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlLCBldmVuIHRob3VnaCBpdCBpcyBzdGF0aWNhbGx5IGRlY2xhcmVkLiBUaGlzIGlzIGFsc28gaG93IGl0IHdvcmtzIGZvciBgcnRsODE4MF9wcm9iZWAgYW5kIHRoZSBQQ0kgZHJpdmVyOyBubyBzdXJwcmlzZXMgdGhlcmUuIFRoaXMgaXMgYWxsIHN0YW5kYXJkIGRyaXZlciBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bDgxODBfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYz0xNjUzPXN0YXRpYyB2b2lkIHJ0bDgxODBfZWVwcm9tX3JlYWQoc3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xNzI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM6MTczMDpzdGF0aWMgaW50IHJ0bDgxODBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xNzMxLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE5ODM9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ0bDgxODBfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE5ODUtXHQuaWRfdGFibGVcdD0gcnRsODE4MF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jOjE5ODY6XHQucHJvYmVcdFx0PSBydGw4MTgwX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMtMTk4Ny1cdC5yZW1vdmVcdFx0PSBydGw4MTgwX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk4MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyAmYW1wOyBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLiBGaXJzdCBvZmYsIGl0JiMzOTtzIGNsZWFyIHRoZXNlIHR3byBmdW5jdGlvbnMgYXJlICpzdGF0aWNhbGx5KiBkZWZpbmVkLCBidXQgdGhlaXIgYWRkcmVzc2VzIGFyZSBiZWluZyB0YWtlbi4gVGhpcyBtZWFucyB0aGV5JiMzOTtyZSAqbm90KiBnb2luZyB0byBiZSBpbmxpbmVkIGFuZCBlYWNoIHdpbGwgaGF2ZSBpdHMgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzIOKAkyBnb29kIHRvIGtub3cgZm9yIGxhdGVyIGRlYnVnZ2luZy4KCkZ1bmN0aW9uYWxseSwgdGhlIHBhdGNoIG1ha2VzIGEgZGVmaW5pdGUgaW1wcm92ZW1lbnQuIEl0IGluaXRpYWxpemVzIGEgc3RydWN0dXJlIHRvIHplcm8sIHdoaWNoIGlzIGNyaXRpY2FsIGZvciBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoYXTigJlzIGEgY29tbW9uIHNvdXJjZSBvZiBidWdzIHdlIHNob3VsZCBiZSB0YXJnZXRpbmcgaW4gZnV6emluZy4KCkxvb2tpbmcgYXQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2VzLCBpdCYjMzk7cyBoaXR0aW5nIHJlYWNoYWJsZSBkcml2ZXJzIOKAkyBzcGVjaWZpY2FsbHkgVVNCIGFuZCBQQ0kuIFRoYXTigJlzIGEgc29saWQgaW5kaWNhdG9yIHRoaXMgaXMgc29tZXRoaW5nIHRvIHBheSBhdHRlbnRpb24gdG8uIEdpdmVuIHRoZSBpbXBhY3QsIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpOb3cgZm9yIHRoZSB0YXJnZXRlZCBzeW1ib2xzLiBUaGUgZm9jdXMgc3ltYm9scyBhcmU6IGBydGw4MTg3X3Byb2JlYCBhbmQgYHJ0bDgxODBfcHJvYmVgLiBSaWdodCwgc28gdGhpcyBpcyBhYm91dCBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlcnMsIGdvdCBpdC4KCkZvciBlbmFibGluZyBjb25maWd1cmF0aW9ucywgaXQgbGlzdHMgYFJUTDgxODBgLCBgUlRMODE4N2AsIGBNQUM4MDIxMWAsIGBVU0JgLCBhbmQgYFBDSWAuIEhhbmcgb24sIGBVU0JgIGFuZCBgUENJYCBhcmUgcHJvYmFibHkgYWxyZWFkeSBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gb3VyIHNldHVwLCBidXQgaXQgZG9lc24mIzM5O3QgaHVydCB0byBiZSBleHBsaWNpdCwgc28gSSYjMzk7bGwga2VlcCB0aGVtLiBgTUFDODAyMTFgIGlzIGFic29sdXRlbHkgZXNzZW50aWFsIGhlcmUsIG5vIHF1ZXN0aW9uIGFib3V0IGl0LgoKTGV0JiMzOTtzIGNoZWNrIGZvciBhbnkgKm90aGVyKiBkZXBlbmRlbmNpZXMuIEhtbSwgbG9va3MgbGlrZSBgUlRMODE4N2AgZGVwZW5kcyBvbiBgTUFDODAyMTEgJmFtcDsmYW1wOyBVU0JgLiBBbmQgYFJUTDgxODBgIGRlcGVuZHMgb24gYE1BQzgwMjExICZhbXA7JmFtcDsgUENJYC4gT2theSwgSSB3aWxsIGRvdWJsZSBjaGVjayB0aG9zZSBjb25maWd1cmF0aW9ucywganVzdCB0byBiZSBzdXJlIHdlIGFyZSBub3QgbWlzc2luZyBhbnkgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBMZXQgbWUgc2VlIGlmIGBNQUM4MDIxMWAgaGFzIGl0cyBvd24gZGVwZW5kZW5jaWVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODU1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZW06CgoqKk1BQzgwMjExIGFuZCBDRkc4MDIxMTogQSBEZXBlbmRlbmN5IHRvIFJlbWVtYmVyKioKClJpZ2h0LCBzbywgbGV0JiMzOTtzIGdldCB0aGlzIHN0cmFpZ2h0IGluIG15IGhlYWQuICpNQUM4MDIxMSouLi4gdGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgd2lyZWxlc3MgbmV0d29ya2luZyBzdGFjaywgaXNuJiMzOTt0IGl0PyBUaGUgb25lIHRoYXQgaGFuZGxlcyBhbGwgdGhlIG1lZGl1bSBhY2Nlc3MgY29udHJvbCwgZnJhbWUgbWFuYWdlbWVudCwgYW5kIGFsbCB0aGF0IGxvdy1sZXZlbCB3aXJlbGVzcyBzdHVmZi4gQW5kIHRoZW4gdGhlcmUmIzM5O3MgKkNGRzgwMjExKiwgd2hpY2ggc2VlbXMgbGlrZSBhIGJpdCBvZiBhIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlLCB5ZWFoPyBJdCYjMzk7cyBhIHN0YW5kYXJkIGludGVyZmFjZSBmb3IgY29uZmlndXJpbmcgd2lyZWxlc3MgZGV2aWNlcy4KClRoZSBrZXkgdGhpbmcgSSBuZWVkIHRvIHJlbWVtYmVyLCBhbmQgdGhpcyBpcyBjcnVjaWFsIGZvciB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUsIGlzIHRoYXQgKk1BQzgwMjExKiAqZGVwZW5kcyogb24gKkNGRzgwMjExKi4gVGhleSBhcmUgbm90IGluZGVwZW5kZW50IG1vZHVsZXMuIFNvICpDRkc4MDIxMSogcHJvdmlkZXMgdGhlIGludGVyZmFjZXMgdGhhdCAqTUFDODAyMTEqIHVzZXMgdG8gZG8gaXRzIHdvcmsuIFRoaW5rIG9mIGl0IGFzIE1BQzgwMjExIHJlbHlpbmcgb24gQ0ZHODAyMTEgZm9yIGl0cyBjb25maWd1cmF0aW9uIGFuZCByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbi4gR290IGl0LiBUaGF0JiMzOTtzIGEgZnVuZGFtZW50YWwgcmVsYXRpb25zaGlwLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGRlcGVuZGVuY3kgaW4gbWluZCB3aGVuIHdvcmtpbmcgd2l0aCB0aGVzZSBjb21wb25lbnRzLiBJZiBJJiMzOTttIHRyb3VibGVzaG9vdGluZyBvciBleHRlbmRpbmcgdGhlIHN0YWNrLCB0aGlzIHJlbGF0aW9uc2hpcCB3aWxsIGRpY3RhdGUgYSBsb3Qgb2YgbXkgYXBwcm9hY2guIEtub3dpbmcgdGhhdCAqTUFDODAyMTEqICp1c2VzKiAqQ0ZHODAyMTEqIGlzIHRoZSBtZW50YWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlaXIgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1Ncbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVx0Ym9vbCBcJiMzNDtlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDtyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cdGJvb2wgXCYjMzQ7YWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O2NmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7ZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXHRib29sIFwmIzM0O2NmZzgwMjExIERlYnVnRlMgZW50cmllc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O3N1cHBvcnQgQ1JEQVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjE0MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gQ0ZHODAyMTEgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyByaWRpbmcgb24gYENGRzgwMjExYCB0b2RheS4gSXQmIzM5O3MgYSBjcml0aWNhbCBwaWVjZSwgYW5kIGFueSBjaGFuZ2UgSSBtYWtlIG5lZWRzIHRvIGJlIG1ldGljdWxvdXNseSBwbGFubmVkLCBzbyBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGRlcGVuZGVuY3kgYW5hbHlzaXMuIFRpbWUgdG8gdHJhY2UgdGhlIGxpbmVhZ2UgYW5kIHNlZSB3aGF0IHRoaXMgYmVhc3QgaXMgY29ubmVjdGVkIHRvIGluIHRoZSBzdGFjay4gV2hhdCBtb2R1bGVzIGRlcGVuZCBvbiB0aGlzPyBXaGF0IGFzcGVjdHMgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2sgYXJlIGZ1bmRhbWVudGFsbHkgdGllZCB0byB0aGlzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBhbGwgdGhlIGRvd25zdHJlYW0gaW1wbGljYXRpb25zIGJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgbWFraW5nIGEgdHdlYWsuIEl04oCZcyBsaWtlIHN1cmdlcnk7IHlvdSBkb24mIzM5O3Qgc3RhcnQgY3V0dGluZyB3aXRob3V0IGtub3dpbmcgdGhlIHBhdGllbnQmIzM5O3MgZnVsbCBhbmF0b215LiBMZXTigJlzIGlkZW50aWZ5IHRoZSBwb3RlbnRpYWwgcmlwcGxlIGVmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE3Olx0Y29uZmlnIENGRzgwMjExXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4gIDIwOlx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDIxOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMjI6XHRcdCMgbWF5IG5lZWQgdG8gdXBkYXRlIHRoaXMgd2hlbiBjZXJ0aWZpY2F0ZXMgYXJlIGNoYW5nZWQgYW5kIGFyZVxuICAyMzpcdFx0IyB1c2luZyBhIGRpZmZlcmVudCBhbGdvcml0aG0sIHRob3VnaCByaWdodCBub3cgdGhleSBzaG91bGRuJiMzOTt0XG4gIDI0Olx0XHQjICh0aGlzIGlzIGhlcmUgcmF0aGVyIHRoYW4gYmVsb3cgdG8gYWxsb3cgaXQgdG8gYmUgYSBtb2R1bGUpXG4gIDI1Olx0XHRzZWxlY3QgQ1JZUFRPX1NIQTI1NiBpZiBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbiAgMjY6XHRcdGhlbHBcbiAgMjc6XHRcdCAgY2ZnODAyMTEgaXMgdGhlIExpbnV4IHdpcmVsZXNzIExBTiAoODAyLjExKSBjb25maWd1cmF0aW9uIEFQSS5cbiAgMjg6XHRcdCAgRW5hYmxlIHRoaXMgaWYgeW91IGhhdmUgYSB3aXJlbGVzcyBkZXZpY2UuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHJlZmVyIHRvIGRvY3VtZW50YXRpb24gb24gdGhlIHdpcmVsZXNzIHdpa2k6XG4gIDMxOlx0XG4gIDMyOlx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvRG9jdW1lbnRhdGlvbi9jZmc4MDIxMVxuICAzMzpcdFxuICAzNDpcdFx0ICBXaGVuIGJ1aWx0IGFzIGEgbW9kdWxlIGl0IHdpbGwgYmUgY2FsbGVkIGNmZzgwMjExLlxuICAzNTpcdFxuICAzNjpcdGlmIENGRzgwMjExXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjkxCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBkZXBlbmRlbmNpZXMsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKk15IFdpcmVsZXNzIERyaXZlciBEZXBlbmRlbmN5IENoZWNrbGlzdCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7Tm8gc3VycHJpc2VzIHRoZXJlLCBgQ0ZHODAyMTFgIGlzIGFic29sdXRlbHkgZnVuZGFtZW50YWwuIFdlIGNhbiYjMzk7dCBkbyBhbnl0aGluZyB3aXRob3V0IHRoYXQgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsuJiMzNDsgVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUsIGVzc2VudGlhbGx5LgoKVGhlbiwgb2YgY291cnNlLCBjb21lcyBgTUFDODAyMTFgLiBUaGF0JiMzOTtzIHRoZSBtZWRpYSBhY2Nlc3MgY29udHJvbCBsYXllciwgdGhlIHdvcmtob3JzZS4gSXQgcHJvdmlkZXMgdGhlIGNvcmUgd2lyZWxlc3MgZnVuY3Rpb25hbGl0eSBhbmQgbmVlZHMgdG8gYmUgcHJlc2VudCB0byBmdW5jdGlvbi4KCk5vdywgd2UgZ2V0IGRvd24gdG8gdGhlIGhhcmR3YXJlIHNpZGUsIG15IG1pbmQgZ29lcyB0byB0aGUgYFJUTDgxODBgIGFuZCBgUlRMODE4N2AuIFRoZXNlIGFyZSBzcGVjaWZpY2FsbHkgUmVhbHRlayBjaGlwcyB3ZSBhcmUgbWVudGlvbmluZy4gSSYjMzk7bSBub3RpbmcgdGhlIHNwZWNpZmljIGNoaXBzIHRvIGNvbnNpZGVyIHRoZSBzcGVjaWZpYyBkcml2ZXIgaW1wbGVtZW50YXRpb25zLgoKQXMgZXhwZWN0ZWQsIGBVU0JgIGFuZCBgUENJYCBhcmUgbmV4dC4gVGhhdCBqdXN0IGhpZ2hsaWdodHMgdGhlIHBoeXNpY2FsIGludGVyZmFjZXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gSXQgd291bGQgYmUgaGlnaGx5IHVudXN1YWwgaWYgdGhlIGhhcmR3YXJlIHdhcyBjb25uZWN0ZWQgc29tZSBvdGhlciB3YXkuCgpGaW5hbGx5LCBgV0xBTmAgaXMgdGhlIG92ZXJhcmNoaW5nLCB3aXJlbGVzcyBsb2NhbCBhcmVhIG5ldHdvcmsgYXNwZWN0LiBUaGF0IGVuY29tcGFzc2VzIGFsbCB0aGUgcGllY2VzIGFib3ZlLiBKdXN0IGEgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIHJpZ2h0IHRoaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFdMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6NjptZW51Y29uZmlnIFdMQU5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctNy1cdGJvb2wgXCYjMzQ7V2lyZWxlc3MgTEFOXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTA1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQmIzM5O3MgbXkgb3duIGludGVybmFsIGRpYWxvZ3VlOgoKKipDaGVja2luZyB0aGUgV0xBTiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgYmVmb3JlIGRpdmluZyBpbnRvIGFueXRoaW5nIGVsc2UsIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBUaGUgbWVudGlvbiBvZiBgV0xBTmAgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgYSBtZW50YWwgc2NhbiBvZiB0aGUgc3lzdGVtJiMzOTtzIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhbnkgb2J2aW91cyBkZXBlbmRlbmNpZXMgb3IgcG90ZW50aWFsIGNvbmZsaWN0cy4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgbmV0d29yayBzdGFjaywgdGhlIGRyaXZlcnMsIHBvdGVudGlhbCBmaXJtd2FyZSB2ZXJzaW9ucywgYW5kIG9mIGNvdXJzZSBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcy4gSXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gY29uc2lkZXI6IFdoYXQgb3RoZXIgbW9kdWxlcyBjb3VsZCBiZSBpbXBhY3RlZD8gQXJlIHRoZXJlIGFueSBrbm93biBpc3N1ZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgcmVjZW50IGNoYW5nZXMgaW4gdGhlIGBXTEFOYCBzcGFjZSB3aGljaCBjb3VsZCBlZmZlY3QgdGhpcz8gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnb2luZyB0aHJvdWdoIHRoZSBjb2RlYmFzZSwgdG8gdmVyaWZ5IHRoZSB2YXJpb3VzIGNvbXBvbmVudHMmIzM5OyBpbnRlcmRlcGVuZGVuY2llcywgY29uZmlybSBhbGwgdGhlIG5lY2Vzc2FyeSBsaWJyYXJpZXMgYXJlIGluIHBsYWNlLCBhbmQgZGV0ZXJtaW5lIGlmIGV2ZXJ5dGhpbmcgaXMgdXAtdG8tZGF0ZS4gTmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICA2Olx0bWVudWNvbmZpZyBXTEFOXG4gICA3Olx0XHRib29sIFwmIzM0O1dpcmVsZXNzIExBTlwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiAhUzM5MFxuICAgOTpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgMTA6XHRcdHNlbGVjdCBXSVJFTEVTU1xuICAxMTpcdFx0ZGVmYXVsdCB5XG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xuICAxNDpcdFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXG4gIDE1Olx0XHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDk5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqV2lyZWxlc3MgSW5mcmFzdHJ1Y3R1cmUgQ2hlY2sqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBuZWVkIGZvciBhIGBXTEFOYCBjb21wb25lbnQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgY29udGV4dCwgaXMgdG8gaW1tZWRpYXRlbHkgZGl2ZSBpbnRvIHRoZSBgV0lSRUxFU1NgIGRlcGVuZGVuY2llcy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBjb21wbGV4aXR5IGxpZXMsIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcnBsYXkgdGhlcmUgd2lsbCBkZXRlcm1pbmUgdGhlIGZlYXNpYmlsaXR5IGFuZCBiZXN0IGFwcHJvYWNoLiBJIG5lZWQgdG8ga25vdyB3aGljaCB0ZWNobm9sb2dpZXMgYXJlIGJlaW5nIGNvbnNpZGVyZWQsIGFuZCBob3cgdGhleSB3aWxsIGludGVyb3BlcmF0ZS4gSSYjMzk7bSB0aGlua2luZzogODAyLjExYXgsIHBlcmhhcHM/IE9yIGV2ZW4gZnV0dXJlLXByb29maW5nIHdpdGggYSBsb29rIGF0IDgwMi4xMWJlPyBUaGUgc2VjdXJpdHkgaW1wbGljYXRpb25zIGFyZSBhbHNvIHRvcCBvZiBtaW5kIOKAkyBXUEEzLCBvYnZpb3VzbHksIGJ1dCB3aGF0IGFib3V0IGZpbmUtZ3JhaW5lZCBhY2Nlc3MgY29udHJvbCBhbmQgc2VnbWVudGF0aW9uPyBUaGlzIGVhcmx5IHN0YWdlIHNldHMgdGhlIHN0YWdlIGZvciB0aGUgcmVzdCBvZiB0aGUgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFdJUkVMRVNTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC93aXJlbGVzcy9LY29uZmlnOjI6Y29uZmlnIFdJUkVMRVNTX0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMy1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3ODQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqS2NvbmZpZyBMb2NhdGlvbiBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoZXJlIGEgc3BlY2lmaWMgS2NvbmZpZyBvcHRpb24gcmVsYXRlZCB0byB3aXJlbGVzcyBuZXR3b3JraW5nIHJlc2lkZXMuIFRoZSBrbmVlLWplcmsgcmVhY3Rpb24gaXMgdG8gdGhpbmssICYjMzQ7V2VsbCwgKm9mIGNvdXJzZSogaXQmIzM5O3MgaW4gYG5ldC93aXJlbGVzcy9LY29uZmlnYC4mIzM0OyBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlLCB0aGUgbW9zdCBvYnZpb3VzIGRpcmVjdG9yeS4gQnV0IHdhaXQuLi4gaXMgaXQgKmFsd2F5cyogdGhhdCBzdHJhaWdodGZvcndhcmQ/IFNvbWV0aW1lcyB0aGVzZSB0aGluZ3MgYXJlIGNyb3NzLWxpbmtlZCBvciBwbGFjZWQgaW4gbW9yZSBnZW5lcmFsIGFyZWFzIGZvciBicm9hZGVyIGRlcGVuZGVuY2llcy4gTWF5YmUgaXQgd2FzIGdlbmVyYWxpemVkLCBhbmQgcHV0IGl0IGluIGBuZXQvS2NvbmZpZ2A/IEl0IGNvdWxkIGJlLCBkZXBlbmRpbmcgb24gaG93IHRoYXQgZnVuY3Rpb25hbGl0eSBpcyBidWlsdC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsaWtlbHkgYWx0ZXJuYXRpdmUuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFdJUkVMRVNTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NDIzPWNvbmZpZyBGSUJfUlVMRVNcbi0tXG5uZXQvS2NvbmZpZy00MjUtXG5uZXQvS2NvbmZpZzo0MjY6bWVudWNvbmZpZyBXSVJFTEVTU1xubmV0L0tjb25maWctNDI3LVx0Ym9vbCBcJiMzNDtXaXJlbGVzc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDA2OQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFdJUkVMRVNTIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgYFdJUkVMRVNTYCBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgbGlicmFyaWVzLCBtb2R1bGVzLCBvciBzZXJ2aWNlcyB0aGlzIGNvbXBvbmVudCByZWxpZXMgdXBvbi4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBjaGVjazsgSSYjMzk7bSBsb29raW5nIGZvciBhIGRldGFpbGVkIGRlcGVuZGVuY3kgZ3JhcGguIEkmIzM5O2xsIG5lZWQgdG8ga25vdyBub3Qgb25seSB0aGUgZGlyZWN0IGRlcGVuZGVuY2llcywgYnV0IGFsc28gdGhlIHRyYW5zaXRpdmUgb25lcyDigJMgdGhvc2UgZGVwZW5kZW5jaWVzIG9mIGRlcGVuZGVuY2llcy4gV2hhdCB2ZXJzaW9uIHJhbmdlcyBhcmUgd2UgZGVhbGluZyB3aXRoPyBBcmUgdGhleSBwaW5uZWQsIG9yIGZsZXhpYmxlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaG9zZW4gdmVyc2lvbnM/CgpNeSBnb2FsIGhlcmUgaXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcywgY29uZmxpY3RzLCBvciBpbmVmZmljaWVuY2llcy4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBrbm93biBDVkVzIHdpdGhpbiB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgd2hldGhlciB0aGV54oCZcmUgcHJvcGVybHkgbWl0aWdhdGVkLiBJJiMzOTtsbCBhbHNvIGJlIGNvbnNpZGVyaW5nIHdoZXRoZXIgdGhlIGRlcGVuZGVuY2llcyBhcmUgd2VsbC1tYWludGFpbmVkLCBhbmQgaWYgdGhleSByZXByZXNlbnQgYSBzb3VyY2Ugb2YgdGVjaG5pY2FsIGRlYnQuIEkgd2FudCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY2llcywgc28gSSBrbm93IHdoZXJlIHRvIGZvY3VzIGFueSBuZWNlc3NhcnkgYXVkaXRzIG9yIHVwZ3JhZGVzLiBJdCYjMzk7cyB0aW1lIHRvIGJ1aWxkIHRoZSBtYXAhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MjYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQyNjpcdG1lbnVjb25maWcgV0lSRUxFU1NcbiA0Mjc6XHRcdGJvb2wgXCYjMzQ7V2lyZWxlc3NcJiMzNDtcbiA0Mjg6XHRcdGRlcGVuZHMgb24gIVMzOTBcbiA0Mjk6XHRcdGRlZmF1bHQgeVxuIDQzMDpcdFxuIDQzMTpcdGlmIFdJUkVMRVNTXG4gNDMyOlx0XG4gNDMzOlx0c291cmNlIFwmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnXCYjMzQ7XG4gNDM0Olx0c291cmNlIFwmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnXCYjMzQ7XG4gNDM1Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDU3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczoKCioqV2lyZWxlc3MgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCB0aGUgZGVmYXVsdCBzZXR1cCBzZWVtcyB0byBiZSBvcGVyYXRpbmcgb24gYSBgV0lSRUxFU1NgIHNldHRpbmcsIHNwZWNpZmljYWxseSwgYSBgeWAgZGVzaWduYXRpb24uIEdvb2QuIE5vdywgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQ6IGBXTEFOYCwgYENGRzgwMjExYCwgYE1BQzgwMjExYCwgd2hpY2ggYXJlIGZvdW5kYXRpb25hbCBmb3Igd2lyZWxlc3Mgb3BlcmF0aW9uLiBBbmQgb2YgY291cnNlLCB0aGVyZSBhcmUgc3BlY2lmaWMgZHJpdmVycyByZWxhdGVkIHRvIGhhcmR3YXJlOiBgUlRMODE4MGAgYW5kIGBSVEw4MTg3YC4gSXQmIzM5O3MgYSBQQ0kgb3IgVVNCIHN5c3RlbSwgc28gdGhvc2Ugb3B0aW9ucyBhcmUgaW1wb3J0YW50OiBgVVNCYCBhbmQgYFBDSWAuCgpJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRvIHNlZSBpZiB0aGVyZSBpcyBzb21ldGhpbmcgbGlrZSBgUlRMODE4WGAuLi4gb3IgYW55dGhpbmcgbGlrZSB0aGF0IGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRMODE4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3NjcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYSBLZXJuZWwgQ29uZmlndXJhdGlvbiBJbmNsdXNpb24qKgoKT2theSwgc28gSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBhIHJlZmVyZW5jZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWdgLiBSaWdodCwgaXQmIzM5O3MgaW5jbHVkZWQgZnJvbSBzb21ld2hlcmUgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGlzIGJlaW5nIGJyb3VnaHQgaW50byB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IGNoYWluIHRoYXQgbGVhZHMgdG8gdGhpcyBwYXJ0aWN1bGFyIEtjb25maWcgZmlsZSBiZWluZyBwYXJzZWQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdHJhY2luZyB0aGUgaW5jbHVzaW9uIGNvbmRpdGlvbnMsIHBhcnRpY3VsYXJseSBpZiBJJiMzOTttIGxvb2tpbmcgdG8gZGlzYWJsZSBvciBtb2RpZnkgdGhlIGRyaXZlciYjMzk7cyBidWlsZCBvcHRpb25zLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgYW5kIG1ha2VmaWxlcyBmb3IgdGhlIGRpcmVjdCBvciBpbmRpcmVjdCBpbmNsdXNpb24gb2YgdGhpcyBzcGVjaWZpYyBmaWxlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBgc291cmNlYCwgYGluY2x1ZGVgLCBvciBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkaXJlY3RpdmVzIHRoYXQgY291bGQgYmUgcHVsbGluZyB0aGlzIEtjb25maWcgaW50byB0aGUgYnVpbGQuIFRoZW4gSSBjYW4gZGV0ZXJtaW5lIHdoZXJlIHRoaXMgY29uZmlndXJhdGlvbiBmb3IgdGhlIFJlYWx0ZWsgUlRMODE4eCB3aXJlbGVzcyBkcml2ZXIgaXMgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODE4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWc9MTM9aWYgV0xBTl9WRU5ET1JfUkVBTFRFS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnOjE1OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnLTE2LXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTE1NwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IFJlYWx0ZWsgRHJpdmVyIFJlcXVpcmVtZW50KioKCkFscmlnaHQsIHNvIHRoZSBwcm9qZWN0JiMzOTtzIGF0IGEgcG9pbnQgd2hlcmUgSSBuZWVkIHRvIHNlcmlvdXNseSBjb25zaWRlciB0aGUgd2lyZWxlc3MgTEFOIGltcGxlbWVudGF0aW9uLiBUaGUgaW1tZWRpYXRlIHRob3VnaHQgZmxhc2hpbmcgdGhyb3VnaCBteSBtaW5kIGlzICYjMzQ7UmlnaHQsIHdlJiMzOTtyZSBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIGRlYWxpbmcgd2l0aCBhIFJlYWx0ZWsgY2hpcHNldCBoZXJlLCBhcmVuJiMzOTt0IHdlPyYjMzQ7IEkgcXVpY2tseSBpZGVudGlmeSB0aGF0IEkmIzM5O2xsIG5lZWQgdG8gd29yayB3aXRoIHRoZSBgV0xBTl9WRU5ET1JfUkVBTFRFS2AgZHJpdmVyLiBObyBzdXJwcmlzZXMgdGhlcmUsIHRoZXkmIzM5O3JlIGV2ZXJ5d2hlcmUuIE5vdyBpdCYjMzk7cyBhIG1hdHRlciBvZiBmaWd1cmluZyBvdXQgd2hpY2ggc3BlY2lmaWMgcmV2aXNpb24sIGFuZCB3aGF0IGtlcm5lbCB2ZXJzaW9ucyB3ZSBuZWVkIHRvIHN1cHBvcnQuIFRoZSBsZXZlbCBvZiBzdXBwb3J0IHZhcmllcyB3aWxkbHksIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3Qgc2lsaWNvbiByZXZpc2lvbi4gVGhpcyBpcyBnb2luZyB0byBpbmZsdWVuY2UgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgc29sdXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBXTEFOX1ZFTkRPUl9SRUFMVEVLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX1JFQUxURUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtSZWFsdGVrIGRldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0NjcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFJlYWx0ZWsgV0xBTiBEZXBlbmRlbmN5IExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBXTEFOX1ZFTkRPUl9SRUFMVEVLYC4gVGhpcyBsaWtlbHkgbWVhbnMgSSYjMzk7bSBsb29raW5nIGF0IGEgZHJpdmVyLCBhIGZpcm13YXJlLCBvciBzb21lIG90aGVyIG1vZHVsZSBzcGVjaWZpY2FsbHkgYnVpbHQgZm9yIFJlYWx0ZWsmIzM5O3MgV0xBTiBoYXJkd2FyZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbWFwIG91dCB0aGUgZW50aXJlIGRlcGVuZGVuY3kgY2hhaW4g4oCTIHdobyByZWxpZXMgb24gdGhpcywgYW5kIHdoYXQgZG9lcyBpdCAqaXRzZWxmKiBkZXBlbmQgb24/IElzIGl0IHRpZWQgdG8gYSBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbiwgYSBwYXJ0aWN1bGFyIHNldCBvZiBsaWJyYXJpZXMsIG9yIGV2ZW4gb3RoZXIgdmVuZG9yLXNwZWNpZmljIGNvbXBvbmVudHM/IEFyZSB0aGVyZSBhbnkga25vd24gY29tcGF0aWJpbGl0eSBpc3N1ZXMgb3IgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mIGltbWVkaWF0ZWx5PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaW1wYWN0IGlmIHRoZXJlIGFyZSBjaGFuZ2VzIG9yIHBvdGVudGlhbCBwcm9ibGVtcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGF3YXJlIG9mIGV2ZXJ5IHBvc3NpYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMjpcdGNvbmZpZyBXTEFOX1ZFTkRPUl9SRUFMVEVLXG4gICAzOlx0XHRib29sIFwmIzM0O1JlYWx0ZWsgZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCB5XG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gICA3Olx0XG4gICA4Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAgOTpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMDpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDExOlx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4MzgKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiA0MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFJlYWx0ZWsgV0xBTiBEcml2ZXIgQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBgV0xBTl9WRU5ET1JfUkVBTFRFS2AgaXMgc2V0IGFzIHRoZSBkZWZhdWx0LCB3aGljaCBtYWtlcyBzZW5zZS4gTGV0JiMzOTtzIGdldCBhIGhhbmRsZSBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBXTEFOYCwgYFdMQU5fVkVORE9SX1JFQUxURUtgLCBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBgUlRMODE4MGAsIGBSVEw4MTg3YCwgYFVTQmAsIGFuZCBgUENJYC4gQSBxdWljayBtZW50YWwgY2hlY2suLi4gc2VlbXMgbGlrZSBgUlRMODE4MGAgYW5kIGBSVEw4MTg3YCBhcmUgdGhlIGNvcmUgZHJpdmVycyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUuCgpBbHJpZ2h0LCBub3cgdG8gY29uZmlybSB0aGUgcHJvYmUgZnVuY3Rpb25zIGFyZSBpbmRlZWQgd2hhdCBJIHRoaW5rIHRoZXkgYXJlLiBZZXMsIGBydGw4MTgwX3Byb2JlYCBhbmQgYHJ0bDgxODdfcHJvYmVgIOKAkyB0aG9zZSBhcmUgdGhlIFBDSSBhbmQgVVNCIGRyaXZlciBwcm9iZSBmdW5jdGlvbnMgcmVzcGVjdGl2ZWx5LiBBbmQgdGhleSYjMzk7cmUgbm90IGlubGluZWQsIHdoaWNoIGlzIGV4cGVjdGVkIHNpbmNlIHRoZXkmIzM5O3JlIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gdGhlIGRyaXZlciBzdHJ1Y3R1cmVzLgoKT2theSwgbGV0JiMzOTtzIHNlZSB3aGljaCBmaWxlcyB3ZXJlIGFjdHVhbGx5IHRvdWNoZWQuIExvb2tzIGxpa2Ugb25seSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmNgIHdlcmUgbW9kaWZpZWQuCgpBaCwgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYW4gdW5pbml0aWFsaXplZCB2YXJpYWJsZSwgYHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tO2AsIGluaXRpYWxpemluZyBpdCB0byBge31gLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2U7IHdlJiMzOTtyZSBwcmV2ZW50aW5nIHJlYWRzIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIGdvb2QuIEltcG9ydGFudCBmb3IgZnV6emluZyBiZWNhdXNlIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGFyZSBwcmltZSB0YXJnZXRzIGZvciBidWdzLgoKVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkmIzM5O2xsIGZvY3VzIG9uIGBydGw4MTgwX3Byb2JlYCBhbmQgYHJ0bDgxODdfcHJvYmVgIGZvciBub3csIGFuZCB0aGVzZSBhcmUgdGhlIGNvbmZpZ3MgdG8gZW5hYmxlOiBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9SRUFMVEVLYCwgYENGRzgwMjExYCwgYE1BQzgwMjExYCwgYFJUTDgxODBgLCBgUlRMODE4N2AsIGBVU0JgLCBhbmQgYFBDSWAuCgpKdXN0IHF1aWNrbHksIGxldCBtZSBjb25maXJtIGlmIGBydGw4MTgwX2VlcHJvbV9yZWFkYCBpcyBjYWxsZWQgZWxzZXdoZXJlIHRvIHNlZSBpZiB3ZSYjMzk7dmUgZ290IGFueSBwb3RlbnRpYWwgc2Vjb25kYXJ5IGF0dGFjayBzdXJmYWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODE4MF9lZXByb21fcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE2MzQ9c3RhdGljIHZvaWQgcnRsODE4MF9lZXByb21fcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE2NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYzoxNjUzOnN0YXRpYyB2b2lkIHJ0bDgxODBfZWVwcm9tX3JlYWQoc3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE2NTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE3MzA9c3RhdGljIGludCBydGw4MTgwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE4ODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYzoxODg5Olx0cnRsODE4MF9lZXByb21fcmVhZChwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE4OTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTUyCgkJCQkJCQlvdXRwdXQ6IDIwMgoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZpbmFsIENoZWNrcyBDb21wbGV0ZSoqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIHRoZSBpc3N1ZSBpcyBpc29sYXRlZCB0byBgcnRsODE4MF9wcm9iZWAuIFRoYXQgd2FzIHRoZSBpbml0aWFsIGh1bmNoLCBhbmQgdGhlIGZvY3VzIHNlZW1zIGNvcnJlY3QuIE5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUuIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgYGVlcHJvbWAgaGFwcGVucyBkaXJlY3RseSBpbiBgcnRsODE4N19wcm9iZWAgYXMgd2VsbCwgc28gdGhhdCYjMzk7cyBnb29kIGNvbmZpcm1hdGlvbi4gR2l2ZW4gdGhhdCwgdGhlIGNyaXRpY2FsIHN5bWJvbHMgYXJlIHdoZXJlIHRoZXkgbmVlZCB0byBiZS4gQWxyaWdodCwgdGltZSB0byBkbyBhIGZpbmFsIHN3ZWVwLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgaW5pdGlhbGl6ZXMgdGhlIGBlZXByb21gIHRvIHplcm8sIHdoaWNoIGRlZmluaXRlbHkgY29uc3RpdHV0ZXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gRnVydGhlciwgdGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIHRocm91Z2ggYm90aCBVU0IgYW5kIFBDSSBwcm9iaW5nLCB3aGljaCBzZWVtcyBhcHByb3ByaWF0ZSBmb3IgaG93IHRoZSBkcml2ZXIgd29ya3MuIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHNldCB1cCBjb3JyZWN0bHkuIEdvb2QuIEkmIzM5O20gc2F0aXNmaWVkLiBJJiMzOTtsbCBpbml0aWF0ZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9SRUFMVEVLJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1JUTDgxODAmIzM0OywKICAgICYjMzQ7UlRMODE4NyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsODE4MF9wcm9iZSYjMzQ7LAogICAgJiMzNDtydGw4MTg3X3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaXNzdWUgYnkgemVyby1pbml0aWFsaXppbmcgYHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tYCBpbiB0aGUgcHJvYmUgcGF0aHMgb2YgdGhlIHJ0bDgxODAgKFBDSSkgYW5kIHJ0bDgxODcgKFVTQikgZHJpdmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIFVTQiBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgZHVtbXlfaGNkLCBhbmQgdGhlIFBDSSBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgUENJIGZ1enppbmcgZnJhbWV3b3Jrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9SRUFMVEVLJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1JUTDgxODAmIzM0OywKICAgICYjMzQ7UlRMODE4NyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsODE4MF9wcm9iZSYjMzQ7LAogICAgJiMzNDtydGw4MTg3X3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaXNzdWUgYnkgemVyby1pbml0aWFsaXppbmcgYHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tYCBpbiB0aGUgcHJvYmUgcGF0aHMgb2YgdGhlIHJ0bDgxODAgKFBDSSkgYW5kIHJ0bDgxODcgKFVTQikgZHJpdmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIFVTQiBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgZHVtbXlfaGNkLCBhbmQgdGhlIFBDSSBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgUENJIGZ1enppbmcgZnJhbWV3b3Jrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUwOjUzLjI3NzQ4NzE3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ0MDkwNTY5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfUkVBTFRFS1wiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJSVEw4MTgwXCIsXG4gICAgXCJSVEw4MTg3XCIsXG4gICAgXCJVU0JcIixcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxODBfcHJvYmVcIixcbiAgICBcInJ0bDgxODdfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlIGJ5IHplcm8taW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbWAgaW4gdGhlIHByb2JlIHBhdGhzIG9mIHRoZSBydGw4MTgwIChQQ0kpIGFuZCBydGw4MTg3IChVU0IpIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBVU0IgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15X2hjZCwgYW5kIHRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUwOjUzLjI3NzQ5NTUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTE4NTc2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwMWRkMWFmOTkwOGFmNDFmZTYyOWExNmZjMmFmYWUwYWVjOWVjMmJjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDI2IDAwOjUwOjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNcXG5pbmRleCAwNzBjMDQzMWM0ODIxYy4uNGE1OTg5MTcyYTVlM2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuY1xcbkBAIC0xNjUyLDcgKzE2NTIsNyBAQCBzdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWdpc3Rlcl93cml0ZShzdHJ1Y3QgZWVwcm9tXzkzY3g2ICplZXByb20pXFxuIFxcbiBzdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWFkKHN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYpXFxuIHtcXG4tXFx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XFxuK1xcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XFxuIFxcdGludCBlZXByb21fY2NrX3RhYmxlX2FkcjtcXG4gXFx0dTE2IGVlcHJvbV92YWw7XFxuIFxcdGludCBpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jXFxuaW5kZXggMWQyMWM0NjhhMjM2ODUuLmE3NjY3MTIxODdmNzdjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmNcXG5AQCAtMTQ0NSw3ICsxNDQ1LDcgQEAgc3RhdGljIGludCBydGw4MTg3X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbiBcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldjtcXG4gXFx0c3RydWN0IHJ0bDgxODdfcHJpdiAqcHJpdjtcXG4tXFx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XFxuK1xcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbDtcXG4gXFx0Y29uc3QgY2hhciAqY2hpcF9uYW1lO1xcbiBcXHR1MTYgdHhwd3IsIHJlZztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTA6NTMuOTcwMDIyODY1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODM3MTY1MTExODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfUkVBTFRFS1wiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJSVEw4MTgwXCIsXG4gICAgXCJSVEw4MTg3XCIsXG4gICAgXCJVU0JcIixcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxODBfcHJvYmVcIixcbiAgICBcInJ0bDgxODdfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlIGJ5IHplcm8taW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbWAgaW4gdGhlIHByb2JlIHBhdGhzIG9mIHRoZSBydGw4MTgwIChQQ0kpIGFuZCBydGw4MTg3IChVU0IpIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBVU0IgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15X2hjZCwgYW5kIHRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDAxZGQxYWY5OTA4YWY0MWZlNjI5YTE2ZmMyYWZhZTBhZWM5ZWMyYmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAwMDo1MDo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNcbmluZGV4IDA3MGMwNDMxYzQ4MjFjLi40YTU5ODkxNzJhNWUzZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuY1xuQEAgLTE2NTIsNyArMTY1Miw3IEBAIHN0YXRpYyB2b2lkIHJ0bDgxODBfZWVwcm9tX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBlZXByb21fOTNjeDYgKmVlcHJvbSlcbiBcbiBzdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWFkKHN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYpXG4ge1xuLVx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XG4rXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O1xuIFx0aW50IGVlcHJvbV9jY2tfdGFibGVfYWRyO1xuIFx0dTE2IGVlcHJvbV92YWw7XG4gXHRpbnQgaTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jXG5pbmRleCAxZDIxYzQ2OGEyMzY4NS4uYTc2NjcxMjE4N2Y3N2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmNcbkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBzdGF0aWMgaW50IHJ0bDgxODdfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXY7XG4gXHRzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2O1xuLVx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XG4rXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsO1xuIFx0Y29uc3QgY2hhciAqY2hpcF9uYW1lO1xuIFx0dTE2IHR4cHdyLCByZWc7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MDo1My45NzAwMjM2NzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTQzNzMwNTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVuaW5pdGlhbGl6ZWQgVmFyaWFibGUgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgaW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O2AgaW4gYSBjb3VwbGUgb2YgcGxhY2VzOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNgICh3aXRoaW4gYHJ0bDgxODBfZWVwcm9tX3JlYWRgKSBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jYCAoaW4gYHJ0bDgxODdfcHJvYmVgKS4gIFNvdW5kcyBsaWtlIGEgY2xhc3NpYyB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGZpeC4gIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGFyZWFzIGFyZSBldmVuIHJlYWNoYWJsZSwgcmlnaHQ/IFRoZSBwb3RlbnRpYWwgaW1wYWN0IGRlcGVuZHMgb24gaG93IGxpa2VseSB0aGlzIGNvZGUgaXMgdG8gYmUgZXhlY3V0ZWQuXG5cbmBydGw4MTgwYCBpcyBhIFBDSSBkcml2ZXIsIHdoaWNoIGlzIGxlc3MgbGlrZWx5IHRvIGJlIGZ1enplZCBpbiBteSBleHBlcmllbmNlLiAgUENJIGZ1enppbmcgZnJhbWV3b3JrcyBleGlzdCwgYnV0IGFyZW4ndCBhcyBjb21tb24gYXMgdGhvc2UgZm9yIFVTQi5cblxuYHJ0bDgxODdgLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgYSBVU0IgZHJpdmVyLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcuIFVTQiBkcml2ZXJzIGFyZSAqZGVmaW5pdGVseSogY2FuZGlkYXRlcyBmb3IgZnV6emluZyDigJMgdG9vbHMgbGlrZSBgZHVtbXlfaGNkYCBhbmQgb3RoZXIgVVNCIGZ1enppbmcgZnJhbWV3b3JrcyBhcmUgZnJlcXVlbnRseSB1c2VkIG9uIHRoZXNlLiBJdCdzIGEgbXVjaCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCBwYXRoIHRvIHJlYWNoIHRob3NlIGZ1bmN0aW9ucy4gVGhlIHBhdGNoIGlzIHByb2JhYmx5IHZlcnkgaW1wb3J0YW50IGlmIGBydGw4MTg3YCBpcyBlbmFibGVkLlxuXG5JIHJlYWxseSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZXNlIGRyaXZlcnMgYXJlIGJ1aWx0IHdpdGggdGhlIGtlcm5lbC4gVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyB0byBzZWUgaWYgdGhlIG1vZHVsZXMgYXJlIGV2ZW4gZW5hYmxlZCwgb3IgYXJlIGJ1aWx0IGFzIG1vZHVsZXMgaW4gdGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MzEsIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MDo1OS4xMTM3NTc3NDlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwNTc4OTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bDgxODBfZWVwcm9tX3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM9MTYzND1zdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWdpc3Rlcl93cml0ZShzdHJ1Y3QgZWVwcm9tXzkzY3g2ICplZXByb20pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xNjUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jOjE2NTM6c3RhdGljIHZvaWQgcnRsODE4MF9lZXByb21fcmVhZChzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE2NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM9MTczMD1zdGF0aWMgaW50IHJ0bDgxODBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xODg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jOjE4ODk6XFx0cnRsODE4MF9lZXByb21fcmVhZChwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xODkwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MDo1OS4yMzQzNDM4NzlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQyOTcwNjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhvc2UgbGluZXMsIGFzIEkgdW5kZXJzdGFuZCB0aGUgc2l0dWF0aW9uOlxuXG4qKlByb2JpbmcgdGhlIFJUTDgxOFggQ2hpcHNldCoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgZHJpdmVyIGluaXRpYWxpemF0aW9uIGZvciBhIFJlYWx0ZWsgODE4MC84MTg3IHNlcmllcyBjaGlwc2V0LiBGcm9tIHdoYXQgSSBzZWUsIGBydGw4MTgwX2VlcHJvbV9yZWFkYCBpcyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSBgcnRsODE4MF9wcm9iZWAgcHJvY2Vzcy4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IHJlYWRpbmcgdGhlIEVFUFJPTSBpcyBhIGNydWNpYWwgc3RlcCBpbiBicmluZ2luZyB1cCB0aGUgODE4MCB2YXJpYW50IG9mIHRoZSBjaGlwc2V0LiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIEFuZCwgb2YgY291cnNlLCBgcnRsODE4N19wcm9iZWAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgODE4NyB2YXJpYW50LCBjb25maXJtaW5nIGEgc2VwYXJhdGUgcHJvYmUgZnVuY3Rpb24gZXhpc3RzIGZvciBpdC4gVGhhdCdzIGEgcmVhc29uYWJsZSBzcGxpdCwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBoYXJkd2FyZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSA4MTgwIGFuZCA4MTg3LlxuXG5HaXZlbiB0aGVzZSB0d28gZnVuY3Rpb25zIGFyZSBjbG9zZWx5IGFzc29jaWF0ZWQgd2l0aCBkaWZmZXJlbnQgZGV2aWNlcywgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBydGw4MTh4YC4gVGhpcyB3aWxsIHRlbGwgbWUgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lIGFuZCByZXZlYWwgYW55IGRlcGVuZGVuY2llcy4gS25vd2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIHZpdGFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZHJpdmVyIGlzIHN0cnVjdHVyZWQgYW5kIGhvdyBkaWZmZXJlbnQgaGFyZHdhcmUgdmFyaWF0aW9ucyBhcmUgaGFuZGxlZC4gSSBuZWVkIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBtaWdodCBhbGxvdy9kaXNhYmxlIGBydGw4MTgwX3Byb2JlYCBhbmQgYHJ0bDgxODdfcHJvYmVgIGFuZCB1bmRlcnN0YW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB0aGUgb3ZlcmFsbCBkcml2ZXIgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTowMi42NzczMjg1MjdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMTAwMzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVEw4MThcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctNC0jXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWc6NTpjb25maWcgUlRMODE4MFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODE4MC84MTg1LzgxODdTRSBQQ0kgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnOjYxOmNvbmZpZyBSVEw4MTg3XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctNjItXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODE4NyBhbmQgODE4N0IgVVNCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZy04NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZzo4NTpjb25maWcgUlRMODE4N19MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctODYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTowMi43ODc0MzYzMDVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTg5NDUyMjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IERyaXZlciBMYW5kc2NhcGUqKlxuXG5SaWdodCwgc28gdGhlIGtleSBjb25maWd1cmF0aW9ucyB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZSBhcmUgYFJUTDgxODBgIGFuZCBgUlRMODE4N2AuIEltbWVkaWF0ZWx5LCBJIHNlZSBhIGRpc3RpbmN0aW9uLiBUaGUgYFJUTDgxODdgIGlzIGEgVVNCIGRyaXZlciwgd2hpY2ggaW5zdGFudGx5IG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBVU0IgZHJpdmVycywgaW4gbXkgZXhwZXJpZW5jZSwgb2Z0ZW4gcHJlc2VudCBpbnRlcmVzdGluZyBhdHRhY2sgc3VyZmFjZXMuIFRoZSBgUlRMODE4MGAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBQQ0ktYmFzZWQuIFRoYXQgaW50cm9kdWNlcyBhIGRpZmZlcmVudCBzZXQgb2YgY29uc2lkZXJhdGlvbnMsIGEgZGlmZmVyZW50IGF0dGFjayB2ZWN0b3IgYWx0b2dldGhlci4gR2l2ZW4gbXkgZm9jdXMgaXMgZ2VuZXJhbGx5IG9uIGZ1enppbmcgYW5kIHRhcmdldGVkIHZ1bG5lcmFiaWxpdHkgcmVzZWFyY2gsIHRoZSBVU0IgZHJpdmVyIGRlZmluaXRlbHkgcGlxdWVzIG15IGludGVyZXN0IHRoZSBtb3N0IHJpZ2h0IG5vdy5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGBSVEw4MTg3YCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIFdoYXQgb3RoZXIgbW9kdWxlcyBkb2VzIGl0IHJlbHkgb24/IFdoYXQgaW50ZXJmYWNlcyBkb2VzIGl0IGV4cG9zZT8gVGhpcyB3aWxsIGd1aWRlIG15IGZ1enppbmcgZWZmb3J0cyBhbmQgaGVscCBtZSBpZGVudGlmeSB0aGUgbW9zdCBwcm9taXNpbmcgZW50cnkgcG9pbnRzLiBVbmRlcnN0YW5kaW5nIHRoZSBlY29zeXN0ZW0gaXQgb3BlcmF0ZXMgaW4gaXMgY3J1Y2lhbCBmb3Igc3VjY2Vzc2Z1bCB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS4gVGltZSB0byBkaWcgaW50byB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQ4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MDYuMzc2ODkxMDY2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5NDkzMDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVEw4MTg3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnPTU9Y29uZmlnIFJUTDgxODBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnOjYxOmNvbmZpZyBSVEw4MTg3XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctNjItXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODE4NyBhbmQgODE4N0IgVVNCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZy04NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZzo4NTpjb25maWcgUlRMODE4N19MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctODYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTowNi40NzYzODk0ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzAxMjc5OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIFJUTDgxODcqKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJCZWZvcmUgSSBwcm9jZWVkLCBJICpuZWVkKiB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzIG9mIGBSVEw4MTg3YC5cIiBJJ20gbm90IGdvaW5nIHRvIHJ1c2ggaW50byBhbnl0aGluZyB3aXRob3V0IGtub3dpbmcgd2hhdCBpdCdzIGNvbm5lY3RlZCB0by4gV2hldGhlciBJJ20gbG9va2luZyBhdCBhIGhhcmR3YXJlIGRlc2lnbiwgYSBzb2Z0d2FyZSBkcml2ZXIsIGEgc3BlY2lmaWMgY2hpcCwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHksIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBwYXJhbW91bnQuIFdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBtb2R1bGVzIHJlbHkgb24gYFJUTDgxODdgPyBXaGF0IGRvZXMgaXQgZGVwZW5kIG9uIGluIHJldHVybj8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgY29tcG9uZW50LCBvciBzb21ldGhpbmcgbW9yZSBpbnRlcnR3aW5lZCBhbmQgY29tcGxleD8gVGhlIG5hdHVyZSBvZiB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCBjb21wbGV0ZWx5IHNoYXBlIGhvdyBJIGFwcHJvYWNoIHRoZSBuZXh0IHN0ZXAsIHNvIEkgaGF2ZSB0byBhc2NlcnRhaW4gdGhlbSBhcyBhIHByaW9yaXR5LiBUaGlzIGlzIGVzc2VudGlhbCBmb3IgcHJvcGVyIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjI0LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MDkuMTc3NjcxNzYyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYxOlxcdGNvbmZpZyBSVEw4MTg3XFxuICA2MjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MTg3IGFuZCA4MTg3QiBVU0Igc3VwcG9ydFxcXCJcXG4gIDYzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgVVNCXFxuICA2NDpcXHRcXHRzZWxlY3QgRUVQUk9NXzkzQ1g2XFxuICA2NTpcXHRcXHRoZWxwXFxuICA2NjpcXHRcXHQgIFRoaXMgaXMgYSBkcml2ZXIgZm9yIFJUTDgxODcgYW5kIFJUTDgxODdCIGJhc2VkIGNhcmRzLlxcbiAgNjc6XFx0XFx0ICBUaGVzZSBhcmUgVVNCIGJhc2VkIGNoaXBzIGZvdW5kIGluIGRldmljZXMgc3VjaCBhczpcXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0ICBOZXRnZWFyIFdHMTExdjJcXG4gIDcwOlxcdFxcdCAgTGV2ZWwgMSBXTkMtMDMwMVVTQlxcbiAgNzE6XFx0XFx0ICBNaWNyb25ldCBTUDkwN0dLIFY1XFxuICA3MjpcXHRcXHQgIEVuY29yZSBFTlVXSS1HMlxcbiAgNzM6XFx0XFx0ICBUcmVuZG5ldCBURVctNDI0VUJcXG4gIDc0OlxcdFxcdCAgQVNVUyBQNUIgRGVsdXhlL1A1SyBQcmVtaXVtIG1vdGhlcmJvYXJkc1xcbiAgNzU6XFx0XFx0ICBUb3NoaWJhIFNhdGVsbGl0ZSBQcm8gc2VyaWVzIG9mIGxhcHRvcHNcXG4gIDc2OlxcdFxcdCAgQXN1cyBXaXJlbGVzcyBMaW5rXFxuICA3NzpcXHRcXHQgIExpbmtzeXMgV1VTQjU0R0MtRVUgdjJcXG4gIDc4OlxcdFxcdCAgICAodjEgPSBydDczdXNiOyB2MyBpcyBydDIwNzAtYmFzZWQsXFxuICA3OTpcXHRcXHQgICAgIHVzZSBzdGFnaW5nL3J0MzA3MCBvciB0cnkgcnQyODAwdXNiKVxcbiAgODA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjA5LjE3Nzc1Njk2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDkxODYyNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBkZXBlbmRlbmNpZXMsIHN1bW1hcml6ZWQgYXMgYSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCBEcml2ZXIgQ2hlY2sqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIHNlZW1zIHRvIGludm9sdmUgZWl0aGVyICpNQUM4MDIxMSogb3IgdGhlICpVU0IqIHN1YnN5c3RlbS4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYXMgaXQgaW1tZWRpYXRlbHkgaWRlbnRpZmllcyB0aGUgY29yZSBhcmVhcyBJIG5lZWQgdG8gZm9jdXMgb24uIFRoZSBkcml2ZXIgaXRzZWxmIGlzIGNsZWFybHkgKlJUTDgxODcqLlxuXG5Ob3csIGdpdmVuIHRoYXQgaXQncyBhbiBSVEw4MTg3LCBJIHNob3VsZCBxdWlja2x5IGNoZWNrIGlmIFJUTDgxODAgaGFzIGFueSBwYXJ0aWN1bGFyIGRlcGVuZGVuY3ksIG9yIGlmIHRoZXJlJ3MgYW55IGltcG9ydGFudCByZWxhdGlvbnNoaXAgYmV0d2VlbiBpdCBhbmQgUlRMODE4Ny4gVGhpcyBpcyBsaWtlbHkganVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCBhbnkgcG90ZW50aWFsIGFzc3VtcHRpb25zIG9yIG92ZXJsYXBzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIHBvc3NpYmx5IHNvbWUgc291cmNlIGNvZGUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGF0IGRldmljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE5OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MTIuMjY5NjIyNDYyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDU6XFx0Y29uZmlnIFJUTDgxODBcXG4gICA2OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgxODAvODE4NS84MTg3U0UgUENJIHN1cHBvcnRcXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgIDg6XFx0XFx0c2VsZWN0IEVFUFJPTV85M0NYNlxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGlzIGlzIGEgZHJpdmVyIGZvciBSVEw4MTgwLCBSVEw4MTg1IGFuZCBSVEw4MTg3U0UgYmFzZWQgY2FyZHMuXFxuICAxMTpcXHRcXHQgIFRoZXNlIGFyZSBQQ0kgYmFzZWQgY2hpcHMgZm91bmQgaW4gY2FyZHMgc3VjaCBhczpcXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICAoUlRMODE4NSA4MDIuMTFnKVxcbiAgMTQ6XFx0XFx0ICBBLUxpbmsgV0w1NFBDXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgKFJUTDgxODAgODAyLjExYilcXG4gIDE3OlxcdFxcdCAgQmVsa2luIEY1RDYwMjAgdjNcXG4gIDE4OlxcdFxcdCAgQmVsa2luIEY1RDYwMjAgdjNcXG4gIDE5OlxcdFxcdCAgRGxpbmsgRFdMLTYxMFxcbiAgMjA6XFx0XFx0ICBEbGluayBEV0wtNTEwXFxuICAyMTpcXHRcXHQgIE5ldGdlYXIgTUE1MjFcXG4gIDIyOlxcdFxcdCAgTGV2ZWwtT25lIFdQQy0wMTAxXFxuICAyMzpcXHRcXHQgIEFjZXIgQXNwaXJlIDEzNTcgTE1pXFxuICAyNDpcXHRcXHQgIFZDVG5ldCBQQy0xMUIxXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjEyLjI2OTY5NjkwMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzA2MDA1NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlByaW9yaXRpemluZyBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgbW9zdCBwcm9taXNpbmcgZnV6emluZyB0YXJnZXRzIGdpdmVuIHRoZSBwcm92aWRlZCBjb250ZXh0LiBJIHNlZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBgTUFDODAyMTFgIGFuZCBgUENJYCwgd2l0aCB0aGUgZHJpdmVycyBiZWluZyBgUlRMODE4MGAgKFBDSSkgYW5kIGBSVEw4MTg3YCAoVVNCKS5cblxuTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbGVhbiB0b3dhcmRzIGBSVEw4MTg3YCBiZWNhdXNlIGl0J3MgYSBVU0IgZHJpdmVyLiBVU0IgZHJpdmVycyBhcmUgdHlwaWNhbGx5IGVhc2llciB0byBmdXp6IHVzaW5nIGZyYW1ld29ya3MgbGlrZSBgZHVtbXlfaGNkYCwgYW5kIHRoZSBwYXRjaCBmaXhlcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBgcnRsODE4N19wcm9iZWAgYW5kIGBydGw4MTgwX2VlcHJvbV9yZWFkYC4gVGhlIGFkdmFudGFnZSB3aXRoIGBydGw4MTg3X3Byb2JlYCBpcyB0aGF0IHRoaXMgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciB0aGUgVVNCIGRyaXZlci4gYHJ0bDgxODBfZWVwcm9tX3JlYWRgIGlzIGNhbGxlZCBmcm9tIHRoZSBwcm9iZSBmb3IgdGhlIFBDSSBkcml2ZXIuICBQQ0kgZHJpdmVycyBhcmUgdHJpY2tpZXIgaW4gc3RhbmRhcmQgUUVNVTsgdW5sZXNzIHRoZXJlIGlzIGEgUENJIGZ1enppbmcgZnJhbWV3b3JrLCBVU0IgaXMgdGhlIG9idmlvdXMgY2hvaWNlLlxuXG5UaGVuIEkgZ2V0IGEgcmVtaW5kZXIgZnJvbSB0aGUgcHJvbXB0OiBpdCdzIGZvY3VzaW5nIG9uICpzcGVjaWZpYyogUENJZSBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSwgbGlrZSBmb3IgUENJZSBzd2l0Y2ggYW5kIEdQVSBkcml2ZXJzLiBgUlRMODE4MGAgaXMganVzdCBhIGdlbmVyaWMgd2lyZWxlc3MgUENJIGRyaXZlciwgc28gdGhhdCBkb2Vzbid0IGFwcGx5LiBJJ20gcmVjYWxsaW5nIHRoYXQgU3l6a2FsbGVyIGRvZXMgaGF2ZSAqc29tZSogUENJIGZ1enppbmcgY2FwYWJpbGl0eSB2aWEgYHN5el9wY2lfZGV2aWNlYCwgYnV0IFVTQiBpcyBkZWZpbml0ZWx5IGJldHRlciBzdXBwb3J0ZWQgd2l0aCBgc3l6X3VzYl9jb25uZWN0YC5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIGxldCdzIGNvbmZpcm0gdGhlIHByb2JlIGZ1bmN0aW9ucyBhcmUgZ29vZCBjaG9pY2VzLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEknbSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGVudHJ5cG9pbnRzLiBgcnRsODE4N19wcm9iZWAgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciBVU0IsIGFuZCBgcnRsODE4MF9wcm9iZWAgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciBQQ0kuIE9rYXksIGdvb2QuXG5cbk5vdywgYSBjcml0aWNhbCB0aG91Z2h0OiB0aGUgcHJvbXB0IHByZWZlcnMgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgc2VlIHRoYXQgYHJ0bDgxODBfZWVwcm9tX3JlYWRgIGlzIHN0YXRpYy4gU2luY2UgYHJ0bDgxODBfcHJvYmVgIGlzIG5vbi1zdGF0aWMsIEkgc2hvdWxkIGZvY3VzIG9uIGBydGw4MTgwX3Byb2JlYC4gU2FtZSBxdWVzdGlvbiBmb3IgdGhlIFVTQiBzaWRlOiBgcnRsODE4N19wcm9iZWAgaXMgc3RhdGljIHRvbz8gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Nzk4LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MTkuNTc1NzA1ODI3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDcxMTk4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODE4N19wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYz0xNDIzPXN0YXRpYyB2b2lkIHJ0bDgxODdfZWVwcm9tX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBlZXByb21fOTNjeDYgKmVlcHJvbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jLTE0NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmM6MTQ0MjpzdGF0aWMgaW50IHJ0bDgxODdfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmMtMTQ0My1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYz0xNjg5PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydGw4MTg3X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jLTE2OTEtXFx0LmlkX3RhYmxlXFx0PSBydGw4MTg3X3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jOjE2OTI6XFx0LnByb2JlXFx0XFx0PSBydGw4MTg3X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jLTE2OTMtXFx0LmRpc2Nvbm5lY3RcXHQ9IHJ0bDgxODdfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MTkuNjgyODMxNDQ3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDEwODI5MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBhcyBhbiBleHBlcnQgaW4gdGhpcyBhcmVhOlxuXG4qKkFuYWx5emluZyBEcml2ZXIgUHJvYmUgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgcHJvYmUgZnVuY3Rpb25zLCBgcnRsODE4N19wcm9iZWAgYW5kIGBydGw4MTgwX3Byb2JlYC4gVGhlIGtleSBwb2ludCBoZXJlIGlzIHRoYXQgdGhleSdyZSBib3RoIGRlY2xhcmVkIGBzdGF0aWNgLCBidXQgdGhleSdyZSBhY3RpbmcgYXMgdGhlIGAucHJvYmVgIGNhbGxiYWNrIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIFVTQiBhbmQgUENJIGRyaXZlcnMuIEkga25vdyBhIHN0YXRpYyBmdW5jdGlvbiBpcywgYnkgZGVmYXVsdCwgb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgY29tcGlsYXRpb24gdW5pdCBpdCdzIGRlZmluZWQgaW4uIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgYHJ0bDgxODdfcHJvYmVgJ3MgYWRkcmVzcyBpcyB0YWtlbiwgc3BlY2lmaWNhbGx5LCB0aGF0IGl0cyBhZGRyZXNzIGlzIGJlaW5nIGFzc2lnbmVkIGFzIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgYSBVU0IgZHJpdmVyIG1lYW5zIGl0ICppcyogYSB2YWxpZCBzeW1ib2wgZXh0ZXJuYWxseSwgZXZlbiB0aG91Z2ggaXQncyBgc3RhdGljYC4gVGhpcyBpcyBhIHZlcnkgY29tbW9uIHBhdHRlcm4gaW4gZHJpdmVyIGRldmVsb3BtZW50LCBhIHByb2JlIGNhbGxiYWNrIGlzIGFzc2lnbmVkLCBpdOKAmXMgbm90IGlubGluZWQgYmVjYXVzZSBpdCBuZWVkcyBhbiBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkIHNvIGl0IGJlY29tZXMgZXh0ZXJuYWxseSB2aXNpYmxlIGFuZCBjYW4gYmUgY2FsbGVkIGJ5IHRoZSBkcml2ZXIgY29yZS4gVGhlIGNvbXBpbGVyIGtub3dzIHRvIG1ha2UgaXQgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlLCBldmVuIHRob3VnaCBpdCBpcyBzdGF0aWNhbGx5IGRlY2xhcmVkLiBUaGlzIGlzIGFsc28gaG93IGl0IHdvcmtzIGZvciBgcnRsODE4MF9wcm9iZWAgYW5kIHRoZSBQQ0kgZHJpdmVyOyBubyBzdXJwcmlzZXMgdGhlcmUuIFRoaXMgaXMgYWxsIHN0YW5kYXJkIGRyaXZlciBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMzAsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MToyMy40MjM5MTc5OTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTcxMDQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGw4MTgwX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE2NTM9c3RhdGljIHZvaWQgcnRsODE4MF9lZXByb21fcmVhZChzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMtMTcyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYzoxNzMwOnN0YXRpYyBpbnQgcnRsODE4MF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xNzMxLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE5ODM9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ0bDgxODBfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMtMTk4NS1cXHQuaWRfdGFibGVcXHQ9IHJ0bDgxODBfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM6MTk4NjpcXHQucHJvYmVcXHRcXHQ9IHJ0bDgxODBfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMtMTk4Ny1cXHQucmVtb3ZlXFx0XFx0PSBydGw4MTgwX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MjMuNTQzNjM1NTQ1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4Mzg4NjQwMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXMgXHUwMDI2IEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLiBGaXJzdCBvZmYsIGl0J3MgY2xlYXIgdGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgKnN0YXRpY2FsbHkqIGRlZmluZWQsIGJ1dCB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuLiBUaGlzIG1lYW5zIHRoZXkncmUgKm5vdCogZ29pbmcgdG8gYmUgaW5saW5lZCBhbmQgZWFjaCB3aWxsIGhhdmUgaXRzIG93biBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcyDigJMgZ29vZCB0byBrbm93IGZvciBsYXRlciBkZWJ1Z2dpbmcuXG5cbkZ1bmN0aW9uYWxseSwgdGhlIHBhdGNoIG1ha2VzIGEgZGVmaW5pdGUgaW1wcm92ZW1lbnQuIEl0IGluaXRpYWxpemVzIGEgc3RydWN0dXJlIHRvIHplcm8sIHdoaWNoIGlzIGNyaXRpY2FsIGZvciBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoYXTigJlzIGEgY29tbW9uIHNvdXJjZSBvZiBidWdzIHdlIHNob3VsZCBiZSB0YXJnZXRpbmcgaW4gZnV6emluZy5cblxuTG9va2luZyBhdCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZXMsIGl0J3MgaGl0dGluZyByZWFjaGFibGUgZHJpdmVycyDigJMgc3BlY2lmaWNhbGx5IFVTQiBhbmQgUENJLiBUaGF04oCZcyBhIHNvbGlkIGluZGljYXRvciB0aGlzIGlzIHNvbWV0aGluZyB0byBwYXkgYXR0ZW50aW9uIHRvLiBHaXZlbiB0aGUgaW1wYWN0LCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5vdyBmb3IgdGhlIHRhcmdldGVkIHN5bWJvbHMuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZTogYHJ0bDgxODdfcHJvYmVgIGFuZCBgcnRsODE4MF9wcm9iZWAuIFJpZ2h0LCBzbyB0aGlzIGlzIGFib3V0IFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVycywgZ290IGl0LlxuXG5Gb3IgZW5hYmxpbmcgY29uZmlndXJhdGlvbnMsIGl0IGxpc3RzIGBSVEw4MTgwYCwgYFJUTDgxODdgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBQQ0lgLiBIYW5nIG9uLCBgVVNCYCBhbmQgYFBDSWAgYXJlIHByb2JhYmx5IGFscmVhZHkgZW5hYmxlZCBieSBkZWZhdWx0IGluIG91ciBzZXR1cCwgYnV0IGl0IGRvZXNuJ3QgaHVydCB0byBiZSBleHBsaWNpdCwgc28gSSdsbCBrZWVwIHRoZW0uIGBNQUM4MDIxMWAgaXMgYWJzb2x1dGVseSBlc3NlbnRpYWwgaGVyZSwgbm8gcXVlc3Rpb24gYWJvdXQgaXQuXG5cbkxldCdzIGNoZWNrIGZvciBhbnkgKm90aGVyKiBkZXBlbmRlbmNpZXMuIEhtbSwgbG9va3MgbGlrZSBgUlRMODE4N2AgZGVwZW5kcyBvbiBgTUFDODAyMTEgXHUwMDI2XHUwMDI2IFVTQmAuIEFuZCBgUlRMODE4MGAgZGVwZW5kcyBvbiBgTUFDODAyMTEgXHUwMDI2XHUwMDI2IFBDSWAuIE9rYXksIEkgd2lsbCBkb3VibGUgY2hlY2sgdGhvc2UgY29uZmlndXJhdGlvbnMsIGp1c3QgdG8gYmUgc3VyZSB3ZSBhcmUgbm90IG1pc3NpbmcgYW55IGltcG9ydGFudCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gTGV0IG1lIHNlZSBpZiBgTUFDODAyMTFgIGhhcyBpdHMgb3duIGRlcGVuZGVuY2llcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTgwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjI4LjM4MjUwMTg0NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY3OTczOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MjguNDc5MzA1NTUzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzMxNTYwMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlbTpcblxuKipNQUM4MDIxMSBhbmQgQ0ZHODAyMTE6IEEgRGVwZW5kZW5jeSB0byBSZW1lbWJlcioqXG5cblJpZ2h0LCBzbywgbGV0J3MgZ2V0IHRoaXMgc3RyYWlnaHQgaW4gbXkgaGVhZC4gKk1BQzgwMjExKi4uLiB0aGF0J3MgdGhlIGNvcmUgb2YgdGhlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3RhY2ssIGlzbid0IGl0PyBUaGUgb25lIHRoYXQgaGFuZGxlcyBhbGwgdGhlIG1lZGl1bSBhY2Nlc3MgY29udHJvbCwgZnJhbWUgbWFuYWdlbWVudCwgYW5kIGFsbCB0aGF0IGxvdy1sZXZlbCB3aXJlbGVzcyBzdHVmZi4gQW5kIHRoZW4gdGhlcmUncyAqQ0ZHODAyMTEqLCB3aGljaCBzZWVtcyBsaWtlIGEgYml0IG9mIGEgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UsIHllYWg/IEl0J3MgYSBzdGFuZGFyZCBpbnRlcmZhY2UgZm9yIGNvbmZpZ3VyaW5nIHdpcmVsZXNzIGRldmljZXMuXG5cblRoZSBrZXkgdGhpbmcgSSBuZWVkIHRvIHJlbWVtYmVyLCBhbmQgdGhpcyBpcyBjcnVjaWFsIGZvciB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUsIGlzIHRoYXQgKk1BQzgwMjExKiAqZGVwZW5kcyogb24gKkNGRzgwMjExKi4gVGhleSBhcmUgbm90IGluZGVwZW5kZW50IG1vZHVsZXMuIFNvICpDRkc4MDIxMSogcHJvdmlkZXMgdGhlIGludGVyZmFjZXMgdGhhdCAqTUFDODAyMTEqIHVzZXMgdG8gZG8gaXRzIHdvcmsuIFRoaW5rIG9mIGl0IGFzIE1BQzgwMjExIHJlbHlpbmcgb24gQ0ZHODAyMTEgZm9yIGl0cyBjb25maWd1cmF0aW9uIGFuZCByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbi4gR290IGl0LiBUaGF0J3MgYSBmdW5kYW1lbnRhbCByZWxhdGlvbnNoaXAuIEkgbmVlZCB0byBrZWVwIHRoYXQgZGVwZW5kZW5jeSBpbiBtaW5kIHdoZW4gd29ya2luZyB3aXRoIHRoZXNlIGNvbXBvbmVudHMuIElmIEknbSB0cm91Ymxlc2hvb3Rpbmcgb3IgZXh0ZW5kaW5nIHRoZSBzdGFjaywgdGhpcyByZWxhdGlvbnNoaXAgd2lsbCBkaWN0YXRlIGEgbG90IG9mIG15IGFwcHJvYWNoLiBLbm93aW5nIHRoYXQgKk1BQzgwMjExKiAqdXNlcyogKkNGRzgwMjExKiBpcyB0aGUgbWVudGFsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZWlyIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg1NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjMyLjAxMjQ2NTMyNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzODE0Mzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRkc4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cXHRib29sIFxcXCJjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cXHRib29sIFxcXCJlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJzdXBwb3J0IENSREFcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MzIuMTY2Mjg0ODgxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMjgxNzkxOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gQ0ZHODAyMTEgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgcmlkaW5nIG9uIGBDRkc4MDIxMWAgdG9kYXkuIEl0J3MgYSBjcml0aWNhbCBwaWVjZSwgYW5kIGFueSBjaGFuZ2UgSSBtYWtlIG5lZWRzIHRvIGJlIG1ldGljdWxvdXNseSBwbGFubmVkLCBzbyBsZXQncyBzdGFydCB3aXRoIGEgZGVwZW5kZW5jeSBhbmFseXNpcy4gVGltZSB0byB0cmFjZSB0aGUgbGluZWFnZSBhbmQgc2VlIHdoYXQgdGhpcyBiZWFzdCBpcyBjb25uZWN0ZWQgdG8gaW4gdGhlIHN0YWNrLiBXaGF0IG1vZHVsZXMgZGVwZW5kIG9uIHRoaXM/IFdoYXQgYXNwZWN0cyBvZiB0aGUgbmV0d29ya2luZyBzdGFjayBhcmUgZnVuZGFtZW50YWxseSB0aWVkIHRvIHRoaXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUgZG93bnN0cmVhbSBpbXBsaWNhdGlvbnMgYmVmb3JlIEkgZXZlbiBjb25zaWRlciBtYWtpbmcgYSB0d2Vhay4gSXTigJlzIGxpa2Ugc3VyZ2VyeTsgeW91IGRvbid0IHN0YXJ0IGN1dHRpbmcgd2l0aG91dCBrbm93aW5nIHRoZSBwYXRpZW50J3MgZnVsbCBhbmF0b215LiBMZXTigJlzIGlkZW50aWZ5IHRoZSBwb3RlbnRpYWwgcmlwcGxlIGVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTQyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MzUuMTk0NDY3MDA4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNyxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAxNzpcXHRjb25maWcgQ0ZHODAyMTFcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxcbiAgMjA6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgMjE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAyMjpcXHRcXHQjIG1heSBuZWVkIHRvIHVwZGF0ZSB0aGlzIHdoZW4gY2VydGlmaWNhdGVzIGFyZSBjaGFuZ2VkIGFuZCBhcmVcXG4gIDIzOlxcdFxcdCMgdXNpbmcgYSBkaWZmZXJlbnQgYWxnb3JpdGhtLCB0aG91Z2ggcmlnaHQgbm93IHRoZXkgc2hvdWxkbid0XFxuICAyNDpcXHRcXHQjICh0aGlzIGlzIGhlcmUgcmF0aGVyIHRoYW4gYmVsb3cgdG8gYWxsb3cgaXQgdG8gYmUgYSBtb2R1bGUpXFxuICAyNTpcXHRcXHRzZWxlY3QgQ1JZUFRPX1NIQTI1NiBpZiBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcXG4gIDI2OlxcdFxcdGhlbHBcXG4gIDI3OlxcdFxcdCAgY2ZnODAyMTEgaXMgdGhlIExpbnV4IHdpcmVsZXNzIExBTiAoODAyLjExKSBjb25maWd1cmF0aW9uIEFQSS5cXG4gIDI4OlxcdFxcdCAgRW5hYmxlIHRoaXMgaWYgeW91IGhhdmUgYSB3aXJlbGVzcyBkZXZpY2UuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gcmVmZXIgdG8gZG9jdW1lbnRhdGlvbiBvbiB0aGUgd2lyZWxlc3Mgd2lraTpcXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi9kZXZlbG9wZXJzL0RvY3VtZW50YXRpb24vY2ZnODAyMTFcXG4gIDMzOlxcdFxcbiAgMzQ6XFx0XFx0ICBXaGVuIGJ1aWx0IGFzIGEgbW9kdWxlIGl0IHdpbGwgYmUgY2FsbGVkIGNmZzgwMjExLlxcbiAgMzU6XFx0XFxuICAzNjpcXHRpZiBDRkc4MDIxMVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTozNS4xOTQ1NzYwODhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyNzM2NTYxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZGVwZW5kZW5jaWVzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKk15IFdpcmVsZXNzIERyaXZlciBEZXBlbmRlbmN5IENoZWNrbGlzdCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJJ20gdGhpbmtpbmcsIFwiTm8gc3VycHJpc2VzIHRoZXJlLCBgQ0ZHODAyMTFgIGlzIGFic29sdXRlbHkgZnVuZGFtZW50YWwuIFdlIGNhbid0IGRvIGFueXRoaW5nIHdpdGhvdXQgdGhhdCBjb25maWd1cmF0aW9uIGZyYW1ld29yay5cIiBUaGF0J3MgdGhlIGJhc2VsaW5lLCBlc3NlbnRpYWxseS5cblxuVGhlbiwgb2YgY291cnNlLCBjb21lcyBgTUFDODAyMTFgLiBUaGF0J3MgdGhlIG1lZGlhIGFjY2VzcyBjb250cm9sIGxheWVyLCB0aGUgd29ya2hvcnNlLiBJdCBwcm92aWRlcyB0aGUgY29yZSB3aXJlbGVzcyBmdW5jdGlvbmFsaXR5IGFuZCBuZWVkcyB0byBiZSBwcmVzZW50IHRvIGZ1bmN0aW9uLlxuXG5Ob3csIHdlIGdldCBkb3duIHRvIHRoZSBoYXJkd2FyZSBzaWRlLCBteSBtaW5kIGdvZXMgdG8gdGhlIGBSVEw4MTgwYCBhbmQgYFJUTDgxODdgLiBUaGVzZSBhcmUgc3BlY2lmaWNhbGx5IFJlYWx0ZWsgY2hpcHMgd2UgYXJlIG1lbnRpb25pbmcuIEknbSBub3RpbmcgdGhlIHNwZWNpZmljIGNoaXBzIHRvIGNvbnNpZGVyIHRoZSBzcGVjaWZpYyBkcml2ZXIgaW1wbGVtZW50YXRpb25zLlxuXG5BcyBleHBlY3RlZCwgYFVTQmAgYW5kIGBQQ0lgIGFyZSBuZXh0LiBUaGF0IGp1c3QgaGlnaGxpZ2h0cyB0aGUgcGh5c2ljYWwgaW50ZXJmYWNlcyB3ZSdyZSBkZWFsaW5nIHdpdGguIEl0IHdvdWxkIGJlIGhpZ2hseSB1bnVzdWFsIGlmIHRoZSBoYXJkd2FyZSB3YXMgY29ubmVjdGVkIHNvbWUgb3RoZXIgd2F5LlxuXG5GaW5hbGx5LCBgV0xBTmAgaXMgdGhlIG92ZXJhcmNoaW5nLCB3aXJlbGVzcyBsb2NhbCBhcmVhIG5ldHdvcmsgYXNwZWN0LiBUaGF0IGVuY29tcGFzc2VzIGFsbCB0aGUgcGllY2VzIGFib3ZlLiBKdXN0IGEgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgcmlnaHQgdGhpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY5MSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MzguNzIxOTQ0NDg0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzk0NDI5NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFdMQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZzo2Om1lbnVjb25maWcgV0xBTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctNy1cXHRib29sIFxcXCJXaXJlbGVzcyBMQU5cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjM4Ljg2MTM5NDY2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODU1NTg0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCdzIG15IG93biBpbnRlcm5hbCBkaWFsb2d1ZTpcblxuKipDaGVja2luZyB0aGUgV0xBTiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIGludG8gYW55dGhpbmcgZWxzZSwgbGV0J3MgdGFrZSBhIHF1aWNrIHNhbml0eSBjaGVjay4gVGhlIG1lbnRpb24gb2YgYFdMQU5gIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIHNjYW4gb2YgdGhlIHN5c3RlbSdzIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG92ZXJsb29raW5nIGFueSBvYnZpb3VzIGRlcGVuZGVuY2llcyBvciBwb3RlbnRpYWwgY29uZmxpY3RzLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHN0YW5kYXJkIG5ldHdvcmsgc3RhY2ssIHRoZSBkcml2ZXJzLCBwb3RlbnRpYWwgZmlybXdhcmUgdmVyc2lvbnMsIGFuZCBvZiBjb3Vyc2UgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMuIEl0IGlzIGFsc28gaW1wb3J0YW50IHRvIGNvbnNpZGVyOiBXaGF0IG90aGVyIG1vZHVsZXMgY291bGQgYmUgaW1wYWN0ZWQ/IEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIHJlY2VudCBjaGFuZ2VzIGluIHRoZSBgV0xBTmAgc3BhY2Ugd2hpY2ggY291bGQgZWZmZWN0IHRoaXM/IEknbSBnb2luZyB0byBzdGFydCBieSBnb2luZyB0aHJvdWdoIHRoZSBjb2RlYmFzZSwgdG8gdmVyaWZ5IHRoZSB2YXJpb3VzIGNvbXBvbmVudHMnIGludGVyZGVwZW5kZW5jaWVzLCBjb25maXJtIGFsbCB0aGUgbmVjZXNzYXJ5IGxpYnJhcmllcyBhcmUgaW4gcGxhY2UsIGFuZCBkZXRlcm1pbmUgaWYgZXZlcnl0aGluZyBpcyB1cC10by1kYXRlLiBOZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgYmVmb3JlIG1vdmluZyBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzEwNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjQyLjA0Njk2NjM4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDY6XFx0bWVudWNvbmZpZyBXTEFOXFxuICAgNzpcXHRcXHRib29sIFxcXCJXaXJlbGVzcyBMQU5cXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uICFTMzkwXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uIE5FVFxcbiAgMTA6XFx0XFx0c2VsZWN0IFdJUkVMRVNTXFxuICAxMTpcXHRcXHRkZWZhdWx0IHlcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGFsbCB0aGUgcHJlIDgwMi4xMSBhbmQgODAyLjExIHdpcmVsZXNzXFxuICAxNDpcXHRcXHQgIGRldmljZSBkcml2ZXJzLiBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIGRyaXZlcnMgYW5kIGRvY3VtZW50YXRpb25cXG4gIDE1OlxcdFxcdCAgb24gdGhlbSByZWZlciB0byB0aGUgd2lyZWxlc3Mgd2lraTpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6NDIuMDQ3MDc4MjRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyODYyNDc2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqV2lyZWxlc3MgSW5mcmFzdHJ1Y3R1cmUgQ2hlY2sqKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgbmVlZCBmb3IgYSBgV0xBTmAgY29tcG9uZW50LiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQsIGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGUgYFdJUkVMRVNTYCBkZXBlbmRlbmNpZXMuIFRoYXQncyB3aGVyZSB0aGUgcmVhbCBjb21wbGV4aXR5IGxpZXMsIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcnBsYXkgdGhlcmUgd2lsbCBkZXRlcm1pbmUgdGhlIGZlYXNpYmlsaXR5IGFuZCBiZXN0IGFwcHJvYWNoLiBJIG5lZWQgdG8ga25vdyB3aGljaCB0ZWNobm9sb2dpZXMgYXJlIGJlaW5nIGNvbnNpZGVyZWQsIGFuZCBob3cgdGhleSB3aWxsIGludGVyb3BlcmF0ZS4gSSdtIHRoaW5raW5nOiA4MDIuMTFheCwgcGVyaGFwcz8gT3IgZXZlbiBmdXR1cmUtcHJvb2Zpbmcgd2l0aCBhIGxvb2sgYXQgODAyLjExYmU/IFRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgYXJlIGFsc28gdG9wIG9mIG1pbmQg4oCTIFdQQTMsIG9idmlvdXNseSwgYnV0IHdoYXQgYWJvdXQgZmluZS1ncmFpbmVkIGFjY2VzcyBjb250cm9sIGFuZCBzZWdtZW50YXRpb24/IFRoaXMgZWFybHkgc3RhZ2Ugc2V0cyB0aGUgc3RhZ2UgZm9yIHRoZSByZXN0IG9mIHRoZSB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQ5OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6NDQuOTc1NzA2MzcyWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg3NDE3OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFdJUkVMRVNTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3dpcmVsZXNzL0tjb25maWc6Mjpjb25maWcgV0lSRUxFU1NfRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMy1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjQ1LjA4NDQ1MzMyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDI0MjEwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipLY29uZmlnIExvY2F0aW9uIENoZWNrKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoZXJlIGEgc3BlY2lmaWMgS2NvbmZpZyBvcHRpb24gcmVsYXRlZCB0byB3aXJlbGVzcyBuZXR3b3JraW5nIHJlc2lkZXMuIFRoZSBrbmVlLWplcmsgcmVhY3Rpb24gaXMgdG8gdGhpbmssIFwiV2VsbCwgKm9mIGNvdXJzZSogaXQncyBpbiBgbmV0L3dpcmVsZXNzL0tjb25maWdgLlwiIFRoYXQncyB0aGUgbG9naWNhbCBwbGFjZSwgdGhlIG1vc3Qgb2J2aW91cyBkaXJlY3RvcnkuIEJ1dCB3YWl0Li4uIGlzIGl0ICphbHdheXMqIHRoYXQgc3RyYWlnaHRmb3J3YXJkPyBTb21ldGltZXMgdGhlc2UgdGhpbmdzIGFyZSBjcm9zcy1saW5rZWQgb3IgcGxhY2VkIGluIG1vcmUgZ2VuZXJhbCBhcmVhcyBmb3IgYnJvYWRlciBkZXBlbmRlbmNpZXMuIE1heWJlIGl0IHdhcyBnZW5lcmFsaXplZCwgYW5kIHB1dCBpdCBpbiBgbmV0L0tjb25maWdgPyBJdCBjb3VsZCBiZSwgZGVwZW5kaW5nIG9uIGhvdyB0aGF0IGZ1bmN0aW9uYWxpdHkgaXMgYnVpbHQuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0LiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IGFsdGVybmF0aXZlLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3ODQsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTo0Ny45ODY4Nzg1OTJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MjY5NTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBXSVJFTEVTU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz00MjM9Y29uZmlnIEZJQl9SVUxFU1xcbi0tXFxubmV0L0tjb25maWctNDI1LVxcbm5ldC9LY29uZmlnOjQyNjptZW51Y29uZmlnIFdJUkVMRVNTXFxubmV0L0tjb25maWctNDI3LVxcdGJvb2wgXFxcIldpcmVsZXNzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTo0OC4wODQxNTI4MzlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyOTc4OTcwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgV0lSRUxFU1MgRGVwZW5kZW5jaWVzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgYFdJUkVMRVNTYCBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgbGlicmFyaWVzLCBtb2R1bGVzLCBvciBzZXJ2aWNlcyB0aGlzIGNvbXBvbmVudCByZWxpZXMgdXBvbi4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGNoZWNrOyBJJ20gbG9va2luZyBmb3IgYSBkZXRhaWxlZCBkZXBlbmRlbmN5IGdyYXBoLiBJJ2xsIG5lZWQgdG8ga25vdyBub3Qgb25seSB0aGUgZGlyZWN0IGRlcGVuZGVuY2llcywgYnV0IGFsc28gdGhlIHRyYW5zaXRpdmUgb25lcyDigJMgdGhvc2UgZGVwZW5kZW5jaWVzIG9mIGRlcGVuZGVuY2llcy4gV2hhdCB2ZXJzaW9uIHJhbmdlcyBhcmUgd2UgZGVhbGluZyB3aXRoPyBBcmUgdGhleSBwaW5uZWQsIG9yIGZsZXhpYmxlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaG9zZW4gdmVyc2lvbnM/XG5cbk15IGdvYWwgaGVyZSBpcyB0byBpZGVudGlmeSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLCBjb25mbGljdHMsIG9yIGluZWZmaWNpZW5jaWVzLiBJJ20gdGhpbmtpbmcgYWJvdXQga25vd24gQ1ZFcyB3aXRoaW4gdGhlIGRlcGVuZGVuY2llcywgYW5kIHdoZXRoZXIgdGhleeKAmXJlIHByb3Blcmx5IG1pdGlnYXRlZC4gSSdsbCBhbHNvIGJlIGNvbnNpZGVyaW5nIHdoZXRoZXIgdGhlIGRlcGVuZGVuY2llcyBhcmUgd2VsbC1tYWludGFpbmVkLCBhbmQgaWYgdGhleSByZXByZXNlbnQgYSBzb3VyY2Ugb2YgdGVjaG5pY2FsIGRlYnQuIEkgd2FudCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY2llcywgc28gSSBrbm93IHdoZXJlIHRvIGZvY3VzIGFueSBuZWNlc3NhcnkgYXVkaXRzIG9yIHVwZ3JhZGVzLiBJdCdzIHRpbWUgdG8gYnVpbGQgdGhlIG1hcCFcblxuXG4iLCJJbnB1dFRva2VucyI6MTQwNjksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTo1MS4xMTM5NDYwMjVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQyNixcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQyNjpcXHRtZW51Y29uZmlnIFdJUkVMRVNTXFxuIDQyNzpcXHRcXHRib29sIFxcXCJXaXJlbGVzc1xcXCJcXG4gNDI4OlxcdFxcdGRlcGVuZHMgb24gIVMzOTBcXG4gNDI5OlxcdFxcdGRlZmF1bHQgeVxcbiA0MzA6XFx0XFxuIDQzMTpcXHRpZiBXSVJFTEVTU1xcbiA0MzI6XFx0XFxuIDQzMzpcXHRzb3VyY2UgXFxcIm5ldC93aXJlbGVzcy9LY29uZmlnXFxcIlxcbiA0MzQ6XFx0c291cmNlIFxcXCJuZXQvbWFjODAyMTEvS2NvbmZpZ1xcXCJcXG4gNDM1OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTo1MS4xMTQxMDUyNjVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3MzE2MzE5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXM6XG5cbioqV2lyZWxlc3MgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIHRoZSBkZWZhdWx0IHNldHVwIHNlZW1zIHRvIGJlIG9wZXJhdGluZyBvbiBhIGBXSVJFTEVTU2Agc2V0dGluZywgc3BlY2lmaWNhbGx5LCBhIGB5YCBkZXNpZ25hdGlvbi4gR29vZC4gTm93LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGludm9sdmVkOiBgV0xBTmAsIGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIHdoaWNoIGFyZSBmb3VuZGF0aW9uYWwgZm9yIHdpcmVsZXNzIG9wZXJhdGlvbi4gQW5kIG9mIGNvdXJzZSwgdGhlcmUgYXJlIHNwZWNpZmljIGRyaXZlcnMgcmVsYXRlZCB0byBoYXJkd2FyZTogYFJUTDgxODBgIGFuZCBgUlRMODE4N2AuIEl0J3MgYSBQQ0kgb3IgVVNCIHN5c3RlbSwgc28gdGhvc2Ugb3B0aW9ucyBhcmUgaW1wb3J0YW50OiBgVVNCYCBhbmQgYFBDSWAuXG5cbkkgbmVlZCB0byBxdWlja2x5IHNjYW4gdG8gc2VlIGlmIHRoZXJlIGlzIHNvbWV0aGluZyBsaWtlIGBSVEw4MThYYC4uLiBvciBhbnl0aGluZyBsaWtlIHRoYXQgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQ1NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6NTQuMzg3MjcxMTVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTc3NzI1NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUTDgxOFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjU0Ljg3OTA1OTkyNFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTg5NDM0NzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBLZXJuZWwgQ29uZmlndXJhdGlvbiBJbmNsdXNpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIHN0dW1ibGVkIHVwb24gYSByZWZlcmVuY2UgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnYC4gUmlnaHQsIGl0J3MgaW5jbHVkZWQgZnJvbSBzb21ld2hlcmUgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSdzIHRoaXMgYmVpbmcgYnJvdWdodCBpbnRvIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3M/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY3kgY2hhaW4gdGhhdCBsZWFkcyB0byB0aGlzIHBhcnRpY3VsYXIgS2NvbmZpZyBmaWxlIGJlaW5nIHBhcnNlZC4gVGhpcyBpcyBjcnVjaWFsIGZvciB0cmFjaW5nIHRoZSBpbmNsdXNpb24gY29uZGl0aW9ucywgcGFydGljdWxhcmx5IGlmIEknbSBsb29raW5nIHRvIGRpc2FibGUgb3IgbW9kaWZ5IHRoZSBkcml2ZXIncyBidWlsZCBvcHRpb25zLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgYW5kIG1ha2VmaWxlcyBmb3IgdGhlIGRpcmVjdCBvciBpbmRpcmVjdCBpbmNsdXNpb24gb2YgdGhpcyBzcGVjaWZpYyBmaWxlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGBzb3VyY2VgLCBgaW5jbHVkZWAsIG9yIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMgdGhhdCBjb3VsZCBiZSBwdWxsaW5nIHRoaXMgS2NvbmZpZyBpbnRvIHRoZSBidWlsZC4gVGhlbiBJIGNhbiBkZXRlcm1pbmUgd2hlcmUgdGhpcyBjb25maWd1cmF0aW9uIGZvciB0aGUgUmVhbHRlayBSVEw4MTh4IHdpcmVsZXNzIGRyaXZlciBpcyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc2NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjU5LjA2ODQ5NzE1N1oiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg2MTU1NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODE4eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX1JFQUxURUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnOjE1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnLTE2LXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjU5LjE2NzExNzA1NFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk4MjEzMTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBSZWFsdGVrIERyaXZlciBSZXF1aXJlbWVudCoqXG5cbkFscmlnaHQsIHNvIHRoZSBwcm9qZWN0J3MgYXQgYSBwb2ludCB3aGVyZSBJIG5lZWQgdG8gc2VyaW91c2x5IGNvbnNpZGVyIHRoZSB3aXJlbGVzcyBMQU4gaW1wbGVtZW50YXRpb24uIFRoZSBpbW1lZGlhdGUgdGhvdWdodCBmbGFzaGluZyB0aHJvdWdoIG15IG1pbmQgaXMgXCJSaWdodCwgd2UncmUgZGVmaW5pdGVseSBnb2luZyB0byBiZSBkZWFsaW5nIHdpdGggYSBSZWFsdGVrIGNoaXBzZXQgaGVyZSwgYXJlbid0IHdlP1wiIEkgcXVpY2tseSBpZGVudGlmeSB0aGF0IEknbGwgbmVlZCB0byB3b3JrIHdpdGggdGhlIGBXTEFOX1ZFTkRPUl9SRUFMVEVLYCBkcml2ZXIuIE5vIHN1cnByaXNlcyB0aGVyZSwgdGhleSdyZSBldmVyeXdoZXJlLiBOb3cgaXQncyBhIG1hdHRlciBvZiBmaWd1cmluZyBvdXQgd2hpY2ggc3BlY2lmaWMgcmV2aXNpb24sIGFuZCB3aGF0IGtlcm5lbCB2ZXJzaW9ucyB3ZSBuZWVkIHRvIHN1cHBvcnQuIFRoZSBsZXZlbCBvZiBzdXBwb3J0IHZhcmllcyB3aWxkbHksIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3Qgc2lsaWNvbiByZXZpc2lvbi4gVGhpcyBpcyBnb2luZyB0byBpbmZsdWVuY2UgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgc29sdXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTU3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTI6MDMuMTY1MzMyNDhaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzc3OTg3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgV0xBTl9WRU5ET1JfUkVBTFRFS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX1JFQUxURUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWctMy1cXHRib29sIFxcXCJSZWFsdGVrIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUyOjAzLjI4MzExNzkzMloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODk3OTk3NDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIFJlYWx0ZWsgV0xBTiBEZXBlbmRlbmN5IExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYFdMQU5fVkVORE9SX1JFQUxURUtgLiBUaGlzIGxpa2VseSBtZWFucyBJJ20gbG9va2luZyBhdCBhIGRyaXZlciwgYSBmaXJtd2FyZSwgb3Igc29tZSBvdGhlciBtb2R1bGUgc3BlY2lmaWNhbGx5IGJ1aWx0IGZvciBSZWFsdGVrJ3MgV0xBTiBoYXJkd2FyZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbWFwIG91dCB0aGUgZW50aXJlIGRlcGVuZGVuY3kgY2hhaW4g4oCTIHdobyByZWxpZXMgb24gdGhpcywgYW5kIHdoYXQgZG9lcyBpdCAqaXRzZWxmKiBkZXBlbmQgb24/IElzIGl0IHRpZWQgdG8gYSBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbiwgYSBwYXJ0aWN1bGFyIHNldCBvZiBsaWJyYXJpZXMsIG9yIGV2ZW4gb3RoZXIgdmVuZG9yLXNwZWNpZmljIGNvbXBvbmVudHM/IEFyZSB0aGVyZSBhbnkga25vd24gY29tcGF0aWJpbGl0eSBpc3N1ZXMgb3IgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mIGltbWVkaWF0ZWx5PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaW1wYWN0IGlmIHRoZXJlIGFyZSBjaGFuZ2VzIG9yIHBvdGVudGlhbCBwcm9ibGVtcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGF3YXJlIG9mIGV2ZXJ5IHBvc3NpYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQ2NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUyOjA2LjE4MTExODk3NloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX1JFQUxURUtcXG4gICAzOlxcdFxcdGJvb2wgXFxcIlJlYWx0ZWsgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAgOTpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMDpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDExOlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MjowNi4xODEyMzczNTZaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM5MjI2NzIzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVhbHRlayBXTEFOIERyaXZlciBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gYFdMQU5fVkVORE9SX1JFQUxURUtgIGlzIHNldCBhcyB0aGUgZGVmYXVsdCwgd2hpY2ggbWFrZXMgc2Vuc2UuIExldCdzIGdldCBhIGhhbmRsZSBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBXTEFOYCwgYFdMQU5fVkVORE9SX1JFQUxURUtgLCBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBgUlRMODE4MGAsIGBSVEw4MTg3YCwgYFVTQmAsIGFuZCBgUENJYC4gQSBxdWljayBtZW50YWwgY2hlY2suLi4gc2VlbXMgbGlrZSBgUlRMODE4MGAgYW5kIGBSVEw4MTg3YCBhcmUgdGhlIGNvcmUgZHJpdmVycyB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZS5cblxuQWxyaWdodCwgbm93IHRvIGNvbmZpcm0gdGhlIHByb2JlIGZ1bmN0aW9ucyBhcmUgaW5kZWVkIHdoYXQgSSB0aGluayB0aGV5IGFyZS4gWWVzLCBgcnRsODE4MF9wcm9iZWAgYW5kIGBydGw4MTg3X3Byb2JlYCDigJMgdGhvc2UgYXJlIHRoZSBQQ0kgYW5kIFVTQiBkcml2ZXIgcHJvYmUgZnVuY3Rpb25zIHJlc3BlY3RpdmVseS4gQW5kIHRoZXkncmUgbm90IGlubGluZWQsIHdoaWNoIGlzIGV4cGVjdGVkIHNpbmNlIHRoZXkncmUgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHdpdGhpbiB0aGUgZHJpdmVyIHN0cnVjdHVyZXMuXG5cbk9rYXksIGxldCdzIHNlZSB3aGljaCBmaWxlcyB3ZXJlIGFjdHVhbGx5IHRvdWNoZWQuIExvb2tzIGxpa2Ugb25seSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmNgIHdlcmUgbW9kaWZpZWQuXG5cbkFoLCB0aGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlLCBgc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207YCwgaW5pdGlhbGl6aW5nIGl0IHRvIGB7fWAuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlOyB3ZSdyZSBwcmV2ZW50aW5nIHJlYWRzIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIGdvb2QuIEltcG9ydGFudCBmb3IgZnV6emluZyBiZWNhdXNlIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGFyZSBwcmltZSB0YXJnZXRzIGZvciBidWdzLlxuXG5UaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBmb2N1cyBvbiBgcnRsODE4MF9wcm9iZWAgYW5kIGBydGw4MTg3X3Byb2JlYCBmb3Igbm93LCBhbmQgdGhlc2UgYXJlIHRoZSBjb25maWdzIHRvIGVuYWJsZTogYFdMQU5gLCBgV0xBTl9WRU5ET1JfUkVBTFRFS2AsIGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGBSVEw4MTgwYCwgYFJUTDgxODdgLCBgVVNCYCwgYW5kIGBQQ0lgLlxuXG5KdXN0IHF1aWNrbHksIGxldCBtZSBjb25maXJtIGlmIGBydGw4MTgwX2VlcHJvbV9yZWFkYCBpcyBjYWxsZWQgZWxzZXdoZXJlIHRvIHNlZSBpZiB3ZSd2ZSBnb3QgYW55IHBvdGVudGlhbCBzZWNvbmRhcnkgYXR0YWNrIHN1cmZhY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTgzOCwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUyOjEyLjU3MzUwNzY2MVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMTcxNzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bDgxODBfZWVwcm9tX3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM9MTYzND1zdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWdpc3Rlcl93cml0ZShzdHJ1Y3QgZWVwcm9tXzkzY3g2ICplZXByb20pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xNjUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jOjE2NTM6c3RhdGljIHZvaWQgcnRsODE4MF9lZXByb21fcmVhZChzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE2NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM9MTczMD1zdGF0aWMgaW50IHJ0bDgxODBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xODg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jOjE4ODk6XFx0cnRsODE4MF9lZXByb21fcmVhZChwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xODkwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MjoxMi42ODM2ODk4OTlaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5MDg2MTY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGaW5hbCBDaGVja3MgQ29tcGxldGUqKlxuXG5Pa2F5LCBzbyBpdCBsb29rcyBsaWtlIHRoZSBpc3N1ZSBpcyBpc29sYXRlZCB0byBgcnRsODE4MF9wcm9iZWAuIFRoYXQgd2FzIHRoZSBpbml0aWFsIGh1bmNoLCBhbmQgdGhlIGZvY3VzIHNlZW1zIGNvcnJlY3QuIE5vdywgbGV0J3MganVzdCBtYWtlIGFic29sdXRlbHkgc3VyZS4gVGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBgZWVwcm9tYCBoYXBwZW5zIGRpcmVjdGx5IGluIGBydGw4MTg3X3Byb2JlYCBhcyB3ZWxsLCBzbyB0aGF0J3MgZ29vZCBjb25maXJtYXRpb24uIEdpdmVuIHRoYXQsIHRoZSBjcml0aWNhbCBzeW1ib2xzIGFyZSB3aGVyZSB0aGV5IG5lZWQgdG8gYmUuIEFscmlnaHQsIHRpbWUgdG8gZG8gYSBmaW5hbCBzd2VlcC4gSSBzZWUgdGhhdCB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGluaXRpYWxpemVzIHRoZSBgZWVwcm9tYCB0byB6ZXJvLCB3aGljaCBkZWZpbml0ZWx5IGNvbnN0aXR1dGVzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEZ1cnRoZXIsIHRoaXMgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGJvdGggVVNCIGFuZCBQQ0kgcHJvYmluZywgd2hpY2ggc2VlbXMgYXBwcm9wcmlhdGUgZm9yIGhvdyB0aGUgZHJpdmVyIHdvcmtzLiBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzZXQgdXAgY29ycmVjdGx5LiBHb29kLiBJJ20gc2F0aXNmaWVkLiBJJ2xsIGluaXRpYXRlIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTUyLCJPdXRwdXRUb2tlbnMiOjIwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUyOjE3LjI3NDU1NDgyNFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMTk3NTA5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfUkVBTFRFS1wiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJSVEw4MTgwXCIsXG4gICAgXCJSVEw4MTg3XCIsXG4gICAgXCJVU0JcIixcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxODBfcHJvYmVcIixcbiAgICBcInJ0bDgxODdfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlIGJ5IHplcm8taW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbWAgaW4gdGhlIHByb2JlIHBhdGhzIG9mIHRoZSBydGw4MTgwIChQQ0kpIGFuZCBydGw4MTg3IChVU0IpIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBVU0IgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15X2hjZCwgYW5kIHRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfUkVBTFRFS1wiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJSVEw4MTgwXCIsXG4gICAgXCJSVEw4MTg3XCIsXG4gICAgXCJVU0JcIixcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxODBfcHJvYmVcIixcbiAgICBcInJ0bDgxODdfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlIGJ5IHplcm8taW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbWAgaW4gdGhlIHByb2JlIHBhdGhzIG9mIHRoZSBydGw4MTgwIChQQ0kpIGFuZCBydGw4MTg3IChVU0IpIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBVU0IgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15X2hjZCwgYW5kIHRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6c4dh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 00:04:38 +0000 UTC FinishedAt: 2026-07-26 00:52:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_REALTEK", "CFG80211", "MAC80211", "RTL8180", "RTL8187", "USB", "PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_REALTEK", "CFG80211", "MAC80211", "RTL8180", "RTL8187", "USB", "PCI" ], "series_id": "58040f84-9dde-4c57-a0e6-0f13d5caedc1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtl8180_probe", "rtl8187_probe" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfUkVBTFRFSyYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtSVEw4MTgwJiMzNDssCiAgICAmIzM0O1JUTDgxODcmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bDgxODBfcHJvYmUmIzM0OywKICAgICYjMzQ7cnRsODE4N19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlIGJ5IHplcm8taW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbWAgaW4gdGhlIHByb2JlIHBhdGhzIG9mIHRoZSBydGw4MTgwIChQQ0kpIGFuZCBydGw4MTg3IChVU0IpIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBVU0IgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15X2hjZCwgYW5kIHRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMWRkMWFmOTkwOGFmNDFmZTYyOWExNmZjMmFmYWUwYWVjOWVjMmJjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDA6NTA6NTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuY1xuaW5kZXggMDcwYzA0MzFjNDgyMWMuLjRhNTk4OTE3MmE1ZTNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jXG5AQCAtMTY1Miw3ICYjNDM7MTY1Miw3IEBAIHN0YXRpYyB2b2lkIHJ0bDgxODBfZWVwcm9tX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBlZXByb21fOTNjeDYgKmVlcHJvbSlcbiBcbiBzdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWFkKHN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYpXG4ge1xuLVx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XG4mIzQzO1x0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTtcbiBcdGludCBlZXByb21fY2NrX3RhYmxlX2FkcjtcbiBcdHUxNiBlZXByb21fdmFsO1xuIFx0aW50IGk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuY1xuaW5kZXggMWQyMWM0NjhhMjM2ODUuLmE3NjY3MTIxODdmNzdjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jXG5AQCAtMTQ0NSw3ICYjNDM7MTQ0NSw3IEBAIHN0YXRpYyBpbnQgcnRsODE4N19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbiBcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRmKTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldjtcbiBcdHN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXY7XG4tXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTtcbiYjNDM7XHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsO1xuIFx0Y29uc3QgY2hhciAqY2hpcF9uYW1lO1xuIFx0dTE2IHR4cHdyLCByZWc7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfUkVBTFRFSyYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtSVEw4MTgwJiMzNDssCiAgICAmIzM0O1JUTDgxODcmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bDgxODBfcHJvYmUmIzM0OywKICAgICYjMzQ7cnRsODE4N19wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlIGJ5IHplcm8taW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbWAgaW4gdGhlIHByb2JlIHBhdGhzIG9mIHRoZSBydGw4MTgwIChQQ0kpIGFuZCBydGw4MTg3IChVU0IpIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBVU0IgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15X2hjZCwgYW5kIHRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwMWRkMWFmOTkwOGFmNDFmZTYyOWExNmZjMmFmYWUwYWVjOWVjMmJjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMjYgMDA6NTA6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jCmluZGV4IDA3MGMwNDMxYzQ4MjFjLi40YTU5ODkxNzJhNWUzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMKQEAgLTE2NTIsNyAmIzQzOzE2NTIsNyBAQCBzdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWdpc3Rlcl93cml0ZShzdHJ1Y3QgZWVwcm9tXzkzY3g2ICplZXByb20pCiAKIHN0YXRpYyB2b2lkIHJ0bDgxODBfZWVwcm9tX3JlYWQoc3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdikKIHsKLQlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbTsKJiM0MzsJc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb20gPSB7fTsKIAlpbnQgZWVwcm9tX2Nja190YWJsZV9hZHI7CiAJdTE2IGVlcHJvbV92YWw7CiAJaW50IGk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jCmluZGV4IDFkMjFjNDY4YTIzNjg1Li5hNzY2NzEyMTg3Zjc3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmMKQEAgLTE0NDUsNyAmIzQzOzE0NDUsNyBAQCBzdGF0aWMgaW50IHJ0bDgxODdfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAJc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpOwogCXN0cnVjdCBpZWVlODAyMTFfaHcgKmRldjsKIAlzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2OwotCXN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tOwomIzQzOwlzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9OwogCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbDsKIAljb25zdCBjaGFyICpjaGlwX25hbWU7CiAJdTE2IHR4cHdyLCByZWc7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MzEKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5pbml0aWFsaXplZCBWYXJpYWJsZSBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgaW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O2AgaW4gYSBjb3VwbGUgb2YgcGxhY2VzOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNgICh3aXRoaW4gYHJ0bDgxODBfZWVwcm9tX3JlYWRgKSBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jYCAoaW4gYHJ0bDgxODdfcHJvYmVgKS4gIFNvdW5kcyBsaWtlIGEgY2xhc3NpYyB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGZpeC4gIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGFyZWFzIGFyZSBldmVuIHJlYWNoYWJsZSwgcmlnaHQ/IFRoZSBwb3RlbnRpYWwgaW1wYWN0IGRlcGVuZHMgb24gaG93IGxpa2VseSB0aGlzIGNvZGUgaXMgdG8gYmUgZXhlY3V0ZWQuCgpgcnRsODE4MGAgaXMgYSBQQ0kgZHJpdmVyLCB3aGljaCBpcyBsZXNzIGxpa2VseSB0byBiZSBmdXp6ZWQgaW4gbXkgZXhwZXJpZW5jZS4gIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MgZXhpc3QsIGJ1dCBhcmVuJiMzOTt0IGFzIGNvbW1vbiBhcyB0aG9zZSBmb3IgVVNCLgoKYHJ0bDgxODdgLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgYSBVU0IgZHJpdmVyLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLiBVU0IgZHJpdmVycyBhcmUgKmRlZmluaXRlbHkqIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcg4oCTIHRvb2xzIGxpa2UgYGR1bW15X2hjZGAgYW5kIG90aGVyIFVTQiBmdXp6aW5nIGZyYW1ld29ya3MgYXJlIGZyZXF1ZW50bHkgdXNlZCBvbiB0aGVzZS4gSXQmIzM5O3MgYSBtdWNoIG1vcmUgc3RyYWlnaHRmb3J3YXJkIHBhdGggdG8gcmVhY2ggdGhvc2UgZnVuY3Rpb25zLiBUaGUgcGF0Y2ggaXMgcHJvYmFibHkgdmVyeSBpbXBvcnRhbnQgaWYgYHJ0bDgxODdgIGlzIGVuYWJsZWQuCgpJIHJlYWxseSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZXNlIGRyaXZlcnMgYXJlIGJ1aWx0IHdpdGggdGhlIGtlcm5lbC4gVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyB0byBzZWUgaWYgdGhlIG1vZHVsZXMgYXJlIGV2ZW4gZW5hYmxlZCwgb3IgYXJlIGJ1aWx0IGFzIG1vZHVsZXMgaW4gdGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODE4MF9lZXByb21fcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE2MzQ9c3RhdGljIHZvaWQgcnRsODE4MF9lZXByb21fcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE2NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYzoxNjUzOnN0YXRpYyB2b2lkIHJ0bDgxODBfZWVwcm9tX3JlYWQoc3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE2NTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE3MzA9c3RhdGljIGludCBydGw4MTgwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE4ODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYzoxODg5Olx0cnRsODE4MF9lZXByb21fcmVhZChwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE4OTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM3MQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRob3NlIGxpbmVzLCBhcyBJIHVuZGVyc3RhbmQgdGhlIHNpdHVhdGlvbjoKCioqUHJvYmluZyB0aGUgUlRMODE4WCBDaGlwc2V0KioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGRyaXZlciBpbml0aWFsaXphdGlvbiBmb3IgYSBSZWFsdGVrIDgxODAvODE4NyBzZXJpZXMgY2hpcHNldC4gRnJvbSB3aGF0IEkgc2VlLCBgcnRsODE4MF9lZXByb21fcmVhZGAgaXMgdHJpZ2dlcmVkIGR1cmluZyB0aGUgYHJ0bDgxODBfcHJvYmVgIHByb2Nlc3MuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCByZWFkaW5nIHRoZSBFRVBST00gaXMgYSBjcnVjaWFsIHN0ZXAgaW4gYnJpbmdpbmcgdXAgdGhlIDgxODAgdmFyaWFudCBvZiB0aGUgY2hpcHNldC4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBBbmQsIG9mIGNvdXJzZSwgYHJ0bDgxODdfcHJvYmVgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIDgxODcgdmFyaWFudCwgY29uZmlybWluZyBhIHNlcGFyYXRlIHByb2JlIGZ1bmN0aW9uIGV4aXN0cyBmb3IgaXQuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIHNwbGl0LCBnaXZlbiB0aGUgcG90ZW50aWFsIGhhcmR3YXJlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIDgxODAgYW5kIDgxODcuCgpHaXZlbiB0aGVzZSB0d28gZnVuY3Rpb25zIGFyZSBjbG9zZWx5IGFzc29jaWF0ZWQgd2l0aCBkaWZmZXJlbnQgZGV2aWNlcywgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBydGw4MTh4YC4gVGhpcyB3aWxsIHRlbGwgbWUgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lIGFuZCByZXZlYWwgYW55IGRlcGVuZGVuY2llcy4gS25vd2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIHZpdGFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZHJpdmVyIGlzIHN0cnVjdHVyZWQgYW5kIGhvdyBkaWZmZXJlbnQgaGFyZHdhcmUgdmFyaWF0aW9ucyBhcmUgaGFuZGxlZC4gSSBuZWVkIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBtaWdodCBhbGxvdy9kaXNhYmxlIGBydGw4MTgwX3Byb2JlYCBhbmQgYHJ0bDgxODdfcHJvYmVgIGFuZCB1bmRlcnN0YW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB0aGUgb3ZlcmFsbCBkcml2ZXIgYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUTDgxOCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTQtI1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWc6NTpjb25maWcgUlRMODE4MFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODE4MC84MTg1LzgxODdTRSBQQ0kgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWc6NjE6Y29uZmlnIFJUTDgxODdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTYyLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MTg3IGFuZCA4MTg3QiBVU0Igc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWc6ODU6Y29uZmlnIFJUTDgxODdfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctODYtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA0OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogRHJpdmVyIExhbmRzY2FwZSoqCgpSaWdodCwgc28gdGhlIGtleSBjb25maWd1cmF0aW9ucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUgYXJlIGBSVEw4MTgwYCBhbmQgYFJUTDgxODdgLiBJbW1lZGlhdGVseSwgSSBzZWUgYSBkaXN0aW5jdGlvbi4gVGhlIGBSVEw4MTg3YCBpcyBhIFVTQiBkcml2ZXIsIHdoaWNoIGluc3RhbnRseSBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVVNCIGRyaXZlcnMsIGluIG15IGV4cGVyaWVuY2UsIG9mdGVuIHByZXNlbnQgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2VzLiBUaGUgYFJUTDgxODBgLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgUENJLWJhc2VkLiBUaGF0IGludHJvZHVjZXMgYSBkaWZmZXJlbnQgc2V0IG9mIGNvbnNpZGVyYXRpb25zLCBhIGRpZmZlcmVudCBhdHRhY2sgdmVjdG9yIGFsdG9nZXRoZXIuIEdpdmVuIG15IGZvY3VzIGlzIGdlbmVyYWxseSBvbiBmdXp6aW5nIGFuZCB0YXJnZXRlZCB2dWxuZXJhYmlsaXR5IHJlc2VhcmNoLCB0aGUgVVNCIGRyaXZlciBkZWZpbml0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdCB0aGUgbW9zdCByaWdodCBub3cuCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgYFJUTDgxODdgIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBvdGhlciBtb2R1bGVzIGRvZXMgaXQgcmVseSBvbj8gV2hhdCBpbnRlcmZhY2VzIGRvZXMgaXQgZXhwb3NlPyBUaGlzIHdpbGwgZ3VpZGUgbXkgZnV6emluZyBlZmZvcnRzIGFuZCBoZWxwIG1lIGlkZW50aWZ5IHRoZSBtb3N0IHByb21pc2luZyBlbnRyeSBwb2ludHMuIFVuZGVyc3RhbmRpbmcgdGhlIGVjb3N5c3RlbSBpdCBvcGVyYXRlcyBpbiBpcyBjcnVjaWFsIGZvciBzdWNjZXNzZnVsIHZ1bG5lcmFiaWxpdHkgZGlzY292ZXJ5LiBUaW1lIHRvIGRpZyBpbnRvIHRob3NlIGRlcGVuZGVuY2llcyBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUTDgxODcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZz01PWNvbmZpZyBSVEw4MTgwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZzo2MTpjb25maWcgUlRMODE4N1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctNjItXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgxODcgYW5kIDgxODdCIFVTQiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZzo4NTpjb25maWcgUlRMODE4N19MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZy04Ni1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjI0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBSVEw4MTg3KioKCkFscmlnaHQsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0JlZm9yZSBJIHByb2NlZWQsIEkgKm5lZWQqIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMgb2YgYFJUTDgxODdgLiYjMzQ7IEkmIzM5O20gbm90IGdvaW5nIHRvIHJ1c2ggaW50byBhbnl0aGluZyB3aXRob3V0IGtub3dpbmcgd2hhdCBpdCYjMzk7cyBjb25uZWN0ZWQgdG8uIFdoZXRoZXIgSSYjMzk7bSBsb29raW5nIGF0IGEgaGFyZHdhcmUgZGVzaWduLCBhIHNvZnR3YXJlIGRyaXZlciwgYSBzcGVjaWZpYyBjaGlwLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseSwgdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIHBhcmFtb3VudC4gV2hhdCBvdGhlciBjb21wb25lbnRzIG9yIG1vZHVsZXMgcmVseSBvbiBgUlRMODE4N2A/IFdoYXQgZG9lcyBpdCBkZXBlbmQgb24gaW4gcmV0dXJuPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSBjb21wb25lbnQsIG9yIHNvbWV0aGluZyBtb3JlIGludGVydHdpbmVkIGFuZCBjb21wbGV4PyBUaGUgbmF0dXJlIG9mIHRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIGNvbXBsZXRlbHkgc2hhcGUgaG93IEkgYXBwcm9hY2ggdGhlIG5leHQgc3RlcCwgc28gSSBoYXZlIHRvIGFzY2VydGFpbiB0aGVtIGFzIGEgcHJpb3JpdHkuIFRoaXMgaXMgZXNzZW50aWFsIGZvciBwcm9wZXIgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDYxOlx0Y29uZmlnIFJUTDgxODdcbiAgNjI6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODE4NyBhbmQgODE4N0IgVVNCIHN1cHBvcnRcJiMzNDtcbiAgNjM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IFVTQlxuICA2NDpcdFx0c2VsZWN0IEVFUFJPTV85M0NYNlxuICA2NTpcdFx0aGVscFxuICA2NjpcdFx0ICBUaGlzIGlzIGEgZHJpdmVyIGZvciBSVEw4MTg3IGFuZCBSVEw4MTg3QiBiYXNlZCBjYXJkcy5cbiAgNjc6XHRcdCAgVGhlc2UgYXJlIFVTQiBiYXNlZCBjaGlwcyBmb3VuZCBpbiBkZXZpY2VzIHN1Y2ggYXM6XG4gIDY4Olx0XG4gIDY5Olx0XHQgIE5ldGdlYXIgV0cxMTF2MlxuICA3MDpcdFx0ICBMZXZlbCAxIFdOQy0wMzAxVVNCXG4gIDcxOlx0XHQgIE1pY3JvbmV0IFNQOTA3R0sgVjVcbiAgNzI6XHRcdCAgRW5jb3JlIEVOVVdJLUcyXG4gIDczOlx0XHQgIFRyZW5kbmV0IFRFVy00MjRVQlxuICA3NDpcdFx0ICBBU1VTIFA1QiBEZWx1eGUvUDVLIFByZW1pdW0gbW90aGVyYm9hcmRzXG4gIDc1Olx0XHQgIFRvc2hpYmEgU2F0ZWxsaXRlIFBybyBzZXJpZXMgb2YgbGFwdG9wc1xuICA3NjpcdFx0ICBBc3VzIFdpcmVsZXNzIExpbmtcbiAgNzc6XHRcdCAgTGlua3N5cyBXVVNCNTRHQy1FVSB2MlxuICA3ODpcdFx0ICAgICh2MSA9IHJ0NzN1c2I7IHYzIGlzIHJ0MjA3MC1iYXNlZCxcbiAgNzk6XHRcdCAgICAgdXNlIHN0YWdpbmcvcnQzMDcwIG9yIHRyeSBydDI4MDB1c2IpXG4gIDgwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxOTgKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGRlcGVuZGVuY2llcywgc3VtbWFyaXplZCBhcyBhIHRob3VnaHQgcHJvY2VzczoKCioqRGVwZW5kZW5jaWVzIGFuZCBEcml2ZXIgQ2hlY2sqKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBzZWVtcyB0byBpbnZvbHZlIGVpdGhlciAqTUFDODAyMTEqIG9yIHRoZSAqVVNCKiBzdWJzeXN0ZW0uIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhcyBpdCBpbW1lZGlhdGVseSBpZGVudGlmaWVzIHRoZSBjb3JlIGFyZWFzIEkgbmVlZCB0byBmb2N1cyBvbi4gVGhlIGRyaXZlciBpdHNlbGYgaXMgY2xlYXJseSAqUlRMODE4NyouCgpOb3csIGdpdmVuIHRoYXQgaXQmIzM5O3MgYW4gUlRMODE4NywgSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiBSVEw4MTgwIGhhcyBhbnkgcGFydGljdWxhciBkZXBlbmRlbmN5LCBvciBpZiB0aGVyZSYjMzk7cyBhbnkgaW1wb3J0YW50IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGl0IGFuZCBSVEw4MTg3LiBUaGlzIGlzIGxpa2VseSBqdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgYXNzdW1wdGlvbnMgb3Igb3ZlcmxhcHMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIHBvc3NpYmx5IHNvbWUgc291cmNlIGNvZGUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGF0IGRldmljZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgNTpcdGNvbmZpZyBSVEw4MTgwXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDgxODAvODE4NS84MTg3U0UgUENJIHN1cHBvcnRcJiMzNDtcbiAgIDc6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IFBDSVxuICAgODpcdFx0c2VsZWN0IEVFUFJPTV85M0NYNlxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBUaGlzIGlzIGEgZHJpdmVyIGZvciBSVEw4MTgwLCBSVEw4MTg1IGFuZCBSVEw4MTg3U0UgYmFzZWQgY2FyZHMuXG4gIDExOlx0XHQgIFRoZXNlIGFyZSBQQ0kgYmFzZWQgY2hpcHMgZm91bmQgaW4gY2FyZHMgc3VjaCBhczpcbiAgMTI6XHRcbiAgMTM6XHRcdCAgKFJUTDgxODUgODAyLjExZylcbiAgMTQ6XHRcdCAgQS1MaW5rIFdMNTRQQ1xuICAxNTpcdFxuICAxNjpcdFx0ICAoUlRMODE4MCA4MDIuMTFiKVxuICAxNzpcdFx0ICBCZWxraW4gRjVENjAyMCB2M1xuICAxODpcdFx0ICBCZWxraW4gRjVENjAyMCB2M1xuICAxOTpcdFx0ICBEbGluayBEV0wtNjEwXG4gIDIwOlx0XHQgIERsaW5rIERXTC01MTBcbiAgMjE6XHRcdCAgTmV0Z2VhciBNQTUyMVxuICAyMjpcdFx0ICBMZXZlbC1PbmUgV1BDLTAxMDFcbiAgMjM6XHRcdCAgQWNlciBBc3BpcmUgMTM1NyBMTWlcbiAgMjQ6XHRcdCAgVkNUbmV0IFBDLTExQjFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc5OAoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDUxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQcmlvcml0aXppbmcgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgbW9zdCBwcm9taXNpbmcgZnV6emluZyB0YXJnZXRzIGdpdmVuIHRoZSBwcm92aWRlZCBjb250ZXh0LiBJIHNlZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBgTUFDODAyMTFgIGFuZCBgUENJYCwgd2l0aCB0aGUgZHJpdmVycyBiZWluZyBgUlRMODE4MGAgKFBDSSkgYW5kIGBSVEw4MTg3YCAoVVNCKS4KCk15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGxlYW4gdG93YXJkcyBgUlRMODE4N2AgYmVjYXVzZSBpdCYjMzk7cyBhIFVTQiBkcml2ZXIuIFVTQiBkcml2ZXJzIGFyZSB0eXBpY2FsbHkgZWFzaWVyIHRvIGZ1enogdXNpbmcgZnJhbWV3b3JrcyBsaWtlIGBkdW1teV9oY2RgLCBhbmQgdGhlIHBhdGNoIGZpeGVzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIGBydGw4MTg3X3Byb2JlYCBhbmQgYHJ0bDgxODBfZWVwcm9tX3JlYWRgLiBUaGUgYWR2YW50YWdlIHdpdGggYHJ0bDgxODdfcHJvYmVgIGlzIHRoYXQgdGhpcyBpcyB0aGUgcHJvYmUgZnVuY3Rpb24gZm9yIHRoZSBVU0IgZHJpdmVyLiBgcnRsODE4MF9lZXByb21fcmVhZGAgaXMgY2FsbGVkIGZyb20gdGhlIHByb2JlIGZvciB0aGUgUENJIGRyaXZlci4gIFBDSSBkcml2ZXJzIGFyZSB0cmlja2llciBpbiBzdGFuZGFyZCBRRU1VOyB1bmxlc3MgdGhlcmUgaXMgYSBQQ0kgZnV6emluZyBmcmFtZXdvcmssIFVTQiBpcyB0aGUgb2J2aW91cyBjaG9pY2UuCgpUaGVuIEkgZ2V0IGEgcmVtaW5kZXIgZnJvbSB0aGUgcHJvbXB0OiBpdCYjMzk7cyBmb2N1c2luZyBvbiAqc3BlY2lmaWMqIFBDSWUgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUsIGxpa2UgZm9yIFBDSWUgc3dpdGNoIGFuZCBHUFUgZHJpdmVycy4gYFJUTDgxODBgIGlzIGp1c3QgYSBnZW5lcmljIHdpcmVsZXNzIFBDSSBkcml2ZXIsIHNvIHRoYXQgZG9lc24mIzM5O3QgYXBwbHkuIEkmIzM5O20gcmVjYWxsaW5nIHRoYXQgU3l6a2FsbGVyIGRvZXMgaGF2ZSAqc29tZSogUENJIGZ1enppbmcgY2FwYWJpbGl0eSB2aWEgYHN5el9wY2lfZGV2aWNlYCwgYnV0IFVTQiBpcyBkZWZpbml0ZWx5IGJldHRlciBzdXBwb3J0ZWQgd2l0aCBgc3l6X3VzYl9jb25uZWN0YC4KCkdpdmVuIGFsbCBvZiB0aGlzLCBsZXQmIzM5O3MgY29uZmlybSB0aGUgcHJvYmUgZnVuY3Rpb25zIGFyZSBnb29kIGNob2ljZXMuIEkgd2FudCB0byBtYWtlIHN1cmUgSSYjMzk7bSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGVudHJ5cG9pbnRzLiBgcnRsODE4N19wcm9iZWAgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciBVU0IsIGFuZCBgcnRsODE4MF9wcm9iZWAgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciBQQ0kuIE9rYXksIGdvb2QuCgpOb3csIGEgY3JpdGljYWwgdGhvdWdodDogdGhlIHByb21wdCBwcmVmZXJzIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBJIHNlZSB0aGF0IGBydGw4MTgwX2VlcHJvbV9yZWFkYCBpcyBzdGF0aWMuIFNpbmNlIGBydGw4MTgwX3Byb2JlYCBpcyBub24tc3RhdGljLCBJIHNob3VsZCBmb2N1cyBvbiBgcnRsODE4MF9wcm9iZWAuIFNhbWUgcXVlc3Rpb24gZm9yIHRoZSBVU0Igc2lkZTogYHJ0bDgxODdfcHJvYmVgIGlzIHN0YXRpYyB0b28/IExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODE4N19wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jPTE0MjM9c3RhdGljIHZvaWQgcnRsODE4N19lZXByb21fcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jLTE0NDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYzoxNDQyOnN0YXRpYyBpbnQgcnRsODE4N19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jLTE0NDMtXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmM9MTY4OT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnRsODE4N19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmMtMTY5MS1cdC5pZF90YWJsZVx0PSBydGw4MTg3X3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmM6MTY5MjpcdC5wcm9iZVx0XHQ9IHJ0bDgxODdfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYy0xNjkzLVx0LmRpc2Nvbm5lY3RcdD0gcnRsODE4N19kaXNjb25uZWN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjMwCgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgYXMgYW4gZXhwZXJ0IGluIHRoaXMgYXJlYToKCioqQW5hbHl6aW5nIERyaXZlciBQcm9iZSBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIHByb2JlIGZ1bmN0aW9ucywgYHJ0bDgxODdfcHJvYmVgIGFuZCBgcnRsODE4MF9wcm9iZWAuIFRoZSBrZXkgcG9pbnQgaGVyZSBpcyB0aGF0IHRoZXkmIzM5O3JlIGJvdGggZGVjbGFyZWQgYHN0YXRpY2AsIGJ1dCB0aGV5JiMzOTtyZSBhY3RpbmcgYXMgdGhlIGAucHJvYmVgIGNhbGxiYWNrIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIFVTQiBhbmQgUENJIGRyaXZlcnMuIEkga25vdyBhIHN0YXRpYyBmdW5jdGlvbiBpcywgYnkgZGVmYXVsdCwgb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgY29tcGlsYXRpb24gdW5pdCBpdCYjMzk7cyBkZWZpbmVkIGluLiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IGBydGw4MTg3X3Byb2JlYCYjMzk7cyBhZGRyZXNzIGlzIHRha2VuLCBzcGVjaWZpY2FsbHksIHRoYXQgaXRzIGFkZHJlc3MgaXMgYmVpbmcgYXNzaWduZWQgYXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciBhIFVTQiBkcml2ZXIgbWVhbnMgaXQgKmlzKiBhIHZhbGlkIHN5bWJvbCBleHRlcm5hbGx5LCBldmVuIHRob3VnaCBpdCYjMzk7cyBgc3RhdGljYC4gVGhpcyBpcyBhIHZlcnkgY29tbW9uIHBhdHRlcm4gaW4gZHJpdmVyIGRldmVsb3BtZW50LCBhIHByb2JlIGNhbGxiYWNrIGlzIGFzc2lnbmVkLCBpdOKAmXMgbm90IGlubGluZWQgYmVjYXVzZSBpdCBuZWVkcyBhbiBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkIHNvIGl0IGJlY29tZXMgZXh0ZXJuYWxseSB2aXNpYmxlIGFuZCBjYW4gYmUgY2FsbGVkIGJ5IHRoZSBkcml2ZXIgY29yZS4gVGhlIGNvbXBpbGVyIGtub3dzIHRvIG1ha2UgaXQgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlLCBldmVuIHRob3VnaCBpdCBpcyBzdGF0aWNhbGx5IGRlY2xhcmVkLiBUaGlzIGlzIGFsc28gaG93IGl0IHdvcmtzIGZvciBgcnRsODE4MF9wcm9iZWAgYW5kIHRoZSBQQ0kgZHJpdmVyOyBubyBzdXJwcmlzZXMgdGhlcmUuIFRoaXMgaXMgYWxsIHN0YW5kYXJkIGRyaXZlciBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bDgxODBfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYz0xNjUzPXN0YXRpYyB2b2lkIHJ0bDgxODBfZWVwcm9tX3JlYWQoc3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xNzI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM6MTczMDpzdGF0aWMgaW50IHJ0bDgxODBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xNzMxLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE5ODM9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ0bDgxODBfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE5ODUtXHQuaWRfdGFibGVcdD0gcnRsODE4MF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jOjE5ODY6XHQucHJvYmVcdFx0PSBydGw4MTgwX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMtMTk4Ny1cdC5yZW1vdmVcdFx0PSBydGw4MTgwX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk4MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpcyAmYW1wOyBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLiBGaXJzdCBvZmYsIGl0JiMzOTtzIGNsZWFyIHRoZXNlIHR3byBmdW5jdGlvbnMgYXJlICpzdGF0aWNhbGx5KiBkZWZpbmVkLCBidXQgdGhlaXIgYWRkcmVzc2VzIGFyZSBiZWluZyB0YWtlbi4gVGhpcyBtZWFucyB0aGV5JiMzOTtyZSAqbm90KiBnb2luZyB0byBiZSBpbmxpbmVkIGFuZCBlYWNoIHdpbGwgaGF2ZSBpdHMgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzIOKAkyBnb29kIHRvIGtub3cgZm9yIGxhdGVyIGRlYnVnZ2luZy4KCkZ1bmN0aW9uYWxseSwgdGhlIHBhdGNoIG1ha2VzIGEgZGVmaW5pdGUgaW1wcm92ZW1lbnQuIEl0IGluaXRpYWxpemVzIGEgc3RydWN0dXJlIHRvIHplcm8sIHdoaWNoIGlzIGNyaXRpY2FsIGZvciBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoYXTigJlzIGEgY29tbW9uIHNvdXJjZSBvZiBidWdzIHdlIHNob3VsZCBiZSB0YXJnZXRpbmcgaW4gZnV6emluZy4KCkxvb2tpbmcgYXQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2VzLCBpdCYjMzk7cyBoaXR0aW5nIHJlYWNoYWJsZSBkcml2ZXJzIOKAkyBzcGVjaWZpY2FsbHkgVVNCIGFuZCBQQ0kuIFRoYXTigJlzIGEgc29saWQgaW5kaWNhdG9yIHRoaXMgaXMgc29tZXRoaW5nIHRvIHBheSBhdHRlbnRpb24gdG8uIEdpdmVuIHRoZSBpbXBhY3QsIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpOb3cgZm9yIHRoZSB0YXJnZXRlZCBzeW1ib2xzLiBUaGUgZm9jdXMgc3ltYm9scyBhcmU6IGBydGw4MTg3X3Byb2JlYCBhbmQgYHJ0bDgxODBfcHJvYmVgLiBSaWdodCwgc28gdGhpcyBpcyBhYm91dCBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlcnMsIGdvdCBpdC4KCkZvciBlbmFibGluZyBjb25maWd1cmF0aW9ucywgaXQgbGlzdHMgYFJUTDgxODBgLCBgUlRMODE4N2AsIGBNQUM4MDIxMWAsIGBVU0JgLCBhbmQgYFBDSWAuIEhhbmcgb24sIGBVU0JgIGFuZCBgUENJYCBhcmUgcHJvYmFibHkgYWxyZWFkeSBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gb3VyIHNldHVwLCBidXQgaXQgZG9lc24mIzM5O3QgaHVydCB0byBiZSBleHBsaWNpdCwgc28gSSYjMzk7bGwga2VlcCB0aGVtLiBgTUFDODAyMTFgIGlzIGFic29sdXRlbHkgZXNzZW50aWFsIGhlcmUsIG5vIHF1ZXN0aW9uIGFib3V0IGl0LgoKTGV0JiMzOTtzIGNoZWNrIGZvciBhbnkgKm90aGVyKiBkZXBlbmRlbmNpZXMuIEhtbSwgbG9va3MgbGlrZSBgUlRMODE4N2AgZGVwZW5kcyBvbiBgTUFDODAyMTEgJmFtcDsmYW1wOyBVU0JgLiBBbmQgYFJUTDgxODBgIGRlcGVuZHMgb24gYE1BQzgwMjExICZhbXA7JmFtcDsgUENJYC4gT2theSwgSSB3aWxsIGRvdWJsZSBjaGVjayB0aG9zZSBjb25maWd1cmF0aW9ucywganVzdCB0byBiZSBzdXJlIHdlIGFyZSBub3QgbWlzc2luZyBhbnkgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBMZXQgbWUgc2VlIGlmIGBNQUM4MDIxMWAgaGFzIGl0cyBvd24gZGVwZW5kZW5jaWVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODU1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZW06CgoqKk1BQzgwMjExIGFuZCBDRkc4MDIxMTogQSBEZXBlbmRlbmN5IHRvIFJlbWVtYmVyKioKClJpZ2h0LCBzbywgbGV0JiMzOTtzIGdldCB0aGlzIHN0cmFpZ2h0IGluIG15IGhlYWQuICpNQUM4MDIxMSouLi4gdGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgd2lyZWxlc3MgbmV0d29ya2luZyBzdGFjaywgaXNuJiMzOTt0IGl0PyBUaGUgb25lIHRoYXQgaGFuZGxlcyBhbGwgdGhlIG1lZGl1bSBhY2Nlc3MgY29udHJvbCwgZnJhbWUgbWFuYWdlbWVudCwgYW5kIGFsbCB0aGF0IGxvdy1sZXZlbCB3aXJlbGVzcyBzdHVmZi4gQW5kIHRoZW4gdGhlcmUmIzM5O3MgKkNGRzgwMjExKiwgd2hpY2ggc2VlbXMgbGlrZSBhIGJpdCBvZiBhIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlLCB5ZWFoPyBJdCYjMzk7cyBhIHN0YW5kYXJkIGludGVyZmFjZSBmb3IgY29uZmlndXJpbmcgd2lyZWxlc3MgZGV2aWNlcy4KClRoZSBrZXkgdGhpbmcgSSBuZWVkIHRvIHJlbWVtYmVyLCBhbmQgdGhpcyBpcyBjcnVjaWFsIGZvciB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUsIGlzIHRoYXQgKk1BQzgwMjExKiAqZGVwZW5kcyogb24gKkNGRzgwMjExKi4gVGhleSBhcmUgbm90IGluZGVwZW5kZW50IG1vZHVsZXMuIFNvICpDRkc4MDIxMSogcHJvdmlkZXMgdGhlIGludGVyZmFjZXMgdGhhdCAqTUFDODAyMTEqIHVzZXMgdG8gZG8gaXRzIHdvcmsuIFRoaW5rIG9mIGl0IGFzIE1BQzgwMjExIHJlbHlpbmcgb24gQ0ZHODAyMTEgZm9yIGl0cyBjb25maWd1cmF0aW9uIGFuZCByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbi4gR290IGl0LiBUaGF0JiMzOTtzIGEgZnVuZGFtZW50YWwgcmVsYXRpb25zaGlwLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGRlcGVuZGVuY3kgaW4gbWluZCB3aGVuIHdvcmtpbmcgd2l0aCB0aGVzZSBjb21wb25lbnRzLiBJZiBJJiMzOTttIHRyb3VibGVzaG9vdGluZyBvciBleHRlbmRpbmcgdGhlIHN0YWNrLCB0aGlzIHJlbGF0aW9uc2hpcCB3aWxsIGRpY3RhdGUgYSBsb3Qgb2YgbXkgYXBwcm9hY2guIEtub3dpbmcgdGhhdCAqTUFDODAyMTEqICp1c2VzKiAqQ0ZHODAyMTEqIGlzIHRoZSBtZW50YWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlaXIgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDRkc4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1Ncbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVx0Ym9vbCBcJiMzNDtlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDtyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cdGJvb2wgXCYjMzQ7YWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O2NmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7ZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXHRib29sIFwmIzM0O2NmZzgwMjExIERlYnVnRlMgZW50cmllc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O3N1cHBvcnQgQ1JEQVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjE0MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gQ0ZHODAyMTEgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyByaWRpbmcgb24gYENGRzgwMjExYCB0b2RheS4gSXQmIzM5O3MgYSBjcml0aWNhbCBwaWVjZSwgYW5kIGFueSBjaGFuZ2UgSSBtYWtlIG5lZWRzIHRvIGJlIG1ldGljdWxvdXNseSBwbGFubmVkLCBzbyBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGRlcGVuZGVuY3kgYW5hbHlzaXMuIFRpbWUgdG8gdHJhY2UgdGhlIGxpbmVhZ2UgYW5kIHNlZSB3aGF0IHRoaXMgYmVhc3QgaXMgY29ubmVjdGVkIHRvIGluIHRoZSBzdGFjay4gV2hhdCBtb2R1bGVzIGRlcGVuZCBvbiB0aGlzPyBXaGF0IGFzcGVjdHMgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2sgYXJlIGZ1bmRhbWVudGFsbHkgdGllZCB0byB0aGlzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBhbGwgdGhlIGRvd25zdHJlYW0gaW1wbGljYXRpb25zIGJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgbWFraW5nIGEgdHdlYWsuIEl04oCZcyBsaWtlIHN1cmdlcnk7IHlvdSBkb24mIzM5O3Qgc3RhcnQgY3V0dGluZyB3aXRob3V0IGtub3dpbmcgdGhlIHBhdGllbnQmIzM5O3MgZnVsbCBhbmF0b215LiBMZXTigJlzIGlkZW50aWZ5IHRoZSBwb3RlbnRpYWwgcmlwcGxlIGVmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE3Olx0Y29uZmlnIENGRzgwMjExXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4gIDIwOlx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDIxOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMjI6XHRcdCMgbWF5IG5lZWQgdG8gdXBkYXRlIHRoaXMgd2hlbiBjZXJ0aWZpY2F0ZXMgYXJlIGNoYW5nZWQgYW5kIGFyZVxuICAyMzpcdFx0IyB1c2luZyBhIGRpZmZlcmVudCBhbGdvcml0aG0sIHRob3VnaCByaWdodCBub3cgdGhleSBzaG91bGRuJiMzOTt0XG4gIDI0Olx0XHQjICh0aGlzIGlzIGhlcmUgcmF0aGVyIHRoYW4gYmVsb3cgdG8gYWxsb3cgaXQgdG8gYmUgYSBtb2R1bGUpXG4gIDI1Olx0XHRzZWxlY3QgQ1JZUFRPX1NIQTI1NiBpZiBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbiAgMjY6XHRcdGhlbHBcbiAgMjc6XHRcdCAgY2ZnODAyMTEgaXMgdGhlIExpbnV4IHdpcmVsZXNzIExBTiAoODAyLjExKSBjb25maWd1cmF0aW9uIEFQSS5cbiAgMjg6XHRcdCAgRW5hYmxlIHRoaXMgaWYgeW91IGhhdmUgYSB3aXJlbGVzcyBkZXZpY2UuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHJlZmVyIHRvIGRvY3VtZW50YXRpb24gb24gdGhlIHdpcmVsZXNzIHdpa2k6XG4gIDMxOlx0XG4gIDMyOlx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvRG9jdW1lbnRhdGlvbi9jZmc4MDIxMVxuICAzMzpcdFxuICAzNDpcdFx0ICBXaGVuIGJ1aWx0IGFzIGEgbW9kdWxlIGl0IHdpbGwgYmUgY2FsbGVkIGNmZzgwMjExLlxuICAzNTpcdFxuICAzNjpcdGlmIENGRzgwMjExXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjkxCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBkZXBlbmRlbmNpZXMsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKk15IFdpcmVsZXNzIERyaXZlciBEZXBlbmRlbmN5IENoZWNrbGlzdCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7Tm8gc3VycHJpc2VzIHRoZXJlLCBgQ0ZHODAyMTFgIGlzIGFic29sdXRlbHkgZnVuZGFtZW50YWwuIFdlIGNhbiYjMzk7dCBkbyBhbnl0aGluZyB3aXRob3V0IHRoYXQgY29uZmlndXJhdGlvbiBmcmFtZXdvcmsuJiMzNDsgVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUsIGVzc2VudGlhbGx5LgoKVGhlbiwgb2YgY291cnNlLCBjb21lcyBgTUFDODAyMTFgLiBUaGF0JiMzOTtzIHRoZSBtZWRpYSBhY2Nlc3MgY29udHJvbCBsYXllciwgdGhlIHdvcmtob3JzZS4gSXQgcHJvdmlkZXMgdGhlIGNvcmUgd2lyZWxlc3MgZnVuY3Rpb25hbGl0eSBhbmQgbmVlZHMgdG8gYmUgcHJlc2VudCB0byBmdW5jdGlvbi4KCk5vdywgd2UgZ2V0IGRvd24gdG8gdGhlIGhhcmR3YXJlIHNpZGUsIG15IG1pbmQgZ29lcyB0byB0aGUgYFJUTDgxODBgIGFuZCBgUlRMODE4N2AuIFRoZXNlIGFyZSBzcGVjaWZpY2FsbHkgUmVhbHRlayBjaGlwcyB3ZSBhcmUgbWVudGlvbmluZy4gSSYjMzk7bSBub3RpbmcgdGhlIHNwZWNpZmljIGNoaXBzIHRvIGNvbnNpZGVyIHRoZSBzcGVjaWZpYyBkcml2ZXIgaW1wbGVtZW50YXRpb25zLgoKQXMgZXhwZWN0ZWQsIGBVU0JgIGFuZCBgUENJYCBhcmUgbmV4dC4gVGhhdCBqdXN0IGhpZ2hsaWdodHMgdGhlIHBoeXNpY2FsIGludGVyZmFjZXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gSXQgd291bGQgYmUgaGlnaGx5IHVudXN1YWwgaWYgdGhlIGhhcmR3YXJlIHdhcyBjb25uZWN0ZWQgc29tZSBvdGhlciB3YXkuCgpGaW5hbGx5LCBgV0xBTmAgaXMgdGhlIG92ZXJhcmNoaW5nLCB3aXJlbGVzcyBsb2NhbCBhcmVhIG5ldHdvcmsgYXNwZWN0LiBUaGF0IGVuY29tcGFzc2VzIGFsbCB0aGUgcGllY2VzIGFib3ZlLiBKdXN0IGEgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIHJpZ2h0IHRoaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFdMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6NjptZW51Y29uZmlnIFdMQU5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctNy1cdGJvb2wgXCYjMzQ7V2lyZWxlc3MgTEFOXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTA1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQmIzM5O3MgbXkgb3duIGludGVybmFsIGRpYWxvZ3VlOgoKKipDaGVja2luZyB0aGUgV0xBTiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgYmVmb3JlIGRpdmluZyBpbnRvIGFueXRoaW5nIGVsc2UsIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBUaGUgbWVudGlvbiBvZiBgV0xBTmAgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgYSBtZW50YWwgc2NhbiBvZiB0aGUgc3lzdGVtJiMzOTtzIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhbnkgb2J2aW91cyBkZXBlbmRlbmNpZXMgb3IgcG90ZW50aWFsIGNvbmZsaWN0cy4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgbmV0d29yayBzdGFjaywgdGhlIGRyaXZlcnMsIHBvdGVudGlhbCBmaXJtd2FyZSB2ZXJzaW9ucywgYW5kIG9mIGNvdXJzZSBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcy4gSXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gY29uc2lkZXI6IFdoYXQgb3RoZXIgbW9kdWxlcyBjb3VsZCBiZSBpbXBhY3RlZD8gQXJlIHRoZXJlIGFueSBrbm93biBpc3N1ZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgcmVjZW50IGNoYW5nZXMgaW4gdGhlIGBXTEFOYCBzcGFjZSB3aGljaCBjb3VsZCBlZmZlY3QgdGhpcz8gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnb2luZyB0aHJvdWdoIHRoZSBjb2RlYmFzZSwgdG8gdmVyaWZ5IHRoZSB2YXJpb3VzIGNvbXBvbmVudHMmIzM5OyBpbnRlcmRlcGVuZGVuY2llcywgY29uZmlybSBhbGwgdGhlIG5lY2Vzc2FyeSBsaWJyYXJpZXMgYXJlIGluIHBsYWNlLCBhbmQgZGV0ZXJtaW5lIGlmIGV2ZXJ5dGhpbmcgaXMgdXAtdG8tZGF0ZS4gTmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICA2Olx0bWVudWNvbmZpZyBXTEFOXG4gICA3Olx0XHRib29sIFwmIzM0O1dpcmVsZXNzIExBTlwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiAhUzM5MFxuICAgOTpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgMTA6XHRcdHNlbGVjdCBXSVJFTEVTU1xuICAxMTpcdFx0ZGVmYXVsdCB5XG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xuICAxNDpcdFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXG4gIDE1Olx0XHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDk5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqV2lyZWxlc3MgSW5mcmFzdHJ1Y3R1cmUgQ2hlY2sqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBuZWVkIGZvciBhIGBXTEFOYCBjb21wb25lbnQuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgY29udGV4dCwgaXMgdG8gaW1tZWRpYXRlbHkgZGl2ZSBpbnRvIHRoZSBgV0lSRUxFU1NgIGRlcGVuZGVuY2llcy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBjb21wbGV4aXR5IGxpZXMsIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcnBsYXkgdGhlcmUgd2lsbCBkZXRlcm1pbmUgdGhlIGZlYXNpYmlsaXR5IGFuZCBiZXN0IGFwcHJvYWNoLiBJIG5lZWQgdG8ga25vdyB3aGljaCB0ZWNobm9sb2dpZXMgYXJlIGJlaW5nIGNvbnNpZGVyZWQsIGFuZCBob3cgdGhleSB3aWxsIGludGVyb3BlcmF0ZS4gSSYjMzk7bSB0aGlua2luZzogODAyLjExYXgsIHBlcmhhcHM/IE9yIGV2ZW4gZnV0dXJlLXByb29maW5nIHdpdGggYSBsb29rIGF0IDgwMi4xMWJlPyBUaGUgc2VjdXJpdHkgaW1wbGljYXRpb25zIGFyZSBhbHNvIHRvcCBvZiBtaW5kIOKAkyBXUEEzLCBvYnZpb3VzbHksIGJ1dCB3aGF0IGFib3V0IGZpbmUtZ3JhaW5lZCBhY2Nlc3MgY29udHJvbCBhbmQgc2VnbWVudGF0aW9uPyBUaGlzIGVhcmx5IHN0YWdlIHNldHMgdGhlIHN0YWdlIGZvciB0aGUgcmVzdCBvZiB0aGUgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFdJUkVMRVNTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC93aXJlbGVzcy9LY29uZmlnOjI6Y29uZmlnIFdJUkVMRVNTX0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMy1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3ODQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqS2NvbmZpZyBMb2NhdGlvbiBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoZXJlIGEgc3BlY2lmaWMgS2NvbmZpZyBvcHRpb24gcmVsYXRlZCB0byB3aXJlbGVzcyBuZXR3b3JraW5nIHJlc2lkZXMuIFRoZSBrbmVlLWplcmsgcmVhY3Rpb24gaXMgdG8gdGhpbmssICYjMzQ7V2VsbCwgKm9mIGNvdXJzZSogaXQmIzM5O3MgaW4gYG5ldC93aXJlbGVzcy9LY29uZmlnYC4mIzM0OyBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlLCB0aGUgbW9zdCBvYnZpb3VzIGRpcmVjdG9yeS4gQnV0IHdhaXQuLi4gaXMgaXQgKmFsd2F5cyogdGhhdCBzdHJhaWdodGZvcndhcmQ/IFNvbWV0aW1lcyB0aGVzZSB0aGluZ3MgYXJlIGNyb3NzLWxpbmtlZCBvciBwbGFjZWQgaW4gbW9yZSBnZW5lcmFsIGFyZWFzIGZvciBicm9hZGVyIGRlcGVuZGVuY2llcy4gTWF5YmUgaXQgd2FzIGdlbmVyYWxpemVkLCBhbmQgcHV0IGl0IGluIGBuZXQvS2NvbmZpZ2A/IEl0IGNvdWxkIGJlLCBkZXBlbmRpbmcgb24gaG93IHRoYXQgZnVuY3Rpb25hbGl0eSBpcyBidWlsdC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsaWtlbHkgYWx0ZXJuYXRpdmUuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFdJUkVMRVNTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NDIzPWNvbmZpZyBGSUJfUlVMRVNcbi0tXG5uZXQvS2NvbmZpZy00MjUtXG5uZXQvS2NvbmZpZzo0MjY6bWVudWNvbmZpZyBXSVJFTEVTU1xubmV0L0tjb25maWctNDI3LVx0Ym9vbCBcJiMzNDtXaXJlbGVzc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDA2OQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFdJUkVMRVNTIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgYFdJUkVMRVNTYCBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgbGlicmFyaWVzLCBtb2R1bGVzLCBvciBzZXJ2aWNlcyB0aGlzIGNvbXBvbmVudCByZWxpZXMgdXBvbi4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBjaGVjazsgSSYjMzk7bSBsb29raW5nIGZvciBhIGRldGFpbGVkIGRlcGVuZGVuY3kgZ3JhcGguIEkmIzM5O2xsIG5lZWQgdG8ga25vdyBub3Qgb25seSB0aGUgZGlyZWN0IGRlcGVuZGVuY2llcywgYnV0IGFsc28gdGhlIHRyYW5zaXRpdmUgb25lcyDigJMgdGhvc2UgZGVwZW5kZW5jaWVzIG9mIGRlcGVuZGVuY2llcy4gV2hhdCB2ZXJzaW9uIHJhbmdlcyBhcmUgd2UgZGVhbGluZyB3aXRoPyBBcmUgdGhleSBwaW5uZWQsIG9yIGZsZXhpYmxlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaG9zZW4gdmVyc2lvbnM/CgpNeSBnb2FsIGhlcmUgaXMgdG8gaWRlbnRpZnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcywgY29uZmxpY3RzLCBvciBpbmVmZmljaWVuY2llcy4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBrbm93biBDVkVzIHdpdGhpbiB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgd2hldGhlciB0aGV54oCZcmUgcHJvcGVybHkgbWl0aWdhdGVkLiBJJiMzOTtsbCBhbHNvIGJlIGNvbnNpZGVyaW5nIHdoZXRoZXIgdGhlIGRlcGVuZGVuY2llcyBhcmUgd2VsbC1tYWludGFpbmVkLCBhbmQgaWYgdGhleSByZXByZXNlbnQgYSBzb3VyY2Ugb2YgdGVjaG5pY2FsIGRlYnQuIEkgd2FudCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY2llcywgc28gSSBrbm93IHdoZXJlIHRvIGZvY3VzIGFueSBuZWNlc3NhcnkgYXVkaXRzIG9yIHVwZ3JhZGVzLiBJdCYjMzk7cyB0aW1lIHRvIGJ1aWxkIHRoZSBtYXAhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MjYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQyNjpcdG1lbnVjb25maWcgV0lSRUxFU1NcbiA0Mjc6XHRcdGJvb2wgXCYjMzQ7V2lyZWxlc3NcJiMzNDtcbiA0Mjg6XHRcdGRlcGVuZHMgb24gIVMzOTBcbiA0Mjk6XHRcdGRlZmF1bHQgeVxuIDQzMDpcdFxuIDQzMTpcdGlmIFdJUkVMRVNTXG4gNDMyOlx0XG4gNDMzOlx0c291cmNlIFwmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnXCYjMzQ7XG4gNDM0Olx0c291cmNlIFwmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnXCYjMzQ7XG4gNDM1Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDU3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczoKCioqV2lyZWxlc3MgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpBbHJpZ2h0LCB0aGUgZGVmYXVsdCBzZXR1cCBzZWVtcyB0byBiZSBvcGVyYXRpbmcgb24gYSBgV0lSRUxFU1NgIHNldHRpbmcsIHNwZWNpZmljYWxseSwgYSBgeWAgZGVzaWduYXRpb24uIEdvb2QuIE5vdywgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQ6IGBXTEFOYCwgYENGRzgwMjExYCwgYE1BQzgwMjExYCwgd2hpY2ggYXJlIGZvdW5kYXRpb25hbCBmb3Igd2lyZWxlc3Mgb3BlcmF0aW9uLiBBbmQgb2YgY291cnNlLCB0aGVyZSBhcmUgc3BlY2lmaWMgZHJpdmVycyByZWxhdGVkIHRvIGhhcmR3YXJlOiBgUlRMODE4MGAgYW5kIGBSVEw4MTg3YC4gSXQmIzM5O3MgYSBQQ0kgb3IgVVNCIHN5c3RlbSwgc28gdGhvc2Ugb3B0aW9ucyBhcmUgaW1wb3J0YW50OiBgVVNCYCBhbmQgYFBDSWAuCgpJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRvIHNlZSBpZiB0aGVyZSBpcyBzb21ldGhpbmcgbGlrZSBgUlRMODE4WGAuLi4gb3IgYW55dGhpbmcgbGlrZSB0aGF0IGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRMODE4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3NjcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYSBLZXJuZWwgQ29uZmlndXJhdGlvbiBJbmNsdXNpb24qKgoKT2theSwgc28gSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBhIHJlZmVyZW5jZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWdgLiBSaWdodCwgaXQmIzM5O3MgaW5jbHVkZWQgZnJvbSBzb21ld2hlcmUgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGlzIGJlaW5nIGJyb3VnaHQgaW50byB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IGNoYWluIHRoYXQgbGVhZHMgdG8gdGhpcyBwYXJ0aWN1bGFyIEtjb25maWcgZmlsZSBiZWluZyBwYXJzZWQuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdHJhY2luZyB0aGUgaW5jbHVzaW9uIGNvbmRpdGlvbnMsIHBhcnRpY3VsYXJseSBpZiBJJiMzOTttIGxvb2tpbmcgdG8gZGlzYWJsZSBvciBtb2RpZnkgdGhlIGRyaXZlciYjMzk7cyBidWlsZCBvcHRpb25zLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgYW5kIG1ha2VmaWxlcyBmb3IgdGhlIGRpcmVjdCBvciBpbmRpcmVjdCBpbmNsdXNpb24gb2YgdGhpcyBzcGVjaWZpYyBmaWxlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBgc291cmNlYCwgYGluY2x1ZGVgLCBvciBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkaXJlY3RpdmVzIHRoYXQgY291bGQgYmUgcHVsbGluZyB0aGlzIEtjb25maWcgaW50byB0aGUgYnVpbGQuIFRoZW4gSSBjYW4gZGV0ZXJtaW5lIHdoZXJlIHRoaXMgY29uZmlndXJhdGlvbiBmb3IgdGhlIFJlYWx0ZWsgUlRMODE4eCB3aXJlbGVzcyBkcml2ZXIgaXMgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODE4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWc9MTM9aWYgV0xBTl9WRU5ET1JfUkVBTFRFS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnOjE1OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnLTE2LXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTE1NwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IFJlYWx0ZWsgRHJpdmVyIFJlcXVpcmVtZW50KioKCkFscmlnaHQsIHNvIHRoZSBwcm9qZWN0JiMzOTtzIGF0IGEgcG9pbnQgd2hlcmUgSSBuZWVkIHRvIHNlcmlvdXNseSBjb25zaWRlciB0aGUgd2lyZWxlc3MgTEFOIGltcGxlbWVudGF0aW9uLiBUaGUgaW1tZWRpYXRlIHRob3VnaHQgZmxhc2hpbmcgdGhyb3VnaCBteSBtaW5kIGlzICYjMzQ7UmlnaHQsIHdlJiMzOTtyZSBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIGRlYWxpbmcgd2l0aCBhIFJlYWx0ZWsgY2hpcHNldCBoZXJlLCBhcmVuJiMzOTt0IHdlPyYjMzQ7IEkgcXVpY2tseSBpZGVudGlmeSB0aGF0IEkmIzM5O2xsIG5lZWQgdG8gd29yayB3aXRoIHRoZSBgV0xBTl9WRU5ET1JfUkVBTFRFS2AgZHJpdmVyLiBObyBzdXJwcmlzZXMgdGhlcmUsIHRoZXkmIzM5O3JlIGV2ZXJ5d2hlcmUuIE5vdyBpdCYjMzk7cyBhIG1hdHRlciBvZiBmaWd1cmluZyBvdXQgd2hpY2ggc3BlY2lmaWMgcmV2aXNpb24sIGFuZCB3aGF0IGtlcm5lbCB2ZXJzaW9ucyB3ZSBuZWVkIHRvIHN1cHBvcnQuIFRoZSBsZXZlbCBvZiBzdXBwb3J0IHZhcmllcyB3aWxkbHksIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3Qgc2lsaWNvbiByZXZpc2lvbi4gVGhpcyBpcyBnb2luZyB0byBpbmZsdWVuY2UgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgc29sdXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBXTEFOX1ZFTkRPUl9SRUFMVEVLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX1JFQUxURUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtSZWFsdGVrIGRldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0NjcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFJlYWx0ZWsgV0xBTiBEZXBlbmRlbmN5IExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBXTEFOX1ZFTkRPUl9SRUFMVEVLYC4gVGhpcyBsaWtlbHkgbWVhbnMgSSYjMzk7bSBsb29raW5nIGF0IGEgZHJpdmVyLCBhIGZpcm13YXJlLCBvciBzb21lIG90aGVyIG1vZHVsZSBzcGVjaWZpY2FsbHkgYnVpbHQgZm9yIFJlYWx0ZWsmIzM5O3MgV0xBTiBoYXJkd2FyZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbWFwIG91dCB0aGUgZW50aXJlIGRlcGVuZGVuY3kgY2hhaW4g4oCTIHdobyByZWxpZXMgb24gdGhpcywgYW5kIHdoYXQgZG9lcyBpdCAqaXRzZWxmKiBkZXBlbmQgb24/IElzIGl0IHRpZWQgdG8gYSBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbiwgYSBwYXJ0aWN1bGFyIHNldCBvZiBsaWJyYXJpZXMsIG9yIGV2ZW4gb3RoZXIgdmVuZG9yLXNwZWNpZmljIGNvbXBvbmVudHM/IEFyZSB0aGVyZSBhbnkga25vd24gY29tcGF0aWJpbGl0eSBpc3N1ZXMgb3IgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mIGltbWVkaWF0ZWx5PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaW1wYWN0IGlmIHRoZXJlIGFyZSBjaGFuZ2VzIG9yIHBvdGVudGlhbCBwcm9ibGVtcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGF3YXJlIG9mIGV2ZXJ5IHBvc3NpYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMjpcdGNvbmZpZyBXTEFOX1ZFTkRPUl9SRUFMVEVLXG4gICAzOlx0XHRib29sIFwmIzM0O1JlYWx0ZWsgZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCB5XG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gICA3Olx0XG4gICA4Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAgOTpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMDpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDExOlx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4MzgKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiA0MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFJlYWx0ZWsgV0xBTiBEcml2ZXIgQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBgV0xBTl9WRU5ET1JfUkVBTFRFS2AgaXMgc2V0IGFzIHRoZSBkZWZhdWx0LCB3aGljaCBtYWtlcyBzZW5zZS4gTGV0JiMzOTtzIGdldCBhIGhhbmRsZSBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBXTEFOYCwgYFdMQU5fVkVORE9SX1JFQUxURUtgLCBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBgUlRMODE4MGAsIGBSVEw4MTg3YCwgYFVTQmAsIGFuZCBgUENJYC4gQSBxdWljayBtZW50YWwgY2hlY2suLi4gc2VlbXMgbGlrZSBgUlRMODE4MGAgYW5kIGBSVEw4MTg3YCBhcmUgdGhlIGNvcmUgZHJpdmVycyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUuCgpBbHJpZ2h0LCBub3cgdG8gY29uZmlybSB0aGUgcHJvYmUgZnVuY3Rpb25zIGFyZSBpbmRlZWQgd2hhdCBJIHRoaW5rIHRoZXkgYXJlLiBZZXMsIGBydGw4MTgwX3Byb2JlYCBhbmQgYHJ0bDgxODdfcHJvYmVgIOKAkyB0aG9zZSBhcmUgdGhlIFBDSSBhbmQgVVNCIGRyaXZlciBwcm9iZSBmdW5jdGlvbnMgcmVzcGVjdGl2ZWx5LiBBbmQgdGhleSYjMzk7cmUgbm90IGlubGluZWQsIHdoaWNoIGlzIGV4cGVjdGVkIHNpbmNlIHRoZXkmIzM5O3JlIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gdGhlIGRyaXZlciBzdHJ1Y3R1cmVzLgoKT2theSwgbGV0JiMzOTtzIHNlZSB3aGljaCBmaWxlcyB3ZXJlIGFjdHVhbGx5IHRvdWNoZWQuIExvb2tzIGxpa2Ugb25seSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmNgIHdlcmUgbW9kaWZpZWQuCgpBaCwgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYW4gdW5pbml0aWFsaXplZCB2YXJpYWJsZSwgYHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tO2AsIGluaXRpYWxpemluZyBpdCB0byBge31gLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2U7IHdlJiMzOTtyZSBwcmV2ZW50aW5nIHJlYWRzIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIGdvb2QuIEltcG9ydGFudCBmb3IgZnV6emluZyBiZWNhdXNlIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGFyZSBwcmltZSB0YXJnZXRzIGZvciBidWdzLgoKVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkmIzM5O2xsIGZvY3VzIG9uIGBydGw4MTgwX3Byb2JlYCBhbmQgYHJ0bDgxODdfcHJvYmVgIGZvciBub3csIGFuZCB0aGVzZSBhcmUgdGhlIGNvbmZpZ3MgdG8gZW5hYmxlOiBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9SRUFMVEVLYCwgYENGRzgwMjExYCwgYE1BQzgwMjExYCwgYFJUTDgxODBgLCBgUlRMODE4N2AsIGBVU0JgLCBhbmQgYFBDSWAuCgpKdXN0IHF1aWNrbHksIGxldCBtZSBjb25maXJtIGlmIGBydGw4MTgwX2VlcHJvbV9yZWFkYCBpcyBjYWxsZWQgZWxzZXdoZXJlIHRvIHNlZSBpZiB3ZSYjMzk7dmUgZ290IGFueSBwb3RlbnRpYWwgc2Vjb25kYXJ5IGF0dGFjayBzdXJmYWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODE4MF9lZXByb21fcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE2MzQ9c3RhdGljIHZvaWQgcnRsODE4MF9lZXByb21fcmVnaXN0ZXJfd3JpdGUoc3RydWN0IGVlcHJvbV85M2N4NiAqZWVwcm9tKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE2NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYzoxNjUzOnN0YXRpYyB2b2lkIHJ0bDgxODBfZWVwcm9tX3JlYWQoc3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE2NTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE3MzA9c3RhdGljIGludCBydGw4MTgwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE4ODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYzoxODg5Olx0cnRsODE4MF9lZXByb21fcmVhZChwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE4OTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTUyCgkJCQkJCQlvdXRwdXQ6IDIwMgoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZpbmFsIENoZWNrcyBDb21wbGV0ZSoqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIHRoZSBpc3N1ZSBpcyBpc29sYXRlZCB0byBgcnRsODE4MF9wcm9iZWAuIFRoYXQgd2FzIHRoZSBpbml0aWFsIGh1bmNoLCBhbmQgdGhlIGZvY3VzIHNlZW1zIGNvcnJlY3QuIE5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUuIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgYGVlcHJvbWAgaGFwcGVucyBkaXJlY3RseSBpbiBgcnRsODE4N19wcm9iZWAgYXMgd2VsbCwgc28gdGhhdCYjMzk7cyBnb29kIGNvbmZpcm1hdGlvbi4gR2l2ZW4gdGhhdCwgdGhlIGNyaXRpY2FsIHN5bWJvbHMgYXJlIHdoZXJlIHRoZXkgbmVlZCB0byBiZS4gQWxyaWdodCwgdGltZSB0byBkbyBhIGZpbmFsIHN3ZWVwLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgaW5pdGlhbGl6ZXMgdGhlIGBlZXByb21gIHRvIHplcm8sIHdoaWNoIGRlZmluaXRlbHkgY29uc3RpdHV0ZXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gRnVydGhlciwgdGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIHRocm91Z2ggYm90aCBVU0IgYW5kIFBDSSBwcm9iaW5nLCB3aGljaCBzZWVtcyBhcHByb3ByaWF0ZSBmb3IgaG93IHRoZSBkcml2ZXIgd29ya3MuIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHNldCB1cCBjb3JyZWN0bHkuIEdvb2QuIEkmIzM5O20gc2F0aXNmaWVkLiBJJiMzOTtsbCBpbml0aWF0ZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9SRUFMVEVLJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1JUTDgxODAmIzM0OywKICAgICYjMzQ7UlRMODE4NyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsODE4MF9wcm9iZSYjMzQ7LAogICAgJiMzNDtydGw4MTg3X3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaXNzdWUgYnkgemVyby1pbml0aWFsaXppbmcgYHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tYCBpbiB0aGUgcHJvYmUgcGF0aHMgb2YgdGhlIHJ0bDgxODAgKFBDSSkgYW5kIHJ0bDgxODcgKFVTQikgZHJpdmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIFVTQiBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgZHVtbXlfaGNkLCBhbmQgdGhlIFBDSSBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgUENJIGZ1enppbmcgZnJhbWV3b3Jrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9SRUFMVEVLJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1JUTDgxODAmIzM0OywKICAgICYjMzQ7UlRMODE4NyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRsODE4MF9wcm9iZSYjMzQ7LAogICAgJiMzNDtydGw4MTg3X3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaXNzdWUgYnkgemVyby1pbml0aWFsaXppbmcgYHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tYCBpbiB0aGUgcHJvYmUgcGF0aHMgb2YgdGhlIHJ0bDgxODAgKFBDSSkgYW5kIHJ0bDgxODcgKFVTQikgZHJpdmVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIFVTQiBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgZHVtbXlfaGNkLCBhbmQgdGhlIFBDSSBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgUENJIGZ1enppbmcgZnJhbWV3b3Jrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUwOjUzLjI3NzQ4NzE3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ0MDkwNTY5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfUkVBTFRFS1wiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJSVEw4MTgwXCIsXG4gICAgXCJSVEw4MTg3XCIsXG4gICAgXCJVU0JcIixcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxODBfcHJvYmVcIixcbiAgICBcInJ0bDgxODdfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlIGJ5IHplcm8taW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbWAgaW4gdGhlIHByb2JlIHBhdGhzIG9mIHRoZSBydGw4MTgwIChQQ0kpIGFuZCBydGw4MTg3IChVU0IpIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBVU0IgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15X2hjZCwgYW5kIHRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUwOjUzLjI3NzQ5NTUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTE4NTc2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwMWRkMWFmOTkwOGFmNDFmZTYyOWExNmZjMmFmYWUwYWVjOWVjMmJjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDI2IDAwOjUwOjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNcXG5pbmRleCAwNzBjMDQzMWM0ODIxYy4uNGE1OTg5MTcyYTVlM2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuY1xcbkBAIC0xNjUyLDcgKzE2NTIsNyBAQCBzdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWdpc3Rlcl93cml0ZShzdHJ1Y3QgZWVwcm9tXzkzY3g2ICplZXByb20pXFxuIFxcbiBzdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWFkKHN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYpXFxuIHtcXG4tXFx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XFxuK1xcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XFxuIFxcdGludCBlZXByb21fY2NrX3RhYmxlX2FkcjtcXG4gXFx0dTE2IGVlcHJvbV92YWw7XFxuIFxcdGludCBpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jXFxuaW5kZXggMWQyMWM0NjhhMjM2ODUuLmE3NjY3MTIxODdmNzdjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmNcXG5AQCAtMTQ0NSw3ICsxNDQ1LDcgQEAgc3RhdGljIGludCBydGw4MTg3X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbiBcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldjtcXG4gXFx0c3RydWN0IHJ0bDgxODdfcHJpdiAqcHJpdjtcXG4tXFx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XFxuK1xcdHN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tID0ge307XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbDtcXG4gXFx0Y29uc3QgY2hhciAqY2hpcF9uYW1lO1xcbiBcXHR1MTYgdHhwd3IsIHJlZztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTA6NTMuOTcwMDIyODY1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODM3MTY1MTExODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfUkVBTFRFS1wiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJSVEw4MTgwXCIsXG4gICAgXCJSVEw4MTg3XCIsXG4gICAgXCJVU0JcIixcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxODBfcHJvYmVcIixcbiAgICBcInJ0bDgxODdfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlIGJ5IHplcm8taW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbWAgaW4gdGhlIHByb2JlIHBhdGhzIG9mIHRoZSBydGw4MTgwIChQQ0kpIGFuZCBydGw4MTg3IChVU0IpIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBVU0IgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15X2hjZCwgYW5kIHRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDAxZGQxYWY5OTA4YWY0MWZlNjI5YTE2ZmMyYWZhZTBhZWM5ZWMyYmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAwMDo1MDo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNcbmluZGV4IDA3MGMwNDMxYzQ4MjFjLi40YTU5ODkxNzJhNWUzZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuY1xuQEAgLTE2NTIsNyArMTY1Miw3IEBAIHN0YXRpYyB2b2lkIHJ0bDgxODBfZWVwcm9tX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBlZXByb21fOTNjeDYgKmVlcHJvbSlcbiBcbiBzdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWFkKHN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYpXG4ge1xuLVx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XG4rXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O1xuIFx0aW50IGVlcHJvbV9jY2tfdGFibGVfYWRyO1xuIFx0dTE2IGVlcHJvbV92YWw7XG4gXHRpbnQgaTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jXG5pbmRleCAxZDIxYzQ2OGEyMzY4NS4uYTc2NjcxMjE4N2Y3N2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmNcbkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBzdGF0aWMgaW50IHJ0bDgxODdfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXY7XG4gXHRzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2O1xuLVx0c3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207XG4rXHRzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsO1xuIFx0Y29uc3QgY2hhciAqY2hpcF9uYW1lO1xuIFx0dTE2IHR4cHdyLCByZWc7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MDo1My45NzAwMjM2NzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTQzNzMwNTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVuaW5pdGlhbGl6ZWQgVmFyaWFibGUgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgaW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbSA9IHt9O2AgaW4gYSBjb3VwbGUgb2YgcGxhY2VzOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNgICh3aXRoaW4gYHJ0bDgxODBfZWVwcm9tX3JlYWRgKSBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jYCAoaW4gYHJ0bDgxODdfcHJvYmVgKS4gIFNvdW5kcyBsaWtlIGEgY2xhc3NpYyB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGZpeC4gIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXNlIGFyZWFzIGFyZSBldmVuIHJlYWNoYWJsZSwgcmlnaHQ/IFRoZSBwb3RlbnRpYWwgaW1wYWN0IGRlcGVuZHMgb24gaG93IGxpa2VseSB0aGlzIGNvZGUgaXMgdG8gYmUgZXhlY3V0ZWQuXG5cbmBydGw4MTgwYCBpcyBhIFBDSSBkcml2ZXIsIHdoaWNoIGlzIGxlc3MgbGlrZWx5IHRvIGJlIGZ1enplZCBpbiBteSBleHBlcmllbmNlLiAgUENJIGZ1enppbmcgZnJhbWV3b3JrcyBleGlzdCwgYnV0IGFyZW4ndCBhcyBjb21tb24gYXMgdGhvc2UgZm9yIFVTQi5cblxuYHJ0bDgxODdgLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgYSBVU0IgZHJpdmVyLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcuIFVTQiBkcml2ZXJzIGFyZSAqZGVmaW5pdGVseSogY2FuZGlkYXRlcyBmb3IgZnV6emluZyDigJMgdG9vbHMgbGlrZSBgZHVtbXlfaGNkYCBhbmQgb3RoZXIgVVNCIGZ1enppbmcgZnJhbWV3b3JrcyBhcmUgZnJlcXVlbnRseSB1c2VkIG9uIHRoZXNlLiBJdCdzIGEgbXVjaCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCBwYXRoIHRvIHJlYWNoIHRob3NlIGZ1bmN0aW9ucy4gVGhlIHBhdGNoIGlzIHByb2JhYmx5IHZlcnkgaW1wb3J0YW50IGlmIGBydGw4MTg3YCBpcyBlbmFibGVkLlxuXG5JIHJlYWxseSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZXNlIGRyaXZlcnMgYXJlIGJ1aWx0IHdpdGggdGhlIGtlcm5lbC4gVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyB0byBzZWUgaWYgdGhlIG1vZHVsZXMgYXJlIGV2ZW4gZW5hYmxlZCwgb3IgYXJlIGJ1aWx0IGFzIG1vZHVsZXMgaW4gdGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MzEsIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MDo1OS4xMTM3NTc3NDlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwNTc4OTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bDgxODBfZWVwcm9tX3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM9MTYzND1zdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWdpc3Rlcl93cml0ZShzdHJ1Y3QgZWVwcm9tXzkzY3g2ICplZXByb20pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xNjUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jOjE2NTM6c3RhdGljIHZvaWQgcnRsODE4MF9lZXByb21fcmVhZChzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE2NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM9MTczMD1zdGF0aWMgaW50IHJ0bDgxODBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xODg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jOjE4ODk6XFx0cnRsODE4MF9lZXByb21fcmVhZChwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xODkwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MDo1OS4yMzQzNDM4NzlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQyOTcwNjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhvc2UgbGluZXMsIGFzIEkgdW5kZXJzdGFuZCB0aGUgc2l0dWF0aW9uOlxuXG4qKlByb2JpbmcgdGhlIFJUTDgxOFggQ2hpcHNldCoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgZHJpdmVyIGluaXRpYWxpemF0aW9uIGZvciBhIFJlYWx0ZWsgODE4MC84MTg3IHNlcmllcyBjaGlwc2V0LiBGcm9tIHdoYXQgSSBzZWUsIGBydGw4MTgwX2VlcHJvbV9yZWFkYCBpcyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSBgcnRsODE4MF9wcm9iZWAgcHJvY2Vzcy4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IHJlYWRpbmcgdGhlIEVFUFJPTSBpcyBhIGNydWNpYWwgc3RlcCBpbiBicmluZ2luZyB1cCB0aGUgODE4MCB2YXJpYW50IG9mIHRoZSBjaGlwc2V0LiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIEFuZCwgb2YgY291cnNlLCBgcnRsODE4N19wcm9iZWAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgODE4NyB2YXJpYW50LCBjb25maXJtaW5nIGEgc2VwYXJhdGUgcHJvYmUgZnVuY3Rpb24gZXhpc3RzIGZvciBpdC4gVGhhdCdzIGEgcmVhc29uYWJsZSBzcGxpdCwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBoYXJkd2FyZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSA4MTgwIGFuZCA4MTg3LlxuXG5HaXZlbiB0aGVzZSB0d28gZnVuY3Rpb25zIGFyZSBjbG9zZWx5IGFzc29jaWF0ZWQgd2l0aCBkaWZmZXJlbnQgZGV2aWNlcywgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBydGw4MTh4YC4gVGhpcyB3aWxsIHRlbGwgbWUgaG93IHRoZXNlIG1vZHVsZXMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lIGFuZCByZXZlYWwgYW55IGRlcGVuZGVuY2llcy4gS25vd2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIHZpdGFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZHJpdmVyIGlzIHN0cnVjdHVyZWQgYW5kIGhvdyBkaWZmZXJlbnQgaGFyZHdhcmUgdmFyaWF0aW9ucyBhcmUgaGFuZGxlZC4gSSBuZWVkIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBtaWdodCBhbGxvdy9kaXNhYmxlIGBydGw4MTgwX3Byb2JlYCBhbmQgYHJ0bDgxODdfcHJvYmVgIGFuZCB1bmRlcnN0YW5kIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB0aGUgb3ZlcmFsbCBkcml2ZXIgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTowMi42NzczMjg1MjdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMTAwMzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVEw4MThcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctNC0jXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWc6NTpjb25maWcgUlRMODE4MFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODE4MC84MTg1LzgxODdTRSBQQ0kgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnOjYxOmNvbmZpZyBSVEw4MTg3XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctNjItXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODE4NyBhbmQgODE4N0IgVVNCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZy04NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZzo4NTpjb25maWcgUlRMODE4N19MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctODYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTowMi43ODc0MzYzMDVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTg5NDUyMjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IERyaXZlciBMYW5kc2NhcGUqKlxuXG5SaWdodCwgc28gdGhlIGtleSBjb25maWd1cmF0aW9ucyB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZSBhcmUgYFJUTDgxODBgIGFuZCBgUlRMODE4N2AuIEltbWVkaWF0ZWx5LCBJIHNlZSBhIGRpc3RpbmN0aW9uLiBUaGUgYFJUTDgxODdgIGlzIGEgVVNCIGRyaXZlciwgd2hpY2ggaW5zdGFudGx5IG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBVU0IgZHJpdmVycywgaW4gbXkgZXhwZXJpZW5jZSwgb2Z0ZW4gcHJlc2VudCBpbnRlcmVzdGluZyBhdHRhY2sgc3VyZmFjZXMuIFRoZSBgUlRMODE4MGAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBQQ0ktYmFzZWQuIFRoYXQgaW50cm9kdWNlcyBhIGRpZmZlcmVudCBzZXQgb2YgY29uc2lkZXJhdGlvbnMsIGEgZGlmZmVyZW50IGF0dGFjayB2ZWN0b3IgYWx0b2dldGhlci4gR2l2ZW4gbXkgZm9jdXMgaXMgZ2VuZXJhbGx5IG9uIGZ1enppbmcgYW5kIHRhcmdldGVkIHZ1bG5lcmFiaWxpdHkgcmVzZWFyY2gsIHRoZSBVU0IgZHJpdmVyIGRlZmluaXRlbHkgcGlxdWVzIG15IGludGVyZXN0IHRoZSBtb3N0IHJpZ2h0IG5vdy5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGBSVEw4MTg3YCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIFdoYXQgb3RoZXIgbW9kdWxlcyBkb2VzIGl0IHJlbHkgb24/IFdoYXQgaW50ZXJmYWNlcyBkb2VzIGl0IGV4cG9zZT8gVGhpcyB3aWxsIGd1aWRlIG15IGZ1enppbmcgZWZmb3J0cyBhbmQgaGVscCBtZSBpZGVudGlmeSB0aGUgbW9zdCBwcm9taXNpbmcgZW50cnkgcG9pbnRzLiBVbmRlcnN0YW5kaW5nIHRoZSBlY29zeXN0ZW0gaXQgb3BlcmF0ZXMgaW4gaXMgY3J1Y2lhbCBmb3Igc3VjY2Vzc2Z1bCB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS4gVGltZSB0byBkaWcgaW50byB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQ4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MDYuMzc2ODkxMDY2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5NDkzMDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVEw4MTg3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnPTU9Y29uZmlnIFJUTDgxODBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnLTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnOjYxOmNvbmZpZyBSVEw4MTg3XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctNjItXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODE4NyBhbmQgODE4N0IgVVNCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZy04NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvS2NvbmZpZzo4NTpjb25maWcgUlRMODE4N19MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWctODYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTowNi40NzYzODk0ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzAxMjc5OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIFJUTDgxODcqKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJCZWZvcmUgSSBwcm9jZWVkLCBJICpuZWVkKiB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzIG9mIGBSVEw4MTg3YC5cIiBJJ20gbm90IGdvaW5nIHRvIHJ1c2ggaW50byBhbnl0aGluZyB3aXRob3V0IGtub3dpbmcgd2hhdCBpdCdzIGNvbm5lY3RlZCB0by4gV2hldGhlciBJJ20gbG9va2luZyBhdCBhIGhhcmR3YXJlIGRlc2lnbiwgYSBzb2Z0d2FyZSBkcml2ZXIsIGEgc3BlY2lmaWMgY2hpcCwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHksIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBwYXJhbW91bnQuIFdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBtb2R1bGVzIHJlbHkgb24gYFJUTDgxODdgPyBXaGF0IGRvZXMgaXQgZGVwZW5kIG9uIGluIHJldHVybj8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgY29tcG9uZW50LCBvciBzb21ldGhpbmcgbW9yZSBpbnRlcnR3aW5lZCBhbmQgY29tcGxleD8gVGhlIG5hdHVyZSBvZiB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCBjb21wbGV0ZWx5IHNoYXBlIGhvdyBJIGFwcHJvYWNoIHRoZSBuZXh0IHN0ZXAsIHNvIEkgaGF2ZSB0byBhc2NlcnRhaW4gdGhlbSBhcyBhIHByaW9yaXR5LiBUaGlzIGlzIGVzc2VudGlhbCBmb3IgcHJvcGVyIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjI0LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MDkuMTc3NjcxNzYyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYxOlxcdGNvbmZpZyBSVEw4MTg3XFxuICA2MjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MTg3IGFuZCA4MTg3QiBVU0Igc3VwcG9ydFxcXCJcXG4gIDYzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgVVNCXFxuICA2NDpcXHRcXHRzZWxlY3QgRUVQUk9NXzkzQ1g2XFxuICA2NTpcXHRcXHRoZWxwXFxuICA2NjpcXHRcXHQgIFRoaXMgaXMgYSBkcml2ZXIgZm9yIFJUTDgxODcgYW5kIFJUTDgxODdCIGJhc2VkIGNhcmRzLlxcbiAgNjc6XFx0XFx0ICBUaGVzZSBhcmUgVVNCIGJhc2VkIGNoaXBzIGZvdW5kIGluIGRldmljZXMgc3VjaCBhczpcXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0ICBOZXRnZWFyIFdHMTExdjJcXG4gIDcwOlxcdFxcdCAgTGV2ZWwgMSBXTkMtMDMwMVVTQlxcbiAgNzE6XFx0XFx0ICBNaWNyb25ldCBTUDkwN0dLIFY1XFxuICA3MjpcXHRcXHQgIEVuY29yZSBFTlVXSS1HMlxcbiAgNzM6XFx0XFx0ICBUcmVuZG5ldCBURVctNDI0VUJcXG4gIDc0OlxcdFxcdCAgQVNVUyBQNUIgRGVsdXhlL1A1SyBQcmVtaXVtIG1vdGhlcmJvYXJkc1xcbiAgNzU6XFx0XFx0ICBUb3NoaWJhIFNhdGVsbGl0ZSBQcm8gc2VyaWVzIG9mIGxhcHRvcHNcXG4gIDc2OlxcdFxcdCAgQXN1cyBXaXJlbGVzcyBMaW5rXFxuICA3NzpcXHRcXHQgIExpbmtzeXMgV1VTQjU0R0MtRVUgdjJcXG4gIDc4OlxcdFxcdCAgICAodjEgPSBydDczdXNiOyB2MyBpcyBydDIwNzAtYmFzZWQsXFxuICA3OTpcXHRcXHQgICAgIHVzZSBzdGFnaW5nL3J0MzA3MCBvciB0cnkgcnQyODAwdXNiKVxcbiAgODA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjA5LjE3Nzc1Njk2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDkxODYyNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBkZXBlbmRlbmNpZXMsIHN1bW1hcml6ZWQgYXMgYSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCBEcml2ZXIgQ2hlY2sqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIHNlZW1zIHRvIGludm9sdmUgZWl0aGVyICpNQUM4MDIxMSogb3IgdGhlICpVU0IqIHN1YnN5c3RlbS4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYXMgaXQgaW1tZWRpYXRlbHkgaWRlbnRpZmllcyB0aGUgY29yZSBhcmVhcyBJIG5lZWQgdG8gZm9jdXMgb24uIFRoZSBkcml2ZXIgaXRzZWxmIGlzIGNsZWFybHkgKlJUTDgxODcqLlxuXG5Ob3csIGdpdmVuIHRoYXQgaXQncyBhbiBSVEw4MTg3LCBJIHNob3VsZCBxdWlja2x5IGNoZWNrIGlmIFJUTDgxODAgaGFzIGFueSBwYXJ0aWN1bGFyIGRlcGVuZGVuY3ksIG9yIGlmIHRoZXJlJ3MgYW55IGltcG9ydGFudCByZWxhdGlvbnNoaXAgYmV0d2VlbiBpdCBhbmQgUlRMODE4Ny4gVGhpcyBpcyBsaWtlbHkganVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCBhbnkgcG90ZW50aWFsIGFzc3VtcHRpb25zIG9yIG92ZXJsYXBzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIHBvc3NpYmx5IHNvbWUgc291cmNlIGNvZGUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGF0IGRldmljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE5OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MTIuMjY5NjIyNDYyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDU6XFx0Y29uZmlnIFJUTDgxODBcXG4gICA2OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgxODAvODE4NS84MTg3U0UgUENJIHN1cHBvcnRcXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgIDg6XFx0XFx0c2VsZWN0IEVFUFJPTV85M0NYNlxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGlzIGlzIGEgZHJpdmVyIGZvciBSVEw4MTgwLCBSVEw4MTg1IGFuZCBSVEw4MTg3U0UgYmFzZWQgY2FyZHMuXFxuICAxMTpcXHRcXHQgIFRoZXNlIGFyZSBQQ0kgYmFzZWQgY2hpcHMgZm91bmQgaW4gY2FyZHMgc3VjaCBhczpcXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICAoUlRMODE4NSA4MDIuMTFnKVxcbiAgMTQ6XFx0XFx0ICBBLUxpbmsgV0w1NFBDXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgKFJUTDgxODAgODAyLjExYilcXG4gIDE3OlxcdFxcdCAgQmVsa2luIEY1RDYwMjAgdjNcXG4gIDE4OlxcdFxcdCAgQmVsa2luIEY1RDYwMjAgdjNcXG4gIDE5OlxcdFxcdCAgRGxpbmsgRFdMLTYxMFxcbiAgMjA6XFx0XFx0ICBEbGluayBEV0wtNTEwXFxuICAyMTpcXHRcXHQgIE5ldGdlYXIgTUE1MjFcXG4gIDIyOlxcdFxcdCAgTGV2ZWwtT25lIFdQQy0wMTAxXFxuICAyMzpcXHRcXHQgIEFjZXIgQXNwaXJlIDEzNTcgTE1pXFxuICAyNDpcXHRcXHQgIFZDVG5ldCBQQy0xMUIxXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjEyLjI2OTY5NjkwMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzA2MDA1NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlByaW9yaXRpemluZyBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgbW9zdCBwcm9taXNpbmcgZnV6emluZyB0YXJnZXRzIGdpdmVuIHRoZSBwcm92aWRlZCBjb250ZXh0LiBJIHNlZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBgTUFDODAyMTFgIGFuZCBgUENJYCwgd2l0aCB0aGUgZHJpdmVycyBiZWluZyBgUlRMODE4MGAgKFBDSSkgYW5kIGBSVEw4MTg3YCAoVVNCKS5cblxuTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbGVhbiB0b3dhcmRzIGBSVEw4MTg3YCBiZWNhdXNlIGl0J3MgYSBVU0IgZHJpdmVyLiBVU0IgZHJpdmVycyBhcmUgdHlwaWNhbGx5IGVhc2llciB0byBmdXp6IHVzaW5nIGZyYW1ld29ya3MgbGlrZSBgZHVtbXlfaGNkYCwgYW5kIHRoZSBwYXRjaCBmaXhlcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBgcnRsODE4N19wcm9iZWAgYW5kIGBydGw4MTgwX2VlcHJvbV9yZWFkYC4gVGhlIGFkdmFudGFnZSB3aXRoIGBydGw4MTg3X3Byb2JlYCBpcyB0aGF0IHRoaXMgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciB0aGUgVVNCIGRyaXZlci4gYHJ0bDgxODBfZWVwcm9tX3JlYWRgIGlzIGNhbGxlZCBmcm9tIHRoZSBwcm9iZSBmb3IgdGhlIFBDSSBkcml2ZXIuICBQQ0kgZHJpdmVycyBhcmUgdHJpY2tpZXIgaW4gc3RhbmRhcmQgUUVNVTsgdW5sZXNzIHRoZXJlIGlzIGEgUENJIGZ1enppbmcgZnJhbWV3b3JrLCBVU0IgaXMgdGhlIG9idmlvdXMgY2hvaWNlLlxuXG5UaGVuIEkgZ2V0IGEgcmVtaW5kZXIgZnJvbSB0aGUgcHJvbXB0OiBpdCdzIGZvY3VzaW5nIG9uICpzcGVjaWZpYyogUENJZSBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSwgbGlrZSBmb3IgUENJZSBzd2l0Y2ggYW5kIEdQVSBkcml2ZXJzLiBgUlRMODE4MGAgaXMganVzdCBhIGdlbmVyaWMgd2lyZWxlc3MgUENJIGRyaXZlciwgc28gdGhhdCBkb2Vzbid0IGFwcGx5LiBJJ20gcmVjYWxsaW5nIHRoYXQgU3l6a2FsbGVyIGRvZXMgaGF2ZSAqc29tZSogUENJIGZ1enppbmcgY2FwYWJpbGl0eSB2aWEgYHN5el9wY2lfZGV2aWNlYCwgYnV0IFVTQiBpcyBkZWZpbml0ZWx5IGJldHRlciBzdXBwb3J0ZWQgd2l0aCBgc3l6X3VzYl9jb25uZWN0YC5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIGxldCdzIGNvbmZpcm0gdGhlIHByb2JlIGZ1bmN0aW9ucyBhcmUgZ29vZCBjaG9pY2VzLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEknbSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGVudHJ5cG9pbnRzLiBgcnRsODE4N19wcm9iZWAgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciBVU0IsIGFuZCBgcnRsODE4MF9wcm9iZWAgaXMgdGhlIHByb2JlIGZ1bmN0aW9uIGZvciBQQ0kuIE9rYXksIGdvb2QuXG5cbk5vdywgYSBjcml0aWNhbCB0aG91Z2h0OiB0aGUgcHJvbXB0IHByZWZlcnMgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgc2VlIHRoYXQgYHJ0bDgxODBfZWVwcm9tX3JlYWRgIGlzIHN0YXRpYy4gU2luY2UgYHJ0bDgxODBfcHJvYmVgIGlzIG5vbi1zdGF0aWMsIEkgc2hvdWxkIGZvY3VzIG9uIGBydGw4MTgwX3Byb2JlYC4gU2FtZSBxdWVzdGlvbiBmb3IgdGhlIFVTQiBzaWRlOiBgcnRsODE4N19wcm9iZWAgaXMgc3RhdGljIHRvbz8gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Nzk4LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MTkuNTc1NzA1ODI3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDcxMTk4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODE4N19wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYz0xNDIzPXN0YXRpYyB2b2lkIHJ0bDgxODdfZWVwcm9tX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBlZXByb21fOTNjeDYgKmVlcHJvbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jLTE0NDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmM6MTQ0MjpzdGF0aWMgaW50IHJ0bDgxODdfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmMtMTQ0My1cXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYz0xNjg5PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydGw4MTg3X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jLTE2OTEtXFx0LmlkX3RhYmxlXFx0PSBydGw4MTg3X3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jOjE2OTI6XFx0LnByb2JlXFx0XFx0PSBydGw4MTg3X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jLTE2OTMtXFx0LmRpc2Nvbm5lY3RcXHQ9IHJ0bDgxODdfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MTkuNjgyODMxNDQ3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDEwODI5MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBhcyBhbiBleHBlcnQgaW4gdGhpcyBhcmVhOlxuXG4qKkFuYWx5emluZyBEcml2ZXIgUHJvYmUgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgcHJvYmUgZnVuY3Rpb25zLCBgcnRsODE4N19wcm9iZWAgYW5kIGBydGw4MTgwX3Byb2JlYC4gVGhlIGtleSBwb2ludCBoZXJlIGlzIHRoYXQgdGhleSdyZSBib3RoIGRlY2xhcmVkIGBzdGF0aWNgLCBidXQgdGhleSdyZSBhY3RpbmcgYXMgdGhlIGAucHJvYmVgIGNhbGxiYWNrIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIFVTQiBhbmQgUENJIGRyaXZlcnMuIEkga25vdyBhIHN0YXRpYyBmdW5jdGlvbiBpcywgYnkgZGVmYXVsdCwgb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgY29tcGlsYXRpb24gdW5pdCBpdCdzIGRlZmluZWQgaW4uIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgYHJ0bDgxODdfcHJvYmVgJ3MgYWRkcmVzcyBpcyB0YWtlbiwgc3BlY2lmaWNhbGx5LCB0aGF0IGl0cyBhZGRyZXNzIGlzIGJlaW5nIGFzc2lnbmVkIGFzIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgYSBVU0IgZHJpdmVyIG1lYW5zIGl0ICppcyogYSB2YWxpZCBzeW1ib2wgZXh0ZXJuYWxseSwgZXZlbiB0aG91Z2ggaXQncyBgc3RhdGljYC4gVGhpcyBpcyBhIHZlcnkgY29tbW9uIHBhdHRlcm4gaW4gZHJpdmVyIGRldmVsb3BtZW50LCBhIHByb2JlIGNhbGxiYWNrIGlzIGFzc2lnbmVkLCBpdOKAmXMgbm90IGlubGluZWQgYmVjYXVzZSBpdCBuZWVkcyBhbiBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkIHNvIGl0IGJlY29tZXMgZXh0ZXJuYWxseSB2aXNpYmxlIGFuZCBjYW4gYmUgY2FsbGVkIGJ5IHRoZSBkcml2ZXIgY29yZS4gVGhlIGNvbXBpbGVyIGtub3dzIHRvIG1ha2UgaXQgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlLCBldmVuIHRob3VnaCBpdCBpcyBzdGF0aWNhbGx5IGRlY2xhcmVkLiBUaGlzIGlzIGFsc28gaG93IGl0IHdvcmtzIGZvciBgcnRsODE4MF9wcm9iZWAgYW5kIHRoZSBQQ0kgZHJpdmVyOyBubyBzdXJwcmlzZXMgdGhlcmUuIFRoaXMgaXMgYWxsIHN0YW5kYXJkIGRyaXZlciBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMzAsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MToyMy40MjM5MTc5OTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTcxMDQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGw4MTgwX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE2NTM9c3RhdGljIHZvaWQgcnRsODE4MF9lZXByb21fcmVhZChzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMtMTcyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYzoxNzMwOnN0YXRpYyBpbnQgcnRsODE4MF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xNzMxLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jPTE5ODM9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ0bDgxODBfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMtMTk4NS1cXHQuaWRfdGFibGVcXHQ9IHJ0bDgxODBfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM6MTk4NjpcXHQucHJvYmVcXHRcXHQ9IHJ0bDgxODBfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMtMTk4Ny1cXHQucmVtb3ZlXFx0XFx0PSBydGw4MTgwX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MjMuNTQzNjM1NTQ1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4Mzg4NjQwMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXMgXHUwMDI2IEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLiBGaXJzdCBvZmYsIGl0J3MgY2xlYXIgdGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgKnN0YXRpY2FsbHkqIGRlZmluZWQsIGJ1dCB0aGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuLiBUaGlzIG1lYW5zIHRoZXkncmUgKm5vdCogZ29pbmcgdG8gYmUgaW5saW5lZCBhbmQgZWFjaCB3aWxsIGhhdmUgaXRzIG93biBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcyDigJMgZ29vZCB0byBrbm93IGZvciBsYXRlciBkZWJ1Z2dpbmcuXG5cbkZ1bmN0aW9uYWxseSwgdGhlIHBhdGNoIG1ha2VzIGEgZGVmaW5pdGUgaW1wcm92ZW1lbnQuIEl0IGluaXRpYWxpemVzIGEgc3RydWN0dXJlIHRvIHplcm8sIHdoaWNoIGlzIGNyaXRpY2FsIGZvciBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoYXTigJlzIGEgY29tbW9uIHNvdXJjZSBvZiBidWdzIHdlIHNob3VsZCBiZSB0YXJnZXRpbmcgaW4gZnV6emluZy5cblxuTG9va2luZyBhdCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZXMsIGl0J3MgaGl0dGluZyByZWFjaGFibGUgZHJpdmVycyDigJMgc3BlY2lmaWNhbGx5IFVTQiBhbmQgUENJLiBUaGF04oCZcyBhIHNvbGlkIGluZGljYXRvciB0aGlzIGlzIHNvbWV0aGluZyB0byBwYXkgYXR0ZW50aW9uIHRvLiBHaXZlbiB0aGUgaW1wYWN0LCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5vdyBmb3IgdGhlIHRhcmdldGVkIHN5bWJvbHMuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZTogYHJ0bDgxODdfcHJvYmVgIGFuZCBgcnRsODE4MF9wcm9iZWAuIFJpZ2h0LCBzbyB0aGlzIGlzIGFib3V0IFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVycywgZ290IGl0LlxuXG5Gb3IgZW5hYmxpbmcgY29uZmlndXJhdGlvbnMsIGl0IGxpc3RzIGBSVEw4MTgwYCwgYFJUTDgxODdgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBQQ0lgLiBIYW5nIG9uLCBgVVNCYCBhbmQgYFBDSWAgYXJlIHByb2JhYmx5IGFscmVhZHkgZW5hYmxlZCBieSBkZWZhdWx0IGluIG91ciBzZXR1cCwgYnV0IGl0IGRvZXNuJ3QgaHVydCB0byBiZSBleHBsaWNpdCwgc28gSSdsbCBrZWVwIHRoZW0uIGBNQUM4MDIxMWAgaXMgYWJzb2x1dGVseSBlc3NlbnRpYWwgaGVyZSwgbm8gcXVlc3Rpb24gYWJvdXQgaXQuXG5cbkxldCdzIGNoZWNrIGZvciBhbnkgKm90aGVyKiBkZXBlbmRlbmNpZXMuIEhtbSwgbG9va3MgbGlrZSBgUlRMODE4N2AgZGVwZW5kcyBvbiBgTUFDODAyMTEgXHUwMDI2XHUwMDI2IFVTQmAuIEFuZCBgUlRMODE4MGAgZGVwZW5kcyBvbiBgTUFDODAyMTEgXHUwMDI2XHUwMDI2IFBDSWAuIE9rYXksIEkgd2lsbCBkb3VibGUgY2hlY2sgdGhvc2UgY29uZmlndXJhdGlvbnMsIGp1c3QgdG8gYmUgc3VyZSB3ZSBhcmUgbm90IG1pc3NpbmcgYW55IGltcG9ydGFudCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gTGV0IG1lIHNlZSBpZiBgTUFDODAyMTFgIGhhcyBpdHMgb3duIGRlcGVuZGVuY2llcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTgwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjI4LjM4MjUwMTg0NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY3OTczOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MjguNDc5MzA1NTUzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzMxNTYwMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlbTpcblxuKipNQUM4MDIxMSBhbmQgQ0ZHODAyMTE6IEEgRGVwZW5kZW5jeSB0byBSZW1lbWJlcioqXG5cblJpZ2h0LCBzbywgbGV0J3MgZ2V0IHRoaXMgc3RyYWlnaHQgaW4gbXkgaGVhZC4gKk1BQzgwMjExKi4uLiB0aGF0J3MgdGhlIGNvcmUgb2YgdGhlIHdpcmVsZXNzIG5ldHdvcmtpbmcgc3RhY2ssIGlzbid0IGl0PyBUaGUgb25lIHRoYXQgaGFuZGxlcyBhbGwgdGhlIG1lZGl1bSBhY2Nlc3MgY29udHJvbCwgZnJhbWUgbWFuYWdlbWVudCwgYW5kIGFsbCB0aGF0IGxvdy1sZXZlbCB3aXJlbGVzcyBzdHVmZi4gQW5kIHRoZW4gdGhlcmUncyAqQ0ZHODAyMTEqLCB3aGljaCBzZWVtcyBsaWtlIGEgYml0IG9mIGEgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UsIHllYWg/IEl0J3MgYSBzdGFuZGFyZCBpbnRlcmZhY2UgZm9yIGNvbmZpZ3VyaW5nIHdpcmVsZXNzIGRldmljZXMuXG5cblRoZSBrZXkgdGhpbmcgSSBuZWVkIHRvIHJlbWVtYmVyLCBhbmQgdGhpcyBpcyBjcnVjaWFsIGZvciB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUsIGlzIHRoYXQgKk1BQzgwMjExKiAqZGVwZW5kcyogb24gKkNGRzgwMjExKi4gVGhleSBhcmUgbm90IGluZGVwZW5kZW50IG1vZHVsZXMuIFNvICpDRkc4MDIxMSogcHJvdmlkZXMgdGhlIGludGVyZmFjZXMgdGhhdCAqTUFDODAyMTEqIHVzZXMgdG8gZG8gaXRzIHdvcmsuIFRoaW5rIG9mIGl0IGFzIE1BQzgwMjExIHJlbHlpbmcgb24gQ0ZHODAyMTEgZm9yIGl0cyBjb25maWd1cmF0aW9uIGFuZCByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbi4gR290IGl0LiBUaGF0J3MgYSBmdW5kYW1lbnRhbCByZWxhdGlvbnNoaXAuIEkgbmVlZCB0byBrZWVwIHRoYXQgZGVwZW5kZW5jeSBpbiBtaW5kIHdoZW4gd29ya2luZyB3aXRoIHRoZXNlIGNvbXBvbmVudHMuIElmIEknbSB0cm91Ymxlc2hvb3Rpbmcgb3IgZXh0ZW5kaW5nIHRoZSBzdGFjaywgdGhpcyByZWxhdGlvbnNoaXAgd2lsbCBkaWN0YXRlIGEgbG90IG9mIG15IGFwcHJvYWNoLiBLbm93aW5nIHRoYXQgKk1BQzgwMjExKiAqdXNlcyogKkNGRzgwMjExKiBpcyB0aGUgbWVudGFsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZWlyIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg1NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjMyLjAxMjQ2NTMyNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzODE0Mzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRkc4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cXHRib29sIFxcXCJjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cXHRib29sIFxcXCJlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJzdXBwb3J0IENSREFcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MzIuMTY2Mjg0ODgxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMjgxNzkxOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gQ0ZHODAyMTEgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgcmlkaW5nIG9uIGBDRkc4MDIxMWAgdG9kYXkuIEl0J3MgYSBjcml0aWNhbCBwaWVjZSwgYW5kIGFueSBjaGFuZ2UgSSBtYWtlIG5lZWRzIHRvIGJlIG1ldGljdWxvdXNseSBwbGFubmVkLCBzbyBsZXQncyBzdGFydCB3aXRoIGEgZGVwZW5kZW5jeSBhbmFseXNpcy4gVGltZSB0byB0cmFjZSB0aGUgbGluZWFnZSBhbmQgc2VlIHdoYXQgdGhpcyBiZWFzdCBpcyBjb25uZWN0ZWQgdG8gaW4gdGhlIHN0YWNrLiBXaGF0IG1vZHVsZXMgZGVwZW5kIG9uIHRoaXM/IFdoYXQgYXNwZWN0cyBvZiB0aGUgbmV0d29ya2luZyBzdGFjayBhcmUgZnVuZGFtZW50YWxseSB0aWVkIHRvIHRoaXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUgZG93bnN0cmVhbSBpbXBsaWNhdGlvbnMgYmVmb3JlIEkgZXZlbiBjb25zaWRlciBtYWtpbmcgYSB0d2Vhay4gSXTigJlzIGxpa2Ugc3VyZ2VyeTsgeW91IGRvbid0IHN0YXJ0IGN1dHRpbmcgd2l0aG91dCBrbm93aW5nIHRoZSBwYXRpZW50J3MgZnVsbCBhbmF0b215LiBMZXTigJlzIGlkZW50aWZ5IHRoZSBwb3RlbnRpYWwgcmlwcGxlIGVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTQyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MzUuMTk0NDY3MDA4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNyxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAxNzpcXHRjb25maWcgQ0ZHODAyMTFcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxcbiAgMjA6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgMjE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAyMjpcXHRcXHQjIG1heSBuZWVkIHRvIHVwZGF0ZSB0aGlzIHdoZW4gY2VydGlmaWNhdGVzIGFyZSBjaGFuZ2VkIGFuZCBhcmVcXG4gIDIzOlxcdFxcdCMgdXNpbmcgYSBkaWZmZXJlbnQgYWxnb3JpdGhtLCB0aG91Z2ggcmlnaHQgbm93IHRoZXkgc2hvdWxkbid0XFxuICAyNDpcXHRcXHQjICh0aGlzIGlzIGhlcmUgcmF0aGVyIHRoYW4gYmVsb3cgdG8gYWxsb3cgaXQgdG8gYmUgYSBtb2R1bGUpXFxuICAyNTpcXHRcXHRzZWxlY3QgQ1JZUFRPX1NIQTI1NiBpZiBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcXG4gIDI2OlxcdFxcdGhlbHBcXG4gIDI3OlxcdFxcdCAgY2ZnODAyMTEgaXMgdGhlIExpbnV4IHdpcmVsZXNzIExBTiAoODAyLjExKSBjb25maWd1cmF0aW9uIEFQSS5cXG4gIDI4OlxcdFxcdCAgRW5hYmxlIHRoaXMgaWYgeW91IGhhdmUgYSB3aXJlbGVzcyBkZXZpY2UuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gcmVmZXIgdG8gZG9jdW1lbnRhdGlvbiBvbiB0aGUgd2lyZWxlc3Mgd2lraTpcXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi9kZXZlbG9wZXJzL0RvY3VtZW50YXRpb24vY2ZnODAyMTFcXG4gIDMzOlxcdFxcbiAgMzQ6XFx0XFx0ICBXaGVuIGJ1aWx0IGFzIGEgbW9kdWxlIGl0IHdpbGwgYmUgY2FsbGVkIGNmZzgwMjExLlxcbiAgMzU6XFx0XFxuICAzNjpcXHRpZiBDRkc4MDIxMVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTozNS4xOTQ1NzYwODhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyNzM2NTYxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZGVwZW5kZW5jaWVzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKk15IFdpcmVsZXNzIERyaXZlciBEZXBlbmRlbmN5IENoZWNrbGlzdCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJJ20gdGhpbmtpbmcsIFwiTm8gc3VycHJpc2VzIHRoZXJlLCBgQ0ZHODAyMTFgIGlzIGFic29sdXRlbHkgZnVuZGFtZW50YWwuIFdlIGNhbid0IGRvIGFueXRoaW5nIHdpdGhvdXQgdGhhdCBjb25maWd1cmF0aW9uIGZyYW1ld29yay5cIiBUaGF0J3MgdGhlIGJhc2VsaW5lLCBlc3NlbnRpYWxseS5cblxuVGhlbiwgb2YgY291cnNlLCBjb21lcyBgTUFDODAyMTFgLiBUaGF0J3MgdGhlIG1lZGlhIGFjY2VzcyBjb250cm9sIGxheWVyLCB0aGUgd29ya2hvcnNlLiBJdCBwcm92aWRlcyB0aGUgY29yZSB3aXJlbGVzcyBmdW5jdGlvbmFsaXR5IGFuZCBuZWVkcyB0byBiZSBwcmVzZW50IHRvIGZ1bmN0aW9uLlxuXG5Ob3csIHdlIGdldCBkb3duIHRvIHRoZSBoYXJkd2FyZSBzaWRlLCBteSBtaW5kIGdvZXMgdG8gdGhlIGBSVEw4MTgwYCBhbmQgYFJUTDgxODdgLiBUaGVzZSBhcmUgc3BlY2lmaWNhbGx5IFJlYWx0ZWsgY2hpcHMgd2UgYXJlIG1lbnRpb25pbmcuIEknbSBub3RpbmcgdGhlIHNwZWNpZmljIGNoaXBzIHRvIGNvbnNpZGVyIHRoZSBzcGVjaWZpYyBkcml2ZXIgaW1wbGVtZW50YXRpb25zLlxuXG5BcyBleHBlY3RlZCwgYFVTQmAgYW5kIGBQQ0lgIGFyZSBuZXh0LiBUaGF0IGp1c3QgaGlnaGxpZ2h0cyB0aGUgcGh5c2ljYWwgaW50ZXJmYWNlcyB3ZSdyZSBkZWFsaW5nIHdpdGguIEl0IHdvdWxkIGJlIGhpZ2hseSB1bnVzdWFsIGlmIHRoZSBoYXJkd2FyZSB3YXMgY29ubmVjdGVkIHNvbWUgb3RoZXIgd2F5LlxuXG5GaW5hbGx5LCBgV0xBTmAgaXMgdGhlIG92ZXJhcmNoaW5nLCB3aXJlbGVzcyBsb2NhbCBhcmVhIG5ldHdvcmsgYXNwZWN0LiBUaGF0IGVuY29tcGFzc2VzIGFsbCB0aGUgcGllY2VzIGFib3ZlLiBKdXN0IGEgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgcmlnaHQgdGhpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY5MSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6MzguNzIxOTQ0NDg0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzk0NDI5NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFdMQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZzo2Om1lbnVjb25maWcgV0xBTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctNy1cXHRib29sIFxcXCJXaXJlbGVzcyBMQU5cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjM4Ljg2MTM5NDY2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODU1NTg0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCdzIG15IG93biBpbnRlcm5hbCBkaWFsb2d1ZTpcblxuKipDaGVja2luZyB0aGUgV0xBTiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIGludG8gYW55dGhpbmcgZWxzZSwgbGV0J3MgdGFrZSBhIHF1aWNrIHNhbml0eSBjaGVjay4gVGhlIG1lbnRpb24gb2YgYFdMQU5gIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIHNjYW4gb2YgdGhlIHN5c3RlbSdzIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG92ZXJsb29raW5nIGFueSBvYnZpb3VzIGRlcGVuZGVuY2llcyBvciBwb3RlbnRpYWwgY29uZmxpY3RzLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHN0YW5kYXJkIG5ldHdvcmsgc3RhY2ssIHRoZSBkcml2ZXJzLCBwb3RlbnRpYWwgZmlybXdhcmUgdmVyc2lvbnMsIGFuZCBvZiBjb3Vyc2UgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMuIEl0IGlzIGFsc28gaW1wb3J0YW50IHRvIGNvbnNpZGVyOiBXaGF0IG90aGVyIG1vZHVsZXMgY291bGQgYmUgaW1wYWN0ZWQ/IEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIHJlY2VudCBjaGFuZ2VzIGluIHRoZSBgV0xBTmAgc3BhY2Ugd2hpY2ggY291bGQgZWZmZWN0IHRoaXM/IEknbSBnb2luZyB0byBzdGFydCBieSBnb2luZyB0aHJvdWdoIHRoZSBjb2RlYmFzZSwgdG8gdmVyaWZ5IHRoZSB2YXJpb3VzIGNvbXBvbmVudHMnIGludGVyZGVwZW5kZW5jaWVzLCBjb25maXJtIGFsbCB0aGUgbmVjZXNzYXJ5IGxpYnJhcmllcyBhcmUgaW4gcGxhY2UsIGFuZCBkZXRlcm1pbmUgaWYgZXZlcnl0aGluZyBpcyB1cC10by1kYXRlLiBOZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgYmVmb3JlIG1vdmluZyBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzEwNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjQyLjA0Njk2NjM4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDY6XFx0bWVudWNvbmZpZyBXTEFOXFxuICAgNzpcXHRcXHRib29sIFxcXCJXaXJlbGVzcyBMQU5cXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uICFTMzkwXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uIE5FVFxcbiAgMTA6XFx0XFx0c2VsZWN0IFdJUkVMRVNTXFxuICAxMTpcXHRcXHRkZWZhdWx0IHlcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGFsbCB0aGUgcHJlIDgwMi4xMSBhbmQgODAyLjExIHdpcmVsZXNzXFxuICAxNDpcXHRcXHQgIGRldmljZSBkcml2ZXJzLiBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIGRyaXZlcnMgYW5kIGRvY3VtZW50YXRpb25cXG4gIDE1OlxcdFxcdCAgb24gdGhlbSByZWZlciB0byB0aGUgd2lyZWxlc3Mgd2lraTpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6NDIuMDQ3MDc4MjRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyODYyNDc2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqV2lyZWxlc3MgSW5mcmFzdHJ1Y3R1cmUgQ2hlY2sqKlxuXG5SaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgbmVlZCBmb3IgYSBgV0xBTmAgY29tcG9uZW50LiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQsIGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGUgYFdJUkVMRVNTYCBkZXBlbmRlbmNpZXMuIFRoYXQncyB3aGVyZSB0aGUgcmVhbCBjb21wbGV4aXR5IGxpZXMsIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcnBsYXkgdGhlcmUgd2lsbCBkZXRlcm1pbmUgdGhlIGZlYXNpYmlsaXR5IGFuZCBiZXN0IGFwcHJvYWNoLiBJIG5lZWQgdG8ga25vdyB3aGljaCB0ZWNobm9sb2dpZXMgYXJlIGJlaW5nIGNvbnNpZGVyZWQsIGFuZCBob3cgdGhleSB3aWxsIGludGVyb3BlcmF0ZS4gSSdtIHRoaW5raW5nOiA4MDIuMTFheCwgcGVyaGFwcz8gT3IgZXZlbiBmdXR1cmUtcHJvb2Zpbmcgd2l0aCBhIGxvb2sgYXQgODAyLjExYmU/IFRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgYXJlIGFsc28gdG9wIG9mIG1pbmQg4oCTIFdQQTMsIG9idmlvdXNseSwgYnV0IHdoYXQgYWJvdXQgZmluZS1ncmFpbmVkIGFjY2VzcyBjb250cm9sIGFuZCBzZWdtZW50YXRpb24/IFRoaXMgZWFybHkgc3RhZ2Ugc2V0cyB0aGUgc3RhZ2UgZm9yIHRoZSByZXN0IG9mIHRoZSB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQ5OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6NDQuOTc1NzA2MzcyWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg3NDE3OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFdJUkVMRVNTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3dpcmVsZXNzL0tjb25maWc6Mjpjb25maWcgV0lSRUxFU1NfRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMy1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjQ1LjA4NDQ1MzMyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDI0MjEwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipLY29uZmlnIExvY2F0aW9uIENoZWNrKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoZXJlIGEgc3BlY2lmaWMgS2NvbmZpZyBvcHRpb24gcmVsYXRlZCB0byB3aXJlbGVzcyBuZXR3b3JraW5nIHJlc2lkZXMuIFRoZSBrbmVlLWplcmsgcmVhY3Rpb24gaXMgdG8gdGhpbmssIFwiV2VsbCwgKm9mIGNvdXJzZSogaXQncyBpbiBgbmV0L3dpcmVsZXNzL0tjb25maWdgLlwiIFRoYXQncyB0aGUgbG9naWNhbCBwbGFjZSwgdGhlIG1vc3Qgb2J2aW91cyBkaXJlY3RvcnkuIEJ1dCB3YWl0Li4uIGlzIGl0ICphbHdheXMqIHRoYXQgc3RyYWlnaHRmb3J3YXJkPyBTb21ldGltZXMgdGhlc2UgdGhpbmdzIGFyZSBjcm9zcy1saW5rZWQgb3IgcGxhY2VkIGluIG1vcmUgZ2VuZXJhbCBhcmVhcyBmb3IgYnJvYWRlciBkZXBlbmRlbmNpZXMuIE1heWJlIGl0IHdhcyBnZW5lcmFsaXplZCwgYW5kIHB1dCBpdCBpbiBgbmV0L0tjb25maWdgPyBJdCBjb3VsZCBiZSwgZGVwZW5kaW5nIG9uIGhvdyB0aGF0IGZ1bmN0aW9uYWxpdHkgaXMgYnVpbHQuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0LiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IGFsdGVybmF0aXZlLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3ODQsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTo0Ny45ODY4Nzg1OTJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MjY5NTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBXSVJFTEVTU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz00MjM9Y29uZmlnIEZJQl9SVUxFU1xcbi0tXFxubmV0L0tjb25maWctNDI1LVxcbm5ldC9LY29uZmlnOjQyNjptZW51Y29uZmlnIFdJUkVMRVNTXFxubmV0L0tjb25maWctNDI3LVxcdGJvb2wgXFxcIldpcmVsZXNzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTo0OC4wODQxNTI4MzlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyOTc4OTcwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgV0lSRUxFU1MgRGVwZW5kZW5jaWVzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgYFdJUkVMRVNTYCBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgbGlicmFyaWVzLCBtb2R1bGVzLCBvciBzZXJ2aWNlcyB0aGlzIGNvbXBvbmVudCByZWxpZXMgdXBvbi4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGNoZWNrOyBJJ20gbG9va2luZyBmb3IgYSBkZXRhaWxlZCBkZXBlbmRlbmN5IGdyYXBoLiBJJ2xsIG5lZWQgdG8ga25vdyBub3Qgb25seSB0aGUgZGlyZWN0IGRlcGVuZGVuY2llcywgYnV0IGFsc28gdGhlIHRyYW5zaXRpdmUgb25lcyDigJMgdGhvc2UgZGVwZW5kZW5jaWVzIG9mIGRlcGVuZGVuY2llcy4gV2hhdCB2ZXJzaW9uIHJhbmdlcyBhcmUgd2UgZGVhbGluZyB3aXRoPyBBcmUgdGhleSBwaW5uZWQsIG9yIGZsZXhpYmxlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaG9zZW4gdmVyc2lvbnM/XG5cbk15IGdvYWwgaGVyZSBpcyB0byBpZGVudGlmeSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLCBjb25mbGljdHMsIG9yIGluZWZmaWNpZW5jaWVzLiBJJ20gdGhpbmtpbmcgYWJvdXQga25vd24gQ1ZFcyB3aXRoaW4gdGhlIGRlcGVuZGVuY2llcywgYW5kIHdoZXRoZXIgdGhleeKAmXJlIHByb3Blcmx5IG1pdGlnYXRlZC4gSSdsbCBhbHNvIGJlIGNvbnNpZGVyaW5nIHdoZXRoZXIgdGhlIGRlcGVuZGVuY2llcyBhcmUgd2VsbC1tYWludGFpbmVkLCBhbmQgaWYgdGhleSByZXByZXNlbnQgYSBzb3VyY2Ugb2YgdGVjaG5pY2FsIGRlYnQuIEkgd2FudCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY2llcywgc28gSSBrbm93IHdoZXJlIHRvIGZvY3VzIGFueSBuZWNlc3NhcnkgYXVkaXRzIG9yIHVwZ3JhZGVzLiBJdCdzIHRpbWUgdG8gYnVpbGQgdGhlIG1hcCFcblxuXG4iLCJJbnB1dFRva2VucyI6MTQwNjksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTo1MS4xMTM5NDYwMjVaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQyNixcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQyNjpcXHRtZW51Y29uZmlnIFdJUkVMRVNTXFxuIDQyNzpcXHRcXHRib29sIFxcXCJXaXJlbGVzc1xcXCJcXG4gNDI4OlxcdFxcdGRlcGVuZHMgb24gIVMzOTBcXG4gNDI5OlxcdFxcdGRlZmF1bHQgeVxcbiA0MzA6XFx0XFxuIDQzMTpcXHRpZiBXSVJFTEVTU1xcbiA0MzI6XFx0XFxuIDQzMzpcXHRzb3VyY2UgXFxcIm5ldC93aXJlbGVzcy9LY29uZmlnXFxcIlxcbiA0MzQ6XFx0c291cmNlIFxcXCJuZXQvbWFjODAyMTEvS2NvbmZpZ1xcXCJcXG4gNDM1OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MTo1MS4xMTQxMDUyNjVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3MzE2MzE5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXM6XG5cbioqV2lyZWxlc3MgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIHRoZSBkZWZhdWx0IHNldHVwIHNlZW1zIHRvIGJlIG9wZXJhdGluZyBvbiBhIGBXSVJFTEVTU2Agc2V0dGluZywgc3BlY2lmaWNhbGx5LCBhIGB5YCBkZXNpZ25hdGlvbi4gR29vZC4gTm93LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGludm9sdmVkOiBgV0xBTmAsIGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIHdoaWNoIGFyZSBmb3VuZGF0aW9uYWwgZm9yIHdpcmVsZXNzIG9wZXJhdGlvbi4gQW5kIG9mIGNvdXJzZSwgdGhlcmUgYXJlIHNwZWNpZmljIGRyaXZlcnMgcmVsYXRlZCB0byBoYXJkd2FyZTogYFJUTDgxODBgIGFuZCBgUlRMODE4N2AuIEl0J3MgYSBQQ0kgb3IgVVNCIHN5c3RlbSwgc28gdGhvc2Ugb3B0aW9ucyBhcmUgaW1wb3J0YW50OiBgVVNCYCBhbmQgYFBDSWAuXG5cbkkgbmVlZCB0byBxdWlja2x5IHNjYW4gdG8gc2VlIGlmIHRoZXJlIGlzIHNvbWV0aGluZyBsaWtlIGBSVEw4MThYYC4uLiBvciBhbnl0aGluZyBsaWtlIHRoYXQgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQ1NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTE6NTQuMzg3MjcxMTVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTc3NzI1NCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUTDgxOFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjU0Ljg3OTA1OTkyNFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTg5NDM0NzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBLZXJuZWwgQ29uZmlndXJhdGlvbiBJbmNsdXNpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIHN0dW1ibGVkIHVwb24gYSByZWZlcmVuY2UgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9LY29uZmlnYC4gUmlnaHQsIGl0J3MgaW5jbHVkZWQgZnJvbSBzb21ld2hlcmUgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSdzIHRoaXMgYmVpbmcgYnJvdWdodCBpbnRvIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3M/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY3kgY2hhaW4gdGhhdCBsZWFkcyB0byB0aGlzIHBhcnRpY3VsYXIgS2NvbmZpZyBmaWxlIGJlaW5nIHBhcnNlZC4gVGhpcyBpcyBjcnVjaWFsIGZvciB0cmFjaW5nIHRoZSBpbmNsdXNpb24gY29uZGl0aW9ucywgcGFydGljdWxhcmx5IGlmIEknbSBsb29raW5nIHRvIGRpc2FibGUgb3IgbW9kaWZ5IHRoZSBkcml2ZXIncyBidWlsZCBvcHRpb25zLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgYW5kIG1ha2VmaWxlcyBmb3IgdGhlIGRpcmVjdCBvciBpbmRpcmVjdCBpbmNsdXNpb24gb2YgdGhpcyBzcGVjaWZpYyBmaWxlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGBzb3VyY2VgLCBgaW5jbHVkZWAsIG9yIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMgdGhhdCBjb3VsZCBiZSBwdWxsaW5nIHRoaXMgS2NvbmZpZyBpbnRvIHRoZSBidWlsZC4gVGhlbiBJIGNhbiBkZXRlcm1pbmUgd2hlcmUgdGhpcyBjb25maWd1cmF0aW9uIGZvciB0aGUgUmVhbHRlayBSVEw4MTh4IHdpcmVsZXNzIGRyaXZlciBpcyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc2NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjU5LjA2ODQ5NzE1N1oiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg2MTU1NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODE4eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX1JFQUxURUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnOjE1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnLTE2LXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUxOjU5LjE2NzExNzA1NFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk4MjEzMTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBSZWFsdGVrIERyaXZlciBSZXF1aXJlbWVudCoqXG5cbkFscmlnaHQsIHNvIHRoZSBwcm9qZWN0J3MgYXQgYSBwb2ludCB3aGVyZSBJIG5lZWQgdG8gc2VyaW91c2x5IGNvbnNpZGVyIHRoZSB3aXJlbGVzcyBMQU4gaW1wbGVtZW50YXRpb24uIFRoZSBpbW1lZGlhdGUgdGhvdWdodCBmbGFzaGluZyB0aHJvdWdoIG15IG1pbmQgaXMgXCJSaWdodCwgd2UncmUgZGVmaW5pdGVseSBnb2luZyB0byBiZSBkZWFsaW5nIHdpdGggYSBSZWFsdGVrIGNoaXBzZXQgaGVyZSwgYXJlbid0IHdlP1wiIEkgcXVpY2tseSBpZGVudGlmeSB0aGF0IEknbGwgbmVlZCB0byB3b3JrIHdpdGggdGhlIGBXTEFOX1ZFTkRPUl9SRUFMVEVLYCBkcml2ZXIuIE5vIHN1cnByaXNlcyB0aGVyZSwgdGhleSdyZSBldmVyeXdoZXJlLiBOb3cgaXQncyBhIG1hdHRlciBvZiBmaWd1cmluZyBvdXQgd2hpY2ggc3BlY2lmaWMgcmV2aXNpb24sIGFuZCB3aGF0IGtlcm5lbCB2ZXJzaW9ucyB3ZSBuZWVkIHRvIHN1cHBvcnQuIFRoZSBsZXZlbCBvZiBzdXBwb3J0IHZhcmllcyB3aWxkbHksIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3Qgc2lsaWNvbiByZXZpc2lvbi4gVGhpcyBpcyBnb2luZyB0byBpbmZsdWVuY2UgdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgc29sdXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTU3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDA6NTI6MDMuMTY1MzMyNDhaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzc3OTg3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgV0xBTl9WRU5ET1JfUkVBTFRFS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX1JFQUxURUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL0tjb25maWctMy1cXHRib29sIFxcXCJSZWFsdGVrIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUyOjAzLjI4MzExNzkzMloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODk3OTk3NDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIFJlYWx0ZWsgV0xBTiBEZXBlbmRlbmN5IExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYFdMQU5fVkVORE9SX1JFQUxURUtgLiBUaGlzIGxpa2VseSBtZWFucyBJJ20gbG9va2luZyBhdCBhIGRyaXZlciwgYSBmaXJtd2FyZSwgb3Igc29tZSBvdGhlciBtb2R1bGUgc3BlY2lmaWNhbGx5IGJ1aWx0IGZvciBSZWFsdGVrJ3MgV0xBTiBoYXJkd2FyZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbWFwIG91dCB0aGUgZW50aXJlIGRlcGVuZGVuY3kgY2hhaW4g4oCTIHdobyByZWxpZXMgb24gdGhpcywgYW5kIHdoYXQgZG9lcyBpdCAqaXRzZWxmKiBkZXBlbmQgb24/IElzIGl0IHRpZWQgdG8gYSBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbiwgYSBwYXJ0aWN1bGFyIHNldCBvZiBsaWJyYXJpZXMsIG9yIGV2ZW4gb3RoZXIgdmVuZG9yLXNwZWNpZmljIGNvbXBvbmVudHM/IEFyZSB0aGVyZSBhbnkga25vd24gY29tcGF0aWJpbGl0eSBpc3N1ZXMgb3IgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mIGltbWVkaWF0ZWx5PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgaW1wYWN0IGlmIHRoZXJlIGFyZSBjaGFuZ2VzIG9yIHBvdGVudGlhbCBwcm9ibGVtcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGF3YXJlIG9mIGV2ZXJ5IHBvc3NpYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQ2NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUyOjA2LjE4MTExODk3NloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX1JFQUxURUtcXG4gICAzOlxcdFxcdGJvb2wgXFxcIlJlYWx0ZWsgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAgOTpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMDpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDExOlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MjowNi4xODEyMzczNTZaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM5MjI2NzIzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVhbHRlayBXTEFOIERyaXZlciBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gYFdMQU5fVkVORE9SX1JFQUxURUtgIGlzIHNldCBhcyB0aGUgZGVmYXVsdCwgd2hpY2ggbWFrZXMgc2Vuc2UuIExldCdzIGdldCBhIGhhbmRsZSBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBXTEFOYCwgYFdMQU5fVkVORE9SX1JFQUxURUtgLCBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBgUlRMODE4MGAsIGBSVEw4MTg3YCwgYFVTQmAsIGFuZCBgUENJYC4gQSBxdWljayBtZW50YWwgY2hlY2suLi4gc2VlbXMgbGlrZSBgUlRMODE4MGAgYW5kIGBSVEw4MTg3YCBhcmUgdGhlIGNvcmUgZHJpdmVycyB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZS5cblxuQWxyaWdodCwgbm93IHRvIGNvbmZpcm0gdGhlIHByb2JlIGZ1bmN0aW9ucyBhcmUgaW5kZWVkIHdoYXQgSSB0aGluayB0aGV5IGFyZS4gWWVzLCBgcnRsODE4MF9wcm9iZWAgYW5kIGBydGw4MTg3X3Byb2JlYCDigJMgdGhvc2UgYXJlIHRoZSBQQ0kgYW5kIFVTQiBkcml2ZXIgcHJvYmUgZnVuY3Rpb25zIHJlc3BlY3RpdmVseS4gQW5kIHRoZXkncmUgbm90IGlubGluZWQsIHdoaWNoIGlzIGV4cGVjdGVkIHNpbmNlIHRoZXkncmUgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHdpdGhpbiB0aGUgZHJpdmVyIHN0cnVjdHVyZXMuXG5cbk9rYXksIGxldCdzIHNlZSB3aGljaCBmaWxlcyB3ZXJlIGFjdHVhbGx5IHRvdWNoZWQuIExvb2tzIGxpa2Ugb25seSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmNgIHdlcmUgbW9kaWZpZWQuXG5cbkFoLCB0aGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlLCBgc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207YCwgaW5pdGlhbGl6aW5nIGl0IHRvIGB7fWAuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlOyB3ZSdyZSBwcmV2ZW50aW5nIHJlYWRzIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIGdvb2QuIEltcG9ydGFudCBmb3IgZnV6emluZyBiZWNhdXNlIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGFyZSBwcmltZSB0YXJnZXRzIGZvciBidWdzLlxuXG5UaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBmb2N1cyBvbiBgcnRsODE4MF9wcm9iZWAgYW5kIGBydGw4MTg3X3Byb2JlYCBmb3Igbm93LCBhbmQgdGhlc2UgYXJlIHRoZSBjb25maWdzIHRvIGVuYWJsZTogYFdMQU5gLCBgV0xBTl9WRU5ET1JfUkVBTFRFS2AsIGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGBSVEw4MTgwYCwgYFJUTDgxODdgLCBgVVNCYCwgYW5kIGBQQ0lgLlxuXG5KdXN0IHF1aWNrbHksIGxldCBtZSBjb25maXJtIGlmIGBydGw4MTgwX2VlcHJvbV9yZWFkYCBpcyBjYWxsZWQgZWxzZXdoZXJlIHRvIHNlZSBpZiB3ZSd2ZSBnb3QgYW55IHBvdGVudGlhbCBzZWNvbmRhcnkgYXR0YWNrIHN1cmZhY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTgzOCwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUyOjEyLjU3MzUwNzY2MVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMTcxNzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bDgxODBfZWVwcm9tX3JlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM9MTYzND1zdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJvbV9yZWdpc3Rlcl93cml0ZShzdHJ1Y3QgZWVwcm9tXzkzY3g2ICplZXByb20pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xNjUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jOjE2NTM6c3RhdGljIHZvaWQgcnRsODE4MF9lZXByb21fcmVhZChzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jLTE2NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM9MTczMD1zdGF0aWMgaW50IHJ0bDgxODBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xODg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jOjE4ODk6XFx0cnRsODE4MF9lZXByb21fcmVhZChwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xODkwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMDo1MjoxMi42ODM2ODk4OTlaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5MDg2MTY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGaW5hbCBDaGVja3MgQ29tcGxldGUqKlxuXG5Pa2F5LCBzbyBpdCBsb29rcyBsaWtlIHRoZSBpc3N1ZSBpcyBpc29sYXRlZCB0byBgcnRsODE4MF9wcm9iZWAuIFRoYXQgd2FzIHRoZSBpbml0aWFsIGh1bmNoLCBhbmQgdGhlIGZvY3VzIHNlZW1zIGNvcnJlY3QuIE5vdywgbGV0J3MganVzdCBtYWtlIGFic29sdXRlbHkgc3VyZS4gVGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBgZWVwcm9tYCBoYXBwZW5zIGRpcmVjdGx5IGluIGBydGw4MTg3X3Byb2JlYCBhcyB3ZWxsLCBzbyB0aGF0J3MgZ29vZCBjb25maXJtYXRpb24uIEdpdmVuIHRoYXQsIHRoZSBjcml0aWNhbCBzeW1ib2xzIGFyZSB3aGVyZSB0aGV5IG5lZWQgdG8gYmUuIEFscmlnaHQsIHRpbWUgdG8gZG8gYSBmaW5hbCBzd2VlcC4gSSBzZWUgdGhhdCB0aGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGluaXRpYWxpemVzIHRoZSBgZWVwcm9tYCB0byB6ZXJvLCB3aGljaCBkZWZpbml0ZWx5IGNvbnN0aXR1dGVzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEZ1cnRoZXIsIHRoaXMgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGJvdGggVVNCIGFuZCBQQ0kgcHJvYmluZywgd2hpY2ggc2VlbXMgYXBwcm9wcmlhdGUgZm9yIGhvdyB0aGUgZHJpdmVyIHdvcmtzLiBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzZXQgdXAgY29ycmVjdGx5LiBHb29kLiBJJ20gc2F0aXNmaWVkLiBJJ2xsIGluaXRpYXRlIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTUyLCJPdXRwdXRUb2tlbnMiOjIwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAwOjUyOjE3LjI3NDU1NDgyNFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMTk3NTA5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfUkVBTFRFS1wiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJSVEw4MTgwXCIsXG4gICAgXCJSVEw4MTg3XCIsXG4gICAgXCJVU0JcIixcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxODBfcHJvYmVcIixcbiAgICBcInJ0bDgxODdfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlIGJ5IHplcm8taW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbWAgaW4gdGhlIHByb2JlIHBhdGhzIG9mIHRoZSBydGw4MTgwIChQQ0kpIGFuZCBydGw4MTg3IChVU0IpIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBVU0IgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15X2hjZCwgYW5kIHRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfUkVBTFRFS1wiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJSVEw4MTgwXCIsXG4gICAgXCJSVEw4MTg3XCIsXG4gICAgXCJVU0JcIixcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bDgxODBfcHJvYmVcIixcbiAgICBcInJ0bDgxODdfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlIGJ5IHplcm8taW5pdGlhbGl6aW5nIGBzdHJ1Y3QgZWVwcm9tXzkzY3g2IGVlcHJvbWAgaW4gdGhlIHByb2JlIHBhdGhzIG9mIHRoZSBydGw4MTgwIChQQ0kpIGFuZCBydGw4MTg3IChVU0IpIGRyaXZlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBVU0IgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGR1bW15X2hjZCwgYW5kIHRoZSBQQ0kgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nIGZyYW1ld29ya3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6c4dh[1] Phase: Succeeded StartedAt: 2026-07-26 00:52:28 +0000 UTC FinishedAt: 2026-07-26 00:52:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 00:52:28 +0000 UTC FinishedAt: 2026-07-26 00:52:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2] Phase: Succeeded StartedAt: 2026-07-26 00:52:28 +0000 UTC FinishedAt: 2026-07-26 02:58:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-26 00:52:28 +0000 UTC FinishedAt: 2026-07-26 02:58:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-26 00:52:28 +0000 UTC FinishedAt: 2026-07-26 00:52:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-26 00:52:28 +0000 UTC FinishedAt: 2026-07-26 00:52:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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-workflow6c4dh/series-workflow6c4dh-convert-artifact-1054932891/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-26 00:52:51 +0000 UTC FinishedAt: 2026-07-26 01:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-26 00:52:51 +0000 UTC FinishedAt: 2026-07-26 01:29:08 +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:*3b98130a-c18b-47db-bca2-dcf44a077750,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-workflow6c4dh/series-workflow6c4dh-convert-artifact-1054932891/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": "935a9f00-c399-417c-890d-8e874a639b8c", "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-workflow6c4dh/series-workflow6c4dh-build-action-1343654873/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-26 00:52:51 +0000 UTC FinishedAt: 2026-07-26 01:28:31 +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:*3b98130a-c18b-47db-bca2-dcf44a077750,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-workflow6c4dh/series-workflow6c4dh-convert-artifact-1054932891/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": "935a9f00-c399-417c-890d-8e874a639b8c", "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-workflow6c4dh/series-workflow6c4dh-build-action-1343654873/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-26 01:29:08 +0000 UTC FinishedAt: 2026-07-26 01:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-26 01:29:08 +0000 UTC FinishedAt: 2026-07-26 01:29:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-26 01:29:08 +0000 UTC FinishedAt: 2026-07-26 01:29:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-26 01:29:08 +0000 UTC FinishedAt: 2026-07-26 01:29:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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-workflow6c4dh/series-workflow6c4dh-convert-artifact-75845874/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-26 01:29:47 +0000 UTC FinishedAt: 2026-07-26 01:31:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-26 01:29:47 +0000 UTC FinishedAt: 2026-07-26 01:31:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*935a9f00-c399-417c-890d-8e874a639b8c,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-workflow6c4dh/series-workflow6c4dh-build-action-1343654873/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-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-26 01:31:49 +0000 UTC FinishedAt: 2026-07-26 01:31:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-26 01:31:49 +0000 UTC FinishedAt: 2026-07-26 01:31:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-26 01:31:49 +0000 UTC FinishedAt: 2026-07-26 02:06:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-26 01:31:49 +0000 UTC FinishedAt: 2026-07-26 02:06:06 +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:*3b98130a-c18b-47db-bca2-dcf44a077750,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-workflow6c4dh/series-workflow6c4dh-convert-artifact-75845874/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": "3232f0fa-5df1-4123-9fdb-e067f984b848", "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-workflow6c4dh/series-workflow6c4dh-build-action-741560454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-26 01:31:49 +0000 UTC FinishedAt: 2026-07-26 02:05:29 +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:*3b98130a-c18b-47db-bca2-dcf44a077750,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-workflow6c4dh/series-workflow6c4dh-convert-artifact-75845874/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": "3232f0fa-5df1-4123-9fdb-e067f984b848", "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-workflow6c4dh/series-workflow6c4dh-build-action-741560454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-26 02:06:06 +0000 UTC FinishedAt: 2026-07-26 02:06:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-26 02:06:06 +0000 UTC FinishedAt: 2026-07-26 02:06:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-26 02:06:06 +0000 UTC FinishedAt: 2026-07-26 02:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-26 02:06:06 +0000 UTC FinishedAt: 2026-07-26 02:07:59 +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:*3232f0fa-5df1-4123-9fdb-e067f984b848,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-workflow6c4dh/series-workflow6c4dh-build-action-741560454/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-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-26 02:08:09 +0000 UTC FinishedAt: 2026-07-26 02:58:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-26 02:08:09 +0000 UTC FinishedAt: 2026-07-26 02:58:51 +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":["rtl8180_probe","rtl8187_probe"],"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:*935a9f00-c399-417c-890d-8e874a639b8c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3232f0fa-5df1-4123-9fdb-e067f984b848,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-workflow6c4dh/series-workflow6c4dh-build-action-1343654873/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-workflow6c4dh/series-workflow6c4dh-build-action-741560454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-26 02:08:09 +0000 UTC FinishedAt: 2026-07-26 02:08:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-26 02:08:09 +0000 UTC FinishedAt: 2026-07-26 02:08:21 +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":["rtl8180_probe","rtl8187_probe"],"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-workflow6c4dh/series-workflow6c4dh-convert-artifact-3110719303/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-26 02:08:09 +0000 UTC FinishedAt: 2026-07-26 02:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-26 02:08:09 +0000 UTC FinishedAt: 2026-07-26 02:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-26 02:08:09 +0000 UTC FinishedAt: 2026-07-26 02:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-26 02:08:29 +0000 UTC FinishedAt: 2026-07-26 02:58:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c4dh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["rtl8180_probe","rtl8187_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_REALTEK","CFG80211","MAC80211","RTL8180","RTL8187","USB","PCI"],"series_id":"58040f84-9dde-4c57-a0e6-0f13d5caedc1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-26 02:08:29 +0000 UTC FinishedAt: 2026-07-26 02:58:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*935a9f00-c399-417c-890d-8e874a639b8c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3232f0fa-5df1-4123-9fdb-e067f984b848,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-workflow6c4dh/series-workflow6c4dh-build-action-1343654873/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-workflow6c4dh/series-workflow6c4dh-build-action-741560454/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-workflow6c4dh/series-workflow6c4dh-convert-artifact-3110719303/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,}