Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qMyg9-003kuq-4i for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Jul 2023 22:32:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qMyg7-009bar-Je for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Jul 2023 22:32:51 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qMyg6-009bad-Qt for pgsql-hackers@lists.postgresql.org; Fri, 21 Jul 2023 22:32:51 +0000 Received: from mail-oi1-x233.google.com ([2607:f8b0:4864:20::233]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qMyg2-000kyu-Nc for pgsql-hackers@postgresql.org; Fri, 21 Jul 2023 22:32:49 +0000 Received: by mail-oi1-x233.google.com with SMTP id 5614622812f47-3a3790a0a48so1702300b6e.1 for ; Fri, 21 Jul 2023 15:32:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20221208.gappssmtp.com; s=20221208; t=1689978765; x=1690583565; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=hZACxsSQrzmUeEY2C4uOhPIQlcE3WwahlRKUQCyOLQM=; b=bXdckj9X6/oIna+zHn3INXTzhQjdCbYOhCb1yCpELdfQo1WqmYfwr7JGD/waG2e64J GbC6XCGA8rOr4m8AaXEE9VaZ4PG25TE02eBgcFLWS8UpJmjr3BfNUvDW3DKCSA+2v7Fz xFyUlGBH3FECRNUYNltMtNweq2301jSvKliIb5ezHq0BMK/MJ2o8m7miB4mbXHsTXGH8 uT1AObCcxu2K6fyI6jjo1Rtz/WsqBtt+uFbji6PPdNLrOXGsQ49NZcaxJAmLsxu8y+nV Ae0Y3E8wNv5/QZ0Xk5/TnEh+qGj6cxHE3BSpp8l6ymBVv3tWtHhlclAqYImeHlmHAX0N XZ3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689978765; x=1690583565; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=hZACxsSQrzmUeEY2C4uOhPIQlcE3WwahlRKUQCyOLQM=; b=du1U51OfA5/fmRQ4dOz/VLz9kg2cBJmTJEKGT8zo95mo+09lkcxJfYoxInqaN8zRnk oxwZzIELGVf4zjCiRB7F7YDqiqRQt1NyGc7TmtyH6iUkCTUnU/ncmQsUfEy9ef6g5dHT kwRTxUFq0UD9M4o+wr9jZZm6bCwlzyvnAq46idypWufKRPo6DD/fq6nVSCEbz6JRCZKW V2qHom5IQzjZ7kMp7NdDJDjFtsUx76xvtF88S5EdBGU0LSGKfVUolnEYOdukcsm2SC6J A3YD/QEurhbC9XPOMAaJFXjiJvIWbkT1srVoblBjNwpmFYumOKRx7lKn+W9VtCy1Gj4D OgMQ== X-Gm-Message-State: ABy/qLaBrOVP7C3gNfeEr9xS3xKt/7He3AlRc9C338MX+bogUVC4sqqW uB0VemTv5TM2TEtVrC3fBBeNdw== X-Google-Smtp-Source: APBJJlETuLXD6RqzV+WEYKOu6jcVF3BrtLnaEx7TF7yZom3x+EctrRT2QpZUw97bFNncKiNCalltFg== X-Received: by 2002:a05:6358:9999:b0:12b:df63:9d64 with SMTP id j25-20020a056358999900b0012bdf639d64mr1598931rwb.19.1689978765531; Fri, 21 Jul 2023 15:32:45 -0700 (PDT) Received: from jeff-laptop.lan (c-73-170-46-202.hsd1.ca.comcast.net. [73.170.46.202]) by smtp.gmail.com with ESMTPSA id n26-20020a638f1a000000b0055b61cd99a1sm3603519pgd.81.2023.07.21.15.32.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Jul 2023 15:32:44 -0700 (PDT) Message-ID: Subject: Re: Fix search_path for all maintenance commands From: Jeff Davis To: Nathan Bossart , Noah Misch Cc: "David G. Johnston" , Gurjeet Singh , pgsql-hackers@postgresql.org, Robert Haas , Greg Stark , Tom Lane Date: Fri, 21 Jul 2023 15:32:43 -0700 In-Reply-To: <2ad1dd4e5be5567c0d75676b348eab33b529e974.camel@j-davis.com> References: <2cf41c8edeaaf7acb757095e6eceab8ae926f3da.camel@j-davis.com> <20230715211333.GB3675150@rfd.leadboat.com> <20230717175813.GA717781@nathanxps13> <2ad1dd4e5be5567c0d75676b348eab33b529e974.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-cCr7JLo8DJ+7Uc2X2BQT" User-Agent: Evolution 3.44.4-0ubuntu1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-cCr7JLo8DJ+7Uc2X2BQT Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 2023-07-17 at 12:16 -0700, Jeff Davis wrote: > Based on feedback, I plan to commit soon. Attached is a new version. Changes: * Also switch the search_path during CREATE MATERIALIZED VIEW, so that it's consistent with REFRESH. As a part of this change, I slightly reordered things in ExecCreateTableAs() so that the skipData path returns early without entering the SECURITY_RESTRICTED_OPERATION. I don't think that's a problem because (a) that is one place where SECURITY_RESTRICTED_OPERATION is not used for security, but rather for consistency; and (b) that path doesn't go through rewriter, planner, or executor anyway so I don't see why it would matter. * Use GUC_ACTION_SAVE rather than GUC_ACTION_SET. That was a problem with the previous patch for index functions executed in parallel workers, which can happen calling SQL functions from pg_amcheck. * I used a wrapper function RestrictSearchPath() rather than calling set_config_option() directly. That provides a nice place in case we need to add a compatibility GUC to disable it. Question: Why do we switch to the table owner and use SECURITY_RESTRICTED_OPERATION in DefineIndex(), when we will switch in index_build (etc.) anyway? Similarly, why do we switch in vacuum_rel(), when it doesn't matter for lazy vacuum and we will switch in cluster_rel() and do_analyze_rel() anyway? For now, I left the extra calls to RestrictSearchPath() in for consistency with the switches to the table owner. Regards, Jeff Davis --=-cCr7JLo8DJ+7Uc2X2BQT Content-Disposition: attachment; filename*0=v1-0001-Restrict-search_path-when-performing-maintenance.patc; filename*1=h Content-Type: text/x-patch; name="v1-0001-Restrict-search_path-when-performing-maintenance.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBhMmEyNDY4ZGM5NTc3NDk4ZDc1YWFmZjVlYTgzNzI2YWYwZmQ0ZDVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU aHUsIDYgSnVsIDIwMjMgMTM6MDY6MjIgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxXSBSZXN0cmlj dCBzZWFyY2hfcGF0aCB3aGVuIHBlcmZvcm1pbmcgbWFpbnRlbmFuY2UuCgpXaGVuIGV4ZWN1dGlu ZyBtYWludGVuYW5jZSBvcGVyYXRpb25zIChBTkFMWVpFLCBDTFVTVEVSLApDUkVBVEUvUkVGUkVT SCBNQVRFUklBTElaRUQgVklFVywgUkVJTkRFWCwgb3IgVkFDVVVNKSwgc2V0IHNlYXJjaF9wYXRo CnRvICdwZ19jYXRhbG9nLCBwZ190ZW1wJy4KClRoaXMgY2hhbmdlIGF2b2lkcyBwcm9ibGVtcyB3 aGVuIG1haW50ZW5hbmNlIGNvbW1hbmRzIGFyZSBleGVjdXRlZAp3aXRoIGEgZGlmZmVyZW50IHNl YXJjaF9wYXRoLCB3aGljaCBjb3VsZCBsZWFkIHRvIGVycm9ycyBvcgppbmNvbnNpc3RlbnQgcmVz dWx0cy4gSXQncyBhbHNvIGEgc3RlcCB0b3dhcmRzIG9mZmVyaW5nIHRoZSBNQUlOVEFJTgpwcml2 aWxlZ2Ugc2FmZWx5LgoKRnVuY3Rpb25zIHRoYXQgYXJlIHVzZWQgZm9yIGZ1bmN0aW9uYWwgaW5k ZXhlcywgcGFydGlhbCBpbmRleGVzLCBvciBpbgptYXRlcmlhbGl6ZWQgdmlld3MgdGhhdCBkZXBl bmQgb24gYSBkaWZmZXJlbnQgc2VhcmNoIHBhdGggc2hvdWxkIGJlCmRlY2xhcmVkIHdpdGggQ1JF QVRFIEZVTkNUSU9OIC4uLiBTRVQgc2VhcmNoX3BhdGg9Jy4uLicuCgpBIHByZXZpb3VzIHZlcnNp b24gb2YgdGhpcyBjaGFuZ2Ugd2FzIGNvbW1pdHRlZCBhcyAwNWUxNzM3MzUxLCBidXQgd2FzCm5v dCBhY2NlcHRhYmxlIGZvciAxNiBhbmQgcmV2ZXJ0ZWQuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tL0NBJTJCVGdtb1pWQ0hFUlVrWGhBTVQyRXItc0tCYzVDNl9pWCUyQlRweHhpdkJl dkRIenEyVFElNDBtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t L2U0NDMyNzE3OWU1YzkwMTVjOGRkYTY3MzUxYzA0ZGE1NTIwNjYwMTcuY2FtZWwlNDBqLWRhdmlz LmNvbQotLS0KIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgICAgICAgICAgICAgICB8 ICAgMiArCiAuLi4vc2dtbC9yZWYvY3JlYXRlX21hdGVyaWFsaXplZF92aWV3LnNnbWwgICAgfCAg IDYgKy0KIC4uLi9zZ21sL3JlZi9yZWZyZXNoX21hdGVyaWFsaXplZF92aWV3LnNnbWwgICB8ICAx OSArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgICAgICAgICAgICB8ICAg MiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgIDUg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICAgICAgIHwgICAyICsK IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYyAgICAgICAgICAgICAgICB8ICAgMiArCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgICAgfCAxMzYgKysrKysr KysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAg ICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jICAgICAgICAgICAgICAg IHwgICAyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAgICAgICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3VzZXJjb250ZXh0LmMgICAgICAgICAgfCAg MTQgKysKIHNyYy9iaW4vc2NyaXB0cy90LzEwMF92YWN1dW1kYi5wbCAgICAgICAgICAgICB8ICAg NCAtCiBzcmMvaW5jbHVkZS91dGlscy91c2VyY29udGV4dC5oICAgICAgICAgICAgICAgfCAgIDEg KwogLi4uL2V4cGVjdGVkL3Rlc3Rfb2F0X2hvb2tzLm91dCAgICAgICAgICAgICAgIHwgICA0ICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWF0dmlldy5vdXQgICAgICAgICB8ICA0MCArKysr Ky0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQgICAgICB8ICAxMiAr LQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0ub3V0ICAgICAgICAgIHwgICAyICst CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9tYXR2aWV3LnNxbCAgICAgICAgICAgICAgfCAgMjMgKysr CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wcml2aWxlZ2VzLnNxbCAgICAgICAgICAgfCAgIDggKy0K IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bS5zcWwgICAgICAgICAgICAgICB8ICAgMiArLQog MjEgZmlsZXMgY2hhbmdlZCwgMjEyIGluc2VydGlvbnMoKyksIDgzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgYi9jb250cmliL2FtY2hl Y2svdmVyaWZ5X25idHJlZS5jCmluZGV4IDk0YTk3NTkzMjIuLmJjNDM4MDhkMzUgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKKysrIGIvY29udHJpYi9hbWNoZWNr L3ZlcmlmeV9uYnRyZWUuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgInV0aWxzL2d1Yy5o IgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5o IgorI2luY2x1ZGUgInV0aWxzL3VzZXJjb250ZXh0LmgiCiAKIAogUEdfTU9EVUxFX01BR0lDOwpA QCAtMjgxLDYgKzI4Miw3IEBAIGJ0X2luZGV4X2NoZWNrX2ludGVybmFsKE9pZCBpbmRyZWxpZCwg Ym9vbCBwYXJlbnRjaGVjaywgYm9vbCBoZWFwYWxsaW5kZXhlZCwKIAkJU2V0VXNlcklkQW5kU2Vj Q29udGV4dChoZWFwcmVsLT5yZF9yZWwtPnJlbG93bmVyLAogCQkJCQkJCSAgIHNhdmVfc2VjX2Nv bnRleHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJBVElPTik7CiAJCXNhdmVfbmVzdGxldmVs ID0gTmV3R1VDTmVzdExldmVsKCk7CisJCVJlc3RyaWN0U2VhcmNoUGF0aCgpOwogCX0KIAllbHNl CiAJewpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfbWF0ZXJpYWxpemVkX3Zp ZXcuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX21hdGVyaWFsaXplZF92aWV3LnNnbWwK aW5kZXggMGQyZmVhMmI5Ny4uMDZlM2Q4MGY3MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfbWF0ZXJpYWxpemVkX3ZpZXcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldy5zZ21sCkBAIC0zNyw4ICszNywxMCBAQCBDUkVBVEUgTUFU RVJJQUxJWkVEIFZJRVcgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlPnRhYmxlX25hbWU8 L3JlcGxhY2VhYmxlPgogICA8cGFyYT4KICAgIDxjb21tYW5kPkNSRUFURSBNQVRFUklBTElaRUQg VklFVzwvY29tbWFuZD4gZGVmaW5lcyBhIG1hdGVyaWFsaXplZCB2aWV3IG9mCiAgICBhIHF1ZXJ5 LiAgVGhlIHF1ZXJ5IGlzIGV4ZWN1dGVkIGFuZCB1c2VkIHRvIHBvcHVsYXRlIHRoZSB2aWV3IGF0 IHRoZSB0aW1lCi0gICB0aGUgY29tbWFuZCBpcyBpc3N1ZWQgKHVubGVzcyA8Y29tbWFuZD5XSVRI IE5PIERBVEE8L2NvbW1hbmQ+IGlzIHVzZWQpIGFuZCBtYXkgYmUKLSAgIHJlZnJlc2hlZCBsYXRl ciB1c2luZyA8Y29tbWFuZD5SRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXPC9jb21tYW5kPi4KKyAg IHRoZSBjb21tYW5kIGlzIGlzc3VlZCAodW5sZXNzIDxjb21tYW5kPldJVEggTk8gREFUQTwvY29t bWFuZD4gaXMgdXNlZCkgYW5kCisgICBtYXkgYmUgcmVmcmVzaGVkIGxhdGVyIHVzaW5nIDxjb21t YW5kPlJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVc8L2NvbW1hbmQ+LgorICAgV2hpbGUgdGhlIHF1 ZXJ5IGlzIGV4ZWN1dGluZywgdGhlIDx4cmVmIGxpbmtlbmQ9Imd1Yy1zZWFyY2gtcGF0aCIvPiBp cyBzZXQKKyAgIHRvIDxsaXRlcmFsPnBnX2NhdGFsb2csIHBnX3RlbXA8L2xpdGVyYWw+LgogICA8 L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlZnJlc2hf bWF0ZXJpYWxpemVkX3ZpZXcuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmVmcmVzaF9tYXRlcmlh bGl6ZWRfdmlldy5zZ21sCmluZGV4IDY3NWQ2MDkwZjMuLmEyMjMyYTY0MzggMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvcmVmcmVzaF9tYXRlcmlhbGl6ZWRfdmlldy5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvcmVmcmVzaF9tYXRlcmlhbGl6ZWRfdmlldy5zZ21sCkBAIC0zMiwxMiAr MzIsMTkgQEAgUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyBbIENPTkNVUlJFTlRMWSBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC8KICAgPHBhcmE+CiAgICA8Y29tbWFuZD5S RUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXPC9jb21tYW5kPiBjb21wbGV0ZWx5IHJlcGxhY2VzIHRo ZQogICAgY29udGVudHMgb2YgYSBtYXRlcmlhbGl6ZWQgdmlldy4gIFRvIGV4ZWN1dGUgdGhpcyBj b21tYW5kIHlvdSBtdXN0IGJlIHRoZQotICAgb3duZXIgb2YgdGhlIG1hdGVyaWFsaXplZCB2aWV3 LiAgVGhlIG9sZCBjb250ZW50cyBhcmUgZGlzY2FyZGVkLiAgSWYKLSAgIDxsaXRlcmFsPldJVEgg REFUQTwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkIChvciBkZWZhdWx0cykgdGhlIGJhY2tpbmcgcXVl cnkKLSAgIGlzIGV4ZWN1dGVkIHRvIHByb3ZpZGUgdGhlIG5ldyBkYXRhLCBhbmQgdGhlIG1hdGVy aWFsaXplZCB2aWV3IGlzIGxlZnQgaW4gYQotICAgc2Nhbm5hYmxlIHN0YXRlLiAgSWYgPGxpdGVy YWw+V0lUSCBOTyBEQVRBPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQgbm8gbmV3Ci0gICBkYXRhIGlz IGdlbmVyYXRlZCBhbmQgdGhlIG1hdGVyaWFsaXplZCB2aWV3IGlzIGxlZnQgaW4gYW4gdW5zY2Fu bmFibGUKLSAgIHN0YXRlLgorICAgb3duZXIgb2YgdGhlIG1hdGVyaWFsaXplZCB2aWV3LiAgVGhl IG9sZCBjb250ZW50cyBhcmUgZGlzY2FyZGVkLgorICA8L3BhcmE+CisgIDxwYXJhPgorICAgSWYg PGxpdGVyYWw+V0lUSCBEQVRBPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQgKG9yIGRlZmF1bHRzKSB0 aGUgYmFja2luZworICAgcXVlcnkgaXMgZXhlY3V0ZWQgdG8gcHJvdmlkZSB0aGUgbmV3IGRhdGEs IGFuZCB0aGUgbWF0ZXJpYWxpemVkIHZpZXcgaXMKKyAgIGxlZnQgaW4gYSBzY2FubmFibGUgc3Rh dGUuICBUaGUgcXVlcnkgaXMgZXhlY3V0ZWQgYXMgdGhlIG93bmVyIG9mIHRoZQorICAgbWF0ZXJp YWxpemVkIHZpZXc7IGFuZCB3aGlsZSB0aGUgcXVlcnkgaXMgZXhlY3V0aW5nIHRoZSA8eHJlZgor ICAgbGlua2VuZD0iZ3VjLXNlYXJjaC1wYXRoIi8+IGlzIHNldCB0byA8bGl0ZXJhbD5wZ19jYXRh bG9nLAorICAgcGdfdGVtcDwvbGl0ZXJhbD4uCisgIDwvcGFyYT4KKyAgPHBhcmE+CisgICBJZiA8 bGl0ZXJhbD5XSVRIIE5PIERBVEE8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCBubyBuZXcgZGF0YSBp cyBnZW5lcmF0ZWQKKyAgIGFuZCB0aGUgbWF0ZXJpYWxpemVkIHZpZXcgaXMgbGVmdCBpbiBhbiB1 bnNjYW5uYWJsZSBzdGF0ZS4KICAgPC9wYXJhPgogICA8cGFyYT4KICAgIDxsaXRlcmFsPkNPTkNV UlJFTlRMWTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPldJVEggTk8gREFUQTwvbGl0ZXJhbD4gbWF5 IG5vdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCmluZGV4IDNjNmE5NTZlYWEuLmVjN2UxMzU2NjMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJ1dGlscy9p bmRleF9zZWxmdW5jcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvdXNlcmNvbnRleHQuaCIKIAogCiAvKgpAQCAt MTA2Niw2ICsxMDY3LDcgQEAgYnJpbl9zdW1tYXJpemVfcmFuZ2UoUEdfRlVOQ1RJT05fQVJHUykK IAkJU2V0VXNlcklkQW5kU2VjQ29udGV4dChoZWFwUmVsLT5yZF9yZWwtPnJlbG93bmVyLAogCQkJ CQkJCSAgIHNhdmVfc2VjX2NvbnRleHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJBVElPTik7 CiAJCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJCVJlc3RyaWN0U2VhcmNo UGF0aCgpOwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGViMmI4ZDg0YzMuLmMy ZjMzOThhYzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTg1LDYgKzg1LDcgQEAKICNpbmNsdWRlICJ1 dGlscy9zbmFwbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1 dGlscy90dXBsZXNvcnQuaCIKKyNpbmNsdWRlICJ1dGlscy91c2VyY29udGV4dC5oIgogCiAvKiBQ b3RlbnRpYWxseSBzZXQgYnkgcGdfdXBncmFkZV9zdXBwb3J0IGZ1bmN0aW9ucyAqLwogT2lkCQkJ YmluYXJ5X3VwZ3JhZGVfbmV4dF9pbmRleF9wZ19jbGFzc19vaWQgPSBJbnZhbGlkT2lkOwpAQCAt MTQ3Niw2ICsxNDc3LDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRp b25JZCwKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KGhlYXBSZWwtPnJkX3JlbC0+cmVsb3duZXIs CiAJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJ T04pOwogCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJUmVzdHJpY3RTZWFy Y2hQYXRoKCk7CiAKIAlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihpbmRleFJlbGF0aW9uSWQs IFJvd0V4Y2x1c2l2ZUxvY2spOwogCkBAIC0zMDA3LDYgKzMwMDksNyBAQCBpbmRleF9idWlsZChS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChoZWFwUmVsYXRp b24tPnJkX3JlbC0+cmVsb3duZXIsCiAJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJ VFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOwogCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExl dmVsKCk7CisJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CiAKIAkvKiBTZXQgdXAgaW5pdGlhbCBwcm9n cmVzcyByZXBvcnQgc3RhdHVzICovCiAJewpAQCAtMzM0Myw2ICszMzQ2LDcgQEAgdmFsaWRhdGVf aW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCVNldFVz ZXJJZEFuZFNlY0NvbnRleHQoaGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbG93bmVyLAogCQkJCQkJ ICAgc2F2ZV9zZWNfY29udGV4dCB8IFNFQ1VSSVRZX1JFU1RSSUNURURfT1BFUkFUSU9OKTsKIAlz YXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOworCVJlc3RyaWN0U2VhcmNoUGF0aCgp OwogCiAJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oaW5kZXhJZCwgUm93RXhjbHVzaXZlTG9j ayk7CiAKQEAgLTM2MDMsNiArMzYwNyw3IEBAIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJv b2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwKIAlTZXRVc2VySWRB bmRTZWNDb250ZXh0KGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWxvd25lciwKIAkJCQkJCSAgIHNh dmVfc2VjX2NvbnRleHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJBVElPTik7CiAJc2F2ZV9u ZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwlSZXN0cmljdFNlYXJjaFBhdGgoKTsKIAog CWlmIChwcm9ncmVzcykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFs eXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggYmZkOTgxYWEzZi4u ZmU3MzA5NzBjZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAtNjcsNiArNjcsNyBAQAogI2lu Y2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJ1dGlscy91c2VyY29udGV4dC5o IgogCiAKIC8qIFBlci1pbmRleCBkYXRhIGZvciBBTkFMWVpFICovCkBAIC0zNDksNiArMzUwLDcg QEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywK IAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KG9uZXJlbC0+cmRfcmVsLT5yZWxvd25lciwKIAkJCQkJ CSAgIHNhdmVfc2VjX2NvbnRleHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJBVElPTik7CiAJ c2F2ZV9uZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwlSZXN0cmljdFNlYXJjaFBhdGgo KTsKIAogCS8qIG1lYXN1cmUgZWxhcHNlZCB0aW1lIGlmZiBhdXRvdmFjdXVtIGxvZ2dpbmcgcmVx dWlyZXMgaXQgKi8KIAlpZiAoSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmIHBhcmFtcy0+ bG9nX21pbl9kdXJhdGlvbiA+PSAwKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y2x1c3Rlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jCmluZGV4IGEzYmVmNmFj MzQuLjE3MzBhM2NkNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKQEAgLTU5LDYgKzU5LDcgQEAK ICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKKyNpbmNsdWRlICJ1dGlscy91c2VyY29udGV4 dC5oIgogCiAvKgogICogVGhpcyBzdHJ1Y3QgaXMgdXNlZCB0byBwYXNzIGFyb3VuZCB0aGUgaW5m b3JtYXRpb24gb24gdGFibGVzIHRvIGJlCkBAIC0zNTMsNiArMzU0LDcgQEAgY2x1c3Rlcl9yZWwo T2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQsIENsdXN0ZXJQYXJhbXMgKnBhcmFtcykKIAlTZXRV c2VySWRBbmRTZWNDb250ZXh0KE9sZEhlYXAtPnJkX3JlbC0+cmVsb3duZXIsCiAJCQkJCQkgICBz YXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOwogCXNhdmVf bmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CiAK IAkvKgogCSAqIFNpbmNlIHdlIG1heSBvcGVuIGEgbmV3IHRyYW5zYWN0aW9uIGZvciBlYWNoIHJl bGF0aW9uLCB3ZSBoYXZlIHRvIGNoZWNrCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwppbmRleCBlOTE5 MjBjYTE0Li44ZThlNTU2NDFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVh dGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKQEAgLTUwLDYgKzUw LDcgQEAKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9ybHMuaCIKICNp bmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvdXNlcmNvbnRleHQuaCIK IAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTYxLDYgKzYyLDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlD b21tYW5kSWQJb3V0cHV0X2NpZDsJCS8qIGNtaW4gdG8gaW5zZXJ0IGluIG91dHB1dCB0dXBsZXMg Ki8KIAlpbnQJCQl0aV9vcHRpb25zOwkJLyogdGFibGVfdHVwbGVfaW5zZXJ0IHBlcmZvcm1hbmNl IG9wdGlvbnMgKi8KIAlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogYnVsayBpbnNlcnQgc3Rh dGUgKi8KKwlpbnQJCSAgICpzYXZlX25lc3RsZXZlbDsJLyogaW5pdGlhbGl6ZWQgaW4gRXhlY0Ny ZWF0ZVRhYmxlQXMgaWYgbmV3IEdVQworCQkJCQkJCQkgKiBuZXN0IGxldmVsIGlzIGNyZWF0ZWQg Ki8KIH0gRFJfaW50b3JlbDsKIAogLyogdXRpbGl0eSBmdW5jdGlvbnMgZm9yIENUQVMgZGVmaW5p dGlvbiBjcmVhdGlvbiAqLwpAQCAtMjY3LDYgKzI3MCwxNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQ YXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCX0KIAlBc3NlcnQo cXVlcnktPmNvbW1hbmRUeXBlID09IENNRF9TRUxFQ1QpOwogCisJaWYgKGludG8tPnNraXBEYXRh KQorCXsKKwkJLyoKKwkJICogSWYgV0lUSCBOTyBEQVRBIHdhcyBzcGVjaWZpZWQsIGRvIG5vdCBn byB0aHJvdWdoIHRoZSByZXdyaXRlciwKKwkJICogcGxhbm5lciBhbmQgZXhlY3V0b3IuICBKdXN0 IGRlZmluZSB0aGUgcmVsYXRpb24gdXNpbmcgYSBjb2RlIHBhdGgKKwkJICogc2ltaWxhciB0byBD UkVBVEUgVklFVy4gIFRoaXMgYXZvaWRzIGR1bXAvcmVzdG9yZSBwcm9ibGVtcyBzdGVtbWluZwor CQkgKiBmcm9tIHJ1bm5pbmcgdGhlIHBsYW5uZXIgYmVmb3JlIGFsbCBkZXBlbmRlbmNpZXMgYXJl IHNldCB1cC4KKwkJICovCisJCXJldHVybiBjcmVhdGVfY3Rhc19ub2RhdGEocXVlcnktPnRhcmdl dExpc3QsIGludG8pOworCX0KKwogCS8qCiAJICogRm9yIG1hdGVyaWFsaXplZCB2aWV3cywgbG9j ayBkb3duIHNlY3VyaXR5LXJlc3RyaWN0ZWQgb3BlcmF0aW9ucyBhbmQKIAkgKiBhcnJhbmdlIHRv IG1ha2UgR1VDIHZhcmlhYmxlIGNoYW5nZXMgbG9jYWwgdG8gdGhpcyBjb21tYW5kLiAgVGhpcyBp cwpAQCAtMjgwLDc2ICsyOTQsNjUgQEAgRXhlY0NyZWF0ZVRhYmxlQXMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCwKIAkJU2V0VXNlcklkQW5kU2VjQ29udGV4dChz YXZlX3VzZXJpZCwKIAkJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJ Q1RFRF9PUEVSQVRJT04pOwogCQlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOwor CQlSZXN0cmljdFNlYXJjaFBhdGgoKTsKKwkJKChEUl9pbnRvcmVsICopIGRlc3QpLT5zYXZlX25l c3RsZXZlbCA9ICZzYXZlX25lc3RsZXZlbDsKIAl9CiAKLQlpZiAoaW50by0+c2tpcERhdGEpCi0J ewotCQkvKgotCQkgKiBJZiBXSVRIIE5PIERBVEEgd2FzIHNwZWNpZmllZCwgZG8gbm90IGdvIHRo cm91Z2ggdGhlIHJld3JpdGVyLAotCQkgKiBwbGFubmVyIGFuZCBleGVjdXRvci4gIEp1c3QgZGVm aW5lIHRoZSByZWxhdGlvbiB1c2luZyBhIGNvZGUgcGF0aAotCQkgKiBzaW1pbGFyIHRvIENSRUFU RSBWSUVXLiAgVGhpcyBhdm9pZHMgZHVtcC9yZXN0b3JlIHByb2JsZW1zIHN0ZW1taW5nCi0JCSAq IGZyb20gcnVubmluZyB0aGUgcGxhbm5lciBiZWZvcmUgYWxsIGRlcGVuZGVuY2llcyBhcmUgc2V0 IHVwLgotCQkgKi8KLQkJYWRkcmVzcyA9IGNyZWF0ZV9jdGFzX25vZGF0YShxdWVyeS0+dGFyZ2V0 TGlzdCwgaW50byk7Ci0JfQotCWVsc2UKLQl7Ci0JCS8qCi0JCSAqIFBhcnNlIGFuYWx5c2lzIHdh cyBkb25lIGFscmVhZHksIGJ1dCB3ZSBzdGlsbCBoYXZlIHRvIHJ1biB0aGUgcnVsZQotCQkgKiBy ZXdyaXRlci4gIFdlIGRvIG5vdCBkbyBBY3F1aXJlUmV3cml0ZUxvY2tzOiB3ZSBhc3N1bWUgdGhl IHF1ZXJ5Ci0JCSAqIGVpdGhlciBjYW1lIHN0cmFpZ2h0IGZyb20gdGhlIHBhcnNlciwgb3Igc3Vp dGFibGUgbG9ja3Mgd2VyZQotCQkgKiBhY3F1aXJlZCBieSBwbGFuY2FjaGUuYy4KLQkJICovCi0J CXJld3JpdHRlbiA9IFF1ZXJ5UmV3cml0ZShxdWVyeSk7Ci0KLQkJLyogU0VMRUNUIHNob3VsZCBu ZXZlciByZXdyaXRlIHRvIG1vcmUgb3IgbGVzcyB0aGFuIG9uZSBTRUxFQ1QgcXVlcnkgKi8KLQkJ aWYgKGxpc3RfbGVuZ3RoKHJld3JpdHRlbikgIT0gMSkKLQkJCWVsb2coRVJST1IsICJ1bmV4cGVj dGVkIHJld3JpdGUgcmVzdWx0IGZvciAlcyIsCi0JCQkJIGlzX21hdHZpZXcgPyAiQ1JFQVRFIE1B VEVSSUFMSVpFRCBWSUVXIiA6Ci0JCQkJICJDUkVBVEUgVEFCTEUgQVMgU0VMRUNUIik7Ci0JCXF1 ZXJ5ID0gbGluaXRpYWxfbm9kZShRdWVyeSwgcmV3cml0dGVuKTsKLQkJQXNzZXJ0KHF1ZXJ5LT5j b21tYW5kVHlwZSA9PSBDTURfU0VMRUNUKTsKKwkvKgorCSAqIFBhcnNlIGFuYWx5c2lzIHdhcyBk b25lIGFscmVhZHksIGJ1dCB3ZSBzdGlsbCBoYXZlIHRvIHJ1biB0aGUgcnVsZQorCSAqIHJld3Jp dGVyLiAgV2UgZG8gbm90IGRvIEFjcXVpcmVSZXdyaXRlTG9ja3M6IHdlIGFzc3VtZSB0aGUgcXVl cnkgZWl0aGVyCisJICogY2FtZSBzdHJhaWdodCBmcm9tIHRoZSBwYXJzZXIsIG9yIHN1aXRhYmxl IGxvY2tzIHdlcmUgYWNxdWlyZWQgYnkKKwkgKiBwbGFuY2FjaGUuYy4KKwkgKi8KKwlyZXdyaXR0 ZW4gPSBRdWVyeVJld3JpdGUocXVlcnkpOworCisJLyogU0VMRUNUIHNob3VsZCBuZXZlciByZXdy aXRlIHRvIG1vcmUgb3IgbGVzcyB0aGFuIG9uZSBTRUxFQ1QgcXVlcnkgKi8KKwlpZiAobGlzdF9s ZW5ndGgocmV3cml0dGVuKSAhPSAxKQorCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCByZXdyaXRl IHJlc3VsdCBmb3IgJXMiLAorCQkJIGlzX21hdHZpZXcgPyAiQ1JFQVRFIE1BVEVSSUFMSVpFRCBW SUVXIiA6CisJCQkgIkNSRUFURSBUQUJMRSBBUyBTRUxFQ1QiKTsKKwlxdWVyeSA9IGxpbml0aWFs X25vZGUoUXVlcnksIHJld3JpdHRlbik7CisJQXNzZXJ0KHF1ZXJ5LT5jb21tYW5kVHlwZSA9PSBD TURfU0VMRUNUKTsKIAotCQkvKiBwbGFuIHRoZSBxdWVyeSAqLwotCQlwbGFuID0gcGdfcGxhbl9x dWVyeShxdWVyeSwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCi0JCQkJCQkJIENVUlNPUl9PUFRfUEFS QUxMRUxfT0ssIHBhcmFtcyk7CisJLyogcGxhbiB0aGUgcXVlcnkgKi8KKwlwbGFuID0gcGdfcGxh bl9xdWVyeShxdWVyeSwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCQkJCQkgQ1VSU09SX09QVF9Q QVJBTExFTF9PSywgcGFyYW1zKTsKIAotCQkvKgotCQkgKiBVc2UgYSBzbmFwc2hvdCB3aXRoIGFu IHVwZGF0ZWQgY29tbWFuZCBJRCB0byBlbnN1cmUgdGhpcyBxdWVyeSBzZWVzCi0JCSAqIHJlc3Vs dHMgb2YgYW55IHByZXZpb3VzbHkgZXhlY3V0ZWQgcXVlcmllcy4gIChUaGlzIGNvdWxkIG9ubHkK LQkJICogbWF0dGVyIGlmIHRoZSBwbGFubmVyIGV4ZWN1dGVkIGFuIGFsbGVnZWRseS1zdGFibGUg ZnVuY3Rpb24gdGhhdAotCQkgKiBjaGFuZ2VkIHRoZSBkYXRhYmFzZSBjb250ZW50cywgYnV0IGxl dCdzIGRvIGl0IGFueXdheSB0byBiZQotCQkgKiBwYXJhbGxlbCB0byB0aGUgRVhQTEFJTiBjb2Rl IHBhdGguKQotCQkgKi8KLQkJUHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNuYXBzaG90KCkp OwotCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOworCS8qCisJICogVXNlIGEgc25h cHNob3Qgd2l0aCBhbiB1cGRhdGVkIGNvbW1hbmQgSUQgdG8gZW5zdXJlIHRoaXMgcXVlcnkgc2Vl cworCSAqIHJlc3VsdHMgb2YgYW55IHByZXZpb3VzbHkgZXhlY3V0ZWQgcXVlcmllcy4gIChUaGlz IGNvdWxkIG9ubHkgbWF0dGVyIGlmCisJICogdGhlIHBsYW5uZXIgZXhlY3V0ZWQgYW4gYWxsZWdl ZGx5LXN0YWJsZSBmdW5jdGlvbiB0aGF0IGNoYW5nZWQgdGhlCisJICogZGF0YWJhc2UgY29udGVu dHMsIGJ1dCBsZXQncyBkbyBpdCBhbnl3YXkgdG8gYmUgcGFyYWxsZWwgdG8gdGhlIEVYUExBSU4K KwkgKiBjb2RlIHBhdGguKQorCSAqLworCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFw c2hvdCgpKTsKKwlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCi0JCS8qIENyZWF0 ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAq LwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRl eHQsCi0JCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJ CQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKKwkvKiBDcmVhdGUgYSBRdWVyeURlc2Ms IHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KKwlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCQkJCQkJCUdl dEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJZGVzdCwgcGFyYW1z LCBxdWVyeUVudiwgMCk7CiAKLQkJLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhl IHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgR2V0SW50 b1JlbEVGbGFncyhpbnRvKSk7CisJLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhl IHBsYW4gZm9yIGV4ZWN1dGlvbiAqLworCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBHZXRJbnRv UmVsRUZsYWdzKGludG8pKTsKIAotCQkvKiBydW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbiAqLwot CQlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsK KwkvKiBydW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbiAqLworCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVz YywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDAsIHRydWUpOwogCi0JCS8qIHNhdmUgdGhlIHJvd2Nv dW50IGlmIHdlJ3JlIGdpdmVuIGEgcWMgdG8gZmlsbCAqLwotCQlpZiAocWMpCi0JCQlTZXRRdWVy eUNvbXBsZXRpb24ocWMsIENNRFRBR19TRUxFQ1QsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9j ZXNzZWQpOworCS8qIHNhdmUgdGhlIHJvd2NvdW50IGlmIHdlJ3JlIGdpdmVuIGEgcWMgdG8gZmls bCAqLworCWlmIChxYykKKwkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfU0VMRUNULCBx dWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKIAotCQkvKiBnZXQgb2JqZWN0IGFkZHJl c3MgdGhhdCBpbnRvcmVsX3N0YXJ0dXAgc2F2ZWQgZm9yIHVzICovCi0JCWFkZHJlc3MgPSAoKERS X2ludG9yZWwgKikgZGVzdCktPnJlbGFkZHI7CisJLyogZ2V0IG9iamVjdCBhZGRyZXNzIHRoYXQg aW50b3JlbF9zdGFydHVwIHNhdmVkIGZvciB1cyAqLworCWFkZHJlc3MgPSAoKERSX2ludG9yZWwg KikgZGVzdCktPnJlbGFkZHI7CiAKLQkJLyogYW5kIGNsZWFuIHVwICovCi0JCUV4ZWN1dG9yRmlu aXNoKHF1ZXJ5RGVzYyk7Ci0JCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJLyogYW5kIGNsZWFu IHVwICovCisJRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKKwlFeGVjdXRvckVuZChxdWVyeURl c2MpOwogCi0JCUZyZWVRdWVyeURlc2MocXVlcnlEZXNjKTsKKwlGcmVlUXVlcnlEZXNjKHF1ZXJ5 RGVzYyk7CiAKLQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQl9CisJUG9wQWN0aXZlU25hcHNob3Qo KTsKIAogCWlmIChpc19tYXR2aWV3KQogCXsKQEAgLTUyMiwxMSArNTI1LDI4IEBAIGludG9yZWxf c3RhcnR1cChEZXN0UmVjZWl2ZXIgKnNlbGYsIGludCBvcGVyYXRpb24sIFR1cGxlRGVzYyB0eXBl aW5mbykKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJIGVycm1zZygi dG9vIG1hbnkgY29sdW1uIG5hbWVzIHdlcmUgc3BlY2lmaWVkIikpKTsKIAorCS8qCisJICogUmVz dG9yZSBzZWFyY2hfcGF0aCB0byBvcmlnaW5hbCB2YWx1ZSBzbyB0aGF0IHRoZSBvYmplY3QgaXMg Y3JlYXRlZCBpbgorCSAqIHRoZSBjb3JyZWN0IG5hbWVzcGFjZS4KKwkgKi8KKwlpZiAobXlTdGF0 ZS0+c2F2ZV9uZXN0bGV2ZWwpCisJCUF0RU9YYWN0X0dVQyhmYWxzZSwgKm15U3RhdGUtPnNhdmVf bmVzdGxldmVsKTsKKwogCS8qCiAJICogQWN0dWFsbHkgY3JlYXRlIHRoZSB0YXJnZXQgdGFibGUK IAkgKi8KIAlpbnRvUmVsYXRpb25BZGRyID0gY3JlYXRlX2N0YXNfaW50ZXJuYWwoYXR0ckxpc3Qs IGludG8pOwogCisJLyoKKwkgKiBSZXN0cmljdCB0aGUgc2VhcmNoX3BhdGggYWdhaW4gZm9yIGV4 ZWN1dGlvbiBvZiB0aGUgbWF0ZXJpYWxpemVkIHZpZXcKKwkgKiBxdWVyeS4KKwkgKi8KKwlpZiAo bXlTdGF0ZS0+c2F2ZV9uZXN0bGV2ZWwpCisJeworCQkqbXlTdGF0ZS0+c2F2ZV9uZXN0bGV2ZWwg PSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwkJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CisJfQorCiAJLyoK IAkgKiBGaW5hbGx5IHdlIGNhbiBvcGVuIHRoZSB0YXJnZXQgdGFibGUKIAkgKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMKaW5kZXggYmFmM2U2ZTU3YS4uZTg1NWE1MGRmOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMKQEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlICJ1dGlscy9yZWdwcm9j LmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hl LmgiCisjaW5jbHVkZSAidXRpbHMvdXNlcmNvbnRleHQuaCIKIAogCiAvKiBub24tZXhwb3J0IGZ1 bmN0aW9uIHByb3RvdHlwZXMgKi8KQEAgLTU3NCw2ICs1NzUsNyBAQCBEZWZpbmVJbmRleChPaWQg cmVsYXRpb25JZCwKIAlpbnQJCQlyb290X3NhdmVfbmVzdGxldmVsOwogCiAJcm9vdF9zYXZlX25l c3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOworCVJlc3RyaWN0U2VhcmNoUGF0aCgpOwogCiAJ LyoKIAkgKiBTb21lIGNhbGxlcnMgbmVlZCB1cyB0byBydW4gd2l0aCBhbiBlbXB0eSBkZWZhdWx0 X3RhYmxlc3BhY2U7IHRoaXMgaXMgYQpAQCAtMTMxNiw2ICsxMzE4LDcgQEAgRGVmaW5lSW5kZXgo T2lkIHJlbGF0aW9uSWQsCiAJCQkJU2V0VXNlcklkQW5kU2VjQ29udGV4dChjaGlsZHJlbC0+cmRf cmVsLT5yZWxvd25lciwKIAkJCQkJCQkJCSAgIGNoaWxkX3NhdmVfc2VjX2NvbnRleHQgfCBTRUNV UklUWV9SRVNUUklDVEVEX09QRVJBVElPTik7CiAJCQkJY2hpbGRfc2F2ZV9uZXN0bGV2ZWwgPSBO ZXdHVUNOZXN0TGV2ZWwoKTsKKwkJCQlSZXN0cmljdFNlYXJjaFBhdGgoKTsKIAogCQkJCS8qCiAJ CQkJICogRG9uJ3QgdHJ5IHRvIGNyZWF0ZSBpbmRleGVzIG9uIGZvcmVpZ24gdGFibGVzLCB0aG91 Z2guIFNraXAKQEAgLTIwMzgsNiArMjA0MSw3IEBAIENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5m byAqaW5kZXhJbmZvLAogCQkJewogCQkJCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2Vy aWQsIHNhdmVfc2VjX2NvbnRleHQpOwogCQkJCSpkZGxfc2F2ZV9uZXN0bGV2ZWwgPSBOZXdHVUNO ZXN0TGV2ZWwoKTsKKwkJCQlSZXN0cmljdFNlYXJjaFBhdGgoKTsKIAkJCX0KIAkJfQogCkBAIC0y MDg1LDYgKzIwODksNyBAQCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywK IAkJewogCQkJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29u dGV4dCk7CiAJCQkqZGRsX3NhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJCQlS ZXN0cmljdFNlYXJjaFBhdGgoKTsKIAkJfQogCiAJCS8qCkBAIC0yMTE1LDYgKzIxMjAsNyBAQCBD b21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCXsKIAkJCQlTZXRVc2Vy SWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsKIAkJCQkqZGRs X3NhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJCQkJUmVzdHJpY3RTZWFyY2hQ YXRoKCk7CiAJCQl9CiAKIAkJCS8qCkBAIC0zNzc4LDYgKzM3ODQsNyBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBSZWluZGV4UGFyYW1zICpwYXJhbXMpCiAJ CVNldFVzZXJJZEFuZFNlY0NvbnRleHQoaGVhcFJlbC0+cmRfcmVsLT5yZWxvd25lciwKIAkJCQkJ CQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOwog CQlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOworCQlSZXN0cmljdFNlYXJjaFBh dGgoKTsKIAogCQkvKiBkZXRlcm1pbmUgc2FmZXR5IG9mIHRoaXMgaW5kZXggZm9yIHNldF9pbmRl eHNhZmVfcHJvY2ZsYWdzICovCiAJCWlkeC0+c2FmZSA9IChpbmRleFJlbC0+cmRfaW5kZXhwcnMg PT0gTklMICYmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggYWMyZTc0ZmEzZi4uYzJmNGMyOGM1 MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgInV0 aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9z eXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3VzZXJjb250ZXh0LmgiCiAKIAogdHlwZWRlZiBz dHJ1Y3QKQEAgLTE3OCw2ICsxNzksNyBAQCBFeGVjUmVmcmVzaE1hdFZpZXcoUmVmcmVzaE1hdFZp ZXdTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAlTZXRVc2VySWRBbmRTZWND b250ZXh0KHJlbG93bmVyLAogCQkJCQkJICAgc2F2ZV9zZWNfY29udGV4dCB8IFNFQ1VSSVRZX1JF U1RSSUNURURfT1BFUkFUSU9OKTsKIAlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgp OworCVJlc3RyaWN0U2VhcmNoUGF0aCgpOwogCiAJLyogTWFrZSBzdXJlIGl0IGlzIGEgbWF0ZXJp YWxpemVkIHZpZXcuICovCiAJaWYgKG1hdHZpZXdSZWwtPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxL SU5EX01BVFZJRVcpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IDY5YWMyNzY2ODcuLmE3OTFiZDlk NDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAidXRp bHMvcGdfcnVzYWdlLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0 aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvdXNlcmNvbnRleHQuaCIKIAogCiAvKgpA QCAtMjE4Nyw2ICsyMTg4LDcgQEAgdmFjdXVtX3JlbChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxh dGlvbiwgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChyZWwt PnJkX3JlbC0+cmVsb3duZXIsCiAJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlf UkVTVFJJQ1RFRF9PUEVSQVRJT04pOwogCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVs KCk7CisJUmVzdHJpY3RTZWFyY2hQYXRoKCk7CiAKIAkvKgogCSAqIElmIFBST0NFU1NfTUFJTiBp cyBzZXQgKHRoZSBkZWZhdWx0KSwgaXQncyB0aW1lIHRvIHZhY3V1bSB0aGUgbWFpbgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC91c2VyY29udGV4dC5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvaW5pdC91c2VyY29udGV4dC5jCmluZGV4IGRkOWEwZGQ2YTguLmNkMDM3YzBjNmEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvdXNlcmNvbnRleHQuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9pbml0L3VzZXJjb250ZXh0LmMKQEAgLTkwLDMgKzkwLDE3IEBAIFJlc3Rv cmVVc2VyQ29udGV4dChVc2VyQ29udGV4dCAqY29udGV4dCkKIAkJQXRFT1hhY3RfR1VDKGZhbHNl LCBjb250ZXh0LT5zYXZlX25lc3RsZXZlbCk7CiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChjb250 ZXh0LT5zYXZlX3VzZXJpZCwgY29udGV4dC0+c2F2ZV9zZWNfY29udGV4dCk7CiB9CisKKy8qCisg KiBTZXQgc2VhcmNoX3BhdGggdG8gYSBzYWZlIGFuZCBjb25zaXN0ZW50IHZhbHVlLiBUaGUgY2Fs bGVyIHNob3VsZCBoYXZlCisgKiBhbHJlYWR5IGNhbGxlZCBOZXdHVUNOZXN0TGV2ZWwoKS4KKyAq CisgKiBUaGlzIGlzIGltcG9ydGFudCB3aGVuIGV4ZWN1dGluZyBjb2RlIGFzIGFub3RoZXIgdXNl cjsgZm9yIGV4YW1wbGUsIHdoZW4KKyAqIHJ1bm5pbmcgYSBtYWludGVuYW5jZSBjb21tYW5kIG9u IGEgdGFibGUgd2l0aCBhIGZ1bmN0aW9uYWwgaW5kZXguCisgKi8KK3ZvaWQKK1Jlc3RyaWN0U2Vh cmNoUGF0aCgpCit7CisJc2V0X2NvbmZpZ19vcHRpb24oInNlYXJjaF9wYXRoIiwgInBnX2NhdGFs b2csIHBnX3RlbXAiLCBQR0NfVVNFUlNFVCwKKwkJCQkJICBQR0NfU19TRVNTSU9OLCBHVUNfQUNU SU9OX1NBVkUsIHRydWUsIDAsIGZhbHNlKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0 cy90LzEwMF92YWN1dW1kYi5wbCBiL3NyYy9iaW4vc2NyaXB0cy90LzEwMF92YWN1dW1kYi5wbApp bmRleCBlY2NmY2M1NGExLi5mOTFiNTEyN2E4IDEwMDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMv dC8xMDBfdmFjdXVtZGIucGwKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL3QvMTAwX3ZhY3V1bWRiLnBs CkBAIC0xMDksMTUgKzEwOSwxMSBAQCAkbm9kZS0+c2FmZV9wc3FsKAogICBDUkVBVEUgRlVOQ1RJ T04gZjEoaW50KSBSRVRVUk5TIGludCBMQU5HVUFHRSBTUUwgQVMgJ1NFTEVDVCBmMCgkMSknOwog ICBDUkVBVEUgVEFCTEUgZnVuY2lkeCAoeCBpbnQpOwogICBJTlNFUlQgSU5UTyBmdW5jaWR4IFZB TFVFUyAoMCksKDEpLCgyKSwoMyk7Ci0gIENSRUFURSBJTkRFWCBpMCBPTiBmdW5jaWR4ICgoZjEo eCkpKTsKICAgQ1JFQVRFIFNDSEVNQSAiRm9vIjsKICAgQ1JFQVRFIFRBQkxFICJGb28iLmJhcihp ZCBpbnQpOwogfCk7CiAkbm9kZS0+Y29tbWFuZF9vayhbcXd8dmFjdXVtZGIgLVogLS10YWJsZT0i bmVlZCIicSh1b3QiKCIpeCIpIHBvc3RncmVzfF0sCiAJJ2NvbHVtbiBsaXN0Jyk7Ci0kbm9kZS0+ Y29tbWFuZF9mYWlscygKLQlbcXd8dmFjdXVtZGIgLVp0IGZ1bmNpZHggcG9zdGdyZXN8XSwKLQkn dW5xdWFsaWZpZWQgbmFtZSB2aWEgZnVuY3Rpb25hbCBpbmRleCcpOwogCiAkbm9kZS0+Y29tbWFu ZF9mYWlscygKIAlbICd2YWN1dW1kYicsICctLWFuYWx5emUnLCAnLS10YWJsZScsICd2YWN0YWJs ZShjKScsICdwb3N0Z3JlcycgXSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3VzZXJj b250ZXh0LmggYi9zcmMvaW5jbHVkZS91dGlscy91c2VyY29udGV4dC5oCmluZGV4IGE4MTk1YzE5 NGQuLjU0ODk4MGNlZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3VzZXJjb250ZXh0 LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdXNlcmNvbnRleHQuaApAQCAtMjIsNSArMjIsNiBA QCB0eXBlZGVmIHN0cnVjdCBVc2VyQ29udGV4dAogLyogRnVuY3Rpb24gcHJvdG90eXBlcy4gKi8K IGV4dGVybiB2b2lkIFN3aXRjaFRvVW50cnVzdGVkVXNlcihPaWQgdXNlcmlkLCBVc2VyQ29udGV4 dCAqY29udGV4dCk7CiBleHRlcm4gdm9pZCBSZXN0b3JlVXNlckNvbnRleHQoVXNlckNvbnRleHQg KmNvbnRleHQpOworZXh0ZXJuIHZvaWQgUmVzdHJpY3RTZWFyY2hQYXRoKHZvaWQpOwogCiAjZW5k aWYJCQkJCQkJLyogVVNFUkNPTlRFWFRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X29hdF9ob29rcy9leHBlY3RlZC90ZXN0X29hdF9ob29rcy5vdXQgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfb2F0X2hvb2tzL2V4cGVjdGVkL3Rlc3Rfb2F0X2hvb2tzLm91dAppbmRleCBm ODAzNzNhZWNjLi5lZmZkYzQ5MTQ1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf b2F0X2hvb2tzL2V4cGVjdGVkL3Rlc3Rfb2F0X2hvb2tzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfb2F0X2hvb2tzL2V4cGVjdGVkL3Rlc3Rfb2F0X2hvb2tzLm91dApAQCAtODksMTEg Kzg5LDE1IEBAIE5PVElDRTogIGluIG9iamVjdCBhY2Nlc3M6IHN1cGVydXNlciBmaW5pc2hlZCBj cmVhdGUgKHN1YklkPTB4MCkgW2ludGVybmFsXQogTk9USUNFOiAgaW4gcHJvY2VzcyB1dGlsaXR5 OiBzdXBlcnVzZXIgZmluaXNoZWQgQ1JFQVRFIFRBQkxFCiBDUkVBVEUgSU5ERVggcmVncmVzc190 ZXN0X3RhYmxlX3RfaWR4IE9OIHJlZ3Jlc3NfdGVzdF90YWJsZSAodCk7CiBOT1RJQ0U6ICBpbiBw cm9jZXNzIHV0aWxpdHk6IHN1cGVydXNlciBhdHRlbXB0aW5nIENSRUFURSBJTkRFWAorTk9USUNF OiAgaW4gb2JqZWN0IGFjY2Vzczogc3VwZXJ1c2VyIGF0dGVtcHRpbmcgbmFtZXNwYWNlIHNlYXJj aCAoc3ViSWQ9MHgwKSBbbm8gcmVwb3J0IG9uIHZpb2xhdGlvbiwgYWxsb3dlZF0KK05PVElDRTog IGluIG9iamVjdCBhY2Nlc3M6IHN1cGVydXNlciBmaW5pc2hlZCBuYW1lc3BhY2Ugc2VhcmNoIChz dWJJZD0weDApIFtubyByZXBvcnQgb24gdmlvbGF0aW9uLCBhbGxvd2VkXQogTk9USUNFOiAgaW4g b2JqZWN0IGFjY2Vzczogc3VwZXJ1c2VyIGF0dGVtcHRpbmcgY3JlYXRlIChzdWJJZD0weDApIFtl eHBsaWNpdF0KIE5PVElDRTogIGluIG9iamVjdCBhY2Nlc3M6IHN1cGVydXNlciBmaW5pc2hlZCBj cmVhdGUgKHN1YklkPTB4MCkgW2V4cGxpY2l0XQogTk9USUNFOiAgaW4gcHJvY2VzcyB1dGlsaXR5 OiBzdXBlcnVzZXIgZmluaXNoZWQgQ1JFQVRFIElOREVYCiBHUkFOVCBTRUxFQ1QgT04gVGFibGUg cmVncmVzc190ZXN0X3RhYmxlIFRPIHB1YmxpYzsKIE5PVElDRTogIGluIHByb2Nlc3MgdXRpbGl0 eTogc3VwZXJ1c2VyIGF0dGVtcHRpbmcgR1JBTlQKK05PVElDRTogIGluIG9iamVjdCBhY2Nlc3M6 IHN1cGVydXNlciBhdHRlbXB0aW5nIG5hbWVzcGFjZSBzZWFyY2ggKHN1YklkPTB4MCkgW25vIHJl cG9ydCBvbiB2aW9sYXRpb24sIGFsbG93ZWRdCitOT1RJQ0U6ICBpbiBvYmplY3QgYWNjZXNzOiBz dXBlcnVzZXIgZmluaXNoZWQgbmFtZXNwYWNlIHNlYXJjaCAoc3ViSWQ9MHgwKSBbbm8gcmVwb3J0 IG9uIHZpb2xhdGlvbiwgYWxsb3dlZF0KIE5PVElDRTogIGluIHByb2Nlc3MgdXRpbGl0eTogc3Vw ZXJ1c2VyIGZpbmlzaGVkIEdSQU5UCiBDUkVBVEUgRlVOQ1RJT04gcmVncmVzc190ZXN0X2Z1bmMg KHQgdGV4dCkgUkVUVVJOUyB0ZXh0IEFTICQkCiAJU0VMRUNUICQxOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tYXR2aWV3Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvbWF0dmlldy5vdXQKaW5kZXggN2NiMDU4MjdjYS4uZjAzYWViZjEwYSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tYXR2aWV3Lm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL21hdHZpZXcub3V0CkBAIC02MzEsMTIgKzYzMSw1MCBAQCBSRUZSRVNI IE1BVEVSSUFMSVpFRCBWSUVXIG1hdHZpZXdfc2NoZW1hLm12X25vZGF0YTI7CiBSRVNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT047CiBBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMgRk9SIFJPTEUgcmVn cmVzc19tYXR2aWV3X3VzZXIKICAgR1JBTlQgSU5TRVJUIE9OIFRBQkxFUyBUTyByZWdyZXNzX21h dHZpZXdfdXNlcjsKKy0tIFRlc3QgdGhhdCBNViBpcyBwb3B1bGF0ZWQgdXNpbmcgcmVzdHJpY3Rl ZCBzZWFyY2hfcGF0aAorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX21hdHZpZXdf dXNlcjsKK1NFVCBzZWFyY2hfcGF0aCA9IG1hdHZpZXdfc2NoZW1hOworQ1JFQVRFIEZVTkNUSU9O IG1hdHZpZXdfc2NoZW1hLm1vZChhIElOVCwgYiBJTlQpIFJFVFVSTlMgSU5UCisgIElNTVVUQUJM RSBMQU5HVUFHRSBwbHBnc3FsIEFTCisgICQkIEJFR0lOIFJFVFVSTiA0MjsgRU5EOyAkJDsKK0NS RUFURSBGVU5DVElPTiBtYXR2aWV3X3NjaGVtYS5tb2QxMChpIElOVCkgUkVUVVJOUyBJTlQKKyAg SU1NVVRBQkxFIExBTkdVQUdFIHBscGdzcWwgQVMKKyAgJCQgQkVHSU4gUkVUVVJOIG1vZChpLCAx MCk7IEVORDsgJCQ7CitDUkVBVEUgTUFURVJJQUxJWkVEIFZJRVcgbWF0dmlld19zZWFyY2hfcGF0 aCBBUworICBTRUxFQ1QgY3VycmVudF91c2VyLCBtYXR2aWV3X3NjaGVtYS5tb2QxMCgzMyk7CitT RUxFQ1QgKiBGUk9NIG1hdHZpZXdfc2VhcmNoX3BhdGg7CisgICAgIGN1cnJlbnRfdXNlciAgICAg fCBtb2QxMCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIHJlZ3Jlc3NfbWF0dmll d191c2VyIHwgICAgIDMKKygxIHJvdykKKworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwor UkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyBtYXR2aWV3X3NlYXJjaF9wYXRoOworU0VMRUNUICog RlJPTSBtYXR2aWV3X3NlYXJjaF9wYXRoOworICAgICBjdXJyZW50X3VzZXIgICAgIHwgbW9kMTAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyByZWdyZXNzX21hdHZpZXdfdXNlciB8 ICAgICAzCisoMSByb3cpCisKK0FMVEVSIEZVTkNUSU9OIG1hdHZpZXdfc2NoZW1hLm1vZDEwKElO VCkKKyAgU0VUIHNlYXJjaF9wYXRoID0gbWF0dmlld19zY2hlbWEsIHBnX2NhdGFsb2c7CitSRUZS RVNIIE1BVEVSSUFMSVpFRCBWSUVXIG1hdHZpZXdfc2VhcmNoX3BhdGg7CitTRUxFQ1QgKiBGUk9N IG1hdHZpZXdfc2VhcmNoX3BhdGg7CisgICAgIGN1cnJlbnRfdXNlciAgICAgfCBtb2QxMCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIHJlZ3Jlc3NfbWF0dmlld191c2VyIHwgICAg NDIKKygxIHJvdykKKworUkVTRVQgc2VhcmNoX3BhdGg7CiBEUk9QIFNDSEVNQSBtYXR2aWV3X3Nj aGVtYSBDQVNDQURFOwotTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byA0IG90aGVyIG9iamVjdHMK K05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gNyBvdGhlciBvYmplY3RzCiBERVRBSUw6ICBkcm9w IGNhc2NhZGVzIHRvIG1hdGVyaWFsaXplZCB2aWV3IG1hdHZpZXdfc2NoZW1hLm12X3dpdGhkYXRh MQogZHJvcCBjYXNjYWRlcyB0byBtYXRlcmlhbGl6ZWQgdmlldyBtYXR2aWV3X3NjaGVtYS5tdl93 aXRoZGF0YTIKIGRyb3AgY2FzY2FkZXMgdG8gbWF0ZXJpYWxpemVkIHZpZXcgbWF0dmlld19zY2hl bWEubXZfbm9kYXRhMQogZHJvcCBjYXNjYWRlcyB0byBtYXRlcmlhbGl6ZWQgdmlldyBtYXR2aWV3 X3NjaGVtYS5tdl9ub2RhdGEyCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIG1hdHZpZXdfc2No ZW1hLm1vZChpbnRlZ2VyLGludGVnZXIpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIG1hdHZp ZXdfc2NoZW1hLm1vZDEwKGludGVnZXIpCitkcm9wIGNhc2NhZGVzIHRvIG1hdGVyaWFsaXplZCB2 aWV3IG1hdHZpZXdfc2NoZW1hLm1hdHZpZXdfc2VhcmNoX3BhdGgKIERST1AgVVNFUiByZWdyZXNz X21hdHZpZXdfdXNlcjsKIC0tIENSRUFURSBNQVRFUklBTElaRUQgVklFVyAuLi4gSUYgTk9UIEVY SVNUUwogQ1JFQVRFIE1BVEVSSUFMSVpFRCBWSUVXIG1hdHZpZXdfaW5lX3RhYiBBUyBTRUxFQ1Qg MTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0CmluZGV4IGMxZTYxMGU2 MmYuLjFjMzZkN2Y4OTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJp dmlsZWdlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91 dApAQCAtMTc2OSw3ICsxNzY5LDcgQEAgU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3Nyb191c2VyOwogQ1JFQVRFIEZVTkNUSU9OIHVud2FudGVkX2dyYW50KCkgUkVUVVJOUyB2b2lk IExBTkdVQUdFIHNxbCBBUwogCSdHUkFOVCByZWdyZXNzX3ByaXZfZ3JvdXAyIFRPIHJlZ3Jlc3Nf c3JvX3VzZXInOwogQ1JFQVRFIEZVTkNUSU9OIG12X2FjdGlvbigpIFJFVFVSTlMgYm9vbCBMQU5H VUFHRSBzcWwgQVMKLQknREVDTEFSRSBjIENVUlNPUiBXSVRIIEhPTEQgRk9SIFNFTEVDVCB1bndh bnRlZF9ncmFudCgpOyBTRUxFQ1QgdHJ1ZSc7CisJJ0RFQ0xBUkUgYyBDVVJTT1IgV0lUSCBIT0xE IEZPUiBTRUxFQ1QgcHVibGljLnVud2FudGVkX2dyYW50KCk7IFNFTEVDVCB0cnVlJzsKIC0tIFJF RlJFU0ggb2YgdGhpcyBNViB3aWxsIHF1ZXVlIGEgR1JBTlQgYXQgZW5kIG9mIHRyYW5zYWN0aW9u CiBDUkVBVEUgTUFURVJJQUxJWkVEIFZJRVcgc3JvX212IEFTIFNFTEVDVCBtdl9hY3Rpb24oKSBX SVRIIE5PIERBVEE7CiBSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIHNyb19tdjsKQEAgLTE3ODMs MTIgKzE3ODMsMTIgQEAgU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Nyb191c2Vy OwogLS0gSU5TRVJUIHRvIHRoaXMgdGFibGUgd2lsbCBxdWV1ZSBhIEdSQU5UIGF0IGVuZCBvZiB0 cmFuc2FjdGlvbgogQ1JFQVRFIFRBQkxFIHNyb190cm9qYW5fdGFibGUgKCk7CiBDUkVBVEUgRlVO Q1RJT04gc3JvX3Ryb2phbigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSBwbHBnc3FsIEFTCi0J J0JFR0lOIFBFUkZPUk0gdW53YW50ZWRfZ3JhbnQoKTsgUkVUVVJOIE5VTEw7IEVORCc7CisJJ0JF R0lOIFBFUkZPUk0gcHVibGljLnVud2FudGVkX2dyYW50KCk7IFJFVFVSTiBOVUxMOyBFTkQnOwog Q1JFQVRFIENPTlNUUkFJTlQgVFJJR0dFUiB0IEFGVEVSIElOU0VSVCBPTiBzcm9fdHJvamFuX3Rh YmxlCiAgICAgSU5JVElBTExZIERFRkVSUkVEIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVS RSBzcm9fdHJvamFuKCk7CiAtLSBOb3csIFJFRlJFU0ggd2lsbCBpc3N1ZSBzdWNoIGFuIElOU0VS VCwgcXVldWVpbmcgdGhlIEdSQU5UCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBtdl9hY3Rp b24oKSBSRVRVUk5TIGJvb2wgTEFOR1VBR0Ugc3FsIEFTCi0JJ0lOU0VSVCBJTlRPIHNyb190cm9q YW5fdGFibGUgREVGQVVMVCBWQUxVRVM7IFNFTEVDVCB0cnVlJzsKKwknSU5TRVJUIElOVE8gcHVi bGljLnNyb190cm9qYW5fdGFibGUgREVGQVVMVCBWQUxVRVM7IFNFTEVDVCB0cnVlJzsKIFJFRlJF U0ggTUFURVJJQUxJWkVEIFZJRVcgc3JvX212OwogRVJST1I6ICBjYW5ub3QgZmlyZSBkZWZlcnJl ZCB0cmlnZ2VyIHdpdGhpbiBzZWN1cml0eS1yZXN0cmljdGVkIG9wZXJhdGlvbgogQ09OVEVYVDog IFNRTCBmdW5jdGlvbiAibXZfYWN0aW9uIiBzdGF0ZW1lbnQgMQpAQCAtMTgwMCwxNSArMTgwMCwx NSBAQCBCRUdJTjsgU0VUIENPTlNUUkFJTlRTIEFMTCBJTU1FRElBVEU7IFJFRlJFU0ggTUFURVJJ QUxJWkVEIFZJRVcgc3JvX212OyBDT01NSVQ7CiBFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIHRv IGdyYW50IHJvbGUgInJlZ3Jlc3NfcHJpdl9ncm91cDIiCiBERVRBSUw6ICBPbmx5IHJvbGVzIHdp dGggdGhlIEFETUlOIG9wdGlvbiBvbiByb2xlICJyZWdyZXNzX3ByaXZfZ3JvdXAyIiBtYXkgZ3Jh bnQgdGhpcyByb2xlLgogQ09OVEVYVDogIFNRTCBmdW5jdGlvbiAidW53YW50ZWRfZ3JhbnQiIHN0 YXRlbWVudCAxCi1TUUwgc3RhdGVtZW50ICJTRUxFQ1QgdW53YW50ZWRfZ3JhbnQoKSIKLVBML3Bn U1FMIGZ1bmN0aW9uIHNyb190cm9qYW4oKSBsaW5lIDEgYXQgUEVSRk9STQorU1FMIHN0YXRlbWVu dCAiU0VMRUNUIHB1YmxpYy51bndhbnRlZF9ncmFudCgpIgorUEwvcGdTUUwgZnVuY3Rpb24gcHVi bGljLnNyb190cm9qYW4oKSBsaW5lIDEgYXQgUEVSRk9STQogU1FMIGZ1bmN0aW9uICJtdl9hY3Rp b24iIHN0YXRlbWVudCAxCiAtLSBSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIENPTkNVUlJFTlRM WSB1c2Ugb2YgZXZhbF9jb25zdF9leHByZXNzaW9ucygpCiBTRVQgU0VTU0lPTiBBVVRIT1JJWkFU SU9OIHJlZ3Jlc3Nfc3JvX3VzZXI7CiBDUkVBVEUgRlVOQ1RJT04gdW53YW50ZWRfZ3JhbnRfbm9m YWlsKGludCkgUkVUVVJOUyBpbnQKIAlJTU1VVEFCTEUgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAog QkVHSU4KLQlQRVJGT1JNIHVud2FudGVkX2dyYW50KCk7CisJUEVSRk9STSBwdWJsaWMudW53YW50 ZWRfZ3JhbnQoKTsKIAlSQUlTRSBXQVJOSU5HICdvd25lZCc7CiAJUkVUVVJOIDE7CiBFWENFUFRJ T04gV0hFTiBPVEhFUlMgVEhFTgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC92YWN1dW0ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0ub3V0CmluZGV4 IDRkZWY5MGI4MDUuLjMzMGZjZDg4NGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvdmFjdXVtLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ZhY3V1bS5v dXQKQEAgLTY0LDcgKzY0LDcgQEAgQ0xVU1RFUiB2YWNjbHVzdGVyOwogQ1JFQVRFIEZVTkNUSU9O IGRvX2FuYWx5emUoKSBSRVRVUk5TIFZPSUQgVk9MQVRJTEUgTEFOR1VBR0UgU1FMCiAJQVMgJ0FO QUxZWkUgcGdfYW0nOwogQ1JFQVRFIEZVTkNUSU9OIHdyYXBfZG9fYW5hbHl6ZShjIElOVCkgUkVU VVJOUyBJTlQgSU1NVVRBQkxFIExBTkdVQUdFIFNRTAotCUFTICdTRUxFQ1QgJDEgRlJPTSBkb19h bmFseXplKCknOworCUFTICdTRUxFQ1QgJDEgRlJPTSBwdWJsaWMuZG9fYW5hbHl6ZSgpJzsKIENS RUFURSBJTkRFWCBPTiB2YWNjbHVzdGVyKHdyYXBfZG9fYW5hbHl6ZShpKSk7CiBJTlNFUlQgSU5U TyB2YWNjbHVzdGVyIFZBTFVFUyAoMSksICgyKTsKIEFOQUxZWkUgdmFjY2x1c3RlcjsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21hdHZpZXcuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvbWF0dmlldy5zcWwKaW5kZXggYWNjNDUxOWQwMS4uOWMwMjZiZTMyNSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWF0dmlldy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvbWF0dmlldy5zcWwKQEAgLTI3MCw2ICsyNzAsMjkgQEAgUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOwogQUxURVIgREVGQVVMVCBQUklWSUxFR0VTIEZPUiBST0xFIHJlZ3Jlc3NfbWF0 dmlld191c2VyCiAgIEdSQU5UIElOU0VSVCBPTiBUQUJMRVMgVE8gcmVncmVzc19tYXR2aWV3X3Vz ZXI7CiAKKy0tIFRlc3QgdGhhdCBNViBpcyBwb3B1bGF0ZWQgdXNpbmcgcmVzdHJpY3RlZCBzZWFy Y2hfcGF0aAorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX21hdHZpZXdfdXNlcjsK K1NFVCBzZWFyY2hfcGF0aCA9IG1hdHZpZXdfc2NoZW1hOworQ1JFQVRFIEZVTkNUSU9OIG1hdHZp ZXdfc2NoZW1hLm1vZChhIElOVCwgYiBJTlQpIFJFVFVSTlMgSU5UCisgIElNTVVUQUJMRSBMQU5H VUFHRSBwbHBnc3FsIEFTCisgICQkIEJFR0lOIFJFVFVSTiA0MjsgRU5EOyAkJDsKK0NSRUFURSBG VU5DVElPTiBtYXR2aWV3X3NjaGVtYS5tb2QxMChpIElOVCkgUkVUVVJOUyBJTlQKKyAgSU1NVVRB QkxFIExBTkdVQUdFIHBscGdzcWwgQVMKKyAgJCQgQkVHSU4gUkVUVVJOIG1vZChpLCAxMCk7IEVO RDsgJCQ7CitDUkVBVEUgTUFURVJJQUxJWkVEIFZJRVcgbWF0dmlld19zZWFyY2hfcGF0aCBBUwor ICBTRUxFQ1QgY3VycmVudF91c2VyLCBtYXR2aWV3X3NjaGVtYS5tb2QxMCgzMyk7CitTRUxFQ1Qg KiBGUk9NIG1hdHZpZXdfc2VhcmNoX3BhdGg7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047 CitSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIG1hdHZpZXdfc2VhcmNoX3BhdGg7CitTRUxFQ1Qg KiBGUk9NIG1hdHZpZXdfc2VhcmNoX3BhdGg7CisKK0FMVEVSIEZVTkNUSU9OIG1hdHZpZXdfc2No ZW1hLm1vZDEwKElOVCkKKyAgU0VUIHNlYXJjaF9wYXRoID0gbWF0dmlld19zY2hlbWEsIHBnX2Nh dGFsb2c7CitSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIG1hdHZpZXdfc2VhcmNoX3BhdGg7CitT RUxFQ1QgKiBGUk9NIG1hdHZpZXdfc2VhcmNoX3BhdGg7CisKK1JFU0VUIHNlYXJjaF9wYXRoOwor CiBEUk9QIFNDSEVNQSBtYXR2aWV3X3NjaGVtYSBDQVNDQURFOwogRFJPUCBVU0VSIHJlZ3Jlc3Nf bWF0dmlld191c2VyOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wcml2aWxl Z2VzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsCmluZGV4IGJmMDAz NWQ5NmQuLjhlZWQxZjY3MzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZp bGVnZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsCkBAIC0x MTc3LDcgKzExNzcsNyBAQCBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nfc3JvX3Vz ZXI7CiBDUkVBVEUgRlVOQ1RJT04gdW53YW50ZWRfZ3JhbnQoKSBSRVRVUk5TIHZvaWQgTEFOR1VB R0Ugc3FsIEFTCiAJJ0dSQU5UIHJlZ3Jlc3NfcHJpdl9ncm91cDIgVE8gcmVncmVzc19zcm9fdXNl cic7CiBDUkVBVEUgRlVOQ1RJT04gbXZfYWN0aW9uKCkgUkVUVVJOUyBib29sIExBTkdVQUdFIHNx bCBBUwotCSdERUNMQVJFIGMgQ1VSU09SIFdJVEggSE9MRCBGT1IgU0VMRUNUIHVud2FudGVkX2dy YW50KCk7IFNFTEVDVCB0cnVlJzsKKwknREVDTEFSRSBjIENVUlNPUiBXSVRIIEhPTEQgRk9SIFNF TEVDVCBwdWJsaWMudW53YW50ZWRfZ3JhbnQoKTsgU0VMRUNUIHRydWUnOwogLS0gUkVGUkVTSCBv ZiB0aGlzIE1WIHdpbGwgcXVldWUgYSBHUkFOVCBhdCBlbmQgb2YgdHJhbnNhY3Rpb24KIENSRUFU RSBNQVRFUklBTElaRUQgVklFVyBzcm9fbXYgQVMgU0VMRUNUIG12X2FjdGlvbigpIFdJVEggTk8g REFUQTsKIFJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcgc3JvX212OwpAQCAtMTE4OCwxMiArMTE4 OCwxMiBAQCBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nfc3JvX3VzZXI7CiAtLSBJ TlNFUlQgdG8gdGhpcyB0YWJsZSB3aWxsIHF1ZXVlIGEgR1JBTlQgYXQgZW5kIG9mIHRyYW5zYWN0 aW9uCiBDUkVBVEUgVEFCTEUgc3JvX3Ryb2phbl90YWJsZSAoKTsKIENSRUFURSBGVU5DVElPTiBz cm9fdHJvamFuKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFIHBscGdzcWwgQVMKLQknQkVHSU4g UEVSRk9STSB1bndhbnRlZF9ncmFudCgpOyBSRVRVUk4gTlVMTDsgRU5EJzsKKwknQkVHSU4gUEVS Rk9STSBwdWJsaWMudW53YW50ZWRfZ3JhbnQoKTsgUkVUVVJOIE5VTEw7IEVORCc7CiBDUkVBVEUg Q09OU1RSQUlOVCBUUklHR0VSIHQgQUZURVIgSU5TRVJUIE9OIHNyb190cm9qYW5fdGFibGUKICAg ICBJTklUSUFMTFkgREVGRVJSRUQgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHNyb190 cm9qYW4oKTsKIC0tIE5vdywgUkVGUkVTSCB3aWxsIGlzc3VlIHN1Y2ggYW4gSU5TRVJULCBxdWV1 ZWluZyB0aGUgR1JBTlQKIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG12X2FjdGlvbigpIFJF VFVSTlMgYm9vbCBMQU5HVUFHRSBzcWwgQVMKLQknSU5TRVJUIElOVE8gc3JvX3Ryb2phbl90YWJs ZSBERUZBVUxUIFZBTFVFUzsgU0VMRUNUIHRydWUnOworCSdJTlNFUlQgSU5UTyBwdWJsaWMuc3Jv X3Ryb2phbl90YWJsZSBERUZBVUxUIFZBTFVFUzsgU0VMRUNUIHRydWUnOwogUkVGUkVTSCBNQVRF UklBTElaRUQgVklFVyBzcm9fbXY7CiBcYyAtCiBSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIHNy b19tdjsKQEAgLTEyMDQsNyArMTIwNCw3IEBAIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19zcm9fdXNlcjsKIENSRUFURSBGVU5DVElPTiB1bndhbnRlZF9ncmFudF9ub2ZhaWwoaW50 KSBSRVRVUk5TIGludAogCUlNTVVUQUJMRSBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCiBCRUdJTgot CVBFUkZPUk0gdW53YW50ZWRfZ3JhbnQoKTsKKwlQRVJGT1JNIHB1YmxpYy51bndhbnRlZF9ncmFu dCgpOwogCVJBSVNFIFdBUk5JTkcgJ293bmVkJzsKIAlSRVRVUk4gMTsKIEVYQ0VQVElPTiBXSEVO IE9USEVSUyBUSEVOCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC92YWN1dW0uc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFjdXVtLnNxbAppbmRleCA1MWQ3YjFmZWNjLi4wYjYz ZWY4ZGM2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC92YWN1dW0uc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bS5zcWwKQEAgLTQ5LDcgKzQ5LDcgQEAgQ0xVU1RF UiB2YWNjbHVzdGVyOwogQ1JFQVRFIEZVTkNUSU9OIGRvX2FuYWx5emUoKSBSRVRVUk5TIFZPSUQg Vk9MQVRJTEUgTEFOR1VBR0UgU1FMCiAJQVMgJ0FOQUxZWkUgcGdfYW0nOwogQ1JFQVRFIEZVTkNU SU9OIHdyYXBfZG9fYW5hbHl6ZShjIElOVCkgUkVUVVJOUyBJTlQgSU1NVVRBQkxFIExBTkdVQUdF IFNRTAotCUFTICdTRUxFQ1QgJDEgRlJPTSBkb19hbmFseXplKCknOworCUFTICdTRUxFQ1QgJDEg RlJPTSBwdWJsaWMuZG9fYW5hbHl6ZSgpJzsKIENSRUFURSBJTkRFWCBPTiB2YWNjbHVzdGVyKHdy YXBfZG9fYW5hbHl6ZShpKSk7CiBJTlNFUlQgSU5UTyB2YWNjbHVzdGVyIFZBTFVFUyAoMSksICgy KTsKIEFOQUxZWkUgdmFjY2x1c3RlcjsKLS0gCjIuMzQuMQoK --=-cCr7JLo8DJ+7Uc2X2BQT--