Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1ejJKV-0000EO-DT for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Feb 2018 06:35:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ejJKT-0005nW-Lk for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Feb 2018 06:35:37 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ejJKS-0005nC-IW for pgsql-hackers@lists.postgresql.org; Wed, 07 Feb 2018 06:35:37 +0000 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ejJKK-00018g-3O for pgsql-hackers@postgresql.org; Wed, 07 Feb 2018 06:35:34 +0000 Received: by mail-wr0-x241.google.com with SMTP id v15so4428725wrb.8 for ; Tue, 06 Feb 2018 22:35:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=zXIRRyHAUbrwfbqwHLYdwIsnondrw7v7iMqjU2rqm3M=; b=eyhsBX/PSGpSio2x7lygIhWUsXG7YnyYXgveM4Gxxcs/Nky8sW7uTriweB9TtjB/1/ CoOd07bTL32qyJhMCGmDI1uEpVaPS+XX89Us7uG48EJQQzLVzHztW2BcBEJLh462nkpF o+T5zubEwU5Q3AemvAnGRGmrRWNb6wcv46j+RF8ZxzyR9kQdO/lm95rTX1QdReCgtVLM UqWHLH5h2lOMzvAcHwm9zzALAJfIrwUagwRrT6HZXPgYFLEHjUpCkSmmB1+S2GkLRnRq HMUpGpmqeoG+ken703vn7/b3lPNQz+Ff2d2aXByjTt78KeEyOHn+CqIXAqFFFAc20IDs UQTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=zXIRRyHAUbrwfbqwHLYdwIsnondrw7v7iMqjU2rqm3M=; b=AJ4S1FgDrvzJKsvgyzeTMxzy6EkTeKYw9QvPlpKTj4OX3Sy+B2Jk0p/Zfw3xowi4Jx asDFCkz4rQDwnrj0jui/8tWSRQtn1Vr0jd4nG73PP1QvY8twsKXrpaAK5oQhLh3cJ1qe wA1bibn67Bkj7PcIlcqSL+RYDBgNU9ICBvkRcrtVR4TbwhwaQjXs2fPGrgL4tkZH5aWm 5iWEVKaAaW2kDDxWb4cQWOhjW8ujkjZ7GoLpU+yyCd7ZUZL7EFhAFfiRy7599ZG93qIl 1Y8zQPNbS0uHSbv4YADAN/o7jWFsCE+2BpH7/Fe8KVFJ17tr9EDwWanZ7sK9HcvPJE6Q yFPA== X-Gm-Message-State: APf1xPDSM82ihGq1f2Igw81JWwTi0B45ivqPMbMDIXQFmHIhRE7I5tKe o+wLBXCnYCr+GGPlXQHY9UI+IUmMw6Bt4puW8B4= X-Google-Smtp-Source: AH8x226GSUOvAuRTVPTwEg8EFulq+QXnqEMBFCi22ZzEuKp3ze/Ch43F/SGyKCBRCJvd3LikRCVTaVVE5RDebQGF0uw= X-Received: by 10.223.138.164 with SMTP id y33mr4570018wry.224.1517985325186; Tue, 06 Feb 2018 22:35:25 -0800 (PST) MIME-Version: 1.0 Received: by 10.223.196.70 with HTTP; Tue, 6 Feb 2018 22:34:44 -0800 (PST) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> From: Pavel Stehule Date: Wed, 7 Feb 2018 07:34:44 +0100 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: "David G. Johnston" Cc: Pavel Golub , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="001a113c35c2152e1c05649980e8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --001a113c35c2152e1c05649980e8 Content-Type: multipart/alternative; boundary="001a113c35c2152e1805649980e6" --001a113c35c2152e1805649980e6 Content-Type: text/plain; charset="UTF-8" Hi updated patch with your changes in documentation and pg_dump (initial) support Main issue of this patch is storage. We can reuse local buffers used for temp tables. But it does allocation by 8KB and it creates temp files for every object. That is too big overhead. Storing just in session memory is too simple - then there should be lot of new code used, when variable will be dropped. I have ideas how to allow work with mix of scalar and composite types - so it will be next step of this prototype. Regards Pavel > --001a113c35c2152e1805649980e6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi

updated patch with your changes in documentation and pg_dump (in= itial) support

Main issue of this p= atch is storage. We can reuse local buffers used for temp tables. But it do= es allocation by 8KB and it creates temp files for every object. That is to= o big overhead. Storing just in session memory is too simple - then there s= hould be lot of new code used, when variable will be dropped.

=
I have ideas how to allow work with mix of scala= r and composite types - so it will be next step of this prototype.

<= /div>
Regards

Pavel
<= div class=3D"gmail_quote">

=


