From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 643E745DDF for ; Tue, 11 Apr 2023 18:28:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3023768A8C0; Tue, 11 Apr 2023 21:28:42 +0300 (EEST) Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 90F7368A279 for ; Tue, 11 Apr 2023 21:28:34 +0300 (EEST) Received: by mail-pl1-f170.google.com with SMTP id ik20so8591573plb.3 for ; Tue, 11 Apr 2023 11:28:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681237712; x=1683829712; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=od0HyPwi595sulwDqVBAc23epM5/+s+YtbzkcBgoCQc=; b=j/lYhY7jjY5mAvp4Gxx1ltbf7CcyCI1ofUmnKS2Ld/3CBKNQptJ3vzTANfGmIOmGvJ /UJhjWxOt9I6rZ0sWblu76FG3bOu8HZVqD7HM4GyMgJ0pWYd/xdazray+UwIRGuz5MKi R1P9xUPQ3kkqwDuBZVRLjKzukgurloJwNMJg8GPSWpjKxSHm2oNfUNtx+Ou8GOe6I0k8 y7WFxoeCDV+iEnKPgej8y2mBhENyObWCPaWGLGKipsM1mBw4GlCghcUF8U2ElNtgNKIp u0idbUiwZEEI73rOrLwboKyCjiSindKFDl4CP7bl1ev8X6W4q3oYONURdZeyxyQtg020 N6iA== X-Gm-Message-State: AAQBX9fJcMeLKb8azjkXJvcjYU9N0H3ePu6lg3lIt65K77npj3hczak2 hUSzkcmkkeUA/OTKyJNjRdIelHWPbQI= X-Google-Smtp-Source: AKy350bqbBXw/Bty9Jp4oVGJ8WJ3hN4mwkdfVJ2429wSkip1eG3ppKX3Fyw44ygYzn4zb4j6h449xg== X-Received: by 2002:a17:90b:1809:b0:246:bb61:4a6a with SMTP id lw9-20020a17090b180900b00246bb614a6amr7735163pjb.1.1681237711210; Tue, 11 Apr 2023 11:28:31 -0700 (PDT) Received: from localhost (76-14-89-2.sf-cable.astound.net. [76.14.89.2]) by smtp.gmail.com with ESMTPSA id y7-20020a17090a154700b00246a770310esm124261pja.11.2023.04.11.11.28.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 11:28:30 -0700 (PDT) Received: by localhost (sSMTP sendmail emulation); Tue, 11 Apr 2023 11:28:27 -0700 From: pal@sandflow.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 11 Apr 2023 11:28:21 -0700 Message-Id: <20230411182822.28859-2-pal@sandflow.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230411182822.28859-1-pal@sandflow.com> References: <20230411182822.28859-1-pal@sandflow.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/3] avcodec/jpeg2000dec: add support for HTJ2K block decoding X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: caleb Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: RnJvbTogY2FsZWIgPGV0ZW1lc2ljYWxlYkBnbWFpbC5jb20+CgotLS0KIGxpYmF2Y29kZWMvTWFr ZWZpbGUgICAgICAgIHwgICAgMiArLQogbGliYXZjb2RlYy9qcGVnMjAwMC5oICAgICAgfCAgICA1 ICstCiBsaWJhdmNvZGVjL2pwZWcyMDAwZGVjLmMgICB8ICAgNjcgKy0KIGxpYmF2Y29kZWMvanBl ZzIwMDBodGRlYy5jIHwgMTQ1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGxpYmF2Y29kZWMvanBlZzIwMDBodGRlYy5oIHwgICAzNCArCiA1IGZpbGVzIGNoYW5nZWQsIDE1 NDAgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGli YXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2pw ZWcyMDAwaHRkZWMuaAoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUgYi9saWJhdmNv ZGVjL01ha2VmaWxlCmluZGV4IGFhMTBmYmZjZjguLjA1M2MwNzRmMmYgMTAwNjQ0Ci0tLSBhL2xp YmF2Y29kZWMvTWFrZWZpbGUKKysrIGIvbGliYXZjb2RlYy9NYWtlZmlsZQpAQCAtNDY5LDcgKzQ2 OSw3IEBAIE9CSlMtJChDT05GSUdfSkFDT1NVQl9ERUNPREVSKSAgICAgICAgICs9IGphY29zdWJk ZWMubyBhc3MubwogT0JKUy0kKENPTkZJR19KUEVHMjAwMF9FTkNPREVSKSAgICAgICAgKz0gajJr ZW5jLm8gbXFjZW5jLm8gbXFjLm8ganBlZzIwMDAubyBcCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBqcGVnMjAwMGR3dC5vCiBPQkpTLSQoQ09ORklHX0pQRUcyMDAw X0RFQ09ERVIpICAgICAgICArPSBqcGVnMjAwMGRlYy5vIGpwZWcyMDAwLm8ganBlZzIwMDBkc3Au byBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcGVnMjAwMGR3 dC5vIG1xY2RlYy5vIG1xYy5vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBqcGVnMjAwMGR3dC5vIG1xY2RlYy5vIG1xYy5vIGpwZWcyMDAwaHRkZWMubwogT0JKUy0k KENPTkZJR19KUEVHTFNfREVDT0RFUikgICAgICAgICAgKz0ganBlZ2xzZGVjLm8ganBlZ2xzLm8K IE9CSlMtJChDT05GSUdfSlBFR0xTX0VOQ09ERVIpICAgICAgICAgICs9IGpwZWdsc2VuYy5vIGpw ZWdscy5vCiBPQkpTLSQoQ09ORklHX0pWX0RFQ09ERVIpICAgICAgICAgICAgICArPSBqdmRlYy5v CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2pwZWcyMDAwLmggYi9saWJhdmNvZGVjL2pwZWcyMDAw LmgKaW5kZXggZTVlY2I0Y2JmOS4uZDAwNGMwOGYxMCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9q cGVnMjAwMC5oCisrKyBiL2xpYmF2Y29kZWMvanBlZzIwMDAuaApAQCAtMTExLDcgKzExMSw3IEBA IGVudW0gSnBlZzIwMDBRdWFudHN0eSB7IC8vIHF1YW50aXphdGlvbiBzdHlsZQogI2RlZmluZSBK UEVHMjAwMF9DU1RZX1NPUCAgICAgICAweDAyIC8vIFNPUCBtYXJrZXIgcHJlc2VudAogI2RlZmlu ZSBKUEVHMjAwMF9DU1RZX0VQSCAgICAgICAweDA0IC8vIEVQSCBtYXJrZXIgcHJlc2VudAogI2Rl ZmluZSBKUEVHMjAwMF9DVFNZX0hUSjJLX0YgICAweDQwIC8vIE9ubHkgSFQgY29kZS1ibG9ja3Mg KFJlYy4gSVRVLVQgVC44MTQgfCBJU08vSUVDIDE1NDQ0LTE1KSBhcmUgcHJlc2VudAotI2RlZmlu ZSBKUEVHMjAwMF9DVFNZX0hUSjJLX00gICAweEMwIC8vIEhUIGNvZGUgYmxvY2tzIChSZWMuIElU VS1UIFQuODE0IHwgSVNPL0lFQyAxNTQ0NC0xNSkgY2FuIGJlIHByZXNlbnQKKyNkZWZpbmUgSlBF RzIwMDBfQ1RTWV9IVEoyS19NICAgMHhDMCAvLyBIVCBjb2RlLWJsb2NrcyAoUmVjLiBJVFUtVCBU LjgxNCB8IElTTy9JRUMgMTU0NDQtMTUpIGNhbiBiZSBwcmVzZW50CiAKIC8vIFByb2dyZXNzaW9u IG9yZGVycwogI2RlZmluZSBKUEVHMjAwMF9QR09EX0xSQ1AgICAgICAweDAwICAvLyBMYXllci1y ZXNvbHV0aW9uIGxldmVsLWNvbXBvbmVudC1wb3NpdGlvbiBwcm9ncmVzc2lvbgpAQCAtMTg5LDYg KzE4OSw5IEBAIHR5cGVkZWYgc3RydWN0IEpwZWcyMDAwQ2JsayB7CiAgICAgSnBlZzIwMDBQYXNz ICpwYXNzZXM7CiAgICAgSnBlZzIwMDBMYXllciAqbGF5ZXJzOwogICAgIGludCBjb29yZFsyXVsy XTsgLy8gYm9yZGVyIGNvb3JkaW5hdGVzIHt7eDAsIHgxfSwge3kwLCB5MX19CisgICAgLyogc3Bl Y2lmaWMgdG8gSFQgY29kZS1ibG9ja3MgKi8KKyAgICBpbnQgemJwOworICAgIGludCBwYXNzX2xl bmd0aHNbMl07CiB9IEpwZWcyMDAwQ2JsazsgLy8gY29kZSBibG9jawogCiB0eXBlZGVmIHN0cnVj dCBKcGVnMjAwMFByZWMgewpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9qcGVnMjAwMGRlYy5jIGIv bGliYXZjb2RlYy9qcGVnMjAwMGRlYy5jCmluZGV4IDU5OTRlMjlhZTMuLjlmNzkyMDUxYjAgMTAw NjQ0Ci0tLSBhL2xpYmF2Y29kZWMvanBlZzIwMDBkZWMuYworKysgYi9saWJhdmNvZGVjL2pwZWcy MDAwZGVjLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJqcGVnMjAwMGRzcC5oIgogI2lu Y2x1ZGUgInByb2ZpbGVzLmgiCiAjaW5jbHVkZSAianBlZzIwMDBkZWMuaCIKKyNpbmNsdWRlICJq cGVnMjAwMGh0ZGVjLmgiCiAKICNkZWZpbmUgSlAyX1NJR19UWVBFICAgIDB4NkE1MDIwMjAKICNk ZWZpbmUgSlAyX1NJR19WQUxVRSAgIDB4MEQwQTg3MEEKQEAgLTQzNiwxMiArNDM3LDEzIEBAIHN0 YXRpYyBpbnQgZ2V0X2NveChKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMENvZGlu Z1N0eWxlICpjKQogICAgIGMtPmNibGtfc3R5bGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJnMt PmcpOwogICAgIGlmIChjLT5jYmxrX3N0eWxlICE9IDApIHsgLy8gY2JsayBzdHlsZQogICAgICAg ICBpZiAoYy0+Y2Jsa19zdHlsZSAmIEpQRUcyMDAwX0NUU1lfSFRKMktfTSB8fCBjLT5jYmxrX3N0 eWxlICYgSlBFRzIwMDBfQ1RTWV9IVEoyS19GKSB7Ci0gICAgICAgICAgICBhdl9sb2cocy0+YXZj dHgsIEFWX0xPR19FUlJPUiwgIlN1cHBvcnQgZm9yIEhpZ2ggdGhyb3VnaHB1dCBKUEVHIDIwMDAg aXMgbm90IHlldCBhdmFpbGFibGVcbiIpOwotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfUEFU Q0hXRUxDT01FOworICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LEFWX0xPR19UUkFDRSwiSGln aCBUaHJvdWdocHV0IGpwZWcgMjAwMCBjb2Rlc3RyZWFtLlxuIik7CisgICAgICAgICAgICBzLT5p c19odGoyayA9IDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdl9sb2cocy0+YXZj dHgsIEFWX0xPR19XQVJOSU5HLCAiZXh0cmEgY2JsayBzdHlsZXMgJVhcbiIsIGMtPmNibGtfc3R5 bGUpOworICAgICAgICAgICAgaWYgKGMtPmNibGtfc3R5bGUgJiBKUEVHMjAwMF9DQkxLX0JZUEFT UykKKyAgICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19XQVJOSU5HLCAiU2Vs ZWN0aXZlIGFyaXRobWV0aWMgY29kaW5nIGJ5cGFzc1xuIik7CiAgICAgICAgIH0KLSAgICAgICAg YXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfV0FSTklORywgImV4dHJhIGNibGsgc3R5bGVzICVYXG4i LCBjLT5jYmxrX3N0eWxlKTsKLSAgICAgICAgaWYgKGMtPmNibGtfc3R5bGUgJiBKUEVHMjAwMF9D QkxLX0JZUEFTUykKLSAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX1dBUk5JTkcs ICJTZWxlY3RpdmUgYXJpdGhtZXRpYyBjb2RpbmcgYnlwYXNzXG4iKTsKICAgICB9CiAgICAgYy0+ dHJhbnNmb3JtID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZzLT5nKTsgLy8gRFdUIHRyYW5zZm9y bWF0aW9uIHR5cGUKICAgICAvKiBzZXQgaW50ZWdlciA5LzcgRFdUIGluIGNhc2Ugb2YgQklURVhB Q1QgZmxhZyAqLwpAQCAtMTA2NiwxMyArMTA2OCwxNSBAQCBzdGF0aWMgaW50IGpwZWcyMDAwX2Rl Y29kZV9wYWNrZXQoSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywgSnBlZzIwMDBUaWxlICp0aWxl LAogICAgICAgICAgICAgICAgIHJldHVybiBpbmNsOwogCiAgICAgICAgICAgICBpZiAoIWNibGst Pm5wYXNzZXMpIHsKLSAgICAgICAgICAgICAgICBpbnQgdiA9IGV4cG5bYmFuZG5vXSArIG51bWdi aXRzIC0gMSAtCi0gICAgICAgICAgICAgICAgICAgICAgICB0YWdfdHJlZV9kZWNvZGUocywgcHJl Yy0+emVyb2JpdHMgKyBjYmxrbm8sIDEwMCk7CisgICAgICAgICAgICAgICAgaW50IHpicCA9IHRh Z190cmVlX2RlY29kZShzLCBwcmVjLT56ZXJvYml0cyArIGNibGtubywgMTAwKTsKKyAgICAgICAg ICAgICAgICBpbnQgdiA9IGV4cG5bYmFuZG5vXSArIG51bWdiaXRzIC0gMSAtIHpicDsKKwogICAg ICAgICAgICAgICAgIGlmICh2IDwgMCB8fCB2ID4gMzApIHsKICAgICAgICAgICAgICAgICAgICAg YXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAibm9uemVyb2JpdHMgJWQgaW52YWxpZCBvciB1bnN1cHBvcnRlZFxuIiwgdik7CiAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwogICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICBjYmxrLT56YnAgPSB6YnA7CiAgICAgICAgICAgICAgICAgY2Js ay0+bm9uemVyb2JpdHMgPSB2OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKChuZXdw YXNzZXMgPSBnZXRucGFzc2VzKHMpKSA8IDApCkBAIC0xMTEzLDggKzExMTcsMjMgQEAgc3RhdGlj IGludCBqcGVnMjAwMF9kZWNvZGVfcGFja2V0KEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIEpw ZWcyMDAwVGlsZSAqdGlsZSwKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg IH0KIAotICAgICAgICAgICAgICAgIGlmICgocmV0ID0gZ2V0X2JpdHMocywgYXZfbG9nMihuZXdw YXNzZXMxKSArIGNibGstPmxibG9jaykpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKKyAgICAgICAgICAgICAgICBpZiAobmV3cGFzc2VzID4gMSAmJiBzLT5pc19odGoyaykg eworICAgICAgICAgICAgICAgICAgICAvLyBSZXRyaWV2ZSBwYXNzIGxlbmd0aHMgZm9yIGVhY2gg cGFzcworICAgICAgICAgICAgICAgICAgICBpbnQgaHJlZl9wYXNzZXMgPSAgKGNibGstPm5wYXNz ZXMgKyBuZXdwYXNzZXMgLSAxKSAlIDM7CisgICAgICAgICAgICAgICAgICAgIGludCBlYiA9IGF2 X2xvZzIobmV3cGFzc2VzIC0gaHJlZl9wYXNzZXMpOworICAgICAgICAgICAgICAgICAgICBpbnQg ZXh0cmFfYml0ID0gbmV3cGFzc2VzID4gMiA/IDEgOiAwOworICAgICAgICAgICAgICAgICAgICBp ZiAoKHJldCA9IGdldF9iaXRzKHMsIGxsZW4gKyBlYiArIDMpKSA8IDApCisgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgICAgICAgICBjYmxrLT5wYXNzX2xl bmd0aHNbMF0gPSByZXQ7CisgICAgICAgICAgICAgICAgICAgIGlmICgocmV0ID0gZ2V0X2JpdHMo cywgbGxlbiArIDMgKyBleHRyYV9iaXQpKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0OworICAgICAgICAgICAgICAgICAgICBjYmxrLT5wYXNzX2xlbmd0aHNbMV0gPSBy ZXQ7CisgICAgICAgICAgICAgICAgICAgIHJldCA9IGNibGstPnBhc3NfbGVuZ3Roc1swXSArIGNi bGstPnBhc3NfbGVuZ3Roc1sxXTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICAgICAgICBpZiAoKHJldCA9IGdldF9iaXRzKHMsIGF2X2xvZzIobmV3cGFzc2VzMSkgKyBj YmxrLT5sYmxvY2spKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owor ICAgICAgICAgICAgICAgICAgICBjYmxrLT5wYXNzX2xlbmd0aHNbMF0gPSByZXQ7CisgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChyZXQgPiBjYmxrLT5kYXRhX2FsbG9jYXRl ZCkgewogICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmV3X3NpemUgPSBGRk1BWCgyKmNibGst PmRhdGFfYWxsb2NhdGVkLCByZXQpOwogICAgICAgICAgICAgICAgICAgICB2b2lkICpuZXcgPSBh dl9yZWFsbG9jKGNibGstPmRhdGEsIG5ld19zaXplKTsKQEAgLTE4NjMsOSArMTg4MiwxMiBAQCBz dGF0aWMgaW5saW5lIHZvaWQgdGlsZV9jb2RlYmxvY2tzKGNvbnN0IEpwZWcyMDAwRGVjb2RlckNv bnRleHQgKnMsIEpwZWcyMDAwVGlsZQogCiAgICAgLyogTG9vcCBvbiB0aWxlIGNvbXBvbmVudHMg Ki8KICAgICBmb3IgKGNvbXBubyA9IDA7IGNvbXBubyA8IHMtPm5jb21wb25lbnRzOyBjb21wbm8r KykgewotICAgICAgICBKcGVnMjAwMENvbXBvbmVudCAqY29tcCAgICAgPSB0aWxlLT5jb21wICsg Y29tcG5vOwotICAgICAgICBKcGVnMjAwMENvZGluZ1N0eWxlICpjb2RzdHkgPSB0aWxlLT5jb2Rz dHkgKyBjb21wbm87CisgICAgICAgIEpwZWcyMDAwQ29tcG9uZW50ICpjb21wICAgICAgPSB0aWxl LT5jb21wICAgKyBjb21wbm87CisgICAgICAgIEpwZWcyMDAwQ29kaW5nU3R5bGUgKmNvZHN0eSAg PSB0aWxlLT5jb2RzdHkgKyBjb21wbm87CisgICAgICAgIEpwZWcyMDAwUXVhbnRTdHlsZSAqcXVh bnRzdHkgPSB0aWxlLT5xbnRzdHkgKyBjb21wbm87CisKICAgICAgICAgaW50IGNvZGVkID0gMDsK KyAgICAgICAgaW50IHN1YmJhbmRubyA9IDA7CiAKICAgICAgICAgdDEuc3RyaWRlID0gKDE8PGNv ZHN0eS0+bG9nMl9jYmxrX3dpZHRoKSArIDI7CiAKQEAgLTE4NzMsNyArMTg5NSw3IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCB0aWxlX2NvZGVibG9ja3MoY29uc3QgSnBlZzIwMDBEZWNvZGVyQ29udGV4 dCAqcywgSnBlZzIwMDBUaWxlCiAgICAgICAgIGZvciAocmVzbGV2ZWxubyA9IDA7IHJlc2xldmVs bm8gPCBjb2RzdHktPm5yZXNsZXZlbHMyZGVjb2RlOyByZXNsZXZlbG5vKyspIHsKICAgICAgICAg ICAgIEpwZWcyMDAwUmVzTGV2ZWwgKnJsZXZlbCA9IGNvbXAtPnJlc2xldmVsICsgcmVzbGV2ZWxu bzsKICAgICAgICAgICAgIC8qIExvb3Agb24gYmFuZHMgKi8KLSAgICAgICAgICAgIGZvciAoYmFu ZG5vID0gMDsgYmFuZG5vIDwgcmxldmVsLT5uYmFuZHM7IGJhbmRubysrKSB7CisgICAgICAgICAg ICBmb3IgKGJhbmRubyA9IDA7IGJhbmRubyA8IHJsZXZlbC0+bmJhbmRzOyBiYW5kbm8rKywgc3Vi YmFuZG5vKyspIHsKICAgICAgICAgICAgICAgICBpbnQgbmJfcHJlY2luY3RzLCBwcmVjbm87CiAg ICAgICAgICAgICAgICAgSnBlZzIwMDBCYW5kICpiYW5kID0gcmxldmVsLT5iYW5kICsgYmFuZG5v OwogICAgICAgICAgICAgICAgIGludCBjYmxrbm8gPSAwLCBiYW5kcG9zOwpAQCAtMTg5MywxMiAr MTkxNSwyMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGlsZV9jb2RlYmxvY2tzKGNvbnN0IEpwZWcy MDAwRGVjb2RlckNvbnRleHQgKnMsIEpwZWcyMDAwVGlsZQogICAgICAgICAgICAgICAgICAgICBm b3IgKGNibGtubyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgY2Jsa25vIDwgcHJlYy0+ bmJfY29kZWJsb2Nrc193aWR0aCAqIHByZWMtPm5iX2NvZGVibG9ja3NfaGVpZ2h0OwogICAgICAg ICAgICAgICAgICAgICAgICAgIGNibGtubysrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp bnQgeCwgeTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCB5LCByZXQ7CisgICAgICAg ICAgICAgICAgICAgICAgICAvKiBTZWUgUmVjLiBJVFUtVCBULjgwMCwgRXF1YXRpb24gRS0yICov CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWFncCA9IHF1YW50c3R5LT5leHBuW3N1YmJh bmRub10gKyBxdWFudHN0eS0+bmd1YXJkYml0cyAtIDE7CisKICAgICAgICAgICAgICAgICAgICAg ICAgIEpwZWcyMDAwQ2JsayAqY2JsayA9IHByZWMtPmNibGsgKyBjYmxrbm87Ci0gICAgICAgICAg ICAgICAgICAgICAgICBpbnQgcmV0ID0gZGVjb2RlX2NibGsocywgY29kc3R5LCAmdDEsIGNibGss Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmxrLT5jb29yZFswXVsxXSAt IGNibGstPmNvb3JkWzBdWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2Jsay0+Y29vcmRbMV1bMV0gLSBjYmxrLT5jb29yZFsxXVswXSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJhbmRwb3MsIGNvbXAtPnJvaV9zaGlmdCk7CisKKyAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChjb2RzdHktPmNibGtfc3R5bGUgJiBKUEVHMjAwMF9DVFNZX0hU SjJLX0YpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZmZfanBlZzIwMDBfZGVj b2RlX2h0ajJrKHMsIGNvZHN0eSwgJnQxLCBjYmxrLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmxrLT5jb29yZFswXVsxXSAtIGNi bGstPmNvb3JkWzBdWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYmxrLT5jb29yZFsxXVsxXSAtIGNibGstPmNvb3JkWzFdWzBd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtYWdwLCBjb21wLT5yb2lfc2hpZnQpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGRlY29kZV9jYmxrKHMsIGNvZHN0 eSwgJnQxLCBjYmxrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNibGstPmNvb3JkWzBdWzFdIC0gY2Jsay0+Y29vcmRbMF1bMF0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Jsay0+Y29vcmRbMV1bMV0gLSBjYmxr LT5jb29yZFsxXVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiYW5kcG9zLCBjb21wLT5yb2lfc2hpZnQpOworCiAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAocmV0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVkID0gMTsKICAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvanBlZzIwMDBo dGRlYy5jIGIvbGliYXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uNTFjZDk2ZTBmMQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29k ZWMvanBlZzIwMDBodGRlYy5jCkBAIC0wLDAgKzEsMTQ1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo YykgMjAyMiBDYWxlYiBFdGVtZXNpIDxldGVtZXNpY2FsZWJAZ21haWwuY29tPgorICoKKyAqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp b24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu c2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK KyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv c3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisvKgorICogQ29weXJpZ2h0IDIwMTkgLSAy MDIxLCBPc2FtdSBXYXRhbmFiZQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCisgKiBh cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlv bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAzLiBOZWl0aGVyIHRoZSBu YW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1 dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl cml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKyAqICAgIHNwZWNpZmljIHByaW9yIHdy aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIOKAnEFTIElT4oCdIEFORAorICog QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBM SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5j bHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvY29tbW9u LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCisjaW5jbHVkZSAianBlZzIwMDBo dGRlYy5oIgorI2luY2x1ZGUgImpwZWcyMDAwLmgiCisjaW5jbHVkZSAianBlZzIwMDBkZWMuaCIK KworI2RlZmluZSBKMktfUTEgMAorI2RlZmluZSBKMktfUTIgMQorCisjZGVmaW5lIEhUX1NISUZU X1NJR01BIDAKKyNkZWZpbmUgSFRfU0hJRlRfU0NBTiA0CisjZGVmaW5lIEhUX1NISUZUX1JFRiAz CisjZGVmaW5lIEhUX1NISUZUX1JFRl9JTkQgMgorCisvKiBTZWUgUmVjLiBJVFUtVCBULjgwMCwg VGFibGUgMiAqLworY29uc3Qgc3RhdGljIHVpbnQ4X3QgbWVsX2VbMTNdID0geyAwLCAwLCAwLCAx LCAxLCAxLCAyLCAyLCAyLCAzLCAzLCA0LCA1IH07CisKK3N0YXRpYyBjb25zdCB1aW50MTZfdCBk ZWNfY3h0X3ZsY190YWJsZTFbMTAyNF07CitzdGF0aWMgY29uc3QgdWludDE2X3QgZGVjX2N4dF92 bGNfdGFibGUwWzEwMjRdOworCit0eXBlZGVmIHN0cnVjdCBTdGF0ZVZhcnMgeworICAgIGludDMy X3QgcG9zOworICAgIHVpbnQzMl90IGJpdHM7CisgICAgdWludDMyX3QgdG1wOworICAgIHVpbnQz Ml90IGxhc3Q7CisgICAgdWludDhfdCBiaXRzX2xlZnQ7CisgICAgdWludDY0X3QgYml0X2J1ZjsK K30gU3RhdGVWYXJzOworCit0eXBlZGVmIHN0cnVjdCBNZWxEZWNvZGVyU3RhdGUgeworICAgIHVp bnQ4X3QgazsKKyAgICB1aW50OF90IHJ1bjsKKyAgICB1aW50OF90IG9uZTsKK30gTWVsRGVjb2Rl clN0YXRlOworCisvKioKKyAqICBHaXZlbiBhIHByZWNvbXB1dGVkIGMsIGNoZWNrcyB3aGV0aGVy IG4gJSBkID09IDAuIGMgaXMgcHJlY29tcHV0ZWQgZnJvbSBkCisgKiAgdXNpbmcgcHJlY29tcHV0 ZV9jKCkuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRpYyB1aW50MzJfdCBpc19kaXZpc2li bGUodWludDMyX3QgbiwgdWludDY0X3QgYykKK3sKKyAgICByZXR1cm4gbiAqIGMgPD0gYyAtIDE7 Cit9CisKKy8qKgorICogIFByZWNvbXB1dGUgdGhlIG51bWJlciBjIHVzZWQgYnkgaXNfZGl2aXNp YmxlKCkuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRpYyB1aW50NjRfdCBwcmVjb21wdXRl X2ModWludDMyX3QgZCkKK3sKKyAgICByZXR1cm4gMSArICgweGZmZmZmZmZmZmZmZmZmZmZ1bGwg LyBkKTsKK30KKworc3RhdGljIHZvaWQganBlZzIwMDBfaW5pdF96ZXJvKFN0YXRlVmFycyAqcykK K3sKKyAgICBzLT5iaXRzX2xlZnQgPSAwOworICAgIHMtPmJpdF9idWYgICA9IDA7CisgICAgcy0+ dG1wICAgICAgID0gMDsKKyAgICBzLT5iaXRzICAgICAgPSAwOworICAgIHMtPnBvcyAgICAgICA9 IDA7CisgICAgcy0+bGFzdCAgICAgID0gMDsKK30KKworc3RhdGljIHZvaWQganBlZzIwMDBfaW5p dF9tZWwoU3RhdGVWYXJzICpzLCB1aW50MzJfdCBQY3VwKQoreworICAgIGpwZWcyMDAwX2luaXRf emVybyhzKTsKKyAgICBzLT5wb3MgPSBQY3VwOworfQorCitzdGF0aWMgdm9pZCBqcGVnMjAwMF9p bml0X21hZ19yZWYoU3RhdGVWYXJzICpzLCB1aW50MzJfdCBMcmVmKQoreworICAgIHMtPnBvcyAg ICAgICA9IExyZWYgLSAyOworICAgIHMtPmJpdHMgICAgICA9IDA7CisgICAgcy0+bGFzdCAgICAg ID0gMHhGRjsKKyAgICBzLT50bXAgICAgICAgPSAwOworICAgIHMtPmJpdHNfbGVmdCA9IDA7Cisg ICAgcy0+Yml0X2J1ZiAgID0gMDsKK30KKworc3RhdGljIHZvaWQganBlZzIwMDBfaW5pdF9tZWxf ZGVjb2RlcihNZWxEZWNvZGVyU3RhdGUgKm1lbF9zdGF0ZSkKK3sKKyAgICBtZWxfc3RhdGUtPmsg ICA9IDA7CisgICAgbWVsX3N0YXRlLT5ydW4gPSAwOworICAgIG1lbF9zdGF0ZS0+b25lID0gMDsK K30KKworLyoqCisgKiBSZWZpbGwgdGhlIGJ1ZmZlciBiYWNrd2FyZHMgaW4gbGl0dGxlIGVuZGlh biB3aGlsZSBza2lwcGluZyBvdmVyIHN0dWZmaW5nCisgKiBiaXRzLiBTdHVmZmluZyBiaXRzIGFy ZSB0aG9zZSB0aGF0IGFwcGVhciBpbiB0aGUgcG9zaXRpb24gb2YgYW55IGJ5dGUgd2hvc2UKKyAq IExTQnMgYXJlIGFsbCAxJ3MgaWYgdGhlIGxhc3QgY29uc3VtZWQgYnl0ZSB3YXMgbGFyZ2VyIHRo YW4gMHg4Ri4KKyAqLworc3RhdGljIGludCBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3YXJk cyhTdGF0ZVZhcnMgKmJ1ZmZlciwgY29uc3QgdWludDhfdCAqYXJyYXkpCit7CisgICAgdWludDY0 X3QgdG1wID0gMDsKKyAgICBpbnQzMl90IHBvc2l0aW9uID0gYnVmZmVyLT5wb3M7CisgICAgdWlu dDMyX3QgbmV3X2JpdHMgPSAzMjsKKworICAgIGlmIChidWZmZXItPmJpdHNfbGVmdCA+PSAzMikK KyAgICAgICAgcmV0dXJuIDA7IC8vIGVub3VnaCBkYXRhLCBubyBuZWVkIHRvIHB1bGwgaW4gbW9y ZSBiaXRzCisKKyAgICAvKioKKyAgICAgKiBXZSBhcmUgcmVhZGluZyBieXRlcyBmcm9tIGVuZCB0 byBzdGFydCBhbmQgbmVlZCB0byBoYW5kbGUgYmVpbmcgY2xvc2UgdG8KKyAgICAgKiB0aGUgZW5k LiBTdWJ0cmFjdGluZyBieSA0IG1lYW5zIHdlIHdpbGwgcmVhZCBzb21lIG9mIHRoZSBieXRlcyBv ZiB0aGUgTUVMCisgICAgICogYnl0ZSBzdHJlYW0gc2luY2UgdGhlIE1FTCBieXRlIHN0cmVhbSBl bmRzIGF0IHRoZSBzdGFydCBvZiB0aGUgVkxDIGJ5dGUKKyAgICAgKiBzdHJlYW0uIFRoaXMgaXMg b2theSBhcyB0aGV5IGFyZSBtYXNrZWQgYXdheSBzaW5jZSB3ZSBjaGVjayBmb3IgY2FzZXMKKyAg ICAgKiB3aGVyZSB0aGF0IG9jY3VycyAod2hlbiB0aGUgcG9zaXRpb24gaXMgbGVzcyB0aGFuIDQp LgorICAgICAqLworICAgIHBvc2l0aW9uIC09IDQ7CisKKyAgICB0bXAgPSBBVl9SQjMyKCZhcnJh eVtwb3NpdGlvbiArIDFdKTsKKworICAgIGlmIChidWZmZXItPnBvcyA8IDQpeworICAgICAgICAv KiBtYXNrIHVuLW5lZWRlZCBiaXRzIGlmIHdlIGFyZSBjbG9zZSB0byBpbnB1dCBlbmQgKi8KKyAg ICAgICAgdWludDY0X3QgbWFzayA9ICgxdWxsIDw8IChidWZmZXItPnBvcyArIDEpICogOCkgLSAx OworICAgICAgICB0bXAgJj0gbWFzazsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiAgVW5zdHVm ZiBiaXRzLiBMb2FkIGEgdGVtcG9yYXJ5IGJ5dGUsIHdoaWNoIHByZWNlZGVzIHRoZSBwb3NpdGlv biB3ZQorICAgICAqICBjdXJyZW50bHkgYXQsIHRvIGVuc3VyZSB0aGF0IHdlIGNhbiBhbHNvIHVu LXN0dWZmIGlmIHRoZSBzdHVmZmVkIGJpdCBpcworICAgICAqICB0aGUgYm90dG9tIG1vc3QgYml0 cy4KKyAgICAgKi8KKyAgICB0bXAgPDw9IDg7CisgICAgdG1wIHw9IGFycmF5W2J1ZmZlci0+cG9z ICsgMV07CisKKyAgICBpZiAoKHRtcCAmIDB4N0ZGRjAwMDAwMCkgPiAweDdGOEYwMDAwMDApIHsK KyAgICAgICAgdG1wICY9IDB4N0ZGRkZGRkZGRjsKKyAgICAgICAgbmV3X2JpdHMtLTsKKyAgICB9 CisgICAgaWYgKCh0bXAgJiAweDAwN0ZGRjAwMDApID4gMHgwMDdGOEYwMDAwKSB7CisgICAgICAg IHRtcCA9ICh0bXAgJiAweDAwN0ZGRkZGRkYpICsgKCh0bXAgJiAweEZGMDAwMDAwMDApID4+IDEp OworICAgICAgICBuZXdfYml0cy0tOworICAgIH0KKyAgICBpZiAoKHRtcCAmIDB4MDAwMDdGRkYw MCkgPiAweDAwMDA3RjhGMDApIHsKKyAgICAgICAgdG1wID0gKHRtcCAmIDB4MDAwMDdGRkZGRikg KyAoKHRtcCAmIDB4RkZGRjAwMDAwMCkgPj4gMSk7CisgICAgICAgIG5ld19iaXRzLS07CisgICAg fQorICAgIGlmICgodG1wICYgMHgwMDAwMDA3RkZGKSA+IDB4MDAwMDAwN0Y4RikgeworICAgICAg ICB0bXAgPSAodG1wICYgMHgwMDAwMDA3RkZGKSArICgodG1wICYgMHhGRkZGRkYwMDAwKSA+PiAx KTsKKyAgICAgICAgbmV3X2JpdHMtLTsKKyAgICB9CisKKyAgICB0bXAgPj49IDg7IC8vIFJlbW92 ZSB0ZW1wb3JhcnkgYnl0ZSBsb2FkZWQKKworICAgIC8qIEFkZCBiaXRzIHRvIHRoZSBNU0Igb2Yg dGhlIGJpdCBidWZmZXIgKi8KKyAgICBidWZmZXItPmJpdF9idWYgfD0gdG1wIDw8IGJ1ZmZlci0+ Yml0c19sZWZ0OworICAgIGJ1ZmZlci0+Yml0c19sZWZ0ICs9IG5ld19iaXRzOworICAgIGJ1ZmZl ci0+cG9zID0gRkZNQVgoMCwgcG9zaXRpb24pOworICAgIHJldHVybiAwOworfQorCisvKioKKyAq IFJlZmlsbCB0aGUgYml0LWJ1ZmZlciByZWFkaW5nIG5ldyBiaXRzIGdvaW5nIGZvcndhcmQKKyAq IGluIHRoZSBzdHJlYW0gd2hpbGUgc2tpcHBpbmcgb3ZlciBzdHVmZmVkIGJpdHMuCisgKi8KK3N0 YXRpYyB2b2lkIGpwZWcyMDAwX2JpdGJ1Zl9yZWZpbGxfZm9yd2FyZChTdGF0ZVZhcnMgKmJ1ZmZl ciwgY29uc3QgdWludDhfdCAqYXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoKQoreworICAgIHdoaWxlIChidWZmZXItPmJpdHNf bGVmdCA8IDMyKSB7CisgICAgICAgIGJ1ZmZlci0+dG1wID0gMHhGRjsKKyAgICAgICAgYnVmZmVy LT5iaXRzID0gKGJ1ZmZlci0+bGFzdCA9PSAweEZGKSA/IDcgOiA4OworICAgICAgICBpZiAoYnVm ZmVyLT5wb3MgPD0gbGVuZ3RoKSB7CisgICAgICAgICAgICBidWZmZXItPnRtcCA9IGFycmF5W2J1 ZmZlci0+cG9zXTsKKyAgICAgICAgICAgIGJ1ZmZlci0+cG9zICs9IDE7CisgICAgICAgICAgICBi dWZmZXItPmxhc3QgPSBidWZmZXItPnRtcDsKKyAgICAgICAgfQorICAgICAgICBidWZmZXItPmJp dF9idWYgfD0gKCh1aW50NjRfdCkgYnVmZmVyLT50bXApIDw8IGJ1ZmZlci0+Yml0c19sZWZ0Owor ICAgICAgICBidWZmZXItPmJpdHNfbGVmdCArPSBidWZmZXItPmJpdHM7CisgICAgfQorfQorCisv KioKKyAqIERyb3BzIGJpdHMgZnJvbSBsb3dlciBiaXRzIGluIHRoZSBiaXQgYnVmZmVyLiBidWYg Y29udGFpbnMgdGhlIGJpdCBidWZmZXJzLgorICogbmJpdHMgaXMgdGhlIG51bWJlciBvZiBiaXRz IHRvIHJlbW92ZS4KKyAqLworYXZfYWx3YXlzX2lubGluZQorc3RhdGljIHZvaWQganBlZzIwMDBf Yml0YnVmX2Ryb3BfYml0c19sc2IoU3RhdGVWYXJzICpidWYsIHVpbnQ4X3QgbmJpdHMpCit7Cisg ICAgYXZfYXNzZXJ0MihidWYtPmJpdHNfbGVmdCA+PSBuYml0cyk7IC8vIGNhbm5vdCByZWFkIG1v cmUgYml0cyB0aGFuIGF2YWlsYWJsZQorICAgIGJ1Zi0+Yml0X2J1ZiA+Pj0gbmJpdHM7CisgICAg YnVmLT5iaXRzX2xlZnQgLT0gbmJpdHM7Cit9CisKKy8qKgorICogR2V0IGJpdHMgZnJvbSB0aGUg Yml0IGJ1ZmZlciByZWFkaW5nIHRoZW0gZnJvbSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cwor ICogbW92aW5nIHRvIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdHMuIEluIGNhc2UgdGhlcmUgYXJl IGZld2VyIGJpdHMsIHJlZmlsbAorICogZnJvbSBidWYgbW92aW5nIGJhY2t3YXJkcy4KKyAqLwor YXZfYWx3YXlzX2lubGluZQorc3RhdGljIHVpbnQ2NF90IGpwZWcyMDAwX2JpdGJ1Zl9nZXRfYml0 c19sc2IoU3RhdGVWYXJzICpiaXRfc3RyZWFtLCB1aW50OF90IG5iaXRzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYnVmKQorewor ICAgIHVpbnQ2NF90IGJpdHM7CisgICAgdWludDY0X3QgbWFzayA9ICgxdWxsIDw8IG5iaXRzKSAt IDE7CisgICAgaWYgKGJpdF9zdHJlYW0tPmJpdHNfbGVmdCA8IG5iaXRzKQorICAgICAgICBqcGVn MjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3YXJkcyhiaXRfc3RyZWFtLCBidWYpOworICAgIGJpdHMg PSBiaXRfc3RyZWFtLT5iaXRfYnVmICYgbWFzazsKKyAgICBqcGVnMjAwMF9iaXRidWZfZHJvcF9i aXRzX2xzYihiaXRfc3RyZWFtLCBuYml0cyk7CisgICAgcmV0dXJuIGJpdHM7Cit9CisKKy8qKgor ICogR2V0IGJpdHMgZnJvbSB0aGUgYml0IGJ1ZmZlciByZWFkaW5nIHRoZW0gZnJvbSB0aGUgbGVh c3Qgc2lnbmlmaWNhbnQgYml0cworICogbW92aW5nIHRvIHRoZSBtb3N0IHNpZ25pZmljYW50IGJp dHMuIEluIGNhc2UgdGhlcmUgYXJlIGZld2VyIGJpdHMsIHJlZmlsbCBmcm9tCisgKiBidWYgbW92 aW5nIGZvcndhcmQuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRpYyB1aW50NjRfdCBqcGVn MjAwMF9iaXRidWZfZ2V0X2JpdHNfbHNiX2ZvcndhcmQoU3RhdGVWYXJzICpiaXRfc3RyZWFtLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 OF90IG5iaXRzLCBjb25zdCB1aW50OF90ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0aCkKK3sKKyAgICB1aW50 NjRfdCBiaXRzOworICAgIHVpbnQ2NF90IG1hc2sgPSAoMXVsbCA8PCBuYml0cykgLSAxOworCisg ICAgaWYgKGJpdF9zdHJlYW0tPmJpdHNfbGVmdCA8PSBuYml0cykKKyAgICAgICAganBlZzIwMDBf Yml0YnVmX3JlZmlsbF9mb3J3YXJkKGJpdF9zdHJlYW0sIGJ1ZiwgbGVuZ3RoKTsKKyAgICBiaXRz ID0gYml0X3N0cmVhbS0+Yml0X2J1ZiAmIG1hc2s7CisgICAganBlZzIwMDBfYml0YnVmX2Ryb3Bf Yml0c19sc2IoYml0X3N0cmVhbSwgbmJpdHMpOworICAgIHJldHVybiBiaXRzOworfQorCisvKioK KyAqIExvb2sgYWhlYWQgYml0IGJ1ZmZlciB3aXRob3V0IGRpc2NhcmRpbmcgYml0cy4KKyAqLwor YXZfYWx3YXlzX2lubGluZQorc3RhdGljIHVpbnQ2NF90IGpwZWcyMDAwX2JpdGJ1Zl9wZWVrX2Jp dHNfbHNiKFN0YXRlVmFycyAqc3RyZWFtLCB1aW50OF90IG5iaXRzKQoreworICAgIHVpbnQ2NF90 IG1hc2sgPSAoMXVsbCA8PCBuYml0cykgLSAxOworICAgIHJldHVybiBzdHJlYW0tPmJpdF9idWYg JiBtYXNrOworfQorCitzdGF0aWMgdm9pZCBqcGVnMjAwMF9pbml0X3ZsYyhTdGF0ZVZhcnMgKnMs IHVpbnQzMl90IExjdXAsIHVpbnQzMl90IFBjdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1aW50OF90ICpEY3VwKQoreworICAgIHMtPmJpdHNfbGVmdCA9IDA7CisgICAg cy0+Yml0X2J1ZiAgID0gMDsKKyAgICBzLT5wb3MgICAgICAgPSBMY3VwIC0gMiAtIFBjdXA7Cisg ICAgcy0+bGFzdCAgICAgID0gRGN1cFtMY3VwIC0gMl07CisgICAgcy0+dG1wICAgICAgID0gKHMt Pmxhc3QpID4+IDQ7CisgICAgcy0+Yml0cyAgICAgID0gKChzLT50bXAgJiA3KSA8IDcpID8gNCA6 IDM7CisKKyAgICBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3YXJkcyhzLCBEY3VwICsgUGN1 cCk7CisgICAganBlZzIwMDBfYml0YnVmX2Ryb3BfYml0c19sc2IocywgNCk7Cit9CisKKy8qKgor ICogRGVjb2RlIHByZWZpeCBjb2RlcyBmb3IgVkxDIHNlZ21lbnQuIFNlZSBSZWMuIElUVS1UIFQu ODE0LCA3LjMuNS4KKyAqLworYXZfYWx3YXlzX2lubGluZQorc3RhdGljIGludCAganBlZzIwMDBf ZGVjb2RlX2N0eF92bGMoY29uc3QgSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlVmFycyAqdmxjX3N0cmVhbSwgY29uc3Qg dWludDE2X3QgKnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgdWludDhfdCAqRGN1cCwgdWludDhfdCAqc2lnX3BhdCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnJlc19vZmYsIHVpbnQ4X3QgKmVtYl9wYXRfaywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmVtYl9wYXRfMSwgdWlu dDhfdCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBQ Y3VwLCB1aW50MTZfdCBjb250ZXh0KQoreworICAgIHVpbnQzMl90IHZhbHVlOworICAgIHVpbnQ4 X3QgbGVuOworICAgIHVpbnQ2NF90IGluZGV4OworICAgIHVpbnQ2NF90IGNvZGVfd29yZDsKKwor ICAgIGpwZWcyMDAwX2JpdGJ1Zl9yZWZpbGxfYmFja3dhcmRzKHZsY19zdHJlYW0sIERjdXAgKyBQ Y3VwKTsKKworICAgIGNvZGVfd29yZCA9IHZsY19zdHJlYW0tPmJpdF9idWYgJiAweDdmOworICAg IGluZGV4ID0gY29kZV93b3JkICsgKGNvbnRleHQgPDwgNyk7CisKKyAgICBhdl9hc3NlcnQwKGlu ZGV4IDwgMTAyNCk7IC8vIFRoZSBDeHRWTEMgdGFibGUgaGFzIDEwMjQgZW50cmllcy4KKworICAg IHZhbHVlID0gdGFibGVbaW5kZXhdOworCisgICAgbGVuID0gKHZhbHVlICYgMHgwMDBGKSA+PiAx OworCisgICAgcmVzX29mZltwb3NdID0gKHVpbnQ4X3QpICh2YWx1ZSAmIDEpOworICAgIHNpZ19w YXRbcG9zXSA9ICh1aW50OF90KSAoKHZhbHVlICYgMHgwMEYwKSA+PiA0KTsKKyAgICBlbWJfcGF0 X2tbcG9zXSA9ICh1aW50OF90KSAoKHZhbHVlICYgMHgwRjAwKSA+PiA4KTsKKyAgICBlbWJfcGF0 XzFbcG9zXSA9ICh1aW50OF90KSAoKHZhbHVlICYgMHhGMDAwKSA+PiAxMik7CisKKyAgICBqcGVn MjAwMF9iaXRidWZfZHJvcF9iaXRzX2xzYih2bGNfc3RyZWFtLCBsZW4pOworICAgIHJldHVybiAw OworfQorCisvKioKKyAqIERlY29kZSB2YXJpYWJsZSBsZW5ndGggdS12bGMgcHJlZml4LiBTZWUg ZGVjb2RlVVByZWZpeCBwcm9jZWR1cmUgYXQgUmVjLgorICogSVRVLVQgVC44MTQsIDcuMy42Lgor ICovCithdl9hbHdheXNfaW5saW5lCitzdGF0aWMgdWludDhfdCB2bGNfZGVjb2RlX3VfcHJlZml4 KFN0YXRlVmFycyAqdmxjX3N0cmVhbSwgY29uc3QgdWludDhfdCAqcmVmaWxsX2FycmF5KQorewor ICAgIHN0YXRpYyBjb25zdCB1aW50OF90IHJldHVybl92YWx1ZVs4XSA9IHsgNSwgMSwgMiwgMSwg MywgMSwgMiwgMSB9OworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGRyb3BfYml0c1s4XSAgICA9 IHsgMywgMSwgMiwgMSwgMywgMSwgMiwgMSB9OworCisgICAgdWludDhfdCBiaXRzOworCisgICAg aWYgKHZsY19zdHJlYW0tPmJpdHNfbGVmdCA8IDMpCisgICAgICAgIGpwZWcyMDAwX2JpdGJ1Zl9y ZWZpbGxfYmFja3dhcmRzKHZsY19zdHJlYW0sIHJlZmlsbF9hcnJheSk7CisKKyAgICBiaXRzID0g anBlZzIwMDBfYml0YnVmX3BlZWtfYml0c19sc2IodmxjX3N0cmVhbSwgMyk7CisKKyAgICBqcGVn MjAwMF9iaXRidWZfZHJvcF9iaXRzX2xzYih2bGNfc3RyZWFtLCBkcm9wX2JpdHNbYml0c10pOwor ICAgIHJldHVybiByZXR1cm5fdmFsdWVbYml0c107Cit9CisKKy8qKgorICogRGVjb2RlIHZhcmlh YmxlIGxlbmd0aCB1LXZsYyBzdWZmaXguIFNlZSBkZWNvZGVVU3VmZml4IHByb2NlZHVyZSBhdCBS ZWMuCisgKiBJVFUtVCBULjgxNCwgNy4zLjYuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRp YyB1aW50OF90IHZsY19kZWNvZGVfdV9zdWZmaXgoU3RhdGVWYXJzICp2bGNfc3RyZWFtLCB1aW50 OF90IHN1ZmZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu dDhfdCAqcmVmaWxsX2FycmF5KQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1tdICAgICAg PSB7IDEsIDMxIH07CisgICAgc3RhdGljIGNvbnN0IGludCBkcm9wX2JpdHNbXSA9IHsgMSwgNSAg fTsKKworICAgIHVpbnQ4X3QgYml0czsKKyAgICBpbnQgY29uZCA9IHN1ZmZpeCAhPSAzOworICAg IGlmIChzdWZmaXggPCAzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICh2bGNfc3RyZWFt LT5iaXRzX2xlZnQgPCA1KQorICAgICAgICBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3YXJk cyh2bGNfc3RyZWFtLCByZWZpbGxfYXJyYXkpOworCisgICAgYml0cyA9IGpwZWcyMDAwX2JpdGJ1 Zl9wZWVrX2JpdHNfbHNiKHZsY19zdHJlYW0sIDUpOworCisgICAganBlZzIwMDBfYml0YnVmX2Ry b3BfYml0c19sc2IodmxjX3N0cmVhbSwgZHJvcF9iaXRzW2NvbmRdKTsKKyAgICByZXR1cm4gYml0 cyAmIG1hc2tbY29uZF07Cit9CisKKy8qKgorICogRGVjb2RlIHUtdmxjIGV4dGVuc2lvbiB2YWx1 ZXMuIFNlZSBkZWNvZGVVRXh0ZW5zaW9uIHByb2NlZHVyZSBhdCBSZWMuIElUVS1UCisgKiBULjgx NCwgNy4zLjYuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRpYyB1aW50OF90IHZsY19kZWNv ZGVfdV9leHRlbnNpb24oU3RhdGVWYXJzICp2bGNfc3RyZWFtLCB1aW50OF90IHN1ZmZpeCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcmVmaWxs X2FycmF5KQoreworICAgIHJldHVybiBqcGVnMjAwMF9iaXRidWZfZ2V0X2JpdHNfbHNiKHZsY19z dHJlYW0sIDQgKiAoc3VmZml4ID49IDI4KSwgcmVmaWxsX2FycmF5KTsKK30KKworLyoqCisgKiBN YWduaXR1ZGUgYW5kIFNpZ24gZGVjb2RlIHByb2NlZHVyZXMuIFNlZSBkZWNvZGVNYWdTZ25WYWx1 ZSBwcm9jZWR1cmUgYXQgUmVjLgorICogSVRVLVQgVC44MTQsIDcuMy44LgorICovCithdl9hbHdh eXNfaW5saW5lCitzdGF0aWMgaW50MzJfdCBqcGVnMjAwMF9kZWNvZGVfbWFnX3NnbihTdGF0ZVZh cnMgKm1hZ19zZ25fc3RyZWFtLCBpbnQzMl90IG1fbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludDMyX3QgaV9uLCBjb25zdCB1aW50OF90ICpidWYsIHVpbnQzMl90 IGxlbmd0aCkKK3sKKyAgICBpbnQzMl90IHZhbCA9IDA7CisgICAgaWYgKG1fbiA+IDApIHsKKyAg ICAgICAgdmFsID0ganBlZzIwMDBfYml0YnVmX2dldF9iaXRzX2xzYl9mb3J3YXJkKG1hZ19zZ25f c3RyZWFtLG1fbixidWYsbGVuZ3RoKTsKKyAgICAgICAgdmFsICs9IChpX24gPDwgbV9uKTsKKyAg ICB9CisgICAgcmV0dXJuIHZhbDsKK30KKworYXZfYWx3YXlzX2lubGluZQorc3RhdGljIHZvaWQg cmVjb3Zlcl9tYWdfc2duKFN0YXRlVmFycyAqbWFnX3NnbiwgdWludDhfdCBwb3MsIHVpbnQxNl90 IHEsIGludDMyX3QgbV9uWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3Qg a25vd25fMVsyXSwgY29uc3QgdWludDhfdCBlbWJfcGF0XzFbMl0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50MzJfdCB2WzJdWzRdLCBpbnQzMl90IG1bMl1bNF0sIHVpbnQ4X3QgKkUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKm11X24sIGNvbnN0IHVpbnQ4 X3QgKkRjdXAsIHVpbnQzMl90IFBjdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgcExTQikKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAg ICBpbnQzMl90IG4gPSA0ICogcSArIGk7CisgICAgICAgIG1fbltwb3NdID0gbVtwb3NdW2ldOwor ICAgICAgICBrbm93bl8xW3Bvc10gPSAoZW1iX3BhdF8xW3Bvc10gPj4gaSkgJiAxOworICAgICAg ICB2W3Bvc11baV0gPSBqcGVnMjAwMF9kZWNvZGVfbWFnX3NnbihtYWdfc2duLCBtX25bcG9zXSwg a25vd25fMVtwb3NdLCBEY3VwLCBQY3VwKTsKKworICAgICAgICBpZiAobV9uW3Bvc10gIT0gMCkg eworICAgICAgICAgICAgRVtuXSA9IDMyIC0gZmZfY2x6KHZbcG9zXVtpXSB8IDEpOworICAgICAg ICAgICAgbXVfbltuXSA9ICh2W3Bvc11baV0gPj4gMSkgKyAxOworICAgICAgICAgICAgbXVfbltu XSA8PD0gcExTQjsKKyAgICAgICAgICAgIG11X25bbl0gfD0gKCh1aW50MzJfdCkgKHZbcG9zXVtp XSAmIDEpKSA8PCAzMTsgLy8gc2lnbiBiaXQuCisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRp YyBpbnQganBlZzIwMDBfaW1wb3J0X2JpdChTdGF0ZVZhcnMgKnN0cmVhbSwgY29uc3QgdWludDhf dCAqYXJyYXksIHVpbnQzMl90IGxlbmd0aCkKK3sKKyAgICBpbnQgY29uZCA9IHN0cmVhbS0+cG9z IDw9IGxlbmd0aDsKKyAgICBpbnQgcG9zID0gRkZNSU4oc3RyZWFtLT5wb3MsIGxlbmd0aCk7Cisg ICAgaWYgKHN0cmVhbS0+Yml0cyA9PSAwKSB7CisgICAgICAgIHN0cmVhbS0+Yml0cyA9IChzdHJl YW0tPnRtcCA9PSAweEZGKSA/IDcgOiA4OworICAgICAgICBzdHJlYW0tPnBvcyArPSBjb25kOwor ICAgICAgICBzdHJlYW0tPnRtcCA9IGNvbmQgPyBhcnJheVtwb3NdIDogMHhGRjsKKyAgICB9Cisg ICAgc3RyZWFtLT5iaXRzIC09IDE7CisgICAgcmV0dXJuIChzdHJlYW0tPnRtcCA+PiBzdHJlYW0t PmJpdHMpICYgMTsKK30KKworc3RhdGljIGludCBqcGVnMjAwMF9wZWVrX2JpdChTdGF0ZVZhcnMg KnN0cmVhbSwgY29uc3QgdWludDhfdCAqYXJyYXksIHVpbnQzMl90IGxlbmd0aCkKK3sKKyAgICBp ZiAoc3RyZWFtLT5iaXRzID09IDApIHsKKyAgICAgICAgaW50IGNvbmQgPSBzdHJlYW0tPnBvcyA8 PSBsZW5ndGg7CisgICAgICAgIGludCBwb3MgPSBGRk1JTihzdHJlYW0tPnBvcywgbGVuZ3RoKTsK KyAgICAgICAgc3RyZWFtLT5iaXRzID0gKHN0cmVhbS0+dG1wID09IDB4RkYpID8gNyA6IDg7Cisg ICAgICAgIHN0cmVhbS0+cG9zICs9IGNvbmQ7CisgICAgICAgIHN0cmVhbS0+dG1wID0gY29uZCA/ IGFycmF5W3Bvc10gOiAweEZGOworICAgIH0KKyAgICByZXR1cm4gKHN0cmVhbS0+dG1wID4+IHN0 cmVhbS0+Yml0cykgJiAxOworfQorCitzdGF0aWMgaW50IGpwZWcyMDAwX2RlY29kZV9tZWxfc3lt KE1lbERlY29kZXJTdGF0ZSAqbWVsX3N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTdGF0ZVZhcnMgKm1lbF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKkRjdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IExjdXApCit7CisKKyAgICBpZiAobWVsX3N0YXRlLT5ydW4gPT0g MCAmJiBtZWxfc3RhdGUtPm9uZSA9PSAwKSB7CisgICAgICAgIHVpbnQ4X3QgZXZhbDsKKyAgICAg ICAgdWludDhfdCBiaXQ7CisKKyAgICAgICAgZXZhbCA9IG1lbF9lW21lbF9zdGF0ZS0+a107Cisg ICAgICAgIGJpdCA9IGpwZWcyMDAwX2ltcG9ydF9iaXQobWVsX3N0cmVhbSwgRGN1cCwgTGN1cCk7 CisgICAgICAgIGlmIChiaXQgPT0gMSkgeworICAgICAgICAgICAgbWVsX3N0YXRlLT5ydW4gPSAx IDw8IGV2YWw7CisgICAgICAgICAgICBtZWxfc3RhdGUtPmsgPSBGRk1JTigxMiwgbWVsX3N0YXRl LT5rICsgMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtZWxfc3RhdGUtPnJ1biA9 IDA7CisgICAgICAgICAgICB3aGlsZSAoZXZhbCA+IDApIHsKKyAgICAgICAgICAgICAgICBiaXQg PSBqcGVnMjAwMF9pbXBvcnRfYml0KG1lbF9zdHJlYW0sIERjdXAsIExjdXApOworICAgICAgICAg ICAgICAgIG1lbF9zdGF0ZS0+cnVuID0gKDIgKiAobWVsX3N0YXRlLT5ydW4pKSArIGJpdDsKKyAg ICAgICAgICAgICAgICBldmFsIC09IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZWxf c3RhdGUtPmsgPSBGRk1BWCgwLCBtZWxfc3RhdGUtPmsgLSAxKTsKKyAgICAgICAgICAgIG1lbF9z dGF0ZS0+b25lID0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobWVsX3N0YXRlLT5ydW4g PiAwKSB7CisgICAgICAgIG1lbF9zdGF0ZS0+cnVuIC09IDE7CisgICAgICAgIHJldHVybiAwOwor ICAgIH0gZWxzZSB7CisgICAgICAgIG1lbF9zdGF0ZS0+b25lID0gMDsKKyAgICAgICAgcmV0dXJu IDE7CisgICAgfQorfQorCisvKioKKyAqIE1hZ3JlZiBkZWNvZGluZyBwcm9jZWR1cmVzLgorICov Cithdl9hbHdheXNfaW5saW5lCitzdGF0aWMgaW50IGpwZWcyMDAwX2ltcG9ydF9tYWdyZWZfYml0 KFN0YXRlVmFycyAqc3RyZWFtLCBjb25zdCB1aW50OF90ICphcnJheSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoKQoreworICAgIHJldHVybiBq cGVnMjAwMF9iaXRidWZfZ2V0X2JpdHNfbHNiKHN0cmVhbSwgMSwgYXJyYXkpOworfQorCisvKioK KyAqIFNpZ25hbCBFTUIgZGVjb2RlLgorICovCitzdGF0aWMgaW50IGpwZWcyMDAwX2RlY29kZV9z aWdfZW1iKGNvbnN0IEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIE1lbERlY29kZXJTdGF0ZSAq bWVsX3N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZVZhcnMg Km1lbF9zdHJlYW0sIFN0YXRlVmFycyAqdmxjX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnZsY190YWJsZSwgY29uc3QgdWludDhfdCAq RGN1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqc2lnX3Bh dCwgdWludDhfdCAqcmVzX29mZiwgdWludDhfdCAqZW1iX3BhdF9rLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICplbWJfcGF0XzEsIHVpbnQ4X3QgcG9zLCB1aW50 MTZfdCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCBMY3VwLCB1aW50MzJfdCBQY3VwKQoreworICAgIGlmIChjb250ZXh0ID09IDApIHsKKyAgICAg ICAgdWludDhfdCBzeW07CisgICAgICAgIHN5bSA9IGpwZWcyMDAwX2RlY29kZV9tZWxfc3ltKG1l bF9zdGF0ZSwgbWVsX3N0cmVhbSwgRGN1cCwgTGN1cCk7CisgICAgICAgIGlmIChzeW0gPT0gMCkg eworICAgICAgICAgICAgc2lnX3BhdFtwb3NdID0gMDsKKyAgICAgICAgICAgIHJlc19vZmZbcG9z XSA9IDA7CisgICAgICAgICAgICBlbWJfcGF0X2tbcG9zXSA9IDA7CisgICAgICAgICAgICBlbWJf cGF0XzFbcG9zXSA9IDA7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0K KyAgICByZXR1cm4ganBlZzIwMDBfZGVjb2RlX2N0eF92bGMocywgdmxjX3N0cmVhbSwgdmxjX3Rh YmxlLCBEY3VwLCBzaWdfcGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXNfb2ZmLCBlbWJfcGF0X2ssIGVtYl9wYXRfMSwgcG9zLCBQY3VwLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb250ZXh0KTsKK30KKworYXZfYWx3YXlzX2lubGluZQorc3Rh dGljIGludCBqcGVnMjAwMF9nZXRfc3RhdGUoaW50IHgxLCBpbnQgeDIsIGludCB3aWR0aCwgaW50 IHNoaWZ0X2J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq YmxvY2tfc3RhdGVzKQoreworICAgIHJldHVybiAoYmxvY2tfc3RhdGVzWyh4MSArIDEpICogKHdp ZHRoICsgMikgKyAoeDIgKyAxKV0gPj4gc2hpZnRfYnkpICYgMTsKK30KKworYXZfYWx3YXlzX2lu bGluZQorc3RhdGljIHZvaWQganBlZzIwMDBfbW9kaWZ5X3N0YXRlKGludCB4MSwgaW50IHgyLCBp bnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUsIHVp bnQ4X3QgKmJsb2NrX3N0YXRlcykKK3sKKyAgICBibG9ja19zdGF0ZXNbKHgxICsgMSkgKiAod2lk dGggKyAyKSArICh4MiArIDEpXSB8PSB2YWx1ZTsKK30KKworYXZfYWx3YXlzX2lubGluZQorc3Rh dGljIGludCBqcGVnMjAwMF9kZWNvZGVfaHRfY2xlYW51cF9zZWdtZW50KGNvbnN0IEpwZWcyMDAw RGVjb2RlckNvbnRleHQgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSnBlZzIwMDBDYmxrICpjYmxrLCBKcGVnMjAwMFQxQ29udGV4dCAqdDEsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVsRGVjb2RlclN0YXRl ICptZWxfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU3RhdGVWYXJzICptZWxfc3RyZWFtLCBTdGF0ZVZhcnMgKnZsY19zdHJlYW0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVWYXJzICptYWdfc2du X3N0cmVhbSwgY29uc3QgdWludDhfdCAqRGN1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBMY3VwLCB1aW50MzJfdCBQY3VwLCB1aW50OF90 IHBMU0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQzMl90ICpzYW1wbGVfYnVmLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJsb2NrX3N0YXRlcykKK3sK KyAgICB1aW50MTZfdCBxICAgICAgICAgICAgICAgICAgICAgID0gMDsgICAgIC8vIFJlcHJlc2Vu dHMgY3VycmVudCBxdWFkIHBvc2l0aW9uCisgICAgdWludDE2X3QgcTEsIHEyOworICAgIHVpbnQx Nl90IGNvbnRleHQxLCBjb250ZXh0MjsKKyAgICB1aW50MTZfdCBjb250ZXh0ICAgICAgICAgICAg ICAgID0gMDsKKworICAgIHVpbnQ4X3Qgc2lnX3BhdFsyXSAgICAgICAgICAgICAgPSB7IDAgfTsg Ly8gc2lnbmlmaWNhbmNlIHBhdHRlcm4KKyAgICB1aW50OF90IHJlc19vZmZbMl0gICAgICAgICAg ICAgID0geyAwIH07IC8vIHJlc2lkdWFsIG9mZnNldAorICAgIHVpbnQ4X3QgZW1iX3BhdF9rWzJd ICAgICAgICAgICAgPSB7IDAgfTsgLy8gZXhwb25lbnQgTWF4IEJvdW5kIHBhdHRlcm4gSworICAg IHVpbnQ4X3QgZW1iX3BhdF8xWzJdICAgICAgICAgICAgPSB7IDAgfTsgLy8gZXhwb25lbnQgTWF4 IEJvdW5kIHBhdHRlcm4gMQorICAgIHVpbnQ4X3QgZ2FtbWFbMl0gICAgICAgICAgICAgICAgPSB7 IDAgfTsKKworICAgIHVpbnQ4X3QgRV9uWzJdICAgICAgICAgICAgICAgICAgPSB7IDAgfTsKKyAg ICB1aW50OF90IEVfbmVbMl0gICAgICAgICAgICAgICAgID0geyAwIH07CisgICAgdWludDhfdCBF X253WzJdICAgICAgICAgICAgICAgICA9IHsgMCB9OworICAgIHVpbnQ4X3QgRV9uZlsyXSAgICAg ICAgICAgICAgICAgPSB7IDAgfTsKKworICAgIHVpbnQ4X3QgbWF4X2VbMl0gICAgICAgICAgICAg ICAgPSB7IDAgfTsKKyAgICB1aW50OF90IHVfcGZ4WzJdICAgICAgICAgICAgICAgID0geyAwIH07 CisgICAgdWludDhfdCB1X3NmeFsyXSAgICAgICAgICAgICAgICA9IHsgMCB9OworICAgIHVpbnQ4 X3QgdV9leHRbMl0gICAgICAgICAgICAgICAgPSB7IDAgfTsKKworICAgIGludDMyX3QgdVsyXSAg ICAgICAgICAgICAgICAgICAgPSB7IDAgfTsKKyAgICBpbnQzMl90IFVbMl0gICAgICAgICAgICAg ICAgICAgID0geyAwIH07IC8vIGV4cG9uZW50IGJvdW5kCisgICAgaW50MzJfdCBtX25bMl0gICAg ICAgICAgICAgICAgICA9IHsgMCB9OworICAgIGludDMyX3Qga25vd25fMVsyXSAgICAgICAgICAg ICAgPSB7IDAgfTsKKworICAgIGludDMyX3QgbVsyXVs0XSAgICAgICAgICAgICAgICAgPSB7IDAg fTsKKyAgICBpbnQzMl90IHZbMl1bNF0gICAgICAgICAgICAgICAgID0geyAwIH07CisKKyAgICB1 aW50OF90IGthcHBhWzJdICAgICAgICAgICAgICAgID0geyAxLCAxIH07CisKKyAgICBpbnQgcmV0 ICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKKworICAgIGludCBzcDsKKworICAgIHVpbnQ2 NF90IGM7CisKKyAgICB1aW50OF90ICpzaWdtYTsKKyAgICB1aW50MzJfdCAqbXU7CisKKyAgICBj b25zdCB1aW50OF90ICp2bGNfYnVmID0gRGN1cCArIFBjdXA7CisKKyAgICAvKiBjb252ZXJ0IHRv IHJhc3Rlci1zY2FuICovCisgICAgY29uc3QgdWludDE2X3QgaXNfYm9yZGVyX3ggPSB3aWR0aCAl IDI7CisgICAgY29uc3QgdWludDE2X3QgaXNfYm9yZGVyX3kgPSBoZWlnaHQgJSAyOworCisgICAg Y29uc3QgdWludDE2X3QgcXVhZF93aWR0aCAgPSBmZl9qcGVnMjAwMF9jZWlsZGl2cG93Mih3aWR0 aCwgMSk7CisgICAgY29uc3QgdWludDE2X3QgcXVhZF9oZWlnaHQgPSBmZl9qcGVnMjAwMF9jZWls ZGl2cG93MihoZWlnaHQsIDEpOworCisgICAgc2l6ZV90IGJ1Zl9zaXplID0gNCAqIHF1YWRfd2lk dGggKiBxdWFkX2hlaWdodDsKKworICAgIHVpbnQ4X3QgKnNpZ21hX24gPSBhdl9jYWxsb2MoYnVm X3NpemUsIHNpemVvZih1aW50OF90KSk7CisgICAgdWludDhfdCAqRSAgICAgICA9IGF2X2NhbGxv YyhidWZfc2l6ZSwgc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICB1aW50MzJfdCAqbXVfbiAgID0gYXZf Y2FsbG9jKGJ1Zl9zaXplLCBzaXplb2YodWludDMyX3QpKTsKKworICAgIGlmICghc2lnbWFfbiB8 fCAhRSB8fCAhbXVfbikgeworICAgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAg IGdvdG8gZnJlZTsKKyAgICB9CisKKyAgICBzaWdtYSA9IHNpZ21hX247CisgICAgbXUgPSBtdV9u OworCisgICAgd2hpbGUgKHEgPCBxdWFkX3dpZHRoIC0gMSkgeworICAgICAgICBxMSA9IHE7Cisg ICAgICAgIHEyID0gcTEgKyAxOworCisgICAgICAgIGlmICgocmV0ID0ganBlZzIwMDBfZGVjb2Rl X3NpZ19lbWIocywgbWVsX3N0YXRlLCBtZWxfc3RyZWFtLCB2bGNfc3RyZWFtLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY19jeHRfdmxjX3RhYmxlMCwgRGN1 cCwgc2lnX3BhdCwgcmVzX29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbWJfcGF0X2ssIGVtYl9wYXRfMSwgSjJLX1ExLCBjb250ZXh0LCBMY3VwLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBjdXApKSA8IDApCisgICAg ICAgICAgICBnb3RvIGZyZWU7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKysp CisgICAgICAgICAgICBzaWdtYV9uWzQgKiBxMSArIGldID0gKHNpZ19wYXRbSjJLX1ExXSA+PiBp KSAmIDE7CisKKyAgICAgICAgLyogY2FsY3VsYXRlIGNvbnRleHQgKi8KKyAgICAgICAgY29udGV4 dCAgPSBzaWdtYV9uWzQgKiBxMV07ICAgICAgICAgICAvLyBmCisgICAgICAgIGNvbnRleHQgfD0g c2lnbWFfbls0ICogcTEgKyAxXTsgICAgICAgLy8gc2YKKyAgICAgICAgY29udGV4dCArPSBzaWdt YV9uWzQgKiBxMSArIDJdIDw8IDE7ICAvLyB3IDw8IDEKKyAgICAgICAgY29udGV4dCArPSBzaWdt YV9uWzQgKiBxMSArIDNdIDw8IDI7CisKKyAgICAgICAgaWYgKChyZXQgPSBqcGVnMjAwMF9kZWNv ZGVfc2lnX2VtYihzLCBtZWxfc3RhdGUsIG1lbF9zdHJlYW0sIHZsY19zdHJlYW0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjX2N4dF92bGNfdGFibGUwLCBE Y3VwLCBzaWdfcGF0LCByZXNfb2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVtYl9wYXRfaywgZW1iX3BhdF8xLCBKMktfUTIsIGNvbnRleHQsIExjdXAsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGN1cCkpIDwgMCkKKyAg ICAgICAgICAgIGdvdG8gZnJlZTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkr KykKKyAgICAgICAgICAgIHNpZ21hX25bNCAqIHEyICsgaV0gPSAoc2lnX3BhdFtKMktfUTJdID4+ IGkpICYgMTsKKworICAgICAgICAvKiBjYWxjdWxhdGUgY29udGV4dCBmb3IgdGhlIG5leHQgcXVh ZCAqLworICAgICAgICBjb250ZXh0ICA9IHNpZ21hX25bNCAqIHEyXTsgICAgICAgICAgIC8vIGYK KyAgICAgICAgY29udGV4dCB8PSBzaWdtYV9uWzQgKiBxMiArIDFdOyAgICAgICAvLyBzZgorICAg ICAgICBjb250ZXh0ICs9IHNpZ21hX25bNCAqIHEyICsgMl0gPDwgMTsgIC8vIHcgPDwgMQorICAg ICAgICBjb250ZXh0ICs9IHNpZ21hX25bNCAqIHEyICsgM10gPDwgMjsgIC8vIHN3IDw8IDIKKwor ICAgICAgICB1WzBdID0gMDsKKyAgICAgICAgdVsxXSA9IDA7CisKKyAgICAgICAganBlZzIwMDBf Yml0YnVmX3JlZmlsbF9iYWNrd2FyZHModmxjX3N0cmVhbSwgdmxjX2J1Zik7CisKKyAgICAgICAg aWYgKHJlc19vZmZbSjJLX1ExXSA9PSAxICYmIHJlc19vZmZbSjJLX1EyXSA9PSAxKSB7CisKKyAg ICAgICAgICAgIGlmIChqcGVnMjAwMF9kZWNvZGVfbWVsX3N5bShtZWxfc3RhdGUsIG1lbF9zdHJl YW0sIERjdXAsIExjdXApID09IDEpIHsKKworICAgICAgICAgICAgICAgIHVfcGZ4W0oyS19RMV0g PSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0sIHZsY19idWYpOworICAgICAgICAgICAg ICAgIHVfcGZ4W0oyS19RMl0gPSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0sIHZsY19i dWYpOworCisgICAgICAgICAgICAgICAgdV9zZnhbSjJLX1ExXSA9IHZsY19kZWNvZGVfdV9zdWZm aXgodmxjX3N0cmVhbSwgdV9wZnhbSjJLX1ExXSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAg dV9zZnhbSjJLX1EyXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgodmxjX3N0cmVhbSwgdV9wZnhbSjJL X1EyXSwgdmxjX2J1Zik7CisKKyAgICAgICAgICAgICAgICB1X2V4dFtKMktfUTFdID0gdmxjX2Rl Y29kZV91X2V4dGVuc2lvbih2bGNfc3RyZWFtLCB1X3NmeFtKMktfUTFdLCB2bGNfYnVmKTsKKyAg ICAgICAgICAgICAgICB1X2V4dFtKMktfUTJdID0gdmxjX2RlY29kZV91X2V4dGVuc2lvbih2bGNf c3RyZWFtLCB1X3NmeFtKMktfUTJdLCB2bGNfYnVmKTsKKworICAgICAgICAgICAgICAgIHVbSjJL X1ExXSA9IDIgKyB1X3BmeFtKMktfUTFdICsgdV9zZnhbSjJLX1ExXSArICh1X2V4dFtKMktfUTFd ICogNCk7CisgICAgICAgICAgICAgICAgdVtKMktfUTJdID0gMiArIHVfcGZ4W0oyS19RMl0gKyB1 X3NmeFtKMktfUTJdICsgKHVfZXh0W0oyS19RMl0gKiA0KTsKKworICAgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICAgICB1X3BmeFtKMktfUTFdID0gdmxjX2RlY29kZV91X3ByZWZpeCh2 bGNfc3RyZWFtLCB2bGNfYnVmKTsKKworICAgICAgICAgICAgICAgIGlmICh1X3BmeFtKMktfUTFd ID4gMikgeworICAgICAgICAgICAgICAgICAgICB1W0oyS19RMl0gPSBqcGVnMjAwMF9iaXRidWZf Z2V0X2JpdHNfbHNiKHZsY19zdHJlYW0sIDEsIHZsY19idWYpICsgMTsKKyAgICAgICAgICAgICAg ICAgICAgdV9zZnhbSjJLX1ExXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgodmxjX3N0cmVhbSwgdV9w ZnhbSjJLX1ExXSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAgICAgIHVfZXh0W0oyS19RMV0g PSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W0oyS19RMV0sIHZsY19i dWYpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHVfcGZ4 W0oyS19RMl0gPSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0sIHZsY19idWYpOworICAg ICAgICAgICAgICAgICAgICB1X3NmeFtKMktfUTFdID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2bGNf c3RyZWFtLCB1X3BmeFtKMktfUTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgICAgICAgICAgdV9z ZnhbSjJLX1EyXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgodmxjX3N0cmVhbSwgdV9wZnhbSjJLX1Ey XSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAgICAgIHVfZXh0W0oyS19RMV0gPSB2bGNfZGVj b2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W0oyS19RMV0sIHZsY19idWYpOworICAg ICAgICAgICAgICAgICAgICB1X2V4dFtKMktfUTJdID0gdmxjX2RlY29kZV91X2V4dGVuc2lvbih2 bGNfc3RyZWFtLCB1X3NmeFtKMktfUTJdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgICAgICAgICAg dVtKMktfUTJdID0gdV9wZnhbSjJLX1EyXSArIHVfc2Z4W0oyS19RMl0gKyAodV9leHRbSjJLX1Ey XSAqIDQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBTZWUgUmVjLiBJ VFUtVCBULjgxNCwgNy4zLjYoMykgKi8KKyAgICAgICAgICAgICAgICB1W0oyS19RMV0gPSB1X3Bm eFtKMktfUTFdICsgdV9zZnhbSjJLX1ExXSArICh1X2V4dFtKMktfUTFdICogNCk7CisgICAgICAg ICAgICB9CisKKyAgICAgICAgfSBlbHNlIGlmIChyZXNfb2ZmW0oyS19RMV0gPT0gMSB8fCByZXNf b2ZmW0oyS19RMl0gPT0gMSkgeworICAgICAgICAgICAgdWludDhfdCBwb3MgPSByZXNfb2ZmW0oy S19RMV0gPT0gMSA/IDAgOiAxOworICAgICAgICAgICAgdV9wZnhbcG9zXSA9IHZsY19kZWNvZGVf dV9wcmVmaXgodmxjX3N0cmVhbSwgdmxjX2J1Zik7CisgICAgICAgICAgICB1X3NmeFtwb3NdID0g dmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtwb3NdLCB2bGNfYnVmKTsKKyAg ICAgICAgICAgIHVfZXh0W3Bvc10gPSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0s IHVfc2Z4W3Bvc10sIHZsY19idWYpOworICAgICAgICAgICAgdVtwb3NdID0gdV9wZnhbcG9zXSAr IHVfc2Z4W3Bvc10gKyAodV9leHRbcG9zXSAqIDQpOworICAgICAgICB9CisgICAgICAgIFVbSjJL X1ExXSA9IGthcHBhW0oyS19RMV0gKyB1W0oyS19RMV07CisgICAgICAgIFVbSjJLX1EyXSA9IGth cHBhW0oyS19RMl0gKyB1W0oyS19RMl07CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0 OyBpKyspIHsKKyAgICAgICAgICAgIG1bSjJLX1ExXVtpXSA9IHNpZ21hX25bNCAqIHExICsgaV0g KiBVW0oyS19RMV0gLSAoKGVtYl9wYXRfa1tKMktfUTFdID4+IGkpICYgMSk7CisgICAgICAgICAg ICBtW0oyS19RMl1baV0gPSBzaWdtYV9uWzQgKiBxMiArIGldICogVVtKMktfUTJdIC0gKChlbWJf cGF0X2tbSjJLX1EyXSA+PiBpKSAmIDEpOworICAgICAgICB9CisKKyAgICAgICAgcmVjb3Zlcl9t YWdfc2duKG1hZ19zZ25fc3RyZWFtLCBKMktfUTEsIHExLCBtX24sIGtub3duXzEsIGVtYl9wYXRf MSwgdiwgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEUsIG11X24sIERjdXAsIFBjdXAsIHBM U0IpOworCisgICAgICAgIHJlY292ZXJfbWFnX3NnbihtYWdfc2duX3N0cmVhbSwgSjJLX1EyLCBx MiwgbV9uLCBrbm93bl8xLCBlbWJfcGF0XzEsIHYsIG0sCisgICAgICAgICAgICAgICAgICAgICAg ICBFLCBtdV9uLCBEY3VwLCBQY3VwLCBwTFNCKTsKKworICAgICAgICBxICs9IDI7IC8vIE1vdmUg dG8gdGhlIG5leHQgcXVhZCBwYWlyCisgICAgfQorCisgICAgaWYgKHF1YWRfd2lkdGggJSAyID09 IDEpIHsKKyAgICAgICAgcTEgPSBxOworCisgICAgICAgIGlmICgocmV0ID0ganBlZzIwMDBfZGVj b2RlX3NpZ19lbWIocywgbWVsX3N0YXRlLCBtZWxfc3RyZWFtLCB2bGNfc3RyZWFtLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY19jeHRfdmxjX3RhYmxlMCwg RGN1cCwgc2lnX3BhdCwgcmVzX29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbWJfcGF0X2ssIGVtYl9wYXRfMSwgSjJLX1ExLCBjb250ZXh0LCBMY3VwLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBjdXApKSA8IDApCisg ICAgICAgICAgICBnb3RvIGZyZWU7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBp KyspCisgICAgICAgICAgICBzaWdtYV9uWzQgKiBxMSArIGldID0gKHNpZ19wYXRbSjJLX1ExXSA+ PiBpKSAmIDE7CisKKyAgICAgICAgdVtKMktfUTFdID0gMDsKKworICAgICAgICBpZiAocmVzX29m ZltKMktfUTFdID09IDEpIHsKKyAgICAgICAgICAgIHVfcGZ4W0oyS19RMV0gPSB2bGNfZGVjb2Rl X3VfcHJlZml4KHZsY19zdHJlYW0sIHZsY19idWYpOworICAgICAgICAgICAgdV9zZnhbSjJLX1Ex XSA9IHZsY19kZWNvZGVfdV9zdWZmaXgodmxjX3N0cmVhbSwgdV9wZnhbSjJLX1ExXSwgdmxjX2J1 Zik7CisgICAgICAgICAgICB1X2V4dFtKMktfUTFdID0gdmxjX2RlY29kZV91X2V4dGVuc2lvbih2 bGNfc3RyZWFtLCB1X3NmeFtKMktfUTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgIHVbSjJLX1Ex XSA9IHVfcGZ4W0oyS19RMV0gKyB1X3NmeFtKMktfUTFdICsgKHVfZXh0W0oyS19RMV0gKiA0KTsK KyAgICAgICAgfQorCisgICAgICAgIFVbSjJLX1ExXSA9IGthcHBhW0oyS19RMV0gKyB1W0oyS19R MV07CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgICAgICBt W0oyS19RMV1baV0gPSBzaWdtYV9uWzQgKiBxMSArIGldICogVVtKMktfUTFdIC0gKChlbWJfcGF0 X2tbSjJLX1ExXSA+PiBpKSAmIDEpOworCisgICAgICAgIHJlY292ZXJfbWFnX3NnbihtYWdfc2du X3N0cmVhbSwgSjJLX1ExLCBxMSwgbV9uLCBrbm93bl8xLCBlbWJfcGF0XzEsIHYsIG0sCisgICAg ICAgICAgICAgICAgICAgICAgICBFLCBtdV9uLCBEY3VwLCBQY3VwLCBwTFNCKTsKKworICAgICAg ICBxKys7IC8vIG1vdmUgdG8gbmV4dCBxdWFkIHBhaXIKKyAgICB9CisKKyAgICAvKioKKyAgICAg KiBJbml0aWFsIGxpbmUgcGFpciBlbmQuIEFzIGFuIG9wdGltaXphdGlvbiwgd2UgY2FuIHJlcGxh Y2UgbW9kdWxvCisgICAgICogb3BlcmF0aW9ucyB3aXRoIGNoZWNraW5nIGlmIGEgbnVtYmVyIGlz IGRpdmlzaWJsZSAsIHNpbmNlIHRoYXQncyB0aGUgb25seQorICAgICAqIHRoaW5nIHdlIG5lZWQu IFRoaXMgaXMgcGFpcmVkIHdpdGggaXNfZGl2aXNpYmxlLiBDcmVkaXRzIHRvIERhbmllbCBMZW1p cmUKKyAgICAgKiBibG9nIHBvc3QgWzFdLgorICAgICAqCisgICAgICogWzFdCisgICAgICogaHR0 cHM6Ly9sZW1pcmUubWUvYmxvZy8yMDE5LzAyLzA4L2Zhc3Rlci1yZW1haW5kZXJzLXdoZW4tdGhl LWRpdmlzb3ItaXMtYS1jb25zdGFudC1iZWF0aW5nLWNvbXBpbGVycy1hbmQtbGliZGl2aWRlLwor ICAgICAqCisgICAgICogSXQncyBVQiBvbiB6ZXJvLCBidXQgdGhlIHNwZWMgZG9lc24ndCBhbGxv dyBhIHF1YWQgYmVpbmcgemVybywgc28gd2UKKyAgICAgKiBlcnJvciBvdXQgZWFybHkgaW4gY2Fz ZSB0aGF0J3MgdGhlIGNhc2UuCisgICAgICovCisgICAgYyA9IHByZWNvbXB1dGVfYyhxdWFkX3dp ZHRoKTsKKworICAgIGZvciAoaW50IHJvdyA9IDE7IHJvdyA8IHF1YWRfaGVpZ2h0OyByb3crKykg eworICAgICAgICB3aGlsZSAoKHEgLSAocm93ICogcXVhZF93aWR0aCkpIDwgcXVhZF93aWR0aCAt IDEgJiYgcSA8IChxdWFkX2hlaWdodCAqIHF1YWRfd2lkdGgpKSB7CisgICAgICAgICAgICBxMSA9 IHE7CisgICAgICAgICAgICBxMiA9IHEgKyAxOworICAgICAgICAgICAgY29udGV4dDEgID0gc2ln bWFfbls0ICogKHExIC0gcXVhZF93aWR0aCkgKyAxXTsKKyAgICAgICAgICAgIGNvbnRleHQxICs9 IHNpZ21hX25bNCAqIChxMSAtIHF1YWRfd2lkdGgpICsgM10gPDwgMjsgICAgICAgICAgICAgIC8v IG5lCisKKyAgICAgICAgICAgIGlmICghaXNfZGl2aXNpYmxlKHExLCBjKSkgeworICAgICAgICAg ICAgICAgIGNvbnRleHQxIHw9IHNpZ21hX25bNCAqIChxMSAtIHF1YWRfd2lkdGgpIC0gMV07ICAg ICAgICAgICAgICAgLy8gbncKKyAgICAgICAgICAgICAgICBjb250ZXh0MSArPSAoc2lnbWFfbls0 ICogcTEgLSAxXSB8IHNpZ21hX25bNCAqIHExIC0gMl0pIDw8IDE7IC8vIHN3IHwgcQorICAgICAg ICAgICAgfQorICAgICAgICAgICAgaWYgKCFpc19kaXZpc2libGUocTEgKyAxLCBjKSkKKyAgICAg ICAgICAgICAgICBjb250ZXh0MSB8PSBzaWdtYV9uWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDVd IDw8IDI7CisKKyAgICAgICAgICAgIGlmICgocmV0ID0ganBlZzIwMDBfZGVjb2RlX3NpZ19lbWIo cywgbWVsX3N0YXRlLCBtZWxfc3RyZWFtLCB2bGNfc3RyZWFtLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNfY3h0X3ZsY190YWJsZTEsIERjdXAsIHNp Z19wYXQsIHJlc19vZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVtYl9wYXRfaywgZW1iX3BhdF8xLCBKMktfUTEsIGNvbnRleHQxLCBMY3VwLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQY3VwKSkKKyAgICAg ICAgICAgICAgICA8IDApCisgICAgICAgICAgICAgICAgZ290byBmcmVlOworCisgICAgICAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgICAgICAgICBzaWdtYV9uWzQg KiBxMSArIGldID0gKHNpZ19wYXRbSjJLX1ExXSA+PiBpKSAmIDE7CisKKyAgICAgICAgICAgIGNv bnRleHQyICA9IHNpZ21hX25bNCAqIChxMiAtIHF1YWRfd2lkdGgpICsgMV07CisgICAgICAgICAg ICBjb250ZXh0MiArPSBzaWdtYV9uWzQgKiAocTIgLSBxdWFkX3dpZHRoKSArIDNdIDw8IDI7CisK KyAgICAgICAgICAgIGlmICghaXNfZGl2aXNpYmxlKHEyLCBjKSkgeworICAgICAgICAgICAgICAg IGNvbnRleHQyIHw9IHNpZ21hX25bNCAqIChxMiAtIHF1YWRfd2lkdGgpIC0gMV07CisgICAgICAg ICAgICAgICAgY29udGV4dDIgKz0gKHNpZ21hX25bNCAqIHEyIC0gMV0gfCBzaWdtYV9uWzQgKiBx MiAtIDJdKSA8PCAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFpc19kaXZpc2li bGUocTIgKyAxLCBjKSkKKyAgICAgICAgICAgICAgICBjb250ZXh0MiB8PSBzaWdtYV9uWzQgKiAo cTIgLSBxdWFkX3dpZHRoKSArIDVdIDw8IDI7CisKKyAgICAgICAgICAgIGlmICgocmV0ID0ganBl ZzIwMDBfZGVjb2RlX3NpZ19lbWIocywgbWVsX3N0YXRlLCBtZWxfc3RyZWFtLCB2bGNfc3RyZWFt LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNfY3h0 X3ZsY190YWJsZTEsIERjdXAsIHNpZ19wYXQsIHJlc19vZmYsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYl9wYXRfaywgZW1iX3BhdF8xLCBKMktfUTIs IGNvbnRleHQyLCBMY3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQY3VwKSkKKyAgICAgICAgICAgICAgICA8IDApCisgICAgICAgICAgICAgICAgZ290 byBmcmVlOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAg ICAgICAgICAgICBzaWdtYV9uWzQgKiBxMiArIGldID0gKHNpZ19wYXRbSjJLX1EyXSA+PiBpKSAm IDE7CisKKyAgICAgICAgICAgIHVbSjJLX1ExXSA9IDA7CisgICAgICAgICAgICB1W0oyS19RMl0g PSAwOworCisgICAgICAgICAgICBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3YXJkcyh2bGNf c3RyZWFtLCB2bGNfYnVmKTsKKworICAgICAgICAgICAgaWYgKHJlc19vZmZbSjJLX1ExXSA9PSAx ICYmIHJlc19vZmZbSjJLX1EyXSA9PSAxKSB7CisgICAgICAgICAgICAgICAgdV9wZnhbSjJLX1Ex XSA9IHZsY19kZWNvZGVfdV9wcmVmaXgodmxjX3N0cmVhbSwgdmxjX2J1Zik7CisgICAgICAgICAg ICAgICAgdV9wZnhbSjJLX1EyXSA9IHZsY19kZWNvZGVfdV9wcmVmaXgodmxjX3N0cmVhbSwgdmxj X2J1Zik7CisKKyAgICAgICAgICAgICAgICB1X3NmeFtKMktfUTFdID0gdmxjX2RlY29kZV91X3N1 ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtKMktfUTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgICAg ICB1X3NmeFtKMktfUTJdID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtK MktfUTJdLCB2bGNfYnVmKTsKKworICAgICAgICAgICAgICAgIHVfZXh0W0oyS19RMV0gPSB2bGNf ZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W0oyS19RMV0sIHZsY19idWYpOwor ICAgICAgICAgICAgICAgIHVfZXh0W0oyS19RMl0gPSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZs Y19zdHJlYW0sIHVfc2Z4W0oyS19RMl0sIHZsY19idWYpOworCisgICAgICAgICAgICAgICAgdVtK MktfUTFdID0gdV9wZnhbSjJLX1ExXSArIHVfc2Z4W0oyS19RMV0gKyAodV9leHRbSjJLX1ExXSA8 PCAyKTsKKyAgICAgICAgICAgICAgICB1W0oyS19RMl0gPSB1X3BmeFtKMktfUTJdICsgdV9zZnhb SjJLX1EyXSArICh1X2V4dFtKMktfUTJdIDw8IDIpOworCisgICAgICAgICAgICB9IGVsc2UgaWYg KHJlc19vZmZbSjJLX1ExXSA9PSAxIHx8IHJlc19vZmZbSjJLX1EyXSA9PSAxKSB7CisgICAgICAg ICAgICAgICAgdWludDhfdCBwb3MgPSByZXNfb2ZmW0oyS19RMV0gPT0gMSA/IDAgOiAxOworCisg ICAgICAgICAgICAgICAgdV9wZnhbcG9zXSA9IHZsY19kZWNvZGVfdV9wcmVmaXgodmxjX3N0cmVh bSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAgdV9zZnhbcG9zXSA9IHZsY19kZWNvZGVfdV9z dWZmaXgodmxjX3N0cmVhbSwgdV9wZnhbcG9zXSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAg dV9leHRbcG9zXSA9IHZsY19kZWNvZGVfdV9leHRlbnNpb24odmxjX3N0cmVhbSwgdV9zZnhbcG9z XSwgdmxjX2J1Zik7CisKKyAgICAgICAgICAgICAgICB1W3Bvc10gPSB1X3BmeFtwb3NdICsgdV9z ZnhbcG9zXSArICh1X2V4dFtwb3NdIDw8IDIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg c3AgPSBzaWdfcGF0W0oyS19RMV07CisKKyAgICAgICAgICAgIGdhbW1hW0oyS19RMV0gPSAxOwor CisgICAgICAgICAgICBpZiAoc3AgPT0gMCB8fCBzcCA9PSAxIHx8IHNwID09IDIgfHwgc3AgPT0g NCB8fCBzcCA9PSA4KQorICAgICAgICAgICAgICAgIGdhbW1hW0oyS19RMV0gPSAwOworCisgICAg ICAgICAgICBzcCA9IHNpZ19wYXRbSjJLX1EyXTsKKworICAgICAgICAgICAgZ2FtbWFbSjJLX1Ey XSA9IDE7CisKKyAgICAgICAgICAgIGlmIChzcCA9PSAwIHx8IHNwID09IDEgfHwgc3AgPT0gMiB8 fCBzcCA9PSA0IHx8IHNwID09IDgpCisgICAgICAgICAgICAgICAgZ2FtbWFbSjJLX1EyXSA9IDA7 CisKKyAgICAgICAgICAgIEVfbltKMktfUTFdID0gRVs0ICogKHExIC0gcXVhZF93aWR0aCkgKyAx XTsKKyAgICAgICAgICAgIEVfbltKMktfUTJdID0gRVs0ICogKHEyIC0gcXVhZF93aWR0aCkgKyAx XTsKKworICAgICAgICAgICAgRV9uZVtKMktfUTFdID0gRVs0ICogKHExIC0gcXVhZF93aWR0aCkg KyAzXTsKKyAgICAgICAgICAgIEVfbmVbSjJLX1EyXSA9IEVbNCAqIChxMiAtIHF1YWRfd2lkdGgp ICsgM107CisKKyAgICAgICAgICAgIEVfbndbSjJLX1ExXSA9ICghaXNfZGl2aXNpYmxlKHExLCBj KSkgKiBFW0ZGTUFYKCg0ICogKHExIC0gcXVhZF93aWR0aCkgLSAxKSwgMCldOworICAgICAgICAg ICAgRV9ud1tKMktfUTJdID0gKCFpc19kaXZpc2libGUocTIsIGMpKSAqIEVbRkZNQVgoKDQgKiAo cTIgLSBxdWFkX3dpZHRoKSAtIDEpLCAwKV07CisKKyAgICAgICAgICAgIEVfbmZbSjJLX1ExXSA9 ICghaXNfZGl2aXNpYmxlKHExICsgMSwgYykpICogRVs0ICogKHExIC0gcXVhZF93aWR0aCkgKyA1 XTsKKyAgICAgICAgICAgIEVfbmZbSjJLX1EyXSA9ICghaXNfZGl2aXNpYmxlKHEyICsgMSwgYykp ICogRVs0ICogKHEyIC0gcXVhZF93aWR0aCkgKyA1XTsKKworICAgICAgICAgICAgbWF4X2VbSjJL X1ExXSA9IEZGTUFYKEVfbndbSjJLX1ExXSwgRkZNQVgzKEVfbltKMktfUTFdLCBFX25lW0oyS19R MV0sIEVfbmZbSjJLX1ExXSkpOworICAgICAgICAgICAgbWF4X2VbSjJLX1EyXSA9IEZGTUFYKEVf bndbSjJLX1EyXSwgRkZNQVgzKEVfbltKMktfUTJdLCBFX25lW0oyS19RMl0sIEVfbmZbSjJLX1Ey XSkpOworCisgICAgICAgICAgICBrYXBwYVtKMktfUTFdID0gRkZNQVgoMSwgZ2FtbWFbSjJLX1Ex XSAqIChtYXhfZVtKMktfUTFdIC0gMSkpOworICAgICAgICAgICAga2FwcGFbSjJLX1EyXSA9IEZG TUFYKDEsIGdhbW1hW0oyS19RMl0gKiAobWF4X2VbSjJLX1EyXSAtIDEpKTsKKworICAgICAgICAg ICAgVVtKMktfUTFdID0ga2FwcGFbSjJLX1ExXSArIHVbSjJLX1ExXTsKKyAgICAgICAgICAgIFVb SjJLX1EyXSA9IGthcHBhW0oyS19RMl0gKyB1W0oyS19RMl07CisKKyAgICAgICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbVtKMktfUTFdW2ldID0g c2lnbWFfbls0ICogcTEgKyBpXSAqIFVbSjJLX1ExXSAtICgoZW1iX3BhdF9rW0oyS19RMV0gPj4g aSkgJiAxKTsKKyAgICAgICAgICAgICAgICBtW0oyS19RMl1baV0gPSBzaWdtYV9uWzQgKiBxMiAr IGldICogVVtKMktfUTJdIC0gKChlbWJfcGF0X2tbSjJLX1EyXSA+PiBpKSAmIDEpOworICAgICAg ICAgICAgfQorICAgICAgICAgICAgcmVjb3Zlcl9tYWdfc2duKG1hZ19zZ25fc3RyZWFtLCBKMktf UTEsIHExLCBtX24sIGtub3duXzEsIGVtYl9wYXRfMSwgdiwgbSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFLCBtdV9uLCBEY3VwLCBQY3VwLCBwTFNCKTsKKworICAgICAgICAgICAgcmVj b3Zlcl9tYWdfc2duKG1hZ19zZ25fc3RyZWFtLCBKMktfUTIsIHEyLCBtX24sIGtub3duXzEsIGVt Yl9wYXRfMSwgdiwgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFLCBtdV9uLCBEY3Vw LCBQY3VwLCBwTFNCKTsKKworICAgICAgICAgICAgcSArPSAyOyAvLyBNb3ZlIHRvIHRoZSBuZXh0 IHF1YWQgcGFpcgorICAgICAgICB9CisKKyAgICAgICAgaWYgKHF1YWRfd2lkdGggJSAyID09IDEp IHsKKyAgICAgICAgICAgIHExID0gcTsKKworICAgICAgICAgICAgLyogY2FsY3VsYXRlIGNvbnRl eHQgZm9yIGN1cnJlbnQgcXVhZCAqLworICAgICAgICAgICAgY29udGV4dDEgID0gc2lnbWFfbls0 ICogKHExIC0gcXVhZF93aWR0aCkgKyAxXTsKKyAgICAgICAgICAgIGNvbnRleHQxICs9IChzaWdt YV9uWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDNdIDw8IDIpOworCisgICAgICAgICAgICBpZiAo IWlzX2RpdmlzaWJsZShxMSwgYykpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0MSB8PSBzaWdt YV9uWzQgKiAocTEgLSBxdWFkX3dpZHRoKSAtIDFdOworICAgICAgICAgICAgICAgIGNvbnRleHQx ICs9IChzaWdtYV9uWzQgKiBxMSAtIDFdIHwgc2lnbWFfbls0ICogcTEgLSAyXSkgPDwgMTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaXNfZGl2aXNpYmxlKHExICsgMSwgYykpCisg ICAgICAgICAgICAgICAgY29udGV4dDEgfD0gc2lnbWFfbls0ICogKHExIC0gcXVhZF93aWR0aCkg KyA1XSA8PCAyOworCisgICAgICAgICAgICBpZiAoKHJldCA9IGpwZWcyMDAwX2RlY29kZV9zaWdf ZW1iKHMsIG1lbF9zdGF0ZSwgbWVsX3N0cmVhbSwgdmxjX3N0cmVhbSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjX2N4dF92bGNfdGFibGUxLCBEY3Vw LCBzaWdfcGF0LCByZXNfb2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbWJfcGF0X2ssIGVtYl9wYXRfMSwgSjJLX1ExLCBjb250ZXh0MSwgTGN1cCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGN1cCkpIDwg MCkKKyAgICAgICAgICAgICAgICBnb3RvIGZyZWU7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgNDsgaSsrKQorICAgICAgICAgICAgICAgIHNpZ21hX25bNCAqIHExICsgaV0gPSAo c2lnX3BhdFtKMktfUTFdID4+IGkpICYgMTsKKworICAgICAgICAgICAgdVtKMktfUTFdID0gMDsK KworICAgICAgICAgICAgLyogUmVjb3ZlciBtYWdfc2duIHZhbHVlICovCisgICAgICAgICAgICBp ZiAocmVzX29mZltKMktfUTFdID09IDEpIHsKKyAgICAgICAgICAgICAgICB1X3BmeFtKMktfUTFd ID0gdmxjX2RlY29kZV91X3ByZWZpeCh2bGNfc3RyZWFtLCB2bGNfYnVmKTsKKyAgICAgICAgICAg ICAgICB1X3NmeFtKMktfUTFdID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3Bm eFtKMktfUTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgICAgICB1X2V4dFtKMktfUTFdID0gdmxj X2RlY29kZV91X2V4dGVuc2lvbih2bGNfc3RyZWFtLCB1X3NmeFtKMktfUTFdLCB2bGNfYnVmKTsK KworICAgICAgICAgICAgICAgIHVbSjJLX1ExXSA9IHVfcGZ4W0oyS19RMV0gKyB1X3NmeFtKMktf UTFdICsgKHVfZXh0W0oyS19RMV0gPDwgMik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg IHNwID0gc2lnX3BhdFtKMktfUTFdOworCisgICAgICAgICAgICBnYW1tYVtKMktfUTFdID0gMTsK KworICAgICAgICAgICAgaWYgKHNwID09IDAgfHwgc3AgPT0gMSB8fCBzcCA9PSAyIHx8IHNwID09 IDQgfHwgc3AgPT0gOCkKKyAgICAgICAgICAgICAgICBnYW1tYVtKMktfUTFdID0gMDsKKworICAg ICAgICAgICAgRV9uW0oyS19RMV0gPSBFWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDFdOworCisg ICAgICAgICAgICBFX25lW0oyS19RMV0gPSBFWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDNdOwor CisgICAgICAgICAgICBFX253W0oyS19RMV0gPSAoIWlzX2RpdmlzaWJsZShxMSwgYykpICogRVtG Rk1BWCgoNCAqIChxMSAtIHF1YWRfd2lkdGgpIC0gMSksIDApXTsKKworICAgICAgICAgICAgRV9u ZltKMktfUTFdID0gKCFpc19kaXZpc2libGUocTEgKyAxLCBjKSkgKiBFWzQgKiAocTEgLSBxdWFk X3dpZHRoKSArIDVdOworCisgICAgICAgICAgICBtYXhfZVtKMktfUTFdID0gRkZNQVgoRV9ud1tK MktfUTFdLCBGRk1BWDMoRV9uW0oyS19RMV0sIEVfbmVbSjJLX1ExXSwgRV9uZltKMktfUTFdKSk7 CisKKyAgICAgICAgICAgIGthcHBhW0oyS19RMV0gPSBGRk1BWCgxLCBnYW1tYVtKMktfUTFdICog KG1heF9lW0oyS19RMV0gLSAxKSk7CisKKyAgICAgICAgICAgIFVbSjJLX1ExXSA9IGthcHBhW0oy S19RMV0gKyB1W0oyS19RMV07CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsg aSsrKQorICAgICAgICAgICAgICAgIG1bSjJLX1ExXVtpXSA9IHNpZ21hX25bNCAqIHExICsgaV0g KiBVW0oyS19RMV0gLSAoKGVtYl9wYXRfa1tKMktfUTFdID4+IGkpICYgMSk7CisKKyAgICAgICAg ICAgIHJlY292ZXJfbWFnX3NnbihtYWdfc2duX3N0cmVhbSwgSjJLX1ExLCBxMSwgbV9uLCBrbm93 bl8xLCBlbWJfcGF0XzEsIHYsIG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRSwgbXVf biwgRGN1cCwgUGN1cCwgcExTQik7CisgICAgICAgICAgICBxICs9IDE7CisgICAgICAgIH0KKyAg ICB9CisKKyAgICAvLyBjb252ZXJ0IHRvIHJhc3Rlci1zY2FuCisgICAgZm9yIChpbnQgeSA9IDA7 IHkgPCBxdWFkX2hlaWdodDsgeSsrKSB7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgcXVh ZF93aWR0aDsgeCsrKSB7CisgICAgICAgICAgICBpbnQgajEsIGoyOworICAgICAgICAgICAgaW50 IHgxLCB4MiAsIHgzOworCisgICAgICAgICAgICBqMSA9IDIgKiB5OworICAgICAgICAgICAgajIg PSAyICogeDsKKworICAgICAgICAgICAgc2FtcGxlX2J1ZltqMiArIChqMSAqIHdpZHRoKV0gPSAo aW50MzJfdCkqbXU7CisgICAgICAgICAgICBqcGVnMjAwMF9tb2RpZnlfc3RhdGUoajEsIGoyLCB3 aWR0aCwgKnNpZ21hLCBibG9ja19zdGF0ZXMpOworICAgICAgICAgICAgc2lnbWEgKz0gMTsKKyAg ICAgICAgICAgIG11ICs9IDE7CisKKyAgICAgICAgICAgIHgxID0geSAhPSBxdWFkX2hlaWdodCAt IDEgfHwgaXNfYm9yZGVyX3kgPT0gMDsKKyAgICAgICAgICAgIHNhbXBsZV9idWZbajIgKyAoKGox ICsgMSkgKiB3aWR0aCldID0gKChpbnQzMl90KSptdSkgKiB4MTsKKyAgICAgICAgICAgIGpwZWcy MDAwX21vZGlmeV9zdGF0ZShqMSArIDEsIGoyLCB3aWR0aCwgKCpzaWdtYSkgKiB4MSwgYmxvY2tf c3RhdGVzKTsKKyAgICAgICAgICAgIHNpZ21hICs9IDE7CisgICAgICAgICAgICBtdSArPSAxOwor CisgICAgICAgICAgICB4MiA9IHggIT0gcXVhZF93aWR0aCAtIDEgfHwgaXNfYm9yZGVyX3ggPT0g MDsKKyAgICAgICAgICAgIHNhbXBsZV9idWZbKGoyICsgMSkgKyAoajEgKiB3aWR0aCldID0gKChp bnQzMl90KSptdSkgKiB4MjsKKyAgICAgICAgICAgIGpwZWcyMDAwX21vZGlmeV9zdGF0ZShqMSwg ajIgKyAxLCB3aWR0aCwgKCpzaWdtYSkgKiB4MiwgYmxvY2tfc3RhdGVzKTsKKyAgICAgICAgICAg IHNpZ21hICs9IDE7CisgICAgICAgICAgICBtdSArPSAxOworCisgICAgICAgICAgICB4MyA9IHgx IHwgeDI7CisgICAgICAgICAgICBzYW1wbGVfYnVmWyhqMiArIDEpICsgKGoxICsgMSkgKiB3aWR0 aF0gPSAoKGludDMyX3QpKm11KSAqIHgzOworICAgICAgICAgICAganBlZzIwMDBfbW9kaWZ5X3N0 YXRlKGoxICsgMSwgajIgKyAxLCB3aWR0aCwgKCpzaWdtYSkgKiB4MywgYmxvY2tfc3RhdGVzKTsK KyAgICAgICAgICAgIHNpZ21hICs9IDE7CisgICAgICAgICAgICBtdSArPSAxOworICAgICAgICB9 CisgICAgfQorICAgIHJldCA9IDE7CitmcmVlOgorICAgIGF2X2ZyZWVwKCZzaWdtYV9uKTsKKyAg ICBhdl9mcmVlcCgmRSk7CisgICAgYXZfZnJlZXAoJm11X24pOworICAgIHJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyB2b2lkIGpwZWcyMDAwX2NhbGNfbWJyKHVpbnQ4X3QgKm1iciwgY29uc3QgdWlu dDE2X3QgaSwgY29uc3QgdWludDE2X3QgaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHVpbnQzMl90IG1icl9pbmZvLCB1aW50OF90IGNhdXNhbF9jb25kLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYmxvY2tfc3RhdGVzLCBpbnQgd2lkdGgpCit7 CisgICAgaW50IGxvY2FsX21iciA9IDA7CisKKyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0 X3N0YXRlKGkgLSAxLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1NJR01BLCBibG9ja19zdGF0ZXMp OworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAwLCB3aWR0 aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcyk7CisgICAgbG9jYWxfbWJyIHw9IGpwZWcy MDAwX2dldF9zdGF0ZShpIC0gMSwgaiArIDEsIHdpZHRoLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tf c3RhdGVzKTsKKworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDAsIGog LSAxLCB3aWR0aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcyk7CisgICAgbG9jYWxfbWJy IHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMCwgaiArIDEsIHdpZHRoLCBIVF9TSElGVF9TSUdN QSwgYmxvY2tfc3RhdGVzKTsKKworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUo aSArIDEsIGogLSAxLCB3aWR0aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcykgKiBjYXVz YWxfY29uZDsKKyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBqICsg MCwgd2lkdGgsIEhUX1NISUZUX1NJR01BLCBibG9ja19zdGF0ZXMpICogY2F1c2FsX2NvbmQ7Cisg ICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMSwgaiArIDEsIHdpZHRoLCBI VF9TSElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKSAqIGNhdXNhbF9jb25kOworCisgICAgbG9jYWxf bWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpIC0gMSwgaiAtIDEsIHdpZHRoLCBIVF9TSElGVF9S RUYsICAgYmxvY2tfc3RhdGVzKSAqCisgICAgICAgICAgICAgICAgIGpwZWcyMDAwX2dldF9zdGF0 ZShpIC0gMSwgaiAtIDEsIHdpZHRoLCBIVF9TSElGVF9TQ0FOLCAgYmxvY2tfc3RhdGVzKTsKKyAg ICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgLSAxLCBqICsgMCwgd2lkdGgsIEhU X1NISUZUX1JFRiwgICBibG9ja19zdGF0ZXMpICoKKyAgICAgICAgICAgICAgICAganBlZzIwMDBf Z2V0X3N0YXRlKGkgLSAxLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1NDQU4sICBibG9ja19zdGF0 ZXMpOworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAxLCB3 aWR0aCwgSFRfU0hJRlRfUkVGLCAgIGJsb2NrX3N0YXRlcykgKgorICAgICAgICAgICAgICAgICBq cGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAxLCB3aWR0aCwgSFRfU0hJRlRfU0NBTiwgIGJs b2NrX3N0YXRlcyk7CisKKyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAw LCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1JFRiwgICBibG9ja19zdGF0ZXMpICoKKyAgICAgICAg ICAgICAgICAganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAwLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZU X1NDQU4sICBibG9ja19zdGF0ZXMpOworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3Rh dGUoaSArIDAsIGogKyAxLCB3aWR0aCwgSFRfU0hJRlRfUkVGLCAgIGJsb2NrX3N0YXRlcykgKgor ICAgICAgICAgICAgICAgICBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDAsIGogKyAxLCB3aWR0aCwg SFRfU0hJRlRfU0NBTiwgIGJsb2NrX3N0YXRlcyk7CisKKyAgICBsb2NhbF9tYnIgfD0ganBlZzIw MDBfZ2V0X3N0YXRlKGkgKyAxLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1JFRiwgIGJsb2NrX3N0 YXRlcykgKgorICAgICAgICAgICAgICAgICBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDEsIGogLSAx LCB3aWR0aCwgSFRfU0hJRlRfU0NBTiwgYmxvY2tfc3RhdGVzKSAqIGNhdXNhbF9jb25kOworICAg IGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDEsIGogKyAwLCB3aWR0aCwgSFRf U0hJRlRfUkVGLCAgYmxvY2tfc3RhdGVzKSAqCisgICAgICAgICAgICAgICAgIGpwZWcyMDAwX2dl dF9zdGF0ZShpICsgMSwgaiArIDAsIHdpZHRoLCBIVF9TSElGVF9TQ0FOLCBibG9ja19zdGF0ZXMp ICogY2F1c2FsX2NvbmQ7CisgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpICsg MSwgaiArIDEsIHdpZHRoLCBIVF9TSElGVF9SRUYsICBibG9ja19zdGF0ZXMpICoKKyAgICAgICAg ICAgICAgICAganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBqICsgMSwgd2lkdGgsIEhUX1NISUZU X1NDQU4sIGJsb2NrX3N0YXRlcykgKiBjYXVzYWxfY29uZDsKKworICAgICptYnIgfD0gbG9jYWxf bWJyOworfQorCitzdGF0aWMgdm9pZCBqcGVnMjAwMF9wcm9jZXNzX3N0cmlwZXNfYmxvY2soU3Rh dGVWYXJzICpzaWdfcHJvcCwgaW50IGlfcywgaW50IGpfcywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBzdHJpZGUs IGludCBwTFNCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dDMyX3QgKnNhbXBsZV9idWYsIHVpbnQ4X3QgKmJsb2NrX3N0YXRlcywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICptYWdyZWZfc2VnbWVudCwgdWlu dDMyX3QgbWFncmVmX2xlbmd0aCkKK3sKKyAgICBmb3IgKGludCBqID0gal9zOyBqIDwgal9zICsg d2lkdGg7IGorKykgeworICAgICAgICB1aW50MzJfdCAgbWJyX2luZm8gPSAwOworICAgICAgICBm b3IgKGludCBpID0gaV9zOyBpIDwgaV9zICsgaGVpZ2h0OyBpKyspIHsKKyAgICAgICAgICAgIGlu dCBtb2RpZnlfc3RhdGUsIGNvbmQ7CisgICAgICAgICAgICB1aW50OF90IGJpdDsKKyAgICAgICAg ICAgIHVpbnQ4X3QgY2F1c2FsX2NvbmQgPSBpICE9IChpX3MgKyBoZWlnaHQgLSAxKTsKKyAgICAg ICAgICAgIGludDMyX3QgKnNwID0gJnNhbXBsZV9idWZbaiArIChpICogKHN0cmlkZSAtIDIpKV07 CisgICAgICAgICAgICB1aW50OF90IG1iciA9IDA7CisKKyAgICAgICAgICAgIGlmIChqcGVnMjAw MF9nZXRfc3RhdGUoaSwgaiwgc3RyaWRlIC0gMiwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRl cykgPT0gMCkKKyAgICAgICAgICAgICAgICBqcGVnMjAwMF9jYWxjX21icigmbWJyLCBpLCBqLCBt YnJfaW5mbyAmIDB4MUVGLCBjYXVzYWxfY29uZCwgYmxvY2tfc3RhdGVzLCBzdHJpZGUgLSAyKTsK KyAgICAgICAgICAgIG1icl9pbmZvID4+PSAzOworICAgICAgICAgICAgY29uZCA9IG1iciAhPSAw OworICAgICAgICAgICAgYml0ID0ganBlZzIwMDBfcGVla19iaXQoc2lnX3Byb3AsIG1hZ3JlZl9z ZWdtZW50LCBtYWdyZWZfbGVuZ3RoKTsKKyAgICAgICAgICAgICpzcCB8PSAoYml0ICogY29uZCkg PDwgcExTQjsKKyAgICAgICAgICAgIHNpZ19wcm9wLT5iaXRzIC09IGNvbmQ7CisgICAgICAgICAg ICBtb2RpZnlfc3RhdGUgPSAoKCgxIDw8IEhUX1NISUZUX1JFRl9JTkQpIHwgKDEgPDwgSFRfU0hJ RlRfUkVGKSkgKiBjb25kKSB8IDEgPDwgSFRfU0hJRlRfU0NBTjsKKyAgICAgICAgICAgIGpwZWcy MDAwX21vZGlmeV9zdGF0ZShpLCBqLCBzdHJpZGUgLSAyLCBtb2RpZnlfc3RhdGUsIGJsb2NrX3N0 YXRlcyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qKgorICogU2VlIHByb2NlZHVyZSBkZWNv ZGVTaWdQcm9wTWFnIGF0IFJlYy4gSVRVLVQgVC44MTQsIDcuNC4KKyovCithdl9ub2lubGluZQor c3RhdGljIHZvaWQganBlZzIwMDBfZGVjb2RlX3NpZ3Byb3Bfc2VnbWVudChKcGVnMjAwMENibGsg KmNibGssIHVpbnQxNl90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MTZfdCBoZWlnaHQsIHVpbnQ4X3QgKm1hZ3JlZl9zZWdtZW50LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBtYWdyZWZf bGVuZ3RoLCB1aW50OF90IHBMU0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludDMyX3QgKnNhbXBsZV9idWYsIHVpbnQ4X3QgKmJsb2NrX3N0YXRlcykKK3sK KyAgICBTdGF0ZVZhcnMgc3BfZGVjOworCisgICAgY29uc3QgdWludDE2X3QgbnVtX3Zfc3RyaXBl ID0gaGVpZ2h0IC8gNDsKKyAgICBjb25zdCB1aW50MTZfdCBudW1faF9zdHJpcGUgPSB3aWR0aCAv IDQ7CisgICAgaW50IGJfd2lkdGggICAgICAgICAgICAgICAgID0gNDsKKyAgICBpbnQgYl9oZWln aHQgICAgICAgICAgICAgICAgPSA0OworICAgIGludCBzdHJpZGUgICAgICAgICAgICAgICAgICA9 IHdpZHRoICsgMjsKKworICAgIGludCBsYXN0X3dpZHRoOworICAgIHVpbnQxNl90IGkgPSAwLCBq ID0gMDsKKworICAgIGpwZWcyMDAwX2luaXRfemVybygmc3BfZGVjKTsKKworICAgIGZvciAoaW50 IG4xID0gMDsgbjEgPCBudW1fdl9zdHJpcGU7IG4xKyspIHsKKyAgICAgICAgaiA9IDA7CisgICAg ICAgIGZvciAoaW50IG4yID0gMDsgbjIgPCBudW1faF9zdHJpcGU7IG4yKyspIHsKKyAgICAgICAg ICAgIGpwZWcyMDAwX3Byb2Nlc3Nfc3RyaXBlc19ibG9jaygmc3BfZGVjLCBpLCBqLCBiX3dpZHRo LCBiX2hlaWdodCwgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBMU0IsIHNhbXBsZV9idWYsIGJsb2NrX3N0YXRlcywgbWFncmVmX3NlZ21lbnQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFncmVmX2xlbmd0aCk7 CisgICAgICAgICAgICBqICs9IDQ7CisgICAgICAgIH0KKyAgICAgICAgbGFzdF93aWR0aCA9IHdp ZHRoICUgNDsKKyAgICAgICAgaWYgKGxhc3Rfd2lkdGgpCisgICAgICAgICAgICBqcGVnMjAwMF9w cm9jZXNzX3N0cmlwZXNfYmxvY2soJnNwX2RlYywgaSwgaiwgbGFzdF93aWR0aCwgYl9oZWlnaHQs IHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTFNC LCBzYW1wbGVfYnVmLCBibG9ja19zdGF0ZXMsIG1hZ3JlZl9zZWdtZW50LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ3JlZl9sZW5ndGgpOworICAgICAgICBp ICs9IDQ7CisgICAgfQorCisgICAgLyogRGVjb2RlIHJlbWFpbmluZyBoZWlnaHQgc3RyaXBlcyAq LworICAgIGJfaGVpZ2h0ID0gaGVpZ2h0ICUgNDsKKyAgICBqID0gMDsKKyAgICBmb3IgKGludCBu MiA9IDA7IG4yIDwgbnVtX2hfc3RyaXBlOyBuMisrKSB7CisgICAgICAgIGpwZWcyMDAwX3Byb2Nl c3Nfc3RyaXBlc19ibG9jaygmc3BfZGVjLCBpLCBqLCBiX3dpZHRoLCBiX2hlaWdodCwgc3RyaWRl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExTQiwgc2FtcGxlX2J1 ZiwgYmxvY2tfc3RhdGVzLCBtYWdyZWZfc2VnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1hZ3JlZl9sZW5ndGgpOworICAgICAgICBqICs9IDQ7CisgICAgfQor ICAgIGxhc3Rfd2lkdGggPSB3aWR0aCAlIDQ7CisgICAgaWYgKGxhc3Rfd2lkdGgpCisgICAgICAg IGpwZWcyMDAwX3Byb2Nlc3Nfc3RyaXBlc19ibG9jaygmc3BfZGVjLCBpLCBqLCBsYXN0X3dpZHRo LCBiX2hlaWdodCwgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcExTQiwgc2FtcGxlX2J1ZiwgYmxvY2tfc3RhdGVzLCBtYWdyZWZfc2VnbWVudCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ3JlZl9sZW5ndGgpOworfQorCisv KioKKyAqIFNlZSBwcm9jZWR1cmUgZGVjb2RlU2lnUHJvcE1hZyBhdCBSZWMuIElUVS1UIFQuODE0 LCA3LjUuCisqLworc3RhdGljIGludAoranBlZzIwMDBfZGVjb2RlX21hZ3JlZl9zZWdtZW50KEpw ZWcyMDAwQ2JsayAqY2JsaywgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGJsb2NrX2hlaWdodCwg dWludDhfdCAqbWFncmVmX3NlZ21lbnQsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 IG1hZ3JlZl9sZW5ndGgsIHVpbnQ4X3QgcExTQiwgaW50MzJfdCAqc2FtcGxlX2J1ZiwgdWludDhf dCAqYmxvY2tfc3RhdGVzKQoreworCisgICAgU3RhdGVWYXJzIG1hZ19yZWYgICAgICAgICAgID0g eyAwIH07CisgICAgY29uc3QgdWludDE2X3QgbnVtX3Zfc3RyaXBlID0gYmxvY2tfaGVpZ2h0IC8g NDsKKyAgICB1aW50MTZfdCBoZWlnaHQgICAgICAgICAgICAgPSA0OworICAgIHVpbnQxNl90IGlf c3RhcnQgICAgICAgICAgICA9IDA7CisgICAgaW50MzJfdCAqc3A7CisKKyAgICBqcGVnMjAwMF9p bml0X21hZ19yZWYoJm1hZ19yZWYsIG1hZ3JlZl9sZW5ndGgpOworCisgICAgZm9yIChpbnQgbjEg PSAwOyBuMSA8IG51bV92X3N0cmlwZTsgbjErKykgeworICAgICAgICBmb3IgKGludCBqID0gMDsg aiA8IHdpZHRoOyBqKyspIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBpX3N0YXJ0OyBpIDwg aV9zdGFydCArIGhlaWdodDsgaSsrKSB7CisgICAgICAgICAgICAgICAgLyoqCisgICAgICAgICAg ICAgICAgICogIFdlIG1vdmUgY29sdW1uIHdpc2UsIGdvaW5nIGZyb20gb25lIHF1YWQgdG8gYW5v dGhlci4gU2VlCisgICAgICAgICAgICAgICAgICogIFJlYy4gSVRVLVQgVC44MTQsIEZpZ3VyZSA3 LgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHNwID0gJnNhbXBsZV9idWZb aiArIGkgKiB3aWR0aF07CisgICAgICAgICAgICAgICAgaWYgKGpwZWcyMDAwX2dldF9zdGF0ZShp LCBqLCB3aWR0aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcykgIT0gMCkgeworICAgICAg ICAgICAgICAgICAgICBqcGVnMjAwMF9tb2RpZnlfc3RhdGUoaSwgaiwgd2lkdGgsIDEgPDwgSFRf U0hJRlRfUkVGX0lORCwgYmxvY2tfc3RhdGVzKTsKKyAgICAgICAgICAgICAgICAgICAgKnNwIHw9 IGpwZWcyMDAwX2ltcG9ydF9tYWdyZWZfYml0KCZtYWdfcmVmLCBtYWdyZWZfc2VnbWVudCwgbWFn cmVmX2xlbmd0aCkgPDwgcExTQjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg ICAgICAgIH0KKyAgICAgICAgaV9zdGFydCArPSA0OworICAgIH0KKyAgICBoZWlnaHQgPSBibG9j a19oZWlnaHQgJSA0OworICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgeworICAg ICAgICBmb3IgKGludCBpID0gaV9zdGFydDsgaSA8IGlfc3RhcnQgKyBoZWlnaHQ7IGkrKykgewor ICAgICAgICAgICAgc3AgPSAmc2FtcGxlX2J1ZltqICsgaSAqIHdpZHRoXTsKKyAgICAgICAgICAg IGlmIChqcGVnMjAwMF9nZXRfc3RhdGUoaSwgaiwgd2lkdGgsIEhUX1NISUZUX1NJR01BLCBibG9j a19zdGF0ZXMpICE9IDApIHsKKyAgICAgICAgICAgICAgICBqcGVnMjAwMF9tb2RpZnlfc3RhdGUo aSwgaiwgd2lkdGgsIDEgPDwgSFRfU0hJRlRfUkVGX0lORCwgYmxvY2tfc3RhdGVzKTsKKyAgICAg ICAgICAgICAgICAqc3AgfD0ganBlZzIwMDBfaW1wb3J0X21hZ3JlZl9iaXQoJm1hZ19yZWYsIG1h Z3JlZl9zZWdtZW50LCBtYWdyZWZfbGVuZ3RoKSA8PCBwTFNCOworICAgICAgICAgICAgfQorICAg ICAgICB9CisgICAgfQorICAgIHJldHVybiAxOworfQorCisKK2ludAorZmZfanBlZzIwMDBfZGVj b2RlX2h0ajJrKGNvbnN0IEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIEpwZWcyMDAwQ29kaW5n U3R5bGUgKmNvZHN0eSwgSnBlZzIwMDBUMUNvbnRleHQgKnQxLCBKcGVnMjAwMENibGsgKmNibGss CisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWFn cCwgdWludDhfdCByb2lfc2hpZnQpCit7CisgICAgdWludDhfdCBwMCA9IDA7ICAgICAgICAgICAg IC8vIE51bWJlciBvZiBwbGFjZWhvbGRlciBwYXNzZXMKKyAgICB1aW50MzJfdCBMY3VwOyAgICAg ICAgICAgICAgLy8gTGVuZ3RoIG9mIEhUIGNsZWFudXAgc2VnbWVudAorICAgIHVpbnQzMl90IExy ZWY7ICAgICAgICAgICAgICAvLyBMZW5ndGggb2YgUmVmaW5lbWVudCBzZWdtZW50CisgICAgdWlu dDMyX3QgU2N1cDsgICAgICAgICAgICAgIC8vIEhUIGNsZWFudXAgc2VnbWVudCBzdWZmaXggbGVu Z3RoCisgICAgdWludDMyX3QgUGN1cDsgICAgICAgICAgICAgIC8vIEhUIGNsZWFudXAgc2VnbWVu dCBwcmVmaXggbGVuZ3RoCisKKyAgICB1aW50OF90IFNfYmxrOyAgICAgICAgICAgICAgLy8gTnVt YmVyIG9mIHNraXBwZWQgbWFnbml0dWRlIGJpdHBsYW5lcworICAgIHVpbnQ4X3QgcExTQjsKKwor ICAgIHVpbnQ4X3QgKkRjdXA7ICAgICAgICAgICAgICAvLyBCeXRlIG9mIGFuIEhUIGNsZWFudXAg c2VnbWVudAorICAgIHVpbnQ4X3QgKkRyZWY7ICAgICAgICAgICAgICAvLyBCeXRlIG9mIGFuIEhU IHJlZmluZW1lbnQgc2VnbWVudAorCisgICAgaW50IHpfYmxrOyAgICAgICAgICAgICAgICAgIC8v IE51bWJlciBvZiBodCBjb2RpbmcgcGFzcworCisgICAgdWludDhfdCBlbXB0eV9wYXNzZXM7CisK KyAgICBTdGF0ZVZhcnMgbWFnX3NnbjsgICAgICAgICAgLy8gTWFnbml0dWRlIGFuZCBTaWduCisg ICAgU3RhdGVWYXJzIG1lbDsgICAgICAgICAgICAgIC8vIEFkYXB0aXZlIHJ1bi1sZW5ndGggY29k aW5nCisgICAgU3RhdGVWYXJzIHZsYzsgICAgICAgICAgICAgIC8vIFZhcmlhYmxlIExlbmd0aCBj b2RpbmcKKyAgICBTdGF0ZVZhcnMgc2lnX3Byb3A7ICAgICAgICAgLy8gU2lnbmlmaWNhbmNlIHBy b3BhZ2F0aW9uCisKKyAgICBNZWxEZWNvZGVyU3RhdGUgbWVsX3N0YXRlOworCisgICAgaW50IHJl dDsKKworICAgIC8qIFRlbXBvcmFyeSBidWZmZXJzICovCisgICAgaW50MzJfdCAqc2FtcGxlX2J1 ZjsKKyAgICB1aW50OF90ICpibG9ja19zdGF0ZXM7CisKKyAgICBpbnQzMl90IG4sIHZhbDsgICAg ICAgICAgICAgLy8gUG9zdC1wcm9jZXNzaW5nCisKKyAgICBpbnQzMl90IE1fYiA9IG1hZ3A7CisK KyAgICAvKiBjb2RlYmxvY2sgc2l6ZSBhcyBjb25zdHJhaW5lZCBieSBSZWMuIElUVS1UIFQuODAw LCBUYWJsZSBBLjE4ICovCisgICAgYXZfYXNzZXJ0MCh3aWR0aCA8PSAxMDI0VSAmJiBoZWlnaHQg PD0gMTAyNFUpOworICAgIGF2X2Fzc2VydDAod2lkdGggKiBoZWlnaHQgPD0gNDA5Nik7CisgICAg YXZfYXNzZXJ0MCh3aWR0aCAqIGhlaWdodCA+IDApOworCisgICAgbWVtc2V0KHQxLT5kYXRhLCAw LCB0MS0+c3RyaWRlICogaGVpZ2h0ICogc2l6ZW9mKCp0MS0+ZGF0YSkpOworICAgIG1lbXNldCh0 MS0+ZmxhZ3MsIDAsIHQxLT5zdHJpZGUgKiAoaGVpZ2h0ICsgMikgKiBzaXplb2YoKnQxLT5mbGFn cykpOworCisgICAgaWYgKGNibGstPm5wYXNzZXMgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisK KyAgICBpZiAoY2Jsay0+bnBhc3NlcyA+IDMpCisgICAgICAgIHAwID0gMDsKKyAgICBlbHNlIGlm IChjYmxrLT5sZW5ndGggPT0gMCkKKyAgICAgICAgcDAgPSAxOworCisgICAgZW1wdHlfcGFzc2Vz ID0gcDAgKiAzOworICAgIHpfYmxrID0gY2Jsay0+bnBhc3NlcyAtIGVtcHR5X3Bhc3NlczsKKwor ICAgIGlmICh6X2JsayA8PSAwKQorICAgICAgICByZXR1cm4gMDsgLy8gTm8gcGFzc2VzIHdpdGhp biB0aGlzIHNldCwgY29udGludWUKKworICAgIExjdXAgPSBjYmxrLT5wYXNzX2xlbmd0aHNbMF07 CisgICAgTHJlZiA9IGNibGstPnBhc3NfbGVuZ3Roc1sxXTsKKworICAgIGlmIChMY3VwIDwgMikg eworICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAg ICJDbGVhbnVwIHBhc3MgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgMiBieXRlcyBpbiBsZW5ndGhc biIpOworICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICB9CisgICAgRGN1 cCA9IGNibGstPmRhdGE7CisgICAgRHJlZiAgPSBjYmxrLT5kYXRhICsgTGN1cDsgLy8gRHJlZiBj b21lcyBhZnRlciB0aGUgcmVmaW5lbWVudCBzZWdtZW50CisgICAgU19ibGsgPSBwMCArIGNibGst PnpicDsKKyAgICBwTFNCICA9IDMwIC0gU19ibGs7CisKKyAgICBTY3VwID0gKERjdXBbTGN1cCAt IDFdIDw8IDQpICsgKERjdXBbTGN1cCAtIDJdICYgMHgwRik7CisKKyAgICBpZiAoU2N1cCA8IDIg fHwgU2N1cCA+IExjdXAgfHwgU2N1cCA+IDQwNzkpIHsKKyAgICAgICAgYXZfbG9nKHMtPmF2Y3R4 LCBBVl9MT0dfRVJST1IsICJDbGVhbnVwIHBhc3Mgc3VmZml4IGxlbmd0aCBpcyBpbnZhbGlkICVk XG4iLAorICAgICAgICAgICAgICAgU2N1cCk7CisgICAgICAgIHJldCA9IEFWRVJST1JfSU5WQUxJ RERBVEE7CisgICAgICAgIGdvdG8gZnJlZTsKKyAgICB9CisgICAgUGN1cCA9IExjdXAgLSBTY3Vw OworCisgICAgLyogbW9kRGN1cCBzaGFsbCBiZSBkb25lIGJlZm9yZSB0aGUgY3JlYXRpb24gb2Yg dmxjIGluc3RhbmNlLiAqLworICAgIERjdXBbTGN1cCAtIDFdID0gMHhGRjsKKyAgICBEY3VwW0xj dXAgLSAyXSB8PSAweDBGOworCisgICAgLyogTWFnbml0dWRlIGFuZCByZWZpbmVtZW50ICovCisg ICAganBlZzIwMDBfaW5pdF96ZXJvKCZtYWdfc2duKTsKKyAgICBqcGVnMjAwMF9iaXRidWZfcmVm aWxsX2ZvcndhcmQoJm1hZ19zZ24sIERjdXAsIFBjdXApOworCisgICAgLyogU2lnbmlmaWNhbmNl IHByb3BhZ2F0aW9uICovCisgICAganBlZzIwMDBfaW5pdF96ZXJvKCZzaWdfcHJvcCk7CisKKyAg ICAvKiBBZGFwdGl2ZSBydW4gbGVuZ3RoICovCisgICAganBlZzIwMDBfaW5pdF9tZWwoJm1lbCwg UGN1cCk7CisKKyAgICAvKiBWYXJpYWJsZSBMZW5ndGggY29kaW5nICovCisgICAganBlZzIwMDBf aW5pdF92bGMoJnZsYywgTGN1cCwgUGN1cCwgRGN1cCk7CisKKyAgICBqcGVnMjAwMF9pbml0X21l bF9kZWNvZGVyKCZtZWxfc3RhdGUpOworCisgICAgc2FtcGxlX2J1ZiA9IGF2X2NhbGxvYygod2lk dGggKyA0KSAqIChoZWlnaHQgKyA0KSwgc2l6ZW9mKGludDMyX3QpKTsKKyAgICBibG9ja19zdGF0 ZXMgPSBhdl9jYWxsb2MoKHdpZHRoICsgNCkgKiAoaGVpZ2h0ICsgNCksIHNpemVvZih1aW50OF90 KSk7CisKKyAgICBpZiAoIXNhbXBsZV9idWYgfHwgIWJsb2NrX3N0YXRlcykgeworICAgICAgICBy ZXQgPSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIGdvdG8gZnJlZTsKKyAgICB9CisgICAgaWYg KChyZXQgPSBqcGVnMjAwMF9kZWNvZGVfaHRfY2xlYW51cF9zZWdtZW50KHMsIGNibGssIHQxLCAm bWVsX3N0YXRlLCAmbWVsLCAmdmxjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJm1hZ19zZ24sIERjdXAsIExjdXAsIFBjdXAsIHBMU0IsIHdpZHRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBzYW1wbGVfYnVmLCBi bG9ja19zdGF0ZXMpKSA8IDApCisgICAgICAgIGdvdG8gZnJlZTsKKworICAgIGlmIChjYmxrLT5u cGFzc2VzID4gMSkKKyAgICAgICAganBlZzIwMDBfZGVjb2RlX3NpZ3Byb3Bfc2VnbWVudChjYmxr LCB3aWR0aCwgaGVpZ2h0LCBEcmVmLCBMcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwTFNCIC0gMSwgc2FtcGxlX2J1ZiwgYmxvY2tfc3RhdGVzKTsKKworICAgIGlmIChjYmxr LT5ucGFzc2VzID4gMikKKyAgICAgICAgaWYgKChyZXQgPSBqcGVnMjAwMF9kZWNvZGVfbWFncmVm X3NlZ21lbnQoY2Jsaywgd2lkdGgsIGhlaWdodCwgRHJlZiwgTHJlZiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMU0IgLSAxLCBzYW1wbGVfYnVmLCBibG9ja19z dGF0ZXMpKSA8IDApCisgICAgICAgICAgICBnb3RvIGZyZWU7CisKKyAgICBwTFNCID0gMzEgLSBN X2I7CisKKyAgICAvKiBSZWNvbnN0cnVjdCB0aGUgc2FtcGxlIHZhbHVlcyAqLworICAgIGZvciAo aW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHgg PCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAgICBuID0geCArICh5ICogdDEtPnN0cmlkZSk7Cisg ICAgICAgICAgICB2YWwgPSBzYW1wbGVfYnVmW3ggKyAoeSAqIHdpZHRoKV07CisgICAgICAgICAg ICAvKiBDb252ZXJ0IHNpZ24tbWFnbml0dWRlIHRvIHR3bydzIGNvbXBsZW1lbnQuICovCisgICAg ICAgICAgICB2YWwgPSB2YWwgPj4gMzEgPyAweDgwMDAwMDAwIC0gdmFsIDogdmFsOworICAgICAg ICAgICAgdmFsID4+PSAocExTQiAtIDEpOworICAgICAgICAgICAgdDEtPmRhdGFbbl0gPSB2YWw7 CisgICAgICAgIH0KKyAgICB9CitmcmVlOgorICAgIGF2X2ZyZWVwKCZzYW1wbGVfYnVmKTsKKyAg ICBhdl9mcmVlcCgmYmxvY2tfc3RhdGVzKTsKKyAgICByZXR1cm4gcmV0OworfQorCisvKioKKyAq IEN0eFZMQyB0YWJsZXMgKHNlZSBSZWMuIElUVS1UIFQuODAwLCBBbm5leCBDKSBhcyBmb3VuZCBh dAorICogaHR0cHM6Ly9naXRodWIuY29tL29zYW11NjIwL09wZW5IVEoySyAoYXV0aG9yOiBPc2Ft dSBXYXRhbmFiZSkKKyAqLworc3RhdGljIGNvbnN0IHVpbnQxNl90IGRlY19jeHRfdmxjX3RhYmxl MVsxMDI0XSA9IHsKKyAgICAgICAgMHgwMDE2LCAweDAwNkEsIDB4MDA0NiwgMHgwMERELCAweDAw ODYsIDB4ODg4QiwgMHgwMDI2LCAweDQ0NEQsIDB4MDAxNiwgMHgwMEFBLCAweDAwNDYsIDB4ODhB RCwgMHgwMDg2LAorICAgICAgICAweDAwM0EsIDB4MDAyNiwgMHgwMERFLCAweDAwMTYsIDB4MDBD QSwgMHgwMDQ2LCAweDAwOUQsIDB4MDA4NiwgMHgwMDVBLCAweDAwMjYsIDB4MjIyRCwgMHgwMDE2 LCAweDAwOUEsCisgICAgICAgIDB4MDA0NiwgMHgwMDdELCAweDAwODYsIDB4MDFGRCwgMHgwMDI2 LCAweDAwN0UsIDB4MDAxNiwgMHgwMDZBLCAweDAwNDYsIDB4ODhDRCwgMHgwMDg2LCAweDg4OEIs IDB4MDAyNiwKKyAgICAgICAgMHgxMTFELCAweDAwMTYsIDB4MDBBQSwgMHgwMDQ2LCAweDAwNUQs IDB4MDA4NiwgMHgwMDNBLCAweDAwMjYsIDB4MDBFRSwgMHgwMDE2LCAweDAwQ0EsIDB4MDA0Niwg MHgwMEJELAorICAgICAgICAweDAwODYsIDB4MDA1QSwgMHgwMDI2LCAweDExRkYsIDB4MDAxNiwg MHgwMDlBLCAweDAwNDYsIDB4MDAzRCwgMHgwMDg2LCAweDA0RUQsIDB4MDAyNiwgMHgyQUFGLCAw eDAwMTYsCisgICAgICAgIDB4MDA2QSwgMHgwMDQ2LCAweDAwREQsIDB4MDA4NiwgMHg4ODhCLCAw eDAwMjYsIDB4NDQ0RCwgMHgwMDE2LCAweDAwQUEsIDB4MDA0NiwgMHg4OEFELCAweDAwODYsIDB4 MDAzQSwKKyAgICAgICAgMHgwMDI2LCAweDQ0RUYsIDB4MDAxNiwgMHgwMENBLCAweDAwNDYsIDB4 MDA5RCwgMHgwMDg2LCAweDAwNUEsIDB4MDAyNiwgMHgyMjJELCAweDAwMTYsIDB4MDA5QSwgMHgw MDQ2LAorICAgICAgICAweDAwN0QsIDB4MDA4NiwgMHgwMUZELCAweDAwMjYsIDB4MDBCRSwgMHgw MDE2LCAweDAwNkEsIDB4MDA0NiwgMHg4OENELCAweDAwODYsIDB4ODg4QiwgMHgwMDI2LCAweDEx MUQsCisgICAgICAgIDB4MDAxNiwgMHgwMEFBLCAweDAwNDYsIDB4MDA1RCwgMHgwMDg2LCAweDAw M0EsIDB4MDAyNiwgMHg0Q0NGLCAweDAwMTYsIDB4MDBDQSwgMHgwMDQ2LCAweDAwQkQsIDB4MDA4 NiwKKyAgICAgICAgMHgwMDVBLCAweDAwMjYsIDB4MDBGRSwgMHgwMDE2LCAweDAwOUEsIDB4MDA0 NiwgMHgwMDNELCAweDAwODYsIDB4MDRFRCwgMHgwMDI2LCAweDAwNkYsIDB4MDAwMiwgMHgwMDg4 LAorICAgICAgICAweDAwMDIsIDB4MDA1QywgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMERF LCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDAwOUMsIDB4MDAwMiwgMHgwMDRBLCAweDAwMDIs CisgICAgICAgIDB4MDA3RSwgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwgMHgwMENDLCAweDAwMDIs IDB4MDAxOCwgMHgwMDAyLCAweDg4OEYsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4MDBGRSwK KyAgICAgICAgMHgwMDAyLCAweDAwM0EsIDB4MDAwMiwgMHgyMjJGLCAweDAwMDIsIDB4MDA4OCwg MHgwMDAyLCAweDA0RkQsIDB4MDAwMiwgMHgwMDE4LCAweDAwMDIsIDB4MDBCRSwgMHgwMDAyLAor ICAgICAgICAweDAwMjgsIDB4MDAwMiwgMHgwMEJGLCAweDAwMDIsIDB4MDA0QSwgMHgwMDAyLCAw eDAwNkUsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsIDB4MDBBQywgMHgwMDAyLCAweDAwMTgsCisg ICAgICAgIDB4MDAwMiwgMHg0NDRGLCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDAwRUUsIDB4 MDAwMiwgMHgwMDNBLCAweDAwMDIsIDB4MTEzRiwgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwKKyAg ICAgICAgMHgwMDVDLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLCAweDAwQ0YsIDB4MDAwMiwgMHgw MDI4LCAweDAwMDIsIDB4MDA5QywgMHgwMDAyLCAweDAwNEEsIDB4MDAwMiwgMHgwMDZGLAorICAg ICAgICAweDAwMDIsIDB4MDA4OCwgMHgwMDAyLCAweDAwQ0MsIDB4MDAwMiwgMHgwMDE4LCAweDAw MDIsIDB4MDA5RiwgMHgwMDAyLCAweDAwMjgsIDB4MDAwMiwgMHgwMEVGLCAweDAwMDIsCisgICAg ICAgIDB4MDAzQSwgMHgwMDAyLCAweDIzM0YsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsIDB4MDRG RCwgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMEFGLCAweDAwMDIsIDB4MDAyOCwKKyAgICAg ICAgMHgwMDAyLCAweDQ0RkYsIDB4MDAwMiwgMHgwMDRBLCAweDAwMDIsIDB4MDA1RiwgMHgwMDAy LCAweDAwODgsIDB4MDAwMiwgMHgwMEFDLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLAorICAgICAg ICAweDAwN0YsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4MDBERiwgMHgwMDAyLCAweDAwM0Es IDB4MDAwMiwgMHgxMTFGLCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDAwNUMsCisgICAgICAg IDB4MDAwMiwgMHgwMDhBLCAweDAwMDIsIDB4MDBCRiwgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwg MHgwMEZFLCAweDAwMDIsIDB4MDBDQywgMHgwMDAyLCAweDAwN0UsIDB4MDAwMiwKKyAgICAgICAg MHgwMDI4LCAweDAwMDIsIDB4OEZGRiwgMHgwMDAyLCAweDAwNEEsIDB4MDAwMiwgMHgwMDdGLCAw eDAwMDIsIDB4MDAxOCwgMHgwMDAyLCAweDAwREYsIDB4MDAwMiwgMHgwMEFDLAorICAgICAgICAw eDAwMDIsIDB4MTMzRiwgMHgwMDAyLCAweDAwMjgsIDB4MDAwMiwgMHgyMjJELCAweDAwMDIsIDB4 MDA4QSwgMHgwMDAyLCAweDAwQkUsIDB4MDAwMiwgMHgwMDE4LCAweDAwMDIsCisgICAgICAgIDB4 NDRFRiwgMHgwMDAyLCAweDJBQUQsIDB4MDAwMiwgMHgwMDZFLCAweDAwMDIsIDB4MDAyOCwgMHgw MDAyLCAweDE1RkYsIDB4MDAwMiwgMHgwMDRBLCAweDAwMDIsIDB4MDA5RSwKKyAgICAgICAgMHgw MDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMENGLCAweDAwMDIsIDB4MDAzQywgMHgwMDAyLCAweDIy M0YsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4MDA1QywgMHgwMDAyLAorICAgICAgICAweDAw OEEsIDB4MDAwMiwgMHgyQkJGLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLCAweDA0RUYsIDB4MDAw MiwgMHgwMENDLCAweDAwMDIsIDB4MDA2RiwgMHgwMDAyLCAweDAwMjgsCisgICAgICAgIDB4MDAw MiwgMHgyN0ZGLCAweDAwMDIsIDB4MDA0QSwgMHgwMDAyLCAweDAwOUYsIDB4MDAwMiwgMHgwMDE4 LCAweDAwMDIsIDB4MDBERSwgMHgwMDAyLCAweDAwQUMsIDB4MDAwMiwKKyAgICAgICAgMHg0NDRG LCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDIyMkQsIDB4MDAwMiwgMHgwMDhBLCAweDAwMDIs IDB4OEFBRiwgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMEVFLAorICAgICAgICAweDAwMDIs IDB4MkFBRCwgMHgwMDAyLCAweDAwNUYsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4NDRGRiwg MHgwMDAyLCAweDAwNEEsIDB4MDAwMiwgMHg4ODhGLCAweDAwMDIsCisgICAgICAgIDB4MDAxOCwg MHgwMDAyLCAweEFBQUYsIDB4MDAwMiwgMHgwMDNDLCAweDAwMDIsIDB4MTExRiwgMHgwMDA0LCAw eDhGRkQsIDB4MDAyOCwgMHgwMDVDLCAweDAwMDQsIDB4MDBCQywKKyAgICAgICAgMHgwMDhBLCAw eDY2RkYsIDB4MDAwNCwgMHgwMENELCAweDAwMTgsIDB4MTExRCwgMHgwMDA0LCAweDAwOUMsIDB4 MDAzQSwgMHg4QUFGLCAweDAwMDQsIDB4MDBGQywgMHgwMDI4LAorICAgICAgICAweDEzM0QsIDB4 MDAwNCwgMHgwMEFDLCAweDAwNEEsIDB4M0JCRiwgMHgwMDA0LCAweDJCQkQsIDB4MDAxOCwgMHg1 RkZGLCAweDAwMDQsIDB4MDA2QywgMHgxNTdELCAweDQ1NUYsCisgICAgICAgIDB4MDAwNCwgMHgy RkZELCAweDAwMjgsIDB4MjIyRCwgMHgwMDA0LCAweDIyQUQsIDB4MDA4QSwgMHg0NEVGLCAweDAw MDQsIDB4MDBDQywgMHgwMDE4LCAweDRGRkYsIDB4MDAwNCwKKyAgICAgICAgMHgwMDdDLCAweDAw M0EsIDB4NDQ3RiwgMHgwMDA0LCAweDA0REQsIDB4MDAyOCwgMHgyMzNELCAweDAwMDQsIDB4MDA5 RCwgMHgwMDRBLCAweDAwREUsIDB4MDAwNCwgMHg4OEJELAorICAgICAgICAweDAwMTgsIDB4QUZG RiwgMHgwMDA0LCAweDExNUQsIDB4MUZGRCwgMHg0NDRGLCAweDAwMDQsIDB4OEZGRCwgMHgwMDI4 LCAweDAwNUMsIDB4MDAwNCwgMHgwMEJDLCAweDAwOEEsCisgICAgICAgIDB4OENFRiwgMHgwMDA0 LCAweDAwQ0QsIDB4MDAxOCwgMHgxMTFELCAweDAwMDQsIDB4MDA5QywgMHgwMDNBLCAweDg4OEYs IDB4MDAwNCwgMHgwMEZDLCAweDAwMjgsIDB4MTMzRCwKKyAgICAgICAgMHgwMDA0LCAweDAwQUMs IDB4MDA0QSwgMHg0NERGLCAweDAwMDQsIDB4MkJCRCwgMHgwMDE4LCAweDhBRkYsIDB4MDAwNCwg MHgwMDZDLCAweDE1N0QsIDB4MDA2RiwgMHgwMDA0LAorICAgICAgICAweDJGRkQsIDB4MDAyOCwg MHgyMjJELCAweDAwMDQsIDB4MjJBRCwgMHgwMDhBLCAweDAwRUUsIDB4MDAwNCwgMHgwMENDLCAw eDAwMTgsIDB4MkVFRiwgMHgwMDA0LCAweDAwN0MsCisgICAgICAgIDB4MDAzQSwgMHgyNzdGLCAw eDAwMDQsIDB4MDRERCwgMHgwMDI4LCAweDIzM0QsIDB4MDAwNCwgMHgwMDlELCAweDAwNEEsIDB4 MUJCRiwgMHgwMDA0LCAweDg4QkQsIDB4MDAxOCwKKyAgICAgICAgMHgzN0ZGLCAweDAwMDQsIDB4 MTE1RCwgMHgxRkZELCAweDMzM0YsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsIDB4MDJFRCwgMHgw MDAyLCAweDAwQ0EsIDB4MDAwMiwgMHg0Q0NGLAorICAgICAgICAweDAwMDIsIDB4MDA0OCwgMHgw MDAyLCAweDIzRkYsIDB4MDAwMiwgMHgwMDFBLCAweDAwMDIsIDB4ODg4RiwgMHgwMDAyLCAweDAw ODgsIDB4MDAwMiwgMHgwMDZDLCAweDAwMDIsCisgICAgICAgIDB4MDAyQSwgMHgwMDAyLCAweDAw QUYsIDB4MDAwMiwgMHgwMDQ4LCAweDAwMDIsIDB4MjJFRiwgMHgwMDAyLCAweDAwQUMsIDB4MDAw MiwgMHgwMDVGLCAweDAwMDIsIDB4MDA4OCwKKyAgICAgICAgMHgwMDAyLCAweDQ0NEQsIDB4MDAw MiwgMHgwMENBLCAweDAwMDIsIDB4Q0NDRiwgMHgwMDAyLCAweDAwNDgsIDB4MDAwMiwgMHgwMEZF LCAweDAwMDIsIDB4MDAxQSwgMHgwMDAyLAorICAgICAgICAweDAwNkYsIDB4MDAwMiwgMHgwMDg4 LCAweDAwMDIsIDB4MDA1QywgMHgwMDAyLCAweDAwMkEsIDB4MDAwMiwgMHgwMDlGLCAweDAwMDIs IDB4MDA0OCwgMHgwMDAyLCAweDAwREYsCisgICAgICAgIDB4MDAwMiwgMHgwM0ZELCAweDAwMDIs IDB4MjIyRiwgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwgMHgwMkVELCAweDAwMDIsIDB4MDBDQSwg MHgwMDAyLCAweDhDQ0YsIDB4MDAwMiwKKyAgICAgICAgMHgwMDQ4LCAweDAwMDIsIDB4MTFGRiwg MHgwMDAyLCAweDAwMUEsIDB4MDAwMiwgMHgwMDdFLCAweDAwMDIsIDB4MDA4OCwgMHgwMDAyLCAw eDAwNkMsIDB4MDAwMiwgMHgwMDJBLAorICAgICAgICAweDAwMDIsIDB4MDA3RiwgMHgwMDAyLCAw eDAwNDgsIDB4MDAwMiwgMHgwMEVFLCAweDAwMDIsIDB4MDBBQywgMHgwMDAyLCAweDAwM0UsIDB4 MDAwMiwgMHgwMDg4LCAweDAwMDIsCisgICAgICAgIDB4NDQ0RCwgMHgwMDAyLCAweDAwQ0EsIDB4 MDAwMiwgMHgwMEJFLCAweDAwMDIsIDB4MDA0OCwgMHgwMDAyLCAweDAwQkYsIDB4MDAwMiwgMHgw MDFBLCAweDAwMDIsIDB4MDAzRiwKKyAgICAgICAgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwgMHgw MDVDLCAweDAwMDIsIDB4MDAyQSwgMHgwMDAyLCAweDAwOUUsIDB4MDAwMiwgMHgwMDQ4LCAweDAw MDIsIDB4MDBERSwgMHgwMDAyLAorICAgICAgICAweDAzRkQsIDB4MDAwMiwgMHgxMTFGLCAweDAw MDQsIDB4OEFFRCwgMHgwMDQ4LCAweDg4OEQsIDB4MDAwNCwgMHgwMERDLCAweDAwQ0EsIDB4M0ZG RiwgMHgwMDA0LCAweENGRkQsCisgICAgICAgIDB4MDAyQSwgMHgwMDNELCAweDAwMDQsIDB4MDBC QywgMHgwMDVBLCAweDhEREYsIDB4MDAwNCwgMHg4RkZELCAweDAwNDgsIDB4MDA2QywgMHgwMDA0 LCAweDAyN0QsIDB4MDA4QSwKKyAgICAgICAgMHg5OUZGLCAweDAwMDQsIDB4MDBFQywgMHgwMEZB LCAweDAwM0MsIDB4MDAwNCwgMHgwMEFDLCAweDAwMUEsIDB4MDA5RiwgMHgwMDA0LCAweDJGRkQs IDB4MDA0OCwgMHgwMDdDLAorICAgICAgICAweDAwMDQsIDB4NDRDRCwgMHgwMENBLCAweDY3RkYs IDB4MDAwNCwgMHgxRkZELCAweDAwMkEsIDB4NDQ0RCwgMHgwMDA0LCAweDAwQUQsIDB4MDA1QSwg MHg4Q0NGLCAweDAwMDQsCisgICAgICAgIDB4NEZGRCwgMHgwMDQ4LCAweDQ0NUQsIDB4MDAwNCwg MHgwMUJELCAweDAwOEEsIDB4NEVFRiwgMHgwMDA0LCAweDQ1REQsIDB4MDBGQSwgMHgxMTFELCAw eDAwMDQsIDB4MDA5QywKKyAgICAgICAgMHgwMDFBLCAweDIyMkYsIDB4MDAwNCwgMHg4QUVELCAw eDAwNDgsIDB4ODg4RCwgMHgwMDA0LCAweDAwREMsIDB4MDBDQSwgMHhBRkZGLCAweDAwMDQsIDB4 Q0ZGRCwgMHgwMDJBLAorICAgICAgICAweDAwM0QsIDB4MDAwNCwgMHgwMEJDLCAweDAwNUEsIDB4 MTFCRiwgMHgwMDA0LCAweDhGRkQsIDB4MDA0OCwgMHgwMDZDLCAweDAwMDQsIDB4MDI3RCwgMHgw MDhBLCAweDIyRUYsCisgICAgICAgIDB4MDAwNCwgMHgwMEVDLCAweDAwRkEsIDB4MDAzQywgMHgw MDA0LCAweDAwQUMsIDB4MDAxQSwgMHgyMjdGLCAweDAwMDQsIDB4MkZGRCwgMHgwMDQ4LCAweDAw N0MsIDB4MDAwNCwKKyAgICAgICAgMHg0NENELCAweDAwQ0EsIDB4NURGRiwgMHgwMDA0LCAweDFG RkQsIDB4MDAyQSwgMHg0NDRELCAweDAwMDQsIDB4MDBBRCwgMHgwMDVBLCAweDAwNkYsIDB4MDAw NCwgMHg0RkZELAorICAgICAgICAweDAwNDgsIDB4NDQ1RCwgMHgwMDA0LCAweDAxQkQsIDB4MDA4 QSwgMHgxMURGLCAweDAwMDQsIDB4NDVERCwgMHgwMEZBLCAweDExMUQsIDB4MDAwNCwgMHgwMDlD LCAweDAwMUEsCisgICAgICAgIDB4MTU1RiwgMHgwMDA2LCAweDAwRkMsIDB4MDAxOCwgMHgxMTFE LCAweDAwNDgsIDB4ODg4RCwgMHgwMEFBLCAweDREREYsIDB4MDAwNiwgMHgyQUFELCAweDAwNUEs IDB4NjdGRiwKKyAgICAgICAgMHgwMDI4LCAweDIyM0QsIDB4MDBCQywgMHhBQUFGLCAweDAwMDYs IDB4MDBFQywgMHgwMDE4LCAweDVGRkYsIDB4MDA0OCwgMHgwMDZDLCAweDAwOEEsIDB4Q0NDRiwg MHgwMDA2LAorICAgICAgICAweDAwOUQsIDB4MDBDQSwgMHg0NEVGLCAweDAwMjgsIDB4MDAzQywg MHg4RkZELCAweDEzN0YsIDB4MDAwNiwgMHg4RUVELCAweDAwMTgsIDB4MUZGRiwgMHgwMDQ4LCAw eDAwN0MsCisgICAgICAgIDB4MDBBQSwgMHg0Q0NGLCAweDAwMDYsIDB4MjI3RCwgMHgwMDVBLCAw eDFEREYsIDB4MDAyOCwgMHg0NDRELCAweDRGRkQsIDB4MTU1RiwgMHgwMDA2LCAweDAwREMsIDB4 MDAxOCwKKyAgICAgICAgMHgyRUVGLCAweDAwNDgsIDB4NDQ1RCwgMHgwMDhBLCAweDIyQkYsIDB4 MDAwNiwgMHgwMDlDLCAweDAwQ0EsIDB4OENERiwgMHgwMDI4LCAweDIyMkQsIDB4MkZGRCwgMHgy MjZGLAorICAgICAgICAweDAwMDYsIDB4MDBGQywgMHgwMDE4LCAweDExMUQsIDB4MDA0OCwgMHg4 ODhELCAweDAwQUEsIDB4MUJCRiwgMHgwMDA2LCAweDJBQUQsIDB4MDA1QSwgMHgzM0ZGLCAweDAw MjgsCisgICAgICAgIDB4MjIzRCwgMHgwMEJDLCAweDhBQUYsIDB4MDAwNiwgMHgwMEVDLCAweDAw MTgsIDB4OUJGRiwgMHgwMDQ4LCAweDAwNkMsIDB4MDA4QSwgMHg4QUJGLCAweDAwMDYsIDB4MDA5 RCwKKyAgICAgICAgMHgwMENBLCAweDRFRUYsIDB4MDAyOCwgMHgwMDNDLCAweDhGRkQsIDB4NDY2 RiwgMHgwMDA2LCAweDhFRUQsIDB4MDAxOCwgMHhDRkZGLCAweDAwNDgsIDB4MDA3QywgMHgwMEFB LAorICAgICAgICAweDhDQ0YsIDB4MDAwNiwgMHgyMjdELCAweDAwNUEsIDB4QUVFRiwgMHgwMDI4 LCAweDQ0NEQsIDB4NEZGRCwgMHg0NzdGLCAweDAwMDYsIDB4MDBEQywgMHgwMDE4LCAweEFGRkYs CisgICAgICAgIDB4MDA0OCwgMHg0NDVELCAweDAwOEEsIDB4MkJCRiwgMHgwMDA2LCAweDAwOUMs IDB4MDBDQSwgMHg0NERGLCAweDAwMjgsIDB4MjIyRCwgMHgyRkZELCAweDEzM0YsIDB4MDBGNiwK KyAgICAgICAgMHhBRkZELCAweDFGRkIsIDB4MDAzQywgMHgwMDA4LCAweDIzQkQsIDB4MDA3QSwg MHgxMURGLCAweDAwRjYsIDB4NDVERCwgMHgyRkZCLCAweDRFRUYsIDB4MDBEQSwgMHgxNzdELAor ICAgICAgICAweENGRkQsIDB4Mzc3RiwgMHgwMEY2LCAweDNGRkQsIDB4OEZGQiwgMHgxMTFELCAw eDAwMDgsIDB4MDA5QywgMHgwMDVBLCAweDFCQkYsIDB4MDBGNiwgMHgwMENELCAweDAwQkEsCisg ICAgICAgIDB4OERERiwgMHg0RkZCLCAweDAwNkMsIDB4OUJGRCwgMHg0NTVGLCAweDAwRjYsIDB4 NjdGRCwgMHgxRkZCLCAweDAwMkMsIDB4MDAwOCwgMHgwMEFDLCAweDAwN0EsIDB4MDA5RiwKKyAg ICAgICAgMHgwMEY2LCAweDAwQUQsIDB4MkZGQiwgMHg3RkZGLCAweDAwREEsIDB4MDA0QywgMHg1 RkZELCAweDQ3N0YsIDB4MDBGNiwgMHgwMEVDLCAweDhGRkIsIDB4MDAxQywgMHgwMDA4LAorICAg ICAgICAweDAwOEMsIDB4MDA1QSwgMHg4ODhGLCAweDAwRjYsIDB4MDBDQywgMHgwMEJBLCAweDJF RUYsIDB4NEZGQiwgMHgxMTVELCAweDhBRUQsIDB4MTEzRiwgMHgwMEY2LCAweEFGRkQsCisgICAg ICAgIDB4MUZGQiwgMHgwMDNDLCAweDAwMDgsIDB4MjNCRCwgMHgwMDdBLCAweDFEREYsIDB4MDBG NiwgMHg0NURELCAweDJGRkIsIDB4QkZGRiwgMHgwMERBLCAweDE3N0QsIDB4Q0ZGRCwKKyAgICAg ICAgMHg0NDdGLCAweDAwRjYsIDB4M0ZGRCwgMHg4RkZCLCAweDExMUQsIDB4MDAwOCwgMHgwMDlD LCAweDAwNUEsIDB4Mjc3RiwgMHgwMEY2LCAweDAwQ0QsIDB4MDBCQSwgMHgyMkVGLAorICAgICAg ICAweDRGRkIsIDB4MDA2QywgMHg5QkZELCAweDQ0NEYsIDB4MDBGNiwgMHg2N0ZELCAweDFGRkIs IDB4MDAyQywgMHgwMDA4LCAweDAwQUMsIDB4MDA3QSwgMHgxMUJGLCAweDAwRjYsCisgICAgICAg IDB4MDBBRCwgMHgyRkZCLCAweEZGRkYsIDB4MDBEQSwgMHgwMDRDLCAweDVGRkQsIDB4MjMzRiwg MHgwMEY2LCAweDAwRUMsIDB4OEZGQiwgMHgwMDFDLCAweDAwMDgsIDB4MDA4QywKKyAgICAgICAg MHgwMDVBLCAweDAwNkYsIDB4MDBGNiwgMHgwMENDLCAweDAwQkEsIDB4OEJCRiwgMHg0RkZCLCAw eDExNUQsIDB4OEFFRCwgMHgyMjJGfTsKKworc3RhdGljIGNvbnN0IHVpbnQxNl90IGRlY19jeHRf dmxjX3RhYmxlMFsxMDI0XSA9IHsKKyAgICAgICAgMHgwMDI2LCAweDAwQUEsIDB4MDA0NiwgMHgw MDZDLCAweDAwODYsIDB4OEFFRCwgMHgwMDE4LCAweDhEREYsIDB4MDAyNiwgMHgwMUJELCAweDAw NDYsIDB4NUZGRiwgMHgwMDg2LAorICAgICAgICAweDAyN0QsIDB4MDA1QSwgMHgxNTVGLCAweDAw MjYsIDB4MDAzQSwgMHgwMDQ2LCAweDQ0NEQsIDB4MDA4NiwgMHg0Q0NELCAweDAwMTgsIDB4Q0ND RiwgMHgwMDI2LCAweDJFRkQsCisgICAgICAgIDB4MDA0NiwgMHg5OUZGLCAweDAwODYsIDB4MDA5 QywgMHgwMENBLCAweDEzM0YsIDB4MDAyNiwgMHgwMEFBLCAweDAwNDYsIDB4NDQ1RCwgMHgwMDg2 LCAweDhDQ0QsIDB4MDAxOCwKKyAgICAgICAgMHgxMURGLCAweDAwMjYsIDB4NEZGRCwgMHgwMDQ2 LCAweENGRkYsIDB4MDA4NiwgMHgwMDlELCAweDAwNUEsIDB4MDA3RSwgMHgwMDI2LCAweDAwM0Es IDB4MDA0NiwgMHgxRkZGLAorICAgICAgICAweDAwODYsIDB4ODhBRCwgMHgwMDE4LCAweDAwQkUs IDB4MDAyNiwgMHg4RkZELCAweDAwNDYsIDB4NEVFRiwgMHgwMDg2LCAweDg4OEQsIDB4MDBDQSwg MHgxMTFGLCAweDAwMjYsCisgICAgICAgIDB4MDBBQSwgMHgwMDQ2LCAweDAwNkMsIDB4MDA4Niwg MHg4QUVELCAweDAwMTgsIDB4NDVERiwgMHgwMDI2LCAweDAxQkQsIDB4MDA0NiwgMHgyMkVGLCAw eDAwODYsIDB4MDI3RCwKKyAgICAgICAgMHgwMDVBLCAweDIyN0YsIDB4MDAyNiwgMHgwMDNBLCAw eDAwNDYsIDB4NDQ0RCwgMHgwMDg2LCAweDRDQ0QsIDB4MDAxOCwgMHgxMUJGLCAweDAwMjYsIDB4 MkVGRCwgMHgwMDQ2LAorICAgICAgICAweDAwRkUsIDB4MDA4NiwgMHgwMDlDLCAweDAwQ0EsIDB4 MjIzRiwgMHgwMDI2LCAweDAwQUEsIDB4MDA0NiwgMHg0NDVELCAweDAwODYsIDB4OENDRCwgMHgw MDE4LCAweDAwREUsCisgICAgICAgIDB4MDAyNiwgMHg0RkZELCAweDAwNDYsIDB4QUJGRiwgMHgw MDg2LCAweDAwOUQsIDB4MDA1QSwgMHgwMDZGLCAweDAwMjYsIDB4MDAzQSwgMHgwMDQ2LCAweDZF RkYsIDB4MDA4NiwKKyAgICAgICAgMHg4OEFELCAweDAwMTgsIDB4MkFBRiwgMHgwMDI2LCAweDhG RkQsIDB4MDA0NiwgMHgwMEVFLCAweDAwODYsIDB4ODg4RCwgMHgwMENBLCAweDIyMkYsIDB4MDAw NCwgMHgwMENBLAorICAgICAgICAweDAwODgsIDB4MDI3RCwgMHgwMDA0LCAweDRDQ0QsIDB4MDAy OCwgMHgwMEZFLCAweDAwMDQsIDB4MkFGRCwgMHgwMDQ4LCAweDAwNUMsIDB4MDAwNCwgMHgwMDlE LCAweDAwMTgsCisgICAgICAgIDB4MDBERSwgMHgwMDA0LCAweDAxQkQsIDB4MDA4OCwgMHgwMDZD LCAweDAwMDQsIDB4ODhBRCwgMHgwMDI4LCAweDExREYsIDB4MDAwNCwgMHg4QUVELCAweDAwNDgs IDB4MDAzQywKKyAgICAgICAgMHgwMDA0LCAweDg4OEQsIDB4MDAxOCwgMHgxMTFGLCAweDAwMDQs IDB4MDBDQSwgMHgwMDg4LCAweDAwNkQsIDB4MDAwNCwgMHg4OENELCAweDAwMjgsIDB4ODhGRiwg MHgwMDA0LAorICAgICAgICAweDhCRkQsIDB4MDA0OCwgMHg0NDRELCAweDAwMDQsIDB4MDA5Qywg MHgwMDE4LCAweDAwQkUsIDB4MDAwNCwgMHg0RUZELCAweDAwODgsIDB4NDQ1RCwgMHgwMDA0LCAw eDAwQUMsCisgICAgICAgIDB4MDAyOCwgMHgwMEVFLCAweDAwMDQsIDB4NDVERCwgMHgwMDQ4LCAw eDIyMkQsIDB4MDAwNCwgMHgwMDNELCAweDAwMTgsIDB4MDA3RSwgMHgwMDA0LCAweDAwQ0EsIDB4 MDA4OCwKKyAgICAgICAgMHgwMjdELCAweDAwMDQsIDB4NENDRCwgMHgwMDI4LCAweDFGRkYsIDB4 MDAwNCwgMHgyQUZELCAweDAwNDgsIDB4MDA1QywgMHgwMDA0LCAweDAwOUQsIDB4MDAxOCwgMHgx MUJGLAorICAgICAgICAweDAwMDQsIDB4MDFCRCwgMHgwMDg4LCAweDAwNkMsIDB4MDAwNCwgMHg4 OEFELCAweDAwMjgsIDB4MjJFRiwgMHgwMDA0LCAweDhBRUQsIDB4MDA0OCwgMHgwMDNDLCAweDAw MDQsCisgICAgICAgIDB4ODg4RCwgMHgwMDE4LCAweDIyN0YsIDB4MDAwNCwgMHgwMENBLCAweDAw ODgsIDB4MDA2RCwgMHgwMDA0LCAweDg4Q0QsIDB4MDAyOCwgMHg0RUVGLCAweDAwMDQsIDB4OEJG RCwKKyAgICAgICAgMHgwMDQ4LCAweDQ0NEQsIDB4MDAwNCwgMHgwMDlDLCAweDAwMTgsIDB4MkFB RiwgMHgwMDA0LCAweDRFRkQsIDB4MDA4OCwgMHg0NDVELCAweDAwMDQsIDB4MDBBQywgMHgwMDI4 LAorICAgICAgICAweDhEREYsIDB4MDAwNCwgMHg0NURELCAweDAwNDgsIDB4MjIyRCwgMHgwMDA0 LCAweDAwM0QsIDB4MDAxOCwgMHgxNTVGLCAweDAwMDQsIDB4MDA1QSwgMHgwMDg4LCAweDAwNkMs CisgICAgICAgIDB4MDAwNCwgMHg4OERELCAweDAwMjgsIDB4MjNGRiwgMHgwMDA0LCAweDExRkQs IDB4MDA0OCwgMHg0NDRELCAweDAwMDQsIDB4MDBBRCwgMHgwMDE4LCAweDAwQkUsIDB4MDAwNCwK KyAgICAgICAgMHgxMzdELCAweDAwODgsIDB4MTU1RCwgMHgwMDA0LCAweDAwQ0MsIDB4MDAyOCwg MHgwMERFLCAweDAwMDQsIDB4MDJFRCwgMHgwMDQ4LCAweDExMUQsIDB4MDAwNCwgMHgwMDlELAor ICAgICAgICAweDAwMTgsIDB4MDA3RSwgMHgwMDA0LCAweDAwNUEsIDB4MDA4OCwgMHg0NTVELCAw eDAwMDQsIDB4NDRDRCwgMHgwMDI4LCAweDAwRUUsIDB4MDAwNCwgMHgxRkZELCAweDAwNDgsCisg ICAgICAgIDB4MDAzQywgMHgwMDA0LCAweDAwQUMsIDB4MDAxOCwgMHg1NTVGLCAweDAwMDQsIDB4 NDdGRCwgMHgwMDg4LCAweDExM0QsIDB4MDAwNCwgMHgwMkJELCAweDAwMjgsIDB4NDc3RiwKKyAg ICAgICAgMHgwMDA0LCAweDRDREQsIDB4MDA0OCwgMHg4RkZGLCAweDAwMDQsIDB4MDA5QywgMHgw MDE4LCAweDIyMkYsIDB4MDAwNCwgMHgwMDVBLCAweDAwODgsIDB4MDA2QywgMHgwMDA0LAorICAg ICAgICAweDg4REQsIDB4MDAyOCwgMHgwMEZFLCAweDAwMDQsIDB4MTFGRCwgMHgwMDQ4LCAweDQ0 NEQsIDB4MDAwNCwgMHgwMEFELCAweDAwMTgsIDB4ODg4RiwgMHgwMDA0LCAweDEzN0QsCisgICAg ICAgIDB4MDA4OCwgMHgxNTVELCAweDAwMDQsIDB4MDBDQywgMHgwMDI4LCAweDhDQ0YsIDB4MDAw NCwgMHgwMkVELCAweDAwNDgsIDB4MTExRCwgMHgwMDA0LCAweDAwOUQsIDB4MDAxOCwKKyAgICAg ICAgMHgwMDZGLCAweDAwMDQsIDB4MDA1QSwgMHgwMDg4LCAweDQ1NUQsIDB4MDAwNCwgMHg0NENE LCAweDAwMjgsIDB4MURERiwgMHgwMDA0LCAweDFGRkQsIDB4MDA0OCwgMHgwMDNDLAorICAgICAg ICAweDAwMDQsIDB4MDBBQywgMHgwMDE4LCAweDIyN0YsIDB4MDAwNCwgMHg0N0ZELCAweDAwODgs IDB4MTEzRCwgMHgwMDA0LCAweDAyQkQsIDB4MDAyOCwgMHgyMkJGLCAweDAwMDQsCisgICAgICAg IDB4NENERCwgMHgwMDQ4LCAweDIyRUYsIDB4MDAwNCwgMHgwMDlDLCAweDAwMTgsIDB4MjMzRiwg MHgwMDA2LCAweDREREQsIDB4NEZGQiwgMHhDRkZGLCAweDAwMTgsIDB4MTEzRCwKKyAgICAgICAg MHgwMDVBLCAweDg4OEYsIDB4MDAwNiwgMHgyM0JELCAweDAwOEEsIDB4MDBFRSwgMHgwMDJBLCAw eDE1NUQsIDB4QUFGRCwgMHgyNzdGLCAweDAwMDYsIDB4NDRDRCwgMHg4RkZCLAorICAgICAgICAw eDQ0RUYsIDB4MDAxOCwgMHg0NjdELCAweDAwNEEsIDB4MkFBRiwgMHgwMDA2LCAweDAwQUMsIDB4 NTU1QiwgMHg5OURGLCAweDFGRkIsIDB4MDAzQywgMHg1RkZELCAweDI2NkYsCisgICAgICAgIDB4 MDAwNiwgMHgxRERELCAweDRGRkIsIDB4NkVGRiwgMHgwMDE4LCAweDE3N0QsIDB4MDA1QSwgMHgx QkJGLCAweDAwMDYsIDB4ODhBRCwgMHgwMDhBLCAweDVEREYsIDB4MDAyQSwKKyAgICAgICAgMHg0 NDRELCAweDJGRkQsIDB4NjY3RiwgMHgwMDA2LCAweDAwQ0MsIDB4OEZGQiwgMHgyRUVGLCAweDAw MTgsIDB4NDU1RCwgMHgwMDRBLCAweDExOUYsIDB4MDAwNiwgMHgwMDlDLAorICAgICAgICAweDU1 NUIsIDB4OENDRiwgMHgxRkZCLCAweDExMUQsIDB4OENFRCwgMHgwMDZFLCAweDAwMDYsIDB4NERE RCwgMHg0RkZCLCAweDNGRkYsIDB4MDAxOCwgMHgxMTNELCAweDAwNUEsCisgICAgICAgIDB4MTFC RiwgMHgwMDA2LCAweDIzQkQsIDB4MDA4QSwgMHg4RERGLCAweDAwMkEsIDB4MTU1RCwgMHhBQUZE LCAweDIyMkYsIDB4MDAwNiwgMHg0NENELCAweDhGRkIsIDB4MDBGRSwKKyAgICAgICAgMHgwMDE4 LCAweDQ2N0QsIDB4MDA0QSwgMHg4OTlGLCAweDAwMDYsIDB4MDBBQywgMHg1NTVCLCAweDAwREUs IDB4MUZGQiwgMHgwMDNDLCAweDVGRkQsIDB4NDQ2RiwgMHgwMDA2LAorICAgICAgICAweDFEREQs IDB4NEZGQiwgMHg5QkZGLCAweDAwMTgsIDB4MTc3RCwgMHgwMDVBLCAweDAwQkUsIDB4MDAwNiwg MHg4OEFELCAweDAwOEEsIDB4Q0RERiwgMHgwMDJBLCAweDQ0NEQsCisgICAgICAgIDB4MkZGRCwg MHgwMDdFLCAweDAwMDYsIDB4MDBDQywgMHg4RkZCLCAweDRFRUYsIDB4MDAxOCwgMHg0NTVELCAw eDAwNEEsIDB4Mzc3RiwgMHgwMDA2LCAweDAwOUMsIDB4NTU1QiwKKyAgICAgICAgMHg4QkJGLCAw eDFGRkIsIDB4MTExRCwgMHg4Q0VELCAweDIzM0YsIDB4MDAwNCwgMHgwMEFBLCAweDAwODgsIDB4 MDQ3RCwgMHgwMDA0LCAweDAxREQsIDB4MDAyOCwgMHgxMURGLAorICAgICAgICAweDAwMDQsIDB4 MjdGRCwgMHgwMDQ4LCAweDAwNUMsIDB4MDAwNCwgMHg4QUFELCAweDAwMTgsIDB4MkJCRiwgMHgw MDA0LCAweDAwOUMsIDB4MDA4OCwgMHgwMDZDLCAweDAwMDQsCisgICAgICAgIDB4MDBDQywgMHgw MDI4LCAweDAwRUUsIDB4MDAwNCwgMHg4Q0VELCAweDAwNDgsIDB4MjIyRCwgMHgwMDA0LCAweDg4 OEQsIDB4MDAxOCwgMHgwMDdFLCAweDAwMDQsIDB4MDBBQSwKKyAgICAgICAgMHgwMDg4LCAweDAw NkQsIDB4MDAwNCwgMHg4OENELCAweDAwMjgsIDB4MDBGRSwgMHgwMDA0LCAweDE5RkQsIDB4MDA0 OCwgMHgwMDNDLCAweDAwMDQsIDB4MkFBRCwgMHgwMDE4LAorICAgICAgICAweEFBQUYsIDB4MDAw NCwgMHg4QkZELCAweDAwODgsIDB4MDA1RCwgMHgwMDA0LCAweDAwQkQsIDB4MDAyOCwgMHg0Q0NG LCAweDAwMDQsIDB4NDRFRCwgMHgwMDQ4LCAweDRGRkYsCisgICAgICAgIDB4MDAwNCwgMHgyMjNE LCAweDAwMTgsIDB4MTExRiwgMHgwMDA0LCAweDAwQUEsIDB4MDA4OCwgMHgwNDdELCAweDAwMDQs IDB4MDFERCwgMHgwMDI4LCAweDk5RkYsIDB4MDAwNCwKKyAgICAgICAgMHgyN0ZELCAweDAwNDgs IDB4MDA1QywgMHgwMDA0LCAweDhBQUQsIDB4MDAxOCwgMHgwMEJFLCAweDAwMDQsIDB4MDA5Qywg MHgwMDg4LCAweDAwNkMsIDB4MDAwNCwgMHgwMENDLAorICAgICAgICAweDAwMjgsIDB4MDBERSwg MHgwMDA0LCAweDhDRUQsIDB4MDA0OCwgMHgyMjJELCAweDAwMDQsIDB4ODg4RCwgMHgwMDE4LCAw eDQ0NEYsIDB4MDAwNCwgMHgwMEFBLCAweDAwODgsCisgICAgICAgIDB4MDA2RCwgMHgwMDA0LCAw eDg4Q0QsIDB4MDAyOCwgMHgyRUVGLCAweDAwMDQsIDB4MTlGRCwgMHgwMDQ4LCAweDAwM0MsIDB4 MDAwNCwgMHgyQUFELCAweDAwMTgsIDB4NDQ3RiwKKyAgICAgICAgMHgwMDA0LCAweDhCRkQsIDB4 MDA4OCwgMHgwMDVELCAweDAwMDQsIDB4MDBCRCwgMHgwMDI4LCAweDAwOUYsIDB4MDAwNCwgMHg0 NEVELCAweDAwNDgsIDB4NjdGRiwgMHgwMDA0LAorICAgICAgICAweDIyM0QsIDB4MDAxOCwgMHgx MzNGLCAweDAwMDYsIDB4MDBDQywgMHgwMDhBLCAweDlERkYsIDB4MkZGQiwgMHg0NjdELCAweDFG RkQsIDB4OTlCRiwgMHgwMDA2LCAweDJBQUQsCisgICAgICAgIDB4MDAyQSwgMHg2NkVGLCAweDRG RkIsIDB4MDA1QywgMHgyRUVELCAweDM3N0YsIDB4MDAwNiwgMHg4OUJELCAweDAwNEEsIDB4MDBG RSwgMHg4RkZCLCAweDAwNkMsIDB4NjdGRCwKKyAgICAgICAgMHg4ODlGLCAweDAwMDYsIDB4ODg4 RCwgMHgwMDFBLCAweDVEREYsIDB4MDBBQSwgMHgyMjJELCAweDg5REQsIDB4NDQ0RiwgMHgwMDA2 LCAweDJCQkQsIDB4MDA4QSwgMHhDRkZGLAorICAgICAgICAweDJGRkIsIDB4MjI2RCwgMHgwMDlD LCAweDAwQkUsIDB4MDAwNiwgMHhBQUFELCAweDAwMkEsIDB4MURERiwgMHg0RkZCLCAweDAwM0Ms IDB4NERERCwgMHg0NjZGLCAweDAwMDYsCisgICAgICAgIDB4OEFBRCwgMHgwMDRBLCAweEFFRUYs IDB4OEZGQiwgMHg0NDVELCAweDhFRUQsIDB4MTc3RiwgMHgwMDA2LCAweDIzM0QsIDB4MDAxQSwg MHg0Q0NGLCAweDAwQUEsIDB4QUZGRiwKKyAgICAgICAgMHg4OENELCAweDEzM0YsIDB4MDAwNiwg MHgwMENDLCAweDAwOEEsIDB4NzdGRiwgMHgyRkZCLCAweDQ2N0QsIDB4MUZGRCwgMHgzQkJGLCAw eDAwMDYsIDB4MkFBRCwgMHgwMDJBLAorICAgICAgICAweDAwRUUsIDB4NEZGQiwgMHgwMDVDLCAw eDJFRUQsIDB4MDA3RSwgMHgwMDA2LCAweDg5QkQsIDB4MDA0QSwgMHg0RUVGLCAweDhGRkIsIDB4 MDA2QywgMHg2N0ZELCAweDY2N0YsCisgICAgICAgIDB4MDAwNiwgMHg4ODhELCAweDAwMUEsIDB4 MDBERSwgMHgwMEFBLCAweDIyMkQsIDB4ODlERCwgMHgzMzNGLCAweDAwMDYsIDB4MkJCRCwgMHgw MDhBLCAweDU3RkYsIDB4MkZGQiwKKyAgICAgICAgMHgyMjZELCAweDAwOUMsIDB4MTk5RiwgMHgw MDA2LCAweEFBQUQsIDB4MDAyQSwgMHg5OURGLCAweDRGRkIsIDB4MDAzQywgMHg0RERELCAweDE1 NUYsIDB4MDAwNiwgMHg4QUFELAorICAgICAgICAweDAwNEEsIDB4Q0VFRiwgMHg4RkZCLCAweDQ0 NUQsIDB4OEVFRCwgMHgyNzdGLCAweDAwMDYsIDB4MjMzRCwgMHgwMDFBLCAweDFCQkYsIDB4MDBB QSwgMHgzRkZGLCAweDg4Q0QsCisgICAgICAgIDB4MTExRiwgMHgwMDA2LCAweDQ1REQsIDB4MkZG QiwgMHgxMTFELCAweDAwMTgsIDB4NDY3RCwgMHg4RkZELCAweENDQ0YsIDB4MDAwNiwgMHgxOUJE LCAweDAwNEEsIDB4MjJFRiwKKyAgICAgICAgMHgwMDJBLCAweDIyMkQsIDB4M0ZGRCwgMHg4ODhG LCAweDAwMDYsIDB4MDBDQywgMHgwMDhBLCAweDAwRkUsIDB4MDAxOCwgMHgxMTVELCAweENGRkQs IDB4OEFBRiwgMHgwMDA2LAorICAgICAgICAweDAwQUMsIDB4MDAzQSwgMHg4Q0RGLCAweDFGRkIs IDB4MTMzRCwgMHg2NkZELCAweDQ2NkYsIDB4MDAwNiwgMHg4Q0NELCAweDJGRkIsIDB4NUZGRiwg MHgwMDE4LCAweDAwNkMsCisgICAgICAgIDB4NEZGRCwgMHhBQkJGLCAweDAwMDYsIDB4MjJBRCwg MHgwMDRBLCAweDAwRUUsIDB4MDAyQSwgMHgyMzNELCAweEFFRkQsIDB4Mzc3RiwgMHgwMDA2LCAw eDJCQkQsIDB4MDA4QSwKKyAgICAgICAgMHg1NURGLCAweDAwMTgsIDB4MDA1QywgMHgxNzdELCAw eDExOUYsIDB4MDAwNiwgMHgwMDlDLCAweDAwM0EsIDB4NENDRiwgMHgxRkZCLCAweDMzM0QsIDB4 OEVFRCwgMHg0NDRGLAorICAgICAgICAweDAwMDYsIDB4NDVERCwgMHgyRkZCLCAweDExMUQsIDB4 MDAxOCwgMHg0NjdELCAweDhGRkQsIDB4OTlCRiwgMHgwMDA2LCAweDE5QkQsIDB4MDA0QSwgMHgy RUVGLCAweDAwMkEsCisgICAgICAgIDB4MjIyRCwgMHgzRkZELCAweDY2N0YsIDB4MDAwNiwgMHgw MENDLCAweDAwOEEsIDB4NEVFRiwgMHgwMDE4LCAweDExNUQsIDB4Q0ZGRCwgMHg4OTlGLCAweDAw MDYsIDB4MDBBQywKKyAgICAgICAgMHgwMDNBLCAweDAwREUsIDB4MUZGQiwgMHgxMzNELCAweDY2 RkQsIDB4MjI2RiwgMHgwMDA2LCAweDhDQ0QsIDB4MkZGQiwgMHg5QkZGLCAweDAwMTgsIDB4MDA2 QywgMHg0RkZELAorICAgICAgICAweDAwQkUsIDB4MDAwNiwgMHgyMkFELCAweDAwNEEsIDB4MURE RiwgMHgwMDJBLCAweDIzM0QsIDB4QUVGRCwgMHgwMDdFLCAweDAwMDYsIDB4MkJCRCwgMHgwMDhB LCAweENFRUYsCisgICAgICAgIDB4MDAxOCwgMHgwMDVDLCAweDE3N0QsIDB4Mjc3RiwgMHgwMDA2 LCAweDAwOUMsIDB4MDAzQSwgMHg4QkJGLCAweDFGRkIsIDB4MzMzRCwgMHg4RUVELCAweDQ1NUYs IDB4MUZGOSwKKyAgICAgICAgMHgxRERELCAweEFGRkIsIDB4MDBERSwgMHg4RkY5LCAweDAwMUMs IDB4RkZGQiwgMHg0NzdGLCAweDRGRjksIDB4MTc3RCwgMHgzRkZCLCAweDNCQkYsIDB4MkZGOSwg MHhBRUVGLAorICAgICAgICAweDhFRUQsIDB4NDQ0RiwgMHgxRkY5LCAweDIyQUQsIDB4MDAwQSwg MHg4QkJGLCAweDhGRjksIDB4MDBGRSwgMHhDRkZELCAweDAwN0UsIDB4NEZGOSwgMHgxMTVELCAw eDVGRkIsCisgICAgICAgIDB4NTc3RiwgMHgyRkY5LCAweDhEREYsIDB4MkVFRCwgMHgzMzNGLCAw eDFGRjksIDB4MkJCRCwgMHhBRkZCLCAweDg4Q0YsIDB4OEZGOSwgMHhCRkZGLCAweEZGRkIsIDB4 Mzc3RiwKKyAgICAgICAgMHg0RkY5LCAweDAwNkQsIDB4M0ZGQiwgMHgwMEJFLCAweDJGRjksIDB4 NjZFRiwgMHg5RkZELCAweDEzM0YsIDB4MUZGOSwgMHgwMDlELCAweDAwMEEsIDB4QUJCRiwgMHg4 RkY5LAorICAgICAgICAweERGRkYsIDB4NkZGRCwgMHgwMDZFLCAweDRGRjksIDB4MDAyQywgMHg1 RkZCLCAweDg4OEYsIDB4MkZGOSwgMHhDRERGLCAweDREREQsIDB4MjIyRiwgMHgxRkY5LCAweDFE REQsCisgICAgICAgIDB4QUZGQiwgMHg0Q0NGLCAweDhGRjksIDB4MDAxQywgMHhGRkZCLCAweDI3 N0YsIDB4NEZGOSwgMHgxNzdELCAweDNGRkIsIDB4OTlCRiwgMHgyRkY5LCAweENFRUYsIDB4OEVF RCwKKyAgICAgICAgMHgwMDRFLCAweDFGRjksIDB4MjJBRCwgMHgwMDBBLCAweDAwQUUsIDB4OEZG OSwgMHg3RkZGLCAweENGRkQsIDB4MDA1RSwgMHg0RkY5LCAweDExNUQsIDB4NUZGQiwgMHgwMDlF LAorICAgICAgICAweDJGRjksIDB4NURERiwgMHgyRUVELCAweDAwM0UsIDB4MUZGOSwgMHgyQkJE LCAweEFGRkIsIDB4MDBDRSwgMHg4RkY5LCAweEVGRkYsIDB4RkZGQiwgMHg2NjdGLCAweDRGRjks CisgICAgICAgIDB4MDA2RCwgMHgzRkZCLCAweDhBQUYsIDB4MkZGOSwgMHgwMEVFLCAweDlGRkQs IDB4MjMzRiwgMHgxRkY5LCAweDAwOUQsIDB4MDAwQSwgMHgxQkJGLCAweDhGRjksIDB4NEVFRiwK KyAgICAgICAgMHg2RkZELCAweDQ1NUYsIDB4NEZGOSwgMHgwMDJDLCAweDVGRkIsIDB4MDA4RSwg MHgyRkY5LCAweDk5REYsIDB4NERERCwgMHgxMTFGfTsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv anBlZzIwMDBodGRlYy5oIGIvbGliYXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNTcyZDA5NWM5MgotLS0gL2Rldi9udWxsCisrKyBi L2xpYmF2Y29kZWMvanBlZzIwMDBodGRlYy5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5 cmlnaHQgKGMpIDIwMjIgQ2FsZWIgRXRlbWVzaSA8ZXRlbWVzaWNhbGViQGdtYWlsLmNvbT4KKyAq CisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs b29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBBVkNPREVDX0pQ RUcyMDAwSFRERUNfSAorI2RlZmluZSBBVkNPREVDX0pQRUcyMDAwSFRERUNfSAorCisjaW5jbHVk ZSAianBlZzIwMDBkZWMuaCIKKworLyoqCisgKiBIVCBCbG9jayBkZWNvZGVyIGFzIHNwZWNpZmll ZCBpbiBSZWMuIElUVS1UIFQuODE0IHwgSVNPL0lFQyAxNTQ0NC0xNQorICovCisKK2ludCBmZl9q cGVnMjAwMF9kZWNvZGVfaHRqMmsoY29uc3QgSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywgSnBl ZzIwMDBDb2RpbmdTdHlsZSAqY29kc3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpw ZWcyMDAwVDFDb250ZXh0ICp0MSwgSnBlZzIwMDBDYmxrICpjYmxrLCBpbnQgd2lkdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwgaW50IG1hZ3AsIHVpbnQ4X3Qgcm9p X3NoaWZ0KTsKKworI2VuZGlmIC8qIEFWQ09ERUNfSlBFRzIwMDBIVERFQ19IICovCi0tIAoyLjI1 LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBl Zy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1w ZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlz aXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3 aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K