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 1fpaUC-0004R9-N2 for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Aug 2018 14:39:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fpaU8-0005tJ-Fj for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Aug 2018 14:39:48 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fpaU7-0005tC-FS for pgsql-hackers@lists.postgresql.org; Tue, 14 Aug 2018 14:39:48 +0000 Received: from mail-wm0-x234.google.com ([2a00:1450:400c:c09::234]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fpaTy-0003Nq-Iz for pgsql-hackers@lists.postgresql.org; Tue, 14 Aug 2018 14:39:45 +0000 Received: by mail-wm0-x234.google.com with SMTP id t25-v6so12443249wmi.3 for ; Tue, 14 Aug 2018 07:39:38 -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=QXzkDUjEpINedeBq/kwU+5hGCU2hgSDkTi8uvnUBxS8=; b=Us2BpyVuuyb54BJjceGSlXHDZK2aAISAxRiBg/ti5kAUo12lSk8Qm2aLbIdQIoaqx0 eGHOSludNIDA+wgl1OMInwd+HRMDS+bRqqODV56iNcewevKRdVHeonNx4S5SvuGItg6x cZrbDqBFYy43nDFNtoLo9U7Y50P+CnHAH2f/IJIQGQPrX/Tm/ILDLazrlx55Rkyg7MdQ p3HpFRBww8kySNcx+7sWLRg4iRWp2VlgtJvP1Z64/3BZh6zqfhKShwYhmKNKBpyyngxj lVdJr8C19o5mk5R1zMvOUHlzkLt3Pjk+ykvhJvDEllSt+0+mPYTufHE0Sk4VNfQ+sScS k4Rg== 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=QXzkDUjEpINedeBq/kwU+5hGCU2hgSDkTi8uvnUBxS8=; b=uPXosBQMFroQTQNm9+SjQM3qlIA0CIgXE4c8EiF57uMCuzUnVmA6+XceImwv7DfFBa eq7RKDzq0o7RWNouzqx5Z9mxTvKjH0c75jVK/xDw/Q6j/kWaR6c8T1K77e+2G350vYav toawaagmoAn4c2TlyTsE1fnZDOWufwG/d+Zq8QpdFagMFF0whIuKXN0fpWQ/IyPRu5SW QGN2fScmIsYCKyrXeJF/clXy5K2Jry42+rrVgXYJsuj8UGT/2L4PjrwIZwxXItcQhIon ohsZJOkc1ZoswsN8Az01Q8Pb6YlLatZYZSRN7t0pi2wt5nww9SM6MIg/dp1jkib3uTQS 9XFg== X-Gm-Message-State: AOUpUlFtMc0e+wqfn/859dKkMDbwykoHPLadNUMMamybsk78WvmyLgdu XBj/4XOuKGvEaUS4C9Zz/atsilyYvotIjUfX55XeNA== X-Google-Smtp-Source: AA+uWPxgrWjTWlTiMaf5/KJPQT3/Cyf7hu034XGoC2Bv7CB3R0DNSwMmlgdUhIOpnyzZ+cWJOFvsJylPv2JDA8o2818= X-Received: by 2002:a1c:e70b:: with SMTP id e11-v6mr10540330wmh.22.1534257576914; Tue, 14 Aug 2018 07:39:36 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a5d:428a:0:0:0:0:0 with HTTP; Tue, 14 Aug 2018 07:38:56 -0700 (PDT) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> <28924bcc-9242-9798-e4e8-9d83cea3fef6@dalibo.com> From: Pavel Stehule Date: Tue, 14 Aug 2018 16:38:56 +0200 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Gilles Darold Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000dde5da0573662d8e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000dde5da0573662d8e Content-Type: multipart/alternative; boundary="000000000000dde5d70573662d8c" --000000000000dde5d70573662d8c Content-Type: text/plain; charset="UTF-8" Hi I wrote missing collation support Regards Pavel --000000000000dde5d70573662d8c Content-Type: text/html; charset="UTF-8"
Hi

I wrote missing collation support

Regards

Pavel
--000000000000dde5d70573662d8c-- --000000000000dde5da0573662d8e Content-Type: text/x-patch; charset="US-ASCII"; name="schema-variables-180814-01.patch" Content-Disposition: attachment; filename="schema-variables-180814-01.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jkttb9ae1 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggM2JiNDhkNGNjZi4uZmZlZWE3ZGYzZiAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTM1OSw2ICszNTksMTEgQEAKICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9n LXBnLXVzZXItbWFwcGluZyI+PHN0cnVjdG5hbWU+cGdfdXNlcl9tYXBwaW5nPC9zdHJ1Y3RuYW1l PjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5Pm1hcHBpbmdzIG9mIHVzZXJzIHRvIGZvcmVp Z24gc2VydmVyczwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy12YXJpYWJsZSI+PHN0cnVjdG5hbWU+cGdfdmFy aWFibGU8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+c2NoZW1hIHZh cmlhYmxlczwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4K ICAgPC90YWJsZT4KQEAgLTExMzExLDQgKzExMzE2LDExNCBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xv 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+dmFyY29s bGF0aW9uPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPm9pZDwvdHlw ZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ct cGctY29sbGF0aW9uIj48c3RydWN0bmFtZT5wZ19jb2xsYXRpb248L3N0cnVjdG5hbWU+PC9saW5r Pi5vaWQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgZGVmaW5l ZCBjb2xsYXRpb24gb2YgdGhlIHZhcmlhYmxlLCBvciB6ZXJvIGlmIHRoZSB2YXJpYWJsZSBpcwor ICAgICAgIG5vdCBvZiBhIGNvbGxhdGFibGUgZGF0YSB0eXBlLgorICAgICAgPC9lbnRyeT4KKyAg 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 bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMWJmMTI3ZWNjZAotLS0gL2Rldi9udWxsCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKQEAgLTAsMCArMSwxNDUg QEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVT UUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxl Ij4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1jcmVhdGV2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkNS RUFURSBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8 cmVmZW50cnl0aXRsZT5DUkVBVEUgVkFSSUFCTEU8L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52b2xu dW0+NzwvbWFudm9sbnVtPgorICA8cmVmbWlzY2luZm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50 czwvcmVmbWlzY2luZm8+CisgPC9yZWZtZXRhPgorCisgPHJlZm5hbWVkaXY+CisgIDxyZWZuYW1l PkNSRUFURSBWQVJJQUJMRTwvcmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+ZGVmaW5lIGEgbmV3IHBl cm1pc3Npb25lZCB0eXBlZCBzY2hlbWEgdmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1l ZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lzPgorQ1JFQVRFIFZBUklBQkxFIFsg SUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8 L3JlcGxhY2VhYmxlPiBdIFsgQ09MTEFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ Y29sbGF0aW9uPC9yZXBsYWNlYWJsZT4gXQorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2 PgorIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICA8cGFyYT4K KyAgIDxjb21tYW5kPkNSRUFURSBWQVJJQUJMRTwvY29tbWFuZD4gY3JlYXRlcyBhIG5ldyBzY2hl bWEgdmFyaWFibGUuCisgICBUaGVzZSB2YXJpYWJsZXMgYXJlIHNjYWxhciB0eXBlZCwgbm9uLXRy YW5zYWN0aW9uYWwsIGFuZCwgbGlrZSByZWxhdGlvbnMsCisgICBleGlzdCB3aXRoaW4gYSBzY2hl bWEgd2l0aCBhY2Nlc3MgY29udHJvbGxlZCB2aWEKKyAgIDxjb21tYW5kPkdSQU5UPC9jb21tYW5k PiBhbmQgPGNvbW1hbmQ+UkVWT0tFPC9jb21tYW5kPi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgor ICAgVGhlIHZhbHVlIG9mIGEgc2NoZW1hIHZhcmlhYmxlIGlzIHNlc3Npb24tbG9jYWwuIFJldHJp ZXZpbmcKKyAgIGEgdmFyaWFibGUncyB2YWx1ZSB3aWxsIHJldHVybiBOVUxMIHVubGVzcyBpdHMg dmFsdWUgaGFzIGJlZW4gc2V0CisgICB0byBzb21ldGhpbmcgZWxzZSBpbiB0aGUgY3VycmVudCBz ZXNzaW9uLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBSZXRyaWV2YWwgaXMgZG9uZSB2aWEg dGhlIDxmdW5jdGlvbj5nZXRfc2NoZW1hX3ZhcmlhYmxlPC9mdW5jdGlvbj5kdW54cmlvbiBvciB0 aGUgU1FMCisgICBjb21tYW5kIDxjb21tYW5kPlNFTEVDVDwvY29tbWFuZD4uICBTZXR0aW5nIG9m IHZhbHVlcyBpcyBkb25lIHZpYSB0aGUKKyAgIDxmdW5jdGlvbj5zZXRfc2NoZW1hX3ZhcmlhYmxl PC9mdW5jdGlvbj4gZnVuY3Rpb24gb3IgdGhlIFNRTCBjb21tYW5kCisgICA8Y29tbWFuZD5MRVQ8 L2NvbW1hbmQ+LgorICAgTm90YWJseSwgd2hpbGUgc2NoZW1hIHZhcmlhYmxlcyBhcmUgaW4gbWFu eSB3YXlzIGEga2luZCBvZiB0YWJsZSB5b3UgY2Fubm90IHVzZQorICAgPGNvbW1hbmQ+VVBEQVRF PC9jb21tYW5kPiBvbiB0aGVtLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBGb3IgcHVycG9z ZXMgb2YgbmFtZSB1bmlxdWVuZXNzIHJlbGF0aW9uLWxpa2Ugb2JqZWN0cyAoZS5nLiwgdGFibGVz LCBpbmRleGVzKQorICAgd2l0aGluIHRoZSBzYW1lIHNjaGVtYSBhcmUgY29uc2lkZXJlZC4gIGku ZS4sIHlvdSBjYW5ub3QgZ2l2ZSBhIHRhYmxlIGFuZCBhCisgICBzY2hlbWEgdmFyaWFibGUgdGhl IHNhbWUgbmFtZS4gIFRoaXMgaXMgYSBjb25zZXF1ZW5jZSBvZiB0aGVtIGJlaW5nIHRyZWF0ZWQK KyAgIGxpa2UgcmVsYXRpb25zIGZvciBwdXJwb3NlcyBvZiA8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1h bmQ+LgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBh cmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPjxsaXRlcmFsPklGIE5PVCBFWElTVFM8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBEbyBub3QgdGhyb3cgYW4gZXJyb3IgaWYgdGhl IG5hbWUgYWxyZWFkeSBleGlzdHMuIEEgbm90aWNlIGlzIGlzc3VlZCBpbiB0aGlzIGNhc2UuCisg ICAgICBOb3RlIHRoYXQgdHlwZSBvZiB0aGUgdmFyaWFibGUgaXMgbm90IGNvbnNpZGVyZWQsIG5v ciBjb3VsZCBpdCBiZSBzaW5jZSB0aGUgbmFtZXNwYWNlCisgICAgICBzZWFyY2hlZCBjb250YWlu cyBub24tdmFyaWFibGUgb2JqZWN0cy4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEt cXVhbGlmaWVkKSBvZiB0aGUgdmFyaWFibGUgdG8gYmUgY3JlYXRlZC4KKyAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBs YWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBu YW1lIChvcHRpb25hbGx5IHNjaGVtYS1xdWFsaWZpZWQpIG9mIHRoZSBkYXRhIHR5cGUgb2YgdGhl IHZhcmlhYmxlIHRvIGJlIGNyZWF0ZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgor ICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVy YWw+Q09MTEFURSA8cmVwbGFjZWFibGU+Y29sbGF0aW9uPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+ PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVyYWw+ Q09MTEFURTwvbGl0ZXJhbD4gY2xhdXNlIGFzc2lnbnMgYSBjb2xsYXRpb24gdG8KKyAgICAgIHRo ZSB2YXJpYWJsZSAod2hpY2ggbXVzdCBiZSBvZiBhIGNvbGxhdGFibGUgZGF0YSB0eXBlKS4KKyAg ICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZSB2YXJpYWJsZSBkYXRhIHR5cGUncyBkZWZhdWx0IGNv bGxhdGlvbiBpcyB1c2VkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFy bGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3Qx PgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgVXNlIDxjb21tYW5kPkRS T1AgVkFSSUFCTEU8L2NvbW1hbmQ+IHRvIHJlbW92ZSBhIHZhcmlhYmxlLgorICA8L3BhcmE+Cisg PC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKwor ICA8cGFyYT4KKyAgIENyZWF0ZSBhbiBpbnRlZ2VyIHZhcmlhYmxlIDxsaXRlcmFsPnZhcjE8L2xp dGVyYWw+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50ZWdl cjsKK1NFTEVDVCB2YXIxOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgPC9yZWZz ZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8L3RpdGxlPgorCisg IDxwYXJhPgorICAgPGNvbW1hbmQ+Q1JFQVRFIFZBUklBQkxFPC9jb21tYW5kPiBpcyBhIFBvc3Rn cmVTUUwgZmVhdHVyZS4KKyAgIDwhLS0gVGhlIGNob2ljZSBvZiB3b3JkaW5nIGhlcmUgc2VlbXMg dG8gYmUgbGVmdCB0byBwZXJzb25hbCBwcmVmZXJlbmNlLi4uIC0tPgorICA8L3BhcmE+CisgPC9y ZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4KKworICA8 c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwt YWx0ZXJ2YXJpYWJsZSIvPjwvbWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwt ZHJvcHZhcmlhYmxlIi8+PC9tZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgor Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbAppbmRleCA2YjkwOWI3MjMyLi5kODNhZDgx MWZkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbApAQCAtMjEsNyArMjEsNyBAQCBQb3N0Z3JlU1FMIGRv Y3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KLURJU0NBUkQgeyBB TEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRFTVBPUkFSWSB8IFRFTVAgfQorRElTQ0FSRCB7IEFM TCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVNUE9SQVJZIHwgVEVNUCB8IFZBUklBQkxFUyB9CiA8 L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTc1LDYgKzc1LDE3IEBAIERJU0NB UkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRFTVBPUkFSWSB8IFRFTVAgfQogICAgIDwv bGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT48bGl0ZXJhbD5WQVJJQUJMRVM8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBSZXNldHMgdGhlIHZhbHVlIG9mIGFsbCBzY2hlbWEgdmFyaWFi bGVzLiBXaGVuIHZhcmlhYmxlcworICAgICAgd2lsbCBiZSB1c2VkIGxhdGVyLCB0aGVuIHdpbGwg YmUgaW5pdGlhbGl6ZWQgYWdhaW4gdG8KKyAgICAgIE5VTEwgb3IgZGVmYXVsdCB2YWx1ZS4KKyAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZh cmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5BTEw8L2xpdGVyYWw+PC90ZXJtPgogICAg IDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYzFjMWEyYmQ2NwotLS0gL2Rldi9udWxsCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCkBAIC0wLDAgKzEsOTMgQEAKKzwhLS0K K2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCitQb3N0Z3JlU1FMIGRvY3VtZW50 YXRpb24KKy0tPgorCis8cmVmZW50cnkgaWQ9InNxbC1kcm9wdmFyaWFibGUiPgorIDxpbmRleHRl cm0gem9uZT0ic3FsLWRyb3B2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkRST1AgVkFSSUFCTEU8L3By aW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8cmVmbWV0YT4KKyAgPHJlZmVudHJ5dGl0bGU+RFJP UCBWQVJJQUJMRTwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+Cisg IDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8 L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+RFJPUCBWQVJJQUJMRTwvcmVm bmFtZT4KKyAgPHJlZnB1cnBvc2U+cmVtb3ZlIGEgc2NoZW1hIHZhcmlhYmxlPC9yZWZwdXJwb3Nl PgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0RST1Ag VkFSSUFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBDQVNDQURFIHwgUkVTVFJJQ1QgXQorPC9zeW5vcHNp cz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRp b248L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1hbmQ+RFJPUCBWQVJJQUJMRTwvY29tbWFu ZD4gcmVtb3ZlcyBhIHNjaGVtYSB2YXJpYWJsZS4KKyAgIEEgdmFyaWFibGUgY2FuIG9ubHkgYmUg ZHJvcHBlZCBieSBpdHMgb3duZXIgb3IgYSBzdXBlcnVzZXIuCisgICA8IS0tIHRoaXMgd291bGQg c3VnZ2VzdCB0aGF0IHdlIG5lZWQgYW4gYWx0ZXIgdmFyaWFibGUgb3duZXIgdG8gY29tbWFuZCAt LT4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJh bWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT48bGl0ZXJhbD5JRiBFWElTVFM8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBEbyBub3QgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHZhcmlh YmxlIGRvZXMgbm90IGV4aXN0LiBBIG5vdGljZSBpcyBpc3N1ZWQKKyAgICAgIGluIHRoaXMgY2Fz ZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiBhIHNjaGVt YSB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAg PHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRvIHJlbW92ZSB0aGUgc2No ZW1hIHZhcmlhYmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVyYWw+OgorCis8cHJvZ3JhbWxpc3Rpbmc+ CitEUk9QIFZBUklBQkxFIHZhcjE7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKyA8L3JlZnNl Y3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+CisKKyAg PHBhcmE+CisgICA8Y29tbWFuZD5EUk9QIFZBUklBQkxFPC9jb21tYW5kPiBpcyBwcm9wcmlldGFy eSBQb3N0Z3JlU1FMIGNvbW1hbmQuCisgICA8IS0tIGNyZWF0ZSB2YXJpYWJsZSBpcyBhICJQb3N0 Z3JlU1FMIGZlYXR1cmUiLAorICAgICAgICB0aGlzIGlzIGEgInByb3ByaWV0YXJ5IFBvc3RncmVT UUwgY29tbWFuZCIgLi4uIC0tPgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0 MT4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxp bmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtYWx0ZXJ2YXJpYWJsZSIvPjwvbWVt YmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRldmFyaWFibGUiLz48L21l bWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2VjdDE+CisKKzwvcmVmZW50cnk+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2dy YW50LnNnbWwKaW5kZXggZmY2NGM3YTNiYS4uYTgzOTIwYTdhMSAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9ncmFudC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbApA QCAtNzksNiArNzksMTAgQEAgR1JBTlQgeyBVU0FHRSB8IEFMTCBbIFBSSVZJTEVHRVMgXSB9CiAg ICAgT04gVFlQRSA8cmVwbGFjZWFibGU+dHlwZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQog ICAgIFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248 L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFsgV0lUSCBHUkFOVCBPUFRJT04gXQogCitHUkFOVCB7IFJF QUQgfCBXUklURSB8IEFMTCBbIFBSSVZJTEVHRVMgXSB9CisgICAgT04gVkFSSUFCTEUgPHJlcGxh Y2VhYmxlPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgVE8gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+ IFssIC4uLl0gWyBXSVRIIEdSQU5UIE9QVElPTiBdCisKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IGNh biBiZTo8L3BocmFzZT4KIAogICAgIFsgR1JPVVAgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4KQEAgLTE2Nyw2ICsxNzEsNyBAQCBHUkFOVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywg Li4uXSBUTyA8cmVwbGFjZQogICAgZm9yZWlnbiBzZXJ2ZXJzLAogICAgbGFyZ2Ugb2JqZWN0cywK ICAgIHNjaGVtYXMsCisgICBzY2hlbWEgdmFyaWFibGUKICAgIG9yIHRhYmxlc3BhY2VzLgogICAg Rm9yIG90aGVyIHR5cGVzIG9mIG9iamVjdHMsIHRoZSBkZWZhdWx0IHByaXZpbGVnZXMKICAgIGdy YW50ZWQgdG8gPGxpdGVyYWw+UFVCTElDPC9saXRlcmFsPiBhcmUgYXMgZm9sbG93czoKQEAgLTM4 NSw2ICszOTAsMjQgQEAgR1JBTlQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVf bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gVE8gPHJlcGxhY2UKICAgICAgPC9saXN0aXRlbT4K ICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxs aXRlcmFsPlJFQUQ8L2xpdGVyYWw+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFy YT4KKyAgICAgICBBbGxvd3MgdG8gcmVhZCBhIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgIDwvcGFy YT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0 ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPldSSVRFPC9saXRlcmFsPjwvdGVybT4KKyAgICAg PGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgQWxsb3dzIHRvIHNldCBhIHNjaGVtYSB2 YXJpYWJsZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgIDx0ZXJtPjxsaXRlcmFsPkFMTCBQUklW SUxFR0VTPC9saXRlcmFsPjwvdGVybT4KICAgICAgPGxpc3RpdGVtPgpAQCAtNTUwLDYgKzU3Myw4 IEBAIHJvbGVuYW1lPXh4eHggLS0gcHJpdmlsZWdlcyBncmFudGVkIHRvIGEgcm9sZQogICAgICAg ICAgICAgQyAtLSBDUkVBVEUKICAgICAgICAgICAgIGMgLS0gQ09OTkVDVAogICAgICAgICAgICAg VCAtLSBURU1QT1JBUlkKKyAgICAgICAgICAgIFMgLS0gUkVBRAorICAgICAgICAgICAgdyAtLSBX UklURQogICAgICAgYXJ3ZER4dCAtLSBBTEwgUFJJVklMRUdFUyAoZm9yIHRhYmxlcywgdmFyaWVz IGZvciBvdGhlciBvYmplY3RzKQogICAgICAgICAgICAgKiAtLSBncmFudCBvcHRpb24gZm9yIHBy ZWNlZGluZyBwcml2aWxlZ2UKIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uZThiZjNmNmRkNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvbGV0LnNnbWwKQEAgLTAsMCArMSw5MCBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9sZXQu c2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5IGlkPSJzcWwt bGV0Ij4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1sZXQiPgorICA8cHJpbWFyeT5MRVQ8L3ByaW1h cnk+CisgPC9pbmRleHRlcm0+CisKKyA8cmVmbWV0YT4KKyAgPHJlZmVudHJ5dGl0bGU+TEVUPC9y ZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZv PlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKwor IDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5MRVQ8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPmNo YW5nZSBhIHNjaGVtYSB2YXJpYWJsZSdzIHZhbHVlPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRp dj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0xFVCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+c2NoZW1hX3ZhcmlhYmxlPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+c3FsX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPgorPC9zeW5v cHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3Jp cHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIDxjb21tYW5kPkxFVDwvY29tbWFuZD4g Y29tbWFuZCB1cGRhdGVzIHRoZSBzcGVjaWZpZWQgc2NoZW1hIHZhcmlhYmxlJyB2YWx1ZS4KKyAg PC9wYXJhPgorCisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRl cnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0 ZXJtPjxsaXRlcmFsPnNjaGVtYV92YXJpYWJsZTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIG9mIHNjaGVtYSB2YXJpYWJsZS4KKyAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5zcWwgZXhwcmVzc2lvbjwvbGl0ZXJhbD48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEFuIFNRTCBleHByZXNz aW9uLCB0aGUgcmVzdWx0IGlzIGNhc3QgdG8gdGhlIHNjaGVtYSB2YXJpYWJsZSdzIHR5cGUuCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwvdmFy aWFibGVsaXN0PgorCisgIDxwYXJhPgorICAgRXhhbXBsZToKKzxwcm9ncmFtbGlzdGluZz4KK0NS RUFURSBWQVJJQUJMRSBteXZhciBBUyBpbnRlZ2VyOworTEVUIG15dmFyID0gMTA7CitMRVQgbXl2 YXIgPSAoU0VMRUNUIHN1bSh2YWwpIEZST00gdGFiKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwv cGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0aWJpbGl0 eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8IS0tIHRoaXMgZmVlbHMgbGlrZSBpdCBuZWVkcyB0 byBiZSBtb3JlIHNwZWNpZmljLAorICAgICAgICBidXQgSSBkb24ndCBrbm93IGVub3VnaCB0byBt YWtlIGl0IHNvIC0tPgorICAgPGxpdGVyYWw+TEVUPC9saXRlcmFsPiBleHRlbmRzIHN5bnRheCBk ZWZpbmVkIGluIHRoZSBTUUwKKyAgIHN0YW5kYXJkLiBUaGUgc3RhbmRhcmQga25vd3MgPGxpdGVy YWw+U0VUPC9saXRlcmFsPiBjb21tYW5kLAorICAgdGhhdCBpcyB1c2VkIGZvciBkaWZmZXJlbnQg cHVycG91c2UgaW4gUG9zdGdyZVNRTC4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVm c2VjdDE+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0i aW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+ PC9tZW1iZXI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1kcm9wdmFyaWFibGUiLz48 L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv cmV2b2tlLnNnbWwKaW5kZXggNTMxN2Y4Y2NiYS4uODQzNWUwNTk1NyAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jldm9rZS5z Z21sCkBAIC0xMDgsNiArMTA4LDEyIEBAIFJFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQogUkVW T0tFIFsgQURNSU4gT1BUSU9OIEZPUiBdCiAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gRlJPTSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQogICAgIFsgQ0FT Q0FERSB8IFJFU1RSSUNUIF0KKworUkVWT0tFIFsgR1JBTlQgT1BUSU9OIEZPUiBdCisgICAgeyB7 IFJFQUQgfCBXUklURSB9IFssIC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZB UklBQkxFIDxyZXBsYWNlYWJsZT52YXJpYWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQor ICAgIEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVf bmFtZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXQorICAgIFsgQ0FTQ0FERSB8IFJF U1RSSUNUIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21s CmluZGV4IGRiNGY0MTY3ZTMuLjVmYjgyZGY1MWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWZlcmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTc1LDYg Kzc1LDcgQEAKICAgICZhbHRlclR5cGU7CiAgICAmYWx0ZXJVc2VyOwogICAgJmFsdGVyVXNlck1h cHBpbmc7CisgICAmYWx0ZXJWYXJpYWJsZTsKICAgICZhbHRlclZpZXc7CiAgICAmYW5hbHl6ZTsK ICAgICZiZWdpbjsKQEAgLTEyNyw2ICsxMjgsNyBAQAogICAgJmNyZWF0ZVR5cGU7CiAgICAmY3Jl YXRlVXNlcjsKICAgICZjcmVhdGVVc2VyTWFwcGluZzsKKyAgICZjcmVhdGVWYXJpYWJsZTsKICAg ICZjcmVhdGVWaWV3OwogICAgJmRlYWxsb2NhdGU7CiAgICAmZGVjbGFyZTsKQEAgLTE3NSw2ICsx NzcsNyBAQAogICAgJmRyb3BUeXBlOwogICAgJmRyb3BVc2VyOwogICAgJmRyb3BVc2VyTWFwcGlu ZzsKKyAgICZkcm9wVmFyaWFibGU7CiAgICAmZHJvcFZpZXc7CiAgICAmZW5kOwogICAgJmV4ZWN1 dGU7CkBAIC0xODMsNiArMTg2LDcgQEAKICAgICZncmFudDsKICAgICZpbXBvcnRGb3JlaWduU2No ZW1hOwogICAgJmluc2VydDsKKyAgICZsZXQ7CiAgICAmbGlzdGVuOwogICAgJmxvYWQ7CiAgICAm bG9jazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL01ha2VmaWxlCmluZGV4IDA4NjUyNDBmMTEuLjFmN2M0ZDEyMjMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9NYWtlZmlsZQpAQCAtMTksNyArMTksNyBAQCBPQkpTID0gY2F0YWxvZy5vIGRlcGVuZGVu Y3kubyBoZWFwLm8gaW5kZXgubyBpbmRleGluZy5vIG5hbWVzcGFjZS5vIGFjbGNoay5vIFwKICAg ICAgICBwZ19kZXBlbmQubyBwZ19lbnVtLm8gcGdfaW5oZXJpdHMubyBwZ19sYXJnZW9iamVjdC5v IHBnX25hbWVzcGFjZS5vIFwKICAgICAgICBwZ19vcGVyYXRvci5vIHBnX3Byb2MubyBwZ19wdWJs aWNhdGlvbi5vIHBnX3JhbmdlLm8gXAogCSAgIHBnX2RiX3JvbGVfc2V0dGluZy5vIHBnX3NoZGVw ZW5kLm8gcGdfc3Vic2NyaXB0aW9uLm8gcGdfdHlwZS5vIFwKLQkgICBzdG9yYWdlLm8gdG9hc3Rp bmcubworCSAgIHBnX3ZhcmlhYmxlLm8gc3RvcmFnZS5vIHRvYXN0aW5nLm8KIAogQktJRklMRVMg PSBwb3N0Z3Jlcy5ia2kgcG9zdGdyZXMuZGVzY3JpcHRpb24gcG9zdGdyZXMuc2hkZXNjcmlwdGlv bgogCkBAIC00Niw3ICs0Niw3IEBAIENBVEFMT0dfSEVBREVSUyA6PSBcCiAJcGdfZGVmYXVsdF9h Y2wuaCBwZ19pbml0X3ByaXZzLmggcGdfc2VjbGFiZWwuaCBwZ19zaHNlY2xhYmVsLmggXAogCXBn X2NvbGxhdGlvbi5oIHBnX3BhcnRpdGlvbmVkX3RhYmxlLmggcGdfcmFuZ2UuaCBwZ190cmFuc2Zv cm0uaCBcCiAJcGdfc2VxdWVuY2UuaCBwZ19wdWJsaWNhdGlvbi5oIHBnX3B1YmxpY2F0aW9uX3Jl bC5oIHBnX3N1YnNjcmlwdGlvbi5oIFwKLQlwZ19zdWJzY3JpcHRpb25fcmVsLmgKKwlwZ19zdWJz Y3JpcHRpb25fcmVsLmggcGdfdmFyaWFibGUuaAogCiBHRU5FUkFURURfSEVBREVSUyA6PSAkKENB VEFMT0dfSEVBREVSUzolLmg9JV9kLmgpIHNjaGVtYXBnLmgKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9hY2xjaGsuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKaW5k ZXggNTc4ZTRjNjU5Mi4uODY5MTdlMTVhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9hY2xjaGsuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCkBAIC01Nyw2ICs1 Nyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmFuc2Zvcm0uaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJj b21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9leHRlbnNpb24uaCIKQEAgLTExMiw2ICsxMTMsNyBAQCBzdGF0aWMgdm9pZCBF eGVjR3JhbnRfTGFyZ2VvYmplY3QoSW50ZXJuYWxHcmFudCAqZ3JhbnRTdG10KTsKIHN0YXRpYyB2 b2lkIEV4ZWNHcmFudF9OYW1lc3BhY2UoSW50ZXJuYWxHcmFudCAqZ3JhbnRTdG10KTsKIHN0YXRp YyB2b2lkIEV4ZWNHcmFudF9UYWJsZXNwYWNlKEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7CiBz dGF0aWMgdm9pZCBFeGVjR3JhbnRfVHlwZShJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOworc3Rh dGljIHZvaWQgRXhlY0dyYW50X1ZhcmlhYmxlKEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7CiAK IHN0YXRpYyB2b2lkIFNldERlZmF1bHRBQ0xzSW5TY2hlbWFzKEludGVybmFsRGVmYXVsdEFDTCAq aWFjbHMsIExpc3QgKm5zcG5hbWVzKTsKIHN0YXRpYyB2b2lkIFNldERlZmF1bHRBQ0woSW50ZXJu YWxEZWZhdWx0QUNMICppYWNscyk7CkBAIC0yODQsNiArMjg2LDkgQEAgcmVzdHJpY3RfYW5kX2No ZWNrX2dyYW50KGJvb2wgaXNfZ3JhbnQsIEFjbE1vZGUgYXZhaWxfZ29wdGlvbnMsIGJvb2wgYWxs X3ByaXZzLAogCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJd2hvbGVfbWFzayA9IEFDTF9BTExfUklH SFRTX1RZUEU7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQl3aG9sZV9t YXNrID0gQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwgb2JqdHlwZSk7CiAJ CQkvKiBub3QgcmVhY2hlZCwgYnV0IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KQEAgLTUwNyw2ICs1 MTIsMTAgQEAgRXhlY3V0ZUdyYW50U3RtdChHcmFudFN0bXQgKnN0bXQpCiAJCQlhbGxfcHJpdmls ZWdlcyA9IEFDTF9BTExfUklHSFRTX0ZPUkVJR05fU0VSVkVSOwogCQkJZXJyb3Jtc2cgPSBnZXR0 ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIGZvcmVpZ24gc2VydmVyIik7 CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlhbGxfcHJpdmlsZWdlcyA9 IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImlu dmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIHNjaGVtYSB2YXJpYWJsZSIpOworCQkJYnJlYWs7 CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0 eXBlOiAlZCIsCiAJCQkJIChpbnQpIHN0bXQtPm9ianR5cGUpOwpAQCAtNjA5LDYgKzYxOCw5IEBA IEV4ZWNHcmFudFN0bXRfb2lkcyhJbnRlcm5hbEdyYW50ICppc3RtdCkKIAkJY2FzZSBPQkpFQ1Rf VEFCTEVTUEFDRToKIAkJCUV4ZWNHcmFudF9UYWJsZXNwYWNlKGlzdG10KTsKIAkJCWJyZWFrOwor CQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCUV4ZWNHcmFudF9WYXJpYWJsZShpc3RtdCk7CisJ CQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgR3JhbnRT dG10Lm9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgaXN0bXQtPm9ianR5cGUpOwpAQCAtNzY4LDYg Kzc4MCwxNiBAQCBvYmplY3ROYW1lc1RvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9i am5hbWVzKQogCQkJCW9iamVjdHMgPSBsYXBwZW5kX29pZChvYmplY3RzLCBzcnZpZCk7CiAJCQl9 CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlmb3JlYWNoKGNlbGwsIG9i am5hbWVzKQorCQkJeworCQkJCVJhbmdlVmFyICAgKnZhcnZhciA9IChSYW5nZVZhciAqKSBsZmly c3QoY2VsbCk7CisJCQkJT2lkCQkJcmVsT2lkOworCisJCQkJcmVsT2lkID0gbG9va3VwX3Zhcmlh YmxlKHZhcnZhci0+c2NoZW1hbmFtZSwgdmFydmFyLT5yZWxuYW1lLCBmYWxzZSk7CisJCQkJb2Jq ZWN0cyA9IGxhcHBlbmRfb2lkKG9iamVjdHMsIHJlbE9pZCk7CisJCQl9CisJCQlicmVhazsKIAkJ ZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgR3JhbnRTdG10Lm9ianR5cGU6 ICVkIiwKIAkJCQkgKGludCkgb2JqdHlwZSk7CkBAIC04NTUsNiArODc3LDMxIEBAIG9iamVjdHNJ blNjaGVtYVRvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm5zcG5hbWVzKQogCQkJCQlo ZWFwX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKIAkJCQl9CiAJCQkJYnJlYWs7CisJCQlj YXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQl7CisJCQkJCVNjYW5LZXlEYXRhIGtleTsKKwkJCQkJ UmVsYXRpb24JcmVsOworCQkJCQlIZWFwU2NhbkRlc2Mgc2NhbjsKKwkJCQkJSGVhcFR1cGxlCXR1 cGxlOworCisJCQkJCVNjYW5LZXlJbml0KCZrZXksCisJCQkJCQkJCUFudW1fcGdfdmFyaWFibGVf dmFybmFtZXNwYWNlLAorCQkJCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJ CQkJCQkJCU9iamVjdElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKworCQkJCQlyZWwgPSBoZWFw X29wZW4oVmFyaWFibGVSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCQlzY2FuID0g aGVhcF9iZWdpbnNjYW5fY2F0YWxvZyhyZWwsIDEsICZrZXkpOworCisJCQkJCXdoaWxlICgodHVw bGUgPSBoZWFwX2dldG5leHQoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24pKSAhPSBOVUxMKQor CQkJCQl7CisJCQkJCQlvYmplY3RzID0gbGFwcGVuZF9vaWQob2JqZWN0cywgSGVhcFR1cGxlR2V0 T2lkKHR1cGxlKSk7CisJCQkJCX0KKworCQkJCQloZWFwX2VuZHNjYW4oc2Nhbik7CisJCQkJCWhl YXBfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCX0KKwkJCQlicmVhazsKKwogCQkJ ZGVmYXVsdDoKIAkJCQkvKiBzaG91bGQgbm90IGhhcHBlbiAqLwogCQkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgR3JhbnRTdG10Lm9ianR5cGU6ICVkIiwKQEAgLTEwMTgsNiArMTA2NSwxMCBA QCBFeGVjQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRl ckRlZmF1bHRQcml2aWxlZ2VzU3RtdCAqcwogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJ R0hUU19TQ0hFTUE7CiAJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52YWxpZCBwcml2aWxl Z2UgdHlwZSAlcyBmb3Igc2NoZW1hIik7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFC TEU6CisJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJZXJy b3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIHNjaGVt YSB2YXJpYWJsZSIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGFjdGlvbi0+b2Jq dHlwZSk7CkBAIC0xMjE1LDYgKzEyNjYsMTIgQEAgU2V0RGVmYXVsdEFDTChJbnRlcm5hbERlZmF1 bHRBQ0wgKmlhY2xzKQogCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1NDSEVN QTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJb2JqdHlwZSA9IERF RkFDTE9CSl9WQVJJQUJMRTsKKwkJCWlmIChpYWNscy0+YWxsX3ByaXZzICYmIHRoaXNfcHJpdmls ZWdlcyA9PSBBQ0xfTk9fUklHSFRTKQorCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklH SFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+b2JqdHlwZSk7CkBA IC0xNDQxLDYgKzE0OTgsOSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChPaWQgcm9sZWlkLCBP aWQgY2xhc3NpZCwgT2lkIG9iamlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJ CWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOworCQkJY2FzZSBERUZB Q0xPQkpfVkFSSUFCTEU6CisJCQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJ CQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBoZXJlICovCiAJCQkJ ZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQiLApAQCAtMzI2Niw2 ICszMzI2LDEyOSBAQCBFeGVjR3JhbnRfVHlwZShJbnRlcm5hbEdyYW50ICppc3RtdCkKIAloZWFw X2Nsb3NlKHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKIH0KIAorc3RhdGljIHZvaWQKK0V4 ZWNHcmFudF9WYXJpYWJsZShJbnRlcm5hbEdyYW50ICppc3RtdCkKK3sKKwlSZWxhdGlvbglyZWxh dGlvbjsKKwlMaXN0Q2VsbCAgICpjZWxsOworCisJaWYgKGlzdG10LT5hbGxfcHJpdnMgJiYgaXN0 bXQtPnByaXZpbGVnZXMgPT0gQUNMX05PX1JJR0hUUykKKwkJaXN0bXQtPnByaXZpbGVnZXMgPSBB Q0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKworCXJlbGF0aW9uID0gaGVhcF9vcGVuKFZhcmlhYmxl UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlmb3JlYWNoKGNlbGwsIGlzdG10LT5v YmplY3RzKQorCXsKKwkJT2lkCQkJdmFySWQgPSBsZmlyc3Rfb2lkKGNlbGwpOworCQlGb3JtX3Bn X3ZhcmlhYmxlIHBnX3ZhcmlhYmxlX3R1cGxlOworCQlEYXR1bQkJYWNsRGF0dW07CisJCWJvb2wJ CWlzTnVsbDsKKwkJQWNsTW9kZQkJYXZhaWxfZ29wdGlvbnM7CisJCUFjbE1vZGUJCXRoaXNfcHJp dmlsZWdlczsKKwkJQWNsCQkgICAqb2xkX2FjbDsKKwkJQWNsCQkgICAqbmV3X2FjbDsKKwkJT2lk CQkJZ3JhbnRvcklkOworCQlPaWQJCQlvd25lcklkOworCQlIZWFwVHVwbGUJdHVwbGU7CisJCUhl YXBUdXBsZQluZXd0dXBsZTsKKwkJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ192YXJpYWJsZV07CisJ CWJvb2wJCW51bGxzW05hdHRzX3BnX3ZhcmlhYmxlXTsKKwkJYm9vbAkJcmVwbGFjZXNbTmF0dHNf cGdfdmFyaWFibGVdOworCQlpbnQJCQlub2xkbWVtYmVyczsKKwkJaW50CQkJbm5ld21lbWJlcnM7 CisJCU9pZAkJICAgKm9sZG1lbWJlcnM7CisJCU9pZAkJICAgKm5ld21lbWJlcnM7CisKKwkJdHVw bGUgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFySWQp KTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEgdmFyaWFibGVzICV1IiwgdmFySWQpOworCisJCXBn X3ZhcmlhYmxlX3R1cGxlID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXBsZSk7CisK KwkJLyoKKwkJICogR2V0IG93bmVyIElEIGFuZCB3b3JraW5nIGNvcHkgb2YgZXhpc3RpbmcgQUNM LiBJZiB0aGVyZSdzIG5vIEFDTCwKKwkJICogc3Vic3RpdHV0ZSB0aGUgcHJvcGVyIGRlZmF1bHQu CisJCSAqLworCQlvd25lcklkID0gcGdfdmFyaWFibGVfdHVwbGUtPnZhcm93bmVyOworCQlhY2xE YXR1bSA9IFN5c0NhY2hlR2V0QXR0cihWQVJJQUJMRU9JRCwgdHVwbGUsIEFudW1fcGdfdmFyaWFi bGVfdmFyYWNsLAorCQkJCQkJCQkgICAmaXNOdWxsKTsKKwkJaWYgKGlzTnVsbCkKKwkJeworCQkJ b2xkX2FjbCA9IGFjbGRlZmF1bHQoT0JKRUNUX1ZBUklBQkxFLCBvd25lcklkKTsKKwkJCS8qIFRo ZXJlIGFyZSBubyBvbGQgbWVtYmVyIHJvbGVzIGFjY29yZGluZyB0byB0aGUgY2F0YWxvZ3MgKi8K KwkJCW5vbGRtZW1iZXJzID0gMDsKKwkJCW9sZG1lbWJlcnMgPSBOVUxMOworCQl9CisJCWVsc2UK KwkJeworCQkJb2xkX2FjbCA9IERhdHVtR2V0QWNsUENvcHkoYWNsRGF0dW0pOworCQkJLyogR2V0 IHRoZSByb2xlcyBtZW50aW9uZWQgaW4gdGhlIGV4aXN0aW5nIEFDTCAqLworCQkJbm9sZG1lbWJl cnMgPSBhY2xtZW1iZXJzKG9sZF9hY2wsICZvbGRtZW1iZXJzKTsKKwkJfQorCisJCS8qIERldGVy bWluZSBJRCB0byBkbyB0aGUgZ3JhbnQgYXMsIGFuZCBhdmFpbGFibGUgZ3JhbnQgb3B0aW9ucyAq LworCQlzZWxlY3RfYmVzdF9ncmFudG9yKEdldFVzZXJJZCgpLCBpc3RtdC0+cHJpdmlsZWdlcywK KwkJCQkJCQlvbGRfYWNsLCBvd25lcklkLAorCQkJCQkJCSZncmFudG9ySWQsICZhdmFpbF9nb3B0 aW9ucyk7CisKKwkJLyoKKwkJICogUmVzdHJpY3QgdGhlIHByaXZpbGVnZXMgdG8gd2hhdCB3ZSBj YW4gYWN0dWFsbHkgZ3JhbnQsIGFuZCBlbWl0IHRoZQorCQkgKiBzdGFuZGFyZHMtbWFuZGF0ZWQg d2FybmluZyBhbmQgZXJyb3IgbWVzc2FnZXMuCisJCSAqLworCQl0aGlzX3ByaXZpbGVnZXMgPQor CQkJcmVzdHJpY3RfYW5kX2NoZWNrX2dyYW50KGlzdG10LT5pc19ncmFudCwgYXZhaWxfZ29wdGlv bnMsCisJCQkJCQkJCQkgaXN0bXQtPmFsbF9wcml2cywgaXN0bXQtPnByaXZpbGVnZXMsCisJCQkJ CQkJCQkgdmFySWQsIGdyYW50b3JJZCwgT0JKRUNUX1ZBUklBQkxFLAorCQkJCQkJCQkJIE5hbWVT dHIocGdfdmFyaWFibGVfdHVwbGUtPnZhcm5hbWUpLAorCQkJCQkJCQkJIDAsIE5VTEwpOworCisJ CS8qCisJCSAqIEdlbmVyYXRlIG5ldyBBQ0wuCisJCSAqLworCQluZXdfYWNsID0gbWVyZ2VfYWNs X3dpdGhfZ3JhbnQob2xkX2FjbCwgaXN0bXQtPmlzX2dyYW50LAorCQkJCQkJCQkJICAgaXN0bXQt PmdyYW50X29wdGlvbiwgaXN0bXQtPmJlaGF2aW9yLAorCQkJCQkJCQkJICAgaXN0bXQtPmdyYW50 ZWVzLCB0aGlzX3ByaXZpbGVnZXMsCisJCQkJCQkJCQkgICBncmFudG9ySWQsIG93bmVySWQpOwor CisJCS8qCisJCSAqIFdlIG5lZWQgdGhlIG1lbWJlcnMgb2YgYm90aCBvbGQgYW5kIG5ldyBBQ0xz IHNvIHdlIGNhbiBjb3JyZWN0IHRoZQorCQkgKiBzaGFyZWQgZGVwZW5kZW5jeSBpbmZvcm1hdGlv bi4KKwkJICovCisJCW5uZXdtZW1iZXJzID0gYWNsbWVtYmVycyhuZXdfYWNsLCAmbmV3bWVtYmVy cyk7CisKKwkJLyogZmluaXNoZWQgYnVpbGRpbmcgbmV3IEFDTCB2YWx1ZSwgbm93IGluc2VydCBp dCAqLworCQlNZW1TZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJCU1lbVNldChudWxs cywgZmFsc2UsIHNpemVvZihudWxscykpOworCQlNZW1TZXQocmVwbGFjZXMsIGZhbHNlLCBzaXpl b2YocmVwbGFjZXMpKTsKKworCQlyZXBsYWNlc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCAtIDFd ID0gdHJ1ZTsKKwkJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyYWNsIC0gMV0gPSBQb2ludGVy R2V0RGF0dW0obmV3X2FjbCk7CisKKwkJbmV3dHVwbGUgPSBoZWFwX21vZGlmeV90dXBsZSh0dXBs ZSwgUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbiksIHZhbHVlcywKKwkJCQkJCQkJCSBudWxscywg cmVwbGFjZXMpOworCisJCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWxhdGlvbiwgJm5ld3R1cGxlLT50 X3NlbGYsIG5ld3R1cGxlKTsKKworCQkvKiBVcGRhdGUgaW5pdGlhbCBwcml2aWxlZ2VzIGZvciBl eHRlbnNpb25zICovCisJCXJlY29yZEV4dGVuc2lvbkluaXRQcml2KHZhcklkLCBWYXJpYWJsZVJl bGF0aW9uSWQsIDAsIG5ld19hY2wpOworCisJCS8qIFVwZGF0ZSB0aGUgc2hhcmVkIGRlcGVuZGVu Y3kgQUNMIGluZm8gKi8KKwkJdXBkYXRlQWNsRGVwZW5kZW5jaWVzKFZhcmlhYmxlUmVsYXRpb25J ZCwgdmFySWQsIDAsCisJCQkJCQkJICBvd25lcklkLAorCQkJCQkJCSAgbm9sZG1lbWJlcnMsIG9s ZG1lbWJlcnMsCisJCQkJCQkJICBubmV3bWVtYmVycywgbmV3bWVtYmVycyk7CisKKwkJUmVsZWFz ZVN5c0NhY2hlKHR1cGxlKTsKKworCQlwZnJlZShuZXdfYWNsKTsKKworCQkvKiBwcmV2ZW50IGVy cm9yIHdoZW4gcHJvY2Vzc2luZyBkdXBsaWNhdGUgb2JqZWN0cyAqLworCQlDb21tYW5kQ291bnRl ckluY3JlbWVudCgpOworCX0KKworCWhlYXBfY2xvc2UocmVsYXRpb24sIFJvd0V4Y2x1c2l2ZUxv Y2spOworfQorCiAKIHN0YXRpYyBBY2xNb2RlCiBzdHJpbmdfdG9fcHJpdmlsZWdlKGNvbnN0IGNo YXIgKnByaXZuYW1lKQpAQCAtMzI5OCw2ICszNDgxLDEwIEBAIHN0cmluZ190b19wcml2aWxlZ2Uo Y29uc3QgY2hhciAqcHJpdm5hbWUpCiAJCXJldHVybiBBQ0xfQ09OTkVDVDsKIAlpZiAoc3RyY21w KHByaXZuYW1lLCAicnVsZSIpID09IDApCiAJCXJldHVybiAwOwkJCQkvKiBpZ25vcmUgb2xkIFJV TEUgcHJpdmlsZWdlcyAqLworCWlmIChzdHJjbXAocHJpdm5hbWUsICJyZWFkIikgPT0gMCkKKwkJ cmV0dXJuIEFDTF9SRUFEOworCWlmIChzdHJjbXAocHJpdm5hbWUsICJ3cml0ZSIpID09IDApCisJ CXJldHVybiBBQ0xfV1JJVEU7CiAJZXJlcG9ydChFUlJPUiwKIAkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJCSBlcnJtc2coInVucmVjb2duaXplZCBwcml2aWxlZ2UgdHlwZSBc IiVzXCIiLCBwcml2bmFtZSkpKTsKQEAgLTMzMzMsNiArMzUyMCwxMCBAQCBwcml2aWxlZ2VfdG9f c3RyaW5nKEFjbE1vZGUgcHJpdmlsZWdlKQogCQkJcmV0dXJuICJURU1QIjsKIAkJY2FzZSBBQ0xf Q09OTkVDVDoKIAkJCXJldHVybiAiQ09OTkVDVCI7CisJCWNhc2UgQUNMX1JFQUQ6CisJCQlyZXR1 cm4gIlJFQUQiOworCQljYXNlIEFDTF9XUklURToKKwkJCXJldHVybiAiV1JJVEUiOwogCQlkZWZh dWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBwcml2aWxlZ2U6ICVkIiwgKGludCkg cHJpdmlsZWdlKTsKIAl9CkBAIC0zNDU2LDYgKzM2NDcsOSBAQCBhY2xjaGVja19lcnJvcihBY2xS ZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX1RZUEU6 CiAJCQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoInBlcm1pc3Npb24gZGVuaWVkIGZvciB0eXBlICVz Iik7CiAJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJCQltc2cg PSBnZXR0ZXh0X25vb3AoInBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgJXMi KTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJCQkJbXNnID0gZ2V0 dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdmlldyAlcyIpOwogCQkJCQkJYnJlYWs7 CkBAIC0zNTY2LDYgKzM3NjAsOSBAQCBhY2xjaGVja19lcnJvcihBY2xSZXN1bHQgYWNsZXJyLCBP YmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCQkJCQltc2cgPSBn ZXR0ZXh0X25vb3AoIm11c3QgYmUgb3duZXIgb2YgdHlwZSAlcyIpOwogCQkJCQkJYnJlYWs7CisJ CQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0 IGJlIG93bmVyIG9mIHNjaGVtYSB2YXJpYWJsZSAlcyIpOworCQkJCQkJYnJlYWs7CiAJCQkJCWNh c2UgT0JKRUNUX1ZJRVc6CiAJCQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoIm11c3QgYmUgb3duZXIg b2YgdmlldyAlcyIpOwogCQkJCQkJYnJlYWs7CkBAIC0zNzEwLDYgKzM5MDcsOCBAQCBwZ19hY2xt YXNrKE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIHRhYmxlX29pZCwgQXR0ck51bWJlciBhdHRudW0s IE9pZCByb2xlaWQsCiAJCQlyZXR1cm4gQUNMX05PX1JJR0hUUzsKIAkJY2FzZSBPQkpFQ1RfVFlQ RToKIAkJCXJldHVybiBwZ190eXBlX2FjbG1hc2sodGFibGVfb2lkLCByb2xlaWQsIG1hc2ssIGhv dyk7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJuIHBnX3ZhcmlhYmxlX2FjbG1h c2sodGFibGVfb2lkLCByb2xlaWQsIG1hc2ssIGhvdyk7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVS Uk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgb2JqdHlwZSk7CkBA IC00NDk5LDYgKzQ2OTgsNjcgQEAgcGdfdHlwZV9hY2xtYXNrKE9pZCB0eXBlX29pZCwgT2lkIHJv bGVpZCwgQWNsTW9kZSBtYXNrLCBBY2xNYXNrSG93IGhvdykKIAlyZXR1cm4gcmVzdWx0OwogfQog CisvKgorICogRXhwb3J0ZWQgcm91dGluZSBmb3IgZXhhbWluaW5nIGEgdXNlcidzIHByaXZpbGVn ZXMgZm9yIGEgdmFyaWFibGUuCisgKi8KK0FjbE1vZGUKK3BnX3ZhcmlhYmxlX2FjbG1hc2soT2lk IHZhcl9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbWFzaywgQWNsTWFza0hvdyBob3cpCit7CisJ QWNsTW9kZQkJcmVzdWx0OworCUhlYXBUdXBsZQl0dXBsZTsKKwlEYXR1bQkJYWNsRGF0dW07CisJ Ym9vbAkJaXNOdWxsOworCUFjbAkJICAgKmFjbDsKKwlPaWQJCQlvd25lcklkOworCisJRm9ybV9w Z192YXJpYWJsZSB2YXJGb3JtOworCisJLyogQnlwYXNzIHBlcm1pc3Npb24gY2hlY2tzIGZvciBz dXBlcnVzZXJzICovCisJaWYgKHN1cGVydXNlcl9hcmcocm9sZWlkKSkKKwkJcmV0dXJuIG1hc2s7 CisKKwkvKgorCSAqIE11c3QgZ2V0IHRoZSB0eXBlJ3MgdHVwbGUgZnJvbSBwZ190eXBlCisJICov CisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0o dmFyX29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJybXNn KCJ2YXJpYWJsZSB3aXRoIE9JRCAldSBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQl2YXJfb2lkKSkp OworCXZhckZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cGxlKTsKKworCS8q CisJICogTm93IGdldCB0aGUgdHlwZSdzIG93bmVyIGFuZCBBQ0wgZnJvbSB0aGUgdHVwbGUKKwkg Ki8KKwlvd25lcklkID0gdmFyRm9ybS0+dmFyb3duZXI7CisKKwlhY2xEYXR1bSA9IFN5c0NhY2hl R2V0QXR0cihWQVJJQUJMRU9JRCwgdHVwbGUsCisJCQkJCQkJICAgQW51bV9wZ192YXJpYWJsZV92 YXJhY2wsICZpc051bGwpOworCWlmIChpc051bGwpCisJeworCQkvKiBObyBBQ0wsIHNvIGJ1aWxk IGRlZmF1bHQgQUNMICovCisJCWFjbCA9IGFjbGRlZmF1bHQoT0JKRUNUX1ZBUklBQkxFLCBvd25l cklkKTsKKwkJYWNsRGF0dW0gPSAoRGF0dW0pIDA7CisJfQorCWVsc2UKKwl7CisJCS8qIGRldG9h c3QgcmVsJ3MgQUNMIGlmIG5lY2Vzc2FyeSAqLworCQlhY2wgPSBEYXR1bUdldEFjbFAoYWNsRGF0 dW0pOworCX0KKworCXJlc3VsdCA9IGFjbG1hc2soYWNsLCByb2xlaWQsIG93bmVySWQsIG1hc2ss IGhvdyk7CisKKwkvKiBpZiB3ZSBoYXZlIGEgZGV0b2FzdGVkIGNvcHksIGZyZWUgaXQgKi8KKwlp ZiAoYWNsICYmIChQb2ludGVyKSBhY2wgIT0gRGF0dW1HZXRQb2ludGVyKGFjbERhdHVtKSkKKwkJ cGZyZWUoYWNsKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisKKwlyZXR1cm4gcmVzdWx0 OworfQorCisKIC8qCiAgKiBFeHBvcnRlZCByb3V0aW5lIGZvciBjaGVja2luZyBhIHVzZXIncyBh Y2Nlc3MgcHJpdmlsZWdlcyB0byBhIGNvbHVtbgogICoKQEAgLTQ3NDQsNiArNTAwNCwxOCBAQCBw Z190eXBlX2FjbGNoZWNrKE9pZCB0eXBlX29pZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2RlKQog CQlyZXR1cm4gQUNMQ0hFQ0tfTk9fUFJJVjsKIH0KIAorLyoKKyAqIEV4cG9ydGVkIHJvdXRpbmUg Zm9yIGNoZWNraW5nIGEgdXNlcidzIGFjY2VzcyBwcml2aWxlZ2VzIHRvIGEgdmFyaWFibGUKKyAq LworQWNsUmVzdWx0CitwZ192YXJpYWJsZV9hY2xjaGVjayhPaWQgdHlwZV9vaWQsIE9pZCByb2xl aWQsIEFjbE1vZGUgbW9kZSkKK3sKKwlpZiAocGdfdmFyaWFibGVfYWNsbWFzayh0eXBlX29pZCwg cm9sZWlkLCBtb2RlLCBBQ0xNQVNLX0FOWSkgIT0gMCkKKwkJcmV0dXJuIEFDTENIRUNLX09LOwor CWVsc2UKKwkJcmV0dXJuIEFDTENIRUNLX05PX1BSSVY7Cit9CisKIC8qCiAgKiBPd25lcnNoaXAg Y2hlY2sgZm9yIGEgcmVsYXRpb24gKHNwZWNpZmllZCBieSBPSUQpLgogICovCkBAIC01MzYxLDYg KzU2MzMsMzMgQEAgcGdfc3RhdGlzdGljc19vYmplY3Rfb3duZXJjaGVjayhPaWQgc3RhdF9vaWQs IE9pZCByb2xlaWQpCiAJcmV0dXJuIGhhc19wcml2c19vZl9yb2xlKHJvbGVpZCwgb3duZXJJZCk7 CiB9CiAKKy8qCisgKiBPd25lcnNoaXAgY2hlY2sgZm9yIGEgc2NoZW1hIHZhcmlhYmxlcyAoc3Bl Y2lmaWVkIGJ5IE9JRCkuCisgKi8KK2Jvb2wKK3BnX3ZhcmlhYmxlX293bmVyY2hlY2soT2lkIGRi X29pZCwgT2lkIHJvbGVpZCkKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJT2lkCQkJb3duZXJJZDsK KworCS8qIFN1cGVydXNlcnMgYnlwYXNzIGFsbCBwZXJtaXNzaW9uIGNoZWNraW5nLiAqLworCWlm IChzdXBlcnVzZXJfYXJnKHJvbGVpZCkpCisJCXJldHVybiB0cnVlOworCisJdHVwbGUgPSBTZWFy Y2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0oZGJfb2lkKSk7CisJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9EQVRBQkFTRSksCisJCQkJIGVycm1zZygidmFyaWFibGUgd2l0 aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLCBkYl9vaWQpKSk7CisKKwlvd25lcklkID0gKChGb3Jt X3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwbGUpKS0+dmFyb3duZXI7CisKKwlSZWxlYXNlU3lz Q2FjaGUodHVwbGUpOworCisJcmV0dXJuIGhhc19wcml2c19vZl9yb2xlKHJvbGVpZCwgb3duZXJJ ZCk7Cit9CisKKwogLyoKICAqIENoZWNrIHdoZXRoZXIgc3BlY2lmaWVkIHJvbGUgaGFzIENSRUFU RVJPTEUgcHJpdmlsZWdlIChvciBpcyBhIHN1cGVydXNlcikKICAqCkBAIC01NDg2LDYgKzU3ODUs MTAgQEAgZ2V0X3VzZXJfZGVmYXVsdF9hY2woT2JqZWN0VHlwZSBvYmp0eXBlLCBPaWQgb3duZXJJ ZCwgT2lkIG5zcF9vaWQpCiAJCQlkZWZhY2xvYmp0eXBlID0gREVGQUNMT0JKX05BTUVTUEFDRTsK IAkJCWJyZWFrOwogCisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJZGVmYWNsb2JqdHlwZSA9 IERFRkFDTE9CSl9WQVJJQUJMRTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4g TlVMTDsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IDRmMWQzNjUzNTcuLjc4MmRk YjE2NTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC01OSw2ICs1OSw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlw ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbW1lbnQuaCIKICNpbmNs dWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2Vy LmgiCkBAIC02Nyw2ICs2OCw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvY2xhbmcuaCIKICNp bmNsdWRlICJjb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9z Y2hlbWFjbWRzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaCIKICNpbmNs dWRlICJjb21tYW5kcy9zZWNsYWJlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgpAQCAtMTI4MCw2ICsxMjgyLDEwIEBAIGRv RGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBpbnQgZmxhZ3MpCiAJCQlEcm9w VHJhbnNmb3JtQnlJZChvYmplY3QtPm9iamVjdElkKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0NM QVNTX1ZBUklBQkxFOgorCQkJUmVtb3ZlVmFyaWFibGVCeUlkKG9iamVjdC0+b2JqZWN0SWQpOwor CQkJYnJlYWs7CisKIAkJCS8qCiAJCQkgKiBUaGVzZSBnbG9iYWwgb2JqZWN0IHR5cGVzIGFyZSBu b3Qgc3VwcG9ydGVkIGhlcmUuCiAJCQkgKi8KQEAgLTI1MzcsNiArMjU0Myw5IEBAIGdldE9iamVj dENsYXNzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAogCQljYXNlIFRyYW5zZm9ybVJl bGF0aW9uSWQ6CiAJCQlyZXR1cm4gT0NMQVNTX1RSQU5TRk9STTsKKworCQljYXNlIFZhcmlhYmxl UmVsYXRpb25JZDoKKwkJCXJldHVybiBPQ0xBU1NfVkFSSUFCTEU7CiAJfQogCiAJLyogc2hvdWxk bid0IGdldCBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFj ZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwppbmRleCAzOTcxMzQ2ZTczLi45 MGQxNmUyNjNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKQEAgLTM5LDYgKzM5LDcgQEAKICNp bmNsdWRlICJjYXRhbG9nL3BnX3RzX3BhcnNlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNf dGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgogI2lu Y2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtNzU1LDYgKzc1 Niw3MSBAQCBSZWxhdGlvbklzVmlzaWJsZShPaWQgcmVsaWQpCiAJcmV0dXJuIHZpc2libGU7CiB9 CiAKKy8qCisgKiBWYXJpYWJsZUlzVmlzaWJsZQorICoJCURldGVybWluZSB3aGV0aGVyIGEgdmFy aWFibGUgKGlkZW50aWZpZWQgYnkgT0lEKSBpcyB2aXNpYmxlIGluIHRoZQorICoJCWN1cnJlbnQg c2VhcmNoIHBhdGguICBWaXNpYmxlIG1lYW5zICJ3b3VsZCBiZSBmb3VuZCBieSBzZWFyY2hpbmcK KyAqCQlmb3IgdGhlIHVucXVhbGlmaWVkIHZhcmlhYmxlIG5hbWUiLgorICovCitib29sCitWYXJp YWJsZUlzVmlzaWJsZShPaWQgdmFyaWQpCit7CisJSGVhcFR1cGxlCXZhcnR1cDsKKwlGb3JtX3Bn X3ZhcmlhYmxlIHZhcmZvcm07CisJT2lkCQkJdmFybmFtZXNwYWNlOworCWJvb2wJCXZpc2libGU7 CisKKwl2YXJ0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0 dW0odmFyaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodmFydHVwKSkKKwkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSAldSIsIHZhcmlkKTsK Kwl2YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh2YXJ0dXApOworCisJcmVj b21wdXRlTmFtZXNwYWNlUGF0aCgpOworCisJLyoKKwkgKiBRdWljayBjaGVjazogaWYgaXQgYWlu J3QgaW4gdGhlIHBhdGggYXQgYWxsLCBpdCBhaW4ndCB2aXNpYmxlLiBJdGVtcyBpbgorCSAqIHRo ZSBzeXN0ZW0gbmFtZXNwYWNlIGFyZSBzdXJlbHkgaW4gdGhlIHBhdGggYW5kIHNvIHdlIG5lZWRu J3QgZXZlbiBkbworCSAqIGxpc3RfbWVtYmVyX29pZCgpIGZvciB0aGVtLgorCSAqLworCXZhcm5h bWVzcGFjZSA9IHZhcmZvcm0tPnZhcm5hbWVzcGFjZTsKKwlpZiAodmFybmFtZXNwYWNlICE9IFBH X0NBVEFMT0dfTkFNRVNQQUNFICYmCisJCSFsaXN0X21lbWJlcl9vaWQoYWN0aXZlU2VhcmNoUGF0 aCwgdmFybmFtZXNwYWNlKSkKKwkJdmlzaWJsZSA9IGZhbHNlOworCWVsc2UKKwl7CisJCS8qCisJ CSAqIElmIGl0IGlzIGluIHRoZSBwYXRoLCBpdCBtaWdodCBzdGlsbCBub3QgYmUgdmlzaWJsZTsg aXQgY291bGQgYmUKKwkJICogaGlkZGVuIGJ5IGFub3RoZXIgcmVsYXRpb24gb2YgdGhlIHNhbWUg bmFtZSBlYXJsaWVyIGluIHRoZSBwYXRoLiBTbworCQkgKiB3ZSBtdXN0IGRvIGEgc2xvdyBjaGVj ayBmb3IgY29uZmxpY3RpbmcgcmVsYXRpb25zLgorCQkgKi8KKwkJY2hhcgkgICAqdmFybmFtZSA9 IE5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSk7CisJCUxpc3RDZWxsICAgKmw7CisKKwkJdmlzaWJs ZSA9IGZhbHNlOworCQlmb3JlYWNoKGwsIGFjdGl2ZVNlYXJjaFBhdGgpCisJCXsKKwkJCU9pZAkJ CW5hbWVzcGFjZUlkID0gbGZpcnN0X29pZChsKTsKKworCQkJaWYgKG5hbWVzcGFjZUlkID09IHZh cm5hbWVzcGFjZSkKKwkJCXsKKwkJCQkvKiBGb3VuZCBpdCBmaXJzdCBpbiBwYXRoICovCisJCQkJ dmlzaWJsZSA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlpZiAoT2lkSXNWYWxpZChnZXRf dmFybmFtZV92YXJpZCh2YXJuYW1lLCBuYW1lc3BhY2VJZCkpKQorCQkJeworCQkJCS8qIEZvdW5k IHNvbWV0aGluZyBlbHNlIGZpcnN0IGluIHBhdGggKi8KKwkJCQlicmVhazsKKwkJCX0KKwkJfQor CX0KKworCVJlbGVhc2VTeXNDYWNoZSh2YXJ0dXApOworCisJcmV0dXJuIHZpc2libGU7Cit9CisK KwogCiAvKgogICogVHlwZW5hbWVHZXRUeXBpZApAQCAtMjc3Niw2ICsyODQyLDIwMiBAQCBUU0Nv bmZpZ0lzVmlzaWJsZShPaWQgY2ZnaWQpCiAJcmV0dXJuIHZpc2libGU7CiB9CiAKKy8qCisgKiBX aGVuIHdlIGtub3cgYSB2YXJpYWJsZSBuYW1lLCB0aGVuIHdlIGNhbiBmaW5kIHZhcmlhYmxlIHNp bXBseQorICovCitPaWQKK2xvb2t1cF92YXJpYWJsZShjb25zdCBjaGFyICpuc3BuYW1lLCBjb25z dCBjaGFyICp2YXJuYW1lLCBib29sIG1pc3Npbmdfb2spCit7CisJT2lkCQkJbmFtZXNwYWNlSWQ7 CisJT2lkCQkJdmFyb2lkCQk9IEludmFsaWRPaWQ7CisJTGlzdENlbGwgICAqbDsKKworCWlmIChu c3BuYW1lKQorCXsKKwkJbmFtZXNwYWNlSWQgPSBMb29rdXBFeHBsaWNpdE5hbWVzcGFjZShuc3Bu YW1lLCBtaXNzaW5nX29rKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKG5hbWVzcGFjZUlkKSkKKwkJCXJl dHVybiBJbnZhbGlkT2lkOworCisJCXZhcm9pZCA9IEdldFN5c0NhY2hlT2lkMihWQVJJQUJMRU5B TUVOU1AsCisJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKHZhcm5hbWUpLAorCQkJCQkJCQkgIE9i amVjdElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKwl9CisJZWxzZQorCXsKKwkJLyogc2VhcmNo IGZvciBpdCBpbiBzZWFyY2ggcGF0aCAqLworCQlyZWNvbXB1dGVOYW1lc3BhY2VQYXRoKCk7CisK KwkJZm9yZWFjaChsLCBhY3RpdmVTZWFyY2hQYXRoKQorCQl7CisJCQluYW1lc3BhY2VJZCA9IGxm aXJzdF9vaWQobCk7CisKKwkJCXZhcm9pZCA9IEdldFN5c0NhY2hlT2lkMihWQVJJQUJMRU5BTUVO U1AsCisJCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwKKwkJCQkJCQkJCSAgT2Jq ZWN0SWRHZXREYXR1bShuYW1lc3BhY2VJZCkpOworCisJCQlpZiAoT2lkSXNWYWxpZCh2YXJvaWQp KQorCQkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKCFPaWRJc1ZhbGlkKHZhcm9pZCkgJiYgIW1p c3Npbmdfb2spCisJeworCQlpZiAobnNwbmFtZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2coInZhcmlhYmxl IFwiJXNcIi5cIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCQluc3BuYW1lLCB2YXJuYW1l KSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VO REVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBcIiVzXCIgZG9lcyBub3Qg ZXhpc3QiLAorCQkJCQkJCQl2YXJuYW1lKSkpOworCX0KKworCXJldHVybiB2YXJvaWQ7Cit9CisK K0xpc3QgKgorTmFtZXNGcm9tTGlzdChMaXN0ICpuYW1lcykKK3sKKwlMaXN0Q2VsbCAqbDsKKwlM aXN0CSpyZXN1bHQgPSBOSUw7CisKKwlmb3JlYWNoKGwsIG5hbWVzKQorCXsKKwkJTm9kZSAqbiA9 IGxmaXJzdChsKTsKKworCQlpZiAoSXNBKG4sIFN0cmluZykpCisJCXsKKwkJCXJlc3VsdCA9IGxh cHBlbmQocmVzdWx0LCBuKTsKKwkJfQorCQllbHNlCisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4g cmVzdWx0OworfQorCisvKgorICogaWRlbnRpZnlfdmFyaWFibGUKKyAqCisgKiBSZXR1cm5zIG9p ZCBvZiBub3QgYW1iaWdvbnVvdXMgdmFyaWFibGUgc3BlY2lmaWVkIGJ5IHF1YWxpZmllZCBwYXRo CisgKiBvciBJbnZhbGlkT2lkLiBXaGVuIHRoZSBwYXRoIGlzIGFtYmlnb251b3VzLCB0aGVuIG5v dF91bmlxIGZsYWcgaXMKKyAqIGlzIHRydWUuCisgKi8KK09pZAoraWRlbnRpZnlfdmFyaWFibGUo TGlzdCAqbmFtZXMsIGNoYXIgKiphdHRybmFtZSwgYm9vbCAqbm90X3VuaXEpCit7CisJY2hhciAg ICphID0gTlVMTDsKKwljaGFyICAgKmIgPSBOVUxMOworCWNoYXIgICAqYyA9IE5VTEw7CisJY2hh ciAgICpkID0gTlVMTDsKKwlPaWQJCXZhcm9pZF93aXRob3V0X2F0dHI7CisJT2lkCQl2YXJvaWRf d2l0aF9hdHRyOworCisJKm5vdF91bmlxID0gZmFsc2U7CisKKwlzd2l0Y2ggKGxpc3RfbGVuZ3Ro KG5hbWVzKSkKKwl7CisJCWNhc2UgMToKKwkJCWEgPSBzdHJWYWwobGluaXRpYWwobmFtZXMpKTsK KwkJCXJldHVybiBsb29rdXBfdmFyaWFibGUoTlVMTCwgYSwgdHJ1ZSk7CisKKwkJY2FzZSAyOgor CQkJYSA9IHN0clZhbChsaW5pdGlhbChuYW1lcykpOworCQkJYiA9IHN0clZhbChsc2Vjb25kKG5h bWVzKSk7CisKKwkJCS8qCisJCQkgKiBhLmIgY2FuIG1lYW4gInNjaGVtYSIuInZhcmlhYmxlIiBv ciAidmFyaWFibGUiLiJmaWVsZCIsCisJCQkgKiBDaGVjayBib3RoIHZhcmlhbnRzLCBhbmQgcmV0 dXJucyBJbnZhbGlkT2lkIHdpdGggbm90X3VuaXEKKwkJCSAqIGZsYWcsIHdoZW4gYm90aCBpbnRl cnByZXRhdGlvbnMgYXJlIHBvc3NpYmxlLgorCQkJICovCisJCQl2YXJvaWRfd2l0aG91dF9hdHRy ID0gbG9va3VwX3ZhcmlhYmxlKGEsIGIsIHRydWUpOworCQkJdmFyb2lkX3dpdGhfYXR0ciA9IGxv b2t1cF92YXJpYWJsZShOVUxMLCBhLCB0cnVlKTsKKworCQkJaWYgKE9pZElzVmFsaWQodmFyb2lk X3dpdGhvdXRfYXR0cikgJiYgT2lkSXNWYWxpZCh2YXJvaWRfd2l0aF9hdHRyKSkKKwkJCXsKKwkJ CQkqbm90X3VuaXEgPSB0cnVlOworCQkJCXJldHVybiBJbnZhbGlkT2lkOworCQkJfQorCQkJZWxz ZSBpZiAoT2lkSXNWYWxpZCh2YXJvaWRfd2l0aG91dF9hdHRyKSkKKwkJCXsKKwkJCQkqYXR0cm5h bWUgPSBOVUxMOworCQkJCXJldHVybiB2YXJvaWRfd2l0aG91dF9hdHRyOworCQkJfQorCQkJZWxz ZQorCQkJeworCQkJCSphdHRybmFtZSA9IGI7CisJCQkJcmV0dXJuIHZhcm9pZF93aXRoX2F0dHI7 CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIDM6CisJCQlhID0gc3RyVmFsKGxpbml0aWFsKG5h bWVzKSk7CisJCQliID0gc3RyVmFsKGxzZWNvbmQobmFtZXMpKTsKKwkJCWMgPSBzdHJWYWwobHRo aXJkKG5hbWVzKSk7CisKKwkJCS8qCisJCQkgKiBhLmIuYyBjYW4gbWVhbiAiY2F0YWxvZyIuInNj aGVtYSIuInZhcmlhYmxlIiBvciAic2NoZW1hIi4idmFyaWFibGUiLiJmaWVsZCIsCisJCQkgKiBD aGVjayBib3RoIHZhcmlhbnRzLCBhbmQgcmV0dXJucyBJbnZhbGlkT2lkIHdpdGggbm90X3VuaXEK KwkJCSAqIGZsYWcsIHdoZW4gYm90aCBpbnRlcnByZXRhdGlvbnMgYXJlIHBvc3NpYmxlLgorCQkJ ICovCisJCQl2YXJvaWRfd2l0aG91dF9hdHRyID0gbG9va3VwX3ZhcmlhYmxlKGIsIGMsIHRydWUp OworCQkJdmFyb2lkX3dpdGhfYXR0ciA9IGxvb2t1cF92YXJpYWJsZShhLCBiLCB0cnVlKTsKKwor CQkJaWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0cikgJiYgT2lkSXNWYWxpZCh2YXJv aWRfd2l0aF9hdHRyKSkKKwkJCXsKKwkJCQkqbm90X3VuaXEgPSB0cnVlOworCQkJCXJldHVybiBJ bnZhbGlkT2lkOworCQkJfQorCQkJZWxzZSBpZiAoT2lkSXNWYWxpZCh2YXJvaWRfd2l0aG91dF9h dHRyKSkKKwkJCXsKKwkJCQkqYXR0cm5hbWUgPSBOVUxMOworCisJCQkJLyoKKwkJCQkgKiBXZSBp biB0aGlzIGNhc2UgYSAiYSIgaXMgdXNlZCBhcyBjYXRhbG9nIG5hbWUsIGNoZWNrIGl0LgorCQkJ CSAqLworCQkJCWlmIChzdHJjbXAoYSwgZ2V0X2RhdGFiYXNlX25hbWUoTXlEYXRhYmFzZUlkKSkg IT0gMCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJIGVycm1zZygiY3Jvc3MtZGF0YWJhc2UgcmVmZXJl bmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAlcyIsCisJCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5n KG5hbWVzKSkpKTsKKworCQkJCXJldHVybiB2YXJvaWRfd2l0aG91dF9hdHRyOworCQkJfQorCQkJ ZWxzZQorCQkJeworCQkJCSphdHRybmFtZSA9IGM7CisJCQkJcmV0dXJuIHZhcm9pZF93aXRoX2F0 dHI7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIDQ6CisJCQlhID0gc3RyVmFsKGxpbml0aWFs KG5hbWVzKSk7CisJCQliID0gc3RyVmFsKGxzZWNvbmQobmFtZXMpKTsKKwkJCWMgPSBzdHJWYWwo bHRoaXJkKG5hbWVzKSk7CisJCQlkID0gc3RyVmFsKGxmb3VydGgobmFtZXMpKTsKKworCQkJLyoK KwkJCSAqIFdlIGluIHRoaXMgY2FzZSBhICJhIiBpcyB1c2VkIGFzIGNhdGFsb2cgbmFtZSwgY2hl Y2sgaXQuCisJCQkgKi8KKwkJCWlmIChzdHJjbXAoYSwgZ2V0X2RhdGFiYXNlX25hbWUoTXlEYXRh YmFzZUlkKSkgIT0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygiY3Jvc3MtZGF0YWJhc2Ug cmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAlcyIsCisJCQkJCQkJCU5hbWVMaXN0VG9T dHJpbmcobmFtZXMpKSkpOworCisJCQkqYXR0cm5hbWUgPSBkOworCQkJcmV0dXJuIGxvb2t1cF92 YXJpYWJsZShiLCBjLCB0cnVlKTsKKworCQlkZWZhdWx0OgorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkgZXJybXNnKCJpbXByb3Bl ciBxdWFsaWZpZWQgbmFtZSAodG9vIG1hbnkgZG90dGVkIG5hbWVzKTogJXMiLAorCQkJCQkJCU5h bWVMaXN0VG9TdHJpbmcobmFtZXMpKSkpOworCQkJYnJlYWs7CisJfQorfQogCiAvKgogICogRGVj b25zdHJ1Y3RRdWFsaWZpZWROYW1lCkBAIC00NDg0LDMgKzQ3NDYsMTQgQEAgcGdfaXNfb3RoZXJf dGVtcF9zY2hlbWEoUEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9CT09MKGlzT3RoZXJU ZW1wTmFtZXNwYWNlKG9pZCkpOwogfQorCitEYXR1bQorcGdfdmFyaWFibGVfaXNfdmlzaWJsZShQ R19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCW9pZCA9IFBHX0dFVEFSR19PSUQoMCk7CisKKwlp ZiAoIVNlYXJjaFN5c0NhY2hlRXhpc3RzMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bShv aWQpKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCVBHX1JFVFVSTl9CT09MKFZhcmlhYmxlSXNW aXNpYmxlKG9pZCkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3Rh ZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwppbmRleCA3ZGI5 NDJkY2JhLi5jYzNkNDE1ZTYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVj dGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpAQCAt NTgsNiArNTgsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3VzZXJfbWFwcGlu Zy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5k cy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgpAQCAtNDg5LDYgKzQ5MCwxOCBAQCBzdGF0aWMgY29u c3QgT2JqZWN0UHJvcGVydHlUeXBlIE9iamVjdFByb3BlcnR5W10gPQogCQlJbnZhbGlkQXR0ck51 bWJlciwJCS8qIG5vIEFDTCAoc2FtZSBhcyByZWxhdGlvbikgKi8KIAkJT0JKRUNUX1NUQVRJU1RJ Q19FWFQsCiAJCXRydWUKKwl9LAorCXsKKwkJVmFyaWFibGVSZWxhdGlvbklkLAorCQlWYXJpYWJs ZU9iamVjdEluZGV4SWQsCisJCVZBUklBQkxFT0lELAorCQlWQVJJQUJMRU5BTUVOU1AsCisJCUFu dW1fcGdfdmFyaWFibGVfdmFybmFtZSwKKwkJQW51bV9wZ192YXJpYWJsZV92YXJuYW1lc3BhY2Us CisJCUFudW1fcGdfdmFyaWFibGVfdmFyb3duZXIsCisJCUFudW1fcGdfdmFyaWFibGVfdmFyYWNs LAorCQlPQkpFQ1RfVkFSSUFCTEUsCisJCXRydWUKIAl9CiB9OwogCkBAIC03MTQsNiArNzI3LDEw IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5cGVfbWFwCiAJLyogT0JKRUNUX1NUQVRJ U1RJQ19FWFQgKi8KIAl7CiAJCSJzdGF0aXN0aWNzIG9iamVjdCIsIE9CSkVDVF9TVEFUSVNUSUNf RVhUCisJfSwKKwkvKiBPQ0xBU1NfVkFSSUFCTEUgKi8KKwl7CisJCSJzY2hlbWEgdmFyaWFibGUi LCBPQkpFQ1RfVkFSSUFCTEUKIAl9CiB9OwogCkBAIC03MzksNiArNzU2LDcgQEAgc3RhdGljIE9i amVjdEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX2F0dHJkZWYoT2JqZWN0VHlwZSBvYmp0eXBl LAogCQkJCQkJICAgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIGdldF9v YmplY3RfYWRkcmVzc190eXBlKE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJCVR5cGVOYW1lICp0 eXBlbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKK3N0YXRpYyBPYmplY3RBZGRyZXNzIGdldF9vYmpl Y3RfYWRkcmVzc192YXJpYWJsZShMaXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0 aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0X2FkZHJlc3Nfb3BjZihPYmplY3RUeXBlIG9ianR5 cGUsIExpc3QgKm9iamVjdCwKIAkJCQkJCWJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2JqZWN0 QWRkcmVzcyBnZXRfb2JqZWN0X2FkZHJlc3Nfb3BmX21lbWJlcihPYmplY3RUeXBlIG9ianR5cGUs CkBAIC05OTYsNiArMTAxNCwxMCBAQCBnZXRfb2JqZWN0X2FkZHJlc3MoT2JqZWN0VHlwZSBvYmp0 eXBlLCBOb2RlICpvYmplY3QsCiAJCQkJCQkJCQkJCQkJCQkgbWlzc2luZ19vayk7CiAJCQkJYWRk cmVzcy5vYmplY3RTdWJJZCA9IDA7CiAJCQkJYnJlYWs7CisJCQljYXNlIE9CSkVDVF9WQVJJQUJM RToKKwkJCQlhZGRyZXNzID0gZ2V0X29iamVjdF9hZGRyZXNzX3ZhcmlhYmxlKGNhc3ROb2RlKExp c3QsIG9iamVjdCksIG1pc3Npbmdfb2spOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0OgogCQkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50KSBvYmp0eXBlKTsK IAkJCQkvKiBwbGFjYXRlIGNvbXBpbGVyLCBpbiBjYXNlIGl0IHRoaW5rcyBlbG9nIG1pZ2h0IHJl dHVybiAqLwpAQCAtMTg0OCwxNiArMTg3MCwyMCBAQCBnZXRfb2JqZWN0X2FkZHJlc3NfZGVmYWNs KExpc3QgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQljYXNlIERFRkFDTE9CSl9OQU1FU1BB Q0U6CiAJCQlvYmp0eXBlX3N0ciA9ICJzY2hlbWFzIjsKIAkJCWJyZWFrOworCQljYXNlIERFRkFD TE9CSl9WQVJJQUJMRToKKwkJCW9ianR5cGVfc3RyID0gInZhcmlhYmxlcyI7CisJCQlicmVhazsK IAkJZGVmYXVsdDoKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgZGVmYXVs dCBBQ0wgb2JqZWN0IHR5cGUgXCIlY1wiIiwgb2JqdHlwZSksCi0JCQkJCSBlcnJoaW50KCJWYWxp ZCBvYmplY3QgdHlwZXMgYXJlIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wi LiIsCisJCQkJCSBlcnJoaW50KCJWYWxpZCBvYmplY3QgdHlwZXMgYXJlIFwiJWNcIiwgXCIlY1wi LCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIuIiwKIAkJCQkJCQkgREVGQUNMT0JKX1JF TEFUSU9OLAogCQkJCQkJCSBERUZBQ0xPQkpfU0VRVUVOQ0UsCiAJCQkJCQkJIERFRkFDTE9CSl9G VU5DVElPTiwKIAkJCQkJCQkgREVGQUNMT0JKX1RZUEUsCi0JCQkJCQkJIERFRkFDTE9CSl9OQU1F U1BBQ0UpKSk7CisJCQkJCQkJIERFRkFDTE9CSl9OQU1FU1BBQ0UsCisJCQkJCQkJIERFRkFDTE9C Sl9WQVJJQUJMRSkpKTsKIAl9CiAKIAkvKgpAQCAtMTk0Miw2ICsxOTY4LDI0IEBAIHRleHRhcnJh eV90b19zdHJ2YWx1ZWxpc3QoQXJyYXlUeXBlICphcnIpCiAJcmV0dXJuIGxpc3Q7CiB9CiAKKy8q CisgKiBGaW5kIHRoZSBPYmplY3RBZGRyZXNzIGZvciBhIHR5cGUgb3IgZG9tYWluCisgKi8KK3N0 YXRpYyBPYmplY3RBZGRyZXNzCitnZXRfb2JqZWN0X2FkZHJlc3NfdmFyaWFibGUoTGlzdCAqb2Jq ZWN0LCBib29sIG1pc3Npbmdfb2spCit7CisJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCWNoYXIJ ICAgKm5zcG5hbWUgPSBOVUxMOworCWNoYXIJICAgKnZhcm5hbWUgPSBOVUxMOworCisJT2JqZWN0 QWRkcmVzc1NldChhZGRyZXNzLCBWYXJpYWJsZVJlbGF0aW9uSWQsIEludmFsaWRPaWQpOworCisJ RGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lKG9iamVjdCwgJm5zcG5hbWUsICZ2YXJuYW1lKTsKKwlh ZGRyZXNzLm9iamVjdElkID0gbG9va3VwX3ZhcmlhYmxlKG5zcG5hbWUsIHZhcm5hbWUsIG1pc3Np bmdfb2spOworCisJcmV0dXJuIGFkZHJlc3M7Cit9CisKIC8qCiAgKiBTUUwtY2FsbGFibGUgdmVy c2lvbiBvZiBnZXRfb2JqZWN0X2FkZHJlc3MKICAqLwpAQCAtMjEzMSw2ICsyMTc1LDcgQEAgcGdf Z2V0X29iamVjdF9hZGRyZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2UgT0JKRUNUX1RBQkNP TlNUUkFJTlQ6CiAJCWNhc2UgT0JKRUNUX09QQ0xBU1M6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZ OgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCW9iam5vZGUgPSAoTm9kZSAqKSBuYW1lOwog CQkJYnJlYWs7CiAJCWNhc2UgT0JKRUNUX0FDQ0VTU19NRVRIT0Q6CkBAIC0yNDE1LDYgKzI0NjAs MTEgQEAgY2hlY2tfb2JqZWN0X293bmVyc2hpcChPaWQgcm9sZWlkLCBPYmplY3RUeXBlIG9ianR5 cGUsIE9iamVjdEFkZHJlc3MgYWRkcmVzcywKIAkJCWlmICghcGdfc3RhdGlzdGljc19vYmplY3Rf b3duZXJjaGVjayhhZGRyZXNzLm9iamVjdElkLCByb2xlaWQpKQogCQkJCWFjbGNoZWNrX2Vycm9y X3R5cGUoQUNMQ0hFQ0tfTk9UX09XTkVSLCBhZGRyZXNzLm9iamVjdElkKTsKIAkJCWJyZWFrOwor CQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCWlmICghcGdfdmFyaWFibGVfb3duZXJjaGVjayhh ZGRyZXNzLm9iamVjdElkLCByb2xlaWQpKQorCQkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05P VF9PV05FUiwgb2JqdHlwZSwKKwkJCQkJCQkgICBOYW1lTGlzdFRvU3RyaW5nKGNhc3ROb2RlKExp c3QsIG9iamVjdCkpKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBvYmplY3QgdHlwZTogJWQiLAogCQkJCSAoaW50KSBvYmp0eXBlKTsKQEAgLTMx NTcsNiArMzIwNywzMiBAQCBnZXRPYmplY3REZXNjcmlwdGlvbihjb25zdCBPYmplY3RBZGRyZXNz ICpvYmplY3QpCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CisJ CQl7CisJCQkJY2hhcgkgICAqbnNwbmFtZTsKKwkJCQlIZWFwVHVwbGUJdHVwOworCQkJCUZvcm1f cGdfdmFyaWFibGUJdmFyZm9ybTsKKworCQkJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJM RU9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3QtPm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVk IGZvciBzY2hlbWEgdmFyaWFibGUgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOworCisJ CQkJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCQkJCWlm IChWYXJpYWJsZUlzVmlzaWJsZShvYmplY3QtPm9iamVjdElkKSkKKwkJCQkJbnNwbmFtZSA9IE5V TEw7CisJCQkJZWxzZQorCQkJCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKHZhcmZvcm0t PnZhcm5hbWVzcGFjZSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInNjaGVt YSB2YXJpYWJsZSAlcyIpLAorCQkJCQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIobnNw bmFtZSwKKwkJCQkJCQkJCQkJCQkJCU5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSkpKTsKKworCQkJ CVJlbGVhc2VTeXNDYWNoZSh0dXApOworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NMQVNT X1RTUEFSU0VSOgogCQkJewogCQkJCUhlYXBUdXBsZQl0dXA7CkBAIC0zNDIyLDYgKzM0OTgsMTYg QEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQkJ CQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYXMgYmVsb25naW5nIHRv IHJvbGUgJXMiKSwKIAkJCQkJCQkJCQkgcm9sZW5hbWUpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNh c2UgREVGQUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJaWYgKG5zcG5hbWUpCisJCQkJCQkJYXBwZW5k U3RyaW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCQkgXygiZGVmYXVsdCBwcml2aWxlZ2VzIG9u IG5ldyB2YXJpYWJsZXMgYmVsb25naW5nIHRvIHJvbGUgJXMgaW4gc2NoZW1hICVzIiksCisJCQkJ CQkJCQkJCSByb2xlbmFtZSwgbnNwbmFtZSk7CisJCQkJCQllbHNlCisJCQkJCQkJYXBwZW5kU3Ry aW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCQkgXygiZGVmYXVsdCBwcml2aWxlZ2VzIG9uIG5l dyB2YXJpYWJsZXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKKwkJCQkJCQkJCQkJIHJvbGVuYW1l KTsKKwkJCQkJCWJyZWFrOwogCQkJCQlkZWZhdWx0OgogCQkJCQkJLyogc2hvdWxkbid0IGdldCBo ZXJlICovCiAJCQkJCQlpZiAobnNwbmFtZSkKQEAgLTQwNzAsNiArNDE1NiwxMCBAQCBnZXRPYmpl Y3RUeXBlRGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLCAidHJhbnNmb3JtIik7CiAJCQlicmVhazsKIAorCQlj YXNlIE9DTEFTU19WQVJJQUJMRToKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwg InNjaGVtYSB2YXJpYWJsZSIpOworCQkJYnJlYWs7CisKIAkJCS8qCiAJCQkgKiBUaGVyZSdzIGlu dGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlOyB3ZSB3YW50IHRoZQogCQkJICogY29t cGlsZXIgdG8gd2FybiBpZiBhIG5ldyBPQ0xBU1MgaGFzbid0IGJlZW4gaGFuZGxlZCBhYm92ZS4K QEAgLTQ5NjIsNiArNTA1MiwxMCBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVj dEFkZHJlc3MgKm9iamVjdCwKIAkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwK IAkJCQkJCQkJCQkJICAgIiBvbiBzY2hlbWFzIik7CiAJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBE RUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIs CisJCQkJCQkJCQkJCSAgICIgb24gdmFyaWFibGVzIik7CisJCQkJCQlicmVhazsKIAkJCQl9CiAK IAkJCQlpZiAob2JqbmFtZSkKQEAgLTUxMjEsNiArNTIxNSwzMyBAQCBnZXRPYmplY3RJZGVudGl0 eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCX0KIAkJCWJyZWFrOwogCisJ CWNhc2UgT0NMQVNTX1ZBUklBQkxFOgorCQkJeworCQkJCWNoYXIJICAgKnNjaGVtYTsKKwkJCQlj aGFyCSAgICp2YXJuYW1lOworCQkJCUhlYXBUdXBsZQl0dXA7CisJCQkJRm9ybV9wZ192YXJpYWJs ZQl2YXJmb3JtOworCisJCQkJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmpl Y3RJZEdldERhdHVtKG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFs aWQodHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNjaGVt YSB2YXJpYWJsZSAldSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisKKwkJCQl2YXJmb3Jt ID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJCQkJc2NoZW1hID0gZ2V0 X25hbWVzcGFjZV9uYW1lX29yX3RlbXAodmFyZm9ybS0+dmFybmFtZXNwYWNlKTsKKwkJCQl2YXJu YW1lID0gTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm8o JmJ1ZmZlciwgIiVzIiwKKwkJCQkJCQkJcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoc2NoZW1h LCB2YXJuYW1lKSk7CisKKwkJCQlpZiAob2JqbmFtZSkKKwkJCQkJKm9iam5hbWUgPSBsaXN0X21h a2UyKHNjaGVtYSwgdmFybmFtZSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJCQli cmVhazsKKwkJCX0KKwogCQkJLyoKIAkJCSAqIFRoZXJlJ3MgaW50ZW50aW9uYWxseSBubyBkZWZh dWx0OiBjYXNlIGhlcmU7IHdlIHdhbnQgdGhlCiAJCQkgKiBjb21waWxlciB0byB3YXJuIGlmIGEg bmV3IE9DTEFTUyBoYXNuJ3QgYmVlbiBoYW5kbGVkIGFib3ZlLgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJp YWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmVhNmIwOTYwYTMK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3ZhcmlhYmxlLmMKQEAg LTAsMCArMSwzMDkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3ZhcmlhYmxlLmMK KyAqCQlzY2hlbWEgdmFyaWFibGVzCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2 LTIwMTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5p YQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJp YWJsZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVz LmgiCisKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKworI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5o IgorI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRh aWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKworI2luY2x1ZGUgImNhdGFsb2cvZGVw ZW5kZW5jeS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNpbmNsdWRlICJjYXRh bG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCisKKyNpbmNsdWRlICJub2Rlcy9t YWtlZnVuY3MuaCIKKworI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorCisjaW5jbHVkZSAidXRp bHMvYXJyYXkuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxz L2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRp bHMvcGdfbHNuLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvc3lz Y2FjaGUuaCIKKworLyoKKyAqIFJldHVybnMgbmFtZSBvZiBzY2hlbWEgdmFyaWFibGUuIFdoZW4g dmFyaWFibGUgaXMgbm90IG9uIHBhdGgsCisgKiB0aGVuIHRoZSBuYW1lIGlzIHF1YWxpZmllZC4K KyAqLworY2hhciAqCitzY2hlbWFfdmFyaWFibGVfZ2V0X25hbWUoT2lkIHZhcmlkKQoreworCUhl YXBUdXBsZQl0dXA7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOworCWNoYXIgICAqdmFybmFt ZTsKKwljaGFyICAgKm5zcG5hbWU7CisJY2hhciAgICpyZXN1bHQ7CisKKwl0dXAgPSBTZWFyY2hT eXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlmICgh SGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFi bGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFybmFtZSA9IE5hbWVTdHIodmFyZm9ybS0+dmFybmFt ZSk7CisKKwlpZiAoVmFyaWFibGVJc1Zpc2libGUodmFyaWQpKQorCQluc3BuYW1lID0gTlVMTDsK KwllbHNlCisJCW5zcG5hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWUodmFyZm9ybS0+dmFybmFtZXNw YWNlKTsKKworCXJlc3VsdCA9IHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5hbWUsIHZh cm5hbWUpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQor CisvKgorICogUmV0dXJucyB2YXJuYW1lIGZpZWxkIG9mIHBnX3ZhcmlhYmxlCisgKi8KK2NoYXIg KgorZ2V0X3NjaGVtYV92YXJpYWJsZV9uYW1lKE9pZCB2YXJpZCkKK3sKKwlIZWFwVHVwbGUJdHVw OworCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9ybTsKKwljaGFyICAgKnZhcm5hbWU7CisKKwl0dXAg PSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsK KworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZvcm1f cGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFybmFtZSA9IE5hbWVTdHIodmFyZm9y bS0+dmFybmFtZSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybiB2YXJuYW1l OworfQorCisvKgorICogUmV0dXJucyB0eXBlLCB0eXBtb2Qgb2Ygc2NoZW1hIHZhcmlhYmxlCisg Ki8KK3ZvaWQKK2dldF9zY2hlbWFfdmFyaWFibGVfdHlwZV90eXBtb2RfY29sbGlkKE9pZCB2YXJp ZCwgT2lkICp0eXBpZCwgaW50MzIgKnR5cG1vZCwgT2lkICpjb2xsaWQpCit7CisJSGVhcFR1cGxl CXR1cDsKKwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm07CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNo ZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Ig dmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdF VFNUUlVDVCh0dXApOworCisJKnR5cGlkID0gdmFyZm9ybS0+dmFydHlwZTsKKwkqdHlwbW9kID0g dmFyZm9ybS0+dmFydHlwbW9kOworCSpjb2xsaWQgPSB2YXJmb3JtLT52YXJjb2xsYXRpb247CisK KwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybjsKK30KKworLyoKKyAqIEZldGNoIGFs bCBmaWVsZHMgb2Ygc2NoZW1hIHZhcmlhYmxlIGZyb20gdGhlIHN5c2NhY2hlLgorICovCitWYXJp YWJsZSAqCitHZXRWYXJpYWJsZShPaWQgdmFyaWQsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlIZWFw VHVwbGUJdHVwOworCVZhcmlhYmxlICp2YXI7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOwor CURhdHVtCQlhY2xEYXR1bTsKKwlEYXR1bQkJZGVmZXhwckRhdHVtOworCWJvb2wJCWlzbnVsbDsK KworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh2 YXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJeworCQlpZiAobWlzc2lu Z19vaykKKwkJCXJldHVybiBOVUxMOworCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciB2YXJpYWJsZSAldSIsIHZhcmlkKTsKKwl9CisKKwl2YXJmb3JtID0gKEZvcm1fcGdf dmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFyID0gKFZhcmlhYmxlICopIHBhbGxvYyhz aXplb2YoVmFyaWFibGUpKTsKKwl2YXItPm9pZCA9IHZhcmlkOworCXZhci0+bmFtZSA9IHBzdHJk dXAoTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKSk7CisJdmFyLT5uYW1lc3BhY2UgPSB2YXJmb3Jt LT52YXJuYW1lc3BhY2U7CisJdmFyLT50eXBpZCA9IHZhcmZvcm0tPnZhcnR5cGU7CisJdmFyLT50 eXBtb2QgPSB2YXJmb3JtLT52YXJ0eXBtb2Q7CisJdmFyLT5vd25lciA9IHZhcmZvcm0tPnZhcm93 bmVyOworCXZhci0+Y29sbGF0aW9uID0gdmFyZm9ybS0+dmFyY29sbGF0aW9uOworCisJLyogR2V0 IGRlZmV4cHIgKi8KKwlkZWZleHByRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoVkFSSUFCTEVPSUQs CisJCQkJCQkJdHVwLAorCQkJCQkJCUFudW1fcGdfdmFyaWFibGVfdmFyZGVmZXhwciwKKwkJCQkJ CQkmaXNudWxsKTsKKworCWlmICghaXNudWxsKQorCQl2YXItPmRlZmV4cHIgPSBzdHJpbmdUb05v ZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhkZWZleHByRGF0dW0pKTsKKwllbHNlCisJCXZhci0+ZGVm ZXhwciA9IE5VTEw7CisKKwkvKiBHZXQgdmFyYWNsICovCisJYWNsRGF0dW0gPSBTeXNDYWNoZUdl dEF0dHIoVkFSSUFCTEVPSUQsCisJCQkJCQkJdHVwLAorCQkJCQkJCUFudW1fcGdfdmFyaWFibGVf dmFyYWNsLAorCQkJCQkJCSZpc251bGwpOworCWlmICghaXNudWxsKQorCQl2YXItPmFjbCA9IERh dHVtR2V0QWNsUENvcHkoYWNsRGF0dW0pOworCWVsc2UKKwkJdmFyLT5hY2wgPSBOVUxMOworCisJ UmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gdmFyOworfQorCitPYmplY3RBZGRyZXNz CitWYXJpYWJsZUNyZWF0ZShjb25zdCBjaGFyICp2YXJOYW1lLAorCQkJICAgT2lkIHZhck5hbWVz cGFjZSwKKwkJCSAgIE9pZCB2YXJUeXBlLAorCQkJICAgaW50MzIgdmFyVHlwbW9kLAorCQkJICAg T2lkIHZhck93bmVyLAorCQkJICAgT2lkIHZhckNvbGxhdGlvbiwKKwkJCSAgIE5vZGUgKnZhckRl ZmV4cHIsCisJCQkgICBib29sIGlmX25vdF9leGlzdHMpCit7CisJQWNsCQkgICAqdmFyYWNsOwor CU5hbWVEYXRhCXZhcm5hbWU7CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfdmFyaWFibGVdOworCURh dHVtCQl2YWx1ZXNbTmF0dHNfcGdfdmFyaWFibGVdOworCVJlbGF0aW9uCXJlbDsKKwlIZWFwVHVw bGUJdHVwLAorCQkJCW9sZHR1cDsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlPYmplY3RBZGRyZXNz CW15c2VsZiwKKwkJCQkJcmVmZXJlbmNlZDsKKwlPaWQJCQlyZXR2YWw7CisJaW50CQkJaTsKKwor CWZvciAoaSA9IDA7IGkgPCBOYXR0c19wZ192YXJpYWJsZTsgaSsrKQorCXsKKwkJbnVsbHNbaV0g PSBmYWxzZTsKKwkJdmFsdWVzW2ldID0gKERhdHVtKSAwOworCX0KKworCW5hbWVzdHJjcHkoJnZh cm5hbWUsIHZhck5hbWUpOworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWUgLSAxXSA9 IE5hbWVHZXREYXR1bSgmdmFybmFtZSk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFybmFt ZXNwYWNlIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHZhck5hbWVzcGFjZSk7CisJdmFsdWVzW0Fu dW1fcGdfdmFyaWFibGVfdmFydHlwZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJUeXBlKTsK Kwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJ0eXBtb2QgLSAxXSA9IEludDMyR2V0RGF0dW0o dmFyVHlwbW9kKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJvd25lciAtIDFdID0gT2Jq ZWN0SWRHZXREYXR1bSh2YXJPd25lcik7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyY29s bGF0aW9uIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHZhckNvbGxhdGlvbik7CisJLyogcHJvYWNs IHdpbGwgYmUgZGV0ZXJtaW5lZCBsYXRlciAqLworCisJaWYgKHZhckRlZmV4cHIpCisJCXZhbHVl c1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmRlZmV4cHIgLSAxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0o bm9kZVRvU3RyaW5nKHZhckRlZmV4cHIpKTsKKwllbHNlCisJCW51bGxzW0FudW1fcGdfdmFyaWFi bGVfdmFyZGVmZXhwciAtIDFdID0gdHJ1ZTsKKworCXJlbCA9IGhlYXBfb3BlbihWYXJpYWJsZVJl bGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2Ny KHJlbCk7CisKKwlvbGR0dXAgPSBTZWFyY2hTeXNDYWNoZTIoVkFSSUFCTEVOQU1FTlNQLAorCQkJ CQkJCSBQb2ludGVyR2V0RGF0dW0odmFyTmFtZSksCisJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0o dmFyTmFtZXNwYWNlKSk7CisKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZChvbGR0dXApKQorCXsKKwkJ aWYgKGlmX25vdF9leGlzdHMpCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygic2NoZW1hIHZhcmlhYmxlIFwi JXNcIiBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmciLAorCQkJCQkJCXZhck5hbWUpKSk7CisJCWVs c2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09C SkVDVCksCisJCQkJCSBlcnJtc2coInNjaGVtYSB2YXJpYWJsZSBcIiVzXCIgYWxyZWFkeSBleGlz dHMiLAorCQkJCQkJCXZhck5hbWUpKSk7CisKKwkJaGVhcF9mcmVldHVwbGUob2xkdHVwKTsKKwkJ aGVhcF9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJCXJldHVybiBJbnZhbGlkT2Jq ZWN0QWRkcmVzczsKKwl9CisKKwl2YXJhY2wgPSBnZXRfdXNlcl9kZWZhdWx0X2FjbChPQkpFQ1Rf VkFSSUFCTEUsIHZhck93bmVyLAorCQkJCQkJCQkgIHZhck5hbWVzcGFjZSk7CisKKwlpZiAodmFy YWNsICE9IE5VTEwpCisJCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCAtIDFdID0gUG9p bnRlckdldERhdHVtKHZhcmFjbCk7CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3ZhcmlhYmxlX3Zh cmFjbCAtIDFdID0gdHJ1ZTsKKworCXR1cCA9IGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1 ZXMsIG51bGxzKTsKKwlDYXRhbG9nVHVwbGVJbnNlcnQocmVsLCB0dXApOworCisJcmV0dmFsID0g SGVhcFR1cGxlR2V0T2lkKHR1cCk7CisKKwlteXNlbGYuY2xhc3NJZCA9IFZhcmlhYmxlUmVsYXRp b25JZDsKKwlteXNlbGYub2JqZWN0SWQgPSByZXR2YWw7CisJbXlzZWxmLm9iamVjdFN1YklkID0g MDsKKworCS8qIGRlcGVuZGVuY3kgb24gbmFtZXNwYWNlICovCisJcmVmZXJlbmNlZC5jbGFzc0lk ID0gTmFtZXNwYWNlUmVsYXRpb25JZDsKKwlyZWZlcmVuY2VkLm9iamVjdElkID0gdmFyTmFtZXNw YWNlOworCXJlZmVyZW5jZWQub2JqZWN0U3ViSWQgPSAwOworCXJlY29yZERlcGVuZGVuY3lPbigm bXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCisJLyogZGVwZW5kZW5j eSBvbiB1c2VkIHR5cGUgKi8KKwlyZWZlcmVuY2VkLmNsYXNzSWQgPSBUeXBlUmVsYXRpb25JZDsK KwlyZWZlcmVuY2VkLm9iamVjdElkID0gdmFyVHlwZTsKKwlyZWZlcmVuY2VkLm9iamVjdFN1Yklk ID0gMDsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVO Q1lfTk9STUFMKTsKKworCS8qIGRlcGVuZGVuY3kgb24gYW55IHJvbGVzIG1lbnRpb25lZCBpbiBB Q0wgKi8KKwlpZiAodmFyYWNsICE9IE5VTEwpCisJeworCQlpbnQJCQlubmV3bWVtYmVyczsKKwkJ T2lkCQkgICAqbmV3bWVtYmVyczsKKworCQlubmV3bWVtYmVycyA9IGFjbG1lbWJlcnModmFyYWNs LCAmbmV3bWVtYmVycyk7CisJCXVwZGF0ZUFjbERlcGVuZGVuY2llcyhWYXJpYWJsZVJlbGF0aW9u SWQsIHJldHZhbCwgMCwKKwkJCQkJCQkgIHZhck93bmVyLAorCQkJCQkJCSAgMCwgTlVMTCwKKwkJ CQkJCQkgIG5uZXdtZW1iZXJzLCBuZXdtZW1iZXJzKTsKKwl9CisKKwkvKiBkZXBlbmRlbmN5IG9u IGV4dGVuc2lvbiAqLworCXJlY29yZERlcGVuZGVuY3lPbkN1cnJlbnRFeHRlbnNpb24oJm15c2Vs ZiwgZmFsc2UpOworCisJaGVhcF9mcmVldHVwbGUodHVwKTsKKworCS8qIFBvc3QgY3JlYXRpb24g aG9vayBmb3IgbmV3IGZ1bmN0aW9uICovCisJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soVmFy aWFibGVSZWxhdGlvbklkLCByZXR2YWwsIDApOworCisJaGVhcF9jbG9zZShyZWwsIFJvd0V4Y2x1 c2l2ZUxvY2spOworCisJcmV0dXJuIG15c2VsZjsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXgg NGE2Yzk5ZTA5MC4uMmNiNWIxMTcyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv TWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKQEAgLTE4LDcgKzE4 LDcgQEAgT0JKUyA9IGFtY21kcy5vIGFnZ3JlZ2F0ZWNtZHMubyBhbHRlci5vIGFuYWx5emUubyBh c3luYy5vIGNsdXN0ZXIubyBjb21tZW50Lm8gXAogCWV2ZW50X3RyaWdnZXIubyBleHBsYWluLm8g ZXh0ZW5zaW9uLm8gZm9yZWlnbmNtZHMubyBmdW5jdGlvbmNtZHMubyBcCiAJaW5kZXhjbWRzLm8g bG9ja2NtZHMubyBtYXR2aWV3Lm8gb3BlcmF0b3JjbWRzLm8gb3BjbGFzc2NtZHMubyBcCiAJcG9s aWN5Lm8gcG9ydGFsY21kcy5vIHByZXBhcmUubyBwcm9jbGFuZy5vIHB1YmxpY2F0aW9uY21kcy5v IFwKLQlzY2hlbWFjbWRzLm8gc2VjbGFiZWwubyBzZXF1ZW5jZS5vIHN0YXRzY21kcy5vIHN1YnNj cmlwdGlvbmNtZHMubyBcCisJc2NoZW1hY21kcy5vIHNlY2xhYmVsLm8gc2VxdWVuY2UubyBzY2hl bWF2YXJpYWJsZS5vIHN0YXRzY21kcy5vIHN1YnNjcmlwdGlvbmNtZHMubyBcCiAJdGFibGVjbWRz Lm8gdGFibGVzcGFjZS5vIHRyaWdnZXIubyB0c2VhcmNoY21kcy5vIHR5cGVjbWRzLm8gdXNlci5v IFwKIAl2YWN1dW0ubyB2YWN1dW1sYXp5Lm8gdmFyaWFibGUubyB2aWV3Lm8KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Fs dGVyLmMKaW5kZXggZWZmMzI1Y2M3ZC4uYTlkNWU1ZTBhZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBA IC0zODcsNiArMzg3LDcgQEAgRXhlY1JlbmFtZVN0bXQoUmVuYW1lU3RtdCAqc3RtdCkKIAkJY2Fz ZSBPQkpFQ1RfVFNURU1QTEFURToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CiAJCWNhc2Ug T0JKRUNUX1NVQlNDUklQVElPTjoKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQl7CiAJCQkJ T2JqZWN0QWRkcmVzcyBhZGRyZXNzOwogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CkBAIC01MDQsNiAr NTA1LDcgQEAgRXhlY0FsdGVyT2JqZWN0U2NoZW1hU3RtdChBbHRlck9iamVjdFNjaGVtYVN0bXQg KnN0bXQsCiAJCWNhc2UgT0JKRUNUX1RTRElDVElPTkFSWToKIAkJY2FzZSBPQkpFQ1RfVFNQQVJT RVI6CiAJCWNhc2UgT0JKRUNUX1RTVEVNUExBVEU6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgog CQkJewogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CiAJCQkJUmVsYXRpb24JcmVsYXRpb247CkBAIC01 OTQsNiArNTk2LDcgQEAgQWx0ZXJPYmplY3ROYW1lc3BhY2Vfb2lkKE9pZCBjbGFzc0lkLCBPaWQg b2JqaWQsIE9pZCBuc3BPaWQsCiAJCWNhc2UgT0NMQVNTX1RTRElDVDoKIAkJY2FzZSBPQ0xBU1Nf VFNURU1QTEFURToKIAkJY2FzZSBPQ0xBU1NfVFNDT05GSUc6CisJCWNhc2UgT0NMQVNTX1ZBUklB QkxFOgogCQkJewogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CiAKQEAgLTg1Miw2ICs4NTUsNyBAQCBF eGVjQWx0ZXJPd25lclN0bXQoQWx0ZXJPd25lclN0bXQgKnN0bXQpCiAJCWNhc2UgT0JKRUNUX1RB QkxFU1BBQ0U6CiAJCWNhc2UgT0JKRUNUX1RTRElDVElPTkFSWToKIAkJY2FzZSBPQkpFQ1RfVFND T05GSUdVUkFUSU9OOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCXsKIAkJCQlSZWxhdGlv bgljYXRhbG9nOwogCQkJCVJlbGF0aW9uCXJlbGF0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZGlzY2FyZC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jCmlu ZGV4IDAxYTk5OWMyYWMuLmZlYzI0OTVlOTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2Rpc2NhcmQuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKQEAgLTE5 LDYgKzE5LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9kaXNjYXJkLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvcHJlcGFyZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCisjaW5jbHVk ZSAiY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNp bmNsdWRlICJ1dGlscy9wb3J0YWwuaCIKIApAQCAtNDgsNiArNDksMTAgQEAgRGlzY2FyZENvbW1h bmQoRGlzY2FyZFN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAkJCVJlc2V0VGVtcFRhYmxl TmFtZXNwYWNlKCk7CiAJCQlicmVhazsKIAorCQljYXNlIERJU0NBUkRfVkFSSUFCTEVTOgorCQkJ UmVzZXRTY2hlbWFWYXJpYWJsZUNhY2hlKCk7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJ ZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBESVNDQVJEIHRhcmdldDogJWQiLCBzdG10LT50YXJn ZXQpOwogCX0KQEAgLTc1LDQgKzgwLDUgQEAgRGlzY2FyZEFsbChib29sIGlzVG9wTGV2ZWwpCiAJ UmVzZXRQbGFuQ2FjaGUoKTsKIAlSZXNldFRlbXBUYWJsZU5hbWVzcGFjZSgpOwogCVJlc2V0U2Vx dWVuY2VDYWNoZXMoKTsKKwlSZXNldFNjaGVtYVZhcmlhYmxlQ2FjaGUoKTsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V2ZW50X3RyaWdnZXIuYwppbmRleCBlZWNjODVkMTRlLi40MjZkZjI0NmIzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCkBAIC0xMjYsNiArMTI2LDcgQEAgc3RhdGlj IGV2ZW50X3RyaWdnZXJfc3VwcG9ydF9kYXRhIGV2ZW50X3RyaWdnZXJfc3VwcG9ydFtdID0gewog CXsiVEVYVCBTRUFSQ0ggVEVNUExBVEUiLCB0cnVlfSwKIAl7IlRZUEUiLCB0cnVlfSwKIAl7IlVT RVIgTUFQUElORyIsIHRydWV9LAorCXsiVkFSSUFCTEUiLCB0cnVlfSwKIAl7IlZJRVciLCB0cnVl fSwKIAl7TlVMTCwgZmFsc2V9CiB9OwpAQCAtMjk3LDcgKzI5OCw4IEBAIGNoZWNrX2RkbF90YWco Y29uc3QgY2hhciAqdGFnKQogCQlwZ19zdHJjYXNlY21wKHRhZywgIlJFVk9LRSIpID09IDAgfHwK IAkJcGdfc3RyY2FzZWNtcCh0YWcsICJEUk9QIE9XTkVEIikgPT0gMCB8fAogCQlwZ19zdHJjYXNl Y21wKHRhZywgIklNUE9SVCBGT1JFSUdOIFNDSEVNQSIpID09IDAgfHwKLQkJcGdfc3RyY2FzZWNt cCh0YWcsICJTRUNVUklUWSBMQUJFTCIpID09IDApCisJCXBnX3N0cmNhc2VjbXAodGFnLCAiU0VD VVJJVFkgTEFCRUwiKSA9PSAwIHx8CisJCXBnX3N0cmNhc2VjbXAodGFnLCAiQ1JFQVRFIFZBUklB QkxFIikgPT0gMCkKIAkJcmV0dXJuIEVWRU5UX1RSSUdHRVJfQ09NTUFORF9UQUdfT0s7CiAKIAkv KgpAQCAtMTE0Niw2ICsxMTQ4LDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RUeXBlKE9i amVjdFR5cGUgb2J0eXBlKQogCQljYXNlIE9CSkVDVF9UU1RFTVBMQVRFOgogCQljYXNlIE9CSkVD VF9UWVBFOgogCQljYXNlIE9CSkVDVF9VU0VSX01BUFBJTkc6CisJCWNhc2UgT0JKRUNUX1ZBUklB QkxFOgogCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJcmV0dXJuIHRydWU7CiAKQEAgLTEyMDksNiAr MTIxMiw3IEBAIEV2ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0Q2xhc3MoT2JqZWN0Q2xhc3Mgb2Jq Y2xhc3MpCiAJCWNhc2UgT0NMQVNTX1BVQkxJQ0FUSU9OX1JFTDoKIAkJY2FzZSBPQ0xBU1NfU1VC U0NSSVBUSU9OOgogCQljYXNlIE9DTEFTU19UUkFOU0ZPUk06CisJCWNhc2UgT0NMQVNTX1ZBUklB QkxFOgogCQkJcmV0dXJuIHRydWU7CiAKIAkJCS8qCkBAIC0yMjQ0LDYgKzIyNDgsOCBAQCBzdHJp bmdpZnlfZ3JhbnRfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCQlyZXR1cm4gIlRBQkxF U1BBQ0UiOwogCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJcmV0dXJuICJUWVBFIjsKKwkJY2FzZSBP QkpFQ1RfVkFSSUFCTEU6CisJCQlyZXR1cm4gIlZBUklBQkxFIjsKIAkJCS8qIHRoZXNlIGN1cnJl bnRseSBhcmVuJ3QgdXNlZCAqLwogCQljYXNlIE9CSkVDVF9BQ0NFU1NfTUVUSE9EOgogCQljYXNl IE9CSkVDVF9BR0dSRUdBVEU6CkBAIC0yMzI2LDYgKzIzMzIsOCBAQCBzdHJpbmdpZnlfYWRlZnBy aXZzX29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQkJcmV0dXJuICJUQUJMRVNQQUNFUyI7 CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCQlyZXR1cm4gIlRZUEVTIjsKKwkJY2FzZSBPQkpFQ1Rf VkFSSUFCTEU6CisJCQlyZXR1cm4gIlZBUklBQkxFUyI7CiAJCQkvKiB0aGVzZSBjdXJyZW50bHkg YXJlbid0IHVzZWQgKi8KIAkJY2FzZSBPQkpFQ1RfQUNDRVNTX01FVEhPRDoKIAkJY2FzZSBPQkpF Q1RfQUdHUkVHQVRFOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IGI5NDViMTU1NmEuLmViOGMw OGJhZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTE1MSw2ICsxNTEsNyBAQCBQcmVwYXJl UXVlcnkoUHJlcGFyZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQljYXNl IENNRF9JTlNFUlQ6CiAJCWNhc2UgQ01EX1VQREFURToKIAkJY2FzZSBDTURfREVMRVRFOgorCQlj YXNlIENNRF9QTEFOX1VUSUxJVFk6CiAJCQkvKiBPSyAqLwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi42YmRkMjAwZTQwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuYwpAQCAtMCwwICsxLDQ5MiBAQAorI2luY2x1ZGUg InBvc3RncmVzLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisKKyNpbmNsdWRlICJhY2Nlc3Mv aGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImFj Y2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1ZGUgImNh dGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgorI2lu Y2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y3V0b3IuaCIKKyNpbmNsdWRlICJleGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oIgorI2luY2x1 ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgorI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCisj aW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvZXJjZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9j b2xsYXRlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2V4cHIuaCIKKyNpbmNsdWRlICJwYXJz ZXIvcGFyc2VfdHlwZS5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAi dXRpbHMvZGF0dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRp bHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBUaGUg Y29udGVudCBvZiB2YXJpYWJsZXMgaXMgbm90IHRyYW5zYWN0aW9uYWwuIER1ZSB0aGlzIGZhY3Qg dGhlCisgKiBpbXBsZW1lbnRhdGlvbiBvZiBEUk9QIGNhbiBiZSBzaW1wbGUsIGJlY2F1c2UgYWx0 aG91Z2ggRFJPUCBWQVJJQUJMRQorICogY2FuIGJlIHJldmVydGVkLCB0aGUgY29udGVudCBvZiB2 YXJpYWJsZSBjYW4gYmUgbG9zdC4gSW4gdGhpcyBleGFtcGxlLAorICogRFJPUCBWQVJJQUJMRSBp cyBzYW1lIGxpa2UgcmVzZXQgdmFyaWFibGUuCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgU2NoZW1h VmFyaWFibGVEYXRhCit7CisJT2lkCQkJdmFyaWQ7CQkJLyogcGdfdmFyaWFibGUgT0lEIG9mIHRo aXMgc2VxdWVuY2UgKGhhc2gga2V5KSAqLworCU9pZAkJCXR5cGlkOwkJCS8qIE9JRCBvZiB0aGUg ZGF0YSB0eXBlICovCisJaW50MzIJCXR5cG1vZDsKKwlpbnQxNgkJdHlwbGVuOworCWJvb2wJCXR5 cGJ5dmFsOworCWJvb2wJCWlzbnVsbDsKKwlib29sCQlmcmVldmFsOworCURhdHVtCQl2YWx1ZTsK Kwlib29sCQlpc19yb3d0eXBlOwkJLyogdHJ1ZSB3aGVuIHZhcmlhYmxlIGlzIGNvbXBvc2l0ZSAq LworCWJvb2wJCWlzX3ZhbGlkOwkJLyogdHJ1ZSB3aGVuIHZhcmlhYmxlIHdhcyBzdWNjZXNzZnVs eSBpbml0aWFsaXplZCAqLworfSBTY2hlbWFWYXJpYWJsZURhdGE7CisKK3R5cGVkZWYgU2NoZW1h VmFyaWFibGVEYXRhICpTY2hlbWFWYXJpYWJsZTsKKworc3RhdGljIEhUQUIgKnNjaGVtYXZhcmhh c2h0YWIgPSBOVUxMOwkJLyogaGFzaCB0YWJsZSBmb3Igc2Vzc2lvbiB2YXJpYWJsZXMgKi8KK3N0 YXRpYyBNZW1vcnlDb250ZXh0IFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dCA9IE5VTEw7CisK K3N0YXRpYyBib29sIGZpcnN0X3RpbWUgPSB0cnVlOworc3RhdGljIHZvaWQgY3JlYXRlX3NjaGVt YXZhcl9oYXNodGFibGUodm9pZCk7CitzdGF0aWMgYm9vbCBjbGVhbl9jYWNoZV9yZXEgPSBmYWxz ZTsKKworc3RhdGljIHZvaWQgY2xlYW5fY2FjaGUodm9pZCk7CitzdGF0aWMgdm9pZCBmb3JjZV9j bGVhbl9jYWNoZShYYWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZyk7CisKKworLyoKKyAqIFNhdmUg aW5mbyBhYm91dCBuY2Vzc2l0eSB0byBjbGVhbiBoYXNoIHRhYmxlLCBiZWNhdXNlIHNvbWUKKyAq IHNjaGVtYSB2YXJpYWJsZSB3YXMgZHJvcHBlZC4gRG9uJ3QgZG8gaGVyZSBtb3JlLCByZWNoZWNr CisgKiBuZWVkcyB0byBiZSBpbiB0cmFuc2FjdGlvbiBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQK K0ludmFsaWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQs IHVpbnQzMiBoYXNodmFsdWUpCit7CisJaWYgKGNhY2hlaWQgIT0gVkFSSUFCTEVPSUQpCisJCXJl dHVybjsKKworCWNsZWFuX2NhY2hlX3JlcSA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkCitmb3Jj ZV9jbGVhbl9jYWNoZShYYWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZykKK3sKKwkvKgorCSAqIHNo b3VsZCBjb250aW51ZSBvbmx5IGluIHRyYW5zYWN0aW9uIHRpbWUsIHdoZW4KKwkgKiBzeXNjYWNo ZSBpcyBhdmFpbGFibGUuCisJICovCisJaWYgKGNsZWFuX2NhY2hlX3JlcSAmJiBJc1RyYW5zYWN0 aW9uU3RhdGUoKSkKKwl7CisJCWNsZWFuX2NhY2hlKCk7CisJCWNsZWFuX2NhY2hlX3JlcSA9IGZh bHNlOworCX0KK30KKworc3RhdGljIHZvaWQKK2NsZWFuX2NhY2hlKHZvaWQpCit7CisJSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKKwlTY2hlbWFWYXJpYWJsZQkJdmFyOworCisJaWYgKCFzY2hlbWF2 YXJoYXNodGFiKQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHNjaGVtYXZh cmhhc2h0YWIpOworCisJLyoKKwkgKiBFdmVyeSB2YWxpZCB2YXJpYWJsZSBoYXZlIHRvIGhhdmUg ZW50cnkgaW4gc3lzdGVtCisJICogY2F0YWxvZy4gUmVtb3ZlZCBpZiB0aGVyZSBpcyBub3RoaW5n LgorCSAqLworCXdoaWxlICgodmFyID0gKFNjaGVtYVZhcmlhYmxlKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJeworCQlIZWFwVHVwbGUJdHAgPSBJbnZhbGlkT2lkOworCisJ CXRwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhci0+ dmFyaWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJeworCQkJZWxvZyhERUJV RzEsICJ2YXJpYWJsZSAlZCBpcyByZW1vdmVkIGZyb20gY2FjaGUiLCB2YXItPnZhcmlkKTsKKwor CQkJaWYgKHZhci0+ZnJlZXZhbCkKKwkJCXsKKwkJCQlwZnJlZShEYXR1bUdldFBvaW50ZXIodmFy LT52YWx1ZSkpOworCQkJCXZhci0+ZnJlZXZhbCA9IGZhbHNlOworCQkJfQorCisJCQlpZiAoaGFz aF9zZWFyY2goc2NoZW1hdmFyaGFzaHRhYiwKKwkJCQkJCQkJKHZvaWQgKikgJnZhci0+dmFyaWQs CisJCQkJCQkJCUhBU0hfUkVNT1ZFLAorCQkJCQkJCQlOVUxMKSA9PSBOVUxMKQorCQkJCWVsb2co REVCVUcxLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKwkJfQorCQllbHNlCisJCQlSZWxlYXNl U3lzQ2FjaGUodHApOworCX0KK30KKworLyoKKyAqIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBmb3Ig c3RvcmluZyBzY2hlbWEgdmFyaWFibGVzCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVfc2NoZW1h dmFyX2hhc2h0YWJsZSh2b2lkKQoreworCUhBU0hDVEwJCWN0bDsKKworCS8qIHNldCBjYWxsYmFj a3MgKi8KKwlpZiAoZmlyc3RfdGltZSkKKwl7CisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxi YWNrKFZBUklBQkxFT0lELAorCQkJCQkJCQkJICBJbnZhbGlkYXRlU2NoZW1hVmFyQ2FjaGVDYWxs YmFjaywKKwkJCQkJCQkJCSAgKERhdHVtKSAwKTsKKworCQlSZWdpc3RlclhhY3RDYWxsYmFjayhm b3JjZV9jbGVhbl9jYWNoZSwgTlVMTCk7CisKKwkJZmlyc3RfdGltZSA9IGZhbHNlOworCX0KKwor CS8qIG5lZWRzIG93biBsb25nIGxpZmUgbWVtb3J5IGNvbnRleHQgKi8KKwlpZiAoU2NoZW1hVmFy aWFibGVNZW1vcnlDb250ZXh0ID09IE5VTEwpCisJeworCQlTY2hlbWFWYXJpYWJsZU1lbW9yeUNv bnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJ CQkJCQkJCSJzY2hlbWEgdmFyaWFibGVzIiwKKwkJCQkJCQkJCQkJCQkJCUFMTE9DU0VUX1NUQVJU X1NNQUxMX1NJWkVTKTsKKwl9CisKKwltZW1zZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkpOworCWN0 bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7CisJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihTY2hlbWFW YXJpYWJsZURhdGEpOworCWN0bC5oY3h0ID0gU2NoZW1hVmFyaWFibGVNZW1vcnlDb250ZXh0Owor CisJc2NoZW1hdmFyaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJTY2hlbWEgdmFyaWFibGVzIiwgNjQs ICZjdGwsCisJCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7 Cit9CisKKy8qCisgKiBGYXN0IGRyb3AgY29tcGxldGUgY29udGVudCBvZiBzY2hlbWEgdmFyaWFi bGVzCisgKi8KK3ZvaWQKK1Jlc2V0U2NoZW1hVmFyaWFibGVDYWNoZSh2b2lkKQoreworCWlmIChz Y2hlbWF2YXJoYXNodGFiKQorCXsKKwkJaGFzaF9kZXN0cm95KHNjaGVtYXZhcmhhc2h0YWIpOwor CQlzY2hlbWF2YXJoYXNodGFiID0gTlVMTDsKKwl9CisKKwlpZiAoU2NoZW1hVmFyaWFibGVNZW1v cnlDb250ZXh0ICE9IE5VTEwpCisJeworCQlNZW1vcnlDb250ZXh0UmVzZXQoU2NoZW1hVmFyaWFi bGVNZW1vcnlDb250ZXh0KTsKKwl9Cit9CisKKy8qCisgKiBEcm9wIHZhcmlhYmxlIGJ5IE9JRAor ICovCit2b2lkCitSZW1vdmVWYXJpYWJsZUJ5SWQoT2lkIHZhcmlkKQoreworCVJlbGF0aW9uCXJl bDsKKwlIZWFwVHVwbGUJdHVwOworCisJcmVsID0gaGVhcF9vcGVuKFZhcmlhYmxlUmVsYXRpb25J ZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVP SUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0 dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdmFyaWFibGUgJXUi LCB2YXJpZCk7CisKKwlDYXRhbG9nVHVwbGVEZWxldGUocmVsLCAmdHVwLT50X3NlbGYpOworCisJ UmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwloZWFwX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9j ayk7Cit9CisKKy8qCisgKiBDcmVhdGVzIG5ldyB2YXJpYWJsZSAtIGVudHJ5IGluIHBnX2NhdGFs b2cucGdfdmFyaWFibGUgdGFibGUKKyAqLworT2JqZWN0QWRkcmVzcworRGVmaW5lU2NoZW1hVmFy aWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTY2hlbWFWYXJTdG10ICpzdG10KQorewor CU9pZAkJCW5hbWVzcGFjZWlkOworCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJT2lkCQkJdHlwaWQ7 CisJaW50MzIJCXR5cG1vZDsKKwlPaWQJCQl2YXJvd25lciA9IEdldFVzZXJJZCgpOworCU9pZAkJ CWNvbGxhdGlvbjsKKwlPaWQJCQl0eXBjb2xsYXRpb247CisKKwlOb2RlCSAgICpjb29rZWRfZGVm YXVsdCA9IE5VTEw7CisKKwluYW1lc3BhY2VpZCA9CisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVh dGlvbk5hbWVzcGFjZShzdG10LT52YXJpYWJsZSwgTm9Mb2NrLCBOVUxMKTsKKworCXR5cGVuYW1l VHlwZUlkQW5kTW9kKHBzdGF0ZSwgc3RtdC0+dHlwZU5hbWUsICZ0eXBpZCwgJnR5cG1vZCk7CisJ dHlwY29sbGF0aW9uID0gZ2V0X3R5cGNvbGxhdGlvbih0eXBpZCk7CisKKwlhY2xyZXN1bHQgPSBw Z190eXBlX2FjbGNoZWNrKHR5cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwlpZiAoYWNs cmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJlc3VsdCwg dHlwaWQpOworCisJaWYgKHN0bXQtPmNvbGxDbGF1c2UpCisJCWNvbGxhdGlvbiA9IExvb2t1cENv bGxhdGlvbihwc3RhdGUsCisJCQkJCQkJCQlzdG10LT5jb2xsQ2xhdXNlLT5jb2xsbmFtZSwKKwkJ CQkJCQkJCXN0bXQtPmNvbGxDbGF1c2UtPmxvY2F0aW9uKTsKKwllbHNlCisJCWNvbGxhdGlvbiA9 IHR5cGNvbGxhdGlvbjs7CisKKwkvKiBDb21wbGFpbiBpZiBDT0xMQVRFIGlzIGFwcGxpZWQgdG8g YW4gdW5jb2xsYXRhYmxlIHR5cGUgKi8KKwlpZiAoT2lkSXNWYWxpZChjb2xsYXRpb24pICYmICFP aWRJc1ZhbGlkKHR5cGNvbGxhdGlvbikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1zZygiY29sbGF0aW9ucyBhcmUg bm90IHN1cHBvcnRlZCBieSB0eXBlICVzIiwKKwkJCQkJCWZvcm1hdF90eXBlX2JlKHR5cGlkKSks CisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHN0bXQtPmNvbGxDbGF1c2UtPmxvY2F0 aW9uKSkpOworCisJaWYgKHN0bXQtPmRlZmV4cHIpCisJeworCQljb29rZWRfZGVmYXVsdCA9IHRy YW5zZm9ybUV4cHIocHN0YXRlLCBzdG10LT5kZWZleHByLAorCQkJCQkJCQkJCUVYUFJfS0lORF9W QVJJQUJMRV9ERUZBVUxUKTsKKworCQljb29rZWRfZGVmYXVsdCA9IGNvZXJjZV90b19zcGVjaWZp Y190eXBlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCSBjb29rZWRfZGVmYXVsdCwgdHlwaWQsICJERUZB VUxUIik7CisJCWFzc2lnbl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCBjb29rZWRfZGVmYXVsdCk7 CisJfQorCisJcmV0dXJuIFZhcmlhYmxlQ3JlYXRlKHN0bXQtPnZhcmlhYmxlLT5yZWxuYW1lLAor CQkJCQkJICBuYW1lc3BhY2VpZCwKKwkJCQkJCSAgdHlwaWQsCisJCQkJCQkgIHR5cG1vZCwKKwkJ CQkJCSAgdmFyb3duZXIsCisJCQkJCQkgIGNvbGxhdGlvbiwKKwkJCQkJCSAgY29va2VkX2RlZmF1 bHQsCisJCQkJCQkgIHN0bXQtPmlmX25vdF9leGlzdHMpOworfQorCisvKgorICogVHJ5IHRvIHNl YXJjaCB2YWx1ZSBpbiBoYXNoIHRhYmxlLiBJZiBkb2Vzbid0CisgKiBleGlzdHMgaW5zZXJ0IGl0 IChhbmQgY2FsY3VsYXRlIGRlZmV4cHIgaWYgZXhpc3RzLgorICovCitzdGF0aWMgU2NoZW1hVmFy aWFibGUKK1ByZXBhcmVTY2hlbWFWYXJpYWJsZUZvclJlYWRpbmcoT2lkIHZhcmlkKQoreworCVNj aGVtYVZhcmlhYmxlCXN2YXI7CisJVmFyaWFibGUJKnZhcjsKKwlib29sCQkJZm91bmQ7CisKKwlp ZiAoc2NoZW1hdmFyaGFzaHRhYiA9PSBOVUxMKQorCQljcmVhdGVfc2NoZW1hdmFyX2hhc2h0YWJs ZSgpOworCisJc3ZhciA9IChTY2hlbWFWYXJpYWJsZSkgaGFzaF9zZWFyY2goc2NoZW1hdmFyaGFz aHRhYiwgJnZhcmlkLAorCQkJCQkJCQkJCQkgIEhBU0hfRU5URVIsICZmb3VuZCk7CisJaWYgKCFm b3VuZCkKKwl7CisJCXZhciA9IEdldFZhcmlhYmxlKHZhcmlkLCBmYWxzZSk7CisJCWdldF90eXBs ZW5ieXZhbCh2YXItPnR5cGlkLCAmc3Zhci0+dHlwbGVuLCAmc3Zhci0+dHlwYnl2YWwpOworCisJ CXN2YXItPnZhcmlkID0gdmFyaWQ7CisJCXN2YXItPnR5cGlkID0gdmFyLT50eXBpZDsKKwkJc3Zh ci0+dHlwbW9kID0gdmFyLT50eXBtb2Q7CisJCXN2YXItPmlzbnVsbCA9IHRydWU7CisJCXN2YXIt PmZyZWV2YWwgPSBmYWxzZTsKKwkJc3Zhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisJCXN2YXItPmlz X3Jvd3R5cGUgPSB0eXBlX2lzX3Jvd3R5cGUodmFyLT50eXBpZCk7CisKKwkJLyogd2hlbiB3ZSBk b24ndCBuZWVkIGNhbGN1bGF0ZSBkZWZleHByLCB2YWx1ZSBpcyB2YWxpZCBhbHJlYWR5ICovCisJ CXN2YXItPmlzX3ZhbGlkID0gdmFyLT5kZWZleHByID8gZmFsc2UgOiB0cnVlOworCX0KKwllbHNl IGlmICghc3Zhci0+aXNfdmFsaWQpCisJeworCQkvKiB3ZSBuZWVkIHZhciB0byByZWNhbGN1bGF0 ZSBkZWZleHByICovCisJCXZhciA9IEdldFZhcmlhYmxlKHZhcmlkLCBmYWxzZSk7CisJfQorCWVs c2UKKwkJLyogd2UgZG9uJ3QgbmVlZCB0byBnbyB0byBzeXMgY2FjaGUgKi8KKwkJdmFyID0gTlVM TDsKKworCS8qCisJICogSW5pdGlhbGl6ZSB2YXJpYWJsZSB3aGVuIGl0IGlzIG5lY2Vzc2FyeS4g SXQgaXMgZnJlc2gKKwkgKiBvciBsYXN0IGluaXRpYWxpemF0aW9uIHdhcyBub3Qgc3VjY2Vzc2Z1 bGwuCisJICovCisJaWYgKHZhciAhPSBOVUxMICYmIHZhci0+ZGVmZXhwciAmJiAhc3Zhci0+aXNf dmFsaWQpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQgPSBOVUxMOworCisJCURhdHVt CSAgIHZhbHVlID0gKERhdHVtKSAwOworCQlib29sCSAgIG51bGw7CisJCUVTdGF0ZQkgICAqZXN0 YXRlID0gTlVMTDsKKwkJRXhwcgkgICAqZGVmZXhwcjsKKwkJRXhwclN0YXRlICAqZGVmZXhwcnM7 CisKKwkJLyogUHJlcGFyZSBkZWZhdWx0IGV4cHIgKi8KKwkJZXN0YXRlID0gQ3JlYXRlRXhlY3V0 b3JTdGF0ZSgpOworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ ZXNfcXVlcnlfY3h0KTsKKworCQlkZWZleHByID0gZXhwcmVzc2lvbl9wbGFubmVyKChFeHByICop IHZhci0+ZGVmZXhwcik7CisJCWRlZmV4cHJzID0gRXhlY0luaXRFeHByKGRlZmV4cHIsIE5VTEwp OworCQl2YWx1ZSA9IEV4ZWNFdmFsRXhwclN3aXRjaENvbnRleHQoZGVmZXhwcnMsIEdldFBlclR1 cGxlRXhwckNvbnRleHQoZXN0YXRlKSwgJm51bGwpOworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhTY2hlbWFWYXJpYWJsZU1lbW9yeUNvbnRleHQpOworCisJCWlmICghbnVsbCkKKwkJeworCQkJ c3Zhci0+dmFsdWUgPSBkYXR1bUNvcHkodmFsdWUsIHN2YXItPnR5cGJ5dmFsLCBzdmFyLT50eXBs ZW4pOworCQkJc3Zhci0+ZnJlZXZhbCA9IHN2YXItPnZhbHVlICE9IHZhbHVlOworCQkJc3Zhci0+ aXNudWxsID0gZmFsc2U7CisJCQlzdmFyLT5pc192YWxpZCA9IHRydWU7CisJCX0KKwkJZWxzZQor CQl7CisJCQlzdmFyLT5pc251bGwgPSB0cnVlOworCQkJc3Zhci0+aXNfdmFsaWQgPSB0cnVlOwor CQl9CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJCUZyZWVFeGVj dXRvclN0YXRlKGVzdGF0ZSk7CisJfQorCisJaWYgKCFzdmFyLT5pc192YWxpZCkKKwkJZWxvZyhF UlJPUiwgInRoZSBjb250ZW50IG9mIHZhcmlhYmxlIGlzIG5vdCB2YWxpZCIpOworCisJcmV0dXJu IHN2YXI7Cit9CisKKy8qCisgKiBSZXR1cm5zIGNvbnRlbnQgb2YgdmFyaWFibGUuIFdlIGV4cGV4 dCBzZWN1cmVkIGFjY2VzcyBub3cuCisgKiBTZWN1cmUgY2hlY2sgc2hvdWxkIGJlIGRvbmUgYmVm b3JlLgorICovCitEYXR1bQorR2V0U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBib29sICppc051 bGwsIE9pZCBleHBlY3RlZF90eXBpZCwgYm9vbCBjb3B5KQoreworCVNjaGVtYVZhcmlhYmxlCXN2 YXI7CisJRGF0dW0JCQl2YWx1ZTsKKwlib29sCQkJaXNudWxsOworCisJc3ZhciA9IFByZXBhcmVT Y2hlbWFWYXJpYWJsZUZvclJlYWRpbmcodmFyaWQpOworCUFzc2VydChzdmFyICE9IE5VTEwpOwor CisJaWYgKGV4cGVjdGVkX3R5cGlkICE9IHN2YXItPnR5cGlkKQorCQllbG9nKEVSUk9SLCAidHlw ZSBvZiB2YXJpYWJsZSBcIiVzXCIgaXMgZGlmZmVyZW50IHRoYW4gZXhwZWN0ZWQiLAorCQkJCSAg IHNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZSh2YXJpZCkpOworCisJdmFsdWUgPSBzdmFyLT52YWx1 ZTsKKwlpc251bGwgPSBzdmFyLT5pc251bGw7CisKKwkqaXNOdWxsID0gaXNudWxsOworCisJaWYg KCFpc251bGwgJiYgY29weSkKKwkJcmV0dXJuIGRhdHVtQ29weSh2YWx1ZSwgc3Zhci0+dHlwYnl2 YWwsIHN2YXItPnR5cGxlbik7CisKKwlyZXR1cm4gdmFsdWU7Cit9CisKKy8qCisgKiBXcml0ZSB2 YWx1ZSB0byB2YXJpYWJsZS4gV2UgZXhwZWN0IHNlY3VyZWQgYWNjZXNzIGluIHRoaXMgbW9tZW50 LgorICogSW4gdGhpcyB0aW1lLCB3ZSByZWNoZWNrIHN5c2NoYWNoZSBhYm91dCB1c2VkIHR5cGUu CisgKi8KK3ZvaWQKK1NldFNjaGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJv b2wgaXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCkKK3sKKwlNZW1vcnlDb250ZXh0IG9s ZGNvbnRleHQgPSBOVUxMOworCisJU2NoZW1hVmFyaWFibGUgc3ZhcjsKKwlPaWQJCQl2YXJfdHlw aWQ7CisJaW50MzIJCXZhcl90eXBtb2Q7CisJT2lkCQkJdmFyX2NvbGxpZDsKKwlib29sCQlmb3Vu ZDsKKworCWlmIChzY2hlbWF2YXJoYXNodGFiID09IE5VTEwpCisJCWNyZWF0ZV9zY2hlbWF2YXJf aGFzaHRhYmxlKCk7CisKKwlzdmFyID0gKFNjaGVtYVZhcmlhYmxlKSBoYXNoX3NlYXJjaChzY2hl bWF2YXJoYXNodGFiLCAmdmFyaWQsCisJCQkJCQkJCQkJCSAgSEFTSF9FTlRFUiwgJmZvdW5kKTsK KworCWdldF9zY2hlbWFfdmFyaWFibGVfdHlwZV90eXBtb2RfY29sbGlkKHZhcmlkLAorCQkJCQkJ CQkJCSAgICZ2YXJfdHlwaWQsCisJCQkJCQkJCQkJICAgJnZhcl90eXBtb2QsCisJCQkJCQkJCQkJ ICAgJnZhcl9jb2xsaWQpOworCisJLyogY2hlY2sgdHlwZXMgZmlyc3QgKi8KKwlpZiAodmFyX3R5 cGlkICE9IHR5cGlkKQorCQllbG9nKEVSUk9SLCAidHlwZSBvZiBleHByZXNzaW9uIGlzIGRpZmZl cmVudCB0aGFuIHNjaGVtYSB2YXJpYWJsZSB0eXBlIik7CisKKwlpZiAoZm91bmQpCisJeworCQkv KiByZWxlYXNlIGN1cnJlbnQgY29udGVudCBmaXJzdCAqLworCQlpZiAoc3Zhci0+ZnJlZXZhbCkK KwkJeworCQkJcGZyZWUoRGF0dW1HZXRQb2ludGVyKHN2YXItPnZhbHVlKSk7CisJCQlzdmFyLT52 YWx1ZSA9IChEYXR1bSkgMDsKKwkJCXN2YXItPmlzbnVsbCA9IHRydWU7CisJCQlzdmFyLT5mcmVl dmFsID0gZmFsc2U7CisJCX0KKwl9CisKKwlnZXRfdHlwbGVuYnl2YWwodHlwaWQsICZzdmFyLT50 eXBsZW4sICZzdmFyLT50eXBieXZhbCk7CisKKwlzdmFyLT52YXJpZCA9IHZhcmlkOworCXN2YXIt PnR5cGlkID0gdHlwaWQ7CisJc3Zhci0+dHlwbW9kID0gdHlwbW9kOworCisJc3Zhci0+aXNudWxs ID0gdHJ1ZTsKKwlzdmFyLT5mcmVldmFsID0gZmFsc2U7CisJc3Zhci0+dmFsdWUgPSAoRGF0dW0p IDA7CisKKwlzdmFyLT5pc19yb3d0eXBlID0gdHlwZV9pc19yb3d0eXBlKHR5cGlkKTsKKwlzdmFy LT5pc192YWxpZCA9IGZhbHNlOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhTY2hlbWFWYXJpYWJsZU1lbW9yeUNvbnRleHQpOworCisJaWYgKCFpc051bGwpCisJeworCQlz dmFyLT52YWx1ZSA9IGRhdHVtQ29weSh2YWx1ZSwgc3Zhci0+dHlwYnl2YWwsIHN2YXItPnR5cGxl bik7CisJCXN2YXItPmZyZWV2YWwgPSBzdmFyLT52YWx1ZSAhPSB2YWx1ZTsKKwkJc3Zhci0+aXNu dWxsID0gZmFsc2U7CisJCXN2YXItPmlzX3ZhbGlkID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJ c3Zhci0+aXNudWxsID0gdHJ1ZTsKKwkJc3Zhci0+aXNfdmFsaWQgPSB0cnVlOworCX0KKworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKK30KKwordm9pZAorZG9MZXRTdG10KFBs YW5uZWRTdG10ICpwc3RtdCwKKwkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJICBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudiwKKwkJICBjb25zdCBjaGFyICpxdWVyeVN0cmluZykKK3sKKwlR dWVyeURlc2MgKnF1ZXJ5RGVzYzsKKwlEZXN0UmVjZWl2ZXIgKmRlc3Q7CisKKwlQdXNoQ29waWVk U25hcHNob3QoR2V0QWN0aXZlU25hcHNob3QoKSk7CisJVXBkYXRlQWN0aXZlU25hcHNob3RDb21t YW5kSWQoKTsKKworCS8qIENyZWF0ZSBkZXN0IHJlY2VpdmVyIGZvciBMRVQgKi8KKwlkZXN0ID0g Q3JlYXRlRGVzdFJlY2VpdmVyKERlc3RWYXJpYWJsZSk7CisKKwlTZXRWYXJpYWJsZURlc3RSZWNl aXZlclBhcmFtcyhkZXN0LCBwc3RtdC0+cmVzdWx0VmFyaWFibGUpOworCisJLyogQ3JlYXRlIGEg UXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVl cnlEZXNjKHBzdG10LCBxdWVyeVN0cmluZywKKwkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3Qo KSwKKwkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQlkZXN0LCBwYXJhbXMs IHF1ZXJ5RW52LCAwKTsKKworCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwlFeGVjdXRv clJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAyTCwgdHJ1ZSk7CisJRXhlY3V0 b3JGaW5pc2gocXVlcnlEZXNjKTsKKwlFeGVjdXRvckVuZChxdWVyeURlc2MpOworCisJRnJlZVF1 ZXJ5RGVzYyhxdWVyeURlc2MpOworCisJUG9wQWN0aXZlU25hcHNob3QoKTsKK30KKwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYwppbmRleCBmNjIxMDIyNmU5Li41OWRjMzBmMTRkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYwpAQCAtOTY1MCw2ICs5NjUwLDcgQEAgQVRFeGVjQWx0ZXJDb2x1bW5U eXBlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJY2FzZSBPQ0xBU1Nf UFVCTElDQVRJT05fUkVMOgogCQkJY2FzZSBPQ0xBU1NfU1VCU0NSSVBUSU9OOgogCQkJY2FzZSBP Q0xBU1NfVFJBTlNGT1JNOgorCQkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAKIAkJCQkvKgogCQkJ CSAqIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlc2Ugc29ydHMgb2Ygb2JqZWN0cyB0byBkZXBl bmQgb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKaW5kZXggY2MwOTg5NWZhNS4uZWU4ZmY3ZGE5ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvTWFrZWZpbGUKQEAgLTI5LDYgKzI5LDYgQEAgT0JKUyA9IGV4ZWNBbWkubyBleGVj Q3VycmVudC5vIGV4ZWNFeHByLm8gZXhlY0V4cHJJbnRlcnAubyBcCiAgICAgICAgbm9kZUN0ZXNj YW4ubyBub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5vIG5vZGVXb3JrdGFibGVzY2FuLm8gXAogICAg ICAgIG5vZGVHcm91cC5vIG5vZGVTdWJwbGFuLm8gbm9kZVN1YnF1ZXJ5c2Nhbi5vIG5vZGVUaWRz Y2FuLm8gXAogICAgICAgIG5vZGVGb3JlaWduc2Nhbi5vIG5vZGVXaW5kb3dBZ2cubyB0c3RvcmVS ZWNlaXZlci5vIHRxdWV1ZS5vIHNwaS5vIFwKLSAgICAgICBub2RlVGFibGVGdW5jc2Nhbi5vCisg ICAgICAgbm9kZVRhYmxlRnVuY3NjYW4ubyBzdmFyaWFibGVSZWNlaXZlci5vCiAKIGluY2x1ZGUg JCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jb21tb24ubWsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j CmluZGV4IGUyODRmZDcxZDcuLmJiOWJmNTNlMWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpA QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUuaCIKICNpbmNsdWRlICJj YXRhbG9nL29iamVjdGFjY2Vzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2lu Y2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZ1 bmNhcGkuaCIKQEAgLTcyNyw2ICs3MjgsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwg RXhwclN0YXRlICpzdGF0ZSwKIAkJCXsKIAkJCQlQYXJhbQkgICAqcGFyYW0gPSAoUGFyYW0gKikg bm9kZTsKIAkJCQlQYXJhbUxpc3RJbmZvIHBhcmFtczsKKwkJCQlBY2xSZXN1bHQJYWNscmVzdWx0 OwogCiAJCQkJc3dpdGNoIChwYXJhbS0+cGFyYW1raW5kKQogCQkJCXsKQEAgLTczNiw2ICs3Mzgs MjggQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJ CQlzY3JhdGNoLmQucGFyYW0ucGFyYW10eXBlID0gcGFyYW0tPnBhcmFtdHlwZTsKIAkJCQkJCUV4 cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAkJCQkJCWJyZWFrOworCisJCQkJCWNh c2UgUEFSQU1fVkFSSUFCTEU6CisKKwkJCQkJCS8qIENoZWNrIHBlcm1pc3Npb24gdG8gcmVhZCBz Y2hlbWEgdmFyaWFibGUgKi8KKwkJCQkJCWFjbHJlc3VsdCA9IHBnX3ZhcmlhYmxlX2FjbGNoZWNr KHBhcmFtLT5wYXJhbWlkLCBHZXRVc2VySWQoKSwgQUNMX1JFQUQpOworCQkJCQkJaWYgKGFjbHJl c3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCQkJCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9C SkVDVF9WQVJJQUJMRSwKKwkJCQkJCQkJCQkJc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKHBhcmFt LT5wYXJhbWlkKSk7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBVc2luZyB2YXJvaWQgYXMgcGFyYW1p ZCBpcyBub3QgcHJhY3RpY2FsLiBCZXR0ZXIgdG8gcmVjb3VudAorCQkJCQkJICogdXNlZCBzY2hl bWEgdmFyaWFibGVzIGZyb20gemVybywgYW5kIGxhdGVyIHRvIHVzZSBwYXJhbWlkIGxpa2UKKwkJ CQkJCSAqIG9mZnNldC4KKwkJCQkJCSAqLworCQkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1BB UkFNX1ZBUklBQkxFOworCQkJCQkJc2NyYXRjaC5kLnZwYXJhbS5wYXJhbWlkID0gc3RhdGUtPm52 YXJpYWJsZXMrKzsKKwkJCQkJCXNjcmF0Y2guZC52cGFyYW0udmFyb2lkID0gcGFyYW0tPnBhcmFt aWQ7CisJCQkJCQlzY3JhdGNoLmQudnBhcmFtLnBhcmFtdHlwZSA9IHBhcmFtLT5wYXJhbXR5cGU7 CisKKwkJCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKwkJCQkJCWJyZWFr OworCiAJCQkJCWNhc2UgUEFSQU1fRVhURVJOOgogCiAJCQkJCQkvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggOWQ2ZTI1YWFlNS4uNDQ2MmRjYzk1MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAi YWNjZXNzL3R1cHRvYXN0ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNs dWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlh YmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRv ci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTM1MSw2ICszNTIsNyBA QCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQs IGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfUEFSQU1fRVhFQywKIAkJJiZDQVNFX0VFT1Bf UEFSQU1fRVhURVJOLAogCQkmJkNBU0VfRUVPUF9QQVJBTV9DQUxMQkFDSywKKwkJJiZDQVNFX0VF T1BfUEFSQU1fVkFSSUFCTEUsCiAJCSYmQ0FTRV9FRU9QX0NBU0VfVEVTVFZBTCwKIAkJJiZDQVNF X0VFT1BfTUFLRV9SRUFET05MWSwKIAkJJiZDQVNFX0VFT1BfSU9DT0VSQ0UsCkBAIC0xMDA3LDYg KzEwMDksMTMgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQg KmVjb250ZXh0LCBib29sICppc251bGwpCiAJCQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJRUVPX0NB U0UoRUVPUF9QQVJBTV9WQVJJQUJMRSkKKwkJeworCQkJLyogaXV0IG9mIGxpbmUgaW1wbGVtZW50 YXRpb247IHRvbyBsYXJnZSAqLworCQkJRXhlY0V2YWxQYXJhbVZhcmlhYmxlKHN0YXRlLCBvcCwg ZWNvbnRleHQpOworCQkJRUVPX05FWFQoKTsKKwkJfQorCiAJCUVFT19DQVNFKEVFT1BfQ0FTRV9U RVNUVkFMKQogCQl7CiAJCQkvKgpAQCAtMjMyMyw2ICsyMzMyLDc5IEBAIEV4ZWNFdmFsUGFyYW1F eHRlcm4oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVj b250ZXh0KQogCQkJIGVycm1zZygibm8gdmFsdWUgZm91bmQgZm9yIHBhcmFtZXRlciAlZCIsIHBh cmFtSWQpKSk7CiB9CiAKKy8qCisgKiBFdmFsdWF0ZSBhIFBBUkFNX1ZBUklBQkxFIHBhcmFtZXRl cgorICovCit2b2lkCitFeGVjRXZhbFBhcmFtVmFyaWFibGUoRXhwclN0YXRlICpzdGF0ZSwgRXhw ckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KQoreworCUVTdGF0ZSAqZXN0YXRl ID0gZWNvbnRleHQtPmVjeHRfZXN0YXRlOworCisJLyoKKwkgKiBXZSBzaG91bGQgdG8gZW5zdXJl IHN0YWJsZSBiZWhhdmUgb2Ygc2NoZW1hIHZhcmlhYmxlcyBpbiBxdWVyaWVzLiBJdCBpcworCSAq IGltcG9ydGFudCwgYmVjYXVzZSBvcHRpbWl6ZXIgdXNlcyB0aGVzZSB2YWx1ZXMgYXMgc3RhYmxl LCBsaWtlIGV4dGVybgorCSAqIHBhcmFtZXRlcnMsIHdoYXQgaXMgbmljZSwgYmVjYXVzZSBxdWVy aWVzIGFyZSBvcHRpbWl6ZWQgd2VsbC4gU28sIGRvbid0CisJICogdHJ5IHRvIGFjY2VzcyB2YXJp YWJsZXMgZGlyZWN0bHksIHVzZSB0aGlzIHF1ZXJ5IHZhcmlhYmxlIGNhY2hlLgorCSAqIFRoaXMg Y2FjaGUgY2Fubm90IGJlIHVzZWQgd2hlbiBFU3RhdGUgaXMgc2hhcmVkIC0gUExwZ1NRTCBkaWQg aXQgZm9yCisJICogc2ltcGxlIGV4cHJlc3Npb25zLgorCSAqLworCWlmIChlc3RhdGUgJiYgIWVz dGF0ZS0+ZXNfc2hhcmVkKQorCXsKKwkJaW50CQlwYXJhbWlkID0gb3AtPmQudnBhcmFtLnBhcmFt aWQ7CisKKwkJaWYgKGVzdGF0ZS0+ZXNfbnZhcmlhYmxlcyA9PSAwKQorCQl7CisJCQlNZW1vcnlD b250ZXh0CW9sZF9jeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZWNvbnRleHQtPmVjeHRfcGVy X3F1ZXJ5X21lbW9yeSk7CisKKwkJCS8qIGluaXRpYWxpemUgZXN0YXRlIHNjaGVtYSB2YXJpYWJs ZSBjYWNoZSAqLworCisJCQllc3RhdGUtPmVzX252YXJpYWJsZXMgPSBzdGF0ZS0+bnZhcmlhYmxl czsKKwkJCWVzdGF0ZS0+ZXNfdmFybnVsbHMgPSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogc3RhdGUt Pm52YXJpYWJsZXMpOworCQkJZXN0YXRlLT5lc192YXJ0eXBlcyA9IHBhbGxvYzAoc2l6ZW9mKE9p ZCkgKiBzdGF0ZS0+bnZhcmlhYmxlcyk7CisJCQllc3RhdGUtPmVzX3ZhcnZhbHVlcyA9IHBhbGxv YyhzaXplb2YoRGF0dW0pICogc3RhdGUtPm52YXJpYWJsZXMpOworCisJCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkX2N4dCk7CisJCX0KKworCQlBc3NlcnQoZXN0YXRlLT5lc19udmFyaWFibGVz ID09IHN0YXRlLT5udmFyaWFibGVzKTsKKwkJQXNzZXJ0KGVzdGF0ZS0+ZXNfbnZhcmlhYmxlcyA+ IHBhcmFtaWQpOworCisJCWlmICghT2lkSXNWYWxpZChlc3RhdGUtPmVzX3ZhcnR5cGVzW3BhcmFt aWRdKSkKKwkJeworCQkJTWVtb3J5Q29udGV4dAlvbGRfY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKGVjb250ZXh0LT5lY3h0X3Blcl9xdWVyeV9tZW1vcnkpOworCisJCQkvKiBjb3B5IHZhcmlh YmxlIHRvIGVzdGF0ZSBzY2hlbWEgdmFyaWFibGUgY2FjaGUgKi8KKwkJCWVzdGF0ZS0+ZXNfdmFy dmFsdWVzW3BhcmFtaWRdID0KKwkJCQkJCQkJCQlHZXRTY2hlbWFWYXJpYWJsZShvcC0+ZC52cGFy YW0udmFyb2lkLAorCQkJCQkJCQkJCQkJCQkgICZlc3RhdGUtPmVzX3Zhcm51bGxzW3BhcmFtaWRd LAorCQkJCQkJCQkJCQkJCQkgIG9wLT5kLnZwYXJhbS5wYXJhbXR5cGUsCisJCQkJCQkJCQkJCQkJ CSAgdHJ1ZSk7CisJCQllc3RhdGUtPmVzX3ZhcnR5cGVzW3BhcmFtaWRdID0gb3AtPmQudnBhcmFt LnBhcmFtdHlwZTsKKworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZF9jeHQpOworCQl9CisK KwkJQXNzZXJ0KE9pZElzVmFsaWQoZXN0YXRlLT5lc192YXJ0eXBlc1twYXJhbWlkXSkpOworCisJ CSpvcC0+cmVzdmFsdWUgPSBlc3RhdGUtPmVzX3ZhcnZhbHVlc1twYXJhbWlkXTsKKwkJKm9wLT5y ZXNudWxsID0gZXN0YXRlLT5lc192YXJudWxsc1twYXJhbWlkXTsKKwl9CisJZWxzZQorCXsKKwkJ RGF0dW0JCWQ7CisJCWJvb2wJCWlzbnVsbDsKKworCQkvKiByZWFkIGNvbnRlbnQgb2YgdmFyaWFi bGUgZGlyZWN0bHkgKi8KKwkJZCA9IEdldFNjaGVtYVZhcmlhYmxlKG9wLT5kLnZwYXJhbS52YXJv aWQsCisJCQkJCQkJICAmaXNudWxsLAorCQkJCQkJCSAgb3AtPmQudnBhcmFtLnBhcmFtdHlwZSwK KwkJCQkJCQkgIGZhbHNlKTsKKworCQkqb3AtPnJlc3ZhbHVlID0gZDsKKwkJKm9wLT5yZXNudWxs ID0gaXNudWxsOworCX0KK30KKwogLyoKICAqIEV2YWx1YXRlIGEgU1FMVmFsdWVGdW5jdGlvbiBl eHByZXNzaW9uLgogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCBjNTgzZTAyMGEwLi43 OTdjMWY0M2IzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTQzLDkgKzQzLDExIEBACiAj aW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvbWF0dmlldy5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVidWcuaCIKKyNpbmNs dWRlICJleGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3 YXBpLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK QEAgLTIwNCwxMiArMjA2LDE4IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpCiAJICovCiAJZXN0YXRlLT5lc19xdWVyeUVudiA9IHF1ZXJ5 RGVzYy0+cXVlcnlFbnY7CiAKKwkvKgorCSAqIFJlc3VsdCBjYW4gYmUgc3RvcmVkIGluIHNjaGVt YSB2YXJpYWJsZS4KKwkgKi8KKwllc3RhdGUtPmVzX3Jlc3VsdF92YXJpYWJsZSA9IHF1ZXJ5RGVz Yy0+cGxhbm5lZHN0bXQtPnJlc3VsdFZhcmlhYmxlOworCiAJLyoKIAkgKiBJZiBub24tcmVhZC1v bmx5IHF1ZXJ5LCBzZXQgdGhlIGNvbW1hbmQgSUQgdG8gbWFyayBvdXRwdXQgdHVwbGVzIHdpdGgK IAkgKi8KIAlzd2l0Y2ggKHF1ZXJ5RGVzYy0+b3BlcmF0aW9uKQogCXsKIAkJY2FzZSBDTURfU0VM RUNUOgorCQljYXNlIENNRF9QTEFOX1VUSUxJVFk6CiAKIAkJCS8qCiAJCQkgKiBTRUxFQ1QgRk9S IFtLRVldIFVQREFURS9TSEFSRSBhbmQgbW9kaWZ5aW5nIENURXMgbmVlZCB0byBtYXJrCkBAIC0z NDUsNiArMzUzLDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2Ms CiAJZXN0YXRlLT5lc19sYXN0b2lkID0gSW52YWxpZE9pZDsKIAogCXNlbmRUdXBsZXMgPSAob3Bl cmF0aW9uID09IENNRF9TRUxFQ1QgfHwKKwkJCQkgIE9pZElzVmFsaWQoZXN0YXRlLT5lc19yZXN1 bHRfdmFyaWFibGUpIHx8CiAJCQkJICBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5oYXNSZXR1cm5p bmcpOwogCiAJaWYgKHNlbmRUdXBsZXMpCkBAIC05MjQsNiArOTMzLDE3IEBAIEluaXRQbGFuKFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQllc3RhdGUtPmVzX251bV9yb290X3Jl c3VsdF9yZWxhdGlvbnMgPSAwOwogCX0KIAorCWlmIChPaWRJc1ZhbGlkKGVzdGF0ZS0+ZXNfcmVz dWx0X3ZhcmlhYmxlKSkKKwl7CisJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJCU9pZAkJCXZhcmlk ID0gZXN0YXRlLT5lc19yZXN1bHRfdmFyaWFibGU7CisKKwkJLyogRW5zdXJlIHRoaXMgdmFyaWFi bGUgaXMgd3JpdGVhYmxlICovCisJCWFjbHJlc3VsdCA9IHBnX3ZhcmlhYmxlX2FjbGNoZWNrKHZh cmlkLCBHZXRVc2VySWQoKSwgQUNMX1dSSVRFKTsKKwkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVD S19PSykKKwkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBzY2hl bWFfdmFyaWFibGVfZ2V0X25hbWUodmFyaWQpKTsKKwl9CisKIAkvKgogCSAqIFNpbWlsYXJseSwg d2UgaGF2ZSB0byBsb2NrIHJlbGF0aW9ucyBzZWxlY3RlZCBGT1IgW0tFWV0gVVBEQVRFL1NIQVJF CiAJICogYmVmb3JlIHdlIGluaXRpYWxpemUgdGhlIHBsYW4gdHJlZSwgZWxzZSB3ZSdkIGJlIHJp c2tpbmcgbG9jayB1cGdyYWRlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggNWIzZWFl YzgwYi4uZWNhNzgwNTUxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTEwMiw2ICsx MDIsNyBAQCBDcmVhdGVFeGVjdXRvclN0YXRlKHZvaWQpCiAJLyoKIAkgKiBJbml0aWFsaXplIGFs bCBmaWVsZHMgb2YgdGhlIEV4ZWN1dG9yIFN0YXRlIHN0cnVjdHVyZQogCSAqLworCWVzdGF0ZS0+ ZXNfc2hhcmVkID0gZmFsc2U7CiAJZXN0YXRlLT5lc19kaXJlY3Rpb24gPSBGb3J3YXJkU2NhbkRp cmVjdGlvbjsKIAllc3RhdGUtPmVzX3NuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OwkvKiBjYWxs ZXIgbXVzdCBpbml0aWFsaXplIHRoaXMgKi8KIAllc3RhdGUtPmVzX2Nyb3NzY2hlY2tfc25hcHNo b3QgPSBJbnZhbGlkU25hcHNob3Q7CS8qIG5vIGNyb3NzY2hlY2sgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9zdmFyaWFibGVSZWNlaXZlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjBlYWM0YjVkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9zdmFyaWFibGVSZWNlaXZlci5jCkBAIC0wLDAgKzEsMTQ1IEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBzdmFyaWFibGVSZWNlaXZlci5jCisgKgkgIEFuIGltcGxlbWVudGF0aW9uIG9m IERlc3RSZWNlaXZlciB0aGF0IHN0b3JlcyB0aGUgcmVzdWx0IHZhbHVlIGluCisgKgkgIGEgc2No ZW1hIHZhcmlhYmxlLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVSZWNl aXZlci5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVz LmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvdHVwdG9hc3Rlci5oIgorI2luY2x1ZGUgImV4ZWN1dG9y L3N2YXJpYWJsZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyaWFibGUu aCIKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlEZXN0UmVjZWl2ZXIgcHViOworCU9pZAkJdmFyaWQ7 CisJT2lkCQl0eXBpZDsKKwlpbnQzMgl0eXBtb2Q7CisJaW50CQl0eXBsZW47CisJaW50CQlzbG90 X29mZnNldDsKKwlpbnQJCXJvd3M7Cit9IHN2YXJpYWJsZVN0YXRlOworCisKKy8qCisgKiBQcmVw YXJlIHRvIHJlY2VpdmUgdHVwbGVzIGZyb20gZXhlY3V0b3IuCisgKi8KK3N0YXRpYyB2b2lkCitz dmFyaWFibGVTdGFydHVwUmVjZWl2ZXIoRGVzdFJlY2VpdmVyICpzZWxmLCBpbnQgb3BlcmF0aW9u LCBUdXBsZURlc2MgdHlwZWluZm8pCit7CisJc3ZhcmlhYmxlU3RhdGUgKm15U3RhdGUgPSAoc3Zh cmlhYmxlU3RhdGUgKikgc2VsZjsKKwlpbnQJCQluYXR0cyA9IHR5cGVpbmZvLT5uYXR0czsKKwlp bnQJCQlvdXRjb2xzID0gMDsKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsgaSA8IG5hdHRzOyBp KyspCisJeworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0eXBlaW5m bywgaSk7CisKKwkJaWYgKGF0dHItPmF0dGlzZHJvcHBlZCkKKwkJCWNvbnRpbnVlOworCisJCWlm ICgrK291dGNvbHMgPiAxKQorCQkJZWxvZyhFUlJPUiwgInN2YXJpYWJsZSBEZXN0UmVjZWl2ZXIg Y2FuIHRha2Ugb25seSBvbmUgYXR0cmlidXRlIik7CisKKwkJbXlTdGF0ZS0+dHlwaWQgPSBhdHRy LT5hdHR0eXBpZDsKKwkJbXlTdGF0ZS0+dHlwbW9kID0gYXR0ci0+YXR0dHlwbW9kOworCQlteVN0 YXRlLT50eXBsZW4gPSBhdHRyLT5hdHRsZW47CisJCW15U3RhdGUtPnNsb3Rfb2Zmc2V0ID0gaTsK Kwl9CisKKwlteVN0YXRlLT5yb3dzID0gMDsKK30KKworLyoKKyAqIFJlY2VpdmUgYSB0dXBsZSBm cm9tIHRoZSBleGVjdXRvciBhbmQgc3RvcmUgaXQgaW4gc2NoZW1hIHZhcmlhYmxlLgorICovCitz dGF0aWMgYm9vbAorc3ZhcmlhYmxlUmVjZWl2ZVNsb3QoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIERl c3RSZWNlaXZlciAqc2VsZikKK3sKKwlzdmFyaWFibGVTdGF0ZSAqbXlTdGF0ZSA9IChzdmFyaWFi bGVTdGF0ZSAqKSBzZWxmOworCURhdHVtCQl2YWx1ZTsKKwlib29sCQlpc251bGw7CisJYm9vbAkJ ZnJlZXZhbCA9IGZhbHNlOworCisJLyogTWFrZSBzdXJlIHRoZSB0dXBsZSBpcyBmdWxseSBkZWNv bnN0cnVjdGVkICovCisJc2xvdF9nZXRhbGxhdHRycyhzbG90KTsKKworCXZhbHVlID0gc2xvdC0+ dHRzX3ZhbHVlc1tteVN0YXRlLT5zbG90X29mZnNldF07CisJaXNudWxsID0gc2xvdC0+dHRzX2lz bnVsbFtteVN0YXRlLT5zbG90X29mZnNldF07CisKKwlpZiAobXlTdGF0ZS0+dHlwbGVuID09IC0x ICYmICFpc251bGwgJiYgVkFSQVRUX0lTX0VYVEVSTkFMKERhdHVtR2V0UG9pbnRlcih2YWx1ZSkp KQorCXsKKwkJdmFsdWUgPSBQb2ludGVyR2V0RGF0dW0oaGVhcF90dXBsZV9mZXRjaF9hdHRyKChz dHJ1Y3QgdmFybGVuYSAqKQorCQkJCQkJCQkJCQkJCURhdHVtR2V0UG9pbnRlcih2YWx1ZSkpKTsK KwkJZnJlZXZhbCA9IHRydWU7CisJfQorCisJU2V0U2NoZW1hVmFyaWFibGUobXlTdGF0ZS0+dmFy aWQsIHZhbHVlLCBpc251bGwsIG15U3RhdGUtPnR5cGlkLCBteVN0YXRlLT50eXBtb2QpOworCisJ aWYgKGZyZWV2YWwpCisJCXBmcmVlKERhdHVtR2V0UG9pbnRlcih2YWx1ZSkpOworCisJcmV0dXJu IHRydWU7Cit9CisKKy8qCisgKiBDbGVhbiB1cCBhdCBlbmQgb2YgYW4gZXhlY3V0b3IgcnVuCisg Ki8KK3N0YXRpYyB2b2lkCitzdmFyaWFibGVTaHV0ZG93blJlY2VpdmVyKERlc3RSZWNlaXZlciAq c2VsZikKK3sKKwkvKiBEbyBub3RoaW5nICovCit9CisKKy8qCisgKiBEZXN0cm95IHJlY2VpdmVy IHdoZW4gZG9uZSB3aXRoIGl0CisgKi8KK3N0YXRpYyB2b2lkCitzdmFyaWFibGVEZXN0cm95UmVj ZWl2ZXIoRGVzdFJlY2VpdmVyICpzZWxmKQoreworCXBmcmVlKHNlbGYpOworfQorCisvKgorICog SW5pdGlhbGx5IGNyZWF0ZSBhIERlc3RSZWNlaXZlciBvYmplY3QuCisgKi8KK0Rlc3RSZWNlaXZl ciAqCitDcmVhdGVWYXJpYWJsZURlc3RSZWNlaXZlcih2b2lkKQoreworCXN2YXJpYWJsZVN0YXRl ICpzZWxmID0gKHN2YXJpYWJsZVN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKHN2YXJpYWJsZVN0YXRl KSk7CisKKwlzZWxmLT5wdWIucmVjZWl2ZVNsb3QgPSBzdmFyaWFibGVSZWNlaXZlU2xvdDsKKwlz ZWxmLT5wdWIuclN0YXJ0dXAgPSBzdmFyaWFibGVTdGFydHVwUmVjZWl2ZXI7CisJc2VsZi0+cHVi LnJTaHV0ZG93biA9IHN2YXJpYWJsZVNodXRkb3duUmVjZWl2ZXI7CisJc2VsZi0+cHViLnJEZXN0 cm95ID0gc3ZhcmlhYmxlRGVzdHJveVJlY2VpdmVyOworCXNlbGYtPnB1Yi5teWRlc3QgPSBEZXN0 VmFyaWFibGU7CisKKwkvKiBwcml2YXRlIGZpZWxkcyB3aWxsIGJlIHNldCBieSBTZXRWYXJpYWJs ZURlc3RSZWNlaXZlclBhcmFtcyAqLworCisJcmV0dXJuIChEZXN0UmVjZWl2ZXIgKikgc2VsZjsK K30KKworLyoKKyAqIFNldCBwYXJhbWV0ZXJzIGZvciBhIFZhcmlhYmxlRGVzdFJlY2VpdmVyCisg Ki8KK3ZvaWQKK1NldFZhcmlhYmxlRGVzdFJlY2VpdmVyUGFyYW1zKERlc3RSZWNlaXZlciAqc2Vs ZiwgT2lkIHZhcmlkKQoreworCXN2YXJpYWJsZVN0YXRlICpteVN0YXRlID0gKHN2YXJpYWJsZVN0 YXRlICopIHNlbGY7CisKKwlBc3NlcnQobXlTdGF0ZS0+cHViLm15ZGVzdCA9PSBEZXN0VmFyaWFi bGUpOworCUFzc2VydChPaWRJc1ZhbGlkKHZhcmlkKSk7CisKKwlteVN0YXRlLT52YXJpZCA9IHZh cmlkOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMv YmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCA3YzgyMjBjZjY1Li5mY2FhMmRiNTFhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtOTMsNiArOTMsNyBAQCBfY29weVBsYW5uZWRTdG10KGNv bnN0IFBsYW5uZWRTdG10ICpmcm9tKQogCUNPUFlfTk9ERV9GSUVMRChyZXN1bHRSZWxhdGlvbnMp OwogCUNPUFlfTk9ERV9GSUVMRChub25sZWFmUmVzdWx0UmVsYXRpb25zKTsKIAlDT1BZX05PREVf RklFTEQocm9vdFJlc3VsdFJlbGF0aW9ucyk7CisJQ09QWV9TQ0FMQVJfRklFTEQocmVzdWx0VmFy aWFibGUpOwogCUNPUFlfTk9ERV9GSUVMRChzdWJwbGFucyk7CiAJQ09QWV9CSVRNQVBTRVRfRklF TEQocmV3aW5kUGxhbklEcyk7CiAJQ09QWV9OT0RFX0ZJRUxEKHJvd01hcmtzKTsKQEAgLTMwMDAs NiArMzAwMSw3IEBAIF9jb3B5UXVlcnkoY29uc3QgUXVlcnkgKmZyb20pCiAJQ09QWV9TQ0FMQVJf RklFTEQoY2FuU2V0VGFnKTsKIAlDT1BZX05PREVfRklFTEQodXRpbGl0eVN0bXQpOwogCUNPUFlf U0NBTEFSX0ZJRUxEKHJlc3VsdFJlbGF0aW9uKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChyZXN1bHRW YXJpYWJsZSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaGFzQWdncyk7CiAJQ09QWV9TQ0FMQVJfRklF TEQoaGFzV2luZG93RnVuY3MpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGhhc1RhcmdldFNSRnMpOwpA QCAtMzExOCw2ICszMTIwLDE4IEBAIF9jb3B5U2VsZWN0U3RtdChjb25zdCBTZWxlY3RTdG10ICpm cm9tKQogCXJldHVybiBuZXdub2RlOwogfQogCitzdGF0aWMgTGV0U3RtdCAqCitfY29weUxldFN0 bXQoY29uc3QgTGV0U3RtdCAqZnJvbSkKK3sKKwlMZXRTdG10ICpuZXdub2RlID0gbWFrZU5vZGUo TGV0U3RtdCk7CisKKwlDT1BZX05PREVfRklFTEQodGFyZ2V0KTsKKwlDT1BZX05PREVfRklFTEQo c2VsZWN0U3RtdCk7CisJQ09QWV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4g bmV3bm9kZTsKK30KKwogc3RhdGljIFNldE9wZXJhdGlvblN0bXQgKgogX2NvcHlTZXRPcGVyYXRp b25TdG10KGNvbnN0IFNldE9wZXJhdGlvblN0bXQgKmZyb20pCiB7CkBAIC01MTY2LDYgKzUxODAs OSBAQCBjb3B5T2JqZWN0SW1wbChjb25zdCB2b2lkICpmcm9tKQogCQljYXNlIFRfU2VsZWN0U3Rt dDoKIAkJCXJldHZhbCA9IF9jb3B5U2VsZWN0U3RtdChmcm9tKTsKIAkJCWJyZWFrOworCQljYXNl IFRfTGV0U3RtdDoKKwkJCXJldHZhbCA9IF9jb3B5TGV0U3RtdChmcm9tKTsKKwkJCWJyZWFrOwog CQljYXNlIFRfU2V0T3BlcmF0aW9uU3RtdDoKIAkJCXJldHZhbCA9IF9jb3B5U2V0T3BlcmF0aW9u U3RtdChmcm9tKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1 YWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCmluZGV4IDM3OGYyZmFj YjguLjNlYzQ3MmUxOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKQEAgLTk0OSw2ICs5NDksNyBA QCBfZXF1YWxRdWVyeShjb25zdCBRdWVyeSAqYSwgY29uc3QgUXVlcnkgKmIpCiAJQ09NUEFSRV9T Q0FMQVJfRklFTEQoY2FuU2V0VGFnKTsKIAlDT01QQVJFX05PREVfRklFTEQodXRpbGl0eVN0bXQp OwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKHJlc3VsdFJlbGF0aW9uKTsKKwlDT01QQVJFX1NDQUxB Ul9GSUVMRChyZXN1bHRWYXJpYWJsZSk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaGFzQWdncyk7 CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaGFzV2luZG93RnVuY3MpOwogCUNPTVBBUkVfU0NBTEFS X0ZJRUxEKGhhc1RhcmdldFNSRnMpOwpAQCAtMTA1Nyw2ICsxMDU4LDE2IEBAIF9lcXVhbFNlbGVj dFN0bXQoY29uc3QgU2VsZWN0U3RtdCAqYSwgY29uc3QgU2VsZWN0U3RtdCAqYikKIAlyZXR1cm4g dHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wKK19lcXVhbExldFN0bXQoY29uc3QgTGV0U3RtdCAqYSwg Y29uc3QgTGV0U3RtdCAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQodGFyZ2V0KTsKKwlDT01Q QVJFX05PREVfRklFTEQoc2VsZWN0U3RtdCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworCiBzdGF0 aWMgYm9vbAogX2VxdWFsU2V0T3BlcmF0aW9uU3RtdChjb25zdCBTZXRPcGVyYXRpb25TdG10ICph LCBjb25zdCBTZXRPcGVyYXRpb25TdG10ICpiKQogewpAQCAtMzIyNSw2ICszMjM2LDkgQEAgZXF1 YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIAkJY2FzZSBUX1NlbGVjdFN0bXQ6CiAJ CQlyZXR2YWwgPSBfZXF1YWxTZWxlY3RTdG10KGEsIGIpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9M ZXRTdG10OgorCQkJcmV0dmFsID0gX2VxdWFsTGV0U3RtdChhLCBiKTsKKwkJCWJyZWFrOwogCQlj YXNlIFRfU2V0T3BlcmF0aW9uU3RtdDoKIAkJCXJldHZhbCA9IF9lcXVhbFNldE9wZXJhdGlvblN0 bXQoYSwgYik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1 bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDYyNjlmNDc0ZDIuLjQ2 NDA0ZmY5YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtMjc4LDYgKzI3OCw3IEBAIF9vdXRQbGFu bmVkU3RtdChTdHJpbmdJbmZvIHN0ciwgY29uc3QgUGxhbm5lZFN0bXQgKm5vZGUpCiAJV1JJVEVf Tk9ERV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCVdSSVRFX05PREVfRklFTEQobm9ubGVhZlJl c3VsdFJlbGF0aW9ucyk7CiAJV1JJVEVfTk9ERV9GSUVMRChyb290UmVzdWx0UmVsYXRpb25zKTsK KwlXUklURV9PSURfRklFTEQocmVzdWx0VmFyaWFibGUpOwogCVdSSVRFX05PREVfRklFTEQoc3Vi cGxhbnMpOwogCVdSSVRFX0JJVE1BUFNFVF9GSUVMRChyZXdpbmRQbGFuSURzKTsKIAlXUklURV9O T0RFX0ZJRUxEKHJvd01hcmtzKTsKQEAgLTI3OTMsNiArMjc5NCwxNiBAQCBfb3V0U2VsZWN0U3Rt dChTdHJpbmdJbmZvIHN0ciwgY29uc3QgU2VsZWN0U3RtdCAqbm9kZSkKIAlXUklURV9OT0RFX0ZJ RUxEKHJhcmcpOwogfQogCitzdGF0aWMgdm9pZAorX291dExldFN0bXQoU3RyaW5nSW5mbyBzdHIs IGNvbnN0IExldFN0bXQgKm5vZGUpCit7CisJV1JJVEVfTk9ERV9UWVBFKCJMRVQiKTsKKworCVdS SVRFX05PREVfRklFTEQodGFyZ2V0KTsKKwlXUklURV9OT0RFX0ZJRUxEKHNlbGVjdFN0bXQpOwor CVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKK30KKwogc3RhdGljIHZvaWQKIF9vdXRG dW5jQ2FsbChTdHJpbmdJbmZvIHN0ciwgY29uc3QgRnVuY0NhbGwgKm5vZGUpCiB7CkBAIC0yOTcx LDYgKzI5ODIsNyBAQCBfb3V0UXVlcnkoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFF1ZXJ5ICpub2Rl KQogCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0ciwgIiA6dXRpbGl0eVN0bXQgPD4iKTsKIAog CVdSSVRFX0lOVF9GSUVMRChyZXN1bHRSZWxhdGlvbik7CisJV1JJVEVfSU5UX0ZJRUxEKHJlc3Vs dFZhcmlhYmxlKTsKIAlXUklURV9CT09MX0ZJRUxEKGhhc0FnZ3MpOwogCVdSSVRFX0JPT0xfRklF TEQoaGFzV2luZG93RnVuY3MpOwogCVdSSVRFX0JPT0xfRklFTEQoaGFzVGFyZ2V0U1JGcyk7CkBA IC00MTkxLDYgKzQyMDMsOSBAQCBvdXROb2RlKFN0cmluZ0luZm8gc3RyLCBjb25zdCB2b2lkICpv YmopCiAJCQljYXNlIFRfU2VsZWN0U3RtdDoKIAkJCQlfb3V0U2VsZWN0U3RtdChzdHIsIG9iaik7 CiAJCQkJYnJlYWs7CisJCQljYXNlIFRfTGV0U3RtdDoKKwkJCQlfb3V0TGV0U3RtdChzdHIsIG9i aik7CisJCQkJYnJlYWs7CiAJCQljYXNlIFRfQ29sdW1uRGVmOgogCQkJCV9vdXRDb2x1bW5EZWYo c3RyLCBvYmopOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVh ZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCAzMjU0NTI0MjIz Li40NDU0MzI3NTQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwor KysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtMjQyLDYgKzI0Miw3IEBAIF9y ZWFkUXVlcnkodm9pZCkKIAlSRUFEX0JPT0xfRklFTEQoY2FuU2V0VGFnKTsKIAlSRUFEX05PREVf RklFTEQodXRpbGl0eVN0bXQpOwogCVJFQURfSU5UX0ZJRUxEKHJlc3VsdFJlbGF0aW9uKTsKKwlS RUFEX0lOVF9GSUVMRChyZXN1bHRWYXJpYWJsZSk7CiAJUkVBRF9CT09MX0ZJRUxEKGhhc0FnZ3Mp OwogCVJFQURfQk9PTF9GSUVMRChoYXNXaW5kb3dGdW5jcyk7CiAJUkVBRF9CT09MX0ZJRUxEKGhh c1RhcmdldFNSRnMpOwpAQCAtMTQ4NSw2ICsxNDg2LDcgQEAgX3JlYWRQbGFubmVkU3RtdCh2b2lk KQogCVJFQURfTk9ERV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCVJFQURfTk9ERV9GSUVMRChu b25sZWFmUmVzdWx0UmVsYXRpb25zKTsKIAlSRUFEX05PREVfRklFTEQocm9vdFJlc3VsdFJlbGF0 aW9ucyk7CisJUkVBRF9PSURfRklFTEQocmVzdWx0VmFyaWFibGUpOwogCVJFQURfTk9ERV9GSUVM RChzdWJwbGFucyk7CiAJUkVBRF9CSVRNQVBTRVRfRklFTEQocmV3aW5kUGxhbklEcyk7CiAJUkVB RF9OT0RFX0ZJRUxEKHJvd01hcmtzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpp bmRleCA5NmJmMDYwMWE4Li40NTczYTg4ZjM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCkBAIC0zMzUsNyArMzM1LDggQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2Us IGludCBjdXJzb3JPcHRpb25zLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKQogCSAqLwogCWlm ICgoY3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfUEFSQUxMRUxfT0spICE9IDAgJiYKIAkJSXNV bmRlclBvc3RtYXN0ZXIgJiYKLQkJcGFyc2UtPmNvbW1hbmRUeXBlID09IENNRF9TRUxFQ1QgJiYK KwkJKHBhcnNlLT5jb21tYW5kVHlwZSA9PSBDTURfU0VMRUNUIHx8CisJCSBwYXJzZS0+Y29tbWFu ZFR5cGUgPT0gQ01EX1BMQU5fVVRJTElUWSkgJiYKIAkJIXBhcnNlLT5oYXNNb2RpZnlpbmdDVEUg JiYKIAkJbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA+IDAgJiYKIAkJIUlzUGFyYWxs ZWxXb3JrZXIoKSAmJgpAQCAtMzUyLDYgKzM1Myw4IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkg KnBhcnNlLCBpbnQgY3Vyc29yT3B0aW9ucywgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKIAkJ Z2xvYi0+cGFyYWxsZWxNb2RlT0sgPSBmYWxzZTsKIAl9CiAKKworCiAJLyoKIAkgKiBnbG9iLT5w YXJhbGxlbE1vZGVOZWVkZWQgaXMgbm9ybWFsbHkgc2V0IHRvIGZhbHNlIGhlcmUgYW5kIGNoYW5n ZWQgdG8KIAkgKiB0cnVlIGR1cmluZyBwbGFuIGNyZWF0aW9uIGlmIGEgR2F0aGVyIG9yIEdhdGhl ciBNZXJnZSBwbGFuIGlzIGFjdHVhbGx5CkBAIC01MjEsNiArNTI0LDcgQEAgc3RhbmRhcmRfcGxh bm5lcihRdWVyeSAqcGFyc2UsIGludCBjdXJzb3JPcHRpb25zLCBQYXJhbUxpc3RJbmZvIGJvdW5k UGFyYW1zKQogCXJlc3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRpb25z OwogCXJlc3VsdC0+bm9ubGVhZlJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPm5vbmxlYWZSZXN1bHRS ZWxhdGlvbnM7CiAJcmVzdWx0LT5yb290UmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cm9vdFJlc3Vs dFJlbGF0aW9uczsKKwlyZXN1bHQtPnJlc3VsdFZhcmlhYmxlID0gcGFyc2UtPnJlc3VsdFZhcmlh YmxlOwogCXJlc3VsdC0+c3VicGxhbnMgPSBnbG9iLT5zdWJwbGFuczsKIAlyZXN1bHQtPnJld2lu ZFBsYW5JRHMgPSBnbG9iLT5yZXdpbmRQbGFuSURzOwogCXJlc3VsdC0+cm93TWFya3MgPSBnbG9i LT5maW5hbHJvd21hcmtzOwpAQCAtMjE3Myw3ICsyMTc3LDcgQEAgZ3JvdXBpbmdfcGxhbm5lcihQ bGFubmVySW5mbyAqcm9vdCwgYm9vbCBpbmhlcml0YW5jZV91cGRhdGUsCiAJCSAqIElmIHRoaXMg aXMgYW4gSU5TRVJUL1VQREFURS9ERUxFVEUsIGFuZCB3ZSdyZSBub3QgYmVpbmcgY2FsbGVkIGZy b20KIAkJICogaW5oZXJpdGFuY2VfcGxhbm5lciwgYWRkIHRoZSBNb2RpZnlUYWJsZSBub2RlLgog CQkgKi8KLQkJaWYgKHBhcnNlLT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUICYmICFpbmhlcml0 YW5jZV91cGRhdGUpCisJCWlmIChwYXJzZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVDVCAmJiBw YXJzZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1BMQU5fVVRJTElUWSAmJiAhaW5oZXJpdGFuY2VfdXBk YXRlKQogCQl7CiAJCQlMaXN0CSAgICp3aXRoQ2hlY2tPcHRpb25MaXN0czsKIAkJCUxpc3QJICAg KnJldHVybmluZ0xpc3RzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAv cHJlcHRsaXN0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYwppbmRl eCA4NjAzZmVlZjJiLi4yOTIzZTNmY2M3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcHJlcC9wcmVwdGxpc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVw dGxpc3QuYwpAQCAtNzEsNiArNzEsNyBAQCBwcmVwcm9jZXNzX3RhcmdldGxpc3QoUGxhbm5lcklu Zm8gKnJvb3QpCiB7CiAJUXVlcnkJICAgKnBhcnNlID0gcm9vdC0+cGFyc2U7CiAJaW50CQkJcmVz dWx0X3JlbGF0aW9uID0gcGFyc2UtPnJlc3VsdFJlbGF0aW9uOworCWludAkJCXJlc3VsdF92YXJp YWJsZSA9IHBhcnNlLT5yZXN1bHRWYXJpYWJsZTsKIAlMaXN0CSAgICpyYW5nZV90YWJsZSA9IHBh cnNlLT5ydGFibGU7CiAJQ21kVHlwZQkJY29tbWFuZF90eXBlID0gcGFyc2UtPmNvbW1hbmRUeXBl OwogCVJhbmdlVGJsRW50cnkgKnRhcmdldF9ydGUgPSBOVUxMOwpAQCAtOTYsNiArOTcsMTAgQEAg cHJlcHJvY2Vzc190YXJnZXRsaXN0KFBsYW5uZXJJbmZvICpyb290KQogCiAJCXRhcmdldF9yZWxh dGlvbiA9IGhlYXBfb3Blbih0YXJnZXRfcnRlLT5yZWxpZCwgTm9Mb2NrKTsKIAl9CisJZWxzZSBp ZiAocmVzdWx0X3ZhcmlhYmxlKQorCXsKKwkJQXNzZXJ0KGNvbW1hbmRfdHlwZSA9PSBDTURfUExB Tl9VVElMSVRZKTsKKwl9CiAJZWxzZQogCQlBc3NlcnQoY29tbWFuZF90eXBlID09IENNRF9TRUxF Q1QpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKaW5kZXggYTA0YWQ2ZTk5ZS4u OGYwMjMyMjVjNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNl cy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwpAQCAtMTI1NCw3 ICsxMjU0LDggQEAgbWF4X3BhcmFsbGVsX2hhemFyZF93YWxrZXIoTm9kZSAqbm9kZSwgbWF4X3Bh cmFsbGVsX2hhemFyZF9jb250ZXh0ICpjb250ZXh0KQogCXsKIAkJUGFyYW0JICAgKnBhcmFtID0g KFBhcmFtICopIG5vZGU7CiAKLQkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJO KQorCQlpZiAocGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9FWFRFUk4gfHwKKwkJCXBhcmFtLT5w YXJhbWtpbmQgPT0gUEFSQU1fVkFSSUFCTEUpCiAJCQlyZXR1cm4gZmFsc2U7CiAKIAkJaWYgKHBh cmFtLT5wYXJhbWtpbmQgIT0gUEFSQU1fRVhFQyB8fApAQCAtNDc5OSw3ICs0ODAwLDcgQEAgc3Vi c3RpdHV0ZV9hY3R1YWxfcGFyYW1ldGVyc19tdXRhdG9yKE5vZGUgKm5vZGUsCiB7CiAJaWYgKG5v ZGUgPT0gTlVMTCkKIAkJcmV0dXJuIE5VTEw7Ci0JaWYgKElzQShub2RlLCBQYXJhbSkpCisJaWYg KElzQShub2RlLCBQYXJhbSkgJiYgKChQYXJhbSAqKSBub2RlKS0+cGFyYW1raW5kICE9IFBBUkFN X1ZBUklBQkxFKQogCXsKIAkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5vZGU7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCA4MzY5ZTNhZDYyLi5mYzBjZjM0Yzdk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC0xMjcyLDcgKzEyNzIsNyBA QCBnZXRfcmVsYXRpb25fY29uc3RyYWludHMoUGxhbm5lckluZm8gKnJvb3QsCiAJICogZGVzY3Jp cHRvciwgaW5zdGVhZCBvZiBjb25zdHJhaW50IGV4Y2x1c2lvbiB3aGljaCBpcyBkcml2ZW4gYnkg dGhlCiAJICogaW5kaXZpZHVhbCBwYXJ0aXRpb24ncyBwYXJ0aXRpb24gY29uc3RyYWludC4KIAkg Ki8KLQlpZiAoZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nICYmIHJvb3QtPnBhcnNlLT5jb21tYW5k VHlwZSAhPSBDTURfU0VMRUNUKQorCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgJiYgcm9v dC0+cGFyc2UtPmNvbW1hbmRUeXBlICE9IENNRF9TRUxFQ1QgJiYgcm9vdC0+cGFyc2UtPmNvbW1h bmRUeXBlICE9IENNRF9QTEFOX1VUSUxJVFkpCiAJewogCQlMaXN0CSAgICpwY3F1YWwgPSBSZWxh dGlvbkdldFBhcnRpdGlvblF1YWwocmVsYXRpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCBj NjAxYjZkNDBkLi44YTcyNGZlM2JmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTI1LDcgKzI1LDEw IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvc2NoZW1hdmFyaWFibGUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJu b2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKQEAgLTQ0LDYg KzQ3LDggQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdGFyZ2V0LmgiCiAjaW5jbHVkZSAicGFy c2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCisjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy9yZWwuaCIKIAogCkBAIC03OCw2ICs4Myw4IEBAIHN0YXRpYyBRdWVyeSAq dHJhbnNmb3JtQ3JlYXRlVGFibGVBc1N0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICAg Q3JlYXRlVGFibGVBc1N0bXQgKnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1DYWxsU3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJICBDYWxsU3RtdCAqc3RtdCk7CitzdGF0aWMgUXVl cnkgKnRyYW5zZm9ybUxldFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCSAgTGV0U3RtdCAq c3RtdCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Mb2NraW5nQ2xhdXNlKFBhcnNlU3RhdGUgKnBz dGF0ZSwgUXVlcnkgKnFyeSwKIAkJCQkJICAgTG9ja2luZ0NsYXVzZSAqbGMsIGJvb2wgcHVzaGVk RG93bik7CiAjaWZkZWYgUkFXX0VYUFJFU1NJT05fQ09WRVJBR0VfVEVTVApAQCAtMjY3LDYgKzI3 NCw3IEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUp CiAJCWNhc2UgVF9JbnNlcnRTdG10OgogCQljYXNlIFRfVXBkYXRlU3RtdDoKIAkJY2FzZSBUX0Rl bGV0ZVN0bXQ6CisJCWNhc2UgVF9MZXRTdG10OgogCQkJKHZvaWQpIHRlc3RfcmF3X2V4cHJlc3Np b25fY292ZXJhZ2UocGFyc2VUcmVlLCBOVUxMKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAt MzI3LDYgKzMzNSwxMSBAQCB0cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq cGFyc2VUcmVlKQogCQkJCQkJCQkJICAgKENhbGxTdG10ICopIHBhcnNlVHJlZSk7CiAJCQlicmVh azsKIAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUxldFN0bXQocHN0 YXRlLAorCQkJCQkJCQkJICAoTGV0U3RtdCAqKSBwYXJzZVRyZWUpOworCQkJYnJlYWs7CisKIAkJ ZGVmYXVsdDoKIAogCQkJLyoKQEAgLTM2Nyw2ICszODAsNyBAQCBhbmFseXplX3JlcXVpcmVzX3Nu YXBzaG90KFJhd1N0bXQgKnBhcnNlVHJlZSkKIAkJY2FzZSBUX0RlbGV0ZVN0bXQ6CiAJCWNhc2Ug VF9VcGRhdGVTdG10OgogCQljYXNlIFRfU2VsZWN0U3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6CiAJ CQlyZXN1bHQgPSB0cnVlOwogCQkJYnJlYWs7CiAKQEAgLTE1NjcsNiArMTU4MSwyMDQgQEAgdHJh bnNmb3JtVmFsdWVzQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCkK IAlyZXR1cm4gcXJ5OwogfQogCisvKgorICogdHJhbnNmb3JtTGV0U3RtdCAtCisgKgkgIHRyYW5z Zm9ybSBhbiBMZXQgU3RhdGVtZW50CisgKi8KK3N0YXRpYyBRdWVyeSAqCit0cmFuc2Zvcm1MZXRT dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGV0U3RtdCAqc3RtdCkKK3sKKwlRdWVyeQkgICAqcXJ5 ID0gbWFrZU5vZGUoUXVlcnkpOworCUxpc3QJICAgKmV4cHJMaXN0ID0gTklMOworCUxpc3QJICAg KmV4cHJMaXN0Q29lciA9IE5JTDsKKwlMaXN0CSAgICppbmRpcmVjdGlvbiA9IE5JTDsKKwlMaXN0 Q2VsbCAgICpsYzsKKwlRdWVyeQkgICAqc2VsZWN0UXVlcnk7CisJaW50CQkJaSA9IDA7CisKKwlP aWQJCQl2YXJpZDsKKworCVBhcnNlRXhwcktpbmQgc3ZfZXhwcl9raW5kOworCWNoYXIJICAgKmF0 dHJuYW1lID0gTlVMTDsKKwlib29sCQlub3RfdW5pcXVlOworCWJvb2wJCWlzX3Jvd3R5cGU7CisJ T2lkCQkJdHlwaWQ7CisJaW50MzIJCXR5cG1vZDsKKwlPaWQJCQljb2xsaWQ7CisKKwlBY2xSZXN1 bHQJYWNscmVzdWx0OworCUxpc3QJICAgKm5hbWVzID0gTlVMTDsKKwlpbnQJCQlpbmRpcmVjdGlv bl9zdGFydDsKKworCXN2X2V4cHJfa2luZCA9IHBzdGF0ZS0+cF9leHByX2tpbmQ7CisJcHN0YXRl LT5wX2V4cHJfa2luZCA9IEVYUFJfS0lORF9MRVQ7CisKKwkvKiBUaGVyZSBjYW4ndCBiZSBhbnkg b3V0ZXIgV0lUSCB0byB3b3JyeSBhYm91dCAqLworCUFzc2VydChwc3RhdGUtPnBfY3RlbmFtZXNw YWNlID09IE5JTCk7CisKKwkvKiBFeGVjIHRoaXMgY29tbWFuZCBhcyB1dGlsaXR5ICovCisJcXJ5 LT5jb21tYW5kVHlwZSA9IENNRF9QTEFOX1VUSUxJVFk7CisJcXJ5LT51dGlsaXR5U3RtdCA9IChO b2RlICopIHN0bXQ7CisKKwluYW1lcyA9IE5hbWVzRnJvbUxpc3Qoc3RtdC0+dGFyZ2V0KTsKKwor CXZhcmlkID0gaWRlbnRpZnlfdmFyaWFibGUobmFtZXMsICZhdHRybmFtZSwgJm5vdF91bmlxdWUp OworCWlmIChub3RfdW5pcXVlKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfQU1CSUdVT1VTX1BBUkFNRVRFUiksCisJCQkJIGVycm1zZygidGFyZ2V0IFwiJXNcIiBvZiBM RVQgY29tbWFuZCBpcyBhbWJpZ3VvdXMiLAorCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhuYW1lcykp LAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzdG10LT5sb2NhdGlvbikpKTsKKwor CWlmICghT2lkSXNWYWxpZCh2YXJpZCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkJIGVycm1zZygic2NoZW1hIHZhcmlh YmxlIFwiJXNcIiBkb2Vzbid0IGV4aXN0cyIsCisJCQkJCQkJCU5hbWVMaXN0VG9TdHJpbmcobmFt ZXMpKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzdG10LT5sb2NhdGlvbikp KTsKKworCXFyeS0+cmVzdWx0VmFyaWFibGUgPSB2YXJpZDsKKworCWdldF9zY2hlbWFfdmFyaWFi bGVfdHlwZV90eXBtb2RfY29sbGlkKHZhcmlkLCAmdHlwaWQsICZ0eXBtb2QsICZjb2xsaWQpOwor CisJaXNfcm93dHlwZSA9IHR5cGVfaXNfcm93dHlwZSh0eXBpZCk7CisKKwlpZiAoYXR0cm5hbWUg JiYgIWlzX3Jvd3R5cGUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9X Uk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygidGFyZ2V0IHZhcmlhYmxlIFwiJXNcIiBp cyBub3Qgcm93IHR5cGUiLAorCQkJCQkJc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKHZhcmlkKSks CisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisKKwlh Y2xyZXN1bHQgPSBwZ192YXJpYWJsZV9hY2xjaGVjayh2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9X UklURSk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJYWNsY2hlY2tfZXJyb3Io YWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUsIE5hbWVMaXN0VG9TdHJpbmcobmFtZXMpKTsKKwor CXNlbGVjdFF1ZXJ5ID0gdHJhbnNmb3JtU3RtdChwc3RhdGUsIHN0bXQtPnNlbGVjdFN0bXQpOwor CisJLyogVGhlIGdyYW1tYXIgc2hvdWxkIGhhdmUgcHJvZHVjZWQgYSBTRUxFQ1QgKi8KKwlpZiAo IUlzQShzZWxlY3RRdWVyeSwgUXVlcnkpIHx8CisJCXNlbGVjdFF1ZXJ5LT5jb21tYW5kVHlwZSAh PSBDTURfU0VMRUNUKQorCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBub24tU0VMRUNUIGNvbW1h bmQgaW4gTEVUIC4uLiBTRUxFQ1QiKTsKKworCS8qLS0tLS0tLS0tLQorCSAqIEdlbmVyYXRlIGFu IGV4cHJlc3Npb24gbGlzdCBmb3IgdGhlIExFVCB0aGF0IHNlbGVjdHMgYWxsIHRoZQorCSAqIG5v bi1yZXNqdW5rIGNvbHVtbnMgZnJvbSB0aGUgc3VicXVlcnkuCisJICotLS0tLS0tLS0tCisJICov CisJZXhwckxpc3QgPSBOSUw7CisJZm9yZWFjaChsYywgc2VsZWN0UXVlcnktPnRhcmdldExpc3Qp CisJeworCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChsYyk7CisK KwkJaWYgKHRsZS0+cmVzanVuaykKKwkJCWNvbnRpbnVlOworCisJCWV4cHJMaXN0ID0gbGFwcGVu ZChleHByTGlzdCwgdGxlLT5leHByKTsKKwl9CisKKwkvKgorCSAqIEJlY2F1c2UgZG9lc24ndCBz dXBwb3J0IHBhdHRlcm4gbWF0Y2hpbmcsIGRvbid0IGFsbG93IG11bHRpY29sdW1uIHJlc3VsdAor CSAqLworCWlmIChsaXN0X2xlbmd0aChleHByTGlzdCkgIT0gMSkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiZXhwcmVz c2lvbiBpcyBub3Qgc2NhbGFyIHZhbHVlIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsCisJCQkJCQkJCQlleHByTG9jYXRpb24oKE5vZGUgKikgZXhwckxpc3QpKSkpOworCisJaW5k aXJlY3Rpb25fc3RhcnQgPSBsaXN0X2xlbmd0aChuYW1lcykgLSAoYXR0cm5hbWUgPyAxIDogMCk7 CisJaW5kaXJlY3Rpb24gPSBsaXN0X2NvcHlfdGFpbChzdG10LT50YXJnZXQsIGluZGlyZWN0aW9u X3N0YXJ0KTsKKworCWV4cHJMaXN0Q29lciA9IE5JTDsKKwlmb3JlYWNoKGxjLCBleHByTGlzdCkK Kwl7CisJCU5vZGUJICAgKm9yaWdfZXhwciA9IChOb2RlKikgbGZpcnN0KGxjKTsKKwkJT2lkCQkJ ZXhwcnR5cGlkID0gZXhwclR5cGUoKE5vZGUgKikgb3JpZ19leHByKTsKKwkJUGFyYW0gKnBhcmFt ID0gbWFrZU5vZGUoUGFyYW0pOworCQlFeHByCSAgICpleHByID0gTlVMTDsKKworCQlwYXJhbS0+ cGFyYW1raW5kID0gUEFSQU1fVkFSSUFCTEU7CisJCXBhcmFtLT5wYXJhbWlkID0gdmFyaWQ7CisJ CXBhcmFtLT5wYXJhbXR5cGUgPSB0eXBpZDsKKwkJcGFyYW0tPnBhcmFtdHlwbW9kID0gdHlwbW9k OworCisJCWlmIChpbmRpcmVjdGlvbiAhPSBOVUxMKQorCQl7CisJCQlib29sCQl0YXJnZXRJc0Fy cmF5OworCQkJY2hhcgkgICAgKnRhcmdldE5hbWU7CisKKwkJCXRhcmdldE5hbWUgPSBhdHRybmFt ZSAhPSBOVUxMID8gYXR0cm5hbWUgOiBnZXRfc2NoZW1hX3ZhcmlhYmxlX25hbWUodmFyaWQpOwor CQkJdGFyZ2V0SXNBcnJheSA9IE9pZElzVmFsaWQoZ2V0X2VsZW1lbnRfdHlwZSh0eXBpZCkpOwor CisJCQlleHByID0gKEV4cHIgKikKKwkJCQkJdHJhbnNmb3JtQXNzaWdubWVudEluZGlyZWN0aW9u KHBzdGF0ZSwKKwkJCQkJCQkJCQkJCShOb2RlICopIHBhcmFtLAorCQkJCQkJCQkJCQkJdGFyZ2V0 TmFtZSwKKwkJCQkJCQkJCQkJCXRhcmdldElzQXJyYXksCisJCQkJCQkJCQkJCQl0eXBpZCwKKwkJ CQkJCQkJCQkJCXR5cG1vZCwKKwkJCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJCQls aXN0X2hlYWQoaW5kaXJlY3Rpb24pLAorCQkJCQkJCQkJCQkJKE5vZGUgKikgb3JpZ19leHByLAor CQkJCQkJCQkJCQkJc3RtdC0+bG9jYXRpb24pOworCQl9CisJCWVsc2UKKwkJCWV4cHIgPSAoRXhw ciAqKQorCQkJCQljb2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0YXRlLAorCQkJCQkJCQkJCQkoTm9k ZSAqKSBvcmlnX2V4cHIsCisJCQkJCQkJCQkJCWV4cHJ0eXBpZCwKKwkJCQkJCQkJCQkJdHlwaWQs IHR5cG1vZCwKKwkJCQkJCQkJCQkJQ09FUkNJT05fQVNTSUdOTUVOVCwKKwkJCQkJCQkJCQkJQ09F UkNFX0lNUExJQ0lUX0NBU1QsCisJCQkJCQkJCQkJCXN0bXQtPmxvY2F0aW9uKTsKKworCQlpZiAo ZXhwciA9PSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9E QVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInZhcmlhYmxlIFwiJXNcIiBpcyBvZiB0 eXBlICVzLCIKKwkJCQkJCQkgICIgYnV0IGV4cHJlc3Npb24gaXMgb2YgdHlwZSAlcyIsCisJCQkJ CQlzY2hlbWFfdmFyaWFibGVfZ2V0X25hbWUodmFyaWQpLAorCQkJCQkJCWZvcm1hdF90eXBlX2Jl KHR5cGlkKSwKKwkJCQkJCSAgZm9ybWF0X3R5cGVfYmUoZXhwcnR5cGlkKSksCisJCQkJIGVycmhp bnQoIllvdSB3aWxsIG5lZWQgdG8gcmV3cml0ZSBvciBjYXN0IHRoZSBleHByZXNzaW9uLiIpLAor CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikgb3Jp Z19leHByKSkpKTsKKworCQlleHByTGlzdENvZXIgPSBsYXBwZW5kKGV4cHJMaXN0Q29lciwgZXhw cik7CisJfQorCisJLyoKKwkgKiBHZW5lcmF0ZSBxdWVyeSdzIHRhcmdldCBsaXN0IHVzaW5nIHRo ZSBjb21wdXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zLgorCSAqIEFsc28sIG1hcmsgYWxsIHRoZSB0 YXJnZXQgY29sdW1ucyBhcyBuZWVkaW5nIGluc2VydCBwZXJtaXNzaW9ucy4KKwkgKi8KKwlxcnkt PnRhcmdldExpc3QgPSBOSUw7CisJZm9yZWFjaChsYywgZXhwckxpc3RDb2VyKQorCXsKKwkJRXhw cgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisJCVRhcmdldEVudHJ5ICp0bGU7CisK KwkJdGxlID0gbWFrZVRhcmdldEVudHJ5KGV4cHIsCisJCQkJCQkJICBpICsgMSwKKwkJCQkJCQkg IEZpZ3VyZUNvbG5hbWUoKE5vZGUgKilleHByKSwKKwkJCQkJCQkgIGZhbHNlKTsKKwkJcXJ5LT50 YXJnZXRMaXN0ID0gbGFwcGVuZChxcnktPnRhcmdldExpc3QsIHRsZSk7CisJfQorCisJLyogZG9u ZSBidWlsZGluZyB0aGUgcmFuZ2UgdGFibGUgYW5kIGpvaW50cmVlICovCisJcXJ5LT5ydGFibGUg PSBwc3RhdGUtPnBfcnRhYmxlOworCXFyeS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRl LT5wX2pvaW5saXN0LCBOVUxMKTsKKworCXFyeS0+aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9o YXNUYXJnZXRTUkZzOworCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7 CisKKwlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7CisKKwlwc3RhdGUtPnBf ZXhwcl9raW5kID0gc3ZfZXhwcl9raW5kOworCisJcmV0dXJuIHFyeTsKK30KKworCiAvKgogICog dHJhbnNmb3JtU2V0T3BlcmF0aW9uU3RtdCAtCiAgKgkgIHRyYW5zZm9ybXMgYSBzZXQtb3BlcmF0 aW9ucyB0cmVlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA4N2Y1ZTk1ODI3Li40MzEwYzI4NTM4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKQEAgLTI1Nyw4ICsyNTcsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlDb25z dHJhaW50c1NldFN0bXQgQ29weVN0bXQgQ3JlYXRlQXNTdG10IENyZWF0ZUNhc3RTdG10CiAJCUNy ZWF0ZURvbWFpblN0bXQgQ3JlYXRlRXh0ZW5zaW9uU3RtdCBDcmVhdGVHcm91cFN0bXQgQ3JlYXRl T3BDbGFzc1N0bXQKIAkJQ3JlYXRlT3BGYW1pbHlTdG10IEFsdGVyT3BGYW1pbHlTdG10IENyZWF0 ZVBMYW5nU3RtdAotCQlDcmVhdGVTY2hlbWFTdG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBD cmVhdGVTdGF0c1N0bXQgQ3JlYXRlVGFibGVTcGFjZVN0bXQKLQkJQ3JlYXRlRmR3U3RtdCBDcmVh dGVGb3JlaWduU2VydmVyU3RtdCBDcmVhdGVGb3JlaWduVGFibGVTdG10CisJCUNyZWF0ZVNjaGVt YVN0bXQgQ3JlYXRlU2NoZW1hVmFyU3RtdCBDcmVhdGVTZXFTdG10IENyZWF0ZVN0bXQgQ3JlYXRl U3RhdHNTdG10CisJCUNyZWF0ZVRhYmxlU3BhY2VTdG10IENyZWF0ZUZkd1N0bXQgQ3JlYXRlRm9y ZWlnblNlcnZlclN0bXQgQ3JlYXRlRm9yZWlnblRhYmxlU3RtdAogCQlDcmVhdGVBc3NlcnRTdG10 IENyZWF0ZVRyYW5zZm9ybVN0bXQgQ3JlYXRlVHJpZ1N0bXQgQ3JlYXRlRXZlbnRUcmlnU3RtdAog CQlDcmVhdGVVc2VyU3RtdCBDcmVhdGVVc2VyTWFwcGluZ1N0bXQgQ3JlYXRlUm9sZVN0bXQgQ3Jl YXRlUG9saWN5U3RtdAogCQlDcmVhdGVkYlN0bXQgRGVjbGFyZUN1cnNvclN0bXQgRGVmaW5lU3Rt dCBEZWxldGVTdG10IERpc2NhcmRTdG10IERvU3RtdApAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRp YyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlh c2VzLCBOb2RlICpxdWVyeSk7CiAJCURyb3BUcmFuc2Zvcm1TdG10CiAJCURyb3BVc2VyTWFwcGlu Z1N0bXQgRXhwbGFpblN0bXQgRmV0Y2hTdG10CiAJCUdyYW50U3RtdCBHcmFudFJvbGVTdG10IElt cG9ydEZvcmVpZ25TY2hlbWFTdG10IEluZGV4U3RtdCBJbnNlcnRTdG10Ci0JCUxpc3RlblN0bXQg TG9hZFN0bXQgTG9ja1N0bXQgTm90aWZ5U3RtdCBFeHBsYWluYWJsZVN0bXQgUHJlcGFyYWJsZVN0 bXQKKwkJTGV0U3RtdCBMaXN0ZW5TdG10IExvYWRTdG10IExvY2tTdG10IE5vdGlmeVN0bXQgRXhw bGFpbmFibGVTdG10IFByZXBhcmFibGVTdG10CiAJCUNyZWF0ZUZ1bmN0aW9uU3RtdCBBbHRlckZ1 bmN0aW9uU3RtdCBSZWluZGV4U3RtdCBSZW1vdmVBZ2dyU3RtdAogCQlSZW1vdmVGdW5jU3RtdCBS ZW1vdmVPcGVyU3RtdCBSZW5hbWVTdG10IFJldm9rZVN0bXQgUmV2b2tlUm9sZVN0bXQKIAkJUnVs ZUFjdGlvblN0bXQgUnVsZUFjdGlvblN0bXRPckVtcHR5IFJ1bGVTdG10CkBAIC00MDAsNiArNDAw LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQlUcmlnZ2VyVHJhbnNpdGlvbnMgVHJp Z2dlclJlZmVyZW5jaW5nCiAJCQkJcHVibGljYXRpb25fbmFtZV9saXN0CiAJCQkJdmFjdXVtX3Jl bGF0aW9uX2xpc3Qgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0CisJCQkJbGV0X3RhcmdldAogCiAl dHlwZSA8bGlzdD4JZ3JvdXBfYnlfbGlzdAogJXR5cGUgPG5vZGU+CWdyb3VwX2J5X2l0ZW0gZW1w dHlfZ3JvdXBpbmdfc2V0IHJvbGx1cF9jbGF1c2UgY3ViZV9jbGF1c2UKQEAgLTU4NCw2ICs1ODUs NyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwg TGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CQlwYXJ0Ym91bmRfZGF0 dW0gUGFydGl0aW9uUmFuZ2VEYXR1bQogJXR5cGUgPGxpc3Q+CQloYXNoX3BhcnRib3VuZCBwYXJ0 Ym91bmRfZGF0dW1fbGlzdCByYW5nZV9kYXR1bV9saXN0CiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9w YXJ0Ym91bmRfZWxlbQorJXR5cGUgPG5vZGU+CQlvcHRTY2hlbWFWYXJEZWZFeHByCiAKIC8qCiAg KiBOb24ta2V5d29yZCB0b2tlbiB0eXBlcy4gIFRoZXNlIGFyZSBoYXJkLXdpcmVkIGludG8gdGhl ICJmbGV4IiBsZXhlci4KQEAgLTY0OSw3ICs2NTEsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogCUtFWQogCiAJTEFCRUwgTEFOR1VBR0UgTEFSR0VfUCBMQVNUX1AgTEFURVJBTF9QCi0JTEVB RElORyBMRUFLUFJPT0YgTEVBU1QgTEVGVCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExP Q0FMCisJTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVGVCBMRVQgTEVWRUwgTElLRSBMSU1JVCBM SVNURU4gTE9BRCBMT0NBTAogCUxPQ0FMVElNRSBMT0NBTFRJTUVTVEFNUCBMT0NBVElPTiBMT0NL X1AgTE9DS0VEIExPR0dFRAogCiAJTUFQUElORyBNQVRDSCBNQVRFUklBTElaRUQgTUFYVkFMVUUg TUVUSE9EIE1JTlVURV9QIE1JTlZBTFVFIE1PREUgTU9OVEhfUCBNT1ZFCkBAIC02ODcsOCArNjg5 LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlVTkJPVU5ERUQgVU5DT01NSVRURUQgVU5F TkNSWVBURUQgVU5JT04gVU5JUVVFIFVOS05PV04gVU5MSVNURU4gVU5MT0dHRUQKIAlVTlRJTCBV UERBVEUgVVNFUiBVU0lORwogCi0JVkFDVVVNIFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBWQUxV RV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBRElDIFZBUllJTkcKLQlWRVJCT1NFIFZFUlNJT05fUCBW SUVXIFZJRVdTIFZPTEFUSUxFCisJVkFDVVVNIFZBTElEIFZBTElEQVRFIFZBTElEQVRPUiBWQUxV RV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBQkxFIFZBUklBQkxFUworCVZBUklBRElDIFZBUllJTkcg VkVSQk9TRSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElMRQogCiAJV0hFTiBXSEVSRSBXSElU RVNQQUNFX1AgV0lORE9XIFdJVEggV0lUSElOIFdJVEhPVVQgV09SSyBXUkFQUEVSIFdSSVRFCiAK QEAgLTg3OCw2ICs4ODAsNyBAQCBzdG10IDoKIAkJCXwgQ3JlYXRlUG9saWN5U3RtdAogCQkJfCBD cmVhdGVQTGFuZ1N0bXQKIAkJCXwgQ3JlYXRlU2NoZW1hU3RtdAorCQkJfCBDcmVhdGVTY2hlbWFW YXJTdG10CiAJCQl8IENyZWF0ZVNlcVN0bXQKIAkJCXwgQ3JlYXRlU3RtdAogCQkJfCBDcmVhdGVT dWJzY3JpcHRpb25TdG10CkBAIC05MTcsNiArOTIwLDcgQEAgc3RtdCA6CiAJCQl8IEltcG9ydEZv cmVpZ25TY2hlbWFTdG10CiAJCQl8IEluZGV4U3RtdAogCQkJfCBJbnNlcnRTdG10CisJCQl8IExl dFN0bXQKIAkJCXwgTGlzdGVuU3RtdAogCQkJfCBSZWZyZXNoTWF0Vmlld1N0bXQKIAkJCXwgTG9h ZFN0bXQKQEAgLTE4MDgsNyArMTgxMiwxMiBAQCBEaXNjYXJkU3RtdDoKIAkJCQkJbi0+dGFyZ2V0 ID0gRElTQ0FSRF9TRVFVRU5DRVM7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0KKwkJ CXwgRElTQ0FSRCBWQVJJQUJMRVMKKwkJCQl7CisJCQkJCURpc2NhcmRTdG10ICpuID0gbWFrZU5v ZGUoRGlzY2FyZFN0bXQpOworCQkJCQluLT50YXJnZXQgPSBESVNDQVJEX1ZBUklBQkxFUzsKKwkJ CQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJOwogCiAKQEAgLTQ0NzksNiArNDQ4OCw0NCBA QCBjcmVhdGVfZXh0ZW5zaW9uX29wdF9pdGVtOgogCQkJCX0KIAkJOwogCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqCisgKgkJUVVFUlkgOgorICoJCQkJQ1JFQVRFIFZBUklBQkxFIHZhcm5hbWUg W0FTXSB0eXBlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitDcmVhdGVTY2hlbWFWYXJT dG10OgorCQkJQ1JFQVRFIE9wdFRlbXAgVkFSSUFCTEUgcXVhbGlmaWVkX25hbWUgb3B0X2FzIFR5 cGVuYW1lIG9wdF9jb2xsYXRlX2NsYXVzZSBvcHRTY2hlbWFWYXJEZWZFeHByCisJCQkJeworCQkJ CQlDcmVhdGVTY2hlbWFWYXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hVmFyU3RtdCk7 CisJCQkJCSQ0LT5yZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJCQluLT52YXJpYWJsZSA9ICQ0Owor CQkJCQluLT50eXBlTmFtZSA9ICQ2OworCQkJCQluLT5jb2xsQ2xhdXNlID0gJDc7CisJCQkJCW4t PmRlZmV4cHIgPSAkODsKKwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOworCQkJCQkkJCA9 IChOb2RlICopIG47CisJCQkJfQorCQkJfCBDUkVBVEUgT3B0VGVtcCBWQVJJQUJMRSBJRl9QIE5P VCBFWElTVFMgcXVhbGlmaWVkX25hbWUgb3B0X2FzIFR5cGVuYW1lIG9wdF9jb2xsYXRlX2NsYXVz ZSBvcHRTY2hlbWFWYXJEZWZFeHByCisJCQkJeworCQkJCQlDcmVhdGVTY2hlbWFWYXJTdG10ICpu ID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hVmFyU3RtdCk7CisJCQkJCSQ3LT5yZWxwZXJzaXN0ZW5j ZSA9ICQyOworCQkJCQluLT52YXJpYWJsZSA9ICQ3OworCQkJCQluLT50eXBlTmFtZSA9ICQ5Owor CQkJCQluLT5jb2xsQ2xhdXNlID0gJDEwOworCQkJCQluLT5kZWZleHByID0gJDExOworCQkJCQlu LT5pZl9ub3RfZXhpc3RzID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJ OworCitvcHRTY2hlbWFWYXJEZWZFeHByOiBERUZBVUxUIGJfZXhwcgkJCQkJCQl7ICQkID0gJDI7 IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKKworCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBBTFRFUiBFWFRFTlNJT04gbmFtZSBVUERBVEUg WyBUTyB2ZXJzaW9uIF0KQEAgLTYzMzUsNiArNjM4Miw3IEBAIGRyb3BfdHlwZV9hbnlfbmFtZToK IAkJCXwgVEVYVF9QIFNFQVJDSCBESUNUSU9OQVJZCQkJCXsgJCQgPSBPQkpFQ1RfVFNESUNUSU9O QVJZOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0ggVEVNUExBVEUJCQkJeyAkJCA9IE9CSkVDVF9UU1RF TVBMQVRFOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0ggQ09ORklHVVJBVElPTgkJCXsgJCQgPSBPQkpF Q1RfVFNDT05GSUdVUkFUSU9OOyB9CisJCQl8IFZBUklBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNU X1ZBUklBQkxFOyB9CiAJCTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1lX2xpc3QgKi8K QEAgLTY2MDQsNiArNjY1Miw3IEBAIGNvbW1lbnRfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEVYVF9Q IFNFQVJDSCBESUNUSU9OQVJZCQkJeyAkJCA9IE9CSkVDVF9UU0RJQ1RJT05BUlk7IH0KIAkJCXwg VEVYVF9QIFNFQVJDSCBQQVJTRVIJCQkJeyAkJCA9IE9CSkVDVF9UU1BBUlNFUjsgfQogCQkJfCBU RVhUX1AgU0VBUkNIIFRFTVBMQVRFCQkJeyAkJCA9IE9CSkVDVF9UU1RFTVBMQVRFOyB9CisJCQl8 IFZBUklBQkxFCQkJCQkJCXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAvKiBvYmpl Y3QgdHlwZXMgdGFraW5nIG5hbWUgKi8KQEAgLTY3NDIsNiArNjc5MSw3IEBAIHNlY3VyaXR5X2xh YmVsX3R5cGVfYW55X25hbWU6CiAJCQl8IFRBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNUX1RBQkxF OyB9CiAJCQl8IFZJRVcJCQkJCQkJCXsgJCQgPSBPQkpFQ1RfVklFVzsgfQogCQkJfCBNQVRFUklB TElaRUQgVklFVwkJCQkJeyAkJCA9IE9CSkVDVF9NQVRWSUVXOyB9CisJCQl8IFZBUklBQkxFCQkJ CQkJCXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAvKiBvYmplY3QgdHlwZXMgdGFr aW5nIG5hbWUgKi8KQEAgLTcxNjMsNiArNzIxMywxNCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJ CQluLT5vYmpzID0gJDI7CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IFZBUklBQkxFIHF1YWxp ZmllZF9uYW1lX2xpc3QKKwkJCQl7CisJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAq KSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFS R0VUX09CSkVDVDsKKwkJCQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+ b2JqcyA9ICQyOworCQkJCQkkJCA9IG47CisJCQkJfQogCQkJfCBBTEwgVEFCTEVTIElOX1AgU0NI RU1BIG5hbWVfbGlzdAogCQkJCXsKIAkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICop IHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOwpAQCAtNzIwMyw2ICs3MjYxLDE0IEBAIHByaXZp bGVnZV90YXJnZXQ6CiAJCQkJCW4tPm9ianMgPSAkNTsKIAkJCQkJJCQgPSBuOwogCQkJCX0KKwkJ CXwgQUxMIFZBUklBQkxFUyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKKwkJCQl7CisJCQkJCVByaXZU YXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJ CQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX0FMTF9JTl9TQ0hFTUE7CisJCQkJCW4tPm9ianR5 cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9ianMgPSAkNTsKKwkJCQkJJCQgPSBuOwor CQkJCX0KIAkJOwogCiAKQEAgLTczNjMsNiArNzQyOSw3IEBAIGRlZmFjbF9wcml2aWxlZ2VfdGFy Z2V0OgogCQkJfCBTRVFVRU5DRVMJCXsgJCQgPSBPQkpFQ1RfU0VRVUVOQ0U7IH0KIAkJCXwgVFlQ RVNfUAkJeyAkJCA9IE9CSkVDVF9UWVBFOyB9CiAJCQl8IFNDSEVNQVMJCXsgJCQgPSBPQkpFQ1Rf U0NIRU1BOyB9CisJCQl8IFZBUklBQkxFUwkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7 CiAKIApAQCAtODk1OSw2ICs5MDI2LDI1IEBAIFJlbmFtZVN0bXQ6IEFMVEVSIEFHR1JFR0FURSBh Z2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBSRU5BTUUgVE8gbmFtZQogCQkJCQluLT5taXNzaW5nX29r ID0gZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFC TEUgYW55X25hbWUgUkVOQU1FIFRPIG5hbWUKKwkJCQl7CisJCQkJCVJlbmFtZVN0bXQgKm4gPSBt YWtlTm9kZShSZW5hbWVTdG10KTsKKwkJCQkJbi0+cmVuYW1lVHlwZSA9IE9CSkVDVF9WQVJJQUJM RTsKKwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDM7CisJCQkJCW4tPm5ld25hbWUgPSAkNjsK KwkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9 CisJCQl8IEFMVEVSIFZBUklBQkxFIElGX1AgRVhJU1RTIGFueV9uYW1lIFJFTkFNRSBUTyBuYW1l CisJCQkJeworCQkJCQlSZW5hbWVTdG10ICpuID0gbWFrZU5vZGUoUmVuYW1lU3RtdCk7CisJCQkJ CW4tPnJlbmFtZVR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9iamVjdCA9IChOb2Rl ICopICQ1OworCQkJCQluLT5uZXduYW1lID0gJDg7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVl OworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisKIAkJOwogCiBvcHRfY29sdW1uOiBDT0xV TU4JCQkJCQkJCQl7ICQkID0gQ09MVU1OOyB9CkBAIC05Mjc3LDYgKzkzNjMsMjUgQEAgQWx0ZXJP YmplY3RTY2hlbWFTdG10OgogCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CiAJCQkJCSQkID0g KE5vZGUgKiluOwogCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgYW55X25hbWUgU0VUIFNDSEVN QSBuYW1lCisJCQkJeworCQkJCQlBbHRlck9iamVjdFNjaGVtYVN0bXQgKm4gPSBtYWtlTm9kZShB bHRlck9iamVjdFNjaGVtYVN0bXQpOworCQkJCQluLT5vYmplY3RUeXBlID0gT0JKRUNUX1ZBUklB QkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkMzsKKwkJCQkJbi0+bmV3c2NoZW1hID0g JDY7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJ CQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBJRl9QIEVYSVNUUyBhbnlfbmFtZSBTRVQgU0NIRU1B IG5hbWUKKwkJCQl7CisJCQkJCUFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqbiA9IG1ha2VOb2RlKEFs dGVyT2JqZWN0U2NoZW1hU3RtdCk7CisJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpFQ1RfVkFSSUFC TEU7CisJCQkJCW4tPm9iamVjdCA9IChOb2RlICopICQ1OworCQkJCQluLT5uZXdzY2hlbWEgPSAk ODsKKwkJCQkJbi0+bWlzc2luZ19vayA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJ CX0KKwogCQk7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtOTUxMiw2ICs5NjE3LDE0IEBA IEFsdGVyT3duZXJTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMg T1dORVIgVE8gUm9sZVNwZWMKIAkJCQkJbi0+bmV3b3duZXIgPSAkNjsKIAkJCQkJJCQgPSAoTm9k ZSAqKW47CiAJCQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBhbnlfbmFtZSBPV05FUiBUTyBSb2xl U3BlYworCQkJCXsKKwkJCQkJQWx0ZXJPd25lclN0bXQgKm4gPSBtYWtlTm9kZShBbHRlck93bmVy U3RtdCk7CisJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9i amVjdCA9IChOb2RlICopICQzOworCQkJCQluLT5uZXdvd25lciA9ICQ2OworCQkJCQkkJCA9IChO b2RlICopbjsKKwkJCQl9CiAJCTsKIAogCkBAIC0xMDY5Myw2ICsxMDgwNiw3IEBAIEV4cGxhaW5h YmxlU3RtdDoKIAkJCXwgQ3JlYXRlTWF0Vmlld1N0bXQKIAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10 CiAJCQl8IEV4ZWN1dGVTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEgKi8KKwkJ CXwgTGV0U3RtdAogCQk7CiAKIGV4cGxhaW5fb3B0aW9uX2xpc3Q6CkBAIC0xMDc1MCw2ICsxMDg2 NCw3IEBAIFByZXBhcmFibGVTdG10OgogCQkJfCBJbnNlcnRTdG10CiAJCQl8IFVwZGF0ZVN0bXQK IAkJCXwgRGVsZXRlU3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8 IExldFN0bXQKIAkJOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTExMTQ4LDYgKzExMjYz LDQ0IEBAIG9wdF9ob2xkOiAvKiBFTVBUWSAqLwkJCQkJCXsgJCQgPSAwOyB9CiAJCQl8IFdJVEhP VVQgSE9MRAkJCQkJeyAkJCA9IDA7IH0KIAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq CisgKgkJUVVFUlk6CisgKgkJCQlMRVQgU1RBVEVNRU5UUworICoKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KK0xldFN0bXQ6CUxFVCBsZXRfdGFyZ2V0ICc9JyBhX2V4cHIKKwkJCQl7CisJCQkJCUxl dFN0bXQgKm4gPSBtYWtlTm9kZShMZXRTdG10KTsKKwkJCQkJU2VsZWN0U3RtdCAqc2VsZWN0ID0g bWFrZU5vZGUoU2VsZWN0U3RtdCk7CisJCQkJCVJlc1RhcmdldAkqcmVzID0gbWFrZU5vZGUoUmVz VGFyZ2V0KTsKKworCQkJCQluLT50YXJnZXQgPSAkMjsKKworCQkJCQkvKiBDcmVhdGUgdGFyZ2V0 IGxpc3QgZm9yIGltcGxpY2l0IHF1ZXJ5ICovCisJCQkJCXJlcy0+bmFtZSA9IE5VTEw7CisJCQkJ CXJlcy0+aW5kaXJlY3Rpb24gPSBOSUw7CisJCQkJCXJlcy0+dmFsID0gKE5vZGUgKikgJDQ7CisJ CQkJCXJlcy0+bG9jYXRpb24gPSBANDsKKworCQkJCQlzZWxlY3QtPnRhcmdldExpc3QgPSBsaXN0 X21ha2UxKHJlcyk7CisJCQkJCW4tPnNlbGVjdFN0bXQgPSAoTm9kZSAqKSBzZWxlY3Q7CisKKwkJ CQkJbi0+bG9jYXRpb24gPSBAMjsKKworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7 CisKK2xldF90YXJnZXQ6CisJCQlDb2xJZCBvcHRfaW5kaXJlY3Rpb24KKwkJCQl7CisJCQkJCSQk ID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKCQxKSk7CisJCQkJCWlmICgkMikKKwkJCQkJCSAgJCQg PSBsaXN0X2NvbmNhdCgkJCwKKwkJCQkJCQkJCQkgICBjaGVja19pbmRpcmVjdGlvbigkMiwgeXlz Y2FubmVyKSk7CisJCQkJfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKgkJUVVFUlk6 CkBAIC0xNTEyNyw2ICsxNTI4MCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTEFSR0Vf UAogCQkJfCBMQVNUX1AKIAkJCXwgTEVBS1BST09GCisJCQl8IExFVAogCQkJfCBMRVZFTAogCQkJ fCBMSVNURU4KIAkJCXwgTE9BRApAQCAtMTUyNzUsNiArMTU0MjksOCBAQCB1bnJlc2VydmVkX2tl eXdvcmQ6CiAJCQl8IFZBTElEQVRFCiAJCQl8IFZBTElEQVRPUgogCQkJfCBWQUxVRV9QCisJCQl8 IFZBUklBQkxFCisJCQl8IFZBUklBQkxFUwogCQkJfCBWQVJZSU5HCiAJCQl8IFZFUlNJT05fUAog CQkJfCBWSUVXCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggNjE3MjdlMWQ3MS4uNjgyMzYxMmZi YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwpAQCAtMzQ5LDYgKzM0OSw3IEBAIGNoZWNrX2FnZ2xl dmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCQkJ QXNzZXJ0KGZhbHNlKTsJCS8qIGNhbid0IGhhcHBlbiAqLwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQ Ul9LSU5EX09USEVSOgorCQljYXNlIEVYUFJfS0lORF9MRVQ6CiAKIAkJCS8qCiAJCQkgKiBBY2Nl cHQgYWdncmVnYXRlL2dyb3VwaW5nIGhlcmU7IGNhbGxlciBtdXN0IHRocm93IGVycm9yIGlmCkBA IC00NjUsNiArNDY2LDcgQEAgY2hlY2tfYWdnbGV2ZWxzX2FuZF9jb25zdHJhaW50cyhQYXJzZVN0 YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09M VU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNhc2Ug RVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAKIAkJCWlmIChpc0FnZykKIAkJCQllcnIgPSBf KCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZBVUxUIGV4cHJlc3Np b25zIik7CkBAIC04NzksNiArODgxLDcgQEAgdHJhbnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VT dGF0ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVuYywKIAkJCWJyZWFrOwogCQljYXNlIEVYUFJf S0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoK KwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVDoKIAkJCWVyciA9IF8oIndpbmRvdyBm dW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKIAkJCWJy ZWFrOwogCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgpAQCAtOTAyLDYgKzkwNSw4 IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVu YyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQ6CiAJCQllcnIgPSBfKCJ3 aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQUxMIGFyZ3VtZW50cyIpOwogCQkJ YnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX0xFVDoKKwkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIExFVCBzdGF0ZW1lbnQiKTsKIAogCQkJLyoKIAkJCSAqIFRo ZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggMzg1ZTU0YTliNi4uY2M2MTRiMzkwMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMu aCIKIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdf dmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0zNyw2ICszOCw3 IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMveG1sLmgiCiAKIApAQCAtMTE2LDYgKzExOCw5IEBAIHN0YXRp YyBOb2RlICp0cmFuc2Zvcm1YbWxTZXJpYWxpemUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBYbWxTZXJp YWxpemUgKnhzKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Cb29sZWFuVGVzdChQYXJzZVN0YXRl ICpwc3RhdGUsIEJvb2xlYW5UZXN0ICpiKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1DdXJyZW50 T2ZFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3VycmVudE9mRXhwciAqY2V4cHIpOwogc3RhdGlj IE5vZGUgKnRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAq Y3JlZik7CitzdGF0aWMgTm9kZSAqbWFrZVBhcmFtU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAq cHN0YXRlLAorCQkJCQkJICBPaWQgdmFyaWQsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBPaWQg Y29sbGlkLAorCQkJCQkJICBjaGFyICphdHRybmFtZSwgaW50IGxvY2F0aW9uKTsKIHN0YXRpYyBO b2RlICp0cmFuc2Zvcm1XaG9sZVJvd1JlZihQYXJzZVN0YXRlICpwc3RhdGUsIFJhbmdlVGJsRW50 cnkgKnJ0ZSwKIAkJCQkJIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSW5k aXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpOwpAQCAtNTEy LDYgKzUxNywxMCBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1 bW5SZWYgKmNyZWYpCiAJY2hhcgkgICAqbnNwbmFtZSA9IE5VTEw7CiAJY2hhcgkgICAqcmVsbmFt ZSA9IE5VTEw7CiAJY2hhcgkgICAqY29sbmFtZSA9IE5VTEw7CisJT2lkCQkJdmFyaWQgPSBJbnZh bGlkT2lkOworCWNoYXIJICAgKmF0dHJuYW1lID0gTlVMTDsKKwlib29sCQlub3RfdW5pcXVlOwor CiAJUmFuZ2VUYmxFbnRyeSAqcnRlOwogCWludAkJCWxldmVsc191cDsKIAllbnVtCkBAIC03NDks NiArNzU4LDE1IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVt blJlZiAqY3JlZikKIAkJCWJyZWFrOwogCX0KIAorCXZhcmlkID0gaWRlbnRpZnlfdmFyaWFibGUo Y3JlZi0+ZmllbGRzLCAmYXR0cm5hbWUsICZub3RfdW5pcXVlKTsKKworCWlmIChub3RfdW5pcXVl KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VTX1BBUkFN RVRFUiksCisJCQkJIGVycm1zZygic2NoZW1hIHZhcmlhYmxlIHJlZmVyZW5jZSBcIiVzXCIgaXMg YW1iaWd1b3VzIiwKKwkJCQkJCU5hbWVMaXN0VG9TdHJpbmcoY3JlZi0+ZmllbGRzKSksCisJCQkJ IHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGNyZWYtPmxvY2F0aW9uKSkpOworCiAJLyoKIAkg KiBOb3cgZ2l2ZSB0aGUgUG9zdFBhcnNlQ29sdW1uUmVmSG9vaywgaWYgYW55LCBhIGNoYW5jZS4g IFdlIHBhc3MgdGhlCiAJICogdHJhbnNsYXRpb24tc28tZmFyIHNvIHRoYXQgaXQgY2FuIHRocm93 IGFuIGVycm9yIGlmIGl0IHdpc2hlcyBpbiB0aGUKQEAgLTc3Myw2ICs3OTEsNzIgQEAgdHJhbnNm b3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3JlZi0+bG9jYXRpb24pKSk7CiAJfQogCisJaWYg KE9pZElzVmFsaWQodmFyaWQpKQorCXsKKwkJT2lkCQl0eXBpZDsKKwkJaW50MzIJdHlwbW9kOwor CQlPaWQJCWNvbGxpZDsKKworCQlnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2NvbGxp ZCh2YXJpZCwgJnR5cGlkLCAmdHlwbW9kLCAmY29sbGlkKTsKKworCQlpZiAobm9kZSAhPSBOVUxM KQorCQl7CisJCQkvKgorCQkJICogc29tZSBjb2xsaXNpb24gY2FuIGJlIHNvbHZlZCBzaW1wbHkg aGVyZSB0byByZWR1Y2UgZXJyb3JzCisJCQkgKiBiYXNlZCBvbiBzaW1wbHkgZXhpc3RlbmNlIG9m IHNvbWUgdmFyaWFibGVzLiBPZnRlbiBlcnJvcgorCQkJICogY2FuIGJlIHVzaW5nIGFsaWFzIHNh bWUgbGlrZSB2YXJpYWJsZSBuYW1lLiBJbiB0aGlzIGNhc2UsCisJCQkgKiB3aGVuIHdlIGZvdW5k IGNvbHVtbiByZWZlcmVuY2UsIGFuZCB3ZSBmb3VuZCByZWZlcmVuY2UgdG8KKwkJCSAqIHBvc3Np YmxlIGNvbXBvc2l0ZSB2YXJpYWJsZSwgYnV0IHRoZSB2YXJpYWJsZSBpcyBub3QgY29tcG9zaXRl LAorCQkJICogdGhlbiB3ZSBjYW4gaWdub3JlIHRoZSB2YXJpYWJsZSBhcyBzaW1wbHkgaW1wcm9w ZXIsIGFuZCB3ZQorCQkJICogdXNlIGNvbHVtbiByZWZlcmVuY2Ugb25seS4KKwkJCSAqLworCQkJ aWYgKGF0dHJuYW1lKQorCQkJeworCQkJCWlmICh0eXBlX2lzX3Jvd3R5cGUodHlwaWQpKQorCQkJ CXsKKwkJCQkJVHVwbGVEZXNjCQl0dXBkZXNjOworCQkJCQlib29sCQkJZm91bmQgPSBmYWxzZTsK KwkJCQkJaW50CQkJaTsKKworCQkJCQkvKiBzbG93IHBhcnQsIEkgaG9wZSBpdCB3aWxsIG5vdCBi ZSB0byBvZnRlbiAqLworCQkJCQl0dXBkZXNjID0gbG9va3VwX3Jvd3R5cGVfdHVwZGVzYyh0eXBp ZCwgdHlwbW9kKTsKKwkJCQkJZm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPm5hdHRzOyBpKyspCisJ CQkJCXsKKwkJCQkJCWlmIChuYW1lc3RyY21wKCYoVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBpKS0+ YXR0bmFtZSksIGF0dHJuYW1lKSA9PSAwICYmCisJCQkJCQkJCSFUdXBsZURlc2NBdHRyKHR1cGRl c2MsIGkpLT5hdHRpc2Ryb3BwZWQpCisJCQkJCQl7CisJCQkJCQkJZm91bmQgPSB0cnVlOworCQkJ CQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQl9CisKKwkJCQkJRnJlZVR1cGxlRGVzYyh0dXBkZXNj KTsKKworCQkJCQkvKiB0aGVyZSBhcmUgbm90IGNvbXBvc2l0ZSB2YXJpYWJsZSB3aXRoIHRoaXMg ZmllbGQgKi8KKwkJCQkJaWYgKCFmb3VuZCkKKwkJCQkJCXZhcmlkID0gSW52YWxpZE9pZDsKKwkJ CQl9CisJCQkJZWxzZQorCQkJCQkvKiB0aGVyZSBhcmUgbm90IGNvbXBvc2l0ZSB2YXJpYWJsZSB3 aXRoIHRoaXMgbmFtZSAqLworCQkJCQl2YXJpZCA9IEludmFsaWRPaWQ7CisJCQl9CisKKwkJCS8q IFJhaXNlIGVycm9yIGlmIHZhcmlkIGlzIHN0aWxsIHZhbGlkLiBJdCBzaG91bGQgYmUgcmVhbGx5 IGFtaWdvbnVvdXMgKi8KKwkJCWlmIChPaWRJc1ZhbGlkKHZhcmlkKSkKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9BTUJJR1VPVVNfQ09MVU1OKSwKKwkJCQkJCSBl cnJtc2coImNvbHVtbiByZWZlcmVuY2UgXCIlc1wiIGlzIGFtYmlndW91cyIsCisJCQkJCQkJCU5h bWVMaXN0VG9TdHJpbmcoY3JlZi0+ZmllbGRzKSksCisJCQkJCQkgZXJyZGV0YWlsKCJUaGUgcXVh bGlmaWVkIGlkZW50aWZpZXIgY2FuIGJlIGNvbHVtbiByZWZlcmVuY2Ugb3Igc2NoZW1hIHZhcmlh YmxlIHJlZmVyZW5jZSIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGNyZWYt PmxvY2F0aW9uKSkpOworCQl9CisKKwkJaWYgKE9pZElzVmFsaWQodmFyaWQpKQorCQkJbm9kZSA9 IG1ha2VQYXJhbVNjaGVtYVZhcmlhYmxlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJdmFyaWQsIHR5cGlk LCB0eXBtb2QsIGNvbGxpZCwKKwkJCQkJCQkJCQkJYXR0cm5hbWUsIGNyZWYtPmxvY2F0aW9uKTsK Kwl9CisKIAkvKgogCSAqIFRocm93IGVycm9yIGlmIG5vIHRyYW5zbGF0aW9uIGZvdW5kLgogCSAq LwpAQCAtODA3LDYgKzg5MSw2MCBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJcmV0dXJuIG5vZGU7CiB9CiAKKy8qCisgKiBHZW5lcmF0 ZSBwYXJhbSB2YXJpYWJsZSBmb3IgcmVmZXJlbmNlIHRvIHNjaGVtYSB2YXJpYWJsZQorICovCitz dGF0aWMgTm9kZSAqCittYWtlUGFyYW1TY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUs IE9pZCB2YXJpZCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIE9pZCBjb2xsaWQsIGNoYXIgKmF0 dHJuYW1lLCBpbnQgbG9jYXRpb24pCit7CisJUGFyYW0JICAgKnBhcmFtOworCisJcGFyYW0gPSBt YWtlTm9kZShQYXJhbSk7CisKKwlwYXJhbS0+cGFyYW1raW5kID0gUEFSQU1fVkFSSUFCTEU7CisJ cGFyYW0tPnBhcmFtaWQgPSB2YXJpZDsKKwlwYXJhbS0+cGFyYW10eXBlID0gdHlwaWQ7CisJcGFy YW0tPnBhcmFtdHlwbW9kID0gdHlwbW9kOworCXBhcmFtLT5wYXJhbWNvbGxpZCA9IGNvbGxpZDsK KworCWlmIChhdHRybmFtZSAhPSBOVUxMKQorCXsKKwkJVHVwbGVEZXNjCQl0dXBkZXNjOworCQlp bnQJCWk7CisKKwkJdHVwZGVzYyA9IGxvb2t1cF9yb3d0eXBlX3R1cGRlc2ModHlwaWQsIHR5cG1v ZCk7CisKKwkJZm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPm5hdHRzOyBpKyspCisJCXsKKwkJCUZv cm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSk7CisKKwkJCWlm IChzdHJjbXAoYXR0cm5hbWUsIE5hbWVTdHIoYXR0LT5hdHRuYW1lKSkgPT0gMCAmJgorCQkJCSFh dHQtPmF0dGlzZHJvcHBlZCkKKwkJCXsKKwkJCQkvKiBTdWNjZXNzLCBzbyBnZW5lcmF0ZSBhIEZp ZWxkU2VsZWN0IGV4cHJlc3Npb24gKi8KKwkJCQlGaWVsZFNlbGVjdCAqZnNlbGVjdCA9IG1ha2VO b2RlKEZpZWxkU2VsZWN0KTsKKworCQkJCWZzZWxlY3QtPmFyZyA9IChFeHByICopIHBhcmFtOwor CQkJCWZzZWxlY3QtPmZpZWxkbnVtID0gaSArIDE7CisJCQkJZnNlbGVjdC0+cmVzdWx0dHlwZSA9 IGF0dC0+YXR0dHlwaWQ7CisJCQkJZnNlbGVjdC0+cmVzdWx0dHlwbW9kID0gYXR0LT5hdHR0eXBt b2Q7CisJCQkJLyogc2F2ZSBhdHRyaWJ1dGUncyBjb2xsYXRpb24gZm9yIHBhcnNlX2NvbGxhdGUu YyAqLworCQkJCWZzZWxlY3QtPnJlc3VsdGNvbGxpZCA9IGF0dC0+YXR0Y29sbGF0aW9uOworCisJ CQkJUmVsZWFzZVR1cGxlRGVzYyh0dXBkZXNjKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgZnNlbGVj dDsKKwkJCX0KKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgaWRlbnRpZnkgY29sdW1u IFwiJXNcIiBpbiB2YXJpYWJsZSIsIGF0dHJuYW1lKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgbG9jYXRpb24pKSk7CisJfQorCisJcmV0dXJuIChOb2RlICopIHBhcmFtOworfQor CiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1QYXJhbVJlZihQYXJzZVN0YXRlICpwc3RhdGUsIFBh cmFtUmVmICpwcmVmKQogewpAQCAtMTgxOCw2ICsxOTU2LDcgQEAgdHJhbnNmb3JtU3ViTGluayhQ YXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX1JF VFVSTklORzoKIAkJY2FzZSBFWFBSX0tJTkRfVkFMVUVTOgogCQljYXNlIEVYUFJfS0lORF9WQUxV RVNfU0lOR0xFOgorCQljYXNlIEVYUFJfS0lORF9MRVQ6CiAJCQkvKiBva2F5ICovCiAJCQlicmVh azsKIAkJY2FzZSBFWFBSX0tJTkRfQ0hFQ0tfQ09OU1RSQUlOVDoKQEAgLTE4MjYsNiArMTk2NSw3 IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5r KQogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVY UFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQljYXNlIEVYUFJfS0lORF9WQVJJQUJMRV9ERUZB VUxUOgogCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBERUZBVUxUIGV4cHJlc3Np b24iKTsKIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgpAQCAt MzQ2MCw2ICszNjAwLDcgQEAgUGFyc2VFeHByS2luZE5hbWUoUGFyc2VFeHByS2luZCBleHByS2lu ZCkKIAkJCXJldHVybiAiQ0hFQ0siOwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoK IAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKKwkJY2FzZSBFWFBSX0tJTkRfVkFS SUFCTEVfREVGQVVMVDoKIAkJCXJldHVybiAiREVGQVVMVCI7CiAJCWNhc2UgRVhQUl9LSU5EX0lO REVYX0VYUFJFU1NJT046CiAJCQlyZXR1cm4gImluZGV4IGV4cHJlc3Npb24iOwpAQCAtMzQ3NSw2 ICszNjE2LDggQEAgUGFyc2VFeHByS2luZE5hbWUoUGFyc2VFeHByS2luZCBleHByS2luZCkKIAkJ CXJldHVybiAiUEFSVElUSU9OIEJZIjsKIAkJY2FzZSBFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVDoK IAkJCXJldHVybiAiQ0FMTCI7CisJCWNhc2UgRVhQUl9LSU5EX0xFVDoKKwkJCXJldHVybiAiTEVU IjsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2Fz ZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXggNDQyNTcxNTRi OC4uYjJjOTkwMGUwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMu YworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0yMzQ3LDYgKzIzNDcs NyBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICps YXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVN Tl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQljYXNlIEVY UFJfS0lORF9WQVJJQUJMRV9ERUZBVUxUOgogCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5j dGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKIAkJCWJyZWFr OwogCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgpAQCAtMjM3MCw2ICsyMzcxLDkg QEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbGFz dF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVDoKIAkJ CWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQUxM IGFyZ3VtZW50cyIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX0xFVDoKKwkJCWVyciA9 IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQUxMIGFyZ3Vt ZW50cyIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5 IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJn ZXQuYwppbmRleCA0OTMyZTU4MDIyLi5jNjBmZTAxMWY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Rh cmdldC5jCkBAIC0zNSwxNiArMzUsNiBAQAogCiBzdGF0aWMgdm9pZCBtYXJrVGFyZ2V0TGlzdE9y aWdpbihQYXJzZVN0YXRlICpwc3RhdGUsIFRhcmdldEVudHJ5ICp0bGUsCiAJCQkJCSBWYXIgKnZh ciwgaW50IGxldmVsc3VwKTsKLXN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJl Y3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJCSAgIE5vZGUgKmJhc2Vub2RlLAotCQkJ CQkJCSAgIGNvbnN0IGNoYXIgKnRhcmdldE5hbWUsCi0JCQkJCQkJICAgYm9vbCB0YXJnZXRJc0Fy cmF5LAotCQkJCQkJCSAgIE9pZCB0YXJnZXRUeXBlSWQsCi0JCQkJCQkJICAgaW50MzIgdGFyZ2V0 VHlwTW9kLAotCQkJCQkJCSAgIE9pZCB0YXJnZXRDb2xsYXRpb24sCi0JCQkJCQkJICAgTGlzdENl bGwgKmluZGlyZWN0aW9uLAotCQkJCQkJCSAgIE5vZGUgKnJocywKLQkJCQkJCQkgICBpbnQgbG9j YXRpb24pOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRTdWJzY3JpcHRzKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkgIE5vZGUgKmJhc2Vub2RlLAogCQkJCQkJCSAgY29uc3Qg Y2hhciAqdGFyZ2V0TmFtZSwKQEAgLTY3Miw3ICs2NjIsNyBAQCB1cGRhdGVUYXJnZXRMaXN0RW50 cnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogICogbWlnaHQgd2FudCB0byBkZWNvcmF0ZSBpbmRpcmVj dGlvbiBjZWxscyB3aXRoIHRoZWlyIG93biBsb2NhdGlvbiBpbmZvLAogICogaW4gd2hpY2ggY2Fz ZSB0aGUgbG9jYXRpb24gYXJndW1lbnQgY291bGQgcHJvYmFibHkgYmUgZHJvcHBlZC4pCiAgKi8K LXN0YXRpYyBOb2RlICoKK05vZGUgKgogdHJhbnNmb3JtQXNzaWdubWVudEluZGlyZWN0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkgICBOb2RlICpiYXNlbm9kZSwKIAkJCQkJCQkgICBj b25zdCBjaGFyICp0YXJnZXROYW1lLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9y ZXdyaXRlSGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmlu ZGV4IDMxMjNlZTI3NGQuLjEwNzM3ZDQyMmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3Jp dGUvcmV3cml0ZUhhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5k bGVyLmMKQEAgLTMzNTAsNyArMzM1MCw3IEBAIFJld3JpdGVRdWVyeShRdWVyeSAqcGFyc2V0cmVl LCBMaXN0ICpyZXdyaXRlX2V2ZW50cykKIAkgKiBnZXQgZXhlY3V0ZWQuICBBbHNvLCB1dGlsaXRp ZXMgYXJlbid0IHJld3JpdHRlbiBhdCBhbGwgKGRvIHdlIHN0aWxsCiAJICogbmVlZCB0aGF0IGNo ZWNrPykKIAkgKi8KLQlpZiAoZXZlbnQgIT0gQ01EX1NFTEVDVCAmJiBldmVudCAhPSBDTURfVVRJ TElUWSkKKwlpZiAoZXZlbnQgIT0gQ01EX1NFTEVDVCAmJiBldmVudCAhPSBDTURfVVRJTElUWSAm JiBldmVudCAhPSBDTURfUExBTl9VVElMSVRZKQogCXsKIAkJaW50CQkJcmVzdWx0X3JlbGF0aW9u OwogCQlSYW5nZVRibEVudHJ5ICpydF9lbnRyeTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl d3JpdGUvcm93c2VjdXJpdHkuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcm93c2VjdXJpdHkuYwpp bmRleCA2MWVmMzk2ZDhhLi42YTA2OGFmNzk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdy aXRlL3Jvd3NlY3VyaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5j CkBAIC0yMTIsNyArMjEyLDcgQEAgZ2V0X3Jvd19zZWN1cml0eV9wb2xpY2llcyhRdWVyeSAqcm9v dCwgUmFuZ2VUYmxFbnRyeSAqcnRlLCBpbnQgcnRfaW5kZXgsCiAJfQogCiAJLyoKLQkgKiBGb3Ig U0VMRUNULCBVUERBVEUgYW5kIERFTEVURSwgYWRkIHNlY3VyaXR5IHF1YWxzIHRvIGVuZm9yY2Ug dGhlIFVTSU5HCisJICogRm9yIFNFTEVDVCwgTEVULCBVUERBVEUgYW5kIERFTEVURSwgYWRkIHNl Y3VyaXR5IHF1YWxzIHRvIGVuZm9yY2UgdGhlIFVTSU5HCiAJICogcG9saWNpZXMuICBUaGVzZSBz ZWN1cml0eSBxdWFscyBjb250cm9sIGFjY2VzcyB0byBleGlzdGluZyB0YWJsZSByb3dzLgogCSAq IFJlc3RyaWN0aXZlIHBvbGljaWVzIGFyZSBjb21iaW5lZCB0b2dldGhlciB1c2luZyBBTkQsIGFu ZCBwZXJtaXNzaXZlCiAJICogcG9saWNpZXMgYXJlIGNvbWJpbmVkIHRvZ2V0aGVyIHVzaW5nIE9S LgpAQCAtMjIyLDYgKzIyMiw3IEBAIGdldF9yb3dfc2VjdXJpdHlfcG9saWNpZXMoUXVlcnkgKnJv b3QsIFJhbmdlVGJsRW50cnkgKnJ0ZSwgaW50IHJ0X2luZGV4LAogCQkJCQkJCSAgJnJlc3RyaWN0 aXZlX3BvbGljaWVzKTsKIAogCWlmIChjb21tYW5kVHlwZSA9PSBDTURfU0VMRUNUIHx8CisJCWNv bW1hbmRUeXBlID09IENNRF9QTEFOX1VUSUxJVFkgfHwKIAkJY29tbWFuZFR5cGUgPT0gQ01EX1VQ REFURSB8fAogCQljb21tYW5kVHlwZSA9PSBDTURfREVMRVRFKQogCQlhZGRfc2VjdXJpdHlfcXVh bHMocnRfaW5kZXgsCkBAIC00MjMsNiArNDI0LDcgQEAgZ2V0X3BvbGljaWVzX2Zvcl9yZWxhdGlv bihSZWxhdGlvbiByZWxhdGlvbiwgQ21kVHlwZSBjbWQsIE9pZCB1c2VyX2lkLAogCQkJc3dpdGNo IChjbWQpCiAJCQl7CiAJCQkJY2FzZSBDTURfU0VMRUNUOgorCQkJCWNhc2UgQ01EX1BMQU5fVVRJ TElUWToKIAkJCQkJaWYgKHBvbGljeS0+cG9sY21kID09IEFDTF9TRUxFQ1RfQ0hSKQogCQkJCQkJ Y21kX21hdGNoZXMgPSB0cnVlOwogCQkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Rjb3AvZGVzdC5jIGIvc3JjL2JhY2tlbmQvdGNvcC9kZXN0LmMKaW5kZXggYzk1YTRkNTE5ZC4u NDdmYjBmMzhiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9kZXN0LmMKKysrIGIvc3Jj L2JhY2tlbmQvdGNvcC9kZXN0LmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJleGVjdXRv ci9mdW5jdGlvbnMuaCIKICNpbmNsdWRlICJleGVjdXRvci90cXVldWUuaCIKICNpbmNsdWRlICJl eGVjdXRvci90c3RvcmVSZWNlaXZlci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3N2YXJpYWJsZVJl Y2VpdmVyLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZv cm1hdC5oIgogI2luY2x1ZGUgInV0aWxzL3BvcnRhbC5oIgpAQCAtMTQzLDYgKzE0NCw5IEBAIENy ZWF0ZURlc3RSZWNlaXZlcihDb21tYW5kRGVzdCBkZXN0KQogCiAJCWNhc2UgRGVzdFR1cGxlUXVl dWU6CiAJCQlyZXR1cm4gQ3JlYXRlVHVwbGVRdWV1ZURlc3RSZWNlaXZlcihOVUxMKTsKKworCQlj YXNlIERlc3RWYXJpYWJsZToKKwkJCXJldHVybiBDcmVhdGVWYXJpYWJsZURlc3RSZWNlaXZlcigp OwogCX0KIAogCS8qIHNob3VsZCBuZXZlciBnZXQgaGVyZSAqLwpAQCAtMTc4LDYgKzE4Miw3IEBA IEVuZENvbW1hbmQoY29uc3QgY2hhciAqY29tbWFuZFRhZywgQ29tbWFuZERlc3QgZGVzdCkKIAkJ Y2FzZSBEZXN0U1FMRnVuY3Rpb246CiAJCWNhc2UgRGVzdFRyYW5zaWVudFJlbDoKIAkJY2FzZSBE ZXN0VHVwbGVRdWV1ZToKKwkJY2FzZSBEZXN0VmFyaWFibGU6CiAJCQlicmVhazsKIAl9CiB9CkBA IC0yMjIsNiArMjI3LDcgQEAgTnVsbENvbW1hbmQoQ29tbWFuZERlc3QgZGVzdCkKIAkJY2FzZSBE ZXN0U1FMRnVuY3Rpb246CiAJCWNhc2UgRGVzdFRyYW5zaWVudFJlbDoKIAkJY2FzZSBEZXN0VHVw bGVRdWV1ZToKKwkJY2FzZSBEZXN0VmFyaWFibGU6CiAJCQlicmVhazsKIAl9CiB9CkBAIC0yNjgs NiArMjc0LDcgQEAgUmVhZHlGb3JRdWVyeShDb21tYW5kRGVzdCBkZXN0KQogCQljYXNlIERlc3RT UUxGdW5jdGlvbjoKIAkJY2FzZSBEZXN0VHJhbnNpZW50UmVsOgogCQljYXNlIERlc3RUdXBsZVF1 ZXVlOgorCQljYXNlIERlc3RWYXJpYWJsZToKIAkJCWJyZWFrOwogCX0KIH0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMK aW5kZXggYjU4MDRmNjRhZC4uMzUxOTlmZDBkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNv cC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTQ3LDYgKzQ3 LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9wcm9jbGFuZy5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYWNtZHMuaCIKKyNp bmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Nl Y2xhYmVsLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJjb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmgiCkBAIC0zNDQsNyArMzQ1LDcgQEAgUHJvY2Vzc1V0aWxp dHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJICAgY2hhciAqY29tcGxldGlvblRhZykKIHsKIAlB c3NlcnQoSXNBKHBzdG10LCBQbGFubmVkU3RtdCkpOwotCUFzc2VydChwc3RtdC0+Y29tbWFuZFR5 cGUgPT0gQ01EX1VUSUxJVFkpOworCUFzc2VydChwc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VU SUxJVFkgfHwgcHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9QTEFOX1VUSUxJVFkpOwogCUFzc2Vy dChxdWVyeVN0cmluZyAhPSBOVUxMKTsJLyogcmVxdWlyZWQgYXMgb2YgOC40ICovCiAKIAkvKgpA QCAtOTE1LDYgKzkxNiwxNCBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAq cHN0bXQsCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQl7CisJCQkJ ZG9MZXRTdG10KHBzdG10LCBwYXJhbXMsIHF1ZXJ5RW52LCBxdWVyeVN0cmluZyk7CisJCQkJaWYg KGNvbXBsZXRpb25UYWcpCisJCQkJCXN0cmNweShjb21wbGV0aW9uVGFnLCAiTEVUIik7CisJCQl9 CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJLyogQWxsIG90aGVyIHN0YXRlbWVudCB0eXBl cyBoYXZlIGV2ZW50IHRyaWdnZXIgc3VwcG9ydCAqLwogCQkJUHJvY2Vzc1V0aWxpdHlTbG93KHBz dGF0ZSwgcHN0bXQsIHF1ZXJ5U3RyaW5nLApAQCAtMTIyMSw2ICsxMjMwLDEwIEBAIFByb2Nlc3NV dGlsaXR5U2xvdyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJfQogCQkJCWJyZWFrOwogCisJCQlj YXNlIFRfQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCQlhZGRyZXNzID0gRGVmaW5lU2NoZW1hVmFy aWFibGUocHN0YXRlLCAoQ3JlYXRlU2NoZW1hVmFyU3RtdCAqKSBwYXJzZXRyZWUpOworCQkJCWJy ZWFrOworCiAJCQkJLyoKIAkJCQkgKiAqKioqKioqKioqKioqIG9iamVjdCBjcmVhdGlvbiAvIGRl c3RydWN0aW9uICoqKioqKioqKioqKioqCiAJCQkJICovCkBAIC0yMDU1LDYgKzIwNjgsOSBAQCBB bHRlck9iamVjdFR5cGVDb21tYW5kVGFnKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpF Q1RfU1RBVElTVElDX0VYVDoKIAkJCXRhZyA9ICJBTFRFUiBTVEFUSVNUSUNTIjsKIAkJCWJyZWFr OworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXRhZyA9ICJBTFRFUiBWQVJJQUJMRSI7CisJ CQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXRhZyA9ICI/Pz8iOwogCQkJYnJlYWs7CkBAIC0yMTA0 LDYgKzIxMjAsMTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl0YWcg PSAiU0VMRUNUIjsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9MZXRTdG10OgorCQkJdGFnID0gIkxF VCI7CisJCQlicmVhazsKKwogCQkJLyogdXRpbGl0eSBzdGF0ZW1lbnRzIC0tLSBzYW1lIHdoZXRo ZXIgcmF3IG9yIGNvb2tlZCAqLwogCQljYXNlIFRfVHJhbnNhY3Rpb25TdG10OgogCQkJewpAQCAt MjM1OCw2ICsyMzc4LDkgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJ Y2FzZSBPQkpFQ1RfU1RBVElTVElDX0VYVDoKIAkJCQkJdGFnID0gIkRST1AgU1RBVElTVElDUyI7 CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQl0YWcgPSAiRFJP UCBWQVJJQUJMRSI7CisJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6CiAJCQkJCXRhZyA9ICI/Pz8i OwogCQkJfQpAQCAtMjYzOSw2ICsyNjYyLDkgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJz ZXRyZWUpCiAJCQkJY2FzZSBESVNDQVJEX1NFUVVFTkNFUzoKIAkJCQkJdGFnID0gIkRJU0NBUkQg U0VRVUVOQ0VTIjsKIAkJCQkJYnJlYWs7CisJCQkJY2FzZSBESVNDQVJEX1ZBUklBQkxFUzoKKwkJ CQkJdGFnID0gIkRJU0NBUkQgVkFSSUFCTEVTIjsKKwkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoK IAkJCQkJdGFnID0gIj8/PyI7CiAJCQl9CkBAIC0yODQ0LDYgKzI4NzAsNyBAQCBDcmVhdGVDb21t YW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQkJCXRhZyA9ICJERUxFVEUiOwogCQkJCQkJYnJl YWs7CiAJCQkJCWNhc2UgQ01EX1VUSUxJVFk6CisJCQkJCWNhc2UgQ01EX1BMQU5fVVRJTElUWToK IAkJCQkJCXRhZyA9IENyZWF0ZUNvbW1hbmRUYWcoc3RtdC0+dXRpbGl0eVN0bXQpOwogCQkJCQkJ YnJlYWs7CiAJCQkJCWRlZmF1bHQ6CkBAIC0yOTE1LDYgKzI5NDIsMTAgQEAgQ3JlYXRlQ29tbWFu ZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl9CiAJCQlicmVhazsKIAorCQljYXNlIFRfQ3JlYXRl U2NoZW1hVmFyU3RtdDoKKwkJCXRhZyA9ICJDUkVBVEUgVkFSSUFCTEUiOworCQkJYnJlYWs7CisK IAkJZGVmYXVsdDoKIAkJCWVsb2coV0FSTklORywgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVk IiwKIAkJCQkgKGludCkgbm9kZVRhZyhwYXJzZXRyZWUpKTsKQEAgLTI5NjEsNiArMjk5MiwxMCBA QCBHZXRDb21tYW5kTG9nTGV2ZWwoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWxldiA9IExPR1NUTVRf QUxMOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQlsZXYgPSBMT0dTVE1UX0FM TDsKKwkJCWJyZWFrOworCiAJCQkvKiB1dGlsaXR5IHN0YXRlbWVudHMgLS0tIHNhbWUgd2hldGhl ciByYXcgb3IgY29va2VkICovCiAJCWNhc2UgVF9UcmFuc2FjdGlvblN0bXQ6CiAJCQlsZXYgPSBM T0dTVE1UX0FMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwppbmRleCBhNDVlMDkzZGU3Li45NTJjMGQ5NjI4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2FjbC5jCkBAIC0zMTUsNiArMzE1LDEyIEBAIGFjbHBhcnNlKGNvbnN0IGNoYXIg KnMsIEFjbEl0ZW0gKmFpcCkKIAkJCWNhc2UgQUNMX0NPTk5FQ1RfQ0hSOgogCQkJCXJlYWQgPSBB Q0xfQ09OTkVDVDsKIAkJCQlicmVhazsKKwkJCWNhc2UgQUNMX1JFQURfQ0hSOgorCQkJCXJlYWQg PSBBQ0xfUkVBRDsKKwkJCQlicmVhazsKKwkJCWNhc2UgQUNMX1dSSVRFX0NIUjoKKwkJCQlyZWFk ID0gQUNMX1dSSVRFOworCQkJCWJyZWFrOwogCQkJY2FzZSAnUic6CQkJLyogaWdub3JlIG9sZCBS VUxFIHByaXZpbGVnZXMgKi8KIAkJCQlyZWFkID0gMDsKIAkJCQlicmVhazsKQEAgLTgwOCw2ICs4 MTQsMTAgQEAgYWNsZGVmYXVsdChPYmplY3RUeXBlIG9ianR5cGUsIE9pZCBvd25lcklkKQogCQkJ d29ybGRfZGVmYXVsdCA9IEFDTF9VU0FHRTsKIAkJCW93bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJ R0hUU19UWVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJd29ybGRf ZGVmYXVsdCA9IEFDTF9OT19SSUdIVFM7CisJCQlvd25lcl9kZWZhdWx0ID0gQUNMX0FMTF9SSUdI VFNfVkFSSUFCTEU7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50KSBvYmp0eXBlKTsKIAkJCXdvcmxkX2RlZmF1bHQg PSBBQ0xfTk9fUklHSFRTOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC05MDMsNiArOTEz LDkgQEAgYWNsZGVmYXVsdF9zcWwoUEdfRlVOQ1RJT05fQVJHUykKIAkJY2FzZSAnVCc6CiAJCQlv Ymp0eXBlID0gT0JKRUNUX1RZUEU7CiAJCQlicmVhazsKKwkJY2FzZSAnVic6CisJCQlvYmp0eXBl ID0gT0JKRUNUX1ZBUklBQkxFOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9S LCAidW5yZWNvZ25pemVkIG9ianR5cGUgYWJicmV2aWF0aW9uOiAlYyIsIG9ianR5cGVjKTsKIAl9 CkBAIC0xNjI3LDYgKzE2NDAsMTAgQEAgY29udmVydF9wcml2X3N0cmluZyh0ZXh0ICpwcml2X3R5 cGVfdGV4dCkKIAkJcmV0dXJuIEFDTF9DT05ORUNUOwogCWlmIChwZ19zdHJjYXNlY21wKHByaXZf dHlwZSwgIlJVTEUiKSA9PSAwKQogCQlyZXR1cm4gMDsJCQkJLyogaWdub3JlIG9sZCBSVUxFIHBy aXZpbGVnZXMgKi8KKwlpZiAocGdfc3RyY2FzZWNtcChwcml2X3R5cGUsICJSRUFEIikgPT0gMCkK KwkJcmV0dXJuIEFDTF9SRUFEOworCWlmIChwZ19zdHJjYXNlY21wKHByaXZfdHlwZSwgIldSSVRF IikgPT0gMCkKKwkJcmV0dXJuIEFDTF9XUklURTsKIAogCWVyZXBvcnQoRVJST1IsCiAJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTE3MjEsNiArMTczOCwx MCBAQCBjb252ZXJ0X2FjbHJpZ2h0X3RvX3N0cmluZyhpbnQgYWNscmlnaHQpCiAJCQlyZXR1cm4g IlRFTVBPUkFSWSI7CiAJCWNhc2UgQUNMX0NPTk5FQ1Q6CiAJCQlyZXR1cm4gIkNPTk5FQ1QiOwor CQljYXNlIEFDTF9SRUFEOgorCQkJcmV0dXJuICJSRUFEIjsKKwkJY2FzZSBBQ0xfV1JJVEU6CisJ CQlyZXR1cm4gIldSSVRFIjsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6 ZWQgYWNscmlnaHQ6ICVkIiwgYWNscmlnaHQpOwogCQkJcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKaW5kZXggMDNlOWEyOGE2My4uY2M4ZjMzMjZhYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYwpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdf c3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJpZ2dlci5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIK ICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNw YWNlLmgiCiAjaW5jbHVkZSAiY29tbW9uL2tleXdvcmRzLmgiCkBAIC03MzYyLDYgKzczNjMsMTQg QEAgZ2V0X3BhcmFtZXRlcihQYXJhbSAqcGFyYW0sIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkK IAkJcmV0dXJuOwogCX0KIAorCS8qIHRyYW5zbGF0ZSBwYXJhbWlkIHRvIG9yaWdpbmFsIHNjaGVt YSB2YXJpYWJsZSBuYW1lICovCisJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fVkFSSUFC TEUpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvKGNvbnRleHQtPmJ1ZiwgIiVzIiwKKwkJCQkJCQlz Y2hlbWFfdmFyaWFibGVfZ2V0X25hbWUocGFyYW0tPnBhcmFtaWQpKTsKKwkJcmV0dXJuOworCX0K KwogCS8qCiAJICogTm90IFBBUkFNX0VYRUMsIG9yIGNvdWxkbid0IGZpbmQgcmVmZXJlbnQ6IGp1 c3QgcHJpbnQgJE4uCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IGJi YTU5NWFkMWQuLjg1OGE2ZGQ0YmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBA IC0xNjkxLDYgKzE2OTEsMTggQEAgZ2V0X3JlbG5hbWVfcmVsaWQoY29uc3QgY2hhciAqcmVsbmFt ZSwgT2lkIHJlbG5hbWVzcGFjZSkKIAkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocmVsbmFtZXNw YWNlKSk7CiB9CiAKKy8qCisgKiBnZXRfdmFybmFtZV92YXJpZAorICoJCUdpdmVuIG5hbWUgYW5k IG5hbWVzcGFjZSBvZiB2YXJpYWJsZSwgbG9vayB1cCB0aGUgT0lELgorICovCitPaWQKK2dldF92 YXJuYW1lX3ZhcmlkKGNvbnN0IGNoYXIgKnZhcm5hbWUsIE9pZCB2YXJuYW1lc3BhY2UpCit7CisJ cmV0dXJuIEdldFN5c0NhY2hlT2lkMihWQVJJQUJMRU5BTUVOU1AsCisJCQkJCQkgICBQb2ludGVy R2V0RGF0dW0odmFybmFtZSksCisJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHZhcm5hbWVzcGFj ZSkpOworfQorCiAjaWZkZWYgTk9UX1VTRUQKIC8qCiAgKiBnZXRfcmVsbmF0dHMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9zeXNjYWNoZS5jCmluZGV4IDJiMzgxNzgyYTMuLjM1ZGMzMmY2NDkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvc3lzY2FjaGUuYwpAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3VzZXJfbWFwcGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFy aWFibGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9jYXRjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCkBAIC05NjgsNiArOTY5LDI4IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgY2FjaGVkZXNjIGNhY2hlaW5mb1tdID0gewogCQkJMAogCQl9LAog CQkyCisJfSwKKwl7VmFyaWFibGVSZWxhdGlvbklkLAkJCS8qIFZBUklBQkxFTkFNRU5TUCAqLwor CQlWYXJpYWJsZU5hbWVOc3BJbmRleElkLAorCQkyLAorCQl7CisJCQlBbnVtX3BnX3ZhcmlhYmxl X3Zhcm5hbWUsCisJCQlBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWVzcGFjZSwKKwkJCTAsCisJCQkw CisJCX0sCisJCTgKKwl9LAorCXtWYXJpYWJsZVJlbGF0aW9uSWQsCQkJLyogVkFSSUFCTEVPSUQg Ki8KKwkJVmFyaWFibGVPYmplY3RJbmRleElkLAorCQkxLAorCQl7CisJCQlPYmplY3RJZEF0dHJp YnV0ZU51bWJlciwKKwkJCTAsCisJCQkwLAorCQkJMAorCQl9LAorCQk4CiAJfQogfTsKIApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbW1v bi5jCmluZGV4IDBkMTQ3Y2IwOGQuLjZkOTc5MzFkODUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9jb21tb24uYworKysgYi9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKQEAgLTI5Niw2ICsy OTYsMTAgQEAgZ2V0U2NoZW1hRGF0YShBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlc1B0cikK IAkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHN1YnNjcmlwdGlvbnNcbiIpOwogCWdldFN1YnNj cmlwdGlvbnMoZm91dCk7CiAKKwlpZiAoZ192ZXJib3NlKQorCQl3cml0ZV9tc2coTlVMTCwgInJl YWRpbmcgdmFyaWFibGVzXG4iKTsKKwlnZXRWYXJpYWJsZXMoZm91dCk7CisKIAkqbnVtVGFibGVz UHRyID0gbnVtVGFibGVzOwogCXJldHVybiB0YmxpbmZvOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cF9hcmNoaXZlci5jCmluZGV4IDgzYzk3NmVhZjcuLmM5YmM5MWNhNjggMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTM0NzEsNiArMzQ3MSw3IEBAIF9nZXRPYmplY3REZXNj cmlwdGlvbihQUUV4cEJ1ZmZlciBidWYsIFRvY0VudHJ5ICp0ZSwgQXJjaGl2ZUhhbmRsZSAqQUgp CiAJCXN0cmNtcCh0eXBlLCAiVEVYVCBTRUFSQ0ggRElDVElPTkFSWSIpID09IDAgfHwKIAkJc3Ry Y21wKHR5cGUsICJURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIikgPT0gMCB8fAogCQlzdHJjbXAo dHlwZSwgIlNUQVRJU1RJQ1MiKSA9PSAwIHx8CisJCXN0cmNtcCh0eXBlLCAiVkFSSUFCTEUiKSA9 PSAwIHx8CiAJLyogbm9uLXNjaGVtYS1zcGVjaWZpZWQgb2JqZWN0cyAqLwogCQlzdHJjbXAodHlw ZSwgIkRBVEFCQVNFIikgPT0gMCB8fAogCQlzdHJjbXAodHlwZSwgIlBST0NFRFVSQUwgTEFOR1VB R0UiKSA9PSAwIHx8CkBAIC0zNjcwLDcgKzM2NzEsOCBAQCBfcHJpbnRUb2NFbnRyeShBcmNoaXZl SGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBib29sIGlzRGF0YSkKIAkJCXN0cmNtcCh0ZS0+ZGVz YywgIlNFUlZFUiIpID09IDAgfHwKIAkJCXN0cmNtcCh0ZS0+ZGVzYywgIlNUQVRJU1RJQ1MiKSA9 PSAwIHx8CiAJCQlzdHJjbXAodGUtPmRlc2MsICJQVUJMSUNBVElPTiIpID09IDAgfHwKLQkJCXN0 cmNtcCh0ZS0+ZGVzYywgIlNVQlNDUklQVElPTiIpID09IDApCisJCQlzdHJjbXAodGUtPmRlc2Ms ICJTVUJTQ1JJUFRJT04iKSA9PSAwIHx8CisJCQlzdHJjbXAodGUtPmRlc2MsICJWQVJJQUJMRSIp ID09IDApCiAJCXsKIAkJCVBRRXhwQnVmZmVyIHRlbXAgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwog CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYwppbmRleCA5YmFmN2IyZmRlLi5mODI1YTAwYzlkIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAg LTI2MCw2ICsyNjAsNyBAQCBzdGF0aWMgdm9pZCBkdW1wUG9saWN5KEFyY2hpdmUgKmZvdXQsIFBv bGljeUluZm8gKnBvbGluZm8pOwogc3RhdGljIHZvaWQgZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUg KmZvdXQsIFB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wUHVibGlj YXRpb25UYWJsZShBcmNoaXZlICpmb3V0LCBQdWJsaWNhdGlvblJlbEluZm8gKnB1YnJpbmZvKTsK IHN0YXRpYyB2b2lkIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwgU3Vic2NyaXB0aW9u SW5mbyAqc3ViaW5mbyk7CitzdGF0aWMgdm9pZCBkdW1wVmFyaWFibGUoQXJjaGl2ZSAqZm91dCwg VmFyaWFibGVJbmZvICp2YXJpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBEYXRhYmFzZShBcmNoaXZl ICpBSCk7CiBzdGF0aWMgdm9pZCBkdW1wRGF0YWJhc2VDb25maWcoQXJjaGl2ZSAqQUgsIFBRRXhw QnVmZmVyIG91dGJ1ZiwKIAkJCQkgICBjb25zdCBjaGFyICpkYm5hbWUsIE9pZCBkYm9pZCk7CkBA IC00MjIxLDYgKzQyMjIsMjA4IEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwgU3Vi c2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlmcmVlKHFzdWJuYW1lKTsKIH0KIAorLyoKKyAqIGdl dFZhcmlhYmxlcworICoJICBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdmFyaWFibGVzCisgKi8KK3Zv aWQKK2dldFZhcmlhYmxlcyhBcmNoaXZlICpmb3V0KQoreworCUR1bXBPcHRpb25zICpkb3B0ID0g Zm91dC0+ZG9wdDsKKwlQUUV4cEJ1ZmZlciBxdWVyeTsKKwlQUUV4cEJ1ZmZlciBhY2xfc3VicXVl cnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCVBRRXhwQnVmZmVyIHJhY2xfc3VicXVlcnkgPSBj cmVhdGVQUUV4cEJ1ZmZlcigpOworCVBRRXhwQnVmZmVyIGluaXRfYWNsX3N1YnF1ZXJ5ID0gY3Jl YXRlUFFFeHBCdWZmZXIoKTsKKwlQUUV4cEJ1ZmZlciBpbml0X3JhY2xfc3VicXVlcnkgPSBjcmVh dGVQUUV4cEJ1ZmZlcigpOworCVBHcmVzdWx0ICAgKnJlczsKKwlWYXJpYWJsZUluZm8gKnZhcmlu Zm87CisJaW50CQkJaV90YWJsZW9pZDsKKwlpbnQJCQlpX29pZDsKKwlpbnQJCQlpX3Zhcm5hbWU7 CisJaW50CQkJaV92YXJuYW1lc3BhY2U7CisJaW50CQkJaV92YXJ0eXBlOworCWludAkJCWlfdmFy dHlwbmFtZTsKKwlpbnQJCQlpX3ZhcmRlZmV4cHI7CisJaW50CQkJaV9yb2xuYW1lOworCWludAkJ CWlfdmFyYWNsOworCWludAkJCWlfcnZhcmFjbDsKKwlpbnQJCQlpX2luaXR2YXJhY2w7CisJaW50 CQkJaV9pbml0cnZhcmFjbDsKKwlpbnQJCQlpLAorCQkJCW50dXBzOworCisJaWYgKGZvdXQtPnJl bW90ZVZlcnNpb24gPD0gMTEwMDAwKQorCQlyZXR1cm47CisKKwlhY2xfc3VicXVlcnkgPSBjcmVh dGVQUUV4cEJ1ZmZlcigpOworCXJhY2xfc3VicXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwor CWluaXRfYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlpbml0X3JhY2xfc3Vi cXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCisJYnVpbGRBQ0xRdWVyaWVzKGFjbF9zdWJx dWVyeSwgcmFjbF9zdWJxdWVyeSwgaW5pdF9hY2xfc3VicXVlcnksCisJCQkJCWluaXRfcmFjbF9z dWJxdWVyeSwgInYudmFyYWNsIiwgInYudmFyb3duZXIiLCAiJ1YnIiwKKwkJCQkJZG9wdC0+Ymlu YXJ5X3VwZ3JhZGUpOworCisJcXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCisJcmVzZXRQ UUV4cEJ1ZmZlcihxdWVyeSk7CisKKwkvKiBHZXQgdGhlIHZhcmlhYmxlcyBpbiBjdXJyZW50IGRh dGFiYXNlLiAqLworCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAorCQkJCQkJICAiU0VMRUNUIHYu dGFibGVvaWQsIHYub2lkLCB2LnZhcm5hbWUsICIKKwkJCQkJCSAgInYudmFybmFtZXNwYWNlLCIK KwkJCQkJCSAgIiglcyB2YXJvd25lcikgQVMgcm9sbmFtZSwgIgorCQkJCQkJICAiJXMgYXMgdmFy YWNsLCAiCisJCQkJCQkgICIlcyBhcyBydmFyYWNsLCAiCisJCQkJCQkgICIlcyBhcyBpbml0dmFy YWNsLCAiCisJCQkJCQkgICIlcyBhcyBpbml0cnZhcmFjbCwgIgorCQkJCQkJICAidi52YXJ0eXBl LCAiCisJCQkJCQkgICJwZ19jYXRhbG9nLmZvcm1hdF90eXBlKHYudmFydHlwZSwgdi52YXJ0eXBt b2QpIGFzIHZhcnR5cG5hbWUsICIKKwkJCQkJCSAgInBnX2NhdGFsb2cucGdfZ2V0X2V4cHIodi52 YXJkZWZleHByLDApIGFzIHZhcmRlZmV4cHIgIgorCQkJCQkJICAiRlJPTSBwZ192YXJpYWJsZSB2 ICIKKwkJCQkJCSAgIkxFRlQgSk9JTiBwZ19pbml0X3ByaXZzIHBpcCAiCisJCQkJCQkgICJPTiAo di5vaWQgPSBwaXAub2Jqb2lkICIKKwkJCQkJCSAgIkFORCBwaXAuY2xhc3NvaWQgPSAncGdfdmFy aWFibGUnOjpyZWdjbGFzcyAiCisJCQkJCQkgICJBTkQgcGlwLm9ianN1YmlkID0gMCkiLAorCQkJ CQkJICB1c2VybmFtZV9zdWJxdWVyeSwKKwkJCQkJCSAgYWNsX3N1YnF1ZXJ5LT5kYXRhLAorCQkJ CQkJICByYWNsX3N1YnF1ZXJ5LT5kYXRhLAorCQkJCQkJICBpbml0X2FjbF9zdWJxdWVyeS0+ZGF0 YSwKKwkJCQkJCSAgaW5pdF9yYWNsX3N1YnF1ZXJ5LT5kYXRhKTsKKworCWRlc3Ryb3lQUUV4cEJ1 ZmZlcihhY2xfc3VicXVlcnkpOworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihyYWNsX3N1YnF1ZXJ5KTsK KwlkZXN0cm95UFFFeHBCdWZmZXIoaW5pdF9hY2xfc3VicXVlcnkpOworCWRlc3Ryb3lQUUV4cEJ1 ZmZlcihpbml0X3JhY2xfc3VicXVlcnkpOworCisJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQs IHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOworCisJbnR1cHMgPSBQUW50dXBsZXMocmVz KTsKKworCWlfdGFibGVvaWQgPSBQUWZudW1iZXIocmVzLCAidGFibGVvaWQiKTsKKwlpX29pZCA9 IFBRZm51bWJlcihyZXMsICJvaWQiKTsKKwlpX3Zhcm5hbWUgPSBQUWZudW1iZXIocmVzLCAidmFy bmFtZSIpOworCWlfdmFybmFtZXNwYWNlID0gUFFmbnVtYmVyKHJlcywgInZhcm5hbWVzcGFjZSIp OworCWlfcm9sbmFtZSA9IFBRZm51bWJlcihyZXMsICJyb2xuYW1lIik7CisJaV92YXJ0eXBlID0g UFFmbnVtYmVyKHJlcywgInZhcnR5cGUiKTsKKwlpX3ZhcnR5cG5hbWUgPSBQUWZudW1iZXIocmVz LCAidmFydHlwbmFtZSIpOworCWlfdmFyZGVmZXhwciA9IFBRZm51bWJlcihyZXMsICJ2YXJkZWZl eHByIik7CisJaV92YXJhY2wgPSBQUWZudW1iZXIocmVzLCAidmFyYWNsIik7CisJaV9ydmFyYWNs ID0gUFFmbnVtYmVyKHJlcywgInJ2YXJhY2wiKTsKKwlpX2luaXR2YXJhY2wgPSBQUWZudW1iZXIo cmVzLCAiaW5pdHZhcmFjbCIpOworCWlfaW5pdHJ2YXJhY2wgPSBQUWZudW1iZXIocmVzLCAiaW5p dHJ2YXJhY2wiKTsKKworCXZhcmluZm8gPSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoVmFyaWFi bGVJbmZvKSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnR1cHM7IGkrKykKKwl7CisJCVR5cGVJbmZv CSAgICp2dHlwZTsKKworCQl2YXJpbmZvW2ldLmRvYmoub2JqVHlwZSA9IERPX1ZBUklBQkxFOwor CQl2YXJpbmZvW2ldLmRvYmouY2F0SWQudGFibGVvaWQgPQorCQkJYXRvb2lkKFBRZ2V0dmFsdWUo cmVzLCBpLCBpX3RhYmxlb2lkKSk7CisJCXZhcmluZm9baV0uZG9iai5jYXRJZC5vaWQgPSBhdG9v aWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfb2lkKSk7CisJCUFzc2lnbkR1bXBJZCgmdmFyaW5mb1tp XS5kb2JqKTsKKwkJdmFyaW5mb1tpXS5kb2JqLm5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShy ZXMsIGksIGlfdmFybmFtZSkpOworCQl2YXJpbmZvW2ldLmRvYmoubmFtZXNwYWNlID0KKwkJCWZp bmROYW1lc3BhY2UoZm91dCwKKwkJCQkJCSAgYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3Zh cm5hbWVzcGFjZSkpKTsKKworCQl2YXJpbmZvW2ldLnJvbG5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2 YWx1ZShyZXMsIGksIGlfcm9sbmFtZSkpOworCQl2YXJpbmZvW2ldLnZhcnR5cGUgPSBhdG9vaWQo UFFnZXR2YWx1ZShyZXMsIGksIGlfdmFydHlwZSkpOworCQl2YXJpbmZvW2ldLnZhcnR5cG5hbWUg PSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFydHlwbmFtZSkpOworCisJCXZhcmlu Zm9baV0udmFyYWNsID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcmFjbCkpOwor CQl2YXJpbmZvW2ldLnJ2YXJhY2wgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcnZh cmFjbCkpOworCQl2YXJpbmZvW2ldLmluaXR2YXJhY2wgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShy ZXMsIGksIGlfaW5pdHZhcmFjbCkpOworCQl2YXJpbmZvW2ldLmluaXRydmFyYWNsID0gcGdfc3Ry ZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2luaXRydmFyYWNsKSk7CisKKwkJLyogRGVjaWRlIHdo ZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCisJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYodmFy aW5mb1tpXS5kb2JqKSwgZm91dCk7CisKKwkJLyogRG8gbm90IHRyeSB0byBkdW1wIEFDTCBpZiBu byBBQ0wgZXhpc3RzLiAqLworCQlpZiAoUFFnZXRpc251bGwocmVzLCBpLCBpX3ZhcmFjbCkgJiYg UFFnZXRpc251bGwocmVzLCBpLCBpX3J2YXJhY2wpICYmCisJCQlQUWdldGlzbnVsbChyZXMsIGks IGlfaW5pdHZhcmFjbCkgJiYKKwkJCVBRZ2V0aXNudWxsKHJlcywgaSwgaV9pbml0cnZhcmFjbCkp CisJCQl2YXJpbmZvW2ldLmRvYmouZHVtcCAmPSB+RFVNUF9DT01QT05FTlRfQUNMOworCisJCWlm IChQUWdldGlzbnVsbChyZXMsIGksIGlfdmFyZGVmZXhwcikpCisJCQl2YXJpbmZvW2ldLnZhcmRl ZmV4cHIgPSBOVUxMOworCQllbHNlCisJCQl2YXJpbmZvW2ldLnZhcmRlZmV4cHIgPSBwZ19zdHJk dXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFyZGVmZXhwcikpOworCisJCWlmIChzdHJsZW4odmFy aW5mb1tpXS5yb2xuYW1lKSA9PSAwKQorCQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBvd25l ciBvZiB2YXJpYWJsZSBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkXG4iLAorCQkJCQkgIHZh cmluZm9baV0uZG9iai5uYW1lKTsKKworCQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1 bXAgaXQgKi8KKwkJc2VsZWN0RHVtcGFibGVPYmplY3QoJih2YXJpbmZvW2ldLmRvYmopLCBmb3V0 KTsKKworCQl2dHlwZSA9IGZpbmRUeXBlQnlPaWQodmFyaW5mb1tpXS52YXJ0eXBlKTsKKwkJYWRk T2JqZWN0RGVwZW5kZW5jeSgmdmFyaW5mb1tpXS5kb2JqLCB2dHlwZS0+ZG9iai5kdW1wSWQpOwor CX0KKwlQUWNsZWFyKHJlcyk7CisKKwlkZXN0cm95UFFFeHBCdWZmZXIocXVlcnkpOworfQorCisv KgorICogZHVtcFZhcmlhYmxlCisgKgkgIGR1bXAgdGhlIGRlZmluaXRpb24gb2YgdGhlIGdpdmVu IHZhcmlhYmxlcworICovCitzdGF0aWMgdm9pZAorZHVtcFZhcmlhYmxlKEFyY2hpdmUgKmZvdXQs IFZhcmlhYmxlSW5mbyAqdmFyaW5mbykKK3sKKwlEdW1wT3B0aW9ucyAqZG9wdCA9IGZvdXQtPmRv cHQ7CisKKwlQUUV4cEJ1ZmZlciBkZWxxOworCVBRRXhwQnVmZmVyIHF1ZXJ5OworCWNvbnN0IGNo YXIJICAgKnZhcm5hbWU7CisJY29uc3QgY2hhcgkgICAqdmFydHlwbmFtZTsKKwljb25zdCBjaGFy CSAgICp2YXJkZWZleHByOworCisJLyogU2tpcCBpZiBub3QgdG8gYmUgZHVtcGVkICovCisJaWYg KCF2YXJpbmZvLT5kb2JqLmR1bXAgfHwgZG9wdC0+ZGF0YU9ubHkpCisJCXJldHVybjsKKworCWRl bHEgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsK KworCXZhcm5hbWUgPSBmbXRRdWFsaWZpZWREdW1wYWJsZSh2YXJpbmZvKTsKKwl2YXJ0eXBuYW1l ID0gdmFyaW5mby0+dmFydHlwbmFtZTsKKwl2YXJkZWZleHByID0gdmFyaW5mby0+dmFyZGVmZXhw cjsKKworCWFwcGVuZFBRRXhwQnVmZmVyKGRlbHEsICJEUk9QIFZBUklBQkxFICVzO1xuIiwKKwkJ CQkJICB2YXJuYW1lKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQ1JFQVRFIFZBUklB QkxFICVzIEFTICVzIiwKKwkJCQkJICB2YXJuYW1lLCB2YXJ0eXBuYW1lKTsKKworCWlmICh2YXJk ZWZleHByKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiBERUZBVUxUICVzIiwKKwkJCQkJ CSAgdmFyZGVmZXhwcik7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIjtcbiIpOworCisJ QXJjaGl2ZUVudHJ5KGZvdXQsIHZhcmluZm8tPmRvYmouY2F0SWQsIHZhcmluZm8tPmRvYmouZHVt cElkLAorCQkJCSB2YXJpbmZvLT5kb2JqLm5hbWUsCisJCQkJIE5VTEwsCisJCQkJIE5VTEwsCisJ CQkJIHZhcmluZm8tPnJvbG5hbWUsIGZhbHNlLAorCQkJCSAiVkFSSUFCTEUiLCBTRUNUSU9OX1BS RV9EQVRBLAorCQkJCSBxdWVyeS0+ZGF0YSwgZGVscS0+ZGF0YSwgTlVMTCwKKwkJCQkgTlVMTCwg MCwKKwkJCQkgTlVMTCwgTlVMTCk7CisKKwlpZiAodmFyaW5mby0+ZG9iai5kdW1wICYgRFVNUF9D T01QT05FTlRfQ09NTUVOVCkKKwkJZHVtcENvbW1lbnQoZm91dCwgIlZBUklBQkxFIiwgdmFybmFt ZSwKKwkJCQkJTlVMTCwgdmFyaW5mby0+cm9sbmFtZSwKKwkJCQkJdmFyaW5mby0+ZG9iai5jYXRJ ZCwgMCwgdmFyaW5mby0+ZG9iai5kdW1wSWQpOworCisJZGVzdHJveVBRRXhwQnVmZmVyKGRlbHEp OworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7Cit9CisKIHN0YXRpYyB2b2lkCiBiaW5hcnlf dXBncmFkZV9zZXRfdHlwZV9vaWRzX2J5X3R5cGVfb2lkKEFyY2hpdmUgKmZvdXQsCiAJCQkJCQkJ CQkJIFBRRXhwQnVmZmVyIHVwZ3JhZGVfYnVmZmVyLApAQCAtOTg0OSw2ICsxMDA1Miw5IEBAIGR1 bXBEdW1wYWJsZU9iamVjdChBcmNoaXZlICpmb3V0LCBEdW1wYWJsZU9iamVjdCAqZG9iaikKIAkJ Y2FzZSBET19TVUJTQ1JJUFRJT046CiAJCQlkdW1wU3Vic2NyaXB0aW9uKGZvdXQsIChTdWJzY3Jp cHRpb25JbmZvICopIGRvYmopOwogCQkJYnJlYWs7CisJCWNhc2UgRE9fVkFSSUFCTEU6CisJCQlk dW1wVmFyaWFibGUoZm91dCwgKFZhcmlhYmxlSW5mbyAqKSBkb2JqKTsKKwkJCWJyZWFrOwogCQlj YXNlIERPX1BSRV9EQVRBX0JPVU5EQVJZOgogCQljYXNlIERPX1BPU1RfREFUQV9CT1VOREFSWToK IAkJCS8qIG5ldmVyIGR1bXBlZCwgbm90aGluZyB0byBkbyAqLwpAQCAtMTc5MzUsNiArMTgxNDEs NyBAQCBhZGRCb3VuZGFyeURlcGVuZGVuY2llcyhEdW1wYWJsZU9iamVjdCAqKmRvYmpzLCBpbnQg bnVtT2JqcywKIAkJCWNhc2UgRE9fT1BGQU1JTFk6CiAJCQljYXNlIERPX0NPTExBVElPTjoKIAkJ CWNhc2UgRE9fQ09OVkVSU0lPTjoKKwkJCWNhc2UgRE9fVkFSSUFCTEU6CiAJCQljYXNlIERPX1RB QkxFOgogCQkJY2FzZSBET19BVFRSREVGOgogCQkJY2FzZSBET19QUk9DTEFORzoKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5o CmluZGV4IDE0NDgwMDVmMzAuLjBkNDliYjdlZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtODQsNyArODQs OCBAQCB0eXBlZGVmIGVudW0KIAlET19QT0xJQ1ksCiAJRE9fUFVCTElDQVRJT04sCiAJRE9fUFVC TElDQVRJT05fUkVMLAotCURPX1NVQlNDUklQVElPTgorCURPX1NVQlNDUklQVElPTiwKKwlET19W QVJJQUJMRQogfSBEdW1wYWJsZU9iamVjdFR5cGU7CiAKIC8qIGNvbXBvbmVudCB0eXBlcyBvZiBh biBvYmplY3Qgd2hpY2ggY2FuIGJlIHNlbGVjdGVkIGZvciBkdW1waW5nICovCkBAIC02MjUsNiAr NjI2LDIyIEBAIHR5cGVkZWYgc3RydWN0IF9TdWJzY3JpcHRpb25JbmZvCiAJY2hhcgkgICAqc3Vi cHVibGljYXRpb25zOwogfSBTdWJzY3JpcHRpb25JbmZvOwogCisvKgorICogVGhlIFZhcmlhYmxl SW5mbyBzdHJ1Y3QgaXMgdXNlZCB0byByZXByZXNlbnQgc2NoZW1hIHZhcmlhYmxlcworICovCit0 eXBlZGVmIHN0cnVjdCBfVmFyaWFibGVJbmZvCit7CisJRHVtcGFibGVPYmplY3QgZG9iajsKKwlP aWQJCQl2YXJ0eXBlOworCWNoYXIJICAgKnZhcnR5cG5hbWU7CisJY2hhcgkgICAqcm9sbmFtZTsJ CS8qIG5hbWUgb2Ygb3duZXIsIG9yIGVtcHR5IHN0cmluZyAqLworCWNoYXIJICAgKnZhcmRlZmV4 cHI7CisJY2hhcgkgICAqdmFyYWNsOworCWNoYXIJICAgKnJ2YXJhY2w7CisJY2hhcgkgICAqaW5p dHZhcmFjbDsKKwljaGFyCSAgICppbml0cnZhcmFjbDsKK30gVmFyaWFibGVJbmZvOworCiAvKgog ICogV2UgYnVpbGQgYW4gYXJyYXkgb2YgdGhlc2Ugd2l0aCBhbiBlbnRyeSBmb3IgZWFjaCBvYmpl Y3QgdGhhdCBpcyBhbgogICogZXh0ZW5zaW9uIG1lbWJlciBhY2NvcmRpbmcgdG8gcGdfZGVwZW5k LgpAQCAtNzI1LDUgKzc0Miw2IEBAIGV4dGVybiB2b2lkIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZl ICpmb3V0KTsKIGV4dGVybiB2b2lkIGdldFB1YmxpY2F0aW9uVGFibGVzKEFyY2hpdmUgKmZvdXQs IFRhYmxlSW5mbyB0YmxpbmZvW10sCiAJCQkJCSBpbnQgbnVtVGFibGVzKTsKIGV4dGVybiB2b2lk IGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCk7CitleHRlcm4gdm9pZCBnZXRWYXJpYWJs ZXMoQXJjaGl2ZSAqZm91dCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQR19EVU1QX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wX3NvcnQuYwppbmRleCA2MjI3YThmZDI2Li45NjlhMDIxNzcxIDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXBfc29ydC5jCkBAIC0xNDc3LDYgKzE0NzcsMTAgQEAgZGVzY3JpYmVEdW1wYWJsZU9iamVjdChE dW1wYWJsZU9iamVjdCAqb2JqLCBjaGFyICpidWYsIGludCBidWZzaXplKQogCQkJCQkgIlBPU1Qt REFUQSBCT1VOREFSWSAgKElEICVkKSIsCiAJCQkJCSBvYmotPmR1bXBJZCk7CiAJCQlyZXR1cm47 CisJCWNhc2UgRE9fVkFSSUFCTEU6CisJCQlzbnByaW50ZihidWYsIGJ1ZnNpemUsCisJCQkJCSAi VkFSSUFCTEUgJXMgIChJRCAlZCBPSUQgJXUpIiwKKwkJCQkJIG9iai0+bmFtZSwgb2JqLT5kdW1w SWQsIG9iai0+Y2F0SWQub2lkKTsKIAl9CiAJLyogc2hvdWxkbid0IGdldCBoZXJlICovCiAJc25w cmludGYoYnVmLCBidWZzaXplLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3Bn X2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCBlYzc1MWE3 YzIzLi4yYTY3NzY2ZWQ0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMjYwMSw2ICsy NjAxLDM4IEBAIG15ICV0ZXN0cyA9ICgKIAkJfSwKIAl9LAogCisJJ0NSRUFURSBWQVJJQUJMRSB0 ZXN0X3ZhcmlhYmxlJyA9PiB7CisJCWFsbF9ydW5zICAgICA9PiAxLAorCQljYXRjaF9hbGwgICAg PT4gJ0NSRUFURSAuLi4gY29tbWFuZHMnLAorCQljcmVhdGVfb3JkZXIgPT4gNjEsCisJCWNyZWF0 ZV9zcWwgICA9PiAnQ1JFQVRFIFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZSBBUyBpbnRlZ2Vy IERFRkFVTFQgMDsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgVkFSSUFCTEUgZHVt cF90ZXN0LnZhcmlhYmxlIEFTIGludGVnZXIgREVGQVVMVCAwO1xFL3htLAorCQlsaWtlID0+IHsK KwkJCWJpbmFyeV91cGdyYWRlICAgICAgICAgID0+IDEsCisJCQljbGVhbiAgICAgICAgICAgICAg ICAgICA9PiAxLAorCQkJY2xlYW5faWZfZXhpc3RzICAgICAgICAgPT4gMSwKKwkJCWNyZWF0ZWRi ICAgICAgICAgICAgICAgID0+IDEsCisJCQlkZWZhdWx0cyAgICAgICAgICAgICAgICA9PiAxLAor CQkJZXhjbHVkZV90ZXN0X3RhYmxlICAgICAgPT4gMSwKKwkJCWV4Y2x1ZGVfdGVzdF90YWJsZV9k YXRhID0+IDEsCisJCQlub19ibG9icyAgICAgICAgICAgICAgICA9PiAxLAorCQkJbm9fcHJpdnMg ICAgICAgICAgICAgICAgPT4gMSwKKwkJCW5vX293bmVyICAgICAgICAgICAgICAgID0+IDEsCisJ CQlvbmx5X2R1bXBfdGVzdF9zY2hlbWEgICA9PiAxLAorCQkJcGdfZHVtcGFsbF9kYnByaXZzICAg ICAgPT4gMSwKKwkJCXNjaGVtYV9vbmx5ICAgICAgICAgICAgID0+IDEsCisJCQlzZWN0aW9uX3By ZV9kYXRhICAgICAgICA9PiAxLAorCQkJdGVzdF9zY2hlbWFfcGx1c19ibG9icyAgPT4gMSwKKwkJ CXdpdGhfb2lkcyAgICAgICAgICAgICAgID0+IDEsIH0sCisJCXVubGlrZSA9PiB7CisJCQlleGNs dWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJCW9ubHlfZHVtcF90ZXN0X3RhYmxlICAgICA9 PiAxLAorCQkJcGdfZHVtcGFsbF9nbG9iYWxzICAgICAgID0+IDEsCisJCQlwZ19kdW1wYWxsX2ds b2JhbHNfY2xlYW4gPT4gMSwKKwkJCXJvbGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAorCQkJ c2VjdGlvbl9wb3N0X2RhdGEgICAgICAgID0+IDEsIH0sIH0sCisKIAknQ1JFQVRFIFZJRVcgdGVz dF92aWV3JyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA2MSwKIAkJY3JlYXRlX3NxbCAgID0+ICdD UkVBVEUgVklFVyBkdW1wX3Rlc3QudGVzdF92aWV3CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv Y29tbWFuZC5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwppbmRleCA1YjRkNTRhNDQyLi43M2E3 NTJmZDdlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9iaW4v cHNxbC9jb21tYW5kLmMKQEAgLTg1Myw2ICs4NTMsOSBAQCBleGVjX2NvbW1hbmRfZChQc3FsU2Nh blN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQog CQkJCQkJYnJlYWs7CiAJCQkJfQogCQkJCWJyZWFrOworCQkJY2FzZSAnVic6CQkJLyogVmFyaWFi bGVzICovCisJCQkJc3VjY2VzcyA9IGxpc3RWYXJpYWJsZXMocGF0dGVybiwgc2hvd192ZXJib3Nl KTsKKwkJCQlicmVhazsKIAkJCWNhc2UgJ3gnOgkJCS8qIEV4dGVuc2lvbnMgKi8KIAkJCQlpZiAo c2hvd192ZXJib3NlKQogCQkJCQlzdWNjZXNzID0gbGlzdEV4dGVuc2lvbkNvbnRlbnRzKHBhdHRl cm4pOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYwppbmRleCA4MGQ4MzM4Yjk2Li5kNjQ1YmJhN2FmIDEwMDY0NAotLS0gYS9zcmMv YmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNDE3 OCw2ICs0MTc4LDgwIEBAIGxpc3RTY2hlbWFzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVy Ym9zZSwgYm9vbCBzaG93U3lzdGVtKQogCXJldHVybiB0cnVlOwogfQogCisvKgorICogXGRWCisg KgorICogbGlzdFZhcmlhYmxlcygpCisgKi8KK2Jvb2wKK2xpc3RWYXJpYWJsZXMoY29uc3QgY2hh ciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQoreworCVBRRXhwQnVmZmVyRGF0YSBidWY7CisJUEdy ZXN1bHQgICAqcmVzOworCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CisJc3RhdGlj IGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisKKwlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CisK KwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lIGFzIFwi JXNcIixcbiIKKwkJCQkJICAiICB2LnZhcm5hbWUgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBn X2NhdGFsb2cuZm9ybWF0X3R5cGUodi52YXJ0eXBlLCB2LnZhcnR5cG1vZCkgYXMgXCIlc1wiLFxu IgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKHYudmFyb3duZXIpIGFzIFwi JXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2dldF9leHByKHYudmFyZGVmZXhwciwg MCkgYXMgXCIlc1wiIiwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIlNjaGVtYSIpLAorCQkJCQkgIGdl dHRleHRfbm9vcCgiTmFtZSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiVHlwZSIpLAorCQkJCQkg IGdldHRleHRfbm9vcCgiT3duZXIiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkRlZmF1bHQiKSk7 CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAorCQkJCQkJICJcbkZST00gcGdfY2F0YWxv Zy5wZ192YXJpYWJsZSB2IgorCQkJCQkJICJcbiAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdf bmFtZXNwYWNlIG4gT04gbi5vaWQgPSB2LnZhcm5hbWVzcGFjZSIpOworCisJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmJ1ZiwgIlxuV0hFUkUgdHJ1ZVxuIik7CisJaWYgKCFwYXR0ZXJuKQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiICAgICAgQU5EIG4ubnNwbmFtZSA8PiAncGdfY2F0YWxv ZydcbiIKKwkJCQkJCQkgIiAgICAgIEFORCBuLm5zcG5hbWUgPD4gJ2luZm9ybWF0aW9uX3NjaGVt YSdcbiIpOworCisJcHJvY2Vzc1NRTE5hbWVQYXR0ZXJuKHBzZXQuZGIsICZidWYsIHBhdHRlcm4s IHRydWUsIGZhbHNlLAorCQkJCQkJICAibi5uc3BuYW1lIiwgInYudmFybmFtZSIsIE5VTEwsCisJ CQkJCQkgICJwZ19jYXRhbG9nLnBnX3ZhcmlhYmxlX2lzX3Zpc2libGUodi5vaWQpIik7CisKKwlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiT1JERVIgQlkgMSwyOyIpOworCisJcmVzID0gUFNR TGV4ZWMoYnVmLmRhdGEpOworCXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsKKwlpZiAoIXJlcykKKwkJ cmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBNb3N0IGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJl IGNvbnRlbnQgdG8gcHJpbnQgYW4gZW1wdHkgdGFibGUgd2hlbgorCSAqIHRoZXJlIGFyZSBubyBt YXRjaGluZyBvYmplY3RzLiAgV2UgaW50ZW50aW9uYWxseSBkZXZpYXRlIGZyb20gdGhhdAorCSAq IGhlcmUsIGJ1dCBvbmx5IGluICFxdWlldCBtb2RlLCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLgor CSAqLworCWlmIChQUW50dXBsZXMocmVzKSA9PSAwICYmICFwc2V0LnF1aWV0KQorCXsKKwkJaWYg KHBhdHRlcm4pCisJCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHNjaGVtYSB2YXJpYWJs ZSBuYW1lZCBcIiVzXCIuXG4iLAorCQkJCQkgICBwYXR0ZXJuKTsKKwkJZWxzZQorCQkJcHNxbF9l cnJvcigiRGlkIG5vdCBmaW5kIGFueSBzY2hlbWEgdmFyaWFibGVzLlxuIik7CisJfQorCWVsc2UK Kwl7CisJCW15b3B0Lm51bGxQcmludCA9IE5VTEw7CisJCW15b3B0LnRpdGxlID0gXygiTGlzdCBv ZiB2YXJpYWJsZXMiKTsKKwkJbXlvcHQudHJhbnNsYXRlX2hlYWRlciA9IHRydWU7CisJCW15b3B0 LnRyYW5zbGF0ZV9jb2x1bW5zID0gdHJhbnNsYXRlX2NvbHVtbnM7CisJCW15b3B0Lm5fdHJhbnNs YXRlX2NvbHVtbnMgPSBsZW5ndGhvZih0cmFuc2xhdGVfY29sdW1ucyk7CisKKwkJcHJpbnRRdWVy eShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCX0K KworCVBRY2xlYXIocmVzKTsKKwlyZXR1cm4gdHJ1ZTsKK30KIAogLyoKICAqIFxkRnAKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgK aW5kZXggYTRjYzVlZmFlMC4uZWNjNGUzYTUzMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmgKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKQEAgLTYzLDYgKzYzLDkgQEAg ZXh0ZXJuIGJvb2wgbGlzdEFsbERicyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2Up OwogLyogXGR0LCBcZGksIFxkcywgXGRTLCBldGMuICovCiBleHRlcm4gYm9vbCBsaXN0VGFibGVz KGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2Us IGJvb2wgc2hvd1N5c3RlbSk7CiAKKy8qIFxkViAqLworZXh0ZXJuIGJvb2wgbGlzdFZhcmlhYmxl cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZhcmJvc2UpOworCiAvKiBcZEQgKi8KIGV4dGVy biBib29sIGxpc3REb21haW5zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9v bCBzaG93U3lzdGVtKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2hlbHAuYyBiL3NyYy9i aW4vcHNxbC9oZWxwLmMKaW5kZXggMzE2MDMwZDM1OC4uYWRjYzM2Y2I2ZSAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL2hlbHAuYworKysgYi9zcmMvYmluL3BzcWwvaGVscC5jCkBAIC0xNjcsNyAr MTY3LDcgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJICogVXNlICJw c3FsIC0taGVscD1jb21tYW5kcyB8IHdjIiB0byBjb3VudCBjb3JyZWN0bHkuICBJdCdzIG9rYXkg dG8gY291bnQKIAkgKiB0aGUgVVNFX1JFQURMSU5FIGxpbmUgZXZlbiBpbiBidWlsZHMgd2l0aG91 dCB0aGF0LgogCSAqLwotCW91dHB1dCA9IFBhZ2VPdXRwdXQoMTI1LCBwYWdlciA/ICYocHNldC5w b3B0LnRvcHQpIDogTlVMTCk7CisJb3V0cHV0ID0gUGFnZU91dHB1dCgxMjYsIHBhZ2VyID8gJihw c2V0LnBvcHQudG9wdCkgOiBOVUxMKTsKIAogCWZwcmludGYob3V0cHV0LCBfKCJHZW5lcmFsXG4i KSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxjb3B5cmlnaHQgICAgICAgICAgICAgc2hvdyBQ b3N0Z3JlU1FMIHVzYWdlIGFuZCBkaXN0cmlidXRpb24gdGVybXNcbiIpKTsKQEAgLTI1Nyw2ICsy NTcsNyBAQCBzbGFzaFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAlmcHJpbnRmKG91 dHB1dCwgXygiICBcXGRUW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IGRhdGEgdHlwZXNcbiIpKTsK IAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR1W1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IHJvbGVz XG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkdltTK10gW1BBVFRFUk5dICAgICAgbGlz dCB2aWV3c1xuIikpOworCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZFYgICAgIFtQQVRURVJOXSAg ICAgIGxpc3QgdmFyaWFibGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkeFsrXSAg W1BBVFRFUk5dICAgICAgbGlzdCBleHRlbnNpb25zXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8o IiAgXFxkeSAgICAgW1BBVFRFUk5dICAgICAgbGlzdCBldmVudCB0cmlnZ2Vyc1xuIikpOwogCWZw cmludGYob3V0cHV0LCBfKCIgIFxcbFsrXSAgIFtQQVRURVJOXSAgICAgIGxpc3QgZGF0YWJhc2Vz XG4iKSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggYmI2OTZmOGVlOS4uYTc1ODM4MTBlOCAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuYwpAQCAtODA1LDYgKzgwNSwyMiBAQCBzdGF0aWMgY29uc3QgU2NoZW1hUXVlcnkg UXVlcnlfZm9yX2xpc3Rfb2Zfc3RhdGlzdGljcyA9IHsKIAlOVUxMCiB9OwogCitzdGF0aWMgY29u c3QgU2NoZW1hUXVlcnkgUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzID0geworCS8qIG1pbl9z ZXJ2ZXJfdmVyc2lvbiAqLworCTAsCisJLyogY2F0bmFtZSAqLworCSJwZ19jYXRhbG9nLnBnX3Zh cmlhYmxlIHYiLAorCS8qIHNlbGNvbmRpdGlvbiAqLworCU5VTEwsCisJLyogdmlzY29uZGl0aW9u ICovCisJInBnX2NhdGFsb2cucGdfdmFyaWFibGVfaXNfdmlzaWJsZSh2Lm9pZCkiLAorCS8qIG5h bWVzcGFjZSAqLworCSJ2LnZhcm5hbWVzcGFjZSIsCisJLyogcmVzdWx0ICovCisJInBnX2NhdGFs b2cucXVvdGVfaWRlbnQodi52YXJuYW1lKSIsCisJLyogcXVhbHJlc3VsdCAqLworCU5VTEwKK307 CiAKIC8qCiAgKiBRdWVyaWVzIHRvIGdldCBsaXN0cyBvZiBuYW1lcyBvZiB2YXJpb3VzIGtpbmRz IG9mIHRoaW5ncywgcG9zc2libHkKQEAgLTEyNDksNiArMTI2NSw3IEBAIHN0YXRpYyBjb25zdCBw Z3NxbF90aGluZ190IHdvcmRzX2FmdGVyX2NyZWF0ZVtdID0gewogCQkJCQkJCQkJCQkJCQkJCQkg KiBUQUJMRSAuLi4gKi8KIAl7IlVTRVIiLCBRdWVyeV9mb3JfbGlzdF9vZl9yb2xlcyAiIFVOSU9O IFNFTEVDVCAnTUFQUElORyBGT1InIn0sCiAJeyJVU0VSIE1BUFBJTkcgRk9SIiwgTlVMTCwgTlVM TCwgTlVMTH0sCisJeyJWQVJJQUJMRSIsIE5VTEwsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92 YXJpYWJsZXN9LAogCXsiVklFVyIsIE5VTEwsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92aWV3 c30sCiAJe05VTEx9CQkJCQkJLyogZW5kIG9mIGxpc3QgKi8KIH07CkBAIC0xNjA0LDcgKzE2MjEs NyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5k KQogCQkiQUJPUlQiLCAiQUxURVIiLCAiQU5BTFlaRSIsICJCRUdJTiIsICJDQUxMIiwgIkNIRUNL UE9JTlQiLCAiQ0xPU0UiLCAiQ0xVU1RFUiIsCiAJCSJDT01NRU5UIiwgIkNPTU1JVCIsICJDT1BZ IiwgIkNSRUFURSIsICJERUFMTE9DQVRFIiwgIkRFQ0xBUkUiLAogCQkiREVMRVRFIEZST00iLCAi RElTQ0FSRCIsICJETyIsICJEUk9QIiwgIkVORCIsICJFWEVDVVRFIiwgIkVYUExBSU4iLAotCQki RkVUQ0giLCAiR1JBTlQiLCAiSU1QT1JUIiwgIklOU0VSVCIsICJMSVNURU4iLCAiTE9BRCIsICJM T0NLIiwKKwkJIkZFVENIIiwgIkdSQU5UIiwgIklNUE9SVCIsICJJTlNFUlQiLCAiTEVUIiwgIkxJ U1RFTiIsICJMT0FEIiwgIkxPQ0siLAogCQkiTU9WRSIsICJOT1RJRlkiLCAiUFJFUEFSRSIsCiAJ CSJSRUFTU0lHTiIsICJSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIiwgIlJFSU5ERVgiLCAiUkVM RUFTRSIsCiAJCSJSRVNFVCIsICJSRVZPS0UiLCAiUk9MTEJBQ0siLApAQCAtMTYyMSw5ICsxNjM4 LDkgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVu ZCkKIAkJIlxcZCIsICJcXGRhIiwgIlxcZEEiLCAiXFxkYiIsICJcXGRjIiwgIlxcZEMiLCAiXFxk ZCIsICJcXGRkcCIsICJcXGREIiwKIAkJIlxcZGVzIiwgIlxcZGV0IiwgIlxcZGV1IiwgIlxcZGV3 IiwgIlxcZEUiLCAiXFxkZiIsCiAJCSJcXGRGIiwgIlxcZEZkIiwgIlxcZEZwIiwgIlxcZEZ0Iiwg IlxcZGciLCAiXFxkaSIsICJcXGRsIiwgIlxcZEwiLAotCQkiXFxkbSIsICJcXGRuIiwgIlxcZG8i LCAiXFxkTyIsICJcXGRwIiwKKwkJIlxcZG0iLCAiXFxkbiIsICJcXGRvIiwgIlxcZE8iLCAiXFxk cCIKIAkJIlxcZHJkcyIsICJcXGRScyIsICJcXGRScCIsICJcXGRzIiwgIlxcZFMiLAotCQkiXFxk dCIsICJcXGRUIiwgIlxcZHYiLCAiXFxkdSIsICJcXGR4IiwgIlxcZHkiLAorCQkiXFxkdCIsICJc XGRUIiwgIlxcZHYiLCAiXFxkdSIsICJcXGR4IiwgIlxcZHkiLCAiXFxkViIsCiAJCSJcXGUiLCAi XFxlY2hvIiwgIlxcZWYiLCAiXFxlbGlmIiwgIlxcZWxzZSIsICJcXGVuY29kaW5nIiwKIAkJIlxc ZW5kaWYiLCAiXFxlcnJ2ZXJib3NlIiwgIlxcZXYiLAogCQkiXFxmIiwKQEAgLTE5ODgsNiArMjAw NSw5IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWx0ZXJfc3lzdGVt X3NldF92YXJzKTsKIAllbHNlIGlmIChNYXRjaGVzNCgiQUxURVIiLCAiU1lTVEVNIiwgIlNFVCIs IE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9DT05TVCgiVE8iKTsKKwkvKiBBTFRFUiBWQVJJ QUJMRSA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRjaGVzMygiQUxURVIiLCAiVkFSSUFCTEUiLCBN YXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEhfTElTVDMoIk9XTkVSIFRPIiwgIlJFTkFNRSBUTyIs ICJTRVQgU0NIRU1BIik7CiAJLyogQUxURVIgVklFVyA8bmFtZT4gKi8KIAllbHNlIGlmIChNYXRj aGVzMygiQUxURVIiLCAiVklFVyIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUNCgi QUxURVIgQ09MVU1OIiwgIk9XTkVSIFRPIiwgIlJFTkFNRSBUTyIsCkBAIC0yODM3LDYgKzI4NTcs MTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVu ZCkKIAllbHNlIGlmIChNYXRjaGVzNCgiQ1JFQVRFIiwgIlJPTEV8VVNFUnxHUk9VUCIsIE1hdGNo QW55LCAiSU4iKSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiR1JPVVAiLCAiUk9MRSIpOwogCisv KiBDUkVBVEUgVkFSSUFCTEUgLS0tIGlzIGFsbG93ZWQgaW5zaWRlIENSRUFURSBTQ0hFTUEsIHNv IHVzZSBUYWlsTWF0Y2hlcyAqLworCS8qIENvbXBsZXRlIENSRUFURSBWQVJJQUJMRSA8bmFtZT4g d2l0aCBBUyAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzMygiQ1JFQVRFIiwgIlZBUklBQkxFIiwg TWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIX0NPTlNUKCJBUyIpOworCS8qIENvbXBsZXRlIENS RUFURSBWQVJJQUJMRSA8bmFtZT4gd2l0aCBBUyB0eXBlcyovCisJZWxzZSBpZiAoVGFpbE1hdGNo ZXM0KCJDUkVBVEUiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSwgIkFTIikpCisJCUNPTVBMRVRFX1dJ VEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2RhdGF0eXBlcywgTlVMTCk7CisKIC8q IENSRUFURSBWSUVXIC0tLSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2Ug VGFpbE1hdGNoZXMgKi8KIAkvKiBDb21wbGV0ZSBDUkVBVEUgVklFVyA8bmFtZT4gd2l0aCBBUyAq LwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzMygiQ1JFQVRFIiwgIlZJRVciLCBNYXRjaEFueSkpCkBA IC0yODkwLDcgKzI5MTgsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50 IHN0YXJ0LCBpbnQgZW5kKQogCiAvKiBESVNDQVJEICovCiAJZWxzZSBpZiAoTWF0Y2hlczEoIkRJ U0NBUkQiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNCgiQUxMIiwgIlBMQU5TIiwgIlNFUVVFTkNF UyIsICJURU1QIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDUoIkFMTCIsICJQTEFOUyIsICJTRVFV RU5DRVMiLCAiVEVNUCIsICJWQVJJQUJMRVMiKTsKIAogLyogRE8gKi8KIAllbHNlIGlmIChNYXRj aGVzMSgiRE8iKSkKQEAgLTI5OTIsNiArMzAyMCwxMiBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3Qg Y2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKE1hdGNoZXM1KCJEUk9Q IiwgIlJVTEUiLCBNYXRjaEFueSwgIk9OIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIX0xJ U1QyKCJDQVNDQURFIiwgIlJFU1RSSUNUIik7CiAKKwkvKiBEUk9QIFZBUklBQkxFICovCisJZWxz ZSBpZiAoTWF0Y2hlczIoIkRST1AiLCAiVkFSSUFCTEUiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hF TUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKKwllbHNlIGlmIChN YXRjaGVzMygiRFJPUCIsICJWQVJJQUJMRSIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSF9M SVNUMigiQ0FTQ0FERSIsICJSRVNUUklDVCIpOworCiAvKiBFWEVDVVRFICovCiAJZWxzZSBpZiAo TWF0Y2hlczEoIkVYRUNVVEUiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlz dF9vZl9wcmVwYXJlZF9zdGF0ZW1lbnRzKTsKQEAgLTMwMDIsMTQgKzMwMzYsMTQgQEAgcHNxbF9j b21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkgKiBDb21w bGV0ZSBFWFBMQUlOIFtBTkFMWVpFXSBbVkVSQk9TRV0gd2l0aCBsaXN0IG9mIEVYUExBSU4tYWJs ZSBjb21tYW5kcwogCSAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJFWFBMQUlOIikpCi0JCUNPTVBM RVRFX1dJVEhfTElTVDcoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJE RUNMQVJFIiwKLQkJCQkJCQkiQU5BTFlaRSIsICJWRVJCT1NFIik7CisJCUNPTVBMRVRFX1dJVEhf TElTVDgoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwK KwkJCQkJCQkiQU5BTFlaRSIsICJWRVJCT1NFIiwgIkxFVCIpOwogCWVsc2UgaWYgKE1hdGNoZXMy KCJFWFBMQUlOIiwgIkFOQUxZWkUiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNigiU0VMRUNUIiwg IklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUiLAotCQkJCQkJCSJWRVJCT1NF Iik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDcoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwg IlVQREFURSIsICJERUNMQVJFIiwKKwkJCQkJCQkiVkVSQk9TRSIsICJMRVQiKTsKIAllbHNlIGlm IChNYXRjaGVzMigiRVhQTEFJTiIsICJWRVJCT1NFIikgfHwKIAkJCSBNYXRjaGVzMygiRVhQTEFJ TiIsICJBTkFMWVpFIiwgIlZFUkJPU0UiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNSgiU0VMRUNU IiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUiKTsKKwkJQ09NUExFVEVf V0lUSF9MSVNUNigiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xB UkUiLCAiTEVUIik7CiAKIC8qIEZFVENIICYmIE1PVkUgKi8KIAkvKiBDb21wbGV0ZSBGRVRDSCB3 aXRoIG9uZSBvZiBGT1JXQVJELCBCQUNLV0FSRCwgUkVMQVRJVkUgKi8KQEAgLTMxMTgsNiArMzE1 Miw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFJPVVRJTkVTIElOIFNDSEVNQSci CiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEnIgog CQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBUQUJMRVMgSU4gU0NIRU1BJyIKKwkJCQkJ CQkJCSAgICIgVU5JT04gU0VMRUNUICdBTEwgVkFSSUFCTEVTIElOIFNDSEVNQSciCiAJCQkJCQkJ CQkgICAiIFVOSU9OIFNFTEVDVCAnREFUQUJBU0UnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxF Q1QgJ0RPTUFJTiciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnRk9SRUlHTiBEQVRBIFdS QVBQRVInIgpAQCAtMzEzMSwxNCArMzE2NiwxNiBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hh ciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1Qg J1NFUVVFTkNFJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdUQUJMRSciCiAJCQkJCQkJ CQkgICAiIFVOSU9OIFNFTEVDVCAnVEFCTEVTUEFDRSciCi0JCQkJCQkJCQkgICAiIFVOSU9OIFNF TEVDVCAnVFlQRSciKTsKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdUWVBFJyIKKwkJCQkJ CQkJCSAgICIgVU5JT04gU0VMRUNUICdWQVJJQUJMRSciKTsKIAl9CiAJZWxzZSBpZiAoVGFpbE1h dGNoZXM0KCJHUkFOVHxSRVZPS0UiLCBNYXRjaEFueSwgIk9OIiwgIkFMTCIpKQotCQlDT01QTEVU RV9XSVRIX0xJU1Q1KCJGVU5DVElPTlMgSU4gU0NIRU1BIiwKKwkJQ09NUExFVEVfV0lUSF9MSVNU NigiRlVOQ1RJT05TIElOIFNDSEVNQSIsCiAJCQkJCQkJIlBST0NFRFVSRVMgSU4gU0NIRU1BIiwK IAkJCQkJCQkiUk9VVElORVMgSU4gU0NIRU1BIiwKIAkJCQkJCQkiU0VRVUVOQ0VTIElOIFNDSEVN QSIsCi0JCQkJCQkJIlRBQkxFUyBJTiBTQ0hFTUEiKTsKKwkJCQkJCQkiVEFCTEVTIElOIFNDSEVN QSIsCisJCQkJCQkJIlZBUklBQkxFUyBJTiBTQ0hFTUEiKTsKIAllbHNlIGlmIChUYWlsTWF0Y2hl czQoIkdSQU5UfFJFVk9LRSIsIE1hdGNoQW55LCAiT04iLCAiRk9SRUlHTiIpKQogCQlDT01QTEVU RV9XSVRIX0xJU1QyKCJEQVRBIFdSQVBQRVIiLCAiU0VSVkVSIik7CiAKQEAgLTMxNzIsNiArMzIw OSw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAJCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc3BhY2Vz KTsKIAkJZWxzZSBpZiAoVGFpbE1hdGNoZXMxKCJUWVBFIikpCiAJCQlDT01QTEVURV9XSVRIX1ND SEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9kYXRhdHlwZXMsIE5VTEwpOworCQllbHNlIGlm IChUYWlsTWF0Y2hlczEoIlZBUklBQkxFIikpCisJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVS WShRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMsIE5VTEwpOwogCQllbHNlIGlmIChUYWlsTWF0 Y2hlczQoIkdSQU5UIiwgTWF0Y2hBbnksIE1hdGNoQW55LCBNYXRjaEFueSkpCiAJCQlDT01QTEVU RV9XSVRIX0NPTlNUKCJUTyIpOwogCQllbHNlCkBAIC0zMzI0LDcgKzMzNjMsNyBAQCBwc3FsX2Nv bXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCiAvKiBQUkVQ QVJFIHh4IEFTICovCiAJZWxzZSBpZiAoTWF0Y2hlczMoIlBSRVBBUkUiLCBNYXRjaEFueSwgIkFT IikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDQoIlNFTEVDVCIsICJVUERBVEUiLCAiSU5TRVJUIiwg IkRFTEVURSBGUk9NIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDUoIlNFTEVDVCIsICJVUERBVEUi LCAiSU5TRVJUIiwgIkRFTEVURSBGUk9NIiwgIkxFVCIpOwogCiAvKgogICogUFJFUEFSRSBUUkFO U0FDVElPTiBpcyBtaXNzaW5nIG9uIHB1cnBvc2UuIEl0J3MgaW50ZW5kZWQgZm9yIHRyYW5zYWN0 aW9uCkBAIC0zNTQ3LDYgKzM1ODYsMTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRl eHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChUYWlsTWF0Y2hlczQoIlVQREFURSIs IE1hdGNoQW55LCAiU0VUIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIX0NPTlNUKCI9Iik7 CiAKKy8qIExFVCAtLS0gY2FuIGJlIGluc2lkZSBFWFBMQUlOLCBQUkVQQVJFIGV0YyAqLworCS8q IElmIHByZXYuIHdvcmQgaXMgTEVUIHN1Z2dlc3QgYSBsaXN0IG9mIHZhcmlhYmxlcyAqLworCWVs c2UgaWYgKFRhaWxNYXRjaGVzMSgiTEVUIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZ KFF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcywgTlVMTCk7CisJLyogQ29tcGxldGUgTEVUIDx2 YXJpYWJsZT4gd2l0aCAiPSIgKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlczIoIkxFVCIsIE1hdGNo QW55KSkKKwkJQ09NUExFVEVfV0lUSF9DT05TVCgiPSIpOworCiAvKiBVU0VSIE1BUFBJTkcgKi8K IAllbHNlIGlmIChNYXRjaGVzMygiQUxURVJ8Q1JFQVRFfERST1AiLCAiVVNFUiIsICJNQVBQSU5H IikpCiAJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIkZPUiIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3ku aAppbmRleCA0NmMyNzFhNDZjLi4zZTM4YTA1ZTU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL2RlcGVuZGVuY3kuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3ku aApAQCAtMTgwLDcgKzE4MCw4IEBAIHR5cGVkZWYgZW51bSBPYmplY3RDbGFzcwogCU9DTEFTU19Q VUJMSUNBVElPTiwJCQkvKiBwZ19wdWJsaWNhdGlvbiAqLwogCU9DTEFTU19QVUJMSUNBVElPTl9S RUwsCQkvKiBwZ19wdWJsaWNhdGlvbl9yZWwgKi8KIAlPQ0xBU1NfU1VCU0NSSVBUSU9OLAkJLyog cGdfc3Vic2NyaXB0aW9uICovCi0JT0NMQVNTX1RSQU5TRk9STQkJCS8qIHBnX3RyYW5zZm9ybSAq LworCU9DTEFTU19UUkFOU0ZPUk0sCQkJLyogcGdfdHJhbnNmb3JtICovCisJT0NMQVNTX1ZBUklB QkxFCQkJCS8qIHBnX3ZhcmlhYmxlICovCiB9IE9iamVjdENsYXNzOwogCiAjZGVmaW5lIExBU1Rf T0NMQVNTCQlPQ0xBU1NfVFJBTlNGT1JNCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L2luZGV4aW5nLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4aW5nLmgKaW5kZXggMjQ5MTU4 MjRjYS4uZGFlODBjMjBhOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleGlu Zy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXhpbmcuaApAQCAtMzYwLDQgKzM2MCwx MCBAQCBERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19zdWJzY3JpcHRpb25fc3VibmFtZV9pbmRleCwg NjExNSwgb24gcGdfc3Vic2NyaXB0aW9uIHVzaQogREVDTEFSRV9VTklRVUVfSU5ERVgocGdfc3Vi c2NyaXB0aW9uX3JlbF9zcnJlbGlkX3Nyc3ViaWRfaW5kZXgsIDYxMTcsIG9uIHBnX3N1YnNjcmlw dGlvbl9yZWwgdXNpbmcgYnRyZWUoc3JyZWxpZCBvaWRfb3BzLCBzcnN1YmlkIG9pZF9vcHMpKTsK ICNkZWZpbmUgU3Vic2NyaXB0aW9uUmVsU3JyZWxpZFNyc3ViaWRJbmRleElkIDYxMTcKIAorREVD TEFSRV9VTklRVUVfSU5ERVgocGdfdmFyaWFibGVfb2lkX2luZGV4LCA0Mjg4LCBvbiBwZ192YXJp YWJsZSB1c2luZyBidHJlZShvaWQgb2lkX29wcykpOworI2RlZmluZSBWYXJpYWJsZU9iamVjdElu ZGV4SWQgNDI4OAorCitERUNMQVJFX1VOSVFVRV9JTkRFWChwZ192YXJpYWJsZV92YXJuYW1lX25z cF9pbmRleCwgNDI4OSwgb24gcGdfdmFyaWFibGUgdXNpbmcgYnRyZWUodmFybmFtZSBuYW1lX29w cywgdmFybmFtZXNwYWNlIG9pZF9vcHMpKTsKKyNkZWZpbmUgVmFyaWFibGVOYW1lTnNwSW5kZXhJ ZCAgNDI4OQorCiAjZW5kaWYJCQkJCQkJLyogSU5ERVhJTkdfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNw YWNlLmgKaW5kZXggMGUyMDIzNzJkNS4uODgxMjA3NWIyZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFj ZS5oCkBAIC03NSwxMCArNzUsMTMgQEAgZXh0ZXJuIE9pZCBSYW5nZVZhckdldEFuZENoZWNrQ3Jl YXRpb25OYW1lc3BhY2UoUmFuZ2VWYXIgKm5ld1JlbGF0aW9uLAogZXh0ZXJuIHZvaWQgUmFuZ2VW YXJBZGp1c3RSZWxhdGlvblBlcnNpc3RlbmNlKFJhbmdlVmFyICpuZXdSZWxhdGlvbiwgT2lkIG5z cGlkKTsKIGV4dGVybiBPaWQJUmVsbmFtZUdldFJlbGlkKGNvbnN0IGNoYXIgKnJlbG5hbWUpOwog ZXh0ZXJuIGJvb2wgUmVsYXRpb25Jc1Zpc2libGUoT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIFZh cmlhYmxlSXNWaXNpYmxlKE9pZCByZWxpZCk7CiAKIGV4dGVybiBPaWQJVHlwZW5hbWVHZXRUeXBp ZChjb25zdCBjaGFyICp0eXBuYW1lKTsKIGV4dGVybiBib29sIFR5cGVJc1Zpc2libGUoT2lkIHR5 cGlkKTsKIAorZXh0ZXJuIGJvb2wgVmFyaWFibGVJc1Zpc2libGUoT2lkIHZhcmlkKTsKKwogZXh0 ZXJuIEZ1bmNDYW5kaWRhdGVMaXN0IEZ1bmNuYW1lR2V0Q2FuZGlkYXRlcyhMaXN0ICpuYW1lcywK IAkJCQkJICBpbnQgbmFyZ3MsIExpc3QgKmFyZ25hbWVzLAogCQkJCQkgIGJvb2wgZXhwYW5kX3Zh cmlhZGljLApAQCAtMTQ2LDYgKzE0OSwxMCBAQCBleHRlcm4gdm9pZCBTZXRUZW1wTmFtZXNwYWNl U3RhdGUoT2lkIHRlbXBOYW1lc3BhY2VJZCwKIAkJCQkJICBPaWQgdGVtcFRvYXN0TmFtZXNwYWNl SWQpOwogZXh0ZXJuIHZvaWQgUmVzZXRUZW1wVGFibGVOYW1lc3BhY2Uodm9pZCk7CiAKK2V4dGVy biBMaXN0ICpOYW1lc0Zyb21MaXN0KExpc3QgKm5hbWVzKTsKK2V4dGVybiBPaWQgbG9va3VwX3Zh cmlhYmxlKGNvbnN0IGNoYXIgKm5zcG5hbWUsIGNvbnN0IGNoYXIgKnZhcm5hbWUsIGJvb2wgbWlz c2luZ19vayk7CitleHRlcm4gT2lkIGlkZW50aWZ5X3ZhcmlhYmxlKExpc3QgKm5hbWVzLCBjaGFy ICoqYXR0cm5hbWUsIGJvb2wgKm5vdF91bmlxKTsKKwogZXh0ZXJuIE92ZXJyaWRlU2VhcmNoUGF0 aCAqR2V0T3ZlcnJpZGVTZWFyY2hQYXRoKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBleHRlcm4g T3ZlcnJpZGVTZWFyY2hQYXRoICpDb3B5T3ZlcnJpZGVTZWFyY2hQYXRoKE92ZXJyaWRlU2VhcmNo UGF0aCAqcGF0aCk7CiBleHRlcm4gYm9vbCBPdmVycmlkZVNlYXJjaFBhdGhNYXRjaGVzQ3VycmVu dChPdmVycmlkZVNlYXJjaFBhdGggKnBhdGgpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19kZWZhdWx0X2FjbC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2Fj bC5oCmluZGV4IGQwNDEwZjU1ODYuLjU2ZGVlZjFhNDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Rl ZmF1bHRfYWNsLmgKQEAgLTU3LDYgKzU3LDcgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19kZWZhdWx0 X2FjbCAqRm9ybV9wZ19kZWZhdWx0X2FjbDsKICNkZWZpbmUgREVGQUNMT0JKX0ZVTkNUSU9OCQkn ZicgLyogZnVuY3Rpb24gKi8KICNkZWZpbmUgREVGQUNMT0JKX1RZUEUJCQknVCcgLyogdHlwZSAq LwogI2RlZmluZSBERUZBQ0xPQkpfTkFNRVNQQUNFCQknbicgLyogbmFtZXNwYWNlICovCisjZGVm aW5lIERFRkFDTE9CSl9WQVJJQUJMRQkJJ1YnIC8qIHZhcmlhYmxlICovCiAKICNlbmRpZgkJCQkJ CQkvKiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5k ZXggYTE0NjUxMDEwZi4uNjFjYmU2NTgwNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01 OTYxLDYgKzU5NjEsOSBAQAogICBwcm9uYW1lID0+ICdwZ19jb2xsYXRpb25faXNfdmlzaWJsZScs IHByb2Nvc3QgPT4gJzEwJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9yZXR0eXBlID0+ICdi b29sJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfY29sbGF0aW9uX2lz X3Zpc2libGUnIH0sCit7IG9pZCA9PiAnNDE4NycsIGRlc2NyID0+ICdpcyBzY2hlbWEgdmFyaWFi bGUgdmlzaWJsZSBpbiBzZWFyY2ggcGF0aD8nLAorICBwcm9uYW1lID0+ICdwZ192YXJpYWJsZV9p c192aXNpYmxlJywgcHJvY29zdCA9PiAnMTAnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3Jl dHR5cGUgPT4gJ2Jvb2wnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywgcHJvc3JjID0+ICdwZ192YXJp YWJsZV9pc192aXNpYmxlJyB9LAogCiB7IG9pZCA9PiAnMjg1NCcsIGRlc2NyID0+ICdnZXQgT0lE IG9mIGN1cnJlbnQgc2Vzc2lvblwncyB0ZW1wIHNjaGVtYSwgaWYgYW55JywKICAgcHJvbmFtZSA9 PiAncGdfbXlfdGVtcF9zY2hlbWEnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ ICdyJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi4yYTJiMWYzZTA4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ192YXJpYWJsZS5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIHBnX3ZhcmlhYmxlLmgKKyAqCSAgZGVmaW5pdGlvbiBvZiBzY2hlbWEgdmFyaWFi bGVzIHN5c3RlbSBjYXRhbG9nIChwZ192YXJpYWJsZXMpCisgKgorICoKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJz aXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxl LmgKKyAqCisgKiBOT1RFUworICoJICBUaGUgQ2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBm aWxlIGFuZCBkZXJpdmVzIHNjaGVtYQorICoJICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworI2lmbmRlZiBQR19WQVJJQUJMRV9ICisjZGVmaW5lIFBHX1ZBUklBQkxF X0gKKworI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9vYmpl Y3RhZGRyZXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZV9kLmgiCisjaW5jbHVk ZSAidXRpbHMvYWNsLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ192YXJpYWJsZSBk ZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bworICoJCXR5cGVkZWYgc3RydWN0IEZvcm1E YXRhX3BnX3ZhcmlhYmxlCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK0NBVEFMT0cocGdfdmFy aWFibGUsNDI4NyxWYXJpYWJsZVJlbGF0aW9uSWQpCit7CisJTmFtZURhdGEJdmFybmFtZTsJCS8q IHZhcmlhYmxlIG5hbWUgKi8KKwlPaWQJCQl2YXJuYW1lc3BhY2U7CS8qIE9JRCBvZiBuYW1lc3Bh Y2UgY29udGFpbmluZyB2YXJpYWJsZSBjbGFzcyAqLworCU9pZAkJCXZhcnR5cGU7CQkvKiBPSUQg b2YgZW50cnkgaW4gcGdfdHlwZSBmb3IgdmFyaWFibGUncyB0eXBlICovCisJaW50MzIJCXZhcnR5 cG1vZDsJCQkvKiB0eXBtb2RlIGZvciB2YXJpYWJsZSdzIHR5cGUgKi8KKwlPaWQJCQl2YXJvd25l cjsJCS8qIGNsYXNzIG93bmVyICovCisJT2lkCQkJdmFyY29sbGF0aW9uOwkvKiB2YXJpYWJsZSBj b2xsYXRpb24gKi8KKworI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3Ro IGZpZWxkcyBzdGFydCBoZXJlICovCisKKwkvKiBsaXN0IG9mIGV4cHJlc3Npb24gdHJlZXMgZm9y IHZhcmlhYmxlIGRlZmF1bHQgKE5VTEwgaWYgbm9uZSkgKi8KKwlwZ19ub2RlX3RyZWUgdmFyZGVm ZXhwciBCS0lfREVGQVVMVChfbnVsbF8pOworCisJYWNsaXRlbQkJdmFyYWNsWzFdIEJLSV9ERUZB VUxUKF9udWxsXyk7CQkvKiBhY2Nlc3MgcGVybWlzc2lvbnMgKi8KKworI2VuZGlmCit9IEZvcm1E YXRhX3BnX3ZhcmlhYmxlOworCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJRm9ybV9wZ192YXJp YWJsZSBjb3JyZXNwb25kcyB0byBhIHBvaW50ZXIgdG8gYSB0dXBsZSB3aXRoCisgKgkJdGhlIGZv cm1hdCBvZiBwZ192YXJpYWJsZSByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwor dHlwZWRlZiBGb3JtRGF0YV9wZ192YXJpYWJsZSAqRm9ybV9wZ192YXJpYWJsZTsKKwordHlwZWRl ZiBzdHJ1Y3QgVmFyaWFibGUKK3sKKwlPaWQJCW9pZDsKKwljaGFyICAgKm5hbWU7CisJT2lkCQlu YW1lc3BhY2U7CisJT2lkCQl0eXBpZDsKKwlpbnQzMgl0eXBtb2Q7CisJT2lkCQlvd25lcjsKKwlP aWQJCWNvbGxhdGlvbjsKKwlOb2RlICAgKmRlZmV4cHI7CisJQWNsCSAgICphY2w7Cit9IFZhcmlh YmxlOworCisvKiByZXR1cm5zIGZpZWxkcyBmcm9tIHBnX3ZhcmlhYmxlIHRhYmxlICovCitleHRl cm4gY2hhciAqZ2V0X3NjaGVtYV92YXJpYWJsZV9uYW1lKE9pZCB2YXJpZCk7CitleHRlcm4gdm9p ZCBnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2NvbGxpZChPaWQgdmFyaWQsCisJCQkJ CQkJCQkJCQkgICBPaWQgKnR5cGlkLAorCQkJCQkJCQkJCQkJICAgaW50MzIgKnR5cG1vZCwKKwkJ CQkJCQkJCQkJCSAgIE9pZCAqY29sbGlkKTsKKworLyogcmV0dXJucyBuYW1lIG9mIHZhcmlhYmxl IGJhc2VkIG9uIGN1cnJlbnQgc2VhcmNoIHBhdGggKi8KK2V4dGVybiBjaGFyICpzY2hlbWFfdmFy aWFibGVfZ2V0X25hbWUoT2lkIHZhcmlkKTsKKworZXh0ZXJuIFZhcmlhYmxlICpHZXRWYXJpYWJs ZShPaWQgdmFyaWQsIGJvb2wgbWlzc2luZ19vayk7CitleHRlcm4gT2JqZWN0QWRkcmVzcyBWYXJp YWJsZUNyZWF0ZShjb25zdCBjaGFyICp2YXJOYW1lLAorCQkJCQkJCQkJICAgT2lkIHZhck5hbWVz cGFjZSwKKwkJCQkJCQkJCSAgIE9pZCB2YXJUeXBlLAorCQkJCQkJCQkJICAgaW50MzIgdmFyVHlw bW9kLAorCQkJCQkJCQkJICAgT2lkIHZhck93bmVyLAorCQkJCQkJCQkJICAgT2lkIHZhckNvbGxh dGlvbiwKKwkJCQkJCQkJCSAgIE5vZGUgKnZhckRlZmV4cHIsCisJCQkJCQkJCQkgICBib29sIGlm 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 eCA0MWZhMjA1MmEyLi4xZDZlYWY5Y2U3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9l 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 ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAwN2FiMWEzZGRlLi43 MmUyNmI5ZjM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysr 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 MjUxMywyMCBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclNlcVN0bXQKIAlib29sCQltaXNzaW5nX29r OwkJLyogc2tpcCBlcnJvciBpZiBhIHJvbGUgaXMgbWlzc2luZz8gKi8KIH0gQWx0ZXJTZXFTdG10 OwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJe0NyZWF0ZXxBbHRlcn0gVkFSSUFC TEUgU3RhdGVtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3Ry dWN0IENyZWF0ZVNjaGVtYVZhclN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAg KnZhcmlhYmxlOwkJLyogdGhlIHZhcmlhYmxlIHRvIGNyZWF0ZSAqLworCVR5cGVOYW1lICAgKnR5 cGVOYW1lOwkJLyogdGhlIHR5cGUgb2YgdmFyaWFibGUgKi8KKwlDb2xsYXRlQ2xhdXNlICpjb2xs Q2xhdXNlOworCU5vZGUJICAgKmRlZmV4cHI7CQkvKiBkZWZhdWx0IGV4cHJlc3Npb24gKi8KKwli b29sCQlpZl9ub3RfZXhpc3RzOwkvKiBkbyBub3RoaW5nIGlmIGl0IGFscmVhZHkgZXhpc3RzICov Cit9IENyZWF0ZVNjaGVtYVZhclN0bXQ7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq CQlDcmVhdGUge0FnZ3JlZ2F0ZXxPcGVyYXRvcnxUeXBlfSBTdGF0ZW1lbnQKICAqIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KQEAgLTMyMzgsNyArMzI2OCw4IEBAIHR5cGVkZWYgZW51bSBEaXNjYXJk TW9kZQogCURJU0NBUkRfQUxMLAogCURJU0NBUkRfUExBTlMsCiAJRElTQ0FSRF9TRVFVRU5DRVMs Ci0JRElTQ0FSRF9URU1QCisJRElTQ0FSRF9URU1QLAorCURJU0NBUkRfVkFSSUFCTEVTCiB9IERp c2NhcmRNb2RlOwogCiB0eXBlZGVmIHN0cnVjdCBEaXNjYXJkU3RtdApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMu aAppbmRleCA3YzJhYmJkMDNhLi4yNTg4ZjE0NTVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAt NDMsNyArNDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogewogCU5vZGVUYWcJCXR5 cGU7CiAKLQlDbWRUeXBlCQljb21tYW5kVHlwZTsJLyogc2VsZWN0fGluc2VydHx1cGRhdGV8ZGVs ZXRlfHV0aWxpdHkgKi8KKwlDbWRUeXBlCQljb21tYW5kVHlwZTsJLyogc2VsZWN0fGxldHxpbnNl cnR8dXBkYXRlfGRlbGV0ZXx1dGlsaXR5ICovCiAKIAl1aW50NjQJCXF1ZXJ5SWQ7CQkvKiBxdWVy eSBpZGVudGlmaWVyIChjb3BpZWQgZnJvbSBRdWVyeSkgKi8KIApAQCAtODEsNiArODEsOSBAQCB0 eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCSAqLwogCUxpc3QJICAgKnJvb3RSZXN1bHRSZWxh dGlvbnM7CiAKKwkvKiBPaWQgb2YgdGFyZ2V0IHZhcmlhYmxlIGZvciBMRVQgY29tbWFuZCAqLwor CU9pZAkJCXJlc3VsdFZhcmlhYmxlOworCiAJTGlzdAkgICAqc3VicGxhbnM7CQkvKiBQbGFuIHRy ZWVzIGZvciBTdWJQbGFuIGV4cHJlc3Npb25zOyBub3RlCiAJCQkJCQkJCSAqIHRoYXQgc29tZSBj b3VsZCBiZSBOVUxMICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggMWI0YjBkNzVhZi4uOTdm ODM4YTU0ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTIyOSwxMyArMjI5LDE3IEBAIHR5cGVk ZWYgc3RydWN0IENvbnN0CiAgKgkJCQlvZiB0aGUgYHBhcmFtaWQnIGZpZWxkIGNvbnRhaW4gdGhl IFN1YkxpbmsncyBzdWJMaW5rSWQsIGFuZAogICoJCQkJdGhlIGxvdy1vcmRlciAxNiBiaXRzIGNv bnRhaW4gdGhlIGNvbHVtbiBudW1iZXIuICAoVGhpcyB0eXBlCiAgKgkJCQlvZiBQYXJhbSBpcyBh bHNvIGNvbnZlcnRlZCB0byBQQVJBTV9FWEVDIGR1cmluZyBwbGFubmluZy4pCisgKgorICoJCVBB UkFNX1ZBUklBQkxFOiAgVGhlIHBhcmFtZXRlciBpcyBhIGFjY2VzcyB0byBzY2hlbWEgdmFyaWFi bGUKKyAqCQkJCXBhcmFtaWQgaG9sZHMgdmFyaWQuCiAgKi8KIHR5cGVkZWYgZW51bSBQYXJhbUtp bmQKIHsKIAlQQVJBTV9FWFRFUk4sCiAJUEFSQU1fRVhFQywKIAlQQVJBTV9TVUJMSU5LLAotCVBB UkFNX01VTFRJRVhQUgorCVBBUkFNX01VTFRJRVhQUiwKKwlQQVJBTV9WQVJJQUJMRQogfSBQYXJh bUtpbmQ7CiAKIHR5cGVkZWYgc3RydWN0IFBhcmFtCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9w YXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggMjNkYjQw MTQ3Yi4uZDNlZDNmNGQwZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o CisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMjMxLDYgKzIzMSw3IEBAIFBH X0tFWVdPUkQoImxlYWRpbmciLCBMRUFESU5HLCBSRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09S RCgibGVha3Byb29mIiwgTEVBS1BST09GLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JE KCJsZWFzdCIsIExFQVNULCBDT0xfTkFNRV9LRVlXT1JEKQogUEdfS0VZV09SRCgibGVmdCIsIExF RlQsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQpCitQR19LRVlXT1JEKCJsZXQiLCBMRVQsIFVOUkVT RVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxldmVsIiwgTEVWRUwsIFVOUkVTRVJWRURfS0VZ V09SRCkKIFBHX0tFWVdPUkQoImxpa2UiLCBMSUtFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQog UEdfS0VZV09SRCgibGltaXQiLCBMSU1JVCwgUkVTRVJWRURfS0VZV09SRCkKQEAgLTQzNCw2ICs0 MzUsOCBAQCBQR19LRVlXT1JEKCJ2YWxpZGF0b3IiLCBWQUxJREFUT1IsIFVOUkVTRVJWRURfS0VZ V09SRCkKIFBHX0tFWVdPUkQoInZhbHVlIiwgVkFMVUVfUCwgVU5SRVNFUlZFRF9LRVlXT1JEKQog UEdfS0VZV09SRCgidmFsdWVzIiwgVkFMVUVTLCBDT0xfTkFNRV9LRVlXT1JEKQogUEdfS0VZV09S RCgidmFyY2hhciIsIFZBUkNIQVIsIENPTF9OQU1FX0tFWVdPUkQpCitQR19LRVlXT1JEKCJ2YXJp YWJsZSIsIFZBUklBQkxFLCBVTlJFU0VSVkVEX0tFWVdPUkQpCitQR19LRVlXT1JEKCJ2YXJpYWJs ZXMiLCBWQVJJQUJMRVMsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZhcmlhZGlj IiwgVkFSSUFESUMsIFJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YXJ5aW5nIiwgVkFS WUlORywgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmVyYm9zZSIsIFZFUkJPU0Us IFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCAwMjMw NTQzODEwLi5mN2MyZTY3ZjMzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf bm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAgLTY5LDcgKzY5 LDkgQEAgdHlwZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlFWFBSX0tJTkRfVFJJR0dFUl9XSEVO LAkJLyogV0hFTiBjb25kaXRpb24gaW4gQ1JFQVRFIFRSSUdHRVIgKi8KIAlFWFBSX0tJTkRfUE9M SUNZLAkJCS8qIFVTSU5HIG9yIFdJVEggQ0hFQ0sgZXhwciBpbiBwb2xpY3kgKi8KIAlFWFBSX0tJ TkRfUEFSVElUSU9OX0VYUFJFU1NJT04sIC8qIFBBUlRJVElPTiBCWSBleHByZXNzaW9uICovCi0J RVhQUl9LSU5EX0NBTExfQVJHVU1FTlQJCS8qIHByb2NlZHVyZSBhcmd1bWVudCBpbiBDQUxMICov CisJRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQsCQkvKiBwcm9jZWR1cmUgYXJndW1lbnQgaW4gQ0FM TCAqLworCUVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxULAkvKiBkZWZhdWx0IHZhbHVlIGZvciBz Y2hlbWEgdmFyaWFibGUgKi8KKwlFWFBSX0tJTkRfTEVUCQkJCS8qIExFVCBhc3NpZ25tZW50IChz aG91bGQgYmUgc2FtZSBsaWtlIFVQREFURSkgKi8KIH0gUGFyc2VFeHByS2luZDsKIAogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdGFyZ2V0LmggYi9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2VfdGFyZ2V0LmgKaW5kZXggZWM2ZTBjMTAyZi4uMWVlMTk5ZWQ4ZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3RhcmdldC5oCisrKyBiL3NyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV90YXJnZXQuaApAQCAtMzIsNiArMzIsMTYgQEAgZXh0ZXJuIEV4cHIgKnRy YW5zZm9ybUFzc2lnbmVkRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEV4cHIgKmV4cHIsCiAJCQkJ CSAgaW50IGF0dHJubywKIAkJCQkJICBMaXN0ICppbmRpcmVjdGlvbiwKIAkJCQkJICBpbnQgbG9j YXRpb24pOworZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJICAgTm9kZSAqYmFzZW5vZGUsCisJCQkJCQkJICAgY29u c3QgY2hhciAqdGFyZ2V0TmFtZSwKKwkJCQkJCQkgICBib29sIHRhcmdldElzQXJyYXksCisJCQkJ CQkJICAgT2lkIHRhcmdldFR5cGVJZCwKKwkJCQkJCQkgICBpbnQzMiB0YXJnZXRUeXBNb2QsCisJ CQkJCQkJICAgT2lkIHRhcmdldENvbGxhdGlvbiwKKwkJCQkJCQkgICBMaXN0Q2VsbCAqaW5kaXJl Y3Rpb24sCisJCQkJCQkJICAgTm9kZSAqcmhzLAorCQkJCQkJCSAgIGludCBsb2NhdGlvbik7CiBl eHRlcm4gdm9pZCB1cGRhdGVUYXJnZXRMaXN0RW50cnkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUYXJn ZXRFbnRyeSAqdGxlLAogCQkJCQkgIGNoYXIgKmNvbG5hbWUsIGludCBhdHRybm8sCiAJCQkJCSAg TGlzdCAqaW5kaXJlY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2Rlc3QuaCBi L3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oCmluZGV4IDgyZjBmMmU3NDEuLmM0OWI2NTM1NTUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3Av ZGVzdC5oCkBAIC05Niw3ICs5Niw4IEBAIHR5cGVkZWYgZW51bQogCURlc3RDb3B5T3V0LAkJCQkv KiByZXN1bHRzIHNlbnQgdG8gQ09QWSBUTyBjb2RlICovCiAJRGVzdFNRTEZ1bmN0aW9uLAkJCS8q IHJlc3VsdHMgc2VudCB0byBTUUwtbGFuZ3VhZ2UgZnVuYyBtZ3IgKi8KIAlEZXN0VHJhbnNpZW50 UmVsLAkJCS8qIHJlc3VsdHMgc2VudCB0byB0cmFuc2llbnQgcmVsYXRpb24gKi8KLQlEZXN0VHVw bGVRdWV1ZQkJCQkvKiByZXN1bHRzIHNlbnQgdG8gdHVwbGUgcXVldWUgKi8KKwlEZXN0VHVwbGVR dWV1ZSwJCQkJLyogcmVzdWx0cyBzZW50IHRvIHR1cGxlIHF1ZXVlICovCisJRGVzdFZhcmlhYmxl CQkJCS8qIHJlc3VsdHMgc2VudHMgdG8gc2NoZW1hIHZhcmlhYmxlICovCiB9IENvbW1hbmREZXN0 OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9h Y2wuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCmluZGV4IGY0ZDRiZThkMGQuLmM2MjRkOGRk MGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL2FjbC5oCkBAIC0xNDcsOSArMTQ3LDExIEBAIHR5cGVkZWYgQXJyYXlUeXBlIEFjbDsK ICNkZWZpbmUgQUNMX0NSRUFURV9DSFIJCQknQycKICNkZWZpbmUgQUNMX0NSRUFURV9URU1QX0NI UgkJJ1QnCiAjZGVmaW5lIEFDTF9DT05ORUNUX0NIUgkJCSdjJworI2RlZmluZSBBQ0xfUkVBRF9D SFIJCQknUycgLyogJ1InIGlzIG9jY3VwYXRlZCBieSBvbGQgUlVMRSBwcml2ICovCisjZGVmaW5l IEFDTF9XUklURV9DSFIJCQknVycKIAogLyogc3RyaW5nIGhvbGRpbmcgYWxsIHByaXZpbGVnZSBj b2RlIGNoYXJzLCBpbiBvcmRlciBieSBiaXRtYXNrIHBvc2l0aW9uICovCi0jZGVmaW5lIEFDTF9B TExfUklHSFRTX1NUUgkiYXJ3ZER4dFhVQ1RjIgorI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19TVFIJ ImFyd2REeHRYVUNUY1NXIgogCiAvKgogICogQml0bWFza3MgZGVmaW5pbmcgImFsbCByaWdodHMi IGZvciBlYWNoIHN1cHBvcnRlZCBvYmplY3QgdHlwZQpAQCAtMTY2LDYgKzE2OCw3IEBAIHR5cGVk ZWYgQXJyYXlUeXBlIEFjbDsKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfU0NIRU1BCQkoQUNMX1VT QUdFfEFDTF9DUkVBVEUpCiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RBQkxFU1BBQ0UJKEFDTF9D UkVBVEUpCiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RZUEUJCQkoQUNMX1VTQUdFKQorI2RlZmlu ZSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRQkJKEFDTF9SRUFEfEFDTF9XUklURSkKIAogLyogb3Bl cmF0aW9uIGNvZGVzIGZvciBwZ18qX2FjbG1hc2sgKi8KIHR5cGVkZWYgZW51bQpAQCAtMjUzLDYg KzI1Niw4IEBAIGV4dGVybiBBY2xNb2RlIHBnX2ZvcmVpZ25fc2VydmVyX2FjbG1hc2soT2lkIHNy dl9vaWQsIE9pZCByb2xlaWQsCiAJCQkJCQkgIEFjbE1vZGUgbWFzaywgQWNsTWFza0hvdyBob3cp OwogZXh0ZXJuIEFjbE1vZGUgcGdfdHlwZV9hY2xtYXNrKE9pZCB0eXBlX29pZCwgT2lkIHJvbGVp ZCwKIAkJCQlBY2xNb2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KTsKK2V4dGVybiBBY2xNb2RlIHBn X3ZhcmlhYmxlX2FjbG1hc2soT2lkIHZhcl9vaWQsIE9pZCByb2xlaWQsCisJCQkJQWNsTW9kZSBt YXNrLCBBY2xNYXNrSG93IGhvdyk7CiAKIGV4dGVybiBBY2xSZXN1bHQgcGdfYXR0cmlidXRlX2Fj bGNoZWNrKE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLAogCQkJCQkgIE9pZCByb2xl aWQsIEFjbE1vZGUgbW9kZSk7CkBAIC0yNjksNiArMjc0LDcgQEAgZXh0ZXJuIEFjbFJlc3VsdCBw Z190YWJsZXNwYWNlX2FjbGNoZWNrKE9pZCBzcGNfb2lkLCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1v ZGUpOwogZXh0ZXJuIEFjbFJlc3VsdCBwZ19mb3JlaWduX2RhdGFfd3JhcHBlcl9hY2xjaGVjayhP aWQgZmR3X29pZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2RlKTsKIGV4dGVybiBBY2xSZXN1bHQg cGdfZm9yZWlnbl9zZXJ2ZXJfYWNsY2hlY2soT2lkIHNydl9vaWQsIE9pZCByb2xlaWQsIEFjbE1v ZGUgbW9kZSk7CiBleHRlcm4gQWNsUmVzdWx0IHBnX3R5cGVfYWNsY2hlY2soT2lkIHR5cGVfb2lk LCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1vZGUpOworZXh0ZXJuIEFjbFJlc3VsdCBwZ192YXJpYWJs ZV9hY2xjaGVjayhPaWQgdHlwZV9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSk7CiAKIGV4 dGVybiB2b2lkIGFjbGNoZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUgb2Jq dHlwZSwKIAkJCSAgIGNvbnN0IGNoYXIgKm9iamVjdG5hbWUpOwpAQCAtMzA1LDYgKzMxMSw3IEBA IGV4dGVybiBib29sIHBnX2V4dGVuc2lvbl9vd25lcmNoZWNrKE9pZCBleHRfb2lkLCBPaWQgcm9s ZWlkKTsKIGV4dGVybiBib29sIHBnX3B1YmxpY2F0aW9uX293bmVyY2hlY2soT2lkIHB1Yl9vaWQs IE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgcGdfc3Vic2NyaXB0aW9uX293bmVyY2hlY2soT2lk IHN1Yl9vaWQsIE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgcGdfc3RhdGlzdGljc19vYmplY3Rf b3duZXJjaGVjayhPaWQgc3RhdF9vaWQsIE9pZCByb2xlaWQpOworZXh0ZXJuIGJvb2wgcGdfdmFy aWFibGVfb3duZXJjaGVjayhPaWQgc3RhdF9vaWQsIE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wg aGFzX2NyZWF0ZXJvbGVfcHJpdmlsZWdlKE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgaGFzX2J5 cGFzc3Jsc19wcml2aWxlZ2UoT2lkIHJvbGVpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXgg ZTU1ZWE0MDM1Yi4uY2IzZjRhYWNhOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5 c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTEyMiw2ICsx MjIsNyBAQCBleHRlcm4gYm9vbCBnZXRfZnVuY19sZWFrcHJvb2YoT2lkIGZ1bmNpZCk7CiBleHRl cm4gZmxvYXQ0IGdldF9mdW5jX2Nvc3QoT2lkIGZ1bmNpZCk7CiBleHRlcm4gZmxvYXQ0IGdldF9m dW5jX3Jvd3MoT2lkIGZ1bmNpZCk7CiBleHRlcm4gT2lkCWdldF9yZWxuYW1lX3JlbGlkKGNvbnN0 IGNoYXIgKnJlbG5hbWUsIE9pZCByZWxuYW1lc3BhY2UpOworZXh0ZXJuIE9pZCBnZXRfdmFybmFt ZV92YXJpZChjb25zdCBjaGFyICp2YXJuYW1lLCBPaWQgdmFybmFtZXNwYWNlKTsKIGV4dGVybiBj aGFyICpnZXRfcmVsX25hbWUoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF9uYW1lc3Bh Y2UoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90eXBlX2lkKE9pZCByZWxpZCk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRp bHMvc3lzY2FjaGUuaAppbmRleCA0ZjMzMzU4NmVlLi40NTM2OTliZTNjIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2Nh Y2hlLmgKQEAgLTEwNyw5ICsxMDcsMTEgQEAgZW51bSBTeXNDYWNoZUlkZW50aWZpZXIKIAlUWVBF TkFNRU5TUCwKIAlUWVBFT0lELAogCVVTRVJNQVBQSU5HT0lELAotCVVTRVJNQVBQSU5HVVNFUlNF UlZFUgorCVVTRVJNQVBQSU5HVVNFUlNFUlZFUiwKKwlWQVJJQUJMRU5BTUVOU1AsCisJVkFSSUFC TEVPSUQKIAotI2RlZmluZSBTeXNDYWNoZVNpemUgKFVTRVJNQVBQSU5HVVNFUlNFUlZFUiArIDEp CisjZGVmaW5lIFN5c0NhY2hlU2l6ZSAoVkFSSUFCTEVPSUQgKyAxKQogfTsKIAogZXh0ZXJuIHZv aWQgSW5pdENhdGFsb2dDYWNoZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3Ny Yy9wbF9leGVjLmMgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCmluZGV4IDM4MGQxZGU4 ZjQuLmFjNzFkZDdkN2EgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMK KysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYwpAQCAtODA0OSw2ICs4MDQ5LDcgQEAg cGxwZ3NxbF9jcmVhdGVfZWNvbnRleHQoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSkKIAkJewog CQkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRl eHQpOwogCQkJc2hhcmVkX3NpbXBsZV9ldmFsX2VzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUo KTsKKwkJCXNoYXJlZF9zaW1wbGVfZXZhbF9lc3RhdGUtPmVzX3NoYXJlZCA9IHRydWU7CiAJCQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAJCX0KIAkJZXN0YXRlLT5zaW1wbGVf ZXZhbF9lc3RhdGUgPSBzaGFyZWRfc2ltcGxlX2V2YWxfZXN0YXRlOwpkaWZmIC0tZ2l0IGEvc3Jj L3BsL3BscGdzcWwvc3JjL3BsX2hhbmRsZXIuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9oYW5k bGVyLmMKaW5kZXggN2QzNjQ3YTEyZC4uN2YxODNkNGYxYiAxMDA2NDQKLS0tIGEvc3JjL3BsL3Bs cGdzcWwvc3JjL3BsX2hhbmRsZXIuYworKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfaGFuZGxl ci5jCkBAIC0zMzIsNiArMzMyLDcgQEAgcGxwZ3NxbF9pbmxpbmVfaGFuZGxlcihQR19GVU5DVElP Tl9BUkdTKQogCiAJLyogQ3JlYXRlIGEgcHJpdmF0ZSBFU3RhdGUgZm9yIHNpbXBsZS1leHByZXNz aW9uIGV4ZWN1dGlvbiAqLwogCXNpbXBsZV9ldmFsX2VzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3Rh dGUoKTsKKwlzaW1wbGVfZXZhbF9lc3RhdGUtPmVzX3NoYXJlZCA9IHRydWU7CiAKIAkvKiBBbmQg cnVuIHRoZSBmdW5jdGlvbiAqLwogCVBHX1RSWSgpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9taXNjX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L21pc2Nfc2FuaXR5Lm91dAppbmRleCAyZDM1MjJiNTAwLi40ODI4NmY4ZTFhIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2Nfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL21pc2Nfc2FuaXR5Lm91dApAQCAtMTA1LDUgKzEwNSw3IEBAIE9S REVSIEJZIDEsIDI7CiAgcGdfaW5kZXggICAgICAgICAgICAgICAgfCBpbmRwcmVkICAgICAgIHwg cGdfbm9kZV90cmVlCiAgcGdfbGFyZ2VvYmplY3QgICAgICAgICAgfCBkYXRhICAgICAgICAgIHwg Ynl0ZWEKICBwZ19sYXJnZW9iamVjdF9tZXRhZGF0YSB8IGxvbWFjbCAgICAgICAgfCBhY2xpdGVt W10KLSgxMSByb3dzKQorIHBnX3ZhcmlhYmxlICAgICAgICAgICAgIHwgdmFyYWNsICAgICAgICB8 IGFjbGl0ZW1bXQorIHBnX3ZhcmlhYmxlICAgICAgICAgICAgIHwgdmFyZGVmZXhwciAgICB8IHBn X25vZGVfdHJlZQorKDEzIHJvd3MpCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc2FuaXR5X2NoZWNrLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5 X2NoZWNrLm91dAppbmRleCAwYWE1MzU3OTE3Li44NDhiMDQxYTRiIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0CkBAIC0xNjMsNiArMTYzLDcgQEAgcGdfdHNf cGFyc2VyfHQKIHBnX3RzX3RlbXBsYXRlfHQKIHBnX3R5cGV8dAogcGdfdXNlcl9tYXBwaW5nfHQK K3BnX3ZhcmlhYmxlfHQKIHBvaW50X3RibHx0CiBwb2x5Z29uX3RibHx0CiBxdWFkX2JveF90Ymx8 dApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zY2hlbWFfdmFyaWFibGVz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjhjNzJjY2Q4NQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQK QEAgLTAsMCArMSwzNjYgQEAKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludGVnZXI7CitDUkVB VEUgVEVNUCBWQVJJQUJMRSB2YXIyIEFTIHRleHQ7CitEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7 CistLSBmdW5jdGlvbmFsIGludGVyZmFjZQorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgbnVtZXJp YzsKK0NSRUFURSBST0xFIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xl OworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCB2YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRl bmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHZhcjEKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitHUkFO VCBSRUFEIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZh cl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorTEVUIHZhcjEgPSAxMDsKK0VSUk9SOiAg cGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCistLSBzaG91bGQgdG8g d29yaworU0VMRUNUIHZhcjE7CisgdmFyMSAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworU0VU IFJPTEUgVE8gREVGQVVMVDsKK0dSQU5UIFdSSVRFIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rl c3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gd29yawor TEVUIHZhcjEgPSAzMzM7CitTRVQgUk9MRSBUTyBERUZBVUxUOworUkVWT0tFIEFMTCBPTiBWQVJJ QUJMRSB2YXIxIEZST00gdmFyX3Rlc3Rfcm9sZTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IHNlY3VyZV92YXIoKQorUkVUVVJOUyBpbnQgQVMgJCQKKyAgU0VMRUNUIHB1YmxpYy52YXIxOjpp bnQ7CiskJCBMQU5HVUFHRSBzcWwgU0VDVVJJVFkgREVGSU5FUjsKK1NFTEVDVCBzZWN1cmVfdmFy KCk7Cisgc2VjdXJlX3ZhciAKKy0tLS0tLS0tLS0tLQorICAgICAgICAzMzMKKygxIHJvdykKKwor U0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgcHVi bGljLnZhcjE7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUg dmFyMQorLS0gc2hvdWxkIHRvIHdvcms7CitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworIHNlY3VyZV92 YXIgCistLS0tLS0tLS0tLS0KKyAgICAgICAgMzMzCisoMSByb3cpCisKK1NFVCBST0xFIFRPIERF RkFVTFQ7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwKSBnKHYpIFdIRVJFIHYgPSB2YXIxOworICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRnVuY3Rpb24gU2NhbiBvbiBwZ19jYXRhbG9nLmdlbmVy YXRlX3NlcmllcyBnCisgICBPdXRwdXQ6IHYKKyAgIEZ1bmN0aW9uIENhbGw6IGdlbmVyYXRlX3Nl cmllcygxLCAxMDApCisgICBGaWx0ZXI6ICgoZy52KTo6bnVtZXJpYyA9IHZhcjEpCisoNCByb3dz KQorCitDUkVBVEUgVklFVyBzY2hlbWFfdmFyX3ZpZXcgQVMgU0VMRUNUIHZhcjE7CitTRUxFQ1Qg KiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKyB2YXIxIAorLS0tLS0tCisgIDMzMworKDEgcm93KQor CitcYyAtCistLSBzaG91bGQgdG8gd29yayBzdGlsbCwgYnV0IHZhciB3aWxsIGJlIGVtcHR5CitT RUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKyB2YXIxIAorLS0tLS0tCisgICAgIAorKDEg cm93KQorCitMRVQgdmFyMSA9IHBpKCk7CitTRUxFQ1QgdmFyMTsKKyAgICAgICB2YXIxICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tCisgMy4xNDE1OTI2NTM1ODk3OQorKDEgcm93KQorCistLSB3 ZSBjYW4gbG9vayBvbiBleGVjdXRpb24gcGxhbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KSBMRVQgdmFyMSA9IHBpKCk7CisgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IDMuMTQxNTkyNjUzNTg5 NzkKKygyIHJvd3MpCisKKy0tIExFVCBjYW4gYmUgcHJlcGFyZWQKK1BSRVBBUkUgdmFyX3BwKGlu dCwgbnVtZXJpYykgQVMgTEVUIHZhcjEgPSAkMSArICQyOworRVhFQ1VURSB2YXJfcHAoMTAwLCAx LjIzNDU2KTsKK1NFTEVDVCB2YXIxOworICAgdmFyMSAgICAKKy0tLS0tLS0tLS0tCisgMTAxLjIz NDU2CisoMSByb3cpCisKK0NSRUFURSBWQVJJQUJMRSB2YXIzIEFTIGludDsKK0NSRUFURSBPUiBS RVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitSRVRVUk5TIGludCBBUyAkJAorQkVHSU4KKyAgTEVU IHB1YmxpYy52YXIzID0gQ09BTEVTQ0UocHVibGljLnZhcjMgKyAkMSwgJDEpOworICBSRVRVUk4g dmFyMzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgaW5jKDEpOworIGluYyAK Ky0tLS0tCisgICAxCisoMSByb3cpCisKK1NFTEVDVCBpbmMoMSk7CisgaW5jIAorLS0tLS0KKyAg IDIKKygxIHJvdykKKworU0VMRUNUIGluYygxKTsKKyBpbmMgCistLS0tLQorICAgMworKDEgcm93 KQorCitTRUxFQ1QgaW5jKDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApOworIGluYyAKKy0t LS0tCisgICA0CisgICA1CisgICA2CisgICA3CisgICA4CisgICA5CisgIDEwCisgIDExCisgIDEy CisgIDEzCisoMTAgcm93cykKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3Vs ZCB0byBmYWlsCitMRVQgdmFyMyA9IDA7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBz Y2hlbWEgdmFyaWFibGUgdmFyMworU0VUIFJPTEUgVE8gREVGQVVMVDsKK0RST1AgVklFVyBzY2hl bWFfdmFyX3ZpZXc7CitEUk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FERTsKK0RST1AgVkFSSUFCTEUg dmFyMyBDQVNDQURFOworLS0gY29tcG9zaXRlIHZhcmlhYmxlcworQ1JFQVRFIFRZUEUgc3ZfeHl6 IEFTICh4IGludCwgeSBpbnQsIHogbnVtZXJpYygxMCwyKSk7CitDUkVBVEUgVkFSSUFCTEUgdjEg QVMgc3ZfeHl6OworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIHN2X3h5ejsKK1xkIHYxCitcZCB2Mgor TEVUIHYxID0gKDEsMiwzLjE0KTsKK0xFVCB2MiA9ICgxMCwyMCwzLjE0KjEwKTsKKy0tIHNob3Vs ZCB0byB3b3JrIHRvbyAtIHRoZXJlIGFyZSBwcmVwYXJlZCBjYXN0cworTEVUIHYxID0gKDEsMiwz LjE0KTsKK1NFTEVDVCB2MTsKKyAgICAgdjEgICAgIAorLS0tLS0tLS0tLS0tCisgKDEsMiwzLjE0 KQorKDEgcm93KQorCitTRUxFQ1QgdjI7CisgICAgICB2MiAgICAgICAKKy0tLS0tLS0tLS0tLS0t LQorICgxMCwyMCwzMS40MCkKKygxIHJvdykKKworU0VMRUNUICh2MSkuKjsKKyB4IHwgeSB8ICB6 ICAgCistLS0rLS0tKy0tLS0tLQorIDEgfCAyIHwgMy4xNAorKDEgcm93KQorCitTRUxFQ1QgKHYy KS4qOworIHggIHwgeSAgfCAgIHogICAKKy0tLS0rLS0tLSstLS0tLS0tCisgMTAgfCAyMCB8IDMx LjQwCisoMSByb3cpCisKK1NFTEVDVCB2MS54ICsgdjEuejsKKyA/Y29sdW1uPyAKKy0tLS0tLS0t LS0KKyAgICAgNC4xNAorKDEgcm93KQorCitTRUxFQ1QgdjIueCArIHYyLno7CisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgICAgNDEuNDAKKygxIHJvdykKKworLS0gYWNjZXNzIHRvIGNvbXBvc2l0 ZSBmaWVsZHMgc2hvdWxkIGJlIHNhZmUgdG9vCistLSBzaG91bGQgdG8gZmFpbAorU0VUIFJPTEUg VE8gdmFyX3Rlc3Rfcm9sZTsKK1NFTEVDVCB2Mi54OworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmll ZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHYyCitTRVQgUk9MRSBUTyBERUZBVUxUOworRFJPUCBWQVJJ QUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKy0t IHNjYWxhciB2YXJpYWJsZXMgc2hvdWxkIG5vdCBiZSBpbiBjb25mbGljdCB3aXRoIHF1YWxpZmll ZCBjb2x1bW4KK0NSRUFURSBWQVJJQUJMRSB2YXJ4IEFTIHRleHQ7CitTRUxFQ1QgdmFyeC5yZWxu YW1lIEZST00gcGdfY2xhc3MgdmFyeCBXSEVSRSB2YXJ4LnJlbG5hbWUgPSAncGdfY2xhc3MnOwor IHJlbG5hbWUgIAorLS0tLS0tLS0tLQorIHBnX2NsYXNzCisoMSByb3cpCisKKy0tIHNob3VsZCB0 byBmYWlsCitTRUxFQ1QgdmFyeC54eHg7CitFUlJPUjogIHR5cGUgdGV4dCBpcyBub3QgY29tcG9z aXRlCistLSB2YXJpYWJsZXMgY2FuIGJlIHVwZGF0ZWQgdW5kZXIgUk8gdHJhbnNhY3Rpb24KK0JF R0lOOworU0VUIFRSQU5TQUNUSU9OIFJFQUQgT05MWTsKK0xFVCB2YXJ4ID0gJ2hlbGxvJzsKK0NP TU1JVDsKK1NFTEVDVCB2YXJ4OworIHZhcnggIAorLS0tLS0tLQorIGhlbGxvCisoMSByb3cpCisK K0RST1AgVkFSSUFCTEUgdmFyeDsKK0NSRUFURSBUWVBFIHQxIEFTIChhIGludCwgYiBudW1lcmlj LCBjIHRleHQpOworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHQxOworTEVUIHYxID0gKDEsIHBpKCks ICdoZWxsbycpOworU0VMRUNUIHYxOworICAgICAgICAgICAgIHYxICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxLDMuMTQxNTkyNjUzNTg5NzksaGVsbG8pCiso MSByb3cpCisKK0xFVCB2MS5iID0gMTAuMjIyMjsKK1NFTEVDVCB2MTsKKyAgICAgICAgdjEgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSwxMC4yMjIyLGhlbGxvKQorKDEgcm93KQor CistLSBzaG91bGQgdG8gZmFpbAorTEVUIHYxLnggPSAxMDsKK0VSUk9SOiAgY2Fubm90IGFzc2ln biB0byBmaWVsZCAieCIgb2YgY29sdW1uICJ4IiBiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggY29s dW1uIGluIGRhdGEgdHlwZSB0MQorTElORSAxOiBMRVQgdjEueCA9IDEwOworICAgICAgICAgICAg XgorRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVFlQRSB0MTsKKy0tIGFycmF5cyBhcmUgc3VwcG9y dGVkCitDUkVBVEUgVkFSSUFCTEUgdmExIEFTIG51bWVyaWNbXTsKK0xFVCB2YTEgPSBBUlJBWVsx LjEsMi4xXTsKK0xFVCB2YTFbMV0gPSAxMC4xOworU0VMRUNUIHZhMTsKKyAgICB2YTEgICAgIAor LS0tLS0tLS0tLS0tCisgezEwLjEsMi4xfQorKDEgcm93KQorCitDUkVBVEUgVFlQRSB0YTIgQVMg KGEgbnVtZXJpYywgYiBudW1lcmljW10pOworQ1JFQVRFIFZBUklBQkxFIHZhMiBBUyB0YTI7CitM RVQgdmEyID0gKDEwLjEsIEFSUkFZWzAuMCwgMC4wXSk7CitMRVQgdmEyLmEgPSAxMC4yOworU0VM RUNUIHZhMjsKKyAgICAgICAgdmEyICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorICgx MC4yLCJ7MC4wLDAuMH0iKQorKDEgcm93KQorCitMRVQgdmEyLmJbMV0gPSAxMC4zOworU0VMRUNU IHZhMjsKKyAgICAgICAgIHZhMiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEw LjIsInsxMC4zLDAuMH0iKQorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHZhMTsKK0RST1AgVkFS SUFCTEUgdmEyOworRFJPUCBUWVBFIHRhMjsKKy0tIGRlZmF1bHQgdmFsdWVzCitDUkVBVEUgVkFS SUFCTEUgdjEgQVMgbnVtZXJpYyBERUZBVUxUIHBpKCk7CitMRVQgdjEgPSB2MSAqIDI7CitTRUxF Q1QgdjE7CisgICAgICAgIHYxICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIDYuMjgzMTg1 MzA3MTc5NTgKKygxIHJvdykKKworQ1JFQVRFIFRZUEUgdDIgQVMgKGEgbnVtZXJpYywgYiB0ZXh0 KTsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyB0MiBERUZBVUxUIChOVUxMLCAnSGVsbG8nKTsKK0xF VCBwdWJsaWMudjIuYSA9IHBpKCk7CitTRUxFQ1QgdjI7CisgICAgICAgICAgICB2MiAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMy4xNDE1OTI2NTM1ODk3OSxIZWxs bykKKygxIHJvdykKKworLS0gc2hvdWRsIGZhaWwgZHVlIGRlcGVuZGVuY3kKK0RST1AgVFlQRSB0 MjsKK0VSUk9SOiAgY2Fubm90IGRyb3AgdHlwZSB0MiBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVw ZW5kIG9uIGl0CitERVRBSUw6ICBzY2hlbWEgdmFyaWFibGUgdjIgZGVwZW5kcyBvbiB0eXBlIHQy CitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVj dHMgdG9vLgorLS0gc2hvdWxkIGJlIG9rCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJM RSB2MjsKKy0tIHRlc3RzIG9mIGFsdGVycworQ1JFQVRFIFNDSEVNQSB2YXJfc2NoZW1hMTsKK0NS RUFURSBTQ0hFTUEgdmFyX3NjaGVtYTI7CitDUkVBVEUgVkFSSUFCTEUgdmFyX3NjaGVtYTEudmFy MSBBUyBpbnRlZ2VyOworTEVUIHZhcl9zY2hlbWExLnZhcjEgPSAxMDAwOworU0VMRUNUIHZhcl9z Y2hlbWExLnZhcjE7CisgdmFyMSAKKy0tLS0tLQorIDEwMDAKKygxIHJvdykKKworQUxURVIgVkFS SUFCTEUgdmFyX3NjaGVtYTEudmFyMSBTRVQgU0NIRU1BIHZhcl9zY2hlbWEyOworU0VMRUNUIHZh cl9zY2hlbWEyLnZhcjE7CisgdmFyMSAKKy0tLS0tLQorIDEwMDAKKygxIHJvdykKKworQ1JFQVRF IFJPTEUgdmFyX3Rlc3Rfcm9sZTsKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjEgT1dO RVIgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91 bGQgZmFpbCwgbm8gYWNjZXNzIHRvIHNjaGVtYSB2YXJfc2NoZW1hMi52YXIKK1NFTEVDVCB2YXJf c2NoZW1hMi52YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcl9z Y2hlbWEyCitEUk9QIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjE7CitFUlJPUjogIHBlcm1pc3Np b24gZGVuaWVkIGZvciBzY2hlbWEgdmFyX3NjaGVtYTIKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitB TFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxIFNFVCBTQ0hFTUEgcHVibGljOworU0VUIFJP TEUgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFTEVDVCBwdWJsaWMudmFyMTsKKyB2YXIxIAorLS0tLS0t CisgMTAwMAorKDEgcm93KQorCitBTFRFUiBWQVJJQUJMRSBwdWJsaWMudmFyMSBSRU5BTUUgVE8g dmFyMV9yZW5hbWVkOworU0VMRUNUIHB1YmxpYy52YXIxX3JlbmFtZWQ7CisgdmFyMV9yZW5hbWVk IAorLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIDEwMDAKKygxIHJvdykKKworRFJPUCBWQVJJQUJM RSBwdWJsaWMudmFyMV9yZW5hbWVkOworU0VUIFJPTEUgVE8gREVGQVVMdDsKK0RST1AgUk9MRSB2 YXJfdGVzdF9yb2xlOworQ1JFQVRFIFZBUklBQkxFIHh4IEFTIHRleHQgREVGQVVMVCAnaGVsbG8n OworU0VMRUNUIHh4LCB1cHBlcih4eCk7CisgIHh4ICAgfCB1cHBlciAKKy0tLS0tLS0rLS0tLS0t LQorIGhlbGxvIHwgSEVMTE8KKygxIHJvdykKKworTEVUIHh4ID0gJ0hpJzsKK1NFTEVDVCB4eDsK KyB4eCAKKy0tLS0KKyBIaQorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHh4OwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggMTZmOTc5YzhkOS4uOWJmMzc5Yjg3YiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMTEsNyArMTExLDcgQEAgdGVzdDogc2VsZWN0X3Zp ZXdzIHBvcnRhbHNfcDIgZm9yZWlnbl9rZXkgY2x1c3RlciBkZXBlbmRlbmN5IGd1YyBiaXRtYXBv cHMgY29tYm8KICMgTkI6IHRlbXAuc3FsIGRvZXMgYSByZWNvbm5lY3Qgd2hpY2ggdHJhbnNpZW50 bHkgdXNlcyAyIGNvbm5lY3Rpb25zLAogIyBzbyBrZWVwIHRoaXMgcGFyYWxsZWwgZ3JvdXAgdG8g YXQgbW9zdCAxOSB0ZXN0cwogIyAtLS0tLS0tLS0tCi10ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxw Z3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgd2l0aG91dF9vaWQgY29u dmVyc2lvbiB0cnVuY2F0ZSBhbHRlcl90YWJsZSBzZXF1ZW5jZSBwb2x5bW9ycGhpc20gcm93dHlw ZXMgcmV0dXJuaW5nIGxhcmdlb2JqZWN0IHdpdGggeG1sCit0ZXN0OiBwbGFuY2FjaGUgbGltaXQg cGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgd2l0aG91dF9vaWQg Y29udmVyc2lvbiB0cnVuY2F0ZSBhbHRlcl90YWJsZSBzZXF1ZW5jZSBwb2x5bW9ycGhpc20gcm93 dHlwZXMgcmV0dXJuaW5nIGxhcmdlb2JqZWN0IHdpdGggeG1sIHNjaGVtYV92YXJpYWJsZXMKIAog IyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9z ZXJpYWxfc2NoZWR1bGUKaW5kZXggNDI2MzJiZTY3NS4uNDJiZjRlY2IzZiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z ZXJpYWxfc2NoZWR1bGUKQEAgLTE5MSwzICsxOTEsNCBAQCB0ZXN0OiBwYXJ0aXRpb25fYWdncmVn YXRlCiB0ZXN0OiBldmVudF90cmlnZ2VyCiB0ZXN0OiBmYXN0X2RlZmF1bHQKIHRlc3Q6IHN0YXRz Cit0ZXN0OiBzY2hlbWFfdmFyaWFibGVzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zY2hlbWFfdmFyaWFibGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NjaGVtYV92YXJp YWJsZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjZiZDgwMWU3 NzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zY2hlbWFfdmFyaWFi bGVzLnNxbApAQCAtMCwwICsxLDI1NyBAQAorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50ZWdl cjsKK0NSRUFURSBURU1QIFZBUklBQkxFIHZhcjIgQVMgdGV4dDsKKworRFJPUCBWQVJJQUJMRSB2 YXIxLCB2YXIyOworCistLSBmdW5jdGlvbmFsIGludGVyZmFjZQorQ1JFQVRFIFZBUklBQkxFIHZh cjEgQVMgbnVtZXJpYzsKKworQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJPTEUg VE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCB2YXIxOworCitT RVQgUk9MRSBUTyBERUZBVUxUOworCitHUkFOVCBSRUFEIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFy X3Rlc3Rfcm9sZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBm YWlsCitMRVQgdmFyMSA9IDEwOworLS0gc2hvdWxkIHRvIHdvcmsKK1NFTEVDVCB2YXIxOworCitT RVQgUk9MRSBUTyBERUZBVUxUOworCitHUkFOVCBXUklURSBPTiBWQVJJQUJMRSB2YXIxIFRPIHZh cl90ZXN0X3JvbGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCB0 byB3b3JrCitMRVQgdmFyMSA9IDMzMzsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworUkVWT0tF IEFMTCBPTiBWQVJJQUJMRSB2YXIxIEZST00gdmFyX3Rlc3Rfcm9sZTsKKworQ1JFQVRFIE9SIFJF UExBQ0UgRlVOQ1RJT04gc2VjdXJlX3ZhcigpCitSRVRVUk5TIGludCBBUyAkJAorICBTRUxFQ1Qg cHVibGljLnZhcjE6OmludDsKKyQkIExBTkdVQUdFIHNxbCBTRUNVUklUWSBERUZJTkVSOworCitT RUxFQ1Qgc2VjdXJlX3ZhcigpOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBz aG91bGQgdG8gZmFpbAorU0VMRUNUIHB1YmxpYy52YXIxOworCistLSBzaG91bGQgdG8gd29yazsK K1NFTEVDVCBzZWN1cmVfdmFyKCk7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAp IGcodikgV0hFUkUgdiA9IHZhcjE7CisKK0NSRUFURSBWSUVXIHNjaGVtYV92YXJfdmlldyBBUyBT RUxFQ1QgdmFyMTsKKworU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisKK1xjIC0KKwor LS0gc2hvdWxkIHRvIHdvcmsgc3RpbGwsIGJ1dCB2YXIgd2lsbCBiZSBlbXB0eQorU0VMRUNUICog RlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisKK0xFVCB2YXIxID0gcGkoKTsKKworU0VMRUNUIHZhcjE7 CisKKy0tIHdlIGNhbiBsb29rIG9uIGV4ZWN1dGlvbiBwbGFuCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpIExFVCB2YXIxID0gcGkoKTsKKworLS0gTEVUIGNhbiBiZSBwcmVwYXJlZAorUFJF UEFSRSB2YXJfcHAoaW50LCBudW1lcmljKSBBUyBMRVQgdmFyMSA9ICQxICsgJDI7CisKK0VYRUNV VEUgdmFyX3BwKDEwMCwgMS4yMzQ1Nik7CisKK1NFTEVDVCB2YXIxOworCitDUkVBVEUgVkFSSUFC TEUgdmFyMyBBUyBpbnQ7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitS RVRVUk5TIGludCBBUyAkJAorQkVHSU4KKyAgTEVUIHB1YmxpYy52YXIzID0gQ09BTEVTQ0UocHVi bGljLnZhcjMgKyAkMSwgJDEpOworICBSRVRVUk4gdmFyMzsKK0VORDsKKyQkIExBTkdVQUdFIHBs cGdzcWw7CisKK1NFTEVDVCBpbmMoMSk7CitTRUxFQ1QgaW5jKDEpOworU0VMRUNUIGluYygxKTsK KworU0VMRUNUIGluYygxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKTsKKworU0VUIFJPTEUg VE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2YXIzID0gMDsKKwor U0VUIFJPTEUgVE8gREVGQVVMVDsKKworRFJPUCBWSUVXIHNjaGVtYV92YXJfdmlldzsKKworRFJP UCBWQVJJQUJMRSB2YXIxIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZhcjMgQ0FTQ0FERTsKKwor LS0gY29tcG9zaXRlIHZhcmlhYmxlcworCitDUkVBVEUgVFlQRSBzdl94eXogQVMgKHggaW50LCB5 IGludCwgeiBudW1lcmljKDEwLDIpKTsKKworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHN2X3h5ejsK K0NSRUFURSBWQVJJQUJMRSB2MiBBUyBzdl94eXo7CisKK1xkIHYxCitcZCB2MgorCitMRVQgdjEg PSAoMSwyLDMuMTQpOworTEVUIHYyID0gKDEwLDIwLDMuMTQqMTApOworCistLSBzaG91bGQgdG8g d29yayB0b28gLSB0aGVyZSBhcmUgcHJlcGFyZWQgY2FzdHMKK0xFVCB2MSA9ICgxLDIsMy4xNCk7 CisKK1NFTEVDVCB2MTsKK1NFTEVDVCB2MjsKK1NFTEVDVCAodjEpLio7CitTRUxFQ1QgKHYyKS4q OworCitTRUxFQ1QgdjEueCArIHYxLno7CitTRUxFQ1QgdjIueCArIHYyLno7CisKKy0tIGFjY2Vz cyB0byBjb21wb3NpdGUgZmllbGRzIHNob3VsZCBiZSBzYWZlIHRvbworLS0gc2hvdWxkIHRvIGZh aWwKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKK1NFTEVDVCB2Mi54OworCitTRVQgUk9M RSBUTyBERUZBVUxUOworCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJMRSB2MjsKKwor RFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNjYWxhciB2YXJpYWJsZXMgc2hvdWxkIG5v dCBiZSBpbiBjb25mbGljdCB3aXRoIHF1YWxpZmllZCBjb2x1bW4KK0NSRUFURSBWQVJJQUJMRSB2 YXJ4IEFTIHRleHQ7CitTRUxFQ1QgdmFyeC5yZWxuYW1lIEZST00gcGdfY2xhc3MgdmFyeCBXSEVS RSB2YXJ4LnJlbG5hbWUgPSAncGdfY2xhc3MnOworCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNU IHZhcngueHh4OworCistLSB2YXJpYWJsZXMgY2FuIGJlIHVwZGF0ZWQgdW5kZXIgUk8gdHJhbnNh Y3Rpb24KKworQkVHSU47CitTRVQgVFJBTlNBQ1RJT04gUkVBRCBPTkxZOworTEVUIHZhcnggPSAn aGVsbG8nOworQ09NTUlUOworCitTRUxFQ1QgdmFyeDsKKworRFJPUCBWQVJJQUJMRSB2YXJ4Owor CitDUkVBVEUgVFlQRSB0MSBBUyAoYSBpbnQsIGIgbnVtZXJpYywgYyB0ZXh0KTsKKworQ1JFQVRF IFZBUklBQkxFIHYxIEFTIHQxOworTEVUIHYxID0gKDEsIHBpKCksICdoZWxsbycpOworU0VMRUNU IHYxOworTEVUIHYxLmIgPSAxMC4yMjIyOworU0VMRUNUIHYxOworCistLSBzaG91bGQgdG8gZmFp bAorTEVUIHYxLnggPSAxMDsKKworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVFlQRSB0MTsKKwor LS0gYXJyYXlzIGFyZSBzdXBwb3J0ZWQKK0NSRUFURSBWQVJJQUJMRSB2YTEgQVMgbnVtZXJpY1td OworTEVUIHZhMSA9IEFSUkFZWzEuMSwyLjFdOworTEVUIHZhMVsxXSA9IDEwLjE7CitTRUxFQ1Qg dmExOworCitDUkVBVEUgVFlQRSB0YTIgQVMgKGEgbnVtZXJpYywgYiBudW1lcmljW10pOworQ1JF QVRFIFZBUklBQkxFIHZhMiBBUyB0YTI7CitMRVQgdmEyID0gKDEwLjEsIEFSUkFZWzAuMCwgMC4w XSk7CitMRVQgdmEyLmEgPSAxMC4yOworU0VMRUNUIHZhMjsKK0xFVCB2YTIuYlsxXSA9IDEwLjM7 CitTRUxFQ1QgdmEyOworCitEUk9QIFZBUklBQkxFIHZhMTsKK0RST1AgVkFSSUFCTEUgdmEyOwor RFJPUCBUWVBFIHRhMjsKKworLS0gZGVmYXVsdCB2YWx1ZXMKK0NSRUFURSBWQVJJQUJMRSB2MSBB UyBudW1lcmljIERFRkFVTFQgcGkoKTsKK0xFVCB2MSA9IHYxICogMjsKK1NFTEVDVCB2MTsKKwor Q1JFQVRFIFRZUEUgdDIgQVMgKGEgbnVtZXJpYywgYiB0ZXh0KTsKK0NSRUFURSBWQVJJQUJMRSB2 MiBBUyB0MiBERUZBVUxUIChOVUxMLCAnSGVsbG8nKTsKK0xFVCBwdWJsaWMudjIuYSA9IHBpKCk7 CitTRUxFQ1QgdjI7CisKKy0tIHNob3VkbCBmYWlsIGR1ZSBkZXBlbmRlbmN5CitEUk9QIFRZUEUg dDI7CisKKy0tIHNob3VsZCBiZSBvaworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUg djI7CisKKy0tIHRlc3RzIG9mIGFsdGVycworQ1JFQVRFIFNDSEVNQSB2YXJfc2NoZW1hMTsKK0NS RUFURSBTQ0hFTUEgdmFyX3NjaGVtYTI7CisKK0NSRUFURSBWQVJJQUJMRSB2YXJfc2NoZW1hMS52 YXIxIEFTIGludGVnZXI7CitMRVQgdmFyX3NjaGVtYTEudmFyMSA9IDEwMDA7CitTRUxFQ1QgdmFy X3NjaGVtYTEudmFyMTsKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWExLnZhcjEgU0VUIFNDSEVN QSB2YXJfc2NoZW1hMjsKK1NFTEVDVCB2YXJfc2NoZW1hMi52YXIxOworCitDUkVBVEUgUk9MRSB2 YXJfdGVzdF9yb2xlOworCitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxIE9XTkVSIFRP IHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQg ZmFpbCwgbm8gYWNjZXNzIHRvIHNjaGVtYSB2YXJfc2NoZW1hMi52YXIKK1NFTEVDVCB2YXJfc2No ZW1hMi52YXIxOworRFJPUCBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxOworCitTRVQgUk9MRSBU TyBERUZBVUxUOworCitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIxIFNFVCBTQ0hFTUEg cHVibGljOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworU0VMRUNUIHB1YmxpYy52YXIx OworCitBTFRFUiBWQVJJQUJMRSBwdWJsaWMudmFyMSBSRU5BTUUgVE8gdmFyMV9yZW5hbWVkOwor CitTRUxFQ1QgcHVibGljLnZhcjFfcmVuYW1lZDsKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMudmFy MV9yZW5hbWVkOworCitTRVQgUk9MRSBUTyBERUZBVUx0OworCitEUk9QIFJPTEUgdmFyX3Rlc3Rf cm9sZTsKKworQ1JFQVRFIFZBUklBQkxFIHh4IEFTIHRleHQgREVGQVVMVCAnaGVsbG8nOworCitT RUxFQ1QgeHgsIHVwcGVyKHh4KTsKKworTEVUIHh4ID0gJ0hpJzsKKworU0VMRUNUIHh4OworCitE Uk9QIFZBUklBQkxFIHh4Owo= --000000000000dde5da0573662d8e--