Name: series-workflows2hf4 Phase: Succeeded StartedAt: 2026-07-18 00:42:50 +0000 UTC FinishedAt: 2026-07-18 02:40:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[0] Phase: Succeeded StartedAt: 2026-07-18 00:42:50 +0000 UTC FinishedAt: 2026-07-18 01:10:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[0].run-triage Phase: Succeeded StartedAt: 2026-07-18 00:42:50 +0000 UTC FinishedAt: 2026-07-18 01:10:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "94515f3a7d4256a5062176b7d6ed0471938cd51a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RT2X00", "RT2800PCI", "RT2800USB", "RT2400PCI", "RT2500PCI", "RT61PCI", "RT2500USB", "RT73USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "94515f3a7d4256a5062176b7d6ed0471938cd51a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RT2X00", "RT2800PCI", "RT2800USB", "RT2400PCI", "RT2500PCI", "RT61PCI", "RT2500USB", "RT73USB" ], "series_id": "d9ac9463-092e-498e-9af1-7bfbcffcb8e1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rt2x00pci_probe", "rt2x00pci_remove", "rt2x00usb_probe", "rt2x00usb_disconnect" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUMlgwMCYjMzQ7LAogICAgJiMzNDtSVDI4MDBQQ0kmIzM0OywKICAgICYjMzQ7UlQyODAwVVNCJiMzNDssCiAgICAmIzM0O1JUMjQwMFBDSSYjMzQ7LAogICAgJiMzNDtSVDI1MDBQQ0kmIzM0OywKICAgICYjMzQ7UlQ2MVBDSSYjMzQ7LAogICAgJiMzNDtSVDI1MDBVU0ImIzM0OywKICAgICYjMzQ7UlQ3M1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0MngwMHBjaV9wcm9iZSYjMzQ7LAogICAgJiMzNDtydDJ4MDBwY2lfcmVtb3ZlJiMzNDssCiAgICAmIzM0O3J0MngwMHVzYl9wcm9iZSYjMzQ7LAogICAgJiMzNDtydDJ4MDB1c2JfZGlzY29ubmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgUENJIGFuZCBVU0IgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiB0aGUgcnQyeDAwIHdpcmVsZXNzIGRyaXZlciB0byB1c2UgZGV2cmVzIChkZXZtXyogYW5kIHBjaW1fKiBmdW5jdGlvbnMpLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgZGlzY29ubmVjdC9yZW1vdmUgZnVuY3Rpb25zIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IHJlc291cmNlIG1hbmFnZW1lbnQgZG9lcyBub3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBpbml0aWFsaXphdGlvbiBmYWlsdXJlcyBvciBkZXZpY2UgcmVtb3ZhbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMTowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMxYmI5ODEzMDZjMTIwNjc0NDgyNDE4NGExNjFkODhkNzIxNmE5ODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxOCAwMTowOToyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHBjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBwY2kuY1xuaW5kZXggY2FiZWVmMGRkZTQ1ZDUuLmQ0NjM1YjUzMTQ4MThlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBwY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBwY2kuY1xuQEAgLTE5LDg0ICYjNDM7MTksNTAgQEBcbiAjaW5jbHVkZSBcJiMzNDtydDJ4MDAuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3J0MngwMHBjaS5oXCYjMzQ7XG4gXG4tLypcbi0gKiBQQ0kgZHJpdmVyIGhhbmRsZXJzLlxuLSAqL1xuLXN0YXRpYyB2b2lkIHJ0MngwMHBjaV9mcmVlX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLXtcbi1cdGtmcmVlKHJ0MngwMGRldi1cdTAwM2VyZik7XG4tXHRydDJ4MDBkZXYtXHUwMDNlcmYgPSBOVUxMO1xuLVxuLVx0a2ZyZWUocnQyeDAwZGV2LVx1MDAzZWVlcHJvbSk7XG4tXHRydDJ4MDBkZXYtXHUwMDNlZWVwcm9tID0gTlVMTDtcbi1cbi1cdGlmIChydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UpIHtcbi1cdFx0aW91bm1hcChydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UpO1xuLVx0XHRydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UgPSBOVUxMO1xuLVx0fVxuLX1cbi1cbi1zdGF0aWMgaW50IHJ0MngwMHBjaV9hbGxvY19yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbi17XG4tXHRzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiA9IHRvX3BjaV9kZXYocnQyeDAwZGV2LVx1MDAzZWRldik7XG4tXG4tXHRydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UgPSBwY2lfaW9yZW1hcF9iYXIocGNpX2RldiwgMCk7XG4tXHRpZiAoIXJ0MngwMGRldi1cdTAwM2Vjc3IuYmFzZSlcbi1cdFx0Z290byBleGl0O1xuLVxuLVx0cnQyeDAwZGV2LVx1MDAzZWVlcHJvbSA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIXJ0MngwMGRldi1cdTAwM2VlZXByb20pXG4tXHRcdGdvdG8gZXhpdDtcbi1cbi1cdHJ0MngwMGRldi1cdTAwM2VyZiA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghcnQyeDAwZGV2LVx1MDAzZXJmKVxuLVx0XHRnb3RvIGV4aXQ7XG4tXG4tXHRyZXR1cm4gMDtcbi1cbi1leGl0OlxuLVx0cnQyeDAwX3Byb2JlX2VycihcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgcmVnaXN0ZXJzXFxuXCYjMzQ7KTtcbi1cbi1cdHJ0MngwMHBjaV9mcmVlX3JlZyhydDJ4MDBkZXYpO1xuLVxuLVx0cmV0dXJuIC1FTk9NRU07XG4tfVxuLVxuIGludCBydDJ4MDBwY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpXG4ge1xuLVx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XG4gXHRzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2O1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuJiM0MztcdHZvaWQgX19pb21lbSAqYmFzZTtcbiYjNDM7XHRfX2xlMTYgKmVlcHJvbTtcbiBcdGludCByZXR2YWw7XG4gXHR1MTYgY2hpcDtcbiYjNDM7XHR1MzIgKnJmO1xuIFxuLVx0cmV0dmFsID0gcGNpX2VuYWJsZV9kZXZpY2UocGNpX2Rldik7XG4mIzQzO1x0cmV0dmFsID0gcGNpbV9lbmFibGVfZGV2aWNlKHBjaV9kZXYpO1xuIFx0aWYgKHJldHZhbCkge1xuIFx0XHRydDJ4MDBfcHJvYmVfZXJyKFwmIzM0O0VuYWJsZSBkZXZpY2UgZmFpbGVkXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIHJldHZhbDtcbiBcdH1cbiBcbi1cdHJldHZhbCA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpX2RldiwgcGNpX25hbWUocGNpX2RldikpO1xuLVx0aWYgKHJldHZhbCkge1xuLVx0XHRydDJ4MDBfcHJvYmVfZXJyKFwmIzM0O1BDSSByZXF1ZXN0IHJlZ2lvbnMgZmFpbGVkXFxuXCYjMzQ7KTtcbi1cdFx0Z290byBleGl0X2Rpc2FibGVfZGV2aWNlO1xuJiM0MztcdGJhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2lfZGV2LCAwLCBwY2lfbmFtZShwY2lfZGV2KSk7XG4mIzQzO1x0aWYgKElTX0VSUihiYXNlKSkge1xuJiM0MztcdFx0cnQyeDAwX3Byb2JlX2VycihcJiMzNDtQQ0kgaW9tYXAgcmVnaW9uIGZhaWxlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihiYXNlKTtcbiBcdH1cbiBcbiBcdHBjaV9zZXRfbWFzdGVyKHBjaV9kZXYpO1xuIFxuLVx0aWYgKHBjaV9zZXRfbXdpKHBjaV9kZXYpKVxuJiM0MztcdGlmIChwY2ltX3NldF9td2kocGNpX2RldikpXG4gXHRcdHJ0MngwMF9wcm9iZV9lcnIoXCYjMzQ7TVdJIG5vdCBhdmFpbGFibGVcXG5cJiMzNDspO1xuIFxuIFx0aWYgKGRtYV9zZXRfbWFzayhcdTAwMjZwY2lfZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSkpIHtcbiBcdFx0cnQyeDAwX3Byb2JlX2VycihcJiMzNDtQQ0kgRE1BIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuLVx0XHRyZXR2YWwgPSAtRUlPO1xuLVx0XHRnb3RvIGV4aXRfcmVsZWFzZV9yZWdpb25zO1xuJiM0MztcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXG4mIzQzO1x0ZWVwcm9tID0gZGV2bV9remFsbG9jKFx1MDAyNnBjaV9kZXYtXHUwMDNlZGV2LCBvcHMtXHUwMDNlZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpO1xuJiM0MztcdGlmICghZWVwcm9tKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdHJmID0gZGV2bV9remFsbG9jKFx1MDAyNnBjaV9kZXYtXHUwMDNlZGV2LCBvcHMtXHUwMDNlcmZfc2l6ZSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFyZilcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiBcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHNpemVvZihzdHJ1Y3QgcnQyeDAwX2RldiksIG9wcy1cdTAwM2Vodyk7XG4gXHRpZiAoIWh3KSB7XG4gXHRcdHJ0MngwMF9wcm9iZV9lcnIoXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIGhhcmR3YXJlXFxuXCYjMzQ7KTtcbi1cdFx0cmV0dmFsID0gLUVOT01FTTtcbi1cdFx0Z290byBleGl0X3JlbGVhc2VfcmVnaW9ucztcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFxuIFx0cGNpX3NldF9kcnZkYXRhKHBjaV9kZXYsIGh3KTtcbkBAIC0xMDUsMTggJiM0Mzs3MSwxNyBAQCBpbnQgcnQyeDAwcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCBjb25zdCBzdHJ1Y3QgcnQyeDAwX29wcyAqb3BzKVxuIFx0cnQyeDAwZGV2LVx1MDAzZWRldiA9IFx1MDAyNnBjaV9kZXYtXHUwMDNlZGV2O1xuIFx0cnQyeDAwZGV2LVx1MDAzZW9wcyA9IG9wcztcbiBcdHJ0MngwMGRldi1cdTAwM2VodyA9IGh3O1xuJiM0MztcdHJ0MngwMGRldi1cdTAwM2Vjc3IuYmFzZSA9IGJhc2U7XG4gXHRydDJ4MDBkZXYtXHUwMDNlaXJxID0gcGNpX2Rldi1cdTAwM2VpcnE7XG4gXHRydDJ4MDBkZXYtXHUwMDNlbmFtZSA9IG9wcy1cdTAwM2VuYW1lO1xuJiM0MztcdHJ0MngwMGRldi1cdTAwM2VlZXByb20gPSBlZXByb207XG4mIzQzO1x0cnQyeDAwZGV2LVx1MDAzZXJmID0gcmY7XG4gXG4gXHRpZiAocGNpX2lzX3BjaWUocGNpX2RldikpXG4gXHRcdHJ0MngwMF9zZXRfY2hpcF9pbnRmKHJ0MngwMGRldiwgUlQyWDAwX0NISVBfSU5URl9QQ0lFKTtcbiBcdGVsc2VcbiBcdFx0cnQyeDAwX3NldF9jaGlwX2ludGYocnQyeDAwZGV2LCBSVDJYMDBfQ0hJUF9JTlRGX1BDSSk7XG4gXG4tXHRyZXR2YWwgPSBydDJ4MDBwY2lfYWxsb2NfcmVnKHJ0MngwMGRldik7XG4tXHRpZiAocmV0dmFsKVxuLVx0XHRnb3RvIGV4aXRfZnJlZV9kZXZpY2U7XG4tXG4gXHQvKlxuIFx0ICogQmVjYXVzZSBydDMyOTAgY2hpcCB1c2UgZGlmZmVyZW50IGVmdXNlIG9mZnNldCB0byByZWFkIGVmdXNlIGRhdGEuXG4gXHQgKiBTbyBiZWZvcmUgcmVhZCBlZnVzZSBpdCBuZWVkIHRvIGluZGljYXRlIGl0IGlzIHRoZVxuQEAgLTEyNywyMyAmIzQzOzkyLDEzIEBAIGludCBydDJ4MDBwY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpXG4gXG4gXHRyZXR2YWwgPSBydDJ4MDBsaWJfcHJvYmVfZGV2KHJ0MngwMGRldik7XG4gXHRpZiAocmV0dmFsKVxuLVx0XHRnb3RvIGV4aXRfZnJlZV9yZWc7XG4mIzQzO1x0XHRnb3RvIGV4aXRfZnJlZV9kZXZpY2U7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1leGl0X2ZyZWVfcmVnOlxuLVx0cnQyeDAwcGNpX2ZyZWVfcmVnKHJ0MngwMGRldik7XG4tXG4gZXhpdF9mcmVlX2RldmljZTpcbiBcdGllZWU4MDIxMV9mcmVlX2h3KGh3KTtcbiBcbi1leGl0X3JlbGVhc2VfcmVnaW9uczpcbi1cdHBjaV9jbGVhcl9td2kocGNpX2Rldik7XG4tXHRwY2lfcmVsZWFzZV9yZWdpb25zKHBjaV9kZXYpO1xuLVxuLWV4aXRfZGlzYWJsZV9kZXZpY2U6XG4tXHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XG4tXG4gXHRyZXR1cm4gcmV0dmFsO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChydDJ4MDBwY2lfcHJvYmUpO1xuQEAgLTE1MywxOSAmIzQzOzEwOCw4IEBAIHZvaWQgcnQyeDAwcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldilcbiBcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9kZXYpO1xuIFx0c3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldiA9IGh3LVx1MDAzZXByaXY7XG4gXG4tXHQvKlxuLVx0ICogRnJlZSBhbGwgYWxsb2NhdGVkIGRhdGEuXG4tXHQgKi9cbiBcdHJ0MngwMGxpYl9yZW1vdmVfZGV2KHJ0MngwMGRldik7XG4tXHRydDJ4MDBwY2lfZnJlZV9yZWcocnQyeDAwZGV2KTtcbiBcdGllZWU4MDIxMV9mcmVlX2h3KGh3KTtcbi1cbi1cdC8qXG4tXHQgKiBGcmVlIHRoZSBQQ0kgZGV2aWNlIGRhdGEuXG4tXHQgKi9cbi1cdHBjaV9jbGVhcl9td2kocGNpX2Rldik7XG4tXHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XG4tXHRwY2lfcmVsZWFzZV9yZWdpb25zKHBjaV9kZXYpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChydDJ4MDBwY2lfcmVtb3ZlKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHVzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuY1xuaW5kZXggNDdlNDI3ZWE4NjIyMWEuLjkzODMyMDQ3ODcyODY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuY1xuQEAgLTc1NSw1NSAmIzQzOzc1NSwzMSBAQCB2b2lkIHJ0MngwMHVzYl91bmluaXRpYWxpemUoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwdXNiX3VuaW5pdGlhbGl6ZSk7XG4gXG4tLypcbi0gKiBVU0IgZHJpdmVyIGhhbmRsZXJzLlxuLSAqL1xuLXN0YXRpYyB2b2lkIHJ0MngwMHVzYl9mcmVlX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLXtcbi1cdGtmcmVlKHJ0MngwMGRldi1cdTAwM2VyZik7XG4tXHRydDJ4MDBkZXYtXHUwMDNlcmYgPSBOVUxMO1xuLVxuLVx0a2ZyZWUocnQyeDAwZGV2LVx1MDAzZWVlcHJvbSk7XG4tXHRydDJ4MDBkZXYtXHUwMDNlZWVwcm9tID0gTlVMTDtcbi1cbi1cdGtmcmVlKHJ0MngwMGRldi1cdTAwM2Vjc3IuY2FjaGUpO1xuLVx0cnQyeDAwZGV2LVx1MDAzZWNzci5jYWNoZSA9IE5VTEw7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnQyeDAwdXNiX2FsbG9jX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLXtcbi1cdHJ0MngwMGRldi1cdTAwM2Vjc3IuY2FjaGUgPSBremFsbG9jKENTUl9DQUNIRV9TSVpFLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghcnQyeDAwZGV2LVx1MDAzZWNzci5jYWNoZSlcbi1cdFx0Z290byBleGl0O1xuLVxuLVx0cnQyeDAwZGV2LVx1MDAzZWVlcHJvbSA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIXJ0MngwMGRldi1cdTAwM2VlZXByb20pXG4tXHRcdGdvdG8gZXhpdDtcbi1cbi1cdHJ0MngwMGRldi1cdTAwM2VyZiA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghcnQyeDAwZGV2LVx1MDAzZXJmKVxuLVx0XHRnb3RvIGV4aXQ7XG4tXG4tXHRyZXR1cm4gMDtcbi1cbi1leGl0OlxuLVx0cnQyeDAwX3Byb2JlX2VycihcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgcmVnaXN0ZXJzXFxuXCYjMzQ7KTtcbi1cbi1cdHJ0MngwMHVzYl9mcmVlX3JlZyhydDJ4MDBkZXYpO1xuLVxuLVx0cmV0dXJuIC1FTk9NRU07XG4tfVxuLVxuIGludCBydDJ4MDB1c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuIFx0XHQgICAgY29uc3Qgc3RydWN0IHJ0MngwMF9vcHMgKm9wcylcbiB7XG4gXHRzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldiA9IGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpO1xuLVx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XG4gXHRzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2O1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuJiM0MztcdF9fbGUxNiAqZWVwcm9tO1xuJiM0MztcdHZvaWQgKmNhY2hlO1xuIFx0aW50IHJldHZhbDtcbiYjNDM7XHR1MzIqIHJmO1xuIFxuIFx0dXNiX3Jlc2V0X2RldmljZSh1c2JfZGV2KTtcbiBcbiYjNDM7XHRjYWNoZSA9IGRldm1fa3phbGxvYyhcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIENTUl9DQUNIRV9TSVpFLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIWNhY2hlKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdGVlcHJvbSA9IGRldm1fa3phbGxvYyhcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIG9wcy1cdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFlZXByb20pXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0cmYgPSBkZXZtX2t6YWxsb2MoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBvcHMtXHUwMDNlcmZfc2l6ZSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFyZilcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiBcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHN0cnVjdF9zaXplKHJ0MngwMGRldiwgYW5jaG9yLCAxKSwgb3BzLVx1MDAzZWh3KTtcbiBcdGlmICghaHcpIHtcbiBcdFx0cnQyeDAwX3Byb2JlX2VycihcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgaGFyZHdhcmVcXG5cJiMzNDspO1xuQEAgLTgxNiwxNiAmIzQzOzc5MiwxNSBAQCBpbnQgcnQyeDAwdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbiBcdHJ0MngwMGRldi1cdTAwM2VkZXYgPSBcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXY7XG4gXHRydDJ4MDBkZXYtXHUwMDNlb3BzID0gb3BzO1xuIFx0cnQyeDAwZGV2LVx1MDAzZWh3ID0gaHc7XG4mIzQzO1x0cnQyeDAwZGV2LVx1MDAzZWNzci5jYWNoZSA9IGNhY2hlO1xuJiM0MztcdHJ0MngwMGRldi1cdTAwM2VlZXByb20gPSBlZXByb207XG4mIzQzO1x0cnQyeDAwZGV2LVx1MDAzZXJmID0gcmY7XG4gXG4gXHRydDJ4MDBfc2V0X2NoaXBfaW50ZihydDJ4MDBkZXYsIFJUMlgwMF9DSElQX0lOVEZfVVNCKTtcbiBcbiBcdElOSVRfV09SSyhcdTAwMjZydDJ4MDBkZXYtXHUwMDNlcnhkb25lX3dvcmssIHJ0MngwMHVzYl93b3JrX3J4ZG9uZSk7XG4gXHRJTklUX1dPUksoXHUwMDI2cnQyeDAwZGV2LVx1MDAzZXR4ZG9uZV93b3JrLCBydDJ4MDB1c2Jfd29ya190eGRvbmUpO1xuIFxuLVx0cmV0dmFsID0gcnQyeDAwdXNiX2FsbG9jX3JlZyhydDJ4MDBkZXYpO1xuLVx0aWYgKHJldHZhbClcbi1cdFx0Z290byBleGl0X2ZyZWVfZGV2aWNlO1xuLVxuIFx0aW5pdF91c2JfYW5jaG9yKHJ0MngwMGRldi1cdTAwM2VhbmNob3IpO1xuIFxuIFx0cmV0dmFsID0gcnQyeDAwbGliX3Byb2JlX2RldihydDJ4MDBkZXYpO1xuQEAgLTgzNiw5ICYjNDM7ODExLDYgQEAgaW50IHJ0MngwMHVzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4gXG4gZXhpdF9mcmVlX2FuY2hvcjpcbiBcdHVzYl9raWxsX2FuY2hvcmVkX3VyYnMocnQyeDAwZGV2LVx1MDAzZWFuY2hvcik7XG4tXHRydDJ4MDB1c2JfZnJlZV9yZWcocnQyeDAwZGV2KTtcbi1cbi1leGl0X2ZyZWVfZGV2aWNlOlxuIFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xuIFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgTlVMTCk7XG4gXG5AQCAtODU1LDcgJiM0Mzs4MjcsNiBAQCB2b2lkIHJ0MngwMHVzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcbiBcdCAqIEZyZWUgYWxsIGFsbG9jYXRlZCBkYXRhLlxuIFx0ICovXG4gXHRydDJ4MDBsaWJfcmVtb3ZlX2RldihydDJ4MDBkZXYpO1xuLVx0cnQyeDAwdXNiX2ZyZWVfcmVnKHJ0MngwMGRldik7XG4gXHRpZWVlODAyMTFfZnJlZV9odyhodyk7XG4gXG4gXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMTowOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVDJYMDAmIzM0OywKICAgICYjMzQ7UlQyODAwUENJJiMzNDssCiAgICAmIzM0O1JUMjgwMFVTQiYjMzQ7LAogICAgJiMzNDtSVDI0MDBQQ0kmIzM0OywKICAgICYjMzQ7UlQyNTAwUENJJiMzNDssCiAgICAmIzM0O1JUNjFQQ0kmIzM0OywKICAgICYjMzQ7UlQyNTAwVVNCJiMzNDssCiAgICAmIzM0O1JUNzNVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydDJ4MDBwY2lfcHJvYmUmIzM0OywKICAgICYjMzQ7cnQyeDAwcGNpX3JlbW92ZSYjMzQ7LAogICAgJiMzNDtydDJ4MDB1c2JfcHJvYmUmIzM0OywKICAgICYjMzQ7cnQyeDAwdXNiX2Rpc2Nvbm5lY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIFBDSSBhbmQgVVNCIHJlc291cmNlIG1hbmFnZW1lbnQgaW4gdGhlIHJ0MngwMCB3aXJlbGVzcyBkcml2ZXIgdG8gdXNlIGRldnJlcyAoZGV2bV8qIGFuZCBwY2ltXyogZnVuY3Rpb25zKS4gRnV6emluZyB0aGUgcHJvYmUgYW5kIGRpc2Nvbm5lY3QvcmVtb3ZlIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyByZXNvdXJjZSBtYW5hZ2VtZW50IGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gZmFpbHVyZXMgb3IgZGV2aWNlIHJlbW92YWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMxYmI5ODEzMDZjMTIwNjc0NDgyNDE4NGExNjFkODhkNzIxNmE5ODEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxOCAwMTowOToyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHBjaS5jCmluZGV4IGNhYmVlZjBkZGU0NWQ1Li5kNDYzNWI1MzE0ODE4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBwY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHBjaS5jCkBAIC0xOSw4NCAmIzQzOzE5LDUwIEBACiAjaW5jbHVkZSAmIzM0O3J0MngwMC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7cnQyeDAwcGNpLmgmIzM0OwogCi0vKgotICogUENJIGRyaXZlciBoYW5kbGVycy4KLSAqLwotc3RhdGljIHZvaWQgcnQyeDAwcGNpX2ZyZWVfcmVnKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpCi17Ci0Ja2ZyZWUocnQyeDAwZGV2LSZndDtyZik7Ci0JcnQyeDAwZGV2LSZndDtyZiA9IE5VTEw7Ci0KLQlrZnJlZShydDJ4MDBkZXYtJmd0O2VlcHJvbSk7Ci0JcnQyeDAwZGV2LSZndDtlZXByb20gPSBOVUxMOwotCi0JaWYgKHJ0MngwMGRldi0mZ3Q7Y3NyLmJhc2UpIHsKLQkJaW91bm1hcChydDJ4MDBkZXYtJmd0O2Nzci5iYXNlKTsKLQkJcnQyeDAwZGV2LSZndDtjc3IuYmFzZSA9IE5VTEw7Ci0JfQotfQotCi1zdGF0aWMgaW50IHJ0MngwMHBjaV9hbGxvY19yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKLXsKLQlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiA9IHRvX3BjaV9kZXYocnQyeDAwZGV2LSZndDtkZXYpOwotCi0JcnQyeDAwZGV2LSZndDtjc3IuYmFzZSA9IHBjaV9pb3JlbWFwX2JhcihwY2lfZGV2LCAwKTsKLQlpZiAoIXJ0MngwMGRldi0mZ3Q7Y3NyLmJhc2UpCi0JCWdvdG8gZXhpdDsKLQotCXJ0MngwMGRldi0mZ3Q7ZWVwcm9tID0ga3phbGxvYyhydDJ4MDBkZXYtJmd0O29wcy0mZ3Q7ZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpOwotCWlmICghcnQyeDAwZGV2LSZndDtlZXByb20pCi0JCWdvdG8gZXhpdDsKLQotCXJ0MngwMGRldi0mZ3Q7cmYgPSBremFsbG9jKHJ0MngwMGRldi0mZ3Q7b3BzLSZndDtyZl9zaXplLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXJ0MngwMGRldi0mZ3Q7cmYpCi0JCWdvdG8gZXhpdDsKLQotCXJldHVybiAwOwotCi1leGl0OgotCXJ0MngwMF9wcm9iZV9lcnIoJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgcmVnaXN0ZXJzXG4mIzM0Oyk7Ci0KLQlydDJ4MDBwY2lfZnJlZV9yZWcocnQyeDAwZGV2KTsKLQotCXJldHVybiAtRU5PTUVNOwotfQotCiBpbnQgcnQyeDAwcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCBjb25zdCBzdHJ1Y3QgcnQyeDAwX29wcyAqb3BzKQogewotCXN0cnVjdCBpZWVlODAyMTFfaHcgKmh3OwogCXN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXY7CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfaHcgKmh3OwomIzQzOwl2b2lkIF9faW9tZW0gKmJhc2U7CiYjNDM7CV9fbGUxNiAqZWVwcm9tOwogCWludCByZXR2YWw7CiAJdTE2IGNoaXA7CiYjNDM7CXUzMiAqcmY7CiAKLQlyZXR2YWwgPSBwY2lfZW5hYmxlX2RldmljZShwY2lfZGV2KTsKJiM0MzsJcmV0dmFsID0gcGNpbV9lbmFibGVfZGV2aWNlKHBjaV9kZXYpOwogCWlmIChyZXR2YWwpIHsKIAkJcnQyeDAwX3Byb2JlX2VycigmIzM0O0VuYWJsZSBkZXZpY2UgZmFpbGVkXG4mIzM0Oyk7CiAJCXJldHVybiByZXR2YWw7CiAJfQogCi0JcmV0dmFsID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwY2lfZGV2LCBwY2lfbmFtZShwY2lfZGV2KSk7Ci0JaWYgKHJldHZhbCkgewotCQlydDJ4MDBfcHJvYmVfZXJyKCYjMzQ7UENJIHJlcXVlc3QgcmVnaW9ucyBmYWlsZWRcbiYjMzQ7KTsKLQkJZ290byBleGl0X2Rpc2FibGVfZGV2aWNlOwomIzQzOwliYXNlID0gcGNpbV9pb21hcF9yZWdpb24ocGNpX2RldiwgMCwgcGNpX25hbWUocGNpX2RldikpOwomIzQzOwlpZiAoSVNfRVJSKGJhc2UpKSB7CiYjNDM7CQlydDJ4MDBfcHJvYmVfZXJyKCYjMzQ7UENJIGlvbWFwIHJlZ2lvbiBmYWlsZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBQVFJfRVJSKGJhc2UpOwogCX0KIAogCXBjaV9zZXRfbWFzdGVyKHBjaV9kZXYpOwogCi0JaWYgKHBjaV9zZXRfbXdpKHBjaV9kZXYpKQomIzQzOwlpZiAocGNpbV9zZXRfbXdpKHBjaV9kZXYpKQogCQlydDJ4MDBfcHJvYmVfZXJyKCYjMzQ7TVdJIG5vdCBhdmFpbGFibGVcbiYjMzQ7KTsKIAogCWlmIChkbWFfc2V0X21hc2soJmFtcDtwY2lfZGV2LSZndDtkZXYsIERNQV9CSVRfTUFTSygzMikpKSB7CiAJCXJ0MngwMF9wcm9iZV9lcnIoJiMzNDtQQ0kgRE1BIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKLQkJcmV0dmFsID0gLUVJTzsKLQkJZ290byBleGl0X3JlbGVhc2VfcmVnaW9uczsKJiM0MzsJCXJldHVybiAtRUlPOwogCX0KIAomIzQzOwllZXByb20gPSBkZXZtX2t6YWxsb2MoJmFtcDtwY2lfZGV2LSZndDtkZXYsIG9wcy0mZ3Q7ZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIWVlcHJvbSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlyZiA9IGRldm1fa3phbGxvYygmYW1wO3BjaV9kZXYtJmd0O2Rldiwgb3BzLSZndDtyZl9zaXplLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFyZikKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwogCWh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHNpemVvZihzdHJ1Y3QgcnQyeDAwX2RldiksIG9wcy0mZ3Q7aHcpOwogCWlmICghaHcpIHsKIAkJcnQyeDAwX3Byb2JlX2VycigmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBoYXJkd2FyZVxuJiMzNDspOwotCQlyZXR2YWwgPSAtRU5PTUVNOwotCQlnb3RvIGV4aXRfcmVsZWFzZV9yZWdpb25zOwomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiAJfQogCiAJcGNpX3NldF9kcnZkYXRhKHBjaV9kZXYsIGh3KTsKQEAgLTEwNSwxOCAmIzQzOzcxLDE3IEBAIGludCBydDJ4MDBwY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpCiAJcnQyeDAwZGV2LSZndDtkZXYgPSAmYW1wO3BjaV9kZXYtJmd0O2RldjsKIAlydDJ4MDBkZXYtJmd0O29wcyA9IG9wczsKIAlydDJ4MDBkZXYtJmd0O2h3ID0gaHc7CiYjNDM7CXJ0MngwMGRldi0mZ3Q7Y3NyLmJhc2UgPSBiYXNlOwogCXJ0MngwMGRldi0mZ3Q7aXJxID0gcGNpX2Rldi0mZ3Q7aXJxOwogCXJ0MngwMGRldi0mZ3Q7bmFtZSA9IG9wcy0mZ3Q7bmFtZTsKJiM0MzsJcnQyeDAwZGV2LSZndDtlZXByb20gPSBlZXByb207CiYjNDM7CXJ0MngwMGRldi0mZ3Q7cmYgPSByZjsKIAogCWlmIChwY2lfaXNfcGNpZShwY2lfZGV2KSkKIAkJcnQyeDAwX3NldF9jaGlwX2ludGYocnQyeDAwZGV2LCBSVDJYMDBfQ0hJUF9JTlRGX1BDSUUpOwogCWVsc2UKIAkJcnQyeDAwX3NldF9jaGlwX2ludGYocnQyeDAwZGV2LCBSVDJYMDBfQ0hJUF9JTlRGX1BDSSk7CiAKLQlyZXR2YWwgPSBydDJ4MDBwY2lfYWxsb2NfcmVnKHJ0MngwMGRldik7Ci0JaWYgKHJldHZhbCkKLQkJZ290byBleGl0X2ZyZWVfZGV2aWNlOwotCiAJLyoKIAkgKiBCZWNhdXNlIHJ0MzI5MCBjaGlwIHVzZSBkaWZmZXJlbnQgZWZ1c2Ugb2Zmc2V0IHRvIHJlYWQgZWZ1c2UgZGF0YS4KIAkgKiBTbyBiZWZvcmUgcmVhZCBlZnVzZSBpdCBuZWVkIHRvIGluZGljYXRlIGl0IGlzIHRoZQpAQCAtMTI3LDIzICYjNDM7OTIsMTMgQEAgaW50IHJ0MngwMHBjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiwgY29uc3Qgc3RydWN0IHJ0MngwMF9vcHMgKm9wcykKIAogCXJldHZhbCA9IHJ0MngwMGxpYl9wcm9iZV9kZXYocnQyeDAwZGV2KTsKIAlpZiAocmV0dmFsKQotCQlnb3RvIGV4aXRfZnJlZV9yZWc7CiYjNDM7CQlnb3RvIGV4aXRfZnJlZV9kZXZpY2U7CiAKIAlyZXR1cm4gMDsKIAotZXhpdF9mcmVlX3JlZzoKLQlydDJ4MDBwY2lfZnJlZV9yZWcocnQyeDAwZGV2KTsKLQogZXhpdF9mcmVlX2RldmljZToKIAlpZWVlODAyMTFfZnJlZV9odyhodyk7CiAKLWV4aXRfcmVsZWFzZV9yZWdpb25zOgotCXBjaV9jbGVhcl9td2kocGNpX2Rldik7Ci0JcGNpX3JlbGVhc2VfcmVnaW9ucyhwY2lfZGV2KTsKLQotZXhpdF9kaXNhYmxlX2RldmljZToKLQlwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7Ci0KIAlyZXR1cm4gcmV0dmFsOwogfQogRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwcGNpX3Byb2JlKTsKQEAgLTE1MywxOSAmIzQzOzEwOCw4IEBAIHZvaWQgcnQyeDAwcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldikKIAlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZGV2KTsKIAlzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2ID0gaHctJmd0O3ByaXY7CiAKLQkvKgotCSAqIEZyZWUgYWxsIGFsbG9jYXRlZCBkYXRhLgotCSAqLwogCXJ0MngwMGxpYl9yZW1vdmVfZGV2KHJ0MngwMGRldik7Ci0JcnQyeDAwcGNpX2ZyZWVfcmVnKHJ0MngwMGRldik7CiAJaWVlZTgwMjExX2ZyZWVfaHcoaHcpOwotCi0JLyoKLQkgKiBGcmVlIHRoZSBQQ0kgZGV2aWNlIGRhdGEuCi0JICovCi0JcGNpX2NsZWFyX213aShwY2lfZGV2KTsKLQlwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7Ci0JcGNpX3JlbGVhc2VfcmVnaW9ucyhwY2lfZGV2KTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHJ0MngwMHBjaV9yZW1vdmUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHVzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuYwppbmRleCA0N2U0MjdlYTg2MjIxYS4uOTM4MzIwNDc4NzI4NjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwdXNiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuYwpAQCAtNzU1LDU1ICYjNDM7NzU1LDMxIEBAIHZvaWQgcnQyeDAwdXNiX3VuaW5pdGlhbGl6ZShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogfQogRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwdXNiX3VuaW5pdGlhbGl6ZSk7CiAKLS8qCi0gKiBVU0IgZHJpdmVyIGhhbmRsZXJzLgotICovCi1zdGF0aWMgdm9pZCBydDJ4MDB1c2JfZnJlZV9yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKLXsKLQlrZnJlZShydDJ4MDBkZXYtJmd0O3JmKTsKLQlydDJ4MDBkZXYtJmd0O3JmID0gTlVMTDsKLQotCWtmcmVlKHJ0MngwMGRldi0mZ3Q7ZWVwcm9tKTsKLQlydDJ4MDBkZXYtJmd0O2VlcHJvbSA9IE5VTEw7Ci0KLQlrZnJlZShydDJ4MDBkZXYtJmd0O2Nzci5jYWNoZSk7Ci0JcnQyeDAwZGV2LSZndDtjc3IuY2FjaGUgPSBOVUxMOwotfQotCi1zdGF0aWMgaW50IHJ0MngwMHVzYl9hbGxvY19yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKLXsKLQlydDJ4MDBkZXYtJmd0O2Nzci5jYWNoZSA9IGt6YWxsb2MoQ1NSX0NBQ0hFX1NJWkUsIEdGUF9LRVJORUwpOwotCWlmICghcnQyeDAwZGV2LSZndDtjc3IuY2FjaGUpCi0JCWdvdG8gZXhpdDsKLQotCXJ0MngwMGRldi0mZ3Q7ZWVwcm9tID0ga3phbGxvYyhydDJ4MDBkZXYtJmd0O29wcy0mZ3Q7ZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpOwotCWlmICghcnQyeDAwZGV2LSZndDtlZXByb20pCi0JCWdvdG8gZXhpdDsKLQotCXJ0MngwMGRldi0mZ3Q7cmYgPSBremFsbG9jKHJ0MngwMGRldi0mZ3Q7b3BzLSZndDtyZl9zaXplLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXJ0MngwMGRldi0mZ3Q7cmYpCi0JCWdvdG8gZXhpdDsKLQotCXJldHVybiAwOwotCi1leGl0OgotCXJ0MngwMF9wcm9iZV9lcnIoJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgcmVnaXN0ZXJzXG4mIzM0Oyk7Ci0KLQlydDJ4MDB1c2JfZnJlZV9yZWcocnQyeDAwZGV2KTsKLQotCXJldHVybiAtRU5PTUVNOwotfQotCiBpbnQgcnQyeDAwdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZiwKIAkJICAgIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpCiB7CiAJc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTsKLQlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodzsKIAlzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2OwomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodzsKJiM0MzsJX19sZTE2ICplZXByb207CiYjNDM7CXZvaWQgKmNhY2hlOwogCWludCByZXR2YWw7CiYjNDM7CXUzMiogcmY7CiAKIAl1c2JfcmVzZXRfZGV2aWNlKHVzYl9kZXYpOwogCiYjNDM7CWNhY2hlID0gZGV2bV9remFsbG9jKCZhbXA7dXNiX2ludGYtJmd0O2RldiwgQ1NSX0NBQ0hFX1NJWkUsIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIWNhY2hlKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CWVlcHJvbSA9IGRldm1fa3phbGxvYygmYW1wO3VzYl9pbnRmLSZndDtkZXYsIG9wcy0mZ3Q7ZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIWVlcHJvbSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlyZiA9IGRldm1fa3phbGxvYygmYW1wO3VzYl9pbnRmLSZndDtkZXYsIG9wcy0mZ3Q7cmZfc2l6ZSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghcmYpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKIAlodyA9IGllZWU4MDIxMV9hbGxvY19odyhzdHJ1Y3Rfc2l6ZShydDJ4MDBkZXYsIGFuY2hvciwgMSksIG9wcy0mZ3Q7aHcpOwogCWlmICghaHcpIHsKIAkJcnQyeDAwX3Byb2JlX2VycigmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBoYXJkd2FyZVxuJiMzNDspOwpAQCAtODE2LDE2ICYjNDM7NzkyLDE1IEBAIGludCBydDJ4MDB1c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLAogCXJ0MngwMGRldi0mZ3Q7ZGV2ID0gJmFtcDt1c2JfaW50Zi0mZ3Q7ZGV2OwogCXJ0MngwMGRldi0mZ3Q7b3BzID0gb3BzOwogCXJ0MngwMGRldi0mZ3Q7aHcgPSBodzsKJiM0MzsJcnQyeDAwZGV2LSZndDtjc3IuY2FjaGUgPSBjYWNoZTsKJiM0MzsJcnQyeDAwZGV2LSZndDtlZXByb20gPSBlZXByb207CiYjNDM7CXJ0MngwMGRldi0mZ3Q7cmYgPSByZjsKIAogCXJ0MngwMF9zZXRfY2hpcF9pbnRmKHJ0MngwMGRldiwgUlQyWDAwX0NISVBfSU5URl9VU0IpOwogCiAJSU5JVF9XT1JLKCZhbXA7cnQyeDAwZGV2LSZndDtyeGRvbmVfd29yaywgcnQyeDAwdXNiX3dvcmtfcnhkb25lKTsKIAlJTklUX1dPUksoJmFtcDtydDJ4MDBkZXYtJmd0O3R4ZG9uZV93b3JrLCBydDJ4MDB1c2Jfd29ya190eGRvbmUpOwogCi0JcmV0dmFsID0gcnQyeDAwdXNiX2FsbG9jX3JlZyhydDJ4MDBkZXYpOwotCWlmIChyZXR2YWwpCi0JCWdvdG8gZXhpdF9mcmVlX2RldmljZTsKLQogCWluaXRfdXNiX2FuY2hvcihydDJ4MDBkZXYtJmd0O2FuY2hvcik7CiAKIAlyZXR2YWwgPSBydDJ4MDBsaWJfcHJvYmVfZGV2KHJ0MngwMGRldik7CkBAIC04MzYsOSAmIzQzOzgxMSw2IEBAIGludCBydDJ4MDB1c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLAogCiBleGl0X2ZyZWVfYW5jaG9yOgogCXVzYl9raWxsX2FuY2hvcmVkX3VyYnMocnQyeDAwZGV2LSZndDthbmNob3IpOwotCXJ0MngwMHVzYl9mcmVlX3JlZyhydDJ4MDBkZXYpOwotCi1leGl0X2ZyZWVfZGV2aWNlOgogCWllZWU4MDIxMV9mcmVlX2h3KGh3KTsKIAl1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTsKIApAQCAtODU1LDcgJiM0Mzs4MjcsNiBAQCB2b2lkIHJ0MngwMHVzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZikKIAkgKiBGcmVlIGFsbCBhbGxvY2F0ZWQgZGF0YS4KIAkgKi8KIAlydDJ4MDBsaWJfcmVtb3ZlX2RldihydDJ4MDBkZXYpOwotCXJ0MngwMHVzYl9mcmVlX3JlZyhydDJ4MDBkZXYpOwogCWllZWU4MDIxMV9mcmVlX2h3KGh3KTsKIAogCXVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIE5VTEwpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDc3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlZmFjdG9yaW5nIFBhdGNoIGZvciBydDJ4MDAgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgaG9uZXMgaW4gb24gdGhlIGNvcmUgY2hhbmdlOiBpdCYjMzk7cyBhIHJlZmFjdG9yaW5nLiBUaGV5JiMzOTtyZSBkaXRjaGluZyB0aGUgbWFudWFsIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50IGluIGBydDJ4MDBwY2kuY2AgYW5kIGBydDJ4MDB1c2IuY2AgYW5kIG1vdmluZyBvdmVyIHRvIHRoZSBgZGV2bV8qYCBmYW1pbHkuIFRoYXQmIzM5O3MgYSBnb29kIHRoaW5nLCBnZW5lcmFsbHkgc3BlYWtpbmcsIGxldmVyYWdpbmcgdGhlIGtlcm5lbCYjMzk7cyBkZXZpY2UgcmVzb3VyY2UgbWFuYWdlbWVudCBpcyBhbG1vc3QgYWx3YXlzIGEgd2luIGZvciByb2J1c3RuZXNzIGFuZCByZWFkYWJpbGl0eS4gVGhpcyBtZWFucyBmdW5jdGlvbnMgbGlrZSBgcnQyeDAwcGNpX2ZyZWVfcmVnYCwgYHJ0MngwMHBjaV9hbGxvY19yZWdgLCBgcnQyeDAwdXNiX2ZyZWVfcmVnYCwgYW5kIGBydDJ4MDB1c2JfYWxsb2NfcmVnYCBhcmUgYmVpbmcgcmVtb3ZlZCwgd2hpY2ggaXMgZXhwZWN0ZWQuCgpOb3csIHRoZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkLCBhbmQgSSYjMzk7bSBzdXJlIGFueW9uZSB3aXRoIG15IGxldmVsIG9mIGV4cGVyaWVuY2UgaW1tZWRpYXRlbHkgYXNrcywgaXM6IERvZXMgdGhpcyBpbXBhY3QgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCB3YXJyYW50cyBmdXp6aW5nIGF0dGVudGlvbj8gQWJzb2x1dGVseSwgdGhpcyBjaGFuZ2VzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCBzZXF1ZW5jZXMuIEl0JiMzOTtzIHJlZmFjdG9yaW5nIHRvIGBkZXZyZXNgLCBzbyBpdCBjYW4gZWFzaWx5IGxlYWQgdG8gYSBidWcgaW4gdGhlIGVycm9yLWhhbmRsaW5nIG9yIHJlc291cmNlIGNsZWFudXAgcG9ydGlvbnMuIFdlIGhhdmUgdG8gdGhpbmsgYWJvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGxlYWtzIGFyaXNpbmcgZnJvbSB0aGlzIGNoYW5nZS4KCkdpdmVuIHRoaXMgYXBwbGllcyB0byBSYWxpbmsmIzM5O3MgcnQyeDAwIHdpcmVsZXNzIGRyaXZlcnMsIGFuZCBzcGVjaWZpY2FsbHkgdGhlIFBDSSBhbmQgVVNCIHZhcmlhbnRzLCB0aGlzIG9wZW5zIHVwIGF2ZW51ZXMgZm9yIGJvdGggVVNCIGZ1enppbmcgKHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyB3b3VsZCBiZSBwZXJmZWN0KSBhbmQgUENJIGZ1enppbmcsIHdoaWNoIGlzIHNvbWV0aGluZyB0byBjb25zaWRlci4gVGhpcyBhbHNvIGRlcGVuZHMgb24gdGhlIGNvbmZpZ3VyYXRpb24uCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBjaGVjayB0aGUgY29uZmlncyBmb3IgdGhlIGRyaXZlci4gSSBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWdgLiBJJiMzOTtsbCBzZWFyY2ggZm9yIHRoZSByZWxldmFudCBjb25maWdzIGFuZCBtYWtlIHN1cmUgdGhpcyBwYXRoIGlzIGNvdmVyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUMlgwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyOm1lbnVjb25maWcgUlQyWDAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JhbGluayBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0yMjA9Y29uZmlnIFJUMjgwMF9MSUJfTU1JT1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjI1OmNvbmZpZyBSVDJYMDBfTElCX01NSU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjYtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjI5OmNvbmZpZyBSVDJYMDBfTElCX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzMC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyMzM6Y29uZmlnIFJUMlgwMF9MSUJfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjM0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIzNzpjb25maWcgUlQyWDAwX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzOC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI0MDpjb25maWcgUlQyWDAwX0xJQl9GSVJNV0FSRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0MS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI0NDpjb25maWcgUlQyWDAwX0xJQl9DUllQVE9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNDUtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI0Nzpjb25maWcgUlQyWDAwX0xJQl9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQ4LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjUxOmNvbmZpZyBSVDJYMDBfTElCX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTItXHRib29sIFwmIzM0O1JhbGluayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI1OTpjb25maWcgUlQyWDAwX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtSYWxpbmsgZGVidWcgb3V0cHV0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE1OQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFBDSSBhbmQgVVNCIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYXJlIGFjdHVhbGx5IHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGUgUENJIGFuZCBVU0IgZHJpdmVycy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBxdWVzdGlvbiwgcmVhbGx5LiBJIGtub3cgdGhlcmUgYXJlIHVzdWFsbHkgYSBtdWx0aXR1ZGUgb2Ygb3B0aW9ucywgb2Z0ZW4gc3ByZWFkIGFjcm9zcyBhIGZldyBkaWZmZXJlbnQgY29uZmlnIGZpbGVzIG9yIHdpdGhpbiBhIHNpbmdsZSwgY29tcGxleCBvbmUuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGxpbmVzIHRoYXQgZGVmaW5lIHdoZXRoZXIgdGhlIHN5c3RlbSBhdHRlbXB0cyB0byBsb2FkIGFuZCBpbml0aWFsaXplIHRob3NlIHBhcnRpY3VsYXIgZHJpdmVycyBhdCBib290LiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIHRoaW5ncyBsaWtlIG1vZHVsZSBibGFja2xpc3RpbmcsIGRldmljZSB0cmVlIG92ZXJsYXlzIChpZiBhcHBsaWNhYmxlKSwgYW5kIGFueSBzcGVjaWZpYyBrZXJuZWwgbW9kdWxlIG9wdGlvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5LiBJJiMzOTtsbCBhbHNvIHdhbnQgdG8gd2F0Y2ggb3V0IGZvciB0aGluZ3MgbGlrZSBlYXJseSBpbml0aWFsaXphdGlvbiBmbGFncyBvciBhbnkgY29uZGl0aW9uYWwgbG9naWMsIHdoaWNoIGNhbiBjb21wbGljYXRlIHRoZSBwcm9jZXNzIGEgYml0LCBidXQgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGZvciBteSBwdXJwb3Nlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlQyLipVU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTExMT1lbmRpZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTExMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMTM6Y29uZmlnIFJUMjUwMFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTExNC1cdHRyaXN0YXRlIFwmIzM0O1JhbGluayBydDI1MDAgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0xMjQ9Y29uZmlnIFJUNzNVU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjEzNzpjb25maWcgUlQyODAwVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTM4LVx0dHJpc3RhdGUgXCYjMzQ7UmFsaW5rIHJ0Mjd4eC9ydDI4eHgvcnQzMHh4IChVU0IpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MTUwPWlmIFJUMjgwMFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxNTI6Y29uZmlnIFJUMjgwMFVTQl9SVDMzWFhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xNTMtXHRib29sIFwmIzM0O3J0MjgwMHVzYiAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzM3h4IGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjE2MDpjb25maWcgUlQyODAwVVNCX1JUMzVYWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE2MS1cdGJvb2wgXCYjMzQ7cnQyODAwdXNiIC0gSW5jbHVkZSBzdXBwb3J0IGZvciBydDM1eHggZGV2aWNlcyAoRVhQRVJJTUVOVEFMKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTY4OmNvbmZpZyBSVDI4MDBVU0JfUlQzNTczXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTY5LVx0Ym9vbCBcJiMzNDtydDI4MDB1c2IgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0MzU3MyBkZXZpY2VzIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxNzQ6Y29uZmlnIFJUMjgwMFVTQl9SVDUzWFhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xNzUtXHRib29sIFwmIzM0O3J0MjgwMHVzYiAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQ1M3h4IGRldmljZXMgKEVYUEVSSU1FTlRBTClcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjE4MTpjb25maWcgUlQyODAwVVNCX1JUNTVYWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE4Mi1cdGJvb2wgXCYjMzQ7cnQyODAwdXNiIC0gSW5jbHVkZSBzdXBwb3J0IGZvciBydDU1eHggZGV2aWNlcyAoRVhQRVJJTUVOVEFMKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTg4OmNvbmZpZyBSVDI4MDBVU0JfVU5LTk9XTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE4OS1cdGJvb2wgXCYjMzQ7cnQyODAwdXNiIC0gSW5jbHVkZSBzdXBwb3J0IGZvciB1bmtub3duIChVU0IpIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjI5PWNvbmZpZyBSVDJYMDBfTElCX1BDSVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjMzOmNvbmZpZyBSVDJYMDBfTElCX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzNC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQyMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIGZyYW1lZCBhcyB5b3VyIHRob3VnaHRzIGFzIGFuIGV4cGVydDoKCioqUmVmbGVjdGluZyBvbiBQQ0kgQ29uc2lkZXJhdGlvbnMqKgoKUmlnaHQsIHRoaW5raW5nIGFib3V0IFBDSeKApiBpdCBhbGwgYm9pbHMgZG93biB0byBwcm90ZWN0aW5nIGNhcmRob2xkZXIgZGF0YSwgb2J2aW91c2x5LiBJJiMzOTttIHJ1bm5pbmcgdGhyb3VnaCB0aGUgZmFtaWxpYXIgY29tcGxpYW5jZSByZXF1aXJlbWVudHMuIFdlJiMzOTt2ZSBnb3QgdGhlIHNpeCBtYWluIGdvYWxzOiBidWlsZCBhbmQgbWFpbnRhaW4gYSBzZWN1cmUgbmV0d29yayBhbmQgc3lzdGVtcywgcHJvdGVjdCBjYXJkaG9sZGVyIGRhdGEsIG1haW50YWluIGEgdnVsbmVyYWJpbGl0eSBtYW5hZ2VtZW50IHByb2dyYW0sIGltcGxlbWVudCBzdHJvbmcgYWNjZXNzIGNvbnRyb2wgbWVhc3VyZXMsIHJlZ3VsYXJseSBtb25pdG9yIGFuZCB0ZXN0IG5ldHdvcmtzLCBhbmQgbWFpbnRhaW4gYW4gaW5mb3JtYXRpb24gc2VjdXJpdHkgcG9saWN5LiBJIGtub3cgdGhpcyBpbnNpZGUgYW5kIG91dC4gSXTigJlzIGFib3V0IG1vcmUgdGhhbiBqdXN0IGNoZWNraW5nIGJveGVzLCB0aG91Z2guIEl0JiMzOTtzIGFib3V0IGEgY3VsdHVyZSBvZiBzZWN1cml0eSwgZW1iZWRkZWQgd2l0aGluIGV2ZXJ5IHByb2Nlc3MgYW5kIHByb2NlZHVyZS4KCkkmIzM5O20gbWVudGFsbHkgb3V0bGluaW5nIHRoZSByZWxldmFudCBzZWN0aW9uczogc2NvcGUgZGV0ZXJtaW5hdGlvbiwgc2VnbWVudGF0aW9uLCBlbmNyeXB0aW9uIHN0cmF0ZWdpZXPigKYgSXQmIzM5O3MgYSByaXNrIGFzc2Vzc21lbnQgZXhlcmNpc2UsIHVsdGltYXRlbHkuIElkZW50aWZ5aW5nIHRoZSB3ZWFrIHBvaW50cywgdGhlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgd2hlcmUgYSBsb3Qgb2Ygb3JnYW5pemF0aW9ucyBzdHVtYmxlLiBUaGV5IHRyZWF0IFBDSSBhcyBhIG9uZS10aW1lIHByb2plY3QsIG5vdCBhbiBvbmdvaW5nIGNvbW1pdG1lbnQuIEkgbmVlZCB0byBlbXBoYXNpemUgdGhlIGltcG9ydGFuY2Ugb2YgY29udGludW91cyBtb25pdG9yaW5nLiBWdWxuZXJhYmlsaXR5IHNjYW5zLCBwZW5ldHJhdGlvbiB0ZXN0cywgdGhhdCYjMzk7cyBhbGwganVzdCB0aGUgc3RhcnRpbmcgcG9pbnQuIEl0JiMzOTtzIGFib3V0IHByb2FjdGl2ZSBkZWZlbnNlLCBub3QgcmVhY3RpdmUgZGFtYWdlIGNvbnRyb2wuIEFuZCwgb2YgY291cnNlLCB0aGUgZXZlci1wcmVzZW50IHRocmVhdCBvZiBwaGlzaGluZyBhdHRhY2tzIGFuZCBzb2NpYWwgZW5naW5lZXJpbmcuIFBlcnNvbm5lbCB0cmFpbmluZyBhbmQgYXdhcmVuZXNzIGFyZSBhYnNvbHV0ZWx5IGNyaXRpY2FsIGhlcmUuIFdlIG5lZWQgdG8gY3JlYXRlIGEgaHVtYW4gZmlyZXdhbGwuCgpJdCYjMzk7cyB0ZW1wdGluZyB0byB0aGluayBhYm91dCBhdXRvbWF0ZWQgc29sdXRpb25zIOKAkyBhbmQsIHllcywgd2Ugc2hvdWxkIGxldmVyYWdlIHRoZW0gd2hlcmUgYXBwcm9wcmlhdGUg4oCTIGJ1dCBjb21wbGlhbmNlIGlzbiYjMzk7dCBhIHNpbHZlciBidWxsZXQuIFlvdSBjYW4mIzM5O3QganVzdCBidXkgeW91ciB3YXkgdG8gc2VjdXJpdHkuIEl0JiMzOTtzIGFib3V0IGEgaG9saXN0aWMgYXBwcm9hY2gsIGEgY29tcHJlaGVuc2l2ZSBzZWN1cml0eSBwcm9ncmFtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVDIuKlBDSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MTk9aWYgUlQyWDAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjE6Y29uZmlnIFJUMjQwMFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7UmFsaW5rIHJ0MjQwMCAoUENJL1BDTUNJQSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0zMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzozMzpjb25maWcgUlQyNTAwUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMzQtXHR0cmlzdGF0ZSBcJiMzNDtSYWxpbmsgcnQyNTAwIChQQ0kvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTQ1PWNvbmZpZyBSVDYxUENJXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjYwOmNvbmZpZyBSVDI4MDBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O1JhbGluayBydDI3eHgvcnQyOHh4L3J0MzB4eCAoUENJL1BDSWUvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTc3PWlmIFJUMjgwMFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjc5OmNvbmZpZyBSVDI4MDBQQ0lfUlQzM1hYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctODAtXHRib29sIFwmIzM0O3J0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzM3h4IGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6ODc6Y29uZmlnIFJUMjgwMFBDSV9SVDM1WFhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy04OC1cdGJvb2wgXCYjMzQ7cnQyODAwcGNpIC0gSW5jbHVkZSBzdXBwb3J0IGZvciBydDM1eHggZGV2aWNlcyAoRVhQRVJJTUVOVEFMKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy05NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzo5Njpjb25maWcgUlQyODAwUENJX1JUNTNYWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTk3LVx0Ym9vbCBcJiMzNDtydDI4MDBwY2kgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0NTN4eCBkZXZpY2VzIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMDQ6Y29uZmlnIFJUMjgwMFBDSV9SVDMyOTBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMDUtXHRib29sIFwmIzM0O3J0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzMjkwIGRldmljZXMgKEVYUEVSSU1FTlRBTClcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjI1PWNvbmZpZyBSVDJYMDBfTElCX01NSU9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIyOTpjb25maWcgUlQyWDAwX0xJQl9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzAtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3MjAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgUlQyWDAwIERyaXZlciBNb2R1bGVzKioKCk9rYXksIHNvIEkgbmVlZCB0byBlbmFibGUgYSBmZXcgUlQyWDAwIG1vZHVsZXMgaGVyZSwgc3BlY2lmaWNhbGx5OiBgUlQyWDAwYCwgYFJUMjUwMFVTQmAsIGBSVDczVVNCYCwgYFJUMjgwMFVTQmAsIGBSVDI0MDBQQ0lgLCBgUlQyNTAwUENJYCwgYFJUNjFQQ0lgLCBhbmQgYFJUMjgwMFBDSWAuIE5vdywgSSYjMzk7bSB0aGlua2luZywgYXJlIGBSVDI4MDBVU0JgIGFuZCBgUlQyODAwUENJYCBlbm91Z2g/IEZvciBzYWZldHkmIzM5O3Mgc2FrZSwgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgZW5hYmxpbmcgKmFsbCogb2YgdGhlbS4gT3IsIHBlcmhhcHMsIEkgY291bGQganVzdCBzdGljayB3aXRoIGBSVDI4MDBVU0JgIGFuZCBgUlQyODAwUENJYC4gSSBuZWVkIHRvIGJlIGNlcnRhaW4uCgpMZXQgbWUgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgYFJUMlgwMF9MSUJfUENJYCBhbmQgYFJUMlgwMF9MSUJfVVNCYCBsaWJyYXJpZXMgYXJlIHNlbGVjdGVkIGJ5IHRoZXNlIG1vZHVsZXM7IHl1cCwgdGhleSBhcmUuIFRoYXQmIzM5O3MgZ29vZC4KClNvLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2xlYXIsIGhlcmUmIzM5O3MgdGhlIGxpc3Qgb2YgY29uZmlncyBJJiMzOTtsbCBiZSBlbmFibGluZzoKCiogICBgUlQyWDAwYAoqICAgYFJUMjUwMFVTQmAKKiAgIGBSVDczVVNCYAoqICAgYFJUMjgwMFVTQmAKKiAgIGBSVDI0MDBQQ0lgCiogICBgUlQyNTAwUENJYAoqICAgYFJUNjFQQ0lgCiogICBgUlQyODAwUENJYAoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkLiBJdCYjMzk7cyB0aGUgcHJvYmUgYW5kIGRpc2Nvbm5lY3QgZnVuY3Rpb25zOiBgcnQyeDAwcGNpX3Byb2JlYCwgYHJ0MngwMHBjaV9yZW1vdmVgLCBgcnQyeDAwdXNiX3Byb2JlYCwgYW5kIGBydDJ4MDB1c2JfZGlzY29ubmVjdGAuIERlZmluaXRlbHkgd29ydGggZnV6emluZyB0aGVzZSBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgc2luY2UgdGhpcyBpbnZvbHZlcyB0ZXN0aW5nIHRoZSBuZXcgZGV2cmVzLWJhc2VkIGluaXRpYWxpemF0aW9uLgoKRm9jdXNpbmcgaW4gb24gdGhvc2UsIGl0JiMzOTtzIGNsZWFyIHRoZSBrZXkgc3ltYm9scyB0byBwcmlvcml0aXplIGZvciBmdXp6aW5nIGFyZTogYHJ0MngwMHBjaV9wcm9iZWAgYW5kIGBydDJ4MDB1c2JfcHJvYmVgLgoKSGFuZyBvbiwgbGV0IG1lIGRvdWJsZS1jaGVjay4uLiBZZXMsIEkgYWxzbyBoYXZlIGBydDJ4MDBwY2lfcmVtb3ZlYCBhbmQgYHJ0MngwMHVzYl9kaXNjb25uZWN0YCB0aGF0IGFyZSBtb2RpZmllZC4gU28sIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcgaXM6IGBydDJ4MDBwY2lfcHJvYmVgLCBgcnQyeDAwcGNpX3JlbW92ZWAsIGBydDJ4MDB1c2JfcHJvYmVgLCBhbmQgYHJ0MngwMHVzYl9kaXNjb25uZWN0YC4gSSYjMzk7bGwgd2FudCB0byB2ZXJpZnkgdGhlIGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVDJYMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjptZW51Y29uZmlnIFJUMlgwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtSYWxpbmsgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjIwPWNvbmZpZyBSVDI4MDBfTElCX01NSU9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIyNTpjb25maWcgUlQyWDAwX0xJQl9NTUlPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjI2LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIyOTpjb25maWcgUlQyWDAwX0xJQl9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzAtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjMzOmNvbmZpZyBSVDJYMDBfTElCX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyMzc6Y29uZmlnIFJUMlgwMF9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzgtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNDA6Y29uZmlnIFJUMlgwMF9MSUJfRklSTVdBUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNDEtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNDQ6Y29uZmlnIFJUMlgwMF9MSUJfQ1JZUFRPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQ1LVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNDc6Y29uZmlnIFJUMlgwMF9MSUJfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0OC1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI1MTpjb25maWcgUlQyWDAwX0xJQl9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjUyLVx0Ym9vbCBcJiMzNDtSYWxpbmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNTk6Y29uZmlnIFJUMlgwMF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7UmFsaW5rIGRlYnVnIG91dHB1dFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY1OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJUMlgwMCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBSVDJYMDBgLCBgUlQyNTAwVVNCYCwgYFJUNzNVU0JgLCBgUlQyODAwVVNCYCwgYFJUMjQwMFBDSWAsIGBSVDI1MDBQQ0lgLCBgUlQ2MVBDSWAsIGFuZCBgUlQyODAwUENJYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlc2UgYXJlIGdvaW5nIHRvIGNvbnRyb2wgdGhlIGNvbXBpbGF0aW9uIG9mIGBydDJ4MDBwY2kuY2AgYW5kIGBydDJ4MDB1c2IuY2AuCgpCdXQgd2FpdCwgSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBoZXJlLiBJIGtub3cgYHJ0MngwMHBjaS5jYCByZWxpZXMgb24gYFJUMlgwMF9MSUJfUENJYCwgbm90IGRpcmVjdGx5IHRoZSBjb25maWdzIHRoZW1zZWx2ZXMuIEFuZCwgc2ltaWxhcmx5LCBgcnQyeDAwdXNiLmNgIGRlcGVuZHMgb24gYFJUMlgwMF9MSUJfVVNCYC4gVGhlc2UgbGlicmFyeSBvcHRpb25zIGFyZSwgaG93ZXZlciwgKnNlbGVjdGVkKiBiYXNlZCBvbiB3aGljaCBzcGVjaWZpYyBkcml2ZXIgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQuCgpUaGVyZWZvcmUsIGVuYWJsaW5nIGBSVDI4MDBVU0JgIGFuZCBgUlQyODAwUENJYCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBlbnN1cmUgdGhlIG5lY2Vzc2FyeSBjb2RlIGlzIGJ1aWx0LiBJJiMzOTttIGJ1aWxkaW5nIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgUlQyODAwIGlzIGEgJiMzNDtoaWdoLWxldmVsJiMzNDsgY29uZmlndXJhdGlvbiwgYW5kIFJUMlgwMCBpcyBhICYjMzQ7bG93LWxldmVsJiMzNDsgY29uZmlndXJhdGlvbi4KClRvIGNvbmZpcm0gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnQyeDAwcGNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19SVDJYMDBfTElCX01NSU8pXHRcdCYjNDM7PSBydDJ4MDBtbWlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1JUMlgwMF9MSUJfUENJKVx0XHQmIzQzOz0gcnQyeDAwcGNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX1JUMlgwMF9MSUJfVVNCKVx0XHQmIzQzOz0gcnQyeDAwdXNiLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzOTAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJZGVudGlmeWluZyB0aGUgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgcmV2b2x2ZXMgYXJvdW5kIGBDT05GSUdfUlQyWDAwX0xJQl9QQ0lgIGFuZCBgQ09ORklHX1JUMlgwMF9MSUJfVVNCYC4gTm8gbmVlZCB0byBzZWNvbmQtZ3Vlc3MgdGhvc2UuIFRoZXkmIzM5O3JlIGNsZWFybHkgdGhlIGtleSBwbGF5ZXJzIGluIHRoaXMuIE5vdywgdGhlIHJlYWwgbWVhdCBvZiB0aGUgcHJvYmxlbSBpcyBmaWd1cmluZyBvdXQgdGhlaXIgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0cmlnZ2VyIHRoZSBzZWxlY3Rpb24gb2YgdGhlc2UgdHdvLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBzdHJ1Y3R1cmUgYW5kIHRyYWNlIGJhY2sgdGhlIHNlbGVjdGlvbiBsb2dpYy4gTGV0JiMzOTtzIHNlZSB3aGF0IGJyaW5ncyB0aGVzZSBpbnRvIHRoZSBidWlsZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFJUMlgwMF9MSUJfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0yMT1jb25maWcgUlQyNDAwUENJXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0LVx0c2VsZWN0IFJUMlgwMF9MSUJfTU1JT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI1Olx0c2VsZWN0IFJUMlgwMF9MSUJfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYtXHRzZWxlY3QgRUVQUk9NXzkzQ1g2XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTMzPWNvbmZpZyBSVDI1MDBQQ0lcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMzYtXHRzZWxlY3QgUlQyWDAwX0xJQl9NTUlPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6Mzc6XHRzZWxlY3QgUlQyWDAwX0xJQl9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0zOC1cdHNlbGVjdCBFRVBST01fOTNDWDZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9NDU9Y29uZmlnIFJUNjFQQ0lcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNDctXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjQ4Olx0c2VsZWN0IFJUMlgwMF9MSUJfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNDktXHRzZWxlY3QgUlQyWDAwX0xJQl9NTUlPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTYwPWNvbmZpZyBSVDI4MDBQQ0lcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNjUtXHRzZWxlY3QgUlQyWDAwX0xJQl9NTUlPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NjY6XHRzZWxlY3QgUlQyWDAwX0xJQl9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy02Ny1cdHNlbGVjdCBSVDJYMDBfTElCX0ZJUk1XQVJFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTQ0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgYXNzdW1pbmcgSSYjMzk7bSB0aGUgZXhwZXJ0IHRoaW5raW5nIHRocm91Z2ggdGhlIHByb3ZpZGVkIHRleHQgYWJvdXQgVVNCLgoKKipBbmFseXppbmcgdGhlIFVTQiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2hlbiB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBVU0IsIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBjb25zdGFudGx5IGV2b2x2aW5nIHN0YW5kYXJkLiBUaGUgc2hlZXIgY29tcGxleGl0eSBjYW4gYmUgb3ZlcndoZWxtaW5nIHNvbWV0aW1lcywgZ2l2ZW4gdGhlIG11bHRpcGxlIHZlcnNpb25zLCBzcGVlZHMsIGFuZCBwb3dlciBkZWxpdmVyeSBjYXBhYmlsaXRpZXMuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIHZhcmlvdXMgY29ubmVjdG9ycywgdGhlIGRpZmZlcmVudCBwcm90b2NvbHMsIGFuZCB0aGUgcG90ZW50aWFsIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAob3IgbGFjayB0aGVyZW9mKSB3aGVuIGRlc2lnbmluZy4gVGhlIHByYWN0aWNhbCBpbXBsaWNhdGlvbnMgb2YgdGhpbmdzIGxpa2UgcG93ZXIgZHJhdyBhbmQgZGF0YSB0cmFuc2ZlciByYXRlcyBhcmUgcGFyYW1vdW50LiBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgdGhlIHRhcmdldCBhcHBsaWNhdGlvbiDigJMgaXMgaXQgaGlnaC1zcGVlZCBzdG9yYWdlLCBtb2JpbGUgZGV2aWNlIGNoYXJnaW5nLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZD8gVGhlIGludGVycGxheSBiZXR3ZWVuIGhvc3QgY29udHJvbGxlcnMsIGRldmljZSBpbnRlcmZhY2VzLCBhbmQgZmlybXdhcmUgYmVjb21lcyBjcnVjaWFsIGhlcmUuIEl0JiMzOTtzIGFib3V0IG9wdGltaXppbmcgZm9yIHBlcmZvcm1hbmNlLCByZWxpYWJpbGl0eSwgYW5kIGNvc3QtZWZmZWN0aXZlbmVzcy4gVGhlIHBvdGVudGlhbCBmb3IgaXNzdWVzIHdpdGggY2FibGUgcXVhbGl0eSBhbmQgZHJpdmVyIHN1cHBvcnQgYXJlIGFsc28gYWx3YXlzIGEgZmFjdG9yLiBTbywgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBvZiB0aGVzZSB2YXJpYWJsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBSVDJYMDBfTElCX1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MTEzPWNvbmZpZyBSVDI1MDBVU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTE1LVx0ZGVwZW5kcyBvbiBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMTY6XHRzZWxlY3QgUlQyWDAwX0xJQl9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMTctXHRzZWxlY3QgUlQyWDAwX0xJQl9DUllQVE9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MTI0PWNvbmZpZyBSVDczVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEyNi1cdGRlcGVuZHMgb24gVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTI3Olx0c2VsZWN0IFJUMlgwMF9MSUJfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTI4LVx0c2VsZWN0IFJUMlgwMF9MSUJfRklSTVdBUkVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MTM3PWNvbmZpZyBSVDI4MDBVU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTQwLVx0c2VsZWN0IFJUMjgwMF9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxNDE6XHRzZWxlY3QgUlQyWDAwX0xJQl9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xNDItXHRzZWxlY3QgUlQyWDAwX0xJQl9GSVJNV0FSRVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzgwMwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgUlQyODAwIFdpcmVsZXNzIERyaXZlciBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZXZhbHVhdGluZyB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgaXQgbG9va3MgbGlrZSBgUlQyODAwUENJYCBhbmQgYFJUMjgwMFVTQmAgYXJlIHByb21pc2luZyBjYW5kaWRhdGVzLiBBaCwgYnV0IHdhaXQg4oCTIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IGBSVDJYMDBgIGlzIGEgbWVudWNvbmZpZyBvcHRpb24sIG1lYW5pbmcgSSBoYXZlIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGl0LiBSaWdodCwgcmlnaHQuIE5vdywgbGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrOyBgUlQyODAwUENJYCBoYXMgZGVwZW5kZW5jaWVzLi4uIHllcywgaXQgZGVwZW5kcyBvbiBib3RoIGBQQ0lgIGFuZCwgb2YgY291cnNlLCBgUlQyWDAwYC4gR29vZCB0byBrbm93LiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgZ2V0IHRob3NlIGRlcGVuZGVuY2llcyBuYWlsZWQgZG93biBjb21wbGV0ZWx5LiBJJiMzOTtsbCBjaGVjayB0aG9zZSBgUlQyODAwUENJYCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVDI4MDBQQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTQ1PWNvbmZpZyBSVDYxUENJXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjYwOmNvbmZpZyBSVDI4MDBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O1JhbGluayBydDI3eHgvcnQyOHh4L3J0MzB4eCAoUENJL1BDSWUvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTc3PWlmIFJUMjgwMFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjc5OmNvbmZpZyBSVDI4MDBQQ0lfUlQzM1hYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctODAtXHRib29sIFwmIzM0O3J0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzM3h4IGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6ODc6Y29uZmlnIFJUMjgwMFBDSV9SVDM1WFhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy04OC1cdGJvb2wgXCYjMzQ7cnQyODAwcGNpIC0gSW5jbHVkZSBzdXBwb3J0IGZvciBydDM1eHggZGV2aWNlcyAoRVhQRVJJTUVOVEFMKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy05NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzo5Njpjb25maWcgUlQyODAwUENJX1JUNTNYWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTk3LVx0Ym9vbCBcJiMzNDtydDI4MDBwY2kgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0NTN4eCBkZXZpY2VzIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMDQ6Y29uZmlnIFJUMjgwMFBDSV9SVDMyOTBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMDUtXHRib29sIFwmIzM0O3J0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzMjkwIGRldmljZXMgKEVYUEVSSU1FTlRBTClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2NzQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIHRoZSBSVDI4MDBQQ0kgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIGBSVDI4MDBQQ0lgIG1vZHVsZS4gVGhpcyBpc24mIzM5O3QganVzdCBhIG1hdHRlciBvZiBsaXN0aW5nIHRoZW07IEkgbmVlZCB0byB0aGluayBhYm91dCAqd2h5KiBJIG5lZWQgdG8ga25vdy4gQW0gSSB0cm91Ymxlc2hvb3RpbmcgYSBkcml2ZXIgaXNzdWU/IEFtIEkgcHJlcGFyaW5nIHRvIHVwZ3JhZGUgb3IgbW9kaWZ5IHRoZSBtb2R1bGU/IEFtIEkgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiBhIGxhcmdlciBzeXN0ZW0/IEtub3dpbmcgdGhlIGNvbnRleHQgd2lsbCBzaGFwZSBob3cgaW4tZGVwdGggSSBuZWVkIHRvIGJlLgoKRmlyc3QsIEkgbmVlZCB0byBsb29rIGF0IGl0cyBkaXJlY3QgZGVwZW5kZW5jaWVzLiBXaGF0IG90aGVyIG1vZHVsZXMgb3IgbGlicmFyaWVzIGRvZXMgaXQgZXhwbGljaXRseSBjYWxsIHVwb24/IEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgc3VzcGVjdHM6IGtlcm5lbCBtb2R1bGVzIGZvciBQQ0kgaW50ZXJhY3Rpb24sIG5ldHdvcmsgc3RhY2sgZnVuY3Rpb25zLCBhbmQgcG90ZW50aWFsbHkgZmlybXdhcmUgaW50ZXJmYWNlcy4gSSYjMzk7bGwgbmVlZCB0byB1c2UgdG9vbHMgbGlrZSBgbW9kaW5mb2AgYW5kIG1heWJlIGV2ZW4gZGlzc2VjdCB0aGUgc291cmNlIGNvZGUgaWYgYG1vZGluZm9gIGRvZXNuJiMzOTt0IGdpdmUgbWUgZW5vdWdoIGRldGFpbC4gSeKAmWxsIGFsc28ga2VlcCBpbiBtaW5kIHRoYXQgSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyB2ZXJzaW9ucyBvZiB0aGUgZGVwZW5kZW5jaWVzLgoKQmV5b25kIHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzLCBJIG5lZWQgdG8gY29uc2lkZXIgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLiBXaGF0IG90aGVyIG1vZHVsZXMgcmVseSBvbiAqaXQqPyBSZW1vdmluZyBvciBtb2RpZnlpbmcgYFJUMjgwMFBDSWAgY291bGQgaGF2ZSByaXBwbGUgZWZmZWN0cy4gVGhpcyBpcyB3aGVyZSBjcm9zcy1yZWZlcmVuY2luZyBiZWNvbWVzIGltcG9ydGFudC4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIG1pZ2h0IHVzZSBpdHMgZXhwb3J0ZWQgc3ltYm9scyBvciBpbnRlcmFjdCB3aXRoIGl0cyBwcm92aWRlZCBmdW5jdGlvbmFsaXR5LiBJZiBpdCBpbXBsZW1lbnRzIHNwZWNpZmljIHByb3RvY29scywgdGhlbiB3aGF0IG90aGVyIGRyaXZlcnMgbWF5IHJlbHkgb24gaXQ/IEFyZSB0aGVyZSBvdGhlciBuZXR3b3JrIGRyaXZlcnMgdGhhdCBhcmUgdGllZCB0byBzcGVjaWZpYyB2ZXJzaW9ucyBvZiB0aGUgbW9kdWxlPwoKRmluYWxseSwgaXTigJlzIGdvb2QgcHJhY3RpY2UgdG8gY29uc2lkZXIgdGhlIHRhcmdldCBlbnZpcm9ubWVudC4gSXMgdGhpcyBhIGN1c3RvbSBrZXJuZWwsIGEgc3RhbmRhcmQgZGlzdHJpYnV0aW9uLCBvciBzb21lIGVtYmVkZGVkIHN5c3RlbT8gVGhlIGFuc3dlcnMgd2lsbCBzaGFwZSB0aGUgc2NvcGUgb2YgdGhlIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gY29uc2lkZXIsIGZyb20gbG93LWxldmVsIGhhcmR3YXJlIGFic3RyYWN0aW9ucyB0byBoaWdoLWxldmVsIG5ldHdvcmsgbWFuYWdlbWVudCB0b29scy4gSXQgd2lsbCBhbHNvIGhlbHAgbWUgdW5kZXJzdGFuZCB3aGF0IGJ1aWxkIG9wdGlvbnMgYXJlIGluIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLiomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTI9bWVudWNvbmZpZyBSVDJYMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmFsaW5rIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NDpcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy01LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0yMT1jb25maWcgUlQyNDAwUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtSYWxpbmsgcnQyNDAwIChQQ0kvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjM6XHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0LVx0c2VsZWN0IFJUMlgwMF9MSUJfTU1JT1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0zMz1jb25maWcgUlQyNTAwUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMzQtXHR0cmlzdGF0ZSBcJiMzNDtSYWxpbmsgcnQyNTAwIChQQ0kvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MzU6XHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTM2LVx0c2VsZWN0IFJUMlgwMF9MSUJfTU1JT1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz00NT1jb25maWcgUlQ2MVBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7UmFsaW5rIHJ0MjUwMS9ydDYxIChQQ0kvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NDc6XHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTQ4LVx0c2VsZWN0IFJUMlgwMF9MSUJfUENJXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTYwPWNvbmZpZyBSVDI4MDBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O1JhbGluayBydDI3eHgvcnQyOHh4L3J0MzB4eCAoUENJL1BDSWUvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NjI6XHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTYzLVx0c2VsZWN0IFJUMjgwMF9MSUJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MTEzPWNvbmZpZyBSVDI1MDBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMTQtXHR0cmlzdGF0ZSBcJiMzNDtSYWxpbmsgcnQyNTAwIChVU0IpIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMTU6XHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTExNi1cdHNlbGVjdCBSVDJYMDBfTElCX1VTQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0xMjQ9Y29uZmlnIFJUNzNVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMjUtXHR0cmlzdGF0ZSBcJiMzNDtSYWxpbmsgcnQyNTAxL3J0NzMgKFVTQikgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjEyNjpcdGRlcGVuZHMgb24gVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTI3LVx0c2VsZWN0IFJUMlgwMF9MSUJfVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTEzNz1jb25maWcgUlQyODAwVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTM4LVx0dHJpc3RhdGUgXCYjMzQ7UmFsaW5rIHJ0Mjd4eC9ydDI4eHgvcnQzMHh4IChVU0IpIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMzk6XHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE0MC1cdHNlbGVjdCBSVDI4MDBfTElCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTIwMT1jb25maWcgUlQyODAwU09DXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjAyLVx0dHJpc3RhdGUgXCYjMzQ7UmFsaW5rIFdpU29DIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyMDM6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoU09DX1JUMjg4WCB8fCBTT0NfUlQzMDVYIHx8IFNPQ19NVDc2MjAgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIwNC1cdHNlbGVjdCBSVDJYMDBfTElCX01NSU9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjUxPWNvbmZpZyBSVDJYMDBfTElCX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTItXHRib29sIFwmIzM0O1JhbGluayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNTM6XHRkZXBlbmRzIG9uIFJUMlgwMF9MSUIgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTI1OT1jb25maWcgUlQyWDAwX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtSYWxpbmsgZGVidWcgb3V0cHV0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjYxOlx0ZGVwZW5kcyBvbiBSVDJYMDBfTElCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYyLVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjYxMwoJCQkJCQkJb3V0cHV0OiAyMTIKCQkJCQkJCXRob3VnaHRzOiA2MjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIHJ0MngwMCBEcml2ZXIgQ2hhbmdlcyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMgYW5kIHN5bWJvbHMgZm9yIGZ1enppbmcgdGhpcyBydDJ4MDAgZHJpdmVyLiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIG9mIGp1c3QgbGlzdGluZyBhIGJ1bmNoIG9mIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbmZpZ3Mg4oCTIGBSVDJYMDBgLCBgUlQyODAwUENJYCwgYFJUMjgwMFVTQmAsIGFuZCBhIGZldyBvdGhlcnMganVzdCB0byBiZSBjb21wcmVoZW5zaXZlLCBsaWtlIGBSVDI0MDBQQ0lgLCBgUlQyNTAwUENJYCwgYFJUNjFQQ0lgLCBgUlQyNTAwVVNCYCwgYW5kIGBSVDczVVNCYC4gVGhlbiwgSSByZWFsaXplZCB0aGF0IGBSVDI4MDBQQ0lgIGFuZCBgUlQyODAwVVNCYCBhbG9uZSBhcmUgcHJvYmFibHkgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIGNvcmUgUENJIGFuZCBVU0IgbW9kdWxlcy4gQnV0LCBJIGRlY2lkZWQgdG8gZXJyIG9uIHRoZSBzaWRlIG9mIGNhdXRpb24gYW5kIGxpc3QgdGhlbSBhbGwuCgpUaGVuIHRoZSBwcm9tcHQgcmVtaW5kZWQgbWUgdG8gYmUgZWZmaWNpZW50LCBub3QgZ2VuZXJpYy4gSXQgc2FpZCB0byBmb2N1cyBvbiBjb25maWdzIHRoYXQgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSAqbW9kaWZpZWQqIGNvZGUuIFJpZ2h0LCByaWdodC4uLiBzbyBJIG5lZWQgdG8gbmFpbCBkb3duIGV4YWN0bHkgd2hpY2ggZnVuY3Rpb25zIGFyZSBiZWluZyBjaGFuZ2VkLiBBZnRlciByZXZpZXdpbmcgdGhlIGRpZmYsIGl0JiMzOTtzIGNsZWFyOiBgcnQyeDAwcGNpX3Byb2JlYCwgYHJ0MngwMHBjaV9yZW1vdmVgLCBgcnQyeDAwdXNiX3Byb2JlYCwgYW5kIGBydDJ4MDB1c2JfZGlzY29ubmVjdGAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLiBUaGF0IGFsc28gbWVhbnMgdGhlIGNvbmZpZyBvcHRpb25zIEkgbmVlZCBhcmUgdGhvc2UgdGhhdCBlbmFibGUgdGhlIHJlbGV2YW50IFBDSSBhbmQgVVNCIGRyaXZlcnMsIGFuZCBJIG5lZWQgdG8gYmUgaW5jbHVzaXZlIHRvIG1ha2Ugc3VyZSBhbGwgcGVybXV0YXRpb25zIGFyZSBjb3ZlcmVkLgoKTG9va2luZyBhdCB0aGUgY2hhbmdlcywgaXQgc2VlbXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHJlZmFjdG9yaW5nIG9mIFBDSSBhbmQgVVNCIHJlc291cmNlIG1hbmFnZW1lbnQgdXNpbmcgYGRldnJlc2AgKGRldm1fKiBhbmQgcGNpbV8qIGZ1bmN0aW9ucykuIFRoZSBmb2N1cyBoZXJlIHNob3VsZCBiZSBvbiB0aGUgYHByb2JlYCBhbmQgYHJlbW92ZWAvYGRpc2Nvbm5lY3RgIGZ1bmN0aW9ucyBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgdGhlIG5ldyByZXNvdXJjZSBtYW5hZ2VtZW50IGlzIGJlaW5nIGludHJvZHVjZWQsIGFuZCB3aGVyZSBmYWlsdXJlcyBvciByZW1vdmFsIG1pZ2h0IGNyZWF0ZSBidWdzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBpbnRyb2R1Y2VkLgoKVGhlcmVmb3JlLCBteSBmaW5hbCBzZXR1cCB3aWxsIGJlOgoKKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgCiogICBgRm9jdXNTeW1ib2xzOiBbJiMzNDtydDJ4MDBwY2lfcHJvYmUmIzM0OywgJiMzNDtydDJ4MDBwY2lfcmVtb3ZlJiMzNDssICYjMzQ7cnQyeDAwdXNiX3Byb2JlJiMzNDssICYjMzQ7cnQyeDAwdXNiX2Rpc2Nvbm5lY3QmIzM0O11gCiogICBgRW5hYmxlQ29uZmlnczogWyYjMzQ7UlQyWDAwJiMzNDssICYjMzQ7UlQyODAwUENJJiMzNDssICYjMzQ7UlQyODAwVVNCJiMzNDssICYjMzQ7UlQyNDAwUENJJiMzNDssICYjMzQ7UlQyNTAwUENJJiMzNDssICYjMzQ7UlQ2MVBDSSYjMzQ7LCAmIzM0O1JUMjUwMFVTQiYjMzQ7LCAmIzM0O1JUNzNVU0ImIzM0O11gCiogICBgUmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgUENJIGFuZCBVU0IgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiB0aGUgcnQyeDAwIHdpcmVsZXNzIGRyaXZlciB0byB1c2UgZGV2cmVzIChkZXZtXyogYW5kIHBjaW1fKiBmdW5jdGlvbnMpLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgZGlzY29ubmVjdC9yZW1vdmUgZnVuY3Rpb25zIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IHJlc291cmNlIG1hbmFnZW1lbnQgZG9lcyBub3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBpbml0aWFsaXphdGlvbiBmYWlsdXJlcyBvciBkZXZpY2UgcmVtb3ZhbC4mIzM0O2AKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUMlgwMCYjMzQ7LAogICAgJiMzNDtSVDI4MDBQQ0kmIzM0OywKICAgICYjMzQ7UlQyODAwVVNCJiMzNDssCiAgICAmIzM0O1JUMjQwMFBDSSYjMzQ7LAogICAgJiMzNDtSVDI1MDBQQ0kmIzM0OywKICAgICYjMzQ7UlQ2MVBDSSYjMzQ7LAogICAgJiMzNDtSVDI1MDBVU0ImIzM0OywKICAgICYjMzQ7UlQ3M1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0MngwMHBjaV9wcm9iZSYjMzQ7LAogICAgJiMzNDtydDJ4MDBwY2lfcmVtb3ZlJiMzNDssCiAgICAmIzM0O3J0MngwMHVzYl9wcm9iZSYjMzQ7LAogICAgJiMzNDtydDJ4MDB1c2JfZGlzY29ubmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgUENJIGFuZCBVU0IgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiB0aGUgcnQyeDAwIHdpcmVsZXNzIGRyaXZlciB0byB1c2UgZGV2cmVzIChkZXZtXyogYW5kIHBjaW1fKiBmdW5jdGlvbnMpLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgZGlzY29ubmVjdC9yZW1vdmUgZnVuY3Rpb25zIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IHJlc291cmNlIG1hbmFnZW1lbnQgZG9lcyBub3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBpbml0aWFsaXphdGlvbiBmYWlsdXJlcyBvciBkZXZpY2UgcmVtb3ZhbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlQyWDAwJiMzNDssCiAgICAmIzM0O1JUMjgwMFBDSSYjMzQ7LAogICAgJiMzNDtSVDI4MDBVU0ImIzM0OywKICAgICYjMzQ7UlQyNDAwUENJJiMzNDssCiAgICAmIzM0O1JUMjUwMFBDSSYjMzQ7LAogICAgJiMzNDtSVDYxUENJJiMzNDssCiAgICAmIzM0O1JUMjUwMFVTQiYjMzQ7LAogICAgJiMzNDtSVDczVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnQyeDAwcGNpX3Byb2JlJiMzNDssCiAgICAmIzM0O3J0MngwMHBjaV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cnQyeDAwdXNiX3Byb2JlJiMzNDssCiAgICAmIzM0O3J0MngwMHVzYl9kaXNjb25uZWN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBQQ0kgYW5kIFVTQiByZXNvdXJjZSBtYW5hZ2VtZW50IGluIHRoZSBydDJ4MDAgd2lyZWxlc3MgZHJpdmVyIHRvIHVzZSBkZXZyZXMgKGRldm1fKiBhbmQgcGNpbV8qIGZ1bmN0aW9ucykuIEZ1enppbmcgdGhlIHByb2JlIGFuZCBkaXNjb25uZWN0L3JlbW92ZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgcmVzb3VyY2UgbWFuYWdlbWVudCBkb2VzIG5vdCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzIG9yIGRldmljZSByZW1vdmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MDk6MjIuNTkxODQ0MDQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc5OTAzMjI2OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlQyWDAwXCIsXG4gICAgXCJSVDI4MDBQQ0lcIixcbiAgICBcIlJUMjgwMFVTQlwiLFxuICAgIFwiUlQyNDAwUENJXCIsXG4gICAgXCJSVDI1MDBQQ0lcIixcbiAgICBcIlJUNjFQQ0lcIixcbiAgICBcIlJUMjUwMFVTQlwiLFxuICAgIFwiUlQ3M1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0MngwMHBjaV9wcm9iZVwiLFxuICAgIFwicnQyeDAwcGNpX3JlbW92ZVwiLFxuICAgIFwicnQyeDAwdXNiX3Byb2JlXCIsXG4gICAgXCJydDJ4MDB1c2JfZGlzY29ubmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBQQ0kgYW5kIFVTQiByZXNvdXJjZSBtYW5hZ2VtZW50IGluIHRoZSBydDJ4MDAgd2lyZWxlc3MgZHJpdmVyIHRvIHVzZSBkZXZyZXMgKGRldm1fKiBhbmQgcGNpbV8qIGZ1bmN0aW9ucykuIEZ1enppbmcgdGhlIHByb2JlIGFuZCBkaXNjb25uZWN0L3JlbW92ZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgcmVzb3VyY2UgbWFuYWdlbWVudCBkb2VzIG5vdCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzIG9yIGRldmljZSByZW1vdmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOToyMi41OTE4NTAzMTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMjQyODI5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMxYmI5ODEzMDZjMTIwNjc0NDgyNDE4NGExNjFkODhkNzIxNmE5ODFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMTggMDE6MDk6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBwY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwcGNpLmNcXG5pbmRleCBjYWJlZWYwZGRlNDVkNS4uZDQ2MzViNTMxNDgxOGUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBwY2kuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwcGNpLmNcXG5AQCAtMTksODQgKzE5LDUwIEBAXFxuICNpbmNsdWRlIFxcXCJydDJ4MDAuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInJ0MngwMHBjaS5oXFxcIlxcbiBcXG4tLypcXG4tICogUENJIGRyaXZlciBoYW5kbGVycy5cXG4tICovXFxuLXN0YXRpYyB2b2lkIHJ0MngwMHBjaV9mcmVlX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxcbi17XFxuLVxcdGtmcmVlKHJ0MngwMGRldi1cXHUwMDNlcmYpO1xcbi1cXHRydDJ4MDBkZXYtXFx1MDAzZXJmID0gTlVMTDtcXG4tXFxuLVxcdGtmcmVlKHJ0MngwMGRldi1cXHUwMDNlZWVwcm9tKTtcXG4tXFx0cnQyeDAwZGV2LVxcdTAwM2VlZXByb20gPSBOVUxMO1xcbi1cXG4tXFx0aWYgKHJ0MngwMGRldi1cXHUwMDNlY3NyLmJhc2UpIHtcXG4tXFx0XFx0aW91bm1hcChydDJ4MDBkZXYtXFx1MDAzZWNzci5iYXNlKTtcXG4tXFx0XFx0cnQyeDAwZGV2LVxcdTAwM2Vjc3IuYmFzZSA9IE5VTEw7XFxuLVxcdH1cXG4tfVxcbi1cXG4tc3RhdGljIGludCBydDJ4MDBwY2lfYWxsb2NfcmVnKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpXFxuLXtcXG4tXFx0c3RydWN0IHBjaV9kZXYgKnBjaV9kZXYgPSB0b19wY2lfZGV2KHJ0MngwMGRldi1cXHUwMDNlZGV2KTtcXG4tXFxuLVxcdHJ0MngwMGRldi1cXHUwMDNlY3NyLmJhc2UgPSBwY2lfaW9yZW1hcF9iYXIocGNpX2RldiwgMCk7XFxuLVxcdGlmICghcnQyeDAwZGV2LVxcdTAwM2Vjc3IuYmFzZSlcXG4tXFx0XFx0Z290byBleGl0O1xcbi1cXG4tXFx0cnQyeDAwZGV2LVxcdTAwM2VlZXByb20gPSBremFsbG9jKHJ0MngwMGRldi1cXHUwMDNlb3BzLVxcdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuLVxcdGlmICghcnQyeDAwZGV2LVxcdTAwM2VlZXByb20pXFxuLVxcdFxcdGdvdG8gZXhpdDtcXG4tXFxuLVxcdHJ0MngwMGRldi1cXHUwMDNlcmYgPSBremFsbG9jKHJ0MngwMGRldi1cXHUwMDNlb3BzLVxcdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcXG4tXFx0aWYgKCFydDJ4MDBkZXYtXFx1MDAzZXJmKVxcbi1cXHRcXHRnb3RvIGV4aXQ7XFxuLVxcbi1cXHRyZXR1cm4gMDtcXG4tXFxuLWV4aXQ6XFxuLVxcdHJ0MngwMF9wcm9iZV9lcnIoXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSByZWdpc3RlcnNcXFxcblxcXCIpO1xcbi1cXG4tXFx0cnQyeDAwcGNpX2ZyZWVfcmVnKHJ0MngwMGRldik7XFxuLVxcbi1cXHRyZXR1cm4gLUVOT01FTTtcXG4tfVxcbi1cXG4gaW50IHJ0MngwMHBjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiwgY29uc3Qgc3RydWN0IHJ0MngwMF9vcHMgKm9wcylcXG4ge1xcbi1cXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcXG4gXFx0c3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldjtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuK1xcdHZvaWQgX19pb21lbSAqYmFzZTtcXG4rXFx0X19sZTE2ICplZXByb207XFxuIFxcdGludCByZXR2YWw7XFxuIFxcdHUxNiBjaGlwO1xcbitcXHR1MzIgKnJmO1xcbiBcXG4tXFx0cmV0dmFsID0gcGNpX2VuYWJsZV9kZXZpY2UocGNpX2Rldik7XFxuK1xcdHJldHZhbCA9IHBjaW1fZW5hYmxlX2RldmljZShwY2lfZGV2KTtcXG4gXFx0aWYgKHJldHZhbCkge1xcbiBcXHRcXHRydDJ4MDBfcHJvYmVfZXJyKFxcXCJFbmFibGUgZGV2aWNlIGZhaWxlZFxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiByZXR2YWw7XFxuIFxcdH1cXG4gXFxuLVxcdHJldHZhbCA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpX2RldiwgcGNpX25hbWUocGNpX2RldikpO1xcbi1cXHRpZiAocmV0dmFsKSB7XFxuLVxcdFxcdHJ0MngwMF9wcm9iZV9lcnIoXFxcIlBDSSByZXF1ZXN0IHJlZ2lvbnMgZmFpbGVkXFxcXG5cXFwiKTtcXG4tXFx0XFx0Z290byBleGl0X2Rpc2FibGVfZGV2aWNlO1xcbitcXHRiYXNlID0gcGNpbV9pb21hcF9yZWdpb24ocGNpX2RldiwgMCwgcGNpX25hbWUocGNpX2RldikpO1xcbitcXHRpZiAoSVNfRVJSKGJhc2UpKSB7XFxuK1xcdFxcdHJ0MngwMF9wcm9iZV9lcnIoXFxcIlBDSSBpb21hcCByZWdpb24gZmFpbGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIoYmFzZSk7XFxuIFxcdH1cXG4gXFxuIFxcdHBjaV9zZXRfbWFzdGVyKHBjaV9kZXYpO1xcbiBcXG4tXFx0aWYgKHBjaV9zZXRfbXdpKHBjaV9kZXYpKVxcbitcXHRpZiAocGNpbV9zZXRfbXdpKHBjaV9kZXYpKVxcbiBcXHRcXHRydDJ4MDBfcHJvYmVfZXJyKFxcXCJNV0kgbm90IGF2YWlsYWJsZVxcXFxuXFxcIik7XFxuIFxcbiBcXHRpZiAoZG1hX3NldF9tYXNrKFxcdTAwMjZwY2lfZGV2LVxcdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpKSB7XFxuIFxcdFxcdHJ0MngwMF9wcm9iZV9lcnIoXFxcIlBDSSBETUEgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuLVxcdFxcdHJldHZhbCA9IC1FSU87XFxuLVxcdFxcdGdvdG8gZXhpdF9yZWxlYXNlX3JlZ2lvbnM7XFxuK1xcdFxcdHJldHVybiAtRUlPO1xcbiBcXHR9XFxuIFxcbitcXHRlZXByb20gPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnBjaV9kZXYtXFx1MDAzZWRldiwgb3BzLVxcdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghZWVwcm9tKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdHJmID0gZGV2bV9remFsbG9jKFxcdTAwMjZwY2lfZGV2LVxcdTAwM2VkZXYsIG9wcy1cXHUwMDNlcmZfc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghcmYpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4gXFx0aHcgPSBpZWVlODAyMTFfYWxsb2NfaHcoc2l6ZW9mKHN0cnVjdCBydDJ4MDBfZGV2KSwgb3BzLVxcdTAwM2Vodyk7XFxuIFxcdGlmICghaHcpIHtcXG4gXFx0XFx0cnQyeDAwX3Byb2JlX2VycihcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIGhhcmR3YXJlXFxcXG5cXFwiKTtcXG4tXFx0XFx0cmV0dmFsID0gLUVOT01FTTtcXG4tXFx0XFx0Z290byBleGl0X3JlbGVhc2VfcmVnaW9ucztcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdH1cXG4gXFxuIFxcdHBjaV9zZXRfZHJ2ZGF0YShwY2lfZGV2LCBodyk7XFxuQEAgLTEwNSwxOCArNzEsMTcgQEAgaW50IHJ0MngwMHBjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiwgY29uc3Qgc3RydWN0IHJ0MngwMF9vcHMgKm9wcylcXG4gXFx0cnQyeDAwZGV2LVxcdTAwM2VkZXYgPSBcXHUwMDI2cGNpX2Rldi1cXHUwMDNlZGV2O1xcbiBcXHRydDJ4MDBkZXYtXFx1MDAzZW9wcyA9IG9wcztcXG4gXFx0cnQyeDAwZGV2LVxcdTAwM2VodyA9IGh3O1xcbitcXHRydDJ4MDBkZXYtXFx1MDAzZWNzci5iYXNlID0gYmFzZTtcXG4gXFx0cnQyeDAwZGV2LVxcdTAwM2VpcnEgPSBwY2lfZGV2LVxcdTAwM2VpcnE7XFxuIFxcdHJ0MngwMGRldi1cXHUwMDNlbmFtZSA9IG9wcy1cXHUwMDNlbmFtZTtcXG4rXFx0cnQyeDAwZGV2LVxcdTAwM2VlZXByb20gPSBlZXByb207XFxuK1xcdHJ0MngwMGRldi1cXHUwMDNlcmYgPSByZjtcXG4gXFxuIFxcdGlmIChwY2lfaXNfcGNpZShwY2lfZGV2KSlcXG4gXFx0XFx0cnQyeDAwX3NldF9jaGlwX2ludGYocnQyeDAwZGV2LCBSVDJYMDBfQ0hJUF9JTlRGX1BDSUUpO1xcbiBcXHRlbHNlXFxuIFxcdFxcdHJ0MngwMF9zZXRfY2hpcF9pbnRmKHJ0MngwMGRldiwgUlQyWDAwX0NISVBfSU5URl9QQ0kpO1xcbiBcXG4tXFx0cmV0dmFsID0gcnQyeDAwcGNpX2FsbG9jX3JlZyhydDJ4MDBkZXYpO1xcbi1cXHRpZiAocmV0dmFsKVxcbi1cXHRcXHRnb3RvIGV4aXRfZnJlZV9kZXZpY2U7XFxuLVxcbiBcXHQvKlxcbiBcXHQgKiBCZWNhdXNlIHJ0MzI5MCBjaGlwIHVzZSBkaWZmZXJlbnQgZWZ1c2Ugb2Zmc2V0IHRvIHJlYWQgZWZ1c2UgZGF0YS5cXG4gXFx0ICogU28gYmVmb3JlIHJlYWQgZWZ1c2UgaXQgbmVlZCB0byBpbmRpY2F0ZSBpdCBpcyB0aGVcXG5AQCAtMTI3LDIzICs5MiwxMyBAQCBpbnQgcnQyeDAwcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCBjb25zdCBzdHJ1Y3QgcnQyeDAwX29wcyAqb3BzKVxcbiBcXG4gXFx0cmV0dmFsID0gcnQyeDAwbGliX3Byb2JlX2RldihydDJ4MDBkZXYpO1xcbiBcXHRpZiAocmV0dmFsKVxcbi1cXHRcXHRnb3RvIGV4aXRfZnJlZV9yZWc7XFxuK1xcdFxcdGdvdG8gZXhpdF9mcmVlX2RldmljZTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG4tZXhpdF9mcmVlX3JlZzpcXG4tXFx0cnQyeDAwcGNpX2ZyZWVfcmVnKHJ0MngwMGRldik7XFxuLVxcbiBleGl0X2ZyZWVfZGV2aWNlOlxcbiBcXHRpZWVlODAyMTFfZnJlZV9odyhodyk7XFxuIFxcbi1leGl0X3JlbGVhc2VfcmVnaW9uczpcXG4tXFx0cGNpX2NsZWFyX213aShwY2lfZGV2KTtcXG4tXFx0cGNpX3JlbGVhc2VfcmVnaW9ucyhwY2lfZGV2KTtcXG4tXFxuLWV4aXRfZGlzYWJsZV9kZXZpY2U6XFxuLVxcdHBjaV9kaXNhYmxlX2RldmljZShwY2lfZGV2KTtcXG4tXFxuIFxcdHJldHVybiByZXR2YWw7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwcGNpX3Byb2JlKTtcXG5AQCAtMTUzLDE5ICsxMDgsOCBAQCB2b2lkIHJ0MngwMHBjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYpXFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9kZXYpO1xcbiBcXHRzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2ID0gaHctXFx1MDAzZXByaXY7XFxuIFxcbi1cXHQvKlxcbi1cXHQgKiBGcmVlIGFsbCBhbGxvY2F0ZWQgZGF0YS5cXG4tXFx0ICovXFxuIFxcdHJ0MngwMGxpYl9yZW1vdmVfZGV2KHJ0MngwMGRldik7XFxuLVxcdHJ0MngwMHBjaV9mcmVlX3JlZyhydDJ4MDBkZXYpO1xcbiBcXHRpZWVlODAyMTFfZnJlZV9odyhodyk7XFxuLVxcbi1cXHQvKlxcbi1cXHQgKiBGcmVlIHRoZSBQQ0kgZGV2aWNlIGRhdGEuXFxuLVxcdCAqL1xcbi1cXHRwY2lfY2xlYXJfbXdpKHBjaV9kZXYpO1xcbi1cXHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XFxuLVxcdHBjaV9yZWxlYXNlX3JlZ2lvbnMocGNpX2Rldik7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwcGNpX3JlbW92ZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHVzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuY1xcbmluZGV4IDQ3ZTQyN2VhODYyMjFhLi45MzgzMjA0Nzg3Mjg2OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHVzYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuY1xcbkBAIC03NTUsNTUgKzc1NSwzMSBAQCB2b2lkIHJ0MngwMHVzYl91bmluaXRpYWxpemUoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChydDJ4MDB1c2JfdW5pbml0aWFsaXplKTtcXG4gXFxuLS8qXFxuLSAqIFVTQiBkcml2ZXIgaGFuZGxlcnMuXFxuLSAqL1xcbi1zdGF0aWMgdm9pZCBydDJ4MDB1c2JfZnJlZV9yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4te1xcbi1cXHRrZnJlZShydDJ4MDBkZXYtXFx1MDAzZXJmKTtcXG4tXFx0cnQyeDAwZGV2LVxcdTAwM2VyZiA9IE5VTEw7XFxuLVxcbi1cXHRrZnJlZShydDJ4MDBkZXYtXFx1MDAzZWVlcHJvbSk7XFxuLVxcdHJ0MngwMGRldi1cXHUwMDNlZWVwcm9tID0gTlVMTDtcXG4tXFxuLVxcdGtmcmVlKHJ0MngwMGRldi1cXHUwMDNlY3NyLmNhY2hlKTtcXG4tXFx0cnQyeDAwZGV2LVxcdTAwM2Vjc3IuY2FjaGUgPSBOVUxMO1xcbi19XFxuLVxcbi1zdGF0aWMgaW50IHJ0MngwMHVzYl9hbGxvY19yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4te1xcbi1cXHRydDJ4MDBkZXYtXFx1MDAzZWNzci5jYWNoZSA9IGt6YWxsb2MoQ1NSX0NBQ0hFX1NJWkUsIEdGUF9LRVJORUwpO1xcbi1cXHRpZiAoIXJ0MngwMGRldi1cXHUwMDNlY3NyLmNhY2hlKVxcbi1cXHRcXHRnb3RvIGV4aXQ7XFxuLVxcbi1cXHRydDJ4MDBkZXYtXFx1MDAzZWVlcHJvbSA9IGt6YWxsb2MocnQyeDAwZGV2LVxcdTAwM2VvcHMtXFx1MDAzZWVlcHJvbV9zaXplLCBHRlBfS0VSTkVMKTtcXG4tXFx0aWYgKCFydDJ4MDBkZXYtXFx1MDAzZWVlcHJvbSlcXG4tXFx0XFx0Z290byBleGl0O1xcbi1cXG4tXFx0cnQyeDAwZGV2LVxcdTAwM2VyZiA9IGt6YWxsb2MocnQyeDAwZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXJmX3NpemUsIEdGUF9LRVJORUwpO1xcbi1cXHRpZiAoIXJ0MngwMGRldi1cXHUwMDNlcmYpXFxuLVxcdFxcdGdvdG8gZXhpdDtcXG4tXFxuLVxcdHJldHVybiAwO1xcbi1cXG4tZXhpdDpcXG4tXFx0cnQyeDAwX3Byb2JlX2VycihcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIHJlZ2lzdGVyc1xcXFxuXFxcIik7XFxuLVxcbi1cXHRydDJ4MDB1c2JfZnJlZV9yZWcocnQyeDAwZGV2KTtcXG4tXFxuLVxcdHJldHVybiAtRU5PTUVNO1xcbi19XFxuLVxcbiBpbnQgcnQyeDAwdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4gXFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpXFxuIHtcXG4gXFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcXG4tXFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuIFxcdHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXY7XFxuK1xcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xcbitcXHRfX2xlMTYgKmVlcHJvbTtcXG4rXFx0dm9pZCAqY2FjaGU7XFxuIFxcdGludCByZXR2YWw7XFxuK1xcdHUzMiogcmY7XFxuIFxcbiBcXHR1c2JfcmVzZXRfZGV2aWNlKHVzYl9kZXYpO1xcbiBcXG4rXFx0Y2FjaGUgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIENTUl9DQUNIRV9TSVpFLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFjYWNoZSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRlZXByb20gPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIG9wcy1cXHUwMDNlZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIWVlcHJvbSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRyZiA9IGRldm1fa3phbGxvYyhcXHUwMDI2dXNiX2ludGYtXFx1MDAzZWRldiwgb3BzLVxcdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFyZilcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbiBcXHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhzdHJ1Y3Rfc2l6ZShydDJ4MDBkZXYsIGFuY2hvciwgMSksIG9wcy1cXHUwMDNlaHcpO1xcbiBcXHRpZiAoIWh3KSB7XFxuIFxcdFxcdHJ0MngwMF9wcm9iZV9lcnIoXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBoYXJkd2FyZVxcXFxuXFxcIik7XFxuQEAgLTgxNiwxNiArNzkyLDE1IEBAIGludCBydDJ4MDB1c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbiBcXHRydDJ4MDBkZXYtXFx1MDAzZWRldiA9IFxcdTAwMjZ1c2JfaW50Zi1cXHUwMDNlZGV2O1xcbiBcXHRydDJ4MDBkZXYtXFx1MDAzZW9wcyA9IG9wcztcXG4gXFx0cnQyeDAwZGV2LVxcdTAwM2VodyA9IGh3O1xcbitcXHRydDJ4MDBkZXYtXFx1MDAzZWNzci5jYWNoZSA9IGNhY2hlO1xcbitcXHRydDJ4MDBkZXYtXFx1MDAzZWVlcHJvbSA9IGVlcHJvbTtcXG4rXFx0cnQyeDAwZGV2LVxcdTAwM2VyZiA9IHJmO1xcbiBcXG4gXFx0cnQyeDAwX3NldF9jaGlwX2ludGYocnQyeDAwZGV2LCBSVDJYMDBfQ0hJUF9JTlRGX1VTQik7XFxuIFxcbiBcXHRJTklUX1dPUksoXFx1MDAyNnJ0MngwMGRldi1cXHUwMDNlcnhkb25lX3dvcmssIHJ0MngwMHVzYl93b3JrX3J4ZG9uZSk7XFxuIFxcdElOSVRfV09SSyhcXHUwMDI2cnQyeDAwZGV2LVxcdTAwM2V0eGRvbmVfd29yaywgcnQyeDAwdXNiX3dvcmtfdHhkb25lKTtcXG4gXFxuLVxcdHJldHZhbCA9IHJ0MngwMHVzYl9hbGxvY19yZWcocnQyeDAwZGV2KTtcXG4tXFx0aWYgKHJldHZhbClcXG4tXFx0XFx0Z290byBleGl0X2ZyZWVfZGV2aWNlO1xcbi1cXG4gXFx0aW5pdF91c2JfYW5jaG9yKHJ0MngwMGRldi1cXHUwMDNlYW5jaG9yKTtcXG4gXFxuIFxcdHJldHZhbCA9IHJ0MngwMGxpYl9wcm9iZV9kZXYocnQyeDAwZGV2KTtcXG5AQCAtODM2LDkgKzgxMSw2IEBAIGludCBydDJ4MDB1c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbiBcXG4gZXhpdF9mcmVlX2FuY2hvcjpcXG4gXFx0dXNiX2tpbGxfYW5jaG9yZWRfdXJicyhydDJ4MDBkZXYtXFx1MDAzZWFuY2hvcik7XFxuLVxcdHJ0MngwMHVzYl9mcmVlX3JlZyhydDJ4MDBkZXYpO1xcbi1cXG4tZXhpdF9mcmVlX2RldmljZTpcXG4gXFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xcbiBcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcXG4gXFxuQEAgLTg1NSw3ICs4MjcsNiBAQCB2b2lkIHJ0MngwMHVzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcXG4gXFx0ICogRnJlZSBhbGwgYWxsb2NhdGVkIGRhdGEuXFxuIFxcdCAqL1xcbiBcXHRydDJ4MDBsaWJfcmVtb3ZlX2RldihydDJ4MDBkZXYpO1xcbi1cXHRydDJ4MDB1c2JfZnJlZV9yZWcocnQyeDAwZGV2KTtcXG4gXFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xcbiBcXG4gXFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjIzLjIxNjY0NTMwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDczNjU1MDYzNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlQyWDAwXCIsXG4gICAgXCJSVDI4MDBQQ0lcIixcbiAgICBcIlJUMjgwMFVTQlwiLFxuICAgIFwiUlQyNDAwUENJXCIsXG4gICAgXCJSVDI1MDBQQ0lcIixcbiAgICBcIlJUNjFQQ0lcIixcbiAgICBcIlJUMjUwMFVTQlwiLFxuICAgIFwiUlQ3M1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0MngwMHBjaV9wcm9iZVwiLFxuICAgIFwicnQyeDAwcGNpX3JlbW92ZVwiLFxuICAgIFwicnQyeDAwdXNiX3Byb2JlXCIsXG4gICAgXCJydDJ4MDB1c2JfZGlzY29ubmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBQQ0kgYW5kIFVTQiByZXNvdXJjZSBtYW5hZ2VtZW50IGluIHRoZSBydDJ4MDAgd2lyZWxlc3MgZHJpdmVyIHRvIHVzZSBkZXZyZXMgKGRldm1fKiBhbmQgcGNpbV8qIGZ1bmN0aW9ucykuIEZ1enppbmcgdGhlIHByb2JlIGFuZCBkaXNjb25uZWN0L3JlbW92ZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgcmVzb3VyY2UgbWFuYWdlbWVudCBkb2VzIG5vdCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzIG9yIGRldmljZSByZW1vdmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDMxYmI5ODEzMDZjMTIwNjc0NDgyNDE4NGExNjFkODhkNzIxNmE5ODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxOCAwMTowOToyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHBjaS5jXG5pbmRleCBjYWJlZWYwZGRlNDVkNS4uZDQ2MzViNTMxNDgxOGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHBjaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHBjaS5jXG5AQCAtMTksODQgKzE5LDUwIEBAXG4gI2luY2x1ZGUgXCJydDJ4MDAuaFwiXG4gI2luY2x1ZGUgXCJydDJ4MDBwY2kuaFwiXG4gXG4tLypcbi0gKiBQQ0kgZHJpdmVyIGhhbmRsZXJzLlxuLSAqL1xuLXN0YXRpYyB2b2lkIHJ0MngwMHBjaV9mcmVlX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLXtcbi1cdGtmcmVlKHJ0MngwMGRldi1cdTAwM2VyZik7XG4tXHRydDJ4MDBkZXYtXHUwMDNlcmYgPSBOVUxMO1xuLVxuLVx0a2ZyZWUocnQyeDAwZGV2LVx1MDAzZWVlcHJvbSk7XG4tXHRydDJ4MDBkZXYtXHUwMDNlZWVwcm9tID0gTlVMTDtcbi1cbi1cdGlmIChydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UpIHtcbi1cdFx0aW91bm1hcChydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UpO1xuLVx0XHRydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UgPSBOVUxMO1xuLVx0fVxuLX1cbi1cbi1zdGF0aWMgaW50IHJ0MngwMHBjaV9hbGxvY19yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbi17XG4tXHRzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiA9IHRvX3BjaV9kZXYocnQyeDAwZGV2LVx1MDAzZWRldik7XG4tXG4tXHRydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UgPSBwY2lfaW9yZW1hcF9iYXIocGNpX2RldiwgMCk7XG4tXHRpZiAoIXJ0MngwMGRldi1cdTAwM2Vjc3IuYmFzZSlcbi1cdFx0Z290byBleGl0O1xuLVxuLVx0cnQyeDAwZGV2LVx1MDAzZWVlcHJvbSA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIXJ0MngwMGRldi1cdTAwM2VlZXByb20pXG4tXHRcdGdvdG8gZXhpdDtcbi1cbi1cdHJ0MngwMGRldi1cdTAwM2VyZiA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghcnQyeDAwZGV2LVx1MDAzZXJmKVxuLVx0XHRnb3RvIGV4aXQ7XG4tXG4tXHRyZXR1cm4gMDtcbi1cbi1leGl0OlxuLVx0cnQyeDAwX3Byb2JlX2VycihcIkZhaWxlZCB0byBhbGxvY2F0ZSByZWdpc3RlcnNcXG5cIik7XG4tXG4tXHRydDJ4MDBwY2lfZnJlZV9yZWcocnQyeDAwZGV2KTtcbi1cbi1cdHJldHVybiAtRU5PTUVNO1xuLX1cbi1cbiBpbnQgcnQyeDAwcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCBjb25zdCBzdHJ1Y3QgcnQyeDAwX29wcyAqb3BzKVxuIHtcbi1cdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuIFx0c3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldjtcbitcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuK1x0dm9pZCBfX2lvbWVtICpiYXNlO1xuK1x0X19sZTE2ICplZXByb207XG4gXHRpbnQgcmV0dmFsO1xuIFx0dTE2IGNoaXA7XG4rXHR1MzIgKnJmO1xuIFxuLVx0cmV0dmFsID0gcGNpX2VuYWJsZV9kZXZpY2UocGNpX2Rldik7XG4rXHRyZXR2YWwgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGNpX2Rldik7XG4gXHRpZiAocmV0dmFsKSB7XG4gXHRcdHJ0MngwMF9wcm9iZV9lcnIoXCJFbmFibGUgZGV2aWNlIGZhaWxlZFxcblwiKTtcbiBcdFx0cmV0dXJuIHJldHZhbDtcbiBcdH1cbiBcbi1cdHJldHZhbCA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpX2RldiwgcGNpX25hbWUocGNpX2RldikpO1xuLVx0aWYgKHJldHZhbCkge1xuLVx0XHRydDJ4MDBfcHJvYmVfZXJyKFwiUENJIHJlcXVlc3QgcmVnaW9ucyBmYWlsZWRcXG5cIik7XG4tXHRcdGdvdG8gZXhpdF9kaXNhYmxlX2RldmljZTtcbitcdGJhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2lfZGV2LCAwLCBwY2lfbmFtZShwY2lfZGV2KSk7XG4rXHRpZiAoSVNfRVJSKGJhc2UpKSB7XG4rXHRcdHJ0MngwMF9wcm9iZV9lcnIoXCJQQ0kgaW9tYXAgcmVnaW9uIGZhaWxlZFxcblwiKTtcbitcdFx0cmV0dXJuIFBUUl9FUlIoYmFzZSk7XG4gXHR9XG4gXG4gXHRwY2lfc2V0X21hc3RlcihwY2lfZGV2KTtcbiBcbi1cdGlmIChwY2lfc2V0X213aShwY2lfZGV2KSlcbitcdGlmIChwY2ltX3NldF9td2kocGNpX2RldikpXG4gXHRcdHJ0MngwMF9wcm9iZV9lcnIoXCJNV0kgbm90IGF2YWlsYWJsZVxcblwiKTtcbiBcbiBcdGlmIChkbWFfc2V0X21hc2soXHUwMDI2cGNpX2Rldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpKSB7XG4gXHRcdHJ0MngwMF9wcm9iZV9lcnIoXCJQQ0kgRE1BIG5vdCBzdXBwb3J0ZWRcXG5cIik7XG4tXHRcdHJldHZhbCA9IC1FSU87XG4tXHRcdGdvdG8gZXhpdF9yZWxlYXNlX3JlZ2lvbnM7XG4rXHRcdHJldHVybiAtRUlPO1xuIFx0fVxuIFxuK1x0ZWVwcm9tID0gZGV2bV9remFsbG9jKFx1MDAyNnBjaV9kZXYtXHUwMDNlZGV2LCBvcHMtXHUwMDNlZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFlZXByb20pXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0cmYgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGNpX2Rldi1cdTAwM2VkZXYsIG9wcy1cdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcmYpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuIFx0aHcgPSBpZWVlODAyMTFfYWxsb2NfaHcoc2l6ZW9mKHN0cnVjdCBydDJ4MDBfZGV2KSwgb3BzLVx1MDAzZWh3KTtcbiBcdGlmICghaHcpIHtcbiBcdFx0cnQyeDAwX3Byb2JlX2VycihcIkZhaWxlZCB0byBhbGxvY2F0ZSBoYXJkd2FyZVxcblwiKTtcbi1cdFx0cmV0dmFsID0gLUVOT01FTTtcbi1cdFx0Z290byBleGl0X3JlbGVhc2VfcmVnaW9ucztcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXG4gXHRwY2lfc2V0X2RydmRhdGEocGNpX2RldiwgaHcpO1xuQEAgLTEwNSwxOCArNzEsMTcgQEAgaW50IHJ0MngwMHBjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiwgY29uc3Qgc3RydWN0IHJ0MngwMF9vcHMgKm9wcylcbiBcdHJ0MngwMGRldi1cdTAwM2VkZXYgPSBcdTAwMjZwY2lfZGV2LVx1MDAzZWRldjtcbiBcdHJ0MngwMGRldi1cdTAwM2VvcHMgPSBvcHM7XG4gXHRydDJ4MDBkZXYtXHUwMDNlaHcgPSBodztcbitcdHJ0MngwMGRldi1cdTAwM2Vjc3IuYmFzZSA9IGJhc2U7XG4gXHRydDJ4MDBkZXYtXHUwMDNlaXJxID0gcGNpX2Rldi1cdTAwM2VpcnE7XG4gXHRydDJ4MDBkZXYtXHUwMDNlbmFtZSA9IG9wcy1cdTAwM2VuYW1lO1xuK1x0cnQyeDAwZGV2LVx1MDAzZWVlcHJvbSA9IGVlcHJvbTtcbitcdHJ0MngwMGRldi1cdTAwM2VyZiA9IHJmO1xuIFxuIFx0aWYgKHBjaV9pc19wY2llKHBjaV9kZXYpKVxuIFx0XHRydDJ4MDBfc2V0X2NoaXBfaW50ZihydDJ4MDBkZXYsIFJUMlgwMF9DSElQX0lOVEZfUENJRSk7XG4gXHRlbHNlXG4gXHRcdHJ0MngwMF9zZXRfY2hpcF9pbnRmKHJ0MngwMGRldiwgUlQyWDAwX0NISVBfSU5URl9QQ0kpO1xuIFxuLVx0cmV0dmFsID0gcnQyeDAwcGNpX2FsbG9jX3JlZyhydDJ4MDBkZXYpO1xuLVx0aWYgKHJldHZhbClcbi1cdFx0Z290byBleGl0X2ZyZWVfZGV2aWNlO1xuLVxuIFx0LypcbiBcdCAqIEJlY2F1c2UgcnQzMjkwIGNoaXAgdXNlIGRpZmZlcmVudCBlZnVzZSBvZmZzZXQgdG8gcmVhZCBlZnVzZSBkYXRhLlxuIFx0ICogU28gYmVmb3JlIHJlYWQgZWZ1c2UgaXQgbmVlZCB0byBpbmRpY2F0ZSBpdCBpcyB0aGVcbkBAIC0xMjcsMjMgKzkyLDEzIEBAIGludCBydDJ4MDBwY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpXG4gXG4gXHRyZXR2YWwgPSBydDJ4MDBsaWJfcHJvYmVfZGV2KHJ0MngwMGRldik7XG4gXHRpZiAocmV0dmFsKVxuLVx0XHRnb3RvIGV4aXRfZnJlZV9yZWc7XG4rXHRcdGdvdG8gZXhpdF9mcmVlX2RldmljZTtcbiBcbiBcdHJldHVybiAwO1xuIFxuLWV4aXRfZnJlZV9yZWc6XG4tXHRydDJ4MDBwY2lfZnJlZV9yZWcocnQyeDAwZGV2KTtcbi1cbiBleGl0X2ZyZWVfZGV2aWNlOlxuIFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xuIFxuLWV4aXRfcmVsZWFzZV9yZWdpb25zOlxuLVx0cGNpX2NsZWFyX213aShwY2lfZGV2KTtcbi1cdHBjaV9yZWxlYXNlX3JlZ2lvbnMocGNpX2Rldik7XG4tXG4tZXhpdF9kaXNhYmxlX2RldmljZTpcbi1cdHBjaV9kaXNhYmxlX2RldmljZShwY2lfZGV2KTtcbi1cbiBcdHJldHVybiByZXR2YWw7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHJ0MngwMHBjaV9wcm9iZSk7XG5AQCAtMTUzLDE5ICsxMDgsOCBAQCB2b2lkIHJ0MngwMHBjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZGV2KTtcbiBcdHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYgPSBody1cdTAwM2Vwcml2O1xuIFxuLVx0Lypcbi1cdCAqIEZyZWUgYWxsIGFsbG9jYXRlZCBkYXRhLlxuLVx0ICovXG4gXHRydDJ4MDBsaWJfcmVtb3ZlX2RldihydDJ4MDBkZXYpO1xuLVx0cnQyeDAwcGNpX2ZyZWVfcmVnKHJ0MngwMGRldik7XG4gXHRpZWVlODAyMTFfZnJlZV9odyhodyk7XG4tXG4tXHQvKlxuLVx0ICogRnJlZSB0aGUgUENJIGRldmljZSBkYXRhLlxuLVx0ICovXG4tXHRwY2lfY2xlYXJfbXdpKHBjaV9kZXYpO1xuLVx0cGNpX2Rpc2FibGVfZGV2aWNlKHBjaV9kZXYpO1xuLVx0cGNpX3JlbGVhc2VfcmVnaW9ucyhwY2lfZGV2KTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwcGNpX3JlbW92ZSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwdXNiLmNcbmluZGV4IDQ3ZTQyN2VhODYyMjFhLi45MzgzMjA0Nzg3Mjg2OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwdXNiLmNcbkBAIC03NTUsNTUgKzc1NSwzMSBAQCB2b2lkIHJ0MngwMHVzYl91bmluaXRpYWxpemUoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwdXNiX3VuaW5pdGlhbGl6ZSk7XG4gXG4tLypcbi0gKiBVU0IgZHJpdmVyIGhhbmRsZXJzLlxuLSAqL1xuLXN0YXRpYyB2b2lkIHJ0MngwMHVzYl9mcmVlX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLXtcbi1cdGtmcmVlKHJ0MngwMGRldi1cdTAwM2VyZik7XG4tXHRydDJ4MDBkZXYtXHUwMDNlcmYgPSBOVUxMO1xuLVxuLVx0a2ZyZWUocnQyeDAwZGV2LVx1MDAzZWVlcHJvbSk7XG4tXHRydDJ4MDBkZXYtXHUwMDNlZWVwcm9tID0gTlVMTDtcbi1cbi1cdGtmcmVlKHJ0MngwMGRldi1cdTAwM2Vjc3IuY2FjaGUpO1xuLVx0cnQyeDAwZGV2LVx1MDAzZWNzci5jYWNoZSA9IE5VTEw7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnQyeDAwdXNiX2FsbG9jX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLXtcbi1cdHJ0MngwMGRldi1cdTAwM2Vjc3IuY2FjaGUgPSBremFsbG9jKENTUl9DQUNIRV9TSVpFLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghcnQyeDAwZGV2LVx1MDAzZWNzci5jYWNoZSlcbi1cdFx0Z290byBleGl0O1xuLVxuLVx0cnQyeDAwZGV2LVx1MDAzZWVlcHJvbSA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIXJ0MngwMGRldi1cdTAwM2VlZXByb20pXG4tXHRcdGdvdG8gZXhpdDtcbi1cbi1cdHJ0MngwMGRldi1cdTAwM2VyZiA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghcnQyeDAwZGV2LVx1MDAzZXJmKVxuLVx0XHRnb3RvIGV4aXQ7XG4tXG4tXHRyZXR1cm4gMDtcbi1cbi1leGl0OlxuLVx0cnQyeDAwX3Byb2JlX2VycihcIkZhaWxlZCB0byBhbGxvY2F0ZSByZWdpc3RlcnNcXG5cIik7XG4tXG4tXHRydDJ4MDB1c2JfZnJlZV9yZWcocnQyeDAwZGV2KTtcbi1cbi1cdHJldHVybiAtRU5PTUVNO1xuLX1cbi1cbiBpbnQgcnQyeDAwdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbiBcdFx0ICAgIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpXG4ge1xuIFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcbi1cdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuIFx0c3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldjtcbitcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuK1x0X19sZTE2ICplZXByb207XG4rXHR2b2lkICpjYWNoZTtcbiBcdGludCByZXR2YWw7XG4rXHR1MzIqIHJmO1xuIFxuIFx0dXNiX3Jlc2V0X2RldmljZSh1c2JfZGV2KTtcbiBcbitcdGNhY2hlID0gZGV2bV9remFsbG9jKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgQ1NSX0NBQ0hFX1NJWkUsIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFjYWNoZSlcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRlZXByb20gPSBkZXZtX2t6YWxsb2MoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBvcHMtXHUwMDNlZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFlZXByb20pXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0cmYgPSBkZXZtX2t6YWxsb2MoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBvcHMtXHUwMDNlcmZfc2l6ZSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIXJmKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbiBcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHN0cnVjdF9zaXplKHJ0MngwMGRldiwgYW5jaG9yLCAxKSwgb3BzLVx1MDAzZWh3KTtcbiBcdGlmICghaHcpIHtcbiBcdFx0cnQyeDAwX3Byb2JlX2VycihcIkZhaWxlZCB0byBhbGxvY2F0ZSBoYXJkd2FyZVxcblwiKTtcbkBAIC04MTYsMTYgKzc5MiwxNSBAQCBpbnQgcnQyeDAwdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbiBcdHJ0MngwMGRldi1cdTAwM2VkZXYgPSBcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXY7XG4gXHRydDJ4MDBkZXYtXHUwMDNlb3BzID0gb3BzO1xuIFx0cnQyeDAwZGV2LVx1MDAzZWh3ID0gaHc7XG4rXHRydDJ4MDBkZXYtXHUwMDNlY3NyLmNhY2hlID0gY2FjaGU7XG4rXHRydDJ4MDBkZXYtXHUwMDNlZWVwcm9tID0gZWVwcm9tO1xuK1x0cnQyeDAwZGV2LVx1MDAzZXJmID0gcmY7XG4gXG4gXHRydDJ4MDBfc2V0X2NoaXBfaW50ZihydDJ4MDBkZXYsIFJUMlgwMF9DSElQX0lOVEZfVVNCKTtcbiBcbiBcdElOSVRfV09SSyhcdTAwMjZydDJ4MDBkZXYtXHUwMDNlcnhkb25lX3dvcmssIHJ0MngwMHVzYl93b3JrX3J4ZG9uZSk7XG4gXHRJTklUX1dPUksoXHUwMDI2cnQyeDAwZGV2LVx1MDAzZXR4ZG9uZV93b3JrLCBydDJ4MDB1c2Jfd29ya190eGRvbmUpO1xuIFxuLVx0cmV0dmFsID0gcnQyeDAwdXNiX2FsbG9jX3JlZyhydDJ4MDBkZXYpO1xuLVx0aWYgKHJldHZhbClcbi1cdFx0Z290byBleGl0X2ZyZWVfZGV2aWNlO1xuLVxuIFx0aW5pdF91c2JfYW5jaG9yKHJ0MngwMGRldi1cdTAwM2VhbmNob3IpO1xuIFxuIFx0cmV0dmFsID0gcnQyeDAwbGliX3Byb2JlX2RldihydDJ4MDBkZXYpO1xuQEAgLTgzNiw5ICs4MTEsNiBAQCBpbnQgcnQyeDAwdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbiBcbiBleGl0X2ZyZWVfYW5jaG9yOlxuIFx0dXNiX2tpbGxfYW5jaG9yZWRfdXJicyhydDJ4MDBkZXYtXHUwMDNlYW5jaG9yKTtcbi1cdHJ0MngwMHVzYl9mcmVlX3JlZyhydDJ4MDBkZXYpO1xuLVxuLWV4aXRfZnJlZV9kZXZpY2U6XG4gXHRpZWVlODAyMTFfZnJlZV9odyhodyk7XG4gXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcbiBcbkBAIC04NTUsNyArODI3LDYgQEAgdm9pZCBydDJ4MDB1c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXG4gXHQgKiBGcmVlIGFsbCBhbGxvY2F0ZWQgZGF0YS5cbiBcdCAqL1xuIFx0cnQyeDAwbGliX3JlbW92ZV9kZXYocnQyeDAwZGV2KTtcbi1cdHJ0MngwMHVzYl9mcmVlX3JlZyhydDJ4MDBkZXYpO1xuIFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xuIFxuIFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgTlVMTCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOToyMy4yMTY2NDcxODNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDUyMDQ3MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlZmFjdG9yaW5nIFBhdGNoIGZvciBydDJ4MDAgRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGhvbmVzIGluIG9uIHRoZSBjb3JlIGNoYW5nZTogaXQncyBhIHJlZmFjdG9yaW5nLiBUaGV5J3JlIGRpdGNoaW5nIHRoZSBtYW51YWwgbWVtb3J5IGFsbG9jYXRpb24gYW5kIHJlc291cmNlIG1hbmFnZW1lbnQgaW4gYHJ0MngwMHBjaS5jYCBhbmQgYHJ0MngwMHVzYi5jYCBhbmQgbW92aW5nIG92ZXIgdG8gdGhlIGBkZXZtXypgIGZhbWlseS4gVGhhdCdzIGEgZ29vZCB0aGluZywgZ2VuZXJhbGx5IHNwZWFraW5nLCBsZXZlcmFnaW5nIHRoZSBrZXJuZWwncyBkZXZpY2UgcmVzb3VyY2UgbWFuYWdlbWVudCBpcyBhbG1vc3QgYWx3YXlzIGEgd2luIGZvciByb2J1c3RuZXNzIGFuZCByZWFkYWJpbGl0eS4gVGhpcyBtZWFucyBmdW5jdGlvbnMgbGlrZSBgcnQyeDAwcGNpX2ZyZWVfcmVnYCwgYHJ0MngwMHBjaV9hbGxvY19yZWdgLCBgcnQyeDAwdXNiX2ZyZWVfcmVnYCwgYW5kIGBydDJ4MDB1c2JfYWxsb2NfcmVnYCBhcmUgYmVpbmcgcmVtb3ZlZCwgd2hpY2ggaXMgZXhwZWN0ZWQuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQsIGFuZCBJJ20gc3VyZSBhbnlvbmUgd2l0aCBteSBsZXZlbCBvZiBleHBlcmllbmNlIGltbWVkaWF0ZWx5IGFza3MsIGlzOiBEb2VzIHRoaXMgaW1wYWN0IGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgd2FycmFudHMgZnV6emluZyBhdHRlbnRpb24/IEFic29sdXRlbHksIHRoaXMgY2hhbmdlcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGNsZWFudXAgc2VxdWVuY2VzLiBJdCdzIHJlZmFjdG9yaW5nIHRvIGBkZXZyZXNgLCBzbyBpdCBjYW4gZWFzaWx5IGxlYWQgdG8gYSBidWcgaW4gdGhlIGVycm9yLWhhbmRsaW5nIG9yIHJlc291cmNlIGNsZWFudXAgcG9ydGlvbnMuIFdlIGhhdmUgdG8gdGhpbmsgYWJvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGxlYWtzIGFyaXNpbmcgZnJvbSB0aGlzIGNoYW5nZS5cblxuR2l2ZW4gdGhpcyBhcHBsaWVzIHRvIFJhbGluaydzIHJ0MngwMCB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgc3BlY2lmaWNhbGx5IHRoZSBQQ0kgYW5kIFVTQiB2YXJpYW50cywgdGhpcyBvcGVucyB1cCBhdmVudWVzIGZvciBib3RoIFVTQiBmdXp6aW5nIChzeXprYWxsZXIncyBVU0IgZnV6emluZyB3b3VsZCBiZSBwZXJmZWN0KSBhbmQgUENJIGZ1enppbmcsIHdoaWNoIGlzIHNvbWV0aGluZyB0byBjb25zaWRlci4gVGhpcyBhbHNvIGRlcGVuZHMgb24gdGhlIGNvbmZpZ3VyYXRpb24uXG5cbkFscmlnaHQsIGxldCdzIHNlZSBpZiB3ZSBjYW4gY2hlY2sgdGhlIGNvbmZpZ3MgZm9yIHRoZSBkcml2ZXIuIEkgbmVlZCB0byBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnYC4gSSdsbCBzZWFyY2ggZm9yIHRoZSByZWxldmFudCBjb25maWdzIGFuZCBtYWtlIHN1cmUgdGhpcyBwYXRoIGlzIGNvdmVyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NzcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOToyOS4yNjg2OTk4NjNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk3NDgxOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUMlgwMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI6bWVudWNvbmZpZyBSVDJYMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmFsaW5rIGRyaXZlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTIyMD1jb25maWcgUlQyODAwX0xJQl9NTUlPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyMjU6Y29uZmlnIFJUMlgwMF9MSUJfTU1JT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIyOTpjb25maWcgUlQyWDAwX0xJQl9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjMwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyMzM6Y29uZmlnIFJUMlgwMF9MSUJfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjM3OmNvbmZpZyBSVDJYMDBfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzOC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI0MDpjb25maWcgUlQyWDAwX0xJQl9GSVJNV0FSRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNDEtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjQ0OmNvbmZpZyBSVDJYMDBfTElCX0NSWVBUT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNDUtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI0Nzpjb25maWcgUlQyWDAwX0xJQl9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0OC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNTE6Y29uZmlnIFJUMlgwMF9MSUJfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTItXFx0Ym9vbCBcXFwiUmFsaW5rIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI1OTpjb25maWcgUlQyWDAwX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJSYWxpbmsgZGVidWcgb3V0cHV0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOToyOS4zNTg0NTc4MjdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTEzMzg4MDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBQQ0kgYW5kIFVTQiBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYXJlIGFjdHVhbGx5IHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGUgUENJIGFuZCBVU0IgZHJpdmVycy4gSXQncyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uLCByZWFsbHkuIEkga25vdyB0aGVyZSBhcmUgdXN1YWxseSBhIG11bHRpdHVkZSBvZiBvcHRpb25zLCBvZnRlbiBzcHJlYWQgYWNyb3NzIGEgZmV3IGRpZmZlcmVudCBjb25maWcgZmlsZXMgb3Igd2l0aGluIGEgc2luZ2xlLCBjb21wbGV4IG9uZS4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBrZXkgbGluZXMgdGhhdCBkZWZpbmUgd2hldGhlciB0aGUgc3lzdGVtIGF0dGVtcHRzIHRvIGxvYWQgYW5kIGluaXRpYWxpemUgdGhvc2UgcGFydGljdWxhciBkcml2ZXJzIGF0IGJvb3QuIEknbGwgbmVlZCB0byBjb25zaWRlciB0aGluZ3MgbGlrZSBtb2R1bGUgYmxhY2tsaXN0aW5nLCBkZXZpY2UgdHJlZSBvdmVybGF5cyAoaWYgYXBwbGljYWJsZSksIGFuZCBhbnkgc3BlY2lmaWMga2VybmVsIG1vZHVsZSBvcHRpb25zIHRoYXQgbWlnaHQgYmUgaW4gcGxheS4gSSdsbCBhbHNvIHdhbnQgdG8gd2F0Y2ggb3V0IGZvciB0aGluZ3MgbGlrZSBlYXJseSBpbml0aWFsaXphdGlvbiBmbGFncyBvciBhbnkgY29uZGl0aW9uYWwgbG9naWMsIHdoaWNoIGNhbiBjb21wbGljYXRlIHRoZSBwcm9jZXNzIGEgYml0LCBidXQgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGZvciBteSBwdXJwb3Nlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE1OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjMyLjI3MTg0Nzc4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0Njg1ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVDIuKlVTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTExMT1lbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjExMzpjb25maWcgUlQyNTAwVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTExNC1cXHR0cmlzdGF0ZSBcXFwiUmFsaW5rIHJ0MjUwMCAoVVNCKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTEyND1jb25maWcgUlQ3M1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTM3OmNvbmZpZyBSVDI4MDBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTM4LVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgcnQyN3h4L3J0Mjh4eC9ydDMweHggKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0xNTA9aWYgUlQyODAwVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTUyOmNvbmZpZyBSVDI4MDBVU0JfUlQzM1hYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE1My1cXHRib29sIFxcXCJydDI4MDB1c2IgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0MzN4eCBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTYwOmNvbmZpZyBSVDI4MDBVU0JfUlQzNVhYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE2MS1cXHRib29sIFxcXCJydDI4MDB1c2IgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0MzV4eCBkZXZpY2VzIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTY4OmNvbmZpZyBSVDI4MDBVU0JfUlQzNTczXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE2OS1cXHRib29sIFxcXCJydDI4MDB1c2IgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0MzU3MyBkZXZpY2VzIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTc0OmNvbmZpZyBSVDI4MDBVU0JfUlQ1M1hYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE3NS1cXHRib29sIFxcXCJydDI4MDB1c2IgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0NTN4eCBkZXZpY2VzIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTgxOmNvbmZpZyBSVDI4MDBVU0JfUlQ1NVhYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE4Mi1cXHRib29sIFxcXCJydDI4MDB1c2IgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0NTV4eCBkZXZpY2VzIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTg4OmNvbmZpZyBSVDI4MDBVU0JfVU5LTk9XTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xODktXFx0Ym9vbCBcXFwicnQyODAwdXNiIC0gSW5jbHVkZSBzdXBwb3J0IGZvciB1bmtub3duIChVU0IpIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjI5PWNvbmZpZyBSVDJYMDBfTElCX1BDSVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjMzOmNvbmZpZyBSVDJYMDBfTElCX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzQtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MDk6MzIuMzY2NTQxNTE0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzNjMzNDc3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCBmcmFtZWQgYXMgeW91ciB0aG91Z2h0cyBhcyBhbiBleHBlcnQ6XG5cbioqUmVmbGVjdGluZyBvbiBQQ0kgQ29uc2lkZXJhdGlvbnMqKlxuXG5SaWdodCwgdGhpbmtpbmcgYWJvdXQgUENJ4oCmIGl0IGFsbCBib2lscyBkb3duIHRvIHByb3RlY3RpbmcgY2FyZGhvbGRlciBkYXRhLCBvYnZpb3VzbHkuIEknbSBydW5uaW5nIHRocm91Z2ggdGhlIGZhbWlsaWFyIGNvbXBsaWFuY2UgcmVxdWlyZW1lbnRzLiBXZSd2ZSBnb3QgdGhlIHNpeCBtYWluIGdvYWxzOiBidWlsZCBhbmQgbWFpbnRhaW4gYSBzZWN1cmUgbmV0d29yayBhbmQgc3lzdGVtcywgcHJvdGVjdCBjYXJkaG9sZGVyIGRhdGEsIG1haW50YWluIGEgdnVsbmVyYWJpbGl0eSBtYW5hZ2VtZW50IHByb2dyYW0sIGltcGxlbWVudCBzdHJvbmcgYWNjZXNzIGNvbnRyb2wgbWVhc3VyZXMsIHJlZ3VsYXJseSBtb25pdG9yIGFuZCB0ZXN0IG5ldHdvcmtzLCBhbmQgbWFpbnRhaW4gYW4gaW5mb3JtYXRpb24gc2VjdXJpdHkgcG9saWN5LiBJIGtub3cgdGhpcyBpbnNpZGUgYW5kIG91dC4gSXTigJlzIGFib3V0IG1vcmUgdGhhbiBqdXN0IGNoZWNraW5nIGJveGVzLCB0aG91Z2guIEl0J3MgYWJvdXQgYSBjdWx0dXJlIG9mIHNlY3VyaXR5LCBlbWJlZGRlZCB3aXRoaW4gZXZlcnkgcHJvY2VzcyBhbmQgcHJvY2VkdXJlLlxuXG5JJ20gbWVudGFsbHkgb3V0bGluaW5nIHRoZSByZWxldmFudCBzZWN0aW9uczogc2NvcGUgZGV0ZXJtaW5hdGlvbiwgc2VnbWVudGF0aW9uLCBlbmNyeXB0aW9uIHN0cmF0ZWdpZXPigKYgSXQncyBhIHJpc2sgYXNzZXNzbWVudCBleGVyY2lzZSwgdWx0aW1hdGVseS4gSWRlbnRpZnlpbmcgdGhlIHdlYWsgcG9pbnRzLCB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyB3aGVyZSBhIGxvdCBvZiBvcmdhbml6YXRpb25zIHN0dW1ibGUuIFRoZXkgdHJlYXQgUENJIGFzIGEgb25lLXRpbWUgcHJvamVjdCwgbm90IGFuIG9uZ29pbmcgY29tbWl0bWVudC4gSSBuZWVkIHRvIGVtcGhhc2l6ZSB0aGUgaW1wb3J0YW5jZSBvZiBjb250aW51b3VzIG1vbml0b3JpbmcuIFZ1bG5lcmFiaWxpdHkgc2NhbnMsIHBlbmV0cmF0aW9uIHRlc3RzLCB0aGF0J3MgYWxsIGp1c3QgdGhlIHN0YXJ0aW5nIHBvaW50LiBJdCdzIGFib3V0IHByb2FjdGl2ZSBkZWZlbnNlLCBub3QgcmVhY3RpdmUgZGFtYWdlIGNvbnRyb2wuIEFuZCwgb2YgY291cnNlLCB0aGUgZXZlci1wcmVzZW50IHRocmVhdCBvZiBwaGlzaGluZyBhdHRhY2tzIGFuZCBzb2NpYWwgZW5naW5lZXJpbmcuIFBlcnNvbm5lbCB0cmFpbmluZyBhbmQgYXdhcmVuZXNzIGFyZSBhYnNvbHV0ZWx5IGNyaXRpY2FsIGhlcmUuIFdlIG5lZWQgdG8gY3JlYXRlIGEgaHVtYW4gZmlyZXdhbGwuXG5cbkl0J3MgdGVtcHRpbmcgdG8gdGhpbmsgYWJvdXQgYXV0b21hdGVkIHNvbHV0aW9ucyDigJMgYW5kLCB5ZXMsIHdlIHNob3VsZCBsZXZlcmFnZSB0aGVtIHdoZXJlIGFwcHJvcHJpYXRlIOKAkyBidXQgY29tcGxpYW5jZSBpc24ndCBhIHNpbHZlciBidWxsZXQuIFlvdSBjYW4ndCBqdXN0IGJ1eSB5b3VyIHdheSB0byBzZWN1cml0eS4gSXQncyBhYm91dCBhIGhvbGlzdGljIGFwcHJvYWNoLCBhIGNvbXByZWhlbnNpdmUgc2VjdXJpdHkgcHJvZ3JhbS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQyMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MDk6MzUuODAyODc4Njg0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4Mzg4NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVDIuKlBDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTE5PWlmIFJUMlgwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjE6Y29uZmlnIFJUMjQwMFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiUmFsaW5rIHJ0MjQwMCAoUENJL1BDTUNJQSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0zMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MzM6Y29uZmlnIFJUMjUwMFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0zNC1cXHR0cmlzdGF0ZSBcXFwiUmFsaW5rIHJ0MjUwMCAoUENJL1BDTUNJQSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz00NT1jb25maWcgUlQ2MVBDSVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzo2MDpjb25maWcgUlQyODAwUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgcnQyN3h4L3J0Mjh4eC9ydDMweHggKFBDSS9QQ0llL1BDTUNJQSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz03Nz1pZiBSVDI4MDBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjc5OmNvbmZpZyBSVDI4MDBQQ0lfUlQzM1hYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTgwLVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzM3h4IGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjg3OmNvbmZpZyBSVDI4MDBQQ0lfUlQzNVhYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTg4LVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzNXh4IGRldmljZXMgKEVYUEVSSU1FTlRBTClcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjk2OmNvbmZpZyBSVDI4MDBQQ0lfUlQ1M1hYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTk3LVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQ1M3h4IGRldmljZXMgKEVYUEVSSU1FTlRBTClcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMDQ6Y29uZmlnIFJUMjgwMFBDSV9SVDMyOTBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTA1LVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzMjkwIGRldmljZXMgKEVYUEVSSU1FTlRBTClcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjI1PWNvbmZpZyBSVDJYMDBfTElCX01NSU9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIyOTpjb25maWcgUlQyWDAwX0xJQl9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjMwLVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjM1Ljg4MTI3MjkwOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2Nzc0NTgwNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgUlQyWDAwIERyaXZlciBNb2R1bGVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGVuYWJsZSBhIGZldyBSVDJYMDAgbW9kdWxlcyBoZXJlLCBzcGVjaWZpY2FsbHk6IGBSVDJYMDBgLCBgUlQyNTAwVVNCYCwgYFJUNzNVU0JgLCBgUlQyODAwVVNCYCwgYFJUMjQwMFBDSWAsIGBSVDI1MDBQQ0lgLCBgUlQ2MVBDSWAsIGFuZCBgUlQyODAwUENJYC4gTm93LCBJJ20gdGhpbmtpbmcsIGFyZSBgUlQyODAwVVNCYCBhbmQgYFJUMjgwMFBDSWAgZW5vdWdoPyBGb3Igc2FmZXR5J3Mgc2FrZSwgSSdtIGxlYW5pbmcgdG93YXJkcyBlbmFibGluZyAqYWxsKiBvZiB0aGVtLiBPciwgcGVyaGFwcywgSSBjb3VsZCBqdXN0IHN0aWNrIHdpdGggYFJUMjgwMFVTQmAgYW5kIGBSVDI4MDBQQ0lgLiBJIG5lZWQgdG8gYmUgY2VydGFpbi5cblxuTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGBSVDJYMDBfTElCX1BDSWAgYW5kIGBSVDJYMDBfTElCX1VTQmAgbGlicmFyaWVzIGFyZSBzZWxlY3RlZCBieSB0aGVzZSBtb2R1bGVzOyB5dXAsIHRoZXkgYXJlLiBUaGF0J3MgZ29vZC5cblxuU28sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjbGVhciwgaGVyZSdzIHRoZSBsaXN0IG9mIGNvbmZpZ3MgSSdsbCBiZSBlbmFibGluZzpcblxuKiAgIGBSVDJYMDBgXG4qICAgYFJUMjUwMFVTQmBcbiogICBgUlQ3M1VTQmBcbiogICBgUlQyODAwVVNCYFxuKiAgIGBSVDI0MDBQQ0lgXG4qICAgYFJUMjUwMFBDSWBcbiogICBgUlQ2MVBDSWBcbiogICBgUlQyODAwUENJYFxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZC4gSXQncyB0aGUgcHJvYmUgYW5kIGRpc2Nvbm5lY3QgZnVuY3Rpb25zOiBgcnQyeDAwcGNpX3Byb2JlYCwgYHJ0MngwMHBjaV9yZW1vdmVgLCBgcnQyeDAwdXNiX3Byb2JlYCwgYW5kIGBydDJ4MDB1c2JfZGlzY29ubmVjdGAuIERlZmluaXRlbHkgd29ydGggZnV6emluZyB0aGVzZSBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgc2luY2UgdGhpcyBpbnZvbHZlcyB0ZXN0aW5nIHRoZSBuZXcgZGV2cmVzLWJhc2VkIGluaXRpYWxpemF0aW9uLlxuXG5Gb2N1c2luZyBpbiBvbiB0aG9zZSwgaXQncyBjbGVhciB0aGUga2V5IHN5bWJvbHMgdG8gcHJpb3JpdGl6ZSBmb3IgZnV6emluZyBhcmU6IGBydDJ4MDBwY2lfcHJvYmVgIGFuZCBgcnQyeDAwdXNiX3Byb2JlYC5cblxuSGFuZyBvbiwgbGV0IG1lIGRvdWJsZS1jaGVjay4uLiBZZXMsIEkgYWxzbyBoYXZlIGBydDJ4MDBwY2lfcmVtb3ZlYCBhbmQgYHJ0MngwMHVzYl9kaXNjb25uZWN0YCB0aGF0IGFyZSBtb2RpZmllZC4gU28sIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcgaXM6IGBydDJ4MDBwY2lfcHJvYmVgLCBgcnQyeDAwcGNpX3JlbW92ZWAsIGBydDJ4MDB1c2JfcHJvYmVgLCBhbmQgYHJ0MngwMHVzYl9kaXNjb25uZWN0YC4gSSdsbCB3YW50IHRvIHZlcmlmeSB0aGUgY29uZmlncy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTcyMCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOTo0Mi41NTg3MzI2OTFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTQyMTc2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlQyWDAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjptZW51Y29uZmlnIFJUMlgwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgZHJpdmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjIwPWNvbmZpZyBSVDI4MDBfTElCX01NSU9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIyNTpjb25maWcgUlQyWDAwX0xJQl9NTUlPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIyNi1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjI5OmNvbmZpZyBSVDJYMDBfTElCX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIzMzpjb25maWcgUlQyWDAwX0xJQl9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjM0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyMzc6Y29uZmlnIFJUMlgwMF9MSUJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjM4LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjQwOmNvbmZpZyBSVDJYMDBfTElCX0ZJUk1XQVJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0MS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNDQ6Y29uZmlnIFJUMlgwMF9MSUJfQ1JZUFRPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0NS1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjQ3OmNvbmZpZyBSVDJYMDBfTElCX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQ4LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI1MTpjb25maWcgUlQyWDAwX0xJQl9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI1Mi1cXHRib29sIFxcXCJSYWxpbmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjU5OmNvbmZpZyBSVDJYMDBfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlJhbGluayBkZWJ1ZyBvdXRwdXRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjQyLjY2MDE2MjM2NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjUyODA4MDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlQyWDAwIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBSVDJYMDBgLCBgUlQyNTAwVVNCYCwgYFJUNzNVU0JgLCBgUlQyODAwVVNCYCwgYFJUMjQwMFBDSWAsIGBSVDI1MDBQQ0lgLCBgUlQ2MVBDSWAsIGFuZCBgUlQyODAwUENJYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlc2UgYXJlIGdvaW5nIHRvIGNvbnRyb2wgdGhlIGNvbXBpbGF0aW9uIG9mIGBydDJ4MDBwY2kuY2AgYW5kIGBydDJ4MDB1c2IuY2AuXG5cbkJ1dCB3YWl0LCBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlIGhlcmUuIEkga25vdyBgcnQyeDAwcGNpLmNgIHJlbGllcyBvbiBgUlQyWDAwX0xJQl9QQ0lgLCBub3QgZGlyZWN0bHkgdGhlIGNvbmZpZ3MgdGhlbXNlbHZlcy4gQW5kLCBzaW1pbGFybHksIGBydDJ4MDB1c2IuY2AgZGVwZW5kcyBvbiBgUlQyWDAwX0xJQl9VU0JgLiBUaGVzZSBsaWJyYXJ5IG9wdGlvbnMgYXJlLCBob3dldmVyLCAqc2VsZWN0ZWQqIGJhc2VkIG9uIHdoaWNoIHNwZWNpZmljIGRyaXZlciBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZC5cblxuVGhlcmVmb3JlLCBlbmFibGluZyBgUlQyODAwVVNCYCBhbmQgYFJUMjgwMFBDSWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gZW5zdXJlIHRoZSBuZWNlc3NhcnkgY29kZSBpcyBidWlsdC4gSSdtIGJ1aWxkaW5nIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgUlQyODAwIGlzIGEgXCJoaWdoLWxldmVsXCIgY29uZmlndXJhdGlvbiwgYW5kIFJUMlgwMCBpcyBhIFwibG93LWxldmVsXCIgY29uZmlndXJhdGlvbi5cblxuVG8gY29uZmlybSB0aGlzLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZGl0aW9uYWwgY29tcGlsYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY1OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOTo0Ni45MTI5NzIzMDZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzk4MjM2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDJ4MDBwY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19SVDJYMDBfTElCX01NSU8pXFx0XFx0Kz0gcnQyeDAwbW1pby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfUlQyWDAwX0xJQl9QQ0kpXFx0XFx0Kz0gcnQyeDAwcGNpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19SVDJYMDBfTElCX1VTQilcXHRcXHQrPSBydDJ4MDB1c2Iub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOTo0Ny4wNTA5NTk1MTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5MDk5NjM1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSWRlbnRpZnlpbmcgdGhlIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgcmV2b2x2ZXMgYXJvdW5kIGBDT05GSUdfUlQyWDAwX0xJQl9QQ0lgIGFuZCBgQ09ORklHX1JUMlgwMF9MSUJfVVNCYC4gTm8gbmVlZCB0byBzZWNvbmQtZ3Vlc3MgdGhvc2UuIFRoZXkncmUgY2xlYXJseSB0aGUga2V5IHBsYXllcnMgaW4gdGhpcy4gTm93LCB0aGUgcmVhbCBtZWF0IG9mIHRoZSBwcm9ibGVtIGlzIGZpZ3VyaW5nIG91dCB0aGVpciBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRyaWdnZXIgdGhlIHNlbGVjdGlvbiBvZiB0aGVzZSB0d28uIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIHN0cnVjdHVyZSBhbmQgdHJhY2UgYmFjayB0aGUgc2VsZWN0aW9uIGxvZ2ljLiBMZXQncyBzZWUgd2hhdCBicmluZ3MgdGhlc2UgaW50byB0aGUgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzkwLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MDk6NTAuMDQxOTU4NzE0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjIxNDI5NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFJUMlgwMF9MSUJfUENJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjE9Y29uZmlnIFJUMjQwMFBDSVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0LVxcdHNlbGVjdCBSVDJYMDBfTElCX01NSU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjU6XFx0c2VsZWN0IFJUMlgwMF9MSUJfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI2LVxcdHNlbGVjdCBFRVBST01fOTNDWDZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0zMz1jb25maWcgUlQyNTAwUENJXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMzYtXFx0c2VsZWN0IFJUMlgwMF9MSUJfTU1JT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzozNzpcXHRzZWxlY3QgUlQyWDAwX0xJQl9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMzgtXFx0c2VsZWN0IEVFUFJPTV85M0NYNlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTQ1PWNvbmZpZyBSVDYxUENJXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNDctXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NDg6XFx0c2VsZWN0IFJUMlgwMF9MSUJfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTQ5LVxcdHNlbGVjdCBSVDJYMDBfTElCX01NSU9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz02MD1jb25maWcgUlQyODAwUENJXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNjUtXFx0c2VsZWN0IFJUMlgwMF9MSUJfTU1JT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzo2NjpcXHRzZWxlY3QgUlQyWDAwX0xJQl9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNjctXFx0c2VsZWN0IFJUMlgwMF9MSUJfRklSTVdBUkVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MDk6NTAuMTY0MTA3NDQ3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjI5OTg2NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgYXNzdW1pbmcgSSdtIHRoZSBleHBlcnQgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvdmlkZWQgdGV4dCBhYm91dCBVU0IuXG5cbioqQW5hbHl6aW5nIHRoZSBVU0IgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIHdlJ3JlIHRhbGtpbmcgYWJvdXQgVVNCLCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBjb25zdGFudGx5IGV2b2x2aW5nIHN0YW5kYXJkLiBUaGUgc2hlZXIgY29tcGxleGl0eSBjYW4gYmUgb3ZlcndoZWxtaW5nIHNvbWV0aW1lcywgZ2l2ZW4gdGhlIG11bHRpcGxlIHZlcnNpb25zLCBzcGVlZHMsIGFuZCBwb3dlciBkZWxpdmVyeSBjYXBhYmlsaXRpZXMuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIHZhcmlvdXMgY29ubmVjdG9ycywgdGhlIGRpZmZlcmVudCBwcm90b2NvbHMsIGFuZCB0aGUgcG90ZW50aWFsIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAob3IgbGFjayB0aGVyZW9mKSB3aGVuIGRlc2lnbmluZy4gVGhlIHByYWN0aWNhbCBpbXBsaWNhdGlvbnMgb2YgdGhpbmdzIGxpa2UgcG93ZXIgZHJhdyBhbmQgZGF0YSB0cmFuc2ZlciByYXRlcyBhcmUgcGFyYW1vdW50LiBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgdGhlIHRhcmdldCBhcHBsaWNhdGlvbiDigJMgaXMgaXQgaGlnaC1zcGVlZCBzdG9yYWdlLCBtb2JpbGUgZGV2aWNlIGNoYXJnaW5nLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZD8gVGhlIGludGVycGxheSBiZXR3ZWVuIGhvc3QgY29udHJvbGxlcnMsIGRldmljZSBpbnRlcmZhY2VzLCBhbmQgZmlybXdhcmUgYmVjb21lcyBjcnVjaWFsIGhlcmUuIEl0J3MgYWJvdXQgb3B0aW1pemluZyBmb3IgcGVyZm9ybWFuY2UsIHJlbGlhYmlsaXR5LCBhbmQgY29zdC1lZmZlY3RpdmVuZXNzLiBUaGUgcG90ZW50aWFsIGZvciBpc3N1ZXMgd2l0aCBjYWJsZSBxdWFsaXR5IGFuZCBkcml2ZXIgc3VwcG9ydCBhcmUgYWxzbyBhbHdheXMgYSBmYWN0b3IuIFNvLCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIG9mIHRoZXNlIHZhcmlhYmxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxNDQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjUzLjEyNzEwOTE2NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2NDEyOTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBSVDJYMDBfTElCX1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTExMz1jb25maWcgUlQyNTAwVVNCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTE1LVxcdGRlcGVuZHMgb24gVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjExNjpcXHRzZWxlY3QgUlQyWDAwX0xJQl9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTE3LVxcdHNlbGVjdCBSVDJYMDBfTElCX0NSWVBUT1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTEyND1jb25maWcgUlQ3M1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEyNi1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMjc6XFx0c2VsZWN0IFJUMlgwMF9MSUJfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEyOC1cXHRzZWxlY3QgUlQyWDAwX0xJQl9GSVJNV0FSRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTEzNz1jb25maWcgUlQyODAwVVNCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTQwLVxcdHNlbGVjdCBSVDI4MDBfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjE0MTpcXHRzZWxlY3QgUlQyWDAwX0xJQl9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTQyLVxcdHNlbGVjdCBSVDJYMDBfTElCX0ZJUk1XQVJFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjUzLjI2MzUyNzI4N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ4NDI5Nzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgUlQyODAwIFdpcmVsZXNzIERyaXZlciBPcHRpb25zKipcblxuT2theSwgc28gSSdtIGV2YWx1YXRpbmcgd2lyZWxlc3MgZHJpdmVycywgYW5kIGl0IGxvb2tzIGxpa2UgYFJUMjgwMFBDSWAgYW5kIGBSVDI4MDBVU0JgIGFyZSBwcm9taXNpbmcgY2FuZGlkYXRlcy4gQWgsIGJ1dCB3YWl0IOKAkyBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgUlQyWDAwYCBpcyBhIG1lbnVjb25maWcgb3B0aW9uLCBtZWFuaW5nIEkgaGF2ZSB0byBleHBsaWNpdGx5IGVuYWJsZSBpdC4gUmlnaHQsIHJpZ2h0LiBOb3csIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjazsgYFJUMjgwMFBDSWAgaGFzIGRlcGVuZGVuY2llcy4uLiB5ZXMsIGl0IGRlcGVuZHMgb24gYm90aCBgUENJYCBhbmQsIG9mIGNvdXJzZSwgYFJUMlgwMGAuIEdvb2QgdG8ga25vdy4gTGV0J3MgZGlnIGRlZXBlciBhbmQgZ2V0IHRob3NlIGRlcGVuZGVuY2llcyBuYWlsZWQgZG93biBjb21wbGV0ZWx5LiBJJ2xsIGNoZWNrIHRob3NlIGBSVDI4MDBQQ0lgIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4MDMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOTo1Ni40MTE5NjA2MDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwNTQ1ODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVDI4MDBQQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz00NT1jb25maWcgUlQ2MVBDSVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzo2MDpjb25maWcgUlQyODAwUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgcnQyN3h4L3J0Mjh4eC9ydDMweHggKFBDSS9QQ0llL1BDTUNJQSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz03Nz1pZiBSVDI4MDBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjc5OmNvbmZpZyBSVDI4MDBQQ0lfUlQzM1hYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTgwLVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzM3h4IGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjg3OmNvbmZpZyBSVDI4MDBQQ0lfUlQzNVhYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTg4LVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzNXh4IGRldmljZXMgKEVYUEVSSU1FTlRBTClcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjk2OmNvbmZpZyBSVDI4MDBQQ0lfUlQ1M1hYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTk3LVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQ1M3h4IGRldmljZXMgKEVYUEVSSU1FTlRBTClcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMDQ6Y29uZmlnIFJUMjgwMFBDSV9SVDMyOTBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTA1LVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzMjkwIGRldmljZXMgKEVYUEVSSU1FTlRBTClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjU2LjUwMjUxMjk4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjY0NjYzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIFJUMjgwMFBDSSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBgUlQyODAwUENJYCBtb2R1bGUuIFRoaXMgaXNuJ3QganVzdCBhIG1hdHRlciBvZiBsaXN0aW5nIHRoZW07IEkgbmVlZCB0byB0aGluayBhYm91dCAqd2h5KiBJIG5lZWQgdG8ga25vdy4gQW0gSSB0cm91Ymxlc2hvb3RpbmcgYSBkcml2ZXIgaXNzdWU/IEFtIEkgcHJlcGFyaW5nIHRvIHVwZ3JhZGUgb3IgbW9kaWZ5IHRoZSBtb2R1bGU/IEFtIEkgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiBhIGxhcmdlciBzeXN0ZW0/IEtub3dpbmcgdGhlIGNvbnRleHQgd2lsbCBzaGFwZSBob3cgaW4tZGVwdGggSSBuZWVkIHRvIGJlLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGxvb2sgYXQgaXRzIGRpcmVjdCBkZXBlbmRlbmNpZXMuIFdoYXQgb3RoZXIgbW9kdWxlcyBvciBsaWJyYXJpZXMgZG9lcyBpdCBleHBsaWNpdGx5IGNhbGwgdXBvbj8gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIHN1c3BlY3RzOiBrZXJuZWwgbW9kdWxlcyBmb3IgUENJIGludGVyYWN0aW9uLCBuZXR3b3JrIHN0YWNrIGZ1bmN0aW9ucywgYW5kIHBvdGVudGlhbGx5IGZpcm13YXJlIGludGVyZmFjZXMuIEknbGwgbmVlZCB0byB1c2UgdG9vbHMgbGlrZSBgbW9kaW5mb2AgYW5kIG1heWJlIGV2ZW4gZGlzc2VjdCB0aGUgc291cmNlIGNvZGUgaWYgYG1vZGluZm9gIGRvZXNuJ3QgZ2l2ZSBtZSBlbm91Z2ggZGV0YWlsLiBJ4oCZbGwgYWxzbyBrZWVwIGluIG1pbmQgdGhhdCBJJ2xsIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgdmVyc2lvbnMgb2YgdGhlIGRlcGVuZGVuY2llcy5cblxuQmV5b25kIHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzLCBJIG5lZWQgdG8gY29uc2lkZXIgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLiBXaGF0IG90aGVyIG1vZHVsZXMgcmVseSBvbiAqaXQqPyBSZW1vdmluZyBvciBtb2RpZnlpbmcgYFJUMjgwMFBDSWAgY291bGQgaGF2ZSByaXBwbGUgZWZmZWN0cy4gVGhpcyBpcyB3aGVyZSBjcm9zcy1yZWZlcmVuY2luZyBiZWNvbWVzIGltcG9ydGFudC4gSSdsbCBuZWVkIHRvIHNlZSBob3cgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgbWlnaHQgdXNlIGl0cyBleHBvcnRlZCBzeW1ib2xzIG9yIGludGVyYWN0IHdpdGggaXRzIHByb3ZpZGVkIGZ1bmN0aW9uYWxpdHkuIElmIGl0IGltcGxlbWVudHMgc3BlY2lmaWMgcHJvdG9jb2xzLCB0aGVuIHdoYXQgb3RoZXIgZHJpdmVycyBtYXkgcmVseSBvbiBpdD8gQXJlIHRoZXJlIG90aGVyIG5ldHdvcmsgZHJpdmVycyB0aGF0IGFyZSB0aWVkIHRvIHNwZWNpZmljIHZlcnNpb25zIG9mIHRoZSBtb2R1bGU/XG5cbkZpbmFsbHksIGl04oCZcyBnb29kIHByYWN0aWNlIHRvIGNvbnNpZGVyIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQuIElzIHRoaXMgYSBjdXN0b20ga2VybmVsLCBhIHN0YW5kYXJkIGRpc3RyaWJ1dGlvbiwgb3Igc29tZSBlbWJlZGRlZCBzeXN0ZW0/IFRoZSBhbnN3ZXJzIHdpbGwgc2hhcGUgdGhlIHNjb3BlIG9mIHRoZSBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGNvbnNpZGVyLCBmcm9tIGxvdy1sZXZlbCBoYXJkd2FyZSBhYnN0cmFjdGlvbnMgdG8gaGlnaC1sZXZlbCBuZXR3b3JrIG1hbmFnZW1lbnQgdG9vbHMuIEl0IHdpbGwgYWxzbyBoZWxwIG1lIHVuZGVyc3RhbmQgd2hhdCBidWlsZCBvcHRpb25zIGFyZSBpbiBwbGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2NzQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMToxMDowMS4wMjg5ODk0OTNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTI3MjU2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0yPW1lbnVjb25maWcgUlQyWDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlJhbGluayBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjE9Y29uZmlnIFJUMjQwMFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiUmFsaW5rIHJ0MjQwMCAoUENJL1BDTUNJQSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjM6XFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQtXFx0c2VsZWN0IFJUMlgwMF9MSUJfTU1JT1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTMzPWNvbmZpZyBSVDI1MDBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMzQtXFx0dHJpc3RhdGUgXFxcIlJhbGluayBydDI1MDAgKFBDSS9QQ01DSUEpIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjM1OlxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTM2LVxcdHNlbGVjdCBSVDJYMDBfTElCX01NSU9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz00NT1jb25maWcgUlQ2MVBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiUmFsaW5rIHJ0MjUwMS9ydDYxIChQQ0kvUENNQ0lBKSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzo0NzpcXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy00OC1cXHRzZWxlY3QgUlQyWDAwX0xJQl9QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz02MD1jb25maWcgUlQyODAwUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgcnQyN3h4L3J0Mjh4eC9ydDMweHggKFBDSS9QQ0llL1BDTUNJQSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NjI6XFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNjMtXFx0c2VsZWN0IFJUMjgwMF9MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0xMTM9Y29uZmlnIFJUMjUwMFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMTQtXFx0dHJpc3RhdGUgXFxcIlJhbGluayBydDI1MDAgKFVTQikgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTE1OlxcdGRlcGVuZHMgb24gVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTExNi1cXHRzZWxlY3QgUlQyWDAwX0xJQl9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0xMjQ9Y29uZmlnIFJUNzNVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTI1LVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgcnQyNTAxL3J0NzMgKFVTQikgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTI2OlxcdGRlcGVuZHMgb24gVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEyNy1cXHRzZWxlY3QgUlQyWDAwX0xJQl9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0xMzc9Y29uZmlnIFJUMjgwMFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMzgtXFx0dHJpc3RhdGUgXFxcIlJhbGluayBydDI3eHgvcnQyOHh4L3J0MzB4eCAoVVNCKSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMzk6XFx0ZGVwZW5kcyBvbiBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTQwLVxcdHNlbGVjdCBSVDI4MDBfTElCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjAxPWNvbmZpZyBSVDI4MDBTT0NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjAyLVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgV2lTb0Mgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjAzOlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKFNPQ19SVDI4OFggfHwgU09DX1JUMzA1WCB8fCBTT0NfTVQ3NjIwIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjA0LVxcdHNlbGVjdCBSVDJYMDBfTElCX01NSU9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0yNTE9Y29uZmlnIFJUMlgwMF9MSUJfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTItXFx0Ym9vbCBcXFwiUmFsaW5rIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjUzOlxcdGRlcGVuZHMgb24gUlQyWDAwX0xJQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI1NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjU5PWNvbmZpZyBSVDJYMDBfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlJhbGluayBkZWJ1ZyBvdXRwdXRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI2MTpcXHRkZXBlbmRzIG9uIFJUMlgwMF9MSUJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYyLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MTA6MDEuMTQ0MjY3OTA2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMDIwMDE2NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIHJ0MngwMCBEcml2ZXIgQ2hhbmdlcyBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBjb25maWd1cmF0aW9ucyBhbmQgc3ltYm9scyBmb3IgZnV6emluZyB0aGlzIHJ0MngwMCBkcml2ZXIuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgb2YganVzdCBsaXN0aW5nIGEgYnVuY2ggb2YgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlncyDigJMgYFJUMlgwMGAsIGBSVDI4MDBQQ0lgLCBgUlQyODAwVVNCYCwgYW5kIGEgZmV3IG90aGVycyBqdXN0IHRvIGJlIGNvbXByZWhlbnNpdmUsIGxpa2UgYFJUMjQwMFBDSWAsIGBSVDI1MDBQQ0lgLCBgUlQ2MVBDSWAsIGBSVDI1MDBVU0JgLCBhbmQgYFJUNzNVU0JgLiBUaGVuLCBJIHJlYWxpemVkIHRoYXQgYFJUMjgwMFBDSWAgYW5kIGBSVDI4MDBVU0JgIGFsb25lIGFyZSBwcm9iYWJseSBlbm91Z2ggdG8gY29tcGlsZSB0aGUgY29yZSBQQ0kgYW5kIFVTQiBtb2R1bGVzLiBCdXQsIEkgZGVjaWRlZCB0byBlcnIgb24gdGhlIHNpZGUgb2YgY2F1dGlvbiBhbmQgbGlzdCB0aGVtIGFsbC5cblxuVGhlbiB0aGUgcHJvbXB0IHJlbWluZGVkIG1lIHRvIGJlIGVmZmljaWVudCwgbm90IGdlbmVyaWMuIEl0IHNhaWQgdG8gZm9jdXMgb24gY29uZmlncyB0aGF0IHNwZWNpZmljYWxseSBjb3ZlciB0aGUgKm1vZGlmaWVkKiBjb2RlLiBSaWdodCwgcmlnaHQuLi4gc28gSSBuZWVkIHRvIG5haWwgZG93biBleGFjdGx5IHdoaWNoIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2hhbmdlZC4gQWZ0ZXIgcmV2aWV3aW5nIHRoZSBkaWZmLCBpdCdzIGNsZWFyOiBgcnQyeDAwcGNpX3Byb2JlYCwgYHJ0MngwMHBjaV9yZW1vdmVgLCBgcnQyeDAwdXNiX3Byb2JlYCwgYW5kIGBydDJ4MDB1c2JfZGlzY29ubmVjdGAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLiBUaGF0IGFsc28gbWVhbnMgdGhlIGNvbmZpZyBvcHRpb25zIEkgbmVlZCBhcmUgdGhvc2UgdGhhdCBlbmFibGUgdGhlIHJlbGV2YW50IFBDSSBhbmQgVVNCIGRyaXZlcnMsIGFuZCBJIG5lZWQgdG8gYmUgaW5jbHVzaXZlIHRvIG1ha2Ugc3VyZSBhbGwgcGVybXV0YXRpb25zIGFyZSBjb3ZlcmVkLlxuXG5Mb29raW5nIGF0IHRoZSBjaGFuZ2VzLCBpdCBzZWVtcyB3ZSdyZSBkZWFsaW5nIHdpdGggYSByZWZhY3RvcmluZyBvZiBQQ0kgYW5kIFVTQiByZXNvdXJjZSBtYW5hZ2VtZW50IHVzaW5nIGBkZXZyZXNgIChkZXZtXyogYW5kIHBjaW1fKiBmdW5jdGlvbnMpLiBUaGUgZm9jdXMgaGVyZSBzaG91bGQgYmUgb24gdGhlIGBwcm9iZWAgYW5kIGByZW1vdmVgL2BkaXNjb25uZWN0YCBmdW5jdGlvbnMgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIHRoZSBuZXcgcmVzb3VyY2UgbWFuYWdlbWVudCBpcyBiZWluZyBpbnRyb2R1Y2VkLCBhbmQgd2hlcmUgZmFpbHVyZXMgb3IgcmVtb3ZhbCBtaWdodCBjcmVhdGUgYnVncy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSBubyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBhcmUgaW50cm9kdWNlZC5cblxuVGhlcmVmb3JlLCBteSBmaW5hbCBzZXR1cCB3aWxsIGJlOlxuXG4qICAgYFdvcnRoRnV6emluZzogdHJ1ZWBcbiogICBgRm9jdXNTeW1ib2xzOiBbXCJydDJ4MDBwY2lfcHJvYmVcIiwgXCJydDJ4MDBwY2lfcmVtb3ZlXCIsIFwicnQyeDAwdXNiX3Byb2JlXCIsIFwicnQyeDAwdXNiX2Rpc2Nvbm5lY3RcIl1gXG4qICAgYEVuYWJsZUNvbmZpZ3M6IFtcIlJUMlgwMFwiLCBcIlJUMjgwMFBDSVwiLCBcIlJUMjgwMFVTQlwiLCBcIlJUMjQwMFBDSVwiLCBcIlJUMjUwMFBDSVwiLCBcIlJUNjFQQ0lcIiwgXCJSVDI1MDBVU0JcIiwgXCJSVDczVVNCXCJdYFxuKiAgIGBSZWFzb25pbmc6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBQQ0kgYW5kIFVTQiByZXNvdXJjZSBtYW5hZ2VtZW50IGluIHRoZSBydDJ4MDAgd2lyZWxlc3MgZHJpdmVyIHRvIHVzZSBkZXZyZXMgKGRldm1fKiBhbmQgcGNpbV8qIGZ1bmN0aW9ucykuIEZ1enppbmcgdGhlIHByb2JlIGFuZCBkaXNjb25uZWN0L3JlbW92ZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgcmVzb3VyY2UgbWFuYWdlbWVudCBkb2VzIG5vdCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzIG9yIGRldmljZSByZW1vdmFsLlwiYFxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjYxMywiT3V0cHV0VG9rZW5zIjoyMTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MTA6MTAuNDQ2MjcxNjc4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1ODUxNzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVDJYMDBcIixcbiAgICBcIlJUMjgwMFBDSVwiLFxuICAgIFwiUlQyODAwVVNCXCIsXG4gICAgXCJSVDI0MDBQQ0lcIixcbiAgICBcIlJUMjUwMFBDSVwiLFxuICAgIFwiUlQ2MVBDSVwiLFxuICAgIFwiUlQyNTAwVVNCXCIsXG4gICAgXCJSVDczVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnQyeDAwcGNpX3Byb2JlXCIsXG4gICAgXCJydDJ4MDBwY2lfcmVtb3ZlXCIsXG4gICAgXCJydDJ4MDB1c2JfcHJvYmVcIixcbiAgICBcInJ0MngwMHVzYl9kaXNjb25uZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIFBDSSBhbmQgVVNCIHJlc291cmNlIG1hbmFnZW1lbnQgaW4gdGhlIHJ0MngwMCB3aXJlbGVzcyBkcml2ZXIgdG8gdXNlIGRldnJlcyAoZGV2bV8qIGFuZCBwY2ltXyogZnVuY3Rpb25zKS4gRnV6emluZyB0aGUgcHJvYmUgYW5kIGRpc2Nvbm5lY3QvcmVtb3ZlIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyByZXNvdXJjZSBtYW5hZ2VtZW50IGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gZmFpbHVyZXMgb3IgZGV2aWNlIHJlbW92YWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlQyWDAwXCIsXG4gICAgXCJSVDI4MDBQQ0lcIixcbiAgICBcIlJUMjgwMFVTQlwiLFxuICAgIFwiUlQyNDAwUENJXCIsXG4gICAgXCJSVDI1MDBQQ0lcIixcbiAgICBcIlJUNjFQQ0lcIixcbiAgICBcIlJUMjUwMFVTQlwiLFxuICAgIFwiUlQ3M1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0MngwMHBjaV9wcm9iZVwiLFxuICAgIFwicnQyeDAwcGNpX3JlbW92ZVwiLFxuICAgIFwicnQyeDAwdXNiX3Byb2JlXCIsXG4gICAgXCJydDJ4MDB1c2JfZGlzY29ubmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBQQ0kgYW5kIFVTQiByZXNvdXJjZSBtYW5hZ2VtZW50IGluIHRoZSBydDJ4MDAgd2lyZWxlc3MgZHJpdmVyIHRvIHVzZSBkZXZyZXMgKGRldm1fKiBhbmQgcGNpbV8qIGZ1bmN0aW9ucykuIEZ1enppbmcgdGhlIHByb2JlIGFuZCBkaXNjb25uZWN0L3JlbW92ZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgcmVzb3VyY2UgbWFuYWdlbWVudCBkb2VzIG5vdCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzIG9yIGRldmljZSByZW1vdmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflows2hf4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-18 00:42:50 +0000 UTC FinishedAt: 2026-07-18 01:10:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "94515f3a7d4256a5062176b7d6ed0471938cd51a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RT2X00", "RT2800PCI", "RT2800USB", "RT2400PCI", "RT2500PCI", "RT61PCI", "RT2500USB", "RT73USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "94515f3a7d4256a5062176b7d6ed0471938cd51a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RT2X00", "RT2800PCI", "RT2800USB", "RT2400PCI", "RT2500PCI", "RT61PCI", "RT2500USB", "RT73USB" ], "series_id": "d9ac9463-092e-498e-9af1-7bfbcffcb8e1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rt2x00pci_probe", "rt2x00pci_remove", "rt2x00usb_probe", "rt2x00usb_disconnect" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUMlgwMCYjMzQ7LAogICAgJiMzNDtSVDI4MDBQQ0kmIzM0OywKICAgICYjMzQ7UlQyODAwVVNCJiMzNDssCiAgICAmIzM0O1JUMjQwMFBDSSYjMzQ7LAogICAgJiMzNDtSVDI1MDBQQ0kmIzM0OywKICAgICYjMzQ7UlQ2MVBDSSYjMzQ7LAogICAgJiMzNDtSVDI1MDBVU0ImIzM0OywKICAgICYjMzQ7UlQ3M1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0MngwMHBjaV9wcm9iZSYjMzQ7LAogICAgJiMzNDtydDJ4MDBwY2lfcmVtb3ZlJiMzNDssCiAgICAmIzM0O3J0MngwMHVzYl9wcm9iZSYjMzQ7LAogICAgJiMzNDtydDJ4MDB1c2JfZGlzY29ubmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgUENJIGFuZCBVU0IgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiB0aGUgcnQyeDAwIHdpcmVsZXNzIGRyaXZlciB0byB1c2UgZGV2cmVzIChkZXZtXyogYW5kIHBjaW1fKiBmdW5jdGlvbnMpLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgZGlzY29ubmVjdC9yZW1vdmUgZnVuY3Rpb25zIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IHJlc291cmNlIG1hbmFnZW1lbnQgZG9lcyBub3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBpbml0aWFsaXphdGlvbiBmYWlsdXJlcyBvciBkZXZpY2UgcmVtb3ZhbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMTowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMxYmI5ODEzMDZjMTIwNjc0NDgyNDE4NGExNjFkODhkNzIxNmE5ODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxOCAwMTowOToyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHBjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBwY2kuY1xuaW5kZXggY2FiZWVmMGRkZTQ1ZDUuLmQ0NjM1YjUzMTQ4MThlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBwY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBwY2kuY1xuQEAgLTE5LDg0ICYjNDM7MTksNTAgQEBcbiAjaW5jbHVkZSBcJiMzNDtydDJ4MDAuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3J0MngwMHBjaS5oXCYjMzQ7XG4gXG4tLypcbi0gKiBQQ0kgZHJpdmVyIGhhbmRsZXJzLlxuLSAqL1xuLXN0YXRpYyB2b2lkIHJ0MngwMHBjaV9mcmVlX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLXtcbi1cdGtmcmVlKHJ0MngwMGRldi1cdTAwM2VyZik7XG4tXHRydDJ4MDBkZXYtXHUwMDNlcmYgPSBOVUxMO1xuLVxuLVx0a2ZyZWUocnQyeDAwZGV2LVx1MDAzZWVlcHJvbSk7XG4tXHRydDJ4MDBkZXYtXHUwMDNlZWVwcm9tID0gTlVMTDtcbi1cbi1cdGlmIChydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UpIHtcbi1cdFx0aW91bm1hcChydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UpO1xuLVx0XHRydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UgPSBOVUxMO1xuLVx0fVxuLX1cbi1cbi1zdGF0aWMgaW50IHJ0MngwMHBjaV9hbGxvY19yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbi17XG4tXHRzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiA9IHRvX3BjaV9kZXYocnQyeDAwZGV2LVx1MDAzZWRldik7XG4tXG4tXHRydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UgPSBwY2lfaW9yZW1hcF9iYXIocGNpX2RldiwgMCk7XG4tXHRpZiAoIXJ0MngwMGRldi1cdTAwM2Vjc3IuYmFzZSlcbi1cdFx0Z290byBleGl0O1xuLVxuLVx0cnQyeDAwZGV2LVx1MDAzZWVlcHJvbSA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIXJ0MngwMGRldi1cdTAwM2VlZXByb20pXG4tXHRcdGdvdG8gZXhpdDtcbi1cbi1cdHJ0MngwMGRldi1cdTAwM2VyZiA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghcnQyeDAwZGV2LVx1MDAzZXJmKVxuLVx0XHRnb3RvIGV4aXQ7XG4tXG4tXHRyZXR1cm4gMDtcbi1cbi1leGl0OlxuLVx0cnQyeDAwX3Byb2JlX2VycihcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgcmVnaXN0ZXJzXFxuXCYjMzQ7KTtcbi1cbi1cdHJ0MngwMHBjaV9mcmVlX3JlZyhydDJ4MDBkZXYpO1xuLVxuLVx0cmV0dXJuIC1FTk9NRU07XG4tfVxuLVxuIGludCBydDJ4MDBwY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpXG4ge1xuLVx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XG4gXHRzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2O1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuJiM0MztcdHZvaWQgX19pb21lbSAqYmFzZTtcbiYjNDM7XHRfX2xlMTYgKmVlcHJvbTtcbiBcdGludCByZXR2YWw7XG4gXHR1MTYgY2hpcDtcbiYjNDM7XHR1MzIgKnJmO1xuIFxuLVx0cmV0dmFsID0gcGNpX2VuYWJsZV9kZXZpY2UocGNpX2Rldik7XG4mIzQzO1x0cmV0dmFsID0gcGNpbV9lbmFibGVfZGV2aWNlKHBjaV9kZXYpO1xuIFx0aWYgKHJldHZhbCkge1xuIFx0XHRydDJ4MDBfcHJvYmVfZXJyKFwmIzM0O0VuYWJsZSBkZXZpY2UgZmFpbGVkXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIHJldHZhbDtcbiBcdH1cbiBcbi1cdHJldHZhbCA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpX2RldiwgcGNpX25hbWUocGNpX2RldikpO1xuLVx0aWYgKHJldHZhbCkge1xuLVx0XHRydDJ4MDBfcHJvYmVfZXJyKFwmIzM0O1BDSSByZXF1ZXN0IHJlZ2lvbnMgZmFpbGVkXFxuXCYjMzQ7KTtcbi1cdFx0Z290byBleGl0X2Rpc2FibGVfZGV2aWNlO1xuJiM0MztcdGJhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2lfZGV2LCAwLCBwY2lfbmFtZShwY2lfZGV2KSk7XG4mIzQzO1x0aWYgKElTX0VSUihiYXNlKSkge1xuJiM0MztcdFx0cnQyeDAwX3Byb2JlX2VycihcJiMzNDtQQ0kgaW9tYXAgcmVnaW9uIGZhaWxlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gUFRSX0VSUihiYXNlKTtcbiBcdH1cbiBcbiBcdHBjaV9zZXRfbWFzdGVyKHBjaV9kZXYpO1xuIFxuLVx0aWYgKHBjaV9zZXRfbXdpKHBjaV9kZXYpKVxuJiM0MztcdGlmIChwY2ltX3NldF9td2kocGNpX2RldikpXG4gXHRcdHJ0MngwMF9wcm9iZV9lcnIoXCYjMzQ7TVdJIG5vdCBhdmFpbGFibGVcXG5cJiMzNDspO1xuIFxuIFx0aWYgKGRtYV9zZXRfbWFzayhcdTAwMjZwY2lfZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSkpIHtcbiBcdFx0cnQyeDAwX3Byb2JlX2VycihcJiMzNDtQQ0kgRE1BIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuLVx0XHRyZXR2YWwgPSAtRUlPO1xuLVx0XHRnb3RvIGV4aXRfcmVsZWFzZV9yZWdpb25zO1xuJiM0MztcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXG4mIzQzO1x0ZWVwcm9tID0gZGV2bV9remFsbG9jKFx1MDAyNnBjaV9kZXYtXHUwMDNlZGV2LCBvcHMtXHUwMDNlZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpO1xuJiM0MztcdGlmICghZWVwcm9tKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdHJmID0gZGV2bV9remFsbG9jKFx1MDAyNnBjaV9kZXYtXHUwMDNlZGV2LCBvcHMtXHUwMDNlcmZfc2l6ZSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFyZilcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiBcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHNpemVvZihzdHJ1Y3QgcnQyeDAwX2RldiksIG9wcy1cdTAwM2Vodyk7XG4gXHRpZiAoIWh3KSB7XG4gXHRcdHJ0MngwMF9wcm9iZV9lcnIoXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIGhhcmR3YXJlXFxuXCYjMzQ7KTtcbi1cdFx0cmV0dmFsID0gLUVOT01FTTtcbi1cdFx0Z290byBleGl0X3JlbGVhc2VfcmVnaW9ucztcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFxuIFx0cGNpX3NldF9kcnZkYXRhKHBjaV9kZXYsIGh3KTtcbkBAIC0xMDUsMTggJiM0Mzs3MSwxNyBAQCBpbnQgcnQyeDAwcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCBjb25zdCBzdHJ1Y3QgcnQyeDAwX29wcyAqb3BzKVxuIFx0cnQyeDAwZGV2LVx1MDAzZWRldiA9IFx1MDAyNnBjaV9kZXYtXHUwMDNlZGV2O1xuIFx0cnQyeDAwZGV2LVx1MDAzZW9wcyA9IG9wcztcbiBcdHJ0MngwMGRldi1cdTAwM2VodyA9IGh3O1xuJiM0MztcdHJ0MngwMGRldi1cdTAwM2Vjc3IuYmFzZSA9IGJhc2U7XG4gXHRydDJ4MDBkZXYtXHUwMDNlaXJxID0gcGNpX2Rldi1cdTAwM2VpcnE7XG4gXHRydDJ4MDBkZXYtXHUwMDNlbmFtZSA9IG9wcy1cdTAwM2VuYW1lO1xuJiM0MztcdHJ0MngwMGRldi1cdTAwM2VlZXByb20gPSBlZXByb207XG4mIzQzO1x0cnQyeDAwZGV2LVx1MDAzZXJmID0gcmY7XG4gXG4gXHRpZiAocGNpX2lzX3BjaWUocGNpX2RldikpXG4gXHRcdHJ0MngwMF9zZXRfY2hpcF9pbnRmKHJ0MngwMGRldiwgUlQyWDAwX0NISVBfSU5URl9QQ0lFKTtcbiBcdGVsc2VcbiBcdFx0cnQyeDAwX3NldF9jaGlwX2ludGYocnQyeDAwZGV2LCBSVDJYMDBfQ0hJUF9JTlRGX1BDSSk7XG4gXG4tXHRyZXR2YWwgPSBydDJ4MDBwY2lfYWxsb2NfcmVnKHJ0MngwMGRldik7XG4tXHRpZiAocmV0dmFsKVxuLVx0XHRnb3RvIGV4aXRfZnJlZV9kZXZpY2U7XG4tXG4gXHQvKlxuIFx0ICogQmVjYXVzZSBydDMyOTAgY2hpcCB1c2UgZGlmZmVyZW50IGVmdXNlIG9mZnNldCB0byByZWFkIGVmdXNlIGRhdGEuXG4gXHQgKiBTbyBiZWZvcmUgcmVhZCBlZnVzZSBpdCBuZWVkIHRvIGluZGljYXRlIGl0IGlzIHRoZVxuQEAgLTEyNywyMyAmIzQzOzkyLDEzIEBAIGludCBydDJ4MDBwY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpXG4gXG4gXHRyZXR2YWwgPSBydDJ4MDBsaWJfcHJvYmVfZGV2KHJ0MngwMGRldik7XG4gXHRpZiAocmV0dmFsKVxuLVx0XHRnb3RvIGV4aXRfZnJlZV9yZWc7XG4mIzQzO1x0XHRnb3RvIGV4aXRfZnJlZV9kZXZpY2U7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1leGl0X2ZyZWVfcmVnOlxuLVx0cnQyeDAwcGNpX2ZyZWVfcmVnKHJ0MngwMGRldik7XG4tXG4gZXhpdF9mcmVlX2RldmljZTpcbiBcdGllZWU4MDIxMV9mcmVlX2h3KGh3KTtcbiBcbi1leGl0X3JlbGVhc2VfcmVnaW9uczpcbi1cdHBjaV9jbGVhcl9td2kocGNpX2Rldik7XG4tXHRwY2lfcmVsZWFzZV9yZWdpb25zKHBjaV9kZXYpO1xuLVxuLWV4aXRfZGlzYWJsZV9kZXZpY2U6XG4tXHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XG4tXG4gXHRyZXR1cm4gcmV0dmFsO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChydDJ4MDBwY2lfcHJvYmUpO1xuQEAgLTE1MywxOSAmIzQzOzEwOCw4IEBAIHZvaWQgcnQyeDAwcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldilcbiBcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9kZXYpO1xuIFx0c3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldiA9IGh3LVx1MDAzZXByaXY7XG4gXG4tXHQvKlxuLVx0ICogRnJlZSBhbGwgYWxsb2NhdGVkIGRhdGEuXG4tXHQgKi9cbiBcdHJ0MngwMGxpYl9yZW1vdmVfZGV2KHJ0MngwMGRldik7XG4tXHRydDJ4MDBwY2lfZnJlZV9yZWcocnQyeDAwZGV2KTtcbiBcdGllZWU4MDIxMV9mcmVlX2h3KGh3KTtcbi1cbi1cdC8qXG4tXHQgKiBGcmVlIHRoZSBQQ0kgZGV2aWNlIGRhdGEuXG4tXHQgKi9cbi1cdHBjaV9jbGVhcl9td2kocGNpX2Rldik7XG4tXHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XG4tXHRwY2lfcmVsZWFzZV9yZWdpb25zKHBjaV9kZXYpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChydDJ4MDBwY2lfcmVtb3ZlKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHVzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuY1xuaW5kZXggNDdlNDI3ZWE4NjIyMWEuLjkzODMyMDQ3ODcyODY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuY1xuQEAgLTc1NSw1NSAmIzQzOzc1NSwzMSBAQCB2b2lkIHJ0MngwMHVzYl91bmluaXRpYWxpemUoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwdXNiX3VuaW5pdGlhbGl6ZSk7XG4gXG4tLypcbi0gKiBVU0IgZHJpdmVyIGhhbmRsZXJzLlxuLSAqL1xuLXN0YXRpYyB2b2lkIHJ0MngwMHVzYl9mcmVlX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLXtcbi1cdGtmcmVlKHJ0MngwMGRldi1cdTAwM2VyZik7XG4tXHRydDJ4MDBkZXYtXHUwMDNlcmYgPSBOVUxMO1xuLVxuLVx0a2ZyZWUocnQyeDAwZGV2LVx1MDAzZWVlcHJvbSk7XG4tXHRydDJ4MDBkZXYtXHUwMDNlZWVwcm9tID0gTlVMTDtcbi1cbi1cdGtmcmVlKHJ0MngwMGRldi1cdTAwM2Vjc3IuY2FjaGUpO1xuLVx0cnQyeDAwZGV2LVx1MDAzZWNzci5jYWNoZSA9IE5VTEw7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnQyeDAwdXNiX2FsbG9jX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLXtcbi1cdHJ0MngwMGRldi1cdTAwM2Vjc3IuY2FjaGUgPSBremFsbG9jKENTUl9DQUNIRV9TSVpFLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghcnQyeDAwZGV2LVx1MDAzZWNzci5jYWNoZSlcbi1cdFx0Z290byBleGl0O1xuLVxuLVx0cnQyeDAwZGV2LVx1MDAzZWVlcHJvbSA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIXJ0MngwMGRldi1cdTAwM2VlZXByb20pXG4tXHRcdGdvdG8gZXhpdDtcbi1cbi1cdHJ0MngwMGRldi1cdTAwM2VyZiA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghcnQyeDAwZGV2LVx1MDAzZXJmKVxuLVx0XHRnb3RvIGV4aXQ7XG4tXG4tXHRyZXR1cm4gMDtcbi1cbi1leGl0OlxuLVx0cnQyeDAwX3Byb2JlX2VycihcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgcmVnaXN0ZXJzXFxuXCYjMzQ7KTtcbi1cbi1cdHJ0MngwMHVzYl9mcmVlX3JlZyhydDJ4MDBkZXYpO1xuLVxuLVx0cmV0dXJuIC1FTk9NRU07XG4tfVxuLVxuIGludCBydDJ4MDB1c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuIFx0XHQgICAgY29uc3Qgc3RydWN0IHJ0MngwMF9vcHMgKm9wcylcbiB7XG4gXHRzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldiA9IGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpO1xuLVx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XG4gXHRzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2O1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuJiM0MztcdF9fbGUxNiAqZWVwcm9tO1xuJiM0MztcdHZvaWQgKmNhY2hlO1xuIFx0aW50IHJldHZhbDtcbiYjNDM7XHR1MzIqIHJmO1xuIFxuIFx0dXNiX3Jlc2V0X2RldmljZSh1c2JfZGV2KTtcbiBcbiYjNDM7XHRjYWNoZSA9IGRldm1fa3phbGxvYyhcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIENTUl9DQUNIRV9TSVpFLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIWNhY2hlKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdGVlcHJvbSA9IGRldm1fa3phbGxvYyhcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIG9wcy1cdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFlZXByb20pXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0cmYgPSBkZXZtX2t6YWxsb2MoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBvcHMtXHUwMDNlcmZfc2l6ZSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFyZilcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiBcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHN0cnVjdF9zaXplKHJ0MngwMGRldiwgYW5jaG9yLCAxKSwgb3BzLVx1MDAzZWh3KTtcbiBcdGlmICghaHcpIHtcbiBcdFx0cnQyeDAwX3Byb2JlX2VycihcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgaGFyZHdhcmVcXG5cJiMzNDspO1xuQEAgLTgxNiwxNiAmIzQzOzc5MiwxNSBAQCBpbnQgcnQyeDAwdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbiBcdHJ0MngwMGRldi1cdTAwM2VkZXYgPSBcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXY7XG4gXHRydDJ4MDBkZXYtXHUwMDNlb3BzID0gb3BzO1xuIFx0cnQyeDAwZGV2LVx1MDAzZWh3ID0gaHc7XG4mIzQzO1x0cnQyeDAwZGV2LVx1MDAzZWNzci5jYWNoZSA9IGNhY2hlO1xuJiM0MztcdHJ0MngwMGRldi1cdTAwM2VlZXByb20gPSBlZXByb207XG4mIzQzO1x0cnQyeDAwZGV2LVx1MDAzZXJmID0gcmY7XG4gXG4gXHRydDJ4MDBfc2V0X2NoaXBfaW50ZihydDJ4MDBkZXYsIFJUMlgwMF9DSElQX0lOVEZfVVNCKTtcbiBcbiBcdElOSVRfV09SSyhcdTAwMjZydDJ4MDBkZXYtXHUwMDNlcnhkb25lX3dvcmssIHJ0MngwMHVzYl93b3JrX3J4ZG9uZSk7XG4gXHRJTklUX1dPUksoXHUwMDI2cnQyeDAwZGV2LVx1MDAzZXR4ZG9uZV93b3JrLCBydDJ4MDB1c2Jfd29ya190eGRvbmUpO1xuIFxuLVx0cmV0dmFsID0gcnQyeDAwdXNiX2FsbG9jX3JlZyhydDJ4MDBkZXYpO1xuLVx0aWYgKHJldHZhbClcbi1cdFx0Z290byBleGl0X2ZyZWVfZGV2aWNlO1xuLVxuIFx0aW5pdF91c2JfYW5jaG9yKHJ0MngwMGRldi1cdTAwM2VhbmNob3IpO1xuIFxuIFx0cmV0dmFsID0gcnQyeDAwbGliX3Byb2JlX2RldihydDJ4MDBkZXYpO1xuQEAgLTgzNiw5ICYjNDM7ODExLDYgQEAgaW50IHJ0MngwMHVzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4gXG4gZXhpdF9mcmVlX2FuY2hvcjpcbiBcdHVzYl9raWxsX2FuY2hvcmVkX3VyYnMocnQyeDAwZGV2LVx1MDAzZWFuY2hvcik7XG4tXHRydDJ4MDB1c2JfZnJlZV9yZWcocnQyeDAwZGV2KTtcbi1cbi1leGl0X2ZyZWVfZGV2aWNlOlxuIFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xuIFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgTlVMTCk7XG4gXG5AQCAtODU1LDcgJiM0Mzs4MjcsNiBAQCB2b2lkIHJ0MngwMHVzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcbiBcdCAqIEZyZWUgYWxsIGFsbG9jYXRlZCBkYXRhLlxuIFx0ICovXG4gXHRydDJ4MDBsaWJfcmVtb3ZlX2RldihydDJ4MDBkZXYpO1xuLVx0cnQyeDAwdXNiX2ZyZWVfcmVnKHJ0MngwMGRldik7XG4gXHRpZWVlODAyMTFfZnJlZV9odyhodyk7XG4gXG4gXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMTowOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVDJYMDAmIzM0OywKICAgICYjMzQ7UlQyODAwUENJJiMzNDssCiAgICAmIzM0O1JUMjgwMFVTQiYjMzQ7LAogICAgJiMzNDtSVDI0MDBQQ0kmIzM0OywKICAgICYjMzQ7UlQyNTAwUENJJiMzNDssCiAgICAmIzM0O1JUNjFQQ0kmIzM0OywKICAgICYjMzQ7UlQyNTAwVVNCJiMzNDssCiAgICAmIzM0O1JUNzNVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydDJ4MDBwY2lfcHJvYmUmIzM0OywKICAgICYjMzQ7cnQyeDAwcGNpX3JlbW92ZSYjMzQ7LAogICAgJiMzNDtydDJ4MDB1c2JfcHJvYmUmIzM0OywKICAgICYjMzQ7cnQyeDAwdXNiX2Rpc2Nvbm5lY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIFBDSSBhbmQgVVNCIHJlc291cmNlIG1hbmFnZW1lbnQgaW4gdGhlIHJ0MngwMCB3aXJlbGVzcyBkcml2ZXIgdG8gdXNlIGRldnJlcyAoZGV2bV8qIGFuZCBwY2ltXyogZnVuY3Rpb25zKS4gRnV6emluZyB0aGUgcHJvYmUgYW5kIGRpc2Nvbm5lY3QvcmVtb3ZlIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyByZXNvdXJjZSBtYW5hZ2VtZW50IGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gZmFpbHVyZXMgb3IgZGV2aWNlIHJlbW92YWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMxYmI5ODEzMDZjMTIwNjc0NDgyNDE4NGExNjFkODhkNzIxNmE5ODEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxOCAwMTowOToyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHBjaS5jCmluZGV4IGNhYmVlZjBkZGU0NWQ1Li5kNDYzNWI1MzE0ODE4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBwY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHBjaS5jCkBAIC0xOSw4NCAmIzQzOzE5LDUwIEBACiAjaW5jbHVkZSAmIzM0O3J0MngwMC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7cnQyeDAwcGNpLmgmIzM0OwogCi0vKgotICogUENJIGRyaXZlciBoYW5kbGVycy4KLSAqLwotc3RhdGljIHZvaWQgcnQyeDAwcGNpX2ZyZWVfcmVnKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpCi17Ci0Ja2ZyZWUocnQyeDAwZGV2LSZndDtyZik7Ci0JcnQyeDAwZGV2LSZndDtyZiA9IE5VTEw7Ci0KLQlrZnJlZShydDJ4MDBkZXYtJmd0O2VlcHJvbSk7Ci0JcnQyeDAwZGV2LSZndDtlZXByb20gPSBOVUxMOwotCi0JaWYgKHJ0MngwMGRldi0mZ3Q7Y3NyLmJhc2UpIHsKLQkJaW91bm1hcChydDJ4MDBkZXYtJmd0O2Nzci5iYXNlKTsKLQkJcnQyeDAwZGV2LSZndDtjc3IuYmFzZSA9IE5VTEw7Ci0JfQotfQotCi1zdGF0aWMgaW50IHJ0MngwMHBjaV9hbGxvY19yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKLXsKLQlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiA9IHRvX3BjaV9kZXYocnQyeDAwZGV2LSZndDtkZXYpOwotCi0JcnQyeDAwZGV2LSZndDtjc3IuYmFzZSA9IHBjaV9pb3JlbWFwX2JhcihwY2lfZGV2LCAwKTsKLQlpZiAoIXJ0MngwMGRldi0mZ3Q7Y3NyLmJhc2UpCi0JCWdvdG8gZXhpdDsKLQotCXJ0MngwMGRldi0mZ3Q7ZWVwcm9tID0ga3phbGxvYyhydDJ4MDBkZXYtJmd0O29wcy0mZ3Q7ZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpOwotCWlmICghcnQyeDAwZGV2LSZndDtlZXByb20pCi0JCWdvdG8gZXhpdDsKLQotCXJ0MngwMGRldi0mZ3Q7cmYgPSBremFsbG9jKHJ0MngwMGRldi0mZ3Q7b3BzLSZndDtyZl9zaXplLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXJ0MngwMGRldi0mZ3Q7cmYpCi0JCWdvdG8gZXhpdDsKLQotCXJldHVybiAwOwotCi1leGl0OgotCXJ0MngwMF9wcm9iZV9lcnIoJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgcmVnaXN0ZXJzXG4mIzM0Oyk7Ci0KLQlydDJ4MDBwY2lfZnJlZV9yZWcocnQyeDAwZGV2KTsKLQotCXJldHVybiAtRU5PTUVNOwotfQotCiBpbnQgcnQyeDAwcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCBjb25zdCBzdHJ1Y3QgcnQyeDAwX29wcyAqb3BzKQogewotCXN0cnVjdCBpZWVlODAyMTFfaHcgKmh3OwogCXN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXY7CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfaHcgKmh3OwomIzQzOwl2b2lkIF9faW9tZW0gKmJhc2U7CiYjNDM7CV9fbGUxNiAqZWVwcm9tOwogCWludCByZXR2YWw7CiAJdTE2IGNoaXA7CiYjNDM7CXUzMiAqcmY7CiAKLQlyZXR2YWwgPSBwY2lfZW5hYmxlX2RldmljZShwY2lfZGV2KTsKJiM0MzsJcmV0dmFsID0gcGNpbV9lbmFibGVfZGV2aWNlKHBjaV9kZXYpOwogCWlmIChyZXR2YWwpIHsKIAkJcnQyeDAwX3Byb2JlX2VycigmIzM0O0VuYWJsZSBkZXZpY2UgZmFpbGVkXG4mIzM0Oyk7CiAJCXJldHVybiByZXR2YWw7CiAJfQogCi0JcmV0dmFsID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwY2lfZGV2LCBwY2lfbmFtZShwY2lfZGV2KSk7Ci0JaWYgKHJldHZhbCkgewotCQlydDJ4MDBfcHJvYmVfZXJyKCYjMzQ7UENJIHJlcXVlc3QgcmVnaW9ucyBmYWlsZWRcbiYjMzQ7KTsKLQkJZ290byBleGl0X2Rpc2FibGVfZGV2aWNlOwomIzQzOwliYXNlID0gcGNpbV9pb21hcF9yZWdpb24ocGNpX2RldiwgMCwgcGNpX25hbWUocGNpX2RldikpOwomIzQzOwlpZiAoSVNfRVJSKGJhc2UpKSB7CiYjNDM7CQlydDJ4MDBfcHJvYmVfZXJyKCYjMzQ7UENJIGlvbWFwIHJlZ2lvbiBmYWlsZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBQVFJfRVJSKGJhc2UpOwogCX0KIAogCXBjaV9zZXRfbWFzdGVyKHBjaV9kZXYpOwogCi0JaWYgKHBjaV9zZXRfbXdpKHBjaV9kZXYpKQomIzQzOwlpZiAocGNpbV9zZXRfbXdpKHBjaV9kZXYpKQogCQlydDJ4MDBfcHJvYmVfZXJyKCYjMzQ7TVdJIG5vdCBhdmFpbGFibGVcbiYjMzQ7KTsKIAogCWlmIChkbWFfc2V0X21hc2soJmFtcDtwY2lfZGV2LSZndDtkZXYsIERNQV9CSVRfTUFTSygzMikpKSB7CiAJCXJ0MngwMF9wcm9iZV9lcnIoJiMzNDtQQ0kgRE1BIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKLQkJcmV0dmFsID0gLUVJTzsKLQkJZ290byBleGl0X3JlbGVhc2VfcmVnaW9uczsKJiM0MzsJCXJldHVybiAtRUlPOwogCX0KIAomIzQzOwllZXByb20gPSBkZXZtX2t6YWxsb2MoJmFtcDtwY2lfZGV2LSZndDtkZXYsIG9wcy0mZ3Q7ZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIWVlcHJvbSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlyZiA9IGRldm1fa3phbGxvYygmYW1wO3BjaV9kZXYtJmd0O2Rldiwgb3BzLSZndDtyZl9zaXplLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFyZikKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwogCWh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHNpemVvZihzdHJ1Y3QgcnQyeDAwX2RldiksIG9wcy0mZ3Q7aHcpOwogCWlmICghaHcpIHsKIAkJcnQyeDAwX3Byb2JlX2VycigmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBoYXJkd2FyZVxuJiMzNDspOwotCQlyZXR2YWwgPSAtRU5PTUVNOwotCQlnb3RvIGV4aXRfcmVsZWFzZV9yZWdpb25zOwomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiAJfQogCiAJcGNpX3NldF9kcnZkYXRhKHBjaV9kZXYsIGh3KTsKQEAgLTEwNSwxOCAmIzQzOzcxLDE3IEBAIGludCBydDJ4MDBwY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpCiAJcnQyeDAwZGV2LSZndDtkZXYgPSAmYW1wO3BjaV9kZXYtJmd0O2RldjsKIAlydDJ4MDBkZXYtJmd0O29wcyA9IG9wczsKIAlydDJ4MDBkZXYtJmd0O2h3ID0gaHc7CiYjNDM7CXJ0MngwMGRldi0mZ3Q7Y3NyLmJhc2UgPSBiYXNlOwogCXJ0MngwMGRldi0mZ3Q7aXJxID0gcGNpX2Rldi0mZ3Q7aXJxOwogCXJ0MngwMGRldi0mZ3Q7bmFtZSA9IG9wcy0mZ3Q7bmFtZTsKJiM0MzsJcnQyeDAwZGV2LSZndDtlZXByb20gPSBlZXByb207CiYjNDM7CXJ0MngwMGRldi0mZ3Q7cmYgPSByZjsKIAogCWlmIChwY2lfaXNfcGNpZShwY2lfZGV2KSkKIAkJcnQyeDAwX3NldF9jaGlwX2ludGYocnQyeDAwZGV2LCBSVDJYMDBfQ0hJUF9JTlRGX1BDSUUpOwogCWVsc2UKIAkJcnQyeDAwX3NldF9jaGlwX2ludGYocnQyeDAwZGV2LCBSVDJYMDBfQ0hJUF9JTlRGX1BDSSk7CiAKLQlyZXR2YWwgPSBydDJ4MDBwY2lfYWxsb2NfcmVnKHJ0MngwMGRldik7Ci0JaWYgKHJldHZhbCkKLQkJZ290byBleGl0X2ZyZWVfZGV2aWNlOwotCiAJLyoKIAkgKiBCZWNhdXNlIHJ0MzI5MCBjaGlwIHVzZSBkaWZmZXJlbnQgZWZ1c2Ugb2Zmc2V0IHRvIHJlYWQgZWZ1c2UgZGF0YS4KIAkgKiBTbyBiZWZvcmUgcmVhZCBlZnVzZSBpdCBuZWVkIHRvIGluZGljYXRlIGl0IGlzIHRoZQpAQCAtMTI3LDIzICYjNDM7OTIsMTMgQEAgaW50IHJ0MngwMHBjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiwgY29uc3Qgc3RydWN0IHJ0MngwMF9vcHMgKm9wcykKIAogCXJldHZhbCA9IHJ0MngwMGxpYl9wcm9iZV9kZXYocnQyeDAwZGV2KTsKIAlpZiAocmV0dmFsKQotCQlnb3RvIGV4aXRfZnJlZV9yZWc7CiYjNDM7CQlnb3RvIGV4aXRfZnJlZV9kZXZpY2U7CiAKIAlyZXR1cm4gMDsKIAotZXhpdF9mcmVlX3JlZzoKLQlydDJ4MDBwY2lfZnJlZV9yZWcocnQyeDAwZGV2KTsKLQogZXhpdF9mcmVlX2RldmljZToKIAlpZWVlODAyMTFfZnJlZV9odyhodyk7CiAKLWV4aXRfcmVsZWFzZV9yZWdpb25zOgotCXBjaV9jbGVhcl9td2kocGNpX2Rldik7Ci0JcGNpX3JlbGVhc2VfcmVnaW9ucyhwY2lfZGV2KTsKLQotZXhpdF9kaXNhYmxlX2RldmljZToKLQlwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7Ci0KIAlyZXR1cm4gcmV0dmFsOwogfQogRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwcGNpX3Byb2JlKTsKQEAgLTE1MywxOSAmIzQzOzEwOCw4IEBAIHZvaWQgcnQyeDAwcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldikKIAlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZGV2KTsKIAlzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2ID0gaHctJmd0O3ByaXY7CiAKLQkvKgotCSAqIEZyZWUgYWxsIGFsbG9jYXRlZCBkYXRhLgotCSAqLwogCXJ0MngwMGxpYl9yZW1vdmVfZGV2KHJ0MngwMGRldik7Ci0JcnQyeDAwcGNpX2ZyZWVfcmVnKHJ0MngwMGRldik7CiAJaWVlZTgwMjExX2ZyZWVfaHcoaHcpOwotCi0JLyoKLQkgKiBGcmVlIHRoZSBQQ0kgZGV2aWNlIGRhdGEuCi0JICovCi0JcGNpX2NsZWFyX213aShwY2lfZGV2KTsKLQlwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7Ci0JcGNpX3JlbGVhc2VfcmVnaW9ucyhwY2lfZGV2KTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHJ0MngwMHBjaV9yZW1vdmUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHVzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuYwppbmRleCA0N2U0MjdlYTg2MjIxYS4uOTM4MzIwNDc4NzI4NjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwdXNiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuYwpAQCAtNzU1LDU1ICYjNDM7NzU1LDMxIEBAIHZvaWQgcnQyeDAwdXNiX3VuaW5pdGlhbGl6ZShzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KQogfQogRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwdXNiX3VuaW5pdGlhbGl6ZSk7CiAKLS8qCi0gKiBVU0IgZHJpdmVyIGhhbmRsZXJzLgotICovCi1zdGF0aWMgdm9pZCBydDJ4MDB1c2JfZnJlZV9yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKLXsKLQlrZnJlZShydDJ4MDBkZXYtJmd0O3JmKTsKLQlydDJ4MDBkZXYtJmd0O3JmID0gTlVMTDsKLQotCWtmcmVlKHJ0MngwMGRldi0mZ3Q7ZWVwcm9tKTsKLQlydDJ4MDBkZXYtJmd0O2VlcHJvbSA9IE5VTEw7Ci0KLQlrZnJlZShydDJ4MDBkZXYtJmd0O2Nzci5jYWNoZSk7Ci0JcnQyeDAwZGV2LSZndDtjc3IuY2FjaGUgPSBOVUxMOwotfQotCi1zdGF0aWMgaW50IHJ0MngwMHVzYl9hbGxvY19yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldikKLXsKLQlydDJ4MDBkZXYtJmd0O2Nzci5jYWNoZSA9IGt6YWxsb2MoQ1NSX0NBQ0hFX1NJWkUsIEdGUF9LRVJORUwpOwotCWlmICghcnQyeDAwZGV2LSZndDtjc3IuY2FjaGUpCi0JCWdvdG8gZXhpdDsKLQotCXJ0MngwMGRldi0mZ3Q7ZWVwcm9tID0ga3phbGxvYyhydDJ4MDBkZXYtJmd0O29wcy0mZ3Q7ZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpOwotCWlmICghcnQyeDAwZGV2LSZndDtlZXByb20pCi0JCWdvdG8gZXhpdDsKLQotCXJ0MngwMGRldi0mZ3Q7cmYgPSBremFsbG9jKHJ0MngwMGRldi0mZ3Q7b3BzLSZndDtyZl9zaXplLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXJ0MngwMGRldi0mZ3Q7cmYpCi0JCWdvdG8gZXhpdDsKLQotCXJldHVybiAwOwotCi1leGl0OgotCXJ0MngwMF9wcm9iZV9lcnIoJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgcmVnaXN0ZXJzXG4mIzM0Oyk7Ci0KLQlydDJ4MDB1c2JfZnJlZV9yZWcocnQyeDAwZGV2KTsKLQotCXJldHVybiAtRU5PTUVNOwotfQotCiBpbnQgcnQyeDAwdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZiwKIAkJICAgIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpCiB7CiAJc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTsKLQlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodzsKIAlzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2OwomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodzsKJiM0MzsJX19sZTE2ICplZXByb207CiYjNDM7CXZvaWQgKmNhY2hlOwogCWludCByZXR2YWw7CiYjNDM7CXUzMiogcmY7CiAKIAl1c2JfcmVzZXRfZGV2aWNlKHVzYl9kZXYpOwogCiYjNDM7CWNhY2hlID0gZGV2bV9remFsbG9jKCZhbXA7dXNiX2ludGYtJmd0O2RldiwgQ1NSX0NBQ0hFX1NJWkUsIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIWNhY2hlKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CWVlcHJvbSA9IGRldm1fa3phbGxvYygmYW1wO3VzYl9pbnRmLSZndDtkZXYsIG9wcy0mZ3Q7ZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIWVlcHJvbSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlyZiA9IGRldm1fa3phbGxvYygmYW1wO3VzYl9pbnRmLSZndDtkZXYsIG9wcy0mZ3Q7cmZfc2l6ZSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghcmYpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKIAlodyA9IGllZWU4MDIxMV9hbGxvY19odyhzdHJ1Y3Rfc2l6ZShydDJ4MDBkZXYsIGFuY2hvciwgMSksIG9wcy0mZ3Q7aHcpOwogCWlmICghaHcpIHsKIAkJcnQyeDAwX3Byb2JlX2VycigmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBoYXJkd2FyZVxuJiMzNDspOwpAQCAtODE2LDE2ICYjNDM7NzkyLDE1IEBAIGludCBydDJ4MDB1c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLAogCXJ0MngwMGRldi0mZ3Q7ZGV2ID0gJmFtcDt1c2JfaW50Zi0mZ3Q7ZGV2OwogCXJ0MngwMGRldi0mZ3Q7b3BzID0gb3BzOwogCXJ0MngwMGRldi0mZ3Q7aHcgPSBodzsKJiM0MzsJcnQyeDAwZGV2LSZndDtjc3IuY2FjaGUgPSBjYWNoZTsKJiM0MzsJcnQyeDAwZGV2LSZndDtlZXByb20gPSBlZXByb207CiYjNDM7CXJ0MngwMGRldi0mZ3Q7cmYgPSByZjsKIAogCXJ0MngwMF9zZXRfY2hpcF9pbnRmKHJ0MngwMGRldiwgUlQyWDAwX0NISVBfSU5URl9VU0IpOwogCiAJSU5JVF9XT1JLKCZhbXA7cnQyeDAwZGV2LSZndDtyeGRvbmVfd29yaywgcnQyeDAwdXNiX3dvcmtfcnhkb25lKTsKIAlJTklUX1dPUksoJmFtcDtydDJ4MDBkZXYtJmd0O3R4ZG9uZV93b3JrLCBydDJ4MDB1c2Jfd29ya190eGRvbmUpOwogCi0JcmV0dmFsID0gcnQyeDAwdXNiX2FsbG9jX3JlZyhydDJ4MDBkZXYpOwotCWlmIChyZXR2YWwpCi0JCWdvdG8gZXhpdF9mcmVlX2RldmljZTsKLQogCWluaXRfdXNiX2FuY2hvcihydDJ4MDBkZXYtJmd0O2FuY2hvcik7CiAKIAlyZXR2YWwgPSBydDJ4MDBsaWJfcHJvYmVfZGV2KHJ0MngwMGRldik7CkBAIC04MzYsOSAmIzQzOzgxMSw2IEBAIGludCBydDJ4MDB1c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLAogCiBleGl0X2ZyZWVfYW5jaG9yOgogCXVzYl9raWxsX2FuY2hvcmVkX3VyYnMocnQyeDAwZGV2LSZndDthbmNob3IpOwotCXJ0MngwMHVzYl9mcmVlX3JlZyhydDJ4MDBkZXYpOwotCi1leGl0X2ZyZWVfZGV2aWNlOgogCWllZWU4MDIxMV9mcmVlX2h3KGh3KTsKIAl1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTsKIApAQCAtODU1LDcgJiM0Mzs4MjcsNiBAQCB2b2lkIHJ0MngwMHVzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZikKIAkgKiBGcmVlIGFsbCBhbGxvY2F0ZWQgZGF0YS4KIAkgKi8KIAlydDJ4MDBsaWJfcmVtb3ZlX2RldihydDJ4MDBkZXYpOwotCXJ0MngwMHVzYl9mcmVlX3JlZyhydDJ4MDBkZXYpOwogCWllZWU4MDIxMV9mcmVlX2h3KGh3KTsKIAogCXVzYl9zZXRfaW50ZmRhdGEodXNiX2ludGYsIE5VTEwpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDc3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlZmFjdG9yaW5nIFBhdGNoIGZvciBydDJ4MDAgRHJpdmVycyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgaG9uZXMgaW4gb24gdGhlIGNvcmUgY2hhbmdlOiBpdCYjMzk7cyBhIHJlZmFjdG9yaW5nLiBUaGV5JiMzOTtyZSBkaXRjaGluZyB0aGUgbWFudWFsIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50IGluIGBydDJ4MDBwY2kuY2AgYW5kIGBydDJ4MDB1c2IuY2AgYW5kIG1vdmluZyBvdmVyIHRvIHRoZSBgZGV2bV8qYCBmYW1pbHkuIFRoYXQmIzM5O3MgYSBnb29kIHRoaW5nLCBnZW5lcmFsbHkgc3BlYWtpbmcsIGxldmVyYWdpbmcgdGhlIGtlcm5lbCYjMzk7cyBkZXZpY2UgcmVzb3VyY2UgbWFuYWdlbWVudCBpcyBhbG1vc3QgYWx3YXlzIGEgd2luIGZvciByb2J1c3RuZXNzIGFuZCByZWFkYWJpbGl0eS4gVGhpcyBtZWFucyBmdW5jdGlvbnMgbGlrZSBgcnQyeDAwcGNpX2ZyZWVfcmVnYCwgYHJ0MngwMHBjaV9hbGxvY19yZWdgLCBgcnQyeDAwdXNiX2ZyZWVfcmVnYCwgYW5kIGBydDJ4MDB1c2JfYWxsb2NfcmVnYCBhcmUgYmVpbmcgcmVtb3ZlZCwgd2hpY2ggaXMgZXhwZWN0ZWQuCgpOb3csIHRoZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkLCBhbmQgSSYjMzk7bSBzdXJlIGFueW9uZSB3aXRoIG15IGxldmVsIG9mIGV4cGVyaWVuY2UgaW1tZWRpYXRlbHkgYXNrcywgaXM6IERvZXMgdGhpcyBpbXBhY3QgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCB3YXJyYW50cyBmdXp6aW5nIGF0dGVudGlvbj8gQWJzb2x1dGVseSwgdGhpcyBjaGFuZ2VzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCBzZXF1ZW5jZXMuIEl0JiMzOTtzIHJlZmFjdG9yaW5nIHRvIGBkZXZyZXNgLCBzbyBpdCBjYW4gZWFzaWx5IGxlYWQgdG8gYSBidWcgaW4gdGhlIGVycm9yLWhhbmRsaW5nIG9yIHJlc291cmNlIGNsZWFudXAgcG9ydGlvbnMuIFdlIGhhdmUgdG8gdGhpbmsgYWJvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGxlYWtzIGFyaXNpbmcgZnJvbSB0aGlzIGNoYW5nZS4KCkdpdmVuIHRoaXMgYXBwbGllcyB0byBSYWxpbmsmIzM5O3MgcnQyeDAwIHdpcmVsZXNzIGRyaXZlcnMsIGFuZCBzcGVjaWZpY2FsbHkgdGhlIFBDSSBhbmQgVVNCIHZhcmlhbnRzLCB0aGlzIG9wZW5zIHVwIGF2ZW51ZXMgZm9yIGJvdGggVVNCIGZ1enppbmcgKHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyB3b3VsZCBiZSBwZXJmZWN0KSBhbmQgUENJIGZ1enppbmcsIHdoaWNoIGlzIHNvbWV0aGluZyB0byBjb25zaWRlci4gVGhpcyBhbHNvIGRlcGVuZHMgb24gdGhlIGNvbmZpZ3VyYXRpb24uCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBjaGVjayB0aGUgY29uZmlncyBmb3IgdGhlIGRyaXZlci4gSSBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWdgLiBJJiMzOTtsbCBzZWFyY2ggZm9yIHRoZSByZWxldmFudCBjb25maWdzIGFuZCBtYWtlIHN1cmUgdGhpcyBwYXRoIGlzIGNvdmVyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUMlgwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyOm1lbnVjb25maWcgUlQyWDAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JhbGluayBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0yMjA9Y29uZmlnIFJUMjgwMF9MSUJfTU1JT1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjI1OmNvbmZpZyBSVDJYMDBfTElCX01NSU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjYtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjI5OmNvbmZpZyBSVDJYMDBfTElCX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzMC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyMzM6Y29uZmlnIFJUMlgwMF9MSUJfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjM0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIzNzpjb25maWcgUlQyWDAwX0xJQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzOC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI0MDpjb25maWcgUlQyWDAwX0xJQl9GSVJNV0FSRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0MS1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI0NDpjb25maWcgUlQyWDAwX0xJQl9DUllQVE9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNDUtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI0Nzpjb25maWcgUlQyWDAwX0xJQl9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQ4LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjUxOmNvbmZpZyBSVDJYMDBfTElCX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTItXHRib29sIFwmIzM0O1JhbGluayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI1OTpjb25maWcgUlQyWDAwX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtSYWxpbmsgZGVidWcgb3V0cHV0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE1OQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFBDSSBhbmQgVVNCIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYXJlIGFjdHVhbGx5IHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGUgUENJIGFuZCBVU0IgZHJpdmVycy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBxdWVzdGlvbiwgcmVhbGx5LiBJIGtub3cgdGhlcmUgYXJlIHVzdWFsbHkgYSBtdWx0aXR1ZGUgb2Ygb3B0aW9ucywgb2Z0ZW4gc3ByZWFkIGFjcm9zcyBhIGZldyBkaWZmZXJlbnQgY29uZmlnIGZpbGVzIG9yIHdpdGhpbiBhIHNpbmdsZSwgY29tcGxleCBvbmUuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGxpbmVzIHRoYXQgZGVmaW5lIHdoZXRoZXIgdGhlIHN5c3RlbSBhdHRlbXB0cyB0byBsb2FkIGFuZCBpbml0aWFsaXplIHRob3NlIHBhcnRpY3VsYXIgZHJpdmVycyBhdCBib290LiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIHRoaW5ncyBsaWtlIG1vZHVsZSBibGFja2xpc3RpbmcsIGRldmljZSB0cmVlIG92ZXJsYXlzIChpZiBhcHBsaWNhYmxlKSwgYW5kIGFueSBzcGVjaWZpYyBrZXJuZWwgbW9kdWxlIG9wdGlvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5LiBJJiMzOTtsbCBhbHNvIHdhbnQgdG8gd2F0Y2ggb3V0IGZvciB0aGluZ3MgbGlrZSBlYXJseSBpbml0aWFsaXphdGlvbiBmbGFncyBvciBhbnkgY29uZGl0aW9uYWwgbG9naWMsIHdoaWNoIGNhbiBjb21wbGljYXRlIHRoZSBwcm9jZXNzIGEgYml0LCBidXQgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGZvciBteSBwdXJwb3Nlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlQyLipVU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTExMT1lbmRpZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTExMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMTM6Y29uZmlnIFJUMjUwMFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTExNC1cdHRyaXN0YXRlIFwmIzM0O1JhbGluayBydDI1MDAgKFVTQikgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0xMjQ9Y29uZmlnIFJUNzNVU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjEzNzpjb25maWcgUlQyODAwVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTM4LVx0dHJpc3RhdGUgXCYjMzQ7UmFsaW5rIHJ0Mjd4eC9ydDI4eHgvcnQzMHh4IChVU0IpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MTUwPWlmIFJUMjgwMFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxNTI6Y29uZmlnIFJUMjgwMFVTQl9SVDMzWFhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xNTMtXHRib29sIFwmIzM0O3J0MjgwMHVzYiAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzM3h4IGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjE2MDpjb25maWcgUlQyODAwVVNCX1JUMzVYWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE2MS1cdGJvb2wgXCYjMzQ7cnQyODAwdXNiIC0gSW5jbHVkZSBzdXBwb3J0IGZvciBydDM1eHggZGV2aWNlcyAoRVhQRVJJTUVOVEFMKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTY4OmNvbmZpZyBSVDI4MDBVU0JfUlQzNTczXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTY5LVx0Ym9vbCBcJiMzNDtydDI4MDB1c2IgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0MzU3MyBkZXZpY2VzIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxNzQ6Y29uZmlnIFJUMjgwMFVTQl9SVDUzWFhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xNzUtXHRib29sIFwmIzM0O3J0MjgwMHVzYiAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQ1M3h4IGRldmljZXMgKEVYUEVSSU1FTlRBTClcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjE4MTpjb25maWcgUlQyODAwVVNCX1JUNTVYWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE4Mi1cdGJvb2wgXCYjMzQ7cnQyODAwdXNiIC0gSW5jbHVkZSBzdXBwb3J0IGZvciBydDU1eHggZGV2aWNlcyAoRVhQRVJJTUVOVEFMKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTg4OmNvbmZpZyBSVDI4MDBVU0JfVU5LTk9XTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE4OS1cdGJvb2wgXCYjMzQ7cnQyODAwdXNiIC0gSW5jbHVkZSBzdXBwb3J0IGZvciB1bmtub3duIChVU0IpIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjI5PWNvbmZpZyBSVDJYMDBfTElCX1BDSVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjMzOmNvbmZpZyBSVDJYMDBfTElCX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzNC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQyMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIGZyYW1lZCBhcyB5b3VyIHRob3VnaHRzIGFzIGFuIGV4cGVydDoKCioqUmVmbGVjdGluZyBvbiBQQ0kgQ29uc2lkZXJhdGlvbnMqKgoKUmlnaHQsIHRoaW5raW5nIGFib3V0IFBDSeKApiBpdCBhbGwgYm9pbHMgZG93biB0byBwcm90ZWN0aW5nIGNhcmRob2xkZXIgZGF0YSwgb2J2aW91c2x5LiBJJiMzOTttIHJ1bm5pbmcgdGhyb3VnaCB0aGUgZmFtaWxpYXIgY29tcGxpYW5jZSByZXF1aXJlbWVudHMuIFdlJiMzOTt2ZSBnb3QgdGhlIHNpeCBtYWluIGdvYWxzOiBidWlsZCBhbmQgbWFpbnRhaW4gYSBzZWN1cmUgbmV0d29yayBhbmQgc3lzdGVtcywgcHJvdGVjdCBjYXJkaG9sZGVyIGRhdGEsIG1haW50YWluIGEgdnVsbmVyYWJpbGl0eSBtYW5hZ2VtZW50IHByb2dyYW0sIGltcGxlbWVudCBzdHJvbmcgYWNjZXNzIGNvbnRyb2wgbWVhc3VyZXMsIHJlZ3VsYXJseSBtb25pdG9yIGFuZCB0ZXN0IG5ldHdvcmtzLCBhbmQgbWFpbnRhaW4gYW4gaW5mb3JtYXRpb24gc2VjdXJpdHkgcG9saWN5LiBJIGtub3cgdGhpcyBpbnNpZGUgYW5kIG91dC4gSXTigJlzIGFib3V0IG1vcmUgdGhhbiBqdXN0IGNoZWNraW5nIGJveGVzLCB0aG91Z2guIEl0JiMzOTtzIGFib3V0IGEgY3VsdHVyZSBvZiBzZWN1cml0eSwgZW1iZWRkZWQgd2l0aGluIGV2ZXJ5IHByb2Nlc3MgYW5kIHByb2NlZHVyZS4KCkkmIzM5O20gbWVudGFsbHkgb3V0bGluaW5nIHRoZSByZWxldmFudCBzZWN0aW9uczogc2NvcGUgZGV0ZXJtaW5hdGlvbiwgc2VnbWVudGF0aW9uLCBlbmNyeXB0aW9uIHN0cmF0ZWdpZXPigKYgSXQmIzM5O3MgYSByaXNrIGFzc2Vzc21lbnQgZXhlcmNpc2UsIHVsdGltYXRlbHkuIElkZW50aWZ5aW5nIHRoZSB3ZWFrIHBvaW50cywgdGhlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgd2hlcmUgYSBsb3Qgb2Ygb3JnYW5pemF0aW9ucyBzdHVtYmxlLiBUaGV5IHRyZWF0IFBDSSBhcyBhIG9uZS10aW1lIHByb2plY3QsIG5vdCBhbiBvbmdvaW5nIGNvbW1pdG1lbnQuIEkgbmVlZCB0byBlbXBoYXNpemUgdGhlIGltcG9ydGFuY2Ugb2YgY29udGludW91cyBtb25pdG9yaW5nLiBWdWxuZXJhYmlsaXR5IHNjYW5zLCBwZW5ldHJhdGlvbiB0ZXN0cywgdGhhdCYjMzk7cyBhbGwganVzdCB0aGUgc3RhcnRpbmcgcG9pbnQuIEl0JiMzOTtzIGFib3V0IHByb2FjdGl2ZSBkZWZlbnNlLCBub3QgcmVhY3RpdmUgZGFtYWdlIGNvbnRyb2wuIEFuZCwgb2YgY291cnNlLCB0aGUgZXZlci1wcmVzZW50IHRocmVhdCBvZiBwaGlzaGluZyBhdHRhY2tzIGFuZCBzb2NpYWwgZW5naW5lZXJpbmcuIFBlcnNvbm5lbCB0cmFpbmluZyBhbmQgYXdhcmVuZXNzIGFyZSBhYnNvbHV0ZWx5IGNyaXRpY2FsIGhlcmUuIFdlIG5lZWQgdG8gY3JlYXRlIGEgaHVtYW4gZmlyZXdhbGwuCgpJdCYjMzk7cyB0ZW1wdGluZyB0byB0aGluayBhYm91dCBhdXRvbWF0ZWQgc29sdXRpb25zIOKAkyBhbmQsIHllcywgd2Ugc2hvdWxkIGxldmVyYWdlIHRoZW0gd2hlcmUgYXBwcm9wcmlhdGUg4oCTIGJ1dCBjb21wbGlhbmNlIGlzbiYjMzk7dCBhIHNpbHZlciBidWxsZXQuIFlvdSBjYW4mIzM5O3QganVzdCBidXkgeW91ciB3YXkgdG8gc2VjdXJpdHkuIEl0JiMzOTtzIGFib3V0IGEgaG9saXN0aWMgYXBwcm9hY2gsIGEgY29tcHJlaGVuc2l2ZSBzZWN1cml0eSBwcm9ncmFtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVDIuKlBDSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MTk9aWYgUlQyWDAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjE6Y29uZmlnIFJUMjQwMFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7UmFsaW5rIHJ0MjQwMCAoUENJL1BDTUNJQSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0zMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzozMzpjb25maWcgUlQyNTAwUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMzQtXHR0cmlzdGF0ZSBcJiMzNDtSYWxpbmsgcnQyNTAwIChQQ0kvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTQ1PWNvbmZpZyBSVDYxUENJXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjYwOmNvbmZpZyBSVDI4MDBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O1JhbGluayBydDI3eHgvcnQyOHh4L3J0MzB4eCAoUENJL1BDSWUvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTc3PWlmIFJUMjgwMFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjc5OmNvbmZpZyBSVDI4MDBQQ0lfUlQzM1hYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctODAtXHRib29sIFwmIzM0O3J0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzM3h4IGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6ODc6Y29uZmlnIFJUMjgwMFBDSV9SVDM1WFhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy04OC1cdGJvb2wgXCYjMzQ7cnQyODAwcGNpIC0gSW5jbHVkZSBzdXBwb3J0IGZvciBydDM1eHggZGV2aWNlcyAoRVhQRVJJTUVOVEFMKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy05NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzo5Njpjb25maWcgUlQyODAwUENJX1JUNTNYWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTk3LVx0Ym9vbCBcJiMzNDtydDI4MDBwY2kgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0NTN4eCBkZXZpY2VzIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMDQ6Y29uZmlnIFJUMjgwMFBDSV9SVDMyOTBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMDUtXHRib29sIFwmIzM0O3J0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzMjkwIGRldmljZXMgKEVYUEVSSU1FTlRBTClcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjI1PWNvbmZpZyBSVDJYMDBfTElCX01NSU9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIyOTpjb25maWcgUlQyWDAwX0xJQl9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzAtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3MjAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgUlQyWDAwIERyaXZlciBNb2R1bGVzKioKCk9rYXksIHNvIEkgbmVlZCB0byBlbmFibGUgYSBmZXcgUlQyWDAwIG1vZHVsZXMgaGVyZSwgc3BlY2lmaWNhbGx5OiBgUlQyWDAwYCwgYFJUMjUwMFVTQmAsIGBSVDczVVNCYCwgYFJUMjgwMFVTQmAsIGBSVDI0MDBQQ0lgLCBgUlQyNTAwUENJYCwgYFJUNjFQQ0lgLCBhbmQgYFJUMjgwMFBDSWAuIE5vdywgSSYjMzk7bSB0aGlua2luZywgYXJlIGBSVDI4MDBVU0JgIGFuZCBgUlQyODAwUENJYCBlbm91Z2g/IEZvciBzYWZldHkmIzM5O3Mgc2FrZSwgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgZW5hYmxpbmcgKmFsbCogb2YgdGhlbS4gT3IsIHBlcmhhcHMsIEkgY291bGQganVzdCBzdGljayB3aXRoIGBSVDI4MDBVU0JgIGFuZCBgUlQyODAwUENJYC4gSSBuZWVkIHRvIGJlIGNlcnRhaW4uCgpMZXQgbWUgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgYFJUMlgwMF9MSUJfUENJYCBhbmQgYFJUMlgwMF9MSUJfVVNCYCBsaWJyYXJpZXMgYXJlIHNlbGVjdGVkIGJ5IHRoZXNlIG1vZHVsZXM7IHl1cCwgdGhleSBhcmUuIFRoYXQmIzM5O3MgZ29vZC4KClNvLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2xlYXIsIGhlcmUmIzM5O3MgdGhlIGxpc3Qgb2YgY29uZmlncyBJJiMzOTtsbCBiZSBlbmFibGluZzoKCiogICBgUlQyWDAwYAoqICAgYFJUMjUwMFVTQmAKKiAgIGBSVDczVVNCYAoqICAgYFJUMjgwMFVTQmAKKiAgIGBSVDI0MDBQQ0lgCiogICBgUlQyNTAwUENJYAoqICAgYFJUNjFQQ0lgCiogICBgUlQyODAwUENJYAoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkLiBJdCYjMzk7cyB0aGUgcHJvYmUgYW5kIGRpc2Nvbm5lY3QgZnVuY3Rpb25zOiBgcnQyeDAwcGNpX3Byb2JlYCwgYHJ0MngwMHBjaV9yZW1vdmVgLCBgcnQyeDAwdXNiX3Byb2JlYCwgYW5kIGBydDJ4MDB1c2JfZGlzY29ubmVjdGAuIERlZmluaXRlbHkgd29ydGggZnV6emluZyB0aGVzZSBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgc2luY2UgdGhpcyBpbnZvbHZlcyB0ZXN0aW5nIHRoZSBuZXcgZGV2cmVzLWJhc2VkIGluaXRpYWxpemF0aW9uLgoKRm9jdXNpbmcgaW4gb24gdGhvc2UsIGl0JiMzOTtzIGNsZWFyIHRoZSBrZXkgc3ltYm9scyB0byBwcmlvcml0aXplIGZvciBmdXp6aW5nIGFyZTogYHJ0MngwMHBjaV9wcm9iZWAgYW5kIGBydDJ4MDB1c2JfcHJvYmVgLgoKSGFuZyBvbiwgbGV0IG1lIGRvdWJsZS1jaGVjay4uLiBZZXMsIEkgYWxzbyBoYXZlIGBydDJ4MDBwY2lfcmVtb3ZlYCBhbmQgYHJ0MngwMHVzYl9kaXNjb25uZWN0YCB0aGF0IGFyZSBtb2RpZmllZC4gU28sIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcgaXM6IGBydDJ4MDBwY2lfcHJvYmVgLCBgcnQyeDAwcGNpX3JlbW92ZWAsIGBydDJ4MDB1c2JfcHJvYmVgLCBhbmQgYHJ0MngwMHVzYl9kaXNjb25uZWN0YC4gSSYjMzk7bGwgd2FudCB0byB2ZXJpZnkgdGhlIGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVDJYMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjptZW51Y29uZmlnIFJUMlgwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtSYWxpbmsgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjIwPWNvbmZpZyBSVDI4MDBfTElCX01NSU9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIyNTpjb25maWcgUlQyWDAwX0xJQl9NTUlPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjI2LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIyOTpjb25maWcgUlQyWDAwX0xJQl9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzAtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjMzOmNvbmZpZyBSVDJYMDBfTElCX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyMzc6Y29uZmlnIFJUMlgwMF9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzgtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNDA6Y29uZmlnIFJUMlgwMF9MSUJfRklSTVdBUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNDEtXHRib29sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNDQ6Y29uZmlnIFJUMlgwMF9MSUJfQ1JZUFRPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQ1LVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNDc6Y29uZmlnIFJUMlgwMF9MSUJfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0OC1cdGJvb2xcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI1MTpjb25maWcgUlQyWDAwX0xJQl9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjUyLVx0Ym9vbCBcJiMzNDtSYWxpbmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNTk6Y29uZmlnIFJUMlgwMF9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7UmFsaW5rIGRlYnVnIG91dHB1dFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY1OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJUMlgwMCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBSVDJYMDBgLCBgUlQyNTAwVVNCYCwgYFJUNzNVU0JgLCBgUlQyODAwVVNCYCwgYFJUMjQwMFBDSWAsIGBSVDI1MDBQQ0lgLCBgUlQ2MVBDSWAsIGFuZCBgUlQyODAwUENJYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlc2UgYXJlIGdvaW5nIHRvIGNvbnRyb2wgdGhlIGNvbXBpbGF0aW9uIG9mIGBydDJ4MDBwY2kuY2AgYW5kIGBydDJ4MDB1c2IuY2AuCgpCdXQgd2FpdCwgSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBoZXJlLiBJIGtub3cgYHJ0MngwMHBjaS5jYCByZWxpZXMgb24gYFJUMlgwMF9MSUJfUENJYCwgbm90IGRpcmVjdGx5IHRoZSBjb25maWdzIHRoZW1zZWx2ZXMuIEFuZCwgc2ltaWxhcmx5LCBgcnQyeDAwdXNiLmNgIGRlcGVuZHMgb24gYFJUMlgwMF9MSUJfVVNCYC4gVGhlc2UgbGlicmFyeSBvcHRpb25zIGFyZSwgaG93ZXZlciwgKnNlbGVjdGVkKiBiYXNlZCBvbiB3aGljaCBzcGVjaWZpYyBkcml2ZXIgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQuCgpUaGVyZWZvcmUsIGVuYWJsaW5nIGBSVDI4MDBVU0JgIGFuZCBgUlQyODAwUENJYCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBlbnN1cmUgdGhlIG5lY2Vzc2FyeSBjb2RlIGlzIGJ1aWx0LiBJJiMzOTttIGJ1aWxkaW5nIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgUlQyODAwIGlzIGEgJiMzNDtoaWdoLWxldmVsJiMzNDsgY29uZmlndXJhdGlvbiwgYW5kIFJUMlgwMCBpcyBhICYjMzQ7bG93LWxldmVsJiMzNDsgY29uZmlndXJhdGlvbi4KClRvIGNvbmZpcm0gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnQyeDAwcGNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19SVDJYMDBfTElCX01NSU8pXHRcdCYjNDM7PSBydDJ4MDBtbWlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1JUMlgwMF9MSUJfUENJKVx0XHQmIzQzOz0gcnQyeDAwcGNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX1JUMlgwMF9MSUJfVVNCKVx0XHQmIzQzOz0gcnQyeDAwdXNiLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzOTAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJZGVudGlmeWluZyB0aGUgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgcmV2b2x2ZXMgYXJvdW5kIGBDT05GSUdfUlQyWDAwX0xJQl9QQ0lgIGFuZCBgQ09ORklHX1JUMlgwMF9MSUJfVVNCYC4gTm8gbmVlZCB0byBzZWNvbmQtZ3Vlc3MgdGhvc2UuIFRoZXkmIzM5O3JlIGNsZWFybHkgdGhlIGtleSBwbGF5ZXJzIGluIHRoaXMuIE5vdywgdGhlIHJlYWwgbWVhdCBvZiB0aGUgcHJvYmxlbSBpcyBmaWd1cmluZyBvdXQgdGhlaXIgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0cmlnZ2VyIHRoZSBzZWxlY3Rpb24gb2YgdGhlc2UgdHdvLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBzdHJ1Y3R1cmUgYW5kIHRyYWNlIGJhY2sgdGhlIHNlbGVjdGlvbiBsb2dpYy4gTGV0JiMzOTtzIHNlZSB3aGF0IGJyaW5ncyB0aGVzZSBpbnRvIHRoZSBidWlsZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFJUMlgwMF9MSUJfUENJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0yMT1jb25maWcgUlQyNDAwUENJXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0LVx0c2VsZWN0IFJUMlgwMF9MSUJfTU1JT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI1Olx0c2VsZWN0IFJUMlgwMF9MSUJfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYtXHRzZWxlY3QgRUVQUk9NXzkzQ1g2XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTMzPWNvbmZpZyBSVDI1MDBQQ0lcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMzYtXHRzZWxlY3QgUlQyWDAwX0xJQl9NTUlPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6Mzc6XHRzZWxlY3QgUlQyWDAwX0xJQl9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0zOC1cdHNlbGVjdCBFRVBST01fOTNDWDZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9NDU9Y29uZmlnIFJUNjFQQ0lcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNDctXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjQ4Olx0c2VsZWN0IFJUMlgwMF9MSUJfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNDktXHRzZWxlY3QgUlQyWDAwX0xJQl9NTUlPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTYwPWNvbmZpZyBSVDI4MDBQQ0lcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNjUtXHRzZWxlY3QgUlQyWDAwX0xJQl9NTUlPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NjY6XHRzZWxlY3QgUlQyWDAwX0xJQl9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy02Ny1cdHNlbGVjdCBSVDJYMDBfTElCX0ZJUk1XQVJFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTQ0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgYXNzdW1pbmcgSSYjMzk7bSB0aGUgZXhwZXJ0IHRoaW5raW5nIHRocm91Z2ggdGhlIHByb3ZpZGVkIHRleHQgYWJvdXQgVVNCLgoKKipBbmFseXppbmcgdGhlIFVTQiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2hlbiB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBVU0IsIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBjb25zdGFudGx5IGV2b2x2aW5nIHN0YW5kYXJkLiBUaGUgc2hlZXIgY29tcGxleGl0eSBjYW4gYmUgb3ZlcndoZWxtaW5nIHNvbWV0aW1lcywgZ2l2ZW4gdGhlIG11bHRpcGxlIHZlcnNpb25zLCBzcGVlZHMsIGFuZCBwb3dlciBkZWxpdmVyeSBjYXBhYmlsaXRpZXMuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIHZhcmlvdXMgY29ubmVjdG9ycywgdGhlIGRpZmZlcmVudCBwcm90b2NvbHMsIGFuZCB0aGUgcG90ZW50aWFsIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAob3IgbGFjayB0aGVyZW9mKSB3aGVuIGRlc2lnbmluZy4gVGhlIHByYWN0aWNhbCBpbXBsaWNhdGlvbnMgb2YgdGhpbmdzIGxpa2UgcG93ZXIgZHJhdyBhbmQgZGF0YSB0cmFuc2ZlciByYXRlcyBhcmUgcGFyYW1vdW50LiBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgdGhlIHRhcmdldCBhcHBsaWNhdGlvbiDigJMgaXMgaXQgaGlnaC1zcGVlZCBzdG9yYWdlLCBtb2JpbGUgZGV2aWNlIGNoYXJnaW5nLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZD8gVGhlIGludGVycGxheSBiZXR3ZWVuIGhvc3QgY29udHJvbGxlcnMsIGRldmljZSBpbnRlcmZhY2VzLCBhbmQgZmlybXdhcmUgYmVjb21lcyBjcnVjaWFsIGhlcmUuIEl0JiMzOTtzIGFib3V0IG9wdGltaXppbmcgZm9yIHBlcmZvcm1hbmNlLCByZWxpYWJpbGl0eSwgYW5kIGNvc3QtZWZmZWN0aXZlbmVzcy4gVGhlIHBvdGVudGlhbCBmb3IgaXNzdWVzIHdpdGggY2FibGUgcXVhbGl0eSBhbmQgZHJpdmVyIHN1cHBvcnQgYXJlIGFsc28gYWx3YXlzIGEgZmFjdG9yLiBTbywgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBvZiB0aGVzZSB2YXJpYWJsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBSVDJYMDBfTElCX1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MTEzPWNvbmZpZyBSVDI1MDBVU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTE1LVx0ZGVwZW5kcyBvbiBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMTY6XHRzZWxlY3QgUlQyWDAwX0xJQl9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMTctXHRzZWxlY3QgUlQyWDAwX0xJQl9DUllQVE9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MTI0PWNvbmZpZyBSVDczVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEyNi1cdGRlcGVuZHMgb24gVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTI3Olx0c2VsZWN0IFJUMlgwMF9MSUJfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTI4LVx0c2VsZWN0IFJUMlgwMF9MSUJfRklSTVdBUkVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MTM3PWNvbmZpZyBSVDI4MDBVU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTQwLVx0c2VsZWN0IFJUMjgwMF9MSUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxNDE6XHRzZWxlY3QgUlQyWDAwX0xJQl9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xNDItXHRzZWxlY3QgUlQyWDAwX0xJQl9GSVJNV0FSRVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzgwMwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgUlQyODAwIFdpcmVsZXNzIERyaXZlciBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gZXZhbHVhdGluZyB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgaXQgbG9va3MgbGlrZSBgUlQyODAwUENJYCBhbmQgYFJUMjgwMFVTQmAgYXJlIHByb21pc2luZyBjYW5kaWRhdGVzLiBBaCwgYnV0IHdhaXQg4oCTIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IGBSVDJYMDBgIGlzIGEgbWVudWNvbmZpZyBvcHRpb24sIG1lYW5pbmcgSSBoYXZlIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGl0LiBSaWdodCwgcmlnaHQuIE5vdywgbGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrOyBgUlQyODAwUENJYCBoYXMgZGVwZW5kZW5jaWVzLi4uIHllcywgaXQgZGVwZW5kcyBvbiBib3RoIGBQQ0lgIGFuZCwgb2YgY291cnNlLCBgUlQyWDAwYC4gR29vZCB0byBrbm93LiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgZ2V0IHRob3NlIGRlcGVuZGVuY2llcyBuYWlsZWQgZG93biBjb21wbGV0ZWx5LiBJJiMzOTtsbCBjaGVjayB0aG9zZSBgUlQyODAwUENJYCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE4IDAxOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVDI4MDBQQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTQ1PWNvbmZpZyBSVDYxUENJXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjYwOmNvbmZpZyBSVDI4MDBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O1JhbGluayBydDI3eHgvcnQyOHh4L3J0MzB4eCAoUENJL1BDSWUvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTc3PWlmIFJUMjgwMFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjc5OmNvbmZpZyBSVDI4MDBQQ0lfUlQzM1hYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctODAtXHRib29sIFwmIzM0O3J0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzM3h4IGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6ODc6Y29uZmlnIFJUMjgwMFBDSV9SVDM1WFhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy04OC1cdGJvb2wgXCYjMzQ7cnQyODAwcGNpIC0gSW5jbHVkZSBzdXBwb3J0IGZvciBydDM1eHggZGV2aWNlcyAoRVhQRVJJTUVOVEFMKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy05NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzo5Njpjb25maWcgUlQyODAwUENJX1JUNTNYWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTk3LVx0Ym9vbCBcJiMzNDtydDI4MDBwY2kgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0NTN4eCBkZXZpY2VzIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMDQ6Y29uZmlnIFJUMjgwMFBDSV9SVDMyOTBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMDUtXHRib29sIFwmIzM0O3J0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzMjkwIGRldmljZXMgKEVYUEVSSU1FTlRBTClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2NzQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIHRoZSBSVDI4MDBQQ0kgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIGBSVDI4MDBQQ0lgIG1vZHVsZS4gVGhpcyBpc24mIzM5O3QganVzdCBhIG1hdHRlciBvZiBsaXN0aW5nIHRoZW07IEkgbmVlZCB0byB0aGluayBhYm91dCAqd2h5KiBJIG5lZWQgdG8ga25vdy4gQW0gSSB0cm91Ymxlc2hvb3RpbmcgYSBkcml2ZXIgaXNzdWU/IEFtIEkgcHJlcGFyaW5nIHRvIHVwZ3JhZGUgb3IgbW9kaWZ5IHRoZSBtb2R1bGU/IEFtIEkgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiBhIGxhcmdlciBzeXN0ZW0/IEtub3dpbmcgdGhlIGNvbnRleHQgd2lsbCBzaGFwZSBob3cgaW4tZGVwdGggSSBuZWVkIHRvIGJlLgoKRmlyc3QsIEkgbmVlZCB0byBsb29rIGF0IGl0cyBkaXJlY3QgZGVwZW5kZW5jaWVzLiBXaGF0IG90aGVyIG1vZHVsZXMgb3IgbGlicmFyaWVzIGRvZXMgaXQgZXhwbGljaXRseSBjYWxsIHVwb24/IEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgc3VzcGVjdHM6IGtlcm5lbCBtb2R1bGVzIGZvciBQQ0kgaW50ZXJhY3Rpb24sIG5ldHdvcmsgc3RhY2sgZnVuY3Rpb25zLCBhbmQgcG90ZW50aWFsbHkgZmlybXdhcmUgaW50ZXJmYWNlcy4gSSYjMzk7bGwgbmVlZCB0byB1c2UgdG9vbHMgbGlrZSBgbW9kaW5mb2AgYW5kIG1heWJlIGV2ZW4gZGlzc2VjdCB0aGUgc291cmNlIGNvZGUgaWYgYG1vZGluZm9gIGRvZXNuJiMzOTt0IGdpdmUgbWUgZW5vdWdoIGRldGFpbC4gSeKAmWxsIGFsc28ga2VlcCBpbiBtaW5kIHRoYXQgSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyB2ZXJzaW9ucyBvZiB0aGUgZGVwZW5kZW5jaWVzLgoKQmV5b25kIHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzLCBJIG5lZWQgdG8gY29uc2lkZXIgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLiBXaGF0IG90aGVyIG1vZHVsZXMgcmVseSBvbiAqaXQqPyBSZW1vdmluZyBvciBtb2RpZnlpbmcgYFJUMjgwMFBDSWAgY291bGQgaGF2ZSByaXBwbGUgZWZmZWN0cy4gVGhpcyBpcyB3aGVyZSBjcm9zcy1yZWZlcmVuY2luZyBiZWNvbWVzIGltcG9ydGFudC4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIG1pZ2h0IHVzZSBpdHMgZXhwb3J0ZWQgc3ltYm9scyBvciBpbnRlcmFjdCB3aXRoIGl0cyBwcm92aWRlZCBmdW5jdGlvbmFsaXR5LiBJZiBpdCBpbXBsZW1lbnRzIHNwZWNpZmljIHByb3RvY29scywgdGhlbiB3aGF0IG90aGVyIGRyaXZlcnMgbWF5IHJlbHkgb24gaXQ/IEFyZSB0aGVyZSBvdGhlciBuZXR3b3JrIGRyaXZlcnMgdGhhdCBhcmUgdGllZCB0byBzcGVjaWZpYyB2ZXJzaW9ucyBvZiB0aGUgbW9kdWxlPwoKRmluYWxseSwgaXTigJlzIGdvb2QgcHJhY3RpY2UgdG8gY29uc2lkZXIgdGhlIHRhcmdldCBlbnZpcm9ubWVudC4gSXMgdGhpcyBhIGN1c3RvbSBrZXJuZWwsIGEgc3RhbmRhcmQgZGlzdHJpYnV0aW9uLCBvciBzb21lIGVtYmVkZGVkIHN5c3RlbT8gVGhlIGFuc3dlcnMgd2lsbCBzaGFwZSB0aGUgc2NvcGUgb2YgdGhlIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gY29uc2lkZXIsIGZyb20gbG93LWxldmVsIGhhcmR3YXJlIGFic3RyYWN0aW9ucyB0byBoaWdoLWxldmVsIG5ldHdvcmsgbWFuYWdlbWVudCB0b29scy4gSXQgd2lsbCBhbHNvIGhlbHAgbWUgdW5kZXJzdGFuZCB3aGF0IGJ1aWxkIG9wdGlvbnMgYXJlIGluIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLiomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTI9bWVudWNvbmZpZyBSVDJYMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmFsaW5rIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NDpcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy01LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0yMT1jb25maWcgUlQyNDAwUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtSYWxpbmsgcnQyNDAwIChQQ0kvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjM6XHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0LVx0c2VsZWN0IFJUMlgwMF9MSUJfTU1JT1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0zMz1jb25maWcgUlQyNTAwUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMzQtXHR0cmlzdGF0ZSBcJiMzNDtSYWxpbmsgcnQyNTAwIChQQ0kvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MzU6XHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTM2LVx0c2VsZWN0IFJUMlgwMF9MSUJfTU1JT1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz00NT1jb25maWcgUlQ2MVBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7UmFsaW5rIHJ0MjUwMS9ydDYxIChQQ0kvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NDc6XHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTQ4LVx0c2VsZWN0IFJUMlgwMF9MSUJfUENJXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTYwPWNvbmZpZyBSVDI4MDBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O1JhbGluayBydDI3eHgvcnQyOHh4L3J0MzB4eCAoUENJL1BDSWUvUENNQ0lBKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NjI6XHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTYzLVx0c2VsZWN0IFJUMjgwMF9MSUJcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MTEzPWNvbmZpZyBSVDI1MDBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMTQtXHR0cmlzdGF0ZSBcJiMzNDtSYWxpbmsgcnQyNTAwIChVU0IpIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMTU6XHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTExNi1cdHNlbGVjdCBSVDJYMDBfTElCX1VTQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0xMjQ9Y29uZmlnIFJUNzNVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMjUtXHR0cmlzdGF0ZSBcJiMzNDtSYWxpbmsgcnQyNTAxL3J0NzMgKFVTQikgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjEyNjpcdGRlcGVuZHMgb24gVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTI3LVx0c2VsZWN0IFJUMlgwMF9MSUJfVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTEzNz1jb25maWcgUlQyODAwVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTM4LVx0dHJpc3RhdGUgXCYjMzQ7UmFsaW5rIHJ0Mjd4eC9ydDI4eHgvcnQzMHh4IChVU0IpIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMzk6XHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE0MC1cdHNlbGVjdCBSVDI4MDBfTElCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTIwMT1jb25maWcgUlQyODAwU09DXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjAyLVx0dHJpc3RhdGUgXCYjMzQ7UmFsaW5rIFdpU29DIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyMDM6XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoU09DX1JUMjg4WCB8fCBTT0NfUlQzMDVYIHx8IFNPQ19NVDc2MjAgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIwNC1cdHNlbGVjdCBSVDJYMDBfTElCX01NSU9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjUxPWNvbmZpZyBSVDJYMDBfTElCX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTItXHRib29sIFwmIzM0O1JhbGluayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNTM6XHRkZXBlbmRzIG9uIFJUMlgwMF9MSUIgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTI1OT1jb25maWcgUlQyWDAwX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtSYWxpbmsgZGVidWcgb3V0cHV0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjYxOlx0ZGVwZW5kcyBvbiBSVDJYMDBfTElCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYyLVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOCAwMToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjYxMwoJCQkJCQkJb3V0cHV0OiAyMTIKCQkJCQkJCXRob3VnaHRzOiA2MjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIHJ0MngwMCBEcml2ZXIgQ2hhbmdlcyBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMgYW5kIHN5bWJvbHMgZm9yIGZ1enppbmcgdGhpcyBydDJ4MDAgZHJpdmVyLiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIG9mIGp1c3QgbGlzdGluZyBhIGJ1bmNoIG9mIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbmZpZ3Mg4oCTIGBSVDJYMDBgLCBgUlQyODAwUENJYCwgYFJUMjgwMFVTQmAsIGFuZCBhIGZldyBvdGhlcnMganVzdCB0byBiZSBjb21wcmVoZW5zaXZlLCBsaWtlIGBSVDI0MDBQQ0lgLCBgUlQyNTAwUENJYCwgYFJUNjFQQ0lgLCBgUlQyNTAwVVNCYCwgYW5kIGBSVDczVVNCYC4gVGhlbiwgSSByZWFsaXplZCB0aGF0IGBSVDI4MDBQQ0lgIGFuZCBgUlQyODAwVVNCYCBhbG9uZSBhcmUgcHJvYmFibHkgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIGNvcmUgUENJIGFuZCBVU0IgbW9kdWxlcy4gQnV0LCBJIGRlY2lkZWQgdG8gZXJyIG9uIHRoZSBzaWRlIG9mIGNhdXRpb24gYW5kIGxpc3QgdGhlbSBhbGwuCgpUaGVuIHRoZSBwcm9tcHQgcmVtaW5kZWQgbWUgdG8gYmUgZWZmaWNpZW50LCBub3QgZ2VuZXJpYy4gSXQgc2FpZCB0byBmb2N1cyBvbiBjb25maWdzIHRoYXQgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSAqbW9kaWZpZWQqIGNvZGUuIFJpZ2h0LCByaWdodC4uLiBzbyBJIG5lZWQgdG8gbmFpbCBkb3duIGV4YWN0bHkgd2hpY2ggZnVuY3Rpb25zIGFyZSBiZWluZyBjaGFuZ2VkLiBBZnRlciByZXZpZXdpbmcgdGhlIGRpZmYsIGl0JiMzOTtzIGNsZWFyOiBgcnQyeDAwcGNpX3Byb2JlYCwgYHJ0MngwMHBjaV9yZW1vdmVgLCBgcnQyeDAwdXNiX3Byb2JlYCwgYW5kIGBydDJ4MDB1c2JfZGlzY29ubmVjdGAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLiBUaGF0IGFsc28gbWVhbnMgdGhlIGNvbmZpZyBvcHRpb25zIEkgbmVlZCBhcmUgdGhvc2UgdGhhdCBlbmFibGUgdGhlIHJlbGV2YW50IFBDSSBhbmQgVVNCIGRyaXZlcnMsIGFuZCBJIG5lZWQgdG8gYmUgaW5jbHVzaXZlIHRvIG1ha2Ugc3VyZSBhbGwgcGVybXV0YXRpb25zIGFyZSBjb3ZlcmVkLgoKTG9va2luZyBhdCB0aGUgY2hhbmdlcywgaXQgc2VlbXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHJlZmFjdG9yaW5nIG9mIFBDSSBhbmQgVVNCIHJlc291cmNlIG1hbmFnZW1lbnQgdXNpbmcgYGRldnJlc2AgKGRldm1fKiBhbmQgcGNpbV8qIGZ1bmN0aW9ucykuIFRoZSBmb2N1cyBoZXJlIHNob3VsZCBiZSBvbiB0aGUgYHByb2JlYCBhbmQgYHJlbW92ZWAvYGRpc2Nvbm5lY3RgIGZ1bmN0aW9ucyBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgdGhlIG5ldyByZXNvdXJjZSBtYW5hZ2VtZW50IGlzIGJlaW5nIGludHJvZHVjZWQsIGFuZCB3aGVyZSBmYWlsdXJlcyBvciByZW1vdmFsIG1pZ2h0IGNyZWF0ZSBidWdzLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGFyZSBpbnRyb2R1Y2VkLgoKVGhlcmVmb3JlLCBteSBmaW5hbCBzZXR1cCB3aWxsIGJlOgoKKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgCiogICBgRm9jdXNTeW1ib2xzOiBbJiMzNDtydDJ4MDBwY2lfcHJvYmUmIzM0OywgJiMzNDtydDJ4MDBwY2lfcmVtb3ZlJiMzNDssICYjMzQ7cnQyeDAwdXNiX3Byb2JlJiMzNDssICYjMzQ7cnQyeDAwdXNiX2Rpc2Nvbm5lY3QmIzM0O11gCiogICBgRW5hYmxlQ29uZmlnczogWyYjMzQ7UlQyWDAwJiMzNDssICYjMzQ7UlQyODAwUENJJiMzNDssICYjMzQ7UlQyODAwVVNCJiMzNDssICYjMzQ7UlQyNDAwUENJJiMzNDssICYjMzQ7UlQyNTAwUENJJiMzNDssICYjMzQ7UlQ2MVBDSSYjMzQ7LCAmIzM0O1JUMjUwMFVTQiYjMzQ7LCAmIzM0O1JUNzNVU0ImIzM0O11gCiogICBgUmVhc29uaW5nOiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgUENJIGFuZCBVU0IgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiB0aGUgcnQyeDAwIHdpcmVsZXNzIGRyaXZlciB0byB1c2UgZGV2cmVzIChkZXZtXyogYW5kIHBjaW1fKiBmdW5jdGlvbnMpLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgZGlzY29ubmVjdC9yZW1vdmUgZnVuY3Rpb25zIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IHJlc291cmNlIG1hbmFnZW1lbnQgZG9lcyBub3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBpbml0aWFsaXphdGlvbiBmYWlsdXJlcyBvciBkZXZpY2UgcmVtb3ZhbC4mIzM0O2AKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTggMDE6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUMlgwMCYjMzQ7LAogICAgJiMzNDtSVDI4MDBQQ0kmIzM0OywKICAgICYjMzQ7UlQyODAwVVNCJiMzNDssCiAgICAmIzM0O1JUMjQwMFBDSSYjMzQ7LAogICAgJiMzNDtSVDI1MDBQQ0kmIzM0OywKICAgICYjMzQ7UlQ2MVBDSSYjMzQ7LAogICAgJiMzNDtSVDI1MDBVU0ImIzM0OywKICAgICYjMzQ7UlQ3M1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0MngwMHBjaV9wcm9iZSYjMzQ7LAogICAgJiMzNDtydDJ4MDBwY2lfcmVtb3ZlJiMzNDssCiAgICAmIzM0O3J0MngwMHVzYl9wcm9iZSYjMzQ7LAogICAgJiMzNDtydDJ4MDB1c2JfZGlzY29ubmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgUENJIGFuZCBVU0IgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiB0aGUgcnQyeDAwIHdpcmVsZXNzIGRyaXZlciB0byB1c2UgZGV2cmVzIChkZXZtXyogYW5kIHBjaW1fKiBmdW5jdGlvbnMpLiBGdXp6aW5nIHRoZSBwcm9iZSBhbmQgZGlzY29ubmVjdC9yZW1vdmUgZnVuY3Rpb25zIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IHJlc291cmNlIG1hbmFnZW1lbnQgZG9lcyBub3QgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGR1cmluZyBpbml0aWFsaXphdGlvbiBmYWlsdXJlcyBvciBkZXZpY2UgcmVtb3ZhbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlQyWDAwJiMzNDssCiAgICAmIzM0O1JUMjgwMFBDSSYjMzQ7LAogICAgJiMzNDtSVDI4MDBVU0ImIzM0OywKICAgICYjMzQ7UlQyNDAwUENJJiMzNDssCiAgICAmIzM0O1JUMjUwMFBDSSYjMzQ7LAogICAgJiMzNDtSVDYxUENJJiMzNDssCiAgICAmIzM0O1JUMjUwMFVTQiYjMzQ7LAogICAgJiMzNDtSVDczVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnQyeDAwcGNpX3Byb2JlJiMzNDssCiAgICAmIzM0O3J0MngwMHBjaV9yZW1vdmUmIzM0OywKICAgICYjMzQ7cnQyeDAwdXNiX3Byb2JlJiMzNDssCiAgICAmIzM0O3J0MngwMHVzYl9kaXNjb25uZWN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBQQ0kgYW5kIFVTQiByZXNvdXJjZSBtYW5hZ2VtZW50IGluIHRoZSBydDJ4MDAgd2lyZWxlc3MgZHJpdmVyIHRvIHVzZSBkZXZyZXMgKGRldm1fKiBhbmQgcGNpbV8qIGZ1bmN0aW9ucykuIEZ1enppbmcgdGhlIHByb2JlIGFuZCBkaXNjb25uZWN0L3JlbW92ZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgcmVzb3VyY2UgbWFuYWdlbWVudCBkb2VzIG5vdCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzIG9yIGRldmljZSByZW1vdmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MDk6MjIuNTkxODQ0MDQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc5OTAzMjI2OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlQyWDAwXCIsXG4gICAgXCJSVDI4MDBQQ0lcIixcbiAgICBcIlJUMjgwMFVTQlwiLFxuICAgIFwiUlQyNDAwUENJXCIsXG4gICAgXCJSVDI1MDBQQ0lcIixcbiAgICBcIlJUNjFQQ0lcIixcbiAgICBcIlJUMjUwMFVTQlwiLFxuICAgIFwiUlQ3M1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0MngwMHBjaV9wcm9iZVwiLFxuICAgIFwicnQyeDAwcGNpX3JlbW92ZVwiLFxuICAgIFwicnQyeDAwdXNiX3Byb2JlXCIsXG4gICAgXCJydDJ4MDB1c2JfZGlzY29ubmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBQQ0kgYW5kIFVTQiByZXNvdXJjZSBtYW5hZ2VtZW50IGluIHRoZSBydDJ4MDAgd2lyZWxlc3MgZHJpdmVyIHRvIHVzZSBkZXZyZXMgKGRldm1fKiBhbmQgcGNpbV8qIGZ1bmN0aW9ucykuIEZ1enppbmcgdGhlIHByb2JlIGFuZCBkaXNjb25uZWN0L3JlbW92ZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgcmVzb3VyY2UgbWFuYWdlbWVudCBkb2VzIG5vdCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzIG9yIGRldmljZSByZW1vdmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOToyMi41OTE4NTAzMTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMjQyODI5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMxYmI5ODEzMDZjMTIwNjc0NDgyNDE4NGExNjFkODhkNzIxNmE5ODFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMTggMDE6MDk6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBwY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwcGNpLmNcXG5pbmRleCBjYWJlZWYwZGRlNDVkNS4uZDQ2MzViNTMxNDgxOGUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBwY2kuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwcGNpLmNcXG5AQCAtMTksODQgKzE5LDUwIEBAXFxuICNpbmNsdWRlIFxcXCJydDJ4MDAuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInJ0MngwMHBjaS5oXFxcIlxcbiBcXG4tLypcXG4tICogUENJIGRyaXZlciBoYW5kbGVycy5cXG4tICovXFxuLXN0YXRpYyB2b2lkIHJ0MngwMHBjaV9mcmVlX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxcbi17XFxuLVxcdGtmcmVlKHJ0MngwMGRldi1cXHUwMDNlcmYpO1xcbi1cXHRydDJ4MDBkZXYtXFx1MDAzZXJmID0gTlVMTDtcXG4tXFxuLVxcdGtmcmVlKHJ0MngwMGRldi1cXHUwMDNlZWVwcm9tKTtcXG4tXFx0cnQyeDAwZGV2LVxcdTAwM2VlZXByb20gPSBOVUxMO1xcbi1cXG4tXFx0aWYgKHJ0MngwMGRldi1cXHUwMDNlY3NyLmJhc2UpIHtcXG4tXFx0XFx0aW91bm1hcChydDJ4MDBkZXYtXFx1MDAzZWNzci5iYXNlKTtcXG4tXFx0XFx0cnQyeDAwZGV2LVxcdTAwM2Vjc3IuYmFzZSA9IE5VTEw7XFxuLVxcdH1cXG4tfVxcbi1cXG4tc3RhdGljIGludCBydDJ4MDBwY2lfYWxsb2NfcmVnKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpXFxuLXtcXG4tXFx0c3RydWN0IHBjaV9kZXYgKnBjaV9kZXYgPSB0b19wY2lfZGV2KHJ0MngwMGRldi1cXHUwMDNlZGV2KTtcXG4tXFxuLVxcdHJ0MngwMGRldi1cXHUwMDNlY3NyLmJhc2UgPSBwY2lfaW9yZW1hcF9iYXIocGNpX2RldiwgMCk7XFxuLVxcdGlmICghcnQyeDAwZGV2LVxcdTAwM2Vjc3IuYmFzZSlcXG4tXFx0XFx0Z290byBleGl0O1xcbi1cXG4tXFx0cnQyeDAwZGV2LVxcdTAwM2VlZXByb20gPSBremFsbG9jKHJ0MngwMGRldi1cXHUwMDNlb3BzLVxcdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuLVxcdGlmICghcnQyeDAwZGV2LVxcdTAwM2VlZXByb20pXFxuLVxcdFxcdGdvdG8gZXhpdDtcXG4tXFxuLVxcdHJ0MngwMGRldi1cXHUwMDNlcmYgPSBremFsbG9jKHJ0MngwMGRldi1cXHUwMDNlb3BzLVxcdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcXG4tXFx0aWYgKCFydDJ4MDBkZXYtXFx1MDAzZXJmKVxcbi1cXHRcXHRnb3RvIGV4aXQ7XFxuLVxcbi1cXHRyZXR1cm4gMDtcXG4tXFxuLWV4aXQ6XFxuLVxcdHJ0MngwMF9wcm9iZV9lcnIoXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSByZWdpc3RlcnNcXFxcblxcXCIpO1xcbi1cXG4tXFx0cnQyeDAwcGNpX2ZyZWVfcmVnKHJ0MngwMGRldik7XFxuLVxcbi1cXHRyZXR1cm4gLUVOT01FTTtcXG4tfVxcbi1cXG4gaW50IHJ0MngwMHBjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiwgY29uc3Qgc3RydWN0IHJ0MngwMF9vcHMgKm9wcylcXG4ge1xcbi1cXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcXG4gXFx0c3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldjtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuK1xcdHZvaWQgX19pb21lbSAqYmFzZTtcXG4rXFx0X19sZTE2ICplZXByb207XFxuIFxcdGludCByZXR2YWw7XFxuIFxcdHUxNiBjaGlwO1xcbitcXHR1MzIgKnJmO1xcbiBcXG4tXFx0cmV0dmFsID0gcGNpX2VuYWJsZV9kZXZpY2UocGNpX2Rldik7XFxuK1xcdHJldHZhbCA9IHBjaW1fZW5hYmxlX2RldmljZShwY2lfZGV2KTtcXG4gXFx0aWYgKHJldHZhbCkge1xcbiBcXHRcXHRydDJ4MDBfcHJvYmVfZXJyKFxcXCJFbmFibGUgZGV2aWNlIGZhaWxlZFxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiByZXR2YWw7XFxuIFxcdH1cXG4gXFxuLVxcdHJldHZhbCA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpX2RldiwgcGNpX25hbWUocGNpX2RldikpO1xcbi1cXHRpZiAocmV0dmFsKSB7XFxuLVxcdFxcdHJ0MngwMF9wcm9iZV9lcnIoXFxcIlBDSSByZXF1ZXN0IHJlZ2lvbnMgZmFpbGVkXFxcXG5cXFwiKTtcXG4tXFx0XFx0Z290byBleGl0X2Rpc2FibGVfZGV2aWNlO1xcbitcXHRiYXNlID0gcGNpbV9pb21hcF9yZWdpb24ocGNpX2RldiwgMCwgcGNpX25hbWUocGNpX2RldikpO1xcbitcXHRpZiAoSVNfRVJSKGJhc2UpKSB7XFxuK1xcdFxcdHJ0MngwMF9wcm9iZV9lcnIoXFxcIlBDSSBpb21hcCByZWdpb24gZmFpbGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIoYmFzZSk7XFxuIFxcdH1cXG4gXFxuIFxcdHBjaV9zZXRfbWFzdGVyKHBjaV9kZXYpO1xcbiBcXG4tXFx0aWYgKHBjaV9zZXRfbXdpKHBjaV9kZXYpKVxcbitcXHRpZiAocGNpbV9zZXRfbXdpKHBjaV9kZXYpKVxcbiBcXHRcXHRydDJ4MDBfcHJvYmVfZXJyKFxcXCJNV0kgbm90IGF2YWlsYWJsZVxcXFxuXFxcIik7XFxuIFxcbiBcXHRpZiAoZG1hX3NldF9tYXNrKFxcdTAwMjZwY2lfZGV2LVxcdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpKSB7XFxuIFxcdFxcdHJ0MngwMF9wcm9iZV9lcnIoXFxcIlBDSSBETUEgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuLVxcdFxcdHJldHZhbCA9IC1FSU87XFxuLVxcdFxcdGdvdG8gZXhpdF9yZWxlYXNlX3JlZ2lvbnM7XFxuK1xcdFxcdHJldHVybiAtRUlPO1xcbiBcXHR9XFxuIFxcbitcXHRlZXByb20gPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnBjaV9kZXYtXFx1MDAzZWRldiwgb3BzLVxcdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghZWVwcm9tKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdHJmID0gZGV2bV9remFsbG9jKFxcdTAwMjZwY2lfZGV2LVxcdTAwM2VkZXYsIG9wcy1cXHUwMDNlcmZfc2l6ZSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghcmYpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4gXFx0aHcgPSBpZWVlODAyMTFfYWxsb2NfaHcoc2l6ZW9mKHN0cnVjdCBydDJ4MDBfZGV2KSwgb3BzLVxcdTAwM2Vodyk7XFxuIFxcdGlmICghaHcpIHtcXG4gXFx0XFx0cnQyeDAwX3Byb2JlX2VycihcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIGhhcmR3YXJlXFxcXG5cXFwiKTtcXG4tXFx0XFx0cmV0dmFsID0gLUVOT01FTTtcXG4tXFx0XFx0Z290byBleGl0X3JlbGVhc2VfcmVnaW9ucztcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdH1cXG4gXFxuIFxcdHBjaV9zZXRfZHJ2ZGF0YShwY2lfZGV2LCBodyk7XFxuQEAgLTEwNSwxOCArNzEsMTcgQEAgaW50IHJ0MngwMHBjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiwgY29uc3Qgc3RydWN0IHJ0MngwMF9vcHMgKm9wcylcXG4gXFx0cnQyeDAwZGV2LVxcdTAwM2VkZXYgPSBcXHUwMDI2cGNpX2Rldi1cXHUwMDNlZGV2O1xcbiBcXHRydDJ4MDBkZXYtXFx1MDAzZW9wcyA9IG9wcztcXG4gXFx0cnQyeDAwZGV2LVxcdTAwM2VodyA9IGh3O1xcbitcXHRydDJ4MDBkZXYtXFx1MDAzZWNzci5iYXNlID0gYmFzZTtcXG4gXFx0cnQyeDAwZGV2LVxcdTAwM2VpcnEgPSBwY2lfZGV2LVxcdTAwM2VpcnE7XFxuIFxcdHJ0MngwMGRldi1cXHUwMDNlbmFtZSA9IG9wcy1cXHUwMDNlbmFtZTtcXG4rXFx0cnQyeDAwZGV2LVxcdTAwM2VlZXByb20gPSBlZXByb207XFxuK1xcdHJ0MngwMGRldi1cXHUwMDNlcmYgPSByZjtcXG4gXFxuIFxcdGlmIChwY2lfaXNfcGNpZShwY2lfZGV2KSlcXG4gXFx0XFx0cnQyeDAwX3NldF9jaGlwX2ludGYocnQyeDAwZGV2LCBSVDJYMDBfQ0hJUF9JTlRGX1BDSUUpO1xcbiBcXHRlbHNlXFxuIFxcdFxcdHJ0MngwMF9zZXRfY2hpcF9pbnRmKHJ0MngwMGRldiwgUlQyWDAwX0NISVBfSU5URl9QQ0kpO1xcbiBcXG4tXFx0cmV0dmFsID0gcnQyeDAwcGNpX2FsbG9jX3JlZyhydDJ4MDBkZXYpO1xcbi1cXHRpZiAocmV0dmFsKVxcbi1cXHRcXHRnb3RvIGV4aXRfZnJlZV9kZXZpY2U7XFxuLVxcbiBcXHQvKlxcbiBcXHQgKiBCZWNhdXNlIHJ0MzI5MCBjaGlwIHVzZSBkaWZmZXJlbnQgZWZ1c2Ugb2Zmc2V0IHRvIHJlYWQgZWZ1c2UgZGF0YS5cXG4gXFx0ICogU28gYmVmb3JlIHJlYWQgZWZ1c2UgaXQgbmVlZCB0byBpbmRpY2F0ZSBpdCBpcyB0aGVcXG5AQCAtMTI3LDIzICs5MiwxMyBAQCBpbnQgcnQyeDAwcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCBjb25zdCBzdHJ1Y3QgcnQyeDAwX29wcyAqb3BzKVxcbiBcXG4gXFx0cmV0dmFsID0gcnQyeDAwbGliX3Byb2JlX2RldihydDJ4MDBkZXYpO1xcbiBcXHRpZiAocmV0dmFsKVxcbi1cXHRcXHRnb3RvIGV4aXRfZnJlZV9yZWc7XFxuK1xcdFxcdGdvdG8gZXhpdF9mcmVlX2RldmljZTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG4tZXhpdF9mcmVlX3JlZzpcXG4tXFx0cnQyeDAwcGNpX2ZyZWVfcmVnKHJ0MngwMGRldik7XFxuLVxcbiBleGl0X2ZyZWVfZGV2aWNlOlxcbiBcXHRpZWVlODAyMTFfZnJlZV9odyhodyk7XFxuIFxcbi1leGl0X3JlbGVhc2VfcmVnaW9uczpcXG4tXFx0cGNpX2NsZWFyX213aShwY2lfZGV2KTtcXG4tXFx0cGNpX3JlbGVhc2VfcmVnaW9ucyhwY2lfZGV2KTtcXG4tXFxuLWV4aXRfZGlzYWJsZV9kZXZpY2U6XFxuLVxcdHBjaV9kaXNhYmxlX2RldmljZShwY2lfZGV2KTtcXG4tXFxuIFxcdHJldHVybiByZXR2YWw7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwcGNpX3Byb2JlKTtcXG5AQCAtMTUzLDE5ICsxMDgsOCBAQCB2b2lkIHJ0MngwMHBjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYpXFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9kZXYpO1xcbiBcXHRzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2ID0gaHctXFx1MDAzZXByaXY7XFxuIFxcbi1cXHQvKlxcbi1cXHQgKiBGcmVlIGFsbCBhbGxvY2F0ZWQgZGF0YS5cXG4tXFx0ICovXFxuIFxcdHJ0MngwMGxpYl9yZW1vdmVfZGV2KHJ0MngwMGRldik7XFxuLVxcdHJ0MngwMHBjaV9mcmVlX3JlZyhydDJ4MDBkZXYpO1xcbiBcXHRpZWVlODAyMTFfZnJlZV9odyhodyk7XFxuLVxcbi1cXHQvKlxcbi1cXHQgKiBGcmVlIHRoZSBQQ0kgZGV2aWNlIGRhdGEuXFxuLVxcdCAqL1xcbi1cXHRwY2lfY2xlYXJfbXdpKHBjaV9kZXYpO1xcbi1cXHRwY2lfZGlzYWJsZV9kZXZpY2UocGNpX2Rldik7XFxuLVxcdHBjaV9yZWxlYXNlX3JlZ2lvbnMocGNpX2Rldik7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwcGNpX3JlbW92ZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHVzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuY1xcbmluZGV4IDQ3ZTQyN2VhODYyMjFhLi45MzgzMjA0Nzg3Mjg2OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHVzYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuY1xcbkBAIC03NTUsNTUgKzc1NSwzMSBAQCB2b2lkIHJ0MngwMHVzYl91bmluaXRpYWxpemUoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChydDJ4MDB1c2JfdW5pbml0aWFsaXplKTtcXG4gXFxuLS8qXFxuLSAqIFVTQiBkcml2ZXIgaGFuZGxlcnMuXFxuLSAqL1xcbi1zdGF0aWMgdm9pZCBydDJ4MDB1c2JfZnJlZV9yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4te1xcbi1cXHRrZnJlZShydDJ4MDBkZXYtXFx1MDAzZXJmKTtcXG4tXFx0cnQyeDAwZGV2LVxcdTAwM2VyZiA9IE5VTEw7XFxuLVxcbi1cXHRrZnJlZShydDJ4MDBkZXYtXFx1MDAzZWVlcHJvbSk7XFxuLVxcdHJ0MngwMGRldi1cXHUwMDNlZWVwcm9tID0gTlVMTDtcXG4tXFxuLVxcdGtmcmVlKHJ0MngwMGRldi1cXHUwMDNlY3NyLmNhY2hlKTtcXG4tXFx0cnQyeDAwZGV2LVxcdTAwM2Vjc3IuY2FjaGUgPSBOVUxMO1xcbi19XFxuLVxcbi1zdGF0aWMgaW50IHJ0MngwMHVzYl9hbGxvY19yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4te1xcbi1cXHRydDJ4MDBkZXYtXFx1MDAzZWNzci5jYWNoZSA9IGt6YWxsb2MoQ1NSX0NBQ0hFX1NJWkUsIEdGUF9LRVJORUwpO1xcbi1cXHRpZiAoIXJ0MngwMGRldi1cXHUwMDNlY3NyLmNhY2hlKVxcbi1cXHRcXHRnb3RvIGV4aXQ7XFxuLVxcbi1cXHRydDJ4MDBkZXYtXFx1MDAzZWVlcHJvbSA9IGt6YWxsb2MocnQyeDAwZGV2LVxcdTAwM2VvcHMtXFx1MDAzZWVlcHJvbV9zaXplLCBHRlBfS0VSTkVMKTtcXG4tXFx0aWYgKCFydDJ4MDBkZXYtXFx1MDAzZWVlcHJvbSlcXG4tXFx0XFx0Z290byBleGl0O1xcbi1cXG4tXFx0cnQyeDAwZGV2LVxcdTAwM2VyZiA9IGt6YWxsb2MocnQyeDAwZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXJmX3NpemUsIEdGUF9LRVJORUwpO1xcbi1cXHRpZiAoIXJ0MngwMGRldi1cXHUwMDNlcmYpXFxuLVxcdFxcdGdvdG8gZXhpdDtcXG4tXFxuLVxcdHJldHVybiAwO1xcbi1cXG4tZXhpdDpcXG4tXFx0cnQyeDAwX3Byb2JlX2VycihcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIHJlZ2lzdGVyc1xcXFxuXFxcIik7XFxuLVxcbi1cXHRydDJ4MDB1c2JfZnJlZV9yZWcocnQyeDAwZGV2KTtcXG4tXFxuLVxcdHJldHVybiAtRU5PTUVNO1xcbi19XFxuLVxcbiBpbnQgcnQyeDAwdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4gXFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpXFxuIHtcXG4gXFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcXG4tXFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuIFxcdHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXY7XFxuK1xcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xcbitcXHRfX2xlMTYgKmVlcHJvbTtcXG4rXFx0dm9pZCAqY2FjaGU7XFxuIFxcdGludCByZXR2YWw7XFxuK1xcdHUzMiogcmY7XFxuIFxcbiBcXHR1c2JfcmVzZXRfZGV2aWNlKHVzYl9kZXYpO1xcbiBcXG4rXFx0Y2FjaGUgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIENTUl9DQUNIRV9TSVpFLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFjYWNoZSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRlZXByb20gPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIG9wcy1cXHUwMDNlZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIWVlcHJvbSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRyZiA9IGRldm1fa3phbGxvYyhcXHUwMDI2dXNiX2ludGYtXFx1MDAzZWRldiwgb3BzLVxcdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFyZilcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbiBcXHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhzdHJ1Y3Rfc2l6ZShydDJ4MDBkZXYsIGFuY2hvciwgMSksIG9wcy1cXHUwMDNlaHcpO1xcbiBcXHRpZiAoIWh3KSB7XFxuIFxcdFxcdHJ0MngwMF9wcm9iZV9lcnIoXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBoYXJkd2FyZVxcXFxuXFxcIik7XFxuQEAgLTgxNiwxNiArNzkyLDE1IEBAIGludCBydDJ4MDB1c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbiBcXHRydDJ4MDBkZXYtXFx1MDAzZWRldiA9IFxcdTAwMjZ1c2JfaW50Zi1cXHUwMDNlZGV2O1xcbiBcXHRydDJ4MDBkZXYtXFx1MDAzZW9wcyA9IG9wcztcXG4gXFx0cnQyeDAwZGV2LVxcdTAwM2VodyA9IGh3O1xcbitcXHRydDJ4MDBkZXYtXFx1MDAzZWNzci5jYWNoZSA9IGNhY2hlO1xcbitcXHRydDJ4MDBkZXYtXFx1MDAzZWVlcHJvbSA9IGVlcHJvbTtcXG4rXFx0cnQyeDAwZGV2LVxcdTAwM2VyZiA9IHJmO1xcbiBcXG4gXFx0cnQyeDAwX3NldF9jaGlwX2ludGYocnQyeDAwZGV2LCBSVDJYMDBfQ0hJUF9JTlRGX1VTQik7XFxuIFxcbiBcXHRJTklUX1dPUksoXFx1MDAyNnJ0MngwMGRldi1cXHUwMDNlcnhkb25lX3dvcmssIHJ0MngwMHVzYl93b3JrX3J4ZG9uZSk7XFxuIFxcdElOSVRfV09SSyhcXHUwMDI2cnQyeDAwZGV2LVxcdTAwM2V0eGRvbmVfd29yaywgcnQyeDAwdXNiX3dvcmtfdHhkb25lKTtcXG4gXFxuLVxcdHJldHZhbCA9IHJ0MngwMHVzYl9hbGxvY19yZWcocnQyeDAwZGV2KTtcXG4tXFx0aWYgKHJldHZhbClcXG4tXFx0XFx0Z290byBleGl0X2ZyZWVfZGV2aWNlO1xcbi1cXG4gXFx0aW5pdF91c2JfYW5jaG9yKHJ0MngwMGRldi1cXHUwMDNlYW5jaG9yKTtcXG4gXFxuIFxcdHJldHZhbCA9IHJ0MngwMGxpYl9wcm9iZV9kZXYocnQyeDAwZGV2KTtcXG5AQCAtODM2LDkgKzgxMSw2IEBAIGludCBydDJ4MDB1c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbiBcXG4gZXhpdF9mcmVlX2FuY2hvcjpcXG4gXFx0dXNiX2tpbGxfYW5jaG9yZWRfdXJicyhydDJ4MDBkZXYtXFx1MDAzZWFuY2hvcik7XFxuLVxcdHJ0MngwMHVzYl9mcmVlX3JlZyhydDJ4MDBkZXYpO1xcbi1cXG4tZXhpdF9mcmVlX2RldmljZTpcXG4gXFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xcbiBcXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcXG4gXFxuQEAgLTg1NSw3ICs4MjcsNiBAQCB2b2lkIHJ0MngwMHVzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcXG4gXFx0ICogRnJlZSBhbGwgYWxsb2NhdGVkIGRhdGEuXFxuIFxcdCAqL1xcbiBcXHRydDJ4MDBsaWJfcmVtb3ZlX2RldihydDJ4MDBkZXYpO1xcbi1cXHRydDJ4MDB1c2JfZnJlZV9yZWcocnQyeDAwZGV2KTtcXG4gXFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xcbiBcXG4gXFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgTlVMTCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjIzLjIxNjY0NTMwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDczNjU1MDYzNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlQyWDAwXCIsXG4gICAgXCJSVDI4MDBQQ0lcIixcbiAgICBcIlJUMjgwMFVTQlwiLFxuICAgIFwiUlQyNDAwUENJXCIsXG4gICAgXCJSVDI1MDBQQ0lcIixcbiAgICBcIlJUNjFQQ0lcIixcbiAgICBcIlJUMjUwMFVTQlwiLFxuICAgIFwiUlQ3M1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0MngwMHBjaV9wcm9iZVwiLFxuICAgIFwicnQyeDAwcGNpX3JlbW92ZVwiLFxuICAgIFwicnQyeDAwdXNiX3Byb2JlXCIsXG4gICAgXCJydDJ4MDB1c2JfZGlzY29ubmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBQQ0kgYW5kIFVTQiByZXNvdXJjZSBtYW5hZ2VtZW50IGluIHRoZSBydDJ4MDAgd2lyZWxlc3MgZHJpdmVyIHRvIHVzZSBkZXZyZXMgKGRldm1fKiBhbmQgcGNpbV8qIGZ1bmN0aW9ucykuIEZ1enppbmcgdGhlIHByb2JlIGFuZCBkaXNjb25uZWN0L3JlbW92ZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgcmVzb3VyY2UgbWFuYWdlbWVudCBkb2VzIG5vdCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzIG9yIGRldmljZSByZW1vdmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDMxYmI5ODEzMDZjMTIwNjc0NDgyNDE4NGExNjFkODhkNzIxNmE5ODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxOCAwMTowOToyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHBjaS5jXG5pbmRleCBjYWJlZWYwZGRlNDVkNS4uZDQ2MzViNTMxNDgxOGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHBjaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMHBjaS5jXG5AQCAtMTksODQgKzE5LDUwIEBAXG4gI2luY2x1ZGUgXCJydDJ4MDAuaFwiXG4gI2luY2x1ZGUgXCJydDJ4MDBwY2kuaFwiXG4gXG4tLypcbi0gKiBQQ0kgZHJpdmVyIGhhbmRsZXJzLlxuLSAqL1xuLXN0YXRpYyB2b2lkIHJ0MngwMHBjaV9mcmVlX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLXtcbi1cdGtmcmVlKHJ0MngwMGRldi1cdTAwM2VyZik7XG4tXHRydDJ4MDBkZXYtXHUwMDNlcmYgPSBOVUxMO1xuLVxuLVx0a2ZyZWUocnQyeDAwZGV2LVx1MDAzZWVlcHJvbSk7XG4tXHRydDJ4MDBkZXYtXHUwMDNlZWVwcm9tID0gTlVMTDtcbi1cbi1cdGlmIChydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UpIHtcbi1cdFx0aW91bm1hcChydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UpO1xuLVx0XHRydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UgPSBOVUxMO1xuLVx0fVxuLX1cbi1cbi1zdGF0aWMgaW50IHJ0MngwMHBjaV9hbGxvY19yZWcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbi17XG4tXHRzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiA9IHRvX3BjaV9kZXYocnQyeDAwZGV2LVx1MDAzZWRldik7XG4tXG4tXHRydDJ4MDBkZXYtXHUwMDNlY3NyLmJhc2UgPSBwY2lfaW9yZW1hcF9iYXIocGNpX2RldiwgMCk7XG4tXHRpZiAoIXJ0MngwMGRldi1cdTAwM2Vjc3IuYmFzZSlcbi1cdFx0Z290byBleGl0O1xuLVxuLVx0cnQyeDAwZGV2LVx1MDAzZWVlcHJvbSA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIXJ0MngwMGRldi1cdTAwM2VlZXByb20pXG4tXHRcdGdvdG8gZXhpdDtcbi1cbi1cdHJ0MngwMGRldi1cdTAwM2VyZiA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghcnQyeDAwZGV2LVx1MDAzZXJmKVxuLVx0XHRnb3RvIGV4aXQ7XG4tXG4tXHRyZXR1cm4gMDtcbi1cbi1leGl0OlxuLVx0cnQyeDAwX3Byb2JlX2VycihcIkZhaWxlZCB0byBhbGxvY2F0ZSByZWdpc3RlcnNcXG5cIik7XG4tXG4tXHRydDJ4MDBwY2lfZnJlZV9yZWcocnQyeDAwZGV2KTtcbi1cbi1cdHJldHVybiAtRU5PTUVNO1xuLX1cbi1cbiBpbnQgcnQyeDAwcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2LCBjb25zdCBzdHJ1Y3QgcnQyeDAwX29wcyAqb3BzKVxuIHtcbi1cdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuIFx0c3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldjtcbitcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuK1x0dm9pZCBfX2lvbWVtICpiYXNlO1xuK1x0X19sZTE2ICplZXByb207XG4gXHRpbnQgcmV0dmFsO1xuIFx0dTE2IGNoaXA7XG4rXHR1MzIgKnJmO1xuIFxuLVx0cmV0dmFsID0gcGNpX2VuYWJsZV9kZXZpY2UocGNpX2Rldik7XG4rXHRyZXR2YWwgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGNpX2Rldik7XG4gXHRpZiAocmV0dmFsKSB7XG4gXHRcdHJ0MngwMF9wcm9iZV9lcnIoXCJFbmFibGUgZGV2aWNlIGZhaWxlZFxcblwiKTtcbiBcdFx0cmV0dXJuIHJldHZhbDtcbiBcdH1cbiBcbi1cdHJldHZhbCA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpX2RldiwgcGNpX25hbWUocGNpX2RldikpO1xuLVx0aWYgKHJldHZhbCkge1xuLVx0XHRydDJ4MDBfcHJvYmVfZXJyKFwiUENJIHJlcXVlc3QgcmVnaW9ucyBmYWlsZWRcXG5cIik7XG4tXHRcdGdvdG8gZXhpdF9kaXNhYmxlX2RldmljZTtcbitcdGJhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2lfZGV2LCAwLCBwY2lfbmFtZShwY2lfZGV2KSk7XG4rXHRpZiAoSVNfRVJSKGJhc2UpKSB7XG4rXHRcdHJ0MngwMF9wcm9iZV9lcnIoXCJQQ0kgaW9tYXAgcmVnaW9uIGZhaWxlZFxcblwiKTtcbitcdFx0cmV0dXJuIFBUUl9FUlIoYmFzZSk7XG4gXHR9XG4gXG4gXHRwY2lfc2V0X21hc3RlcihwY2lfZGV2KTtcbiBcbi1cdGlmIChwY2lfc2V0X213aShwY2lfZGV2KSlcbitcdGlmIChwY2ltX3NldF9td2kocGNpX2RldikpXG4gXHRcdHJ0MngwMF9wcm9iZV9lcnIoXCJNV0kgbm90IGF2YWlsYWJsZVxcblwiKTtcbiBcbiBcdGlmIChkbWFfc2V0X21hc2soXHUwMDI2cGNpX2Rldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpKSB7XG4gXHRcdHJ0MngwMF9wcm9iZV9lcnIoXCJQQ0kgRE1BIG5vdCBzdXBwb3J0ZWRcXG5cIik7XG4tXHRcdHJldHZhbCA9IC1FSU87XG4tXHRcdGdvdG8gZXhpdF9yZWxlYXNlX3JlZ2lvbnM7XG4rXHRcdHJldHVybiAtRUlPO1xuIFx0fVxuIFxuK1x0ZWVwcm9tID0gZGV2bV9remFsbG9jKFx1MDAyNnBjaV9kZXYtXHUwMDNlZGV2LCBvcHMtXHUwMDNlZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFlZXByb20pXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0cmYgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGNpX2Rldi1cdTAwM2VkZXYsIG9wcy1cdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcmYpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuIFx0aHcgPSBpZWVlODAyMTFfYWxsb2NfaHcoc2l6ZW9mKHN0cnVjdCBydDJ4MDBfZGV2KSwgb3BzLVx1MDAzZWh3KTtcbiBcdGlmICghaHcpIHtcbiBcdFx0cnQyeDAwX3Byb2JlX2VycihcIkZhaWxlZCB0byBhbGxvY2F0ZSBoYXJkd2FyZVxcblwiKTtcbi1cdFx0cmV0dmFsID0gLUVOT01FTTtcbi1cdFx0Z290byBleGl0X3JlbGVhc2VfcmVnaW9ucztcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXG4gXHRwY2lfc2V0X2RydmRhdGEocGNpX2RldiwgaHcpO1xuQEAgLTEwNSwxOCArNzEsMTcgQEAgaW50IHJ0MngwMHBjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiwgY29uc3Qgc3RydWN0IHJ0MngwMF9vcHMgKm9wcylcbiBcdHJ0MngwMGRldi1cdTAwM2VkZXYgPSBcdTAwMjZwY2lfZGV2LVx1MDAzZWRldjtcbiBcdHJ0MngwMGRldi1cdTAwM2VvcHMgPSBvcHM7XG4gXHRydDJ4MDBkZXYtXHUwMDNlaHcgPSBodztcbitcdHJ0MngwMGRldi1cdTAwM2Vjc3IuYmFzZSA9IGJhc2U7XG4gXHRydDJ4MDBkZXYtXHUwMDNlaXJxID0gcGNpX2Rldi1cdTAwM2VpcnE7XG4gXHRydDJ4MDBkZXYtXHUwMDNlbmFtZSA9IG9wcy1cdTAwM2VuYW1lO1xuK1x0cnQyeDAwZGV2LVx1MDAzZWVlcHJvbSA9IGVlcHJvbTtcbitcdHJ0MngwMGRldi1cdTAwM2VyZiA9IHJmO1xuIFxuIFx0aWYgKHBjaV9pc19wY2llKHBjaV9kZXYpKVxuIFx0XHRydDJ4MDBfc2V0X2NoaXBfaW50ZihydDJ4MDBkZXYsIFJUMlgwMF9DSElQX0lOVEZfUENJRSk7XG4gXHRlbHNlXG4gXHRcdHJ0MngwMF9zZXRfY2hpcF9pbnRmKHJ0MngwMGRldiwgUlQyWDAwX0NISVBfSU5URl9QQ0kpO1xuIFxuLVx0cmV0dmFsID0gcnQyeDAwcGNpX2FsbG9jX3JlZyhydDJ4MDBkZXYpO1xuLVx0aWYgKHJldHZhbClcbi1cdFx0Z290byBleGl0X2ZyZWVfZGV2aWNlO1xuLVxuIFx0LypcbiBcdCAqIEJlY2F1c2UgcnQzMjkwIGNoaXAgdXNlIGRpZmZlcmVudCBlZnVzZSBvZmZzZXQgdG8gcmVhZCBlZnVzZSBkYXRhLlxuIFx0ICogU28gYmVmb3JlIHJlYWQgZWZ1c2UgaXQgbmVlZCB0byBpbmRpY2F0ZSBpdCBpcyB0aGVcbkBAIC0xMjcsMjMgKzkyLDEzIEBAIGludCBydDJ4MDBwY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYsIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpXG4gXG4gXHRyZXR2YWwgPSBydDJ4MDBsaWJfcHJvYmVfZGV2KHJ0MngwMGRldik7XG4gXHRpZiAocmV0dmFsKVxuLVx0XHRnb3RvIGV4aXRfZnJlZV9yZWc7XG4rXHRcdGdvdG8gZXhpdF9mcmVlX2RldmljZTtcbiBcbiBcdHJldHVybiAwO1xuIFxuLWV4aXRfZnJlZV9yZWc6XG4tXHRydDJ4MDBwY2lfZnJlZV9yZWcocnQyeDAwZGV2KTtcbi1cbiBleGl0X2ZyZWVfZGV2aWNlOlxuIFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xuIFxuLWV4aXRfcmVsZWFzZV9yZWdpb25zOlxuLVx0cGNpX2NsZWFyX213aShwY2lfZGV2KTtcbi1cdHBjaV9yZWxlYXNlX3JlZ2lvbnMocGNpX2Rldik7XG4tXG4tZXhpdF9kaXNhYmxlX2RldmljZTpcbi1cdHBjaV9kaXNhYmxlX2RldmljZShwY2lfZGV2KTtcbi1cbiBcdHJldHVybiByZXR2YWw7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHJ0MngwMHBjaV9wcm9iZSk7XG5AQCAtMTUzLDE5ICsxMDgsOCBAQCB2b2lkIHJ0MngwMHBjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBjaV9kZXYpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZGV2KTtcbiBcdHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYgPSBody1cdTAwM2Vwcml2O1xuIFxuLVx0Lypcbi1cdCAqIEZyZWUgYWxsIGFsbG9jYXRlZCBkYXRhLlxuLVx0ICovXG4gXHRydDJ4MDBsaWJfcmVtb3ZlX2RldihydDJ4MDBkZXYpO1xuLVx0cnQyeDAwcGNpX2ZyZWVfcmVnKHJ0MngwMGRldik7XG4gXHRpZWVlODAyMTFfZnJlZV9odyhodyk7XG4tXG4tXHQvKlxuLVx0ICogRnJlZSB0aGUgUENJIGRldmljZSBkYXRhLlxuLVx0ICovXG4tXHRwY2lfY2xlYXJfbXdpKHBjaV9kZXYpO1xuLVx0cGNpX2Rpc2FibGVfZGV2aWNlKHBjaV9kZXYpO1xuLVx0cGNpX3JlbGVhc2VfcmVnaW9ucyhwY2lfZGV2KTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwcGNpX3JlbW92ZSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDB1c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwdXNiLmNcbmluZGV4IDQ3ZTQyN2VhODYyMjFhLi45MzgzMjA0Nzg3Mjg2OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwdXNiLmNcbkBAIC03NTUsNTUgKzc1NSwzMSBAQCB2b2lkIHJ0MngwMHVzYl91bmluaXRpYWxpemUoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwocnQyeDAwdXNiX3VuaW5pdGlhbGl6ZSk7XG4gXG4tLypcbi0gKiBVU0IgZHJpdmVyIGhhbmRsZXJzLlxuLSAqL1xuLXN0YXRpYyB2b2lkIHJ0MngwMHVzYl9mcmVlX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLXtcbi1cdGtmcmVlKHJ0MngwMGRldi1cdTAwM2VyZik7XG4tXHRydDJ4MDBkZXYtXHUwMDNlcmYgPSBOVUxMO1xuLVxuLVx0a2ZyZWUocnQyeDAwZGV2LVx1MDAzZWVlcHJvbSk7XG4tXHRydDJ4MDBkZXYtXHUwMDNlZWVwcm9tID0gTlVMTDtcbi1cbi1cdGtmcmVlKHJ0MngwMGRldi1cdTAwM2Vjc3IuY2FjaGUpO1xuLVx0cnQyeDAwZGV2LVx1MDAzZWNzci5jYWNoZSA9IE5VTEw7XG4tfVxuLVxuLXN0YXRpYyBpbnQgcnQyeDAwdXNiX2FsbG9jX3JlZyhzdHJ1Y3QgcnQyeDAwX2RldiAqcnQyeDAwZGV2KVxuLXtcbi1cdHJ0MngwMGRldi1cdTAwM2Vjc3IuY2FjaGUgPSBremFsbG9jKENTUl9DQUNIRV9TSVpFLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghcnQyeDAwZGV2LVx1MDAzZWNzci5jYWNoZSlcbi1cdFx0Z290byBleGl0O1xuLVxuLVx0cnQyeDAwZGV2LVx1MDAzZWVlcHJvbSA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VlZXByb21fc2l6ZSwgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIXJ0MngwMGRldi1cdTAwM2VlZXByb20pXG4tXHRcdGdvdG8gZXhpdDtcbi1cbi1cdHJ0MngwMGRldi1cdTAwM2VyZiA9IGt6YWxsb2MocnQyeDAwZGV2LVx1MDAzZW9wcy1cdTAwM2VyZl9zaXplLCBHRlBfS0VSTkVMKTtcbi1cdGlmICghcnQyeDAwZGV2LVx1MDAzZXJmKVxuLVx0XHRnb3RvIGV4aXQ7XG4tXG4tXHRyZXR1cm4gMDtcbi1cbi1leGl0OlxuLVx0cnQyeDAwX3Byb2JlX2VycihcIkZhaWxlZCB0byBhbGxvY2F0ZSByZWdpc3RlcnNcXG5cIik7XG4tXG4tXHRydDJ4MDB1c2JfZnJlZV9yZWcocnQyeDAwZGV2KTtcbi1cbi1cdHJldHVybiAtRU5PTUVNO1xuLX1cbi1cbiBpbnQgcnQyeDAwdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbiBcdFx0ICAgIGNvbnN0IHN0cnVjdCBydDJ4MDBfb3BzICpvcHMpXG4ge1xuIFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcbi1cdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuIFx0c3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldjtcbitcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xuK1x0X19sZTE2ICplZXByb207XG4rXHR2b2lkICpjYWNoZTtcbiBcdGludCByZXR2YWw7XG4rXHR1MzIqIHJmO1xuIFxuIFx0dXNiX3Jlc2V0X2RldmljZSh1c2JfZGV2KTtcbiBcbitcdGNhY2hlID0gZGV2bV9remFsbG9jKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgQ1NSX0NBQ0hFX1NJWkUsIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFjYWNoZSlcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRlZXByb20gPSBkZXZtX2t6YWxsb2MoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBvcHMtXHUwMDNlZWVwcm9tX3NpemUsIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFlZXByb20pXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0cmYgPSBkZXZtX2t6YWxsb2MoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBvcHMtXHUwMDNlcmZfc2l6ZSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIXJmKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbiBcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHN0cnVjdF9zaXplKHJ0MngwMGRldiwgYW5jaG9yLCAxKSwgb3BzLVx1MDAzZWh3KTtcbiBcdGlmICghaHcpIHtcbiBcdFx0cnQyeDAwX3Byb2JlX2VycihcIkZhaWxlZCB0byBhbGxvY2F0ZSBoYXJkd2FyZVxcblwiKTtcbkBAIC04MTYsMTYgKzc5MiwxNSBAQCBpbnQgcnQyeDAwdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbiBcdHJ0MngwMGRldi1cdTAwM2VkZXYgPSBcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXY7XG4gXHRydDJ4MDBkZXYtXHUwMDNlb3BzID0gb3BzO1xuIFx0cnQyeDAwZGV2LVx1MDAzZWh3ID0gaHc7XG4rXHRydDJ4MDBkZXYtXHUwMDNlY3NyLmNhY2hlID0gY2FjaGU7XG4rXHRydDJ4MDBkZXYtXHUwMDNlZWVwcm9tID0gZWVwcm9tO1xuK1x0cnQyeDAwZGV2LVx1MDAzZXJmID0gcmY7XG4gXG4gXHRydDJ4MDBfc2V0X2NoaXBfaW50ZihydDJ4MDBkZXYsIFJUMlgwMF9DSElQX0lOVEZfVVNCKTtcbiBcbiBcdElOSVRfV09SSyhcdTAwMjZydDJ4MDBkZXYtXHUwMDNlcnhkb25lX3dvcmssIHJ0MngwMHVzYl93b3JrX3J4ZG9uZSk7XG4gXHRJTklUX1dPUksoXHUwMDI2cnQyeDAwZGV2LVx1MDAzZXR4ZG9uZV93b3JrLCBydDJ4MDB1c2Jfd29ya190eGRvbmUpO1xuIFxuLVx0cmV0dmFsID0gcnQyeDAwdXNiX2FsbG9jX3JlZyhydDJ4MDBkZXYpO1xuLVx0aWYgKHJldHZhbClcbi1cdFx0Z290byBleGl0X2ZyZWVfZGV2aWNlO1xuLVxuIFx0aW5pdF91c2JfYW5jaG9yKHJ0MngwMGRldi1cdTAwM2VhbmNob3IpO1xuIFxuIFx0cmV0dmFsID0gcnQyeDAwbGliX3Byb2JlX2RldihydDJ4MDBkZXYpO1xuQEAgLTgzNiw5ICs4MTEsNiBAQCBpbnQgcnQyeDAwdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbiBcbiBleGl0X2ZyZWVfYW5jaG9yOlxuIFx0dXNiX2tpbGxfYW5jaG9yZWRfdXJicyhydDJ4MDBkZXYtXHUwMDNlYW5jaG9yKTtcbi1cdHJ0MngwMHVzYl9mcmVlX3JlZyhydDJ4MDBkZXYpO1xuLVxuLWV4aXRfZnJlZV9kZXZpY2U6XG4gXHRpZWVlODAyMTFfZnJlZV9odyhodyk7XG4gXHR1c2Jfc2V0X2ludGZkYXRhKHVzYl9pbnRmLCBOVUxMKTtcbiBcbkBAIC04NTUsNyArODI3LDYgQEAgdm9pZCBydDJ4MDB1c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXG4gXHQgKiBGcmVlIGFsbCBhbGxvY2F0ZWQgZGF0YS5cbiBcdCAqL1xuIFx0cnQyeDAwbGliX3JlbW92ZV9kZXYocnQyeDAwZGV2KTtcbi1cdHJ0MngwMHVzYl9mcmVlX3JlZyhydDJ4MDBkZXYpO1xuIFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xuIFxuIFx0dXNiX3NldF9pbnRmZGF0YSh1c2JfaW50ZiwgTlVMTCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOToyMy4yMTY2NDcxODNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDUyMDQ3MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlZmFjdG9yaW5nIFBhdGNoIGZvciBydDJ4MDAgRHJpdmVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGhvbmVzIGluIG9uIHRoZSBjb3JlIGNoYW5nZTogaXQncyBhIHJlZmFjdG9yaW5nLiBUaGV5J3JlIGRpdGNoaW5nIHRoZSBtYW51YWwgbWVtb3J5IGFsbG9jYXRpb24gYW5kIHJlc291cmNlIG1hbmFnZW1lbnQgaW4gYHJ0MngwMHBjaS5jYCBhbmQgYHJ0MngwMHVzYi5jYCBhbmQgbW92aW5nIG92ZXIgdG8gdGhlIGBkZXZtXypgIGZhbWlseS4gVGhhdCdzIGEgZ29vZCB0aGluZywgZ2VuZXJhbGx5IHNwZWFraW5nLCBsZXZlcmFnaW5nIHRoZSBrZXJuZWwncyBkZXZpY2UgcmVzb3VyY2UgbWFuYWdlbWVudCBpcyBhbG1vc3QgYWx3YXlzIGEgd2luIGZvciByb2J1c3RuZXNzIGFuZCByZWFkYWJpbGl0eS4gVGhpcyBtZWFucyBmdW5jdGlvbnMgbGlrZSBgcnQyeDAwcGNpX2ZyZWVfcmVnYCwgYHJ0MngwMHBjaV9hbGxvY19yZWdgLCBgcnQyeDAwdXNiX2ZyZWVfcmVnYCwgYW5kIGBydDJ4MDB1c2JfYWxsb2NfcmVnYCBhcmUgYmVpbmcgcmVtb3ZlZCwgd2hpY2ggaXMgZXhwZWN0ZWQuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQsIGFuZCBJJ20gc3VyZSBhbnlvbmUgd2l0aCBteSBsZXZlbCBvZiBleHBlcmllbmNlIGltbWVkaWF0ZWx5IGFza3MsIGlzOiBEb2VzIHRoaXMgaW1wYWN0IGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgd2FycmFudHMgZnV6emluZyBhdHRlbnRpb24/IEFic29sdXRlbHksIHRoaXMgY2hhbmdlcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGNsZWFudXAgc2VxdWVuY2VzLiBJdCdzIHJlZmFjdG9yaW5nIHRvIGBkZXZyZXNgLCBzbyBpdCBjYW4gZWFzaWx5IGxlYWQgdG8gYSBidWcgaW4gdGhlIGVycm9yLWhhbmRsaW5nIG9yIHJlc291cmNlIGNsZWFudXAgcG9ydGlvbnMuIFdlIGhhdmUgdG8gdGhpbmsgYWJvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGxlYWtzIGFyaXNpbmcgZnJvbSB0aGlzIGNoYW5nZS5cblxuR2l2ZW4gdGhpcyBhcHBsaWVzIHRvIFJhbGluaydzIHJ0MngwMCB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgc3BlY2lmaWNhbGx5IHRoZSBQQ0kgYW5kIFVTQiB2YXJpYW50cywgdGhpcyBvcGVucyB1cCBhdmVudWVzIGZvciBib3RoIFVTQiBmdXp6aW5nIChzeXprYWxsZXIncyBVU0IgZnV6emluZyB3b3VsZCBiZSBwZXJmZWN0KSBhbmQgUENJIGZ1enppbmcsIHdoaWNoIGlzIHNvbWV0aGluZyB0byBjb25zaWRlci4gVGhpcyBhbHNvIGRlcGVuZHMgb24gdGhlIGNvbmZpZ3VyYXRpb24uXG5cbkFscmlnaHQsIGxldCdzIHNlZSBpZiB3ZSBjYW4gY2hlY2sgdGhlIGNvbmZpZ3MgZm9yIHRoZSBkcml2ZXIuIEkgbmVlZCB0byBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnYC4gSSdsbCBzZWFyY2ggZm9yIHRoZSByZWxldmFudCBjb25maWdzIGFuZCBtYWtlIHN1cmUgdGhpcyBwYXRoIGlzIGNvdmVyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NzcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOToyOS4yNjg2OTk4NjNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk3NDgxOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUMlgwMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI6bWVudWNvbmZpZyBSVDJYMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmFsaW5rIGRyaXZlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTIyMD1jb25maWcgUlQyODAwX0xJQl9NTUlPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyMjU6Y29uZmlnIFJUMlgwMF9MSUJfTU1JT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIyOTpjb25maWcgUlQyWDAwX0xJQl9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjMwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyMzM6Y29uZmlnIFJUMlgwMF9MSUJfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjM3OmNvbmZpZyBSVDJYMDBfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzOC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI0MDpjb25maWcgUlQyWDAwX0xJQl9GSVJNV0FSRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNDEtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjQ0OmNvbmZpZyBSVDJYMDBfTElCX0NSWVBUT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNDUtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI0Nzpjb25maWcgUlQyWDAwX0xJQl9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0OC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNTE6Y29uZmlnIFJUMlgwMF9MSUJfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTItXFx0Ym9vbCBcXFwiUmFsaW5rIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI1OTpjb25maWcgUlQyWDAwX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJSYWxpbmsgZGVidWcgb3V0cHV0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOToyOS4zNTg0NTc4MjdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTEzMzg4MDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBQQ0kgYW5kIFVTQiBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYXJlIGFjdHVhbGx5IHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGUgUENJIGFuZCBVU0IgZHJpdmVycy4gSXQncyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uLCByZWFsbHkuIEkga25vdyB0aGVyZSBhcmUgdXN1YWxseSBhIG11bHRpdHVkZSBvZiBvcHRpb25zLCBvZnRlbiBzcHJlYWQgYWNyb3NzIGEgZmV3IGRpZmZlcmVudCBjb25maWcgZmlsZXMgb3Igd2l0aGluIGEgc2luZ2xlLCBjb21wbGV4IG9uZS4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBrZXkgbGluZXMgdGhhdCBkZWZpbmUgd2hldGhlciB0aGUgc3lzdGVtIGF0dGVtcHRzIHRvIGxvYWQgYW5kIGluaXRpYWxpemUgdGhvc2UgcGFydGljdWxhciBkcml2ZXJzIGF0IGJvb3QuIEknbGwgbmVlZCB0byBjb25zaWRlciB0aGluZ3MgbGlrZSBtb2R1bGUgYmxhY2tsaXN0aW5nLCBkZXZpY2UgdHJlZSBvdmVybGF5cyAoaWYgYXBwbGljYWJsZSksIGFuZCBhbnkgc3BlY2lmaWMga2VybmVsIG1vZHVsZSBvcHRpb25zIHRoYXQgbWlnaHQgYmUgaW4gcGxheS4gSSdsbCBhbHNvIHdhbnQgdG8gd2F0Y2ggb3V0IGZvciB0aGluZ3MgbGlrZSBlYXJseSBpbml0aWFsaXphdGlvbiBmbGFncyBvciBhbnkgY29uZGl0aW9uYWwgbG9naWMsIHdoaWNoIGNhbiBjb21wbGljYXRlIHRoZSBwcm9jZXNzIGEgYml0LCBidXQgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGZvciBteSBwdXJwb3Nlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE1OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjMyLjI3MTg0Nzc4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0Njg1ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVDIuKlVTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTExMT1lbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjExMzpjb25maWcgUlQyNTAwVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTExNC1cXHR0cmlzdGF0ZSBcXFwiUmFsaW5rIHJ0MjUwMCAoVVNCKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTEyND1jb25maWcgUlQ3M1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTM3OmNvbmZpZyBSVDI4MDBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTM4LVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgcnQyN3h4L3J0Mjh4eC9ydDMweHggKFVTQikgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0xNTA9aWYgUlQyODAwVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTUyOmNvbmZpZyBSVDI4MDBVU0JfUlQzM1hYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE1My1cXHRib29sIFxcXCJydDI4MDB1c2IgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0MzN4eCBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTYwOmNvbmZpZyBSVDI4MDBVU0JfUlQzNVhYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE2MS1cXHRib29sIFxcXCJydDI4MDB1c2IgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0MzV4eCBkZXZpY2VzIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTY4OmNvbmZpZyBSVDI4MDBVU0JfUlQzNTczXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE2OS1cXHRib29sIFxcXCJydDI4MDB1c2IgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0MzU3MyBkZXZpY2VzIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTc0OmNvbmZpZyBSVDI4MDBVU0JfUlQ1M1hYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE3NS1cXHRib29sIFxcXCJydDI4MDB1c2IgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0NTN4eCBkZXZpY2VzIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTgxOmNvbmZpZyBSVDI4MDBVU0JfUlQ1NVhYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE4Mi1cXHRib29sIFxcXCJydDI4MDB1c2IgLSBJbmNsdWRlIHN1cHBvcnQgZm9yIHJ0NTV4eCBkZXZpY2VzIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTE4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTg4OmNvbmZpZyBSVDI4MDBVU0JfVU5LTk9XTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xODktXFx0Ym9vbCBcXFwicnQyODAwdXNiIC0gSW5jbHVkZSBzdXBwb3J0IGZvciB1bmtub3duIChVU0IpIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjI5PWNvbmZpZyBSVDJYMDBfTElCX1BDSVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjMzOmNvbmZpZyBSVDJYMDBfTElCX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzQtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MDk6MzIuMzY2NTQxNTE0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzNjMzNDc3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCBmcmFtZWQgYXMgeW91ciB0aG91Z2h0cyBhcyBhbiBleHBlcnQ6XG5cbioqUmVmbGVjdGluZyBvbiBQQ0kgQ29uc2lkZXJhdGlvbnMqKlxuXG5SaWdodCwgdGhpbmtpbmcgYWJvdXQgUENJ4oCmIGl0IGFsbCBib2lscyBkb3duIHRvIHByb3RlY3RpbmcgY2FyZGhvbGRlciBkYXRhLCBvYnZpb3VzbHkuIEknbSBydW5uaW5nIHRocm91Z2ggdGhlIGZhbWlsaWFyIGNvbXBsaWFuY2UgcmVxdWlyZW1lbnRzLiBXZSd2ZSBnb3QgdGhlIHNpeCBtYWluIGdvYWxzOiBidWlsZCBhbmQgbWFpbnRhaW4gYSBzZWN1cmUgbmV0d29yayBhbmQgc3lzdGVtcywgcHJvdGVjdCBjYXJkaG9sZGVyIGRhdGEsIG1haW50YWluIGEgdnVsbmVyYWJpbGl0eSBtYW5hZ2VtZW50IHByb2dyYW0sIGltcGxlbWVudCBzdHJvbmcgYWNjZXNzIGNvbnRyb2wgbWVhc3VyZXMsIHJlZ3VsYXJseSBtb25pdG9yIGFuZCB0ZXN0IG5ldHdvcmtzLCBhbmQgbWFpbnRhaW4gYW4gaW5mb3JtYXRpb24gc2VjdXJpdHkgcG9saWN5LiBJIGtub3cgdGhpcyBpbnNpZGUgYW5kIG91dC4gSXTigJlzIGFib3V0IG1vcmUgdGhhbiBqdXN0IGNoZWNraW5nIGJveGVzLCB0aG91Z2guIEl0J3MgYWJvdXQgYSBjdWx0dXJlIG9mIHNlY3VyaXR5LCBlbWJlZGRlZCB3aXRoaW4gZXZlcnkgcHJvY2VzcyBhbmQgcHJvY2VkdXJlLlxuXG5JJ20gbWVudGFsbHkgb3V0bGluaW5nIHRoZSByZWxldmFudCBzZWN0aW9uczogc2NvcGUgZGV0ZXJtaW5hdGlvbiwgc2VnbWVudGF0aW9uLCBlbmNyeXB0aW9uIHN0cmF0ZWdpZXPigKYgSXQncyBhIHJpc2sgYXNzZXNzbWVudCBleGVyY2lzZSwgdWx0aW1hdGVseS4gSWRlbnRpZnlpbmcgdGhlIHdlYWsgcG9pbnRzLCB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyB3aGVyZSBhIGxvdCBvZiBvcmdhbml6YXRpb25zIHN0dW1ibGUuIFRoZXkgdHJlYXQgUENJIGFzIGEgb25lLXRpbWUgcHJvamVjdCwgbm90IGFuIG9uZ29pbmcgY29tbWl0bWVudC4gSSBuZWVkIHRvIGVtcGhhc2l6ZSB0aGUgaW1wb3J0YW5jZSBvZiBjb250aW51b3VzIG1vbml0b3JpbmcuIFZ1bG5lcmFiaWxpdHkgc2NhbnMsIHBlbmV0cmF0aW9uIHRlc3RzLCB0aGF0J3MgYWxsIGp1c3QgdGhlIHN0YXJ0aW5nIHBvaW50LiBJdCdzIGFib3V0IHByb2FjdGl2ZSBkZWZlbnNlLCBub3QgcmVhY3RpdmUgZGFtYWdlIGNvbnRyb2wuIEFuZCwgb2YgY291cnNlLCB0aGUgZXZlci1wcmVzZW50IHRocmVhdCBvZiBwaGlzaGluZyBhdHRhY2tzIGFuZCBzb2NpYWwgZW5naW5lZXJpbmcuIFBlcnNvbm5lbCB0cmFpbmluZyBhbmQgYXdhcmVuZXNzIGFyZSBhYnNvbHV0ZWx5IGNyaXRpY2FsIGhlcmUuIFdlIG5lZWQgdG8gY3JlYXRlIGEgaHVtYW4gZmlyZXdhbGwuXG5cbkl0J3MgdGVtcHRpbmcgdG8gdGhpbmsgYWJvdXQgYXV0b21hdGVkIHNvbHV0aW9ucyDigJMgYW5kLCB5ZXMsIHdlIHNob3VsZCBsZXZlcmFnZSB0aGVtIHdoZXJlIGFwcHJvcHJpYXRlIOKAkyBidXQgY29tcGxpYW5jZSBpc24ndCBhIHNpbHZlciBidWxsZXQuIFlvdSBjYW4ndCBqdXN0IGJ1eSB5b3VyIHdheSB0byBzZWN1cml0eS4gSXQncyBhYm91dCBhIGhvbGlzdGljIGFwcHJvYWNoLCBhIGNvbXByZWhlbnNpdmUgc2VjdXJpdHkgcHJvZ3JhbS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQyMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MDk6MzUuODAyODc4Njg0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4Mzg4NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVDIuKlBDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTE5PWlmIFJUMlgwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjE6Y29uZmlnIFJUMjQwMFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiUmFsaW5rIHJ0MjQwMCAoUENJL1BDTUNJQSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0zMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MzM6Y29uZmlnIFJUMjUwMFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0zNC1cXHR0cmlzdGF0ZSBcXFwiUmFsaW5rIHJ0MjUwMCAoUENJL1BDTUNJQSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz00NT1jb25maWcgUlQ2MVBDSVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzo2MDpjb25maWcgUlQyODAwUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgcnQyN3h4L3J0Mjh4eC9ydDMweHggKFBDSS9QQ0llL1BDTUNJQSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz03Nz1pZiBSVDI4MDBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjc5OmNvbmZpZyBSVDI4MDBQQ0lfUlQzM1hYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTgwLVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzM3h4IGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjg3OmNvbmZpZyBSVDI4MDBQQ0lfUlQzNVhYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTg4LVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzNXh4IGRldmljZXMgKEVYUEVSSU1FTlRBTClcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjk2OmNvbmZpZyBSVDI4MDBQQ0lfUlQ1M1hYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTk3LVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQ1M3h4IGRldmljZXMgKEVYUEVSSU1FTlRBTClcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMDQ6Y29uZmlnIFJUMjgwMFBDSV9SVDMyOTBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTA1LVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzMjkwIGRldmljZXMgKEVYUEVSSU1FTlRBTClcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjI1PWNvbmZpZyBSVDJYMDBfTElCX01NSU9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIyOTpjb25maWcgUlQyWDAwX0xJQl9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjMwLVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjM1Ljg4MTI3MjkwOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2Nzc0NTgwNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgUlQyWDAwIERyaXZlciBNb2R1bGVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGVuYWJsZSBhIGZldyBSVDJYMDAgbW9kdWxlcyBoZXJlLCBzcGVjaWZpY2FsbHk6IGBSVDJYMDBgLCBgUlQyNTAwVVNCYCwgYFJUNzNVU0JgLCBgUlQyODAwVVNCYCwgYFJUMjQwMFBDSWAsIGBSVDI1MDBQQ0lgLCBgUlQ2MVBDSWAsIGFuZCBgUlQyODAwUENJYC4gTm93LCBJJ20gdGhpbmtpbmcsIGFyZSBgUlQyODAwVVNCYCBhbmQgYFJUMjgwMFBDSWAgZW5vdWdoPyBGb3Igc2FmZXR5J3Mgc2FrZSwgSSdtIGxlYW5pbmcgdG93YXJkcyBlbmFibGluZyAqYWxsKiBvZiB0aGVtLiBPciwgcGVyaGFwcywgSSBjb3VsZCBqdXN0IHN0aWNrIHdpdGggYFJUMjgwMFVTQmAgYW5kIGBSVDI4MDBQQ0lgLiBJIG5lZWQgdG8gYmUgY2VydGFpbi5cblxuTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGBSVDJYMDBfTElCX1BDSWAgYW5kIGBSVDJYMDBfTElCX1VTQmAgbGlicmFyaWVzIGFyZSBzZWxlY3RlZCBieSB0aGVzZSBtb2R1bGVzOyB5dXAsIHRoZXkgYXJlLiBUaGF0J3MgZ29vZC5cblxuU28sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjbGVhciwgaGVyZSdzIHRoZSBsaXN0IG9mIGNvbmZpZ3MgSSdsbCBiZSBlbmFibGluZzpcblxuKiAgIGBSVDJYMDBgXG4qICAgYFJUMjUwMFVTQmBcbiogICBgUlQ3M1VTQmBcbiogICBgUlQyODAwVVNCYFxuKiAgIGBSVDI0MDBQQ0lgXG4qICAgYFJUMjUwMFBDSWBcbiogICBgUlQ2MVBDSWBcbiogICBgUlQyODAwUENJYFxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZC4gSXQncyB0aGUgcHJvYmUgYW5kIGRpc2Nvbm5lY3QgZnVuY3Rpb25zOiBgcnQyeDAwcGNpX3Byb2JlYCwgYHJ0MngwMHBjaV9yZW1vdmVgLCBgcnQyeDAwdXNiX3Byb2JlYCwgYW5kIGBydDJ4MDB1c2JfZGlzY29ubmVjdGAuIERlZmluaXRlbHkgd29ydGggZnV6emluZyB0aGVzZSBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgc2luY2UgdGhpcyBpbnZvbHZlcyB0ZXN0aW5nIHRoZSBuZXcgZGV2cmVzLWJhc2VkIGluaXRpYWxpemF0aW9uLlxuXG5Gb2N1c2luZyBpbiBvbiB0aG9zZSwgaXQncyBjbGVhciB0aGUga2V5IHN5bWJvbHMgdG8gcHJpb3JpdGl6ZSBmb3IgZnV6emluZyBhcmU6IGBydDJ4MDBwY2lfcHJvYmVgIGFuZCBgcnQyeDAwdXNiX3Byb2JlYC5cblxuSGFuZyBvbiwgbGV0IG1lIGRvdWJsZS1jaGVjay4uLiBZZXMsIEkgYWxzbyBoYXZlIGBydDJ4MDBwY2lfcmVtb3ZlYCBhbmQgYHJ0MngwMHVzYl9kaXNjb25uZWN0YCB0aGF0IGFyZSBtb2RpZmllZC4gU28sIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcgaXM6IGBydDJ4MDBwY2lfcHJvYmVgLCBgcnQyeDAwcGNpX3JlbW92ZWAsIGBydDJ4MDB1c2JfcHJvYmVgLCBhbmQgYHJ0MngwMHVzYl9kaXNjb25uZWN0YC4gSSdsbCB3YW50IHRvIHZlcmlmeSB0aGUgY29uZmlncy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTcyMCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOTo0Mi41NTg3MzI2OTFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTQyMTc2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlQyWDAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjptZW51Y29uZmlnIFJUMlgwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgZHJpdmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjIwPWNvbmZpZyBSVDI4MDBfTElCX01NSU9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIyNTpjb25maWcgUlQyWDAwX0xJQl9NTUlPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIyNi1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjI5OmNvbmZpZyBSVDJYMDBfTElCX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzAtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjIzMzpjb25maWcgUlQyWDAwX0xJQl9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjM0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyMzc6Y29uZmlnIFJUMlgwMF9MSUJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjM4LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjQwOmNvbmZpZyBSVDJYMDBfTElCX0ZJUk1XQVJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0MS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNDQ6Y29uZmlnIFJUMlgwMF9MSUJfQ1JZUFRPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0NS1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjQ3OmNvbmZpZyBSVDJYMDBfTElCX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQ4LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI1MTpjb25maWcgUlQyWDAwX0xJQl9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI1Mi1cXHRib29sIFxcXCJSYWxpbmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjU5OmNvbmZpZyBSVDJYMDBfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlJhbGluayBkZWJ1ZyBvdXRwdXRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjQyLjY2MDE2MjM2NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjUyODA4MDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlQyWDAwIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBSVDJYMDBgLCBgUlQyNTAwVVNCYCwgYFJUNzNVU0JgLCBgUlQyODAwVVNCYCwgYFJUMjQwMFBDSWAsIGBSVDI1MDBQQ0lgLCBgUlQ2MVBDSWAsIGFuZCBgUlQyODAwUENJYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlc2UgYXJlIGdvaW5nIHRvIGNvbnRyb2wgdGhlIGNvbXBpbGF0aW9uIG9mIGBydDJ4MDBwY2kuY2AgYW5kIGBydDJ4MDB1c2IuY2AuXG5cbkJ1dCB3YWl0LCBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlIGhlcmUuIEkga25vdyBgcnQyeDAwcGNpLmNgIHJlbGllcyBvbiBgUlQyWDAwX0xJQl9QQ0lgLCBub3QgZGlyZWN0bHkgdGhlIGNvbmZpZ3MgdGhlbXNlbHZlcy4gQW5kLCBzaW1pbGFybHksIGBydDJ4MDB1c2IuY2AgZGVwZW5kcyBvbiBgUlQyWDAwX0xJQl9VU0JgLiBUaGVzZSBsaWJyYXJ5IG9wdGlvbnMgYXJlLCBob3dldmVyLCAqc2VsZWN0ZWQqIGJhc2VkIG9uIHdoaWNoIHNwZWNpZmljIGRyaXZlciBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZC5cblxuVGhlcmVmb3JlLCBlbmFibGluZyBgUlQyODAwVVNCYCBhbmQgYFJUMjgwMFBDSWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gZW5zdXJlIHRoZSBuZWNlc3NhcnkgY29kZSBpcyBidWlsdC4gSSdtIGJ1aWxkaW5nIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgUlQyODAwIGlzIGEgXCJoaWdoLWxldmVsXCIgY29uZmlndXJhdGlvbiwgYW5kIFJUMlgwMCBpcyBhIFwibG93LWxldmVsXCIgY29uZmlndXJhdGlvbi5cblxuVG8gY29uZmlybSB0aGlzLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZGl0aW9uYWwgY29tcGlsYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY1OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOTo0Ni45MTI5NzIzMDZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzk4MjM2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDJ4MDBwY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19SVDJYMDBfTElCX01NSU8pXFx0XFx0Kz0gcnQyeDAwbW1pby5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfUlQyWDAwX0xJQl9QQ0kpXFx0XFx0Kz0gcnQyeDAwcGNpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19SVDJYMDBfTElCX1VTQilcXHRcXHQrPSBydDJ4MDB1c2Iub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOTo0Ny4wNTA5NTk1MTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5MDk5NjM1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSWRlbnRpZnlpbmcgdGhlIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgcmV2b2x2ZXMgYXJvdW5kIGBDT05GSUdfUlQyWDAwX0xJQl9QQ0lgIGFuZCBgQ09ORklHX1JUMlgwMF9MSUJfVVNCYC4gTm8gbmVlZCB0byBzZWNvbmQtZ3Vlc3MgdGhvc2UuIFRoZXkncmUgY2xlYXJseSB0aGUga2V5IHBsYXllcnMgaW4gdGhpcy4gTm93LCB0aGUgcmVhbCBtZWF0IG9mIHRoZSBwcm9ibGVtIGlzIGZpZ3VyaW5nIG91dCB0aGVpciBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRyaWdnZXIgdGhlIHNlbGVjdGlvbiBvZiB0aGVzZSB0d28uIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIHN0cnVjdHVyZSBhbmQgdHJhY2UgYmFjayB0aGUgc2VsZWN0aW9uIGxvZ2ljLiBMZXQncyBzZWUgd2hhdCBicmluZ3MgdGhlc2UgaW50byB0aGUgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzkwLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MDk6NTAuMDQxOTU4NzE0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjIxNDI5NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFJUMlgwMF9MSUJfUENJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjE9Y29uZmlnIFJUMjQwMFBDSVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI0LVxcdHNlbGVjdCBSVDJYMDBfTElCX01NSU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjU6XFx0c2VsZWN0IFJUMlgwMF9MSUJfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI2LVxcdHNlbGVjdCBFRVBST01fOTNDWDZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0zMz1jb25maWcgUlQyNTAwUENJXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMzYtXFx0c2VsZWN0IFJUMlgwMF9MSUJfTU1JT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzozNzpcXHRzZWxlY3QgUlQyWDAwX0xJQl9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMzgtXFx0c2VsZWN0IEVFUFJPTV85M0NYNlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTQ1PWNvbmZpZyBSVDYxUENJXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNDctXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NDg6XFx0c2VsZWN0IFJUMlgwMF9MSUJfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTQ5LVxcdHNlbGVjdCBSVDJYMDBfTElCX01NSU9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz02MD1jb25maWcgUlQyODAwUENJXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNjUtXFx0c2VsZWN0IFJUMlgwMF9MSUJfTU1JT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzo2NjpcXHRzZWxlY3QgUlQyWDAwX0xJQl9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNjctXFx0c2VsZWN0IFJUMlgwMF9MSUJfRklSTVdBUkVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MDk6NTAuMTY0MTA3NDQ3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NjI5OTg2NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgYXNzdW1pbmcgSSdtIHRoZSBleHBlcnQgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvdmlkZWQgdGV4dCBhYm91dCBVU0IuXG5cbioqQW5hbHl6aW5nIHRoZSBVU0IgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIHdlJ3JlIHRhbGtpbmcgYWJvdXQgVVNCLCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBjb25zdGFudGx5IGV2b2x2aW5nIHN0YW5kYXJkLiBUaGUgc2hlZXIgY29tcGxleGl0eSBjYW4gYmUgb3ZlcndoZWxtaW5nIHNvbWV0aW1lcywgZ2l2ZW4gdGhlIG11bHRpcGxlIHZlcnNpb25zLCBzcGVlZHMsIGFuZCBwb3dlciBkZWxpdmVyeSBjYXBhYmlsaXRpZXMuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIHZhcmlvdXMgY29ubmVjdG9ycywgdGhlIGRpZmZlcmVudCBwcm90b2NvbHMsIGFuZCB0aGUgcG90ZW50aWFsIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAob3IgbGFjayB0aGVyZW9mKSB3aGVuIGRlc2lnbmluZy4gVGhlIHByYWN0aWNhbCBpbXBsaWNhdGlvbnMgb2YgdGhpbmdzIGxpa2UgcG93ZXIgZHJhdyBhbmQgZGF0YSB0cmFuc2ZlciByYXRlcyBhcmUgcGFyYW1vdW50LiBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgdGhlIHRhcmdldCBhcHBsaWNhdGlvbiDigJMgaXMgaXQgaGlnaC1zcGVlZCBzdG9yYWdlLCBtb2JpbGUgZGV2aWNlIGNoYXJnaW5nLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZD8gVGhlIGludGVycGxheSBiZXR3ZWVuIGhvc3QgY29udHJvbGxlcnMsIGRldmljZSBpbnRlcmZhY2VzLCBhbmQgZmlybXdhcmUgYmVjb21lcyBjcnVjaWFsIGhlcmUuIEl0J3MgYWJvdXQgb3B0aW1pemluZyBmb3IgcGVyZm9ybWFuY2UsIHJlbGlhYmlsaXR5LCBhbmQgY29zdC1lZmZlY3RpdmVuZXNzLiBUaGUgcG90ZW50aWFsIGZvciBpc3N1ZXMgd2l0aCBjYWJsZSBxdWFsaXR5IGFuZCBkcml2ZXIgc3VwcG9ydCBhcmUgYWxzbyBhbHdheXMgYSBmYWN0b3IuIFNvLCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIG9mIHRoZXNlIHZhcmlhYmxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxNDQsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjUzLjEyNzEwOTE2NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2NDEyOTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBSVDJYMDBfTElCX1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTExMz1jb25maWcgUlQyNTAwVVNCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTE1LVxcdGRlcGVuZHMgb24gVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjExNjpcXHRzZWxlY3QgUlQyWDAwX0xJQl9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTE3LVxcdHNlbGVjdCBSVDJYMDBfTElCX0NSWVBUT1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTEyND1jb25maWcgUlQ3M1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEyNi1cXHRkZXBlbmRzIG9uIFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMjc6XFx0c2VsZWN0IFJUMlgwMF9MSUJfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEyOC1cXHRzZWxlY3QgUlQyWDAwX0xJQl9GSVJNV0FSRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTEzNz1jb25maWcgUlQyODAwVVNCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTQwLVxcdHNlbGVjdCBSVDI4MDBfTElCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjE0MTpcXHRzZWxlY3QgUlQyWDAwX0xJQl9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTQyLVxcdHNlbGVjdCBSVDJYMDBfTElCX0ZJUk1XQVJFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjUzLjI2MzUyNzI4N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ4NDI5Nzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgUlQyODAwIFdpcmVsZXNzIERyaXZlciBPcHRpb25zKipcblxuT2theSwgc28gSSdtIGV2YWx1YXRpbmcgd2lyZWxlc3MgZHJpdmVycywgYW5kIGl0IGxvb2tzIGxpa2UgYFJUMjgwMFBDSWAgYW5kIGBSVDI4MDBVU0JgIGFyZSBwcm9taXNpbmcgY2FuZGlkYXRlcy4gQWgsIGJ1dCB3YWl0IOKAkyBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgUlQyWDAwYCBpcyBhIG1lbnVjb25maWcgb3B0aW9uLCBtZWFuaW5nIEkgaGF2ZSB0byBleHBsaWNpdGx5IGVuYWJsZSBpdC4gUmlnaHQsIHJpZ2h0LiBOb3csIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjazsgYFJUMjgwMFBDSWAgaGFzIGRlcGVuZGVuY2llcy4uLiB5ZXMsIGl0IGRlcGVuZHMgb24gYm90aCBgUENJYCBhbmQsIG9mIGNvdXJzZSwgYFJUMlgwMGAuIEdvb2QgdG8ga25vdy4gTGV0J3MgZGlnIGRlZXBlciBhbmQgZ2V0IHRob3NlIGRlcGVuZGVuY2llcyBuYWlsZWQgZG93biBjb21wbGV0ZWx5LiBJJ2xsIGNoZWNrIHRob3NlIGBSVDI4MDBQQ0lgIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4MDMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMTowOTo1Ni40MTE5NjA2MDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwNTQ1ODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVDI4MDBQQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz00NT1jb25maWcgUlQ2MVBDSVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzo2MDpjb25maWcgUlQyODAwUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgcnQyN3h4L3J0Mjh4eC9ydDMweHggKFBDSS9QQ0llL1BDTUNJQSkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz03Nz1pZiBSVDI4MDBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjc5OmNvbmZpZyBSVDI4MDBQQ0lfUlQzM1hYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTgwLVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzM3h4IGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjg3OmNvbmZpZyBSVDI4MDBQQ0lfUlQzNVhYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTg4LVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzNXh4IGRldmljZXMgKEVYUEVSSU1FTlRBTClcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjk2OmNvbmZpZyBSVDI4MDBQQ0lfUlQ1M1hYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTk3LVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQ1M3h4IGRldmljZXMgKEVYUEVSSU1FTlRBTClcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMDQ6Y29uZmlnIFJUMjgwMFBDSV9SVDMyOTBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTA1LVxcdGJvb2wgXFxcInJ0MjgwMHBjaSAtIEluY2x1ZGUgc3VwcG9ydCBmb3IgcnQzMjkwIGRldmljZXMgKEVYUEVSSU1FTlRBTClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE4VDAxOjA5OjU2LjUwMjUxMjk4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjY0NjYzNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIFJUMjgwMFBDSSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBgUlQyODAwUENJYCBtb2R1bGUuIFRoaXMgaXNuJ3QganVzdCBhIG1hdHRlciBvZiBsaXN0aW5nIHRoZW07IEkgbmVlZCB0byB0aGluayBhYm91dCAqd2h5KiBJIG5lZWQgdG8ga25vdy4gQW0gSSB0cm91Ymxlc2hvb3RpbmcgYSBkcml2ZXIgaXNzdWU/IEFtIEkgcHJlcGFyaW5nIHRvIHVwZ3JhZGUgb3IgbW9kaWZ5IHRoZSBtb2R1bGU/IEFtIEkgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiBhIGxhcmdlciBzeXN0ZW0/IEtub3dpbmcgdGhlIGNvbnRleHQgd2lsbCBzaGFwZSBob3cgaW4tZGVwdGggSSBuZWVkIHRvIGJlLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGxvb2sgYXQgaXRzIGRpcmVjdCBkZXBlbmRlbmNpZXMuIFdoYXQgb3RoZXIgbW9kdWxlcyBvciBsaWJyYXJpZXMgZG9lcyBpdCBleHBsaWNpdGx5IGNhbGwgdXBvbj8gSSdsbCBwcm9iYWJseSBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIHN1c3BlY3RzOiBrZXJuZWwgbW9kdWxlcyBmb3IgUENJIGludGVyYWN0aW9uLCBuZXR3b3JrIHN0YWNrIGZ1bmN0aW9ucywgYW5kIHBvdGVudGlhbGx5IGZpcm13YXJlIGludGVyZmFjZXMuIEknbGwgbmVlZCB0byB1c2UgdG9vbHMgbGlrZSBgbW9kaW5mb2AgYW5kIG1heWJlIGV2ZW4gZGlzc2VjdCB0aGUgc291cmNlIGNvZGUgaWYgYG1vZGluZm9gIGRvZXNuJ3QgZ2l2ZSBtZSBlbm91Z2ggZGV0YWlsLiBJ4oCZbGwgYWxzbyBrZWVwIGluIG1pbmQgdGhhdCBJJ2xsIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgdmVyc2lvbnMgb2YgdGhlIGRlcGVuZGVuY2llcy5cblxuQmV5b25kIHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzLCBJIG5lZWQgdG8gY29uc2lkZXIgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLiBXaGF0IG90aGVyIG1vZHVsZXMgcmVseSBvbiAqaXQqPyBSZW1vdmluZyBvciBtb2RpZnlpbmcgYFJUMjgwMFBDSWAgY291bGQgaGF2ZSByaXBwbGUgZWZmZWN0cy4gVGhpcyBpcyB3aGVyZSBjcm9zcy1yZWZlcmVuY2luZyBiZWNvbWVzIGltcG9ydGFudC4gSSdsbCBuZWVkIHRvIHNlZSBob3cgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgbWlnaHQgdXNlIGl0cyBleHBvcnRlZCBzeW1ib2xzIG9yIGludGVyYWN0IHdpdGggaXRzIHByb3ZpZGVkIGZ1bmN0aW9uYWxpdHkuIElmIGl0IGltcGxlbWVudHMgc3BlY2lmaWMgcHJvdG9jb2xzLCB0aGVuIHdoYXQgb3RoZXIgZHJpdmVycyBtYXkgcmVseSBvbiBpdD8gQXJlIHRoZXJlIG90aGVyIG5ldHdvcmsgZHJpdmVycyB0aGF0IGFyZSB0aWVkIHRvIHNwZWNpZmljIHZlcnNpb25zIG9mIHRoZSBtb2R1bGU/XG5cbkZpbmFsbHksIGl04oCZcyBnb29kIHByYWN0aWNlIHRvIGNvbnNpZGVyIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQuIElzIHRoaXMgYSBjdXN0b20ga2VybmVsLCBhIHN0YW5kYXJkIGRpc3RyaWJ1dGlvbiwgb3Igc29tZSBlbWJlZGRlZCBzeXN0ZW0/IFRoZSBhbnN3ZXJzIHdpbGwgc2hhcGUgdGhlIHNjb3BlIG9mIHRoZSBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGNvbnNpZGVyLCBmcm9tIGxvdy1sZXZlbCBoYXJkd2FyZSBhYnN0cmFjdGlvbnMgdG8gaGlnaC1sZXZlbCBuZXR3b3JrIG1hbmFnZW1lbnQgdG9vbHMuIEl0IHdpbGwgYWxzbyBoZWxwIG1lIHVuZGVyc3RhbmQgd2hhdCBidWlsZCBvcHRpb25zIGFyZSBpbiBwbGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ2NzQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOFQwMToxMDowMS4wMjg5ODk0OTNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTI3MjU2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0yPW1lbnVjb25maWcgUlQyWDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlJhbGluayBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjE9Y29uZmlnIFJUMjQwMFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiUmFsaW5rIHJ0MjQwMCAoUENJL1BDTUNJQSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjM6XFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjQtXFx0c2VsZWN0IFJUMlgwMF9MSUJfTU1JT1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnPTMzPWNvbmZpZyBSVDI1MDBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMzQtXFx0dHJpc3RhdGUgXFxcIlJhbGluayBydDI1MDAgKFBDSS9QQ01DSUEpIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjM1OlxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTM2LVxcdHNlbGVjdCBSVDJYMDBfTElCX01NSU9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz00NT1jb25maWcgUlQ2MVBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiUmFsaW5rIHJ0MjUwMS9ydDYxIChQQ0kvUENNQ0lBKSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzo0NzpcXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy00OC1cXHRzZWxlY3QgUlQyWDAwX0xJQl9QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz02MD1jb25maWcgUlQyODAwUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgcnQyN3h4L3J0Mjh4eC9ydDMweHggKFBDSS9QQ0llL1BDTUNJQSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6NjI6XFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctNjMtXFx0c2VsZWN0IFJUMjgwMF9MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0xMTM9Y29uZmlnIFJUMjUwMFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMTQtXFx0dHJpc3RhdGUgXFxcIlJhbGluayBydDI1MDAgKFVTQikgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTE1OlxcdGRlcGVuZHMgb24gVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTExNi1cXHRzZWxlY3QgUlQyWDAwX0xJQl9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0xMjQ9Y29uZmlnIFJUNzNVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTI1LVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgcnQyNTAxL3J0NzMgKFVTQikgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MTI2OlxcdGRlcGVuZHMgb24gVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTEyNy1cXHRzZWxlY3QgUlQyWDAwX0xJQl9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0xMzc9Y29uZmlnIFJUMjgwMFVTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0xMzgtXFx0dHJpc3RhdGUgXFxcIlJhbGluayBydDI3eHgvcnQyOHh4L3J0MzB4eCAoVVNCKSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoxMzk6XFx0ZGVwZW5kcyBvbiBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMTQwLVxcdHNlbGVjdCBSVDI4MDBfTElCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjAxPWNvbmZpZyBSVDI4MDBTT0NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjAyLVxcdHRyaXN0YXRlIFxcXCJSYWxpbmsgV2lTb0Mgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjAzOlxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKFNPQ19SVDI4OFggfHwgU09DX1JUMzA1WCB8fCBTT0NfTVQ3NjIwIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjA0LVxcdHNlbGVjdCBSVDJYMDBfTElCX01NSU9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0yNTE9Y29uZmlnIFJUMlgwMF9MSUJfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTItXFx0Ym9vbCBcXFwiUmFsaW5rIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjUzOlxcdGRlcGVuZHMgb24gUlQyWDAwX0xJQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI1NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjU5PWNvbmZpZyBSVDJYMDBfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlJhbGluayBkZWJ1ZyBvdXRwdXRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnOjI2MTpcXHRkZXBlbmRzIG9uIFJUMlgwMF9MSUJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWctMjYyLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MTA6MDEuMTQ0MjY3OTA2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMDIwMDE2NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIHJ0MngwMCBEcml2ZXIgQ2hhbmdlcyBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBjb25maWd1cmF0aW9ucyBhbmQgc3ltYm9scyBmb3IgZnV6emluZyB0aGlzIHJ0MngwMCBkcml2ZXIuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgb2YganVzdCBsaXN0aW5nIGEgYnVuY2ggb2YgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlncyDigJMgYFJUMlgwMGAsIGBSVDI4MDBQQ0lgLCBgUlQyODAwVVNCYCwgYW5kIGEgZmV3IG90aGVycyBqdXN0IHRvIGJlIGNvbXByZWhlbnNpdmUsIGxpa2UgYFJUMjQwMFBDSWAsIGBSVDI1MDBQQ0lgLCBgUlQ2MVBDSWAsIGBSVDI1MDBVU0JgLCBhbmQgYFJUNzNVU0JgLiBUaGVuLCBJIHJlYWxpemVkIHRoYXQgYFJUMjgwMFBDSWAgYW5kIGBSVDI4MDBVU0JgIGFsb25lIGFyZSBwcm9iYWJseSBlbm91Z2ggdG8gY29tcGlsZSB0aGUgY29yZSBQQ0kgYW5kIFVTQiBtb2R1bGVzLiBCdXQsIEkgZGVjaWRlZCB0byBlcnIgb24gdGhlIHNpZGUgb2YgY2F1dGlvbiBhbmQgbGlzdCB0aGVtIGFsbC5cblxuVGhlbiB0aGUgcHJvbXB0IHJlbWluZGVkIG1lIHRvIGJlIGVmZmljaWVudCwgbm90IGdlbmVyaWMuIEl0IHNhaWQgdG8gZm9jdXMgb24gY29uZmlncyB0aGF0IHNwZWNpZmljYWxseSBjb3ZlciB0aGUgKm1vZGlmaWVkKiBjb2RlLiBSaWdodCwgcmlnaHQuLi4gc28gSSBuZWVkIHRvIG5haWwgZG93biBleGFjdGx5IHdoaWNoIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2hhbmdlZC4gQWZ0ZXIgcmV2aWV3aW5nIHRoZSBkaWZmLCBpdCdzIGNsZWFyOiBgcnQyeDAwcGNpX3Byb2JlYCwgYHJ0MngwMHBjaV9yZW1vdmVgLCBgcnQyeDAwdXNiX3Byb2JlYCwgYW5kIGBydDJ4MDB1c2JfZGlzY29ubmVjdGAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLiBUaGF0IGFsc28gbWVhbnMgdGhlIGNvbmZpZyBvcHRpb25zIEkgbmVlZCBhcmUgdGhvc2UgdGhhdCBlbmFibGUgdGhlIHJlbGV2YW50IFBDSSBhbmQgVVNCIGRyaXZlcnMsIGFuZCBJIG5lZWQgdG8gYmUgaW5jbHVzaXZlIHRvIG1ha2Ugc3VyZSBhbGwgcGVybXV0YXRpb25zIGFyZSBjb3ZlcmVkLlxuXG5Mb29raW5nIGF0IHRoZSBjaGFuZ2VzLCBpdCBzZWVtcyB3ZSdyZSBkZWFsaW5nIHdpdGggYSByZWZhY3RvcmluZyBvZiBQQ0kgYW5kIFVTQiByZXNvdXJjZSBtYW5hZ2VtZW50IHVzaW5nIGBkZXZyZXNgIChkZXZtXyogYW5kIHBjaW1fKiBmdW5jdGlvbnMpLiBUaGUgZm9jdXMgaGVyZSBzaG91bGQgYmUgb24gdGhlIGBwcm9iZWAgYW5kIGByZW1vdmVgL2BkaXNjb25uZWN0YCBmdW5jdGlvbnMgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIHRoZSBuZXcgcmVzb3VyY2UgbWFuYWdlbWVudCBpcyBiZWluZyBpbnRyb2R1Y2VkLCBhbmQgd2hlcmUgZmFpbHVyZXMgb3IgcmVtb3ZhbCBtaWdodCBjcmVhdGUgYnVncy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSBubyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBhcmUgaW50cm9kdWNlZC5cblxuVGhlcmVmb3JlLCBteSBmaW5hbCBzZXR1cCB3aWxsIGJlOlxuXG4qICAgYFdvcnRoRnV6emluZzogdHJ1ZWBcbiogICBgRm9jdXNTeW1ib2xzOiBbXCJydDJ4MDBwY2lfcHJvYmVcIiwgXCJydDJ4MDBwY2lfcmVtb3ZlXCIsIFwicnQyeDAwdXNiX3Byb2JlXCIsIFwicnQyeDAwdXNiX2Rpc2Nvbm5lY3RcIl1gXG4qICAgYEVuYWJsZUNvbmZpZ3M6IFtcIlJUMlgwMFwiLCBcIlJUMjgwMFBDSVwiLCBcIlJUMjgwMFVTQlwiLCBcIlJUMjQwMFBDSVwiLCBcIlJUMjUwMFBDSVwiLCBcIlJUNjFQQ0lcIiwgXCJSVDI1MDBVU0JcIiwgXCJSVDczVVNCXCJdYFxuKiAgIGBSZWFzb25pbmc6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBQQ0kgYW5kIFVTQiByZXNvdXJjZSBtYW5hZ2VtZW50IGluIHRoZSBydDJ4MDAgd2lyZWxlc3MgZHJpdmVyIHRvIHVzZSBkZXZyZXMgKGRldm1fKiBhbmQgcGNpbV8qIGZ1bmN0aW9ucykuIEZ1enppbmcgdGhlIHByb2JlIGFuZCBkaXNjb25uZWN0L3JlbW92ZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgcmVzb3VyY2UgbWFuYWdlbWVudCBkb2VzIG5vdCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzIG9yIGRldmljZSByZW1vdmFsLlwiYFxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjYxMywiT3V0cHV0VG9rZW5zIjoyMTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMThUMDE6MTA6MTAuNDQ2MjcxNjc4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1ODUxNzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVDJYMDBcIixcbiAgICBcIlJUMjgwMFBDSVwiLFxuICAgIFwiUlQyODAwVVNCXCIsXG4gICAgXCJSVDI0MDBQQ0lcIixcbiAgICBcIlJUMjUwMFBDSVwiLFxuICAgIFwiUlQ2MVBDSVwiLFxuICAgIFwiUlQyNTAwVVNCXCIsXG4gICAgXCJSVDczVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnQyeDAwcGNpX3Byb2JlXCIsXG4gICAgXCJydDJ4MDBwY2lfcmVtb3ZlXCIsXG4gICAgXCJydDJ4MDB1c2JfcHJvYmVcIixcbiAgICBcInJ0MngwMHVzYl9kaXNjb25uZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIFBDSSBhbmQgVVNCIHJlc291cmNlIG1hbmFnZW1lbnQgaW4gdGhlIHJ0MngwMCB3aXJlbGVzcyBkcml2ZXIgdG8gdXNlIGRldnJlcyAoZGV2bV8qIGFuZCBwY2ltXyogZnVuY3Rpb25zKS4gRnV6emluZyB0aGUgcHJvYmUgYW5kIGRpc2Nvbm5lY3QvcmVtb3ZlIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyByZXNvdXJjZSBtYW5hZ2VtZW50IGRvZXMgbm90IGludHJvZHVjZSBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gZmFpbHVyZXMgb3IgZGV2aWNlIHJlbW92YWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlQyWDAwXCIsXG4gICAgXCJSVDI4MDBQQ0lcIixcbiAgICBcIlJUMjgwMFVTQlwiLFxuICAgIFwiUlQyNDAwUENJXCIsXG4gICAgXCJSVDI1MDBQQ0lcIixcbiAgICBcIlJUNjFQQ0lcIixcbiAgICBcIlJUMjUwMFVTQlwiLFxuICAgIFwiUlQ3M1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0MngwMHBjaV9wcm9iZVwiLFxuICAgIFwicnQyeDAwcGNpX3JlbW92ZVwiLFxuICAgIFwicnQyeDAwdXNiX3Byb2JlXCIsXG4gICAgXCJydDJ4MDB1c2JfZGlzY29ubmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyBQQ0kgYW5kIFVTQiByZXNvdXJjZSBtYW5hZ2VtZW50IGluIHRoZSBydDJ4MDAgd2lyZWxlc3MgZHJpdmVyIHRvIHVzZSBkZXZyZXMgKGRldm1fKiBhbmQgcGNpbV8qIGZ1bmN0aW9ucykuIEZ1enppbmcgdGhlIHByb2JlIGFuZCBkaXNjb25uZWN0L3JlbW92ZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgcmVzb3VyY2UgbWFuYWdlbWVudCBkb2VzIG5vdCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgZHVyaW5nIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzIG9yIGRldmljZSByZW1vdmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflows2hf4[1] Phase: Succeeded StartedAt: 2026-07-18 01:10:22 +0000 UTC FinishedAt: 2026-07-18 01:10:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-18 01:10:22 +0000 UTC FinishedAt: 2026-07-18 01:10:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2] Phase: Succeeded StartedAt: 2026-07-18 01:10:22 +0000 UTC FinishedAt: 2026-07-18 02:40:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-18 01:10:22 +0000 UTC FinishedAt: 2026-07-18 02:40:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-18 01:10:22 +0000 UTC FinishedAt: 2026-07-18 01:10:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-18 01:10:22 +0000 UTC FinishedAt: 2026-07-18 01:10:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflows2hf4/series-workflows2hf4-convert-artifact-804734775/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-18 01:10:43 +0000 UTC FinishedAt: 2026-07-18 02:03:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-18 01:10:43 +0000 UTC FinishedAt: 2026-07-18 02:03:49 +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:*40b5b885-25b4-4e2a-b464-78bf7af07790,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-workflows2hf4/series-workflows2hf4-convert-artifact-804734775/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": "36139985-89b4-40a9-92cb-8eea296f14f1", "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-workflows2hf4/series-workflows2hf4-build-action-1495049869/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-18 01:10:43 +0000 UTC FinishedAt: 2026-07-18 02:03:39 +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:*40b5b885-25b4-4e2a-b464-78bf7af07790,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-workflows2hf4/series-workflows2hf4-convert-artifact-804734775/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": "36139985-89b4-40a9-92cb-8eea296f14f1", "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-workflows2hf4/series-workflows2hf4-build-action-1495049869/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-18 02:03:49 +0000 UTC FinishedAt: 2026-07-18 02:03:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-18 02:03:49 +0000 UTC FinishedAt: 2026-07-18 02:03:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-18 02:03:49 +0000 UTC FinishedAt: 2026-07-18 02:04:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-18 02:03:49 +0000 UTC FinishedAt: 2026-07-18 02:03:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflows2hf4/series-workflows2hf4-convert-artifact-122463078/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-18 02:04:09 +0000 UTC FinishedAt: 2026-07-18 02:06:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-18 02:04:09 +0000 UTC FinishedAt: 2026-07-18 02:05:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*36139985-89b4-40a9-92cb-8eea296f14f1,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-workflows2hf4/series-workflows2hf4-build-action-1495049869/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-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-18 02:06:06 +0000 UTC FinishedAt: 2026-07-18 02:06:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-18 02:06:06 +0000 UTC FinishedAt: 2026-07-18 02:06:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-18 02:06:06 +0000 UTC FinishedAt: 2026-07-18 02:35:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-18 02:06:06 +0000 UTC FinishedAt: 2026-07-18 02:35:36 +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:*40b5b885-25b4-4e2a-b464-78bf7af07790,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-workflows2hf4/series-workflows2hf4-convert-artifact-122463078/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": "d604f492-dced-4740-9eb2-838fffc20a2a", "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-workflows2hf4/series-workflows2hf4-build-action-4163197226/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-18 02:06:06 +0000 UTC FinishedAt: 2026-07-18 02:35:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*40b5b885-25b4-4e2a-b464-78bf7af07790,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-workflows2hf4/series-workflows2hf4-convert-artifact-122463078/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": "d604f492-dced-4740-9eb2-838fffc20a2a", "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-workflows2hf4/series-workflows2hf4-build-action-4163197226/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-18 02:35:36 +0000 UTC FinishedAt: 2026-07-18 02:35:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-18 02:35:37 +0000 UTC FinishedAt: 2026-07-18 02:35:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-18 02:35:37 +0000 UTC FinishedAt: 2026-07-18 02:37:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-18 02:35:37 +0000 UTC FinishedAt: 2026-07-18 02:37:26 +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:*d604f492-dced-4740-9eb2-838fffc20a2a,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-workflows2hf4/series-workflows2hf4-build-action-4163197226/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-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-18 02:37:37 +0000 UTC FinishedAt: 2026-07-18 02:40:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-18 02:37:37 +0000 UTC FinishedAt: 2026-07-18 02:40:47 +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":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"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:*36139985-89b4-40a9-92cb-8eea296f14f1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d604f492-dced-4740-9eb2-838fffc20a2a,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-workflows2hf4/series-workflows2hf4-build-action-1495049869/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-workflows2hf4/series-workflows2hf4-build-action-4163197226/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-18 02:37:37 +0000 UTC FinishedAt: 2026-07-18 02:37:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-18 02:37:37 +0000 UTC FinishedAt: 2026-07-18 02:37:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"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-workflows2hf4/series-workflows2hf4-convert-artifact-3930709931/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-18 02:37:37 +0000 UTC FinishedAt: 2026-07-18 02:37:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-18 02:37:37 +0000 UTC FinishedAt: 2026-07-18 02:37:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-18 02:37:37 +0000 UTC FinishedAt: 2026-07-18 02:37:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-18 02:37:50 +0000 UTC FinishedAt: 2026-07-18 02:40:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflows2hf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt2x00pci_probe","rt2x00pci_remove","rt2x00usb_probe","rt2x00usb_disconnect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["RT2X00","RT2800PCI","RT2800USB","RT2400PCI","RT2500PCI","RT61PCI","RT2500USB","RT73USB"],"series_id":"d9ac9463-092e-498e-9af1-7bfbcffcb8e1","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-18 02:37:50 +0000 UTC FinishedAt: 2026-07-18 02:40:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*36139985-89b4-40a9-92cb-8eea296f14f1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d604f492-dced-4740-9eb2-838fffc20a2a,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-workflows2hf4/series-workflows2hf4-build-action-1495049869/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-workflows2hf4/series-workflows2hf4-build-action-4163197226/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-workflows2hf4/series-workflows2hf4-convert-artifact-3930709931/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,}