Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t6AJj-00B5ka-43 for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Oct 2024 15:09:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1t6AJh-009jTk-FG for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Oct 2024 15:09:01 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t6AJg-009jNJ-HB for pgsql-hackers@lists.postgresql.org; Wed, 30 Oct 2024 15:09:01 +0000 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1t6AJb-003deq-Sh for pgsql-hackers@postgresql.org; Wed, 30 Oct 2024 15:08:59 +0000 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-20e6981ca77so71852535ad.2 for ; Wed, 30 Oct 2024 08:08:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1730300934; x=1730905734; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=Ano5yjhgFjRRrKSIP3i8wwYAZNNyLClCqdrk2+XDxWQ=; b=v16F6W/3FAqBHGxTlgX+5JPc0mt03wE5LrefMFu4RMjWVxR5rZeh0dAMw6mTK7P+Bx NmJA+BeOLym8mVEf81Ezic7lpe6TJ3dLGnzmwB9nAzdzlvLa29UJyBQJYHoFWak5Xoua SSBDvyfTMAbgj4s5lnF1S6Xrm/bJxSFVuxjzitn7eVSSo4Q3jXprNL0QEy1vDa6ULWJ3 EpCl9XzNBSKKZA91HEmpTecIdNPSX8t5RQfAvdKetSUQcEQNK0O+xP4mEQUX/OAteLfm l0flQHCOkyJlqgNK3YPgrjygiAf06dOWEU61ZDAYR/LJPLH2uPUT3IkLYyimAPV4j14K 7S2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730300934; x=1730905734; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Ano5yjhgFjRRrKSIP3i8wwYAZNNyLClCqdrk2+XDxWQ=; b=OkofrshABADPGpeeTR7QYTl1gEoHol2UD6byyJ8vwb16S+H0inaE5xFvn2TaCtAX2l Btcpw963lzlo1fY15RZDZPiFLvq/PFOuHdC58PYUPg+E+gt6n2LIS2Ju+mgZow2WH7dH 4zHZAiSDa/w26ncTTXea0K4yd/b/Xf+C60/Kz4u0bDQMybr4GE1GTT/sAxKrgUvd0Wvz 1ajUileTgHbQGaB2rJTf4Nys4wCM1H7Gy4LuVgndVLjnaREkirtHOpdjbjGxYTfJcIEa B/jXZgH6KyPNHdnJeX8c0fRq/1fKvD9p7DM/PSsdUb/NCH0IOT6sEKs5sdqifVuwkGMH 7z4w== X-Forwarded-Encrypted: i=1; AJvYcCVm6mU43IJgxEbC6KZYaOEjG8I98S+2TiLqktVLKIGiNBZEwL6NxPPCFcrYwPjpPHiEpBJKS/6eYNTm/cEX@postgresql.org X-Gm-Message-State: AOJu0YzCnddodoXWKmKCahrE5URO+6WsNHzt5GVxXodAC3RxgaB+/1yF mHfq4Kd9dR4eBsMnAcYdkM4Km//K1Qut33eFO5XwFg2KioNzqhvEHUDYZs9j/Q== X-Google-Smtp-Source: AGHT+IHz9uiSLWFi6QN7gLM5ErNzWE4XX3K2ORqO3JQnn18PsAltL7W5MBu6NI/dlWAxvmntWF8RiQ== X-Received: by 2002:a17:90a:a004:b0:2e2:a661:596a with SMTP id 98e67ed59e1d1-2e8f105e840mr19003361a91.13.1730300934569; Wed, 30 Oct 2024 08:08:54 -0700 (PDT) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e9201b65f7sm2136901a91.0.2024.10.30.08.08.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Oct 2024 08:08:54 -0700 (PDT) Message-ID: <34fd5885b8245d1014f4426ea22af61229d42e3e.camel@j-davis.com> Subject: Re: [17] CREATE SUBSCRIPTION ... SERVER From: Jeff Davis To: Ashutosh Bapat Cc: Bharath Rupireddy , Joe Conway , pgsql-hackers@postgresql.org Date: Wed, 30 Oct 2024 08:08:52 -0700 In-Reply-To: References: <149ff9264db27cdf724b65709fbbaee4bf316835.camel@j-davis.com> <830a2bc6cbbb2e6e01c6c0d9f31f320822e10603.camel@j-davis.com> <433d0845248e86c0317d9d396926182cfe157340.camel@j-davis.com> <05ae37abb207cd6bf6b126780024692d91402b0b.camel@j-davis.com> <93392ffa941ab0d436e19e0ab5d04d0e42c02d3f.camel@j-davis.com> <26be917cb07b6aa3ef5dd15f6b59d1b375ece6e8.camel@j-davis.com> <55201bd916e748acfc754c8f95880dae8e4e5ed0.camel@j-davis.com> <2a89b14a2b1622bffb8b137ca1f9ab7866f2d2b9.camel@j-davis.com> <61831790a0a937038f78ce09f8dd4cef7de7456a.camel@j-davis.com> <0910b47040406c1d24ec0150dafb5bae6b910ed7.camel@j-davis.com> <7338f22c4534322a08ab6ce9f879e2e308eb5e5d.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-BkSJr5vpL591b7nREsOo" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-BkSJr5vpL591b7nREsOo Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 2024-03-08 at 00:20 -0800, Jeff Davis wrote: > Implemented in v11, attached. Rebased, v12 attached. Regards, Jeff Davis --=-BkSJr5vpL591b7nREsOo Content-Disposition: attachment; filename="v12-0001-CREATE-SUSBCRIPTION-.-SERVER.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="v12-0001-CREATE-SUSBCRIPTION-.-SERVER.patch"; charset="UTF-8" RnJvbSA1YzJhOGY1Y2I4NjViZWNkNzBiMDgzNzlkOWZjNzI5NDZiZTlhMzJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDIgSmFuIDIwMjQgMTM6NDI6NDggLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMl0gQ1JFQVRF IFNVU0JDUklQVElPTiAuLi4gU0VSVkVSLgoKQWxsb3cgc3BlY2lmeWluZyBhIGZvcmVpZ24gc2Vy dmVyIGZvciBDUkVBVEUgU1VCU0NSSVBUSU9OLCByYXRoZXIgdGhhbgphIHJhdyBjb25uZWN0aW9u IHN0cmluZyB3aXRoIENPTk5FQ1RJT04uCgpVc2luZyBhIGZvcmVpZ24gc2VydmVyIGFzIGEgbGF5 ZXIgb2YgaW5kaXJlY3Rpb24gaW1wcm92ZXMgbWFuYWdlbWVudApvZiBtdWx0aXBsZSBzdWJzY3Jp cHRpb25zIHRvIHRoZSBzYW1lIHNlcnZlci4gSXQgYWxzbyBwcm92aWRlcwppbnRlZ3JhdGlvbiB3 aXRoIHVzZXIgbWFwcGluZ3MgaW4gY2FzZSBkaWZmZXJlbnQgc3Vic2NyaXB0aW9ucyBoYXZlCmRp ZmZlcmVudCBvd25lcnMgb3IgYSBzdWJzY3JpcHRpb24gY2hhbmdlcyBvd25lcnMuCgpEaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzYxODMxNzkwYTBhOTM3MDM4Zjc4Y2UwOWY4ZGQ0Y2Vm N2RlNzQ1NmEuY2FtZWxAai1kYXZpcy5jb20KUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJhcGF0Ci0t LQogY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAyICsK IGNvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8ICA3MyArKysr KysrKwogLi4uL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgICA4 ICsKIGNvbnRyaWIvcG9zdGdyZXNfZmR3L21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgNSAr CiAuLi4vcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy0tMS4xLS0xLjIuc3FsICAgfCAgIDggKwog Y29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgICAgIHwgICA3ICsKIGNv bnRyaWIvcG9zdGdyZXNfZmR3L3QvMDEwX3N1YnNjcmlwdGlvbi5wbCAgICB8ICA3MSArKysrKysr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCAgICAgIHwgIDE4ICst CiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAgMTEgKy0K IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICAzOCArKyst CiBzcmMvYmFja2VuZC9jb21tYW5kcy9mb3JlaWduY21kcy5jICAgICAgICAgICAgfCAgNTggKysr KystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAxNjgg KysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9mb3JlaWduL2ZvcmVpZ24uYyAgICAgICAg ICAgICAgICAgfCAgNjYgKysrKysrKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgICAgICAgIHwgIDIyICsrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYyAgICAgIHwgIDE2ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAg ICAgICAgICAgICAgfCAgMzYgKysrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAg ICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19mb3JlaWduX2RhdGFf d3JhcHBlci5oIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgg ICAgICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvZm9yZWlnbi9mb3JlaWduLmggICAgICAgICAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAg ICAgICB8ICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dCAgICAg ICAgfCAgIDEgKwogMjMgZmlsZXMgY2hhbmdlZCwgNTkxIGluc2VydGlvbnMoKyksIDM2IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcG9zdGdyZXNfZmR3L3QvMDEwX3N1 YnNjcmlwdGlvbi5wbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L01ha2VmaWxl IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUKaW5kZXggODhmZGNlNDBkNi4uYTEwMTQx OGQ2ZSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUKKysrIGIvY29u dHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUKQEAgLTE4LDYgKzE4LDggQEAgREFUQSA9IHBvc3Rn cmVzX2Zkdy0tMS4wLnNxbCBwb3N0Z3Jlc19mZHctLTEuMC0tMS4xLnNxbCBwb3N0Z3Jlc19mZHct LTEuMS0tMS4yLnMKIAogUkVHUkVTUyA9IHBvc3RncmVzX2ZkdyBxdWVyeV9jYW5jZWwKIAorVEFQ X1RFU1RTID0gMQorCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmlnCiBQR1hT IDo9ICQoc2hlbGwgJChQR19DT05GSUcpIC0tcGd4cykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9z dGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24u YwppbmRleCAyMzI2ZjM5MWQzLi40OGM3N2E4ZGUzIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3Rn cmVzX2Zkdy9jb25uZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlv bi5jCkBAIC0xMjMsNiArMTIzLDcgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShwb3N0Z3Jlc19mZHdf Z2V0X2Nvbm5lY3Rpb25zKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEocG9zdGdyZXNfZmR3X2dldF9j b25uZWN0aW9uc18xXzIpOwogUEdfRlVOQ1RJT05fSU5GT19WMShwb3N0Z3Jlc19mZHdfZGlzY29u bmVjdCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBvc3RncmVzX2Zkd19kaXNjb25uZWN0X2FsbCk7 CitQR19GVU5DVElPTl9JTkZPX1YxKHBvc3RncmVzX2Zkd19jb25uZWN0aW9uKTsKIAogLyogcHJv dG90eXBlcyBvZiBwcml2YXRlIGZ1bmN0aW9ucyAqLwogc3RhdGljIHZvaWQgbWFrZV9uZXdfY29u bmVjdGlvbihDb25uQ2FjaGVFbnRyeSAqZW50cnksIFVzZXJNYXBwaW5nICp1c2VyKTsKQEAgLTIx NjEsNiArMjE2Miw3OCBAQCBwb3N0Z3Jlc19mZHdfZ2V0X2Nvbm5lY3Rpb25zX2ludGVybmFsKEZ1 bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCX0KIH0KIAorLyoKKyAqIFZhbHVlcyBpbiBjb25uZWN0 aW9uIHN0cmluZ3MgbXVzdCBiZSBlbmNsb3NlZCBpbiBzaW5nbGUgcXVvdGVzLiBTaW5nbGUKKyAq IHF1b3RlcyBhbmQgYmFja3NsYXNoZXMgbXVzdCBiZSBlc2NhcGVkIHdpdGggYmFja3NsYXNoLiBO QjogdGhlc2UgcnVsZXMgYXJlCisgKiBkaWZmZXJlbnQgZnJvbSB0aGUgcnVsZXMgZm9yIGVzY2Fw aW5nIGEgU1FMIGxpdGVyYWwuCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRFc2NhcGVkVmFsdWUo U3RyaW5nSW5mbyBzdHIsIGNvbnN0IGNoYXIgKnZhbCkKK3sKKwlhcHBlbmRTdHJpbmdJbmZvQ2hh cihzdHIsICdcJycpOworCWZvciAoaW50IGkgPSAwOyB2YWxbaV0gIT0gJ1wwJzsgaSsrKQorCXsK KwkJaWYgKHZhbFtpXSA9PSAnXFwnIHx8IHZhbFtpXSA9PSAnXCcnKQorCQkJYXBwZW5kU3RyaW5n SW5mb0NoYXIoc3RyLCAnXFwnKTsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoc3RyLCB2YWxbaV0p OworCX0KKwlhcHBlbmRTdHJpbmdJbmZvQ2hhcihzdHIsICdcJycpOworfQorCitEYXR1bQorcG9z dGdyZXNfZmR3X2Nvbm5lY3Rpb24oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQl1c2VyaWQg PSBQR19HRVRBUkdfT0lEKDApOworCU9pZAkJCXNlcnZlcmlkID0gUEdfR0VUQVJHX09JRCgxKTsK KwlGb3JlaWduU2VydmVyICpzZXJ2ZXIgPSBHZXRGb3JlaWduU2VydmVyKHNlcnZlcmlkKTsKKwlV c2VyTWFwcGluZyAqdXNlciA9IEdldFVzZXJNYXBwaW5nKHVzZXJpZCwgc2VydmVyaWQpOworCVN0 cmluZ0luZm9EYXRhIHN0cjsKKwljb25zdCBjaGFyICoqa2V5d29yZHM7CisJY29uc3QgY2hhciAq KnZhbHVlczsKKwlpbnQJCQluOworCisJLyoKKwkgKiBDb25zdHJ1Y3QgY29ubmVjdGlvbiBwYXJh bXMgZnJvbSBnZW5lcmljIG9wdGlvbnMgb2YgRm9yZWlnblNlcnZlciBhbmQKKwkgKiBVc2VyTWFw cGluZy4gIChTb21lIG9mIHRoZW0gbWlnaHQgbm90IGJlIGxpYnBxIG9wdGlvbnMsIGluIHdoaWNo IGNhc2UKKwkgKiB3ZSdsbCBqdXN0IHdhc3RlIGEgZmV3IGFycmF5IHNsb3RzLikgIEFkZCA0IGV4 dHJhIHNsb3RzIGZvcgorCSAqIGFwcGxpY2F0aW9uX25hbWUsIGZhbGxiYWNrX2FwcGxpY2F0aW9u X25hbWUsIGNsaWVudF9lbmNvZGluZywgZW5kCisJICogbWFya2VyLgorCSAqLworCW4gPSBsaXN0 X2xlbmd0aChzZXJ2ZXItPm9wdGlvbnMpICsgbGlzdF9sZW5ndGgodXNlci0+b3B0aW9ucykgKyA0 OworCWtleXdvcmRzID0gKGNvbnN0IGNoYXIgKiopIHBhbGxvYyhuICogc2l6ZW9mKGNoYXIgKikp OworCXZhbHVlcyA9IChjb25zdCBjaGFyICoqKSBwYWxsb2MobiAqIHNpemVvZihjaGFyICopKTsK KworCW4gPSAwOworCW4gKz0gRXh0cmFjdENvbm5lY3Rpb25PcHRpb25zKHNlcnZlci0+b3B0aW9u cywKKwkJCQkJCQkJICBrZXl3b3JkcyArIG4sIHZhbHVlcyArIG4pOworCW4gKz0gRXh0cmFjdENv bm5lY3Rpb25PcHRpb25zKHVzZXItPm9wdGlvbnMsCisJCQkJCQkJCSAga2V5d29yZHMgKyBuLCB2 YWx1ZXMgKyBuKTsKKworCS8qIFNldCBjbGllbnRfZW5jb2Rpbmcgc28gdGhhdCBsaWJwcSBjYW4g Y29udmVydCBlbmNvZGluZyBwcm9wZXJseS4gKi8KKwlrZXl3b3Jkc1tuXSA9ICJjbGllbnRfZW5j b2RpbmciOworCXZhbHVlc1tuXSA9IEdldERhdGFiYXNlRW5jb2RpbmdOYW1lKCk7CisJbisrOwor CisJa2V5d29yZHNbbl0gPSB2YWx1ZXNbbl0gPSBOVUxMOworCisJLyogdmVyaWZ5IHRoZSBzZXQg b2YgY29ubmVjdGlvbiBwYXJhbWV0ZXJzICovCisJY2hlY2tfY29ubl9wYXJhbXMoa2V5d29yZHMs IHZhbHVlcywgdXNlcik7CisKKwlpbml0U3RyaW5nSW5mbygmc3RyKTsKKwlmb3IgKGludCBpID0g MDsgaSA8IG47IGkrKykKKwl7CisJCWNoYXIJICAgKnNlcCA9ICIiOworCisJCWFwcGVuZFN0cmlu Z0luZm8oJnN0ciwgIiVzJXMgPSAiLCBzZXAsIGtleXdvcmRzW2ldKTsKKwkJYXBwZW5kRXNjYXBl ZFZhbHVlKCZzdHIsIHZhbHVlc1tpXSk7CisJCXNlcCA9ICIgIjsKKwl9CisKKwlwZnJlZShrZXl3 b3Jkcyk7CisJcGZyZWUodmFsdWVzKTsKKwlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4 dChzdHIuZGF0YSkpOworfQorCiAvKgogICogTGlzdCBhY3RpdmUgZm9yZWlnbiBzZXJ2ZXIgY29u bmVjdGlvbnMuCiAgKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQv cG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVz X2Zkdy5vdXQKaW5kZXggZjJiY2Q2YWE5OC4uZGQ1NjA4OTJkYSAxMDA2NDQKLS0tIGEvY29udHJp Yi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bv c3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC0yNTYsNiArMjU2LDE0IEBA IFNFTEVDVCBjMywgYzQgRlJPTSBmdDEgT1JERVIgQlkgYzMsIGMxIExJTUlUIDE7ICAtLSBzaG91 bGQgd29yayBhZ2FpbgogQU5BTFlaRSBmdDE7CiBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MiBPUFRJ T05TICh1c2VfcmVtb3RlX2VzdGltYXRlICd0cnVlJyk7CiAtLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSB0ZXN0 IHN1YnNjcmlwdGlvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNz X3BnZmR3X3N1YnNjcmlwdGlvbiBTRVJWRVIgdGVzdHNlcnZlcjEKKyAgUFVCTElDQVRJT04gcHVi MSBXSVRIIChzbG90X25hbWUgPSBOT05FLCBjb25uZWN0ID0gZmFsc2UpOworV0FSTklORzogIHN1 YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKK0hJTlQ6ICBUbyBp bml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNh dGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIHJlZnJlc2ggdGhlIHN1YnNj cmlwdGlvbi4KK0RST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfcGdmZHdfc3Vic2NyaXB0aW9uOwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogLS0gdGVzdCBlcnJvciBjYXNlIGZvciBjcmVhdGUgcHVibGljYXRpb24g b24gZm9yZWlnbiB0YWJsZQogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZnRibCBGT1IgVEFCTEUgZnQxOyAgLS0gc2hvdWxkIGZhaWwKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcG9zdGdyZXNfZmR3L21lc29uLmJ1aWxkIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvbWVzb24u YnVpbGQKaW5kZXggMzAxNDA4NmJhNi4uZTE5ZDhlNGUzMSAxMDA2NDQKLS0tIGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvbWVzb24u YnVpbGQKQEAgLTQxLDQgKzQxLDkgQEAgdGVzdHMgKz0gewogICAgIF0sCiAgICAgJ3JlZ3Jlc3Nf YXJncyc6IFsnLS1kbHBhdGgnLCBtZXNvbi5idWlsZF9yb290KCkgLyAnc3JjL3Rlc3QvcmVncmVz cyddLAogICB9LAorICAndGFwJzogeworICAgICd0ZXN0cyc6IFsKKyAgICAgICd0LzAxMF9zdWJz Y3JpcHRpb24ucGwnLAorICAgIF0sCisgIH0sCiB9CmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3Rn cmVzX2Zkdy9wb3N0Z3Jlc19mZHctLTEuMS0tMS4yLnNxbCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3Bvc3RncmVzX2Zkdy0tMS4xLS0xLjIuc3FsCmluZGV4IDgxYWFkNGZjZGEuLjg5ODE3ODdkMTYg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy0tMS4xLS0xLjIu c3FsCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy0tMS4xLS0xLjIuc3Fs CkBAIC0xNiwzICsxNiwxMSBAQCBDUkVBVEUgRlVOQ1RJT04gcG9zdGdyZXNfZmR3X2dldF9jb25u ZWN0aW9ucyAoCiBSRVRVUk5TIFNFVE9GIHJlY29yZAogQVMgJ01PRFVMRV9QQVRITkFNRScsICdw b3N0Z3Jlc19mZHdfZ2V0X2Nvbm5lY3Rpb25zXzFfMicKIExBTkdVQUdFIEMgU1RSSUNUIFBBUkFM TEVMIFJFU1RSSUNURUQ7CisKKy0tIHRha2VzIGludGVybmFsIHBhcmFtZXRlciB0byBwcmV2ZW50 IGNhbGxpbmcgZnJvbSBTUUwKK0NSRUFURSBGVU5DVElPTiBwb3N0Z3Jlc19mZHdfY29ubmVjdGlv bihvaWQsIG9pZCwgaW50ZXJuYWwpCitSRVRVUk5TIHRleHQKK0FTICdNT0RVTEVfUEFUSE5BTUUn CitMQU5HVUFHRSBDIFNUUklDVDsKKworQUxURVIgRk9SRUlHTiBEQVRBIFdSQVBQRVIgcG9zdGdy ZXNfZmR3IENPTk5FQ1RJT04gcG9zdGdyZXNfZmR3X2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9j b250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCmluZGV4IDM3MmZlNmRhZDEuLjBhYjI4ZWEzZDUg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC0yNDgsNiAr MjQ4LDEzIEBAIFNFTEVDVCBjMywgYzQgRlJPTSBmdDEgT1JERVIgQlkgYzMsIGMxIExJTUlUIDE7 ICAtLSBzaG91bGQgd29yayBhZ2FpbgogQU5BTFlaRSBmdDE7CiBBTFRFUiBGT1JFSUdOIFRBQkxF IGZ0MiBPUFRJT05TICh1c2VfcmVtb3RlX2VzdGltYXRlICd0cnVlJyk7CiAKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIHRlc3Qgc3Vic2NyaXB0aW9uCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfcGdmZHdfc3Vic2NyaXB0aW9uIFNFUlZFUiB0ZXN0c2VydmVyMQorICBQVUJM SUNBVElPTiBwdWIxIFdJVEggKHNsb3RfbmFtZSA9IE5PTkUsIGNvbm5lY3QgPSBmYWxzZSk7CitE Uk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3BnZmR3X3N1YnNjcmlwdGlvbjsKKwogLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogLS0gdGVzdCBlcnJvciBjYXNlIGZvciBjcmVhdGUgcHVibGljYXRpb24gb24gZm9yZWln biB0YWJsZQogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcv dC8wMTBfc3Vic2NyaXB0aW9uLnBsIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvdC8wMTBfc3Vic2Ny aXB0aW9uLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmEzOWU4ZmRi YmEKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy90LzAxMF9zdWJzY3Jp cHRpb24ucGwKQEAgLTAsMCArMSw3MSBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMS0yMDI0LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIEJhc2ljIGxvZ2ljYWwgcmVw bGljYXRpb24gdGVzdAordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgSW5pdGlhbGl6ZSBwdWJsaXNoZXIgbm9kZQorbXkg JG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNo ZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2Fs Jyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUK K215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1 YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5z dGFydDsKKworIyBDcmVhdGUgc29tZSBwcmVleGlzdGluZyBjb250ZW50IG9uIHB1Ymxpc2hlcgor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRh Yl9pbnMgQVMgU0VMRUNUIGEsIGEgKyAxIGFzIGIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAy KSBBUyBhIik7CisKKyMgUmVwbGljYXRlIHRoZSBjaGFuZ2VzIHdpdGhvdXQgY29sdW1ucworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0YWJfbm9f Y29sKCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VS VCBJTlRPIHRhYl9ub19jb2wgZGVmYXVsdCBWQUxVRVMiKTsKKworIyBTZXR1cCBzdHJ1Y3R1cmUg b24gc3Vic2NyaWJlcgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD UkVBVEUgRVhURU5TSU9OIHBvc3RncmVzX2ZkdyIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGFiX2lucyAoYSBpbnQsIGIgaW50KSIpOwor CisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRu b2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBG T1IgVEFCTEUgdGFiX2lucyIpOworCitteSAkcHVibGlzaGVyX2hvc3QgPSAkbm9kZV9wdWJsaXNo ZXItPmhvc3Q7CitteSAkcHVibGlzaGVyX3BvcnQgPSAkbm9kZV9wdWJsaXNoZXItPnBvcnQ7Cisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNFUlZFUiB0 YXBfc2VydmVyIEZPUkVJR04gREFUQSBXUkFQUEVSIHBvc3RncmVzX2ZkdyBPUFRJT05TIChob3N0 ICckcHVibGlzaGVyX2hvc3QnLCBwb3J0ICckcHVibGlzaGVyX3BvcnQnLCBkYm5hbWUgJ3Bvc3Rn cmVzJykiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFVTRVIgTUFQUElORyBGT1IgUFVCTElDIFNFUlZFUiB0YXBfc2VydmVyIgorKTsKKwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBGT1JFSUdO IFRBQkxFIGZfdGFiX2lucyAoYSBpbnQsIGIgaW50KSBTRVJWRVIgdGFwX3NlcnZlciBPUFRJT05T KHRhYmxlX25hbWUgJ3RhYl9pbnMnKSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFUlZFUiB0YXBfc2Vy dmVyIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAocGFzc3dvcmRfcmVxdWlyZWQ9ZmFsc2UpIgor KTsKKworIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCiskbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICd0YXBf c3ViJyk7CisKK215ICRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIChTRUxFQ1QgZi5iID0gbC5iIGFzIG1hdGNo IEZST00gdGFiX2lucyBsLCBmX3RhYl9pbnMgZiBXSEVSRSBsLmEgPSBmLmEpIFdIRVJFIG1hdGNo Iik7CitpcygkcmVzdWx0LCBxcSgxMDAyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXInKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiSU5TRVJUIElOVE8gdGFiX2lucyBTRUxFQ1QgYSwgYSArIDEgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTAwMywxMDUwKSBhIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgndGFwX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSAoU0VMRUNUIGYuYiA9IGwuYiBhcyBt YXRjaCBGUk9NIHRhYl9pbnMgbCwgZl90YWJfaW5zIGYgV0hFUkUgbC5hID0gZi5hKSBXSEVSRSBt YXRjaCIpOworaXMoJHJlc3VsdCwgcXEoMTA1MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNv cGllZCB0byBzdWJzY3JpYmVyJyk7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggZmRjNjQ4ZDAwNy4uMzVhODEwMTc5NiAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yMSw2ICsyMSw3IEBA IFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lz PgorQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4gU0VSVkVSIDxyZXBsYWNlYWJsZT5zZXJ2ZXJuYW1lPC9yZXBsYWNlYWJs ZT4KIEFMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+IENPTk5FQ1RJT04gJzxyZXBsYWNlYWJsZT5jb25uaW5mbzwvcmVwbGFj ZWFibGU+JwogQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT4gU0VUIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBbIFdJVEgg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb3B0aW9uPC9yZXBs YWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNl YWJsZT5dIFssIC4uLiBdICkgXQogQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gQUREIFBVQkxJQ0FUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywg Li4uXSBbIFdJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25f b3B0aW9uPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZh bHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkgXQpAQCAtMTAxLDEzICsxMDIsMjQgQEAgQUxU RVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtc2Vy dmVyIj4KKyAgICA8dGVybT48bGl0ZXJhbD5TRVJWRVIgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnNlcnZlcm5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgY2xhdXNlIHJlcGxhY2VzIHRoZSBmb3Jl aWduIHNlcnZlciBvciBjb25uZWN0aW9uIHN0cmluZyBvcmlnaW5hbGx5CisgICAgICBzZXQgYnkg PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbiIvPiB3aXRoIHRoZSBmb3JlaWdu IHNlcnZlcgorICAgICAgPHJlcGxhY2VhYmxlPnNlcnZlcm5hbWU8L3JlcGxhY2VhYmxlPi4KKyAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZh cmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uLXBhcmFtcy1jb25uZWN0aW9uIj4K ICAgICA8dGVybT48bGl0ZXJhbD5DT05ORUNUSU9OICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29ubmluZm88L3JlcGxhY2VhYmxlPic8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0 aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGlzIGNsYXVzZSByZXBsYWNlcyB0aGUgY29ubmVj dGlvbiBzdHJpbmcgb3JpZ2luYWxseSBzZXQgYnkKLSAgICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1j cmVhdGVzdWJzY3JpcHRpb24iLz4uICBTZWUgdGhlcmUgZm9yIG1vcmUKLSAgICAgIGluZm9ybWF0 aW9uLgorICAgICAgVGhpcyBjbGF1c2UgcmVwbGFjZXMgdGhlIGZvcmVpZ24gc2VydmVyIG9yIGNv bm5lY3Rpb24gc3RyaW5nIG9yaWdpbmFsbHkKKyAgICAgIHNldCBieSA8eHJlZiBsaW5rZW5kPSJz cWwtY3JlYXRlc3Vic2NyaXB0aW9uIi8+IHdpdGggdGhlIGNvbm5lY3Rpb24KKyAgICAgIHN0cmlu ZyA8cmVwbGFjZWFibGU+Y29ubmluZm88L3JlcGxhY2VhYmxlPi4KICAgICAgPC9wYXJhPgogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggNmNmN2Q0ZjlhMS4uZjc4N2EyN2JjOSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIyLDcgKzIyLDcgQEAgUG9z dGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgogQ1JF QVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0 aW9uX25hbWU8L3JlcGxhY2VhYmxlPgotICAgIENPTk5FQ1RJT04gJzxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb25uaW5mbzwvcmVwbGFjZWFibGU+JworICAgIHsgU0VSVkVSIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXJ2ZXJuYW1lPC9yZXBsYWNlYWJsZT4gfCBDT05O RUNUSU9OICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29ubmluZm88L3JlcGxhY2Vh YmxlPicgfQogICAgIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w dWJsaWNhdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQogICAgIFsgV0lUSCAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fcGFyYW1ldGVyPC9yZXBsYWNl YWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJs ZT5dIFssIC4uLiBdICkgXQogPC9zeW5vcHNpcz4KQEAgLTc3LDYgKzc3LDE1IEBAIENSRUFURSBT VUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9u YW1lPC9yZXBsYWNlYWJsCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisg ICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy1zZXJ2ZXIi PgorICAgIDx0ZXJtPjxsaXRlcmFsPlNFUlZFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+c2VydmVybmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgQSBmb3JlaWduIHNlcnZlciB0byB1c2UgZm9yIHRoZSBj b25uZWN0aW9uLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFt cy1jb25uZWN0aW9uIj4KICAgICA8dGVybT48bGl0ZXJhbD5DT05ORUNUSU9OICc8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29ubmluZm88L3JlcGxhY2VhYmxlPic8L2xpdGVyYWw+PC90 ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmlu ZGV4IDg5YmY1ZWM5MzMuLjY2Y2FlOGVjZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb24uYwpAQCAtMTksMTEgKzE5LDE0IEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWls cy5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRl eGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfZm9yZWlnbl9zZXJ2ZXIuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImZv cmVpZ24vZm9yZWlnbi5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvbG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5 LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lk cy5oIgpAQCAtNjksNyArNzIsNyBAQCBHZXRQdWJsaWNhdGlvbnNTdHIoTGlzdCAqcHVibGljYXRp b25zLCBTdHJpbmdJbmZvIGRlc3QsIGJvb2wgcXVvdGVfbGl0ZXJhbCkKICAqIEZldGNoIHRoZSBz dWJzY3JpcHRpb24gZnJvbSB0aGUgc3lzY2FjaGUuCiAgKi8KIFN1YnNjcmlwdGlvbiAqCi1HZXRT dWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spCitHZXRTdWJzY3JpcHRpb24o T2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2ssIGJvb2wgYWNsY2hlY2spCiB7CiAJSGVhcFR1cGxl CXR1cDsKIAlTdWJzY3JpcHRpb24gKnN1YjsKQEAgLTEwNSwxMCArMTA4LDM1IEBAIEdldFN1YnNj cmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaykKIAlzdWItPmZhaWxvdmVyID0gc3Vi Zm9ybS0+c3ViZmFpbG92ZXI7CiAKIAkvKiBHZXQgY29ubmluZm8gKi8KLQlkYXR1bSA9IFN5c0Nh Y2hlR2V0QXR0ck5vdE51bGwoU1VCU0NSSVBUSU9OT0lELAotCQkJCQkJCQkgICB0dXAsCi0JCQkJ CQkJCSAgIEFudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvKTsKLQlzdWItPmNvbm5pbmZv ID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJaWYgKE9pZElzVmFsaWQoc3ViZm9ybS0+ c3Vic2VydmVyKSkKKwl7CisJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisKKwkJLyogcmVjaGVjayBB Q0wgaWYgcmVxdWVzdGVkICovCisJCWlmIChhY2xjaGVjaykKKwkJeworCQkJYWNscmVzdWx0ID0g b2JqZWN0X2FjbGNoZWNrKEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkLAorCQkJCQkJCQkJCXN1YmZv cm0tPnN1YnNlcnZlciwKKwkJCQkJCQkJCQlzdWJmb3JtLT5zdWJvd25lciwgQUNMX1VTQUdFKTsK KworCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJCSBl cnJtc2coInN1YnNjcmlwdGlvbiBvd25lciBcIiVzXCIgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9u IG9uIGZvcmVpZ24gc2VydmVyIFwiJXNcIiIsCisJCQkJCQkJCUdldFVzZXJOYW1lRnJvbUlkKHN1 YmZvcm0tPnN1Ym93bmVyLCBmYWxzZSksCisJCQkJCQkJCUZvcmVpZ25TZXJ2ZXJOYW1lKHN1YmZv cm0tPnN1YnNlcnZlcikpKSk7CisJCX0KKworCQlzdWItPmNvbm5pbmZvID0gRm9yZWlnblNlcnZl ckNvbm5lY3Rpb25TdHJpbmcoc3ViZm9ybS0+c3Vib3duZXIsCisJCQkJCQkJCQkJCQkJICBzdWJm b3JtLT5zdWJzZXJ2ZXIpOworCX0KKwllbHNlCisJeworCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0 ck5vdE51bGwoU1VCU0NSSVBUSU9OT0lELAorCQkJCQkJCQkJICAgdHVwLAorCQkJCQkJCQkJICAg QW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8pOworCQlzdWItPmNvbm5pbmZvID0gVGV4 dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJfQogCiAJLyogR2V0IHNsb3RuYW1lICovCiAJZGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OT0lELApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZm9yZWlnbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2ZvcmVp Z25jbWRzLmMKaW5kZXggY2Y2MWJiYWMxZi4uYzk3NDUwYmZhZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZm9yZWlnbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9m b3JlaWduY21kcy5jCkBAIC01MTEsMjEgKzUxMSw1MyBAQCBsb29rdXBfZmR3X3ZhbGlkYXRvcl9m dW5jKERlZkVsZW0gKnZhbGlkYXRvcikKIAkvKiB2YWxpZGF0b3IncyByZXR1cm4gdmFsdWUgaXMg aWdub3JlZCwgc28gd2UgZG9uJ3QgY2hlY2sgdGhlIHR5cGUgKi8KIH0KIAorLyoKKyAqIENvbnZl cnQgYSBjb25uZWN0aW9uIHN0cmluZyBmdW5jdGlvbiBuYW1lIHBhc3NlZCBmcm9tIHRoZSBwYXJz ZXIgdG8gYW4gT2lkLgorICovCitzdGF0aWMgT2lkCitsb29rdXBfZmR3X2Nvbm5lY3Rpb25fZnVu YyhEZWZFbGVtICpjb25uZWN0aW9uKQoreworCU9pZAkJCWNvbm5lY3Rpb25PaWQ7CisJT2lkCQkJ ZnVuY2FyZ3R5cGVzWzNdOworCisJaWYgKGNvbm5lY3Rpb24gPT0gTlVMTCB8fCBjb25uZWN0aW9u LT5hcmcgPT0gTlVMTCkKKwkJcmV0dXJuIEludmFsaWRPaWQ7CisKKwkvKiBjb25uZWN0aW9uIHN0 cmluZyBmdW5jdGlvbnMgdGFrZSB1c2VyIG9pZCwgc2VydmVyIG9pZCAqLworCWZ1bmNhcmd0eXBl c1swXSA9IE9JRE9JRDsKKwlmdW5jYXJndHlwZXNbMV0gPSBPSURPSUQ7CisJZnVuY2FyZ3R5cGVz WzJdID0gSU5URVJOQUxPSUQ7CisKKwljb25uZWN0aW9uT2lkID0gTG9va3VwRnVuY05hbWUoKExp c3QgKikgY29ubmVjdGlvbi0+YXJnLCAzLCBmdW5jYXJndHlwZXMsIGZhbHNlKTsKKworCS8qIGNo ZWNrIHRoYXQgY29ubmVjdGlvbiBzdHJpbmcgZnVuY3Rpb24gaGFzIGNvcnJlY3QgcmV0dXJuIHR5 cGUgKi8KKwlpZiAoZ2V0X2Z1bmNfcmV0dHlwZShjb25uZWN0aW9uT2lkKSAhPSBURVhUT0lEKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAorCQkJCSBlcnJtc2coImZ1bmN0aW9uICVzIG11c3QgcmV0dXJuIHR5cGUgJXMiLAorCQkJCQkJ TmFtZUxpc3RUb1N0cmluZygoTGlzdCAqKSBjb25uZWN0aW9uLT5hcmcpLCAidGV4dCIpKSk7CisK KwlyZXR1cm4gY29ubmVjdGlvbk9pZDsKK30KKwogLyoKICAqIFByb2Nlc3MgZnVuY3Rpb24gb3B0 aW9ucyBvZiBDUkVBVEUvQUxURVIgRkRXCiAgKi8KIHN0YXRpYyB2b2lkCiBwYXJzZV9mdW5jX29w dGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jX29wdGlvbnMsCiAJCQkJICAgYm9v bCAqaGFuZGxlcl9naXZlbiwgT2lkICpmZHdoYW5kbGVyLAotCQkJCSAgIGJvb2wgKnZhbGlkYXRv cl9naXZlbiwgT2lkICpmZHd2YWxpZGF0b3IpCisJCQkJICAgYm9vbCAqdmFsaWRhdG9yX2dpdmVu LCBPaWQgKmZkd3ZhbGlkYXRvciwKKwkJCQkgICBib29sICpjb25uZWN0aW9uX2dpdmVuLCBPaWQg KmZkd2Nvbm5lY3Rpb24pCiB7CiAJTGlzdENlbGwgICAqY2VsbDsKIAogCSpoYW5kbGVyX2dpdmVu ID0gZmFsc2U7CiAJKnZhbGlkYXRvcl9naXZlbiA9IGZhbHNlOworCSpjb25uZWN0aW9uX2dpdmVu ID0gZmFsc2U7CiAJLyogcmV0dXJuIEludmFsaWRPaWQgaWYgbm90IGdpdmVuICovCiAJKmZkd2hh bmRsZXIgPSBJbnZhbGlkT2lkOwogCSpmZHd2YWxpZGF0b3IgPSBJbnZhbGlkT2lkOworCSpmZHdj b25uZWN0aW9uID0gSW52YWxpZE9pZDsKIAogCWZvcmVhY2goY2VsbCwgZnVuY19vcHRpb25zKQog CXsKQEAgLTU0NSw2ICs1NzcsMTMgQEAgcGFyc2VfZnVuY19vcHRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqZnVuY19vcHRpb25zLAogCQkJKnZhbGlkYXRvcl9naXZlbiA9IHRydWU7CiAJ CQkqZmR3dmFsaWRhdG9yID0gbG9va3VwX2Zkd192YWxpZGF0b3JfZnVuYyhkZWYpOwogCQl9CisJ CWVsc2UgaWYgKHN0cmNtcChkZWYtPmRlZm5hbWUsICJjb25uZWN0aW9uIikgPT0gMCkKKwkJewor CQkJaWYgKCpjb25uZWN0aW9uX2dpdmVuKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRl ZiwgcHN0YXRlKTsKKwkJCSpjb25uZWN0aW9uX2dpdmVuID0gdHJ1ZTsKKwkJCSpmZHdjb25uZWN0 aW9uID0gbG9va3VwX2Zkd19jb25uZWN0aW9uX2Z1bmMoZGVmKTsKKwkJfQogCQllbHNlCiAJCQll bG9nKEVSUk9SLCAib3B0aW9uIFwiJXNcIiBub3QgcmVjb2duaXplZCIsCiAJCQkJIGRlZi0+ZGVm bmFtZSk7CkBAIC01NjQsOCArNjAzLDEwIEBAIENyZWF0ZUZvcmVpZ25EYXRhV3JhcHBlcihQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZUZkd1N0bXQgKnN0bXQpCiAJT2lkCQkJZmR3SWQ7CiAJYm9v bAkJaGFuZGxlcl9naXZlbjsKIAlib29sCQl2YWxpZGF0b3JfZ2l2ZW47CisJYm9vbAkJY29ubmVj dGlvbl9naXZlbjsKIAlPaWQJCQlmZHdoYW5kbGVyOwogCU9pZAkJCWZkd3ZhbGlkYXRvcjsKKwlP aWQJCQlmZHdjb25uZWN0aW9uOwogCURhdHVtCQlmZHdvcHRpb25zOwogCU9pZAkJCW93bmVySWQ7 CiAJT2JqZWN0QWRkcmVzcyBteXNlbGY7CkBAIC02MDksMTAgKzY1MCwxMiBAQCBDcmVhdGVGb3Jl aWduRGF0YVdyYXBwZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVGZHdTdG10ICpzdG10KQog CS8qIExvb2t1cCBoYW5kbGVyIGFuZCB2YWxpZGF0b3IgZnVuY3Rpb25zLCBpZiBnaXZlbiAqLwog CXBhcnNlX2Z1bmNfb3B0aW9ucyhwc3RhdGUsIHN0bXQtPmZ1bmNfb3B0aW9ucywKIAkJCQkJICAg JmhhbmRsZXJfZ2l2ZW4sICZmZHdoYW5kbGVyLAotCQkJCQkgICAmdmFsaWRhdG9yX2dpdmVuLCAm ZmR3dmFsaWRhdG9yKTsKKwkJCQkJICAgJnZhbGlkYXRvcl9naXZlbiwgJmZkd3ZhbGlkYXRvciwK KwkJCQkJICAgJmNvbm5lY3Rpb25fZ2l2ZW4sICZmZHdjb25uZWN0aW9uKTsKIAogCXZhbHVlc1tB bnVtX3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyX2Zkd2hhbmRsZXIgLSAxXSA9IE9iamVjdElkR2V0 RGF0dW0oZmR3aGFuZGxlcik7CiAJdmFsdWVzW0FudW1fcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXJf ZmR3dmFsaWRhdG9yIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGZkd3ZhbGlkYXRvcik7CisJdmFs dWVzW0FudW1fcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXJfZmR3Y29ubmVjdGlvbiAtIDFdID0gT2Jq ZWN0SWRHZXREYXR1bShmZHdjb25uZWN0aW9uKTsKIAogCW51bGxzW0FudW1fcGdfZm9yZWlnbl9k YXRhX3dyYXBwZXJfZmR3YWNsIC0gMV0gPSB0cnVlOwogCkBAIC02ODQsOCArNzI3LDEwIEBAIEFs dGVyRm9yZWlnbkRhdGFXcmFwcGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJGZHdTdG10ICpz dG10KQogCURhdHVtCQlkYXR1bTsKIAlib29sCQloYW5kbGVyX2dpdmVuOwogCWJvb2wJCXZhbGlk YXRvcl9naXZlbjsKKwlib29sCQljb25uZWN0aW9uX2dpdmVuOwogCU9pZAkJCWZkd2hhbmRsZXI7 CiAJT2lkCQkJZmR3dmFsaWRhdG9yOworCU9pZAkJCWZkd2Nvbm5lY3Rpb247CiAJT2JqZWN0QWRk cmVzcyBteXNlbGY7CiAKIAlyZWwgPSB0YWJsZV9vcGVuKEZvcmVpZ25EYXRhV3JhcHBlclJlbGF0 aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwpAQCAtNzE1LDcgKzc2MCw4IEBAIEFsdGVyRm9yZWln bkRhdGFXcmFwcGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJGZHdTdG10ICpzdG10KQogCiAJ cGFyc2VfZnVuY19vcHRpb25zKHBzdGF0ZSwgc3RtdC0+ZnVuY19vcHRpb25zLAogCQkJCQkgICAm aGFuZGxlcl9naXZlbiwgJmZkd2hhbmRsZXIsCi0JCQkJCSAgICZ2YWxpZGF0b3JfZ2l2ZW4sICZm ZHd2YWxpZGF0b3IpOworCQkJCQkgICAmdmFsaWRhdG9yX2dpdmVuLCAmZmR3dmFsaWRhdG9yLAor CQkJCQkgICAmY29ubmVjdGlvbl9naXZlbiwgJmZkd2Nvbm5lY3Rpb24pOwogCiAJaWYgKGhhbmRs ZXJfZ2l2ZW4pCiAJewpAQCAtNzUzLDYgKzc5OSwxMiBAQCBBbHRlckZvcmVpZ25EYXRhV3JhcHBl cihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyRmR3U3RtdCAqc3RtdCkKIAkJZmR3dmFsaWRhdG9y ID0gZmR3Rm9ybS0+ZmR3dmFsaWRhdG9yOwogCX0KIAorCWlmIChjb25uZWN0aW9uX2dpdmVuKQor CXsKKwkJcmVwbF92YWxbQW51bV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcl9mZHdjb25uZWN0aW9u IC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGZkd2Nvbm5lY3Rpb24pOworCQlyZXBsX3JlcGxbQW51 bV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcl9mZHdjb25uZWN0aW9uIC0gMV0gPSB0cnVlOworCX0K KwogCS8qCiAJICogSWYgb3B0aW9ucyBzcGVjaWZpZWQsIHZhbGlkYXRlIGFuZCB1cGRhdGUuCiAJ ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggMDNlOTc3MzBl Ny4uZWQ1NDA0Y2IwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpA QCAtMjYsMTQgKzI2LDE3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWRfZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0 YWJhc2VfZC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfZm9yZWlnbl9zZXJ2ZXIuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5k cy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V2 ZW50X3RyaWdnZXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgiCiAj aW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNpbmNsdWRlICJmb3JlaWduL2ZvcmVpZ24u aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAgLTU0Niw2ICs1NDksNyBAQCBDcmVhdGVTdWJzY3JpcHRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCURh dHVtCQl2YWx1ZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKIAlPaWQJCQlvd25lciA9IEdldFVz ZXJJZCgpOwogCUhlYXBUdXBsZQl0dXA7CisJT2lkCQkJc2VydmVyaWQ7CiAJY2hhcgkgICAqY29u bmluZm87CiAJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CiAJTGlzdAkgICAqcHVibGlj YXRpb25zOwpAQCAtNjM4LDE1ICs2NDIsNDAgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAlpZiAob3B0cy5zeW5j aHJvbm91c19jb21taXQgPT0gTlVMTCkKIAkJb3B0cy5zeW5jaHJvbm91c19jb21taXQgPSAib2Zm IjsKIAotCWNvbm5pbmZvID0gc3RtdC0+Y29ubmluZm87Ci0JcHVibGljYXRpb25zID0gc3RtdC0+ cHVibGljYXRpb247Ci0KIAkvKiBMb2FkIHRoZSBsaWJyYXJ5IHByb3ZpZGluZyB1cyBsaWJwcSBj YWxscy4gKi8KIAlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CiAKKwlpZiAo c3RtdC0+c2VydmVybmFtZSkKKwl7CisJCUZvcmVpZ25TZXJ2ZXIgKnNlcnZlcjsKKworCQlBc3Nl cnQoIXN0bXQtPmNvbm5pbmZvKTsKKwkJY29ubmluZm8gPSBOVUxMOworCisJCXNlcnZlciA9IEdl dEZvcmVpZ25TZXJ2ZXJCeU5hbWUoc3RtdC0+c2VydmVybmFtZSwgZmFsc2UpOworCQlhY2xyZXN1 bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWlnblNlcnZlclJlbGF0aW9uSWQsIHNlcnZlci0+c2Vy dmVyaWQsIG93bmVyLCBBQ0xfVVNBR0UpOworCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09L KQorCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfRk9SRUlHTl9TRVJWRVIsIHNl cnZlci0+c2VydmVybmFtZSk7CisKKwkJLyogbWFrZSBzdXJlIGEgdXNlciBtYXBwaW5nIGV4aXN0 cyAqLworCQlHZXRVc2VyTWFwcGluZyhvd25lciwgc2VydmVyLT5zZXJ2ZXJpZCk7CisKKwkJc2Vy dmVyaWQgPSBzZXJ2ZXItPnNlcnZlcmlkOworCQljb25uaW5mbyA9IEZvcmVpZ25TZXJ2ZXJDb25u ZWN0aW9uU3RyaW5nKG93bmVyLCBzZXJ2ZXJpZCk7CisJfQorCWVsc2UKKwl7CisJCUFzc2VydChz dG10LT5jb25uaW5mbyk7CisKKwkJc2VydmVyaWQgPSBJbnZhbGlkT2lkOworCQljb25uaW5mbyA9 IHN0bXQtPmNvbm5pbmZvOworCX0KKwogCS8qIENoZWNrIHRoZSBjb25uZWN0aW9uIGluZm8gc3Ry aW5nLiAqLwogCXdhbHJjdl9jaGVja19jb25uaW5mbyhjb25uaW5mbywgb3B0cy5wYXNzd29yZHJl cXVpcmVkICYmICFzdXBlcnVzZXIoKSk7CiAKKwlwdWJsaWNhdGlvbnMgPSBzdG10LT5wdWJsaWNh dGlvbjsKKwogCS8qIEV2ZXJ5dGhpbmcgb2ssIGZvcm0gYSBuZXcgdHVwbGUuICovCiAJbWVtc2V0 KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwogCW1lbXNldChudWxscywgZmFsc2UsIHNpemVv ZihudWxscykpOwpAQCAtNjcwLDggKzY5OSwxMiBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCXZhbHVlc1tBbnVt X3BnX3N1YnNjcmlwdGlvbl9zdWJwYXNzd29yZHJlcXVpcmVkIC0gMV0gPSBCb29sR2V0RGF0dW0o b3B0cy5wYXNzd29yZHJlcXVpcmVkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi cnVuYXNvd25lciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMucnVuYXNvd25lcik7CiAJdmFsdWVz W0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmZhaWxvdmVyIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0 cy5mYWlsb3Zlcik7Ci0JdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0g MV0gPQotCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKKwl2YWx1ZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3Vic2VydmVyIC0gMV0gPSBzZXJ2ZXJpZDsKKwlpZiAoIU9pZElzVmFsaWQo c2VydmVyaWQpKQorCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAx XSA9CisJCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKKwllbHNlCisJCW51bGxzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0gMV0gPSB0cnVlOwogCWlmIChvcHRzLnNs b3RfbmFtZSkKIAkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNsb3RuYW1lIC0gMV0g PQogCQkJRGlyZWN0RnVuY3Rpb25DYWxsMShuYW1laW4sIENTdHJpbmdHZXREYXR1bShvcHRzLnNs b3RfbmFtZSkpOwpAQCAtNjkyLDYgKzcyNSwxOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCiAJcmVjb3JkRGVw ZW5kZW5jeU9uT3duZXIoU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViaWQsIG93bmVyKTsKIAor CU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBzdWJpZCk7 CisKKwlpZiAoc3RtdC0+c2VydmVybmFtZSkKKwl7CisJCU9iamVjdEFkZHJlc3MgcmVmZXJlbmNl ZDsKKworCQlBc3NlcnQoT2lkSXNWYWxpZChzZXJ2ZXJpZCkpOworCisJCU9iamVjdEFkZHJlc3NT ZXQocmVmZXJlbmNlZCwgRm9yZWlnblNlcnZlclJlbGF0aW9uSWQsIHNlcnZlcmlkKTsKKwkJcmVj b3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7 CisJfQorCiAJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChzdWJpZCwgSW52YWxp ZE9pZCwgb3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKIAlyZXBsb3JpZ2luX2NyZWF0 ZShvcmlnaW5uYW1lKTsKIApAQCAtODA5LDggKzg1NCw2IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJaWYgKG9w dHMuZW5hYmxlZCkKIAkJQXBwbHlMYXVuY2hlcldha2V1cEF0Q29tbWl0KCk7CiAKLQlPYmplY3RB ZGRyZXNzU2V0KG15c2VsZiwgU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViaWQpOwotCiAJSW52 b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViaWQsIDAp OwogCiAJcmV0dXJuIG15c2VsZjsKQEAgLTExMzUsNyArMTE3OCwxNCBAQCBBbHRlclN1YnNjcmlw dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJ YWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBPQkpFQ1RfU1VCU0NSSVBUSU9OLAog CQkJCQkgICBzdG10LT5zdWJuYW1lKTsKIAotCXN1YiA9IEdldFN1YnNjcmlwdGlvbihzdWJpZCwg ZmFsc2UpOworCS8qCisJICogU2tpcCBBQ0wgY2hlY2tzIG9uIHRoZSBzdWJzY3JpcHRpb24ncyBm b3JlaWduIHNlcnZlciwgaWYgYW55LiBJZgorCSAqIGNoYW5naW5nIHRoZSBzZXJ2ZXIgKG9yIHJl cGxhY2luZyBpdCB3aXRoIGEgcmF3IGNvbm5lY3Rpb24pLCB0aGVuIHRoZQorCSAqIG9sZCBvbmUg d2lsbCBiZSByZW1vdmVkIGFueXdheS4gSWYgY2hhbmdpbmcgc29tZXRoaW5nIHVucmVsYXRlZCwK KwkgKiB0aGVyZSdzIG5vIG5lZWQgdG8gZG8gYW4gYWRkaXRpb25hbCBBQ0wgY2hlY2sgaGVyZTsg dGhhdCB3aWxsIGJlIGRvbmUKKwkgKiBieSB0aGUgc3Vic2NyaXB0aW9uIHdvcmtlciBhbnl3YXku CisJICovCisJc3ViID0gR2V0U3Vic2NyaXB0aW9uKHN1YmlkLCBmYWxzZSwgZmFsc2UpOwogCiAJ LyoKIAkgKiBEb24ndCBhbGxvdyBub24tc3VwZXJ1c2VyIG1vZGlmaWNhdGlvbiBvZiBhIHN1YnNj cmlwdGlvbiB3aXRoCkBAIC0xMTU1LDYgKzEyMDUsOCBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAltZW1zZXQobnVs bHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKIAltZW1zZXQocmVwbGFjZXMsIGZhbHNlLCBzaXpl b2YocmVwbGFjZXMpKTsKIAorCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBTdWJzY3JpcHRpb25S ZWxhdGlvbklkLCBzdWJpZCk7CisKIAlzd2l0Y2ggKHN0bXQtPmtpbmQpCiAJewogCQljYXNlIEFM VEVSX1NVQlNDUklQVElPTl9PUFRJT05TOgpAQCAtMTM1OCw3ICsxNDEwLDc5IEBAIEFsdGVyU3Vi c2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10 LAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgQUxURVJfU1VCU0NSSVBUSU9OX1NFUlZFUjoK KwkJCXsKKwkJCQlGb3JlaWduU2VydmVyICpuZXdfc2VydmVyOworCQkJCU9iamVjdEFkZHJlc3Mg cmVmZXJlbmNlZDsKKwkJCQlBY2xSZXN1bHQJYWNscmVzdWx0OworCQkJCWNoYXIJICAgKmNvbm5p bmZvOworCisJCQkJLyoKKwkJCQkgKiBSZW1vdmUgd2hhdCB3YXMgdGhlcmUgYmVmb3JlLCBlaXRo ZXIgYW5vdGhlciBmb3JlaWduIHNlcnZlcgorCQkJCSAqIG9yIGEgY29ubmVjdGlvbiBzdHJpbmcu CisJCQkJICovCisJCQkJaWYgKGZvcm0tPnN1YnNlcnZlcikKKwkJCQl7CisJCQkJCWRlbGV0ZURl cGVuZGVuY3lSZWNvcmRzRm9yU3BlY2lmaWMoU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgZm9ybS0+ b2lkLAorCQkJCQkJCQkJCQkJCSAgIERFUEVOREVOQ1lfTk9STUFMLAorCQkJCQkJCQkJCQkJCSAg IEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkLCBmb3JtLT5zdWJzZXJ2ZXIpOworCQkJCX0KKwkJCQll bHNlCisJCQkJeworCQkJCQludWxsc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAt IDFdID0gdHJ1ZTsKKwkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmlu Zm8gLSAxXSA9IHRydWU7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBGaW5kIHRoZSBuZXcgc2Vy dmVyIGFuZCB1c2VyIG1hcHBpbmcuIENoZWNrIEFDTCBvZiBzZXJ2ZXIKKwkJCQkgKiBiYXNlZCBv biBjdXJyZW50IHVzZXIgSUQsIGJ1dCBmaW5kIHRoZSB1c2VyIG1hcHBpbmcgYmFzZWQKKwkJCQkg KiBvbiB0aGUgc3Vic2NyaXB0aW9uIG93bmVyLgorCQkJCSAqLworCQkJCW5ld19zZXJ2ZXIgPSBH ZXRGb3JlaWduU2VydmVyQnlOYW1lKHN0bXQtPnNlcnZlcm5hbWUsIGZhbHNlKTsKKwkJCQlhY2xy ZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWlnblNlcnZlclJlbGF0aW9uSWQsCisJCQkJCQkJ CQkJCW5ld19zZXJ2ZXItPnNlcnZlcmlkLAorCQkJCQkJCQkJCQlmb3JtLT5zdWJvd25lciwgQUNM X1VTQUdFKTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSks CisJCQkJCQkJIGVycm1zZygic3Vic2NyaXB0aW9uIG93bmVyIFwiJXNcIiBkb2VzIG5vdCBoYXZl IHBlcm1pc3Npb24gb24gZm9yZWlnbiBzZXJ2ZXIgXCIlc1wiIiwKKwkJCQkJCQkJCUdldFVzZXJO YW1lRnJvbUlkKGZvcm0tPnN1Ym93bmVyLCBmYWxzZSksCisJCQkJCQkJCQlGb3JlaWduU2VydmVy TmFtZShuZXdfc2VydmVyLT5zZXJ2ZXJpZCkpKSk7CisKKwkJCQkvKiBtYWtlIHN1cmUgYSB1c2Vy IG1hcHBpbmcgZXhpc3RzICovCisJCQkJR2V0VXNlck1hcHBpbmcoZm9ybS0+c3Vib3duZXIsIG5l d19zZXJ2ZXItPnNlcnZlcmlkKTsKKworCQkJCWNvbm5pbmZvID0gRm9yZWlnblNlcnZlckNvbm5l Y3Rpb25TdHJpbmcoZm9ybS0+c3Vib3duZXIsCisJCQkJCQkJCQkJCQkJCSBuZXdfc2VydmVyLT5z ZXJ2ZXJpZCk7CisKKwkJCQkvKiBMb2FkIHRoZSBsaWJyYXJ5IHByb3ZpZGluZyB1cyBsaWJwcSBj YWxscy4gKi8KKwkJCQlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CisJCQkJ LyogQ2hlY2sgdGhlIGNvbm5lY3Rpb24gaW5mbyBzdHJpbmcuICovCisJCQkJd2FscmN2X2NoZWNr X2Nvbm5pbmZvKGNvbm5pbmZvLAorCQkJCQkJCQkJICBzdWItPnBhc3N3b3JkcmVxdWlyZWQgJiYg IXN1Yi0+b3duZXJzdXBlcnVzZXIpOworCisJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YnNlcnZlciAtIDFdID0gbmV3X3NlcnZlci0+c2VydmVyaWQ7CisJCQkJcmVwbGFjZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3Vic2VydmVyIC0gMV0gPSB0cnVlOworCisJCQkJT2JqZWN0QWRk cmVzc1NldChyZWZlcmVuY2VkLCBGb3JlaWduU2VydmVyUmVsYXRpb25JZCwgbmV3X3NlcnZlci0+ c2VydmVyaWQpOworCQkJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwg REVQRU5ERU5DWV9OT1JNQUwpOworCisJCQkJdXBkYXRlX3R1cGxlID0gdHJ1ZTsKKwkJCX0KKwkJ CWJyZWFrOworCiAJCWNhc2UgQUxURVJfU1VCU0NSSVBUSU9OX0NPTk5FQ1RJT046CisJCQkvKiBy ZW1vdmUgcmVmZXJlbmNlIHRvIGZvcmVpZ24gc2VydmVyIGFuZCBkZXBlbmRlbmNpZXMsIGlmIHBy ZXNlbnQgKi8KKwkJCWlmIChmb3JtLT5zdWJzZXJ2ZXIpCisJCQl7CisJCQkJZGVsZXRlRGVwZW5k ZW5jeVJlY29yZHNGb3JTcGVjaWZpYyhTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBmb3JtLT5vaWQs CisJCQkJCQkJCQkJCQkgICBERVBFTkRFTkNZX05PUk1BTCwKKwkJCQkJCQkJCQkJCSAgIEZvcmVp Z25TZXJ2ZXJSZWxhdGlvbklkLCBmb3JtLT5zdWJzZXJ2ZXIpOworCisJCQkJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YnNlcnZlciAtIDFdID0gSW52YWxpZE9pZDsKKwkJCQlyZXBsYWNl c1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzZXJ2ZXIgLSAxXSA9IHRydWU7CisJCQl9CisKIAkJ CS8qIExvYWQgdGhlIGxpYnJhcnkgcHJvdmlkaW5nIHVzIGxpYnBxIGNhbGxzLiAqLwogCQkJbG9h ZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwogCQkJLyogQ2hlY2sgdGhlIGNvbm5l Y3Rpb24gaW5mbyBzdHJpbmcuICovCkBAIC0xNjA5LDggKzE3MzMsNiBAQCBBbHRlclN1YnNjcmlw dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAog CXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKLQlPYmplY3RBZGRyZXNzU2V0 KG15c2VsZiwgU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViaWQpOwotCiAJSW52b2tlT2JqZWN0 UG9zdEFsdGVySG9vayhTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBzdWJpZCwgMCk7CiAKIAkvKiBX YWtlIHVwIHJlbGF0ZWQgcmVwbGljYXRpb24gd29ya2VycyB0byBoYW5kbGUgdGhpcyBjaGFuZ2Ug cXVpY2tseS4gKi8KQEAgLTE2OTUsOSArMTgxNywyOCBAQCBEcm9wU3Vic2NyaXB0aW9uKERyb3BT dWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJc3VibmFtZSA9IHBzdHJk dXAoTmFtZVN0cigqRGF0dW1HZXROYW1lKGRhdHVtKSkpOwogCiAJLyogR2V0IGNvbm5pbmZvICov Ci0JZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKFNVQlNDUklQVElPTk9JRCwgdHVwLAot CQkJCQkJCQkgICBBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyk7Ci0JY29ubmluZm8g PSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwlpZiAoT2lkSXNWYWxpZChmb3JtLT5zdWJz ZXJ2ZXIpKQorCXsKKwkJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKworCQlhY2xyZXN1bHQgPSBvYmpl Y3RfYWNsY2hlY2soRm9yZWlnblNlcnZlclJlbGF0aW9uSWQsIGZvcm0tPnN1YnNlcnZlciwKKwkJ CQkJCQkJCWZvcm0tPnN1Ym93bmVyLCBBQ0xfVVNBR0UpOworCQlpZiAoYWNscmVzdWx0ICE9IEFD TENIRUNLX09LKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNV RkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJIGVycm1zZygic3Vic2NyaXB0aW9uIG93bmVyIFwi JXNcIiBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gb24gZm9yZWlnbiBzZXJ2ZXIgXCIlc1wiIiwK KwkJCQkJCQlHZXRVc2VyTmFtZUZyb21JZChmb3JtLT5zdWJvd25lciwgZmFsc2UpLAorCQkJCQkJ CUZvcmVpZ25TZXJ2ZXJOYW1lKGZvcm0tPnN1YnNlcnZlcikpKSk7CisKKwkJY29ubmluZm8gPSBG b3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZyhmb3JtLT5zdWJvd25lciwKKwkJCQkJCQkJCQkJ CSBmb3JtLT5zdWJzZXJ2ZXIpOworCX0KKwllbHNlCisJeworCQlkYXR1bSA9IFN5c0NhY2hlR2V0 QXR0ck5vdE51bGwoU1VCU0NSSVBUSU9OT0lELCB0dXAsCisJCQkJCQkJCQkgICBBbnVtX3BnX3N1 YnNjcmlwdGlvbl9zdWJjb25uaW5mbyk7CisJCWNvbm5pbmZvID0gVGV4dERhdHVtR2V0Q1N0cmlu ZyhkYXR1bSk7CisJfQogCiAJLyogR2V0IHNsb3RuYW1lICovCiAJZGF0dW0gPSBTeXNDYWNoZUdl dEF0dHIoU1VCU0NSSVBUSU9OT0lELCB0dXAsCkBAIC0xNzk2LDYgKzE5MzcsNyBAQCBEcm9wU3Vi c2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJ fQogCiAJLyogQ2xlYW4gdXAgZGVwZW5kZW5jaWVzICovCisJZGVsZXRlRGVwZW5kZW5jeVJlY29y ZHNGb3IoU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViaWQsIGZhbHNlKTsKIAlkZWxldGVTaGFy ZWREZXBlbmRlbmN5UmVjb3Jkc0ZvcihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBzdWJpZCwgMCk7 CiAKIAkvKiBSZW1vdmUgYW55IGFzc29jaWF0ZWQgcmVsYXRpb24gc3luY2hyb25pemF0aW9uIHN0 YXRlcy4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jIGIvc3Jj L2JhY2tlbmQvZm9yZWlnbi9mb3JlaWduLmMKaW5kZXggNGMwNmUxZmYxYy4uOTU4ZTQxZjg3YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWduLmMKKysrIGIvc3JjL2JhY2tl bmQvZm9yZWlnbi9mb3JlaWduLmMKQEAgLTcxLDYgKzcxLDcgQEAgR2V0Rm9yZWlnbkRhdGFXcmFw cGVyRXh0ZW5kZWQoT2lkIGZkd2lkLCBiaXRzMTYgZmxhZ3MpCiAJZmR3LT5mZHduYW1lID0gcHN0 cmR1cChOYW1lU3RyKGZkd2Zvcm0tPmZkd25hbWUpKTsKIAlmZHctPmZkd2hhbmRsZXIgPSBmZHdm b3JtLT5mZHdoYW5kbGVyOwogCWZkdy0+ZmR3dmFsaWRhdG9yID0gZmR3Zm9ybS0+ZmR3dmFsaWRh dG9yOworCWZkdy0+ZmR3Y29ubmVjdGlvbiA9IGZkd2Zvcm0tPmZkd2Nvbm5lY3Rpb247CiAKIAkv KiBFeHRyYWN0IHRoZSBmZHdvcHRpb25zICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoRk9S RUlHTkRBVEFXUkFQUEVST0lELApAQCAtMTc1LDYgKzE3NiwzMSBAQCBHZXRGb3JlaWduU2VydmVy RXh0ZW5kZWQoT2lkIHNlcnZlcmlkLCBiaXRzMTYgZmxhZ3MpCiB9CiAKIAorLyoKKyAqIEZvcmVp Z25TZXJ2ZXJOYW1lIC0gZ2V0IG5hbWUgb2YgZm9yZWlnbiBzZXJ2ZXIuCisgKi8KK2NoYXIgKgor Rm9yZWlnblNlcnZlck5hbWUoT2lkIHNlcnZlcmlkKQoreworCUZvcm1fcGdfZm9yZWlnbl9zZXJ2 ZXIgc2VydmVyZm9ybTsKKwljaGFyCSAgICpzZXJ2ZXJuYW1lOworCUhlYXBUdXBsZQl0cDsKKwor CXRwID0gU2VhcmNoU3lzQ2FjaGUxKEZPUkVJR05TRVJWRVJPSUQsIE9iamVjdElkR2V0RGF0dW0o c2VydmVyaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1Is ICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBmb3JlaWduIHNlcnZlciAldSIsIHNlcnZlcmlkKTsK KworCXNlcnZlcmZvcm0gPSAoRm9ybV9wZ19mb3JlaWduX3NlcnZlcikgR0VUU1RSVUNUKHRwKTsK KworCXNlcnZlcm5hbWUgPSBwc3RyZHVwKE5hbWVTdHIoc2VydmVyZm9ybS0+c3J2bmFtZSkpOwor CisJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKworCXJldHVybiBzZXJ2ZXJuYW1lOworfQorCisKIC8q CiAgKiBHZXRGb3JlaWduU2VydmVyQnlOYW1lIC0gbG9vayB1cCB0aGUgZm9yZWlnbiBzZXJ2ZXIg ZGVmaW5pdGlvbiBieSBuYW1lLgogICovCkBAIC0xOTAsNiArMjE2LDQ2IEBAIEdldEZvcmVpZ25T ZXJ2ZXJCeU5hbWUoY29uc3QgY2hhciAqc3J2bmFtZSwgYm9vbCBtaXNzaW5nX29rKQogfQogCiAK Ky8qCisgKiBSZXRyaWV2ZSBjb25uZWN0aW9uIHN0cmluZyBmcm9tIHNlcnZlcidzIEZEVy4KKyAq LworY2hhciAqCitGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZyhPaWQgdXNlcmlkLCBPaWQg c2VydmVyaWQpCit7CisJc3RhdGljIE1lbW9yeUNvbnRleHQgdGVtcENvbnRleHQgPSBOVUxMOwor CU1lbW9yeUNvbnRleHQgb2xkY3h0OworCUZvcmVpZ25TZXJ2ZXIgKnNlcnZlcjsKKwlGb3JlaWdu RGF0YVdyYXBwZXIgKmZkdzsKKwlEYXR1bQkJY29ubmVjdGlvbl9kYXR1bTsKKwl0ZXh0CSAgICpj b25uZWN0aW9uX3RleHQ7CisJY2hhcgkgICAqcmVzdWx0OworCisJaWYgKHRlbXBDb250ZXh0ID09 IE5VTEwpCisJeworCQl0ZW1wQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50 TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJInRlbXAgY29udGV4dCIsCisJCQkJCQkJCQkJCUFM TE9DU0VUX0RFRkFVTFRfU0laRVMpOworCX0KKworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyh0ZW1wQ29udGV4dCk7CisKKwlzZXJ2ZXIgPSBHZXRGb3JlaWduU2VydmVyKHNlcnZlcmlk KTsKKwlmZHcgPSBHZXRGb3JlaWduRGF0YVdyYXBwZXIoc2VydmVyLT5mZHdpZCk7CisJY29ubmVj dGlvbl9kYXR1bSA9IE9pZEZ1bmN0aW9uQ2FsbDIoZmR3LT5mZHdjb25uZWN0aW9uLAorCQkJCQkJ CQkJCU9iamVjdElkR2V0RGF0dW0odXNlcmlkKSwKKwkJCQkJCQkJCQlPYmplY3RJZEdldERhdHVt KHNlcnZlcmlkKSk7CisJY29ubmVjdGlvbl90ZXh0ID0gRGF0dW1HZXRUZXh0UFAoY29ubmVjdGlv bl9kYXR1bSk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCXJlc3VsdCA9 IHRleHRfdG9fY3N0cmluZyhjb25uZWN0aW9uX3RleHQpOworCisJTWVtb3J5Q29udGV4dFJlc2V0 KHRlbXBDb250ZXh0KTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKwogLyoKICAqIEdldFVzZXJN YXBwaW5nIC0gbG9vayB1cCB0aGUgdXNlciBtYXBwaW5nLgogICoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGRk NDU4MTgyZjAuLmE3Yzc1OWZiM2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNTM3OSw2ICs1Mzc5LDggQEAg ZmR3X29wdGlvbjoKIAkJCXwgTk8gSEFORExFUgkJCQkJCXsgJCQgPSBtYWtlRGVmRWxlbSgiaGFu ZGxlciIsIE5VTEwsIEAxKTsgfQogCQkJfCBWQUxJREFUT1IgaGFuZGxlcl9uYW1lCQkJeyAkJCA9 IG1ha2VEZWZFbGVtKCJ2YWxpZGF0b3IiLCAoTm9kZSAqKSAkMiwgQDEpOyB9CiAJCQl8IE5PIFZB TElEQVRPUgkJCQkJCXsgJCQgPSBtYWtlRGVmRWxlbSgidmFsaWRhdG9yIiwgTlVMTCwgQDEpOyB9 CisJCQl8IENPTk5FQ1RJT04gaGFuZGxlcl9uYW1lCQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJjb25u ZWN0aW9uIiwgKE5vZGUgKikgJDIsIEAxKTsgfQorCQkJfCBOTyBDT05ORUNUSU9OCQkJCQkJeyAk JCA9IG1ha2VEZWZFbGVtKCJjb25uZWN0aW9uIiwgTlVMTCwgQDEpOyB9CiAJCTsKIAogZmR3X29w dGlvbnM6CkBAIC0xMDczNSw2ICsxMDczNywxNiBAQCBDcmVhdGVTdWJzY3JpcHRpb25TdG10Ogog CQkJCQluLT5vcHRpb25zID0gJDg7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8 IENSRUFURSBTVUJTQ1JJUFRJT04gbmFtZSBTRVJWRVIgbmFtZSBQVUJMSUNBVElPTiBuYW1lX2xp c3Qgb3B0X2RlZmluaXRpb24KKwkJCQl7CisJCQkJCUNyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKm4g PQorCQkJCQkJbWFrZU5vZGUoQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCk7CisJCQkJCW4tPnN1Ym5h bWUgPSAkMzsKKwkJCQkJbi0+c2VydmVybmFtZSA9ICQ1OworCQkJCQluLT5wdWJsaWNhdGlvbiA9 ICQ3OworCQkJCQluLT5vcHRpb25zID0gJDg7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9 CiAJCTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xMDc2NCw2ICsxMDc3NiwxNiBAQCBB bHRlclN1YnNjcmlwdGlvblN0bXQ6CiAJCQkJCW4tPmNvbm5pbmZvID0gJDU7CiAJCQkJCSQkID0g KE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEFMVEVSIFNVQlNDUklQVElPTiBuYW1lIFNFUlZFUiBu YW1lCisJCQkJeworCQkJCQlBbHRlclN1YnNjcmlwdGlvblN0bXQgKm4gPQorCQkJCQkJbWFrZU5v ZGUoQWx0ZXJTdWJzY3JpcHRpb25TdG10KTsKKworCQkJCQluLT5raW5kID0gQUxURVJfU1VCU0NS SVBUSU9OX1NFUlZFUjsKKwkJCQkJbi0+c3VibmFtZSA9ICQzOworCQkJCQluLT5zZXJ2ZXJuYW1l ID0gJDU7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQl8IEFMVEVSIFNVQlNDUklQ VElPTiBuYW1lIFJFRlJFU0ggUFVCTElDQVRJT04gb3B0X2RlZmluaXRpb24KIAkJCQl7CiAJCQkJ CUFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqbiA9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYwppbmRleCA5MjVkZmY5Y2M0Li40MDU1ZWE5ZjEzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM5NzEsNyArMzk3MSw3IEBAIG1heWJlX3Jl cmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAkvKiBFbnN1cmUgYWxsb2NhdGlvbnMgaW4gcGVybWFu ZW50IGNvbnRleHQuICovCiAJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29u dGV4dCk7CiAKLQluZXdzdWIgPSBHZXRTdWJzY3JpcHRpb24oTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgdHJ1ZSk7CisJbmV3c3ViID0gR2V0U3Vic2NyaXB0aW9uKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHRydWUsIHRydWUpOwogCiAJLyoKIAkgKiBFeGl0IGlmIHRoZSBzdWJzY3JpcHRp b24gd2FzIHJlbW92ZWQuIFRoaXMgbm9ybWFsbHkgc2hvdWxkIG5vdCBoYXBwZW4KQEAgLTQwNzcs NyArNDA3Nyw5IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIH0KIAogLyoKLSAq IENhbGxiYWNrIGZyb20gc3Vic2NyaXB0aW9uIHN5c2NhY2hlIGludmFsaWRhdGlvbi4KKyAqIENh bGxiYWNrIGZyb20gc3Vic2NyaXB0aW9uIHN5c2NhY2hlIGludmFsaWRhdGlvbi4gQWxzbyBuZWVk ZWQgZm9yIHNlcnZlciBvcgorICogdXNlciBtYXBwaW5nIGludmFsaWRhdGlvbiwgd2hpY2ggY2Fu IGNoYW5nZSB0aGUgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBmb3IKKyAqIHN1YnNjcmlwdGlvbnMg dGhhdCBjb25uZWN0IHVzaW5nIGEgc2VydmVyIG9iamVjdC4KICAqLwogc3RhdGljIHZvaWQKIHN1 YnNjcmlwdGlvbl9jaGFuZ2VfY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2 YWx1ZSkKQEAgLTQ2NTksNyArNDY2MSw3IEBAIEluaXRpYWxpemVMb2dSZXBXb3JrZXIodm9pZCkK IAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhBcHBseUNvbnRleHQpOwogCi0JTXlTdWJzY3JpcHRpb24gPSBHZXRTdWJzY3JpcHRpb24o TXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJTXlTdWJzY3JpcHRpb24gPSBHZXRT dWJzY3JpcHRpb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSwgdHJ1ZSk7CiAJaWYg KCFNeVN1YnNjcmlwdGlvbikKIAl7CiAJCWVyZXBvcnQoTE9HLApAQCAtNDY5Niw2ICs0Njk4LDE0 IEBAIEluaXRpYWxpemVMb2dSZXBXb3JrZXIodm9pZCkKIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVD YWxsYmFjayhTVUJTQ1JJUFRJT05PSUQsCiAJCQkJCQkJCSAgc3Vic2NyaXB0aW9uX2NoYW5nZV9j YiwKIAkJCQkJCQkJICAoRGF0dW0pIDApOworCS8qIEtlZXAgdXMgaW5mb3JtZWQgYWJvdXQgc3Vi c2NyaXB0aW9uIGNoYW5nZXMuICovCisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soRk9S RUlHTlNFUlZFUk9JRCwKKwkJCQkJCQkJICBzdWJzY3JpcHRpb25fY2hhbmdlX2NiLAorCQkJCQkJ CQkgIChEYXR1bSkgMCk7CisJLyogS2VlcCB1cyBpbmZvcm1lZCBhYm91dCBzdWJzY3JpcHRpb24g Y2hhbmdlcy4gKi8KKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhVU0VSTUFQUElOR09J RCwKKwkJCQkJCQkJICBzdWJzY3JpcHRpb25fY2hhbmdlX2NiLAorCQkJCQkJCQkgIChEYXR1bSkg MCk7CiAKIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhBVVRIT0lELAogCQkJCQkJCQkg IHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBkOGM2MzMwNzMyLi4wZWZi NGE1NTRkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ4NDIsNiArNDg0Miw3IEBAIGdldFN1YnNjcmlwdGlv bnMoQXJjaGl2ZSAqZm91dCkKIAlpbnQJCQlpX3N1YmRpc2FibGVvbmVycjsKIAlpbnQJCQlpX3N1 YnBhc3N3b3JkcmVxdWlyZWQ7CiAJaW50CQkJaV9zdWJydW5hc293bmVyOworCWludAkJCWlfc3Vi c2VydmVybmFtZTsKIAlpbnQJCQlpX3N1YmNvbm5pbmZvOwogCWludAkJCWlfc3Vic2xvdG5hbWU7 CiAJaW50CQkJaV9zdWJzeW5jY29tbWl0OwpAQCAtNDkyMiwxNiArNDkyMywyOSBAQCBnZXRTdWJz Y3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAx NzAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiIHMuc3ViZmFp bG92ZXJcbiIpOworCQkJCQkJCSAiIHMuc3ViZmFpbG92ZXIsXG4iKTsKIAllbHNlCiAJCWFwcGVu ZFBRRXhwQnVmZmVyKHF1ZXJ5LAotCQkJCQkJICAiIGZhbHNlIEFTIHN1YmZhaWxvdmVyXG4iKTsK KwkJCQkJCSAgIiBmYWxzZSBBUyBzdWJmYWlsb3ZlcixcbiIpOworCisJaWYgKGRvcHQtPmJpbmFy eV91cGdyYWRlICYmIGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTgwMDAwKQorCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiBmcy5zcnZuYW1lIEFTIHN1YnNlcnZlcm5hbWUsXG4iCisJCQkJ CQkJICIgby5yZW1vdGVfbHNuIEFTIHN1Ym9yaWdpbnJlbW90ZWxzbixcbiIKKwkJCQkJCQkgIiBz LnN1YmVuYWJsZWQsXG4iCisJCQkJCQkJICIgcy5zdWJmYWlsb3ZlclxuIik7CisJZWxzZQorCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBOVUxMIEFTIHN1YnNlcnZlcm5hbWUsXG4iCisJ CQkJCQkJICIgTlVMTCBBUyBzdWJvcmlnaW5yZW1vdGVsc24sXG4iCisJCQkJCQkJICIgZmFsc2Ug QVMgc3ViZW5hYmxlZCxcbiIKKwkJCQkJCQkgIiBmYWxzZSBBUyBzdWJmYWlsb3ZlclxuIik7CiAK IAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCSAiRlJPTSBwZ19zdWJzY3JpcHRp b24gc1xuIik7CiAKIAlpZiAoZG9wdC0+YmluYXJ5X3VwZ3JhZGUgJiYgZm91dC0+cmVtb3RlVmVy c2lvbiA+PSAxNzAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAi TEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfZm9yZWlnbl9zZXJ2ZXIgZnMgXG4iCisJCQkJCQkJICIg ICAgT04gZnMub2lkID0gcy5zdWJzZXJ2ZXIgXG4iCiAJCQkJCQkJICJMRUZUIEpPSU4gcGdfY2F0 YWxvZy5wZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVzIG8gXG4iCiAJCQkJCQkJICIgICAgT04g by5leHRlcm5hbF9pZCA9ICdwZ18nIHx8IHMub2lkOjp0ZXh0IFxuIik7CiAKQEAgLTQ5NTcsNiAr NDk3MSw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpX3N1YmRpc2FibGVv bmVyciA9IFBRZm51bWJlcihyZXMsICJzdWJkaXNhYmxlb25lcnIiKTsKIAlpX3N1YnBhc3N3b3Jk cmVxdWlyZWQgPSBQUWZudW1iZXIocmVzLCAic3VicGFzc3dvcmRyZXF1aXJlZCIpOwogCWlfc3Vi cnVuYXNvd25lciA9IFBRZm51bWJlcihyZXMsICJzdWJydW5hc293bmVyIik7CisJaV9zdWJzZXJ2 ZXJuYW1lID0gUFFmbnVtYmVyKHJlcywgInN1YnNlcnZlcm5hbWUiKTsKIAlpX3N1YmNvbm5pbmZv ID0gUFFmbnVtYmVyKHJlcywgInN1YmNvbm5pbmZvIik7CiAJaV9zdWJzbG90bmFtZSA9IFBRZm51 bWJlcihyZXMsICJzdWJzbG90bmFtZSIpOwogCWlfc3Vic3luY2NvbW1pdCA9IFBRZm51bWJlcihy ZXMsICJzdWJzeW5jY29tbWl0Iik7CkBAIC00OTc3LDcgKzQ5OTIsMTAgQEAgZ2V0U3Vic2NyaXB0 aW9ucyhBcmNoaXZlICpmb3V0KQogCQlBc3NpZ25EdW1wSWQoJnN1YmluZm9baV0uZG9iaik7CiAJ CXN1YmluZm9baV0uZG9iai5uYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1 Ym5hbWUpKTsKIAkJc3ViaW5mb1tpXS5yb2xuYW1lID0gZ2V0Um9sZU5hbWUoUFFnZXR2YWx1ZShy ZXMsIGksIGlfc3Vib3duZXIpKTsKLQorCQlpZiAoUFFnZXRpc251bGwocmVzLCBpLCBpX3N1YnNl cnZlcm5hbWUpKQorCQkJc3ViaW5mb1tpXS5zdWJzZXJ2ZXJuYW1lID0gTlVMTDsKKwkJZWxzZQor CQkJc3ViaW5mb1tpXS5zdWJzZXJ2ZXJuYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBp LCBpX3N1YnNlcnZlcm5hbWUpKTsKIAkJc3ViaW5mb1tpXS5zdWJiaW5hcnkgPQogCQkJcGdfc3Ry ZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1YmJpbmFyeSkpOwogCQlzdWJpbmZvW2ldLnN1YnN0 cmVhbSA9CkBAIC01MjA1LDkgKzUyMjMsMTcgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpm b3V0LCBjb25zdCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWFwcGVuZFBRRXhwQnVmZmVy KGRlbHEsICJEUk9QIFNVQlNDUklQVElPTiAlcztcbiIsCiAJCQkJCSAgcXN1Ym5hbWUpOwogCi0J YXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJDUkVBVEUgU1VCU0NSSVBUSU9OICVzIENPTk5FQ1RJ T04gIiwKKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkNSRUFURSBTVUJTQ1JJUFRJT04gJXMg IiwKIAkJCQkJICBxc3VibmFtZSk7Ci0JYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHF1ZXJ5LCBzdWJp bmZvLT5zdWJjb25uaW5mbywgZm91dCk7CisJaWYgKHN1YmluZm8tPnN1YnNlcnZlcm5hbWUpCisJ eworCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIlNFUlZFUiAlcyIsIGZtdElkKHN1YmluZm8t PnN1YnNlcnZlcm5hbWUpKTsKKwl9CisJZWxzZQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVl cnksICJDT05ORUNUSU9OICIpOworCQlhcHBlbmRTdHJpbmdMaXRlcmFsQUgocXVlcnksIHN1Ymlu Zm8tPnN1YmNvbm5pbmZvLCBmb3V0KTsKKwl9CiAKIAkvKiBCdWlsZCBsaXN0IG9mIHF1b3RlZCBw dWJsaWNhdGlvbnMgYW5kIGFwcGVuZCB0aGVtIHRvIHF1ZXJ5LiAqLwogCWlmICghcGFyc2VQR0Fy cmF5KHN1YmluZm8tPnN1YnB1YmxpY2F0aW9ucywgJnB1Ym5hbWVzLCAmbnB1Ym5hbWVzKSkKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oCmluZGV4IDlmOTA3ZWQ1YWQuLjVmMmFhYjI5N2MgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjY2 LDYgKzY2Niw3IEBAIHR5cGVkZWYgc3RydWN0IF9TdWJzY3JpcHRpb25JbmZvCiAJY2hhcgkgICAq c3ViZGlzYWJsZW9uZXJyOwogCWNoYXIJICAgKnN1YnBhc3N3b3JkcmVxdWlyZWQ7CiAJY2hhcgkg ICAqc3VicnVuYXNvd25lcjsKKwljaGFyCSAgICpzdWJzZXJ2ZXJuYW1lOwogCWNoYXIJICAgKnN1 YmNvbm5pbmZvOwogCWNoYXIJICAgKnN1YnNsb3RuYW1lOwogCWNoYXIJICAgKnN1YnN5bmNjb21t aXQ7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggMWJlMDA1NmFmNy4uNmU1NDU5ZDIwMCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYwpAQCAtMzY2MCw3ICszNjYwLDcgQEAgbWF0Y2hfcHJldmlvdXNf d29yZHMoaW50IHBhdHRlcm5faWQsCiAKIC8qIENSRUFURSBTVUJTQ1JJUFRJT04gKi8KIAllbHNl IGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiU1VCU0NSSVBUSU9OIiwgTWF0Y2hBbnkpKQotCQlDT01Q TEVURV9XSVRIKCJDT05ORUNUSU9OIik7CisJCUNPTVBMRVRFX1dJVEgoIlNFUlZFUiIsICJDT05O RUNUSU9OIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlNVQlNDUklQVElPTiIsIE1h dGNoQW55LCAiQ09OTkVDVElPTiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSCgiUFVCTElD QVRJT04iKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiU1VCU0NSSVBUSU9OIiwgTWF0 Y2hBbnksICJDT05ORUNUSU9OIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf Zm9yZWlnbl9kYXRhX3dyYXBwZXIuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZm9yZWlnbl9k YXRhX3dyYXBwZXIuaAppbmRleCAwZDg3NTlkM2ZkLi43MDBkNmVlZDY1IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyLmgKKysrIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19mb3JlaWduX2RhdGFfd3JhcHBlci5oCkBAIC0zNiw2ICszNiw5IEBA IENBVEFMT0cocGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIsMjMyOCxGb3JlaWduRGF0YVdyYXBwZXJS ZWxhdGlvbklkKQogCU9pZAkJCWZkd3ZhbGlkYXRvciBCS0lfTE9PS1VQX09QVChwZ19wcm9jKTsJ Lyogb3B0aW9uIHZhbGlkYXRpb24KIAkJCQkJCQkJCQkJCQkJICogZnVuY3Rpb24sIG9yIDAgaWYK IAkJCQkJCQkJCQkJCQkJICogbm9uZSAqLworCU9pZAkJCWZkd2Nvbm5lY3Rpb24gQktJX0xPT0tV UF9PUFQocGdfcHJvYyk7CS8qIGNvbm5lY3Rpb24gc3RyaW5nCisJCQkJCQkJCQkJCQkJCSAqIGZ1 bmN0aW9uLCBvciAwIGlmCisJCQkJCQkJCQkJCQkJCSAqIG5vbmUgKi8KIAogI2lmZGVmIENBVEFM T0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJYWNs aXRlbQkJZmR3YWNsWzFdOwkJLyogYWNjZXNzIHBlcm1pc3Npb25zICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCBiMjVmM2ZlYTU2Li4zOGQxYzc4M2E1IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTk4LDkgKzk4LDExIEBAIENBVEFMT0co cGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9S RUxBVElPTiBCS0lfUk9XCiAJCQkJCQkJCSAqIHNsb3RzKSBpbiB0aGUgdXBzdHJlYW0gZGF0YWJh c2UgYXJlIGVuYWJsZWQKIAkJCQkJCQkJICogdG8gYmUgc3luY2hyb25pemVkIHRvIHRoZSBzdGFu ZGJ5cy4gKi8KIAorCU9pZAkJCXN1YnNlcnZlcjsJCS8qIFNldCBpZiBjb25uZWN0aW5nIHdpdGgg c2VydmVyICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBm aWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNo ZXIgKi8KLQl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CisJdGV4dAkJc3Vi Y29ubmluZm87CS8qIFNldCBpZiBjb25uZWN0aW5nIHdpdGggY29ubmVjdGlvbiBzdHJpbmcgKi8K IAogCS8qIFNsb3QgbmFtZSBvbiBwdWJsaXNoZXIgKi8KIAlOYW1lRGF0YQlzdWJzbG90bmFtZSBC S0lfRk9SQ0VfTlVMTDsKQEAgLTE3NCw3ICsxNzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3Jp cHRpb24KICAqLwogI2RlZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCAncCcKIAotZXh0 ZXJuIFN1YnNjcmlwdGlvbiAqR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5n X29rKTsKK2V4dGVybiBTdWJzY3JpcHRpb24gKkdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJv b2wgbWlzc2luZ19vaywKKwkJCQkJCQkJCSBib29sIGFjbGNoZWNrKTsKIGV4dGVybiB2b2lkIEZy ZWVTdWJzY3JpcHRpb24oU3Vic2NyaXB0aW9uICpzdWIpOwogZXh0ZXJuIHZvaWQgRGlzYWJsZVN1 YnNjcmlwdGlvbihPaWQgc3ViaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9mb3JlaWdu L2ZvcmVpZ24uaCBiL3NyYy9pbmNsdWRlL2ZvcmVpZ24vZm9yZWlnbi5oCmluZGV4IDgyYjgxNTMx MDAuLmI0MDI1ZTdmMWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZvcmVpZ24vZm9yZWlnbi5o CisrKyBiL3NyYy9pbmNsdWRlL2ZvcmVpZ24vZm9yZWlnbi5oCkBAIC0yOCw2ICsyOCw3IEBAIHR5 cGVkZWYgc3RydWN0IEZvcmVpZ25EYXRhV3JhcHBlcgogCWNoYXIJICAgKmZkd25hbWU7CQkvKiBO YW1lIG9mIHRoZSBGRFcgKi8KIAlPaWQJCQlmZHdoYW5kbGVyOwkJLyogT2lkIG9mIGhhbmRsZXIg ZnVuY3Rpb24sIG9yIDAgKi8KIAlPaWQJCQlmZHd2YWxpZGF0b3I7CS8qIE9pZCBvZiB2YWxpZGF0 b3IgZnVuY3Rpb24sIG9yIDAgKi8KKwlPaWQJCQlmZHdjb25uZWN0aW9uOwkvKiBPaWQgb2YgY29u bmVjdGlvbiBzdHJpbmcgZnVuY3Rpb24sIG9yIDAgKi8KIAlMaXN0CSAgICpvcHRpb25zOwkJLyog ZmR3b3B0aW9ucyBhcyBEZWZFbGVtIGxpc3QgKi8KIH0gRm9yZWlnbkRhdGFXcmFwcGVyOwogCkBA IC02NSwxMCArNjYsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgRm9yZWlnblRhYmxlCiAKIAogZXh0ZXJu IEZvcmVpZ25TZXJ2ZXIgKkdldEZvcmVpZ25TZXJ2ZXIoT2lkIHNlcnZlcmlkKTsKK2V4dGVybiBj aGFyICpGb3JlaWduU2VydmVyTmFtZShPaWQgc2VydmVyaWQpOwogZXh0ZXJuIEZvcmVpZ25TZXJ2 ZXIgKkdldEZvcmVpZ25TZXJ2ZXJFeHRlbmRlZChPaWQgc2VydmVyaWQsCiAJCQkJCQkJCQkJCSAg IGJpdHMxNiBmbGFncyk7CiBleHRlcm4gRm9yZWlnblNlcnZlciAqR2V0Rm9yZWlnblNlcnZlckJ5 TmFtZShjb25zdCBjaGFyICpzcnZuYW1lLAogCQkJCQkJCQkJCQkgYm9vbCBtaXNzaW5nX29rKTsK K2V4dGVybiBjaGFyICpGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZyhPaWQgdXNlcmlkLCBP aWQgc2VydmVyaWQpOwogZXh0ZXJuIFVzZXJNYXBwaW5nICpHZXRVc2VyTWFwcGluZyhPaWQgdXNl cmlkLCBPaWQgc2VydmVyaWQpOwogZXh0ZXJuIEZvcmVpZ25EYXRhV3JhcHBlciAqR2V0Rm9yZWln bkRhdGFXcmFwcGVyKE9pZCBmZHdpZCk7CiBleHRlcm4gRm9yZWlnbkRhdGFXcmFwcGVyICpHZXRG b3JlaWduRGF0YVdyYXBwZXJFeHRlbmRlZChPaWQgZmR3aWQsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK aW5kZXggYjQwYjY2MWVjOC4uMzBhN2JkZTg2MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAt NDIyMiw2ICs0MjIyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdAog ewogCU5vZGVUYWcJCXR5cGU7CiAJY2hhcgkgICAqc3VibmFtZTsJCS8qIE5hbWUgb2YgdGhlIHN1 YnNjcmlwdGlvbiAqLworCWNoYXIJICAgKnNlcnZlcm5hbWU7CQkvKiBTZXJ2ZXIgbmFtZSBvZiBw dWJsaXNoZXIgKi8KIAljaGFyCSAgICpjb25uaW5mbzsJCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRv IHB1Ymxpc2hlciAqLwogCUxpc3QJICAgKnB1YmxpY2F0aW9uOwkvKiBPbmUgb3IgbW9yZSBwdWJs aWNhdGlvbiB0byBzdWJzY3JpYmUgdG8gKi8KIAlMaXN0CSAgICpvcHRpb25zOwkJLyogTGlzdCBv ZiBEZWZFbGVtIG5vZGVzICovCkBAIC00MjMwLDYgKzQyMzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBD cmVhdGVTdWJzY3JpcHRpb25TdG10CiB0eXBlZGVmIGVudW0gQWx0ZXJTdWJzY3JpcHRpb25UeXBl CiB7CiAJQUxURVJfU1VCU0NSSVBUSU9OX09QVElPTlMsCisJQUxURVJfU1VCU0NSSVBUSU9OX1NF UlZFUiwKIAlBTFRFUl9TVUJTQ1JJUFRJT05fQ09OTkVDVElPTiwKIAlBTFRFUl9TVUJTQ1JJUFRJ T05fU0VUX1BVQkxJQ0FUSU9OLAogCUFMVEVSX1NVQlNDUklQVElPTl9BRERfUFVCTElDQVRJT04s CkBAIC00MjQ0LDYgKzQyNDYsNyBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclN1YnNjcmlwdGlvblN0 bXQKIAlOb2RlVGFnCQl0eXBlOwogCUFsdGVyU3Vic2NyaXB0aW9uVHlwZSBraW5kOyAvKiBBTFRF Ul9TVUJTQ1JJUFRJT05fT1BUSU9OUywgZXRjICovCiAJY2hhcgkgICAqc3VibmFtZTsJCS8qIE5h bWUgb2YgdGhlIHN1YnNjcmlwdGlvbiAqLworCWNoYXIJICAgKnNlcnZlcm5hbWU7CQkvKiBTZXJ2 ZXIgbmFtZSBvZiBwdWJsaXNoZXIgKi8KIAljaGFyCSAgICpjb25uaW5mbzsJCS8qIENvbm5lY3Rp b24gc3RyaW5nIHRvIHB1Ymxpc2hlciAqLwogCUxpc3QJICAgKnB1YmxpY2F0aW9uOwkvKiBPbmUg b3IgbW9yZSBwdWJsaWNhdGlvbiB0byBzdWJzY3JpYmUgdG8gKi8KIAlMaXN0CSAgICpvcHRpb25z OwkJLyogTGlzdCBvZiBEZWZFbGVtIG5vZGVzICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lk am9pbnMub3V0CmluZGV4IDIxNWViODk5YmUuLjU5YzY0MTI2YmQgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvb2lkam9pbnMub3V0CkBAIC0yMjQsNiArMjI0LDcgQEAgTk9USUNFOiAgY2hlY2tp bmcgcGdfZXh0ZW5zaW9uIHtleHRjb25maWd9ID0+IHBnX2NsYXNzIHtvaWR9CiBOT1RJQ0U6ICBj aGVja2luZyBwZ19mb3JlaWduX2RhdGFfd3JhcHBlciB7ZmR3b3duZXJ9ID0+IHBnX2F1dGhpZCB7 b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIge2Zkd2hhbmRs ZXJ9ID0+IHBnX3Byb2Mge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2ZvcmVpZ25fZGF0YV93 cmFwcGVyIHtmZHd2YWxpZGF0b3J9ID0+IHBnX3Byb2Mge29pZH0KK05PVElDRTogIGNoZWNraW5n IHBnX2ZvcmVpZ25fZGF0YV93cmFwcGVyIHtmZHdjb25uZWN0aW9ufSA9PiBwZ19wcm9jIHtvaWR9 CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19mb3JlaWduX3NlcnZlciB7c3J2b3duZXJ9ID0+IHBnX2F1 dGhpZCB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfZm9yZWlnbl9zZXJ2ZXIge3NydmZkd30g PT4gcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX3Vz ZXJfbWFwcGluZyB7dW11c2VyfSA9PiBwZ19hdXRoaWQge29pZH0KLS0gCjIuMzQuMQoK --=-BkSJr5vpL591b7nREsOo--