Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1foj3N-0005e3-Dr for pgsql-hackers@arkaria.postgresql.org; Sun, 12 Aug 2018 05:36:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1foj3I-0008SM-Hz for pgsql-hackers@arkaria.postgresql.org; Sun, 12 Aug 2018 05:36:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1foj3I-0008SE-1Q for pgsql-hackers@lists.postgresql.org; Sun, 12 Aug 2018 05:36:32 +0000 Received: from mail-wm0-x236.google.com ([2a00:1450:400c:c09::236]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1foj32-0003hq-DR for pgsql-hackers@lists.postgresql.org; Sun, 12 Aug 2018 05:36:31 +0000 Received: by mail-wm0-x236.google.com with SMTP id r24-v6so4787513wmh.0 for ; Sat, 11 Aug 2018 22:36:15 -0700 (PDT) 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=RQApd3RiozF/dPAS9gUkF/6CF2gbC6Q9KotU+DY8RKI=; b=TfwrNxjl4YVwD+DyPvka8LhGV8IEXUDHw2uEluuw5hdCjzyh2cC95/dJx208JetOUq vJ7as7cVqDpLhn9ojTqxw5AqLA+YraLG5L/5sKjDUX4VoNPaMhscv7ZgK0cmUsbQkTFU bMijqvrmdZ6FncPHaXMsViWpMelr56UjBbVT3pnkreaJAj3iw+rJskhAdpkVbdV1O2AL VnKUQtWg8Mh+63T+n9E4A3gQxRdjms/9xC946PCKgC8LtqxhZBHGD3Eioxk+z76CICRT gz9F79/vYMTJjSwQKVXwrscgLbjmyZ7Gvdo0M/T4RIFSW9gTnif2LTdPoWtaoR8nYh12 +F6g== 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=RQApd3RiozF/dPAS9gUkF/6CF2gbC6Q9KotU+DY8RKI=; b=TTdE33eIPpY1YoQDLbPDliGDYh1imWWVgI+eP+png3RwJSF+t1Bl2qSfZoJRhCGozB PO9CkM3j8iWClBvwrLNYTlmdwq5HqBGOSiQa6Vo57351FHxuP741/s6MriDT9cefhDRN v8a4foautZAJxhXeaY2xN0LsKn9kI4U+CIyABuRtfyBGHBBOgcCNHxI67n9ngscuAXRn 2uHDiXNE80o5cIFIV6JTQHJokZCezNm7YWM508s5AGjOfgUscl3XT1icuFbmvbfzFl43 d53gGZ6S6ZnQaIdzM/2kAvjVNYpV+EWOmXaSF7Y7nhQKbnZPADwrIX2XqZJJCqdH9xvy kGpA== X-Gm-Message-State: AOUpUlEnY5YTthaIHy1fSDl1AutG8FEYhe49+KvI3mWk6kaj1n585nxg xlGTWeo1sjvbfMXZLqlM6Zy4LYm75vplMlVeqSo= X-Google-Smtp-Source: AA+uWPwWtyWI5XdjpBRstFmJH0YOveDrI7cJ4y67nfrle+k5pAoqQbNFIRnE8qr6mUEO4r7B1ROhpm80fdar5frsJbA= X-Received: by 2002:a1c:3411:: with SMTP id b17-v6mr4970135wma.85.1534052173891; Sat, 11 Aug 2018 22:36:13 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a5d:428a:0:0:0:0:0 with HTTP; Sat, 11 Aug 2018 22:35:33 -0700 (PDT) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> <28924bcc-9242-9798-e4e8-9d83cea3fef6@dalibo.com> From: Pavel Stehule Date: Sun, 12 Aug 2018 07:35:33 +0200 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Gilles Darold Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e481cd0573365a75" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000e481cd0573365a75 Content-Type: multipart/alternative; boundary="000000000000e481c80573365a73" --000000000000e481c80573365a73 Content-Type: text/plain; charset="UTF-8" Hi 2018-08-11 20:46 GMT+02:00 Pavel Stehule : > > > 2018-08-11 7:39 GMT+02:00 Pavel Stehule : > >> Hi >> >> I am sending updated patch. It should to solve almost all Giles's and >> Peter's objections. >> >> I am not happy so executor access values of variables directly. It is >> most simple implementation - and I hope so it is good enough, but now the >> access to variables is too volatile. But it is works good enough for >> usability testing. >> >> I am thinking about some cache of used variables in ExprContext, so the >> variable in one ExprContext will look like stable - more like PLpgSQL >> variables. >> > > I wrote EState based schema variable values cache, so now the variables in > queries are stable (like PARAM_EXTERN) and can be used for optimization. > new update - after cleaning Regards Pavel > Regards > > Pavel > > >> >> Regards >> >> Pavel >> > > --000000000000e481c80573365a73 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi

2018-08-11 20:46 GMT+02:00 Pavel Stehule <<= a href=3D"mailto:pavel.stehule@gmail.com" target=3D"_blank">pavel.stehule@g= mail.com>:


2018-08-11 7:39 GMT+02:00 Pavel Stehule <pavel.stehule@gmail.c= om>:
= Hi

I am sending updated patch. It should to solve = almost all Giles's and Peter's objections.

I am not happy so executor access values of variables directly. It is most= simple implementation - and I hope so it is good enough, but now the acces= s to variables is too volatile. But it is works good enough for usability t= esting.

I am thinking about some cache of used= variables in ExprContext, so the variable in one ExprContext will look lik= e stable - more like PLpgSQL variables.=C2=A0
=
I wrote EState based schema variable values cache, so= now the variables in queries are stable (like PARAM_EXTERN) and can be use= d for optimization.

new update - after cleaning

Regards
Pavel

<= br>
Regards

Pavel
=C2=A0

Reg= ards

Pavel


--000000000000e481c80573365a73-- --000000000000e481cd0573365a75 Content-Type: text/x-patch; charset="US-ASCII"; name="schema-variables-180812-01.patch" Content-Disposition: attachment; filename="schema-variables-180812-01.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jkqf0ymp1 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggM2JiNDhkNGNjZi4uYjg2MzgyMzE2MCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTM1OSw2ICszNTksMTEgQEAKICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9n LXBnLXVzZXItbWFwcGluZyI+PHN0cnVjdG5hbWU+cGdfdXNlcl9tYXBwaW5nPC9zdHJ1Y3RuYW1l PjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5Pm1hcHBpbmdzIG9mIHVzZXJzIHRvIGZvcmVp Z24gc2VydmVyczwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy12YXJpYWJsZSI+PHN0cnVjdG5hbWU+cGdfdmFy aWFibGU8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+c2NoZW1hIHZh cmlhYmxlczwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4K ICAgPC90YWJsZT4KQEAgLTExMzExLDQgKzExMzE2LDEwNCBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xv Y2tzIHBsIExFRlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKIAogIDwvc2VjdDE+CiAKKyA8 c2VjdDEgaWQ9ImNhdGFsb2ctcGctdmFyaWFibGUiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdf dmFyaWFibGU8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFs b2ctcGctdmFyaWFibGUiPgorICAgPHByaW1hcnk+cGdfdmFyaWFibGU8L3ByaW1hcnk+CisgIDwv aW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIHRhYmxlIDxzdHJ1Y3RuYW1lPnBnX3Zhcmlh YmxlPC9zdHJ1Y3RuYW1lPiBob2xkcyBtZXRhZGF0YQorICAgb2Ygc2NoZW1hIHZhcmlhYmxlcy4K KyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ192aWV3czwv c3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisKKyAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAg PHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5Pk5hbWU8L2VudHJ5PgorICAgICAgPGVu dHJ5PlR5cGU8L2VudHJ5PgorICAgICAgPGVudHJ5PlJlZmVyZW5jZXM8L2VudHJ5PgorICAgICAg PGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKyAg ICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm9pZDwvc3Ry dWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5PlJvdyBpZGVudGlmaWVyIChoaWRk ZW4gYXR0cmlidXRlOyBtdXN0IGJlIGV4cGxpY2l0bHkgc2VsZWN0ZWQpPC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFybmFtZTwv c3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5uYW1lPC90eXBlPjwvZW50 cnk+CisgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBzY2hl bWEgdmFyaWFibGU8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5PjxzdHJ1Y3RmaWVsZD52YXJuYW1lc3BhY2U8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+b2lkPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1uYW1lc3BhY2UiPjxzdHJ1Y3RuYW1lPnBnX25hbWVz cGFjZTwvc3RydWN0bmFtZT48L2xpbms+Lm9pZDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVu dHJ5PgorICAgICAgIFRoZSBPSUQgb2YgdGhlIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIHRoaXMg dmFyaWFibGUKKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhcnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+b2lkPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy10eXBlIj48c3RydWN0bmFtZT5wZ190eXBlPC9zdHJ1 Y3RuYW1lPjwvbGluaz4ub2lkPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAg ICAgVGhlIE9JRCBvZiB0aGUgZGF0YSB0eXBlIG9mIHRoaXMgdmFyaWFibGUuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVs ZD52YXJ0eXBtb2Q8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+aW50 NDwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICA8ZW50cnk+Cisg ICAgICAgPHN0cnVjdGZpZWxkPnZhcnR5cG1vZDwvc3RydWN0ZmllbGQ+IHJlY29yZHMgdHlwZS1z cGVjaWZpYyBkYXRhCisgICAgICAgc3VwcGxpZWQgYXQgdGFibGUgY3JlYXRpb24gdGltZSAoZm9y IGV4YW1wbGUsIHRoZSBtYXhpbXVtCisgICAgICAgbGVuZ3RoIG9mIGEgPHR5cGU+dmFyY2hhcjwv dHlwZT4gY29sdW1uKS4gIEl0IGlzIHBhc3NlZCB0bworICAgICAgIHR5cGUtc3BlY2lmaWMgaW5w dXQgZnVuY3Rpb25zIGFuZCBsZW5ndGggY29lcmNpb24gZnVuY3Rpb25zLgorICAgICAgIFRoZSB2 YWx1ZSB3aWxsIGdlbmVyYWxseSBiZSAtMSBmb3IgdHlwZXMgdGhhdCBkbyBub3QgbmVlZCA8c3Ry dWN0ZmllbGQ+dmFydHlwbW9kPC9zdHJ1Y3RmaWVsZD4uCisgICAgICA8L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD52YXJvd25lcjwv c3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRy eT4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF1dGhp ZCI+PHN0cnVjdG5hbWU+cGdfYXV0aGlkPC9zdHJ1Y3RuYW1lPjwvbGluaz4ub2lkPC9saXRlcmFs PjwvZW50cnk+CisgICAgICA8ZW50cnk+T3duZXIgb2YgdGhlIHZhcmlhYmxlPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFyZGVm ZXhwcjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5wZ19ub2RlX3Ry ZWU8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5PlRo ZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFyaWFibGUgZGVmYXVsdCB2YWx1ZTwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZp ZWxkPnZhcmFjbDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5hY2xp dGVtW108L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5 PgorICAgICAgIEFjY2VzcyBwcml2aWxlZ2VzOyBzZWUKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJz cWwtZ3JhbnQiLz4gYW5kCisgICAgICAgPHhyZWYgbGlua2VuZD0ic3FsLXJldm9rZSIvPgorICAg ICAgIGZvciBkZXRhaWxzCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5 PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKwogPC9jaGFwdGVyPgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sCmluZGV4IGM4MWM4N2VmNDEuLjA2MzFjOWVkNTYgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Fs bGZpbGVzLnNnbWwKQEAgLTQ3LDYgKzQ3LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dt bCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBhbHRlclR5cGUgICAg ICAgICAgU1lTVEVNICJhbHRlcl90eXBlLnNnbWwiPgogPCFFTlRJVFkgYWx0ZXJVc2VyICAgICAg ICAgIFNZU1RFTSAiYWx0ZXJfdXNlci5zZ21sIj4KIDwhRU5USVRZIGFsdGVyVXNlck1hcHBpbmcg ICBTWVNURU0gImFsdGVyX3VzZXJfbWFwcGluZy5zZ21sIj4KKzwhRU5USVRZIGFsdGVyVmFyaWFi bGUgICAgICBTWVNURU0gImFsdGVyX3ZhcmlhYmxlLnNnbWwiPgogPCFFTlRJVFkgYWx0ZXJWaWV3 ICAgICAgICAgIFNZU1RFTSAiYWx0ZXJfdmlldy5zZ21sIj4KIDwhRU5USVRZIGFuYWx5emUgICAg ICAgICAgICBTWVNURU0gImFuYWx5emUuc2dtbCI+CiA8IUVOVElUWSBiZWdpbiAgICAgICAgICAg ICAgU1lTVEVNICJiZWdpbi5zZ21sIj4KQEAgLTk5LDYgKzEwMCw3IEBAIENvbXBsZXRlIGxpc3Qg b2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkg Y3JlYXRlVHlwZSAgICAgICAgIFNZU1RFTSAiY3JlYXRlX3R5cGUuc2dtbCI+CiA8IUVOVElUWSBj cmVhdGVVc2VyICAgICAgICAgU1lTVEVNICJjcmVhdGVfdXNlci5zZ21sIj4KIDwhRU5USVRZIGNy ZWF0ZVVzZXJNYXBwaW5nICBTWVNURU0gImNyZWF0ZV91c2VyX21hcHBpbmcuc2dtbCI+Cis8IUVO VElUWSBjcmVhdGVWYXJpYWJsZSAgICAgU1lTVEVNICJjcmVhdGVfdmFyaWFibGUuc2dtbCI+CiA8 IUVOVElUWSBjcmVhdGVWaWV3ICAgICAgICAgU1lTVEVNICJjcmVhdGVfdmlldy5zZ21sIj4KIDwh RU5USVRZIGRlYWxsb2NhdGUgICAgICAgICBTWVNURU0gImRlYWxsb2NhdGUuc2dtbCI+CiA8IUVO VElUWSBkZWNsYXJlICAgICAgICAgICAgU1lTVEVNICJkZWNsYXJlLnNnbWwiPgpAQCAtMTQ4LDYg KzE1MCw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRo aXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZHJvcFVzZXIgICAgICAgICAgIFNZU1RFTSAiZHJvcF91 c2VyLnNnbWwiPgogPCFFTlRJVFkgZHJvcFVzZXJNYXBwaW5nICAgIFNZU1RFTSAiZHJvcF91c2Vy X21hcHBpbmcuc2dtbCI+CiA8IUVOVElUWSBkcm9wVmlldyAgICAgICAgICAgU1lTVEVNICJkcm9w X3ZpZXcuc2dtbCI+Cis8IUVOVElUWSBkcm9wVmFyaWFibGUgICAgICAgU1lTVEVNICJkcm9wX3Zh cmlhYmxlLnNnbWwiPgogPCFFTlRJVFkgZW5kICAgICAgICAgICAgICAgIFNZU1RFTSAiZW5kLnNn bWwiPgogPCFFTlRJVFkgZXhlY3V0ZSAgICAgICAgICAgIFNZU1RFTSAiZXhlY3V0ZS5zZ21sIj4K IDwhRU5USVRZIGV4cGxhaW4gICAgICAgICAgICBTWVNURU0gImV4cGxhaW4uc2dtbCI+CkBAIC0x NTUsNiArMTU4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMg aW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBncmFudCAgICAgICAgICAgICAgU1lTVEVNICJn cmFudC5zZ21sIj4KIDwhRU5USVRZIGltcG9ydEZvcmVpZ25TY2hlbWEgU1lTVEVNICJpbXBvcnRf Zm9yZWlnbl9zY2hlbWEuc2dtbCI+CiA8IUVOVElUWSBpbnNlcnQgICAgICAgICAgICAgU1lTVEVN ICJpbnNlcnQuc2dtbCI+Cis8IUVOVElUWSBsZXQgICAgICAgICAgICAgICAgU1lTVEVNICJsZXQu c2dtbCI+CiA8IUVOVElUWSBsaXN0ZW4gICAgICAgICAgICAgU1lTVEVNICJsaXN0ZW4uc2dtbCI+ CiA8IUVOVElUWSBsb2FkICAgICAgICAgICAgICAgU1lTVEVNICJsb2FkLnNnbWwiPgogPCFFTlRJ VFkgbG9jayAgICAgICAgICAgICAgIFNZU1RFTSAibG9jay5zZ21sIj4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfdmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42 Mzc2YWM3MTZiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJp YWJsZS5zZ21sCkBAIC0wLDAgKzEsMTcwIEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRy eSBpZD0ic3FsLWFsdGVydmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWFsdGVydmFy aWFibGUiPgorICA8cHJpbWFyeT5BTFRFUiBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVy bT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5BTFRFUiBWQVJJQUJMRTwvcmVmZW50 cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwg LSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVm bmFtZWRpdj4KKyAgPHJlZm5hbWU+QUxURVIgVkFSSUFCTEU8L3JlZm5hbWU+CisgIDxyZWZwdXJw b3NlPgorICAgY2hhbmdlIHRoZSBkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUKKyAgPC9yZWZwdXJw b3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0FM VEVSIFZBUklBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4gT1dORVIgVE8geyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X293bmVy PC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1VTRVIgfCBTRVNTSU9OX1VTRVIgfQorQUxURVIgVkFS SUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBS RU5BTUUgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld19uYW1lPC9yZXBsYWNl YWJsZT4KK0FMVEVSIFZBUklBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4gU0VUIFNDSEVNQSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmV3X3NjaGVtYTwvcmVwbGFjZWFibGU+Cis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+ CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+ CisgICA8Y29tbWFuZD5BTFRFUiBWQVJJQUJMRTwvY29tbWFuZD4gY2hhbmdlcyB0aGUgZGVmaW5p dGlvbiBvZiBhbiBleGlzdGluZyB2YXJpYWJsZS4KKyAgIFRoZXJlIGFyZSBzZXZlcmFsIHN1YmZv cm1zOgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxs aXRlcmFsPk9XTkVSPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgVGhpcyBmb3JtIGNoYW5nZXMgdGhlIG93bmVyIG9mIHRoZSB2YXJpYWJsZS4KKyAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5SRU5BTUU8L2xpdGVyYWw+PC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0gY2hhbmdlcyB0aGUg bmFtZSBvZiB0aGUgdmFyaWFibGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+ U0VUIFNDSEVNQTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFRoaXMgZm9ybSBtb3ZlcyB0aGUgdmFyaWFibGUgaW50byBhbm90aGVyIHNjaGVtYS4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICA8 L3ZhcmlhYmxlbGlzdD4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgWW91IG11c3Qgb3duIHRo ZSB2YXJpYWJsZSB0byB1c2UgPGNvbW1hbmQ+QUxURVIgVkFSSUFCTEU8L2NvbW1hbmQ+LgorICAg VG8gY2hhbmdlIHRoZSBzY2hlbWEgb2YgYSB2YXJpYWJsZSwgeW91IG11c3QgYWxzbyBoYXZlCisg ICA8bGl0ZXJhbD5DUkVBVEU8L2xpdGVyYWw+IHByaXZpbGVnZSBvbiB0aGUgbmV3IHNjaGVtYS4K KyAgIFRvIGFsdGVyIHRoZSBvd25lciwgeW91IG11c3QgYWxzbyBiZSBhIGRpcmVjdCBvciBpbmRp cmVjdCBtZW1iZXIgb2YgdGhlIG5ldworICAgb3duaW5nIHJvbGUsIGFuZCB0aGF0IHJvbGUgbXVz dCBoYXZlIDxsaXRlcmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uCisgICB0aGUgdmFy aWFibGUncyBzY2hlbWEuICAoVGhlc2UgcmVzdHJpY3Rpb25zIGVuZm9yY2UgdGhhdCBhbHRlcmlu ZyB0aGUgb3duZXIKKyAgIGRvZXNuJ3QgZG8gYW55dGhpbmcgeW91IGNvdWxkbid0IGRvIGJ5IGRy b3BwaW5nIGFuZCByZWNyZWF0aW5nIHRoZSB2YXJpYWJsZS4KKyAgIEhvd2V2ZXIsIGEgc3VwZXJ1 c2VyIGNhbiBhbHRlciBvd25lcnNoaXAgb2YgYW55IHR5cGUgYW55d2F5LikKKyAgPC9wYXJhPgor IDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4K KworICAgPHBhcmE+CisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBu YW1lIChwb3NzaWJseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiBhbiBleGlzdGluZyB2YXJpYWJsZSB0 bworICAgICAgICBhbHRlci4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld19uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuZXcgbmFtZSBm b3IgdGhlIHZhcmlhYmxlLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAg IDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X293bmVyPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSB1c2VyIG5hbWUg b2YgdGhlIG5ldyBvd25lciBvZiB0aGUgdmFyaWFibGUuCisgICAgICAgPC9wYXJhPgorICAgICAg PC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfc2NoZW1hPC9y ZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAg ICAgIFRoZSBuZXcgc2NoZW1hIGZvciB0aGUgdmFyaWFibGUuCisgICAgICAgPC9wYXJhPgorICAg ICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+ CisgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFt cGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUbyByZW5hbWUgYSB2YXJpYWJsZToKKzxwcm9n cmFtbGlzdGluZz4KK0FMVEVSIFZBUklBQkxFIGZvbyBSRU5BTUUgVE8gYm9vOworPC9wcm9ncmFt bGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVG8gY2hhbmdlIHRoZSBvd25lciBv ZiB0aGUgdmFyaWFibGUgPGxpdGVyYWw+Ym9vPC9saXRlcmFsPgorICAgdG8gPGxpdGVyYWw+am9l PC9saXRlcmFsPjoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFZBUklBQkxFIGJvbyBPV05FUiBU TyBqb2U7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBj aGFuZ2UgdGhlIHNjaGVtYSBvZiB0aGUgdmFyaWFibGUgPGxpdGVyYWw+Ym9vPC9saXRlcmFsPgor ICAgdG8gPGxpdGVyYWw+cHJpdmF0ZTwvbGl0ZXJhbD46Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRF UiBWQVJJQUJMRSBib28gU0VUIFNDSEVNQSBwcml2YXRlOworPC9wcm9ncmFtbGlzdGluZz4KKyAg PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmls aXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoaXMgY29tbWFuIGlzIGEgUG9zdGdyZVNRTCBl eHRlbnNpb24uCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxIGlkPSJzcWwt YWx0ZXJ2YXJpYWJsZS1zZWUtYWxzbyI+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAg PHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3Fs LWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1iZXI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNx bC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2VjdDE+ Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFi bGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjA5OTUzODgxMwotLS0gL2Rldi9udWxsCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKQEAgLTAsMCArMSwxMzQg QEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVT UUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxl Ij4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1jcmVhdGV2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkNS RUFURSBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8 cmVmZW50cnl0aXRsZT5DUkVBVEUgVkFSSUFCTEU8L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52b2xu dW0+NzwvbWFudm9sbnVtPgorICA8cmVmbWlzY2luZm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50 czwvcmVmbWlzY2luZm8+CisgPC9yZWZtZXRhPgorCisgPHJlZm5hbWVkaXY+CisgIDxyZWZuYW1l PkNSRUFURSBWQVJJQUJMRTwvcmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+ZGVmaW5lIGEgbmV3IHBl cm1pc3Npb25lZCB0eXBlZCBzY2hlbWEgdmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1l ZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lzPgorQ1JFQVRFIFZBUklBQkxFIFsg SUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8 L3JlcGxhY2VhYmxlPiBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisgPHJlZnNl Y3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1h bmQ+Q1JFQVRFIFZBUklBQkxFPC9jb21tYW5kPiBjcmVhdGVzIGEgbmV3IHNjaGVtYSB2YXJpYWJs ZS4KKyAgIFRoZXNlIHZhcmlhYmxlcyBhcmUgc2NhbGFyIHR5cGVkLCBub24tdHJhbnNhY3Rpb25h bCwgYW5kLCBsaWtlIHJlbGF0aW9ucywKKyAgIGV4aXN0IHdpdGhpbiBhIHNjaGVtYSB3aXRoIGFj Y2VzcyBjb250cm9sbGVkIHZpYQorICAgPGNvbW1hbmQ+R1JBTlQ8L2NvbW1hbmQ+IGFuZCA8Y29t bWFuZD5SRVZPS0U8L2NvbW1hbmQ+LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgdmFs dWUgb2YgYSBzY2hlbWEgdmFyaWFibGUgaXMgc2Vzc2lvbi1sb2NhbC4gUmV0cmlldmluZworICAg YSB2YXJpYWJsZSdzIHZhbHVlIHdpbGwgcmV0dXJuIE5VTEwgdW5sZXNzIGl0cyB2YWx1ZSBoYXMg YmVlbiBzZXQKKyAgIHRvIHNvbWV0aGluZyBlbHNlIGluIHRoZSBjdXJyZW50IHNlc3Npb24uCisg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFJldHJpZXZhbCBpcyBkb25lIHZpYSB0aGUgPGZ1bmN0 aW9uPmdldF9zY2hlbWFfdmFyaWFibGU8L2Z1bmN0aW9uPmR1bnhyaW9uIG9yIHRoZSBTUUwKKyAg IGNvbW1hbmQgPGNvbW1hbmQ+U0VMRUNUPC9jb21tYW5kPi4gIFNldHRpbmcgb2YgdmFsdWVzIGlz IGRvbmUgdmlhIHRoZQorICAgPGZ1bmN0aW9uPnNldF9zY2hlbWFfdmFyaWFibGU8L2Z1bmN0aW9u PiBmdW5jdGlvbiBvciB0aGUgU1FMIGNvbW1hbmQKKyAgIDxjb21tYW5kPkxFVDwvY29tbWFuZD4u CisgICBOb3RhYmx5LCB3aGlsZSBzY2hlbWEgdmFyaWFibGVzIGFyZSBpbiBtYW55IHdheXMgYSBr aW5kIG9mIHRhYmxlIHlvdSBjYW5ub3QgdXNlCisgICA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+ IG9uIHRoZW0uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIEZvciBwdXJwb3NlcyBvZiBuYW1l IHVuaXF1ZW5lc3MgcmVsYXRpb24tbGlrZSBvYmplY3RzIChlLmcuLCB0YWJsZXMsIGluZGV4ZXMp CisgICB3aXRoaW4gdGhlIHNhbWUgc2NoZW1hIGFyZSBjb25zaWRlcmVkLiAgaS5lLiwgeW91IGNh bm5vdCBnaXZlIGEgdGFibGUgYW5kIGEKKyAgIHNjaGVtYSB2YXJpYWJsZSB0aGUgc2FtZSBuYW1l LiAgVGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mIHRoZW0gYmVpbmcgdHJlYXRlZAorICAgbGlrZSBy ZWxhdGlvbnMgZm9yIHB1cnBvc2VzIG9mIDxjb21tYW5kPlNFTEVDVDwvY29tbWFuZD4uCisgIDwv cGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1ldGVyczwv dGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PGxpdGVyYWw+SUYgTk9UIEVYSVNUUzwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgbmFtZSBhbHJl YWR5IGV4aXN0cy4gQSBub3RpY2UgaXMgaXNzdWVkIGluIHRoaXMgY2FzZS4KKyAgICAgIE5vdGUg dGhhdCB0eXBlIG9mIHRoZSB2YXJpYWJsZSBpcyBub3QgY29uc2lkZXJlZCwgbm9yIGNvdWxkIGl0 IGJlIHNpbmNlIHRoZSBuYW1lc3BhY2UKKyAgICAgIHNlYXJjaGVkIGNvbnRhaW5zIG5vbi12YXJp YWJsZSBvYmplY3RzLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNjaGVtYS1xdWFsaWZpZWQp IG9mIHRoZSB2YXJpYWJsZSB0byBiZSBjcmVhdGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgKG9wdGlv bmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIGRhdGEgdHlwZSBvZiB0aGUgdmFyaWFibGUg dG8gYmUgY3JlYXRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4K KyAgPHRpdGxlPk5vdGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFVzZSA8Y29tbWFuZD5EUk9Q IFZBUklBQkxFPC9jb21tYW5kPiB0byByZW1vdmUgYSB2YXJpYWJsZS4KKyAgPC9wYXJhPgorIDwv cmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAg PHBhcmE+CisgICBDcmVhdGUgYW4gaW50ZWdlciB2YXJpYWJsZSA8bGl0ZXJhbD52YXIxPC9saXRl cmFsPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludGVnZXI7 CitTRUxFQ1QgdmFyMTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworIDwvcmVmc2Vj dDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8 cGFyYT4KKyAgIDxjb21tYW5kPkNSRUFURSBWQVJJQUJMRTwvY29tbWFuZD4gaXMgYSBQb3N0Z3Jl U1FMIGZlYXR1cmUuCisgICA8IS0tIFRoZSBjaG9pY2Ugb2Ygd29yZGluZyBoZXJlIHNlZW1zIHRv IGJlIGxlZnQgdG8gcGVyc29uYWwgcHJlZmVyZW5jZS4uLiAtLT4KKyAgPC9wYXJhPgorIDwvcmVm c2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNp bXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFs dGVydmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRy b3B2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKwor PC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwKaW5kZXggNmI5MDliNzIzMi4uZDgzYWQ4MTFm ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwKQEAgLTIxLDcgKzIxLDcgQEAgUG9zdGdyZVNRTCBkb2N1 bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+Ci1ESVNDQVJEIHsgQUxM IHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIH0KK0RJU0NBUkQgeyBBTEwg fCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRFTVBPUkFSWSB8IFRFTVAgfCBWQVJJQUJMRVMgfQogPC9z eW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC03NSw2ICs3NSwxNyBAQCBESVNDQVJE IHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIH0KICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+PGxpdGVyYWw+VkFSSUFCTEVTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgUmVzZXRzIHRoZSB2YWx1ZSBvZiBhbGwgc2NoZW1hIHZhcmlhYmxl cy4gV2hlbiB2YXJpYWJsZXMKKyAgICAgIHdpbGwgYmUgdXNlZCBsYXRlciwgdGhlbiB3aWxsIGJl IGluaXRpYWxpemVkIGFnYWluIHRvCisgICAgICBOVUxMIG9yIGRlZmF1bHQgdmFsdWUuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJs aXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+QUxMPC9saXRlcmFsPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLmMxYzFhMmJkNjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dtbApAQCAtMCwwICsxLDkzIEBACis8IS0tCitk b2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0 aW9uCistLT4KKworPHJlZmVudHJ5IGlkPSJzcWwtZHJvcHZhcmlhYmxlIj4KKyA8aW5kZXh0ZXJt IHpvbmU9InNxbC1kcm9wdmFyaWFibGUiPgorICA8cHJpbWFyeT5EUk9QIFZBUklBQkxFPC9wcmlt YXJ5PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkRST1Ag VkFSSUFCTEU8L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52b2xudW0+NzwvbWFudm9sbnVtPgorICA8 cmVmbWlzY2luZm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50czwvcmVmbWlzY2luZm8+CisgPC9y ZWZtZXRhPgorCisgPHJlZm5hbWVkaXY+CisgIDxyZWZuYW1lPkRST1AgVkFSSUFCTEU8L3JlZm5h bWU+CisgIDxyZWZwdXJwb3NlPnJlbW92ZSBhIHNjaGVtYSB2YXJpYWJsZTwvcmVmcHVycG9zZT4K KyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitEUk9QIFZB UklBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0KKzwvc3lub3BzaXM+ CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0aW9u PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+ IHJlbW92ZXMgYSBzY2hlbWEgdmFyaWFibGUuCisgICBBIHZhcmlhYmxlIGNhbiBvbmx5IGJlIGRy b3BwZWQgYnkgaXRzIG93bmVyIG9yIGEgc3VwZXJ1c2VyLgorICAgPCEtLSB0aGlzIHdvdWxkIHN1 Z2dlc3QgdGhhdCB3ZSBuZWVkIGFuIGFsdGVyIHZhcmlhYmxlIG93bmVyIHRvIGNvbW1hbmQgLS0+ CisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1l dGVyczwvdGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PGxpdGVyYWw+SUYgRVhJU1RTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgRG8gbm90IHRocm93IGFuIGVycm9yIGlmIHRoZSB2YXJpYWJs ZSBkb2VzIG5vdCBleGlzdC4gQSBub3RpY2UgaXMgaXNzdWVkCisgICAgICBpbiB0aGlzIGNhc2Uu CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgVGhlIG5hbWUgKG9wdGlvbmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgYSBzY2hlbWEg dmFyaWFibGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisgIDwvdmFyaWFibGVsaXN0PgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0 aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUbyByZW1vdmUgdGhlIHNjaGVt YSB2YXJpYWJsZSA8bGl0ZXJhbD52YXIxPC9saXRlcmFsPjoKKworPHByb2dyYW1saXN0aW5nPgor RFJPUCBWQVJJQUJMRSB2YXIxOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisgPC9yZWZzZWN0 MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8L3RpdGxlPgorCisgIDxw YXJhPgorICAgPGNvbW1hbmQ+RFJPUCBWQVJJQUJMRTwvY29tbWFuZD4gaXMgcHJvcHJpZXRhcnkg UG9zdGdyZVNRTCBjb21tYW5kLgorICAgPCEtLSBjcmVhdGUgdmFyaWFibGUgaXMgYSAiUG9zdGdy ZVNRTCBmZWF0dXJlIiwKKyAgICAgICAgdGhpcyBpcyBhICJwcm9wcmlldGFyeSBQb3N0Z3JlU1FM IGNvbW1hbmQiIC4uLiAtLT4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5l Ij4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFsdGVydmFyaWFibGUiLz48L21lbWJl cj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1i ZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9ncmFu dC5zZ21sCmluZGV4IGZmNjRjN2EzYmEuLmE4MzkyMGE3YTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvZ3JhbnQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKQEAg LTc5LDYgKzc5LDEwIEBAIEdSQU5UIHsgVVNBR0UgfCBBTEwgWyBQUklWSUxFR0VTIF0gfQogICAg IE9OIFRZUEUgPHJlcGxhY2VhYmxlPnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAg ICBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9zcGVjaWZpY2F0aW9uPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSBbIFdJVEggR1JBTlQgT1BUSU9OIF0KIAorR1JBTlQgeyBSRUFE IHwgV1JJVEUgfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZBUklBQkxFIDxyZXBsYWNl YWJsZT52YXJpYWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQorICAgIFRPIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBb LCAuLi5dIFsgV0lUSCBHUkFOVCBPUFRJT04gXQorCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBjYW4g YmU6PC9waHJhc2U+CiAKICAgICBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+CkBAIC0xNjcsNiArMTcxLDcgQEAgR1JBTlQgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4u Ll0gVE8gPHJlcGxhY2UKICAgIGZvcmVpZ24gc2VydmVycywKICAgIGxhcmdlIG9iamVjdHMsCiAg ICBzY2hlbWFzLAorICAgc2NoZW1hIHZhcmlhYmxlCiAgICBvciB0YWJsZXNwYWNlcy4KICAgIEZv ciBvdGhlciB0eXBlcyBvZiBvYmplY3RzLCB0aGUgZGVmYXVsdCBwcml2aWxlZ2VzCiAgICBncmFu dGVkIHRvIDxsaXRlcmFsPlBVQkxJQzwvbGl0ZXJhbD4gYXJlIGFzIGZvbGxvd3M6CkBAIC0zODUs NiArMzkwLDI0IEBAIEdSQU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFRPIDxyZXBsYWNlCiAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0 ZXJhbD5SRUFEPC9saXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+ CisgICAgICAgQWxsb3dzIHRvIHJlYWQgYSBzY2hlbWEgdmFyaWFibGUuCisgICAgICA8L3BhcmE+ CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVu dHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5XUklURTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgIDxs aXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFsbG93cyB0byBzZXQgYSBzY2hlbWEgdmFy aWFibGUuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50 cnk+CisKICAgICA8dmFybGlzdGVudHJ5PgogICAgICA8dGVybT48bGl0ZXJhbD5BTEwgUFJJVklM RUdFUzwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgIDxsaXN0aXRlbT4KQEAgLTU1MCw2ICs1NzMsOCBA QCByb2xlbmFtZT14eHh4IC0tIHByaXZpbGVnZXMgZ3JhbnRlZCB0byBhIHJvbGUKICAgICAgICAg ICAgIEMgLS0gQ1JFQVRFCiAgICAgICAgICAgICBjIC0tIENPTk5FQ1QKICAgICAgICAgICAgIFQg LS0gVEVNUE9SQVJZCisgICAgICAgICAgICBTIC0tIFJFQUQKKyAgICAgICAgICAgIHcgLS0gV1JJ VEUKICAgICAgIGFyd2REeHQgLS0gQUxMIFBSSVZJTEVHRVMgKGZvciB0YWJsZXMsIHZhcmllcyBm b3Igb3RoZXIgb2JqZWN0cykKICAgICAgICAgICAgICogLS0gZ3JhbnQgb3B0aW9uIGZvciBwcmVj ZWRpbmcgcHJpdmlsZWdlCiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwg 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 dm9rZS5zZ21sCmluZGV4IDUzMTdmOGNjYmEuLjg0MzVlMDU5NTcgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dt bApAQCAtMTA4LDYgKzEwOCwxMiBAQCBSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KIFJFVk9L RSBbIEFETUlOIE9QVElPTiBGT1IgXQogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIEZST00gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICBbIENBU0NB REUgfCBSRVNUUklDVCBdCisKK1JFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQorICAgIHsgeyBS RUFEIHwgV1JJVEUgfSBbLCAuLi5dIHwgQUxMIFsgUFJJVklMRUdFUyBdIH0KKyAgICBPTiBWQVJJ QUJMRSA8cmVwbGFjZWFibGU+dmFyaWFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KKyAg ICBGUk9NIHsgWyBHUk9VUCBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25h bWU8L3JlcGxhY2VhYmxlPiB8IFBVQkxJQyB9IFssIC4uLl0KKyAgICBbIENBU0NBREUgfCBSRVNU UklDVCBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbApp bmRleCBkYjRmNDE2N2UzLi41ZmI4MmRmNTFlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm ZXJlbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCkBAIC03NSw2ICs3 NSw3IEBACiAgICAmYWx0ZXJUeXBlOwogICAgJmFsdGVyVXNlcjsKICAgICZhbHRlclVzZXJNYXBw aW5nOworICAgJmFsdGVyVmFyaWFibGU7CiAgICAmYWx0ZXJWaWV3OwogICAgJmFuYWx5emU7CiAg ICAmYmVnaW47CkBAIC0xMjcsNiArMTI4LDcgQEAKICAgICZjcmVhdGVUeXBlOwogICAgJmNyZWF0 ZVVzZXI7CiAgICAmY3JlYXRlVXNlck1hcHBpbmc7CisgICAmY3JlYXRlVmFyaWFibGU7CiAgICAm Y3JlYXRlVmlldzsKICAgICZkZWFsbG9jYXRlOwogICAgJmRlY2xhcmU7CkBAIC0xNzUsNiArMTc3 LDcgQEAKICAgICZkcm9wVHlwZTsKICAgICZkcm9wVXNlcjsKICAgICZkcm9wVXNlck1hcHBpbmc7 CisgICAmZHJvcFZhcmlhYmxlOwogICAgJmRyb3BWaWV3OwogICAgJmVuZDsKICAgICZleGVjdXRl OwpAQCAtMTgzLDYgKzE4Niw3IEBACiAgICAmZ3JhbnQ7CiAgICAmaW1wb3J0Rm9yZWlnblNjaGVt YTsKICAgICZpbnNlcnQ7CisgICAmbGV0OwogICAgJmxpc3RlbjsKICAgICZsb2FkOwogICAgJmxv Y2s7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9NYWtlZmlsZQppbmRleCAwODY1MjQwZjExLi4xZjdjNGQxMjIzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvTWFrZWZpbGUKQEAgLTE5LDcgKzE5LDcgQEAgT0JKUyA9IGNhdGFsb2cubyBkZXBlbmRlbmN5 Lm8gaGVhcC5vIGluZGV4Lm8gaW5kZXhpbmcubyBuYW1lc3BhY2UubyBhY2xjaGsubyBcCiAgICAg ICAgcGdfZGVwZW5kLm8gcGdfZW51bS5vIHBnX2luaGVyaXRzLm8gcGdfbGFyZ2VvYmplY3QubyBw Z19uYW1lc3BhY2UubyBcCiAgICAgICAgcGdfb3BlcmF0b3IubyBwZ19wcm9jLm8gcGdfcHVibGlj YXRpb24ubyBwZ19yYW5nZS5vIFwKIAkgICBwZ19kYl9yb2xlX3NldHRpbmcubyBwZ19zaGRlcGVu ZC5vIHBnX3N1YnNjcmlwdGlvbi5vIHBnX3R5cGUubyBcCi0JICAgc3RvcmFnZS5vIHRvYXN0aW5n Lm8KKwkgICBwZ192YXJpYWJsZS5vIHN0b3JhZ2UubyB0b2FzdGluZy5vCiAKIEJLSUZJTEVTID0g cG9zdGdyZXMuYmtpIHBvc3RncmVzLmRlc2NyaXB0aW9uIHBvc3RncmVzLnNoZGVzY3JpcHRpb24K IApAQCAtNDYsNyArNDYsNyBAQCBDQVRBTE9HX0hFQURFUlMgOj0gXAogCXBnX2RlZmF1bHRfYWNs LmggcGdfaW5pdF9wcml2cy5oIHBnX3NlY2xhYmVsLmggcGdfc2hzZWNsYWJlbC5oIFwKIAlwZ19j b2xsYXRpb24uaCBwZ19wYXJ0aXRpb25lZF90YWJsZS5oIHBnX3JhbmdlLmggcGdfdHJhbnNmb3Jt LmggXAogCXBnX3NlcXVlbmNlLmggcGdfcHVibGljYXRpb24uaCBwZ19wdWJsaWNhdGlvbl9yZWwu aCBwZ19zdWJzY3JpcHRpb24uaCBcCi0JcGdfc3Vic2NyaXB0aW9uX3JlbC5oCisJcGdfc3Vic2Ny aXB0aW9uX3JlbC5oIHBnX3ZhcmlhYmxlLmgKIAogR0VORVJBVEVEX0hFQURFUlMgOj0gJChDQVRB TE9HX0hFQURFUlM6JS5oPSVfZC5oKSBzY2hlbWFwZy5oCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmluZGV4 IDU3OGU0YzY1OTIuLjg2OTE3ZTE1YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv YWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtNTcsNiArNTcs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfcGFyc2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ190c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJhbnNmb3JtLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29t bWFuZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvZXh0ZW5zaW9uLmgiCkBAIC0xMTIsNiArMTEzLDcgQEAgc3RhdGljIHZvaWQgRXhl Y0dyYW50X0xhcmdlb2JqZWN0KEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7CiBzdGF0aWMgdm9p ZCBFeGVjR3JhbnRfTmFtZXNwYWNlKEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7CiBzdGF0aWMg dm9pZCBFeGVjR3JhbnRfVGFibGVzcGFjZShJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOwogc3Rh dGljIHZvaWQgRXhlY0dyYW50X1R5cGUoSW50ZXJuYWxHcmFudCAqZ3JhbnRTdG10KTsKK3N0YXRp YyB2b2lkIEV4ZWNHcmFudF9WYXJpYWJsZShJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOwogCiBz dGF0aWMgdm9pZCBTZXREZWZhdWx0QUNMc0luU2NoZW1hcyhJbnRlcm5hbERlZmF1bHRBQ0wgKmlh Y2xzLCBMaXN0ICpuc3BuYW1lcyk7CiBzdGF0aWMgdm9pZCBTZXREZWZhdWx0QUNMKEludGVybmFs RGVmYXVsdEFDTCAqaWFjbHMpOwpAQCAtMjg0LDYgKzI4Niw5IEBAIHJlc3RyaWN0X2FuZF9jaGVj a19ncmFudChib29sIGlzX2dyYW50LCBBY2xNb2RlIGF2YWlsX2dvcHRpb25zLCBib29sIGFsbF9w cml2cywKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXdob2xlX21hc2sgPSBBQ0xfQUxMX1JJR0hU U19UWVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJd2hvbGVfbWFz ayA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJ Lyogbm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC01MDcsNiArNTEy LDEwIEBAIEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRTdG10ICpzdG10KQogCQkJYWxsX3ByaXZpbGVn ZXMgPSBBQ0xfQUxMX1JJR0hUU19GT1JFSUdOX1NFUlZFUjsKIAkJCWVycm9ybXNnID0gZ2V0dGV4 dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBmb3JlaWduIHNlcnZlciIpOwog CQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJYWxsX3ByaXZpbGVnZXMgPSBB Q0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZh bGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hlbWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOwog CQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlw ZTogJWQiLAogCQkJCSAoaW50KSBzdG10LT5vYmp0eXBlKTsKQEAgLTYwOSw2ICs2MTgsOSBAQCBF eGVjR3JhbnRTdG10X29pZHMoSW50ZXJuYWxHcmFudCAqaXN0bXQpCiAJCWNhc2UgT0JKRUNUX1RB QkxFU1BBQ0U6CiAJCQlFeGVjR3JhbnRfVGFibGVzcGFjZShpc3RtdCk7CiAJCQlicmVhazsKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlFeGVjR3JhbnRfVmFyaWFibGUoaXN0bXQpOworCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3Rt dC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGlzdG10LT5vYmp0eXBlKTsKQEAgLTc2OCw2ICs3 ODAsMTYgQEAgb2JqZWN0TmFtZXNUb09pZHMoT2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0ICpvYmpu YW1lcykKIAkJCQlvYmplY3RzID0gbGFwcGVuZF9vaWQob2JqZWN0cywgc3J2aWQpOwogCQkJfQog CQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJZm9yZWFjaChjZWxsLCBvYmpu YW1lcykKKwkJCXsKKwkJCQlSYW5nZVZhciAgICp2YXJ2YXIgPSAoUmFuZ2VWYXIgKikgbGZpcnN0 KGNlbGwpOworCQkJCU9pZAkJCXJlbE9pZDsKKworCQkJCXJlbE9pZCA9IGxvb2t1cF92YXJpYWJs ZSh2YXJ2YXItPnNjaGVtYW5hbWUsIHZhcnZhci0+cmVsbmFtZSwgZmFsc2UpOworCQkJCW9iamVj dHMgPSBsYXBwZW5kX29pZChvYmplY3RzLCByZWxPaWQpOworCQkJfQorCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAl ZCIsCiAJCQkJIChpbnQpIG9ianR5cGUpOwpAQCAtODU1LDYgKzg3NywzMSBAQCBvYmplY3RzSW5T Y2hlbWFUb09pZHMoT2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0ICpuc3BuYW1lcykKIAkJCQkJaGVh cF9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CiAJCQkJfQogCQkJCWJyZWFrOworCQkJY2Fz ZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJeworCQkJCQlTY2FuS2V5RGF0YSBrZXk7CisJCQkJCVJl bGF0aW9uCXJlbDsKKwkJCQkJSGVhcFNjYW5EZXNjIHNjYW47CisJCQkJCUhlYXBUdXBsZQl0dXBs ZTsKKworCQkJCQlTY2FuS2V5SW5pdCgma2V5LAorCQkJCQkJCQlBbnVtX3BnX3ZhcmlhYmxlX3Zh cm5hbWVzcGFjZSwKKwkJCQkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJ CQkJCQlPYmplY3RJZEdldERhdHVtKG5hbWVzcGFjZUlkKSk7CisKKwkJCQkJcmVsID0gaGVhcF9v cGVuKFZhcmlhYmxlUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQkJc2NhbiA9IGhl YXBfYmVnaW5zY2FuX2NhdGFsb2cocmVsLCAxLCAma2V5KTsKKworCQkJCQl3aGlsZSAoKHR1cGxl ID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkKKwkJ CQkJeworCQkJCQkJb2JqZWN0cyA9IGxhcHBlbmRfb2lkKG9iamVjdHMsIEhlYXBUdXBsZUdldE9p ZCh0dXBsZSkpOworCQkJCQl9CisKKwkJCQkJaGVhcF9lbmRzY2FuKHNjYW4pOworCQkJCQloZWFw X2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQl9CisJCQkJYnJlYWs7CisKIAkJCWRl ZmF1bHQ6CiAJCQkJLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KIAkJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCkBAIC0xMDE4LDYgKzEwNjUsMTAgQEAg RXhlY0FsdGVyRGVmYXVsdFByaXZpbGVnZXNTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJE ZWZhdWx0UHJpdmlsZWdlc1N0bXQgKnMKIAkJCWFsbF9wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdI VFNfU0NIRU1BOwogCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdl IHR5cGUgJXMgZm9yIHNjaGVtYSIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxF OgorCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9y bXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hlbWEg dmFyaWFibGUiKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBhY3Rpb24tPm9ianR5 cGUpOwpAQCAtMTIxNSw2ICsxMjY2LDEyIEBAIFNldERlZmF1bHRBQ0woSW50ZXJuYWxEZWZhdWx0 QUNMICppYWNscykKIAkJCQl0aGlzX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUE7 CiAJCQlicmVhazsKIAorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCW9ianR5cGUgPSBERUZB Q0xPQkpfVkFSSUFCTEU7CisJCQlpZiAoaWFjbHMtPmFsbF9wcml2cyAmJiB0aGlzX3ByaXZpbGVn ZXMgPT0gQUNMX05PX1JJR0hUUykKKwkJCQl0aGlzX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hU U19WQVJJQUJMRTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIG9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgaWFjbHMtPm9ianR5cGUpOwpAQCAt MTQ0MSw2ICsxNDk4LDkgQEAgUmVtb3ZlUm9sZUZyb21PYmplY3RBQ0woT2lkIHJvbGVpZCwgT2lk IGNsYXNzaWQsIE9pZCBvYmppZCkKIAkJCWNhc2UgREVGQUNMT0JKX05BTUVTUEFDRToKIAkJCQlp YWNscy5vYmp0eXBlID0gT0JKRUNUX1NDSEVNQTsKIAkJCQlicmVhazsKKwkJCWNhc2UgREVGQUNM T0JKX1ZBUklBQkxFOgorCQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJ YnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCS8qIFNob3VsZG4ndCBnZXQgaGVyZSAqLwogCQkJCWVs b2coRVJST1IsICJ1bmV4cGVjdGVkIGRlZmF1bHQgQUNMIHR5cGU6ICVkIiwKQEAgLTMyNjYsNiAr MzMyNiwxMjkgQEAgRXhlY0dyYW50X1R5cGUoSW50ZXJuYWxHcmFudCAqaXN0bXQpCiAJaGVhcF9j bG9zZShyZWxhdGlvbiwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAKK3N0YXRpYyB2b2lkCitFeGVj R3JhbnRfVmFyaWFibGUoSW50ZXJuYWxHcmFudCAqaXN0bXQpCit7CisJUmVsYXRpb24JcmVsYXRp b247CisJTGlzdENlbGwgICAqY2VsbDsKKworCWlmIChpc3RtdC0+YWxsX3ByaXZzICYmIGlzdG10 LT5wcml2aWxlZ2VzID09IEFDTF9OT19SSUdIVFMpCisJCWlzdG10LT5wcml2aWxlZ2VzID0gQUNM X0FMTF9SSUdIVFNfVkFSSUFCTEU7CisKKwlyZWxhdGlvbiA9IGhlYXBfb3BlbihWYXJpYWJsZVJl bGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJZm9yZWFjaChjZWxsLCBpc3RtdC0+b2Jq ZWN0cykKKwl7CisJCU9pZAkJCXZhcklkID0gbGZpcnN0X29pZChjZWxsKTsKKwkJRm9ybV9wZ192 YXJpYWJsZSBwZ192YXJpYWJsZV90dXBsZTsKKwkJRGF0dW0JCWFjbERhdHVtOworCQlib29sCQlp c051bGw7CisJCUFjbE1vZGUJCWF2YWlsX2dvcHRpb25zOworCQlBY2xNb2RlCQl0aGlzX3ByaXZp bGVnZXM7CisJCUFjbAkJICAgKm9sZF9hY2w7CisJCUFjbAkJICAgKm5ld19hY2w7CisJCU9pZAkJ CWdyYW50b3JJZDsKKwkJT2lkCQkJb3duZXJJZDsKKwkJSGVhcFR1cGxlCXR1cGxlOworCQlIZWFw VHVwbGUJbmV3dHVwbGU7CisJCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfdmFyaWFibGVdOworCQli b29sCQludWxsc1tOYXR0c19wZ192YXJpYWJsZV07CisJCWJvb2wJCXJlcGxhY2VzW05hdHRzX3Bn X3ZhcmlhYmxlXTsKKwkJaW50CQkJbm9sZG1lbWJlcnM7CisJCWludAkJCW5uZXdtZW1iZXJzOwor CQlPaWQJCSAgICpvbGRtZW1iZXJzOworCQlPaWQJCSAgICpuZXdtZW1iZXJzOworCisJCXR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcklkKSk7 CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3Igc2NoZW1hIHZhcmlhYmxlcyAldSIsIHZhcklkKTsKKworCQlwZ192 YXJpYWJsZV90dXBsZSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwbGUpOworCisJ CS8qCisJCSAqIEdldCBvd25lciBJRCBhbmQgd29ya2luZyBjb3B5IG9mIGV4aXN0aW5nIEFDTC4g SWYgdGhlcmUncyBubyBBQ0wsCisJCSAqIHN1YnN0aXR1dGUgdGhlIHByb3BlciBkZWZhdWx0Lgor CQkgKi8KKwkJb3duZXJJZCA9IHBnX3ZhcmlhYmxlX3R1cGxlLT52YXJvd25lcjsKKwkJYWNsRGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoVkFSSUFCTEVPSUQsIHR1cGxlLCBBbnVtX3BnX3ZhcmlhYmxl X3ZhcmFjbCwKKwkJCQkJCQkJICAgJmlzTnVsbCk7CisJCWlmIChpc051bGwpCisJCXsKKwkJCW9s ZF9hY2wgPSBhY2xkZWZhdWx0KE9CSkVDVF9WQVJJQUJMRSwgb3duZXJJZCk7CisJCQkvKiBUaGVy ZSBhcmUgbm8gb2xkIG1lbWJlciByb2xlcyBhY2NvcmRpbmcgdG8gdGhlIGNhdGFsb2dzICovCisJ CQlub2xkbWVtYmVycyA9IDA7CisJCQlvbGRtZW1iZXJzID0gTlVMTDsKKwkJfQorCQllbHNlCisJ CXsKKwkJCW9sZF9hY2wgPSBEYXR1bUdldEFjbFBDb3B5KGFjbERhdHVtKTsKKwkJCS8qIEdldCB0 aGUgcm9sZXMgbWVudGlvbmVkIGluIHRoZSBleGlzdGluZyBBQ0wgKi8KKwkJCW5vbGRtZW1iZXJz ID0gYWNsbWVtYmVycyhvbGRfYWNsLCAmb2xkbWVtYmVycyk7CisJCX0KKworCQkvKiBEZXRlcm1p bmUgSUQgdG8gZG8gdGhlIGdyYW50IGFzLCBhbmQgYXZhaWxhYmxlIGdyYW50IG9wdGlvbnMgKi8K KwkJc2VsZWN0X2Jlc3RfZ3JhbnRvcihHZXRVc2VySWQoKSwgaXN0bXQtPnByaXZpbGVnZXMsCisJ CQkJCQkJb2xkX2FjbCwgb3duZXJJZCwKKwkJCQkJCQkmZ3JhbnRvcklkLCAmYXZhaWxfZ29wdGlv bnMpOworCisJCS8qCisJCSAqIFJlc3RyaWN0IHRoZSBwcml2aWxlZ2VzIHRvIHdoYXQgd2UgY2Fu IGFjdHVhbGx5IGdyYW50LCBhbmQgZW1pdCB0aGUKKwkJICogc3RhbmRhcmRzLW1hbmRhdGVkIHdh cm5pbmcgYW5kIGVycm9yIG1lc3NhZ2VzLgorCQkgKi8KKwkJdGhpc19wcml2aWxlZ2VzID0KKwkJ CXJlc3RyaWN0X2FuZF9jaGVja19ncmFudChpc3RtdC0+aXNfZ3JhbnQsIGF2YWlsX2dvcHRpb25z LAorCQkJCQkJCQkJIGlzdG10LT5hbGxfcHJpdnMsIGlzdG10LT5wcml2aWxlZ2VzLAorCQkJCQkJ CQkJIHZhcklkLCBncmFudG9ySWQsIE9CSkVDVF9WQVJJQUJMRSwKKwkJCQkJCQkJCSBOYW1lU3Ry KHBnX3ZhcmlhYmxlX3R1cGxlLT52YXJuYW1lKSwKKwkJCQkJCQkJCSAwLCBOVUxMKTsKKworCQkv KgorCQkgKiBHZW5lcmF0ZSBuZXcgQUNMLgorCQkgKi8KKwkJbmV3X2FjbCA9IG1lcmdlX2FjbF93 aXRoX2dyYW50KG9sZF9hY2wsIGlzdG10LT5pc19ncmFudCwKKwkJCQkJCQkJCSAgIGlzdG10LT5n cmFudF9vcHRpb24sIGlzdG10LT5iZWhhdmlvciwKKwkJCQkJCQkJCSAgIGlzdG10LT5ncmFudGVl cywgdGhpc19wcml2aWxlZ2VzLAorCQkJCQkJCQkJICAgZ3JhbnRvcklkLCBvd25lcklkKTsKKwor CQkvKgorCQkgKiBXZSBuZWVkIHRoZSBtZW1iZXJzIG9mIGJvdGggb2xkIGFuZCBuZXcgQUNMcyBz byB3ZSBjYW4gY29ycmVjdCB0aGUKKwkJICogc2hhcmVkIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24u CisJCSAqLworCQlubmV3bWVtYmVycyA9IGFjbG1lbWJlcnMobmV3X2FjbCwgJm5ld21lbWJlcnMp OworCisJCS8qIGZpbmlzaGVkIGJ1aWxkaW5nIG5ldyBBQ0wgdmFsdWUsIG5vdyBpbnNlcnQgaXQg Ki8KKwkJTWVtU2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCQlNZW1TZXQobnVsbHMs IGZhbHNlLCBzaXplb2YobnVsbHMpKTsKKwkJTWVtU2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9m KHJlcGxhY2VzKSk7CisKKwkJcmVwbGFjZXNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9 IHRydWU7CisJCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCAtIDFdID0gUG9pbnRlckdl dERhdHVtKG5ld19hY2wpOworCisJCW5ld3R1cGxlID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwbGUs IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pLCB2YWx1ZXMsCisJCQkJCQkJCQkgbnVsbHMsIHJl cGxhY2VzKTsKKworCQlDYXRhbG9nVHVwbGVVcGRhdGUocmVsYXRpb24sICZuZXd0dXBsZS0+dF9z ZWxmLCBuZXd0dXBsZSk7CisKKwkJLyogVXBkYXRlIGluaXRpYWwgcHJpdmlsZWdlcyBmb3IgZXh0 ZW5zaW9ucyAqLworCQlyZWNvcmRFeHRlbnNpb25Jbml0UHJpdih2YXJJZCwgVmFyaWFibGVSZWxh dGlvbklkLCAwLCBuZXdfYWNsKTsKKworCQkvKiBVcGRhdGUgdGhlIHNoYXJlZCBkZXBlbmRlbmN5 IEFDTCBpbmZvICovCisJCXVwZGF0ZUFjbERlcGVuZGVuY2llcyhWYXJpYWJsZVJlbGF0aW9uSWQs IHZhcklkLCAwLAorCQkJCQkJCSAgb3duZXJJZCwKKwkJCQkJCQkgIG5vbGRtZW1iZXJzLCBvbGRt ZW1iZXJzLAorCQkJCQkJCSAgbm5ld21lbWJlcnMsIG5ld21lbWJlcnMpOworCisJCVJlbGVhc2VT eXNDYWNoZSh0dXBsZSk7CisKKwkJcGZyZWUobmV3X2FjbCk7CisKKwkJLyogcHJldmVudCBlcnJv ciB3aGVuIHByb2Nlc3NpbmcgZHVwbGljYXRlIG9iamVjdHMgKi8KKwkJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKKwl9CisKKwloZWFwX2Nsb3NlKHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2Nr KTsKK30KKwogCiBzdGF0aWMgQWNsTW9kZQogc3RyaW5nX3RvX3ByaXZpbGVnZShjb25zdCBjaGFy ICpwcml2bmFtZSkKQEAgLTMyOTgsNiArMzQ4MSwxMCBAQCBzdHJpbmdfdG9fcHJpdmlsZWdlKGNv bnN0IGNoYXIgKnByaXZuYW1lKQogCQlyZXR1cm4gQUNMX0NPTk5FQ1Q7CiAJaWYgKHN0cmNtcChw cml2bmFtZSwgInJ1bGUiKSA9PSAwKQogCQlyZXR1cm4gMDsJCQkJLyogaWdub3JlIG9sZCBSVUxF IHByaXZpbGVnZXMgKi8KKwlpZiAoc3RyY21wKHByaXZuYW1lLCAicmVhZCIpID09IDApCisJCXJl dHVybiBBQ0xfUkVBRDsKKwlpZiAoc3RyY21wKHByaXZuYW1lLCAid3JpdGUiKSA9PSAwKQorCQly ZXR1cm4gQUNMX1dSSVRFOwogCWVyZXBvcnQoRVJST1IsCiAJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCiAJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgcHJpdmlsZWdlIHR5cGUgXCIl c1wiIiwgcHJpdm5hbWUpKSk7CkBAIC0zMzMzLDYgKzM1MjAsMTAgQEAgcHJpdmlsZWdlX3RvX3N0 cmluZyhBY2xNb2RlIHByaXZpbGVnZSkKIAkJCXJldHVybiAiVEVNUCI7CiAJCWNhc2UgQUNMX0NP Tk5FQ1Q6CiAJCQlyZXR1cm4gIkNPTk5FQ1QiOworCQljYXNlIEFDTF9SRUFEOgorCQkJcmV0dXJu ICJSRUFEIjsKKwkJY2FzZSBBQ0xfV1JJVEU6CisJCQlyZXR1cm4gIldSSVRFIjsKIAkJZGVmYXVs dDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgcHJpdmlsZWdlOiAlZCIsIChpbnQpIHBy aXZpbGVnZSk7CiAJfQpAQCAtMzQ1Niw2ICszNjQ3LDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVz dWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgog CQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdHlwZSAlcyIp OwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0g Z2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlICVzIik7 CisJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCQkJCW1zZyA9IGdldHRl eHRfbm9vcCgicGVybWlzc2lvbiBkZW5pZWQgZm9yIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpA QCAtMzU2Niw2ICszNzYwLDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2Jq ZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0 dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHR5cGUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJ CQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBi ZSBvd25lciBvZiBzY2hlbWEgdmFyaWFibGUgJXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNl IE9CSkVDVF9WSUVXOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9m IHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzcxMCw2ICszOTA3LDggQEAgcGdfYWNsbWFz ayhPYmplY3RUeXBlIG9ianR5cGUsIE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBP aWQgcm9sZWlkLAogCQkJcmV0dXJuIEFDTF9OT19SSUdIVFM7CiAJCWNhc2UgT0JKRUNUX1RZUEU6 CiAJCQlyZXR1cm4gcGdfdHlwZV9hY2xtYXNrKHRhYmxlX29pZCwgcm9sZWlkLCBtYXNrLCBob3cp OworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiBwZ192YXJpYWJsZV9hY2xtYXNr KHRhYmxlX29pZCwgcm9sZWlkLCBtYXNrLCBob3cpOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJP UiwgInVucmVjb2duaXplZCBvYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIG9ianR5cGUpOwpAQCAt NDQ5OSw2ICs0Njk4LDY3IEBAIHBnX3R5cGVfYWNsbWFzayhPaWQgdHlwZV9vaWQsIE9pZCByb2xl aWQsIEFjbE1vZGUgbWFzaywgQWNsTWFza0hvdyBob3cpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAor LyoKKyAqIEV4cG9ydGVkIHJvdXRpbmUgZm9yIGV4YW1pbmluZyBhIHVzZXIncyBwcml2aWxlZ2Vz IGZvciBhIHZhcmlhYmxlLgorICovCitBY2xNb2RlCitwZ192YXJpYWJsZV9hY2xtYXNrKE9pZCB2 YXJfb2lkLCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KQoreworCUFj bE1vZGUJCXJlc3VsdDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJRGF0dW0JCWFjbERhdHVtOworCWJv b2wJCWlzTnVsbDsKKwlBY2wJCSAgICphY2w7CisJT2lkCQkJb3duZXJJZDsKKworCUZvcm1fcGdf dmFyaWFibGUgdmFyRm9ybTsKKworCS8qIEJ5cGFzcyBwZXJtaXNzaW9uIGNoZWNrcyBmb3Igc3Vw ZXJ1c2VycyAqLworCWlmIChzdXBlcnVzZXJfYXJnKHJvbGVpZCkpCisJCXJldHVybiBtYXNrOwor CisJLyoKKwkgKiBNdXN0IGdldCB0aGUgdHlwZSdzIHR1cGxlIGZyb20gcGdfdHlwZQorCSAqLwor CXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZh cl9vaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygi dmFyaWFibGUgd2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJdmFyX29pZCkpKTsK Kwl2YXJGb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkvKgor CSAqIE5vdyBnZXQgdGhlIHR5cGUncyBvd25lciBhbmQgQUNMIGZyb20gdGhlIHR1cGxlCisJICov CisJb3duZXJJZCA9IHZhckZvcm0tPnZhcm93bmVyOworCisJYWNsRGF0dW0gPSBTeXNDYWNoZUdl dEF0dHIoVkFSSUFCTEVPSUQsIHR1cGxlLAorCQkJCQkJCSAgIEFudW1fcGdfdmFyaWFibGVfdmFy YWNsLCAmaXNOdWxsKTsKKwlpZiAoaXNOdWxsKQorCXsKKwkJLyogTm8gQUNMLCBzbyBidWlsZCBk ZWZhdWx0IEFDTCAqLworCQlhY2wgPSBhY2xkZWZhdWx0KE9CSkVDVF9WQVJJQUJMRSwgb3duZXJJ ZCk7CisJCWFjbERhdHVtID0gKERhdHVtKSAwOworCX0KKwllbHNlCisJeworCQkvKiBkZXRvYXN0 IHJlbCdzIEFDTCBpZiBuZWNlc3NhcnkgKi8KKwkJYWNsID0gRGF0dW1HZXRBY2xQKGFjbERhdHVt KTsKKwl9CisKKwlyZXN1bHQgPSBhY2xtYXNrKGFjbCwgcm9sZWlkLCBvd25lcklkLCBtYXNrLCBo b3cpOworCisJLyogaWYgd2UgaGF2ZSBhIGRldG9hc3RlZCBjb3B5LCBmcmVlIGl0ICovCisJaWYg KGFjbCAmJiAoUG9pbnRlcikgYWNsICE9IERhdHVtR2V0UG9pbnRlcihhY2xEYXR1bSkpCisJCXBm cmVlKGFjbCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCisJcmV0dXJuIHJlc3VsdDsK K30KKworCiAvKgogICogRXhwb3J0ZWQgcm91dGluZSBmb3IgY2hlY2tpbmcgYSB1c2VyJ3MgYWNj ZXNzIHByaXZpbGVnZXMgdG8gYSBjb2x1bW4KICAqCkBAIC00NzQ0LDYgKzUwMDQsMTggQEAgcGdf dHlwZV9hY2xjaGVjayhPaWQgdHlwZV9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSkKIAkJ cmV0dXJuIEFDTENIRUNLX05PX1BSSVY7CiB9CiAKKy8qCisgKiBFeHBvcnRlZCByb3V0aW5lIGZv ciBjaGVja2luZyBhIHVzZXIncyBhY2Nlc3MgcHJpdmlsZWdlcyB0byBhIHZhcmlhYmxlCisgKi8K K0FjbFJlc3VsdAorcGdfdmFyaWFibGVfYWNsY2hlY2soT2lkIHR5cGVfb2lkLCBPaWQgcm9sZWlk LCBBY2xNb2RlIG1vZGUpCit7CisJaWYgKHBnX3ZhcmlhYmxlX2FjbG1hc2sodHlwZV9vaWQsIHJv bGVpZCwgbW9kZSwgQUNMTUFTS19BTlkpICE9IDApCisJCXJldHVybiBBQ0xDSEVDS19PSzsKKwll bHNlCisJCXJldHVybiBBQ0xDSEVDS19OT19QUklWOworfQorCiAvKgogICogT3duZXJzaGlwIGNo ZWNrIGZvciBhIHJlbGF0aW9uIChzcGVjaWZpZWQgYnkgT0lEKS4KICAqLwpAQCAtNTM2MSw2ICs1 NjMzLDMzIEBAIHBnX3N0YXRpc3RpY3Nfb2JqZWN0X293bmVyY2hlY2soT2lkIHN0YXRfb2lkLCBP aWQgcm9sZWlkKQogCXJldHVybiBoYXNfcHJpdnNfb2Zfcm9sZShyb2xlaWQsIG93bmVySWQpOwog fQogCisvKgorICogT3duZXJzaGlwIGNoZWNrIGZvciBhIHNjaGVtYSB2YXJpYWJsZXMgKHNwZWNp ZmllZCBieSBPSUQpLgorICovCitib29sCitwZ192YXJpYWJsZV9vd25lcmNoZWNrKE9pZCBkYl9v aWQsIE9pZCByb2xlaWQpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCU9pZAkJCW93bmVySWQ7CisK KwkvKiBTdXBlcnVzZXJzIGJ5cGFzcyBhbGwgcGVybWlzc2lvbiBjaGVja2luZy4gKi8KKwlpZiAo c3VwZXJ1c2VyX2FyZyhyb2xlaWQpKQorCQlyZXR1cm4gdHJ1ZTsKKworCXR1cGxlID0gU2VhcmNo U3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKGRiX29pZCkpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9VTkRFRklORURfREFUQUJBU0UpLAorCQkJCSBlcnJtc2coInZhcmlhYmxlIHdpdGgg T0lEICV1IGRvZXMgbm90IGV4aXN0IiwgZGJfb2lkKSkpOworCisJb3duZXJJZCA9ICgoRm9ybV9w Z192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cGxlKSktPnZhcm93bmVyOworCisJUmVsZWFzZVN5c0Nh Y2hlKHR1cGxlKTsKKworCXJldHVybiBoYXNfcHJpdnNfb2Zfcm9sZShyb2xlaWQsIG93bmVySWQp OworfQorCisKIC8qCiAgKiBDaGVjayB3aGV0aGVyIHNwZWNpZmllZCByb2xlIGhhcyBDUkVBVEVS T0xFIHByaXZpbGVnZSAob3IgaXMgYSBzdXBlcnVzZXIpCiAgKgpAQCAtNTQ4Niw2ICs1Nzg1LDEw IEBAIGdldF91c2VyX2RlZmF1bHRfYWNsKE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIG93bmVySWQs IE9pZCBuc3Bfb2lkKQogCQkJZGVmYWNsb2JqdHlwZSA9IERFRkFDTE9CSl9OQU1FU1BBQ0U7CiAJ CQlicmVhazsKIAorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCWRlZmFjbG9ianR5cGUgPSBE RUZBQ0xPQkpfVkFSSUFCTEU7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJcmV0dXJuIE5V TEw7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCA0ZjFkMzY1MzU3Li43ODJkZGIx NjU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1 ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3VzZXJfbWFwcGluZy5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb21tZW50LmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5o IgpAQCAtNjcsNiArNjgsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2NsYW5nLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2No ZW1hY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvc2VjbGFiZWwuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKQEAgLTEyODAsNiArMTI4MiwxMCBAQCBkb0Rl bGV0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgaW50IGZsYWdzKQogCQkJRHJvcFRy YW5zZm9ybUJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKIAorCQljYXNlIE9DTEFT U19WQVJJQUJMRToKKwkJCVJlbW92ZVZhcmlhYmxlQnlJZChvYmplY3QtPm9iamVjdElkKTsKKwkJ CWJyZWFrOworCiAJCQkvKgogCQkJICogVGhlc2UgZ2xvYmFsIG9iamVjdCB0eXBlcyBhcmUgbm90 IHN1cHBvcnRlZCBoZXJlLgogCQkJICovCkBAIC0yNTM3LDYgKzI1NDMsOSBAQCBnZXRPYmplY3RD bGFzcyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QpCiAKIAkJY2FzZSBUcmFuc2Zvcm1SZWxh dGlvbklkOgogCQkJcmV0dXJuIE9DTEFTU19UUkFOU0ZPUk07CisKKwkJY2FzZSBWYXJpYWJsZVJl bGF0aW9uSWQ6CisJCQlyZXR1cm4gT0NMQVNTX1ZBUklBQkxFOwogCX0KIAogCS8qIHNob3VsZG4n dCBnZXQgaGVyZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2Uu YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKaW5kZXggMGY2N2ExMjJlZC4uODFh YWY0NTRhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYworKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3Rl bXBsYXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMuaCIKICNpbmNs dWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTc1NSw2ICs3NTYs NzEgQEAgUmVsYXRpb25Jc1Zpc2libGUoT2lkIHJlbGlkKQogCXJldHVybiB2aXNpYmxlOwogfQog CisvKgorICogVmFyaWFibGVJc1Zpc2libGUKKyAqCQlEZXRlcm1pbmUgd2hldGhlciBhIHZhcmlh YmxlIChpZGVudGlmaWVkIGJ5IE9JRCkgaXMgdmlzaWJsZSBpbiB0aGUKKyAqCQljdXJyZW50IHNl YXJjaCBwYXRoLiAgVmlzaWJsZSBtZWFucyAid291bGQgYmUgZm91bmQgYnkgc2VhcmNoaW5nCisg KgkJZm9yIHRoZSB1bnF1YWxpZmllZCB2YXJpYWJsZSBuYW1lIi4KKyAqLworYm9vbAorVmFyaWFi bGVJc1Zpc2libGUoT2lkIHZhcmlkKQoreworCUhlYXBUdXBsZQl2YXJ0dXA7CisJRm9ybV9wZ192 YXJpYWJsZSB2YXJmb3JtOworCU9pZAkJCXZhcm5hbWVzcGFjZTsKKwlib29sCQl2aXNpYmxlOwor CisJdmFydHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVt KHZhcmlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHZhcnR1cCkpCisJCWVsb2coRVJST1Is ICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisJ dmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodmFydHVwKTsKKworCXJlY29t cHV0ZU5hbWVzcGFjZVBhdGgoKTsKKworCS8qCisJICogUXVpY2sgY2hlY2s6IGlmIGl0IGFpbid0 IGluIHRoZSBwYXRoIGF0IGFsbCwgaXQgYWluJ3QgdmlzaWJsZS4gSXRlbXMgaW4KKwkgKiB0aGUg c3lzdGVtIG5hbWVzcGFjZSBhcmUgc3VyZWx5IGluIHRoZSBwYXRoIGFuZCBzbyB3ZSBuZWVkbid0 IGV2ZW4gZG8KKwkgKiBsaXN0X21lbWJlcl9vaWQoKSBmb3IgdGhlbS4KKwkgKi8KKwl2YXJuYW1l c3BhY2UgPSB2YXJmb3JtLT52YXJuYW1lc3BhY2U7CisJaWYgKHZhcm5hbWVzcGFjZSAhPSBQR19D QVRBTE9HX05BTUVTUEFDRSAmJgorCQkhbGlzdF9tZW1iZXJfb2lkKGFjdGl2ZVNlYXJjaFBhdGgs IHZhcm5hbWVzcGFjZSkpCisJCXZpc2libGUgPSBmYWxzZTsKKwllbHNlCisJeworCQkvKgorCQkg KiBJZiBpdCBpcyBpbiB0aGUgcGF0aCwgaXQgbWlnaHQgc3RpbGwgbm90IGJlIHZpc2libGU7IGl0 IGNvdWxkIGJlCisJCSAqIGhpZGRlbiBieSBhbm90aGVyIHJlbGF0aW9uIG9mIHRoZSBzYW1lIG5h bWUgZWFybGllciBpbiB0aGUgcGF0aC4gU28KKwkJICogd2UgbXVzdCBkbyBhIHNsb3cgY2hlY2sg Zm9yIGNvbmZsaWN0aW5nIHJlbGF0aW9ucy4KKwkJICovCisJCWNoYXIJICAgKnZhcm5hbWUgPSBO YW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpOworCQlMaXN0Q2VsbCAgICpsOworCisJCXZpc2libGUg PSBmYWxzZTsKKwkJZm9yZWFjaChsLCBhY3RpdmVTZWFyY2hQYXRoKQorCQl7CisJCQlPaWQJCQlu YW1lc3BhY2VJZCA9IGxmaXJzdF9vaWQobCk7CisKKwkJCWlmIChuYW1lc3BhY2VJZCA9PSB2YXJu YW1lc3BhY2UpCisJCQl7CisJCQkJLyogRm91bmQgaXQgZmlyc3QgaW4gcGF0aCAqLworCQkJCXZp c2libGUgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKE9pZElzVmFsaWQoZ2V0X3Zh cm5hbWVfdmFyaWQodmFybmFtZSwgbmFtZXNwYWNlSWQpKSkKKwkJCXsKKwkJCQkvKiBGb3VuZCBz b21ldGhpbmcgZWxzZSBmaXJzdCBpbiBwYXRoICovCisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9 CisKKwlSZWxlYXNlU3lzQ2FjaGUodmFydHVwKTsKKworCXJldHVybiB2aXNpYmxlOworfQorCisK IAogLyoKICAqIFR5cGVuYW1lR2V0VHlwaWQKQEAgLTI3NzYsNiArMjg0MiwyMDIgQEAgVFNDb25m aWdJc1Zpc2libGUoT2lkIGNmZ2lkKQogCXJldHVybiB2aXNpYmxlOwogfQogCisvKgorICogV2hl biB3ZSBrbm93IGEgdmFyaWFibGUgbmFtZSwgdGhlbiB3ZSBjYW4gZmluZCB2YXJpYWJsZSBzaW1w bHkKKyAqLworT2lkCitsb29rdXBfdmFyaWFibGUoY29uc3QgY2hhciAqbnNwbmFtZSwgY29uc3Qg Y2hhciAqdmFybmFtZSwgYm9vbCBtaXNzaW5nX29rKQoreworCU9pZAkJCW5hbWVzcGFjZUlkOwor CU9pZAkJCXZhcm9pZAkJPSBJbnZhbGlkT2lkOworCUxpc3RDZWxsICAgKmw7CisKKwlpZiAobnNw bmFtZSkKKwl7CisJCW5hbWVzcGFjZUlkID0gTG9va3VwRXhwbGljaXROYW1lc3BhY2UobnNwbmFt ZSwgbWlzc2luZ19vayk7CisJCWlmICghT2lkSXNWYWxpZChuYW1lc3BhY2VJZCkpCisJCQlyZXR1 cm4gSW52YWxpZE9pZDsKKworCQl2YXJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1F TlNQLAorCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwKKwkJCQkJCQkJICBPYmpl Y3RJZEdldERhdHVtKG5hbWVzcGFjZUlkKSk7CisJfQorCWVsc2UKKwl7CisJCS8qIHNlYXJjaCBm b3IgaXQgaW4gc2VhcmNoIHBhdGggKi8KKwkJcmVjb21wdXRlTmFtZXNwYWNlUGF0aCgpOworCisJ CWZvcmVhY2gobCwgYWN0aXZlU2VhcmNoUGF0aCkKKwkJeworCQkJbmFtZXNwYWNlSWQgPSBsZmly c3Rfb2lkKGwpOworCisJCQl2YXJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQ LAorCQkJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0odmFybmFtZSksCisJCQkJCQkJCQkgIE9iamVj dElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKworCQkJaWYgKE9pZElzVmFsaWQodmFyb2lkKSkK KwkJCQlicmVhazsKKwkJfQorCX0KKworCWlmICghT2lkSXNWYWxpZCh2YXJvaWQpICYmICFtaXNz aW5nX29rKQorCXsKKwkJaWYgKG5zcG5hbWUpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBc IiVzXCIuXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQkJbnNwbmFtZSwgdmFybmFtZSkp KTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRF RklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlc1wiIGRvZXMgbm90IGV4 aXN0IiwKKwkJCQkJCQkJdmFybmFtZSkpKTsKKwl9CisKKwlyZXR1cm4gdmFyb2lkOworfQorCitM aXN0ICoKK05hbWVzRnJvbUxpc3QoTGlzdCAqbmFtZXMpCit7CisJTGlzdENlbGwgKmw7CisJTGlz dAkqcmVzdWx0ID0gTklMOworCisJZm9yZWFjaChsLCBuYW1lcykKKwl7CisJCU5vZGUgKm4gPSBs Zmlyc3QobCk7CisKKwkJaWYgKElzQShuLCBTdHJpbmcpKQorCQl7CisJCQlyZXN1bHQgPSBsYXBw ZW5kKHJlc3VsdCwgbik7CisJCX0KKwkJZWxzZQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJl c3VsdDsKK30KKworLyoKKyAqIGlkZW50aWZ5X3ZhcmlhYmxlCisgKgorICogUmV0dXJucyBvaWQg b2Ygbm90IGFtYmlnb251b3VzIHZhcmlhYmxlIHNwZWNpZmllZCBieSBxdWFsaWZpZWQgcGF0aAor ICogb3IgSW52YWxpZE9pZC4gV2hlbiB0aGUgcGF0aCBpcyBhbWJpZ29udW91cywgdGhlbiBub3Rf dW5pcSBmbGFnIGlzCisgKiBpcyB0cnVlLgorICovCitPaWQKK2lkZW50aWZ5X3ZhcmlhYmxlKExp c3QgKm5hbWVzLCBjaGFyICoqYXR0cm5hbWUsIGJvb2wgKm5vdF91bmlxKQoreworCWNoYXIgICAq YSA9IE5VTEw7CisJY2hhciAgICpiID0gTlVMTDsKKwljaGFyICAgKmMgPSBOVUxMOworCWNoYXIg ICAqZCA9IE5VTEw7CisJT2lkCQl2YXJvaWRfd2l0aG91dF9hdHRyOworCU9pZAkJdmFyb2lkX3dp dGhfYXR0cjsKKworCSpub3RfdW5pcSA9IGZhbHNlOworCisJc3dpdGNoIChsaXN0X2xlbmd0aChu YW1lcykpCisJeworCQljYXNlIDE6CisJCQlhID0gc3RyVmFsKGxpbml0aWFsKG5hbWVzKSk7CisJ CQlyZXR1cm4gbG9va3VwX3ZhcmlhYmxlKE5VTEwsIGEsIHRydWUpOworCisJCWNhc2UgMjoKKwkJ CWEgPSBzdHJWYWwobGluaXRpYWwobmFtZXMpKTsKKwkJCWIgPSBzdHJWYWwobHNlY29uZChuYW1l cykpOworCisJCQkvKgorCQkJICogYS5iIGNhbiBtZWFuICJzY2hlbWEiLiJ2YXJpYWJsZSIgb3Ig InZhcmlhYmxlIi4iZmllbGQiLAorCQkJICogQ2hlY2sgYm90aCB2YXJpYW50cywgYW5kIHJldHVy bnMgSW52YWxpZE9pZCB3aXRoIG5vdF91bmlxCisJCQkgKiBmbGFnLCB3aGVuIGJvdGggaW50ZXJw cmV0YXRpb25zIGFyZSBwb3NzaWJsZS4KKwkJCSAqLworCQkJdmFyb2lkX3dpdGhvdXRfYXR0ciA9 IGxvb2t1cF92YXJpYWJsZShhLCBiLCB0cnVlKTsKKwkJCXZhcm9pZF93aXRoX2F0dHIgPSBsb29r dXBfdmFyaWFibGUoTlVMTCwgYSwgdHJ1ZSk7CisKKwkJCWlmIChPaWRJc1ZhbGlkKHZhcm9pZF93 aXRob3V0X2F0dHIpICYmIE9pZElzVmFsaWQodmFyb2lkX3dpdGhfYXR0cikpCisJCQl7CisJCQkJ Km5vdF91bmlxID0gdHJ1ZTsKKwkJCQlyZXR1cm4gSW52YWxpZE9pZDsKKwkJCX0KKwkJCWVsc2Ug aWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0cikpCisJCQl7CisJCQkJKmF0dHJuYW1l ID0gTlVMTDsKKwkJCQlyZXR1cm4gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJCX0KKwkJCWVsc2UK KwkJCXsKKwkJCQkqYXR0cm5hbWUgPSBiOworCQkJCXJldHVybiB2YXJvaWRfd2l0aF9hdHRyOwor CQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSAzOgorCQkJYSA9IHN0clZhbChsaW5pdGlhbChuYW1l cykpOworCQkJYiA9IHN0clZhbChsc2Vjb25kKG5hbWVzKSk7CisJCQljID0gc3RyVmFsKGx0aGly ZChuYW1lcykpOworCisJCQkvKgorCQkJICogYS5iLmMgY2FuIG1lYW4gImNhdGFsb2ciLiJzY2hl bWEiLiJ2YXJpYWJsZSIgb3IgInNjaGVtYSIuInZhcmlhYmxlIi4iZmllbGQiLAorCQkJICogQ2hl Y2sgYm90aCB2YXJpYW50cywgYW5kIHJldHVybnMgSW52YWxpZE9pZCB3aXRoIG5vdF91bmlxCisJ CQkgKiBmbGFnLCB3aGVuIGJvdGggaW50ZXJwcmV0YXRpb25zIGFyZSBwb3NzaWJsZS4KKwkJCSAq LworCQkJdmFyb2lkX3dpdGhvdXRfYXR0ciA9IGxvb2t1cF92YXJpYWJsZShiLCBjLCB0cnVlKTsK KwkJCXZhcm9pZF93aXRoX2F0dHIgPSBsb29rdXBfdmFyaWFibGUoYSwgYiwgdHJ1ZSk7CisKKwkJ CWlmIChPaWRJc1ZhbGlkKHZhcm9pZF93aXRob3V0X2F0dHIpICYmIE9pZElzVmFsaWQodmFyb2lk X3dpdGhfYXR0cikpCisJCQl7CisJCQkJKm5vdF91bmlxID0gdHJ1ZTsKKwkJCQlyZXR1cm4gSW52 YWxpZE9pZDsKKwkJCX0KKwkJCWVsc2UgaWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0 cikpCisJCQl7CisJCQkJKmF0dHJuYW1lID0gTlVMTDsKKworCQkJCS8qCisJCQkJICogV2UgaW4g dGhpcyBjYXNlIGEgImEiIGlzIHVzZWQgYXMgY2F0YWxvZyBuYW1lLCBjaGVjayBpdC4KKwkJCQkg Ki8KKwkJCQlpZiAoc3RyY21wKGEsIGdldF9kYXRhYmFzZV9uYW1lKE15RGF0YWJhc2VJZCkpICE9 IDApCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coImNyb3NzLWRhdGFiYXNlIHJlZmVyZW5j ZXMgYXJlIG5vdCBpbXBsZW1lbnRlZDogJXMiLAorCQkJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhu YW1lcykpKSk7CisKKwkJCQlyZXR1cm4gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJCX0KKwkJCWVs c2UKKwkJCXsKKwkJCQkqYXR0cm5hbWUgPSBjOworCQkJCXJldHVybiB2YXJvaWRfd2l0aF9hdHRy OworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSA0OgorCQkJYSA9IHN0clZhbChsaW5pdGlhbChu YW1lcykpOworCQkJYiA9IHN0clZhbChsc2Vjb25kKG5hbWVzKSk7CisJCQljID0gc3RyVmFsKGx0 aGlyZChuYW1lcykpOworCQkJZCA9IHN0clZhbChsZm91cnRoKG5hbWVzKSk7CisKKwkJCS8qCisJ CQkgKiBXZSBpbiB0aGlzIGNhc2UgYSAiYSIgaXMgdXNlZCBhcyBjYXRhbG9nIG5hbWUsIGNoZWNr IGl0LgorCQkJICovCisJCQlpZiAoc3RyY21wKGEsIGdldF9kYXRhYmFzZV9uYW1lKE15RGF0YWJh c2VJZCkpICE9IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNyb3NzLWRhdGFiYXNlIHJl ZmVyZW5jZXMgYXJlIG5vdCBpbXBsZW1lbnRlZDogJXMiLAorCQkJCQkJCQlOYW1lTGlzdFRvU3Ry aW5nKG5hbWVzKSkpKTsKKworCQkJKmF0dHJuYW1lID0gZDsKKwkJCXJldHVybiBsb29rdXBfdmFy aWFibGUoYiwgYywgdHJ1ZSk7CisKKwkJZGVmYXVsdDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygiaW1wcm9wZXIg cXVhbGlmaWVkIG5hbWUgKHRvbyBtYW55IGRvdHRlZCBuYW1lcyk6ICVzIiwKKwkJCQkJCQlOYW1l TGlzdFRvU3RyaW5nKG5hbWVzKSkpKTsKKwkJCWJyZWFrOworCX0KK30KIAogLyoKICAqIERlY29u c3RydWN0UXVhbGlmaWVkTmFtZQpAQCAtNDQxNiwzICs0Njc4LDE0IEBAIHBnX2lzX290aGVyX3Rl bXBfc2NoZW1hKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fQk9PTChpc090aGVyVGVt cE5hbWVzcGFjZShvaWQpKTsKIH0KKworRGF0dW0KK3BnX3ZhcmlhYmxlX2lzX3Zpc2libGUoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlvaWQgPSBQR19HRVRBUkdfT0lEKDApOworCisJaWYg KCFTZWFyY2hTeXNDYWNoZUV4aXN0czEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0ob2lk KSkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlQR19SRVRVUk5fQk9PTChWYXJpYWJsZUlzVmlz aWJsZShvaWQpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRk cmVzcy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5kZXggN2RiOTQy ZGNiYS4uY2MzZDQxNWU2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3Rh ZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTU4 LDYgKzU4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv ZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKQEAgLTQ4OSw2ICs0OTAsMTggQEAgc3RhdGljIGNvbnN0 IE9iamVjdFByb3BlcnR5VHlwZSBPYmplY3RQcm9wZXJ0eVtdID0KIAkJSW52YWxpZEF0dHJOdW1i ZXIsCQkvKiBubyBBQ0wgKHNhbWUgYXMgcmVsYXRpb24pICovCiAJCU9CSkVDVF9TVEFUSVNUSUNf RVhULAogCQl0cnVlCisJfSwKKwl7CisJCVZhcmlhYmxlUmVsYXRpb25JZCwKKwkJVmFyaWFibGVP YmplY3RJbmRleElkLAorCQlWQVJJQUJMRU9JRCwKKwkJVkFSSUFCTEVOQU1FTlNQLAorCQlBbnVt X3BnX3ZhcmlhYmxlX3Zhcm5hbWUsCisJCUFudW1fcGdfdmFyaWFibGVfdmFybmFtZXNwYWNlLAor CQlBbnVtX3BnX3ZhcmlhYmxlX3Zhcm93bmVyLAorCQlBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCwK KwkJT0JKRUNUX1ZBUklBQkxFLAorCQl0cnVlCiAJfQogfTsKIApAQCAtNzE0LDYgKzcyNywxMCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG9iamVjdF90eXBlX21hcAogCS8qIE9CSkVDVF9TVEFUSVNU SUNfRVhUICovCiAJewogCQkic3RhdGlzdGljcyBvYmplY3QiLCBPQkpFQ1RfU1RBVElTVElDX0VY VAorCX0sCisJLyogT0NMQVNTX1ZBUklBQkxFICovCisJeworCQkic2NoZW1hIHZhcmlhYmxlIiwg T0JKRUNUX1ZBUklBQkxFCiAJfQogfTsKIApAQCAtNzM5LDYgKzc1Niw3IEBAIHN0YXRpYyBPYmpl Y3RBZGRyZXNzIGdldF9vYmplY3RfYWRkcmVzc19hdHRyZGVmKE9iamVjdFR5cGUgb2JqdHlwZSwK IAkJCQkJCSAgIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2Jq ZWN0X2FkZHJlc3NfdHlwZShPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCQlUeXBlTmFtZSAqdHlw ZW5hbWUsIGJvb2wgbWlzc2luZ19vayk7CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0 X2FkZHJlc3NfdmFyaWFibGUoTGlzdCAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spOwogc3RhdGlj IE9iamVjdEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX29wY2YoT2JqZWN0VHlwZSBvYmp0eXBl LCBMaXN0ICpvYmplY3QsCiAJCQkJCQlib29sIG1pc3Npbmdfb2spOwogc3RhdGljIE9iamVjdEFk ZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX29wZl9tZW1iZXIoT2JqZWN0VHlwZSBvYmp0eXBlLApA QCAtOTk2LDYgKzEwMTQsMTAgQEAgZ2V0X29iamVjdF9hZGRyZXNzKE9iamVjdFR5cGUgb2JqdHlw ZSwgTm9kZSAqb2JqZWN0LAogCQkJCQkJCQkJCQkJCQkJIG1pc3Npbmdfb2spOwogCQkJCWFkZHJl c3Mub2JqZWN0U3ViSWQgPSAwOwogCQkJCWJyZWFrOworCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6 CisJCQkJYWRkcmVzcyA9IGdldF9vYmplY3RfYWRkcmVzc192YXJpYWJsZShjYXN0Tm9kZShMaXN0 LCBvYmplY3QpLCBtaXNzaW5nX29rKTsKKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGU6ICVkIiwgKGludCkgb2JqdHlwZSk7CiAJ CQkJLyogcGxhY2F0ZSBjb21waWxlciwgaW4gY2FzZSBpdCB0aGlua3MgZWxvZyBtaWdodCByZXR1 cm4gKi8KQEAgLTE4NDgsMTYgKzE4NzAsMjAgQEAgZ2V0X29iamVjdF9hZGRyZXNzX2RlZmFjbChM aXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNF OgogCQkJb2JqdHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQlicmVhazsKKwkJY2FzZSBERUZBQ0xP QkpfVkFSSUFCTEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJpYWJsZXMiOworCQkJYnJlYWs7CiAJ CWRlZmF1bHQ6CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1zZygidW5yZWNvZ25pemVkIGRlZmF1bHQg QUNMIG9iamVjdCB0eXBlIFwiJWNcIiIsIG9ianR5cGUpLAotCQkJCQkgZXJyaGludCgiVmFsaWQg b2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIi4i LAorCQkJCQkgZXJyaGludCgiVmFsaWQgb2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwg XCIlY1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLiIsCiAJCQkJCQkJIERFRkFDTE9CSl9SRUxB VElPTiwKIAkJCQkJCQkgREVGQUNMT0JKX1NFUVVFTkNFLAogCQkJCQkJCSBERUZBQ0xPQkpfRlVO Q1RJT04sCiAJCQkJCQkJIERFRkFDTE9CSl9UWVBFLAotCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQ QUNFKSkpOworCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQQUNFLAorCQkJCQkJCSBERUZBQ0xPQkpf VkFSSUFCTEUpKSk7CiAJfQogCiAJLyoKQEAgLTE5NDIsNiArMTk2OCwyNCBAQCB0ZXh0YXJyYXlf dG9fc3RydmFsdWVsaXN0KEFycmF5VHlwZSAqYXJyKQogCXJldHVybiBsaXN0OwogfQogCisvKgor ICogRmluZCB0aGUgT2JqZWN0QWRkcmVzcyBmb3IgYSB0eXBlIG9yIGRvbWFpbgorICovCitzdGF0 aWMgT2JqZWN0QWRkcmVzcworZ2V0X29iamVjdF9hZGRyZXNzX3ZhcmlhYmxlKExpc3QgKm9iamVj dCwgYm9vbCBtaXNzaW5nX29rKQoreworCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwljaGFyCSAg ICpuc3BuYW1lID0gTlVMTDsKKwljaGFyCSAgICp2YXJuYW1lID0gTlVMTDsKKworCU9iamVjdEFk ZHJlc3NTZXQoYWRkcmVzcywgVmFyaWFibGVSZWxhdGlvbklkLCBJbnZhbGlkT2lkKTsKKworCURl Y29uc3RydWN0UXVhbGlmaWVkTmFtZShvYmplY3QsICZuc3BuYW1lLCAmdmFybmFtZSk7CisJYWRk cmVzcy5vYmplY3RJZCA9IGxvb2t1cF92YXJpYWJsZShuc3BuYW1lLCB2YXJuYW1lLCBtaXNzaW5n X29rKTsKKworCXJldHVybiBhZGRyZXNzOworfQorCiAvKgogICogU1FMLWNhbGxhYmxlIHZlcnNp b24gb2YgZ2V0X29iamVjdF9hZGRyZXNzCiAgKi8KQEAgLTIxMzEsNiArMjE3NSw3IEBAIHBnX2dl dF9vYmplY3RfYWRkcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQljYXNlIE9CSkVDVF9UQUJDT05T VFJBSU5UOgogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsKIAkJ CWJyZWFrOwogCQljYXNlIE9CSkVDVF9BQ0NFU1NfTUVUSE9EOgpAQCAtMjQxNSw2ICsyNDYwLDEx IEBAIGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBl LCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCQlpZiAoIXBnX3N0YXRpc3RpY3Nfb2JqZWN0X293 bmVyY2hlY2soYWRkcmVzcy5vYmplY3RJZCwgcm9sZWlkKSkKIAkJCQlhY2xjaGVja19lcnJvcl90 eXBlKEFDTENIRUNLX05PVF9PV05FUiwgYWRkcmVzcy5vYmplY3RJZCk7CiAJCQlicmVhazsKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlpZiAoIXBnX3ZhcmlhYmxlX293bmVyY2hlY2soYWRk cmVzcy5vYmplY3RJZCwgcm9sZWlkKSkKKwkJCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1Rf T1dORVIsIG9ianR5cGUsCisJCQkJCQkJICAgTmFtZUxpc3RUb1N0cmluZyhjYXN0Tm9kZShMaXN0 LCBvYmplY3QpKSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwKIAkJCQkgKGludCkgb2JqdHlwZSk7CkBAIC0zMTU3 LDYgKzMyMDcsMzIgQEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAq b2JqZWN0KQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1ZBUklBQkxFOgorCQkJ eworCQkJCWNoYXIJICAgKm5zcG5hbWU7CisJCQkJSGVhcFR1cGxlCXR1cDsKKwkJCQlGb3JtX3Bn X3ZhcmlhYmxlCXZhcmZvcm07CisKKwkJCQl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVP SUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0dXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3Igc2NoZW1hIHZhcmlhYmxlICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKworCQkJ CXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwkJCQlpZiAo VmFyaWFibGVJc1Zpc2libGUob2JqZWN0LT5vYmplY3RJZCkpCisJCQkJCW5zcG5hbWUgPSBOVUxM OworCQkJCWVsc2UKKwkJCQkJbnNwbmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZSh2YXJmb3JtLT52 YXJuYW1lc3BhY2UpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCBfKCJzY2hlbWEg dmFyaWFibGUgJXMiKSwKKwkJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5h bWUsCisJCQkJCQkJCQkJCQkJCQlOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpKSk7CisKKwkJCQlS ZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIE9DTEFTU19U U1BBUlNFUjoKIAkJCXsKIAkJCQlIZWFwVHVwbGUJdHVwOwpAQCAtMzQyMiw2ICszNDk4LDE2IEBA IGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAkJCQkJ CQkJCQkgXygiZGVmYXVsdCBwcml2aWxlZ2VzIG9uIG5ldyBzY2hlbWFzIGJlbG9uZ2luZyB0byBy b2xlICVzIiksCiAJCQkJCQkJCQkJIHJvbGVuYW1lKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNl IERFRkFDTE9CSl9WQVJJQUJMRToKKwkJCQkJCWlmIChuc3BuYW1lKQorCQkJCQkJCWFwcGVuZFN0 cmluZ0luZm8oJmJ1ZmZlciwKKwkJCQkJCQkJCQkJIF8oImRlZmF1bHQgcHJpdmlsZWdlcyBvbiBu ZXcgdmFyaWFibGVzIGJlbG9uZ2luZyB0byByb2xlICVzIGluIHNjaGVtYSAlcyIpLAorCQkJCQkJ CQkJCQkgcm9sZW5hbWUsIG5zcG5hbWUpOworCQkJCQkJZWxzZQorCQkJCQkJCWFwcGVuZFN0cmlu Z0luZm8oJmJ1ZmZlciwKKwkJCQkJCQkJCQkJIF8oImRlZmF1bHQgcHJpdmlsZWdlcyBvbiBuZXcg dmFyaWFibGVzIGJlbG9uZ2luZyB0byByb2xlICVzIiksCisJCQkJCQkJCQkJCSByb2xlbmFtZSk7 CisJCQkJCQlicmVhazsKIAkJCQkJZGVmYXVsdDoKIAkJCQkJCS8qIHNob3VsZG4ndCBnZXQgaGVy ZSAqLwogCQkJCQkJaWYgKG5zcG5hbWUpCkBAIC00MDcwLDYgKzQxNTYsMTAgQEAgZ2V0T2JqZWN0 VHlwZURlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInRyYW5zZm9ybSIpOwogCQkJYnJlYWs7CiAKKwkJY2Fz ZSBPQ0xBU1NfVkFSSUFCTEU6CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsICJz Y2hlbWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOworCiAJCQkvKgogCQkJICogVGhlcmUncyBpbnRl bnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZTsgd2Ugd2FudCB0aGUKIAkJCSAqIGNvbXBp bGVyIHRvIHdhcm4gaWYgYSBuZXcgT0NMQVNTIGhhc24ndCBiZWVuIGhhbmRsZWQgYWJvdmUuCkBA IC00OTYyLDYgKzUwNTIsMTAgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25zdCBPYmplY3RB ZGRyZXNzICpvYmplY3QsCiAJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCiAJ CQkJCQkJCQkJCSAgICIgb24gc2NoZW1hcyIpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgREVG QUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAor CQkJCQkJCQkJCQkgICAiIG9uIHZhcmlhYmxlcyIpOworCQkJCQkJYnJlYWs7CiAJCQkJfQogCiAJ CQkJaWYgKG9iam5hbWUpCkBAIC01MTIxLDYgKzUyMTUsMzMgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQ YXJ0cyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCiAJCQl9CiAJCQlicmVhazsKIAorCQlj YXNlIE9DTEFTU19WQVJJQUJMRToKKwkJCXsKKwkJCQljaGFyCSAgICpzY2hlbWE7CisJCQkJY2hh cgkgICAqdmFybmFtZTsKKwkJCQlIZWFwVHVwbGUJdHVwOworCQkJCUZvcm1fcGdfdmFyaWFibGUJ dmFyZm9ybTsKKworCQkJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0 SWRHZXREYXR1bShvYmplY3QtPm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEg dmFyaWFibGUgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOworCisJCQkJdmFyZm9ybSA9 IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCQkJCXNjaGVtYSA9IGdldF9u YW1lc3BhY2VfbmFtZV9vcl90ZW1wKHZhcmZvcm0tPnZhcm5hbWVzcGFjZSk7CisJCQkJdmFybmFt ZSA9IE5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZi dWZmZXIsICIlcyIsCisJCQkJCQkJCXF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKHNjaGVtYSwg dmFybmFtZSkpOworCisJCQkJaWYgKG9iam5hbWUpCisJCQkJCSpvYmpuYW1lID0gbGlzdF9tYWtl MihzY2hlbWEsIHZhcm5hbWUpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisJCQkJYnJl YWs7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBUaGVyZSdzIGludGVudGlvbmFsbHkgbm8gZGVmYXVs dDogY2FzZSBoZXJlOyB3ZSB3YW50IHRoZQogCQkJICogY29tcGlsZXIgdG8gd2FybiBpZiBhIG5l dyBPQ0xBU1MgaGFzbid0IGJlZW4gaGFuZGxlZCBhYm92ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFi bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mZjcxZjhiZjZhCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jCkBAIC0w LDAgKzEsMzA1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ192YXJpYWJsZS5jCisg KgkJc2NoZW1hIHZhcmlhYmxlcworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJCXNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFi bGUuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIK KyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWls cy5oIgorI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisKKyNpbmNsdWRlICJjYXRhbG9nL2RlcGVu ZGVuY3kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFjY2Vzcy5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgorCisjaW5jbHVkZSAibm9kZXMvbWFr ZWZ1bmNzLmgiCisKKyNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKKworI2luY2x1ZGUgInV0aWxz L2FycmF5LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9m bWdyb2lkcy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxz L3BnX2xzbi5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCisKKy8qCisgKiBSZXR1cm5zIG5hbWUgb2Ygc2NoZW1hIHZhcmlhYmxlLiBXaGVuIHZh cmlhYmxlIGlzIG5vdCBvbiBwYXRoLAorICogdGhlbiB0aGUgbmFtZSBpcyBxdWFsaWZpZWQuCisg Ki8KK2NoYXIgKgorc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKE9pZCB2YXJpZCkKK3sKKwlIZWFw VHVwbGUJdHVwOworCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9ybTsKKwljaGFyICAgKnZhcm5hbWU7 CisJY2hhciAgICpuc3BuYW1lOworCWNoYXIgICAqcmVzdWx0OworCisJdHVwID0gU2VhcmNoU3lz Q2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhl YXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxl KSBHRVRTVFJVQ1QodHVwKTsKKworCXZhcm5hbWUgPSBOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUp OworCisJaWYgKFZhcmlhYmxlSXNWaXNpYmxlKHZhcmlkKSkKKwkJbnNwbmFtZSA9IE5VTEw7CisJ ZWxzZQorCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKHZhcmZvcm0tPnZhcm5hbWVzcGFj ZSk7CisKKwlyZXN1bHQgPSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihuc3BuYW1lLCB2YXJu YW1lKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwor LyoKKyAqIFJldHVybnMgdmFybmFtZSBmaWVsZCBvZiBwZ192YXJpYWJsZQorICovCitjaGFyICoK K2dldF9zY2hlbWFfdmFyaWFibGVfbmFtZShPaWQgdmFyaWQpCit7CisJSGVhcFR1cGxlCXR1cDsK KwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm07CisJY2hhciAgICp2YXJuYW1lOworCisJdHVwID0g U2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisK KwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3Bn X3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZhcm5hbWUgPSBOYW1lU3RyKHZhcmZvcm0t PnZhcm5hbWUpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gdmFybmFtZTsK K30KKworLyoKKyAqIFJldHVybnMgdHlwZSwgdHlwbW9kIG9mIHNjaGVtYSB2YXJpYWJsZQorICov Cit2b2lkCitnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9kKE9pZCB2YXJpZCwgT2lkICp0 eXBpZCwgaW50MzIgKnR5cG1vZCkKK3sKKwlIZWFwVHVwbGUJdHVwOworCUZvcm1fcGdfdmFyaWFi bGUgdmFyZm9ybTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0 SWRHZXREYXR1bSh2YXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB2YXJpYWJsZSAldSIsIHZhcmlkKTsK KworCXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwkqdHlw aWQgPSB2YXJmb3JtLT52YXJ0eXBlOworCSp0eXBtb2QgPSB2YXJmb3JtLT52YXJ0eXBtb2Q7CisK KwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybjsKK30KKworLyoKKyAqIEZldGNoIGFs bCBmaWVsZHMgb2Ygc2NoZW1hIHZhcmlhYmxlIGZyb20gdGhlIHN5c2NhY2hlLgorICovCitWYXJp YWJsZSAqCitHZXRWYXJpYWJsZShPaWQgdmFyaWQsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlIZWFw VHVwbGUJdHVwOworCVZhcmlhYmxlICp2YXI7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOwor CURhdHVtCQlhY2xEYXR1bTsKKwlEYXR1bQkJZGVmZXhwckRhdHVtOworCWJvb2wJCWlzbnVsbDsK KworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh2 YXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJeworCQlpZiAobWlzc2lu Z19vaykKKwkJCXJldHVybiBOVUxMOworCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciB2YXJpYWJsZSAldSIsIHZhcmlkKTsKKwl9CisKKwl2YXJmb3JtID0gKEZvcm1fcGdf dmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFyID0gKFZhcmlhYmxlICopIHBhbGxvYyhz aXplb2YoVmFyaWFibGUpKTsKKwl2YXItPm9pZCA9IHZhcmlkOworCXZhci0+bmFtZSA9IHBzdHJk dXAoTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKSk7CisJdmFyLT5uYW1lc3BhY2UgPSB2YXJmb3Jt LT52YXJuYW1lc3BhY2U7CisJdmFyLT50eXBpZCA9IHZhcmZvcm0tPnZhcnR5cGU7CisJdmFyLT50 eXBtb2QgPSB2YXJmb3JtLT52YXJ0eXBtb2Q7CisJdmFyLT5vd25lciA9IHZhcmZvcm0tPnZhcm93 bmVyOworCisJLyogR2V0IGRlZmV4cHIgKi8KKwlkZWZleHByRGF0dW0gPSBTeXNDYWNoZUdldEF0 dHIoVkFSSUFCTEVPSUQsCisJCQkJCQkJdHVwLAorCQkJCQkJCUFudW1fcGdfdmFyaWFibGVfdmFy ZGVmZXhwciwKKwkJCQkJCQkmaXNudWxsKTsKKworCWlmICghaXNudWxsKQorCQl2YXItPmRlZmV4 cHIgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhkZWZleHByRGF0dW0pKTsKKwll bHNlCisJCXZhci0+ZGVmZXhwciA9IE5VTEw7CisKKwkvKiBHZXQgdmFyYWNsICovCisJYWNsRGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoVkFSSUFCTEVPSUQsCisJCQkJCQkJdHVwLAorCQkJCQkJCUFu dW1fcGdfdmFyaWFibGVfdmFyYWNsLAorCQkJCQkJCSZpc251bGwpOworCWlmICghaXNudWxsKQor CQl2YXItPmFjbCA9IERhdHVtR2V0QWNsUENvcHkoYWNsRGF0dW0pOworCWVsc2UKKwkJdmFyLT5h Y2wgPSBOVUxMOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gdmFyOworfQor CitPYmplY3RBZGRyZXNzCitWYXJpYWJsZUNyZWF0ZShjb25zdCBjaGFyICp2YXJOYW1lLAorCQkJ ICAgT2lkIHZhck5hbWVzcGFjZSwKKwkJCSAgIE9pZCB2YXJUeXBlLAorCQkJICAgaW50MzIgdmFy VHlwbW9kLAorCQkJICAgT2lkIHZhck93bmVyLAorCQkJICAgTm9kZSAqdmFyRGVmZXhwciwKKwkJ CSAgIGJvb2wgaWZfbm90X2V4aXN0cykKK3sKKwlBY2wJCSAgICp2YXJhY2w7CisJTmFtZURhdGEJ dmFybmFtZTsKKwlib29sCQludWxsc1tOYXR0c19wZ192YXJpYWJsZV07CisJRGF0dW0JCXZhbHVl c1tOYXR0c19wZ192YXJpYWJsZV07CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0dXAsCisJ CQkJb2xkdHVwOworCVR1cGxlRGVzYwl0dXBkZXNjOworCU9iamVjdEFkZHJlc3MJbXlzZWxmLAor CQkJCQlyZWZlcmVuY2VkOworCU9pZAkJCXJldHZhbDsKKwlpbnQJCQlpOworCisJZm9yIChpID0g MDsgaSA8IE5hdHRzX3BnX3ZhcmlhYmxlOyBpKyspCisJeworCQludWxsc1tpXSA9IGZhbHNlOwor CQl2YWx1ZXNbaV0gPSAoRGF0dW0pIDA7CisJfQorCisJbmFtZXN0cmNweSgmdmFybmFtZSwgdmFy TmFtZSk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFybmFtZSAtIDFdID0gTmFtZUdldERh dHVtKCZ2YXJuYW1lKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJuYW1lc3BhY2UgLSAx XSA9IE9iamVjdElkR2V0RGF0dW0odmFyTmFtZXNwYWNlKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJp YWJsZV92YXJ0eXBlIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHZhclR5cGUpOworCXZhbHVlc1tB bnVtX3BnX3ZhcmlhYmxlX3ZhcnR5cG1vZCAtIDFdID0gSW50MzJHZXREYXR1bSh2YXJUeXBtb2Qp OworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm93bmVyIC0gMV0gPSBPYmplY3RJZEdldERh dHVtKHZhck93bmVyKTsKKwkvKiBwcm9hY2wgd2lsbCBiZSBkZXRlcm1pbmVkIGxhdGVyICovCisK KwlpZiAodmFyRGVmZXhwcikKKwkJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyZGVmZXhwciAt IDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShub2RlVG9TdHJpbmcodmFyRGVmZXhwcikpOworCWVs c2UKKwkJbnVsbHNbQW51bV9wZ192YXJpYWJsZV92YXJkZWZleHByIC0gMV0gPSB0cnVlOworCisJ cmVsID0gaGVhcF9vcGVuKFZhcmlhYmxlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJ dHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKworCW9sZHR1cCA9IFNlYXJjaFN5c0Nh Y2hlMihWQVJJQUJMRU5BTUVOU1AsCisJCQkJCQkJIFBvaW50ZXJHZXREYXR1bSh2YXJOYW1lKSwK KwkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bSh2YXJOYW1lc3BhY2UpKTsKKworCWlmIChIZWFwVHVw bGVJc1ZhbGlkKG9sZHR1cCkpCisJeworCQlpZiAoaWZfbm90X2V4aXN0cykKKwkJCWVyZXBvcnQo Tk9USUNFLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJCQkg ZXJybXNnKCJzY2hlbWEgdmFyaWFibGUgXCIlc1wiIGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyIs CisJCQkJCQkJdmFyTmFtZSkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygic2NoZW1hIHZh cmlhYmxlIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQkJdmFyTmFtZSkpKTsKKworCQlo ZWFwX2ZyZWV0dXBsZShvbGR0dXApOworCQloZWFwX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9j ayk7CisKKwkJcmV0dXJuIEludmFsaWRPYmplY3RBZGRyZXNzOworCX0KKworCXZhcmFjbCA9IGdl dF91c2VyX2RlZmF1bHRfYWNsKE9CSkVDVF9WQVJJQUJMRSwgdmFyT3duZXIsCisJCQkJCQkJCSAg dmFyTmFtZXNwYWNlKTsKKworCWlmICh2YXJhY2wgIT0gTlVMTCkKKwkJdmFsdWVzW0FudW1fcGdf dmFyaWFibGVfdmFyYWNsIC0gMV0gPSBQb2ludGVyR2V0RGF0dW0odmFyYWNsKTsKKwllbHNlCisJ CW51bGxzW0FudW1fcGdfdmFyaWFibGVfdmFyYWNsIC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVh cF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2Vy dChyZWwsIHR1cCk7CisKKwlyZXR2YWwgPSBIZWFwVHVwbGVHZXRPaWQodHVwKTsKKworCW15c2Vs Zi5jbGFzc0lkID0gVmFyaWFibGVSZWxhdGlvbklkOworCW15c2VsZi5vYmplY3RJZCA9IHJldHZh bDsKKwlteXNlbGYub2JqZWN0U3ViSWQgPSAwOworCisJLyogZGVwZW5kZW5jeSBvbiBuYW1lc3Bh Y2UgKi8KKwlyZWZlcmVuY2VkLmNsYXNzSWQgPSBOYW1lc3BhY2VSZWxhdGlvbklkOworCXJlZmVy ZW5jZWQub2JqZWN0SWQgPSB2YXJOYW1lc3BhY2U7CisJcmVmZXJlbmNlZC5vYmplY3RTdWJJZCA9 IDA7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZ X05PUk1BTCk7CisKKwkvKiBkZXBlbmRlbmN5IG9uIHVzZWQgdHlwZSAqLworCXJlZmVyZW5jZWQu Y2xhc3NJZCA9IFR5cGVSZWxhdGlvbklkOworCXJlZmVyZW5jZWQub2JqZWN0SWQgPSB2YXJUeXBl OworCXJlZmVyZW5jZWQub2JqZWN0U3ViSWQgPSAwOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlz ZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCisJLyogZGVwZW5kZW5jeSBv biBhbnkgcm9sZXMgbWVudGlvbmVkIGluIEFDTCAqLworCWlmICh2YXJhY2wgIT0gTlVMTCkKKwl7 CisJCWludAkJCW5uZXdtZW1iZXJzOworCQlPaWQJCSAgICpuZXdtZW1iZXJzOworCisJCW5uZXdt ZW1iZXJzID0gYWNsbWVtYmVycyh2YXJhY2wsICZuZXdtZW1iZXJzKTsKKwkJdXBkYXRlQWNsRGVw ZW5kZW5jaWVzKFZhcmlhYmxlUmVsYXRpb25JZCwgcmV0dmFsLCAwLAorCQkJCQkJCSAgdmFyT3du ZXIsCisJCQkJCQkJICAwLCBOVUxMLAorCQkJCQkJCSAgbm5ld21lbWJlcnMsIG5ld21lbWJlcnMp OworCX0KKworCS8qIGRlcGVuZGVuY3kgb24gZXh0ZW5zaW9uICovCisJcmVjb3JkRGVwZW5kZW5j eU9uQ3VycmVudEV4dGVuc2lvbigmbXlzZWxmLCBmYWxzZSk7CisKKwloZWFwX2ZyZWV0dXBsZSh0 dXApOworCisJLyogUG9zdCBjcmVhdGlvbiBob29rIGZvciBuZXcgZnVuY3Rpb24gKi8KKwlJbnZv a2VPYmplY3RQb3N0Q3JlYXRlSG9vayhWYXJpYWJsZVJlbGF0aW9uSWQsIHJldHZhbCwgMCk7CisK KwloZWFwX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gbXlzZWxmOwor fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9NYWtlZmlsZQppbmRleCA0YTZjOTllMDkwLi4yY2I1YjExNzJkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9NYWtlZmlsZQpAQCAtMTgsNyArMTgsNyBAQCBPQkpTID0gYW1jbWRzLm8gYWdncmVnYXRl Y21kcy5vIGFsdGVyLm8gYW5hbHl6ZS5vIGFzeW5jLm8gY2x1c3Rlci5vIGNvbW1lbnQubyBcCiAJ ZXZlbnRfdHJpZ2dlci5vIGV4cGxhaW4ubyBleHRlbnNpb24ubyBmb3JlaWduY21kcy5vIGZ1bmN0 aW9uY21kcy5vIFwKIAlpbmRleGNtZHMubyBsb2NrY21kcy5vIG1hdHZpZXcubyBvcGVyYXRvcmNt ZHMubyBvcGNsYXNzY21kcy5vIFwKIAlwb2xpY3kubyBwb3J0YWxjbWRzLm8gcHJlcGFyZS5vIHBy b2NsYW5nLm8gcHVibGljYXRpb25jbWRzLm8gXAotCXNjaGVtYWNtZHMubyBzZWNsYWJlbC5vIHNl cXVlbmNlLm8gc3RhdHNjbWRzLm8gc3Vic2NyaXB0aW9uY21kcy5vIFwKKwlzY2hlbWFjbWRzLm8g c2VjbGFiZWwubyBzZXF1ZW5jZS5vIHNjaGVtYXZhcmlhYmxlLm8gc3RhdHNjbWRzLm8gc3Vic2Ny aXB0aW9uY21kcy5vIFwKIAl0YWJsZWNtZHMubyB0YWJsZXNwYWNlLm8gdHJpZ2dlci5vIHRzZWFy Y2hjbWRzLm8gdHlwZWNtZHMubyB1c2VyLm8gXAogCXZhY3V1bS5vIHZhY3V1bWxhenkubyB2YXJp YWJsZS5vIHZpZXcubwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwppbmRleCBlZmYzMjVjYzdkLi5hOWQ1ZTVl MGFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKQEAgLTM4Nyw2ICszODcsNyBAQCBFeGVjUmVuYW1lU3Rt dChSZW5hbWVTdG10ICpzdG10KQogCQljYXNlIE9CSkVDVF9UU1RFTVBMQVRFOgogCQljYXNlIE9C SkVDVF9QVUJMSUNBVElPTjoKIAkJY2FzZSBPQkpFQ1RfU1VCU0NSSVBUSU9OOgorCQljYXNlIE9C SkVDVF9WQVJJQUJMRToKIAkJCXsKIAkJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CiAJCQkJUmVs YXRpb24JY2F0YWxvZzsKQEAgLTUwNCw2ICs1MDUsNyBAQCBFeGVjQWx0ZXJPYmplY3RTY2hlbWFT dG10KEFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqc3RtdCwKIAkJY2FzZSBPQkpFQ1RfVFNESUNUSU9O QVJZOgogCQljYXNlIE9CSkVDVF9UU1BBUlNFUjoKIAkJY2FzZSBPQkpFQ1RfVFNURU1QTEFURToK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQl7CiAJCQkJUmVsYXRpb24JY2F0YWxvZzsKIAkJ CQlSZWxhdGlvbglyZWxhdGlvbjsKQEAgLTU5NCw2ICs1OTYsNyBAQCBBbHRlck9iamVjdE5hbWVz cGFjZV9vaWQoT2lkIGNsYXNzSWQsIE9pZCBvYmppZCwgT2lkIG5zcE9pZCwKIAkJY2FzZSBPQ0xB U1NfVFNESUNUOgogCQljYXNlIE9DTEFTU19UU1RFTVBMQVRFOgogCQljYXNlIE9DTEFTU19UU0NP TkZJRzoKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAJCQl7CiAJCQkJUmVsYXRpb24JY2F0YWxv ZzsKIApAQCAtODUyLDYgKzg1NSw3IEBAIEV4ZWNBbHRlck93bmVyU3RtdChBbHRlck93bmVyU3Rt dCAqc3RtdCkKIAkJY2FzZSBPQkpFQ1RfVEFCTEVTUEFDRToKIAkJY2FzZSBPQkpFQ1RfVFNESUNU SU9OQVJZOgogCQljYXNlIE9CSkVDVF9UU0NPTkZJR1VSQVRJT046CisJCWNhc2UgT0JKRUNUX1ZB UklBQkxFOgogCQkJewogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CiAJCQkJUmVsYXRpb24JcmVsYXRp b247CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKaW5kZXggMDFhOTk5YzJhYy4uZmVjMjQ5NWU5MyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2Rpc2NhcmQuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNvbW1hbmRz L2Rpc2NhcmQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvc2VxdWVuY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIgog I2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL3BvcnRhbC5oIgogCkBAIC00 OCw2ICs0OSwxMCBAQCBEaXNjYXJkQ29tbWFuZChEaXNjYXJkU3RtdCAqc3RtdCwgYm9vbCBpc1Rv cExldmVsKQogCQkJUmVzZXRUZW1wVGFibGVOYW1lc3BhY2UoKTsKIAkJCWJyZWFrOwogCisJCWNh c2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQlSZXNldFNjaGVtYVZhcmlhYmxlQ2FjaGUoKTsKKwkJ CWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIERJU0NB UkQgdGFyZ2V0OiAlZCIsIHN0bXQtPnRhcmdldCk7CiAJfQpAQCAtNzUsNCArODAsNSBAQCBEaXNj YXJkQWxsKGJvb2wgaXNUb3BMZXZlbCkKIAlSZXNldFBsYW5DYWNoZSgpOwogCVJlc2V0VGVtcFRh YmxlTmFtZXNwYWNlKCk7CiAJUmVzZXRTZXF1ZW5jZUNhY2hlcygpOworCVJlc2V0U2NoZW1hVmFy aWFibGVDYWNoZSgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRf dHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmluZGV4IGVl Y2M4NWQxNGUuLjQyNmRmMjQ2YjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2 ZW50X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMK QEAgLTEyNiw2ICsxMjYsNyBAQCBzdGF0aWMgZXZlbnRfdHJpZ2dlcl9zdXBwb3J0X2RhdGEgZXZl bnRfdHJpZ2dlcl9zdXBwb3J0W10gPSB7CiAJeyJURVhUIFNFQVJDSCBURU1QTEFURSIsIHRydWV9 LAogCXsiVFlQRSIsIHRydWV9LAogCXsiVVNFUiBNQVBQSU5HIiwgdHJ1ZX0sCisJeyJWQVJJQUJM RSIsIHRydWV9LAogCXsiVklFVyIsIHRydWV9LAogCXtOVUxMLCBmYWxzZX0KIH07CkBAIC0yOTcs NyArMjk4LDggQEAgY2hlY2tfZGRsX3RhZyhjb25zdCBjaGFyICp0YWcpCiAJCXBnX3N0cmNhc2Vj bXAodGFnLCAiUkVWT0tFIikgPT0gMCB8fAogCQlwZ19zdHJjYXNlY21wKHRhZywgIkRST1AgT1dO RUQiKSA9PSAwIHx8CiAJCXBnX3N0cmNhc2VjbXAodGFnLCAiSU1QT1JUIEZPUkVJR04gU0NIRU1B IikgPT0gMCB8fAotCQlwZ19zdHJjYXNlY21wKHRhZywgIlNFQ1VSSVRZIExBQkVMIikgPT0gMCkK KwkJcGdfc3RyY2FzZWNtcCh0YWcsICJTRUNVUklUWSBMQUJFTCIpID09IDAgfHwKKwkJcGdfc3Ry Y2FzZWNtcCh0YWcsICJDUkVBVEUgVkFSSUFCTEUiKSA9PSAwKQogCQlyZXR1cm4gRVZFTlRfVFJJ R0dFUl9DT01NQU5EX1RBR19PSzsKIAogCS8qCkBAIC0xMTQ2LDYgKzExNDgsNyBAQCBFdmVudFRy aWdnZXJTdXBwb3J0c09iamVjdFR5cGUoT2JqZWN0VHlwZSBvYnR5cGUpCiAJCWNhc2UgT0JKRUNU X1RTVEVNUExBVEU6CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCWNhc2UgT0JKRUNUX1VTRVJfTUFQ UElORzoKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCQly ZXR1cm4gdHJ1ZTsKIApAQCAtMTIwOSw2ICsxMjEyLDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNP YmplY3RDbGFzcyhPYmplY3RDbGFzcyBvYmpjbGFzcykKIAkJY2FzZSBPQ0xBU1NfUFVCTElDQVRJ T05fUkVMOgogCQljYXNlIE9DTEFTU19TVUJTQ1JJUFRJT046CiAJCWNhc2UgT0NMQVNTX1RSQU5T Rk9STToKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAJCQlyZXR1cm4gdHJ1ZTsKIAogCQkJLyoK QEAgLTIyNDQsNiArMjI0OCw4IEBAIHN0cmluZ2lmeV9ncmFudF9vYmp0eXBlKE9iamVjdFR5cGUg b2JqdHlwZSkKIAkJCXJldHVybiAiVEFCTEVTUEFDRSI7CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJ CQlyZXR1cm4gIlRZUEUiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFS SUFCTEUiOwogCQkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2UgT0JK RUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKQEAgLTIzMjYsNiAr MjMzMiw4IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUp CiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0VTIjsKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXJldHVy biAiVFlQRVMiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFSSUFCTEVT IjsKIAkJCS8qIHRoZXNlIGN1cnJlbnRseSBhcmVuJ3QgdXNlZCAqLwogCQljYXNlIE9CSkVDVF9B Q0NFU1NfTUVUSE9EOgogCQljYXNlIE9CSkVDVF9BR0dSRUdBVEU6CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJl LmMKaW5kZXggYjk0NWIxNTU2YS4uZWI4YzA4YmFmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpA QCAtMTUxLDYgKzE1MSw3IEBAIFByZXBhcmVRdWVyeShQcmVwYXJlU3RtdCAqc3RtdCwgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCiAJCWNhc2UgQ01EX0lOU0VSVDoKIAkJY2FzZSBDTURfVVBEQVRF OgogCQljYXNlIENNRF9ERUxFVEU6CisJCWNhc2UgQ01EX1BMQU5fVVRJTElUWToKIAkJCS8qIE9L ICovCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3NjaGVtYXZhcmlhYmxlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2YXJpYWJs ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNkMzlmNWZkNDEKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5jCkBA IC0wLDAgKzEsNDY3IEBACisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJtaXNjYWRt aW4uaCIKKworI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1 cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRlICJjYXRhbG9n L2luZGV4aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyaWFibGUu aCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3N2 YXJpYWJsZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCisjaW5jbHVk ZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgi CisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2V4cHIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vf dHlwZS5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0 dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc25hcG1n ci5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBUaGUgY29udGVudCBv ZiB2YXJpYWJsZXMgaXMgbm90IHRyYW5zYWN0aW9uYWwuIER1ZSB0aGlzIGZhY3QgdGhlCisgKiBp bXBsZW1lbnRhdGlvbiBvZiBEUk9QIGNhbiBiZSBzaW1wbGUsIGJlY2F1c2UgYWx0aG91Z2ggRFJP UCBWQVJJQUJMRQorICogY2FuIGJlIHJldmVydGVkLCB0aGUgY29udGVudCBvZiB2YXJpYWJsZSBj YW4gYmUgbG9zdC4gSW4gdGhpcyBleGFtcGxlLAorICogRFJPUCBWQVJJQUJMRSBpcyBzYW1lIGxp a2UgcmVzZXQgdmFyaWFibGUuCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgU2NoZW1hVmFyaWFibGVE YXRhCit7CisJT2lkCQkJdmFyaWQ7CQkJLyogcGdfdmFyaWFibGUgT0lEIG9mIHRoaXMgc2VxdWVu Y2UgKGhhc2gga2V5KSAqLworCU9pZAkJCXR5cGlkOwkJCS8qIE9JRCBvZiB0aGUgZGF0YSB0eXBl ICovCisJaW50MzIJCXR5cG1vZDsKKwlpbnQxNgkJdHlwbGVuOworCWJvb2wJCXR5cGJ5dmFsOwor CWJvb2wJCWlzbnVsbDsKKwlib29sCQlmcmVldmFsOworCURhdHVtCQl2YWx1ZTsKKwlib29sCQlp c19yb3d0eXBlOwkJLyogdHJ1ZSB3aGVuIHZhcmlhYmxlIGlzIGNvbXBvc2l0ZSAqLworCWJvb2wJ CWlzX3ZhbGlkOwkJLyogdHJ1ZSB3aGVuIHZhcmlhYmxlIHdhcyBzdWNjZXNzZnVseSBpbml0aWFs aXplZCAqLworfSBTY2hlbWFWYXJpYWJsZURhdGE7CisKK3R5cGVkZWYgU2NoZW1hVmFyaWFibGVE YXRhICpTY2hlbWFWYXJpYWJsZTsKKworc3RhdGljIEhUQUIgKnNjaGVtYXZhcmhhc2h0YWIgPSBO VUxMOwkJLyogaGFzaCB0YWJsZSBmb3Igc2Vzc2lvbiB2YXJpYWJsZXMgKi8KK3N0YXRpYyBNZW1v cnlDb250ZXh0IFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dCA9IE5VTEw7CisKK3N0YXRpYyBi b29sIGZpcnN0X3RpbWUgPSB0cnVlOworc3RhdGljIHZvaWQgY3JlYXRlX3NjaGVtYXZhcl9oYXNo dGFibGUodm9pZCk7CitzdGF0aWMgYm9vbCBjbGVhbl9jYWNoZV9yZXEgPSBmYWxzZTsKKworc3Rh dGljIHZvaWQgY2xlYW5fY2FjaGUodm9pZCk7CitzdGF0aWMgdm9pZCBmb3JjZV9jbGVhbl9jYWNo ZShYYWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZyk7CisKKworLyoKKyAqIFNhdmUgaW5mbyBhYm91 dCBuY2Vzc2l0eSB0byBjbGVhbiBoYXNoIHRhYmxlLCBiZWNhdXNlIHNvbWUKKyAqIHNjaGVtYSB2 YXJpYWJsZSB3YXMgZHJvcHBlZC4gRG9uJ3QgZG8gaGVyZSBtb3JlLCByZWNoZWNrCisgKiBuZWVk cyB0byBiZSBpbiB0cmFuc2FjdGlvbiBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK0ludmFsaWRh dGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBo YXNodmFsdWUpCit7CisJaWYgKGNhY2hlaWQgIT0gVkFSSUFCTEVPSUQpCisJCXJldHVybjsKKwor CWNsZWFuX2NhY2hlX3JlcSA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkCitmb3JjZV9jbGVhbl9j YWNoZShYYWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZykKK3sKKwkvKgorCSAqIHNob3VsZCBjb250 aW51ZSBvbmx5IGluIHRyYW5zYWN0aW9uIHRpbWUsIHdoZW4KKwkgKiBzeXNjYWNoZSBpcyBhdmFp bGFibGUuCisJICovCisJaWYgKGNsZWFuX2NhY2hlX3JlcSAmJiBJc1RyYW5zYWN0aW9uU3RhdGUo KSkKKwl7CisJCWNsZWFuX2NhY2hlKCk7CisJCWNsZWFuX2NhY2hlX3JlcSA9IGZhbHNlOworCX0K K30KKworc3RhdGljIHZvaWQKK2NsZWFuX2NhY2hlKHZvaWQpCit7CisJSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKKwlTY2hlbWFWYXJpYWJsZQkJdmFyOworCisJaWYgKCFzY2hlbWF2YXJoYXNodGFi KQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHNjaGVtYXZhcmhhc2h0YWIp OworCisJLyoKKwkgKiBFdmVyeSB2YWxpZCB2YXJpYWJsZSBoYXZlIHRvIGhhdmUgZW50cnkgaW4g c3lzdGVtCisJICogY2F0YWxvZy4gUmVtb3ZlZCBpZiB0aGVyZSBpcyBub3RoaW5nLgorCSAqLwor CXdoaWxlICgodmFyID0gKFNjaGVtYVZhcmlhYmxlKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJeworCQlIZWFwVHVwbGUJdHAgPSBJbnZhbGlkT2lkOworCisJCXRwID0gU2Vh cmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhci0+dmFyaWQpKTsK KwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJeworCQkJZWxvZyhERUJVRzEsICJ2YXJp YWJsZSAlZCBpcyByZW1vdmVkIGZyb20gY2FjaGUiLCB2YXItPnZhcmlkKTsKKworCQkJaWYgKHZh ci0+ZnJlZXZhbCkKKwkJCXsKKwkJCQlwZnJlZShEYXR1bUdldFBvaW50ZXIodmFyLT52YWx1ZSkp OworCQkJCXZhci0+ZnJlZXZhbCA9IGZhbHNlOworCQkJfQorCisJCQlpZiAoaGFzaF9zZWFyY2go c2NoZW1hdmFyaGFzaHRhYiwKKwkJCQkJCQkJKHZvaWQgKikgJnZhci0+dmFyaWQsCisJCQkJCQkJ CUhBU0hfUkVNT1ZFLAorCQkJCQkJCQlOVUxMKSA9PSBOVUxMKQorCQkJCWVsb2coREVCVUcxLCAi aGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKwkJfQorCQllbHNlCisJCQlSZWxlYXNlU3lzQ2FjaGUo dHApOworCX0KK30KKworLyoKKyAqIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBmb3Igc3RvcmluZyBz Y2hlbWEgdmFyaWFibGVzCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVfc2NoZW1hdmFyX2hhc2h0 YWJsZSh2b2lkKQoreworCUhBU0hDVEwJCWN0bDsKKworCS8qIHNldCBjYWxsYmFja3MgKi8KKwlp ZiAoZmlyc3RfdGltZSkKKwl7CisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFZBUklB QkxFT0lELAorCQkJCQkJCQkJICBJbnZhbGlkYXRlU2NoZW1hVmFyQ2FjaGVDYWxsYmFjaywKKwkJ CQkJCQkJCSAgKERhdHVtKSAwKTsKKworCQlSZWdpc3RlclhhY3RDYWxsYmFjayhmb3JjZV9jbGVh bl9jYWNoZSwgTlVMTCk7CisKKwkJZmlyc3RfdGltZSA9IGZhbHNlOworCX0KKworCS8qIG5lZWRz IG93biBsb25nIGxpZmUgbWVtb3J5IGNvbnRleHQgKi8KKwlpZiAoU2NoZW1hVmFyaWFibGVNZW1v cnlDb250ZXh0ID09IE5VTEwpCisJeworCQlTY2hlbWFWYXJpYWJsZU1lbW9yeUNvbnRleHQgPSBB bGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkJCSJz Y2hlbWEgdmFyaWFibGVzIiwKKwkJCQkJCQkJCQkJCQkJCUFMTE9DU0VUX1NUQVJUX1NNQUxMX1NJ WkVTKTsKKwl9CisKKwltZW1zZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkpOworCWN0bC5rZXlzaXpl ID0gc2l6ZW9mKE9pZCk7CisJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihTY2hlbWFWYXJpYWJsZURh dGEpOworCWN0bC5oY3h0ID0gU2NoZW1hVmFyaWFibGVNZW1vcnlDb250ZXh0OworCisJc2NoZW1h dmFyaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJTY2hlbWEgdmFyaWFibGVzIiwgNjQsICZjdGwsCisJ CQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7Cit9CisKKy8q CisgKiBGYXN0IGRyb3AgY29tcGxldGUgY29udGVudCBvZiBzY2hlbWEgdmFyaWFibGVzCisgKi8K K3ZvaWQKK1Jlc2V0U2NoZW1hVmFyaWFibGVDYWNoZSh2b2lkKQoreworCWlmIChzY2hlbWF2YXJo YXNodGFiKQorCXsKKwkJaGFzaF9kZXN0cm95KHNjaGVtYXZhcmhhc2h0YWIpOworCQlzY2hlbWF2 YXJoYXNodGFiID0gTlVMTDsKKwl9CisKKwlpZiAoU2NoZW1hVmFyaWFibGVNZW1vcnlDb250ZXh0 ICE9IE5VTEwpCisJeworCQlNZW1vcnlDb250ZXh0UmVzZXQoU2NoZW1hVmFyaWFibGVNZW1vcnlD b250ZXh0KTsKKwl9Cit9CisKKy8qCisgKiBEcm9wIHZhcmlhYmxlIGJ5IE9JRAorICovCit2b2lk CitSZW1vdmVWYXJpYWJsZUJ5SWQoT2lkIHZhcmlkKQoreworCVJlbGF0aW9uCXJlbDsKKwlIZWFw VHVwbGUJdHVwOworCisJcmVsID0gaGVhcF9vcGVuKFZhcmlhYmxlUmVsYXRpb25JZCwgUm93RXhj bHVzaXZlTG9jayk7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVj dElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7 CisKKwlDYXRhbG9nVHVwbGVEZWxldGUocmVsLCAmdHVwLT50X3NlbGYpOworCisJUmVsZWFzZVN5 c0NhY2hlKHR1cCk7CisKKwloZWFwX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisK Ky8qCisgKiBDcmVhdGVzIG5ldyB2YXJpYWJsZSAtIGVudHJ5IGluIHBnX2NhdGFsb2cucGdfdmFy aWFibGUgdGFibGUKKyAqLworT2JqZWN0QWRkcmVzcworRGVmaW5lU2NoZW1hVmFyaWFibGUoUGFy c2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTY2hlbWFWYXJTdG10ICpzdG10KQoreworCU9pZAkJCW5h bWVzcGFjZWlkOworCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJT2lkCQkJdHlwaWQ7CisJaW50MzIJ CXR5cG1vZDsKKwlPaWQJCQl2YXJvd25lciA9IEdldFVzZXJJZCgpOworCisJTm9kZQkgICAqY29v a2VkX2RlZmF1bHQgPSBOVUxMOworCisJbmFtZXNwYWNlaWQgPQorCQlSYW5nZVZhckdldEFuZENo ZWNrQ3JlYXRpb25OYW1lc3BhY2Uoc3RtdC0+dmFyaWFibGUsIE5vTG9jaywgTlVMTCk7CisKKwl0 eXBlbmFtZVR5cGVJZEFuZE1vZChwc3RhdGUsIHN0bXQtPnR5cGVOYW1lLCAmdHlwaWQsICZ0eXBt b2QpOworCisJYWNscmVzdWx0ID0gcGdfdHlwZV9hY2xjaGVjayh0eXBpZCwgR2V0VXNlcklkKCks IEFDTF9VU0FHRSk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJYWNsY2hlY2tf ZXJyb3JfdHlwZShhY2xyZXN1bHQsIHR5cGlkKTsKKworCWlmIChzdG10LT5kZWZleHByKQorCXsK KwkJY29va2VkX2RlZmF1bHQgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgc3RtdC0+ZGVmZXhwciwK KwkJCQkJCQkJCQlFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVCk7CisKKwkJY29va2VkX2RlZmF1 bHQgPSBjb2VyY2VfdG9fc3BlY2lmaWNfdHlwZShwc3RhdGUsCisJCQkJCQkJCQkJCQkgY29va2Vk X2RlZmF1bHQsIHR5cGlkLCAiREVGQVVMVCIpOworCX0KKworCXJldHVybiBWYXJpYWJsZUNyZWF0 ZShzdG10LT52YXJpYWJsZS0+cmVsbmFtZSwKKwkJCQkJCSAgbmFtZXNwYWNlaWQsCisJCQkJCQkg IHR5cGlkLAorCQkJCQkJICB0eXBtb2QsCisJCQkJCQkgIHZhcm93bmVyLAorCQkJCQkJICBjb29r ZWRfZGVmYXVsdCwKKwkJCQkJCSAgc3RtdC0+aWZfbm90X2V4aXN0cyk7Cit9CisKKy8qCisgKiBU cnkgdG8gc2VhcmNoIHZhbHVlIGluIGhhc2ggdGFibGUuIElmIGRvZXNuJ3QKKyAqIGV4aXN0cyBp bnNlcnQgaXQgKGFuZCBjYWxjdWxhdGUgZGVmZXhwciBpZiBleGlzdHMuCisgKi8KK3N0YXRpYyBT Y2hlbWFWYXJpYWJsZQorUHJlcGFyZVNjaGVtYVZhcmlhYmxlRm9yUmVhZGluZyhPaWQgdmFyaWQp Cit7CisJU2NoZW1hVmFyaWFibGUJc3ZhcjsKKwlWYXJpYWJsZQkqdmFyOworCWJvb2wJCQlmb3Vu ZDsKKworCWlmIChzY2hlbWF2YXJoYXNodGFiID09IE5VTEwpCisJCWNyZWF0ZV9zY2hlbWF2YXJf aGFzaHRhYmxlKCk7CisKKwlzdmFyID0gKFNjaGVtYVZhcmlhYmxlKSBoYXNoX3NlYXJjaChzY2hl bWF2YXJoYXNodGFiLCAmdmFyaWQsCisJCQkJCQkJCQkJCSAgSEFTSF9FTlRFUiwgJmZvdW5kKTsK KwlpZiAoIWZvdW5kKQorCXsKKwkJdmFyID0gR2V0VmFyaWFibGUodmFyaWQsIGZhbHNlKTsKKwkJ Z2V0X3R5cGxlbmJ5dmFsKHZhci0+dHlwaWQsICZzdmFyLT50eXBsZW4sICZzdmFyLT50eXBieXZh bCk7CisKKwkJc3Zhci0+dmFyaWQgPSB2YXJpZDsKKwkJc3Zhci0+dHlwaWQgPSB2YXItPnR5cGlk OworCQlzdmFyLT50eXBtb2QgPSB2YXItPnR5cG1vZDsKKwkJc3Zhci0+aXNudWxsID0gdHJ1ZTsK KwkJc3Zhci0+ZnJlZXZhbCA9IGZhbHNlOworCQlzdmFyLT52YWx1ZSA9IChEYXR1bSkgMDsKKwkJ c3Zhci0+aXNfcm93dHlwZSA9IHR5cGVfaXNfcm93dHlwZSh2YXItPnR5cGlkKTsKKworCQkvKiB3 aGVuIHdlIGRvbid0IG5lZWQgY2FsY3VsYXRlIGRlZmV4cHIsIHZhbHVlIGlzIHZhbGlkIGFscmVh ZHkgKi8KKwkJc3Zhci0+aXNfdmFsaWQgPSB2YXItPmRlZmV4cHIgPyBmYWxzZSA6IHRydWU7CisJ fQorCWVsc2UgaWYgKCFzdmFyLT5pc192YWxpZCkKKwl7CisJCS8qIHdlIG5lZWQgdmFyIHRvIHJl Y2FsY3VsYXRlIGRlZmV4cHIgKi8KKwkJdmFyID0gR2V0VmFyaWFibGUodmFyaWQsIGZhbHNlKTsK Kwl9CisJZWxzZQorCQkvKiB3ZSBkb24ndCBuZWVkIHRvIGdvIHRvIHN5cyBjYWNoZSAqLworCQl2 YXIgPSBOVUxMOworCisJLyoKKwkgKiBJbml0aWFsaXplIHZhcmlhYmxlIHdoZW4gaXQgaXMgbmVj ZXNzYXJ5LiBJdCBpcyBmcmVzaAorCSAqIG9yIGxhc3QgaW5pdGlhbGl6YXRpb24gd2FzIG5vdCBz dWNjZXNzZnVsbC4KKwkgKi8KKwlpZiAodmFyICE9IE5VTEwgJiYgdmFyLT5kZWZleHByICYmICFz dmFyLT5pc192YWxpZCkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dCA9IE5VTEw7CisK KwkJRGF0dW0JICAgdmFsdWUgPSAoRGF0dW0pIDA7CisJCWJvb2wJICAgbnVsbDsKKwkJRVN0YXRl CSAgICplc3RhdGUgPSBOVUxMOworCQlFeHByCSAgICpkZWZleHByOworCQlFeHByU3RhdGUgICpk ZWZleHByczsKKworCQkvKiBQcmVwYXJlIGRlZmF1bHQgZXhwciAqLworCQllc3RhdGUgPSBDcmVh dGVFeGVjdXRvclN0YXRlKCk7CisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8o ZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCisJCWRlZmV4cHIgPSBleHByZXNzaW9uX3BsYW5uZXIo KEV4cHIgKikgdmFyLT5kZWZleHByKTsKKwkJZGVmZXhwcnMgPSBFeGVjSW5pdEV4cHIoZGVmZXhw ciwgTlVMTCk7CisJCXZhbHVlID0gRXhlY0V2YWxFeHByU3dpdGNoQ29udGV4dChkZWZleHBycywg R2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpLCAmbnVsbCk7CisKKwkJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dCk7CisKKwkJaWYgKCFudWxsKQor CQl7CisJCQlzdmFyLT52YWx1ZSA9IGRhdHVtQ29weSh2YWx1ZSwgc3Zhci0+dHlwYnl2YWwsIHN2 YXItPnR5cGxlbik7CisJCQlzdmFyLT5mcmVldmFsID0gc3Zhci0+dmFsdWUgIT0gdmFsdWU7CisJ CQlzdmFyLT5pc251bGwgPSBmYWxzZTsKKwkJCXN2YXItPmlzX3ZhbGlkID0gdHJ1ZTsKKwkJfQor CQllbHNlCisJCXsKKwkJCXN2YXItPmlzbnVsbCA9IHRydWU7CisJCQlzdmFyLT5pc192YWxpZCA9 IHRydWU7CisJCX0KKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwkJ RnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKwl9CisKKwlpZiAoIXN2YXItPmlzX3ZhbGlkKQor CQllbG9nKEVSUk9SLCAidGhlIGNvbnRlbnQgb2YgdmFyaWFibGUgaXMgbm90IHZhbGlkIik7CisK KwlyZXR1cm4gc3ZhcjsKK30KKworLyoKKyAqIFJldHVybnMgY29udGVudCBvZiB2YXJpYWJsZS4g V2UgZXhwZXh0IHNlY3VyZWQgYWNjZXNzIG5vdy4KKyAqIFNlY3VyZSBjaGVjayBzaG91bGQgYmUg ZG9uZSBiZWZvcmUuCisgKi8KK0RhdHVtCitHZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIGJv b2wgKmlzTnVsbCwgT2lkIGV4cGVjdGVkX3R5cGlkLCBib29sIGNvcHkpCit7CisJU2NoZW1hVmFy aWFibGUJc3ZhcjsKKwlEYXR1bQkJCXZhbHVlOworCWJvb2wJCQlpc251bGw7CisKKwlzdmFyID0g UHJlcGFyZVNjaGVtYVZhcmlhYmxlRm9yUmVhZGluZyh2YXJpZCk7CisJQXNzZXJ0KHN2YXIgIT0g TlVMTCk7CisKKwlpZiAoZXhwZWN0ZWRfdHlwaWQgIT0gc3Zhci0+dHlwaWQpCisJCWVsb2coRVJS T1IsICJ0eXBlIG9mIHZhcmlhYmxlIFwiJXNcIiBpcyBkaWZmZXJlbnQgdGhhbiBleHBlY3RlZCIs CisJCQkJICAgc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKHZhcmlkKSk7CisKKwl2YWx1ZSA9IHN2 YXItPnZhbHVlOworCWlzbnVsbCA9IHN2YXItPmlzbnVsbDsKKworCSppc051bGwgPSBpc251bGw7 CisKKwlpZiAoIWlzbnVsbCAmJiBjb3B5KQorCQlyZXR1cm4gZGF0dW1Db3B5KHZhbHVlLCBzdmFy LT50eXBieXZhbCwgc3Zhci0+dHlwbGVuKTsKKworCXJldHVybiB2YWx1ZTsKK30KKworLyoKKyAq IFdyaXRlIHZhbHVlIHRvIHZhcmlhYmxlLiBXZSBleHBlY3Qgc2VjdXJlZCBhY2Nlc3MgaW4gdGhp cyBtb21lbnQuCisgKiBJbiB0aGlzIHRpbWUsIHdlIHJlY2hlY2sgc3lzY2hhY2hlIGFib3V0IHVz ZWQgdHlwZS4KKyAqLwordm9pZAorU2V0U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBEYXR1bSB2 YWx1ZSwgYm9vbCBpc051bGwsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kKQoreworCU1lbW9yeUNv bnRleHQgb2xkY29udGV4dCA9IE5VTEw7CisKKwlTY2hlbWFWYXJpYWJsZSBzdmFyOworCU9pZAkJ CXZhcl90eXBpZDsKKwlpbnQzMgkJdmFyX3R5cG1vZDsKKwlib29sCQlmb3VuZDsKKworCWlmIChz Y2hlbWF2YXJoYXNodGFiID09IE5VTEwpCisJCWNyZWF0ZV9zY2hlbWF2YXJfaGFzaHRhYmxlKCk7 CisKKwlzdmFyID0gKFNjaGVtYVZhcmlhYmxlKSBoYXNoX3NlYXJjaChzY2hlbWF2YXJoYXNodGFi LCAmdmFyaWQsCisJCQkJCQkJCQkJCSAgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKworCWdldF9zY2hl bWFfdmFyaWFibGVfdHlwZV90eXBtb2QodmFyaWQsICZ2YXJfdHlwaWQsICZ2YXJfdHlwbW9kKTsK KworCS8qIGNoZWNrIHR5cGVzIGZpcnN0ICovCisJaWYgKHZhcl90eXBpZCAhPSB0eXBpZCkKKwkJ ZWxvZyhFUlJPUiwgInR5cGUgb2YgZXhwcmVzc2lvbiBpcyBkaWZmZXJlbnQgdGhhbiBzY2hlbWEg dmFyaWFibGUgdHlwZSIpOworCisJaWYgKGZvdW5kKQorCXsKKwkJLyogcmVsZWFzZSBjdXJyZW50 IGNvbnRlbnQgZmlyc3QgKi8KKwkJaWYgKHN2YXItPmZyZWV2YWwpCisJCXsKKwkJCXBmcmVlKERh dHVtR2V0UG9pbnRlcihzdmFyLT52YWx1ZSkpOworCQkJc3Zhci0+dmFsdWUgPSAoRGF0dW0pIDA7 CisJCQlzdmFyLT5pc251bGwgPSB0cnVlOworCQkJc3Zhci0+ZnJlZXZhbCA9IGZhbHNlOworCQl9 CisJfQorCisJZ2V0X3R5cGxlbmJ5dmFsKHR5cGlkLCAmc3Zhci0+dHlwbGVuLCAmc3Zhci0+dHlw Ynl2YWwpOworCisJc3Zhci0+dmFyaWQgPSB2YXJpZDsKKwlzdmFyLT50eXBpZCA9IHR5cGlkOwor CXN2YXItPnR5cG1vZCA9IHR5cG1vZDsKKworCXN2YXItPmlzbnVsbCA9IHRydWU7CisJc3Zhci0+ ZnJlZXZhbCA9IGZhbHNlOworCXN2YXItPnZhbHVlID0gKERhdHVtKSAwOworCisJc3Zhci0+aXNf cm93dHlwZSA9IHR5cGVfaXNfcm93dHlwZSh0eXBpZCk7CisJc3Zhci0+aXNfdmFsaWQgPSBmYWxz ZTsKKworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU2NoZW1hVmFyaWFibGVN ZW1vcnlDb250ZXh0KTsKKworCWlmICghaXNOdWxsKQorCXsKKwkJc3Zhci0+dmFsdWUgPSBkYXR1 bUNvcHkodmFsdWUsIHN2YXItPnR5cGJ5dmFsLCBzdmFyLT50eXBsZW4pOworCQlzdmFyLT5mcmVl dmFsID0gc3Zhci0+dmFsdWUgIT0gdmFsdWU7CisJCXN2YXItPmlzbnVsbCA9IGZhbHNlOworCQlz dmFyLT5pc192YWxpZCA9IHRydWU7CisJfQorCWVsc2UKKwl7CisJCXN2YXItPmlzbnVsbCA9IHRy dWU7CisJCXN2YXItPmlzX3ZhbGlkID0gdHJ1ZTsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY29udGV4dCk7Cit9CisKK3ZvaWQKK2RvTGV0U3RtdChQbGFubmVkU3RtdCAqcHN0bXQs CisJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCisJCSAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnYsCisJCSAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcpCit7CisJUXVlcnlEZXNjICpxdWVyeURl c2M7CisJRGVzdFJlY2VpdmVyICpkZXN0OworCisJUHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2 ZVNuYXBzaG90KCkpOworCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CisKKwkvKiBD cmVhdGUgZGVzdCByZWNlaXZlciBmb3IgTEVUICovCisJZGVzdCA9IENyZWF0ZURlc3RSZWNlaXZl cihEZXN0VmFyaWFibGUpOworCisJU2V0VmFyaWFibGVEZXN0UmVjZWl2ZXJQYXJhbXMoZGVzdCwg cHN0bXQtPnJlc3VsdFZhcmlhYmxlKTsKKworCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyByZXF1ZXN0 aW5nIG5vIG91dHB1dCAqLworCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwgcXVl cnlTdHJpbmcsCisJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCisJCQkJCQkJCQkJCUlu dmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CisK KwlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7CisJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgMkwsIHRydWUpOworCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVz Yyk7CisJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKworCUZyZWVRdWVyeURlc2MocXVlcnlEZXNj KTsKKworCVBvcEFjdGl2ZVNuYXBzaG90KCk7Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK aW5kZXggY2VmNjYzMjg0MC4uMzBlNmMxMjkwYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK QEAgLTk2NTYsNiArOTY1Niw3IEBAIEFURXhlY0FsdGVyQ29sdW1uVHlwZShBbHRlcmVkVGFibGVJ bmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCWNhc2UgT0NMQVNTX1BVQkxJQ0FUSU9OX1JFTDoK IAkJCWNhc2UgT0NMQVNTX1NVQlNDUklQVElPTjoKIAkJCWNhc2UgT0NMQVNTX1RSQU5TRk9STToK KwkJCWNhc2UgT0NMQVNTX1ZBUklBQkxFOgogCiAJCQkJLyoKIAkJCQkgKiBXZSBkb24ndCBleHBl Y3QgYW55IG9mIHRoZXNlIHNvcnRzIG9mIG9iamVjdHMgdG8gZGVwZW5kIG9uCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01h a2VmaWxlCmluZGV4IGNjMDk4OTVmYTUuLmVlOGZmN2RhOWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxl CkBAIC0yOSw2ICsyOSw2IEBAIE9CSlMgPSBleGVjQW1pLm8gZXhlY0N1cnJlbnQubyBleGVjRXhw ci5vIGV4ZWNFeHBySW50ZXJwLm8gXAogICAgICAgIG5vZGVDdGVzY2FuLm8gbm9kZU5hbWVkdHVw bGVzdG9yZXNjYW4ubyBub2RlV29ya3RhYmxlc2Nhbi5vIFwKICAgICAgICBub2RlR3JvdXAubyBu b2RlU3VicGxhbi5vIG5vZGVTdWJxdWVyeXNjYW4ubyBub2RlVGlkc2Nhbi5vIFwKICAgICAgICBu b2RlRm9yZWlnbnNjYW4ubyBub2RlV2luZG93QWdnLm8gdHN0b3JlUmVjZWl2ZXIubyB0cXVldWUu byBzcGkubyBcCi0gICAgICAgbm9kZVRhYmxlRnVuY3NjYW4ubworICAgICAgIG5vZGVUYWJsZUZ1 bmNzY2FuLm8gc3ZhcmlhYmxlUmVjZWl2ZXIubwogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3Jj L2JhY2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCBlMjg0ZmQ3MWQ3 Li5iYjliZjUzZTFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTMzLDYgKzMzLDcgQEAK ICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nl c3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9z Y2hlbWF2YXJpYWJsZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC03Mjcs NiArNzI4LDcgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUs CiAJCQl7CiAJCQkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5vZGU7CiAJCQkJUGFyYW1M aXN0SW5mbyBwYXJhbXM7CisJCQkJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAogCQkJCXN3aXRjaCAo cGFyYW0tPnBhcmFta2luZCkKIAkJCQl7CkBAIC03MzYsNiArNzM4LDI4IEBAIEV4ZWNJbml0RXhw clJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQkJc2NyYXRjaC5kLnBhcmFt LnBhcmFtdHlwZSA9IHBhcmFtLT5wYXJhbXR5cGU7CiAJCQkJCQlFeHByRXZhbFB1c2hTdGVwKHN0 YXRlLCAmc2NyYXRjaCk7CiAJCQkJCQlicmVhazsKKworCQkJCQljYXNlIFBBUkFNX1ZBUklBQkxF OgorCisJCQkJCQkvKiBDaGVjayBwZXJtaXNzaW9uIHRvIHJlYWQgc2NoZW1hIHZhcmlhYmxlICov CisJCQkJCQlhY2xyZXN1bHQgPSBwZ192YXJpYWJsZV9hY2xjaGVjayhwYXJhbS0+cGFyYW1pZCwg R2V0VXNlcklkKCksIEFDTF9SRUFEKTsKKwkJCQkJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tf T0spCisJCQkJCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUsCisJ CQkJCQkJCQkJCXNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZShwYXJhbS0+cGFyYW1pZCkpOworCisJ CQkJCQkvKgorCQkJCQkJICogVXNpbmcgdmFyb2lkIGFzIHBhcmFtaWQgaXMgbm90IHByYWN0aWNh bC4gQmV0dGVyIHRvIHJlY291bnQKKwkJCQkJCSAqIHVzZWQgc2NoZW1hIHZhcmlhYmxlcyBmcm9t IHplcm8sIGFuZCBsYXRlciB0byB1c2UgcGFyYW1pZCBsaWtlCisJCQkJCQkgKiBvZmZzZXQuCisJ CQkJCQkgKi8KKwkJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9QQVJBTV9WQVJJQUJMRTsKKwkJ CQkJCXNjcmF0Y2guZC52cGFyYW0ucGFyYW1pZCA9IHN0YXRlLT5udmFyaWFibGVzKys7CisJCQkJ CQlzY3JhdGNoLmQudnBhcmFtLnZhcm9pZCA9IHBhcmFtLT5wYXJhbWlkOworCQkJCQkJc2NyYXRj aC5kLnZwYXJhbS5wYXJhbXR5cGUgPSBwYXJhbS0+cGFyYW10eXBlOworCisJCQkJCQlFeHByRXZh bFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJCQlicmVhazsKKwogCQkJCQljYXNlIFBB UkFNX0VYVEVSTjoKIAogCQkJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5j CmluZGV4IDlkNmUyNWFhZTUuLjQ0NjJkY2M5NTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHJJbnRlcnAuYwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90dXB0b2FzdGVy LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2Vx dWVuY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIgogI2luY2x1ZGUg ImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIK ICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC0zNTEsNiArMzUyLDcgQEAgRXhlY0ludGVycEV4cHIo RXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJ CSYmQ0FTRV9FRU9QX1BBUkFNX0VYRUMsCiAJCSYmQ0FTRV9FRU9QX1BBUkFNX0VYVEVSTiwKIAkJ JiZDQVNFX0VFT1BfUEFSQU1fQ0FMTEJBQ0ssCisJCSYmQ0FTRV9FRU9QX1BBUkFNX1ZBUklBQkxF LAogCQkmJkNBU0VfRUVPUF9DQVNFX1RFU1RWQUwsCiAJCSYmQ0FTRV9FRU9QX01BS0VfUkVBRE9O TFksCiAJCSYmQ0FTRV9FRU9QX0lPQ09FUkNFLApAQCAtMTAwNyw2ICsxMDA5LDEzIEBAIEV4ZWNJ bnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAq aXNudWxsKQogCQkJRUVPX05FWFQoKTsKIAkJfQogCisJCUVFT19DQVNFKEVFT1BfUEFSQU1fVkFS SUFCTEUpCisJCXsKKwkJCS8qIGl1dCBvZiBsaW5lIGltcGxlbWVudGF0aW9uOyB0b28gbGFyZ2Ug Ki8KKwkJCUV4ZWNFdmFsUGFyYW1WYXJpYWJsZShzdGF0ZSwgb3AsIGVjb250ZXh0KTsKKwkJCUVF T19ORVhUKCk7CisJCX0KKwogCQlFRU9fQ0FTRShFRU9QX0NBU0VfVEVTVFZBTCkKIAkJewogCQkJ LyoKQEAgLTIzMjMsNiArMjMzMiw3OSBAQCBFeGVjRXZhbFBhcmFtRXh0ZXJuKEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIAkJCSBlcnJt c2coIm5vIHZhbHVlIGZvdW5kIGZvciBwYXJhbWV0ZXIgJWQiLCBwYXJhbUlkKSkpOwogfQogCisv KgorICogRXZhbHVhdGUgYSBQQVJBTV9WQVJJQUJMRSBwYXJhbWV0ZXIKKyAqLwordm9pZAorRXhl Y0V2YWxQYXJhbVZhcmlhYmxlKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4 cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwlFU3RhdGUgKmVzdGF0ZSA9IGVjb250ZXh0LT5lY3h0 X2VzdGF0ZTsKKworCS8qCisJICogV2Ugc2hvdWxkIHRvIGVuc3VyZSBzdGFibGUgYmVoYXZlIG9m IHNjaGVtYSB2YXJpYWJsZXMgaW4gcXVlcmllcy4gSXQgaXMKKwkgKiBpbXBvcnRhbnQsIGJlY2F1 c2Ugb3B0aW1pemVyIHVzZXMgdGhlc2UgdmFsdWVzIGFzIHN0YWJsZSwgbGlrZSBleHRlcm4KKwkg KiBwYXJhbWV0ZXJzLCB3aGF0IGlzIG5pY2UsIGJlY2F1c2UgcXVlcmllcyBhcmUgb3B0aW1pemVk IHdlbGwuIFNvLCBkb24ndAorCSAqIHRyeSB0byBhY2Nlc3MgdmFyaWFibGVzIGRpcmVjdGx5LCB1 c2UgdGhpcyBxdWVyeSB2YXJpYWJsZSBjYWNoZS4KKwkgKiBUaGlzIGNhY2hlIGNhbm5vdCBiZSB1 c2VkIHdoZW4gRVN0YXRlIGlzIHNoYXJlZCAtIFBMcGdTUUwgZGlkIGl0IGZvcgorCSAqIHNpbXBs ZSBleHByZXNzaW9ucy4KKwkgKi8KKwlpZiAoZXN0YXRlICYmICFlc3RhdGUtPmVzX3NoYXJlZCkK Kwl7CisJCWludAkJcGFyYW1pZCA9IG9wLT5kLnZwYXJhbS5wYXJhbWlkOworCisJCWlmIChlc3Rh dGUtPmVzX252YXJpYWJsZXMgPT0gMCkKKwkJeworCQkJTWVtb3J5Q29udGV4dAlvbGRfY3h0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKGVjb250ZXh0LT5lY3h0X3Blcl9xdWVyeV9tZW1vcnkpOwor CisJCQkvKiBpbml0aWFsaXplIGVzdGF0ZSBzY2hlbWEgdmFyaWFibGUgY2FjaGUgKi8KKworCQkJ ZXN0YXRlLT5lc19udmFyaWFibGVzID0gc3RhdGUtPm52YXJpYWJsZXM7CisJCQllc3RhdGUtPmVz X3Zhcm51bGxzID0gcGFsbG9jKHNpemVvZihib29sKSAqIHN0YXRlLT5udmFyaWFibGVzKTsKKwkJ CWVzdGF0ZS0+ZXNfdmFydHlwZXMgPSBwYWxsb2MwKHNpemVvZihPaWQpICogc3RhdGUtPm52YXJp YWJsZXMpOworCQkJZXN0YXRlLT5lc192YXJ2YWx1ZXMgPSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAq IHN0YXRlLT5udmFyaWFibGVzKTsKKworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZF9jeHQp OworCQl9CisKKwkJQXNzZXJ0KGVzdGF0ZS0+ZXNfbnZhcmlhYmxlcyA9PSBzdGF0ZS0+bnZhcmlh Ymxlcyk7CisJCUFzc2VydChlc3RhdGUtPmVzX252YXJpYWJsZXMgPiBwYXJhbWlkKTsKKworCQlp ZiAoIU9pZElzVmFsaWQoZXN0YXRlLT5lc192YXJ0eXBlc1twYXJhbWlkXSkpCisJCXsKKwkJCU1l bW9yeUNvbnRleHQJb2xkX2N4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlY29udGV4dC0+ZWN4 dF9wZXJfcXVlcnlfbWVtb3J5KTsKKworCQkJLyogY29weSB2YXJpYWJsZSB0byBlc3RhdGUgc2No ZW1hIHZhcmlhYmxlIGNhY2hlICovCisJCQllc3RhdGUtPmVzX3ZhcnZhbHVlc1twYXJhbWlkXSA9 CisJCQkJCQkJCQkJR2V0U2NoZW1hVmFyaWFibGUob3AtPmQudnBhcmFtLnZhcm9pZCwKKwkJCQkJ CQkJCQkJCQkJICAmZXN0YXRlLT5lc192YXJudWxsc1twYXJhbWlkXSwKKwkJCQkJCQkJCQkJCQkJ ICBvcC0+ZC52cGFyYW0ucGFyYW10eXBlLAorCQkJCQkJCQkJCQkJCQkgIHRydWUpOworCQkJZXN0 YXRlLT5lc192YXJ0eXBlc1twYXJhbWlkXSA9IG9wLT5kLnZwYXJhbS5wYXJhbXR5cGU7CisKKwkJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRfY3h0KTsKKwkJfQorCisJCUFzc2VydChPaWRJc1Zh bGlkKGVzdGF0ZS0+ZXNfdmFydHlwZXNbcGFyYW1pZF0pKTsKKworCQkqb3AtPnJlc3ZhbHVlID0g ZXN0YXRlLT5lc192YXJ2YWx1ZXNbcGFyYW1pZF07CisJCSpvcC0+cmVzbnVsbCA9IGVzdGF0ZS0+ ZXNfdmFybnVsbHNbcGFyYW1pZF07CisJfQorCWVsc2UKKwl7CisJCURhdHVtCQlkOworCQlib29s CQlpc251bGw7CisKKwkJLyogcmVhZCBjb250ZW50IG9mIHZhcmlhYmxlIGRpcmVjdGx5ICovCisJ CWQgPSBHZXRTY2hlbWFWYXJpYWJsZShvcC0+ZC52cGFyYW0udmFyb2lkLAorCQkJCQkJCSAgJmlz bnVsbCwKKwkJCQkJCQkgIG9wLT5kLnZwYXJhbS5wYXJhbXR5cGUsCisJCQkJCQkJICBmYWxzZSk7 CisKKwkJKm9wLT5yZXN2YWx1ZSA9IGQ7CisJCSpvcC0+cmVzbnVsbCA9IGlzbnVsbDsKKwl9Cit9 CisKIC8qCiAgKiBFdmFsdWF0ZSBhIFNRTFZhbHVlRnVuY3Rpb24gZXhwcmVzc2lvbi4KICAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYjc5N2QwNjRiNy4uYTQ5ZGViODEwYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCkBAIC00Myw5ICs0MywxMSBAQAogI2luY2x1ZGUgImFjY2Vzcy94 YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL21hdHZpZXcuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2RlYnVnLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivc3Zh cmlhYmxlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgogI2luY2x1ZGUg Im1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC0yMDQsMTIgKzIwNiwx OCBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKQogCSAqLwogCWVzdGF0ZS0+ZXNfcXVlcnlFbnYgPSBxdWVyeURlc2MtPnF1ZXJ5RW52Owog CisJLyoKKwkgKiBSZXN1bHQgY2FuIGJlIHN0b3JlZCBpbiBzY2hlbWEgdmFyaWFibGUuCisJICov CisJZXN0YXRlLT5lc19yZXN1bHRfdmFyaWFibGUgPSBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5y ZXN1bHRWYXJpYWJsZTsKKwogCS8qCiAJICogSWYgbm9uLXJlYWQtb25seSBxdWVyeSwgc2V0IHRo ZSBjb21tYW5kIElEIHRvIG1hcmsgb3V0cHV0IHR1cGxlcyB3aXRoCiAJICovCiAJc3dpdGNoIChx dWVyeURlc2MtPm9wZXJhdGlvbikKIAl7CiAJCWNhc2UgQ01EX1NFTEVDVDoKKwkJY2FzZSBDTURf UExBTl9VVElMSVRZOgogCiAJCQkvKgogCQkJICogU0VMRUNUIEZPUiBbS0VZXSBVUERBVEUvU0hB UkUgYW5kIG1vZGlmeWluZyBDVEVzIG5lZWQgdG8gbWFyawpAQCAtMzQ1LDYgKzM1Myw3IEBAIHN0 YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCWVzdGF0ZS0+ZXNfbGFz dG9pZCA9IEludmFsaWRPaWQ7CiAKIAlzZW5kVHVwbGVzID0gKG9wZXJhdGlvbiA9PSBDTURfU0VM RUNUIHx8CisJCQkJICBPaWRJc1ZhbGlkKGVzdGF0ZS0+ZXNfcmVzdWx0X3ZhcmlhYmxlKSB8fAog CQkJCSAgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+aGFzUmV0dXJuaW5nKTsKIAogCWlmIChzZW5k VHVwbGVzKQpAQCAtOTI0LDYgKzkzMywxNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncykKIAkJZXN0YXRlLT5lc19udW1fcm9vdF9yZXN1bHRfcmVsYXRpb25zID0g MDsKIAl9CiAKKwlpZiAoT2lkSXNWYWxpZChlc3RhdGUtPmVzX3Jlc3VsdF92YXJpYWJsZSkpCisJ eworCQlBY2xSZXN1bHQJYWNscmVzdWx0OworCQlPaWQJCQl2YXJpZCA9IGVzdGF0ZS0+ZXNfcmVz dWx0X3ZhcmlhYmxlOworCisJCS8qIEVuc3VyZSB0aGlzIHZhcmlhYmxlIGlzIHdyaXRlYWJsZSAq LworCQlhY2xyZXN1bHQgPSBwZ192YXJpYWJsZV9hY2xjaGVjayh2YXJpZCwgR2V0VXNlcklkKCks IEFDTF9XUklURSk7CisJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQlhY2xjaGVj a19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwgc2NoZW1hX3ZhcmlhYmxlX2dldF9u YW1lKHZhcmlkKSk7CisJfQorCiAJLyoKIAkgKiBTaW1pbGFybHksIHdlIGhhdmUgdG8gbG9jayBy ZWxhdGlvbnMgc2VsZWN0ZWQgRk9SIFtLRVldIFVQREFURS9TSEFSRQogCSAqIGJlZm9yZSB3ZSBp bml0aWFsaXplIHRoZSBwbGFuIHRyZWUsIGVsc2Ugd2UnZCBiZSByaXNraW5nIGxvY2sgdXBncmFk ZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDViM2VhZWM4MGIuLmVjYTc4MDU1MTcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xMDIsNiArMTAyLDcgQEAgQ3JlYXRlRXhl Y3V0b3JTdGF0ZSh2b2lkKQogCS8qCiAJICogSW5pdGlhbGl6ZSBhbGwgZmllbGRzIG9mIHRoZSBF eGVjdXRvciBTdGF0ZSBzdHJ1Y3R1cmUKIAkgKi8KKwllc3RhdGUtPmVzX3NoYXJlZCA9IGZhbHNl OwogCWVzdGF0ZS0+ZXNfZGlyZWN0aW9uID0gRm9yd2FyZFNjYW5EaXJlY3Rpb247CiAJZXN0YXRl LT5lc19zbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsJLyogY2FsbGVyIG11c3QgaW5pdGlhbGl6 ZSB0aGlzICovCiAJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90ID0gSW52YWxpZFNuYXBz aG90OwkvKiBubyBjcm9zc2NoZWNrICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9zdmFyaWFibGVSZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVj ZWl2ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wZWFjNGI1ZDBj Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2 ZXIuYwpAQCAtMCwwICsxLDE0NSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogc3Zhcmlh YmxlUmVjZWl2ZXIuYworICoJICBBbiBpbXBsZW1lbnRhdGlvbiBvZiBEZXN0UmVjZWl2ZXIgdGhh dCBzdG9yZXMgdGhlIHJlc3VsdCB2YWx1ZSBpbgorICoJICBhIHNjaGVtYSB2YXJpYWJsZS4KKyAq CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50 cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04K KyAqCSAgc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAi YWNjZXNzL3R1cHRvYXN0ZXIuaCIKKyNpbmNsdWRlICJleGVjdXRvci9zdmFyaWFibGVSZWNlaXZl ci5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCisKK3R5cGVkZWYgc3Ry dWN0Cit7CisJRGVzdFJlY2VpdmVyIHB1YjsKKwlPaWQJCXZhcmlkOworCU9pZAkJdHlwaWQ7CisJ aW50MzIJdHlwbW9kOworCWludAkJdHlwbGVuOworCWludAkJc2xvdF9vZmZzZXQ7CisJaW50CQly b3dzOworfSBzdmFyaWFibGVTdGF0ZTsKKworCisvKgorICogUHJlcGFyZSB0byByZWNlaXZlIHR1 cGxlcyBmcm9tIGV4ZWN1dG9yLgorICovCitzdGF0aWMgdm9pZAorc3ZhcmlhYmxlU3RhcnR1cFJl Y2VpdmVyKERlc3RSZWNlaXZlciAqc2VsZiwgaW50IG9wZXJhdGlvbiwgVHVwbGVEZXNjIHR5cGVp bmZvKQoreworCXN2YXJpYWJsZVN0YXRlICpteVN0YXRlID0gKHN2YXJpYWJsZVN0YXRlICopIHNl bGY7CisJaW50CQkJbmF0dHMgPSB0eXBlaW5mby0+bmF0dHM7CisJaW50CQkJb3V0Y29scyA9IDA7 CisJaW50CQkJaTsKKworCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQorCXsKKwkJRm9ybV9w Z19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodHlwZWluZm8sIGkpOworCisJCWlmIChh dHRyLT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQlpZiAoKytvdXRjb2xzID4gMSkK KwkJCWVsb2coRVJST1IsICJzdmFyaWFibGUgRGVzdFJlY2VpdmVyIGNhbiB0YWtlIG9ubHkgb25l IGF0dHJpYnV0ZSIpOworCisJCW15U3RhdGUtPnR5cGlkID0gYXR0ci0+YXR0dHlwaWQ7CisJCW15 U3RhdGUtPnR5cG1vZCA9IGF0dHItPmF0dHR5cG1vZDsKKwkJbXlTdGF0ZS0+dHlwbGVuID0gYXR0 ci0+YXR0bGVuOworCQlteVN0YXRlLT5zbG90X29mZnNldCA9IGk7CisJfQorCisJbXlTdGF0ZS0+ cm93cyA9IDA7Cit9CisKKy8qCisgKiBSZWNlaXZlIGEgdHVwbGUgZnJvbSB0aGUgZXhlY3V0b3Ig YW5kIHN0b3JlIGl0IGluIHNjaGVtYSB2YXJpYWJsZS4KKyAqLworc3RhdGljIGJvb2wKK3N2YXJp YWJsZVJlY2VpdmVTbG90KFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNlbGYp Cit7CisJc3ZhcmlhYmxlU3RhdGUgKm15U3RhdGUgPSAoc3ZhcmlhYmxlU3RhdGUgKikgc2VsZjsK KwlEYXR1bQkJdmFsdWU7CisJYm9vbAkJaXNudWxsOworCWJvb2wJCWZyZWV2YWwgPSBmYWxzZTsK KworCS8qIE1ha2Ugc3VyZSB0aGUgdHVwbGUgaXMgZnVsbHkgZGVjb25zdHJ1Y3RlZCAqLworCXNs b3RfZ2V0YWxsYXR0cnMoc2xvdCk7CisKKwl2YWx1ZSA9IHNsb3QtPnR0c192YWx1ZXNbbXlTdGF0 ZS0+c2xvdF9vZmZzZXRdOworCWlzbnVsbCA9IHNsb3QtPnR0c19pc251bGxbbXlTdGF0ZS0+c2xv dF9vZmZzZXRdOworCisJaWYgKG15U3RhdGUtPnR5cGxlbiA9PSAtMSAmJiAhaXNudWxsICYmIFZB UkFUVF9JU19FWFRFUk5BTChEYXR1bUdldFBvaW50ZXIodmFsdWUpKSkKKwl7CisJCXZhbHVlID0g UG9pbnRlckdldERhdHVtKGhlYXBfdHVwbGVfZmV0Y2hfYXR0cigoc3RydWN0IHZhcmxlbmEgKikK KwkJCQkJCQkJCQkJCQlEYXR1bUdldFBvaW50ZXIodmFsdWUpKSk7CisJCWZyZWV2YWwgPSB0cnVl OworCX0KKworCVNldFNjaGVtYVZhcmlhYmxlKG15U3RhdGUtPnZhcmlkLCB2YWx1ZSwgaXNudWxs LCBteVN0YXRlLT50eXBpZCwgbXlTdGF0ZS0+dHlwbW9kKTsKKworCWlmIChmcmVldmFsKQorCQlw ZnJlZShEYXR1bUdldFBvaW50ZXIodmFsdWUpKTsKKworCXJldHVybiB0cnVlOworfQorCisvKgor ICogQ2xlYW4gdXAgYXQgZW5kIG9mIGFuIGV4ZWN1dG9yIHJ1bgorICovCitzdGF0aWMgdm9pZAor c3ZhcmlhYmxlU2h1dGRvd25SZWNlaXZlcihEZXN0UmVjZWl2ZXIgKnNlbGYpCit7CisJLyogRG8g bm90aGluZyAqLworfQorCisvKgorICogRGVzdHJveSByZWNlaXZlciB3aGVuIGRvbmUgd2l0aCBp dAorICovCitzdGF0aWMgdm9pZAorc3ZhcmlhYmxlRGVzdHJveVJlY2VpdmVyKERlc3RSZWNlaXZl ciAqc2VsZikKK3sKKwlwZnJlZShzZWxmKTsKK30KKworLyoKKyAqIEluaXRpYWxseSBjcmVhdGUg YSBEZXN0UmVjZWl2ZXIgb2JqZWN0LgorICovCitEZXN0UmVjZWl2ZXIgKgorQ3JlYXRlVmFyaWFi bGVEZXN0UmVjZWl2ZXIodm9pZCkKK3sKKwlzdmFyaWFibGVTdGF0ZSAqc2VsZiA9IChzdmFyaWFi bGVTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihzdmFyaWFibGVTdGF0ZSkpOworCisJc2VsZi0+cHVi LnJlY2VpdmVTbG90ID0gc3ZhcmlhYmxlUmVjZWl2ZVNsb3Q7CisJc2VsZi0+cHViLnJTdGFydHVw ID0gc3ZhcmlhYmxlU3RhcnR1cFJlY2VpdmVyOworCXNlbGYtPnB1Yi5yU2h1dGRvd24gPSBzdmFy aWFibGVTaHV0ZG93blJlY2VpdmVyOworCXNlbGYtPnB1Yi5yRGVzdHJveSA9IHN2YXJpYWJsZURl c3Ryb3lSZWNlaXZlcjsKKwlzZWxmLT5wdWIubXlkZXN0ID0gRGVzdFZhcmlhYmxlOworCisJLyog cHJpdmF0ZSBmaWVsZHMgd2lsbCBiZSBzZXQgYnkgU2V0VmFyaWFibGVEZXN0UmVjZWl2ZXJQYXJh bXMgKi8KKworCXJldHVybiAoRGVzdFJlY2VpdmVyICopIHNlbGY7Cit9CisKKy8qCisgKiBTZXQg cGFyYW1ldGVycyBmb3IgYSBWYXJpYWJsZURlc3RSZWNlaXZlcgorICovCit2b2lkCitTZXRWYXJp YWJsZURlc3RSZWNlaXZlclBhcmFtcyhEZXN0UmVjZWl2ZXIgKnNlbGYsIE9pZCB2YXJpZCkKK3sK KwlzdmFyaWFibGVTdGF0ZSAqbXlTdGF0ZSA9IChzdmFyaWFibGVTdGF0ZSAqKSBzZWxmOworCisJ QXNzZXJ0KG15U3RhdGUtPnB1Yi5teWRlc3QgPT0gRGVzdFZhcmlhYmxlKTsKKwlBc3NlcnQoT2lk SXNWYWxpZCh2YXJpZCkpOworCisJbXlTdGF0ZS0+dmFyaWQgPSB2YXJpZDsKK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMKaW5kZXggN2M4MjIwY2Y2NS4uZmNhYTJkYjUxYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNz LmMKQEAgLTkzLDYgKzkzLDcgQEAgX2NvcHlQbGFubmVkU3RtdChjb25zdCBQbGFubmVkU3RtdCAq ZnJvbSkKIAlDT1BZX05PREVfRklFTEQocmVzdWx0UmVsYXRpb25zKTsKIAlDT1BZX05PREVfRklF TEQobm9ubGVhZlJlc3VsdFJlbGF0aW9ucyk7CiAJQ09QWV9OT0RFX0ZJRUxEKHJvb3RSZXN1bHRS ZWxhdGlvbnMpOworCUNPUFlfU0NBTEFSX0ZJRUxEKHJlc3VsdFZhcmlhYmxlKTsKIAlDT1BZX05P REVfRklFTEQoc3VicGxhbnMpOwogCUNPUFlfQklUTUFQU0VUX0ZJRUxEKHJld2luZFBsYW5JRHMp OwogCUNPUFlfTk9ERV9GSUVMRChyb3dNYXJrcyk7CkBAIC0zMDAwLDYgKzMwMDEsNyBAQCBfY29w eVF1ZXJ5KGNvbnN0IFF1ZXJ5ICpmcm9tKQogCUNPUFlfU0NBTEFSX0ZJRUxEKGNhblNldFRhZyk7 CiAJQ09QWV9OT0RFX0ZJRUxEKHV0aWxpdHlTdG10KTsKIAlDT1BZX1NDQUxBUl9GSUVMRChyZXN1 bHRSZWxhdGlvbik7CisJQ09QWV9TQ0FMQVJfRklFTEQocmVzdWx0VmFyaWFibGUpOwogCUNPUFlf U0NBTEFSX0ZJRUxEKGhhc0FnZ3MpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGhhc1dpbmRvd0Z1bmNz KTsKIAlDT1BZX1NDQUxBUl9GSUVMRChoYXNUYXJnZXRTUkZzKTsKQEAgLTMxMTgsNiArMzEyMCwx OCBAQCBfY29weVNlbGVjdFN0bXQoY29uc3QgU2VsZWN0U3RtdCAqZnJvbSkKIAlyZXR1cm4gbmV3 bm9kZTsKIH0KIAorc3RhdGljIExldFN0bXQgKgorX2NvcHlMZXRTdG10KGNvbnN0IExldFN0bXQg KmZyb20pCit7CisJTGV0U3RtdCAqbmV3bm9kZSA9IG1ha2VOb2RlKExldFN0bXQpOworCisJQ09Q WV9OT0RFX0ZJRUxEKHRhcmdldCk7CisJQ09QWV9OT0RFX0ZJRUxEKHNlbGVjdFN0bXQpOworCUNP UFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKIHN0 YXRpYyBTZXRPcGVyYXRpb25TdG10ICoKIF9jb3B5U2V0T3BlcmF0aW9uU3RtdChjb25zdCBTZXRP cGVyYXRpb25TdG10ICpmcm9tKQogewpAQCAtNTE2Niw2ICs1MTgwLDkgQEAgY29weU9iamVjdElt cGwoY29uc3Qgdm9pZCAqZnJvbSkKIAkJY2FzZSBUX1NlbGVjdFN0bXQ6CiAJCQlyZXR2YWwgPSBf Y29weVNlbGVjdFN0bXQoZnJvbSk7CiAJCQlicmVhazsKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQly ZXR2YWwgPSBfY29weUxldFN0bXQoZnJvbSk7CisJCQlicmVhazsKIAkJY2FzZSBUX1NldE9wZXJh dGlvblN0bXQ6CiAJCQlyZXR2YWwgPSBfY29weVNldE9wZXJhdGlvblN0bXQoZnJvbSk7CiAJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9i YWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCAzNzhmMmZhY2I4Li4zZWM0NzJlMTliIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC05NDksNiArOTQ5LDcgQEAgX2VxdWFsUXVlcnkoY29u c3QgUXVlcnkgKmEsIGNvbnN0IFF1ZXJ5ICpiKQogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGNhblNl dFRhZyk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHV0aWxpdHlTdG10KTsKIAlDT01QQVJFX1NDQUxB Ul9GSUVMRChyZXN1bHRSZWxhdGlvbik7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQocmVzdWx0VmFy aWFibGUpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGhhc0FnZ3MpOwogCUNPTVBBUkVfU0NBTEFS X0ZJRUxEKGhhc1dpbmRvd0Z1bmNzKTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChoYXNUYXJnZXRT UkZzKTsKQEAgLTEwNTcsNiArMTA1OCwxNiBAQCBfZXF1YWxTZWxlY3RTdG10KGNvbnN0IFNlbGVj dFN0bXQgKmEsIGNvbnN0IFNlbGVjdFN0bXQgKmIpCiAJcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRp YyBib29sCitfZXF1YWxMZXRTdG10KGNvbnN0IExldFN0bXQgKmEsIGNvbnN0IExldFN0bXQgKmIp Cit7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHRhcmdldCk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHNl bGVjdFN0bXQpOworCisJcmV0dXJuIHRydWU7Cit9CisKKwogc3RhdGljIGJvb2wKIF9lcXVhbFNl dE9wZXJhdGlvblN0bXQoY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqYSwgY29uc3QgU2V0T3BlcmF0 aW9uU3RtdCAqYikKIHsKQEAgLTMyMjUsNiArMzIzNiw5IEBAIGVxdWFsKGNvbnN0IHZvaWQgKmEs IGNvbnN0IHZvaWQgKmIpCiAJCWNhc2UgVF9TZWxlY3RTdG10OgogCQkJcmV0dmFsID0gX2VxdWFs U2VsZWN0U3RtdChhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRfTGV0U3RtdDoKKwkJCXJldHZh bCA9IF9lcXVhbExldFN0bXQoYSwgYik7CisJCQlicmVhazsKIAkJY2FzZSBUX1NldE9wZXJhdGlv blN0bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxTZXRPcGVyYXRpb25TdG10KGEsIGIpOwogCQkJYnJl YWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tl bmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCA2MjY5ZjQ3NGQyLi40NjQwNGZmOWFjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVz L291dGZ1bmNzLmMKQEAgLTI3OCw2ICsyNzgsNyBAQCBfb3V0UGxhbm5lZFN0bXQoU3RyaW5nSW5m byBzdHIsIGNvbnN0IFBsYW5uZWRTdG10ICpub2RlKQogCVdSSVRFX05PREVfRklFTEQocmVzdWx0 UmVsYXRpb25zKTsKIAlXUklURV9OT0RFX0ZJRUxEKG5vbmxlYWZSZXN1bHRSZWxhdGlvbnMpOwog CVdSSVRFX05PREVfRklFTEQocm9vdFJlc3VsdFJlbGF0aW9ucyk7CisJV1JJVEVfT0lEX0ZJRUxE KHJlc3VsdFZhcmlhYmxlKTsKIAlXUklURV9OT0RFX0ZJRUxEKHN1YnBsYW5zKTsKIAlXUklURV9C SVRNQVBTRVRfRklFTEQocmV3aW5kUGxhbklEcyk7CiAJV1JJVEVfTk9ERV9GSUVMRChyb3dNYXJr cyk7CkBAIC0yNzkzLDYgKzI3OTQsMTYgQEAgX291dFNlbGVjdFN0bXQoU3RyaW5nSW5mbyBzdHIs IGNvbnN0IFNlbGVjdFN0bXQgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChyYXJnKTsKIH0KIAor c3RhdGljIHZvaWQKK19vdXRMZXRTdG10KFN0cmluZ0luZm8gc3RyLCBjb25zdCBMZXRTdG10ICpu b2RlKQoreworCVdSSVRFX05PREVfVFlQRSgiTEVUIik7CisKKwlXUklURV9OT0RFX0ZJRUxEKHRh cmdldCk7CisJV1JJVEVfTk9ERV9GSUVMRChzZWxlY3RTdG10KTsKKwlXUklURV9MT0NBVElPTl9G SUVMRChsb2NhdGlvbik7Cit9CisKIHN0YXRpYyB2b2lkCiBfb3V0RnVuY0NhbGwoU3RyaW5nSW5m byBzdHIsIGNvbnN0IEZ1bmNDYWxsICpub2RlKQogewpAQCAtMjk3MSw2ICsyOTgyLDcgQEAgX291 dFF1ZXJ5KFN0cmluZ0luZm8gc3RyLCBjb25zdCBRdWVyeSAqbm9kZSkKIAkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhzdHIsICIgOnV0aWxpdHlTdG10IDw+Iik7CiAKIAlXUklURV9JTlRfRklFTEQo cmVzdWx0UmVsYXRpb24pOworCVdSSVRFX0lOVF9GSUVMRChyZXN1bHRWYXJpYWJsZSk7CiAJV1JJ VEVfQk9PTF9GSUVMRChoYXNBZ2dzKTsKIAlXUklURV9CT09MX0ZJRUxEKGhhc1dpbmRvd0Z1bmNz KTsKIAlXUklURV9CT09MX0ZJRUxEKGhhc1RhcmdldFNSRnMpOwpAQCAtNDE5MSw2ICs0MjAzLDkg QEAgb3V0Tm9kZShTdHJpbmdJbmZvIHN0ciwgY29uc3Qgdm9pZCAqb2JqKQogCQkJY2FzZSBUX1Nl bGVjdFN0bXQ6CiAJCQkJX291dFNlbGVjdFN0bXQoc3RyLCBvYmopOwogCQkJCWJyZWFrOworCQkJ Y2FzZSBUX0xldFN0bXQ6CisJCQkJX291dExldFN0bXQoc3RyLCBvYmopOworCQkJCWJyZWFrOwog CQkJY2FzZSBUX0NvbHVtbkRlZjoKIAkJCQlfb3V0Q29sdW1uRGVmKHN0ciwgb2JqKTsKIAkJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggMzI1NDUyNDIyMy4uNDQ1NDMyNzU0OSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTI0Miw2ICsyNDIsNyBAQCBfcmVhZFF1ZXJ5KHZvaWQpCiAJ UkVBRF9CT09MX0ZJRUxEKGNhblNldFRhZyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHV0aWxpdHlTdG10 KTsKIAlSRUFEX0lOVF9GSUVMRChyZXN1bHRSZWxhdGlvbik7CisJUkVBRF9JTlRfRklFTEQocmVz dWx0VmFyaWFibGUpOwogCVJFQURfQk9PTF9GSUVMRChoYXNBZ2dzKTsKIAlSRUFEX0JPT0xfRklF TEQoaGFzV2luZG93RnVuY3MpOwogCVJFQURfQk9PTF9GSUVMRChoYXNUYXJnZXRTUkZzKTsKQEAg LTE0ODUsNiArMTQ4Niw3IEBAIF9yZWFkUGxhbm5lZFN0bXQodm9pZCkKIAlSRUFEX05PREVfRklF TEQocmVzdWx0UmVsYXRpb25zKTsKIAlSRUFEX05PREVfRklFTEQobm9ubGVhZlJlc3VsdFJlbGF0 aW9ucyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHJvb3RSZXN1bHRSZWxhdGlvbnMpOworCVJFQURfT0lE X0ZJRUxEKHJlc3VsdFZhcmlhYmxlKTsKIAlSRUFEX05PREVfRklFTEQoc3VicGxhbnMpOwogCVJF QURfQklUTUFQU0VUX0ZJRUxEKHJld2luZFBsYW5JRHMpOwogCVJFQURfTk9ERV9GSUVMRChyb3dN YXJrcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggZmQwNmRhOThiOS4u MDFmOTdmMmQ4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMzM1LDcg KzMzNSw4IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBpbnQgY3Vyc29yT3B0aW9u cywgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKIAkgKi8KIAlpZiAoKGN1cnNvck9wdGlvbnMg JiBDVVJTT1JfT1BUX1BBUkFMTEVMX09LKSAhPSAwICYmCiAJCUlzVW5kZXJQb3N0bWFzdGVyICYm Ci0JCXBhcnNlLT5jb21tYW5kVHlwZSA9PSBDTURfU0VMRUNUICYmCisJCShwYXJzZS0+Y29tbWFu ZFR5cGUgPT0gQ01EX1NFTEVDVCB8fAorCQkgcGFyc2UtPmNvbW1hbmRUeXBlID09IENNRF9QTEFO X1VUSUxJVFkpICYmCiAJCSFwYXJzZS0+aGFzTW9kaWZ5aW5nQ1RFICYmCiAJCW1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPiAwICYmCiAJCSFJc1BhcmFsbGVsV29ya2VyKCkgJiYKQEAg LTM1Miw2ICszNTMsOCBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgaW50IGN1cnNv ck9wdGlvbnMsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpCiAJCWdsb2ItPnBhcmFsbGVsTW9k ZU9LID0gZmFsc2U7CiAJfQogCisKKwogCS8qCiAJICogZ2xvYi0+cGFyYWxsZWxNb2RlTmVlZGVk IGlzIG5vcm1hbGx5IHNldCB0byBmYWxzZSBoZXJlIGFuZCBjaGFuZ2VkIHRvCiAJICogdHJ1ZSBk dXJpbmcgcGxhbiBjcmVhdGlvbiBpZiBhIEdhdGhlciBvciBHYXRoZXIgTWVyZ2UgcGxhbiBpcyBh Y3R1YWxseQpAQCAtNTIxLDYgKzUyNCw3IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNl LCBpbnQgY3Vyc29yT3B0aW9ucywgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKIAlyZXN1bHQt PnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPm5vbmxl YWZSZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5ub25sZWFmUmVzdWx0UmVsYXRpb25zOwogCXJlc3Vs dC0+cm9vdFJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJvb3RSZXN1bHRSZWxhdGlvbnM7CisJcmVz dWx0LT5yZXN1bHRWYXJpYWJsZSA9IHBhcnNlLT5yZXN1bHRWYXJpYWJsZTsKIAlyZXN1bHQtPnN1 YnBsYW5zID0gZ2xvYi0+c3VicGxhbnM7CiAJcmVzdWx0LT5yZXdpbmRQbGFuSURzID0gZ2xvYi0+ cmV3aW5kUGxhbklEczsKIAlyZXN1bHQtPnJvd01hcmtzID0gZ2xvYi0+ZmluYWxyb3dtYXJrczsK QEAgLTIxNjcsNyArMjE3MSw3IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3Qs IGJvb2wgaW5oZXJpdGFuY2VfdXBkYXRlLAogCQkgKiBJZiB0aGlzIGlzIGFuIElOU0VSVC9VUERB VEUvREVMRVRFLCBhbmQgd2UncmUgbm90IGJlaW5nIGNhbGxlZCBmcm9tCiAJCSAqIGluaGVyaXRh bmNlX3BsYW5uZXIsIGFkZCB0aGUgTW9kaWZ5VGFibGUgbm9kZS4KIAkJICovCi0JCWlmIChwYXJz ZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVDVCAmJiAhaW5oZXJpdGFuY2VfdXBkYXRlKQorCQlp ZiAocGFyc2UtPmNvbW1hbmRUeXBlICE9IENNRF9TRUxFQ1QgJiYgcGFyc2UtPmNvbW1hbmRUeXBl ICE9IENNRF9QTEFOX1VUSUxJVFkgJiYgIWluaGVyaXRhbmNlX3VwZGF0ZSkKIAkJewogCQkJTGlz dAkgICAqd2l0aENoZWNrT3B0aW9uTGlzdHM7CiAJCQlMaXN0CSAgICpyZXR1cm5pbmdMaXN0czsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXB0bGlzdC5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0LmMKaW5kZXggODYwM2ZlZWYyYi4uMjky M2UzZmNjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0 LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0LmMKQEAgLTcxLDYg KzcxLDcgQEAgcHJlcHJvY2Vzc190YXJnZXRsaXN0KFBsYW5uZXJJbmZvICpyb290KQogewogCVF1 ZXJ5CSAgICpwYXJzZSA9IHJvb3QtPnBhcnNlOwogCWludAkJCXJlc3VsdF9yZWxhdGlvbiA9IHBh cnNlLT5yZXN1bHRSZWxhdGlvbjsKKwlpbnQJCQlyZXN1bHRfdmFyaWFibGUgPSBwYXJzZS0+cmVz dWx0VmFyaWFibGU7CiAJTGlzdAkgICAqcmFuZ2VfdGFibGUgPSBwYXJzZS0+cnRhYmxlOwogCUNt ZFR5cGUJCWNvbW1hbmRfdHlwZSA9IHBhcnNlLT5jb21tYW5kVHlwZTsKIAlSYW5nZVRibEVudHJ5 ICp0YXJnZXRfcnRlID0gTlVMTDsKQEAgLTk2LDYgKzk3LDEwIEBAIHByZXByb2Nlc3NfdGFyZ2V0 bGlzdChQbGFubmVySW5mbyAqcm9vdCkKIAogCQl0YXJnZXRfcmVsYXRpb24gPSBoZWFwX29wZW4o dGFyZ2V0X3J0ZS0+cmVsaWQsIE5vTG9jayk7CiAJfQorCWVsc2UgaWYgKHJlc3VsdF92YXJpYWJs ZSkKKwl7CisJCUFzc2VydChjb21tYW5kX3R5cGUgPT0gQ01EX1BMQU5fVVRJTElUWSk7CisJfQog CWVsc2UKIAkJQXNzZXJ0KGNvbW1hbmRfdHlwZSA9PSBDTURfU0VMRUNUKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvY2xhdXNlcy5jCmluZGV4IGEwNGFkNmU5OWUuLjhmMDIzMjI1YzYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKQEAgLTEyNTQsNyArMTI1NCw4IEBAIG1heF9w YXJhbGxlbF9oYXphcmRfd2Fsa2VyKE5vZGUgKm5vZGUsIG1heF9wYXJhbGxlbF9oYXphcmRfY29u dGV4dCAqY29udGV4dCkKIAl7CiAJCVBhcmFtCSAgICpwYXJhbSA9IChQYXJhbSAqKSBub2RlOwog Ci0JCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX0VYVEVSTikKKwkJaWYgKHBhcmFtLT5w YXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOIHx8CisJCQlwYXJhbS0+cGFyYW1raW5kID09IFBBUkFN X1ZBUklBQkxFKQogCQkJcmV0dXJuIGZhbHNlOwogCiAJCWlmIChwYXJhbS0+cGFyYW1raW5kICE9 IFBBUkFNX0VYRUMgfHwKQEAgLTQ3OTksNyArNDgwMCw3IEBAIHN1YnN0aXR1dGVfYWN0dWFsX3Bh cmFtZXRlcnNfbXV0YXRvcihOb2RlICpub2RlLAogewogCWlmIChub2RlID09IE5VTEwpCiAJCXJl dHVybiBOVUxMOwotCWlmIChJc0Eobm9kZSwgUGFyYW0pKQorCWlmIChJc0Eobm9kZSwgUGFyYW0p ICYmICgoUGFyYW0gKikgbm9kZSktPnBhcmFta2luZCAhPSBQQVJBTV9WQVJJQUJMRSkKIAl7CiAJ CVBhcmFtCSAgICpwYXJhbSA9IChQYXJhbSAqKSBub2RlOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wbGFuY2F0LmMKaW5kZXggODM2OWUzYWQ2Mi4uZmMwY2YzNGM3ZCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3BsYW5jYXQuYwpAQCAtMTI3Miw3ICsxMjcyLDcgQEAgZ2V0X3JlbGF0aW9uX2Nv bnN0cmFpbnRzKFBsYW5uZXJJbmZvICpyb290LAogCSAqIGRlc2NyaXB0b3IsIGluc3RlYWQgb2Yg Y29uc3RyYWludCBleGNsdXNpb24gd2hpY2ggaXMgZHJpdmVuIGJ5IHRoZQogCSAqIGluZGl2aWR1 YWwgcGFydGl0aW9uJ3MgcGFydGl0aW9uIGNvbnN0cmFpbnQuCiAJICovCi0JaWYgKGVuYWJsZV9w YXJ0aXRpb25fcHJ1bmluZyAmJiByb290LT5wYXJzZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVD VCkKKwlpZiAoZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nICYmIHJvb3QtPnBhcnNlLT5jb21tYW5k VHlwZSAhPSBDTURfU0VMRUNUICYmIHJvb3QtPnBhcnNlLT5jb21tYW5kVHlwZSAhPSBDTURfUExB Tl9VVElMSVRZKQogCXsKIAkJTGlzdAkgICAqcGNxdWFsID0gUmVsYXRpb25HZXRQYXJ0aXRpb25R dWFsKHJlbGF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggYzYwMWI2ZDQwZC4uNTNjZTI0 MzVkNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC0yNSw3ICsyNSwxMCBAQAogI2luY2x1ZGUgInBv c3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgorI2luY2x1ZGUgImNhdGFs b2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ192YXJpYWJsZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxl LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgi CiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCkBAIC00NCw2ICs0Nyw4IEBACiAjaW5jbHVk ZSAicGFyc2VyL3BhcnNlX3RhcmdldC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIK ICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVs LmgiCiAKIApAQCAtNzgsNiArODMsOCBAQCBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUNyZWF0ZVRh YmxlQXNTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSAgIENyZWF0ZVRhYmxlQXNTdG10 ICpzdG10KTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtQ2FsbFN0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCSAgQ2FsbFN0bXQgKnN0bXQpOworc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1MZXRT dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkgIExldFN0bXQgKnN0bXQpOwogc3RhdGljIHZv aWQgdHJhbnNmb3JtTG9ja2luZ0NsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFF1ZXJ5ICpxcnks CiAJCQkJCSAgIExvY2tpbmdDbGF1c2UgKmxjLCBib29sIHB1c2hlZERvd24pOwogI2lmZGVmIFJB V19FWFBSRVNTSU9OX0NPVkVSQUdFX1RFU1QKQEAgLTI2Nyw2ICsyNzQsNyBAQCB0cmFuc2Zvcm1T dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVlKQogCQljYXNlIFRfSW5zZXJ0 U3RtdDoKIAkJY2FzZSBUX1VwZGF0ZVN0bXQ6CiAJCWNhc2UgVF9EZWxldGVTdG10OgorCQljYXNl IFRfTGV0U3RtdDoKIAkJCSh2b2lkKSB0ZXN0X3Jhd19leHByZXNzaW9uX2NvdmVyYWdlKHBhcnNl VHJlZSwgTlVMTCk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTMyNyw2ICszMzUsMTEgQEAg dHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSkKIAkJCQkJ CQkJCSAgIChDYWxsU3RtdCAqKSBwYXJzZVRyZWUpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0xl dFN0bXQ6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1MZXRTdG10KHBzdGF0ZSwKKwkJCQkJCQkJCSAg KExldFN0bXQgKikgcGFyc2VUcmVlKTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAKIAkJCS8q CkBAIC0zNjcsNiArMzgwLDcgQEAgYW5hbHl6ZV9yZXF1aXJlc19zbmFwc2hvdChSYXdTdG10ICpw YXJzZVRyZWUpCiAJCWNhc2UgVF9EZWxldGVTdG10OgogCQljYXNlIFRfVXBkYXRlU3RtdDoKIAkJ Y2FzZSBUX1NlbGVjdFN0bXQ6CisJCWNhc2UgVF9MZXRTdG10OgogCQkJcmVzdWx0ID0gdHJ1ZTsK IAkJCWJyZWFrOwogCkBAIC0xNTY3LDYgKzE1ODEsMjAzIEBAIHRyYW5zZm9ybVZhbHVlc0NsYXVz ZShQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJcmV0dXJuIHFyeTsKIH0K IAorLyoKKyAqIHRyYW5zZm9ybUxldFN0bXQgLQorICoJICB0cmFuc2Zvcm0gYW4gTGV0IFN0YXRl bWVudAorICovCitzdGF0aWMgUXVlcnkgKgordHJhbnNmb3JtTGV0U3RtdChQYXJzZVN0YXRlICpw c3RhdGUsIExldFN0bXQgKnN0bXQpCit7CisJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5 KTsKKwlMaXN0CSAgICpleHByTGlzdCA9IE5JTDsKKwlMaXN0CSAgICpleHByTGlzdENvZXIgPSBO SUw7CisJTGlzdAkgICAqaW5kaXJlY3Rpb24gPSBOSUw7CisJTGlzdENlbGwgICAqbGM7CisJUXVl cnkJICAgKnNlbGVjdFF1ZXJ5OworCWludAkJCWkgPSAwOworCisJT2lkCQkJdmFyaWQ7CisKKwlQ YXJzZUV4cHJLaW5kIHN2X2V4cHJfa2luZDsKKwljaGFyCSAgICphdHRybmFtZSA9IE5VTEw7CisJ Ym9vbAkJbm90X3VuaXF1ZTsKKwlib29sCQlpc19yb3d0eXBlOworCU9pZAkJCXR5cGlkOworCWlu dDMyCQl0eXBtb2Q7CisKKwlBY2xSZXN1bHQJYWNscmVzdWx0OworCUxpc3QJICAgKm5hbWVzID0g TlVMTDsKKwlpbnQJCQlpbmRpcmVjdGlvbl9zdGFydDsKKworCXN2X2V4cHJfa2luZCA9IHBzdGF0 ZS0+cF9leHByX2tpbmQ7CisJcHN0YXRlLT5wX2V4cHJfa2luZCA9IEVYUFJfS0lORF9MRVQ7CisK KwkvKiBUaGVyZSBjYW4ndCBiZSBhbnkgb3V0ZXIgV0lUSCB0byB3b3JyeSBhYm91dCAqLworCUFz c2VydChwc3RhdGUtPnBfY3RlbmFtZXNwYWNlID09IE5JTCk7CisKKwkvKiBFeGVjIHRoaXMgY29t bWFuZCBhcyB1dGlsaXR5ICovCisJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9QTEFOX1VUSUxJVFk7 CisJcXJ5LT51dGlsaXR5U3RtdCA9IChOb2RlICopIHN0bXQ7CisKKwluYW1lcyA9IE5hbWVzRnJv bUxpc3Qoc3RtdC0+dGFyZ2V0KTsKKworCXZhcmlkID0gaWRlbnRpZnlfdmFyaWFibGUobmFtZXMs ICZhdHRybmFtZSwgJm5vdF91bmlxdWUpOworCWlmIChub3RfdW5pcXVlKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VTX1BBUkFNRVRFUiksCisJCQkJIGVy cm1zZygidGFyZ2V0IFwiJXNcIiBvZiBMRVQgY29tbWFuZCBpcyBhbWJpZ3VvdXMiLAorCQkJCQkJ TmFtZUxpc3RUb1N0cmluZyhuYW1lcykpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBzdG10LT5sb2NhdGlvbikpKTsKKworCWlmICghT2lkSXNWYWxpZCh2YXJpZCkpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJ CQkJIGVycm1zZygic2NoZW1hIHZhcmlhYmxlIFwiJXNcIiBkb2Vzbid0IGV4aXN0cyIsCisJCQkJ CQkJCU5hbWVMaXN0VG9TdHJpbmcobmFtZXMpKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBzdG10LT5sb2NhdGlvbikpKTsKKworCXFyeS0+cmVzdWx0VmFyaWFibGUgPSB2YXJp ZDsKKworCWdldF9zY2hlbWFfdmFyaWFibGVfdHlwZV90eXBtb2QodmFyaWQsICZ0eXBpZCwgJnR5 cG1vZCk7CisKKwlpc19yb3d0eXBlID0gdHlwZV9pc19yb3d0eXBlKHR5cGlkKTsKKworCWlmIChh dHRybmFtZSAmJiAhaXNfcm93dHlwZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJ0YXJnZXQgdmFyaWFibGUg XCIlc1wiIGlzIG5vdCByb3cgdHlwZSIsCisJCQkJCQlzY2hlbWFfdmFyaWFibGVfZ2V0X25hbWUo dmFyaWQpKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzdG10LT5sb2NhdGlvbikp KTsKKworCWFjbHJlc3VsdCA9IHBnX3ZhcmlhYmxlX2FjbGNoZWNrKHZhcmlkLCBHZXRVc2VySWQo KSwgQUNMX1dSSVRFKTsKKwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVj a19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwgTmFtZUxpc3RUb1N0cmluZyhuYW1l cykpOworCisJc2VsZWN0UXVlcnkgPSB0cmFuc2Zvcm1TdG10KHBzdGF0ZSwgc3RtdC0+c2VsZWN0 U3RtdCk7CisKKwkvKiBUaGUgZ3JhbW1hciBzaG91bGQgaGF2ZSBwcm9kdWNlZCBhIFNFTEVDVCAq LworCWlmICghSXNBKHNlbGVjdFF1ZXJ5LCBRdWVyeSkgfHwKKwkJc2VsZWN0UXVlcnktPmNvbW1h bmRUeXBlICE9IENNRF9TRUxFQ1QpCisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIG5vbi1TRUxF Q1QgY29tbWFuZCBpbiBMRVQgLi4uIFNFTEVDVCIpOworCisJLyotLS0tLS0tLS0tCisJICogR2Vu ZXJhdGUgYW4gZXhwcmVzc2lvbiBsaXN0IGZvciB0aGUgTEVUIHRoYXQgc2VsZWN0cyBhbGwgdGhl CisJICogbm9uLXJlc2p1bmsgY29sdW1ucyBmcm9tIHRoZSBzdWJxdWVyeS4KKwkgKi0tLS0tLS0t LS0KKwkgKi8KKwlleHByTGlzdCA9IE5JTDsKKwlmb3JlYWNoKGxjLCBzZWxlY3RRdWVyeS0+dGFy Z2V0TGlzdCkKKwl7CisJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0 KGxjKTsKKworCQlpZiAodGxlLT5yZXNqdW5rKQorCQkJY29udGludWU7CisKKwkJZXhwckxpc3Qg PSBsYXBwZW5kKGV4cHJMaXN0LCB0bGUtPmV4cHIpOworCX0KKworCS8qCisJICogQmVjYXVzZSBk b2Vzbid0IHN1cHBvcnQgcGF0dGVybiBtYXRjaGluZywgZG9uJ3QgYWxsb3cgbXVsdGljb2x1bW4g cmVzdWx0CisJICovCisJaWYgKGxpc3RfbGVuZ3RoKGV4cHJMaXN0KSAhPSAxKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNn KCJleHByZXNzaW9uIGlzIG5vdCBzY2FsYXIgdmFsdWUiKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwKKwkJCQkJCQkJCWV4cHJMb2NhdGlvbigoTm9kZSAqKSBleHByTGlzdCkpKSk7 CisKKwlpbmRpcmVjdGlvbl9zdGFydCA9IGxpc3RfbGVuZ3RoKG5hbWVzKSAtIChhdHRybmFtZSA/ IDEgOiAwKTsKKwlpbmRpcmVjdGlvbiA9IGxpc3RfY29weV90YWlsKHN0bXQtPnRhcmdldCwgaW5k aXJlY3Rpb25fc3RhcnQpOworCisJZXhwckxpc3RDb2VyID0gTklMOworCWZvcmVhY2gobGMsIGV4 cHJMaXN0KQorCXsKKwkJTm9kZQkgICAqb3JpZ19leHByID0gKE5vZGUqKSBsZmlyc3QobGMpOwor CQlPaWQJCQlleHBydHlwaWQgPSBleHByVHlwZSgoTm9kZSAqKSBvcmlnX2V4cHIpOworCQlQYXJh bSAqcGFyYW0gPSBtYWtlTm9kZShQYXJhbSk7CisJCUV4cHIJICAgKmV4cHIgPSBOVUxMOworCisJ CXBhcmFtLT5wYXJhbWtpbmQgPSBQQVJBTV9WQVJJQUJMRTsKKwkJcGFyYW0tPnBhcmFtaWQgPSB2 YXJpZDsKKwkJcGFyYW0tPnBhcmFtdHlwZSA9IHR5cGlkOworCQlwYXJhbS0+cGFyYW10eXBtb2Qg PSB0eXBtb2Q7CisKKwkJaWYgKGluZGlyZWN0aW9uICE9IE5VTEwpCisJCXsKKwkJCWJvb2wJCXRh cmdldElzQXJyYXk7CisJCQljaGFyCSAgICAqdGFyZ2V0TmFtZTsKKworCQkJdGFyZ2V0TmFtZSA9 IGF0dHJuYW1lICE9IE5VTEwgPyBhdHRybmFtZSA6IGdldF9zY2hlbWFfdmFyaWFibGVfbmFtZSh2 YXJpZCk7CisJCQl0YXJnZXRJc0FycmF5ID0gT2lkSXNWYWxpZChnZXRfZWxlbWVudF90eXBlKHR5 cGlkKSk7CisKKwkJCWV4cHIgPSAoRXhwciAqKQorCQkJCQl0cmFuc2Zvcm1Bc3NpZ25tZW50SW5k aXJlY3Rpb24ocHN0YXRlLAorCQkJCQkJCQkJCQkJKE5vZGUgKikgcGFyYW0sCisJCQkJCQkJCQkJ CQl0YXJnZXROYW1lLAorCQkJCQkJCQkJCQkJdGFyZ2V0SXNBcnJheSwKKwkJCQkJCQkJCQkJCXR5 cGlkLAorCQkJCQkJCQkJCQkJdHlwbW9kLAorCQkJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJ CQkJCQkJCWxpc3RfaGVhZChpbmRpcmVjdGlvbiksCisJCQkJCQkJCQkJCQkoTm9kZSAqKSBvcmln X2V4cHIsCisJCQkJCQkJCQkJCQlzdG10LT5sb2NhdGlvbik7CisJCX0KKwkJZWxzZQorCQkJZXhw ciA9IChFeHByICopCisJCQkJCWNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsCisJCQkJCQkJ CQkJCShOb2RlICopIG9yaWdfZXhwciwKKwkJCQkJCQkJCQkJZXhwcnR5cGlkLAorCQkJCQkJCQkJ CQl0eXBpZCwgdHlwbW9kLAorCQkJCQkJCQkJCQlDT0VSQ0lPTl9BU1NJR05NRU5ULAorCQkJCQkJ CQkJCQlDT0VSQ0VfSU1QTElDSVRfQ0FTVCwKKwkJCQkJCQkJCQkJc3RtdC0+bG9jYXRpb24pOwor CisJCWlmIChleHByID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlc1wi IGlzIG9mIHR5cGUgJXMsIgorCQkJCQkJCSAgIiBidXQgZXhwcmVzc2lvbiBpcyBvZiB0eXBlICVz IiwKKwkJCQkJCXNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZSh2YXJpZCksCisJCQkJCQkJZm9ybWF0 X3R5cGVfYmUodHlwaWQpLAorCQkJCQkJICBmb3JtYXRfdHlwZV9iZShleHBydHlwaWQpKSwKKwkJ CQkgZXJyaGludCgiWW91IHdpbGwgbmVlZCB0byByZXdyaXRlIG9yIGNhc3QgdGhlIGV4cHJlc3Np b24uIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9k ZSAqKSBvcmlnX2V4cHIpKSkpOworCisJCWV4cHJMaXN0Q29lciA9IGxhcHBlbmQoZXhwckxpc3RD b2VyLCBleHByKTsKKwl9CisKKwkvKgorCSAqIEdlbmVyYXRlIHF1ZXJ5J3MgdGFyZ2V0IGxpc3Qg dXNpbmcgdGhlIGNvbXB1dGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMuCisJICogQWxzbywgbWFyayBh bGwgdGhlIHRhcmdldCBjb2x1bW5zIGFzIG5lZWRpbmcgaW5zZXJ0IHBlcm1pc3Npb25zLgorCSAq LworCXFyeS0+dGFyZ2V0TGlzdCA9IE5JTDsKKwlmb3JlYWNoKGxjLCBleHByTGlzdENvZXIpCisJ eworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKKwkJVGFyZ2V0RW50cnkg KnRsZTsKKworCQl0bGUgPSBtYWtlVGFyZ2V0RW50cnkoZXhwciwKKwkJCQkJCQkgIGkgKyAxLAor CQkJCQkJCSAgRmlndXJlQ29sbmFtZSgoTm9kZSAqKWV4cHIpLAorCQkJCQkJCSAgZmFsc2UpOwor CQlxcnktPnRhcmdldExpc3QgPSBsYXBwZW5kKHFyeS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwl9CisK KwkvKiBkb25lIGJ1aWxkaW5nIHRoZSByYW5nZSB0YWJsZSBhbmQgam9pbnRyZWUgKi8KKwlxcnkt PnJ0YWJsZSA9IHBzdGF0ZS0+cF9ydGFibGU7CisJcXJ5LT5qb2ludHJlZSA9IG1ha2VGcm9tRXhw cihwc3RhdGUtPnBfam9pbmxpc3QsIE5VTEwpOworCisJcXJ5LT5oYXNUYXJnZXRTUkZzID0gcHN0 YXRlLT5wX2hhc1RhcmdldFNSRnM7CisJcXJ5LT5oYXNTdWJMaW5rcyA9IHBzdGF0ZS0+cF9oYXNT dWJMaW5rczsKKworCWFzc2lnbl9xdWVyeV9jb2xsYXRpb25zKHBzdGF0ZSwgcXJ5KTsKKworCXBz dGF0ZS0+cF9leHByX2tpbmQgPSBzdl9leHByX2tpbmQ7CisKKwlyZXR1cm4gcXJ5OworfQorCisK IC8qCiAgKiB0cmFuc2Zvcm1TZXRPcGVyYXRpb25TdG10IC0KICAqCSAgdHJhbnNmb3JtcyBhIHNl dC1vcGVyYXRpb25zIHRyZWUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDg3ZjVlOTU4MjcuLjI1MDM2NjY5YzEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQpAQCAtMjU3LDggKzI1Nyw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAJCUNvbnN0cmFpbnRzU2V0U3RtdCBDb3B5U3RtdCBDcmVhdGVBc1N0bXQgQ3JlYXRlQ2FzdFN0 bXQKIAkJQ3JlYXRlRG9tYWluU3RtdCBDcmVhdGVFeHRlbnNpb25TdG10IENyZWF0ZUdyb3VwU3Rt dCBDcmVhdGVPcENsYXNzU3RtdAogCQlDcmVhdGVPcEZhbWlseVN0bXQgQWx0ZXJPcEZhbWlseVN0 bXQgQ3JlYXRlUExhbmdTdG10Ci0JCUNyZWF0ZVNjaGVtYVN0bXQgQ3JlYXRlU2VxU3RtdCBDcmVh dGVTdG10IENyZWF0ZVN0YXRzU3RtdCBDcmVhdGVUYWJsZVNwYWNlU3RtdAotCQlDcmVhdGVGZHdT dG10IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IENyZWF0ZUZvcmVpZ25UYWJsZVN0bXQKKwkJQ3Jl YXRlU2NoZW1hU3RtdCBDcmVhdGVTY2hlbWFWYXJTdG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3Rt dCBDcmVhdGVTdGF0c1N0bXQKKwkJQ3JlYXRlVGFibGVTcGFjZVN0bXQgQ3JlYXRlRmR3U3RtdCBD cmVhdGVGb3JlaWduU2VydmVyU3RtdCBDcmVhdGVGb3JlaWduVGFibGVTdG10CiAJCUNyZWF0ZUFz c2VydFN0bXQgQ3JlYXRlVHJhbnNmb3JtU3RtdCBDcmVhdGVUcmlnU3RtdCBDcmVhdGVFdmVudFRy aWdTdG10CiAJCUNyZWF0ZVVzZXJTdG10IENyZWF0ZVVzZXJNYXBwaW5nU3RtdCBDcmVhdGVSb2xl U3RtdCBDcmVhdGVQb2xpY3lTdG10CiAJCUNyZWF0ZWRiU3RtdCBEZWNsYXJlQ3Vyc29yU3RtdCBE ZWZpbmVTdG10IERlbGV0ZVN0bXQgRGlzY2FyZFN0bXQgRG9TdG10CkBAIC0yNjgsNyArMjY4LDcg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExp c3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJRHJvcFRyYW5zZm9ybVN0bXQKIAkJRHJvcFVz ZXJNYXBwaW5nU3RtdCBFeHBsYWluU3RtdCBGZXRjaFN0bXQKIAkJR3JhbnRTdG10IEdyYW50Um9s ZVN0bXQgSW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQgSW5kZXhTdG10IEluc2VydFN0bXQKLQkJTGlz dGVuU3RtdCBMb2FkU3RtdCBMb2NrU3RtdCBOb3RpZnlTdG10IEV4cGxhaW5hYmxlU3RtdCBQcmVw YXJhYmxlU3RtdAorCQlMZXRTdG10IExpc3RlblN0bXQgTG9hZFN0bXQgTG9ja1N0bXQgTm90aWZ5 U3RtdCBFeHBsYWluYWJsZVN0bXQgUHJlcGFyYWJsZVN0bXQKIAkJQ3JlYXRlRnVuY3Rpb25TdG10 IEFsdGVyRnVuY3Rpb25TdG10IFJlaW5kZXhTdG10IFJlbW92ZUFnZ3JTdG10CiAJCVJlbW92ZUZ1 bmNTdG10IFJlbW92ZU9wZXJTdG10IFJlbmFtZVN0bXQgUmV2b2tlU3RtdCBSZXZva2VSb2xlU3Rt dAogCQlSdWxlQWN0aW9uU3RtdCBSdWxlQWN0aW9uU3RtdE9yRW1wdHkgUnVsZVN0bXQKQEAgLTQw MCw2ICs0MDAsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCVRyaWdnZXJUcmFuc2l0 aW9ucyBUcmlnZ2VyUmVmZXJlbmNpbmcKIAkJCQlwdWJsaWNhdGlvbl9uYW1lX2xpc3QKIAkJCQl2 YWN1dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKKwkJCQlsZXRfdGFy Z2V0CiAKICV0eXBlIDxsaXN0Pglncm91cF9ieV9saXN0CiAldHlwZSA8bm9kZT4JZ3JvdXBfYnlf aXRlbSBlbXB0eV9ncm91cGluZ19zZXQgcm9sbHVwX2NsYXVzZSBjdWJlX2NsYXVzZQpAQCAtNTg0 LDYgKzU4NSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JCXBhcnRi b3VuZF9kYXR1bSBQYXJ0aXRpb25SYW5nZURhdHVtCiAldHlwZSA8bGlzdD4JCWhhc2hfcGFydGJv dW5kIHBhcnRib3VuZF9kYXR1bV9saXN0IHJhbmdlX2RhdHVtX2xpc3QKICV0eXBlIDxkZWZlbHQ+ CQloYXNoX3BhcnRib3VuZF9lbGVtCisldHlwZSA8bm9kZT4JCW9wdFNjaGVtYVZhckRlZkV4cHIK IAogLyoKICAqIE5vbi1rZXl3b3JkIHRva2VuIHR5cGVzLiAgVGhlc2UgYXJlIGhhcmQtd2lyZWQg aW50byB0aGUgImZsZXgiIGxleGVyLgpAQCAtNjQ5LDcgKzY1MSw3IEBAIHN0YXRpYyBOb2RlICpt YWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAJS0VZCiAKIAlMQUJFTCBMQU5HVUFHRSBMQVJHRV9QIExBU1RfUCBMQVRFUkFM X1AKLQlMRUFESU5HIExFQUtQUk9PRiBMRUFTVCBMRUZUIExFVkVMIExJS0UgTElNSVQgTElTVEVO IExPQUQgTE9DQUwKKwlMRUFESU5HIExFQUtQUk9PRiBMRUFTVCBMRUZUIExFVCBMRVZFTCBMSUtF IExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCiAJTE9DQUxUSU1FIExPQ0FMVElNRVNUQU1QIExPQ0FU SU9OIExPQ0tfUCBMT0NLRUQgTE9HR0VECiAKIAlNQVBQSU5HIE1BVENIIE1BVEVSSUFMSVpFRCBN QVhWQUxVRSBNRVRIT0QgTUlOVVRFX1AgTUlOVkFMVUUgTU9ERSBNT05USF9QIE1PVkUKQEAgLTY4 Nyw4ICs2ODksOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVVOQk9VTkRFRCBVTkNPTU1J VFRFRCBVTkVOQ1JZUFRFRCBVTklPTiBVTklRVUUgVU5LTk9XTiBVTkxJU1RFTiBVTkxPR0dFRAog CVVOVElMIFVQREFURSBVU0VSIFVTSU5HCiAKLQlWQUNVVU0gVkFMSUQgVkFMSURBVEUgVkFMSURB VE9SIFZBTFVFX1AgVkFMVUVTIFZBUkNIQVIgVkFSSUFESUMgVkFSWUlORwotCVZFUkJPU0UgVkVS U0lPTl9QIFZJRVcgVklFV1MgVk9MQVRJTEUKKwlWQUNVVU0gVkFMSUQgVkFMSURBVEUgVkFMSURB VE9SIFZBTFVFX1AgVkFMVUVTIFZBUkNIQVIgVkFSSUFCTEUgVkFSSUFCTEVTCisJVkFSSUFESUMg VkFSWUlORyBWRVJCT1NFIFZFUlNJT05fUCBWSUVXIFZJRVdTIFZPTEFUSUxFCiAKIAlXSEVOIFdI RVJFIFdISVRFU1BBQ0VfUCBXSU5ET1cgV0lUSCBXSVRISU4gV0lUSE9VVCBXT1JLIFdSQVBQRVIg V1JJVEUKIApAQCAtODc4LDYgKzg4MCw3IEBAIHN0bXQgOgogCQkJfCBDcmVhdGVQb2xpY3lTdG10 CiAJCQl8IENyZWF0ZVBMYW5nU3RtdAogCQkJfCBDcmVhdGVTY2hlbWFTdG10CisJCQl8IENyZWF0 ZVNjaGVtYVZhclN0bXQKIAkJCXwgQ3JlYXRlU2VxU3RtdAogCQkJfCBDcmVhdGVTdG10CiAJCQl8 IENyZWF0ZVN1YnNjcmlwdGlvblN0bXQKQEAgLTkxNyw2ICs5MjAsNyBAQCBzdG10IDoKIAkJCXwg SW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQKIAkJCXwgSW5kZXhTdG10CiAJCQl8IEluc2VydFN0bXQK KwkJCXwgTGV0U3RtdAogCQkJfCBMaXN0ZW5TdG10CiAJCQl8IFJlZnJlc2hNYXRWaWV3U3RtdAog CQkJfCBMb2FkU3RtdApAQCAtMTgwOCw3ICsxODEyLDEyIEBAIERpc2NhcmRTdG10OgogCQkJCQlu LT50YXJnZXQgPSBESVNDQVJEX1NFUVVFTkNFUzsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJ CX0KLQorCQkJfCBESVNDQVJEIFZBUklBQkxFUworCQkJCXsKKwkJCQkJRGlzY2FyZFN0bXQgKm4g PSBtYWtlTm9kZShEaXNjYXJkU3RtdCk7CisJCQkJCW4tPnRhcmdldCA9IERJU0NBUkRfVkFSSUFC TEVTOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQk7CiAKIApAQCAtNDQ3OSw2ICs0 NDg4LDQyIEBAIGNyZWF0ZV9leHRlbnNpb25fb3B0X2l0ZW06CiAJCQkJfQogCQk7CiAKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorICoKKyAqCQlRVUVSWSA6CisgKgkJCQlDUkVBVEUgVkFSSUFCTEUg dmFybmFtZSBbQVNdIHR5cGUKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0NyZWF0ZVNj aGVtYVZhclN0bXQ6CisJCQlDUkVBVEUgT3B0VGVtcCBWQVJJQUJMRSBxdWFsaWZpZWRfbmFtZSBv cHRfYXMgVHlwZW5hbWUgb3B0U2NoZW1hVmFyRGVmRXhwcgorCQkJCXsKKwkJCQkJQ3JlYXRlU2No ZW1hVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNjaGVtYVZhclN0bXQpOworCQkJCQkkNC0+ cmVscGVyc2lzdGVuY2UgPSAkMjsKKwkJCQkJbi0+dmFyaWFibGUgPSAkNDsKKwkJCQkJbi0+dHlw ZU5hbWUgPSAkNjsKKwkJCQkJbi0+ZGVmZXhwciA9ICQ3OworCQkJCQluLT5pZl9ub3RfZXhpc3Rz ID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IENSRUFURSBPcHRU ZW1wIFZBUklBQkxFIElGX1AgTk9UIEVYSVNUUyBxdWFsaWZpZWRfbmFtZSBvcHRfYXMgVHlwZW5h bWUgb3B0U2NoZW1hVmFyRGVmRXhwcgorCQkJCXsKKwkJCQkJQ3JlYXRlU2NoZW1hVmFyU3RtdCAq biA9IG1ha2VOb2RlKENyZWF0ZVNjaGVtYVZhclN0bXQpOworCQkJCQkkNy0+cmVscGVyc2lzdGVu Y2UgPSAkMjsKKwkJCQkJbi0+dmFyaWFibGUgPSAkNzsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkOTsK KwkJCQkJbi0+ZGVmZXhwciA9ICQxMDsKKwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IHRydWU7CisJ CQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworb3B0U2NoZW1hVmFyRGVmRXhwcjog REVGQVVMVCBiX2V4cHIJCQkJCQkJeyAkJCA9ICQyOyB9CisJCQl8IC8qIEVNUFRZICovCQkJCQkJ CQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCisKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgog ICogQUxURVIgRVhURU5TSU9OIG5hbWUgVVBEQVRFIFsgVE8gdmVyc2lvbiBdCkBAIC02MzM1LDYg KzYzODAsNyBAQCBkcm9wX3R5cGVfYW55X25hbWU6CiAJCQl8IFRFWFRfUCBTRUFSQ0ggRElDVElP TkFSWQkJCQl7ICQkID0gT0JKRUNUX1RTRElDVElPTkFSWTsgfQogCQkJfCBURVhUX1AgU0VBUkNI IFRFTVBMQVRFCQkJCXsgJCQgPSBPQkpFQ1RfVFNURU1QTEFURTsgfQogCQkJfCBURVhUX1AgU0VB UkNIIENPTkZJR1VSQVRJT04JCQl7ICQkID0gT0JKRUNUX1RTQ09ORklHVVJBVElPTjsgfQorCQkJ fCBWQVJJQUJMRQkJCQkJCQkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAKIC8qIG9i amVjdCB0eXBlcyB0YWtpbmcgbmFtZV9saXN0ICovCkBAIC02NjA0LDYgKzY2NTAsNyBAQCBjb21t ZW50X3R5cGVfYW55X25hbWU6CiAJCQl8IFRFWFRfUCBTRUFSQ0ggRElDVElPTkFSWQkJCXsgJCQg PSBPQkpFQ1RfVFNESUNUSU9OQVJZOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0ggUEFSU0VSCQkJCXsg JCQgPSBPQkpFQ1RfVFNQQVJTRVI7IH0KIAkJCXwgVEVYVF9QIFNFQVJDSCBURU1QTEFURQkJCXsg JCQgPSBPQkpFQ1RfVFNURU1QTEFURTsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQl7ICQkID0gT0JK RUNUX1ZBUklBQkxFOyB9CiAJCTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1lICovCkBA IC02NzQyLDYgKzY3ODksNyBAQCBzZWN1cml0eV9sYWJlbF90eXBlX2FueV9uYW1lOgogCQkJfCBU QUJMRQkJCQkJCQkJeyAkJCA9IE9CSkVDVF9UQUJMRTsgfQogCQkJfCBWSUVXCQkJCQkJCQl7ICQk ID0gT0JKRUNUX1ZJRVc7IH0KIAkJCXwgTUFURVJJQUxJWkVEIFZJRVcJCQkJCXsgJCQgPSBPQkpF Q1RfTUFUVklFVzsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxF OyB9CiAJCTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1lICovCkBAIC03MTYzLDYgKzcy MTEsMTQgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQkJbi0+b2JqcyA9ICQyOwogCQkJCQkkJCA9 IG47CiAJCQkJfQorCQkJfCBWQVJJQUJMRSBxdWFsaWZpZWRfbmFtZV9saXN0CisJCQkJeworCQkJ CQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0 KSk7CisJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CisJCQkJCW4tPm9ianR5 cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9ianMgPSAkMjsKKwkJCQkJJCQgPSBuOwor CQkJCX0KIAkJCXwgQUxMIFRBQkxFUyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKIAkJCQl7CiAJCQkJ CVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQp KTsKQEAgLTcyMDMsNiArNzI1OSwxNCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCQluLT5vYmpz ID0gJDU7CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IEFMTCBWQVJJQUJMRVMgSU5fUCBTQ0hF TUEgbmFtZV9saXN0CisJCQkJeworCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikg cGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdF VF9BTExfSU5fU0NIRU1BOworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJ CQluLT5vYmpzID0gJDU7CisJCQkJCSQkID0gbjsKKwkJCQl9CiAJCTsKIAogCkBAIC03MzYzLDYg Kzc0MjcsNyBAQCBkZWZhY2xfcHJpdmlsZWdlX3RhcmdldDoKIAkJCXwgU0VRVUVOQ0VTCQl7ICQk ID0gT0JKRUNUX1NFUVVFTkNFOyB9CiAJCQl8IFRZUEVTX1AJCXsgJCQgPSBPQkpFQ1RfVFlQRTsg fQogCQkJfCBTQ0hFTUFTCQl7ICQkID0gT0JKRUNUX1NDSEVNQTsgfQorCQkJfCBWQVJJQUJMRVMJ CXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAKQEAgLTg5NTksNiArOTAyNCwyNSBA QCBSZW5hbWVTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgUkVO QU1FIFRPIG5hbWUKIAkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOwogCQkJCQkkJCA9IChOb2Rl ICopbjsKIAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxFIGFueV9uYW1lIFJFTkFNRSBUTyBuYW1l CisJCQkJeworCQkJCQlSZW5hbWVTdG10ICpuID0gbWFrZU5vZGUoUmVuYW1lU3RtdCk7CisJCQkJ CW4tPnJlbmFtZVR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9iamVjdCA9IChOb2Rl ICopICQzOworCQkJCQluLT5uZXduYW1lID0gJDY7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxz ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBJRl9Q IEVYSVNUUyBhbnlfbmFtZSBSRU5BTUUgVE8gbmFtZQorCQkJCXsKKwkJCQkJUmVuYW1lU3RtdCAq biA9IG1ha2VOb2RlKFJlbmFtZVN0bXQpOworCQkJCQluLT5yZW5hbWVUeXBlID0gT0JKRUNUX1ZB UklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkNTsKKwkJCQkJbi0+bmV3bmFtZSA9 ICQ4OworCQkJCQluLT5taXNzaW5nX29rID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJ CQkJfQorCiAJCTsKIAogb3B0X2NvbHVtbjogQ09MVU1OCQkJCQkJCQkJeyAkJCA9IENPTFVNTjsg fQpAQCAtOTI3Nyw2ICs5MzYxLDI1IEBAIEFsdGVyT2JqZWN0U2NoZW1hU3RtdDoKIAkJCQkJbi0+ bWlzc2luZ19vayA9IGZhbHNlOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CisJCQl8IEFM VEVSIFZBUklBQkxFIGFueV9uYW1lIFNFVCBTQ0hFTUEgbmFtZQorCQkJCXsKKwkJCQkJQWx0ZXJP YmplY3RTY2hlbWFTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJPYmplY3RTY2hlbWFTdG10KTsKKwkJ CQkJbi0+b2JqZWN0VHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqZWN0ID0gKE5v ZGUgKikgJDM7CisJCQkJCW4tPm5ld3NjaGVtYSA9ICQ2OworCQkJCQluLT5taXNzaW5nX29rID0g ZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUg SUZfUCBFWElTVFMgYW55X25hbWUgU0VUIFNDSEVNQSBuYW1lCisJCQkJeworCQkJCQlBbHRlck9i amVjdFNjaGVtYVN0bXQgKm4gPSBtYWtlTm9kZShBbHRlck9iamVjdFNjaGVtYVN0bXQpOworCQkJ CQluLT5vYmplY3RUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9k ZSAqKSAkNTsKKwkJCQkJbi0+bmV3c2NoZW1hID0gJDg7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0 cnVlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisKIAkJOwogCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKQEAgLTk1MTIsNiArOTYxNSwxNCBAQCBBbHRlck93bmVyU3RtdDogQUxURVIgQUdH UkVHQVRFIGFnZ3JlZ2F0ZV93aXRoX2FyZ3R5cGVzIE9XTkVSIFRPIFJvbGVTcGVjCiAJCQkJCW4t Pm5ld293bmVyID0gJDY7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KKwkJCXwgQUxURVIg VkFSSUFCTEUgYW55X25hbWUgT1dORVIgVE8gUm9sZVNwZWMKKwkJCQl7CisJCQkJCUFsdGVyT3du ZXJTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJPd25lclN0bXQpOworCQkJCQluLT5vYmplY3RUeXBl ID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkMzsKKwkJCQkJ bi0+bmV3b3duZXIgPSAkNjsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQk7CiAKIApA QCAtMTA2OTMsNiArMTA4MDQsNyBAQCBFeHBsYWluYWJsZVN0bXQ6CiAJCQl8IENyZWF0ZU1hdFZp ZXdTdG10CiAJCQl8IFJlZnJlc2hNYXRWaWV3U3RtdAogCQkJfCBFeGVjdXRlU3RtdAkJCQkJLyog YnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8IExldFN0bXQKIAkJOwogCiBleHBsYWlu X29wdGlvbl9saXN0OgpAQCAtMTA3NTAsNiArMTA4NjIsNyBAQCBQcmVwYXJhYmxlU3RtdDoKIAkJ CXwgSW5zZXJ0U3RtdAogCQkJfCBVcGRhdGVTdG10CiAJCQl8IERlbGV0ZVN0bXQJCQkJCS8qIGJ5 IGRlZmF1bHQgYWxsIGFyZSAkJD0kMSAqLworCQkJfCBMZXRTdG10CiAJCTsKIAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCkBAIC0xMTE0OCw2ICsxMTI2MSw0NCBAQCBvcHRfaG9sZDogLyogRU1QVFkg Ki8JCQkJCQl7ICQkID0gMDsgfQogCQkJfCBXSVRIT1VUIEhPTEQJCQkJCXsgJCQgPSAwOyB9CiAJ CTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZOgorICoJCQkJTEVUIFNU QVRFTUVOVFMKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitMZXRTdG10OglMRVQgbGV0X3Rh cmdldCAnPScgYV9leHByCisJCQkJeworCQkJCQlMZXRTdG10ICpuID0gbWFrZU5vZGUoTGV0U3Rt dCk7CisJCQkJCVNlbGVjdFN0bXQgKnNlbGVjdCA9IG1ha2VOb2RlKFNlbGVjdFN0bXQpOworCQkJ CQlSZXNUYXJnZXQJKnJlcyA9IG1ha2VOb2RlKFJlc1RhcmdldCk7CisKKwkJCQkJbi0+dGFyZ2V0 ID0gJDI7CisKKwkJCQkJLyogQ3JlYXRlIHRhcmdldCBsaXN0IGZvciBpbXBsaWNpdCBxdWVyeSAq LworCQkJCQlyZXMtPm5hbWUgPSBOVUxMOworCQkJCQlyZXMtPmluZGlyZWN0aW9uID0gTklMOwor CQkJCQlyZXMtPnZhbCA9IChOb2RlICopICQ0OworCQkJCQlyZXMtPmxvY2F0aW9uID0gQDQ7CisK KwkJCQkJc2VsZWN0LT50YXJnZXRMaXN0ID0gbGlzdF9tYWtlMShyZXMpOworCQkJCQluLT5zZWxl Y3RTdG10ID0gKE5vZGUgKikgc2VsZWN0OworCisJCQkJCW4tPmxvY2F0aW9uID0gQDI7CisKKwkJ CQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitsZXRfdGFyZ2V0OgorCQkJQ29sSWQg b3B0X2luZGlyZWN0aW9uCisJCQkJeworCQkJCQkkJCA9IGxpc3RfbWFrZTEobWFrZVN0cmluZygk MSkpOworCQkJCQlpZiAoJDIpCisJCQkJCQkgICQkID0gbGlzdF9jb25jYXQoJCQsCisJCQkJCQkJ CQkJICAgY2hlY2tfaW5kaXJlY3Rpb24oJDIsIHl5c2Nhbm5lcikpOworCQkJCX0KKwogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAgKgogICoJCVFVRVJZOgpAQCAtMTUxMjcsNiArMTUyNzgsNyBAQCB1 bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IExBUkdFX1AKIAkJCXwgTEFTVF9QCiAJCQl8IExFQUtQ Uk9PRgorCQkJfCBMRVQKIAkJCXwgTEVWRUwKIAkJCXwgTElTVEVOCiAJCQl8IExPQUQKQEAgLTE1 Mjc1LDYgKzE1NDI3LDggQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBWQUxJREFURQogCQkJ fCBWQUxJREFUT1IKIAkJCXwgVkFMVUVfUAorCQkJfCBWQVJJQUJMRQorCQkJfCBWQVJJQUJMRVMK IAkJCXwgVkFSWUlORwogCQkJfCBWRVJTSU9OX1AKIAkJCXwgVklFVwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Fn Zy5jCmluZGV4IDYxNzI3ZTFkNzEuLjY4MjM2MTJmYmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9hZ2cuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMK QEAgLTM0OSw2ICszNDksNyBAQCBjaGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNl U3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCUFzc2VydChmYWxzZSk7CQkvKiBjYW4ndCBo YXBwZW4gKi8KIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9PVEhFUjoKKwkJY2FzZSBFWFBS X0tJTkRfTEVUOgogCiAJCQkvKgogCQkJICogQWNjZXB0IGFnZ3JlZ2F0ZS9ncm91cGluZyBoZXJl OyBjYWxsZXIgbXVzdCB0aHJvdyBlcnJvciBpZgpAQCAtNDY1LDYgKzQ2Niw3IEBAIGNoZWNrX2Fn Z2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQog CQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJf S0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQljYXNlIEVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxU OgogCiAJCQlpZiAoaXNBZ2cpCiAJCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUg bm90IGFsbG93ZWQgaW4gREVGQVVMVCBleHByZXNzaW9ucyIpOwpAQCAtODc5LDYgKzg4MSw3IEBA IHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVuYyAq d2Z1bmMsCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNh c2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNhc2UgRVhQUl9LSU5EX1ZBUklBQkxF X0RFRkFVTFQ6CiAJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBp biBERUZBVUxUIGV4cHJlc3Npb25zIik7CiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfSU5E RVhfRVhQUkVTU0lPTjoKQEAgLTkwMiw2ICs5MDUsOCBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2Fs bChQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJfS0lO RF9DQUxMX0FSR1VNRU5UOgogCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFs bG93ZWQgaW4gQ0FMTCBhcmd1bWVudHMiKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9M RVQ6CisJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBMRVQg c3RhdGVtZW50Iik7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRl ZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4 IDM4NWU1NGE5YjYuLjZlYTE5NGI1NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMTYs NiArMTYsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5v ZGVzL21ha2VmdW5jcy5oIgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdGUu aCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3Rh bXAuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3htbC5o IgogCiAKQEAgLTExNiw2ICsxMTgsOSBAQCBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtWG1sU2VyaWFs aXplKFBhcnNlU3RhdGUgKnBzdGF0ZSwgWG1sU2VyaWFsaXplICp4cyk7CiBzdGF0aWMgTm9kZSAq dHJhbnNmb3JtQm9vbGVhblRlc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBCb29sZWFuVGVzdCAqYik7 CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQ3VycmVudE9mRXhwcihQYXJzZVN0YXRlICpwc3RhdGUs IEN1cnJlbnRPZkV4cHIgKmNleHByKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Db2x1bW5SZWYo UGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpOworc3RhdGljIE5vZGUgKm1ha2VQ YXJhbVNjaGVtYVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCSAgT2lkIHZhcmlk LCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJCQkJCSAgY2hhciAqYXR0cm5hbWUsIGludCBs b2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtV2hvbGVSb3dSZWYoUGFyc2VTdGF0ZSAq cHN0YXRlLCBSYW5nZVRibEVudHJ5ICpydGUsCiAJCQkJCSBpbnQgbG9jYXRpb24pOwogc3RhdGlj IE5vZGUgKnRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVj dGlvbiAqaW5kKTsKQEAgLTUxMiw2ICs1MTcsMTAgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCWNoYXIJICAgKm5zcG5hbWUgPSBOVUxM OwogCWNoYXIJICAgKnJlbG5hbWUgPSBOVUxMOwogCWNoYXIJICAgKmNvbG5hbWUgPSBOVUxMOwor CU9pZAkJCXZhcmlkID0gSW52YWxpZE9pZDsKKwljaGFyCSAgICphdHRybmFtZSA9IE5VTEw7CisJ Ym9vbAkJbm90X3VuaXF1ZTsKKwogCVJhbmdlVGJsRW50cnkgKnJ0ZTsKIAlpbnQJCQlsZXZlbHNf dXA7CiAJZW51bQpAQCAtNzQ5LDYgKzc1OCwxNSBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VT dGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJCQlicmVhazsKIAl9CiAKKwl2YXJpZCA9 IGlkZW50aWZ5X3ZhcmlhYmxlKGNyZWYtPmZpZWxkcywgJmF0dHJuYW1lLCAmbm90X3VuaXF1ZSk7 CisKKwlpZiAobm90X3VuaXF1ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0FNQklHVU9VU19QQVJBTUVURVIpLAorCQkJCSBlcnJtc2coInNjaGVtYSB2YXJpYWJsZSBy ZWZlcmVuY2UgXCIlc1wiIGlzIGFtYmlndW91cyIsCisJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKGNy ZWYtPmZpZWxkcykpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5sb2Nh dGlvbikpKTsKKwogCS8qCiAJICogTm93IGdpdmUgdGhlIFBvc3RQYXJzZUNvbHVtblJlZkhvb2ss IGlmIGFueSwgYSBjaGFuY2UuICBXZSBwYXNzIHRoZQogCSAqIHRyYW5zbGF0aW9uLXNvLWZhciBz byB0aGF0IGl0IGNhbiB0aHJvdyBhbiBlcnJvciBpZiBpdCB3aXNoZXMgaW4gdGhlCkBAIC03NzMs NiArNzkxLDcxIEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVt blJlZiAqY3JlZikKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGNyZWYtPmxvY2F0 aW9uKSkpOwogCX0KIAorCWlmIChPaWRJc1ZhbGlkKHZhcmlkKSkKKwl7CisJCU9pZAkJdHlwaWQ7 CisJCWludDMyCXR5cG1vZDsKKworCQlnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9kKHZh cmlkLCAmdHlwaWQsICZ0eXBtb2QpOworCisJCWlmIChub2RlICE9IE5VTEwpCisJCXsKKwkJCS8q CisJCQkgKiBzb21lIGNvbGxpc2lvbiBjYW4gYmUgc29sdmVkIHNpbXBseSBoZXJlIHRvIHJlZHVj ZSBlcnJvcnMKKwkJCSAqIGJhc2VkIG9uIHNpbXBseSBleGlzdGVuY2Ugb2Ygc29tZSB2YXJpYWJs ZXMuIE9mdGVuIGVycm9yCisJCQkgKiBjYW4gYmUgdXNpbmcgYWxpYXMgc2FtZSBsaWtlIHZhcmlh YmxlIG5hbWUuIEluIHRoaXMgY2FzZSwKKwkJCSAqIHdoZW4gd2UgZm91bmQgY29sdW1uIHJlZmVy ZW5jZSwgYW5kIHdlIGZvdW5kIHJlZmVyZW5jZSB0bworCQkJICogcG9zc2libGUgY29tcG9zaXRl IHZhcmlhYmxlLCBidXQgdGhlIHZhcmlhYmxlIGlzIG5vdCBjb21wb3NpdGUsCisJCQkgKiB0aGVu IHdlIGNhbiBpZ25vcmUgdGhlIHZhcmlhYmxlIGFzIHNpbXBseSBpbXByb3BlciwgYW5kIHdlCisJ CQkgKiB1c2UgY29sdW1uIHJlZmVyZW5jZSBvbmx5LgorCQkJICovCisJCQlpZiAoYXR0cm5hbWUp CisJCQl7CisJCQkJaWYgKHR5cGVfaXNfcm93dHlwZSh0eXBpZCkpCisJCQkJeworCQkJCQlUdXBs ZURlc2MJCXR1cGRlc2M7CisJCQkJCWJvb2wJCQlmb3VuZCA9IGZhbHNlOworCQkJCQlpbnQJCQlp OworCisJCQkJCS8qIHNsb3cgcGFydCwgSSBob3BlIGl0IHdpbGwgbm90IGJlIHRvIG9mdGVuICov CisJCQkJCXR1cGRlc2MgPSBsb29rdXBfcm93dHlwZV90dXBkZXNjKHR5cGlkLCB0eXBtb2QpOwor CQkJCQlmb3IgKGkgPSAwOyBpIDwgdHVwZGVzYy0+bmF0dHM7IGkrKykKKwkJCQkJeworCQkJCQkJ aWYgKG5hbWVzdHJjbXAoJihUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGkpLT5hdHRuYW1lKSwgYXR0 cm5hbWUpID09IDAgJiYKKwkJCQkJCQkJIVR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSktPmF0dGlz ZHJvcHBlZCkKKwkJCQkJCXsKKwkJCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJ CQkJCQl9CisJCQkJCX0KKworCQkJCQlGcmVlVHVwbGVEZXNjKHR1cGRlc2MpOworCisJCQkJCS8q IHRoZXJlIGFyZSBub3QgY29tcG9zaXRlIHZhcmlhYmxlIHdpdGggdGhpcyBmaWVsZCAqLworCQkJ CQlpZiAoIWZvdW5kKQorCQkJCQkJdmFyaWQgPSBJbnZhbGlkT2lkOworCQkJCX0KKwkJCQllbHNl CisJCQkJCS8qIHRoZXJlIGFyZSBub3QgY29tcG9zaXRlIHZhcmlhYmxlIHdpdGggdGhpcyBuYW1l ICovCisJCQkJCXZhcmlkID0gSW52YWxpZE9pZDsKKwkJCX0KKworCQkJLyogUmFpc2UgZXJyb3Ig aWYgdmFyaWQgaXMgc3RpbGwgdmFsaWQuIEl0IHNob3VsZCBiZSByZWFsbHkgYW1pZ29udW91cyAq LworCQkJaWYgKE9pZElzVmFsaWQodmFyaWQpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQko ZXJyY29kZShFUlJDT0RFX0FNQklHVU9VU19DT0xVTU4pLAorCQkJCQkJIGVycm1zZygiY29sdW1u IHJlZmVyZW5jZSBcIiVzXCIgaXMgYW1iaWd1b3VzIiwKKwkJCQkJCQkJTmFtZUxpc3RUb1N0cmlu ZyhjcmVmLT5maWVsZHMpKSwKKwkJCQkJCSBlcnJkZXRhaWwoIlRoZSBxdWFsaWZpZWQgaWRlbnRp ZmllciBjYW4gYmUgY29sdW1uIHJlZmVyZW5jZSBvciBzY2hlbWEgdmFyaWFibGUgcmVmZXJlbmNl IiksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3JlZi0+bG9jYXRpb24pKSk7 CisJCX0KKworCQlpZiAoT2lkSXNWYWxpZCh2YXJpZCkpCisJCQlub2RlID0gbWFrZVBhcmFtU2No ZW1hVmFyaWFibGUocHN0YXRlLAorCQkJCQkJCQkJCQl2YXJpZCwgdHlwaWQsIHR5cG1vZCwKKwkJ CQkJCQkJCQkJYXR0cm5hbWUsIGNyZWYtPmxvY2F0aW9uKTsKKwl9CisKIAkvKgogCSAqIFRocm93 IGVycm9yIGlmIG5vIHRyYW5zbGF0aW9uIGZvdW5kLgogCSAqLwpAQCAtODA3LDYgKzg5MCw1OSBA QCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYp CiAJcmV0dXJuIG5vZGU7CiB9CiAKKy8qCisgKiBHZW5lcmF0ZSBwYXJhbSB2YXJpYWJsZSBmb3Ig cmVmZXJlbmNlIHRvIHNjaGVtYSB2YXJpYWJsZQorICovCitzdGF0aWMgTm9kZSAqCittYWtlUGFy YW1TY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIE9pZCB2YXJpZCwgT2lkIHR5cGlk LCBpbnQzMiB0eXBtb2QsIGNoYXIgKmF0dHJuYW1lLCBpbnQgbG9jYXRpb24pCit7CisJUGFyYW0J ICAgKnBhcmFtOworCisJcGFyYW0gPSBtYWtlTm9kZShQYXJhbSk7CisKKwlwYXJhbS0+cGFyYW1r aW5kID0gUEFSQU1fVkFSSUFCTEU7CisJcGFyYW0tPnBhcmFtaWQgPSB2YXJpZDsKKwlwYXJhbS0+ cGFyYW10eXBlID0gdHlwaWQ7CisJcGFyYW0tPnBhcmFtdHlwbW9kID0gdHlwbW9kOworCisJaWYg KGF0dHJuYW1lICE9IE5VTEwpCisJeworCQlUdXBsZURlc2MJCXR1cGRlc2M7CisJCWludAkJaTsK KworCQl0dXBkZXNjID0gbG9va3VwX3Jvd3R5cGVfdHVwZGVzYyh0eXBpZCwgdHlwbW9kKTsKKwor CQlmb3IgKGkgPSAwOyBpIDwgdHVwZGVzYy0+bmF0dHM7IGkrKykKKwkJeworCQkJRm9ybV9wZ19h dHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBpKTsKKworCQkJaWYgKHN0cmNt cChhdHRybmFtZSwgTmFtZVN0cihhdHQtPmF0dG5hbWUpKSA9PSAwICYmCisJCQkJIWF0dC0+YXR0 aXNkcm9wcGVkKQorCQkJeworCQkJCS8qIFN1Y2Nlc3MsIHNvIGdlbmVyYXRlIGEgRmllbGRTZWxl Y3QgZXhwcmVzc2lvbiAqLworCQkJCUZpZWxkU2VsZWN0ICpmc2VsZWN0ID0gbWFrZU5vZGUoRmll bGRTZWxlY3QpOworCisJCQkJZnNlbGVjdC0+YXJnID0gKEV4cHIgKikgcGFyYW07CisJCQkJZnNl bGVjdC0+ZmllbGRudW0gPSBpICsgMTsKKwkJCQlmc2VsZWN0LT5yZXN1bHR0eXBlID0gYXR0LT5h dHR0eXBpZDsKKwkJCQlmc2VsZWN0LT5yZXN1bHR0eXBtb2QgPSBhdHQtPmF0dHR5cG1vZDsKKwkJ CQkvKiBzYXZlIGF0dHJpYnV0ZSdzIGNvbGxhdGlvbiBmb3IgcGFyc2VfY29sbGF0ZS5jICovCisJ CQkJZnNlbGVjdC0+cmVzdWx0Y29sbGlkID0gYXR0LT5hdHRjb2xsYXRpb247CisKKwkJCQlSZWxl YXNlVHVwbGVEZXNjKHR1cGRlc2MpOworCQkJCXJldHVybiAoTm9kZSAqKSBmc2VsZWN0OworCQkJ fQorCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5F RF9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBpZGVudGlmeSBjb2x1bW4gXCIlc1wi IGluIHZhcmlhYmxlIiwgYXR0cm5hbWUpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBsb2NhdGlvbikpKTsKKwl9CisKKwlyZXR1cm4gKE5vZGUgKikgcGFyYW07Cit9CisKIHN0YXRp YyBOb2RlICoKIHRyYW5zZm9ybVBhcmFtUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW1SZWYg KnByZWYpCiB7CkBAIC0xODE4LDYgKzE5NTQsNyBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2FzZSBFWFBSX0tJTkRfUkVUVVJOSU5H OgogCQljYXNlIEVYUFJfS0lORF9WQUxVRVM6CiAJCWNhc2UgRVhQUl9LSU5EX1ZBTFVFU19TSU5H TEU6CisJCWNhc2UgRVhQUl9LSU5EX0xFVDoKIAkJCS8qIG9rYXkgKi8KIAkJCWJyZWFrOwogCQlj YXNlIEVYUFJfS0lORF9DSEVDS19DT05TVFJBSU5UOgpAQCAtMTgyNiw2ICsxOTYzLDcgQEAgdHJh bnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1YmxpbmspCiAJCQli cmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5E X0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNhc2UgRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAJ CQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIERFRkFVTFQgZXhwcmVzc2lvbiIpOwog CQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0lOREVYX0VYUFJFU1NJT046CkBAIC0zNDYwLDYg KzM1OTgsNyBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQkJ cmV0dXJuICJDSEVDSyI7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNl IEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQljYXNlIEVYUFJfS0lORF9WQVJJQUJMRV9E RUZBVUxUOgogCQkJcmV0dXJuICJERUZBVUxUIjsKIAkJY2FzZSBFWFBSX0tJTkRfSU5ERVhfRVhQ UkVTU0lPTjoKIAkJCXJldHVybiAiaW5kZXggZXhwcmVzc2lvbiI7CkBAIC0zNDc1LDYgKzM2MTQs OCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQkJcmV0dXJu ICJQQVJUSVRJT04gQlkiOwogCQljYXNlIEVYUFJfS0lORF9DQUxMX0FSR1VNRU5UOgogCQkJcmV0 dXJuICJDQUxMIjsKKwkJY2FzZSBFWFBSX0tJTkRfTEVUOgorCQkJcmV0dXJuICJMRVQiOwogCiAJ CQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUs IHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCA0NDI1NzE1NGI4Li5iMmM5 OTAwZTAwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTIzNDcsNiArMjM0Nyw3IEBAIGNo ZWNrX3NyZl9jYWxsX3BsYWNlbWVudChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3Jm LCBpbnQgbG9jYXRpb24pCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFV TFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNhc2UgRVhQUl9LSU5E X1ZBUklBQkxFX0RFRkFVTFQ6CiAJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBh cmUgbm90IGFsbG93ZWQgaW4gREVGQVVMVCBleHByZXNzaW9ucyIpOwogCQkJYnJlYWs7CiAJCWNh c2UgRVhQUl9LSU5EX0lOREVYX0VYUFJFU1NJT046CkBAIC0yMzcwLDYgKzIzNzEsOSBAQCBjaGVj a19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0X3NyZiwg aW50IGxvY2F0aW9uKQogCQljYXNlIEVYUFJfS0lORF9DQUxMX0FSR1VNRU5UOgogCQkJZXJyID0g Xygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBTEwgYXJndW1l bnRzIik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfTEVUOgorCQkJZXJyID0gXygic2V0 LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENBTEwgYXJndW1lbnRzIik7 CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVm YXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmlu ZGV4IDQ5MzJlNTgwMjIuLmM2MGZlMDExZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMK QEAgLTM1LDE2ICszNSw2IEBACiAKIHN0YXRpYyB2b2lkIG1hcmtUYXJnZXRMaXN0T3JpZ2luKFBh cnNlU3RhdGUgKnBzdGF0ZSwgVGFyZ2V0RW50cnkgKnRsZSwKIAkJCQkJIFZhciAqdmFyLCBpbnQg bGV2ZWxzdXApOwotc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkJICAgTm9kZSAqYmFzZW5vZGUsCi0JCQkJCQkJICAg Y29uc3QgY2hhciAqdGFyZ2V0TmFtZSwKLQkJCQkJCQkgICBib29sIHRhcmdldElzQXJyYXksCi0J CQkJCQkJICAgT2lkIHRhcmdldFR5cGVJZCwKLQkJCQkJCQkgICBpbnQzMiB0YXJnZXRUeXBNb2Qs Ci0JCQkJCQkJICAgT2lkIHRhcmdldENvbGxhdGlvbiwKLQkJCQkJCQkgICBMaXN0Q2VsbCAqaW5k aXJlY3Rpb24sCi0JCQkJCQkJICAgTm9kZSAqcmhzLAotCQkJCQkJCSAgIGludCBsb2NhdGlvbik7 CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQXNzaWdubWVudFN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCQkJCSAgTm9kZSAqYmFzZW5vZGUsCiAJCQkJCQkJICBjb25zdCBjaGFyICp0 YXJnZXROYW1lLApAQCAtNjcyLDcgKzY2Miw3IEBAIHVwZGF0ZVRhcmdldExpc3RFbnRyeShQYXJz ZVN0YXRlICpwc3RhdGUsCiAgKiBtaWdodCB3YW50IHRvIGRlY29yYXRlIGluZGlyZWN0aW9uIGNl bGxzIHdpdGggdGhlaXIgb3duIGxvY2F0aW9uIGluZm8sCiAgKiBpbiB3aGljaCBjYXNlIHRoZSBs b2NhdGlvbiBhcmd1bWVudCBjb3VsZCBwcm9iYWJseSBiZSBkcm9wcGVkLikKICAqLwotc3RhdGlj IE5vZGUgKgorTm9kZSAqCiB0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCQkJCQkJCSAgIE5vZGUgKmJhc2Vub2RlLAogCQkJCQkJCSAgIGNvbnN0IGNo YXIgKnRhcmdldE5hbWUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVI YW5kbGVyLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggMzEy M2VlMjc0ZC4uMTA3MzdkNDIyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdy aXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpA QCAtMzM1MCw3ICszMzUwLDcgQEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRyZWUsIExpc3Qg KnJld3JpdGVfZXZlbnRzKQogCSAqIGdldCBleGVjdXRlZC4gIEFsc28sIHV0aWxpdGllcyBhcmVu J3QgcmV3cml0dGVuIGF0IGFsbCAoZG8gd2Ugc3RpbGwKIAkgKiBuZWVkIHRoYXQgY2hlY2s/KQog CSAqLwotCWlmIChldmVudCAhPSBDTURfU0VMRUNUICYmIGV2ZW50ICE9IENNRF9VVElMSVRZKQor CWlmIChldmVudCAhPSBDTURfU0VMRUNUICYmIGV2ZW50ICE9IENNRF9VVElMSVRZICYmIGV2ZW50 ICE9IENNRF9QTEFOX1VUSUxJVFkpCiAJewogCQlpbnQJCQlyZXN1bHRfcmVsYXRpb247CiAJCVJh bmdlVGJsRW50cnkgKnJ0X2VudHJ5OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9y b3dzZWN1cml0eS5jIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jCmluZGV4IDYx ZWYzOTZkOGEuLjZhMDY4YWY3OTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcm93 c2VjdXJpdHkuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jvd3NlY3VyaXR5LmMKQEAgLTIx Miw3ICsyMTIsNyBAQCBnZXRfcm93X3NlY3VyaXR5X3BvbGljaWVzKFF1ZXJ5ICpyb290LCBSYW5n ZVRibEVudHJ5ICpydGUsIGludCBydF9pbmRleCwKIAl9CiAKIAkvKgotCSAqIEZvciBTRUxFQ1Qs IFVQREFURSBhbmQgREVMRVRFLCBhZGQgc2VjdXJpdHkgcXVhbHMgdG8gZW5mb3JjZSB0aGUgVVNJ TkcKKwkgKiBGb3IgU0VMRUNULCBMRVQsIFVQREFURSBhbmQgREVMRVRFLCBhZGQgc2VjdXJpdHkg cXVhbHMgdG8gZW5mb3JjZSB0aGUgVVNJTkcKIAkgKiBwb2xpY2llcy4gIFRoZXNlIHNlY3VyaXR5 IHF1YWxzIGNvbnRyb2wgYWNjZXNzIHRvIGV4aXN0aW5nIHRhYmxlIHJvd3MuCiAJICogUmVzdHJp Y3RpdmUgcG9saWNpZXMgYXJlIGNvbWJpbmVkIHRvZ2V0aGVyIHVzaW5nIEFORCwgYW5kIHBlcm1p c3NpdmUKIAkgKiBwb2xpY2llcyBhcmUgY29tYmluZWQgdG9nZXRoZXIgdXNpbmcgT1IuCkBAIC0y MjIsNiArMjIyLDcgQEAgZ2V0X3Jvd19zZWN1cml0eV9wb2xpY2llcyhRdWVyeSAqcm9vdCwgUmFu Z2VUYmxFbnRyeSAqcnRlLCBpbnQgcnRfaW5kZXgsCiAJCQkJCQkJICAmcmVzdHJpY3RpdmVfcG9s aWNpZXMpOwogCiAJaWYgKGNvbW1hbmRUeXBlID09IENNRF9TRUxFQ1QgfHwKKwkJY29tbWFuZFR5 cGUgPT0gQ01EX1BMQU5fVVRJTElUWSB8fAogCQljb21tYW5kVHlwZSA9PSBDTURfVVBEQVRFIHx8 CiAJCWNvbW1hbmRUeXBlID09IENNRF9ERUxFVEUpCiAJCWFkZF9zZWN1cml0eV9xdWFscyhydF9p bmRleCwKQEAgLTQyMyw2ICs0MjQsNyBAQCBnZXRfcG9saWNpZXNfZm9yX3JlbGF0aW9uKFJlbGF0 aW9uIHJlbGF0aW9uLCBDbWRUeXBlIGNtZCwgT2lkIHVzZXJfaWQsCiAJCQlzd2l0Y2ggKGNtZCkK IAkJCXsKIAkJCQljYXNlIENNRF9TRUxFQ1Q6CisJCQkJY2FzZSBDTURfUExBTl9VVElMSVRZOgog CQkJCQlpZiAocG9saWN5LT5wb2xjbWQgPT0gQUNMX1NFTEVDVF9DSFIpCiAJCQkJCQljbWRfbWF0 Y2hlcyA9IHRydWU7CiAJCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9k ZXN0LmMgYi9zcmMvYmFja2VuZC90Y29wL2Rlc3QuYwppbmRleCBjOTVhNGQ1MTlkLi40N2ZiMGYz OGIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL2Rlc3QuYworKysgYi9zcmMvYmFja2Vu ZC90Y29wL2Rlc3QuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2Z1bmN0 aW9ucy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RxdWV1ZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9y L3RzdG9yZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIu aCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0Lmgi CiAjaW5jbHVkZSAidXRpbHMvcG9ydGFsLmgiCkBAIC0xNDMsNiArMTQ0LDkgQEAgQ3JlYXRlRGVz dFJlY2VpdmVyKENvbW1hbmREZXN0IGRlc3QpCiAKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToKIAkJ CXJldHVybiBDcmVhdGVUdXBsZVF1ZXVlRGVzdFJlY2VpdmVyKE5VTEwpOworCisJCWNhc2UgRGVz dFZhcmlhYmxlOgorCQkJcmV0dXJuIENyZWF0ZVZhcmlhYmxlRGVzdFJlY2VpdmVyKCk7CiAJfQog CiAJLyogc2hvdWxkIG5ldmVyIGdldCBoZXJlICovCkBAIC0xNzgsNiArMTgyLDcgQEAgRW5kQ29t bWFuZChjb25zdCBjaGFyICpjb21tYW5kVGFnLCBDb21tYW5kRGVzdCBkZXN0KQogCQljYXNlIERl c3RTUUxGdW5jdGlvbjoKIAkJY2FzZSBEZXN0VHJhbnNpZW50UmVsOgogCQljYXNlIERlc3RUdXBs ZVF1ZXVlOgorCQljYXNlIERlc3RWYXJpYWJsZToKIAkJCWJyZWFrOwogCX0KIH0KQEAgLTIyMiw2 ICsyMjcsNyBAQCBOdWxsQ29tbWFuZChDb21tYW5kRGVzdCBkZXN0KQogCQljYXNlIERlc3RTUUxG dW5jdGlvbjoKIAkJY2FzZSBEZXN0VHJhbnNpZW50UmVsOgogCQljYXNlIERlc3RUdXBsZVF1ZXVl OgorCQljYXNlIERlc3RWYXJpYWJsZToKIAkJCWJyZWFrOwogCX0KIH0KQEAgLTI2OCw2ICsyNzQs NyBAQCBSZWFkeUZvclF1ZXJ5KENvbW1hbmREZXN0IGRlc3QpCiAJCWNhc2UgRGVzdFNRTEZ1bmN0 aW9uOgogCQljYXNlIERlc3RUcmFuc2llbnRSZWw6CiAJCWNhc2UgRGVzdFR1cGxlUXVldWU6CisJ CWNhc2UgRGVzdFZhcmlhYmxlOgogCQkJYnJlYWs7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCBi NTgwNGY2NGFkLi4zNTE5OWZkMGRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxp dHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtNDcsNiArNDcsNyBAQAog I2luY2x1ZGUgImNvbW1hbmRzL3Byb2NsYW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hY21kcy5oIgorI2luY2x1ZGUg ImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VjbGFiZWwu aCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuaCIKQEAgLTM0NCw3ICszNDUsNyBAQCBQcm9jZXNzVXRpbGl0eShQbGFu bmVkU3RtdCAqcHN0bXQsCiAJCQkgICBjaGFyICpjb21wbGV0aW9uVGFnKQogewogCUFzc2VydChJ c0EocHN0bXQsIFBsYW5uZWRTdG10KSk7Ci0JQXNzZXJ0KHBzdG10LT5jb21tYW5kVHlwZSA9PSBD TURfVVRJTElUWSk7CisJQXNzZXJ0KHBzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSB8 fCBwc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1BMQU5fVVRJTElUWSk7CiAJQXNzZXJ0KHF1ZXJ5 U3RyaW5nICE9IE5VTEwpOwkvKiByZXF1aXJlZCBhcyBvZiA4LjQgKi8KIAogCS8qCkBAIC05MTUs NiArOTE2LDE0IEBAIHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwK IAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCXsKKwkJCQlkb0xldFN0 bXQocHN0bXQsIHBhcmFtcywgcXVlcnlFbnYsIHF1ZXJ5U3RyaW5nKTsKKwkJCQlpZiAoY29tcGxl dGlvblRhZykKKwkJCQkJc3RyY3B5KGNvbXBsZXRpb25UYWcsICJMRVQiKTsKKwkJCX0KKwkJCWJy ZWFrOworCiAJCWRlZmF1bHQ6CiAJCQkvKiBBbGwgb3RoZXIgc3RhdGVtZW50IHR5cGVzIGhhdmUg ZXZlbnQgdHJpZ2dlciBzdXBwb3J0ICovCiAJCQlQcm9jZXNzVXRpbGl0eVNsb3cocHN0YXRlLCBw c3RtdCwgcXVlcnlTdHJpbmcsCkBAIC0xMjIxLDYgKzEyMzAsMTAgQEAgUHJvY2Vzc1V0aWxpdHlT bG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQl9CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgVF9D cmVhdGVTY2hlbWFWYXJTdG10OgorCQkJCWFkZHJlc3MgPSBEZWZpbmVTY2hlbWFWYXJpYWJsZShw c3RhdGUsIChDcmVhdGVTY2hlbWFWYXJTdG10ICopIHBhcnNldHJlZSk7CisJCQkJYnJlYWs7CisK IAkJCQkvKgogCQkJCSAqICoqKioqKioqKioqKiogb2JqZWN0IGNyZWF0aW9uIC8gZGVzdHJ1Y3Rp b24gKioqKioqKioqKioqKioKIAkJCQkgKi8KQEAgLTIwNTUsNiArMjA2OCw5IEBAIEFsdGVyT2Jq ZWN0VHlwZUNvbW1hbmRUYWcoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9TVEFU SVNUSUNfRVhUOgogCQkJdGFnID0gIkFMVEVSIFNUQVRJU1RJQ1MiOwogCQkJYnJlYWs7CisJCWNh c2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJdGFnID0gIkFMVEVSIFZBUklBQkxFIjsKKwkJCWJyZWFr OwogCQlkZWZhdWx0OgogCQkJdGFnID0gIj8/PyI7CiAJCQlicmVhazsKQEAgLTIxMDQsNiArMjEy MCwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCXRhZyA9ICJTRUxF Q1QiOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQl0YWcgPSAiTEVUIjsKKwkJ CWJyZWFrOworCiAJCQkvKiB1dGlsaXR5IHN0YXRlbWVudHMgLS0tIHNhbWUgd2hldGhlciByYXcg b3IgY29va2VkICovCiAJCWNhc2UgVF9UcmFuc2FjdGlvblN0bXQ6CiAJCQl7CkBAIC0yMzU4LDYg KzIzNzgsOSBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQljYXNlIE9C SkVDVF9TVEFUSVNUSUNfRVhUOgogCQkJCQl0YWcgPSAiRFJPUCBTVEFUSVNUSUNTIjsKIAkJCQkJ YnJlYWs7CisJCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJCXRhZyA9ICJEUk9QIFZBUklB QkxFIjsKKwkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJdGFnID0gIj8/PyI7CiAJCQl9 CkBAIC0yNjM5LDYgKzI2NjIsOSBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkK IAkJCQljYXNlIERJU0NBUkRfU0VRVUVOQ0VTOgogCQkJCQl0YWcgPSAiRElTQ0FSRCBTRVFVRU5D RVMiOwogCQkJCQlicmVhazsKKwkJCQljYXNlIERJU0NBUkRfVkFSSUFCTEVTOgorCQkJCQl0YWcg PSAiRElTQ0FSRCBWQVJJQUJMRVMiOworCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgogCQkJCQl0 YWcgPSAiPz8/IjsKIAkJCX0KQEAgLTI4NDQsNiArMjg3MCw3IEBAIENyZWF0ZUNvbW1hbmRUYWco Tm9kZSAqcGFyc2V0cmVlKQogCQkJCQkJdGFnID0gIkRFTEVURSI7CiAJCQkJCQlicmVhazsKIAkJ CQkJY2FzZSBDTURfVVRJTElUWToKKwkJCQkJY2FzZSBDTURfUExBTl9VVElMSVRZOgogCQkJCQkJ dGFnID0gQ3JlYXRlQ29tbWFuZFRhZyhzdG10LT51dGlsaXR5U3RtdCk7CiAJCQkJCQlicmVhazsK IAkJCQkJZGVmYXVsdDoKQEAgLTI5MTUsNiArMjk0MiwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5v ZGUgKnBhcnNldHJlZSkKIAkJCX0KIAkJCWJyZWFrOwogCisJCWNhc2UgVF9DcmVhdGVTY2hlbWFW YXJTdG10OgorCQkJdGFnID0gIkNSRUFURSBWQVJJQUJMRSI7CisJCQlicmVhazsKKwogCQlkZWZh dWx0OgogCQkJZWxvZyhXQVJOSU5HLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLAogCQkJ CSAoaW50KSBub2RlVGFnKHBhcnNldHJlZSkpOwpAQCAtMjk2MSw2ICsyOTkyLDEwIEBAIEdldENv bW1hbmRMb2dMZXZlbChOb2RlICpwYXJzZXRyZWUpCiAJCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJ CQlicmVhazsKIAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCWxldiA9IExPR1NUTVRfQUxMOworCQkJ YnJlYWs7CisKIAkJCS8qIHV0aWxpdHkgc3RhdGVtZW50cyAtLS0gc2FtZSB3aGV0aGVyIHJhdyBv ciBjb29rZWQgKi8KIAkJY2FzZSBUX1RyYW5zYWN0aW9uU3RtdDoKIAkJCWxldiA9IExPR1NUTVRf QUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2FjbC5jCmluZGV4IGE0NWUwOTNkZTcuLjk1MmMwZDk2MjggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvYWNsLmMKQEAgLTMxNSw2ICszMTUsMTIgQEAgYWNscGFyc2UoY29uc3QgY2hhciAqcywgQWNs SXRlbSAqYWlwKQogCQkJY2FzZSBBQ0xfQ09OTkVDVF9DSFI6CiAJCQkJcmVhZCA9IEFDTF9DT05O RUNUOwogCQkJCWJyZWFrOworCQkJY2FzZSBBQ0xfUkVBRF9DSFI6CisJCQkJcmVhZCA9IEFDTF9S RUFEOworCQkJCWJyZWFrOworCQkJY2FzZSBBQ0xfV1JJVEVfQ0hSOgorCQkJCXJlYWQgPSBBQ0xf V1JJVEU7CisJCQkJYnJlYWs7CiAJCQljYXNlICdSJzoJCQkvKiBpZ25vcmUgb2xkIFJVTEUgcHJp dmlsZWdlcyAqLwogCQkJCXJlYWQgPSAwOwogCQkJCWJyZWFrOwpAQCAtODA4LDYgKzgxNCwxMCBA QCBhY2xkZWZhdWx0KE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIG93bmVySWQpCiAJCQl3b3JsZF9k ZWZhdWx0ID0gQUNMX1VTQUdFOwogCQkJb3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1RZ UEU7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQl3b3JsZF9kZWZhdWx0 ID0gQUNMX05PX1JJR0hUUzsKKwkJCW93bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hUU19WQVJJ QUJMRTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBvYmp0eXBlOiAlZCIsIChpbnQpIG9ianR5cGUpOwogCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9O T19SSUdIVFM7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KQEAgLTkwMyw2ICs5MTMsOSBAQCBh Y2xkZWZhdWx0X3NxbChQR19GVU5DVElPTl9BUkdTKQogCQljYXNlICdUJzoKIAkJCW9ianR5cGUg PSBPQkpFQ1RfVFlQRTsKIAkJCWJyZWFrOworCQljYXNlICdWJzoKKwkJCW9ianR5cGUgPSBPQkpF Q1RfVkFSSUFCTEU7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgb2JqdHlwZSBhYmJyZXZpYXRpb246ICVjIiwgb2JqdHlwZWMpOwogCX0KQEAgLTE2 MjcsNiArMTY0MCwxMCBAQCBjb252ZXJ0X3ByaXZfc3RyaW5nKHRleHQgKnByaXZfdHlwZV90ZXh0 KQogCQlyZXR1cm4gQUNMX0NPTk5FQ1Q7CiAJaWYgKHBnX3N0cmNhc2VjbXAocHJpdl90eXBlLCAi UlVMRSIpID09IDApCiAJCXJldHVybiAwOwkJCQkvKiBpZ25vcmUgb2xkIFJVTEUgcHJpdmlsZWdl cyAqLworCWlmIChwZ19zdHJjYXNlY21wKHByaXZfdHlwZSwgIlJFQUQiKSA9PSAwKQorCQlyZXR1 cm4gQUNMX1JFQUQ7CisJaWYgKHBnX3N0cmNhc2VjbXAocHJpdl90eXBlLCAiV1JJVEUiKSA9PSAw KQorCQlyZXR1cm4gQUNMX1dSSVRFOwogCiAJZXJlcG9ydChFUlJPUiwKIAkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtMTcyMSw2ICsxNzM4LDEwIEBAIGNv bnZlcnRfYWNscmlnaHRfdG9fc3RyaW5nKGludCBhY2xyaWdodCkKIAkJCXJldHVybiAiVEVNUE9S QVJZIjsKIAkJY2FzZSBBQ0xfQ09OTkVDVDoKIAkJCXJldHVybiAiQ09OTkVDVCI7CisJCWNhc2Ug QUNMX1JFQUQ6CisJCQlyZXR1cm4gIlJFQUQiOworCQljYXNlIEFDTF9XUklURToKKwkJCXJldHVy biAiV1JJVEUiOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhY2xy aWdodDogJWQiLCBhY2xyaWdodCk7CiAJCQlyZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYwppbmRleCAwM2U5YTI4YTYzLi5jYzhmMzMyNmFjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0 aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIK ICNpbmNsdWRlICJjb21tb24va2V5d29yZHMuaCIKQEAgLTczNjIsNiArNzM2MywxNCBAQCBnZXRf cGFyYW1ldGVyKFBhcmFtICpwYXJhbSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCQlyZXR1 cm47CiAJfQogCisJLyogdHJhbnNsYXRlIHBhcmFtaWQgdG8gb3JpZ2luYWwgc2NoZW1hIHZhcmlh YmxlIG5hbWUgKi8KKwlpZiAocGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9WQVJJQUJMRSkKKwl7 CisJCWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAiJXMiLAorCQkJCQkJCXNjaGVtYV92 YXJpYWJsZV9nZXRfbmFtZShwYXJhbS0+cGFyYW1pZCkpOworCQlyZXR1cm47CisJfQorCiAJLyoK IAkgKiBOb3QgUEFSQU1fRVhFQywgb3IgY291bGRuJ3QgZmluZCByZWZlcmVudDoganVzdCBwcmlu dCAkTi4KIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNo ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggYmJhNTk1YWQx ZC4uODU4YTZkZDRiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTE2OTEs NiArMTY5MSwxOCBAQCBnZXRfcmVsbmFtZV9yZWxpZChjb25zdCBjaGFyICpyZWxuYW1lLCBPaWQg cmVsbmFtZXNwYWNlKQogCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShyZWxuYW1lc3BhY2UpKTsK IH0KIAorLyoKKyAqIGdldF92YXJuYW1lX3ZhcmlkCisgKgkJR2l2ZW4gbmFtZSBhbmQgbmFtZXNw YWNlIG9mIHZhcmlhYmxlLCBsb29rIHVwIHRoZSBPSUQuCisgKi8KK09pZAorZ2V0X3Zhcm5hbWVf dmFyaWQoY29uc3QgY2hhciAqdmFybmFtZSwgT2lkIHZhcm5hbWVzcGFjZSkKK3sKKwlyZXR1cm4g R2V0U3lzQ2FjaGVPaWQyKFZBUklBQkxFTkFNRU5TUCwKKwkJCQkJCSAgIFBvaW50ZXJHZXREYXR1 bSh2YXJuYW1lKSwKKwkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0odmFybmFtZXNwYWNlKSk7Cit9 CisKICNpZmRlZiBOT1RfVVNFRAogLyoKICAqIGdldF9yZWxuYXR0cwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3N5c2NhY2hlLmMKaW5kZXggMmIzODE3ODJhMy4uMzVkYzMyZjY0OSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9zeXNjYWNoZS5jCkBAIC03Myw2ICs3Myw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5o IgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL2NhdGNhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAgLTk2OCw2ICs5NjksMjggQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBjYWNoZWRlc2MgY2FjaGVpbmZvW10gPSB7CiAJCQkwCiAJCX0sCiAJCTIKKwl9 LAorCXtWYXJpYWJsZVJlbGF0aW9uSWQsCQkJLyogVkFSSUFCTEVOQU1FTlNQICovCisJCVZhcmlh YmxlTmFtZU5zcEluZGV4SWQsCisJCTIsCisJCXsKKwkJCUFudW1fcGdfdmFyaWFibGVfdmFybmFt ZSwKKwkJCUFudW1fcGdfdmFyaWFibGVfdmFybmFtZXNwYWNlLAorCQkJMCwKKwkJCTAKKwkJfSwK KwkJOAorCX0sCisJe1ZhcmlhYmxlUmVsYXRpb25JZCwJCQkvKiBWQVJJQUJMRU9JRCAqLworCQlW YXJpYWJsZU9iamVjdEluZGV4SWQsCisJCTEsCisJCXsKKwkJCU9iamVjdElkQXR0cmlidXRlTnVt YmVyLAorCQkJMCwKKwkJCTAsCisJCQkwCisJCX0sCisJCTgKIAl9CiB9OwogCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMgYi9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKaW5k ZXggMGQxNDdjYjA4ZC4uNmQ5NzkzMWQ4NSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2Nv bW1vbi5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwpAQCAtMjk2LDYgKzI5NiwxMCBA QCBnZXRTY2hlbWFEYXRhKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzUHRyKQogCQl3cml0 ZV9tc2coTlVMTCwgInJlYWRpbmcgc3Vic2NyaXB0aW9uc1xuIik7CiAJZ2V0U3Vic2NyaXB0aW9u cyhmb3V0KTsKIAorCWlmIChnX3ZlcmJvc2UpCisJCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB2 YXJpYWJsZXNcbiIpOworCWdldFZhcmlhYmxlcyhmb3V0KTsKKwogCSpudW1UYWJsZXNQdHIgPSBu dW1UYWJsZXM7CiAJcmV0dXJuIHRibGluZm87CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hp dmVyLmMKaW5kZXggODNjOTc2ZWFmNy4uYzliYzkxY2E2OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXBfYXJjaGl2ZXIuYwpAQCAtMzQ3MSw2ICszNDcxLDcgQEAgX2dldE9iamVjdERlc2NyaXB0aW9u KFBRRXhwQnVmZmVyIGJ1ZiwgVG9jRW50cnkgKnRlLCBBcmNoaXZlSGFuZGxlICpBSCkKIAkJc3Ry Y21wKHR5cGUsICJURVhUIFNFQVJDSCBESUNUSU9OQVJZIikgPT0gMCB8fAogCQlzdHJjbXAodHlw ZSwgIlRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04iKSA9PSAwIHx8CiAJCXN0cmNtcCh0eXBlLCAi U1RBVElTVElDUyIpID09IDAgfHwKKwkJc3RyY21wKHR5cGUsICJWQVJJQUJMRSIpID09IDAgfHwK IAkvKiBub24tc2NoZW1hLXNwZWNpZmllZCBvYmplY3RzICovCiAJCXN0cmNtcCh0eXBlLCAiREFU QUJBU0UiKSA9PSAwIHx8CiAJCXN0cmNtcCh0eXBlLCAiUFJPQ0VEVVJBTCBMQU5HVUFHRSIpID09 IDAgfHwKQEAgLTM2NzAsNyArMzY3MSw4IEBAIF9wcmludFRvY0VudHJ5KEFyY2hpdmVIYW5kbGUg KkFILCBUb2NFbnRyeSAqdGUsIGJvb2wgaXNEYXRhKQogCQkJc3RyY21wKHRlLT5kZXNjLCAiU0VS VkVSIikgPT0gMCB8fAogCQkJc3RyY21wKHRlLT5kZXNjLCAiU1RBVElTVElDUyIpID09IDAgfHwK IAkJCXN0cmNtcCh0ZS0+ZGVzYywgIlBVQkxJQ0FUSU9OIikgPT0gMCB8fAotCQkJc3RyY21wKHRl LT5kZXNjLCAiU1VCU0NSSVBUSU9OIikgPT0gMCkKKwkJCXN0cmNtcCh0ZS0+ZGVzYywgIlNVQlND UklQVElPTiIpID09IDAgfHwKKwkJCXN0cmNtcCh0ZS0+ZGVzYywgIlZBUklBQkxFIikgPT0gMCkK IAkJewogCQkJUFFFeHBCdWZmZXIgdGVtcCA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCmluZGV4IDliYWY3YjJmZGUuLmY4MjVhMDBjOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMjYwLDYg KzI2MCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBQb2xpY3koQXJjaGl2ZSAqZm91dCwgUG9saWN5SW5m byAqcG9saW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwg UHVibGljYXRpb25JbmZvICpwdWJpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBQdWJsaWNhdGlvblRh YmxlKEFyY2hpdmUgKmZvdXQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHVicmluZm8pOwogc3RhdGlj IHZvaWQgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBTdWJzY3JpcHRpb25JbmZvICpz dWJpbmZvKTsKK3N0YXRpYyB2b2lkIGR1bXBWYXJpYWJsZShBcmNoaXZlICpmb3V0LCBWYXJpYWJs ZUluZm8gKnZhcmluZm8pOwogc3RhdGljIHZvaWQgZHVtcERhdGFiYXNlKEFyY2hpdmUgKkFIKTsK IHN0YXRpYyB2b2lkIGR1bXBEYXRhYmFzZUNvbmZpZyhBcmNoaXZlICpBSCwgUFFFeHBCdWZmZXIg b3V0YnVmLAogCQkJCSAgIGNvbnN0IGNoYXIgKmRibmFtZSwgT2lkIGRib2lkKTsKQEAgLTQyMjEs NiArNDIyMiwyMDggQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBTdWJzY3JpcHRp b25JbmZvICpzdWJpbmZvKQogCWZyZWUocXN1Ym5hbWUpOwogfQogCisvKgorICogZ2V0VmFyaWFi bGVzCisgKgkgIGdldCBpbmZvcm1hdGlvbiBhYm91dCB2YXJpYWJsZXMKKyAqLwordm9pZAorZ2V0 VmFyaWFibGVzKEFyY2hpdmUgKmZvdXQpCit7CisJRHVtcE9wdGlvbnMgKmRvcHQgPSBmb3V0LT5k b3B0OworCVBRRXhwQnVmZmVyIHF1ZXJ5OworCVBRRXhwQnVmZmVyIGFjbF9zdWJxdWVyeSA9IGNy ZWF0ZVBRRXhwQnVmZmVyKCk7CisJUFFFeHBCdWZmZXIgcmFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBR RXhwQnVmZmVyKCk7CisJUFFFeHBCdWZmZXIgaW5pdF9hY2xfc3VicXVlcnkgPSBjcmVhdGVQUUV4 cEJ1ZmZlcigpOworCVBRRXhwQnVmZmVyIGluaXRfcmFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhw QnVmZmVyKCk7CisJUEdyZXN1bHQgICAqcmVzOworCVZhcmlhYmxlSW5mbyAqdmFyaW5mbzsKKwlp bnQJCQlpX3RhYmxlb2lkOworCWludAkJCWlfb2lkOworCWludAkJCWlfdmFybmFtZTsKKwlpbnQJ CQlpX3Zhcm5hbWVzcGFjZTsKKwlpbnQJCQlpX3ZhcnR5cGU7CisJaW50CQkJaV92YXJ0eXBuYW1l OworCWludAkJCWlfdmFyZGVmZXhwcjsKKwlpbnQJCQlpX3JvbG5hbWU7CisJaW50CQkJaV92YXJh Y2w7CisJaW50CQkJaV9ydmFyYWNsOworCWludAkJCWlfaW5pdHZhcmFjbDsKKwlpbnQJCQlpX2lu aXRydmFyYWNsOworCWludAkJCWksCisJCQkJbnR1cHM7CisKKwlpZiAoZm91dC0+cmVtb3RlVmVy c2lvbiA8PSAxMTAwMDApCisJCXJldHVybjsKKworCWFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhw QnVmZmVyKCk7CisJcmFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJaW5pdF9h Y2xfc3VicXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCWluaXRfcmFjbF9zdWJxdWVyeSA9 IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwlidWlsZEFDTFF1ZXJpZXMoYWNsX3N1YnF1ZXJ5LCBy YWNsX3N1YnF1ZXJ5LCBpbml0X2FjbF9zdWJxdWVyeSwKKwkJCQkJaW5pdF9yYWNsX3N1YnF1ZXJ5 LCAidi52YXJhY2wiLCAidi52YXJvd25lciIsICInViciLAorCQkJCQlkb3B0LT5iaW5hcnlfdXBn cmFkZSk7CisKKwlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwlyZXNldFBRRXhwQnVm ZmVyKHF1ZXJ5KTsKKworCS8qIEdldCB0aGUgdmFyaWFibGVzIGluIGN1cnJlbnQgZGF0YWJhc2Uu ICovCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCisJCQkJCQkgICJTRUxFQ1Qgdi50YWJsZW9p ZCwgdi5vaWQsIHYudmFybmFtZSwgIgorCQkJCQkJICAidi52YXJuYW1lc3BhY2UsIgorCQkJCQkJ ICAiKCVzIHZhcm93bmVyKSBBUyByb2xuYW1lLCAiCisJCQkJCQkgICIlcyBhcyB2YXJhY2wsICIK KwkJCQkJCSAgIiVzIGFzIHJ2YXJhY2wsICIKKwkJCQkJCSAgIiVzIGFzIGluaXR2YXJhY2wsICIK KwkJCQkJCSAgIiVzIGFzIGluaXRydmFyYWNsLCAiCisJCQkJCQkgICJ2LnZhcnR5cGUsICIKKwkJ CQkJCSAgInBnX2NhdGFsb2cuZm9ybWF0X3R5cGUodi52YXJ0eXBlLCB2LnZhcnR5cG1vZCkgYXMg dmFydHlwbmFtZSwgIgorCQkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRfZXhwcih2LnZhcmRlZmV4 cHIsMCkgYXMgdmFyZGVmZXhwciAiCisJCQkJCQkgICJGUk9NIHBnX3ZhcmlhYmxlIHYgIgorCQkJ CQkJICAiTEVGVCBKT0lOIHBnX2luaXRfcHJpdnMgcGlwICIKKwkJCQkJCSAgIk9OICh2Lm9pZCA9 IHBpcC5vYmpvaWQgIgorCQkJCQkJICAiQU5EIHBpcC5jbGFzc29pZCA9ICdwZ192YXJpYWJsZSc6 OnJlZ2NsYXNzICIKKwkJCQkJCSAgIkFORCBwaXAub2Jqc3ViaWQgPSAwKSIsCisJCQkJCQkgIHVz ZXJuYW1lX3N1YnF1ZXJ5LAorCQkJCQkJICBhY2xfc3VicXVlcnktPmRhdGEsCisJCQkJCQkgIHJh Y2xfc3VicXVlcnktPmRhdGEsCisJCQkJCQkgIGluaXRfYWNsX3N1YnF1ZXJ5LT5kYXRhLAorCQkJ CQkJICBpbml0X3JhY2xfc3VicXVlcnktPmRhdGEpOworCisJZGVzdHJveVBRRXhwQnVmZmVyKGFj bF9zdWJxdWVyeSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKHJhY2xfc3VicXVlcnkpOworCWRlc3Ry b3lQUUV4cEJ1ZmZlcihpbml0X2FjbF9zdWJxdWVyeSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKGlu aXRfcmFjbF9zdWJxdWVyeSk7CisKKwlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnkt PmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CisKKwludHVwcyA9IFBRbnR1cGxlcyhyZXMpOworCisJ aV90YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJ0YWJsZW9pZCIpOworCWlfb2lkID0gUFFmbnVt YmVyKHJlcywgIm9pZCIpOworCWlfdmFybmFtZSA9IFBRZm51bWJlcihyZXMsICJ2YXJuYW1lIik7 CisJaV92YXJuYW1lc3BhY2UgPSBQUWZudW1iZXIocmVzLCAidmFybmFtZXNwYWNlIik7CisJaV9y b2xuYW1lID0gUFFmbnVtYmVyKHJlcywgInJvbG5hbWUiKTsKKwlpX3ZhcnR5cGUgPSBQUWZudW1i ZXIocmVzLCAidmFydHlwZSIpOworCWlfdmFydHlwbmFtZSA9IFBRZm51bWJlcihyZXMsICJ2YXJ0 eXBuYW1lIik7CisJaV92YXJkZWZleHByID0gUFFmbnVtYmVyKHJlcywgInZhcmRlZmV4cHIiKTsK KwlpX3ZhcmFjbCA9IFBRZm51bWJlcihyZXMsICJ2YXJhY2wiKTsKKwlpX3J2YXJhY2wgPSBQUWZu dW1iZXIocmVzLCAicnZhcmFjbCIpOworCWlfaW5pdHZhcmFjbCA9IFBRZm51bWJlcihyZXMsICJp bml0dmFyYWNsIik7CisJaV9pbml0cnZhcmFjbCA9IFBRZm51bWJlcihyZXMsICJpbml0cnZhcmFj bCIpOworCisJdmFyaW5mbyA9IHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihWYXJpYWJsZUluZm8p KTsKKworCWZvciAoaSA9IDA7IGkgPCBudHVwczsgaSsrKQorCXsKKwkJVHlwZUluZm8JICAgKnZ0 eXBlOworCisJCXZhcmluZm9baV0uZG9iai5vYmpUeXBlID0gRE9fVkFSSUFCTEU7CisJCXZhcmlu Zm9baV0uZG9iai5jYXRJZC50YWJsZW9pZCA9CisJCQlhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGks IGlfdGFibGVvaWQpKTsKKwkJdmFyaW5mb1tpXS5kb2JqLmNhdElkLm9pZCA9IGF0b29pZChQUWdl dHZhbHVlKHJlcywgaSwgaV9vaWQpKTsKKwkJQXNzaWduRHVtcElkKCZ2YXJpbmZvW2ldLmRvYmop OworCQl2YXJpbmZvW2ldLmRvYmoubmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwg aV92YXJuYW1lKSk7CisJCXZhcmluZm9baV0uZG9iai5uYW1lc3BhY2UgPQorCQkJZmluZE5hbWVz cGFjZShmb3V0LAorCQkJCQkJICBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFybmFtZXNw YWNlKSkpOworCisJCXZhcmluZm9baV0ucm9sbmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJl cywgaSwgaV9yb2xuYW1lKSk7CisJCXZhcmluZm9baV0udmFydHlwZSA9IGF0b29pZChQUWdldHZh bHVlKHJlcywgaSwgaV92YXJ0eXBlKSk7CisJCXZhcmluZm9baV0udmFydHlwbmFtZSA9IHBnX3N0 cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJ0eXBuYW1lKSk7CisKKwkJdmFyaW5mb1tpXS52 YXJhY2wgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFyYWNsKSk7CisJCXZhcmlu Zm9baV0ucnZhcmFjbCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9ydmFyYWNsKSk7 CisJCXZhcmluZm9baV0uaW5pdHZhcmFjbCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwg aV9pbml0dmFyYWNsKSk7CisJCXZhcmluZm9baV0uaW5pdHJ2YXJhY2wgPSBwZ19zdHJkdXAoUFFn ZXR2YWx1ZShyZXMsIGksIGlfaW5pdHJ2YXJhY2wpKTsKKworCQkvKiBEZWNpZGUgd2hldGhlciB3 ZSB3YW50IHRvIGR1bXAgaXQgKi8KKwkJc2VsZWN0RHVtcGFibGVPYmplY3QoJih2YXJpbmZvW2ld LmRvYmopLCBmb3V0KTsKKworCQkvKiBEbyBub3QgdHJ5IHRvIGR1bXAgQUNMIGlmIG5vIEFDTCBl eGlzdHMuICovCisJCWlmIChQUWdldGlzbnVsbChyZXMsIGksIGlfdmFyYWNsKSAmJiBQUWdldGlz bnVsbChyZXMsIGksIGlfcnZhcmFjbCkgJiYKKwkJCVBRZ2V0aXNudWxsKHJlcywgaSwgaV9pbml0 dmFyYWNsKSAmJgorCQkJUFFnZXRpc251bGwocmVzLCBpLCBpX2luaXRydmFyYWNsKSkKKwkJCXZh cmluZm9baV0uZG9iai5kdW1wICY9IH5EVU1QX0NPTVBPTkVOVF9BQ0w7CisKKwkJaWYgKFBRZ2V0 aXNudWxsKHJlcywgaSwgaV92YXJkZWZleHByKSkKKwkJCXZhcmluZm9baV0udmFyZGVmZXhwciA9 IE5VTEw7CisJCWVsc2UKKwkJCXZhcmluZm9baV0udmFyZGVmZXhwciA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaSwgaV92YXJkZWZleHByKSk7CisKKwkJaWYgKHN0cmxlbih2YXJpbmZvW2ld LnJvbG5hbWUpID09IDApCisJCQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IG93bmVyIG9mIHZh cmlhYmxlIFwiJXNcIiBhcHBlYXJzIHRvIGJlIGludmFsaWRcbiIsCisJCQkJCSAgdmFyaW5mb1tp XS5kb2JqLm5hbWUpOworCisJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAq LworCQlzZWxlY3REdW1wYWJsZU9iamVjdCgmKHZhcmluZm9baV0uZG9iaiksIGZvdXQpOworCisJ CXZ0eXBlID0gZmluZFR5cGVCeU9pZCh2YXJpbmZvW2ldLnZhcnR5cGUpOworCQlhZGRPYmplY3RE ZXBlbmRlbmN5KCZ2YXJpbmZvW2ldLmRvYmosIHZ0eXBlLT5kb2JqLmR1bXBJZCk7CisJfQorCVBR Y2xlYXIocmVzKTsKKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7Cit9CisKKy8qCisgKiBk dW1wVmFyaWFibGUKKyAqCSAgZHVtcCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZ2l2ZW4gdmFyaWFi bGVzCisgKi8KK3N0YXRpYyB2b2lkCitkdW1wVmFyaWFibGUoQXJjaGl2ZSAqZm91dCwgVmFyaWFi bGVJbmZvICp2YXJpbmZvKQoreworCUR1bXBPcHRpb25zICpkb3B0ID0gZm91dC0+ZG9wdDsKKwor CVBRRXhwQnVmZmVyIGRlbHE7CisJUFFFeHBCdWZmZXIgcXVlcnk7CisJY29uc3QgY2hhcgkgICAq dmFybmFtZTsKKwljb25zdCBjaGFyCSAgICp2YXJ0eXBuYW1lOworCWNvbnN0IGNoYXIJICAgKnZh cmRlZmV4cHI7CisKKwkvKiBTa2lwIGlmIG5vdCB0byBiZSBkdW1wZWQgKi8KKwlpZiAoIXZhcmlu Zm8tPmRvYmouZHVtcCB8fCBkb3B0LT5kYXRhT25seSkKKwkJcmV0dXJuOworCisJZGVscSA9IGNy ZWF0ZVBRRXhwQnVmZmVyKCk7CisJcXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCisJdmFy bmFtZSA9IGZtdFF1YWxpZmllZER1bXBhYmxlKHZhcmluZm8pOworCXZhcnR5cG5hbWUgPSB2YXJp bmZvLT52YXJ0eXBuYW1lOworCXZhcmRlZmV4cHIgPSB2YXJpbmZvLT52YXJkZWZleHByOworCisJ YXBwZW5kUFFFeHBCdWZmZXIoZGVscSwgIkRST1AgVkFSSUFCTEUgJXM7XG4iLAorCQkJCQkgIHZh cm5hbWUpOworCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJDUkVBVEUgVkFSSUFCTEUgJXMg QVMgJXMiLAorCQkJCQkgIHZhcm5hbWUsIHZhcnR5cG5hbWUpOworCisJaWYgKHZhcmRlZmV4cHIp CisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIERFRkFVTFQgJXMiLAorCQkJCQkJICB2YXJk ZWZleHByKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiO1xuIik7CisKKwlBcmNoaXZl RW50cnkoZm91dCwgdmFyaW5mby0+ZG9iai5jYXRJZCwgdmFyaW5mby0+ZG9iai5kdW1wSWQsCisJ CQkJIHZhcmluZm8tPmRvYmoubmFtZSwKKwkJCQkgTlVMTCwKKwkJCQkgTlVMTCwKKwkJCQkgdmFy aW5mby0+cm9sbmFtZSwgZmFsc2UsCisJCQkJICJWQVJJQUJMRSIsIFNFQ1RJT05fUFJFX0RBVEEs CisJCQkJIHF1ZXJ5LT5kYXRhLCBkZWxxLT5kYXRhLCBOVUxMLAorCQkJCSBOVUxMLCAwLAorCQkJ CSBOVUxMLCBOVUxMKTsKKworCWlmICh2YXJpbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NPTVBPTkVO VF9DT01NRU5UKQorCQlkdW1wQ29tbWVudChmb3V0LCAiVkFSSUFCTEUiLCB2YXJuYW1lLAorCQkJ CQlOVUxMLCB2YXJpbmZvLT5yb2xuYW1lLAorCQkJCQl2YXJpbmZvLT5kb2JqLmNhdElkLCAwLCB2 YXJpbmZvLT5kb2JqLmR1bXBJZCk7CisKKwlkZXN0cm95UFFFeHBCdWZmZXIoZGVscSk7CisJZGVz dHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKK30KKwogc3RhdGljIHZvaWQKIGJpbmFyeV91cGdyYWRl X3NldF90eXBlX29pZHNfYnlfdHlwZV9vaWQoQXJjaGl2ZSAqZm91dCwKIAkJCQkJCQkJCQkgUFFF eHBCdWZmZXIgdXBncmFkZV9idWZmZXIsCkBAIC05ODQ5LDYgKzEwMDUyLDkgQEAgZHVtcER1bXBh YmxlT2JqZWN0KEFyY2hpdmUgKmZvdXQsIER1bXBhYmxlT2JqZWN0ICpkb2JqKQogCQljYXNlIERP X1NVQlNDUklQVElPTjoKIAkJCWR1bXBTdWJzY3JpcHRpb24oZm91dCwgKFN1YnNjcmlwdGlvbklu Zm8gKikgZG9iaik7CiAJCQlicmVhazsKKwkJY2FzZSBET19WQVJJQUJMRToKKwkJCWR1bXBWYXJp YWJsZShmb3V0LCAoVmFyaWFibGVJbmZvICopIGRvYmopOworCQkJYnJlYWs7CiAJCWNhc2UgRE9f UFJFX0RBVEFfQk9VTkRBUlk6CiAJCWNhc2UgRE9fUE9TVF9EQVRBX0JPVU5EQVJZOgogCQkJLyog bmV2ZXIgZHVtcGVkLCBub3RoaW5nIHRvIGRvICovCkBAIC0xNzkzNSw2ICsxODE0MSw3IEBAIGFk ZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1bXBhYmxlT2JqZWN0ICoqZG9ianMsIGludCBudW1PYmpz LAogCQkJY2FzZSBET19PUEZBTUlMWToKIAkJCWNhc2UgRE9fQ09MTEFUSU9OOgogCQkJY2FzZSBE T19DT05WRVJTSU9OOgorCQkJY2FzZSBET19WQVJJQUJMRToKIAkJCWNhc2UgRE9fVEFCTEU6CiAJ CQljYXNlIERPX0FUVFJERUY6CiAJCQljYXNlIERPX1BST0NMQU5HOgpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXgg MTQ0ODAwNWYzMC4uMGQ0OWJiN2VkNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC04NCw3ICs4NCw4IEBAIHR5 cGVkZWYgZW51bQogCURPX1BPTElDWSwKIAlET19QVUJMSUNBVElPTiwKIAlET19QVUJMSUNBVElP Tl9SRUwsCi0JRE9fU1VCU0NSSVBUSU9OCisJRE9fU1VCU0NSSVBUSU9OLAorCURPX1ZBUklBQkxF CiB9IER1bXBhYmxlT2JqZWN0VHlwZTsKIAogLyogY29tcG9uZW50IHR5cGVzIG9mIGFuIG9iamVj dCB3aGljaCBjYW4gYmUgc2VsZWN0ZWQgZm9yIGR1bXBpbmcgKi8KQEAgLTYyNSw2ICs2MjYsMjIg QEAgdHlwZWRlZiBzdHJ1Y3QgX1N1YnNjcmlwdGlvbkluZm8KIAljaGFyCSAgICpzdWJwdWJsaWNh dGlvbnM7CiB9IFN1YnNjcmlwdGlvbkluZm87CiAKKy8qCisgKiBUaGUgVmFyaWFibGVJbmZvIHN0 cnVjdCBpcyB1c2VkIHRvIHJlcHJlc2VudCBzY2hlbWEgdmFyaWFibGVzCisgKi8KK3R5cGVkZWYg c3RydWN0IF9WYXJpYWJsZUluZm8KK3sKKwlEdW1wYWJsZU9iamVjdCBkb2JqOworCU9pZAkJCXZh cnR5cGU7CisJY2hhcgkgICAqdmFydHlwbmFtZTsKKwljaGFyCSAgICpyb2xuYW1lOwkJLyogbmFt ZSBvZiBvd25lciwgb3IgZW1wdHkgc3RyaW5nICovCisJY2hhcgkgICAqdmFyZGVmZXhwcjsKKwlj aGFyCSAgICp2YXJhY2w7CisJY2hhcgkgICAqcnZhcmFjbDsKKwljaGFyCSAgICppbml0dmFyYWNs OworCWNoYXIJICAgKmluaXRydmFyYWNsOworfSBWYXJpYWJsZUluZm87CisKIC8qCiAgKiBXZSBi dWlsZCBhbiBhcnJheSBvZiB0aGVzZSB3aXRoIGFuIGVudHJ5IGZvciBlYWNoIG9iamVjdCB0aGF0 IGlzIGFuCiAgKiBleHRlbnNpb24gbWVtYmVyIGFjY29yZGluZyB0byBwZ19kZXBlbmQuCkBAIC03 MjUsNSArNzQyLDYgQEAgZXh0ZXJuIHZvaWQgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQp OwogZXh0ZXJuIHZvaWQgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJ bmZvIHRibGluZm9bXSwKIAkJCQkJIGludCBudW1UYWJsZXMpOwogZXh0ZXJuIHZvaWQgZ2V0U3Vi c2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KTsKK2V4dGVybiB2b2lkIGdldFZhcmlhYmxlcyhBcmNo aXZlICpmb3V0KTsKIAogI2VuZGlmCQkJCQkJCS8qIFBHX0RVTVBfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBf c29ydC5jCmluZGV4IDYyMjdhOGZkMjYuLjk2OWEwMjE3NzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wX3NvcnQuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0 LmMKQEAgLTE0NzcsNiArMTQ3NywxMCBAQCBkZXNjcmliZUR1bXBhYmxlT2JqZWN0KER1bXBhYmxl T2JqZWN0ICpvYmosIGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpemUpCiAJCQkJCSAiUE9TVC1EQVRBIEJP VU5EQVJZICAoSUQgJWQpIiwKIAkJCQkJIG9iai0+ZHVtcElkKTsKIAkJCXJldHVybjsKKwkJY2Fz ZSBET19WQVJJQUJMRToKKwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJWQVJJQUJM RSAlcyAgKElEICVkIE9JRCAldSkiLAorCQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1bXBJZCwgb2Jq LT5jYXRJZC5vaWQpOwogCX0KIAkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAlzbnByaW50Zihi dWYsIGJ1ZnNpemUsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5w bCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IGVjNzUxYTdjMjMuLjJh Njc3NjZlZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisr KyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0yNjAxLDYgKzI2MDEsMzgg QEAgbXkgJXRlc3RzID0gKAogCQl9LAogCX0sCiAKKwknQ1JFQVRFIFZBUklBQkxFIHRlc3RfdmFy aWFibGUnID0+IHsKKwkJYWxsX3J1bnMgICAgID0+IDEsCisJCWNhdGNoX2FsbCAgICA9PiAnQ1JF QVRFIC4uLiBjb21tYW5kcycsCisJCWNyZWF0ZV9vcmRlciA9PiA2MSwKKwkJY3JlYXRlX3NxbCAg ID0+ICdDUkVBVEUgVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlIEFTIGludGVnZXIgREVGQVVM VCAwOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBWQVJJQUJMRSBkdW1wX3Rlc3Qu dmFyaWFibGUgQVMgaW50ZWdlciBERUZBVUxUIDA7XEUveG0sCisJCWxpa2UgPT4geworCQkJYmlu YXJ5X3VwZ3JhZGUgICAgICAgICAgPT4gMSwKKwkJCWNsZWFuICAgICAgICAgICAgICAgICAgID0+ IDEsCisJCQljbGVhbl9pZl9leGlzdHMgICAgICAgICA9PiAxLAorCQkJY3JlYXRlZGIgICAgICAg ICAgICAgICAgPT4gMSwKKwkJCWRlZmF1bHRzICAgICAgICAgICAgICAgID0+IDEsCisJCQlleGNs dWRlX3Rlc3RfdGFibGUgICAgICA9PiAxLAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlX2RhdGEgPT4g MSwKKwkJCW5vX2Jsb2JzICAgICAgICAgICAgICAgID0+IDEsCisJCQlub19wcml2cyAgICAgICAg ICAgICAgICA9PiAxLAorCQkJbm9fb3duZXIgICAgICAgICAgICAgICAgPT4gMSwKKwkJCW9ubHlf ZHVtcF90ZXN0X3NjaGVtYSAgID0+IDEsCisJCQlwZ19kdW1wYWxsX2RicHJpdnMgICAgICA9PiAx LAorCQkJc2NoZW1hX29ubHkgICAgICAgICAgICAgPT4gMSwKKwkJCXNlY3Rpb25fcHJlX2RhdGEg ICAgICAgID0+IDEsCisJCQl0ZXN0X3NjaGVtYV9wbHVzX2Jsb2JzICA9PiAxLAorCQkJd2l0aF9v aWRzICAgICAgICAgICAgICAgPT4gMSwgfSwKKwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1ZGVfZHVt cF90ZXN0X3NjaGVtYSA9PiAxLAorCQkJb25seV9kdW1wX3Rlc3RfdGFibGUgICAgID0+IDEsCisJ CQlwZ19kdW1wYWxsX2dsb2JhbHMgICAgICAgPT4gMSwKKwkJCXBnX2R1bXBhbGxfZ2xvYmFsc19j bGVhbiA9PiAxLAorCQkJcm9sZSAgICAgICAgICAgICAgICAgICAgID0+IDEsCisJCQlzZWN0aW9u X3Bvc3RfZGF0YSAgICAgICAgPT4gMSwgfSwgfSwKKwogCSdDUkVBVEUgVklFVyB0ZXN0X3ZpZXcn ID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDYxLAogCQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBW SUVXIGR1bXBfdGVzdC50ZXN0X3ZpZXcKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5k LmMgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCmluZGV4IDViNGQ1NGE0NDIuLjczYTc1MmZkN2Ug MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Nv bW1hbmQuYwpAQCAtODUzLDYgKzg1Myw5IEBAIGV4ZWNfY29tbWFuZF9kKFBzcWxTY2FuU3RhdGUg c2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAJCQkJCQli cmVhazsKIAkJCQl9CiAJCQkJYnJlYWs7CisJCQljYXNlICdWJzoJCQkvKiBWYXJpYWJsZXMgKi8K KwkJCQlzdWNjZXNzID0gbGlzdFZhcmlhYmxlcyhwYXR0ZXJuLCBzaG93X3ZlcmJvc2UpOworCQkJ CWJyZWFrOwogCQkJY2FzZSAneCc6CQkJLyogRXh0ZW5zaW9ucyAqLwogCQkJCWlmIChzaG93X3Zl cmJvc2UpCiAJCQkJCXN1Y2Nlc3MgPSBsaXN0RXh0ZW5zaW9uQ29udGVudHMocGF0dGVybik7CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmli ZS5jCmluZGV4IDgwZDgzMzhiOTYuLmQ2NDViYmE3YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC00MTc4LDYgKzQx NzgsODAgQEAgbGlzdFNjaGVtYXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBi b29sIHNob3dTeXN0ZW0pCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBcZFYKKyAqCisgKiBs aXN0VmFyaWFibGVzKCkKKyAqLworYm9vbAorbGlzdFZhcmlhYmxlcyhjb25zdCBjaGFyICpwYXR0 ZXJuLCBib29sIHZlcmJvc2UpCit7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKwlQR3Jlc3VsdCAg ICpyZXM7CisJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKwlzdGF0aWMgY29uc3Qg Ym9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlfTsKKworCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKKworCXByaW50 ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUgYXMgXCIlc1wiLFxu IgorCQkJCQkgICIgIHYudmFybmFtZSBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxv Zy5mb3JtYXRfdHlwZSh2LnZhcnR5cGUsIHYudmFydHlwbW9kKSBhcyBcIiVzXCIsXG4iCisJCQkJ CSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQodi52YXJvd25lcikgYXMgXCIlc1wiLFxu IgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIodi52YXJkZWZleHByLCAwKSBhcyBc IiVzXCIiLAorCQkJCQkgIGdldHRleHRfbm9vcCgiU2NoZW1hIiksCisJCQkJCSAgZ2V0dGV4dF9u b29wKCJOYW1lIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJUeXBlIiksCisJCQkJCSAgZ2V0dGV4 dF9ub29wKCJPd25lciIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiRGVmYXVsdCIpKTsKKworCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCisJCQkJCQkgIlxuRlJPTSBwZ19jYXRhbG9nLnBnX3Zh cmlhYmxlIHYiCisJCQkJCQkgIlxuICAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3Bh Y2UgbiBPTiBuLm9pZCA9IHYudmFybmFtZXNwYWNlIik7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0 cigmYnVmLCAiXG5XSEVSRSB0cnVlXG4iKTsKKwlpZiAoIXBhdHRlcm4pCisJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsICIgICAgICBBTkQgbi5uc3BuYW1lIDw+ICdwZ19jYXRhbG9nJ1xuIgor CQkJCQkJCSAiICAgICAgQU5EIG4ubnNwbmFtZSA8PiAnaW5mb3JtYXRpb25fc2NoZW1hJ1xuIik7 CisKKwlwcm9jZXNzU1FMTmFtZVBhdHRlcm4ocHNldC5kYiwgJmJ1ZiwgcGF0dGVybiwgdHJ1ZSwg ZmFsc2UsCisJCQkJCQkgICJuLm5zcG5hbWUiLCAidi52YXJuYW1lIiwgTlVMTCwKKwkJCQkJCSAg InBnX2NhdGFsb2cucGdfdmFyaWFibGVfaXNfdmlzaWJsZSh2Lm9pZCkiKTsKKworCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZidWYsICJPUkRFUiBCWSAxLDI7Iik7CisKKwlyZXMgPSBQU1FMZXhlYyhi dWYuZGF0YSk7CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCWlmICghcmVzKQorCQlyZXR1cm4g ZmFsc2U7CisKKwkvKgorCSAqIE1vc3QgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgY29udGVu dCB0byBwcmludCBhbiBlbXB0eSB0YWJsZSB3aGVuCisJICogdGhlcmUgYXJlIG5vIG1hdGNoaW5n IG9iamVjdHMuICBXZSBpbnRlbnRpb25hbGx5IGRldmlhdGUgZnJvbSB0aGF0CisJICogaGVyZSwg YnV0IG9ubHkgaW4gIXF1aWV0IG1vZGUsIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMuCisJICovCisJ aWYgKFBRbnR1cGxlcyhyZXMpID09IDAgJiYgIXBzZXQucXVpZXQpCisJeworCQlpZiAocGF0dGVy bikKKwkJCXBzcWxfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgc2NoZW1hIHZhcmlhYmxlIG5hbWVk IFwiJXNcIi5cbiIsCisJCQkJCSAgIHBhdHRlcm4pOworCQllbHNlCisJCQlwc3FsX2Vycm9yKCJE aWQgbm90IGZpbmQgYW55IHNjaGVtYSB2YXJpYWJsZXMuXG4iKTsKKwl9CisJZWxzZQorCXsKKwkJ bXlvcHQubnVsbFByaW50ID0gTlVMTDsKKwkJbXlvcHQudGl0bGUgPSBfKCJMaXN0IG9mIHZhcmlh YmxlcyIpOworCQlteW9wdC50cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKwkJbXlvcHQudHJhbnNs YXRlX2NvbHVtbnMgPSB0cmFuc2xhdGVfY29sdW1uczsKKwkJbXlvcHQubl90cmFuc2xhdGVfY29s dW1ucyA9IGxlbmd0aG9mKHRyYW5zbGF0ZV9jb2x1bW5zKTsKKworCQlwcmludFF1ZXJ5KHJlcywg Jm15b3B0LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CisJfQorCisJUFFj bGVhcihyZXMpOworCXJldHVybiB0cnVlOworfQogCiAvKgogICogXGRGcApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAppbmRleCBh NGNjNWVmYWUwLi5lY2M0ZTNhNTMxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUu aAorKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaApAQCAtNjMsNiArNjMsOSBAQCBleHRlcm4g Ym9vbCBsaXN0QWxsRGJzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSk7CiAvKiBc ZHQsIFxkaSwgXGRzLCBcZFMsIGV0Yy4gKi8KIGV4dGVybiBib29sIGxpc3RUYWJsZXMoY29uc3Qg Y2hhciAqdGFidHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBz aG93U3lzdGVtKTsKIAorLyogXGRWICovCitleHRlcm4gYm9vbCBsaXN0VmFyaWFibGVzKGNvbnN0 IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmFyYm9zZSk7CisKIC8qIFxkRCAqLwogZXh0ZXJuIGJvb2wg bGlzdERvbWFpbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dT eXN0ZW0pOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIvc3JjL2Jpbi9wc3Fs L2hlbHAuYwppbmRleCAzMTYwMzBkMzU4Li5hZGNjMzZjYjZlIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvaGVscC5jCisrKyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKQEAgLTE2Nyw3ICsxNjcsNyBA QCBzbGFzaFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAkgKiBVc2UgInBzcWwgLS1o ZWxwPWNvbW1hbmRzIHwgd2MiIHRvIGNvdW50IGNvcnJlY3RseS4gIEl0J3Mgb2theSB0byBjb3Vu dAogCSAqIHRoZSBVU0VfUkVBRExJTkUgbGluZSBldmVuIGluIGJ1aWxkcyB3aXRob3V0IHRoYXQu CiAJICovCi0Jb3V0cHV0ID0gUGFnZU91dHB1dCgxMjUsIHBhZ2VyID8gJihwc2V0LnBvcHQudG9w dCkgOiBOVUxMKTsKKwlvdXRwdXQgPSBQYWdlT3V0cHV0KDEyNiwgcGFnZXIgPyAmKHBzZXQucG9w dC50b3B0KSA6IE5VTEwpOwogCiAJZnByaW50ZihvdXRwdXQsIF8oIkdlbmVyYWxcbiIpKTsKIAlm cHJpbnRmKG91dHB1dCwgXygiICBcXGNvcHlyaWdodCAgICAgICAgICAgICBzaG93IFBvc3RncmVT UUwgdXNhZ2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtc1xuIikpOwpAQCAtMjU3LDYgKzI1Nyw3IEBA IHNsYXNoVXNhZ2UodW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCWZwcmludGYob3V0cHV0LCBf KCIgIFxcZFRbUytdIFtQQVRURVJOXSAgICAgIGxpc3QgZGF0YSB0eXBlc1xuIikpOwogCWZwcmlu dGYob3V0cHV0LCBfKCIgIFxcZHVbUytdIFtQQVRURVJOXSAgICAgIGxpc3Qgcm9sZXNcbiIpKTsK IAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR2W1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IHZpZXdz XG4iKSk7CisJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkViAgICAgW1BBVFRFUk5dICAgICAgbGlz dCB2YXJpYWJsZXNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR4WytdICBbUEFUVEVS Tl0gICAgICBsaXN0IGV4dGVuc2lvbnNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR5 ICAgICBbUEFUVEVSTl0gICAgICBsaXN0IGV2ZW50IHRyaWdnZXJzXG4iKSk7CiAJZnByaW50Zihv dXRwdXQsIF8oIiAgXFxsWytdICAgW1BBVFRFUk5dICAgICAgbGlzdCBkYXRhYmFzZXNcbiIpKTsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuYwppbmRleCBiYjY5NmY4ZWU5Li5hNzU4MzgxMGU4IDEwMDY0NAotLS0gYS9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5jCkBAIC04MDUsNiArODA1LDIyIEBAIHN0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9m b3JfbGlzdF9vZl9zdGF0aXN0aWNzID0gewogCU5VTEwKIH07CiAKK3N0YXRpYyBjb25zdCBTY2hl bWFRdWVyeSBRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMgPSB7CisJLyogbWluX3NlcnZlcl92 ZXJzaW9uICovCisJMCwKKwkvKiBjYXRuYW1lICovCisJInBnX2NhdGFsb2cucGdfdmFyaWFibGUg diIsCisJLyogc2VsY29uZGl0aW9uICovCisJTlVMTCwKKwkvKiB2aXNjb25kaXRpb24gKi8KKwki cGdfY2F0YWxvZy5wZ192YXJpYWJsZV9pc192aXNpYmxlKHYub2lkKSIsCisJLyogbmFtZXNwYWNl ICovCisJInYudmFybmFtZXNwYWNlIiwKKwkvKiByZXN1bHQgKi8KKwkicGdfY2F0YWxvZy5xdW90 ZV9pZGVudCh2LnZhcm5hbWUpIiwKKwkvKiBxdWFscmVzdWx0ICovCisJTlVMTAorfTsKIAogLyoK ICAqIFF1ZXJpZXMgdG8gZ2V0IGxpc3RzIG9mIG5hbWVzIG9mIHZhcmlvdXMga2luZHMgb2YgdGhp bmdzLCBwb3NzaWJseQpAQCAtMTI0OSw2ICsxMjY1LDcgQEAgc3RhdGljIGNvbnN0IHBnc3FsX3Ro aW5nX3Qgd29yZHNfYWZ0ZXJfY3JlYXRlW10gPSB7CiAJCQkJCQkJCQkJCQkJCQkJCSAqIFRBQkxF IC4uLiAqLwogCXsiVVNFUiIsIFF1ZXJ5X2Zvcl9saXN0X29mX3JvbGVzICIgVU5JT04gU0VMRUNU ICdNQVBQSU5HIEZPUicifSwKIAl7IlVTRVIgTUFQUElORyBGT1IiLCBOVUxMLCBOVUxMLCBOVUxM fSwKKwl7IlZBUklBQkxFIiwgTlVMTCwgTlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxl c30sCiAJeyJWSUVXIiwgTlVMTCwgTlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZpZXdzfSwKIAl7 TlVMTH0JCQkJCQkvKiBlbmQgb2YgbGlzdCAqLwogfTsKQEAgLTE2MDQsNyArMTYyMSw3IEBAIHBz cWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSJB Qk9SVCIsICJBTFRFUiIsICJBTkFMWVpFIiwgIkJFR0lOIiwgIkNBTEwiLCAiQ0hFQ0tQT0lOVCIs ICJDTE9TRSIsICJDTFVTVEVSIiwKIAkJIkNPTU1FTlQiLCAiQ09NTUlUIiwgIkNPUFkiLCAiQ1JF QVRFIiwgIkRFQUxMT0NBVEUiLCAiREVDTEFSRSIsCiAJCSJERUxFVEUgRlJPTSIsICJESVNDQVJE IiwgIkRPIiwgIkRST1AiLCAiRU5EIiwgIkVYRUNVVEUiLCAiRVhQTEFJTiIsCi0JCSJGRVRDSCIs ICJHUkFOVCIsICJJTVBPUlQiLCAiSU5TRVJUIiwgIkxJU1RFTiIsICJMT0FEIiwgIkxPQ0siLAor CQkiRkVUQ0giLCAiR1JBTlQiLCAiSU1QT1JUIiwgIklOU0VSVCIsICJMRVQiLCAiTElTVEVOIiwg IkxPQUQiLCAiTE9DSyIsCiAJCSJNT1ZFIiwgIk5PVElGWSIsICJQUkVQQVJFIiwKIAkJIlJFQVNT SUdOIiwgIlJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVciLCAiUkVJTkRFWCIsICJSRUxFQVNFIiwK IAkJIlJFU0VUIiwgIlJFVk9LRSIsICJST0xMQkFDSyIsCkBAIC0xNjIxLDkgKzE2MzgsOSBAQCBw c3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQki XFxkIiwgIlxcZGEiLCAiXFxkQSIsICJcXGRiIiwgIlxcZGMiLCAiXFxkQyIsICJcXGRkIiwgIlxc ZGRwIiwgIlxcZEQiLAogCQkiXFxkZXMiLCAiXFxkZXQiLCAiXFxkZXUiLCAiXFxkZXciLCAiXFxk RSIsICJcXGRmIiwKIAkJIlxcZEYiLCAiXFxkRmQiLCAiXFxkRnAiLCAiXFxkRnQiLCAiXFxkZyIs ICJcXGRpIiwgIlxcZGwiLCAiXFxkTCIsCi0JCSJcXGRtIiwgIlxcZG4iLCAiXFxkbyIsICJcXGRP IiwgIlxcZHAiLAorCQkiXFxkbSIsICJcXGRuIiwgIlxcZG8iLCAiXFxkTyIsICJcXGRwIgogCQki XFxkcmRzIiwgIlxcZFJzIiwgIlxcZFJwIiwgIlxcZHMiLCAiXFxkUyIsCi0JCSJcXGR0IiwgIlxc ZFQiLCAiXFxkdiIsICJcXGR1IiwgIlxcZHgiLCAiXFxkeSIsCisJCSJcXGR0IiwgIlxcZFQiLCAi XFxkdiIsICJcXGR1IiwgIlxcZHgiLCAiXFxkeSIsICJcXGRWIiwKIAkJIlxcZSIsICJcXGVjaG8i LCAiXFxlZiIsICJcXGVsaWYiLCAiXFxlbHNlIiwgIlxcZW5jb2RpbmciLAogCQkiXFxlbmRpZiIs ICJcXGVycnZlcmJvc2UiLCAiXFxldiIsCiAJCSJcXGYiLApAQCAtMTk4OCw2ICsyMDA1LDkgQEAg cHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJ Q09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9hbHRlcl9zeXN0ZW1fc2V0X3Zh cnMpOwogCWVsc2UgaWYgKE1hdGNoZXM0KCJBTFRFUiIsICJTWVNURU0iLCAiU0VUIiwgTWF0Y2hB bnkpKQogCQlDT01QTEVURV9XSVRIX0NPTlNUKCJUTyIpOworCS8qIEFMVEVSIFZBUklBQkxFIDxu YW1lPiAqLworCWVsc2UgaWYgKE1hdGNoZXMzKCJBTFRFUiIsICJWQVJJQUJMRSIsIE1hdGNoQW55 KSkKKwkJQ09NUExFVEVfV0lUSF9MSVNUMygiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwgIlNFVCBT Q0hFTUEiKTsKIAkvKiBBTFRFUiBWSUVXIDxuYW1lPiAqLwogCWVsc2UgaWYgKE1hdGNoZXMzKCJB TFRFUiIsICJWSUVXIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIX0xJU1Q0KCJBTFRFUiBD T0xVTU4iLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwKQEAgLTI4MzcsNiArMjg1NywxNCBAQCBw c3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVs c2UgaWYgKE1hdGNoZXM0KCJDUkVBVEUiLCAiUk9MRXxVU0VSfEdST1VQIiwgTWF0Y2hBbnksICJJ TiIpKQogCQlDT01QTEVURV9XSVRIX0xJU1QyKCJHUk9VUCIsICJST0xFIik7CiAKKy8qIENSRUFU RSBWQVJJQUJMRSAtLS0gaXMgYWxsb3dlZCBpbnNpZGUgQ1JFQVRFIFNDSEVNQSwgc28gdXNlIFRh aWxNYXRjaGVzICovCisJLyogQ29tcGxldGUgQ1JFQVRFIFZBUklBQkxFIDxuYW1lPiB3aXRoIEFT ICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMzKCJDUkVBVEUiLCAiVkFSSUFCTEUiLCBNYXRjaEFu eSkpCisJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIkFTIik7CisJLyogQ29tcGxldGUgQ1JFQVRFIFZB UklBQkxFIDxuYW1lPiB3aXRoIEFTIHR5cGVzKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlczQoIkNS RUFURSIsICJWQVJJQUJMRSIsIE1hdGNoQW55LCAiQVMiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hF TUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfZGF0YXR5cGVzLCBOVUxMKTsKKwogLyogQ1JFQVRF IFZJRVcgLS0tIGlzIGFsbG93ZWQgaW5zaWRlIENSRUFURSBTQ0hFTUEsIHNvIHVzZSBUYWlsTWF0 Y2hlcyAqLwogCS8qIENvbXBsZXRlIENSRUFURSBWSUVXIDxuYW1lPiB3aXRoIEFTICovCiAJZWxz ZSBpZiAoVGFpbE1hdGNoZXMzKCJDUkVBVEUiLCAiVklFVyIsIE1hdGNoQW55KSkKQEAgLTI4OTAs NyArMjkxOCw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQs IGludCBlbmQpCiAKIC8qIERJU0NBUkQgKi8KIAllbHNlIGlmIChNYXRjaGVzMSgiRElTQ0FSRCIp KQotCQlDT01QTEVURV9XSVRIX0xJU1Q0KCJBTEwiLCAiUExBTlMiLCAiU0VRVUVOQ0VTIiwgIlRF TVAiKTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUNSgiQUxMIiwgIlBMQU5TIiwgIlNFUVVFTkNFUyIs ICJURU1QIiwgIlZBUklBQkxFUyIpOwogCiAvKiBETyAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJE TyIpKQpAQCAtMjk5Miw2ICszMDIwLDEyIEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0 ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJZWxzZSBpZiAoTWF0Y2hlczUoIkRST1AiLCAiUlVM RSIsIE1hdGNoQW55LCAiT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEhfTElTVDIoIkNB U0NBREUiLCAiUkVTVFJJQ1QiKTsKIAorCS8qIERST1AgVkFSSUFCTEUgKi8KKwllbHNlIGlmIChN YXRjaGVzMigiRFJPUCIsICJWQVJJQUJMRSIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVS WShRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMsIE5VTEwpOworCWVsc2UgaWYgKE1hdGNoZXMz KCJEUk9QIiwgIlZBUklBQkxFIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIX0xJU1QyKCJD QVNDQURFIiwgIlJFU1RSSUNUIik7CisKIC8qIEVYRUNVVEUgKi8KIAllbHNlIGlmIChNYXRjaGVz MSgiRVhFQ1VURSIpKQogCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3By ZXBhcmVkX3N0YXRlbWVudHMpOwpAQCAtMzAwMiwxNCArMzAzNiwxNCBAQCBwc3FsX2NvbXBsZXRp b24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCSAqIENvbXBsZXRlIEVY UExBSU4gW0FOQUxZWkVdIFtWRVJCT1NFXSB3aXRoIGxpc3Qgb2YgRVhQTEFJTi1hYmxlIGNvbW1h bmRzCiAJICovCiAJZWxzZSBpZiAoTWF0Y2hlczEoIkVYUExBSU4iKSkKLQkJQ09NUExFVEVfV0lU SF9MSVNUNygiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUi LAotCQkJCQkJCSJBTkFMWVpFIiwgIlZFUkJPU0UiKTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUOCgi U0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUiLAorCQkJCQkJ CSJBTkFMWVpFIiwgIlZFUkJPU0UiLCAiTEVUIik7CiAJZWxzZSBpZiAoTWF0Y2hlczIoIkVYUExB SU4iLCAiQU5BTFlaRSIpKQotCQlDT01QTEVURV9XSVRIX0xJU1Q2KCJTRUxFQ1QiLCAiSU5TRVJU IiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCi0JCQkJCQkJIlZFUkJPU0UiKTsKKwkJ Q09NUExFVEVfV0lUSF9MSVNUNygiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRF IiwgIkRFQ0xBUkUiLAorCQkJCQkJCSJWRVJCT1NFIiwgIkxFVCIpOwogCWVsc2UgaWYgKE1hdGNo ZXMyKCJFWFBMQUlOIiwgIlZFUkJPU0UiKSB8fAogCQkJIE1hdGNoZXMzKCJFWFBMQUlOIiwgIkFO QUxZWkUiLCAiVkVSQk9TRSIpKQotCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJTRUxFQ1QiLCAiSU5T RVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIpOworCQlDT01QTEVURV9XSVRIX0xJ U1Q2KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsICJM RVQiKTsKIAogLyogRkVUQ0ggJiYgTU9WRSAqLwogCS8qIENvbXBsZXRlIEZFVENIIHdpdGggb25l IG9mIEZPUldBUkQsIEJBQ0tXQVJELCBSRUxBVElWRSAqLwpAQCAtMzExOCw2ICszMTUyLDcgQEAg cHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJ CQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdBTEwgUk9VVElORVMgSU4gU0NIRU1BJyIKIAkJCQkJ CQkJCSAgICIgVU5JT04gU0VMRUNUICdBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQSciCiAJCQkJCQkJ CQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFRBQkxFUyBJTiBTQ0hFTUEnIgorCQkJCQkJCQkJICAg IiBVTklPTiBTRUxFQ1QgJ0FMTCBWQVJJQUJMRVMgSU4gU0NIRU1BJyIKIAkJCQkJCQkJCSAgICIg VU5JT04gU0VMRUNUICdEQVRBQkFTRSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnRE9N QUlOJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdGT1JFSUdOIERBVEEgV1JBUFBFUici CkBAIC0zMTMxLDE0ICszMTY2LDE2IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0 LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnU0VRVUVO Q0UnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RBQkxFJyIKIAkJCQkJCQkJCSAgICIg VU5JT04gU0VMRUNUICdUQUJMRVNQQUNFJyIKLQkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdU WVBFJyIpOworCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RZUEUnIgorCQkJCQkJCQkJICAg IiBVTklPTiBTRUxFQ1QgJ1ZBUklBQkxFJyIpOwogCX0KIAllbHNlIGlmIChUYWlsTWF0Y2hlczQo IkdSQU5UfFJFVk9LRSIsIE1hdGNoQW55LCAiT04iLCAiQUxMIikpCi0JCUNPTVBMRVRFX1dJVEhf TElTVDUoIkZVTkNUSU9OUyBJTiBTQ0hFTUEiLAorCQlDT01QTEVURV9XSVRIX0xJU1Q2KCJGVU5D VElPTlMgSU4gU0NIRU1BIiwKIAkJCQkJCQkiUFJPQ0VEVVJFUyBJTiBTQ0hFTUEiLAogCQkJCQkJ CSJST1VUSU5FUyBJTiBTQ0hFTUEiLAogCQkJCQkJCSJTRVFVRU5DRVMgSU4gU0NIRU1BIiwKLQkJ CQkJCQkiVEFCTEVTIElOIFNDSEVNQSIpOworCQkJCQkJCSJUQUJMRVMgSU4gU0NIRU1BIiwKKwkJ CQkJCQkiVkFSSUFCTEVTIElOIFNDSEVNQSIpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgiR1JB TlR8UkVWT0tFIiwgTWF0Y2hBbnksICJPTiIsICJGT1JFSUdOIikpCiAJCUNPTVBMRVRFX1dJVEhf TElTVDIoIkRBVEEgV1JBUFBFUiIsICJTRVJWRVIiKTsKIApAQCAtMzE3Miw2ICszMjA5LDggQEAg cHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJ CUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzcGFjZXMpOwogCQll bHNlIGlmIChUYWlsTWF0Y2hlczEoIlRZUEUiKSkKIAkJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FV RVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2RhdGF0eXBlcywgTlVMTCk7CisJCWVsc2UgaWYgKFRhaWxN YXRjaGVzMSgiVkFSSUFCTEUiKSkKKwkJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5 X2Zvcl9saXN0X29mX3ZhcmlhYmxlcywgTlVMTCk7CiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgi R1JBTlQiLCBNYXRjaEFueSwgTWF0Y2hBbnksIE1hdGNoQW55KSkKIAkJCUNPTVBMRVRFX1dJVEhf Q09OU1QoIlRPIik7CiAJCWVsc2UKQEAgLTMzMjQsNyArMzM2Myw3IEBAIHBzcWxfY29tcGxldGlv bihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAKIC8qIFBSRVBBUkUgeHgg QVMgKi8KIAllbHNlIGlmIChNYXRjaGVzMygiUFJFUEFSRSIsIE1hdGNoQW55LCAiQVMiKSkKLQkJ Q09NUExFVEVfV0lUSF9MSVNUNCgiU0VMRUNUIiwgIlVQREFURSIsICJJTlNFUlQiLCAiREVMRVRF IEZST00iKTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUNSgiU0VMRUNUIiwgIlVQREFURSIsICJJTlNF UlQiLCAiREVMRVRFIEZST00iLCAiTEVUIik7CiAKIC8qCiAgKiBQUkVQQVJFIFRSQU5TQUNUSU9O IGlzIG1pc3Npbmcgb24gcHVycG9zZS4gSXQncyBpbnRlbmRlZCBmb3IgdHJhbnNhY3Rpb24KQEAg LTM1NDcsNiArMzU4NiwxNCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50 IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgiVVBEQVRFIiwgTWF0Y2hB bnksICJTRVQiLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIj0iKTsKIAorLyog TEVUIC0tLSBjYW4gYmUgaW5zaWRlIEVYUExBSU4sIFBSRVBBUkUgZXRjICovCisJLyogSWYgcHJl di4gd29yZCBpcyBMRVQgc3VnZ2VzdCBhIGxpc3Qgb2YgdmFyaWFibGVzICovCisJZWxzZSBpZiAo VGFpbE1hdGNoZXMxKCJMRVQiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlf Zm9yX2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKKwkvKiBDb21wbGV0ZSBMRVQgPHZhcmlhYmxl PiB3aXRoICI9IiAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzMigiTEVUIiwgTWF0Y2hBbnkpKQor CQlDT01QTEVURV9XSVRIX0NPTlNUKCI9Iik7CisKIC8qIFVTRVIgTUFQUElORyAqLwogCWVsc2Ug aWYgKE1hdGNoZXMzKCJBTFRFUnxDUkVBVEV8RFJPUCIsICJVU0VSIiwgIk1BUFBJTkciKSkKIAkJ Q09NUExFVEVfV0lUSF9DT05TVCgiRk9SIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCmluZGV4 IDQ2YzI3MWE0NmMuLjNlMzhhMDVlNTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv ZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBAIC0x ODAsNyArMTgwLDggQEAgdHlwZWRlZiBlbnVtIE9iamVjdENsYXNzCiAJT0NMQVNTX1BVQkxJQ0FU SU9OLAkJCS8qIHBnX3B1YmxpY2F0aW9uICovCiAJT0NMQVNTX1BVQkxJQ0FUSU9OX1JFTCwJCS8q IHBnX3B1YmxpY2F0aW9uX3JlbCAqLwogCU9DTEFTU19TVUJTQ1JJUFRJT04sCQkvKiBwZ19zdWJz Y3JpcHRpb24gKi8KLQlPQ0xBU1NfVFJBTlNGT1JNCQkJLyogcGdfdHJhbnNmb3JtICovCisJT0NM QVNTX1RSQU5TRk9STSwJCQkvKiBwZ190cmFuc2Zvcm0gKi8KKwlPQ0xBU1NfVkFSSUFCTEUJCQkJ LyogcGdfdmFyaWFibGUgKi8KIH0gT2JqZWN0Q2xhc3M7CiAKICNkZWZpbmUgTEFTVF9PQ0xBU1MJ CU9DTEFTU19UUkFOU0ZPUk0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXhp bmcuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXhpbmcuaAppbmRleCAyNDkxNTgyNGNhLi5k YWU4MGMyMGE4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4aW5nLmgKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleGluZy5oCkBAIC0zNjAsNCArMzYwLDEwIEBAIERF Q0xBUkVfVU5JUVVFX0lOREVYKHBnX3N1YnNjcmlwdGlvbl9zdWJuYW1lX2luZGV4LCA2MTE1LCBv biBwZ19zdWJzY3JpcHRpb24gdXNpCiBERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19zdWJzY3JpcHRp b25fcmVsX3NycmVsaWRfc3JzdWJpZF9pbmRleCwgNjExNywgb24gcGdfc3Vic2NyaXB0aW9uX3Jl bCB1c2luZyBidHJlZShzcnJlbGlkIG9pZF9vcHMsIHNyc3ViaWQgb2lkX29wcykpOwogI2RlZmlu ZSBTdWJzY3JpcHRpb25SZWxTcnJlbGlkU3JzdWJpZEluZGV4SWQgNjExNwogCitERUNMQVJFX1VO SVFVRV9JTkRFWChwZ192YXJpYWJsZV9vaWRfaW5kZXgsIDQyODgsIG9uIHBnX3ZhcmlhYmxlIHVz aW5nIGJ0cmVlKG9pZCBvaWRfb3BzKSk7CisjZGVmaW5lIFZhcmlhYmxlT2JqZWN0SW5kZXhJZCA0 Mjg4CisKK0RFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX3ZhcmlhYmxlX3Zhcm5hbWVfbnNwX2luZGV4 LCA0Mjg5LCBvbiBwZ192YXJpYWJsZSB1c2luZyBidHJlZSh2YXJuYW1lIG5hbWVfb3BzLCB2YXJu YW1lc3BhY2Ugb2lkX29wcykpOworI2RlZmluZSBWYXJpYWJsZU5hbWVOc3BJbmRleElkICA0Mjg5 CisKICNlbmRpZgkJCQkJCQkvKiBJTkRFWElOR19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL25hbWVzcGFjZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaApp bmRleCA3OTkxZGU1ZTIxLi43NTA2OGQ3ZTkyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL25hbWVzcGFjZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmgKQEAg LTc1LDEwICs3NSwxMyBAQCBleHRlcm4gT2lkIFJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5h bWVzcGFjZShSYW5nZVZhciAqbmV3UmVsYXRpb24sCiBleHRlcm4gdm9pZCBSYW5nZVZhckFkanVz dFJlbGF0aW9uUGVyc2lzdGVuY2UoUmFuZ2VWYXIgKm5ld1JlbGF0aW9uLCBPaWQgbnNwaWQpOwog ZXh0ZXJuIE9pZAlSZWxuYW1lR2V0UmVsaWQoY29uc3QgY2hhciAqcmVsbmFtZSk7CiBleHRlcm4g Ym9vbCBSZWxhdGlvbklzVmlzaWJsZShPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgVmFyaWFibGVJ c1Zpc2libGUoT2lkIHJlbGlkKTsKIAogZXh0ZXJuIE9pZAlUeXBlbmFtZUdldFR5cGlkKGNvbnN0 IGNoYXIgKnR5cG5hbWUpOwogZXh0ZXJuIGJvb2wgVHlwZUlzVmlzaWJsZShPaWQgdHlwaWQpOwog CitleHRlcm4gYm9vbCBWYXJpYWJsZUlzVmlzaWJsZShPaWQgdmFyaWQpOworCiBleHRlcm4gRnVu Y0NhbmRpZGF0ZUxpc3QgRnVuY25hbWVHZXRDYW5kaWRhdGVzKExpc3QgKm5hbWVzLAogCQkJCQkg IGludCBuYXJncywgTGlzdCAqYXJnbmFtZXMsCiAJCQkJCSAgYm9vbCBleHBhbmRfdmFyaWFkaWMs CkBAIC0xNDUsNiArMTQ4LDEwIEBAIGV4dGVybiB2b2lkIFNldFRlbXBOYW1lc3BhY2VTdGF0ZShP aWQgdGVtcE5hbWVzcGFjZUlkLAogCQkJCQkgIE9pZCB0ZW1wVG9hc3ROYW1lc3BhY2VJZCk7CiBl eHRlcm4gdm9pZCBSZXNldFRlbXBUYWJsZU5hbWVzcGFjZSh2b2lkKTsKIAorZXh0ZXJuIExpc3Qg Kk5hbWVzRnJvbUxpc3QoTGlzdCAqbmFtZXMpOworZXh0ZXJuIE9pZCBsb29rdXBfdmFyaWFibGUo Y29uc3QgY2hhciAqbnNwbmFtZSwgY29uc3QgY2hhciAqdmFybmFtZSwgYm9vbCBtaXNzaW5nX29r KTsKK2V4dGVybiBPaWQgaWRlbnRpZnlfdmFyaWFibGUoTGlzdCAqbmFtZXMsIGNoYXIgKiphdHRy bmFtZSwgYm9vbCAqbm90X3VuaXEpOworCiBleHRlcm4gT3ZlcnJpZGVTZWFyY2hQYXRoICpHZXRP dmVycmlkZVNlYXJjaFBhdGgoTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKIGV4dGVybiBPdmVycmlk ZVNlYXJjaFBhdGggKkNvcHlPdmVycmlkZVNlYXJjaFBhdGgoT3ZlcnJpZGVTZWFyY2hQYXRoICpw YXRoKTsKIGV4dGVybiBib29sIE92ZXJyaWRlU2VhcmNoUGF0aE1hdGNoZXNDdXJyZW50KE92ZXJy aWRlU2VhcmNoUGF0aCAqcGF0aCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2RlZmF1bHRfYWNsLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmgKaW5k ZXggZDA0MTBmNTU4Ni4uNTZkZWVmMWE0NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19kZWZhdWx0X2FjbC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9h Y2wuaApAQCAtNTcsNiArNTcsNyBAQCB0eXBlZGVmIEZvcm1EYXRhX3BnX2RlZmF1bHRfYWNsICpG b3JtX3BnX2RlZmF1bHRfYWNsOwogI2RlZmluZSBERUZBQ0xPQkpfRlVOQ1RJT04JCSdmJyAvKiBm dW5jdGlvbiAqLwogI2RlZmluZSBERUZBQ0xPQkpfVFlQRQkJCSdUJyAvKiB0eXBlICovCiAjZGVm aW5lIERFRkFDTE9CSl9OQU1FU1BBQ0UJCSduJyAvKiBuYW1lc3BhY2UgKi8KKyNkZWZpbmUgREVG QUNMT0JKX1ZBUklBQkxFCQknVicgLyogdmFyaWFibGUgKi8KIAogI2VuZGlmCQkJCQkJCS8qIEVY UE9TRV9UT19DTElFTlRfQ09ERSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBhMTQ2 NTEwMTBmLi42MWNiZTY1ODA1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTU5NjEsNiAr NTk2MSw5IEBACiAgIHByb25hbWUgPT4gJ3BnX2NvbGxhdGlvbl9pc192aXNpYmxlJywgcHJvY29z dCA9PiAnMTAnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3JldHR5cGUgPT4gJ2Jvb2wnLCBw cm9hcmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19jb2xsYXRpb25faXNfdmlzaWJs ZScgfSwKK3sgb2lkID0+ICc0MTg3JywgZGVzY3IgPT4gJ2lzIHNjaGVtYSB2YXJpYWJsZSB2aXNp YmxlIGluIHNlYXJjaCBwYXRoPycsCisgIHByb25hbWUgPT4gJ3BnX3ZhcmlhYmxlX2lzX3Zpc2li bGUnLCBwcm9jb3N0ID0+ICcxMCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcmV0dHlwZSA9 PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLCBwcm9zcmMgPT4gJ3BnX3ZhcmlhYmxlX2lz X3Zpc2libGUnIH0sCiAKIHsgb2lkID0+ICcyODU0JywgZGVzY3IgPT4gJ2dldCBPSUQgb2YgY3Vy cmVudCBzZXNzaW9uXCdzIHRlbXAgc2NoZW1hLCBpZiBhbnknLAogICBwcm9uYW1lID0+ICdwZ19t eV90ZW1wX3NjaGVtYScsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5oIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjM0ZjRjMzQyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3ZhcmlhYmxlLmgKQEAgLTAsMCArMSw4NSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor ICogcGdfdmFyaWFibGUuaAorICoJICBkZWZpbml0aW9uIG9mIHNjaGVtYSB2YXJpYWJsZXMgc3lz dGVtIGNhdGFsb2cgKHBnX3ZhcmlhYmxlcykKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk2LTIwMTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2Yg Q2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaAorICoK KyAqIE5PVEVTCisgKgkgIFRoZSBDYXRhbG9nLnBtIG1vZHVsZSByZWFkcyB0aGlzIGZpbGUgYW5k IGRlcml2ZXMgc2NoZW1hCisgKgkgIGluZm9ybWF0aW9uLgorICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCisjaWZuZGVmIFBHX1ZBUklBQkxFX0gKKyNkZWZpbmUgUEdfVkFSSUFCTEVfSAorCisj aW5jbHVkZSAiY2F0YWxvZy9nZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJl c3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlX2QuaCIKKyNpbmNsdWRlICJ1dGls cy9hY2wuaCIKKworLyogLS0tLS0tLS0tLS0tLS0tLQorICoJCXBnX3ZhcmlhYmxlIGRlZmluaXRp b24uICBjcHAgdHVybnMgdGhpcyBpbnRvCisgKgkJdHlwZWRlZiBzdHJ1Y3QgRm9ybURhdGFfcGdf dmFyaWFibGUKKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLworQ0FUQUxPRyhwZ192YXJpYWJsZSw0 Mjg3LFZhcmlhYmxlUmVsYXRpb25JZCkKK3sKKwlOYW1lRGF0YQl2YXJuYW1lOwkJLyogdmFyaWFi bGUgbmFtZSAqLworCU9pZAkJCXZhcm5hbWVzcGFjZTsJLyogT0lEIG9mIG5hbWVzcGFjZSBjb250 YWluaW5nIHZhcmlhYmxlIGNsYXNzICovCisJT2lkCQkJdmFydHlwZTsJCS8qIE9JRCBvZiBlbnRy eSBpbiBwZ190eXBlIGZvciB2YXJpYWJsZSdzIHR5cGUgKi8KKwlpbnQzMgkJdmFydHlwbW9kOwkJ CS8qIHR5cG1vZGUgZm9yIHZhcmlhYmxlJ3MgdHlwZSAqLworCU9pZAkJCXZhcm93bmVyOwkJLyog Y2xhc3Mgb3duZXIgKi8KKworI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVu Z3RoIGZpZWxkcyBzdGFydCBoZXJlICovCisKKwkvKiBsaXN0IG9mIGV4cHJlc3Npb24gdHJlZXMg Zm9yIHZhcmlhYmxlIGRlZmF1bHQgKE5VTEwgaWYgbm9uZSkgKi8KKwlwZ19ub2RlX3RyZWUgdmFy ZGVmZXhwciBCS0lfREVGQVVMVChfbnVsbF8pOworCisJYWNsaXRlbQkJdmFyYWNsWzFdIEJLSV9E RUZBVUxUKF9udWxsXyk7CQkvKiBhY2Nlc3MgcGVybWlzc2lvbnMgKi8KKworI2VuZGlmCit9IEZv cm1EYXRhX3BnX3ZhcmlhYmxlOworCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJRm9ybV9wZ192 YXJpYWJsZSBjb3JyZXNwb25kcyB0byBhIHBvaW50ZXIgdG8gYSB0dXBsZSB3aXRoCisgKgkJdGhl IGZvcm1hdCBvZiBwZ192YXJpYWJsZSByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAq LwordHlwZWRlZiBGb3JtRGF0YV9wZ192YXJpYWJsZSAqRm9ybV9wZ192YXJpYWJsZTsKKwordHlw ZWRlZiBzdHJ1Y3QgVmFyaWFibGUKK3sKKwlPaWQJCW9pZDsKKwljaGFyICAgKm5hbWU7CisJT2lk CQluYW1lc3BhY2U7CisJT2lkCQl0eXBpZDsKKwlpbnQzMgl0eXBtb2Q7CisJT2lkCQlvd25lcjsK KwlOb2RlICAgKmRlZmV4cHI7CisJQWNsCSAgICphY2w7Cit9IFZhcmlhYmxlOworCisvKiByZXR1 cm5zIGZpZWxkcyBmcm9tIHBnX3ZhcmlhYmxlIHRhYmxlICovCitleHRlcm4gY2hhciAqZ2V0X3Nj aGVtYV92YXJpYWJsZV9uYW1lKE9pZCB2YXJpZCk7CitleHRlcm4gdm9pZCBnZXRfc2NoZW1hX3Zh cmlhYmxlX3R5cGVfdHlwbW9kKE9pZCB2YXJpZCwgT2lkICp0eXBpZCwgaW50MzIgKnR5cG1vZCk7 CisKKy8qIHJldHVybnMgbmFtZSBvZiB2YXJpYWJsZSBiYXNlZCBvbiBjdXJyZW50IHNlYXJjaCBw YXRoICovCitleHRlcm4gY2hhciAqc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKE9pZCB2YXJpZCk7 CisKK2V4dGVybiBWYXJpYWJsZSAqR2V0VmFyaWFibGUoT2lkIHZhcmlkLCBib29sIG1pc3Npbmdf b2spOworZXh0ZXJuIE9iamVjdEFkZHJlc3MgVmFyaWFibGVDcmVhdGUoY29uc3QgY2hhciAqdmFy TmFtZSwKKwkJCQkJCQkJCSAgIE9pZCB2YXJOYW1lc3BhY2UsCisJCQkJCQkJCQkgICBPaWQgdmFy VHlwZSwKKwkJCQkJCQkJCSAgIGludDMyIHZhclR5cG1vZCwKKwkJCQkJCQkJCSAgIE9pZCB2YXJP d25lciwKKwkJCQkJCQkJCSAgIE5vZGUgKnZhckRlZmV4cHIsCisJCQkJCQkJCQkgICBib29sIGlm X25vdF9leGlzdHMpOworCisKKyNlbmRpZgkJCQkJCQkvKiBQR19WQVJJQUJMRV9IICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi4yODIzZDM1YjdjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvc2NoZW1hdmFyaWFibGUuaApAQCAtMCwwICsxLDM1IEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBzY2hlbWF2YXJpYWJsZS5oCisgKgkgIHByb3RvdHlwZXMgZm9yIHNjaGVtYXZh cmlhYmxlLmMuCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBzcmMvaW5jbHVkZS9jb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKworI2lmbmRlZiBTQ0hFTUFWQVJJQUJMRV9ICisjZGVmaW5lIFNDSEVNQVZB UklBQkxFX0gKKworI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJhbXMuaCIKKyNpbmNs dWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvcGxhbm5vZGVzLmgiCisj aW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgorCitleHRlcm4gdm9pZCBSZXNldFNj aGVtYVZhcmlhYmxlQ2FjaGUodm9pZCk7CisKK2V4dGVybiB2b2lkIFJlbW92ZVZhcmlhYmxlQnlJ ZChPaWQgdmFyaWQpOworZXh0ZXJuIE9iamVjdEFkZHJlc3MgRGVmaW5lU2NoZW1hVmFyaWFibGUo UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTY2hlbWFWYXJTdG10ICpzdG10KTsKKworZXh0ZXJu IERhdHVtIEdldFNjaGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLCBPaWQgZXhw ZWN0ZWRfdHlwaWQsIGJvb2wgY29weSk7CitleHRlcm4gdm9pZCBTZXRTY2hlbWFWYXJpYWJsZShP aWQgdmFyaWQsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBt b2QpOworCitleHRlcm4gdm9pZCBkb0xldFN0bXQoUGxhbm5lZFN0bXQgKnBzdG10LCBQYXJhbUxp c3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGNoYXIgKnF1 ZXJ5U3RyaW5nKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCBmN2IxZjc3 NjE2Li40ZmRjZWI2Y2VlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhw ci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTEzOCw2ICsxMzgs NyBAQCB0eXBlZGVmIGVudW0gRXhwckV2YWxPcAogCUVFT1BfUEFSQU1fRVhFQywKIAlFRU9QX1BB UkFNX0VYVEVSTiwKIAlFRU9QX1BBUkFNX0NBTExCQUNLLAorCUVFT1BfUEFSQU1fVkFSSUFCTEUs CiAKIAkvKiByZXR1cm4gQ2FzZVRlc3RFeHByIHZhbHVlICovCiAJRUVPUF9DQVNFX1RFU1RWQUws CkBAIC0zNDQsMTMgKzM0NSwyMiBAQCB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAKIAkJCVR1 cGxlRGVzYwlhcmdkZXNjOwogCQl9CQkJbnVsbHRlc3Rfcm93OwogCi0JCS8qIGZvciBFRU9QX1BB UkFNX0VYRUMvRVhURVJOICovCisJCS8qIGZvciBFRU9QX1BBUkFNX0VYRUMvRVhURVJOL1ZBUklB QkxFICovCiAJCXN0cnVjdAogCQl7Ci0JCQlpbnQJCQlwYXJhbWlkOwkvKiBudW1lcmljIElEIGZv ciBwYXJhbWV0ZXIgKi8KLQkJCU9pZAkJCXBhcmFtdHlwZTsJLyogT0lEIG9mIHBhcmFtZXRlcidz IGRhdGF0eXBlICovCisJCQlpbnQJCQlwYXJhbWlkOwkJLyogbnVtZXJpYyBJRCBmb3IgcGFyYW1l dGVyICovCisJCQlPaWQJCQlwYXJhbXR5cGU7CQkvKiBPSUQgb2YgcGFyYW1ldGVyJ3MgZGF0YXR5 cGUgKi8KIAkJfQkJCXBhcmFtOwogCisJCS8qIGZvciBFRU9QX1BBUkFNX1ZBUklBQkxFICovCisJ CXN0cnVjdAorCQl7CisJCQlpbnQJCQlwYXJhbWlkOwkJLyogbnVtZXJpYyBJRCBmb3IgcGFyYW1l dGVyICovCisJCQlPaWQJCQl2YXJvaWQ7CQkJLyogT0lEIG9mIGFzc2lnbmVkIHZhcmlhYmxlICov CisJCQlPaWQJCQlwYXJhbXR5cGU7CQkvKiBPSUQgb2YgcGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8K KwkJfQkJCXZwYXJhbTsKKworCiAJCS8qIGZvciBFRU9QX1BBUkFNX0NBTExCQUNLICovCiAJCXN0 cnVjdAogCQl7CkBAIC03MDAsNiArNzEwLDggQEAgZXh0ZXJuIHZvaWQgRXhlY0V2YWxQYXJhbUV4 ZWMoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIGV4dGVybiB2b2lkIEV4ZWNF dmFsUGFyYW1FeGVjUGFyYW1zKEJpdG1hcHNldCAqcGFyYW1zLCBFU3RhdGUgKmVzdGF0ZSk7CiBl eHRlcm4gdm9pZCBFeGVjRXZhbFBhcmFtRXh0ZXJuKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFs U3RlcCAqb3AsCiAJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCk7CitleHRlcm4gdm9pZCBFeGVj RXZhbFBhcmFtVmFyaWFibGUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJ CQkJRXhwckNvbnRleHQgKmVjb250ZXh0KTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsU1FMVmFsdWVG dW5jdGlvbihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lk IEV4ZWNFdmFsQ3VycmVudE9mRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9w KTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsTmV4dFZhbHVlRXhwcihFeHByU3RhdGUgKnN0YXRlLCBF eHByRXZhbFN0ZXAgKm9wKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL3N2YXJp YWJsZVJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjhjODExNzcwMWYKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oCkBA IC0wLDAgKzEsMjUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHN2YXJpYWJsZVJlY2Vp dmVyLmgKKyAqCSAgcHJvdG90eXBlcyBmb3Igc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoKKyAqCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBv ZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvZXhlY3V0 b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNp Zm5kZWYgU1ZBUklBQkxFX1JFQ0VJVkVSX0gKKyNkZWZpbmUgU1ZBUklBQkxFX1JFQ0VJVkVSX0gK KworI2luY2x1ZGUgInRjb3AvZGVzdC5oIgorCisKK2V4dGVybiBEZXN0UmVjZWl2ZXIgKkNyZWF0 ZVZhcmlhYmxlRGVzdFJlY2VpdmVyKHZvaWQpOworCitleHRlcm4gdm9pZCBTZXRWYXJpYWJsZURl c3RSZWNlaXZlclBhcmFtcyhEZXN0UmVjZWl2ZXIgKnNlbGYsIE9pZCB2YXJpZCk7CisKKyNlbmRp ZgkJCQkJCQkvKiBTVkFSSUFCTEVfUkVDRUlWRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRl eCAwMThmNTBiYmI3Li4zM2NjOGJlNTVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTAwLDYg KzEwMCw4IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogCWludAkJCXN0ZXBzX2xlbjsJCS8q IG51bWJlciBvZiBzdGVwcyBjdXJyZW50bHkgKi8KIAlpbnQJCQlzdGVwc19hbGxvYzsJLyogYWxs b2NhdGVkIGxlbmd0aCBvZiBzdGVwcyBhcnJheSAqLwogCisJaW50CQkJbnZhcmlhYmxlczsJCS8q IG51bWJlciBvZiB1c2VkIHZhcmlhYmxlcyAqLworCiAJc3RydWN0IFBsYW5TdGF0ZSAqcGFyZW50 OwkvKiBwYXJlbnQgUGxhblN0YXRlIG5vZGUsIGlmIGFueSAqLwogCVBhcmFtTGlzdEluZm8gZXh0 X3BhcmFtczsJLyogZm9yIGNvbXBpbGluZyBQQVJBTV9FWFRFUk4gbm9kZXMgKi8KIApAQCAtNDcy LDYgKzQ3NCw3IEBAIHR5cGVkZWYgc3RydWN0IFJlc3VsdFJlbEluZm8KIHR5cGVkZWYgc3RydWN0 IEVTdGF0ZQogewogCU5vZGVUYWcJCXR5cGU7CisJYm9vbAkJZXNfc2hhcmVkOwkJLyogcGxwZ3Nx bCB1c2VzIHNoYXJlIGVzdGF0ZSAqLwogCiAJLyogQmFzaWMgc3RhdGUgZm9yIGFsbCBxdWVyeSB0 eXBlczogKi8KIAlTY2FuRGlyZWN0aW9uIGVzX2RpcmVjdGlvbjsgLyogY3VycmVudCBzY2FuIGRp cmVjdGlvbiAqLwpAQCAtNTY0LDYgKzU2NywxNCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkv KiBUaGUgcGVyLXF1ZXJ5IHNoYXJlZCBtZW1vcnkgYXJlYSB0byB1c2UgZm9yIHBhcmFsbGVsIGV4 ZWN1dGlvbi4gKi8KIAlzdHJ1Y3QgZHNhX2FyZWEgKmVzX3F1ZXJ5X2RzYTsKIAorCWludAkJCWVz X3Jlc3VsdF92YXJpYWJsZTsJLyogT2lkIG9mIHRhcmdldCB2YXJpYWJsZSAqLworCisJLyogcXVl cnkgc2NoZW1hIHZhcmlhYmxlIGNhY2hlICovCisJaW50CQkJZXNfbnZhcmlhYmxlczsKKwlib29s CSAgICplc192YXJudWxsczsKKwlPaWQJCSAgICplc192YXJ0eXBlczsKKwlEYXR1bQkgICAqZXNf dmFydmFsdWVzOworCiAJLyoKIAkgKiBKSVQgaW5mb3JtYXRpb24uIGVzX2ppdF9mbGFncyBpbmRp Y2F0ZXMgd2hldGhlciBKSVQgc2hvdWxkIGJlIHBlcmZvcm1lZAogCSAqIGFuZCB3aXRoIHdoaWNo IG9wdGlvbnMuICBlc19qaXQgaXMgY3JlYXRlZCBvbi1kZW1hbmQgd2hlbiBKSVRpbmcgaXMKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9u b2Rlcy5oCmluZGV4IDY5N2QzZDdhNWYuLmRkN2ZkOGVkNDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtMzQ4 LDYgKzM0OCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVhdGVUYWJsZUFzU3RtdCwK IAlUX0NyZWF0ZVNlcVN0bXQsCiAJVF9BbHRlclNlcVN0bXQsCisJVF9DcmVhdGVTY2hlbWFWYXJT dG10LAogCVRfVmFyaWFibGVTZXRTdG10LAogCVRfVmFyaWFibGVTaG93U3RtdCwKIAlUX0Rpc2Nh cmRTdG10LApAQCAtNDE5LDYgKzQyMCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVh dGVTdGF0c1N0bXQsCiAJVF9BbHRlckNvbGxhdGlvblN0bXQsCiAJVF9DYWxsU3RtdCwKKwlUX0xl dFN0bXQsCiAKIAkvKgogCSAqIFRBR1MgRk9SIFBBUlNFIFRSRUUgTk9ERVMgKHBhcnNlbm9kZXMu aCkKQEAgLTY2Myw2ICs2NjUsNyBAQCB0eXBlZGVmIGVudW0gQ21kVHlwZQogCUNNRF9ERUxFVEUs CiAJQ01EX1VUSUxJVFksCQkJCS8qIGNtZHMgbGlrZSBjcmVhdGUsIGRlc3Ryb3ksIGNvcHksIHZh Y3V1bSwKIAkJCQkJCQkJICogZXRjLiAqLworCUNNRF9QTEFOX1VUSUxJVFksCQkJLyogb25seSBs ZXQgc3RtdCBub3csIHJlcXVpcmVzIHBsYW5uaW5nICovCiAJQ01EX05PVEhJTkcJCQkJCS8qIGR1 bW15IGNvbW1hbmQgZm9yIGluc3RlYWQgbm90aGluZyBydWxlcwogCQkJCQkJCQkgKiB3aXRoIHF1 YWwgKi8KIH0gQ21kVHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAwN2FiMWEzZGRlLi4y ZDRhM2NiMWI2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC04NCw3ICs4NCw5IEBAIHR5cGVk ZWYgdWludDMyIEFjbE1vZGU7CQkJLyogYSBiaXRtYXNrIG9mIHByaXZpbGVnZSBiaXRzICovCiAj ZGVmaW5lIEFDTF9DUkVBVEUJCSgxPDw5KQkvKiBmb3IgbmFtZXNwYWNlcyBhbmQgZGF0YWJhc2Vz ICovCiAjZGVmaW5lIEFDTF9DUkVBVEVfVEVNUCAoMTw8MTApIC8qIGZvciBkYXRhYmFzZXMgKi8K ICNkZWZpbmUgQUNMX0NPTk5FQ1QJCSgxPDwxMSkgLyogZm9yIGRhdGFiYXNlcyAqLwotI2RlZmlu ZSBOX0FDTF9SSUdIVFMJMTIJCS8qIDEgcGx1cyB0aGUgbGFzdCAxPDx4ICovCisjZGVmaW5lIEFD TF9SRUFECQkoMTw8MTIpIC8qIGZvciB2YXJpYWJsZXMgKi8KKyNkZWZpbmUgQUNMX1dSSVRFCQko MTw8MTMpIC8qIGZvciB2YXJpYWJsZXMgKi8KKyNkZWZpbmUgTl9BQ0xfUklHSFRTCTE0CQkvKiAx IHBsdXMgdGhlIGxhc3QgMTw8eCAqLwogI2RlZmluZSBBQ0xfTk9fUklHSFRTCTAKIC8qIEN1cnJl bnRseSwgU0VMRUNUIC4uLiBGT1IgW0tFWV0gVVBEQVRFL1NIQVJFIHJlcXVpcmVzIFVQREFURSBw cml2aWxlZ2VzICovCiAjZGVmaW5lIEFDTF9TRUxFQ1RfRk9SX1VQREFURQlBQ0xfVVBEQVRFCkBA IC0xMjEsNiArMTIzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAogCWludAkJCXJlc3VsdFJl bGF0aW9uOyAvKiBydGFibGUgaW5kZXggb2YgdGFyZ2V0IHJlbGF0aW9uIGZvcgogCQkJCQkJCQkg KiBJTlNFUlQvVVBEQVRFL0RFTEVURTsgMCBmb3IgU0VMRUNUICovCisJaW50CQkJcmVzdWx0VmFy aWFibGU7CS8qIE9pZCBvZiB0YXJnZXQgdmFyaWFibGUgb3IgMCAqLwogCiAJYm9vbAkJaGFzQWdn czsJCS8qIGhhcyBhZ2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQlo YXNXaW5kb3dGdW5jczsgLyogaGFzIHdpbmRvdyBmdW5jdGlvbnMgaW4gdGxpc3QgKi8KQEAgLTE1 MDUsNiArMTUwOCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBVcGRhdGVTdG10CiAJV2l0aENsYXVzZSAq d2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCiB9IFVwZGF0ZVN0bXQ7CiAKKy8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlMZXQgU3RhdGVtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IExldFN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOwor CUxpc3QJICAgKnRhcmdldDsJCQkvKiB0YXJnZXQgdmFyaWFibGUgKi8KKwlOb2RlCSAgICpzZWxl Y3RTdG10OwkJLyogc291cmNlIGV4cHJlc3Npb24gKi8KKwlpbnQJCQlsb2NhdGlvbjsKK30gTGV0 U3RtdDsKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCVNlbGVjdCBTdGF0ZW1lbnQK ICAqCkBAIC0xNjgyLDYgKzE2OTcsNyBAQCB0eXBlZGVmIGVudW0gT2JqZWN0VHlwZQogCU9CSkVD VF9UU1RFTVBMQVRFLAogCU9CSkVDVF9UWVBFLAogCU9CSkVDVF9VU0VSX01BUFBJTkcsCisJT0JK RUNUX1ZBUklBQkxFLAogCU9CSkVDVF9WSUVXCiB9IE9iamVjdFR5cGU7CiAKQEAgLTI0OTcsNiAr MjUxMywxOSBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclNlcVN0bXQKIAlib29sCQltaXNzaW5nX29r OwkJLyogc2tpcCBlcnJvciBpZiBhIHJvbGUgaXMgbWlzc2luZz8gKi8KIH0gQWx0ZXJTZXFTdG10 OwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJe0NyZWF0ZXxBbHRlcn0gVkFSSUFC TEUgU3RhdGVtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3Ry dWN0IENyZWF0ZVNjaGVtYVZhclN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAg KnZhcmlhYmxlOwkJLyogdGhlIHZhcmlhYmxlIHRvIGNyZWF0ZSAqLworCVR5cGVOYW1lICAgKnR5 cGVOYW1lOwkJLyogdGhlIHR5cGUgb2YgdmFyaWFibGUgKi8KKwlOb2RlCSAgICpkZWZleHByOwkJ LyogZGVmYXVsdCBleHByZXNzaW9uICovCisJYm9vbAkJaWZfbm90X2V4aXN0czsJLyogZG8gbm90 aGluZyBpZiBpdCBhbHJlYWR5IGV4aXN0cyAqLworfSBDcmVhdGVTY2hlbWFWYXJTdG10OworCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJQ3JlYXRlIHtBZ2dyZWdhdGV8T3BlcmF0b3J8 VHlwZX0gU3RhdGVtZW50CiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMjM4LDcgKzMy NjcsOCBAQCB0eXBlZGVmIGVudW0gRGlzY2FyZE1vZGUKIAlESVNDQVJEX0FMTCwKIAlESVNDQVJE X1BMQU5TLAogCURJU0NBUkRfU0VRVUVOQ0VTLAotCURJU0NBUkRfVEVNUAorCURJU0NBUkRfVEVN UCwKKwlESVNDQVJEX1ZBUklBQkxFUwogfSBEaXNjYXJkTW9kZTsKIAogdHlwZWRlZiBzdHJ1Y3Qg RGlzY2FyZFN0bXQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggN2MyYWJiZDAzYS4uMjU4OGYxNDU1 ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UGxhbm5lZFN0bXQKIHsKIAlOb2RlVGFnCQl0eXBlOwogCi0JQ21kVHlwZQkJY29tbWFuZFR5cGU7 CS8qIHNlbGVjdHxpbnNlcnR8dXBkYXRlfGRlbGV0ZXx1dGlsaXR5ICovCisJQ21kVHlwZQkJY29t bWFuZFR5cGU7CS8qIHNlbGVjdHxsZXR8aW5zZXJ0fHVwZGF0ZXxkZWxldGV8dXRpbGl0eSAqLwog CiAJdWludDY0CQlxdWVyeUlkOwkJLyogcXVlcnkgaWRlbnRpZmllciAoY29waWVkIGZyb20gUXVl cnkpICovCiAKQEAgLTgxLDYgKzgxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAkg Ki8KIAlMaXN0CSAgICpyb290UmVzdWx0UmVsYXRpb25zOwogCisJLyogT2lkIG9mIHRhcmdldCB2 YXJpYWJsZSBmb3IgTEVUIGNvbW1hbmQgKi8KKwlPaWQJCQlyZXN1bHRWYXJpYWJsZTsKKwogCUxp c3QJICAgKnN1YnBsYW5zOwkJLyogUGxhbiB0cmVlcyBmb3IgU3ViUGxhbiBleHByZXNzaW9uczsg bm90ZQogCQkJCQkJCQkgKiB0aGF0IHNvbWUgY291bGQgYmUgTlVMTCAqLwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oCmluZGV4IDFiNGIwZDc1YWYuLjk3ZjgzOGE1NGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5o CkBAIC0yMjksMTMgKzIyOSwxNyBAQCB0eXBlZGVmIHN0cnVjdCBDb25zdAogICoJCQkJb2YgdGhl IGBwYXJhbWlkJyBmaWVsZCBjb250YWluIHRoZSBTdWJMaW5rJ3Mgc3ViTGlua0lkLCBhbmQKICAq CQkJCXRoZSBsb3ctb3JkZXIgMTYgYml0cyBjb250YWluIHRoZSBjb2x1bW4gbnVtYmVyLiAgKFRo aXMgdHlwZQogICoJCQkJb2YgUGFyYW0gaXMgYWxzbyBjb252ZXJ0ZWQgdG8gUEFSQU1fRVhFQyBk dXJpbmcgcGxhbm5pbmcuKQorICoKKyAqCQlQQVJBTV9WQVJJQUJMRTogIFRoZSBwYXJhbWV0ZXIg aXMgYSBhY2Nlc3MgdG8gc2NoZW1hIHZhcmlhYmxlCisgKgkJCQlwYXJhbWlkIGhvbGRzIHZhcmlk LgogICovCiB0eXBlZGVmIGVudW0gUGFyYW1LaW5kCiB7CiAJUEFSQU1fRVhURVJOLAogCVBBUkFN X0VYRUMsCiAJUEFSQU1fU1VCTElOSywKLQlQQVJBTV9NVUxUSUVYUFIKKwlQQVJBTV9NVUxUSUVY UFIsCisJUEFSQU1fVkFSSUFCTEUKIH0gUGFyYW1LaW5kOwogCiB0eXBlZGVmIHN0cnVjdCBQYXJh bQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCmluZGV4IDIzZGI0MDE0N2IuLmQzZWQzZjRkMGYgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmgKQEAgLTIzMSw2ICsyMzEsNyBAQCBQR19LRVlXT1JEKCJsZWFkaW5nIiwgTEVBRElORywg UkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxlYWtwcm9vZiIsIExFQUtQUk9PRiwgVU5S RVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgibGVhc3QiLCBMRUFTVCwgQ09MX05BTUVfS0VZ V09SRCkKIFBHX0tFWVdPUkQoImxlZnQiLCBMRUZULCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQor UEdfS0VZV09SRCgibGV0IiwgTEVULCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJs ZXZlbCIsIExFVkVMLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsaWtlIiwgTElL RSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxpbWl0IiwgTElNSVQsIFJF U0VSVkVEX0tFWVdPUkQpCkBAIC00MzQsNiArNDM1LDggQEAgUEdfS0VZV09SRCgidmFsaWRhdG9y IiwgVkFMSURBVE9SLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YWx1ZSIsIFZB TFVFX1AsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZhbHVlcyIsIFZBTFVFUywg Q09MX05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZhcmNoYXIiLCBWQVJDSEFSLCBDT0xfTkFN RV9LRVlXT1JEKQorUEdfS0VZV09SRCgidmFyaWFibGUiLCBWQVJJQUJMRSwgVU5SRVNFUlZFRF9L RVlXT1JEKQorUEdfS0VZV09SRCgidmFyaWFibGVzIiwgVkFSSUFCTEVTLCBVTlJFU0VSVkVEX0tF WVdPUkQpCiBQR19LRVlXT1JEKCJ2YXJpYWRpYyIsIFZBUklBRElDLCBSRVNFUlZFRF9LRVlXT1JE KQogUEdfS0VZV09SRCgidmFyeWluZyIsIFZBUllJTkcsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBH X0tFWVdPUkQoInZlcmJvc2UiLCBWRVJCT1NFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3Bh cnNlci9wYXJzZV9ub2RlLmgKaW5kZXggMDIzMDU0MzgxMC4uZjdjMmU2N2YzMyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJz ZXIvcGFyc2Vfbm9kZS5oCkBAIC02OSw3ICs2OSw5IEBAIHR5cGVkZWYgZW51bSBQYXJzZUV4cHJL aW5kCiAJRVhQUl9LSU5EX1RSSUdHRVJfV0hFTiwJCS8qIFdIRU4gY29uZGl0aW9uIGluIENSRUFU RSBUUklHR0VSICovCiAJRVhQUl9LSU5EX1BPTElDWSwJCQkvKiBVU0lORyBvciBXSVRIIENIRUNL IGV4cHIgaW4gcG9saWN5ICovCiAJRVhQUl9LSU5EX1BBUlRJVElPTl9FWFBSRVNTSU9OLCAvKiBQ QVJUSVRJT04gQlkgZXhwcmVzc2lvbiAqLwotCUVYUFJfS0lORF9DQUxMX0FSR1VNRU5UCQkvKiBw cm9jZWR1cmUgYXJndW1lbnQgaW4gQ0FMTCAqLworCUVYUFJfS0lORF9DQUxMX0FSR1VNRU5ULAkJ LyogcHJvY2VkdXJlIGFyZ3VtZW50IGluIENBTEwgKi8KKwlFWFBSX0tJTkRfVkFSSUFCTEVfREVG QVVMVCwJLyogZGVmYXVsdCB2YWx1ZSBmb3Igc2NoZW1hIHZhcmlhYmxlICovCisJRVhQUl9LSU5E X0xFVAkJCQkvKiBMRVQgYXNzaWdubWVudCAoc2hvdWxkIGJlIHNhbWUgbGlrZSBVUERBVEUpICov CiB9IFBhcnNlRXhwcktpbmQ7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX3RhcmdldC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3RhcmdldC5oCmluZGV4IGVj NmUwYzEwMmYuLjFlZTE5OWVkOGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV90YXJnZXQuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdGFyZ2V0LmgKQEAgLTMy LDYgKzMyLDE2IEBAIGV4dGVybiBFeHByICp0cmFuc2Zvcm1Bc3NpZ25lZEV4cHIoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBFeHByICpleHByLAogCQkJCQkgIGludCBhdHRybm8sCiAJCQkJCSAgTGlzdCAq aW5kaXJlY3Rpb24sCiAJCQkJCSAgaW50IGxvY2F0aW9uKTsKK2V4dGVybiBOb2RlICp0cmFuc2Zv cm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCSAgIE5v ZGUgKmJhc2Vub2RlLAorCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnRhcmdldE5hbWUsCisJCQkJCQkJ ICAgYm9vbCB0YXJnZXRJc0FycmF5LAorCQkJCQkJCSAgIE9pZCB0YXJnZXRUeXBlSWQsCisJCQkJ CQkJICAgaW50MzIgdGFyZ2V0VHlwTW9kLAorCQkJCQkJCSAgIE9pZCB0YXJnZXRDb2xsYXRpb24s CisJCQkJCQkJICAgTGlzdENlbGwgKmluZGlyZWN0aW9uLAorCQkJCQkJCSAgIE5vZGUgKnJocywK KwkJCQkJCQkgICBpbnQgbG9jYXRpb24pOwogZXh0ZXJuIHZvaWQgdXBkYXRlVGFyZ2V0TGlzdEVu dHJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVGFyZ2V0RW50cnkgKnRsZSwKIAkJCQkJICBjaGFyICpj b2xuYW1lLCBpbnQgYXR0cm5vLAogCQkJCQkgIExpc3QgKmluZGlyZWN0aW9uLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvdGNvcC9kZXN0LmggYi9zcmMvaW5jbHVkZS90Y29wL2Rlc3QuaAppbmRl eCA4MmYwZjJlNzQxLi5jNDliNjUzNTU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2Rl c3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2Rlc3QuaApAQCAtOTYsNyArOTYsOCBAQCB0eXBl ZGVmIGVudW0KIAlEZXN0Q29weU91dCwJCQkJLyogcmVzdWx0cyBzZW50IHRvIENPUFkgVE8gY29k ZSAqLwogCURlc3RTUUxGdW5jdGlvbiwJCQkvKiByZXN1bHRzIHNlbnQgdG8gU1FMLWxhbmd1YWdl IGZ1bmMgbWdyICovCiAJRGVzdFRyYW5zaWVudFJlbCwJCQkvKiByZXN1bHRzIHNlbnQgdG8gdHJh bnNpZW50IHJlbGF0aW9uICovCi0JRGVzdFR1cGxlUXVldWUJCQkJLyogcmVzdWx0cyBzZW50IHRv IHR1cGxlIHF1ZXVlICovCisJRGVzdFR1cGxlUXVldWUsCQkJCS8qIHJlc3VsdHMgc2VudCB0byB0 dXBsZSBxdWV1ZSAqLworCURlc3RWYXJpYWJsZQkJCQkvKiByZXN1bHRzIHNlbnRzIHRvIHNjaGVt YSB2YXJpYWJsZSAqLwogfSBDb21tYW5kRGVzdDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmggYi9zcmMvaW5jbHVkZS91dGlscy9hY2wu aAppbmRleCBmNGQ0YmU4ZDBkLi5jNjI0ZDhkZDBiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9hY2wuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9hY2wuaApAQCAtMTQ3LDkgKzE0Nywx MSBAQCB0eXBlZGVmIEFycmF5VHlwZSBBY2w7CiAjZGVmaW5lIEFDTF9DUkVBVEVfQ0hSCQkJJ0Mn CiAjZGVmaW5lIEFDTF9DUkVBVEVfVEVNUF9DSFIJCSdUJwogI2RlZmluZSBBQ0xfQ09OTkVDVF9D SFIJCQknYycKKyNkZWZpbmUgQUNMX1JFQURfQ0hSCQkJJ1MnIC8qICdSJyBpcyBvY2N1cGF0ZWQg Ynkgb2xkIFJVTEUgcHJpdiAqLworI2RlZmluZSBBQ0xfV1JJVEVfQ0hSCQkJJ1cnCiAKIC8qIHN0 cmluZyBob2xkaW5nIGFsbCBwcml2aWxlZ2UgY29kZSBjaGFycywgaW4gb3JkZXIgYnkgYml0bWFz ayBwb3NpdGlvbiAqLwotI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19TVFIJImFyd2REeHRYVUNUYyIK KyNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfU1RSCSJhcndkRHh0WFVDVGNTVyIKIAogLyoKICAqIEJp dG1hc2tzIGRlZmluaW5nICJhbGwgcmlnaHRzIiBmb3IgZWFjaCBzdXBwb3J0ZWQgb2JqZWN0IHR5 cGUKQEAgLTE2Niw2ICsxNjgsNyBAQCB0eXBlZGVmIEFycmF5VHlwZSBBY2w7CiAjZGVmaW5lIEFD TF9BTExfUklHSFRTX1NDSEVNQQkJKEFDTF9VU0FHRXxBQ0xfQ1JFQVRFKQogI2RlZmluZSBBQ0xf QUxMX1JJR0hUU19UQUJMRVNQQUNFCShBQ0xfQ1JFQVRFKQogI2RlZmluZSBBQ0xfQUxMX1JJR0hU U19UWVBFCQkJKEFDTF9VU0FHRSkKKyNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEUJCShB Q0xfUkVBRHxBQ0xfV1JJVEUpCiAKIC8qIG9wZXJhdGlvbiBjb2RlcyBmb3IgcGdfKl9hY2xtYXNr ICovCiB0eXBlZGVmIGVudW0KQEAgLTI1Myw2ICsyNTYsOCBAQCBleHRlcm4gQWNsTW9kZSBwZ19m b3JlaWduX3NlcnZlcl9hY2xtYXNrKE9pZCBzcnZfb2lkLCBPaWQgcm9sZWlkLAogCQkJCQkJICBB Y2xNb2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KTsKIGV4dGVybiBBY2xNb2RlIHBnX3R5cGVfYWNs bWFzayhPaWQgdHlwZV9vaWQsIE9pZCByb2xlaWQsCiAJCQkJQWNsTW9kZSBtYXNrLCBBY2xNYXNr SG93IGhvdyk7CitleHRlcm4gQWNsTW9kZSBwZ192YXJpYWJsZV9hY2xtYXNrKE9pZCB2YXJfb2lk LCBPaWQgcm9sZWlkLAorCQkJCUFjbE1vZGUgbWFzaywgQWNsTWFza0hvdyBob3cpOwogCiBleHRl cm4gQWNsUmVzdWx0IHBnX2F0dHJpYnV0ZV9hY2xjaGVjayhPaWQgdGFibGVfb2lkLCBBdHRyTnVt YmVyIGF0dG51bSwKIAkJCQkJICBPaWQgcm9sZWlkLCBBY2xNb2RlIG1vZGUpOwpAQCAtMjY5LDYg KzI3NCw3IEBAIGV4dGVybiBBY2xSZXN1bHQgcGdfdGFibGVzcGFjZV9hY2xjaGVjayhPaWQgc3Bj X29pZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2RlKTsKIGV4dGVybiBBY2xSZXN1bHQgcGdfZm9y ZWlnbl9kYXRhX3dyYXBwZXJfYWNsY2hlY2soT2lkIGZkd19vaWQsIE9pZCByb2xlaWQsIEFjbE1v ZGUgbW9kZSk7CiBleHRlcm4gQWNsUmVzdWx0IHBnX2ZvcmVpZ25fc2VydmVyX2FjbGNoZWNrKE9p ZCBzcnZfb2lkLCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1vZGUpOwogZXh0ZXJuIEFjbFJlc3VsdCBw Z190eXBlX2FjbGNoZWNrKE9pZCB0eXBlX29pZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2RlKTsK K2V4dGVybiBBY2xSZXN1bHQgcGdfdmFyaWFibGVfYWNsY2hlY2soT2lkIHR5cGVfb2lkLCBPaWQg cm9sZWlkLCBBY2xNb2RlIG1vZGUpOwogCiBleHRlcm4gdm9pZCBhY2xjaGVja19lcnJvcihBY2xS ZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkgICBjb25zdCBjaGFyICpvYmpl Y3RuYW1lKTsKQEAgLTMwNSw2ICszMTEsNyBAQCBleHRlcm4gYm9vbCBwZ19leHRlbnNpb25fb3du ZXJjaGVjayhPaWQgZXh0X29pZCwgT2lkIHJvbGVpZCk7CiBleHRlcm4gYm9vbCBwZ19wdWJsaWNh dGlvbl9vd25lcmNoZWNrKE9pZCBwdWJfb2lkLCBPaWQgcm9sZWlkKTsKIGV4dGVybiBib29sIHBn X3N1YnNjcmlwdGlvbl9vd25lcmNoZWNrKE9pZCBzdWJfb2lkLCBPaWQgcm9sZWlkKTsKIGV4dGVy biBib29sIHBnX3N0YXRpc3RpY3Nfb2JqZWN0X293bmVyY2hlY2soT2lkIHN0YXRfb2lkLCBPaWQg cm9sZWlkKTsKK2V4dGVybiBib29sIHBnX3ZhcmlhYmxlX293bmVyY2hlY2soT2lkIHN0YXRfb2lk LCBPaWQgcm9sZWlkKTsKIGV4dGVybiBib29sIGhhc19jcmVhdGVyb2xlX3ByaXZpbGVnZShPaWQg cm9sZWlkKTsKIGV4dGVybiBib29sIGhhc19ieXBhc3NybHNfcHJpdmlsZWdlKE9pZCByb2xlaWQp OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IGU1NWVhNDAzNWIuLmNiM2Y0YWFjYTkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL2xzeXNjYWNoZS5oCkBAIC0xMjIsNiArMTIyLDcgQEAgZXh0ZXJuIGJvb2wgZ2V0X2Z1bmNf bGVha3Byb29mKE9pZCBmdW5jaWQpOwogZXh0ZXJuIGZsb2F0NCBnZXRfZnVuY19jb3N0KE9pZCBm dW5jaWQpOwogZXh0ZXJuIGZsb2F0NCBnZXRfZnVuY19yb3dzKE9pZCBmdW5jaWQpOwogZXh0ZXJu IE9pZAlnZXRfcmVsbmFtZV9yZWxpZChjb25zdCBjaGFyICpyZWxuYW1lLCBPaWQgcmVsbmFtZXNw YWNlKTsKK2V4dGVybiBPaWQgZ2V0X3Zhcm5hbWVfdmFyaWQoY29uc3QgY2hhciAqdmFybmFtZSwg T2lkIHZhcm5hbWVzcGFjZSk7CiBleHRlcm4gY2hhciAqZ2V0X3JlbF9uYW1lKE9pZCByZWxpZCk7 CiBleHRlcm4gT2lkCWdldF9yZWxfbmFtZXNwYWNlKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdl dF9yZWxfdHlwZV9pZChPaWQgcmVsaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv c3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgKaW5kZXggNGYzMzM1ODZl ZS4uNDUzNjk5YmUzYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaAor KysgYi9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCkBAIC0xMDcsOSArMTA3LDExIEBAIGVu dW0gU3lzQ2FjaGVJZGVudGlmaWVyCiAJVFlQRU5BTUVOU1AsCiAJVFlQRU9JRCwKIAlVU0VSTUFQ UElOR09JRCwKLQlVU0VSTUFQUElOR1VTRVJTRVJWRVIKKwlVU0VSTUFQUElOR1VTRVJTRVJWRVIs CisJVkFSSUFCTEVOQU1FTlNQLAorCVZBUklBQkxFT0lECiAKLSNkZWZpbmUgU3lzQ2FjaGVTaXpl IChVU0VSTUFQUElOR1VTRVJTRVJWRVIgKyAxKQorI2RlZmluZSBTeXNDYWNoZVNpemUgKFZBUklB QkxFT0lEICsgMSkKIH07CiAKIGV4dGVybiB2b2lkIEluaXRDYXRhbG9nQ2FjaGUodm9pZCk7CmRp ZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jIGIvc3JjL3BsL3BscGdzcWwv c3JjL3BsX2V4ZWMuYwppbmRleCAzODBkMWRlOGY0Li5hYzcxZGQ3ZDdhIDEwMDY0NAotLS0gYS9z cmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9l eGVjLmMKQEAgLTgwNDksNiArODA0OSw3IEBAIHBscGdzcWxfY3JlYXRlX2Vjb250ZXh0KFBMcGdT UUxfZXhlY3N0YXRlICplc3RhdGUpCiAJCXsKIAkJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKIAkJCXNoYXJlZF9zaW1wbGVfZXZhbF9l c3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisJCQlzaGFyZWRfc2ltcGxlX2V2YWxfZXN0 YXRlLT5lc19zaGFyZWQgPSB0cnVlOwogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOwogCQl9CiAJCWVzdGF0ZS0+c2ltcGxlX2V2YWxfZXN0YXRlID0gc2hhcmVkX3NpbXBsZV9l dmFsX2VzdGF0ZTsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9oYW5kbGVyLmMg Yi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfaGFuZGxlci5jCmluZGV4IDdkMzY0N2ExMmQuLjdmMTgz ZDRmMWIgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9oYW5kbGVyLmMKKysrIGIv c3JjL3BsL3BscGdzcWwvc3JjL3BsX2hhbmRsZXIuYwpAQCAtMzMyLDYgKzMzMiw3IEBAIHBscGdz cWxfaW5saW5lX2hhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykKIAogCS8qIENyZWF0ZSBhIHByaXZh dGUgRVN0YXRlIGZvciBzaW1wbGUtZXhwcmVzc2lvbiBleGVjdXRpb24gKi8KIAlzaW1wbGVfZXZh bF9lc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisJc2ltcGxlX2V2YWxfZXN0YXRlLT5l c19zaGFyZWQgPSB0cnVlOwogCiAJLyogQW5kIHJ1biB0aGUgZnVuY3Rpb24gKi8KIAlQR19UUlko KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19zYW5pdHkub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX3Nhbml0eS5vdXQKaW5kZXggMmQzNTIy YjUwMC4uNDgyODZmOGUxYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9t aXNjX3Nhbml0eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX3Nhbml0 eS5vdXQKQEAgLTEwNSw1ICsxMDUsNyBAQCBPUkRFUiBCWSAxLCAyOwogIHBnX2luZGV4ICAgICAg ICAgICAgICAgIHwgaW5kcHJlZCAgICAgICB8IHBnX25vZGVfdHJlZQogIHBnX2xhcmdlb2JqZWN0 ICAgICAgICAgIHwgZGF0YSAgICAgICAgICB8IGJ5dGVhCiAgcGdfbGFyZ2VvYmplY3RfbWV0YWRh dGEgfCBsb21hY2wgICAgICAgIHwgYWNsaXRlbVtdCi0oMTEgcm93cykKKyBwZ192YXJpYWJsZSAg ICAgICAgICAgICB8IHZhcmFjbCAgICAgICAgfCBhY2xpdGVtW10KKyBwZ192YXJpYWJsZSAgICAg ICAgICAgICB8IHZhcmRlZmV4cHIgICAgfCBwZ19ub2RlX3RyZWUKKygxMyByb3dzKQogCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQKaW5kZXggMGFhNTM1NzkxNy4u ODQ4YjA0MWE0YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlf Y2hlY2sub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91 dApAQCAtMTYzLDYgKzE2Myw3IEBAIHBnX3RzX3BhcnNlcnx0CiBwZ190c190ZW1wbGF0ZXx0CiBw Z190eXBlfHQKIHBnX3VzZXJfbWFwcGluZ3x0CitwZ192YXJpYWJsZXx0CiBwb2ludF90Ymx8dAog cG9seWdvbl90Ymx8dAogcXVhZF9ib3hfdGJsfHQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3NjaGVtYV92YXJpYWJsZXMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjg0ZmUzMGEyYzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3NjaGVtYV92YXJpYWJsZXMub3V0CkBAIC0wLDAgKzEsMzUxIEBACitDUkVBVEUgVkFS SUFCTEUgdmFyMSBBUyBpbnRlZ2VyOworQ1JFQVRFIFRFTVAgVkFSSUFCTEUgdmFyMiBBUyB0ZXh0 OworRFJPUCBWQVJJQUJMRSB2YXIxLCB2YXIyOworLS0gZnVuY3Rpb25hbCBpbnRlcmZhY2UKK0NS RUFURSBWQVJJQUJMRSB2YXIxIEFTIG51bWVyaWM7CitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xl OworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1Qg dmFyMTsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIx CitTRVQgUk9MRSBUTyBERUZBVUxUOworR1JBTlQgUkVBRCBPTiBWQVJJQUJMRSB2YXIxIFRPIHZh cl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRvIGZh aWwKK0xFVCB2YXIxID0gMTA7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEg dmFyaWFibGUgdmFyMQorLS0gc2hvdWxkIHRvIHdvcmsKK1NFTEVDVCB2YXIxOworIHZhcjEgCist LS0tLS0KKyAgICAgCisoMSByb3cpCisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitHUkFOVCBXUklU RSBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVz dF9yb2xlOworLS0gc2hvdWxkIHRvIHdvcmsKK0xFVCB2YXIxID0gMzMzOworU0VUIFJPTEUgVE8g REVGQVVMVDsKK1JFVk9LRSBBTEwgT04gVkFSSUFCTEUgdmFyMSBGUk9NIHZhcl90ZXN0X3JvbGU7 CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBzZWN1cmVfdmFyKCkKK1JFVFVSTlMgaW50IEFT ICQkCisgIFNFTEVDVCBwdWJsaWMudmFyMTo6aW50OworJCQgTEFOR1VBR0Ugc3FsIFNFQ1VSSVRZ IERFRklORVI7CitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworIHNlY3VyZV92YXIgCistLS0tLS0tLS0t LS0KKyAgICAgICAgMzMzCisoMSByb3cpCisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7Cist LSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHB1YmxpYy52YXIxOworRVJST1I6ICBwZXJtaXNzaW9u IGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHZhcjEKKy0tIHNob3VsZCB0byB3b3JrOworU0VM RUNUIHNlY3VyZV92YXIoKTsKKyBzZWN1cmVfdmFyIAorLS0tLS0tLS0tLS0tCisgICAgICAgIDMz MworKDEgcm93KQorCitTRVQgUk9MRSBUTyBERUZBVUxUOworRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCkgZyh2KSBXSEVSRSB2 ID0gdmFyMTsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0 aW9uIFNjYW4gb24gcGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMgZworICAgT3V0cHV0OiB2Cisg ICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKQorICAgRmlsdGVyOiAoKGcu dik6Om51bWVyaWMgPSB2YXIxKQorKDQgcm93cykKKworQ1JFQVRFIFZJRVcgc2NoZW1hX3Zhcl92 aWV3IEFTIFNFTEVDVCB2YXIxOworU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisgdmFy MSAKKy0tLS0tLQorICAzMzMKKygxIHJvdykKKworXGMgLQorLS0gc2hvdWxkIHRvIHdvcmsgc3Rp bGwsIGJ1dCB2YXIgd2lsbCBiZSBlbXB0eQorU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7 CisgdmFyMSAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworTEVUIHZhcjEgPSBwaSgpOworU0VM RUNUIHZhcjE7CisgICAgICAgdmFyMSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIDMuMTQx NTkyNjUzNTg5NzkKKygxIHJvdykKKworLS0gd2UgY2FuIGxvb2sgb24gZXhlY3V0aW9uIHBsYW4K K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgTEVUIHZhcjEgPSBwaSgpOworICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3Vs dAorICAgT3V0cHV0OiAzLjE0MTU5MjY1MzU4OTc5CisoMiByb3dzKQorCistLSBMRVQgY2FuIGJl IHByZXBhcmVkCitQUkVQQVJFIHZhcl9wcChpbnQsIG51bWVyaWMpIEFTIExFVCB2YXIxID0gJDEg KyAkMjsKK0VYRUNVVEUgdmFyX3BwKDEwMCwgMS4yMzQ1Nik7CitTRUxFQ1QgdmFyMTsKKyAgIHZh cjEgICAgCistLS0tLS0tLS0tLQorIDEwMS4yMzQ1NgorKDEgcm93KQorCitDUkVBVEUgVkFSSUFC TEUgdmFyMyBBUyBpbnQ7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBpbmMoaW50KQorUkVU VVJOUyBpbnQgQVMgJCQKK0JFR0lOCisgIExFVCBwdWJsaWMudmFyMyA9IENPQUxFU0NFKHB1Ymxp Yy52YXIzICsgJDEsICQxKTsKKyAgUkVUVVJOIHZhcjM7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBn c3FsOworU0VMRUNUIGluYygxKTsKKyBpbmMgCistLS0tLQorICAgMQorKDEgcm93KQorCitTRUxF Q1QgaW5jKDEpOworIGluYyAKKy0tLS0tCisgICAyCisoMSByb3cpCisKK1NFTEVDVCBpbmMoMSk7 CisgaW5jIAorLS0tLS0KKyAgIDMKKygxIHJvdykKKworU0VMRUNUIGluYygxKSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLDEwKTsKKyBpbmMgCistLS0tLQorICAgNAorICAgNQorICAgNgorICAgNwor ICAgOAorICAgOQorICAxMAorICAxMQorICAxMgorICAxMworKDEwIHJvd3MpCisKK1NFVCBST0xF IFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorTEVUIHZhcjMgPSAwOworRVJS T1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHZhcjMKK1NFVCBST0xF IFRPIERFRkFVTFQ7CitEUk9QIFZJRVcgc2NoZW1hX3Zhcl92aWV3OworRFJPUCBWQVJJQUJMRSB2 YXIxIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZhcjMgQ0FTQ0FERTsKKy0tIGNvbXBvc2l0ZSB2 YXJpYWJsZXMKK0NSRUFURSBUWVBFIHN2X3h5eiBBUyAoeCBpbnQsIHkgaW50LCB6IG51bWVyaWMo MTAsMikpOworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHN2X3h5ejsKK0NSRUFURSBWQVJJQUJMRSB2 MiBBUyBzdl94eXo7CitcZCB2MQorXGQgdjIKK0xFVCB2MSA9ICgxLDIsMy4xNCk7CitMRVQgdjIg PSAoMTAsMjAsMy4xNCoxMCk7CistLSBzaG91bGQgdG8gd29yayB0b28gLSB0aGVyZSBhcmUgcHJl cGFyZWQgY2FzdHMKK0xFVCB2MSA9ICgxLDIsMy4xNCk7CitTRUxFQ1QgdjE7CisgICAgIHYxICAg ICAKKy0tLS0tLS0tLS0tLQorICgxLDIsMy4xNCkKKygxIHJvdykKKworU0VMRUNUIHYyOworICAg ICAgdjIgICAgICAgCistLS0tLS0tLS0tLS0tLS0KKyAoMTAsMjAsMzEuNDApCisoMSByb3cpCisK K1NFTEVDVCAodjEpLio7CisgeCB8IHkgfCAgeiAgIAorLS0tKy0tLSstLS0tLS0KKyAxIHwgMiB8 IDMuMTQKKygxIHJvdykKKworU0VMRUNUICh2MikuKjsKKyB4ICB8IHkgIHwgICB6ICAgCistLS0t Ky0tLS0rLS0tLS0tLQorIDEwIHwgMjAgfCAzMS40MAorKDEgcm93KQorCitTRUxFQ1QgdjEueCAr IHYxLno7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgIDQuMTQKKygxIHJvdykKKworU0VM RUNUIHYyLnggKyB2Mi56OworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgIDQxLjQwCisoMSBy b3cpCisKKy0tIGFjY2VzcyB0byBjb21wb3NpdGUgZmllbGRzIHNob3VsZCBiZSBzYWZlIHRvbwor LS0gc2hvdWxkIHRvIGZhaWwKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CitTRUxFQ1QgdjIu eDsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2MgorU0VU IFJPTEUgVE8gREVGQVVMVDsKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxFIHYyOwor RFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7CistLSBzY2FsYXIgdmFyaWFibGVzIHNob3VsZCBub3Qg YmUgaW4gY29uZmxpY3Qgd2l0aCBxdWFsaWZpZWQgY29sdW1uCitDUkVBVEUgVkFSSUFCTEUgdmFy eCBBUyB0ZXh0OworU0VMRUNUIHZhcngucmVsbmFtZSBGUk9NIHBnX2NsYXNzIHZhcnggV0hFUkUg dmFyeC5yZWxuYW1lID0gJ3BnX2NsYXNzJzsKKyByZWxuYW1lICAKKy0tLS0tLS0tLS0KKyBwZ19j bGFzcworKDEgcm93KQorCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHZhcngueHh4OworRVJS T1I6ICB0eXBlIHRleHQgaXMgbm90IGNvbXBvc2l0ZQorLS0gdmFyaWFibGVzIGNhbiBiZSB1cGRh dGVkIHVuZGVyIFJPIHRyYW5zYWN0aW9uCitCRUdJTjsKK1NFVCBUUkFOU0FDVElPTiBSRUFEIE9O TFk7CitMRVQgdmFyeCA9ICdoZWxsbyc7CitDT01NSVQ7CitTRUxFQ1QgdmFyeDsKKyB2YXJ4ICAK Ky0tLS0tLS0KKyBoZWxsbworKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHZhcng7CitDUkVBVEUg VFlQRSB0MSBBUyAoYSBpbnQsIGIgbnVtZXJpYywgYyB0ZXh0KTsKK0NSRUFURSBWQVJJQUJMRSB2 MSBBUyB0MTsKK0xFVCB2MSA9ICgxLCBwaSgpLCAnaGVsbG8nKTsKK1NFTEVDVCB2MTsKKyAgICAg ICAgICAgICB2MSAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAo MSwzLjE0MTU5MjY1MzU4OTc5LGhlbGxvKQorKDEgcm93KQorCitMRVQgdjEuYiA9IDEwLjIyMjI7 CitTRUxFQ1QgdjE7CisgICAgICAgIHYxICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisg KDEsMTAuMjIyMixoZWxsbykKKygxIHJvdykKKworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2MS54 ID0gMTA7CitFUlJPUjogIGNhbm5vdCBhc3NpZ24gdG8gZmllbGQgIngiIG9mIGNvbHVtbiAieCIg YmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIGNvbHVtbiBpbiBkYXRhIHR5cGUgdDEKK0xJTkUgMTog TEVUIHYxLnggPSAxMDsKKyAgICAgICAgICAgIF4KK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFRZ UEUgdDE7CistLSBhcnJheXMgYXJlIHN1cHBvcnRlZAorQ1JFQVRFIFZBUklBQkxFIHZhMSBBUyBu dW1lcmljW107CitMRVQgdmExID0gQVJSQVlbMS4xLDIuMV07CitMRVQgdmExWzFdID0gMTAuMTsK K1NFTEVDVCB2YTE7CisgICAgdmExICAgICAKKy0tLS0tLS0tLS0tLQorIHsxMC4xLDIuMX0KKygx IHJvdykKKworQ1JFQVRFIFRZUEUgdGEyIEFTIChhIG51bWVyaWMsIGIgbnVtZXJpY1tdKTsKK0NS RUFURSBWQVJJQUJMRSB2YTIgQVMgdGEyOworTEVUIHZhMiA9ICgxMC4xLCBBUlJBWVswLjAsIDAu MF0pOworTEVUIHZhMi5hID0gMTAuMjsKK1NFTEVDVCB2YTI7CisgICAgICAgIHZhMiAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMTAuMiwiezAuMCwwLjB9IikKKygxIHJvdykKKwor TEVUIHZhMi5iWzFdID0gMTAuMzsKK1NFTEVDVCB2YTI7CisgICAgICAgICB2YTIgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxMC4yLCJ7MTAuMywwLjB9IikKKygxIHJvdykKKwor RFJPUCBWQVJJQUJMRSB2YTE7CitEUk9QIFZBUklBQkxFIHZhMjsKK0RST1AgVFlQRSB0YTI7Cist LSBkZWZhdWx0IHZhbHVlcworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIG51bWVyaWMgREVGQVVMVCBw aSgpOworTEVUIHYxID0gdjEgKiAyOworU0VMRUNUIHYxOworICAgICAgICB2MSAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0KKyA2LjI4MzE4NTMwNzE3OTU4CisoMSByb3cpCisKK0NSRUFURSBU WVBFIHQyIEFTIChhIG51bWVyaWMsIGIgdGV4dCk7CitDUkVBVEUgVkFSSUFCTEUgdjIgQVMgdDIg REVGQVVMVCAoTlVMTCwgJ0hlbGxvJyk7CitMRVQgcHVibGljLnYyLmEgPSBwaSgpOworU0VMRUNU IHYyOworICAgICAgICAgICAgdjIgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKDMuMTQxNTkyNjUzNTg5NzksSGVsbG8pCisoMSByb3cpCisKKy0tIHNob3VkbCBmYWls IGR1ZSBkZXBlbmRlbmN5CitEUk9QIFRZUEUgdDI7CitFUlJPUjogIGNhbm5vdCBkcm9wIHR5cGUg dDIgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgc2NoZW1hIHZh cmlhYmxlIHYyIGRlcGVuZHMgb24gdHlwZSB0MgorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURF IHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KKy0tIHNob3VsZCBiZSBvaworRFJP UCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CistLSB0ZXN0cyBvZiBhbHRlcnMKK0NS RUFURSBTQ0hFTUEgdmFyX3NjaGVtYTE7CitDUkVBVEUgU0NIRU1BIHZhcl9zY2hlbWEyOworQ1JF QVRFIFZBUklBQkxFIHZhcl9zY2hlbWExLnZhcjEgQVMgaW50ZWdlcjsKK0xFVCB2YXJfc2NoZW1h MS52YXIxID0gMTAwMDsKK1NFTEVDVCB2YXJfc2NoZW1hMS52YXIxOworIHZhcjEgCistLS0tLS0K KyAxMDAwCisoMSByb3cpCisKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWExLnZhcjEgU0VUIFND SEVNQSB2YXJfc2NoZW1hMjsKK1NFTEVDVCB2YXJfc2NoZW1hMi52YXIxOworIHZhcjEgCistLS0t LS0KKyAxMDAwCisoMSByb3cpCisKK0NSRUFURSBST0xFIHZhcl90ZXN0X3JvbGU7CitBTFRFUiBW QVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxIE9XTkVSIFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9M RSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIGZhaWwsIG5vIGFjY2VzcyB0byBzY2hlbWEg dmFyX3NjaGVtYTIudmFyCitTRUxFQ1QgdmFyX3NjaGVtYTIudmFyMTsKK0VSUk9SOiAgcGVybWlz c2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJfc2NoZW1hMgorRFJPUCBWQVJJQUJMRSB2YXJfc2No ZW1hMi52YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcl9zY2hl bWEyCitTRVQgUk9MRSBUTyBERUZBVUxUOworQUxURVIgVkFSSUFCTEUgdmFyX3NjaGVtYTIudmFy MSBTRVQgU0NIRU1BIHB1YmxpYzsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CitTRUxFQ1Qg cHVibGljLnZhcjE7CisgdmFyMSAKKy0tLS0tLQorIDEwMDAKKygxIHJvdykKKworQUxURVIgVkFS SUFCTEUgcHVibGljLnZhcjEgUkVOQU1FIFRPIHZhcjFfcmVuYW1lZDsKK1NFTEVDVCBwdWJsaWMu dmFyMV9yZW5hbWVkOworIHZhcjFfcmVuYW1lZCAKKy0tLS0tLS0tLS0tLS0tCisgICAgICAgICAx MDAwCisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgcHVibGljLnZhcjFfcmVuYW1lZDsKK1NFVCBS T0xFIFRPIERFRkFVTHQ7CitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCmluZGV4IDE2Zjk3OWM4ZDkuLjliZjM3OWI4N2IgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQpAQCAtMTExLDcgKzExMSw3IEBAIHRlc3Q6IHNlbGVjdF92aWV3cyBw b3J0YWxzX3AyIGZvcmVpZ25fa2V5IGNsdXN0ZXIgZGVwZW5kZW5jeSBndWMgYml0bWFwb3BzIGNv bWJvCiAjIE5COiB0ZW1wLnNxbCBkb2VzIGEgcmVjb25uZWN0IHdoaWNoIHRyYW5zaWVudGx5IHVz ZXMgMiBjb25uZWN0aW9ucywKICMgc28ga2VlcCB0aGlzIHBhcmFsbGVsIGdyb3VwIHRvIGF0IG1v c3QgMTkgdGVzdHMKICMgLS0tLS0tLS0tLQotdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwg Y29weTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIHdpdGhvdXRfb2lkIGNvbnZlcnNp b24gdHJ1bmNhdGUgYWx0ZXJfdGFibGUgc2VxdWVuY2UgcG9seW1vcnBoaXNtIHJvd3R5cGVzIHJl dHVybmluZyBsYXJnZW9iamVjdCB3aXRoIHhtbAordGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdz cWwgY29weTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIHdpdGhvdXRfb2lkIGNvbnZl cnNpb24gdHJ1bmNhdGUgYWx0ZXJfdGFibGUgc2VxdWVuY2UgcG9seW1vcnBoaXNtIHJvd3R5cGVz IHJldHVybmluZyBsYXJnZW9iamVjdCB3aXRoIHhtbCBzY2hlbWFfdmFyaWFibGVzCiAKICMgLS0t LS0tLS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFs X3NjaGVkdWxlCmluZGV4IDQyNjMyYmU2NzUuLjQyYmY0ZWNiM2YgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFs X3NjaGVkdWxlCkBAIC0xOTEsMyArMTkxLDQgQEAgdGVzdDogcGFydGl0aW9uX2FnZ3JlZ2F0ZQog dGVzdDogZXZlbnRfdHJpZ2dlcgogdGVzdDogZmFzdF9kZWZhdWx0CiB0ZXN0OiBzdGF0cwordGVz dDogc2NoZW1hX3ZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2No ZW1hX3ZhcmlhYmxlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zY2hlbWFfdmFyaWFibGVz LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45MWIyYmJiMjhiCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2NoZW1hX3ZhcmlhYmxlcy5z cWwKQEAgLTAsMCArMSwyNDcgQEAKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludGVnZXI7CitD UkVBVEUgVEVNUCBWQVJJQUJMRSB2YXIyIEFTIHRleHQ7CisKK0RST1AgVkFSSUFCTEUgdmFyMSwg dmFyMjsKKworLS0gZnVuY3Rpb25hbCBpbnRlcmZhY2UKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFT IG51bWVyaWM7CisKK0NSRUFURSBST0xFIHZhcl90ZXN0X3JvbGU7CisKK1NFVCBST0xFIFRPIHZh cl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgdmFyMTsKKworU0VUIFJP TEUgVE8gREVGQVVMVDsKKworR1JBTlQgUkVBRCBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0 X3JvbGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAor TEVUIHZhcjEgPSAxMDsKKy0tIHNob3VsZCB0byB3b3JrCitTRUxFQ1QgdmFyMTsKKworU0VUIFJP TEUgVE8gREVGQVVMVDsKKworR1JBTlQgV1JJVEUgT04gVkFSSUFCTEUgdmFyMSBUTyB2YXJfdGVz dF9yb2xlOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8gd29y aworTEVUIHZhcjEgPSAzMzM7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK1JFVk9LRSBBTEwg T04gVkFSSUFCTEUgdmFyMSBGUk9NIHZhcl90ZXN0X3JvbGU7CisKK0NSRUFURSBPUiBSRVBMQUNF IEZVTkNUSU9OIHNlY3VyZV92YXIoKQorUkVUVVJOUyBpbnQgQVMgJCQKKyAgU0VMRUNUIHB1Ymxp Yy52YXIxOjppbnQ7CiskJCBMQU5HVUFHRSBzcWwgU0VDVVJJVFkgREVGSU5FUjsKKworU0VMRUNU IHNlY3VyZV92YXIoKTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxk IHRvIGZhaWwKK1NFTEVDVCBwdWJsaWMudmFyMTsKKworLS0gc2hvdWxkIHRvIHdvcms7CitTRUxF Q1Qgc2VjdXJlX3ZhcigpOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKSBnKHYp IFdIRVJFIHYgPSB2YXIxOworCitDUkVBVEUgVklFVyBzY2hlbWFfdmFyX3ZpZXcgQVMgU0VMRUNU IHZhcjE7CisKK1NFTEVDVCAqIEZST00gc2NoZW1hX3Zhcl92aWV3OworCitcYyAtCisKKy0tIHNo b3VsZCB0byB3b3JrIHN0aWxsLCBidXQgdmFyIHdpbGwgYmUgZW1wdHkKK1NFTEVDVCAqIEZST00g c2NoZW1hX3Zhcl92aWV3OworCitMRVQgdmFyMSA9IHBpKCk7CisKK1NFTEVDVCB2YXIxOworCist LSB3ZSBjYW4gbG9vayBvbiBleGVjdXRpb24gcGxhbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKSBMRVQgdmFyMSA9IHBpKCk7CisKKy0tIExFVCBjYW4gYmUgcHJlcGFyZWQKK1BSRVBBUkUg dmFyX3BwKGludCwgbnVtZXJpYykgQVMgTEVUIHZhcjEgPSAkMSArICQyOworCitFWEVDVVRFIHZh cl9wcCgxMDAsIDEuMjM0NTYpOworCitTRUxFQ1QgdmFyMTsKKworQ1JFQVRFIFZBUklBQkxFIHZh cjMgQVMgaW50OworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBpbmMoaW50KQorUkVUVVJO UyBpbnQgQVMgJCQKK0JFR0lOCisgIExFVCBwdWJsaWMudmFyMyA9IENPQUxFU0NFKHB1YmxpYy52 YXIzICsgJDEsICQxKTsKKyAgUkVUVVJOIHZhcjM7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3Fs OworCitTRUxFQ1QgaW5jKDEpOworU0VMRUNUIGluYygxKTsKK1NFTEVDVCBpbmMoMSk7CisKK1NF TEVDVCBpbmMoMSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCk7CisKK1NFVCBST0xFIFRPIHZh cl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCB0byBmYWlsCitMRVQgdmFyMyA9IDA7CisKK1NFVCBS T0xFIFRPIERFRkFVTFQ7CisKK0RST1AgVklFVyBzY2hlbWFfdmFyX3ZpZXc7CisKK0RST1AgVkFS SUFCTEUgdmFyMSBDQVNDQURFOworRFJPUCBWQVJJQUJMRSB2YXIzIENBU0NBREU7CisKKy0tIGNv bXBvc2l0ZSB2YXJpYWJsZXMKKworQ1JFQVRFIFRZUEUgc3ZfeHl6IEFTICh4IGludCwgeSBpbnQs IHogbnVtZXJpYygxMCwyKSk7CisKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBzdl94eXo7CitDUkVB VEUgVkFSSUFCTEUgdjIgQVMgc3ZfeHl6OworCitcZCB2MQorXGQgdjIKKworTEVUIHYxID0gKDEs MiwzLjE0KTsKK0xFVCB2MiA9ICgxMCwyMCwzLjE0KjEwKTsKKworLS0gc2hvdWxkIHRvIHdvcmsg dG9vIC0gdGhlcmUgYXJlIHByZXBhcmVkIGNhc3RzCitMRVQgdjEgPSAoMSwyLDMuMTQpOworCitT RUxFQ1QgdjE7CitTRUxFQ1QgdjI7CitTRUxFQ1QgKHYxKS4qOworU0VMRUNUICh2MikuKjsKKwor U0VMRUNUIHYxLnggKyB2MS56OworU0VMRUNUIHYyLnggKyB2Mi56OworCistLSBhY2Nlc3MgdG8g Y29tcG9zaXRlIGZpZWxkcyBzaG91bGQgYmUgc2FmZSB0b28KKy0tIHNob3VsZCB0byBmYWlsCitT RVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCitTRUxFQ1QgdjIueDsKKworU0VUIFJPTEUgVE8g REVGQVVMVDsKKworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CisKK0RST1Ag Uk9MRSB2YXJfdGVzdF9yb2xlOworCistLSBzY2FsYXIgdmFyaWFibGVzIHNob3VsZCBub3QgYmUg aW4gY29uZmxpY3Qgd2l0aCBxdWFsaWZpZWQgY29sdW1uCitDUkVBVEUgVkFSSUFCTEUgdmFyeCBB UyB0ZXh0OworU0VMRUNUIHZhcngucmVsbmFtZSBGUk9NIHBnX2NsYXNzIHZhcnggV0hFUkUgdmFy eC5yZWxuYW1lID0gJ3BnX2NsYXNzJzsKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCB2YXJ4 Lnh4eDsKKworLS0gdmFyaWFibGVzIGNhbiBiZSB1cGRhdGVkIHVuZGVyIFJPIHRyYW5zYWN0aW9u CisKK0JFR0lOOworU0VUIFRSQU5TQUNUSU9OIFJFQUQgT05MWTsKK0xFVCB2YXJ4ID0gJ2hlbGxv JzsKK0NPTU1JVDsKKworU0VMRUNUIHZhcng7CisKK0RST1AgVkFSSUFCTEUgdmFyeDsKKworQ1JF QVRFIFRZUEUgdDEgQVMgKGEgaW50LCBiIG51bWVyaWMsIGMgdGV4dCk7CisKK0NSRUFURSBWQVJJ QUJMRSB2MSBBUyB0MTsKK0xFVCB2MSA9ICgxLCBwaSgpLCAnaGVsbG8nKTsKK1NFTEVDVCB2MTsK K0xFVCB2MS5iID0gMTAuMjIyMjsKK1NFTEVDVCB2MTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK0xF VCB2MS54ID0gMTA7CisKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFRZUEUgdDE7CisKKy0tIGFy cmF5cyBhcmUgc3VwcG9ydGVkCitDUkVBVEUgVkFSSUFCTEUgdmExIEFTIG51bWVyaWNbXTsKK0xF VCB2YTEgPSBBUlJBWVsxLjEsMi4xXTsKK0xFVCB2YTFbMV0gPSAxMC4xOworU0VMRUNUIHZhMTsK KworQ1JFQVRFIFRZUEUgdGEyIEFTIChhIG51bWVyaWMsIGIgbnVtZXJpY1tdKTsKK0NSRUFURSBW QVJJQUJMRSB2YTIgQVMgdGEyOworTEVUIHZhMiA9ICgxMC4xLCBBUlJBWVswLjAsIDAuMF0pOwor TEVUIHZhMi5hID0gMTAuMjsKK1NFTEVDVCB2YTI7CitMRVQgdmEyLmJbMV0gPSAxMC4zOworU0VM RUNUIHZhMjsKKworRFJPUCBWQVJJQUJMRSB2YTE7CitEUk9QIFZBUklBQkxFIHZhMjsKK0RST1Ag VFlQRSB0YTI7CisKKy0tIGRlZmF1bHQgdmFsdWVzCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgbnVt ZXJpYyBERUZBVUxUIHBpKCk7CitMRVQgdjEgPSB2MSAqIDI7CitTRUxFQ1QgdjE7CisKK0NSRUFU RSBUWVBFIHQyIEFTIChhIG51bWVyaWMsIGIgdGV4dCk7CitDUkVBVEUgVkFSSUFCTEUgdjIgQVMg dDIgREVGQVVMVCAoTlVMTCwgJ0hlbGxvJyk7CitMRVQgcHVibGljLnYyLmEgPSBwaSgpOworU0VM RUNUIHYyOworCistLSBzaG91ZGwgZmFpbCBkdWUgZGVwZW5kZW5jeQorRFJPUCBUWVBFIHQyOwor CistLSBzaG91bGQgYmUgb2sKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxFIHYyOwor CistLSB0ZXN0cyBvZiBhbHRlcnMKK0NSRUFURSBTQ0hFTUEgdmFyX3NjaGVtYTE7CitDUkVBVEUg U0NIRU1BIHZhcl9zY2hlbWEyOworCitDUkVBVEUgVkFSSUFCTEUgdmFyX3NjaGVtYTEudmFyMSBB UyBpbnRlZ2VyOworTEVUIHZhcl9zY2hlbWExLnZhcjEgPSAxMDAwOworU0VMRUNUIHZhcl9zY2hl bWExLnZhcjE7CitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMS52YXIxIFNFVCBTQ0hFTUEgdmFy X3NjaGVtYTI7CitTRUxFQ1QgdmFyX3NjaGVtYTIudmFyMTsKKworQ1JFQVRFIFJPTEUgdmFyX3Rl c3Rfcm9sZTsKKworQUxURVIgVkFSSUFCTEUgdmFyX3NjaGVtYTIudmFyMSBPV05FUiBUTyB2YXJf dGVzdF9yb2xlOworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIGZhaWws IG5vIGFjY2VzcyB0byBzY2hlbWEgdmFyX3NjaGVtYTIudmFyCitTRUxFQ1QgdmFyX3NjaGVtYTIu dmFyMTsKK0RST1AgVkFSSUFCTEUgdmFyX3NjaGVtYTIudmFyMTsKKworU0VUIFJPTEUgVE8gREVG QVVMVDsKKworQUxURVIgVkFSSUFCTEUgdmFyX3NjaGVtYTIudmFyMSBTRVQgU0NIRU1BIHB1Ymxp YzsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFTEVDVCBwdWJsaWMudmFyMTsKKwor QUxURVIgVkFSSUFCTEUgcHVibGljLnZhcjEgUkVOQU1FIFRPIHZhcjFfcmVuYW1lZDsKKworU0VM RUNUIHB1YmxpYy52YXIxX3JlbmFtZWQ7CisKK0RST1AgVkFSSUFCTEUgcHVibGljLnZhcjFfcmVu YW1lZDsKKworU0VUIFJPTEUgVE8gREVGQVVMdDsKKworRFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7 Cg== --000000000000e481cd0573365a75--