Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1opUdi-0008It-GR for pgsql-hackers@arkaria.postgresql.org; Mon, 31 Oct 2022 13:15:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1opUdh-0006tl-DL for pgsql-hackers@arkaria.postgresql.org; Mon, 31 Oct 2022 13:15:41 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1opUdg-0006tb-F1 for pgsql-hackers@lists.postgresql.org; Mon, 31 Oct 2022 13:15:41 +0000 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1opUda-0003lM-4m for pgsql-hackers@lists.postgresql.org; Mon, 31 Oct 2022 13:15:39 +0000 Received: by mail-wm1-x331.google.com with SMTP id m29-20020a05600c3b1d00b003c6bf423c71so10794960wms.0 for ; Mon, 31 Oct 2022 06:15:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=ZYqYI6kFEC8HjuAHp3q78aahdR2nMTCbh502sS/xwFI=; b=dBTa1SV+xS04ugB4ap6J+6MNbigC+vkjk7jiVJYXNc7GG+eKvsaR6apmAAMyckUgAl ce69y1aw9JTSLmNTKX36wiRntIjvtIYfmYrMI5v5vllkOqx5CJFgb5JAmNms7F4xFPpt 46L3fA6Rr4WL+rq/Aw86zOy8z01cH2ogWc/dsQCPmumzjmWshsrfzQHeHGyilWOULcRH 9bd2srJCJG1MS13yulDN/yuBxgHwtv8o2mnB+E+f/NcW40TYToLnJqwGcC9l6CQX9Wqq RrCzkqx6oGSglPqVwkOX+1Cpvy6v7SoPlAPeFQTj6pVnNmxGRylGI3bLdQXaAHuwlHQq Ezng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ZYqYI6kFEC8HjuAHp3q78aahdR2nMTCbh502sS/xwFI=; b=rR4A+U6rLWJZ45oBhAsLEvdlLdmKLTZSbtT+xcjWBfQV5hBX4YSGcOPMC1cLgld8kW b3pdVd+PeL+oLdQP+9qRoaeWsGYENA+VAFqMgILR03SzbEP6SYjyye11WNaX5xRs9p5B UFhnG64EweRwR0YUhiDuMjCcQRH5Pv+iwZWMOHjydyYjxpEquGlo2J1Zuags9N+c3Xi3 lxm4XZVGX/0W98yXOhaIPJNV7QIPi+1BlxL9FxgZdrADXxNthq0VFiIm9+cOzEjww+x4 FbhTzgP+xrFzArmFv1eVWctKYGPZZOQHga7LvaNPlBz0ZinUMdurVIawecpZ1IvFCxkb Afcg== X-Gm-Message-State: ACrzQf17I4Q0HuP1JstvzayAscTh4WS6Tak3u63FnxgHsNjIRdTaZ7/Q VLlFO6eo+S88zmf6VRc5sE5gdwSYROKL9g== X-Google-Smtp-Source: AMsMyM5J9gRCntnt9iBnnDVygRL0KZQIaeB0cfH8wZU7bnKqj4I4zfrZfmlzlpmtn+RH/gmzmdRD4w== X-Received: by 2002:a1c:f30d:0:b0:3c3:7c80:67f4 with SMTP id q13-20020a1cf30d000000b003c37c8067f4mr8070508wmq.86.1667222132411; Mon, 31 Oct 2022 06:15:32 -0700 (PDT) Received: from [192.168.4.180] ([54.239.6.190]) by smtp.gmail.com with ESMTPSA id i11-20020a1c540b000000b003a3442f1229sm7275705wmb.29.2022.10.31.06.15.31 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 31 Oct 2022 06:15:31 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------TO0jC2Vg70JKB9MPH0GgeSqf" Message-ID: Date: Mon, 31 Oct 2022 14:14:15 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Content-Language: en-US From: "Drouvot, Bertrand" Subject: Split index and table statistics into different types of stats To: PostgreSQL Hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------TO0jC2Vg70JKB9MPH0GgeSqf Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi hackers, Please find attached a patch proposal to split index and table statistics into different types of stats. This idea has been proposed by Andres in a couple of threads, see [1] and [2]. To sum up: We currently track index and table types of statistics in the same format (so that a number of the "columns" in index stats are currently unused) and we rename column in views etc to make them somewhat sensible. So that the immediate benefits to $SUBJECT are: - have reasonable names for the fields - shrink the current memory usage The attached patch proposal: - renames PGSTAT_KIND_RELATION to PGSTAT_KIND_TABLE - creates a new PGSTAT_KIND_INDEX - creates new macros: pgstat_count_index_fetch(), pgstat_count_index_scan(), pgstat_count_index_tuples(), pgstat_count_index_buffer_read() and pgstat_count_index_buffer_hit() to increment the indexes related stats - creates new SQL callable functions dedicated to the indexes that are used in system_views.sql It also adds basic tests in src/test/regress/sql/stats.sql for toast and partitions (we may want to create a dedicated patch for those additional tests though). The fields renaming has not been done to ease the reading of this patch (I think it would be better to create a dedicated patch for the renaming once the split is done). I'm adding a new CF entry for this patch. Looking forward to your feedback, Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com [1]: https://www.postgresql.org/message-id/flat/20221019181930.bx73kul4nbiftr65%40awork3.anarazel.de [2]: https://www.postgresql.org/message-id/20220818195124.c7ipzf6c5v7vxymc%40awork3.anarazel.de --------------TO0jC2Vg70JKB9MPH0GgeSqf Content-Type: text/plain; charset=UTF-8; name="v1-0001-split_tables_indexes_stats.patch" Content-Disposition: attachment; filename="v1-0001-split_tables_indexes_stats.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCmluZGV4IGZlODBiOGIwYmEuLmExZGVm YzY4MzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtNTgyLDcgKzU4 Miw3IEBAIGluZGV4X2ZldGNoX2hlYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBUdXBsZVRhYmxl U2xvdCAqc2xvdCkKIAkJCQkJCQkJCSZzY2FuLT54c19oZWFwX2NvbnRpbnVlLCAmYWxsX2Rl YWQpOwogCiAJaWYgKGZvdW5kKQotCQlwZ3N0YXRfY291bnRfaGVhcF9mZXRjaChzY2FuLT5p bmRleFJlbGF0aW9uKTsKKwkJcGdzdGF0X2NvdW50X2luZGV4X2ZldGNoKHNjYW4tPmluZGV4 UmVsYXRpb24pOwogCiAJLyoKIAkgKiBJZiB3ZSBzY2FubmVkIGEgd2hvbGUgSE9UIGNoYWlu IGFuZCBmb3VuZCBvbmx5IGRlYWQgdHVwbGVzLCB0ZWxsIGluZGV4CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5j CmluZGV4IDViNDljYzVhMDkuLjhhNzE1ZGI4MmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCkBAIC0x ODUzLDcgKzE4NTMsNyBAQCBoZWFwX2Ryb3Bfd2l0aF9jYXRhbG9nKE9pZCByZWxpZCkKIAkJ UmVsYXRpb25Ecm9wU3RvcmFnZShyZWwpOwogCiAJLyogZW5zdXJlIHRoYXQgc3RhdHMgYXJl IGRyb3BwZWQgaWYgdHJhbnNhY3Rpb24gY29tbWl0cyAqLwotCXBnc3RhdF9kcm9wX3JlbGF0 aW9uKHJlbCk7CisJcGdzdGF0X2Ryb3BfaGVhcChyZWwpOwogCiAJLyoKIAkgKiBDbG9zZSBy ZWxjYWNoZSBlbnRyeSwgYnV0ICprZWVwKiBBY2Nlc3NFeGNsdXNpdmVMb2NrIG9uIHRoZSBy ZWxhdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDYxZjFkMzkyNmEuLjI4Yjk0ZmVmN2Yg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE3NTIsNyArMTc1Miw3IEBAIGluZGV4X2NvbmN1 cnJlbnRseV9zd2FwKE9pZCBuZXdJbmRleElkLCBPaWQgb2xkSW5kZXhJZCwgY29uc3QgY2hh ciAqb2xkTmFtZSkKIAljaGFuZ2VEZXBlbmRlbmNpZXNPbihSZWxhdGlvblJlbGF0aW9uSWQs IG9sZEluZGV4SWQsIG5ld0luZGV4SWQpOwogCiAJLyogY29weSBvdmVyIHN0YXRpc3RpY3Mg ZnJvbSBvbGQgdG8gbmV3IGluZGV4ICovCi0JcGdzdGF0X2NvcHlfcmVsYXRpb25fc3RhdHMo bmV3Q2xhc3NSZWwsIG9sZENsYXNzUmVsKTsKKwlwZ3N0YXRfY29weV9pbmRleF9zdGF0cyhu ZXdDbGFzc1JlbCwgb2xkQ2xhc3NSZWwpOwogCiAJLyogQ29weSBkYXRhIG9mIHBnX3N0YXRp c3RpYyBmcm9tIHRoZSBvbGQgaW5kZXggdG8gdGhlIG5ldyBvbmUgKi8KIAlDb3B5U3RhdGlz dGljcyhvbGRJbmRleElkLCBuZXdJbmRleElkKTsKQEAgLTIzMjYsNyArMjMyNiw3IEBAIGlu ZGV4X2Ryb3AoT2lkIGluZGV4SWQsIGJvb2wgY29uY3VycmVudCwgYm9vbCBjb25jdXJyZW50 X2xvY2tfbW9kZSkKIAkJUmVsYXRpb25Ecm9wU3RvcmFnZSh1c2VySW5kZXhSZWxhdGlvbik7 CiAKIAkvKiBlbnN1cmUgdGhhdCBzdGF0cyBhcmUgZHJvcHBlZCBpZiB0cmFuc2FjdGlvbiBj b21taXRzICovCi0JcGdzdGF0X2Ryb3BfcmVsYXRpb24odXNlckluZGV4UmVsYXRpb24pOwor CXBnc3RhdF9kcm9wX2luZGV4KHVzZXJJbmRleFJlbGF0aW9uKTsKIAogCS8qCiAJICogQ2xv c2UgYW5kIGZsdXNoIHRoZSBpbmRleCdzIHJlbGNhY2hlIGVudHJ5LCB0byBlbnN1cmUgcmVs Y2FjaGUgZG9lc24ndApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f dmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4 IDJkODEwNGIwOTAuLmU5MmU1MGVkZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKQEAgLTY1NSwxMyArNjU1LDEzIEBAIENSRUFURSBWSUVXIHBnX3N0YXRfYWxs X3RhYmxlcyBBUwogICAgICAgICAgICAgQy5vaWQgQVMgcmVsaWQsCiAgICAgICAgICAgICBO Lm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAgICAgICAgICAgIEMucmVsbmFtZSBBUyByZWxu YW1lLAotICAgICAgICAgICAgcGdfc3RhdF9nZXRfbnVtc2NhbnMoQy5vaWQpIEFTIHNlcV9z Y2FuLAotICAgICAgICAgICAgcGdfc3RhdF9nZXRfbGFzdHNjYW4oQy5vaWQpIEFTIGxhc3Rf c2VxX3NjYW4sCi0gICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQoQy5v aWQpIEFTIHNlcV90dXBfcmVhZCwKLSAgICAgICAgICAgIHN1bShwZ19zdGF0X2dldF9udW1z Y2FucyhJLmluZGV4cmVsaWQpKTo6YmlnaW50IEFTIGlkeF9zY2FuLAotICAgICAgICAgICAg bWF4KHBnX3N0YXRfZ2V0X2xhc3RzY2FuKEkuaW5kZXhyZWxpZCkpIEFTIGxhc3RfaWR4X3Nj YW4sCi0gICAgICAgICAgICBzdW0ocGdfc3RhdF9nZXRfdHVwbGVzX2ZldGNoZWQoSS5pbmRl eHJlbGlkKSk6OmJpZ2ludCArCi0gICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfZmV0 Y2hlZChDLm9pZCkgQVMgaWR4X3R1cF9mZXRjaCwKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0 X2hlYXBfbnVtc2NhbnMoQy5vaWQpIEFTIHNlcV9zY2FuLAorICAgICAgICAgICAgcGdfc3Rh dF9nZXRfaGVhcF9sYXN0c2NhbihDLm9pZCkgQVMgbGFzdF9zZXFfc2NhbiwKKyAgICAgICAg ICAgIHBnX3N0YXRfZ2V0X2hlYXBfdHVwbGVzX3JldHVybmVkKEMub2lkKSBBUyBzZXFfdHVw X3JlYWQsCisgICAgICAgICAgICBzdW0ocGdfc3RhdF9nZXRfaW5kZXhfbnVtc2NhbnMoSS5p bmRleHJlbGlkKSk6OmJpZ2ludCBBUyBpZHhfc2NhbiwKKyAgICAgICAgICAgIG1heChwZ19z dGF0X2dldF9pbmRleF9sYXN0c2NhbihJLmluZGV4cmVsaWQpKSBBUyBsYXN0X2lkeF9zY2Fu LAorICAgICAgICAgICAgc3VtKHBnX3N0YXRfZ2V0X2luZGV4X3R1cGxlc19mZXRjaGVkKEku aW5kZXhyZWxpZCkpOjpiaWdpbnQgKworICAgICAgICAgICAgcGdfc3RhdF9nZXRfaGVhcF90 dXBsZXNfZmV0Y2hlZChDLm9pZCkgQVMgaWR4X3R1cF9mZXRjaCwKICAgICAgICAgICAgIHBn X3N0YXRfZ2V0X3R1cGxlc19pbnNlcnRlZChDLm9pZCkgQVMgbl90dXBfaW5zLAogICAgICAg ICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX3VwZCwK ICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxldGVkKEMub2lkKSBBUyBuX3R1 cF9kZWwsCkBAIC02ODksOSArNjg5LDkgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF94YWN0X2Fs bF90YWJsZXMgQVMKICAgICAgICAgICAgIEMub2lkIEFTIHJlbGlkLAogICAgICAgICAgICAg Ti5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgICAgICAgICBDLnJlbG5hbWUgQVMgcmVs bmFtZSwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfbnVtc2NhbnMoQy5vaWQpIEFT IHNlcV9zY2FuLAorICAgICAgICAgICAgcGdfc3RhdF9nZXRfaGVhcF94YWN0X251bXNjYW5z KEMub2lkKSBBUyBzZXFfc2NhbiwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX3JldHVybmVkKEMub2lkKSBBUyBzZXFfdHVwX3JlYWQsCi0gICAgICAgICAgICBzdW0o cGdfc3RhdF9nZXRfeGFjdF9udW1zY2FucyhJLmluZGV4cmVsaWQpKTo6YmlnaW50IEFTIGlk eF9zY2FuLAorICAgICAgICAgICAgc3VtKHBnX3N0YXRfZ2V0X2luZGV4X3hhY3RfbnVtc2Nh bnMoSS5pbmRleHJlbGlkKSk6OmJpZ2ludCBBUyBpZHhfc2NhbiwKICAgICAgICAgICAgIHN1 bShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19mZXRjaGVkKEkuaW5kZXhyZWxpZCkpOjpiaWdp bnQgKwogICAgICAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfZmV0Y2hlZChDLm9p ZCkgQVMgaWR4X3R1cF9mZXRjaCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2luc2VydGVkKEMub2lkKSBBUyBuX3R1cF9pbnMsCkBAIC03MjksMzEgKzcyOSwzMSBA QCBDUkVBVEUgVklFVyBwZ19zdGF0aW9fYWxsX3RhYmxlcyBBUwogICAgICAgICAgICAgQy5v aWQgQVMgcmVsaWQsCiAgICAgICAgICAgICBOLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAg ICAgICAgICAgIEMucmVsbmFtZSBBUyByZWxuYW1lLAotICAgICAgICAgICAgcGdfc3RhdF9n ZXRfYmxvY2tzX2ZldGNoZWQoQy5vaWQpIC0KLSAgICAgICAgICAgICAgICAgICAgcGdfc3Rh dF9nZXRfYmxvY2tzX2hpdChDLm9pZCkgQVMgaGVhcF9ibGtzX3JlYWQsCi0gICAgICAgICAg ICBwZ19zdGF0X2dldF9ibG9ja3NfaGl0KEMub2lkKSBBUyBoZWFwX2Jsa3NfaGl0LAorICAg ICAgICAgICAgcGdfc3RhdF9nZXRfaGVhcF9ibG9ja3NfZmV0Y2hlZChDLm9pZCkgLQorICAg ICAgICAgICAgICAgICAgICBwZ19zdGF0X2dldF9oZWFwX2Jsb2Nrc19oaXQoQy5vaWQpIEFT IGhlYXBfYmxrc19yZWFkLAorICAgICAgICAgICAgcGdfc3RhdF9nZXRfaGVhcF9ibG9ja3Nf aGl0KEMub2lkKSBBUyBoZWFwX2Jsa3NfaGl0LAogICAgICAgICAgICAgSS5pZHhfYmxrc19y ZWFkIEFTIGlkeF9ibGtzX3JlYWQsCiAgICAgICAgICAgICBJLmlkeF9ibGtzX2hpdCBBUyBp ZHhfYmxrc19oaXQsCi0gICAgICAgICAgICBwZ19zdGF0X2dldF9ibG9ja3NfZmV0Y2hlZChU Lm9pZCkgLQotICAgICAgICAgICAgICAgICAgICBwZ19zdGF0X2dldF9ibG9ja3NfaGl0KFQu b2lkKSBBUyB0b2FzdF9ibGtzX3JlYWQsCi0gICAgICAgICAgICBwZ19zdGF0X2dldF9ibG9j a3NfaGl0KFQub2lkKSBBUyB0b2FzdF9ibGtzX2hpdCwKKyAgICAgICAgICAgIHBnX3N0YXRf Z2V0X2hlYXBfYmxvY2tzX2ZldGNoZWQoVC5vaWQpIC0KKyAgICAgICAgICAgICAgICAgICAg cGdfc3RhdF9nZXRfaGVhcF9ibG9ja3NfaGl0KFQub2lkKSBBUyB0b2FzdF9ibGtzX3JlYWQs CisgICAgICAgICAgICBwZ19zdGF0X2dldF9oZWFwX2Jsb2Nrc19oaXQoVC5vaWQpIEFTIHRv YXN0X2Jsa3NfaGl0LAogICAgICAgICAgICAgWC5pZHhfYmxrc19yZWFkIEFTIHRpZHhfYmxr c19yZWFkLAogICAgICAgICAgICAgWC5pZHhfYmxrc19oaXQgQVMgdGlkeF9ibGtzX2hpdAog ICAgIEZST00gcGdfY2xhc3MgQyBMRUZUIEpPSU4KICAgICAgICAgICAgIHBnX2NsYXNzIFQg T04gQy5yZWx0b2FzdHJlbGlkID0gVC5vaWQKICAgICAgICAgICAgIExFRlQgSk9JTiBwZ19u YW1lc3BhY2UgTiBPTiAoTi5vaWQgPSBDLnJlbG5hbWVzcGFjZSkKICAgICAgICAgICAgIExF RlQgSk9JTiBMQVRFUkFMICgKLSAgICAgICAgICAgICAgU0VMRUNUIHN1bShwZ19zdGF0X2dl dF9ibG9ja3NfZmV0Y2hlZChpbmRleHJlbGlkKSAtCi0gICAgICAgICAgICAgICAgICAgICAg ICAgcGdfc3RhdF9nZXRfYmxvY2tzX2hpdChpbmRleHJlbGlkKSk6OmJpZ2ludAorICAgICAg ICAgICAgICBTRUxFQ1Qgc3VtKHBnX3N0YXRfZ2V0X2luZGV4X2Jsb2Nrc19mZXRjaGVkKGlu ZGV4cmVsaWQpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICBwZ19zdGF0X2dldF9pbmRl eF9ibG9ja3NfaGl0KGluZGV4cmVsaWQpKTo6YmlnaW50CiAgICAgICAgICAgICAgICAgICAg ICBBUyBpZHhfYmxrc19yZWFkLAotICAgICAgICAgICAgICAgICAgICAgc3VtKHBnX3N0YXRf Z2V0X2Jsb2Nrc19oaXQoaW5kZXhyZWxpZCkpOjpiaWdpbnQKKyAgICAgICAgICAgICAgICAg ICAgIHN1bShwZ19zdGF0X2dldF9pbmRleF9ibG9ja3NfaGl0KGluZGV4cmVsaWQpKTo6Ymln aW50CiAgICAgICAgICAgICAgICAgICAgICBBUyBpZHhfYmxrc19oaXQKICAgICAgICAgICAg ICAgRlJPTSBwZ19pbmRleCBXSEVSRSBpbmRyZWxpZCA9IEMub2lkICkgSSBPTiB0cnVlCiAg ICAgICAgICAgICBMRUZUIEpPSU4gTEFURVJBTCAoCi0gICAgICAgICAgICAgIFNFTEVDVCBz dW0ocGdfc3RhdF9nZXRfYmxvY2tzX2ZldGNoZWQoaW5kZXhyZWxpZCkgLQotICAgICAgICAg ICAgICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2Jsb2Nrc19oaXQoaW5kZXhyZWxpZCkpOjpi aWdpbnQKKyAgICAgICAgICAgICAgU0VMRUNUIHN1bShwZ19zdGF0X2dldF9pbmRleF9ibG9j a3NfZmV0Y2hlZChpbmRleHJlbGlkKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgcGdf c3RhdF9nZXRfaW5kZXhfYmxvY2tzX2hpdChpbmRleHJlbGlkKSk6OmJpZ2ludAogICAgICAg ICAgICAgICAgICAgICAgQVMgaWR4X2Jsa3NfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAg IHN1bShwZ19zdGF0X2dldF9ibG9ja3NfaGl0KGluZGV4cmVsaWQpKTo6YmlnaW50CisgICAg ICAgICAgICAgICAgICAgICBzdW0ocGdfc3RhdF9nZXRfaW5kZXhfYmxvY2tzX2hpdChpbmRl eHJlbGlkKSk6OmJpZ2ludAogICAgICAgICAgICAgICAgICAgICAgQVMgaWR4X2Jsa3NfaGl0 CiAgICAgICAgICAgICAgIEZST00gcGdfaW5kZXggV0hFUkUgaW5kcmVsaWQgPSBULm9pZCAp IFggT04gdHJ1ZQogICAgIFdIRVJFIEMucmVsa2luZCBJTiAoJ3InLCAndCcsICdtJyk7CkBA IC03NzUsMTAgKzc3NSwxMCBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2FsbF9pbmRleGVzIEFT CiAgICAgICAgICAgICBOLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAgICAgICAgICAgIEMu cmVsbmFtZSBBUyByZWxuYW1lLAogICAgICAgICAgICAgSS5yZWxuYW1lIEFTIGluZGV4cmVs bmFtZSwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0X251bXNjYW5zKEkub2lkKSBBUyBpZHhf c2NhbiwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2xhc3RzY2FuKEkub2lkKSBBUyBsYXN0 X2lkeF9zY2FuLAotICAgICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3JldHVybmVkKEku b2lkKSBBUyBpZHhfdHVwX3JlYWQsCi0gICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNf ZmV0Y2hlZChJLm9pZCkgQVMgaWR4X3R1cF9mZXRjaAorICAgICAgICAgICAgcGdfc3RhdF9n ZXRfaW5kZXhfbnVtc2NhbnMoSS5vaWQpIEFTIGlkeF9zY2FuLAorICAgICAgICAgICAgcGdf c3RhdF9nZXRfaW5kZXhfbGFzdHNjYW4oSS5vaWQpIEFTIGxhc3RfaWR4X3NjYW4sCisgICAg ICAgICAgICBwZ19zdGF0X2dldF9pbmRleF90dXBsZXNfcmV0dXJuZWQoSS5vaWQpIEFTIGlk eF90dXBfcmVhZCwKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2luZGV4X3R1cGxlc19mZXRj aGVkKEkub2lkKSBBUyBpZHhfdHVwX2ZldGNoCiAgICAgRlJPTSBwZ19jbGFzcyBDIEpPSU4K ICAgICAgICAgICAgIHBnX2luZGV4IFggT04gQy5vaWQgPSBYLmluZHJlbGlkIEpPSU4KICAg ICAgICAgICAgIHBnX2NsYXNzIEkgT04gSS5vaWQgPSBYLmluZGV4cmVsaWQKQEAgLTgwMiw5 ICs4MDIsOSBAQCBDUkVBVEUgVklFVyBwZ19zdGF0aW9fYWxsX2luZGV4ZXMgQVMKICAgICAg ICAgICAgIE4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAgICAgICAgICAgQy5yZWxuYW1l IEFTIHJlbG5hbWUsCiAgICAgICAgICAgICBJLnJlbG5hbWUgQVMgaW5kZXhyZWxuYW1lLAot ICAgICAgICAgICAgcGdfc3RhdF9nZXRfYmxvY2tzX2ZldGNoZWQoSS5vaWQpIC0KLSAgICAg ICAgICAgICAgICAgICAgcGdfc3RhdF9nZXRfYmxvY2tzX2hpdChJLm9pZCkgQVMgaWR4X2Js a3NfcmVhZCwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2Jsb2Nrc19oaXQoSS5vaWQpIEFT IGlkeF9ibGtzX2hpdAorICAgICAgICAgICAgcGdfc3RhdF9nZXRfaW5kZXhfYmxvY2tzX2Zl dGNoZWQoSS5vaWQpIC0KKyAgICAgICAgICAgICAgICAgICAgcGdfc3RhdF9nZXRfaW5kZXhf YmxvY2tzX2hpdChJLm9pZCkgQVMgaWR4X2Jsa3NfcmVhZCwKKyAgICAgICAgICAgIHBnX3N0 YXRfZ2V0X2luZGV4X2Jsb2Nrc19oaXQoSS5vaWQpIEFTIGlkeF9ibGtzX2hpdAogICAgIEZS T00gcGdfY2xhc3MgQyBKT0lOCiAgICAgICAgICAgICBwZ19pbmRleCBYIE9OIEMub2lkID0g WC5pbmRyZWxpZCBKT0lOCiAgICAgICAgICAgICBwZ19jbGFzcyBJIE9OIEkub2lkID0gWC5p bmRleHJlbGlkCkBAIC04MjYsOSArODI2LDkgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdGlvX2Fs bF9zZXF1ZW5jZXMgQVMKICAgICAgICAgICAgIEMub2lkIEFTIHJlbGlkLAogICAgICAgICAg ICAgTi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgICAgICAgICBDLnJlbG5hbWUgQVMg cmVsbmFtZSwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2Jsb2Nrc19mZXRjaGVkKEMub2lk KSAtCi0gICAgICAgICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2Jsb2Nrc19oaXQoQy5vaWQp IEFTIGJsa3NfcmVhZCwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2Jsb2Nrc19oaXQoQy5v aWQpIEFTIGJsa3NfaGl0CisgICAgICAgICAgICBwZ19zdGF0X2dldF9pbmRleF9ibG9ja3Nf ZmV0Y2hlZChDLm9pZCkgLQorICAgICAgICAgICAgICAgICAgICBwZ19zdGF0X2dldF9oZWFw X2Jsb2Nrc19oaXQoQy5vaWQpIEFTIGJsa3NfcmVhZCwKKyAgICAgICAgICAgIHBnX3N0YXRf Z2V0X2hlYXBfYmxvY2tzX2hpdChDLm9pZCkgQVMgYmxrc19oaXQKICAgICBGUk9NIHBnX2Ns YXNzIEMKICAgICAgICAgICAgIExFRlQgSk9JTiBwZ19uYW1lc3BhY2UgTiBPTiAoTi5vaWQg PSBDLnJlbG5hbWVzcGFjZSkKICAgICBXSEVSRSBDLnJlbGtpbmQgPSAnUyc7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IDczZDMwYmY2MTkuLjJlM2I5ODJhYWUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC03NzYsMTEgKzc3Niwx OSBAQCBSZWFkQnVmZmVyRXh0ZW5kZWQoUmVsYXRpb24gcmVsbiwgRm9ya051bWJlciBmb3Jr TnVtLCBCbG9ja051bWJlciBibG9ja051bSwKIAkgKiBSZWFkIHRoZSBidWZmZXIsIGFuZCB1 cGRhdGUgcGdzdGF0IGNvdW50ZXJzIHRvIHJlZmxlY3QgYSBjYWNoZSBoaXQgb3IKIAkgKiBt aXNzLgogCSAqLwotCXBnc3RhdF9jb3VudF9idWZmZXJfcmVhZChyZWxuKTsKKwlpZiAocmVs bi0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfSU5ERVgpCisJCXBnc3RhdF9jb3VudF9p bmRleF9idWZmZXJfcmVhZChyZWxuKTsKKwllbHNlCisJCXBnc3RhdF9jb3VudF9oZWFwX2J1 ZmZlcl9yZWFkKHJlbG4pOwogCWJ1ZiA9IFJlYWRCdWZmZXJfY29tbW9uKFJlbGF0aW9uR2V0 U21ncihyZWxuKSwgcmVsbi0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQlmb3Jr TnVtLCBibG9ja051bSwgbW9kZSwgc3RyYXRlZ3ksICZoaXQpOwogCWlmIChoaXQpCi0JCXBn c3RhdF9jb3VudF9idWZmZXJfaGl0KHJlbG4pOworCXsKKwkJaWYgKHJlbG4tPnJkX3JlbC0+ cmVsa2luZCA9PSBSRUxLSU5EX0lOREVYKQorCQkJcGdzdGF0X2NvdW50X2luZGV4X2J1ZmZl cl9oaXQocmVsbik7CisJCWVsc2UKKwkJCXBnc3RhdF9jb3VudF9oZWFwX2J1ZmZlcl9oaXQo cmVsbik7CisJfQogCXJldHVybiBidWY7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3Bnc3RhdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv cGdzdGF0LmMKaW5kZXggMWViZTNiYmYyOS4uOTM0OWQ3ZjAwYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvcGdzdGF0LmMKQEAgLTI2OSwxOCArMjY5LDMyIEBAIHN0YXRpYyBjb25z dCBQZ1N0YXRfS2luZEluZm8gcGdzdGF0X2tpbmRfaW5mb3NbUEdTVEFUX05VTV9LSU5EU10g PSB7CiAJCS5yZXNldF90aW1lc3RhbXBfY2IgPSBwZ3N0YXRfZGF0YWJhc2VfcmVzZXRfdGlt ZXN0YW1wX2NiLAogCX0sCiAKLQlbUEdTVEFUX0tJTkRfUkVMQVRJT05dID0gewotCQkubmFt ZSA9ICJyZWxhdGlvbiIsCisJW1BHU1RBVF9LSU5EX1RBQkxFXSA9IHsKKwkJLm5hbWUgPSAi dGFibGUiLAogCiAJCS5maXhlZF9hbW91bnQgPSBmYWxzZSwKIAotCQkuc2hhcmVkX3NpemUg PSBzaXplb2YoUGdTdGF0U2hhcmVkX1JlbGF0aW9uKSwKLQkJLnNoYXJlZF9kYXRhX29mZiA9 IG9mZnNldG9mKFBnU3RhdFNoYXJlZF9SZWxhdGlvbiwgc3RhdHMpLAotCQkuc2hhcmVkX2Rh dGFfbGVuID0gc2l6ZW9mKCgoUGdTdGF0U2hhcmVkX1JlbGF0aW9uICopIDApLT5zdGF0cyks CisJCS5zaGFyZWRfc2l6ZSA9IHNpemVvZihQZ1N0YXRTaGFyZWRfVGFibGUpLAorCQkuc2hh cmVkX2RhdGFfb2ZmID0gb2Zmc2V0b2YoUGdTdGF0U2hhcmVkX1RhYmxlLCBzdGF0cyksCisJ CS5zaGFyZWRfZGF0YV9sZW4gPSBzaXplb2YoKChQZ1N0YXRTaGFyZWRfVGFibGUgKikgMCkt PnN0YXRzKSwKIAkJLnBlbmRpbmdfc2l6ZSA9IHNpemVvZihQZ1N0YXRfVGFibGVTdGF0dXMp LAogCi0JCS5mbHVzaF9wZW5kaW5nX2NiID0gcGdzdGF0X3JlbGF0aW9uX2ZsdXNoX2NiLAot CQkuZGVsZXRlX3BlbmRpbmdfY2IgPSBwZ3N0YXRfcmVsYXRpb25fZGVsZXRlX3BlbmRpbmdf Y2IsCisJCS5mbHVzaF9wZW5kaW5nX2NiID0gcGdzdGF0X3RhYmxlX2ZsdXNoX2NiLAorCQku ZGVsZXRlX3BlbmRpbmdfY2IgPSBwZ3N0YXRfdGFibGVfZGVsZXRlX3BlbmRpbmdfY2IsCisJ fSwKKworCVtQR1NUQVRfS0lORF9JTkRFWF0gPSB7CisJCS5uYW1lID0gImluZGV4IiwKKwor CQkuZml4ZWRfYW1vdW50ID0gZmFsc2UsCisKKwkJLnNoYXJlZF9zaXplID0gc2l6ZW9mKFBn U3RhdFNoYXJlZF9JbmRleCksCisJCS5zaGFyZWRfZGF0YV9vZmYgPSBvZmZzZXRvZihQZ1N0 YXRTaGFyZWRfSW5kZXgsIHN0YXRzKSwKKwkJLnNoYXJlZF9kYXRhX2xlbiA9IHNpemVvZigo KFBnU3RhdFNoYXJlZF9JbmRleCAqKSAwKS0+c3RhdHMpLAorCQkucGVuZGluZ19zaXplID0g c2l6ZW9mKFBnU3RhdF9JbmRleFN0YXR1cyksCisKKwkJLmZsdXNoX3BlbmRpbmdfY2IgPSBw Z3N0YXRfaW5kZXhfZmx1c2hfY2IsCisJCS5kZWxldGVfcGVuZGluZ19jYiA9IHBnc3RhdF9p bmRleF9kZWxldGVfcGVuZGluZ19jYiwKIAl9LAogCiAJW1BHU1RBVF9LSU5EX0ZVTkNUSU9O XSA9IHsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9y ZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9u LmMKaW5kZXggNTVhMzU1ZjU4My4uNWQzMGI0YzI0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKQEAgLTQzLDM1ICs0MywzNSBAQCB0 eXBlZGVmIHN0cnVjdCBUd29QaGFzZVBnU3RhdFJlY29yZAogfSBUd29QaGFzZVBnU3RhdFJl Y29yZDsKIAogCi1zdGF0aWMgUGdTdGF0X1RhYmxlU3RhdHVzICpwZ3N0YXRfcHJlcF9yZWxh dGlvbl9wZW5kaW5nKE9pZCByZWxfaWQsIGJvb2wgaXNzaGFyZWQpOwotc3RhdGljIHZvaWQg YWRkX3RhYnN0YXRfeGFjdF9sZXZlbChQZ1N0YXRfVGFibGVTdGF0dXMgKnBnc3RhdF9pbmZv LCBpbnQgbmVzdF9sZXZlbCk7Ci1zdGF0aWMgdm9pZCBlbnN1cmVfdGFic3RhdF94YWN0X2xl dmVsKFBnU3RhdF9UYWJsZVN0YXR1cyAqcGdzdGF0X2luZm8pOworc3RhdGljIFBnU3RhdF9U YWJsZVN0YXR1cyAqcGdzdGF0X3ByZXBfdGFibGVfcGVuZGluZyhPaWQgcmVsX2lkLCBib29s IGlzc2hhcmVkKTsKK3N0YXRpYyBQZ1N0YXRfSW5kZXhTdGF0dXMgKnBnc3RhdF9wcmVwX2lu ZGV4X3BlbmRpbmcoT2lkIHJlbF9pZCwgYm9vbCBpc3NoYXJlZCk7CitzdGF0aWMgdm9pZCBh ZGRfdGFic3RhdF94YWN0X2xldmVsKFBnU3RhdF9UYWJsZVN0YXR1cyAqcGdzdGF0dGFiX2lu Zm8sIGludCBuZXN0X2xldmVsKTsKK3N0YXRpYyB2b2lkIGVuc3VyZV90YWJzdGF0X3hhY3Rf bGV2ZWwoUGdTdGF0X1RhYmxlU3RhdHVzICpwZ3N0YXR0YWJfaW5mbyk7CiBzdGF0aWMgdm9p ZCBzYXZlX3RydW5jZHJvcF9jb3VudGVycyhQZ1N0YXRfVGFibGVYYWN0U3RhdHVzICp0cmFu cywgYm9vbCBpc19kcm9wKTsKIHN0YXRpYyB2b2lkIHJlc3RvcmVfdHJ1bmNkcm9wX2NvdW50 ZXJzKFBnU3RhdF9UYWJsZVhhY3RTdGF0dXMgKnRyYW5zKTsKIAotCiAvKgotICogQ29weSBz dGF0cyBiZXR3ZWVuIHJlbGF0aW9ucy4gVGhpcyBpcyB1c2VkIGZvciB0aGluZ3MgbGlrZSBS RUlOREVYCisgKiBDb3B5IHN0YXRzIGJldHdlZW4gaW5kZXhlcy4gVGhpcyBpcyB1c2VkIGZv ciB0aGluZ3MgbGlrZSBSRUlOREVYCiAgKiBDT05DVVJSRU5UTFkuCiAgKi8KIHZvaWQKLXBn c3RhdF9jb3B5X3JlbGF0aW9uX3N0YXRzKFJlbGF0aW9uIGRzdCwgUmVsYXRpb24gc3JjKQor cGdzdGF0X2NvcHlfaW5kZXhfc3RhdHMoUmVsYXRpb24gZHN0LCBSZWxhdGlvbiBzcmMpCiB7 Ci0JUGdTdGF0X1N0YXRUYWJFbnRyeSAqc3Jjc3RhdHM7Ci0JUGdTdGF0U2hhcmVkX1JlbGF0 aW9uICpkc3RzaHN0YXRzOworCVBnU3RhdF9TdGF0SW5kRW50cnkgKnNyY3N0YXRzOworCVBn U3RhdFNoYXJlZF9JbmRleCAqZHN0c2hzdGF0czsKIAlQZ1N0YXRfRW50cnlSZWYgKmRzdF9y ZWY7CiAKLQlzcmNzdGF0cyA9IHBnc3RhdF9mZXRjaF9zdGF0X3RhYmVudHJ5X2V4dChzcmMt PnJkX3JlbC0+cmVsaXNzaGFyZWQsCisJc3Jjc3RhdHMgPSBwZ3N0YXRfZmV0Y2hfc3RhdF9p bmRlbnRyeV9leHQoc3JjLT5yZF9yZWwtPnJlbGlzc2hhcmVkLAogCQkJCQkJCQkJCQkgIFJl bGF0aW9uR2V0UmVsaWQoc3JjKSk7CiAJaWYgKCFzcmNzdGF0cykKIAkJcmV0dXJuOwogCi0J ZHN0X3JlZiA9IHBnc3RhdF9nZXRfZW50cnlfcmVmX2xvY2tlZChQR1NUQVRfS0lORF9SRUxB VElPTiwKKwlkc3RfcmVmID0gcGdzdGF0X2dldF9lbnRyeV9yZWZfbG9ja2VkKFBHU1RBVF9L SU5EX0lOREVYLAogCQkJCQkJCQkJCSAgZHN0LT5yZF9yZWwtPnJlbGlzc2hhcmVkID8gSW52 YWxpZE9pZCA6IE15RGF0YWJhc2VJZCwKIAkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsaWQo ZHN0KSwKIAkJCQkJCQkJCQkgIGZhbHNlKTsKIAotCWRzdHNoc3RhdHMgPSAoUGdTdGF0U2hh cmVkX1JlbGF0aW9uICopIGRzdF9yZWYtPnNoYXJlZF9zdGF0czsKKwlkc3RzaHN0YXRzID0g KFBnU3RhdFNoYXJlZF9JbmRleCAqKSBkc3RfcmVmLT5zaGFyZWRfc3RhdHM7CiAJZHN0c2hz dGF0cy0+c3RhdHMgPSAqc3Jjc3RhdHM7CiAKIAlwZ3N0YXRfdW5sb2NrX2VudHJ5KGRzdF9y ZWYpOwpAQCAtODEsOCArODEsOSBAQCBwZ3N0YXRfY29weV9yZWxhdGlvbl9zdGF0cyhSZWxh dGlvbiBkc3QsIFJlbGF0aW9uIHNyYykKICAqIEluaXRpYWxpemUgYSByZWxjYWNoZSBlbnRy eSB0byBjb3VudCBhY2Nlc3Mgc3RhdGlzdGljcy4gIENhbGxlZCB3aGVuZXZlciBhCiAgKiBy ZWxhdGlvbiBpcyBvcGVuZWQuCiAgKgotICogV2UgYXNzdW1lIHRoYXQgYSByZWxjYWNoZSBl bnRyeSdzIHBnc3RhdF9pbmZvIGZpZWxkIGlzIHplcm9lZCBieSByZWxjYWNoZS5jCi0gKiB3 aGVuIHRoZSByZWxjYWNoZSBlbnRyeSBpcyBtYWRlOyB0aGVyZWFmdGVyIGl0IGlzIGxvbmct bGl2ZWQgZGF0YS4KKyAqIFdlIGFzc3VtZSB0aGF0IGEgcmVsY2FjaGUgZW50cnkncyBwZ3N0 YXR0YWJfaW5mbyBhbmQgcGdzdGF0aW5kX2luZm8gZmllbGRzCisgKiBhcmUgemVyb2VkIGJ5 IHJlbGNhY2hlLmMgd2hlbiB0aGUgcmVsY2FjaGUgZW50cnkgaXMgbWFkZTsgdGhlcmVhZnRl ciBpdCBpcworICogbG9uZy1saXZlZCBkYXRhLgogICoKICAqIFRoaXMgZG9lcyBub3QgY3Jl YXRlIGEgcmVmZXJlbmNlIHRvIGEgc3RhdHMgZW50cnkgaW4gc2hhcmVkIG1lbW9yeSwgbm9y CiAgKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBwZW5kaW5nIHN0YXRzLiBUaGF0IGhhcHBl bnMgaW4KQEAgLTk5LDE4ICsxMDAsMjAgQEAgcGdzdGF0X2luaXRfcmVsYXRpb24oUmVsYXRp b24gcmVsKQogCWlmICghUkVMS0lORF9IQVNfU1RPUkFHRShyZWxraW5kKSAmJiByZWxraW5k ICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCiAJewogCQlyZWwtPnBnc3RhdF9lbmFi bGVkID0gZmFsc2U7Ci0JCXJlbC0+cGdzdGF0X2luZm8gPSBOVUxMOworCQlyZWwtPnBnc3Rh dHRhYl9pbmZvID0gTlVMTDsKKwkJcmVsLT5wZ3N0YXRpbmRfaW5mbyA9IE5VTEw7CiAJCXJl dHVybjsKIAl9CiAKIAlpZiAoIXBnc3RhdF90cmFja19jb3VudHMpCiAJewotCQlpZiAocmVs LT5wZ3N0YXRfaW5mbykKKwkJaWYgKHJlbC0+cGdzdGF0dGFiX2luZm8gIT0gTlVMTCB8fCBy ZWwtPnBnc3RhdGluZF9pbmZvICE9IE5VTEwpCiAJCQlwZ3N0YXRfdW5saW5rX3JlbGF0aW9u KHJlbCk7CiAKIAkJLyogV2UncmUgbm90IGNvdW50aW5nIGF0IGFsbCAqLwogCQlyZWwtPnBn c3RhdF9lbmFibGVkID0gZmFsc2U7Ci0JCXJlbC0+cGdzdGF0X2luZm8gPSBOVUxMOworCQly ZWwtPnBnc3RhdHRhYl9pbmZvID0gTlVMTDsKKwkJcmVsLT5wZ3N0YXRpbmRfaW5mbyA9IE5V TEw7CiAJCXJldHVybjsKIAl9CiAKQEAgLTExOCwxMCArMTIxLDEwIEBAIHBnc3RhdF9pbml0 X3JlbGF0aW9uKFJlbGF0aW9uIHJlbCkKIH0KIAogLyoKLSAqIFByZXBhcmUgZm9yIHN0YXRp c3RpY3MgZm9yIHRoaXMgcmVsYXRpb24gdG8gYmUgY29sbGVjdGVkLgorICogUHJlcGFyZSBm b3Igc3RhdGlzdGljcyBmb3IgdGhpcyB0YWJsZSB0byBiZSBjb2xsZWN0ZWQuCiAgKgogICog VGhpcyBlbnN1cmVzIHdlIGhhdmUgYSByZWZlcmVuY2UgdG8gdGhlIHN0YXRzIGVudHJ5IGJl Zm9yZSBzdGF0cyBjYW4gYmUKLSAqIGdlbmVyYXRlZC4gVGhhdCBpcyBpbXBvcnRhbnQgYmVj YXVzZSBhIHJlbGF0aW9uIGRyb3AgaW4gYW5vdGhlciBjb25uZWN0aW9uCisgKiBnZW5lcmF0 ZWQuIFRoYXQgaXMgaW1wb3J0YW50IGJlY2F1c2UgYSB0YWJsZSBkcm9wIGluIGFub3RoZXIg Y29ubmVjdGlvbgogICogY291bGQgb3RoZXJ3aXNlIGxlYWQgdG8gdGhlIHN0YXRzIGVudHJ5 IGJlaW5nIGRyb3BwZWQsIHdoaWNoIHRoZW4gbGF0ZXIKICAqIHdvdWxkIGdldCByZWNyZWF0 ZWQgd2hlbiBmbHVzaGluZyBzdGF0cy4KICAqCkBAIC0xMjksMjAgKzEzMiw0OCBAQCBwZ3N0 YXRfaW5pdF9yZWxhdGlvbihSZWxhdGlvbiByZWwpCiAgKiByZWxjYWNoZSBlbnRyaWVzIHRv IGJlIG9wZW5lZCB3aXRob3V0IGV2ZXIgZ2V0dGluZyBzdGF0cyByZXBvcnRlZC4KICAqLwog dm9pZAotcGdzdGF0X2Fzc29jX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCkKK3Bnc3RhdF9hc3Nv Y190YWJsZShSZWxhdGlvbiByZWwpCiB7CiAJQXNzZXJ0KHJlbC0+cGdzdGF0X2VuYWJsZWQp OwotCUFzc2VydChyZWwtPnBnc3RhdF9pbmZvID09IE5VTEwpOworCUFzc2VydChyZWwtPnBn c3RhdHRhYl9pbmZvID09IE5VTEwpOwogCiAJLyogRWxzZSBmaW5kIG9yIG1ha2UgdGhlIFBn U3RhdF9UYWJsZVN0YXR1cyBlbnRyeSwgYW5kIHVwZGF0ZSBsaW5rICovCi0JcmVsLT5wZ3N0 YXRfaW5mbyA9IHBnc3RhdF9wcmVwX3JlbGF0aW9uX3BlbmRpbmcoUmVsYXRpb25HZXRSZWxp ZChyZWwpLAorCXJlbC0+cGdzdGF0dGFiX2luZm8gPSBwZ3N0YXRfcHJlcF90YWJsZV9wZW5k aW5nKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCQkJCQkJCQkJCQlyZWwtPnJkX3JlbC0+ cmVsaXNzaGFyZWQpOworCisJLyogZG9uJ3QgYWxsb3cgbGluayBhIHN0YXRzIHRvIG11bHRp cGxlIHJlbGNhY2hlIGVudHJpZXMgKi8KKwlBc3NlcnQocmVsLT5wZ3N0YXR0YWJfaW5mby0+ cmVsYXRpb24gPT0gTlVMTCk7CisKKwkvKiBtYXJrIHRoaXMgcmVsYXRpb24gYXMgdGhlIG93 bmVyICovCisJcmVsLT5wZ3N0YXR0YWJfaW5mby0+cmVsYXRpb24gPSByZWw7Cit9CisKKy8q CisgKiBQcmVwYXJlIGZvciBzdGF0aXN0aWNzIGZvciB0aGlzIGluZGV4IHRvIGJlIGNvbGxl Y3RlZC4KKyAqCisgKiBUaGlzIGVuc3VyZXMgd2UgaGF2ZSBhIHJlZmVyZW5jZSB0byB0aGUg c3RhdHMgZW50cnkgYmVmb3JlIHN0YXRzIGNhbiBiZQorICogZ2VuZXJhdGVkLiBUaGF0IGlz IGltcG9ydGFudCBiZWNhdXNlIGFuIGluZGV4IGRyb3AgaW4gYW5vdGhlcgorICogY29ubmVj dGlvbiBjb3VsZCBvdGhlcndpc2UgbGVhZCB0byB0aGUgc3RhdHMgZW50cnkgYmVpbmcgZHJv cHBlZCwgd2hpY2ggdGhlbgorICogbGF0ZXIgd291bGQgZ2V0IHJlY3JlYXRlZCB3aGVuIGZs dXNoaW5nIHN0YXRzLgorICoKKyAqIFRoaXMgaXMgc2VwYXJhdGUgZnJvbSBwZ3N0YXRfaW5p dF9yZWxhdGlvbigpIGFzIGl0IGlzIG5vdCB1bmNvbW1vbiBmb3IKKyAqIHJlbGNhY2hlIGVu dHJpZXMgdG8gYmUgb3BlbmVkIHdpdGhvdXQgZXZlciBnZXR0aW5nIHN0YXRzIHJlcG9ydGVk LgorICovCit2b2lkCitwZ3N0YXRfYXNzb2NfaW5kZXgoUmVsYXRpb24gcmVsKQoreworCUFz c2VydChyZWwtPnBnc3RhdF9lbmFibGVkKTsKKwlBc3NlcnQocmVsLT5wZ3N0YXRpbmRfaW5m byA9PSBOVUxMKTsKKworCS8qIEVsc2UgZmluZCBvciBtYWtlIHRoZSBQZ1N0YXRfSW5kZXhT dGF0dXMgZW50cnksIGFuZCB1cGRhdGUgbGluayAqLworCXJlbC0+cGdzdGF0aW5kX2luZm8g PSBwZ3N0YXRfcHJlcF9pbmRleF9wZW5kaW5nKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKIAkJ CQkJCQkJCQkJCQlyZWwtPnJkX3JlbC0+cmVsaXNzaGFyZWQpOwogCiAJLyogZG9uJ3QgYWxs b3cgbGluayBhIHN0YXRzIHRvIG11bHRpcGxlIHJlbGNhY2hlIGVudHJpZXMgKi8KLQlBc3Nl cnQocmVsLT5wZ3N0YXRfaW5mby0+cmVsYXRpb24gPT0gTlVMTCk7CisJQXNzZXJ0KHJlbC0+ cGdzdGF0aW5kX2luZm8tPnJlbGF0aW9uID09IE5VTEwpOwogCiAJLyogbWFyayB0aGlzIHJl bGF0aW9uIGFzIHRoZSBvd25lciAqLwotCXJlbC0+cGdzdGF0X2luZm8tPnJlbGF0aW9uID0g cmVsOworCXJlbC0+cGdzdGF0aW5kX2luZm8tPnJlbGF0aW9uID0gcmVsOwogfQogCiAvKgpA QCAtMTUyLDE0ICsxODMsMjUgQEAgcGdzdGF0X2Fzc29jX3JlbGF0aW9uKFJlbGF0aW9uIHJl bCkKIHZvaWQKIHBnc3RhdF91bmxpbmtfcmVsYXRpb24oUmVsYXRpb24gcmVsKQogewotCS8q IHJlbW92ZSB0aGUgbGluayB0byBzdGF0cyBpbmZvIGlmIGFueSAqLwotCWlmIChyZWwtPnBn c3RhdF9pbmZvID09IE5VTEwpCisKKwlpZiAocmVsLT5wZ3N0YXRpbmRfaW5mbyA9PSBOVUxM ICYmIHJlbC0+cGdzdGF0dGFiX2luZm8gPT0gTlVMTCkKIAkJcmV0dXJuOwogCi0JLyogbGlu ayBzYW5pdHkgY2hlY2sgKi8KLQlBc3NlcnQocmVsLT5wZ3N0YXRfaW5mby0+cmVsYXRpb24g PT0gcmVsKTsKLQlyZWwtPnBnc3RhdF9pbmZvLT5yZWxhdGlvbiA9IE5VTEw7Ci0JcmVsLT5w Z3N0YXRfaW5mbyA9IE5VTEw7CisJLyogbGluayBzYW5pdHkgY2hlY2sgZm9yIHRoZSB0YWJs ZSBzdGF0cyAqLworCWlmIChyZWwtPnBnc3RhdHRhYl9pbmZvKQorCXsKKwkJQXNzZXJ0KHJl bC0+cGdzdGF0dGFiX2luZm8tPnJlbGF0aW9uID09IHJlbCk7CisJCXJlbC0+cGdzdGF0dGFi X2luZm8tPnJlbGF0aW9uID0gTlVMTDsKKwkJcmVsLT5wZ3N0YXR0YWJfaW5mbyA9IE5VTEw7 CisJfQorCisJLyogbGluayBzYW5pdHkgY2hlY2sgZm9yIHRoZSBpbmRleCBzdGF0cyAqLwor CWlmIChyZWwtPnBnc3RhdGluZF9pbmZvKQorCXsKKwkJQXNzZXJ0KHJlbC0+cGdzdGF0aW5k X2luZm8tPnJlbGF0aW9uID09IHJlbCk7CisJCXJlbC0+cGdzdGF0aW5kX2luZm8tPnJlbGF0 aW9uID0gTlVMTDsKKwkJcmVsLT5wZ3N0YXRpbmRfaW5mbyA9IE5VTEw7CisJfQogfQogCiAv KgpAQCAtMTY4LDM5ICsyMTAsNTUgQEAgcGdzdGF0X3VubGlua19yZWxhdGlvbihSZWxhdGlv biByZWwpCiB2b2lkCiBwZ3N0YXRfY3JlYXRlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCkKIHsK LQlwZ3N0YXRfY3JlYXRlX3RyYW5zYWN0aW9uYWwoUEdTVEFUX0tJTkRfUkVMQVRJT04sCi0J CQkJCQkJCXJlbC0+cmRfcmVsLT5yZWxpc3NoYXJlZCA/IEludmFsaWRPaWQgOiBNeURhdGFi YXNlSWQsCi0JCQkJCQkJCVJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CisJaWYgKHJlbC0+cmRf cmVsLT5yZWxraW5kID09IFJFTEtJTkRfSU5ERVgpCisJCXBnc3RhdF9jcmVhdGVfdHJhbnNh Y3Rpb25hbChQR1NUQVRfS0lORF9JTkRFWCwKKwkJCQkJCQkJCXJlbC0+cmRfcmVsLT5yZWxp c3NoYXJlZCA/IEludmFsaWRPaWQgOiBNeURhdGFiYXNlSWQsCisJCQkJCQkJCQlSZWxhdGlv bkdldFJlbGlkKHJlbCkpOworCWVsc2UKKwkJcGdzdGF0X2NyZWF0ZV90cmFuc2FjdGlvbmFs KFBHU1RBVF9LSU5EX1RBQkxFLAorCQkJCQkJCQkJcmVsLT5yZF9yZWwtPnJlbGlzc2hhcmVk ID8gSW52YWxpZE9pZCA6IE15RGF0YWJhc2VJZCwKKwkJCQkJCQkJCVJlbGF0aW9uR2V0UmVs aWQocmVsKSk7Cit9CisKKy8qCisgKiBFbnN1cmUgdGhhdCBpbmRleCBzdGF0cyBhcmUgZHJv cHBlZCBpZiB0cmFuc2FjdGlvbiBjb21taXRzLgorICovCit2b2lkCitwZ3N0YXRfZHJvcF9p bmRleChSZWxhdGlvbiByZWwpCit7CisJcGdzdGF0X2Ryb3BfdHJhbnNhY3Rpb25hbChQR1NU QVRfS0lORF9JTkRFWCwKKwkJCQkJCQkgIHJlbC0+cmRfcmVsLT5yZWxpc3NoYXJlZCA/IElu dmFsaWRPaWQgOiBNeURhdGFiYXNlSWQsCisJCQkJCQkJICBSZWxhdGlvbkdldFJlbGlkKHJl bCkpOwogfQogCiAvKgotICogRW5zdXJlIHRoYXQgc3RhdHMgYXJlIGRyb3BwZWQgaWYgdHJh bnNhY3Rpb24gY29tbWl0cy4KKyAqIEVuc3VyZSB0aGF0IHRhYmxlIHN0YXRzIGFyZSBkcm9w cGVkIGlmIHRyYW5zYWN0aW9uIGNvbW1pdHMuCiAgKi8KIHZvaWQKLXBnc3RhdF9kcm9wX3Jl bGF0aW9uKFJlbGF0aW9uIHJlbCkKK3Bnc3RhdF9kcm9wX2hlYXAoUmVsYXRpb24gcmVsKQog ewogCWludAkJCW5lc3RfbGV2ZWwgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25OZXN0TGV2ZWwo KTsKLQlQZ1N0YXRfVGFibGVTdGF0dXMgKnBnc3RhdF9pbmZvOworCVBnU3RhdF9UYWJsZVN0 YXR1cyAqcGdzdGF0dGFiX2luZm87CiAKLQlwZ3N0YXRfZHJvcF90cmFuc2FjdGlvbmFsKFBH U1RBVF9LSU5EX1JFTEFUSU9OLAorCXBnc3RhdF9kcm9wX3RyYW5zYWN0aW9uYWwoUEdTVEFU X0tJTkRfVEFCTEUsCiAJCQkJCQkJICByZWwtPnJkX3JlbC0+cmVsaXNzaGFyZWQgPyBJbnZh bGlkT2lkIDogTXlEYXRhYmFzZUlkLAogCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxpZChyZWwp KTsKIAotCWlmICghcGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQorCWlmICgh cGdzdGF0X3Nob3VsZF9jb3VudF90YWJsZShyZWwpKQogCQlyZXR1cm47CiAKIAkvKgogCSAq IFRyYW5zYWN0aW9uYWxseSBzZXQgY291bnRlcnMgdG8gMC4gVGhhdCBlbnN1cmVzIHRoYXQg YWNjZXNzZXMgdG8KIAkgKiBwZ19zdGF0X3hhY3RfYWxsX3RhYmxlcyBpbnNpZGUgdGhlIHRy YW5zYWN0aW9uIHNob3cgMC4KIAkgKi8KLQlwZ3N0YXRfaW5mbyA9IHJlbC0+cGdzdGF0X2lu Zm87Ci0JaWYgKHBnc3RhdF9pbmZvLT50cmFucyAmJgotCQlwZ3N0YXRfaW5mby0+dHJhbnMt Pm5lc3RfbGV2ZWwgPT0gbmVzdF9sZXZlbCkKKwlwZ3N0YXR0YWJfaW5mbyA9IHJlbC0+cGdz dGF0dGFiX2luZm87CisJaWYgKHBnc3RhdHRhYl9pbmZvLT50cmFucyAmJgorCQlwZ3N0YXR0 YWJfaW5mby0+dHJhbnMtPm5lc3RfbGV2ZWwgPT0gbmVzdF9sZXZlbCkKIAl7Ci0JCXNhdmVf dHJ1bmNkcm9wX2NvdW50ZXJzKHBnc3RhdF9pbmZvLT50cmFucywgdHJ1ZSk7Ci0JCXBnc3Rh dF9pbmZvLT50cmFucy0+dHVwbGVzX2luc2VydGVkID0gMDsKLQkJcGdzdGF0X2luZm8tPnRy YW5zLT50dXBsZXNfdXBkYXRlZCA9IDA7Ci0JCXBnc3RhdF9pbmZvLT50cmFucy0+dHVwbGVz X2RlbGV0ZWQgPSAwOworCQlzYXZlX3RydW5jZHJvcF9jb3VudGVycyhwZ3N0YXR0YWJfaW5m by0+dHJhbnMsIHRydWUpOworCQlwZ3N0YXR0YWJfaW5mby0+dHJhbnMtPnR1cGxlc19pbnNl cnRlZCA9IDA7CisJCXBnc3RhdHRhYl9pbmZvLT50cmFucy0+dHVwbGVzX3VwZGF0ZWQgPSAw OworCQlwZ3N0YXR0YWJfaW5mby0+dHJhbnMtPnR1cGxlc19kZWxldGVkID0gMDsKIAl9CiB9 CiAKQEAgLTIxMiw3ICsyNzAsNyBAQCBwZ3N0YXRfcmVwb3J0X3ZhY3V1bShPaWQgdGFibGVv aWQsIGJvb2wgc2hhcmVkLAogCQkJCQkgUGdTdGF0X0NvdW50ZXIgbGl2ZXR1cGxlcywgUGdT dGF0X0NvdW50ZXIgZGVhZHR1cGxlcykKIHsKIAlQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3Jl ZjsKLQlQZ1N0YXRTaGFyZWRfUmVsYXRpb24gKnNodGFiZW50cnk7CisJUGdTdGF0U2hhcmVk X1RhYmxlICpzaHRhYmVudHJ5OwogCVBnU3RhdF9TdGF0VGFiRW50cnkgKnRhYmVudHJ5Owog CU9pZAkJCWRib2lkID0gKHNoYXJlZCA/IEludmFsaWRPaWQgOiBNeURhdGFiYXNlSWQpOwog CVRpbWVzdGFtcFR6IHRzOwpAQCAtMjI0LDEwICsyODIsMTAgQEAgcGdzdGF0X3JlcG9ydF92 YWN1dW0oT2lkIHRhYmxlb2lkLCBib29sIHNoYXJlZCwKIAl0cyA9IEdldEN1cnJlbnRUaW1l c3RhbXAoKTsKIAogCS8qIGJsb2NrIGFjcXVpcmluZyBsb2NrIGZvciB0aGUgc2FtZSByZWFz b24gYXMgcGdzdGF0X3JlcG9ydF9hdXRvdmFjKCkgKi8KLQllbnRyeV9yZWYgPSBwZ3N0YXRf Z2V0X2VudHJ5X3JlZl9sb2NrZWQoUEdTVEFUX0tJTkRfUkVMQVRJT04sCisJZW50cnlfcmVm ID0gcGdzdGF0X2dldF9lbnRyeV9yZWZfbG9ja2VkKFBHU1RBVF9LSU5EX1RBQkxFLAogCQkJ CQkJCQkJCQlkYm9pZCwgdGFibGVvaWQsIGZhbHNlKTsKIAotCXNodGFiZW50cnkgPSAoUGdT dGF0U2hhcmVkX1JlbGF0aW9uICopIGVudHJ5X3JlZi0+c2hhcmVkX3N0YXRzOworCXNodGFi ZW50cnkgPSAoUGdTdGF0U2hhcmVkX1RhYmxlICopIGVudHJ5X3JlZi0+c2hhcmVkX3N0YXRz OwogCXRhYmVudHJ5ID0gJnNodGFiZW50cnktPnN0YXRzOwogCiAJdGFiZW50cnktPm5fbGl2 ZV90dXBsZXMgPSBsaXZldHVwbGVzOwpAQCAtMjcxLDcgKzMyOSw3IEBAIHBnc3RhdF9yZXBv cnRfYW5hbHl6ZShSZWxhdGlvbiByZWwsCiAJCQkJCSAgYm9vbCByZXNldGNvdW50ZXIpCiB7 CiAJUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWY7Ci0JUGdTdGF0U2hhcmVkX1JlbGF0aW9u ICpzaHRhYmVudHJ5OworCVBnU3RhdFNoYXJlZF9UYWJsZSAqc2h0YWJlbnRyeTsKIAlQZ1N0 YXRfU3RhdFRhYkVudHJ5ICp0YWJlbnRyeTsKIAlPaWQJCQlkYm9pZCA9IChyZWwtPnJkX3Jl bC0+cmVsaXNzaGFyZWQgPyBJbnZhbGlkT2lkIDogTXlEYXRhYmFzZUlkKTsKIApAQCAtMjkw LDMxICszNDgsMzEgQEAgcGdzdGF0X3JlcG9ydF9hbmFseXplKFJlbGF0aW9uIHJlbCwKIAkg KgogCSAqIFdhc3RlIG5vIHRpbWUgb24gcGFydGl0aW9uZWQgdGFibGVzLCB0aG91Z2guCiAJ ICovCi0JaWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSAmJgorCWlmIChw Z3N0YXRfc2hvdWxkX2NvdW50X3RhYmxlKHJlbCkgJiYKIAkJcmVsLT5yZF9yZWwtPnJlbGtp bmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKIAl7CiAJCVBnU3RhdF9UYWJsZVhh Y3RTdGF0dXMgKnRyYW5zOwogCi0JCWZvciAodHJhbnMgPSByZWwtPnBnc3RhdF9pbmZvLT50 cmFuczsgdHJhbnM7IHRyYW5zID0gdHJhbnMtPnVwcGVyKQorCQlmb3IgKHRyYW5zID0gcmVs LT5wZ3N0YXR0YWJfaW5mby0+dHJhbnM7IHRyYW5zOyB0cmFucyA9IHRyYW5zLT51cHBlcikK IAkJewogCQkJbGl2ZXR1cGxlcyAtPSB0cmFucy0+dHVwbGVzX2luc2VydGVkIC0gdHJhbnMt PnR1cGxlc19kZWxldGVkOwogCQkJZGVhZHR1cGxlcyAtPSB0cmFucy0+dHVwbGVzX3VwZGF0 ZWQgKyB0cmFucy0+dHVwbGVzX2RlbGV0ZWQ7CiAJCX0KIAkJLyogY291bnQgc3R1ZmYgaW5z ZXJ0ZWQgYnkgYWxyZWFkeS1hYm9ydGVkIHN1YnhhY3RzLCB0b28gKi8KLQkJZGVhZHR1cGxl cyAtPSByZWwtPnBnc3RhdF9pbmZvLT50X2NvdW50cy50X2RlbHRhX2RlYWRfdHVwbGVzOwor CQlkZWFkdHVwbGVzIC09IHJlbC0+cGdzdGF0dGFiX2luZm8tPnRfY291bnRzLnRfZGVsdGFf ZGVhZF90dXBsZXM7CiAJCS8qIFNpbmNlIEFOQUxZWkUncyBjb3VudHMgYXJlIGVzdGltYXRl cywgd2UgY291bGQgaGF2ZSB1bmRlcmZsb3dlZCAqLwogCQlsaXZldHVwbGVzID0gTWF4KGxp dmV0dXBsZXMsIDApOwogCQlkZWFkdHVwbGVzID0gTWF4KGRlYWR0dXBsZXMsIDApOwogCX0K IAogCS8qIGJsb2NrIGFjcXVpcmluZyBsb2NrIGZvciB0aGUgc2FtZSByZWFzb24gYXMgcGdz dGF0X3JlcG9ydF9hdXRvdmFjKCkgKi8KLQllbnRyeV9yZWYgPSBwZ3N0YXRfZ2V0X2VudHJ5 X3JlZl9sb2NrZWQoUEdTVEFUX0tJTkRfUkVMQVRJT04sIGRib2lkLAorCWVudHJ5X3JlZiA9 IHBnc3RhdF9nZXRfZW50cnlfcmVmX2xvY2tlZChQR1NUQVRfS0lORF9UQUJMRSwgZGJvaWQs CiAJCQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsaWQocmVsKSwKIAkJCQkJCQkJCQkJZmFsc2Up OwogCS8qIGNhbid0IGdldCBkcm9wcGVkIHdoaWxlIGFjY2Vzc2VkICovCiAJQXNzZXJ0KGVu dHJ5X3JlZiAhPSBOVUxMICYmIGVudHJ5X3JlZi0+c2hhcmVkX3N0YXRzICE9IE5VTEwpOwog Ci0Jc2h0YWJlbnRyeSA9IChQZ1N0YXRTaGFyZWRfUmVsYXRpb24gKikgZW50cnlfcmVmLT5z aGFyZWRfc3RhdHM7CisJc2h0YWJlbnRyeSA9IChQZ1N0YXRTaGFyZWRfVGFibGUgKikgZW50 cnlfcmVmLT5zaGFyZWRfc3RhdHM7CiAJdGFiZW50cnkgPSAmc2h0YWJlbnRyeS0+c3RhdHM7 CiAKIAl0YWJlbnRyeS0+bl9saXZlX3R1cGxlcyA9IGxpdmV0dXBsZXM7CkBAIC0zNDgsMTIg KzQwNiwxMiBAQCBwZ3N0YXRfcmVwb3J0X2FuYWx5emUoUmVsYXRpb24gcmVsLAogdm9pZAog cGdzdGF0X2NvdW50X2hlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgUGdTdGF0X0NvdW50ZXIg bikKIHsKLQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQorCWlmIChw Z3N0YXRfc2hvdWxkX2NvdW50X3RhYmxlKHJlbCkpCiAJewotCQlQZ1N0YXRfVGFibGVTdGF0 dXMgKnBnc3RhdF9pbmZvID0gcmVsLT5wZ3N0YXRfaW5mbzsKKwkJUGdTdGF0X1RhYmxlU3Rh dHVzICpwZ3N0YXR0YWJfaW5mbyA9IHJlbC0+cGdzdGF0dGFiX2luZm87CiAKLQkJZW5zdXJl X3RhYnN0YXRfeGFjdF9sZXZlbChwZ3N0YXRfaW5mbyk7Ci0JCXBnc3RhdF9pbmZvLT50cmFu cy0+dHVwbGVzX2luc2VydGVkICs9IG47CisJCWVuc3VyZV90YWJzdGF0X3hhY3RfbGV2ZWwo cGdzdGF0dGFiX2luZm8pOworCQlwZ3N0YXR0YWJfaW5mby0+dHJhbnMtPnR1cGxlc19pbnNl cnRlZCArPSBuOwogCX0KIH0KIApAQCAtMzYzLDE2ICs0MjEsMTYgQEAgcGdzdGF0X2NvdW50 X2hlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgUGdTdGF0X0NvdW50ZXIgbikKIHZvaWQKIHBn c3RhdF9jb3VudF9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWwsIGJvb2wgaG90KQogewotCWlm IChwZ3N0YXRfc2hvdWxkX2NvdW50X3JlbGF0aW9uKHJlbCkpCisJaWYgKHBnc3RhdF9zaG91 bGRfY291bnRfdGFibGUocmVsKSkKIAl7Ci0JCVBnU3RhdF9UYWJsZVN0YXR1cyAqcGdzdGF0 X2luZm8gPSByZWwtPnBnc3RhdF9pbmZvOworCQlQZ1N0YXRfVGFibGVTdGF0dXMgKnBnc3Rh dHRhYl9pbmZvID0gcmVsLT5wZ3N0YXR0YWJfaW5mbzsKIAotCQllbnN1cmVfdGFic3RhdF94 YWN0X2xldmVsKHBnc3RhdF9pbmZvKTsKLQkJcGdzdGF0X2luZm8tPnRyYW5zLT50dXBsZXNf dXBkYXRlZCsrOworCQllbnN1cmVfdGFic3RhdF94YWN0X2xldmVsKHBnc3RhdHRhYl9pbmZv KTsKKwkJcGdzdGF0dGFiX2luZm8tPnRyYW5zLT50dXBsZXNfdXBkYXRlZCsrOwogCiAJCS8q IHRfdHVwbGVzX2hvdF91cGRhdGVkIGlzIG5vbnRyYW5zYWN0aW9uYWwsIHNvIGp1c3QgYWR2 YW5jZSBpdCAqLwogCQlpZiAoaG90KQotCQkJcGdzdGF0X2luZm8tPnRfY291bnRzLnRfdHVw bGVzX2hvdF91cGRhdGVkKys7CisJCQlwZ3N0YXR0YWJfaW5mby0+dF9jb3VudHMudF90dXBs ZXNfaG90X3VwZGF0ZWQrKzsKIAl9CiB9CiAKQEAgLTM4MiwxMiArNDQwLDEyIEBAIHBnc3Rh dF9jb3VudF9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWwsIGJvb2wgaG90KQogdm9pZAogcGdz dGF0X2NvdW50X2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbCkKIHsKLQlpZiAocGdzdGF0X3No b3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQorCWlmIChwZ3N0YXRfc2hvdWxkX2NvdW50X3Rh YmxlKHJlbCkpCiAJewotCQlQZ1N0YXRfVGFibGVTdGF0dXMgKnBnc3RhdF9pbmZvID0gcmVs LT5wZ3N0YXRfaW5mbzsKKwkJUGdTdGF0X1RhYmxlU3RhdHVzICpwZ3N0YXR0YWJfaW5mbyA9 IHJlbC0+cGdzdGF0dGFiX2luZm87CiAKLQkJZW5zdXJlX3RhYnN0YXRfeGFjdF9sZXZlbChw Z3N0YXRfaW5mbyk7Ci0JCXBnc3RhdF9pbmZvLT50cmFucy0+dHVwbGVzX2RlbGV0ZWQrKzsK KwkJZW5zdXJlX3RhYnN0YXRfeGFjdF9sZXZlbChwZ3N0YXR0YWJfaW5mbyk7CisJCXBnc3Rh dHRhYl9pbmZvLT50cmFucy0+dHVwbGVzX2RlbGV0ZWQrKzsKIAl9CiB9CiAKQEAgLTM5Nywx NSArNDU1LDE1IEBAIHBnc3RhdF9jb3VudF9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWwpCiB2 b2lkCiBwZ3N0YXRfY291bnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsKQogewotCWlmIChwZ3N0 YXRfc2hvdWxkX2NvdW50X3JlbGF0aW9uKHJlbCkpCisJaWYgKHBnc3RhdF9zaG91bGRfY291 bnRfdGFibGUocmVsKSkKIAl7Ci0JCVBnU3RhdF9UYWJsZVN0YXR1cyAqcGdzdGF0X2luZm8g PSByZWwtPnBnc3RhdF9pbmZvOworCQlQZ1N0YXRfVGFibGVTdGF0dXMgKnBnc3RhdHRhYl9p bmZvID0gcmVsLT5wZ3N0YXR0YWJfaW5mbzsKIAotCQllbnN1cmVfdGFic3RhdF94YWN0X2xl dmVsKHBnc3RhdF9pbmZvKTsKLQkJc2F2ZV90cnVuY2Ryb3BfY291bnRlcnMocGdzdGF0X2lu Zm8tPnRyYW5zLCBmYWxzZSk7Ci0JCXBnc3RhdF9pbmZvLT50cmFucy0+dHVwbGVzX2luc2Vy dGVkID0gMDsKLQkJcGdzdGF0X2luZm8tPnRyYW5zLT50dXBsZXNfdXBkYXRlZCA9IDA7Ci0J CXBnc3RhdF9pbmZvLT50cmFucy0+dHVwbGVzX2RlbGV0ZWQgPSAwOworCQllbnN1cmVfdGFi c3RhdF94YWN0X2xldmVsKHBnc3RhdHRhYl9pbmZvKTsKKwkJc2F2ZV90cnVuY2Ryb3BfY291 bnRlcnMocGdzdGF0dGFiX2luZm8tPnRyYW5zLCBmYWxzZSk7CisJCXBnc3RhdHRhYl9pbmZv LT50cmFucy0+dHVwbGVzX2luc2VydGVkID0gMDsKKwkJcGdzdGF0dGFiX2luZm8tPnRyYW5z LT50dXBsZXNfdXBkYXRlZCA9IDA7CisJCXBnc3RhdHRhYl9pbmZvLT50cmFucy0+dHVwbGVz X2RlbGV0ZWQgPSAwOwogCX0KIH0KIApAQCAtNDIwLDExICs0NzgsMTEgQEAgcGdzdGF0X2Nv dW50X3RydW5jYXRlKFJlbGF0aW9uIHJlbCkKIHZvaWQKIHBnc3RhdF91cGRhdGVfaGVhcF9k ZWFkX3R1cGxlcyhSZWxhdGlvbiByZWwsIGludCBkZWx0YSkKIHsKLQlpZiAocGdzdGF0X3No b3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQorCWlmIChwZ3N0YXRfc2hvdWxkX2NvdW50X3Rh YmxlKHJlbCkpCiAJewotCQlQZ1N0YXRfVGFibGVTdGF0dXMgKnBnc3RhdF9pbmZvID0gcmVs LT5wZ3N0YXRfaW5mbzsKKwkJUGdTdGF0X1RhYmxlU3RhdHVzICpwZ3N0YXR0YWJfaW5mbyA9 IHJlbC0+cGdzdGF0dGFiX2luZm87CiAKLQkJcGdzdGF0X2luZm8tPnRfY291bnRzLnRfZGVs dGFfZGVhZF90dXBsZXMgLT0gZGVsdGE7CisJCXBnc3RhdHRhYl9pbmZvLT50X2NvdW50cy50 X2RlbHRhX2RlYWRfdHVwbGVzIC09IGRlbHRhOwogCX0KIH0KIApAQCAtNDYwLDcgKzUxOCw0 MiBAQCBwZ3N0YXRfZmV0Y2hfc3RhdF90YWJlbnRyeV9leHQoYm9vbCBzaGFyZWQsIE9pZCBy ZWxvaWQpCiAJT2lkCQkJZGJvaWQgPSAoc2hhcmVkID8gSW52YWxpZE9pZCA6IE15RGF0YWJh c2VJZCk7CiAKIAlyZXR1cm4gKFBnU3RhdF9TdGF0VGFiRW50cnkgKikKLQkJcGdzdGF0X2Zl dGNoX2VudHJ5KFBHU1RBVF9LSU5EX1JFTEFUSU9OLCBkYm9pZCwgcmVsb2lkKTsKKwkJcGdz dGF0X2ZldGNoX2VudHJ5KFBHU1RBVF9LSU5EX1RBQkxFLCBkYm9pZCwgcmVsb2lkKTsKK30K KworLyoKKyAqIFN1cHBvcnQgZnVuY3Rpb24gZm9yIHRoZSBTUUwtY2FsbGFibGUgcGdzdGF0 KiBmdW5jdGlvbnMuIFJldHVybnMKKyAqIHRoZSBjb2xsZWN0ZWQgc3RhdGlzdGljcyBmb3Ig b25lIGluZGV4IG9yIE5VTEwuIE5VTEwgZG9lc24ndCBtZWFuCisgKiB0aGF0IHRoZSBpbmRl eCBkb2Vzbid0IGV4aXN0LCBqdXN0IHRoYXQgdGhlcmUgYXJlIG5vIHN0YXRpc3RpY3MsIHNv IHRoZQorICogY2FsbGVyIGlzIGJldHRlciBvZmYgdG8gcmVwb3J0IFpFUk8gaW5zdGVhZC4K KyAqLworUGdTdGF0X1N0YXRJbmRFbnRyeSAqCitwZ3N0YXRfZmV0Y2hfc3RhdF9pbmRlbnRy eShPaWQgcmVsaWQpCit7CisJUGdTdGF0X1N0YXRJbmRFbnRyeSAqaW5kZW50cnk7CisKKwlp bmRlbnRyeSA9IHBnc3RhdF9mZXRjaF9zdGF0X2luZGVudHJ5X2V4dChmYWxzZSwgcmVsaWQp OworCWlmIChpbmRlbnRyeSAhPSBOVUxMKQorCQlyZXR1cm4gaW5kZW50cnk7CisKKwkvKgor CSAqIElmIHdlIGRpZG4ndCBmaW5kIGl0LCBtYXliZSBpdCdzIGEgc2hhcmVkIGluZGV4Lgor CSAqLworCWluZGVudHJ5ID0gcGdzdGF0X2ZldGNoX3N0YXRfaW5kZW50cnlfZXh0KHRydWUs IHJlbGlkKTsKKwlyZXR1cm4gaW5kZW50cnk7Cit9CisKKy8qCisgKiBNb3JlIGVmZmljaWVu dCB2ZXJzaW9uIG9mIHBnc3RhdF9mZXRjaF9zdGF0X2luZGVudHJ5KCksIGFsbG93aW5nIHRv IHNwZWNpZnkKKyAqIHdoZXRoZXIgdGhlIHRvLWJlLWFjY2Vzc2VkIGluZGV4IGlzIHNoYXJl ZCBvciBub3QuCisgKi8KK1BnU3RhdF9TdGF0SW5kRW50cnkgKgorcGdzdGF0X2ZldGNoX3N0 YXRfaW5kZW50cnlfZXh0KGJvb2wgc2hhcmVkLCBPaWQgcmVsb2lkKQoreworCU9pZAkJCWRi b2lkID0gKHNoYXJlZCA/IEludmFsaWRPaWQgOiBNeURhdGFiYXNlSWQpOworCisJcmV0dXJu IChQZ1N0YXRfU3RhdEluZEVudHJ5ICopCisJCXBnc3RhdF9mZXRjaF9lbnRyeShQR1NUQVRf S0lORF9JTkRFWCwgZGJvaWQsIHJlbG9pZCk7CiB9CiAKIC8qCkBAIC00NzYsOSArNTY5LDMx IEBAIGZpbmRfdGFic3RhdF9lbnRyeShPaWQgcmVsX2lkKQogewogCVBnU3RhdF9FbnRyeVJl ZiAqZW50cnlfcmVmOwogCi0JZW50cnlfcmVmID0gcGdzdGF0X2ZldGNoX3BlbmRpbmdfZW50 cnkoUEdTVEFUX0tJTkRfUkVMQVRJT04sIE15RGF0YWJhc2VJZCwgcmVsX2lkKTsKKwllbnRy eV9yZWYgPSBwZ3N0YXRfZmV0Y2hfcGVuZGluZ19lbnRyeShQR1NUQVRfS0lORF9UQUJMRSwg TXlEYXRhYmFzZUlkLCByZWxfaWQpOworCWlmICghZW50cnlfcmVmKQorCQllbnRyeV9yZWYg PSBwZ3N0YXRfZmV0Y2hfcGVuZGluZ19lbnRyeShQR1NUQVRfS0lORF9UQUJMRSwgSW52YWxp ZE9pZCwgcmVsX2lkKTsKKworCWlmIChlbnRyeV9yZWYpCisJCXJldHVybiBlbnRyeV9yZWYt PnBlbmRpbmc7CisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBmaW5kIGFueSBleGlzdGlu ZyBQZ1N0YXRfSW5kZXhTdGF0dXMgZW50cnkgZm9yIHJlbAorICoKKyAqIEZpbmQgYW55IGV4 aXN0aW5nIFBnU3RhdF9JbmRleFN0YXR1cyBlbnRyeSBmb3IgcmVsX2lkIGluIHRoZSBjdXJy ZW50CisgKiBkYXRhYmFzZS4gSWYgbm90IGZvdW5kLCB0cnkgZmluZGluZyBmcm9tIHNoYXJl ZCBpbmRleGVzLgorICoKKyAqIElmIG5vIGVudHJ5IGZvdW5kLCByZXR1cm4gTlVMTCwgZG9u J3QgY3JlYXRlIGEgbmV3IG9uZQorICovCitQZ1N0YXRfSW5kZXhTdGF0dXMgKgorZmluZF9p bmRzdGF0X2VudHJ5KE9pZCByZWxfaWQpCit7CisJUGdTdGF0X0VudHJ5UmVmICplbnRyeV9y ZWY7CisKKwllbnRyeV9yZWYgPSBwZ3N0YXRfZmV0Y2hfcGVuZGluZ19lbnRyeShQR1NUQVRf S0lORF9JTkRFWCwgTXlEYXRhYmFzZUlkLCByZWxfaWQpOwogCWlmICghZW50cnlfcmVmKQot CQllbnRyeV9yZWYgPSBwZ3N0YXRfZmV0Y2hfcGVuZGluZ19lbnRyeShQR1NUQVRfS0lORF9S RUxBVElPTiwgSW52YWxpZE9pZCwgcmVsX2lkKTsKKwkJZW50cnlfcmVmID0gcGdzdGF0X2Zl dGNoX3BlbmRpbmdfZW50cnkoUEdTVEFUX0tJTkRfSU5ERVgsIEludmFsaWRPaWQsIHJlbF9p ZCk7CiAKIAlpZiAoZW50cnlfcmVmKQogCQlyZXR1cm4gZW50cnlfcmVmLT5wZW5kaW5nOwpA QCAtNjk0LDI3ICs4MDksMjcgQEAgcGdzdGF0X3R3b3BoYXNlX3Bvc3Rjb21taXQoVHJhbnNh Y3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJICAgdm9pZCAqcmVjZGF0YSwgdWlu dDMyIGxlbikKIHsKIAlUd29QaGFzZVBnU3RhdFJlY29yZCAqcmVjID0gKFR3b1BoYXNlUGdT dGF0UmVjb3JkICopIHJlY2RhdGE7Ci0JUGdTdGF0X1RhYmxlU3RhdHVzICpwZ3N0YXRfaW5m bzsKKwlQZ1N0YXRfVGFibGVTdGF0dXMgKnBnc3RhdHRhYl9pbmZvOwogCiAJLyogRmluZCBv ciBjcmVhdGUgYSB0YWJzdGF0IGVudHJ5IGZvciB0aGUgcmVsICovCi0JcGdzdGF0X2luZm8g PSBwZ3N0YXRfcHJlcF9yZWxhdGlvbl9wZW5kaW5nKHJlYy0+dF9pZCwgcmVjLT50X3NoYXJl ZCk7CisJcGdzdGF0dGFiX2luZm8gPSBwZ3N0YXRfcHJlcF90YWJsZV9wZW5kaW5nKHJlYy0+ dF9pZCwgcmVjLT50X3NoYXJlZCk7CiAKIAkvKiBTYW1lIG1hdGggYXMgaW4gQXRFT1hhY3Rf UGdTdGF0LCBjb21taXQgY2FzZSAqLwotCXBnc3RhdF9pbmZvLT50X2NvdW50cy50X3R1cGxl c19pbnNlcnRlZCArPSByZWMtPnR1cGxlc19pbnNlcnRlZDsKLQlwZ3N0YXRfaW5mby0+dF9j b3VudHMudF90dXBsZXNfdXBkYXRlZCArPSByZWMtPnR1cGxlc191cGRhdGVkOwotCXBnc3Rh dF9pbmZvLT50X2NvdW50cy50X3R1cGxlc19kZWxldGVkICs9IHJlYy0+dHVwbGVzX2RlbGV0 ZWQ7Ci0JcGdzdGF0X2luZm8tPnRfY291bnRzLnRfdHJ1bmNkcm9wcGVkID0gcmVjLT50X3Ry dW5jZHJvcHBlZDsKKwlwZ3N0YXR0YWJfaW5mby0+dF9jb3VudHMudF90dXBsZXNfaW5zZXJ0 ZWQgKz0gcmVjLT50dXBsZXNfaW5zZXJ0ZWQ7CisJcGdzdGF0dGFiX2luZm8tPnRfY291bnRz LnRfdHVwbGVzX3VwZGF0ZWQgKz0gcmVjLT50dXBsZXNfdXBkYXRlZDsKKwlwZ3N0YXR0YWJf aW5mby0+dF9jb3VudHMudF90dXBsZXNfZGVsZXRlZCArPSByZWMtPnR1cGxlc19kZWxldGVk OworCXBnc3RhdHRhYl9pbmZvLT50X2NvdW50cy50X3RydW5jZHJvcHBlZCA9IHJlYy0+dF90 cnVuY2Ryb3BwZWQ7CiAJaWYgKHJlYy0+dF90cnVuY2Ryb3BwZWQpCiAJewogCQkvKiBmb3Jn ZXQgbGl2ZS9kZWFkIHN0YXRzIHNlZW4gYnkgYmFja2VuZCB0aHVzIGZhciAqLwotCQlwZ3N0 YXRfaW5mby0+dF9jb3VudHMudF9kZWx0YV9saXZlX3R1cGxlcyA9IDA7Ci0JCXBnc3RhdF9p bmZvLT50X2NvdW50cy50X2RlbHRhX2RlYWRfdHVwbGVzID0gMDsKKwkJcGdzdGF0dGFiX2lu Zm8tPnRfY291bnRzLnRfZGVsdGFfbGl2ZV90dXBsZXMgPSAwOworCQlwZ3N0YXR0YWJfaW5m by0+dF9jb3VudHMudF9kZWx0YV9kZWFkX3R1cGxlcyA9IDA7CiAJfQotCXBnc3RhdF9pbmZv LT50X2NvdW50cy50X2RlbHRhX2xpdmVfdHVwbGVzICs9CisJcGdzdGF0dGFiX2luZm8tPnRf Y291bnRzLnRfZGVsdGFfbGl2ZV90dXBsZXMgKz0KIAkJcmVjLT50dXBsZXNfaW5zZXJ0ZWQg LSByZWMtPnR1cGxlc19kZWxldGVkOwotCXBnc3RhdF9pbmZvLT50X2NvdW50cy50X2RlbHRh X2RlYWRfdHVwbGVzICs9CisJcGdzdGF0dGFiX2luZm8tPnRfY291bnRzLnRfZGVsdGFfZGVh ZF90dXBsZXMgKz0KIAkJcmVjLT50dXBsZXNfdXBkYXRlZCArIHJlYy0+dHVwbGVzX2RlbGV0 ZWQ7Ci0JcGdzdGF0X2luZm8tPnRfY291bnRzLnRfY2hhbmdlZF90dXBsZXMgKz0KKwlwZ3N0 YXR0YWJfaW5mby0+dF9jb3VudHMudF9jaGFuZ2VkX3R1cGxlcyArPQogCQlyZWMtPnR1cGxl c19pbnNlcnRlZCArIHJlYy0+dHVwbGVzX3VwZGF0ZWQgKwogCQlyZWMtPnR1cGxlc19kZWxl dGVkOwogfQpAQCAtNzMwLDEwICs4NDUsMTAgQEAgcGdzdGF0X3R3b3BoYXNlX3Bvc3RhYm9y dChUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IGluZm8sCiAJCQkJCQkgIHZvaWQgKnJlY2Rh dGEsIHVpbnQzMiBsZW4pCiB7CiAJVHdvUGhhc2VQZ1N0YXRSZWNvcmQgKnJlYyA9IChUd29Q aGFzZVBnU3RhdFJlY29yZCAqKSByZWNkYXRhOwotCVBnU3RhdF9UYWJsZVN0YXR1cyAqcGdz dGF0X2luZm87CisJUGdTdGF0X1RhYmxlU3RhdHVzICpwZ3N0YXR0YWJfaW5mbzsKIAogCS8q IEZpbmQgb3IgY3JlYXRlIGEgdGFic3RhdCBlbnRyeSBmb3IgdGhlIHJlbCAqLwotCXBnc3Rh dF9pbmZvID0gcGdzdGF0X3ByZXBfcmVsYXRpb25fcGVuZGluZyhyZWMtPnRfaWQsIHJlYy0+ dF9zaGFyZWQpOworCXBnc3RhdHRhYl9pbmZvID0gcGdzdGF0X3ByZXBfdGFibGVfcGVuZGlu ZyhyZWMtPnRfaWQsIHJlYy0+dF9zaGFyZWQpOwogCiAJLyogU2FtZSBtYXRoIGFzIGluIEF0 RU9YYWN0X1BnU3RhdCwgYWJvcnQgY2FzZSAqLwogCWlmIChyZWMtPnRfdHJ1bmNkcm9wcGVk KQpAQCAtNzQyLDEwICs4NTcsMTAgQEAgcGdzdGF0X3R3b3BoYXNlX3Bvc3RhYm9ydChUcmFu c2FjdGlvbklkIHhpZCwgdWludDE2IGluZm8sCiAJCXJlYy0+dHVwbGVzX3VwZGF0ZWQgPSBy ZWMtPnVwZGF0ZWRfcHJlX3RydW5jZHJvcDsKIAkJcmVjLT50dXBsZXNfZGVsZXRlZCA9IHJl Yy0+ZGVsZXRlZF9wcmVfdHJ1bmNkcm9wOwogCX0KLQlwZ3N0YXRfaW5mby0+dF9jb3VudHMu dF90dXBsZXNfaW5zZXJ0ZWQgKz0gcmVjLT50dXBsZXNfaW5zZXJ0ZWQ7Ci0JcGdzdGF0X2lu Zm8tPnRfY291bnRzLnRfdHVwbGVzX3VwZGF0ZWQgKz0gcmVjLT50dXBsZXNfdXBkYXRlZDsK LQlwZ3N0YXRfaW5mby0+dF9jb3VudHMudF90dXBsZXNfZGVsZXRlZCArPSByZWMtPnR1cGxl c19kZWxldGVkOwotCXBnc3RhdF9pbmZvLT50X2NvdW50cy50X2RlbHRhX2RlYWRfdHVwbGVz ICs9CisJcGdzdGF0dGFiX2luZm8tPnRfY291bnRzLnRfdHVwbGVzX2luc2VydGVkICs9IHJl Yy0+dHVwbGVzX2luc2VydGVkOworCXBnc3RhdHRhYl9pbmZvLT50X2NvdW50cy50X3R1cGxl c191cGRhdGVkICs9IHJlYy0+dHVwbGVzX3VwZGF0ZWQ7CisJcGdzdGF0dGFiX2luZm8tPnRf Y291bnRzLnRfdHVwbGVzX2RlbGV0ZWQgKz0gcmVjLT50dXBsZXNfZGVsZXRlZDsKKwlwZ3N0 YXR0YWJfaW5mby0+dF9jb3VudHMudF9kZWx0YV9kZWFkX3R1cGxlcyArPQogCQlyZWMtPnR1 cGxlc19pbnNlcnRlZCArIHJlYy0+dHVwbGVzX3VwZGF0ZWQ7CiB9CiAKQEAgLTc1OSwyMiAr ODc0LDIxIEBAIHBnc3RhdF90d29waGFzZV9wb3N0YWJvcnQoVHJhbnNhY3Rpb25JZCB4aWQs IHVpbnQxNiBpbmZvLAogICogZW50cnkgd2hlbiBzdWNjZXNzZnVsbHkgZmx1c2hpbmcuCiAg Ki8KIGJvb2wKLXBnc3RhdF9yZWxhdGlvbl9mbHVzaF9jYihQZ1N0YXRfRW50cnlSZWYgKmVu dHJ5X3JlZiwgYm9vbCBub3dhaXQpCitwZ3N0YXRfdGFibGVfZmx1c2hfY2IoUGdTdGF0X0Vu dHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KQogewogCXN0YXRpYyBjb25zdCBQZ1N0 YXRfVGFibGVDb3VudHMgYWxsX3plcm9lczsKIAlPaWQJCQlkYm9pZDsKIAlQZ1N0YXRfVGFi bGVTdGF0dXMgKmxzdGF0czsgLyogcGVuZGluZyBzdGF0cyBlbnRyeSAgKi8KLQlQZ1N0YXRT aGFyZWRfUmVsYXRpb24gKnNodGFic3RhdHM7CisJUGdTdGF0U2hhcmVkX1RhYmxlICpzaHRh YnN0YXRzOwogCVBnU3RhdF9TdGF0VGFiRW50cnkgKnRhYmVudHJ5OwkvKiB0YWJsZSBlbnRy eSBvZiBzaGFyZWQgc3RhdHMgKi8KIAlQZ1N0YXRfU3RhdERCRW50cnkgKmRiZW50cnk7CS8q IHBlbmRpbmcgZGF0YWJhc2UgZW50cnkgKi8KIAogCWRib2lkID0gZW50cnlfcmVmLT5zaGFy ZWRfZW50cnktPmtleS5kYm9pZDsKIAlsc3RhdHMgPSAoUGdTdGF0X1RhYmxlU3RhdHVzICop IGVudHJ5X3JlZi0+cGVuZGluZzsKLQlzaHRhYnN0YXRzID0gKFBnU3RhdFNoYXJlZF9SZWxh dGlvbiAqKSBlbnRyeV9yZWYtPnNoYXJlZF9zdGF0czsKKwlzaHRhYnN0YXRzID0gKFBnU3Rh dFNoYXJlZF9UYWJsZSAqKSBlbnRyeV9yZWYtPnNoYXJlZF9zdGF0czsKIAogCS8qCi0JICog SWdub3JlIGVudHJpZXMgdGhhdCBkaWRuJ3QgYWNjdW11bGF0ZSBhbnkgYWN0dWFsIGNvdW50 cywgc3VjaCBhcwotCSAqIGluZGV4ZXMgdGhhdCB3ZXJlIG9wZW5lZCBieSB0aGUgcGxhbm5l ciBidXQgbm90IHVzZWQuCisJICogSWdub3JlIGVudHJpZXMgdGhhdCBkaWRuJ3QgYWNjdW11 bGF0ZSBhbnkgYWN0dWFsIGNvdW50cy4KIAkgKi8KIAlpZiAobWVtY21wKCZsc3RhdHMtPnRf Y291bnRzLCAmYWxsX3plcm9lcywKIAkJCSAgIHNpemVvZihQZ1N0YXRfVGFibGVDb3VudHMp KSA9PSAwKQpAQCAtNzkyLDYgKzkwNiw3IEBAIHBnc3RhdF9yZWxhdGlvbl9mbHVzaF9jYihQ Z1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpCiAJaWYgKGxzdGF0cy0+ dF9jb3VudHMudF9udW1zY2FucykKIAl7CiAJCVRpbWVzdGFtcFR6IHQgPSBHZXRDdXJyZW50 VHJhbnNhY3Rpb25TdG9wVGltZXN0YW1wKCk7CisKIAkJaWYgKHQgPiB0YWJlbnRyeS0+bGFz dHNjYW4pCiAJCQl0YWJlbnRyeS0+bGFzdHNjYW4gPSB0OwogCX0KQEAgLTgzOSw4ICs5NTQs NzQgQEAgcGdzdGF0X3JlbGF0aW9uX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlf cmVmLCBib29sIG5vd2FpdCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIEZsdXNoIG91 dCBwZW5kaW5nIHN0YXRzIGZvciB0aGUgZW50cnkKKyAqCisgKiBJZiBub3dhaXQgaXMgdHJ1 ZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGZhbHNlIGlmIGxvY2sgY291bGQgbm90CisgKiBp bW1lZGlhdGVseSBhY3F1aXJlZCwgb3RoZXJ3aXNlIHRydWUgaXMgcmV0dXJuZWQuCisgKgor ICogU29tZSBvZiB0aGUgc3RhdHMgYXJlIGNvcGllZCB0byB0aGUgY29ycmVzcG9uZGluZyBw ZW5kaW5nIGRhdGFiYXNlIHN0YXRzCisgKiBlbnRyeSB3aGVuIHN1Y2Nlc3NmdWxseSBmbHVz aGluZy4KKyAqLworYm9vbAorcGdzdGF0X2luZGV4X2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJl ZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKK3sKKwlzdGF0aWMgY29uc3QgUGdTdGF0X0lu ZGV4Q291bnRzIGFsbF96ZXJvZXM7CisJT2lkCQkJZGJvaWQ7CisKKwlQZ1N0YXRfSW5kZXhT dGF0dXMgKmxzdGF0czsgLyogcGVuZGluZyBzdGF0cyBlbnRyeSAgKi8KKwlQZ1N0YXRTaGFy ZWRfSW5kZXggKnNocmVsY29tc3RhdHM7CisJUGdTdGF0X1N0YXRJbmRFbnRyeSAqaW5kZW50 cnk7CS8qIGluZGV4IGVudHJ5IG9mIHNoYXJlZCBzdGF0cyAqLworCVBnU3RhdF9TdGF0REJF bnRyeSAqZGJlbnRyeTsJLyogcGVuZGluZyBkYXRhYmFzZSBlbnRyeSAqLworCisJZGJvaWQg PSBlbnRyeV9yZWYtPnNoYXJlZF9lbnRyeS0+a2V5LmRib2lkOworCWxzdGF0cyA9IChQZ1N0 YXRfSW5kZXhTdGF0dXMgKikgZW50cnlfcmVmLT5wZW5kaW5nOworCXNocmVsY29tc3RhdHMg PSAoUGdTdGF0U2hhcmVkX0luZGV4ICopIGVudHJ5X3JlZi0+c2hhcmVkX3N0YXRzOworCisJ LyoKKwkgKiBJZ25vcmUgZW50cmllcyB0aGF0IGRpZG4ndCBhY2N1bXVsYXRlIGFueSBhY3R1 YWwgY291bnRzLCBzdWNoIGFzCisJICogaW5kZXhlcyB0aGF0IHdlcmUgb3BlbmVkIGJ5IHRo ZSBwbGFubmVyIGJ1dCBub3QgdXNlZC4KKwkgKi8KKwlpZiAobWVtY21wKCZsc3RhdHMtPmlf Y291bnRzLCAmYWxsX3plcm9lcywKKwkJCSAgIHNpemVvZihQZ1N0YXRfSW5kZXhDb3VudHMp KSA9PSAwKQorCXsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJaWYgKCFwZ3N0YXRfbG9ja19l bnRyeShlbnRyeV9yZWYsIG5vd2FpdCkpCisJCXJldHVybiBmYWxzZTsKKworCS8qIGFkZCB0 aGUgdmFsdWVzIHRvIHRoZSBzaGFyZWQgZW50cnkuICovCisJaW5kZW50cnkgPSAmc2hyZWxj b21zdGF0cy0+c3RhdHM7CisKKwlpbmRlbnRyeS0+bnVtc2NhbnMgKz0gbHN0YXRzLT5pX2Nv dW50cy5pX251bXNjYW5zOworCisJaWYgKGxzdGF0cy0+aV9jb3VudHMuaV9udW1zY2FucykK Kwl7CisJCVRpbWVzdGFtcFR6IHQgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25TdG9wVGltZXN0 YW1wKCk7CisKKwkJaWYgKHQgPiBpbmRlbnRyeS0+bGFzdHNjYW4pCisJCQlpbmRlbnRyeS0+ bGFzdHNjYW4gPSB0OworCX0KKwlpbmRlbnRyeS0+dHVwbGVzX3JldHVybmVkICs9IGxzdGF0 cy0+aV9jb3VudHMuaV90dXBsZXNfcmV0dXJuZWQ7CisJaW5kZW50cnktPnR1cGxlc19mZXRj aGVkICs9IGxzdGF0cy0+aV9jb3VudHMuaV90dXBsZXNfZmV0Y2hlZDsKKwlpbmRlbnRyeS0+ YmxvY2tzX2ZldGNoZWQgKz0gbHN0YXRzLT5pX2NvdW50cy5pX2Jsb2Nrc19mZXRjaGVkOwor CWluZGVudHJ5LT5ibG9ja3NfaGl0ICs9IGxzdGF0cy0+aV9jb3VudHMuaV9ibG9ja3NfaGl0 OworCisJcGdzdGF0X3VubG9ja19lbnRyeShlbnRyeV9yZWYpOworCisJLyogVGhlIGVudHJ5 IHdhcyBzdWNjZXNzZnVsbHkgZmx1c2hlZCwgYWRkIHRoZSBzYW1lIHRvIGRhdGFiYXNlIHN0 YXRzICovCisJZGJlbnRyeSA9IHBnc3RhdF9wcmVwX2RhdGFiYXNlX3BlbmRpbmcoZGJvaWQp OworCWRiZW50cnktPm5fdHVwbGVzX3JldHVybmVkICs9IGxzdGF0cy0+aV9jb3VudHMuaV90 dXBsZXNfcmV0dXJuZWQ7CisJZGJlbnRyeS0+bl90dXBsZXNfZmV0Y2hlZCArPSBsc3RhdHMt PmlfY291bnRzLmlfdHVwbGVzX2ZldGNoZWQ7CisJZGJlbnRyeS0+bl9ibG9ja3NfZmV0Y2hl ZCArPSBsc3RhdHMtPmlfY291bnRzLmlfYmxvY2tzX2ZldGNoZWQ7CisJZGJlbnRyeS0+bl9i bG9ja3NfaGl0ICs9IGxzdGF0cy0+aV9jb3VudHMuaV9ibG9ja3NfaGl0OworCisJcmV0dXJu IHRydWU7Cit9CisKIHZvaWQKLXBnc3RhdF9yZWxhdGlvbl9kZWxldGVfcGVuZGluZ19jYihQ Z1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZikKK3Bnc3RhdF90YWJsZV9kZWxldGVfcGVuZGlu Z19jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZikKIHsKIAlQZ1N0YXRfVGFibGVTdGF0 dXMgKnBlbmRpbmcgPSAoUGdTdGF0X1RhYmxlU3RhdHVzICopIGVudHJ5X3JlZi0+cGVuZGlu ZzsKIApAQCAtODQ4LDE3ICsxMDI5LDI2IEBAIHBnc3RhdF9yZWxhdGlvbl9kZWxldGVfcGVu ZGluZ19jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZikKIAkJcGdzdGF0X3VubGlua19y ZWxhdGlvbihwZW5kaW5nLT5yZWxhdGlvbik7CiB9CiAKK3ZvaWQKK3Bnc3RhdF9pbmRleF9k ZWxldGVfcGVuZGluZ19jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZikKK3sKKwlQZ1N0 YXRfSW5kZXhTdGF0dXMgKnBlbmRpbmcgPSAoUGdTdGF0X0luZGV4U3RhdHVzICopIGVudHJ5 X3JlZi0+cGVuZGluZzsKKworCWlmIChwZW5kaW5nLT5yZWxhdGlvbikKKwkJcGdzdGF0X3Vu bGlua19yZWxhdGlvbihwZW5kaW5nLT5yZWxhdGlvbik7Cit9CisKIC8qCiAgKiBGaW5kIG9y IGNyZWF0ZSBhIFBnU3RhdF9UYWJsZVN0YXR1cyBlbnRyeSBmb3IgcmVsLiBOZXcgZW50cnkg aXMgY3JlYXRlZCBhbmQKICAqIGluaXRpYWxpemVkIGlmIG5vdCBleGlzdHMuCiAgKi8KIHN0 YXRpYyBQZ1N0YXRfVGFibGVTdGF0dXMgKgotcGdzdGF0X3ByZXBfcmVsYXRpb25fcGVuZGlu ZyhPaWQgcmVsX2lkLCBib29sIGlzc2hhcmVkKQorcGdzdGF0X3ByZXBfdGFibGVfcGVuZGlu ZyhPaWQgcmVsX2lkLCBib29sIGlzc2hhcmVkKQogewogCVBnU3RhdF9FbnRyeVJlZiAqZW50 cnlfcmVmOwogCVBnU3RhdF9UYWJsZVN0YXR1cyAqcGVuZGluZzsKIAotCWVudHJ5X3JlZiA9 IHBnc3RhdF9wcmVwX3BlbmRpbmdfZW50cnkoUEdTVEFUX0tJTkRfUkVMQVRJT04sCisJZW50 cnlfcmVmID0gcGdzdGF0X3ByZXBfcGVuZGluZ19lbnRyeShQR1NUQVRfS0lORF9UQUJMRSwK IAkJCQkJCQkJCQkgIGlzc2hhcmVkID8gSW52YWxpZE9pZCA6IE15RGF0YWJhc2VJZCwKIAkJ CQkJCQkJCQkgIHJlbF9pZCwgTlVMTCk7CiAJcGVuZGluZyA9IGVudHJ5X3JlZi0+cGVuZGlu ZzsKQEAgLTg2OCwxMSArMTA1OCwzMSBAQCBwZ3N0YXRfcHJlcF9yZWxhdGlvbl9wZW5kaW5n KE9pZCByZWxfaWQsIGJvb2wgaXNzaGFyZWQpCiAJcmV0dXJuIHBlbmRpbmc7CiB9CiAKKy8q CisgKiBGaW5kIG9yIGNyZWF0ZSBhIFBnU3RhdF9JbmRleFN0YXR1cyBlbnRyeSBmb3IgcmVs LiBOZXcgZW50cnkgaXMgY3JlYXRlZCBhbmQKKyAqIGluaXRpYWxpemVkIGlmIG5vdCBleGlz dHMuCisgKi8KK3N0YXRpYyBQZ1N0YXRfSW5kZXhTdGF0dXMgKgorcGdzdGF0X3ByZXBfaW5k ZXhfcGVuZGluZyhPaWQgcmVsX2lkLCBib29sIGlzc2hhcmVkKQoreworCVBnU3RhdF9FbnRy eVJlZiAqZW50cnlfcmVmOworCVBnU3RhdF9JbmRleFN0YXR1cyAqcGVuZGluZzsKKworCWVu dHJ5X3JlZiA9IHBnc3RhdF9wcmVwX3BlbmRpbmdfZW50cnkoUEdTVEFUX0tJTkRfSU5ERVgs CisJCQkJCQkJCQkJICBpc3NoYXJlZCA/IEludmFsaWRPaWQgOiBNeURhdGFiYXNlSWQsCisJ CQkJCQkJCQkJICByZWxfaWQsIE5VTEwpOworCXBlbmRpbmcgPSBlbnRyeV9yZWYtPnBlbmRp bmc7CisJcGVuZGluZy0+cl9pZCA9IHJlbF9pZDsKKwlwZW5kaW5nLT5yX3NoYXJlZCA9IGlz c2hhcmVkOworCisJcmV0dXJuIHBlbmRpbmc7Cit9CisKIC8qCiAgKiBhZGQgYSBuZXcgKHN1 Yil0cmFuc2FjdGlvbiBzdGF0ZSByZWNvcmQKICAqLwogc3RhdGljIHZvaWQKLWFkZF90YWJz dGF0X3hhY3RfbGV2ZWwoUGdTdGF0X1RhYmxlU3RhdHVzICpwZ3N0YXRfaW5mbywgaW50IG5l c3RfbGV2ZWwpCithZGRfdGFic3RhdF94YWN0X2xldmVsKFBnU3RhdF9UYWJsZVN0YXR1cyAq cGdzdGF0dGFiX2luZm8sIGludCBuZXN0X2xldmVsKQogewogCVBnU3RhdF9TdWJYYWN0U3Rh dHVzICp4YWN0X3N0YXRlOwogCVBnU3RhdF9UYWJsZVhhY3RTdGF0dXMgKnRyYW5zOwpAQCAt ODg4LDI0ICsxMDk4LDI0IEBAIGFkZF90YWJzdGF0X3hhY3RfbGV2ZWwoUGdTdGF0X1RhYmxl U3RhdHVzICpwZ3N0YXRfaW5mbywgaW50IG5lc3RfbGV2ZWwpCiAJCU1lbW9yeUNvbnRleHRB bGxvY1plcm8oVG9wVHJhbnNhY3Rpb25Db250ZXh0LAogCQkJCQkJCSAgIHNpemVvZihQZ1N0 YXRfVGFibGVYYWN0U3RhdHVzKSk7CiAJdHJhbnMtPm5lc3RfbGV2ZWwgPSBuZXN0X2xldmVs OwotCXRyYW5zLT51cHBlciA9IHBnc3RhdF9pbmZvLT50cmFuczsKLQl0cmFucy0+cGFyZW50 ID0gcGdzdGF0X2luZm87CisJdHJhbnMtPnVwcGVyID0gcGdzdGF0dGFiX2luZm8tPnRyYW5z OworCXRyYW5zLT5wYXJlbnQgPSBwZ3N0YXR0YWJfaW5mbzsKIAl0cmFucy0+bmV4dCA9IHhh Y3Rfc3RhdGUtPmZpcnN0OwogCXhhY3Rfc3RhdGUtPmZpcnN0ID0gdHJhbnM7Ci0JcGdzdGF0 X2luZm8tPnRyYW5zID0gdHJhbnM7CisJcGdzdGF0dGFiX2luZm8tPnRyYW5zID0gdHJhbnM7 CiB9CiAKIC8qCiAgKiBBZGQgYSBuZXcgKHN1Yil0cmFuc2FjdGlvbiByZWNvcmQgaWYgbmVl ZGVkLgogICovCiBzdGF0aWMgdm9pZAotZW5zdXJlX3RhYnN0YXRfeGFjdF9sZXZlbChQZ1N0 YXRfVGFibGVTdGF0dXMgKnBnc3RhdF9pbmZvKQorZW5zdXJlX3RhYnN0YXRfeGFjdF9sZXZl bChQZ1N0YXRfVGFibGVTdGF0dXMgKnBnc3RhdHRhYl9pbmZvKQogewogCWludAkJCW5lc3Rf bGV2ZWwgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25OZXN0TGV2ZWwoKTsKIAotCWlmIChwZ3N0 YXRfaW5mby0+dHJhbnMgPT0gTlVMTCB8fAotCQlwZ3N0YXRfaW5mby0+dHJhbnMtPm5lc3Rf bGV2ZWwgIT0gbmVzdF9sZXZlbCkKLQkJYWRkX3RhYnN0YXRfeGFjdF9sZXZlbChwZ3N0YXRf aW5mbywgbmVzdF9sZXZlbCk7CisJaWYgKHBnc3RhdHRhYl9pbmZvLT50cmFucyA9PSBOVUxM IHx8CisJCXBnc3RhdHRhYl9pbmZvLT50cmFucy0+bmVzdF9sZXZlbCAhPSBuZXN0X2xldmVs KQorCQlhZGRfdGFic3RhdF94YWN0X2xldmVsKHBnc3RhdHRhYl9pbmZvLCBuZXN0X2xldmVs KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRm dW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggOTZi ZmZjMGYyYS4uZTFhNTM0N2UxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNz LmMKQEAgLTM3LDIzICszNywzNyBAQAogI2RlZmluZSBIQVNfUEdTVEFUX1BFUk1JU1NJT05T KHJvbGUpCSAoaGFzX3ByaXZzX29mX3JvbGUoR2V0VXNlcklkKCksIFJPTEVfUEdfUkVBRF9B TExfU1RBVFMpIHx8IGhhc19wcml2c19vZl9yb2xlKEdldFVzZXJJZCgpLCByb2xlKSkKIAog RGF0dW0KLXBnX3N0YXRfZ2V0X251bXNjYW5zKFBHX0ZVTkNUSU9OX0FSR1MpCitwZ19zdGF0 X2dldF9pbmRleF9udW1zY2FucyhQR19GVU5DVElPTl9BUkdTKQogewogCU9pZAkJCXJlbGlk ID0gUEdfR0VUQVJHX09JRCgwKTsKIAlpbnQ2NAkJcmVzdWx0OwotCVBnU3RhdF9TdGF0VGFi RW50cnkgKnRhYmVudHJ5OworCVBnU3RhdF9TdGF0SW5kRW50cnkgKmluZGVudHJ5OwogCi0J aWYgKCh0YWJlbnRyeSA9IHBnc3RhdF9mZXRjaF9zdGF0X3RhYmVudHJ5KHJlbGlkKSkgPT0g TlVMTCkKKwlpZiAoKGluZGVudHJ5ID0gcGdzdGF0X2ZldGNoX3N0YXRfaW5kZW50cnkocmVs aWQpKSA9PSBOVUxMKQogCQlyZXN1bHQgPSAwOwogCWVsc2UKLQkJcmVzdWx0ID0gKGludDY0 KSAodGFiZW50cnktPm51bXNjYW5zKTsKKwkJcmVzdWx0ID0gKGludDY0KSAoaW5kZW50cnkt Pm51bXNjYW5zKTsKIAogCVBHX1JFVFVSTl9JTlQ2NChyZXN1bHQpOwogfQogCitEYXR1bQor cGdfc3RhdF9nZXRfaGVhcF9udW1zY2FucyhQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJ CXJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlpbnQ2NAkJcmVzdWx0OworCVBnU3RhdF9T dGF0VGFiRW50cnkgKnJlbGVudHJ5OworCisJaWYgKChyZWxlbnRyeSA9IHBnc3RhdF9mZXRj aF9zdGF0X3RhYmVudHJ5KHJlbGlkKSkgPT0gTlVMTCkKKwkJcmVzdWx0ID0gMDsKKwllbHNl CisJCXJlc3VsdCA9IChpbnQ2NCkgKHJlbGVudHJ5LT5udW1zY2Fucyk7CisKKwlQR19SRVRV Uk5fSU5UNjQocmVzdWx0KTsKK30KIAogRGF0dW0KLXBnX3N0YXRfZ2V0X2xhc3RzY2FuKFBH X0ZVTkNUSU9OX0FSR1MpCitwZ19zdGF0X2dldF9oZWFwX2xhc3RzY2FuKFBHX0ZVTkNUSU9O X0FSR1MpCiB7CiAJT2lkCQkJcmVsaWQgPSBQR19HRVRBUkdfT0lEKDApOwogCVBnU3RhdF9T dGF0VGFiRW50cnkgKnRhYmVudHJ5OwpAQCAtNjEsMTIgKzc1LDIzIEBAIHBnX3N0YXRfZ2V0 X2xhc3RzY2FuKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaWYgKCh0YWJlbnRyeSA9IHBnc3RhdF9m ZXRjaF9zdGF0X3RhYmVudHJ5KHJlbGlkKSkgPT0gTlVMTCkKIAkJUEdfUkVUVVJOX05VTEwo KTsKIAllbHNlCi0JCVBHX1JFVFVSTl9USU1FU1RBTVBUWih0YWJlbnRyeS0+bGFzdHNjYW4p OworCQlQR19SRVRVUk5fVElNRVNUQU1QVFoodGFiZW50cnktPmxhc3RzY2FuKTs7CiB9CiAK K0RhdHVtCitwZ19zdGF0X2dldF9pbmRleF9sYXN0c2NhbihQR19GVU5DVElPTl9BUkdTKQor eworCU9pZAkJCXJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlQZ1N0YXRfU3RhdEluZEVu dHJ5ICppbmRlbnRyeTsKKworCWlmICgoaW5kZW50cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF9p bmRlbnRyeShyZWxpZCkpID09IE5VTEwpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisJZWxzZQor CQlQR19SRVRVUk5fVElNRVNUQU1QVFooaW5kZW50cnktPmxhc3RzY2FuKTs7Cit9CiAKIERh dHVtCi1wZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQoUEdfRlVOQ1RJT05fQVJHUykKK3Bn X3N0YXRfZ2V0X2hlYXBfdHVwbGVzX3JldHVybmVkKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJ T2lkCQkJcmVsaWQgPSBQR19HRVRBUkdfT0lEKDApOwogCWludDY0CQlyZXN1bHQ7CkBAIC03 OSwxMCArMTA0LDIzIEBAIHBnX3N0YXRfZ2V0X3R1cGxlc19yZXR1cm5lZChQR19GVU5DVElP Tl9BUkdTKQogCiAJUEdfUkVUVVJOX0lOVDY0KHJlc3VsdCk7CiB9CitEYXR1bQorcGdfc3Rh dF9nZXRfaW5kZXhfdHVwbGVzX3JldHVybmVkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lk CQkJcmVsaWQgPSBQR19HRVRBUkdfT0lEKDApOworCWludDY0CQlyZXN1bHQ7CisJUGdTdGF0 X1N0YXRJbmRFbnRyeSAqaW5kZW50cnk7CisKKwlpZiAoKGluZGVudHJ5ID0gcGdzdGF0X2Zl dGNoX3N0YXRfaW5kZW50cnkocmVsaWQpKSA9PSBOVUxMKQorCQlyZXN1bHQgPSAwOworCWVs c2UKKwkJcmVzdWx0ID0gKGludDY0KSAoaW5kZW50cnktPnR1cGxlc19yZXR1cm5lZCk7CiAK KwlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKK30KIAogRGF0dW0KLXBnX3N0YXRfZ2V0X3R1 cGxlc19mZXRjaGVkKFBHX0ZVTkNUSU9OX0FSR1MpCitwZ19zdGF0X2dldF9oZWFwX3R1cGxl c19mZXRjaGVkKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJT2lkCQkJcmVsaWQgPSBQR19HRVRB UkdfT0lEKDApOwogCWludDY0CQlyZXN1bHQ7CkBAIC05Niw2ICsxMzQsMjEgQEAgcGdfc3Rh dF9nZXRfdHVwbGVzX2ZldGNoZWQoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fSU5U NjQocmVzdWx0KTsKIH0KIAorRGF0dW0KK3BnX3N0YXRfZ2V0X2luZGV4X3R1cGxlc19mZXRj aGVkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJcmVsaWQgPSBQR19HRVRBUkdfT0lE KDApOworCWludDY0CQlyZXN1bHQ7CisJUGdTdGF0X1N0YXRJbmRFbnRyeSAqaW5kZW50cnk7 CisKKwlpZiAoKGluZGVudHJ5ID0gcGdzdGF0X2ZldGNoX3N0YXRfaW5kZW50cnkocmVsaWQp KSA9PSBOVUxMKQorCQlyZXN1bHQgPSAwOworCWVsc2UKKwkJcmVzdWx0ID0gKGludDY0KSAo aW5kZW50cnktPnR1cGxlc19mZXRjaGVkKTsKKworCVBHX1JFVFVSTl9JTlQ2NChyZXN1bHQp OworfQorCiAKIERhdHVtCiBwZ19zdGF0X2dldF90dXBsZXNfaW5zZXJ0ZWQoUEdfRlVOQ1RJ T05fQVJHUykKQEAgLTIyNiw3ICsyNzksNyBAQCBwZ19zdGF0X2dldF9pbnNfc2luY2VfdmFj dXVtKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAogRGF0dW0KLXBnX3N0YXRfZ2V0X2Jsb2Nrc19m ZXRjaGVkKFBHX0ZVTkNUSU9OX0FSR1MpCitwZ19zdGF0X2dldF9oZWFwX2Jsb2Nrc19mZXRj aGVkKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJT2lkCQkJcmVsaWQgPSBQR19HRVRBUkdfT0lE KDApOwogCWludDY0CQlyZXN1bHQ7CkBAIC0yNDAsOSArMjkzLDIzIEBAIHBnX3N0YXRfZ2V0 X2Jsb2Nrc19mZXRjaGVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0lOVDY0KHJl c3VsdCk7CiB9CiAKK0RhdHVtCitwZ19zdGF0X2dldF9pbmRleF9ibG9ja3NfZmV0Y2hlZChQ R19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCXJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsK KwlpbnQ2NAkJcmVzdWx0OworCVBnU3RhdF9TdGF0SW5kRW50cnkgKmluZGVudHJ5OworCisJ aWYgKChpbmRlbnRyeSA9IHBnc3RhdF9mZXRjaF9zdGF0X2luZGVudHJ5KHJlbGlkKSkgPT0g TlVMTCkKKwkJcmVzdWx0ID0gMDsKKwllbHNlCisJCXJlc3VsdCA9IChpbnQ2NCkgKGluZGVu dHJ5LT5ibG9ja3NfZmV0Y2hlZCk7CisKKwlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKK30K IAogRGF0dW0KLXBnX3N0YXRfZ2V0X2Jsb2Nrc19oaXQoUEdfRlVOQ1RJT05fQVJHUykKK3Bn X3N0YXRfZ2V0X2hlYXBfYmxvY2tzX2hpdChQR19GVU5DVElPTl9BUkdTKQogewogCU9pZAkJ CXJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKIAlpbnQ2NAkJcmVzdWx0OwpAQCAtMjU2LDYg KzMyMywyMSBAQCBwZ19zdGF0X2dldF9ibG9ja3NfaGl0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ UEdfUkVUVVJOX0lOVDY0KHJlc3VsdCk7CiB9CiAKK0RhdHVtCitwZ19zdGF0X2dldF9pbmRl eF9ibG9ja3NfaGl0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJcmVsaWQgPSBQR19H RVRBUkdfT0lEKDApOworCWludDY0CQlyZXN1bHQ7CisJUGdTdGF0X1N0YXRJbmRFbnRyeSAq aW5kZW50cnk7CisKKwlpZiAoKGluZGVudHJ5ID0gcGdzdGF0X2ZldGNoX3N0YXRfaW5kZW50 cnkocmVsaWQpKSA9PSBOVUxMKQorCQlyZXN1bHQgPSAwOworCWVsc2UKKwkJcmVzdWx0ID0g KGludDY0KSAoaW5kZW50cnktPmJsb2Nrc19oaXQpOworCisJUEdfUkVUVVJOX0lOVDY0KHJl c3VsdCk7Cit9CisKIERhdHVtCiBwZ19zdGF0X2dldF9sYXN0X3ZhY3V1bV90aW1lKFBHX0ZV TkNUSU9OX0FSR1MpCiB7CkBAIC0xODM3LDcgKzE5MTksNyBAQCBwZ19zdGF0X2dldF9zbHJ1 KFBHX0ZVTkNUSU9OX0FSR1MpCiB9CiAKIERhdHVtCi1wZ19zdGF0X2dldF94YWN0X251bXNj YW5zKFBHX0ZVTkNUSU9OX0FSR1MpCitwZ19zdGF0X2dldF9oZWFwX3hhY3RfbnVtc2NhbnMo UEdfRlVOQ1RJT05fQVJHUykKIHsKIAlPaWQJCQlyZWxpZCA9IFBHX0dFVEFSR19PSUQoMCk7 CiAJaW50NjQJCXJlc3VsdDsKQEAgLTE4NTEsMTcgKzE5MzMsMzIgQEAgcGdfc3RhdF9nZXRf eGFjdF9udW1zY2FucyhQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9JTlQ2NChyZXN1 bHQpOwogfQogCitEYXR1bQorcGdfc3RhdF9nZXRfaW5kZXhfeGFjdF9udW1zY2FucyhQR19G VU5DVElPTl9BUkdTKQoreworCU9pZAkJCXJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlp bnQ2NAkJcmVzdWx0OworCVBnU3RhdF9JbmRleFN0YXR1cyAqaW5kZW50cnk7CisKKwlpZiAo KGluZGVudHJ5ID0gZmluZF9pbmRzdGF0X2VudHJ5KHJlbGlkKSkgPT0gTlVMTCkKKwkJcmVz dWx0ID0gMDsKKwllbHNlCisJCXJlc3VsdCA9IChpbnQ2NCkgKGluZGVudHJ5LT5pX2NvdW50 cy5pX251bXNjYW5zKTsKKworCVBHX1JFVFVSTl9JTlQ2NChyZXN1bHQpOworfQorCiBEYXR1 bQogcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfcmV0dXJuZWQoUEdfRlVOQ1RJT05fQVJHUykK IHsKIAlPaWQJCQlyZWxpZCA9IFBHX0dFVEFSR19PSUQoMCk7CiAJaW50NjQJCXJlc3VsdDsK LQlQZ1N0YXRfVGFibGVTdGF0dXMgKnRhYmVudHJ5OworCVBnU3RhdF9JbmRleFN0YXR1cyAq aW5kZW50cnk7CiAKLQlpZiAoKHRhYmVudHJ5ID0gZmluZF90YWJzdGF0X2VudHJ5KHJlbGlk KSkgPT0gTlVMTCkKKwlpZiAoKGluZGVudHJ5ID0gZmluZF9pbmRzdGF0X2VudHJ5KHJlbGlk KSkgPT0gTlVMTCkKIAkJcmVzdWx0ID0gMDsKIAllbHNlCi0JCXJlc3VsdCA9IChpbnQ2NCkg KHRhYmVudHJ5LT50X2NvdW50cy50X3R1cGxlc19yZXR1cm5lZCk7CisJCXJlc3VsdCA9IChp bnQ2NCkgKGluZGVudHJ5LT5pX2NvdW50cy5pX3R1cGxlc19yZXR1cm5lZCk7CiAKIAlQR19S RVRVUk5fSU5UNjQocmVzdWx0KTsKIH0KQEAgLTE4NzEsMTIgKzE5NjgsMTIgQEAgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfZmV0Y2hlZChQR19GVU5DVElPTl9BUkdTKQogewogCU9pZAkJ CXJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKIAlpbnQ2NAkJcmVzdWx0OwotCVBnU3RhdF9U YWJsZVN0YXR1cyAqdGFiZW50cnk7CisJUGdTdGF0X0luZGV4U3RhdHVzICppbmRlbnRyeTsK IAotCWlmICgodGFiZW50cnkgPSBmaW5kX3RhYnN0YXRfZW50cnkocmVsaWQpKSA9PSBOVUxM KQorCWlmICgoaW5kZW50cnkgPSBmaW5kX2luZHN0YXRfZW50cnkocmVsaWQpKSA9PSBOVUxM KQogCQlyZXN1bHQgPSAwOwogCWVsc2UKLQkJcmVzdWx0ID0gKGludDY0KSAodGFiZW50cnkt PnRfY291bnRzLnRfdHVwbGVzX2ZldGNoZWQpOworCQlyZXN1bHQgPSAoaW50NjQpIChpbmRl bnRyeS0+aV9jb3VudHMuaV90dXBsZXNfZmV0Y2hlZCk7CiAKIAlQR19SRVRVUk5fSU5UNjQo cmVzdWx0KTsKIH0KQEAgLTE5NjQsMTIgKzIwNjEsMTIgQEAgcGdfc3RhdF9nZXRfeGFjdF9i bG9ja3NfZmV0Y2hlZChQR19GVU5DVElPTl9BUkdTKQogewogCU9pZAkJCXJlbGlkID0gUEdf R0VUQVJHX09JRCgwKTsKIAlpbnQ2NAkJcmVzdWx0OwotCVBnU3RhdF9UYWJsZVN0YXR1cyAq dGFiZW50cnk7CisJUGdTdGF0X0luZGV4U3RhdHVzICppbmRlbnRyeTsKIAotCWlmICgodGFi ZW50cnkgPSBmaW5kX3RhYnN0YXRfZW50cnkocmVsaWQpKSA9PSBOVUxMKQorCWlmICgoaW5k ZW50cnkgPSBmaW5kX2luZHN0YXRfZW50cnkocmVsaWQpKSA9PSBOVUxMKQogCQlyZXN1bHQg PSAwOwogCWVsc2UKLQkJcmVzdWx0ID0gKGludDY0KSAodGFiZW50cnktPnRfY291bnRzLnRf YmxvY2tzX2ZldGNoZWQpOworCQlyZXN1bHQgPSAoaW50NjQpIChpbmRlbnRyeS0+aV9jb3Vu dHMuaV9ibG9ja3NfZmV0Y2hlZCk7CiAKIAlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKIH0K QEAgLTE5NzksMTIgKzIwNzYsMTIgQEAgcGdfc3RhdF9nZXRfeGFjdF9ibG9ja3NfaGl0KFBH X0ZVTkNUSU9OX0FSR1MpCiB7CiAJT2lkCQkJcmVsaWQgPSBQR19HRVRBUkdfT0lEKDApOwog CWludDY0CQlyZXN1bHQ7Ci0JUGdTdGF0X1RhYmxlU3RhdHVzICp0YWJlbnRyeTsKKwlQZ1N0 YXRfSW5kZXhTdGF0dXMgKmluZGVudHJ5OwogCi0JaWYgKCh0YWJlbnRyeSA9IGZpbmRfdGFi c3RhdF9lbnRyeShyZWxpZCkpID09IE5VTEwpCisJaWYgKChpbmRlbnRyeSA9IGZpbmRfaW5k c3RhdF9lbnRyeShyZWxpZCkpID09IE5VTEwpCiAJCXJlc3VsdCA9IDA7CiAJZWxzZQotCQly ZXN1bHQgPSAoaW50NjQpICh0YWJlbnRyeS0+dF9jb3VudHMudF9ibG9ja3NfaGl0KTsKKwkJ cmVzdWx0ID0gKGludDY0KSAoaW5kZW50cnktPmlfY291bnRzLmlfYmxvY2tzX2hpdCk7CiAK IAlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKIH0KQEAgLTIxMDMsNyArMjIwMCw4IEBAIHBn X3N0YXRfcmVzZXRfc2luZ2xlX3RhYmxlX2NvdW50ZXJzKFBHX0ZVTkNUSU9OX0FSR1MpCiB7 CiAJT2lkCQkJdGFib2lkID0gUEdfR0VUQVJHX09JRCgwKTsKIAotCXBnc3RhdF9yZXNldChQ R1NUQVRfS0lORF9SRUxBVElPTiwgTXlEYXRhYmFzZUlkLCB0YWJvaWQpOworCXBnc3RhdF9y ZXNldChQR1NUQVRfS0lORF9UQUJMRSwgTXlEYXRhYmFzZUlkLCB0YWJvaWQpOworCXBnc3Rh dF9yZXNldChQR1NUQVRfS0lORF9JTkRFWCwgTXlEYXRhYmFzZUlkLCB0YWJvaWQpOwogCiAJ UEdfUkVUVVJOX1ZPSUQoKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmlu ZGV4IGJkNmNkNGU0N2IuLjJkMjRhYmMzZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYwpAQCAtMjcyMCw4ICsyNzIwLDkgQEAgUmVsYXRpb25DbGVhclJlbGF0aW9uKFJl bGF0aW9uIHJlbGF0aW9uLCBib29sIHJlYnVpbGQpCiAJCQlTV0FQRklFTEQoUm93U2VjdXJp dHlEZXNjICosIHJkX3JzZGVzYyk7CiAJCS8qIHRvYXN0IE9JRCBvdmVycmlkZSBtdXN0IGJl IHByZXNlcnZlZCAqLwogCQlTV0FQRklFTEQoT2lkLCByZF90b2FzdG9pZCk7Ci0JCS8qIHBn c3RhdF9pbmZvIC8gZW5hYmxlZCBtdXN0IGJlIHByZXNlcnZlZCAqLwotCQlTV0FQRklFTEQo c3RydWN0IFBnU3RhdF9UYWJsZVN0YXR1cyAqLCBwZ3N0YXRfaW5mbyk7CisJCS8qIHBnc3Rh dHRhYl9pbmZvIC8gcGdzdGF0aW5kX2luZm8gLyBlbmFibGVkIG11c3QgYmUgcHJlc2VydmVk ICovCisJCVNXQVBGSUVMRChzdHJ1Y3QgUGdTdGF0X1RhYmxlU3RhdHVzICosIHBnc3RhdHRh Yl9pbmZvKTsKKwkJU1dBUEZJRUxEKHN0cnVjdCBQZ1N0YXRfSW5kZXhTdGF0dXMgKiwgcGdz dGF0aW5kX2luZm8pOwogCQlTV0FQRklFTEQoYm9vbCwgcGdzdGF0X2VuYWJsZWQpOwogCQkv KiBwcmVzZXJ2ZSBvbGQgcGFydGl0aW9uIGtleSBpZiB3ZSBoYXZlIG9uZSAqLwogCQlpZiAo a2VlcF9wYXJ0a2V5KQpAQCAtNjMxNCw3ICs2MzE1LDggQEAgbG9hZF9yZWxjYWNoZV9pbml0 X2ZpbGUoYm9vbCBzaGFyZWQpCiAJCXJlbC0+cmRfZmlyc3RSZWxmaWxlbG9jYXRvclN1Ymlk ID0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQ7CiAJCXJlbC0+cmRfZHJvcHBlZFN1YmlkID0g SW52YWxpZFN1YlRyYW5zYWN0aW9uSWQ7CiAJCXJlbC0+cmRfYW1jYWNoZSA9IE5VTEw7Ci0J CXJlbC0+cGdzdGF0X2luZm8gPSBOVUxMOworCQlyZWwtPnBnc3RhdHRhYl9pbmZvID0gTlVM TDsKKwkJcmVsLT5wZ3N0YXRpbmRfaW5mbyA9IE5VTEw7CiAKIAkJLyoKIAkJICogUmVjb21w dXRlIGxvY2sgYW5kIHBoeXNpY2FsIGFkZHJlc3NpbmcgaW5mby4gIFRoaXMgaXMgbmVlZGVk IGluCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAyMGY1YWE1NmVhLi43NzMzZWJm Y2I5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTUyNDgsMjIgKzUyNDgsMzgg QEAKICAgcHJvYXJnbmFtZXMgPT4gJ3ttY3ZfbGlzdCxpbmRleCx2YWx1ZXMsbnVsbHMsZnJl cXVlbmN5LGJhc2VfZnJlcXVlbmN5fScsCiAgIHByb3NyYyA9PiAncGdfc3RhdHNfZXh0X21j dmxpc3RfaXRlbXMnIH0sCiAKLXsgb2lkID0+ICcxOTI4JywgZGVzY3IgPT4gJ3N0YXRpc3Rp Y3M6IG51bWJlciBvZiBzY2FucyBkb25lIGZvciB0YWJsZS9pbmRleCcsCi0gIHByb25hbWUg PT4gJ3BnX3N0YXRfZ2V0X251bXNjYW5zJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJh bGxlbCA9PiAncicsCit7IG9pZCA9PiAnMTkyOCcsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBu dW1iZXIgb2Ygc2NhbnMgZG9uZSBmb3IgdGFibGUnLAorICBwcm9uYW1lID0+ICdwZ19zdGF0 X2dldF9oZWFwX251bXNjYW5zJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9 PiAncicsCiAgIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywK LSAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9udW1zY2FucycgfSwKLXsgb2lkID0+ICc5OTc2 JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHRpbWUgb2YgdGhlIGxhc3Qgc2NhbiBmb3IgdGFi bGUvaW5kZXgnLAotICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9sYXN0c2NhbicsIHByb3Zv bGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAorICBwcm9zcmMgPT4gJ3BnX3N0 YXRfZ2V0X2hlYXBfbnVtc2NhbnMnIH0sCit7IG9pZCA9PiAnODI5NicsIGRlc2NyID0+ICdz dGF0aXN0aWNzOiBudW1iZXIgb2Ygc2NhbnMgZG9uZSBmb3IgaW5kZXgnLAorICBwcm9uYW1l ID0+ICdwZ19zdGF0X2dldF9pbmRleF9udW1zY2FucycsIHByb3ZvbGF0aWxlID0+ICdzJywg cHJvcGFyYWxsZWwgPT4gJ3InLAorICBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlw ZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfaW5kZXhfbnVtc2NhbnMn IH0sCit7IG9pZCA9PiAnOTk3NicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiB0aW1lIG9mIHRo ZSBsYXN0IHNjYW4gZm9yIHRhYmxlJywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfaGVh cF9sYXN0c2NhbicsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAor ICBwcm9yZXR0eXBlID0+ICd0aW1lc3RhbXB0eicsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAor ICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2hlYXBfbGFzdHNjYW4nIH0sCit7IG9pZCA9PiAn ODYyNicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiB0aW1lIG9mIHRoZSBsYXN0IHNjYW4gZm9y IGluZGV4JywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfaW5kZXhfbGFzdHNjYW4nLCBw cm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKICAgcHJvcmV0dHlwZSA9 PiAndGltZXN0YW1wdHonLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvc3JjID0+ICdw Z19zdGF0X2dldF9sYXN0c2NhbicgfSwKKyAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9pbmRl eF9sYXN0c2NhbicgfSwKIHsgb2lkID0+ICcxOTI5JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6 IG51bWJlciBvZiB0dXBsZXMgcmVhZCBieSBzZXFzY2FuJywKLSAgcHJvbmFtZSA9PiAncGdf c3RhdF9nZXRfdHVwbGVzX3JldHVybmVkJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9u YW1lID0+ICdwZ19zdGF0X2dldF9oZWFwX3R1cGxlc19yZXR1cm5lZCcsIHByb3ZvbGF0aWxl ID0+ICdzJywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4Jywg cHJvYXJndHlwZXMgPT4gJ29pZCcsCi0gIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfdHVwbGVz X3JldHVybmVkJyB9LAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2hlYXBfdHVwbGVzX3Jl dHVybmVkJyB9LAoreyBvaWQgPT4gJzk2MDMnLCBkZXNjciA9PiAnc3RhdGlzdGljczogbnVt YmVyIG9mIHR1cGxlcyByZWFkIGJ5IHNlcXNjYW4nLAorICBwcm9uYW1lID0+ICdwZ19zdGF0 X2dldF9pbmRleF90dXBsZXNfcmV0dXJuZWQnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHBy b3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ ICdvaWQnLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2luZGV4X3R1cGxlc19yZXR1cm5l ZCcgfSwKIHsgb2lkID0+ICcxOTMwJywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJlciBv ZiB0dXBsZXMgZmV0Y2hlZCBieSBpZHhzY2FuJywKLSAgcHJvbmFtZSA9PiAncGdfc3RhdF9n ZXRfdHVwbGVzX2ZldGNoZWQnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb25hbWUgPT4g J3BnX3N0YXRfZ2V0X2hlYXBfdHVwbGVzX2ZldGNoZWQnLCBwcm92b2xhdGlsZSA9PiAncycs CisgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5 cGVzID0+ICdvaWQnLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2hlYXBfdHVwbGVzX2Zl dGNoZWQnIH0sCit7IG9pZCA9PiAnODUyNicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBudW1i ZXIgb2YgdHVwbGVzIGZldGNoZWQgYnkgaWR4c2NhbicsCisgIHByb25hbWUgPT4gJ3BnX3N0 YXRfZ2V0X2luZGV4X3R1cGxlc19mZXRjaGVkJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBw cm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9 PiAnb2lkJywKLSAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF90dXBsZXNfZmV0Y2hlZCcgfSwK KyAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9pbmRleF90dXBsZXNfZmV0Y2hlZCcgfSwKIHsg b2lkID0+ICcxOTMxJywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJlciBvZiB0dXBsZXMg aW5zZXJ0ZWQnLAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF90dXBsZXNfaW5zZXJ0ZWQn LCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlw ZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLApAQCAtNTI5OSwxMyArNTMxNSwy MSBAQAogICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9h cmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9pbnNfc2luY2Vf dmFjdXVtJyB9LAogeyBvaWQgPT4gJzE5MzQnLCBkZXNjciA9PiAnc3RhdGlzdGljczogbnVt YmVyIG9mIGJsb2NrcyBmZXRjaGVkJywKLSAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfYmxv Y2tzX2ZldGNoZWQnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb25hbWUgPT4gJ3BnX3N0 YXRfZ2V0X2hlYXBfYmxvY2tzX2ZldGNoZWQnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHBy b3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ ICdvaWQnLAotICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2Jsb2Nrc19mZXRjaGVkJyB9LAor ICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2hlYXBfYmxvY2tzX2ZldGNoZWQnIH0sCit7IG9p ZCA9PiAnOTQzMicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2YgYmxvY2tzIGZl dGNoZWQnLAorICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9pbmRleF9ibG9ja3NfZmV0Y2hl ZCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0 eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdf c3RhdF9nZXRfaW5kZXhfYmxvY2tzX2ZldGNoZWQnIH0sCiB7IG9pZCA9PiAnMTkzNScsIGRl c2NyID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2YgYmxvY2tzIGZvdW5kIGluIGNhY2hlJywK LSAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfYmxvY2tzX2hpdCcsIHByb3ZvbGF0aWxlID0+ ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAorICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9o ZWFwX2Jsb2Nrc19oaXQnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdy JywKKyAgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBw cm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2hlYXBfYmxvY2tzX2hpdCcgfSwKK3sgb2lkID0+ICc4 MzU0JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJlciBvZiBibG9ja3MgZm91bmQgaW4g Y2FjaGUnLAorICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9pbmRleF9ibG9ja3NfaGl0Jywg cHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCiAgIHByb3JldHR5cGUg PT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvc3JjID0+ICdwZ19zdGF0 X2dldF9ibG9ja3NfaGl0JyB9LAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2luZGV4X2Js b2Nrc19oaXQnIH0sCiB7IG9pZCA9PiAnMjc4MScsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBs YXN0IG1hbnVhbCB2YWN1dW0gdGltZSBmb3IgYSB0YWJsZScsCiAgIHByb25hbWUgPT4gJ3Bn X3N0YXRfZ2V0X2xhc3RfdmFjdXVtX3RpbWUnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHBy b3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAndGltZXN0YW1wdHonLCBwcm9hcmd0 eXBlcyA9PiAnb2lkJywKQEAgLTU2OTMsMTAgKzU3MTcsMTUgQEAKICAgcHJvc3JjID0+ICdw Z19zdGF0X2dldF9mdW5jdGlvbl9zZWxmX3RpbWUnIH0sCiAKIHsgb2lkID0+ICczMDM3JywK LSAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJlciBvZiBzY2FucyBkb25lIGZvciB0YWJs ZS9pbmRleCBpbiBjdXJyZW50IHRyYW5zYWN0aW9uJywKLSAgcHJvbmFtZSA9PiAncGdfc3Rh dF9nZXRfeGFjdF9udW1zY2FucycsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgZGVzY3IgPT4g J3N0YXRpc3RpY3M6IG51bWJlciBvZiBzY2FucyBkb25lIGZvciB0YWJsZSBpbiBjdXJyZW50 IHRyYW5zYWN0aW9uJywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfaGVhcF94YWN0X251 bXNjYW5zJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9wYXJhbGxlbCA9PiAncicsIHBy b3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ ICdwZ19zdGF0X2dldF9oZWFwX3hhY3RfbnVtc2NhbnMnIH0sCit7IG9pZCA9PiAnODg5Mics CisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2Ygc2NhbnMgZG9uZSBmb3IgaW5k ZXggaW4gY3VycmVudCB0cmFuc2FjdGlvbicsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0 X2luZGV4X3hhY3RfbnVtc2NhbnMnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHByb3BhcmFs bGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQn LAotICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3hhY3RfbnVtc2NhbnMnIH0sCisgIHByb3Ny YyA9PiAncGdfc3RhdF9nZXRfaW5kZXhfeGFjdF9udW1zY2FucycgfSwKIHsgb2lkID0+ICcz MDM4JywKICAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJlciBvZiB0dXBsZXMgcmVhZCBi eSBzZXFzY2FuIGluIGN1cnJlbnQgdHJhbnNhY3Rpb24nLAogICBwcm9uYW1lID0+ICdwZ19z dGF0X2dldF94YWN0X3R1cGxlc19yZXR1cm5lZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgK aW5kZXggOWUyY2U2ZjAxMS4uNjViMWFmZTk3MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTM5LDcgKzM5LDggQEAg dHlwZWRlZiBlbnVtIFBnU3RhdF9LaW5kCiAKIAkvKiBzdGF0cyBmb3IgdmFyaWFibGUtbnVt YmVyZWQgb2JqZWN0cyAqLwogCVBHU1RBVF9LSU5EX0RBVEFCQVNFLAkJLyogZGF0YWJhc2Ut d2lkZSBzdGF0aXN0aWNzICovCi0JUEdTVEFUX0tJTkRfUkVMQVRJT04sCQkvKiBwZXItdGFi bGUgc3RhdGlzdGljcyAqLworCVBHU1RBVF9LSU5EX1RBQkxFLAkJCS8qIHBlci10YWJsZSBz dGF0aXN0aWNzICovCisJUEdTVEFUX0tJTkRfSU5ERVgsCQkJLyogcGVyLWluZGV4IHN0YXRp c3RpY3MgKi8KIAlQR1NUQVRfS0lORF9GVU5DVElPTiwJCS8qIHBlci1mdW5jdGlvbiBzdGF0 aXN0aWNzICovCiAJUEdTVEFUX0tJTkRfUkVQTFNMT1QsCQkvKiBwZXItc2xvdCBzdGF0aXN0 aWNzICovCiAJUEdTVEFUX0tJTkRfU1VCU0NSSVBUSU9OLAkvKiBwZXItc3Vic2NyaXB0aW9u IHN0YXRpc3RpY3MgKi8KQEAgLTE0NSw2ICsxNDYsMjggQEAgdHlwZWRlZiBzdHJ1Y3QgUGdT dGF0X0JhY2tlbmRTdWJFbnRyeQogCVBnU3RhdF9Db3VudGVyIHN5bmNfZXJyb3JfY291bnQ7 CiB9IFBnU3RhdF9CYWNrZW5kU3ViRW50cnk7CiAKKy8qIC0tLS0tLS0tLS0KKyAqIFBnU3Rh dF9JbmRleENvdW50cwkJCVRoZSBhY3R1YWwgcGVyLWluZGV4IGNvdW50cyBrZXB0IGJ5IGEg YmFja2VuZAorICoKKyAqIFRoaXMgc3RydWN0IHNob3VsZCBjb250YWluIG9ubHkgYWN0dWFs IGV2ZW50IGNvdW50ZXJzLCBiZWNhdXNlIHdlIG1lbWNtcAorICogaXQgYWdhaW5zdCB6ZXJv ZXMgdG8gZGV0ZWN0IHdoZXRoZXIgdGhlcmUgYXJlIGFueSBzdGF0cyB1cGRhdGVzIHRvIGFw cGx5LgorICogSXQgaXMgYSBjb21wb25lbnQgb2YgUGdTdGF0X0luZGV4U3RhdHVzICh3aXRo aW4tYmFja2VuZCBzdGF0ZSkuCisgKgorICogdHVwbGVzX3JldHVybmVkIGlzIHRoZSBudW1i ZXIgb2YgaW5kZXggZW50cmllcyByZXR1cm5lZCBieQorICogdGhlIGluZGV4IEFNLCB3aGls ZSB0dXBsZXNfZmV0Y2hlZCBpcyB0aGUgbnVtYmVyIG9mIHR1cGxlcyBzdWNjZXNzZnVsbHkK KyAqIGZldGNoZWQgYnkgaGVhcF9mZXRjaCB1bmRlciB0aGUgY29udHJvbCBvZiBzaW1wbGUg aW5kZXhzY2FucyBmb3IgdGhpcyBpbmRleC4KKyAqIC0tLS0tLS0tLS0KKyAqLwordHlwZWRl ZiBzdHJ1Y3QgUGdTdGF0X0luZGV4Q291bnRzCit7CisJUGdTdGF0X0NvdW50ZXIgaV9udW1z Y2FuczsKKworCVBnU3RhdF9Db3VudGVyIGlfdHVwbGVzX3JldHVybmVkOworCVBnU3RhdF9D b3VudGVyIGlfdHVwbGVzX2ZldGNoZWQ7CisJUGdTdGF0X0NvdW50ZXIgaV9ibG9ja3NfZmV0 Y2hlZDsKKwlQZ1N0YXRfQ291bnRlciBpX2Jsb2Nrc19oaXQ7Cit9IFBnU3RhdF9JbmRleENv dW50czsKKwogLyogLS0tLS0tLS0tLQogICogUGdTdGF0X1RhYmxlQ291bnRzCQkJVGhlIGFj dHVhbCBwZXItdGFibGUgY291bnRzIGtlcHQgYnkgYSBiYWNrZW5kCiAgKgpAQCAtMTUyLDEy ICsxNzUsOSBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfQmFja2VuZFN1YkVudHJ5CiAgKiBp dCBhZ2FpbnN0IHplcm9lcyB0byBkZXRlY3Qgd2hldGhlciB0aGVyZSBhcmUgYW55IHN0YXRz IHVwZGF0ZXMgdG8gYXBwbHkuCiAgKiBJdCBpcyBhIGNvbXBvbmVudCBvZiBQZ1N0YXRfVGFi bGVTdGF0dXMgKHdpdGhpbi1iYWNrZW5kIHN0YXRlKS4KICAqCi0gKiBOb3RlOiBmb3IgYSB0 YWJsZSwgdHVwbGVzX3JldHVybmVkIGlzIHRoZSBudW1iZXIgb2YgdHVwbGVzIHN1Y2Nlc3Nm dWxseQorICogTm90ZTogdHVwbGVzX3JldHVybmVkIGlzIHRoZSBudW1iZXIgb2YgdHVwbGVz IHN1Y2Nlc3NmdWxseQogICogZmV0Y2hlZCBieSBoZWFwX2dldG5leHQsIHdoaWxlIHR1cGxl c19mZXRjaGVkIGlzIHRoZSBudW1iZXIgb2YgdHVwbGVzCiAgKiBzdWNjZXNzZnVsbHkgZmV0 Y2hlZCBieSBoZWFwX2ZldGNoIHVuZGVyIHRoZSBjb250cm9sIG9mIGJpdG1hcCBpbmRleHNj YW5zLgotICogRm9yIGFuIGluZGV4LCB0dXBsZXNfcmV0dXJuZWQgaXMgdGhlIG51bWJlciBv ZiBpbmRleCBlbnRyaWVzIHJldHVybmVkIGJ5Ci0gKiB0aGUgaW5kZXggQU0sIHdoaWxlIHR1 cGxlc19mZXRjaGVkIGlzIHRoZSBudW1iZXIgb2YgdHVwbGVzIHN1Y2Nlc3NmdWxseQotICog ZmV0Y2hlZCBieSBoZWFwX2ZldGNoIHVuZGVyIHRoZSBjb250cm9sIG9mIHNpbXBsZSBpbmRl eHNjYW5zIGZvciB0aGlzIGluZGV4LgogICoKICAqIHR1cGxlc19pbnNlcnRlZC91cGRhdGVk L2RlbGV0ZWQvaG90X3VwZGF0ZWQgY291bnQgYXR0ZW1wdGVkIGFjdGlvbnMsCiAgKiByZWdh cmRsZXNzIG9mIHdoZXRoZXIgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdHRlZC4gIGRlbHRhX2xp dmVfdHVwbGVzLApAQCAtMjEwLDYgKzIzMCwyMiBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRf VGFibGVTdGF0dXMKIAlSZWxhdGlvbglyZWxhdGlvbjsJCS8qIHJlbCB0aGF0IGlzIHVzaW5n IHRoaXMgZW50cnkgKi8KIH0gUGdTdGF0X1RhYmxlU3RhdHVzOwogCisvKiAtLS0tLS0tLS0t CisgKiBQZ1N0YXRfSW5kZXhTdGF0dXMJCQlQZXItaW5kZXggc3RhdHVzIHdpdGhpbiBhIGJh Y2tlbmQKKyAqCisgKiBNYW55IG9mIHRoZSBldmVudCBjb3VudGVycyBhcmUgbm9udHJhbnNh Y3Rpb25hbCwgaWUsIHdlIGNvdW50IGV2ZW50cworICogaW4gY29tbWl0dGVkIGFuZCBhYm9y dGVkIHRyYW5zYWN0aW9ucyBhbGlrZS4gIEZvciB0aGVzZSwgd2UganVzdCBjb3VudAorICog ZGlyZWN0bHkgaW4gdGhlIFBnU3RhdF9JbmRleFN0YXR1cy4KKyAqIC0tLS0tLS0tLS0KKyAq LwordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0luZGV4U3RhdHVzCit7CisJT2lkCQkJcl9pZDsJ CQkvKiByZWxhdGlvbidzIE9JRCAqLworCWJvb2wJCXJfc2hhcmVkOwkJLyogaXMgaXQgYSBz aGFyZWQgY2F0YWxvZz8gKi8KKwlQZ1N0YXRfSW5kZXhDb3VudHMgaV9jb3VudHM7CS8qIGV2 ZW50IGNvdW50cyB0byBiZSBzZW50ICovCisJUmVsYXRpb24JcmVsYXRpb247CQkvKiByZWwg dGhhdCBpcyB1c2luZyB0aGlzIGVudHJ5ICovCit9IFBnU3RhdF9JbmRleFN0YXR1czsKKwog LyogLS0tLS0tLS0tLQogICogUGdTdGF0X1RhYmxlWGFjdFN0YXR1cwkJUGVyLXRhYmxlLCBw ZXItc3VidHJhbnNhY3Rpb24gc3RhdHVzCiAgKiAtLS0tLS0tLS0tCkBAIC0zODIsNiArNDE4 LDE3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9TdGF0VGFiRW50cnkKIAlQZ1N0YXRfQ291 bnRlciBhdXRvdmFjX2FuYWx5emVfY291bnQ7CiB9IFBnU3RhdF9TdGF0VGFiRW50cnk7CiAK K3R5cGVkZWYgc3RydWN0IFBnU3RhdF9TdGF0SW5kRW50cnkKK3sKKwlQZ1N0YXRfQ291bnRl ciBudW1zY2FuczsKKwlUaW1lc3RhbXBUeiBsYXN0c2NhbjsKKworCVBnU3RhdF9Db3VudGVy IHR1cGxlc19yZXR1cm5lZDsKKwlQZ1N0YXRfQ291bnRlciB0dXBsZXNfZmV0Y2hlZDsKKwlQ Z1N0YXRfQ291bnRlciBibG9ja3NfZmV0Y2hlZDsKKwlQZ1N0YXRfQ291bnRlciBibG9ja3Nf aGl0OworfSBQZ1N0YXRfU3RhdEluZEVudHJ5OworCiB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRf V2FsU3RhdHMKIHsKIAlQZ1N0YXRfQ291bnRlciB3YWxfcmVjb3JkczsKQEAgLTQ5OCwxMSAr NTQ1LDE1IEBAIGV4dGVybiBQZ1N0YXRfQmFja2VuZEZ1bmN0aW9uRW50cnkgKmZpbmRfZnVu Y3N0YXRfZW50cnkoT2lkIGZ1bmNfaWQpOwogICovCiAKIGV4dGVybiB2b2lkIHBnc3RhdF9j cmVhdGVfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKLWV4dGVybiB2b2lkIHBnc3RhdF9kcm9w X3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7Ci1leHRlcm4gdm9pZCBwZ3N0YXRfY29weV9yZWxh dGlvbl9zdGF0cyhSZWxhdGlvbiBkc3QsIFJlbGF0aW9uIHNyYyk7CitleHRlcm4gdm9pZCBw Z3N0YXRfY3JlYXRlX3RhYmxlKFJlbGF0aW9uIHJlbCk7CitleHRlcm4gdm9pZCBwZ3N0YXRf ZHJvcF9oZWFwKFJlbGF0aW9uIHJlbCk7CitleHRlcm4gdm9pZCBwZ3N0YXRfZHJvcF9pbmRl eChSZWxhdGlvbiByZWwpOworZXh0ZXJuIHZvaWQgcGdzdGF0X2NvcHlfaW5kZXhfc3RhdHMo UmVsYXRpb24gZHN0LCBSZWxhdGlvbiBzcmMpOwogCiBleHRlcm4gdm9pZCBwZ3N0YXRfaW5p dF9yZWxhdGlvbihSZWxhdGlvbiByZWwpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2Fzc29jX3Jl bGF0aW9uKFJlbGF0aW9uIHJlbCk7CitleHRlcm4gdm9pZCBwZ3N0YXRfYXNzb2NfdGFibGUo UmVsYXRpb24gcmVsKTsKK2V4dGVybiB2b2lkIHBnc3RhdF9hc3NvY19pbmRleChSZWxhdGlv biByZWwpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3VubGlua19yZWxhdGlvbihSZWxhdGlvbiBy ZWwpOwogCiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3ZhY3V1bShPaWQgdGFibGVvaWQs IGJvb2wgc2hhcmVkLApAQCAtNTEzLDUxICs1NjQsNjkgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0 X3JlcG9ydF9hbmFseXplKFJlbGF0aW9uIHJlbCwKIAogLyoKICAqIElmIHN0YXRzIGFyZSBl bmFibGVkLCBidXQgcGVuZGluZyBkYXRhIGhhc24ndCBiZWVuIHByZXBhcmVkIHlldCwgY2Fs bAotICogcGdzdGF0X2Fzc29jX3JlbGF0aW9uKCkgdG8gZG8gc28uIFNlZSBpdHMgY29tbWVu dCBmb3Igd2h5IHRoaXMgaXMgZG9uZQotICogc2VwYXJhdGVseSBmcm9tIHBnc3RhdF9pbml0 X3JlbGF0aW9uKCkuCisgKiBwZ3N0YXRfYXNzb2NfdGFibGUoKSAvIHBnc3RhdF9hc3NvY19p bmRleCgpIHRvIGRvIHNvLgorICogU2VlIHRoZWlyIGNvbW1lbnQgZm9yIHdoeSB0aGlzIGlz IGRvbmUgc2VwYXJhdGVseSBmcm9tIHBnc3RhdF9pbml0X3JlbGF0aW9uKCkuCiAgKi8KLSNk ZWZpbmUgcGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotCShsaWtlbHkoKHJlbCktPnBnc3RhdF9pbmZvICE9IE5VTEwpID8g dHJ1ZSA6ICAgICAgICAgICAgICAgICAgICBcCi0JICgocmVsKS0+cGdzdGF0X2VuYWJsZWQg PyBwZ3N0YXRfYXNzb2NfcmVsYXRpb24ocmVsKSwgdHJ1ZSA6IGZhbHNlKSkKKyNkZWZpbmUg cGdzdGF0X3Nob3VsZF9jb3VudF90YWJsZShyZWwpICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorCShsaWtlbHkoKHJlbCktPnBnc3RhdHRhYl9pbmZvICE9IE5VTEwpID8gdHJ1ZSA6 ICAgICAgICAgICAgICAgICAgICBcCisJICgocmVsKS0+cGdzdGF0X2VuYWJsZWQgPyBwZ3N0 YXRfYXNzb2NfdGFibGUocmVsKSwgdHJ1ZSA6IGZhbHNlKSkKKworI2RlZmluZSBwZ3N0YXRf c2hvdWxkX2NvdW50X2luZGV4KHJlbCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJ KGxpa2VseSgocmVsKS0+cGdzdGF0aW5kX2luZm8gIT0gTlVMTCkgPyB0cnVlIDogICAgICAg ICAgICAgICAgICAgIFwKKwkgKChyZWwpLT5wZ3N0YXRfZW5hYmxlZCA/IHBnc3RhdF9hc3Nv Y19pbmRleChyZWwpLCB0cnVlIDogZmFsc2UpKQogCiAvKiBub250cmFuc2FjdGlvbmFsIGV2 ZW50IGNvdW50cyBhcmUgc2ltcGxlIGVub3VnaCB0byBpbmxpbmUgKi8KIAogI2RlZmluZSBw Z3N0YXRfY291bnRfaGVhcF9zY2FuKHJlbCkJCQkJCQkJCQlcCiAJZG8gewkJCQkJCQkJCQkJ CQkJCVwKLQkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlc Ci0JCQkocmVsKS0+cGdzdGF0X2luZm8tPnRfY291bnRzLnRfbnVtc2NhbnMrKzsJCQkJXAor CQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF90YWJsZShyZWwpKQkJCQkJCVwKKwkJCShyZWwp LT5wZ3N0YXR0YWJfaW5mby0+dF9jb3VudHMudF9udW1zY2FucysrOwkJCQlcCiAJfSB3aGls ZSAoMCkKICNkZWZpbmUgcGdzdGF0X2NvdW50X2hlYXBfZ2V0bmV4dChyZWwpCQkJCQkJCQlc CiAJZG8gewkJCQkJCQkJCQkJCQkJCVwKLQkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVs YXRpb24ocmVsKSkJCQkJCQlcCi0JCQkocmVsKS0+cGdzdGF0X2luZm8tPnRfY291bnRzLnRf dHVwbGVzX3JldHVybmVkKys7CQlcCisJCWlmIChwZ3N0YXRfc2hvdWxkX2NvdW50X3RhYmxl KHJlbCkpCQkJCQkJXAorCQkJKHJlbCktPnBnc3RhdHRhYl9pbmZvLT50X2NvdW50cy50X3R1 cGxlc19yZXR1cm5lZCsrOwkJXAogCX0gd2hpbGUgKDApCiAjZGVmaW5lIHBnc3RhdF9jb3Vu dF9oZWFwX2ZldGNoKHJlbCkJCQkJCQkJCVwKIAlkbyB7CQkJCQkJCQkJCQkJCQkJXAotCQlp ZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJCQkJCVwKLQkJCShyZWwp LT5wZ3N0YXRfaW5mby0+dF9jb3VudHMudF90dXBsZXNfZmV0Y2hlZCsrOwkJXAorCQlpZiAo cGdzdGF0X3Nob3VsZF9jb3VudF90YWJsZShyZWwpKQkJCQkJCVwKKwkJCShyZWwpLT5wZ3N0 YXR0YWJfaW5mby0+dF9jb3VudHMudF90dXBsZXNfZmV0Y2hlZCsrOwkJXAorCX0gd2hpbGUg KDApCisjZGVmaW5lIHBnc3RhdF9jb3VudF9pbmRleF9mZXRjaChyZWwpCQkJCQkJCQlcCisJ ZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfaW5kZXgo cmVsKSkJCQkJCQlcCisJCQkocmVsKS0+cGdzdGF0aW5kX2luZm8tPmlfY291bnRzLmlfdHVw bGVzX2ZldGNoZWQrKzsJCVwKIAl9IHdoaWxlICgwKQogI2RlZmluZSBwZ3N0YXRfY291bnRf aW5kZXhfc2NhbihyZWwpCQkJCQkJCQlcCiAJZG8gewkJCQkJCQkJCQkJCQkJCVwKLQkJaWYg KHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCi0JCQkocmVsKS0+ cGdzdGF0X2luZm8tPnRfY291bnRzLnRfbnVtc2NhbnMrKzsJCQkJXAorCQlpZiAocGdzdGF0 X3Nob3VsZF9jb3VudF9pbmRleChyZWwpKQkJCQkJCVwKKwkJCShyZWwpLT5wZ3N0YXRpbmRf aW5mby0+aV9jb3VudHMuaV9udW1zY2FucysrOwkJCVwKIAl9IHdoaWxlICgwKQogI2RlZmlu ZSBwZ3N0YXRfY291bnRfaW5kZXhfdHVwbGVzKHJlbCwgbikJCQkJCQkJXAogCWRvIHsJCQkJ CQkJCQkJCQkJCQlcCi0JCWlmIChwZ3N0YXRfc2hvdWxkX2NvdW50X3JlbGF0aW9uKHJlbCkp CQkJCQkJXAotCQkJKHJlbCktPnBnc3RhdF9pbmZvLT50X2NvdW50cy50X3R1cGxlc19yZXR1 cm5lZCArPSAobik7CVwKKwkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfaW5kZXgocmVsKSkJ CQkJCQlcCisJCQkocmVsKS0+cGdzdGF0aW5kX2luZm8tPmlfY291bnRzLmlfdHVwbGVzX3Jl dHVybmVkICs9IChuKTsJXAogCX0gd2hpbGUgKDApCi0jZGVmaW5lIHBnc3RhdF9jb3VudF9i dWZmZXJfcmVhZChyZWwpCQkJCQkJCQlcCisjZGVmaW5lIHBnc3RhdF9jb3VudF9oZWFwX2J1 ZmZlcl9yZWFkKHJlbCkJCQkJCQkJCVwKIAlkbyB7CQkJCQkJCQkJCQkJCQkJXAotCQlpZiAo cGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJCQkJCVwKLQkJCShyZWwpLT5w Z3N0YXRfaW5mby0+dF9jb3VudHMudF9ibG9ja3NfZmV0Y2hlZCsrOwkJXAorCQlpZiAocGdz dGF0X3Nob3VsZF9jb3VudF90YWJsZShyZWwpKQlcCisJCQkocmVsKS0+cGdzdGF0dGFiX2lu Zm8tPnRfY291bnRzLnRfYmxvY2tzX2ZldGNoZWQrKzsJCVwKIAl9IHdoaWxlICgwKQotI2Rl ZmluZSBwZ3N0YXRfY291bnRfYnVmZmVyX2hpdChyZWwpCQkJCQkJCQlcCisjZGVmaW5lIHBn c3RhdF9jb3VudF9pbmRleF9idWZmZXJfcmVhZChyZWwpCQkJCQkJCQlcCiAJZG8gewkJCQkJ CQkJCQkJCQkJCVwKLQkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkJ CQkJCQlcCi0JCQkocmVsKS0+cGdzdGF0X2luZm8tPnRfY291bnRzLnRfYmxvY2tzX2hpdCsr OwkJCVwKKwkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfaW5kZXgocmVsKSkJXAorCQkJKHJl bCktPnBnc3RhdGluZF9pbmZvLT5pX2NvdW50cy5pX2Jsb2Nrc19mZXRjaGVkKys7CQlcCisJ fSB3aGlsZSAoMCkKKyNkZWZpbmUgcGdzdGF0X2NvdW50X2hlYXBfYnVmZmVyX2hpdChyZWwp CQkJCQkJCQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9zaG91bGRf Y291bnRfdGFibGUocmVsKSkJXAorCQkJKHJlbCktPnBnc3RhdHRhYl9pbmZvLT50X2NvdW50 cy50X2Jsb2Nrc19oaXQrKzsgXAorCX0gd2hpbGUgKDApCisjZGVmaW5lIHBnc3RhdF9jb3Vu dF9pbmRleF9idWZmZXJfaGl0KHJlbCkJCQkJCQkJCVwKKwlkbyB7CQkJCQkJCQkJCQkJCQkJ XAorCQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9pbmRleChyZWwpKQlcCisJCQkocmVsKS0+ cGdzdGF0aW5kX2luZm8tPmlfY291bnRzLmlfYmxvY2tzX2hpdCsrOyBcCiAJfSB3aGlsZSAo MCkKLQogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfaW5zZXJ0KFJlbGF0aW9uIHJl bCwgUGdTdGF0X0NvdW50ZXIgbik7CiBleHRlcm4gdm9pZCBwZ3N0YXRfY291bnRfaGVhcF91 cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfY291 bnRfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsKTsKQEAgLTU3Myw2ICs2NDIsMTAgQEAgZXh0 ZXJuIFBnU3RhdF9TdGF0VGFiRW50cnkgKnBnc3RhdF9mZXRjaF9zdGF0X3RhYmVudHJ5KE9p ZCByZWxpZCk7CiBleHRlcm4gUGdTdGF0X1N0YXRUYWJFbnRyeSAqcGdzdGF0X2ZldGNoX3N0 YXRfdGFiZW50cnlfZXh0KGJvb2wgc2hhcmVkLAogCQkJCQkJCQkJCQkJCQkgICBPaWQgcmVs b2lkKTsKIGV4dGVybiBQZ1N0YXRfVGFibGVTdGF0dXMgKmZpbmRfdGFic3RhdF9lbnRyeShP aWQgcmVsX2lkKTsKK2V4dGVybiBQZ1N0YXRfSW5kZXhTdGF0dXMgKmZpbmRfaW5kc3RhdF9l bnRyeShPaWQgcmVsX2lkKTsKK2V4dGVybiBQZ1N0YXRfU3RhdEluZEVudHJ5ICpwZ3N0YXRf ZmV0Y2hfc3RhdF9pbmRlbnRyeShPaWQgcmVsaWQpOworZXh0ZXJuIFBnU3RhdF9TdGF0SW5k RW50cnkgKnBnc3RhdF9mZXRjaF9zdGF0X2luZGVudHJ5X2V4dChib29sIHNoYXJlZCwKKwkJ CQkJCQkJCQkJCQkJICAgT2lkIHJlbGlkKTsKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvcGdzdGF0X2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZ3N0 YXRfaW50ZXJuYWwuaAppbmRleCBjODY5NTMzYjI4Li5iNzQ2NGI1YTVjIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9wZ3N0YXRfaW50ZXJuYWwuaApAQCAtMzYwLDExICszNjAsMTcgQEAgdHlwZWRl ZiBzdHJ1Y3QgUGdTdGF0U2hhcmVkX0RhdGFiYXNlCiAJUGdTdGF0X1N0YXREQkVudHJ5IHN0 YXRzOwogfSBQZ1N0YXRTaGFyZWRfRGF0YWJhc2U7CiAKLXR5cGVkZWYgc3RydWN0IFBnU3Rh dFNoYXJlZF9SZWxhdGlvbgordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0U2hhcmVkX1RhYmxlCiB7 CiAJUGdTdGF0U2hhcmVkX0NvbW1vbiBoZWFkZXI7CiAJUGdTdGF0X1N0YXRUYWJFbnRyeSBz dGF0czsKLX0gUGdTdGF0U2hhcmVkX1JlbGF0aW9uOworfSBQZ1N0YXRTaGFyZWRfVGFibGU7 CisKK3R5cGVkZWYgc3RydWN0IFBnU3RhdFNoYXJlZF9JbmRleAoreworCVBnU3RhdFNoYXJl ZF9Db21tb24gaGVhZGVyOworCVBnU3RhdF9TdGF0SW5kRW50cnkgc3RhdHM7Cit9IFBnU3Rh dFNoYXJlZF9JbmRleDsKIAogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0U2hhcmVkX0Z1bmN0aW9u CiB7CkBAIC01NTksOCArNTY1LDEwIEBAIGV4dGVybiB2b2lkIEF0RU9TdWJYYWN0X1BnU3Rh dF9SZWxhdGlvbnMoUGdTdGF0X1N1YlhhY3RTdGF0dXMgKnhhY3Rfc3RhdGUsIGJvb2wKIGV4 dGVybiB2b2lkIEF0UHJlcGFyZV9QZ1N0YXRfUmVsYXRpb25zKFBnU3RhdF9TdWJYYWN0U3Rh dHVzICp4YWN0X3N0YXRlKTsKIGV4dGVybiB2b2lkIFBvc3RQcmVwYXJlX1BnU3RhdF9SZWxh dGlvbnMoUGdTdGF0X1N1YlhhY3RTdGF0dXMgKnhhY3Rfc3RhdGUpOwogCi1leHRlcm4gYm9v bCBwZ3N0YXRfcmVsYXRpb25fZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYs IGJvb2wgbm93YWl0KTsKLWV4dGVybiB2b2lkIHBnc3RhdF9yZWxhdGlvbl9kZWxldGVfcGVu ZGluZ19jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZik7CitleHRlcm4gYm9vbCBwZ3N0 YXRfdGFibGVfZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93 YWl0KTsKK2V4dGVybiBib29sIHBnc3RhdF9pbmRleF9mbHVzaF9jYihQZ1N0YXRfRW50cnlS ZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpOworZXh0ZXJuIHZvaWQgcGdzdGF0X3RhYmxl X2RlbGV0ZV9wZW5kaW5nX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmKTsKK2V4dGVy biB2b2lkIHBnc3RhdF9pbmRleF9kZWxldGVfcGVuZGluZ19jYihQZ1N0YXRfRW50cnlSZWYg KmVudHJ5X3JlZik7CiAKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3Jl bC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggZjM4M2EyZmNhOS4uNzk2NDIz ZjNlMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTI0OCw3ICsyNDgsMTAgQEAgdHlwZWRlZiBzdHJ1Y3Qg UmVsYXRpb25EYXRhCiAKIAlib29sCQlwZ3N0YXRfZW5hYmxlZDsgLyogc2hvdWxkIHJlbGF0 aW9uIHN0YXRzIGJlIGNvdW50ZWQgKi8KIAkvKiB1c2UgInN0cnVjdCIgaGVyZSB0byBhdm9p ZCBuZWVkaW5nIHRvIGluY2x1ZGUgcGdzdGF0Lmg6ICovCi0Jc3RydWN0IFBnU3RhdF9UYWJs ZVN0YXR1cyAqcGdzdGF0X2luZm87IC8qIHN0YXRpc3RpY3MgY29sbGVjdGlvbiBhcmVhICov CisJLyogdGFibGUncyBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gYXJlYSAqLworCXN0cnVjdCBQ Z1N0YXRfVGFibGVTdGF0dXMgKnBnc3RhdHRhYl9pbmZvOworCS8qIEluZGV4J3Mgc3RhdGlz dGljcyBjb2xsZWN0aW9uIGFyZWEgKi8KKwlzdHJ1Y3QgUGdTdGF0X0luZGV4U3RhdHVzICpw Z3N0YXRpbmRfaW5mbzsKIH0gUmVsYXRpb25EYXRhOwogCiAKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9zdGF0cy5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24v ZXhwZWN0ZWQvc3RhdHMub3V0CmluZGV4IDYxYjVhNzEwZWMuLjZmZjJjZmJkOTcgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9zdGF0cy5vdXQKKysrIGIvc3Jj L3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3N0YXRzLm91dApAQCAtMjE2Niw4ICsyMTY2LDgg QEAgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoCiAKIHN0ZXAgczFfdGFibGVfc3RhdHM6IAog ICAgIFNFTEVDVAotICAgICAgICBwZ19zdGF0X2dldF9udW1zY2Fucyh0c28ub2lkKSBBUyBz ZXFfc2NhbiwKLSAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3JldHVybmVkKHRzby5vaWQp IEFTIHNlcV90dXBfcmVhZCwKKyAgICAgICAgcGdfc3RhdF9nZXRfaGVhcF9udW1zY2Fucyh0 c28ub2lkKSBBUyBzZXFfc2NhbiwKKyAgICAgICAgcGdfc3RhdF9nZXRfaGVhcF90dXBsZXNf cmV0dXJuZWQodHNvLm9pZCkgQVMgc2VxX3R1cF9yZWFkLAogICAgICAgICBwZ19zdGF0X2dl dF90dXBsZXNfaW5zZXJ0ZWQodHNvLm9pZCkgQVMgbl90dXBfaW5zLAogICAgICAgICBwZ19z dGF0X2dldF90dXBsZXNfdXBkYXRlZCh0c28ub2lkKSBBUyBuX3R1cF91cGQsCiAgICAgICAg IHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxldGVkKHRzby5vaWQpIEFTIG5fdHVwX2RlbCwKQEAg LTIyMTAsOCArMjIxMCw4IEBAIHN0ZXAgczJfdGFibGVfdXBkYXRlX2sxOiBVUERBVEUgdGVz dF9zdGF0X3RhYiBTRVQgdmFsdWUgPSB2YWx1ZSArIDEgV0hFUkUga2V5ID0KIHN0ZXAgczFf dGFibGVfZHJvcDogRFJPUCBUQUJMRSB0ZXN0X3N0YXRfdGFiOwogc3RlcCBzMV90YWJsZV9z dGF0czogCiAgICAgU0VMRUNUCi0gICAgICAgIHBnX3N0YXRfZ2V0X251bXNjYW5zKHRzby5v aWQpIEFTIHNlcV9zY2FuLAotICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQo dHNvLm9pZCkgQVMgc2VxX3R1cF9yZWFkLAorICAgICAgICBwZ19zdGF0X2dldF9oZWFwX251 bXNjYW5zKHRzby5vaWQpIEFTIHNlcV9zY2FuLAorICAgICAgICBwZ19zdGF0X2dldF9oZWFw X3R1cGxlc19yZXR1cm5lZCh0c28ub2lkKSBBUyBzZXFfdHVwX3JlYWQsCiAgICAgICAgIHBn X3N0YXRfZ2V0X3R1cGxlc19pbnNlcnRlZCh0c28ub2lkKSBBUyBuX3R1cF9pbnMsCiAgICAg ICAgIHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHRzby5vaWQpIEFTIG5fdHVwX3VwZCwK ICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2RlbGV0ZWQodHNvLm9pZCkgQVMgbl90dXBf ZGVsLApAQCAtMjIzNiw4ICsyMjM2LDggQEAgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoCiBz dGVwIHMxX3RyYWNrX2NvdW50c19vZmY6IFNFVCB0cmFja19jb3VudHMgPSBvZmY7CiBzdGVw IHMxX3RhYmxlX3N0YXRzOiAKICAgICBTRUxFQ1QKLSAgICAgICAgcGdfc3RhdF9nZXRfbnVt c2NhbnModHNvLm9pZCkgQVMgc2VxX3NjYW4sCi0gICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxl c19yZXR1cm5lZCh0c28ub2lkKSBBUyBzZXFfdHVwX3JlYWQsCisgICAgICAgIHBnX3N0YXRf Z2V0X2hlYXBfbnVtc2NhbnModHNvLm9pZCkgQVMgc2VxX3NjYW4sCisgICAgICAgIHBnX3N0 YXRfZ2V0X2hlYXBfdHVwbGVzX3JldHVybmVkKHRzby5vaWQpIEFTIHNlcV90dXBfcmVhZCwK ICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2luc2VydGVkKHRzby5vaWQpIEFTIG5fdHVw X2lucywKICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQodHNvLm9pZCkgQVMg bl90dXBfdXBkLAogICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfZGVsZXRlZCh0c28ub2lk KSBBUyBuX3R1cF9kZWwsCkBAIC0yMjc1LDggKzIyNzUsOCBAQCBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2gKIAogc3RlcCBzMV90YWJsZV9zdGF0czogCiAgICAgU0VMRUNUCi0gICAgICAg IHBnX3N0YXRfZ2V0X251bXNjYW5zKHRzby5vaWQpIEFTIHNlcV9zY2FuLAotICAgICAgICBw Z19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQodHNvLm9pZCkgQVMgc2VxX3R1cF9yZWFkLAor ICAgICAgICBwZ19zdGF0X2dldF9oZWFwX251bXNjYW5zKHRzby5vaWQpIEFTIHNlcV9zY2Fu LAorICAgICAgICBwZ19zdGF0X2dldF9oZWFwX3R1cGxlc19yZXR1cm5lZCh0c28ub2lkKSBB UyBzZXFfdHVwX3JlYWQsCiAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19pbnNlcnRlZCh0 c28ub2lkKSBBUyBuX3R1cF9pbnMsCiAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc191cGRh dGVkKHRzby5vaWQpIEFTIG5fdHVwX3VwZCwKICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVz X2RlbGV0ZWQodHNvLm9pZCkgQVMgbl90dXBfZGVsLApAQCAtMjMxNCw4ICsyMzE0LDggQEAg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoCiBzdGVwIHMxX3RyYWNrX2NvdW50c19vZmY6IFNF VCB0cmFja19jb3VudHMgPSBvZmY7CiBzdGVwIHMxX3RhYmxlX3N0YXRzOiAKICAgICBTRUxF Q1QKLSAgICAgICAgcGdfc3RhdF9nZXRfbnVtc2NhbnModHNvLm9pZCkgQVMgc2VxX3NjYW4s Ci0gICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19yZXR1cm5lZCh0c28ub2lkKSBBUyBzZXFf dHVwX3JlYWQsCisgICAgICAgIHBnX3N0YXRfZ2V0X2hlYXBfbnVtc2NhbnModHNvLm9pZCkg QVMgc2VxX3NjYW4sCisgICAgICAgIHBnX3N0YXRfZ2V0X2hlYXBfdHVwbGVzX3JldHVybmVk KHRzby5vaWQpIEFTIHNlcV90dXBfcmVhZCwKICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVz X2luc2VydGVkKHRzby5vaWQpIEFTIG5fdHVwX2lucywKICAgICAgICAgcGdfc3RhdF9nZXRf dHVwbGVzX3VwZGF0ZWQodHNvLm9pZCkgQVMgbl90dXBfdXBkLAogICAgICAgICBwZ19zdGF0 X2dldF90dXBsZXNfZGVsZXRlZCh0c28ub2lkKSBBUyBuX3R1cF9kZWwsCkBAIC0yMzY5LDgg KzIzNjksOCBAQCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2gKIAogc3RlcCBzMV90YWJsZV9z dGF0czogCiAgICAgU0VMRUNUCi0gICAgICAgIHBnX3N0YXRfZ2V0X251bXNjYW5zKHRzby5v aWQpIEFTIHNlcV9zY2FuLAotICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQo dHNvLm9pZCkgQVMgc2VxX3R1cF9yZWFkLAorICAgICAgICBwZ19zdGF0X2dldF9oZWFwX251 bXNjYW5zKHRzby5vaWQpIEFTIHNlcV9zY2FuLAorICAgICAgICBwZ19zdGF0X2dldF9oZWFw X3R1cGxlc19yZXR1cm5lZCh0c28ub2lkKSBBUyBzZXFfdHVwX3JlYWQsCiAgICAgICAgIHBn X3N0YXRfZ2V0X3R1cGxlc19pbnNlcnRlZCh0c28ub2lkKSBBUyBuX3R1cF9pbnMsCiAgICAg ICAgIHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHRzby5vaWQpIEFTIG5fdHVwX3VwZCwK ICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2RlbGV0ZWQodHNvLm9pZCkgQVMgbl90dXBf ZGVsLApAQCAtMjQwMSw4ICsyNDAxLDggQEAgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoCiAK IHN0ZXAgczFfdGFibGVfc3RhdHM6IAogICAgIFNFTEVDVAotICAgICAgICBwZ19zdGF0X2dl dF9udW1zY2Fucyh0c28ub2lkKSBBUyBzZXFfc2NhbiwKLSAgICAgICAgcGdfc3RhdF9nZXRf dHVwbGVzX3JldHVybmVkKHRzby5vaWQpIEFTIHNlcV90dXBfcmVhZCwKKyAgICAgICAgcGdf c3RhdF9nZXRfaGVhcF9udW1zY2Fucyh0c28ub2lkKSBBUyBzZXFfc2NhbiwKKyAgICAgICAg cGdfc3RhdF9nZXRfaGVhcF90dXBsZXNfcmV0dXJuZWQodHNvLm9pZCkgQVMgc2VxX3R1cF9y ZWFkLAogICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfaW5zZXJ0ZWQodHNvLm9pZCkgQVMg bl90dXBfaW5zLAogICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZCh0c28ub2lk KSBBUyBuX3R1cF91cGQsCiAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxldGVkKHRz by5vaWQpIEFTIG5fdHVwX2RlbCwKQEAgLTI0NjMsOCArMjQ2Myw4IEBAIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaAogCiBzdGVwIHMxX3RhYmxlX3N0YXRzOiAKICAgICBTRUxFQ1QKLSAg ICAgICAgcGdfc3RhdF9nZXRfbnVtc2NhbnModHNvLm9pZCkgQVMgc2VxX3NjYW4sCi0gICAg ICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19yZXR1cm5lZCh0c28ub2lkKSBBUyBzZXFfdHVwX3Jl YWQsCisgICAgICAgIHBnX3N0YXRfZ2V0X2hlYXBfbnVtc2NhbnModHNvLm9pZCkgQVMgc2Vx X3NjYW4sCisgICAgICAgIHBnX3N0YXRfZ2V0X2hlYXBfdHVwbGVzX3JldHVybmVkKHRzby5v aWQpIEFTIHNlcV90dXBfcmVhZCwKICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2luc2Vy dGVkKHRzby5vaWQpIEFTIG5fdHVwX2lucywKICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVz X3VwZGF0ZWQodHNvLm9pZCkgQVMgbl90dXBfdXBkLAogICAgICAgICBwZ19zdGF0X2dldF90 dXBsZXNfZGVsZXRlZCh0c28ub2lkKSBBUyBuX3R1cF9kZWwsCkBAIC0yNDk1LDggKzI0OTUs OCBAQCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2gKIAogc3RlcCBzMV90YWJsZV9zdGF0czog CiAgICAgU0VMRUNUCi0gICAgICAgIHBnX3N0YXRfZ2V0X251bXNjYW5zKHRzby5vaWQpIEFT IHNlcV9zY2FuLAotICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQodHNvLm9p ZCkgQVMgc2VxX3R1cF9yZWFkLAorICAgICAgICBwZ19zdGF0X2dldF9oZWFwX251bXNjYW5z KHRzby5vaWQpIEFTIHNlcV9zY2FuLAorICAgICAgICBwZ19zdGF0X2dldF9oZWFwX3R1cGxl c19yZXR1cm5lZCh0c28ub2lkKSBBUyBzZXFfdHVwX3JlYWQsCiAgICAgICAgIHBnX3N0YXRf Z2V0X3R1cGxlc19pbnNlcnRlZCh0c28ub2lkKSBBUyBuX3R1cF9pbnMsCiAgICAgICAgIHBn X3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHRzby5vaWQpIEFTIG5fdHVwX3VwZCwKICAgICAg ICAgcGdfc3RhdF9nZXRfdHVwbGVzX2RlbGV0ZWQodHNvLm9pZCkgQVMgbl90dXBfZGVsLApA QCAtMjU1OCw4ICsyNTU4LDggQEAgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoCiAKIHN0ZXAg czFfdGFibGVfc3RhdHM6IAogICAgIFNFTEVDVAotICAgICAgICBwZ19zdGF0X2dldF9udW1z Y2Fucyh0c28ub2lkKSBBUyBzZXFfc2NhbiwKLSAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVz X3JldHVybmVkKHRzby5vaWQpIEFTIHNlcV90dXBfcmVhZCwKKyAgICAgICAgcGdfc3RhdF9n ZXRfaGVhcF9udW1zY2Fucyh0c28ub2lkKSBBUyBzZXFfc2NhbiwKKyAgICAgICAgcGdfc3Rh dF9nZXRfaGVhcF90dXBsZXNfcmV0dXJuZWQodHNvLm9pZCkgQVMgc2VxX3R1cF9yZWFkLAog ICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfaW5zZXJ0ZWQodHNvLm9pZCkgQVMgbl90dXBf aW5zLAogICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZCh0c28ub2lkKSBBUyBu X3R1cF91cGQsCiAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxldGVkKHRzby5vaWQp IEFTIG5fdHVwX2RlbCwKQEAgLTI2MjcsOCArMjYyNyw4IEBAIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaAogCiBzdGVwIHMxX3RhYmxlX3N0YXRzOiAKICAgICBTRUxFQ1QKLSAgICAgICAg cGdfc3RhdF9nZXRfbnVtc2NhbnModHNvLm9pZCkgQVMgc2VxX3NjYW4sCi0gICAgICAgIHBn X3N0YXRfZ2V0X3R1cGxlc19yZXR1cm5lZCh0c28ub2lkKSBBUyBzZXFfdHVwX3JlYWQsCisg ICAgICAgIHBnX3N0YXRfZ2V0X2hlYXBfbnVtc2NhbnModHNvLm9pZCkgQVMgc2VxX3NjYW4s CisgICAgICAgIHBnX3N0YXRfZ2V0X2hlYXBfdHVwbGVzX3JldHVybmVkKHRzby5vaWQpIEFT IHNlcV90dXBfcmVhZCwKICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2luc2VydGVkKHRz by5vaWQpIEFTIG5fdHVwX2lucywKICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0 ZWQodHNvLm9pZCkgQVMgbl90dXBfdXBkLAogICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNf ZGVsZXRlZCh0c28ub2lkKSBBUyBuX3R1cF9kZWwsCkBAIC0yNjg4LDggKzI2ODgsOCBAQCBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2gKIAogc3RlcCBzMV90YWJsZV9zdGF0czogCiAgICAg U0VMRUNUCi0gICAgICAgIHBnX3N0YXRfZ2V0X251bXNjYW5zKHRzby5vaWQpIEFTIHNlcV9z Y2FuLAotICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQodHNvLm9pZCkgQVMg c2VxX3R1cF9yZWFkLAorICAgICAgICBwZ19zdGF0X2dldF9oZWFwX251bXNjYW5zKHRzby5v aWQpIEFTIHNlcV9zY2FuLAorICAgICAgICBwZ19zdGF0X2dldF9oZWFwX3R1cGxlc19yZXR1 cm5lZCh0c28ub2lkKSBBUyBzZXFfdHVwX3JlYWQsCiAgICAgICAgIHBnX3N0YXRfZ2V0X3R1 cGxlc19pbnNlcnRlZCh0c28ub2lkKSBBUyBuX3R1cF9pbnMsCiAgICAgICAgIHBnX3N0YXRf Z2V0X3R1cGxlc191cGRhdGVkKHRzby5vaWQpIEFTIG5fdHVwX3VwZCwKICAgICAgICAgcGdf c3RhdF9nZXRfdHVwbGVzX2RlbGV0ZWQodHNvLm9pZCkgQVMgbl90dXBfZGVsLApAQCAtMjc1 NSw4ICsyNzU1LDggQEAgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoCiAKIHN0ZXAgczFfdGFi bGVfc3RhdHM6IAogICAgIFNFTEVDVAotICAgICAgICBwZ19zdGF0X2dldF9udW1zY2Fucyh0 c28ub2lkKSBBUyBzZXFfc2NhbiwKLSAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3JldHVy bmVkKHRzby5vaWQpIEFTIHNlcV90dXBfcmVhZCwKKyAgICAgICAgcGdfc3RhdF9nZXRfaGVh cF9udW1zY2Fucyh0c28ub2lkKSBBUyBzZXFfc2NhbiwKKyAgICAgICAgcGdfc3RhdF9nZXRf aGVhcF90dXBsZXNfcmV0dXJuZWQodHNvLm9pZCkgQVMgc2VxX3R1cF9yZWFkLAogICAgICAg ICBwZ19zdGF0X2dldF90dXBsZXNfaW5zZXJ0ZWQodHNvLm9pZCkgQVMgbl90dXBfaW5zLAog ICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZCh0c28ub2lkKSBBUyBuX3R1cF91 cGQsCiAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxldGVkKHRzby5vaWQpIEFTIG5f dHVwX2RlbCwKQEAgLTI3OTUsOCArMjc5NSw4IEBAIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aAogCiBzdGVwIHMxX3RhYmxlX3N0YXRzOiAKICAgICBTRUxFQ1QKLSAgICAgICAgcGdfc3Rh dF9nZXRfbnVtc2NhbnModHNvLm9pZCkgQVMgc2VxX3NjYW4sCi0gICAgICAgIHBnX3N0YXRf Z2V0X3R1cGxlc19yZXR1cm5lZCh0c28ub2lkKSBBUyBzZXFfdHVwX3JlYWQsCisgICAgICAg IHBnX3N0YXRfZ2V0X2hlYXBfbnVtc2NhbnModHNvLm9pZCkgQVMgc2VxX3NjYW4sCisgICAg ICAgIHBnX3N0YXRfZ2V0X2hlYXBfdHVwbGVzX3JldHVybmVkKHRzby5vaWQpIEFTIHNlcV90 dXBfcmVhZCwKICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2luc2VydGVkKHRzby5vaWQp IEFTIG5fdHVwX2lucywKICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQodHNv Lm9pZCkgQVMgbl90dXBfdXBkLAogICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfZGVsZXRl ZCh0c28ub2lkKSBBUyBuX3R1cF9kZWwsCkBAIC0yODQxLDggKzI4NDEsOCBAQCBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2gKIAogc3RlcCBzMV90YWJsZV9zdGF0czogCiAgICAgU0VMRUNU Ci0gICAgICAgIHBnX3N0YXRfZ2V0X251bXNjYW5zKHRzby5vaWQpIEFTIHNlcV9zY2FuLAot ICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQodHNvLm9pZCkgQVMgc2VxX3R1 cF9yZWFkLAorICAgICAgICBwZ19zdGF0X2dldF9oZWFwX251bXNjYW5zKHRzby5vaWQpIEFT IHNlcV9zY2FuLAorICAgICAgICBwZ19zdGF0X2dldF9oZWFwX3R1cGxlc19yZXR1cm5lZCh0 c28ub2lkKSBBUyBzZXFfdHVwX3JlYWQsCiAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19p bnNlcnRlZCh0c28ub2lkKSBBUyBuX3R1cF9pbnMsCiAgICAgICAgIHBnX3N0YXRfZ2V0X3R1 cGxlc191cGRhdGVkKHRzby5vaWQpIEFTIG5fdHVwX3VwZCwKICAgICAgICAgcGdfc3RhdF9n ZXRfdHVwbGVzX2RlbGV0ZWQodHNvLm9pZCkgQVMgbl90dXBfZGVsLApAQCAtMjg4MSw4ICsy ODgxLDggQEAgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoCiAKIHN0ZXAgczFfdGFibGVfc3Rh dHM6IAogICAgIFNFTEVDVAotICAgICAgICBwZ19zdGF0X2dldF9udW1zY2Fucyh0c28ub2lk KSBBUyBzZXFfc2NhbiwKLSAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3JldHVybmVkKHRz by5vaWQpIEFTIHNlcV90dXBfcmVhZCwKKyAgICAgICAgcGdfc3RhdF9nZXRfaGVhcF9udW1z Y2Fucyh0c28ub2lkKSBBUyBzZXFfc2NhbiwKKyAgICAgICAgcGdfc3RhdF9nZXRfaGVhcF90 dXBsZXNfcmV0dXJuZWQodHNvLm9pZCkgQVMgc2VxX3R1cF9yZWFkLAogICAgICAgICBwZ19z dGF0X2dldF90dXBsZXNfaW5zZXJ0ZWQodHNvLm9pZCkgQVMgbl90dXBfaW5zLAogICAgICAg ICBwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZCh0c28ub2lkKSBBUyBuX3R1cF91cGQsCiAg ICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxldGVkKHRzby5vaWQpIEFTIG5fdHVwX2Rl bCwKQEAgLTI5MjcsOCArMjkyNyw4IEBAIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaAogCiBz dGVwIHMxX3RhYmxlX3N0YXRzOiAKICAgICBTRUxFQ1QKLSAgICAgICAgcGdfc3RhdF9nZXRf bnVtc2NhbnModHNvLm9pZCkgQVMgc2VxX3NjYW4sCi0gICAgICAgIHBnX3N0YXRfZ2V0X3R1 cGxlc19yZXR1cm5lZCh0c28ub2lkKSBBUyBzZXFfdHVwX3JlYWQsCisgICAgICAgIHBnX3N0 YXRfZ2V0X2hlYXBfbnVtc2NhbnModHNvLm9pZCkgQVMgc2VxX3NjYW4sCisgICAgICAgIHBn X3N0YXRfZ2V0X2hlYXBfdHVwbGVzX3JldHVybmVkKHRzby5vaWQpIEFTIHNlcV90dXBfcmVh ZCwKICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2luc2VydGVkKHRzby5vaWQpIEFTIG5f dHVwX2lucywKICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQodHNvLm9pZCkg QVMgbl90dXBfdXBkLAogICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfZGVsZXRlZCh0c28u b2lkKSBBUyBuX3R1cF9kZWwsCkBAIC0yOTY4LDggKzI5NjgsOCBAQCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2gKIAogc3RlcCBzMV90YWJsZV9zdGF0czogCiAgICAgU0VMRUNUCi0gICAg ICAgIHBnX3N0YXRfZ2V0X251bXNjYW5zKHRzby5vaWQpIEFTIHNlcV9zY2FuLAotICAgICAg ICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQodHNvLm9pZCkgQVMgc2VxX3R1cF9yZWFk LAorICAgICAgICBwZ19zdGF0X2dldF9oZWFwX251bXNjYW5zKHRzby5vaWQpIEFTIHNlcV9z Y2FuLAorICAgICAgICBwZ19zdGF0X2dldF9oZWFwX3R1cGxlc19yZXR1cm5lZCh0c28ub2lk KSBBUyBzZXFfdHVwX3JlYWQsCiAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19pbnNlcnRl ZCh0c28ub2lkKSBBUyBuX3R1cF9pbnMsCiAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc191 cGRhdGVkKHRzby5vaWQpIEFTIG5fdHVwX3VwZCwKICAgICAgICAgcGdfc3RhdF9nZXRfdHVw bGVzX2RlbGV0ZWQodHNvLm9pZCkgQVMgbl90dXBfZGVsLApAQCAtMzAxNSw4ICszMDE1LDgg QEAgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoCiAKIHN0ZXAgczFfdGFibGVfc3RhdHM6IAog ICAgIFNFTEVDVAotICAgICAgICBwZ19zdGF0X2dldF9udW1zY2Fucyh0c28ub2lkKSBBUyBz ZXFfc2NhbiwKLSAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3JldHVybmVkKHRzby5vaWQp IEFTIHNlcV90dXBfcmVhZCwKKyAgICAgICAgcGdfc3RhdF9nZXRfaGVhcF9udW1zY2Fucyh0 c28ub2lkKSBBUyBzZXFfc2NhbiwKKyAgICAgICAgcGdfc3RhdF9nZXRfaGVhcF90dXBsZXNf cmV0dXJuZWQodHNvLm9pZCkgQVMgc2VxX3R1cF9yZWFkLAogICAgICAgICBwZ19zdGF0X2dl dF90dXBsZXNfaW5zZXJ0ZWQodHNvLm9pZCkgQVMgbl90dXBfaW5zLAogICAgICAgICBwZ19z dGF0X2dldF90dXBsZXNfdXBkYXRlZCh0c28ub2lkKSBBUyBuX3R1cF91cGQsCiAgICAgICAg IHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxldGVkKHRzby5vaWQpIEFTIG5fdHVwX2RlbCwKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9zdGF0cy5zcGVjIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL3N0YXRzLnNwZWMKaW5kZXggNWI5MjJkNzg4Yy4uMGNhMjUz OTNlNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3N0YXRzLnNwZWMK KysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3N0YXRzLnNwZWMKQEAgLTkzLDggKzkz LDggQEAgc3RlcCBzMV90YWJsZV9kcm9wIHsgRFJPUCBUQUJMRSB0ZXN0X3N0YXRfdGFiOyB9 CiAKIHN0ZXAgczFfdGFibGVfc3RhdHMgewogICAgIFNFTEVDVAotICAgICAgICBwZ19zdGF0 X2dldF9udW1zY2Fucyh0c28ub2lkKSBBUyBzZXFfc2NhbiwKLSAgICAgICAgcGdfc3RhdF9n ZXRfdHVwbGVzX3JldHVybmVkKHRzby5vaWQpIEFTIHNlcV90dXBfcmVhZCwKKyAgICAgICAg cGdfc3RhdF9nZXRfaGVhcF9udW1zY2Fucyh0c28ub2lkKSBBUyBzZXFfc2NhbiwKKyAgICAg ICAgcGdfc3RhdF9nZXRfaGVhcF90dXBsZXNfcmV0dXJuZWQodHNvLm9pZCkgQVMgc2VxX3R1 cF9yZWFkLAogICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfaW5zZXJ0ZWQodHNvLm9pZCkg QVMgbl90dXBfaW5zLAogICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZCh0c28u b2lkKSBBUyBuX3R1cF91cGQsCiAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxldGVk KHRzby5vaWQpIEFTIG5fdHVwX2RlbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDI5X3N0YXRzX3Jlc3RhcnQucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAyOV9zdGF0 c19yZXN0YXJ0LnBsCmluZGV4IDFiZjdiNTY4Y2MuLmMyNTYzNGQzM2YgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDI5X3N0YXRzX3Jlc3RhcnQucGwKKysrIGIvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wMjlfc3RhdHNfcmVzdGFydC5wbApAQCAtNDMsOCArNDMsOCBAQCBt eSAkc2VjdCA9ICJpbml0aWFsIjsKIGlzKGhhdmVfc3RhdHMoJ2RhdGFiYXNlJywgJGRib2lk LCAwKSwgJ3QnLCAiJHNlY3Q6IGRiIHN0YXRzIGRvIGV4aXN0Iik7CiBpcyhoYXZlX3N0YXRz KCdmdW5jdGlvbicsICRkYm9pZCwgJGZ1bmNvaWQpLAogCSd0JywgIiRzZWN0OiBmdW5jdGlv biBzdGF0cyBkbyBleGlzdCIpOwotaXMoaGF2ZV9zdGF0cygncmVsYXRpb24nLCAkZGJvaWQs ICR0YWJsZW9pZCksCi0JJ3QnLCAiJHNlY3Q6IHJlbGF0aW9uIHN0YXRzIGRvIGV4aXN0Iik7 CitpcyhoYXZlX3N0YXRzKCd0YWJsZScsICRkYm9pZCwgJHRhYmxlb2lkKSwKKwkndCcsICIk c2VjdDogdGFibGUgc3RhdHMgZG8gZXhpc3QiKTsKIAogIyByZWd1bGFyIHNodXRkb3duCiAk bm9kZS0+c3RvcCgpOwpAQCAtNjcsOCArNjcsOCBAQCAkc2VjdCA9ICJjb3B5IjsKIGlzKGhh dmVfc3RhdHMoJ2RhdGFiYXNlJywgJGRib2lkLCAwKSwgJ3QnLCAiJHNlY3Q6IGRiIHN0YXRz IGRvIGV4aXN0Iik7CiBpcyhoYXZlX3N0YXRzKCdmdW5jdGlvbicsICRkYm9pZCwgJGZ1bmNv aWQpLAogCSd0JywgIiRzZWN0OiBmdW5jdGlvbiBzdGF0cyBkbyBleGlzdCIpOwotaXMoaGF2 ZV9zdGF0cygncmVsYXRpb24nLCAkZGJvaWQsICR0YWJsZW9pZCksCi0JJ3QnLCAiJHNlY3Q6 IHJlbGF0aW9uIHN0YXRzIGRvIGV4aXN0Iik7CitpcyhoYXZlX3N0YXRzKCd0YWJsZScsICRk Ym9pZCwgJHRhYmxlb2lkKSwKKwkndCcsICIkc2VjdDogdGFibGUgc3RhdHMgZG8gZXhpc3Qi KTsKIAogJG5vZGUtPnN0b3AoJ2ltbWVkaWF0ZScpOwogCkBAIC04NCw4ICs4NCw4IEBAICRz ZWN0ID0gInBvc3QgaW1tZWRpYXRlIjsKIGlzKGhhdmVfc3RhdHMoJ2RhdGFiYXNlJywgJGRi b2lkLCAwKSwgJ2YnLCAiJHNlY3Q6IGRiIHN0YXRzIGRvIG5vdCBleGlzdCIpOwogaXMoaGF2 ZV9zdGF0cygnZnVuY3Rpb24nLCAkZGJvaWQsICRmdW5jb2lkKSwKIAknZicsICIkc2VjdDog ZnVuY3Rpb24gc3RhdHMgZG8gZXhpc3QiKTsKLWlzKGhhdmVfc3RhdHMoJ3JlbGF0aW9uJywg JGRib2lkLCAkdGFibGVvaWQpLAotCSdmJywgIiRzZWN0OiByZWxhdGlvbiBzdGF0cyBkbyBu b3QgZXhpc3QiKTsKK2lzKGhhdmVfc3RhdHMoJ3RhYmxlJywgJGRib2lkLCAkdGFibGVvaWQp LAorCSdmJywgIiRzZWN0OiB0YWJsZSBzdGF0cyBkbyBub3QgZXhpc3QiKTsKIAogIyBnZXQg cmlkIG9mIGJhY2t1cCBzdGF0c2ZpbGUKIHVubGluayAkc3RhdHNmaWxlIG9yIGRpZSAiY2Fu bm90IHVubGluayAkc3RhdHNmaWxlICQhIjsKQEAgLTk4LDggKzk4LDggQEAgJHNlY3QgPSAi cG9zdCBpbW1lZGlhdGUsIG5ldyI7CiBpcyhoYXZlX3N0YXRzKCdkYXRhYmFzZScsICRkYm9p ZCwgMCksICd0JywgIiRzZWN0OiBkYiBzdGF0cyBkbyBleGlzdCIpOwogaXMoaGF2ZV9zdGF0 cygnZnVuY3Rpb24nLCAkZGJvaWQsICRmdW5jb2lkKSwKIAkndCcsICIkc2VjdDogZnVuY3Rp b24gc3RhdHMgZG8gZXhpc3QiKTsKLWlzKGhhdmVfc3RhdHMoJ3JlbGF0aW9uJywgJGRib2lk LCAkdGFibGVvaWQpLAotCSd0JywgIiRzZWN0OiByZWxhdGlvbiBzdGF0cyBkbyBleGlzdCIp OworaXMoaGF2ZV9zdGF0cygndGFibGUnLCAkZGJvaWQsICR0YWJsZW9pZCksCisJJ3QnLCAi JHNlY3Q6IHRhYmxlIHN0YXRzIGRvIGV4aXN0Iik7CiAKICMgcmVndWxhciBzaHV0ZG93bgog JG5vZGUtPnN0b3AoKTsKQEAgLTExNyw4ICsxMTcsNyBAQCAkc2VjdCA9ICJpbnZhbGlkX292 ZXJ3cml0ZSI7CiBpcyhoYXZlX3N0YXRzKCdkYXRhYmFzZScsICRkYm9pZCwgMCksICdmJywg IiRzZWN0OiBkYiBzdGF0cyBkbyBub3QgZXhpc3QiKTsKIGlzKGhhdmVfc3RhdHMoJ2Z1bmN0 aW9uJywgJGRib2lkLCAkZnVuY29pZCksCiAJJ2YnLCAiJHNlY3Q6IGZ1bmN0aW9uIHN0YXRz IGRvIG5vdCBleGlzdCIpOwotaXMoaGF2ZV9zdGF0cygncmVsYXRpb24nLCAkZGJvaWQsICR0 YWJsZW9pZCksCi0JJ2YnLCAiJHNlY3Q6IHJlbGF0aW9uIHN0YXRzIGRvIG5vdCBleGlzdCIp OworaXMoaGF2ZV9zdGF0cygndGFibGUnLCAkZGJvaWQsICR0YWJsZW9pZCksICdmJywgIiRz ZWN0OiB0YWJsZSBkbyBub3QgZXhpc3QiKTsKIAogCiAjIyBjaGVjayBpbnZhbGlkIHN0YXRz IGZpbGUgc3RhcnRpbmcgd2l0aCB2YWxpZCBjb250ZW50cywgYnV0IGZvbGxvd2VkIGJ5CkBA IC0xMzMsOCArMTMyLDggQEAgJHNlY3QgPSAiaW52YWxpZF9hcHBlbmQiOwogaXMoaGF2ZV9z dGF0cygnZGF0YWJhc2UnLCAkZGJvaWQsIDApLCAnZicsICIkc2VjdDogZGIgc3RhdHMgZG8g bm90IGV4aXN0Iik7CiBpcyhoYXZlX3N0YXRzKCdmdW5jdGlvbicsICRkYm9pZCwgJGZ1bmNv aWQpLAogCSdmJywgIiRzZWN0OiBmdW5jdGlvbiBzdGF0cyBkbyBub3QgZXhpc3QiKTsKLWlz KGhhdmVfc3RhdHMoJ3JlbGF0aW9uJywgJGRib2lkLCAkdGFibGVvaWQpLAotCSdmJywgIiRz ZWN0OiByZWxhdGlvbiBzdGF0cyBkbyBub3QgZXhpc3QiKTsKK2lzKGhhdmVfc3RhdHMoJ3Rh YmxlJywgJGRib2lkLCAkdGFibGVvaWQpLAorCSdmJywgIiRzZWN0OiB0YWJsZSBzdGF0cyBk byBub3QgZXhpc3QiKTsKIAogCiAjIyBjaGVja3MgcmVsYXRlZCB0byBzdGF0cyBwZXJzaXN0 ZW5jeSBhcm91bmQgcmVzdGFydHMgYW5kIHJlc2V0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wMzBfc3RhdHNfY2xlYW51cF9yZXBsaWNhLnBsIGIvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wMzBfc3RhdHNfY2xlYW51cF9yZXBsaWNhLnBsCmluZGV4IGNjOTJkZGJiNTIu LjFlNzhiMTNjZjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDMwX3N0YXRz X2NsZWFudXBfcmVwbGljYS5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzMF9zdGF0 c19jbGVhbnVwX3JlcGxpY2EucGwKQEAgLTE4NSw3ICsxODUsNyBAQCBzdWIgdGVzdF9zdGFu ZGJ5X2Z1bmNfdGFiX3N0YXRzX3N0YXR1cwogCW15ICVzdGF0czsKIAogCSRzdGF0c3tyZWx9 ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCRjb25uZWN0X2RiLAotCQkiU0VMRUNUIHBn X3N0YXRfaGF2ZV9zdGF0cygncmVsYXRpb24nLCAkZGJvaWQsICR0YWJsZW9pZCkiKTsKKwkJ IlNFTEVDVCBwZ19zdGF0X2hhdmVfc3RhdHMoJ3RhYmxlJywgJGRib2lkLCAkdGFibGVvaWQp Iik7CiAJJHN0YXRze2Z1bmN9ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCRjb25uZWN0 X2RiLAogCQkiU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygnZnVuY3Rpb24nLCAkZGJvaWQs ICRmdW5jb2lkKSIpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4 IDYyNGQwZTVhYWUuLjUzMTE2NGUwMzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0CkBAIC0xNzY0LDEwICsxNzY0LDEwIEBAIHBnX3N0YXRfYWxsX2luZGV4ZXN8IFNF TEVDVCBjLm9pZCBBUyByZWxpZCwKICAgICBuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAg ICBjLnJlbG5hbWUsCiAgICAgaS5yZWxuYW1lIEFTIGluZGV4cmVsbmFtZSwKLSAgICBwZ19z dGF0X2dldF9udW1zY2FucyhpLm9pZCkgQVMgaWR4X3NjYW4sCi0gICAgcGdfc3RhdF9nZXRf bGFzdHNjYW4oaS5vaWQpIEFTIGxhc3RfaWR4X3NjYW4sCi0gICAgcGdfc3RhdF9nZXRfdHVw bGVzX3JldHVybmVkKGkub2lkKSBBUyBpZHhfdHVwX3JlYWQsCi0gICAgcGdfc3RhdF9nZXRf dHVwbGVzX2ZldGNoZWQoaS5vaWQpIEFTIGlkeF90dXBfZmV0Y2gKKyAgICBwZ19zdGF0X2dl dF9pbmRleF9udW1zY2FucyhpLm9pZCkgQVMgaWR4X3NjYW4sCisgICAgcGdfc3RhdF9nZXRf aW5kZXhfbGFzdHNjYW4oaS5vaWQpIEFTIGxhc3RfaWR4X3NjYW4sCisgICAgcGdfc3RhdF9n ZXRfaW5kZXhfdHVwbGVzX3JldHVybmVkKGkub2lkKSBBUyBpZHhfdHVwX3JlYWQsCisgICAg cGdfc3RhdF9nZXRfaW5kZXhfdHVwbGVzX2ZldGNoZWQoaS5vaWQpIEFTIGlkeF90dXBfZmV0 Y2gKICAgIEZST00gKCgocGdfY2xhc3MgYwogICAgICBKT0lOIHBnX2luZGV4IHggT04gKChj Lm9pZCA9IHguaW5kcmVsaWQpKSkKICAgICAgSk9JTiBwZ19jbGFzcyBpIE9OICgoaS5vaWQg PSB4LmluZGV4cmVsaWQpKSkKQEAgLTE3NzYsMTIgKzE3NzYsMTIgQEAgcGdfc3RhdF9hbGxf aW5kZXhlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlkLAogcGdfc3RhdF9hbGxfdGFibGVzfCBT RUxFQ1QgYy5vaWQgQVMgcmVsaWQsCiAgICAgbi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAg ICAgYy5yZWxuYW1lLAotICAgIHBnX3N0YXRfZ2V0X251bXNjYW5zKGMub2lkKSBBUyBzZXFf c2NhbiwKLSAgICBwZ19zdGF0X2dldF9sYXN0c2NhbihjLm9pZCkgQVMgbGFzdF9zZXFfc2Nh biwKLSAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQoYy5vaWQpIEFTIHNlcV90dXBf cmVhZCwKLSAgICAoc3VtKHBnX3N0YXRfZ2V0X251bXNjYW5zKGkuaW5kZXhyZWxpZCkpKTo6 YmlnaW50IEFTIGlkeF9zY2FuLAotICAgIG1heChwZ19zdGF0X2dldF9sYXN0c2NhbihpLmlu ZGV4cmVsaWQpKSBBUyBsYXN0X2lkeF9zY2FuLAotICAgICgoc3VtKHBnX3N0YXRfZ2V0X3R1 cGxlc19mZXRjaGVkKGkuaW5kZXhyZWxpZCkpKTo6YmlnaW50ICsgcGdfc3RhdF9nZXRfdHVw bGVzX2ZldGNoZWQoYy5vaWQpKSBBUyBpZHhfdHVwX2ZldGNoLAorICAgIHBnX3N0YXRfZ2V0 X2hlYXBfbnVtc2NhbnMoYy5vaWQpIEFTIHNlcV9zY2FuLAorICAgIHBnX3N0YXRfZ2V0X2hl YXBfbGFzdHNjYW4oYy5vaWQpIEFTIGxhc3Rfc2VxX3NjYW4sCisgICAgcGdfc3RhdF9nZXRf aGVhcF90dXBsZXNfcmV0dXJuZWQoYy5vaWQpIEFTIHNlcV90dXBfcmVhZCwKKyAgICAoc3Vt KHBnX3N0YXRfZ2V0X2luZGV4X251bXNjYW5zKGkuaW5kZXhyZWxpZCkpKTo6YmlnaW50IEFT IGlkeF9zY2FuLAorICAgIG1heChwZ19zdGF0X2dldF9pbmRleF9sYXN0c2NhbihpLmluZGV4 cmVsaWQpKSBBUyBsYXN0X2lkeF9zY2FuLAorICAgICgoc3VtKHBnX3N0YXRfZ2V0X2luZGV4 X3R1cGxlc19mZXRjaGVkKGkuaW5kZXhyZWxpZCkpKTo6YmlnaW50ICsgcGdfc3RhdF9nZXRf aGVhcF90dXBsZXNfZmV0Y2hlZChjLm9pZCkpIEFTIGlkeF90dXBfZmV0Y2gsCiAgICAgcGdf c3RhdF9nZXRfdHVwbGVzX2luc2VydGVkKGMub2lkKSBBUyBuX3R1cF9pbnMsCiAgICAgcGdf c3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQoYy5vaWQpIEFTIG5fdHVwX3VwZCwKICAgICBwZ19z dGF0X2dldF90dXBsZXNfZGVsZXRlZChjLm9pZCkgQVMgbl90dXBfZGVsLApAQCAtMjIyMSw5 ICsyMjIxLDkgQEAgcGdfc3RhdF93YWxfcmVjZWl2ZXJ8IFNFTEVDVCBzLnBpZCwKIHBnX3N0 YXRfeGFjdF9hbGxfdGFibGVzfCBTRUxFQ1QgYy5vaWQgQVMgcmVsaWQsCiAgICAgbi5uc3Bu YW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgYy5yZWxuYW1lLAotICAgIHBnX3N0YXRfZ2V0X3hh Y3RfbnVtc2NhbnMoYy5vaWQpIEFTIHNlcV9zY2FuLAorICAgIHBnX3N0YXRfZ2V0X2hlYXBf eGFjdF9udW1zY2FucyhjLm9pZCkgQVMgc2VxX3NjYW4sCiAgICAgcGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfcmV0dXJuZWQoYy5vaWQpIEFTIHNlcV90dXBfcmVhZCwKLSAgICAoc3VtKHBn X3N0YXRfZ2V0X3hhY3RfbnVtc2NhbnMoaS5pbmRleHJlbGlkKSkpOjpiaWdpbnQgQVMgaWR4 X3NjYW4sCisgICAgKHN1bShwZ19zdGF0X2dldF9pbmRleF94YWN0X251bXNjYW5zKGkuaW5k ZXhyZWxpZCkpKTo6YmlnaW50IEFTIGlkeF9zY2FuLAogICAgICgoc3VtKHBnX3N0YXRfZ2V0 X3hhY3RfdHVwbGVzX2ZldGNoZWQoaS5pbmRleHJlbGlkKSkpOjpiaWdpbnQgKyBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19mZXRjaGVkKGMub2lkKSkgQVMgaWR4X3R1cF9mZXRjaCwKICAg ICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19pbnNlcnRlZChjLm9pZCkgQVMgbl90dXBfaW5z LAogICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoYy5vaWQpIEFTIG5fdHVw X3VwZCwKQEAgLTIyNzQsOCArMjI3NCw4IEBAIHBnX3N0YXRpb19hbGxfaW5kZXhlc3wgU0VM RUNUIGMub2lkIEFTIHJlbGlkLAogICAgIG4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAg IGMucmVsbmFtZSwKICAgICBpLnJlbG5hbWUgQVMgaW5kZXhyZWxuYW1lLAotICAgIChwZ19z dGF0X2dldF9ibG9ja3NfZmV0Y2hlZChpLm9pZCkgLSBwZ19zdGF0X2dldF9ibG9ja3NfaGl0 KGkub2lkKSkgQVMgaWR4X2Jsa3NfcmVhZCwKLSAgICBwZ19zdGF0X2dldF9ibG9ja3NfaGl0 KGkub2lkKSBBUyBpZHhfYmxrc19oaXQKKyAgICAocGdfc3RhdF9nZXRfaW5kZXhfYmxvY2tz X2ZldGNoZWQoaS5vaWQpIC0gcGdfc3RhdF9nZXRfaW5kZXhfYmxvY2tzX2hpdChpLm9pZCkp IEFTIGlkeF9ibGtzX3JlYWQsCisgICAgcGdfc3RhdF9nZXRfaW5kZXhfYmxvY2tzX2hpdChp Lm9pZCkgQVMgaWR4X2Jsa3NfaGl0CiAgICBGUk9NICgoKHBnX2NsYXNzIGMKICAgICAgSk9J TiBwZ19pbmRleCB4IE9OICgoYy5vaWQgPSB4LmluZHJlbGlkKSkpCiAgICAgIEpPSU4gcGdf Y2xhc3MgaSBPTiAoKGkub2lkID0geC5pbmRleHJlbGlkKSkpCkBAIC0yMjg0LDMxICsyMjg0 LDMxIEBAIHBnX3N0YXRpb19hbGxfaW5kZXhlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlkLAog cGdfc3RhdGlvX2FsbF9zZXF1ZW5jZXN8IFNFTEVDVCBjLm9pZCBBUyByZWxpZCwKICAgICBu Lm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAgICBjLnJlbG5hbWUsCi0gICAgKHBnX3N0YXRf Z2V0X2Jsb2Nrc19mZXRjaGVkKGMub2lkKSAtIHBnX3N0YXRfZ2V0X2Jsb2Nrc19oaXQoYy5v aWQpKSBBUyBibGtzX3JlYWQsCi0gICAgcGdfc3RhdF9nZXRfYmxvY2tzX2hpdChjLm9pZCkg QVMgYmxrc19oaXQKKyAgICAocGdfc3RhdF9nZXRfaW5kZXhfYmxvY2tzX2ZldGNoZWQoYy5v aWQpIC0gcGdfc3RhdF9nZXRfaGVhcF9ibG9ja3NfaGl0KGMub2lkKSkgQVMgYmxrc19yZWFk LAorICAgIHBnX3N0YXRfZ2V0X2hlYXBfYmxvY2tzX2hpdChjLm9pZCkgQVMgYmxrc19oaXQK ICAgIEZST00gKHBnX2NsYXNzIGMKICAgICAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuIE9O ICgobi5vaWQgPSBjLnJlbG5hbWVzcGFjZSkpKQogICBXSEVSRSAoYy5yZWxraW5kID0gJ1Mn OjoiY2hhciIpOwogcGdfc3RhdGlvX2FsbF90YWJsZXN8IFNFTEVDVCBjLm9pZCBBUyByZWxp ZCwKICAgICBuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAgICBjLnJlbG5hbWUsCi0gICAg KHBnX3N0YXRfZ2V0X2Jsb2Nrc19mZXRjaGVkKGMub2lkKSAtIHBnX3N0YXRfZ2V0X2Jsb2Nr c19oaXQoYy5vaWQpKSBBUyBoZWFwX2Jsa3NfcmVhZCwKLSAgICBwZ19zdGF0X2dldF9ibG9j a3NfaGl0KGMub2lkKSBBUyBoZWFwX2Jsa3NfaGl0LAorICAgIChwZ19zdGF0X2dldF9oZWFw X2Jsb2Nrc19mZXRjaGVkKGMub2lkKSAtIHBnX3N0YXRfZ2V0X2hlYXBfYmxvY2tzX2hpdChj Lm9pZCkpIEFTIGhlYXBfYmxrc19yZWFkLAorICAgIHBnX3N0YXRfZ2V0X2hlYXBfYmxvY2tz X2hpdChjLm9pZCkgQVMgaGVhcF9ibGtzX2hpdCwKICAgICBpLmlkeF9ibGtzX3JlYWQsCiAg ICAgaS5pZHhfYmxrc19oaXQsCi0gICAgKHBnX3N0YXRfZ2V0X2Jsb2Nrc19mZXRjaGVkKHQu b2lkKSAtIHBnX3N0YXRfZ2V0X2Jsb2Nrc19oaXQodC5vaWQpKSBBUyB0b2FzdF9ibGtzX3Jl YWQsCi0gICAgcGdfc3RhdF9nZXRfYmxvY2tzX2hpdCh0Lm9pZCkgQVMgdG9hc3RfYmxrc19o aXQsCisgICAgKHBnX3N0YXRfZ2V0X2hlYXBfYmxvY2tzX2ZldGNoZWQodC5vaWQpIC0gcGdf c3RhdF9nZXRfaGVhcF9ibG9ja3NfaGl0KHQub2lkKSkgQVMgdG9hc3RfYmxrc19yZWFkLAor ICAgIHBnX3N0YXRfZ2V0X2hlYXBfYmxvY2tzX2hpdCh0Lm9pZCkgQVMgdG9hc3RfYmxrc19o aXQsCiAgICAgeC5pZHhfYmxrc19yZWFkIEFTIHRpZHhfYmxrc19yZWFkLAogICAgIHguaWR4 X2Jsa3NfaGl0IEFTIHRpZHhfYmxrc19oaXQKICAgIEZST00gKCgoKHBnX2NsYXNzIGMKICAg ICAgTEVGVCBKT0lOIHBnX2NsYXNzIHQgT04gKChjLnJlbHRvYXN0cmVsaWQgPSB0Lm9pZCkp KQogICAgICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gKChuLm9pZCA9IGMucmVsbmFt ZXNwYWNlKSkpCi0gICAgIExFRlQgSk9JTiBMQVRFUkFMICggU0VMRUNUIChzdW0oKHBnX3N0 YXRfZ2V0X2Jsb2Nrc19mZXRjaGVkKHBnX2luZGV4LmluZGV4cmVsaWQpIC0gcGdfc3RhdF9n ZXRfYmxvY2tzX2hpdChwZ19pbmRleC5pbmRleHJlbGlkKSkpKTo6YmlnaW50IEFTIGlkeF9i bGtzX3JlYWQsCi0gICAgICAgICAgICAoc3VtKHBnX3N0YXRfZ2V0X2Jsb2Nrc19oaXQocGdf aW5kZXguaW5kZXhyZWxpZCkpKTo6YmlnaW50IEFTIGlkeF9ibGtzX2hpdAorICAgICBMRUZU IEpPSU4gTEFURVJBTCAoIFNFTEVDVCAoc3VtKChwZ19zdGF0X2dldF9pbmRleF9ibG9ja3Nf ZmV0Y2hlZChwZ19pbmRleC5pbmRleHJlbGlkKSAtIHBnX3N0YXRfZ2V0X2luZGV4X2Jsb2Nr c19oaXQocGdfaW5kZXguaW5kZXhyZWxpZCkpKSk6OmJpZ2ludCBBUyBpZHhfYmxrc19yZWFk LAorICAgICAgICAgICAgKHN1bShwZ19zdGF0X2dldF9pbmRleF9ibG9ja3NfaGl0KHBnX2lu ZGV4LmluZGV4cmVsaWQpKSk6OmJpZ2ludCBBUyBpZHhfYmxrc19oaXQKICAgICAgICAgICAg RlJPTSBwZ19pbmRleAogICAgICAgICAgIFdIRVJFIChwZ19pbmRleC5pbmRyZWxpZCA9IGMu b2lkKSkgaSBPTiAodHJ1ZSkpCi0gICAgIExFRlQgSk9JTiBMQVRFUkFMICggU0VMRUNUIChz dW0oKHBnX3N0YXRfZ2V0X2Jsb2Nrc19mZXRjaGVkKHBnX2luZGV4LmluZGV4cmVsaWQpIC0g cGdfc3RhdF9nZXRfYmxvY2tzX2hpdChwZ19pbmRleC5pbmRleHJlbGlkKSkpKTo6YmlnaW50 IEFTIGlkeF9ibGtzX3JlYWQsCi0gICAgICAgICAgICAoc3VtKHBnX3N0YXRfZ2V0X2Jsb2Nr c19oaXQocGdfaW5kZXguaW5kZXhyZWxpZCkpKTo6YmlnaW50IEFTIGlkeF9ibGtzX2hpdAor ICAgICBMRUZUIEpPSU4gTEFURVJBTCAoIFNFTEVDVCAoc3VtKChwZ19zdGF0X2dldF9pbmRl eF9ibG9ja3NfZmV0Y2hlZChwZ19pbmRleC5pbmRleHJlbGlkKSAtIHBnX3N0YXRfZ2V0X2lu ZGV4X2Jsb2Nrc19oaXQocGdfaW5kZXguaW5kZXhyZWxpZCkpKSk6OmJpZ2ludCBBUyBpZHhf Ymxrc19yZWFkLAorICAgICAgICAgICAgKHN1bShwZ19zdGF0X2dldF9pbmRleF9ibG9ja3Nf aGl0KHBnX2luZGV4LmluZGV4cmVsaWQpKSk6OmJpZ2ludCBBUyBpZHhfYmxrc19oaXQKICAg ICAgICAgICAgRlJPTSBwZ19pbmRleAogICAgICAgICAgIFdIRVJFIChwZ19pbmRleC5pbmRy ZWxpZCA9IHQub2lkKSkgeCBPTiAodHJ1ZSkpCiAgIFdIRVJFIChjLnJlbGtpbmQgPSBBTlkg KEFSUkFZWydyJzo6ImNoYXIiLCAndCc6OiJjaGFyIiwgJ20nOjoiY2hhciJdKSk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHMub3V0CmluZGV4IDI1N2E2YTlkYTkuLjQ0OWQ3MGY0 YzcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHMub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHMub3V0CkBAIC0xNTEsNiArMTUx LDExNyBAQCBGUk9NIHByZXZzdGF0cyBBUyBwcjsKIAogQ09NTUlUOwogLS0tLQorLS0gQmFz aWMgdGVzdHMgZm9yIHRvYXN0CistLS0KK0NSRUFURSBUQUJMRSBzdGF0c190b2FzdChzdHVm ZiB0ZXh0KTsKK0FMVEVSIFRBQkxFIHN0YXRzX3RvYXN0IEFMVEVSIENPTFVNTiBzdHVmZiBT RVQgU1RPUkFHRSBFWFRFUk5BTDsKK0lOU0VSVCBJTlRPIHN0YXRzX3RvYXN0IFZBTFVFUyAo cmVwZWF0KCdhJywxMDAwMDAwKSk7CitTRUxFQ1QgY291bnQoKikgRlJPTSBzdGF0c190b2Fz dCBXSEVSRSBzdHVmZiBsaWtlICclYSUnOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCiso MSByb3cpCisKKy0tIGVuc3VyZSBwZW5kaW5nIHN0YXRzIGFyZSBmbHVzaGVkCitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IHRv YXN0X2Jsa3NfcmVhZCA+IDAgYXMgdG9hc3RfYmxrc19yZWFkLCB0b2FzdF9ibGtzX2hpdCA+ IDAgYXMgdG9hc3RfYmxrc19oaXQsCisgICAgICAgdGlkeF9ibGtzX3JlYWQgPiAwIGFzIHRp ZHhfYmxrc19yZWFkLCB0aWR4X2Jsa3NfaGl0ID4gMCBhcyB0aWR4X2Jsa3NfaGl0LAorICAg ICAgIHRvYXN0X2Jsa3NfaGl0ID49IHRvYXN0X2Jsa3NfcmVhZCwKKyAgICAgICB0aWR4X2Js a3NfaGl0ID49IHRpZHhfYmxrc19yZWFkCisgICBmcm9tIHBnX3N0YXRpb19hbGxfdGFibGVz Cisgd2hlcmUgcmVsbmFtZSA9ICdzdGF0c190b2FzdCc7CisgdG9hc3RfYmxrc19yZWFkIHwg dG9hc3RfYmxrc19oaXQgfCB0aWR4X2Jsa3NfcmVhZCB8IHRpZHhfYmxrc19oaXQgfCA/Y29s dW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyB0ICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgIHwg dCAgICAgICAgICAgICB8IHQgICAgICAgIHwgdAorKDEgcm93KQorCistLS0tCistLSBCYXNp YyB0ZXN0cyBmb3IgcGFydGl0aW9uCistLS0KK0NSRUFURSBUQUJMRSBzdGF0c19wYXJ0aXRp b24gKAorICAgIGlkMSAgICAgICAgIGludCBub3QgbnVsbCwKKyAgICBpZDIgICAgICAgICBp bnQgbm90IG51bGwKKykgUEFSVElUSU9OIEJZIFJBTkdFIChpZDIpOworQ1JFQVRFIFRBQkxF IHN0YXRzX3BhcnRpdGlvbl81IFBBUlRJVElPTiBPRiBzdGF0c19wYXJ0aXRpb24KKyAgICBG T1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsKK0NSRUFURSBUQUJMRSBzdGF0c19wYXJ0aXRp b25fMjAwMDAgUEFSVElUSU9OIE9GIHN0YXRzX3BhcnRpdGlvbgorICAgIEZPUiBWQUxVRVMg RlJPTSAoNSkgVE8gKDIwMDAxKTsKK0NSRUFURSBJTkRFWCBPTiBzdGF0c19wYXJ0aXRpb24g KGlkMik7CitpbnNlcnQgaW50byBzdGF0c19wYXJ0aXRpb24gc2VsZWN0IGEsYSBmcm9tIGdl bmVyYXRlX3NlcmllcygwLDIwMDAwKSBhOworU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsK K1NFVCBlbmFibGVfYml0bWFwc2NhbiBUTyBvZmY7CitzZWxlY3QgKiBmcm9tIHN0YXRzX3Bh cnRpdGlvbiB3aGVyZSBpZDIgPSAyMDAwOworIGlkMSAgfCBpZDIgIAorLS0tLS0tKy0tLS0t LQorIDIwMDAgfCAyMDAwCisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20gc3RhdHNfcGFydGl0 aW9uIHdoZXJlIGlkMiA9IDI7CisgaWQxIHwgaWQyIAorLS0tLS0rLS0tLS0KKyAgIDIgfCAg IDIKKygxIHJvdykKKworLS0gZW5zdXJlIHBlbmRpbmcgc3RhdHMgYXJlIGZsdXNoZWQKK1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitzZWxl Y3QgcmVsbmFtZSwgaW5kZXhyZWxuYW1lLCBpZHhfc2NhbiA+IDAgYXMgaWR4X3NjYW4sIGlk eF90dXBfcmVhZCA+IDAgYXMgaWR4X3R1cF9yZWFkLAorICAgICAgIGlkeF90dXBfZmV0Y2gg PiAwIGFzIGlkeF90dXBfZmV0Y2gKKyAgIGZyb20gcGdfc3RhdF9hbGxfaW5kZXhlcworIHdo ZXJlIHJlbG5hbWUgbGlrZSAnJXN0YXRzX3BhcnRpdGlvbiUnCisgb3JkZXIgYnkgcmVsbmFt ZSBDT0xMQVRFICJDIjsKKyAgICAgICAgcmVsbmFtZSAgICAgICAgfCAgICAgICAgIGluZGV4 cmVsbmFtZSAgICAgICAgICB8IGlkeF9zY2FuIHwgaWR4X3R1cF9yZWFkIHwgaWR4X3R1cF9m ZXRjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyBz dGF0c19wYXJ0aXRpb25fMjAwMDAgfCBzdGF0c19wYXJ0aXRpb25fMjAwMDBfaWQyX2lkeCB8 IHQgICAgICAgIHwgdCAgICAgICAgICAgIHwgdAorIHN0YXRzX3BhcnRpdGlvbl81ICAgICB8 IHN0YXRzX3BhcnRpdGlvbl81X2lkMl9pZHggICAgIHwgdCAgICAgICAgfCB0ICAgICAgICAg ICAgfCB0CisoMiByb3dzKQorCitzZWxlY3QgcmVsbmFtZSwgaW5kZXhyZWxuYW1lLCBpZHhf Ymxrc19yZWFkID4gMCBhcyBpZHhfYmxrc19yZWFkLAorICAgICAgIGlkeF9ibGtzX2hpdCA+ IDAgYXMgaWR4X2Jsa3NfaGl0CisgICBmcm9tIHBnX3N0YXRpb19hbGxfaW5kZXhlcworIHdo ZXJlIHJlbG5hbWUgbGlrZSAnJXN0YXRzX3BhcnRpdGlvbiUnCisgb3JkZXIgYnkgcmVsbmFt ZSBDT0xMQVRFICJDIjsKKyAgICAgICAgcmVsbmFtZSAgICAgICAgfCAgICAgICAgIGluZGV4 cmVsbmFtZSAgICAgICAgICB8IGlkeF9ibGtzX3JlYWQgfCBpZHhfYmxrc19oaXQgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHN0YXRzX3BhcnRpdGlvbl8yMDAwMCB8 IHN0YXRzX3BhcnRpdGlvbl8yMDAwMF9pZDJfaWR4IHwgdCAgICAgICAgICAgICB8IHQKKyBz dGF0c19wYXJ0aXRpb25fNSAgICAgfCBzdGF0c19wYXJ0aXRpb25fNV9pZDJfaWR4ICAgICB8 IHQgICAgICAgICAgICAgfCB0CisoMiByb3dzKQorCitzZWxlY3QgcmVsbmFtZSxzZXFfc2Nh biA+IDAgYXMgc2VxX3NjYW4sIHNlcV90dXBfcmVhZCA+IDAgYXMgc2VxX3R1cF9yZWFkLAor ICAgICAgIGlkeF9zY2FuID4gMCBhcyBpZHhfc2NhbiwgaWR4X3R1cF9mZXRjaCA+IDAgYXMg aWR4X3R1cF9mZXRjaAorICAgZnJvbSBwZ19zdGF0X2FsbF90YWJsZXMKKyAgd2hlcmUgcmVs bmFtZSBsaWtlICclc3RhdHNfcGFydGl0aW9uJScKKyAgb3JkZXIgYnkgcmVsbmFtZSBDT0xM QVRFICJDIjsKKyAgICAgICAgcmVsbmFtZSAgICAgICAgfCBzZXFfc2NhbiB8IHNlcV90dXBf cmVhZCB8IGlkeF9zY2FuIHwgaWR4X3R1cF9mZXRjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0KKyBzdGF0c19wYXJ0aXRpb24gICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgICB8 IGYgICAgICAgIHwgZgorIHN0YXRzX3BhcnRpdGlvbl8yMDAwMCB8IHQgICAgICAgIHwgZiAg ICAgICAgICAgIHwgdCAgICAgICAgfCB0Cisgc3RhdHNfcGFydGl0aW9uXzUgICAgIHwgdCAg ICAgICAgfCBmICAgICAgICAgICAgfCB0ICAgICAgICB8IHQKKygzIHJvd3MpCisKK3NlbGVj dCByZWxuYW1lLCBoZWFwX2Jsa3NfcmVhZCA+IDAgYXMgaGVhcF9ibGtzX3JlYWQsIGhlYXBf Ymxrc19oaXQgPiAwIGFzIGhlYXBfYmxrc19oaXQsCisgICAgICAgaWR4X2Jsa3NfcmVhZCA+ IDAgYXMgaWR4X2Jsa3NfcmVhZCwgaWR4X2Jsa3NfaGl0ID4gMCBhcyBpZHhfYmxrc19oaXQK KyAgIGZyb20gcGdfc3RhdGlvX2FsbF90YWJsZXMKKyB3aGVyZSByZWxuYW1lIGxpa2UgJyVz dGF0c19wYXJ0aXRpb24lJworIG9yZGVyIGJ5IHJlbG5hbWUgQ09MTEFURSAiQyI7CisgICAg ICAgIHJlbG5hbWUgICAgICAgIHwgaGVhcF9ibGtzX3JlYWQgfCBoZWFwX2Jsa3NfaGl0IHwg aWR4X2Jsa3NfcmVhZCB8IGlkeF9ibGtzX2hpdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLQorIHN0YXRzX3BhcnRpdGlvbl8yMDAwMCB8IHQgICAgICAgICAgICAgIHwg dCAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0Cisgc3RhdHNfcGFydGl0aW9uXzUg ICAgIHwgdCAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICB8 IHQKKygyIHJvd3MpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiBUTyBvbjsKK1NFVCBlbmFibGVf Yml0bWFwc2NhbiBUTyBvbjsKKy0tLS0KIC0tIEJhc2ljIHRlc3RzIGZvciB0cmFja19mdW5j dGlvbnMKIC0tLQogQ1JFQVRFIEZVTkNUSU9OIHN0YXRzX3Rlc3RfZnVuYzEoKSBSRVRVUk5T IFZPSUQgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJEJFR0lOIEVORDskJDsKQEAgLTEwMTUsMjEg KzExMjYsMjEgQEAgc2VsZWN0IGEgZnJvbSBzdGF0c190ZXN0X3RhYjEgd2hlcmUgYSA9IDM7 CiAgMwogKDEgcm93KQogCi1TRUxFQ1QgcGdfc3RhdF9oYXZlX3N0YXRzKCdyZWxhdGlvbics IDpkYm9pZCwgOnN0YXRzX3Rlc3RfaWR4MV9vaWQpOworU0VMRUNUIHBnX3N0YXRfaGF2ZV9z dGF0cygnaW5kZXgnLCA6ZGJvaWQsIDpzdGF0c190ZXN0X2lkeDFfb2lkKTsKICBwZ19zdGF0 X2hhdmVfc3RhdHMgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogIHQKICgxIHJvdykKIAogLS0g cGdfc3RhdF9oYXZlX3N0YXRzIHJldHVybnMgZmFsc2UgZm9yIGRyb3BwZWQgaW5kZXggd2l0 aCBzdGF0cwotU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygncmVsYXRpb24nLCA6ZGJvaWQs IDpzdGF0c190ZXN0X2lkeDFfb2lkKTsKK1NFTEVDVCBwZ19zdGF0X2hhdmVfc3RhdHMoJ2lu ZGV4JywgOmRib2lkLCA6c3RhdHNfdGVzdF9pZHgxX29pZCk7CiAgcGdfc3RhdF9oYXZlX3N0 YXRzIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0KICB0CiAoMSByb3cpCiAKIERST1AgaW5kZXgg c3RhdHNfdGVzdF9pZHgxOwotU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygncmVsYXRpb24n LCA6ZGJvaWQsIDpzdGF0c190ZXN0X2lkeDFfb2lkKTsKK1NFTEVDVCBwZ19zdGF0X2hhdmVf c3RhdHMoJ2luZGV4JywgOmRib2lkLCA6c3RhdHNfdGVzdF9pZHgxX29pZCk7CiAgcGdfc3Rh dF9oYXZlX3N0YXRzIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmCkBAIC0xMDQ1LDE0ICsx MTU2LDE0IEBAIHNlbGVjdCBhIGZyb20gc3RhdHNfdGVzdF90YWIxIHdoZXJlIGEgPSAzOwog IDMKICgxIHJvdykKIAotU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygncmVsYXRpb24nLCA6 ZGJvaWQsIDpzdGF0c190ZXN0X2lkeDFfb2lkKTsKK1NFTEVDVCBwZ19zdGF0X2hhdmVfc3Rh dHMoJ2luZGV4JywgOmRib2lkLCA6c3RhdHNfdGVzdF9pZHgxX29pZCk7CiAgcGdfc3RhdF9o YXZlX3N0YXRzIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0KICB0CiAoMSByb3cpCiAKIFJPTExC QUNLOwotU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygncmVsYXRpb24nLCA6ZGJvaWQsIDpz dGF0c190ZXN0X2lkeDFfb2lkKTsKK1NFTEVDVCBwZ19zdGF0X2hhdmVfc3RhdHMoJ2luZGV4 JywgOmRib2lkLCA6c3RhdHNfdGVzdF9pZHgxX29pZCk7CiAgcGdfc3RhdF9oYXZlX3N0YXRz IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmCkBAIC0xMDY3LDcgKzExNzgsNyBAQCBzZWxl Y3QgYSBmcm9tIHN0YXRzX3Rlc3RfdGFiMSB3aGVyZSBhID0gMzsKICAzCiAoMSByb3cpCiAK LVNFTEVDVCBwZ19zdGF0X2hhdmVfc3RhdHMoJ3JlbGF0aW9uJywgOmRib2lkLCA6c3RhdHNf dGVzdF9pZHgxX29pZCk7CitTRUxFQ1QgcGdfc3RhdF9oYXZlX3N0YXRzKCdpbmRleCcsIDpk Ym9pZCwgOnN0YXRzX3Rlc3RfaWR4MV9vaWQpOwogIHBnX3N0YXRfaGF2ZV9zdGF0cyAKIC0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgdApAQCAtMTA3NSw3ICsxMTg2LDcgQEAgU0VMRUNUIHBn X3N0YXRfaGF2ZV9zdGF0cygncmVsYXRpb24nLCA6ZGJvaWQsIDpzdGF0c190ZXN0X2lkeDFf b2lkKTsKIAogUkVJTkRFWCBpbmRleCBDT05DVVJSRU5UTFkgc3RhdHNfdGVzdF9pZHgxOwog LS0gZmFsc2UgZm9yIHByZXZpb3VzIG9pZAotU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygn cmVsYXRpb24nLCA6ZGJvaWQsIDpzdGF0c190ZXN0X2lkeDFfb2lkKTsKK1NFTEVDVCBwZ19z dGF0X2hhdmVfc3RhdHMoJ2luZGV4JywgOmRib2lkLCA6c3RhdHNfdGVzdF9pZHgxX29pZCk7 CiAgcGdfc3RhdF9oYXZlX3N0YXRzIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmCkBAIC0x MDgzLDcgKzExOTQsNyBAQCBTRUxFQ1QgcGdfc3RhdF9oYXZlX3N0YXRzKCdyZWxhdGlvbics IDpkYm9pZCwgOnN0YXRzX3Rlc3RfaWR4MV9vaWQpOwogCiAtLSB0cnVlIGZvciBuZXcgb2lk CiBTRUxFQ1QgJ3N0YXRzX3Rlc3RfaWR4MSc6OnJlZ2NsYXNzOjpvaWQgQVMgc3RhdHNfdGVz dF9pZHgxX29pZCBcZ3NldAotU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygncmVsYXRpb24n LCA6ZGJvaWQsIDpzdGF0c190ZXN0X2lkeDFfb2lkKTsKK1NFTEVDVCBwZ19zdGF0X2hhdmVf c3RhdHMoJ2luZGV4JywgOmRib2lkLCA6c3RhdHNfdGVzdF9pZHgxX29pZCk7CiAgcGdfc3Rh dF9oYXZlX3N0YXRzIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0KICB0CkBAIC0xMDkxLDcgKzEy MDIsNyBAQCBTRUxFQ1QgcGdfc3RhdF9oYXZlX3N0YXRzKCdyZWxhdGlvbicsIDpkYm9pZCwg OnN0YXRzX3Rlc3RfaWR4MV9vaWQpOwogCiAtLSBwZ19zdGF0X2hhdmVfc3RhdHMgcmV0dXJu cyB0cnVlIGZvciBhIHJvbGxlZCBiYWNrIGRyb3AgaW5kZXggd2l0aCBzdGF0cwogQkVHSU47 Ci1TRUxFQ1QgcGdfc3RhdF9oYXZlX3N0YXRzKCdyZWxhdGlvbicsIDpkYm9pZCwgOnN0YXRz X3Rlc3RfaWR4MV9vaWQpOworU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygnaW5kZXgnLCA6 ZGJvaWQsIDpzdGF0c190ZXN0X2lkeDFfb2lkKTsKICBwZ19zdGF0X2hhdmVfc3RhdHMgCiAt LS0tLS0tLS0tLS0tLS0tLS0tLQogIHQKQEAgLTEwOTksNyArMTIxMCw3IEBAIFNFTEVDVCBw Z19zdGF0X2hhdmVfc3RhdHMoJ3JlbGF0aW9uJywgOmRib2lkLCA6c3RhdHNfdGVzdF9pZHgx X29pZCk7CiAKIERST1AgaW5kZXggc3RhdHNfdGVzdF9pZHgxOwogUk9MTEJBQ0s7Ci1TRUxF Q1QgcGdfc3RhdF9oYXZlX3N0YXRzKCdyZWxhdGlvbicsIDpkYm9pZCwgOnN0YXRzX3Rlc3Rf aWR4MV9vaWQpOworU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygnaW5kZXgnLCA6ZGJvaWQs IDpzdGF0c190ZXN0X2lkeDFfb2lkKTsKICBwZ19zdGF0X2hhdmVfc3RhdHMgCiAtLS0tLS0t LS0tLS0tLS0tLS0tLQogIHQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0 YXRzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzLnNxbAppbmRleCBmNjI3MGY3 YmFkLi5jN2ZlZTcxZDZmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0 cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHMuc3FsCkBAIC0xMjYsNiAr MTI2LDc3IEBAIEZST00gcHJldnN0YXRzIEFTIHByOwogCiBDT01NSVQ7CiAKKy0tLS0KKy0t IEJhc2ljIHRlc3RzIGZvciB0b2FzdAorLS0tCitDUkVBVEUgVEFCTEUgc3RhdHNfdG9hc3Qo c3R1ZmYgdGV4dCk7CitBTFRFUiBUQUJMRSBzdGF0c190b2FzdCBBTFRFUiBDT0xVTU4gc3R1 ZmYgU0VUIFNUT1JBR0UgRVhURVJOQUw7CitJTlNFUlQgSU5UTyBzdGF0c190b2FzdCBWQUxV RVMgKHJlcGVhdCgnYScsMTAwMDAwMCkpOworU0VMRUNUIGNvdW50KCopIEZST00gc3RhdHNf dG9hc3QgV0hFUkUgc3R1ZmYgbGlrZSAnJWElJzsKKworLS0gZW5zdXJlIHBlbmRpbmcgc3Rh dHMgYXJlIGZsdXNoZWQKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKwor c2VsZWN0IHRvYXN0X2Jsa3NfcmVhZCA+IDAgYXMgdG9hc3RfYmxrc19yZWFkLCB0b2FzdF9i bGtzX2hpdCA+IDAgYXMgdG9hc3RfYmxrc19oaXQsCisgICAgICAgdGlkeF9ibGtzX3JlYWQg PiAwIGFzIHRpZHhfYmxrc19yZWFkLCB0aWR4X2Jsa3NfaGl0ID4gMCBhcyB0aWR4X2Jsa3Nf aGl0LAorICAgICAgIHRvYXN0X2Jsa3NfaGl0ID49IHRvYXN0X2Jsa3NfcmVhZCwKKyAgICAg ICB0aWR4X2Jsa3NfaGl0ID49IHRpZHhfYmxrc19yZWFkCisgICBmcm9tIHBnX3N0YXRpb19h bGxfdGFibGVzCisgd2hlcmUgcmVsbmFtZSA9ICdzdGF0c190b2FzdCc7CisKKy0tLS0KKy0t IEJhc2ljIHRlc3RzIGZvciBwYXJ0aXRpb24KKy0tLQorQ1JFQVRFIFRBQkxFIHN0YXRzX3Bh cnRpdGlvbiAoCisgICAgaWQxICAgICAgICAgaW50IG5vdCBudWxsLAorICAgIGlkMiAgICAg ICAgIGludCBub3QgbnVsbAorKSBQQVJUSVRJT04gQlkgUkFOR0UgKGlkMik7CisKK0NSRUFU RSBUQUJMRSBzdGF0c19wYXJ0aXRpb25fNSBQQVJUSVRJT04gT0Ygc3RhdHNfcGFydGl0aW9u CisgICAgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoNSk7CisKK0NSRUFURSBUQUJMRSBzdGF0 c19wYXJ0aXRpb25fMjAwMDAgUEFSVElUSU9OIE9GIHN0YXRzX3BhcnRpdGlvbgorICAgIEZP UiBWQUxVRVMgRlJPTSAoNSkgVE8gKDIwMDAxKTsKKworQ1JFQVRFIElOREVYIE9OIHN0YXRz X3BhcnRpdGlvbiAoaWQyKTsKKworaW5zZXJ0IGludG8gc3RhdHNfcGFydGl0aW9uIHNlbGVj dCBhLGEgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMCwyMDAwMCkgYTsKKworU0VUIGVuYWJsZV9z ZXFzY2FuIFRPIG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiBUTyBvZmY7CisKK3NlbGVj dCAqIGZyb20gc3RhdHNfcGFydGl0aW9uIHdoZXJlIGlkMiA9IDIwMDA7CitzZWxlY3QgKiBm cm9tIHN0YXRzX3BhcnRpdGlvbiB3aGVyZSBpZDIgPSAyOworLS0gZW5zdXJlIHBlbmRpbmcg c3RhdHMgYXJlIGZsdXNoZWQKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK Kworc2VsZWN0IHJlbG5hbWUsIGluZGV4cmVsbmFtZSwgaWR4X3NjYW4gPiAwIGFzIGlkeF9z Y2FuLCBpZHhfdHVwX3JlYWQgPiAwIGFzIGlkeF90dXBfcmVhZCwKKyAgICAgICBpZHhfdHVw X2ZldGNoID4gMCBhcyBpZHhfdHVwX2ZldGNoCisgICBmcm9tIHBnX3N0YXRfYWxsX2luZGV4 ZXMKKyB3aGVyZSByZWxuYW1lIGxpa2UgJyVzdGF0c19wYXJ0aXRpb24lJworIG9yZGVyIGJ5 IHJlbG5hbWUgQ09MTEFURSAiQyI7CisKK3NlbGVjdCByZWxuYW1lLCBpbmRleHJlbG5hbWUs IGlkeF9ibGtzX3JlYWQgPiAwIGFzIGlkeF9ibGtzX3JlYWQsCisgICAgICAgaWR4X2Jsa3Nf aGl0ID4gMCBhcyBpZHhfYmxrc19oaXQKKyAgIGZyb20gcGdfc3RhdGlvX2FsbF9pbmRleGVz Cisgd2hlcmUgcmVsbmFtZSBsaWtlICclc3RhdHNfcGFydGl0aW9uJScKKyBvcmRlciBieSBy ZWxuYW1lIENPTExBVEUgIkMiOworCitzZWxlY3QgcmVsbmFtZSxzZXFfc2NhbiA+IDAgYXMg c2VxX3NjYW4sIHNlcV90dXBfcmVhZCA+IDAgYXMgc2VxX3R1cF9yZWFkLAorICAgICAgIGlk eF9zY2FuID4gMCBhcyBpZHhfc2NhbiwgaWR4X3R1cF9mZXRjaCA+IDAgYXMgaWR4X3R1cF9m ZXRjaAorICAgZnJvbSBwZ19zdGF0X2FsbF90YWJsZXMKKyAgd2hlcmUgcmVsbmFtZSBsaWtl ICclc3RhdHNfcGFydGl0aW9uJScKKyAgb3JkZXIgYnkgcmVsbmFtZSBDT0xMQVRFICJDIjsK Kworc2VsZWN0IHJlbG5hbWUsIGhlYXBfYmxrc19yZWFkID4gMCBhcyBoZWFwX2Jsa3NfcmVh ZCwgaGVhcF9ibGtzX2hpdCA+IDAgYXMgaGVhcF9ibGtzX2hpdCwKKyAgICAgICBpZHhfYmxr c19yZWFkID4gMCBhcyBpZHhfYmxrc19yZWFkLCBpZHhfYmxrc19oaXQgPiAwIGFzIGlkeF9i bGtzX2hpdAorICAgZnJvbSBwZ19zdGF0aW9fYWxsX3RhYmxlcworIHdoZXJlIHJlbG5hbWUg bGlrZSAnJXN0YXRzX3BhcnRpdGlvbiUnCisgb3JkZXIgYnkgcmVsbmFtZSBDT0xMQVRFICJD IjsKKworU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9uOworU0VUIGVuYWJsZV9iaXRtYXBzY2Fu IFRPIG9uOworCiAtLS0tCiAtLSBCYXNpYyB0ZXN0cyBmb3IgdHJhY2tfZnVuY3Rpb25zCiAt LS0KQEAgLTQ5Miw0MCArNTYzLDQwIEBAIENSRUFURSBpbmRleCBzdGF0c190ZXN0X2lkeDEg b24gc3RhdHNfdGVzdF90YWIxKGEpOwogU0VMRUNUICdzdGF0c190ZXN0X2lkeDEnOjpyZWdj bGFzczo6b2lkIEFTIHN0YXRzX3Rlc3RfaWR4MV9vaWQgXGdzZXQKIFNFVCBlbmFibGVfc2Vx c2NhbiBUTyBvZmY7CiBzZWxlY3QgYSBmcm9tIHN0YXRzX3Rlc3RfdGFiMSB3aGVyZSBhID0g MzsKLVNFTEVDVCBwZ19zdGF0X2hhdmVfc3RhdHMoJ3JlbGF0aW9uJywgOmRib2lkLCA6c3Rh dHNfdGVzdF9pZHgxX29pZCk7CitTRUxFQ1QgcGdfc3RhdF9oYXZlX3N0YXRzKCdpbmRleCcs IDpkYm9pZCwgOnN0YXRzX3Rlc3RfaWR4MV9vaWQpOwogCiAtLSBwZ19zdGF0X2hhdmVfc3Rh dHMgcmV0dXJucyBmYWxzZSBmb3IgZHJvcHBlZCBpbmRleCB3aXRoIHN0YXRzCi1TRUxFQ1Qg cGdfc3RhdF9oYXZlX3N0YXRzKCdyZWxhdGlvbicsIDpkYm9pZCwgOnN0YXRzX3Rlc3RfaWR4 MV9vaWQpOworU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygnaW5kZXgnLCA6ZGJvaWQsIDpz dGF0c190ZXN0X2lkeDFfb2lkKTsKIERST1AgaW5kZXggc3RhdHNfdGVzdF9pZHgxOwotU0VM RUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygncmVsYXRpb24nLCA6ZGJvaWQsIDpzdGF0c190ZXN0 X2lkeDFfb2lkKTsKK1NFTEVDVCBwZ19zdGF0X2hhdmVfc3RhdHMoJ2luZGV4JywgOmRib2lk LCA6c3RhdHNfdGVzdF9pZHgxX29pZCk7CiAKIC0tIHBnX3N0YXRfaGF2ZV9zdGF0cyByZXR1 cm5zIGZhbHNlIGZvciByb2xsZWQgYmFjayBpbmRleCBjcmVhdGlvbgogQkVHSU47CiBDUkVB VEUgaW5kZXggc3RhdHNfdGVzdF9pZHgxIG9uIHN0YXRzX3Rlc3RfdGFiMShhKTsKIFNFTEVD VCAnc3RhdHNfdGVzdF9pZHgxJzo6cmVnY2xhc3M6Om9pZCBBUyBzdGF0c190ZXN0X2lkeDFf b2lkIFxnc2V0CiBzZWxlY3QgYSBmcm9tIHN0YXRzX3Rlc3RfdGFiMSB3aGVyZSBhID0gMzsK LVNFTEVDVCBwZ19zdGF0X2hhdmVfc3RhdHMoJ3JlbGF0aW9uJywgOmRib2lkLCA6c3RhdHNf dGVzdF9pZHgxX29pZCk7CitTRUxFQ1QgcGdfc3RhdF9oYXZlX3N0YXRzKCdpbmRleCcsIDpk Ym9pZCwgOnN0YXRzX3Rlc3RfaWR4MV9vaWQpOwogUk9MTEJBQ0s7Ci1TRUxFQ1QgcGdfc3Rh dF9oYXZlX3N0YXRzKCdyZWxhdGlvbicsIDpkYm9pZCwgOnN0YXRzX3Rlc3RfaWR4MV9vaWQp OworU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygnaW5kZXgnLCA6ZGJvaWQsIDpzdGF0c190 ZXN0X2lkeDFfb2lkKTsKIAogLS0gcGdfc3RhdF9oYXZlX3N0YXRzIHJldHVybnMgdHJ1ZSBm b3IgcmVpbmRleCBDT05DVVJSRU5UTFkKIENSRUFURSBpbmRleCBzdGF0c190ZXN0X2lkeDEg b24gc3RhdHNfdGVzdF90YWIxKGEpOwogU0VMRUNUICdzdGF0c190ZXN0X2lkeDEnOjpyZWdj bGFzczo6b2lkIEFTIHN0YXRzX3Rlc3RfaWR4MV9vaWQgXGdzZXQKIHNlbGVjdCBhIGZyb20g c3RhdHNfdGVzdF90YWIxIHdoZXJlIGEgPSAzOwotU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0 cygncmVsYXRpb24nLCA6ZGJvaWQsIDpzdGF0c190ZXN0X2lkeDFfb2lkKTsKK1NFTEVDVCBw Z19zdGF0X2hhdmVfc3RhdHMoJ2luZGV4JywgOmRib2lkLCA6c3RhdHNfdGVzdF9pZHgxX29p ZCk7CiBSRUlOREVYIGluZGV4IENPTkNVUlJFTlRMWSBzdGF0c190ZXN0X2lkeDE7CiAtLSBm YWxzZSBmb3IgcHJldmlvdXMgb2lkCi1TRUxFQ1QgcGdfc3RhdF9oYXZlX3N0YXRzKCdyZWxh dGlvbicsIDpkYm9pZCwgOnN0YXRzX3Rlc3RfaWR4MV9vaWQpOworU0VMRUNUIHBnX3N0YXRf aGF2ZV9zdGF0cygnaW5kZXgnLCA6ZGJvaWQsIDpzdGF0c190ZXN0X2lkeDFfb2lkKTsKIC0t IHRydWUgZm9yIG5ldyBvaWQKIFNFTEVDVCAnc3RhdHNfdGVzdF9pZHgxJzo6cmVnY2xhc3M6 Om9pZCBBUyBzdGF0c190ZXN0X2lkeDFfb2lkIFxnc2V0Ci1TRUxFQ1QgcGdfc3RhdF9oYXZl X3N0YXRzKCdyZWxhdGlvbicsIDpkYm9pZCwgOnN0YXRzX3Rlc3RfaWR4MV9vaWQpOworU0VM RUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygnaW5kZXgnLCA6ZGJvaWQsIDpzdGF0c190ZXN0X2lk eDFfb2lkKTsKIAogLS0gcGdfc3RhdF9oYXZlX3N0YXRzIHJldHVybnMgdHJ1ZSBmb3IgYSBy b2xsZWQgYmFjayBkcm9wIGluZGV4IHdpdGggc3RhdHMKIEJFR0lOOwotU0VMRUNUIHBnX3N0 YXRfaGF2ZV9zdGF0cygncmVsYXRpb24nLCA6ZGJvaWQsIDpzdGF0c190ZXN0X2lkeDFfb2lk KTsKK1NFTEVDVCBwZ19zdGF0X2hhdmVfc3RhdHMoJ2luZGV4JywgOmRib2lkLCA6c3RhdHNf dGVzdF9pZHgxX29pZCk7CiBEUk9QIGluZGV4IHN0YXRzX3Rlc3RfaWR4MTsKIFJPTExCQUNL OwotU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygncmVsYXRpb24nLCA6ZGJvaWQsIDpzdGF0 c190ZXN0X2lkeDFfb2lkKTsKK1NFTEVDVCBwZ19zdGF0X2hhdmVfc3RhdHMoJ2luZGV4Jywg OmRib2lkLCA6c3RhdHNfdGVzdF9pZHgxX29pZCk7CiAKIC0tIHB1dCBlbmFibGVfc2Vxc2Nh biBiYWNrIHRvIG9uCiBTRVQgZW5hYmxlX3NlcXNjYW4gVE8gb247CmRpZmYgLS1naXQgYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CmluZGV4IDJmMDJjYzhmNDIuLjM4ODA2ZDVkZWUgMTAwNjQ0Ci0tLSBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CkBAIC0yMDA5LDEwICsyMDA5LDExIEBAIFBnU3RhdFNoYXJl ZF9Db21tb24KIFBnU3RhdFNoYXJlZF9EYXRhYmFzZQogUGdTdGF0U2hhcmVkX0Z1bmN0aW9u CiBQZ1N0YXRTaGFyZWRfSGFzaEVudHJ5Ci1QZ1N0YXRTaGFyZWRfUmVsYXRpb24KK1BnU3Rh dFNoYXJlZF9JbmRleAogUGdTdGF0U2hhcmVkX1JlcGxTbG90CiBQZ1N0YXRTaGFyZWRfU0xS VQogUGdTdGF0U2hhcmVkX1N1YnNjcmlwdGlvbgorUGdTdGF0U2hhcmVkX1RhYmxlCiBQZ1N0 YXRTaGFyZWRfV2FsCiBQZ1N0YXRfQXJjaGl2ZXJTdGF0cwogUGdTdGF0X0JhY2tlbmRGdW5j dGlvbkVudHJ5Cg== --------------TO0jC2Vg70JKB9MPH0GgeSqf--