From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v4 06/12] x86emul: use eflags definitions in x86-defns.h Date: Fri, 3 Feb 2017 11:53:08 +0000 Message-ID: <20170203115314.19955-7-wei.liu2@citrix.com> References: <20170203115314.19955-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cZcQb-0001zB-EL for xen-devel@lists.xenproject.org; Fri, 03 Feb 2017 11:53:21 +0000 In-Reply-To: <20170203115314.19955-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Wei Liu List-Id: xen-devel@lists.xenproject.org QmFzaWNhbGx5IHRoaXMgcGF0Y2ggZG9lcyAncy9FRkxHXy9YODZfRUZMQUdTXy9nJyBhbmQgd2l0 aCBpbmRlbnRhdGlvbgpmaXhlZCB1cC4gQW5kIHJlbW92ZSB0aGUgZHVwbGljYXRlcyBpbiB4ODZf ZW11YWx0ZS5jLiAgVGhpcyBpbiB0dXJuCnJlcXVpcmVzIHVzZXJzcGFjZSB0ZXN0IGhhcm5lc3Mg dG8gaW5jbHVkZSB4ODYtZGVmbnMuaC4gQWxzbyByZW1vdmUgYQpmZXcgZHVwbGljYXRlcyBpbiB1 c2Vyc3BhY2UgaGFybmVzcyBwcm9ncmFtLgoKTm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgpTaWduZWQt b2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogSmFuIEJl dWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KIHRvb2xzL2Z1enoveDg2X2luc3RydWN0aW9u X2VtdWxhdG9yL01ha2VmaWxlIHwgICA0ICstCiB0b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFr ZWZpbGUgICAgICAgICAgICB8ICAgNCArLQogdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3Rf eDg2X2VtdWxhdG9yLmMgfCAgIDkgLQogdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Nl9lbXVs YXRlLmggICAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRl LmMgICAgICAgfCAzMjEgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiA1IGZpbGVzIGNoYW5n ZWQsIDE2MCBpbnNlcnRpb25zKCspLCAxNzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9v bHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvTWFrZWZpbGUgYi90b29scy9mdXp6L3g4 Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9NYWtlZmlsZQppbmRleCA4NGJlMzFjYzI2Li5iYmI3ODE4 MzhiIDEwMDY0NAotLS0gYS90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9NYWtl ZmlsZQorKysgYi90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9NYWtlZmlsZQpA QCAtMTEsNyArMTEsNyBAQCBlbmRpZgogeDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYyB4ODZfZW11 bGF0ZS94ODZfZW11bGF0ZS5oOgogCVsgLUwgeDg2X2VtdWxhdGUgXSB8fCBsbiAtc2YgJChYRU5f Uk9PVCkveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlIC4KIAotYXNtL3g4Ni12ZW5kb3JzLmg6Cith c20veDg2LXZlbmRvcnMuaCBhc20veDg2LWRlZm5zLmg6CiAJWyAtTCBhc20gXSB8fCBsbiAtc2Yg JChYRU5fUk9PVCkveGVuL2luY2x1ZGUvYXNtLXg4NiBhc20KIAogeDg2X2VtdWxhdGUuYyB4ODZf ZW11bGF0ZS5oOiAlOgpAQCAtMjAsNyArMjAsNyBAQCB4ODZfZW11bGF0ZS5jIHg4Nl9lbXVsYXRl Lmg6ICU6CiBDRkxBR1MgKz0gJChDRkxBR1NfeGVuaW5jbHVkZSkgLURfX1hFTl9UT09MU19fIC1J LgogCiB4ODZfZW11bGF0ZS5oIDo9IHg4Nl9lbXVsYXRlLmggeDg2X2VtdWxhdGUveDg2X2VtdWxh dGUuaAoteDg2LmggOj0gYXNtL3g4Ni12ZW5kb3JzLmgKK3g4Ni5oIDo9IGFzbS94ODYtdmVuZG9y cy5oIGFzbS94ODYtZGVmbnMuaAogCiB4ODZfZW11bGF0ZS5vOiB4ODZfZW11bGF0ZS5jIHg4Nl9l bXVsYXRlL3g4Nl9lbXVsYXRlLmMgJCh4ODZfZW11bGF0ZS5oKSAkKHg4Ni5oKQogCmRpZmYgLS1n aXQgYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUgYi90b29scy90ZXN0cy94ODZf ZW11bGF0b3IvTWFrZWZpbGUKaW5kZXggNGJhNjIzOTM2Zi4uMGM1M2VjODdlOCAxMDA2NDQKLS0t IGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlCisrKyBiL3Rvb2xzL3Rlc3RzL3g4 Nl9lbXVsYXRvci9NYWtlZmlsZQpAQCAtNDMsMTMgKzQzLDEzIEBAIGluc3RhbGw6CiB4ODZfZW11 bGF0ZS94ODZfZW11bGF0ZS5jIHg4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmg6CiAJWyAtTCB4ODZf ZW11bGF0ZSBdIHx8IGxuIC1zZiAkKFhFTl9ST09UKS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUg LgogCi1hc20veDg2LXZlbmRvcnMuaDoKK2FzbS94ODYtdmVuZG9ycy5oIGFzbS94ODYtZGVmbnMu aDoKIAlbIC1MIGFzbSBdIHx8IGxuIC1zZiAkKFhFTl9ST09UKS94ZW4vaW5jbHVkZS9hc20teDg2 IGFzbQogCiBIT1NUQ0ZMQUdTICs9ICQoQ0ZMQUdTX3hlbmluY2x1ZGUpIC1JLgogCiB4ODZfZW11 bGF0ZS5oIDo9IHg4Nl9lbXVsYXRlLmggeDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAoteDg2Lmgg Oj0gYXNtL3g4Ni12ZW5kb3JzLmgKK3g4Ni5oIDo9IGFzbS94ODYtdmVuZG9ycy5oIGFzbS94ODYt ZGVmbnMuaAogCiB4ODZfZW11bGF0ZS5vOiB4ODZfZW11bGF0ZS5jIHg4Nl9lbXVsYXRlL3g4Nl9l bXVsYXRlLmMgJCh4ODZfZW11bGF0ZS5oKSAkKHg4Ni5oKQogCSQoSE9TVENDKSAkKEhPU1RDRkxB R1MpIC1EX19YRU5fVE9PTFNfXyAtYyAtZyAtbyAkQCAkPApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVz dHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMgYi90b29scy90ZXN0cy94ODZfZW11 bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYwppbmRleCA5MjRmZDM2ZjE4Li4yNzIwMGUwMjgzIDEw MDY0NAotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYwor KysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYwpAQCAtMjMs MTUgKzIzLDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7CiAjZW5kaWYKIH07CiAKLS8qIEVGTEFH UyBiaXQgZGVmaW5pdGlvbnMuICovCi0jZGVmaW5lIEVGTEdfT0YgKDE8PDExKQotI2RlZmluZSBF RkxHX0RGICgxPDwxMCkKLSNkZWZpbmUgRUZMR19TRiAoMTw8NykKLSNkZWZpbmUgRUZMR19aRiAo MTw8NikKLSNkZWZpbmUgRUZMR19BRiAoMTw8NCkKLSNkZWZpbmUgRUZMR19QRiAoMTw8MikKLSNk ZWZpbmUgRUZMR19DRiAoMTw8MCkKLQogc3RhdGljIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwog CiBzdGF0aWMgaW50IHJlYWQoCmRpZmYgLS1naXQgYS90b29scy90ZXN0cy94ODZfZW11bGF0b3Iv eDg2X2VtdWxhdGUuaCBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODZfZW11bGF0ZS5oCmlu ZGV4IGRiMjg3MDA0ZTYuLmUwNjRkZWFlZWEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9l bXVsYXRvci94ODZfZW11bGF0ZS5oCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODZf ZW11bGF0ZS5oCkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUg PHhlbi94ZW4uaD4KIAorI2luY2x1ZGUgPGFzbS94ODYtZGVmbnMuaD4KICNpbmNsdWRlIDxhc20v eDg2LXZlbmRvcnMuaD4KIAogI2RlZmluZSBCVUcoKSBhYm9ydCgpCmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11 bGF0ZS94ODZfZW11bGF0ZS5jCmluZGV4IGRiZGE0YjNiNGEuLmMzOTc1NmRkODUgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNo L3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC00NDcsMjYgKzQ0Nyw2IEBAIHR5cGVk ZWYgdW5pb24gewogI2RlZmluZSBDUjRfRlNHU0JBU0UgICAoMTw8MTYpCiAjZGVmaW5lIENSNF9P U1hTQVZFICAgICgxPDwxOCkKIAotLyogRUZMQUdTIGJpdCBkZWZpbml0aW9ucy4gKi8KLSNkZWZp bmUgRUZMR19JRCAgICgxPDwyMSkKLSNkZWZpbmUgRUZMR19WSVAgICgxPDwyMCkKLSNkZWZpbmUg RUZMR19WSUYgICgxPDwxOSkKLSNkZWZpbmUgRUZMR19BQyAgICgxPDwxOCkKLSNkZWZpbmUgRUZM R19WTSAgICgxPDwxNykKLSNkZWZpbmUgRUZMR19SRiAgICgxPDwxNikKLSNkZWZpbmUgRUZMR19O VCAgICgxPDwxNCkKLSNkZWZpbmUgRUZMR19JT1BMICgzPDwxMikKLSNkZWZpbmUgRUZMR19PRiAg ICgxPDwxMSkKLSNkZWZpbmUgRUZMR19ERiAgICgxPDwxMCkKLSNkZWZpbmUgRUZMR19JRiAgICgx PDw5KQotI2RlZmluZSBFRkxHX1RGICAgKDE8PDgpCi0jZGVmaW5lIEVGTEdfU0YgICAoMTw8NykK LSNkZWZpbmUgRUZMR19aRiAgICgxPDw2KQotI2RlZmluZSBFRkxHX0FGICAgKDE8PDQpCi0jZGVm aW5lIEVGTEdfUEYgICAoMTw8MikKLSNkZWZpbmUgRUZMR19NQlMgICgxPDwxKQotI2RlZmluZSBF RkxHX0NGICAgKDE8PDApCi0KIC8qIEZsb2F0aW5nIHBvaW50IHN0YXR1cyB3b3JkIGRlZmluaXRp b25zLiAqLwogI2RlZmluZSBGU1dfRVMgICAgKDFVIDw8IDcpCiAKQEAgLTUyMSwxNCArNTAxLDE2 IEBAIHR5cGVkZWYgdW5pb24gewogICogVGhlc2UgRUZMQUdTIGJpdHMgYXJlIHJlc3RvcmVkIGZy b20gc2F2ZWQgdmFsdWUgZHVyaW5nIGVtdWxhdGlvbiwgYW5kCiAgKiBhbnkgY2hhbmdlcyBhcmUg d3JpdHRlbiBiYWNrIHRvIHRoZSBzYXZlZCB2YWx1ZSBhZnRlciBlbXVsYXRpb24uCiAgKi8KLSNk ZWZpbmUgRUZMQUdTX01BU0sgKEVGTEdfT0Z8RUZMR19TRnxFRkxHX1pGfEVGTEdfQUZ8RUZMR19Q RnxFRkxHX0NGKQorI2RlZmluZSBFRkxBR1NfTUFTSyAoWDg2X0VGTEFHU19PRiB8IFg4Nl9FRkxB R1NfU0YgfCBYODZfRUZMQUdTX1pGIHwgXAorICAgICAgICAgICAgICAgICAgICAgWDg2X0VGTEFH U19BRiB8IFg4Nl9FRkxBR1NfUEYgfCBYODZfRUZMQUdTX0NGKQogCiAvKgogICogVGhlc2UgRUZM QUdTIGJpdHMgYXJlIG1vZGlmaWFibGUgKGJ5IFBPUEYgYW5kIElSRVQpLCBwb3NzaWJseSBzdWJq ZWN0CiAgKiB0byBmdXJ0aGVyIENQTCBhbmQgSU9QTCBjb25zdHJhaW50cy4KICAqLwotI2RlZmlu ZSBFRkxBR1NfTU9ESUZJQUJMRSAoRUZMR19JRHxFRkxHX0FDfEVGTEdfUkZ8RUZMR19OVHxFRkxH X0lPUEx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGTEdfREZ8RUZMR19JRnxFRkxH X1RGfEVGTEFHU19NQVNLKQorI2RlZmluZSBFRkxBR1NfTU9ESUZJQUJMRSAoWDg2X0VGTEFHU19J RCB8IFg4Nl9FRkxBR1NfQUMgfCBYODZfRUZMQUdTX1JGIHwgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgWDg2X0VGTEFHU19OVCB8IFg4Nl9FRkxBR1NfSU9QTCB8IFg4Nl9FRkxBR1NfREYg fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBYODZfRUZMQUdTX0lGIHwgWDg2X0VGTEFH U19URiB8IEVGTEFHU19NQVNLKQogCiAvKiBCZWZvcmUgZXhlY3V0aW5nIGluc3RydWN0aW9uOiBy ZXN0b3JlIG5lY2Vzc2FyeSBiaXRzIGluIEVGTEFHUy4gKi8KICNkZWZpbmUgX1BSRV9FRkxBR1Mo X3NhdiwgX21zaywgX3RtcCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC03NjEsNyAr NzQzLDggQEAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAogfSB3aGlsZSAoMCkKICNkZWZpbmUgcmVnaXN0ZXJf YWRkcmVzc19hZGp1c3QocmVnLCBhZGopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK ICAgICBfcmVnaXN0ZXJfYWRkcmVzc19pbmNyZW1lbnQocmVnLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3JlZ3Mu X2VmbGFncyAmIEVGTEdfREYgPyAtKGFkaikgOiAoYWRqKSwgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19ERiA/ICAgICAgICAgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKGFkaikgOiAoYWRqKSwgICAgICAgICAg ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZF9ieXRl cykKIAogI2RlZmluZSBzcF9wcmVfZGVjKGRlYykgKHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXApAQCAtNzg0LDcgKzc2Nyw3IEBAIGRvIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKICAgICByYyA9IG9wcy0+aW5zbl9mZXRjaCh4ODZfc2VnX2NzLCBpcCwgTlVMTCwgMCwgY3R4 dCk7ICAgICAgICAgICAgICAgIFwKICAgICBpZiAoIHJjICkgZ290byBkb25lOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBfcmVncy5yKGlwKSA9 IGlwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICBzaW5nbGVzdGVwID0gX3JlZ3MuX2VmbGFncyAmIEVGTEdfVEY7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICBzaW5nbGVzdGVwID0gX3JlZ3MuX2VmbGFncyAmIFg4Nl9F RkxBR1NfVEY7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0gd2hpbGUgKDApCiAKICNkZWZp bmUgdmFsaWRhdGVfZmFyX2JyYW5jaChjcywgaXApICh7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKQEAgLTgwMSw3ICs3ODQsNyBAQCBkbyB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAjZGVmaW5l IGNvbW1pdF9mYXJfYnJhbmNoKGNzLCBuZXdpcCkgKHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCiAgICAgdmFsaWRhdGVfZmFyX2JyYW5jaChjcywgbmV3aXApOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgX3JlZ3MucihpcCkgPSAobmV3aXApOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc2luZ2xl c3RlcCA9IF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1RGOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgc2luZ2xlc3RlcCA9IF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX1RGOyAg ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgb3BzLT53cml0ZV9zZWdtZW50KHg4Nl9zZWdf Y3MsIGNzLCBjdHh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9KQogCkBAIC04NTQs NyArODM3LDcgQEAgc3RhdGljIGludCBfZ2V0X2ZwdSgKICAgICAgICAgaWYgKCB0eXBlID49IFg4 NkVNVUxfRlBVX3ltbSApCiAgICAgICAgIHsKICAgICAgICAgICAgIC8qIFNob3VsZCBiZSB1bnJl YWNoYWJsZSBpZiBWRVggZGVjb2RpbmcgaXMgd29ya2luZyBjb3JyZWN0bHkuICovCi0gICAgICAg ICAgICBBU1NFUlQoKGNyMCAmIENSMF9QRSkgJiYgIShjdHh0LT5yZWdzLT5fZWZsYWdzICYgRUZM R19WTSkpOworICAgICAgICAgICAgQVNTRVJUKChjcjAgJiBDUjBfUEUpICYmICEoY3R4dC0+cmVn cy0+X2VmbGFncyAmIFg4Nl9FRkxBR1NfVk0pKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIGNy MCAmIENSMF9FTSApCiAgICAgICAgIHsKQEAgLTk0Niw3ICs5MjksOCBAQCBkbyB7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCiAgICAgICAgICAgICAgICAgICAgOiBbZWZsYWdzXSAiK2ciIChfcmVncy5fZWZsYWdzKSwg ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICBbdG1wXSAiPSZyIiAo dG1wXyksICIrbSIgKGZpYykgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAg ICAgOiBbZnVuY10gInJtIiAoc3R1Yi5mdW5jKSwgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgICAgICAgICAgICAgICBbbWFza10gImkiIChFRkxHX1pGfEVGTEdfUEZ8RUZMR19D RikgKTsgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBbbWFza10gImkiIChYODZf RUZMQUdTX1pGfFg4Nl9FRkxBR1NfUEZ8ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBYODZfRUZMQUdTX0NGKSApOyAgICAgICAgICAgICAgICAgICAgICBcCiAg ICAgcHV0X3N0dWIoc3R1Yik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCiB9IHdoaWxlICgwKQogCkBAIC05ODgsNyArOTcyLDcgQEAgc3RhdGlj IGlubGluZSB2b2lkIHB1dF9sb29wX2NvdW50KAogICAgICAgICB9ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBn b3RvIGNvbXBsZXRlX2luc247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmICggbWF4X3JlcHMgPiAxICYmIChfcmVn cy5fZWZsYWdzICYgRUZMR19URikgJiYgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggbWF4 X3JlcHMgPiAxICYmIChfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19URikgJiYgICAgICAgICAg ICAgXAogICAgICAgICAgIWlzX2JyYW5jaF9zdGVwKGN0eHQsIG9wcykgKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBtYXhfcmVwcyA9IDE7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIG1heF9yZXBzOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XApAQCAtMTAyMiw3ICsxMDA2LDcgQEAgc3RhdGljIHZvaWQgX19wdXRfcmVwX3ByZWZpeCgKIC8q IENsaXAgbWF4aW11bSByZXBldGl0aW9ucyBzbyB0aGF0IHRoZSBpbmRleCByZWdpc3RlciBhdCBt b3N0IGp1c3Qgd3JhcHMuICovCiAjZGVmaW5lIHRydW5jYXRlX2VhX2FuZF9yZXBzKGVhLCByZXBz LCBieXRlc19wZXJfcmVwKSAoeyAgICAgICAgICAgICAgICAgIFwKICAgICB1bnNpZ25lZCBsb25n IHRvZG9fXywgZWFfXyA9IHRydW5jYXRlX3dvcmQoZWEsIGFkX2J5dGVzKTsgICAgICAgICAgICAg XAotICAgIGlmICggIShfcmVncy5fZWZsYWdzICYgRUZMR19ERikgKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCAhKF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZM QUdTX0RGKSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgdG9kb19f ID0gdHJ1bmNhdGVfd29yZCgtKGVhKSwgYWRfYnl0ZXMpIC8gKGJ5dGVzX3Blcl9yZXApOyAgICAg ICAgXAogICAgIGVsc2UgaWYgKCB0cnVuY2F0ZV93b3JkKChlYSkgKyAoYnl0ZXNfcGVyX3JlcCkg LSAxLCBhZF9ieXRlcykgPCBlYV9fIClcCiAgICAgICAgIHRvZG9fXyA9IDE7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTExNDMsMjgg KzExMjcsMjggQEAgdGVzdF9jYygKICAgICBzd2l0Y2ggKCAoY29uZGl0aW9uICYgMTUpID4+IDEg KQogICAgIHsKICAgICBjYXNlIDA6IC8qIG8gKi8KLSAgICAgICAgcmMgfD0gKGZsYWdzICYgRUZM R19PRik7CisgICAgICAgIHJjIHw9IChmbGFncyAmIFg4Nl9FRkxBR1NfT0YpOwogICAgICAgICBi cmVhazsKICAgICBjYXNlIDE6IC8qIGIvYy9uYWUgKi8KLSAgICAgICAgcmMgfD0gKGZsYWdzICYg RUZMR19DRik7CisgICAgICAgIHJjIHw9IChmbGFncyAmIFg4Nl9FRkxBR1NfQ0YpOwogICAgICAg ICBicmVhazsKICAgICBjYXNlIDI6IC8qIHovZSAqLwotICAgICAgICByYyB8PSAoZmxhZ3MgJiBF RkxHX1pGKTsKKyAgICAgICAgcmMgfD0gKGZsYWdzICYgWDg2X0VGTEFHU19aRik7CiAgICAgICAg IGJyZWFrOwogICAgIGNhc2UgMzogLyogYmUvbmEgKi8KLSAgICAgICAgcmMgfD0gKGZsYWdzICYg KEVGTEdfQ0Z8RUZMR19aRikpOworICAgICAgICByYyB8PSAoZmxhZ3MgJiAoWDg2X0VGTEFHU19D RiB8IFg4Nl9FRkxBR1NfWkYpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA0OiAvKiBzICov Ci0gICAgICAgIHJjIHw9IChmbGFncyAmIEVGTEdfU0YpOworICAgICAgICByYyB8PSAoZmxhZ3Mg JiBYODZfRUZMQUdTX1NGKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA1OiAvKiBwL3BlICov Ci0gICAgICAgIHJjIHw9IChmbGFncyAmIEVGTEdfUEYpOworICAgICAgICByYyB8PSAoZmxhZ3Mg JiBYODZfRUZMQUdTX1BGKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA3OiAvKiBsZS9uZyAq LwotICAgICAgICByYyB8PSAoZmxhZ3MgJiBFRkxHX1pGKTsKKyAgICAgICAgcmMgfD0gKGZsYWdz ICYgWDg2X0VGTEFHU19aRik7CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgIGNhc2Ug NjogLyogbC9uZ2UgKi8KLSAgICAgICAgcmMgfD0gKCEoZmxhZ3MgJiBFRkxHX1NGKSAhPSAhKGZs YWdzICYgRUZMR19PRikpOworICAgICAgICByYyB8PSAoIShmbGFncyAmIFg4Nl9FRkxBR1NfU0Yp ICE9ICEoZmxhZ3MgJiBYODZfRUZMQUdTX09GKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApA QCAtMTE3OSw3ICsxMTYzLDcgQEAgZ2V0X2NwbCgKIHsKICAgICBzdHJ1Y3Qgc2VnbWVudF9yZWdp c3RlciByZWc7CiAKLSAgICBpZiAoIGN0eHQtPnJlZ3MtPl9lZmxhZ3MgJiBFRkxHX1ZNICkKKyAg ICBpZiAoIGN0eHQtPnJlZ3MtPl9lZmxhZ3MgJiBYODZfRUZMQUdTX1ZNICkKICAgICAgICAgcmV0 dXJuIDM7CiAKICAgICBpZiAoIChvcHMtPnJlYWRfc2VnbWVudCA9PSBOVUxMKSB8fApAQCAtMTE5 Nyw3ICsxMTgxLDcgQEAgX21vZGVfaW9wbCgKICAgICBpbnQgY3BsID0gZ2V0X2NwbChjdHh0LCBv cHMpOwogICAgIGlmICggY3BsID09IC0xICkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVy biBjcGwgPD0gTUFTS19FWFRSKGN0eHQtPnJlZ3MtPl9lZmxhZ3MsIEVGTEdfSU9QTCk7CisgICAg cmV0dXJuIGNwbCA8PSBNQVNLX0VYVFIoY3R4dC0+cmVncy0+X2VmbGFncywgWDg2X0VGTEFHU19J T1BMKTsKIH0KIAogI2RlZmluZSBtb2RlX3JpbmcwKCkgKHsgICAgICAgICAgICAgICAgICAgICAg ICAgXApAQCAtMTIxNyw3ICsxMjAxLDcgQEAgX21vZGVfaW9wbCgKICAgICAgICAgcmMgPSBvcHMt PnJlYWRfY3IoNCwgJmNyNCwgY3R4dCk7ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlm ICggcmMgIT0gWDg2RU1VTF9PS0FZICkgZ290byBkb25lOyAgICAgICAgICAgICAgICAgXAogICAg IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAhIShjcjQgJiAoX3JlZ3MuX2VmbGFncyAmIEVGTEdfVk0gPyBDUjRfVk1FIDogQ1I0 X1BWSSkpOyBcCisgICAgISEoY3I0ICYgKF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX1ZNID8g Q1I0X1ZNRSA6IENSNF9QVkkpKTsgXAogfSkKIAogc3RhdGljIGludCBpb3BvcnRfYWNjZXNzX2No ZWNrKApAQCAtMTIzMCw3ICsxMjE0LDcgQEAgc3RhdGljIGludCBpb3BvcnRfYWNjZXNzX2NoZWNr KAogICAgIHN0cnVjdCBzZWdtZW50X3JlZ2lzdGVyIHRyOwogICAgIGludCByYyA9IFg4NkVNVUxf T0tBWTsKIAotICAgIGlmICggIShjdHh0LT5yZWdzLT5fZWZsYWdzICYgRUZMR19WTSkgJiYgbW9k ZV9pb3BsKCkgKQorICAgIGlmICggIShjdHh0LT5yZWdzLT5fZWZsYWdzICYgWDg2X0VGTEFHU19W TSkgJiYgbW9kZV9pb3BsKCkgKQogICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogCiAgICAg ZmFpbF9pZihvcHMtPnJlYWRfc2VnbWVudCA9PSBOVUxMKTsKQEAgLTEyOTksNyArMTI4Myw3IEBA IGluX3Byb3Rtb2RlKAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAogICAgIGNv bnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgICpvcHMpCiB7Ci0gICAgcmV0dXJuICEoaW5fcmVh bG1vZGUoY3R4dCwgb3BzKSB8fCAoY3R4dC0+cmVncy0+X2VmbGFncyAmIEVGTEdfVk0pKTsKKyAg ICByZXR1cm4gIShpbl9yZWFsbW9kZShjdHh0LCBvcHMpIHx8IChjdHh0LT5yZWdzLT5fZWZsYWdz ICYgWDg2X0VGTEFHU19WTSkpOwogfQogCiAjZGVmaW5lIEVBWCAwCkBAIC0xODIyLDggKzE4MDYs OCBAQCBzdGF0aWMgaW50IGluamVjdF9zd2ludChlbnVtIHg4Nl9zd2ludF90eXBlIHR5cGUsCiAg ICAgICAgICAgICAgKiBhIDMyYml0IE9TLiAgU29tZW9uZSB3aXRoIG1hbnkgVFVJVHMgY2FuIHNl ZSBhYm91dCByZWFkaW5nIHRoZQogICAgICAgICAgICAgICogVFNTIFNvZnR3YXJlIEludGVycnVw dCBSZWRpcmVjdGlvbiBiaXRtYXAuCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICgg KGN0eHQtPnJlZ3MtPl9lZmxhZ3MgJiBFRkxHX1ZNKSAmJgotICAgICAgICAgICAgICAgICAoKGN0 eHQtPnJlZ3MtPl9lZmxhZ3MgJiBFRkxHX0lPUEwpICE9IEVGTEdfSU9QTCkgKQorICAgICAgICAg ICAgaWYgKCAoY3R4dC0+cmVncy0+X2VmbGFncyAmIFg4Nl9FRkxBR1NfVk0pICYmCisgICAgICAg ICAgICAgICAgICgoY3R4dC0+cmVncy0+X2VmbGFncyAmIFg4Nl9FRkxBR1NfSU9QTCkgIT0gWDg2 X0VGTEFHU19JT1BMKSApCiAgICAgICAgICAgICAgICAgZ290byByYWlzZV9leG47CiAKICAgICAg ICAgICAgIC8qCkBAIC0yMzEzLDcgKzIyOTcsNyBAQCB4ODZfZGVjb2RlKAogICAgICAgICAgICAg ZGVmYXVsdDoKICAgICAgICAgICAgICAgICBCVUcoKTsgLyogU2hvdWxkbid0IGJlIHBvc3NpYmxl LiAqLwogICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgIGlmICggc3RhdGUtPnJl Z3MtPl9lZmxhZ3MgJiBFRkxHX1ZNICkKKyAgICAgICAgICAgICAgICBpZiAoIHN0YXRlLT5yZWdz LT5fZWZsYWdzICYgWDg2X0VGTEFHU19WTSApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgICAgICAgICAgY2FzZSA0OgpA QCAtMjY3Niw3ICsyNjYwLDggQEAgeDg2X2VtdWxhdGUoCiAgICAgc3RydWN0IHg4Nl9lbXVsYXRl X3N0YXRlIHN0YXRlOwogICAgIGludCByYzsKICAgICB1aW50OF90IGIsIGQ7Ci0gICAgYm9vbCBz aW5nbGVzdGVwID0gKF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1RGKSAmJiAhaXNfYnJhbmNoX3N0ZXAo Y3R4dCwgb3BzKTsKKyAgICBib29sIHNpbmdsZXN0ZXAgPSAoX3JlZ3MuX2VmbGFncyAmIFg4Nl9F RkxBR1NfVEYpICYmCisJICAgICFpc19icmFuY2hfc3RlcChjdHh0LCBvcHMpOwogICAgIHN0cnVj dCBvcGVyYW5kIHNyYyA9IHsgLnJlZyA9IFBUUl9QT0lTT04gfTsKICAgICBzdHJ1Y3Qgb3BlcmFu ZCBkc3QgPSB7IC5yZWcgPSBQVFJfUE9JU09OIH07CiAgICAgZW51bSB4ODZfc3dpbnRfdHlwZSBz d2ludF90eXBlOwpAQCAtMjk1NCwzMyArMjkzOSwzNCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAg dWludDhfdCBhbCA9IF9yZWdzLmFsOwogICAgICAgICB1bnNpZ25lZCBpbnQgZWZsYWdzID0gX3Jl Z3MuX2VmbGFnczsKIAotICAgICAgICBfcmVncy5fZWZsYWdzICY9IH4oRUZMR19DRnxFRkxHX0FG fEVGTEdfU0Z8RUZMR19aRnxFRkxHX1BGKTsKLSAgICAgICAgaWYgKCAoKGFsICYgMHgwZikgPiA5 KSB8fCAoZWZsYWdzICYgRUZMR19BRikgKQorICAgICAgICBfcmVncy5fZWZsYWdzICY9IH4oWDg2 X0VGTEFHU19DRiB8IFg4Nl9FRkxBR1NfQUYgfCBYODZfRUZMQUdTX1NGIHwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIFg4Nl9FRkxBR1NfWkYgfCBYODZfRUZMQUdTX1BGKTsKKyAgICAgICAg aWYgKCAoKGFsICYgMHgwZikgPiA5KSB8fCAoZWZsYWdzICYgWDg2X0VGTEFHU19BRikgKQogICAg ICAgICB7Ci0gICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfQUY7Ci0gICAgICAgICAg ICBpZiAoIGIgPT0gMHgyZiAmJiAoYWwgPCA2IHx8IChlZmxhZ3MgJiBFRkxHX0NGKSkgKQotICAg ICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19DRjsKKyAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gWDg2X0VGTEFHU19BRjsKKyAgICAgICAgICAgIGlmICggYiA9PSAweDJmICYm IChhbCA8IDYgfHwgKGVmbGFncyAmIFg4Nl9FRkxBR1NfQ0YpKSApCisgICAgICAgICAgICAgICAg X3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgX3JlZ3MuYWwgKz0g KGIgPT0gMHgyNykgPyA2IDogLTY7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCAoYWwgPiAweDk5 KSB8fCAoZWZsYWdzICYgRUZMR19DRikgKQorICAgICAgICBpZiAoIChhbCA+IDB4OTkpIHx8IChl ZmxhZ3MgJiBYODZfRUZMQUdTX0NGKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIF9yZWdzLmFs ICs9IChiID09IDB4MjcpID8gMHg2MCA6IC0weDYwOwotICAgICAgICAgICAgX3JlZ3MuX2VmbGFn cyB8PSBFRkxHX0NGOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0NG OwogICAgICAgICB9Ci0gICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gIV9yZWdzLmFsID8gRUZMR19a RiA6IDA7Ci0gICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gKChpbnQ4X3QpX3JlZ3MuYWwgPCAwKSA/ IEVGTEdfU0YgOiAwOwotICAgICAgICBfcmVncy5fZWZsYWdzIHw9IGV2ZW5fcGFyaXR5KF9yZWdz LmFsKSA/IEVGTEdfUEYgOiAwOworICAgICAgICBfcmVncy5fZWZsYWdzIHw9ICFfcmVncy5hbCA/ IFg4Nl9FRkxBR1NfWkYgOiAwOworICAgICAgICBfcmVncy5fZWZsYWdzIHw9ICgoaW50OF90KV9y ZWdzLmFsIDwgMCkgPyBYODZfRUZMQUdTX1NGIDogMDsKKyAgICAgICAgX3JlZ3MuX2VmbGFncyB8 PSBldmVuX3Bhcml0eShfcmVncy5hbCkgPyBYODZfRUZMQUdTX1BGIDogMDsKICAgICAgICAgYnJl YWs7CiAgICAgfQogCiAgICAgY2FzZSAweDM3OiAvKiBhYWEgKi8KICAgICBjYXNlIDB4M2Y6IC8q IGFhcyAqLwotICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5FRkxHX0NGOwotICAgICAgICBpZiAo IChfcmVncy5hbCA+IDkpIHx8IChfcmVncy5fZWZsYWdzICYgRUZMR19BRikgKQorICAgICAgICBf cmVncy5fZWZsYWdzICY9IH5YODZfRUZMQUdTX0NGOworICAgICAgICBpZiAoIChfcmVncy5hbCA+ IDkpIHx8IChfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19BRikgKQogICAgICAgICB7CiAgICAg ICAgICAgICBfcmVncy5hbCArPSAoYiA9PSAweDM3KSA/IDYgOiAtNjsKICAgICAgICAgICAgIF9y ZWdzLmFoICs9IChiID09IDB4MzcpID8gMSA6IC0xOwotICAgICAgICAgICAgX3JlZ3MuX2VmbGFn cyB8PSBFRkxHX0NGIHwgRUZMR19BRjsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2 X0VGTEFHU19DRiB8IFg4Nl9FRkxBR1NfQUY7CiAgICAgICAgIH0KICAgICAgICAgX3JlZ3MuYWwg Jj0gMHgwZjsKICAgICAgICAgYnJlYWs7CkBAIC0zMDg2LDEyICszMDcyLDEyIEBAIHg4Nl9lbXVs YXRlKAogICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgICAgIGlmICggc3JjX3Jw bCA+IChkc3QudmFsICYgMykgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gRUZMR19aRjsKKyAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4 Nl9FRkxBR1NfWkY7CiAgICAgICAgICAgICAgICAgZHN0LnZhbCA9IChkc3QudmFsICYgfjMpIHwg c3JjX3JwbDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsK LSAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5FRkxHX1pGOworICAgICAgICAgICAg ICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfWkY7CiAgICAgICAgICAgICAgICAgZHN0 LnR5cGUgPSBPUF9OT05FOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ2VuZXJhdGVfZXhj ZXB0aW9uX2lmKCFpbl9wcm90bW9kZShjdHh0LCBvcHMpLCBFWENfVUQpOwpAQCAtMzM1NCw3ICsz MzQwLDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAKICAgICAgICAg X3JlZ3MucihpcCkgPSBpbW0xOwotICAgICAgICBzaW5nbGVzdGVwID0gX3JlZ3MuX2VmbGFncyAm IEVGTEdfVEY7CisgICAgICAgIHNpbmdsZXN0ZXAgPSBfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFH U19URjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4OWI6ICAvKiB3YWl0L2Z3YWl0ICov CkBAIC0zMzY2LDggKzMzNTIsOCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgYnJlYWs7CiAKICAg ICBjYXNlIDB4OWM6IC8qIHB1c2hmICovCi0gICAgICAgIGlmICggKF9yZWdzLl9lZmxhZ3MgJiBF RkxHX1ZNKSAmJgotICAgICAgICAgICAgIE1BU0tfRVhUUihfcmVncy5fZWZsYWdzLCBFRkxHX0lP UEwpICE9IDMgKQorICAgICAgICBpZiAoIChfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19WTSkg JiYKKyAgICAgICAgICAgICBNQVNLX0VYVFIoX3JlZ3MuX2VmbGFncywgWDg2X0VGTEFHU19JT1BM KSAhPSAzICkKICAgICAgICAgewogICAgICAgICAgICAgY3I0ID0gMDsKICAgICAgICAgICAgIGlm ICggb3BfYnl0ZXMgPT0gMiAmJiBvcHMtPnJlYWRfY3IgKQpAQCAtMzM3NywyMSArMzM2MywyMSBA QCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAg ICAgfQogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCEoY3I0ICYgQ1I0X1ZNRSks IEVYQ19HUCwgMCk7Ci0gICAgICAgICAgICBzcmMudmFsID0gKF9yZWdzLmZsYWdzICYgfkVGTEdf SUYpIHwgRUZMR19JT1BMOwotICAgICAgICAgICAgaWYgKCBfcmVncy5fZWZsYWdzICYgRUZMR19W SUYgKQotICAgICAgICAgICAgICAgIHNyYy52YWwgfD0gRUZMR19JRjsKKyAgICAgICAgICAgIHNy Yy52YWwgPSAoX3JlZ3MuZmxhZ3MgJiB+WDg2X0VGTEFHU19JRikgfCBYODZfRUZMQUdTX0lPUEw7 CisgICAgICAgICAgICBpZiAoIF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX1ZJRiApCisgICAg ICAgICAgICAgICAgc3JjLnZhbCB8PSBYODZfRUZMQUdTX0lGOwogICAgICAgICB9CiAgICAgICAg IGVsc2UKLSAgICAgICAgICAgIHNyYy52YWwgPSBfcmVncy5yKGZsYWdzKSAmIH4oRUZMR19WTSB8 IEVGTEdfUkYpOworICAgICAgICAgICAgc3JjLnZhbCA9IF9yZWdzLnIoZmxhZ3MpICYgfihYODZf RUZMQUdTX1ZNIHwgWDg2X0VGTEFHU19SRik7CiAgICAgICAgIGdvdG8gcHVzaDsKIAogICAgIGNh c2UgMHg5ZDogLyogcG9wZiAqLyB7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSBFRkxHX1ZJUCB8 IEVGTEdfVklGIHwgRUZMR19WTTsKKyAgICAgICAgdWludDMyX3QgbWFzayA9IFg4Nl9FRkxBR1Nf VklQIHwgWDg2X0VGTEFHU19WSUYgfCBYODZfRUZMQUdTX1ZNOwogCiAgICAgICAgIGNyNCA9IDA7 CiAgICAgICAgIGlmICggIW1vZGVfcmluZzAoKSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlm ICggX3JlZ3MuX2VmbGFncyAmIEVGTEdfVk0gKQorICAgICAgICAgICAgaWYgKCBfcmVncy5fZWZs YWdzICYgWDg2X0VGTEFHU19WTSApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYg KCBvcF9ieXRlcyA9PSAyICYmIG9wcy0+cmVhZF9jciApCiAgICAgICAgICAgICAgICAgewpAQCAt MzQwMCwxMiArMzM4NiwxMiBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAg IGdvdG8gZG9uZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZ2VuZXJhdGVf ZXhjZXB0aW9uX2lmKCEoY3I0ICYgQ1I0X1ZNRSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTUFTS19FWFRSKF9yZWdzLl9lZmxhZ3MsIEVGTEdfSU9QTCkgIT0gMywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFTS19FWFRSKF9yZWdzLl9l ZmxhZ3MsIFg4Nl9FRkxBR1NfSU9QTCkgIT0gMywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRVhDX0dQLCAwKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1hc2sg fD0gRUZMR19JT1BMOworICAgICAgICAgICAgbWFzayB8PSBYODZfRUZMQUdTX0lPUEw7CiAgICAg ICAgICAgICBpZiAoICFtb2RlX2lvcGwoKSApCi0gICAgICAgICAgICAgICAgbWFzayB8PSBFRkxH X0lGOworICAgICAgICAgICAgICAgIG1hc2sgfD0gWDg2X0VGTEFHU19JRjsKICAgICAgICAgfQog ICAgICAgICAvKiA2NC1iaXQgbW9kZTogUE9QIGRlZmF1bHRzIHRvIGEgNjQtYml0IG9wZXJhbmQu ICovCiAgICAgICAgIGlmICggbW9kZV82NGJpdCgpICYmIChvcF9ieXRlcyA9PSA0KSApCkBAIC0z NDE4LDMyICszNDA0LDMzIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgZHN0LnZhbCA9ICh1 aW50MTZfdClkc3QudmFsIHwgKF9yZWdzLl9lZmxhZ3MgJiAweGZmZmYwMDAwdSk7CiAgICAgICAg ICAgICBpZiAoIGNyNCAmIENSNF9WTUUgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg IGlmICggZHN0LnZhbCAmIEVGTEdfSUYgKQorICAgICAgICAgICAgICAgIGlmICggZHN0LnZhbCAm IFg4Nl9FRkxBR1NfSUYgKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg Z2VuZXJhdGVfZXhjZXB0aW9uX2lmKF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1ZJUCwgRVhDX0dQLCAw KTsKLSAgICAgICAgICAgICAgICAgICAgZHN0LnZhbCB8PSBFRkxHX1ZJRjsKKyAgICAgICAgICAg ICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdT X1ZJUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ19HUCwg MCk7CisgICAgICAgICAgICAgICAgICAgIGRzdC52YWwgfD0gWDg2X0VGTEFHU19WSUY7CiAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg ZHN0LnZhbCAmPSB+RUZMR19WSUY7Ci0gICAgICAgICAgICAgICAgbWFzayAmPSB+RUZMR19WSUY7 CisgICAgICAgICAgICAgICAgICAgIGRzdC52YWwgJj0gflg4Nl9FRkxBR1NfVklGOworICAgICAg ICAgICAgICAgIG1hc2sgJj0gflg4Nl9FRkxBR1NfVklGOwogICAgICAgICAgICAgfQogICAgICAg ICB9CiAgICAgICAgIGRzdC52YWwgJj0gRUZMQUdTX01PRElGSUFCTEU7CiAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgJj0gbWFzazsKLSAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSAoZHN0LnZhbCAmIH5t YXNrKSB8IEVGTEdfTUJTOworICAgICAgICBfcmVncy5fZWZsYWdzIHw9IChkc3QudmFsICYgfm1h c2spIHwgWDg2X0VGTEFHU19NQlM7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2Ug MHg5ZTogLyogc2FoZiAqLwogICAgICAgICBpZiAoIG1vZGVfNjRiaXQoKSApCiAgICAgICAgICAg ICB2Y3B1X211c3RfaGF2ZShsYWhmX2xtKTsKLSAgICAgICAgKih1aW50OF90ICopJl9yZWdzLl9l ZmxhZ3MgPSAoX3JlZ3MuYWggJiBFRkxBR1NfTUFTSykgfCBFRkxHX01CUzsKKyAgICAgICAgKih1 aW50OF90ICopJl9yZWdzLl9lZmxhZ3MgPSAoX3JlZ3MuYWggJiBFRkxBR1NfTUFTSykgfCBYODZf RUZMQUdTX01CUzsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4OWY6IC8qIGxhaGYgKi8K ICAgICAgICAgaWYgKCBtb2RlXzY0Yml0KCkgKQogICAgICAgICAgICAgdmNwdV9tdXN0X2hhdmUo bGFoZl9sbSk7Ci0gICAgICAgIF9yZWdzLmFoID0gKF9yZWdzLl9lZmxhZ3MgJiBFRkxBR1NfTUFT SykgfCBFRkxHX01CUzsKKyAgICAgICAgX3JlZ3MuYWggPSAoX3JlZ3MuX2VmbGFncyAmIEVGTEFH U19NQVNLKSB8IFg4Nl9FRkxBR1NfTUJTOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHhh NCAuLi4gMHhhNTogLyogbW92cyAqLyB7CkBAIC0zNDg3LDggKzM0NzQsOCBAQCB4ODZfZW11bGF0 ZSgKICAgICAgICAgcHV0X3JlcF9wcmVmaXgoMSk7CiAgICAgICAgIC8qIGNtcDogZHN0IC0gc3Jj ID09PiBzcmM9KiUlZWRpLGRzdD0qJSVlc2kgPT0+IColJWVzaSAtIColJWVkaSAqLwogICAgICAg ICBlbXVsYXRlXzJvcF9TcmNWKCJjbXAiLCBzcmMsIGRzdCwgX3JlZ3MuX2VmbGFncyk7Ci0gICAg ICAgIGlmICggKHJlcGVfcHJlZml4KCkgJiYgIShfcmVncy5fZWZsYWdzICYgRUZMR19aRikpIHx8 Ci0gICAgICAgICAgICAgKHJlcG5lX3ByZWZpeCgpICYmIChfcmVncy5fZWZsYWdzICYgRUZMR19a RikpICkKKyAgICAgICAgaWYgKCAocmVwZV9wcmVmaXgoKSAmJiAhKF9yZWdzLl9lZmxhZ3MgJiBY ODZfRUZMQUdTX1pGKSkgfHwKKyAgICAgICAgICAgICAocmVwbmVfcHJlZml4KCkgJiYgKF9yZWdz Ll9lZmxhZ3MgJiBYODZfRUZMQUdTX1pGKSkgKQogICAgICAgICAgICAgX3JlZ3MucihpcCkgPSBu ZXh0X2VpcDsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzUzNyw4ICszNTI0LDggQEAgeDg2 X2VtdWxhdGUoCiAgICAgICAgIC8qIGNtcDogJSVlYXggLSAqJSVlZGkgPT0+IHNyYz0lJWVheCxk c3Q9KiUlZWRpID09PiBzcmMgLSBkc3QgKi8KICAgICAgICAgZHN0LmJ5dGVzID0gc3JjLmJ5dGVz OwogICAgICAgICBlbXVsYXRlXzJvcF9TcmNWKCJjbXAiLCBkc3QsIHNyYywgX3JlZ3MuX2VmbGFn cyk7Ci0gICAgICAgIGlmICggKHJlcGVfcHJlZml4KCkgJiYgIShfcmVncy5fZWZsYWdzICYgRUZM R19aRikpIHx8Ci0gICAgICAgICAgICAgKHJlcG5lX3ByZWZpeCgpICYmIChfcmVncy5fZWZsYWdz ICYgRUZMR19aRikpICkKKyAgICAgICAgaWYgKCAocmVwZV9wcmVmaXgoKSAmJiAhKF9yZWdzLl9l ZmxhZ3MgJiBYODZfRUZMQUdTX1pGKSkgfHwKKyAgICAgICAgICAgICAocmVwbmVfcHJlZml4KCkg JiYgKF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX1pGKSkgKQogICAgICAgICAgICAgX3JlZ3Mu cihpcCkgPSBuZXh0X2VpcDsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzY4Myw3ICszNjcw LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGdvdG8gZG9uZTsKIAogICAgIGNhc2UgMHhjZTog LyogaW50byAqLwotICAgICAgICBpZiAoICEoX3JlZ3MuX2VmbGFncyAmIEVGTEdfT0YpICkKKyAg ICAgICAgaWYgKCAhKF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdTX09GKSApCiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgc3JjLnZhbCA9IEVYQ19PRjsKICAgICAgICAgc3dpbnRfdHlwZSA9 IHg4Nl9zd2ludF9pbnRvOwpAQCAtMzY5MSw3ICszNjc4LDcgQEAgeDg2X2VtdWxhdGUoCiAKICAg ICBjYXNlIDB4Y2Y6IC8qIGlyZXQgKi8gewogICAgICAgICB1bnNpZ25lZCBsb25nIHNlbCwgZWlw LCBlZmxhZ3M7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSBFRkxHX1ZJUCB8IEVGTEdfVklGIHwg RUZMR19WTTsKKyAgICAgICAgdWludDMyX3QgbWFzayA9IFg4Nl9FRkxBR1NfVklQIHwgWDg2X0VG TEFHU19WSUYgfCBYODZfRUZMQUdTX1ZNOwogCiAgICAgICAgIGZhaWxfaWYoIWluX3JlYWxtb2Rl KGN0eHQsIG9wcykpOwogICAgICAgICBpZiAoIChyYyA9IHJlYWRfdWxvbmcoeDg2X3NlZ19zcywg c3BfcG9zdF9pbmMob3BfYnl0ZXMpLApAQCAtMzcwNSw3ICszNjkyLDcgQEAgeDg2X2VtdWxhdGUo CiAgICAgICAgICAgICBlZmxhZ3MgPSAodWludDE2X3QpZWZsYWdzIHwgKF9yZWdzLl9lZmxhZ3Mg JiAweGZmZmYwMDAwdSk7CiAgICAgICAgIGVmbGFncyAmPSBFRkxBR1NfTU9ESUZJQUJMRTsKICAg ICAgICAgX3JlZ3MuX2VmbGFncyAmPSBtYXNrOwotICAgICAgICBfcmVncy5fZWZsYWdzIHw9IChl ZmxhZ3MgJiB+bWFzaykgfCBFRkxHX01CUzsKKyAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSAoZWZs YWdzICYgfm1hc2spIHwgWDg2X0VGTEFHU19NQlM7CiAgICAgICAgIGlmICggKHJjID0gbG9hZF9z ZWcoeDg2X3NlZ19jcywgc2VsLCAxLCAmY3MsIGN0eHQsIG9wcykpIHx8CiAgICAgICAgICAgICAg KHJjID0gY29tbWl0X2Zhcl9icmFuY2goJmNzLCAodWludDMyX3QpZWlwKSkgKQogICAgICAgICAg ICAgZ290byBkb25lOwpAQCAtMzczNywxNSArMzcyNCwxNSBAQCB4ODZfZW11bGF0ZSgKICAgICAg ICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighYmFzZSwgRVhDX0RFKTsKICAgICAgICAgICAg IF9yZWdzLmF4ID0gKChhbCAvIGJhc2UpIDw8IDgpIHwgKGFsICUgYmFzZSk7CiAgICAgICAgIH0K LSAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+KEVGTEdfU0Z8RUZMR19aRnxFRkxHX1BGKTsKLSAg ICAgICAgX3JlZ3MuX2VmbGFncyB8PSAhX3JlZ3MuYWwgPyBFRkxHX1pGIDogMDsKLSAgICAgICAg X3JlZ3MuX2VmbGFncyB8PSAoKGludDhfdClfcmVncy5hbCA8IDApID8gRUZMR19TRiA6IDA7Ci0g ICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gZXZlbl9wYXJpdHkoX3JlZ3MuYWwpID8gRUZMR19QRiA6 IDA7CisgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfihYODZfRUZMQUdTX1NGIHwgWDg2X0VGTEFH U19aRiB8IFg4Nl9FRkxBR1NfUEYpOworICAgICAgICBfcmVncy5fZWZsYWdzIHw9ICFfcmVncy5h bCA/IFg4Nl9FRkxBR1NfWkYgOiAwOworICAgICAgICBfcmVncy5fZWZsYWdzIHw9ICgoaW50OF90 KV9yZWdzLmFsIDwgMCkgPyBYODZfRUZMQUdTX1NGIDogMDsKKyAgICAgICAgX3JlZ3MuX2VmbGFn cyB8PSBldmVuX3Bhcml0eShfcmVncy5hbCkgPyBYODZfRUZMQUdTX1BGIDogMDsKICAgICAgICAg YnJlYWs7CiAgICAgfQogCiAgICAgY2FzZSAweGQ2OiAvKiBzYWxjICovCi0gICAgICAgIF9yZWdz LmFsID0gKF9yZWdzLl9lZmxhZ3MgJiBFRkxHX0NGKSA/IDB4ZmYgOiAweDAwOworICAgICAgICBf cmVncy5hbCA9IChfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19DRikgPyAweGZmIDogMHgwMDsK ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4ZDc6IC8qIHhsYXQgKi8gewpAQCAtNDI2Myw3 ICs0MjUwLDcgQEAgeDg2X2VtdWxhdGUoCiAKICAgICBjYXNlIDB4ZTAgLi4uIDB4ZTI6IC8qIGxv b3B7LHosbnp9ICovIHsKICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCA9IGdldF9sb29wX2Nv dW50KCZfcmVncywgYWRfYnl0ZXMpOwotICAgICAgICBpbnQgZG9fam1wID0gIShfcmVncy5fZWZs YWdzICYgRUZMR19aRik7IC8qIGxvb3BueiAqLworICAgICAgICBpbnQgZG9fam1wID0gIShfcmVn cy5fZWZsYWdzICYgWDg2X0VGTEFHU19aRik7IC8qIGxvb3BueiAqLwogCiAgICAgICAgIGlmICgg YiA9PSAweGUxICkKICAgICAgICAgICAgIGRvX2ptcCA9ICFkb19qbXA7IC8qIGxvb3B6ICovCkBA IC00MzUxLDcgKzQzMzgsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgYnJlYWs7CiAKICAgICBj YXNlIDB4ZjU6IC8qIGNtYyAqLwotICAgICAgICBfcmVncy5fZWZsYWdzIF49IEVGTEdfQ0Y7Cisg ICAgICAgIF9yZWdzLl9lZmxhZ3MgXj0gWDg2X0VGTEFHU19DRjsKICAgICAgICAgYnJlYWs7CiAK ICAgICBjYXNlIDB4ZjYgLi4uIDB4Zjc6IC8qIEdycDMgKi8KQEAgLTQzNzEsMjEgKzQzNTgsMjEg QEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICBlbXVsYXRlXzFvcCgibmVnIiwgZHN0LCBfcmVn cy5fZWZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDQ6IC8qIG11bCAq LwotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+KEVGTEdfT0Z8RUZMR19DRik7CisgICAg ICAgICAgICBfcmVncy5fZWZsYWdzICY9IH4oWDg2X0VGTEFHU19PRiB8IFg4Nl9FRkxBR1NfQ0Yp OwogICAgICAgICAgICAgc3dpdGNoICggZHN0LmJ5dGVzICkKICAgICAgICAgICAgIHsKICAgICAg ICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICBkc3QudmFsID0gX3JlZ3MuYWw7CiAgICAg ICAgICAgICAgICAgZHN0LnZhbCAqPSBzcmMudmFsOwogICAgICAgICAgICAgICAgIGlmICggKHVp bnQ4X3QpZHN0LnZhbCAhPSAodWludDE2X3QpZHN0LnZhbCApCi0gICAgICAgICAgICAgICAgICAg IF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19PRnxFRkxHX0NGOworICAgICAgICAgICAgICAgICAgICBf cmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfT0YgfCBYODZfRUZMQUdTX0NGOwogICAgICAgICAg ICAgICAgIGRzdC5ieXRlcyA9IDI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgZHN0LnZhbCA9IF9yZWdzLmF4OwogICAgICAgICAg ICAgICAgIGRzdC52YWwgKj0gc3JjLnZhbDsKICAgICAgICAgICAgICAgICBpZiAoICh1aW50MTZf dClkc3QudmFsICE9ICh1aW50MzJfdClkc3QudmFsICkKLSAgICAgICAgICAgICAgICAgICAgX3Jl Z3MuX2VmbGFncyB8PSBFRkxHX09GfEVGTEdfQ0Y7CisgICAgICAgICAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gWDg2X0VGTEFHU19PRiB8IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgICAgICAg ICAgX3JlZ3MuZHggPSBkc3QudmFsID4+IDE2OwogICAgICAgICAgICAgICAgIGJyZWFrOwogI2lm ZGVmIF9feDg2XzY0X18KQEAgLTQzOTMsNyArNDM4MCw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAg ICAgICAgICAgIGRzdC52YWwgPSBfcmVncy5fZWF4OwogICAgICAgICAgICAgICAgIGRzdC52YWwg Kj0gc3JjLnZhbDsKICAgICAgICAgICAgICAgICBpZiAoICh1aW50MzJfdClkc3QudmFsICE9IGRz dC52YWwgKQotICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfT0Z8RUZM R19DRjsKKyAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX09G IHwgWDg2X0VGTEFHU19DRjsKICAgICAgICAgICAgICAgICBfcmVncy5yZHggPSBkc3QudmFsID4+ IDMyOwogICAgICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCkBAIC00NDAxLDcgKzQzODgsNyBA QCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgICAgICB1WzBdID0gc3JjLnZhbDsKICAgICAgICAg ICAgICAgICB1WzFdID0gX3JlZ3MucihheCk7CiAgICAgICAgICAgICAgICAgaWYgKCBtdWxfZGJs KHUpICkKLSAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX09GfEVGTEdf Q0Y7CisgICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19PRiB8 IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgICAgICAgICAgX3JlZ3MucihkeCkgPSB1WzFdOwogICAg ICAgICAgICAgICAgIGRzdC52YWwgPSB1WzBdOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt NDQwOSwxMyArNDM5NiwxMyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICBjYXNlIDU6IC8qIGltdWwgKi8KICAgICAgICAgaW11bDoKLSAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgJj0gfihFRkxHX09GfEVGTEdfQ0YpOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFn cyAmPSB+KFg4Nl9FRkxBR1NfT0YgfCBYODZfRUZMQUdTX0NGKTsKICAgICAgICAgICAgIHN3aXRj aCAoIGRzdC5ieXRlcyApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICBjYXNlIDE6CiAgICAg ICAgICAgICAgICAgZHN0LnZhbCA9IChpbnQ4X3Qpc3JjLnZhbCAqIChpbnQ4X3QpX3JlZ3MuYWw7 CiAgICAgICAgICAgICAgICAgaWYgKCAoaW50OF90KWRzdC52YWwgIT0gKGludDE2X3QpZHN0LnZh bCApCi0gICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19PRnxFRkxHX0NG OworICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfT0YgfCBY ODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgICAgIEFTU0VSVChiID4gMHg2Yik7CiAgICAgICAg ICAgICAgICAgZHN0LmJ5dGVzID0gMjsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ0MjMs NyArNDQxMCw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgICAgIGRzdC52YWwgPSAoKHVp bnQzMl90KShpbnQxNl90KXNyYy52YWwgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVp bnQzMl90KShpbnQxNl90KV9yZWdzLmF4KTsKICAgICAgICAgICAgICAgICBpZiAoIChpbnQxNl90 KWRzdC52YWwgIT0gKGludDMyX3QpZHN0LnZhbCApCi0gICAgICAgICAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gRUZMR19PRnxFRkxHX0NGOworICAgICAgICAgICAgICAgICAgICBfcmVncy5f ZWZsYWdzIHw9IFg4Nl9FRkxBR1NfT0YgfCBYODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgICAg IGlmICggYiA+IDB4NmIgKQogICAgICAgICAgICAgICAgICAgICBfcmVncy5keCA9IGRzdC52YWwg Pj4gMTY7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00NDMyLDcgKzQ0MTksNyBAQCB4ODZf ZW11bGF0ZSgKICAgICAgICAgICAgICAgICBkc3QudmFsID0gKCh1aW50NjRfdCkoaW50MzJfdClz cmMudmFsICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdCkoaW50MzJfdClf cmVncy5fZWF4KTsKICAgICAgICAgICAgICAgICBpZiAoIChpbnQzMl90KWRzdC52YWwgIT0gZHN0 LnZhbCApCi0gICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19PRnxFRkxH X0NGOworICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfT0Yg fCBYODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgICAgIGlmICggYiA+IDB4NmIgKQogICAgICAg ICAgICAgICAgICAgICBfcmVncy5yZHggPSBkc3QudmFsID4+IDMyOwogICAgICAgICAgICAgICAg IGJyZWFrOwpAQCAtNDQ0MSw3ICs0NDI4LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICAg ICAgdVswXSA9IHNyYy52YWw7CiAgICAgICAgICAgICAgICAgdVsxXSA9IF9yZWdzLnIoYXgpOwog ICAgICAgICAgICAgICAgIGlmICggaW11bF9kYmwodSkgKQotICAgICAgICAgICAgICAgICAgICBf cmVncy5fZWZsYWdzIHw9IEVGTEdfT0Z8RUZMR19DRjsKKyAgICAgICAgICAgICAgICAgICAgX3Jl Z3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX09GIHwgWDg2X0VGTEFHU19DRjsKICAgICAgICAgICAg ICAgICBpZiAoIGIgPiAweDZiICkKICAgICAgICAgICAgICAgICAgICAgX3JlZ3MucihkeCkgPSB1 WzFdOwogICAgICAgICAgICAgICAgIGRzdC52YWwgPSB1WzBdOwpAQCAtNDU0Miw0NiArNDUyOSw0 NyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4Zjg6IC8qIGNs YyAqLwotICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5FRkxHX0NGOworICAgICAgICBfcmVncy5f ZWZsYWdzICY9IH5YODZfRUZMQUdTX0NGOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHhm OTogLyogc3RjICovCi0gICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19DRjsKKyAgICAgICAg X3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0NGOwogICAgICAgICBicmVhazsKIAogICAgIGNh c2UgMHhmYTogLyogY2xpICovCiAgICAgICAgIGlmICggbW9kZV9pb3BsKCkgKQotICAgICAgICAg ICAgX3JlZ3MuX2VmbGFncyAmPSB+RUZMR19JRjsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3Mg Jj0gflg4Nl9FRkxBR1NfSUY7CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAg Z2VuZXJhdGVfZXhjZXB0aW9uX2lmKCFtb2RlX3ZpZigpLCBFWENfR1AsIDApOwotICAgICAgICAg ICAgX3JlZ3MuX2VmbGFncyAmPSB+RUZMR19WSUY7CisgICAgICAgICAgICBfcmVncy5fZWZsYWdz ICY9IH5YODZfRUZMQUdTX1ZJRjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNh c2UgMHhmYjogLyogc3RpICovCiAgICAgICAgIGlmICggbW9kZV9pb3BsKCkgKQogICAgICAgICB7 Ci0gICAgICAgICAgICBpZiAoICEoX3JlZ3MuX2VmbGFncyAmIEVGTEdfSUYpICkKKyAgICAgICAg ICAgIGlmICggIShfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19JRikgKQogICAgICAgICAgICAg ICAgIGN0eHQtPnJldGlyZS5zdGkgPSB0cnVlOwotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8 PSBFRkxHX0lGOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0lGOwog ICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgZ2VuZXJhdGVf ZXhjZXB0aW9uX2lmKChfcmVncy5fZWZsYWdzICYgRUZMR19WSVApIHx8ICFtb2RlX3ZpZigpLAor ICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKChfcmVncy5fZWZsYWdzICYgWDg2X0VG TEFHU19WSVApIHx8CisJCQkJICAhbW9kZV92aWYoKSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFWENfR1AsIDApOwotICAgICAgICAgICAgaWYgKCAhKF9yZWdzLl9lZmxhZ3Mg JiBFRkxHX1ZJRikgKQorICAgICAgICAgICAgaWYgKCAhKF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZM QUdTX1ZJRikgKQogICAgICAgICAgICAgICAgIGN0eHQtPnJldGlyZS5zdGkgPSB0cnVlOwotICAg ICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX1ZJRjsKKyAgICAgICAgICAgIF9yZWdzLl9l ZmxhZ3MgfD0gWDg2X0VGTEFHU19WSUY7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAg ICBjYXNlIDB4ZmM6IC8qIGNsZCAqLwotICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5FRkxHX0RG OworICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5YODZfRUZMQUdTX0RGOwogICAgICAgICBicmVh azsKIAogICAgIGNhc2UgMHhmZDogLyogc3RkICovCi0gICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0g RUZMR19ERjsKKyAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0RGOwogICAgICAg ICBicmVhazsKIAogICAgIGNhc2UgMHhmZTogLyogR3JwNCAqLwpAQCAtNDY0Myw3ICs0NjMxLDcg QEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgIGNhc2UgNDogLyogdmVyciAvIHZlcncgKi8KLSAgICAgICAgICAgIF9y ZWdzLl9lZmxhZ3MgJj0gfkVGTEdfWkY7CisgICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5Y ODZfRUZMQUdTX1pGOwogICAgICAgICAgICAgc3dpdGNoICggcmMgPSBwcm90bW9kZV9sb2FkX3Nl Zyh4ODZfc2VnX25vbmUsIHNyYy52YWwsIGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmc3JlZywgY3R4dCwgb3BzKSApCiAgICAgICAgICAgICB7CkBA IC00NjUxLDcgKzQ2MzksNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgICAgICBpZiAoIHNy ZWcuYXR0ci5maWVsZHMucyAmJgogICAgICAgICAgICAgICAgICAgICAgKChtb2RybV9yZWcgJiAx KSA/ICgoc3JlZy5hdHRyLmZpZWxkcy50eXBlICYgMHhhKSA9PSAweDIpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDogKChzcmVnLmF0dHIuZmllbGRzLnR5cGUgJiAweGEp ICE9IDB4OCkpICkKLSAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX1pG OworICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfWkY7CiAg ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFg4NkVNVUxfRVhDRVBUSU9O OgogICAgICAgICAgICAgICAgIGlmICggY3R4dC0+ZXZlbnRfcGVuZGluZyApCkBAIC00NjgxLDkg KzQ2NjksOSBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIHZjcHVfbXVzdF9oYXZlKHNtYXAp OwogICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC5wZnggfHwgIW1vZGVfcmlu ZzAoKSwgRVhDX1VEKTsKIAotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+RUZMR19BQzsK KyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfQUM7CiAgICAgICAgICAg ICBpZiAoIG1vZHJtID09IDB4Y2IgKQotICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0g RUZMR19BQzsKKyAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfQUM7 CiAgICAgICAgICAgICBnb3RvIGNvbXBsZXRlX2luc247CiAKICNpZmRlZiBfX1hFTl9fCkBAIC00 NzE3LDcgKzQ3MDUsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2Vw dGlvbl9pZighdmNwdV9oYXNfcnRtKCkgJiYgIXZjcHVfaGFzX2hsZSgpLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVYQ19VRCk7CiAgICAgICAgICAgICAvKiBOZWl0aGVyIEhM RSBub3IgUlRNIGNhbiBiZSBhY3RpdmUgd2hlbiB3ZSBnZXQgaGVyZS4gKi8KLSAgICAgICAgICAg IF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19aRjsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0g WDg2X0VGTEFHU19aRjsKICAgICAgICAgICAgIGdvdG8gY29tcGxldGVfaW5zbjsKIAogICAgICAg ICBjYXNlIDB4ZGY6IC8qIGludmxwZ2EgKi8KQEAgLTQ4NjgsNyArNDg1Niw3IEBAIHg4Nl9lbXVs YXRlKAogCiAgICAgY2FzZSBYODZFTVVMX09QQygweDBmLCAweDAyKTogLyogbGFyICovCiAgICAg ICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighaW5fcHJvdG1vZGUoY3R4dCwgb3BzKSwgRVhDX1VE KTsKLSAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+RUZMR19aRjsKKyAgICAgICAgX3JlZ3MuX2Vm bGFncyAmPSB+WDg2X0VGTEFHU19aRjsKICAgICAgICAgc3dpdGNoICggcmMgPSBwcm90bW9kZV9s b2FkX3NlZyh4ODZfc2VnX25vbmUsIHNyYy52YWwsIGZhbHNlLCAmc3JlZywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHh0LCBvcHMpICkKICAgICAgICAgewpAQCAt NDg4OCwxMiArNDg3NiwxMiBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgICAgICBjYXNlIDB4 MDk6IC8qIGF2YWlsYWJsZSAzMi82NC1iaXQgVFNTICovCiAgICAgICAgICAgICAgICAgY2FzZSAw eDBiOiAvKiBidXN5IDMyLzY0LWJpdCBUU1MgKi8KICAgICAgICAgICAgICAgICBjYXNlIDB4MGM6 IC8qIDMyLzY0LWJpdCBjYWxsIGdhdGUgKi8KLSAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2Vm bGFncyB8PSBFRkxHX1pGOworICAgICAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IFg4 Nl9FRkxBR1NfWkY7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBfcmVn cy5fZWZsYWdzIHw9IEVGTEdfWkY7CisgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBY ODZfRUZMQUdTX1pGOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgWDg2RU1VTF9F WENFUFRJT046CiAgICAgICAgICAgICBpZiAoIGN0eHQtPmV2ZW50X3BlbmRpbmcgKQpAQCAtNDkw Niw3ICs0ODk0LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICByYyA9IFg4NkVNVUxfT0tB WTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmICggX3JlZ3MuX2Vm bGFncyAmIEVGTEdfWkYgKQorICAgICAgICBpZiAoIF9yZWdzLl9lZmxhZ3MgJiBYODZfRUZMQUdT X1pGICkKICAgICAgICAgICAgIGRzdC52YWwgPSAoKHNyZWcuYXR0ci5ieXRlcyAmIDB4ZmYpIDw8 IDgpIHwKICAgICAgICAgICAgICAgICAgICAgICAoKHNyZWcubGltaXQgPj4gKHNyZWcuYXR0ci5m aWVsZHMuZyA/IDEyIDogMCkpICYKICAgICAgICAgICAgICAgICAgICAgICAgMHhmMDAwMCkgfApA QCAtNDkxNyw3ICs0OTA1LDcgQEAgeDg2X2VtdWxhdGUoCiAKICAgICBjYXNlIFg4NkVNVUxfT1BD KDB4MGYsIDB4MDMpOiAvKiBsc2wgKi8KICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCFp bl9wcm90bW9kZShjdHh0LCBvcHMpLCBFWENfVUQpOwotICAgICAgICBfcmVncy5fZWZsYWdzICY9 IH5FRkxHX1pGOworICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5YODZfRUZMQUdTX1pGOwogICAg ICAgICBzd2l0Y2ggKCByYyA9IHByb3Rtb2RlX2xvYWRfc2VnKHg4Nl9zZWdfbm9uZSwgc3JjLnZh bCwgZmFsc2UsICZzcmVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGN0eHQsIG9wcykgKQogICAgICAgICB7CkBAIC00OTM0LDEyICs0OTIyLDEyIEBAIHg4Nl9lbXVs YXRlKAogICAgICAgICAgICAgICAgIGNhc2UgMHgwMjogLyogTERUICovCiAgICAgICAgICAgICAg ICAgY2FzZSAweDA5OiAvKiBhdmFpbGFibGUgMzIvNjQtYml0IFRTUyAqLwogICAgICAgICAgICAg ICAgIGNhc2UgMHgwYjogLyogYnVzeSAzMi82NC1iaXQgVFNTICovCi0gICAgICAgICAgICAgICAg ICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19aRjsKKyAgICAgICAgICAgICAgICAgICAgX3JlZ3Mu X2VmbGFncyB8PSBYODZfRUZMQUdTX1pGOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg ICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX1pGOworICAgICAgICAgICAgICAgIF9yZWdz Ll9lZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj YXNlIFg4NkVNVUxfRVhDRVBUSU9OOgogICAgICAgICAgICAgaWYgKCBjdHh0LT5ldmVudF9wZW5k aW5nICkKQEAgLTQ5NTIsNyArNDk0MCw3IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgcmMg PSBYODZFTVVMX09LQVk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBp ZiAoIF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1pGICkKKyAgICAgICAgaWYgKCBfcmVncy5fZWZsYWdz ICYgWDg2X0VGTEFHU19aRiApCiAgICAgICAgICAgICBkc3QudmFsID0gc3JlZy5saW1pdDsKICAg ICAgICAgZWxzZQogICAgICAgICAgICAgZHN0LnR5cGUgPSBPUF9OT05FOwpAQCAtNDk4OCw3ICs0 OTc2LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICBjcy5hdHRyLmJ5dGVzID0gMHhhOWI7 IC8qIEwrREIrUCtTK0NvZGUgKi8KIAogICAgICAgICAgICAgX3JlZ3MucmN4ID0gX3JlZ3Mucmlw OwotICAgICAgICAgICAgX3JlZ3MucjExID0gX3JlZ3MuX2VmbGFncyAmIH5FRkxHX1JGOworICAg ICAgICAgICAgX3JlZ3MucjExID0gX3JlZ3MuX2VmbGFncyAmIH5YODZfRUZMQUdTX1JGOwogCiAg ICAgICAgICAgICBpZiAoIChyYyA9IG9wcy0+cmVhZF9tc3IobW9kZV82NGJpdCgpID8gTVNSX0xT VEFSIDogTVNSX0NTVEFSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZt c3JfY29udGVudCwgY3R4dCkpICE9IDAgKQpAQCAtNDk5Nyw3ICs0OTg1LDcgQEAgeDg2X2VtdWxh dGUoCiAKICAgICAgICAgICAgIGlmICggKHJjID0gb3BzLT5yZWFkX21zcihNU1JfRk1BU0ssICZt c3JfY29udGVudCwgY3R4dCkpICE9IDAgKQogICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAg ICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfihtc3JfY29udGVudCB8IEVGTEdfUkYpOworICAg ICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+KG1zcl9jb250ZW50IHwgWDg2X0VGTEFHU19SRik7 CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogI2VuZGlmCkBAIC01MDA2LDcgKzQ5OTQsNyBAQCB4 ODZfZW11bGF0ZSgKIAogICAgICAgICAgICAgX3JlZ3MucihjeCkgPSBfcmVncy5fZWlwOwogICAg ICAgICAgICAgX3JlZ3MuX2VpcCA9IG1zcl9jb250ZW50OwotICAgICAgICAgICAgX3JlZ3MuX2Vm bGFncyAmPSB+KEVGTEdfVk0gfCBFRkxHX0lGIHwgRUZMR19SRik7CisgICAgICAgICAgICBfcmVn cy5fZWZsYWdzICY9IH4oWDg2X0VGTEFHU19WTSB8IFg4Nl9FRkxBR1NfSUYgfCBYODZfRUZMQUdT X1JGKTsKICAgICAgICAgfQogCiAgICAgICAgIGZhaWxfaWYob3BzLT53cml0ZV9zZWdtZW50ID09 IE5VTEwpOwpAQCAtNTAxNiwyMCArNTAwNCwyMCBAQCB4ODZfZW11bGF0ZSgKIAogICAgICAgICAv KgogICAgICAgICAgKiBTWVNDQUxMICh1bmxpa2UgbW9zdCBpbnN0cnVjdGlvbnMpIGV2YWx1YXRl cyBpdHMgc2luZ2xlc3RlcCBhY3Rpb24KLSAgICAgICAgICogYmFzZWQgb24gdGhlIHJlc3VsdGlu ZyBFRkxHX1RGLCBub3QgdGhlIHN0YXJ0aW5nIEVGTEdfVEYuCisgICAgICAgICAqIGJhc2VkIG9u IHRoZSByZXN1bHRpbmcgRUZMQUdTLlRGLCBub3QgdGhlIHN0YXJ0aW5nIEVGTEFHUy5URi4KICAg ICAgICAgICoKICAgICAgICAgICogQXMgdGhlICNEQiBpcyByYWlzZWQgYWZ0ZXIgdGhlIENQTCBj aGFuZ2UgYW5kIGJlZm9yZSB0aGUgT1MgY2FuCiAgICAgICAgICAqIHN3aXRjaCBzdGFjaywgaXQg aXMgYSBsYXJnZSByaXNrIGZvciBwcml2aWxlZ2UgZXNjYWxhdGlvbi4KICAgICAgICAgICoKLSAg ICAgICAgICogNjRiaXQga2VybmVscyBzaG91bGQgbWFzayBFRkxHX1RGIGluIE1TUl9GTUFTSyB0 byBhdm9pZCBhbnkKKyAgICAgICAgICogNjRiaXQga2VybmVscyBzaG91bGQgbWFzayBFRkxBR1Mu VEYgaW4gTVNSX0ZNQVNLIHRvIGF2b2lkIGFueQogICAgICAgICAgKiB2dWxuZXJhYmlsaXR5LiAg UnVubmluZyB0aGUgI0RCIGhhbmRsZXIgb24gYW4gSVNUIHN0YWNrIGlzIGFsc28gYQogICAgICAg ICAgKiBtaXRpZ2F0aW9uLgogICAgICAgICAgKgotICAgICAgICAgKiAzMmJpdCBrZXJuZWxzIGhh dmUgbm8gYWJpbGl0eSB0byBtYXNrIEVGTEdfVEYgYXQgYWxsLiAgVGhlaXIgb25seQotICAgICAg ICAgKiBtaXRpZ2F0aW9uIGlzIHRvIHVzZSBhIHRhc2sgZ2F0ZSBmb3IgaGFuZGxpbmcgI0RCIChv ciB0byBub3QgdXNlCi0gICAgICAgICAqIGVuYWJsZSBFRkVSLlNDRSB0byBzdGFydCB3aXRoKS4K KyAgICAgICAgICogMzJiaXQga2VybmVscyBoYXZlIG5vIGFiaWxpdHkgdG8gbWFzayBFRkxBR1Mu VEYgYXQgYWxsLgorICAgICAgICAgKiBUaGVpciBvbmx5IG1pdGlnYXRpb24gaXMgdG8gdXNlIGEg dGFzayBnYXRlIGZvciBoYW5kbGluZworICAgICAgICAgKiAjREIgKG9yIHRvIG5vdCB1c2UgZW5h YmxlIEVGRVIuU0NFIHRvIHN0YXJ0IHdpdGgpLgogICAgICAgICAgKi8KLSAgICAgICAgc2luZ2xl c3RlcCA9IF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1RGOworICAgICAgICBzaW5nbGVzdGVwID0gX3Jl Z3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfVEY7CiAKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt NTI2MCw3ICs1MjQ4LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGlmICggbG0gPCAwICkKICAg ICAgICAgICAgIGdvdG8gY2Fubm90X2VtdWxhdGU7CiAKLSAgICAgICAgX3JlZ3MuX2VmbGFncyAm PSB+KEVGTEdfVk0gfCBFRkxHX0lGIHwgRUZMR19SRik7CisgICAgICAgIF9yZWdzLl9lZmxhZ3Mg Jj0gfihYODZfRUZMQUdTX1ZNIHwgWDg2X0VGTEFHU19JRiB8IFg4Nl9FRkxBR1NfUkYpOwogCiAg ICAgICAgIGNzLnNlbCA9IG1zcl9jb250ZW50ICYgfjM7IC8qIFNFTEVDVE9SX1JQTF9NQVNLICov CiAgICAgICAgIGNzLmJhc2UgPSAwOyAgIC8qIGZsYXQgc2VnbWVudCAqLwpAQCAtNTI4Niw3ICs1 Mjc0LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIF9y ZWdzLnIoc3ApID0gbG0gPyBtc3JfY29udGVudCA6ICh1aW50MzJfdCltc3JfY29udGVudDsKIAot ICAgICAgICBzaW5nbGVzdGVwID0gX3JlZ3MuX2VmbGFncyAmIEVGTEdfVEY7CisgICAgICAgIHNp bmdsZXN0ZXAgPSBfcmVncy5fZWZsYWdzICYgWDg2X0VGTEFHU19URjsKICAgICAgICAgYnJlYWs7 CiAgICAgfQogCkBAIC01MzI4LDcgKzUzMTYsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgX3Jl Z3MucihpcCkgPSBvcF9ieXRlcyA9PSA4ID8gX3JlZ3MucihkeCkgOiBfcmVncy5fZWR4OwogICAg ICAgICBfcmVncy5yKHNwKSA9IG9wX2J5dGVzID09IDggPyBfcmVncy5yKGN4KSA6IF9yZWdzLl9l Y3g7CiAKLSAgICAgICAgc2luZ2xlc3RlcCA9IF9yZWdzLl9lZmxhZ3MgJiBFRkxHX1RGOworICAg ICAgICBzaW5nbGVzdGVwID0gX3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfVEY7CiAgICAgICAg IGJyZWFrOwogICAgIH0KIApAQCAtNTUxNywxNCArNTUwNSwxNSBAQCB4ODZfZW11bGF0ZSgKICAg ICAgICAgICAgICAgICAgICAoKGRzdC5vcmlnX3ZhbCA8PCBzaGlmdCkgfAogICAgICAgICAgICAg ICAgICAgICAoKHNyYy52YWwgPj4gKHdpZHRoIC0gc2hpZnQpKSAmICgoMXVsbCA8PCBzaGlmdCkg LSAxKSkpKTsKICAgICAgICAgZHN0LnZhbCA9IHRydW5jYXRlX3dvcmQoZHN0LnZhbCwgZHN0LmJ5 dGVzKTsKLSAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+KEVGTEdfT0Z8RUZMR19TRnxFRkxHX1pG fEVGTEdfUEZ8RUZMR19DRik7CisgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfihYODZfRUZMQUdT X09GIHwgWDg2X0VGTEFHU19TRiB8IFg4Nl9FRkxBR1NfWkYgfAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgWDg2X0VGTEFHU19QRiB8IFg4Nl9FRkxBR1NfQ0YpOwogICAgICAgICBpZiAoIChk c3QudmFsID4+ICgoYiAmIDgpID8gKHNoaWZ0IC0gMSkgOiAod2lkdGggLSBzaGlmdCkpKSAmIDEg KQotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX0NGOworICAgICAgICAgICAgX3Jl Z3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0NGOwogICAgICAgICBpZiAoICgoZHN0LnZhbCBeIGRz dC5vcmlnX3ZhbCkgPj4gKHdpZHRoIC0gMSkpICYgMSApCi0gICAgICAgICAgICBfcmVncy5fZWZs YWdzIHw9IEVGTEdfT0Y7Ci0gICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gKChkc3QudmFsID4+ICh3 aWR0aCAtIDEpKSAmIDEpID8gRUZMR19TRiA6IDA7Ci0gICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0g KGRzdC52YWwgPT0gMCkgPyBFRkxHX1pGIDogMDsKLSAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBl dmVuX3Bhcml0eShkc3QudmFsKSA/IEVGTEdfUEYgOiAwOworICAgICAgICAgICAgX3JlZ3MuX2Vm bGFncyB8PSBYODZfRUZMQUdTX09GOworICAgICAgICBfcmVncy5fZWZsYWdzIHw9ICgoZHN0LnZh bCA+PiAod2lkdGggLSAxKSkgJiAxKSA/IFg4Nl9FRkxBR1NfU0YgOiAwOworICAgICAgICBfcmVn cy5fZWZsYWdzIHw9IChkc3QudmFsID09IDApID8gWDg2X0VGTEFHU19aRiA6IDA7CisgICAgICAg IF9yZWdzLl9lZmxhZ3MgfD0gZXZlbl9wYXJpdHkoZHN0LnZhbCkgPyBYODZfRUZMQUdTX1BGIDog MDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC01NjI0LDcgKzU2MTMsNyBAQCB4ODZfZW11 bGF0ZSgKICAgICAgICAgc3JjLnZhbCA9IF9yZWdzLnIoYXgpOwogICAgICAgICAvKiBjbXA6ICUl ZWF4IC0gZHN0ID09PiBkc3QgYW5kIHNyYyBzd2FwcGVkIGZvciBtYWNybyBpbnZvY2F0aW9uICov CiAgICAgICAgIGVtdWxhdGVfMm9wX1NyY1YoImNtcCIsIGRzdCwgc3JjLCBfcmVncy5fZWZsYWdz KTsKLSAgICAgICAgaWYgKCBfcmVncy5fZWZsYWdzICYgRUZMR19aRiApCisgICAgICAgIGlmICgg X3JlZ3MuX2VmbGFncyAmIFg4Nl9FRkxBR1NfWkYgKQogICAgICAgICB7CiAgICAgICAgICAgICAv KiBTdWNjZXNzOiB3cml0ZSBiYWNrIHRvIG1lbW9yeS4gKi8KICAgICAgICAgICAgIGRzdC52YWwg PSBzcmMub3JpZ192YWw7CkBAIC01NjYzLDcgKzU2NTIsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAg ICAgYXNtICggInBvcGNudCAlMSwlMCIgOiAiPXIiIChkc3QudmFsKSA6ICJybSIgKHNyYy52YWwp ICk7CiAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfkVGTEFHU19NQVNLOwogICAgICAgICBpZiAo ICFkc3QudmFsICkKLSAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19aRjsKKyAgICAg ICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsKICAgICAgICAgYnJlYWs7CiAK ICAgICBjYXNlIFg4NkVNVUxfT1BDKDB4MGYsIDB4YmEpOiAvKiBHcnA4ICovCkBAIC01Njg4LDIx ICs1Njc3LDIxIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBhc20gKCAiYnNmICUyLCUwIiBBU01f RkxBR19PVVQoLCAiOyBzZXR6ICUxIikKICAgICAgICAgICAgICAgOiAiPXIiIChkc3QudmFsKSwg QVNNX0ZMQUdfT1VUKCI9QGNjeiIsICI9cW0iKSAoemYpCiAgICAgICAgICAgICAgIDogInJtIiAo c3JjLnZhbCkgKTsKLSAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+RUZMR19aRjsKKyAgICAgICAg X3JlZ3MuX2VmbGFncyAmPSB+WDg2X0VGTEFHU19aRjsKICAgICAgICAgaWYgKCAodmV4LnBmeCA9 PSB2ZXhfZjMpICYmIHZjcHVfaGFzX2JtaTEoKSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIF9y ZWdzLl9lZmxhZ3MgJj0gfkVGTEdfQ0Y7CisgICAgICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5Y ODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgaWYgKCB6ZiApCiAgICAgICAgICAgICB7Ci0gICAg ICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX0NGOworICAgICAgICAgICAgICAgIF9y ZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19DRjsKICAgICAgICAgICAgICAgICBkc3QudmFsID0g b3BfYnl0ZXMgKiA4OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoICFkc3Qu dmFsICkKLSAgICAgICAgICAgICAgICBfcmVncy5fZWZsYWdzIHw9IEVGTEdfWkY7CisgICAgICAg ICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX1pGOwogICAgICAgICB9CiAgICAg ICAgIGVsc2UgaWYgKCB6ZiApCiAgICAgICAgIHsKLSAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3Mg fD0gRUZMR19aRjsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsK ICAgICAgICAgICAgIGRzdC50eXBlID0gT1BfTk9ORTsKICAgICAgICAgfQogICAgICAgICBicmVh azsKQEAgLTU3MTUsMjUgKzU3MDQsMjUgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGFzbSAoICJi c3IgJTIsJTAiIEFTTV9GTEFHX09VVCgsICI7IHNldHogJTEiKQogICAgICAgICAgICAgICA6ICI9 ciIgKGRzdC52YWwpLCBBU01fRkxBR19PVVQoIj1AY2N6IiwgIj1xbSIpICh6ZikKICAgICAgICAg ICAgICAgOiAicm0iIChzcmMudmFsKSApOwotICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5FRkxH X1pGOworICAgICAgICBfcmVncy5fZWZsYWdzICY9IH5YODZfRUZMQUdTX1pGOwogICAgICAgICBp ZiAoICh2ZXgucGZ4ID09IHZleF9mMykgJiYgdmNwdV9oYXNfbHpjbnQoKSApCiAgICAgICAgIHsK LSAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfkVGTEdfQ0Y7CisgICAgICAgICAgICBfcmVn cy5fZWZsYWdzICY9IH5YODZfRUZMQUdTX0NGOwogICAgICAgICAgICAgaWYgKCB6ZiApCiAgICAg ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX0NGOworICAg ICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19DRjsKICAgICAgICAgICAg ICAgICBkc3QudmFsID0gb3BfYnl0ZXMgKiA4OwogICAgICAgICAgICAgfQogICAgICAgICAgICAg ZWxzZQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGRzdC52YWwgPSBvcF9ieXRlcyAq IDggLSAxIC0gZHN0LnZhbDsKICAgICAgICAgICAgICAgICBpZiAoICFkc3QudmFsICkKLSAgICAg ICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBFRkxHX1pGOworICAgICAgICAgICAgICAg ICAgICBfcmVncy5fZWZsYWdzIHw9IFg4Nl9FRkxBR1NfWkY7CiAgICAgICAgICAgICB9CiAgICAg ICAgIH0KICAgICAgICAgZWxzZSBpZiAoIHpmICkKICAgICAgICAgewotICAgICAgICAgICAgX3Jl Z3MuX2VmbGFncyB8PSBFRkxHX1pGOworICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZf RUZMQUdTX1pGOwogICAgICAgICAgICAgZHN0LnR5cGUgPSBPUF9OT05FOwogICAgICAgICB9CiAg ICAgICAgIGJyZWFrOwpAQCAtNTgwNyw3ICs1Nzk2LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gfkVGTEFHU19NQVNL OwogICAgICAgICAgICAgICAgIGlmICggY2FycnkgKQotICAgICAgICAgICAgICAgICAgICBfcmVn cy5fZWZsYWdzIHw9IEVGTEdfQ0Y7CisgICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3Mg fD0gWDg2X0VGTEFHU19DRjsKICAgICAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogCkBAIC01 ODUwLDcgKzU4MzksNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgX3JlZ3MuX2VmbGFncyAmPSB+RUZMQUdTX01BU0s7CiAgICAgICAgICAgICAgICAg aWYgKCBjYXJyeSApCi0gICAgICAgICAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19D RjsKKyAgICAgICAgICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyB8PSBYODZfRUZMQUdTX0NGOwog ICAgICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAgICAgICB9CkBAIC01ODk5LDcg KzU4ODgsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIC8qIEV4cGVjdGVkICE9IGFjdHVh bDogc3RvcmUgYWN0dWFsIHRvIHJEWDpyQVggYW5kIGNsZWFyIFpGLiAqLwogICAgICAgICAgICAg X3JlZ3MucihheCkgPSAhKHJleF9wcmVmaXggJiBSRVhfVykgPyBvbGQtPnUzMlswXSA6IG9sZC0+ dTY0WzBdOwogICAgICAgICAgICAgX3JlZ3MucihkeCkgPSAhKHJleF9wcmVmaXggJiBSRVhfVykg PyBvbGQtPnUzMlsxXSA6IG9sZC0+dTY0WzFdOwotICAgICAgICAgICAgX3JlZ3MuX2VmbGFncyAm PSB+RUZMR19aRjsKKyAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfWkY7 CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CkBAIC01OTIxLDcgKzU5MTAsNyBA QCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGlmICggKHJjID0gb3BzLT5jbXB4Y2hnKGVhLm1l bS5zZWcsIGVhLm1lbS5vZmYsIG9sZCwgYXV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3BfYnl0ZXMsIGN0eHQpKSAhPSBYODZFTVVMX09LQVkgKQogICAgICAgICAgICAg ICAgIGdvdG8gZG9uZTsKLSAgICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gRUZMR19aRjsKKyAg ICAgICAgICAgIF9yZWdzLl9lZmxhZ3MgfD0gWDg2X0VGTEFHU19aRjsKICAgICAgICAgfQogICAg ICAgICBicmVhazsKICAgICB9CkBAIC02MDcwLDcgKzYwNTksNyBAQCB4ODZfZW11bGF0ZSgKICAg ICBjYXNlIFg4NkVNVUxfT1BDXzY2KDB4MGYzOCwgMHhmNik6IC8qIGFkY3ggci9tLHIgKi8KICAg ICBjYXNlIFg4NkVNVUxfT1BDX0YzKDB4MGYzOCwgMHhmNik6IC8qIGFkb3ggci9tLHIgKi8KICAg ICB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBtYXNrID0gcmVwX3ByZWZpeCgpID8gRUZMR19PRiA6 IEVGTEdfQ0Y7CisgICAgICAgIHVuc2lnbmVkIGludCBtYXNrID0gcmVwX3ByZWZpeCgpID8gWDg2 X0VGTEFHU19PRiA6IFg4Nl9FRkxBR1NfQ0Y7CiAgICAgICAgIHVuc2lnbmVkIGludCBhdXggPSBf cmVncy5fZWZsYWdzICYgbWFzayA/IH4wIDogMDsKICAgICAgICAgYm9vbCBjYXJyeTsKIApAQCAt NjI2Myw3ICs2MjUyLDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIHJjID0gWDg2RU1VTF9PS0FZ OwogICAgIH0KIAotICAgIGN0eHQtPnJlZ3MtPl9lZmxhZ3MgJj0gfkVGTEdfUkY7CisgICAgY3R4 dC0+cmVncy0+X2VmbGFncyAmPSB+WDg2X0VGTEFHU19SRjsKIAogIGRvbmU6CiAgICAgX3B1dF9m cHUoKTsKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=