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.96) (envelope-from ) id 1w2OJY-000FNK-1Q for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 06:54:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2OJV-00Gny1-2p for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 06:54:01 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2OJV-00Gnxt-0e for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2026 06:54:01 +0000 Received: from mail-yw1-x112f.google.com ([2607:f8b0:4864:20::112f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2OJR-0000000094Q-2ODn for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2026 06:54:00 +0000 Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-79860421382so47826207b3.0 for ; Mon, 16 Mar 2026 23:53:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773730438; cv=none; d=google.com; s=arc-20240605; b=NuCgtS5YFYpf7nOdv34Uk1lgRtSRZLVDl3tQHPmyShNK1PBgec6FW+QKqOGA45hwSy EiJ38oDqZ9vYfsuSo5MJAhUJ/MRMZNkzdc8q39DwDE9j02S/xYq2wDBBQB9g9NICBtU/ WdGtQRNJuBPcWudNlSFGA4CdWciYYBv87YlyEAmet5Gno12NZqPyk0THGGFFuTkSzi7b vXEIAXavkfqAlknbujooN/0FFxX6PhjzU9ek9xBRRQTWK2PIyFgzEC2hHXb04hiSi7yc et3rgxiKHzc6AQG/l8+xKYmJbzH09EWrLm40IXPZk2WF+AJuqmB73zUpL9XVgl63e0nK ZKrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=yo5nN3/voZYZG2aYu6AYtK8XHswacJ84664c2HOJSms=; fh=HFnmkBgiuk5X4pnN6rVXUfTk0JNaDk1qC3tJ+gz963Q=; b=LfN3CmX2dBf0Qf3vuZPpcd9kGDl2OPg1twQNvMK1roKPIYVE4TJkfW9hQnNhzwP1LQ OPH/SZ9QxEoho1uDAOdryprB1KWM2XJHdlmlKMU2tNndMvpyQJqSG0mqSzyeQa9CZ0zH hPA8ZwqtNIjWzmLskJ2P8cqkJJeyKGXKpNwTrJFmzcUGE8JLHhFfVgbqiz3TDQ1CnZx1 t+7IFBOpTuVN77OlOyJehtZsDGGf2OhKnX79/VanoalzLeZgY7Vp2v5zIW/2bYdGa0wm hVFox/T4X4PETF78eVLfyqlWbsgdMdbCCELbMKcSapCCdC52Sxsff9ftE1dWe1oDuu6C KfiQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773730438; x=1774335238; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=yo5nN3/voZYZG2aYu6AYtK8XHswacJ84664c2HOJSms=; b=M6moFLe3WBMSSwls6CmQ+TJYsCn2Y9Qj9YgRke+ZKrg6mKPmyvpXYqd8w/6AwwGNgQ 5iTLuiz3gEqYdJK5l0zF8wso3iWvnmoZdg69gQPmO59RQyVUOBE3l2JxL9eBnbDnWq49 vNhk/hJ4oEO34b7pNxL3ezYjyjK1Do0eSxg/ixl23iVNWu9fGkN23DTGKCS5npz3QCWX 6oktNrtkrzKPJem6zWQ6D0XJo8GgqruhMQbQfqPR/dAHeDSg3Nah685gS07pScYKQ0kJ jHmDbw6ImJjcYyu39cN0kfgPtFPpbN5CinUFK/n/YY6bCjY6lEgckb5t4AztnUs4NgaW pJZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773730438; x=1774335238; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=yo5nN3/voZYZG2aYu6AYtK8XHswacJ84664c2HOJSms=; b=opql59Wka5mRTbOtkPBMa+XBO0ceLzrXuIJm8fcyiBnSQ2QtIFPB6XmwogkQKoM1X2 x1f2LZRSO3qP4naoeYNWMuJLxXcYRVdZYEwhZ19hwl7FshhKGWIa7YNU33OFBHQLcLS0 lvtgmFhzLs2yyNjP6m6nhQ/+DALQTH9vt8kdrBdF4L7b2b++vIpJ3bQzQr5Vqalk8SpI Meo0QrOZ9huvkl+4MLAe386ivl+ZD41etRCwEPQ4z8d2bMxxIsHZfegNeyPlr3hQhLyB dgkTcQ4wWhISNrKFhgKK97nSGmpuRrEQUbHJ/ZP6Jzcb3hpAqmH7L4DEzZOwoJC92m+0 TG4Q== X-Forwarded-Encrypted: i=1; AJvYcCW5lB2HPRMr1/ACFVS9gPyHmHluhDYC0HpiJsXhtvNg4r/7ulWFSy9cTzSIOIHs4gchsl0gnVLJdqCX5wfU@lists.postgresql.org X-Gm-Message-State: AOJu0YxN20UqsDUgUsliX5aYbIDBQ849Uuurv3l8EZ8MhXOCSCQyE8ey NPdihmtj4bqCNDipGjPoHpTjEzHq57lDuupAkaJQdtTtQshsmiB3N9VKBkfAchz4fT6iN8rwmLm uNPHPizWuxLwRzPZBo0MfLFv7mVy5OvU= X-Gm-Gg: ATEYQzz6YA0Gw/7d/xq01ksx8cdG7NxfhzkRvtqbvU3+xxyYQgOxZ0rXlwPCPyfWLuF nGmFm6xw1uPfPAoHMF6EFxjfZkpHdEcJ8Mka/QBwXp9cJmZCjK+0x4jnLggqS9kfOtLEEA2tE9d TG+RRGz6zvBSDy0vz5fLvF9yClmmxr4lDIVCutM0bAsRbxlo82pyyzfFwHeMPGG0HGFqtre/JoM D5weg1E4GGZvwWfpNv39z3bDE+J4LSRO9bkyiN3ZkS7iKKW4tTs8Q1BdA3onOOT9lMFu9hvTn+E /Ab3J6CdFQ== X-Received: by 2002:a05:690c:81:b0:79a:3a79:a4b5 with SMTP id 00721157ae682-79a3a79b4eamr100235357b3.11.1773730438345; Mon, 16 Mar 2026 23:53:58 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: vignesh C Date: Tue, 17 Mar 2026 12:23:45 +0530 X-Gm-Features: AaiRm50rvggUZQILAF2ToJJoOfkGbmMA89aTqtC_3E1BuNSPiGrGBJ9kyQG-5hI Message-ID: Subject: Re: Skipping schema changes in publication To: Peter Smith Cc: Amit Kapila , Masahiko Sawada , "Hayato Kuroda (Fujitsu)" , shveta malik , Shlok Kyal , Nisha Moond , Ashutosh Sharma , "David G. Johnston" , Dilip Kumar , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000b4c98c064d32cc6a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b4c98c064d32cc6a Content-Type: text/plain; charset="UTF-8" On Mon, 16 Mar 2026 at 14:08, Peter Smith wrote: > > Hi Vignesh. > > Unfortunately, IMO there are some fundamental problems here due to > there being no accounting for publications with FOR ALL SEQUENCES. So > I am posting my review comments for just the docs part so you can see > it from my PoV. Maybe this was already discussed earlier in the thread > but I saw no mentions of it. AFAICT the discussion/posts were mostly > focussed on the setting/resetting of EXCEPT TABLE but seem to be > overlooking the bigger picture. > > Below review comments are for v63-0001 docs only. > > ====== > Commit Message > > 1. > The first form replaces the current EXCEPT TABLE list with the specified > tables. The second form clears the existing except table list. Like the > creation syntax, only root partitioned tables can be specified in the > exclusion list. > > ~ > > IMO the second form is a long-time missing command from Postgres. For > example, it is possible to create an "empty" publication. But without > this "ALTER PUBLICATION name SET ALL TABLES" there was no way to > convert that to be a "FOR ALL TABLES" publication. So really this > feature was independently needed and should be done anyway > irrespective of any side-effect it has for the EXCEPT TABLE list. > > Ideally the SET/ADD/DROP ALL TABLES can split out and done ahead of > the EXCEPT TABLE stuff. > > Similarly, SET/ADD/DROP should be implemented also for FOR ALL > SEQUENCES otherwise there is no way to manipulate those either. > > ====== > doc/src/sgml/ref/alter_publication.sgml > > 2. > Implementing the "SET ALL TABLES" is only a start. You also need to > have the other case: > > * ADD ALL TABLES > * DROP ALL TABLES > > Note you might start out with something like "CREATE PUBLICATION pub > FOR ALL TABLES, FOR ALL SEQUENCES" so you need to be able to be able > to modify/remove the published TABLES part without overwriting > published SEQUENCES part!! > > i.e The "SET" means set the publication; it doesn't mean add to the > publication. So SET ALL TABLES obliterates any FOR ALL SEQUENCES. > > ~~~ > > 3. > +where class="parameter">publication_except_tables is: > + > + [ EXCEPT TABLE ( [ ONLY ] class="parameter">table_name [, ... ] ) ] > + > > Hmm. Ideally, this should be part of 'publication_object' and > publication_drop_object' because the ADD/DROP are also needed for the > reasons given in my above review commentS. > > ~~~ > > 4. > > - The first three variants change which tables/schemas are part of the > - publication. The SET clause will replace the list of > - tables/schemas in the publication with the specified list; the existing > - tables/schemas that were present in the publication will be removed. The > + The first four variants modify which tables/schemas are included in the > + publication, or which tables are excluded from it. The > + SET ALL TABLES clause is used to update the > + EXCEPT TABLE list of a FOR ALL TABLES > + publication. If EXCEPT TABLE is specified with a list of > + tables, the existing except table list is replaced with the > specified tables. > + If EXCEPT TABLE is omitted, the existing except table > + list is cleared. The SET clause, when used with a > + publication defined with FOR TABLE or > + FOR TABLES IN SCHEMA, replaces the list of tables/schemas > + in the publication with the specified list; the existing tables or schemas > + that were present in the publication will be removed. The > > I find this all a bit dubious because nothing seems to be accounting > for the possibility of "FOR ALL SEQUENCES" also in the publication... > e.g this entire ALTER command should also have > > SET ALL SEQUENCES > ADD ALL SEQUENCES > DROP ALL SEQUENCE > > and > > SET ALL TABLES > ADD ALL TABLES > DROP ALL TABLES > > IMO, a user will need to take care when using ALTER PUBLICATION ... > SET ALL TABLES that it does not destroy the publication of sequences > (and vice versa) > > -- Start with an "empty" publication and make it a "FOR ALL TABLES" > publication... > CREATE PUBLICATION pub; > ALTER PUBLICATION pub SET ALL TABLES; > -- result is equivalent to "CREATE PUBLICATION ... FOR ALL TABLES" > > > -- give some table exceptions to it > ALTER PUBLICATION pub SET ALL TABLES EXCEPT TABLE(t1,t2); > -- result is equivalent to "CREATE PUBLICATION ... FOR ALL TABLES > EXCEPT TABLE(t1,t2)" > > > -- add sequences to this > ALTER PUBLICATION pub ADD ALL SEQUENCES > -- result is equivalent to "CREATE PUBLICATION ... FOR ALL TABLES > EXCEPT TABLE(t1,t2), FOR ALL SEQUENCES" > > > -- remove the table exception > -- here you cannot simply use SET ALL TABLES because you will lose the > ALL SEQUENCES part of the publication!! > -- So, instead you need to do like below > ALTER PUBLICATION pub DROP ALL TABLES; > ALTER PUBLICATION pub ADD ALL TABLES; > -- result is equivalent to "CREATE PUBLICATION ... FOR ALL TABLES, FOR > ALL SEQUENCES" > > ~~~ > > 5. > + > + > + > + Replace the publication's EXCEPT table list: > > /EXCEPT table list/EXCEPT TABLE list/ > > ~~~ > > 6. > + > + Change the publication to include all tables by removing any existing > + EXCEPT table list: > > The clearing of the EXCEPT TABLES is more like a side-effect, so I > think this can be worded differently. > > SUGGESTION > Reset the publication to be a FOR ALL TABLES publication with no > excluded tables. Thanks for the comments, the agreed comments have been addressed in the v64 version patch attached. Regards, Vignesh --000000000000b4c98c064d32cc6a Content-Type: application/octet-stream; name="v64-0001-Add-support-for-EXCEPT-TABLE-in-ALTER-PUBLICATIO.patch" Content-Disposition: attachment; filename="v64-0001-Add-support-for-EXCEPT-TABLE-in-ALTER-PUBLICATIO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmu9a2vv0 RnJvbSBlNmFjYmE3OTFiNDdhN2RjYmJiMTg4ZjdmNzAwMTI2NmQwY2UxZTM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgNCBNYXIgMjAyNiAxNjoyODozMiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjY0XSBBZGQg c3VwcG9ydCBmb3IgRVhDRVBUIFRBQkxFIGluIEFMVEVSIFBVQkxJQ0FUSU9OLgoKRm9sbG93aW5n IGNvbW1pdCBmZDM2NjA2NWUwLCB3aGljaCBhZGRlZCBFWENFUFQgVEFCTEUgc3VwcG9ydCB0bwpD UkVBVEUgUFVCTElDQVRJT04sIHRoaXMgY29tbWl0IGV4dGVuZHMgQUxURVIgUFVCTElDQVRJT04g dG8gYWxsb3cKbW9kaWZ5aW5nIHRoZSBleGNsdXNpb24gbGlzdC4KCk5ldyBTeW50YXg6CkFMVEVS IFBVQkxJQ0FUSU9OIG5hbWUgU0VUICBwdWJsaWNhdGlvbl9hbGxfb2JqZWN0IFssIC4uLiBdCgp3 aGVyZSBwdWJsaWNhdGlvbl9hbGxfb2JqZWN0IGlzIG9uZSBvZjoKQUxMIFRBQkxFUyBbIEVYQ0VQ VCBUQUJMRSAoIGV4Y2VwdF90YWJsZV9vYmplY3QgWywgLi4uIF0gKSBdCkFMTCBTRVFVRU5DRVMK ClRoZSBTRVQgQUxMIFRBQkxFUyBjbGF1c2UgdXBkYXRlcyBwZ19wdWJsaWNhdGlvbi5wdWJhbGx0 YWJsZXMgdG8gdHJ1ZS4KSWYgdGhlIEVYQ0VQVCBjbGF1c2UgaXMgcHJvdmlkZWQsIHRoZSBleGlz dGluZyBleGNsdXNpb24gbGlzdCBpbgpwZ19wdWJsaWNhdGlvbl9yZWwgaXMgcmVwbGFjZWQgd2l0 aCB0aGUgc3BlY2lmaWVkIHJlbGF0aW9ucy4gSWYgdGhlCkVYQ0VQVCBjbGF1c2UgaXMgb21pdHRl ZCwgYW55IGV4aXN0aW5nIGV4Y2x1c2lvbnMgZm9yIHRoZSBwdWJsaWNhdGlvbgphcmUgY2xlYXJl ZC4gU2ltaWxhcmx5LCBTRVQgQUxMIFNFUVVFTkNFUyB1cGRhdGVzCnBnX3B1YmxpY2F0aW9uLnB1 YmFsbHNlcXVlbmNlcyB0byB0cnVlLgoKTm90ZSB0aGF0IGJlY2F1c2UgdGhpcyBpcyBhIFNFVCBj b21tYW5kLCBzcGVjaWZ5aW5nIG9ubHkgb25lIG9iamVjdAp0eXBlIChlLmcuLCBTRVQgQUxMIFNF UVVFTkNFUykgd2lsbCByZXNldCB0aGUgb3RoZXIgdW5zcGVjaWZpZWQgZmxhZ3MKKGUuZy4sIHNl dHRpbmcgcHViYWxsdGFibGVzIHRvIGZhbHNlKS4KCkNvbnNpc3RlbnQgd2l0aCBDUkVBVEUgUFVC TElDQVRJT04sIG9ubHkgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZXMgb3IKc3RhbmRhcmQgdGFibGVz IGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBsaXN0LiBTcGVjaWZ5aW5nIGEKcGFydGl0 aW9uIGNoaWxkIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLgoKQXV0aG9yOiB2aWduZXNoIEMgPHZp Z25lc2gyMUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBzaHZldGEgbWFsaWsgPHNodmV0YS5tYWxp a0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbWl0IEthcGlsYSA8YW1pdC5rYXBpbGExNkBnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTERhTm0zPUpydWNqaGlpd3NZUXc1 LVBHdEJIRk9OYTZGN2hoV0NYTXNHdmg9dGFtQUBtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCAgIHwgNTEgKysrKysrKysrKy0tLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCA2MCArKysrKysrKysrKysr Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgIHwgOTMgKysrKysr KysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAg ICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgIHwg MjMgKysrKysrCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8IDEz ICsrKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgIHwgIDQgKy0K IHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgIHwgIDIgKwogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgfCA4MyArKysrKysrKysrKysrKysr KysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgfCA1MSArKysr KysrKysrKystCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsICAgICB8IDM2 ICsrKysrKysrLQogMTEgZmlsZXMgY2hhbmdlZCwgMzg5IGluc2VydGlvbnMoKyksIDMwIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24u c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAppbmRleCAwMjg3 NzBmMjE0OS4uMzFmODYwMGEyYWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJf cHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9u LnNnbWwKQEAgLTIyLDcgKzIyLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgPHJlZnN5 bm9wc2lzZGl2PgogPHN5bm9wc2lzPgogQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBBREQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLl0KLUFM VEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gU0VUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9v YmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCitBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFNFVCB7IDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAu Li5dIHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX2FsbF9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSB9CiBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IERST1AgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX2Ryb3Bfb2JqZWN0PC9yZXBsYWNlYWJsZT4g WywgLi4uXQogQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPiBTRVQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cHVibGljYXRpb25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkKIEFMVEVSIFBVQkxJ Q0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4g T1dORVIgVE8geyA8cmVwbGFjZWFibGU+bmV3X293bmVyPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5U X1JPTEUgfCBDVVJSRU5UX1VTRVIgfCBTRVNTSU9OX1VTRVIgfQpAQCAtMzMsNiArMzMsMTEgQEAg QUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgICBUQUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQogICAgIFRB QkxFUyBJTiBTQ0hFTUEgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25h bWU8L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRfU0NIRU1BIH0gWywgLi4uIF0KIAorPHBocmFzZT53 aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fYWxsX29iamVj dDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KKworICAgIEFMTCBUQUJMRVMgWyBF WENFUFQgVEFCTEUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3RhYmxl X29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorICAgIEFMTCBTRVFVRU5DRVMKKwog PHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX2Ry b3Bfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgVEFCTEUg WyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxh Y2VhYmxlPiBbICogXSBbLCAuLi4gXQpAQCAtNDEsNiArNDYsMTAgQEAgQUxURVIgUFVCTElDQVRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5B TUUgVE8gPHIKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJs ZV9hbmRfY29sdW1uczwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICAgWyBPTkxZIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBb ICogXSBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gKSBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXQorCis8cGhyYXNlPmFuZCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3RhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+ IGlzOjwvcGhyYXNlPgorCisgICAgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5 bm9wc2lzZGl2PgogCkBAIC01MywxNCArNjIsMjIgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIK ICAgPC9wYXJhPgogCiAgIDxwYXJhPgotICAgVGhlIGZpcnN0IHRocmVlIHZhcmlhbnRzIGNoYW5n ZSB3aGljaCB0YWJsZXMvc2NoZW1hcyBhcmUgcGFydCBvZiB0aGUKLSAgIHB1YmxpY2F0aW9uLiAg VGhlIDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4gY2xhdXNlIHdpbGwgcmVwbGFjZSB0aGUgbGlzdCBv ZgotICAgdGFibGVzL3NjaGVtYXMgaW4gdGhlIHB1YmxpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmll ZCBsaXN0OyB0aGUgZXhpc3RpbmcKLSAgIHRhYmxlcy9zY2hlbWFzIHRoYXQgd2VyZSBwcmVzZW50 IGluIHRoZSBwdWJsaWNhdGlvbiB3aWxsIGJlIHJlbW92ZWQuICBUaGUKKyAgIFRoZSBmaXJzdCBm b3VyIHZhcmlhbnRzIG1vZGlmeSB3aGljaCB0YWJsZXMvc2NoZW1hcyBhcmUgaW5jbHVkZWQgaW4g dGhlCisgICBwdWJsaWNhdGlvbiwgb3Igd2hpY2ggdGFibGVzIGFyZSBleGNsdWRlZCBmcm9tIGl0 LiAgVGhlCisgICA8bGl0ZXJhbD5TRVQgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gY2xhdXNlIGlzIHVz ZWQgdG8gdXBkYXRlIHRoZQorICAgPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPiBsaXN0 IG9mIGEgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+CisgICBwdWJsaWNhdGlvbi4g IElmIDxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkIHdpdGggYSBs aXN0IG9mCisgICB0YWJsZXMsIHRoZSBleGlzdGluZyBleGNlcHQgdGFibGUgbGlzdCBpcyByZXBs YWNlZCB3aXRoIHRoZSBzcGVjaWZpZWQgdGFibGVzLgorICAgSWYgPGxpdGVyYWw+RVhDRVBUIFRB QkxFPC9saXRlcmFsPiBpcyBvbWl0dGVkLCB0aGUgZXhpc3RpbmcgZXhjZXB0IHRhYmxlCisgICBs aXN0IGlzIGNsZWFyZWQuIFRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVzZSwgd2hlbiB1 c2VkIHdpdGggYQorICAgcHVibGljYXRpb24gZGVmaW5lZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJM RTwvbGl0ZXJhbD4gb3IKKyAgIDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFs PiwgcmVwbGFjZXMgdGhlIGxpc3Qgb2YgdGFibGVzL3NjaGVtYXMKKyAgIGluIHRoZSBwdWJsaWNh dGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsgdGhlIGV4aXN0aW5nIHRhYmxlcyBvciBzY2hl bWFzCisgICB0aGF0IHdlcmUgcHJlc2VudCBpbiB0aGUgcHVibGljYXRpb24gd2lsbCBiZSByZW1v dmVkLiAgVGhlCiAgICA8bGl0ZXJhbD5BREQ8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5EUk9QPC9s aXRlcmFsPiBjbGF1c2VzIHdpbGwgYWRkIGFuZAogICAgcmVtb3ZlIG9uZSBvciBtb3JlIHRhYmxl cy9zY2hlbWFzIGZyb20gdGhlIHB1YmxpY2F0aW9uLiAgTm90ZSB0aGF0IGFkZGluZwotICAgdGFi bGVzL3NjaGVtYXMgdG8gYSBwdWJsaWNhdGlvbiB0aGF0IGlzIGFscmVhZHkgc3Vic2NyaWJlZCB0 byB3aWxsIHJlcXVpcmUgYW4KLSAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlv bi1wYXJhbXMtcmVmcmVzaC1wdWJsaWNhdGlvbiI+CisgICB0YWJsZXMvZXhjZXB0IHRhYmxlcy9z Y2hlbWFzIHRvIGEgcHVibGljYXRpb24gdGhhdCBpcyBhbHJlYWR5IHN1YnNjcmliZWQgdG8KKyAg IHdpbGwgcmVxdWlyZSBhbiA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24tcGFy YW1zLXJlZnJlc2gtcHVibGljYXRpb24iPgogICAgPGxpdGVyYWw+QUxURVIgU1VCU0NSSVBUSU9O IC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OPC9saXRlcmFsPjwvbGluaz4gYWN0aW9uIG9uIHRoZQog ICAgc3Vic2NyaWJpbmcgc2lkZSBpbiBvcmRlciB0byBiZWNvbWUgZWZmZWN0aXZlLiBOb3RlIGFs c28gdGhhdAogICAgPGxpdGVyYWw+RFJPUCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiB3aWxs IG5vdCBkcm9wIGFueSBzY2hlbWEgdGFibGVzCkBAIC03MCw3ICs4Nyw3IEBAIEFMVEVSIFBVQkxJ Q0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4g UkVOQU1FIFRPIDxyCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIFRoZSBmb3VydGggdmFyaWFu dCBvZiB0aGlzIGNvbW1hbmQgbGlzdGVkIGluIHRoZSBzeW5vcHNpcyBjYW4gY2hhbmdlCisgICBU aGUgZmlmdGggdmFyaWFudCBvZiB0aGlzIGNvbW1hbmQgbGlzdGVkIGluIHRoZSBzeW5vcHNpcyBj YW4gY2hhbmdlCiAgICBhbGwgb2YgdGhlIHB1YmxpY2F0aW9uIHByb3BlcnRpZXMgc3BlY2lmaWVk IGluCiAgICA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24iLz4uICBQcm9wZXJ0 aWVzIG5vdCBtZW50aW9uZWQgaW4gdGhlCiAgICBjb21tYW5kIHJldGFpbiB0aGVpciBwcmV2aW91 cyBzZXR0aW5ncy4KQEAgLTgzLDggKzEwMCw5IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAg IDxwYXJhPgogICAgWW91IG11c3Qgb3duIHRoZSBwdWJsaWNhdGlvbiB0byB1c2UgPGNvbW1hbmQ+ QUxURVIgUFVCTElDQVRJT048L2NvbW1hbmQ+LgogICAgQWRkaW5nIGEgdGFibGUgdG8gYSBwdWJs aWNhdGlvbiBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgb3duaW5nIHRoYXQgdGFibGUuCi0gICBUaGUg PGxpdGVyYWw+QUREIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IGFuZAotICAgPGxpdGVyYWw+ U0VUIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGEgcHVibGljYXRpb24gcmVxdWlyZXMg dGhlCisgICBUaGUgPGxpdGVyYWw+QUREIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LAorICAg PGxpdGVyYWw+U0VUIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LCBhbmQKKyAgIDxsaXRlcmFs PlNFVCBBTEwgVEFCTEVTPC9saXRlcmFsPiB0byBhIHB1YmxpY2F0aW9uIHJlcXVpcmVzIHRoZQog ICAgaW52b2tpbmcgdXNlciB0byBiZSBhIHN1cGVydXNlci4KICAgIFRvIGFsdGVyIHRoZSBvd25l ciwgeW91IG11c3QgYmUgYWJsZSB0byA8bGl0ZXJhbD5TRVQgUk9MRTwvbGl0ZXJhbD4gdG8gdGhl CiAgICBuZXcgb3duaW5nIHJvbGUsIGFuZCB0aGF0IHJvbGUgbXVzdCBoYXZlIDxsaXRlcmFsPkNS RUFURTwvbGl0ZXJhbD4KQEAgLTIyMiw2ICsyNDAsMTkgQEAgQUxURVIgUFVCTElDQVRJT04gbXlw dWJsaWNhdGlvbiBBREQgVEFCTEUgdXNlcnMgKHVzZXJfaWQsIGZpcnN0bmFtZSksIGRlcGFydG1l bnQKICAgIENoYW5nZSB0aGUgc2V0IG9mIGNvbHVtbnMgcHVibGlzaGVkIGZvciBhIHRhYmxlOgog PHByb2dyYW1saXN0aW5nPgogQUxURVIgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBTRVQgVEFC TEUgdXNlcnMgKHVzZXJfaWQsIGZpcnN0bmFtZSwgbGFzdG5hbWUpLCBUQUJMRSBkZXBhcnRtZW50 czsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisgIDxwYXJhPgorICAgUmVwbGFjZSB0aGUg cHVibGljYXRpb24ncyBFWENFUFQgVEFCTEUgbGlzdDoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVS IFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gU0VUIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh1 c2VycywgZGVwYXJ0bWVudHMpOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+ CisgICBSZXNldCB0aGUgcHVibGljYXRpb24gdG8gYmUgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNh dGlvbiB3aXRoIG5vIGV4Y2x1ZGVkCisgICB0YWJsZXM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRF UiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgVEFCTEVTOwogPC9wcm9ncmFtbGlz dGluZz48L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMK aW5kZXggYTc5MTU3YzQzYmYuLjY3MmU3MGFiOGQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5jCkBAIC0yNzAsNiArMjcwLDQ4IEBAIGlzX3NjaGVtYV9wdWJsaWNhdGlvbihPaWQg cHViaWQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGVy ZSBpcyBhdCBsZWFzdCBvbmUgcmVsYXRpb24gZXhwbGljaXRseSBpbmNsdWRlZCBpbiB0aGUKKyAq IHB1YmxpY2F0aW9uLgorICovCitib29sCitpc19pbmNsdWRlX3JlbGF0aW9uX3B1YmxpY2F0aW9u KE9pZCBwdWJpZCkKK3sKKwlSZWxhdGlvbglwdWJyZWxzcmVsOworCVNjYW5LZXlEYXRhIHNjYW5r ZXk7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlIZWFwVHVwbGUJdHVwOworCWJvb2wJCXJlc3VsdCA9 IGZhbHNlOworCisJcHVicmVsc3JlbCA9IHRhYmxlX29wZW4oUHVibGljYXRpb25SZWxSZWxhdGlv bklkLCBBY2Nlc3NTaGFyZUxvY2spOworCVNjYW5LZXlJbml0KCZzY2Fua2V5LAorCQkJCUFudW1f cGdfcHVibGljYXRpb25fcmVsX3BycHViaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBG X09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKworCXNjYW4gPSBzeXN0YWJs ZV9iZWdpbnNjYW4ocHVicmVsc3JlbCwKKwkJCQkJCQkgIFB1YmxpY2F0aW9uUmVsUHJwdWJpZElu ZGV4SWQsCisJCQkJCQkJICB0cnVlLCBOVUxMLCAxLCAmc2NhbmtleSk7CisJd2hpbGUgKEhlYXBU dXBsZUlzVmFsaWQodHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlGb3JtX3Bn X3B1YmxpY2F0aW9uX3JlbCBwdWJyZWw7CisKKwkJcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRp b25fcmVsKSBHRVRTVFJVQ1QodHVwKTsKKworCQkvKiBJZiB3ZSBmaW5kIGV2ZW4gb25lIGluY2x1 ZGVkIHJlbGF0aW9uLCB3ZSBhcmUgZG9uZSAqLworCQlpZiAoIXB1YnJlbC0+cHJleGNlcHQpCisJ CXsKKwkJCXJlc3VsdCA9IHRydWU7CisJCQlicmVhazsKKwkJfQorCX0KKworCXN5c3RhYmxlX2Vu ZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UocHVicmVsc3JlbCwgQWNjZXNzU2hhcmVMb2NrKTsK KworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHJlbGF0 aW9uIGhhcyBjb2x1bW4gbGlzdCBhc3NvY2lhdGVkIHdpdGggdGhlCiAgKiBwdWJsaWNhdGlvbiwg ZmFsc2Ugb3RoZXJ3aXNlLgpAQCAtNDQwLDcgKzQ4Miw3IEBAIGF0dG51bXN0b2ludDJ2ZWN0b3Io Qml0bWFwc2V0ICphdHRycykKICAqLwogT2JqZWN0QWRkcmVzcwogcHVibGljYXRpb25fYWRkX3Jl bGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCi0JCQkJCQkgYm9vbCBp Zl9ub3RfZXhpc3RzKQorCQkJCQkJIGJvb2wgaWZfbm90X2V4aXN0cywgQWx0ZXJQdWJsaWNhdGlv blN0bXQgKnN0bXQpCiB7CiAJUmVsYXRpb24JcmVsOwogCUhlYXBUdXBsZQl0dXA7CkBAIC00NTUs NiArNDk3LDE0IEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUmVsSW5mbyAqcHJpLAogCQkJCXJlZmVyZW5jZWQ7CiAJTGlzdAkgICAqcmVsaWRzID0gTklM OwogCWludAkJCWk7CisJYm9vbAkJaW52YWxfZXhjZXB0X3RhYmxlOworCisJLyoKKwkgKiBUcnVl IGlmIEVYQ0VQVCB0YWJsZXMgcmVxdWlyZSBleHBsaWNpdCByZWxjYWNoZSBpbnZhbGlkYXRpb24u IElmCisJICogJ3B1YmFsbHRhYmxlcycgY2hhbmdlcywgZ2xvYmFsIGludmFsaWRhdGlvbiBjb3Zl cnMgdGhlbS4KKwkgKi8KKwlpbnZhbF9leGNlcHRfdGFibGUgPSAoc3RtdCAhPSBOVUxMKSAmJgor CQkoc3RtdC0+Zm9yX2FsbF90YWJsZXMgPT0gcHViLT5hbGx0YWJsZXMpOwogCiAJcmVsID0gdGFi bGVfb3BlbihQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCkBA IC01NDQsMTAgKzU5NCwxMiBAQCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQ dWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAogCS8qCiAJICogUmVsYXRpb25zIGV4Y2x1ZGVkIHZp YSB0aGUgRVhDRVBUIGNsYXVzZSBkbyBub3QgbmVlZCBleHBsaWNpdAotCSAqIGludmFsaWRhdGlv biBhcyBDcmVhdGVQdWJsaWNhdGlvbigpIGZ1bmN0aW9uIGludmFsaWRhdGVzIGFsbCByZWxhdGlv bnMKLQkgKiBhcyBwYXJ0IG9mIGRlZmluaW5nIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24u CisJICogaW52YWxpZGF0aW9uIGR1cmluZyBDUkVBVEUgUFVCTElDQVRJT04sIGFzIENyZWF0ZVB1 YmxpY2F0aW9uKCkgZnVuY3Rpb24KKwkgKiBpbnZhbGlkYXRlcyBhbGwgcmVsYXRpb25zIGFzIHBh cnQgb2YgZGVmaW5pbmcgYSBGT1IgQUxMIFRBQkxFUworCSAqIHB1YmxpY2F0aW9uLiBGb3IgQUxU RVIgUFVCTElDQVRJT04sIGV4cGxpY2l0IGludmFsaWRhdGlvbiBpcyBzdGlsbAorCSAqIHJlcXVp cmVkLgogCSAqLwotCWlmICghcHJpLT5leGNlcHQpCisJaWYgKCFwcmktPmV4Y2VwdCB8fCBpbnZh bF9leGNlcHRfdGFibGUpCiAJewogCQkvKgogCQkgKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRo YXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuYwppbmRleCA2YTNjYTQ3NTFmYS4uNGQyZWUyNTQzYzIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC0xMjcyLDE1ICsxMjcyLDI0IEBAIEFsdGVyUHVi bGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAs CiAJCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UpOwogCWVsc2UJCQkJ CQkvKiBBUF9TZXRPYmplY3RzICovCiAJewotCQlMaXN0CSAgICpvbGRyZWxpZHMgPSBHZXRJbmNs dWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAotCQkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FU SU9OX1BBUlRfUk9PVCk7CisJCWJvb2wJCWlzZXhjZXB0ID0gcHViZm9ybS0+cHViYWxsdGFibGVz OworCQlMaXN0CSAgICpvbGRyZWxpZHM7CiAJCUxpc3QJICAgKmRlbHJlbHMgPSBOSUw7CiAJCUxp c3RDZWxsICAgKm9sZGxjOwogCi0JCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBxdWVy eVN0cmluZywgcHViZm9ybS0+cHVidmlhcm9vdCk7CisJCWlmIChpc2V4Y2VwdCkKKwkJCW9sZHJl bGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsCisJCQkJCQkJCQkJCQkJ IFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCWVsc2UKKwkJeworCQkJb2xkcmVsaWRzID0gR2V0 SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJUFVCTElD QVRJT05fUEFSVF9ST09UKTsKIAotCQlDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChzdG10LT5w dWJuYW1lLCByZWxzLCBwdWJsaXNoX3NjaGVtYSwKLQkJCQkJCQkJICAgcHViZm9ybS0+cHVidmlh cm9vdCk7CisJCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcXVlcnlTdHJpbmcsIHB1 YmZvcm0tPnB1YnZpYXJvb3QpOworCisJCQlDaGVja1B1YlJlbGF0aW9uQ29sdW1uTGlzdChzdG10 LT5wdWJuYW1lLCByZWxzLCBwdWJsaXNoX3NjaGVtYSwKKwkJCQkJCQkJCSAgIHB1YmZvcm0tPnB1 YnZpYXJvb3QpOworCQl9CiAKIAkJLyoKIAkJICogVG8gcmVjcmVhdGUgdGhlIHJlbGF0aW9uIGxp c3QgZm9yIHRoZSBwdWJsaWNhdGlvbiwgbG9vayBmb3IKQEAgLTE0OTgsNiArMTUwNywxNiBAQCBD aGVja0FsdGVyUHVibGljYXRpb24oQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBs ZSB0dXAsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKIAkJ CQkgZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBhZGQgb3Igc2V0IHNjaGVtYXMiKSkpOwog CisJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVzICYmICFzdXBlcnVzZXIoKSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJ ZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBhbHRlciBGT1IgQUxMIFRBQkxFUyBwdWJsaWNh dGlvbiIpKTsKKworCWlmIChzdG10LT5mb3JfYWxsX3NlcXVlbmNlcyAmJiAhc3VwZXJ1c2VyKCkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklW SUxFR0UpLAorCQkJCWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gYWx0ZXIgRk9SIEFMTCBT RVFVRU5DRVMgcHVibGljYXRpb24iKSk7CisKIAkvKgogCSAqIENoZWNrIHRoYXQgdXNlciBpcyBh bGxvd2VkIHRvIG1hbmlwdWxhdGUgdGhlIHB1YmxpY2F0aW9uIHRhYmxlcyBpbgogCSAqIHNjaGVt YQpAQCAtMTU0Niw2ICsxNTY1LDI0IEBAIENoZWNrQWx0ZXJQdWJsaWNhdGlvbihBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCQkJCSAgIE5hbWVTdHIocHViZm9y bS0+cHVibmFtZSkpLAogCQkJCQllcnJkZXRhaWwoIlRhYmxlcyBvciBzZXF1ZW5jZXMgY2Fubm90 IGJlIGFkZGVkIHRvIG9yIGRyb3BwZWQgZnJvbSBGT1IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlv bnMuIikpOwogCX0KKworCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcyB8fCBzdG10LT5mb3JfYWxs X3NlcXVlbmNlcykKKwl7CisJCS8qCisJCSAqIElmIHRoZSBwdWJsaWNhdGlvbiBhbHJlYWR5IGNv bnRhaW5zIHNwZWNpZmljIHRhYmxlcyBvciBzY2hlbWFzLCB3ZQorCQkgKiBwcmV2ZW50IHN3aXRj aGluZyB0byBhIEFMTCBzdGF0ZSB1bmxlc3MgdGhlIHB1YmxpY2F0aW9uIGlzIGVtcHR5LgorCQkg Ki8KKwkJaWYgKGlzX2luY2x1ZGVfcmVsYXRpb25fcHVibGljYXRpb24ocHViZm9ybS0+b2lkKSB8 fAorCQkJaXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmZvcm0tPm9pZCkpCisJCXsKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCisJCQkJCXN0bXQtPmZvcl9hbGxfdGFibGVzID8KKwkJCQkJZXJybXNnKCJwdWJs aWNhdGlvbiBcIiVzXCIgZG9lcyBub3Qgc3VwcG9ydCBBTEwgVEFCTEVTIG9wZXJhdGlvbnMiLCBO YW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSA6CisJCQkJCWVycm1zZygicHVibGljYXRpb24gXCIl c1wiIGRvZXMgbm90IHN1cHBvcnQgQUxMIFNFUVVFTkNFUyBvcGVyYXRpb25zIiwgTmFtZVN0cihw dWJmb3JtLT5wdWJuYW1lKSksCisJCQkJCWVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gcmVxdWly ZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGJlIGRlZmluZWQgYXMgRk9SIEFMTCBUQUJMRVMvU0VRVUVO Q0VTIG9yIHRvIGJlIGVtcHR5LiIpKTsKKwkJfQorCX0KIH0KIAogLyoKQEAgLTE1OTEsOSArMTYy OCw2IEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0 aW9uU3RtdCAqc3RtdCkKIAkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2Jq ZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAogCQkJCQkJCQkgICAmZXhjZXB0cmVsYXRpb25zLCAm c2NoZW1haWRsaXN0KTsKIAotCQkvKiBFWENFUFQgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0 aCBBTFRFUiBQVUJMSUNBVElPTiAqLwotCQlBc3NlcnQoZXhjZXB0cmVsYXRpb25zID09IE5JTCk7 Ci0KIAkJQ2hlY2tBbHRlclB1YmxpY2F0aW9uKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBzY2hlbWFp ZGxpc3QpOwogCiAJCWhlYXBfZnJlZXR1cGxlKHR1cCk7CkBAIC0xNjE1LDkgKzE2NDksNTAgQEAg QWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10KQogCQkJCQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIs CiAJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7CiAKKwkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQo cmVsYXRpb25zLCBleGNlcHRyZWxhdGlvbnMpOwogCQlBbHRlclB1YmxpY2F0aW9uVGFibGVzKHN0 bXQsIHR1cCwgcmVsYXRpb25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkgICBzY2hl bWFpZGxpc3QgIT0gTklMKTsKIAkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCBz Y2hlbWFpZGxpc3QpOworCisJCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcyB8fCBzdG10LT5mb3Jf YWxsX3NlcXVlbmNlcykKKwkJeworCQkJYm9vbAkJbnVsbHNbTmF0dHNfcGdfcHVibGljYXRpb25d OworCQkJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfcHVibGljYXRpb25dOworCQkJRGF0dW0JCXZh bHVlc1tOYXR0c19wZ19wdWJsaWNhdGlvbl07CisJCQlib29sCQlkaXJ0eSA9IGZhbHNlOworCisJ CQltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJCQltZW1zZXQobnVsbHMsIGZh bHNlLCBzaXplb2YobnVsbHMpKTsKKwkJCW1lbXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihy ZXBsYWNlcykpOworCisJCQlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMgIT0gcHViZm9ybS0+cHVi YWxsdGFibGVzKQorCQkJeworCQkJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFsbHRh YmxlcyAtIDFdID0KKwkJCQkJQm9vbEdldERhdHVtKHN0bXQtPmZvcl9hbGxfdGFibGVzKTsKKwkJ CQlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFsbHRhYmxlcyAtIDFdID0gdHJ1ZTsK KwkJCQlkaXJ0eSA9IHRydWU7CisJCQl9CisKKwkJCWlmIChzdG10LT5mb3JfYWxsX3NlcXVlbmNl cyAhPSBwdWJmb3JtLT5wdWJhbGxzZXF1ZW5jZXMpCisJCQl7CisJCQkJdmFsdWVzW0FudW1fcGdf cHVibGljYXRpb25fcHViYWxsc2VxdWVuY2VzIC0gMV0gPQorCQkJCQlCb29sR2V0RGF0dW0oc3Rt dC0+Zm9yX2FsbF9zZXF1ZW5jZXMpOworCQkJCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25f cHViYWxsc2VxdWVuY2VzIC0gMV0gPSB0cnVlOworCQkJCWRpcnR5ID0gdHJ1ZTsKKwkJCX0KKwor CQkJaWYgKGRpcnR5KQorCQkJeworCQkJCXR1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1cCwgUmVs YXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsCisJCQkJCQkJCQkJbnVsbHMsIHJlcGxhY2VzKTsK KwkJCQlDYXRhbG9nVHVwbGVVcGRhdGUocmVsLCAmdHVwLT50X3NlbGYsIHR1cCk7CisJCQkJQ29t bWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCQkJCS8qIEZvciBBTEwgVEFCTEVTLCB3ZSBtdXN0 IGludmFsaWRhdGUgYWxsIHJlbGNhY2hlIGVudHJpZXMgKi8KKwkJCQlpZiAocmVwbGFjZXNbQW51 bV9wZ19wdWJsaWNhdGlvbl9wdWJhbGx0YWJsZXMgLSAxXSkKKwkJCQkJQ2FjaGVJbnZhbGlkYXRl UmVsY2FjaGVBbGwoKTsKKwkJCX0KKwkJfQogCX0KIAogCS8qIENsZWFudXAuICovCkBAIC0xOTUz LDcgKzIwMjgsNyBAQCBQdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMs IGJvb2wgaWZfbm90X2V4aXN0cywKIAkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05F UiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShyZWwtPnJkX3JlbC0+cmVsa2luZCksCiAJCQkJCQkgICBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKTsKIAotCQlvYmogPSBwdWJsaWNhdGlvbl9hZGRf cmVsYXRpb24ocHViaWQsIHB1Yl9yZWwsIGlmX25vdF9leGlzdHMpOworCQlvYmogPSBwdWJsaWNh dGlvbl9hZGRfcmVsYXRpb24ocHViaWQsIHB1Yl9yZWwsIGlmX25vdF9leGlzdHMsIHN0bXQpOwog CQlpZiAoc3RtdCkKIAkJewogCQkJRXZlbnRUcmlnZ2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQob2Jq LCBJbnZhbGlkT2JqZWN0QWRkcmVzcywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggODEx OGY3YWExZWYuLmRjYWY5YjFjYjg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMjA2 MjAsNyArMjA2MjAsOCBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVs YXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKIAkJCQkJCQkgIGxpc3RfbGVuZ3RoKGV4Y2Vw dHB1Ym9pZHMpLAogCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXR0YWNocmVsKSwK IAkJCQkJCQkgIHB1Ym5hbWVzLmRhdGEpLAotCQkJCWVycmRldGFpbCgiVGhlIHB1YmxpY2F0aW9u IEVYQ0VQVCBjbGF1c2UgY2Fubm90IGNvbnRhaW4gdGFibGVzIHRoYXQgYXJlIHBhcnRpdGlvbnMu IikpOworCQkJCWVycmRldGFpbCgiVGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UgY2Fubm90 IGNvbnRhaW4gdGFibGVzIHRoYXQgYXJlIHBhcnRpdGlvbnMuIiksCisJCQkJZXJyaGludCgiTW9k aWZ5IHRoZSBwdWJsaWNhdGlvbidzIEVYQ0VQVCBjbGF1c2UgdXNpbmcgQUxURVIgUFVCTElDQVRJ T04gLi4uIFNFVCBBTEwgVEFCTEVTLiIpKTsKIAl9CiAKIAlsaXN0X2ZyZWUoZXhjZXB0cHVib2lk cyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQppbmRleCBjMjU4NDI0OTYwMy4uZjM2MTUxN2U1ODcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQpAQCAtMTE0NDUsMTEgKzExNDQ1LDE4IEBAIHB1Yl9leGNlcHRfb2JqX2xpc3Q6IFB1YmxpY2F0 aW9uRXhjZXB0T2JqU3BlYwogICoKICAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgU0VUIHB1Yl9v YmogWywgLi4uXQogICoKKyAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgU0VUIHB1Yl9hbGxfb2Jq X3R5cGUgWywgLi4uXQorICoKICAqIHB1Yl9vYmogaXMgb25lIG9mOgogICoKICAqCQlUQUJMRSB0 YWJsZV9uYW1lIFssIC4uLl0KICAqCQlUQUJMRVMgSU4gU0NIRU1BIHNjaGVtYV9uYW1lIFssIC4u Ll0KICAqCisgKiBwdWJfYWxsX29ial90eXBlIGlzIG9uZSBvZjoKKyAqCisgKgkJQUxMIFRBQkxF UyBbIEVYQ0VQVCBUQUJMRSAoIHRhYmxlX25hbWUgWywgLi4uXSApIF0KKyAqCQlBTEwgU0VRVUVO Q0VTCisgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBBbHRlclB1YmxpY2F0aW9uU3RtdDoK QEAgLTExNDU5LDYgKzExNDY2LDcgQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6CiAKIAkJCQkJbi0+ cHVibmFtZSA9ICQzOwogCQkJCQluLT5vcHRpb25zID0gJDU7CisJCQkJCW4tPmZvcl9hbGxfdGFi bGVzID0gZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CiAJCQl8IEFMVEVSIFBV QkxJQ0FUSU9OIG5hbWUgQUREX1AgcHViX29ial9saXN0CkBAIC0xMTQ2OSw2ICsxMTQ3Nyw3IEBA IEFsdGVyUHVibGljYXRpb25TdG10OgogCQkJCQluLT5wdWJvYmplY3RzID0gJDU7CiAJCQkJCXBy ZXByb2Nlc3NfcHVib2JqX2xpc3Qobi0+cHVib2JqZWN0cywgeXlzY2FubmVyKTsKIAkJCQkJbi0+ YWN0aW9uID0gQVBfQWRkT2JqZWN0czsKKwkJCQkJbi0+Zm9yX2FsbF90YWJsZXMgPSBmYWxzZTsK IAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KIAkJCXwgQUxURVIgUFVCTElDQVRJT04gbmFt ZSBTRVQgcHViX29ial9saXN0CkBAIC0xMTQ3OSw2ICsxMTQ4OCwxOSBAQCBBbHRlclB1YmxpY2F0 aW9uU3RtdDoKIAkJCQkJbi0+cHVib2JqZWN0cyA9ICQ1OwogCQkJCQlwcmVwcm9jZXNzX3B1Ym9i al9saXN0KG4tPnB1Ym9iamVjdHMsIHl5c2Nhbm5lcik7CiAJCQkJCW4tPmFjdGlvbiA9IEFQX1Nl dE9iamVjdHM7CisJCQkJCW4tPmZvcl9hbGxfdGFibGVzID0gZmFsc2U7CisJCQkJCSQkID0gKE5v ZGUgKikgbjsKKwkJCQl9CisJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgU0VUIHB1Yl9hbGxf b2JqX3R5cGVfbGlzdAorCQkJCXsKKwkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtl Tm9kZShBbHRlclB1YmxpY2F0aW9uU3RtdCk7CisKKwkJCQkJbi0+cHVibmFtZSA9ICQzOworCQkJ CQluLT5hY3Rpb24gPSBBUF9TZXRPYmplY3RzOworCQkJCQlwcmVwcm9jZXNzX3B1Yl9hbGxfb2Jq dHlwZV9saXN0KCQ1LCAmbi0+cHVib2JqZWN0cywKKwkJCQkJCQkJCQkJCQkmbi0+Zm9yX2FsbF90 YWJsZXMsCisJCQkJCQkJCQkJCQkJJm4tPmZvcl9hbGxfc2VxdWVuY2VzLAorCQkJCQkJCQkJCQkJ CXl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CiAJCQl8IEFMVEVSIFBV QkxJQ0FUSU9OIG5hbWUgRFJPUCBwdWJfb2JqX2xpc3QKQEAgLTExNDg5LDYgKzExNTExLDcgQEAg QWx0ZXJQdWJsaWNhdGlvblN0bXQ6CiAJCQkJCW4tPnB1Ym9iamVjdHMgPSAkNTsKIAkJCQkJcHJl cHJvY2Vzc19wdWJvYmpfbGlzdChuLT5wdWJvYmplY3RzLCB5eXNjYW5uZXIpOwogCQkJCQluLT5h Y3Rpb24gPSBBUF9Ecm9wT2JqZWN0czsKKwkJCQkJbi0+Zm9yX2FsbF90YWJsZXMgPSBmYWxzZTsK IAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KIAkJOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmlu ZGV4IDViZGJmMTUzMGEyLi4yZjY3NDc2NGNhZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAt MjMyOSw3ICsyMzI5LDE4IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAog CQlDT01QTEVURV9XSVRIKCJUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CiAJLyogQUxURVIg UFVCTElDQVRJT04gPG5hbWU+IFNFVCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBV QkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiKSkKLQkJQ09NUExFVEVfV0lUSCgiKCIsICJUQUJM RVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CisJCUNPTVBMRVRFX1dJVEgoIigiLCAiQUxMIFNFUVVF TkNFUyIsICJBTEwgVEFCTEVTIiwgIlRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKKwllbHNl IGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIkFM TCIpKQorCQlDT01QTEVURV9XSVRIKCJTRVFVRU5DRVMiLCAiVEFCTEVTIik7CisJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAi VEFCTEVTIikpCisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCBUQUJMRSAoIik7CisJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAi VEFCTEVTIiwgIkVYQ0VQVCIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRSAoIik7CisJZWxzZSBp ZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwi LCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIpKQorCQlDT01QTEVURV9XSVRIKCIoIik7CisJ LyogQ29tcGxldGUgIkFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBGT1IgVEFCTEUiIHdpdGggIjx0 YWJsZT4sIC4uLiIgKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiU0VUIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIiwgIigi KSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVz KTsKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi QUREfERST1B8U0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiKSkKIAkJQ09NUExFVEVfV0lU SF9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJICIgQU5EIG5z cG5hbWUgTk9UIExJS0UgRSdwZ1xcXFxfJSUnIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRp b24uaAppbmRleCBlMjUyMjg3MTNlNy4uMjQ1NzM4NTE0NGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmgKQEAgLTE5NSwxMCArMTk1LDEyIEBAIGV4dGVybiBPaWQJR2V0VG9wTW9z dEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsCiAKIGV4 dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4g Ym9vbCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKTsKK2V4dGVybiBib29sIGlzX2lu Y2x1ZGVfcmVsYXRpb25fcHVibGljYXRpb24oT2lkIHB1YmlkKTsKIGV4dGVybiBib29sIGNoZWNr X2FuZF9mZXRjaF9jb2x1bW5fbGlzdChQdWJsaWNhdGlvbiAqcHViLCBPaWQgcmVsaWQsCiAJCQkJ CQkJCQkJTWVtb3J5Q29udGV4dCBtY3h0LCBCaXRtYXBzZXQgKipjb2xzKTsKIGV4dGVybiBPYmpl Y3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9u UmVsSW5mbyAqcHJpLAotCQkJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cyk7CisJCQkJCQkJ CQkJCSAgYm9vbCBpZl9ub3RfZXhpc3RzLAorCQkJCQkJCQkJCQkgIEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10KTsKIGV4dGVybiBCaXRtYXBzZXQgKnB1Yl9jb2xsaXN0X3ZhbGlkYXRlKFJlbGF0 aW9uIHRhcmdldHJlbCwgTGlzdCAqY29sdW1ucyk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJs aWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLAogCQkJCQkJCQkJCQli b29sIGlmX25vdF9leGlzdHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGZmYWRkNjY3MTY3 Li5iZDNiZjgxY2ZiZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDUyNSw2ICs0NTI1LDgg QEAgdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJQdWJsaWNhdGlvblN0bXQKIAlMaXN0CSAgICpwdWJvYmpl Y3RzOwkJLyogT3B0aW9uYWwgbGlzdCBvZiBwdWJsaWNhdGlvbiBvYmplY3RzICovCiAJQWx0ZXJQ dWJsaWNhdGlvbkFjdGlvbiBhY3Rpb247CS8qIFdoYXQgYWN0aW9uIHRvIHBlcmZvcm0gd2l0aCB0 aGUgZ2l2ZW4KIAkJCQkJCQkJCSAqIG9iamVjdHMgKi8KKwlib29sCQlmb3JfYWxsX3RhYmxlczsg LyogVHJ1ZSBpZiBTRVQgQUxMIFRBQkxFUyBpcyBzcGVjaWZpZWQgKi8KKwlib29sCQlmb3JfYWxs X3NlcXVlbmNlczsJLyogVHJ1ZSBpZiBTRVQgQUxMIFNFUVVFTkNFUyBpcyBzcGVjaWZpZWQgKi8K IH0gQWx0ZXJQdWJsaWNhdGlvblN0bXQ7CiAKIHR5cGVkZWYgc3RydWN0IENyZWF0ZVN1YnNjcmlw dGlvblN0bXQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRp b24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXgg NjgxZDI1NjRlZDUuLmU0N2FjNDJkNjM2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dApAQCAtMTI2LDYgKzEyNiwxMyBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcnRhYmxlIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogVGFibGVzIGZyb20g c2NoZW1hczoKICAgICAicHViX3Rlc3QiCiAKKy0tIGZhaWwgLSBTRVQgQUxMIFRBQkxFUyBpcyBu b3QgYWxsb3dlZCBmb3IgYSAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJf dGJsMSk7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRhYmxlIiBkb2VzIG5vdCBz dXBwb3J0IEFMTCBUQUJMRVMgb3BlcmF0aW9ucworREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gcmVx dWlyZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGJlIGRlZmluZWQgYXMgRk9SIEFMTCBUQUJMRVMvU0VR VUVOQ0VTIG9yIHRvIGJlIGVtcHR5LgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJs ZSBTRVQgQUxMIFRBQkxFUzsKK0VSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9ydGFibGUi IGRvZXMgbm90IHN1cHBvcnQgQUxMIFRBQkxFUyBvcGVyYXRpb25zCitERVRBSUw6ICBUaGlzIG9w ZXJhdGlvbiByZXF1aXJlcyB0aGUgcHVibGljYXRpb24gdG8gYmUgZGVmaW5lZCBhcyBGT1IgQUxM IFRBQkxFUy9TRVFVRU5DRVMgb3IgdG8gYmUgZW1wdHkuCiBTRVQgY2xpZW50X21pbl9tZXNzYWdl cyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRk9SIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiAtLSBzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUgcHVi bGljYXRpb24gd2l0aCBzY2hlbWEgYW5kIHRhYmxlIG9mIHRoZSBzYW1lCkBAIC0yMTMsNiArMjIw LDQ5IEBAIE5vdC1udWxsIGNvbnN0cmFpbnRzOgogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAg IHwgZiAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAogKDEgcm93KQog CistLSBmYWlsIC0gU0VUIEFMTCBUQUJMRVMgaXMgbm90IGFsbG93ZWQgZm9yIGEgc2NoZW1hIHB1 YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgQUxMIFRB QkxFUyBFWENFUFQgVEFCTEUgKHB1Yl90ZXN0LnRlc3RwdWJfbm9wayk7CitFUlJPUjogIHB1Ymxp Y2F0aW9uICJ0ZXN0cHViX2ZvcnNjaGVtYSIgZG9lcyBub3Qgc3VwcG9ydCBBTEwgVEFCTEVTIG9w ZXJhdGlvbnMKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIHRoZSBwdWJsaWNhdGlv biB0byBiZSBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTL1NFUVVFTkNFUyBvciB0byBiZSBlbXB0 eS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBBTEwgVEFCTEVTOwor RVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3JzY2hlbWEiIGRvZXMgbm90IHN1cHBvcnQg QUxMIFRBQkxFUyBvcGVyYXRpb25zCitERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiByZXF1aXJlcyB0 aGUgcHVibGljYXRpb24gdG8gYmUgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUy9TRVFVRU5DRVMg b3IgdG8gYmUgZW1wdHkuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIFNFVCBBTEwgVEFCTEVTL1NFUVVFTkNFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJP Uic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxfdGJsc19zZXFzOworLS0gRW5h YmxlIGJvdGggcHViYWxsdGFibGVzIGFuZCBwdWJhbGxzZXF1ZW5jZXMKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZm9yYWxsX3RibHNfc2VxcyBTRVQgQUxMIFRBQkxFUywgQUxMIFNFUVVFTkNF UzsKK1xkUnArIHRlc3RwdWJfZm9yYWxsX3RibHNfc2VxcworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFs bF90YmxzX3NlcXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxs IHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdl bmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwg dCAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKKygxIHJvdykKKworLS0gRXhwbGljaXRs eSB0ZXN0IHRoYXQgU0VUIEFMTCBUQUJMRVMgcmVzZXRzIHB1YmFsbHNlcXVlbmNlcyB0byBmYWxz ZQorLS0gUmVzdWx0IHNob3VsZCBiZTogcHViYWxsdGFibGVzID0gdHJ1ZSwgcHViYWxsc2VxdWVu Y2VzID0gZmFsc2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsX3RibHNfc2VxcyBT RVQgQUxMIFRBQkxFUzsKK1xkUnArIHRlc3RwdWJfZm9yYWxsX3RibHNfc2VxcworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0 ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKKygxIHJvdykKKwor LS0gRXhwbGljaXRseSB0ZXN0IHRoYXQgU0VUIEFMTCBTRVFVRU5DRVMgcmVzZXRzIHB1YmFsbHRh YmxlcyB0byBmYWxzZQorLS0gUmVzdWx0IHNob3VsZCBiZTogcHViYWxsdGFibGVzID0gZmFsc2Us IHB1YmFsbHNlcXVlbmNlcyA9IHRydWUKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxs X3RibHNfc2VxcyBTRVQgQUxMIFNFUVVFTkNFUzsKK1xkUnArIHRlc3RwdWJfZm9yYWxsX3RibHNf c2VxcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBE ZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAg fCAKKygxIHJvdykKKworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JhbGxfdGJsc19zZXFzOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBFWENFUFQgVEFCTEUgdGVzdHMgZm9yIG5vcm1hbCB0YWJs ZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjU0 LDYgKzMwNCwyNSBAQCBFeGNlcHQgUHVibGljYXRpb25zOgogICAgICJ0ZXN0cHViX2ZvcmFsbHRh Ymxlc19leGNlcHR0YWJsZSIKICAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUx IgogCistLSBSZW1vdmUgYWxsIHRoZSBFWENFUFQgdGFibGVzLgorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgU0VUIEFMTCBUQUJMRVM7CitcZFJwKyB0 ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVz X2V4Y2VwdHRhYmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBH ZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCisoMSByb3cpCisKKy0tIFJlcGxhY2Ug dGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCB0YWJsZSBsaXN0IHdpdGggYSBzcGVjaWZpYyBFWENFUFQg dGFibGUuCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJs ZSBTRVQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsMSk7CitcZFJwKyB0ZXN0 cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4 Y2VwdHRhYmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBz ZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5l cmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBu b25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJs aWMudGVzdHB1Yl90YmwxIgorCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJM RSB0ZXN0cHViX3RibDI7CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0 ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVt YSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxsdGFibGVz X2V4Y2VwdHRhYmxlMTsKQEAgLTM2MSw2ICs0MzAsNyBAQCBDUkVBVEUgVEFCTEUgdGFiX21haW4g KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CiBBTFRFUiBUQUJMRSB0YWJfbWFpbiBBVFRB Q0ggUEFSVElUSU9OIHRlc3RwdWJfcm9vdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyMDApOwog RVJST1I6ICBjYW5ub3QgYXR0YWNoIHRhYmxlICJ0ZXN0cHViX3Jvb3QiIGFzIHBhcnRpdGlvbiBi ZWNhdXNlIGl0IGlzIHJlZmVyZW5jZWQgaW4gcHVibGljYXRpb24gInRlc3RwdWI4IiBFWENFUFQg Y2xhdXNlCiBERVRBSUw6ICBUaGUgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZSBjYW5ub3QgY29u dGFpbiB0YWJsZXMgdGhhdCBhcmUgcGFydGl0aW9ucy4KK0hJTlQ6ICBNb2RpZnkgdGhlIHB1Ymxp Y2F0aW9uJ3MgRVhDRVBUIGNsYXVzZSB1c2luZyBBTFRFUiBQVUJMSUNBVElPTiAuLi4gU0VUIEFM TCBUQUJMRVMuCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHVi X3Jvb3QsIHRlc3RwdWJfcGFydDEsIHRhYl9tYWluOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHVi ODsKQEAgLTE1NDEsNyArMTYxMSwxOCBAQCBFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIHRvIGNo YW5nZSBvd25lciBvZiBwdWJsaWNhdGlvbiAidGVzdHB1YjQiCiBISU5UOiAgVGhlIG93bmVyIG9m IGEgRk9SIEFMTCBUQUJMRVMgb3IgQUxMIFNFUVVFTkNFUyBvciBUQUJMRVMgSU4gU0NIRU1BIHB1 YmxpY2F0aW9uIG11c3QgYmUgYSBzdXBlcnVzZXIuCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi NCBvd25lciB0byByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXI7IC0tIG9rCiBTRVQgUk9MRSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXI7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI0OworU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1 IEZPUiBBTEwgVEFCTEVTOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWI1IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjM7CitTRVQg Uk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIzOworLS0gZmFpbCAtIFNFVCBBTEwgVEFCTEVT IG9uIGEgcHVibGljYXRpb24gcmVxdWlyZXMgc3VwZXJ1c2VyIHByaXZpbGVnZXMKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90 YmwxKTsgLS0gZmFpbAorRVJST1I6ICBtdXN0IGJlIHN1cGVydXNlciB0byBhbHRlciBGT1IgQUxM IFRBQkxFUyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgU0VUIEFMTCBU QUJMRVM7IC0tIGZhaWwKK0VSUk9SOiAgbXVzdCBiZSBzdXBlcnVzZXIgdG8gYWx0ZXIgRk9SIEFM TCBUQUJMRVMgcHVibGljYXRpb24KK1NFVCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjsK K0RST1AgUFVCTElDQVRJT04gdGVzdHB1YjQsIHRlc3RwdWI1OwogRFJPUCBST0xFIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlcjM7CiBSRVZPS0UgQ1JFQVRFIE9OIERBVEFCQVNFIHJlZ3Jlc3Npb24g RlJPTSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogRFJPUCBUQUJMRSB0ZXN0cHViX3BhcnRl ZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCA0MDU1NzlkYWQ1Mi4uODQ0 YjljN2NiNWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNx bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTc0LDYgKzc0 LDEwIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgRFJPUCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0OwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQg VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFxkUnArIHRlc3RwdWJfZm9ydGFibGUKIAorLS0g ZmFpbCAtIFNFVCBBTEwgVEFCTEVTIGlzIG5vdCBhbGxvd2VkIGZvciBhICdGT1IgVEFCTEUnIHB1 YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBBTEwgVEFC TEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmwxKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9ydGFibGUgU0VUIEFMTCBUQUJMRVM7CisKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0g J0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBGT1IgVEFCTEVT IElOIFNDSEVNQSBwdWJfdGVzdDsKIC0tIHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBwdWJsaWNh dGlvbiB3aXRoIHNjaGVtYSBhbmQgdGFibGUgb2YgdGhlIHNhbWUKQEAgLTEwNSw2ICsxMDksMzMg QEAgU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcyBGUk9NIHBnX3B1YmxpY2F0aW9uIFdIRVJF IHB1Ym5hbWUgPSAndGVzdHB1Yl9mb3JhbGwKIFxkKyB0ZXN0cHViX3RibDIKIFxkUnArIHRlc3Rw dWJfZm9yYWxsdGFibGVzCiAKKy0tIGZhaWwgLSBTRVQgQUxMIFRBQkxFUyBpcyBub3QgYWxsb3dl ZCBmb3IgYSBzY2hlbWEgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y c2NoZW1hIFNFVCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAocHViX3Rlc3QudGVzdHB1Yl9ub3Br KTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBBTEwgVEFCTEVTOwor CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIFNFVCBB TEwgVEFCTEVTL1NFUVVFTkNFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGxfdGJsc19zZXFzOworCistLSBFbmFibGUgYm90aCBwdWJh bGx0YWJsZXMgYW5kIHB1YmFsbHNlcXVlbmNlcworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3JhbGxfdGJsc19zZXFzIFNFVCBBTEwgVEFCTEVTLCBBTEwgU0VRVUVOQ0VTOworXGRScCsgdGVz dHB1Yl9mb3JhbGxfdGJsc19zZXFzCisKKy0tIEV4cGxpY2l0bHkgdGVzdCB0aGF0IFNFVCBBTEwg VEFCTEVTIHJlc2V0cyBwdWJhbGxzZXF1ZW5jZXMgdG8gZmFsc2UKKy0tIFJlc3VsdCBzaG91bGQg YmU6IHB1YmFsbHRhYmxlcyA9IHRydWUsIHB1YmFsbHNlcXVlbmNlcyA9IGZhbHNlCitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMgU0VUIEFMTCBUQUJMRVM7CitcZFJw KyB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMKKworLS0gRXhwbGljaXRseSB0ZXN0IHRoYXQgU0VU IEFMTCBTRVFVRU5DRVMgcmVzZXRzIHB1YmFsbHRhYmxlcyB0byBmYWxzZQorLS0gUmVzdWx0IHNo b3VsZCBiZTogcHViYWxsdGFibGVzID0gZmFsc2UsIHB1YmFsbHNlcXVlbmNlcyA9IHRydWUKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsX3RibHNfc2VxcyBTRVQgQUxMIFNFUVVFTkNF UzsKK1xkUnArIHRlc3RwdWJfZm9yYWxsX3RibHNfc2VxcworCitSRVNFVCBjbGllbnRfbWluX21l c3NhZ2VzOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXM7CisKIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gRVhDRVBUIFRB QkxFIHRlc3RzIGZvciBub3JtYWwgdGFibGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExOSw2ICsxNTAsMTQgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMSBGT1IgQUxMIFRBQkxFUyBFWENFUFQg VEFCTEUKIC0tIGluIHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlCiBcZCB0ZXN0cHViX3RibDEKIAor LS0gUmVtb3ZlIGFsbCB0aGUgRVhDRVBUIHRhYmxlcy4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIFNFVCBBTEwgVEFCTEVTOworXGRScCsgdGVzdHB1 Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKworLS0gUmVwbGFjZSB0aGUgcHVibGljYXRpb24g RVhDRVBUIHRhYmxlIGxpc3Qgd2l0aCBhIHNwZWNpZmljIEVYQ0VQVCB0YWJsZS4KK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIFNFVCBBTEwgVEFCTEVT IEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmwxKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVz X2V4Y2VwdHRhYmxlCisKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHRl c3RwdWJfdGJsMjsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3Rw dWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0 ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhj ZXB0dGFibGUxOwpAQCAtOTkxLDcgKzEwMzAsMTcgQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjQgb3duZXIgdG8gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsgLS0gZmFpbAogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1YjQgb3duZXIgdG8gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyOyAtLSBv awogCiBTRVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXI7Ci1EUk9QIFBVQkxJQ0FUSU9O IHRlc3RwdWI0OworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBBTEwgVEFCTEVTOworUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlcjM7CitTRVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIzOworLS0gZmFp bCAtIFNFVCBBTEwgVEFCTEVTIG9uIGEgcHVibGljYXRpb24gcmVxdWlyZXMgc3VwZXJ1c2VyIHBy aXZpbGVnZXMKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBBTEwgVEFCTEVTIEVYQ0VQ VCBUQUJMRSAodGVzdHB1Yl90YmwxKTsgLS0gZmFpbAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjUgU0VUIEFMTCBUQUJMRVM7IC0tIGZhaWwKKworU0VUIFJPTEUgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViNCwgdGVzdHB1YjU7CiBEUk9QIFJPTEUg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyMzsKIAogUkVWT0tFIENSRUFURSBPTiBEQVRBQkFTRSBy ZWdyZXNzaW9uIEZST00gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzdfZXhjZXB0LnBsCmluZGV4IDI3MjlkZjRkNWMwLi5jYmZlNDIwMTFlZiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbAorKysgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCkBAIC0xNTIsMTggKzE1Miw1MCBAQCAkcmVz dWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSBjaGlsZDEiKTsKIGlzKCRyZXN1bHQsIHFxKDEwKSwgJ2NoZWNrIHJlcGxp Y2F0ZWQgaW5zZXJ0cyBvbiBzdWJzY3JpYmVyJyk7CiAKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWIyIEFTIFNFTEVDVCBnZW5lcmF0ZV9z ZXJpZXMoMSwxMCkgQVMgYSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJDUkVBVEUgVEFCTEUgdGFiMiAoYSBpbnQpIik7CisKKyMgUmVwbGFjZSB0aGUgRVhDRVBU IFRBQkxFIGxpc3Qgc28gdGhhdCBvbmx5IHRhYjIgaXMgZXhjbHVkZWQuCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiB0YWJfcHViIFNF VCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGFiMikiKTsKKworIyBSZWZyZXNoIHRoZSBzdWJz Y3JpcHRpb24gc28gdGhlIHN1YnNjcmliZXIgcGlja3MgdXAgdGhlIHVwZGF0ZWQKKyMgcHVibGlj YXRpb24gZGVmaW5pdGlvbiBhbmQgaW5pdGlhdGVzIHRhYmxlIHN5bmNocm9uaXphdGlvbi4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJ T04gdGFiX3N1YiBSRUZSRVNIIFBVQkxJQ0FUSU9OIik7CisKKyMgV2FpdCBmb3IgaW5pdGlhbCB0 YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0 aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFiX3N1YicpOworCisjIFZlcmlmeSB0aGF0IGlu aXRpYWwgdGFibGUgc3luY2hyb25pemF0aW9uIGRvZXMgbm90IG9jY3VyIGZvciB0YWJsZXMKKyMg bGlzdGVkIGluIHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlLgorJHJlc3VsdCA9CisgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGFi MiIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ2NoZWNrIHRoZXJlIGlzIG5vIGluaXRpYWwgZGF0 YSBjb3BpZWQgZm9yIHRoZSB0YWJsZXMgc3BlY2lmaWVkIGluIHRoZSBFWENFUFQgVEFCTEUgY2xh dXNlJworKTsKKworIyBWZXJpZnkgdGhhdCB0YWJsZSBzeW5jaHJvbml6YXRpb24gb2NjdXJzIG9u Y2UgdGFiMSBpcyByZW1vdmVkIGZyb20gdGhlCisjIEVYQ0VQVCBUQUJMRSBjbGF1c2UgdmlhIFNF VCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRS4KKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRhYjEiKTsKK2lz KCRyZXN1bHQsIHFxKDIwKSwKKwknY2hlY2sgdGhhdCB0aGUgZGF0YSBpcyBjb3BpZWQgYXMgdGhl IHRhYjEgaXMgcmVtb3ZlZCBmcm9tIEVYQ0VQVCBUQUJMRSBjbGF1c2UnCispOworCiAjIGNsZWFu dXAKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcSgKIAlEUk9Q IFNVQlNDUklQVElPTiB0YWJfc3ViOwogCVRSVU5DQVRFIFRBQkxFIHRhYjE7Ci0JRFJPUCBUQUJM RSBwYXJlbnQsIHBhcmVudDEsIGNoaWxkLCBjaGlsZDE7CisJRFJPUCBUQUJMRSBwYXJlbnQsIHBh cmVudDEsIGNoaWxkLCBjaGlsZDEsIHRhYjI7CiApKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAogCSdwb3N0Z3JlcycsIHFxKAogCURST1AgUFVCTElDQVRJT04gdGFiX3B1YjsKIAlUUlVO Q0FURSBUQUJMRSB0YWIxOwotICAgIERST1AgVEFCTEUgcGFyZW50LCBwYXJlbnQxLCBjaGlsZCwg Y2hpbGQxOworICAgIERST1AgVEFCTEUgcGFyZW50LCBwYXJlbnQxLCBjaGlsZCwgY2hpbGQxLCB0 YWIyOwogKSk7CiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0gCjIuNDMuMAoK --000000000000b4c98c064d32cc6a--