From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Ortiz Subject: [PATCH v5 17/24] hw: acpi: Export the PCI hotplug API Date: Mon, 5 Nov 2018 02:40:40 +0100 Message-ID: <20181105014047.26447-18-sameo@linux.intel.com> References: <20181105014047.26447-1-sameo@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gJTv5-0004J4-UI for xen-devel@lists.xenproject.org; Mon, 05 Nov 2018 01:43:11 +0000 In-Reply-To: <20181105014047.26447-1-sameo@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefano Stabellini , Eduardo Habkost , "Michael S. Tsirkin" , Jing Liu , Shannon Zhao , Igor Mammedov , qemu-arm@nongnu.org, Marcel Apfelbaum , Paolo Bonzini , Anthony Perard , xen-devel@lists.xenproject.org, Sebastien Boeuf , Richard Henderson List-Id: xen-devel@lists.xenproject.org RnJvbTogU2ViYXN0aWVuIEJvZXVmIDxzZWJhc3RpZW4uYm9ldWZAaW50ZWwuY29tPgoKVGhlIEFD UEkgaG90cGx1ZyBzdXBwb3J0IGZvciBQQ0kgZGV2aWNlcyBBUElzIGFyZSBub3QgeDg2IG9yIGV2 ZW4KbWFjaGluZSB0eXBlIHNwZWNpZmljLiBJbiBvcmRlciBmb3IgZnV0dXJlIG1hY2hpbmUgdHlw ZXMgdG8gYmUgYWJsZSB0bwpyZS11c2UgdGhhdCBjb2RlLCB3ZSBleHBvcnQgaXQgdGhyb3VnaCB0 aGUgYXJjaGl0ZWN0dXJlIGFnbm9zdGljCmh3L2FjcGkgZm9sZGVyLgoKUmV2aWV3ZWQtYnk6IFBo aWxpcHBlIE1hdGhpZXUtRGF1ZMOpIDxwaGlsbWRAcmVkaGF0LmNvbT4KVGVzdGVkLWJ5OiBQaGls aXBwZSBNYXRoaWV1LURhdWTDqSA8cGhpbG1kQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IFNl YmFzdGllbiBCb2V1ZiA8c2ViYXN0aWVuLmJvZXVmQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTog SmluZyBMaXUgPGppbmcyLmxpdUBsaW51eC5pbnRlbC5jb20+Ci0tLQogaW5jbHVkZS9ody9hY3Bp L2FtbC1idWlsZC5oIHwgICAzICsKIGh3L2FjcGkvYW1sLWJ1aWxkLmMgICAgICAgICB8IDE5NCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGh3L2kzODYvYWNwaS1idWlsZC5j ICAgICAgICB8IDE5MiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxl cyBjaGFuZ2VkLCAxOTkgaW5zZXJ0aW9ucygrKSwgMTkwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2luY2x1ZGUvaHcvYWNwaS9hbWwtYnVpbGQuaCBiL2luY2x1ZGUvaHcvYWNwaS9hbWwtYnVp bGQuaAppbmRleCA2NGVhMzcxNjU2Li42YjBhOTczNWM1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2h3 L2FjcGkvYW1sLWJ1aWxkLmgKKysrIGIvaW5jbHVkZS9ody9hY3BpL2FtbC1idWlsZC5oCkBAIC00 MTgsNiArNDE4LDkgQEAgQW1sICpidWlsZF9vc2NfbWV0aG9kKHVpbnQzMl90IHZhbHVlKTsKIHZv aWQgYnVpbGRfbWNmZyhHQXJyYXkgKnRhYmxlX2RhdGEsIEJJT1NMaW5rZXIgKmxpbmtlciwgQWNw aU1jZmdJbmZvICppbmZvKTsKIEFtbCAqYnVpbGRfZ3NpX2xpbmtfZGV2KGNvbnN0IGNoYXIgKm5h bWUsIHVpbnQ4X3QgdWlkLCB1aW50OF90IGdzaSk7CiBBbWwgKmJ1aWxkX3BydChib29sIGlzX3Bj aTBfcHJ0KTsKK3ZvaWQgYnVpbGRfYWNwaV9wY2locChBbWwgKnNjb3BlKTsKK3ZvaWQgYnVpbGRf YXBwZW5kX3BjaV9idXNfZGV2aWNlcyhBbWwgKnBhcmVudF9zY29wZSwgUENJQnVzICpidXMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwY2locF9icmlkZ2VfZW4pOwog dm9pZCBhY3BpX2RzZHRfYWRkX3BjaV9idXMoQW1sICpkc2R0LCBBY3BpUGNpQnVzICpwY2lfaG9z dCk7CiBBbWwgKmJ1aWxkX3BjaV9ob3N0X2JyaWRnZShBbWwgKnRhYmxlLCBBY3BpUGNpQnVzICpw Y2lfaG9zdCk7CiB2b2lkIGNyc19yYW5nZV9zZXRfaW5pdChDcnNSYW5nZVNldCAqcmFuZ2Vfc2V0 KTsKZGlmZiAtLWdpdCBhL2h3L2FjcGkvYW1sLWJ1aWxkLmMgYi9ody9hY3BpL2FtbC1idWlsZC5j CmluZGV4IDJjNTQ0NmFiMjMuLjYxMTJjYzIxNDkgMTAwNjQ0Ci0tLSBhL2h3L2FjcGkvYW1sLWJ1 aWxkLmMKKysrIGIvaHcvYWNwaS9hbWwtYnVpbGQuYwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1 ZGUgImh3L2FjcGkvdHBtLmgiCiAjaW5jbHVkZSAicW9tL3FvbS1xb2JqZWN0LmgiCiAjaW5jbHVk ZSAicWFwaS9xbXAvcW51bS5oIgorI2luY2x1ZGUgImh3L2FjcGkvcGNpaHAuaCIKIAogI2RlZmlu ZSBQQ0lfSE9TVF9CUklER0VfQ09ORklHX0FERFIgICAgICAgIDB4Y2Y4CiAjZGVmaW5lIFBDSV9I T1NUX0JSSURHRV9JT18wX01JTl9BRERSICAgICAgMHgwMDAwCkBAIC0yMzA1LDYgKzIzMDYsMTk5 IEBAIEFtbCAqYnVpbGRfcGNpX2hvc3RfYnJpZGdlKEFtbCAqdGFibGUsIEFjcGlQY2lCdXMgKnBj aV9ob3N0KQogICAgIHJldHVybiBzY29wZTsKIH0KIAordm9pZCBidWlsZF9hY3BpX3BjaWhwKEFt bCAqc2NvcGUpCit7CisgICAgQW1sICpmaWVsZDsKKyAgICBBbWwgKm1ldGhvZDsKKworICAgIGFt bF9hcHBlbmQoc2NvcGUsCisgICAgICAgIGFtbF9vcGVyYXRpb25fcmVnaW9uKCJQQ1NUIiwgQU1M X1NZU1RFTV9JTywgYW1sX2ludCgweGFlMDApLCAweDA4KSk7CisgICAgZmllbGQgPSBhbWxfZmll bGQoIlBDU1QiLCBBTUxfRFdPUkRfQUNDLCBBTUxfTk9MT0NLLCBBTUxfV1JJVEVfQVNfWkVST1Mp OworICAgIGFtbF9hcHBlbmQoZmllbGQsIGFtbF9uYW1lZF9maWVsZCgiUENJVSIsIDMyKSk7Cisg ICAgYW1sX2FwcGVuZChmaWVsZCwgYW1sX25hbWVkX2ZpZWxkKCJQQ0lEIiwgMzIpKTsKKyAgICBh bWxfYXBwZW5kKHNjb3BlLCBmaWVsZCk7CisKKyAgICBhbWxfYXBwZW5kKHNjb3BlLAorICAgICAg ICBhbWxfb3BlcmF0aW9uX3JlZ2lvbigiU0VKIiwgQU1MX1NZU1RFTV9JTywgYW1sX2ludCgweGFl MDgpLCAweDA0KSk7CisgICAgZmllbGQgPSBhbWxfZmllbGQoIlNFSiIsIEFNTF9EV09SRF9BQ0Ms IEFNTF9OT0xPQ0ssIEFNTF9XUklURV9BU19aRVJPUyk7CisgICAgYW1sX2FwcGVuZChmaWVsZCwg YW1sX25hbWVkX2ZpZWxkKCJCMEVKIiwgMzIpKTsKKyAgICBhbWxfYXBwZW5kKHNjb3BlLCBmaWVs ZCk7CisKKyAgICBhbWxfYXBwZW5kKHNjb3BlLAorICAgICAgICBhbWxfb3BlcmF0aW9uX3JlZ2lv bigiQk5NUiIsIEFNTF9TWVNURU1fSU8sIGFtbF9pbnQoMHhhZTEwKSwgMHgwNCkpOworICAgIGZp ZWxkID0gYW1sX2ZpZWxkKCJCTk1SIiwgQU1MX0RXT1JEX0FDQywgQU1MX05PTE9DSywgQU1MX1dS SVRFX0FTX1pFUk9TKTsKKyAgICBhbWxfYXBwZW5kKGZpZWxkLCBhbWxfbmFtZWRfZmllbGQoIkJO VU0iLCAzMikpOworICAgIGFtbF9hcHBlbmQoc2NvcGUsIGZpZWxkKTsKKworICAgIGFtbF9hcHBl bmQoc2NvcGUsIGFtbF9tdXRleCgiQkxDSyIsIDApKTsKKworICAgIG1ldGhvZCA9IGFtbF9tZXRo b2QoIlBDRUoiLCAyLCBBTUxfTk9UU0VSSUFMSVpFRCk7CisgICAgYW1sX2FwcGVuZChtZXRob2Qs IGFtbF9hY3F1aXJlKGFtbF9uYW1lKCJCTENLIiksIDB4RkZGRikpOworICAgIGFtbF9hcHBlbmQo bWV0aG9kLCBhbWxfc3RvcmUoYW1sX2FyZygwKSwgYW1sX25hbWUoIkJOVU0iKSkpOworICAgIGFt bF9hcHBlbmQobWV0aG9kLAorICAgICAgICBhbWxfc3RvcmUoYW1sX3NoaWZ0bGVmdChhbWxfaW50 KDEpLCBhbWxfYXJnKDEpKSwgYW1sX25hbWUoIkIwRUoiKSkpOworICAgIGFtbF9hcHBlbmQobWV0 aG9kLCBhbWxfcmVsZWFzZShhbWxfbmFtZSgiQkxDSyIpKSk7CisgICAgYW1sX2FwcGVuZChtZXRo b2QsIGFtbF9yZXR1cm4oYW1sX2ludCgwKSkpOworICAgIGFtbF9hcHBlbmQoc2NvcGUsIG1ldGhv ZCk7Cit9CisKK3N0YXRpYyB2b2lkIGJ1aWxkX2FwcGVuZF9wY2locF9ub3RpZnlfZW50cnkoQW1s ICptZXRob2QsIGludCBzbG90KQoreworICAgIEFtbCAqaWZfY3R4OworICAgIGludDMyX3QgZGV2 Zm4gPSBQQ0lfREVWRk4oc2xvdCwgMCk7CisKKyAgICBpZl9jdHggPSBhbWxfaWYoYW1sX2FuZChh bWxfYXJnKDApLCBhbWxfaW50KDB4MVUgPDwgc2xvdCksIE5VTEwpKTsKKyAgICBhbWxfYXBwZW5k KGlmX2N0eCwgYW1sX25vdGlmeShhbWxfbmFtZSgiUyUuMDJYIiwgZGV2Zm4pLCBhbWxfYXJnKDEp KSk7CisgICAgYW1sX2FwcGVuZChtZXRob2QsIGlmX2N0eCk7Cit9CisKK3ZvaWQgYnVpbGRfYXBw ZW5kX3BjaV9idXNfZGV2aWNlcyhBbWwgKnBhcmVudF9zY29wZSwgUENJQnVzICpidXMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwY2locF9icmlkZ2VfZW4pCit7Cisg ICAgQW1sICpkZXYsICpub3RpZnlfbWV0aG9kID0gTlVMTCwgKm1ldGhvZDsKKyAgICBRT2JqZWN0 ICpic2VsOworICAgIFBDSUJ1cyAqc2VjOworICAgIGludCBpOworCisgICAgYnNlbCA9IG9iamVj dF9wcm9wZXJ0eV9nZXRfcW9iamVjdChPQkpFQ1QoYnVzKSwgQUNQSV9QQ0lIUF9QUk9QX0JTRUws IE5VTEwpOworICAgIGlmIChic2VsKSB7CisgICAgICAgIHVpbnQ2NF90IGJzZWxfdmFsID0gcW51 bV9nZXRfdWludChxb2JqZWN0X3RvKFFOdW0sIGJzZWwpKTsKKworICAgICAgICBhbWxfYXBwZW5k KHBhcmVudF9zY29wZSwgYW1sX25hbWVfZGVjbCgiQlNFTCIsIGFtbF9pbnQoYnNlbF92YWwpKSk7 CisgICAgICAgIG5vdGlmeV9tZXRob2QgPSBhbWxfbWV0aG9kKCJEVk5UIiwgMiwgQU1MX05PVFNF UklBTElaRUQpOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGJ1cy0+ ZGV2aWNlcyk7IGkgKz0gUENJX0ZVTkNfTUFYKSB7CisgICAgICAgIERldmljZUNsYXNzICpkYzsK KyAgICAgICAgUENJRGV2aWNlQ2xhc3MgKnBjOworICAgICAgICBQQ0lEZXZpY2UgKnBkZXYgPSBi dXMtPmRldmljZXNbaV07CisgICAgICAgIGludCBzbG90ID0gUENJX1NMT1QoaSk7CisgICAgICAg IGJvb2wgaG90cGx1Z19lbmFibGVkX2RldjsKKyAgICAgICAgYm9vbCBicmlkZ2VfaW5fYWNwaTsK KworICAgICAgICBpZiAoIXBkZXYpIHsKKyAgICAgICAgICAgIGlmIChic2VsKSB7IC8qIGFkZCBo b3RwbHVnIHNsb3RzIGZvciBub24gcHJlc2VudCBkZXZpY2VzICovCisgICAgICAgICAgICAgICAg ZGV2ID0gYW1sX2RldmljZSgiUyUuMDJYIiwgUENJX0RFVkZOKHNsb3QsIDApKTsKKyAgICAgICAg ICAgICAgICBhbWxfYXBwZW5kKGRldiwgYW1sX25hbWVfZGVjbCgiX1NVTiIsIGFtbF9pbnQoc2xv dCkpKTsKKyAgICAgICAgICAgICAgICBhbWxfYXBwZW5kKGRldiwgYW1sX25hbWVfZGVjbCgiX0FE UiIsIGFtbF9pbnQoc2xvdCA8PCAxNikpKTsKKyAgICAgICAgICAgICAgICBtZXRob2QgPSBhbWxf bWV0aG9kKCJfRUowIiwgMSwgQU1MX05PVFNFUklBTElaRUQpOworICAgICAgICAgICAgICAgIGFt bF9hcHBlbmQobWV0aG9kLAorICAgICAgICAgICAgICAgICAgICBhbWxfY2FsbDIoIlBDRUoiLCBh bWxfbmFtZSgiQlNFTCIpLCBhbWxfbmFtZSgiX1NVTiIpKQorICAgICAgICAgICAgICAgICk7Cisg ICAgICAgICAgICAgICAgYW1sX2FwcGVuZChkZXYsIG1ldGhvZCk7CisgICAgICAgICAgICAgICAg YW1sX2FwcGVuZChwYXJlbnRfc2NvcGUsIGRldik7CisKKyAgICAgICAgICAgICAgICBidWlsZF9h cHBlbmRfcGNpaHBfbm90aWZ5X2VudHJ5KG5vdGlmeV9tZXRob2QsIHNsb3QpOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBwYyA9IFBD SV9ERVZJQ0VfR0VUX0NMQVNTKHBkZXYpOworICAgICAgICBkYyA9IERFVklDRV9HRVRfQ0xBU1Mo cGRldik7CisKKyAgICAgICAgLyogV2hlbiBob3RwbHVnIGZvciBicmlkZ2VzIGlzIGVuYWJsZWQs IGJyaWRnZXMgYXJlCisgICAgICAgICAqIGRlc2NyaWJlZCBpbiBBQ1BJIHNlcGFyYXRlbHkgKHNl ZSBidWlsZF9wY2lfYnVzX2VuZCkuCisgICAgICAgICAqIEluIHRoaXMgY2FzZSB0aGV5IGFyZW4n dCB0aGVtc2VsdmVzIGhvdC1wbHVnZ2FibGUuCisgICAgICAgICAqIEhvdHBsdWdnZWQgYnJpZGdl cyAqYXJlKiBob3QtcGx1Z2dhYmxlLgorICAgICAgICAgKi8KKyAgICAgICAgYnJpZGdlX2luX2Fj cGkgPSBwYy0+aXNfYnJpZGdlICYmIHBjaWhwX2JyaWRnZV9lbiAmJgorICAgICAgICAgICAgIURF VklDRShwZGV2KS0+aG90cGx1Z2dlZDsKKworICAgICAgICBob3RwbHVnX2VuYWJsZWRfZGV2ID0g YnNlbCAmJiBkYy0+aG90cGx1Z2dhYmxlICYmICFicmlkZ2VfaW5fYWNwaTsKKworICAgICAgICBp ZiAocGMtPmNsYXNzX2lkID09IFBDSV9DTEFTU19CUklER0VfSVNBKSB7CisgICAgICAgICAgICBj b250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHN0YXJ0IHRvIGNvbXBvc2UgUENJIHNs b3QgZGVzY3JpcHRvciAqLworICAgICAgICBkZXYgPSBhbWxfZGV2aWNlKCJTJS4wMlgiLCBQQ0lf REVWRk4oc2xvdCwgMCkpOworICAgICAgICBhbWxfYXBwZW5kKGRldiwgYW1sX25hbWVfZGVjbCgi X0FEUiIsIGFtbF9pbnQoc2xvdCA8PCAxNikpKTsKKworICAgICAgICBpZiAocGMtPmNsYXNzX2lk ID09IFBDSV9DTEFTU19ESVNQTEFZX1ZHQSkgeworICAgICAgICAgICAgLyogYWRkIFZHQSBzcGVj aWZpYyBBTUwgbWV0aG9kcyAqLworICAgICAgICAgICAgaW50IHMzZDsKKworICAgICAgICAgICAg aWYgKG9iamVjdF9keW5hbWljX2Nhc3QoT0JKRUNUKHBkZXYpLCAicXhsLXZnYSIpKSB7CisgICAg ICAgICAgICAgICAgczNkID0gMzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg ICAgczNkID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWV0aG9kID0gYW1sX21l dGhvZCgiX1MxRCIsIDAsIEFNTF9OT1RTRVJJQUxJWkVEKTsKKyAgICAgICAgICAgIGFtbF9hcHBl bmQobWV0aG9kLCBhbWxfcmV0dXJuKGFtbF9pbnQoMCkpKTsKKyAgICAgICAgICAgIGFtbF9hcHBl bmQoZGV2LCBtZXRob2QpOworCisgICAgICAgICAgICBtZXRob2QgPSBhbWxfbWV0aG9kKCJfUzJE IiwgMCwgQU1MX05PVFNFUklBTElaRUQpOworICAgICAgICAgICAgYW1sX2FwcGVuZChtZXRob2Qs IGFtbF9yZXR1cm4oYW1sX2ludCgwKSkpOworICAgICAgICAgICAgYW1sX2FwcGVuZChkZXYsIG1l dGhvZCk7CisKKyAgICAgICAgICAgIG1ldGhvZCA9IGFtbF9tZXRob2QoIl9TM0QiLCAwLCBBTUxf Tk9UU0VSSUFMSVpFRCk7CisgICAgICAgICAgICBhbWxfYXBwZW5kKG1ldGhvZCwgYW1sX3JldHVy bihhbWxfaW50KHMzZCkpKTsKKyAgICAgICAgICAgIGFtbF9hcHBlbmQoZGV2LCBtZXRob2QpOwor ICAgICAgICB9IGVsc2UgaWYgKGhvdHBsdWdfZW5hYmxlZF9kZXYpIHsKKyAgICAgICAgICAgIC8q IGFkZCBfU1VOL19FSjAgdG8gbWFrZSBzbG90IGhvdHBsdWdnYWJsZSAgKi8KKyAgICAgICAgICAg IGFtbF9hcHBlbmQoZGV2LCBhbWxfbmFtZV9kZWNsKCJfU1VOIiwgYW1sX2ludChzbG90KSkpOwor CisgICAgICAgICAgICBtZXRob2QgPSBhbWxfbWV0aG9kKCJfRUowIiwgMSwgQU1MX05PVFNFUklB TElaRUQpOworICAgICAgICAgICAgYW1sX2FwcGVuZChtZXRob2QsCisgICAgICAgICAgICAgICAg YW1sX2NhbGwyKCJQQ0VKIiwgYW1sX25hbWUoIkJTRUwiKSwgYW1sX25hbWUoIl9TVU4iKSkKKyAg ICAgICAgICAgICk7CisgICAgICAgICAgICBhbWxfYXBwZW5kKGRldiwgbWV0aG9kKTsKKworICAg ICAgICAgICAgaWYgKGJzZWwpIHsKKyAgICAgICAgICAgICAgICBidWlsZF9hcHBlbmRfcGNpaHBf bm90aWZ5X2VudHJ5KG5vdGlmeV9tZXRob2QsIHNsb3QpOworICAgICAgICAgICAgfQorICAgICAg ICB9IGVsc2UgaWYgKGJyaWRnZV9pbl9hY3BpKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAg ICAgICogZGV2aWNlIGlzIGNvbGRwbHVnZ2VkIGJyaWRnZSwKKyAgICAgICAgICAgICAqIGFkZCBj aGlsZCBkZXZpY2UgZGVzY3JpcHRpb25zIGludG8gaXRzIHNjb3BlCisgICAgICAgICAgICAgKi8K KyAgICAgICAgICAgIFBDSUJ1cyAqc2VjX2J1cyA9IHBjaV9icmlkZ2VfZ2V0X3NlY19idXMoUENJ X0JSSURHRShwZGV2KSk7CisKKyAgICAgICAgICAgIGJ1aWxkX2FwcGVuZF9wY2lfYnVzX2Rldmlj ZXMoZGV2LCBzZWNfYnVzLCBwY2locF9icmlkZ2VfZW4pOworICAgICAgICB9CisgICAgICAgIC8q IHNsb3QgZGVzY3JpcHRvciBoYXMgYmVlbiBjb21wb3NlZCwgYWRkIGl0IGludG8gcGFyZW50IGNv bnRleHQgKi8KKyAgICAgICAgYW1sX2FwcGVuZChwYXJlbnRfc2NvcGUsIGRldik7CisgICAgfQor CisgICAgaWYgKGJzZWwpIHsKKyAgICAgICAgYW1sX2FwcGVuZChwYXJlbnRfc2NvcGUsIG5vdGlm eV9tZXRob2QpOworICAgIH0KKworICAgIC8qIEFwcGVuZCBQQ05UIG1ldGhvZCB0byBub3RpZnkg YWJvdXQgZXZlbnRzIG9uIGxvY2FsIGFuZCBjaGlsZCBidXNlcy4KKyAgICAgKiBBZGQgdW5jb25k aXRpb25hbGx5IGZvciByb290IHNpbmNlIERTRFQgZXhwZWN0cyBpdC4KKyAgICAgKi8KKyAgICBt ZXRob2QgPSBhbWxfbWV0aG9kKCJQQ05UIiwgMCwgQU1MX05PVFNFUklBTElaRUQpOworCisgICAg LyogSWYgYnVzIHN1cHBvcnRzIGhvdHBsdWcgc2VsZWN0IGl0IGFuZCBub3RpZnkgYWJvdXQgbG9j YWwgZXZlbnRzICovCisgICAgaWYgKGJzZWwpIHsKKyAgICAgICAgdWludDY0X3QgYnNlbF92YWwg PSBxbnVtX2dldF91aW50KHFvYmplY3RfdG8oUU51bSwgYnNlbCkpOworCisgICAgICAgIGFtbF9h cHBlbmQobWV0aG9kLCBhbWxfc3RvcmUoYW1sX2ludChic2VsX3ZhbCksIGFtbF9uYW1lKCJCTlVN IikpKTsKKyAgICAgICAgYW1sX2FwcGVuZChtZXRob2QsCisgICAgICAgICAgICBhbWxfY2FsbDIo IkRWTlQiLCBhbWxfbmFtZSgiUENJVSIpLCBhbWxfaW50KDEpIC8qIERldmljZSBDaGVjayAqLykK KyAgICAgICAgKTsKKyAgICAgICAgYW1sX2FwcGVuZChtZXRob2QsCisgICAgICAgICAgICBhbWxf Y2FsbDIoIkRWTlQiLCBhbWxfbmFtZSgiUENJRCIpLCBhbWxfaW50KDMpLyogRWplY3QgUmVxdWVz dCAqLykKKyAgICAgICAgKTsKKyAgICB9CisKKyAgICAvKiBOb3RpZnkgYWJvdXQgY2hpbGQgYnVz IGV2ZW50cyBpbiBhbnkgY2FzZSAqLworICAgIGlmIChwY2locF9icmlkZ2VfZW4pIHsKKyAgICAg ICAgUUxJU1RfRk9SRUFDSChzZWMsICZidXMtPmNoaWxkLCBzaWJsaW5nKSB7CisgICAgICAgICAg ICBpbnQzMl90IGRldmZuID0gc2VjLT5wYXJlbnRfZGV2LT5kZXZmbjsKKworICAgICAgICAgICAg aWYgKHBjaV9idXNfaXNfcm9vdChzZWMpIHx8IHBjaV9idXNfaXNfZXhwcmVzcyhzZWMpKSB7Cisg ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFt bF9hcHBlbmQobWV0aG9kLCBhbWxfbmFtZSgiXlMlLjAyWC5QQ05UIiwgZGV2Zm4pKTsKKyAgICAg ICAgfQorICAgIH0KKyAgICBhbWxfYXBwZW5kKHBhcmVudF9zY29wZSwgbWV0aG9kKTsKKyAgICBx b2JqZWN0X3VucmVmKGJzZWwpOworfQorCiB2b2lkIGFjcGlfZHNkdF9hZGRfcGNpX2J1cyhBbWwg KmRzZHQsIEFjcGlQY2lCdXMgKnBjaV9ob3N0KQogewogICAgIEFtbCAqZGV2LCAqcGNpX3Njb3Bl OwpkaWZmIC0tZ2l0IGEvaHcvaTM4Ni9hY3BpLWJ1aWxkLmMgYi9ody9pMzg2L2FjcGktYnVpbGQu YwppbmRleCA2NzNjNWRmYWZjLi5iZWY1YjIzMTY4IDEwMDY0NAotLS0gYS9ody9pMzg2L2FjcGkt YnVpbGQuYworKysgYi9ody9pMzg2L2FjcGktYnVpbGQuYwpAQCAtMzYwLDE2MyArMzYwLDYgQEAg YnVpbGRfbWFkdChHQXJyYXkgKnRhYmxlX2RhdGEsIEJJT1NMaW5rZXIgKmxpbmtlciwKICAgICAg ICAgICAgICAgICAgdGFibGVfZGF0YS0+bGVuIC0gbWFkdF9zdGFydCwgMSwgTlVMTCwgTlVMTCk7 CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkX2FwcGVuZF9wY2locF9ub3RpZnlfZW50cnkoQW1sICpt ZXRob2QsIGludCBzbG90KQotewotICAgIEFtbCAqaWZfY3R4OwotICAgIGludDMyX3QgZGV2Zm4g PSBQQ0lfREVWRk4oc2xvdCwgMCk7Ci0KLSAgICBpZl9jdHggPSBhbWxfaWYoYW1sX2FuZChhbWxf YXJnKDApLCBhbWxfaW50KDB4MVUgPDwgc2xvdCksIE5VTEwpKTsKLSAgICBhbWxfYXBwZW5kKGlm X2N0eCwgYW1sX25vdGlmeShhbWxfbmFtZSgiUyUuMDJYIiwgZGV2Zm4pLCBhbWxfYXJnKDEpKSk7 Ci0gICAgYW1sX2FwcGVuZChtZXRob2QsIGlmX2N0eCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGJ1aWxk X2FwcGVuZF9wY2lfYnVzX2RldmljZXMoQW1sICpwYXJlbnRfc2NvcGUsIFBDSUJ1cyAqYnVzLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBjaWhwX2JyaWRn ZV9lbikKLXsKLSAgICBBbWwgKmRldiwgKm5vdGlmeV9tZXRob2QgPSBOVUxMLCAqbWV0aG9kOwot ICAgIFFPYmplY3QgKmJzZWw7Ci0gICAgUENJQnVzICpzZWM7Ci0gICAgaW50IGk7Ci0KLSAgICBi c2VsID0gb2JqZWN0X3Byb3BlcnR5X2dldF9xb2JqZWN0KE9CSkVDVChidXMpLCBBQ1BJX1BDSUhQ X1BST1BfQlNFTCwgTlVMTCk7Ci0gICAgaWYgKGJzZWwpIHsKLSAgICAgICAgdWludDY0X3QgYnNl bF92YWwgPSBxbnVtX2dldF91aW50KHFvYmplY3RfdG8oUU51bSwgYnNlbCkpOwotCi0gICAgICAg IGFtbF9hcHBlbmQocGFyZW50X3Njb3BlLCBhbWxfbmFtZV9kZWNsKCJCU0VMIiwgYW1sX2ludChi c2VsX3ZhbCkpKTsKLSAgICAgICAgbm90aWZ5X21ldGhvZCA9IGFtbF9tZXRob2QoIkRWTlQiLCAy LCBBTUxfTk9UU0VSSUFMSVpFRCk7Ci0gICAgfQotCi0gICAgZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUoYnVzLT5kZXZpY2VzKTsgaSArPSBQQ0lfRlVOQ19NQVgpIHsKLSAgICAgICAgRGV2aWNl Q2xhc3MgKmRjOwotICAgICAgICBQQ0lEZXZpY2VDbGFzcyAqcGM7Ci0gICAgICAgIFBDSURldmlj ZSAqcGRldiA9IGJ1cy0+ZGV2aWNlc1tpXTsKLSAgICAgICAgaW50IHNsb3QgPSBQQ0lfU0xPVChp KTsKLSAgICAgICAgYm9vbCBob3RwbHVnX2VuYWJsZWRfZGV2OwotICAgICAgICBib29sIGJyaWRn ZV9pbl9hY3BpOwotCi0gICAgICAgIGlmICghcGRldikgewotICAgICAgICAgICAgaWYgKGJzZWwp IHsgLyogYWRkIGhvdHBsdWcgc2xvdHMgZm9yIG5vbiBwcmVzZW50IGRldmljZXMgKi8KLSAgICAg ICAgICAgICAgICBkZXYgPSBhbWxfZGV2aWNlKCJTJS4wMlgiLCBQQ0lfREVWRk4oc2xvdCwgMCkp OwotICAgICAgICAgICAgICAgIGFtbF9hcHBlbmQoZGV2LCBhbWxfbmFtZV9kZWNsKCJfU1VOIiwg YW1sX2ludChzbG90KSkpOwotICAgICAgICAgICAgICAgIGFtbF9hcHBlbmQoZGV2LCBhbWxfbmFt ZV9kZWNsKCJfQURSIiwgYW1sX2ludChzbG90IDw8IDE2KSkpOwotICAgICAgICAgICAgICAgIG1l dGhvZCA9IGFtbF9tZXRob2QoIl9FSjAiLCAxLCBBTUxfTk9UU0VSSUFMSVpFRCk7Ci0gICAgICAg ICAgICAgICAgYW1sX2FwcGVuZChtZXRob2QsCi0gICAgICAgICAgICAgICAgICAgIGFtbF9jYWxs MigiUENFSiIsIGFtbF9uYW1lKCJCU0VMIiksIGFtbF9uYW1lKCJfU1VOIikpCi0gICAgICAgICAg ICAgICAgKTsKLSAgICAgICAgICAgICAgICBhbWxfYXBwZW5kKGRldiwgbWV0aG9kKTsKLSAgICAg ICAgICAgICAgICBhbWxfYXBwZW5kKHBhcmVudF9zY29wZSwgZGV2KTsKLQotICAgICAgICAgICAg ICAgIGJ1aWxkX2FwcGVuZF9wY2locF9ub3RpZnlfZW50cnkobm90aWZ5X21ldGhvZCwgc2xvdCk7 Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAg ICAgIHBjID0gUENJX0RFVklDRV9HRVRfQ0xBU1MocGRldik7Ci0gICAgICAgIGRjID0gREVWSUNF X0dFVF9DTEFTUyhwZGV2KTsKLQotICAgICAgICAvKiBXaGVuIGhvdHBsdWcgZm9yIGJyaWRnZXMg aXMgZW5hYmxlZCwgYnJpZGdlcyBhcmUKLSAgICAgICAgICogZGVzY3JpYmVkIGluIEFDUEkgc2Vw YXJhdGVseSAoc2VlIGJ1aWxkX3BjaV9idXNfZW5kKS4KLSAgICAgICAgICogSW4gdGhpcyBjYXNl IHRoZXkgYXJlbid0IHRoZW1zZWx2ZXMgaG90LXBsdWdnYWJsZS4KLSAgICAgICAgICogSG90cGx1 Z2dlZCBicmlkZ2VzICphcmUqIGhvdC1wbHVnZ2FibGUuCi0gICAgICAgICAqLwotICAgICAgICBi cmlkZ2VfaW5fYWNwaSA9IHBjLT5pc19icmlkZ2UgJiYgcGNpaHBfYnJpZGdlX2VuICYmCi0gICAg ICAgICAgICAhREVWSUNFKHBkZXYpLT5ob3RwbHVnZ2VkOwotCi0gICAgICAgIGhvdHBsdWdfZW5h YmxlZF9kZXYgPSBic2VsICYmIGRjLT5ob3RwbHVnZ2FibGUgJiYgIWJyaWRnZV9pbl9hY3BpOwot Ci0gICAgICAgIGlmIChwYy0+Y2xhc3NfaWQgPT0gUENJX0NMQVNTX0JSSURHRV9JU0EpIHsKLSAg ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogc3RhcnQgdG8gY29t cG9zZSBQQ0kgc2xvdCBkZXNjcmlwdG9yICovCi0gICAgICAgIGRldiA9IGFtbF9kZXZpY2UoIlMl LjAyWCIsIFBDSV9ERVZGTihzbG90LCAwKSk7Ci0gICAgICAgIGFtbF9hcHBlbmQoZGV2LCBhbWxf bmFtZV9kZWNsKCJfQURSIiwgYW1sX2ludChzbG90IDw8IDE2KSkpOwotCi0gICAgICAgIGlmIChw Yy0+Y2xhc3NfaWQgPT0gUENJX0NMQVNTX0RJU1BMQVlfVkdBKSB7Ci0gICAgICAgICAgICAvKiBh ZGQgVkdBIHNwZWNpZmljIEFNTCBtZXRob2RzICovCi0gICAgICAgICAgICBpbnQgczNkOwotCi0g ICAgICAgICAgICBpZiAob2JqZWN0X2R5bmFtaWNfY2FzdChPQkpFQ1QocGRldiksICJxeGwtdmdh IikpIHsKLSAgICAgICAgICAgICAgICBzM2QgPSAzOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg ICAgICAgICAgICAgICBzM2QgPSAwOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtZXRo b2QgPSBhbWxfbWV0aG9kKCJfUzFEIiwgMCwgQU1MX05PVFNFUklBTElaRUQpOwotICAgICAgICAg ICAgYW1sX2FwcGVuZChtZXRob2QsIGFtbF9yZXR1cm4oYW1sX2ludCgwKSkpOwotICAgICAgICAg ICAgYW1sX2FwcGVuZChkZXYsIG1ldGhvZCk7Ci0KLSAgICAgICAgICAgIG1ldGhvZCA9IGFtbF9t ZXRob2QoIl9TMkQiLCAwLCBBTUxfTk9UU0VSSUFMSVpFRCk7Ci0gICAgICAgICAgICBhbWxfYXBw ZW5kKG1ldGhvZCwgYW1sX3JldHVybihhbWxfaW50KDApKSk7Ci0gICAgICAgICAgICBhbWxfYXBw ZW5kKGRldiwgbWV0aG9kKTsKLQotICAgICAgICAgICAgbWV0aG9kID0gYW1sX21ldGhvZCgiX1Mz RCIsIDAsIEFNTF9OT1RTRVJJQUxJWkVEKTsKLSAgICAgICAgICAgIGFtbF9hcHBlbmQobWV0aG9k LCBhbWxfcmV0dXJuKGFtbF9pbnQoczNkKSkpOwotICAgICAgICAgICAgYW1sX2FwcGVuZChkZXYs IG1ldGhvZCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaG90cGx1Z19lbmFibGVkX2RldikgewotICAg ICAgICAgICAgLyogYWRkIF9TVU4vX0VKMCB0byBtYWtlIHNsb3QgaG90cGx1Z2dhYmxlICAqLwot ICAgICAgICAgICAgYW1sX2FwcGVuZChkZXYsIGFtbF9uYW1lX2RlY2woIl9TVU4iLCBhbWxfaW50 KHNsb3QpKSk7Ci0KLSAgICAgICAgICAgIG1ldGhvZCA9IGFtbF9tZXRob2QoIl9FSjAiLCAxLCBB TUxfTk9UU0VSSUFMSVpFRCk7Ci0gICAgICAgICAgICBhbWxfYXBwZW5kKG1ldGhvZCwKLSAgICAg ICAgICAgICAgICBhbWxfY2FsbDIoIlBDRUoiLCBhbWxfbmFtZSgiQlNFTCIpLCBhbWxfbmFtZSgi X1NVTiIpKQotICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIGFtbF9hcHBlbmQoZGV2LCBtZXRo b2QpOwotCi0gICAgICAgICAgICBpZiAoYnNlbCkgewotICAgICAgICAgICAgICAgIGJ1aWxkX2Fw cGVuZF9wY2locF9ub3RpZnlfZW50cnkobm90aWZ5X21ldGhvZCwgc2xvdCk7Ci0gICAgICAgICAg ICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoYnJpZGdlX2luX2FjcGkpIHsKLSAgICAgICAgICAgIC8q Ci0gICAgICAgICAgICAgKiBkZXZpY2UgaXMgY29sZHBsdWdnZWQgYnJpZGdlLAotICAgICAgICAg ICAgICogYWRkIGNoaWxkIGRldmljZSBkZXNjcmlwdGlvbnMgaW50byBpdHMgc2NvcGUKLSAgICAg ICAgICAgICAqLwotICAgICAgICAgICAgUENJQnVzICpzZWNfYnVzID0gcGNpX2JyaWRnZV9nZXRf c2VjX2J1cyhQQ0lfQlJJREdFKHBkZXYpKTsKLQotICAgICAgICAgICAgYnVpbGRfYXBwZW5kX3Bj aV9idXNfZGV2aWNlcyhkZXYsIHNlY19idXMsIHBjaWhwX2JyaWRnZV9lbik7Ci0gICAgICAgIH0K LSAgICAgICAgLyogc2xvdCBkZXNjcmlwdG9yIGhhcyBiZWVuIGNvbXBvc2VkLCBhZGQgaXQgaW50 byBwYXJlbnQgY29udGV4dCAqLwotICAgICAgICBhbWxfYXBwZW5kKHBhcmVudF9zY29wZSwgZGV2 KTsKLSAgICB9Ci0KLSAgICBpZiAoYnNlbCkgewotICAgICAgICBhbWxfYXBwZW5kKHBhcmVudF9z Y29wZSwgbm90aWZ5X21ldGhvZCk7Ci0gICAgfQotCi0gICAgLyogQXBwZW5kIFBDTlQgbWV0aG9k IHRvIG5vdGlmeSBhYm91dCBldmVudHMgb24gbG9jYWwgYW5kIGNoaWxkIGJ1c2VzLgotICAgICAq IEFkZCB1bmNvbmRpdGlvbmFsbHkgZm9yIHJvb3Qgc2luY2UgRFNEVCBleHBlY3RzIGl0LgotICAg ICAqLwotICAgIG1ldGhvZCA9IGFtbF9tZXRob2QoIlBDTlQiLCAwLCBBTUxfTk9UU0VSSUFMSVpF RCk7Ci0KLSAgICAvKiBJZiBidXMgc3VwcG9ydHMgaG90cGx1ZyBzZWxlY3QgaXQgYW5kIG5vdGlm eSBhYm91dCBsb2NhbCBldmVudHMgKi8KLSAgICBpZiAoYnNlbCkgewotICAgICAgICB1aW50NjRf dCBic2VsX3ZhbCA9IHFudW1fZ2V0X3VpbnQocW9iamVjdF90byhRTnVtLCBic2VsKSk7Ci0KLSAg ICAgICAgYW1sX2FwcGVuZChtZXRob2QsIGFtbF9zdG9yZShhbWxfaW50KGJzZWxfdmFsKSwgYW1s X25hbWUoIkJOVU0iKSkpOwotICAgICAgICBhbWxfYXBwZW5kKG1ldGhvZCwKLSAgICAgICAgICAg IGFtbF9jYWxsMigiRFZOVCIsIGFtbF9uYW1lKCJQQ0lVIiksIGFtbF9pbnQoMSkgLyogRGV2aWNl IENoZWNrICovKQotICAgICAgICApOwotICAgICAgICBhbWxfYXBwZW5kKG1ldGhvZCwKLSAgICAg ICAgICAgIGFtbF9jYWxsMigiRFZOVCIsIGFtbF9uYW1lKCJQQ0lEIiksIGFtbF9pbnQoMykvKiBF amVjdCBSZXF1ZXN0ICovKQotICAgICAgICApOwotICAgIH0KLQotICAgIC8qIE5vdGlmeSBhYm91 dCBjaGlsZCBidXMgZXZlbnRzIGluIGFueSBjYXNlICovCi0gICAgaWYgKHBjaWhwX2JyaWRnZV9l bikgewotICAgICAgICBRTElTVF9GT1JFQUNIKHNlYywgJmJ1cy0+Y2hpbGQsIHNpYmxpbmcpIHsK LSAgICAgICAgICAgIGludDMyX3QgZGV2Zm4gPSBzZWMtPnBhcmVudF9kZXYtPmRldmZuOwotCi0g ICAgICAgICAgICBpZiAocGNpX2J1c19pc19yb290KHNlYykgfHwgcGNpX2J1c19pc19leHByZXNz KHNlYykpIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAg ICAgICAgICAgYW1sX2FwcGVuZChtZXRob2QsIGFtbF9uYW1lKCJeUyUuMDJYLlBDTlQiLCBkZXZm bikpOwotICAgICAgICB9Ci0gICAgfQotICAgIGFtbF9hcHBlbmQocGFyZW50X3Njb3BlLCBtZXRo b2QpOwotICAgIHFvYmplY3RfdW5yZWYoYnNlbCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGJ1aWxkX2hw ZXRfYW1sKEFtbCAqdGFibGUpCiB7CiAgICAgQW1sICpjcnM7CkBAIC0xMjEyLDQxICsxMDU1LDEw IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3BpaXg0X2lzYV9icmlkZ2UoQW1sICp0YWJsZSkKIHN0YXRp YyB2b2lkIGJ1aWxkX3BpaXg0X3BjaV9ob3RwbHVnKEFtbCAqdGFibGUpCiB7CiAgICAgQW1sICpz Y29wZTsKLSAgICBBbWwgKmZpZWxkOwotICAgIEFtbCAqbWV0aG9kOwotCi0gICAgc2NvcGUgPSAg YW1sX3Njb3BlKCJfU0IuUENJMCIpOwotCi0gICAgYW1sX2FwcGVuZChzY29wZSwKLSAgICAgICAg YW1sX29wZXJhdGlvbl9yZWdpb24oIlBDU1QiLCBBTUxfU1lTVEVNX0lPLCBhbWxfaW50KDB4YWUw MCksIDB4MDgpKTsKLSAgICBmaWVsZCA9IGFtbF9maWVsZCgiUENTVCIsIEFNTF9EV09SRF9BQ0Ms IEFNTF9OT0xPQ0ssIEFNTF9XUklURV9BU19aRVJPUyk7Ci0gICAgYW1sX2FwcGVuZChmaWVsZCwg YW1sX25hbWVkX2ZpZWxkKCJQQ0lVIiwgMzIpKTsKLSAgICBhbWxfYXBwZW5kKGZpZWxkLCBhbWxf bmFtZWRfZmllbGQoIlBDSUQiLCAzMikpOwotICAgIGFtbF9hcHBlbmQoc2NvcGUsIGZpZWxkKTsK IAotICAgIGFtbF9hcHBlbmQoc2NvcGUsCi0gICAgICAgIGFtbF9vcGVyYXRpb25fcmVnaW9uKCJT RUoiLCBBTUxfU1lTVEVNX0lPLCBhbWxfaW50KDB4YWUwOCksIDB4MDQpKTsKLSAgICBmaWVsZCA9 IGFtbF9maWVsZCgiU0VKIiwgQU1MX0RXT1JEX0FDQywgQU1MX05PTE9DSywgQU1MX1dSSVRFX0FT X1pFUk9TKTsKLSAgICBhbWxfYXBwZW5kKGZpZWxkLCBhbWxfbmFtZWRfZmllbGQoIkIwRUoiLCAz MikpOwotICAgIGFtbF9hcHBlbmQoc2NvcGUsIGZpZWxkKTsKLQotICAgIGFtbF9hcHBlbmQoc2Nv cGUsCi0gICAgICAgIGFtbF9vcGVyYXRpb25fcmVnaW9uKCJCTk1SIiwgQU1MX1NZU1RFTV9JTywg YW1sX2ludCgweGFlMTApLCAweDA0KSk7Ci0gICAgZmllbGQgPSBhbWxfZmllbGQoIkJOTVIiLCBB TUxfRFdPUkRfQUNDLCBBTUxfTk9MT0NLLCBBTUxfV1JJVEVfQVNfWkVST1MpOwotICAgIGFtbF9h cHBlbmQoZmllbGQsIGFtbF9uYW1lZF9maWVsZCgiQk5VTSIsIDMyKSk7Ci0gICAgYW1sX2FwcGVu ZChzY29wZSwgZmllbGQpOwotCi0gICAgYW1sX2FwcGVuZChzY29wZSwgYW1sX211dGV4KCJCTENL IiwgMCkpOwotCi0gICAgbWV0aG9kID0gYW1sX21ldGhvZCgiUENFSiIsIDIsIEFNTF9OT1RTRVJJ QUxJWkVEKTsKLSAgICBhbWxfYXBwZW5kKG1ldGhvZCwgYW1sX2FjcXVpcmUoYW1sX25hbWUoIkJM Q0siKSwgMHhGRkZGKSk7Ci0gICAgYW1sX2FwcGVuZChtZXRob2QsIGFtbF9zdG9yZShhbWxfYXJn KDApLCBhbWxfbmFtZSgiQk5VTSIpKSk7Ci0gICAgYW1sX2FwcGVuZChtZXRob2QsCi0gICAgICAg IGFtbF9zdG9yZShhbWxfc2hpZnRsZWZ0KGFtbF9pbnQoMSksIGFtbF9hcmcoMSkpLCBhbWxfbmFt ZSgiQjBFSiIpKSk7Ci0gICAgYW1sX2FwcGVuZChtZXRob2QsIGFtbF9yZWxlYXNlKGFtbF9uYW1l KCJCTENLIikpKTsKLSAgICBhbWxfYXBwZW5kKG1ldGhvZCwgYW1sX3JldHVybihhbWxfaW50KDAp KSk7Ci0gICAgYW1sX2FwcGVuZChzY29wZSwgbWV0aG9kKTsKKyAgICBzY29wZSA9IGFtbF9zY29w ZSgiX1NCLlBDSTAiKTsKIAorICAgIGJ1aWxkX2FjcGlfcGNpaHAoc2NvcGUpOwogICAgIGFtbF9h cHBlbmQodGFibGUsIHNjb3BlKTsKIH0KIAotLSAKMi4xOS4xCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t YWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==