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 1n9MjM-0006it-CF for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Jan 2022 07:47:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1n9MjJ-0008Eq-Py for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Jan 2022 07:47:05 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n9MjJ-0008Eb-7u for pgsql-hackers@lists.postgresql.org; Mon, 17 Jan 2022 07:47:05 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1n9MjA-0000RY-H1 for pgsql-hackers@postgresql.org; Mon, 17 Jan 2022 07:47:03 +0000 Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id B994321C2D87; Mon, 17 Jan 2022 10:46:55 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1642405615; bh=GUdEcXruVfNkbBjgxobjPU4mqSINJipBek8J6De5v90=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=G6eB6uSjvtfqiFYD8KCOLzQdT87QQboBuvv/0ojUsWeelB5wo1Uz4ulyA7wFUtmrl 4W1aDxMFQE1c2aVsb5YfGT1f6dsT2u8hqroSQgtFLAQehA7M2vSDU2f7+koVomDK0n wD74OXRTBQtsQS1q6spdP/uO1IDNyB7pMLXERWgc= MIME-Version: 1.0 Date: Mon, 17 Jan 2022 10:46:55 +0300 From: Alexander Pyhalov To: Julien Rouhaud Cc: Daniel Gustafsson , Ilya Gladyshev , pgsql-hackers@postgresql.org Subject: Re: Partial aggregates pushdown In-Reply-To: <20220114121653.mjzqelwgnzwqhkoa@jrouhaud> References: <2486a6db3f068efb97c1277c23402e0d@postgrespro.ru> <504e576d-984f-d73c-2694-8ee9624f8def@enterprisedb.com> <07fa4d5a56f402732acfce25e7207cae@postgrespro.ru> <0fbeb9d7-0a8f-8e2c-0687-2d4c32c66a9c@postgrespro.ru> <05d98f67a4f44b31d90dfb977db4ad71@postgrespro.ru> <317f8de58ce9889e056f2944e200a44d@postgrespro.ru> <2ed9ad03bc17cfb86da900d541a270b0@postgrespro.ru> <20220114121653.mjzqelwgnzwqhkoa@jrouhaud> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <0cc653ad90dbfc5ca0fd8bb1ca57e1a7@postgrespro.ru> X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_88388373736601bba0989923cc796e9f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_88388373736601bba0989923cc796e9f Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Julien Rouhaud писал 2022-01-14 15:16: > Hi, > > On Mon, Nov 15, 2021 at 04:01:51PM +0300, Alexander Pyhalov wrote: >> >> I've updated patch - removed catversion dump. > > This version of the patchset doesn't apply anymore: > > http://cfbot.cputube.org/patch_36_3369.log > === Applying patches on top of PostgreSQL commit ID > 025b920a3d45fed441a0a58fdcdf05b321b1eead === > === applying patch ./0001-Partial-aggregates-push-down-v07.patch > patching file src/bin/pg_dump/pg_dump.c > Hunk #1 succeeded at 13111 (offset -965 lines). > Hunk #2 FAILED at 14167. > Hunk #3 succeeded at 13228 (offset -961 lines). > Hunk #4 succeeded at 13319 (offset -966 lines). > 1 out of 4 hunks FAILED -- saving rejects to file > src/bin/pg_dump/pg_dump.c.rej > > Could you send a rebased version? In the meantime I will switch the cf > entry > to Waiting on Author. Hi. Attaching rebased patch. -- Best regards, Alexander Pyhalov, Postgres Professional --=_88388373736601bba0989923cc796e9f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Partial-aggregates-push-down-v08.patch Content-Disposition: attachment; filename=0001-Partial-aggregates-push-down-v08.patch; size=59073 RnJvbSBkOTIyNzg1M2I0ZWJlYWE4NGNlNGZkOTYyM2IyMTI4Y2Q2YjJlNDk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUaHUsIDE0IE9jdCAyMDIxIDE3OjMwOjM0ICswMzAwClN1YmplY3Q6IFtQ QVRDSF0gUGFydGlhbCBhZ2dyZWdhdGVzIHB1c2ggZG93bgoKLS0tCiBjb250cmliL3Bvc3RncmVz X2Zkdy9kZXBhcnNlLmMgICAgICAgICAgICAgICAgfCAgNTcgKysrKy0KIC4uLi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8IDE4NSArKysrKysrKysrKysrKysrLQog Y29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAgIHwgMTk2ICsrKysr KysrKysrKysrKysrLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwg ICAgIHwgIDI3ICsrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuYyAgICAgICAg ICAgIHwgIDI4ICsrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYWdncmVnYXRlY21kcy5jICAgICAg ICAgIHwgIDIzICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jICAgICAgICAgICAg ICAgfCAgOTYgKysrKysrKysrCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAg ICAgICAgICAgfCAgMjAgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdncmVnYXRlLmRhdCAg ICAgICAgICB8IDEwNiArKysrKy0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0 ZS5oICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg ICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5z Lm91dCAgICAgICAgfCAgIDEgKwogMTIgZmlsZXMgY2hhbmdlZCwgNjcyIGluc2VydGlvbnMoKyks IDgzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFy c2UuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYwppbmRleCBiZjEyZWFjMDI4OC4u NmIxMmI3YmY3NmIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2RlcGFyc2UuYwor KysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMKQEAgLTE5Nyw2ICsxOTcsNyBAQCBz dGF0aWMgYm9vbCBpc19zdWJxdWVyeV92YXIoVmFyICpub2RlLCBSZWxPcHRJbmZvICpmb3JlaWdu cmVsLAogc3RhdGljIHZvaWQgZ2V0X3JlbGF0aW9uX2NvbHVtbl9hbGlhc19pZHMoVmFyICpub2Rl LCBSZWxPcHRJbmZvICpmb3JlaWducmVsLAogCQkJCQkJCQkJCSAgaW50ICpyZWxubywgaW50ICpj b2xubyk7CiAKK3N0YXRpYyBib29sIHBhcnRpYWxfYWdnX29rKEFnZ3JlZiAqYWdnKTsKIAogLyoK ICAqIEV4YW1pbmUgZWFjaCBxdWFsIGNsYXVzZSBpbiBpbnB1dF9jb25kcywgYW5kIGNsYXNzaWZ5 IHRoZW0gaW50byB0d28gZ3JvdXBzLApAQCAtODMyLDggKzgzMywxMCBAQCBmb3JlaWduX2V4cHJf d2Fsa2VyKE5vZGUgKm5vZGUsCiAJCQkJaWYgKCFJU19VUFBFUl9SRUwoZ2xvYl9jeHQtPmZvcmVp Z25yZWwpKQogCQkJCQlyZXR1cm4gZmFsc2U7CiAKLQkJCQkvKiBPbmx5IG5vbi1zcGxpdCBhZ2dy ZWdhdGVzIGFyZSBwdXNoYWJsZS4gKi8KLQkJCQlpZiAoYWdnLT5hZ2dzcGxpdCAhPSBBR0dTUExJ VF9TSU1QTEUpCisJCQkJaWYgKChhZ2ctPmFnZ3NwbGl0ICE9IEFHR1NQTElUX1NJTVBMRSkgJiYg KGFnZy0+YWdnc3BsaXQgIT0gQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwpKQorCQkJCQlyZXR1cm4g ZmFsc2U7CisKKwkJCQlpZiAoYWdnLT5hZ2dzcGxpdCA9PSBBR0dTUExJVF9JTklUSUFMX1NFUklB TCAmJiAhcGFydGlhbF9hZ2dfb2soYWdnKSkKIAkJCQkJcmV0dXJuIGZhbHNlOwogCiAJCQkJLyog QXMgdXN1YWwsIGl0IG11c3QgYmUgc2hpcHBhYmxlLiAqLwpAQCAtMzM0OSw3ICszMzUyLDcgQEAg ZGVwYXJzZUFnZ3JlZihBZ2dyZWYgKm5vZGUsIGRlcGFyc2VfZXhwcl9jeHQgKmNvbnRleHQpCiAJ Ym9vbAkJdXNlX3ZhcmlhZGljOwogCiAJLyogT25seSBiYXNpYywgbm9uLXNwbGl0IGFnZ3JlZ2F0 aW9uIGFjY2VwdGVkLiAqLwotCUFzc2VydChub2RlLT5hZ2dzcGxpdCA9PSBBR0dTUExJVF9TSU1Q TEUpOworCUFzc2VydChub2RlLT5hZ2dzcGxpdCA9PSBBR0dTUExJVF9TSU1QTEUgfHwgbm9kZS0+ YWdnc3BsaXQgPT0gQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwpOwogCiAJLyogQ2hlY2sgaWYgbmVl ZCB0byBwcmludCBWQVJJQURJQyAoY2YuIHJ1bGV1dGlscy5jKSAqLwogCXVzZV92YXJpYWRpYyA9 IG5vZGUtPmFnZ3ZhcmlhZGljOwpAQCAtMzgxOSwzICszODIyLDUxIEBAIGdldF9yZWxhdGlvbl9j b2x1bW5fYWxpYXNfaWRzKFZhciAqbm9kZSwgUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCwKIAkvKiBT aG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBleHByZXNzaW9u IGluIHN1YnF1ZXJ5IG91dHB1dCIpOwogfQorCisvKgorICogQ2hlY2sgdGhhdCBwYXJ0aWFsIGFn Z3JlZ2F0ZSBhZ2cgaXMgZmluZSB0byBwdXNoIGRvd24KKyAqLworc3RhdGljIGJvb2wKK3BhcnRp YWxfYWdnX29rKEFnZ3JlZiAqYWdnKQoreworCUhlYXBUdXBsZQlhZ2d0dXA7CisJRm9ybV9wZ19h Z2dyZWdhdGUgYWdnZm9ybTsKKworCUFzc2VydChhZ2ctPmFnZ3NwbGl0ID09IEFHR1NQTElUX0lO SVRJQUxfU0VSSUFMKTsKKworCS8qIFdlIGRvbid0IHN1cHBvcnQgY29tcGxleCBwYXJ0aWFsIGFn Z3JlZ2F0ZXMgKi8KKwlpZiAoYWdnLT5hZ2dkaXN0aW5jdCB8fCBhZ2ctPmFnZ3ZhcmlhZGljIHx8 IGFnZy0+YWdna2luZCAhPSBBR0dLSU5EX05PUk1BTCB8fCBhZ2ctPmFnZ29yZGVyICE9IE5JTCkK KwkJcmV0dXJuIGZhbHNlOworCisJYWdndHVwID0gU2VhcmNoU3lzQ2FjaGUxKEFHR0ZOT0lELCBP YmplY3RJZEdldERhdHVtKGFnZy0+YWdnZm5vaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo YWdndHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9u ICV1IiwgYWdnLT5hZ2dmbm9pZCk7CisJYWdnZm9ybSA9IChGb3JtX3BnX2FnZ3JlZ2F0ZSkgR0VU U1RSVUNUKGFnZ3R1cCk7CisKKwkvKiBPbmx5IGFnZ3JlZ2F0ZXMsIG1hcmtlZCBhcyBwdXNoZG93 biBzYWZlLCBhcmUgYWxsb3dlZCAqLworCWlmICghYWdnZm9ybS0+YWdncGFydGlhbHB1c2hkb3du c2FmZSkKKwl7CisJCVJlbGVhc2VTeXNDYWNoZShhZ2d0dXApOworCQlyZXR1cm4gZmFsc2U7CisJ fQorCisJLyoKKwkgKiBJZiBhbiBhZ2dyZWdhdGUgcmVxdWlyZXMgc2VyaWFsaXphdGlvbi9kZXNl cmlhbGl6YXRpb24sIHBhcnRpYWwKKwkgKiBjb252ZXJ0ZXIgc2hvdWxkIGJlIGRlZmluZWQKKwkg Ki8KKwlpZiAoYWdnLT5hZ2d0cmFuc3R5cGUgPT0gSU5URVJOQUxPSUQgJiYgYWdnZm9ybS0+YWdn cGFydGlhbGNvbnZlcnRlcmZuID09IEludmFsaWRPaWQpCisJeworCQlSZWxlYXNlU3lzQ2FjaGUo YWdndHVwKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIEluIHRoaXMgY2FzZSB3ZSBjdXJy ZW50bHkgZG9uJ3QgdXNlIGNvbnZlcnRlciAqLworCWlmIChhZ2ctPmFnZ3RyYW5zdHlwZSAhPSBJ TlRFUk5BTE9JRCAmJiBnZXRfZnVuY19yZXR0eXBlKGFnZy0+YWdnZm5vaWQpICE9IGFnZy0+YWdn dHJhbnN0eXBlKQorCXsKKwkJUmVsZWFzZVN5c0NhY2hlKGFnZ3R1cCk7CisJCXJldHVybiBmYWxz ZTsKKwl9CisKKwlSZWxlYXNlU3lzQ2FjaGUoYWdndHVwKTsKKwlyZXR1cm4gdHJ1ZTsKK30KZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IDdk NmY3ZDllM2RmLi41NDliYjliYWU2MSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcv ZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBl Y3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC05MzM2LDEzICs5MzM2LDEzIEBAIFJFU0VUIGVuYWJs ZV9wYXJ0aXRpb253aXNlX2pvaW47CiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSB0ZXN0IHBhcnRpdGlvbndp c2UgYWdncmVnYXRlcwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiIChhIGlu dCwgYiBpbnQsIGMgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOworQ1JFQVRFIFRBQkxFIHBh Z2dfdGFiIChhIGludCwgYiBpbnQsIGMgdGV4dCwgZCBudW1lcmljKSBQQVJUSVRJT04gQlkgUkFO R0UoYSk7CiBDUkVBVEUgVEFCTEUgcGFnZ190YWJfcDEgKExJS0UgcGFnZ190YWIpOwogQ1JFQVRF IFRBQkxFIHBhZ2dfdGFiX3AyIChMSUtFIHBhZ2dfdGFiKTsKIENSRUFURSBUQUJMRSBwYWdnX3Rh Yl9wMyAoTElLRSBwYWdnX3RhYik7Ci1JTlNFUlQgSU5UTyBwYWdnX3RhYl9wMSBTRUxFQ1QgaSAl IDMwLCBpICUgNTAsIHRvX2NoYXIoaS8zMCwgJ0ZNMDAwMCcpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDMwMDApIGkgV0hFUkUgKGkgJSAzMCkgPCAxMDsKLUlOU0VSVCBJTlRPIHBhZ2dfdGFiX3Ay IFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJykgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8IDIwIGFuZCAoaSAlIDMwKSA+ PSAxMDsKLUlOU0VSVCBJTlRPIHBhZ2dfdGFiX3AzIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9f Y2hhcihpLzMwLCAnRk0wMDAwJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVS RSAoaSAlIDMwKSA8IDMwIGFuZCAoaSAlIDMwKSA+PSAyMDsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFi X3AxIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJyksIGkgJSA0 MCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMTA7CitJ TlNFUlQgSU5UTyBwYWdnX3RhYl9wMiBTRUxFQ1QgaSAlIDMwLCBpICUgNTAsIHRvX2NoYXIoaS8z MCwgJ0ZNMDAwMCcpLCBpICUgNDAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVS RSAoaSAlIDMwKSA8IDIwIGFuZCAoaSAlIDMwKSA+PSAxMDsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFi X3AzIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJyksIGkgJSA0 MCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMzAgYW5k IChpICUgMzApID49IDIwOwogLS0gQ3JlYXRlIGZvcmVpZ24gcGFydGl0aW9ucwogQ1JFQVRFIEZP UkVJR04gVEFCTEUgZnBhZ2dfdGFiX3AxIFBBUlRJVElPTiBPRiBwYWdnX3RhYiBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxMCkgU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKHRhYmxlX25hbWUgJ3Bh Z2dfdGFiX3AxJyk7CiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBmcGFnZ190YWJfcDIgUEFSVElUSU9O IE9GIHBhZ2dfdGFiIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCkgU0VSVkVSIGxvb3BiYWNr IE9QVElPTlMgKHRhYmxlX25hbWUgJ3BhZ2dfdGFiX3AyJyk7CkBAIC05NDAxLDggKzk0MDEsOCBA QCBTRUxFQ1QgYSwgc3VtKGIpLCBtaW4oYiksIGNvdW50KCopIEZST00gcGFnZ190YWIgR1JPVVAg QlkgYSBIQVZJTkcgYXZnKGIpIDwgMjIgTwogLS0gU2hvdWxkIGhhdmUgYWxsIHRoZSBjb2x1bW5z IGluIHRoZSB0YXJnZXQgbGlzdCBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uCiBFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCiBTRUxFQ1QgYSwgY291bnQodDEpIEZST00gcGFnZ190YWIgdDEgR1JP VVAgQlkgYSBIQVZJTkcgYXZnKGIpIDwgMjIgT1JERVIgQlkgMTsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog IFNvcnQKICAgIE91dHB1dDogdDEuYSwgKGNvdW50KCgodDEuKik6OnBhZ2dfdGFiKSkpCiAgICBT b3J0IEtleTogdDEuYQpAQCAtOTQxMywyMSArOTQxMywyMSBAQCBTRUxFQ1QgYSwgY291bnQodDEp IEZST00gcGFnZ190YWIgdDEgR1JPVVAgQlkgYSBIQVZJTkcgYXZnKGIpIDwgMjIgT1JERVIgQlkg MTsKICAgICAgICAgICAgICAgIEZpbHRlcjogKGF2Zyh0MS5iKSA8ICcyMic6Om51bWVyaWMpCiAg ICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDEgdDEK ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEuKiwgdDEuYgotICAgICAgICAg ICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIsIGMgRlJPTSBwdWJsaWMucGFnZ190 YWJfcDEKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiLCBjLCBk IEZST00gcHVibGljLnBhZ2dfdGFiX3AxCiAgICAgICAgICAtPiAgSGFzaEFnZ3JlZ2F0ZQogICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV8xLmEsIGNvdW50KCgodDFfMS4qKTo6cGFnZ190YWIpKQog ICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLmEKICAgICAgICAgICAgICAgIEZpbHRlcjog KGF2Zyh0MV8xLmIpIDwgJzIyJzo6bnVtZXJpYykKICAgICAgICAgICAgICAgIC0+ICBGb3JlaWdu IFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9wMiB0MV8xCiAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxXzEuYSwgdDFfMS4qLCB0MV8xLmIKLSAgICAgICAgICAgICAgICAgICAgIFJlbW90 ZSBTUUw6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGljLnBhZ2dfdGFiX3AyCisgICAgICAgICAg ICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYywgZCBGUk9NIHB1YmxpYy5wYWdn X3RhYl9wMgogICAgICAgICAgLT4gIEhhc2hBZ2dyZWdhdGUKICAgICAgICAgICAgICAgIE91dHB1 dDogdDFfMi5hLCBjb3VudCgoKHQxXzIuKik6OnBhZ2dfdGFiKSkKICAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDFfMi5hCiAgICAgICAgICAgICAgICBGaWx0ZXI6IChhdmcodDFfMi5iKSA8ICcy Mic6Om51bWVyaWMpCiAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5m cGFnZ190YWJfcDMgdDFfMgogICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLmEsIHQx XzIuKiwgdDFfMi5iCi0gICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwg YiwgYyBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMworICAgICAgICAgICAgICAgICAgICAgUmVtb3Rl IFNRTDogU0VMRUNUIGEsIGIsIGMsIGQgRlJPTSBwdWJsaWMucGFnZ190YWJfcDMKICgyNSByb3dz KQogCiBTRUxFQ1QgYSwgY291bnQodDEpIEZST00gcGFnZ190YWIgdDEgR1JPVVAgQlkgYSBIQVZJ TkcgYXZnKGIpIDwgMjIgT1JERVIgQlkgMTsKQEAgLTk0NjMsNiArOTQ2MywxNzMgQEAgU0VMRUNU IGIsIGF2ZyhhKSwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgSEFW SU5HIHN1bShhKSA8IDcwMAogICAgICAgICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBv biBmcGFnZ190YWJfcDMgcGFnZ190YWJfMgogKDE1IHJvd3MpCiAKKy0tIEl0J3MgdW5zYWZlIHRv IHB1c2ggZG93biBoYXZpbmcgY2xhdXNlIHdoZW4gdGhlcmUgYXJlIHBhcnRpYWwgYWdncmVnYXRl cworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIGIsIG1heChhKSwgY291bnQo KikgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBiIEhBVklORyBzdW0oYSkgPCA3MDAgT1JERVIgQlkg MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU29ydAorICAgT3V0cHV0OiBwYWdnX3RhYi5iLCAobWF4KHBhZ2dfdGFiLmEpKSwg KGNvdW50KCopKQorICAgU29ydCBLZXk6IHBhZ2dfdGFiLmIKKyAgIC0+ICBGaW5hbGl6ZSBIYXNo QWdncmVnYXRlCisgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiLmIsIG1heChwYWdnX3RhYi5hKSwg Y291bnQoKikKKyAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWIuYgorICAgICAgICAgRmlsdGVy OiAoc3VtKHBhZ2dfdGFiLmEpIDwgNzAwKQorICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAg ICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiBwYWdnX3RhYi5iLCBQQVJUSUFMIG1heChwYWdnX3RhYi5hKSwgUEFSVElBTCBjb3VudCgq KSwgUEFSVElBTCBzdW0ocGFnZ190YWIuYSkKKyAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtl eTogcGFnZ190YWIuYgorICAgICAgICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBw dWJsaWMuZnBhZ2dfdGFiX3AxIHBhZ2dfdGFiCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHBhZ2dfdGFiLmIsIHBhZ2dfdGFiLmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiIEZST00gcHVibGljLnBhZ2dfdGFiX3AxCisgICAgICAg ICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHBhZ2dfdGFiXzEuYiwgUEFSVElBTCBtYXgocGFnZ190YWJfMS5hKSwgUEFSVElBTCBj b3VudCgqKSwgUEFSVElBTCBzdW0ocGFnZ190YWJfMS5hKQorICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiBwYWdnX3RhYl8xLmIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3JlaWdu IFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9wMiBwYWdnX3RhYl8xCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzEuYiwgcGFnZ190YWJfMS5hCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5wYWdn X3RhYl9wMgorICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8yLmIsIFBBUlRJQUwgbWF4KHBhZ2dfdGFi XzIuYSksIFBBUlRJQUwgY291bnQoKiksIFBBUlRJQUwgc3VtKHBhZ2dfdGFiXzIuYSkKKyAgICAg ICAgICAgICAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWJfMi5iCisgICAgICAgICAgICAgICAg ICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDMgcGFnZ190YWJfMgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8yLmIsIHBhZ2dfdGFi XzIuYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIg RlJPTSBwdWJsaWMucGFnZ190YWJfcDMKKygyNiByb3dzKQorCistLSBQYXJ0aWFsIGFnZ3JlZ2F0 ZXMgYXJlIGZpbmUgdG8gcHVzaCBkb3duIHdpdGhvdXQgaGF2aW5nIGNsYXVzZQorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIGIsIG1heChhKSwgY291bnQoKikgRlJPTSBwYWdn X3RhYiBHUk9VUCBCWSBiIE9SREVSIEJZIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0 CisgICBPdXRwdXQ6IHBhZ2dfdGFiLmIsIChtYXgocGFnZ190YWIuYSkpLCAoY291bnQoKikpCisg ICBTb3J0IEtleTogcGFnZ190YWIuYgorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAg ICAgICAgIE91dHB1dDogcGFnZ190YWIuYiwgbWF4KHBhZ2dfdGFiLmEpLCBjb3VudCgqKQorICAg ICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYi5iCisgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAg ICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBh Z2dfdGFiLmIsIChQQVJUSUFMIG1heChwYWdnX3RhYi5hKSksIChQQVJUSUFMIGNvdW50KCopKQor ICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFn Z190YWJfcDEgcGFnZ190YWIpCisgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxF Q1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMSBHUk9VUCBCWSAx CisgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHBhZ2dfdGFiXzEuYiwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzEuYSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uczogQWdncmVnYXRlIG9u IChwdWJsaWMuZnBhZ2dfdGFiX3AyIHBhZ2dfdGFiXzEpCisgICAgICAgICAgICAgICAgICAgICBS ZW1vdGUgU1FMOiBTRUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHB1YmxpYy5wYWdnX3Rh Yl9wMiBHUk9VUCBCWSAxCisgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzIuYiwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFi XzIuYSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9u czogQWdncmVnYXRlIG9uIChwdWJsaWMuZnBhZ2dfdGFiX3AzIHBhZ2dfdGFiXzIpCisgICAgICAg ICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9N IHB1YmxpYy5wYWdnX3RhYl9wMyBHUk9VUCBCWSAxCisoMTkgcm93cykKKworU0VMRUNUIGIsIG1h eChhKSwgY291bnQoKikgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBiIE9SREVSIEJZIDE7CisgYiAg fCBtYXggfCBjb3VudCAKKy0tLS0rLS0tLS0rLS0tLS0tLQorICAwIHwgIDIwIHwgICAgNjAKKyAg MSB8ICAyMSB8ICAgIDYwCisgIDIgfCAgMjIgfCAgICA2MAorICAzIHwgIDIzIHwgICAgNjAKKyAg NCB8ICAyNCB8ICAgIDYwCisgIDUgfCAgMjUgfCAgICA2MAorICA2IHwgIDI2IHwgICAgNjAKKyAg NyB8ICAyNyB8ICAgIDYwCisgIDggfCAgMjggfCAgICA2MAorICA5IHwgIDI5IHwgICAgNjAKKyAx MCB8ICAyMCB8ICAgIDYwCisgMTEgfCAgMjEgfCAgICA2MAorIDEyIHwgIDIyIHwgICAgNjAKKyAx MyB8ICAyMyB8ICAgIDYwCisgMTQgfCAgMjQgfCAgICA2MAorIDE1IHwgIDI1IHwgICAgNjAKKyAx NiB8ICAyNiB8ICAgIDYwCisgMTcgfCAgMjcgfCAgICA2MAorIDE4IHwgIDI4IHwgICAgNjAKKyAx OSB8ICAyOSB8ICAgIDYwCisgMjAgfCAgMjAgfCAgICA2MAorIDIxIHwgIDIxIHwgICAgNjAKKyAy MiB8ICAyMiB8ICAgIDYwCisgMjMgfCAgMjMgfCAgICA2MAorIDI0IHwgIDI0IHwgICAgNjAKKyAy NSB8ICAyNSB8ICAgIDYwCisgMjYgfCAgMjYgfCAgICA2MAorIDI3IHwgIDI3IHwgICAgNjAKKyAy OCB8ICAyOCB8ICAgIDYwCisgMjkgfCAgMjkgfCAgICA2MAorIDMwIHwgIDIwIHwgICAgNjAKKyAz MSB8ICAyMSB8ICAgIDYwCisgMzIgfCAgMjIgfCAgICA2MAorIDMzIHwgIDIzIHwgICAgNjAKKyAz NCB8ICAyNCB8ICAgIDYwCisgMzUgfCAgMjUgfCAgICA2MAorIDM2IHwgIDI2IHwgICAgNjAKKyAz NyB8ICAyNyB8ICAgIDYwCisgMzggfCAgMjggfCAgICA2MAorIDM5IHwgIDI5IHwgICAgNjAKKyA0 MCB8ICAyMCB8ICAgIDYwCisgNDEgfCAgMjEgfCAgICA2MAorIDQyIHwgIDIyIHwgICAgNjAKKyA0 MyB8ICAyMyB8ICAgIDYwCisgNDQgfCAgMjQgfCAgICA2MAorIDQ1IHwgIDI1IHwgICAgNjAKKyA0 NiB8ICAyNiB8ICAgIDYwCisgNDcgfCAgMjcgfCAgICA2MAorIDQ4IHwgIDI4IHwgICAgNjAKKyA0 OSB8ICAyOSB8ICAgIDYwCisoNTAgcm93cykKKworLS0gUGFydGlhbCBhZ2dyZWdhdGVzIGFyZSBm aW5lIHRvIHB1c2ggZG93bgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1h eChhKSwgY291bnQoKiksIHN1bShkKSBGUk9NIHBhZ2dfdGFiOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiBtYXgocGFnZ190 YWIuYSksIGNvdW50KCopLCBzdW0ocGFnZ190YWIuZCkKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAg IC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgIE91dHB1dDogKFBBUlRJQUwgbWF4KHBh Z2dfdGFiLmEpKSwgKFBBUlRJQUwgY291bnQoKikpLCAoUEFSVElBTCBzdW0ocGFnZ190YWIuZCkp CisgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAocHVibGljLmZwYWdnX3Rh Yl9wMSBwYWdnX3RhYikKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBtYXgoYSks IGNvdW50KCopLCBzdW0oZCkgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEKKyAgICAgICAgIC0+ICBG b3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgIE91dHB1dDogKFBBUlRJQUwgbWF4KHBhZ2dfdGFi XzEuYSkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIHN1bShwYWdnX3RhYl8xLmQpKQor ICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFnZ190YWJf cDIgcGFnZ190YWJfMSkKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBtYXgoYSks IGNvdW50KCopLCBzdW0oZCkgRlJPTSBwdWJsaWMucGFnZ190YWJfcDIKKyAgICAgICAgIC0+ICBG b3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgIE91dHB1dDogKFBBUlRJQUwgbWF4KHBhZ2dfdGFi XzIuYSkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIHN1bShwYWdnX3RhYl8yLmQpKQor ICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFnZ190YWJf cDMgcGFnZ190YWJfMikKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBtYXgoYSks IGNvdW50KCopLCBzdW0oZCkgRlJPTSBwdWJsaWMucGFnZ190YWJfcDMKKygxNSByb3dzKQorCitT RUxFQ1QgbWF4KGEpLCBjb3VudCgqKSwgc3VtKGQpIEZST00gcGFnZ190YWI7CisgbWF4IHwgY291 bnQgfCAgc3VtICAKKy0tLS0tKy0tLS0tLS0rLS0tLS0tLQorICAyOSB8ICAzMDAwIHwgNTg1MDAK KygxIHJvdykKKworLS0gU2hvdWxkbid0IHRyeSB0byBwdXNoIGRvd24KK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKK1NFTEVDVCBtYXgoYSksIGNvdW50KGRpc3RpbmN0IGIpIEZST00gcGFn Z190YWI7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiBtYXgocGFnZ190 YWIuYSksIGNvdW50KERJU1RJTkNUIHBhZ2dfdGFiLmIpCisgICAtPiAgQXBwZW5kCisgICAgICAg ICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDEgcGFnZ190YWJfMQorICAg ICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8xLmEsIHBhZ2dfdGFiXzEuYgorICAgICAgICAg ICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEKKyAg ICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9wMiBwYWdnX3RhYl8y CisgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzIuYSwgcGFnZ190YWJfMi5iCisgICAg ICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5wYWdnX3RhYl9w MgorICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AzIHBhZ2df dGFiXzMKKyAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWJfMy5hLCBwYWdnX3RhYl8zLmIK KyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiIEZST00gcHVibGljLnBhZ2df dGFiX3AzCisoMTIgcm93cykKKworU0VMRUNUIG1heChhKSwgY291bnQoZGlzdGluY3QgYikgRlJP TSBwYWdnX3RhYjsKKyBtYXggfCBjb3VudCAKKy0tLS0tKy0tLS0tLS0KKyAgMjkgfCAgICA1MAor KDEgcm93KQorCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBhY2Nlc3MgcmlnaHRzIGFuZCBzdXBlcnVzZXIK IC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVz X2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKaW5kZXggMDlhM2Y1 ZTIzY2IuLjNjY2VmZjRkMDhhIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0 Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAt MTgsNiArMTgsOCBAQAogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzcy5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfYWdncmVnYXRlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbi5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtNDgsNiArNTAsNyBAQAogI2luY2x1ZGUg InV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NhbXBsaW5nLmgiCiAjaW5jbHVkZSAidXRp bHMvc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCiBQR19NT0RVTEVf TUFHSUM7CiAKQEAgLTgwLDcgKzgzLDEyIEBAIGVudW0gRmR3U2NhblByaXZhdGVJbmRleAogCSAq IFN0cmluZyBkZXNjcmliaW5nIGpvaW4gaS5lLiBuYW1lcyBvZiByZWxhdGlvbnMgYmVpbmcgam9p bmVkIGFuZCB0eXBlcwogCSAqIG9mIGpvaW4sIGFkZGVkIHdoZW4gdGhlIHNjYW4gaXMgam9pbgog CSAqLwotCUZkd1NjYW5Qcml2YXRlUmVsYXRpb25zCisJRmR3U2NhblByaXZhdGVSZWxhdGlvbnMs CisKKwkvKgorCSAqIExpc3Qgb2YgZnVuY3Rpb25zIHRvIGNvbnZlcnQgcGFydGlhbCBhZ2dyZWdh dGUgcmVzdWx0CisJICovCisJRmR3U2NhblByaXZhdGVDb252ZXJ0b3JzCiB9OwogCiAvKgpAQCAt MTQzLDYgKzE1MSw3IEBAIHR5cGVkZWYgc3RydWN0IFBnRmR3U2NhblN0YXRlCiAJLyogZXh0cmFj dGVkIGZkd19wcml2YXRlIGRhdGEgKi8KIAljaGFyCSAgICpxdWVyeTsJCQkvKiB0ZXh0IG9mIFNF TEVDVCBjb21tYW5kICovCiAJTGlzdAkgICAqcmV0cmlldmVkX2F0dHJzOwkvKiBsaXN0IG9mIHJl dHJpZXZlZCBhdHRyaWJ1dGUgbnVtYmVycyAqLworCUxpc3QJICAgKmNvbnZfbGlzdDsJCS8qIGxp c3Qgb2YgY29udmVydGVycyAqLwogCiAJLyogZm9yIHJlbW90ZSBxdWVyeSBleGVjdXRpb24gKi8K IAlQR2Nvbm4JICAgKmNvbm47CQkJLyogY29ubmVjdGlvbiBmb3IgdGhlIHNjYW4gKi8KQEAgLTQ3 NCw2ICs0ODMsNyBAQCBzdGF0aWMgdm9pZCBzdG9yZV9yZXR1cm5pbmdfcmVzdWx0KFBnRmR3TW9k aWZ5U3RhdGUgKmZtc3RhdGUsCiAJCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpzbG90LCBQR3Jl c3VsdCAqcmVzKTsKIHN0YXRpYyB2b2lkIGZpbmlzaF9mb3JlaWduX21vZGlmeShQZ0Zkd01vZGlm eVN0YXRlICpmbXN0YXRlKTsKIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGVfcXVlcnkoUGdGZHdNb2Rp ZnlTdGF0ZSAqZm1zdGF0ZSk7CitzdGF0aWMgTGlzdCAqYnVpbGRfY29udl9saXN0KFJlbE9wdElu Zm8gKmZvcmVpZ25yZWwpOwogc3RhdGljIExpc3QgKmJ1aWxkX3JlbW90ZV9yZXR1cm5pbmcoSW5k ZXggcnRpbmRleCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJTGlzdCAqcmV0dXJuaW5nTGlzdCk7 CiBzdGF0aWMgdm9pZCByZWJ1aWxkX2Zkd19zY2FuX3RsaXN0KEZvcmVpZ25TY2FuICpmc2Nhbiwg TGlzdCAqdGxpc3QpOwpAQCAtNTEwLDYgKzUyMCw3IEBAIHN0YXRpYyBIZWFwVHVwbGUgbWFrZV90 dXBsZV9mcm9tX3Jlc3VsdF9yb3coUEdyZXN1bHQgKnJlcywKIAkJCQkJCQkJCQkJUmVsYXRpb24g cmVsLAogCQkJCQkJCQkJCQlBdHRJbk1ldGFkYXRhICphdHRpbm1ldGEsCiAJCQkJCQkJCQkJCUxp c3QgKnJldHJpZXZlZF9hdHRycywKKwkJCQkJCQkJCQkJTGlzdCAqY29udl9saXN0LAogCQkJCQkJ CQkJCQlGb3JlaWduU2NhblN0YXRlICpmc3N0YXRlLAogCQkJCQkJCQkJCQlNZW1vcnlDb250ZXh0 IHRlbXBfY29udGV4dCk7CiBzdGF0aWMgdm9pZCBjb252ZXJzaW9uX2Vycm9yX2NhbGxiYWNrKHZv aWQgKmFyZyk7CkBAIC01MTcsNyArNTI4LDcgQEAgc3RhdGljIGJvb2wgZm9yZWlnbl9qb2luX29r KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpqb2lucmVsLAogCQkJCQkJCUpvaW5UeXBl IGpvaW50eXBlLCBSZWxPcHRJbmZvICpvdXRlcnJlbCwgUmVsT3B0SW5mbyAqaW5uZXJyZWwsCiAJ CQkJCQkJSm9pblBhdGhFeHRyYURhdGEgKmV4dHJhKTsKIHN0YXRpYyBib29sIGZvcmVpZ25fZ3Jv dXBpbmdfb2soUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmdyb3VwZWRfcmVsLAotCQkJ CQkJCQlOb2RlICpoYXZpbmdRdWFsKTsKKwkJCQkJCQkJTm9kZSAqaGF2aW5nUXVhbCwgYm9vbCBw YXJ0aWFsKTsKIHN0YXRpYyBMaXN0ICpnZXRfdXNlZnVsX3BhdGhrZXlzX2Zvcl9yZWxhdGlvbihQ bGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJICBSZWxPcHRJbmZvICpyZWwpOwogc3RhdGlj IExpc3QgKmdldF91c2VmdWxfZWNzX2Zvcl9yZWxhdGlvbihQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsKTsKQEAgLTUyNiw3ICs1MzcsOCBAQCBzdGF0aWMgdm9pZCBhZGRfcGF0aHNf d2l0aF9wYXRoa2V5c19mb3JfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWws CiBzdGF0aWMgdm9pZCBhZGRfZm9yZWlnbl9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9v dCwKIAkJCQkJCQkJCSAgIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCQkJCSAgIFJlbE9w dEluZm8gKmdyb3VwZWRfcmVsLAotCQkJCQkJCQkJICAgR3JvdXBQYXRoRXh0cmFEYXRhICpleHRy YSk7CisJCQkJCQkJCQkgICBHcm91cFBhdGhFeHRyYURhdGEgKmV4dHJhLAorCQkJCQkJCQkJICAg Ym9vbCBwYXJ0aWFsKTsKIHN0YXRpYyB2b2lkIGFkZF9mb3JlaWduX29yZGVyZWRfcGF0aHMoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJ CQkJCSAgUmVsT3B0SW5mbyAqb3JkZXJlZF9yZWwpOwpAQCAtNTQxLDcgKzU1Myw2IEBAIHN0YXRp YyB2b2lkIG1lcmdlX2Zkd19vcHRpb25zKFBnRmR3UmVsYXRpb25JbmZvICpmcGluZm8sCiAJCQkJ CQkJICBjb25zdCBQZ0Zkd1JlbGF0aW9uSW5mbyAqZnBpbmZvX2kpOwogc3RhdGljIGludAlnZXRf YmF0Y2hfc2l6ZV9vcHRpb24oUmVsYXRpb24gcmVsKTsKIAotCiAvKgogICogRm9yZWlnbi1kYXRh IHdyYXBwZXIgaGFuZGxlciBmdW5jdGlvbjogcmV0dXJuIGEgc3RydWN0IHdpdGggcG9pbnRlcnMK ICAqIHRvIG15IGNhbGxiYWNrIHJvdXRpbmVzLgpAQCAtMTIzMyw2ICsxMjQ0LDcgQEAgcG9zdGdy ZXNHZXRGb3JlaWduUGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAlMaXN0CSAgICpsb2NhbF9leHBy cyA9IE5JTDsKIAlMaXN0CSAgICpwYXJhbXNfbGlzdCA9IE5JTDsKIAlMaXN0CSAgICpmZHdfc2Nh bl90bGlzdCA9IE5JTDsKKwlMaXN0CSAgICpmZHdfY29udl9saXN0ID0gTklMOwogCUxpc3QJICAg KmZkd19yZWNoZWNrX3F1YWxzID0gTklMOwogCUxpc3QJICAgKnJldHJpZXZlZF9hdHRyczsKIAlT dHJpbmdJbmZvRGF0YSBzcWw7CkBAIC0xMzM2LDYgKzEzNDgsOSBAQCBwb3N0Z3Jlc0dldEZvcmVp Z25QbGFuKFBsYW5uZXJJbmZvICpyb290LAogCQkvKiBCdWlsZCB0aGUgbGlzdCBvZiBjb2x1bW5z IHRvIGJlIGZldGNoZWQgZnJvbSB0aGUgZm9yZWlnbiBzZXJ2ZXIuICovCiAJCWZkd19zY2FuX3Rs aXN0ID0gYnVpbGRfdGxpc3RfdG9fZGVwYXJzZShmb3JlaWducmVsKTsKIAorCQkvKiBCdWlsZCB0 aGUgbGlzdCBvZiBjb252ZXJ0ZXJzIGZvciBwYXJ0aWFsIGFnZ3JlZ2F0ZXMuICovCisJCWZkd19j b252X2xpc3QgPSBidWlsZF9jb252X2xpc3QoZm9yZWlnbnJlbCk7CisKIAkJLyoKIAkJICogRW5z dXJlIHRoYXQgdGhlIG91dGVyIHBsYW4gcHJvZHVjZXMgYSB0dXBsZSB3aG9zZSBkZXNjcmlwdG9y CiAJCSAqIG1hdGNoZXMgb3VyIHNjYW4gdHVwbGUgc2xvdC4gIEFsc28sIHJlbW92ZSB0aGUgbG9j YWwgY29uZGl0aW9ucwpAQCAtMTQxNSw2ICsxNDMwLDggQEAgcG9zdGdyZXNHZXRGb3JlaWduUGxh bihQbGFubmVySW5mbyAqcm9vdCwKIAlpZiAoSVNfSk9JTl9SRUwoZm9yZWlnbnJlbCkgfHwgSVNf VVBQRVJfUkVMKGZvcmVpZ25yZWwpKQogCQlmZHdfcHJpdmF0ZSA9IGxhcHBlbmQoZmR3X3ByaXZh dGUsCiAJCQkJCQkJICBtYWtlU3RyaW5nKGZwaW5mby0+cmVsYXRpb25fbmFtZSkpOworCWlmIChJ U19VUFBFUl9SRUwoZm9yZWlnbnJlbCkpCisJCWZkd19wcml2YXRlID0gbGFwcGVuZChmZHdfcHJp dmF0ZSwgZmR3X2NvbnZfbGlzdCk7CiAKIAkvKgogCSAqIENyZWF0ZSB0aGUgRm9yZWlnblNjYW4g bm9kZSBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uLgpAQCAtMTQzMyw2ICsxNDUwLDQ4IEBAIHBvc3Rn cmVzR2V0Rm9yZWlnblBsYW4oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJb3V0ZXJfcGxhbik7 CiB9CiAKKy8qCisgKiBHZW5lcmF0ZSBhdHRpbm1ldGEgaWYgdGhlcmUgYXJlIHNvbWUgY29udmVy dGVyczoKKyAqIHRoZXkgYXJlIGV4cGVjdGVkIHRvIHJldHVybiBCWVRFQSwgYnV0IHJlYWwgaW5w dXQgdHlwZSBpcyBsaWtlbHkgZGlmZmVyZW50LgorICovCitzdGF0aWMgQXR0SW5NZXRhZGF0YSAq CitnZXRfcmN2ZF9hdHRpbm1ldGEoVHVwbGVEZXNjIHR1cGRlc2MsIExpc3QgKmNvbnZfbGlzdCkK K3sKKwlUdXBsZURlc2MJcmN2ZF90dXBkZXNjOworCisJQXNzZXJ0KGNvbnZfbGlzdCAhPSBOSUwp OworCisJcmN2ZF90dXBkZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weSh0dXBkZXNjKTsKKwlmb3Ig KGludCBpID0gMDsgaSA8IHJjdmRfdHVwZGVzYy0+bmF0dHM7IGkrKykKKwl7CisJCU9pZAkJCWNv bnZlcnRlciA9IEludmFsaWRPaWQ7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVz Y0F0dHIocmN2ZF90dXBkZXNjLCBpKTsKKworCQljb252ZXJ0ZXIgPSBsaXN0X250aF9vaWQoY29u dl9saXN0LCBpKTsKKwkJaWYgKGNvbnZlcnRlciAhPSBJbnZhbGlkT2lkKQorCQl7CisJCQlIZWFw VHVwbGUJcHJvY3R1cDsKKwkJCUZvcm1fcGdfcHJvYyBwcm9jZm9ybTsKKworCQkJcHJvY3R1cCA9 IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBPYmplY3RJZEdldERhdHVtKGNvbnZlcnRlcikpOwor CisJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocHJvY3R1cCkpCisJCQkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9uICV1IiwgY29udmVydGVyKTsKKworCQkJcHJv Y2Zvcm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY3R1cCk7CisKKwkJCWlmIChwcm9j Zm9ybS0+cHJvbmFyZ3MgIT0gMSkKKwkJCQllbG9nKEVSUk9SLCAiY29udmVydGVyICVzIGlzIGV4 cGVjdGVkIHRvIGhhdmUgb25lIGFyZ3VtZW50IiwgTmFtZVN0cihwcm9jZm9ybS0+cHJvbmFtZSkp OworCisJCQlhdHQtPmF0dHR5cGlkID0gcHJvY2Zvcm0tPnByb2FyZ3R5cGVzLnZhbHVlc1swXTsK KworCQkJUmVsZWFzZVN5c0NhY2hlKHByb2N0dXApOworCQl9CisJfQorCisJcmV0dXJuIFR1cGxl RGVzY0dldEF0dEluTWV0YWRhdGEocmN2ZF90dXBkZXNjKTsKK30KKwogLyoKICAqIENvbnN0cnVj dCBhIHR1cGxlIGRlc2NyaXB0b3IgZm9yIHRoZSBzY2FuIHR1cGxlcyBoYW5kbGVkIGJ5IGEgZm9y ZWlnbiBqb2luLgogICovCkBAIC0xNTQ1LDYgKzE2MDQsMTIgQEAgcG9zdGdyZXNCZWdpbkZvcmVp Z25TY2FuKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCQkgRmR3 U2NhblByaXZhdGVTZWxlY3RTcWwpKTsKIAlmc3N0YXRlLT5yZXRyaWV2ZWRfYXR0cnMgPSAoTGlz dCAqKSBsaXN0X250aChmc3BsYW4tPmZkd19wcml2YXRlLAogCQkJCQkJCQkJCQkJIEZkd1NjYW5Q cml2YXRlUmV0cmlldmVkQXR0cnMpOworCisJaWYgKGxpc3RfbGVuZ3RoKGZzcGxhbi0+ZmR3X3By aXZhdGUpID4gRmR3U2NhblByaXZhdGVDb252ZXJ0b3JzKQorCQlmc3N0YXRlLT5jb252X2xpc3Qg PSAoTGlzdCAqKSBsaXN0X250aChmc3BsYW4tPmZkd19wcml2YXRlLAorCQkJCQkJCQkJCQkgICBG ZHdTY2FuUHJpdmF0ZUNvbnZlcnRvcnMpOworCisKIAlmc3N0YXRlLT5mZXRjaF9zaXplID0gaW50 VmFsKGxpc3RfbnRoKGZzcGxhbi0+ZmR3X3ByaXZhdGUsCiAJCQkJCQkJCQkJICBGZHdTY2FuUHJp dmF0ZUZldGNoU2l6ZSkpOwogCkBAIC0xNTcxLDcgKzE2MzYsMTAgQEAgcG9zdGdyZXNCZWdpbkZv cmVpZ25TY2FuKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUsIGludCBlZmxhZ3MpCiAJCWZzc3RhdGUt PnR1cGRlc2MgPSBnZXRfdHVwZGVzY19mb3Jfam9pbl9zY2FuX3R1cGxlcyhub2RlKTsKIAl9CiAK LQlmc3N0YXRlLT5hdHRpbm1ldGEgPSBUdXBsZURlc2NHZXRBdHRJbk1ldGFkYXRhKGZzc3RhdGUt PnR1cGRlc2MpOworCWlmIChmc3N0YXRlLT5jb252X2xpc3QgIT0gTklMKQorCQlmc3N0YXRlLT5h dHRpbm1ldGEgPSBnZXRfcmN2ZF9hdHRpbm1ldGEoZnNzdGF0ZS0+dHVwZGVzYywgZnNzdGF0ZS0+ Y29udl9saXN0KTsKKwllbHNlCisJCWZzc3RhdGUtPmF0dGlubWV0YSA9IFR1cGxlRGVzY0dldEF0 dEluTWV0YWRhdGEoZnNzdGF0ZS0+dHVwZGVzYyk7CiAKIAkvKgogCSAqIFByZXBhcmUgZm9yIHBy b2Nlc3Npbmcgb2YgcGFyYW1ldGVycyB1c2VkIGluIHJlbW90ZSBxdWVyeSwgaWYgYW55LgpAQCAt MzgyMiw2ICszODkwLDcgQEAgZmV0Y2hfbW9yZV9kYXRhKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUp CiAJCQkJCQkJCQkJICAgZnNzdGF0ZS0+cmVsLAogCQkJCQkJCQkJCSAgIGZzc3RhdGUtPmF0dGlu bWV0YSwKIAkJCQkJCQkJCQkgICBmc3N0YXRlLT5yZXRyaWV2ZWRfYXR0cnMsCisJCQkJCQkJCQkJ ICAgZnNzdGF0ZS0+Y29udl9saXN0LAogCQkJCQkJCQkJCSAgIG5vZGUsCiAJCQkJCQkJCQkJICAg ZnNzdGF0ZS0+dGVtcF9jeHQpOwogCQl9CkBAIC00MzA5LDYgKzQzNzgsNyBAQCBzdG9yZV9yZXR1 cm5pbmdfcmVzdWx0KFBnRmR3TW9kaWZ5U3RhdGUgKmZtc3RhdGUsCiAJCQkJCQkJCQkJCWZtc3Rh dGUtPnJlbCwKIAkJCQkJCQkJCQkJZm1zdGF0ZS0+YXR0aW5tZXRhLAogCQkJCQkJCQkJCQlmbXN0 YXRlLT5yZXRyaWV2ZWRfYXR0cnMsCisJCQkJCQkJCQkJCU5JTCwKIAkJCQkJCQkJCQkJTlVMTCwK IAkJCQkJCQkJCQkJZm1zdGF0ZS0+dGVtcF9jeHQpOwogCkBAIC00NjAzLDYgKzQ2NzMsNyBAQCBn ZXRfcmV0dXJuaW5nX2RhdGEoRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJCQkJCWRt c3RhdGUtPnJlbCwKIAkJCQkJCQkJCQkJCWRtc3RhdGUtPmF0dGlubWV0YSwKIAkJCQkJCQkJCQkJ CWRtc3RhdGUtPnJldHJpZXZlZF9hdHRycywKKwkJCQkJCQkJCQkJCU5JTCwKIAkJCQkJCQkJCQkJ CW5vZGUsCiAJCQkJCQkJCQkJCQlkbXN0YXRlLT50ZW1wX2N4dCk7CiAJCQlFeGVjU3RvcmVIZWFw VHVwbGUobmV3dHVwLCBzbG90LCBmYWxzZSk7CkBAIC01MTgzLDYgKzUyNTQsNyBAQCBhbmFseXpl X3Jvd19wcm9jZXNzb3IoUEdyZXN1bHQgKnJlcywgaW50IHJvdywgUGdGZHdBbmFseXplU3RhdGUg KmFzdGF0ZSkKIAkJCQkJCQkJCQkJCQkgICBhc3RhdGUtPnJlbCwKIAkJCQkJCQkJCQkJCQkgICBh c3RhdGUtPmF0dGlubWV0YSwKIAkJCQkJCQkJCQkJCQkgICBhc3RhdGUtPnJldHJpZXZlZF9hdHRy cywKKwkJCQkJCQkJCQkJCQkgICBOSUwsCiAJCQkJCQkJCQkJCQkJICAgTlVMTCwKIAkJCQkJCQkJ CQkJCQkgICBhc3RhdGUtPnRlbXBfY3h0KTsKIApAQCAtNjA4Myw3ICs2MTU1LDcgQEAgcG9zdGdy ZXNHZXRGb3JlaWduSm9pblBhdGhzKFBsYW5uZXJJbmZvICpyb290LAogICovCiBzdGF0aWMgYm9v bAogZm9yZWlnbl9ncm91cGluZ19vayhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqZ3Jv dXBlZF9yZWwsCi0JCQkJCU5vZGUgKmhhdmluZ1F1YWwpCisJCQkJCU5vZGUgKmhhdmluZ1F1YWws IGJvb2wgcGFydGlhbCkKIHsKIAlRdWVyeQkgICAqcXVlcnkgPSByb290LT5wYXJzZTsKIAlQZ0Zk d1JlbGF0aW9uSW5mbyAqZnBpbmZvID0gKFBnRmR3UmVsYXRpb25JbmZvICopIGdyb3VwZWRfcmVs LT5mZHdfcHJpdmF0ZTsKQEAgLTYwOTcsNiArNjE2OSwxMSBAQCBmb3JlaWduX2dyb3VwaW5nX29r KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKIAlpZiAocXVlcnkt Pmdyb3VwaW5nU2V0cykKIAkJcmV0dXJuIGZhbHNlOwogCisKKwkvKiBJdCdzIHVuc2FmZSB0byBw dXNoIGhhdmluZyBzdGF0ZW1lbnRzIHdpdGggcGFydGlhbCBhZ2dyZWdhdGVzICovCisJaWYgKHBh cnRpYWwgJiYgaGF2aW5nUXVhbCkKKwkJcmV0dXJuIGZhbHNlOworCiAJLyogR2V0IHRoZSBmcGlu Zm8gb2YgdGhlIHVuZGVybHlpbmcgc2NhbiByZWxhdGlvbi4gKi8KIAlvZnBpbmZvID0gKFBnRmR3 UmVsYXRpb25JbmZvICopIGZwaW5mby0+b3V0ZXJyZWwtPmZkd19wcml2YXRlOwogCkBAIC02MzM2 LDYgKzY0MTMsNyBAQCBwb3N0Z3Jlc0dldEZvcmVpZ25VcHBlclBhdGhzKFBsYW5uZXJJbmZvICpy b290LCBVcHBlclJlbGF0aW9uS2luZCBzdGFnZSwKIAogCS8qIElnbm9yZSBzdGFnZXMgd2UgZG9u J3Qgc3VwcG9ydDsgYW5kIHNraXAgYW55IGR1cGxpY2F0ZSBjYWxscy4gKi8KIAlpZiAoKHN0YWdl ICE9IFVQUEVSUkVMX0dST1VQX0FHRyAmJgorCQkgc3RhZ2UgIT0gVVBQRVJSRUxfUEFSVElBTF9H Uk9VUF9BR0cgJiYKIAkJIHN0YWdlICE9IFVQUEVSUkVMX09SREVSRUQgJiYKIAkJIHN0YWdlICE9 IFVQUEVSUkVMX0ZJTkFMKSB8fAogCQlvdXRwdXRfcmVsLT5mZHdfcHJpdmF0ZSkKQEAgLTYzNTAs NyArNjQyOCwxMSBAQCBwb3N0Z3Jlc0dldEZvcmVpZ25VcHBlclBhdGhzKFBsYW5uZXJJbmZvICpy b290LCBVcHBlclJlbGF0aW9uS2luZCBzdGFnZSwKIAl7CiAJCWNhc2UgVVBQRVJSRUxfR1JPVVBf QUdHOgogCQkJYWRkX2ZvcmVpZ25fZ3JvdXBpbmdfcGF0aHMocm9vdCwgaW5wdXRfcmVsLCBvdXRw dXRfcmVsLAotCQkJCQkJCQkJICAgKEdyb3VwUGF0aEV4dHJhRGF0YSAqKSBleHRyYSk7CisJCQkJ CQkJCQkgICAoR3JvdXBQYXRoRXh0cmFEYXRhICopIGV4dHJhLCBmYWxzZSk7CisJCQlicmVhazsK KwkJY2FzZSBVUFBFUlJFTF9QQVJUSUFMX0dST1VQX0FHRzoKKwkJCWFkZF9mb3JlaWduX2dyb3Vw aW5nX3BhdGhzKHJvb3QsIGlucHV0X3JlbCwgb3V0cHV0X3JlbCwKKwkJCQkJCQkJCSAgIChHcm91 cFBhdGhFeHRyYURhdGEgKikgZXh0cmEsIHRydWUpOwogCQkJYnJlYWs7CiAJCWNhc2UgVVBQRVJS RUxfT1JERVJFRDoKIAkJCWFkZF9mb3JlaWduX29yZGVyZWRfcGF0aHMocm9vdCwgaW5wdXRfcmVs LCBvdXRwdXRfcmVsKTsKQEAgLTYzNzUsNyArNjQ1Nyw4IEBAIHBvc3RncmVzR2V0Rm9yZWlnblVw cGVyUGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFVwcGVyUmVsYXRpb25LaW5kIHN0YWdlLAogc3Rh dGljIHZvaWQKIGFkZF9mb3JlaWduX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCQkgICBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwK LQkJCQkJCSAgIEdyb3VwUGF0aEV4dHJhRGF0YSAqZXh0cmEpCisJCQkJCQkgICBHcm91cFBhdGhF eHRyYURhdGEgKmV4dHJhLAorCQkJCQkJICAgYm9vbCBwYXJ0aWFsKQogewogCVF1ZXJ5CSAgICpw YXJzZSA9IHJvb3QtPnBhcnNlOwogCVBnRmR3UmVsYXRpb25JbmZvICppZnBpbmZvID0gaW5wdXRf cmVsLT5mZHdfcHJpdmF0ZTsKQEAgLTYzOTEsOCArNjQ3NCw5IEBAIGFkZF9mb3JlaWduX2dyb3Vw aW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCSFy b290LT5oYXNIYXZpbmdRdWFsKQogCQlyZXR1cm47CiAKLQlBc3NlcnQoZXh0cmEtPnBhdHlwZSA9 PSBQQVJUSVRJT05XSVNFX0FHR1JFR0FURV9OT05FIHx8Ci0JCSAgIGV4dHJhLT5wYXR5cGUgPT0g UEFSVElUSU9OV0lTRV9BR0dSRUdBVEVfRlVMTCk7CisJQXNzZXJ0KCgoZXh0cmEtPnBhdHlwZSA9 PSBQQVJUSVRJT05XSVNFX0FHR1JFR0FURV9OT05FIHx8CisJCQkgZXh0cmEtPnBhdHlwZSA9PSBQ QVJUSVRJT05XSVNFX0FHR1JFR0FURV9GVUxMKSAmJiAhcGFydGlhbCkgfHwKKwkJICAgKGV4dHJh LT5wYXR5cGUgPT0gUEFSVElUSU9OV0lTRV9BR0dSRUdBVEVfUEFSVElBTCAmJiBwYXJ0aWFsKSk7 CiAKIAkvKiBzYXZlIHRoZSBpbnB1dF9yZWwgYXMgb3V0ZXJyZWwgaW4gZnBpbmZvICovCiAJZnBp bmZvLT5vdXRlcnJlbCA9IGlucHV0X3JlbDsKQEAgLTY0MTIsNyArNjQ5Niw3IEBAIGFkZF9mb3Jl aWduX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9y ZWwsCiAJICogVXNlIEhBVklORyBxdWFsIGZyb20gZXh0cmEuIEluIGNhc2Ugb2YgY2hpbGQgcGFy dGl0aW9uLCBpdCB3aWxsIGhhdmUKIAkgKiB0cmFuc2xhdGVkIFZhcnMuCiAJICovCi0JaWYgKCFm b3JlaWduX2dyb3VwaW5nX29rKHJvb3QsIGdyb3VwZWRfcmVsLCBleHRyYS0+aGF2aW5nUXVhbCkp CisJaWYgKCFmb3JlaWduX2dyb3VwaW5nX29rKHJvb3QsIGdyb3VwZWRfcmVsLCBleHRyYS0+aGF2 aW5nUXVhbCwgcGFydGlhbCkpCiAJCXJldHVybjsKIAogCS8qCkBAIC03MTA4LDYgKzcxOTIsMzAg QEAgY29tcGxldGVfcGVuZGluZ19yZXF1ZXN0KEFzeW5jUmVxdWVzdCAqYXJlcSkKIAkJCQkJCQkg IFR1cElzTnVsbChhcmVxLT5yZXN1bHQpID8gMC4wIDogMS4wKTsKIH0KIAorLyoKKyAqIEludGVy ZmFjZSB0byBmbWdyIHRvIGNhbGwgY29udmVydGVycworICovCitzdGF0aWMgRGF0dW0KK2NhbGxf Y29udmVydGVyKE9pZCBjb252ZXJ0ZXIsIE9pZCBjb2xsYXRpb24sIERhdHVtIHZhbHVlLCBib29s IGlzbnVsbCwgYm9vbCAqcmVzX2lzbnVsbCkKK3sKKwlMT0NBTF9GQ0lORk8oZmNpbmZvLCAxKTsK KwlGbWdySW5mbwlmbGluZm87CisJRGF0dW0JCXJlc3VsdDsKKworCWZtZ3JfaW5mbyhjb252ZXJ0 ZXIsICZmbGluZm8pOworCisJSW5pdEZ1bmN0aW9uQ2FsbEluZm9EYXRhKCpmY2luZm8sICZmbGlu Zm8sIDEsIGNvbGxhdGlvbiwgTlVMTCwgTlVMTCk7CisKKwlmY2luZm8tPmFyZ3NbMF0udmFsdWUg PSB2YWx1ZTsKKwlmY2luZm8tPmFyZ3NbMF0uaXNudWxsID0gaXNudWxsOworCisJcmVzdWx0ID0g RnVuY3Rpb25DYWxsSW52b2tlKGZjaW5mbyk7CisKKwlpZiAocmVzX2lzbnVsbCkKKwkJKnJlc19p c251bGwgPSBmY2luZm8tPmlzbnVsbDsKKwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgogICogQ3Jl YXRlIGEgdHVwbGUgZnJvbSB0aGUgc3BlY2lmaWVkIHJvdyBvZiB0aGUgUEdyZXN1bHQuCiAgKgpA QCAtNzEyNyw2ICs3MjM1LDcgQEAgbWFrZV90dXBsZV9mcm9tX3Jlc3VsdF9yb3coUEdyZXN1bHQg KnJlcywKIAkJCQkJCSAgIFJlbGF0aW9uIHJlbCwKIAkJCQkJCSAgIEF0dEluTWV0YWRhdGEgKmF0 dGlubWV0YSwKIAkJCQkJCSAgIExpc3QgKnJldHJpZXZlZF9hdHRycywKKwkJCQkJCSAgIExpc3Qg KmNvbnZfbGlzdCwKIAkJCQkJCSAgIEZvcmVpZ25TY2FuU3RhdGUgKmZzc3RhdGUsCiAJCQkJCQkg ICBNZW1vcnlDb250ZXh0IHRlbXBfY29udGV4dCkKIHsKQEAgLTcyMDksNiArNzMxOCwyMCBAQCBt YWtlX3R1cGxlX2Zyb21fcmVzdWx0X3JvdyhQR3Jlc3VsdCAqcmVzLAogCQkJCQkJCQkJCQkgIHZh bHN0ciwKIAkJCQkJCQkJCQkJICBhdHRpbm1ldGEtPmF0dGlvcGFyYW1zW2kgLSAxXSwKIAkJCQkJ CQkJCQkJICBhdHRpbm1ldGEtPmF0dHR5cG1vZHNbaSAtIDFdKTsKKwkJCWlmIChjb252X2xpc3Qg IT0gTklMKQorCQkJeworCQkJCU9pZAkJCWNvbnZlcnRlciA9IGxpc3RfbnRoX29pZChjb252X2xp c3QsIGkgLSAxKTsKKworCQkJCWlmIChjb252ZXJ0ZXIgIT0gSW52YWxpZE9pZCkKKwkJCQl7CisJ CQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSk7CisJ CQkJCWJvb2wJCXJlc19pc251bGw7CisKKwkJCQkJdmFsdWVzW2kgLSAxXSA9IGNhbGxfY29udmVy dGVyKGNvbnZlcnRlciwgYXR0LT5hdHRjb2xsYXRpb24sIHZhbHVlc1tpIC0gMV0sIG51bGxzW2kg LSAxXSwgJnJlc19pc251bGwpOworCisJCQkJCW51bGxzW2kgLSAxXSA9IHJlc19pc251bGw7CisJ CQkJfQorCQkJfQogCQl9CiAJCWVsc2UgaWYgKGkgPT0gU2VsZkl0ZW1Qb2ludGVyQXR0cmlidXRl TnVtYmVyKQogCQl7CkBAIC03NDcyLDMgKzc1OTUsNTQgQEAgZ2V0X2JhdGNoX3NpemVfb3B0aW9u KFJlbGF0aW9uIHJlbCkKIAogCXJldHVybiBiYXRjaF9zaXplOwogfQorCisvKgorICogRm9yIFVQ UEVSX1JFTCBidWlsZCBhIGxpc3Qgb2YgY29udmVydGVycywgY29ycmVzcG9uZGluZyB0byB0bGlz dCBlbnRyaWVzLgorICovCitzdGF0aWMgTGlzdCAqCitidWlsZF9jb252X2xpc3QoUmVsT3B0SW5m byAqZm9yZWlnbnJlbCkKK3sKKwlMaXN0CSAgICpjb252X2xpc3QgPSBOSUw7CisJUGdGZHdSZWxh dGlvbkluZm8gKmZwaW5mbyA9IChQZ0Zkd1JlbGF0aW9uSW5mbyAqKSBmb3JlaWducmVsLT5mZHdf cHJpdmF0ZTsKKwlMaXN0Q2VsbCAgICpsYzsKKworCWlmIChJU19VUFBFUl9SRUwoZm9yZWlnbnJl bCkpCisJeworCQkvKiBGb3IgVVBQRVJfUkVMIHRsaXN0IG1hdGNoZXMgZ3JvdXBlZF90bGlzdCAq LworCQlmb3JlYWNoKGxjLCBmcGluZm8tPmdyb3VwZWRfdGxpc3QpCisJCXsKKwkJCVRhcmdldEVu dHJ5ICp0bGVudHJ5ID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChsYyk7CisJCQlPaWQJCQljb252 ZXJ0ZXJfb2lkID0gSW52YWxpZE9pZDsKKworCQkJaWYgKElzQSh0bGVudHJ5LT5leHByLCBBZ2dy ZWYpKQorCQkJeworCQkJCUFnZ3JlZgkgICAqYWdnID0gKEFnZ3JlZiAqKSB0bGVudHJ5LT5leHBy OworCisJCQkJaWYgKGFnZy0+YWdnc3BsaXQgPT0gQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwgJiYg YWdnLT5hZ2d0cmFuc3R5cGUgPT0gSU5URVJOQUxPSUQpCisJCQkJeworCQkJCQlIZWFwVHVwbGUJ YWdndHVwOworCQkJCQlGb3JtX3BnX2FnZ3JlZ2F0ZSBhZ2dmb3JtOworCisJCQkJCWFnZ3R1cCA9 IFNlYXJjaFN5c0NhY2hlMShBR0dGTk9JRCwgT2JqZWN0SWRHZXREYXR1bShhZ2ctPmFnZ2Zub2lk KSk7CisJCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChhZ2d0dXApKQorCQkJCQkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9uICV1IiwgYWdnLT5hZ2dmbm9pZCk7 CisKKwkJCQkJYWdnZm9ybSA9IChGb3JtX3BnX2FnZ3JlZ2F0ZSkgR0VUU1RSVUNUKGFnZ3R1cCk7 CisKKwkJCQkJY29udmVydGVyX29pZCA9IGFnZ2Zvcm0tPmFnZ3BhcnRpYWxjb252ZXJ0ZXJmbjsK KwkJCQkJQXNzZXJ0KGNvbnZlcnRlcl9vaWQgIT0gSW52YWxpZE9pZCk7CisKKwkJCQkJUmVsZWFz ZVN5c0NhY2hlKGFnZ3R1cCk7CisJCQkJfQorCQkJfQorCisJCQkvKgorCQkJICogV2UgYXBwZW5k IEludmFsaWRPaWQgdG8gY29udl9saXN0IHRvIHByZXNlcnZlIG9uZS10by1vbmUKKwkJCSAqIG1h cHBpbmcgYmV0d2VlbiB0bGlzdCBhbmQgY29udl9saXN0IG1lbWJlcnMuCisJCQkgKi8KKwkJCWNv bnZfbGlzdCA9IGxhcHBlbmRfb2lkKGNvbnZfbGlzdCwgY29udmVydGVyX29pZCk7CisJCX0KKwl9 CisKKwlyZXR1cm4gY29udl9saXN0OworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdy ZXNfZmR3LnNxbAppbmRleCA5ZWI2NzNlMzY5My4uNjEyOTZkZTZjYTcgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCisrKyBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC0yNzU1LDE1ICsyNzU1LDE1IEBAIFJF U0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW47CiAtLSB0ZXN0IHBhcnRpdGlvbndpc2UgYWdn cmVnYXRlcwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogCi1DUkVBVEUgVEFCTEUgcGFnZ190YWIgKGEgaW50LCBi IGludCwgYyB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CitDUkVBVEUgVEFCTEUgcGFnZ190 YWIgKGEgaW50LCBiIGludCwgYyB0ZXh0LCBkIG51bWVyaWMpIFBBUlRJVElPTiBCWSBSQU5HRShh KTsKIAogQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiX3AxIChMSUtFIHBhZ2dfdGFiKTsKIENSRUFURSBU QUJMRSBwYWdnX3RhYl9wMiAoTElLRSBwYWdnX3RhYik7CiBDUkVBVEUgVEFCTEUgcGFnZ190YWJf cDMgKExJS0UgcGFnZ190YWIpOwogCi1JTlNFUlQgSU5UTyBwYWdnX3RhYl9wMSBTRUxFQ1QgaSAl IDMwLCBpICUgNTAsIHRvX2NoYXIoaS8zMCwgJ0ZNMDAwMCcpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDMwMDApIGkgV0hFUkUgKGkgJSAzMCkgPCAxMDsKLUlOU0VSVCBJTlRPIHBhZ2dfdGFiX3Ay IFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJykgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8IDIwIGFuZCAoaSAlIDMwKSA+ PSAxMDsKLUlOU0VSVCBJTlRPIHBhZ2dfdGFiX3AzIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9f Y2hhcihpLzMwLCAnRk0wMDAwJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVS RSAoaSAlIDMwKSA8IDMwIGFuZCAoaSAlIDMwKSA+PSAyMDsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFi X3AxIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJyksIGkgJSA0 MCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMTA7CitJ TlNFUlQgSU5UTyBwYWdnX3RhYl9wMiBTRUxFQ1QgaSAlIDMwLCBpICUgNTAsIHRvX2NoYXIoaS8z MCwgJ0ZNMDAwMCcpLCBpICUgNDAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVS RSAoaSAlIDMwKSA8IDIwIGFuZCAoaSAlIDMwKSA+PSAxMDsKK0lOU0VSVCBJTlRPIHBhZ2dfdGFi X3AzIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJyksIGkgJSA0 MCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMzAgYW5k IChpICUgMzApID49IDIwOwogCiAtLSBDcmVhdGUgZm9yZWlnbiBwYXJ0aXRpb25zCiBDUkVBVEUg Rk9SRUlHTiBUQUJMRSBmcGFnZ190YWJfcDEgUEFSVElUSU9OIE9GIHBhZ2dfdGFiIEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEwKSBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAn cGFnZ190YWJfcDEnKTsKQEAgLTI3OTcsNiArMjc5NywyNSBAQCBTRUxFQ1QgYSwgY291bnQodDEp IEZST00gcGFnZ190YWIgdDEgR1JPVVAgQlkgYSBIQVZJTkcgYXZnKGIpIDwgMjIgT1JERVIgQlkg MTsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBiLCBhdmcoYSksIG1heChhKSwgY291bnQo KikgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBiIEhBVklORyBzdW0oYSkgPCA3MDAgT1JERVIgQlkg MTsKIAorLS0gSXQncyB1bnNhZmUgdG8gcHVzaCBkb3duIGhhdmluZyBjbGF1c2Ugd2hlbiB0aGVy ZSBhcmUgcGFydGlhbCBhZ2dyZWdhdGVzCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitT RUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgSEFWSU5H IHN1bShhKSA8IDcwMCBPUkRFUiBCWSAxOworCistLSBQYXJ0aWFsIGFnZ3JlZ2F0ZXMgYXJlIGZp bmUgdG8gcHVzaCBkb3duIHdpdGhvdXQgaGF2aW5nIGNsYXVzZQorRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKQorU0VMRUNUIGIsIG1heChhKSwgY291bnQoKikgRlJPTSBwYWdnX3RhYiBHUk9V UCBCWSBiIE9SREVSIEJZIDE7CitTRUxFQ1QgYiwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2df dGFiIEdST1VQIEJZIGIgT1JERVIgQlkgMTsKKworLS0gUGFydGlhbCBhZ2dyZWdhdGVzIGFyZSBm aW5lIHRvIHB1c2ggZG93bgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1h eChhKSwgY291bnQoKiksIHN1bShkKSBGUk9NIHBhZ2dfdGFiOworU0VMRUNUIG1heChhKSwgY291 bnQoKiksIHN1bShkKSBGUk9NIHBhZ2dfdGFiOworCistLSBTaG91bGRuJ3QgdHJ5IHRvIHB1c2gg ZG93bgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1heChhKSwgY291bnQo ZGlzdGluY3QgYikgRlJPTSBwYWdnX3RhYjsKK1NFTEVDVCBtYXgoYSksIGNvdW50KGRpc3RpbmN0 IGIpIEZST00gcGFnZ190YWI7CisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIGFjY2VzcyByaWdodHMgYW5k IHN1cGVydXNlcgogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19hZ2dyZWdhdGUuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRlLmMKaW5k ZXggMGQwZGFhNjliMzQuLjUyMTc5NGNmYmVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2FnZ3JlZ2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfYWdncmVnYXRl LmMKQEAgLTYwLDYgKzYwLDcgQEAgQWdncmVnYXRlQ3JlYXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUs CiAJCQkJTGlzdCAqYWdnY29tYmluZWZuTmFtZSwKIAkJCQlMaXN0ICphZ2dzZXJpYWxmbk5hbWUs CiAJCQkJTGlzdCAqYWdnZGVzZXJpYWxmbk5hbWUsCisJCQkJTGlzdCAqYWdncGFydGlhbGNvbnZl cnRlcmZuTmFtZSwKIAkJCQlMaXN0ICphZ2dtdHJhbnNmbk5hbWUsCiAJCQkJTGlzdCAqYWdnbWlu dnRyYW5zZm5OYW1lLAogCQkJCUxpc3QgKmFnZ21maW5hbGZuTmFtZSwKQEAgLTc0LDcgKzc1LDgg QEAgQWdncmVnYXRlQ3JlYXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUsCiAJCQkJaW50MzIgYWdnbVRy YW5zU3BhY2UsCiAJCQkJY29uc3QgY2hhciAqYWdnaW5pdHZhbCwKIAkJCQljb25zdCBjaGFyICph Z2dtaW5pdHZhbCwKLQkJCQljaGFyIHByb3BhcmFsbGVsKQorCQkJCWNoYXIgcHJvcGFyYWxsZWws CisJCQkJYm9vbCBwYXJ0aWFsUHVzaGRvd25TYWZlKQogewogCVJlbGF0aW9uCWFnZ2Rlc2M7CiAJ SGVhcFR1cGxlCXR1cDsKQEAgLTg4LDYgKzkwLDcgQEAgQWdncmVnYXRlQ3JlYXRlKGNvbnN0IGNo YXIgKmFnZ05hbWUsCiAJT2lkCQkJY29tYmluZWZuID0gSW52YWxpZE9pZDsgLyogY2FuIGJlIG9t aXR0ZWQgKi8KIAlPaWQJCQlzZXJpYWxmbiA9IEludmFsaWRPaWQ7CS8qIGNhbiBiZSBvbWl0dGVk ICovCiAJT2lkCQkJZGVzZXJpYWxmbiA9IEludmFsaWRPaWQ7CS8qIGNhbiBiZSBvbWl0dGVkICov CisJT2lkCQkJcGFydGlhbGNvbnZlcnRlcmZuID0gSW52YWxpZE9pZDsJLyogY2FuIGJlIG9taXR0 ZWQgKi8KIAlPaWQJCQltdHJhbnNmbiA9IEludmFsaWRPaWQ7CS8qIGNhbiBiZSBvbWl0dGVkICov CiAJT2lkCQkJbWludnRyYW5zZm4gPSBJbnZhbGlkT2lkOwkvKiBjYW4gYmUgb21pdHRlZCAqLwog CU9pZAkJCW1maW5hbGZuID0gSW52YWxpZE9pZDsJLyogY2FuIGJlIG9taXR0ZWQgKi8KQEAgLTU2 OSw2ICs1NzIsMjcgQEAgQWdncmVnYXRlQ3JlYXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUsCiAJCQkJ CQkJZm9ybWF0X3R5cGVfYmUoZmluYWx0eXBlKSkpKTsKIAl9CiAKKwkvKgorCSAqIFZhbGlkYXRl IHRoZSBwYXJ0aWFsIGNvbnZlcnRlciwgaWYgcHJlc2VudC4KKwkgKi8KKwlpZiAoYWdncGFydGlh bGNvbnZlcnRlcmZuTmFtZSkKKwl7CisJCWZuQXJnc1swXSA9IGZpbmFsdHlwZTsKKworCQlwYXJ0 aWFsY29udmVydGVyZm4gPSBsb29rdXBfYWdnX2Z1bmN0aW9uKGFnZ3BhcnRpYWxjb252ZXJ0ZXJm bk5hbWUsIDEsCisJCQkJCQkJCQkJCSAgZm5BcmdzLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkg ICZyZXR0eXBlKTsKKworCQlpZiAocmV0dHlwZSAhPSBCWVRFQU9JRCkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJy bXNnKCJyZXR1cm4gdHlwZSBvZiBwYXJ0aWFsIHNlcmlhbGl6YXRpb24gZnVuY3Rpb24gJXMgaXMg bm90ICVzIiwKKwkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKGFnZ3NlcmlhbGZuTmFtZSksCisJCQkJ CQkJZm9ybWF0X3R5cGVfYmUoQllURUFPSUQpKSkpOworCisJfQorCisKIAkvKiBoYW5kbGUgc29y dG9wLCBpZiBzdXBwbGllZCAqLwogCWlmIChhZ2dzb3J0b3BOYW1lKQogCXsKQEAgLTY2NCw2ICs2 ODgsNyBAQCBBZ2dyZWdhdGVDcmVhdGUoY29uc3QgY2hhciAqYWdnTmFtZSwKIAl2YWx1ZXNbQW51 bV9wZ19hZ2dyZWdhdGVfYWdnY29tYmluZWZuIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGNvbWJp bmVmbik7CiAJdmFsdWVzW0FudW1fcGdfYWdncmVnYXRlX2FnZ3NlcmlhbGZuIC0gMV0gPSBPYmpl Y3RJZEdldERhdHVtKHNlcmlhbGZuKTsKIAl2YWx1ZXNbQW51bV9wZ19hZ2dyZWdhdGVfYWdnZGVz ZXJpYWxmbiAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShkZXNlcmlhbGZuKTsKKwl2YWx1ZXNbQW51 bV9wZ19hZ2dyZWdhdGVfYWdncGFydGlhbGNvbnZlcnRlcmZuIC0gMV0gPSBPYmplY3RJZEdldERh dHVtKHBhcnRpYWxjb252ZXJ0ZXJmbik7CiAJdmFsdWVzW0FudW1fcGdfYWdncmVnYXRlX2FnZ210 cmFuc2ZuIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG10cmFuc2ZuKTsKIAl2YWx1ZXNbQW51bV9w Z19hZ2dyZWdhdGVfYWdnbWludnRyYW5zZm4gLSAxXSA9IE9iamVjdElkR2V0RGF0dW0obWludnRy YW5zZm4pOwogCXZhbHVlc1tBbnVtX3BnX2FnZ3JlZ2F0ZV9hZ2dtZmluYWxmbiAtIDFdID0gT2Jq ZWN0SWRHZXREYXR1bShtZmluYWxmbik7CkBAIC02NzYsNiArNzAxLDcgQEAgQWdncmVnYXRlQ3Jl YXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUsCiAJdmFsdWVzW0FudW1fcGdfYWdncmVnYXRlX2FnZ3Ry YW5zc3BhY2UgLSAxXSA9IEludDMyR2V0RGF0dW0oYWdnVHJhbnNTcGFjZSk7CiAJdmFsdWVzW0Fu dW1fcGdfYWdncmVnYXRlX2FnZ210cmFuc3R5cGUgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oYWdn bVRyYW5zVHlwZSk7CiAJdmFsdWVzW0FudW1fcGdfYWdncmVnYXRlX2FnZ210cmFuc3NwYWNlIC0g MV0gPSBJbnQzMkdldERhdHVtKGFnZ21UcmFuc1NwYWNlKTsKKwl2YWx1ZXNbQW51bV9wZ19hZ2dy ZWdhdGVfYWdncGFydGlhbHB1c2hkb3duc2FmZSAtIDFdID0gQm9vbEdldERhdHVtKHBhcnRpYWxQ dXNoZG93blNhZmUpOwogCWlmIChhZ2dpbml0dmFsKQogCQl2YWx1ZXNbQW51bV9wZ19hZ2dyZWdh dGVfYWdnaW5pdHZhbCAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShhZ2dpbml0dmFsKTsKIAll bHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMKaW5kZXggMDEwZWNhNzM0MGEuLjQx NGZjMDlhMjYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hZ2dyZWdhdGVjbWRz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWdncmVnYXRlY21kcy5jCkBAIC02OSwxMSAr NjksMTMgQEAgRGVmaW5lQWdncmVnYXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlMaXN0CSAgICpj b21iaW5lZnVuY05hbWUgPSBOSUw7CiAJTGlzdAkgICAqc2VyaWFsZnVuY05hbWUgPSBOSUw7CiAJ TGlzdAkgICAqZGVzZXJpYWxmdW5jTmFtZSA9IE5JTDsKKwlMaXN0CSAgICpwYXJ0aWFsY29udmVy dGVyZnVuY05hbWUgPSBOSUw7CiAJTGlzdAkgICAqbXRyYW5zZnVuY05hbWUgPSBOSUw7CiAJTGlz dAkgICAqbWludnRyYW5zZnVuY05hbWUgPSBOSUw7CiAJTGlzdAkgICAqbWZpbmFsZnVuY05hbWUg PSBOSUw7CiAJYm9vbAkJZmluYWxmdW5jRXh0cmFBcmdzID0gZmFsc2U7CiAJYm9vbAkJbWZpbmFs ZnVuY0V4dHJhQXJncyA9IGZhbHNlOworCWJvb2wJCXBhcnRpYWxQdXNoZG93blNhZmUgPSBmYWxz ZTsKIAljaGFyCQlmaW5hbGZ1bmNNb2RpZnkgPSAwOwogCWNoYXIJCW1maW5hbGZ1bmNNb2RpZnkg PSAwOwogCUxpc3QJICAgKnNvcnRvcGVyYXRvck5hbWUgPSBOSUw7CkBAIC0xNDIsNiArMTQ0LDgg QEAgRGVmaW5lQWdncmVnYXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCXNlcmlhbGZ1bmNOYW1l ID0gZGVmR2V0UXVhbGlmaWVkTmFtZShkZWZlbCk7CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ ZGVmbmFtZSwgImRlc2VyaWFsZnVuYyIpID09IDApCiAJCQlkZXNlcmlhbGZ1bmNOYW1lID0gZGVm R2V0UXVhbGlmaWVkTmFtZShkZWZlbCk7CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFt ZSwgInBhcnRpYWxjb252ZXJ0ZXJmdW5jIikgPT0gMCkKKwkJCXBhcnRpYWxjb252ZXJ0ZXJmdW5j TmFtZSA9IGRlZkdldFF1YWxpZmllZE5hbWUoZGVmZWwpOwogCQllbHNlIGlmIChzdHJjbXAoZGVm ZWwtPmRlZm5hbWUsICJtc2Z1bmMiKSA9PSAwKQogCQkJbXRyYW5zZnVuY05hbWUgPSBkZWZHZXRR dWFsaWZpZWROYW1lKGRlZmVsKTsKIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAi bWludmZ1bmMiKSA9PSAwKQpAQCAtMTg5LDYgKzE5Myw4IEBAIERlZmluZUFnZ3JlZ2F0ZShQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQltaW5pdHZhbCA9IGRlZkdldFN0cmluZyhkZWZlbCk7CiAJCWVs c2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInBhcmFsbGVsIikgPT0gMCkKIAkJCXBhcmFs bGVsID0gZGVmR2V0U3RyaW5nKGRlZmVsKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZu YW1lLCAicGFydGlhbF9wdXNoZG93bl9zYWZlIikgPT0gMCkKKwkJCXBhcnRpYWxQdXNoZG93blNh ZmUgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKIAkJZWxzZQogCQkJZXJlcG9ydChXQVJOSU5HLAog CQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC0zNzIsNiArMzc4LDE4IEBA IERlZmluZUFnZ3JlZ2F0ZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJIGVycm1zZygibXVzdCBz cGVjaWZ5IGJvdGggb3IgbmVpdGhlciBvZiBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRp b24gZnVuY3Rpb25zIikpKTsKIAl9CiAKKwlpZiAocGFydGlhbGNvbnZlcnRlcmZ1bmNOYW1lKQor CXsKKwkJLyoKKwkJICogQ29udmVydGVyIGlzIG9ubHkgbmVlZGVkL2FsbG93ZWQgZm9yIHRyYW5z dHlwZSBJTlRFUk5BTC4KKwkJICovCisJCWlmICh0cmFuc1R5cGVJZCAhPSBJTlRFUk5BTE9JRCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GVU5DVElP Tl9ERUZJTklUSU9OKSwKKwkJCQkJIGVycm1zZygicGFydGlhbCBjb252ZXJ0ZXJzIG1heSBiZSBz cGVjaWZpZWQgb25seSB3aGVuIHRoZSBhZ2dyZWdhdGUgdHJhbnNpdGlvbiBkYXRhIHR5cGUgaXMg JXMiLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKElOVEVSTkFMT0lEKSkpKTsKKwl9CisKIAkvKgog CSAqIElmIGEgbW92aW5nLWFnZ3JlZ2F0ZSB0cmFuc3R5cGUgaXMgc3BlY2lmaWVkLCBsb29rIHRo YXQgdXAuICBTYW1lCiAJICogcmVzdHJpY3Rpb25zIGFzIGZvciB0cmFuc3R5cGUuCkBAIC00NTcs NiArNDc1LDggQEAgRGVmaW5lQWdncmVnYXRlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSAg IGNvbWJpbmVmdW5jTmFtZSwgLyogY29tYmluZSBmdW5jdGlvbiBuYW1lICovCiAJCQkJCQkgICBz ZXJpYWxmdW5jTmFtZSwJLyogc2VyaWFsIGZ1bmN0aW9uIG5hbWUgKi8KIAkJCQkJCSAgIGRlc2Vy aWFsZnVuY05hbWUsCS8qIGRlc2VyaWFsIGZ1bmN0aW9uIG5hbWUgKi8KKwkJCQkJCSAgIHBhcnRp YWxjb252ZXJ0ZXJmdW5jTmFtZSwJLyogcGFydGlhbCBjb252ZXJ0ZXIgZnVuY3Rpb24KKwkJCQkJ CQkJCQkJCQkgKiBuYW1lICovCiAJCQkJCQkgICBtdHJhbnNmdW5jTmFtZSwJLyogZndkIHRyYW5z IGZ1bmN0aW9uIG5hbWUgKi8KIAkJCQkJCSAgIG1pbnZ0cmFuc2Z1bmNOYW1lLAkvKiBpbnYgdHJh bnMgZnVuY3Rpb24gbmFtZSAqLwogCQkJCQkJICAgbWZpbmFsZnVuY05hbWUsCS8qIGZpbmFsIGZ1 bmN0aW9uIG5hbWUgKi8KQEAgLTQ3MSw3ICs0OTEsOCBAQCBEZWZpbmVBZ2dyZWdhdGUoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCQkJCQkJICAgbXRyYW5zU3BhY2UsIC8qIHRyYW5zaXRpb24gc3BhY2Ug Ki8KIAkJCQkJCSAgIGluaXR2YWwsIC8qIGluaXRpYWwgY29uZGl0aW9uICovCiAJCQkJCQkgICBt aW5pdHZhbCwJLyogaW5pdGlhbCBjb25kaXRpb24gKi8KLQkJCQkJCSAgIHByb3BhcmFsbGVsKTsJ LyogcGFyYWxsZWwgc2FmZT8gKi8KKwkJCQkJCSAgIHByb3BhcmFsbGVsLCAvKiBwYXJhbGxlbCBz YWZlPyAqLworCQkJCQkJICAgcGFydGlhbFB1c2hkb3duU2FmZSk7CS8qIHBhcnRpYWwgcHVzaGRv d24gc2FmZT8gKi8KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9u dW1lcmljLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jCmluZGV4IDMyMDg3ODlm NzVlLi42OTk4MDkzZjA4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVy aWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jCkBAIC01NzY5LDYgKzU3 NjksNTIgQEAgaW50OF9hdmdfZGVzZXJpYWxpemUoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRV Uk5fUE9JTlRFUihyZXN1bHQpOwogfQogCisvKgorICogaW50OF9zdW1fdG9faW50ZXJuYWxfc2Vy aWFsaXplCisgKgkJQ29udmVydCBpbnQ4IGFyZ3VtZW50IHRvIHNlcmlhbGl6ZWQgaW50ZXJuYWwg cmVwcmVzZW50YXRpb24KKyAqLworRGF0dW0KK2ludDhfc3VtX3RvX2ludGVybmFsX3NlcmlhbGl6 ZShQR19GVU5DVElPTl9BUkdTKQoreworCVBvbHlOdW1BZ2dTdGF0ZSAqc3RhdGUgPSBOVUxMOwor CVN0cmluZ0luZm9EYXRhIGJ1ZjsKKwlieXRlYQkgICAqcmVzdWx0OworCU51bWVyaWNWYXIJdG1w X3ZhcjsKKworCXN0YXRlID0gKFBvbHlOdW1BZ2dTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihQb2x5 TnVtQWdnU3RhdGUpKTsKKwlzdGF0ZS0+Y2FsY1N1bVgyID0gZmFsc2U7CisKKwlpZiAoIVBHX0FS R0lTTlVMTCgwKSkKKwl7CisjaWZkZWYgSEFWRV9JTlQxMjgKKwkJZG9faW50MTI4X2FjY3VtKHN0 YXRlLCAoaW50MTI4KSBQR19HRVRBUkdfSU5UNjQoMCkpOworI2Vsc2UKKwkJZG9fbnVtZXJpY19h Y2N1bShzdGF0ZSwgaW50NjRfdG9fbnVtZXJpYyhQR19HRVRBUkdfSU5UNjQoMCkpKTsKKyNlbmRp ZgorCX0KKworCWluaXRfdmFyKCZ0bXBfdmFyKTsKKworCXBxX2JlZ2ludHlwc2VuZCgmYnVmKTsK KworCS8qIE4gKi8KKwlwcV9zZW5kaW50NjQoJmJ1Ziwgc3RhdGUtPk4pOworCisJLyogc3VtWCAq LworI2lmZGVmIEhBVkVfSU5UMTI4CisJaW50MTI4X3RvX251bWVyaWN2YXIoc3RhdGUtPnN1bVgs ICZ0bXBfdmFyKTsKKyNlbHNlCisJYWNjdW1fc3VtX2ZpbmFsKCZzdGF0ZS0+c3VtWCwgJnRtcF92 YXIpOworI2VuZGlmCisJbnVtZXJpY3Zhcl9zZXJpYWxpemUoJmJ1ZiwgJnRtcF92YXIpOworCisJ cmVzdWx0ID0gcHFfZW5kdHlwc2VuZCgmYnVmKTsKKworCWZyZWVfdmFyKCZ0bXBfdmFyKTsKKwor CVBHX1JFVFVSTl9CWVRFQV9QKHJlc3VsdCk7Cit9CisKIC8qCiAgKiBJbnZlcnNlIHRyYW5zaXRp b24gZnVuY3Rpb25zIHRvIGdvIHdpdGggdGhlIGFib3ZlLgogICovCkBAIC01OTk0LDYgKzYwNDAs NTYgQEAgbnVtZXJpY19zdW0oUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fTlVNRVJJQyhy ZXN1bHQpOwogfQogCisvKgorICogbnVtZXJpY19zdW1fdG9faW50ZXJuYWxfc2VyaWFsaXplCisg KgkJQ29udmVydCBudW1lcmljIGFyZ3VtZW50IHRvIHNlcmlhbGl6ZWQgaW50ZXJuYWwgcmVwcmVz ZW50YXRpb24KKyAqLworRGF0dW0KK251bWVyaWNfc3VtX3RvX2ludGVybmFsX3NlcmlhbGl6ZShQ R19GVU5DVElPTl9BUkdTKQoreworCU51bWVyaWNBZ2dTdGF0ZSAqc3RhdGUgPSBOVUxMOworCVN0 cmluZ0luZm9EYXRhIGJ1ZjsKKwlieXRlYQkgICAqcmVzdWx0OworCU51bWVyaWNWYXIJdG1wX3Zh cjsKKworCXN0YXRlID0gbWFrZU51bWVyaWNBZ2dTdGF0ZUN1cnJlbnRDb250ZXh0KGZhbHNlKTsK KworCWlmICghUEdfQVJHSVNOVUxMKDApKQorCQlkb19udW1lcmljX2FjY3VtKHN0YXRlLCBQR19H RVRBUkdfTlVNRVJJQygwKSk7CisKKwlpbml0X3ZhcigmdG1wX3Zhcik7CisKKwlwcV9iZWdpbnR5 cHNlbmQoJmJ1Zik7CisKKwkvKiBOICovCisJcHFfc2VuZGludDY0KCZidWYsIHN0YXRlLT5OKTsK KworCS8qIHN1bVggKi8KKwlhY2N1bV9zdW1fZmluYWwoJnN0YXRlLT5zdW1YLCAmdG1wX3Zhcik7 CisJbnVtZXJpY3Zhcl9zZXJpYWxpemUoJmJ1ZiwgJnRtcF92YXIpOworCisJLyogbWF4U2NhbGUg Ki8KKwlwcV9zZW5kaW50MzIoJmJ1Ziwgc3RhdGUtPm1heFNjYWxlKTsKKworCS8qIG1heFNjYWxl Q291bnQgKi8KKwlwcV9zZW5kaW50NjQoJmJ1Ziwgc3RhdGUtPm1heFNjYWxlQ291bnQpOworCisJ LyogTmFOY291bnQgKi8KKwlwcV9zZW5kaW50NjQoJmJ1Ziwgc3RhdGUtPk5hTmNvdW50KTsKKwor CS8qIHBJbmZjb3VudCAqLworCXBxX3NlbmRpbnQ2NCgmYnVmLCBzdGF0ZS0+cEluZmNvdW50KTsK KworCS8qIG5JbmZjb3VudCAqLworCXBxX3NlbmRpbnQ2NCgmYnVmLCBzdGF0ZS0+bkluZmNvdW50 KTsKKworCXJlc3VsdCA9IHBxX2VuZHR5cHNlbmQoJmJ1Zik7CisKKwlmcmVlX3ZhcigmdG1wX3Zh cik7CisKKwlQR19SRVRVUk5fQllURUFfUChyZXN1bHQpOworfQorCiAvKgogICogV29ya2hvcnNl IHJvdXRpbmUgZm9yIHRoZSBzdGFuZGFyZCBkZXZpYW5jZSBhbmQgdmFyaWFuY2UKICAqIGFnZ3Jl Z2F0ZXMuICdzdGF0ZScgaXMgYWdncmVnYXRlJ3MgdHJhbnNpdGlvbiBzdGF0ZS4KZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CmluZGV4IGM1ZjIzMTExOGJkLi41Y2ExOGJjN2E5YSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xMzExNCwx MSArMTMxMTQsMTMgQEAgZHVtcEFnZyhBcmNoaXZlICpmb3V0LCBjb25zdCBBZ2dJbmZvICphZ2dp bmZvKQogCWNvbnN0IGNoYXIgKmFnZ2NvbWJpbmVmbjsKIAljb25zdCBjaGFyICphZ2dzZXJpYWxm bjsKIAljb25zdCBjaGFyICphZ2dkZXNlcmlhbGZuOworCWNvbnN0IGNoYXIgKmFnZ3BhcnRpYWxj b252ZXJ0ZXJmbjsKIAljb25zdCBjaGFyICphZ2dtdHJhbnNmbjsKIAljb25zdCBjaGFyICphZ2dt aW52dHJhbnNmbjsKIAljb25zdCBjaGFyICphZ2dtZmluYWxmbjsKIAlib29sCQlhZ2dmaW5hbGV4 dHJhOwogCWJvb2wJCWFnZ21maW5hbGV4dHJhOworCWJvb2wJCWFnZ3BhcnRpYWxwdXNoZG93bnNh ZmU7CiAJY2hhcgkJYWdnZmluYWxtb2RpZnk7CiAJY2hhcgkJYWdnbWZpbmFsbW9kaWZ5OwogCWNv bnN0IGNoYXIgKmFnZ3NvcnRvcDsKQEAgLTEzMTk5LDExICsxMzIwMSwxOSBAQCBkdW1wQWdnKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IEFnZ0luZm8gKmFnZ2luZm8pCiAJCWlmIChmb3V0LT5yZW1vdGVW ZXJzaW9uID49IDExMDAwMCkKIAkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJ CQkgImFnZ2ZpbmFsbW9kaWZ5LFxuIgotCQkJCQkJCQkgImFnZ21maW5hbG1vZGlmeVxuIik7CisJ CQkJCQkJCSAiYWdnbWZpbmFsbW9kaWZ5LFxuIik7CiAJCWVsc2UKIAkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCQkgIicwJyBBUyBhZ2dmaW5hbG1vZGlmeSxcbiIKLQkJCQkJ CQkJICInMCcgQVMgYWdnbWZpbmFsbW9kaWZ5XG4iKTsKKwkJCQkJCQkJICInMCcgQVMgYWdnbWZp bmFsbW9kaWZ5LFxuIik7CisJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKKwkJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCQkgImFnZ3BhcnRpYWxjb252ZXJ0 ZXJmbixcbiIKKwkJCQkJCQkJICJhZ2dwYXJ0aWFscHVzaGRvd25zYWZlXG4iKTsKKwkJZWxzZQor CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJCSAiJy0nIEFTIGFnZ3BhcnRp YWxjb252ZXJ0ZXJmbixcbiIKKwkJCQkJCQkJICJmYWxzZSBhcyBhZ2dwYXJ0aWFscHVzaGRvd25z YWZlXG4iKTsKIAogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIkZST00g cGdfY2F0YWxvZy5wZ19hZ2dyZWdhdGUgYSwgcGdfY2F0YWxvZy5wZ19wcm9jIHAgIgpAQCAtMTMy MjksNiArMTMyMzksOCBAQCBkdW1wQWdnKEFyY2hpdmUgKmZvdXQsIGNvbnN0IEFnZ0luZm8gKmFn Z2luZm8pCiAJYWdnY29tYmluZWZuID0gUFFnZXR2YWx1ZShyZXMsIDAsIFBRZm51bWJlcihyZXMs ICJhZ2djb21iaW5lZm4iKSk7CiAJYWdnc2VyaWFsZm4gPSBQUWdldHZhbHVlKHJlcywgMCwgUFFm bnVtYmVyKHJlcywgImFnZ3NlcmlhbGZuIikpOwogCWFnZ2Rlc2VyaWFsZm4gPSBQUWdldHZhbHVl KHJlcywgMCwgUFFmbnVtYmVyKHJlcywgImFnZ2Rlc2VyaWFsZm4iKSk7CisJYWdncGFydGlhbGNv bnZlcnRlcmZuID0gUFFnZXR2YWx1ZShyZXMsIDAsIFBRZm51bWJlcihyZXMsICJhZ2dwYXJ0aWFs Y29udmVydGVyZm4iKSk7CisJYWdncGFydGlhbHB1c2hkb3duc2FmZSA9IChQUWdldHZhbHVlKHJl cywgMCwgUFFmbnVtYmVyKHJlcywgImFnZ3BhcnRpYWxwdXNoZG93bnNhZmUiKSlbMF0gPT0gJ3Qn KTsKIAlhZ2dtdHJhbnNmbiA9IFBRZ2V0dmFsdWUocmVzLCAwLCBQUWZudW1iZXIocmVzLCAiYWdn bXRyYW5zZm4iKSk7CiAJYWdnbWludnRyYW5zZm4gPSBQUWdldHZhbHVlKHJlcywgMCwgUFFmbnVt YmVyKHJlcywgImFnZ21pbnZ0cmFuc2ZuIikpOwogCWFnZ21maW5hbGZuID0gUFFnZXR2YWx1ZShy ZXMsIDAsIFBRZm51bWJlcihyZXMsICJhZ2dtZmluYWxmbiIpKTsKQEAgLTEzMzE4LDYgKzEzMzMw LDEwIEBAIGR1bXBBZ2coQXJjaGl2ZSAqZm91dCwgY29uc3QgQWdnSW5mbyAqYWdnaW5mbykKIAlp ZiAoc3RyY21wKGFnZ2Rlc2VyaWFsZm4sICItIikgIT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXIo ZGV0YWlscywgIixcbiAgICBERVNFUklBTEZVTkMgPSAlcyIsIGFnZ2Rlc2VyaWFsZm4pOwogCisJ aWYgKHN0cmNtcChhZ2dwYXJ0aWFsY29udmVydGVyZm4sICItIikgIT0gMCkKKwkJYXBwZW5kUFFF eHBCdWZmZXIoZGV0YWlscywgIixcbiAgICBQQVJUSUFMQ09OVkVSVEVSRlVOQyA9ICVzIiwgYWdn cGFydGlhbGNvbnZlcnRlcmZuKTsKKwlpZiAoYWdncGFydGlhbHB1c2hkb3duc2FmZSkKKwkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoZGV0YWlscywgIixcbiAgICBQQVJUSUFMX1BVU0hET1dOX1NBRkUi KTsKIAlpZiAoc3RyY21wKGFnZ210cmFuc2ZuLCAiLSIpICE9IDApCiAJewogCQlhcHBlbmRQUUV4 cEJ1ZmZlcihkZXRhaWxzLCAiLFxuICAgIE1TRlVOQyA9ICVzLFxuICAgIE1JTlZGVU5DID0gJXMs XG4gICAgTVNUWVBFID0gJXMiLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19h Z2dyZWdhdGUuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuZGF0CmluZGV4 IDEzN2Y2ZWVmNjk1Li42MjdkZWQ4ZDJiNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19hZ2dyZWdhdGUuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdncmVnYXRl LmRhdApAQCAtNTYsMjYgKzU2LDI3IEBACiAgIGFnZ3NlcmlhbGZuID0+ICdpbnQ4X2F2Z19zZXJp YWxpemUnLCBhZ2dkZXNlcmlhbGZuID0+ICdpbnQ4X2F2Z19kZXNlcmlhbGl6ZScsCiAgIGFnZ210 cmFuc2ZuID0+ICdpbnQ4X2F2Z19hY2N1bScsIGFnZ21pbnZ0cmFuc2ZuID0+ICdpbnQ4X2F2Z19h Y2N1bV9pbnYnLAogICBhZ2dtZmluYWxmbiA9PiAnbnVtZXJpY19wb2x5X3N1bScsIGFnZ3RyYW5z dHlwZSA9PiAnaW50ZXJuYWwnLAotICBhZ2d0cmFuc3NwYWNlID0+ICc0OCcsIGFnZ210cmFuc3R5 cGUgPT4gJ2ludGVybmFsJywgYWdnbXRyYW5zc3BhY2UgPT4gJzQ4JyB9LAorICBhZ2d0cmFuc3Nw YWNlID0+ICc0OCcsIGFnZ210cmFuc3R5cGUgPT4gJ2ludGVybmFsJywgYWdnbXRyYW5zc3BhY2Ug PT4gJzQ4JywKKyAgYWdncGFydGlhbGNvbnZlcnRlcmZuID0+ICdpbnQ4X3N1bV90b19pbnRlcm5h bF9zZXJpYWxpemUnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9p ZCA9PiAnc3VtKGludDQpJywgYWdndHJhbnNmbiA9PiAnaW50NF9zdW0nLCBhZ2djb21iaW5lZm4g PT4gJ2ludDhwbCcsCiAgIGFnZ210cmFuc2ZuID0+ICdpbnQ0X2F2Z19hY2N1bScsIGFnZ21pbnZ0 cmFuc2ZuID0+ICdpbnQ0X2F2Z19hY2N1bV9pbnYnLAogICBhZ2dtZmluYWxmbiA9PiAnaW50Mmlu dDRfc3VtJywgYWdndHJhbnN0eXBlID0+ICdpbnQ4JywKLSAgYWdnbXRyYW5zdHlwZSA9PiAnX2lu dDgnLCBhZ2dtaW5pdHZhbCA9PiAnezAsMH0nIH0sCisgIGFnZ210cmFuc3R5cGUgPT4gJ19pbnQ4 JywgYWdnbWluaXR2YWwgPT4gJ3swLDB9JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcg fSwKIHsgYWdnZm5vaWQgPT4gJ3N1bShpbnQyKScsIGFnZ3RyYW5zZm4gPT4gJ2ludDJfc3VtJywg YWdnY29tYmluZWZuID0+ICdpbnQ4cGwnLAogICBhZ2dtdHJhbnNmbiA9PiAnaW50Ml9hdmdfYWNj dW0nLCBhZ2dtaW52dHJhbnNmbiA9PiAnaW50Ml9hdmdfYWNjdW1faW52JywKICAgYWdnbWZpbmFs Zm4gPT4gJ2ludDJpbnQ0X3N1bScsIGFnZ3RyYW5zdHlwZSA9PiAnaW50OCcsCi0gIGFnZ210cmFu c3R5cGUgPT4gJ19pbnQ4JywgYWdnbWluaXR2YWwgPT4gJ3swLDB9JyB9LAorICBhZ2dtdHJhbnN0 eXBlID0+ICdfaW50OCcsIGFnZ21pbml0dmFsID0+ICd7MCwwfScsIGFnZ3BhcnRpYWxwdXNoZG93 bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdzdW0oZmxvYXQ0KScsIGFnZ3RyYW5zZm4g PT4gJ2Zsb2F0NHBsJywKLSAgYWdnY29tYmluZWZuID0+ICdmbG9hdDRwbCcsIGFnZ3RyYW5zdHlw ZSA9PiAnZmxvYXQ0JyB9LAorICBhZ2djb21iaW5lZm4gPT4gJ2Zsb2F0NHBsJywgYWdndHJhbnN0 eXBlID0+ICdmbG9hdDQnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dm bm9pZCA9PiAnc3VtKGZsb2F0OCknLCBhZ2d0cmFuc2ZuID0+ICdmbG9hdDhwbCcsCi0gIGFnZ2Nv bWJpbmVmbiA9PiAnZmxvYXQ4cGwnLCBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0OCcgfSwKKyAgYWdn Y29tYmluZWZuID0+ICdmbG9hdDhwbCcsIGFnZ3RyYW5zdHlwZSA9PiAnZmxvYXQ4JywgYWdncGFy dGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ3N1bShtb25leSknLCBh Z2d0cmFuc2ZuID0+ICdjYXNoX3BsJywgYWdnY29tYmluZWZuID0+ICdjYXNoX3BsJywKICAgYWdn bXRyYW5zZm4gPT4gJ2Nhc2hfcGwnLCBhZ2dtaW52dHJhbnNmbiA9PiAnY2FzaF9taScsCi0gIGFn Z3RyYW5zdHlwZSA9PiAnbW9uZXknLCBhZ2dtdHJhbnN0eXBlID0+ICdtb25leScgfSwKKyAgYWdn dHJhbnN0eXBlID0+ICdtb25leScsIGFnZ210cmFuc3R5cGUgPT4gJ21vbmV5JywgYWdncGFydGlh bHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ3N1bShpbnRlcnZhbCknLCBh Z2d0cmFuc2ZuID0+ICdpbnRlcnZhbF9wbCcsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnaW50ZXJ2YWxf cGwnLCBhZ2dtdHJhbnNmbiA9PiAnaW50ZXJ2YWxfcGwnLAogICBhZ2dtaW52dHJhbnNmbiA9PiAn aW50ZXJ2YWxfbWknLCBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVydmFsJywKLSAgYWdnbXRyYW5zdHlw ZSA9PiAnaW50ZXJ2YWwnIH0sCisgIGFnZ210cmFuc3R5cGUgPT4gJ2ludGVydmFsJywgYWdncGFy dGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ3N1bShudW1lcmljKScs IGFnZ3RyYW5zZm4gPT4gJ251bWVyaWNfYXZnX2FjY3VtJywKICAgYWdnZmluYWxmbiA9PiAnbnVt ZXJpY19zdW0nLCBhZ2djb21iaW5lZm4gPT4gJ251bWVyaWNfYXZnX2NvbWJpbmUnLAogICBhZ2dz ZXJpYWxmbiA9PiAnbnVtZXJpY19hdmdfc2VyaWFsaXplJywKQEAgLTgzLDE0NiArODQsMTQ5IEBA CiAgIGFnZ210cmFuc2ZuID0+ICdudW1lcmljX2F2Z19hY2N1bScsIGFnZ21pbnZ0cmFuc2ZuID0+ ICdudW1lcmljX2FjY3VtX2ludicsCiAgIGFnZ21maW5hbGZuID0+ICdudW1lcmljX3N1bScsIGFn Z3RyYW5zdHlwZSA9PiAnaW50ZXJuYWwnLAogICBhZ2d0cmFuc3NwYWNlID0+ICcxMjgnLCBhZ2dt dHJhbnN0eXBlID0+ICdpbnRlcm5hbCcsCi0gIGFnZ210cmFuc3NwYWNlID0+ICcxMjgnIH0sCisg IGFnZ210cmFuc3NwYWNlID0+ICcxMjgnLCBhZ2dwYXJ0aWFsY29udmVydGVyZm4gPT4gJ251bWVy aWNfc3VtX3RvX2ludGVybmFsX3NlcmlhbGl6ZScsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4g J3QnIH0sCiAKICMgbWF4CiB7IGFnZ2Zub2lkID0+ICdtYXgoaW50OCknLCBhZ2d0cmFuc2ZuID0+ ICdpbnQ4bGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICdpbnQ4bGFyZ2VyJywgYWdnc29ydG9w ID0+ICc+KGludDgsaW50OCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2ludDgnIH0sCisgIGFnZ3Ry YW5zdHlwZSA9PiAnaW50OCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFn Z2Zub2lkID0+ICdtYXgoaW50NCknLCBhZ2d0cmFuc2ZuID0+ICdpbnQ0bGFyZ2VyJywKICAgYWdn Y29tYmluZWZuID0+ICdpbnQ0bGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KGludDQsaW50NCknLAot ICBhZ2d0cmFuc3R5cGUgPT4gJ2ludDQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnaW50NCcsIGFn Z3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgoaW50Mikn LCBhZ2d0cmFuc2ZuID0+ICdpbnQybGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICdpbnQybGFy Z2VyJywgYWdnc29ydG9wID0+ICc+KGludDIsaW50MiknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2lu dDInIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnaW50MicsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUg PT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgob2lkKScsIGFnZ3RyYW5zZm4gPT4gJ29pZGxh cmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnb2lkbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KG9p ZCxvaWQpJywKLSAgYWdndHJhbnN0eXBlID0+ICdvaWQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAn b2lkJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21h eChmbG9hdDQpJywgYWdndHJhbnNmbiA9PiAnZmxvYXQ0bGFyZ2VyJywKICAgYWdnY29tYmluZWZu ID0+ICdmbG9hdDRsYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4oZmxvYXQ0LGZsb2F0NCknLAotICBh Z2d0cmFuc3R5cGUgPT4gJ2Zsb2F0NCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdmbG9hdDQnLCBh Z2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4KGZsb2F0 OCknLCBhZ2d0cmFuc2ZuID0+ICdmbG9hdDhsYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2Zs b2F0OGxhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPihmbG9hdDgsZmxvYXQ4KScsCi0gIGFnZ3RyYW5z dHlwZSA9PiAnZmxvYXQ4JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0OCcsIGFnZ3BhcnRp YWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgoZGF0ZSknLCBhZ2d0 cmFuc2ZuID0+ICdkYXRlX2xhcmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnZGF0ZV9sYXJnZXIn LCBhZ2dzb3J0b3AgPT4gJz4oZGF0ZSxkYXRlKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnZGF0ZScg fSwKKyAgYWdndHJhbnN0eXBlID0+ICdkYXRlJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAn dCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heCh0aW1lKScsIGFnZ3RyYW5zZm4gPT4gJ3RpbWVfbGFy Z2VyJywKICAgYWdnY29tYmluZWZuID0+ICd0aW1lX2xhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPih0 aW1lLHRpbWUpJywKLSAgYWdndHJhbnN0eXBlID0+ICd0aW1lJyB9LAorICBhZ2d0cmFuc3R5cGUg PT4gJ3RpbWUnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9 PiAnbWF4KHRpbWV0eiknLCBhZ2d0cmFuc2ZuID0+ICd0aW1ldHpfbGFyZ2VyJywKICAgYWdnY29t YmluZWZuID0+ICd0aW1ldHpfbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KHRpbWV0eix0aW1ldHop JywKLSAgYWdndHJhbnN0eXBlID0+ICd0aW1ldHonIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAndGlt ZXR6JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21h eChtb25leSknLCBhZ2d0cmFuc2ZuID0+ICdjYXNobGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ ICdjYXNobGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KG1vbmV5LG1vbmV5KScsCi0gIGFnZ3RyYW5z dHlwZSA9PiAnbW9uZXknIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnbW9uZXknLCBhZ2dwYXJ0aWFs cHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4KHRpbWVzdGFtcCknLCBh Z2d0cmFuc2ZuID0+ICd0aW1lc3RhbXBfbGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICd0aW1l c3RhbXBfbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KHRpbWVzdGFtcCx0aW1lc3RhbXApJywKLSAg YWdndHJhbnN0eXBlID0+ICd0aW1lc3RhbXAnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAndGltZXN0 YW1wJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21h eCh0aW1lc3RhbXB0eiknLCBhZ2d0cmFuc2ZuID0+ICd0aW1lc3RhbXB0el9sYXJnZXInLAogICBh Z2djb21iaW5lZm4gPT4gJ3RpbWVzdGFtcHR6X2xhcmdlcicsCiAgIGFnZ3NvcnRvcCA9PiAnPih0 aW1lc3RhbXB0eix0aW1lc3RhbXB0eiknLCBhZ2d0cmFuc3R5cGUgPT4gJ3RpbWVzdGFtcHR6JyB9 LAogeyBhZ2dmbm9pZCA9PiAnbWF4KGludGVydmFsKScsIGFnZ3RyYW5zZm4gPT4gJ2ludGVydmFs X2xhcmdlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnaW50ZXJ2YWxfbGFyZ2VyJywgYWdnc29ydG9w ID0+ICc+KGludGVydmFsLGludGVydmFsKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJ2YWwn IH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJ2YWwnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZl ID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4KHRleHQpJywgYWdndHJhbnNmbiA9PiAndGV4 dF9sYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3RleHRfbGFyZ2VyJywgYWdnc29ydG9wID0+ ICc+KHRleHQsdGV4dCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ3RleHQnIH0sCisgIGFnZ3RyYW5z dHlwZSA9PiAndGV4dCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zu b2lkID0+ICdtYXgobnVtZXJpYyknLCBhZ2d0cmFuc2ZuID0+ICdudW1lcmljX2xhcmdlcicsCiAg IGFnZ2NvbWJpbmVmbiA9PiAnbnVtZXJpY19sYXJnZXInLCBhZ2dzb3J0b3AgPT4gJz4obnVtZXJp YyxudW1lcmljKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnbnVtZXJpYycgfSwKKyAgYWdndHJhbnN0 eXBlID0+ICdudW1lcmljJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdn Zm5vaWQgPT4gJ21heChhbnlhcnJheSknLCBhZ2d0cmFuc2ZuID0+ICdhcnJheV9sYXJnZXInLAog ICBhZ2djb21iaW5lZm4gPT4gJ2FycmF5X2xhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPihhbnlhcnJh eSxhbnlhcnJheSknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2FueWFycmF5JyB9LAorICBhZ2d0cmFu c3R5cGUgPT4gJ2FueWFycmF5JywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsg YWdnZm5vaWQgPT4gJ21heChicGNoYXIpJywgYWdndHJhbnNmbiA9PiAnYnBjaGFyX2xhcmdlcics CiAgIGFnZ2NvbWJpbmVmbiA9PiAnYnBjaGFyX2xhcmdlcicsIGFnZ3NvcnRvcCA9PiAnPihicGNo YXIsYnBjaGFyKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnYnBjaGFyJyB9LAorICBhZ2d0cmFuc3R5 cGUgPT4gJ2JwY2hhcicsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zu b2lkID0+ICdtYXgodGlkKScsIGFnZ3RyYW5zZm4gPT4gJ3RpZGxhcmdlcicsCiAgIGFnZ2NvbWJp bmVmbiA9PiAndGlkbGFyZ2VyJywgYWdnc29ydG9wID0+ICc+KHRpZCx0aWQpJywKLSAgYWdndHJh bnN0eXBlID0+ICd0aWQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAndGlkJywgYWdncGFydGlhbHB1 c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21heChhbnllbnVtKScsIGFnZ3Ry YW5zZm4gPT4gJ2VudW1fbGFyZ2VyJywKICAgYWdnY29tYmluZWZuID0+ICdlbnVtX2xhcmdlcics IGFnZ3NvcnRvcCA9PiAnPihhbnllbnVtLGFueWVudW0pJywKLSAgYWdndHJhbnN0eXBlID0+ICdh bnllbnVtJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2FueWVudW0nLCBhZ2dwYXJ0aWFscHVzaGRv d25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWF4KGluZXQpJywgYWdndHJhbnNmbiA9 PiAnbmV0d29ya19sYXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ25ldHdvcmtfbGFyZ2VyJywg YWdnc29ydG9wID0+ICc+KGluZXQsaW5ldCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2luZXQnIH0s CisgIGFnZ3RyYW5zdHlwZSA9PiAnaW5ldCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3Qn IH0sCiB7IGFnZ2Zub2lkID0+ICdtYXgocGdfbHNuKScsIGFnZ3RyYW5zZm4gPT4gJ3BnX2xzbl9s YXJnZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3BnX2xzbl9sYXJnZXInLCBhZ2dzb3J0b3AgPT4g Jz4ocGdfbHNuLHBnX2xzbiknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ3BnX2xzbicgfSwKKyAgYWdn dHJhbnN0eXBlID0+ICdwZ19sc24nLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAog CiAjIG1pbgogeyBhZ2dmbm9pZCA9PiAnbWluKGludDgpJywgYWdndHJhbnNmbiA9PiAnaW50OHNt YWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2ludDhzbWFsbGVyJywgYWdnc29ydG9wID0+ICc8 KGludDgsaW50OCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2ludDgnIH0sCisgIGFnZ3RyYW5zdHlw ZSA9PiAnaW50OCcsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lk ID0+ICdtaW4oaW50NCknLCBhZ2d0cmFuc2ZuID0+ICdpbnQ0c21hbGxlcicsCiAgIGFnZ2NvbWJp bmVmbiA9PiAnaW50NHNtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwoaW50NCxpbnQ0KScsCi0gIGFn Z3RyYW5zdHlwZSA9PiAnaW50NCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdpbnQ0JywgYWdncGFy dGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21pbihpbnQyKScsIGFn Z3RyYW5zZm4gPT4gJ2ludDJzbWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ICdpbnQyc21hbGxl cicsIGFnZ3NvcnRvcCA9PiAnPChpbnQyLGludDIpJywKLSAgYWdndHJhbnN0eXBlID0+ICdpbnQy JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2ludDInLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKG9pZCknLCBhZ2d0cmFuc2ZuID0+ICdvaWRzbWFs bGVyJywKICAgYWdnY29tYmluZWZuID0+ICdvaWRzbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KG9p ZCxvaWQpJywKLSAgYWdndHJhbnN0eXBlID0+ICdvaWQnIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAn b2lkJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21p bihmbG9hdDQpJywgYWdndHJhbnNmbiA9PiAnZmxvYXQ0c21hbGxlcicsCiAgIGFnZ2NvbWJpbmVm biA9PiAnZmxvYXQ0c21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPChmbG9hdDQsZmxvYXQ0KScsCi0g IGFnZ3RyYW5zdHlwZSA9PiAnZmxvYXQ0JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2Zsb2F0NCcs IGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4oZmxv YXQ4KScsIGFnZ3RyYW5zZm4gPT4gJ2Zsb2F0OHNtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4g J2Zsb2F0OHNtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwoZmxvYXQ4LGZsb2F0OCknLAotICBhZ2d0 cmFuc3R5cGUgPT4gJ2Zsb2F0OCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdmbG9hdDgnLCBhZ2dw YXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKGRhdGUpJywg YWdndHJhbnNmbiA9PiAnZGF0ZV9zbWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ICdkYXRlX3Nt YWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwoZGF0ZSxkYXRlKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAn ZGF0ZScgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdkYXRlJywgYWdncGFydGlhbHB1c2hkb3duc2Fm ZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21pbih0aW1lKScsIGFnZ3RyYW5zZm4gPT4gJ3Rp bWVfc21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAndGltZV9zbWFsbGVyJywgYWdnc29ydG9w ID0+ICc8KHRpbWUsdGltZSknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ3RpbWUnIH0sCisgIGFnZ3Ry YW5zdHlwZSA9PiAndGltZScsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFn Z2Zub2lkID0+ICdtaW4odGltZXR6KScsIGFnZ3RyYW5zZm4gPT4gJ3RpbWV0el9zbWFsbGVyJywK ICAgYWdnY29tYmluZWZuID0+ICd0aW1ldHpfc21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPCh0aW1l dHosdGltZXR6KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAndGltZXR6JyB9LAorICBhZ2d0cmFuc3R5 cGUgPT4gJ3RpbWV0eicsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zu b2lkID0+ICdtaW4obW9uZXkpJywgYWdndHJhbnNmbiA9PiAnY2FzaHNtYWxsZXInLAogICBhZ2dj b21iaW5lZm4gPT4gJ2Nhc2hzbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KG1vbmV5LG1vbmV5KScs Ci0gIGFnZ3RyYW5zdHlwZSA9PiAnbW9uZXknIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnbW9uZXkn LCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKHRp bWVzdGFtcCknLCBhZ2d0cmFuc2ZuID0+ICd0aW1lc3RhbXBfc21hbGxlcicsCiAgIGFnZ2NvbWJp bmVmbiA9PiAndGltZXN0YW1wX3NtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwodGltZXN0YW1wLHRp bWVzdGFtcCknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ3RpbWVzdGFtcCcgfSwKKyAgYWdndHJhbnN0 eXBlID0+ICd0aW1lc3RhbXAnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBh Z2dmbm9pZCA9PiAnbWluKHRpbWVzdGFtcHR6KScsIGFnZ3RyYW5zZm4gPT4gJ3RpbWVzdGFtcHR6 X3NtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3RpbWVzdGFtcHR6X3NtYWxsZXInLAotICBh Z2dzb3J0b3AgPT4gJzwodGltZXN0YW1wdHosdGltZXN0YW1wdHopJywgYWdndHJhbnN0eXBlID0+ ICd0aW1lc3RhbXB0eicgfSwKKyAgYWdnc29ydG9wID0+ICc8KHRpbWVzdGFtcHR6LHRpbWVzdGFt cHR6KScsIGFnZ3RyYW5zdHlwZSA9PiAndGltZXN0YW1wdHonLAorICBhZ2dwYXJ0aWFscHVzaGRv d25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKGludGVydmFsKScsIGFnZ3RyYW5z Zm4gPT4gJ2ludGVydmFsX3NtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ2ludGVydmFsX3Nt YWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwoaW50ZXJ2YWwsaW50ZXJ2YWwpJywKLSAgYWdndHJhbnN0 eXBlID0+ICdpbnRlcnZhbCcgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdpbnRlcnZhbCcsIGFnZ3Bh cnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lkID0+ICdtaW4odGV4dCknLCBh Z2d0cmFuc2ZuID0+ICd0ZXh0X3NtYWxsZXInLAogICBhZ2djb21iaW5lZm4gPT4gJ3RleHRfc21h bGxlcicsIGFnZ3NvcnRvcCA9PiAnPCh0ZXh0LHRleHQpJywKLSAgYWdndHJhbnN0eXBlID0+ICd0 ZXh0JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ3RleHQnLCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZl ID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKG51bWVyaWMpJywgYWdndHJhbnNmbiA9PiAn bnVtZXJpY19zbWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ICdudW1lcmljX3NtYWxsZXInLCBh Z2dzb3J0b3AgPT4gJzwobnVtZXJpYyxudW1lcmljKScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAnbnVt ZXJpYycgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdudW1lcmljJywgYWdncGFydGlhbHB1c2hkb3du c2FmZSA9PiAndCcgfSwKIHsgYWdnZm5vaWQgPT4gJ21pbihhbnlhcnJheSknLCBhZ2d0cmFuc2Zu ID0+ICdhcnJheV9zbWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ICdhcnJheV9zbWFsbGVyJywg YWdnc29ydG9wID0+ICc8KGFueWFycmF5LGFueWFycmF5KScsCi0gIGFnZ3RyYW5zdHlwZSA9PiAn YW55YXJyYXknIH0sCisgIGFnZ3RyYW5zdHlwZSA9PiAnYW55YXJyYXknLCBhZ2dwYXJ0aWFscHVz aGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKGJwY2hhciknLCBhZ2d0cmFu c2ZuID0+ICdicGNoYXJfc21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9PiAnYnBjaGFyX3NtYWxs ZXInLCBhZ2dzb3J0b3AgPT4gJzwoYnBjaGFyLGJwY2hhciknLAotICBhZ2d0cmFuc3R5cGUgPT4g J2JwY2hhcicgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdicGNoYXInLCBhZ2dwYXJ0aWFscHVzaGRv d25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKHRpZCknLCBhZ2d0cmFuc2ZuID0+ ICd0aWRzbWFsbGVyJywKICAgYWdnY29tYmluZWZuID0+ICd0aWRzbWFsbGVyJywgYWdnc29ydG9w ID0+ICc8KHRpZCx0aWQpJywKLSAgYWdndHJhbnN0eXBlID0+ICd0aWQnIH0sCisgIGFnZ3RyYW5z dHlwZSA9PiAndGlkJywgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIHsgYWdnZm5v aWQgPT4gJ21pbihhbnllbnVtKScsIGFnZ3RyYW5zZm4gPT4gJ2VudW1fc21hbGxlcicsCiAgIGFn Z2NvbWJpbmVmbiA9PiAnZW51bV9zbWFsbGVyJywgYWdnc29ydG9wID0+ICc8KGFueWVudW0sYW55 ZW51bSknLAotICBhZ2d0cmFuc3R5cGUgPT4gJ2FueWVudW0nIH0sCisgIGFnZ3RyYW5zdHlwZSA9 PiAnYW55ZW51bScsIGFnZ3BhcnRpYWxwdXNoZG93bnNhZmUgPT4gJ3QnIH0sCiB7IGFnZ2Zub2lk ID0+ICdtaW4oaW5ldCknLCBhZ2d0cmFuc2ZuID0+ICduZXR3b3JrX3NtYWxsZXInLAogICBhZ2dj b21iaW5lZm4gPT4gJ25ldHdvcmtfc21hbGxlcicsIGFnZ3NvcnRvcCA9PiAnPChpbmV0LGluZXQp JywKLSAgYWdndHJhbnN0eXBlID0+ICdpbmV0JyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2luZXQn LCBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dmbm9pZCA9PiAnbWluKHBn X2xzbiknLCBhZ2d0cmFuc2ZuID0+ICdwZ19sc25fc21hbGxlcicsCiAgIGFnZ2NvbWJpbmVmbiA9 PiAncGdfbHNuX3NtYWxsZXInLCBhZ2dzb3J0b3AgPT4gJzwocGdfbHNuLHBnX2xzbiknLAotICBh Z2d0cmFuc3R5cGUgPT4gJ3BnX2xzbicgfSwKKyAgYWdndHJhbnN0eXBlID0+ICdwZ19sc24nICwg YWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCd9LAogCiAjIGNvdW50CiB7IGFnZ2Zub2lkID0+ ICdjb3VudChhbnkpJywgYWdndHJhbnNmbiA9PiAnaW50OGluY19hbnknLAogICBhZ2djb21iaW5l Zm4gPT4gJ2ludDhwbCcsIGFnZ210cmFuc2ZuID0+ICdpbnQ4aW5jX2FueScsCiAgIGFnZ21pbnZ0 cmFuc2ZuID0+ICdpbnQ4ZGVjX2FueScsIGFnZ3RyYW5zdHlwZSA9PiAnaW50OCcsCi0gIGFnZ210 cmFuc3R5cGUgPT4gJ2ludDgnLCBhZ2dpbml0dmFsID0+ICcwJywgYWdnbWluaXR2YWwgPT4gJzAn IH0sCisgIGFnZ210cmFuc3R5cGUgPT4gJ2ludDgnLCBhZ2dpbml0dmFsID0+ICcwJywgYWdnbWlu aXR2YWwgPT4gJzAnLAorICBhZ2dwYXJ0aWFscHVzaGRvd25zYWZlID0+ICd0JyB9LAogeyBhZ2dm bm9pZCA9PiAnY291bnQoKScsIGFnZ3RyYW5zZm4gPT4gJ2ludDhpbmMnLCBhZ2djb21iaW5lZm4g PT4gJ2ludDhwbCcsCiAgIGFnZ210cmFuc2ZuID0+ICdpbnQ4aW5jJywgYWdnbWludnRyYW5zZm4g PT4gJ2ludDhkZWMnLCBhZ2d0cmFuc3R5cGUgPT4gJ2ludDgnLAotICBhZ2dtdHJhbnN0eXBlID0+ ICdpbnQ4JywgYWdnaW5pdHZhbCA9PiAnMCcsIGFnZ21pbml0dmFsID0+ICcwJyB9LAorICBhZ2dt dHJhbnN0eXBlID0+ICdpbnQ4JywgYWdnaW5pdHZhbCA9PiAnMCcsIGFnZ21pbml0dmFsID0+ICcw JywKKyAgYWdncGFydGlhbHB1c2hkb3duc2FmZSA9PiAndCcgfSwKIAogIyB2YXJfcG9wCiB7IGFn Z2Zub2lkID0+ICd2YXJfcG9wKGludDgpJywgYWdndHJhbnNmbiA9PiAnaW50OF9hY2N1bScsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5oIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaAppbmRleCA1OTNkYTlmNzZhOC4uM2I4ZTU0MTUzMmQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYWdncmVnYXRlLmgKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaApAQCAtNTUsNiArNTUsOSBAQCBDQVRBTE9H KHBnX2FnZ3JlZ2F0ZSwyNjAwLEFnZ3JlZ2F0ZVJlbGF0aW9uSWQpCiAJLyogZnVuY3Rpb24gdG8g Y29udmVydCBieXRlYSB0byB0cmFuc3R5cGUgKDAgaWYgbm9uZSkgKi8KIAlyZWdwcm9jCQlhZ2dk ZXNlcmlhbGZuIEJLSV9ERUZBVUxUKC0pIEJLSV9MT09LVVBfT1BUKHBnX3Byb2MpOwogCisJLyog ZnVuY3Rpb24gdG8gY29udmVydCBhZ2dyZWdhdGUgcmVzdWx0IHRvIGJ5dGVhICgwIGlmIG5vbmUp ICovCisJcmVncHJvYwkJYWdncGFydGlhbGNvbnZlcnRlcmZuIEJLSV9ERUZBVUxUKC0pIEJLSV9M T09LVVBfT1BUKHBnX3Byb2MpOworCiAJLyogZm9yd2FyZCBmdW5jdGlvbiBmb3IgbW92aW5nLWFn Z3JlZ2F0ZSBtb2RlICgwIGlmIG5vbmUpICovCiAJcmVncHJvYwkJYWdnbXRyYW5zZm4gQktJX0RF RkFVTFQoLSkgQktJX0xPT0tVUF9PUFQocGdfcHJvYyk7CiAKQEAgLTkxLDYgKzk0LDkgQEAgQ0FU QUxPRyhwZ19hZ2dyZWdhdGUsMjYwMCxBZ2dyZWdhdGVSZWxhdGlvbklkKQogCS8qIGVzdGltYXRl ZCBzaXplIG9mIG1vdmluZy1hZ2cgc3RhdGUgKDAgZm9yIGRlZmF1bHQgZXN0KSAqLwogCWludDMy CQlhZ2dtdHJhbnNzcGFjZSBCS0lfREVGQVVMVCgwKTsKIAorCS8qIHRydWUgaWYgcGFydGlhbCBh Z2dyZWdhdGUgaXMgZmluZSB0byBwdXNoIGRvd24gKi8KKwlib29sCQlhZ2dwYXJ0aWFscHVzaGRv d25zYWZlIEJLSV9ERUZBVUxUKGYpOworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJp YWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAogCS8qIGluaXRpYWwgdmFsdWUgZm9y IHRyYW5zaXRpb24gc3RhdGUgKGNhbiBiZSBOVUxMKSAqLwpAQCAtMTYxLDYgKzE2Nyw3IEBAIGV4 dGVybiBPYmplY3RBZGRyZXNzIEFnZ3JlZ2F0ZUNyZWF0ZShjb25zdCBjaGFyICphZ2dOYW1lLAog CQkJCQkJCQkJIExpc3QgKmFnZ2NvbWJpbmVmbk5hbWUsCiAJCQkJCQkJCQkgTGlzdCAqYWdnc2Vy aWFsZm5OYW1lLAogCQkJCQkJCQkJIExpc3QgKmFnZ2Rlc2VyaWFsZm5OYW1lLAorCQkJCQkJCQkJ IExpc3QgKmFnZ3BhcnRpYWxjb252ZXJ0ZXJmbk5hbWUsCiAJCQkJCQkJCQkgTGlzdCAqYWdnbXRy YW5zZm5OYW1lLAogCQkJCQkJCQkJIExpc3QgKmFnZ21pbnZ0cmFuc2ZuTmFtZSwKIAkJCQkJCQkJ CSBMaXN0ICphZ2dtZmluYWxmbk5hbWUsCkBAIC0xNzUsNiArMTgyLDcgQEAgZXh0ZXJuIE9iamVj dEFkZHJlc3MgQWdncmVnYXRlQ3JlYXRlKGNvbnN0IGNoYXIgKmFnZ05hbWUsCiAJCQkJCQkJCQkg aW50MzIgYWdnbVRyYW5zU3BhY2UsCiAJCQkJCQkJCQkgY29uc3QgY2hhciAqYWdnaW5pdHZhbCwK IAkJCQkJCQkJCSBjb25zdCBjaGFyICphZ2dtaW5pdHZhbCwKLQkJCQkJCQkJCSBjaGFyIHByb3Bh cmFsbGVsKTsKKwkJCQkJCQkJCSBjaGFyIHByb3BhcmFsbGVsLAorCQkJCQkJCQkJIGJvb2wgcGFy dGlhbFB1c2hkb3duU2FmZSk7CiAKICNlbmRpZgkJCQkJCQkvKiBQR19BR0dSRUdBVEVfSCAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggZDZiZjFmMzI3NGIuLmViZjYzZTcyNDQzIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTQ3ODQsNiArNDc4NCwxMiBAQAogeyBvaWQgPT4gJzI3 ODYnLCBkZXNjciA9PiAnYWdncmVnYXRlIHNlcmlhbCBmdW5jdGlvbicsCiAgIHByb25hbWUgPT4g J2ludDhfYXZnX3NlcmlhbGl6ZScsIHByb3JldHR5cGUgPT4gJ2J5dGVhJywKICAgcHJvYXJndHlw ZXMgPT4gJ2ludGVybmFsJywgcHJvc3JjID0+ICdpbnQ4X2F2Z19zZXJpYWxpemUnIH0sCit7IG9p ZCA9PiAnOTYzMCcsIGRlc2NyID0+ICdwYXJ0aWFsIGFnZ3JlZ2F0ZSBjb252ZXJ0ZXIgZnVuY3Rp b24nLAorICBwcm9uYW1lID0+ICdpbnQ4X3N1bV90b19pbnRlcm5hbF9zZXJpYWxpemUnLCBwcm9y ZXR0eXBlID0+ICdieXRlYScsCisgIHByb2FyZ3R5cGVzID0+ICdpbnQ4JywgcHJvc3JjID0+ICdp bnQ4X3N1bV90b19pbnRlcm5hbF9zZXJpYWxpemUnIH0sCit7IG9pZCA9PiAnOTYzMScsIGRlc2Ny ID0+ICdwYXJ0aWFsIGFnZ3JlZ2F0ZSBjb252ZXJ0ZXIgZnVuY3Rpb24nLAorICBwcm9uYW1lID0+ ICdudW1lcmljX3N1bV90b19pbnRlcm5hbF9zZXJpYWxpemUnLCBwcm9yZXR0eXBlID0+ICdieXRl YScsCisgIHByb2FyZ3R5cGVzID0+ICdudW1lcmljJywgcHJvc3JjID0+ICdudW1lcmljX3N1bV90 b19pbnRlcm5hbF9zZXJpYWxpemUnIH0sCiB7IG9pZCA9PiAnMjc4NycsIGRlc2NyID0+ICdhZ2dy ZWdhdGUgZGVzZXJpYWwgZnVuY3Rpb24nLAogICBwcm9uYW1lID0+ICdpbnQ4X2F2Z19kZXNlcmlh bGl6ZScsIHByb3JldHR5cGUgPT4gJ2ludGVybmFsJywKICAgcHJvYXJndHlwZXMgPT4gJ2J5dGVh IGludGVybmFsJywgcHJvc3JjID0+ICdpbnQ4X2F2Z19kZXNlcmlhbGl6ZScgfSwKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9vaWRqb2lucy5vdXQKaW5kZXggMjE1ZWI4OTliZTMuLjg2NDE1MWJiY2Ez IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dApAQCAtMTQ1LDYgKzE0NSw3 IEBAIE5PVElDRTogIGNoZWNraW5nIHBnX2FnZ3JlZ2F0ZSB7YWdnZmluYWxmbn0gPT4gcGdfcHJv YyB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfYWdncmVnYXRlIHthZ2djb21iaW5lZm59ID0+ IHBnX3Byb2Mge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2FnZ3JlZ2F0ZSB7YWdnc2VyaWFs Zm59ID0+IHBnX3Byb2Mge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2FnZ3JlZ2F0ZSB7YWdn ZGVzZXJpYWxmbn0gPT4gcGdfcHJvYyB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcgcGdfYWdncmVn YXRlIHthZ2dwYXJ0aWFsY29udmVydGVyZm59ID0+IHBnX3Byb2Mge29pZH0KIE5PVElDRTogIGNo ZWNraW5nIHBnX2FnZ3JlZ2F0ZSB7YWdnbXRyYW5zZm59ID0+IHBnX3Byb2Mge29pZH0KIE5PVElD RTogIGNoZWNraW5nIHBnX2FnZ3JlZ2F0ZSB7YWdnbWludnRyYW5zZm59ID0+IHBnX3Byb2Mge29p ZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2FnZ3JlZ2F0ZSB7YWdnbWZpbmFsZm59ID0+IHBnX3By b2Mge29pZH0KLS0gCjIuMjUuMQoK --=_88388373736601bba0989923cc796e9f--