--001a113c35c2152e1805649980e6-- --001a113c35c2152e1c05649980e8 Content-Type: application/octet-stream; name=schema-variables-poc-180207-01-diff Content-Disposition: attachment; filename=schema-variables-poc-180207-01-diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_jdcp1c0s0 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggNzFlMjBmMjc0MC4uZmJmNzhlNjAyZCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTE4MTMsNyArMTgxMyw4IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVy YXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgPGxp dGVyYWw+bTwvbGl0ZXJhbD4gPSBtYXRlcmlhbGl6ZWQgdmlldywKICAgICAgICA8bGl0ZXJhbD5j PC9saXRlcmFsPiA9IGNvbXBvc2l0ZSB0eXBlLAogICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ ID0gZm9yZWlnbiB0YWJsZSwKLSAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IHBhcnRpdGlv bmVkIHRhYmxlCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBwYXJ0aXRpb25lZCB0YWJs ZSwKKyAgICAgICA8bGl0ZXJhbD5WPC9saXRlcmFsPiA9IHNjaGVtYSB2YXJpYWJsZQogICAgICAg PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNn bWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDY0MGZmMDlhN2IuLjhlNjUyZTAxY2Mg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1 bmMuc2dtbApAQCAtMTU3NDMsNiArMTU3NDMsODMgQEAgU0VMRUNUICogRlJPTSBwZ19sc19kaXIo Jy4nKSBXSVRIIE9SRElOQUxJVFkgQVMgdChscyxuKTsKIAogIDwvc2VjdDE+CiAKKyA8c2VjdDEg aWQ9ImZ1bmN0aW9ucy1zY2hlbWF2YXIiPgorICA8dGl0bGU+U2NoZW1hIFZhcmlhYmxlIEZ1bmN0 aW9uczwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJmdW5jdGlvbnMtc2NoZW1hdmFyIj4K KyAgIDxwcmltYXJ5PlNjaGVtYSBWYXJpYWJsZSBGdW5jdGlvbnM8L3ByaW1hcnk+CisgICA8c2Vj b25kYXJ5PmZ1bmN0aW9uczwvc2Vjb25kYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8aW5kZXh0 ZXJtPgorICAgPHByaW1hcnk+Z2V0X3NjaGVtYV92YXJpYWJsZTwvcHJpbWFyeT4KKyAgPC9pbmRl eHRlcm0+CisKKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5PnNldF9zY2hlbWFfdmFyaWFibGU8 L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlc2UgZnVuY3Rpb25z IGFsbG93IHJlYWRpbmcgYW5kIHdyaXRpbmcgc2NoZW1hIHZhcmlhYmxlcyB2YWx1ZXMuCisgICBJ ZiB0aGUgc2NoZW1hIHZhcmlhYmxlIHJlZmVyZW5jZWQgZG9lcyBub3QgZXhpc3QgKGNyZWF0ZWQg dXNpbmcgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+KQorICAgdGhlc2UgZnVu Y3Rpb25zIHdpbGwgKGRvIHNvbWV0aGluZy4uLikuCisgIDwvcGFyYT4KKworICA8dGFibGUgaWQ9 ImZ1bmN0aW9ucy1zY2hlbWF2YXItdGFiIj4KKyAgIDx0aXRsZT5GdW5jdGlvbnMgZm9yIGFjY2Vz cyB0byBzY2hlbWEgdmFyaWFibGVzPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAg PHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5PkZ1bmN0aW9uPC9lbnRyeT4KKyAgICAg IDxlbnRyeT5Bcmd1bWVudCBUeXBlPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5SZXR1cm4gVHlwZTwv ZW50cnk+CisgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICA8L3RoZWFkPgorICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJh bD48ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZSg8cGFyYW1ldGVyPnZhcmlhYmxlPC9wYXJh bWV0ZXI+LCA8cGFyYW1ldGVyPmV4cGVjdGVkIHR5cGU8L3BhcmFtZXRlcj4pPC9mdW5jdGlvbj48 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5yZWdjbGFzczwvdHlwZT4sIDx0 eXBlPmFueWVsZW1lbnQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5hbnllbGVt ZW50PC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgUmV0dXJucyB2YWx1ZSBv ZiBzY2hlbWEgdmFyaWFibGUgY29udmVydGVkIHRvIGV4cGVjdGVkIHR5cGUuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPjxm dW5jdGlvbj5zZXRfc2NoZW1hX3ZhcmlhYmxlKDxwYXJhbWV0ZXI+dmFyaWFibGU8L3BhcmFtZXRl cj4sIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4pPC9mdW5jdGlvbj48L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5yZWdjbGFzczwvdHlwZT4sIDx0eXBlPmFueWVsZW1l bnQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT52b2lkPC90eXBlPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgU2V0cyB0aGUgdmFsdWUgb2Ygc2NoZW1hIHZhcmlhYmxl IHRvIHZhbHVlLCBhZnRlciBjb252ZXJ0aW5nIHRoZSBpbnB1dCB0byB0aGUgY29ycmVjdCB0eXBl LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAgPC90Z3Jv dXA+CisgIDwvdGFibGU+CisgIDxwYXJhPgorICBBbiBleGFtcGxlOgorCis8cHJvZ3JhbWxpc3Rp bmc+CitDUkVBVEUgVEVNUCBWQVJJQUJMRSBmb28gQVMgbnVtZXJpYzsKK1NFTEVDVCBzZXRfc2No ZW1hX3ZhcmlhYmxlKCdmb28nLCAzNDUuNDQ1KTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBnZXRfc2NoZW1hX3Zhcmlh YmxlKCdmb28nLCBudWxsOjpudW1lcmljKTsKKworIGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAzNDUuNDQ1CisoMSByb3cpCis8L3Byb2dy YW1saXN0aW5nPgorICA8L3BhcmE+CisKKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJmdW5jdGlv bnMtaW5mbyI+CiAgIDx0aXRsZT5TeXN0ZW0gSW5mb3JtYXRpb24gRnVuY3Rpb25zPC90aXRsZT4K IApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9hbGxmaWxlcy5zZ21sCmluZGV4IDIyZTY4OTMyMTEuLjFkMzRmNzJiZGQgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2FsbGZpbGVzLnNnbWwKQEAgLTk5LDYgKzk5LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBjcmVhdGVU eXBlICAgICAgICAgU1lTVEVNICJjcmVhdGVfdHlwZS5zZ21sIj4KIDwhRU5USVRZIGNyZWF0ZVVz ZXIgICAgICAgICBTWVNURU0gImNyZWF0ZV91c2VyLnNnbWwiPgogPCFFTlRJVFkgY3JlYXRlVXNl ck1hcHBpbmcgIFNZU1RFTSAiY3JlYXRlX3VzZXJfbWFwcGluZy5zZ21sIj4KKzwhRU5USVRZIGNy ZWF0ZVZhcmlhYmxlICAgICBTWVNURU0gImNyZWF0ZV92YXJpYWJsZS5zZ21sIj4KIDwhRU5USVRZ IGNyZWF0ZVZpZXcgICAgICAgICBTWVNURU0gImNyZWF0ZV92aWV3LnNnbWwiPgogPCFFTlRJVFkg ZGVhbGxvY2F0ZSAgICAgICAgIFNZU1RFTSAiZGVhbGxvY2F0ZS5zZ21sIj4KIDwhRU5USVRZIGRl Y2xhcmUgICAgICAgICAgICBTWVNURU0gImRlY2xhcmUuc2dtbCI+CkBAIC0xNDcsNiArMTQ4LDcg QEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJl Y3RvcnkuCiA8IUVOVElUWSBkcm9wVHlwZSAgICAgICAgICAgU1lTVEVNICJkcm9wX3R5cGUuc2dt bCI+CiA8IUVOVElUWSBkcm9wVXNlciAgICAgICAgICAgU1lTVEVNICJkcm9wX3VzZXIuc2dtbCI+ CiA8IUVOVElUWSBkcm9wVXNlck1hcHBpbmcgICAgU1lTVEVNICJkcm9wX3VzZXJfbWFwcGluZy5z Z21sIj4KKzwhRU5USVRZIGRyb3BWYXJpYWJsZSAgICAgICBTWVNURU0gImRyb3BfdmFyaWFibGUu c2dtbCI+CiA8IUVOVElUWSBkcm9wVmlldyAgICAgICAgICAgU1lTVEVNICJkcm9wX3ZpZXcuc2dt bCI+CiA8IUVOVElUWSBlbmQgICAgICAgICAgICAgICAgU1lTVEVNICJlbmQuc2dtbCI+CiA8IUVO VElUWSBleGVjdXRlICAgICAgICAgICAgU1lTVEVNICJleGVjdXRlLnNnbWwiPgpAQCAtMTU1LDYg KzE1Nyw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRo aXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZ3JhbnQgICAgICAgICAgICAgIFNZU1RFTSAiZ3JhbnQu c2dtbCI+CiA8IUVOVElUWSBpbXBvcnRGb3JlaWduU2NoZW1hIFNZU1RFTSAiaW1wb3J0X2ZvcmVp Z25fc2NoZW1hLnNnbWwiPgogPCFFTlRJVFkgaW5zZXJ0ICAgICAgICAgICAgIFNZU1RFTSAiaW5z ZXJ0LnNnbWwiPgorPCFFTlRJVFkgbGV0ICAgICAgICAgICAgICAgIFNZU1RFTSAibGV0LnNnbWwi PgogPCFFTlRJVFkgbGlzdGVuICAgICAgICAgICAgIFNZU1RFTSAibGlzdGVuLnNnbWwiPgogPCFF TlRJVFkgbG9hZCAgICAgICAgICAgICAgIFNZU1RFTSAibG9hZC5zZ21sIj4KIDwhRU5USVRZIGxv Y2sgICAgICAgICAgICAgICBTWVNURU0gImxvY2suc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wMjA1 ZTQzNjVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFi bGUuc2dtbApAQCAtMCwwICsxLDE0OSBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dmFyaWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5 IGlkPSJzcWwtY3JlYXRldmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWNyZWF0ZXZh cmlhYmxlIj4KKyAgPHByaW1hcnk+Q1JFQVRFIFZBUklBQkxFPC9wcmltYXJ5PgorIDwvaW5kZXh0 ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkNSRUFURSBWQVJJQUJMRTwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+Q1JFQVRFIFZBUklBQkxFPC9yZWZuYW1lPgorICA8cmVm cHVycG9zZT5kZWZpbmUgYSBuZXcgcGVybWlzc2lvbmVkIHR5cGVkIHNjaGVtYSB2YXJpYWJsZTwv cmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3Bz aXM+CitDUkVBVEUgVkFSSUFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IF0KKzwvc3lub3BzaXM+CisgPC9y ZWZzeW5vcHNpc2Rpdj4KKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+ CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+IGNyZWF0 ZXMgYSBuZXcgc2NoZW1hIHZhcmlhYmxlLgorICAgVGhlc2UgdmFyaWFibGVzIGFyZSBzY2FsYXIg dHlwZWQsIG5vbi10cmFuc2FjdGlvbmFsLCBhbmQsIGxpa2UgcmVsYXRpb25zLAorICAgZXhpc3Qg d2l0aGluIGEgc2NoZW1hIHdpdGggYWNjZXNzIGNvbnRyb2xsZWQgdmlhCisgICA8Y29tbWFuZD5H UkFOVDwvY29tbWFuZD4gYW5kIDxjb21tYW5kPlJFVk9LRTwvY29tbWFuZD4uCisgIDwvcGFyYT4K KworICA8cGFyYT4KKyAgIFRoZSB2YWx1ZSBvZiBhIHNjaGVtYSB2YXJpYWJsZSBpcyBzZXNzaW9u LWxvY2FsLiBSZXRyaWV2aW5nCisgICBhIHZhcmlhYmxlJ3MgdmFsdWUgd2lsbCByZXR1cm4gTlVM TCB1bmxlc3MgaXRzIHZhbHVlIGhhcyBiZWVuIHNldAorICAgdG8gc29tZXRoaW5nIGVsc2UgaW4g dGhlIGN1cnJlbnQgc2Vzc2lvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgUmV0cmlldmFs IGlzIGRvbmUgdmlhIHRoZSA8ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+ ZHVueHJpb24gb3IgdGhlIFNRTAorICAgY29tbWFuZCA8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1hbmQ+ LiAgU2V0dGluZyBvZiB2YWx1ZXMgaXMgZG9uZSB2aWEgdGhlCisgICA8ZnVuY3Rpb24+c2V0X3Nj aGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IGZ1bmN0aW9uIG9yIHRoZSBTUUwgY29tbWFuZAorICAg PGNvbW1hbmQ+TEVUPC9jb21tYW5kPi4KKyAgIE5vdGFibHksIHdoaWxlIHNjaGVtYSB2YXJpYWJs ZXMgYXJlIGluIG1hbnkgd2F5cyBhIGtpbmQgb2YgdGFibGUgeW91IGNhbm5vdCB1c2UKKyAgIDxj b21tYW5kPlVQREFURTwvY29tbWFuZD4gb24gdGhlbS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgor ICAgRm9yIHB1cnBvc2VzIG9mIG5hbWUgdW5pcXVlbmVzcyByZWxhdGlvbi1saWtlIG9iamVjdHMg KGUuZy4sIHRhYmxlcywgaW5kZXhlcykKKyAgIHdpdGhpbiB0aGUgc2FtZSBzY2hlbWEgYXJlIGNv bnNpZGVyZWQuICBpLmUuLCB5b3UgY2Fubm90IGdpdmUgYSB0YWJsZSBhbmQgYQorICAgc2NoZW1h IHZhcmlhYmxlIHRoZSBzYW1lIG5hbWUuICBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgdGhlbSBi ZWluZyB0cmVhdGVkCisgICBsaWtlIHJlbGF0aW9ucyBmb3IgcHVycG9zZXMgb2YgPGNvbW1hbmQ+ U0VMRUNUPC9jb21tYW5kPi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBOT1QgRVhJU1RTPC9saXRlcmFsPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRG8gbm90IHRocm93IGFu IGVycm9yIGlmIHRoZSBuYW1lIGFscmVhZHkgZXhpc3RzLiBBIG5vdGljZSBpcyBpc3N1ZWQgaW4g dGhpcyBjYXNlLgorICAgICAgTm90ZSB0aGF0IHR5cGUgb2YgdGhlIHZhcmlhYmxlIGlzIG5vdCBj b25zaWRlcmVkLCBub3IgY291bGQgaXQgYmUgc2luY2UgdGhlIG5hbWVzcGFjZQorICAgICAgc2Vh cmNoZWQgY29udGFpbnMgbm9uLXZhcmlhYmxlIG9iamVjdHMuCisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgKG9wdGlv bmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIHZhcmlhYmxlIHRvIGJlIGNyZWF0ZWQuCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRh dGFfdHlwZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiB0aGUgZGF0 YSB0eXBlIG9mIHRoZSB2YXJpYWJsZSB0byBiZSBjcmVhdGVkLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3Jl ZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorCisgIDxwYXJh PgorICAgVXNlIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IHRvIHJlbW92ZSBhIHZh cmlhYmxlLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxl PkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhbiBpbnRlZ2VyIHZhcmlh YmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVyYWw+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFZB UklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIFNldCB0aGlzIHZhcmlhYmxlJ3MgdmFsdWU7IHRoZW4gcmV0cmlldmUgaXQg Y29udmVydGVkIHRvIG51bWVyaWMuCis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgVkFSSUFCTEUK K3Bvc3RncmVzPSMgc2VsZWN0IHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAxMCk7Cisgc2V0 X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitw b3N0Z3Jlcz0jIHNlbGVjdCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJp Yyk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgMTAKKygxIHJvdykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKyA8 L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+ CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+IGlzIGEg UG9zdGdyZVNRTCBmZWF0dXJlLgorICAgPCEtLSBUaGUgY2hvaWNlIG9mIHdvcmRpbmcgaGVyZSBz ZWVtcyB0byBiZSBsZWZ0IHRvIHBlcnNvbmFsIHByZWZlcmVuY2UuLi4gLS0+CisgIDwvcGFyYT4K KyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgor CisgIDxzaW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9 InNxbC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2Vj dDE+CisKKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCmluZGV4IDZiOTA5YjcyMzIuLjM5 NTQ1M2JiYTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCkBAIC0yMSw3ICsyMSw3IEBAIFBvc3RncmVT UUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgotRElTQ0FS RCB7IEFMTCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVNUE9SQVJZIHwgVEVNUCB9CitESVNDQVJE IHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIHwgVkFSSUFCTEVT fQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC03NSw2ICs3NSwxNiBAQCBE SVNDQVJEIHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIH0KICAg ICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgPHRlcm0+PGxpdGVyYWw+VkFSSUFCTEVTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgU2V0cyB0aGUgdmFsdWUgb2YgYWxsIHNjaGVtYSB2YXJp YWJsZXMgdG8gTlVMTC4KKyAgICAgIDwhLS0gV2hhdCBoYXBwZW5zIHRvIHRlbXBvcmFyeSBzY2hl bWEgdmFyaWFibGVzIC0tPgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFy bGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPkFMTDwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUu c2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wNjEzMGZkNTEwCi0t LSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwKQEAg LTAsMCArMSw5MiBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwK K1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWRyb3B2 YXJpYWJsZSI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtZHJvcHZhcmlhYmxlIj4KKyAgPHByaW1h cnk+RFJPUCBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgor ICA8cmVmZW50cnl0aXRsZT5EUk9QIFZBUklBQkxFPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9s bnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVu dHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFt ZT5EUk9QIFZBUklBQkxFPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5yZW1vdmUgYSBzY2hlbWEg dmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2 PgorPHN5bm9wc2lzPgorRFJPUCBWQVJJQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBbIENBU0NBREUgfCBS RVNUUklDVCBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5E Uk9QIFZBUklBQkxFPC9jb21tYW5kPiByZW1vdmVzIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgQSB2 YXJpYWJsZSBjYW4gb25seSBiZSBkcm9wcGVkIGJ5IGl0cyBvd25lciBvciBhIHN1cGVydXNlci4K KyAgIDwhLS0gdGhpcyB3b3VsZCBzdWdnZXN0IHRoYXQgd2UgbmVlZCBhbiBhbHRlciB2YXJpYWJs ZSBvd25lciB0byBjb21tYW5kIC0tPgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZz ZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+Cisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPklGIEVYSVNUUzwvbGl0ZXJhbD48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBh biBlcnJvciBpZiB0aGUgdmFyaWFibGUgZG9lcyBub3QgZXhpc3QuIEEgbm90aWNlIGlzIGlzc3Vl ZAorICAgICAgaW4gdGhpcyBjYXNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNjaGVtYS1x dWFsaWZpZWQpIG9mIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3Qx PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJhPgor ICAgVG8gcmVtb3ZlIHRoZSBzY2hlbWEgdmFyaWFibGUgPGxpdGVyYWw+dmFyMTwvbGl0ZXJhbD46 CisKKzxwcm9ncmFtbGlzdGluZz4KK0RST1AgVkFSSUFCTEUgdmFyMTsKKzwvcHJvZ3JhbWxpc3Rp bmc+PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRp YmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2Nv bW1hbmQ+IGlzIHByb3ByaWV0YXJ5IFBvc3RncmVTUUwgY29tbWFuZC4KKyAgIDwhLS0gY3JlYXRl IHZhcmlhYmxlIGlzIGEgIlBvc3RncmVTUUwgZmVhdHVyZSIsCisgICAgICAgIHRoaXMgaXMgYSAi cHJvcHJpZXRhcnkgUG9zdGdyZVNRTCBjb21tYW5kIiAuLi4gLS0+CisgIDwvcGFyYT4KKyA8L3Jl ZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxz aW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1j cmVhdGV2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4K KworPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbAppbmRleCBmZjY0YzdhM2JhLi4wMDYzNjRlYmU1 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9ncmFudC5zZ21sCkBAIC03OSw2ICs3OSwxMiBAQCBHUkFOVCB7IFVTQUdFIHwgQUxM IFsgUFJJVklMRUdFUyBdIH0KICAgICBPTiBUWVBFIDxyZXBsYWNlYWJsZT50eXBlX25hbWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi5dCiAgICAgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIIEdSQU5UIE9Q VElPTiBdCiAKK0dSQU5UIHsgeyBTRUxFQ1QgfCBVUERBVEUgfQorICAgIFssIC4uLl0gfCBBTEwg WyBQUklWSUxFR0VTIF0gfQorICAgIE9OIHsgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgICB8 IEFMTCBWQVJJQUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z Y2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAgIFRPIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5d IFsgV0lUSCBHUkFOVCBPUFRJT04gXQorCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBjYW4gYmU6PC9w aHJhc2U+CiAKICAgICBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJv bGVfbmFtZTwvcmVwbGFjZWFibGU+CkBAIC0xNjcsNiArMTczLDcgQEAgR1JBTlQgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gVE8g PHJlcGxhY2UKICAgIGZvcmVpZ24gc2VydmVycywKICAgIGxhcmdlIG9iamVjdHMsCiAgICBzY2hl bWFzLAorICAgc2NoZW1hIHZhcmlhYmxlcywKICAgIG9yIHRhYmxlc3BhY2VzLgogICAgRm9yIG90 aGVyIHR5cGVzIG9mIG9iamVjdHMsIHRoZSBkZWZhdWx0IHByaXZpbGVnZXMKICAgIGdyYW50ZWQg dG8gPGxpdGVyYWw+UFVCTElDPC9saXRlcmFsPiBhcmUgYXMgZm9sbG93czoKQEAgLTIwNCw2ICsy MTEsOCBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgICAgIEZvciBzZXF1ZW5jZXMsIHRo aXMgcHJpdmlsZWdlIGFsc28gYWxsb3dzIHRoZSB1c2Ugb2YgdGhlCiAgICAgICAgPGZ1bmN0aW9u PmN1cnJ2YWw8L2Z1bmN0aW9uPiBmdW5jdGlvbi4KICAgICAgICBGb3IgbGFyZ2Ugb2JqZWN0cywg dGhpcyBwcml2aWxlZ2UgYWxsb3dzIHRoZSBvYmplY3QgdG8gYmUgcmVhZC4KKyAgICAgICBGb3Ig c2NoZW1hIHZhcmlhYmxlcywgdGhpcyBwcml2aWxlZ2UgYWxsb3dzIHRoZSA8ZnVuY3Rpb24+Z2V0 X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+CisgICAgICAgdG8gcmVhZCB0aGUgdmFyaWFibGUn cyB2YWx1ZS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3Rl bnRyeT4KQEAgLTIzOSw2ICsyNDgsOSBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgICAg IDxmdW5jdGlvbj5zZXR2YWw8L2Z1bmN0aW9uPiBmdW5jdGlvbnMuCiAgICAgICAgRm9yIGxhcmdl IG9iamVjdHMsIHRoaXMgcHJpdmlsZWdlIGFsbG93cyB3cml0aW5nIG9yIHRydW5jYXRpbmcgdGhl CiAgICAgICAgb2JqZWN0LgorICAgICAgIEZvciBzY2hlbWEgdmFyaWFibGVzLCB0aGlzIHByaXZp bGVnZSBhbGxvd3MgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPgorICAgICAgIGFuZCA8ZnVuY3Rpb24+ c2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IHRvIG1vZGlmeSB0aGUgc2NoZW1hIHZhcmlh YmxlJ3MKKyAgICAgICB2YWx1ZS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmU4YmYzZjZkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2xldC5zZ21sCkBAIC0wLDAgKzEsOTAgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNn bWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWxl dCI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtbGV0Ij4KKyAgPHByaW1hcnk+TEVUPC9wcmltYXJ5 PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkxFVDwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+TEVUPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5jaGFu Z2UgYSBzY2hlbWEgdmFyaWFibGUncyB2YWx1ZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+ CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitMRVQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV92YXJpYWJsZTwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNxbF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKzwvc3lub3Bz aXM+CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0 aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNv bW1hbmQgdXBkYXRlcyB0aGUgc3BlY2lmaWVkIHNjaGVtYSB2YXJpYWJsZScgdmFsdWUuCisgIDwv cGFyYT4KKworIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJz PC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVy bT48bGl0ZXJhbD5zY2hlbWFfdmFyaWFibGU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSBvZiBzY2hlbWEgdmFyaWFibGUuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+c3FsIGV4cHJlc3Npb248L2xpdGVyYWw+PC90 ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBbiBTUUwgZXhwcmVzc2lv biwgdGhlIHJlc3VsdCBpcyBjYXN0IHRvIHRoZSBzY2hlbWEgdmFyaWFibGUncyB0eXBlLgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3Zhcmlh YmxlbGlzdD4KKworICA8cGFyYT4KKyAgIEV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVB VEUgVkFSSUFCTEUgbXl2YXIgQVMgaW50ZWdlcjsKK0xFVCBteXZhciA9IDEwOworTEVUIG15dmFy ID0gKFNFTEVDVCBzdW0odmFsKSBGUk9NIHRhYik7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3Bh cmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8 L3RpdGxlPgorCisgIDxwYXJhPgorICAgPCEtLSB0aGlzIGZlZWxzIGxpa2UgaXQgbmVlZHMgdG8g YmUgbW9yZSBzcGVjaWZpYywKKyAgICAgICAgYnV0IEkgZG9uJ3Qga25vdyBlbm91Z2ggdG8gbWFr ZSBpdCBzbyAtLT4KKyAgIDxsaXRlcmFsPkxFVDwvbGl0ZXJhbD4gZXh0ZW5kcyBzeW50YXggZGVm aW5lZCBpbiB0aGUgU1FMCisgICBzdGFuZGFyZC4gVGhlIHN0YW5kYXJkIGtub3dzIDxsaXRlcmFs PlNFVDwvbGl0ZXJhbD4gY29tbWFuZCwKKyAgIHRoYXQgaXMgdXNlZCBmb3IgZGlmZmVyZW50IHB1 cnBvdXNlIGluIFBvc3RncmVTUUwuCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNl Y3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxzaW1wbGVsaXN0IHR5cGU9Imlu bGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV2YXJpYWJsZSIvPjwv bWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9t ZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jl dm9rZS5zZ21sCmluZGV4IDcwMTgyMDJmMTQuLjczNzc4ZjAxZjkgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dt bApAQCAtMTA4LDYgKzEwOCwxNCBAQCBSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KIFJFVk9L RSBbIEFETUlOIE9QVElPTiBGT1IgXQogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIEZST00gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICBbIENBU0NB REUgfCBSRVNUUklDVCBdCisKK1JFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQorICAgIHsgeyBT RUxFQ1QgfCBVUERBVEUgfQorICAgIFssIC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAg IE9OIHsgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhcmlhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgICB8IEFMTCBWQVJJQUJMRVMgSU4gU0NI RU1BIDxyZXBsYWNlYWJsZT5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAg IEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFt ZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXQorICAgIFsgQ0FTQ0FERSB8IFJFU1RS SUNUIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCmlu ZGV4IGQyN2ZiNDE0ZjcuLmIzZjlmZmY1MTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZl cmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTEyNyw2ICsx MjcsNyBAQAogICAgJmNyZWF0ZVR5cGU7CiAgICAmY3JlYXRlVXNlcjsKICAgICZjcmVhdGVVc2Vy TWFwcGluZzsKKyAgICZjcmVhdGVWYXJpYWJsZTsKICAgICZjcmVhdGVWaWV3OwogICAgJmRlYWxs b2NhdGU7CiAgICAmZGVjbGFyZTsKQEAgLTE3NSw2ICsxNzYsNyBAQAogICAgJmRyb3BUeXBlOwog ICAgJmRyb3BVc2VyOwogICAgJmRyb3BVc2VyTWFwcGluZzsKKyAgICZkcm9wVmFyaWFibGU7CiAg ICAmZHJvcFZpZXc7CiAgICAmZW5kOwogICAgJmV4ZWN1dGU7CkBAIC0xODMsNiArMTg1LDcgQEAK ICAgICZncmFudDsKICAgICZpbXBvcnRGb3JlaWduU2NoZW1hOwogICAgJmluc2VydDsKKyAgICZs ZXQ7CiAgICAmbGlzdGVuOwogICAgJmxvYWQ7CiAgICAmbG9jazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmlu ZGV4IDExNTY2MjdiOWUuLjI2ODUzNGVhODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtMjg0LDYg KzI4NCw5IEBAIHJlc3RyaWN0X2FuZF9jaGVja19ncmFudChib29sIGlzX2dyYW50LCBBY2xNb2Rl IGF2YWlsX2dvcHRpb25zLCBib29sIGFsbF9wcml2cywKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJ CXdob2xlX21hc2sgPSBBQ0xfQUxMX1JJR0hUU19UWVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JK RUNUX1ZBUklBQkxFOgorCQkJd2hvbGVfbWFzayA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOwor CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVj dCB0eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJLyogbm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCkBAIC01MDYsNiArNTA5LDEwIEBAIEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRT dG10ICpzdG10KQogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19GT1JFSUdOX1NF UlZFUjsKIAkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBl ICVzIGZvciBmb3JlaWduIHNlcnZlciIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklB QkxFOgorCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVy cm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hl bWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBzdG10LT5vYmp0 eXBlKTsKQEAgLTU3Niw2ICs1ODMsNyBAQCBFeGVjR3JhbnRTdG10X29pZHMoSW50ZXJuYWxHcmFu dCAqaXN0bXQpCiAJewogCQljYXNlIE9CSkVDVF9UQUJMRToKIAkJY2FzZSBPQkpFQ1RfU0VRVUVO Q0U6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJRXhlY0dyYW50X1JlbGF0aW9uKGlzdG10 KTsKIAkJCWJyZWFrOwogCQljYXNlIE9CSkVDVF9EQVRBQkFTRToKQEAgLTY0NSw2ICs2NTMsNyBA QCBvYmplY3ROYW1lc1RvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9iam5hbWVzKQog CXsKIAkJY2FzZSBPQkpFQ1RfVEFCTEU6CiAJCWNhc2UgT0JKRUNUX1NFUVVFTkNFOgorCQljYXNl IE9CSkVDVF9WQVJJQUJMRToKIAkJCWZvcmVhY2goY2VsbCwgb2JqbmFtZXMpCiAJCQl7CiAJCQkJ UmFuZ2VWYXIgICAqcmVsdmFyID0gKFJhbmdlVmFyICopIGxmaXJzdChjZWxsKTsKQEAgLTEwMjEs NiArMTAzMCwxMCBAQCBFeGVjQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBBbHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdCAqcwogCQkJYWxsX3ByaXZpbGVnZXMg PSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUE7CiAJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52 YWxpZCBwcml2aWxlZ2UgdHlwZSAlcyBmb3Igc2NoZW1hIik7CiAJCQlicmVhazsKKwkJY2FzZSBP QkpFQ1RfVkFSSUFCTEU6CisJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklB QkxFOworCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUg JXMgZm9yIHNjaGVtYSB2YXJpYWJsZSIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQp IGFjdGlvbi0+b2JqdHlwZSk7CkBAIC0xMjE4LDYgKzEyMzEsMTIgQEAgU2V0RGVmYXVsdEFDTChJ bnRlcm5hbERlZmF1bHRBQ0wgKmlhY2xzKQogCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExf UklHSFRTX1NDSEVNQTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJ b2JqdHlwZSA9IERFRkFDTE9CSl9WQVJJQUJMRTsKKwkJCWlmIChpYWNscy0+YWxsX3ByaXZzICYm IHRoaXNfcHJpdmlsZWdlcyA9PSBBQ0xfTk9fUklHSFRTKQorCQkJCXRoaXNfcHJpdmlsZWdlcyA9 IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+ b2JqdHlwZSk7CkBAIC0xNDQ0LDYgKzE0NjMsOSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChP aWQgcm9sZWlkLCBPaWQgY2xhc3NpZCwgT2lkIG9iamlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFN RVNQQUNFOgogCQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOwor CQkJY2FzZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9W QVJJQUJMRTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBo ZXJlICovCiAJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQi LApAQCAtMzQ1OSw2ICszNDgxLDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwg T2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0g Z2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdHlwZSAlcyIpOwogCQkJCQkJYnJl YWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29w KCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlICVzIik7CisJCQkJCQlicmVh azsKIAkJCQkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVy bWlzc2lvbiBkZW5pZWQgZm9yIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzU2OSw2ICsz NTk0LDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0 eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJt dXN0IGJlIG93bmVyIG9mIHR5cGUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIE9CSkVD VF9WQVJJQUJMRToKKwkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25lciBvZiBz Y2hlbWEgdmFyaWFibGUgJXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVX OgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHZpZXcgJXMiKTsK IAkJCQkJCWJyZWFrOwpAQCAtMzY4Myw2ICszNzExLDcgQEAgcGdfYWNsbWFzayhPYmplY3RUeXBl IG9ianR5cGUsIE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBPaWQgcm9sZWlkLAog CQkJCXBnX2F0dHJpYnV0ZV9hY2xtYXNrKHRhYmxlX29pZCwgYXR0bnVtLCByb2xlaWQsIG1hc2ss IGhvdyk7CiAJCWNhc2UgT0JKRUNUX1RBQkxFOgogCQljYXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQlyZXR1cm4gcGdfY2xhc3NfYWNsbWFzayh0YWJsZV9v aWQsIHJvbGVpZCwgbWFzaywgaG93KTsKIAkJY2FzZSBPQkpFQ1RfREFUQUJBU0U6CiAJCQlyZXR1 cm4gcGdfZGF0YWJhc2VfYWNsbWFzayh0YWJsZV9vaWQsIHJvbGVpZCwgbWFzaywgaG93KTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMKaW5kZXggMGYzNGY1MzgxYS4uNTU4ZTY0MWQ1NiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAg LTI5MSw2ICsyOTEsNyBAQCBoZWFwX2NyZWF0ZShjb25zdCBjaGFyICpyZWxuYW1lLAogCXN3aXRj aCAocmVsa2luZCkKIAl7CiAJCWNhc2UgUkVMS0lORF9WSUVXOgorCQljYXNlIFJFTEtJTkRfVkFS SUFCTEU6CiAJCWNhc2UgUkVMS0lORF9DT01QT1NJVEVfVFlQRToKIAkJY2FzZSBSRUxLSU5EX0ZP UkVJR05fVEFCTEU6CiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKQEAgLTEwNjcs NyArMTA2OCw5IEBAIGhlYXBfY3JlYXRlX3dpdGhfY2F0YWxvZyhjb25zdCBjaGFyICpyZWxuYW1l LAogCWlmIChleGlzdGluZ19yZWxpZCAhPSBJbnZhbGlkT2lkKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKLQkJCQkgZXJybXNnKCJyZWxh dGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxuYW1lKSkpOworCQkJCSBlcnJtc2coIiVz IFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQlyZWxraW5kID09IFJFTEtJTkRfVkFSSUFC TEUgPyAidmFyaWFibGUiIDogInJlbGF0aW9uIiwKKwkJCQkJCXJlbG5hbWUpKSk7CiAKIAkvKgog CSAqIFNpbmNlIHdlIGFyZSBnb2luZyB0byBjcmVhdGUgYSByb3d0eXBlIGFzIHdlbGwsIGFsc28g Y2hlY2sgZm9yCkBAIC0xMTUwLDYgKzExNTMsMTAgQEAgaGVhcF9jcmVhdGVfd2l0aF9jYXRhbG9n KGNvbnN0IGNoYXIgKnJlbG5hbWUsCiAJCQkJcmVsYWNsID0gZ2V0X3VzZXJfZGVmYXVsdF9hY2wo T0JKRUNUX1NFUVVFTkNFLCBvd25lcmlkLAogCQkJCQkJCQkJCQkgIHJlbG5hbWVzcGFjZSk7CiAJ CQkJYnJlYWs7CisJCQljYXNlIFJFTEtJTkRfVkFSSUFCTEU6CisJCQkJcmVsYWNsID0gZ2V0X3Vz ZXJfZGVmYXVsdF9hY2woT0JKRUNUX1ZBUklBQkxFLCBvd25lcmlkLAorCQkJCQkJCQkJCQkgIHJl bG5hbWVzcGFjZSk7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCXJlbGFjbCA9IE5VTEw7 CiAJCQkJYnJlYWs7CkBAIC0xMTgxLDcgKzExODgsOCBAQCBoZWFwX2NyZWF0ZV93aXRoX2NhdGFs b2coY29uc3QgY2hhciAqcmVsbmFtZSwKIAkgKiBEZWNpZGUgd2hldGhlciB0byBjcmVhdGUgYW4g YXJyYXkgdHlwZSBvdmVyIHRoZSByZWxhdGlvbidzIHJvd3R5cGUuIFdlCiAJICogZG8gbm90IGNy ZWF0ZSBhbnkgYXJyYXkgdHlwZXMgZm9yIHN5c3RlbSBjYXRhbG9ncyAoaWUsIHRob3NlIG1hZGUK IAkgKiBkdXJpbmcgaW5pdGRiKS4gV2UgZG8gbm90IGNyZWF0ZSB0aGVtIHdoZXJlIHRoZSB1c2Ug b2YgYSByZWxhdGlvbiBhcwotCSAqIHN1Y2ggaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsOiB0 b2FzdCB0YWJsZXMsIHNlcXVlbmNlcyBhbmQgaW5kZXhlcy4KKwkgKiBzdWNoIGlzIGFuIGltcGxl bWVudGF0aW9uIGRldGFpbDogdG9hc3QgdGFibGVzLCBzZXF1ZW5jZXMsIGluZGV4ZXMgYW5kCisJ ICogdmFyaWFibGVzLgogCSAqLwogCWlmIChJc1VuZGVyUG9zdG1hc3RlciAmJiAocmVsa2luZCA9 PSBSRUxLSU5EX1JFTEFUSU9OIHx8CiAJCQkJCQkJICByZWxraW5kID09IFJFTEtJTkRfVklFVyB8 fApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwppbmRleCA1NzBlNjVhZmZiLi42MjQ3OTc0 M2M3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpAQCAtNTIwLDYgKzUyMCw5IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5cGVfbWFwCiAJewogCQkic2VxdWVuY2UiLCBP QkpFQ1RfU0VRVUVOQ0UKIAl9LAorCXsKKwkJInZhcmlhYmxlIiwgT0JKRUNUX1ZBUklBQkxFCisJ fSwKIAl7CiAJCSJ0b2FzdCB0YWJsZSIsIC0xCiAJfSwJCQkJCQkJLyogdW5tYXBwZWQgKi8KQEAg LTgyNCw2ICs4MjcsNyBAQCBnZXRfb2JqZWN0X2FkZHJlc3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBO b2RlICpvYmplY3QsCiAJCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJY2FzZSBPQkpFQ1RfTUFUVklF VzoKIAkJCWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFCTEU6CisJCQljYXNlIE9CSkVDVF9WQVJJQUJM RToKIAkJCQlhZGRyZXNzID0KIAkJCQkJZ2V0X3JlbGF0aW9uX2J5X3F1YWxpZmllZF9uYW1lKG9i anR5cGUsIGNhc3ROb2RlKExpc3QsIG9iamVjdCksCiAJCQkJCQkJCQkJCQkgICAmcmVsYXRpb24s IGxvY2ttb2RlLApAQCAtMTI2MCw2ICsxMjY0LDE0IEBAIGdldF9yZWxhdGlvbl9ieV9xdWFsaWZp ZWRfbmFtZShPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9iamVjdCwKIAkJCQkJCSBlcnJtc2co IlwiJXNcIiBpcyBub3QgYSBmb3JlaWduIHRhYmxlIiwKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsYXRpb24pKSkpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxF OgorCQkJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9WQVJJQUJMRSkK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1Rf VFlQRSksCisJCQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgc2NoZW1hIHZhcmlhYmxlIiwK KwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKSkpOworCQkJYnJlYWs7 CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQi LCAoaW50KSBvYmp0eXBlKTsKIAkJCWJyZWFrOwpAQCAtMTg0Nyw2ICsxODU5LDggQEAgZ2V0X29i amVjdF9hZGRyZXNzX2RlZmFjbChMaXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2Fz ZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJb2JqdHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQli cmVhazsKKwkJY2FzZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJp YWJsZXMiOwogCQlkZWZhdWx0OgogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC0yMTA5LDYgKzIxMjMsNyBAQCBwZ19n ZXRfb2JqZWN0X2FkZHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCWNhc2UgT0JKRUNUX1RB QkxFOgogCQljYXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJ CWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01BVFZJRVc6CiAJCWNhc2UgT0JKRUNU X0lOREVYOgpAQCAtMjIzMyw2ICsyMjQ4LDcgQEAgY2hlY2tfb2JqZWN0X293bmVyc2hpcChPaWQg cm9sZWlkLCBPYmplY3RUeXBlIG9ianR5cGUsIE9iamVjdEFkZHJlc3MgYWRkcmVzcywKIAkJY2Fz ZSBPQkpFQ1RfSU5ERVg6CiAJCWNhc2UgT0JKRUNUX1NFUVVFTkNFOgogCQljYXNlIE9CSkVDVF9U QUJMRToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNh c2UgT0JKRUNUX01BVFZJRVc6CiAJCWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFCTEU6CkBAIC0zMjk5 LDYgKzMzMTUsMTEgQEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAq b2JqZWN0KQogCQkJCQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYXMg YmVsb25naW5nIHRvIHJvbGUgJXMiKSwKIAkJCQkJCQkJCQkgR2V0VXNlck5hbWVGcm9tSWQoZGVm YWNsLT5kZWZhY2xyb2xlLCBmYWxzZSkpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgREVGQUNM T0JKX1ZBUklBQkxFOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJ CSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYSB2YXJpYWJsZXMgYmVsb25naW5n IHRvIHJvbGUgJXMiKSwKKwkJCQkJCQkJCQkgR2V0VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZh Y2xyb2xlLCBmYWxzZSkpOworCQkJCQkJYnJlYWs7CiAJCQkJCWRlZmF1bHQ6CiAJCQkJCQkvKiBz aG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAkJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwKQEAg LTM1MDIsNiArMzUyMywxMCBAQCBnZXRSZWxhdGlvbkRlc2NyaXB0aW9uKFN0cmluZ0luZm8gYnVm ZmVyLCBPaWQgcmVsaWQpCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZmZlciwgXygic2VxdWVuY2Ug JXMiKSwKIAkJCQkJCQkgcmVsbmFtZSk7CiAJCQlicmVhazsKKwkJY2FzZSBSRUxLSU5EX1ZBUklB QkxFOgorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWZmZXIsIF8oInZhcmlhYmxlICVzIiksCisJCQkJ CQkJIHJlbG5hbWUpOworCQkJYnJlYWs7CiAJCWNhc2UgUkVMS0lORF9UT0FTVFZBTFVFOgogCQkJ YXBwZW5kU3RyaW5nSW5mbyhidWZmZXIsIF8oInRvYXN0IHRhYmxlICVzIiksCiAJCQkJCQkJIHJl bG5hbWUpOwpAQCAtNDgzMCw2ICs0ODU1LDEwIEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29u c3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm YnVmZmVyLAogCQkJCQkJCQkJCQkgICAiIG9uIHNjaGVtYXMiKTsKIAkJCQkJCWJyZWFrOworCQkJ CQljYXNlIERFRkFDTE9CSl9WQVJJQUJMRToKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmJ1ZmZlciwKKwkJCQkJCQkJCQkJICAgIiBvbiBzY2hlbWEgdmFyaWFibGVzIik7CisJCQkJCQli cmVhazsKIAkJCQl9CiAKIAkJCQlpZiAob2JqbmFtZSkKQEAgLTUxMjIsNiArNTE1MSw4IEBAIGdl dF9yZWxraW5kX29ianR5cGUoY2hhciByZWxraW5kKQogCQkJcmV0dXJuIE9CSkVDVF9JTkRFWDsK IAkJY2FzZSBSRUxLSU5EX1NFUVVFTkNFOgogCQkJcmV0dXJuIE9CSkVDVF9TRVFVRU5DRTsKKwkJ Y2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJcmV0dXJuIE9CSkVDVF9WQVJJQUJMRTsKIAkJY2Fz ZSBSRUxLSU5EX1ZJRVc6CiAJCQlyZXR1cm4gT0JKRUNUX1ZJRVc7CiAJCWNhc2UgUkVMS0lORF9N QVRWSUVXOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQppbmRleCA0YTZjOTllMDkwLi41NzQ3MjcyYzlhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtMTgsNyArMTgsNyBAQCBPQkpTID0gYW1jbWRzLm8gYWdn cmVnYXRlY21kcy5vIGFsdGVyLm8gYW5hbHl6ZS5vIGFzeW5jLm8gY2x1c3Rlci5vIGNvbW1lbnQu byBcCiAJZXZlbnRfdHJpZ2dlci5vIGV4cGxhaW4ubyBleHRlbnNpb24ubyBmb3JlaWduY21kcy5v IGZ1bmN0aW9uY21kcy5vIFwKIAlpbmRleGNtZHMubyBsb2NrY21kcy5vIG1hdHZpZXcubyBvcGVy YXRvcmNtZHMubyBvcGNsYXNzY21kcy5vIFwKIAlwb2xpY3kubyBwb3J0YWxjbWRzLm8gcHJlcGFy ZS5vIHByb2NsYW5nLm8gcHVibGljYXRpb25jbWRzLm8gXAotCXNjaGVtYWNtZHMubyBzZWNsYWJl bC5vIHNlcXVlbmNlLm8gc3RhdHNjbWRzLm8gc3Vic2NyaXB0aW9uY21kcy5vIFwKKwlzY2hlbWFj bWRzLm8gc2NoZW1hdmFyLm8gc2VjbGFiZWwubyBzZXF1ZW5jZS5vIHN0YXRzY21kcy5vIHN1YnNj cmlwdGlvbmNtZHMubyBcCiAJdGFibGVjbWRzLm8gdGFibGVzcGFjZS5vIHRyaWdnZXIubyB0c2Vh cmNoY21kcy5vIHR5cGVjbWRzLm8gdXNlci5vIFwKIAl2YWN1dW0ubyB2YWN1dW1sYXp5Lm8gdmFy aWFibGUubyB2aWV3Lm8KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKaW5kZXggMGQ2Mzg2NmZiMC4uZTE3NGUy NDBiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBAIC0zNDgsNiArMzQ4LDcgQEAgRXhlY1JlbmFtZVN0 bXQoUmVuYW1lU3RtdCAqc3RtdCkKIAkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKIAkJY2FzZSBPQkpF Q1RfSU5ERVg6CiAJCWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFCTEU6CisJCWNhc2UgT0JKRUNUX1ZB UklBQkxFOgogCQkJcmV0dXJuIFJlbmFtZVJlbGF0aW9uKHN0bXQpOwogCiAJCWNhc2UgT0JKRUNU X0NPTFVNTjoKQEAgLTQ3OCw2ICs0NzksNyBAQCBFeGVjQWx0ZXJPYmplY3RTY2hlbWFTdG10KEFs dGVyT2JqZWN0U2NoZW1hU3RtdCAqc3RtdCwKIAkJY2FzZSBPQkpFQ1RfVEFCTEU6CiAJCWNhc2Ug T0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01BVFZJRVc6CisJCWNhc2UgT0JKRUNUX1ZBUklB QkxFOgogCQkJYWRkcmVzcyA9IEFsdGVyVGFibGVOYW1lc3BhY2Uoc3RtdCwKIAkJCQkJCQkJCQkg IG9sZFNjaGVtYUFkZHIgPyAmb2xkTnNwT2lkIDogTlVMTCk7CiAJCQlicmVhazsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHkuYwppbmRleCBiMzkzM2RmOWFmLi43MWU1YWFkODUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC0x NDg0LDYgKzE0ODQsOSBAQCBCZWdpbkNvcHkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJCUFzc2Vy dChxdWVyeS0+dXRpbGl0eVN0bXQgPT0gTlVMTCk7CiAKKwkJLyogRG9uJ3QgZXhwZWN0IExFVCBz dG10IGhlcmUsIGlzIG5vdCBwb3NzaWJsZSB0byBkbyB3cml0ZSBpdCAqLworCQlBc3NlcnQocXVl cnktPmNvbW1hbmRUeXBlICE9IENNRF9MRVQpOworCiAJCS8qCiAJCSAqIFNpbWlsYXJseSB0aGUg Z3JhbW1hciBkb2Vzbid0IGVuZm9yY2UgdGhlIHByZXNlbmNlIG9mIGEgUkVUVVJOSU5HCiAJCSAq IGNsYXVzZSwgYnV0IHRoaXMgaXMgcmVxdWlyZWQgaGVyZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYwpp bmRleCAzNTNlYzk5MGFmLi4zM2RiNDdlNjM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9kaXNjYXJkLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jCkBAIC0x OCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNsdWRlICJjb21t YW5kcy9kaXNjYXJkLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJlcGFyZS5oIgorI2luY2x1ZGUg ImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAj aW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvcG9ydGFsLmgiCkBAIC0yNSw3 ICsyNiw3IEBACiBzdGF0aWMgdm9pZCBEaXNjYXJkQWxsKGJvb2wgaXNUb3BMZXZlbCk7CiAKIC8q Ci0gKiBESVNDQVJEIHsgQUxMIHwgU0VRVUVOQ0VTIHwgVEVNUCB8IFBMQU5TIH0KKyAqIERJU0NB UkQgeyBBTEwgfCBTRVFVRU5DRVMgfCBURU1QIHwgUExBTlMgfCBWQVJJQUJMRVN9CiAgKi8KIHZv aWQKIERpc2NhcmRDb21tYW5kKERpc2NhcmRTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCkBA IC00OCw2ICs0OSwxMCBAQCBEaXNjYXJkQ29tbWFuZChEaXNjYXJkU3RtdCAqc3RtdCwgYm9vbCBp c1RvcExldmVsKQogCQkJUmVzZXRUZW1wVGFibGVOYW1lc3BhY2UoKTsKIAkJCWJyZWFrOwogCisJ CWNhc2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQlSZXNldFNjaGVtYVZhcmlhYmxlc0NhY2hlKCk7 CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBE SVNDQVJEIHRhcmdldDogJWQiLCBzdG10LT50YXJnZXQpOwogCX0KQEAgLTc1LDQgKzgwLDUgQEAg RGlzY2FyZEFsbChib29sIGlzVG9wTGV2ZWwpCiAJUmVzZXRQbGFuQ2FjaGUoKTsKIAlSZXNldFRl bXBUYWJsZU5hbWVzcGFjZSgpOwogCVJlc2V0U2VxdWVuY2VDYWNoZXMoKTsKKwlSZXNldFNjaGVt YVZhcmlhYmxlc0NhY2hlKCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9l dmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5k ZXggNTQ5YzdlYTUxZC4uYzhlMmI4MjJlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdn ZXIuYwpAQCAtMTI2LDYgKzEyNiw3IEBAIHN0YXRpYyBldmVudF90cmlnZ2VyX3N1cHBvcnRfZGF0 YSBldmVudF90cmlnZ2VyX3N1cHBvcnRbXSA9IHsKIAl7IlRFWFQgU0VBUkNIIFRFTVBMQVRFIiwg dHJ1ZX0sCiAJeyJUWVBFIiwgdHJ1ZX0sCiAJeyJVU0VSIE1BUFBJTkciLCB0cnVlfSwKKwl7IlZB UklBQkxFIiwgdHJ1ZX0sCiAJeyJWSUVXIiwgdHJ1ZX0sCiAJe05VTEwsIGZhbHNlfQogfTsKQEAg LTExMjQsNiArMTEyNSw3IEBAIEV2ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0VHlwZShPYmplY3RU eXBlIG9idHlwZSkKIAkJY2FzZSBPQkpFQ1RfVFNURU1QTEFURToKIAkJY2FzZSBPQkpFQ1RfVFlQ RToKIAkJY2FzZSBPQkpFQ1RfVVNFUl9NQVBQSU5HOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToK IAkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCXJldHVybiB0cnVlOwogCkBAIC0yMjIyLDYgKzIyMjQs OCBAQCBzdHJpbmdpZnlfZ3JhbnRfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCQlyZXR1 cm4gIlRBQkxFU1BBQ0UiOwogCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJcmV0dXJuICJUWVBFIjsK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlyZXR1cm4gIlZBUklBQkxFIjsKIAkJLyogdGhl c2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2UgT0JKRUNUX0FDQ0VTU19NRVRIT0Q6 CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKQEAgLTIzMDQsNiArMjMwOCw4IEBAIHN0cmluZ2lm eV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCQlyZXR1cm4gIlRBQkxF U1BBQ0VTIjsKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXJldHVybiAiVFlQRVMiOworCQljYXNl IE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFSSUFCTEVTIjsKIAkJLyogdGhlc2UgY3Vy cmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2UgT0JKRUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNh c2UgT0JKRUNUX0FHR1JFR0FURToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA0MWNkNDdlOGJj Li4xMWM4MjU3ZmNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC04OTMsNiArODkzLDkgQEAg RXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCQlj YXNlIENNRF9ERUxFVEU6CiAJCQkJCXBuYW1lID0gb3BlcmF0aW9uID0gIkRlbGV0ZSI7CiAJCQkJ CWJyZWFrOworCQkJCWNhc2UgQ01EX0xFVDoKKwkJCQkJcG5hbWUgPSBvcGVyYXRpb24gPSAiTGV0 IjsKKwkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJcG5hbWUgPSAiPz8/IjsKIAkJCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggYjk0NWIxNTU2YS4uYTY5NDcxZTkyNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMTUxLDYgKzE1MSw3IEBAIFByZXBhcmVRdWVyeShQ cmVwYXJlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCWNhc2UgQ01EX0lO U0VSVDoKIAkJY2FzZSBDTURfVVBEQVRFOgogCQljYXNlIENNRF9ERUxFVEU6CisJCWNhc2UgQ01E X0xFVDoKIAkJCS8qIE9LICovCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZhci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2No ZW1hdmFyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOTBlMWQzZTQ1 NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZhci5jCkBA IC0wLDAgKzEsNjc2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzY2hlbWF2YXIuYwor ICoJICBQb3N0Z3JlU1FMIHNlc3Npb24gdmFyaWFibGUgc3VwcG9ydCBjb2RlLgorICoKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRo ZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAq CSAgc3JjL2JhY2tlbmQvY29tbWFuZHMvc2NoZW1hdmFyLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisK KyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3Qu aCIKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9n L25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xhc3MuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIKKyNpbmNs dWRlICJjb21tYW5kcy9zY2hlbWF2YXIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNl LmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKKyNpbmNsdWRlICJ1dGlscy9hY2wu aCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgi CisjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgorI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK KyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisvKgorICogVGhpcyBzY2hlbWEgdmFyaWFi bGUgY2FjaGUgbWl4ZXMgdGhlIGNhY2hlIGFuZCBzdG9yYWdlcyBiZWhhdmUuIFRoYXQgaXMgbm90 CisgKiBjb3JyZWN0IGFuZCBpdCBpcyBwcm9ibGVtYXRpYywgd2hlbiB2YXJpYWJsZSBpcyByZW1v dmVkLiBUaGUgb3duIHN0b3JhZ2UKKyAqIGJhc2VkIG9uIHN0b3JhZ2UgbWFuYWdlciBjYW4gYmUg aW1wbGVtZW50ZWQsIFJlbEZpbGVOb2RlIGNhbiBiZSBkZWZpbmVkIGFuZAorICogbWVjaGFuaXNt IGJhc2VkIG9uIFBlbmRpbmdSZWxEZWxldGUgc3RydWN0IGNhbiBiZSB1c2VkLiBUaGlzIGlzIGEg YXJndW1lbnQKKyAqIGZvciBpbXBsZW1lbnRhdGlvbiBzY2hlbWEgdmFyaWFibGVzIGJhc2VkIG9u IHBnX2NsYXNzLgorICogQWx0ZXJuYXRpdmUgc29sdXRpb24gY2FuIGJlIGRldGVjdGlvbiBvZiBz Y2hlbWEgY2hhbmdlcyBhbmQgcmVjaGVjayBhdCBhbmQKKyAqIG9mIHRyYW5zYWN0aW9uLgorICov Cit0eXBlZGVmIHN0cnVjdCBTY2hlbWFWYXJEYXRhCit7CisJT2lkCQkJdmFyaWQ7CQkJLyogcGdf Y2xhc3MgT0lEIG9mIHRoaXMgc2VxdWVuY2UgKGhhc2gga2V5KSAqLworCU9pZAkJCXR5cGlkOwkJ CS8qIE9JRCBvZiB0aGUgZGF0YSB0eXBlICovCisJaW50MzIJCXR5cG1vZDsKKwlpbnQxNgkJdHlw bGVuOworCWJvb2wJCXR5cGJ5dmFsOworCWJvb2wJCWlzbnVsbDsKKwlib29sCQlmcmVldmFsOwor CURhdHVtCQl2YWx1ZTsKK30gU2NoZW1hVmFyRGF0YTsKKwordHlwZWRlZiBTY2hlbWFWYXJEYXRh ICpTY2hlbWFWYXI7CisKK3N0YXRpYyBIVEFCICpzY2hlbWF2YXJoYXNodGFiID0gTlVMTDsJCS8q IGhhc2ggdGFibGUgZm9yIHNlc3Npb24gdmFyaWFibGVzICovCitzdGF0aWMgTWVtb3J5Q29udGV4 dCBTY2hlbWFWYXJNZW1vcnlDb250ZXh0ID0gTlVMTDsKKworc3RhdGljIERhdHVtIGRhdHVtQ2Fz dChEYXR1bSB2YWx1ZSwKKwkJCQkJCSAgT2lkIHRhcmdldF90eXBpZCwgaW50IHRhcmdldF90eXBt b2QsCisJCQkJCQkgIE9pZCBzb3VyY2VfdHlwaWQsIGludCBzb3VyY2VfdHlwbW9kKTsKKworc3Rh dGljIGJvb2wJZmlyc3RfdGltZSA9IHRydWU7CitzdGF0aWMgYm9vbAljYWNoZV9pc192YWxpZCA9 IHRydWU7CisKK3N0YXRpYyB2b2lkIEludmFsaWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrKERh dHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOworCisvKiBqdXN0IG1hcmsg Y2FjaGUgdG8gcmVjaGVjayAqLworc3RhdGljIHZvaWQKK0ludmFsaWRhdGVTY2hlbWFWYXJDYWNo ZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCit7CisJ LyoKKwkgKiBiZWNhdXNlIHRoaXMgY2FjaGUgaG9sZHMgdmFsdWVzIG9mIHNjaGVtYSB2YXJpYWJs ZXMsIHRoZW4KKwkgKiB0aGUgY29udGVudCBjYW5ub3QgYmUgcmVtb3ZlZCBpbiB0aGlzIG1vbWVt dC4gV2Ugc2hvdWxkIHRvCisJICogd2FpdCBvbiB0cmFuc2FjdGlvbiBlbmQuCisJICovCisJY2Fj aGVfaXNfdmFsaWQgPSBmYWxzZTsKK30KKworLyoKKyAqIFdhaXQgb24gY29tbWl0IG9yIHJvbGxi YWNrIGFuZCBjbGVhbiB2YWx1ZXMgdGhhdCBtaXNzIGVudHJ5IGluIHN5c3RlbQorICogY2F0YWxv Zy4gSXQgaXMgdGVtcG9yYXJ5IHNvbHV0aW9uIChhbHRob3VnaCBpdCBpcyB3b3JraW5nKS4gU3Rv cmFnZSBtYW5hZ2VyCisgKiBiYXNlZCBzb2x1dGlvbiB3aWxsIGJlIGJldHRlciwgYnV0IGl0IGlz IG5vdCBuZWNlc3NhcnkgZm9yIHRoaXMgUG9DLgorICoKKyAqIHJlbW92ZXMgdW5jb21taXR0ZWQg b3IgZHJvcHBlZCBzY2hlbWEgdmFyaWFibGVzLCBzbyBldmVudCBjYW4gYmUgaWdub3JlZC4KKyAq Lworc3RhdGljIHZvaWQKK3JlY2hlY2tfc2NoZW1hX3ZhcmlhYmxlcyhYYWN0RXZlbnQgZXZlbnQs IHZvaWQgKmFyZykKK3sKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCVNjaGVtYVZhcgkJdmFy OworCisJaWYgKGNhY2hlX2lzX3ZhbGlkIHx8IHNjaGVtYXZhcmhhc2h0YWIgPT0gTlVMTCB8fCAh SXNUcmFuc2FjdGlvblN0YXRlKCkpCisJCXJldHVybjsKKworCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgc2NoZW1hdmFyaGFzaHRhYik7CisKKwl3aGlsZSAoKHZhciA9IChTY2hlbWFWYXIpIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCUhlYXBUdXBsZQl0cCA9IEludmFs aWRPaWQ7CisKKwkJdHAgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVt KHZhci0+dmFyaWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJeworCQkJZWxv ZyhERUJVRzEsICJ2YXJpYWJsZSAlZCBpcyByZW1vdmVkIGZyb20gY2FjaGUiLCB2YXItPnZhcmlk KTsKKworCQkJaWYgKHZhci0+ZnJlZXZhbCkKKwkJCXsKKwkJCQlwZnJlZShEYXR1bUdldFBvaW50 ZXIodmFyLT52YWx1ZSkpOworCQkJCXZhci0+ZnJlZXZhbCA9IGZhbHNlOworCQkJfQorCisJCQlp ZiAoaGFzaF9zZWFyY2goc2NoZW1hdmFyaGFzaHRhYiwKKwkJCQkJCQkJKHZvaWQgKikgJnZhci0+ dmFyaWQsCisJCQkJCQkJCUhBU0hfUkVNT1ZFLAorCQkJCQkJCQlOVUxMKSA9PSBOVUxMKQorCQkJ CWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCQl9CisJCWVsc2UKKwkJCVJl bGVhc2VTeXNDYWNoZSh0cCk7CisJfQorCWNhY2hlX2lzX3ZhbGlkID0gdHJ1ZTsKK30KKworLyoK KyAqIERlZmluZVNlc3Npb25WYXJpYWJsZQorICoJCQkJQ3JlYXRlcyBhIG5ldyB2YXJpYWJsZSBy ZWxhdGVkIHJlbGF0aW9uCisgKi8KK09iamVjdEFkZHJlc3MKK0RlZmluZVNjaGVtYVZhcmlhYmxl KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU2NoZW1hVmFyU3RtdCAqdmFyKQoreworCUNyZWF0 ZVN0bXQgKnN0bXQgPSBtYWtlTm9kZShDcmVhdGVTdG10KTsKKwlPaWQJCQl0eXBvaWQ7CisJT2lk CQkJdmFyb2lkOworCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKworCS8qCisJICogSWYgaWZfbm90 X2V4aXN0cyB3YXMgZ2l2ZW4gYW5kIGEgcmVsYXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVh ZHkKKwkgKiBleGlzdHMsIGJhaWwgb3V0LiAoTm90ZTogd2UgbmVlZG4ndCBjaGVjayB0aGlzIHdo ZW4gbm90IGlmX25vdF9leGlzdHMsCisJICogYmVjYXVzZSBEZWZpbmVSZWxhdGlvbiB3aWxsIGNv bXBsYWluIGFueXdheS4pCisJICovCisJaWYgKHZhci0+aWZfbm90X2V4aXN0cykKKwl7CisJCVJh bmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZSh2YXItPnZhcmlhYmxlLCBOb0xvY2ss ICZ2YXJvaWQpOworCQlpZiAoT2lkSXNWYWxpZCh2YXJvaWQpKQorCQl7CisJCQllcmVwb3J0KE5P VElDRSwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkgZXJy bXNnKCJ2YXJpYWJsZSBcIiVzXCIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIiwKKwkJCQkJCQl2 YXItPnZhcmlhYmxlLT5yZWxuYW1lKSkpOworCQkJcmV0dXJuIEludmFsaWRPYmplY3RBZGRyZXNz OworCQl9CisJfQorCisJdHlwb2lkID0gTG9va3VwVHlwZU5hbWVPaWQocHN0YXRlLCB2YXItPnR5 cGVOYW1lLCBmYWxzZSk7CisKKwkvKgorCSAqIERvbid0IGFsbG93IGNvbXBvc2l0ZSB0eXBlcyBh bmQgYXJyYXlzLiBUaGUgbGVmdCBleHByZXNzaW9uIG9mCisJICogTEVUIHN0YXRlbWVudCBpcyBz aW1wbGUgaW4gdGhpcyBtb21lbnQgKGRvbid0IGFsbG93IHJlY29yZCBmaWVsZAorCSAqIG9yIGFy cmF5IGZpZWxkIHNwZWNpZmljYXRpb24pLiBXaXRob3V0IHRoaXMgc3VwcG9ydCB3ZSBzaG91bGQK KwkgKiBub3QgdG8gc3VwcG9ydCBub24gc2NhbGFycyBldmVyLgorCSAqLworCWlmICh0eXBlX2lz X3Jvd3R5cGUodHlwb2lkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiQ29tcG9zaXRlIHR5cGVzIGFy ZSBub3QgYWxsb3dlZCBhcyB2YXJpYWJsZSB0eXBlLiIpKSk7CisKKwlpZiAoZ2V0X2Jhc2VfZWxl bWVudF90eXBlKHR5cG9pZCkgIT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiU2No ZW1hIHZhcmlhYmxlcyBjYW5ub3QgYmUgYSBhcnJheS4iKSkpOworCisJaWYgKGdldF90eXB0eXBl KHR5cG9pZCkgPT0gVFlQVFlQRV9QU0VVRE8pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1zZygidmFyaWFibGUgY2Fu bm90IGJlICVzIiwKKwkJCQkJCWZvcm1hdF90eXBlX2JlKHZhcm9pZCkpKSk7CisKKwlzdG10LT50 YWJsZUVsdHMgPSBOSUw7CisJc3RtdC0+cmVsYXRpb24gPSB2YXItPnZhcmlhYmxlOworCXN0bXQt PmluaFJlbGF0aW9ucyA9IE5JTDsKKwlzdG10LT5jb25zdHJhaW50cyA9IE5JTDsKKwlzdG10LT5v cHRpb25zID0gTklMOworCXN0bXQtPm9uY29tbWl0ID0gT05DT01NSVRfTk9PUDsKKwlzdG10LT50 YWJsZXNwYWNlbmFtZSA9IE5VTEw7CisJc3RtdC0+aWZfbm90X2V4aXN0cyA9IHZhci0+aWZfbm90 X2V4aXN0czsKKworCS8qCisJICogVXNlIHJlbG9mdHlwZSBhdHRyaWJ1dGUuIFRoaXMgYXR0cmli dXRlIHNob3VsZCBiZSBjb21wb3NpdGUgdHlwZSBmb3IKKwkgKiB0YWJsZXMsIGJ1dCB0aGVyZSBh cmUgbm8gcmVhc29uIHRvIGFwcGx5IHRoaXMgcnVsZSBmb3IgdmFyaWFibGVzLiBDYW4KKwkgKiBi ZSBjaGFuZ2VkIGxhdGVyIHdpdGggY29tcG9zaXRlIHR5cGUgc3VwcG9ydC4gSW4gdGhpcyBtb21l bnQgSSBkb24ndAorCSAqIHBsYXkgd2l0aCBpdCwgYmVjYXVzZSBJIHdvdWxkIG5vdCBhbGxvdyBx dWVyaWVzIGxpa2U6CisJICogU0VMRUNUIHNjaGVtYXZhciBGUk9NIHNjaGVtYXZhciwgYmVjYXVz ZSB0aGVyZSBpcyBzZW1hbnRpYyBjb2xpc3Npb24KKwkgKiB3aXRoIFNFTEVDVCBzY2hlbWF2YXIu IFVzZXJzIGV4cGVjdHMgY29tcG9zaXRlIHZhbHVlIChvbmUgYXR0cmlidXRlKQorCSAqIGZyb20g Zmlyc3QgcXVlcnksIGJ1dCBzY2FsYXIgZnJvbSBzZWNvbmQgcXVlcnkuIFRoaXMgc2NoaXNtYSBj YW4gYmUKKwkgKiBzb2x2ZWQgYnkgZGlzYWxsb3dpbmcgU0VMRUNUIC4gRlJPTSBzY2hlbWF2YXIg Zm9yIHNjYWxhciB2YXJpYWJsZXMuCisJICoKKwkgKiBPbiBzZWNvbmQgaGFuZCAtIHdpdGhvdXQg YWRkaXRpb25hbCBmaWVsZHMsIGp1c3Qgd2l0aCByZWxvZnR5cGUgaXMKKwkgKiBub3QgcG9zc2li bGUgdG8gc3RvcmUgdHlwbW9kLiBTbyBhbGwgdmFyaWFibGVzIGNhbiBiZSB0eXBtb2QgbGVzcy4K KwkgKiBJcyBub3QgcG9zc2libGUgdG8gc3RvcmUgZGVmYXVsdCBleHByZXNzaW9ucy4gU28gZmlu YWwgZGVzaWduIHNob3VsZAorCSAqIGJlIGJhc2VkIG9uIGF1eCBjb21wb3NpdGUgdHlwZXMgZm9y IHNjYWxhciB2YXJpYWJsZXMuCisJICoKKwkgKiBUaGVvcmV0aWNhbGx5LCB0aGVyZSBjYW4gYmUg dXNlZCBhIHJlbHR5cGUgYW5kIHJlbG9mdHlwZSB0b2dldGhlci4KKwkgKiByZWxvZnR5cGUgd2ls bCBiZSBzY2FsYXIsIGFuZCByZWx0eXBlIHdpbGwgYmUgY29tcG9zaXRlIG9uZSBmaWVsZAorCSAq IHJvdyB0eXBlLiBXaGVuIHJlbG9mdHlwZSA9IHJlbHR5cGUsIHRoZW4gc2NoZW1hIHZhcmlhYmxl IGlzIGJhc2VkCisJICogb24gY29tcG9zaXRlIHR5cGUsIGVsc2Ugc2NoZW1hIHZhcmlhYmxlIGlz IG9mIHNjYWxhciB0eXBlLgorCSAqLworCXN0bXQtPm9mVHlwZW5hbWUgPSB2YXItPnR5cGVOYW1l OworCisJYWRkcmVzcyA9IERlZmluZVJlbGF0aW9uKHN0bXQsIFJFTEtJTkRfVkFSSUFCTEUsIElu dmFsaWRPaWQsIE5VTEwsIE5VTEwpOworCUFzc2VydChhZGRyZXNzLm9iamVjdElkICE9IEludmFs aWRPaWQpOworCisJcmV0dXJuIGFkZHJlc3M7Cit9CisKKy8qCisgKiBJbXBsZW1lbnRhdGlvbiBv ZiBzY2hlbWF2YXIgY2FjaGUuIEl0IGlzIHF1ZXN0aW9uIGlmIGl0IHNob3VsZCBiZSBpbiB0aGlz IHBsYWNlLCBvcgorICogaXQgc2hvdWxkIGJlIHN0b3JhZ2UgcmVsYXRlZCBvciBjYWNoZSByZWxh dGVkIHBsYWNlPyBCdXQgZm9yIHRoaXMgbW9tZW50IChQb0MpIGl0CisgKiBjYW4gYmUgaGVyZS4g Q2FjaGUgaXMgaW1wbGVtZW50ZWQgYXMgaGFzaCB0YWJsZSB3aXRoIG93biBtZW1vcnkgY29udGV4 dC4KKyAqLworCisvKgorICogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlIGZvciBzdG9yaW5nIHNjaGVt YSB2YXJpYWJsZXMKKyAqLworc3RhdGljIHZvaWQKK2NyZWF0ZV9zY2hlbWF2YXJfaGFzaHRhYmxl KHZvaWQpCit7CisJSEFTSENUTAkJY3RsOworCisJLyogc2V0IGNhbGxiYWNrcyAqLworCWlmIChm aXJzdF90aW1lKQorCXsKKworCQlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhSRUxPSUQs CisJCQkJCQkJCQkgIEludmFsaWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrLAorCQkJCQkJCQkJ ICAoRGF0dW0pIDApOworCQlSZWdpc3RlclhhY3RDYWxsYmFjayhyZWNoZWNrX3NjaGVtYV92YXJp YWJsZXMsIE5VTEwpOworCisJCWZpcnN0X3RpbWUgPSBmYWxzZTsKKwl9CisKKwkvKiBuZWVkcyBv d24gbG9uZyBsaWZlIG1lbW9yeSBjb250ZXh0ICovCisJaWYgKFNjaGVtYVZhck1lbW9yeUNvbnRl eHQgPT0gTlVMTCkKKwl7CisJCVNjaGVtYVZhck1lbW9yeUNvbnRleHQgPSBBbGxvY1NldENvbnRl eHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkJCSJzY2hlbWEgdmFyaWFi bGVzIiwKKwkJCQkJCQkJCQkJCQkJCUFMTE9DU0VUX1NUQVJUX1NNQUxMX1NJWkVTKTsKKwl9CisK KwltZW1zZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkpOworCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7CisJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihTY2hlbWFWYXJEYXRhKTsKKwljdGwuaGN4dCA9 IFNjaGVtYVZhck1lbW9yeUNvbnRleHQ7CisKKwlzY2hlbWF2YXJoYXNodGFiID0gaGFzaF9jcmVh dGUoIlNjaGVtYSB2YXJpYWJsZXMiLCA2NCwgJmN0bCwKKwkJCQkJCQkJCQlIQVNIX0VMRU0gfCBI QVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwljYWNoZV9pc192YWxpZCA9IHRydWU7Cit9CisK Ky8qCisgKiBGYXN0IGRyb3AgY29tcGxldGUgY29udGVudCBvZiBzY2hlbWEgdmFyaWFibGVzCisg Ki8KK3ZvaWQKK1Jlc2V0U2NoZW1hVmFyaWFibGVzQ2FjaGUodm9pZCkKK3sKKwlpZiAoc2NoZW1h dmFyaGFzaHRhYikKKwl7CisJCWhhc2hfZGVzdHJveShzY2hlbWF2YXJoYXNodGFiKTsKKwkJc2No ZW1hdmFyaGFzaHRhYiA9IE5VTEw7CisJfQorCisJaWYgKFNjaGVtYVZhck1lbW9yeUNvbnRleHQg IT0gTlVMTCkKKwl7CisJCU1lbW9yeUNvbnRleHRSZXNldChTY2hlbWFWYXJNZW1vcnlDb250ZXh0 KTsKKwl9Cit9CisKKy8qCisgKiBDb3B5IGRhdHVtIHZhbHVlIHRvIHNjaGVtYSB2YXJpYWJsZXMg Y2FjaGUgcGxhY2UKKyAqLworc3RhdGljIHZvaWQKK1NldFZhbHVlKFNjaGVtYVZhciB2YXIsCisJ CQkJRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLAorCQkJCQkJT2lkCXR5cGlkLCBpbnQzMiB0eXBt b2QpCit7CisJLyogcmVsZWFzZSBwcmV2aW91c2x5IHN0b3JlZCB2YWx1ZSAqLworCWlmICh2YXIt PmZyZWV2YWwpCisJeworCQlwZnJlZShEYXR1bUdldFBvaW50ZXIodmFyLT52YWx1ZSkpOworCQl2 YXItPmZyZWV2YWwgPSBmYWxzZTsKKwl9CisKKwlpZiAoIWlzTnVsbCkKKwl7CisJCU1lbW9yeUNv bnRleHQgb2xkY3h0OworCisJCS8qCisJCSAqIGNhc3QgdGhlIHZhbHVlIGlmIGNvbnZlcnNpb24g aXMgbmVjZXNzYXJ5LgorCQkgKiBFeHBlY3Rpbmc6IGN1cnJlbnQgY29udGV4dCBpcyBzaG9ydCBj b250ZXh0LgorCQkgKgorCQkgKiBRVUVTVElPTjogaG93IG11Y2ggc2hvdWxkIGJlIHRoaXMgY2Fz dCB0b2xlcmFudC9zdHJpY3Q/CisJCSAqLworCQlpZiAodmFyLT50eXBpZCAhPSB0eXBpZCB8fCB2 YXItPnR5cG1vZCAhPSB0eXBtb2QpCisJCXsKKwkJCXZhbHVlID0gZGF0dW1DYXN0KHZhbHVlLAor CQkJCQkJCQl2YXItPnR5cGlkLCB2YXItPnR5cG1vZCwKKwkJCQkJCQkJdHlwaWQsIHR5cG1vZCk7 CisJCX0KKworCQl2YXItPmlzbnVsbCA9IGZhbHNlOworCisJCW9sZGN4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhTY2hlbWFWYXJNZW1vcnlDb250ZXh0KTsKKworCQl2YXItPnZhbHVlID0gZGF0 dW1Db3B5KHZhbHVlLCB2YXItPnR5cGJ5dmFsLCB2YXItPnR5cGxlbik7CisJCWlmICh2YXItPnZh bHVlICE9IHZhbHVlKQorCQkJdmFyLT5mcmVldmFsID0gdHJ1ZTsKKworCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY3h0KTsKKwl9CisJZWxzZQorCXsKKwkJdmFyLT52YWx1ZSA9IChEYXR1bSkg MDsKKwkJdmFyLT5pc251bGwgPSB0cnVlOworCX0KK30KKworLyoKKyAqIEFjY2VzcyBmdW5jdGlv bnMgdG8gc2NoZW1hIHZhcmlhYmxlcy4KKyAqLwordm9pZAorU2V0U2NoZW1hVmFyaWFibGUoT2lk IHZhcmlkLCBEYXR1bSB2YWx1ZSwgYm9vbCBpc051bGwsCisJCQkJCQlPaWQJdHlwaWQsIGludDMy IHR5cG1vZCwKKwkJCQkJCWludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCkKK3sKKwlTY2hlbWFW YXIJdmFyOworCWJvb2wJCWZvdW5kOworCisJaWYgKHNjaGVtYXZhcmhhc2h0YWIgPT0gTlVMTCkK Kwl7CisJCS8qIGRvbid0IGluaXQgaGFzaHRhYmxlIGZvciBOVUxMIHZhbHVlcyAqLworCQlpZiAo aXNOdWxsKQorCQkJcmV0dXJuOworCisJCWNyZWF0ZV9zY2hlbWF2YXJfaGFzaHRhYmxlKCk7CisJ fQorCisJdmFyID0gKFNjaGVtYVZhcikgaGFzaF9zZWFyY2goc2NoZW1hdmFyaGFzaHRhYiwgJnZh cmlkLCBIQVNIX0VOVEVSLCAmZm91bmQpOworCWlmICghZm91bmQpCisJeworCQlIZWFwVHVwbGUJ dHA7CisJCUZvcm1fcGdfY2xhc3MJdmFydHVwOworCisJCXZhci0+dmFsdWUgPSAoRGF0dW0pIDA7 CisJCXZhci0+aXNudWxsID0gdHJ1ZTsKKwkJdmFyLT5mcmVldmFsID0gZmFsc2U7CisKKwkJLyog bm93LCB0eXBlIGluZm8gZm9yIHNjaGVtYSB2YXJpYWJsZSBpcyBjb2xsZWN0ZWQgKi8KKwkJdHAg PSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisJCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxkIGZvciB2YXJpYWJsZSAldSIsIHZhcmlkKTsKKworCQl2YXJ0dXAgPSAoRm9ybV9wZ19jbGFz cykgR0VUU1RSVUNUKHRwKTsKKwkJdmFyLT50eXBpZCA9IHZhcnR1cC0+cmVsb2Z0eXBlOworCisJ CS8qIHR5cG1vZCBpcyBub3Qgc2F2ZWQgKi8KKwkJdmFyLT50eXBtb2QgPSAtMTsKKworCQlSZWxl YXNlU3lzQ2FjaGUodHApOworCisJCWdldF90eXBsZW5ieXZhbCh2YXItPnR5cGlkLCAmdmFyLT50 eXBsZW4sICZ2YXItPnR5cGJ5dmFsKTsKKwl9CisKKwlTZXRWYWx1ZSh2YXIsIHZhbHVlLCBpc051 bGwsIHR5cGlkLCB0eXBtb2QpOworfQorCisvKgorICogUmV0dXJucyB2YXJpYWJsZSBuYW1lCisg Ki8KK2NoYXIgKgorZ2V0X3NjaGVtYXZhcl9uYW1lKE9pZCB2YXJpZCkKK3sKKwlIZWFwVHVwbGUJ CXJlbFR1cDsKKwlGb3JtX3BnX2NsYXNzCXJlbEZvcm07CisJY2hhcgkgICAqbnNwbmFtZTsKKwlj aGFyCSAgICpyZWxuYW1lOworCisJcmVsVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwKKwkJ CQkJCQkgIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo cmVsVHVwKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEg dmFyaWFibGUgJXUiLCB2YXJpZCk7CisJcmVsRm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJV Q1QocmVsVHVwKTsKKworCS8qIFF1YWxpZnkgdGhlIG5hbWUgaWYgbm90IHZpc2libGUgaW4gc2Vh cmNoIHBhdGggKi8KKwlpZiAoUmVsYXRpb25Jc1Zpc2libGUodmFyaWQpKQorCQluc3BuYW1lID0g TlVMTDsKKwllbHNlCisJCW5zcG5hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWUocmVsRm9ybS0+cmVs bmFtZXNwYWNlKTsKKworCXJlbG5hbWUgPSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihuc3Bu YW1lLCBOYW1lU3RyKHJlbEZvcm0tPnJlbG5hbWUpKTsKKworCVJlbGVhc2VTeXNDYWNoZShyZWxU dXApOworCisJcmV0dXJuIHJlbG5hbWU7Cit9CisKKy8qCisgKiBTZWN1cml6ZWQgdmVyc2lvbnMg U2V0U2NoZW1hVmFyaWFibGUKKyAqLwordm9pZAorU2V0U2NoZW1hVmFyaWFibGVTZWN1cmUoT2lk IHZhcmlkLCBEYXR1bSB2YWx1ZSwgYm9vbCBpc051bGwsCisJCQkJCQlPaWQJdHlwaWQsIGludDMy IHR5cG1vZCwKKwkJCQkJCWludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCkKK3sKKwlBY2xSZXN1 bHQJCWFjbHJlc3VsdDsKKworCS8qIENoZWNrIHBlcm1pc3Npb25zICovCisJYWNscmVzdWx0ID0g cGdfY2xhc3NfYWNsY2hlY2sodmFyaWQsIEdldFVzZXJJZCgpLCBBQ0xfVVBEQVRFKTsKKwlpZiAo YWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9C SkVDVF9WQVJJQUJMRSwgZ2V0X3NjaGVtYXZhcl9uYW1lKHZhcmlkKSk7CisKKwlTZXRTY2hlbWFW YXJpYWJsZSh2YXJpZCwgdmFsdWUsIGlzTnVsbCwgdHlwaWQsIHR5cG1vZCwgdHlwbGVuLCB0eXBi eXZhbCk7Cit9CisKKy8qCisgKiBDYXN0IGRhdHVtCisgKi8KK3N0YXRpYyBEYXR1bQorZGF0dW1D YXN0KERhdHVtIHZhbHVlLAorCQkgIE9pZCB0YXJnZXRfdHlwaWQsIGludCB0YXJnZXRfdHlwbW9k LAorCQkgIE9pZCBzb3VyY2VfdHlwaWQsIGludCBzb3VyY2VfdHlwbW9kKQoreworCUNvZXJjaW9u UGF0aFR5cGUgY3BhdGh0eXBlOworCU9pZAkJY2Z1bmNpZDsKKwlEYXR1bQlyZXN1bHQgPSAoRGF0 dW0pIDA7CisJYm9vbAlpc19iaW5hcnlfY2FzdCA9IGZhbHNlOworCisJaWYgKHRhcmdldF90eXBp ZCAhPSBzb3VyY2VfdHlwaWQpCisJeworCQljcGF0aHR5cGUgPSBmaW5kX2NvZXJjaW9uX3BhdGh3 YXkodGFyZ2V0X3R5cGlkLCBzb3VyY2VfdHlwaWQsCisJCQkJCQkJCQkJCUNPRVJDSU9OX0VYUExJ Q0lULAorCQkJCQkJCQkJCQkmY2Z1bmNpZCk7CisKKwkJaWYgKGNwYXRodHlwZSA9PSBDT0VSQ0lP Tl9QQVRIX05PTkUpCisJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQgY2FzdCBmcm9tICVz IHRvICVzIiwKKwkJCQkJCWZvcm1hdF90eXBlX2JlKHNvdXJjZV90eXBpZCksCisJCQkJCQlmb3Jt YXRfdHlwZV9iZSh0YXJnZXRfdHlwaWQpKTsKKworCQlpZiAoY3BhdGh0eXBlID09IENPRVJDSU9O X1BBVEhfUkVMQUJFTFRZUEUpCisJCXsKKwkJCXJlc3VsdCA9IHZhbHVlOworCQkJaXNfYmluYXJ5 X2Nhc3QgPSB0cnVlOworCQl9CisJCWVsc2UgaWYgKGNwYXRodHlwZSA9PSBDT0VSQ0lPTl9QQVRI X0NPRVJDRVZJQUlPKQorCQl7CisJCQlPaWQJCW91dGZ1bmM7CisJCQlPaWQJCWluZnVuYzsKKwkJ CU9pZAkJaW9wYXJhbTsKKwkJCWJvb2wJaXNWYXJsZW5hOworCQkJY2hhcgkqc3RyOworCisJCQln ZXRUeXBlT3V0cHV0SW5mbyhzb3VyY2VfdHlwaWQsICZvdXRmdW5jLCAmaXNWYXJsZW5hKTsKKwkJ CXN0ciA9IE9pZE91dHB1dEZ1bmN0aW9uQ2FsbChvdXRmdW5jLCB2YWx1ZSk7CisKKwkJCWdldFR5 cGVJbnB1dEluZm8odGFyZ2V0X3R5cGlkLCAmaW5mdW5jLCAmaW9wYXJhbSk7CisJCQlyZXN1bHQg PSBPaWRJbnB1dEZ1bmN0aW9uQ2FsbChpbmZ1bmMsIHN0ciwgaW9wYXJhbSwgLTEpOworCQl9CisJ CWVsc2UgaWYgKGNwYXRodHlwZSA9PSBDT0VSQ0lPTl9QQVRIX0ZVTkMpCisJCXsKKwkJCXJlc3Vs dCA9IE9pZEZ1bmN0aW9uQ2FsbDMoY2Z1bmNpZCwKKwkJCQkJCQl2YWx1ZSwKKwkJCQkJCQlJbnQz MkdldERhdHVtKHRhcmdldF90eXBtb2QpLAorCQkJCQkJCUJvb2xHZXREYXR1bShmYWxzZSkpOwor CQl9CisJfQorCWVsc2UKKwl7CisJCXJlc3VsdCA9IHZhbHVlOworCQlpc19iaW5hcnlfY2FzdCA9 IHRydWU7CisJfQorCisJaWYgKHRhcmdldF90eXBtb2QgPCAxIHx8ICh0YXJnZXRfdHlwbW9kID09 IHNvdXJjZV90eXBtb2QgJiYgaXNfYmluYXJ5X2Nhc3QpKQorCQlyZXR1cm4gcmVzdWx0OworCisJ Y3BhdGh0eXBlID0gZmluZF90eXBtb2RfY29lcmNpb25fZnVuY3Rpb24odGFyZ2V0X3R5cGlkLCAm Y2Z1bmNpZCk7CisJaWYgKGNwYXRodHlwZSA9PSBDT0VSQ0lPTl9QQVRIX0ZVTkMpCisJeworCQly ZXN1bHQgPSBPaWRGdW5jdGlvbkNhbGwzKGNmdW5jaWQsCisJCQkJCQkJCQkJCXJlc3VsdCwKKwkJ CQkJCQkJCQkJSW50MzJHZXREYXR1bSh0YXJnZXRfdHlwbW9kKSwKKwkJCQkJCQkJCQkJQm9vbEdl dERhdHVtKGZhbHNlKSk7CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworRGF0dW0KK0dldFNj aGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLAorCQkJCQkJT2lkCXR5cGlkLCBp bnQzMiB0eXBtb2QsCisJCQkJCQlpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwpCit7CisJQXNz ZXJ0KHZhcmlkICE9IEludmFsaWRPaWQpOworCisJaWYgKHNjaGVtYXZhcmhhc2h0YWIgIT0gTlVM TCkKKwl7CisJCVNjaGVtYVZhcgkJdmFyOworCQlib29sCQkJZm91bmQ7CisKKwkJdmFyID0gKFNj aGVtYVZhcikgaGFzaF9zZWFyY2goc2NoZW1hdmFyaGFzaHRhYiwKKwkJCQkJCQkJCQkgICZ2YXJp ZCwgSEFTSF9GSU5ELCAmZm91bmQpOworCisJCWlmIChmb3VuZCAmJiAhdmFyLT5pc251bGwpCisJ CXsKKwkJCURhdHVtIHJlc3VsdDsKKworCQkJcmVzdWx0ID0gZGF0dW1DYXN0KHZhci0+dmFsdWUs IHR5cGlkLCB0eXBtb2QsCisJCQkJCQkJCQl2YXItPnR5cGlkLCB2YXItPnR5cG1vZCk7CisJCQkq aXNOdWxsID0gZmFsc2U7CisKKwkJCWlmIChyZXN1bHQgIT0gdmFyLT52YWx1ZSkKKwkJCQlyZXR1 cm4gcmVzdWx0OworCQkJZWxzZQorCQkJCXJldHVybiBkYXR1bUNvcHkocmVzdWx0LCB0eXBieXZh bCwgdHlwbGVuKTsKKwkJfQorCX0KKworCS8qCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBz aW1wbGUsIGJlY2F1c2UgZGVmYXVsdCBleHByZXNzaW9ucworCSAqIGFyZSBub3Qgc3VwcG9ydGVk LiBXaXRoIHN1cHBvcnQgb2YgZGVmYXVsdCBleHByZXNzaW9uLCB0aGVyZQorCSAqIHNob3VsZCBi ZSBpbnNlcnQgc2NoZW1hIHZhcmlhYmxlIGludG8gY2FjaGUuIE5vdCBzdXBwb3J0ZWQgeWV0LAor CSAqIHNvIGRvIGp1c3Qgc2ltcGx5IHdvcmsuCisJICovCisJKmlzTnVsbCA9IHRydWU7CisJcmV0 dXJuIChEYXR1bSkgMDsKK30KKworLyoKKyAqIFNlY3VyaXplZCB2ZXJzaW9uIG9mIEdldFNjaGVt YVZhcmlhYmxlCisgKi8KK0RhdHVtCitHZXRTY2hlbWFWYXJpYWJsZVNlY3VyZShPaWQgdmFyaWQs IGJvb2wgKmlzTnVsbCwKKwkJCQkJCU9pZAl0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJCQkJaW50 MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFsKQoreworCUFjbFJlc3VsdCBhY2xyZXN1bHQ7CisKKwkv KiBDaGVjayBwZXJtaXNzaW9ucyAqLworCWFjbHJlc3VsdCA9IHBnX2NsYXNzX2FjbGNoZWNrKHZh cmlkLCBHZXRVc2VySWQoKSwgQUNMX1NFTEVDVCk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVD S19PSykKKwkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUsIGdldF9z Y2hlbWF2YXJfbmFtZSh2YXJpZCkpOworCisJcmV0dXJuIEdldFNjaGVtYVZhcmlhYmxlKHZhcmlk LCBpc051bGwsIHR5cGlkLCB0eXBtb2QsIHR5cGxlbiwgdHlwYnl2YWwpOworfQorCisvKgorICog VjEgZnVuY3Rpb24gQVBJCisgKgorICogdm9pZCBzZXRfc2NoZW1hX3ZhcmlhYmxlKHZhciByZWdj bGFzcywgdmFsdWUgYW55ZWxlbWVudCk7CisgKiBhbnllbGVtZW50IGdldF9zY2hlbWFfdmFyaWFi bGUodmFyIHJlZ2NsYXNzLCBleHBlY3RlZF90eXBlIGFueWVsZW1lbnQpCisgKgorICovCitEYXR1 bQorc2V0X3NjaGVtYV92YXJpYWJsZShQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJdmFyaWQ7 CisJRGF0dW0JdmFsdWU7CisJYm9vbAlpc051bGw7CisJT2lkCQl0eXBpZDsKKwlpbnQxNgl0eXBs ZW47CisJYm9vbAl0eXBieXZhbDsKKworCWlmIChQR19BUkdJU05VTEwoMCkpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSwKKwkJ CQkgZXJybXNnKCJudWxsIHZhbHVlIG5vdCBhbGxvd2VkIGZvciB2YXJpYWJsZSBpZGVudGl0eSIp KSk7CisKKwl2YXJpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgx KSkKKwl7CisJCXZhbHVlID0gUEdfR0VUQVJHX0RBVFVNKDEpOworCQlpc051bGwgPSBmYWxzZTsK Kwl9CisJZWxzZQorCXsKKwkJdmFsdWUgPSAoRGF0dW0pIDA7CisJCWlzTnVsbCA9IHRydWU7CisJ fQorCisJdHlwaWQgPSBnZXRfZm5fZXhwcl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAxKTsKKwlp ZiAodHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3Qg ZGV0ZXJtaW5lIGlucHV0IGRhdGEgdHlwZSIpKSk7CisKKwlnZXRfdHlwbGVuYnl2YWwodHlwaWQs ICZ0eXBsZW4sICZ0eXBieXZhbCk7CisJU2V0U2NoZW1hVmFyaWFibGVTZWN1cmUodmFyaWQsIHZh bHVlLCBpc051bGwsIHR5cGlkLCAtMSwgdHlwbGVuLCB0eXBieXZhbCk7CisKKwlQR19SRVRVUk5f Vk9JRCgpOworfQorCitEYXR1bQorZ2V0X3NjaGVtYV92YXJpYWJsZShQR19GVU5DVElPTl9BUkdT KQoreworCU9pZAkJdmFyaWQ7CisJT2lkCQl0eXBpZDsKKwlpbnQxNgl0eXBsZW47CisJYm9vbAl0 eXBieXZhbDsKKwlib29sCWlzTnVsbDsKKwlEYXR1bQlyZXN1bHQ7CisKKwlpZiAoUEdfQVJHSVNO VUxMKDApKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxV RV9OT1RfQUxMT1dFRCksCisJCQkJIGVycm1zZygibnVsbCB2YWx1ZSBub3QgYWxsb3dlZCBmb3Ig dmFyaWFibGUgaWRlbnRpdHkiKSkpOworCisJdmFyaWQgPSBQR19HRVRBUkdfT0lEKDApOworCisJ dHlwaWQgPSBnZXRfZm5fZXhwcl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAxKTsKKwlpZiAodHlw aWQgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0ZXJt aW5lIGlucHV0IGRhdGEgdHlwZSIpKSk7CisKKwlnZXRfdHlwbGVuYnl2YWwodHlwaWQsICZ0eXBs ZW4sICZ0eXBieXZhbCk7CisJcmVzdWx0ID0gR2V0U2NoZW1hVmFyaWFibGVTZWN1cmUodmFyaWQs ICZpc051bGwsIHR5cGlkLCAtMSwgdHlwbGVuLCB0eXBieXZhbCk7CisKKwlpZiAoaXNOdWxsKQor CQlQR19SRVRVUk5fTlVMTCgpOworCWVsc2UKKwkJUEdfUkVUVVJOX0RBVFVNKHJlc3VsdCk7Cit9 CisKKy8qCisgKiBSZXN1bHRzOgorICo9CisgCisxLiBUaGUgc2NoZW1hIHZhcmlhYmxlcyBhcmUg c2ltaWxhciB0byB0ZW1wb3JhcnkgdGFibGVzIC0gYnV0IHRoZSBkYXRhIGFyZSBub3Qgc2F2ZWQK KyAgIGluIDhLQiBibG9ja3MsIHNvIG5ldyBzdG9yYWdlIGFuZCBzb21lIHNpbXBsZSBzdG9yYWdl IG1hbmFnZXIgc2hvdWxkIGJlIGNyZWF0ZWQuIFdlCisgICB3b3VsZCBub3QgdG8gdXNlIGxvY2Fs IGJ1ZmZlciBkdWUgYWxsb2NhdGlvbiA4S0IgYXMgbWluaW11biwgY3JlYXRpbmcgdGVtcCBmaWxl LgorCisyLiBXZSBzaG91bGQgdG8gd29yayB3aXRoIHR5cG1vZCwgc28gcGdfYXR0cmlidXRlIGVu dHJ5IHNob3VsZCBiZSBjcmVhdGVkIGFueXRpbWUuCisKKzMuIEEgcmlzayBvZiBjb2xsaXNpb25z IG9mIHZhcmlhYmxlIGFuZCB0YWJsZSBuYW1lIHdpbGwgYmUgcmVkdWNlZCwgd2hlbiB2YXJpYWJs ZXMKKyAgIGFuZCB0YWJsZXMgY2Fubm90IHRvIGhhdmUgc2FtZSBuYW1lLgorCis0LiBJZiBzY2hl bWEgdmFyaWFibGVzIGFyZSBwZ19jbGFzcyBiYXNlZCwgdGhlbiBzb21lIGN1cnJlbnQgc3ludGF4 IGhhcyBzZW5zZQorCisgICAgV2UgY2FuIHN1cHBvcnQgVVBEQVRFIGFuZCBTRUxFQ1QgY29tbWFu ZHMgb24gdmFyaWFibGVzLgorCisgICAgcG9zc2libGUgc3ludGF4ZXM6CisKKyAgICAgICAgU0VM RUNUIHZhcm5hbWU7CisgICAgICAgIFNFTEVDVCB2YXJuYW1lLmZpZWxkOworICAgICAgICBTRUxF Q1QgdmFybmFtZSBGUk9NIHZhcm5hbWU7IC0tIHdoZW4gdmFyIGlzIHNjYWxhciwgdGhlbiB2YXJu YW1lIGluIHRhcmdldCBsaXN0IGlzIHNjYWxhcgorCisgICAgICAgIFVQREFURSB2YXJuYW1lIFNF VCB2YXJuYW1lID0gMTA7IC0tIHNjYWxhciB2ZXJzaW9uCisgICAgICAgIFVQREFURSB2YXJuYW1l IFNFVCB2YXJuYW1lID0gKHgseSx6KSAtLSBjb21wb3NpdGUgdmVyc2lvbgorICAgICAgICBVUERB VEUgdmFybmFtZSBTRVQgdmFybmFtZS5maWVsZDEgPSB4LCB2YXJuYW1lLmZpZWxkMiA9IHksIC4u CisKKyAgICAgICAgTEVUIHZhcm5hbWUgPSBleHByOworICAgICAgICBMRVQgdmFybmFtZS5maWVs ZDEgPSBleHByOworICAgICAgICBMRVQgdmFybmFtZSA9ICh4LCB5LCB6KTsgLS0gY29tcG9zaXRl IHZlcnNpb24KKworNS4gTEVUIGNtZCBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgQ01EIChsaWtlIElO U0VSVCwgVVBEQVRFLCBERUxFVEUpIG9yIFV0aWxpdHkgKGxpa2UKKyAgIENyZWF0ZVRhYmxlQXNT ZWxlY3QpLiBQcmVmZXIgZmlyc3Qgb3B0aW9uLCBiZWNhdXNlIHRoZXJlIGNhbiBiZSBwcmVwYXJl ZCwgY2FuIGJlCisgICB1c2VkIHRvZ2V0aGVyIHdpdGggRVhQTEFJTiwgZXRjLgorCisgICBFeHBl Y3RlZCBmb3JtOgorICAgICBMRVQgZm9vID0gKFNFTEVDVCBpZCBGUk9NIGJvbyBXSEVSRSBzb21l ID0gJ2hlbGxvJyk7CisKKyAgIHNvIHBvc3NpYmlsaXR5IHRvIHJ1biBFWFBMQUlOIExFVCAuLiBo YXMgZ29vZCBlbm91Z2ggYmVuZWZpdAorKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDg5NDU0ZDhlODAuLjEzYWY5MTZjMTEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0xMDA0OCw2ICsxMDA0OCw3IEBAIEFURXhlY0NoYW5n ZU93bmVyKE9pZCByZWxhdGlvbk9pZCwgT2lkIG5ld093bmVySWQsIGJvb2wgcmVjdXJzaW5nLCBM T0NLTU9ERSBsb2NrCiAJCWNhc2UgUkVMS0lORF9NQVRWSUVXOgogCQljYXNlIFJFTEtJTkRfRk9S RUlHTl9UQUJMRToKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFOgorCQljYXNlIFJF TEtJTkRfVkFSSUFCTEU6CiAJCQkvKiBvayB0byBjaGFuZ2Ugb3duZXIgKi8KIAkJCWJyZWFrOwog CQljYXNlIFJFTEtJTkRfSU5ERVg6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCBjNmViM2Vi YWNmLi41M2VhODkwNTE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTMzLDYgKzMzLDcg QEAKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3Rh Y2Nlc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjb21tYW5k cy9zY2hlbWF2YXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjRXhwci5oIgogI2luY2x1ZGUg ImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgpAQCAtNzIzLDYg KzcyNCw3IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAog CQkJewogCQkJCVBhcmFtCSAgICpwYXJhbSA9IChQYXJhbSAqKSBub2RlOwogCQkJCVBhcmFtTGlz dEluZm8gcGFyYW1zOworCQkJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAKIAkJCQlzd2l0Y2ggKHBh cmFtLT5wYXJhbWtpbmQpCiAJCQkJewpAQCAtNzMwLDYgKzczMiwyMyBAQCBFeGVjSW5pdEV4cHJS ZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQkJCXNjcmF0Y2gub3Bjb2RlID0g RUVPUF9QQVJBTV9FWEVDOwogCQkJCQkJc2NyYXRjaC5kLnBhcmFtLnBhcmFtaWQgPSBwYXJhbS0+ cGFyYW1pZDsKIAkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJhbXR5cGUgPSBwYXJhbS0+cGFyYW10 eXBlOworCQkJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOworCQkJCQkJYnJl YWs7CisJCQkJCWNhc2UgUEFSQU1fU0NIRU1BX1ZBUklBQkxFOgorCQkJCQkJLyogQ2hlY2sgcGVy bWlzc2lvbiB0byByZWFkIHNjaGVtYSB2YXJpYWJsZSAqLworCQkJCQkJYWNscmVzdWx0ID0gcGdf Y2xhc3NfYWNsY2hlY2socGFyYW0tPnBhcmFtaWQsIEdldFVzZXJJZCgpLCBBQ0xfU0VMRUNUKTsK KwkJCQkJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQkJCQkJYWNsY2hlY2tfZXJy b3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUsIGdldF9zY2hlbWF2YXJfbmFtZShwYXJhbS0+ cGFyYW1pZCkpOworCisJCQkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfUEFSQU1fU0NIRU1BX1ZB UklBQkxFOworCQkJCQkJc2NyYXRjaC5kLnBhcmFtLnBhcmFtaWQgPSBwYXJhbS0+cGFyYW1pZDsK KwkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJhbXR5cGUgPSBwYXJhbS0+cGFyYW10eXBlOworCQkJ CQkJc2NyYXRjaC5kLnBhcmFtLnBhcmFtdHlwbW9kID0gcGFyYW0tPnBhcmFtdHlwbW9kOworCisJ CQkJCQlnZXRfdHlwbGVuYnl2YWwocGFyYW0tPnBhcmFtdHlwZSwKKwkJCQkJCQkJCQkJCSZzY3Jh dGNoLmQucGFyYW0ucGFyYW10eXBsZW4sCisJCQkJCQkJCQkJCQkmc2NyYXRjaC5kLnBhcmFtLnBh cmFtdHlwYnl2YWwpOworCiAJCQkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7 CiAJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBQQVJBTV9FWFRFUk46CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHJJbnRlcnAuYwppbmRleCBmNjQ2ZmQ5YzUxLi43YTNiMjgzMDM5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJh Y2Nlc3MvdHVwdG9hc3Rlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2Rl U3VicGxhbi5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTM1MCw2ICszNTEsNyBAQCBFeGVj SW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wg KmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfUEFSQU1fRVhFQywKIAkJJiZDQVNFX0VFT1BfUEFSQU1f RVhURVJOLAogCQkmJkNBU0VfRUVPUF9QQVJBTV9DQUxMQkFDSywKKwkJJiZDQVNFX0VFT1BfUEFS QU1fU0NIRU1BX1ZBUklBQkxFLAogCQkmJkNBU0VfRUVPUF9DQVNFX1RFU1RWQUwsCiAJCSYmQ0FT RV9FRU9QX01BS0VfUkVBRE9OTFksCiAJCSYmQ0FTRV9FRU9QX0lPQ09FUkNFLApAQCAtMTAzMSw2 ICsxMDMzLDIzIEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0 ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJRUVPX05FWFQoKTsKIAkJfQogCisJCUVFT19D QVNFKEVFT1BfUEFSQU1fU0NIRU1BX1ZBUklBQkxFKQorCQl7CisJCQlEYXR1bQlkOworCQkJYm9v bAlpc251bGw7CisKKwkJCWQgPSBHZXRTY2hlbWFWYXJpYWJsZShvcC0+ZC5wYXJhbS5wYXJhbWlk LCAmaXNudWxsLAorCQkJCQkJCQkJCQkJCSAgb3AtPmQucGFyYW0ucGFyYW10eXBlLAorCQkJCQkJ CQkJCQkJCSAgLTEsCisJCQkJCQkJCQkJCQkJICBvcC0+ZC5wYXJhbS5wYXJhbXR5cGxlbiwKKwkJ CQkJCQkJCQkJCQkgIG9wLT5kLnBhcmFtLnBhcmFtdHlwYnl2YWwpOworCisJCQkqb3AtPnJlc3Zh bHVlID0gZDsKKwkJCSpvcC0+cmVzbnVsbCA9IGlzbnVsbDsKKworCQkJRUVPX05FWFQoKTsKKwkJ fQorCiAJCUVFT19DQVNFKEVFT1BfUEFSQU1fQ0FMTEJBQ0spCiAJCXsKIAkJCS8qIGFsbG93IGFu IGV4dGVuc2lvbiBtb2R1bGUgdG8gc3VwcGx5IGEgUEFSQU1fRVhURVJOIHZhbHVlICovCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYwppbmRleCA0MTA5MjFjYzQwLi4wNDUxM2IxMGUwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKQEAgLTIxMCw2ICsyMTAsNyBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCXN3aXRjaCAocXVlcnlEZXNjLT5v cGVyYXRpb24pCiAJewogCQljYXNlIENNRF9TRUxFQ1Q6CisJCWNhc2UgQ01EX0xFVDoKIAogCQkJ LyoKIAkJCSAqIFNFTEVDVCBGT1IgW0tFWV0gVVBEQVRFL1NIQVJFIGFuZCBtb2RpZnlpbmcgQ1RF cyBuZWVkIHRvIG1hcmsKQEAgLTExMTksNiArMTEyMCwxNCBAQCBDaGVja1ZhbGlkUmVzdWx0UmVs KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIENtZFR5cGUgb3BlcmF0aW9uKQogCQkJCQkg ZXJybXNnKCJjYW5ub3QgY2hhbmdlIFRPQVNUIHJlbGF0aW9uIFwiJXNcIiIsCiAJCQkJCQkJUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVzdWx0UmVsKSkpKTsKIAkJCWJyZWFrOworCQljYXNlIFJF TEtJTkRfVkFSSUFCTEU6CisJCQkvKiBvbmx5IExFVCBjb21tYW5kIGNhbiBjaGFuZ2UgYSB2YXJp YWJsZSAqLworCQkJaWYgKG9wZXJhdGlvbiAhPSBDTURfTEVUKQorCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJCSBlcnJt c2coImNhbm5vdCBjaGFuZ2Ugc2NoZW1hIHZhcmlhYmxlIFwiJXNcIiIsCisJCQkJCQkJCVJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlc3VsdFJlbCkpKSk7CisJCQlicmVhazsKIAkJY2FzZSBSRUxL SU5EX1ZJRVc6CiAKIAkJCS8qCkBAIC0xMjg2LDYgKzEyOTUsMTMgQEAgQ2hlY2tWYWxpZFJvd01h cmtSZWwoUmVsYXRpb24gcmVsLCBSb3dNYXJrVHlwZSBtYXJrVHlwZSkKIAkJCQkJCSBlcnJtc2co ImNhbm5vdCBsb2NrIHJvd3MgaW4gZm9yZWlnbiB0YWJsZSBcIiVzXCIiLAogCQkJCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwogCQkJYnJlYWs7CisJCWNhc2UgUkVMS0lORF9W QVJJQUJMRToKKwkJCS8qIE11c3QgZGlzYWxsb3cgdGhpcyBiZWNhdXNlIHdlIHRoZXJlIGFyZSBu b3Qgcm93cyAqLworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9O R19PQkpFQ1RfVFlQRSksCisJCQkJCSBlcnJtc2coImNhbm5vdCBsb2NrIHJvd3MgaW4gc2NoZW1h IHZhcmlhYmxlIFwiJXNcIiIsCisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkp KTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNv ZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5jCmluZGV4IDJhOGVjYmQ4MzAuLmY4ZTQ3OGFhNDIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC0zOSw2ICszOSw3IEBACiAKICNpbmNsdWRlICJhY2Nl c3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRlICJj b21tYW5kcy9zY2hlbWF2YXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1 dG9yLmgiCkBAIC02OCw2ICs2OSw3IEBAIHN0YXRpYyB2b2lkIEV4ZWNTZXR1cENoaWxkUGFyZW50 TWFwRm9yU3VicGxhbihNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlKTsKIHN0YXRpYyBUdXBsZUNv bnZlcnNpb25NYXAgKnR1cGNvbnZfbWFwX2Zvcl9zdWJwbGFuKE1vZGlmeVRhYmxlU3RhdGUgKm5v ZGUsCiAJCQkJCQlpbnQgd2hpY2hwbGFuKTsKIAorCiAvKgogICogVmVyaWZ5IHRoYXQgdGhlIHR1 cGxlcyB0byBiZSBwcm9kdWNlZCBieSBJTlNFUlQgb3IgVVBEQVRFIG1hdGNoIHRoZQogICogdGFy Z2V0IHJlbGF0aW9uJ3Mgcm93dHlwZQpAQCAtMTU2OCw2ICsxNTcwLDgxIEBAIEV4ZWNPbkNvbmZs aWN0VXBkYXRlKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsCiB9CiAKIAorCisKKworLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoJCUV4ZWNMZXQKKyAqCisgKgkJRm9yIExFVCwgd2UgaGF2ZSB0byB1cGRhdGUgdGFy Z2V0IHZhcmlhYmxlLAorICogICAgICBSZXR1cm5zIE5VTEwsIHRoZXJlIGFyZSBub3QgUkVUVVJO SU5HIGNsYXVzZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIFR1cGxlVGFibGVTbG90ICoKK0V4 ZWNMZXQoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKKwkJICAgVHVwbGVUYWJsZVNsb3QgKnNs b3QsCisJCSAgIEVTdGF0ZSAqZXN0YXRlLAorCQkgICBib29sIGNhblNldFRhZykKK3sKKwlIZWFw VHVwbGUJdHVwbGU7CisJUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbzsKKwlSZWxhdGlvbgly ZXN1bHRSZWxhdGlvbkRlc2M7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJYm9vbAkJaXNudWxsID0g dHJ1ZTsKKwlEYXR1bQkJdmFsdWU7CisJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IE5VTEw7CisJ T2lkCQkJdmFyaWQ7CisKKwlpZiAoc2xvdCAhPSBOVUxMICYmICFzbG90LT50dHNfaXNlbXB0eSkK Kwl7CisJCXR1cGxlID0gc2xvdC0+dHRzX3R1cGxlOworCQl0dXBkZXNjID0gc2xvdC0+dHRzX3R1 cGxlRGVzY3JpcHRvcjsKKworCQlBc3NlcnQodHVwZGVzYyAhPSBOVUxMKTsKKworCQkvKiBzaG91 bGQgYmUgY2hlY2tlZCBiZWZvcmUgKi8KKwkJaWYgKHR1cGRlc2MtPm5hdHRzICE9IDEpCisJCQll bG9nKEVSUk9SLCAidW5leHBlY3RlZCBudW1iZXIgb2YgYXR0cmlidXRlcyIpOworCisJCWF0dHIg PSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIDApOworCisJCWlmICghc2xvdC0+dHRzX2lzbnVsbFsw XSkKKwkJeworCQkJaXNudWxsID0gZmFsc2U7CisJCQl2YWx1ZSA9IHNsb3QtPnR0c192YWx1ZXNb MF07CisJCX0KKwl9CisKKwkvKgorCSAqIE5vdywgZXNfcmVzdWx0X3JlbGF0aW9uX2luZm8gaXMg ZW1wdHksIGJ1dCBjYW4gYmUgaW5pdGlhbGl6ZWQKKwkgKiB0byBzdHJ1Y3R1cmUgb2YgdXNlZCBz Y2hlbWEgdmFyaWFibGUuCisJICovCisJcmVzdWx0UmVsSW5mbyA9IGVzdGF0ZS0+ZXNfcmVzdWx0 X3JlbGF0aW9uX2luZm87CisJcmVzdWx0UmVsYXRpb25EZXNjID0gcmVzdWx0UmVsSW5mby0+cmlf UmVsYXRpb25EZXNjOworCXZhcmlkID0gcmVzdWx0UmVsYXRpb25EZXNjLT5yZF9pZDsKKworCWlm ICghaXNudWxsKQorCXsKKwkJLyogZXhwZWN0aW5nIHNvIHZhcmlhYmxlIGFuZCBleHByZXNzaW9u IGFyZSBlcXVhbCAqLworCQlTZXRTY2hlbWFWYXJpYWJsZSh2YXJpZCwgdmFsdWUsIGlzbnVsbCwK KwkJCQkJCQkJYXR0ci0+YXR0dHlwaWQsIC0xLAorCQkJCQkJCQlhdHRyLT5hdHRsZW4sIGF0dHIt PmF0dGJ5dmFsKTsKKwl9CisJZWxzZQorCXsKKwkJU2V0U2NoZW1hVmFyaWFibGUodmFyaWQsIChE YXR1bSkgMCwgdHJ1ZSwKKwkJCQkJCQkJICBJbnZhbGlkT2lkLCAtMSwgLTEsIGZhbHNlKTsKKwl9 CisKKwlpZiAoY2FuU2V0VGFnKQorCXsKKwkJQXNzZXJ0KGVzdGF0ZS0+ZXNfcHJvY2Vzc2VkID09 IDApOworCQkoZXN0YXRlLT5lc19wcm9jZXNzZWQpKys7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9 CisKIC8qCiAgKiBQcm9jZXNzIEJFRk9SRSBFQUNIIFNUQVRFTUVOVCB0cmlnZ2VycwogICovCkBA IC0xNTk4LDYgKzE2NzUsOSBAQCBmaXJlQlNUcmlnZ2VycyhNb2RpZnlUYWJsZVN0YXRlICpub2Rl KQogCQljYXNlIENNRF9ERUxFVEU6CiAJCQlFeGVjQlNEZWxldGVUcmlnZ2Vycyhub2RlLT5wcy5z dGF0ZSwgcmVzdWx0UmVsSW5mbyk7CiAJCQlicmVhazsKKwkJY2FzZSBDTURfTEVUOgorCQkJLyog dGhlcmUgYXJlIG5vIHRyaWdnZXIgKi8KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhF UlJPUiwgInVua25vd24gb3BlcmF0aW9uIik7CiAJCQlicmVhazsKQEAgLTE2NTIsNiArMTczMiw5 IEBAIGZpcmVBU1RyaWdnZXJzKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpCiAJCQlFeGVjQVNEZWxl dGVUcmlnZ2Vycyhub2RlLT5wcy5zdGF0ZSwgcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJIG5vZGUt Pm10X3RyYW5zaXRpb25fY2FwdHVyZSk7CiAJCQlicmVhazsKKwkJY2FzZSBDTURfTEVUOgorCQkJ LyogdmFyaWFibGVzIGhhcyBub3QgdHJpZ2dlcnMgKi8KKwkJCWJyZWFrOwogCQlkZWZhdWx0Ogog CQkJZWxvZyhFUlJPUiwgInVua25vd24gb3BlcmF0aW9uIik7CiAJCQlicmVhazsKQEAgLTIwNTYs NiArMjEzOSw5IEBAIEV4ZWNNb2RpZnlUYWJsZShQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJCQkJCQkJ ICAmbm9kZS0+bXRfZXBxc3RhdGUsIGVzdGF0ZSwKIAkJCQkJCQkJICBOVUxMLCB0cnVlLCBub2Rl LT5jYW5TZXRUYWcpOwogCQkJCWJyZWFrOworCQkJY2FzZSBDTURfTEVUOgorCQkJCXNsb3QgPSBF eGVjTGV0KG5vZGUsIHNsb3QsIGVzdGF0ZSwgbm9kZS0+Y2FuU2V0VGFnKTsKKwkJCQlicmVhazsK IAkJCWRlZmF1bHQ6CiAJCQkJZWxvZyhFUlJPUiwgInVua25vd24gb3BlcmF0aW9uIik7CiAJCQkJ YnJlYWs7CkBAIC0yNTYyLDYgKzI2NDgsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRh YmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQlicmVhazsKIAkJCWNh c2UgQ01EX1VQREFURToKIAkJCWNhc2UgQ01EX0RFTEVURToKKwkJCWNhc2UgQ01EX0xFVDoKIAkJ CQlqdW5rX2ZpbHRlcl9uZWVkZWQgPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivc3BpLmMKaW5kZXggOWZjNDQzMWI4MC4uMzEwYmMzZjJjNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAg LTI0MDQsNiArMjQwNCw5IEBAIF9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29s IGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpCiAJCQllbHNlCiAJCQkJcmVzID0gU1BJX09L X1VQREFURTsKIAkJCWJyZWFrOworCQljYXNlIENNRF9MRVQ6CisJCQlyZXMgPSBTUElfT0tfVVRJ TElUWTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJcmV0dXJuIFNQSV9FUlJPUl9PUFVOS05P V047CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMv YmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCA4MjI1NWIwZDFkLi5hNTNmZTQxMDhjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtMzA2Niw2ICszMDY2LDE3IEBAIF9jb3B5U2VsZWN0U3Rt dChjb25zdCBTZWxlY3RTdG10ICpmcm9tKQogCXJldHVybiBuZXdub2RlOwogfQogCitzdGF0aWMg TGV0U3RtdCAqCitfY29weUxldFN0bXQoY29uc3QgTGV0U3RtdCAqZnJvbSkKK3sKKwlMZXRTdG10 ICpuZXdub2RlID0gbWFrZU5vZGUoTGV0U3RtdCk7CisKKwlDT1BZX05PREVfRklFTEQodmFyaWFi bGUpOworCUNPUFlfTk9ERV9GSUVMRChzZWxlY3RTdG10KTsKKworCXJldHVybiBuZXdub2RlOwor fQorCiBzdGF0aWMgU2V0T3BlcmF0aW9uU3RtdCAqCiBfY29weVNldE9wZXJhdGlvblN0bXQoY29u c3QgU2V0T3BlcmF0aW9uU3RtdCAqZnJvbSkKIHsKQEAgLTUxMDEsNiArNTExMiw5IEBAIGNvcHlP YmplY3RJbXBsKGNvbnN0IHZvaWQgKmZyb20pCiAJCWNhc2UgVF9TZWxlY3RTdG10OgogCQkJcmV0 dmFsID0gX2NvcHlTZWxlY3RTdG10KGZyb20pOwogCQkJYnJlYWs7CisJCWNhc2UgVF9MZXRTdG10 OgorCQkJcmV0dmFsID0gX2NvcHlMZXRTdG10KGZyb20pOworCQkJYnJlYWs7CiAJCWNhc2UgVF9T ZXRPcGVyYXRpb25TdG10OgogCQkJcmV0dmFsID0gX2NvcHlTZXRPcGVyYXRpb25TdG10KGZyb20p OwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMg Yi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggYjliYzhlMzhkNy4uZTM1YjQ3 ZmVhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpAQCAtMTA2Nyw2ICsxMDY3LDE1IEBAIF9lcXVh bFNlbGVjdFN0bXQoY29uc3QgU2VsZWN0U3RtdCAqYSwgY29uc3QgU2VsZWN0U3RtdCAqYikKIAly ZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wKK19lcXVhbExldFN0bXQoY29uc3QgTGV0U3Rt dCAqYSwgY29uc3QgTGV0U3RtdCAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQodmFyaWFibGUp OworCUNPTVBBUkVfTk9ERV9GSUVMRChzZWxlY3RTdG10KTsKKworCXJldHVybiB0cnVlOworfQor CiBzdGF0aWMgYm9vbAogX2VxdWFsU2V0T3BlcmF0aW9uU3RtdChjb25zdCBTZXRPcGVyYXRpb25T dG10ICphLCBjb25zdCBTZXRPcGVyYXRpb25TdG10ICpiKQogewpAQCAtMzIzMyw2ICszMjQyLDkg QEAgZXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIAkJY2FzZSBUX1NlbGVjdFN0 bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxTZWxlY3RTdG10KGEsIGIpOwogCQkJYnJlYWs7CisJCWNh c2UgVF9MZXRTdG10OgorCQkJcmV0dmFsID0gX2VxdWFsTGV0U3RtdChhLCBiKTsKKwkJCWJyZWFr OwogCQljYXNlIFRfU2V0T3BlcmF0aW9uU3RtdDoKIAkJCXJldHZhbCA9IF9lcXVhbFNldE9wZXJh dGlvblN0bXQoYSwgYik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggNmM3NmM0 MWViZS4uOGQyNDgxOGM5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTM0NDQsNiArMzQ0NCwx NiBAQCByYXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcihOb2RlICpub2RlLAogCQkJCQlyZXR1cm4g dHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfTGV0U3RtdDoKKwkJCXsKKwkJCQlMZXRT dG10ICpzdG10ID0gKExldFN0bXQgKikgbm9kZTsKKworCQkJCWlmICh3YWxrZXIoc3RtdC0+dmFy aWFibGUsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAod2Fsa2VyKHN0bXQt PnNlbGVjdFN0bXQsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFr OwogCQljYXNlIFRfQV9FeHByOgogCQkJewogCQkJCUFfRXhwcgkgICAqZXhwciA9IChBX0V4cHIg Kikgbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwppbmRleCA4OWYyN2NlMGVi Li5mNGQ4NzU2NDg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1 c2VzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCkBAIC0xMjUx LDEyICsxMjUxLDE1IEBAIG1heF9wYXJhbGxlbF9oYXphcmRfd2Fsa2VyKE5vZGUgKm5vZGUsIG1h eF9wYXJhbGxlbF9oYXphcmRfY29udGV4dCAqY29udGV4dCkKIAkgKiBQQVJBTV9FWEVDIFBhcmFt cyBsaXN0ZWQgaW4gc2FmZV9wYXJhbV9pZHMsIG1lYW5pbmcgdGhleSBjb3VsZCBiZQogCSAqIGVp dGhlciBnZW5lcmF0ZWQgd2l0aGluIHRoZSB3b3JrZXIgb3IgY2FuIGJlIGNvbXB1dGVkIGluIG1h c3RlciBhbmQKIAkgKiB0aGVuIHRoZWlyIHZhbHVlIGNhbiBiZSBwYXNzZWQgdG8gdGhlIHdvcmtl ci4KKwkgKiBQQVJBTV9TQ0hFTUFfVkFSSUFCTEUgcGFyYW1zIGFyZSBuZXdlciBjaGFuZ2VkIGJ5 IHdvcmtlcnMsIHNvIHRoZXkgY2FuIGJlCisJICogc2FmZS4KIAkgKi8KIAllbHNlIGlmIChJc0Eo bm9kZSwgUGFyYW0pKQogCXsKIAkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5vZGU7CiAK LQkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOKQorCQlpZiAocGFyYW0tPnBh cmFta2luZCA9PSBQQVJBTV9FWFRFUk4gfHwKKwkJCXBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1f U0NIRU1BX1ZBUklBQkxFKQogCQkJcmV0dXJuIGZhbHNlOwogCiAJCWlmIChwYXJhbS0+cGFyYW1r aW5kICE9IFBBUkFNX0VYRUMgfHwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFs eXplLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4IGU3YjJiYzdlNzMuLmYy MmVhYjQyMmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUg InBhcnNlci9wYXJzZV90YXJnZXQuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAj aW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCiAKQEAgLTU0LDYgKzU1LDcgQEAgc3RhdGlj IFF1ZXJ5ICp0cmFuc2Zvcm1JbnNlcnRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSW5zZXJ0U3Rt dCAqc3RtdCk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtSW5zZXJ0Um93KFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqZXhwcmxpc3QsCiAJCQkJICAgTGlzdCAqc3RtdGNvbHMsIExpc3QgKmljb2x1 bW5zLCBMaXN0ICphdHRybm9zLAogCQkJCSAgIGJvb2wgc3RyaXBfaW5kaXJlY3Rpb24pOworc3Rh dGljIFF1ZXJ5ICp0cmFuc2Zvcm1MZXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGV0U3RtdCAq c3RtdCk7CiBzdGF0aWMgT25Db25mbGljdEV4cHIgKnRyYW5zZm9ybU9uQ29uZmxpY3RDbGF1c2Uo UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICBPbkNvbmZsaWN0Q2xhdXNlICpvbkNvbmZsaWN0 Q2xhdXNlKTsKIHN0YXRpYyBpbnQJY291bnRfcm93ZXhwcl9jb2x1bW5zKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTm9kZSAqZXhwcik7CkBAIC0yNjMsNiArMjY1LDcgQEAgdHJhbnNmb3JtU3RtdChQYXJz ZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSkKIAkJY2FzZSBUX0luc2VydFN0bXQ6CiAJ CWNhc2UgVF9VcGRhdGVTdG10OgogCQljYXNlIFRfRGVsZXRlU3RtdDoKKwkJY2FzZSBUX0xldFN0 bXQ6CiAJCQkodm9pZCkgdGVzdF9yYXdfZXhwcmVzc2lvbl9jb3ZlcmFnZShwYXJzZVRyZWUsIE5V TEwpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC0zMDAsNiArMzAzLDEwIEBAIHRyYW5zZm9y bVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpCiAJCQl9CiAJCQlicmVh azsKIAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUxldFN0bXQocHN0 YXRlLCAoTGV0U3RtdCAqKSBwYXJzZVRyZWUpOworCQkJYnJlYWs7CisKIAkJCS8qCiAJCQkgKiBT cGVjaWFsIGNhc2VzCiAJCQkgKi8KQEAgLTM1OCw2ICszNjUsNyBAQCBhbmFseXplX3JlcXVpcmVz X3NuYXBzaG90KFJhd1N0bXQgKnBhcnNlVHJlZSkKIAkJY2FzZSBUX0RlbGV0ZVN0bXQ6CiAJCWNh c2UgVF9VcGRhdGVTdG10OgogCQljYXNlIFRfU2VsZWN0U3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6 CiAJCQlyZXN1bHQgPSB0cnVlOwogCQkJYnJlYWs7CiAKQEAgLTE1MzIsNiArMTU0MCwyMDcgQEAg dHJhbnNmb3JtVmFsdWVzQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3Rt dCkKIAlyZXR1cm4gcXJ5OwogfQogCisvKgorICogdHJhbnNmb3JtTGV0U3RtdCAtCisgKgkgIHRy YW5zZm9ybSBhbiBMZXQgU3RhdGVtZW50CisgKi8KK3N0YXRpYyBRdWVyeSAqCit0cmFuc2Zvcm1M ZXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGV0U3RtdCAqc3RtdCkKK3sKKwlRdWVyeQkgICAq cXJ5ID0gbWFrZU5vZGUoUXVlcnkpOworCUxpc3QJICAgKmV4cHJMaXN0ID0gTklMOworCUxpc3QJ ICAgKmV4cHJMaXN0Q29lciA9IE5JTDsKKwlMaXN0CSAgICpzdWJfcnRhYmxlOworCUxpc3QJICAg KnN1Yl9uYW1lc3BhY2U7CisJUmFuZ2VUYmxFbnRyeSAqcnRlOworCVJhbmdlVGJsUmVmICpydHI7 CisJTGlzdENlbGwgICAqbGM7CisJQWNsTW9kZQkJdGFyZ2V0UGVybXM7CisJUGFyc2VTdGF0ZSAq c3ViX3BzdGF0ZTsKKwlRdWVyeQkgICAqc2VsZWN0UXVlcnk7CisJaW50CQkJaSA9IDA7CisKKwlS ZWxhdGlvbglyZDsKKwlPaWQJCQl2YXJ0eXBpZCA9IEludmFsaWRPaWQ7CisKKwkvKiBUaGVyZSBj YW4ndCBiZSBhbnkgb3V0ZXIgV0lUSCB0byB3b3JyeSBhYm91dCAqLworCUFzc2VydChwc3RhdGUt PnBfY3RlbmFtZXNwYWNlID09IE5JTCk7CisKKwlxcnktPmNvbW1hbmRUeXBlID0gQ01EX0xFVDsK Kwlwc3RhdGUtPnBfaXNfbGV0ID0gdHJ1ZTsKKworCS8qCisJICogSWYgYSBub24tbmlsIHJhbmdl dGFibGUvbmFtZXNwYWNlIHdhcyBwYXNzZWQgaW4sIGFuZCB3ZSBhcmUgZG9pbmcKKwkgKiBJTlNF UlQvU0VMRUNULCBhcnJhbmdlIHRvIHBhc3MgdGhlIHJhbmdldGFibGUvbmFtZXNwYWNlIGRvd24g dG8gdGhlCisJICogU0VMRUNULiAgVGhpcyBjYW4gb25seSBoYXBwZW4gaWYgd2UgYXJlIGluc2lk ZSBhIENSRUFURSBSVUxFLCBhbmQgaW4KKwkgKiB0aGF0IGNhc2Ugd2Ugd2FudCB0aGUgcnVsZSdz IE9MRCBhbmQgTkVXIHJ0YWJsZSBlbnRyaWVzIHRvIGFwcGVhciBhcworCSAqIHBhcnQgb2YgdGhl IFNFTEVDVCdzIHJ0YWJsZSwgbm90IGFzIG91dGVyIHJlZmVyZW5jZXMgZm9yIGl0LiAgKEtsdWdl ISkKKwkgKiBUaGUgU0VMRUNUJ3Mgam9pbmxpc3QgaXMgbm90IGFmZmVjdGVkIGhvd2V2ZXIuICBX ZSBtdXN0IGRvIHRoaXMgYmVmb3JlCisJICogYWRkaW5nIHRoZSB0YXJnZXQgdGFibGUgdG8gdGhl IElOU0VSVCdzIHJ0YWJsZS4KKwkgKi8KKwlzdWJfcnRhYmxlID0gcHN0YXRlLT5wX3J0YWJsZTsK Kwlwc3RhdGUtPnBfcnRhYmxlID0gTklMOworCXN1Yl9uYW1lc3BhY2UgPSBwc3RhdGUtPnBfbmFt ZXNwYWNlOworCXBzdGF0ZS0+cF9uYW1lc3BhY2UgPSBOSUw7CisKKwl0YXJnZXRQZXJtcyA9IEFD TF9VUERBVEU7CisJcXJ5LT5yZXN1bHRSZWxhdGlvbiA9IHNldFRhcmdldFRhYmxlKHBzdGF0ZSwg c3RtdC0+dmFyaWFibGUsCisJCQkJCQkJCQkJIGZhbHNlLCBmYWxzZSwgdGFyZ2V0UGVybXMpOwor CisJcmQgPSBwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9uOworCXZhcnR5cGlkID0gcmQtPnJkX3Jl bC0+cmVsb2Z0eXBlOworCisJLyoKKwkgKiBXZSBtYWtlIHRoZSBzdWItcHN0YXRlIGEgY2hpbGQg b2YgdGhlIG91dGVyIHBzdGF0ZSBzbyB0aGF0IGl0IGNhbgorCSAqIHNlZSBhbnkgUGFyYW0gZGVm aW5pdGlvbnMgc3VwcGxpZWQgZnJvbSBhYm92ZS4gIFNpbmNlIHRoZSBvdXRlcgorCSAqIHBzdGF0 ZSdzIHJ0YWJsZSBhbmQgbmFtZXNwYWNlIGFyZSBwcmVzZW50bHkgZW1wdHksIHRoZXJlIGFyZSBu bworCSAqIHNpZGUtZWZmZWN0cyBvZiBleHBvc2luZyBuYW1lcyB0aGUgc3ViLVNFTEVDVCBzaG91 bGRuJ3QgYmUgYWJsZSB0bworCSAqIHNlZS4KKwkgKi8KKwlzdWJfcHN0YXRlID0gbWFrZV9wYXJz ZXN0YXRlKHBzdGF0ZSk7CisKKwkvKgorCSAqIFByb2Nlc3MgdGhlIHNvdXJjZSBTRUxFQ1QuCisJ ICoKKwkgKiBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGlzIGJlIGhhbmRsZWQganVzdCBsaWtlIGEg c3RhbmRhbG9uZSBTRUxFQ1Q7CisJICogb3RoZXJ3aXNlIHRoZSBiZWhhdmlvciBvZiBTRUxFQ1Qg d2l0aGluIElOU0VSVCBtaWdodCBiZSBkaWZmZXJlbnQKKwkgKiBmcm9tIGEgc3RhbmQtYWxvbmUg U0VMRUNULiAoSW5kZWVkLCBQb3N0Z3JlcyB1cCB0aHJvdWdoIDYuNSBoYWQKKwkgKiBidWdzIG9m IGp1c3QgdGhhdCBuYXR1cmUuLi4pCisJICoKKwkgKiBUaGUgc29sZSBleGNlcHRpb24gaXMgdGhh dCB3ZSBwcmV2ZW50IHJlc29sdmluZyB1bmtub3duLXR5cGUKKwkgKiBvdXRwdXRzIGFzIFRFWFQu ICBUaGlzIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIHNpbmNlIGlmIHRoZQorCSAqIGNv bHVtbiB0eXBlIG1hdHRlcnMgc2VtYW50aWNhbGx5LCBpdCB3b3VsZCBoYXZlIGJlZW4gcmVzb2x2 ZWQgdG8KKwkgKiBzb21ldGhpbmcgZWxzZSBhbnl3YXkuICBEb2luZyB0aGlzIGxldHMgdXMgcmVz b2x2ZSBzdWNoIG91dHB1dHMgYXMKKwkgKiB0aGUgdGFyZ2V0IGNvbHVtbidzIHR5cGUsIHdoaWNo IHdlIGhhbmRsZSBiZWxvdy4KKwkgKi8KKwlzdWJfcHN0YXRlLT5wX3J0YWJsZSA9IHN1Yl9ydGFi bGU7CisJc3ViX3BzdGF0ZS0+cF9qb2luZXhwcnMgPSBOSUw7CS8qIHN1Yl9ydGFibGUgaGFzIG5v IGpvaW5zICovCisJc3ViX3BzdGF0ZS0+cF9uYW1lc3BhY2UgPSBzdWJfbmFtZXNwYWNlOworCXN1 Yl9wc3RhdGUtPnBfcmVzb2x2ZV91bmtub3ducyA9IGZhbHNlOworCisJc2VsZWN0UXVlcnkgPSB0 cmFuc2Zvcm1TdG10KHN1Yl9wc3RhdGUsIHN0bXQtPnNlbGVjdFN0bXQpOworCisJZnJlZV9wYXJz ZXN0YXRlKHN1Yl9wc3RhdGUpOworCisJLyogVGhlIGdyYW1tYXIgc2hvdWxkIGhhdmUgcHJvZHVj ZWQgYSBTRUxFQ1QgKi8KKwlpZiAoIUlzQShzZWxlY3RRdWVyeSwgUXVlcnkpIHx8CisJCXNlbGVj dFF1ZXJ5LT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUKQorCQllbG9nKEVSUk9SLCAidW5leHBl Y3RlZCBub24tU0VMRUNUIGNvbW1hbmQgaW4gTEVUIC4uLiBTRUxFQ1QiKTsKKworCS8qCisJICog TWFrZSB0aGUgc291cmNlIGJlIGEgc3VicXVlcnkgaW4gdGhlIExFVCdzIHJhbmdldGFibGUsIGFu ZCBhZGQKKwkgKiBpdCB0byB0aGUgTEVUJ3Mgam9pbmxpc3QuCisJICovCisJcnRlID0gYWRkUmFu Z2VUYWJsZUVudHJ5Rm9yU3VicXVlcnkocHN0YXRlLAorCQkJCQkJCQkJCXNlbGVjdFF1ZXJ5LAor CQkJCQkJCQkJCW1ha2VBbGlhcygiKlNFTEVDVCoiLCBOSUwpLAorCQkJCQkJCQkJCWZhbHNlLAor CQkJCQkJCQkJCWZhbHNlKTsKKwlydHIgPSBtYWtlTm9kZShSYW5nZVRibFJlZik7CisJLyogYXNz dW1lIG5ldyBydGUgaXMgYXQgZW5kICovCisJcnRyLT5ydGluZGV4ID0gbGlzdF9sZW5ndGgocHN0 YXRlLT5wX3J0YWJsZSk7CisJQXNzZXJ0KHJ0ZSA9PSBydF9mZXRjaChydHItPnJ0aW5kZXgsIHBz dGF0ZS0+cF9ydGFibGUpKTsKKwlwc3RhdGUtPnBfam9pbmxpc3QgPSBsYXBwZW5kKHBzdGF0ZS0+ cF9qb2lubGlzdCwgcnRyKTsKKworCS8qLS0tLS0tLS0tLQorCSAqIEdlbmVyYXRlIGFuIGV4cHJl c3Npb24gbGlzdCBmb3IgdGhlIExFVCB0aGF0IHNlbGVjdHMgYWxsIHRoZQorCSAqIG5vbi1yZXNq dW5rIGNvbHVtbnMgZnJvbSB0aGUgc3VicXVlcnkuICAoTEVUJ3MgdGxpc3QgbXVzdCBiZQorCSAq IHNlcGFyYXRlIGZyb20gdGhlIHN1YnF1ZXJ5J3MgdGxpc3QgYmVjYXVzZSB3ZSBtYXkgYWRkIGRh dGF0eXBlCisJICogY29lcmNpb25zLCBldGMuKQorCSAqLS0tLS0tLS0tLQorCSAqLworCWV4cHJM aXN0ID0gTklMOworCWZvcmVhY2gobGMsIHNlbGVjdFF1ZXJ5LT50YXJnZXRMaXN0KQorCXsKKwkJ VGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpOworCQlFeHByCSAg ICpleHByOworCisJCWlmICh0bGUtPnJlc2p1bmspCisJCQljb250aW51ZTsKKwkJaWYgKHRsZS0+ ZXhwciAmJgorCQkJKElzQSh0bGUtPmV4cHIsIENvbnN0KSB8fElzQSh0bGUtPmV4cHIsIFBhcmFt KSkgJiYKKwkJCWV4cHJUeXBlKChOb2RlICopIHRsZS0+ZXhwcikgPT0gVU5LTk9XTk9JRCkKKwkJ CWV4cHIgPSB0bGUtPmV4cHI7CisJCWVsc2UKKwkJeworCQkJVmFyCQkgICAqdmFyID0gbWFrZVZh ckZyb21UYXJnZXRFbnRyeShydHItPnJ0aW5kZXgsIHRsZSk7CisKKwkJCXZhci0+bG9jYXRpb24g PSBleHByTG9jYXRpb24oKE5vZGUgKikgdGxlLT5leHByKTsKKwkJCWV4cHIgPSAoRXhwciAqKSB2 YXI7CisJCX0KKwkJZXhwckxpc3QgPSBsYXBwZW5kKGV4cHJMaXN0LCBleHByKTsKKwl9CisKKwkv KgorCSAqIEJlY2F1c2Ugc3VwcG9ydHMgb25seSBzY2FsYXIgdmFyaWFibGVzLCB3ZSBjYW4gb25s eSBzaW1wbGUKKwkgKiB0cmFuc2Zvcm1hdGlvbnMgYW5kIGNoZWNrcyBoZXJlLgorCSAqLworCWlm IChsaXN0X2xlbmd0aChleHByTGlzdCkgIT0gMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiZXhwcmVzc2lvbiBpcyBu b3Qgc2NhbGFyIHZhbHVlIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCisJCQkJ CQkJCQlleHByTG9jYXRpb24oKE5vZGUgKikgZXhwckxpc3QpKSkpOworCisJZXhwckxpc3RDb2Vy ID0gTklMOworCWZvcmVhY2gobGMsIGV4cHJMaXN0KQorCXsKKwkJTm9kZQkgICAqb3JpZ19leHBy ID0gKE5vZGUqKSBsZmlyc3QobGMpOworCQlPaWQJCQlleHBydHlwaWQgPSBleHByVHlwZSgoTm9k ZSAqKSBvcmlnX2V4cHIpOworCQlFeHByCSAgICpleHByOworCisJCWV4cHIgPSAoRXhwciAqKQor CQkJY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwKKwkJCQkJCQkJICBvcmlnX2V4cHIsIGV4 cHJ0eXBpZCwKKwkJCQkJCQkJICB2YXJ0eXBpZCwgLTEsCisJCQkJCQkJCSAgQ09FUkNJT05fQVNT SUdOTUVOVCwKKwkJCQkJCQkJICBDT0VSQ0VfSU1QTElDSVRfQ0FTVCwKKwkJCQkJCQkJICAtMSk7 CisKKwkJaWYgKGV4cHIgPT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBcIiVz XCIgaXMgb2YgdHlwZSAlcyIKKwkJCQkJCQkgICIgYnV0IGV4cHJlc3Npb24gaXMgb2YgdHlwZSAl cyIsCisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmQpLAorCQkJCQkJCWZvcm1hdF90 eXBlX2JlKHZhcnR5cGlkKSwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZShleHBydHlwaWQpKSwKKwkJ CQkgZXJyaGludCgiWW91IHdpbGwgbmVlZCB0byByZXdyaXRlIG9yIGNhc3QgdGhlIGV4cHJlc3Np b24uIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9k ZSAqKSBvcmlnX2V4cHIpKSkpOworCisJCWV4cHJMaXN0Q29lciA9IGxhcHBlbmQoZXhwckxpc3RD b2VyLCBleHByKTsKKwl9CisKKwkvKgorCSAqIEdlbmVyYXRlIHF1ZXJ5J3MgdGFyZ2V0IGxpc3Qg dXNpbmcgdGhlIGNvbXB1dGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMuCisJICogQWxzbywgbWFyayBh bGwgdGhlIHRhcmdldCBjb2x1bW5zIGFzIG5lZWRpbmcgaW5zZXJ0IHBlcm1pc3Npb25zLgorCSAq LworCXJ0ZSA9IHBzdGF0ZS0+cF90YXJnZXRfcmFuZ2V0YmxlbnRyeTsKKwlxcnktPnRhcmdldExp c3QgPSBOSUw7CisJZm9yZWFjaChsYywgZXhwckxpc3QpCisJeworCQlFeHByCSAgICpleHByID0g KEV4cHIgKikgbGZpcnN0KGxjKTsKKwkJVGFyZ2V0RW50cnkgKnRsZTsKKworCQl0bGUgPSBtYWtl VGFyZ2V0RW50cnkoZXhwciwKKwkJCQkJCQkgIGkgKyAxLAorCQkJCQkJCSAgRmlndXJlQ29sbmFt ZSgoTm9kZSAqKWV4cHIpLAorCQkJCQkJCSAgZmFsc2UpOworCQlxcnktPnRhcmdldExpc3QgPSBs YXBwZW5kKHFyeS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwl9CisKKwkvKiBkb25lIGJ1aWxkaW5nIHRo ZSByYW5nZSB0YWJsZSBhbmQgam9pbnRyZWUgKi8KKwlxcnktPnJ0YWJsZSA9IHBzdGF0ZS0+cF9y dGFibGU7CisJcXJ5LT5qb2ludHJlZSA9IG1ha2VGcm9tRXhwcihwc3RhdGUtPnBfam9pbmxpc3Qs IE5VTEwpOworCisJcXJ5LT5oYXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7 CisJcXJ5LT5oYXNTdWJMaW5rcyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKKworCWFzc2lnbl9x dWVyeV9jb2xsYXRpb25zKHBzdGF0ZSwgcXJ5KTsKKworCXJldHVybiBxcnk7Cit9CisKIC8qCiAg KiB0cmFuc2Zvcm1TZXRPcGVyYXRpb25TdG10IC0KICAqCSAgdHJhbnNmb3JtcyBhIHNldC1vcGVy YXRpb25zIHRyZWUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGQ5OWYyYmUyYzkuLmU3OWUzNDE5NzggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQpAQCAtMjU3LDggKzI1Nyw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmll d1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCUNv bnN0cmFpbnRzU2V0U3RtdCBDb3B5U3RtdCBDcmVhdGVBc1N0bXQgQ3JlYXRlQ2FzdFN0bXQKIAkJ Q3JlYXRlRG9tYWluU3RtdCBDcmVhdGVFeHRlbnNpb25TdG10IENyZWF0ZUdyb3VwU3RtdCBDcmVh dGVPcENsYXNzU3RtdAogCQlDcmVhdGVPcEZhbWlseVN0bXQgQWx0ZXJPcEZhbWlseVN0bXQgQ3Jl YXRlUExhbmdTdG10Ci0JCUNyZWF0ZVNjaGVtYVN0bXQgQ3JlYXRlU2VxU3RtdCBDcmVhdGVTdG10 IENyZWF0ZVN0YXRzU3RtdCBDcmVhdGVUYWJsZVNwYWNlU3RtdAotCQlDcmVhdGVGZHdTdG10IENy ZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IENyZWF0ZUZvcmVpZ25UYWJsZVN0bXQKKwkJQ3JlYXRlU2No ZW1hU3RtdCBDcmVhdGVTY2hlbWFWYXJTdG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVh dGVTdGF0c1N0bXQKKwkJQ3JlYXRlVGFibGVTcGFjZVN0bXQgQ3JlYXRlRmR3U3RtdCBDcmVhdGVG b3JlaWduU2VydmVyU3RtdCBDcmVhdGVGb3JlaWduVGFibGVTdG10CiAJCUNyZWF0ZUFzc2VydFN0 bXQgQ3JlYXRlVHJhbnNmb3JtU3RtdCBDcmVhdGVUcmlnU3RtdCBDcmVhdGVFdmVudFRyaWdTdG10 CiAJCUNyZWF0ZVVzZXJTdG10IENyZWF0ZVVzZXJNYXBwaW5nU3RtdCBDcmVhdGVSb2xlU3RtdCBD cmVhdGVQb2xpY3lTdG10CiAJCUNyZWF0ZWRiU3RtdCBEZWNsYXJlQ3Vyc29yU3RtdCBEZWZpbmVT dG10IERlbGV0ZVN0bXQgRGlzY2FyZFN0bXQgRG9TdG10CkBAIC0yNjgsNyArMjY4LDcgQEAgc3Rh dGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJRHJvcFRyYW5zZm9ybVN0bXQKIAkJRHJvcFVzZXJNYXBw aW5nU3RtdCBFeHBsYWluU3RtdCBGZXRjaFN0bXQKIAkJR3JhbnRTdG10IEdyYW50Um9sZVN0bXQg SW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQgSW5kZXhTdG10IEluc2VydFN0bXQKLQkJTGlzdGVuU3Rt dCBMb2FkU3RtdCBMb2NrU3RtdCBOb3RpZnlTdG10IEV4cGxhaW5hYmxlU3RtdCBQcmVwYXJhYmxl U3RtdAorCQlMZXRTdG10IExpc3RlblN0bXQgTG9hZFN0bXQgTG9ja1N0bXQgTm90aWZ5U3RtdCBF eHBsYWluYWJsZVN0bXQgUHJlcGFyYWJsZVN0bXQKIAkJQ3JlYXRlRnVuY3Rpb25TdG10IEFsdGVy RnVuY3Rpb25TdG10IFJlaW5kZXhTdG10IFJlbW92ZUFnZ3JTdG10CiAJCVJlbW92ZUZ1bmNTdG10 IFJlbW92ZU9wZXJTdG10IFJlbmFtZVN0bXQgUmV2b2tlU3RtdCBSZXZva2VSb2xlU3RtdAogCQlS dWxlQWN0aW9uU3RtdCBSdWxlQWN0aW9uU3RtdE9yRW1wdHkgUnVsZVN0bXQKQEAgLTY0Nyw3ICs2 NDcsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUtFWQogCiAJTEFCRUwgTEFOR1VBR0Ug TEFSR0VfUCBMQVNUX1AgTEFURVJBTF9QCi0JTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVGVCBM RVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCisJTEVBRElORyBMRUFLUFJPT0YgTEVB U1QgTEVGVCBMRVQgTEVWRUwgTElLRSBMSU1JVCBMSVNURU4gTE9BRCBMT0NBTAogCUxPQ0FMVElN RSBMT0NBTFRJTUVTVEFNUCBMT0NBVElPTiBMT0NLX1AgTE9DS0VEIExPR0dFRAogCiAJTUFQUElO RyBNQVRDSCBNQVRFUklBTElaRUQgTUFYVkFMVUUgTUVUSE9EIE1JTlVURV9QIE1JTlZBTFVFIE1P REUgTU9OVEhfUCBNT1ZFCkBAIC02ODUsOCArNjg1LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAlVTkJPVU5ERUQgVU5DT01NSVRURUQgVU5FTkNSWVBURUQgVU5JT04gVU5JUVVFIFVOS05P V04gVU5MSVNURU4gVU5MT0dHRUQKIAlVTlRJTCBVUERBVEUgVVNFUiBVU0lORwogCi0JVkFDVVVN IFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBRElD IFZBUllJTkcKLQlWRVJCT1NFIFZFUlNJT05fUCBWSUVXIFZJRVdTIFZPTEFUSUxFCisJVkFDVVVN IFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBQkxF IFZBUklBQkxFUworCVZBUklBRElDIFZBUllJTkcgVkVSQk9TRSBWRVJTSU9OX1AgVklFVyBWSUVX UyBWT0xBVElMRQogCiAJV0hFTiBXSEVSRSBXSElURVNQQUNFX1AgV0lORE9XIFdJVEggV0lUSElO IFdJVEhPVVQgV09SSyBXUkFQUEVSIFdSSVRFCiAKQEAgLTg3Nyw2ICs4NzcsNyBAQCBzdG10IDoK IAkJCXwgQ3JlYXRlUExhbmdTdG10CiAJCQl8IENyZWF0ZVNjaGVtYVN0bXQKIAkJCXwgQ3JlYXRl U2VxU3RtdAorCQkJfCBDcmVhdGVTY2hlbWFWYXJTdG10CiAJCQl8IENyZWF0ZVN0bXQKIAkJCXwg Q3JlYXRlU3Vic2NyaXB0aW9uU3RtdAogCQkJfCBDcmVhdGVTdGF0c1N0bXQKQEAgLTkxOCw2ICs5 MTksNyBAQCBzdG10IDoKIAkJCXwgTGlzdGVuU3RtdAogCQkJfCBSZWZyZXNoTWF0Vmlld1N0bXQK IAkJCXwgTG9hZFN0bXQKKwkJCXwgTGV0U3RtdAogCQkJfCBMb2NrU3RtdAogCQkJfCBOb3RpZnlT dG10CiAJCQl8IFByZXBhcmVTdG10CkBAIC0xMzc4LDYgKzEzODAsNyBAQCBzY2hlbWFfc3RtdDoK IAkJCUNyZWF0ZVN0bXQKIAkJCXwgSW5kZXhTdG10CiAJCQl8IENyZWF0ZVNlcVN0bXQKKwkJCXwg Q3JlYXRlU2NoZW1hVmFyU3RtdAogCQkJfCBDcmVhdGVUcmlnU3RtdAogCQkJfCBHcmFudFN0bXQK IAkJCXwgVmlld1N0bXQKQEAgLTE4MDYsNyArMTgwOSwxMiBAQCBEaXNjYXJkU3RtdDoKIAkJCQkJ bi0+dGFyZ2V0ID0gRElTQ0FSRF9TRVFVRU5DRVM7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJ CQl9Ci0KKwkJCXwgRElTQ0FSRCBWQVJJQUJMRVMKKwkJCQl7CisJCQkJCURpc2NhcmRTdG10ICpu ID0gbWFrZU5vZGUoRGlzY2FyZFN0bXQpOworCQkJCQluLT50YXJnZXQgPSBESVNDQVJEX1ZBUklB QkxFUzsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJOwogCiAKQEAgLTIwMDIsNiAr MjAxMCwyNCBAQCBBbHRlclRhYmxlU3RtdDoKIAkJCQkJbi0+bm93YWl0ID0gJDE0OwogCQkJCQkk JCA9IChOb2RlICopbjsKIAkJCQl9CisJCXwJQUxURVIgVkFSSUFCTEUgcXVhbGlmaWVkX25hbWUg YWx0ZXJfdGFibGVfY21kcworCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZVN0bXQgKm4gPSBtYWtlTm9k ZShBbHRlclRhYmxlU3RtdCk7CisJCQkJCW4tPnJlbGF0aW9uID0gJDM7CisJCQkJCW4tPmNtZHMg PSAkNDsKKwkJCQkJbi0+cmVsa2luZCA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+bWlzc2lu Z19vayA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCXwJQUxURVIgVkFS SUFCTEUgSUZfUCBFWElTVFMgcXVhbGlmaWVkX25hbWUgYWx0ZXJfdGFibGVfY21kcworCQkJCXsK KwkJCQkJQWx0ZXJUYWJsZVN0bXQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlU3RtdCk7CisJCQkJ CW4tPnJlbGF0aW9uID0gJDU7CisJCQkJCW4tPmNtZHMgPSAkNjsKKwkJCQkJbi0+cmVsa2luZCA9 IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+bWlzc2luZ19vayA9IHRydWU7CisJCQkJCSQkID0g KE5vZGUgKiluOworCQkJCX0KIAkJOwogCiBhbHRlcl90YWJsZV9jbWRzOgpAQCAtNDI3MSw2ICs0 Mjk3LDM0IEBAIE51bWVyaWNPbmx5X2xpc3Q6CU51bWVyaWNPbmx5CQkJCQkJeyAkJCA9IGxpc3Rf bWFrZTEoJDEpOyB9CiAJCQkJfCBOdW1lcmljT25seV9saXN0ICcsJyBOdW1lcmljT25seQl7ICQk ID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgor ICoJCVFVRVJZIDoKKyAqCQkJCUNSRUFURSBWQVJJQUJMRSBzZXFuYW1lIFtBU10gdHlwZQorICoK KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCUNSRUFU RSBPcHRUZW1wIFZBUklBQkxFIHF1YWxpZmllZF9uYW1lIG9wdF9hcyBUeXBlbmFtZQorCQkJCXsK KwkJCQkJQ3JlYXRlU2NoZW1hVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNjaGVtYVZhclN0 bXQpOworCQkJCQkkNC0+cmVscGVyc2lzdGVuY2UgPSAkMjsKKwkJCQkJbi0+dmFyaWFibGUgPSAk NDsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkNjsKKwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IGZhbHNl OworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQl8IENSRUFURSBPcHRUZW1wIFZBUklB QkxFIElGX1AgTk9UIEVYSVNUUyBxdWFsaWZpZWRfbmFtZSBvcHRfYXMgVHlwZW5hbWUKKwkJCQl7 CisJCQkJCUNyZWF0ZVNjaGVtYVZhclN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVTY2hlbWFWYXJT dG10KTsKKwkJCQkJJDctPnJlbHBlcnNpc3RlbmNlID0gJDI7CisJCQkJCW4tPnZhcmlhYmxlID0g JDc7CisJCQkJCW4tPnR5cGVOYW1lID0gJDk7CisJCQkJCW4tPmlmX25vdF9leGlzdHMgPSB0cnVl OworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCTsKKwogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCiAgKgogICoJCVFVRVJJRVMgOgpAQCAtNjMxOSw2ICs2MzczLDcgQEAgZHJvcF90eXBlX2Fu eV9uYW1lOgogCQkJfCBURVhUX1AgU0VBUkNIIERJQ1RJT05BUlkJCQkJeyAkJCA9IE9CSkVDVF9U U0RJQ1RJT05BUlk7IH0KIAkJCXwgVEVYVF9QIFNFQVJDSCBURU1QTEFURQkJCQl7ICQkID0gT0JK RUNUX1RTVEVNUExBVEU7IH0KIAkJCXwgVEVYVF9QIFNFQVJDSCBDT05GSUdVUkFUSU9OCQkJeyAk JCA9IE9CSkVDVF9UU0NPTkZJR1VSQVRJT047IH0KKwkJCXwgVkFSSUFCTEUJCQkJCQkJCXsgJCQg PSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAvKiBvYmplY3QgdHlwZXMgdGFraW5nIG5hbWVf bGlzdCAqLwpAQCAtNjU4OCw2ICs2NjQzLDcgQEAgY29tbWVudF90eXBlX2FueV9uYW1lOgogCQkJ fCBURVhUX1AgU0VBUkNIIERJQ1RJT05BUlkJCQl7ICQkID0gT0JKRUNUX1RTRElDVElPTkFSWTsg fQogCQkJfCBURVhUX1AgU0VBUkNIIFBBUlNFUgkJCQl7ICQkID0gT0JKRUNUX1RTUEFSU0VSOyB9 CiAJCQl8IFRFWFRfUCBTRUFSQ0ggVEVNUExBVEUJCQl7ICQkID0gT0JKRUNUX1RTVEVNUExBVEU7 IH0KKwkJCXwgVkFSSUFCTEUJCQkJCQkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAK IC8qIG9iamVjdCB0eXBlcyB0YWtpbmcgbmFtZSAqLwpAQCAtNjcyNiw2ICs2NzgyLDcgQEAgc2Vj dXJpdHlfbGFiZWxfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEFCTEUJCQkJCQkJCXsgJCQgPSBPQkpF Q1RfVEFCTEU7IH0KIAkJCXwgVklFVwkJCQkJCQkJeyAkJCA9IE9CSkVDVF9WSUVXOyB9CiAJCQl8 IE1BVEVSSUFMSVpFRCBWSUVXCQkJCQl7ICQkID0gT0JKRUNUX01BVFZJRVc7IH0KKwkJCXwgVkFS SUFCTEUJCQkJCQkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAKIC8qIG9iamVjdCB0 eXBlcyB0YWtpbmcgbmFtZSAqLwpAQCAtNzA1MSw2ICs3MTA4LDE0IEBAIHByaXZpbGVnZV90YXJn ZXQ6CiAJCQkJCW4tPm9ianMgPSAkMjsKIAkJCQkJJCQgPSBuOwogCQkJCX0KKwkJCXwgVkFSSUFC TEUgcXVhbGlmaWVkX25hbWVfbGlzdAorCQkJCXsKKwkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2 VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOworCQkJCQluLT50YXJndHlwZSA9 IEFDTF9UQVJHRVRfT0JKRUNUOworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxFOwor CQkJCQluLT5vYmpzID0gJDI7CisJCQkJCSQkID0gbjsKKwkJCQl9CiAJCQl8IEZPUkVJR04gREFU QV9QIFdSQVBQRVIgbmFtZV9saXN0CiAJCQkJewogCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZU YXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CkBAIC03MTYzLDYgKzcyMjgsMTQg QEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQkJbi0+b2JqcyA9ICQ1OwogCQkJCQkkJCA9IG47CiAJ CQkJfQorCQkJfCBBTEwgVkFSSUFCTEVTIElOX1AgU0NIRU1BIG5hbWVfbGlzdAorCQkJCXsKKwkJ CQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdl dCkpOworCQkJCQluLT50YXJndHlwZSA9IEFDTF9UQVJHRVRfQUxMX0lOX1NDSEVNQTsKKwkJCQkJ bi0+b2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqcyA9ICQ1OworCQkJCQkk JCA9IG47CisJCQkJfQogCQkJfCBBTEwgRlVOQ1RJT05TIElOX1AgU0NIRU1BIG5hbWVfbGlzdAog CQkJCXsKIAkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2Yo UHJpdlRhcmdldCkpOwpAQCAtNzM0NSw2ICs3NDE4LDcgQEAgZGVmYWNsX3ByaXZpbGVnZV90YXJn ZXQ6CiAJCQl8IEZVTkNUSU9OUwkJeyAkJCA9IE9CSkVDVF9GVU5DVElPTjsgfQogCQkJfCBST1VU SU5FUwkJeyAkJCA9IE9CSkVDVF9GVU5DVElPTjsgfQogCQkJfCBTRVFVRU5DRVMJCXsgJCQgPSBP QkpFQ1RfU0VRVUVOQ0U7IH0KKwkJCXwgVkFSSUFCTEVTCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxF OyB9CiAJCQl8IFRZUEVTX1AJCXsgJCQgPSBPQkpFQ1RfVFlQRTsgfQogCQkJfCBTQ0hFTUFTCQl7 ICQkID0gT0JKRUNUX1NDSEVNQTsgfQogCQk7CkBAIC04OTMzLDYgKzkwMDcsMjYgQEAgUmVuYW1l U3RtdDogQUxURVIgQUdHUkVHQVRFIGFnZ3JlZ2F0ZV93aXRoX2FyZ3R5cGVzIFJFTkFNRSBUTyBu YW1lCiAJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJ CQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBxdWFsaWZpZWRfbmFtZSBSRU5BTUUgVE8gbmFtZQor CQkJCXsKKwkJCQkJUmVuYW1lU3RtdCAqbiA9IG1ha2VOb2RlKFJlbmFtZVN0bXQpOworCQkJCQlu LT5yZW5hbWVUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5yZWxhdGlvbiA9ICQzOwor CQkJCQluLT5zdWJuYW1lID0gTlVMTDsKKwkJCQkJbi0+bmV3bmFtZSA9ICQ2OworCQkJCQluLT5t aXNzaW5nX29rID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgQUxU RVIgVkFSSUFCTEUgSUZfUCBFWElTVFMgcXVhbGlmaWVkX25hbWUgUkVOQU1FIFRPIG5hbWUKKwkJ CQl7CisJCQkJCVJlbmFtZVN0bXQgKm4gPSBtYWtlTm9kZShSZW5hbWVTdG10KTsKKwkJCQkJbi0+ cmVuYW1lVHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+cmVsYXRpb24gPSAkNTsKKwkJ CQkJbi0+c3VibmFtZSA9IE5VTEw7CisJCQkJCW4tPm5ld25hbWUgPSAkODsKKwkJCQkJbi0+bWlz c2luZ19vayA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KIAkJOwogCiBvcHRf Y29sdW1uOiBDT0xVTU4JCQkJCQkJCQl7ICQkID0gQ09MVU1OOyB9CkBAIC0xMDY0OSw3ICsxMDc0 Myw4IEBAIEV4cGxhaW5hYmxlU3RtdDoKIAkJCXwgQ3JlYXRlQXNTdG10CiAJCQl8IENyZWF0ZU1h dFZpZXdTdG10CiAJCQl8IFJlZnJlc2hNYXRWaWV3U3RtdAotCQkJfCBFeGVjdXRlU3RtdAkJCQkJ LyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8IEV4ZWN1dGVTdG10CisJCQl8IExl dFN0bXQJCQkJCS8qIGJ5IGRlZmF1bHQgYWxsIGFyZSAkJD0kMSAqLwogCQk7CiAKIGV4cGxhaW5f b3B0aW9uX2xpc3Q6CkBAIC0xMDcwNiw3ICsxMDgwMSw4IEBAIFByZXBhcmFibGVTdG10OgogCQkJ U2VsZWN0U3RtdAogCQkJfCBJbnNlcnRTdG10CiAJCQl8IFVwZGF0ZVN0bXQKLQkJCXwgRGVsZXRl U3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8IERlbGV0ZVN0bXQK KwkJCXwgTGV0U3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCiAJCTsKIAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCkBAIC0xMTEwNSw2ICsxMTIwMSwzMCBAQCBvcHRfaG9sZDog LyogRU1QVFkgKi8JCQkJCQl7ICQkID0gMDsgfQogCQkJfCBXSVRIT1VUIEhPTEQJCQkJCXsgJCQg PSAwOyB9CiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZOgorICoJ CQkJTEVUIFNUQVRFTUVOVFMKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitMZXRTdG10OglM RVQgcXVhbGlmaWVkX25hbWUgJz0nIGFfZXhwcgorCQkJCXsKKwkJCQkJTGV0U3RtdCAqbiA9IG1h a2VOb2RlKExldFN0bXQpOworCQkJCQlTZWxlY3RTdG10ICpzZWxlY3QgPSBtYWtlTm9kZShTZWxl Y3RTdG10KTsKKwkJCQkJUmVzVGFyZ2V0CSpyZXMgPSBtYWtlTm9kZShSZXNUYXJnZXQpOworCisJ CQkJCXJlcy0+bmFtZSA9IE5VTEw7CisJCQkJCXJlcy0+aW5kaXJlY3Rpb24gPSBOSUw7CisJCQkJ CXJlcy0+dmFsID0gKE5vZGUgKikgJDQ7CisJCQkJCXJlcy0+bG9jYXRpb24gPSBANDsKKwkJCQkJ c2VsZWN0LT50YXJnZXRMaXN0ID0gbGlzdF9tYWtlMShyZXMpOworCQkJCQluLT52YXJpYWJsZSA9 ICQyOworCQkJCQluLT5zZWxlY3RTdG10ID0gKE5vZGUgKikgc2VsZWN0OworCisJCQkJCSQkID0g KE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICoJ CVFVRVJZOgpAQCAtMTUwNjMsNiArMTUxODMsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8 IExBUkdFX1AKIAkJCXwgTEFTVF9QCiAJCQl8IExFQUtQUk9PRgorCQkJfCBMRVQKIAkJCXwgTEVW RUwKIAkJCXwgTElTVEVOCiAJCQl8IExPQUQKQEAgLTE1MjExLDYgKzE1MzMyLDggQEAgdW5yZXNl cnZlZF9rZXl3b3JkOgogCQkJfCBWQUxJREFURQogCQkJfCBWQUxJREFUT1IKIAkJCXwgVkFMVUVf UAorCQkJfCBWQVJJQUJMRQorCQkJfCBWQVJJQUJMRVMKIAkJCXwgVkFSWUlORwogCQkJfCBWRVJT SU9OX1AKIAkJCXwgVklFVwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggZDQ1OTI2ZjI3Zi4u ZGYwM2M2ZTY4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC01MDksNiArNTA5LDcgQEAg c3RhdGljIE5vZGUgKgogdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29s dW1uUmVmICpjcmVmKQogewogCU5vZGUJICAgKm5vZGUgPSBOVUxMOworCU5vZGUJICAgKnZhcmlh YmxlID0gTlVMTDsKIAljaGFyCSAgICpuc3BuYW1lID0gTlVMTDsKIAljaGFyCSAgICpyZWxuYW1l ID0gTlVMTDsKIAljaGFyCSAgICpjb2xuYW1lID0gTlVMTDsKQEAgLTc0OSw2ICs3NTAsNzAgQEAg dHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQog CQkJYnJlYWs7CiAJfQogCisJLyoKKwkgKiBUcnkgdG8gaWRlbnRpZnkgY29sdW1uIHJlZiBhcyB2 YXJpYWJsZS4gUG9zc2libGUgdmFyaWFudHMgYXJlCisJICoKKwkgKiBBIC4uIHZhcmlhYmxlIG5h bWUKKwkgKiBBLkIgLi4gcXVhbGlmaWVkIHZhcmlhYmxlIG5hbWUKKwkgKi8KKwlzd2l0Y2ggKGxp c3RfbGVuZ3RoKGNyZWYtPmZpZWxkcykpCisJeworCQljYXNlIDE6CisJCQl7CisJCQkJTm9kZQkg ICAqZmllbGQxID0gKE5vZGUgKikgbGluaXRpYWwoY3JlZi0+ZmllbGRzKTsKKworCQkJCWlmIChJ c0EoZmllbGQxLCBTdHJpbmcpKQorCQkJCXsKKwkJCQkJY2hhciAqdmFybmFtZSAgPSBzdHJWYWwo ZmllbGQxKTsKKworCQkJCQkvKiBUcnkgdG8gaWRlbnRpZnkgYXMgYW4gdW5xdWFsaWZpZWQgY29s dW1uICovCisJCQkJCXZhcmlhYmxlID0gdG9TY2hlbWFWYXJpYWJsZShwc3RhdGUsCisJCQkJCQkJ CQkJCQkJTlVMTCwgdmFybmFtZSwKKwkJCQkJCQkJCQkJCQljcmVmLT5sb2NhdGlvbik7CisJCQkJ fQorCQkJCWJyZWFrOworCQkJfQorCQljYXNlIDI6CisJCQl7CisJCQkJTm9kZQkgICAqZmllbGQx ID0gKE5vZGUgKikgbGluaXRpYWwoY3JlZi0+ZmllbGRzKTsKKwkJCQlOb2RlCSAgICpmaWVsZDIg PSAoTm9kZSAqKSBsc2Vjb25kKGNyZWYtPmZpZWxkcyk7CisKKwkJCQlpZiAoSXNBKGZpZWxkMSwg U3RyaW5nKSAmJiBJc0EoZmllbGQyLCBTdHJpbmcpKQorCQkJCXsKKwkJCQkJY2hhciAqbnNwbmFt ZSA9IHN0clZhbChmaWVsZDEpOworCQkJCQljaGFyICp2YXJuYW1lID0gc3RyVmFsKGZpZWxkMik7 CisKKwkJCQkJLyogVHJ5IHRvIGlkZW50aWZ5IGFzIGFuIHVucXVhbGlmaWVkIGNvbHVtbiAqLwor CQkJCQl2YXJpYWJsZSA9IHRvU2NoZW1hVmFyaWFibGUocHN0YXRlLAorCQkJCQkJCQkJCQkJCW5z cG5hbWUsIHZhcm5hbWUsCisJCQkJCQkJCQkJCQkJY3JlZi0+bG9jYXRpb24pOworCQkJCX0KKwkJ CQlicmVhazsKKwkJCX0KKwkJZGVmYXVsdDoKKworCQkJLyoKKwkJCSAqIFRoZXJlIGNhbiBiZSBh bm90aGVyIHZhcmlhbnRzLCBtb3JlIHdoZW4gY29tcG9zaXRlIHZhcmlhYmxlcworCQkJICogd2ls bCBiZSBzdXBwb3J0ZWQuIEN1cnJlbnRseSBvbmx5IHNjYWxhcnMgYXJlIHN1cHBvcnRlZCwgc28K KwkJCSAqIHRoZXJlIGFyZSBub3QgbmVjZXNzYXJ5IHRvIHNvbHZlIG90aGVyIHF1ZXN0aW9ucy4K KwkJCSAqCisJCQkgKiBkbyBub3RoaW5nCisJCQkgKi8KKwkJCWJyZWFrOworCX0KKworCWlmICh2 YXJpYWJsZSAhPSBOVUxMKQorCXsKKwkJaWYgKG5vZGUgIT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VTX0NPTFVNTiksCisJCQkJCSBlcnJt c2coImNvbHVtbiByZWZlcmVuY2UgXCIlc1wiIGlzIGFtYmlndW91cyIsCisJCQkJCQkJTmFtZUxp c3RUb1N0cmluZyhjcmVmLT5maWVsZHMpKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGNyZWYtPmxvY2F0aW9uKSkpOworCisJCW5vZGUgPSB2YXJpYWJsZTsKKwl9CisKIAkvKgog CSAqIE5vdyBnaXZlIHRoZSBQb3N0UGFyc2VDb2x1bW5SZWZIb29rLCBpZiBhbnksIGEgY2hhbmNl LiAgV2UgcGFzcyB0aGUKIAkgKiB0cmFuc2xhdGlvbi1zby1mYXIgc28gdGhhdCBpdCBjYW4gdGhy b3cgYW4gZXJyb3IgaWYgaXQgd2lzaGVzIGluIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRp b24uYwppbmRleCAyNjI1ZGE1MzI3Li5mN2Q5YTBjOTM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf cmVsYXRpb24uYwpAQCAtMTE1MCw2ICsxMTUwLDcgQEAgcGFyc2VyT3BlblRhYmxlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBpbnQgbG9ja21vZGUpCiAKIAlz ZXR1cF9wYXJzZXJfZXJycG9zaXRpb25fY2FsbGJhY2soJnBjYnN0YXRlLCBwc3RhdGUsIHJlbGF0 aW9uLT5sb2NhdGlvbik7CiAJcmVsID0gaGVhcF9vcGVucnZfZXh0ZW5kZWQocmVsYXRpb24sIGxv Y2ttb2RlLCB0cnVlKTsKKwogCWlmIChyZWwgPT0gTlVMTCkKIAl7CiAJCWlmIChyZWxhdGlvbi0+ c2NoZW1hbmFtZSkKQEAgLTExODAsNiArMTE4MSwyNCBAQCBwYXJzZXJPcGVuVGFibGUoUGFyc2VT dGF0ZSAqcHN0YXRlLCBjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sIGludCBsb2NrbW9kZSkKIAkJ CQkJCQkJcmVsYXRpb24tPnJlbG5hbWUpKSk7CiAJCX0KIAl9CisKKwkvKgorCSAqIFJFTEtJTkRf VkFSSUFCTEUgY2FuIGJlIHVzZWQgb25seSBpbiBMRVQgY29tbWFuZC4KKwkgKiBQcm9iYWJseSB0 aGlzIGNoZWNrIGNhbiBiZSBkb25lIGVsc2V3aGVyZSwgYnV0IGhlcmUgSQorCSAqIGhhdmUgYSB1 c2VkIHJlbGF0aW9uIGFuZCBwYXJzZSBzdGF0ZSB0b2dldGhlciBmaXJzdCB0aW1lLgorCSAqLwor CWlmIChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFICYmICFwc3RhdGUt PnBfaXNfbGV0KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdf T0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBhbiBzY2hlbWEgdmFyaWFibGUi LAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKworCWlmIChwc3RhdGUt PnBfaXNfbGV0ICYmIHJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfVkFSSUFCTEUpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSks CisJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhbiBzY2hlbWEgdmFyaWFibGUiLAorCQkJCQkJ UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwogCWNhbmNlbF9wYXJzZXJfZXJycG9z aXRpb25fY2FsbGJhY2soJnBjYnN0YXRlKTsKIAlyZXR1cm4gcmVsOwogfQpAQCAtMzM2MCwzICsz Mzc5LDQyIEBAIGlzUXVlcnlVc2luZ1RlbXBSZWxhdGlvbl93YWxrZXIoTm9kZSAqbm9kZSwgdm9p ZCAqY29udGV4dCkKIAkJCQkJCQkJICBpc1F1ZXJ5VXNpbmdUZW1wUmVsYXRpb25fd2Fsa2VyLAog CQkJCQkJCQkgIGNvbnRleHQpOwogfQorCisvKgorICogVHJ5IHRvIHJlcGxhY2UgQ29sdW1uUmVm IGJ5IFBhcmFtIHJlbGF0ZWQgdG8gdmFyaWFibGUKKyAqLworTm9kZSAqCit0b1NjaGVtYVZhcmlh YmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY2hhciAqbnNwbmFtZSwgY2hhciAqdmFybmFtZSwgaW50 IGxvY2F0aW9uKQoreworCU9pZAkJCXZhcmlkOworCVBhcmFtCSAgICpwYXJhbSA9IE5VTEw7CisK Kwl2YXJpZCA9IFJhbmdlVmFyR2V0UmVsaWQobWFrZVJhbmdlVmFyKG5zcG5hbWUsIHZhcm5hbWUs IC0xKSwgTm9Mb2NrLCB0cnVlKTsKKwlpZiAoT2lkSXNWYWxpZCh2YXJpZCkpCisJeworCQlIZWFw VHVwbGUJdHA7CisJCUZvcm1fcGdfY2xhc3MJdmFydHVwOworCisJCQkvKiBub3csIHR5cGUgaW5m byBmb3Igc2NoZW1hIHZhcmlhYmxlIGlzIGNvbGxlY3RlZCAqLworCQl0cCA9IFNlYXJjaFN5c0Nh Y2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKwkJaWYgKEhlYXBUdXBsZUlz VmFsaWQodHApKQorCQl7CisJCQl2YXJ0dXAgPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHRw KTsKKworCQkJaWYgKHZhcnR1cC0+cmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKQorCQkJewor CQkJCXBhcmFtID0gbWFrZU5vZGUoUGFyYW0pOworCQkJCXBhcmFtLT5wYXJhbWtpbmQgPSBQQVJB TV9TQ0hFTUFfVkFSSUFCTEU7CisJCQkJcGFyYW0tPnBhcmFtaWQgPSB2YXJpZDsKKwkJCQlwYXJh bS0+cGFyYW10eXBlID0gdmFydHVwLT5yZWxvZnR5cGU7CisJCQkJcGFyYW0tPnBhcmFtdHlwbW9k ID0gLTE7CisJCQkJcGFyYW0tPnBhcmFtY29sbGlkID0gZ2V0X3R5cGNvbGxhdGlvbihwYXJhbS0+ cGFyYW10eXBlKTsKKwkJCQlwYXJhbS0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKwkJCX0KKworCQkJ UmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJfQorCX0KKworCXJldHVybiAoTm9kZSAqKSBwYXJhbTsK K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IGQ0MTVkNzE4MGYuLjhjMzUyZjky OTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMTA2LDYgKzEwNiw3IEBAIHR5 cGVkZWYgc3RydWN0CiAJTGlzdAkgICAqdmlld3M7CQkJLyogQ1JFQVRFIFZJRVcgaXRlbXMgKi8K IAlMaXN0CSAgICppbmRleGVzOwkJLyogQ1JFQVRFIElOREVYIGl0ZW1zICovCiAJTGlzdAkgICAq dHJpZ2dlcnM7CQkvKiBDUkVBVEUgVFJJR0dFUiBpdGVtcyAqLworCUxpc3QJICAgKnZhcmlhYmxl czsJCS8qIENSRUFURSBWQVJJQUJMRSBpdGVtcyAqLwogCUxpc3QJICAgKmdyYW50czsJCQkvKiBH UkFOVCBpdGVtcyAqLwogfSBDcmVhdGVTY2hlbWFTdG10Q29udGV4dDsKIApAQCAtMzE4Niw2ICsz MTg3LDcgQEAgdHJhbnNmb3JtQ3JlYXRlU2NoZW1hU3RtdChDcmVhdGVTY2hlbWFTdG10ICpzdG10 KQogCWN4dC52aWV3cyA9IE5JTDsKIAljeHQuaW5kZXhlcyA9IE5JTDsKIAljeHQudHJpZ2dlcnMg PSBOSUw7CisJY3h0LnZhcmlhYmxlcyA9IE5JTDsKIAljeHQuZ3JhbnRzID0gTklMOwogCiAJLyoK QEAgLTMyNTEsNiArMzI1MywxNCBAQCB0cmFuc2Zvcm1DcmVhdGVTY2hlbWFTdG10KENyZWF0ZVNj aGVtYVN0bXQgKnN0bXQpCiAJCQkJfQogCQkJCWJyZWFrOwogCisJCQljYXNlIFRfQ3JlYXRlU2No ZW1hVmFyU3RtdDoKKwkJCQl7CisJCQkJCUNyZWF0ZVNjaGVtYVZhclN0bXQgKmVscCA9IChDcmVh dGVTY2hlbWFWYXJTdG10ICopIGVsZW1lbnQ7CisKKwkJCQkJc2V0U2NoZW1hTmFtZShjeHQuc2No ZW1hbmFtZSwgJmVscC0+dmFyaWFibGUtPnNjaGVtYW5hbWUpOworCQkJCQljeHQudmFyaWFibGVz ID0gbGFwcGVuZChjeHQudmFyaWFibGVzLCBlbGVtZW50KTsKKwkJCQl9CisKIAkJCWNhc2UgVF9H cmFudFN0bXQ6CiAJCQkJY3h0LmdyYW50cyA9IGxhcHBlbmQoY3h0LmdyYW50cywgZWxlbWVudCk7 CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5k bGVyLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggNjYyNTNm YzNkMy4uNDdhOWIyMTFkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRl SGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAt MzMzNyw3ICszMzM3LDcgQEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRyZWUsIExpc3QgKnJl d3JpdGVfZXZlbnRzKQogCQkJCQkJCQkJcnRfZW50cnlfcmVsYXRpb24sCiAJCQkJCQkJCQlwYXJz ZXRyZWUtPnJlc3VsdFJlbGF0aW9uLCBOVUxMKTsKIAkJfQotCQllbHNlIGlmIChldmVudCA9PSBD TURfREVMRVRFKQorCQllbHNlIGlmIChldmVudCA9PSBDTURfREVMRVRFIHx8IGV2ZW50ID09IENN RF9MRVQpCiAJCXsKIAkJCS8qIE5vdGhpbmcgdG8gZG8gaGVyZSAqLwogCQl9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpp bmRleCA2NmNjNWMzNWM2Li4zNGRkYjc5YTNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTE5Myw2ICsxOTMs MTAgQEAgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAogCQkJCQkJICJERUxFVEUgIiBV SU5UNjRfRk9STUFULAogCQkJCQkJIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwog CQkJCWJyZWFrOworCQkJY2FzZSBDTURfTEVUOgorCQkJCXNucHJpbnRmKGNvbXBsZXRpb25UYWcs IENPTVBMRVRJT05fVEFHX0JVRlNJWkUsCisJCQkJCQkgIkxFVCAiKTsKKwkJCQlicmVhazsKIAkJ CWRlZmF1bHQ6CiAJCQkJc3RyY3B5KGNvbXBsZXRpb25UYWcsICI/Pz8iKTsKIAkJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNv cC91dGlsaXR5LmMKaW5kZXggM2FiZTdkNjE1NS4uNzJmMGRiNTAxNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMK QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9wcm9jbGFuZy5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVt YWNtZHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXIuaCIKICNpbmNsdWRlICJjb21t YW5kcy9zZWNsYWJlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIgpAQCAtMTEyLDYgKzExMyw3IEBAIENvbW1h bmRJc1JlYWRPbmx5KFBsYW5uZWRTdG10ICpwc3RtdCkKIAkJY2FzZSBDTURfREVMRVRFOgogCQkJ cmV0dXJuIGZhbHNlOwogCQljYXNlIENNRF9VVElMSVRZOgorCQljYXNlIENNRF9MRVQ6CiAJCQkv KiBGb3Igbm93LCB0cmVhdCBhbGwgdXRpbGl0eSBjb21tYW5kcyBhcyByZWFkL3dyaXRlICovCiAJ CQlyZXR1cm4gZmFsc2U7CiAJCWRlZmF1bHQ6CkBAIC0xNzcsNiArMTc5LDcgQEAgY2hlY2tfeGFj dF9yZWFkb25seShOb2RlICpwYXJzZXRyZWUpCiAJCWNhc2UgVF9DcmVhdGVTY2hlbWFTdG10Ogog CQljYXNlIFRfQ3JlYXRlU2VxU3RtdDoKIAkJY2FzZSBUX0NyZWF0ZVN0bXQ6CisJCWNhc2UgVF9D cmVhdGVTY2hlbWFWYXJTdG10OgogCQljYXNlIFRfQ3JlYXRlVGFibGVBc1N0bXQ6CiAJCWNhc2Ug VF9SZWZyZXNoTWF0Vmlld1N0bXQ6CiAJCWNhc2UgVF9DcmVhdGVUYWJsZVNwYWNlU3RtdDoKQEAg LTE0NzQsNiArMTQ3NywxMCBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRl LAogCQkJCWFkZHJlc3MgPSBBbHRlclNlcXVlbmNlKHBzdGF0ZSwgKEFsdGVyU2VxU3RtdCAqKSBw YXJzZXRyZWUpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIFRfQ3JlYXRlU2NoZW1hVmFyU3RtdDoK KwkJCQlhZGRyZXNzID0gRGVmaW5lU2NoZW1hVmFyaWFibGUocHN0YXRlLCAoQ3JlYXRlU2NoZW1h VmFyU3RtdCAqKSBwYXJzZXRyZWUpOworCQkJCWJyZWFrOworCiAJCQljYXNlIFRfQ3JlYXRlVGFi bGVBc1N0bXQ6CiAJCQkJYWRkcmVzcyA9IEV4ZWNDcmVhdGVUYWJsZUFzKChDcmVhdGVUYWJsZUFz U3RtdCAqKSBwYXJzZXRyZWUsCiAJCQkJCQkJCQkJCXF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5 RW52LApAQCAtMjA0Niw2ICsyMDUzLDkgQEAgQWx0ZXJPYmplY3RUeXBlQ29tbWFuZFRhZyhPYmpl Y3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX1NUQVRJU1RJQ19FWFQ6CiAJCQl0YWcgPSAi QUxURVIgU1RBVElTVElDUyI7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJ CQl0YWcgPSAiQUxURVIgVkFSSUFCTEUiOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQl0YWcg PSAiPz8/IjsKIAkJCWJyZWFrOwpAQCAtMjA5NSw2ICsyMTA1LDEwIEBAIENyZWF0ZUNvbW1hbmRU YWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJdGFnID0gIlNFTEVDVCI7CiAJCQlicmVhazsKIAorCQlj YXNlIFRfTGV0U3RtdDoKKwkJCXRhZyA9ICJMRVQiOworCQkJYnJlYWs7CisKIAkJCS8qIHV0aWxp dHkgc3RhdGVtZW50cyAtLS0gc2FtZSB3aGV0aGVyIHJhdyBvciBjb29rZWQgKi8KIAkJY2FzZSBU X1RyYW5zYWN0aW9uU3RtdDoKIAkJCXsKQEAgLTIyNTksNiArMjI3Myw5IEBAIENyZWF0ZUNvbW1h bmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWNhc2UgT0JKRUNUX0lOREVYOgogCQkJCQl0YWcg PSAiRFJPUCBJTkRFWCI7CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgor CQkJCQl0YWcgPSAiRFJPUCBWQVJJQUJMRSI7CisJCQkJCWJyZWFrOwogCQkJCWNhc2UgT0JKRUNU X1RZUEU6CiAJCQkJCXRhZyA9ICJEUk9QIFRZUEUiOwogCQkJCQlicmVhazsKQEAgLTI1MTMsNiAr MjUzMCwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCXRhZyA9ICJB TFRFUiBTRVFVRU5DRSI7CiAJCQlicmVhazsKIAorCQljYXNlIFRfQ3JlYXRlU2NoZW1hVmFyU3Rt dDoKKwkJCXRhZyA9ICJDUkVBVEUgVkFSSUFCTEUiOworCQkJYnJlYWs7CisKIAkJY2FzZSBUX0Rv U3RtdDoKIAkJCXRhZyA9ICJETyI7CiAJCQlicmVhazsKQEAgLTI2MzAsNiArMjY1MSw5IEBAIENy ZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWNhc2UgRElTQ0FSRF9TRVFVRU5D RVM6CiAJCQkJCXRhZyA9ICJESVNDQVJEIFNFUVVFTkNFUyI7CiAJCQkJCWJyZWFrOworCQkJCWNh c2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQkJCXRhZyA9ICJESVNDQVJEIFZBUklBQkxFUyI7CisJ CQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6CiAJCQkJCXRhZyA9ICI/Pz8iOwogCQkJfQpAQCAtMjgz NCw2ICsyODU4LDkgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJCWNh c2UgQ01EX0RFTEVURToKIAkJCQkJCXRhZyA9ICJERUxFVEUiOwogCQkJCQkJYnJlYWs7CisJCQkJ CWNhc2UgQ01EX0xFVDoKKwkJCQkJCXRhZyA9ICJMRVQiOworCQkJCQkJYnJlYWs7CiAJCQkJCWNh c2UgQ01EX1VUSUxJVFk6CiAJCQkJCQl0YWcgPSBDcmVhdGVDb21tYW5kVGFnKHN0bXQtPnV0aWxp dHlTdG10KTsKIAkJCQkJCWJyZWFrOwpAQCAtMjk1Miw2ICsyOTc5LDEwIEBAIEdldENvbW1hbmRM b2dMZXZlbChOb2RlICpwYXJzZXRyZWUpCiAJCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVh azsKIAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCWxldiA9IExPR1NUTVRfQUxMOworCQkJYnJlYWs7 CisKIAkJCS8qIHV0aWxpdHkgc3RhdGVtZW50cyAtLS0gc2FtZSB3aGV0aGVyIHJhdyBvciBjb29r ZWQgKi8KIAkJY2FzZSBUX1RyYW5zYWN0aW9uU3RtdDoKIAkJCWxldiA9IExPR1NUTVRfQUxMOwpA QCAtMzQwNSw2ICszNDM2LDcgQEAgR2V0Q29tbWFuZExvZ0xldmVsKE5vZGUgKnBhcnNldHJlZSkK IAkJCQlzd2l0Y2ggKHN0bXQtPmNvbW1hbmRUeXBlKQogCQkJCXsKIAkJCQkJY2FzZSBDTURfU0VM RUNUOgorCQkJCQljYXNlIENNRF9MRVQ6CiAJCQkJCQlsZXYgPSBMT0dTVE1UX0FMTDsKIAkJCQkJ CWJyZWFrOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvYWNsLmMKaW5kZXggMGNmYzI5N2I2NS4uZmNkNjk1ODM2YSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9hY2wuYwpAQCAtODA4LDYgKzgwOCwxMCBAQCBhY2xkZWZhdWx0KE9iamVjdFR5cGUg b2JqdHlwZSwgT2lkIG93bmVySWQpCiAJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX1VTQUdFOwogCQkJ b3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1RZUEU7CiAJCQlicmVhazsKKwkJY2FzZSBP QkpFQ1RfVkFSSUFCTEU6CisJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX05PX1JJR0hUUzsKKwkJCW93 bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWJyZWFrOwogCQlkZWZh dWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvYmp0eXBlOiAlZCIsIChpbnQpIG9i anR5cGUpOwogCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9OT19SSUdIVFM7CS8qIGtlZXAgY29tcGls ZXIgcXVpZXQgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCAyODc2N2ExMjlhLi5m YzY0OThjNTBkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC00MSw2ICs0MSw3IEBA CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVt LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRz L3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImNvbW1vbi9rZXl3b3Jkcy5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL3NwaS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTM3OSw2ICszODAsNyBAQCBz dGF0aWMgdm9pZCBnZXRfdXBkYXRlX3F1ZXJ5X3RhcmdldGxpc3RfZGVmKFF1ZXJ5ICpxdWVyeSwg TGlzdCAqdGFyZ2V0TGlzdCwKIAkJCQkJCQkJZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJ CQkJCQlSYW5nZVRibEVudHJ5ICpydGUpOwogc3RhdGljIHZvaWQgZ2V0X2RlbGV0ZV9xdWVyeV9k ZWYoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQg Z2V0X2xldF9xdWVyeV9kZWYoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQp Owogc3RhdGljIHZvaWQgZ2V0X3V0aWxpdHlfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJz ZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGdldF9iYXNpY19zZWxlY3RfcXVlcnko UXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCSAgIFR1cGxlRGVz YyByZXN1bHREZXNjKTsKQEAgLTQ5MjYsNiArNDkyOCwxMCBAQCBnZXRfcXVlcnlfZGVmKFF1ZXJ5 ICpxdWVyeSwgU3RyaW5nSW5mbyBidWYsIExpc3QgKnBhcmVudG5hbWVzcGFjZSwKIAkJCWdldF9k ZWxldGVfcXVlcnlfZGVmKHF1ZXJ5LCAmY29udGV4dCk7CiAJCQlicmVhazsKIAorCQljYXNlIENN RF9MRVQ6CisJCQlnZXRfbGV0X3F1ZXJ5X2RlZihxdWVyeSwgJmNvbnRleHQpOworCQkJYnJlYWs7 CisKIAkJY2FzZSBDTURfTk9USElORzoKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAi Tk9USElORyIpOwogCQkJYnJlYWs7CkBAIC02MTQyLDYgKzYxNDgsNTggQEAgZ2V0X2luc2VydF9x dWVyeV9kZWYoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJfQogfQog CisvKiAtLS0tLS0tLS0tCisgKiBnZXRfbGV0X3F1ZXJ5X2RlZgkJCS0gUGFyc2UgYmFjayBhbiBM RVQgcGFyc2V0cmVlCisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfbGV0X3F1 ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKK3sKKwlTdHJp bmdJbmZvCWJ1ZiA9IGNvbnRleHQtPmJ1ZjsKKwlSYW5nZVRibEVudHJ5ICpzZWxlY3RfcnRlID0g TlVMTDsKKwlSYW5nZVRibEVudHJ5ICpydGU7CisJTGlzdENlbGwgICAqbDsKKworCS8qCisJICog SWYgaXQncyBhbiBJTlNFUlQgLi4uIFNFTEVDVCBvciBtdWx0aS1yb3cgVkFMVUVTLCB0aGVyZSB3 aWxsIGJlIGEKKwkgKiBzaW5nbGUgUlRFIGZvciB0aGUgU0VMRUNUIG9yIFZBTFVFUy4gIFBsYWlu IFZBTFVFUyBoYXMgbmVpdGhlci4KKwkgKi8KKwlmb3JlYWNoKGwsIHF1ZXJ5LT5ydGFibGUpCisJ eworCQlydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobCk7CisKKwkJaWYgKHJ0ZS0+cnRl a2luZCA9PSBSVEVfU1VCUVVFUlkpCisJCXsKKwkJCWlmIChzZWxlY3RfcnRlKQorCQkJCWVsb2co RVJST1IsICJ0b28gbWFueSBzdWJxdWVyeSBSVEVzIGluIElOU0VSVCIpOworCQkJc2VsZWN0X3J0 ZSA9IHJ0ZTsKKwkJfQorCX0KKworCS8qCisJICogU3RhcnQgdGhlIHF1ZXJ5IHdpdGggSU5TRVJU IElOVE8gcmVsbmFtZQorCSAqLworCXJ0ZSA9IHJ0X2ZldGNoKHF1ZXJ5LT5yZXN1bHRSZWxhdGlv biwgcXVlcnktPnJ0YWJsZSk7CisJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04p OworCisJaWYgKFBSRVRUWV9JTkRFTlQoY29udGV4dCkpCisJeworCQljb250ZXh0LT5pbmRlbnRM ZXZlbCArPSBQUkVUVFlJTkRFTlRfU1REOworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcg Jyk7CisJfQorCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiTEVUICVzICIsCisJCQkJCSBnZW5lcmF0 ZV9yZWxhdGlvbl9uYW1lKHJ0ZS0+cmVsaWQsIE5JTCkpOworCisJYXBwZW5kU3RyaW5nSW5mbyhi dWYsICIgPSAiKTsKKworCWlmIChzZWxlY3RfcnRlKQorCXsKKwkJLyogQWRkIHRoZSBTRUxFQ1Qg Ki8KKwkJZ2V0X3F1ZXJ5X2RlZihzZWxlY3RfcnRlLT5zdWJxdWVyeSwgYnVmLCBOSUwsIE5VTEws CisJCQkJCSAgY29udGV4dC0+cHJldHR5RmxhZ3MsIGNvbnRleHQtPndyYXBDb2x1bW4sCisJCQkJ CSAgY29udGV4dC0+aW5kZW50TGV2ZWwpOworCX0KK30KIAogLyogLS0tLS0tLS0tLQogICogZ2V0 X3VwZGF0ZV9xdWVyeV9kZWYJCQktIFBhcnNlIGJhY2sgYW4gVVBEQVRFIHBhcnNldHJlZQpAQCAt NzIxNiw2ICs3Mjc0LDEzIEBAIGdldF9wYXJhbWV0ZXIoUGFyYW0gKnBhcmFtLCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQpCiAJZGVwYXJzZV9uYW1lc3BhY2UgKmRwbnM7CiAJTGlzdENlbGwgICAq YW5jZXN0b3JfY2VsbDsKIAorCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX1NDSEVNQV9W QVJJQUJMRSkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAiJXMiLCBnZXRf c2NoZW1hdmFyX25hbWUocGFyYW0tPnBhcmFtaWQpKTsKKworCQlyZXR1cm47CisJfQorCiAJLyoK IAkgKiBJZiBpdCdzIGEgUEFSQU1fRVhFQyBwYXJhbWV0ZXIsIHRyeSB0byBsb2NhdGUgdGhlIGV4 cHJlc3Npb24gZnJvbSB3aGljaAogCSAqIHRoZSBwYXJhbWV0ZXIgd2FzIGNvbXB1dGVkLiAgTm90 ZSB0aGF0IGZhaWxpbmcgdG8gZmluZCBhIHJlZmVyZW50IGlzbid0CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvY29tbW9uLmMgYi9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKaW5kZXggMmVj MzYyN2E2OC4uYjdkN2I2MzJiNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5j CisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwpAQCAtMzI2LDcgKzMyNiw4IEBAIGZsYWdJ bmhUYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVz LAogCQkvKiBTb21lIGtpbmRzIG5ldmVyIGhhdmUgcGFyZW50cyAqLwogCQlpZiAodGJsaW5mb1tp XS5yZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgfHwKIAkJCXRibGluZm9baV0ucmVsa2luZCA9 PSBSRUxLSU5EX1ZJRVcgfHwKLQkJCXRibGluZm9baV0ucmVsa2luZCA9PSBSRUxLSU5EX01BVFZJ RVcpCisJCQl0YmxpbmZvW2ldLnJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXIHx8CisJCQl0Ymxp bmZvW2ldLnJlbGtpbmQgPT0gUkVMS0lORF9WQVJJQUJMRSkKIAkJCWNvbnRpbnVlOwogCiAJCS8q CkBAIC00NzUsNyArNDc2LDggQEAgZmxhZ0luaEF0dHJzKER1bXBPcHRpb25zICpkb3B0LCBUYWJs ZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCS8qIFNvbWUga2luZHMgbmV2ZXIgaGF2 ZSBwYXJlbnRzICovCiAJCWlmICh0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSB8 fAogCQkJdGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfVklFVyB8fAotCQkJdGJpbmZvLT5yZWxr aW5kID09IFJFTEtJTkRfTUFUVklFVykKKwkJCXRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX01B VFZJRVcgfHwKKwkJCXRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKQogCQkJY29u dGludWU7CiAKIAkJLyogRG9uJ3QgYm90aGVyIGNvbXB1dGluZyBhbnl0aGluZyBmb3Igbm9uLXRh cmdldCB0YWJsZXMsIGVpdGhlciAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2Jh Y2t1cF9hcmNoaXZlci5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCmlu ZGV4IDdjNWU4YzAxOGIuLmU5Yjg2MzljY2YgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9w Z19iYWNrdXBfYXJjaGl2ZXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hp dmVyLmMKQEAgLTM0NTAsNyArMzQ1MCw4IEBAIF9nZXRPYmplY3REZXNjcmlwdGlvbihQUUV4cEJ1 ZmZlciBidWYsIFRvY0VudHJ5ICp0ZSwgQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCXN0cmNtcCh0eXBl LCAiU0VSVkVSIikgPT0gMCB8fAogCQlzdHJjbXAodHlwZSwgIlBVQkxJQ0FUSU9OIikgPT0gMCB8 fAogCQlzdHJjbXAodHlwZSwgIlNVQlNDUklQVElPTiIpID09IDAgfHwKLQkJc3RyY21wKHR5cGUs ICJVU0VSIE1BUFBJTkciKSA9PSAwKQorCQlzdHJjbXAodHlwZSwgIlVTRVIgTUFQUElORyIpID09 IDAgfHwKKwkJc3RyY21wKHR5cGUsICJWQVJJQUJMRSIpID09IDApCiAJewogCQkvKiBXZSBhbHJl YWR5IGtub3cgdGhhdCBzZWFyY2hfcGF0aCB3YXMgc2V0IHByb3Blcmx5ICovCiAJCWFwcGVuZFBR RXhwQnVmZmVyKGJ1ZiwgIiVzICVzIiwgdHlwZSwgZm10SWQodGUtPnRhZykpOwpAQCAtMzYyOSw2 ICszNjMwLDcgQEAgX3ByaW50VG9jRW50cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0 ZSwgYm9vbCBpc0RhdGEpCiAJCQlzdHJjbXAodGUtPmRlc2MsICJUQUJMRSIpID09IDAgfHwKIAkJ CXN0cmNtcCh0ZS0+ZGVzYywgIlRZUEUiKSA9PSAwIHx8CiAJCQlzdHJjbXAodGUtPmRlc2MsICJW SUVXIikgPT0gMCB8fAorCQkJc3RyY21wKHRlLT5kZXNjLCAiVkFSSUFCTEUiKSA9PSAwIHx8CiAJ CQlzdHJjbXAodGUtPmRlc2MsICJNQVRFUklBTElaRUQgVklFVyIpID09IDAgfHwKIAkJCXN0cmNt cCh0ZS0+ZGVzYywgIlNFUVVFTkNFIikgPT0gMCB8fAogCQkJc3RyY21wKHRlLT5kZXNjLCAiRk9S RUlHTiBUQUJMRSIpID09IDAgfHwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDhjYTgzYzA2ZDYuLmU4NzhkYjYz ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwpAQCAtMTMwMywxMCArMTMwMywxMSBAQCBleHBhbmRfdGFibGVfbmFt ZV9wYXR0ZXJucyhBcmNoaXZlICpmb3V0LAogCQkJCQkJICAiU0VMRUNUIGMub2lkIgogCQkJCQkJ ICAiXG5GUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyIKIAkJCQkJCSAgIlxuICAgICBMRUZUIEpP SU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFtZXNwYWNlIgot CQkJCQkJICAiXG5XSEVSRSBjLnJlbGtpbmQgaW4gKCclYycsICclYycsICclYycsICclYycsICcl YycsICclYycpXG4iLAorCQkJCQkJICAiXG5XSEVSRSBjLnJlbGtpbmQgaW4gKCclYycsICclYycs ICclYycsICclYycsICclYycsICclYycsICclYycpXG4iLAogCQkJCQkJICBSRUxLSU5EX1JFTEFU SU9OLCBSRUxLSU5EX1NFUVVFTkNFLCBSRUxLSU5EX1ZJRVcsCiAJCQkJCQkgIFJFTEtJTkRfTUFU VklFVywgUkVMS0lORF9GT1JFSUdOX1RBQkxFLAotCQkJCQkJICBSRUxLSU5EX1BBUlRJVElPTkVE X1RBQkxFKTsKKwkJCQkJCSAgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSwKKwkJCQkJCSAgUkVM S0lORF9WQVJJQUJMRSk7CiAJCXByb2Nlc3NTUUxOYW1lUGF0dGVybihHZXRDb25uZWN0aW9uKGZv dXQpLCBxdWVyeSwgY2VsbC0+dmFsLCB0cnVlLAogCQkJCQkJCSAgZmFsc2UsICJuLm5zcG5hbWUi LCAiYy5yZWxuYW1lIiwgTlVMTCwKIAkJCQkJCQkgICJwZ19jYXRhbG9nLnBnX3RhYmxlX2lzX3Zp c2libGUoYy5vaWQpIik7CkBAIC0yMjc0LDYgKzIyNzUsMTAgQEAgbWFrZVRhYmxlRGF0YUluZm8o RHVtcE9wdGlvbnMgKmRvcHQsIFRhYmxlSW5mbyAqdGJpbmZvLCBib29sIG9pZHMpCiAJCWRvcHQt Pm5vX3VubG9nZ2VkX3RhYmxlX2RhdGEpCiAJCXJldHVybjsKIAorCS8qIERvbid0IGR1bXAgZGF0 YSBvZiB2YXJpYWJsZXMgKi8KKwlpZiAodGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfVkFSSUFC TEUpCisJCXJldHVybjsKKwogCS8qIENoZWNrIHRoYXQgdGhlIGRhdGEgaXMgbm90IGV4cGxpY2l0 bHkgZXhjbHVkZWQgKi8KIAlpZiAoc2ltcGxlX29pZF9saXN0X21lbWJlcigmdGFibGVkYXRhX2V4 Y2x1ZGVfb2lkcywKIAkJCQkJCQkgICB0YmluZm8tPmRvYmouY2F0SWQub2lkKSkKQEAgLTI0OTgs OSArMjUwMywxMCBAQCBndWVzc0NvbnN0cmFpbnRJbmhlcml0YW5jZShUYWJsZUluZm8gKnRibGlu Zm8sIGludCBudW1UYWJsZXMpCiAJCVRhYmxlSW5mbyAqKnBhcmVudHM7CiAJCVRhYmxlSW5mbyAg KnBhcmVudDsKIAotCQkvKiBTZXF1ZW5jZXMgYW5kIHZpZXdzIG5ldmVyIGhhdmUgcGFyZW50cyAq LworCQkvKiBTZXF1ZW5jZXMsIHZhcmlhYmxlcyBhbmQgdmlld3MgbmV2ZXIgaGF2ZSBwYXJlbnRz ICovCiAJCWlmICh0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSB8fAotCQkJdGJp bmZvLT5yZWxraW5kID09IFJFTEtJTkRfVklFVykKKwkJCXRiaW5mby0+cmVsa2luZCA9PSBSRUxL SU5EX1ZJRVcgfHwKKwkJCXRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKQogCQkJ Y29udGludWU7CiAKIAkJLyogRG9uJ3QgYm90aGVyIGNvbXB1dGluZyBhbnl0aGluZyBmb3Igbm9u LXRhcmdldCB0YWJsZXMsIGVpdGhlciAqLwpAQCAtNTk3MCw3ICs1OTc2LDcgQEAgZ2V0VGFibGVz KEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCQkJCQkJICAiKGMub2lkID0gcGlwLm9i am9pZCAiCiAJCQkJCQkgICJBTkQgcGlwLmNsYXNzb2lkID0gJ3BnX2NsYXNzJzo6cmVnY2xhc3Mg IgogCQkJCQkJICAiQU5EIHBpcC5vYmpzdWJpZCA9IDApICIKLQkJCQkJCSAgIldIRVJFIGMucmVs a2luZCBpbiAoJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJykgIgorCQkJ CQkJICAiV0hFUkUgYy5yZWxraW5kIGluICgnJWMnLCAnJWMnLCAnJWMnLCAnJWMnLCAnJWMnLCAn JWMnLCAnJWMnLCAnJWMnKSAiCiAJCQkJCQkgICJPUkRFUiBCWSBjLm9pZCIsCiAJCQkJCQkgIGFj bF9zdWJxdWVyeS0+ZGF0YSwKIAkJCQkJCSAgcmFjbF9zdWJxdWVyeS0+ZGF0YSwKQEAgLTU5ODks NyArNTk5NSw4IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAkJ CQkJCSAgUkVMS0lORF9SRUxBVElPTiwgUkVMS0lORF9TRVFVRU5DRSwKIAkJCQkJCSAgUkVMS0lO RF9WSUVXLCBSRUxLSU5EX0NPTVBPU0lURV9UWVBFLAogCQkJCQkJICBSRUxLSU5EX01BVFZJRVcs IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSwKLQkJCQkJCSAgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJM RSk7CisJCQkJCQkgIFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUsCisJCQkJCQkgIFJFTEtJTkRf VkFSSUFCTEUpOwogCiAJCWRlc3Ryb3lQUUV4cEJ1ZmZlcihhY2xfc3VicXVlcnkpOwogCQlkZXN0 cm95UFFFeHBCdWZmZXIocmFjbF9zdWJxdWVyeSk7CkBAIC0xNTY0NSw2ICsxNTY1MiwxMSBAQCBk dW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJc3J2 bmFtZSA9IE5VTEw7CiAJCQkJZnRvcHRpb25zID0gTlVMTDsKIAkJCQlicmVhazsKKwkJCWNhc2Ug UkVMS0lORF9WQVJJQUJMRToKKwkJCQlyZWx0eXBlbmFtZSA9ICJWQVJJQUJMRSI7CisJCQkJc3J2 bmFtZSA9IE5VTEw7CisJCQkJZnRvcHRpb25zID0gTlVMTDsKKwkJCQlicmVhazsKIAkJCWRlZmF1 bHQ6CiAJCQkJcmVsdHlwZW5hbWUgPSAiVEFCTEUiOwogCQkJCXNydm5hbWUgPSBOVUxMOwpAQCAt MTU2NzYsMTIgKzE1Njg4LDIzIEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBUYWJs ZUluZm8gKnRiaW5mbykKIAkJCQkJCSAgcmVsdHlwZW5hbWUsCiAJCQkJCQkgIGZtdElkKHRiaW5m by0+ZG9iai5uYW1lKSk7CiAKKwkJLyoKKwkJICogQmluYXJ5IHVwZ3JhZGUgb2YgdmFyaWFibGVz IHNob3VsZCB0byBiZSBmaXhlZCB3aXRoIHN1cHBvcnQKKwkJICogY29tcG9zaXRlIHR5cGVzLCBh bmQgc2hvdWxkIGJlIHRlc3RlZCBUb0RvCisJCSAqLworCQlpZiAodGJpbmZvLT5yZWxraW5kID09 IFJFTEtJTkRfVkFSSUFCTEUpCisJCXsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgQVMgJXMi LAorCQkJCQkJCSAgdGJpbmZvLT5yZWxvZnR5cGUpOworCQl9CisKIAkJLyoKIAkJICogQXR0YWNo IHRvIHR5cGUsIGlmIHJlbG9mdHlwZTsgZXhjZXB0IGluIGNhc2Ugb2YgYSBiaW5hcnkgdXBncmFk ZSwKIAkJICogd2UgZHVtcCB0aGUgdGFibGUgbm9ybWFsbHkgYW5kIGF0dGFjaCBpdCB0byB0aGUg dHlwZSBhZnRlcndhcmQuCiAJCSAqLwotCQlpZiAodGJpbmZvLT5yZWxvZnR5cGUgJiYgIWRvcHQt PmJpbmFyeV91cGdyYWRlKQotCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiBPRiAlcyIsIHRiaW5m by0+cmVsb2Z0eXBlKTsKKwkJZWxzZSBpZiAodGJpbmZvLT5yZWxvZnR5cGUgJiYgIWRvcHQtPmJp bmFyeV91cGdyYWRlKQorCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiBPRiAlcyIsCisJCQkJCQkJ ICB0YmluZm8tPnJlbG9mdHlwZSk7CiAKIAkJLyoKIAkJICogSWYgdGhlIHRhYmxlIGlzIGEgcGFy dGl0aW9uLCBkdW1wIGl0IGFzIHN1Y2g7IGV4Y2VwdCBpbiB0aGUgY2FzZSBvZgpAQCAtMTU4Mzcs NyArMTU4NjAsOCBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0 YmluZm8pCiAJCQkJICogV2UgbXVzdCBoYXZlIGEgcGFyZW50aGVzaXplZCBhdHRyaWJ1dGUgbGlz dCwgZXZlbiB0aG91Z2gKIAkJCQkgKiBlbXB0eSwgd2hlbiBub3QgdXNpbmcgdGhlIE9GIFRZUEUg b3IgUEFSVElUSU9OIE9GIHN5bnRheC4KIAkJCQkgKi8KLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxLCAiIChcbikiKTsKKwkJCQlpZiAodGJpbmZvLT5yZWxraW5kICE9IFJFTEtJTkRfVkFSSUFC TEUpCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIgKFxuKSIpOwogCQkJfQogCiAJCQlp ZiAodGJpbmZvLT5pc3BhcnRpdGlvbiAmJiAhZG9wdC0+YmluYXJ5X3VwZ3JhZGUpCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu aAppbmRleCA2YzE4ZDQ1MWVmLi5iYjg0NmY2NGQ3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTg0LDcgKzg0 LDcgQEAgdHlwZWRlZiBlbnVtCiAJRE9fUE9MSUNZLAogCURPX1BVQkxJQ0FUSU9OLAogCURPX1BV QkxJQ0FUSU9OX1JFTCwKLQlET19TVUJTQ1JJUFRJT04KKwlET19TVUJTQ1JJUFRJT04sCiB9IER1 bXBhYmxlT2JqZWN0VHlwZTsKIAogLyogY29tcG9uZW50IHR5cGVzIG9mIGFuIG9iamVjdCB3aGlj aCBjYW4gYmUgc2VsZWN0ZWQgZm9yIGR1bXBpbmcgKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wX3NvcnQuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRl eCA1Y2UzYzVkNDg1Li45YTQzNTEyZTY3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcF9zb3J0LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBAIC0xNDcw LDYgKzE0NzAsMTEgQEAgZGVzY3JpYmVEdW1wYWJsZU9iamVjdChEdW1wYWJsZU9iamVjdCAqb2Jq LCBjaGFyICpidWYsIGludCBidWZzaXplKQogCQkJCQkgIlBPU1QtREFUQSBCT1VOREFSWSAgKElE ICVkKSIsCiAJCQkJCSBvYmotPmR1bXBJZCk7CiAJCQlyZXR1cm47CisJCWNhc2UgRE9fVkFSSUFC TEU6CisJCQlzbnByaW50ZihidWYsIGJ1ZnNpemUsCisJCQkJCSAiVkFSSUFCTEUgJXMgIChJRCAl ZCBPSUQgJXUpIiwKKwkJCQkJIG9iai0+bmFtZSwgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQub2lk KTsKKwkJCXJldHVybjsKIAl9CiAJLyogc2hvdWxkbid0IGdldCBoZXJlICovCiAJc25wcmludGYo YnVmLCBidWZzaXplLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAu cGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCAzZTliNGQ5NGRjLi5k MTAxMDcxNjJiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAor KysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtNTM0MSw2ICs1MzQxLDM4 IEBAIHFyL0NSRUFURSBUUkFOU0ZPUk0gRk9SIGludGVnZXIgTEFOR1VBR0Ugc3FsIFwoRlJPTSBT UUwgV0lUSCBGVU5DVElPTiBwZ19jYXRhbG9nCiAJCQlyb2xlICAgICAgICAgICAgICAgICAgICAg PT4gMSwKIAkJCXNlY3Rpb25fcG9zdF9kYXRhICAgICAgICA9PiAxLCB9LCB9LAogCisJJ0NSRUFU RSBWQVJJQUJMRSB0ZXN0X3ZhcmlhYmxlJyA9PiB7CisJCWFsbF9ydW5zICAgICA9PiAxLAorCQlj YXRjaF9hbGwgICAgPT4gJ0NSRUFURSAuLi4gY29tbWFuZHMnLAorCQljcmVhdGVfb3JkZXIgPT4g NjEsCisJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJs ZSBBUyBpbnRlZ2VyOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBWQVJJQUJMRSB2 YXJpYWJsZSBBUyBpbnRlZ2VyO1xFL3htLAorCQlsaWtlID0+IHsKKwkJCWJpbmFyeV91cGdyYWRl ICAgICAgICAgID0+IDEsCisJCQljbGVhbiAgICAgICAgICAgICAgICAgICA9PiAxLAorCQkJY2xl YW5faWZfZXhpc3RzICAgICAgICAgPT4gMSwKKwkJCWNyZWF0ZWRiICAgICAgICAgICAgICAgID0+ IDEsCisJCQlkZWZhdWx0cyAgICAgICAgICAgICAgICA9PiAxLAorCQkJZXhjbHVkZV90ZXN0X3Rh YmxlICAgICAgPT4gMSwKKwkJCWV4Y2x1ZGVfdGVzdF90YWJsZV9kYXRhID0+IDEsCisJCQlub19i bG9icyAgICAgICAgICAgICAgICA9PiAxLAorCQkJbm9fcHJpdnMgICAgICAgICAgICAgICAgPT4g MSwKKwkJCW5vX293bmVyICAgICAgICAgICAgICAgID0+IDEsCisJCQlvbmx5X2R1bXBfdGVzdF9z Y2hlbWEgICA9PiAxLAorCQkJcGdfZHVtcGFsbF9kYnByaXZzICAgICAgPT4gMSwKKwkJCXNjaGVt YV9vbmx5ICAgICAgICAgICAgID0+IDEsCisJCQlzZWN0aW9uX3ByZV9kYXRhICAgICAgICA9PiAx LAorCQkJdGVzdF9zY2hlbWFfcGx1c19ibG9icyAgPT4gMSwKKwkJCXdpdGhfb2lkcyAgICAgICAg ICAgICAgID0+IDEsIH0sCisJCXVubGlrZSA9PiB7CisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hl bWEgPT4gMSwKKwkJCW9ubHlfZHVtcF90ZXN0X3RhYmxlICAgICA9PiAxLAorCQkJcGdfZHVtcGFs bF9nbG9iYWxzICAgICAgID0+IDEsCisJCQlwZ19kdW1wYWxsX2dsb2JhbHNfY2xlYW4gPT4gMSwK KwkJCXJvbGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAorCQkJc2VjdGlvbl9wb3N0X2RhdGEg ICAgICAgID0+IDEsIH0sIH0sCisKIAknQUxURVIgVklFVyB0ZXN0X3ZpZXcgU0VUIERFRkFVTFQn ID0+IHsKIAkJYWxsX3J1bnMgICAgID0+IDEsCiAJCWNhdGNoX2FsbCAgICA9PiAnQ1JFQVRFIC4u LiBjb21tYW5kcycsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jIGIvc3JjL2Jp bi9wc3FsL2NvbW1hbmQuYwppbmRleCAzNTYwMzE4NzQ5Li5hZDAwMzBjMGRkIDEwMDY0NAotLS0g YS9zcmMvYmluL3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKQEAg LTc5NCw2ICs3OTQsNyBAQCBleGVjX2NvbW1hbmRfZChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUs IGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQogCQkJY2FzZSAnaSc6CiAJCQlj YXNlICdzJzoKIAkJCWNhc2UgJ0UnOgorCQkJY2FzZSAnVic6CiAJCQkJc3VjY2VzcyA9IGxpc3RU YWJsZXMoJmNtZFsxXSwgcGF0dGVybiwgc2hvd192ZXJib3NlLCBzaG93X3N5c3RlbSk7CiAJCQkJ YnJlYWs7CiAJCQljYXNlICdyJzoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j IGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggNDY2YTc4MDA0Yi4uYzI3MmRlMmJhYSAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKQEAgLTE2ODMsNiArMTY4Myw0MiBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhj b25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQlyZXR2YWwgPSB0cnVlOwogCQlnb3RvIGVycm9yX3Jl dHVybjsJCS8qIG5vdCBhbiBlcnJvciwganVzdCByZXR1cm4gZWFybHkgKi8KIAl9CisJZWxzZSBp ZiAodGFibGVpbmZvLnJlbGtpbmQgPT0gUkVMS0lORF9WQVJJQUJMRSkKKwl7CisJCVBHcmVzdWx0 ICAgKnJlcyA9IE5VTEw7CisJCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CisKKwkJ cHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICJTRUxFQ1QgcGdfY2F0YWxvZy5mb3Jt YXRfdHlwZShyZWxvZnR5cGUsIE5VTEwpIEFTIFwiJXNcIlxuIgorCQkJCQkJCSAgIkZST00gcGdf Y2F0YWxvZy5wZ19jbGFzc1xuIgorCQkJCQkJCSAgIldIRVJFIG9pZCA9ICclcyc7IiwKKwkJCQkJ CQkgIGdldHRleHRfbm9vcCgiVHlwZSIpLAorCQkJCQkJCSAgb2lkKTsKKworCQlyZXMgPSBQU1FM ZXhlYyhidWYuZGF0YSk7CisJCWlmICghcmVzKQorCQkJZ290byBlcnJvcl9yZXR1cm47CisKKwkJ LyogRGlkIHdlIGdldCBhbnl0aGluZz8gKi8KKwkJaWYgKFBRbnR1cGxlcyhyZXMpID09IDApCisJ CXsKKwkJCWlmICghcHNldC5xdWlldCkKKwkJCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55 IHZhcmlhYmxlIHdpdGggT0lEICVzLlxuIiwgb2lkKTsKKwkJCWdvdG8gZXJyb3JfcmV0dXJuOwor CQl9CisKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJTY2hlbWEgdmFyaWFibGUgXCIl cy4lc1wiIiksCisJCQkJCQkgIHNjaGVtYW5hbWUsIHJlbGF0aW9ubmFtZSk7CisKKwkJbXlvcHQu dGl0bGUgPSB0aXRsZS5kYXRhOworCisJCXByaW50UXVlcnkocmVzLCAmbXlvcHQsIHBzZXQucXVl cnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKKworCQlQUWNsZWFyKHJlcyk7CisKKwkJcmV0 dmFsID0gdHJ1ZTsKKwkJZ290byBlcnJvcl9yZXR1cm47CQkvKiBub3QgYW4gZXJyb3IsIGp1c3Qg cmV0dXJuIGVhcmx5ICovCisJfQogCiAJLyoKIAkgKiBHZXQgY29sdW1uIGluZm8KQEAgLTMzNjUs NiArMzQwMSw3IEBAIGxpc3REYlJvbGVTZXR0aW5ncyhjb25zdCBjaGFyICpwYXR0ZXJuLCBjb25z dCBjaGFyICpwYXR0ZXJuMikKICAqIG0gLSBtYXRlcmlhbGl6ZWQgdmlld3MKICAqIHMgLSBzZXF1 ZW5jZXMKICAqIEUgLSBmb3JlaWduIHRhYmxlIChOb3RlOiBkaWZmZXJlbnQgZnJvbSAnZicsIHRo ZSByZWxraW5kIHZhbHVlKQorICogViAtIHNjaGVtYSB2YXJpYWJsZQogICogKGFueSBvcmRlciBv ZiB0aGUgYWJvdmUgaXMgZmluZSkKICAqLwogYm9vbApAQCAtMzM3Niw2ICszNDEzLDcgQEAgbGlz dFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2 ZXJib3NlLCBib29sIHNob3dTeXMKIAlib29sCQlzaG93TWF0Vmlld3MgPSBzdHJjaHIodGFidHlw ZXMsICdtJykgIT0gTlVMTDsKIAlib29sCQlzaG93U2VxID0gc3RyY2hyKHRhYnR5cGVzLCAncycp ICE9IE5VTEw7CiAJYm9vbAkJc2hvd0ZvcmVpZ24gPSBzdHJjaHIodGFidHlwZXMsICdFJykgIT0g TlVMTDsKKwlib29sCQlzaG93VmFyaWFibGVzID0gc3RyY2hyKHRhYnR5cGVzLCAnVicpICE9IE5V TEw7CiAKIAlQUUV4cEJ1ZmZlckRhdGEgYnVmOwogCVBHcmVzdWx0ICAgKnJlczsKQEAgLTMzODMs OCArMzQyMSw4IEBAIGxpc3RUYWJsZXMoY29uc3QgY2hhciAqdGFidHlwZXMsIGNvbnN0IGNoYXIg KnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzCiAJc3RhdGljIGNvbnN0IGJvb2wg dHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlfTsKIAogCS8qIElmIHRhYnR5cGVzIGlzIGVtcHR5LCB3ZSBkZWZhdWx0IHRv IFxkdHZtc0UgKGJ1dCBzZWUgYWxzbyBjb21tYW5kLmMpICovCi0JaWYgKCEoc2hvd1RhYmxlcyB8 fCBzaG93SW5kZXhlcyB8fCBzaG93Vmlld3MgfHwgc2hvd01hdFZpZXdzIHx8IHNob3dTZXEgfHwg c2hvd0ZvcmVpZ24pKQotCQlzaG93VGFibGVzID0gc2hvd1ZpZXdzID0gc2hvd01hdFZpZXdzID0g c2hvd1NlcSA9IHNob3dGb3JlaWduID0gdHJ1ZTsKKwlpZiAoIShzaG93VGFibGVzIHx8IHNob3dJ bmRleGVzIHx8IHNob3dWaWV3cyB8fCBzaG93TWF0Vmlld3MgfHwgc2hvd1NlcSB8fCBzaG93Rm9y ZWlnbiB8fCBzaG93VmFyaWFibGVzKSkKKwkJc2hvd1RhYmxlcyA9IHNob3dWaWV3cyA9IHNob3dN YXRWaWV3cyA9IHNob3dTZXEgPSBzaG93Rm9yZWlnbiA9IHNob3dWYXJpYWJsZXMgPSB0cnVlOwog CiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCkBAIC0zNDA1LDYgKzM0NDMsNyBAQCBsaXN0VGFi bGVzKGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJv c2UsIGJvb2wgc2hvd1N5cwogCQkJCQkgICIgV0hFTiAiIENwcEFzU3RyaW5nMihSRUxLSU5EX0ZP UkVJR05fVEFCTEUpICIgVEhFTiAnJXMnIgogCQkJCQkgICIgV0hFTiAiIENwcEFzU3RyaW5nMihS RUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSAiIFRIRU4gJyVzJyIKIAkJCQkJICAiIFdIRU4gIiBD cHBBc1N0cmluZzIoUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCkgIiBUSEVOICclcyciCisJCQkJ CSAgIiBXSEVOICIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfVkFSSUFCTEUpICIgVEhFTiAnJXMnIgog CQkJCQkgICIgRU5EIGFzIFwiJXNcIixcbiIKIAkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2dldF91 c2VyYnlpZChjLnJlbG93bmVyKSBhcyBcIiVzXCIiLAogCQkJCQkgIGdldHRleHRfbm9vcCgiU2No ZW1hIiksCkBAIC0zNDE4LDYgKzM0NTcsNyBAQCBsaXN0VGFibGVzKGNvbnN0IGNoYXIgKnRhYnR5 cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5cwogCQkJ CQkgIGdldHRleHRfbm9vcCgiZm9yZWlnbiB0YWJsZSIpLAogCQkJCQkgIGdldHRleHRfbm9vcCgi dGFibGUiKSwJLyogcGFydGl0aW9uZWQgdGFibGUgKi8KIAkJCQkJICBnZXR0ZXh0X25vb3AoImlu ZGV4IiksCS8qIHBhcnRpdGlvbmVkIGluZGV4ICovCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJzY2hl bWEgdmFyaWFibGUiKSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIlR5cGUiKSwKIAkJCQkJICBnZXR0 ZXh0X25vb3AoIk93bmVyIikpOwogCkBAIC0zNDcxLDYgKzM1MTEsOCBAQCBsaXN0VGFibGVzKGNv bnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJv b2wgc2hvd1N5cwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiJ3MnLCIpOyAvKiB3YXMg UkVMS0lORF9TUEVDSUFMICovCiAJaWYgKHNob3dGb3JlaWduKQogCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cigmYnVmLCBDcHBBc1N0cmluZzIoUkVMS0lORF9GT1JFSUdOX1RBQkxFKSAiLCIpOworCWlm IChzaG93VmFyaWFibGVzKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCBDcHBBc1N0cmlu ZzIoUkVMS0lORF9WQVJJQUJMRSkgIiwiKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYs ICInJyIpOwkvKiBkdW1teSAqLwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIpXG4iKTsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmgKaW5kZXggYTRjYzVlZmFlMC4uYzVmMTA3ZDgxNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmgKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKQEAgLTYwLDcgKzYw LDcgQEAgZXh0ZXJuIGJvb2wgbGlzdFRTVGVtcGxhdGVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJv b2wgdmVyYm9zZSk7CiAvKiBcbCAqLwogZXh0ZXJuIGJvb2wgbGlzdEFsbERicyhjb25zdCBjaGFy ICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpOwogCi0vKiBcZHQsIFxkaSwgXGRzLCBcZFMsIGV0Yy4g Ki8KKy8qIFxkdCwgXGRpLCBcZHMsIFxkUywgXGR2YXIgZXRjLiAqLwogZXh0ZXJuIGJvb2wgbGlz dFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2 ZXJib3NlLCBib29sIHNob3dTeXN0ZW0pOwogCiAvKiBcZEQgKi8KZGlmZiAtLWdpdCBhL3NyYy9i aW4vcHNxbC9oZWxwLmMgYi9zcmMvYmluL3BzcWwvaGVscC5jCmluZGV4IDcwMmU3NDJhZjQuLjJk YTUwZjcyOTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9oZWxwLmMKKysrIGIvc3JjL2Jpbi9w c3FsL2hlbHAuYwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHNsYXNoVXNhZ2UodW5zaWduZWQgc2hvcnQg aW50IHBhZ2VyKQogCSAqIFVzZSAicHNxbCAtLWhlbHA9Y29tbWFuZHMgfCB3YyIgdG8gY291bnQg Y29ycmVjdGx5LiAgSXQncyBva2F5IHRvIGNvdW50CiAJICogdGhlIFVTRV9SRUFETElORSBsaW5l IGV2ZW4gaW4gYnVpbGRzIHdpdGhvdXQgdGhhdC4KIAkgKi8KLQlvdXRwdXQgPSBQYWdlT3V0cHV0 KDEyNSwgcGFnZXIgPyAmKHBzZXQucG9wdC50b3B0KSA6IE5VTEwpOworCW91dHB1dCA9IFBhZ2VP dXRwdXQoMTI2LCBwYWdlciA/ICYocHNldC5wb3B0LnRvcHQpIDogTlVMTCk7CiAKIAlmcHJpbnRm KG91dHB1dCwgXygiR2VuZXJhbFxuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcY29weXJp Z2h0ICAgICAgICAgICAgIHNob3cgUG9zdGdyZVNRTCB1c2FnZSBhbmQgZGlzdHJpYnV0aW9uIHRl cm1zXG4iKSk7CkBAIC0yNTcsNiArMjU3LDcgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9ydCBp bnQgcGFnZXIpCiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkVFtTK10gW1BBVFRFUk5dICAgICAg bGlzdCBkYXRhIHR5cGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkdVtTK10gW1BB VFRFUk5dICAgICAgbGlzdCByb2xlc1xuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZHZb UytdIFtQQVRURVJOXSAgICAgIGxpc3Qgdmlld3NcbiIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygi ICBcXGRWW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IHNjaGVtYSB2YXJpYWJsZXNcbiIpKTsKIAlm cHJpbnRmKG91dHB1dCwgXygiICBcXGR4WytdICBbUEFUVEVSTl0gICAgICBsaXN0IGV4dGVuc2lv bnNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR5ICAgICBbUEFUVEVSTl0gICAgICBs aXN0IGV2ZW50IHRyaWdnZXJzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxsWytdICAg W1BBVFRFUk5dICAgICAgbGlzdCBkYXRhYmFzZXNcbiIpKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCA4 YmM0YTE5NGE1Li5iYTVmNmIwODMyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBAIC02NzksNiArNjc5LDIw IEBAIHN0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlzdF9vZl9zdGF0aXN0aWNz ID0gewogCU5VTEwKIH07CiAKK3N0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlz dF9vZl92YXJpYWJsZXMgPSB7CisJLyogY2F0bmFtZSAqLworCSJwZ19jYXRhbG9nLnBnX2NsYXNz IGMiLAorCS8qIHNlbGNvbmRpdGlvbiAqLworCSJjLnJlbGtpbmQgSU4gKCdWJykiLAorCS8qIHZp c2NvbmRpdGlvbiAqLworCSJwZ19jYXRhbG9nLnBnX3RhYmxlX2lzX3Zpc2libGUoYy5vaWQpIiwK KwkvKiBuYW1lc3BhY2UgKi8KKwkiYy5yZWxuYW1lc3BhY2UiLAorCS8qIHJlc3VsdCAqLworCSJw Z19jYXRhbG9nLnF1b3RlX2lkZW50KGMucmVsbmFtZSkiLAorCS8qIHF1YWxyZXN1bHQgKi8KKwlO VUxMCit9OwogCiAvKgogICogUXVlcmllcyB0byBnZXQgbGlzdHMgb2YgbmFtZXMgb2YgdmFyaW91 cyBraW5kcyBvZiB0aGluZ3MsIHBvc3NpYmx5CkBAIC0xMTA4LDYgKzExMjIsNyBAQCBzdGF0aWMg Y29uc3QgcGdzcWxfdGhpbmdfdCB3b3Jkc19hZnRlcl9jcmVhdGVbXSA9IHsKIAkJCQkJCQkJCQkJ CQkJCQkgKiBUQUJMRSAuLi4gKi8KIAl7IlVTRVIiLCBRdWVyeV9mb3JfbGlzdF9vZl9yb2xlcyAi IFVOSU9OIFNFTEVDVCAnTUFQUElORyBGT1InIn0sCiAJeyJVU0VSIE1BUFBJTkcgRk9SIiwgTlVM TCwgTlVMTH0sCisJeyJWQVJJQUJMRSIsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJs ZXN9LAogCXsiVklFVyIsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92aWV3c30sCiAJe05VTEx9 CQkJCQkJLyogZW5kIG9mIGxpc3QgKi8KIH07CkBAIC0xNDYwLDcgKzE0NzUsNyBAQCBwc3FsX2Nv bXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiQUJPUlQi LCAiQUxURVIiLCAiQU5BTFlaRSIsICJCRUdJTiIsICJDQUxMIiwgIkNIRUNLUE9JTlQiLCAiQ0xP U0UiLCAiQ0xVU1RFUiIsCiAJCSJDT01NRU5UIiwgIkNPTU1JVCIsICJDT1BZIiwgIkNSRUFURSIs ICJERUFMTE9DQVRFIiwgIkRFQ0xBUkUiLAogCQkiREVMRVRFIEZST00iLCAiRElTQ0FSRCIsICJE TyIsICJEUk9QIiwgIkVORCIsICJFWEVDVVRFIiwgIkVYUExBSU4iLAotCQkiRkVUQ0giLCAiR1JB TlQiLCAiSU1QT1JUIiwgIklOU0VSVCIsICJMSVNURU4iLCAiTE9BRCIsICJMT0NLIiwKKwkJIkZF VENIIiwgIkdSQU5UIiwgIklNUE9SVCIsICJJTlNFUlQiLCAiTEVUIiwgIkxJU1RFTiIsICJMT0FE IiwgIkxPQ0siLAogCQkiTU9WRSIsICJOT1RJRlkiLCAiUFJFUEFSRSIsCiAJCSJSRUFTU0lHTiIs ICJSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIiwgIlJFSU5ERVgiLCAiUkVMRUFTRSIsCiAJCSJS RVNFVCIsICJSRVZPS0UiLCAiUk9MTEJBQ0siLApAQCAtMTQ3OSw3ICsxNDk0LDcgQEAgcHNxbF9j b21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxcZEYi LCAiXFxkRmQiLCAiXFxkRnAiLCAiXFxkRnQiLCAiXFxkZyIsICJcXGRpIiwgIlxcZGwiLCAiXFxk TCIsCiAJCSJcXGRtIiwgIlxcZG4iLCAiXFxkbyIsICJcXGRPIiwgIlxcZHAiLAogCQkiXFxkcmRz IiwgIlxcZFJzIiwgIlxcZFJwIiwgIlxcZHMiLCAiXFxkUyIsCi0JCSJcXGR0IiwgIlxcZFQiLCAi XFxkdiIsICJcXGR1IiwgIlxcZHgiLCAiXFxkeSIsCisJCSJcXGR0IiwgIlxcZFQiLCAiXFxkdiIs ICJcXGR1IiwgIlxcZHgiLCAiXFxkeSIsICJcXGR2YXIiLAogCQkiXFxlIiwgIlxcZWNobyIsICJc XGVmIiwgIlxcZWxpZiIsICJcXGVsc2UiLCAiXFxlbmNvZGluZyIsCiAJCSJcXGVuZGlmIiwgIlxc ZXJydmVyYm9zZSIsICJcXGV2IiwKIAkJIlxcZiIsCkBAIC0yNjg0LDYgKzI2OTksMTQgQEAgcHNx bF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNl IGlmIChNYXRjaGVzNCgiQ1JFQVRFIiwgIlJPTEV8VVNFUnxHUk9VUCIsIE1hdGNoQW55LCAiSU4i KSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiR1JPVVAiLCAiUk9MRSIpOwogCisvKiBDUkVBVEUg VkFSSUFCTEUgLS0tIGlzIGFsbG93ZWQgaW5zaWRlIENSRUFURSBTQ0hFTUEsIHNvIHVzZSBUYWls TWF0Y2hlcyAqLworCS8qIENvbXBsZXRlIENSRUFURSBWQVJJQUJMRSA8bmFtZT4gd2l0aCBBUyAq LworCWVsc2UgaWYgKFRhaWxNYXRjaGVzMygiQ1JFQVRFIiwgIlZBUklBQkxFIiwgTWF0Y2hBbnkp KQorCQlDT01QTEVURV9XSVRIX0NPTlNUKCJBUyIpOworCS8qIENvbXBsZXRlIENSRUFURSBWQVJJ QUJMRSA8bmFtZT4gd2l0aCBBUyB0eXBlcyovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJDUkVB VEUiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSwgIkFTIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1B X1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2RhdGF0eXBlcywgTlVMTCk7CisKIC8qIENSRUFURSBW SUVXIC0tLSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2UgVGFpbE1hdGNo ZXMgKi8KIAkvKiBDb21wbGV0ZSBDUkVBVEUgVklFVyA8bmFtZT4gd2l0aCBBUyAqLwogCWVsc2Ug aWYgKFRhaWxNYXRjaGVzMygiQ1JFQVRFIiwgIlZJRVciLCBNYXRjaEFueSkpCkBAIC0yODM5LDYg KzI4NjIsMTIgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwg aW50IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzNSgiRFJPUCIsICJSVUxFIiwgTWF0Y2hBbnksICJP TiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiQ0FTQ0FERSIsICJSRVNUUklD VCIpOwogCisJLyogRFJPUCBWQVJJQUJMRSAqLworCWVsc2UgaWYgKE1hdGNoZXMyKCJEUk9QIiwg IlZBUklBQkxFIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0 X29mX3ZhcmlhYmxlcywgTlVMTCk7CisJZWxzZSBpZiAoTWF0Y2hlczMoIkRST1AiLCAiVkFSSUFC TEUiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEhfTElTVDIoIkNBU0NBREUiLCAiUkVTVFJJ Q1QiKTsKKwogLyogRVhFQ1VURSAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJFWEVDVVRFIikpCiAJ CUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfcHJlcGFyZWRfc3RhdGVtZW50 cyk7CkBAIC0yODQ5LDE0ICsyODc4LDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0 ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJICogQ29tcGxldGUgRVhQTEFJTiBbQU5BTFlaRV0g W1ZFUkJPU0VdIHdpdGggbGlzdCBvZiBFWFBMQUlOLWFibGUgY29tbWFuZHMKIAkgKi8KIAllbHNl IGlmIChNYXRjaGVzMSgiRVhQTEFJTiIpKQotCQlDT01QTEVURV9XSVRIX0xJU1Q3KCJTRUxFQ1Qi LCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCi0JCQkJCQkJIkFOQUxZ WkUiLCAiVkVSQk9TRSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q4KCJTRUxFQ1QiLCAiSU5TRVJU IiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCisJCQkJCQkJIkFOQUxZWkUiLCAiVkVS Qk9TRSIsICJMRVQiKTsKIAllbHNlIGlmIChNYXRjaGVzMigiRVhQTEFJTiIsICJBTkFMWVpFIikp Ci0JCUNPTVBMRVRFX1dJVEhfTElTVDYoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQ REFURSIsICJERUNMQVJFIiwKLQkJCQkJCQkiVkVSQk9TRSIpOworCQlDT01QTEVURV9XSVRIX0xJ U1Q3KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCisJ CQkJCQkJIlZFUkJPU0UiLCAiTEVUIik7CiAJZWxzZSBpZiAoTWF0Y2hlczIoIkVYUExBSU4iLCAi VkVSQk9TRSIpIHx8CiAJCQkgTWF0Y2hlczMoIkVYUExBSU4iLCAiQU5BTFlaRSIsICJWRVJCT1NF IikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDUoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwg IlVQREFURSIsICJERUNMQVJFIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDYoIlNFTEVDVCIsICJJ TlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwgIkxFVCIpOwogCiAvKiBGRVRD SCAmJiBNT1ZFICovCiAJLyogQ29tcGxldGUgRkVUQ0ggd2l0aCBvbmUgb2YgRk9SV0FSRCwgQkFD S1dBUkQsIFJFTEFUSVZFICovCkBAIC0yOTY1LDYgKzI5OTQsNyBAQCBwc3FsX2NvbXBsZXRpb24o Y29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJICAgIiBVTklP TiBTRUxFQ1QgJ0FMTCBST1VUSU5FUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklPTiBT RUxFQ1QgJ0FMTCBTRVFVRU5DRVMgSU4gU0NIRU1BJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VM RUNUICdBTEwgVEFCTEVTIElOIFNDSEVNQSciCisJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAn QUxMIFZBUklBQkxFUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0RB VEFCQVNFJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdET01BSU4nIgogCQkJCQkJCQkJ ICAgIiBVTklPTiBTRUxFQ1QgJ0ZPUkVJR04gREFUQSBXUkFQUEVSJyIKQEAgLTI5NzgsMTQgKzMw MDgsMTYgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50 IGVuZCkKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdTRVFVRU5DRSciCiAJCQkJCQkJCQkg ICAiIFVOSU9OIFNFTEVDVCAnVEFCTEUnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RB QkxFU1BBQ0UnIgotCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RZUEUnIik7CisJCQkJCQkJ CQkgICAiIFVOSU9OIFNFTEVDVCAnVFlQRSciCisJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAn VkFSSUFCTEUnIik7CiAJfQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgiR1JBTlR8UkVWT0tFIiwg TWF0Y2hBbnksICJPTiIsICJBTEwiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNSgiRlVOQ1RJT05T IElOIFNDSEVNQSIsCisJCUNPTVBMRVRFX1dJVEhfTElTVDYoIkZVTkNUSU9OUyBJTiBTQ0hFTUEi LAogCQkJCQkJCSJQUk9DRURVUkVTIElOIFNDSEVNQSIsCiAJCQkJCQkJIlJPVVRJTkVTIElOIFND SEVNQSIsCiAJCQkJCQkJIlNFUVVFTkNFUyBJTiBTQ0hFTUEiLAotCQkJCQkJCSJUQUJMRVMgSU4g U0NIRU1BIik7CisJCQkJCQkJIlRBQkxFUyBJTiBTQ0hFTUEiLAorCQkJCQkJCSJWQVJJQUJMRVMg SU4gU0NIRU1BIik7CiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJHUkFOVHxSRVZPS0UiLCBNYXRj aEFueSwgIk9OIiwgIkZPUkVJR04iKSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiREFUQSBXUkFQ UEVSIiwgIlNFUlZFUiIpOwogCkBAIC0zMDE1LDYgKzMwNDcsOCBAQCBwc3FsX2NvbXBsZXRpb24o Y29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJQ09NUExFVEVfV0lUSF9T Q0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zfc2VxdWVuY2VzLCBOVUxMKTsKIAkJZWxzZSBp ZiAoVGFpbE1hdGNoZXMxKCJUQUJMRSIpKQogCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlko UXVlcnlfZm9yX2xpc3Rfb2ZfdHN2bWYsIE5VTEwpOworCQllbHNlIGlmIChUYWlsTWF0Y2hlczEo IlZBUklBQkxFIikpCisJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlz dF9vZl92YXJpYWJsZXMsIE5VTEwpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlczEoIlRBQkxFU1BB Q0UiKSkKIAkJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzcGFj ZXMpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlczEoIlRZUEUiKSkKQEAgLTMxNzEsNyArMzIwNSw3 IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQp CiAKIC8qIFBSRVBBUkUgeHggQVMgKi8KIAllbHNlIGlmIChNYXRjaGVzMygiUFJFUEFSRSIsIE1h dGNoQW55LCAiQVMiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNCgiU0VMRUNUIiwgIlVQREFURSIs ICJJTlNFUlQiLCAiREVMRVRFIEZST00iKTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUNSgiU0VMRUNU IiwgIlVQREFURSIsICJJTlNFUlQiLCAiREVMRVRFIEZST00iLCAiTEVUIik7CiAKIC8qCiAgKiBQ UkVQQVJFIFRSQU5TQUNUSU9OIGlzIG1pc3Npbmcgb24gcHVycG9zZS4gSXQncyBpbnRlbmRlZCBm b3IgdHJhbnNhY3Rpb24KQEAgLTMzOTAsNiArMzQyNCwxNCBAQCBwc3FsX2NvbXBsZXRpb24oY29u c3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKFRhaWxNYXRjaGVz NCgiVVBEQVRFIiwgTWF0Y2hBbnksICJTRVQiLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEhf Q09OU1QoIj0iKTsKIAorLyogTEVUIC0tLSBjYW4gYmUgaW5zaWRlIEVYUExBSU4sIFBSRVBBUkUg ZXRjICovCisJLyogSWYgcHJldi4gd29yZCBpcyBMRVQgc3VnZ2VzdCBhIGxpc3Qgb2YgdmFyaWFi bGVzICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMxKCJMRVQiKSkKKwkJQ09NUExFVEVfV0lUSF9T Q0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKKwkvKiBDb21w bGV0ZSBMRVQgPHZhcmlhYmxlPiB3aXRoICI9IiAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzMigi TEVUIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIX0NPTlNUKCI9Iik7CisKIC8qIFVTRVIg TUFQUElORyAqLwogCWVsc2UgaWYgKE1hdGNoZXMzKCJBTFRFUnxDUkVBVEV8RFJPUCIsICJVU0VS IiwgIk1BUFBJTkciKSkKIAkJQ09NUExFVEVfV0lUSF9DT05TVCgiRk9SIik7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2NsYXNzLmgKaW5kZXggMjZiMTg2NmM2OS4uYzUxNDZmYzEzOCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xh c3MuaApAQCAtMTY3LDYgKzE2Nyw3IEBAIERFU0NSKCIiKTsKICNkZWZpbmUJCSAgUkVMS0lORF9G T1JFSUdOX1RBQkxFICAgJ2YnCS8qIGZvcmVpZ24gdGFibGUgKi8KICNkZWZpbmUJCSAgUkVMS0lO RF9QQVJUSVRJT05FRF9UQUJMRSAncCcgLyogcGFydGl0aW9uZWQgdGFibGUgKi8KICNkZWZpbmUJ CSAgUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCAnSScgLyogcGFydGl0aW9uZWQgaW5kZXggKi8K KyNkZWZpbmUJCSAgUkVMS0lORF9WQVJJQUJMRQkJICAnVicJLyogc2NoZW1hIHZhcmlhYmxlICov CiAKICNkZWZpbmUJCSAgUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UCSdwJyAvKiByZWd1bGFyIHRh YmxlICovCiAjZGVmaW5lCQkgIFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VECSd1JyAvKiB1bmxvZ2dl ZCBwZXJtYW5lbnQgdGFibGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf ZGVmYXVsdF9hY2wuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaAppbmRl eCAxMWIzMDYwMzdkLi4xMzIzMmQ3YTQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2RlZmF1bHRfYWNsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2Fj bC5oCkBAIC03MSw1ICs3MSw2IEBAIHR5cGVkZWYgRm9ybURhdGFfcGdfZGVmYXVsdF9hY2wgKkZv cm1fcGdfZGVmYXVsdF9hY2w7CiAjZGVmaW5lIERFRkFDTE9CSl9GVU5DVElPTgkJJ2YnIC8qIGZ1 bmN0aW9uICovCiAjZGVmaW5lIERFRkFDTE9CSl9UWVBFCQkJJ1QnIC8qIHR5cGUgKi8KICNkZWZp bmUgREVGQUNMT0JKX05BTUVTUEFDRQkJJ24nIC8qIG5hbWVzcGFjZSAqLworI2RlZmluZSBERUZB Q0xPQkpfVkFSSUFCTEUJCSdWJyAvKiB2YXJpYWJsZSAqLwogCiAjZW5kaWYJCQkJCQkJLyogUEdf REVGQVVMVF9BQ0xfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaAppbmRleCAyYTUzMjEzMTVhLi4yZjc5 YmJlODljIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaApAQCAtNTU2MSw2ICs1NTYxLDEyIEBAIERFU0NS KCJsaXN0IG9mIGZpbGVzIGluIHRoZSBXQUwgZGlyZWN0b3J5Iik7CiBEQVRBKGluc2VydCBPSUQg PSA1MDI4ICggc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uIFBHTlNQIFBHVUlEIDEyIDEgMCAyMjc2 IDAgZiBmIGYgZiBmIGYgaSBzIDQgMCAxNiAiMjYgMjMgMjMgMjI3NiIgX251bGxfICJ7aSxpLGks dn0iIF9udWxsXyBfbnVsbF8gX251bGxfIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbiBfbnVsbF8g X251bGxfIF9udWxsXyApKTsKIERFU0NSKCJoYXNoIHBhcnRpdGlvbiBDSEVDSyBjb25zdHJhaW50 Iik7CiAKKy8qIHNjaGVtYSB2YXJpYWJsZXMgZnVuY3Rpb24gaW50ZXJmYWNlICovCitEQVRBKGlu c2VydCBPSUQgPSA2MTIyICggZ2V0X3NjaGVtYV92YXJpYWJsZSBQR05TUCBQR1VJRCAxMiAxIDAg MCAwIGYgZiBmIGYgZiBmIHYgciAyIDAgMjI4MyAiMjIwNSAyMjgzIiBfbnVsbF8gX251bGxfIF9u dWxsXyBfbnVsbF8gX251bGxfIGdldF9zY2hlbWFfdmFyaWFibGUgX251bGxfIF9udWxsXyBfbnVs bF8gKSk7CitERVNDUigicmV0dXJucyB2YWx1ZSBvZiBzY2hlbWEgdmFyaWFibGUiKTsKK0RBVEEo aW5zZXJ0IE9JRCA9IDYxMjMgKCBzZXRfc2NoZW1hX3ZhcmlhYmxlIFBHTlNQIFBHVUlEIDEyIDEg MCAwIDAgZiBmIGYgZiBmIGYgdiByIDIgMCAyMjc4ICIyMjA1IDIyODMiIF9udWxsXyBfbnVsbF8g X251bGxfIF9udWxsXyBfbnVsbF8gc2V0X3NjaGVtYV92YXJpYWJsZSBfbnVsbF8gX251bGxfIF9u dWxsXyApKTsKK0RFU0NSKCJyZXR1cm5zIHZhbHVlIG9mIHNjaGVtYSB2YXJpYWJsZSIpOworCiAv KgogICogU3ltYm9saWMgdmFsdWVzIGZvciBwcm92b2xhdGlsZSBjb2x1bW46IHRoZXNlIGluZGlj YXRlIHdoZXRoZXIgdGhlIHJlc3VsdAogICogb2YgYSBmdW5jdGlvbiBpcyBkZXBlbmRlbnQgKm9u bHkqIG9uIHRoZSB2YWx1ZXMgb2YgaXRzIGV4cGxpY2l0IGFyZ3VtZW50cywKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv c2NoZW1hdmFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNmY2NWIx ZjFkMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhci5o CkBAIC0wLDAgKzEsMzEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHNjaGVtYXZhci5o CisgKgkgIHByb3RvdHlwZXMgZm9yIHNjaGVtYXZhci5jLgorICoKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5 IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9jb21tYW5kcy9zY2hlbWF2YXIuaAor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFNDSEVNQVZBUl9ICisjZGVmaW5l IFNDSEVNQVZBUl9ICisKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKyNpbmNs dWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX25vZGUuaCIK KworZXh0ZXJuIE9iamVjdEFkZHJlc3MgRGVmaW5lU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAq cHN0YXRlLCBDcmVhdGVTY2hlbWFWYXJTdG10ICp2YXIpOworCitleHRlcm4gdm9pZCBSZXNldFNj aGVtYVZhcmlhYmxlc0NhY2hlKHZvaWQpOworCitleHRlcm4gY2hhciAqZ2V0X3NjaGVtYXZhcl9u YW1lKE9pZCB2YXJpZCk7CisKK2V4dGVybiB2b2lkIFNldFNjaGVtYVZhcmlhYmxlKE9pZCB2YXJp ZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLCBPaWQJdHlwaWQsIGludDMyIHR5cG1vZCwgaW50 MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFsKTsKK2V4dGVybiBEYXR1bSBHZXRTY2hlbWFWYXJpYWJs ZShPaWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwgT2lkCXR5cGlkLCBpbnQzMiB0eXBtb2QsIGludDE2 IHR5cGxlbiwgYm9vbCB0eXBieXZhbCk7CitleHRlcm4gdm9pZCBTZXRTY2hlbWFWYXJpYWJsZVNl Y3VyZShPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCwgT2lkCXR5cGlkLCBpbnQz MiB0eXBtb2QsIGludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCk7CitleHRlcm4gRGF0dW0gR2V0 U2NoZW1hVmFyaWFibGVTZWN1cmUoT2lkIHZhcmlkLCBib29sICppc051bGwsIE9pZAl0eXBpZCwg aW50MzIgdHlwbW9kLCBpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwpOworCisjZW5kaWYKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCAxMTdm Yzg5MmY0Li5hMjgyZjFlNGUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj RXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTEzOCw2ICsx MzgsNyBAQCB0eXBlZGVmIGVudW0gRXhwckV2YWxPcAogCUVFT1BfUEFSQU1fRVhFQywKIAlFRU9Q X1BBUkFNX0VYVEVSTiwKIAlFRU9QX1BBUkFNX0NBTExCQUNLLAorCUVFT1BfUEFSQU1fU0NIRU1B X1ZBUklBQkxFLAogCiAJLyogcmV0dXJuIENhc2VUZXN0RXhwciB2YWx1ZSAqLwogCUVFT1BfQ0FT RV9URVNUVkFMLApAQCAtMzQyLDExICszNDMsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwckV2YWxT dGVwCiAJCQlUdXBsZURlc2MJYXJnZGVzYzsKIAkJfQkJCW51bGx0ZXN0X3JvdzsKIAotCQkvKiBm b3IgRUVPUF9QQVJBTV9FWEVDL0VYVEVSTiAqLworCQkvKiBmb3IgRUVPUF9QQVJBTV9FWEVDL0VY VEVSTi9WQVJJQUJMRSAqLwogCQlzdHJ1Y3QKIAkJewotCQkJaW50CQkJcGFyYW1pZDsJLyogbnVt ZXJpYyBJRCBmb3IgcGFyYW1ldGVyICovCi0JCQlPaWQJCQlwYXJhbXR5cGU7CS8qIE9JRCBvZiBw YXJhbWV0ZXIncyBkYXRhdHlwZSAqLworCQkJaW50CQkJcGFyYW1pZDsJCS8qIG51bWVyaWMgSUQg Zm9yIHBhcmFtZXRlciAqLworCQkJT2lkCQkJcGFyYW10eXBlOwkJLyogT0lEIG9mIHBhcmFtZXRl cidzIGRhdGF0eXBlICovCisJCQlpbnQzMgkJcGFyYW10eXBtb2Q7CS8qIHR5cG1vZCBvZiBwYXJh bSAobm90IHVzZWQgeWV0KSAqLworCQkJaW50MTYJCXBhcmFtdHlwbGVuOwkvKiBleHBlY3RlZCBs ZW5ndGggKi8KKwkJCWJvb2wJCXBhcmFtdHlwYnl2YWw7CS8qIGlzIHBhc3NlZCBieSB2YWx1ZSAq LwogCQl9CQkJcGFyYW07CiAKIAkJLyogZm9yIEVFT1BfUEFSQU1fQ0FMTEJBQ0sgKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rl cy5oCmluZGV4IDc0YjA5NGE5YzMuLjJmNDk4NjA5OWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtMzQ0LDYg KzM0NCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVhdGVUYWJsZUFzU3RtdCwKIAlU X0NyZWF0ZVNlcVN0bXQsCiAJVF9BbHRlclNlcVN0bXQsCisJVF9DcmVhdGVTY2hlbWFWYXJTdG10 LAogCVRfVmFyaWFibGVTZXRTdG10LAogCVRfVmFyaWFibGVTaG93U3RtdCwKIAlUX0Rpc2NhcmRT dG10LApAQCAtNDE1LDYgKzQxNiw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVhdGVT dGF0c1N0bXQsCiAJVF9BbHRlckNvbGxhdGlvblN0bXQsCiAJVF9DYWxsU3RtdCwKKwlUX0xldFN0 bXQsCiAKIAkvKgogCSAqIFRBR1MgRk9SIFBBUlNFIFRSRUUgTk9ERVMgKHBhcnNlbm9kZXMuaCkK QEAgLTY1Nyw2ICs2NTksNyBAQCB0eXBlZGVmIGVudW0gQ21kVHlwZQogCUNNRF9VUERBVEUsCQkJ CQkvKiB1cGRhdGUgc3RtdCAqLwogCUNNRF9JTlNFUlQsCQkJCQkvKiBpbnNlcnQgc3RtdCAqLwog CUNNRF9ERUxFVEUsCisJQ01EX0xFVCwKIAlDTURfVVRJTElUWSwJCQkJLyogY21kcyBsaWtlIGNy ZWF0ZSwgZGVzdHJveSwgY29weSwgdmFjdXVtLAogCQkJCQkJCQkgKiBldGMuICovCiAJQ01EX05P VEhJTkcJCQkJCS8qIGR1bW15IGNvbW1hbmQgZm9yIGluc3RlYWQgbm90aGluZyBydWxlcwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGM3YTQzYjg5MzMuLjhlNjViMzcyNmMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmgKQEAgLTE1MDIsNiArMTUwMiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBVcGRhdGVT dG10CiAJV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCiB9IFVwZGF0 ZVN0bXQ7CiAKK3R5cGVkZWYgc3RydWN0IExldFN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVJh bmdlVmFyICAgKnZhcmlhYmxlOwkJLyogcmVsYXRpb24gdG8gaW5zZXJ0IGludG8gKi8KKwlOb2Rl CSAgICpzZWxlY3RTdG10OwkJLyogdGhlIHNvdXJjZSBTRUxFQ1QvVkFMVUVTLCBvciBOVUxMICov Cit9IExldFN0bXQ7CisKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCVNlbGVjdCBT dGF0ZW1lbnQKICAqCkBAIC0xNjc5LDYgKzE2ODcsNyBAQCB0eXBlZGVmIGVudW0gT2JqZWN0VHlw ZQogCU9CSkVDVF9UU1RFTVBMQVRFLAogCU9CSkVDVF9UWVBFLAogCU9CSkVDVF9VU0VSX01BUFBJ TkcsCisJT0JKRUNUX1ZBUklBQkxFLAogCU9CSkVDVF9WSUVXCiB9IE9iamVjdFR5cGU7CiAKQEAg LTI0OTEsNiArMjUwMCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclNlcVN0bXQKIAlib29sCQlt aXNzaW5nX29rOwkJLyogc2tpcCBlcnJvciBpZiBhIHJvbGUgaXMgbWlzc2luZz8gKi8KIH0gQWx0 ZXJTZXFTdG10OwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJQ3JlYXRlIFZBUklB QkxFIFN0YXRlbWVudAorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0 cnVjdCBDcmVhdGVTY2hlbWFWYXJTdG10Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlSYW5nZVZhciAg ICp2YXJpYWJsZTsJCS8qIHRoZSB2YXJpYWJsZSB0byBjcmVhdGUgKi8KKwlUeXBlTmFtZSAgICp0 eXBlTmFtZTsJCS8qIHRoZSB2YXJpYWJsZSB0eXBlICovCisJYm9vbAkJaWZfbm90X2V4aXN0czsJ LyoganVzdCBkbyBub3RoaW5nIGlmIGl0IGFscmVhZHkgZXhpc3RzPyAqLworfSBDcmVhdGVTY2hl bWFWYXJTdG10OworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJQ3JlYXRlIHtBZ2dy ZWdhdGV8T3BlcmF0b3J8VHlwZX0gU3RhdGVtZW50CiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkBAIC0zMjIwLDcgKzMyNDEsOCBAQCB0eXBlZGVmIGVudW0gRGlzY2FyZE1vZGUKIAlESVNDQVJE X0FMTCwKIAlESVNDQVJEX1BMQU5TLAogCURJU0NBUkRfU0VRVUVOQ0VTLAotCURJU0NBUkRfVEVN UAorCURJU0NBUkRfVEVNUCwKKwlESVNDQVJEX1ZBUklBQkxFUwogfSBEaXNjYXJkTW9kZTsKIAog dHlwZWRlZiBzdHJ1Y3QgRGlzY2FyZFN0bXQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggMWI0YjBk NzVhZi4uYjM2NjQ3MTk0MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTIyOSwxMyArMjI5LDE3 IEBAIHR5cGVkZWYgc3RydWN0IENvbnN0CiAgKgkJCQlvZiB0aGUgYHBhcmFtaWQnIGZpZWxkIGNv bnRhaW4gdGhlIFN1YkxpbmsncyBzdWJMaW5rSWQsIGFuZAogICoJCQkJdGhlIGxvdy1vcmRlciAx NiBiaXRzIGNvbnRhaW4gdGhlIGNvbHVtbiBudW1iZXIuICAoVGhpcyB0eXBlCiAgKgkJCQlvZiBQ YXJhbSBpcyBhbHNvIGNvbnZlcnRlZCB0byBQQVJBTV9FWEVDIGR1cmluZyBwbGFubmluZy4pCisg KgorICoJCVBBUkFNX1NDSEVNQV9WQVJJQUJMRTogIFRoZSBwYXJhbWV0ZXIgaXMgYSBhY2Nlc3Mg dG8gc2NoZW1hIHZhcmlhYmxlCisgKgkJCQlwYXJhbWlkIGhvbGRzIHZhcmlkLgogICovCiB0eXBl ZGVmIGVudW0gUGFyYW1LaW5kCiB7CiAJUEFSQU1fRVhURVJOLAogCVBBUkFNX0VYRUMsCiAJUEFS QU1fU1VCTElOSywKLQlQQVJBTV9NVUxUSUVYUFIKKwlQQVJBTV9NVUxUSUVYUFIsCisJUEFSQU1f U0NIRU1BX1ZBUklBQkxFCiB9IFBhcmFtS2luZDsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYW0KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaAppbmRleCBjZjMyMTk3YmMzLi5kYjExZTA4N2MxIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o CkBAIC0yMzAsNiArMjMwLDcgQEAgUEdfS0VZV09SRCgibGVhZGluZyIsIExFQURJTkcsIFJFU0VS VkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsZWFrcHJvb2YiLCBMRUFLUFJPT0YsIFVOUkVTRVJW RURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxlYXN0IiwgTEVBU1QsIENPTF9OQU1FX0tFWVdPUkQp CiBQR19LRVlXT1JEKCJsZWZ0IiwgTEVGVCwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkKK1BHX0tF WVdPUkQoImxldCIsIExFVCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgibGV2ZWwi LCBMRVZFTCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgibGlrZSIsIExJS0UsIFRZ UEVfRlVOQ19OQU1FX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsaW1pdCIsIExJTUlULCBSRVNFUlZF RF9LRVlXT1JEKQpAQCAtNDMzLDYgKzQzNCw4IEBAIFBHX0tFWVdPUkQoInZhbGlkYXRvciIsIFZB TElEQVRPUiwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmFsdWUiLCBWQUxVRV9Q LCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YWx1ZXMiLCBWQUxVRVMsIENPTF9O QU1FX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YXJjaGFyIiwgVkFSQ0hBUiwgQ09MX05BTUVfS0VZ V09SRCkKK1BHX0tFWVdPUkQoInZhcmlhYmxlIiwgVkFSSUFCTEUsIFVOUkVTRVJWRURfS0VZV09S RCkKK1BHX0tFWVdPUkQoInZhcmlhYmxlcyIsIFZBUklBQkxFUywgVU5SRVNFUlZFRF9LRVlXT1JE KQogUEdfS0VZV09SRCgidmFyaWFkaWMiLCBWQVJJQURJQywgUkVTRVJWRURfS0VZV09SRCkKIFBH X0tFWVdPUkQoInZhcnlpbmciLCBWQVJZSU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlX T1JEKCJ2ZXJib3NlIiwgVkVSQk9TRSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2Vfbm9kZS5oCmluZGV4IDJlMDc5MmQ2MGIuLjJlN2M1NGE5NzAgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX25vZGUuaApAQCAtMTM1LDYgKzEzNSw4IEBAIHR5cGVkZWYgTm9kZSAqKCpDb2VyY2VQYXJh bUhvb2spIChQYXJzZVN0YXRlICpwc3RhdGUsIFBhcmFtICpwYXJhbSwKICAqIHRvIHByb2Nlc3Mg dGhlbSBsaWtlIFVQREFURS4gIChOb3RlIHRoaXMgY2FuIGNoYW5nZSBpbnRyYS1zdGF0ZW1lbnQs IGZvcgogICogY2FzZXMgbGlrZSBJTlNFUlQgT04gQ09ORkxJQ1QgVVBEQVRFLikKICAqCisgKiBw X2lzX2xldDogdHJ1ZSB0byBwcm9jZXNzIGFzc2lnbm1lbnQgZXhwcmVzc2lvbnMgbGlrZSBMRVQu CisgKgogICogcF93aW5kb3dkZWZzOiBsaXN0IG9mIFdpbmRvd0RlZnMgcmVwcmVzZW50aW5nIFdJ TkRPVyBhbmQgT1ZFUiBjbGF1c2VzLgogICogV2UgY29sbGVjdCB0aGVzZSB3aGlsZSB0cmFuc2Zv cm1pbmcgZXhwcmVzc2lvbnMgYW5kIHRoZW4gdHJhbnNmb3JtIHRoZW0KICAqIGFmdGVyd2FyZHMg KHNvIHRoYXQgYW55IHJlc2p1bmsgdGxpc3QgaXRlbXMgbmVlZGVkIGZvciB0aGUgc29ydC9ncm91 cApAQCAtMTg0LDYgKzE4Niw3IEBAIHN0cnVjdCBQYXJzZVN0YXRlCiAJUmVsYXRpb24JcF90YXJn ZXRfcmVsYXRpb247CS8qIElOU0VSVC9VUERBVEUvREVMRVRFIHRhcmdldCByZWwgKi8KIAlSYW5n ZVRibEVudHJ5ICpwX3RhcmdldF9yYW5nZXRibGVudHJ5OwkvKiB0YXJnZXQgcmVsJ3MgUlRFICov CiAJYm9vbAkJcF9pc19pbnNlcnQ7CS8qIHByb2Nlc3MgYXNzaWdubWVudCBsaWtlIElOU0VSVCBu b3QgVVBEQVRFICovCisJYm9vbAkJcF9pc19sZXQ7CQkvKiBwcm9jZXNzIGFzc2lnbm1lbnQgTEVU IHN0bXQgKi8KIAlMaXN0CSAgICpwX3dpbmRvd2RlZnM7CS8qIHJhdyByZXByZXNlbnRhdGlvbnMg b2Ygd2luZG93IGNsYXVzZXMgKi8KIAlQYXJzZUV4cHJLaW5kIHBfZXhwcl9raW5kOwkvKiB3aGF0 IGtpbmQgb2YgZXhwcmVzc2lvbiB3ZSdyZSBwYXJzaW5nICovCiAJaW50CQkJcF9uZXh0X3Jlc25v OwkvKiBuZXh0IHRhcmdldGxpc3QgcmVzbm8gdG8gYXNzaWduICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2VfcmVsYXRpb24uaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV9yZWxhdGlvbi5oCmluZGV4IGI5NzkyYWNkYWUuLjc2MGFhZWQ5YTggMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNl ci9wYXJzZV9yZWxhdGlvbi5oCkBAIC0xMjksNCArMTI5LDYgQEAgZXh0ZXJuIE9pZAlhdHRudW1U eXBlSWQoUmVsYXRpb24gcmQsIGludCBhdHRpZCk7CiBleHRlcm4gT2lkCWF0dG51bUNvbGxhdGlv bklkKFJlbGF0aW9uIHJkLCBpbnQgYXR0aWQpOwogZXh0ZXJuIGJvb2wgaXNRdWVyeVVzaW5nVGVt cFJlbGF0aW9uKFF1ZXJ5ICpxdWVyeSk7CiAKK2V4dGVybiBOb2RlICp0b1NjaGVtYVZhcmlhYmxl KFBhcnNlU3RhdGUgKnBzdGF0ZSwgY2hhciAqbnNwbmFtZSwgY2hhciAqdmFybmFtZSwgaW50IGxv Y2F0aW9uKTsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlNFX1JFTEFUSU9OX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKaW5k ZXggZjRkNGJlOGQwZC4uZDA3MzdhOWU0YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv YWNsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKQEAgLTE2Niw2ICsxNjYsNyBAQCB0 eXBlZGVmIEFycmF5VHlwZSBBY2w7CiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1NDSEVNQQkJKEFD TF9VU0FHRXxBQ0xfQ1JFQVRFKQogI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19UQUJMRVNQQUNFCShB Q0xfQ1JFQVRFKQogI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19UWVBFCQkJKEFDTF9VU0FHRSkKKyNk ZWZpbmUgQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEUJCShBQ0xfU0VMRUNUfEFDTF9VUERBVEUpCiAK IC8qIG9wZXJhdGlvbiBjb2RlcyBmb3IgcGdfKl9hY2xtYXNrICovCiB0eXBlZGVmIGVudW0KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NjaGVtYV92YXJpYWJsZXMub3V0Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmFkNzAwYzE1ZDgKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NjaGVtYV92YXJpYWJsZXMub3V0CkBAIC0w LDAgKzEsMjM2IEBACitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnRlZ2VyOworQ1JFQVRFIFRF TVAgVkFSSUFCTEUgdmFyMiBBUyB0ZXh0OworLS0gc2hvdWxkIHRvIGZhaWwKK0NSRUFURSBWQVJJ QUJMRSB2YXIyIEFTIHBnX2NsYXNzOworRVJST1I6ICBDb21wb3NpdGUgdHlwZXMgYXJlIG5vdCBh bGxvd2VkIGFzIHZhcmlhYmxlIHR5cGUuCitEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7CistLSBm dW5jdGlvbmFsIGludGVyZmFjZSwgYXR0ZW50aW9uIHR5cG1vZCBpcyBub3Qgc3RvcmVkCitDUkVB VEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljKDEwLDEpOworU0VMRUNUIHNldF9zY2hlbWFfdmFy aWFibGUoJ3ZhcjEnLCAzMzMpOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEn LCBudWxsOjpudW1lcmljKTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgIDMzMworKDEgcm93KQorCitTRUxFQ1Qgc2V0X3NjaGVt YV92YXJpYWJsZSgndmFyMScsIDMzMzo6aW50ZWdlcik7Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92 YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworIGdldF9zY2hlbWFfdmFyaWFibGUgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgMzMzCisoMSByb3cpCisKK1NF TEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzMzMy41NSc6OnRleHQpOworIHNldF9z Y2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VM RUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKyBnZXRfc2No ZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDMzMy41 NQorKDEgcm93KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Omlu dCk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAzMzQKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3Zh cjEnLCBudWxsOjp0ZXh0KTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgMzMzLjU1CisoMSByb3cpCisKKy0tIGFjY2VzcyByaWdodHMgdGVzdAorQ1JFQVRF IFJPTEUgdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91 bGQgdG8gZmFpbAorU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAnMTAwMCc6OnRl eHQpOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHZhcjEK K1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7CitFUlJP UjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMQorU0VUIFJPTEUg VE8gREVGQVVMVDsKK0dSQU5UIFNFTEVDVCBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0X3Jv bGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVD VCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzEwMDAnOjp0ZXh0KTsKK0VSUk9SOiAgcGVy bWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCistLSBzaG91bGQgdG8gd29y aworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKyBn ZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg IDMzMy41NQorKDEgcm93KQorCitTRVQgUk9MRSBUTyBERUZBVUxUOworR1JBTlQgVVBEQVRFIE9O IFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3Jv bGU7CistLSBzaG91bGQgdG8gd29yaworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEn LCAnMTAwMCc6OnRleHQpOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBu dWxsOjpudW1lcmljKTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgMTAwMAorKDEgcm93KQorCitTRVQgUk9MRSBUTyBERUZBVUxU OworUkVWT0tFIEFMTCBPTiBWQVJJQUJMRSB2YXIxIEZST00gdmFyX3Rlc3Rfcm9sZTsKK0NSRUFU RSBWQVJJQUJMRSB2YXIgQVMgaW50ZWdlcjsKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCdw dWJsaWMudmFyJywgMTIzNCk7Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgcHVibGljLnZhcjsKKyB2YXIgIAorLS0tLS0t CisgMTIzNAorKDEgcm93KQorCitETyAkJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICdwdWJsaWMu dmFyIGlzID0gJScsIHB1YmxpYy52YXI7CitFTkQ7CiskJDsKK05PVElDRTogIHB1YmxpYy52YXIg aXMgPSAxMjM0CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBzZWN1cmVfdmFyKCkKK1JFVFVS TlMgaW50IEFTICQkCisgIFNFTEVDVCBwdWJsaWMudmFyOworJCQgTEFOR1VBR0Ugc3FsIFNFQ1VS SVRZIERFRklORVI7CitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworIHNlY3VyZV92YXIgCistLS0tLS0t LS0tLS0KKyAgICAgICAxMjM0CisoMSByb3cpCisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7 CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHB1YmxpYy52YXI7CitFUlJPUjogIHBlcm1pc3Np b24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyCistLSBzaG91bGQgdG8gd29yazsKK1NF TEVDVCBzZWN1cmVfdmFyKCk7Cisgc2VjdXJlX3ZhciAKKy0tLS0tLS0tLS0tLQorICAgICAgIDEy MzQKKygxIHJvdykKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApIGcodikgV0hFUkUg diA9IHZhcjsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0 aW9uIFNjYW4gb24gcGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMgZworICAgT3V0cHV0OiB2Cisg ICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKQorICAgRmlsdGVyOiAoZy52 ID0gdmFyKQorKDQgcm93cykKKworQ1JFQVRFIFZJRVcgc2NoZW1hX3Zhcl92aWV3IEFTIFNFTEVD VCB2YXI7CitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKyB2YXIgIAorLS0tLS0tCisg MTIzNAorKDEgcm93KQorCitcYyAtCistLSBzaG91bGQgdG8gd29yayBzdGlsbCwgYnV0IHZhciB3 aWxsIGJlIGVtcHR5CitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKyB2YXIgCistLS0t LQorICAgIAorKDEgcm93KQorCitMRVQgdmFyMSA9IHBpKCk7CitTRUxFQ1QgdmFyMTsKKyAgICAg ICB2YXIxICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgMy4xNDE1OTI2NTM1ODk3OQorKDEg cm93KQorCistLSB3ZSBjYW4gbG9vayBvbiBleGVjdXRpb24gcGxhbgorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBMRVQgdmFyMSA9IHBpKCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExldCBvbiBwdWJsaWMudmFyMQorICAgLT4g IFJlc3VsdAorICAgICAgICAgT3V0cHV0OiAnMy4xNDE1OTI2NTM1ODk3OSc6OmRvdWJsZSBwcmVj aXNpb24KKygzIHJvd3MpCisKKy0tIExFVCBjYW4gYmUgcHJlcGFyZWQKK1BSRVBBUkUgdmFyX3Bw KGludCwgbnVtZXJpYykgQVMgTEVUIHZhcjEgPSAkMSArICQyOworRVhFQ1VURSB2YXJfcHAoMTAw LCAxLjIzNDU2KTsKK1NFTEVDVCB2YXIxOworICAgdmFyMSAgICAKKy0tLS0tLS0tLS0tCisgMTAx LjIzNDU2CisoMSByb3cpCisKK0NSRUFURSBWQVJJQUJMRSB2YXIzIEFTIGludDsKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitSRVRVUk5TIGludCBBUyAkJAorQkVHSU4KKyAg TEVUIHB1YmxpYy52YXIzID0gQ09BTEVTQ0UocHVibGljLnZhcjMgKyAkMSwgJDEpOworICBSRVRV Uk4gdmFyMzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgaW5jKDEpOworIGlu YyAKKy0tLS0tCisgICAxCisoMSByb3cpCisKK1NFTEVDVCBpbmMoMSk7CisgaW5jIAorLS0tLS0K KyAgIDIKKygxIHJvdykKKworU0VMRUNUIGluYygxKTsKKyBpbmMgCistLS0tLQorICAgMworKDEg cm93KQorCitTRUxFQ1QgaW5jKDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApOworIGluYyAK Ky0tLS0tCisgICA0CisgICA1CisgICA2CisgICA3CisgICA4CisgICA5CisgIDEwCisgIDExCisg IDEyCisgIDEzCisoMTAgcm93cykKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNo b3VsZCB0byBmYWlsCitMRVQgdmFyMyA9IDA7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZv ciBzY2hlbWEgdmFyaWFibGUgdmFyMworU0VUIFJPTEUgVE8gREVGQVVMVDsKK0RST1AgVklFVyBz Y2hlbWFfdmFyX3ZpZXc7CitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKK0RST1AgVkFSSUFCTEUg dmFyIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FERTsKK0RST1AgVkFSSUFCTEUg dmFyMyBDQVNDQURFOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggYWQ5NDM0ZmI4 Ny4uMzNmZTdlZTQ3NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMTEsNyAr MTExLDcgQEAgdGVzdDogc2VsZWN0X3ZpZXdzIHBvcnRhbHNfcDIgZm9yZWlnbl9rZXkgY2x1c3Rl ciBkZXBlbmRlbmN5IGd1YyBiaXRtYXBvcHMgY29tYm8KICMgTkI6IHRlbXAuc3FsIGRvZXMgYSBy ZWNvbm5lY3Qgd2hpY2ggdHJhbnNpZW50bHkgdXNlcyAyIGNvbm5lY3Rpb25zLAogIyBzbyBrZWVw IHRoaXMgcGFyYWxsZWwgZ3JvdXAgdG8gYXQgbW9zdCAxOSB0ZXN0cwogIyAtLS0tLS0tLS0tCi10 ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNz IHByZXBhcmUgd2l0aG91dF9vaWQgY29udmVyc2lvbiB0cnVuY2F0ZSBhbHRlcl90YWJsZSBzZXF1 ZW5jZSBwb2x5bW9ycGhpc20gcm93dHlwZXMgcmV0dXJuaW5nIGxhcmdlb2JqZWN0IHdpdGggeG1s Cit0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1 bmNzIHByZXBhcmUgd2l0aG91dF9vaWQgY29udmVyc2lvbiB0cnVuY2F0ZSBhbHRlcl90YWJsZSBz ZXF1ZW5jZSBwb2x5bW9ycGhpc20gcm93dHlwZXMgcmV0dXJuaW5nIGxhcmdlb2JqZWN0IHdpdGgg eG1sIHNjaGVtYV92YXJpYWJsZXMKIAogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2Yg cGFyYWxsZWwgdGVzdHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVk dWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUKaW5kZXggMjdjZDQ5ODQ1ZS4u MjJjNGNhYzdjZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUKQEAgLTE4NywzICsxODcsNCBA QCB0ZXN0OiBoYXNoX3BhcnQKIHRlc3Q6IGluZGV4aW5nCiB0ZXN0OiBldmVudF90cmlnZ2VyCiB0 ZXN0OiBzdGF0cwordGVzdDogc2NoZW1hX3ZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc2NoZW1hX3ZhcmlhYmxlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9z Y2hlbWFfdmFyaWFibGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li45ZWU5ZTE3NGY5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2No ZW1hX3ZhcmlhYmxlcy5zcWwKQEAgLTAsMCArMSwxMzkgQEAKK0NSRUFURSBWQVJJQUJMRSB2YXIx IEFTIGludGVnZXI7CitDUkVBVEUgVEVNUCBWQVJJQUJMRSB2YXIyIEFTIHRleHQ7CisKKy0tIHNo b3VsZCB0byBmYWlsCitDUkVBVEUgVkFSSUFCTEUgdmFyMiBBUyBwZ19jbGFzczsKKworRFJPUCBW QVJJQUJMRSB2YXIxLCB2YXIyOworCistLSBmdW5jdGlvbmFsIGludGVyZmFjZSwgYXR0ZW50aW9u IHR5cG1vZCBpcyBub3Qgc3RvcmVkCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljKDEw LDEpOworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAzMzMpOworU0VMRUNUIGdl dF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKworU0VMRUNUIHNldF9z Y2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAzMzM6OmludGVnZXIpOworU0VMRUNUIGdldF9zY2hlbWFf dmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKworU0VMRUNUIHNldF9zY2hlbWFfdmFy aWFibGUoJ3ZhcjEnLCAnMzMzLjU1Jzo6dGV4dCk7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJs ZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3Zh cjEnLCBudWxsOjppbnQpOworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxs Ojp0ZXh0KTsKKworLS0gYWNjZXNzIHJpZ2h0cyB0ZXN0CisKK0NSRUFURSBST0xFIHZhcl90ZXN0 X3JvbGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCB0byBmYWls CitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICcxMDAwJzo6dGV4dCk7CitTRUxF Q1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworCitTRVQgUk9M RSBUTyBERUZBVUxUOworCitHUkFOVCBTRUxFQ1QgT04gVkFSSUFCTEUgdmFyMSBUTyB2YXJfdGVz dF9yb2xlOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRvIGZhaWwK K1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzEwMDAnOjp0ZXh0KTsKKy0tIHNo b3VsZCB0byB3b3JrCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51 bWVyaWMpOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitHUkFOVCBVUERBVEUgT04gVkFSSUFC TEUgdmFyMSBUTyB2YXJfdGVzdF9yb2xlOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOwor CistLSBzaG91bGQgdG8gd29yaworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAn MTAwMCc6OnRleHQpOworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpu dW1lcmljKTsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworUkVWT0tFIEFMTCBPTiBWQVJJQUJM RSB2YXIxIEZST00gdmFyX3Rlc3Rfcm9sZTsKKworQ1JFQVRFIFZBUklBQkxFIHZhciBBUyBpbnRl Z2VyOworCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgncHVibGljLnZhcicsIDEyMzQpOwor CitTRUxFQ1QgcHVibGljLnZhcjsKKworRE8gJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAncHVi bGljLnZhciBpcyA9ICUnLCBwdWJsaWMudmFyOworRU5EOworJCQ7CisKK0NSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIHNlY3VyZV92YXIoKQorUkVUVVJOUyBpbnQgQVMgJCQKKyAgU0VMRUNUIHB1 YmxpYy52YXI7CiskJCBMQU5HVUFHRSBzcWwgU0VDVVJJVFkgREVGSU5FUjsKKworU0VMRUNUIHNl Y3VyZV92YXIoKTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIHRv IGZhaWwKK1NFTEVDVCBwdWJsaWMudmFyOworCistLSBzaG91bGQgdG8gd29yazsKK1NFTEVDVCBz ZWN1cmVfdmFyKCk7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApIGcodikgV0hF UkUgdiA9IHZhcjsKKworQ1JFQVRFIFZJRVcgc2NoZW1hX3Zhcl92aWV3IEFTIFNFTEVDVCB2YXI7 CisKK1NFTEVDVCAqIEZST00gc2NoZW1hX3Zhcl92aWV3OworCitcYyAtCisKKy0tIHNob3VsZCB0 byB3b3JrIHN0aWxsLCBidXQgdmFyIHdpbGwgYmUgZW1wdHkKK1NFTEVDVCAqIEZST00gc2NoZW1h X3Zhcl92aWV3OworCitMRVQgdmFyMSA9IHBpKCk7CisKK1NFTEVDVCB2YXIxOworCistLSB3ZSBj YW4gbG9vayBvbiBleGVjdXRpb24gcGxhbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBM RVQgdmFyMSA9IHBpKCk7CisKKy0tIExFVCBjYW4gYmUgcHJlcGFyZWQKK1BSRVBBUkUgdmFyX3Bw KGludCwgbnVtZXJpYykgQVMgTEVUIHZhcjEgPSAkMSArICQyOworCitFWEVDVVRFIHZhcl9wcCgx MDAsIDEuMjM0NTYpOworCitTRUxFQ1QgdmFyMTsKKworQ1JFQVRFIFZBUklBQkxFIHZhcjMgQVMg aW50OworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBpbmMoaW50KQorUkVUVVJOUyBpbnQg QVMgJCQKK0JFR0lOCisgIExFVCBwdWJsaWMudmFyMyA9IENPQUxFU0NFKHB1YmxpYy52YXIzICsg JDEsICQxKTsKKyAgUkVUVVJOIHZhcjM7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitT RUxFQ1QgaW5jKDEpOworU0VMRUNUIGluYygxKTsKK1NFTEVDVCBpbmMoMSk7CisKK1NFTEVDVCBp bmMoMSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCk7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0 X3JvbGU7CisKKy0tIHNob3VsZCB0byBmYWlsCitMRVQgdmFyMyA9IDA7CisKK1NFVCBST0xFIFRP IERFRkFVTFQ7CisKK0RST1AgVklFVyBzY2hlbWFfdmFyX3ZpZXc7CisKK0RST1AgUk9MRSB2YXJf dGVzdF9yb2xlOworCitEUk9QIFZBUklBQkxFIHZhciBDQVNDQURFOworRFJPUCBWQVJJQUJMRSB2 YXIxIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZhcjMgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKaW5kZXggZDQ3NjVjZTNiMC4uYjA0MDRjMjFhNSAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTQyMyw2ICs0MjMsNyBAQCBDcmVhdGVSZXBsaWNhdGlvblNsb3RDbWQKIENy ZWF0ZVJvbGVTdG10CiBDcmVhdGVTY2hlbWFTdG10CiBDcmVhdGVTY2hlbWFTdG10Q29udGV4dAor Q3JlYXRlU2NoZW1hVmFyU3RtdAogQ3JlYXRlU2VxU3RtdAogQ3JlYXRlU3RhdHNTdG10CiBDcmVh dGVTdG10Cg== --001a113c35c2152e1c05649980e8--