From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=35750 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Pc4d5-0002Ss-Un for qemu-devel@nongnu.org; Sun, 09 Jan 2011 18:25:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Pc4cz-0004YL-Bl for qemu-devel@nongnu.org; Sun, 09 Jan 2011 18:24:55 -0500 Received: from mail-iw0-f173.google.com ([209.85.214.173]:63095) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Pc4cy-0004Xz-P3 for qemu-devel@nongnu.org; Sun, 09 Jan 2011 18:24:49 -0500 Received: by iwn40 with SMTP id 40so20286232iwn.4 for ; Sun, 09 Jan 2011 15:24:48 -0800 (PST) Sender: Richard Henderson Message-ID: <4D2A43BC.3000405@twiddle.net> Date: Sun, 09 Jan 2011 15:24:44 -0800 From: Richard Henderson MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010500030805000503090305" Subject: [Qemu-devel] [rfc] rewrite tcg-ia64 for auto-bundling List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Aurelien Jarno Cc: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------010500030805000503090305 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Something I noticed while working on that deposit patch for ia64 was how annoying it is to bundle instructions by hand. And the fact that it's been done incorrectly at least once. E.g. static inline void tcg_out_bswap64(TCGContext *s, TCGArg ret, TCGArg arg) { tcg_out_bundle(s, mII, tcg_opc_m48(TCG_REG_P0, OPC_NOP_M48, 0), tcg_opc_i18(TCG_REG_P0, OPC_NOP_I18, 0), tcg_opc_i3 (TCG_REG_P0, OPC_MUX1_I3, ret, arg, 0xb)); Notice that there's an unnecessary stop bit in there. This patch has does too much all at once, I'll admit that. But before I bother going back to split it into smaller pieces, I wanted to get some feedback -- including whether it would be considered at all. Some statistics that I gleaned from grepping -d out_asm. Both before and after the rewrite, the only two linux-user targets that work are i386 and alpha. Clearly there are still bugs to fix, but it's not necessarily a regression. Code size Stop bits old new change old new change i386/ls 2309712 1602736 -31% 215520 98698 -54% alpha/ls 1088352 817888 -25% 106215 48440 -54% On the system side, I am able to boot the arm-test kernel. But it's a bit harder to get repeatable statistics there. I assume that's all timing issues, and what code gets run when, and how that affects the TB cache. Anyway, comments greatly appreciated. r~ --------------010500030805000503090305 Content-Type: text/plain; name="tcg-ia64-3" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="tcg-ia64-3" ZGlmZiAtLWdpdCBhL3RjZy9pYTY0L3RjZy10YXJnZXQuYyBiL3RjZy9pYTY0L3RjZy10YXJn ZXQuYwppbmRleCAzZGRmNDM0Li5jZmY1NmFiIDEwMDY0NAotLS0gYS90Y2cvaWE2NC90Y2ct dGFyZ2V0LmMKKysrIGIvdGNnL2lhNjQvdGNnLXRhcmdldC5jCkBAIC0xODksNyArMTg5LDgg QEAgc3RhdGljIGlubGluZSBpbnQgdGNnX3RhcmdldF9nZXRfY2FsbF9pYXJnX3JlZ3NfY291 bnQoaW50IGZsYWdzKQogCiAvKiBidW5kbGUgdGVtcGxhdGVzOiBzdG9wcyAoZG91YmxlIGJh ciBpbiB0aGUgSUE2NCBtYW51YWwpIGFyZSBtYXJrZWQgd2l0aAogICAgYW4gdXBwZXJjYXNl IGxldHRlci4gKi8KLWVudW0geworZW51bSBpYTY0X2J1bmRsZV90eXBlIHsKKyAgICBub2J1 bmRsZSA9IC0xLAogICAgIG1paSA9IDB4MDAsCiAgICAgbWlJID0gMHgwMSwKICAgICBtSWkg PSAweDAyLApAQCAtMjE2LDcgKzIxNywxOCBAQCBlbnVtIHsKICAgICBtZkIgPSAweDFkLAog fTsKIAotZW51bSB7CitlbnVtIGlhNjRfaW5zbl90eXBlIHsKKyAgICBJTlNOX1RZUEVfTiwg LyogTk9ORSAqLworICAgIElOU05fVFlQRV9BLAorICAgIElOU05fVFlQRV9NLAorICAgIElO U05fVFlQRV9JLAorICAgIElOU05fVFlQRV9YLAorICAgIElOU05fVFlQRV9MLAorICAgIElO U05fVFlQRV9GLAorICAgIElOU05fVFlQRV9CCit9OworCitlbnVtIGlhNjRfb3BjIHsKICAg ICBPUENfQUREX0ExICAgICAgICAgICAgICAgID0gMHgxMDAwMDAwMDAwMHVsbCwKICAgICBP UENfQU5EX0ExICAgICAgICAgICAgICAgID0gMHgxMDA2MDAwMDAwMHVsbCwKICAgICBPUENf QU5EX0EzICAgICAgICAgICAgICAgID0gMHgxMDE2MDAwMDAwMHVsbCwKQEAgLTIzMSwxMyAr MjQzLDE3IEBAIGVudW0gewogICAgIE9QQ19CUl9DQUxMX1NQVEtfTUFOWV9CNSAgPSAweDAy MTAwMDAxMDAwdWxsLAogICAgIE9QQ19CUl9SRVRfU1BUS19NQU5ZX0I0ICAgPSAweDAwMTA4 MDAxMTAwdWxsLAogICAgIE9QQ19CUkxfU1BUS19NQU5ZX1gzICAgICAgPSAweDE4MDAwMDAx MDAwdWxsLAorICAgIE9QQ19CUkxfQ0FMTF9TUFRLX01BTllfWDQgPSAweDFhMDAwMDAxMDAw dWxsLAogICAgIE9QQ19DTVBfTFRfQTYgICAgICAgICAgICAgPSAweDE4MDAwMDAwMDAwdWxs LAogICAgIE9QQ19DTVBfTFRVX0E2ICAgICAgICAgICAgPSAweDFhMDAwMDAwMDAwdWxsLAog ICAgIE9QQ19DTVBfRVFfQTYgICAgICAgICAgICAgPSAweDFjMDAwMDAwMDAwdWxsLAogICAg IE9QQ19DTVA0X0xUX0E2ICAgICAgICAgICAgPSAweDE4NDAwMDAwMDAwdWxsLAogICAgIE9Q Q19DTVA0X0xUVV9BNiAgICAgICAgICAgPSAweDFhNDAwMDAwMDAwdWxsLAogICAgIE9QQ19D TVA0X0VRX0E2ICAgICAgICAgICAgPSAweDFjNDAwMDAwMDAwdWxsLAorICAgIE9QQ19ERVBf STE0ICAgICAgICAgICAgICAgPSAweDBhZTAwMDAwMDAwdWxsLAorICAgIE9QQ19ERVBfSTE1 ICAgICAgICAgICAgICAgPSAweDA4MDAwMDAwMDAwdWxsLAogICAgIE9QQ19ERVBfWl9JMTIg ICAgICAgICAgICAgPSAweDBhNjAwMDAwMDAwdWxsLAorICAgIE9QQ19ERVBfWl9JMTMgICAg ICAgICAgICAgPSAweDBhNjA0MDAwMDAwdWxsLAogICAgIE9QQ19FWFRSX0kxMSAgICAgICAg ICAgICAgPSAweDBhNDAwMDAyMDAwdWxsLAogICAgIE9QQ19FWFRSX1VfSTExICAgICAgICAg ICAgPSAweDBhNDAwMDAwMDAwdWxsLAogICAgIE9QQ19GQ1ZUX0ZYX1RSVU5DX1MxX0YxMCAg PSAweDAwNGQwMDAwMDAwdWxsLApAQCAtMjY2LDkgKzI4MiwxMSBAQCBlbnVtIHsKICAgICBP UENfTU9WX0lfSTI2ICAgICAgICAgICAgID0gMHgwMDE1MDAwMDAwMHVsbCwKICAgICBPUENf TU9WTF9YMiAgICAgICAgICAgICAgID0gMHgwYzAwMDAwMDAwMHVsbCwKICAgICBPUENfT1Jf QTEgICAgICAgICAgICAgICAgID0gMHgxMDA3MDAwMDAwMHVsbCwKKyAgICBPUENfT1JfQTMg ICAgICAgICAgICAgICAgID0gMHgxMDE3MDAwMDAwMHVsbCwKICAgICBPUENfU0VURl9FWFBf TTE4ICAgICAgICAgID0gMHgwYzc0ODAwMDAwMHVsbCwKICAgICBPUENfU0VURl9TSUdfTTE4 ICAgICAgICAgID0gMHgwYzcwODAwMDAwMHVsbCwKICAgICBPUENfU0hMX0k3ICAgICAgICAg ICAgICAgID0gMHgwZjI0MDAwMDAwMHVsbCwKKyAgICBPUENfU0hMQUREX0EyICAgICAgICAg ICAgID0gMHgxMDA4MDAwMDAwMHVsbCwKICAgICBPUENfU0hSX0k1ICAgICAgICAgICAgICAg ID0gMHgwZjIyMDAwMDAwMHVsbCwKICAgICBPUENfU0hSX1VfSTUgICAgICAgICAgICAgID0g MHgwZjIwMDAwMDAwMHVsbCwKICAgICBPUENfU0hSUF9JMTAgICAgICAgICAgICAgID0gMHgw YWMwMDAwMDAwMHVsbCwKQEAgLTI4NCwzNzIgKzMwMiw3OTMgQEAgZW51bSB7CiAgICAgT1BD X1VOUEFDSzRfTF9JMiAgICAgICAgICA9IDB4MGY4NjAwMDAwMDB1bGwsCiAgICAgT1BDX1hN QV9MX0YyICAgICAgICAgICAgICA9IDB4MWQwMDAwMDAwMDB1bGwsCiAgICAgT1BDX1hPUl9B MSAgICAgICAgICAgICAgICA9IDB4MTAwNzgwMDAwMDB1bGwsCisgICAgT1BDX1hPUl9BMyAg ICAgICAgICAgICAgICA9IDB4MTAxNzgwMDAwMDB1bGwsCiAgICAgT1BDX1pYVDFfSTI5ICAg ICAgICAgICAgICA9IDB4MDAwODAwMDAwMDB1bGwsCiAgICAgT1BDX1pYVDJfSTI5ICAgICAg ICAgICAgICA9IDB4MDAwODgwMDAwMDB1bGwsCiAgICAgT1BDX1pYVDRfSTI5ICAgICAgICAg ICAgICA9IDB4MDAwOTAwMDAwMDB1bGwsCiB9OwogCi1zdGF0aWMgaW5saW5lIHVpbnQ2NF90 IHRjZ19vcGNfYTEoaW50IHFwLCB1aW50NjRfdCBvcGMsIGludCByMSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcjIsIGludCByMykKKy8qIFRoZSAiZXh0cmEi IGluZm9ybWF0aW9uIHdlIGtlZXAgaXMgYSBzZXQgb2YgdXAgdG8gNCBpbnNucyB0aGF0IGhh dmUKKyAgIGJlZW4gImlzc3VlZCIgYnkgb3RoZXIgcGFydHMgb2YgdGhlIGJhY2tlbmQsIGJ1 dCBoYXZlIHlldCB0byBiZSAKKyAgIHdyaXR0ZW4gdG8gdGhlIHJlYWwgaW5zdHJ1Y3Rpb24g c3RyZWFtLgorCisgICBGb3IgZWFjaCBpbnNuIHRoYXQgaGFzIGJlZW4gcXVldWVkLCB3ZSBr ZWVwIHRyYWNrIG9mIGl0cyB0eXBlIGFuZAorICAgd2hldGhlciBvciBub3QgaXQgbmVlZHMg dG8gYmUgZm9sbG93ZWQgYnkgYSAic3RvcCIgYml0LgorCisgICBGaW5hbGx5LCB3ZSB0cmFj ayAoc29tZSBvZikgdGhlIHJlc291cmNlcyB0aGF0IGhhdmUgYmVlbiB3cml0dGVuCisgICB0 aGF0IHdvdWxkIHJlcXVpcmUgZ2VuZXJhdGlvbiBvZiBhIHN0b3AgYml0IGJ5IGEgc3Vic2Vx dWVudCBpbnNuLgorICAgVGhlIGJpdHMgaW4gZWFjaCBXUklUVEVOIHdvcmQgYXJlIHNldCBm b3IgZWFjaCBpbnRlZ2VyIHJlZ2lzdGVyCisgICB0aGF0IGhhcyBiZWVuIHdyaXR0ZW4gc2lu Y2UgdGhlIHByZXZpb3VzIHN0b3AgYml0LiAgVGhlIFdSSVRURU5bMF0KKyAgIHdvcmQgY29y cmVzcG9uZHMgdG8gaW5zbnMgdXNpbmcgYW4gZXZlbiBudW1iZXJlZCBwcmVkaWNhdGUgcmVn aXN0ZXI7CisgICB0aGUgV1JJVFRFTlsxXSBjb3JyZXNwb25kcyB0byBvZGQgbnVtYmVyZWQg cHJlZGljYXRlIHJlZ2lzdGVyLiAgSWYKKyAgIHRoZSBpbnNuIGlzIG5vdCBwcmVkaWNhdGVk IChpLmUuIHVzaW5nIHAwKSwgdGhlbiBib3RoIFdSSVRURU4gd29yZHMKKyAgIGFyZSB1cGRh dGVkIGFuZCBjaGVja2VkLgorCisgICBDZXJ0YWluIHR5cGVzIG9mIHJlc291cmNlIGNvbmZs aWN0cyBhcmUgcmFyZSBhbmQgaWdub3JlZCBoZXJlOgorCisgICAoMSkgRlAgcmVnaXN0ZXJz IGFyZSBub3QgdHJhY2tlZC4gIEdpdmVuIHRoYXQgdGhlc2UgYXJlIG9ubHkgdXNlZAorICAg Zm9yIGludGVnZXIgbXVsdGlwbHksIHRoaXMgaXMgZWFzeSB0byBkbyBieSBoYW5kLgorCisg ICAoMikgTWVtb3J5IHN0b3JlcyBhcmUgbm90IHRyYWNrZWQuICBJbiBzb2Z0bW11IG1vZGUs IHVzZXIgbWVtb3J5CisgICByZWZlcmVuY2VzIGFyZSBvYnZpb3VzbHkgcXVpdGUgY29tcGxl eCBhbmQgaGF2ZSBpbnRlcm5hbCBzdG9wIGJpdHMKKyAgIGdlbmVyYXRlZC4gIEluIHVzZXIg bW9kZSwgb3IgZm9yIHJlZmVyZW5jZXMgaW50byB0aGUgRU5WIGJsb2NrLCB3ZQorICAgYWx3 YXlzIHVzZSBSMiBhcyBhbiBpbnRlcm1lZGlhdGUgaG9sZGluZyB0aGUgYmFzZStvZnMgYWRk cmVzcy4gIFRodXMKKyAgIHdlIGdldCBhIHN0b3AgYml0IGdlbmVyYXRlZCBmb3IgdGhlIHNl dCBvZiBSMiwgd2hpY2ggdGFrZXMgY2FyZSBvZgorICAgYXZvaWRpbmcgY29uZmxpY3Qgd2l0 aCBhIHByZXZpb3VzIHN0b3JlLiAgSWYgd2UgZXZlciBpbXBsZW1lbnQgc29tZQorICAgZm9y bSBvZiB0ZW1wIGNzZSwgdGhpcyBtYXkgd2VsbCBoYXZlIHRvIGNoYW5nZS4KKworICAgKDMp IFByZWRpY2F0ZSByZWdpc3RlcnMgYXJlIG5vdCB0cmFja2VkLiAgVGhlc2Ugb25seSBzaG93 IHVwIGluCisgICB0aGUgc2V0Y29uZCBhbmQgc29mdG1tdSBzZXF1ZW5jZXMsIHdoZXJlIGl0 IGlzIGVhc3kgZW5vdWdoIHRvIGFkZAorICAgdGhlIHN0b3AgYml0IGJ5IGhhbmQuCisKKyAg ICg0KSBTcGVjaWFsIHJlZ2lzdGVycyBhcmUgbm90IHRyYWNrZWQuICBUaGVzZSBvbmx5IHNo b3cgdXAgaW4gdGhlCisgICBwcm9sb2d1ZSBhbmQgZXBpbG9ndWUgc2VxdWVuY2VzLCB3aGVy ZSB0aGV5IGFyZSBpbiBmYWN0IHNlcGFyYXRlZAorICAgYnkgdGhlIGJvZHkgb2YgdGhlIHRy YW5zbGF0ZWQgY29kZS4KKyovCisKK3N0cnVjdCBpYTY0X2luc25faW5mbworeworICAgIGVu dW0gaWE2NF9pbnNuX3R5cGUgdHlwZTsKKyAgICBib29sIHN0b3A7CisgICAgdWludDY0X3Qg aW5zbjsKK307CisKK3N0cnVjdCBUQ0dDb250ZXh0RXh0cmEKK3sKKyAgICBpbnQgbl9xdWV1 ZTsKKyAgICBzdHJ1Y3QgaWE2NF9pbnNuX2luZm8gcXVldWVbNF07CisgICAgdWludDY0X3Qg d3JpdHRlblsyXTsKK307CisKKy8qCisgKiBDb2RlIGdlbmVyYXRpb24KKyAqLworCitzdGF0 aWMgdWludDhfdCAqdGJfcmV0X2FkZHI7CisKK3N0YXRpYyB2b2lkIHRjZ19vdXRfYnVuZGxl KFRDR0NvbnRleHQgKnMsIGVudW0gaWE2NF9idW5kbGVfdHlwZSB0ZW1wbGF0ZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNsb3QwLCB1aW50NjRfdCBzbG90MSwg dWludDY0X3Qgc2xvdDIpCiB7Ci0gICAgcmV0dXJuIG9wYwotICAgICAgICAgICB8ICgocjMg JiAweDdmKSA8PCAyMCkKLSAgICAgICAgICAgfCAoKHIyICYgMHg3ZikgPDwgMTMpCi0gICAg ICAgICAgIHwgKChyMSAmIDB4N2YpIDw8IDYpCi0gICAgICAgICAgIHwgKHFwICYgMHgzZik7 CisgICAgdGVtcGxhdGUgJj0gMHgxZjsgICAgICAgICAgLyogNSBiaXRzICovCisgICAgc2xv dDAgJj0gMHgxZmZmZmZmZmZmZnVsbDsgLyogNDEgYml0cyAqLworICAgIHNsb3QxICY9IDB4 MWZmZmZmZmZmZmZ1bGw7IC8qIDQxIGJpdHMgKi8KKyAgICBzbG90MiAmPSAweDFmZmZmZmZm ZmZmdWxsOyAvKiA0MSBiaXRzICovCisKKyAgICAqKHVpbnQ2NF90ICopKHMtPmNvZGVfcHRy ICsgMCkgPSAoc2xvdDEgPDwgNDYpIHwgKHNsb3QwIDw8IDUpIHwgdGVtcGxhdGU7CisgICAg Kih1aW50NjRfdCAqKShzLT5jb2RlX3B0ciArIDgpID0gKHNsb3QyIDw8IDIzKSB8IChzbG90 MSA+PiAxOCk7CisgICAgcy0+Y29kZV9wdHIgKz0gMTY7CiB9CiAKLXN0YXRpYyBpbmxpbmUg dWludDY0X3QgdGNnX29wY19hMyhpbnQgcXAsIHVpbnQ2NF90IG9wYywgaW50IHIxLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGltbSwgaW50IHIzKQor LyogRXhwbGljaXRseSBhZGQgYSBzdG9wIGJpdCBhZnRlciB0aGUgcHJldmlvdXNseSBvdXRw dXQgaW5zbi4gICovCisKK3N0YXRpYyB2b2lkIHRjZ19hZGRfc3RvcChUQ0dDb250ZXh0ICpz KQogewotICAgIHJldHVybiBvcGMKLSAgICAgICAgICAgfCAoKGltbSAmIDB4ODApIDw8IDI5 KSAvKiBzICovCi0gICAgICAgICAgIHwgKChpbW0gJiAweDdmKSA8PCAxMykgLyogaW1tN2Ig Ki8KLSAgICAgICAgICAgfCAoKHIzICYgMHg3ZikgPDwgMjApCi0gICAgICAgICAgIHwgKChy MSAmIDB4N2YpIDw8IDYpCi0gICAgICAgICAgIHwgKHFwICYgMHgzZik7CisgICAgVENHQ29u dGV4dEV4dHJhICplID0gcy0+ZXh0cmE7CisgICAgYXNzZXJ0IChlLT5uX3F1ZXVlID4gMCk7 CisgICAgZS0+cXVldWVbZS0+bl9xdWV1ZSAtIDFdLnN0b3AgPSB0cnVlOworICAgIGUtPndy aXR0ZW5bMF0gPSBlLT53cml0dGVuWzFdID0gMDsKIH0KIAotc3RhdGljIGlubGluZSB1aW50 NjRfdCB0Y2dfb3BjX2E0KGludCBxcCwgdWludDY0X3Qgb3BjLCBpbnQgcjEsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgaW1tLCBpbnQgcjMpCisvKiBJ c3N1ZSBvbmUgYnVuZGxlIG9mIGluc25zIGZyb20gdGhlIHF1ZXVlIGJlZ2lubmluZyBhdCBT VEFSVCwgYW5kCisgICBub3QgZXhjZWVkaW5nIE1BWCBpbnNucy4gIFJldHVybiB0aGUgbnVt YmVyIG9mIGluc25zIHdlIGJ1bmRsZWQuICAqLworCitzdGF0aWMgaW50IHRjZ19lbWl0X29u ZV9idW5kbGUoVENHQ29udGV4dCAqcywgaW50IHN0YXJ0LCBpbnQgbWF4KQogewotICAgIHJl dHVybiBvcGMKLSAgICAgICAgICAgfCAoKGltbSAmIDB4MjAwMCkgPDwgMjMpIC8qIHMgKi8K LSAgICAgICAgICAgfCAoKGltbSAmIDB4MWY4MCkgPDwgMjApIC8qIGltbTZkICovCi0gICAg ICAgICAgIHwgKChpbW0gJiAweDAwN2YpIDw8IDEzKSAvKiBpbW03YiAqLwotICAgICAgICAg ICB8ICgocjMgJiAweDdmKSA8PCAyMCkKLSAgICAgICAgICAgfCAoKHIxICYgMHg3ZikgPDwg NikKLSAgICAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICBjb25zdCB1aW50NjRfdCBub3Bf bSA9IE9QQ19OT1BfTTQ4OworICAgIGNvbnN0IHVpbnQ2NF90IG5vcF9pID0gT1BDX05PUF9J MTg7CisKKyAgICBUQ0dDb250ZXh0RXh0cmEgKmUgPSBzLT5leHRyYTsKKyAgICBlbnVtIGlh NjRfaW5zbl90eXBlIHQwLCB0MSwgdDI7CisgICAgZW51bSBpYTY0X2J1bmRsZV90eXBlIGJ0 OworICAgIHVpbnQ2NF90IGluc24wLCBpbnNuMSwgaW5zbjI7CisgICAgaW50IHN0b3AsIHJl dDsKKyAgICAKKyAgICB0MCA9IHQxID0gdDIgPSBJTlNOX1RZUEVfTjsKKyAgICBpbnNuMCA9 IGluc24xID0gaW5zbjIgPSAwOworICAgIHN0b3AgPSAwOworICAgIHN3aXRjaCAobWF4KSB7 CisgICAgICBjYXNlIDA6CisgICAgICAgIHJldHVybiAwOworICAgICAgZGVmYXVsdDoKKyAg ICAgICAgdDIgPSBlLT5xdWV1ZVtzdGFydCArIDJdLnR5cGU7CisgICAgICAgIGluc24yID0g ZS0+cXVldWVbc3RhcnQgKyAyXS5pbnNuOworICAgICAgICBzdG9wIHw9IGUtPnF1ZXVlW3N0 YXJ0ICsgMl0uc3RvcDsKKyAgICAgICAgLyogRkFMTFRIUlUgKi8KKyAgICAgIGNhc2UgMjoK KyAgICAgICAgdDEgPSBlLT5xdWV1ZVtzdGFydCArIDFdLnR5cGU7CisgICAgICAgIGluc24x ID0gZS0+cXVldWVbc3RhcnQgKyAxXS5pbnNuOworICAgICAgICBzdG9wIHw9IGUtPnF1ZXVl W3N0YXJ0ICsgMV0uc3RvcCA8PCAxOworICAgICAgICAvKiBGQUxMVEhSVSAqLworICAgICAg Y2FzZSAxOgorICAgICAgICB0MCA9IGUtPnF1ZXVlW3N0YXJ0XS50eXBlOworICAgICAgICBp bnNuMCA9IGUtPnF1ZXVlW3N0YXJ0XS5pbnNuOworICAgICAgICBzdG9wIHw9IGUtPnF1ZXVl W3N0YXJ0XS5zdG9wIDw8IDI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworI2RlZmluZSBU TVBMKEEsQixDLFMpIFwKKyAgICAoUyA8PCA5IHwgSU5TTl9UWVBFXyMjQSA8PCA2IHwgSU5T Tl9UWVBFXyMjQiA8PCAzIHwgSU5TTl9UWVBFXyMjQykKKworICAgIC8qIFdlIHByZWZlciB0 byBpc3N1ZSBBIGluc25zIGludG8gTSBzbG90cy4gIFRoZSBpdGFuaXVtMiBjYW4KKyAgICAg ICBpc3N1ZSA0IE0gaW5zbnMgcGVyIGN5Y2xlLCBhbmQga2VlcGluZyAocG90ZW50aWFsKSBh ZGRyZXNzCisgICAgICAgYXJpdGhtZXRpYyBpbiB0aGUgTSB1bml0IHNhdmVzIGEgY3ljbGUg d2hlbiBpdCBjb21lcyB0bworICAgICAgIGNyb3NzLXVuaXQgc3RhbGxzLiAgKi8KKworICAg IGJ0ID0gbm9idW5kbGU7CisgICAgcmV0ID0gMzsKKyAgICBpZiAobWF4ID49IDMpIHsKKyAg ICAgICAgLyogTWF0Y2ggYSBmdWxsIGJ1bmRsZSBvZiB0aHJlZSBpbnNucy4gICovCisgICAg ICAgIHN3aXRjaCAoKHN0b3AgJiA2KSA8PCA4IHwgdDAgPDwgNiB8IHQxIDw8IDMgfCB0Mikg eworICAgICAgICBjYXNlIFRNUEwoQSxJLEEsMCk6CisgICAgICAgIGNhc2UgVE1QTChBLEks SSwwKToKKyAgICAgICAgY2FzZSBUTVBMKE0sSSxBLDApOgorICAgICAgICBjYXNlIFRNUEwo TSxJLEksMCk6IGJ0ID0gbWlpOyBicmVhazsKKworICAgICAgICBjYXNlIFRNUEwoQSxBLEEs MSk6CisgICAgICAgIGNhc2UgVE1QTChBLEEsSSwxKToKKyAgICAgICAgY2FzZSBUTVBMKEEs SSxBLDEpOgorICAgICAgICBjYXNlIFRNUEwoTSxBLEEsMSk6CisgICAgICAgIGNhc2UgVE1Q TChBLEksSSwxKToKKyAgICAgICAgY2FzZSBUTVBMKE0sQSxJLDEpOgorICAgICAgICBjYXNl IFRNUEwoTSxJLEEsMSk6CisgICAgICAgIGNhc2UgVE1QTChNLEksSSwxKTogYnQgPSBtSWk7 IGJyZWFrOworCisgICAgICAgIGNhc2UgVE1QTChBLEwsWCwwKToKKyAgICAgICAgY2FzZSBU TVBMKE0sTCxYLDApOiBidCA9IG1seDsgYnJlYWs7CisKKyAgICAgICAgY2FzZSBUTVBMKEEs QSxBLDApOgorICAgICAgICBjYXNlIFRNUEwoQSxBLEksMCk6CisgICAgICAgIGNhc2UgVE1Q TChBLE0sQSwwKToKKyAgICAgICAgY2FzZSBUTVBMKE0sQSxBLDApOgorICAgICAgICBjYXNl IFRNUEwoQSxNLEksMCk6CisgICAgICAgIGNhc2UgVE1QTChNLEEsSSwwKToKKyAgICAgICAg Y2FzZSBUTVBMKE0sTSxBLDApOgorICAgICAgICBjYXNlIFRNUEwoTSxNLEksMCk6IGJ0ID0g bW1pOyBicmVhazsKKworICAgICAgICBjYXNlIFRNUEwoQSxBLEEsMik6CisgICAgICAgIGNh c2UgVE1QTChBLEEsSSwyKToKKyAgICAgICAgY2FzZSBUTVBMKEEsTSxBLDIpOgorICAgICAg ICBjYXNlIFRNUEwoTSxBLEEsMik6CisgICAgICAgIGNhc2UgVE1QTChBLE0sSSwyKToKKyAg ICAgICAgY2FzZSBUTVBMKE0sQSxJLDIpOgorICAgICAgICBjYXNlIFRNUEwoTSxNLEEsMik6 CisgICAgICAgIGNhc2UgVE1QTChNLE0sSSwyKTogYnQgPSBNbWk7IGJyZWFrOworCisgICAg ICAgIGNhc2UgVE1QTChBLEYsQSwwKToKKyAgICAgICAgY2FzZSBUTVBMKEEsRixJLDApOgor ICAgICAgICBjYXNlIFRNUEwoTSxGLEEsMCk6CisgICAgICAgIGNhc2UgVE1QTChNLEYsSSww KTogYnQgPSBtZmk7IGJyZWFrOworCisgICAgICAgIGNhc2UgVE1QTChBLEEsRiwwKToKKyAg ICAgICAgY2FzZSBUTVBMKEEsTSxGLDApOgorICAgICAgICBjYXNlIFRNUEwoTSxBLEYsMCk6 CisgICAgICAgIGNhc2UgVE1QTChNLE0sRiwwKTogYnQgPSBtbWY7IGJyZWFrOworCisgICAg ICAgIGNhc2UgVE1QTChBLEksQiwwKToKKyAgICAgICAgY2FzZSBUTVBMKE0sQSxCLDApOgor ICAgICAgICBjYXNlIFRNUEwoTSxJLEIsMCk6IGJ0ID0gbWliOyBicmVhazsKKworICAgICAg ICBjYXNlIFRNUEwoTSxCLEIsMCk6IGJ0ID0gbWJiOyBicmVhazsKKyAgICAgICAgY2FzZSBU TVBMKEIsQixCLDApOiBidCA9IGJiYjsgYnJlYWs7CisKKyAgICAgICAgY2FzZSBUTVBMKEEs QSxCLDApOgorICAgICAgICBjYXNlIFRNUEwoTSxNLEIsMCk6IGJ0ID0gbW1iOyBicmVhazsK KworICAgICAgICBjYXNlIFRNUEwoQSxGLEIsMCk6CisgICAgICAgIGNhc2UgVE1QTChNLEYs QiwwKTogYnQgPSBtZmI7IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGJ0 ID09IG5vYnVuZGxlKSB7CisgICAgICAgIC8qIE1hdGNoIGEgYnVuZGxlIG9mIHR3byBpbnNu cy4gICovCisgICAgICAgIHJldCA9IDI7CisgICAgICAgIHN0b3AgPj49IDE7CisgICAgICAg IGluc24yID0gbm9wX2k7CisKKyAgICAgICAgaWYgKG1heCA+PSAyKSB7CisgICAgICAgICAg ICBzd2l0Y2ggKChzdG9wICYgMikgPDwgOCB8IHQwIDw8IDMgfCB0MSkgeworICAgICAgICAg ICAgY2FzZSBUTVBMKE4sQSxBLDEpOgorICAgICAgICAgICAgY2FzZSBUTVBMKE4sQSxNLDEp OgorICAgICAgICAgICAgY2FzZSBUTVBMKE4sTSxBLDEpOgorICAgICAgICAgICAgY2FzZSBU TVBMKE4sTSxNLDEpOgorICAgICAgICAgICAgICAgIGJ0ID0gTW1pOworICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUTVBMKE4sQSxBLDApOgorICAgICAgICAg ICAgY2FzZSBUTVBMKE4sQSxNLDApOgorICAgICAgICAgICAgY2FzZSBUTVBMKE4sTSxBLDAp OgorICAgICAgICAgICAgY2FzZSBUTVBMKE4sTSxNLDApOgorICAgICAgICAgICAgICAgIGJ0 ID0gbW1pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUTVBM KE4sQSxGLDApOgorICAgICAgICAgICAgY2FzZSBUTVBMKE4sTSxGLDApOgorICAgICAgICAg ICAgICAgIGJ0ID0gbWZpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg ICBjYXNlIFRNUEwoTixBLEksMSk6CisgICAgICAgICAgICBjYXNlIFRNUEwoTixNLEksMSk6 CisgICAgICAgICAgICAgICAgYnQgPSBNbWk7CisgICAgICAgICAgICAgICAgaW5zbjIgPSBp bnNuMTsKKyAgICAgICAgICAgICAgICBpbnNuMSA9IG5vcF9tOworICAgICAgICAgICAgICAg IGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFRNUEwoTixJLEEsMCk6CisgICAgICAgICAg ICBjYXNlIFRNUEwoTixJLEksMCk6CisgICAgICAgICAgICAgICAgYnQgPSBtaWk7CisgICAg ICAgICAgICAgICAgZ290byBub3BfbV8wOworICAgICAgICAgICAgY2FzZSBUTVBMKE4sSSxB LDEpOgorICAgICAgICAgICAgY2FzZSBUTVBMKE4sSSxJLDEpOgorICAgICAgICAgICAgICAg IGJ0ID0gbUlpOworICAgICAgICAgICAgICAgIGdvdG8gbm9wX21fMDsKKyAgICAgICAgICAg IGNhc2UgVE1QTChOLEwsWCwwKToKKyAgICAgICAgICAgICAgICBidCA9IG1seDsKKyAgICAg ICAgICAgICAgICBnb3RvIG5vcF9tXzA7CisgICAgICAgICAgICBjYXNlIFRNUEwoTixBLEks MCk6CisgICAgICAgICAgICBjYXNlIFRNUEwoTixNLEksMCk6CisgICAgICAgICAgICAgICAg YnQgPSBtbWk7CisgICAgICAgICAgICAgICAgZ290byBub3BfbV8wOworICAgICAgICAgICAg Y2FzZSBUTVBMKE4sRixBLDApOgorICAgICAgICAgICAgY2FzZSBUTVBMKE4sRixJLDApOgor ICAgICAgICAgICAgICAgIGJ0ID0gbWZpOworICAgICAgICAgICAgICAgIGdvdG8gbm9wX21f MDsKKyAgICAgICAgICAgIGNhc2UgVE1QTChOLEEsQiwwKToKKyAgICAgICAgICAgIGNhc2Ug VE1QTChOLE0sQiwwKToKKyAgICAgICAgICAgICAgICBidCA9IG1tYjsKKyAgICAgICAgICAg ICAgICBnb3RvIG5vcF9tXzA7CisgICAgICAgICAgICBjYXNlIFRNUEwoTixJLEIsMCk6Cisg ICAgICAgICAgICAgICAgYnQgPSBtaWI7CisgICAgICAgICAgICAgICAgZ290byBub3BfbV8w OworICAgICAgICAgICAgY2FzZSBUTVBMKE4sRixCLDApOgorICAgICAgICAgICAgICAgIGJ0 ID0gbWZiOworICAgICAgICAgICAgbm9wX21fMDoKKyAgICAgICAgICAgICAgICBpbnNuMiA9 IGluc24xOworICAgICAgICAgICAgICAgIGluc24xID0gaW5zbjA7CisgICAgICAgICAgICAg ICAgaW5zbjAgPSBub3BfbTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChidCA9PSBub2J1bmRsZSkgeworICAgICAg ICAgICAgLyogQnVuZGxlIGEgc2luZ2xlIGluc24gYnkgaXRzZWxmLiAgKi8KKyAgICAgICAg ICAgIHJldCA9IDE7CisgICAgICAgICAgICBzdG9wID4+PSAxOworCisgICAgICAgICAgICBz d2l0Y2ggKHQwKSB7CisgICAgICAgICAgICBjYXNlIElOU05fVFlQRV9BOgorICAgICAgICAg ICAgY2FzZSBJTlNOX1RZUEVfTToKKyAgICAgICAgICAgICAgICBidCA9IG1taTsKKyAgICAg ICAgICAgICAgICBpbnNuMiA9IG5vcF9pOworICAgICAgICAgICAgICAgIGluc24xID0gbm9w X207CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIElOU05fVFlQ RV9JOgorICAgICAgICAgICAgICAgIGJ0ID0gbW1pOworICAgICAgICAgICAgICAgIGdvdG8g bm9wX21fMDE7CisgICAgICAgICAgICBjYXNlIElOU05fVFlQRV9GOgorICAgICAgICAgICAg ICAgIGJ0ID0gbW1mOworICAgICAgICAgICAgICAgIGdvdG8gbm9wX21fMDE7CisgICAgICAg ICAgICBjYXNlIElOU05fVFlQRV9COgorICAgICAgICAgICAgICAgIGJ0ID0gbW1iOworICAg ICAgICAgICAgbm9wX21fMDE6CisgICAgICAgICAgICAgICAgaW5zbjIgPSBpbnNuMDsKKyAg ICAgICAgICAgICAgICBpbnNuMSA9IG5vcF9tOworICAgICAgICAgICAgICAgIGluc24wID0g bm9wX207CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor ICAgICAgICAgICAgICAgIHRjZ19hYm9ydCgpOworICAgICAgICAgICAgfQorICAgICAgICB9 CisgICAgfQorCisjdW5kZWYgVE1QTAorCisgICAgLyogQWxsIGJ1bmRsZXMgY2FuIGdldCBh IGZpbmFsIHN0b3AgYml0IGJ5IGFkZGluZyBvbmUuICAqLworICAgIGJ0ICs9IChzdG9wICYg MSk7CisKKyAgICB0Y2dfb3V0X2J1bmRsZShzLCBidCwgaW5zbjAsIGluc24xLCBpbnNuMik7 CisKKyAgICByZXR1cm4gcmV0OworfQorCisvKiBFbXB0eSB0aGUgaW5zdHJ1Y3Rpb24gcXVl dWUuICAqLworCitzdGF0aWMgdm9pZCB0Y2dfZmx1c2hfcXVldWUoVENHQ29udGV4dCAqcykK K3sKKyAgICBUQ0dDb250ZXh0RXh0cmEgKmUgPSBzLT5leHRyYTsKKyAgICBpbnQgaSwgaiwg biA9IGUtPm5fcXVldWU7CisKKyAgICBpZiAobiA+IDApIHsKKyAgICAgICAgLyogSWYgdGhl cmUgYXJlIGFueSBvdXRzdGFuZGluZyB3cml0ZXMsIHdlIG11c3QgYWRkIGEgc3RvcCBiaXQs CisgICAgICAgICAgIGxlc3Qgd2Ugbm90IGJlIGFibGUgdG8gYWRkIGEgc3RvcCBiaXQgd2hl biB0aGUgbmV4dCBpbnNuIGlzCisgICAgICAgICAgIGFkZGVkIHRvIHRoZSBxdWV1ZS4gICov CisgICAgICAgIGlmIChlLT53cml0dGVuWzBdIHwgZS0+d3JpdHRlblsxXSkgeworICAgICAg ICAgICAgdGNnX2FkZF9zdG9wKHMpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpID0g MDsgaSA8IG47IGkgKz0gaikgeworICAgICAgICAgICAgaiA9IHRjZ19lbWl0X29uZV9idW5k bGUocywgaSwgbiAtIGkpOworICAgICAgICB9CisKKyAgICAgICAgZS0+bl9xdWV1ZSA9IDA7 CisgICAgfQorfQorCisvKiBBZGQgYSBzaW5nbGUgaW5zbiB0byB0aGUgaW5zdHJ1Y3Rpb24g cXVldWUuICAqLworCitzdGF0aWMgdm9pZCB0Y2dfb3V0X2luc24oVENHQ29udGV4dCAqcywg ZW51bSBpYTY0X2luc25fdHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQ2NF90IGluc24sIHVpbnQ2NF90IG91dCwgdWludDY0X3QgaW4pCit7CisgICAgVENHQ29u dGV4dEV4dHJhICplID0gcy0+ZXh0cmE7CisgICAgc3RydWN0IGlhNjRfaW5zbl9pbmZvICpp OworICAgIHVpbnQ2NF90IHdyaXR0ZW47CisgICAgaW50IG4gPSBlLT5uX3F1ZXVlOworICAg IGludCBxcDsKKworICAgIC8qIERvbid0IGNvbnNpZGVyIHJlYWRzIGFuZCB3cml0ZXMgdG8g UjAuICAqLworICAgIG91dCAmPSB+MTsKKyAgICBpbiAmPSB+MTsKKworICAgIC8qIEV4dHJh Y3QgdGhlIHByZWRpY2F0ZSBmb3IgdGhlIGluc24uICAqLworICAgIHFwID0gaW5zbiAmIDB4 M2Y7CisKKyAgICAvKiBXZSBvbmx5IHJlYWxseSB1c2UgcDYgYW5kIHA3LCBidXQgZm9yIHNp bXBsaWNpdHksIG1ha2UgYWxsIGV2ZW4KKyAgICAgICBwcmVkaWNhdGVzIGNvbmZsaWN0LCBh bmQgYWxsIG9kZCBwcmVkaWNhdGVzIGNvbmZsaWN0LiAgSWYgbm8KKyAgICAgICBwcmVkaWNh dGUgaXMgdXNlZCwgY29uZmxpY3Qgd2l0aCBlaXRoZXIuICAqLworICAgIGlmIChxcCAmIDEp IHsKKyAgICAgICAgd3JpdHRlbiA9IGUtPndyaXR0ZW5bMV07CisgICAgfSBlbHNlIGlmIChx cCkgeworICAgICAgICB3cml0dGVuID0gZS0+d3JpdHRlblswXTsKKyAgICB9IGVsc2Ugewor ICAgICAgICB3cml0dGVuID0gZS0+d3JpdHRlblswXSB8IGUtPndyaXR0ZW5bMV07CisgICAg fQorCisgICAgLyogSWYgd2UgcmVhZCBmcm9tIG9yIHdyaXRlIHRvIHNvbWV0aGluZyB0aGF0 IGhhcyBhbHJlYWR5IGJlZW4KKyAgICAgICB3cml0dGVuIHNpbmNlIHRoZSBsYXN0IHN0b3Ag Yml0LCBhZGQgYSBuZXcgc3RvcCBiaXQuICAqLworICAgIGlmICh3cml0dGVuICYgKGluIHwg b3V0KSkgeworICAgICAgICBlLT5xdWV1ZVtuIC0gMV0uc3RvcCA9IDE7CisgICAgICAgIHdy aXR0ZW4gPSBlLT53cml0dGVuWzBdID0gZS0+d3JpdHRlblsxXSA9IDA7CisgICAgfQorCisg ICAgLyogSWYgdGhlIHF1ZXVlIGlzIHRvdGFsbHkgZnVsbCwgZW1pdCBvbmUgYnVuZGxlIHRv IG1ha2Ugcm9vbS4gICovCisgICAgaWYgKG4gPT0gQVJSQVlfU0laRShlLT5xdWV1ZSkpIHsK KyAgICAgICAgaW50IGosIGkgPSB0Y2dfZW1pdF9vbmVfYnVuZGxlKHMsIDAsIG4pOworICAg ICAgICBmb3IgKGogPSBpOyBqIDwgbjsgKytqKQorICAgICAgICAgICAgZS0+cXVldWVbaiAt IGldID0gZS0+cXVldWVbal07CisgICAgICAgIG4gLT0gaTsKKyAgICAgfQorCisgICAgLyog QWRkIHRoZSBuZXcgaW5zdHJ1Y3Rpb24uICAqLworICAgIGkgPSAmZS0+cXVldWVbbl07Cisg ICAgaS0+dHlwZSA9IHR5cGU7CisgICAgaS0+c3RvcCA9IDA7CisgICAgaS0+aW5zbiA9IGlu c247CisgICAgZS0+bl9xdWV1ZSA9IG4gKyAxOworCisgICAgLyogVXBkYXRlIHRoZSBjdW11 bGF0aXZlIHdyaXR0ZW4gc3RhdGUuICAqLworICAgIGlmIChxcCAmIDEpIHsKKyAgICAgICAg ZS0+d3JpdHRlblsxXSA9IHdyaXR0ZW4gfCBvdXQ7CisgICAgfSBlbHNlIGlmIChxcCkgewor ICAgICAgICBlLT53cml0dGVuWzBdID0gd3JpdHRlbiB8IG91dDsKKyAgICB9IGVsc2Ugewor ICAgICAgICBlLT53cml0dGVuWzBdIHw9IG91dDsKKyAgICAgICAgZS0+d3JpdHRlblsxXSB8 PSBvdXQ7CisgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHVpbnQ2NF90IHRjZ19vcGNfYTUo aW50IHFwLCB1aW50NjRfdCBvcGMsIGludCByMSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50NjRfdCBpbW0sIGludCByMykKK3N0YXRpYyB2b2lkIHRjZ19vcGNf YTEoVENHQ29udGV4dCAqcywgaW50IHFwLCB1aW50NjRfdCBvcGMsCisgICAgICAgICAgICAg ICAgICAgICAgIGludCByMSwgaW50IHIyLCBpbnQgcjMpCiB7Ci0gICAgcmV0dXJuIG9wYwot ICAgICAgICAgICB8ICgoaW1tICYgMHgyMDAwMDApIDw8IDE1KSAvKiBzICovCi0gICAgICAg ICAgIHwgKChpbW0gJiAweDFmMDAwMCkgPDwgIDYpIC8qIGltbTVjICovCi0gICAgICAgICAg IHwgKChpbW0gJiAweDAwZmY4MCkgPDwgMjApIC8qIGltbTlkICovCi0gICAgICAgICAgIHwg KChpbW0gJiAweDAwMDA3ZikgPDwgMTMpIC8qIGltbTdiICovCi0gICAgICAgICAgIHwgKChy MyAmIDB4MDMpIDw8IDIwKQotICAgICAgICAgICB8ICgocjEgJiAweDdmKSA8PCA2KQotICAg ICAgICAgICB8IChxcCAmIDB4M2YpOworICAgIG9wYyB8PSAoKHIzICYgMHg3ZikgPDwgMjAp CisgICAgICAgIHwgKChyMiAmIDB4N2YpIDw8IDEzKQorICAgICAgICB8ICgocjEgJiAweDdm KSA8PCA2KQorICAgICAgICB8IChxcCAmIDB4M2YpOworICAgIHRjZ19vdXRfaW5zbihzLCBJ TlNOX1RZUEVfQSwgb3BjLCAxdWxsIDw8IHIxLCAxdWxsIDw8IHIyIHwgMXVsbCA8PCByMyk7 CiB9CiAKLXN0YXRpYyBpbmxpbmUgdWludDY0X3QgdGNnX29wY19hNihpbnQgcXAsIHVpbnQ2 NF90IG9wYywgaW50IHAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBwMiwgaW50IHIyLCBpbnQgcjMpCitzdGF0aWMgdm9pZCB0Y2dfb3BjX2EyKFRDR0NvbnRl eHQgKnMsIGludCBxcCwgdWludDY0X3Qgb3BjLAorICAgICAgICAgICAgICAgICAgICAgICBp bnQgcjEsIGludCByMiwgaW50IGNvdW50LCBpbnQgcjMpCiB7Ci0gICAgcmV0dXJuIG9wYwot ICAgICAgICAgICB8ICgocDIgJiAweDNmKSA8PCAyNykKLSAgICAgICAgICAgfCAoKHIzICYg MHg3ZikgPDwgMjApCi0gICAgICAgICAgIHwgKChyMiAmIDB4N2YpIDw8IDEzKQotICAgICAg ICAgICB8ICgocDEgJiAweDNmKSA8PCA2KQotICAgICAgICAgICB8IChxcCAmIDB4M2YpOwor ICAgIG9wYyB8PSAoKGNvdW50ICYgMykgPDwgMjcpCisgICAgICAgIHwgKChyMyAmIDB4N2Yp IDw8IDIwKQorICAgICAgICB8ICgocjIgJiAweDdmKSA8PCAxMykKKyAgICAgICAgfCAoKHIx ICYgMHg3ZikgPDwgNikKKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2lu c24ocywgSU5TTl9UWVBFX0EsIG9wYywgMXVsbCA8PCByMSwgMXVsbCA8PCByMiB8IDF1bGwg PDwgcjMpOwogfQogCi1zdGF0aWMgaW5saW5lIHVpbnQ2NF90IHRjZ19vcGNfYjEoaW50IHFw LCB1aW50NjRfdCBvcGMsIHVpbnQ2NF90IGltbSkKK3N0YXRpYyB2b2lkIHRjZ19vcGNfYTMo VENHQ29udGV4dCAqcywgaW50IHFwLCB1aW50NjRfdCBvcGMsCisgICAgICAgICAgICAgICAg ICAgICAgIGludCByMSwgdWludDY0X3QgaW1tLCBpbnQgcjMpCiB7Ci0gICAgcmV0dXJuIG9w YwotICAgICAgICAgICB8ICgoaW1tICYgMHgxMDAwMDApIDw8IDE2KSAvKiBzICovCi0gICAg ICAgICAgIHwgKChpbW0gJiAweDBmZmZmZikgPDwgMTMpIC8qIGltbTIwYiAqLwotICAgICAg ICAgICB8IChxcCAmIDB4M2YpOworICAgIG9wYyB8PSAoKGltbSAmIDB4ODApIDw8IDI5KSAv KiBzICovCisgICAgICAgIHwgKChpbW0gJiAweDdmKSA8PCAxMykgLyogaW1tN2IgKi8KKyAg ICAgICAgfCAoKHIzICYgMHg3ZikgPDwgMjApCisgICAgICAgIHwgKChyMSAmIDB4N2YpIDw8 IDYpCisgICAgICAgIHwgKHFwICYgMHgzZik7CisgICAgdGNnX291dF9pbnNuKHMsIElOU05f VFlQRV9BLCBvcGMsIDF1bGwgPDwgcjEsIDF1bGwgPDwgcjMpOwogfQogCi1zdGF0aWMgaW5s aW5lIHVpbnQ2NF90IHRjZ19vcGNfYjQoaW50IHFwLCB1aW50NjRfdCBvcGMsIGludCBiMikK K3N0YXRpYyB2b2lkIHRjZ19vcGNfYTQoVENHQ29udGV4dCAqcywgaW50IHFwLCB1aW50NjRf dCBvcGMsCisgICAgICAgICAgICAgICAgICAgICAgIGludCByMSwgdWludDY0X3QgaW1tLCBp bnQgcjMpCiB7Ci0gICAgcmV0dXJuIG9wYwotICAgICAgICAgICB8ICgoYjIgJiAweDcpIDw8 IDEzKQotICAgICAgICAgICB8IChxcCAmIDB4M2YpOworICAgIG9wYyB8PSAoKGltbSAmIDB4 MjAwMCkgPDwgMjMpIC8qIHMgKi8KKyAgICAgICAgfCAoKGltbSAmIDB4MWY4MCkgPDwgMjAp IC8qIGltbTZkICovCisgICAgICAgIHwgKChpbW0gJiAweDAwN2YpIDw8IDEzKSAvKiBpbW03 YiAqLworICAgICAgICB8ICgocjMgJiAweDdmKSA8PCAyMCkKKyAgICAgICAgfCAoKHIxICYg MHg3ZikgPDwgNikKKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2luc24o cywgSU5TTl9UWVBFX0EsIG9wYywgMXVsbCA8PCByMSwgMXVsbCA8PCByMyk7CiB9CiAKLXN0 YXRpYyBpbmxpbmUgdWludDY0X3QgdGNnX29wY19iNShpbnQgcXAsIHVpbnQ2NF90IG9wYywg aW50IGIxLCBpbnQgYjIpCitzdGF0aWMgdm9pZCB0Y2dfb3BjX2E1KFRDR0NvbnRleHQgKnMs IGludCBxcCwgdWludDY0X3Qgb3BjLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgcjEs IHVpbnQ2NF90IGltbSwgaW50IHIzKQogewotICAgIHJldHVybiBvcGMKLSAgICAgICAgICAg fCAoKGIyICYgMHg3KSA8PCAxMykKLSAgICAgICAgICAgfCAoKGIxICYgMHg3KSA8PCA2KQot ICAgICAgICAgICB8IChxcCAmIDB4M2YpOworICAgIG9wYyB8PSAoKGltbSAmIDB4MjAwMDAw KSA8PCAxNSkgLyogcyAqLworICAgICAgICB8ICgoaW1tICYgMHgxZjAwMDApIDw8ICA2KSAv KiBpbW01YyAqLworICAgICAgICB8ICgoaW1tICYgMHgwMGZmODApIDw8IDIwKSAvKiBpbW05 ZCAqLworICAgICAgICB8ICgoaW1tICYgMHgwMDAwN2YpIDw8IDEzKSAvKiBpbW03YiAqLwor ICAgICAgICB8ICgocjMgJiAweDAzKSA8PCAyMCkKKyAgICAgICAgfCAoKHIxICYgMHg3Zikg PDwgNikKKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2luc24ocywgSU5T Tl9UWVBFX0EsIG9wYywgMXVsbCA8PCByMSwgMXVsbCA8PCByMyk7CiB9CiAKK3N0YXRpYyB2 b2lkIHRjZ19vcGNfYTYoVENHQ29udGV4dCAqcywgaW50IHFwLCB1aW50NjRfdCBvcGMsCisg ICAgICAgICAgICAgICAgICAgICAgIGludCBwMSwgaW50IHAyLCBpbnQgcjIsIGludCByMykK K3sKKyAgICBvcGMgfD0gKChwMiAmIDB4M2YpIDw8IDI3KQorICAgICAgICB8ICgocjMgJiAw eDdmKSA8PCAyMCkKKyAgICAgICAgfCAoKHIyICYgMHg3ZikgPDwgMTMpCisgICAgICAgIHwg KChwMSAmIDB4M2YpIDw8IDYpCisgICAgICAgIHwgKHFwICYgMHgzZik7CisgICAgdGNnX291 dF9pbnNuKHMsIElOU05fVFlQRV9BLCBvcGMsIDAsIDF1bGwgPDwgcjIgfCAxdWxsIDw8IHIz KTsKK30KIAotc3RhdGljIGlubGluZSB1aW50NjRfdCB0Y2dfb3BjX2I5KGludCBxcCwgdWlu dDY0X3Qgb3BjLCB1aW50NjRfdCBpbW0pCitzdGF0aWMgdm9pZCB0Y2dfb3BjX2IxKFRDR0Nv bnRleHQgKnMsIGludCBxcCwgdWludDY0X3Qgb3BjLCB1aW50NjRfdCBpbW0pCiB7Ci0gICAg cmV0dXJuIG9wYwotICAgICAgICAgICB8ICgoaW1tICYgMHgxMDAwMDApIDw8IDE2KSAvKiBp ICovCi0gICAgICAgICAgIHwgKChpbW0gJiAweDBmZmZmZikgPDwgNikgIC8qIGltbTIwYSAq LwotICAgICAgICAgICB8IChxcCAmIDB4M2YpOworICAgIG9wYyB8PSAoKGltbSAmIDB4MTAw MDAwKSA8PCAxNikgLyogcyAqLworICAgICAgICB8ICgoaW1tICYgMHgwZmZmZmYpIDw8IDEz KSAvKiBpbW0yMGIgKi8KKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2lu c24ocywgSU5TTl9UWVBFX0IsIG9wYywgMCwgMCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdWlu dDY0X3QgdGNnX29wY19mMShpbnQgcXAsIHVpbnQ2NF90IG9wYywgaW50IGYxLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmMywgaW50IGY0LCBpbnQgZjIpCitz dGF0aWMgdm9pZCB0Y2dfb3BjX2I0KFRDR0NvbnRleHQgKnMsIGludCBxcCwgdWludDY0X3Qg b3BjLCBpbnQgYjIpCiB7Ci0gICAgcmV0dXJuIG9wYwotICAgICAgICAgICB8ICgoZjQgJiAw eDdmKSA8PCAyNykKLSAgICAgICAgICAgfCAoKGYzICYgMHg3ZikgPDwgMjApCi0gICAgICAg ICAgIHwgKChmMiAmIDB4N2YpIDw8IDEzKQotICAgICAgICAgICB8ICgoZjEgJiAweDdmKSA8 PCA2KQotICAgICAgICAgICB8IChxcCAmIDB4M2YpOworICAgIG9wYyB8PSAoKGIyICYgMHg3 KSA8PCAxMykKKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2luc24ocywg SU5TTl9UWVBFX0IsIG9wYywgMCwgMCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdWludDY0X3Qg dGNnX29wY19mMihpbnQgcXAsIHVpbnQ2NF90IG9wYywgaW50IGYxLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBmMywgaW50IGY0LCBpbnQgZjIpCitzdGF0aWMg dm9pZCB0Y2dfb3BjX2I1KFRDR0NvbnRleHQgKnMsIGludCBxcCwgdWludDY0X3Qgb3BjLCBp bnQgYjEsIGludCBiMikKIHsKLSAgICByZXR1cm4gb3BjCi0gICAgICAgICAgIHwgKChmNCAm IDB4N2YpIDw8IDI3KQotICAgICAgICAgICB8ICgoZjMgJiAweDdmKSA8PCAyMCkKLSAgICAg ICAgICAgfCAoKGYyICYgMHg3ZikgPDwgMTMpCi0gICAgICAgICAgIHwgKChmMSAmIDB4N2Yp IDw8IDYpCi0gICAgICAgICAgIHwgKHFwICYgMHgzZik7CisgICAgb3BjIHw9ICgoYjIgJiAw eDcpIDw8IDEzKQorICAgICAgICB8ICgoYjEgJiAweDcpIDw8IDYpCisgICAgICAgIHwgKHFw ICYgMHgzZik7CisgICAgdGNnX291dF9pbnNuKHMsIElOU05fVFlQRV9CLCBvcGMsIDAsIDAp OwogfQogCi1zdGF0aWMgaW5saW5lIHVpbnQ2NF90IHRjZ19vcGNfZjYoaW50IHFwLCB1aW50 NjRfdCBvcGMsIGludCBmMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgcDIsIGludCBmMiwgaW50IGYzKQorc3RhdGljIGlubGluZSB2b2lkCit0Y2dfb3BjX2I5 KFRDR0NvbnRleHQgKnMsIGludCBxcCwgdWludDY0X3Qgb3BjLCB1aW50NjRfdCBpbW0pCiB7 Ci0gICAgcmV0dXJuIG9wYwotICAgICAgICAgICB8ICgocDIgJiAweDNmKSA8PCAyNykKLSAg ICAgICAgICAgfCAoKGYzICYgMHg3ZikgPDwgMjApCi0gICAgICAgICAgIHwgKChmMiAmIDB4 N2YpIDw8IDEzKQotICAgICAgICAgICB8ICgoZjEgJiAweDdmKSA8PCA2KQotICAgICAgICAg ICB8IChxcCAmIDB4M2YpOworICAgIG9wYyB8PSAoKGltbSAmIDB4MTAwMDAwKSA8PCAxNikg LyogaSAqLworICAgICAgICB8ICgoaW1tICYgMHgwZmZmZmYpIDw8IDYpICAvKiBpbW0yMGEg Ki8KKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2luc24ocywgSU5TTl9U WVBFX0IsIG9wYywgMCwgMCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdWludDY0X3QgdGNnX29w Y19mMTAoaW50IHFwLCB1aW50NjRfdCBvcGMsIGludCBmMSwgaW50IGYyKQorc3RhdGljIGlu bGluZSB2b2lkCit0Y2dfb3BjX2YxKFRDR0NvbnRleHQgKnMsIGludCBxcCwgdWludDY0X3Qg b3BjLAorICAgICAgICAgICBpbnQgZjEsIGludCBmMywgaW50IGY0LCBpbnQgZjIpCiB7Ci0g ICAgcmV0dXJuIG9wYwotICAgICAgICAgICB8ICgoZjIgJiAweDdmKSA8PCAxMykKLSAgICAg ICAgICAgfCAoKGYxICYgMHg3ZikgPDwgNikKLSAgICAgICAgICAgfCAocXAgJiAweDNmKTsK KyAgICBvcGMgfD0gKChmNCAmIDB4N2YpIDw8IDI3KQorICAgICAgICB8ICgoZjMgJiAweDdm KSA8PCAyMCkKKyAgICAgICAgfCAoKGYyICYgMHg3ZikgPDwgMTMpCisgICAgICAgIHwgKChm MSAmIDB4N2YpIDw8IDYpCisgICAgICAgIHwgKHFwICYgMHgzZik7CisgICAgdGNnX291dF9p bnNuKHMsIElOU05fVFlQRV9GLCBvcGMsIDAsIDApOwogfQogCi1zdGF0aWMgaW5saW5lIHVp bnQ2NF90IHRjZ19vcGNfZjExKGludCBxcCwgdWludDY0X3Qgb3BjLCBpbnQgZjEsIGludCBm MikKK3N0YXRpYyB2b2lkIHRjZ19vcGNfZjIoVENHQ29udGV4dCAqcywgaW50IHFwLCB1aW50 NjRfdCBvcGMsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBmMSwgaW50IGYzLCBpbnQg ZjQsIGludCBmMikKIHsKLSAgICByZXR1cm4gb3BjCi0gICAgICAgICAgIHwgKChmMiAmIDB4 N2YpIDw8IDEzKQotICAgICAgICAgICB8ICgoZjEgJiAweDdmKSA8PCA2KQotICAgICAgICAg ICB8IChxcCAmIDB4M2YpOworICAgIG9wYyB8PSAoKGY0ICYgMHg3ZikgPDwgMjcpCisgICAg ICAgIHwgKChmMyAmIDB4N2YpIDw8IDIwKQorICAgICAgICB8ICgoZjIgJiAweDdmKSA8PCAx MykKKyAgICAgICAgfCAoKGYxICYgMHg3ZikgPDwgNikKKyAgICAgICAgfCAocXAgJiAweDNm KTsKKyAgICB0Y2dfb3V0X2luc24ocywgSU5TTl9UWVBFX0YsIG9wYywgMCwgMCk7CiB9CiAK LXN0YXRpYyBpbmxpbmUgdWludDY0X3QgdGNnX29wY19mMTYoaW50IHFwLCB1aW50NjRfdCBv cGMsIHVpbnQ2NF90IGltbSkKK3N0YXRpYyBpbmxpbmUgdm9pZAordGNnX29wY19mNihUQ0dD b250ZXh0ICpzLCBpbnQgcXAsIHVpbnQ2NF90IG9wYywKKyAgICAgICAgICAgaW50IGYxLCBp bnQgcDIsIGludCBmMiwgaW50IGYzKQogewotICAgIHJldHVybiBvcGMKLSAgICAgICAgICAg fCAoKGltbSAmIDB4MTAwMDAwKSA8PCAxNikgLyogaSAqLwotICAgICAgICAgICB8ICgoaW1t ICYgMHgwZmZmZmYpIDw8IDYpICAvKiBpbW0yMGEgKi8KLSAgICAgICAgICAgfCAocXAgJiAw eDNmKTsKKyAgICBvcGMgfD0gKChwMiAmIDB4M2YpIDw8IDI3KQorICAgICAgICB8ICgoZjMg JiAweDdmKSA8PCAyMCkKKyAgICAgICAgfCAoKGYyICYgMHg3ZikgPDwgMTMpCisgICAgICAg IHwgKChmMSAmIDB4N2YpIDw8IDYpCisgICAgICAgIHwgKHFwICYgMHgzZik7CisgICAgdGNn X291dF9pbnNuKHMsIElOU05fVFlQRV9GLCBvcGMsIDAsIDApOwogfQogCi1zdGF0aWMgaW5s aW5lIHVpbnQ2NF90IHRjZ19vcGNfaTIoaW50IHFwLCB1aW50NjRfdCBvcGMsIGludCByMSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcjIsIGludCByMykKK3N0 YXRpYyBpbmxpbmUgdm9pZAordGNnX29wY19mMTAoVENHQ29udGV4dCAqcywgaW50IHFwLCB1 aW50NjRfdCBvcGMsIGludCBmMSwgaW50IGYyKQogewotICAgIHJldHVybiBvcGMKLSAgICAg ICAgICAgfCAoKHIzICYgMHg3ZikgPDwgMjApCi0gICAgICAgICAgIHwgKChyMiAmIDB4N2Yp IDw8IDEzKQotICAgICAgICAgICB8ICgocjEgJiAweDdmKSA8PCA2KQotICAgICAgICAgICB8 IChxcCAmIDB4M2YpOworICAgIG9wYyB8PSAoKGYyICYgMHg3ZikgPDwgMTMpCisgICAgICAg IHwgKChmMSAmIDB4N2YpIDw8IDYpCisgICAgICAgIHwgKHFwICYgMHgzZik7CisgICAgdGNn X291dF9pbnNuKHMsIElOU05fVFlQRV9GLCBvcGMsIDAsIDApOwogfQogCi1zdGF0aWMgaW5s aW5lIHVpbnQ2NF90IHRjZ19vcGNfaTMoaW50IHFwLCB1aW50NjRfdCBvcGMsIGludCByMSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcjIsIGludCBtYnR5cGUp CitzdGF0aWMgaW5saW5lIHZvaWQKK3RjZ19vcGNfZjExKFRDR0NvbnRleHQgKnMsIGludCBx cCwgdWludDY0X3Qgb3BjLCBpbnQgZjEsIGludCBmMikKIHsKLSAgICByZXR1cm4gb3BjCi0g ICAgICAgICAgIHwgKChtYnR5cGUgJiAweDBmKSA8PCAyMCkKLSAgICAgICAgICAgfCAoKHIy ICYgMHg3ZikgPDwgMTMpCi0gICAgICAgICAgIHwgKChyMSAmIDB4N2YpIDw8IDYpCi0gICAg ICAgICAgIHwgKHFwICYgMHgzZik7CisgICAgb3BjIHw9ICgoZjIgJiAweDdmKSA8PCAxMykK KyAgICAgICAgfCAoKGYxICYgMHg3ZikgPDwgNikKKyAgICAgICAgfCAocXAgJiAweDNmKTsK KyAgICB0Y2dfb3V0X2luc24ocywgSU5TTl9UWVBFX0YsIG9wYywgMCwgMCk7CiB9CiAKLXN0 YXRpYyBpbmxpbmUgdWludDY0X3QgdGNnX29wY19pNShpbnQgcXAsIHVpbnQ2NF90IG9wYywg aW50IHIxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByMywgaW50 IHIyKQorc3RhdGljIGlubGluZSB2b2lkCit0Y2dfb3BjX2YxNihUQ0dDb250ZXh0ICpzLCBp bnQgcXAsIHVpbnQ2NF90IG9wYywgdWludDY0X3QgaW1tKQogewotICAgIHJldHVybiBvcGMK LSAgICAgICAgICAgfCAoKHIzICYgMHg3ZikgPDwgMjApCi0gICAgICAgICAgIHwgKChyMiAm IDB4N2YpIDw8IDEzKQotICAgICAgICAgICB8ICgocjEgJiAweDdmKSA8PCA2KQotICAgICAg ICAgICB8IChxcCAmIDB4M2YpOworICAgIG9wYyB8PSAoKGltbSAmIDB4MTAwMDAwKSA8PCAx NikgLyogaSAqLworICAgICAgICB8ICgoaW1tICYgMHgwZmZmZmYpIDw8IDYpICAvKiBpbW0y MGEgKi8KKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2luc24ocywgSU5T Tl9UWVBFX0YsIG9wYywgMCwgMCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdWludDY0X3QgdGNn X29wY19pNyhpbnQgcXAsIHVpbnQ2NF90IG9wYywgaW50IHIxLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCByMiwgaW50IHIzKQorc3RhdGljIHZvaWQgdGNnX29w Y19pMihUQ0dDb250ZXh0ICpzLCBpbnQgcXAsIHVpbnQ2NF90IG9wYywKKyAgICAgICAgICAg ICAgICAgICAgICAgaW50IHIxLCBpbnQgcjIsIGludCByMykKIHsKLSAgICByZXR1cm4gb3Bj Ci0gICAgICAgICAgIHwgKChyMyAmIDB4N2YpIDw8IDIwKQotICAgICAgICAgICB8ICgocjIg JiAweDdmKSA8PCAxMykKLSAgICAgICAgICAgfCAoKHIxICYgMHg3ZikgPDwgNikKLSAgICAg ICAgICAgfCAocXAgJiAweDNmKTsKKyAgICBvcGMgfD0gKChyMyAmIDB4N2YpIDw8IDIwKQor ICAgICAgICB8ICgocjIgJiAweDdmKSA8PCAxMykKKyAgICAgICAgfCAoKHIxICYgMHg3Zikg PDwgNikKKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2luc24ocywgSU5T Tl9UWVBFX0ksIG9wYywgMXVsbCA8PCByMSwgMXVsbCA8PCByMiB8IDF1bGwgPDwgcjMpOwog fQogCi1zdGF0aWMgaW5saW5lIHVpbnQ2NF90IHRjZ19vcGNfaTEwKGludCBxcCwgdWludDY0 X3Qgb3BjLCBpbnQgcjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCByMiwgaW50IHIzLCB1aW50NjRfdCBjb3VudCkKK3N0YXRpYyB2b2lkIHRjZ19vcGNfaTMo VENHQ29udGV4dCAqcywgaW50IHFwLCB1aW50NjRfdCBvcGMsCisgICAgICAgICAgICAgICAg ICAgICAgIGludCByMSwgaW50IHIyLCBpbnQgbWJ0eXBlKQogewotICAgIHJldHVybiBvcGMK LSAgICAgICAgICAgfCAoKGNvdW50ICYgMHgzZikgPDwgMjcpCi0gICAgICAgICAgIHwgKChy MyAmIDB4N2YpIDw8IDIwKQotICAgICAgICAgICB8ICgocjIgJiAweDdmKSA8PCAxMykKLSAg ICAgICAgICAgfCAoKHIxICYgMHg3ZikgPDwgNikKLSAgICAgICAgICAgfCAocXAgJiAweDNm KTsKKyAgICBvcGMgfD0gKChtYnR5cGUgJiAweDBmKSA8PCAyMCkKKyAgICAgICAgfCAoKHIy ICYgMHg3ZikgPDwgMTMpCisgICAgICAgIHwgKChyMSAmIDB4N2YpIDw8IDYpCisgICAgICAg IHwgKHFwICYgMHgzZik7CisgICAgdGNnX291dF9pbnNuKHMsIElOU05fVFlQRV9JLCBvcGMs IDF1bGwgPDwgcjEsIDF1bGwgPDwgcjIpOwogfQogCi1zdGF0aWMgaW5saW5lIHVpbnQ2NF90 IHRjZ19vcGNfaTExKGludCBxcCwgdWludDY0X3Qgb3BjLCBpbnQgcjEsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCByMywgdWludDY0X3QgcG9zLCB1aW50NjRf dCBsZW4pCitzdGF0aWMgdm9pZCB0Y2dfb3BjX2k1KFRDR0NvbnRleHQgKnMsIGludCBxcCwg dWludDY0X3Qgb3BjLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgcjEsIGludCByMywg aW50IHIyKQogewotICAgIHJldHVybiBvcGMKLSAgICAgICAgICAgfCAoKGxlbiAmIDB4M2Yp IDw8IDI3KQotICAgICAgICAgICB8ICgocjMgJiAweDdmKSA8PCAyMCkKLSAgICAgICAgICAg fCAoKHBvcyAmIDB4M2YpIDw8IDE0KQotICAgICAgICAgICB8ICgocjEgJiAweDdmKSA8PCA2 KQotICAgICAgICAgICB8IChxcCAmIDB4M2YpOworICAgIG9wYyB8PSAoKHIzICYgMHg3Zikg PDwgMjApCisgICAgICAgIHwgKChyMiAmIDB4N2YpIDw8IDEzKQorICAgICAgICB8ICgocjEg JiAweDdmKSA8PCA2KQorICAgICAgICB8IChxcCAmIDB4M2YpOworICAgIHRjZ19vdXRfaW5z bihzLCBJTlNOX1RZUEVfSSwgb3BjLCAxdWxsIDw8IHIxLCAxdWxsIDw8IHIyIHwgMXVsbCA8 PCByMyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdWludDY0X3QgdGNnX29wY19pMTIoaW50IHFw LCB1aW50NjRfdCBvcGMsIGludCByMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IHIyLCB1aW50NjRfdCBwb3MsIHVpbnQ2NF90IGxlbikKK3N0YXRpYyB2b2lk IHRjZ19vcGNfaTcoVENHQ29udGV4dCAqcywgaW50IHFwLCB1aW50NjRfdCBvcGMsCisgICAg ICAgICAgICAgICAgICAgICAgIGludCByMSwgaW50IHIyLCBpbnQgcjMpCiB7Ci0gICAgcmV0 dXJuIG9wYwotICAgICAgICAgICB8ICgobGVuICYgMHgzZikgPDwgMjcpCi0gICAgICAgICAg IHwgKChwb3MgJiAweDNmKSA8PCAyMCkKLSAgICAgICAgICAgfCAoKHIyICYgMHg3ZikgPDwg MTMpCi0gICAgICAgICAgIHwgKChyMSAmIDB4N2YpIDw8IDYpCi0gICAgICAgICAgIHwgKHFw ICYgMHgzZik7CisgICAgb3BjIHw9ICgocjMgJiAweDdmKSA8PCAyMCkKKyAgICAgICAgfCAo KHIyICYgMHg3ZikgPDwgMTMpCisgICAgICAgIHwgKChyMSAmIDB4N2YpIDw8IDYpCisgICAg ICAgIHwgKHFwICYgMHgzZik7CisgICAgdGNnX291dF9pbnNuKHMsIElOU05fVFlQRV9JLCBv cGMsIDF1bGwgPDwgcjEsIDF1bGwgPDwgcjIgfCAxdWxsIDw8IHIzKTsKIH0KIAotc3RhdGlj IGlubGluZSB1aW50NjRfdCB0Y2dfb3BjX2kxOChpbnQgcXAsIHVpbnQ2NF90IG9wYywgdWlu dDY0X3QgaW1tKQorc3RhdGljIHZvaWQgdGNnX29wY19pMTAoVENHQ29udGV4dCAqcywgaW50 IHFwLCB1aW50NjRfdCBvcGMsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcjEsIGlu dCByMiwgaW50IHIzLCB1aW50NjRfdCBjb3VudCkKIHsKLSAgICByZXR1cm4gb3BjCi0gICAg ICAgICAgIHwgKChpbW0gJiAweDEwMDAwMCkgPDwgMTYpIC8qIGkgKi8KLSAgICAgICAgICAg fCAoKGltbSAmIDB4MGZmZmZmKSA8PCA2KSAgLyogaW1tMjBhICovCi0gICAgICAgICAgIHwg KHFwICYgMHgzZik7CisgICAgb3BjIHw9ICgoY291bnQgJiAweDNmKSA8PCAyNykKKyAgICAg ICAgfCAoKHIzICYgMHg3ZikgPDwgMjApCisgICAgICAgIHwgKChyMiAmIDB4N2YpIDw8IDEz KQorICAgICAgICB8ICgocjEgJiAweDdmKSA8PCA2KQorICAgICAgICB8IChxcCAmIDB4M2Yp OworICAgIHRjZ19vdXRfaW5zbihzLCBJTlNOX1RZUEVfSSwgb3BjLCAxdWxsIDw8IHIxLCAx dWxsIDw8IHIyIHwgMXVsbCA8PCByMyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdWludDY0X3Qg dGNnX29wY19pMjEoaW50IHFwLCB1aW50NjRfdCBvcGMsIGludCBiMSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHIyLCB1aW50NjRfdCBpbW0pCitzdGF0aWMg dm9pZCB0Y2dfb3BjX2kxMShUQ0dDb250ZXh0ICpzLCBpbnQgcXAsIHVpbnQ2NF90IG9wYywK KyAgICAgICAgICAgICAgICAgICAgICAgIGludCByMSwgaW50IHIzLCB1aW50NjRfdCBwb3Ms IHVpbnQ2NF90IGxlbikKIHsKLSAgICByZXR1cm4gb3BjCi0gICAgICAgICAgIHwgKChpbW0g JiAweDFmZikgPDwgMjQpCi0gICAgICAgICAgIHwgKChyMiAmIDB4N2YpIDw8IDEzKQotICAg ICAgICAgICB8ICgoYjEgJiAweDcpIDw8IDYpCi0gICAgICAgICAgIHwgKHFwICYgMHgzZik7 CisgICAgb3BjIHw9ICgobGVuICYgMHgzZikgPDwgMjcpCisgICAgICAgIHwgKChyMyAmIDB4 N2YpIDw8IDIwKQorICAgICAgICB8ICgocG9zICYgMHgzZikgPDwgMTQpCisgICAgICAgIHwg KChyMSAmIDB4N2YpIDw8IDYpCisgICAgICAgIHwgKHFwICYgMHgzZik7CisgICAgdGNnX291 dF9pbnNuKHMsIElOU05fVFlQRV9JLCBvcGMsIDF1bGwgPDwgcjEsIDF1bGwgPDwgcjMpOwog fQogCi1zdGF0aWMgaW5saW5lIHVpbnQ2NF90IHRjZ19vcGNfaTIyKGludCBxcCwgdWludDY0 X3Qgb3BjLCBpbnQgcjEsIGludCBiMikKK3N0YXRpYyB2b2lkIHRjZ19vcGNfaTEyKFRDR0Nv bnRleHQgKnMsIGludCBxcCwgdWludDY0X3Qgb3BjLAorICAgICAgICAgICAgICAgICAgICAg ICAgaW50IHIxLCBpbnQgcjIsIHVpbnQ2NF90IHBvcywgdWludDY0X3QgbGVuKQogewotICAg IHJldHVybiBvcGMKLSAgICAgICAgICAgfCAoKGIyICYgMHg3KSA8PCAxMykKLSAgICAgICAg ICAgfCAoKHIxICYgMHg3ZikgPDwgNikKLSAgICAgICAgICAgfCAocXAgJiAweDNmKTsKKyAg ICBvcGMgfD0gKChsZW4gJiAweDNmKSA8PCAyNykKKyAgICAgICAgfCAoKHBvcyAmIDB4M2Yp IDw8IDIwKQorICAgICAgICB8ICgocjIgJiAweDdmKSA8PCAxMykKKyAgICAgICAgfCAoKHIx ICYgMHg3ZikgPDwgNikKKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2lu c24ocywgSU5TTl9UWVBFX0ksIG9wYywgMXVsbCA8PCByMSwgMXVsbCA8PCByMik7CiB9CiAK LXN0YXRpYyBpbmxpbmUgdWludDY0X3QgdGNnX29wY19pMjYoaW50IHFwLCB1aW50NjRfdCBv cGMsIGludCBhcjMsIGludCByMikKK3N0YXRpYyB2b2lkIHRjZ19vcGNfaTEzKFRDR0NvbnRl eHQgKnMsIGludCBxcCwgdWludDY0X3Qgb3BjLAorICAgICAgICAgICAgICAgICAgICAgICAg aW50IHIxLCB1aW50NjRfdCBpbW04LCB1aW50NjRfdCBwb3MsIHVpbnQ2NF90IGxlbikKIHsK LSAgICByZXR1cm4gb3BjCi0gICAgICAgICAgIHwgKChhcjMgJiAweDdmKSA8PCAyMCkKLSAg ICAgICAgICAgfCAoKHIyICYgMHg3ZikgPDwgMTMpCi0gICAgICAgICAgIHwgKHFwICYgMHgz Zik7CisgICAgb3BjIHw9ICgoaW1tOCAmIDB4ODApIDw8IDI5KSAvKiBpICovCisgICAgICAg IHwgKChpbW04ICYgMHg3ZikgPDwgMTMpIC8qIGltbTdiICovCisgICAgICAgIHwgKChsZW4g JiAweDNmKSA8PCAyNykKKyAgICAgICAgfCAoKHBvcyAmIDB4M2YpIDw8IDIwKQorICAgICAg ICB8ICgocjEgJiAweDdmKSA8PCA2KQorICAgICAgICB8IChxcCAmIDB4M2YpOworICAgIHRj Z19vdXRfaW5zbihzLCBJTlNOX1RZUEVfSSwgb3BjLCAxdWxsIDw8IHIxLCAwKTsKIH0KIAot c3RhdGljIGlubGluZSB1aW50NjRfdCB0Y2dfb3BjX2kyOShpbnQgcXAsIHVpbnQ2NF90IG9w YywgaW50IHIxLCBpbnQgcjMpCitzdGF0aWMgdm9pZCB0Y2dfb3BjX2kxNChUQ0dDb250ZXh0 ICpzLCBpbnQgcXAsIHVpbnQ2NF90IG9wYywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu dCByMSwgaW50IGltbTEsIGludCByMywgdWludDY0X3QgcG9zLCB1aW50NjRfdCBsZW4pCiB7 Ci0gICAgcmV0dXJuIG9wYwotICAgICAgICAgICB8ICgocjMgJiAweDdmKSA8PCAyMCkKLSAg ICAgICAgICAgfCAoKHIxICYgMHg3ZikgPDwgNikKLSAgICAgICAgICAgfCAocXAgJiAweDNm KTsKKyAgICBvcGMgfD0gKChpbW0xICYgMXVsbCkgPDwgMzYpCisgICAgICAgIHwgKChsZW4g JiAweDNmKSA8PCAyNykKKyAgICAgICAgfCAoKHBvcyAmIDB4M2YpIDw8IDE0KQorICAgICAg ICB8ICgocjMgJiAweDdmKSA8PCAyMCkKKyAgICAgICAgfCAoKHIxICYgMHg3ZikgPDwgNikK KyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2luc24ocywgSU5TTl9UWVBF X0ksIG9wYywgMXVsbCA8PCByMSwgMXVsbCA8PCByMyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg dWludDY0X3QgdGNnX29wY19sMih1aW50NjRfdCBpbW0pCitzdGF0aWMgdm9pZCB0Y2dfb3Bj X2kyMShUQ0dDb250ZXh0ICpzLCBpbnQgcXAsIHVpbnQ2NF90IG9wYywKKyAgICAgICAgICAg ICAgICAgICAgICAgIGludCBiMSwgaW50IHIyLCB1aW50NjRfdCBpbW0pCiB7Ci0gICAgcmV0 dXJuIChpbW0gJiAweDdmZmZmZmZmZmZjMDAwMDB1bGwpID4+IDIyOworICAgIG9wYyB8PSAo KGltbSAmIDB4MWZmKSA8PCAyNCkKKyAgICAgICAgfCAoKHIyICYgMHg3ZikgPDwgMTMpCisg ICAgICAgIHwgKChiMSAmIDB4NykgPDwgNikKKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAg ICB0Y2dfb3V0X2luc24ocywgSU5TTl9UWVBFX0ksIG9wYywgMCwgMXVsbCA8PCByMik7CiB9 CiAKLXN0YXRpYyBpbmxpbmUgdWludDY0X3QgdGNnX29wY19sMyh1aW50NjRfdCBpbW0pCitz dGF0aWMgdm9pZCB0Y2dfb3BjX2kyMihUQ0dDb250ZXh0ICpzLCBpbnQgcXAsIHVpbnQ2NF90 IG9wYywgaW50IHIxLCBpbnQgYjIpCiB7Ci0gICAgcmV0dXJuIChpbW0gJiAweDA3ZmZmZmZm ZmZmMDAwMDB1bGwpID4+IDE4OworICAgIG9wYyB8PSAoKGIyICYgMHg3KSA8PCAxMykKKyAg ICAgICAgfCAoKHIxICYgMHg3ZikgPDwgNikKKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAg ICB0Y2dfb3V0X2luc24ocywgSU5TTl9UWVBFX0ksIG9wYywgMXVsbCA8PCByMSwgMCk7CiB9 CiAKLXN0YXRpYyBpbmxpbmUgdWludDY0X3QgdGNnX29wY19tMShpbnQgcXAsIHVpbnQ2NF90 IG9wYywgaW50IHIxLCBpbnQgcjMpCitzdGF0aWMgdm9pZCB0Y2dfb3BjX2kyNihUQ0dDb250 ZXh0ICpzLCBpbnQgcXAsIHVpbnQ2NF90IG9wYywgaW50IGFyMywgaW50IHIyKQogewotICAg IHJldHVybiBvcGMKLSAgICAgICAgICAgfCAoKHIzICYgMHg3ZikgPDwgMjApCi0gICAgICAg ICAgIHwgKChyMSAmIDB4N2YpIDw8IDYpCi0gICAgICAgICAgIHwgKHFwICYgMHgzZik7Cisg ICAgb3BjIHw9ICgoYXIzICYgMHg3ZikgPDwgMjApCisgICAgICAgIHwgKChyMiAmIDB4N2Yp IDw8IDEzKQorICAgICAgICB8IChxcCAmIDB4M2YpOworICAgIHRjZ19vdXRfaW5zbihzLCBJ TlNOX1RZUEVfSSwgb3BjLCAwLCAxdWxsIDw8IHIyKTsKIH0KIAotc3RhdGljIGlubGluZSB1 aW50NjRfdCB0Y2dfb3BjX20zKGludCBxcCwgdWludDY0X3Qgb3BjLCBpbnQgcjEsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHIzLCB1aW50NjRfdCBpbW0pCitz dGF0aWMgdm9pZCB0Y2dfb3BjX2kyOShUQ0dDb250ZXh0ICpzLCBpbnQgcXAsIHVpbnQ2NF90 IG9wYywgaW50IHIxLCBpbnQgcjMpCiB7Ci0gICAgcmV0dXJuIG9wYwotICAgICAgICAgICB8 ICgoaW1tICYgMHgxMDApIDw8IDI4KSAvKiBzICovCi0gICAgICAgICAgIHwgKChpbW0gJiAw eDA4MCkgPDwgMjApIC8qIGkgKi8KLSAgICAgICAgICAgfCAoKGltbSAmIDB4MDdmKSA8PCAx MykgLyogaW1tN2IgKi8KLSAgICAgICAgICAgfCAoKHIzICYgMHg3ZikgPDwgMjApCi0gICAg ICAgICAgIHwgKChyMSAmIDB4N2YpIDw8IDYpCi0gICAgICAgICAgIHwgKHFwICYgMHgzZik7 CisgICAgb3BjIHw9ICgocjMgJiAweDdmKSA8PCAyMCkKKyAgICAgICAgfCAoKHIxICYgMHg3 ZikgPDwgNikKKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2luc24ocywg SU5TTl9UWVBFX0ksIG9wYywgMXVsbCA8PCByMSwgMXVsbCA8PCByMyk7CiB9CiAKLXN0YXRp YyBpbmxpbmUgdWludDY0X3QgdGNnX29wY19tNChpbnQgcXAsIHVpbnQ2NF90IG9wYywgaW50 IHIyLCBpbnQgcjMpCitzdGF0aWMgdm9pZCB0Y2dfb3BjX2wyKFRDR0NvbnRleHQgKnMsIHVp bnQ2NF90IGltbSkKIHsKLSAgICByZXR1cm4gb3BjCi0gICAgICAgICAgIHwgKChyMyAmIDB4 N2YpIDw8IDIwKQotICAgICAgICAgICB8ICgocjIgJiAweDdmKSA8PCAxMykKLSAgICAgICAg ICAgfCAocXAgJiAweDNmKTsKKyAgICB1aW50NjRfdCBvcGMgPSAoaW1tICYgMHg3ZmZmZmZm ZmZmYzAwMDAwdWxsKSA+PiAyMjsKKyAgICB0Y2dfb3V0X2luc24ocywgSU5TTl9UWVBFX0ws IG9wYywgMCwgMCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdWludDY0X3QgdGNnX29wY19tMTgo aW50IHFwLCB1aW50NjRfdCBvcGMsIGludCBmMSwgaW50IHIyKQorc3RhdGljIHZvaWQgdGNn X29wY19sMyhUQ0dDb250ZXh0ICpzLCB1aW50NjRfdCBpbW0pCiB7Ci0gICAgcmV0dXJuIG9w YwotICAgICAgICAgICB8ICgocjIgJiAweDdmKSA8PCAxMykKLSAgICAgICAgICAgfCAoKGYx ICYgMHg3ZikgPDwgNikKLSAgICAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB1aW50NjRf dCBvcGMgPSAoaW1tICYgMHgwN2ZmZmZmZmZmZjAwMDAwdWxsKSA+PiAxODsKKyAgICB0Y2df b3V0X2luc24ocywgSU5TTl9UWVBFX0wsIG9wYywgMCwgMCk7CiB9CiAKLXN0YXRpYyBpbmxp bmUgdWludDY0X3QgdGNnX29wY19tMTkoaW50IHFwLCB1aW50NjRfdCBvcGMsIGludCByMSwg aW50IGYyKQorc3RhdGljIHZvaWQgdGNnX29wY19tMShUQ0dDb250ZXh0ICpzLCBpbnQgcXAs IHVpbnQ2NF90IG9wYywgaW50IHIxLCBpbnQgcjMpCiB7Ci0gICAgcmV0dXJuIG9wYwotICAg ICAgICAgICB8ICgoZjIgJiAweDdmKSA8PCAxMykKLSAgICAgICAgICAgfCAoKHIxICYgMHg3 ZikgPDwgNikKLSAgICAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICBvcGMgfD0gKChyMyAm IDB4N2YpIDw8IDIwKQorICAgICAgICB8ICgocjEgJiAweDdmKSA8PCA2KQorICAgICAgICB8 IChxcCAmIDB4M2YpOworICAgIHRjZ19vdXRfaW5zbihzLCBJTlNOX1RZUEVfTSwgb3BjLCAx dWxsIDw8IHIxLCAxdWxsIDw8IHIzKTsKIH0KIAotc3RhdGljIGlubGluZSB1aW50NjRfdCB0 Y2dfb3BjX20zNChpbnQgcXAsIHVpbnQ2NF90IG9wYywgaW50IHIxLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29mLCBpbnQgc29sLCBpbnQgc29yKQorc3Rh dGljIGlubGluZSB2b2lkCit0Y2dfb3BjX20zKFRDR0NvbnRleHQgKnMsIGludCBxcCwgdWlu dDY0X3Qgb3BjLCBpbnQgcjEsIGludCByMywgdWludDY0X3QgaW1tKQogewotICAgIHJldHVy biBvcGMKLSAgICAgICAgICAgfCAoKHNvciAmIDB4MGYpIDw8IDI3KQotICAgICAgICAgICB8 ICgoc29sICYgMHg3ZikgPDwgMjApCi0gICAgICAgICAgIHwgKChzb2YgJiAweDdmKSA8PCAx MykKLSAgICAgICAgICAgfCAoKHIxICYgMHg3ZikgPDwgNikKLSAgICAgICAgICAgfCAocXAg JiAweDNmKTsKKyAgICBvcGMgfD0gKChpbW0gJiAweDEwMCkgPDwgMjgpIC8qIHMgKi8KKyAg ICAgICAgfCAoKGltbSAmIDB4MDgwKSA8PCAyMCkgLyogaSAqLworICAgICAgICB8ICgoaW1t ICYgMHgwN2YpIDw8IDEzKSAvKiBpbW03YiAqLworICAgICAgICB8ICgocjMgJiAweDdmKSA8 PCAyMCkKKyAgICAgICAgfCAoKHIxICYgMHg3ZikgPDwgNikKKyAgICAgICAgfCAocXAgJiAw eDNmKTsKKyAgICB0Y2dfb3V0X2luc24ocywgSU5TTl9UWVBFX00sIG9wYywgMXVsbCA8PCBy MSB8IDF1bGwgPDwgcjMsIDF1bGwgPDwgcjMpOwogfQogCi1zdGF0aWMgaW5saW5lIHVpbnQ2 NF90IHRjZ19vcGNfbTQ4KGludCBxcCwgdWludDY0X3Qgb3BjLCB1aW50NjRfdCBpbW0pCitz dGF0aWMgdm9pZCB0Y2dfb3BjX200KFRDR0NvbnRleHQgKnMsIGludCBxcCwgdWludDY0X3Qg b3BjLCBpbnQgcjIsIGludCByMykKIHsKLSAgICByZXR1cm4gb3BjCi0gICAgICAgICAgIHwg KChpbW0gJiAweDEwMDAwMCkgPDwgMTYpIC8qIGkgKi8KLSAgICAgICAgICAgfCAoKGltbSAm IDB4MGZmZmZmKSA8PCA2KSAgLyogaW1tMjBhICovCi0gICAgICAgICAgIHwgKHFwICYgMHgz Zik7CisgICAgb3BjIHw9ICgocjMgJiAweDdmKSA8PCAyMCkKKyAgICAgICAgfCAoKHIyICYg MHg3ZikgPDwgMTMpCisgICAgICAgIHwgKHFwICYgMHgzZik7CisgICAgdGNnX291dF9pbnNu KHMsIElOU05fVFlQRV9NLCBvcGMsIDAsIDF1bGwgPDwgcjIgfCAxdWxsIDw8IHIzKTsKIH0K IAotc3RhdGljIGlubGluZSB1aW50NjRfdCB0Y2dfb3BjX3gyKGludCBxcCwgdWludDY0X3Qg b3BjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByMSwgdWludDY0 X3QgaW1tKQorc3RhdGljIHZvaWQgdGNnX29wY19tMTgoVENHQ29udGV4dCAqcywgaW50IHFw LCB1aW50NjRfdCBvcGMsIGludCBmMSwgaW50IHIyKQogewotICAgIHJldHVybiBvcGMKLSAg ICAgICAgICAgfCAoKGltbSAmIDB4ODAwMDAwMDAwMDAwMDAwMHVsbCkgPj4gMjcpIC8qIGkg Ki8KLSAgICAgICAgICAgfCAgKGltbSAmIDB4MDAwMDAwMDAwMDIwMDAwMHVsbCkgICAgICAg IC8qIGljICovCi0gICAgICAgICAgIHwgKChpbW0gJiAweDAwMDAwMDAwMDAxZjAwMDB1bGwp IDw8IDYpICAvKiBpbW01YyAqLwotICAgICAgICAgICB8ICgoaW1tICYgMHgwMDAwMDAwMDAw MDBmZjgwdWxsKSA8PCAyMCkgLyogaW1tOWQgKi8KLSAgICAgICAgICAgfCAoKGltbSAmIDB4 MDAwMDAwMDAwMDAwMDA3ZnVsbCkgPDwgMTMpIC8qIGltbTdiICovCi0gICAgICAgICAgIHwg KChyMSAmIDB4N2YpIDw8IDYpCi0gICAgICAgICAgIHwgKHFwICYgMHgzZik7CisgICAgb3Bj IHw9ICgocjIgJiAweDdmKSA8PCAxMykKKyAgICAgICAgfCAoKGYxICYgMHg3ZikgPDwgNikK KyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2luc24ocywgSU5TTl9UWVBF X00sIG9wYywgMCwgMXVsbCA8PCByMik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdWludDY0X3Qg dGNnX29wY194MyhpbnQgcXAsIHVpbnQ2NF90IG9wYywgdWludDY0X3QgaW1tKQorc3RhdGlj IHZvaWQgdGNnX29wY19tMTkoVENHQ29udGV4dCAqcywgaW50IHFwLCB1aW50NjRfdCBvcGMs IGludCByMSwgaW50IGYyKQogewotICAgIHJldHVybiBvcGMKLSAgICAgICAgICAgfCAoKGlt bSAmIDB4MDgwMDAwMDAwMDAwMDAwMHVsbCkgPj4gMjMpIC8qIGkgKi8KLSAgICAgICAgICAg fCAoKGltbSAmIDB4MDAwMDAwMDAwMDBmZmZmZnVsbCkgPDwgMTMpIC8qIGltbTIwYiAqLwot ICAgICAgICAgICB8IChxcCAmIDB4M2YpOworICAgIG9wYyB8PSAoKGYyICYgMHg3ZikgPDwg MTMpCisgICAgICAgIHwgKChyMSAmIDB4N2YpIDw8IDYpCisgICAgICAgIHwgKHFwICYgMHgz Zik7CisgICAgdGNnX291dF9pbnNuKHMsIElOU05fVFlQRV9NLCBvcGMsIDF1bGwgPDwgcjEs IDApOwogfQogCitzdGF0aWMgdm9pZCB0Y2dfb3BjX20zNChUQ0dDb250ZXh0ICpzLCBpbnQg cXAsIHVpbnQ2NF90IG9wYywgaW50IHIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgc29mLCBpbnQgc29sLCBpbnQgc29yKQoreworICAgIG9wYyB8PSAoKHNv ciAmIDB4MGYpIDw8IDI3KQorICAgICAgICB8ICgoc29sICYgMHg3ZikgPDwgMjApCisgICAg ICAgIHwgKChzb2YgJiAweDdmKSA8PCAxMykKKyAgICAgICAgfCAoKHIxICYgMHg3ZikgPDwg NikKKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2luc24ocywgSU5TTl9U WVBFX00sIG9wYywgMXVsbCA8PCByMSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIHRjZ19vcGNf eDIoVENHQ29udGV4dCAqcywgaW50IHFwLCB1aW50NjRfdCBvcGMsCisgICAgICAgICAgICAg ICAgICAgICAgIGludCByMSwgdWludDY0X3QgaW1tKQoreworICAgIG9wYyB8PSAoKGltbSAm IDB4ODAwMDAwMDAwMDAwMDAwMHVsbCkgPj4gMjcpIC8qIGkgKi8KKyAgICAgICAgfCAgKGlt bSAmIDB4MDAwMDAwMDAwMDIwMDAwMHVsbCkgICAgICAgIC8qIGljICovCisgICAgICAgIHwg KChpbW0gJiAweDAwMDAwMDAwMDAxZjAwMDB1bGwpIDw8IDYpICAvKiBpbW01YyAqLworICAg ICAgICB8ICgoaW1tICYgMHgwMDAwMDAwMDAwMDBmZjgwdWxsKSA8PCAyMCkgLyogaW1tOWQg Ki8KKyAgICAgICAgfCAoKGltbSAmIDB4MDAwMDAwMDAwMDAwMDA3ZnVsbCkgPDwgMTMpIC8q IGltbTdiICovCisgICAgICAgIHwgKChyMSAmIDB4N2YpIDw8IDYpCisgICAgICAgIHwgKHFw ICYgMHgzZik7CisgICAgdGNnX291dF9pbnNuKHMsIElOU05fVFlQRV9YLCBvcGMsIDF1bGwg PDwgcjEsIDApOworfQorCitzdGF0aWMgdm9pZCB0Y2dfb3BjX3gzKFRDR0NvbnRleHQgKnMs IGludCBxcCwgdWludDY0X3Qgb3BjLCB1aW50NjRfdCBpbW0pCit7CisgICAgb3BjIHw9ICgo aW1tICYgMHgwODAwMDAwMDAwMDAwMDAwdWxsKSA+PiAyMykgLyogaSAqLworICAgICAgICB8 ICgoaW1tICYgMHgwMDAwMDAwMDAwMGZmZmZmdWxsKSA8PCAxMykgLyogaW1tMjBiICovCisg ICAgICAgIHwgKHFwICYgMHgzZik7CisgICAgdGNnX291dF9pbnNuKHMsIElOU05fVFlQRV9Y LCBvcGMsIDAsIDApOworfQorCitzdGF0aWMgdm9pZCB0Y2dfb3BjX3g0KFRDR0NvbnRleHQg KnMsIGludCBxcCwgdWludDY0X3Qgb3BjLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQg YjEsIHVpbnQ2NF90IGltbSkKK3sKKyAgICBvcGMgfD0gKChpbW0gJiAweDA4MDAwMDAwMDAw MDAwMDB1bGwpID4+IDIzKSAvKiBpICovCisgICAgICAgIHwgKChpbW0gJiAweDAwMDAwMDAw MDAwZmZmZmZ1bGwpIDw8IDEzKSAvKiBpbW0yMGIgKi8KKyAgICAgICAgfCAoKGIxICYgNykg PDwgNikKKyAgICAgICAgfCAocXAgJiAweDNmKTsKKyAgICB0Y2dfb3V0X2luc24ocywgSU5T Tl9UWVBFX1gsIG9wYywgMCwgMCk7Cit9CiAKIC8qCiAgKiBSZWxvY2F0aW9ucwogICovCiAK LXN0YXRpYyBpbmxpbmUgdm9pZCByZWxvY19wY3JlbDIxYiAodm9pZCAqcGMsIHRjZ190YXJn ZXRfbG9uZyB0YXJnZXQpCitzdGF0aWMgaW5saW5lIHZvaWQgcmVsb2NfcGNyZWwyMWIodm9p ZCAqcGMsIHRjZ190YXJnZXRfbG9uZyB0YXJnZXQpCiB7CiAgICAgdWludDY0X3QgaW1tOwog ICAgIGludDY0X3QgZGlzcDsKQEAgLTY4Miw3ICsxMTIxLDcgQEAgc3RhdGljIGlubGluZSB2 b2lkIHJlbG9jX3BjcmVsMjFiICh2b2lkICpwYywgdGNnX3RhcmdldF9sb25nIHRhcmdldCkK ICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdWludDY0X3QgZ2V0X3JlbG9jX3BjcmVsMjFi ICh2b2lkICpwYykKK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgZ2V0X3JlbG9jX3BjcmVsMjFi KHZvaWQgKnBjKQogewogICAgIGludDY0X3QgbG93LCBoaWdoOwogICAgIGludCBzbG90OwpA QCAtNzA5LDcgKzExNDgsNyBAQCBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGdldF9yZWxvY19w Y3JlbDIxYiAodm9pZCAqcGMpCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcmVs b2NfcGNyZWw2MGIgKHZvaWQgKnBjLCB0Y2dfdGFyZ2V0X2xvbmcgdGFyZ2V0KQorc3RhdGlj IGlubGluZSB2b2lkIHJlbG9jX3BjcmVsNjBiKHZvaWQgKnBjLCB0Y2dfdGFyZ2V0X2xvbmcg dGFyZ2V0KQogewogICAgIGludDY0X3QgZGlzcDsKICAgICB1aW50NjRfdCBpbW07CkBAIC03 MjUsNyArMTE2NCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZWxvY19wY3JlbDYwYiAodm9p ZCAqcGMsIHRjZ190YXJnZXRfbG9uZyB0YXJnZXQpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgKChpbW0gJiAweDAwMDAwMDBmZmZmMDAwMDB1bGwpIDw8IDI4KTsgLyogaW1t MzkgKi8KIH0KIAotc3RhdGljIGlubGluZSB1aW50NjRfdCBnZXRfcmVsb2NfcGNyZWw2MGIg KHZvaWQgKnBjKQorc3RhdGljIGlubGluZSB1aW50NjRfdCBnZXRfcmVsb2NfcGNyZWw2MGIo dm9pZCAqcGMpCiB7CiAgICAgaW50NjRfdCBsb3csIGhpZ2g7CiAKQEAgLTc3Miw2ICsxMjEx LDkgQEAgc3RhdGljIGludCB0YXJnZXRfcGFyc2VfY29uc3RyYWludChUQ0dBcmdDb25zdHJh aW50ICpjdCwgY29uc3QgY2hhciAqKnBjdF9zdHIpCiAgICAgY2FzZSAnSSc6CiAgICAgICAg IGN0LT5jdCB8PSBUQ0dfQ1RfQ09OU1RfUzIyOwogICAgICAgICBicmVhazsKKyAgICBjYXNl ICdKJzoKKyAgICAgICAgY3QtPmN0IHw9IFRDR19DVF9DT05TVF9TODsKKyAgICAgICAgYnJl YWs7CiAgICAgY2FzZSAnUyc6CiAgICAgICAgIGN0LT5jdCB8PSBUQ0dfQ1RfUkVHOwogICAg ICAgICB0Y2dfcmVnc2V0X3NldChjdC0+dS5yZWdzLCAweGZmZmZmZmZmZmZmZmZmZmZ1bGwp OwpAQCAtODA2LDExMyArMTI0OCwxMTIgQEAgc3RhdGljIGlubGluZSBpbnQgdGNnX3Rhcmdl dF9jb25zdF9tYXRjaCh0Y2dfdGFyZ2V0X2xvbmcgdmFsLAogICAgICAgICByZXR1cm4gMTsK ICAgICBlbHNlIGlmICgoY3QgJiBUQ0dfQ1RfQ09OU1RfUzIyKSAmJiB2YWwgPT0gKChpbnQz Ml90KXZhbCA8PCAxMCkgPj4gMTApCiAgICAgICAgIHJldHVybiAxOworICAgIGVsc2UgaWYg KChjdCAmIFRDR19DVF9DT05TVF9TOCkgJiYgdmFsID09IChpbnQ4X3QpdmFsKQorICAgICAg ICByZXR1cm4gMTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiAwOwogfQogCi0vKgotICog Q29kZSBnZW5lcmF0aW9uCi0gKi8KLQotc3RhdGljIHVpbnQ4X3QgKnRiX3JldF9hZGRyOwot Ci1zdGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9idW5kbGUoVENHQ29udGV4dCAqcywgaW50 IHRlbXBsYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90 IHNsb3QwLCB1aW50NjRfdCBzbG90MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50NjRfdCBzbG90MikKLXsKLSAgICB0ZW1wbGF0ZSAmPSAweDFmOyAgICAgICAg ICAvKiA1IGJpdHMgKi8KLSAgICBzbG90MCAmPSAweDFmZmZmZmZmZmZmdWxsOyAvKiA0MSBi aXRzICovCi0gICAgc2xvdDEgJj0gMHgxZmZmZmZmZmZmZnVsbDsgLyogNDEgYml0cyAqLwot ICAgIHNsb3QyICY9IDB4MWZmZmZmZmZmZmZ1bGw7IC8qIDQxIGJpdHMgKi8KLQotICAgICoo dWludDY0X3QgKikocy0+Y29kZV9wdHIgKyAwKSA9IChzbG90MSA8PCA0NikgfCAoc2xvdDAg PDwgNSkgfCB0ZW1wbGF0ZTsKLSAgICAqKHVpbnQ2NF90ICopKHMtPmNvZGVfcHRyICsgOCkg PSAoc2xvdDIgPDwgMjMpIHwgKHNsb3QxID4+IDE4KTsKLSAgICBzLT5jb2RlX3B0ciArPSAx NjsKLX0KLQogc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfbW92KFRDR0NvbnRleHQgKnMs IFRDR1R5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dBcmcg cmV0LCBUQ0dBcmcgYXJnKQogewotICAgIHRjZ19vdXRfYnVuZGxlKHMsIG1tSSwKLSAgICAg ICAgICAgICAgICAgICB0Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCks Ci0gICAgICAgICAgICAgICAgICAgdGNnX29wY19tNDgoVENHX1JFR19QMCwgT1BDX05PUF9N NDgsIDApLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfYTQoVENHX1JFR19QMCwgT1BD X0FERFNfQTQsIHJldCwgMCwgYXJnKSk7CisgICAgdGNnX29wY19hNChzLCBUQ0dfUkVHX1Aw LCBPUENfQUREU19BNCwgcmV0LCAwLCBhcmcpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQg dGNnX291dF9tb3ZpKFRDR0NvbnRleHQgKnMsIFRDR1R5cGUgdHlwZSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVENHQXJnIHJlZywgdGNnX3RhcmdldF9sb25nIGFyZykK K3N0YXRpYyB2b2lkIHRjZ19vdXRfbW92aShUQ0dDb250ZXh0ICpzLCBUQ0dUeXBlIHR5cGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIHJlZywgdGNnX3RhcmdldF9sb25n IHZhbCkKIHsKLSAgICB0Y2dfb3V0X2J1bmRsZShzLCBtTFgsCi0gICAgICAgICAgICAgICAg ICAgdGNnX29wY19tNDgoVENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAg ICAgICAgICAgIHRjZ19vcGNfbDIgKGFyZyksCi0gICAgICAgICAgICAgICAgICAgdGNnX29w Y194MiAoVENHX1JFR19QMCwgT1BDX01PVkxfWDIsIHJlZywgYXJnKSk7CisgICAgaW50NjRf dCBkZXA7CisgICAgaW50IGx6LCB0ejsKKworICAgIGlmICh0eXBlID09IFRDR19UWVBFX0kz MikgeworICAgICAgICB2YWwgPSAoaW50MzJfdCl2YWw7CisgICAgfQorCisgICAgLyogTW9z dCBjb25zdGFudHMgY2FuIGJlIGxvYWRlZCB3aXRoIEFEREwuICAqLworICAgIGlmICh2YWwg PT0gKChpbnQzMl90KXZhbCA8PCAxMCkgPj4gMTApIHsKKyAgICAgICAgdGNnX29wY19hNShz LCBUQ0dfUkVHX1AwLCBPUENfQURETF9BNSwgcmVnLCB2YWwsIFRDR19SRUdfUjApOworICAg ICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogTG9vayBmb3IgcG9zc2liaWxpdGllcyBm b3IgZGVwLnogaW1tZWRpYXRlLiAgVGhpcyBpcyBhbgorICAgICAgIDggYml0IHNpZ25lZCBj b25zdGFudCBkZXBvc2l0ZWQgaW50byBhIGZpZWxkIGluc2lkZSB6ZXJvLgorICAgICAgIFRo aXMgSSBmb3JtYXQgaW5zbiBwYWNrcyBpbnRvIGJ1bmRsZXMgbXVjaCBuaWNlciB0aGFuIExY LiAgKi8KKyAgICB0eiA9IF9fYnVpbHRpbl9jdHpsbCh2YWwpOworICAgIGx6ID0gX19idWls dGluX2NsemxsKHZhbCk7CisgICAgZGVwID0gKChpbnQ2NF90KXZhbCA8PCBseikgPj4gKGx6 ICsgdHopOworICAgIGlmIChkZXAgPT0gKGludDhfdClkZXApIHsKKyAgICAgICAgdGNnX29w Y19pMTMocywgVENHX1JFR19QMCwgT1BDX0RFUF9aX0kxMywgcmVnLCBkZXAsCisgICAgICAg ICAgICAgICAgICAgIDYzIC0gdHosIDYzIC0gKGx6ICsgdHopKTsKKyAgICAgICAgcmV0dXJu OworICAgIH0KKworICAgIC8qIEZhaWxpbmcgdGhhdCwgYW55IDY0LWJpdCBjb25zdGFudCBj YW4gYmUgbG9hZGVkIHdpdGggTU9WTC4gICovCisgICAgdGNnX29wY19sMihzLCB2YWwpOwor ICAgIHRjZ19vcGNfeDIocywgVENHX1JFR19QMCwgT1BDX01PVkxfWDIsIHJlZywgdmFsKTsK IH0KIAotc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfYWRkaShUQ0dDb250ZXh0ICpzLCBU Q0dBcmcgcmVnLCB0Y2dfdGFyZ2V0X2xvbmcgdmFsKQorc3RhdGljIHZvaWQgdGNnX291dF9h ZGRpMihUQ0dDb250ZXh0ICpzLCBUQ0dBcmcgcjEsIFRDR0FyZyByMiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgdGNnX3RhcmdldF9sb25nIHZhbCkKIHsKLSAgICBpZiAodmFsID09 ICgoaW50MzJfdCl2YWwgPDwgMTApID4+IDEwKSB7Ci0gICAgICAgIHRjZ19vdXRfYnVuZGxl KHMsIE1tSSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19hNShUQ0dfUkVHX1Aw LCBPUENfQURETF9BNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0df UkVHX1IyLCB2YWwsIFRDR19SRUdfUjApLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2df b3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCksCi0gICAgICAgICAgICAgICAg ICAgICAgIHRjZ19vcGNfYTEgKFRDR19SRUdfUDAsIE9QQ19BRERfQTEsIHJlZywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnLCBUQ0dfUkVHX1IyKSk7CisgICAg aWYgKHZhbCA9PSAoKGludDMyX3QpdmFsIDw8IDE4KSA+PiAxOCkgeworICAgICAgICB0Y2df b3BjX2E0KHMsIFRDR19SRUdfUDAsIE9QQ19BRERTX0E0LCByMSwgdmFsLCByMik7CisgICAg fSBlbHNlIGlmIChyMiA8IDQgJiYgdmFsID09ICgoaW50MzJfdCl2YWwgPDwgMTApID4+IDEw KSB7CisgICAgICAgIHRjZ19vcGNfYTUocywgVENHX1JFR19QMCwgT1BDX0FERExfQTUsIHIx LCB2YWwsIHIyKTsKICAgICB9IGVsc2UgewotICAgICAgICB0Y2dfb3V0X21vdmkocywgVENH X1RZUEVfUFRSLCBUQ0dfUkVHX1IyLCB2YWwpOwotICAgICAgICB0Y2dfb3V0X2J1bmRsZShz LCBtbUksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAs IE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19tNDgo VENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgICAgICB0 Y2dfb3BjX2ExIChUQ0dfUkVHX1AwLCBPUENfQUREX0ExLCByZWcsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlZywgVENHX1JFR19SMikpOworICAgICAgICBpbnQg cjMgPSByMTsKKyAgICAgICAgaWYgKHIyID09IHIxKSB7CisgICAgICAgICAgICBhc3NlcnQg KHIyICE9IFRDR19SRUdfUjIpOworICAgICAgICAgICAgcjMgPSBUQ0dfUkVHX1IyOworICAg ICAgICB9CisKKyAgICAgICAgdGNnX291dF9tb3ZpKHMsIFRDR19UWVBFX0k2NCwgcjMsIHZh bCk7CisgICAgICAgIHRjZ19vcGNfYTEocywgVENHX1JFR19QMCwgT1BDX0FERF9BMSwgcjEs IHIyLCByMyk7CiAgICAgfQogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9hZGRp KFRDR0NvbnRleHQgKnMsIFRDR0FyZyByZWcsIHRjZ190YXJnZXRfbG9uZyB2YWwpCit7Cisg ICAgdGNnX291dF9hZGRpMihzLCByZWcsIHJlZywgdmFsKTsKK30KKwogc3RhdGljIHZvaWQg dGNnX291dF9icihUQ0dDb250ZXh0ICpzLCBpbnQgbGFiZWxfaW5kZXgpCiB7Ci0gICAgVENH TGFiZWwgKmwgPSAmcy0+bGFiZWxzW2xhYmVsX2luZGV4XTsKKyAgICB0Y2dfb3BjX2IxKHMs IFRDR19SRUdfUDAsIE9QQ19CUl9TUFRLX01BTllfQjEsIDApOworICAgIHRjZ19mbHVzaF9x dWV1ZShzKTsKKyAgICB0Y2dfb3V0X3JlbG9jKHMsIChzLT5jb2RlX3B0ciAtIDE2KSArIDIs IFJfSUE2NF9QQ1JFTDIxQiwgbGFiZWxfaW5kZXgsIDApOworfQogCi0gICAgdGNnX291dF9i dW5kbGUocywgbW1CLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdf UDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX200OChU Q0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCksCi0gICAgICAgICAgICAgICAgICAgdGNnX29w Y19iMSAoVENHX1JFR19QMCwgT1BDX0JSX1NQVEtfTUFOWV9CMSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnZXRfcmVsb2NfcGNyZWwyMWIocy0+Y29kZV9wdHIgKyAyKSkp Oworc3RhdGljIHZvaWQgdGNnX291dF9jYWxsKFRDR0NvbnRleHQgKnMsIFRDR0FyZyBhZGRy LCBpbnQgY29uc3RfYWRkcikKK3sKKyAgICBpZiAoY29uc3RfYWRkcikgeworICAgICAgICB0 Y2dfdGFyZ2V0X2xvbmcgcGMgPSAoKHRjZ190YXJnZXRfbG9uZyAqKWFkZHIpWzBdOworICAg ICAgICB0Y2dfdGFyZ2V0X2xvbmcgZ3AgPSAoKHRjZ190YXJnZXRfbG9uZyAqKWFkZHIpWzFd OwogCi0gICAgaWYgKGwtPmhhc192YWx1ZSkgewotICAgICAgICByZWxvY19wY3JlbDIxYigo cy0+Y29kZV9wdHIgLSAxNikgKyAyLCBsLT51LnZhbHVlKTsKKyAgICAgICAgdGNnX291dF9t b3ZpKHMsIFRDR19UWVBFX1BUUiwgVENHX1JFR19SMSwgZ3ApOworICAgICAgICB0Y2dfb3Bj X2wzKHMsIDApOworICAgICAgICB0Y2dfb3BjX3g0KHMsIFRDR19SRUdfUDAsIE9QQ19CUkxf Q0FMTF9TUFRLX01BTllfWDQsIFRDR19SRUdfQjAsIDApOworICAgICAgICB0Y2dfZmx1c2hf cXVldWUocyk7CisKKyAgICAgICAgcmVsb2NfcGNyZWw2MGIgKHMtPmNvZGVfcHRyIC0gMTYs IHBjKTsKICAgICB9IGVsc2UgewotICAgICAgICB0Y2dfb3V0X3JlbG9jKHMsIChzLT5jb2Rl X3B0ciAtIDE2KSArIDIsCi0gICAgICAgICAgICAgICAgICAgICAgUl9JQTY0X1BDUkVMMjFC LCBsYWJlbF9pbmRleCwgMCk7CisgICAgICAgIHRjZ19vcGNfbTMocywgVENHX1JFR19QMCwg T1BDX0xEOF9NMywgVENHX1JFR19SMiwgYWRkciwgOCk7CisgICAgICAgIHRjZ19vcGNfaTIx KHMsIFRDR19SRUdfUDAsIE9QQ19NT1ZfSTIxLCBUQ0dfUkVHX0I2LCBUQ0dfUkVHX1IyLCAw KTsKKyAgICAgICAgdGNnX29wY19tMyhzLCBUQ0dfUkVHX1AwLCBPUENfTEQ4X00zLCBUQ0df UkVHX1IxLCBhZGRyLCAtOCk7CisgICAgICAgIHRjZ19vcGNfYjUocywgVENHX1JFR19QMCwg T1BDX0JSX0NBTExfU1BUS19NQU5ZX0I1LAorICAgICAgICAgICAgICAgICAgIFRDR19SRUdf QjAsIFRDR19SRUdfQjYpOworICAgICAgICB0Y2dfZmx1c2hfcXVldWUocyk7CiAgICAgfQog fQogCi1zdGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9jYWxsKFRDR0NvbnRleHQgKnMsIFRD R0FyZyBhZGRyKQotewotICAgIHRjZ19vdXRfYnVuZGxlKHMsIE1tSSwKLSAgICAgICAgICAg ICAgICAgICB0Y2dfb3BjX20xIChUQ0dfUkVHX1AwLCBPUENfTEQ4X00xLCBUQ0dfUkVHX1Iy LCBhZGRyKSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2E0IChUQ0dfUkVHX1AwLCBP UENfQUREU19BNCwgVENHX1JFR19SMywgOCwgYWRkciksCi0gICAgICAgICAgICAgICAgICAg dGNnX29wY19pMjEoVENHX1JFR19QMCwgT1BDX01PVl9JMjEsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVENHX1JFR19CNiwgVENHX1JFR19SMiwgMCkpOwotICAgIHRjZ19v dXRfYnVuZGxlKHMsIG1tQiwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX20xIChUQ0df UkVHX1AwLCBPUENfTEQ4X00xLCBUQ0dfUkVHX1IxLCBUQ0dfUkVHX1IzKSwKLSAgICAgICAg ICAgICAgICAgICB0Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCksCi0g ICAgICAgICAgICAgICAgICAgdGNnX29wY19iNSAoVENHX1JFR19QMCwgT1BDX0JSX0NBTExf U1BUS19NQU5ZX0I1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdf QjAsIFRDR19SRUdfQjYpKTsKLX0KLQogc3RhdGljIHZvaWQgdGNnX291dF9leGl0X3RiKFRD R0NvbnRleHQgKnMsIHRjZ190YXJnZXRfbG9uZyBhcmcpCiB7Ci0gICAgaW50NjRfdCBkaXNw OwotICAgIHVpbnQ2NF90IGltbTsKLQogICAgIHRjZ19vdXRfbW92aShzLCBUQ0dfVFlQRV9Q VFIsIFRDR19SRUdfUjgsIGFyZyk7CisgICAgdGNnX29wY19sMyAocywgMCk7CisgICAgdGNn X29wY194MyAocywgVENHX1JFR19QMCwgT1BDX0JSTF9TUFRLX01BTllfWDMsIDApOworICAg IHRjZ19mbHVzaF9xdWV1ZShzKTsKIAotICAgIGRpc3AgPSB0Yl9yZXRfYWRkciAtIHMtPmNv ZGVfcHRyOwotICAgIGltbSA9ICh1aW50NjRfdClkaXNwID4+IDQ7Ci0KLSAgICB0Y2dfb3V0 X2J1bmRsZShzLCBtTFgsCi0gICAgICAgICAgICAgICAgICAgdGNnX29wY19tNDgoVENHX1JF R19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbDMg KGltbSksCi0gICAgICAgICAgICAgICAgICAgdGNnX29wY194MyAoVENHX1JFR19QMCwgT1BD X0JSTF9TUFRLX01BTllfWDMsIGltbSkpOworICAgIHJlbG9jX3BjcmVsNjBiIChzLT5jb2Rl X3B0ciAtIDE2LCAodGNnX3RhcmdldF9sb25nKXRiX3JldF9hZGRyKTsKIH0KIAogc3RhdGlj IGlubGluZSB2b2lkIHRjZ19vdXRfZ290b190YihUQ0dDb250ZXh0ICpzLCBUQ0dBcmcgYXJn KQpAQCAtOTI0LDczICsxMzY1LDQzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfb3V0X2dv dG9fdGIoVENHQ29udGV4dCAqcywgVENHQXJnIGFyZykKICAgICAgICAgLyogaW5kaXJlY3Qg anVtcCBtZXRob2QgKi8KICAgICAgICAgdGNnX291dF9tb3ZpKHMsIFRDR19UWVBFX1BUUiwg VENHX1JFR19SMiwKICAgICAgICAgICAgICAgICAgICAgICh0Y2dfdGFyZ2V0X2xvbmcpKHMt PnRiX25leHQgKyBhcmcpKTsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgTW1JLAotICAg ICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX20xIChUQ0dfUkVHX1AwLCBPUENfTEQ4X00x LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX1IyLCBUQ0df UkVHX1IyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19tNDgoVENHX1JFR19Q MCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2ky MShUQ0dfUkVHX1AwLCBPUENfTU9WX0kyMSwgVENHX1JFR19CNiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19SMiwgMCkpOwotICAgICAgICB0Y2dfb3V0 X2J1bmRsZShzLCBtbUIsCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRD R19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNn X29wY19tNDgoVENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAg ICAgICAgICB0Y2dfb3BjX2I0IChUQ0dfUkVHX1AwLCBPUENfQlJfU1BUS19NQU5ZX0I0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX0I2KSk7CisgICAg ICAgIHRjZ19vcGNfbTEocywgVENHX1JFR19QMCwgT1BDX0xEOF9NMSwgVENHX1JFR19SMiwg VENHX1JFR19SMik7CisgICAgICAgIHRjZ19vcGNfaTIxKHMsIFRDR19SRUdfUDAsIE9QQ19N T1ZfSTIxLCBUQ0dfUkVHX0I2LCBUQ0dfUkVHX1IyLCAwKTsKKyAgICAgICAgdGNnX29wY19i NChzLCBUQ0dfUkVHX1AwLCBPUENfQlJfU1BUS19NQU5ZX0I0LCBUQ0dfUkVHX0I2KTsKKyAg ICAgICAgdGNnX2ZsdXNoX3F1ZXVlKHMpOwogICAgIH0KICAgICBzLT50Yl9uZXh0X29mZnNl dFthcmddID0gcy0+Y29kZV9wdHIgLSBzLT5jb2RlX2J1ZjsKIH0KIAogc3RhdGljIGlubGlu ZSB2b2lkIHRjZ19vdXRfam1wKFRDR0NvbnRleHQgKnMsIFRDR0FyZyBhZGRyKQogewotICAg IHRjZ19vdXRfYnVuZGxlKHMsIG1tSSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX200 OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCksCi0gICAgICAgICAgICAgICAgICAgdGNn X29wY19tNDgoVENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAg ICAgIHRjZ19vcGNfaTIxKFRDR19SRUdfUDAsIE9QQ19NT1ZfSTIxLCBUQ0dfUkVHX0I2LCBh ZGRyLCAwKSk7Ci0gICAgdGNnX291dF9idW5kbGUocywgbW1CLAotICAgICAgICAgICAgICAg ICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAg ICAgICAgICAgICB0Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCksCi0g ICAgICAgICAgICAgICAgICAgdGNnX29wY19iNChUQ0dfUkVHX1AwLCBPUENfQlJfU1BUS19N QU5ZX0I0LCBUQ0dfUkVHX0I2KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfb3V0 X2xkX3JlbChUQ0dDb250ZXh0ICpzLCB1aW50NjRfdCBvcGNfbTQsIFRDR0FyZyBhcmcsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFyZzEsIHRjZ190YXJn ZXRfbG9uZyBhcmcyKQotewotICAgIGlmIChhcmcyID09ICgoaW50MTZfdClhcmcyID4+IDIp IDw8IDIpIHsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgTW1JLAotICAgICAgICAgICAg ICAgICAgICAgICB0Y2dfb3BjX2E0KFRDR19SRUdfUDAsIE9QQ19BRERTX0E0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdfUjIsIGFyZzIsIGFyZzEpLAot ICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX20xIChUQ0dfUkVHX1AwLCBvcGNfbTQs IGFyZywgVENHX1JFR19SMiksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4 KFRDR19SRUdfUDAsIE9QQ19OT1BfSTE4LCAwKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg dGNnX291dF9tb3ZpKHMsIFRDR19UWVBFX1BUUiwgVENHX1JFR19SMiwgYXJnMik7Ci0gICAg ICAgIHRjZ19vdXRfYnVuZGxlKHMsIE1tSSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNn X29wY19hMSAoVENHX1JFR19QMCwgT1BDX0FERF9BMSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVENHX1JFR19SMiwgVENHX1JFR19SMiwgYXJnMSksCi0gICAgICAg ICAgICAgICAgICAgICAgIHRjZ19vcGNfbTEgKFRDR19SRUdfUDAsIG9wY19tNCwgYXJnLCBU Q0dfUkVHX1IyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pMTgoVENHX1JF R19QMCwgT1BDX05PUF9JMTgsIDApKTsKKyAgICB0Y2dfb3BjX2kyMShzLCBUQ0dfUkVHX1Aw LCBPUENfTU9WX0kyMSwgVENHX1JFR19CNiwgYWRkciwgMCk7CisgICAgdGNnX29wY19iNChz LCBUQ0dfUkVHX1AwLCBPUENfQlJfU1BUS19NQU5ZX0I0LCBUQ0dfUkVHX0I2KTsKKyAgICB0 Y2dfZmx1c2hfcXVldWUocyk7Cit9CisKK3N0YXRpYyB2b2lkIHRjZ19vdXRfbGRfcmVsKFRD R0NvbnRleHQgKnMsIHVpbnQ2NF90IG9wY19tMSwgVENHQXJnIGFyZywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRDR0FyZyBhcmcxLCB0Y2dfdGFyZ2V0X2xvbmcgYXJnMikKK3sK KyAgICBpZiAoYXJnMiAhPSAwKSB7CisgICAgICAgIHRjZ19vdXRfYWRkaTIocywgVENHX1JF R19SMiwgYXJnMSwgYXJnMik7CisgICAgICAgIGFyZzEgPSBUQ0dfUkVHX1IyOwogICAgIH0K KyAgICB0Y2dfb3BjX20xKHMsIFRDR19SRUdfUDAsIG9wY19tMSwgYXJnLCBhcmcxKTsKIH0K IAotc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfc3RfcmVsKFRDR0NvbnRleHQgKnMsIHVp bnQ2NF90IG9wY19tNCwgVENHQXJnIGFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUQ0dBcmcgYXJnMSwgdGNnX3RhcmdldF9sb25nIGFyZzIpCitzdGF0aWMgdm9p ZCB0Y2dfb3V0X3N0X3JlbChUQ0dDb250ZXh0ICpzLCB1aW50NjRfdCBvcGNfbTQsIFRDR0Fy ZyBhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dBcmcgYXJnMSwgdGNnX3Rh cmdldF9sb25nIGFyZzIpCiB7Ci0gICAgaWYgKGFyZzIgPT0gKChpbnQxNl90KWFyZzIgPj4g MikgPDwgMikgewotICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBNbUksCi0gICAgICAgICAg ICAgICAgICAgICAgIHRjZ19vcGNfYTQoVENHX1JFR19QMCwgT1BDX0FERFNfQTQsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19SMiwgYXJnMiwgYXJnMSks Ci0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQgKFRDR19SRUdfUDAsIG9wY19t NCwgYXJnLCBUQ0dfUkVHX1IyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19p MTgoVENHX1JFR19QMCwgT1BDX05PUF9JMTgsIDApKTsKLSAgICB9IGVsc2UgewotICAgICAg ICB0Y2dfb3V0X21vdmkocywgVENHX1RZUEVfUFRSLCBUQ0dfUkVHX1IyLCBhcmcyKTsKLSAg ICAgICAgdGNnX291dF9idW5kbGUocywgTW1JLAotICAgICAgICAgICAgICAgICAgICAgICB0 Y2dfb3BjX2ExIChUQ0dfUkVHX1AwLCBPUENfQUREX0ExLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUQ0dfUkVHX1IyLCBUQ0dfUkVHX1IyLCBhcmcxKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgdGNnX29wY19tNCAoVENHX1JFR19QMCwgb3BjX200LCBhcmcs IFRDR19SRUdfUjIpLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kxOChUQ0df UkVHX1AwLCBPUENfTk9QX0kxOCwgMCkpOworICAgIGlmIChhcmcyICE9IDApIHsKKyAgICAg ICAgdGNnX291dF9hZGRpMihzLCBUQ0dfUkVHX1IyLCBhcmcxLCBhcmcyKTsKKyAgICAgICAg YXJnMSA9IFRDR19SRUdfUjI7CiAgICAgfQorICAgIHRjZ19vcGNfbTQocywgVENHX1JFR19Q MCwgb3BjX200LCBhcmcsIGFyZzEpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgdGNnX291 dF9sZChUQ0dDb250ZXh0ICpzLCBUQ0dUeXBlIHR5cGUsIFRDR0FyZyBhcmcsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUQ0dBcmcgYXJnMSwgdGNnX3RhcmdldF9sb25nIGFy ZzIpCitzdGF0aWMgdm9pZCB0Y2dfb3V0X2xkKFRDR0NvbnRleHQgKnMsIFRDR1R5cGUgdHlw ZSwgVENHQXJnIGFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFyZzEsIHRj Z190YXJnZXRfbG9uZyBhcmcyKQogewogICAgIGlmICh0eXBlID09IFRDR19UWVBFX0kzMikg ewogICAgICAgICB0Y2dfb3V0X2xkX3JlbChzLCBPUENfTEQ0X00xLCBhcmcsIGFyZzEsIGFy ZzIpOwpAQCAtOTk5LDggKzE0MTAsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9s ZChUQ0dDb250ZXh0ICpzLCBUQ0dUeXBlIHR5cGUsIFRDR0FyZyBhcmcsCiAgICAgfQogfQog Ci1zdGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9zdChUQ0dDb250ZXh0ICpzLCBUQ0dUeXBl IHR5cGUsIFRDR0FyZyBhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dB cmcgYXJnMSwgdGNnX3RhcmdldF9sb25nIGFyZzIpCitzdGF0aWMgdm9pZCB0Y2dfb3V0X3N0 KFRDR0NvbnRleHQgKnMsIFRDR1R5cGUgdHlwZSwgVENHQXJnIGFyZywKKyAgICAgICAgICAg ICAgICAgICAgICAgVENHQXJnIGFyZzEsIHRjZ190YXJnZXRfbG9uZyBhcmcyKQogewogICAg IGlmICh0eXBlID09IFRDR19UWVBFX0kzMikgewogICAgICAgICB0Y2dfb3V0X3N0X3JlbChz LCBPUENfU1Q0X000LCBhcmcsIGFyZzEsIGFyZzIpOwpAQCAtMTAwOSwxOTkgKzE0MjAsMTU5 IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfb3V0X3N0KFRDR0NvbnRleHQgKnMsIFRDR1R5 cGUgdHlwZSwgVENHQXJnIGFyZywKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCB0 Y2dfb3V0X2FsdShUQ0dDb250ZXh0ICpzLCB1aW50NjRfdCBvcGNfYTEsIFRDR0FyZyByZXQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFyZzEsIGludCBjb25z dF9hcmcxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR0FyZyBhcmcyLCBp bnQgY29uc3RfYXJnMikKK3N0YXRpYyB2b2lkIHRjZ19vdXRfYWx1KFRDR0NvbnRleHQgKnMs IHVpbnQ2NF90IG9wY19hMSwgdWludDY0X3Qgb3BjX2EzLAorICAgICAgICAgICAgICAgICAg ICAgICAgVENHQXJnIHJldCwgVENHQXJnIGFyZzEsIGludCBjb25zdF9hcmcxLCBUQ0dBcmcg YXJnMikKIHsKLSAgICB1aW50NjRfdCBvcGMxLCBvcGMyOwotCi0gICAgaWYgKGNvbnN0X2Fy ZzEgJiYgYXJnMSAhPSAwKSB7Ci0gICAgICAgIG9wYzEgPSB0Y2dfb3BjX2E1KFRDR19SRUdf UDAsIE9QQ19BRERMX0E1LAotICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX1Iy LCBhcmcxLCBUQ0dfUkVHX1IwKTsKLSAgICAgICAgYXJnMSA9IFRDR19SRUdfUjI7CisgICAg aWYgKGNvbnN0X2FyZzEpIHsKKyAgICAgICAgYXNzZXJ0IChhcmcxID09IChpbnQ4X3QpYXJn MSk7CisgICAgICAgIHRjZ19vcGNfYTMocywgVENHX1JFR19QMCwgb3BjX2EzLCByZXQsIGFy ZzEsIGFyZzIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG9wYzEgPSB0Y2dfb3BjX200OChU Q0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCk7CisgICAgICAgIHRjZ19vcGNfYTEocywgVENH X1JFR19QMCwgb3BjX2ExLCByZXQsIGFyZzEsIGFyZzIpOwogICAgIH0KK30KIAotICAgIGlm IChjb25zdF9hcmcyICYmIGFyZzIgIT0gMCkgewotICAgICAgICBvcGMyID0gdGNnX29wY19h NShUQ0dfUkVHX1AwLCBPUENfQURETF9BNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg VENHX1JFR19SMywgYXJnMiwgVENHX1JFR19SMCk7CitzdGF0aWMgdm9pZCB0Y2dfb3V0X2Fu ZChUQ0dDb250ZXh0ICpzLCBUQ0dBcmcgcmV0LCBUQ0dBcmcgYXJnMSwKKyAgICAgICAgICAg ICAgICAgICAgICAgIFRDR0FyZyBhcmcyLCBpbnQgY29uc3RfYXJnMikKK3sKKyAgICBpZiAo Y29uc3RfYXJnMiAmJiBhcmcyICE9IChpbnQ4X3QpYXJnMikgeworICAgICAgICBpbnQ2NF90 IHRlc3QgPSBhcmcyOworICAgICAgICBpbnQgcG9zLCBsZW47CisgICAgICAgIAorICAgICAg ICAvKiBMb29rIGZvciB0cmFuc2l0aW9ucyBiZXR3ZWVuIHNlcXVlbmNlcyBvZiAwIGFuZCAx LgorICAgICAgICAgICBXZSB3YW50IGV4YWN0bHkgMSBvciAyIHN1Y2ggdHJhbnNpdGlvbnMu ICAqLworICAgICAgICBwb3MgPSBfX2J1aWx0aW5fY3R6bGwofnRlc3QpOworICAgICAgICB0 ZXN0ID4+PSBwb3M7CisKKyAgICAgICAgaWYgKHRlc3QgPT0gMCkgeworICAgICAgICAgICAg bGVuID0gNjQgLSBwb3M7CisgICAgICAgICAgICB0Y2dfb3BjX2kxNChzLCBUQ0dfUkVHX1Aw LCBPUENfREVQX0kxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldCwgMCwgYXJnMSwg NjMgLSBwb3MsIGxlbiAtIDEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK KyAgICAgICAgbGVuID0gX19idWlsdGluX2N0emxsKHRlc3QpOworICAgICAgICB0ZXN0ID4+ PSBsZW47CisKKyAgICAgICAgaWYgKHRlc3QgPT0gLTEpIHsKKyAgICAgICAgICAgIHRjZ19v cGNfaTE0KHMsIFRDR19SRUdfUDAsIE9QQ19ERVBfSTE0LAorICAgICAgICAgICAgICAgICAg ICAgICAgcmV0LCAwLCBhcmcxLCA2MyAtIHBvcywgbGVuIC0gMSk7CisgICAgICAgICAgICBy ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0Y2dfb3V0X21vdmkocywgVENHX1RZUEVf STY0LCBUQ0dfUkVHX1IzLCBhcmcyKTsKICAgICAgICAgYXJnMiA9IFRDR19SRUdfUjM7Ci0g ICAgfSBlbHNlIHsKLSAgICAgICAgb3BjMiA9IHRjZ19vcGNfaTE4KFRDR19SRUdfUDAsIE9Q Q19OT1BfSTE4LCAwKTsKKyAgICAgICAgY29uc3RfYXJnMiA9IDA7CiAgICAgfQogCi0gICAg dGNnX291dF9idW5kbGUocywgbUlJLAotICAgICAgICAgICAgICAgICAgIG9wYzEsCi0gICAg ICAgICAgICAgICAgICAgb3BjMiwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2ExKFRD R19SRUdfUDAsIG9wY19hMSwgcmV0LCBhcmcxLCBhcmcyKSk7CisgICAgdGNnX291dF9hbHUo cywgT1BDX0FORF9BMSwgT1BDX0FORF9BMywgcmV0LCBhcmcyLCBjb25zdF9hcmcyLCBhcmcx KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfZXF2KFRDR0NvbnRleHQgKnMs IFRDR0FyZyByZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFy ZzEsIGludCBjb25zdF9hcmcxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRD R0FyZyBhcmcyLCBpbnQgY29uc3RfYXJnMikKK3N0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfb3V0 X29yKFRDR0NvbnRleHQgKnMsIFRDR0FyZyByZXQsIFRDR0FyZyBhcmcxLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFyZzIsIGludCBjb25zdF9hcmcyKQogewot ICAgIHRjZ19vdXRfYnVuZGxlKHMsIG1JSSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3Bj X200OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCksCi0gICAgICAgICAgICAgICAgICAg dGNnX29wY19hMSAoVENHX1JFR19QMCwgT1BDX1hPUl9BMSwgcmV0LCBhcmcxLCBhcmcyKSwK LSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2EzIChUQ0dfUkVHX1AwLCBPUENfQU5EQ01f QTMsIHJldCwgLTEsIHJldCkpOworICAgIC8qID8/PyBEbyBkZXBvc2l0IC0xLiAgKi8KKyAg ICB0Y2dfb3V0X2FsdShzLCBPUENfT1JfQTEsIE9QQ19PUl9BMywgcmV0LCBhcmcyLCBjb25z dF9hcmcyLCBhcmcxKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfbmFuZChU Q0dDb250ZXh0ICpzLCBUQ0dBcmcgcmV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUQ0dBcmcgYXJnMSwgaW50IGNvbnN0X2FyZzEsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRDR0FyZyBhcmcyLCBpbnQgY29uc3RfYXJnMikKK3N0YXRpYyBpbmxp bmUgdm9pZCB0Y2dfb3V0X3hvcihUQ0dDb250ZXh0ICpzLCBUQ0dBcmcgcmV0LCBUQ0dBcmcg YXJnMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dBcmcgYXJnMiwgaW50 IGNvbnN0X2FyZzIpCiB7Ci0gICAgdGNnX291dF9idW5kbGUocywgbUlJLAotICAgICAgICAg ICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAg ICAgICAgICAgICAgICAgICB0Y2dfb3BjX2ExIChUQ0dfUkVHX1AwLCBPUENfQU5EX0ExLCBy ZXQsIGFyZzEsIGFyZzIpLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfYTMgKFRDR19S RUdfUDAsIE9QQ19BTkRDTV9BMywgcmV0LCAtMSwgcmV0KSk7CisgICAgdGNnX291dF9hbHUo cywgT1BDX1hPUl9BMSwgT1BDX1hPUl9BMywgcmV0LCBhcmcyLCBjb25zdF9hcmcyLCBhcmcx KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfbm9yKFRDR0NvbnRleHQgKnMs IFRDR0FyZyByZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFy ZzEsIGludCBjb25zdF9hcmcxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRD R0FyZyBhcmcyLCBpbnQgY29uc3RfYXJnMikKK3N0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfb3V0 X2FuZGMoVENHQ29udGV4dCAqcywgVENHQXJnIHJldCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVENHQXJnIGFyZzEsIGludCBjb25zdF9hcmcxLCBUQ0dBcmcgYXJnMikK IHsKLSAgICB0Y2dfb3V0X2J1bmRsZShzLCBtSUksCi0gICAgICAgICAgICAgICAgICAgdGNn X29wY19tNDgoVENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAg ICAgIHRjZ19vcGNfYTEgKFRDR19SRUdfUDAsIE9QQ19PUl9BMSwgcmV0LCBhcmcxLCBhcmcy KSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2EzIChUQ0dfUkVHX1AwLCBPUENfQU5E Q01fQTMsIHJldCwgLTEsIHJldCkpOworICAgIHRjZ19vdXRfYWx1KHMsIE9QQ19BTkRDTV9B MSwgT1BDX0FORENNX0EzLCByZXQsIGFyZzEsIGNvbnN0X2FyZzEsIGFyZzIpOwogfQogCi1z dGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9vcmMoVENHQ29udGV4dCAqcywgVENHQXJnIHJl dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dBcmcgYXJnMSwgaW50IGNv bnN0X2FyZzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFyZzIs IGludCBjb25zdF9hcmcyKQorc3RhdGljIHZvaWQgdGNnX291dF9tdWwoVENHQ29udGV4dCAq cywgVENHQXJnIHJldCwgVENHQXJnIGFyZzEsIFRDR0FyZyBhcmcyKQogewotICAgIHRjZ19v dXRfYnVuZGxlKHMsIG1JSSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX200OChUQ0df UkVHX1AwLCBPUENfTk9QX000OCwgMCksCi0gICAgICAgICAgICAgICAgICAgdGNnX29wY19h MyAoVENHX1JFR19QMCwgT1BDX0FORENNX0EzLCBUQ0dfUkVHX1IyLCAtMSwgYXJnMiksCi0g ICAgICAgICAgICAgICAgICAgdGNnX29wY19hMSAoVENHX1JFR19QMCwgT1BDX09SX0ExLCBy ZXQsIGFyZzEsIFRDR19SRUdfUjIpKTsKKyAgICB0Y2dfb3BjX20xOChzLCBUQ0dfUkVHX1Aw LCBPUENfU0VURl9TSUdfTTE4LCBUQ0dfUkVHX0Y2LCBhcmcxKTsKKyAgICB0Y2dfb3BjX20x OChzLCBUQ0dfUkVHX1AwLCBPUENfU0VURl9TSUdfTTE4LCBUQ0dfUkVHX0Y3LCBhcmcyKTsK KyAgICB0Y2dfYWRkX3N0b3Aocyk7CisgICAgdGNnX29wY19mMihzLCBUQ0dfUkVHX1AwLCBP UENfWE1BX0xfRjIsIFRDR19SRUdfRjYsIFRDR19SRUdfRjYsCisgICAgICAgICAgICAgICBU Q0dfUkVHX0Y3LCBUQ0dfUkVHX0YwKTsKKyAgICB0Y2dfYWRkX3N0b3Aocyk7CisgICAgdGNn X29wY19tMTkocywgVENHX1JFR19QMCwgT1BDX0dFVEZfU0lHX00xOSwgcmV0LCBUQ0dfUkVH X0Y2KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfbXVsKFRDR0NvbnRleHQg KnMsIFRDR0FyZyByZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJn IGFyZzEsIFRDR0FyZyBhcmcyKQorc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfc2hsYWRk KFRDR0NvbnRleHQgKnMsIGludCBxcCwgaW50IHJldCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgYXJnMSwgaW50IHNoaWZ0LCBpbnQgYXJnMikKIHsKLSAgICB0 Y2dfb3V0X2J1bmRsZShzLCBtbUksCi0gICAgICAgICAgICAgICAgICAgdGNnX29wY19tMTgo VENHX1JFR19QMCwgT1BDX1NFVEZfU0lHX00xOCwgVENHX1JFR19GNiwgYXJnMSksCi0gICAg ICAgICAgICAgICAgICAgdGNnX29wY19tMTgoVENHX1JFR19QMCwgT1BDX1NFVEZfU0lHX00x OCwgVENHX1JFR19GNywgYXJnMiksCi0gICAgICAgICAgICAgICAgICAgdGNnX29wY19pMTgo VENHX1JFR19QMCwgT1BDX05PUF9JMTgsIDApKTsKLSAgICB0Y2dfb3V0X2J1bmRsZShzLCBt bUYsCi0gICAgICAgICAgICAgICAgICAgdGNnX29wY19tNDgoVENHX1JFR19QMCwgT1BDX05P UF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAs IE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2YyIChUQ0df UkVHX1AwLCBPUENfWE1BX0xfRjIsIFRDR19SRUdfRjYsIFRDR19SRUdfRjYsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19GNywgVENHX1JFR19GMCkpOwotICAg IHRjZ19vdXRfYnVuZGxlKHMsIG1pSSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX20x OShUQ0dfUkVHX1AwLCBPUENfR0VURl9TSUdfTTE5LCByZXQsIFRDR19SRUdfRjYpLAotICAg ICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19SRUdfUDAsIE9QQ19OT1BfSTE4LCAw KSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9Q X0kxOCwgMCkpOworICAgIHRjZ19vcGNfYTIocywgcXAsIE9QQ19TSExBRERfQTIsIHJldCwg YXJnMSwgc2hpZnQgLSAxLCBhcmcyKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHRjZ19v dXRfc2FyX2kzMihUQ0dDb250ZXh0ICpzLCBUQ0dBcmcgcmV0LCBUQ0dBcmcgYXJnMSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFyZzIsIGludCBjb25z dF9hcmcyKQorc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfc2FyX2kzMihUQ0dDb250ZXh0 ICpzLCBpbnQgcXAsIFRDR0FyZyByZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRDR0FyZyBhcmcxLCBUQ0dBcmcgYXJnMiwgaW50IGNvbnN0X2FyZzIpCiB7CiAg ICAgaWYgKGNvbnN0X2FyZzIpIHsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgbWlJLAot ICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9Q X000OCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19SRUdf UDAsIE9QQ19OT1BfSTE4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19p MTEoVENHX1JFR19QMCwgT1BDX0VYVFJfSTExLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXQsIGFyZzEsIGFyZzIsIDMxIC0gYXJnMikpOworICAgICAgICB0Y2df b3BjX2kxMShzLCBxcCwgT1BDX0VYVFJfSTExLCByZXQsIGFyZzEsIGFyZzIsIDMxIC0gYXJn Mik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgbUlJLAotICAg ICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2EzIChUQ0dfUkVHX1AwLCBPUENfQU5EX0Ez LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX1IzLCAweDFm LCBhcmcyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pMjkoVENHX1JFR19Q MCwgT1BDX1NYVDRfSTI5LCBUQ0dfUkVHX1IyLCBhcmcxKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgdGNnX29wY19pNSAoVENHX1JFR19QMCwgT1BDX1NIUl9JNSwgcmV0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX1IyLCBUQ0dfUkVHX1IzKSk7 CisgICAgICAgIHRjZ19vcGNfYTMocywgcXAsIE9QQ19BTkRfQTMsIFRDR19SRUdfUjMsIDB4 MWYsIGFyZzIpOworICAgICAgICB0Y2dfb3BjX2kyOShzLCBxcCwgT1BDX1NYVDRfSTI5LCBU Q0dfUkVHX1IyLCBhcmcxKTsKKyAgICAgICAgdGNnX29wY19pNShzLCBxcCwgT1BDX1NIUl9J NSwgcmV0LCBUQ0dfUkVHX1IyLCBUQ0dfUkVHX1IzKTsKICAgICB9CiB9CiAKLXN0YXRpYyBp bmxpbmUgdm9pZCB0Y2dfb3V0X3Nhcl9pNjQoVENHQ29udGV4dCAqcywgVENHQXJnIHJldCwg VENHQXJnIGFyZzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR0Fy ZyBhcmcyLCBpbnQgY29uc3RfYXJnMikKK3N0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfb3V0X3Nh cl9pNjQoVENHQ29udGV4dCAqcywgaW50IHFwLCBUQ0dBcmcgcmV0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUQ0dBcmcgYXJnMSwgVENHQXJnIGFyZzIsIGludCBj b25zdF9hcmcyKQogewogICAgIGlmIChjb25zdF9hcmcyKSB7Ci0gICAgICAgIHRjZ19vdXRf YnVuZGxlKHMsIG1pSSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19tNDgoVENH X1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2df b3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9QX0kxOCwgMCksCi0gICAgICAgICAgICAgICAg ICAgICAgIHRjZ19vcGNfaTExKFRDR19SRUdfUDAsIE9QQ19FWFRSX0kxMSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LCBhcmcxLCBhcmcyLCA2MyAtIGFyZzIp KTsKKyAgICAgICAgdGNnX29wY19pMTEocywgcXAsIE9QQ19FWFRSX0kxMSwgcmV0LCBhcmcx LCBhcmcyLCA2MyAtIGFyZzIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHRjZ19vdXRfYnVu ZGxlKHMsIG1pSSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19tNDgoVENHX1JF R19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3Bj X2kxOChUQ0dfUkVHX1AwLCBPUENfTk9QX0kxOCwgMCksCi0gICAgICAgICAgICAgICAgICAg ICAgIHRjZ19vcGNfaTUgKFRDR19SRUdfUDAsIE9QQ19TSFJfSTUsIHJldCwgYXJnMSwgYXJn MikpOworICAgICAgICB0Y2dfb3BjX2k1KHMsIHFwLCBPUENfU0hSX0k1LCByZXQsIGFyZzEs IGFyZzIpOwogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfc2hsX2kz MihUQ0dDb250ZXh0ICpzLCBUQ0dBcmcgcmV0LCBUQ0dBcmcgYXJnMSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFyZzIsIGludCBjb25zdF9hcmcyKQor c3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfc2hsX2kzMihUQ0dDb250ZXh0ICpzLCBpbnQg cXAsIFRDR0FyZyByZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRD R0FyZyBhcmcxLCBUQ0dBcmcgYXJnMiwgaW50IGNvbnN0X2FyZzIpCiB7CiAgICAgaWYgKGNv bnN0X2FyZzIpIHsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgbWlJLAotICAgICAgICAg ICAgICAgICAgICAgICB0Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCks Ci0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19SRUdfUDAsIE9QQ19O T1BfSTE4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pMTIoVENHX1JF R19QMCwgT1BDX0RFUF9aX0kxMiwgcmV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhcmcxLCA2MyAtIGFyZzIsIDMxIC0gYXJnMikpOworICAgICAgICBpZiAoYXJn MiA+PSAxICYmIGFyZzIgPD0gNCkgeworICAgICAgICAgICAgdGNnX291dF9zaGxhZGQocywg cXAsIHJldCwgYXJnMSwgYXJnMiwgVENHX1JFR19SMCk7CisgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICB0Y2dfb3BjX2kxMihzLCBxcCwgT1BDX0RFUF9aX0kxMiwgcmV0LCBhcmcx LCA2MyAtIGFyZzIsIDMxIC0gYXJnMik7CisgICAgICAgIH0KICAgICB9IGVsc2UgewotICAg ICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtSUksCi0gICAgICAgICAgICAgICAgICAgICAgIHRj Z19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgdGNnX29wY19hMyAoVENHX1JFR19QMCwgT1BDX0FORF9BMywgVENHX1JFR19S MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxZiwgYXJnMiksCi0g ICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTcgKFRDR19SRUdfUDAsIE9QQ19TSExf STcsIHJldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMSwgVENH X1JFR19SMikpOworICAgICAgICB0Y2dfb3BjX2EzKHMsIHFwLCBPUENfQU5EX0EzLCBUQ0df UkVHX1IyLCAweDFmLCBhcmcyKTsKKyAgICAgICAgdGNnX29wY19pNyhzLCBxcCwgT1BDX1NI TF9JNywgcmV0LCBhcmcxLCBUQ0dfUkVHX1IyKTsKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxp bmUgdm9pZCB0Y2dfb3V0X3NobF9pNjQoVENHQ29udGV4dCAqcywgVENHQXJnIHJldCwgVENH QXJnIGFyZzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR0FyZyBh cmcyLCBpbnQgY29uc3RfYXJnMikKK3N0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfb3V0X3NobF9p NjQoVENHQ29udGV4dCAqcywgaW50IHFwLCBUQ0dBcmcgcmV0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUQ0dBcmcgYXJnMSwgVENHQXJnIGFyZzIsIGludCBjb25z dF9hcmcyKQogewogICAgIGlmIChjb25zdF9hcmcyKSB7Ci0gICAgICAgIHRjZ19vdXRfYnVu ZGxlKHMsIG1pSSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19tNDgoVENHX1JF R19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3Bj X2kxOChUQ0dfUkVHX1AwLCBPUENfTk9QX0kxOCwgMCksCi0gICAgICAgICAgICAgICAgICAg ICAgIHRjZ19vcGNfaTEyKFRDR19SRUdfUDAsIE9QQ19ERVBfWl9JMTIsIHJldCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMSwgNjMgLSBhcmcyLCA2MyAtIGFy ZzIpKTsKKyAgICAgICAgaWYgKGFyZzIgPj0gMSAmJiBhcmcyIDw9IDQpIHsKKyAgICAgICAg ICAgIHRjZ19vdXRfc2hsYWRkKHMsIHFwLCByZXQsIGFyZzEsIGFyZzIsIFRDR19SRUdfUjAp OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGNnX29wY19pMTIocywgcXAsIE9Q Q19ERVBfWl9JMTIsIHJldCwgYXJnMSwgNjMgLSBhcmcyLCA2MyAtIGFyZzIpOworICAgICAg ICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgbWlJLAotICAg ICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9QX000 OCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19SRUdfUDAs IE9QQ19OT1BfSTE4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pNyAo VENHX1JFR19QMCwgT1BDX1NITF9JNywgcmV0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhcmcxLCBhcmcyKSk7CisgICAgICAgIHRjZ19vcGNfaTcocywgcXAsIE9Q Q19TSExfSTcsIHJldCwgYXJnMSwgYXJnMik7CiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5l IHZvaWQgdGNnX291dF9zaHJfaTMyKFRDR0NvbnRleHQgKnMsIFRDR0FyZyByZXQsIFRDR0Fy ZyBhcmcxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dBcmcgYXJn MiwgaW50IGNvbnN0X2FyZzIpCitzdGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9zaHJfaTMy KFRDR0NvbnRleHQgKnMsIGludCBxcCwgVENHQXJnIHJldCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVENHQXJnIGFyZzEsIFRDR0FyZyBhcmcyLCBpbnQgY29uc3Rf YXJnMikKIHsKICAgICBpZiAoY29uc3RfYXJnMikgewotICAgICAgICB0Y2dfb3V0X2J1bmRs ZShzLCBtaUksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdf UDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19p MTgoVENHX1JFR19QMCwgT1BDX05PUF9JMTgsIDApLAotICAgICAgICAgICAgICAgICAgICAg ICB0Y2dfb3BjX2kxMShUQ0dfUkVHX1AwLCBPUENfRVhUUl9VX0kxMSwgcmV0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcxLCBhcmcyLCAzMSAtIGFyZzIpKTsK KyAgICAgICAgdGNnX29wY19pMTEocywgcXAsIE9QQ19FWFRSX1VfSTExLCByZXQsIGFyZzEs IGFyZzIsIDMxIC0gYXJnMik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdGNnX291dF9idW5k bGUocywgbUlJLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2EzIChUQ0dfUkVH X1AwLCBPUENfQU5EX0EzLCBUQ0dfUkVHX1IzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDFmLCBhcmcyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29w Y19pMjkoVENHX1JFR19QMCwgT1BDX1pYVDRfSTI5LCBUQ0dfUkVHX1IyLCBhcmcxKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pNSAoVENHX1JFR19QMCwgT1BDX1NIUl9V X0k1LCByZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdf UjIsIFRDR19SRUdfUjMpKTsKKyAgICAgICAgdGNnX29wY19hMyhzLCBxcCwgT1BDX0FORF9B MywgVENHX1JFR19SMywgMHgxZiwgYXJnMik7CisgICAgICAgIHRjZ19vcGNfaTI5KHMsIHFw LCBPUENfWlhUNF9JMjksIFRDR19SRUdfUjIsIGFyZzEpOworICAgICAgICB0Y2dfb3BjX2k1 KHMsIHFwLCBPUENfU0hSX1VfSTUsIHJldCwgVENHX1JFR19SMiwgVENHX1JFR19SMyk7CiAg ICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9zaHJfaTY0KFRDR0NvbnRl eHQgKnMsIFRDR0FyZyByZXQsIFRDR0FyZyBhcmcxLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUQ0dBcmcgYXJnMiwgaW50IGNvbnN0X2FyZzIpCitzdGF0aWMgaW5s aW5lIHZvaWQgdGNnX291dF9zaHJfaTY0KFRDR0NvbnRleHQgKnMsIGludCBxcCwgVENHQXJn IHJldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFyZzEs IFRDR0FyZyBhcmcyLCBpbnQgY29uc3RfYXJnMikKIHsKICAgICBpZiAoY29uc3RfYXJnMikg ewotICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtaUksCi0gICAgICAgICAgICAgICAgICAg ICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgdGNnX29wY19pMTgoVENHX1JFR19QMCwgT1BDX05PUF9JMTgsIDAp LAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kxMShUQ0dfUkVHX1AwLCBPUENf RVhUUl9VX0kxMSwgcmV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh cmcxLCBhcmcyLCA2MyAtIGFyZzIpKTsKKyAgICAgICAgdGNnX29wY19pMTEocywgcXAsIE9Q Q19FWFRSX1VfSTExLCByZXQsIGFyZzEsIGFyZzIsIDYzIC0gYXJnMik7CiAgICAgfSBlbHNl IHsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgbWlJLAotICAgICAgICAgICAgICAgICAg ICAgICB0Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCksCi0gICAgICAg ICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19SRUdfUDAsIE9QQ19OT1BfSTE4LCAw KSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pNSAoVENHX1JFR19QMCwgT1BD X1NIUl9VX0k1LCByZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFy ZzEsIGFyZzIpKTsKKyAgICAgICAgdGNnX29wY19pNShzLCBxcCwgT1BDX1NIUl9VX0k1LCBy ZXQsIGFyZzEsIGFyZzIpOwogICAgIH0KIH0KIApAQCAtMTIwOSwyNSArMTU4MCwxNCBAQCBz dGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9yb3RsX2kzMihUQ0dDb250ZXh0ICpzLCBUQ0dB cmcgcmV0LCBUQ0dBcmcgYXJnMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRDR0FyZyBhcmcyLCBpbnQgY29uc3RfYXJnMikKIHsKICAgICBpZiAoY29uc3RfYXJn MikgewotICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtSUksCi0gICAgICAgICAgICAgICAg ICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgdGNnX29wY19pMiAoVENHX1JFR19QMCwgT1BDX1VOUEFDSzRf TF9JMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19SMiwg YXJnMSwgYXJnMSksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTExKFRDR19S RUdfUDAsIE9QQ19FWFRSX1VfSTExLCByZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRDR19SRUdfUjIsIDMyIC0gYXJnMiwgMzEpKTsKKyAgICAgICAgdGNnX29w Y19pMihzLCBUQ0dfUkVHX1AwLCBPUENfVU5QQUNLNF9MX0kyLCBUQ0dfUkVHX1IyLCBhcmcx LCBhcmcxKTsKKyAgICAgICAgdGNnX29wY19pMTEocywgVENHX1JFR19QMCwgT1BDX0VYVFJf VV9JMTEsCisgICAgICAgICAgICAgICAgICAgIHJldCwgVENHX1JFR19SMiwgMzIgLSBhcmcy LCAzMSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgbWlJLAot ICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9Q X000OCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTIgKFRDR19SRUdf UDAsIE9QQ19VTlBBQ0s0X0xfSTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRDR19SRUdfUjIsIGFyZzEsIGFyZzEpLAotICAgICAgICAgICAgICAgICAgICAgICB0 Y2dfb3BjX2EzIChUQ0dfUkVHX1AwLCBPUENfQU5EX0EzLCBUQ0dfUkVHX1IzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFmLCBhcmcyKSk7Ci0gICAgICAgIHRj Z19vdXRfYnVuZGxlKHMsIG1JSSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19t NDgoVENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgICAg ICB0Y2dfb3BjX2EzIChUQ0dfUkVHX1AwLCBPUENfU1VCX0EzLCBUQ0dfUkVHX1IzLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwLCBUQ0dfUkVHX1IzKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pNSAoVENHX1JFR19QMCwgT1BDX1NIUl9V X0k1LCByZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdf UjIsIFRDR19SRUdfUjMpKTsKKyAgICAgICAgdGNnX29wY19hMyhzLCBUQ0dfUkVHX1AwLCBP UENfQU5EX0EzLCBUQ0dfUkVHX1IzLCAweDFmLCBhcmcyKTsKKyAgICAgICAgdGNnX29wY19p MihzLCBUQ0dfUkVHX1AwLCBPUENfVU5QQUNLNF9MX0kyLCBUQ0dfUkVHX1IyLCBhcmcxLCBh cmcxKTsKKyAgICAgICAgdGNnX29wY19hMyhzLCBUQ0dfUkVHX1AwLCBPUENfU1VCX0EzLCBU Q0dfUkVHX1IzLCAweDIwLCBUQ0dfUkVHX1IzKTsKKyAgICAgICAgdGNnX29wY19pNShzLCBU Q0dfUkVHX1AwLCBPUENfU0hSX1VfSTUsIHJldCwgVENHX1JFR19SMiwgVENHX1JFR19SMyk7 CiAgICAgfQogfQogCkBAIC0xMjM1LDI0ICsxNTk1LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCB0Y2dfb3V0X3JvdGxfaTY0KFRDR0NvbnRleHQgKnMsIFRDR0FyZyByZXQsIFRDR0FyZyBh cmcxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFyZzIs IGludCBjb25zdF9hcmcyKQogewogICAgIGlmIChjb25zdF9hcmcyKSB7Ci0gICAgICAgIHRj Z19vdXRfYnVuZGxlKHMsIG1pSSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19t NDgoVENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgICAg ICB0Y2dfb3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9QX0kxOCwgMCksCi0gICAgICAgICAg ICAgICAgICAgICAgIHRjZ19vcGNfaTEwKFRDR19SRUdfUDAsIE9QQ19TSFJQX0kxMCwgcmV0 LCBhcmcxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcxLCAweDQw IC0gYXJnMikpOworICAgICAgICB0Y2dfb3BjX2kxMChzLCBUQ0dfUkVHX1AwLCBPUENfU0hS UF9JMTAsIHJldCwgYXJnMSwgYXJnMSwgMHg0MCAtIGFyZzIpOwogICAgIH0gZWxzZSB7Ci0g ICAgICAgIHRjZ19vdXRfYnVuZGxlKHMsIG1JSSwKLSAgICAgICAgICAgICAgICAgICAgICAg dGNnX29wY19hMyAoVENHX1JFR19QMCwgT1BDX1NVQl9BMywgVENHX1JFR19SMiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCwgYXJnMiksCi0gICAgICAgICAg ICAgICAgICAgICAgIHRjZ19vcGNfaTcgKFRDR19SRUdfUDAsIE9QQ19TSExfSTcsIFRDR19S RUdfUjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzEsIGFyZzIp LAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2k1IChUQ0dfUkVHX1AwLCBPUENf U0hSX1VfSTUsIFRDR19SRUdfUjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFyZzEsIFRDR19SRUdfUjIpKTsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgbWlJ LAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENf Tk9QX000OCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19S RUdfUDAsIE9QQ19OT1BfSTE4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29w Y19hMSAoVENHX1JFR19QMCwgT1BDX09SX0ExLCByZXQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRDR19SRUdfUjIsIFRDR19SRUdfUjMpKTsKKyAgICAgICAgdGNn X29wY19hMyhzLCBUQ0dfUkVHX1AwLCBPUENfU1VCX0EzLCBUQ0dfUkVHX1IyLCAweDQwLCBh cmcyKTsKKyAgICAgICAgdGNnX29wY19pNyhzLCBUQ0dfUkVHX1AwLCBPUENfU0hMX0k3LCBU Q0dfUkVHX1IzLCBhcmcxLCBhcmcyKTsKKyAgICAgICAgdGNnX29wY19pNShzLCBUQ0dfUkVH X1AwLCBPUENfU0hSX1VfSTUsIFRDR19SRUdfUjIsIGFyZzEsIFRDR19SRUdfUjIpOworICAg ICAgICB0Y2dfb3BjX2ExKHMsIFRDR19SRUdfUDAsIE9QQ19PUl9BMSwgcmV0LCBUQ0dfUkVH X1IyLCBUQ0dfUkVHX1IzKTsKICAgICB9CiB9CiAKQEAgLTEyNjAsMjAgKzE2MDgsMTIgQEAg c3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfcm90cl9pMzIoVENHQ29udGV4dCAqcywgVENH QXJnIHJldCwgVENHQXJnIGFyZzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUQ0dBcmcgYXJnMiwgaW50IGNvbnN0X2FyZzIpCiB7CiAgICAgaWYgKGNvbnN0X2Fy ZzIpIHsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgbUlJLAotICAgICAgICAgICAgICAg ICAgICAgICB0Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCksCi0gICAg ICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTIgKFRDR19SRUdfUDAsIE9QQ19VTlBBQ0s0 X0xfSTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdfUjIs IGFyZzEsIGFyZzEpLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kxMShUQ0df UkVHX1AwLCBPUENfRVhUUl9VX0kxMSwgcmV0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUQ0dfUkVHX1IyLCBhcmcyLCAzMSkpOworICAgICAgICB0Y2dfb3BjX2ky KHMsIFRDR19SRUdfUDAsIE9QQ19VTlBBQ0s0X0xfSTIsIFRDR19SRUdfUjIsIGFyZzEsIGFy ZzEpOworICAgICAgICB0Y2dfb3BjX2kxMShzLCBUQ0dfUkVHX1AwLCBPUENfRVhUUl9VX0kx MSwgcmV0LCBUQ0dfUkVHX1IyLCBhcmcyLCAzMSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg dGNnX291dF9idW5kbGUocywgbUlJLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3Bj X2EzIChUQ0dfUkVHX1AwLCBPUENfQU5EX0EzLCBUQ0dfUkVHX1IzLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDFmLCBhcmcyKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgdGNnX29wY19pMiAoVENHX1JFR19QMCwgT1BDX1VOUEFDSzRfTF9JMiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19SMiwgYXJnMSwgYXJnMSks Ci0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTUgKFRDR19SRUdfUDAsIE9QQ19T SFJfVV9JNSwgcmV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0df UkVHX1IyLCBUQ0dfUkVHX1IzKSk7CisgICAgICAgIHRjZ19vcGNfYTMocywgVENHX1JFR19Q MCwgT1BDX0FORF9BMywgVENHX1JFR19SMywgMHgxZiwgYXJnMik7CisgICAgICAgIHRjZ19v cGNfaTIocywgVENHX1JFR19QMCwgT1BDX1VOUEFDSzRfTF9JMiwgVENHX1JFR19SMiwgYXJn MSwgYXJnMSk7CisgICAgICAgIHRjZ19vcGNfaTUocywgVENHX1JFR19QMCwgT1BDX1NIUl9V X0k1LCByZXQsIFRDR19SRUdfUjIsIFRDR19SRUdfUjMpOwogICAgIH0KIH0KIApAQCAtMTI4 MSw2MiArMTYyMSw1MSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9yb3RyX2k2NChU Q0dDb250ZXh0ICpzLCBUQ0dBcmcgcmV0LCBUQ0dBcmcgYXJnMSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRDR0FyZyBhcmcyLCBpbnQgY29uc3RfYXJnMikKIHsK ICAgICBpZiAoY29uc3RfYXJnMikgewotICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtaUks Ci0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19O T1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pMTgoVENHX1JF R19QMCwgT1BDX05PUF9JMTgsIDApLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3Bj X2kxMChUQ0dfUkVHX1AwLCBPUENfU0hSUF9JMTAsIHJldCwgYXJnMSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXJnMSwgYXJnMikpOworICAgICAgICB0Y2dfb3Bj X2kxMChzLCBUQ0dfUkVHX1AwLCBPUENfU0hSUF9JMTAsIHJldCwgYXJnMSwgYXJnMSwgYXJn Mik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgbUlJLAotICAg ICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2EzIChUQ0dfUkVHX1AwLCBPUENfU1VCX0Ez LCBUQ0dfUkVHX1IyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQw LCBhcmcyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pNSAoVENHX1JFR19Q MCwgT1BDX1NIUl9VX0k1LCBUQ0dfUkVHX1IzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhcmcxLCBhcmcyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29w Y19pNyAoVENHX1JFR19QMCwgT1BDX1NITF9JNywgVENHX1JFR19SMiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXJnMSwgVENHX1JFR19SMikpOwotICAgICAgICB0 Y2dfb3V0X2J1bmRsZShzLCBtaUksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNf bTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgdGNnX29wY19pMTgoVENHX1JFR19QMCwgT1BDX05PUF9JMTgsIDApLAotICAgICAgICAg ICAgICAgICAgICAgICB0Y2dfb3BjX2ExIChUQ0dfUkVHX1AwLCBPUENfT1JfQTEsIHJldCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19SMiwgVENHX1JF R19SMykpOworICAgICAgICB0Y2dfb3BjX2EzKHMsIFRDR19SRUdfUDAsIE9QQ19TVUJfQTMs IFRDR19SRUdfUjIsIDB4NDAsIGFyZzIpOworICAgICAgICB0Y2dfb3BjX2k1KHMsIFRDR19S RUdfUDAsIE9QQ19TSFJfVV9JNSwgVENHX1JFR19SMywgYXJnMSwgYXJnMik7CisgICAgICAg IHRjZ19vcGNfaTcocywgVENHX1JFR19QMCwgT1BDX1NITF9JNywgVENHX1JFR19SMiwgYXJn MSwgVENHX1JFR19SMik7CisgICAgICAgIHRjZ19vcGNfYTEocywgVENHX1JFR19QMCwgT1BD X09SX0ExLCByZXQsIFRDR19SRUdfUjIsIFRDR19SRUdfUjMpOwogICAgIH0KIH0KIAogc3Rh dGljIGlubGluZSB2b2lkIHRjZ19vdXRfZXh0KFRDR0NvbnRleHQgKnMsIHVpbnQ2NF90IG9w Y19pMjksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIHJldCwgVENH QXJnIGFyZykKIHsKLSAgICB0Y2dfb3V0X2J1bmRsZShzLCBtaUksCi0gICAgICAgICAgICAg ICAgICAgdGNnX29wY19tNDgoVENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAg ICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19SRUdfUDAsIE9QQ19OT1BfSTE4LCAwKSwK LSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kyOShUQ0dfUkVHX1AwLCBvcGNfaTI5LCBy ZXQsIGFyZykpOworICAgIHRjZ19vcGNfaTI5KHMsIFRDR19SRUdfUDAsIG9wY19pMjksIHJl dCwgYXJnKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfYnN3YXAxNihUQ0dD b250ZXh0ICpzLCBUQ0dBcmcgcmV0LCBUQ0dBcmcgYXJnKQorc3RhdGljIGlubGluZSB2b2lk IHRjZ19vdXRfYnN3YXA2NChUQ0dDb250ZXh0ICpzLCBpbnQgcXAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRDR0FyZyByZXQsIFRDR0FyZyBhcmcpCiB7Ci0gICAg dGNnX291dF9idW5kbGUocywgbUlJLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4 KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICB0Y2df b3BjX2kxMihUQ0dfUkVHX1AwLCBPUENfREVQX1pfSTEyLCByZXQsIGFyZywgMTUsIDE1KSwK LSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kzIChUQ0dfUkVHX1AwLCBPUENfTVVYMV9J MywgcmV0LCByZXQsIDB4YikpOworICAgIHRjZ19vcGNfaTMocywgcXAsIE9QQ19NVVgxX0kz LCByZXQsIGFyZywgMHhiKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfYnN3 YXAzMihUQ0dDb250ZXh0ICpzLCBUQ0dBcmcgcmV0LCBUQ0dBcmcgYXJnKQorc3RhdGljIGlu bGluZSB2b2lkIHRjZ19vdXRfYnN3YXAxNihUQ0dDb250ZXh0ICpzLCBpbnQgcXAsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR0FyZyByZXQsIFRDR0FyZyBhcmcs IGJvb2wgc2lnbikKIHsKLSAgICB0Y2dfb3V0X2J1bmRsZShzLCBtSUksCi0gICAgICAgICAg ICAgICAgICAgdGNnX29wY19tNDgoVENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAg ICAgICAgICAgICAgICAgIHRjZ19vcGNfaTEyKFRDR19SRUdfUDAsIE9QQ19ERVBfWl9JMTIs IHJldCwgYXJnLCAzMSwgMzEpLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTMgKFRD R19SRUdfUDAsIE9QQ19NVVgxX0kzLCByZXQsIHJldCwgMHhiKSk7CisgICAgdGNnX291dF9i c3dhcDY0KHMsIHFwLCByZXQsIGFyZyk7CisgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgdGNn X291dF9zYXJfaTY0KHMsIHFwLCByZXQsIHJldCwgNDgsIDEpOworICAgIH0gZWxzZSB7Cisg ICAgICAgIHRjZ19vdXRfc2hyX2k2NChzLCBxcCwgcmV0LCByZXQsIDQ4LCAxKTsKKyAgICB9 CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfb3V0X2Jzd2FwNjQoVENHQ29udGV4dCAq cywgVENHQXJnIHJldCwgVENHQXJnIGFyZykKK3N0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfb3V0 X2Jzd2FwMzIoVENHQ29udGV4dCAqcywgaW50IHFwLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUQ0dBcmcgcmV0LCBUQ0dBcmcgYXJnLCBib29sIHNpZ24pCiB7Ci0g ICAgdGNnX291dF9idW5kbGUocywgbUlJLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNf bTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICB0 Y2dfb3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9QX0kxOCwgMCksCi0gICAgICAgICAgICAg ICAgICAgdGNnX29wY19pMyAoVENHX1JFR19QMCwgT1BDX01VWDFfSTMsIHJldCwgYXJnLCAw eGIpKTsKKyAgICB0Y2dfb3V0X2Jzd2FwNjQocywgcXAsIHJldCwgYXJnKTsKKyAgICBpZiAo c2lnbikgeworICAgICAgICB0Y2dfb3V0X3Nhcl9pNjQocywgcXAsIHJldCwgcmV0LCAzMiwg MSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGNnX291dF9zaHJfaTY0KHMsIHFwLCByZXQs IHJldCwgMzIsIDEpOworICAgIH0KIH0KIAotc3RhdGljIGlubGluZSB1aW50NjRfdCB0Y2df b3BjX2NtcF9hKGludCBxcCwgVENHQ29uZCBjb25kLCBUQ0dBcmcgYXJnMSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dBcmcgYXJnMiwgaW50IGNtcDQpCitz dGF0aWMgdm9pZCB0Y2dfb3BjX2NtcF9hKFRDR0NvbnRleHQgKnMsIGludCBxcCwgVENHQ29u ZCBjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dBcmcgYXJnMSwgVENHQXJn IGFyZzIsIGludCBjbXA0KQogewogICAgIHVpbnQ2NF90IG9wY19lcV9hNiwgb3BjX2x0X2E2 LCBvcGNfbHR1X2E2OwogCkBAIC0xMzUyLDc5ICsxNjgxLDY5IEBAIHN0YXRpYyBpbmxpbmUg dWludDY0X3QgdGNnX29wY19jbXBfYShpbnQgcXAsIFRDR0NvbmQgY29uZCwgVENHQXJnIGFy ZzEsCiAKICAgICBzd2l0Y2ggKGNvbmQpIHsKICAgICBjYXNlIFRDR19DT05EX0VROgotICAg ICAgICByZXR1cm4gdGNnX29wY19hNiAocXAsIG9wY19lcV9hNiwgIFRDR19SRUdfUDYsIFRD R19SRUdfUDcsIGFyZzEsIGFyZzIpOworICAgICAgICB0Y2dfb3BjX2E2KHMsIHFwLCBvcGNf ZXFfYTYsICBUQ0dfUkVHX1A2LCBUQ0dfUkVHX1A3LCBhcmcxLCBhcmcyKTsKKyAgICAgICAg YnJlYWs7CiAgICAgY2FzZSBUQ0dfQ09ORF9ORToKLSAgICAgICAgcmV0dXJuIHRjZ19vcGNf YTYgKHFwLCBvcGNfZXFfYTYsICBUQ0dfUkVHX1A3LCBUQ0dfUkVHX1A2LCBhcmcxLCBhcmcy KTsKKyAgICAgICAgdGNnX29wY19hNihzLCBxcCwgb3BjX2VxX2E2LCAgVENHX1JFR19QNywg VENHX1JFR19QNiwgYXJnMSwgYXJnMik7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVENH X0NPTkRfTFQ6Ci0gICAgICAgIHJldHVybiB0Y2dfb3BjX2E2IChxcCwgb3BjX2x0X2E2LCAg VENHX1JFR19QNiwgVENHX1JFR19QNywgYXJnMSwgYXJnMik7CisgICAgICAgIHRjZ19vcGNf YTYocywgcXAsIG9wY19sdF9hNiwgIFRDR19SRUdfUDYsIFRDR19SRUdfUDcsIGFyZzEsIGFy ZzIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFRDR19DT05EX0xUVToKLSAgICAgICAg cmV0dXJuIHRjZ19vcGNfYTYgKHFwLCBvcGNfbHR1X2E2LCBUQ0dfUkVHX1A2LCBUQ0dfUkVH X1A3LCBhcmcxLCBhcmcyKTsKKyAgICAgICAgdGNnX29wY19hNihzLCBxcCwgb3BjX2x0dV9h NiwgVENHX1JFR19QNiwgVENHX1JFR19QNywgYXJnMSwgYXJnMik7CisgICAgICAgIGJyZWFr OwogICAgIGNhc2UgVENHX0NPTkRfR0U6Ci0gICAgICAgIHJldHVybiB0Y2dfb3BjX2E2IChx cCwgb3BjX2x0X2E2LCAgVENHX1JFR19QNywgVENHX1JFR19QNiwgYXJnMSwgYXJnMik7Cisg ICAgICAgIHRjZ19vcGNfYTYocywgcXAsIG9wY19sdF9hNiwgIFRDR19SRUdfUDcsIFRDR19S RUdfUDYsIGFyZzEsIGFyZzIpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFRDR19DT05E X0dFVToKLSAgICAgICAgcmV0dXJuIHRjZ19vcGNfYTYgKHFwLCBvcGNfbHR1X2E2LCBUQ0df UkVHX1A3LCBUQ0dfUkVHX1A2LCBhcmcxLCBhcmcyKTsKKyAgICAgICAgdGNnX29wY19hNihz LCBxcCwgb3BjX2x0dV9hNiwgVENHX1JFR19QNywgVENHX1JFR19QNiwgYXJnMSwgYXJnMik7 CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVENHX0NPTkRfTEU6Ci0gICAgICAgIHJldHVy biB0Y2dfb3BjX2E2IChxcCwgb3BjX2x0X2E2LCAgVENHX1JFR19QNywgVENHX1JFR19QNiwg YXJnMiwgYXJnMSk7CisgICAgICAgIHRjZ19vcGNfYTYocywgcXAsIG9wY19sdF9hNiwgIFRD R19SRUdfUDcsIFRDR19SRUdfUDYsIGFyZzIsIGFyZzEpOworICAgICAgICBicmVhazsKICAg ICBjYXNlIFRDR19DT05EX0xFVToKLSAgICAgICAgcmV0dXJuIHRjZ19vcGNfYTYgKHFwLCBv cGNfbHR1X2E2LCBUQ0dfUkVHX1A3LCBUQ0dfUkVHX1A2LCBhcmcyLCBhcmcxKTsKKyAgICAg ICAgdGNnX29wY19hNihzLCBxcCwgb3BjX2x0dV9hNiwgVENHX1JFR19QNywgVENHX1JFR19Q NiwgYXJnMiwgYXJnMSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVENHX0NPTkRfR1Q6 Ci0gICAgICAgIHJldHVybiB0Y2dfb3BjX2E2IChxcCwgb3BjX2x0X2E2LCAgVENHX1JFR19Q NiwgVENHX1JFR19QNywgYXJnMiwgYXJnMSk7CisgICAgICAgIHRjZ19vcGNfYTYocywgcXAs IG9wY19sdF9hNiwgIFRDR19SRUdfUDYsIFRDR19SRUdfUDcsIGFyZzIsIGFyZzEpOworICAg ICAgICBicmVhazsKICAgICBjYXNlIFRDR19DT05EX0dUVToKLSAgICAgICAgcmV0dXJuIHRj Z19vcGNfYTYgKHFwLCBvcGNfbHR1X2E2LCBUQ0dfUkVHX1A2LCBUQ0dfUkVHX1A3LCBhcmcy LCBhcmcxKTsKKyAgICAgICAgdGNnX29wY19hNihzLCBxcCwgb3BjX2x0dV9hNiwgVENHX1JF R19QNiwgVENHX1JFR19QNywgYXJnMiwgYXJnMSk7CisgICAgICAgIGJyZWFrOwogICAgIGRl ZmF1bHQ6CiAgICAgICAgIHRjZ19hYm9ydCgpOwogICAgICAgICBicmVhazsKICAgICB9CiB9 CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfb3V0X2JyY29uZChUQ0dDb250ZXh0ICpzLCBU Q0dDb25kIGNvbmQsIFRDR0FyZyBhcmcxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBjb25zdF9hcmcxLCBUQ0dBcmcgYXJnMiwgaW50IGNvbnN0X2FyZzIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxhYmVsX2luZGV4LCBpbnQg Y21wNCkKK3N0YXRpYyB2b2lkIHRjZ19vdXRfYnJjb25kKFRDR0NvbnRleHQgKnMsIFRDR0Nv bmQgY29uZCwgVENHQXJnIGFyZzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg Y29uc3RfYXJnMSwgVENHQXJnIGFyZzIsIGludCBjb25zdF9hcmcyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGxhYmVsX2luZGV4LCBpbnQgY21wNCkKIHsKLSAgICBUQ0dM YWJlbCAqbCA9ICZzLT5sYWJlbHNbbGFiZWxfaW5kZXhdOwotICAgIHVpbnQ2NF90IG9wYzEs IG9wYzI7Ci0KICAgICBpZiAoY29uc3RfYXJnMSAmJiBhcmcxICE9IDApIHsKLSAgICAgICAg b3BjMSA9IHRjZ19vcGNfYTUoVENHX1JFR19QMCwgT1BDX0FERExfQTUsIFRDR19SRUdfUjIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzEsIFRDR19SRUdfUjApOworICAgICAg ICB0Y2dfb3V0X21vdmkocywgVENHX1RZUEVfSTY0LCBUQ0dfUkVHX1IyLCBhcmcxKTsKICAg ICAgICAgYXJnMSA9IFRDR19SRUdfUjI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgb3BjMSA9 IHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKTsKICAgICB9Ci0KICAg ICBpZiAoY29uc3RfYXJnMiAmJiBhcmcyICE9IDApIHsKLSAgICAgICAgb3BjMiA9IHRjZ19v cGNfYTUoVENHX1JFR19QMCwgT1BDX0FERExfQTUsIFRDR19SRUdfUjMsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgIGFyZzIsIFRDR19SRUdfUjApOworICAgICAgICB0Y2dfb3V0X21v dmkocywgVENHX1RZUEVfSTY0LCBUQ0dfUkVHX1IzLCBhcmcyKTsKICAgICAgICAgYXJnMiA9 IFRDR19SRUdfUjM7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgb3BjMiA9IHRjZ19vcGNfaTE4 KFRDR19SRUdfUDAsIE9QQ19OT1BfSTE4LCAwKTsKICAgICB9CiAKLSAgICB0Y2dfb3V0X2J1 bmRsZShzLCBtSUksCi0gICAgICAgICAgICAgICAgICAgb3BjMSwKLSAgICAgICAgICAgICAg ICAgICBvcGMyLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfY21wX2EoVENHX1JFR19Q MCwgY29uZCwgYXJnMSwgYXJnMiwgY21wNCkpOwotICAgIHRjZ19vdXRfYnVuZGxlKHMsIG1t QiwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9Q X000OCwgMCksCi0gICAgICAgICAgICAgICAgICAgdGNnX29wY19tNDgoVENHX1JFR19QMCwg T1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfYjEgKFRDR19S RUdfUDYsIE9QQ19CUl9EUFRLX0ZFV19CMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnZXRfcmVsb2NfcGNyZWwyMWIocy0+Y29kZV9wdHIgKyAyKSkpOwotCi0gICAgaWYg KGwtPmhhc192YWx1ZSkgewotICAgICAgICByZWxvY19wY3JlbDIxYigocy0+Y29kZV9wdHIg LSAxNikgKyAyLCBsLT51LnZhbHVlKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0Y2dfb3V0 X3JlbG9jKHMsIChzLT5jb2RlX3B0ciAtIDE2KSArIDIsCi0gICAgICAgICAgICAgICAgICAg ICAgUl9JQTY0X1BDUkVMMjFCLCBsYWJlbF9pbmRleCwgMCk7Ci0gICAgfQorICAgIHRjZ19v cGNfY21wX2EocywgVENHX1JFR19QMCwgY29uZCwgYXJnMSwgYXJnMiwgY21wNCk7CisgICAg LyogTm8gc3RvcCBiaXQgcmVxdWlyZWQgYmV0d2VlbiBjb21wYXJlIGFuZCBicmFuY2guICAq LworCisgICAgdGNnX29wY19iMShzLCBUQ0dfUkVHX1A2LCBPUENfQlJfRFBUS19GRVdfQjEs IDApOworICAgIHRjZ19mbHVzaF9xdWV1ZShzKTsKKyAgICB0Y2dfb3V0X3JlbG9jKHMsIChz LT5jb2RlX3B0ciAtIDE2KSArIDIsIFJfSUE2NF9QQ1JFTDIxQiwgbGFiZWxfaW5kZXgsIDAp OwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9zZXRjb25kKFRDR0NvbnRleHQg KnMsIFRDR0NvbmQgY29uZCwgVENHQXJnIHJldCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVENHQXJnIGFyZzEsIFRDR0FyZyBhcmcyLCBpbnQgY21wNCkKK3N0YXRp YyB2b2lkIHRjZ19vdXRfc2V0Y29uZChUQ0dDb250ZXh0ICpzLCBUQ0dDb25kIGNvbmQsIFRD R0FyZyByZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHQXJnIGFyZzEsIFRD R0FyZyBhcmcyLCBpbnQgY21wNCkKIHsKLSAgICB0Y2dfb3V0X2J1bmRsZShzLCBNbUksCi0g ICAgICAgICAgICAgICAgICAgdGNnX29wY19jbXBfYShUQ0dfUkVHX1AwLCBjb25kLCBhcmcx LCBhcmcyLCBjbXA0KSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2E1KFRDR19SRUdf UDYsIE9QQ19BRERMX0E1LCByZXQsIDEsIFRDR19SRUdfUjApLAotICAgICAgICAgICAgICAg ICAgIHRjZ19vcGNfYTUoVENHX1JFR19QNywgT1BDX0FERExfQTUsIHJldCwgMCwgVENHX1JF R19SMCkpOworICAgIHRjZ19vcGNfY21wX2EocywgVENHX1JFR19QMCwgY29uZCwgYXJnMSwg YXJnMiwgY21wNCk7CisgICAgdGNnX2FkZF9zdG9wKHMpOworICAgIHRjZ19vcGNfYTUocywg VENHX1JFR19QNiwgT1BDX0FERExfQTUsIHJldCwgMSwgVENHX1JFR19SMCk7CisgICAgdGNn X29wY19hNShzLCBUQ0dfUkVHX1A3LCBPUENfQURETF9BNSwgcmV0LCAwLCBUQ0dfUkVHX1Iw KTsKIH0KIAogI2lmIGRlZmluZWQoQ09ORklHX1NPRlRNTVUpCkBAIC0xNDMyLDYyICsxNzUx LDc1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfb3V0X3NldGNvbmQoVENHQ29udGV4dCAq cywgVENHQ29uZCBjb25kLCBUQ0dBcmcgcmV0LAogI2luY2x1ZGUgIi4uLy4uL3NvZnRtbXVf ZGVmcy5oIgogCiAvKiBMb2FkIGFuZCBjb21wYXJlIGEgVExCIGVudHJ5LCBhbmQgcmV0dXJu IHRoZSByZXN1bHQgaW4gKHA2LCBwNykuCi0gICBSMiBpcyBsb2FkZWQgd2l0aCB0aGUgYWRk cmVzcyBvZiB0aGUgYWRkZW5kIFRMQiBlbnRyeS4KLSAgIFI1NiBpcyBsb2FkZWQgd2l0aCB0 aGUgYWRkcmVzcywgemVybyBleHRlbnRlZCBvbiAzMi1iaXQgdGFyZ2V0cy4gKi8KLXN0YXRp YyBpbmxpbmUgdm9pZCB0Y2dfb3V0X3FlbXVfdGxiKFRDR0NvbnRleHQgKnMsIFRDR0FyZyBh ZGRyX3JlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzX2Jp dHMsIHVpbnQ2NF90IG9mZnNldF9ydywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ2NF90IG9mZnNldF9hZGRlbmQpCi17Ci0gICAgdGNnX291dF9idW5kbGUo cywgbUlJLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfYTUgKFRDR19SRUdfUDAsIE9Q Q19BRERMX0E1LCBUQ0dfUkVHX1IzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFRBUkdFVF9QQUdFX01BU0sgfCAoKDEgPDwgc19iaXRzKSAtIDEpLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRDR19SRUdfUjApLAotICAgICAgICAgICAgICAgICAgIHRj Z19vcGNfaTExKFRDR19SRUdfUDAsIE9QQ19FWFRSX1VfSTExLCBUQ0dfUkVHX1IyLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfcmVnLCBUQVJHRVRfUEFHRV9CSVRT LCBDUFVfVExCX0JJVFMgLSAxKSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kxMihU Q0dfUkVHX1AwLCBPUENfREVQX1pfSTEyLCBUQ0dfUkVHX1IyLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRDR19SRUdfUjIsIDYzIC0gQ1BVX1RMQl9FTlRSWV9CSVRTLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYzIC0gQ1BVX1RMQl9FTlRSWV9CSVRT KSk7Ci0gICAgdGNnX291dF9idW5kbGUocywgbUlJLAotICAgICAgICAgICAgICAgICAgIHRj Z19vcGNfYTUgKFRDR19SRUdfUDAsIE9QQ19BRERMX0E1LCBUQ0dfUkVHX1IyLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldF9ydywgVENHX1JFR19SMiksCi0jaWYg VEFSR0VUX0xPTkdfQklUUyA9PSAzMgotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTI5 KFRDR19SRUdfUDAsIE9QQ19aWFQ0X0kyOSwgVENHX1JFR19SNTYsIGFkZHJfcmVnKSwKLSNl bHNlCi0gICAgICAgICAgICAgICAgICAgdGNnX29wY19hNChUQ0dfUkVHX1AwLCBPUENfQURE U19BNCwgVENHX1JFR19SNTYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBh ZGRyX3JlZyksCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2ExIChUQ0df UkVHX1AwLCBPUENfQUREX0ExLCBUQ0dfUkVHX1IyLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRDR19SRUdfUjIsIFRDR19BUkVHMCkpOwotICAgIHRjZ19vdXRfYnVuZGxl KHMsIG1JSSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX20zIChUQ0dfUkVHX1AwLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQVJHRVRfTE9OR19CSVRTID09IDMy Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gT1BDX0xENF9NMyA6IE9QQ19M RDhfTTMpLCBUQ0dfUkVHX1I1NywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU Q0dfUkVHX1IyLCBvZmZzZXRfYWRkZW5kIC0gb2Zmc2V0X3J3KSwKLSAgICAgICAgICAgICAg ICAgICB0Y2dfb3BjX2ExIChUQ0dfUkVHX1AwLCBPUENfQU5EX0ExLCBUQ0dfUkVHX1IzLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdfUjMsIFRDR19SRUdfUjU2 KSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2E2IChUQ0dfUkVHX1AwLCBPUENfQ01Q X0VRX0E2LCBUQ0dfUkVHX1A2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRD R19SRUdfUDcsIFRDR19SRUdfUjMsIFRDR19SRUdfUjU3KSk7Ci19Ci0KLXN0YXRpYyB2b2lk ICpxZW11X2xkX2hlbHBlcnNbNF0gPSB7CisgICBSNTYgaXMgbG9hZGVkIHdpdGggdGhlIGFk ZHJlc3MsIHplcm8gZXh0ZW50ZWQgb24gMzItYml0IHRhcmdldHMuCisgICBSNTggaXMgbG9h ZGVkIHdpdGggdGhlIGFkZGVuZCBUTEIgZW50cnkuICAqLworc3RhdGljIHZvaWQgdGNnX291 dF9xZW11X3RsYihUQ0dDb250ZXh0ICpzLCBUQ0dBcmcgYWRkcl9yZWcsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBzX2JpdHMsIHVpbnQ2NF90IG9mZnNldF9ydywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qgb2Zmc2V0X2FkZGVuZCkKK3sK KyAgICAvKiBXZSdyZSBnb2luZyB0byBzcGxpdCB0aGUgc2hpZnQgaW50byB0d28gcGFydHMg c28gdGhhdCB3ZSBjYW4KKyAgICAgICBjb21iaW5lIGl0IHdpdGggdHdvIGFkZGl0aW9ucyB2 aWEgc2hsYWRkLiAgVGhpcyB3aWxsIHJlZHVjZQorICAgICAgIHRoZSBjcml0aWNhbCBwYXRo IGJ5IDEgY3ljbGUuICAqLworICAgIGFzc2VydCAoQ1BVX1RMQl9FTlRSWV9CSVRTIDw9IDYp OworICAgIGFzc2VydCAoKG9mZnNldF9ydyAmIDMpID09IDApOworCisgICAgdGNnX291dF9t b3ZpKHMsIFRDR19UWVBFX0k2NCwgVENHX1JFR19SMywgb2Zmc2V0X3J3IC8gNCk7CisgICAg dGNnX29wY19pMTEocywgVENHX1JFR19QMCwgT1BDX0VYVFJfVV9JMTEsIFRDR19SRUdfUjIs CisgICAgICAgICAgICAgICAgYWRkcl9yZWcsIFRBUkdFVF9QQUdFX0JJVFMsIENQVV9UTEJf QklUUyAtIDEpOworICAgIHRjZ19vdXRfc2hsYWRkKHMsIFRDR19SRUdfUDAsIFRDR19SRUdf UjIsIFRDR19SRUdfUjIsCisgICAgICAgICAgICAgICAgICAgQ1BVX1RMQl9FTlRSWV9CSVRT IC0gMiwgVENHX1JFR19SMyk7CisKKyAgICB0Y2dfb3V0X3NobGFkZChzLCBUQ0dfUkVHX1Aw LCBUQ0dfUkVHX1IyLCBUQ0dfUkVHX1IyLCAyLCBUQ0dfQVJFRzApOworCisgICAgdGNnX29w Y19pMTQocywgVENHX1JFR19QMCwgT1BDX0RFUF9JMTQsIFRDR19SRUdfUjMsIDAsIGFkZHJf cmVnLAorICAgICAgICAgICAgICAgIDYzIC0gc19iaXRzLCBUQVJHRVRfUEFHRV9CSVRTIC0g c19iaXRzIC0gMSk7CisKKyAgICB0Y2dfb3BjX20zKHMsIFRDR19SRUdfUDAsCisgICAgICAg ICAgICAgICAoVEFSR0VUX0xPTkdfQklUUyA9PSAzMiA/IE9QQ19MRDRfTTMgOiBPUENfTEQ4 X00zKSwKKyAgICAgICAgICAgICAgIFRDR19SRUdfUjU3LCBUQ0dfUkVHX1IyLCBvZmZzZXRf YWRkZW5kIC0gb2Zmc2V0X3J3KTsKKworICAgIGlmIChUQVJHRVRfTE9OR19CSVRTID09IDMy KSB7CisgICAgICAgIHRjZ19vcGNfaTI5KHMsIFRDR19SRUdfUDAsIE9QQ19aWFQ0X0kyOSwg VENHX1JFR19SNTYsIGFkZHJfcmVnKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0Y2dfb3V0 X21vdihzLCBUQ0dfVFlQRV9JNjQsIFRDR19SRUdfUjU2LCBhZGRyX3JlZyk7CisgICAgfQor CisgICAgdGNnX29wY19tMShzLCBUQ0dfUkVHX1AwLCBPUENfTEQ4X00xLCBUQ0dfUkVHX1I1 OCwgVENHX1JFR19SMik7CisKKyAgICB0Y2dfb3BjX2E2KHMsIFRDR19SRUdfUDAsCisgICAg ICAgICAgICAgICAoVEFSR0VUX0xPTkdfQklUUyA9PSAzMiA/IE9QQ19DTVA0X0VRX0E2IDog T1BDX0NNUF9FUV9BNiksCisgICAgICAgICAgICAgICBUQ0dfUkVHX1A2LCBUQ0dfUkVHX1A3 LCBUQ0dfUkVHX1IzLCBUQ0dfUkVHX1I1Nyk7CisgICAgdGNnX2FkZF9zdG9wKHMpOworfQor CitzdGF0aWMgdm9pZCAqIGNvbnN0IHFlbXVfbGRfaGVscGVyc1s0XSA9IHsKICAgICBfX2xk Yl9tbXUsCiAgICAgX19sZHdfbW11LAogICAgIF9fbGRsX21tdSwKICAgICBfX2xkcV9tbXUs CiB9OwogCi1zdGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9xZW11X2xkKFRDR0NvbnRleHQg KnMsIGNvbnN0IFRDR0FyZyAqYXJncywgaW50IG9wYykKK3N0YXRpYyB2b2lkIHRjZ19vdXRf cWVtdV9sZChUQ0dDb250ZXh0ICpzLCBjb25zdCBUQ0dBcmcgKmFyZ3MsIGludCBvcGMpCiB7 CisgICAgc3RhdGljIHVpbnQ2NF90IGNvbnN0IG9wY19sZF9tMVs0XSA9IHsKKyAgICAgICAg T1BDX0xEMV9NMSwgT1BDX0xEMl9NMSwgT1BDX0xENF9NMSwgT1BDX0xEOF9NMQorICAgIH07 CisgICAgc3RhdGljIHVpbnQ2NF90IGNvbnN0IG9wY19leHRfaTI5WzhdID0geworICAgICAg ICBPUENfWlhUMV9JMjksIE9QQ19aWFQyX0kyOSwgT1BDX1pYVDRfSTI5LCAwLAorICAgICAg ICBPUENfU1hUMV9JMjksIE9QQ19TWFQyX0kyOSwgT1BDX1NYVDRfSTI5LCAwCisgICAgfTsK ICAgICBpbnQgYWRkcl9yZWcsIGRhdGFfcmVnLCBtZW1faW5kZXgsIHNfYml0cywgYnN3YXA7 Ci0gICAgdWludDY0X3Qgb3BjX2xkX20xWzRdID0geyBPUENfTEQxX00xLCBPUENfTEQyX00x LCBPUENfTEQ0X00xLCBPUENfTEQ4X00xIH07Ci0gICAgdWludDY0X3Qgb3BjX2V4dF9pMjlb OF0gPSB7IE9QQ19aWFQxX0kyOSwgT1BDX1pYVDJfSTI5LCBPUENfWlhUNF9JMjksIDAsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QQ19TWFQxX0kyOSwgT1BDX1NYVDJf STI5LCBPUENfU1hUNF9JMjksIDAgfTsKKyAgICB0Y2dfdGFyZ2V0X2xvbmcgcGMsIGdwOwog CiAgICAgZGF0YV9yZWcgPSAqYXJncysrOwogICAgIGFkZHJfcmVnID0gKmFyZ3MrKzsKICAg ICBtZW1faW5kZXggPSAqYXJnczsKICAgICBzX2JpdHMgPSBvcGMgJiAzOwogCisgICAgLyog RXh0cmFjdCB0aGUgYWJzb2x1dGUgYWRkcmVzc2VzIGZyb20gdGhlIGRlc2NyaXB0b3IuICAq LworICAgIHBjID0gKCh0Y2dfdGFyZ2V0X2xvbmcgKilxZW11X2xkX2hlbHBlcnNbc19iaXRz XSlbMF07CisgICAgZ3AgPSAoKHRjZ190YXJnZXRfbG9uZyAqKXFlbXVfbGRfaGVscGVyc1tz X2JpdHNdKVsxXTsKKwogI2lmZGVmIFRBUkdFVF9XT1JEU19CSUdFTkRJQU4KICAgICBic3dh cCA9IDE7CiAjZWxzZQpAQCAtMTUwMCw4NiArMTgzMiw2MiBAQCBzdGF0aWMgaW5saW5lIHZv aWQgdGNnX291dF9xZW11X2xkKFRDR0NvbnRleHQgKnMsIGNvbnN0IFRDR0FyZyAqYXJncywg aW50IG9wYykKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKENQVVN0YXRlLCB0bGJf dGFibGVbbWVtX2luZGV4XVswXS5hZGRlbmQpKTsKIAogICAgIC8qIFA2IGlzIHRoZSBmYXN0 IHBhdGgsIGFuZCBQNyB0aGUgc2xvdyBwYXRoICovCi0gICAgdGNnX291dF9idW5kbGUocywg bUxYLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfYTUgKFRDR19SRUdfUDcsIE9QQ19B RERMX0E1LCBUQ0dfUkVHX1I1NywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt ZW1faW5kZXgsIFRDR19SRUdfUjApLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbDIg KCh0Y2dfdGFyZ2V0X2xvbmcpIHFlbXVfbGRfaGVscGVyc1tzX2JpdHNdKSwKLSAgICAgICAg ICAgICAgICAgICB0Y2dfb3BjX3gyIChUQ0dfUkVHX1A3LCBPUENfTU9WTF9YMiwgVENHX1JF R19SMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGNnX3RhcmdldF9sb25n KSBxZW11X2xkX2hlbHBlcnNbc19iaXRzXSkpOwotICAgIHRjZ19vdXRfYnVuZGxlKHMsIE1t SSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX20zIChUQ0dfUkVHX1AwLCBPUENfTEQ4 X00zLCBUQ0dfUkVHX1IzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19S RUdfUjIsIDgpLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfYTEgKFRDR19SRUdfUDYs IE9QQ19BRERfQTEsIFRDR19SRUdfUjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVENHX1JFR19SMywgVENHX1JFR19SNTYpLAotICAgICAgICAgICAgICAgICAgIHRjZ19v cGNfaTIxKFRDR19SRUdfUDcsIE9QQ19NT1ZfSTIxLCBUQ0dfUkVHX0I2LAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdfUjMsIDApKTsKLSAgICBpZiAoYnN3YXAg JiYgc19iaXRzID09IDEpIHsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgTW1JLAotICAg ICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX20xIChUQ0dfUkVHX1A2LCBvcGNfbGRfbTFb c19iaXRzXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19S OCwgVENHX1JFR19SMyksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTEgKFRD R19SRUdfUDcsIE9QQ19MRDhfTTEsIFRDR19SRUdfUjEsIFRDR19SRUdfUjIpLAotICAgICAg ICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kxMihUQ0dfUkVHX1A2LCBPUENfREVQX1pfSTEy LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX1I4LCBUQ0df UkVHX1I4LCAxNSwgMTUpKTsKLSAgICB9IGVsc2UgaWYgKGJzd2FwICYmIHNfYml0cyA9PSAy KSB7Ci0gICAgICAgIHRjZ19vdXRfYnVuZGxlKHMsIE1tSSwKLSAgICAgICAgICAgICAgICAg ICAgICAgdGNnX29wY19tMSAoVENHX1JFR19QNiwgb3BjX2xkX20xW3NfYml0c10sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdfUjgsIFRDR19SRUdfUjMp LAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX20xIChUQ0dfUkVHX1A3LCBPUENf TEQ4X00xLCBUQ0dfUkVHX1IxLCBUQ0dfUkVHX1IyKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgdGNnX29wY19pMTIoVENHX1JFR19QNiwgT1BDX0RFUF9aX0kxMiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19SOCwgVENHX1JFR19SOCwgMzEsIDMx KSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgbW1JLAotICAg ICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX20xIChUQ0dfUkVHX1A2LCBvcGNfbGRfbTFb c19iaXRzXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19S OCwgVENHX1JFR19SMyksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTEgKFRD R19SRUdfUDcsIE9QQ19MRDhfTTEsIFRDR19SRUdfUjEsIFRDR19SRUdfUjIpLAotICAgICAg ICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9QX0kxOCwg MCkpOwotICAgIH0KLSAgICBpZiAoIWJzd2FwIHx8IHNfYml0cyA9PSAwKSB7Ci0gICAgICAg IHRjZ19vdXRfYnVuZGxlKHMsIG1pQiwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29w Y19tNDgoVENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAg ICAgICB0Y2dfb3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9QX0kxOCwgMCksCi0gICAgICAg ICAgICAgICAgICAgICAgIHRjZ19vcGNfYjUgKFRDR19SRUdfUDcsIE9QQ19CUl9DQUxMX1NQ VEtfTUFOWV9CNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JF R19CMCwgVENHX1JFR19CNikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRjZ19vdXRfYnVu ZGxlKHMsIG1pQiwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19tNDgoVENHX1JF R19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3Bj X2kzIChUQ0dfUkVHX1A2LCBPUENfTVVYMV9JMywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVENHX1JFR19SOCwgVENHX1JFR19SOCwgMHhiKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgdGNnX29wY19iNSAoVENHX1JFR19QNywgT1BDX0JSX0NBTExfU1BUS19N QU5ZX0I1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX0Iw LCBUQ0dfUkVHX0I2KSk7CisgICAgdGNnX29wY19hMShzLCBUQ0dfUkVHX1A2LCBPUENfQURE X0ExLAorICAgICAgICAgICAgICAgVENHX1JFR19SMywgVENHX1JFR19SNTgsIFRDR19SRUdf UjU2KTsKKyAgICB0Y2dfb3BjX2wyKHMsIGdwKTsKKyAgICB0Y2dfb3BjX3gyKHMsIFRDR19S RUdfUDcsIE9QQ19NT1ZMX1gyLCBUQ0dfUkVHX1IxLCBncCk7CisKKyAgICB0Y2dfb3BjX20x KHMsIFRDR19SRUdfUDYsIG9wY19sZF9tMVtzX2JpdHNdLCBUQ0dfUkVHX1I4LCBUQ0dfUkVH X1IzKTsKKyAgICB0Y2dfb3BjX2E1KHMsIFRDR19SRUdfUDcsIE9QQ19BRERMX0E1LCBUQ0df UkVHX1I1NywgbWVtX2luZGV4LCBUQ0dfUkVHX1IwKTsKKworICAgIGlmIChic3dhcCkgewor ICAgICAgICBpZiAoc19iaXRzID09IDEpIHsKKyAgICAgICAgICAgIHRjZ19vdXRfYnN3YXAx NihzLCBUQ0dfUkVHX1A2LCBUQ0dfUkVHX1I4LCBUQ0dfUkVHX1I4LCAwKTsKKyAgICAgICAg fSBlbHNlIGlmIChzX2JpdHMgPT0gMikgeworICAgICAgICAgICAgdGNnX291dF9ic3dhcDMy KHMsIFRDR19SRUdfUDYsIFRDR19SRUdfUjgsIFRDR19SRUdfUjgsIDApOworICAgICAgICB9 IGVsc2UgaWYgKHNfYml0cyA9PSAzKSB7CisgICAgICAgICAgICB0Y2dfb3V0X2Jzd2FwNjQo cywgVENHX1JFR19QNiwgVENHX1JFR19SOCwgVENHX1JFR19SOCk7CisgICAgICAgIH0KICAg ICB9CiAKKyAgICB0Y2dfb3BjX2wzKHMsIDApOworICAgIHRjZ19vcGNfeDQocywgVENHX1JF R19QNywgT1BDX0JSTF9DQUxMX1NQVEtfTUFOWV9YNCwgVENHX1JFR19CMCwgMCk7CisgICAg dGNnX2ZsdXNoX3F1ZXVlKHMpOworICAgIHJlbG9jX3BjcmVsNjBiIChzLT5jb2RlX3B0ciAt IDE2LCBwYyk7CisKKyAgICAvKiBOb3RlIHRoYXQgdGhpcyBjbGVhbnVwIGlzIHJlcXVpcmVk IGZvciB0aGUgc2xvdyBwYXRoLCBhbmQgc2luY2UKKyAgICAgICB3ZSd2ZSBjbG9iYmVyZWQg cDcgYnkgbm93LCB3ZSBtdXN0IGV4ZWN1dGUgaXQgdW5jb25kaXRpb25hbGx5LgorICAgICAg IFdoaWNoIG1lYW5zIHRoZSBmYXN0IHBhdGggYWJvdmUgbXVzdCBwbGFjZSBpdHMgcmVzdWx0 cyBpbiBSOC4gICovCiAgICAgaWYgKG9wYyA9PSAzKSB7Ci0gICAgICAgIHRjZ19vdXRfYnVu ZGxlKHMsIG1pSSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19tNDgoVENHX1JF R19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3Bj X2kxOChUQ0dfUkVHX1AwLCBPUENfTk9QX0kxOCwgMCksCi0gICAgICAgICAgICAgICAgICAg ICAgIHRjZ19vcGNfYTQgKFRDR19SRUdfUDAsIE9QQ19BRERTX0E0LAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3JlZywgMCwgVENHX1JFR19SOCkpOworICAg ICAgICB0Y2dfb3V0X21vdihzLCBUQ0dfVFlQRV9JNjQsIGRhdGFfcmVnLCBUQ0dfUkVHX1I4 KTsKICAgICB9IGVsc2UgewotICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtaUksCi0gICAg ICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4 LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pMTgoVENHX1JFR19QMCwg T1BDX05PUF9JMTgsIDApLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kyOShU Q0dfUkVHX1AwLCBvcGNfZXh0X2kyOVtvcGNdLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhX3JlZywgVENHX1JFR19SOCkpOworICAgICAgICB0Y2dfb3V0X2V4 dChzLCBvcGNfZXh0X2kyOVtvcGNdLCBkYXRhX3JlZywgVENHX1JFR19SOCk7CiAgICAgfQog fQogCi1zdGF0aWMgdm9pZCAqcWVtdV9zdF9oZWxwZXJzWzRdID0geworc3RhdGljIHZvaWQg KiBjb25zdCBxZW11X3N0X2hlbHBlcnNbNF0gPSB7CiAgICAgX19zdGJfbW11LAogICAgIF9f c3R3X21tdSwKICAgICBfX3N0bF9tbXUsCiAgICAgX19zdHFfbW11LAogfTsKIAotc3RhdGlj IGlubGluZSB2b2lkIHRjZ19vdXRfcWVtdV9zdChUQ0dDb250ZXh0ICpzLCBjb25zdCBUQ0dB cmcgKmFyZ3MsIGludCBvcGMpCitzdGF0aWMgdm9pZCB0Y2dfb3V0X3FlbXVfc3QoVENHQ29u dGV4dCAqcywgY29uc3QgVENHQXJnICphcmdzLCBpbnQgb3BjKQogeworICAgIHN0YXRpYyB1 aW50NjRfdCBjb25zdCBvcGNfc3RfbTRbNF0gPSB7CisgICAgICAgIE9QQ19TVDFfTTQsIE9Q Q19TVDJfTTQsIE9QQ19TVDRfTTQsIE9QQ19TVDhfTTQKKyAgICB9OwogICAgIGludCBhZGRy X3JlZywgZGF0YV9yZWcsIG1lbV9pbmRleCwgYnN3YXA7Ci0gICAgdWludDY0X3Qgb3BjX3N0 X200WzRdID0geyBPUENfU1QxX000LCBPUENfU1QyX000LCBPUENfU1Q0X000LCBPUENfU1Q4 X000IH07CisgICAgdGNnX3RhcmdldF9sb25nIHBjLCBncDsKIAogICAgIGRhdGFfcmVnID0g KmFyZ3MrKzsKICAgICBhZGRyX3JlZyA9ICphcmdzKys7CiAgICAgbWVtX2luZGV4ID0gKmFy Z3M7CiAKKyAgICAvKiBFeHRyYWN0IHRoZSBhYnNvbHV0ZSBhZGRyZXNzZXMgZnJvbSB0aGUg ZGVzY3JpcHRvci4gICovCisgICAgcGMgPSAoKHRjZ190YXJnZXRfbG9uZyAqKXFlbXVfc3Rf aGVscGVyc1tvcGNdKVswXTsKKyAgICBncCA9ICgodGNnX3RhcmdldF9sb25nICopcWVtdV9z dF9oZWxwZXJzW29wY10pWzFdOworCiAjaWZkZWYgVEFSR0VUX1dPUkRTX0JJR0VORElBTgog ICAgIGJzd2FwID0gMTsKICNlbHNlCkBAIC0xNTkxLDY2ICsxODk5LDM3IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCB0Y2dfb3V0X3FlbXVfc3QoVENHQ29udGV4dCAqcywgY29uc3QgVENHQXJn ICphcmdzLCBpbnQgb3BjKQogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoQ1BVU3Rh dGUsIHRsYl90YWJsZVttZW1faW5kZXhdWzBdLmFkZGVuZCkpOwogCiAgICAgLyogUDYgaXMg dGhlIGZhc3QgcGF0aCwgYW5kIFA3IHRoZSBzbG93IHBhdGggKi8KLSAgICB0Y2dfb3V0X2J1 bmRsZShzLCBtTFgsCi0gICAgICAgICAgICAgICAgICAgdGNnX29wY19hNChUQ0dfUkVHX1A3 LCBPUENfQUREU19BNCwgVENHX1JFR19SNTcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAwLCBkYXRhX3JlZyksCi0gICAgICAgICAgICAgICAgICAgdGNnX29wY19sMiAoKHRj Z190YXJnZXRfbG9uZykgcWVtdV9zdF9oZWxwZXJzW29wY10pLAotICAgICAgICAgICAgICAg ICAgIHRjZ19vcGNfeDIgKFRDR19SRUdfUDcsIE9QQ19NT1ZMX1gyLCBUQ0dfUkVHX1IyLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0Y2dfdGFyZ2V0X2xvbmcpIHFlbXVf c3RfaGVscGVyc1tvcGNdKSk7Ci0gICAgdGNnX291dF9idW5kbGUocywgTW1JLAotICAgICAg ICAgICAgICAgICAgIHRjZ19vcGNfbTMgKFRDR19SRUdfUDAsIE9QQ19MRDhfTTMsIFRDR19S RUdfUjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19SMiwgOCks Ci0gICAgICAgICAgICAgICAgICAgdGNnX29wY19hMSAoVENHX1JFR19QNiwgT1BDX0FERF9B MSwgVENHX1JFR19SMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVH X1IzLCBUQ0dfUkVHX1I1NiksCi0gICAgICAgICAgICAgICAgICAgdGNnX29wY19pMjEoVENH X1JFR19QNywgT1BDX01PVl9JMjEsIFRDR19SRUdfQjYsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVENHX1JFR19SMywgMCkpOwotCi0gICAgaWYgKCFic3dhcCB8fCBvcGMg PT0gMCkgewotICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtSUksCi0gICAgICAgICAgICAg ICAgICAgICAgIHRjZ19vcGNfbTEgKFRDR19SRUdfUDcsIE9QQ19MRDhfTTEsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdfUjEsIFRDR19SRUdfUjIpLAot ICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9Q X0kxOCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19SRUdf UDAsIE9QQ19OT1BfSTE4LCAwKSk7Ci0gICAgfSBlbHNlIGlmIChvcGMgPT0gMSkgewotICAg ICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtSUksCi0gICAgICAgICAgICAgICAgICAgICAgIHRj Z19vcGNfbTEgKFRDR19SRUdfUDcsIE9QQ19MRDhfTTEsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRDR19SRUdfUjEsIFRDR19SRUdfUjIpLAotICAgICAgICAgICAg ICAgICAgICAgICB0Y2dfb3BjX2kxMihUQ0dfUkVHX1A2LCBPUENfREVQX1pfSTEyLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX1IyLCBkYXRhX3JlZywg MTUsIDE1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pMyAoVENHX1JFR19Q NiwgT1BDX01VWDFfSTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRD R19SRUdfUjIsIFRDR19SRUdfUjIsIDB4YikpOwotICAgICAgICBkYXRhX3JlZyA9IFRDR19S RUdfUjI7Ci0gICAgfSBlbHNlIGlmIChvcGMgPT0gMikgewotICAgICAgICB0Y2dfb3V0X2J1 bmRsZShzLCBtSUksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTEgKFRDR19S RUdfUDcsIE9QQ19MRDhfTTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFRDR19SRUdfUjEsIFRDR19SRUdfUjIpLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2df b3BjX2kxMihUQ0dfUkVHX1A2LCBPUENfREVQX1pfSTEyLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUQ0dfUkVHX1IyLCBkYXRhX3JlZywgMzEsIDMxKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgdGNnX29wY19pMyAoVENHX1JFR19QNiwgT1BDX01VWDFfSTMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdfUjIsIFRDR19S RUdfUjIsIDB4YikpOwotICAgICAgICBkYXRhX3JlZyA9IFRDR19SRUdfUjI7Ci0gICAgfSBl bHNlIGlmIChvcGMgPT0gMykgewotICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtaUksCi0g ICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTEgKFRDR19SRUdfUDcsIE9QQ19MRDhf TTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdfUjEsIFRD R19SRUdfUjIpLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kxOChUQ0dfUkVH X1AwLCBPUENfTk9QX0kxOCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNf aTMgKFRDR19SRUdfUDYsIE9QQ19NVVgxX0kzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUQ0dfUkVHX1IyLCBkYXRhX3JlZywgMHhiKSk7Ci0gICAgICAgIGRhdGFf cmVnID0gVENHX1JFR19SMjsKKyAgICB0Y2dfb3BjX2ExKHMsIFRDR19SRUdfUDYsIE9QQ19B RERfQTEsCisgICAgICAgICAgICAgICBUQ0dfUkVHX1IzLCBUQ0dfUkVHX1I1OCwgVENHX1JF R19SNTYpOworICAgIHRjZ19vcGNfbDIocywgZ3ApOworICAgIHRjZ19vcGNfeDIocywgVENH X1JFR19QNywgT1BDX01PVkxfWDIsIFRDR19SRUdfUjEsIGdwKTsKKworICAgIHRjZ19vcGNf YTQocywgVENHX1JFR19QNywgT1BDX0FERFNfQTQsIFRDR19SRUdfUjU3LCAwLCBkYXRhX3Jl Zyk7CisgICAgdGNnX29wY19hNShzLCBUQ0dfUkVHX1A3LCBPUENfQURETF9BNSwgVENHX1JF R19SNTgsIG1lbV9pbmRleCwgVENHX1JFR19SMCk7CisKKyAgICBpZiAoYnN3YXApIHsKKyAg ICAgICAgaWYgKG9wYyA9PSAxKSB7CisgICAgICAgICAgICB0Y2dfb3V0X2Jzd2FwMTYocywg VENHX1JFR19QNiwgVENHX1JFR19SMiwgZGF0YV9yZWcsIDApOworICAgICAgICAgICAgZGF0 YV9yZWcgPSBUQ0dfUkVHX1IyOworICAgICAgICB9IGVsc2UgaWYgKG9wYyA9PSAyKSB7Cisg ICAgICAgICAgICB0Y2dfb3V0X2Jzd2FwMzIocywgVENHX1JFR19QNiwgVENHX1JFR19SMiwg ZGF0YV9yZWcsIDApOworICAgICAgICAgICAgZGF0YV9yZWcgPSBUQ0dfUkVHX1IyOworICAg ICAgICB9IGVsc2UgaWYgKG9wYyA9PSAzKSB7CisgICAgICAgICAgICB0Y2dfb3V0X2Jzd2Fw NjQocywgVENHX1JFR19QNiwgVENHX1JFR19SMiwgZGF0YV9yZWcpOworICAgICAgICAgICAg ZGF0YV9yZWcgPSBUQ0dfUkVHX1IyOworICAgICAgICB9CiAgICAgfQogCi0gICAgdGNnX291 dF9idW5kbGUocywgbWlCLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQgKFRDR19S RUdfUDYsIG9wY19zdF9tNFtvcGNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGFfcmVnLCBUQ0dfUkVHX1IzKSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2E1 IChUQ0dfUkVHX1A3LCBPUENfQURETF9BNSwgVENHX1JFR19SNTgsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbWVtX2luZGV4LCBUQ0dfUkVHX1IwKSwKLSAgICAgICAgICAg ICAgICAgICB0Y2dfb3BjX2I1IChUQ0dfUkVHX1A3LCBPUENfQlJfQ0FMTF9TUFRLX01BTllf QjUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19CMCwgVENHX1JF R19CNikpOworICAgIHRjZ19vcGNfbTQocywgVENHX1JFR19QNiwgb3BjX3N0X200W29wY10s IGRhdGFfcmVnLCBUQ0dfUkVHX1IzKTsKKyAgICB0Y2dfb3BjX2wzKHMsIDApOworICAgIHRj Z19vcGNfeDQocywgVENHX1JFR19QNywgT1BDX0JSTF9DQUxMX1NQVEtfTUFOWV9YNCwgVENH X1JFR19CMCwgMCk7CisgICAgdGNnX2ZsdXNoX3F1ZXVlKHMpOworICAgIHJlbG9jX3BjcmVs NjBiIChzLT5jb2RlX3B0ciAtIDE2LCBwYyk7CiB9CiAKICNlbHNlIC8qICFDT05GSUdfU09G VE1NVSAqLwogCi1zdGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9xZW11X2xkKFRDR0NvbnRl eHQgKnMsIGNvbnN0IFRDR0FyZyAqYXJncywgaW50IG9wYykKK3N0YXRpYyB2b2lkIHRjZ19v dXRfcWVtdV9sZChUQ0dDb250ZXh0ICpzLCBjb25zdCBUQ0dBcmcgKmFyZ3MsIGludCBvcGMp CiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGNvbnN0IG9wY19sZF9tMVs0XSA9IHsKICAgICAg ICAgT1BDX0xEMV9NMSwgT1BDX0xEMl9NMSwgT1BDX0xENF9NMSwgT1BDX0xEOF9NMQpAQCAt MTY3MCwxMzEgKzE5NDksMzcgQEAgc3RhdGljIGlubGluZSB2b2lkIHRjZ19vdXRfcWVtdV9s ZChUQ0dDb250ZXh0ICpzLCBjb25zdCBUQ0dBcmcgKmFyZ3MsIGludCBvcGMpCiAgICAgYnN3 YXAgPSAwOwogI2VuZGlmCiAKLSNpZiBUQVJHRVRfTE9OR19CSVRTID09IDMyCisgICAgaWYg KFRBUkdFVF9MT05HX0JJVFMgPT0gMzIpIHsKKyAgICAgICAgdGNnX29wY19pMjkocywgVENH X1JFR19QMCwgT1BDX1pYVDRfSTI5LCBUQ0dfUkVHX1IzLCBhZGRyX3JlZyk7CisgICAgICAg IGFkZHJfcmVnID0gVENHX1JFR19SMzsKKyAgICB9CiAgICAgaWYgKEdVRVNUX0JBU0UgIT0g MCkgewotICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtSUksCi0gICAgICAgICAgICAgICAg ICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgdGNnX29wY19pMjkoVENHX1JFR19QMCwgT1BDX1pYVDRfSTI5 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX1IzLCBhZGRy X3JlZyksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfYTEgKFRDR19SRUdfUDAs IE9QQ19BRERfQTEsIFRDR19SRUdfUjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRDR19HVUVTVF9CQVNFX1JFRywgVENHX1JFR19SMykpOwotICAgIH0gZWxzZSB7 Ci0gICAgICAgIHRjZ19vdXRfYnVuZGxlKHMsIG1pSSwKLSAgICAgICAgICAgICAgICAgICAg ICAgdGNnX29wY19tNDgoVENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAg ICAgICAgICAgICAgICB0Y2dfb3BjX2kyOShUQ0dfUkVHX1AwLCBPUENfWlhUNF9JMjksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdfUjIsIGFkZHJfcmVn KSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pMTgoVENHX1JFR19QMCwgT1BD X05PUF9JMTgsIDApKTsKKyAgICAgICAgdGNnX29wY19hMShzLCBUQ0dfUkVHX1AwLCBPUENf QUREX0ExLCBUQ0dfUkVHX1IyLAorICAgICAgICAgICAgICAgICAgIFRDR19HVUVTVF9CQVNF X1JFRywgYWRkcl9yZWcpOworICAgICAgICBhZGRyX3JlZyA9IFRDR19SRUdfUjI7CiAgICAg fQogCi0gICAgaWYgKCFic3dhcCB8fCBzX2JpdHMgPT0gMCkgewotICAgICAgICBpZiAoc19i aXRzID09IG9wYykgewotICAgICAgICAgICAgdGNnX291dF9idW5kbGUocywgbWlJLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19tMSAoVENHX1JFR19QMCwgb3BjX2xk X20xW3NfYml0c10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhX3JlZywgVENHX1JFR19SMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2df b3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9QX0kxOCwgMCksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICB0Y2dfb3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9QX0kxOCwgMCkpOwot ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGNnX291dF9idW5kbGUocywgbUlJLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19tMSAoVENHX1JFR19QMCwgb3Bj X2xkX20xW3NfYml0c10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhX3JlZywgVENHX1JFR19SMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0 Y2dfb3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9QX0kxOCwgMCksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICB0Y2dfb3BjX2kyOShUQ0dfUkVHX1AwLCBvcGNfc3h0X2kyOVtzX2Jp dHNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9yZWcs IGRhdGFfcmVnKSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHNfYml0cyA9PSAzKSB7 Ci0gICAgICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtSUksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICB0Y2dfb3BjX20xIChUQ0dfUkVHX1AwLCBvcGNfbGRfbTFbc19iaXRzXSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfcmVnLCBUQ0df UkVHX1IyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19S RUdfUDAsIE9QQ19OT1BfSTE4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRj Z19vcGNfaTMgKFRDR19SRUdfUDAsIE9QQ19NVVgxX0kzLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YV9yZWcsIGRhdGFfcmVnLCAweGIpKTsKLSAgICB9 IGVsc2UgeworICAgIHRjZ19vcGNfbTEocywgVENHX1JFR19QMCwgb3BjX2xkX20xW3NfYml0 c10sIGRhdGFfcmVnLCBhZGRyX3JlZyk7CisKKyAgICBpZiAoYnN3YXApIHsKICAgICAgICAg aWYgKHNfYml0cyA9PSAxKSB7Ci0gICAgICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtSUks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX20xIChUQ0dfUkVHX1AwLCBv cGNfbGRfbTFbc19iaXRzXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGFfcmVnLCBUQ0dfUkVHX1IyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IHRjZ19vcGNfaTE4KFRDR19SRUdfUDAsIE9QQ19OT1BfSTE4LCAwKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRjZ19vcGNfaTEyKFRDR19SRUdfUDAsIE9QQ19ERVBfWl9JMTIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfcmVnLCBkYXRh X3JlZywgMTUsIDE1KSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0Y2dfb3V0 X2J1bmRsZShzLCBtSUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX20x IChUQ0dfUkVHX1AwLCBvcGNfbGRfbTFbc19iaXRzXSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGFfcmVnLCBUQ0dfUkVHX1IyKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19SRUdfUDAsIE9QQ19OT1BfSTE4LCAw KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTEyKFRDR19SRUdfUDAs IE9QQ19ERVBfWl9JMTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGFfcmVnLCBkYXRhX3JlZywgMzEsIDMxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg KG9wYyA9PSBzX2JpdHMpIHsKLSAgICAgICAgICAgIHRjZ19vdXRfYnVuZGxlKHMsIG1pSSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9Q Q19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4 KFRDR19SRUdfUDAsIE9QQ19OT1BfSTE4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRjZ19vcGNfaTMgKFRDR19SRUdfUDAsIE9QQ19NVVgxX0kzLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9yZWcsIGRhdGFfcmVnLCAweGIpKTsK LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRjZ19vdXRfYnVuZGxlKHMsIG1JSSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9Q Q19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTMg KFRDR19SRUdfUDAsIE9QQ19NVVgxX0kzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YV9yZWcsIGRhdGFfcmVnLCAweGIpLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGNnX29wY19pMjkoVENHX1JFR19QMCwgb3BjX3N4dF9pMjlbc19iaXRz XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfcmVnLCBk YXRhX3JlZykpOworICAgICAgICAgICAgdGNnX291dF9ic3dhcDE2KHMsIFRDR19SRUdfUDAs IGRhdGFfcmVnLCBkYXRhX3JlZywgc19iaXRzICE9IG9wYyk7CisgICAgICAgIH0gZWxzZSBp ZiAoc19iaXRzID09IDIpIHsKKyAgICAgICAgICAgIHRjZ19vdXRfYnN3YXAzMihzLCBUQ0df UkVHX1AwLCBkYXRhX3JlZywgZGF0YV9yZWcsIHNfYml0cyAhPSBvcGMpOworICAgICAgICB9 IGVsc2UgaWYgKHNfYml0cyA9PSAzKSB7CisgICAgICAgICAgICB0Y2dfb3V0X2Jzd2FwNjQo cywgVENHX1JFR19QMCwgZGF0YV9yZWcsIGRhdGFfcmVnKTsKICAgICAgICAgfQorICAgIH0g ZWxzZSBpZiAoc19iaXRzICE9IG9wYykgeworICAgICAgICB0Y2dfb3BjX2kyOShzLCBUQ0df UkVHX1AwLCBvcGNfc3h0X2kyOVtzX2JpdHNdLCBkYXRhX3JlZywgZGF0YV9yZWcpOwogICAg IH0KLSNlbHNlCi0gICAgaWYgKEdVRVNUX0JBU0UgIT0gMCkgewotICAgICAgICB0Y2dfb3V0 X2J1bmRsZShzLCBNbUksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfYTEgKFRD R19SRUdfUDAsIE9QQ19BRERfQTEsIFRDR19SRUdfUjIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRDR19HVUVTVF9CQVNFX1JFRywgYWRkcl9yZWcpLAotICAgICAg ICAgICAgICAgICAgICAgICB0Y2dfb3BjX20xIChUQ0dfUkVHX1AwLCBvcGNfbGRfbTFbc19i aXRzXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9yZWcsIFRD R19SRUdfUjIpLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kxOChUQ0dfUkVH X1AwLCBPUENfTk9QX0kxOCwgMCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRjZ19vdXRf YnVuZGxlKHMsIG1tSSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19tNDgoVENH X1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2df b3BjX20xIChUQ0dfUkVHX1AwLCBvcGNfbGRfbTFbc19iaXRzXSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YV9yZWcsIGFkZHJfcmVnKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgdGNnX29wY19pMTgoVENHX1JFR19QMCwgT1BDX05PUF9JMTgsIDApKTsK LSAgICB9Ci0KLSAgICBpZiAoYnN3YXAgJiYgc19iaXRzID09IDEpIHsKLSAgICAgICAgdGNn X291dF9idW5kbGUocywgbUlJLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX200 OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAg IHRjZ19vcGNfaTEyKFRDR19SRUdfUDAsIE9QQ19ERVBfWl9JMTIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGFfcmVnLCBkYXRhX3JlZywgMTUsIDE1KSwKLSAg ICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19pMyAoVENHX1JFR19QMCwgT1BDX01VWDFf STMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfcmVnLCBkYXRh X3JlZywgMHhiKSk7Ci0gICAgfSBlbHNlIGlmIChic3dhcCAmJiBzX2JpdHMgPT0gMikgewot ICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtSUksCi0gICAgICAgICAgICAgICAgICAgICAg IHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgdGNnX29wY19pMTIoVENHX1JFR19QMCwgT1BDX0RFUF9aX0kxMiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9yZWcsIGRhdGFfcmVnLCAz MSwgMzEpLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kzIChUQ0dfUkVHX1Aw LCBPUENfTVVYMV9JMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YV9yZWcsIGRhdGFfcmVnLCAweGIpKTsKLSAgICB9IGVsc2UgaWYgKGJzd2FwICYmIHNfYml0 cyA9PSAzKSB7Ci0gICAgICAgIHRjZ19vdXRfYnVuZGxlKHMsIG1pSSwKLSAgICAgICAgICAg ICAgICAgICAgICAgdGNnX29wY19tNDgoVENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAot ICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9Q X0kxOCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTMgKFRDR19SRUdf UDAsIE9QQ19NVVgxX0kzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhX3JlZywgZGF0YV9yZWcsIDB4YikpOwotICAgIH0KLSAgICBpZiAoc19iaXRzICE9IG9w YykgewotICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtaUksCi0gICAgICAgICAgICAgICAg ICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgdGNnX29wY19pMTgoVENHX1JFR19QMCwgT1BDX05PUF9JMTgs IDApLAotICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kyOShUQ0dfUkVHX1AwLCBv cGNfc3h0X2kyOVtzX2JpdHNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhX3JlZywgZGF0YV9yZWcpKTsKLSAgICB9Ci0jZW5kaWYKIH0KIAotc3RhdGljIGlu bGluZSB2b2lkIHRjZ19vdXRfcWVtdV9zdChUQ0dDb250ZXh0ICpzLCBjb25zdCBUQ0dBcmcg KmFyZ3MsIGludCBvcGMpCitzdGF0aWMgdm9pZCB0Y2dfb3V0X3FlbXVfc3QoVENHQ29udGV4 dCAqcywgY29uc3QgVENHQXJnICphcmdzLCBpbnQgb3BjKQogewogICAgIHN0YXRpYyB1aW50 NjRfdCBjb25zdCBvcGNfc3RfbTRbNF0gPSB7CiAgICAgICAgIE9QQ19TVDFfTTQsIE9QQ19T VDJfTTQsIE9QQ19TVDRfTTQsIE9QQ19TVDhfTTQKICAgICB9OwogICAgIGludCBhZGRyX3Jl ZywgZGF0YV9yZWcsIGJzd2FwOwotI2lmIFRBUkdFVF9MT05HX0JJVFMgPT0gNjQKLSAgICB1 aW50NjRfdCBhZGRfZ3Vlc3RfYmFzZTsKLSNlbmRpZgogCiAgICAgZGF0YV9yZWcgPSAqYXJn cysrOwogICAgIGFkZHJfcmVnID0gKmFyZ3MrKzsKQEAgLTE4MDUsMzEyICsxOTkwLDI0MyBA QCBzdGF0aWMgaW5saW5lIHZvaWQgdGNnX291dF9xZW11X3N0KFRDR0NvbnRleHQgKnMsIGNv bnN0IFRDR0FyZyAqYXJncywgaW50IG9wYykKICAgICBic3dhcCA9IDA7CiAjZW5kaWYKIAot I2lmIFRBUkdFVF9MT05HX0JJVFMgPT0gMzIKLSAgICBpZiAoR1VFU1RfQkFTRSAhPSAwKSB7 Ci0gICAgICAgIHRjZ19vdXRfYnVuZGxlKHMsIG1JSSwKLSAgICAgICAgICAgICAgICAgICAg ICAgdGNnX29wY19tNDgoVENHX1JFR19QMCwgT1BDX05PUF9NNDgsIDApLAotICAgICAgICAg ICAgICAgICAgICAgICB0Y2dfb3BjX2kyOShUQ0dfUkVHX1AwLCBPUENfWlhUNF9JMjksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdfUjMsIGFkZHJfcmVn KSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19hMSAoVENHX1JFR19QMCwgT1BD X0FERF9BMSwgVENHX1JFR19SMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVENHX0dVRVNUX0JBU0VfUkVHLCBUQ0dfUkVHX1IzKSk7Ci0gICAgfSBlbHNlIHsKLSAg ICAgICAgdGNnX291dF9idW5kbGUocywgbWlJLAotICAgICAgICAgICAgICAgICAgICAgICB0 Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCksCi0gICAgICAgICAgICAg ICAgICAgICAgIHRjZ19vcGNfaTI5KFRDR19SRUdfUDAsIE9QQ19aWFQ0X0kyOSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19SMiwgYWRkcl9yZWcpLAot ICAgICAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9Q X0kxOCwgMCkpOwotICAgIH0KLQotICAgIGlmIChic3dhcCkgewotICAgICAgICBpZiAob3Bj ID09IDEpIHsKLSAgICAgICAgICAgIHRjZ19vdXRfYnVuZGxlKHMsIG1JSSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4 LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTEyKFRDR19SRUdf UDAsIE9QQ19ERVBfWl9JMTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUQ0dfUkVHX1IzLCBkYXRhX3JlZywgMTUsIDE1KSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRjZ19vcGNfaTMgKFRDR19SRUdfUDAsIE9QQ19NVVgxX0kzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19SMywgVENHX1JFR19S MywgMHhiKSk7Ci0gICAgICAgICAgICBkYXRhX3JlZyA9IFRDR19SRUdfUjM7Ci0gICAgICAg IH0gZWxzZSBpZiAob3BjID09IDIpIHsKLSAgICAgICAgICAgIHRjZ19vdXRfYnVuZGxlKHMs IG1JSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdf UDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19v cGNfaTEyKFRDR19SRUdfUDAsIE9QQ19ERVBfWl9JMTIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX1IzLCBkYXRhX3JlZywgMzEsIDMxKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTMgKFRDR19SRUdfUDAsIE9QQ19N VVgxX0kzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JF R19SMywgVENHX1JFR19SMywgMHhiKSk7Ci0gICAgICAgICAgICBkYXRhX3JlZyA9IFRDR19S RUdfUjM7Ci0gICAgICAgIH0gZWxzZSBpZiAob3BjID09IDMpIHsKLSAgICAgICAgICAgIHRj Z19vdXRfYnVuZGxlKHMsIG1pSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19v cGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19SRUdfUDAsIE9QQ19OT1BfSTE4LCAwKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTMgKFRDR19SRUdfUDAsIE9QQ19N VVgxX0kzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JF R19SMywgZGF0YV9yZWcsIDB4YikpOwotICAgICAgICAgICAgZGF0YV9yZWcgPSBUQ0dfUkVH X1IzOwotICAgICAgICB9CisgICAgaWYgKFRBUkdFVF9MT05HX0JJVFMgPT0gMzIpIHsKKyAg ICAgICAgdGNnX29wY19pMjkocywgVENHX1JFR19QMCwgT1BDX1pYVDRfSTI5LCBUQ0dfUkVH X1IyLCBhZGRyX3JlZyk7CisgICAgICAgIGFkZHJfcmVnID0gVENHX1JFR19SMjsKICAgICB9 Ci0gICAgdGNnX291dF9idW5kbGUocywgbW1JLAotICAgICAgICAgICAgICAgICAgIHRjZ19v cGNfbTQgKFRDR19SRUdfUDAsIG9wY19zdF9tNFtvcGNdLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGFfcmVnLCBUQ0dfUkVHX1IyKSwKLSAgICAgICAgICAgICAgICAg ICB0Y2dfb3BjX200OChUQ0dfUkVHX1AwLCBPUENfTk9QX000OCwgMCksCi0gICAgICAgICAg ICAgICAgICAgdGNnX29wY19pMTgoVENHX1JFR19QMCwgT1BDX05PUF9JMTgsIDApKTsKLSNl bHNlCiAgICAgaWYgKEdVRVNUX0JBU0UgIT0gMCkgewotICAgICAgICBhZGRfZ3Vlc3RfYmFz ZSA9IHRjZ19vcGNfYTEgKFRDR19SRUdfUDAsIE9QQ19BRERfQTEsIFRDR19SRUdfUjIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHX0dVRVNUX0JBU0VfUkVH LCBhZGRyX3JlZyk7CisgICAgICAgIHRjZ19vcGNfYTEocywgVENHX1JFR19QMCwgT1BDX0FE RF9BMSwgVENHX1JFR19SMiwKKyAgICAgICAgICAgICAgICAgICBUQ0dfR1VFU1RfQkFTRV9S RUcsIGFkZHJfcmVnKTsKICAgICAgICAgYWRkcl9yZWcgPSBUQ0dfUkVHX1IyOwotICAgIH0g ZWxzZSB7Ci0gICAgICAgIGFkZF9ndWVzdF9iYXNlID0gdGNnX29wY19tNDgoVENHX1JFR19Q MCwgT1BDX05PUF9NNDgsIDApOwogICAgIH0KIAotICAgIGlmICghYnN3YXAgfHwgb3BjID09 IDApIHsKLSAgICAgICAgdGNnX291dF9idW5kbGUocywgKEdVRVNUX0JBU0UgPyBNbUkgOiBt bUkpLAotICAgICAgICAgICAgICAgICAgICAgICBhZGRfZ3Vlc3RfYmFzZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgdGNnX29wY19tNCAoVENHX1JFR19QMCwgb3BjX3N0X200W29wY10s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfcmVnLCBhZGRyX3Jl ZyksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19SRUdfUDAsIE9Q Q19OT1BfSTE4LCAwKSk7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoYnN3YXApIHsKICAgICAg ICAgaWYgKG9wYyA9PSAxKSB7Ci0gICAgICAgICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtSUks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZ3Vlc3RfYmFzZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTEyKFRDR19SRUdfUDAsIE9QQ19ERVBfWl9J MTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX1Iz LCBkYXRhX3JlZywgMTUsIDE1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19v cGNfaTMgKFRDR19SRUdfUDAsIE9QQ19NVVgxX0kzLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVENHX1JFR19SMywgVENHX1JFR19SMywgMHhiKSk7CisgICAg ICAgICAgICB0Y2dfb3V0X2Jzd2FwMTYocywgVENHX1JFR19QMCwgVENHX1JFR19SMywgZGF0 YV9yZWcsIDApOwogICAgICAgICAgICAgZGF0YV9yZWcgPSBUQ0dfUkVHX1IzOwogICAgICAg ICB9IGVsc2UgaWYgKG9wYyA9PSAyKSB7Ci0gICAgICAgICAgICB0Y2dfb3V0X2J1bmRsZShz LCBtSUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZ3Vlc3RfYmFzZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTEyKFRDR19SRUdfUDAsIE9QQ19E RVBfWl9JMTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0df UkVHX1IzLCBkYXRhX3JlZywgMzEsIDMxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IHRjZ19vcGNfaTMgKFRDR19SRUdfUDAsIE9QQ19NVVgxX0kzLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19SMywgVENHX1JFR19SMywgMHhiKSk7 CisgICAgICAgICAgICB0Y2dfb3V0X2Jzd2FwMzIocywgVENHX1JFR19QMCwgVENHX1JFR19S MywgZGF0YV9yZWcsIDApOwogICAgICAgICAgICAgZGF0YV9yZWcgPSBUQ0dfUkVHX1IzOwog ICAgICAgICB9IGVsc2UgaWYgKG9wYyA9PSAzKSB7Ci0gICAgICAgICAgICB0Y2dfb3V0X2J1 bmRsZShzLCBtaUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZ3Vlc3RfYmFz ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19SRUdfUDAs IE9QQ19OT1BfSTE4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNf aTMgKFRDR19SRUdfUDAsIE9QQ19NVVgxX0kzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVENHX1JFR19SMywgZGF0YV9yZWcsIDB4YikpOworICAgICAgICAg ICAgdGNnX291dF9ic3dhcDY0KHMsIFRDR19SRUdfUDAsIFRDR19SRUdfUjMsIGRhdGFfcmVn KTsKICAgICAgICAgICAgIGRhdGFfcmVnID0gVENHX1JFR19SMzsKICAgICAgICAgfQotICAg ICAgICB0Y2dfb3V0X2J1bmRsZShzLCBtaUksCi0gICAgICAgICAgICAgICAgICAgICAgIHRj Z19vcGNfbTQgKFRDR19SRUdfUDAsIG9wY19zdF9tNFtvcGNdLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhX3JlZywgYWRkcl9yZWcpLAotICAgICAgICAgICAg ICAgICAgICAgICB0Y2dfb3BjX2kxOChUQ0dfUkVHX1AwLCBPUENfTk9QX0kxOCwgMCksCi0g ICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTE4KFRDR19SRUdfUDAsIE9QQ19OT1Bf STE4LCAwKSk7CiAgICAgfQotI2VuZGlmCisgICAgdGNnX29wY19tNChzLCBUQ0dfUkVHX1Aw LCBvcGNfc3RfbTRbb3BjXSwgZGF0YV9yZWcsIGFkZHJfcmVnKTsKIH0KIAogI2VuZGlmCiAK LXN0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfb3V0X29wKFRDR0NvbnRleHQgKnMsIFRDR09wY29k ZSBvcGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUQ0dBcmcgKmFy Z3MsIGNvbnN0IGludCAqY29uc3RfYXJncykKK3N0YXRpYyB2b2lkIHRjZ19vdXRfb3AoVENH Q29udGV4dCAqcywgVENHT3Bjb2RlIG9wYywKKyAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgVENHQXJnICphcmdzLCBjb25zdCBpbnQgKmNvbnN0X2FyZ3MpCiB7CisgICAgVENHQXJn IGFyZzAsIGFyZzEsIGFyZzI7CisKKyAgICBhcmcwID0gYXJnc1swXTsKKyAgICBhcmcxID0g YXJnc1sxXTsKKyAgICBhcmcyID0gYXJnc1syXTsKKwogICAgIHN3aXRjaChvcGMpIHsKICAg ICBjYXNlIElOREVYX29wX2V4aXRfdGI6Ci0gICAgICAgIHRjZ19vdXRfZXhpdF90YihzLCBh cmdzWzBdKTsKKyAgICAgICAgdGNnX291dF9leGl0X3RiKHMsIGFyZzApOwogICAgICAgICBi cmVhazsKICAgICBjYXNlIElOREVYX29wX2JyOgotICAgICAgICB0Y2dfb3V0X2JyKHMsIGFy Z3NbMF0pOworICAgICAgICB0Y2dfb3V0X2JyKHMsIGFyZzApOwogICAgICAgICBicmVhazsK ICAgICBjYXNlIElOREVYX29wX2NhbGw6Ci0gICAgICAgIHRjZ19vdXRfY2FsbChzLCBhcmdz WzBdKTsKKyAgICAgICAgdGNnX291dF9jYWxsKHMsIGFyZzAsIGNvbnN0X2FyZ3NbMF0pOwog ICAgICAgICBicmVhazsKICAgICBjYXNlIElOREVYX29wX2dvdG9fdGI6Ci0gICAgICAgIHRj Z19vdXRfZ290b190YihzLCBhcmdzWzBdKTsKKyAgICAgICAgdGNnX291dF9nb3RvX3RiKHMs IGFyZzApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIElOREVYX29wX2ptcDoKLSAgICAg ICAgdGNnX291dF9qbXAocywgYXJnc1swXSk7CisgICAgICAgIHRjZ19vdXRfam1wKHMsIGFy ZzApOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSU5ERVhfb3BfbW92aV9pMzI6Ci0g ICAgICAgIHRjZ19vdXRfbW92aShzLCBUQ0dfVFlQRV9JMzIsIGFyZ3NbMF0sIGFyZ3NbMV0p OworICAgICAgICB0Y2dfb3V0X21vdmkocywgVENHX1RZUEVfSTMyLCBhcmcwLCBhcmcxKTsK ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTkRFWF9vcF9tb3ZpX2k2NDoKLSAgICAgICAg dGNnX291dF9tb3ZpKHMsIFRDR19UWVBFX0k2NCwgYXJnc1swXSwgYXJnc1sxXSk7CisgICAg ICAgIHRjZ19vdXRfbW92aShzLCBUQ0dfVFlQRV9JNjQsIGFyZzAsIGFyZzEpOwogICAgICAg ICBicmVhazsKIAogICAgIGNhc2UgSU5ERVhfb3BfbGQ4dV9pMzI6CiAgICAgY2FzZSBJTkRF WF9vcF9sZDh1X2k2NDoKLSAgICAgICAgdGNnX291dF9sZF9yZWwocywgT1BDX0xEMV9NMSwg YXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7CisgICAgICAgIHRjZ19vdXRfbGRfcmVsKHMs IE9QQ19MRDFfTTEsIGFyZzAsIGFyZzEsIGFyZzIpOwogICAgICAgICBicmVhazsKICAgICBj YXNlIElOREVYX29wX2xkOHNfaTMyOgogICAgIGNhc2UgSU5ERVhfb3BfbGQ4c19pNjQ6Ci0g ICAgICAgIHRjZ19vdXRfbGRfcmVsKHMsIE9QQ19MRDFfTTEsIGFyZ3NbMF0sIGFyZ3NbMV0s IGFyZ3NbMl0pOwotICAgICAgICB0Y2dfb3V0X2V4dChzLCBPUENfU1hUMV9JMjksIGFyZ3Nb MF0sIGFyZ3NbMF0pOworICAgICAgICB0Y2dfb3V0X2xkX3JlbChzLCBPUENfTEQxX00xLCBh cmcwLCBhcmcxLCBhcmcyKTsKKyAgICAgICAgdGNnX291dF9leHQocywgT1BDX1NYVDFfSTI5 LCBhcmcwLCBhcmcwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTkRFWF9vcF9sZDE2 dV9pMzI6CiAgICAgY2FzZSBJTkRFWF9vcF9sZDE2dV9pNjQ6Ci0gICAgICAgIHRjZ19vdXRf bGRfcmVsKHMsIE9QQ19MRDJfTTEsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pOworICAg ICAgICB0Y2dfb3V0X2xkX3JlbChzLCBPUENfTEQyX00xLCBhcmcwLCBhcmcxLCBhcmcyKTsK ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTkRFWF9vcF9sZDE2c19pMzI6CiAgICAgY2Fz ZSBJTkRFWF9vcF9sZDE2c19pNjQ6Ci0gICAgICAgIHRjZ19vdXRfbGRfcmVsKHMsIE9QQ19M RDJfTTEsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pOwotICAgICAgICB0Y2dfb3V0X2V4 dChzLCBPUENfU1hUMl9JMjksIGFyZ3NbMF0sIGFyZ3NbMF0pOworICAgICAgICB0Y2dfb3V0 X2xkX3JlbChzLCBPUENfTEQyX00xLCBhcmcwLCBhcmcxLCBhcmcyKTsKKyAgICAgICAgdGNn X291dF9leHQocywgT1BDX1NYVDJfSTI5LCBhcmcwLCBhcmcwKTsKICAgICAgICAgYnJlYWs7 CiAgICAgY2FzZSBJTkRFWF9vcF9sZF9pMzI6CiAgICAgY2FzZSBJTkRFWF9vcF9sZDMydV9p NjQ6Ci0gICAgICAgIHRjZ19vdXRfbGRfcmVsKHMsIE9QQ19MRDRfTTEsIGFyZ3NbMF0sIGFy Z3NbMV0sIGFyZ3NbMl0pOworICAgICAgICB0Y2dfb3V0X2xkX3JlbChzLCBPUENfTEQ0X00x LCBhcmcwLCBhcmcxLCBhcmcyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTkRFWF9v cF9sZDMyc19pNjQ6Ci0gICAgICAgIHRjZ19vdXRfbGRfcmVsKHMsIE9QQ19MRDRfTTEsIGFy Z3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pOwotICAgICAgICB0Y2dfb3V0X2V4dChzLCBPUENf U1hUNF9JMjksIGFyZ3NbMF0sIGFyZ3NbMF0pOworICAgICAgICB0Y2dfb3V0X2xkX3JlbChz LCBPUENfTEQ0X00xLCBhcmcwLCBhcmcxLCBhcmcyKTsKKyAgICAgICAgdGNnX291dF9leHQo cywgT1BDX1NYVDRfSTI5LCBhcmcwLCBhcmcwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz ZSBJTkRFWF9vcF9sZF9pNjQ6Ci0gICAgICAgIHRjZ19vdXRfbGRfcmVsKHMsIE9QQ19MRDhf TTEsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pOworICAgICAgICB0Y2dfb3V0X2xkX3Jl bChzLCBPUENfTEQ4X00xLCBhcmcwLCBhcmcxLCBhcmcyKTsKICAgICAgICAgYnJlYWs7CiAg ICAgY2FzZSBJTkRFWF9vcF9zdDhfaTMyOgogICAgIGNhc2UgSU5ERVhfb3Bfc3Q4X2k2NDoK LSAgICAgICAgdGNnX291dF9zdF9yZWwocywgT1BDX1NUMV9NNCwgYXJnc1swXSwgYXJnc1sx XSwgYXJnc1syXSk7CisgICAgICAgIHRjZ19vdXRfc3RfcmVsKHMsIE9QQ19TVDFfTTQsIGFy ZzAsIGFyZzEsIGFyZzIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIElOREVYX29wX3N0 MTZfaTMyOgogICAgIGNhc2UgSU5ERVhfb3Bfc3QxNl9pNjQ6Ci0gICAgICAgIHRjZ19vdXRf c3RfcmVsKHMsIE9QQ19TVDJfTTQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pOworICAg ICAgICB0Y2dfb3V0X3N0X3JlbChzLCBPUENfU1QyX000LCBhcmcwLCBhcmcxLCBhcmcyKTsK ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTkRFWF9vcF9zdF9pMzI6CiAgICAgY2FzZSBJ TkRFWF9vcF9zdDMyX2k2NDoKLSAgICAgICAgdGNnX291dF9zdF9yZWwocywgT1BDX1NUNF9N NCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7CisgICAgICAgIHRjZ19vdXRfc3RfcmVs KHMsIE9QQ19TVDRfTTQsIGFyZzAsIGFyZzEsIGFyZzIpOwogICAgICAgICBicmVhazsKICAg ICBjYXNlIElOREVYX29wX3N0X2k2NDoKLSAgICAgICAgdGNnX291dF9zdF9yZWwocywgT1BD X1NUOF9NNCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7CisgICAgICAgIHRjZ19vdXRf c3RfcmVsKHMsIE9QQ19TVDhfTTQsIGFyZzAsIGFyZzEsIGFyZzIpOwogICAgICAgICBicmVh azsKIAogICAgIGNhc2UgSU5ERVhfb3BfYWRkX2kzMjoKICAgICBjYXNlIElOREVYX29wX2Fk ZF9pNjQ6Ci0gICAgICAgIHRjZ19vdXRfYWx1KHMsIE9QQ19BRERfQTEsIGFyZ3NbMF0sIGFy Z3NbMV0sIGNvbnN0X2FyZ3NbMV0sCi0gICAgICAgICAgICAgICAgICAgIGFyZ3NbMl0sIGNv bnN0X2FyZ3NbMl0pOworICAgICAgICBpZiAoY29uc3RfYXJnc1syXSkgeworICAgICAgICAg ICAgdGNnX291dF9hZGRpMihzLCBhcmcwLCBhcmcxLCBhcmcyKTsKKyAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgIHRjZ19vcGNfYTEocywgVENHX1JFR19QMCwgT1BDX0FERF9BMSwg YXJnMCwgYXJnMSwgYXJnMik7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2Fz ZSBJTkRFWF9vcF9zdWJfaTMyOgogICAgIGNhc2UgSU5ERVhfb3Bfc3ViX2k2NDoKLSAgICAg ICAgdGNnX291dF9hbHUocywgT1BDX1NVQl9BMSwgYXJnc1swXSwgYXJnc1sxXSwgY29uc3Rf YXJnc1sxXSwKLSAgICAgICAgICAgICAgICAgICAgYXJnc1syXSwgY29uc3RfYXJnc1syXSk7 CisgICAgICAgIGlmIChjb25zdF9hcmdzWzFdKSB7CisgICAgICAgICAgICBpZiAoY29uc3Rf YXJnc1syXSkgeworICAgICAgICAgICAgICAgIHRjZ19vdXRfbW92aShzLCBUQ0dfVFlQRV9J NjQsIGFyZzAsIGFyZzEgLSBhcmcyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgICAgdGNnX29wY19hMyhzLCBUQ0dfUkVHX1AwLCBPUENfU1VCX0EzLCBhcmcwLCBh cmcxLCBhcmcyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjb25zdF9h cmdzWzJdKSB7CisgICAgICAgICAgICB0Y2dfb3V0X2FkZGkyKHMsIGFyZzAsIGFyZzEsIC1h cmcyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRjZ19vcGNfYTEocywgVENH X1JFR19QMCwgT1BDX1NVQl9BMSwgYXJnMCwgYXJnMSwgYXJnMik7CisgICAgICAgIH0KICAg ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIElOREVYX29wX2FuZF9pMzI6CiAgICAgY2FzZSBJ TkRFWF9vcF9hbmRfaTY0OgotICAgICAgICB0Y2dfb3V0X2FsdShzLCBPUENfQU5EX0ExLCBh cmdzWzBdLCBhcmdzWzFdLCBjb25zdF9hcmdzWzFdLAotICAgICAgICAgICAgICAgICAgICBh cmdzWzJdLCBjb25zdF9hcmdzWzJdKTsKKyAgICAgICAgdGNnX291dF9hbmQocywgYXJnMCwg YXJnMSwgYXJnMiwgY29uc3RfYXJnc1syXSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug SU5ERVhfb3BfYW5kY19pMzI6CiAgICAgY2FzZSBJTkRFWF9vcF9hbmRjX2k2NDoKLSAgICAg ICAgdGNnX291dF9hbHUocywgT1BDX0FORENNX0ExLCBhcmdzWzBdLCBhcmdzWzFdLCBjb25z dF9hcmdzWzFdLAotICAgICAgICAgICAgICAgICAgICBhcmdzWzJdLCBjb25zdF9hcmdzWzJd KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJTkRFWF9vcF9lcXZfaTMyOgotICAgIGNh c2UgSU5ERVhfb3BfZXF2X2k2NDoKLSAgICAgICAgdGNnX291dF9lcXYocywgYXJnc1swXSwg YXJnc1sxXSwgY29uc3RfYXJnc1sxXSwKLSAgICAgICAgICAgICAgICAgICAgYXJnc1syXSwg Y29uc3RfYXJnc1syXSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSU5ERVhfb3BfbmFu ZF9pMzI6Ci0gICAgY2FzZSBJTkRFWF9vcF9uYW5kX2k2NDoKLSAgICAgICAgdGNnX291dF9u YW5kKHMsIGFyZ3NbMF0sIGFyZ3NbMV0sIGNvbnN0X2FyZ3NbMV0sCi0gICAgICAgICAgICAg ICAgICAgICBhcmdzWzJdLCBjb25zdF9hcmdzWzJdKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg Y2FzZSBJTkRFWF9vcF9ub3JfaTMyOgotICAgIGNhc2UgSU5ERVhfb3Bfbm9yX2k2NDoKLSAg ICAgICAgdGNnX291dF9ub3IocywgYXJnc1swXSwgYXJnc1sxXSwgY29uc3RfYXJnc1sxXSwK LSAgICAgICAgICAgICAgICAgICAgYXJnc1syXSwgY29uc3RfYXJnc1syXSk7CisgICAgICAg IGlmIChjb25zdF9hcmdzWzJdKSB7CisgICAgICAgICAgICBpZiAoY29uc3RfYXJnc1sxXSkg eworICAgICAgICAgICAgICAgIHRjZ19vdXRfbW92aShzLCBUQ0dfVFlQRV9JNjQsIGFyZzAs IGFyZzEgJiB+YXJnMik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg IHRjZ19vdXRfYW5kKHMsIGFyZzAsIGFyZzEsIH5hcmcyLCAxKTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRjZ19vdXRfYW5kYyhzLCBhcmcwLCBh cmcxLCBjb25zdF9hcmdzWzFdLCBhcmcyKTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsK ICAgICBjYXNlIElOREVYX29wX29yX2kzMjoKICAgICBjYXNlIElOREVYX29wX29yX2k2NDoK LSAgICAgICAgdGNnX291dF9hbHUocywgT1BDX09SX0ExLCBhcmdzWzBdLCBhcmdzWzFdLCBj b25zdF9hcmdzWzFdLAotICAgICAgICAgICAgICAgICAgICBhcmdzWzJdLCBjb25zdF9hcmdz WzJdKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJTkRFWF9vcF9vcmNfaTMyOgotICAg IGNhc2UgSU5ERVhfb3Bfb3JjX2k2NDoKLSAgICAgICAgdGNnX291dF9vcmMocywgYXJnc1sw XSwgYXJnc1sxXSwgY29uc3RfYXJnc1sxXSwKLSAgICAgICAgICAgICAgICAgICAgYXJnc1sy XSwgY29uc3RfYXJnc1syXSk7CisgICAgICAgIHRjZ19vdXRfb3IocywgYXJnMCwgYXJnMSwg YXJnMiwgY29uc3RfYXJnc1syXSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSU5ERVhf b3BfeG9yX2kzMjoKICAgICBjYXNlIElOREVYX29wX3hvcl9pNjQ6Ci0gICAgICAgIHRjZ19v dXRfYWx1KHMsIE9QQ19YT1JfQTEsIGFyZ3NbMF0sIGFyZ3NbMV0sIGNvbnN0X2FyZ3NbMV0s Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3NbMl0sIGNvbnN0X2FyZ3NbMl0pOworICAgICAg ICB0Y2dfb3V0X3hvcihzLCBhcmcwLCBhcmcxLCBhcmcyLCBjb25zdF9hcmdzWzJdKTsKICAg ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIElOREVYX29wX211bF9pMzI6CiAgICAgY2FzZSBJ TkRFWF9vcF9tdWxfaTY0OgotICAgICAgICB0Y2dfb3V0X211bChzLCBhcmdzWzBdLCBhcmdz WzFdLCBhcmdzWzJdKTsKKyAgICAgICAgdGNnX291dF9tdWwocywgYXJnMCwgYXJnMSwgYXJn Mik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJTkRFWF9vcF9zYXJfaTMyOgotICAg ICAgICB0Y2dfb3V0X3Nhcl9pMzIocywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgY29u c3RfYXJnc1syXSk7CisgICAgICAgIHRjZ19vdXRfc2FyX2kzMihzLCBUQ0dfUkVHX1AwLCBh cmcwLCBhcmcxLCBhcmcyLCBjb25zdF9hcmdzWzJdKTsKICAgICAgICAgYnJlYWs7CiAgICAg Y2FzZSBJTkRFWF9vcF9zYXJfaTY0OgotICAgICAgICB0Y2dfb3V0X3Nhcl9pNjQocywgYXJn c1swXSwgYXJnc1sxXSwgYXJnc1syXSwgY29uc3RfYXJnc1syXSk7CisgICAgICAgIHRjZ19v dXRfc2FyX2k2NChzLCBUQ0dfUkVHX1AwLCBhcmcwLCBhcmcxLCBhcmcyLCBjb25zdF9hcmdz WzJdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTkRFWF9vcF9zaGxfaTMyOgotICAg ICAgICB0Y2dfb3V0X3NobF9pMzIocywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgY29u c3RfYXJnc1syXSk7CisgICAgICAgIHRjZ19vdXRfc2hsX2kzMihzLCBUQ0dfUkVHX1AwLCBh cmcwLCBhcmcxLCBhcmcyLCBjb25zdF9hcmdzWzJdKTsKICAgICAgICAgYnJlYWs7CiAgICAg Y2FzZSBJTkRFWF9vcF9zaGxfaTY0OgotICAgICAgICB0Y2dfb3V0X3NobF9pNjQocywgYXJn c1swXSwgYXJnc1sxXSwgYXJnc1syXSwgY29uc3RfYXJnc1syXSk7CisgICAgICAgIHRjZ19v dXRfc2hsX2k2NChzLCBUQ0dfUkVHX1AwLCBhcmcwLCBhcmcxLCBhcmcyLCBjb25zdF9hcmdz WzJdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTkRFWF9vcF9zaHJfaTMyOgotICAg ICAgICB0Y2dfb3V0X3Nocl9pMzIocywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgY29u c3RfYXJnc1syXSk7CisgICAgICAgIHRjZ19vdXRfc2hyX2kzMihzLCBUQ0dfUkVHX1AwLCBh cmcwLCBhcmcxLCBhcmcyLCBjb25zdF9hcmdzWzJdKTsKICAgICAgICAgYnJlYWs7CiAgICAg Y2FzZSBJTkRFWF9vcF9zaHJfaTY0OgotICAgICAgICB0Y2dfb3V0X3Nocl9pNjQocywgYXJn c1swXSwgYXJnc1sxXSwgYXJnc1syXSwgY29uc3RfYXJnc1syXSk7CisgICAgICAgIHRjZ19v dXRfc2hyX2k2NChzLCBUQ0dfUkVHX1AwLCBhcmcwLCBhcmcxLCBhcmcyLCBjb25zdF9hcmdz WzJdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTkRFWF9vcF9yb3RsX2kzMjoKLSAg ICAgICAgdGNnX291dF9yb3RsX2kzMihzLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBj b25zdF9hcmdzWzJdKTsKKyAgICAgICAgdGNnX291dF9yb3RsX2kzMihzLCBhcmcwLCBhcmcx LCBhcmcyLCBjb25zdF9hcmdzWzJdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTkRF WF9vcF9yb3RsX2k2NDoKLSAgICAgICAgdGNnX291dF9yb3RsX2k2NChzLCBhcmdzWzBdLCBh cmdzWzFdLCBhcmdzWzJdLCBjb25zdF9hcmdzWzJdKTsKKyAgICAgICAgdGNnX291dF9yb3Rs X2k2NChzLCBhcmcwLCBhcmcxLCBhcmcyLCBjb25zdF9hcmdzWzJdKTsKICAgICAgICAgYnJl YWs7CiAgICAgY2FzZSBJTkRFWF9vcF9yb3RyX2kzMjoKLSAgICAgICAgdGNnX291dF9yb3Ry X2kzMihzLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBjb25zdF9hcmdzWzJdKTsKKyAg ICAgICAgdGNnX291dF9yb3RyX2kzMihzLCBhcmcwLCBhcmcxLCBhcmcyLCBjb25zdF9hcmdz WzJdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTkRFWF9vcF9yb3RyX2k2NDoKLSAg ICAgICAgdGNnX291dF9yb3RyX2k2NChzLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBj b25zdF9hcmdzWzJdKTsKKyAgICAgICAgdGNnX291dF9yb3RyX2k2NChzLCBhcmcwLCBhcmcx LCBhcmcyLCBjb25zdF9hcmdzWzJdKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIElO REVYX29wX2V4dDhzX2kzMjoKICAgICBjYXNlIElOREVYX29wX2V4dDhzX2k2NDoKLSAgICAg ICAgdGNnX291dF9leHQocywgT1BDX1NYVDFfSTI5LCBhcmdzWzBdLCBhcmdzWzFdKTsKKyAg ICAgICAgdGNnX291dF9leHQocywgT1BDX1NYVDFfSTI5LCBhcmcwLCBhcmcxKTsKICAgICAg ICAgYnJlYWs7CiAgICAgY2FzZSBJTkRFWF9vcF9leHQ4dV9pMzI6CiAgICAgY2FzZSBJTkRF WF9vcF9leHQ4dV9pNjQ6Ci0gICAgICAgIHRjZ19vdXRfZXh0KHMsIE9QQ19aWFQxX0kyOSwg YXJnc1swXSwgYXJnc1sxXSk7CisgICAgICAgIHRjZ19vdXRfZXh0KHMsIE9QQ19aWFQxX0ky OSwgYXJnMCwgYXJnMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSU5ERVhfb3BfZXh0 MTZzX2kzMjoKICAgICBjYXNlIElOREVYX29wX2V4dDE2c19pNjQ6Ci0gICAgICAgIHRjZ19v dXRfZXh0KHMsIE9QQ19TWFQyX0kyOSwgYXJnc1swXSwgYXJnc1sxXSk7CisgICAgICAgIHRj Z19vdXRfZXh0KHMsIE9QQ19TWFQyX0kyOSwgYXJnMCwgYXJnMSk7CiAgICAgICAgIGJyZWFr OwogICAgIGNhc2UgSU5ERVhfb3BfZXh0MTZ1X2kzMjoKICAgICBjYXNlIElOREVYX29wX2V4 dDE2dV9pNjQ6Ci0gICAgICAgIHRjZ19vdXRfZXh0KHMsIE9QQ19aWFQyX0kyOSwgYXJnc1sw XSwgYXJnc1sxXSk7CisgICAgICAgIHRjZ19vdXRfZXh0KHMsIE9QQ19aWFQyX0kyOSwgYXJn MCwgYXJnMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSU5ERVhfb3BfZXh0MzJzX2k2 NDoKLSAgICAgICAgdGNnX291dF9leHQocywgT1BDX1NYVDRfSTI5LCBhcmdzWzBdLCBhcmdz WzFdKTsKKyAgICAgICAgdGNnX291dF9leHQocywgT1BDX1NYVDRfSTI5LCBhcmcwLCBhcmcx KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJTkRFWF9vcF9leHQzMnVfaTY0OgotICAg ICAgICB0Y2dfb3V0X2V4dChzLCBPUENfWlhUNF9JMjksIGFyZ3NbMF0sIGFyZ3NbMV0pOwor ICAgICAgICB0Y2dfb3V0X2V4dChzLCBPUENfWlhUNF9JMjksIGFyZzAsIGFyZzEpOwogICAg ICAgICBicmVhazsKIAogICAgIGNhc2UgSU5ERVhfb3BfYnN3YXAxNl9pMzI6CiAgICAgY2Fz ZSBJTkRFWF9vcF9ic3dhcDE2X2k2NDoKLSAgICAgICAgdGNnX291dF9ic3dhcDE2KHMsIGFy Z3NbMF0sIGFyZ3NbMV0pOworICAgICAgICB0Y2dfb3V0X2Jzd2FwMTYocywgVENHX1JFR19Q MCwgYXJnMCwgYXJnMSwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSU5ERVhfb3Bf YnN3YXAzMl9pMzI6CiAgICAgY2FzZSBJTkRFWF9vcF9ic3dhcDMyX2k2NDoKLSAgICAgICAg dGNnX291dF9ic3dhcDMyKHMsIGFyZ3NbMF0sIGFyZ3NbMV0pOworICAgICAgICB0Y2dfb3V0 X2Jzd2FwMzIocywgVENHX1JFR19QMCwgYXJnMCwgYXJnMSwgMCk7CiAgICAgICAgIGJyZWFr OwogICAgIGNhc2UgSU5ERVhfb3BfYnN3YXA2NF9pNjQ6Ci0gICAgICAgIHRjZ19vdXRfYnN3 YXA2NChzLCBhcmdzWzBdLCBhcmdzWzFdKTsKKyAgICAgICAgdGNnX291dF9ic3dhcDY0KHMs IFRDR19SRUdfUDAsIGFyZzAsIGFyZzEpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug SU5ERVhfb3BfYnJjb25kX2kzMjoKLSAgICAgICAgdGNnX291dF9icmNvbmQocywgYXJnc1sy XSwgYXJnc1swXSwgY29uc3RfYXJnc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgYXJn c1sxXSwgY29uc3RfYXJnc1sxXSwgYXJnc1szXSwgMSk7CisgICAgICAgIHRjZ19vdXRfYnJj b25kKHMsIGFyZzIsIGFyZzAsIGNvbnN0X2FyZ3NbMF0sCisgICAgICAgICAgICAgICAgICAg ICAgIGFyZzEsIGNvbnN0X2FyZ3NbMV0sIGFyZ3NbM10sIDEpOwogICAgICAgICBicmVhazsK ICAgICBjYXNlIElOREVYX29wX2JyY29uZF9pNjQ6Ci0gICAgICAgIHRjZ19vdXRfYnJjb25k KHMsIGFyZ3NbMl0sIGFyZ3NbMF0sIGNvbnN0X2FyZ3NbMF0sCi0gICAgICAgICAgICAgICAg ICAgICAgIGFyZ3NbMV0sIGNvbnN0X2FyZ3NbMV0sIGFyZ3NbM10sIDApOworICAgICAgICB0 Y2dfb3V0X2JyY29uZChzLCBhcmcyLCBhcmcwLCBjb25zdF9hcmdzWzBdLAorICAgICAgICAg ICAgICAgICAgICAgICBhcmcxLCBjb25zdF9hcmdzWzFdLCBhcmdzWzNdLCAwKTsKICAgICAg ICAgYnJlYWs7CiAgICAgY2FzZSBJTkRFWF9vcF9zZXRjb25kX2kzMjoKLSAgICAgICAgdGNn X291dF9zZXRjb25kKHMsIGFyZ3NbM10sIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIDEp OworICAgICAgICB0Y2dfb3V0X3NldGNvbmQocywgYXJnc1szXSwgYXJnMCwgYXJnMSwgYXJn MiwgMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSU5ERVhfb3Bfc2V0Y29uZF9pNjQ6 Ci0gICAgICAgIHRjZ19vdXRfc2V0Y29uZChzLCBhcmdzWzNdLCBhcmdzWzBdLCBhcmdzWzFd LCBhcmdzWzJdLCAwKTsKKyAgICAgICAgdGNnX291dF9zZXRjb25kKHMsIGFyZ3NbM10sIGFy ZzAsIGFyZzEsIGFyZzIsIDApOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSU5ERVhf b3BfcWVtdV9sZDh1OgpAQCAtMjE1NiwxMyArMjI3MiwxNSBAQCBzdGF0aWMgaW5saW5lIHZv aWQgdGNnX291dF9vcChUQ0dDb250ZXh0ICpzLCBUQ0dPcGNvZGUgb3BjLAogCiBzdGF0aWMg Y29uc3QgVENHVGFyZ2V0T3BEZWYgaWE2NF9vcF9kZWZzW10gPSB7CiAgICAgeyBJTkRFWF9v cF9iciwgeyB9IH0sCi0gICAgeyBJTkRFWF9vcF9jYWxsLCB7ICJyIiB9IH0sCisgICAgeyBJ TkRFWF9vcF9jYWxsLCB7ICJyaSIgfSB9LAogICAgIHsgSU5ERVhfb3BfZXhpdF90YiwgeyB9 IH0sCiAgICAgeyBJTkRFWF9vcF9nb3RvX3RiLCB7IH0gfSwKICAgICB7IElOREVYX29wX2pt cCwgeyAiciIgfSB9LAogCiAgICAgeyBJTkRFWF9vcF9tb3ZfaTMyLCB7ICJyIiwgInIiIH0g fSwKKyAgICB7IElOREVYX29wX21vdl9pNjQsIHsgInIiLCAiciIgfSB9LAogICAgIHsgSU5E RVhfb3BfbW92aV9pMzIsIHsgInIiIH0gfSwKKyAgICB7IElOREVYX29wX21vdmlfaTY0LCB7 ICJyIiB9IH0sCiAKICAgICB7IElOREVYX29wX2xkOHVfaTMyLCB7ICJyIiwgInIiIH0gfSwK ICAgICB7IElOREVYX29wX2xkOHNfaTMyLCB7ICJyIiwgInIiIH0gfSwKQEAgLTIxNzMsNDAg KzIyOTEsNiBAQCBzdGF0aWMgY29uc3QgVENHVGFyZ2V0T3BEZWYgaWE2NF9vcF9kZWZzW10g PSB7CiAgICAgeyBJTkRFWF9vcF9zdDE2X2kzMiwgeyAicloiLCAiciIgfSB9LAogICAgIHsg SU5ERVhfb3Bfc3RfaTMyLCB7ICJyWiIsICJyIiB9IH0sCiAKLSAgICB7IElOREVYX29wX2Fk ZF9pMzIsIHsgInIiLCAickkiLCAickkiIH0gfSwKLSAgICB7IElOREVYX29wX3N1Yl9pMzIs IHsgInIiLCAickkiLCAickkiIH0gfSwKLQotICAgIHsgSU5ERVhfb3BfYW5kX2kzMiwgeyAi ciIsICJySSIsICJySSIgfSB9LAotICAgIHsgSU5ERVhfb3BfYW5kY19pMzIsIHsgInIiLCAi ckkiLCAickkiIH0gfSwKLSAgICB7IElOREVYX29wX2Vxdl9pMzIsIHsgInIiLCAicloiLCAi cloiIH0gfSwKLSAgICB7IElOREVYX29wX25hbmRfaTMyLCB7ICJyIiwgInJaIiwgInJaIiB9 IH0sCi0gICAgeyBJTkRFWF9vcF9ub3JfaTMyLCB7ICJyIiwgInJaIiwgInJaIiB9IH0sCi0g ICAgeyBJTkRFWF9vcF9vcl9pMzIsIHsgInIiLCAickkiLCAickkiIH0gfSwKLSAgICB7IElO REVYX29wX29yY19pMzIsIHsgInIiLCAicloiLCAicloiIH0gfSwKLSAgICB7IElOREVYX29w X3hvcl9pMzIsIHsgInIiLCAickkiLCAickkiIH0gfSwKLQotICAgIHsgSU5ERVhfb3BfbXVs X2kzMiwgeyAiciIsICJyWiIsICJyWiIgfSB9LAotCi0gICAgeyBJTkRFWF9vcF9zYXJfaTMy LCB7ICJyIiwgInJaIiwgInJpIiB9IH0sCi0gICAgeyBJTkRFWF9vcF9zaGxfaTMyLCB7ICJy IiwgInJaIiwgInJpIiB9IH0sCi0gICAgeyBJTkRFWF9vcF9zaHJfaTMyLCB7ICJyIiwgInJa IiwgInJpIiB9IH0sCi0gICAgeyBJTkRFWF9vcF9yb3RsX2kzMiwgeyAiciIsICJyWiIsICJy aSIgfSB9LAotICAgIHsgSU5ERVhfb3Bfcm90cl9pMzIsIHsgInIiLCAicloiLCAicmkiIH0g fSwKLQotICAgIHsgSU5ERVhfb3BfZXh0OHNfaTMyLCB7ICJyIiwgInJaIn0gfSwKLSAgICB7 IElOREVYX29wX2V4dDh1X2kzMiwgeyAiciIsICJyWiJ9IH0sCi0gICAgeyBJTkRFWF9vcF9l eHQxNnNfaTMyLCB7ICJyIiwgInJaIn0gfSwKLSAgICB7IElOREVYX29wX2V4dDE2dV9pMzIs IHsgInIiLCAicloifSB9LAotCi0gICAgeyBJTkRFWF9vcF9ic3dhcDE2X2kzMiwgeyAiciIs ICJyWiIgfSB9LAotICAgIHsgSU5ERVhfb3BfYnN3YXAzMl9pMzIsIHsgInIiLCAicloiIH0g fSwKLQotICAgIHsgSU5ERVhfb3BfYnJjb25kX2kzMiwgeyAickkiLCAickkiIH0gfSwKLSAg ICB7IElOREVYX29wX3NldGNvbmRfaTMyLCB7ICJyIiwgInJaIiwgInJaIiB9IH0sCi0KLSAg ICB7IElOREVYX29wX21vdl9pNjQsIHsgInIiLCAiciIgfSB9LAotICAgIHsgSU5ERVhfb3Bf bW92aV9pNjQsIHsgInIiIH0gfSwKLQogICAgIHsgSU5ERVhfb3BfbGQ4dV9pNjQsIHsgInIi LCAiciIgfSB9LAogICAgIHsgSU5ERVhfb3BfbGQ4c19pNjQsIHsgInIiLCAiciIgfSB9LAog ICAgIHsgSU5ERVhfb3BfbGQxNnVfaTY0LCB7ICJyIiwgInIiIH0gfSwKQEAgLTIyMTksMjYg KzIzMDMsMzkgQEAgc3RhdGljIGNvbnN0IFRDR1RhcmdldE9wRGVmIGlhNjRfb3BfZGVmc1td ID0gewogICAgIHsgSU5ERVhfb3Bfc3QzMl9pNjQsIHsgInJaIiwgInIiIH0gfSwKICAgICB7 IElOREVYX29wX3N0X2k2NCwgeyAicloiLCAiciIgfSB9LAogCi0gICAgeyBJTkRFWF9vcF9h ZGRfaTY0LCB7ICJyIiwgInJJIiwgInJJIiB9IH0sCi0gICAgeyBJTkRFWF9vcF9zdWJfaTY0 LCB7ICJyIiwgInJJIiwgInJJIiB9IH0sCisgICAgeyBJTkRFWF9vcF9hZGRfaTMyLCB7ICJy IiwgInJaIiwgInJpIiB9IH0sCisgICAgeyBJTkRFWF9vcF9hZGRfaTY0LCB7ICJyIiwgInJa IiwgInJpIiB9IH0sCisgICAgeyBJTkRFWF9vcF9zdWJfaTMyLCB7ICJyIiwgInJKIiwgInJp IiB9IH0sCisgICAgeyBJTkRFWF9vcF9zdWJfaTY0LCB7ICJyIiwgInJKIiwgInJpIiB9IH0s CiAKLSAgICB7IElOREVYX29wX2FuZF9pNjQsIHsgInIiLCAickkiLCAickkiIH0gfSwKLSAg ICB7IElOREVYX29wX2FuZGNfaTY0LCB7ICJyIiwgInJJIiwgInJJIiB9IH0sCi0gICAgeyBJ TkRFWF9vcF9lcXZfaTY0LCB7ICJyIiwgInJaIiwgInJaIiB9IH0sCi0gICAgeyBJTkRFWF9v cF9uYW5kX2k2NCwgeyAiciIsICJyWiIsICJyWiIgfSB9LAotICAgIHsgSU5ERVhfb3Bfbm9y X2k2NCwgeyAiciIsICJyWiIsICJyWiIgfSB9LAotICAgIHsgSU5ERVhfb3Bfb3JfaTY0LCB7 ICJyIiwgInJJIiwgInJJIiB9IH0sCi0gICAgeyBJTkRFWF9vcF9vcmNfaTY0LCB7ICJyIiwg InJaIiwgInJaIiB9IH0sCi0gICAgeyBJTkRFWF9vcF94b3JfaTY0LCB7ICJyIiwgInJJIiwg InJJIiB9IH0sCisgICAgeyBJTkRFWF9vcF9hbmRfaTMyLCB7ICJyIiwgInJaIiwgInJpIiB9 IH0sCisgICAgeyBJTkRFWF9vcF9hbmRfaTY0LCB7ICJyIiwgInJaIiwgInJpIiB9IH0sCisg ICAgeyBJTkRFWF9vcF9hbmRjX2kzMiwgeyAiciIsICJySiIsICJyaSIgfSB9LAorICAgIHsg SU5ERVhfb3BfYW5kY19pNjQsIHsgInIiLCAickoiLCAicmkiIH0gfSwKKyAgICB7IElOREVY X29wX29yX2kzMiwgeyAiciIsICJyWiIsICJySiIgfSB9LAorICAgIHsgSU5ERVhfb3Bfb3Jf aTY0LCB7ICJyIiwgInJaIiwgInJKIiB9IH0sCisgICAgeyBJTkRFWF9vcF94b3JfaTMyLCB7 ICJyIiwgInJaIiwgInJKIiB9IH0sCisgICAgeyBJTkRFWF9vcF94b3JfaTY0LCB7ICJyIiwg InJaIiwgInJKIiB9IH0sCiAKKyAgICB7IElOREVYX29wX211bF9pMzIsIHsgInIiLCAicloi LCAicloiIH0gfSwKICAgICB7IElOREVYX29wX211bF9pNjQsIHsgInIiLCAicloiLCAicloi IH0gfSwKIAorICAgIHsgSU5ERVhfb3Bfc2FyX2kzMiwgeyAiciIsICJyWiIsICJyaSIgfSB9 LAogICAgIHsgSU5ERVhfb3Bfc2FyX2k2NCwgeyAiciIsICJyWiIsICJyaSIgfSB9LAorICAg IHsgSU5ERVhfb3Bfc2hsX2kzMiwgeyAiciIsICJyWiIsICJyaSIgfSB9LAogICAgIHsgSU5E RVhfb3Bfc2hsX2k2NCwgeyAiciIsICJyWiIsICJyaSIgfSB9LAorICAgIHsgSU5ERVhfb3Bf c2hyX2kzMiwgeyAiciIsICJyWiIsICJyaSIgfSB9LAogICAgIHsgSU5ERVhfb3Bfc2hyX2k2 NCwgeyAiciIsICJyWiIsICJyaSIgfSB9LAorICAgIHsgSU5ERVhfb3Bfcm90bF9pMzIsIHsg InIiLCAicloiLCAicmkiIH0gfSwKICAgICB7IElOREVYX29wX3JvdGxfaTY0LCB7ICJyIiwg InJaIiwgInJpIiB9IH0sCisgICAgeyBJTkRFWF9vcF9yb3RyX2kzMiwgeyAiciIsICJyWiIs ICJyaSIgfSB9LAogICAgIHsgSU5ERVhfb3Bfcm90cl9pNjQsIHsgInIiLCAicloiLCAicmki IH0gfSwKIAorICAgIHsgSU5ERVhfb3BfZXh0OHNfaTMyLCB7ICJyIiwgInJaIn0gfSwKKyAg ICB7IElOREVYX29wX2V4dDh1X2kzMiwgeyAiciIsICJyWiJ9IH0sCisgICAgeyBJTkRFWF9v cF9leHQxNnNfaTMyLCB7ICJyIiwgInJaIn0gfSwKKyAgICB7IElOREVYX29wX2V4dDE2dV9p MzIsIHsgInIiLCAicloifSB9LAorCiAgICAgeyBJTkRFWF9vcF9leHQ4c19pNjQsIHsgInIi LCAicloifSB9LAogICAgIHsgSU5ERVhfb3BfZXh0OHVfaTY0LCB7ICJyIiwgInJaIn0gfSwK ICAgICB7IElOREVYX29wX2V4dDE2c19pNjQsIHsgInIiLCAicloifSB9LApAQCAtMjI0Niwx MSArMjM0MywxNiBAQCBzdGF0aWMgY29uc3QgVENHVGFyZ2V0T3BEZWYgaWE2NF9vcF9kZWZz W10gPSB7CiAgICAgeyBJTkRFWF9vcF9leHQzMnNfaTY0LCB7ICJyIiwgInJaIn0gfSwKICAg ICB7IElOREVYX29wX2V4dDMydV9pNjQsIHsgInIiLCAicloifSB9LAogCisgICAgeyBJTkRF WF9vcF9ic3dhcDE2X2kzMiwgeyAiciIsICJyWiIgfSB9LAorICAgIHsgSU5ERVhfb3BfYnN3 YXAzMl9pMzIsIHsgInIiLCAicloiIH0gfSwKKwogICAgIHsgSU5ERVhfb3BfYnN3YXAxNl9p NjQsIHsgInIiLCAicloiIH0gfSwKICAgICB7IElOREVYX29wX2Jzd2FwMzJfaTY0LCB7ICJy IiwgInJaIiB9IH0sCiAgICAgeyBJTkRFWF9vcF9ic3dhcDY0X2k2NCwgeyAiciIsICJyWiIg fSB9LAogCisgICAgeyBJTkRFWF9vcF9icmNvbmRfaTMyLCB7ICJySSIsICJySSIgfSB9LAog ICAgIHsgSU5ERVhfb3BfYnJjb25kX2k2NCwgeyAickkiLCAickkiIH0gfSwKKyAgICB7IElO REVYX29wX3NldGNvbmRfaTMyLCB7ICJyIiwgInJaIiwgInJaIiB9IH0sCiAgICAgeyBJTkRF WF9vcF9zZXRjb25kX2k2NCwgeyAiciIsICJyWiIsICJyWiIgfSB9LAogCiAgICAgeyBJTkRF WF9vcF9xZW11X2xkOHUsIHsgInIiLCAiciIgfSB9LApAQCAtMjI4NCw0NiArMjM4NiwzMSBA QCBzdGF0aWMgdm9pZCB0Y2dfdGFyZ2V0X3FlbXVfcHJvbG9ndWUoVENHQ29udGV4dCAqcykK ICAgICAqKHVpbnQ2NF90ICopKHMtPmNvZGVfcHRyKSA9ICh1aW50NjRfdClzLT5jb2RlX3B0 ciArIDE2OyAvKiBlbnRyeSBwb2ludCAqLwogICAgIHMtPmNvZGVfcHRyICs9IDE2OyAvKiBz a2lwIEdQICovCiAKKyAgICBzLT5leHRyYSA9IHFlbXVfbWFsbG9jeihzaXplb2YoVENHQ29u dGV4dEV4dHJhKSk7CisKICAgICAvKiBwcm9sb2d1ZSAqLwotICAgIHRjZ19vdXRfYnVuZGxl KHMsIG1JSSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX20zNChUQ0dfUkVHX1AwLCBP UENfQUxMT0NfTTM0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDR19SRUdf UjMzLCAzMiwgMjQsIDApLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfaTIxKFRDR19S RUdfUDAsIE9QQ19NT1ZfSTIxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRD R19SRUdfQjYsIFRDR19SRUdfUjMyLCAwKSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3Bj X2kyMihUQ0dfUkVHX1AwLCBPUENfTU9WX0kyMiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUQ0dfUkVHX1IzMiwgVENHX1JFR19CMCkpOwotCi0gICAgLyogPz8/IElmIEdV RVNUX0JBU0UgPCAweDIwMDAwMCwgd2UgY291bGQgbG9hZCB0aGUgcmVnaXN0ZXIgdmlhCi0g ICAgICAgYW4gQURETCBpbiB0aGUgTSBzbG90IG9mIHRoZSBuZXh0IGJ1bmRsZS4gICovCisg ICAgdGNnX29wY19tMzQocywgVENHX1JFR19QMCwgT1BDX0FMTE9DX00zNCwgVENHX1JFR19S MzMsIDMyLCAyNCwgMCk7CisgICAgdGNnX29wY19pMjEocywgVENHX1JFR19QMCwgT1BDX01P Vl9JMjEsIFRDR19SRUdfQjYsIFRDR19SRUdfUjMyLCAwKTsKKyAgICB0Y2dfb3BjX2kyMihz LCBUQ0dfUkVHX1AwLCBPUENfTU9WX0kyMiwgVENHX1JFR19SMzIsIFRDR19SRUdfQjApOwor CiAgICAgaWYgKEdVRVNUX0JBU0UgIT0gMCkgewotICAgICAgICB0Y2dfb3V0X2J1bmRsZShz LCBtbHgsCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAs IE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgdGNnX29wY19sMiAo R1VFU1RfQkFTRSksCi0gICAgICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfeDIgKFRDR19S RUdfUDAsIE9QQ19NT1ZMX1gyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUQ0dfR1VFU1RfQkFTRV9SRUcsIEdVRVNUX0JBU0UpKTsKKyAgICAgICAgdGNnX291dF9t b3ZpKHMsIFRDR19UWVBFX1BUUiwgVENHX0dVRVNUX0JBU0VfUkVHLCBHVUVTVF9CQVNFKTsK ICAgICAgICAgdGNnX3JlZ3NldF9zZXRfcmVnKHMtPnJlc2VydmVkX3JlZ3MsIFRDR19HVUVT VF9CQVNFX1JFRyk7CiAgICAgfQogCi0gICAgdGNnX291dF9idW5kbGUocywgbWlCLAotICAg ICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4LCAw KSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2E0IChUQ0dfUkVHX1AwLCBPUENfQURE U19BNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX1IxMiwgLWZy YW1lX3NpemUsIFRDR19SRUdfUjEyKSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2I0 IChUQ0dfUkVHX1AwLCBPUENfQlJfU1BUS19NQU5ZX0I0LCBUQ0dfUkVHX0I2KSk7CisgICAg dGNnX291dF9hZGRpKHMsIFRDR19SRUdfUjEyLCAtZnJhbWVfc2l6ZSk7CisgICAgdGNnX29w Y19iNChzLCBUQ0dfUkVHX1AwLCBPUENfQlJfU1BUS19NQU5ZX0I0LCBUQ0dfUkVHX0I2KTsK KyAgICB0Y2dfZmx1c2hfcXVldWUocyk7CiAKICAgICAvKiBlcGlsb2d1ZSAqLwogICAgIHRi X3JldF9hZGRyID0gcy0+Y29kZV9wdHI7Ci0gICAgdGNnX291dF9idW5kbGUocywgbWlJLAot ICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAsIE9QQ19OT1BfTTQ4 LCAwKSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kyMShUQ0dfUkVHX1AwLCBPUENf TU9WX0kyMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dfUkVHX0IwLCBU Q0dfUkVHX1IzMiwgMCksCi0gICAgICAgICAgICAgICAgICAgdGNnX29wY19hNCAoVENHX1JF R19QMCwgT1BDX0FERFNfQTQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENH X1JFR19SMTIsIGZyYW1lX3NpemUsIFRDR19SRUdfUjEyKSk7Ci0gICAgdGNnX291dF9idW5k bGUocywgbWlCLAotICAgICAgICAgICAgICAgICAgIHRjZ19vcGNfbTQ4KFRDR19SRUdfUDAs IE9QQ19OT1BfTTQ4LCAwKSwKLSAgICAgICAgICAgICAgICAgICB0Y2dfb3BjX2kyNihUQ0df UkVHX1AwLCBPUENfTU9WX0lfSTI2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFRDR19SRUdfUEZTLCBUQ0dfUkVHX1IzMyksCi0gICAgICAgICAgICAgICAgICAgdGNnX29w Y19iNCAoVENHX1JFR19QMCwgT1BDX0JSX1JFVF9TUFRLX01BTllfQjQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVENHX1JFR19CMCkpOworCisgICAgdGNnX291dF9hZGRp KHMsIFRDR19SRUdfUjEyLCBmcmFtZV9zaXplKTsKKyAgICB0Y2dfb3BjX2kyMShzLCBUQ0df UkVHX1AwLCBPUENfTU9WX0kyMSwgVENHX1JFR19CMCwgVENHX1JFR19SMzIsIDApOworICAg IHRjZ19vcGNfaTI2KHMsIFRDR19SRUdfUDAsIE9QQ19NT1ZfSV9JMjYsIFRDR19SRUdfUEZT LCBUQ0dfUkVHX1IzMyk7CisgICAgdGNnX29wY19iNChzLCBUQ0dfUkVHX1AwLCBPUENfQlJf UkVUX1NQVEtfTUFOWV9CNCwgVENHX1JFR19CMCk7CisKKyAgICB0Y2dfZmx1c2hfcXVldWUo cyk7CiB9CiAKIHN0YXRpYyB2b2lkIHRjZ190YXJnZXRfaW5pdChUQ0dDb250ZXh0ICpzKQpk aWZmIC0tZ2l0IGEvdGNnL2lhNjQvdGNnLXRhcmdldC5oIGIvdGNnL2lhNjQvdGNnLXRhcmdl dC5oCmluZGV4IGU1NmU4OGYuLmFiNWI5NDQgMTAwNjQ0Ci0tLSBhL3RjZy9pYTY0L3RjZy10 YXJnZXQuaAorKysgYi90Y2cvaWE2NC90Y2ctdGFyZ2V0LmgKQEAgLTk2LDcgKzk2LDggQEAg ZW51bSB7CiB9OwogCiAjZGVmaW5lIFRDR19DVF9DT05TVF9aRVJPIDB4MTAwCi0jZGVmaW5l IFRDR19DVF9DT05TVF9TMjIgMHgyMDAKKyNkZWZpbmUgVENHX0NUX0NPTlNUX1MyMiAgMHgy MDAKKyNkZWZpbmUgVENHX0NUX0NPTlNUX1M4ICAgMHg0MDAKIAogLyogdXNlZCBmb3IgZnVu Y3Rpb24gY2FsbCBnZW5lcmF0aW9uICovCiAjZGVmaW5lIFRDR19SRUdfQ0FMTF9TVEFDSyBU Q0dfUkVHX1IxMgpAQCAtMTExLDggKzExMiw2IEBAIGVudW0gewogI2RlZmluZSBUQ0dfVEFS R0VUX0hBU19ic3dhcDMyX2kzMgogI2RlZmluZSBUQ0dfVEFSR0VUX0hBU19ic3dhcDMyX2k2 NAogI2RlZmluZSBUQ0dfVEFSR0VUX0hBU19ic3dhcDY0X2k2NAotI2RlZmluZSBUQ0dfVEFS R0VUX0hBU19lcXZfaTMyCi0jZGVmaW5lIFRDR19UQVJHRVRfSEFTX2Vxdl9pNjQKICNkZWZp bmUgVENHX1RBUkdFVF9IQVNfZXh0OHNfaTMyCiAjZGVmaW5lIFRDR19UQVJHRVRfSEFTX2V4 dDE2c19pMzIKICNkZWZpbmUgVENHX1RBUkdFVF9IQVNfZXh0OHNfaTY0CkBAIC0xMjMsMTIg KzEyMiw2IEBAIGVudW0gewogI2RlZmluZSBUQ0dfVEFSR0VUX0hBU19leHQ4dV9pNjQKICNk ZWZpbmUgVENHX1RBUkdFVF9IQVNfZXh0MTZ1X2k2NAogI2RlZmluZSBUQ0dfVEFSR0VUX0hB U19leHQzMnVfaTY0Ci0jZGVmaW5lIFRDR19UQVJHRVRfSEFTX25hbmRfaTMyCi0jZGVmaW5l IFRDR19UQVJHRVRfSEFTX25hbmRfaTY0Ci0jZGVmaW5lIFRDR19UQVJHRVRfSEFTX25vcl9p MzIKLSNkZWZpbmUgVENHX1RBUkdFVF9IQVNfbm9yX2k2NAotI2RlZmluZSBUQ0dfVEFSR0VU X0hBU19vcmNfaTMyCi0jZGVmaW5lIFRDR19UQVJHRVRfSEFTX29yY19pNjQKICNkZWZpbmUg VENHX1RBUkdFVF9IQVNfcm90X2kzMgogI2RlZmluZSBUQ0dfVEFSR0VUX0hBU19yb3RfaTY0 CiAKQEAgLTEzOCwxMiArMTMxLDI2IEBAIGVudW0gewogI3VuZGVmIFRDR19UQVJHRVRfSEFT X25vdF9pMzIgICAvKiB4b3IgcjEsIC0xLCByMyAqLwogI3VuZGVmIFRDR19UQVJHRVRfSEFT X25vdF9pNjQgICAvKiB4b3IgcjEsIC0xLCByMyAqLwogCisvKiBvcHRpb25hbCBpbnN0cnVj dGlvbnMgbm90IGltcGxlbWVudGVkICovCisjdW5kZWYgVENHX1RBUkdFVF9IQVNfZXF2X2kz MgorI3VuZGVmIFRDR19UQVJHRVRfSEFTX2Vxdl9pNjQKKyN1bmRlZiBUQ0dfVEFSR0VUX0hB U19uYW5kX2kzMgorI3VuZGVmIFRDR19UQVJHRVRfSEFTX25hbmRfaTY0CisjdW5kZWYgVENH X1RBUkdFVF9IQVNfbm9yX2kzMgorI3VuZGVmIFRDR19UQVJHRVRfSEFTX25vcl9pNjQKKyN1 bmRlZiBUQ0dfVEFSR0VUX0hBU19vcmNfaTMyCisjdW5kZWYgVENHX1RBUkdFVF9IQVNfb3Jj X2k2NAorCiAvKiBOb3RlOiBtdXN0IGJlIHN5bmNlZCB3aXRoIGR5bmdlbi1leGVjLmggKi8K ICNkZWZpbmUgVENHX0FSRUcwIFRDR19SRUdfUjcKIAogLyogR3Vlc3QgYmFzZSBpcyBzdXBw b3J0ZWQgKi8KICNkZWZpbmUgVENHX1RBUkdFVF9IQVNfR1VFU1RfQkFTRQogCisvKiBXZSBu ZWVkIHRvIHN0b3JlIGV4dHJhIGluZm8gaW4gdGhlIHRjZyBzdHJ1Y3QsIGFuZCBuZWVkIHRv IGhhdmUgdGhlCisgICBpbnN0cnVjdGlvbiBxdWV1ZSBmbHVzaGVkLiAgKi8KKyNkZWZpbmUg VENHX1RBUkdFVF9IQVNfRVhUUkFJTkZPCisKIHN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF9p Y2FjaGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzdG9wKQog ewogICAgIHN0YXJ0ID0gc3RhcnQgJiB+KDMyVUwgLSAxVUwpOwpkaWZmIC0tZ2l0IGEvdGNn L3RjZy5jIGIvdGNnL3RjZy5jCmluZGV4IDVkZDZhMmMuLjJhOGE5YTEgMTAwNjQ0Ci0tLSBh L3RjZy90Y2cuYworKysgYi90Y2cvdGNnLmMKQEAgLTIwNjAsNiArMjA2MCw5IEBAIHN0YXRp YyBpbmxpbmUgaW50IHRjZ19nZW5fY29kZV9jb21tb24oVENHQ29udGV4dCAqcywgdWludDhf dCAqZ2VuX2NvZGVfYnVmLAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSU5E RVhfb3Bfc2V0X2xhYmVsOgogICAgICAgICAgICAgdGNnX3JlZ19hbGxvY19iYl9lbmQocywg cy0+cmVzZXJ2ZWRfcmVncyk7CisjaWZkZWYgVENHX1RBUkdFVF9IQVNfRVhUUkFJTkZPCisg ICAgICAgICAgICB0Y2dfZmx1c2hfcXVldWUocyk7CisjZW5kaWYKICAgICAgICAgICAgIHRj Z19vdXRfbGFiZWwocywgYXJnc1swXSwgKGxvbmcpcy0+Y29kZV9wdHIpOwogICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSU5ERVhfb3BfY2FsbDoKZGlmZiAtLWdpdCBhL3Rj Zy90Y2cuaCBiL3RjZy90Y2cuaAppbmRleCBlMWFmZGUyLi5hYzM3MmYwIDEwMDY0NAotLS0g YS90Y2cvdGNnLmgKKysrIGIvdGNnL3RjZy5oCkBAIC0yNjYsNiArMjY2LDEwIEBAIHR5cGVk ZWYgc3RydWN0IFRDR0hlbHBlckluZm8gewogICAgIGNvbnN0IGNoYXIgKm5hbWU7CiB9IFRD R0hlbHBlckluZm87CiAKKyNpZmRlZiBUQ0dfVEFSR0VUX0hBU19FWFRSQUlORk8KK3R5cGVk ZWYgc3RydWN0IFRDR0NvbnRleHRFeHRyYSBUQ0dDb250ZXh0RXh0cmE7CisjZW5kaWYKKwog dHlwZWRlZiBzdHJ1Y3QgVENHQ29udGV4dCBUQ0dDb250ZXh0OwogCiBzdHJ1Y3QgVENHQ29u dGV4dCB7CkBAIC0zMDYsNiArMzEwLDExIEBAIHN0cnVjdCBUQ0dDb250ZXh0IHsKICAgICBp bnQgYWxsb2NhdGVkX2hlbHBlcnM7CiAgICAgaW50IGhlbHBlcnNfc29ydGVkOwogCisjaWZk ZWYgVENHX1RBUkdFVF9IQVNfRVhUUkFJTkZPCisgICAgLyogRm9yIHRjZy10YXJnZXQuYyB0 byBzdG9yZSBleHRyYSBpbmZvcm1hdGlvbi4gICovCisgICAgVENHQ29udGV4dEV4dHJhICpl eHRyYTsKKyNlbmRpZgorCiAjaWZkZWYgQ09ORklHX1BST0ZJTEVSCiAgICAgLyogcHJvZmls aW5nIGluZm8gKi8KICAgICBpbnQ2NF90IHRiX2NvdW50MTsK --------------010500030805000503090305--