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 1w7aOD-005TEw-15 for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 14:48:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7aOB-00Amau-1w for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 14:48:20 +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 1w7aOA-00Amal-25 for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 14:48:19 +0000 Received: from mail-vs1-xe32.google.com ([2607:f8b0:4864:20::e32]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7aO8-00000001z1h-2Doh for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 14:48:17 +0000 Received: by mail-vs1-xe32.google.com with SMTP id ada2fe7eead31-604d52b65f2so2981058137.0 for ; Tue, 31 Mar 2026 07:48:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774968495; cv=none; d=google.com; s=arc-20240605; b=FPaqXhxBSvmsH5o2SATmEQJod9eg88w7cZkRdTCLf7ZwmVn8iMqNxnEpMoV0B38nhE 8TS6hT3wVhLzMqCoo72H0lksgmlRd2xapY4CMJL+A3nGUe+xi3DpTAswhVuv03GrOwbE ypFuCOxcnfZmvn6KJXsaaq9MV6xaeESEU5ML2ZiPSSveFJ3G6UOp4p7p4m8YAN0uHBKf uevhjzEc2xwCit581k+qqqDa20k6bKzSev7kSdNEmCCUF3Itamiih8hyvFhH7qV4Tq0k 53GZ6JLwbv3nfc0ZsBNn2uOequNpYcuw2jyrb7Nam67mXNtbBmidq/fbikKoPr1jOqzj FGNw== 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=/D9zI55jl6dJS5V/BqukiY9GFeOvNvCtv2Wl/n0kQtA=; fh=bShaQFihpXBQcBYl7RuP5whe7Q4JZdtPVuWxrCfEJ0Q=; b=RIH9mHPhRRRetOFHTbA8RTkifNTZ2jHltg0+kClrYzcgNjFLNtaKU5WkRWAxa6arGN A8ONOw5mXFI2F7dg2ylUp+73G0JTcbmkKf3dS4Zv1fz63CzBC924tX+iPYihMZvAaj/A 5N31eNYfXNMnmpKu35+CqaOihrGzhnlq/XWHONEk5C99uZqGvojDaNRigwCniQMRcRb9 cz/3x47M0DVjdr8AqA0MDLXcPz324FB58bWStZebr2VYVJALZP2EVbpoqxYXYo95WBjq axP6rFneEJa3GmlAnAKEjmrC6Z5TUVSri9LIl4N7fJ7QQQI2qHTHDGQuu9SvamTC+qyB 0jWg==; 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=20251104; t=1774968495; x=1775573295; 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=/D9zI55jl6dJS5V/BqukiY9GFeOvNvCtv2Wl/n0kQtA=; b=dQPDg1yUu/ztJ+w36bSPR9zIhX+CfPUTL/NdQXWoqLZMCW+mLi+wt/l/aEDWTnd2oz ajOouQkPlZO8LLNM5h57emciJ93bqWLJZH7M/f/tK+aHtwOZsEgXeCf4VJa9mNKErft3 O2hxyWjQG3oM9V1i1PooEScqqDM+MjYGPiZaTQU9+XZJMblCNkqMVqqm/2WdDvVZ/DSo aEoLFTa9KY9EXJrT0cx8wjd5oXw7RrPWBr599oWmPfZRW3JJQKa7VbKwzURWGaDKij3G tVGHcfc4wBu5umYPmOiAAnW+5bvzuDky74/KMLfqu1zAuPy46Tpnnp7dQEvyo7X23EBo vs2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774968495; x=1775573295; 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=/D9zI55jl6dJS5V/BqukiY9GFeOvNvCtv2Wl/n0kQtA=; b=S881OPcjfqImkoDBuU+SWQkuShOzK56Q6szR755R7d/YgWLkf6MLHCXE5LNJtaK/fP D62LsXsqSBDDBWz4XCKkwgKTWBlzsZ3uYMgY+zNwQ4UG53Qpp7VK1ldcLH0+73807F2i 8IL7BSh+oXjxSzJSqhEtAhCWYeThpf9CaNaLbgpCdOJlWG+W8KrGUXUpplTDkV/F7p6r r7QURh/oHjv/tfcByTZalmKph51Z50fYrv6vfQcLIztl5WTreXHxv4CgfS4MwCOivzi8 ZBGBQ9MW5qjPoiElzh6KnP++XXlcx1nK4/dwDVjQCDqtINiil91p1Ra0of8H26vWey9q W9qw== X-Forwarded-Encrypted: i=1; AJvYcCV7ulXDtutS2iKNTSEAE5r3t5TrbH+kFVEq4365DzDzbfJ730L2H7ECLLvbGZ9zADmvsdNfT9NIJDh9XQAK@lists.postgresql.org X-Gm-Message-State: AOJu0YzX06M4LxyIFV4+ubsEUe2yCGelrWLHLfAo0UKMh2lpW9CIj5YA sLBw1+7MOqmf39quM68DM9QYJikpsIZXAAXija3NAz6paUVEdv35/EHKA+ZRXHcUgnVUM6RC5aW 50z6FtTLigmFCv/4hSs9fbOCbgiyFKfI= X-Gm-Gg: ATEYQzycQmhzXoNXdZWWDiuS4yYSsqZJ0zQCTFLk300OxglxTxKhMsH/xKGdvzMRib1 9irt1XRmJq0/s27+db62WPv6NRY/YdbiXZKL7eyygf/5PcfUFC1VFZZ2xGmHKeGuTfoYFprg5fW E7Yv0QMXL6MqZ2Ilkh92jn7zBUtiKzhorQg1Rs+ksN/mIU/XRncyP40KkGlBR5jRc3E646aBXGi a4YjV1LioO6zBqN0HERtbTL8bTVeZ9VMCoVHy1oTpTOqoexbw1CDX370T2C5oBTNuPZhDs++0jf 5Y9ou84pfYkXXF6PvM78Ekj2q2xR2XXVvaD4HgJ4LthvQVnJUT8WLYVBkwetz+pdybclq/4B0Ed 9WWlJWNlDxK2RvgaKAqI0LKoGcsY+82sJxywKIe/r574337m7houBr6j4UBcbIX/HKlvJHs+WIb ZSlY/NDPi/YQmQYj3D+Dfihw== X-Received: by 2002:a05:6102:330d:b0:602:6ccd:7772 with SMTP id ada2fe7eead31-6054fce1796mr1311698137.2.1774968494868; Tue, 31 Mar 2026 07:48:14 -0700 (PDT) MIME-Version: 1.0 References: <5ae9578e-f25e-49c5-97ab-ad27bc2050b5@eisentraut.org> <5221f892-e1d5-4943-a3dc-5c9c7bdf4924@eisentraut.org> In-Reply-To: From: jian he Date: Tue, 31 Mar 2026 22:47:37 +0800 X-Gm-Features: AQROBzCPFieRquMjYmtbRHJ0Apzg12tVOqm5wAnkWM9bGiGKvgMCClE_GnIOuu4 Message-ID: Subject: Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions To: Amul Sul Cc: Peter Eisentraut , Corey Huinker , Kirill Reshke , Vik Fearing , Isaac Morland , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000009ff6c5064e530eb4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009ff6c5064e530eb4 Content-Type: text/plain; charset="UTF-8" Hi. I've incorporated the changes you sent me off-list. The attached v1 no-cfbot is your proposed change. I also did some minor comments adjustments. --0000000000009ff6c5064e530eb4 Content-Type: application/x-patch; name="v28-0002-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Disposition: attachment; filename="v28-0002-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSION-ERROR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mneqd6q71 RnJvbSA2MDM0ZDc0OWFjNDBjMWY4ZGU2MzJkODYyYjZiNjkxZGRiNmFjYTVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMzEgTWFyIDIwMjYgMjI6MzA6MzYgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy OCAyLzJdIENBU1QoZXhwciBBUyBuZXd0eXBlIERFRkFVTFQgZXhwciBPTiBDT05WRVJTSU9OCiBF UlJPUikKCkludHJvZHVjZSBTUUwtc3RhbmRhcmQgc2FmZSB0eXBlIGNhc3Qgc3ludGF4OgogICAg Q0FTVChleHByIEFTIG5ld3R5cGUgREVGQVVMVCBleHByIE9OIENPTlZFUlNJT04gRVJST1IpClRo aXMgYWxsb3cgdXNlcnMgdG8gc3BlY2lmeSBhIGRlZmF1bHQgZmFsbGJhY2sgZXhwcmVzc2lvbiBp ZiBhIHR5cGUgY29udmVyc2lvbgpmYWlscywgcmF0aGVyIHRoYW4gcmFpc2luZyBhbiBlcnJvci4K CldpdGggdGhpcyBwYXRjaHNldCwgYWxtb3N0IGFsbCBvZiB0aGUgY2FzdCBmdW5jdGlvbnMgaW4g cGdfY2FzdC5jYXN0ZnVuYyBhcmUgbm93CmVycm9yLXNhZmUuICBDb2VyY2VWaWFJTyBhbmQgQ29l cmNlVG9Eb21haW4gd2VyZSBhbHJlYWR5IGVycm9yLXNhZmUgaW4gdGhlIEhFQUQsCnNlZSBbMF0s IHRoaXMgcGF0Y2ggZXh0ZW5kcyBlcnJvci1zYWZlIGJlaGF2aW9yIHRvIEFycmF5Q29lcmNlRXhw ci4KCkV4YW1wbGU6CiAgICAtLSBSZXR1cm5zICcyMDExLTAxLTAxJyBpbnN0ZWFkIG9mIHRocm93 aW5nIGFuIGludmFsaWQgaW5wdXQgc3ludGF4IGVycm9yLgogICAgU0VMRUNUIENBU1QoJzEnIEFT IGRhdGUgREVGQVVMVCAnMjAxMS0wMS0wMScgT04gQ09OVkVSU0lPTiBFUlJPUik7CgojIEJ1bXBz IGNhdHZlcnNpb24gcmVxdWlyZWQKClswXTogaHR0cHM6Ly9naXQucG9zdGdyZXNxbC5vcmcvY2dp dC9wb3N0Z3Jlc3FsLmdpdC9jb21taXQvP2lkPWFhYWY5NDQ5ZWM2YmU2MmNiMGQzMGVkMzU4OGRj Mzg0ZjU2Mjc0YgoKQXV0aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1 aW5rZXIgPGNvcmV5Lmh1aW5rZXJAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hr ZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hdGhldXMgQWxjYW50YXJh IDxtYXRoZXVzc3NpbHY5N0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0FEa0xNPWZ2MUpmWTRVZmEtamN3d05ialFpeE5WaXNrUThqWnUzVHpfcDY1NmlfNGhRQG1h aWwuZ21haWwuY29tCkNvbW1pdGZlc3Q6IGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9y Zy9wYXRjaC81OTQxCi0tLQogY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0Lm91dCAgICAg ICAgICAgIHwgICAgNSArCiBjb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHRfMS5vdXQgICAg ICAgICAgfCAgICA1ICsKIGNvbnRyaWIvY2l0ZXh0L3NxbC9jaXRleHQuc3FsICAgICAgICAgICAg ICAgICB8ICAgIDIgKwogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0 ICAgIHwgICAyNCArLQogY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVjdC5zcWwg ICAgIHwgICAgNSArCiBkb2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwgICAgICAgICAgICAgICAgICAg ICAgfCAgIDQyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAgICAgICAg ICB8ICAgNTggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgICAgICAg ICB8ICAgMjkgKwogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgICAgICAgICAg IHwgICA1NiArCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAg fCAgIDUzICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBhZ2cuYyAgICAgICAgICB8 ICAgMTEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jICAgICAgICAgIHwg ICA5OCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwg ICAyMyArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAgICAgICAgICAgICAgfCAg ICA5ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYyAgICAgICAgICAgICB8ICAx NDIgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgICAgICAgICB8ICAz NTUgKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgICAgICAgICAgICAgICB8 ICAgIDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jICAgICAgICAgICAgIHwg ICAgMyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYyAgICAgICAgICAgICAgIHwg ICAxOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAg ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jICAgICAgICAgICAgfCAg ICA5ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAg MjUgKwogc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMgICAgICAgICAgICAgICAgIHwgICAx MyArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgICAgICAgICAgfCAgICA3 ICsKIHNyYy9pbmNsdWRlL2ZtZ3IuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMg Kwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAyMSAr CiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgICAxICsK IHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMzMgKwog c3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oICAgICAgICAgICAgIHwgICAgMiArLQog c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NvZXJjZS5oICAgICAgICAgICAgIHwgICAxNiArLQog c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgICAgICAgIHwgICAgMiArCiBz cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oICAgICAgICAgICAgICAgfCAgICAyICsKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY2FzdC5vdXQgICAgICAgICAgICB8IDExNzIgKysrKysr KysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0ICAg ICB8ICAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVpdmNsYXNzLm91dCAgICAg IHwgICAxOSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbC5vdXQgICAgICAgICAgICAg fCAgICA2ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzEub3V0ICAgICAgICAgICB8 ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwg ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY2FzdC5zcWwgICAgICAgICAgICAgICAgIHwg IDQ0MiArKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfY2FzdC5zcWwgICAgICAg ICAgfCAgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2VxdWl2Y2xhc3Muc3FsICAgICAgICAg ICB8ICAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwveG1sLnNxbCAgICAgICAgICAgICAgICAg IHwgICAgMiArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAg fCAgICAyICsKIDQzIGZpbGVzIGNoYW5nZWQsIDI2NDIgaW5zZXJ0aW9ucygrKSwgOTQgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jYXN0 Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nhc3Quc3FsCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0Lm91dCBiL2NvbnRyaWIv Y2l0ZXh0L2V4cGVjdGVkL2NpdGV4dC5vdXQKaW5kZXggOGMwYmY1NGYwZjMuLjY5NjQ5YzJjNWUy IDEwMDY0NAotLS0gYS9jb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHQub3V0CisrKyBiL2Nv bnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dC5vdXQKQEAgLTEwLDYgKzEwLDExIEBAIFdIRVJF IG9wYy5vaWQgPj0gMTYzODQgQU5EIE5PVCBhbXZhbGlkYXRlKG9wYy5vaWQpOwogLS0tLS0tLS0r LS0tLS0tLS0tCiAoMCByb3dzKQogCitTRUxFQ1QgQ0FTVCgnYWJjJzo6YnBjaGFyIEFTIGNpdGV4 dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGNh bm5vdCBjYXN0IHR5cGUgY2hhcmFjdGVyIHRvIGNpdGV4dCB3aXRoIERFRkFVTFQgZXhwcmVzc2lv biBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdh YmMnOjpicGNoYXIgQVMgY2l0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSS4uLgorICAgICAg ICAgICAgICAgICAgICBeCitERVRBSUw6ICBTYWZlIHR5cGUgY2FzdHMgZm9yIHVzZXItZGVmaW5l ZCB0eXBlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQuCiAtLSBUZXN0IHRoZSBvcGVyYXRvcnMgYW5k IGluZGV4aW5nIGZ1bmN0aW9ucwogLS0gVGVzdCA9IGFuZCA8Pi4KIFNFTEVDVCAnYSc6OmNpdGV4 dCA9ICdhJzo6Y2l0ZXh0IEFTIHQ7CmRpZmYgLS1naXQgYS9jb250cmliL2NpdGV4dC9leHBlY3Rl ZC9jaXRleHRfMS5vdXQgYi9jb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHRfMS5vdXQKaW5k ZXggYzVlNWYxODBmMmIuLjg5NjkzOWQzNWNlIDEwMDY0NAotLS0gYS9jb250cmliL2NpdGV4dC9l eHBlY3RlZC9jaXRleHRfMS5vdXQKKysrIGIvY29udHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0 XzEub3V0CkBAIC0xMCw2ICsxMCwxMSBAQCBXSEVSRSBvcGMub2lkID49IDE2Mzg0IEFORCBOT1Qg YW12YWxpZGF0ZShvcGMub2lkKTsKIC0tLS0tLS0tKy0tLS0tLS0tLQogKDAgcm93cykKIAorU0VM RUNUIENBU1QoJ2FiYyc6OmJwY2hhciBBUyBjaXRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIGNoYXJhY3RlciB0 byBjaXRleHQgd2l0aCBERUZBVUxUIGV4cHJlc3Npb24gaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lP TiBFUlJPUgorTElORSAxOiBTRUxFQ1QgQ0FTVCgnYWJjJzo6YnBjaGFyIEFTIGNpdGV4dCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0kuLi4KKyAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAg U2FmZSB0eXBlIGNhc3RzIGZvciB1c2VyLWRlZmluZWQgdHlwZXMgYXJlIG5vdCB5ZXQgc3VwcG9y dGVkLgogLS0gVGVzdCB0aGUgb3BlcmF0b3JzIGFuZCBpbmRleGluZyBmdW5jdGlvbnMKIC0tIFRl c3QgPSBhbmQgPD4uCiBTRUxFQ1QgJ2EnOjpjaXRleHQgPSAnYSc6OmNpdGV4dCBBUyB0OwpkaWZm IC0tZ2l0IGEvY29udHJpYi9jaXRleHQvc3FsL2NpdGV4dC5zcWwgYi9jb250cmliL2NpdGV4dC9z cWwvY2l0ZXh0LnNxbAppbmRleCBhYTFjZjlhYmQ1Yy4uYzgyMGIwYmQ0ZDkgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvY2l0ZXh0L3NxbC9jaXRleHQuc3FsCisrKyBiL2NvbnRyaWIvY2l0ZXh0L3NxbC9j aXRleHQuc3FsCkBAIC05LDYgKzksOCBAQCBTRUxFQ1QgYW1uYW1lLCBvcGNuYW1lCiBGUk9NIHBn X29wY2xhc3Mgb3BjIExFRlQgSk9JTiBwZ19hbSBhbSBPTiBhbS5vaWQgPSBvcGNtZXRob2QKIFdI RVJFIG9wYy5vaWQgPj0gMTYzODQgQU5EIE5PVCBhbXZhbGlkYXRlKG9wYy5vaWQpOwogCitTRUxF Q1QgQ0FTVCgnYWJjJzo6YnBjaGFyIEFTIGNpdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7IC0tIGVycm9yCisKIC0tIFRlc3QgdGhlIG9wZXJhdG9ycyBhbmQgaW5kZXhpbmcg ZnVuY3Rpb25zCiAKIC0tIFRlc3QgPSBhbmQgPD4uCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0 YXRfc3RhdGVtZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0IGIvY29udHJpYi9wZ19zdGF0X3N0YXRl bWVudHMvZXhwZWN0ZWQvc2VsZWN0Lm91dAppbmRleCBhMDY5MTE5Yzc5MC4uODRmMTA4MTBmNzIg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3NlbGVjdC5v dXQKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvc2VsZWN0Lm91dApA QCAtNzMsNiArNzMsMjUgQEAgU0VMRUNUIDEgQVMgImludCIgT0ZGU0VUIDIgRkVUQ0ggRklSU1Qg MyBST1cgT05MWTsKIC0tLS0tCiAoMCByb3dzKQogCistLSBlcnJvciBzYWZlIHR5cGUgY2FzdAor U0VMRUNUIENBU1QoJ2EnIEFTIGludCBERUZBVUxUIDIgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg aW50NCAKKy0tLS0tLQorICAgIDIKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzEyJyBBUyBudW1l cmljIERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBudW1lcmljIAorLS0tLS0tLS0t CisgICAgICAxMgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnMTInIEFTIG51bWVyaWMoMTApIERF RkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBudW1lcmljIAorLS0tLS0tLS0tCisgICAg ICAxMgorKDEgcm93KQorCiAtLSBESVNUSU5DVCBhbmQgT1JERVIgQlkgcGF0dGVybnMKIC0tIFRy eSBzb21lIHF1ZXJ5IHBlcm11dGF0aW9ucyB3aGljaCBvbmNlIHByb2R1Y2VkIGlkZW50aWNhbCBx dWVyeSBJRHMKIFNFTEVDVCBESVNUSU5DVCAxIEFTICJpbnQiOwpAQCAtMjIyLDYgKzI0MSw5IEBA IFNFTEVDVCBjYWxscywgcm93cywgcXVlcnkgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIg QlkgcXVlcnkgQ09MTEFURSAiQyI7CiAgICAgIDIgfCAgICAyIHwgU0VMRUNUICQxIEFTICJpbnQi IE9SREVSIEJZIDEKICAgICAgMSB8ICAgIDIgfCBTRUxFQ1QgJDEgQVMgaSBVTklPTiBTRUxFQ1Qg JDIgT1JERVIgQlkgaQogICAgICAxIHwgICAgMSB8IFNFTEVDVCAkMSB8fCAkMgorICAgICAxIHwg ICAgMSB8IFNFTEVDVCBDQVNUKCQxIEFTIGludCBERUZBVUxUICQyIE9OIENPTlZFUlNJT04gRVJS T1IpCisgICAgIDEgfCAgICAxIHwgU0VMRUNUIENBU1QoJDEgQVMgbnVtZXJpYyBERUZBVUxUICQy IE9OIENPTlZFUlNJT04gRVJST1IpCisgICAgIDEgfCAgICAxIHwgU0VMRUNUIENBU1QoJDEgQVMg bnVtZXJpYygxMCkgREVGQVVMVCAkMiBPTiBDT05WRVJTSU9OIEVSUk9SKQogICAgICAyIHwgICAg MiB8IFNFTEVDVCBESVNUSU5DVCAkMSBBUyAiaW50IgogICAgICAwIHwgICAgMCB8IFNFTEVDVCBj YWxscywgcm93cywgcXVlcnkgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkg Q09MTEFURSAiQyIKICAgICAgMSB8ICAgIDEgfCBTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jl c2V0KCkgSVMgTk9UIE5VTEwgQVMgdApAQCAtMjMwLDcgKzI1Miw3IEBAIFNFTEVDVCBjYWxscywg cm93cywgcXVlcnkgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFU RSAiQyI7CiAgICAgICAgfCAgICAgIHwgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKICAgICAgICB8ICAg ICAgfCAgIFNFTEVDVCBmIEZST00gdCBPUkRFUiBCWSBmCiAgICAgIDEgfCAgICAxIHwgc2VsZWN0 ICQxOjpqc29uYiA/ICQyCi0oMTcgcm93cykKKygyMCByb3dzKQogCiBTRUxFQ1QgcGdfc3RhdF9z dGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKICB0IApkaWZmIC0tZ2l0IGEvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVjdC5zcWwgYi9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9zcWwvc2VsZWN0LnNxbAppbmRleCBhMTBkNjE4YzAzNC4uNGJlOTc5NzdiYTYg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9zZWxlY3Quc3FsCisr KyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9zZWxlY3Quc3FsCkBAIC0yNSw2ICsy NSwxMSBAQCBTRUxFQ1QgMSBBUyAiaW50IiBMSU1JVCAzIE9GRlNFVCAzOwogU0VMRUNUIDEgQVMg ImludCIgT0ZGU0VUIDEgRkVUQ0ggRklSU1QgMiBST1cgT05MWTsKIFNFTEVDVCAxIEFTICJpbnQi IE9GRlNFVCAyIEZFVENIIEZJUlNUIDMgUk9XIE9OTFk7CiAKKy0tIGVycm9yIHNhZmUgdHlwZSBj YXN0CitTRUxFQ1QgQ0FTVCgnYScgQVMgaW50IERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9S KTsKK1NFTEVDVCBDQVNUKCcxMicgQVMgbnVtZXJpYyBERUZBVUxUIDIgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVCgnMTInIEFTIG51bWVyaWMoMTApIERFRkFVTFQgMiBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKwogLS0gRElTVElOQ1QgYW5kIE9SREVSIEJZIHBhdHRlcm5zCiAtLSBU cnkgc29tZSBxdWVyeSBwZXJtdXRhdGlvbnMgd2hpY2ggb25jZSBwcm9kdWNlZCBpZGVudGljYWwg cXVlcnkgSURzCiBTRUxFQ1QgRElTVElOQ1QgMSBBUyAiaW50IjsKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9zeW50YXguc2dtbCBiL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbAppbmRleCA2NzQ4 Mjk5Njg2MS4uNDgyMzljNDVmZTIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeW50YXguc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwKQEAgLTIxMjUsNiArMjEyNSw0OCBAQCBD QVNUICggPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFi bGU+dHlwZTwvcmVwbGFjZWFibGU+CiAgICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVjYXN0 Ii8+LgogICAgIDwvcGFyYT4KICAgIDwvbm90ZT4KKworICAgPHNlY3QzIGlkPSJzcWwtc3ludGF4 LXR5cGUtY2FzdHMtc2FmZSI+CisgICAgPHRpdGxlPlNhZmUgVHlwZSBDYXN0czwvdGl0bGU+CisK KyAgICA8cGFyYT4KKyAgICAgQSB0eXBlIGNhc3QgbWF5IG9jY2FzaW9uYWxseSBmYWlsIGF0IHJ1 biB0aW1lLiAgVG8gZ3VhcmQgYWdhaW5zdCBzdWNoCisgICAgIGZhaWx1cmVzLCB5b3UgY2FuIHBy b3ZpZGUgYW4gPGxpdGVyYWw+T04gQ09OVkVSU0lPTiBFUlJPUjwvbGl0ZXJhbD4KKyAgICAgY2xh dXNlIHRvIGNvbnRyb2wgd2hhdCBoYXBwZW5zIHdoZW4gYSBjYXN0IGZhaWxzLiAgVGhlIGF2YWls YWJsZSBmb3JtcworICAgICBhcmU6Cis8c3lub3BzaXM+CitDQVNUICggPHJlcGxhY2VhYmxlPmV4 cHJlc3Npb248L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+ IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUiApCitDQVNUICggPHJlcGxhY2VhYmxlPmV4cHJlc3Np b248L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IERFRkFV TFQgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBPTiBDT05WRVJTSU9OIEVS Uk9SICkKK0NBU1QgKCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IEFTIDxy ZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4gRVJST1IgT04gQ09OVkVSU0lPTiBFUlJPUiAp Cis8L3N5bm9wc2lzPgorICAgICBXaXRoIDxsaXRlcmFsPk5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UjwvbGl0ZXJhbD4sIGEgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4KKyAgICAgdmFsdWUgaXMgcmV0 dXJuZWQgd2hlbiB0aGUgY2FzdCBmYWlscy4gIFdpdGggPGxpdGVyYWw+REVGQVVMVAorICAgICA8 cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IE9OIENPTlZFUlNJT04gRVJST1I8 L2xpdGVyYWw+LAorICAgICB0aGUgZGVmYXVsdCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVw bGFjZWFibGU+IGlzIGV2YWx1YXRlZCBhbmQKKyAgICAgcmV0dXJuZWQgaW5zdGVhZC4gIFRoZSA8 bGl0ZXJhbD5FUlJPUiBPTiBDT05WRVJTSU9OIEVSUk9SPC9saXRlcmFsPgorICAgICBmb3JtIHJh aXNlcyBhbiBlcnJvciBvbiBmYWlsdXJlLCB3aGljaCBpcyBhbHNvIHRoZSBkZWZhdWx0IGJlaGF2 aW9yCisgICAgIHdoZW4gbm8gPGxpdGVyYWw+T04gQ09OVkVSU0lPTiBFUlJPUjwvbGl0ZXJhbD4g Y2xhdXNlIGlzIHNwZWNpZmllZC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgQXQg cHJlc2VudCwgdGhpcyBvbmx5IHN1cHBvcnRzIGJ1aWx0LWluIHR5cGUgY2FzdHMgbGlzdGVkIGlu CisgICAgIDx4cmVmIGxpbmtlbmQ9ImNhdGFsb2ctcGctY2FzdCIvPi4gIFVzZXItZGVmaW5lZCB0 eXBlIGNhc3RzIGNyZWF0ZWQKKyAgICAgd2l0aCA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlY2Fz dCI+Q1JFQVRFIENBU1Q8L2xpbms+IGFyZSBub3QKKyAgICAgc3VwcG9ydGVkLgorICAgIDwvcGFy YT4KKworICAgIDxwYXJhPgorICAgICBTb21lIGV4YW1wbGVzOgorPHNjcmVlbj4KK1NFTEVDVCBD QVNUKCdub3QtYS1kYXRlJyBBUyBkYXRlIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Cis8bGlu ZWFubm90YXRpb24+UmVzdWx0OiA8L2xpbmVhbm5vdGF0aW9uPjxjb21wdXRlcm91dHB1dD5OVUxM PC9jb21wdXRlcm91dHB1dD4KK1NFTEVDVCBDQVNUKCdub3QtYS1kYXRlJyBBUyBkYXRlIERFRkFV TFQgJzE5NzAtMDEtMDEnIE9OIENPTlZFUlNJT04gRVJST1IpOworPGxpbmVhbm5vdGF0aW9uPlJl c3VsdDogPC9saW5lYW5ub3RhdGlvbj48Y29tcHV0ZXJvdXRwdXQ+MTk3MC0wMS0wMTwvY29tcHV0 ZXJvdXRwdXQ+CitTRUxFQ1QgQ0FTVChURVhUICdlcnJvcicgQVMgaW50ZWdlciBERUZBVUxUIDMg T04gQ09OVkVSU0lPTiBFUlJPUik7Cis8bGluZWFubm90YXRpb24+UmVzdWx0OiA8L2xpbmVhbm5v dGF0aW9uPjxjb21wdXRlcm91dHB1dD4zPC9jb21wdXRlcm91dHB1dD4KKzwvc2NyZWVuPgorICAg IDwvcGFyYT4KKyAgIDwvc2VjdDM+CiAgIDwvc2VjdDI+CiAKICAgPHNlY3QyIGlkPSJzcWwtc3lu dGF4LWNvbGxhdGUtZXhwcnMiPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggNzcyMjkxNDFi MzguLjU5NDgyZmFiNTZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTk5LDYgKzk5LDkg QEAgc3RhdGljIHZvaWQgRXhlY0J1aWxkQWdnVHJhbnNDYWxsKEV4cHJTdGF0ZSAqc3RhdGUsIEFn Z1N0YXRlICphZ2dzdGF0ZSwKIHN0YXRpYyB2b2lkIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4cHIg KmpzZXhwciwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQkJCQkgRGF0dW0gKnJlc3YsIGJvb2wgKnJl c251bGwsCiAJCQkJCQkJIEV4cHJFdmFsU3RlcCAqc2NyYXRjaCk7CitzdGF0aWMgdm9pZCBFeGVj SW5pdFNhZmVUeXBlQ2FzdEV4cHIoU2FmZVR5cGVDYXN0RXhwciAqc3RjZXhwciwgRXhwclN0YXRl ICpzdGF0ZSwKKwkJCQkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCwKKwkJCQkJCQkJ CSBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gpOwogc3RhdGljIHZvaWQgRXhlY0luaXRKc29uQ29lcmNp b24oRXhwclN0YXRlICpzdGF0ZSwgSnNvblJldHVybmluZyAqcmV0dXJuaW5nLAogCQkJCQkJCQkg RXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0LCBib29sIG9taXRfcXVvdGVzLAogCQkJCQkJCQkg Ym9vbCBleGlzdHNfY29lcmNlLApAQCAtMTczNCw2ICsxNzM3LDcgQEAgRXhlY0luaXRFeHByUmVj KEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAKIAkJCQllbGVtc3RhdGUtPmlubmVybW9z dF9jYXNldmFsID0gcGFsbG9jX29iamVjdChEYXR1bSk7CiAJCQkJZWxlbXN0YXRlLT5pbm5lcm1v c3RfY2FzZW51bGwgPSBwYWxsb2Nfb2JqZWN0KGJvb2wpOworCQkJCWVsZW1zdGF0ZS0+ZXNjb250 ZXh0ID0gc3RhdGUtPmVzY29udGV4dDsKIAogCQkJCUV4ZWNJbml0RXhwclJlYyhhY29lcmNlLT5l bGVtZXhwciwgZWxlbXN0YXRlLAogCQkJCQkJCQkmZWxlbXN0YXRlLT5yZXN2YWx1ZSwgJmVsZW1z dGF0ZS0+cmVzbnVsbCk7CkBAIC0yMjA5LDYgKzIyMTMsMTUgQEAgRXhlY0luaXRFeHByUmVjKEV4 cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBU X1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAqc3RjZXhwciA9 IGNhc3ROb2RlKFNhZmVUeXBlQ2FzdEV4cHIsIG5vZGUpOworCisJCQkJRXhlY0luaXRTYWZlVHlw ZUNhc3RFeHByKHN0Y2V4cHIsIHN0YXRlLCByZXN2LCByZXNudWxsLCAmc2NyYXRjaCk7CisKKwkJ CQlicmVhazsKKwkJCX0KKwogCQljYXNlIFRfQ29hbGVzY2VFeHByOgogCQkJewogCQkJCUNvYWxl c2NlRXhwciAqY29hbGVzY2UgPSAoQ29hbGVzY2VFeHByICopIG5vZGU7CkBAIC0yNzY5LDcgKzI3 ODIsOCBAQCBFeGVjSW5pdEZ1bmMoRXhwckV2YWxTdGVwICpzY3JhdGNoLCBFeHByICpub2RlLCBM aXN0ICphcmdzLCBPaWQgZnVuY2lkLAogCiAJLyogSW5pdGlhbGl6ZSBmdW5jdGlvbiBjYWxsIHBh cmFtZXRlciBzdHJ1Y3R1cmUgdG9vICovCiAJSW5pdEZ1bmN0aW9uQ2FsbEluZm9EYXRhKCpmY2lu Zm8sIGZsaW5mbywKLQkJCQkJCQkgbmFyZ3MsIGlucHV0Y29sbGlkLCBOVUxMLCBOVUxMKTsKKwkJ CQkJCQkgbmFyZ3MsIGlucHV0Y29sbGlkLAorCQkJCQkJCSAoTm9kZSAqKSBzdGF0ZS0+ZXNjb250 ZXh0LCBOVUxMKTsKIAogCS8qIEtlZXAgZXh0cmEgY29waWVzIG9mIHRoaXMgaW5mbyB0byBzYXZl IGFuIGluZGlyZWN0aW9uIGF0IHJ1bnRpbWUgKi8KIAlzY3JhdGNoLT5kLmZ1bmMuZm5fYWRkciA9 IGZsaW5mby0+Zm5fYWRkcjsKQEAgLTQ3NzAsNiArNDc4NCw0OCBAQCBFeGVjQnVpbGRQYXJhbVNl dEVxdWFsKFR1cGxlRGVzYyBkZXNjLAogCXJldHVybiBzdGF0ZTsKIH0KIAorLyoKKyAqIFB1c2gg c3RlcHMgdG8gZXZhbHVhdGUgYSBTYWZlVHlwZUNhc3RFeHByIGFuZCBpdHMgdmFyaW91cyBzdWJz aWRpYXJ5CisgKiBleHByZXNzaW9ucy4KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNJbml0U2FmZVR5 cGVDYXN0RXhwcihTYWZlVHlwZUNhc3RFeHByICpzdGNleHByLCBFeHByU3RhdGUgKnN0YXRlLAor CQkJCQkJIERhdHVtICpyZXN2LCBib29sICpyZXNudWxsLAorCQkJCQkJIEV4cHJFdmFsU3RlcCAq c2NyYXRjaCkKK3sKKwkvKgorCSAqIElmIHRoZXJlJ3Mgbm8gY2FzdCBleHByZXNzaW9uIChjYXN0 ZXhwciA9PSBOVUxMKSwgb25seSB0aGUgREVGQVVMVAorCSAqIGV4cHJlc3Npb24gbmVlZHMgdG8g YmUgZXZhbHVhdGVkOyBzZXQgaXQgdXAgYW5kIHJldHVybiBlYXJseS4KKwkgKi8KKwlpZiAoc3Rj ZXhwci0+Y2FzdGV4cHIgPT0gTlVMTCkKKwl7CisJCUV4ZWNJbml0RXhwclJlYyhzdGNleHByLT5k ZWZleHByLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisKKwkJcmV0dXJuOworCX0KKwllbHNlCisJ eworCQlTYWZlVHlwZUNhc3RTdGF0ZSAqc3Rjc3RhdGUgPSBwYWxsb2MwX29iamVjdChTYWZlVHlw ZUNhc3RTdGF0ZSk7CisJCUVycm9yU2F2ZUNvbnRleHQgKnNhdmVkX2VzY29udGV4dCA9IHN0YXRl LT5lc2NvbnRleHQ7CisKKwkJc3Rjc3RhdGUtPnN0Y2V4cHIgPSBzdGNleHByOworCQlzdGNzdGF0 ZS0+ZXNjb250ZXh0LnR5cGUgPSBUX0Vycm9yU2F2ZUNvbnRleHQ7CisJCXN0YXRlLT5lc2NvbnRl eHQgPSAmc3Rjc3RhdGUtPmVzY29udGV4dDsKKworCQkvKiBldmFsdWF0ZSBhcmd1bWVudCBleHBy ZXNzaW9uIGludG8gc3RlcCdzIHJlc3VsdCBhcmVhICovCisJCUV4ZWNJbml0RXhwclJlYyhzdGNl eHByLT5jYXN0ZXhwciwgc3RhdGUsIHJlc3YsIHJlc251bGwpOworCQlzY3JhdGNoLT5vcGNvZGUg PSBFRU9QX1NBRkVUWVBFX0NBU1Q7CisJCXNjcmF0Y2gtPmQuc3RjZXhwci5zdGNzdGF0ZSA9IHN0 Y3N0YXRlOworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKworCQkvKiBldmFs dWF0ZSBERUZBVUxUIGV4cHJlc3Npb24gdXNpbmcgdGhlIHByaW9yIHN0YXRlLT5lc2NvbnRleHQg Ki8KKwkJc3RhdGUtPmVzY29udGV4dCA9IHNhdmVkX2VzY29udGV4dDsKKwkJRXhlY0luaXRFeHBy UmVjKHN0Y3N0YXRlLT5zdGNleHByLT5kZWZleHByLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisK KwkJc3Rjc3RhdGUtPmp1bXBfZW5kID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwl9Cit9CisKIC8qCiAg KiBQdXNoIHN0ZXBzIHRvIGV2YWx1YXRlIGEgSnNvbkV4cHIgYW5kIGl0cyB2YXJpb3VzIHN1YnNp ZGlhcnkgZXhwcmVzc2lvbnMuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5j CmluZGV4IDQzMTE2NDMxZWRmLi43OWViZTAyNTRmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwckludGVycC5jCkBAIC01NzAsNiArNTcwLDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRl ICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCSYmQ0FTRV9F RU9QX1hNTEVYUFIsCiAJCSYmQ0FTRV9FRU9QX0pTT05fQ09OU1RSVUNUT1IsCiAJCSYmQ0FTRV9F RU9QX0lTX0pTT04sCisJCSYmQ0FTRV9FRU9QX1NBRkVUWVBFX0NBU1QsCiAJCSYmQ0FTRV9FRU9Q X0pTT05FWFBSX1BBVEgsCiAJCSYmQ0FTRV9FRU9QX0pTT05FWFBSX0NPRVJDSU9OLAogCQkmJkNB U0VfRUVPUF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gsCkBAIC0xOTI4LDYgKzE5MjksMjggQEAg RXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBi b29sICppc251bGwpCiAJCQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJRUVPX0NBU0UoRUVPUF9TQUZF VFlQRV9DQVNUKQorCQl7CisJCQlTYWZlVHlwZUNhc3RTdGF0ZSAqc3Rjc3RhdGUgPSBvcC0+ZC5z dGNleHByLnN0Y3N0YXRlOworCisJCQlpZiAoIVNPRlRfRVJST1JfT0NDVVJSRUQoJnN0Y3N0YXRl LT5lc2NvbnRleHQpKQorCQkJCUVFT19KVU1QKHN0Y3N0YXRlLT5qdW1wX2VuZCk7CisJCQllbHNl CisJCQl7CisJCQkJKm9wLT5yZXN2YWx1ZSA9IChEYXR1bSkgMDsKKwkJCQkqb3AtPnJlc251bGwg PSB0cnVlOworCisJCQkJLyoKKwkJCQkgKiBSZXNldCBmb3IgbmV4dCB1c2Ugc3VjaCBhcyBmb3Ig Y2F0Y2hpbmcgZXJyb3JzIHdoZW4KKwkJCQkgKiBjb2VyY2luZyBhIGV4cHJlc3Npb24uCisJCQkJ ICovCisJCQkJc3Rjc3RhdGUtPmVzY29udGV4dC5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOworCQkJ CXN0Y3N0YXRlLT5lc2NvbnRleHQuZGV0YWlsc193YW50ZWQgPSBmYWxzZTsKKworCQkJCUVFT19O RVhUKCk7CisJCQl9CisJCX0KKwogCQlFRU9fQ0FTRShFRU9QX0pTT05FWFBSX1BBVEgpCiAJCXsK IAkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8KQEAgLTM2 NDYsNiArMzY2OSwxMiBAQCBFeGVjRXZhbEFycmF5Q29lcmNlKEV4cHJTdGF0ZSAqc3RhdGUsIEV4 cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIAkJCQkJCQkgIGVjb250ZXh0 LAogCQkJCQkJCSAgb3AtPmQuYXJyYXljb2VyY2UucmVzdWx0ZWxlbXR5cGUsCiAJCQkJCQkJICBv cC0+ZC5hcnJheWNvZXJjZS5hbXN0YXRlKTsKKworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKG9w LT5kLmFycmF5Y29lcmNlLmVsZW1leHByc3RhdGUtPmVzY29udGV4dCkpCisJeworCQkqb3AtPnJl c3ZhbHVlID0gKERhdHVtKSAwOworCQkqb3AtPnJlc251bGwgPSB0cnVlOworCX0KIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jIGIvc3JjL2Jh Y2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKaW5kZXggNjUwZjFkNDJhOTMuLjIzM2JkMmFl MjdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYworKysg Yi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwpAQCAtMjI1Niw2ICsyMjU2LDYy IEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJTExWTUJ1aWxkQnIo Yiwgb3BibG9ja3Nbb3BubyArIDFdKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBFRU9QX1NBRkVU WVBFX0NBU1Q6CisJCQkJeworCQkJCQlTYWZlVHlwZUNhc3RTdGF0ZSAqc3Rjc3RhdGUgPSBvcC0+ ZC5zdGNleHByLnN0Y3N0YXRlOworCQkJCQlMTFZNQmFzaWNCbG9ja1JlZiBiX25vZXJyb3I7CisJ CQkJCUxMVk1CYXNpY0Jsb2NrUmVmIGJfZXJyb3I7CisJCQkJCUxMVk1WYWx1ZVJlZiB2X2Vycm9y X29jY3VycmVkX3A7CisJCQkJCUxMVk1WYWx1ZVJlZiB2X2RldGFpbHNfd2FudGVkX3A7CisJCQkJ CUxMVk1WYWx1ZVJlZiB2X2Vycm9yX29jY3VycmVkOworCisJCQkJCWJfbm9lcnJvciA9IGxfYmJf YmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJCQkgICJvcC4lZC5ub2Vycm9y Iiwgb3Bubyk7CisJCQkJCWJfZXJyb3IgPSBsX2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8gKyAx XSwKKwkJCQkJCQkJCQkJIm9wLiVkLmVycm9yIiwgb3Bubyk7CisKKwkJCQkJLyogR2V0IHBvaW50 ZXIgdG8gZXJyb3Jfb2NjdXJyZWQgZmllbGQgKi8KKwkJCQkJdl9lcnJvcl9vY2N1cnJlZF9wID0g bF9wdHJfY29uc3QoJnN0Y3N0YXRlLT5lc2NvbnRleHQuZXJyb3Jfb2NjdXJyZWQsCisJCQkJCQkJ CQkJCQkJIGxfcHRyKFR5cGVTdG9yYWdlQm9vbCkpOworCisJCQkJCS8qIExvYWQgZXJyb3Jfb2Nj dXJyZWQgYXQgcnVudGltZSAqLworCQkJCQl2X2Vycm9yX29jY3VycmVkID0gbF9sb2FkKGIsIFR5 cGVTdG9yYWdlQm9vbCwgdl9lcnJvcl9vY2N1cnJlZF9wLCAiIik7CisKKwkJCQkJLyogQnJhbmNo IGJhc2VkIG9uIGVycm9yX29jY3VycmVkOiBubyBlcnJvciAtPiBqdW1wX2VuZCAqLworCQkJCQlM TFZNQnVpbGRDb25kQnIoYiwKKwkJCQkJCQkJCUxMVk1CdWlsZElDbXAoYiwgTExWTUludEVRLCB2 X2Vycm9yX29jY3VycmVkLAorCQkJCQkJCQkJCQkJICBsX3Nib29sX2NvbnN0KDApLCAiIiksCisJ CQkJCQkJCQliX25vZXJyb3IsCisJCQkJCQkJCQliX2Vycm9yKTsKKworCQkJCQkvKiBObyBlcnJv cjoganVtcCB0byBlbmQgKi8KKwkJCQkJTExWTVBvc2l0aW9uQnVpbGRlckF0RW5kKGIsIGJfbm9l cnJvcik7CisJCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW3N0Y3N0YXRlLT5qdW1wX2VuZF0p OworCisJCQkJCS8qIEVycm9yIG9jY3VycmVkOiBzZXQgbnVsbCwgcmVzZXQgZmxhZ3MsIGV2YWx1 YXRlIGRlZmF1bHQgKi8KKwkJCQkJTExWTVBvc2l0aW9uQnVpbGRlckF0RW5kKGIsIGJfZXJyb3Ip OworCisJCQkJCS8qIHNldCByZXNudWxsIHRvIHRydWUgKi8KKwkJCQkJTExWTUJ1aWxkU3RvcmUo YiwgbF9zYm9vbF9jb25zdCgxKSwgdl9yZXNudWxscCk7CisKKwkJCQkJLyogcmVzZXQgcmVzdmFs dWUgKi8KKwkJCQkJTExWTUJ1aWxkU3RvcmUoYiwgbF9kYXR1bV9jb25zdCgwKSwgdl9yZXN2YWx1 ZXApOworCisJCQkJCS8qCisJCQkJCSAqIFJlc2V0IGZvciBuZXh0IHVzZSBzdWNoIGFzIGZvciBj YXRjaGluZyBlcnJvcnMgd2hlbgorCQkJCQkgKiBjb2VyY2luZyBhIGV4cHJlc3Npb24uCisJCQkJ CSAqLworCQkJCQlMTFZNQnVpbGRTdG9yZShiLCBsX3Nib29sX2NvbnN0KDApLCB2X2Vycm9yX29j Y3VycmVkX3ApOworCisJCQkJCXZfZGV0YWlsc193YW50ZWRfcCA9IGxfcHRyX2NvbnN0KCZzdGNz dGF0ZS0+ZXNjb250ZXh0LmRldGFpbHNfd2FudGVkLAorCQkJCQkJCQkJCQkJCSBsX3B0cihUeXBl U3RvcmFnZUJvb2wpKTsKKwkJCQkJTExWTUJ1aWxkU3RvcmUoYiwgbF9zYm9vbF9jb25zdCgwKSwg dl9kZXRhaWxzX3dhbnRlZF9wKTsKKworCQkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5v ICsgMV0pOworCisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJY2FzZSBFRU9QX0pTT05FWFBSX1BB VEg6CiAJCQkJewogCQkJCQlKc29uRXhwclN0YXRlICpqc2VzdGF0ZSA9IG9wLT5kLmpzb25leHBy LmpzZXN0YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9z cmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCA2YTg1MDM0OWNmNy4uYjVlODliN2Y2 MGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0yMDYsNiArMjA2LDkgQEAgZXhwclR5cGUoY29u c3QgTm9kZSAqZXhwcikKIAkJY2FzZSBUX1Jvd0NvbXBhcmVFeHByOgogCQkJdHlwZSA9IEJPT0xP SUQ7CiAJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl0eXBlID0gKChj b25zdCBTYWZlVHlwZUNhc3RFeHByICopIGV4cHIpLT5yZXN1bHR0eXBlOworCQkJYnJlYWs7CiAJ CWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQl0eXBlID0gKChjb25zdCBDb2FsZXNjZUV4cHIgKikg ZXhwciktPmNvYWxlc2NldHlwZTsKIAkJCWJyZWFrOwpAQCAtNDUzLDYgKzQ1Niw4IEBAIGV4cHJU eXBtb2QoY29uc3QgTm9kZSAqZXhwcikKIAkJCQlyZXR1cm4gdHlwbW9kOwogCQkJfQogCQkJYnJl YWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJcmV0dXJuICgoY29uc3QgU2FmZVR5 cGVDYXN0RXhwciAqKSBleHByKS0+cmVzdWx0dHlwbW9kOwogCQljYXNlIFRfQ29hbGVzY2VFeHBy OgogCQkJewogCQkJCS8qCkBAIC05NzAsNiArOTc1LDkgQEAgZXhwckNvbGxhdGlvbihjb25zdCBO b2RlICpleHByKQogCQkJLyogUm93Q29tcGFyZUV4cHIncyByZXN1bHQgaXMgYm9vbGVhbiAuLi4g Ki8KIAkJCWNvbGwgPSBJbnZhbGlkT2lkOwkvKiAuLi4gc28gaXQgaGFzIG5vIGNvbGxhdGlvbiAq LwogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJY29sbCA9ICgoY29u c3QgU2FmZVR5cGVDYXN0RXhwciAqKSBleHByKS0+cmVzdWx0Y29sbGlkOworCQkJYnJlYWs7CiAJ CWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQljb2xsID0gKChjb25zdCBDb2FsZXNjZUV4cHIgKikg ZXhwciktPmNvYWxlc2NlY29sbGlkOwogCQkJYnJlYWs7CkBAIC0xMjQwLDYgKzEyNDgsOSBAQCBl eHByU2V0Q29sbGF0aW9uKE5vZGUgKmV4cHIsIE9pZCBjb2xsYXRpb24pCiAJCQkvKiBSb3dDb21w YXJlRXhwcidzIHJlc3VsdCBpcyBib29sZWFuIC4uLiAqLwogCQkJQXNzZXJ0KCFPaWRJc1ZhbGlk KGNvbGxhdGlvbikpOyAvKiAuLi4gc28gbmV2ZXIgc2V0IGEgY29sbGF0aW9uICovCiAJCQlicmVh azsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQkoKFNhZmVUeXBlQ2FzdEV4cHIgKikg ZXhwciktPnJlc3VsdGNvbGxpZCA9IGNvbGxhdGlvbjsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29h bGVzY2VFeHByOgogCQkJKChDb2FsZXNjZUV4cHIgKikgZXhwciktPmNvYWxlc2NlY29sbGlkID0g Y29sbGF0aW9uOwogCQkJYnJlYWs7CkBAIC0xNTU4LDYgKzE1NjksOSBAQCBleHByTG9jYXRpb24o Y29uc3QgTm9kZSAqZXhwcikKIAkJCS8qIGp1c3QgdXNlIGxlZnRtb3N0IGFyZ3VtZW50J3MgbG9j YXRpb24gKi8KIAkJCWxvYyA9IGV4cHJMb2NhdGlvbigoTm9kZSAqKSAoKGNvbnN0IFJvd0NvbXBh cmVFeHByICopIGV4cHIpLT5sYXJncyk7CiAJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2Fz dEV4cHI6CisJCQlsb2MgPSAoKGNvbnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikgZXhwciktPmxvY2F0 aW9uOworCQkJYnJlYWs7CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQkvKiBDT0FMRVNDRSBr ZXl3b3JkIHNob3VsZCBhbHdheXMgYmUgdGhlIGZpcnN0IHRoaW5nICovCiAJCQlsb2MgPSAoKGNv bnN0IENvYWxlc2NlRXhwciAqKSBleHByKS0+bG9jYXRpb247CkBAIC0yMzMzLDYgKzIzNDcsMTgg QEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0 cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJewor CQkJCVNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIgPSBjYXN0Tm9kZShTYWZlVHlwZUNhc3RFeHBy LCBub2RlKTsKKworCQkJCWlmIChXQUxLKHN0Y2V4cHItPnNvdXJjZSkpCisJCQkJCXJldHVybiB0 cnVlOworCQkJCWlmIChXQUxLKHN0Y2V4cHItPmNhc3RleHByKSkKKwkJCQkJcmV0dXJuIHRydWU7 CisJCQkJaWYgKFdBTEsoc3RjZXhwci0+ZGVmZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJ fQorCQkJYnJlYWs7CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQlyZXR1cm4gV0FMSygoKENv YWxlc2NlRXhwciAqKSBub2RlKS0+YXJncyk7CiAJCWNhc2UgVF9NaW5NYXhFeHByOgpAQCAtMzM2 OCw2ICszMzk0LDE5IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwK IAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRf U2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpzdGNleHByID0g Y2FzdE5vZGUoU2FmZVR5cGVDYXN0RXhwciwgbm9kZSk7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAq bmV3bm9kZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIHN0Y2V4cHIsIFNhZmVUeXBlQ2FzdEV4 cHIpOworCQkJCU1VVEFURShuZXdub2RlLT5zb3VyY2UsIHN0Y2V4cHItPnNvdXJjZSwgRXhwciAq KTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+Y2FzdGV4cHIsIHN0Y2V4cHItPmNhc3RleHByLCBFeHBy ICopOworCQkJCU1VVEFURShuZXdub2RlLT5kZWZleHByLCBzdGNleHByLT5kZWZleHByLCBFeHBy ICopOworCisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVhazsKIAkJ Y2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCXsKIAkJCQlDb2FsZXNjZUV4cHIgKmNvYWxlc2NlZXhw ciA9IChDb2FsZXNjZUV4cHIgKikgbm9kZTsKQEAgLTQ1MDQsNiArNDU0MywyMCBAQCByYXdfZXhw cmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0cnVlOwog CQkJCWlmIChXQUxLKHRjLT50eXBlTmFtZSkpCiAJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChX QUxLKHRjLT5kZWZleHByKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJ Y2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAqc3Rj ZXhwciA9IGNhc3ROb2RlKFNhZmVUeXBlQ2FzdEV4cHIsIG5vZGUpOworCisJCQkJaWYgKFdBTEso c3RjZXhwci0+c291cmNlKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoc3RjZXhw ci0+Y2FzdGV4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhzdGNleHByLT5k ZWZleHByKSkKKwkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSBUX0Nv bGxhdGVDbGF1c2U6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVw YWdnLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwYWdnLmMKaW5kZXggMzczN2Nj MTViYTEuLjBmMjQ5NDE0N2JlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJl cC9wcmVwYWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGFnZy5jCkBA IC0zNTgsNiArMzU4LDE3IEBAIHByZXByb2Nlc3NfYWdncmVmc193YWxrZXIoTm9kZSAqbm9kZSwg UGxhbm5lckluZm8gKnJvb3QpCiAJCSAqLwogCQlyZXR1cm4gZmFsc2U7CiAJfQorCWlmIChJc0Eo bm9kZSwgU2FmZVR5cGVDYXN0RXhwcikpCisJeworCQlTYWZlVHlwZUNhc3RFeHByICpjYXN0ZXhw ciA9IChTYWZlVHlwZUNhc3RFeHByICopIG5vZGU7CisKKwkJLyoKKwkJICogInNvdXJjZSIgbWF5 IGFsc28gY29udGFpbiBhbiBBZ2dyZWYgbm9kZSwgYnV0IHNpbmNlIGl0IGlzIGtlcHQgb25seQor CQkgKiBmb3IgZGVwYXJzaW5nIHB1cnBvc2VzLCB3ZSBtdXN0IG5vdCByZWN1cnNlIGludG8gaXQg d2hlbiBwcm9jZXNzaW5nCisJCSAqIGFnZ3JlZ2F0ZSBub2RlcyBoZXJlLgorCQkgKi8KKwkJcmV0 dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIoKE5vZGUgKikgY2FzdGV4cHItPmNhc3RleHByLCBw cmVwcm9jZXNzX2FnZ3JlZnNfd2Fsa2VyLCByb290KTsKKwl9CiAJQXNzZXJ0KCFJc0Eobm9kZSwg U3ViTGluaykpOwogCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIHByZXByb2Nl c3NfYWdncmVmc193YWxrZXIsIHJvb3QpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvY2xhdXNlcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNl cy5jCmluZGV4IDlmYjI2NmQwODlkLi5kNjBlOWM4NGI5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL2NsYXVzZXMuYwpAQCAtNjksNiArNjksNyBAQCB0eXBlZGVmIHN0cnVjdAogCUxpc3QJICAg KmFjdGl2ZV9mbnM7CiAJTm9kZQkgICAqY2FzZV92YWw7CiAJYm9vbAkJZXN0aW1hdGU7CisJRXJy b3JTYXZlQ29udGV4dCAqZXNjb250ZXh0OwogfSBldmFsX2NvbnN0X2V4cHJlc3Npb25zX2NvbnRl eHQ7CiAKIHR5cGVkZWYgc3RydWN0CkBAIC0yNDkyLDYgKzI0OTMsMTAgQEAgcm93dHlwZV9maWVs ZF9tYXRjaGVzKE9pZCByb3d0eXBlaWQsIGludCBmaWVsZG51bSwKICAqIE5PVEU6IGFub3RoZXIg Y3JpdGljYWwgZWZmZWN0IGlzIHRoYXQgYW55IGZ1bmN0aW9uIGNhbGxzIHRoYXQgcmVxdWlyZQog ICogZGVmYXVsdCBhcmd1bWVudHMgd2lsbCBiZSBleHBhbmRlZCwgYW5kIG5hbWVkLWFyZ3VtZW50 IGNhbGxzIHdpbGwgYmUKICAqIGNvbnZlcnRlZCB0byBwb3NpdGlvbmFsIG5vdGF0aW9uLiAgVGhl IGV4ZWN1dG9yIHdvbid0IGhhbmRsZSBlaXRoZXIuCisgKgorICogTk9URTogSWYgZXZhbF9jb25z dF9leHByZXNzaW9uc19jb250ZXh0LT5lc2NvbnRleHQgaXMgbm90IE5VTEwsIHRoZQorICogZXhw cmVzc2lvbiBpcyBldmFsdWF0ZWQgaW4gYW4gZXJyb3Itc2FmZSBtYW5uZXIuIEluIHRoaXMgY2Fz ZSwgdGhlCisgKiBmdW5jdGlvbiB3aWxsIHJldHVybiBOVUxMIGluc3RlYWQgb2YgdGhyb3dpbmcg YW4gZXJyb3IuCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIE5vZGUgKgpAQCAtMjUwNyw2 ICsyNTEyLDcgQEAgZXZhbF9jb25zdF9leHByZXNzaW9ucyhQbGFubmVySW5mbyAqcm9vdCwgTm9k ZSAqbm9kZSkKIAljb250ZXh0LmFjdGl2ZV9mbnMgPSBOSUw7CS8qIG5vdGhpbmcgYmVpbmcgcmVj dXJzaXZlbHkgc2ltcGxpZmllZCAqLwogCWNvbnRleHQuY2FzZV92YWwgPSBOVUxMOwkvKiBubyBD QVNFIGJlaW5nIGV4YW1pbmVkICovCiAJY29udGV4dC5lc3RpbWF0ZSA9IGZhbHNlOwkvKiBzYWZl IHRyYW5zZm9ybWF0aW9ucyBvbmx5ICovCisJY29udGV4dC5lc2NvbnRleHQgPSBOVUxMOwkvKiBm b3IgZXJyb3Itc2FmZSBleHByZXNzaW9uIGV2YWx1YXRpb24gKi8KIAlyZXR1cm4gZXZhbF9jb25z dF9leHByZXNzaW9uc19tdXRhdG9yKG5vZGUsICZjb250ZXh0KTsKIH0KIApAQCAtMjY0Niw2ICsy NjUyLDcgQEAgZXN0aW1hdGVfZXhwcmVzc2lvbl92YWx1ZShQbGFubmVySW5mbyAqcm9vdCwgTm9k ZSAqbm9kZSkKIAljb250ZXh0LmFjdGl2ZV9mbnMgPSBOSUw7CS8qIG5vdGhpbmcgYmVpbmcgcmVj dXJzaXZlbHkgc2ltcGxpZmllZCAqLwogCWNvbnRleHQuY2FzZV92YWwgPSBOVUxMOwkvKiBubyBD QVNFIGJlaW5nIGV4YW1pbmVkICovCiAJY29udGV4dC5lc3RpbWF0ZSA9IHRydWU7CS8qIHVuc2Fm ZSB0cmFuc2Zvcm1hdGlvbnMgT0sgKi8KKwljb250ZXh0LmVzY29udGV4dCA9IE5VTEw7CS8qIGZv ciBlcnJvci1zYWZlIGV4cHJlc3Npb24gZXZhbHVhdGlvbiAqLwogCXJldHVybiBldmFsX2NvbnN0 X2V4cHJlc3Npb25zX211dGF0b3Iobm9kZSwgJmNvbnRleHQpOwogfQogCkBAIC0yNjcxLDExICsy Njc4LDEyIEBAIGVzdGltYXRlX2V4cHJlc3Npb25fdmFsdWUoUGxhbm5lckluZm8gKnJvb3QsIE5v ZGUgKm5vZGUpCiAJKCFleHByZXNzaW9uX3RyZWVfd2Fsa2VyKChOb2RlICopIChub2RlKSwgY29u dGFpbl9ub25fY29uc3Rfd2Fsa2VyLCBOVUxMKSkKIAogLyogR2VuZXJpYyBtYWNybyBmb3IgYXBw bHlpbmcgZXZhbHVhdGVfZXhwciAqLwotI2RlZmluZSBlY2VfZXZhbHVhdGVfZXhwcihub2RlKSBc CisjZGVmaW5lIGVjZV9ldmFsdWF0ZV9leHByKG5vZGUsIGVzY29udGV4dCkgXAogCSgoTm9kZSAq KSBldmFsdWF0ZV9leHByKChFeHByICopIChub2RlKSwgXAogCQkJCQkJCWV4cHJUeXBlKChOb2Rl ICopIChub2RlKSksIFwKIAkJCQkJCQlleHByVHlwbW9kKChOb2RlICopIChub2RlKSksIFwKLQkJ CQkJCQlleHByQ29sbGF0aW9uKChOb2RlICopIChub2RlKSkpKQorCQkJCQkJCWV4cHJDb2xsYXRp b24oKE5vZGUgKikgKG5vZGUpKSwgXAorCQkJCQkJCShOb2RlICopIGVzY29udGV4dCkpCiAKIC8q CiAgKiBSZWN1cnNpdmUgZ3V0cyBvZiBldmFsX2NvbnN0X2V4cHJlc3Npb25zL2VzdGltYXRlX2V4 cHJlc3Npb25fdmFsdWUKQEAgLTMxMzYsNyArMzE0NCw3IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lv bnNfbXV0YXRvcihOb2RlICpub2RlLAogCiAJCQkJaWYgKCFoYXNfbm9uY29uc3RfaW5wdXQgJiYK IAkJCQkJZWNlX2Z1bmN0aW9uX2lzX3NhZmUoZXhwci0+b3BmdW5jaWQsIGNvbnRleHQpKQotCQkJ CQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoZXhwcik7CisJCQkJCXJldHVybiBlY2VfZXZhbHVh dGVfZXhwcihleHByLCBjb250ZXh0LT5lc2NvbnRleHQpOwogCiAJCQkJcmV0dXJuIChOb2RlICop IGV4cHI7CiAJCQl9CkBAIC0zMTU2LDcgKzMxNjQsNyBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25z X211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQkgKi8KIAkJCQlpZiAoZWNlX2FsbF9hcmd1bWVudHNf Y29uc3Qoc2FvcCkgJiYKIAkJCQkJZWNlX2Z1bmN0aW9uX2lzX3NhZmUoc2FvcC0+b3BmdW5jaWQs IGNvbnRleHQpKQotCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIoc2FvcCk7CisJCQkJCXJl dHVybiBlY2VfZXZhbHVhdGVfZXhwcihzYW9wLCBjb250ZXh0LT5lc2NvbnRleHQpOwogCQkJCXJl dHVybiAoTm9kZSAqKSBzYW9wOwogCQkJfQogCQljYXNlIFRfQm9vbEV4cHI6CkBAIC0zMjY3LDYg KzMyNzUsNDMgQEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJ CQkJCQkJCQkJCQkgIGNvcHlPYmplY3QoanZlLT5mb3JtYXQpKTsKIAkJCX0KIAorCQljYXNlIFRf U2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpzdGMgPSBjYXN0 Tm9kZShTYWZlVHlwZUNhc3RFeHByLCBub2RlKTsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpuZXdl eHByID0gbWFrZU5vZGUoU2FmZVR5cGVDYXN0RXhwcik7CisKKwkJCQlOb2RlCSAgICpjYXN0ZXhw ciA9IChOb2RlICopIHN0Yy0+Y2FzdGV4cHI7CisJCQkJTm9kZQkgICAqZGVmZXhwciA9IChOb2Rl ICopIHN0Yy0+ZGVmZXhwcjsKKworCQkJCWNvbnRleHQtPmVzY29udGV4dCA9IG1ha2VOb2RlKEVy cm9yU2F2ZUNvbnRleHQpOworCQkJCWNvbnRleHQtPmVzY29udGV4dC0+dHlwZSA9IFRfRXJyb3JT YXZlQ29udGV4dDsKKwkJCQljb250ZXh0LT5lc2NvbnRleHQtPmVycm9yX29jY3VycmVkID0gZmFs c2U7CisKKwkJCQljYXN0ZXhwciA9IGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihjYXN0 ZXhwciwKKwkJCQkJCQkJCQkJCQkJICBjb250ZXh0KTsKKworCQkJCXBmcmVlKGNvbnRleHQtPmVz Y29udGV4dCk7CisJCQkJY29udGV4dC0+ZXNjb250ZXh0ID0gTlVMTDsKKworCQkJCWRlZmV4cHIg PSBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoZGVmZXhwciwKKwkJCQkJCQkJCQkJCQkJ IGNvbnRleHQpOworCisJCQkJLyoKKwkJCQkgKiBObyBuZWVkIHRvIGZvbGQgInNvdXJjZSIgdG8g YSBjb25zdGFudC4gVGhlIGV4ZWN1dG9yIGRvZXMKKwkJCQkgKiBub3QgdXNlIGl0LCBzZWUgRXhl Y0luaXRTYWZlVHlwZUNhc3RFeHByLiBBZGRpdGlvbmFsbHksCisJCQkJICogY2FzdGV4cHIgZXhw cmVzc2lvbiB0cmVlIG1heSBhbHJlYWR5IGNvbnRhaW4gdGhlICJzb3VyY2UiCisJCQkJICogbm9k ZS4KKwkJCQkgKi8KKwkJCQluZXdleHByLT5zb3VyY2UgPSBzdGMtPnNvdXJjZTsKKwkJCQluZXdl eHByLT5jYXN0ZXhwciA9IChFeHByICopIGNhc3RleHByOworCQkJCW5ld2V4cHItPmRlZmV4cHIg PSAoRXhwciAqKSBkZWZleHByOworCQkJCW5ld2V4cHItPnJlc3VsdHR5cGUgPSBzdGMtPnJlc3Vs dHR5cGU7CisJCQkJbmV3ZXhwci0+cmVzdWx0dHlwbW9kID0gc3RjLT5yZXN1bHR0eXBtb2Q7CisJ CQkJbmV3ZXhwci0+cmVzdWx0Y29sbGlkID0gc3RjLT5yZXN1bHRjb2xsaWQ7CisKKwkJCQlyZXR1 cm4gKE5vZGUgKikgbmV3ZXhwcjsKKwkJCX0KKwogCQljYXNlIFRfU3ViUGxhbjoKIAkJY2FzZSBU X0FsdGVybmF0aXZlU3ViUGxhbjoKIApAQCAtMzM4NCw2ICszNDI5LDcgQEAgZXZhbF9jb25zdF9l eHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJCQl7CiAJCQkJQXJyYXlDb2VyY2VFeHBy ICphYyA9IG1ha2VOb2RlKEFycmF5Q29lcmNlRXhwcik7CiAJCQkJTm9kZQkgICAqc2F2ZV9jYXNl X3ZhbDsKKwkJCQlFeHByCSAgICpzaW1wbGUgPSBOVUxMOwogCiAJCQkJLyoKIAkJCQkgKiBDb3B5 IHRoZSBub2RlIGFuZCBjb25zdC1zaW1wbGlmeSBpdHMgYXJndW1lbnRzLiAgV2UgY2FuJ3QKQEAg LTMzOTEsOSArMzQzNywxMCBAQCBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3IoTm9kZSAq bm9kZSwKIAkJCQkgKiB3aXRoIGNhc2VfdmFsIG9ubHkgd2hpbGUgcHJvY2Vzc2luZyB0aGUgZWxl bWV4cHIuCiAJCQkJICovCiAJCQkJbWVtY3B5KGFjLCBub2RlLCBzaXplb2YoQXJyYXlDb2VyY2VF eHByKSk7Ci0JCQkJYWMtPmFyZyA9IChFeHByICopCi0JCQkJCWV2YWxfY29uc3RfZXhwcmVzc2lv bnNfbXV0YXRvcigoTm9kZSAqKSBhYy0+YXJnLAotCQkJCQkJCQkJCQkJICAgY29udGV4dCk7CisJ CQkJc2ltcGxlID0gKEV4cHIgKikgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKChOb2Rl ICopIGFjLT5hcmcsCisJCQkJCQkJCQkJCQkJCQkJIGNvbnRleHQpOworCQkJCWlmIChzaW1wbGUp CisJCQkJCWFjLT5hcmcgPSBzaW1wbGU7CiAKIAkJCQkvKgogCQkJCSAqIFNldCB1cCBmb3IgdGhl IENhc2VUZXN0RXhwciBub2RlIGNvbnRhaW5lZCBpbiB0aGUgZWxlbWV4cHIuCkBAIC0zNDAyLDkg KzM0NDksMTAgQEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJ CQkJc2F2ZV9jYXNlX3ZhbCA9IGNvbnRleHQtPmNhc2VfdmFsOwogCQkJCWNvbnRleHQtPmNhc2Vf dmFsID0gTlVMTDsKIAotCQkJCWFjLT5lbGVtZXhwciA9IChFeHByICopCi0JCQkJCWV2YWxfY29u c3RfZXhwcmVzc2lvbnNfbXV0YXRvcigoTm9kZSAqKSBhYy0+ZWxlbWV4cHIsCi0JCQkJCQkJCQkJ CQkgICBjb250ZXh0KTsKKwkJCQlzaW1wbGUgPSAoRXhwciAqKSBldmFsX2NvbnN0X2V4cHJlc3Np b25zX211dGF0b3IoKE5vZGUgKikgYWMtPmVsZW1leHByLAorCQkJCQkJCQkJCQkJCQkJCSBjb250 ZXh0KTsKKwkJCQlpZiAoc2ltcGxlKQorCQkJCQlhYy0+ZWxlbWV4cHIgPSBzaW1wbGU7CiAKIAkJ CQljb250ZXh0LT5jYXNlX3ZhbCA9IHNhdmVfY2FzZV92YWw7CiAKQEAgLTM0MTksNyArMzQ2Nyw3 IEBAIGV2YWxfY29uc3RfZXhwcmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCWlmIChh Yy0+YXJnICYmIElzQShhYy0+YXJnLCBDb25zdCkgJiYKIAkJCQkJYWMtPmVsZW1leHByICYmICFJ c0EoYWMtPmVsZW1leHByLCBDb2VyY2VUb0RvbWFpbikgJiYKIAkJCQkJIWNvbnRhaW5fbXV0YWJs ZV9mdW5jdGlvbnMoKE5vZGUgKikgYWMtPmVsZW1leHByKSkKLQkJCQkJcmV0dXJuIGVjZV9ldmFs dWF0ZV9leHByKGFjKTsKKwkJCQkJcmV0dXJuIGVjZV9ldmFsdWF0ZV9leHByKGFjLCBjb250ZXh0 LT5lc2NvbnRleHQpOwogCiAJCQkJcmV0dXJuIChOb2RlICopIGFjOwogCQkJfQpAQCAtMzYxNSw3 ICszNjYzLDcgQEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAJ CQkJbm9kZSA9IGVjZV9nZW5lcmljX3Byb2Nlc3Npbmcobm9kZSk7CiAJCQkJLyogSWYgYWxsIGFy Z3VtZW50cyBhcmUgQ29uc3RzLCB3ZSBjYW4gZm9sZCB0byBhIGNvbnN0YW50ICovCiAJCQkJaWYg KGVjZV9hbGxfYXJndW1lbnRzX2NvbnN0KG5vZGUpKQotCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRl X2V4cHIobm9kZSk7CisJCQkJCXJldHVybiBlY2VfZXZhbHVhdGVfZXhwcihub2RlLCBjb250ZXh0 LT5lc2NvbnRleHQpOwogCQkJCXJldHVybiBub2RlOwogCQkJfQogCQljYXNlIFRfQ29hbGVzY2VF eHByOgpAQCAtMzY5OCw3ICszNzQ2LDggQEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRhdG9y KE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiAoTm9kZSAqKSBldmFsdWF0ZV9leHByKChFeHByICop IHN2ZiwKIAkJCQkJCQkJCQkJCSAgc3ZmLT50eXBlLAogCQkJCQkJCQkJCQkJICBzdmYtPnR5cG1v ZCwKLQkJCQkJCQkJCQkJCSAgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCQkgIEludmFsaWRPaWQs CisJCQkJCQkJCQkJCQkgIE5VTEwpOwogCQkJCWVsc2UKIAkJCQkJcmV0dXJuIGNvcHlPYmplY3Qo KE5vZGUgKikgc3ZmKTsKIAkJCX0KQEAgLTM3OTUsNyArMzg0NCw3IEBAIGV2YWxfY29uc3RfZXhw cmVzc2lvbnNfbXV0YXRvcihOb2RlICpub2RlLAogCQkJCQkJCQkJCQkgIG5ld2ZzZWxlY3QtPnJl c3VsdHR5cGUsCiAJCQkJCQkJCQkJCSAgbmV3ZnNlbGVjdC0+cmVzdWx0dHlwbW9kLAogCQkJCQkJ CQkJCQkgIG5ld2ZzZWxlY3QtPnJlc3VsdGNvbGxpZCkpCi0JCQkJCQlyZXR1cm4gZWNlX2V2YWx1 YXRlX2V4cHIobmV3ZnNlbGVjdCk7CisJCQkJCQlyZXR1cm4gZWNlX2V2YWx1YXRlX2V4cHIobmV3 ZnNlbGVjdCwgY29udGV4dC0+ZXNjb250ZXh0KTsKIAkJCQl9CiAJCQkJcmV0dXJuIChOb2RlICop IG5ld2ZzZWxlY3Q7CiAJCQl9CkBAIC00MTI1LDcgKzQxNzQsNyBAQCBldmFsX2NvbnN0X2V4cHJl c3Npb25zX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQluZXdjcmUtPmFyZyA9IChFeHByICopIGFy ZzsKIAogCQkJCWlmIChhcmcgIT0gTlVMTCAmJiBJc0EoYXJnLCBDb25zdCkpCi0JCQkJCXJldHVy biBlY2VfZXZhbHVhdGVfZXhwcigoTm9kZSAqKSBuZXdjcmUpOworCQkJCQlyZXR1cm4gZWNlX2V2 YWx1YXRlX2V4cHIoKE5vZGUgKikgbmV3Y3JlLCBjb250ZXh0LT5lc2NvbnRleHQpOwogCQkJCXJl dHVybiAoTm9kZSAqKSBuZXdjcmU7CiAJCQl9CiAJCWRlZmF1bHQ6CkBAIC00NTI1LDYgKzQ1NzQs OSBAQCBzaW1wbGlmeV9mdW5jdGlvbihPaWQgZnVuY2lkLCBPaWQgcmVzdWx0X3R5cGUsIGludDMy IHJlc3VsdF90eXBtb2QsCiAJCQkJCQkJCWFyZ3MsIGZ1bmN2YXJpYWRpYywKIAkJCQkJCQkJZnVu Y190dXBsZSwgY29udGV4dCk7CiAKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJFRChjb250ZXh0LT5l c2NvbnRleHQpICYmIG5ld2V4cHIgIT0gTlVMTCkKKwkJZWxvZyhFUlJPUiwgImV2YWx1YXRlX2Z1 bmN0aW9uIGZhaWxlZCwgYnV0IG5ld2V4cHIgaXMgbm90IE5VTEwiKTsKKwogCWlmICghbmV3ZXhw ciAmJiBhbGxvd19ub25fY29uc3QgJiYgT2lkSXNWYWxpZChmdW5jX2Zvcm0tPnByb3N1cHBvcnQp KQogCXsKIAkJLyoKQEAgLTUyMjksNyArNTI4MSw3IEBAIGV2YWx1YXRlX2Z1bmN0aW9uKE9pZCBm dW5jaWQsIE9pZCByZXN1bHRfdHlwZSwgaW50MzIgcmVzdWx0X3R5cG1vZCwKIAluZXdleHByLT5s b2NhdGlvbiA9IC0xOwogCiAJcmV0dXJuIGV2YWx1YXRlX2V4cHIoKEV4cHIgKikgbmV3ZXhwciwg cmVzdWx0X3R5cGUsIHJlc3VsdF90eXBtb2QsCi0JCQkJCQkgcmVzdWx0X2NvbGxpZCk7CisJCQkJ CQkgcmVzdWx0X2NvbGxpZCwgKE5vZGUgKikgY29udGV4dC0+ZXNjb250ZXh0KTsKIH0KIAogLyoK QEAgLTU2ODMsMTAgKzU3MzUsMTMgQEAgc3FsX2lubGluZV9lcnJvcl9jYWxsYmFjayh2b2lkICph cmcpCiAgKgogICogV2UgdXNlIHRoZSBleGVjdXRvcidzIHJvdXRpbmUgRXhlY0V2YWxFeHByKCkg dG8gYXZvaWQgZHVwbGljYXRpb24gb2YKICAqIGNvZGUgYW5kIGVuc3VyZSB3ZSBnZXQgdGhlIHNh bWUgcmVzdWx0IGFzIHRoZSBleGVjdXRvciB3b3VsZCBnZXQuCisgKgorICogV2hlbiBlc2NvbnRl eHQgaXMgbm9uLU5VTEwsIHNhZmVseSBldmFsdWF0ZXMgdGhlIGNvbnN0YW50IGV4cHJlc3Npb24u CisgKiBSZXR1cm5zIE5VTEwgb24gZmFpbHVyZSByYXRoZXIgdGhhbiB0aHJvd2luZyBhbiBlcnJv ci4KICAqLwogRXhwciAqCiBldmFsdWF0ZV9leHByKEV4cHIgKmV4cHIsIE9pZCByZXN1bHRfdHlw ZSwgaW50MzIgcmVzdWx0X3R5cG1vZCwKLQkJCSAgT2lkIHJlc3VsdF9jb2xsYXRpb24pCisJCQkg IE9pZCByZXN1bHRfY29sbGF0aW9uLCBOb2RlICplc2NvbnRleHQpCiB7CiAJRVN0YXRlCSAgICpl c3RhdGU7CiAJRXhwclN0YXRlICAqZXhwcnN0YXRlOwpAQCAtNTcxMSw3ICs1NzY2LDcgQEAgZXZh bHVhdGVfZXhwcihFeHByICpleHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90eXBt b2QsCiAJICogUHJlcGFyZSBleHByIGZvciBleGVjdXRpb24uICAoTm90ZTogd2UgY2FuJ3QgdXNl IEV4ZWNQcmVwYXJlRXhwcgogCSAqIGJlY2F1c2UgaXQnZCByZXN1bHQgaW4gcmVjdXJzaXZlbHkg aW52b2tpbmcgZXZhbF9jb25zdF9leHByZXNzaW9ucy4pCiAJICovCi0JZXhwcnN0YXRlID0gRXhl Y0luaXRFeHByKGV4cHIsIE5VTEwpOworCWV4cHJzdGF0ZSA9IEV4ZWNJbml0RXhwcldpdGhDb250 ZXh0KGV4cHIsIE5VTEwsIGVzY29udGV4dCk7CiAKIAkvKgogCSAqIEFuZCBldmFsdWF0ZSBpdC4K QEAgLTU3MzEsNiArNTc4NiwxMyBAQCBldmFsdWF0ZV9leHByKEV4cHIgKmV4cHIsIE9pZCByZXN1 bHRfdHlwZSwgaW50MzIgcmVzdWx0X3R5cG1vZCwKIAkvKiBHZXQgYmFjayB0byBvdXRlciBtZW1v cnkgY29udGV4dCAqLwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAorCWlm IChTT0ZUX0VSUk9SX09DQ1VSUkVEKGV4cHJzdGF0ZS0+ZXNjb250ZXh0KSkKKwl7CisJCUZyZWVF eGVjdXRvclN0YXRlKGVzdGF0ZSk7CisKKwkJcmV0dXJuIE5VTEw7CisJfQorCiAJLyoKIAkgKiBN dXN0IGNvcHkgcmVzdWx0IG91dCBvZiBzdWItY29udGV4dCB1c2VkIGJ5IGV4cHJlc3Npb24gZXZh bC4KIAkgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMGZlYTcyNmNkZDUuLjJhYzA0NTY1YWZjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKQEAgLTE1OCw2ICsxNTgsOCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSYXdTdG10RW5kKFJh d1N0bXQgKnJzLCBpbnQgZW5kX2xvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICptYWtlQ29sdW1uUmVm KGNoYXIgKmNvbG5hbWUsIExpc3QgKmluZGlyZWN0aW9uLAogCQkJCQkJICAgaW50IGxvY2F0aW9u LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgTm9kZSAqbWFrZVR5cGVDYXN0KE5v ZGUgKmFyZywgVHlwZU5hbWUgKnR5cGVuYW1lLCBpbnQgbG9jYXRpb24pOworc3RhdGljIE5vZGUg Km1ha2VUeXBlQ2FzdFdpdGhEZWZhdWx0KE5vZGUgKmFyZywgVHlwZU5hbWUgKnR5cGVuYW1lLAor CQkJCQkJCQkJIE5vZGUgKnJhd19kZWZhdWx0LCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUg Km1ha2VTdHJpbmdDb25zdENhc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24sIFR5cGVOYW1lICp0 eXBlbmFtZSk7CiBzdGF0aWMgTm9kZSAqbWFrZUludENvbnN0KGludCB2YWwsIGludCBsb2NhdGlv bik7CiBzdGF0aWMgTm9kZSAqbWFrZUZsb2F0Q29uc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24p OwpAQCAtMTY2ODcsNiArMTY2ODksMTIgQEAgZnVuY19leHByX2NvbW1vbl9zdWJleHByOgogCQkJ CX0KIAkJCXwgQ0FTVCAnKCcgYV9leHByIEFTIFR5cGVuYW1lICcpJwogCQkJCXsgJCQgPSBtYWtl VHlwZUNhc3QoJDMsICQ1LCBAMSk7IH0KKwkJCXwgQ0FTVCAnKCcgYV9leHByIEFTIFR5cGVuYW1l IEVSUk9SX1AgT04gQ09OVkVSU0lPTl9QIEVSUk9SX1AgJyknCisJCQkJeyAkJCA9IG1ha2VUeXBl Q2FzdCgkMywgJDUsIEAxKTsgfQorCQkJfCBDQVNUICcoJyBhX2V4cHIgQVMgVHlwZW5hbWUgTlVM TF9QIE9OIENPTlZFUlNJT05fUCBFUlJPUl9QICcpJworCQkJCXsgJCQgPSBtYWtlVHlwZUNhc3RX aXRoRGVmYXVsdCgkMywgJDUsIG1ha2VOdWxsQUNvbnN0KC0xKSwgQDEpOyB9CisJCQl8IENBU1Qg JygnIGFfZXhwciBBUyBUeXBlbmFtZSBERUZBVUxUIGFfZXhwciBPTiBDT05WRVJTSU9OX1AgRVJS T1JfUCAnKScKKwkJCQl7ICQkID0gbWFrZVR5cGVDYXN0V2l0aERlZmF1bHQoJDMsICQ1LCAkNywg QDEpOyB9CiAJCQl8IEVYVFJBQ1QgJygnIGV4dHJhY3RfbGlzdCAnKScKIAkJCQl7CiAJCQkJCSQk ID0gKE5vZGUgKikgbWFrZUZ1bmNDYWxsKFN5c3RlbUZ1bmNOYW1lKCJleHRyYWN0IiksCkBAIC0x OTg0OCwxMCArMTk4NTYsMjUgQEAgbWFrZVR5cGVDYXN0KE5vZGUgKmFyZywgVHlwZU5hbWUgKnR5 cGVuYW1lLCBpbnQgbG9jYXRpb24pCiAKIAluLT5hcmcgPSBhcmc7CiAJbi0+dHlwZU5hbWUgPSB0 eXBlbmFtZTsKKwluLT5kZWZleHByID0gTlVMTDsKIAluLT5sb2NhdGlvbiA9IGxvY2F0aW9uOwog CXJldHVybiAoTm9kZSAqKSBuOwogfQogCitzdGF0aWMgTm9kZSAqCittYWtlVHlwZUNhc3RXaXRo RGVmYXVsdChOb2RlICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwgTm9kZSAqZGVmZXhwciwKKwkJ CQkJCWludCBsb2NhdGlvbikKK3sKKwlUeXBlQ2FzdCAgICpuID0gbWFrZU5vZGUoVHlwZUNhc3Qp OworCisJbi0+YXJnID0gYXJnOworCW4tPnR5cGVOYW1lID0gdHlwZW5hbWU7CisJbi0+ZGVmZXhw ciA9IGRlZmV4cHI7CisJbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAq KSBuOworfQorCiBzdGF0aWMgTm9kZSAqCiBtYWtlU3RyaW5nQ29uc3RDYXN0KGNoYXIgKnN0ciwg aW50IGxvY2F0aW9uLCBUeXBlTmFtZSAqdHlwZW5hbWUpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMK aW5kZXggNjA3NmU5MzczYzEuLjA3YzczNTIxZGYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfYWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBA IC00OTEsNiArNDkxLDEyIEBAIGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCQkJCWVyciA9IF8oImdyb3VwaW5nIG9wZXJhdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIGNoZWNrIGNvbnN0cmFpbnRzIik7CiAKIAkJCWJyZWFrOwor CQljYXNlIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQ6CisJCQlpZiAoaXNBZ2cpCisJCQkJZXJyID0g XygiYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxUIGV4 cHJlc3Npb25zIik7CisJCQllbHNlCisJCQkJZXJyID0gXygiZ3JvdXBpbmcgb3BlcmF0aW9ucyBh cmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsK IAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNU SU9OX0RFRkFVTFQ6CiAKQEAgLTk5Miw2ICs5OTgsOSBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2Fs bChQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJfS0lO RF9ET01BSU5fQ0hFQ0s6CiAJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxs b3dlZCBpbiBjaGVjayBjb25zdHJhaW50cyIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5E X0NBU1RfREVGQVVMVDoKKwkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxv d2VkIGluIENBU1QgREVGQVVMVCBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAJCWNhc2UgRVhQ Ul9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxU OgogCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGQVVM VCBleHByZXNzaW9ucyIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Nv ZXJjZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvZXJjZS5jCmluZGV4IDkxM2NhNTM2 NjZmLi44YmQ3OWZkNWJmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Nv ZXJjZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2VyY2UuYwpAQCAtMzcsMTQg KzM3LDE2IEBAIHN0YXRpYyBOb2RlICpjb2VyY2VfdHlwZV90eXBtb2QoTm9kZSAqbm9kZSwKIAkJ CQkJCQkJT2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwTW9kLAogCQkJCQkJCQlDb2Vy Y2lvbkNvbnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LAogCQkJCQkJCQlpbnQg bG9jYXRpb24sCi0JCQkJCQkJCWJvb2wgaGlkZUlucHV0Q29lcmNpb24pOworCQkJCQkJCQlib29s IGhpZGVJbnB1dENvZXJjaW9uLAorCQkJCQkJCQlOb2RlICplc2NvbnRleHQpOwogc3RhdGljIHZv aWQgaGlkZV9jb2VyY2lvbl9ub2RlKE5vZGUgKm5vZGUpOwogc3RhdGljIE5vZGUgKmJ1aWxkX2Nv ZXJjaW9uX2V4cHJlc3Npb24oTm9kZSAqbm9kZSwKIAkJCQkJCQkJCSAgIENvZXJjaW9uUGF0aFR5 cGUgcGF0aHR5cGUsCiAJCQkJCQkJCQkgICBPaWQgZnVuY0lkLAogCQkJCQkJCQkJICAgT2lkIHRh cmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwTW9kLAogCQkJCQkJCQkJICAgQ29lcmNpb25Db250 ZXh0IGNjb250ZXh0LCBDb2VyY2lvbkZvcm0gY2Zvcm1hdCwKLQkJCQkJCQkJCSAgIGludCBsb2Nh dGlvbik7CisJCQkJCQkJCQkgICBpbnQgbG9jYXRpb24sCisJCQkJCQkJCQkgICBOb2RlICplc2Nv bnRleHQpOwogc3RhdGljIE5vZGUgKmNvZXJjZV9yZWNvcmRfdG9fY29tcGxleChQYXJzZVN0YXRl ICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCQkJCQkJCQkgIE9pZCB0YXJnZXRUeXBlSWQsCiAJCQkJ CQkJCQkgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwKQEAgLTgxLDYgKzgzLDI4IEBAIGNvZXJj ZV90b190YXJnZXRfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIE9pZCBleHBy dHlwZSwKIAkJCQkJICBDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsCiAJCQkJCSAgQ29lcmNpb25G b3JtIGNmb3JtYXQsCiAJCQkJCSAgaW50IGxvY2F0aW9uKQoreworCXJldHVybiBjb2VyY2VfdG9f dGFyZ2V0X3R5cGVfZXh0ZW5kZWQocHN0YXRlLCBleHByLCBleHBydHlwZSwKKwkJCQkJCQkJCQkg IHRhcmdldHR5cGUsIHRhcmdldHR5cG1vZCwKKwkJCQkJCQkJCQkgIGNjb250ZXh0LAorCQkJCQkJ CQkJCSAgY2Zvcm1hdCwKKwkJCQkJCQkJCQkgIGxvY2F0aW9uLAorCQkJCQkJCQkJCSAgTlVMTCk7 Cit9CisKKy8qCisgKiBlc2NvbnRleHQ6IElmIG5vbi1OVUxMLCBzYWZlbHkgY29lcmNlcyAnZXhw cicgdG8gdGhlIHRhcmdldCB0eXBlCisgKiB3aXRob3V0IHJhaXNpbmcgYW4gZXJyb3IuIFJldHVy bnMgTlVMTCBpZiB0aGUgY29lcmNpb24gZmFpbHMuCisgKgorICogU2VlICdjb2VyY2VfdG9fdGFy Z2V0X3R5cGUnIGFib3ZlIGZvciBkZXRhaWxzIG9uIG90aGVyIHBhcmFtZXRlcnMuCisgKi8KK05v ZGUgKgorY29lcmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Tm9kZSAqZXhwciwgT2lkIGV4cHJ0eXBlLAorCQkJCQkJCSAgIE9pZCB0YXJnZXR0eXBlLCBpbnQz MiB0YXJnZXR0eXBtb2QsCisJCQkJCQkJICAgQ29lcmNpb25Db250ZXh0IGNjb250ZXh0LAorCQkJ CQkJCSAgIENvZXJjaW9uRm9ybSBjZm9ybWF0LAorCQkJCQkJCSAgIGludCBsb2NhdGlvbiwKKwkJ CQkJCQkgICBOb2RlICplc2NvbnRleHQpCiB7CiAJTm9kZQkgICAqcmVzdWx0OwogCU5vZGUJICAg Km9yaWdleHByOwpAQCAtMTAyLDkgKzEyNiwxNSBAQCBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLCBPaWQgZXhwcnR5cGUsCiAJd2hpbGUgKGV4cHIg JiYgSXNBKGV4cHIsIENvbGxhdGVFeHByKSkKIAkJZXhwciA9IChOb2RlICopICgoQ29sbGF0ZUV4 cHIgKikgZXhwciktPmFyZzsKIAotCXJlc3VsdCA9IGNvZXJjZV90eXBlKHBzdGF0ZSwgZXhwciwg ZXhwcnR5cGUsCi0JCQkJCQkgdGFyZ2V0dHlwZSwgdGFyZ2V0dHlwbW9kLAotCQkJCQkJIGNjb250 ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbik7CisJcmVzdWx0ID0gY29lcmNlX3R5cGVfZXh0ZW5kZWQo cHN0YXRlLCBleHByLCBleHBydHlwZSwKKwkJCQkJCQkJICB0YXJnZXR0eXBlLCB0YXJnZXR0eXBt b2QsCisJCQkJCQkJCSAgY2NvbnRleHQsCisJCQkJCQkJCSAgY2Zvcm1hdCwKKwkJCQkJCQkJICBs b2NhdGlvbiwKKwkJCQkJCQkJICBlc2NvbnRleHQpOworCisJaWYgKFNPRlRfRVJST1JfT0NDVVJS RUQoZXNjb250ZXh0KSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIElmIHRoZSB0YXJnZXQg aXMgYSBmaXhlZC1sZW5ndGggdHlwZSwgaXQgbWF5IG5lZWQgYSBsZW5ndGggY29lcmNpb24gYXMK QEAgLTExNCw3ICsxNDQsMTEgQEAgY29lcmNlX3RvX3RhcmdldF90eXBlKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTm9kZSAqZXhwciwgT2lkIGV4cHJ0eXBlLAogCXJlc3VsdCA9IGNvZXJjZV90eXBlX3R5 cG1vZChyZXN1bHQsCiAJCQkJCQkJCXRhcmdldHR5cGUsIHRhcmdldHR5cG1vZCwKIAkJCQkJCQkJ Y2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uLAotCQkJCQkJCQkocmVzdWx0ICE9IGV4cHIgJiYg IUlzQShyZXN1bHQsIENvbnN0KSkpOworCQkJCQkJCQkocmVzdWx0ICE9IGV4cHIgJiYgIUlzQShy ZXN1bHQsIENvbnN0KSksCisJCQkJCQkJCWVzY29udGV4dCk7CisKKwlpZiAocmVzdWx0ID09IE5V TEwpCQkJLyogc2hvdWxkbid0IGhhcHBlbiAqLworCQllbG9nKEVSUk9SLCAiZmFpbGVkIHRvIGNv ZXJjZSB0eXBlIG1vZGlmaWVyIGFzIGV4cGVjdGVkIik7CiAKIAlpZiAoZXhwciAhPSBvcmlnZXhw ciAmJiB0eXBlX2lzX2NvbGxhdGFibGUodGFyZ2V0dHlwZSkpCiAJewpAQCAtMTU4LDYgKzE5Miwx OCBAQCBOb2RlICoKIGNvZXJjZV90eXBlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbm9kZSwK IAkJCU9pZCBpbnB1dFR5cGVJZCwgT2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwZU1v ZCwKIAkJCUNvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsIGlu dCBsb2NhdGlvbikKK3sKKwlyZXR1cm4gY29lcmNlX3R5cGVfZXh0ZW5kZWQocHN0YXRlLCBub2Rl LAorCQkJCQkJCQlpbnB1dFR5cGVJZCwgdGFyZ2V0VHlwZUlkLCB0YXJnZXRUeXBlTW9kLAorCQkJ CQkJCQljY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24sCisJCQkJCQkJCU5VTEwpOworfQorCitO b2RlICoKK2NvZXJjZV90eXBlX2V4dGVuZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbm9k ZSwKKwkJCQkJIE9pZCBpbnB1dFR5cGVJZCwgT2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0 VHlwZU1vZCwKKwkJCQkJIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNm b3JtYXQsIGludCBsb2NhdGlvbiwKKwkJCQkJIE5vZGUgKmVzY29udGV4dCkKIHsKIAlOb2RlCSAg ICpyZXN1bHQ7CiAJQ29lcmNpb25QYXRoVHlwZSBwYXRodHlwZTsKQEAgLTI1Niw2ICszMDIsNyBA QCBjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCWludDMyCQlp bnB1dFR5cGVNb2Q7CiAJCVR5cGUJCWJhc2VUeXBlOwogCQlQYXJzZUNhbGxiYWNrU3RhdGUgcGNi c3RhdGU7CisJCWNoYXIJICAgKnN0cmluZyA9IE5VTEw7CiAKIAkJLyoKIAkJICogSWYgdGhlIHRh cmdldCB0eXBlIGlzIGEgZG9tYWluLCB3ZSB3YW50IHRvIGNhbGwgaXRzIGJhc2UgdHlwZSdzCkBA IC0zMDksMTMgKzM1NiwyMSBAQCBjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUg Km5vZGUsCiAJCSAqIGFzIENTVFJJTkcuCiAJCSAqLwogCQlpZiAoIWNvbi0+Y29uc3Rpc251bGwp Ci0JCQluZXdjb24tPmNvbnN0dmFsdWUgPSBzdHJpbmdUeXBlRGF0dW0oYmFzZVR5cGUsCi0JCQkJ CQkJCQkJCQkgRGF0dW1HZXRDU3RyaW5nKGNvbi0+Y29uc3R2YWx1ZSksCi0JCQkJCQkJCQkJCQkg aW5wdXRUeXBlTW9kKTsKLQkJZWxzZQotCQkJbmV3Y29uLT5jb25zdHZhbHVlID0gc3RyaW5nVHlw ZURhdHVtKGJhc2VUeXBlLAotCQkJCQkJCQkJCQkJIE5VTEwsCi0JCQkJCQkJCQkJCQkgaW5wdXRU eXBlTW9kKTsKKwkJCXN0cmluZyA9IERhdHVtR2V0Q1N0cmluZyhjb24tPmNvbnN0dmFsdWUpOwor CisJCWlmICghc3RyaW5nVHlwZURhdHVtU2FmZShiYXNlVHlwZSwKKwkJCQkJCQkJIHN0cmluZywK KwkJCQkJCQkJIGlucHV0VHlwZU1vZCwKKwkJCQkJCQkJIGVzY29udGV4dCwKKwkJCQkJCQkJICZu ZXdjb24tPmNvbnN0dmFsdWUpKQorCQl7CisJCQkvKiBVTktOT1dOIENvbnN0IGNhbm5vdCBjb2Vy Y2UgdG8gdGFyZ2V0VHlwZSwgZXhpdCBub3cgKi8KKwkJCWNhbmNlbF9wYXJzZXJfZXJycG9zaXRp b25fY2FsbGJhY2soJnBjYnN0YXRlKTsKKworCQkJUmVsZWFzZVN5c0NhY2hlKGJhc2VUeXBlKTsK KworCQkJcmV0dXJuIE5VTEw7CisJCX0KIAogCQkvKgogCQkgKiBJZiBpdCdzIGEgdmFybGVuYSB2 YWx1ZSwgZm9yY2UgaXQgdG8gYmUgaW4gbm9uLWV4cGFuZGVkCkBAIC0zNjQsNyArNDE5LDggQEAg Y29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJCQkJCQkJICBi YXNlVHlwZUlkLCBiYXNlVHlwZU1vZCwKIAkJCQkJCQkJCSAgdGFyZ2V0VHlwZUlkLAogCQkJCQkJ CQkJICBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24sCi0JCQkJCQkJCQkgIGZhbHNlKTsKKwkJ CQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkgIGVzY29udGV4dCk7CiAKIAkJUmVsZWFzZVN5c0Nh Y2hlKGJhc2VUeXBlKTsKIApAQCAtMzk3LDkgKzQ1MywxMSBAQCBjb2VyY2VfdHlwZShQYXJzZVN0 YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCSAqLwogCQlDb2xsYXRlRXhwciAqY29sbCA9IChD b2xsYXRlRXhwciAqKSBub2RlOwogCi0JCXJlc3VsdCA9IGNvZXJjZV90eXBlKHBzdGF0ZSwgKE5v ZGUgKikgY29sbC0+YXJnLAotCQkJCQkJCSBpbnB1dFR5cGVJZCwgdGFyZ2V0VHlwZUlkLCB0YXJn ZXRUeXBlTW9kLAotCQkJCQkJCSBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24pOworCQlyZXN1 bHQgPSBjb2VyY2VfdHlwZV9leHRlbmRlZChwc3RhdGUsIChOb2RlICopIGNvbGwtPmFyZywKKwkJ CQkJCQkJCSAgaW5wdXRUeXBlSWQsIHRhcmdldFR5cGVJZCwgdGFyZ2V0VHlwZU1vZCwKKwkJCQkJ CQkJCSAgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uLAorCQkJCQkJCQkJICBlc2NvbnRleHQp OworCiAJCWlmICh0eXBlX2lzX2NvbGxhdGFibGUodGFyZ2V0VHlwZUlkKSkKIAkJewogCQkJQ29s bGF0ZUV4cHIgKm5ld2NvbGwgPSBtYWtlTm9kZShDb2xsYXRlRXhwcik7CkBAIC00MzIsNyArNDkw LDggQEAgY29lcmNlX3R5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAogCQkJICov CiAJCQlyZXN1bHQgPSBidWlsZF9jb2VyY2lvbl9leHByZXNzaW9uKG5vZGUsIHBhdGh0eXBlLCBm dW5jSWQsCiAJCQkJCQkJCQkJCSAgIGJhc2VUeXBlSWQsIGJhc2VUeXBlTW9kLAotCQkJCQkJCQkJ CQkgICBjY29udGV4dCwgY2Zvcm1hdCwgbG9jYXRpb24pOworCQkJCQkJCQkJCQkgICBjY29udGV4 dCwgY2Zvcm1hdCwgbG9jYXRpb24sCisJCQkJCQkJCQkJCSAgIGVzY29udGV4dCk7CiAKIAkJCS8q CiAJCQkgKiBJZiBkb21haW4sIGNvZXJjZSB0byB0aGUgZG9tYWluIHR5cGUgYW5kIHJlbGFiZWwg d2l0aCBkb21haW4KQEAgLTQ0Miw3ICs1MDEsOCBAQCBjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpw c3RhdGUsIE5vZGUgKm5vZGUsCiAJCQkJcmVzdWx0ID0gY29lcmNlX3RvX2RvbWFpbihyZXN1bHQs IGJhc2VUeXBlSWQsIGJhc2VUeXBlTW9kLAogCQkJCQkJCQkJCSAgdGFyZ2V0VHlwZUlkLAogCQkJ CQkJCQkJCSAgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0aW9uLAotCQkJCQkJCQkJCSAgdHJ1ZSk7 CisJCQkJCQkJCQkJICB0cnVlLAorCQkJCQkJCQkJCSAgZXNjb250ZXh0KTsKIAkJfQogCQllbHNl CiAJCXsKQEAgLTQ1OCw3ICs1MTgsOSBAQCBjb2VyY2VfdHlwZShQYXJzZVN0YXRlICpwc3RhdGUs IE5vZGUgKm5vZGUsCiAJCQlyZXN1bHQgPSBjb2VyY2VfdG9fZG9tYWluKG5vZGUsIGJhc2VUeXBl SWQsIGJhc2VUeXBlTW9kLAogCQkJCQkJCQkJICB0YXJnZXRUeXBlSWQsCiAJCQkJCQkJCQkgIGNj b250ZXh0LCBjZm9ybWF0LCBsb2NhdGlvbiwKLQkJCQkJCQkJCSAgZmFsc2UpOworCQkJCQkJCQkJ ICBmYWxzZSwKKwkJCQkJCQkJCSAgZXNjb250ZXh0KTsKKwogCQkJaWYgKHJlc3VsdCA9PSBub2Rl KQogCQkJewogCQkJCS8qCkBAIC02NzUsNyArNzM3LDggQEAgY2FuX2NvZXJjZV90eXBlKGludCBu YXJncywgY29uc3QgT2lkICppbnB1dF90eXBlaWRzLCBjb25zdCBPaWQgKnRhcmdldF90eXBlaWRz LAogTm9kZSAqCiBjb2VyY2VfdG9fZG9tYWluKE5vZGUgKmFyZywgT2lkIGJhc2VUeXBlSWQsIGlu dDMyIGJhc2VUeXBlTW9kLCBPaWQgdHlwZUlkLAogCQkJCSBDb2VyY2lvbkNvbnRleHQgY2NvbnRl eHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LCBpbnQgbG9jYXRpb24sCi0JCQkJIGJvb2wgaGlkZUlu cHV0Q29lcmNpb24pCisJCQkJIGJvb2wgaGlkZUlucHV0Q29lcmNpb24sCisJCQkJIE5vZGUgKmVz Y29udGV4dCkKIHsKIAlDb2VyY2VUb0RvbWFpbiAqcmVzdWx0OwogCkBAIC03MDUsNyArNzY4LDEw IEBAIGNvZXJjZV90b19kb21haW4oTm9kZSAqYXJnLCBPaWQgYmFzZVR5cGVJZCwgaW50MzIgYmFz ZVR5cGVNb2QsIE9pZCB0eXBlSWQsCiAJICovCiAJYXJnID0gY29lcmNlX3R5cGVfdHlwbW9kKGFy ZywgYmFzZVR5cGVJZCwgYmFzZVR5cGVNb2QsCiAJCQkJCQkJIGNjb250ZXh0LCBDT0VSQ0VfSU1Q TElDSVRfQ0FTVCwgbG9jYXRpb24sCi0JCQkJCQkJIGZhbHNlKTsKKwkJCQkJCQkgZmFsc2UsCisJ CQkJCQkJIGVzY29udGV4dCk7CisJaWYgKGFyZyA9PSBOVUxMKQkJCS8qIHNob3VsZG4ndCBoYXBw ZW4gKi8KKwkJZWxvZyhFUlJPUiwgImZhaWxlZCB0byBjb2VyY2UgdHlwZSBtb2RpZmllciBhcyBl eHBlY3RlZCIpOwogCiAJLyoKIAkgKiBOb3cgYnVpbGQgdGhlIGRvbWFpbiBjb2VyY2lvbiBub2Rl LiAgVGhpcyByZXByZXNlbnRzIHJ1bi10aW1lIGNoZWNraW5nCkBAIC03NTIsNyArODE4LDggQEAg c3RhdGljIE5vZGUgKgogY29lcmNlX3R5cGVfdHlwbW9kKE5vZGUgKm5vZGUsIE9pZCB0YXJnZXRU eXBlSWQsIGludDMyIHRhcmdldFR5cE1vZCwKIAkJCQkgICBDb2VyY2lvbkNvbnRleHQgY2NvbnRl eHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LAogCQkJCSAgIGludCBsb2NhdGlvbiwKLQkJCQkgICBi b29sIGhpZGVJbnB1dENvZXJjaW9uKQorCQkJCSAgIGJvb2wgaGlkZUlucHV0Q29lcmNpb24sCisJ CQkJICAgTm9kZSAqZXNjb250ZXh0KQogewogCUNvZXJjaW9uUGF0aFR5cGUgcGF0aHR5cGU7CiAJ T2lkCQkJZnVuY0lkOwpAQCAtNzc5LDcgKzg0Niw4IEBAIGNvZXJjZV90eXBlX3R5cG1vZChOb2Rl ICpub2RlLCBPaWQgdGFyZ2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBNb2QsCiAJewogCQlub2Rl ID0gYnVpbGRfY29lcmNpb25fZXhwcmVzc2lvbihub2RlLCBwYXRodHlwZSwgZnVuY0lkLAogCQkJ CQkJCQkJCSB0YXJnZXRUeXBlSWQsIHRhcmdldFR5cE1vZCwKLQkJCQkJCQkJCQkgY2NvbnRleHQs IGNmb3JtYXQsIGxvY2F0aW9uKTsKKwkJCQkJCQkJCQkgY2NvbnRleHQsIGNmb3JtYXQsIGxvY2F0 aW9uLAorCQkJCQkJCQkJCSBlc2NvbnRleHQpOwogCX0KIAllbHNlCiAJewpAQCAtODQwLDcgKzkw OCw4IEBAIGJ1aWxkX2NvZXJjaW9uX2V4cHJlc3Npb24oTm9kZSAqbm9kZSwKIAkJCQkJCSAgT2lk IGZ1bmNJZCwKIAkJCQkJCSAgT2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0VHlwTW9kLAog CQkJCQkJICBDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9ybSBjZm9ybWF0LAot CQkJCQkJICBpbnQgbG9jYXRpb24pCisJCQkJCQkgIGludCBsb2NhdGlvbiwKKwkJCQkJCSAgTm9k ZSAqZXNjb250ZXh0KQogewogCWludAkJCW5hcmdzID0gMDsKIApAQCAtOTUwLDE0ICsxMDE5LDE1 IEBAIGJ1aWxkX2NvZXJjaW9uX2V4cHJlc3Npb24oTm9kZSAqbm9kZSwKIAkJdGFyZ2V0RWxlbWVu dFR5cGUgPSBnZXRfZWxlbWVudF90eXBlKHRhcmdldFR5cGVJZCk7CiAJCUFzc2VydChPaWRJc1Zh bGlkKHRhcmdldEVsZW1lbnRUeXBlKSk7CiAKLQkJZWxlbWV4cHIgPSBjb2VyY2VfdG9fdGFyZ2V0 X3R5cGUoTlVMTCwKLQkJCQkJCQkJCQkgKE5vZGUgKikgY3Rlc3QsCi0JCQkJCQkJCQkJIGN0ZXN0 LT50eXBlSWQsCi0JCQkJCQkJCQkJIHRhcmdldEVsZW1lbnRUeXBlLAotCQkJCQkJCQkJCSB0YXJn ZXRUeXBNb2QsCi0JCQkJCQkJCQkJIGNjb250ZXh0LAotCQkJCQkJCQkJCSBjZm9ybWF0LAotCQkJ CQkJCQkJCSBsb2NhdGlvbik7CisJCWVsZW1leHByID0gY29lcmNlX3RvX3RhcmdldF90eXBlX2V4 dGVuZGVkKE5VTEwsCisJCQkJCQkJCQkJCQkgIChOb2RlICopIGN0ZXN0LAorCQkJCQkJCQkJCQkJ ICBjdGVzdC0+dHlwZUlkLAorCQkJCQkJCQkJCQkJICB0YXJnZXRFbGVtZW50VHlwZSwKKwkJCQkJ CQkJCQkJCSAgdGFyZ2V0VHlwTW9kLAorCQkJCQkJCQkJCQkJICBjY29udGV4dCwKKwkJCQkJCQkJ CQkJCSAgY2Zvcm1hdCwKKwkJCQkJCQkJCQkJCSAgbG9jYXRpb24sCisJCQkJCQkJCQkJCQkgIGVz Y29udGV4dCk7CiAJCWlmIChlbGVtZXhwciA9PSBOVUxMKQkvKiBzaG91bGRuJ3QgaGFwcGVuICov CiAJCQllbG9nKEVSUk9SLCAiZmFpbGVkIHRvIGNvZXJjZSBhcnJheSBlbGVtZW50IHR5cGUgYXMg ZXhwZWN0ZWQiKTsKIApAQCAtMTE0MCw3ICsxMjEwLDggQEAgY29lcmNlX3JlY29yZF90b19jb21w bGV4KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbm9kZSwKIAkJCQkJCQkJYmFzZVR5cGVJZCwg YmFzZVR5cGVNb2QsCiAJCQkJCQkJCXRhcmdldFR5cGVJZCwKIAkJCQkJCQkJY2NvbnRleHQsIGNm b3JtYXQsIGxvY2F0aW9uLAotCQkJCQkJCQlmYWxzZSk7CisJCQkJCQkJCWZhbHNlLAorCQkJCQkJ CQlOVUxMKTsKIAl9CiAKIAlyZXR1cm4gKE5vZGUgKikgcm93ZXhwcjsKQEAgLTEyOTUsNyArMTM2 Niw4IEBAIGNvZXJjZV9udWxsX3RvX2RvbWFpbihPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgT2lk IGNvbGxhdGlvbiwKIAkJCQkJCQkJICBDT0VSQ0lPTl9JTVBMSUNJVCwKIAkJCQkJCQkJICBDT0VS Q0VfSU1QTElDSVRfQ0FTVCwKIAkJCQkJCQkJICAtMSwKLQkJCQkJCQkJICBmYWxzZSk7CisJCQkJ CQkJCSAgZmFsc2UsCisJCQkJCQkJCSAgTlVMTCk7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMKaW5kZXggMzEyZGZkYzE4MmEuLmE3YjJlZGQ1ZmI4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMKQEAgLTE3LDYgKzE3LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9o dHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfY2FzdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMzgs NiArMzksNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdGUuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdy b2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3N5 c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAidXRpbHMv dHlwY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy94bWwuaCIKQEAgLTYyLDcgKzY0LDggQEAgc3Rh dGljIE5vZGUgKnRyYW5zZm9ybU11bHRpQXNzaWduUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTXVs dGlBc3NpZ25SZWYgKm1hcmVmKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1DYXNlRXhwcihQYXJz ZVN0YXRlICpwc3RhdGUsIENhc2VFeHByICpjKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1TdWJM aW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluayk7CiBzdGF0aWMgTm9kZSAq dHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCi0J CQkJCQkJCU9pZCBhcnJheV90eXBlLCBPaWQgZWxlbWVudF90eXBlLCBpbnQzMiB0eXBtb2QpOwor CQkJCQkJCQlPaWQgYXJyYXlfdHlwZSwgT2lkIGVsZW1lbnRfdHlwZSwgaW50MzIgdHlwbW9kLAor CQkJCQkJCQlOb2RlICplc2NvbnRleHQpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybVJvd0V4cHIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBSb3dFeHByICpyLCBib29sIGFsbG93RGVmYXVsdCk7CiBzdGF0 aWMgTm9kZSAqdHJhbnNmb3JtQ29hbGVzY2VFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29hbGVz Y2VFeHByICpjKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1NaW5NYXhFeHByKFBhcnNlU3RhdGUg KnBzdGF0ZSwgTWluTWF4RXhwciAqbSk7CkBAIC03OCw2ICs4MSwxMSBAQCBzdGF0aWMgTm9kZSAq dHJhbnNmb3JtV2hvbGVSb3dSZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkgIGludCBz dWJsZXZlbHNfdXAsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSW5kaXJl Y3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpOwogc3RhdGljIE5v ZGUgKnRyYW5zZm9ybVR5cGVDYXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVHlwZUNhc3QgKnRjKTsK K3N0YXRpYyB2b2lkIENvZXJjaW9uRXJyb3JTYWZlQ2hlY2soUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpjYXN0ZXhwciwKKwkJCQkJCQkJICAgTm9kZSAqc291cmNlLCBPaWQgaW5wdXRUeXBlLCBP aWQgdGFyZ2V0VHlwZSk7CitzdGF0aWMgdm9pZCBDb2VyY2lvbkVycm9yU2FmZV9JbnRlcm5hbChP aWQgaW5wdXRUeXBlLCBPaWQgdGFyZ2V0VHlwZSwKKwkJCQkJCQkJCSAgIGJvb2wgKmVycm9yc2Fm ZV9jb2VyY2lvbiwKKwkJCQkJCQkJCSAgIGJvb2wgKnVzZXJkZWZpbmVkKTsKIHN0YXRpYyBOb2Rl ICp0cmFuc2Zvcm1Db2xsYXRlQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sbGF0ZUNsYXVz ZSAqYyk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSnNvbk9iamVjdENvbnN0cnVjdG9yKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkJSnNvbk9iamVjdENvbnN0cnVjdG9yICpjdG9yKTsK QEAgLTE2Niw3ICsxNzQsNyBAQCB0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpwc3Rh dGUsIE5vZGUgKmV4cHIpCiAKIAkJY2FzZSBUX0FfQXJyYXlFeHByOgogCQkJcmVzdWx0ID0gdHJh bnNmb3JtQXJyYXlFeHByKHBzdGF0ZSwgKEFfQXJyYXlFeHByICopIGV4cHIsCi0JCQkJCQkJCQkJ SW52YWxpZE9pZCwgSW52YWxpZE9pZCwgLTEpOworCQkJCQkJCQkJCUludmFsaWRPaWQsIEludmFs aWRPaWQsIC0xLCBOVUxMKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVF9UeXBlQ2FzdDoKQEAgLTU2 Niw2ICs1NzQsNyBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1 bW5SZWYgKmNyZWYpCiAJCWNhc2UgRVhQUl9LSU5EX1ZBTFVFU19TSU5HTEU6CiAJCWNhc2UgRVhQ Ul9LSU5EX0NIRUNLX0NPTlNUUkFJTlQ6CiAJCWNhc2UgRVhQUl9LSU5EX0RPTUFJTl9DSEVDSzoK KwkJY2FzZSBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElP Tl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgogCQljYXNlIEVY UFJfS0lORF9JTkRFWF9QUkVESUNBVEU6CkBAIC0xODQwLDYgKzE4NDksOSBAQCB0cmFuc2Zvcm1T dWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2FzZSBFWFBS X0tJTkRfRE9NQUlOX0NIRUNLOgogCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBj aGVjayBjb25zdHJhaW50Iik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfQ0FTVF9ERUZB VUxUOgorCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBDQVNUIERFRkFVTFQgZXhw cmVzc2lvbiIpOworCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgog CQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgogCQkJZXJyID0gXygiY2Fubm90IHVz ZSBzdWJxdWVyeSBpbiBERUZBVUxUIGV4cHJlc3Npb24iKTsKQEAgLTIwMzAsMTAgKzIwNDIsMTUg QEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1Ymxpbmsp CiAgKiBJZiB0aGUgY2FsbGVyIHNwZWNpZmllcyB0aGUgdGFyZ2V0IHR5cGUsIHRoZSByZXN1bHRp bmcgYXJyYXkgd2lsbAogICogYmUgb2YgZXhhY3RseSB0aGF0IHR5cGUuICBPdGhlcndpc2Ugd2Ug dHJ5IHRvIGluZmVyIGEgY29tbW9uIHR5cGUKICAqIGZvciB0aGUgZWxlbWVudHMgdXNpbmcgc2Vs ZWN0X2NvbW1vbl90eXBlKCkuCisgKgorICogZXNjb250ZXh0IChFcnJvclNhdmVDb250ZXh0ICop IGlzIHR5cGljYWxseSBOVUxMLCBleGNlcHQgZHVyaW5nIHBhcnNlIGFuYWx5c2lzIGZvcgorICog Q0FTVCguLi4gREVGQVVMVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUikuIFdoZW4gcHJvdmlkZWQs CisgKiBFcnJvclNhdmVDb250ZXh0LT5lcnJvcl9vY2N1cnJlZCBzaG91bGQgYmUgaW5pdGlhbGl6 ZWQgdG8gZmFsc2UuIEl0IGlzIHNldAorICogdG8gdHJ1ZSBpZiBjb2VyY2luZyBhcnJheSBlbGVt ZW50cyBmYWlscy4KICAqLwogc3RhdGljIE5vZGUgKgogdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCi0JCQkJICAgT2lkIGFycmF5X3R5cGUsIE9p ZCBlbGVtZW50X3R5cGUsIGludDMyIHR5cG1vZCkKKwkJCQkgICBPaWQgYXJyYXlfdHlwZSwgT2lk IGVsZW1lbnRfdHlwZSwgaW50MzIgdHlwbW9kLCBOb2RlICplc2NvbnRleHQpCiB7CiAJQXJyYXlF eHByICAqbmV3YSA9IG1ha2VOb2RlKEFycmF5RXhwcik7CiAJTGlzdAkgICAqbmV3ZWxlbXMgPSBO SUw7CkBAIC0yMDY0LDkgKzIwODEsMTAgQEAgdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCiAJCQkJCQkJCQkgIChBX0FycmF5RXhwciAqKSBlLAog CQkJCQkJCQkJICBhcnJheV90eXBlLAogCQkJCQkJCQkJICBlbGVtZW50X3R5cGUsCi0JCQkJCQkJ CQkgIHR5cG1vZCk7CisJCQkJCQkJCQkgIHR5cG1vZCwKKwkJCQkJCQkJCSAgZXNjb250ZXh0KTsK IAkJCS8qIHdlIGNlcnRhaW5seSBoYXZlIGFuIGFycmF5IGhlcmUgKi8KLQkJCUFzc2VydChhcnJh eV90eXBlID09IEludmFsaWRPaWQgfHwgYXJyYXlfdHlwZSA9PSBleHByVHlwZShuZXdlKSk7CisJ CQlBc3NlcnQoZXNjb250ZXh0IHx8IGFycmF5X3R5cGUgPT0gSW52YWxpZE9pZCB8fCBhcnJheV90 eXBlID09IGV4cHJUeXBlKG5ld2UpKTsKIAkJCW5ld2EtPm11bHRpZGltcyA9IHRydWU7CiAJCX0K IAkJZWxzZQpAQCAtMjEwNyw2ICsyMTI1LDggQEAgdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCiAJfQogCWVsc2UKIAl7CisJCUFzc2VydChlc2Nv bnRleHQgPT0gTlVMTCk7CisKIAkJLyogQ2FuJ3QgaGFuZGxlIGFuIGVtcHR5IGFycmF5IHdpdGhv dXQgYSB0YXJnZXQgdHlwZSAqLwogCQlpZiAobmV3ZWxlbXMgPT0gTklMKQogCQkJZXJlcG9ydChF UlJPUiwKQEAgLTIxNTcsMjQgKzIxNzcsNTUgQEAgdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCiAJZm9yZWFjaChlbGVtZW50LCBuZXdlbGVtcykK IAl7CiAJCU5vZGUJICAgKmUgPSAoTm9kZSAqKSBsZmlyc3QoZWxlbWVudCk7Ci0JCU5vZGUJICAg Km5ld2U7CisJCU5vZGUJICAgKm5ld2UgPSBOVUxMOwogCiAJCWlmIChjb2VyY2VfaGFyZCkKIAkJ ewotCQkJbmV3ZSA9IGNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIGUsCi0JCQkJCQkJCQkJ IGV4cHJUeXBlKGUpLAotCQkJCQkJCQkJCSBjb2VyY2VfdHlwZSwKLQkJCQkJCQkJCQkgdHlwbW9k LAotCQkJCQkJCQkJCSBDT0VSQ0lPTl9FWFBMSUNJVCwKLQkJCQkJCQkJCQkgQ09FUkNFX0VYUExJ Q0lUX0NBU1QsCi0JCQkJCQkJCQkJIC0xKTsKLQkJCWlmIChuZXdlID09IE5VTEwpCi0JCQkJZXJl cG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQ0FOTk9UX0NPRVJDRSksCi0JCQkJ CQkgZXJybXNnKCJjYW5ub3QgY2FzdCB0eXBlICVzIHRvICVzIiwKLQkJCQkJCQkJZm9ybWF0X3R5 cGVfYmUoZXhwclR5cGUoZSkpLAotCQkJCQkJCQlmb3JtYXRfdHlwZV9iZShjb2VyY2VfdHlwZSkp LAotCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihlKSkpKTsK KwkJCS8qCisJCQkgKiBDYW5ub3QgY29lcmNlLCBqdXN0IGFwcGVuZCB0aGUgdHJhbnNmb3JtZWQg ZWxlbWVudCBleHByZXNzaW9uCisJCQkgKiB0byB0aGUgbGlzdC4KKwkJCSAqLworCQkJaWYgKFNP RlRfRVJST1JfT0NDVVJSRUQoZXNjb250ZXh0KSkKKwkJCQluZXdlID0gZTsKKwkJCWVsc2UKKwkJ CXsKKwkJCQlOb2RlCSAgICplY29weSA9IE5VTEw7CisKKwkJCQlpZiAoZXNjb250ZXh0KQorCQkJ CQllY29weSA9IGNvcHlPYmplY3QoZSk7CisKKwkJCQluZXdlID0gY29lcmNlX3RvX3RhcmdldF90 eXBlX2V4dGVuZGVkKHBzdGF0ZSwgZSwKKwkJCQkJCQkJCQkJCQkgIGV4cHJUeXBlKGUpLAorCQkJ CQkJCQkJCQkJCSAgY29lcmNlX3R5cGUsCisJCQkJCQkJCQkJCQkJICB0eXBtb2QsCisJCQkJCQkJ CQkJCQkJICBDT0VSQ0lPTl9FWFBMSUNJVCwKKwkJCQkJCQkJCQkJCQkgIENPRVJDRV9FWFBMSUNJ VF9DQVNULAorCQkJCQkJCQkJCQkJCSAgLTEsCisJCQkJCQkJCQkJCQkJICBlc2NvbnRleHQpOwor CQkJCWlmIChuZXdlID09IE5VTEwpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBDYW5ub3QgY29l cmNlLiBSYWlzZSBhbiBlcnJvciBvciBhcHBlbmQgdGhlIHRyYW5zZm9ybWVkCisJCQkJCSAqIGVs ZW1lbnQgdG8gdGhlIGxpc3QuIEFsc28sIHNldAorCQkJCQkgKiBlc2NvbnRleHQtPmVycm9yX29j Y3VycmVkIHRvIHRydWUgc28gdGhlIGNhbGxlciBjYW4KKwkJCQkJICogbm90aWNlIHRoYXQgYXJy YXkgY29lcmNpb24gZmFpbGVkLgorCQkJCQkgKi8KKwkJCQkJaWYgKCFlc2NvbnRleHQpCisJCQkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0NBTk5PVF9DT0VSQ0Up LAorCQkJCQkJCQkgZXJybXNnKCJjYW5ub3QgY2FzdCB0eXBlICVzIHRvICVzIiwKKwkJCQkJCQkJ CQlmb3JtYXRfdHlwZV9iZShleHByVHlwZShlKSksCisJCQkJCQkJCQkJZm9ybWF0X3R5cGVfYmUo Y29lcmNlX3R5cGUpKSwKKwkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJM b2NhdGlvbihlKSkpKTsKKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQlFcnJvclNhdmVDb250ZXh0 ICpjb250ZXh0ID0gY2FzdE5vZGUoRXJyb3JTYXZlQ29udGV4dCwgZXNjb250ZXh0KTsKKworCQkJ CQkJbmV3ZSA9IGVjb3B5OworCQkJCQkJY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSB0cnVlOwor CQkJCQl9CisJCQkJfQorCQkJfQogCQl9CiAJCWVsc2UKIAkJCW5ld2UgPSBjb2VyY2VfdG9fY29t bW9uX3R5cGUocHN0YXRlLCBlLApAQCAtMjcyMywxNyArMjc3NCw2NyBAQCB0cmFuc2Zvcm1XaG9s ZVJvd1JlZihQYXJzZVN0YXRlICpwc3RhdGUsIFBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtLAog c3RhdGljIE5vZGUgKgogdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBl Q2FzdCAqdGMpCiB7Ci0JTm9kZQkgICAqcmVzdWx0OworCVNhZmVUeXBlQ2FzdEV4cHIgKnN0YzsK KwlOb2RlCSAgICpjYXN0ZXhwciA9IE5VTEw7CisJTm9kZQkgICAqZGVmZXhwciA9IE5VTEw7CiAJ Tm9kZQkgICAqYXJnID0gdGMtPmFyZzsKKwlOb2RlCSAgICpzb3VyY2U7CiAJTm9kZQkgICAqZXhw cjsKIAlPaWQJCQlpbnB1dFR5cGU7CiAJT2lkCQkJdGFyZ2V0VHlwZTsKKwlPaWQJCQl0YXJnZXRU eXBlY29sbDsKIAlpbnQzMgkJdGFyZ2V0VHlwbW9kOwogCWludAkJCWxvY2F0aW9uOworCUVycm9y U2F2ZUNvbnRleHQgKmVzY29udGV4dCA9IE5VTEw7CiAKIAkvKiBMb29rIHVwIHRoZSB0eXBlIG5h bWUgZmlyc3QgKi8KIAl0eXBlbmFtZVR5cGVJZEFuZE1vZChwc3RhdGUsIHRjLT50eXBlTmFtZSwg JnRhcmdldFR5cGUsICZ0YXJnZXRUeXBtb2QpOwogCisJdGFyZ2V0VHlwZWNvbGwgPSBnZXRfdHlw Y29sbGF0aW9uKHRhcmdldFR5cGUpOworCisJLyogbG9va2luZyBhdCBERUZBVUxUIGV4cHJlc3Np b24gKi8KKwlpZiAodGMtPmRlZmV4cHIpCisJeworCQlPaWQJCQlkZWZDb2xsOworCisJCWVzY29u dGV4dCA9IG1ha2VOb2RlKEVycm9yU2F2ZUNvbnRleHQpOworCQllc2NvbnRleHQtPnR5cGUgPSBU X0Vycm9yU2F2ZUNvbnRleHQ7CisJCWVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsK KwkJZXNjb250ZXh0LT5kZXRhaWxzX3dhbnRlZCA9IGZhbHNlOworCisJCWRlZmV4cHIgPSB0cmFu c2Zvcm1FeHByKHBzdGF0ZSwgdGMtPmRlZmV4cHIsIEVYUFJfS0lORF9DQVNUX0RFRkFVTFQpOwor CisJCWRlZmV4cHIgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0YXRlLCBkZWZleHByLCBleHBy VHlwZShkZWZleHByKSwKKwkJCQkJCQkJCQl0YXJnZXRUeXBlLCB0YXJnZXRUeXBtb2QsCisJCQkJ CQkJCQkJQ09FUkNJT05fRVhQTElDSVQsCisJCQkJCQkJCQkJQ09FUkNFX0VYUExJQ0lUX0NBU1Qs CisJCQkJCQkJCQkJZXhwckxvY2F0aW9uKGRlZmV4cHIpKTsKKwkJaWYgKGRlZmV4cHIgPT0gTlVM TCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9DQU5OT1RfQ09FUkNF KSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgY29lcmNlICVzIGV4cHJlc3Npb24gdG8gdHlwZSAlcyIs CisJCQkJCQkgICAiQ0FTVCBERUZBVUxUIiwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHRhcmdl dFR5cGUpKSwKKwkJCQkJcGFyc2VyX2NvZXJjaW9uX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxv Y2F0aW9uKHRjLT5kZWZleHByKSwgZGVmZXhwcikpOworCisJCWFzc2lnbl9leHByX2NvbGxhdGlv bnMocHN0YXRlLCBkZWZleHByKTsKKworCQkvKgorCQkgKiBUaGUgY29sbGF0aW9uIG9mIERFRkFV TFQgZXhwcmVzc2lvbiBtdXN0IG1hdGNoIHRoZSBjb2xsYXRpb24gb2YgdGhlCisJCSAqIHRhcmdl dCB0eXBlLgorCQkgKi8KKwkJZGVmQ29sbCA9IGV4cHJDb2xsYXRpb24oZGVmZXhwcik7CisKKwkJ aWYgKHRhcmdldFR5cGVjb2xsICE9IGRlZkNvbGwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQll cnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQllcnJtc2coImNvbGxhdGlv biBvZiBDQVNUIERFRkFVTFQgZXhwcmVzc2lvbiBjb25mbGljdHMgd2l0aCB0YXJnZXQgdHlwZSBj b2xsYXRpb24iKSwKKwkJCQkJZXJyZGV0YWlsKCJcIiVzXCIgdmVyc3VzIFwiJXNcIiIsCisJCQkJ CQkJICBnZXRfY29sbGF0aW9uX25hbWUoZGVmQ29sbCksCisJCQkJCQkJICBnZXRfY29sbGF0aW9u X25hbWUodGFyZ2V0VHlwZWNvbGwpKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg ZXhwckxvY2F0aW9uKGRlZmV4cHIpKSk7CisJfQorCiAJLyoKIAkgKiBJZiB0aGUgc3ViamVjdCBv ZiB0aGUgdHlwZWNhc3QgaXMgYW4gQVJSQVlbXSBjb25zdHJ1Y3QgYW5kIHRoZSB0YXJnZXQKIAkg KiB0eXBlIGlzIGFuIGFycmF5IHR5cGUsIHdlIGludm9rZSB0cmFuc2Zvcm1BcnJheUV4cHIoKSBk aXJlY3RseSBzbyB0aGF0CkBAIC0yNzYyLDcgKzI4NjMsOCBAQCB0cmFuc2Zvcm1UeXBlQ2FzdChQ YXJzZVN0YXRlICpwc3RhdGUsIFR5cGVDYXN0ICp0YykKIAkJCQkJCQkJCSAgKEFfQXJyYXlFeHBy ICopIGFyZywKIAkJCQkJCQkJCSAgdGFyZ2V0QmFzZVR5cGUsCiAJCQkJCQkJCQkgIGVsZW1lbnRU eXBlLAotCQkJCQkJCQkJICB0YXJnZXRCYXNlVHlwbW9kKTsKKwkJCQkJCQkJCSAgdGFyZ2V0QmFz ZVR5cG1vZCwKKwkJCQkJCQkJCSAgZGVmZXhwciA/IChOb2RlICopIGVzY29udGV4dCA6IE5VTEwp OwogCQl9CiAJCWVsc2UKIAkJCWV4cHIgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIGFy Zyk7CkBAIC0yNzgzLDIwICsyODg1LDIwMyBAQCB0cmFuc2Zvcm1UeXBlQ2FzdChQYXJzZVN0YXRl ICpwc3RhdGUsIFR5cGVDYXN0ICp0YykKIAlpZiAobG9jYXRpb24gPCAwKQogCQlsb2NhdGlvbiA9 IHRjLT50eXBlTmFtZS0+bG9jYXRpb247CiAKLQlyZXN1bHQgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5 cGUocHN0YXRlLCBleHByLCBpbnB1dFR5cGUsCi0JCQkJCQkJCSAgIHRhcmdldFR5cGUsIHRhcmdl dFR5cG1vZCwKLQkJCQkJCQkJICAgQ09FUkNJT05fRVhQTElDSVQsCi0JCQkJCQkJCSAgIENPRVJD RV9FWFBMSUNJVF9DQVNULAotCQkJCQkJCQkgICBsb2NhdGlvbik7Ci0JaWYgKHJlc3VsdCA9PSBO VUxMKQorCS8qCisJICogY29lcmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkIGlzIHVubGlrZWx5 IHRvIG1vZGlmeSB0aGUgc291cmNlCisJICogZXhwcmVzc2lvbiwgYnV0IHdlIHN0aWxsIGNyZWF0 ZSBhIGNvcHkgYmVmb3JlaGFuZC4gVGhpcyBhbGxvd3MKKwkgKiBTYWZlVHlwZUNhc3RFeHByIHRv IHJlY2VpdmUgdGhlIHRyYW5zZm9ybWVkIHNvdXJjZSBleHByZXNzaW9uCisJICogdW5jaGFuZ2Vk LgorCSAqLworCXNvdXJjZSA9IGRlZmV4cHIgPyBjb3B5T2JqZWN0KGV4cHIpIDogZXhwcjsKKwor CWlmICghU09GVF9FUlJPUl9PQ0NVUlJFRChlc2NvbnRleHQpKQorCXsKKwkJY2FzdGV4cHIgPSBj b2VyY2VfdG9fdGFyZ2V0X3R5cGVfZXh0ZW5kZWQocHN0YXRlLCBleHByLCBpbnB1dFR5cGUsCisJ CQkJCQkJCQkJCQkgIHRhcmdldFR5cGUsIHRhcmdldFR5cG1vZCwKKwkJCQkJCQkJCQkJCSAgQ09F UkNJT05fRVhQTElDSVQsCisJCQkJCQkJCQkJCQkgIENPRVJDRV9FWFBMSUNJVF9DQVNULAorCQkJ CQkJCQkJCQkJICBsb2NhdGlvbiwKKwkJCQkJCQkJCQkJCSAgZGVmZXhwciA/IChOb2RlICopIGVz Y29udGV4dCA6IE5VTEwpOworCisJCS8qCisJCSAqIE5vIERFRkFVTFQgZXhwcmVzc2lvbiwgZXhp dCBub3cgb3IgZXJyb3Igb3V0IGluIGNhc2Ugb2YgY29lcmNpb24KKwkJICogZmFpbHVyZQorCQkg Ki8KKwkJaWYgKCFkZWZleHByKQorCQl7CisJCQlpZiAoY2FzdGV4cHIpCisJCQkJcmV0dXJuIGNh c3RleHByOworCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfQ0FOTk9U X0NPRVJDRSksCisJCQkJCWVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAlcyIsCisJCQkJ CQkgICBmb3JtYXRfdHlwZV9iZShpbnB1dFR5cGUpLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUo dGFyZ2V0VHlwZSkpLAorCQkJCQlwYXJzZXJfY29lcmNpb25fZXJycG9zaXRpb24ocHN0YXRlLCBs b2NhdGlvbiwgZXhwcikpOworCQl9CisJfQorCisJLyogRnVydGhlciBjaGVjayBmb3IgQ0FTVCgu Li4gREVGQVVMVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUikgKi8KKwlDb2VyY2lvbkVycm9yU2Fm ZUNoZWNrKHBzdGF0ZSwgY2FzdGV4cHIsIHNvdXJjZSwgaW5wdXRUeXBlLAorCQkJCQkJICAgdGFy Z2V0VHlwZSk7CisKKwlzdGMgPSBtYWtlTm9kZShTYWZlVHlwZUNhc3RFeHByKTsKKwlzdGMtPnNv dXJjZSA9IChFeHByICopIHNvdXJjZTsKKwlzdGMtPmNhc3RleHByID0gKEV4cHIgKikgY2FzdGV4 cHI7CisJc3RjLT5kZWZleHByID0gKEV4cHIgKikgZGVmZXhwcjsKKwlzdGMtPnJlc3VsdHR5cGUg PSB0YXJnZXRUeXBlOworCXN0Yy0+cmVzdWx0dHlwbW9kID0gdGFyZ2V0VHlwbW9kOworCXN0Yy0+ cmVzdWx0Y29sbGlkID0gdGFyZ2V0VHlwZWNvbGw7CisJc3RjLT5sb2NhdGlvbiA9IGxvY2F0aW9u OworCisJcmV0dXJuIChOb2RlICopIHN0YzsKK30KKworLyoKKyAqIENoZWNrIHR5cGUgY29lcmNp b24gaXMgZXJyb3Igc2FmZSBvciBub3QuICBJZiBub3QgdGhlbiByZXBvcnQgZXJyb3IKKyAqLwor c3RhdGljIHZvaWQKK0NvZXJjaW9uRXJyb3JTYWZlQ2hlY2soUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpjYXN0ZXhwciwgTm9kZSAqc291cmNlLAorCQkJCQkgICBPaWQgaW5wdXRUeXBlLCBPaWQg dGFyZ2V0VHlwZSkKK3sKKwlib29sCQllcnJvcnNhZmVfY29lcmNpb24gPSB0cnVlOworCWJvb2wJ CXVzZXJkZWZpbmVkID0gZmFsc2U7CisKKwkvKgorCSAqIEJpbmFyeSBjb2VyY2lvbiBjYXN0IGlz IGVycm9yLXNhZmUsIENvZXJjZVZpYUlPIGNhbiBhbHNvIGJlIGV2YWx1YXRlZAorCSAqIGluIGFu IGVycm9yLXNhZmUgbWFubmVyLiBTa2lwIHRoZXNlIGNhc2VzLgorCSAqLworCWlmIChjYXN0ZXhw ciA9PSBOVUxMIHx8CisJCUlzQmluYXJ5Q29lcmNpYmxlKGlucHV0VHlwZSwgdGFyZ2V0VHlwZSkg fHwKKwkJSXNBKGNhc3RleHByLCBDb2VyY2VWaWFJTykpCisJCXJldHVybjsKKworCUNvZXJjaW9u RXJyb3JTYWZlX0ludGVybmFsKGlucHV0VHlwZSwgdGFyZ2V0VHlwZSwKKwkJCQkJCQkgICAmZXJy b3JzYWZlX2NvZXJjaW9uLAorCQkJCQkJCSAgICZ1c2VyZGVmaW5lZCk7CisKKwlpZiAoIWVycm9y c2FmZV9jb2VyY2lvbikKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0NB Tk5PVF9DT0VSQ0UpLAotCQkJCSBlcnJtc2coImNhbm5vdCBjYXN0IHR5cGUgJXMgdG8gJXMiLAot CQkJCQkJZm9ybWF0X3R5cGVfYmUoaW5wdXRUeXBlKSwKLQkJCQkJCWZvcm1hdF90eXBlX2JlKHRh cmdldFR5cGUpKSwKLQkJCQkgcGFyc2VyX2NvZXJjaW9uX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9j YXRpb24sIGV4cHIpKSk7CisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJZXJybXNnKCJjYW5ub3QgY2FzdCB0eXBlICVzIHRvICVzIHdpdGggREVGQVVMVCBl eHByZXNzaW9uIGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IiLAorCQkJCQkgICBmb3Jt YXRfdHlwZV9iZShpbnB1dFR5cGUpLAorCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0YXJnZXRUeXBl KSksCisJCQkJdXNlcmRlZmluZWQKKwkJCQk/IGVycmRldGFpbCgiU2FmZSB0eXBlIGNhc3RzIGZv ciB1c2VyLWRlZmluZWQgdHlwZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLiIpCisJCQkJOiBlcnJk ZXRhaWwoIkV4cGxpY2l0IGNhc3QgaXMgZGVmaW5lZCBidXQgZGVmaW5pdGlvbiBpcyBub3QgZXJy b3Igc2FmZS4iKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24o c291cmNlKSkpOworfQogCi0JcmV0dXJuIHJlc3VsdDsKK3N0YXRpYyB2b2lkCitDb2VyY2lvbkVy cm9yU2FmZV9JbnRlcm5hbChPaWQgaW5wdXRUeXBlLCBPaWQgdGFyZ2V0VHlwZSwKKwkJCQkJCSAg IGJvb2wgKmVycm9yc2FmZV9jb2VyY2lvbiwgYm9vbCAqdXNlcmRlZmluZWQpCit7CisJSGVhcFR1 cGxlCXR1cGxlOworCisJY2hhcgkJaW5wdXRfdHlwdHlwZSA9IGdldF90eXB0eXBlKGlucHV0VHlw ZSk7CisJY2hhcgkJdGFyZ2V0X3R5cHR5cGUgPSBnZXRfdHlwdHlwZSh0YXJnZXRUeXBlKTsKKwor CS8qIHNpbmNlIHRoaXMgZnVuY3Rpb24gcmVjdXJzZXMsIGl0IGNvdWxkIGJlIGRyaXZlbiB0byBz dGFjayBvdmVyZmxvdyAqLworCWNoZWNrX3N0YWNrX2RlcHRoKCk7CisKKwlBc3NlcnQoZXJyb3Jz YWZlX2NvZXJjaW9uICE9IE5VTEwpOworCUFzc2VydCh1c2VyZGVmaW5lZCAhPSBOVUxMKTsKKwor CWlmICghKCplcnJvcnNhZmVfY29lcmNpb24pKQorCQlyZXR1cm47CisKKwlpZiAoaW5wdXRfdHlw dHlwZSA9PSBUWVBUWVBFX0RPTUFJTiAmJgorCQl0YXJnZXRfdHlwdHlwZSA9PSBUWVBUWVBFX0RP TUFJTikKKwl7CisJCUNvZXJjaW9uRXJyb3JTYWZlX0ludGVybmFsKGdldEJhc2VUeXBlKGlucHV0 VHlwZSksCisJCQkJCQkJCSAgIGdldEJhc2VUeXBlKHRhcmdldFR5cGUpLAorCQkJCQkJCQkgICBl cnJvcnNhZmVfY29lcmNpb24sCisJCQkJCQkJCSAgIHVzZXJkZWZpbmVkKTsKKwkJcmV0dXJuOwor CX0KKwllbHNlIGlmIChpbnB1dF90eXB0eXBlID09IFRZUFRZUEVfRE9NQUlOKQorCXsKKwkJQ29l cmNpb25FcnJvclNhZmVfSW50ZXJuYWwoZ2V0QmFzZVR5cGUoaW5wdXRUeXBlKSwKKwkJCQkJCQkJ ICAgdGFyZ2V0VHlwZSwKKwkJCQkJCQkJICAgZXJyb3JzYWZlX2NvZXJjaW9uLAorCQkJCQkJCQkg ICB1c2VyZGVmaW5lZCk7CisJCXJldHVybjsKKwl9CisJZWxzZSBpZiAodGFyZ2V0X3R5cHR5cGUg PT0gVFlQVFlQRV9ET01BSU4pCisJeworCQlDb2VyY2lvbkVycm9yU2FmZV9JbnRlcm5hbChpbnB1 dFR5cGUsCisJCQkJCQkJCSAgIGdldEJhc2VUeXBlKHRhcmdldFR5cGUpLAorCQkJCQkJCQkgICBl cnJvcnNhZmVfY29lcmNpb24sCisJCQkJCQkJCSAgIHVzZXJkZWZpbmVkKTsKKwkJcmV0dXJuOwor CX0KKwllbHNlIGlmICgoaW5wdXRfdHlwdHlwZSAhPSBUWVBUWVBFX0JBU0UgJiYgaW5wdXRUeXBl ID4gRmlyc3RVbnBpbm5lZE9iamVjdElkKQorCQkJIHx8ICh0YXJnZXRfdHlwdHlwZSAhPSBUWVBU WVBFX0JBU0UgJiYgdGFyZ2V0VHlwZSA+IEZpcnN0VW5waW5uZWRPYmplY3RJZCkpCisJeworCQkv KgorCQkgKiBDb21wb3NpdGUtdG8tY29tcG9zaXRlIGNhc3RpbmcgaXMgbm90IGltcGxlbWVudGVk LCBzbyBlcnJvci1zYWZlCisJCSAqIGNhc3QgYmV0d2VlbiB0aGVtIHNob3VsZCBub3QgYmUgcG9z c2libGU7IHdlIGZvcmJpZCBpdCBoZXJlLgorCQkgKgorCQkgKiBPdXIgdHlwZSBzeXN0ZW0gZG9l cyBub3QgYXV0b21hdGljYWxseSBjYXN0IGEgdXNlci1kZWZpbmVkIHJhbmdlCisJCSAqIHR5cGUg dG8gYW4gYnVpbHQtaW4gcmFuZ2UgdHlwZSwgZXZlbiBpZiB0aGVpciBiYXNlIGVsZW1lbnQgdHlw ZXMKKwkJICogYXJlIHRoZSBzYW1lLiBUaGVyZSBtYXkgYmUgY29tcGxleCBlZGdlIGNhc2VzIHRv IGNvbnNpZGVyLCBzYWZlciB0bworCQkgKiBzaW1wbHkgZGlzYWxsb3cgZXJyb3Itc2FmZSBjYXN0 aW5nIGZvciB0aGVtIG5vdy4KKwkJICovCisJCSplcnJvcnNhZmVfY29lcmNpb24gPSBmYWxzZTsK KworCQlyZXR1cm47CisJfQorCWVsc2UKKwl7CisJCU9pZAkJCWlucHV0X3R5cGVsZW0gPSBnZXRf ZWxlbWVudF90eXBlKGlucHV0VHlwZSk7CisJCU9pZAkJCXRhcmdldF90eXBlbGVtID0gZ2V0X2Vs ZW1lbnRfdHlwZSh0YXJnZXRUeXBlKTsKKworCQlpZiAoT2lkSXNWYWxpZChpbnB1dF90eXBlbGVt KSAmJiBPaWRJc1ZhbGlkKHRhcmdldF90eXBlbGVtKSkKKwkJeworCQkJLyogcmVjdXJzZSBpbnRv IGFycmF5IGVsZW1lbnQgdHlwZSAqLworCQkJQ29lcmNpb25FcnJvclNhZmVfSW50ZXJuYWwoaW5w dXRfdHlwZWxlbSwKKwkJCQkJCQkJCSAgIHRhcmdldF90eXBlbGVtLAorCQkJCQkJCQkJICAgZXJy b3JzYWZlX2NvZXJjaW9uLAorCQkJCQkJCQkJICAgdXNlcmRlZmluZWQpOworCQkJcmV0dXJuOwor CQl9CisJfQorCisJLyoKKwkgKiBDYXN0cyBmcm9tIE1PTkVZIHNvdXJjZSB0eXBlIGFyZSBub3Qg ZXJyb3Igc2FmZS4KKwkgKi8KKwlpZiAoaW5wdXRUeXBlID09IE1PTkVZT0lEKQorCXsKKwkJKmVy cm9yc2FmZV9jb2VyY2lvbiA9IGZhbHNlOworCQlyZXR1cm47CisJfQorCisJaWYgKGlucHV0VHlw ZSAhPSB0YXJnZXRUeXBlKQorCXsKKwkJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoQ0FTVFNPVVJD RVRBUkdFVCwKKwkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShpbnB1dFR5cGUpLAorCQkJCQkJCQlP YmplY3RJZEdldERhdHVtKHRhcmdldFR5cGUpKTsKKworCQkvKgorCQkgKiBBIHBnX2Nhc3QgZW50 cnkgbWlnaHQgbm90IGV4aXN0IGZvciB0aGlzIHNwZWNpZmljIGNhc3Q7IGZvcgorCQkgKiBleGFt cGxlLCB3aGVuIHVzaW5nIENvZXJjZVZpYUlPLgorCQkgKi8KKwkJaWYgKEhlYXBUdXBsZUlzVmFs aWQodHVwbGUpKQorCQl7CisJCQlGb3JtX3BnX2Nhc3QgY2FzdEZvcm0gPSAoRm9ybV9wZ19jYXN0 KSBHRVRTVFJVQ1QodHVwbGUpOworCisJCQlpZiAoY2FzdEZvcm0tPmNhc3RmdW5jID4gRmlyc3RV bnBpbm5lZE9iamVjdElkKQorCQkJeworCQkJCSplcnJvcnNhZmVfY29lcmNpb24gPSBmYWxzZTsK KwkJCQkqdXNlcmRlZmluZWQgPSB0cnVlOworCQkJfQorCQkJUmVsZWFzZVN5c0NhY2hlKHR1cGxl KTsKKwkJfQorCQllbHNlIGlmIChpbnB1dFR5cGUgPiBGaXJzdFVucGlubmVkT2JqZWN0SWQgfHwg dGFyZ2V0VHlwZSA+IEZpcnN0VW5waW5uZWRPYmplY3RJZCkKKwkJeworCQkJKmVycm9yc2FmZV9j b2VyY2lvbiA9IGZhbHNlOworCQkJKnVzZXJkZWZpbmVkID0gdHJ1ZTsKKwkJfQorCX0KIH0KIAog LyoKQEAgLTMyMTIsNiArMzQ5Nyw4IEBAIFBhcnNlRXhwcktpbmROYW1lKFBhcnNlRXhwcktpbmQg ZXhwcktpbmQpCiAJCWNhc2UgRVhQUl9LSU5EX0NIRUNLX0NPTlNUUkFJTlQ6CiAJCWNhc2UgRVhQ Ul9LSU5EX0RPTUFJTl9DSEVDSzoKIAkJCXJldHVybiAiQ0hFQ0siOworCQljYXNlIEVYUFJfS0lO RF9DQVNUX0RFRkFVTFQ6CisJCQlyZXR1cm4gIkNBU1QgREVGQVVMVCI7CiAJCWNhc2UgRVhQUl9L SU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgog CQkJcmV0dXJuICJERUZBVUxUIjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IDhkYmQ0MWEz NTQ4Li4zNTlhNjk0ZmUwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1 bmMuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0yNzQzLDYgKzI3 NDMsOSBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2Rl ICpsYXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVYUFJfS0lORF9ET01BSU5fQ0hFQ0s6 CiAJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g Y2hlY2sgY29uc3RyYWludHMiKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9DQVNUX0RF RkFVTFQ6CisJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93 ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAkJY2FzZSBFWFBS X0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6 CiAJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g REVGQVVMVCBleHByZXNzaW9ucyIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4IDU0 MWZlZjVmMTgzLi43Y2QxOTcwYmM5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpAQCAt ODQ1LDcgKzg0NSw4IEBAIHRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJCQkJCQkJQ09FUkNJT05fSU1QTElDSVQsCiAJCQkJCQkJCQkJQ09FUkNF X0lNUExJQ0lUX0NBU1QsCiAJCQkJCQkJCQkJbG9jYXRpb24sCi0JCQkJCQkJCQkJZmFsc2UpOwor CQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCU5VTEwpOwogCiAJCQlyZXR1cm4gKE5vZGUgKikg ZnN0b3JlOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYwppbmRleCBiYjdlY2NkZTlmZC4uMjgz ZGZjMmVlOTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90eXBlLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYwpAQCAtNjYwLDYgKzY2MCwyNCBAQCBz dHJpbmdUeXBlRGF0dW0oVHlwZSB0cCwgY2hhciAqc3RyaW5nLCBpbnQzMiBhdHR0eXBtb2QpCiAJ cmV0dXJuIE9pZElucHV0RnVuY3Rpb25DYWxsKHR5cGlucHV0LCBzdHJpbmcsIHR5cGlvcGFyYW0s IGF0dHR5cG1vZCk7CiB9CiAKKy8qCisgKiBFcnJvci1zYWZlIHZlcnNpb24gb2Ygc3RyaW5nVHlw ZURhdHVtLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiAic3RyaW5nIiBpcyBhIHZhbGlkIHJlcHJl c2VudGF0aW9uIG9mIHR5cGUgInRwIi4KKyAqIE9uIHN1Y2Nlc3MsIHRoZSBpbnRlcm5hbCBEYXR1 bSByZXByZXNlbnRhdGlvbiBpcyB3cml0dGVuIHRvICJyZXN1bHQiLgorICovCitib29sCitzdHJp bmdUeXBlRGF0dW1TYWZlKFR5cGUgdHAsIGNoYXIgKnN0cmluZywgaW50MzIgYXR0dHlwbW9kLAor CQkJCQlOb2RlICplc2NvbnRleHQsIERhdHVtICpyZXN1bHQpCit7CisJRm9ybV9wZ190eXBlIHR5 cGZvcm0gPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHApOworCU9pZAkJCXR5cGlucHV0ID0g dHlwZm9ybS0+dHlwaW5wdXQ7CisJT2lkCQkJdHlwaW9wYXJhbSA9IGdldFR5cGVJT1BhcmFtKHRw KTsKKworCXJldHVybiBPaWRJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUodHlwaW5wdXQsIHN0cmluZywg dHlwaW9wYXJhbSwgYXR0dHlwbW9kLAorCQkJCQkJCQkJZXNjb250ZXh0LCByZXN1bHQpOworfQor CiAvKgogICogR2l2ZW4gYSB0eXBlaWQsIHJldHVybiB0aGUgdHlwZSdzIHR5cHJlbGlkIChhc3Nv Y2lhdGVkIHJlbGF0aW9uKSwgaWYgYW55LgogICogUmV0dXJucyBJbnZhbGlkT2lkIGlmIHR5cGUg aXMgbm90IGEgY29tcG9zaXRlIHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRl eCA5YTkxOGUxNGFhNy4uMTAzMThmYzQ5OTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQu YwpAQCAtNDk1MSw3ICs0OTUxLDcgQEAgdHJhbnNmb3JtUGFydGl0aW9uQm91bmRWYWx1ZShQYXJz ZVN0YXRlICpwc3RhdGUsIE5vZGUgKnZhbCwKIAkJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3Rh dGUsIHZhbHVlKTsKIAkJdmFsdWUgPSAoTm9kZSAqKSBleHByZXNzaW9uX3BsYW5uZXIoKEV4cHIg KikgdmFsdWUpOwogCQl2YWx1ZSA9IChOb2RlICopIGV2YWx1YXRlX2V4cHIoKEV4cHIgKikgdmFs dWUsIGNvbFR5cGUsIGNvbFR5cG1vZCwKLQkJCQkJCQkJCSAgIHBhcnRDb2xsYXRpb24pOworCQkJ CQkJCQkJICAgcGFydENvbGxhdGlvbiwgTlVMTCk7CiAJCWlmICghSXNBKHZhbHVlLCBDb25zdCkp CiAJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGV2YWx1YXRlIHBhcnRpdGlvbiBib3VuZCBleHBy ZXNzaW9uIik7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMKaW5kZXggNzM0ZTVmZWE0 NWUuLmRiZmU1ZjRhNzllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMKQEAgLTMyOTQs NiArMzI5NCwxNSBAQCBhcnJheV9tYXAoRGF0dW0gYXJyYXlkLAogCQkvKiBBcHBseSB0aGUgZ2l2 ZW4gZXhwcmVzc2lvbiB0byBzb3VyY2UgZWxlbWVudCAqLwogCQl2YWx1ZXNbaV0gPSBFeGVjRXZh bEV4cHIoZXhwcnN0YXRlLCBlY29udGV4dCwgJm51bGxzW2ldKTsKIAorCQkvKiBFeGl0IGVhcmx5 IGlmIGV2YWx1YXRpb24gZmFpbGVkICovCisJCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGV4cHJz dGF0ZS0+ZXNjb250ZXh0KSkKKwkJeworCQkJcGZyZWUodmFsdWVzKTsKKwkJCXBmcmVlKG51bGxz KTsKKworCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQorCiAJCWlmIChudWxsc1tpXSkKIAkJCWhh c251bGxzID0gdHJ1ZTsKIAkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDdi YzEyNTg5ZTQwLi5mNjg5NzdmYzI5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAt MTExMDYsNiArMTExMDYsMzEgQEAgZ2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQsCiAJCQl9CiAJCQlicmVhazsKIAorCQljYXNlIFRfU2FmZVR5cGVDYXN0 RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICpzdGNleHByID0gY2FzdE5vZGUoU2Fm ZVR5cGVDYXN0RXhwciwgbm9kZSk7CisKKwkJCQkvKgorCQkJCSAqIFdlIGNhbm5vdCBkZXBhcnNl IGNhc3RleHByIGRpcmVjdGx5LCBzaW5jZQorCQkJCSAqIHRyYW5zZm9ybVR5cGVDYXN0IG1heSBo YXZlIGFscmVhZHkgY29uc3RhbnQtZm9sZGVkIGl0IGludG8KKwkJCQkgKiBhIENvbnN0YW50LiBJ bnN0ZWFkLCB3ZSBjYW4gdXNlICJzb3VyY2UiIGFuZCAiZGVmZXhwciIgdG8KKwkJCQkgKiByZWNv bnN0cnVjdCB0aGUgQ0FTVCBERUZBVUxUIGNsYXVzZS4KKwkJCQkgKi8KKwkJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGJ1ZiwgIkNBU1QoIik7CisJCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBz dGNleHByLT5zb3VyY2UsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisKKwkJCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIiBBUyAlcyAiLAorCQkJCQkJCQkgZm9ybWF0X3R5cGVfd2l0aF90eXBlbW9k KHN0Y2V4cHItPnJlc3VsdHR5cGUsCisJCQkJCQkJCQkJCQkJCSAgc3RjZXhwci0+cmVzdWx0dHlw bW9kKSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkRFRkFVTFQgIik7CisK KwkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIHN0Y2V4cHItPmRlZmV4cHIsIGNvbnRleHQsIHNo b3dpbXBsaWNpdCk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBPTiBDT05W RVJTSU9OIEVSUk9SKSIpOworCQkJfQorCQkJYnJlYWs7CisKIAkJY2FzZSBUX0pzb25FeHByOgog CQkJewogCQkJCUpzb25FeHByICAgKmpleHByID0gKEpzb25FeHByICopIG5vZGU7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Zt Z3IvZm1nci5jCmluZGV4IGJmZWNlYjdhOTJmLi45MDY4NmFlMjBmOSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9m bWdyLmMKQEAgLTE3NjAsNiArMTc2MCwxOSBAQCBPaWRJbnB1dEZ1bmN0aW9uQ2FsbChPaWQgZnVu Y3Rpb25JZCwgY2hhciAqc3RyLCBPaWQgdHlwaW9wYXJhbSwgaW50MzIgdHlwbW9kKQogCXJldHVy biBJbnB1dEZ1bmN0aW9uQ2FsbCgmZmxpbmZvLCBzdHIsIHR5cGlvcGFyYW0sIHR5cG1vZCk7CiB9 CiAKKy8qIGVycm9yLXNhZmUgdmVyc2lvbiBvZiBPaWRJbnB1dEZ1bmN0aW9uQ2FsbCAqLworYm9v bAorT2lkSW5wdXRGdW5jdGlvbkNhbGxTYWZlKE9pZCBmdW5jdGlvbklkLCBjaGFyICpzdHIsIE9p ZCB0eXBpb3BhcmFtLAorCQkJCQkJIGludDMyIHR5cG1vZCwgTm9kZSAqZXNjb250ZXh0LAorCQkJ CQkJIERhdHVtICpyZXN1bHQpCit7CisJRm1nckluZm8JZmxpbmZvOworCisJZm1ncl9pbmZvKGZ1 bmN0aW9uSWQsICZmbGluZm8pOworCXJldHVybiBJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoJmZsaW5m bywgc3RyLCB0eXBpb3BhcmFtLCB0eXBtb2QsCisJCQkJCQkJCSBlc2NvbnRleHQsIHJlc3VsdCk7 Cit9CisKIGNoYXIgKgogT2lkT3V0cHV0RnVuY3Rpb25DYWxsKE9pZCBmdW5jdGlvbklkLCBEYXR1 bSB2YWwpCiB7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCBhYTliMzYxZmEzMS4uZmE5ZGI4 ZmQ2ODcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMjY1LDYgKzI2NSw3IEBAIHR5cGVk ZWYgZW51bSBFeHByRXZhbE9wCiAJRUVPUF9YTUxFWFBSLAogCUVFT1BfSlNPTl9DT05TVFJVQ1RP UiwKIAlFRU9QX0lTX0pTT04sCisJRUVPUF9TQUZFVFlQRV9DQVNULAogCUVFT1BfSlNPTkVYUFJf UEFUSCwKIAlFRU9QX0pTT05FWFBSX0NPRVJDSU9OLAogCUVFT1BfSlNPTkVYUFJfQ09FUkNJT05f RklOSVNILApAQCAtNzUwLDYgKzc1MSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAK IAkJCUpzb25Jc1ByZWRpY2F0ZSAqcHJlZDsJLyogb3JpZ2luYWwgZXhwcmVzc2lvbiBub2RlICov CiAJCX0JCQlpc19qc29uOwogCisJCS8qIGZvciBFRU9QX1NBRkVUWVBFX0NBU1QgKi8KKwkJc3Ry dWN0CisJCXsKKwkJCXN0cnVjdCBTYWZlVHlwZUNhc3RTdGF0ZSAqc3Rjc3RhdGU7CisJCX0JCQlz dGNleHByOworCiAJCS8qIGZvciBFRU9QX0pTT05FWFBSX1BBVEggKi8KIAkJc3RydWN0CiAJCXsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2ZtZ3IuaCBiL3NyYy9pbmNsdWRlL2ZtZ3IuaAppbmRl eCAxMGQwMmJkYjc5Zi4uOGUzZTUxZGMyMjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZtZ3Iu aAorKysgYi9zcmMvaW5jbHVkZS9mbWdyLmgKQEAgLTc1Miw2ICs3NTIsOSBAQCBleHRlcm4gYm9v bCBEaXJlY3RJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoUEdGdW5jdGlvbiBmdW5jLCBjaGFyICpzdHIs CiAJCQkJCQkJCQkJRGF0dW0gKnJlc3VsdCk7CiBleHRlcm4gRGF0dW0gT2lkSW5wdXRGdW5jdGlv bkNhbGwoT2lkIGZ1bmN0aW9uSWQsIGNoYXIgKnN0ciwKIAkJCQkJCQkJICBPaWQgdHlwaW9wYXJh bSwgaW50MzIgdHlwbW9kKTsKK2V4dGVybiBib29sIE9pZElucHV0RnVuY3Rpb25DYWxsU2FmZShP aWQgZnVuY3Rpb25JZCwgY2hhciAqc3RyLCBPaWQgdHlwaW9wYXJhbSwKKwkJCQkJCQkJCSBpbnQz MiB0eXBtb2QsIE5vZGUgKmVzY29udGV4dCwKKwkJCQkJCQkJCSBEYXR1bSAqcmVzdWx0KTsKIGV4 dGVybiBjaGFyICpPdXRwdXRGdW5jdGlvbkNhbGwoRm1nckluZm8gKmZsaW5mbywgRGF0dW0gdmFs KTsKIGV4dGVybiBjaGFyICpPaWRPdXRwdXRGdW5jdGlvbkNhbGwoT2lkIGZ1bmN0aW9uSWQsIERh dHVtIHZhbCk7CiBleHRlcm4gRGF0dW0gUmVjZWl2ZUZ1bmN0aW9uQ2FsbChGbWdySW5mbyAqZmxp bmZvLCBTdHJpbmdJbmZvIGJ1ZiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNjg0ZTM5OGY4MjQu LjNlZTAzOWRhY2Q0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTA3MSw2ICsxMDcxLDI3IEBA IHR5cGVkZWYgc3RydWN0IERvbWFpbkNvbnN0cmFpbnRTdGF0ZQogCUV4cHJTdGF0ZSAgKmNoZWNr X2V4cHJzdGF0ZTsJLyogY2hlY2tfZXhwcidzIGV2YWwgc3RhdGUsIG9yIE5VTEwgKi8KIH0gRG9t YWluQ29uc3RyYWludFN0YXRlOwogCit0eXBlZGVmIHN0cnVjdCBTYWZlVHlwZUNhc3RTdGF0ZQor eworCVNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHI7CisKKwkvKgorCSAqIEFkZHJlc3MgdG8ganVt cCB0byB3aGVuIHNraXBwaW5nIGFsbCB0aGUgc3RlcHMgdG8gZXZhbHVhdGUgdGhlIGRlZmF1bHQK KwkgKiBleHByZXNzaW9uLgorCSAqLworCWludAkJCWp1bXBfZW5kOworCisJLyoKKwkgKiBGb3Ig ZXJyb3Itc2FmZSBldmFsdWF0aW9uIG9mIGNvZXJjaW9ucy4gQSBwb2ludGVyIHRvIHRoaXMgaXMg cGFzc2VkIHRvCisJICogRXhlY0luaXRFeHByUmVjKCkgd2hlbiBpbml0aWFsaXppbmcgdGhlIGNv ZXJjaW9uIGV4cHJlc3Npb25zLCBzZWUKKwkgKiBFeGVjSW5pdFNhZmVUeXBlQ2FzdEV4cHIuCisJ ICoKKwkgKiBSZXNldCBmb3IgZWFjaCBldmFsdWF0aW9uIG9mIEVFT1BfU0FGRVRZUEVfQ0FTVC4K KwkgKi8KKwlFcnJvclNhdmVDb250ZXh0IGVzY29udGV4dDsKKworfSBTYWZlVHlwZUNhc3RTdGF0 ZTsKKwogLyoKICAqIFN0YXRlIGZvciBKc29uRXhwciBldmFsdWF0aW9uLCB0b28gYmlnIHRvIGlu bGluZS4KICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZGY0MzEyMjBhYzUuLmJhMjdlMGE3 MTRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zOTcsNiArMzk3LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgVHlwZUNhc3QKIAlOb2RlVGFnCQl0eXBlOwogCU5vZGUJICAgKmFyZzsJCQkvKiB0aGUg ZXhwcmVzc2lvbiBiZWluZyBjYXN0ZWQgKi8KIAlUeXBlTmFtZSAgICp0eXBlTmFtZTsJCS8qIHRo ZSB0YXJnZXQgdHlwZSAqLworCU5vZGUJICAgKmRlZmV4cHI7CQkvKiBERUZBVUxUIGV4cHJlc3Np b24gKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1 bmtub3duICovCiB9IFR5cGVDYXN0OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w cmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IGY1YjZiNDU2 NjRhLi5hMWEyNmZiMzk3MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTc3MCw2ICs3NzAsMzkg QEAgdHlwZWRlZiBlbnVtIENvZXJjaW9uRm9ybQogCUNPRVJDRV9TUUxfU1lOVEFYLAkJCS8qIGRp c3BsYXkgd2l0aCBTUUwtbWFuZGF0ZWQgc3BlY2lhbCBzeW50YXggKi8KIH0gQ29lcmNpb25Gb3Jt OwogCisvKgorICogU2FmZVR5cGVDYXN0RXhwciAtCisgKgkJVHJhbnNmb3JtZWQgcmVwcmVzZW50 YXRpb24gb2YKKyAqIAkJQ0FTVChleHByIEFTIHR5cGVuYW1lIERFRkFVTFQgZXhwciBPTiBDT05W RVJTSU9OIEVSUk9SKQorICogCQlDQVNUKGV4cHIgQVMgdHlwZW5hbWUgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKQorICovCit0eXBlZGVmIHN0cnVjdCBTYWZlVHlwZUNhc3RFeHByCit7CisJRXhw cgkJeHByOworCisJLyoKKwkgKiBUaGUgcGFyc2VkIGFuZCB0cmFuc2Zvcm1lZCBzb3VyY2UgZXhw cmVzc2lvbi4KKwkgKgorCSAqIFRoaXMgaXMgdXNlZCBmb3IgZGVwYXJzaW5nIG9ubHkuIEluIGNh c2VzIGxpa2UgIkNBU1QoMSBBUyBkYXRlIERFRkFVTFQKKwkgKiBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIiwgd2hlcmUgdGhlIGNhc3RleHByIGV2YWx1YXRlcyB0byBOVUxMLCB3ZQorCSAqIG5l ZWQgdGhpcyBmaWVsZCB0byByZWNvbnN0cnVjdCB0aGUgb3JpZ2luYWwgcXVlcnkuCisJICovCisJ RXhwcgkgICAqc291cmNlOworCisJLyogdHJhbnNmb3JtZWQgY2FzdCBleHByZXNzaW9uLCBOVUxM IG1lYW5zIGNhbm5vdCBjb2VyY2UgdG8gdGFyZ2V0IHR5cGUgKi8KKwlFeHByCSAgICpjYXN0ZXhw ciBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CisJLyogRmFsbC1iYWNrIHRvIHRo ZSBkZWZhdWx0IGV4cHJlc3Npb24gaWYgY2FzdCBldmFsdWF0aW9uIGZhaWxzICovCisJRXhwcgkg ICAqZGVmZXhwcjsKKwkvKiB0YXJnZXQgdHlwZSBPaWQgKi8KKwlPaWQJCQlyZXN1bHR0eXBlOwor CS8qIHRhcmdldCB0eXBlIG1vZGlmaWVyICovCisJaW50MzIJCXJlc3VsdHR5cG1vZDsKKwkvKiBP SUQgb2YgY29sbGF0aW9uLCBvciBJbnZhbGlkT2lkIGlmIG5vbmUgKi8KKwlPaWQJCQlyZXN1bHRj b2xsaWQ7CisJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KKwlQYXJzZUxv Ywlsb2NhdGlvbjsKK30gU2FmZVR5cGVDYXN0RXhwcjsKKwogLyoKICAqIEZ1bmNFeHByIC0gZXhw cmVzc2lvbiBub2RlIGZvciBhIGZ1bmN0aW9uIGNhbGwKICAqCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1p emVyLmgKaW5kZXggZThiNDA5YWZiN2YuLmI2ODZiZTA0OWI5IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29w dGltaXplci5oCkBAIC0xNTEsNyArMTUxLDcgQEAgZXh0ZXJuIHZvaWQgY29udmVydF9zYW9wX3Rv X2hhc2hlZF9zYW9wKE5vZGUgKm5vZGUpOwogZXh0ZXJuIE5vZGUgKmVzdGltYXRlX2V4cHJlc3Np b25fdmFsdWUoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUpOwogCiBleHRlcm4gRXhwciAq ZXZhbHVhdGVfZXhwcihFeHByICpleHByLCBPaWQgcmVzdWx0X3R5cGUsIGludDMyIHJlc3VsdF90 eXBtb2QsCi0JCQkJCQkgICBPaWQgcmVzdWx0X2NvbGxhdGlvbik7CisJCQkJCQkgICBPaWQgcmVz dWx0X2NvbGxhdGlvbiwgTm9kZSAqZXNjb250ZXh0KTsKIAogZXh0ZXJuIGJvb2wgdmFyX2lzX25v bm51bGxhYmxlKFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhciwKIAkJCQkJCQkgICBOb3ROdWxs U291cmNlIHNvdXJjZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29l cmNlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29lcmNlLmgKaW5kZXggYWFiYWNkNDli NjUuLjEyNjQ0ZjE0NmJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY29l cmNlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NvZXJjZS5oCkBAIC00MywxNSAr NDMsMjkgQEAgZXh0ZXJuIE5vZGUgKmNvZXJjZV90b190YXJnZXRfdHlwZShQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkJCSAgIENvZXJjaW9uQ29udGV4dCBjY29udGV4dCwKIAkJCQkJCQkJICAg Q29lcmNpb25Gb3JtIGNmb3JtYXQsCiAJCQkJCQkJCSAgIGludCBsb2NhdGlvbik7CitleHRlcm4g Tm9kZSAqY29lcmNlX3RvX3RhcmdldF90eXBlX2V4dGVuZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwK KwkJCQkJCQkJCQkJTm9kZSAqZXhwciwKKwkJCQkJCQkJCQkJT2lkIGV4cHJ0eXBlLAorCQkJCQkJ CQkJCQlPaWQgdGFyZ2V0dHlwZSwKKwkJCQkJCQkJCQkJaW50MzIgdGFyZ2V0dHlwbW9kLAorCQkJ CQkJCQkJCQlDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsCisJCQkJCQkJCQkJCUNvZXJjaW9uRm9y bSBjZm9ybWF0LAorCQkJCQkJCQkJCQlpbnQgbG9jYXRpb24sCisJCQkJCQkJCQkJCU5vZGUgKmVz Y29udGV4dCk7CiBleHRlcm4gYm9vbCBjYW5fY29lcmNlX3R5cGUoaW50IG5hcmdzLCBjb25zdCBP aWQgKmlucHV0X3R5cGVpZHMsIGNvbnN0IE9pZCAqdGFyZ2V0X3R5cGVpZHMsCiAJCQkJCQkJQ29l cmNpb25Db250ZXh0IGNjb250ZXh0KTsKIGV4dGVybiBOb2RlICpjb2VyY2VfdHlwZShQYXJzZVN0 YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCQkJCQkgT2lkIGlucHV0VHlwZUlkLCBPaWQgdGFy Z2V0VHlwZUlkLCBpbnQzMiB0YXJnZXRUeXBlTW9kLAogCQkJCQkJIENvZXJjaW9uQ29udGV4dCBj Y29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsIGludCBsb2NhdGlvbik7CitleHRlcm4gTm9k ZSAqY29lcmNlX3R5cGVfZXh0ZW5kZWQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAor CQkJCQkJCQkgIE9pZCBpbnB1dFR5cGVJZCwgT2lkIHRhcmdldFR5cGVJZCwgaW50MzIgdGFyZ2V0 VHlwZU1vZCwKKwkJCQkJCQkJICBDb2VyY2lvbkNvbnRleHQgY2NvbnRleHQsIENvZXJjaW9uRm9y bSBjZm9ybWF0LCBpbnQgbG9jYXRpb24sCisJCQkJCQkJCSAgTm9kZSAqZXNjb250ZXh0KTsKIGV4 dGVybiBOb2RlICpjb2VyY2VfdG9fZG9tYWluKE5vZGUgKmFyZywgT2lkIGJhc2VUeXBlSWQsIGlu dDMyIGJhc2VUeXBlTW9kLAogCQkJCQkJCSAgT2lkIHR5cGVJZCwKIAkJCQkJCQkgIENvZXJjaW9u Q29udGV4dCBjY29udGV4dCwgQ29lcmNpb25Gb3JtIGNmb3JtYXQsIGludCBsb2NhdGlvbiwKLQkJ CQkJCQkgIGJvb2wgaGlkZUlucHV0Q29lcmNpb24pOworCQkJCQkJCSAgYm9vbCBoaWRlSW5wdXRD b2VyY2lvbiwKKwkJCQkJCQkgIE5vZGUgKmVzY29udGV4dCk7CiAKIGV4dGVybiBOb2RlICpjb2Vy Y2VfdG9fYm9vbGVhbihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKm5vZGUsCiAJCQkJCQkJICAg Y29uc3QgY2hhciAqY29uc3RydWN0TmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJz ZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBm YzJjYmViMjA4My4uNzI2YzFmY2QwZTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtNjcs NiArNjcsOCBAQCB0eXBlZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9WQUxVRVNf U0lOR0xFLAkvKiBzaW5nbGUtcm93IFZBTFVFUyAoaW4gSU5TRVJUIG9ubHkpICovCiAJRVhQUl9L SU5EX0NIRUNLX0NPTlNUUkFJTlQsIC8qIENIRUNLIGNvbnN0cmFpbnQgZm9yIGEgdGFibGUgKi8K IAlFWFBSX0tJTkRfRE9NQUlOX0NIRUNLLAkJLyogQ0hFQ0sgY29uc3RyYWludCBmb3IgYSBkb21h aW4gKi8KKwlFWFBSX0tJTkRfQ0FTVF9ERUZBVUxULAkJLyogZGVmYXVsdCBleHByZXNzaW9uIGlu IENBU1QgREVGQVVMVCBPTgorCQkJCQkJCQkgKiBDT05WRVJTSU9OIEVSUk9SICovCiAJRVhQUl9L SU5EX0NPTFVNTl9ERUZBVUxULAkvKiBkZWZhdWx0IHZhbHVlIGZvciBhIHRhYmxlIGNvbHVtbiAq LwogCUVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxULCAvKiBkZWZhdWx0IHBhcmFtZXRlciB2YWx1 ZSBmb3IgZnVuY3Rpb24gKi8KIAlFWFBSX0tJTkRfSU5ERVhfRVhQUkVTU0lPTiwgLyogaW5kZXgg ZXhwcmVzc2lvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3R5cGUu aCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90eXBlLmgKaW5kZXggYTMzNTgwN2IwYjAuLmUz MDNhMTA3M2MxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oCisr KyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90eXBlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgZXh0 ZXJuIGNoYXIgKnR5cGVUeXBlTmFtZShUeXBlIHQpOwogZXh0ZXJuIE9pZAl0eXBlVHlwZVJlbGlk KFR5cGUgdHlwKTsKIGV4dGVybiBPaWQJdHlwZVR5cGVDb2xsYXRpb24oVHlwZSB0eXApOwogZXh0 ZXJuIERhdHVtIHN0cmluZ1R5cGVEYXR1bShUeXBlIHRwLCBjaGFyICpzdHJpbmcsIGludDMyIGF0 dHR5cG1vZCk7CitleHRlcm4gYm9vbCBzdHJpbmdUeXBlRGF0dW1TYWZlKFR5cGUgdHAsIGNoYXIg KnN0cmluZywgaW50MzIgYXR0dHlwbW9kLAorCQkJCQkJCQlOb2RlICplc2NvbnRleHQsIERhdHVt ICpyZXN1bHQpOwogCiBleHRlcm4gT2lkCXR5cGVpZFR5cGVSZWxpZChPaWQgdHlwZV9pZCk7CiBl eHRlcm4gT2lkCXR5cGVPckRvbWFpblR5cGVSZWxpZChPaWQgdHlwZV9pZCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jYXN0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MWE1NWZjZWVlZjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2Nhc3Qub3V0CkBAIC0wLDAgKzEsMTE3MiBAQAorU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0cyA9IDA7 CitTRVQgbGNfbW9uZXRhcnkgVE8gIkMiOworLS0gQ0FTVCBERUZBVUxUIE9OIENPTlZFUlNJT04g RVJST1IKK1NFTEVDVCBDQVNUKEInMDEnIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOworIGRhdGUgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoQklU JzAxJyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBkYXRlIAor LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKFRSVUUgQVMgZGF0ZSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZGF0ZSAKKy0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgxLjEgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgZGF0ZSAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxIEFTIGRhdGUgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGRhdGUgCistLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIENBU1QoMTExMSBBUyAiY2hhciIgREVGQVVMVCAnQScgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgY2hhciAKKy0tLS0tLQorIEEKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ2Rl Zic6OnRleHQgQVMgaW50ZWdlciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg aW50NCAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzInOjpqc29uYiBB UyB0ZXh0IERFRkFVTFQgJ2ZhbGxiYWNrJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyB0ZXh0IAor LS0tLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnMScgQ09MTEFURSAiQyIgfHwgJ2gn IEFTIHRleHQgREVGQVVMVCAnZmFsbGJhY2snIE9OIENPTlZFUlNJT04gRVJST1IpOworIHRleHQg CistLS0tLS0KKyAxaAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChjb25jYXQoJzEnIGNvbGxhdGUg IkMiLCAnaCcpIEFTIGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgY29u Y2F0IAorLS0tLS0tLS0KKyAgICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1QoNjU1MzYgQVMg aW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50MiAKKy0tLS0tLQor ICAgICAKKygxIHJvdykKKworU0VMRUNUIENBU1QoaW50OCg2NTUzNikgQVMgaW50MiBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50OCAKKy0tLS0tLQorICAgICAKKygxIHJv dykKKworLS0gc291cmNlIGV4cHJlc3Npb24gaXMgYSB1bmtub3duIGNvbnN0CitWQUxVRVMgKENB U1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIEVSUk9SIE9OIENPTlZFUlNJT04gRVJST1IpKTsgLS0gZXJy b3IKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImVycm9y IgorTElORSAxOiBWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIEVSUk9SIE9OIENPTlZF UlNJT04gRVJST1IpKTsKKyAgICAgICAgICAgICAgICAgICAgIF4KK1ZBTFVFUyAoQ0FTVCgnZXJy b3InIEFTIGludGVnZXIgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CisgY29sdW1uMSAKKy0t LS0tLS0tLQorICAgICAgICAKKygxIHJvdykKKworVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50 ZWdlciBERUZBVUxUIDQyIE9OIENPTlZFUlNJT04gRVJST1IpKTsKKyBjb2x1bW4xIAorLS0tLS0t LS0tCisgICAgICA0MgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQg MTggT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50NCAKKy0tLS0tLQorICAgMTgKKygxIHJvdykK KworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHN1bSgxKSBPTiBDT05WRVJTSU9OIEVS Uk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93 ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBh cyBpbnQgREVGQVVMVCBzdW0oMSkgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFV TFQgc3VtKDEpIG92ZXIoKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAg d2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Np b25zCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCBzdW0oMSkgb3Zlcigp IE9OIENPTlZFUlNJT04gRS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIChTRUxFQ1QgTlVMTCkgT04gQ09O VkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGNhbm5vdCB1c2Ugc3VicXVlcnkgaW4g Q0FTVCBERUZBVUxUIGV4cHJlc3Npb24KK0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFzIGludCBE RUZBVUxUIChTRUxFQ1QgTlVMTCkgT04gQ09OVkVSU0lPTiBFLi4uCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQg J2InIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBpbnZhbGlkIGlucHV0 IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiYiIKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFz IGludCBERUZBVUxUICdiJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNUKCdhJzo6aW50IGFzIGludCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGludmFsaWQg aW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJhIgorTElORSAxOiBTRUxFQ1QgQ0FTVCgn YSc6OmludCBhcyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IuLi4KKyAgICAg ICAgICAgICAgICAgICAgXgorLS0gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbuKAmXMgY29sbGF0aW9u IHNob3VsZCBtYXRjaCB0YXJnZXQgdHlwZSBjb2xsYXRpb24KK1ZBTFVFUyAoQ0FTVCgnZXJyb3In IEFTIHRleHQgREVGQVVMVCAnMScgQ09MTEFURSAiQyIgT04gQ09OVkVSU0lPTiBFUlJPUikpOwor RVJST1I6ICBjb2xsYXRpb24gb2YgQ0FTVCBERUZBVUxUIGV4cHJlc3Npb24gY29uZmxpY3RzIHdp dGggdGFyZ2V0IHR5cGUgY29sbGF0aW9uCitMSU5FIDE6IFZBTFVFUyAoQ0FTVCgnZXJyb3InIEFT IHRleHQgREVGQVVMVCAnMScgQ09MTEFURSAiQyIgT04gQ09OVi4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgIkMiIHZlcnN1cyAiZGVm YXVsdCIKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludDJ2ZWN0b3IgREVGQVVMVCAnMSAzJyAg T04gQ09OVkVSU0lPTiBFUlJPUikpOworIGNvbHVtbjEgCistLS0tLS0tLS0KKyAxIDMKKygxIHJv dykKKworVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50MnZlY3RvcltdIERFRkFVTFQgJ3sxIDN9 JyAgT04gQ09OVkVSU0lPTiBFUlJPUikpOworIGNvbHVtbjEgCistLS0tLS0tLS0KKyB7IjEgMyJ9 CisoMSByb3cpCisKKy0tIHNvdXJjZSBleHByZXNzaW9uIGNvbnRhaW4gc3VicXVlcnkKK1NFTEVD VCBDQVNUKChTRUxFQ1QgYiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxKSwgKFZBTFVFUygnSCcp KSBzKGIpKQorICAgICAgICAgICAgQVMgaW50MnZlY3RvcltdIERFRkFVTFQgJ3sxIDN9JyAgT04g Q09OVkVSU0lPTiBFUlJPUik7CisgICAgYiAgICAKKy0tLS0tLS0tLQorIHsiMSAzIn0KKygxIHJv dykKKworU0VMRUNUIENBU1QoKFNFTEVDVCBBUlJBWSgoU0VMRUNUIGIgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMikgZywgKFZBTFVFUygnSCcpKSBzKGIpKSkpCisgICAgICAgICAgICBBUyBJTlRb XQorICAgICAgICAgICAgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5 IAorLS0tLS0tLQorIAorKDEgcm93KQorCitDUkVBVEUgRlVOQ1RJT04gcmV0X2ludDgoKSBSRVRV Uk5TIEJJR0lOVCBBUworJCQKK0JFR0lOIFJFVFVSTiAyMTQ3NDgzNjQ4OyBFTkQ7CiskJAorTEFO R1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEU7CitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQg cmV0X2ludDgoKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgaW50ZWdl ciBvdXQgb2YgcmFuZ2UKK1NFTEVDVCBDQVNUKCdhJyBhcyBkYXRlIERFRkFVTFQgcmV0X2ludDgo KSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK0VSUk9SOiAgY2Fubm90IGNvZXJjZSBD QVNUIERFRkFVTFQgZXhwcmVzc2lvbiB0byB0eXBlIGRhdGUKK0xJTkUgMTogU0VMRUNUIENBU1Qo J2EnIGFzIGRhdGUgREVGQVVMVCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04gRVJSLi4uCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gREVGQVVMVCBleHByZXNz aW9uIGNhbm5vdCBiZSBzZXQtcmV0dXJuaW5nCitDUkVBVEUgRlVOQ1RJT04gcmV0X3NldGludCgp IFJFVFVSTlMgU0VUT0YgaW50ZWdlciBBUworJCQKK0JFR0lOIFJFVFVSTiBRVUVSWSBFWEVDVVRF ICdzZWxlY3QgMSB1bmlvbiBhbGwgc2VsZWN0IDEnOyBFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3Nx bCBJTU1VVEFCTEU7CitDUkVBVEUgVEFCTEUgdGNhc3QwKGEgSU5ULCBiIGludCk7CitJTlNFUlQg SU5UTyB0Y2FzdDAgVkFMVUVTKDEsMiksICg2NTUzNiwzKTsKK1NFVCBqaXRfYWJvdmVfY29zdCA9 IDA7CitTRUxFQ1QgQ0FTVChhIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIEZST00gdGNhc3QwOworIGEgCistLS0KKyAxCisgIAorKDIgcm93cykKKworU0VUIGppdF9h Ym92ZV9jb3N0IFRPIERFRkFVTFQ7CitTRUxFQ1QgQ0FTVChhIEFTIGludDIgREVGQVVMVCBOVUxM IE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QwOworIGEgCistLS0KKyAxCisgIAorKDIg cm93cykKKworU0VMRUNUIENBU1QoUk9XKDEsMikgQVMgdGNhc3QwIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MCBhcyB0OworRVJST1I6ICBjYW5ub3QgY2FzdCB0 eXBlIHJlY29yZCB0byB0Y2FzdDAgd2l0aCBERUZBVUxUIGV4cHJlc3Npb24gaW4gQ0FTVCAuLi4g T04gQ09OVkVSU0lPTiBFUlJPUgorTElORSAxOiBTRUxFQ1QgQ0FTVChST1coMSwyKSBBUyB0Y2Fz dDAgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVIuLi4KKyAgICAgICAgICAgICAgICAgICAg XgorREVUQUlMOiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVkIGJ1dCBkZWZpbml0aW9uIGlzIG5v dCBlcnJvciBzYWZlLgorRFJPUCBUQUJMRSB0Y2FzdDA7CitTRUxFQ1QgQ0FTVCgxMi4xMTEgYXMg bnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVt ZXJpY19zY2FsZTsKKyB0b19udW1lcmljX3NjYWxlIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgMTIuMQorKDEgcm93KQorCitDUkVBVEUgVEFCTEUgdGNhc3QoYSB0ZXh0W10sIGIg aW50IEdFTkVSQVRFRCBCWSBERUZBVUxUIEFTIElERU5USVRZKTsKK0lOU0VSVCBJTlRPIHRjYXN0 IFZBTFVFUyAoJ3sxMn0nKSwgKCd7MSxhLCBifScpLCAoJ3t7MSwyfSwge2MsZH19JyksICgnezEz fScpOworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHJldF9zZXRpbnQoKSBPTiBDT05W RVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0OyAtLSBlcnJvcgorRVJST1I6ICBzZXQtcmV0dXJuaW5n IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FTVCBERUZBVUxUIGV4cHJlc3Npb25zCitM SU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCByZXRfc2V0aW50KCkgT04gQ09O VkVSU0lPTiBFUi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor U0VMRUNUIENBU1QodCBBUyB0ZXh0W10gREVGQVVMVCAnezIxLDIyLCAnIHx8IGIgfHwgJ30nIE9O IENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QgYXMgdDsKKyAgICAgdCAgICAgCistLS0tLS0t LS0tLQorIHsyMSwyMiwxfQorIHsyMSwyMiwyfQorIHsyMSwyMiwzfQorIHsyMSwyMiw0fQorKDQg cm93cykKKworU0VMRUNUIENBU1QodC5hIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0nOjppbnRb XSB8fCBiIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QgYXMgdDsKKyAgICAgYSAgICAg CistLS0tLS0tLS0tLQorIHsxMn0KKyB7MjEsMjIsMn0KKyB7MjEsMjIsM30KKyB7MTN9CisoNCBy b3dzKQorCistLSBUZXN0IG5lc3RlZCB0eXBlIGNhc3RzOyBhbGwgZXhwcmVzc2lvbnMgd2lsbCBi ZSBldmFsdWF0ZWQgaW4gYW4gZXJyb3Itc2FmZSBtYW5uZXIKK0NSRUFURSBET01BSU4gZF9ub3Rh IEFTIHRleHQgQ0hFQ0sgKFZBTFVFIDw+ICdhJyk7CitDUkVBVEUgVEFCTEUgdGNhc3QxKGEgdGV4 dCwgYiB0ZXh0W10sIGMgaW50LCBkIGludDgsIGUgaW50OFtdKTsKK0lOU0VSVCBJTlRPIHRjYXN0 MShhLCBiLCBkLCBlKSB2YWx1ZXMoJ2EnLCAne2F9JywgMjE0NzQ4MzY0OCwgJ3syMTQ3NDgzNjQ4 fScpOworU0VMRUNUIENBU1QgKENBU1QoYSBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworIGEgCistLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIENBU1QgKENBU1QoJ2EnIEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7ICAtLSBlcnJvcgorRVJST1I6ICBpbnZhbGlkIGlu cHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiYSIKK0xJTkUgMTogU0VMRUNUIENBU1QgKENB U1QoJ2EnIEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNUIChDQVNUKCdhJzo6dGV4dCBBUyBpbnQp IEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOyAt LSBvaworIHRleHQgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QgKENBU1QoYSBB UyBkX25vdGEpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00g dGNhc3QxOworIGEgCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QgKENBU1QoJ2EnIEFT IGRfbm90YSkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0 Y2FzdDE7CisgdGV4dCAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVChk IEFTIGludCkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0 Y2FzdDE7CisgZCAKKy0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVCgnMjE0NzQ4 MzY0OCc6OmludDggQVMgaW50KSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBGUk9NIHRjYXN0MTsKKyB0ZXh0IAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBD QVNUIChDQVNUKCd7YX0nOjp0ZXh0W10gQVMgaW50W10pIEFTIHRleHRbXSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgdGV4dCAKKy0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QgQ0FTVCAoQ0FTVChiIEFTIGludFtdKSBBUyB0ZXh0W10gREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworIGIgCistLS0KKyAKKygxIHJv dykKKworU0VMRUNUIENBU1QgKENBU1QoYiBBUyBkX25vdGFbXSkgQVMgdGV4dFtdIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKKyBiIAorLS0tCisgCisoMSBy b3cpCisKK1NFTEVDVCBDQVNUIChDQVNUKGUgQVMgaW50W10pIEFTIHRleHRbXSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgZSAKKy0tLQorIAorKDEgcm93 KQorCistLSB0ZXN0IG5lc3RlZCBBcnJheUNvZXJjZUV4cHIgY29uc3RhbnQgZm9sZGluZworU0VM RUNUIENBU1QoJ3thfSc6OnRleHRbXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgaW50NCAKKy0tLS0tLQorIAorKDEgcm93KQorCitTRUxF Q1QgQ0FTVChDQVNUKCd7YX0nOjp0ZXh0W10gQVMgZGF0ZVtdKSBBUyBpbnRbXSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisgaW50NCAKKy0tLS0tLQorIAor KDEgcm93KQorCitTRUxFQ1QgQ0FTVCgoJ3snIHx8IHN1bSgxICsgMikgfHwgJ30nKTo6aW50W10g QVMgaW50W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gKFZBTFVFUyAo MSksICgyKSkgc3ViOworIGludDQgCistLS0tLS0KKyB7Nn0KKygxIHJvdykKKworU0VMRUNUIENB U1QoKCd7JyB8fCBzdW0oMSArIDIpIE9WRVIgKCkgfHwgJ30nKTo6aW50W10gQVMgaW50W10gREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gKFZBTFVFUyAoMSksICgyKSkgc3Vi OworIGludDQgCistLS0tLS0KKyB7Nn0KKyB7Nn0KKygyIHJvd3MpCisKKy0tIHRlc3Qgd2l0aCB1 c2VyLWRlZmluZWQgdHlwZSwgZG9tYWluLCBhcnJheSBvdmVyIGRvbWFpbiwgZG9tYWluIG92ZXIg YXJyYXkKK0NSRUFURSBET01BSU4gZF9pbnQ0MiBhcyBpbnQgY2hlY2sgKHZhbHVlID0gNDIpIE5P VCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX2ludDQyYXJyIGFzIGRfaW50NDJbXTsKK0NSRUFURSBE T01BSU4gZF9pbnQ0MmFycjEgYXMgZF9pbnQ0MmFycjsKK0NSRUFURSBET01BSU4gZF9pbnQ4IGFz IGludDggY2hlY2sgKHZhbHVlID4gMCk7CitDUkVBVEUgRE9NQUlOIGRfaW50OGFyciBhcyBkX2lu dDhbXTsKK0NSRUFURSBET01BSU4gZF9jaGFyM19ub3RfbnVsbCBhcyBjaGFyKDMpIE5PVCBOVUxM OworQ1JFQVRFIERPTUFJTiBkX3ZhcmNoYXIgYXMgdmFyY2hhcigzKSBOT1QgTlVMTDsKK0NSRUFU RSBET01BSU4gZF9pbnRfYXJyIGFzIGludFtdIGNoZWNrICh2YWx1ZSA9ICd7NDEsIDQzfScpIE5P VCBOVUxMOworQ1JFQVRFIFRZUEUgY29tcF9kb21haW5fd2l0aF90eXBtb2QgQVMgKGEgZF9jaGFy M19ub3RfbnVsbCwgYiBpbnQpOworQ1JFQVRFIFRZUEUgY29tcDIgQVMgKGEgZF92YXJjaGFyKTsK K0NSRUFURSBET01BSU4gZF9udW1lcmljIGFzIG51bWVyaWMoNCw0KTsKK1NFTEVDVCBDQVNUKDEu MDo6ZmxvYXQ0IEFTIGRfbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7 CisgZF9udW1lcmljIAorLS0tLS0tLS0tLS0KKyAgICAgICAgICAKKygxIHJvdykKKworU0VMRUNU IENBU1QoJ3sxLjB9JyBBUyBudW1lcmljKDQsMSlbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CisgbnVtZXJpYyAKKy0tLS0tLS0tLQorIHsxLjB9CisoMSByb3cpCisKK1NFTEVD VCBDQVNUKCd7MC4xLCAxLjB9JyBBUyBkX251bWVyaWNbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgZF9udW1lcmljIAorLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VM RUNUIENBU1QoMTEgQVMgZF9pbnQ0MiBERUZBVUxUIDQxIE9OIENPTlZFUlNJT04gRVJST1IpOyAt LSBlcnJvcgorRVJST1I6ICB2YWx1ZSBmb3IgZG9tYWluIGRfaW50NDIgdmlvbGF0ZXMgY2hlY2sg Y29uc3RyYWludCAiZF9pbnQ0Ml9jaGVjayIKK1NFTEVDVCBDQVNUKE5VTEwgQVMgZF9pbnQ0MiBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIGRvbWFp biBkX2ludDQyIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitTRUxFQ1QgQ0FTVCgxMSBBUyBk X2ludDQyIERFRkFVTFQgNDIgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZF9pbnQ0MiAKKy0tLS0t LS0tLQorICAgICAgNDIKKygxIHJvdykKKworU0VMRUNUIENBU1QoTlVMTCBBUyBkX2ludDQyIERF RkFVTFQgNDIgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgZF9pbnQ0MiAKKy0tLS0tLS0tLQorICAg ICAgNDIKKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBk X2ludDggREVGQVVMVCAnMScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCistLS0tLS0t CisgICAgIDEKKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBB UyBkX2ludDhbXSBERUZBVUxUICd7MX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworIGFycmF5IAor LS0tLS0tLQorIHs0Mn0KKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQy YXJyMSBBUyBkX2ludDhhcnIgREVGQVVMVCAnezF9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBh cnJheSAKKy0tLS0tLS0KKyB7NDJ9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyXTo6 ZF9pbnQ0MmFycjEgQVMgZF9pbnQ4YXJyW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworIGFycmF5IAorLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVChBUlJBWVs0 Miw0MV0gQVMgZF9pbnQ0MltdIERFRkFVTFQgJ3s0MiwgNDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyAgYXJyYXkgIAorLS0tLS0tLS0tCisgezQyLDQyfQorKDEgcm93KQorCitTRUxFQ1QgQ0FT VChBUlJBWVs0Miw0MV0gQVMgZF9pbnRfYXJyIERFRkFVTFQgJ3s0MSwgNDN9JyBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyAgYXJyYXkgIAorLS0tLS0tLS0tCisgezQxLDQzfQorKDEgcm93KQorCitT RUxFQ1QgQ0FTVChBUlJBWVs0MiwgNDFdOjpkX2ludDQyYXJyMSBBUyBkX2ludDhhcnIgREVGQVVM VCAnezEsMiwzfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGFycmF5ICAKKy0tLS0tLS0tLQor IHsxLDIsM30KKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJSQVlbNDIsIDQxXSBBUyBkX2ludDQy YXJyMSBERUZBVUxUICd7NDIsIDQyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGFycmF5ICAK Ky0tLS0tLS0tLQorIHs0Miw0Mn0KKygxIHJvdykKKworU0VMRUNUCisgICAgQ0FTVChDQVNUKEFS UkFZW0NBU1QoQVJSQVlbNDIsIDQyXSBBUyBkX2ludDQyYXJyKV0gQVMgZF9pbnQ0MmFycjFbXSkg QVMgZF9pbnQ4YXJyW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgIGFy cmF5ICAgIAorLS0tLS0tLS0tLS0tLQorIHsiezQyLDQyfSJ9CisoMSByb3cpCisKK1NFTEVDVCBD QVNUKCcoTlVMTCknIEFTIGNvbXAyIERFRkFVTFQgJygxMjMyKScgT04gQ09OVkVSU0lPTiBFUlJP Uik7IC0tIGVycm9yCitFUlJPUjogIHZhbHVlIHRvbyBsb25nIGZvciB0eXBlIGNoYXJhY3RlciB2 YXJ5aW5nKDMpCitMSU5FIDE6IFNFTEVDVCBDQVNUKCcoTlVMTCknIEFTIGNvbXAyIERFRkFVTFQg JygxMjMyKScgT04gQ09OVkVSU0lPTi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNUKCcoTlVMTCknIEFTIGNvbXAyIERFRkFVTFQg JygxMjMpJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBjb21wMiAKKy0tLS0tLS0KKyAoMTIzKQor KDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9k IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBjb21wX2RvbWFpbl93aXRoX3R5 cG1vZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENB U1QoJyhOVUxMLDQyKScgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCAnKDEsMikn IE9OIENPTlZFUlNJT04gRVJST1IpOworIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICgiMSAgIiwyKQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgn KE5VTEwsNDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUICcoMTIzNCwyKScg T04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitFUlJPUjogIHZhbHVlIHRvbyBsb25nIGZv ciB0eXBlIGNoYXJhY3RlcigzKQorTElORSAxOiAuLi5TVCgnKE5VTEwsNDIpJyBBUyBjb21wX2Rv bWFpbl93aXRoX3R5cG1vZCBERUZBVUxUICcoMTIzNCwyKScuLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgQ0FT VChST1coTlVMTCw0MikgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIHJl Y29yZCB0byBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCB3aXRoIERFRkFVTFQgZXhwcmVzc2lvbiBp biBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKFJPVyhO VUxMLDQyKSBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUIC4uLgorICAgICAgICAg ICAgICAgICAgICBeCitERVRBSUw6ICBFeHBsaWNpdCBjYXN0IGlzIGRlZmluZWQgYnV0IGRlZmlu aXRpb24gaXMgbm90IGVycm9yIHNhZmUuCistLSB0ZXN0IGFycmF5IGNvZXJjZQorU0VMRUNUIENB U1QoYXJyYXlbJ2EnOjp0ZXh0XSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CisgYXJyYXkgCistLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGFycmF5 WydhJ10gQVMgaW50W10gREVGQVVMVCBBUlJBWVsxXSBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBh cnJheSAKKy0tLS0tLS0KKyB7MX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoYXJyYXlbMTEuMTJd IEFTIGRhdGVbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCist LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGFycmF5WzExMTExMTExMTExMTExMTEx XSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgYXJyYXkgCist LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGFycmF5W1snYWJjJ10sWzQ1Nl1dIEFT IGludFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ3sxMjMsYWJjLDQ1Nn0nIEFTIGludFtdIERF RkFVTFQgJ3stNzg5fScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGludDQgIAorLS0tLS0tLS0K KyB7LTc4OX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJ3syMzQsZGVmLDU2N30nOjp0ZXh0W10g QVMgaW50ZWdlcltdIERFRkFVTFQgJ3stMTAxMX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworICBp bnQ0ICAgCistLS0tLS0tLS0KKyB7LTEwMTF9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKEFSUkFZ W1snMSddLCBbJ3RocmVlJ10sWydhJ11dIEFTIGludFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyB7MSwyfQorKDEgcm93KQorCitTRUxF Q1QgQ0FTVChBUlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJywgJ2EnXV0gQVMgaW50W10gREVGQVVM VCAnezIxLDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgIGFycmF5ICAKKy0tLS0tLS0tLQor IHsyMSwyMn0KKygxIHJvdykKKworLS0gZXJyb3I6IGB0aHJlZSc6OmludGAgd2lsbCBmYWlsIGVh cmxpZXIKK1NFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnOjppbnQsICdhJ11d IEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworRVJST1I6 ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAidGhyZWUiCitMSU5FIDE6 IFNFTEVDVCBDQVNUKEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnOjppbnQsICdhJ11dIEFTIGlu dFtdIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNU IENBU1QoQVJSQVlbMSwgJ3RocmVlJzo6aW50XSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9JyBP TiBDT05WRVJTSU9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5 cGUgaW50ZWdlcjogInRocmVlIgorTElORSAxOiBTRUxFQ1QgQ0FTVChBUlJBWVsxLCAndGhyZWUn OjppbnRdIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0uLi4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gc2FmZSBjYXN0IHdpdGggZ2VvbWV0cnkgZGF0YSB0eXBlCitTRUxFQ1Qg Q0FTVCgnKDEsMiknOjpwb2ludCBBUyBib3ggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworICAgICBib3ggICAgIAorLS0tLS0tLS0tLS0tLQorICgxLDIpLCgxLDIpCisoMSByb3cp CisKK1NFTEVDVCBDQVNUKCdbKE5hTiwxKSwoTmFOLGluZmluaXR5KV0nOjpsc2VnIEFTIHBvaW50 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgcG9pbnQgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0KKyAoTmFOLEluZmluaXR5KQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgn WygxZSszMDAsSW5maW5pdHkpLCgxZSszMDAsSW5maW5pdHkpXSc6OmxzZWcgQVMgcG9pbnQgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgIHBvaW50ICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLQorICgxZSszMDAsSW5maW5pdHkpCisoMSByb3cpCisKK1NFTEVDVCBD QVNUKCdbKDEsMiksKDMsNCldJzo6cGF0aCBhcyBwb2x5Z29uIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKyBwb2x5Z29uIAorLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVD VCBDQVNUKCcoTmFOLDEuMCxOYU4saW5maW5pdHkpJzo6Ym94IEFTIHBvaW50IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgcG9pbnQgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0KKyAoTmFOLEluZmluaXR5KQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKDIuMCwyLjAsMC4w LDAuMCknOjpib3ggQVMgbHNlZyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg ICAgIGxzZWcgICAgICAKKy0tLS0tLS0tLS0tLS0tLQorIFsoMiwyKSwoMCwwKV0KKygxIHJvdykK KworU0VMRUNUIENBU1QoJygyLjAsMi4wLDAuMCwwLjApJzo6Ym94IEFTIHBvbHlnb24gREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgICAgIHBvbHlnb24gICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoKDAsMCksKDAsMiksKDIsMiksKDIsMCkp CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLDIuMCwwLjAsMC4wKSc6OmJveCBBUyBwYXRo IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBwYXRoIAorLS0tLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLGluZmluaXR5LE5hTixpbmZpbml0eSknOjpib3gg QVMgY2lyY2xlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgY2ly Y2xlICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyA8KE5hTixJbmZpbml0eSksTmFO PgorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnKE5hTiwwLjApLCgyLjAsNC4wKSwoMC4wLGluZmlu aXR5KSc6OnBvbHlnb24gQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworICAgICBwb2ludCAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIChOYU4sSW5maW5pdHkpCiso MSByb3cpCisKK1NFTEVDVCBDQVNUKCcoMi4wLDAuMCksKDIuMCw0LjApLCgwLjAsMC4wKSc6OnBv bHlnb24gQVMgcGF0aCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICAg IHBhdGggICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgoMiwwKSwoMiw0KSwoMCww KSkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJygyLjAsMC4wKSwoMi4wLDQuMCksKDAuMCwwLjAp Jzo6cG9seWdvbiBBUyBib3ggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAg ICBib3ggICAgIAorLS0tLS0tLS0tLS0tLQorICgyLDQpLCgwLDApCisoMSByb3cpCisKK1NFTEVD VCBDQVNUKCcoTmFOLGluZmluaXR5KSwoMi4wLDQuMCksKDAuMCxpbmZpbml0eSknOjpwb2x5Z29u IEFTIGNpcmNsZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgIGNp cmNsZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgPChOYU4sSW5maW5pdHkpLE5h Tj4KKygxIHJvdykKKworU0VMRUNUIENBU1QoJzwoNSwxKSwzPic6OmNpcmNsZSBBUyBwb2ludCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgcG9pbnQgCistLS0tLS0tCisgKDUs MSkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzwoMyw1KSwwPic6OmNpcmNsZSBhcyBib3ggREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICBib3ggICAgIAorLS0tLS0tLS0t LS0tLQorICgzLDUpLCgzLDUpCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCc8KDMsNSksMD4nOjpj aXJjbGUgYXMgcG9seWdvbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgcG9s eWdvbiAKKy0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBzYWZlIGNhc3Qgd2l0aCBtb25leSBk YXRhIHR5cGUKKy0tIGNhc3QgZnJvbSBtb25leSB0byBvdGhlciB0eXBlIGlzIG5vdCBlcnJvciBz YWZlCitTRUxFQ1QgQ0FTVCgnMTIzNDU2Nzg5MDEyMzQ1Njc4Jzo6bnVtZXJpYyBBUyBNT05FWSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbW9uZXkgCistLS0tLS0tCisgICAg ICAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzEyMzQ1Njc4OTAxMjM0NTY3OCc6OmludDggQVMg TU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIG1vbmV5IAorLS0tLS0t LQorICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcyMTQ3NDgzNjQ3Jzo6aW50NCBBUyBN T05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgbW9uZXkgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgJDIsMTQ3LDQ4Myw2NDcuMDAKKygxIHJvdykKKwor U0VMRUNUIENBU1QoJy0yMTQ3NDgzNjQ4Jzo6aW50NCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgbW9uZXkgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAtJDIsMTQ3LDQ4Myw2NDguMDAKKygxIHJvdykKKworU0VMRUNUIENBU1QoJy0wJzo6 aW50NCBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbW9uZXkg CistLS0tLS0tCisgJDAuMDAKKygxIHJvdykKKworU0VMRUNUIENBU1QoTlVMTDo6bW9uZXkgQVMg bnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitFUlJPUjogIGNhbm5v dCBjYXN0IHR5cGUgbW9uZXkgdG8gbnVtZXJpYyB3aXRoIERFRkFVTFQgZXhwcmVzc2lvbiBpbiBD QVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitMSU5FIDE6IFNFTEVDVCBDQVNUKE5VTEw6Om1v bmV5IEFTIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJTy4uLgorICAgICAgICAgICAg ICAgICAgICBeCitERVRBSUw6ICBFeHBsaWNpdCBjYXN0IGlzIGRlZmluZWQgYnV0IGRlZmluaXRp b24gaXMgbm90IGVycm9yIHNhZmUuCitTRUxFQ1QgQ0FTVChOVUxMOjptb25leVtdIEFTIG51bWVy aWNbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitFUlJPUjogIGNhbm5vdCBj YXN0IHR5cGUgbW9uZXlbXSB0byBudW1lcmljW10gd2l0aCBERUZBVUxUIGV4cHJlc3Npb24gaW4g Q0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgorTElORSAxOiBTRUxFQ1QgQ0FTVChOVUxMOjpt b25leVtdIEFTIG51bWVyaWNbXSBERUZBVUxUIE5VTEwgT04gQ09OVkUuLi4KKyAgICAgICAgICAg ICAgICAgICAgXgorREVUQUlMOiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVkIGJ1dCBkZWZpbml0 aW9uIGlzIG5vdCBlcnJvciBzYWZlLgorLS0gc2FmZSBjYXN0IGZyb20gYm9vbGVhbiB0eXBlIHRv IG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUKHRydWUgQVMgbnVtZXJpYyBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbnVtZXJpYyAKKy0tLS0tLS0tLQorICAgICAgICAK KygxIHJvdykKKworU0VMRUNUIENBU1QoZmFsc2UgQVMgaW50IERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKyBpbnQ0IAorLS0tLS0tCisgICAgMAorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVChmYWxzZSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyB0 ZXh0ICAKKy0tLS0tLS0KKyBmYWxzZQorKDEgcm93KQorCistLSBzYWZlIGNhc3QgZnJvbSBieXRl YSB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUICgnXHgxMTIyMzM0NDU1NjY3 Nzg4OTknOjpieXRlYSBBUyBpbnQ4IERFRkFVTFQgMTkgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg aW50OCAKKy0tLS0tLQorICAgMTkKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1x4MTIzNDU2Nzg5 QSc6OmJ5dGVhIEFTIGludDQgREVGQVVMVCAyMCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ0 IAorLS0tLS0tCisgICAyMAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnXHgxMjM0NTYnOjpieXRl YSBBUyBpbnQyIERFRkFVTFQgMjEgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgaW50MiAKKy0tLS0t LQorICAgMjEKKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1x4MTIzNDU2Nzg5MGFiY2RlZic6OmJ5 dGVhIEFTIHV1aWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIHV1aWQgCist LS0tLS0KKyAKKygxIHJvdykKKworLS0gc2FmZSBjYXN0IGZyb20gdXVpZCB0eXBlIHRvIG90aGVy IGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUKCc1YjM1MzgwYS03MTQzLTQ5MTItOWI1NS1mMzIyNjk5 YzY3NzAnOjp1dWlkIEFTIGJ5dGVhIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsK KyAgICAgICAgICAgICAgIGJ5dGVhICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgXHg1YjM1MzgwYTcxNDM0OTEyOWI1NWYzMjI2OTljNjc3MAor KDEgcm93KQorCistLSBzYWZlIGNhc3QgcmVsYXRlZCB0byBuZXR3b3JrIGFkZHJlc3MgZGF0YSB0 eXBlCitTRUxFQ1QgQ0FTVCgnMTkyLjE2OC4xLngnIGFzIGluZXQgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworIGluZXQgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENB U1QoJzE5Mi4xNjguMS4yLzMwJyBhcyBjaWRyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKKyBjaWRyIAorLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcyMjowMDo1 YzowODo1NTowODowMTowMic6Om1hY2FkZHI4IGFzIG1hY2FkZHIgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworIG1hY2FkZHIgCistLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0g c2FmZSBjYXN0IGZyb20gYml0IHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcworU0VMRUNUIENBU1Qo JzExMTExMTExMTEwMDAwMSc6OmJpdCgxMDApIEFTIElOVCBERUZBVUxUIDIyIE9OIENPTlZFUlNJ T04gRVJST1IpOworIGludDQgCistLS0tLS0KKyAgIDIyCisoMSByb3cpCisKK1NFTEVDVCBDQVNU ICgnMTExMTExMTExMTAwMDAxJzo6Yml0KDEwMCkgQVMgSU5UOCBERUZBVUxUIDIzIE9OIENPTlZF UlNJT04gRVJST1IpOworIGludDggCistLS0tLS0KKyAgIDIzCisoMSByb3cpCisKKy0tIHNhZmUg Y2FzdCByZWxhdGVkIHRvIG9pZCBkYXRhIHR5cGUKK1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTAxOjpi aWdpbnQgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBvaWQgCist LS0tLQorICAgIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkwMTo6YmlnaW50IEFT IHJlZ3Byb2MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIHJlZ3Byb2MgCist LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDE6OmJpZ2ludCBB UyByZWdwcm9jZWR1cmUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworIHJlZ3By b2NlZHVyZSAKKy0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKDEyMzQ1 Njc4OTAxOjpiaWdpbnQgQVMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworIHJlZ2NsYXNzIAorLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgx MjM0NTY3ODkwOjpiaWdpbnQgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKyAgICBvaWQgICAgIAorLS0tLS0tLS0tLS0tCisgMTIzNDU2Nzg5MAorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgxMjM0NTY3ODkwOjpiaWdpbnQgQVMgcmVncm9sZSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CisgIHJlZ3JvbGUgICAKKy0tLS0tLS0tLS0tLQorIDEyMzQ1Njc4 OTAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDo6YmlnaW50IEFTIHJlZ25hbWVz cGFjZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgcmVnbmFtZXNwYWNlIAor LS0tLS0tLS0tLS0tLS0KKyAxMjM0NTY3ODkwCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKDEyMzQ1 Njc4OTA6OmJpZ2ludCBBUyByZWdkYXRhYmFzZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CisgcmVnZGF0YWJhc2UgCistLS0tLS0tLS0tLS0tCisgMTIzNDU2Nzg5MAorKDEgcm93 KQorCistLSBzYWZlIGNhc3QgZnJvbSB0ZXh0IHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcworU0VM RUNUIENBU1QoJ2EuYi5jLmQnOjp0ZXh0IGFzIHJlZ2NsYXNzIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKTsKKyByZWdjbGFzcyAKKy0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworQ1JF QVRFIFRBQkxFIHRlc3Rfc2FmZWNhc3QwKGNvbDAgdGV4dCwgY29sMSBqc29uYik7CitJTlNFUlQg SU5UTyB0ZXN0X3NhZmVjYXN0MCBWQUxVRVMgKCc8dmFsdWU+b25lPC92YWx1ZScsICcidGVzdCIn KTsKK1NFTEVDVCBjb2wwIGFzIHRleHQsCisgICAgICAgQ0FTVChjb2wwIEFTIHJlZ2NsYXNzIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19yZWdjbGFzcywKKyAgICAgICBD QVNUKGNvbDAgQVMgcmVnY2xhc3MgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIElT IE5VTEwgYXMgZXhwZWN0X3RydWUsCisgICAgICAgQ0FTVChjb2wwIEFTICJjaGFyIiAgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2NoYXIsCisgICAgICAgQ0FTVChjb2ww IEFTIG5hbWUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX25hbWUKK0ZS T00gdGVzdF9zYWZlY2FzdDA7CisgICAgICAgdGV4dCAgICAgICAgfCB0b19yZWdjbGFzcyB8IGV4 cGVjdF90cnVlIHwgdG9fY2hhciB8ICAgICAgdG9fbmFtZSAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0KKyA8dmFsdWU+b25lPC92YWx1ZSB8ICAgICAgICAgICAgIHwgdCAgICAgICAgICAgfCA8 ICAgICAgIHwgPHZhbHVlPm9uZTwvdmFsdWUKKygxIHJvdykKKworLS0gc2FmZSB0eXBlIGNhc3Qg Zm9yIGpzb25iIGRhdGEgdHlwZQorU0VMRUNUIGNvbDEgYXMganNvbmIsCisgICAgICAgQ0FTVChj b2wxIEFTIGludGVnZXIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2lu dGVnZXIsCisgICAgICAgQ0FTVChjb2wxIEFTIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wxIEFTIGJpZ2ludCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNU KGNvbDEgQVMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19m bG9hdDQsCisgICAgICAgQ0FTVChjb2wxIEFTIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAgIENBU1QoY29sMSBBUyBib29sZWFuIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19ib29sLAorICAgICAgIENBU1Qo Y29sMSBBUyBzbWFsbGludCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f c21hbGxpbnQKK0ZST00gdGVzdF9zYWZlY2FzdDA7CisganNvbmIgIHwgdG9faW50ZWdlciB8IHRv X251bWVyaWMgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgdG9fZmxvYXQ4IHwgdG9fYm9vbCB8IHRv X3NtYWxsaW50IAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyAidGVzdCIg fCAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAg ICAgfCAgICAgICAgIHwgICAgICAgICAgICAKKygxIHJvdykKKworLS0gdGVzdCBDQVNUIERFRkFV TFQgZXhwcmVzc2lvbiBtdXRhYmlsaXR5CitDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9pZHggT04g dGVzdF9zYWZlY2FzdDAoKENBU1QoY29sMSBhcyBpbnQgREVGQVVMVCByYW5kb20obWluPT4xLCBt YXg9PjEpIE9OIENPTlZFUlNJT04gRVJST1IpKSk7IC0tIGVycm9yCitFUlJPUjogIGZ1bmN0aW9u cyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorTElORSAxOiBD UkVBVEUgSU5ERVggY2FzdF9lcnJvcl9pZHggT04gdGVzdF9zYWZlY2FzdDAoKENBU1QoY29sMSBh cyAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MCgoQ0FT VChjb2wxIGFzIHhpZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikpKTsgLS0gZXJy b3IKK0VSUk9SOiAgZGF0YSB0eXBlIHhpZCBoYXMgbm8gZGVmYXVsdCBvcGVyYXRvciBjbGFzcyBm b3IgYWNjZXNzIG1ldGhvZCAiYnRyZWUiCitISU5UOiAgWW91IG11c3Qgc3BlY2lmeSBhbiBvcGVy YXRvciBjbGFzcyBmb3IgdGhlIGluZGV4IG9yIGRlZmluZSBhIGRlZmF1bHQgb3BlcmF0b3IgY2xh c3MgZm9yIHRoZSBkYXRhIHR5cGUuCitDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9pZHggT04gdGVz dF9zYWZlY2FzdDAoKENBU1QoY29sMSBhcyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpKSk7IC0tIG9rCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKCdjYXN0X2Vycm9yX2lkeCc6 OnJlZ2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IENSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiBwdWJsaWMudGVzdF9zYWZlY2FzdDAgVVNJ TkcgYnRyZWUgKChDQVNUKGNvbDEgQVMgaW50ZWdlciBERUZBVUxUIE5VTEw6OmludGVnZXIgT04g Q09OVkVSU0lPTiBFUlJPUikpKQorKDEgcm93KQorCistLSBzYWZlIGNhc3QgYmV0d2VlZW4gcmFu Z2UgZGF0YSB0eXBlcworU0VMRUNUIENBU1QoJ1sxLDJdJzo6aW50NHJhbmdlIEFTIGludDRtdWx0 aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBpbnQ0bXVsdGlyYW5n ZSAKKy0tLS0tLS0tLS0tLS0tLS0KKyB7WzEsMyl9CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdb MSwyXSc6OmludDhyYW5nZSBBUyBpbnQ4bXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CisgaW50OG11bHRpcmFuZ2UgCistLS0tLS0tLS0tLS0tLS0tCisge1sxLDMp fQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnWzEsMl0nOjpudW1yYW5nZSAgQVMgbnVtbXVsdGly YW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgbnVtbXVsdGlyYW5nZSAK Ky0tLS0tLS0tLS0tLS0tLQorIHtbMSwyXX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoJ1staW5m aW5pdHksaW5maW5pdHldJzo6ZGF0ZXJhbmdlIEFTIGRhdGVtdWx0aXJhbmdlIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgZGF0ZW11bHRpcmFuZ2UgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisge1staW5maW5pdHksaW5maW5pdHldfQorKDEgcm93KQorCitT RUxFQ1QgQ0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjp0c3JhbmdlIEFTIHRzbXVsdGlyYW5n ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgICAgICB0c211bHRpcmFuZ2Ug ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHtbLWluZmluaXR5LGluZmluaXR5XX0K KygxIHJvdykKKworU0VMRUNUIENBU1QoJ1staW5maW5pdHksaW5maW5pdHldJzo6dHN0enJhbmdl IEFTIHRzdHptdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAg ICAgdHN0em11bHRpcmFuZ2UgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge1staW5m aW5pdHksaW5maW5pdHldfQorKDEgcm93KQorCistLSBzYWZlIGNhc3QgYmV0d2VlZW4gbnVtZXJp YyBkYXRhIHR5cGVzCitDUkVBVEUgVEFCTEUgdGVzdF9zYWZlY2FzdDEoCisgIGNvbDEgZmxvYXQ0 LCBjb2wyIGZsb2F0OCwgY29sMyBudW1lcmljLCBjb2w0IG51bWVyaWNbXSwKKyAgY29sNSBpbnQy IGRlZmF1bHQgMzI3NjcsCisgIGNvbDYgaW50NCBkZWZhdWx0IDMyNzY4LAorICBjb2w3IGludDgg ZGVmYXVsdCA0Mjk0OTY3Mjk2KTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVFUygn MTEuMTIzNCcsICcxMS4xMjM0JywgJzkyMjMzNzIwMzY4NTQ3NzU4MDgnLCAnezExLjEyMzR9Jzo6 bnVtZXJpY1tdKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVFUygnaW5mJywgJ2lu ZicsICdpbmYnLCAnezExLjEyMzQsIDEyLCBpbmYsIE5hTn0nOjpudW1lcmljW10pOworSU5TRVJU IElOVE8gdGVzdF9zYWZlY2FzdDEgVkFMVUVTKCctaW5mJywgJy1pbmYnLCAnLWluZicsICd7MTEu MTIzNCwgMTIsIC1pbmYsIE5hTn0nOjpudW1lcmljW10pOworSU5TRVJUIElOVE8gdGVzdF9zYWZl Y2FzdDEgVkFMVUVTKCdOYU4nLCAnTmFOJywgJ05hTicsICd7MTEuMTIzNCwgMTIsIC1pbmYsIE5h Tn0nOjpudW1lcmljW10pOworU0VMRUNUIGNvbDUgYXMgaW50MiwKKyAgICAgICBDQVNUKGNvbDUg QVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAg ICAgICBDQVNUKGNvbDUgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDUgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2w1IGFzIGludDggREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2w1 IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0 LAorICAgICAgIENBU1QoY29sNSBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDUgYXMgbnVtZXJpYyBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNv bDUgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyBpbnQyICB8IHRvX2ludDIg fCB0b19pbnQ0IHwgdG9fb2lkIHwgdG9faW50OCB8IHRvX2Zsb2F0NCB8IHRvX2Zsb2F0OCB8IHRv X251bWVyaWMgfCB0b19udW1lcmljX3NjYWxlIAorLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgMzI3NjcgfCAgIDMyNzY3IHwgICAzMjc2NyB8ICAzMjc2NyB8 ICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgIDMyNzY3IHwgICAgICAgICAg MzI3NjcuMAorIDMyNzY3IHwgICAzMjc2NyB8ICAgMzI3NjcgfCAgMzI3NjcgfCAgIDMyNzY3IHwg ICAgIDMyNzY3IHwgICAgIDMyNzY3IHwgICAgICAzMjc2NyB8ICAgICAgICAgIDMyNzY3LjAKKyAz Mjc2NyB8ICAgMzI3NjcgfCAgIDMyNzY3IHwgIDMyNzY3IHwgICAzMjc2NyB8ICAgICAzMjc2NyB8 ICAgICAzMjc2NyB8ICAgICAgMzI3NjcgfCAgICAgICAgICAzMjc2Ny4wCisgMzI3NjcgfCAgIDMy NzY3IHwgICAzMjc2NyB8ICAzMjc2NyB8ICAgMzI3NjcgfCAgICAgMzI3NjcgfCAgICAgMzI3Njcg fCAgICAgIDMyNzY3IHwgICAgICAgICAgMzI3NjcuMAorKDQgcm93cykKKworU0VMRUNUIGNvbDYg YXMgaW50NCwKKyAgICAgICBDQVNUKGNvbDYgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDYgQVMgaW50NCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDYg QVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAg ICAgQ0FTVChjb2w2IGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2ludDgsCisgICAgICAgQ0FTVChjb2w2IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sNiBhcyBmbG9hdDgg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBD QVNUKGNvbDYgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDYgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3Nh ZmVjYXN0MTsKKyBpbnQ0ICB8IHRvX2ludDIgfCB0b19pbnQ0IHwgdG9fb2lkIHwgdG9faW50OCB8 IHRvX2Zsb2F0NCB8IHRvX2Zsb2F0OCB8IHRvX251bWVyaWMgfCB0b19udW1lcmljX3NjYWxlIAor LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgMzI3NjggfCAg ICAgICAgIHwgICAzMjc2OCB8ICAzMjc2OCB8ICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAgMzI3 NjggfCAgICAgIDMyNzY4IHwgICAgICAgICAgMzI3NjguMAorIDMyNzY4IHwgICAgICAgICB8ICAg MzI3NjggfCAgMzI3NjggfCAgIDMyNzY4IHwgICAgIDMyNzY4IHwgICAgIDMyNzY4IHwgICAgICAz Mjc2OCB8ICAgICAgICAgIDMyNzY4LjAKKyAzMjc2OCB8ICAgICAgICAgfCAgIDMyNzY4IHwgIDMy NzY4IHwgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAzMjc2OCB8ICAgICAgMzI3NjggfCAgICAg ICAgICAzMjc2OC4wCisgMzI3NjggfCAgICAgICAgIHwgICAzMjc2OCB8ICAzMjc2OCB8ICAgMzI3 NjggfCAgICAgMzI3NjggfCAgICAgMzI3NjggfCAgICAgIDMyNzY4IHwgICAgICAgICAgMzI3Njgu MAorKDQgcm93cykKKworU0VMRUNUIGNvbDcgYXMgaW50OCwKKyAgICAgICBDQVNUKGNvbDcgQVMg aW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAg ICBDQVNUKGNvbDcgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9faW50NCwKKyAgICAgICBDQVNUKGNvbDcgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2w3IGFzIGludDggREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2w3IGFz IGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAor ICAgICAgIENBU1QoY29sNyBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDcgYXMgbnVtZXJpYyBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDcg YXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f bnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKyAgICBpbnQ4ICAgIHwgdG9faW50 MiB8IHRvX2ludDQgfCB0b19vaWQgfCAgdG9faW50OCAgIHwgIHRvX2Zsb2F0NCAgfCB0b19mbG9h dDggIHwgdG9fbnVtZXJpYyB8IHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIDQyOTQ5NjcyOTYgfCAgICAg ICAgIHwgICAgICAgICB8ICAgICAgICB8IDQyOTQ5NjcyOTYgfCA0LjI5NDk3ZSswOSB8IDQyOTQ5 NjcyOTYgfCA0Mjk0OTY3Mjk2IHwgICAgICAgICAgICAgICAgIAorIDQyOTQ5NjcyOTYgfCAgICAg ICAgIHwgICAgICAgICB8ICAgICAgICB8IDQyOTQ5NjcyOTYgfCA0LjI5NDk3ZSswOSB8IDQyOTQ5 NjcyOTYgfCA0Mjk0OTY3Mjk2IHwgICAgICAgICAgICAgICAgIAorIDQyOTQ5NjcyOTYgfCAgICAg ICAgIHwgICAgICAgICB8ICAgICAgICB8IDQyOTQ5NjcyOTYgfCA0LjI5NDk3ZSswOSB8IDQyOTQ5 NjcyOTYgfCA0Mjk0OTY3Mjk2IHwgICAgICAgICAgICAgICAgIAorIDQyOTQ5NjcyOTYgfCAgICAg ICAgIHwgICAgICAgICB8ICAgICAgICB8IDQyOTQ5NjcyOTYgfCA0LjI5NDk3ZSswOSB8IDQyOTQ5 NjcyOTYgfCA0Mjk0OTY3Mjk2IHwgICAgICAgICAgICAgICAgIAorKDQgcm93cykKKworU0VMRUNU IGNvbDMgYXMgbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDMgQVMgaW50MiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDMgQVMgaW50 NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBD QVNUKGNvbDMgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19v aWQsCisgICAgICAgQ0FTVChjb2wzIGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wzIGFzIGZsb2F0NCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sMyBh cyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwK KyAgICAgICBDQVNUKGNvbDMgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDMgYXMgbnVtZXJpYygxMCwxKSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJP TSB0ZXN0X3NhZmVjYXN0MTsKKyAgICAgICBudW1lcmljICAgICAgIHwgdG9faW50MiB8IHRvX2lu dDQgfCB0b19vaWQgfCB0b19pbnQ4IHwgIHRvX2Zsb2F0NCAgfCAgICAgIHRvX2Zsb2F0OCAgICAg ICB8ICAgICB0b19udW1lcmljICAgICAgfCB0b19udW1lcmljX3NjYWxlIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgOTIyMzM3MjAzNjg1NDc3NTgwOCB8ICAgICAgICAgfCAgICAgICAgIHwg ICAgICAgIHwgICAgICAgICB8IDkuMjIzMzdlKzE4IHwgOS4yMjMzNzIwMzY4NTQ3OGUrMTggfCA5 MjIzMzcyMDM2ODU0Nzc1ODA4IHwgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgSW5maW5p dHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICBJbmZpbml0eSB8 ICAgICAgICAgICAgIEluZmluaXR5IHwgICAgICAgICAgICBJbmZpbml0eSB8ICAgICAgICAgICAg ICAgICAKKyAgICAgICAgICAgLUluZmluaXR5IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAg fCAgICAgICAgIHwgICAtSW5maW5pdHkgfCAgICAgICAgICAgIC1JbmZpbml0eSB8ICAgICAgICAg ICAtSW5maW5pdHkgfCAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgIE5hTiB8ICAg ICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgTmFOIHwgICAgICAg ICAgICAgICAgICBOYU4gfCAgICAgICAgICAgICAgICAgTmFOIHwgICAgICAgICAgICAgIE5hTgor KDQgcm93cykKKworU0VMRUNUIGNvbDQgYXMgbnVtX2FyciwKKyAgICAgICBDQVNUKGNvbDQgQVMg aW50MltdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBpbnQyYXJyLAorICAg ICAgIENBU1QoY29sNCBBUyBpbnQ0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIGludDRhcnIsCisgICAgICAgQ0FTVChjb2w0IGFzIGludDhbXSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgaW50OGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgZmxvYXQ0 W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGY0YXJyLAorICAgICAgIENB U1QoY29sNCBhcyBmbG9hdDhbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg ZjhhcnIsCisgICAgICAgQ0FTVChjb2w0IGFzIG51bWVyaWMoMTAsMSlbXSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgbnVtYXJyCitGUk9NIHRlc3Rfc2FmZWNhc3QxOworICAg ICAgICAgIG51bV9hcnIgICAgICAgICAgIHwgaW50MmFyciB8IGludDRhcnIgfCBpbnQ4YXJyIHwg ICAgICAgICAgIGY0YXJyICAgICAgICAgICAgfCAgICAgICAgICAgZjhhcnIgICAgICAgICAgICB8 IG51bWFyciAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgezExLjEyMzR9ICAgICAgICAgICAgICAgICAgfCB7MTF9 ICAgIHwgezExfSAgICB8IHsxMX0gICAgfCB7MTEuMTIzNH0gICAgICAgICAgICAgICAgICB8IHsx MS4xMjM0fSAgICAgICAgICAgICAgICAgIHwgezExLjF9CisgezExLjEyMzQsMTIsSW5maW5pdHks TmFOfSAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCB7MTEuMTIzNCwxMixJbmZpbml0 eSxOYU59ICB8IHsxMS4xMjM0LDEyLEluZmluaXR5LE5hTn0gIHwgCisgezExLjEyMzQsMTIsLUlu ZmluaXR5LE5hTn0gfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCB7MTEuMTIzNCwxMiwt SW5maW5pdHksTmFOfSB8IHsxMS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwgCisgezExLjEyMzQs MTIsLUluZmluaXR5LE5hTn0gfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCB7MTEuMTIz NCwxMiwtSW5maW5pdHksTmFOfSB8IHsxMS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwgCisoNCBy b3dzKQorCitTRUxFQ1QgY29sMSBhcyBmbG9hdDQsCisgICAgICAgQ0FTVChjb2wxIEFTIGludDIg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FT VChjb2wxIEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2lu dDQsCisgICAgICAgQ0FTVChjb2wxIEFTIG9pZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sMSBhcyBpbnQ4IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAgIENBU1QoY29sMSBhcyBmbG9h dDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAg ICBDQVNUKGNvbDEgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wxIGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAgICAgQ0FTVChjb2wxIGFzIG51 bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVy aWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisgIGZsb2F0NCAgIHwgdG9faW50MiB8IHRv X2ludDQgfCB0b19vaWQgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgICAgdG9fZmxvYXQ4ICAgICB8 IHRvX251bWVyaWMgfCB0b19udW1lcmljX3NjYWxlIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgIDExLjEyMzQgfCAgICAgIDExIHwg ICAgICAxMSB8ICAgICAgICB8ICAgICAgMTEgfCAgIDExLjEyMzQgfCAxMS4xMjMzOTk3MzQ0OTcx IHwgICAgMTEuMTIzNCB8ICAgICAgICAgICAgIDExLjEKKyAgSW5maW5pdHkgfCAgICAgICAgIHwg ICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgSW5maW5pdHkgfCAgICAgICAgIEluZmluaXR5 IHwgICBJbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAtSW5maW5pdHkgfCAgICAgICAgIHwg ICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAtSW5maW5pdHkgfCAgICAgICAgLUluZmluaXR5 IHwgIC1JbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAgICAgICBOYU4gfCAgICAgICAgIHwg ICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICBOYU4gfCAgICAgICAgICAgICAgTmFO IHwgICAgICAgIE5hTiB8ICAgICAgICAgICAgICBOYU4KKyg0IHJvd3MpCisKK1NFTEVDVCBjb2wy IGFzIGZsb2F0OCwKKyAgICAgICBDQVNUKGNvbDIgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDIgQVMgaW50NCBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNv bDIgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisg ICAgICAgQ0FTVChjb2wyIGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wyIGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sMiBhcyBmbG9h dDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAg ICBDQVNUKGNvbDIgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDIgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0 X3NhZmVjYXN0MTsKKyAgZmxvYXQ4ICAgfCB0b19pbnQyIHwgdG9faW50NCB8IHRvX29pZCB8IHRv X2ludDggfCB0b19mbG9hdDQgfCB0b19mbG9hdDggfCB0b19udW1lcmljIHwgdG9fbnVtZXJpY19z Y2FsZSAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyAgIDExLjEyMzQgfCAgICAgIDExIHwgICAgICAxMSB8ICAgICAgICB8ICAgICAgMTEgfCAgIDEx LjEyMzQgfCAgIDExLjEyMzQgfCAgICAxMS4xMjM0IHwgICAgICAgICAgICAgMTEuMQorICBJbmZp bml0eSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8ICBJbmZpbml0eSB8 ICBJbmZpbml0eSB8ICAgSW5maW5pdHkgfCAgICAgICAgICAgICAgICAgCisgLUluZmluaXR5IHwg ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwgLUluZmluaXR5IHwgLUluZmlu aXR5IHwgIC1JbmZpbml0eSB8ICAgICAgICAgICAgICAgICAKKyAgICAgICBOYU4gfCAgICAgICAg IHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICBOYU4gfCAgICAgICBOYU4gfCAg ICAgICAgTmFOIHwgICAgICAgICAgICAgIE5hTgorKDQgcm93cykKKworLS0gc2FmZSB0eXBlIGNh c3QgZm9yIHR5cGUgZGF0ZS90aW1lc3RhbXAvdGltZXN0YW1wdHovaW50ZXJ2YWwKK0NSRUFURSBU QUJMRSB0ZXN0X3NhZmVjYXN0MigKKyAgY29sMCBkYXRlLCBjb2wxIHRpbWVzdGFtcCwgY29sMiB0 aW1lc3RhbXB0eiwKKyAgY29sMyBpbnRlcnZhbCwgY29sNCB0aW1lLCBjb2w1IHRpbWV0eik7CitJ TlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MiBWQUxVRVMKKygnLWluZmluaXR5JywgJy1pbmZpbml0 eScsICctaW5maW5pdHknLCAnLWluZmluaXR5JywKKyAgJzIwMDMtMDMtMDcgMTU6MzY6MzkgQW1l cmljYS9OZXdfWW9yaycsICcyMDAzLTA3LTA3IDE1OjM2OjM5IEFtZXJpY2EvTmV3X1lvcmsnKSwK KygnLWluZmluaXR5JywgJ2luZmluaXR5JywgJ2luZmluaXR5JywgJ2luZmluaXR5JywgJzExOjU5 OjU5Ljk5IFBNJywgJzExOjU5OjU5Ljk5IFBNIFBEVCcpOworU0VMRUNUIGNvbDAgYXMgZGF0ZSwK KyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXN0YW1wdHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMCBBUyBkYXRlIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRlLAorICAgICAgIENBU1Qo Y29sMCBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1l cywKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wwIEFTIHRpbWVzdGFtcCgyKSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wX3NjYWxlCitG Uk9NIHRlc3Rfc2FmZWNhc3QyOworICAgZGF0ZSAgICB8IHRvX3RpbWVzdGFtcHR6IHwgIHRvX2Rh dGUgIHwgdG9fdGltZXMgfCB0b190aW1ldHogfCB0b190aW1lc3RhbXBfc2NhbGUgCistLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtaW5maW5pdHkgfCAtaW5maW5pdHkgICAgICB8IC1pbmZp bml0eSB8ICAgICAgICAgIHwgICAgICAgICAgIHwgLWluZmluaXR5CisgLWluZmluaXR5IHwgLWlu ZmluaXR5ICAgICAgfCAtaW5maW5pdHkgfCAgICAgICAgICB8ICAgICAgICAgICB8IC1pbmZpbml0 eQorKDIgcm93cykKKworU0VMRUNUIGNvbDEgYXMgdGltZXN0YW1wLAorICAgICAgIENBU1QoY29s MSBBUyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f dGltZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wxIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wxIEFTIHRpbWUgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1Qo Y29sMSBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3Rp bWV0eiwKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2Fz dDI7CisgdGltZXN0YW1wIHwgdG9fdGltZXN0YW1wdHogfCAgdG9fZGF0ZSAgfCB0b190aW1lcyB8 IHRvX3RpbWV0eiB8IHRvX3RpbWVzdGFtcF9zY2FsZSAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLQorIC1pbmZpbml0eSB8IC1pbmZpbml0eSAgICAgIHwgLWluZmluaXR5IHwgICAgICAgICAg fCAgICAgICAgICAgfCAtaW5maW5pdHkKKyBpbmZpbml0eSAgfCBpbmZpbml0eSAgICAgICB8IGlu ZmluaXR5ICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgaW5maW5pdHkKKygyIHJvd3MpCisKK1NF TEVDVCBjb2wyIGFzIHRpbWVzdGFtcHR6LAorICAgICAgIENBU1QoY29sMiBBUyB0aW1lc3RhbXB0 eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXN0YW1wdHosCisg ICAgICAgQ0FTVChjb2wyIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wyIEFTIHRpbWUgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29sMiBBUyB0aW1ldHog REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAgICAgICBD QVNUKGNvbDIgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyB0b190aW1lc3RhbXBfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisgdGltZXN0YW1w dHogfCB0b190aW1lc3RhbXB0eiB8ICB0b19kYXRlICB8IHRvX3RpbWVzIHwgdG9fdGltZXR6IHwg dG9fdGltZXN0YW1wX3NjYWxlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtaW5m aW5pdHkgICB8IC1pbmZpbml0eSAgICAgIHwgLWluZmluaXR5IHwgICAgICAgICAgfCAgICAgICAg ICAgfCAtaW5maW5pdHkKKyBpbmZpbml0eSAgICB8IGluZmluaXR5ICAgICAgIHwgaW5maW5pdHkg IHwgICAgICAgICAgfCAgICAgICAgICAgfCBpbmZpbml0eQorKDIgcm93cykKKworU0VMRUNUIGNv bDMgYXMgaW50ZXJ2YWwsCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWVzdGFtcHR6IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXB0eiwKKyAgICAgICBDQVNU KGNvbDMgQVMgZGF0ZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZGF0 ZSwKKyAgICAgICBDQVNUKGNvbDMgQVMgdGltZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fdGltZXMsCisgICAgICAgQ0FTVChjb2wzIEFTIHRpbWV0eiBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6LAorICAgICAgIENBU1QoY29sMyBB UyB0aW1lc3RhbXAoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3Rp bWVzdGFtcF9zY2FsZSwKKyAgICAgICBDQVNUKGNvbDMgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsX3NjYWxlCitGUk9NIHRlc3Rf c2FmZWNhc3QyOworIGludGVydmFsICB8IHRvX3RpbWVzdGFtcHR6IHwgdG9fZGF0ZSB8IHRvX3Rp bWVzIHwgdG9fdGltZXR6IHwgdG9fdGltZXN0YW1wX3NjYWxlIHwgdG9faW50ZXJ2YWxfc2NhbGUg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtaW5maW5p dHkgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICB8IC1pbmZpbml0eQorIGluZmluaXR5ICB8ICAgICAgICAgICAgICAg IHwgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwg aW5maW5pdHkKKygyIHJvd3MpCisKK1NFTEVDVCBjb2w0IGFzIHRpbWUsCisgICAgICAgQ0FTVChj b2w0IEFTIHRpbWUoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3Rp bWVzLAorICAgICAgIENBU1QoY29sNCBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIElTIE5PVCBOVUxMIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDQgQVMg aW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVy dmFsLAorICAgICAgIENBU1QoY29sNCBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7 CisgICAgdGltZSAgICAgfCAgdG9fdGltZXMgICB8IHRvX3RpbWV0eiB8ICAgICAgICAgIHRvX2lu dGVydmFsICAgICAgICAgIHwgICAgICAgdG9faW50ZXJ2YWxfc2NhbGUgICAgICAgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMTU6MzY6MzkgICAgfCAx NTozNjozOSAgICB8IHQgICAgICAgICB8IEAgMTUgaG91cnMgMzYgbWlucyAzOSBzZWNzICAgIHwg QCAxNSBob3VycyAzNiBtaW5zIDM5IHNlY3MKKyAyMzo1OTo1OS45OSB8IDIzOjU5OjU5Ljk5IHwg dCAgICAgICAgIHwgQCAyMyBob3VycyA1OSBtaW5zIDU5Ljk5IHNlY3MgfCBAIDIzIGhvdXJzIDU5 IG1pbnMgNTkuOTkgc2VjcworKDIgcm93cykKKworU0VMRUNUIGNvbDUgYXMgdGltZXR6LAorICAg ICAgIENBU1QoY29sNSBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b190aW1lLAorICAgICAgIENBU1QoY29sNSBBUyB0aW1lKDIpIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lX3NjYWxlLAorICAgICAgIENBU1QoY29sNSBBUyB0 aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0eiwKKyAg ICAgICBDQVNUKGNvbDUgQVMgdGltZXR6KDYpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b190aW1ldHpfc2NhbGUsCisgICAgICAgQ0FTVChjb2w1IEFTIGludGVydmFsIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbCwKKyAgICAgICBD QVNUKGNvbDUgQVMgaW50ZXJ2YWwoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IGFzIHRvX2ludGVydmFsX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworICAgICB0aW1ldHog ICAgIHwgICB0b190aW1lICAgfCB0b190aW1lX3NjYWxlIHwgICB0b190aW1ldHogICAgfCB0b190 aW1ldHpfc2NhbGUgfCB0b19pbnRlcnZhbCB8IHRvX2ludGVydmFsX3NjYWxlIAorLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIDE1OjM2 OjM5LTA0ICAgIHwgMTU6MzY6MzkgICAgfCAxNTozNjozOSAgICAgIHwgMTU6MzY6MzktMDQgICAg fCAxNTozNjozOS0wNCAgICAgfCAgICAgICAgICAgICB8IAorIDIzOjU5OjU5Ljk5LTA3IHwgMjM6 NTk6NTkuOTkgfCAyMzo1OTo1OS45OSAgIHwgMjM6NTk6NTkuOTktMDcgfCAyMzo1OTo1OS45OS0w NyAgfCAgICAgICAgICAgICB8IAorKDIgcm93cykKKworLS0gdGVzdCBkZXBhcnNlCitTRVQgZGF0 ZXN0eWxlIFRPIElTTywgWU1EOworQ1JFQVRFIFZJRVcgc2FmZWNhc3R2aWV3IEFTCitTRUxFQ1Qg Q0FTVCgnMTIzNCcgYXMgY2hhcigzKSBERUZBVUxUIC0xMTExIE9OIENPTlZFUlNJT04gRVJST1Ip LAorICAgICAgIENBU1QoMSBhcyBkYXRlIERFRkFVTFQgKCgnMjAyNS1EZWMtMDYnOjpkYXRlICsg cmFuZG9tKG1pbj0+MSwgbWF4PT4xOjppbnQpKSkgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2Fz dDAsCisgICAgICAgQ0FTVChBUlJBWVtbJzEnXSwgWyd0aHJlZSddLFsnYSddXSBBUyBpbnRbXSBE RUZBVUxUICd7MSwyfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDEsCisgICAgICAgQ0FT VChBUlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJywgJ2EnXV0gQVMgZGF0ZVtdIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MiwKKyAgICAgICBDQVNUKEFSUkFZWyd0aHJl ZSddIEFTIElOVFtdIERFRkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0 MzsKK1xzdiBzYWZlY2FzdHZpZXcKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnNhZmVj YXN0dmlldyBBUworIFNFTEVDVCBDQVNUKCcxMjM0JyBBUyBjaGFyYWN0ZXIoMykgREVGQVVMVCAn LTExMTEnOjppbnRlZ2VyOjpjaGFyYWN0ZXIoMykgT04gQ09OVkVSU0lPTiBFUlJPUikgQVMgYnBj aGFyLAorICAgIENBU1QoMSBBUyBkYXRlIERFRkFVTFQgJzIwMjUtMTItMDYnOjpkYXRlICsgcmFu ZG9tKG1pbiA9PiAxLCBtYXggPT4gMSkgT04gQ09OVkVSU0lPTiBFUlJPUikgQVMgY2FzdDAsCisg ICAgQ0FTVChBUlJBWVtBUlJBWVsxXSwgQVJSQVlbJ3RocmVlJ10sIEFSUkFZWydhJ11dIEFTIGlu dGVnZXJbXSBERUZBVUxUICd7MSwyfSc6OmludGVnZXJbXSBPTiBDT05WRVJTSU9OIEVSUk9SKSBB UyBjYXN0MSwKKyAgICBDQVNUKEFSUkFZW0FSUkFZWycxJywgJzInXSwgQVJSQVlbJ3RocmVlJywg J2EnXV0gQVMgZGF0ZVtdIERFRkFVTFQgTlVMTDo6ZGF0ZVtdIE9OIENPTlZFUlNJT04gRVJST1Ip IEFTIGNhc3QyLAorICAgIENBU1QoQVJSQVlbJ3RocmVlJ10gQVMgaW50ZWdlcltdIERFRkFVTFQg J3sxLDJ9Jzo6aW50ZWdlcltdIE9OIENPTlZFUlNJT04gRVJST1IpIEFTIGNhc3QzCitTRUxFQ1Qg KiBGUk9NIHNhZmVjYXN0dmlldzsKKyBicGNoYXIgfCAgIGNhc3QwICAgIHwgY2FzdDEgfCBjYXN0 MiB8IGNhc3QzIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0t CisgMTIzICAgIHwgMjAyNS0xMi0wNyB8IHsxLDJ9IHwgICAgICAgfCB7MSwyfQorKDEgcm93KQor CitDUkVBVEUgVklFVyBzYWZlY2FzdHZpZXcxIEFTCitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnXSwg Wyd0aHJlZSddLFsnYSddXSBBUyBkX2ludF9hcnIKKyAgICAgICAgICAgIERFRkFVTFQgJ3s0MSw0 M30nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QxLAorICAgICAgIENBU1QoQVJSQVlbWycx JywgJzInLCAxLjFdLCBbJ3RocmVlJywgdHJ1ZSwgQicwMSddXSBBUyBkX2ludF9hcnIKKyAgICAg ICAgICAgIERFRkFVTFQgJ3s0MSw0M30nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QyOwor XHN2IHNhZmVjYXN0dmlldzEKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnNhZmVjYXN0 dmlldzEgQVMKKyBTRUxFQ1QgQ0FTVChBUlJBWVtBUlJBWVsxXSwgQVJSQVlbJ3RocmVlJ10sIEFS UkFZWydhJ11dIEFTIGRfaW50X2FyciBERUZBVUxUICd7NDEsNDN9Jzo6aW50ZWdlcltdOjpkX2lu dF9hcnIgT04gQ09OVkVSU0lPTiBFUlJPUikgQVMgY2FzdDEsCisgICAgQ0FTVChBUlJBWVtBUlJB WVsxLCAyLCAxLjE6OmludGVnZXJdLCBBUlJBWVsndGhyZWUnLCB0cnVlLCAnMDEnOjoiYml0Il1d IEFTIGRfaW50X2FyciBERUZBVUxUICd7NDEsNDN9Jzo6aW50ZWdlcltdOjpkX2ludF9hcnIgT04g Q09OVkVSU0lPTiBFUlJPUikgQVMgY2FzdDIKK1NFTEVDVCAqIEZST00gc2FmZWNhc3R2aWV3MTsK KyAgY2FzdDEgIHwgIGNhc3QyICAKKy0tLS0tLS0tLSstLS0tLS0tLS0KKyB7NDEsNDN9IHwgezQx LDQzfQorKDEgcm93KQorCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBDQVNU KCcxJyB8fCAnYScgQVMgaW50IERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3Vs dAorICAgT3V0cHV0OiBDQVNUKCgnMSc6OnRleHQgfHwgJ2EnOjp0ZXh0KSBBUyBpbnRlZ2VyIERF RkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKQorKDIgcm93cykKKworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgQ0FTVCgnYScgQVMgaW50IERFRkFVTFQgMiBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiBDQVNUKCdhJyBB UyBpbnRlZ2VyIERFRkFVTFQgMiBPTiBDT05WRVJTSU9OIEVSUk9SKQorKDIgcm93cykKKworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnLCAnMicsIDEu MV0sIFsndGhyZWUnLCB0cnVlLCBCJzAxJ11dIEFTIGRfaW50X2FyciBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVz dWx0CisgICBPdXRwdXQ6IENBU1QoQVJSQVlbQVJSQVlbMSwgMiwgKDEuMSk6OmludGVnZXJdLCBB UlJBWVsndGhyZWUnLCB0cnVlLCAnMDEnOjoiYml0Il1dIEFTIGRfaW50X2FyciBERUZBVUxUIChO VUxMOjppbnRlZ2VyW10pOjpkX2ludF9hcnIgT04gQ09OVkVSU0lPTiBFUlJPUikKKygyIHJvd3Mp CisKK1JFU0VUIGRhdGVzdHlsZTsKK0RST1AgVklFVyBzYWZlY2FzdHZpZXc7CitEUk9QIFZJRVcg c2FmZWNhc3R2aWV3MTsKK0RST1AgVEFCTEUgdGVzdF9zYWZlY2FzdDA7CitEUk9QIFRBQkxFIHRl c3Rfc2FmZWNhc3QxOworRFJPUCBUQUJMRSB0ZXN0X3NhZmVjYXN0MjsKK0RST1AgVEFCTEUgdGNh c3Q7CitEUk9QIFRBQkxFIHRjYXN0MTsKK0RST1AgRlVOQ1RJT04gcmV0X2ludDg7CitEUk9QIEZV TkNUSU9OIHJldF9zZXRpbnQ7CitEUk9QIFRZUEUgY29tcF9kb21haW5fd2l0aF90eXBtb2Q7CitE Uk9QIFRZUEUgY29tcDI7CitEUk9QIERPTUFJTiBkX25vdGE7CitEUk9QIERPTUFJTiBkX3ZhcmNo YXI7CitEUk9QIERPTUFJTiBkX2ludDhhcnI7CitEUk9QIERPTUFJTiBkX2ludDg7CitEUk9QIERP TUFJTiBkX2ludDQyYXJyMTsKK0RST1AgRE9NQUlOIGRfaW50NDJhcnI7CitEUk9QIERPTUFJTiBk X2ludDQyOworRFJPUCBET01BSU4gZF9jaGFyM19ub3RfbnVsbDsKK0RST1AgRE9NQUlOIGRfbnVt ZXJpYzsKK1JFU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0czsKK1JFU0VUIGxjX21vbmV0YXJ5OwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfY2FzdC5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9jYXN0Lm91dAppbmRleCAwZTY5NjQ0YmNhMi4u NjRhYzYwYjE1N2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRl X2Nhc3Qub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0 CkBAIC04OCw2ICs4OCwxMSBAQCBTRUxFQ1QgMTIzNDo6aW50NDo6Y2FzdHRlc3R0eXBlOyAtLSBT aG91bGQgd29yayBub3cKICBiYXIxMjM0CiAoMSByb3cpCiAKK1NFTEVDVCBDQVNUKDEyMzQ6Omlu dDQgQVMgY2FzdHRlc3R0eXBlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0g ZXJyb3IKK0VSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBpbnRlZ2VyIHRvIGNhc3R0ZXN0dHlwZSB3 aXRoIERFRkFVTFQgZXhwcmVzc2lvbiBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitM SU5FIDE6IFNFTEVDVCBDQVNUKDEyMzQ6OmludDQgQVMgY2FzdHRlc3R0eXBlIERFRkFVTFQgTlVM TCBPTiBDT05WRS4uLgorICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBTYWZlIHR5cGUg Y2FzdHMgZm9yIHVzZXItZGVmaW5lZCB0eXBlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQuCiAtLSBj aGVjayBkZXBlbmRlbmNpZXMgZ2VuZXJhdGVkIGZvciB0aGF0CiBTRUxFQ1QgcGdfZGVzY3JpYmVf b2JqZWN0KGNsYXNzaWQsIG9iamlkLCBvYmpzdWJpZCkgYXMgb2JqLAogICAgICAgIHBnX2Rlc2Ny aWJlX29iamVjdChyZWZjbGFzc2lkLCByZWZvYmppZCwgcmVmb2Jqc3ViaWQpIGFzIG9ianJlZiwK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXF1aXZjbGFzcy5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VxdWl2Y2xhc3Mub3V0CmluZGV4IGFkOGFiMjk0ZmY2 Li4zYWY3MzdjMjIwYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lcXVp dmNsYXNzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VxdWl2Y2xhc3Mub3V0 CkBAIC05NSw2ICs5NSwyNSBAQCBjcmVhdGUgZnVuY3Rpb24gaW50OGFsaWFzMWNtcChpbnQ4LCBp bnQ4YWxpYXMxKSByZXR1cm5zIGludAogICBzdHJpY3QgaW1tdXRhYmxlIGxhbmd1YWdlIGludGVy bmFsIGFzICdidGludDhjbXAnOwogYWx0ZXIgb3BlcmF0b3IgZmFtaWx5IGludGVnZXJfb3BzIHVz aW5nIGJ0cmVlIGFkZAogICBmdW5jdGlvbiAxIGludDhhbGlhczFjbXAgKGludDgsIGludDhhbGlh czEpOworLS0gaW50OGFsaWFzMiBiaW5hcnktY29lcmNpYmxlIHRvIGludDgsIHRoaXMgc2hvdWxk IG5vdCBmYWlsCitzZWxlY3QgY2FzdCgnMSc6OmludDggYXMgaW50OGFsaWFzMiBkZWZhdWx0IG51 bGwgb24gY29udmVyc2lvbiBlcnJvcik7CisgaW50OGFsaWFzMiAKKy0tLS0tLS0tLS0tLQorIDEK KygxIHJvdykKKworc2VsZWN0IGNhc3QoJzEnOjppbnQ4YWxpYXMyIGFzIGludDggZGVmYXVsdCBu dWxsIG9uIGNvbnZlcnNpb24gZXJyb3IpOworIGludDggCistLS0tLS0KKyAgICAxCisoMSByb3cp CisKK3NlbGVjdCBjYXN0KCdhJyBhcyBpbnQ4YWxpYXMyIGRlZmF1bHQgbnVsbCBvbiBjb252ZXJz aW9uIGVycm9yKTsKKyBpbnQ4YWxpYXMyIAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIGNy ZWF0ZSB0YWJsZSBlYzAgKGZmIGludDggcHJpbWFyeSBrZXksIGYxIGludDgsIGYyIGludDgpOwog Y3JlYXRlIHRhYmxlIGVjMSAoZmYgaW50OCBwcmltYXJ5IGtleSwgZjEgaW50OGFsaWFzMSwgZjIg aW50OGFsaWFzMik7CiBjcmVhdGUgdGFibGUgZWMyICh4ZiBpbnQ4IHByaW1hcnkga2V5LCB4MSBp bnQ4YWxpYXMxLCB4MiBpbnQ4YWxpYXMyKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQveG1sLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sLm91dAppbmRl eCAxMDNhMjJhM2IxZC4uODE1YTVlODg5OWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQveG1sLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbC5vdXQK QEAgLTE4LDYgKzE4LDEyIEBAIFNFTEVDVCAqIEZST00geG1sdGVzdDsKICAgMiB8IDx2YWx1ZT50 d288L3ZhbHVlPgogKDIgcm93cykKIAorU0VMRUNUIENBU1QoJzx3cm9uZyc6OnRleHQgQVMgeG1s IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b194bWw7CisgdG9feG1sIAor LS0tLS0tLS0KKyAKKygxIHJvdykKKwogLS0gdGVzdCBub24tdGhyb3dpbmcgQVBJLCB0b28KIFNF TEVDVCBwZ19pbnB1dF9pc192YWxpZCgnPHZhbHVlPm9uZTwvdmFsdWU+JywgJ3htbCcpOwogIHBn X2lucHV0X2lzX3ZhbGlkIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94 bWxfMS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbF8xLm91dAppbmRleCA3M2M0 MTExMThhMy4uNjlhZWE4MzMxNjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQveG1sXzEub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzEub3V0CkBA IC0yMiw2ICsyMiw5IEBAIFNFTEVDVCAqIEZST00geG1sdGVzdDsKIC0tLS0rLS0tLS0tCiAoMCBy b3dzKQogCitTRUxFQ1QgQ0FTVCgnPHdyb25nJzo6dGV4dCBBUyB4bWwgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3htbDsKK0VSUk9SOiAgdW5zdXBwb3J0ZWQgWE1MIGZl YXR1cmUKK0RFVEFJTDogIFRoaXMgZnVuY3Rpb25hbGl0eSByZXF1aXJlcyB0aGUgc2VydmVyIHRv IGJlIGJ1aWx0IHdpdGggbGlieG1sIHN1cHBvcnQuCiAtLSB0ZXN0IG5vbi10aHJvd2luZyBBUEks IHRvbwogU0VMRUNUIHBnX2lucHV0X2lzX3ZhbGlkKCc8dmFsdWU+b25lPC92YWx1ZT4nLCAneG1s Jyk7CiBFUlJPUjogIHVuc3VwcG9ydGVkIFhNTCBmZWF0dXJlCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZQppbmRleCA3MzRkYTA1N2MzNC4uZmRhY2ZlYWU4ZWMgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZQpAQCAtMTE1LDcgKzExNSw3IEBAIHRlc3Q6IGpzb24ganNvbmIganNvbl9l bmNvZGluZyBqc29ucGF0aCBqc29ucGF0aF9lbmNvZGluZyBqc29uYl9qc29ucGF0aCBzcWxqc29u CiAjIE5COiB0ZW1wLnNxbCBkb2VzIHJlY29ubmVjdHMgd2hpY2ggdHJhbnNpZW50bHkgdXNlcyAy IGNvbm5lY3Rpb25zLAogIyBzbyBrZWVwIHRoaXMgcGFyYWxsZWwgZ3JvdXAgdG8gYXQgbW9zdCAx OSB0ZXN0cwogIyAtLS0tLS0tLS0tCi10ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5 MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lvbiB0cnVuY2F0ZSBhbHRl cl90YWJsZSBzZXF1ZW5jZSBwb2x5bW9ycGhpc20gcm93dHlwZXMgcmV0dXJuaW5nIGxhcmdlb2Jq ZWN0IHdpdGggeG1sCit0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRv bWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lvbiB0cnVuY2F0ZSBhbHRlcl90YWJsZSBz ZXF1ZW5jZSBwb2x5bW9ycGhpc20gcm93dHlwZXMgcmV0dXJuaW5nIGxhcmdlb2JqZWN0IHdpdGgg eG1sIGNhc3QKIAogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVz dHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nhc3Quc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY2FzdC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjBlMjhkMTczZTk0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y2FzdC5zcWwKQEAgLTAsMCArMSw0NDIgQEAKK1NFVCBleHRyYV9mbG9hdF9kaWdpdHMgPSAwOwor U0VUIGxjX21vbmV0YXJ5IFRPICJDIjsKKworLS0gQ0FTVCBERUZBVUxUIE9OIENPTlZFUlNJT04g RVJST1IKK1NFTEVDVCBDQVNUKEInMDEnIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOworU0VMRUNUIENBU1QoQklUJzAxJyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKFRSVUUgQVMgZGF0ZSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxLjEgQVMgZGF0ZSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxIEFTIGRhdGUgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoMTExMSBBUyAiY2hhciIgREVG QVVMVCAnQScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnZGVmJzo6dGV4dCBB UyBpbnRlZ2VyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KCcyJzo6anNvbmIgQVMgdGV4dCBERUZBVUxUICdmYWxsYmFjaycgT04gQ09OVkVSU0lPTiBFUlJP Uik7CitTRUxFQ1QgQ0FTVCgnMScgQ09MTEFURSAiQyIgfHwgJ2gnIEFTIHRleHQgREVGQVVMVCAn ZmFsbGJhY2snIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoY29uY2F0KCcxJyBj b2xsYXRlICJDIiwgJ2gnKSBBUyBpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworU0VMRUNUIENBU1QoNjU1MzYgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVChpbnQ4KDY1NTM2KSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKworLS0gc291cmNlIGV4cHJlc3Npb24gaXMgYSB1bmtub3duIGNv bnN0CitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIEVSUk9SIE9OIENPTlZFUlNJT04g RVJST1IpKTsgLS0gZXJyb3IKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludGVnZXIgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSk7CitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIERF RkFVTFQgNDIgT04gQ09OVkVSU0lPTiBFUlJPUikpOworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBE RUZBVUxUIDE4IE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ2EnIGFzIGludCBE RUZBVUxUIHN1bSgxKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNU KCdhJyBhcyBpbnQgREVGQVVMVCBzdW0oMSkgb3ZlcigpIE9OIENPTlZFUlNJT04gRVJST1IpOyAt LSBlcnJvcgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIChTRUxFQ1QgTlVMTCkgT04g Q09OVkVSU0lPTiBFUlJPUik7IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFV TFQgJ2InIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorU0VMRUNUIENBU1QoJ2EnOjpp bnQgYXMgaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKKwor LS0gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbuKAmXMgY29sbGF0aW9uIHNob3VsZCBtYXRjaCB0YXJn ZXQgdHlwZSBjb2xsYXRpb24KK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIHRleHQgREVGQVVMVCAn MScgQ09MTEFURSAiQyIgT04gQ09OVkVSU0lPTiBFUlJPUikpOworCitWQUxVRVMgKENBU1QoJ2Vy cm9yJyBBUyBpbnQydmVjdG9yIERFRkFVTFQgJzEgMycgIE9OIENPTlZFUlNJT04gRVJST1IpKTsK K1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludDJ2ZWN0b3JbXSBERUZBVUxUICd7MSAzfScgIE9O IENPTlZFUlNJT04gRVJST1IpKTsKKworLS0gc291cmNlIGV4cHJlc3Npb24gY29udGFpbiBzdWJx dWVyeQorU0VMRUNUIENBU1QoKFNFTEVDVCBiIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEpLCAo VkFMVUVTKCdIJykpIHMoYikpCisgICAgICAgICAgICBBUyBpbnQydmVjdG9yW10gREVGQVVMVCAn ezEgM30nICBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKChTRUxFQ1QgQVJSQVko KFNFTEVDVCBiIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGcsIChWQUxVRVMoJ0gnKSkgcyhi KSkpKQorICAgICAgICAgICAgQVMgSU5UW10KKyAgICAgICAgICAgIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKTsKKworQ1JFQVRFIEZVTkNUSU9OIHJldF9pbnQ4KCkgUkVUVVJOUyBC SUdJTlQgQVMKKyQkCitCRUdJTiBSRVRVUk4gMjE0NzQ4MzY0ODsgRU5EOworJCQKK0xBTkdVQUdF IHBscGdzcWwgSU1NVVRBQkxFOworCitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgcmV0 X2ludDgoKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNUKCdhJyBh cyBkYXRlIERFRkFVTFQgcmV0X2ludDgoKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IK KworLS0gREVGQVVMVCBleHByZXNzaW9uIGNhbm5vdCBiZSBzZXQtcmV0dXJuaW5nCitDUkVBVEUg RlVOQ1RJT04gcmV0X3NldGludCgpIFJFVFVSTlMgU0VUT0YgaW50ZWdlciBBUworJCQKK0JFR0lO IFJFVFVSTiBRVUVSWSBFWEVDVVRFICdzZWxlY3QgMSB1bmlvbiBhbGwgc2VsZWN0IDEnOyBFTkQ7 CiskJAorTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEU7CisKK0NSRUFURSBUQUJMRSB0Y2FzdDAo YSBJTlQsIGIgaW50KTsKK0lOU0VSVCBJTlRPIHRjYXN0MCBWQUxVRVMoMSwyKSwgKDY1NTM2LDMp OworU0VUIGppdF9hYm92ZV9jb3N0ID0gMDsKK1NFTEVDVCBDQVNUKGEgQVMgaW50MiBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDA7CitTRVQgaml0X2Fib3ZlX2Nv c3QgVE8gREVGQVVMVDsKK1NFTEVDVCBDQVNUKGEgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDA7CitTRUxFQ1QgQ0FTVChST1coMSwyKSBBUyB0Y2Fz dDAgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QwIGFzIHQ7CitE Uk9QIFRBQkxFIHRjYXN0MDsKKworU0VMRUNUIENBU1QoMTIuMTExIGFzIG51bWVyaWMoMTAsMSkg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGU7CisK K0NSRUFURSBUQUJMRSB0Y2FzdChhIHRleHRbXSwgYiBpbnQgR0VORVJBVEVEIEJZIERFRkFVTFQg QVMgSURFTlRJVFkpOworSU5TRVJUIElOVE8gdGNhc3QgVkFMVUVTICgnezEyfScpLCAoJ3sxLGEs IGJ9JyksICgne3sxLDJ9LCB7YyxkfX0nKSwgKCd7MTN9Jyk7CitTRUxFQ1QgQ0FTVCgnYScgYXMg aW50IERFRkFVTFQgcmV0X3NldGludCgpIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3Q7 IC0tIGVycm9yCitTRUxFQ1QgQ0FTVCh0IEFTIHRleHRbXSBERUZBVUxUICd7MjEsMjIsICcgfHwg YiB8fCAnfScgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdCBhcyB0OworU0VMRUNUIENB U1QodC5hIEFTIGludFtdIERFRkFVTFQgJ3syMSwyMn0nOjppbnRbXSB8fCBiIE9OIENPTlZFUlNJ T04gRVJST1IpIEZST00gdGNhc3QgYXMgdDsKKworLS0gVGVzdCBuZXN0ZWQgdHlwZSBjYXN0czsg YWxsIGV4cHJlc3Npb25zIHdpbGwgYmUgZXZhbHVhdGVkIGluIGFuIGVycm9yLXNhZmUgbWFubmVy CitDUkVBVEUgRE9NQUlOIGRfbm90YSBBUyB0ZXh0IENIRUNLIChWQUxVRSA8PiAnYScpOworQ1JF QVRFIFRBQkxFIHRjYXN0MShhIHRleHQsIGIgdGV4dFtdLCBjIGludCwgZCBpbnQ4LCBlIGludDhb XSk7CitJTlNFUlQgSU5UTyB0Y2FzdDEoYSwgYiwgZCwgZSkgdmFsdWVzKCdhJywgJ3thfScsIDIx NDc0ODM2NDgsICd7MjE0NzQ4MzY0OH0nKTsKK1NFTEVDVCBDQVNUIChDQVNUKGEgQVMgaW50KSBB UyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKK1NF TEVDVCBDQVNUIChDQVNUKCdhJyBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIEZST00gdGNhc3QxOyAgLS0gZXJyb3IKK1NFTEVDVCBDQVNUIChDQVNUKCdh Jzo6dGV4dCBBUyBpbnQpIEFTIHRleHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IEZST00gdGNhc3QxOyAtLSBvaworU0VMRUNUIENBU1QgKENBU1QoYSBBUyBkX25vdGEpIEFTIHRl eHQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworU0VMRUNU IENBU1QgKENBU1QoJ2EnIEFTIGRfbm90YSkgQVMgdGV4dCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CisKK1NFTEVDVCBDQVNUIChDQVNUKGQgQVMgaW50KSBB UyB0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MTsKK1NF TEVDVCBDQVNUIChDQVNUKCcyMTQ3NDgzNjQ4Jzo6aW50OCBBUyBpbnQpIEFTIHRleHQgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworCitTRUxFQ1QgQ0FTVCAo Q0FTVCgne2F9Jzo6dGV4dFtdIEFTIGludFtdKSBBUyB0ZXh0W10gREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIEZST00gdGNhc3QxOworU0VMRUNUIENBU1QgKENBU1QoYiBBUyBpbnRb XSkgQVMgdGV4dFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0 MTsKK1NFTEVDVCBDQVNUIChDQVNUKGIgQVMgZF9ub3RhW10pIEFTIHRleHRbXSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FTVCAoQ0FTVChl IEFTIGludFtdKSBBUyB0ZXh0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZS T00gdGNhc3QxOworCistLSB0ZXN0IG5lc3RlZCBBcnJheUNvZXJjZUV4cHIgY29uc3RhbnQgZm9s ZGluZworU0VMRUNUIENBU1QoJ3thfSc6OnRleHRbXSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04g Q09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FTVChDQVNUKCd7YX0nOjp0 ZXh0W10gQVMgZGF0ZVtdKSBBUyBpbnRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgRlJPTSB0Y2FzdDE7CitTRUxFQ1QgQ0FTVCgoJ3snIHx8IHN1bSgxICsgMikgfHwgJ30nKTo6 aW50W10gQVMgaW50W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZST00gKFZB TFVFUyAoMSksICgyKSkgc3ViOworU0VMRUNUIENBU1QoKCd7JyB8fCBzdW0oMSArIDIpIE9WRVIg KCkgfHwgJ30nKTo6aW50W10gQVMgaW50W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIEZST00gKFZBTFVFUyAoMSksICgyKSkgc3ViOworCistLSB0ZXN0IHdpdGggdXNlci1kZWZp bmVkIHR5cGUsIGRvbWFpbiwgYXJyYXkgb3ZlciBkb21haW4sIGRvbWFpbiBvdmVyIGFycmF5CitD UkVBVEUgRE9NQUlOIGRfaW50NDIgYXMgaW50IGNoZWNrICh2YWx1ZSA9IDQyKSBOT1QgTlVMTDsK K0NSRUFURSBET01BSU4gZF9pbnQ0MmFyciBhcyBkX2ludDQyW107CitDUkVBVEUgRE9NQUlOIGRf aW50NDJhcnIxIGFzIGRfaW50NDJhcnI7CitDUkVBVEUgRE9NQUlOIGRfaW50OCBhcyBpbnQ4IGNo ZWNrICh2YWx1ZSA+IDApOworQ1JFQVRFIERPTUFJTiBkX2ludDhhcnIgYXMgZF9pbnQ4W107CitD UkVBVEUgRE9NQUlOIGRfY2hhcjNfbm90X251bGwgYXMgY2hhcigzKSBOT1QgTlVMTDsKK0NSRUFU RSBET01BSU4gZF92YXJjaGFyIGFzIHZhcmNoYXIoMykgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlO IGRfaW50X2FyciBhcyBpbnRbXSBjaGVjayAodmFsdWUgPSAnezQxLCA0M30nKSBOT1QgTlVMTDsK K0NSRUFURSBUWVBFIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIEFTIChhIGRfY2hhcjNfbm90X251 bGwsIGIgaW50KTsKK0NSRUFURSBUWVBFIGNvbXAyIEFTIChhIGRfdmFyY2hhcik7CitDUkVBVEUg RE9NQUlOIGRfbnVtZXJpYyBhcyBudW1lcmljKDQsNCk7CisKK1NFTEVDVCBDQVNUKDEuMDo6Zmxv YXQ0IEFTIGRfbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxF Q1QgQ0FTVCgnezEuMH0nIEFTIG51bWVyaWMoNCwxKVtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCd7MC4xLCAxLjB9JyBBUyBkX251bWVyaWNbXSBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKK1NFTEVDVCBDQVNUKDExIEFTIGRfaW50 NDIgREVGQVVMVCA0MSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNU KE5VTEwgQVMgZF9pbnQ0MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tIGVy cm9yCitTRUxFQ1QgQ0FTVCgxMSBBUyBkX2ludDQyIERFRkFVTFQgNDIgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVChOVUxMIEFTIGRfaW50NDIgREVGQVVMVCA0MiBPTiBDT05WRVJT SU9OIEVSUk9SKTsKKworU0VMRUNUIENBU1QoQVJSQVlbNDJdOjpkX2ludDQyYXJyMSBBUyBkX2lu dDggREVGQVVMVCAnMScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChBUlJBWVs0 Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OFtdIERFRkFVTFQgJ3sxfScgT04gQ09OVkVSU0lPTiBF UlJPUik7CitTRUxFQ1QgQ0FTVChBUlJBWVs0Ml06OmRfaW50NDJhcnIxIEFTIGRfaW50OGFyciBE RUZBVUxUICd7MX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoQVJSQVlbNDJd OjpkX2ludDQyYXJyMSBBUyBkX2ludDhhcnJbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUik7CisKK1NFTEVDVCBDQVNUKEFSUkFZWzQyLDQxXSBBUyBkX2ludDQyW10gREVGQVVMVCAn ezQyLCA0Mn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoQVJSQVlbNDIsNDFd IEFTIGRfaW50X2FyciBERUZBVUxUICd7NDEsIDQzfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitT RUxFQ1QgQ0FTVChBUlJBWVs0MiwgNDFdOjpkX2ludDQyYXJyMSBBUyBkX2ludDhhcnIgREVGQVVM VCAnezEsMiwzfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChBUlJBWVs0Miwg NDFdIEFTIGRfaW50NDJhcnIxIERFRkFVTFQgJ3s0MiwgNDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9S KTsKK1NFTEVDVAorICAgIENBU1QoQ0FTVChBUlJBWVtDQVNUKEFSUkFZWzQyLCA0Ml0gQVMgZF9p bnQ0MmFycildIEFTIGRfaW50NDJhcnIxW10pIEFTIGRfaW50OGFycltdIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKworU0VMRUNUIENBU1QoJyhOVUxMKScgQVMgY29tcDIgREVG QVVMVCAnKDEyMzIpJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKK1NFTEVDVCBDQVNU KCcoTlVMTCknIEFTIGNvbXAyIERFRkFVTFQgJygxMjMpJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsK K1NFTEVDVCBDQVNUKCcoLDQyKScgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJyhOVUxMLDQyKScgQVMgY29t cF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCAnKDEsMiknIE9OIENPTlZFUlNJT04gRVJST1Ip OworU0VMRUNUIENBU1QoJyhOVUxMLDQyKScgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVG QVVMVCAnKDEyMzQsMiknIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgorU0VMRUNUIENB U1QoUk9XKE5VTEwsNDIpIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKKworLS0gdGVzdCBhcnJheSBjb2VyY2UKK1NF TEVDVCBDQVNUKGFycmF5WydhJzo6dGV4dF0gQVMgaW50W10gREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoYXJyYXlbJ2EnXSBBUyBpbnRbXSBERUZBVUxUIEFS UkFZWzFdIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoYXJyYXlbMTEuMTJdIEFT IGRhdGVbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChh cnJheVsxMTExMTExMTExMTExMTExMV0gQVMgaW50W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOworU0VMRUNUIENBU1QoYXJyYXlbWydhYmMnXSxbNDU2XV0gQVMgaW50W10gREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ3sxMjMsYWJjLDQ1 Nn0nIEFTIGludFtdIERFRkFVTFQgJ3stNzg5fScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxF Q1QgQ0FTVCgnezIzNCxkZWYsNTY3fSc6OnRleHRbXSBBUyBpbnRlZ2VyW10gREVGQVVMVCAney0x MDExfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnXSwgWyd0 aHJlZSddLFsnYSddXSBBUyBpbnRbXSBERUZBVUxUICd7MSwyfScgT04gQ09OVkVSU0lPTiBFUlJP Uik7CitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJywgJ2EnXV0gQVMgaW50 W10gREVGQVVMVCAnezIxLDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUik7CistLSBlcnJvcjogYHRo cmVlJzo6aW50YCB3aWxsIGZhaWwgZWFybGllcgorU0VMRUNUIENBU1QoQVJSQVlbWycxJywgJzIn XSwgWyd0aHJlZSc6OmludCwgJ2EnXV0gQVMgaW50W10gREVGQVVMVCAnezIxLDIyfScgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChBUlJBWVsxLCAndGhyZWUnOjppbnRdIEFTIGlu dFtdIERFRkFVTFQgJ3syMSwyMn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworCistLSBzYWZlIGNh c3Qgd2l0aCBnZW9tZXRyeSBkYXRhIHR5cGUKK1NFTEVDVCBDQVNUKCcoMSwyKSc6OnBvaW50IEFT IGJveCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWyhO YU4sMSksKE5hTixpbmZpbml0eSldJzo6bHNlZyBBUyBwb2ludCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWygxZSszMDAsSW5maW5pdHkpLCgxZSszMDAs SW5maW5pdHkpXSc6OmxzZWcgQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworU0VMRUNUIENBU1QoJ1soMSwyKSwoMyw0KV0nOjpwYXRoIGFzIHBvbHlnb24gREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJyhOYU4sMS4wLE5hTixp bmZpbml0eSknOjpib3ggQVMgcG9pbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworU0VMRUNUIENBU1QoJygyLjAsMi4wLDAuMCwwLjApJzo6Ym94IEFTIGxzZWcgREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJygyLjAsMi4wLDAuMCwwLjAp Jzo6Ym94IEFTIHBvbHlnb24gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VM RUNUIENBU1QoJygyLjAsMi4wLDAuMCwwLjApJzo6Ym94IEFTIHBhdGggREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJygyLjAsaW5maW5pdHksTmFOLGluZmlu aXR5KSc6OmJveCBBUyBjaXJjbGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor U0VMRUNUIENBU1QoJyhOYU4sMC4wKSwoMi4wLDQuMCksKDAuMCxpbmZpbml0eSknOjpwb2x5Z29u IEFTIHBvaW50IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNU KCcoMi4wLDAuMCksKDIuMCw0LjApLCgwLjAsMC4wKSc6OnBvbHlnb24gQVMgcGF0aCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKDIuMCwwLjApLCgyLjAs NC4wKSwoMC4wLDAuMCknOjpwb2x5Z29uIEFTIGJveCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnKE5hTixpbmZpbml0eSksKDIuMCw0LjApLCgwLjAsaW5m aW5pdHkpJzo6cG9seWdvbiBBUyBjaXJjbGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpOworU0VMRUNUIENBU1QoJzwoNSwxKSwzPic6OmNpcmNsZSBBUyBwb2ludCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnPCgzLDUpLDA+Jzo6Y2lyY2xl IGFzIGJveCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgn PCgzLDUpLDA+Jzo6Y2lyY2xlIGFzIHBvbHlnb24gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworCistLSBzYWZlIGNhc3Qgd2l0aCBtb25leSBkYXRhIHR5cGUKKy0tIGNhc3QgZnJv bSBtb25leSB0byBvdGhlciB0eXBlIGlzIG5vdCBlcnJvciBzYWZlCitTRUxFQ1QgQ0FTVCgnMTIz NDU2Nzg5MDEyMzQ1Njc4Jzo6bnVtZXJpYyBBUyBNT05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMTIzNDU2Nzg5MDEyMzQ1Njc4Jzo6aW50OCBBUyBN T05FWSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnMjE0 NzQ4MzY0Nyc6OmludDQgQVMgTU9ORVkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip OworU0VMRUNUIENBU1QoJy0yMTQ3NDgzNjQ4Jzo6aW50NCBBUyBNT05FWSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnLTAnOjppbnQ0IEFTIE1PTkVZIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKE5VTEw6Om1vbmV5 IEFTIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENB U1QoTlVMTDo6bW9uZXlbXSBBUyBudW1lcmljW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpOworCistLSBzYWZlIGNhc3QgZnJvbSBib29sZWFuIHR5cGUgdG8gb3RoZXIgZGF0YSB0 eXBlcworU0VMRUNUIENBU1QodHJ1ZSBBUyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKGZhbHNlIEFTIGludCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVChmYWxzZSBBUyB0ZXh0IERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc2FmZSBjYXN0IGZyb20gYnl0ZWEgdHlwZSB0byBv dGhlciBkYXRhIHR5cGVzCitTRUxFQ1QgQ0FTVCAoJ1x4MTEyMjMzNDQ1NTY2Nzc4ODk5Jzo6Ynl0 ZWEgQVMgaW50OCBERUZBVUxUIDE5IE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1Qo J1x4MTIzNDU2Nzg5QSc6OmJ5dGVhIEFTIGludDQgREVGQVVMVCAyMCBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKK1NFTEVDVCBDQVNUKCdceDEyMzQ1Nic6OmJ5dGVhIEFTIGludDIgREVGQVVMVCAyMSBP TiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCdceDEyMzQ1Njc4OTBhYmNkZWYnOjpi eXRlYSBBUyB1dWlkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc2Fm ZSBjYXN0IGZyb20gdXVpZCB0eXBlIHRvIG90aGVyIGRhdGEgdHlwZXMKK1NFTEVDVCBDQVNUKCc1 YjM1MzgwYS03MTQzLTQ5MTItOWI1NS1mMzIyNjk5YzY3NzAnOjp1dWlkIEFTIGJ5dGVhIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc2FmZSBjYXN0IHJlbGF0ZWQgdG8g bmV0d29yayBhZGRyZXNzIGRhdGEgdHlwZQorU0VMRUNUIENBU1QoJzE5Mi4xNjguMS54JyBhcyBp bmV0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKCcxOTIu MTY4LjEuMi8zMCcgYXMgY2lkciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitT RUxFQ1QgQ0FTVCgnMjI6MDA6NWM6MDg6NTU6MDg6MDE6MDInOjptYWNhZGRyOCBhcyBtYWNhZGRy IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKworLS0gc2FmZSBjYXN0IGZyb20g Yml0IHR5cGUgdG8gb3RoZXIgZGF0YSB0eXBlcworU0VMRUNUIENBU1QoJzExMTExMTExMTEwMDAw MSc6OmJpdCgxMDApIEFTIElOVCBERUZBVUxUIDIyIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VM RUNUIENBU1QgKCcxMTExMTExMTExMDAwMDEnOjpiaXQoMTAwKSBBUyBJTlQ4IERFRkFVTFQgMjMg T04gQ09OVkVSU0lPTiBFUlJPUik7CisKKy0tIHNhZmUgY2FzdCByZWxhdGVkIHRvIG9pZCBkYXRh IHR5cGUKK1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTAxOjpiaWdpbnQgQVMgb2lkIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKDEyMzQ1Njc4OTAxOjpiaWdpbnQg QVMgcmVncHJvYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VCgxMjM0NTY3ODkwMTo6YmlnaW50IEFTIHJlZ3Byb2NlZHVyZSBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgxMjM0NTY3ODkwMTo6YmlnaW50IEFTIHJlZ2Ns YXNzIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKDEyMzQ1 Njc4OTA6OmJpZ2ludCBBUyBvaWQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwor U0VMRUNUIENBU1QoMTIzNDU2Nzg5MDo6YmlnaW50IEFTIHJlZ3JvbGUgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoMTIzNDU2Nzg5MDo6YmlnaW50IEFTIHJl Z25hbWVzcGFjZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FT VCgxMjM0NTY3ODkwOjpiaWdpbnQgQVMgcmVnZGF0YWJhc2UgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpOworCistLSBzYWZlIGNhc3QgZnJvbSB0ZXh0IHR5cGUgdG8gb3RoZXIgZGF0 YSB0eXBlcworU0VMRUNUIENBU1QoJ2EuYi5jLmQnOjp0ZXh0IGFzIHJlZ2NsYXNzIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVjYXN0MChj b2wwIHRleHQsIGNvbDEganNvbmIpOworSU5TRVJUIElOVE8gdGVzdF9zYWZlY2FzdDAgVkFMVUVT ICgnPHZhbHVlPm9uZTwvdmFsdWUnLCAnInRlc3QiJyk7CisKK1NFTEVDVCBjb2wwIGFzIHRleHQs CisgICAgICAgQ0FTVChjb2wwIEFTIHJlZ2NsYXNzIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19yZWdjbGFzcywKKyAgICAgICBDQVNUKGNvbDAgQVMgcmVnY2xhc3MgREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIElTIE5VTEwgYXMgZXhwZWN0X3RydWUsCisg ICAgICAgQ0FTVChjb2wwIEFTICJjaGFyIiAgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2NoYXIsCisgICAgICAgQ0FTVChjb2wwIEFTIG5hbWUgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX25hbWUKK0ZST00gdGVzdF9zYWZlY2FzdDA7CisKKy0t IHNhZmUgdHlwZSBjYXN0IGZvciBqc29uYiBkYXRhIHR5cGUKK1NFTEVDVCBjb2wxIGFzIGpzb25i LAorICAgICAgIENBU1QoY29sMSBBUyBpbnRlZ2VyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyB0b19pbnRlZ2VyLAorICAgICAgIENBU1QoY29sMSBBUyBudW1lcmljIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1Qo Y29sMSBBUyBiaWdpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2lu dDgsCisgICAgICAgQ0FTVChjb2wxIEFTIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lP TiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sMSBBUyBmbG9hdDggREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNv bDEgQVMgYm9vbGVhbiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fYm9v bCwKKyAgICAgICBDQVNUKGNvbDEgQVMgc21hbGxpbnQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX3NtYWxsaW50CitGUk9NIHRlc3Rfc2FmZWNhc3QwOworCistLSB0ZXN0 IENBU1QgREVGQVVMVCBleHByZXNzaW9uIG11dGFiaWxpdHkKK0NSRUFURSBJTkRFWCBjYXN0X2Vy cm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MCgoQ0FTVChjb2wxIGFzIGludCBERUZBVUxUIHJhbmRv bShtaW49PjEsIG1heD0+MSkgT04gQ09OVkVSU0lPTiBFUlJPUikpKTsgLS0gZXJyb3IKK0NSRUFU RSBJTkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MCgoQ0FTVChjb2wxIGFzIHhp ZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikpKTsgLS0gZXJyb3IKK0NSRUFURSBJ TkRFWCBjYXN0X2Vycm9yX2lkeCBPTiB0ZXN0X3NhZmVjYXN0MCgoQ0FTVChjb2wxIGFzIGludCBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikpKTsgLS0gb2sKK1NFTEVDVCBwZ19nZXRf aW5kZXhkZWYoJ2Nhc3RfZXJyb3JfaWR4Jzo6cmVnY2xhc3MpOworCistLSBzYWZlIGNhc3QgYmV0 d2VlZW4gcmFuZ2UgZGF0YSB0eXBlcworU0VMRUNUIENBU1QoJ1sxLDJdJzo6aW50NHJhbmdlIEFT IGludDRtdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVD VCBDQVNUKCdbMSwyXSc6OmludDhyYW5nZSBBUyBpbnQ4bXVsdGlyYW5nZSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1QgQ0FTVCgnWzEsMl0nOjpudW1yYW5nZSAgQVMg bnVtbXVsdGlyYW5nZSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitTRUxFQ1Qg Q0FTVCgnWy1pbmZpbml0eSxpbmZpbml0eV0nOjpkYXRlcmFuZ2UgQVMgZGF0ZW11bHRpcmFuZ2Ug REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1staW5maW5p dHksaW5maW5pdHldJzo6dHNyYW5nZSBBUyB0c211bHRpcmFuZ2UgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ1staW5maW5pdHksaW5maW5pdHldJzo6dHN0 enJhbmdlIEFTIHRzdHptdWx0aXJhbmdlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsKKworLS0gc2FmZSBjYXN0IGJldHdlZWVuIG51bWVyaWMgZGF0YSB0eXBlcworQ1JFQVRFIFRB QkxFIHRlc3Rfc2FmZWNhc3QxKAorICBjb2wxIGZsb2F0NCwgY29sMiBmbG9hdDgsIGNvbDMgbnVt ZXJpYywgY29sNCBudW1lcmljW10sCisgIGNvbDUgaW50MiBkZWZhdWx0IDMyNzY3LAorICBjb2w2 IGludDQgZGVmYXVsdCAzMjc2OCwKKyAgY29sNyBpbnQ4IGRlZmF1bHQgNDI5NDk2NzI5Nik7CitJ TlNFUlQgSU5UTyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJzExLjEyMzQnLCAnMTEuMTIzNCcsICc5 MjIzMzcyMDM2ODU0Nzc1ODA4JywgJ3sxMS4xMjM0fSc6Om51bWVyaWNbXSk7CitJTlNFUlQgSU5U TyB0ZXN0X3NhZmVjYXN0MSBWQUxVRVMoJ2luZicsICdpbmYnLCAnaW5mJywgJ3sxMS4xMjM0LCAx MiwgaW5mLCBOYU59Jzo6bnVtZXJpY1tdKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QxIFZB TFVFUygnLWluZicsICctaW5mJywgJy1pbmYnLCAnezExLjEyMzQsIDEyLCAtaW5mLCBOYU59Jzo6 bnVtZXJpY1tdKTsKK0lOU0VSVCBJTlRPIHRlc3Rfc2FmZWNhc3QxIFZBTFVFUygnTmFOJywgJ05h TicsICdOYU4nLCAnezExLjEyMzQsIDEyLCAtaW5mLCBOYU59Jzo6bnVtZXJpY1tdKTsKKworU0VM RUNUIGNvbDUgYXMgaW50MiwKKyAgICAgICBDQVNUKGNvbDUgQVMgaW50MiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDUgQVMgaW50 NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBD QVNUKGNvbDUgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19v aWQsCisgICAgICAgQ0FTVChjb2w1IGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2w1IGFzIGZsb2F0NCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sNSBh cyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwK KyAgICAgICBDQVNUKGNvbDUgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDUgYXMgbnVtZXJpYygxMCwxKSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJP TSB0ZXN0X3NhZmVjYXN0MTsKKworU0VMRUNUIGNvbDYgYXMgaW50NCwKKyAgICAgICBDQVNUKGNv bDYgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwK KyAgICAgICBDQVNUKGNvbDYgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDYgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2w2IGFzIGludDggREVG QVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChj b2w2IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxv YXQ0LAorICAgICAgIENBU1QoY29sNiBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDYgYXMgbnVtZXJpYyBERUZB VUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNU KGNvbDYgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKworU0VMRUNUIGNvbDcg YXMgaW50OCwKKyAgICAgICBDQVNUKGNvbDcgQVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDcgQVMgaW50NCBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDcg QVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAg ICAgQ0FTVChjb2w3IGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2ludDgsCisgICAgICAgQ0FTVChjb2w3IGFzIGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sNyBhcyBmbG9hdDgg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBD QVNUKGNvbDcgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDcgYXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3Nh ZmVjYXN0MTsKKworU0VMRUNUIGNvbDMgYXMgbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDMgQVMg aW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAg ICBDQVNUKGNvbDMgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9faW50NCwKKyAgICAgICBDQVNUKGNvbDMgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19vaWQsCisgICAgICAgQ0FTVChjb2wzIGFzIGludDggREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wzIGFz IGZsb2F0NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAor ICAgICAgIENBU1QoY29sMyBhcyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJS T1IpIGFzIHRvX2Zsb2F0OCwKKyAgICAgICBDQVNUKGNvbDMgYXMgbnVtZXJpYyBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDMg YXMgbnVtZXJpYygxMCwxKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f bnVtZXJpY19zY2FsZQorRlJPTSB0ZXN0X3NhZmVjYXN0MTsKKworU0VMRUNUIGNvbDQgYXMgbnVt X2FyciwKKyAgICAgICBDQVNUKGNvbDQgQVMgaW50MltdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyBpbnQyYXJyLAorICAgICAgIENBU1QoY29sNCBBUyBpbnQ0W10gREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGludDRhcnIsCisgICAgICAgQ0FTVChjb2w0 IGFzIGludDhbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgaW50OGFyciwK KyAgICAgICBDQVNUKGNvbDQgYXMgZmxvYXQ0W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIGY0YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBmbG9hdDhbXSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgZjhhcnIsCisgICAgICAgQ0FTVChjb2w0IGFzIG51 bWVyaWMoMTAsMSlbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgbnVtYXJy CitGUk9NIHRlc3Rfc2FmZWNhc3QxOworCitTRUxFQ1QgY29sMSBhcyBmbG9hdDQsCisgICAgICAg Q0FTVChjb2wxIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRv X2ludDIsCisgICAgICAgQ0FTVChjb2wxIEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2ludDQsCisgICAgICAgQ0FTVChjb2wxIEFTIG9pZCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fb2lkLAorICAgICAgIENBU1QoY29sMSBhcyBp bnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4LAorICAgICAg IENBU1QoY29sMSBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDEgYXMgZmxvYXQ4IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wxIGFzIG51bWVy aWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWMsCisgICAg ICAgQ0FTVChjb2wxIGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDE7CisKK1NFTEVD VCBjb2wyIGFzIGZsb2F0OCwKKyAgICAgICBDQVNUKGNvbDIgQVMgaW50MiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDIgQVMgaW50 NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAgICAgICBD QVNUKGNvbDIgQVMgb2lkIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19v aWQsCisgICAgICAgQ0FTVChjb2wyIGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wyIGFzIGZsb2F0NCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sMiBh cyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwK KyAgICAgICBDQVNUKGNvbDIgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDIgYXMgbnVtZXJpYygxMCwxKSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJP TSB0ZXN0X3NhZmVjYXN0MTsKKworLS0gc2FmZSB0eXBlIGNhc3QgZm9yIHR5cGUgZGF0ZS90aW1l c3RhbXAvdGltZXN0YW1wdHovaW50ZXJ2YWwKK0NSRUFURSBUQUJMRSB0ZXN0X3NhZmVjYXN0MigK KyAgY29sMCBkYXRlLCBjb2wxIHRpbWVzdGFtcCwgY29sMiB0aW1lc3RhbXB0eiwKKyAgY29sMyBp bnRlcnZhbCwgY29sNCB0aW1lLCBjb2w1IHRpbWV0eik7CitJTlNFUlQgSU5UTyB0ZXN0X3NhZmVj YXN0MiBWQUxVRVMKKygnLWluZmluaXR5JywgJy1pbmZpbml0eScsICctaW5maW5pdHknLCAnLWlu ZmluaXR5JywKKyAgJzIwMDMtMDMtMDcgMTU6MzY6MzkgQW1lcmljYS9OZXdfWW9yaycsICcyMDAz LTA3LTA3IDE1OjM2OjM5IEFtZXJpY2EvTmV3X1lvcmsnKSwKKygnLWluZmluaXR5JywgJ2luZmlu aXR5JywgJ2luZmluaXR5JywgJ2luZmluaXR5JywgJzExOjU5OjU5Ljk5IFBNJywgJzExOjU5OjU5 Ljk5IFBNIFBEVCcpOworCitTRUxFQ1QgY29sMCBhcyBkYXRlLAorICAgICAgIENBU1QoY29sMCBB UyB0aW1lc3RhbXB0eiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGlt ZXN0YW1wdHosCisgICAgICAgQ0FTVChjb2wwIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IpIGFzIHRvX2RhdGUsCisgICAgICAgQ0FTVChjb2wwIEFTIHRpbWUgREVGQVVM VCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAgICAgIENBU1QoY29s MCBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWV0 eiwKKyAgICAgICBDQVNUKGNvbDAgQVMgdGltZXN0YW1wKDIpIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b190aW1lc3RhbXBfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7 CisKK1NFTEVDVCBjb2wxIGFzIHRpbWVzdGFtcCwKKyAgICAgICBDQVNUKGNvbDEgQVMgdGltZXN0 YW1wdHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6 LAorICAgICAgIENBU1QoY29sMSBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b19kYXRlLAorICAgICAgIENBU1QoY29sMSBBUyB0aW1lIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDEgQVMgdGlt ZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAg ICAgQ0FTVChjb2wxIEFTIHRpbWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fdGltZXN0YW1wX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworCitTRUxF Q1QgY29sMiBhcyB0aW1lc3RhbXB0eiwKKyAgICAgICBDQVNUKGNvbDIgQVMgdGltZXN0YW1wdHog REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAg ICAgIENBU1QoY29sMiBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19kYXRlLAorICAgICAgIENBU1QoY29sMiBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDIgQVMgdGltZXR6IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FT VChjb2wyIEFTIHRpbWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9fdGltZXN0YW1wX3NjYWxlCitGUk9NIHRlc3Rfc2FmZWNhc3QyOworCitTRUxFQ1QgY29s MyBhcyBpbnRlcnZhbCwKKyAgICAgICBDQVNUKGNvbDMgQVMgdGltZXN0YW1wdHogREVGQVVMVCBO VUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzdGFtcHR6LAorICAgICAgIENBU1Qo Y29sMyBBUyBkYXRlIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19kYXRl LAorICAgICAgIENBU1QoY29sMyBBUyB0aW1lIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b190aW1lcywKKyAgICAgICBDQVNUKGNvbDMgQVMgdGltZXR6IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2wzIEFT IHRpbWVzdGFtcCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGlt ZXN0YW1wX3NjYWxlLAorICAgICAgIENBU1QoY29sMyBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVzdF9z YWZlY2FzdDI7CisKK1NFTEVDVCBjb2w0IGFzIHRpbWUsCisgICAgICAgQ0FTVChjb2w0IEFTIHRp bWUoMikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX3RpbWVzLAorICAg ICAgIENBU1QoY29sNCBBUyB0aW1ldHogREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1Ip IElTIE5PVCBOVUxMIGFzIHRvX3RpbWV0eiwKKyAgICAgICBDQVNUKGNvbDQgQVMgaW50ZXJ2YWwo MikgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludGVydmFsLAorICAg ICAgIENBU1QoY29sNCBBUyBpbnRlcnZhbCgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9faW50ZXJ2YWxfc2NhbGUKK0ZST00gdGVzdF9zYWZlY2FzdDI7CisKK1NFTEVD VCBjb2w1IGFzIHRpbWV0eiwKKyAgICAgICBDQVNUKGNvbDUgQVMgdGltZSBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZSwKKyAgICAgICBDQVNUKGNvbDUgQVMgdGlt ZSgyKSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZV9zY2FsZSwK KyAgICAgICBDQVNUKGNvbDUgQVMgdGltZXR6IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVS Uk9SKSBhcyB0b190aW1ldHosCisgICAgICAgQ0FTVChjb2w1IEFTIHRpbWV0eig2KSBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fdGltZXR6X3NjYWxlLAorICAgICAgIENB U1QoY29sNSBBUyBpbnRlcnZhbCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9faW50ZXJ2YWwsCisgICAgICAgQ0FTVChjb2w1IEFTIGludGVydmFsKDIpIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnRlcnZhbF9zY2FsZQorRlJPTSB0ZXN0X3Nh ZmVjYXN0MjsKKworLS0gdGVzdCBkZXBhcnNlCitTRVQgZGF0ZXN0eWxlIFRPIElTTywgWU1EOwor Q1JFQVRFIFZJRVcgc2FmZWNhc3R2aWV3IEFTCitTRUxFQ1QgQ0FTVCgnMTIzNCcgYXMgY2hhcigz KSBERUZBVUxUIC0xMTExIE9OIENPTlZFUlNJT04gRVJST1IpLAorICAgICAgIENBU1QoMSBhcyBk YXRlIERFRkFVTFQgKCgnMjAyNS1EZWMtMDYnOjpkYXRlICsgcmFuZG9tKG1pbj0+MSwgbWF4PT4x OjppbnQpKSkgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDAsCisgICAgICAgQ0FTVChBUlJB WVtbJzEnXSwgWyd0aHJlZSddLFsnYSddXSBBUyBpbnRbXSBERUZBVUxUICd7MSwyfScgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgY2FzdDEsCisgICAgICAgQ0FTVChBUlJBWVtbJzEnLCAnMiddLCBb J3RocmVlJywgJ2EnXV0gQVMgZGF0ZVtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KSBhcyBjYXN0MiwKKyAgICAgICBDQVNUKEFSUkFZWyd0aHJlZSddIEFTIElOVFtdIERFRkFVTFQg J3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MzsKK1xzdiBzYWZlY2FzdHZpZXcK K1NFTEVDVCAqIEZST00gc2FmZWNhc3R2aWV3OworCitDUkVBVEUgVklFVyBzYWZlY2FzdHZpZXcx IEFTCitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnXSwgWyd0aHJlZSddLFsnYSddXSBBUyBkX2ludF9h cnIKKyAgICAgICAgICAgIERFRkFVTFQgJ3s0MSw0M30nIE9OIENPTlZFUlNJT04gRVJST1IpIGFz IGNhc3QxLAorICAgICAgIENBU1QoQVJSQVlbWycxJywgJzInLCAxLjFdLCBbJ3RocmVlJywgdHJ1 ZSwgQicwMSddXSBBUyBkX2ludF9hcnIKKyAgICAgICAgICAgIERFRkFVTFQgJ3s0MSw0M30nIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIGNhc3QyOworXHN2IHNhZmVjYXN0dmlldzEKK1NFTEVDVCAq IEZST00gc2FmZWNhc3R2aWV3MTsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxF Q1QgQ0FTVCgnMScgfHwgJ2EnIEFTIGludCBERUZBVUxUIDIgT04gQ09OVkVSU0lPTiBFUlJPUik7 CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBDQVNUKCdhJyBBUyBpbnQgREVG QVVMVCAyIE9OIENPTlZFUlNJT04gRVJST1IpOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KSBTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnLCAnMicsIDEuMV0sIFsndGhyZWUnLCB0cnVlLCBCJzAx J11dIEFTIGRfaW50X2FyciBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisKK1JF U0VUIGRhdGVzdHlsZTsKKworRFJPUCBWSUVXIHNhZmVjYXN0dmlldzsKK0RST1AgVklFVyBzYWZl Y2FzdHZpZXcxOworRFJPUCBUQUJMRSB0ZXN0X3NhZmVjYXN0MDsKK0RST1AgVEFCTEUgdGVzdF9z YWZlY2FzdDE7CitEUk9QIFRBQkxFIHRlc3Rfc2FmZWNhc3QyOworRFJPUCBUQUJMRSB0Y2FzdDsK K0RST1AgVEFCTEUgdGNhc3QxOworRFJPUCBGVU5DVElPTiByZXRfaW50ODsKK0RST1AgRlVOQ1RJ T04gcmV0X3NldGludDsKK0RST1AgVFlQRSBjb21wX2RvbWFpbl93aXRoX3R5cG1vZDsKK0RST1Ag VFlQRSBjb21wMjsKK0RST1AgRE9NQUlOIGRfbm90YTsKK0RST1AgRE9NQUlOIGRfdmFyY2hhcjsK K0RST1AgRE9NQUlOIGRfaW50OGFycjsKK0RST1AgRE9NQUlOIGRfaW50ODsKK0RST1AgRE9NQUlO IGRfaW50NDJhcnIxOworRFJPUCBET01BSU4gZF9pbnQ0MmFycjsKK0RST1AgRE9NQUlOIGRfaW50 NDI7CitEUk9QIERPTUFJTiBkX2NoYXIzX25vdF9udWxsOworRFJPUCBET01BSU4gZF9udW1lcmlj OworUkVTRVQgZXh0cmFfZmxvYXRfZGlnaXRzOworUkVTRVQgbGNfbW9uZXRhcnk7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfY2FzdC5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jcmVhdGVfY2FzdC5zcWwKaW5kZXggMzIxODc4NTNjYzcuLjBhMTVhNzk1ZDg3IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfY2FzdC5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2Nhc3Quc3FsCkBAIC02Miw2ICs2Miw3IEBAICQkIFNF TEVDVCAoJ2Jhcic6OnRleHQgfHwgJDE6OnRleHQpOyAkJDsKIAogQ1JFQVRFIENBU1QgKGludDQg QVMgY2FzdHRlc3R0eXBlKSBXSVRIIEZVTkNUSU9OIGJhcl9pbnQ0X3RleHQoaW50NCkgQVMgSU1Q TElDSVQ7CiBTRUxFQ1QgMTIzNDo6aW50NDo6Y2FzdHRlc3R0eXBlOyAtLSBTaG91bGQgd29yayBu b3cKK1NFTEVDVCBDQVNUKDEyMzQ6OmludDQgQVMgY2FzdHRlc3R0eXBlIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKIAogLS0gY2hlY2sgZGVwZW5kZW5jaWVzIGdl bmVyYXRlZCBmb3IgdGhhdAogU0VMRUNUIHBnX2Rlc2NyaWJlX29iamVjdChjbGFzc2lkLCBvYmpp ZCwgb2Jqc3ViaWQpIGFzIG9iaiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Vx dWl2Y2xhc3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXF1aXZjbGFzcy5zcWwKaW5kZXgg N2ZjMjE1OTM0OWIuLjk2ZTZmNzNjN2I2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9lcXVpdmNsYXNzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9lcXVpdmNsYXNzLnNx bApAQCAtOTgsNiArOTgsMTEgQEAgY3JlYXRlIGZ1bmN0aW9uIGludDhhbGlhczFjbXAoaW50OCwg aW50OGFsaWFzMSkgcmV0dXJucyBpbnQKIGFsdGVyIG9wZXJhdG9yIGZhbWlseSBpbnRlZ2VyX29w cyB1c2luZyBidHJlZSBhZGQKICAgZnVuY3Rpb24gMSBpbnQ4YWxpYXMxY21wIChpbnQ4LCBpbnQ4 YWxpYXMxKTsKIAorLS0gaW50OGFsaWFzMiBiaW5hcnktY29lcmNpYmxlIHRvIGludDgsIHRoaXMg c2hvdWxkIG5vdCBmYWlsCitzZWxlY3QgY2FzdCgnMSc6OmludDggYXMgaW50OGFsaWFzMiBkZWZh dWx0IG51bGwgb24gY29udmVyc2lvbiBlcnJvcik7CitzZWxlY3QgY2FzdCgnMSc6OmludDhhbGlh czIgYXMgaW50OCBkZWZhdWx0IG51bGwgb24gY29udmVyc2lvbiBlcnJvcik7CitzZWxlY3QgY2Fz dCgnYScgYXMgaW50OGFsaWFzMiBkZWZhdWx0IG51bGwgb24gY29udmVyc2lvbiBlcnJvcik7CisK IGNyZWF0ZSB0YWJsZSBlYzAgKGZmIGludDggcHJpbWFyeSBrZXksIGYxIGludDgsIGYyIGludDgp OwogY3JlYXRlIHRhYmxlIGVjMSAoZmYgaW50OCBwcmltYXJ5IGtleSwgZjEgaW50OGFsaWFzMSwg ZjIgaW50OGFsaWFzMik7CiBjcmVhdGUgdGFibGUgZWMyICh4ZiBpbnQ4IHByaW1hcnkga2V5LCB4 MSBpbnQ4YWxpYXMxLCB4MiBpbnQ4YWxpYXMyKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3htbC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC94bWwuc3FsCmluZGV4IDBlYTRm NTA4ODM3Li5kZjNhMDZmNGQ4MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwveG1s LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC94bWwuc3FsCkBAIC05LDYgKzksOCBAQCBJ TlNFUlQgSU5UTyB4bWx0ZXN0IFZBTFVFUyAoMywgJzx3cm9uZycpOwogCiBTRUxFQ1QgKiBGUk9N IHhtbHRlc3Q7CiAKK1NFTEVDVCBDQVNUKCc8d3JvbmcnOjp0ZXh0IEFTIHhtbCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9feG1sOworCiAtLSB0ZXN0IG5vbi10aHJvd2lu ZyBBUEksIHRvbwogU0VMRUNUIHBnX2lucHV0X2lzX3ZhbGlkKCc8dmFsdWU+b25lPC92YWx1ZT4n LCAneG1sJyk7CiBTRUxFQ1QgcGdfaW5wdXRfaXNfdmFsaWQoJzx2YWx1ZT5vbmU8LycsICd4bWwn KTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZTNjMTAwN2FiZGYuLjgzNTQ5OTEzMGFl IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjc0MSw2ICsyNzQxLDggQEAgU1RSTEVO CiBTVgogU1lOQ0hST05JWkFUSU9OX0JBUlJJRVIKIFNZU1RFTV9JTkZPCitTYWZlVHlwZUNhc3RF eHByCitTYWZlVHlwZUNhc3RTdGF0ZQogU2FtcGxlU2NhbgogU2FtcGxlU2NhbkdldFNhbXBsZVNp emVfZnVuY3Rpb24KIFNhbXBsZVNjYW5TdGF0ZQotLSAKMi4zNC4xCgo= --0000000000009ff6c5064e530eb4 Content-Type: application/x-patch; name="v28-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Disposition: attachment; filename="v28-0001-error-safe-for-casting-text-to-other-types-per-pg_cast.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mneqd6q40 RnJvbSA0MjEwYWI0MDg2MjdjNjAxNjBmYWU0YzU1YjJiMzFmODc0YWY5NTE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMzAgTWFyIDIwMjYgMjI6Mjg6NTggKzA4MDAKU3ViamVjdDogW1BBVENIIHYy OCAxLzJdIGVycm9yIHNhZmUgZm9yIGNhc3RpbmcgdGV4dCB0byBvdGhlciB0eXBlcyBwZXIKIHBn X2Nhc3QKCnNlbGVjdCBjYXN0c291cmNlOjpyZWd0eXBlLCBjYXN0dGFyZ2V0OjpyZWd0eXBlLCBj YXN0ZnVuYywKY2FzdGNvbnRleHQsY2FzdG1ldGhvZCwgcHAucHJvc3JjLCBwcC5wcm9uYW1lIGZy b20gcGdfY2FzdCBwYyBqb2luIHBnX3Byb2MgcHAKb24gcHAub2lkID0gcGMuY2FzdGZ1bmMgYW5k IHBjLmNhc3RmdW5jID4gMAphbmQgY2FzdHNvdXJjZTo6cmVndHlwZSA9ICd0ZXh0Jzo6cmVndHlw ZQpvcmRlciBieSBjYXN0c291cmNlOjpyZWd0eXBlOwoKIGNhc3Rzb3VyY2UgfCBjYXN0dGFyZ2V0 IHwgY2FzdGZ1bmMgfCBjYXN0Y29udGV4dCB8IGNhc3RtZXRob2QgfCAgICBwcm9zcmMgICAgIHwg cHJvbmFtZQotLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KIHRleHQgICAgICAgfCBy ZWdjbGFzcyAgIHwgICAgIDEwNzkgfCBpICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X3Jl Z2NsYXNzIHwgcmVnY2xhc3MKIHRleHQgICAgICAgfCAiY2hhciIgICAgIHwgICAgICA5NDQgfCBh ICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ZXh0X2NoYXIgICAgIHwgY2hhcgogdGV4dCAgICAg ICB8IG5hbWUgICAgICAgfCAgICAgIDQwNyB8IGkgICAgICAgICAgIHwgZiAgICAgICAgICB8IHRl eHRfbmFtZSAgICAgfCBuYW1lCiB0ZXh0ICAgICAgIHwgeG1sICAgICAgICB8ICAgICAyODk2IHwg ZSAgICAgICAgICAgfCBmICAgICAgICAgIHwgdGV4dHRveG1sICAgICB8IHhtbAooNCByb3dzKQoK QWxyZWFkeSBlcnJvciBzYWZlOiB0ZXh0X25hbWUsIHRleHRfY2hhciwgdGV4dHRveG1sLgoKQXV0 aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBB bmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KUmV2aWV3ZWQtYnk6IEFtdWwgU3Vs IDxzdWxhbXVsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENvcmV5IEh1aW5rZXIgPGNvcmV5Lmh1 aW5rZXJAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRGtMTT1m djFKZlk0VWZhLWpjd3dOYmpRaXhOVmlza1E4alp1M1R6X3A2NTZpXzRoUUBtYWlsLmdtYWlsLmNv bQpDb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTk0 MQotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgfCA0NiArKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMgfCAx MyArKysrKysrLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIHwgMTAgKysrKyst LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCB8ICA2ICsrKysrCiBzcmMvaW5jbHVk ZS91dGlscy92YXJsZW5hLmggICAgIHwgIDEgKwogNSBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRp b25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L25hbWVzcGFjZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwppbmRleCA1NmI4 N2Q4NzhlOC4uMGY2M2M4MjZlODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFt ZXNwYWNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwpAQCAtNDQyLDYg KzQ0MiwxNiBAQCBPaWQKIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5nZVZhciAq cmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJIHVpbnQzMiBmbGFncywKIAkJCQkJ CSBSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmNhbGxiYWNrX2FyZykK K3sKKwlyZXR1cm4gUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkU2FmZShyZWxhdGlvbiwgbG9ja21v ZGUsIGZsYWdzLAorCQkJCQkJCQkJCWNhbGxiYWNrLCBjYWxsYmFja19hcmcsCisJCQkJCQkJCQkJ TlVMTCk7Cit9CisKK09pZAorUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkU2FmZShjb25zdCBSYW5n ZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLCB1aW50MzIgZmxhZ3MsCisJCQkJCQkJ IFJhbmdlVmFyR2V0UmVsaWRDYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqY2FsbGJhY2tfYXJnLAor CQkJCQkJCSBOb2RlICplc2NvbnRleHQpCiB7CiAJdWludDY0CQlpbnZhbF9jb3VudDsKIAlPaWQJ CQlyZWxJZDsKQEAgLTQ1OCw3ICs0NjgsNyBAQCBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQoY29u c3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAlpZiAocmVsYXRpb24t PmNhdGFsb2duYW1lKQogCXsKIAkJaWYgKHN0cmNtcChyZWxhdGlvbi0+Y2F0YWxvZ25hbWUsIGdl dF9kYXRhYmFzZV9uYW1lKE15RGF0YWJhc2VJZCkpICE9IDApCi0JCQllcmVwb3J0KEVSUk9SLAor CQkJZXJldHVybihlc2NvbnRleHQsIEludmFsaWRPaWQsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVycm1zZygiY3Jvc3MtZGF0YWJhc2UgcmVm ZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiBcIiVzLiVzLiVzXCIiLAogCQkJCQkJCXJlbGF0 aW9uLT5jYXRhbG9nbmFtZSwgcmVsYXRpb24tPnNjaGVtYW5hbWUsCkBAIC01MTUsNyArNTI1LDcg QEAgUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKGNvbnN0IFJhbmdlVmFyICpyZWxhdGlvbiwgTE9D S01PREUgbG9ja21vZGUsCiAJCQkJCSAqIHJldHVybiBJbnZhbGlkT2lkLgogCQkJCQkgKi8KIAkJ CQkJaWYgKG5hbWVzcGFjZUlkICE9IG15VGVtcE5hbWVzcGFjZSkKLQkJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQllcmV0dXJuKGVzY29udGV4dCwgSW52YWxpZE9pZCwKIAkJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1RBQkxFX0RFRklOSVRJT04pLAogCQkJCQkJCQkgZXJybXNnKCJ0 ZW1wb3JhcnkgdGFibGVzIGNhbm5vdCBzcGVjaWZ5IGEgc2NoZW1hIG5hbWUiKSkpOwogCQkJCX0K QEAgLTU5NSwxNCArNjA1LDIwIEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChjb25zdCBSYW5n ZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCQl7CiAJCQlpbnQJCQllbGV2ZWwg PSAoZmxhZ3MgJiBSVlJfU0tJUF9MT0NLRUQpID8gREVCVUcxIDogRVJST1I7CiAKLQkJCWlmIChy ZWxhdGlvbi0+c2NoZW1hbmFtZSkKKwkJCWlmIChlc2NvbnRleHQgPT0gTlVMTCkKIAkJCQllcmVw b3J0KGVsZXZlbCwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfTE9DS19OT1RfQVZBSUxBQkxFKSwK KwkJCQkJCSByZWxhdGlvbi0+c2NoZW1hbmFtZSA/CiAJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg b2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlcy4lc1wiIiwKLQkJCQkJCQkJcmVsYXRpb24tPnNj aGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSkpOworCQkJCQkJCQlyZWxhdGlvbi0+c2NoZW1h bmFtZSwgcmVsYXRpb24tPnJlbG5hbWUpIDoKKwkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBvYnRh aW4gbG9jayBvbiByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSkp KTsKIAkJCWVsc2UKLQkJCQllcmVwb3J0KGVsZXZlbCwKKwkJCQllcmV0dXJuKGVzY29udGV4dCwg SW52YWxpZE9pZCwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfTE9DS19OT1RfQVZBSUxBQkxFKSwK KwkJCQkJCSByZWxhdGlvbi0+c2NoZW1hbmFtZSA/CisJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg b2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlcy4lc1wiIiwKKwkJCQkJCQkJcmVsYXRpb24tPnNj aGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSA6CiAJCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg b2J0YWluIGxvY2sgb24gcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJCQkJcmVsYXRpb24tPnJlbG5h bWUpKSk7CiAKQEAgLTYyOCwxNCArNjQ0LDIwIEBAIFJhbmdlVmFyR2V0UmVsaWRFeHRlbmRlZChj b25zdCBSYW5nZVZhciAqcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCXsKIAkJaW50CQkJ ZWxldmVsID0gbWlzc2luZ19vayA/IERFQlVHMSA6IEVSUk9SOwogCi0JCWlmIChyZWxhdGlvbi0+ c2NoZW1hbmFtZSkKKwkJaWYgKGVzY29udGV4dCA9PSBOVUxMKQogCQkJZXJlcG9ydChlbGV2ZWws CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKKwkJCQkJIHJlbGF0aW9u LT5zY2hlbWFuYW1lID8KIAkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlcy4lc1wiIGRvZXMgbm90 IGV4aXN0IiwKLQkJCQkJCQlyZWxhdGlvbi0+c2NoZW1hbmFtZSwgcmVsYXRpb24tPnJlbG5hbWUp KSk7CisJCQkJCQkJcmVsYXRpb24tPnNjaGVtYW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSA6CisJ CQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJcmVs YXRpb24tPnJlbG5hbWUpKSk7CiAJCWVsc2UKLQkJCWVyZXBvcnQoZWxldmVsLAorCQkJZXJldHVy bihlc2NvbnRleHQsIEludmFsaWRPaWQsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X1RBQkxFKSwKKwkJCQkJIHJlbGF0aW9uLT5zY2hlbWFuYW1lID8KKwkJCQkJIGVycm1zZygicmVs YXRpb24gXCIlcy4lc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlyZWxhdGlvbi0+c2NoZW1h bmFtZSwgcmVsYXRpb24tPnJlbG5hbWUpIDoKIAkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlc1wi IGRvZXMgbm90IGV4aXN0IiwKIAkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSkpKTsKIAl9CkBAIC0z NjI0LDYgKzM2NDYsMTIgQEAgZ2V0X25hbWVzcGFjZV9vaWQoY29uc3QgY2hhciAqbnNwbmFtZSwg Ym9vbCBtaXNzaW5nX29rKQogICovCiBSYW5nZVZhciAqCiBtYWtlUmFuZ2VWYXJGcm9tTmFtZUxp c3QoY29uc3QgTGlzdCAqbmFtZXMpCit7CisJcmV0dXJuIG1ha2VSYW5nZVZhckZyb21OYW1lTGlz dFNhZmUobmFtZXMsIE5VTEwpOworfQorCitSYW5nZVZhciAqCittYWtlUmFuZ2VWYXJGcm9tTmFt ZUxpc3RTYWZlKGNvbnN0IExpc3QgKm5hbWVzLCBOb2RlICplc2NvbnRleHQpCiB7CiAJUmFuZ2VW YXIgICAqcmVsID0gbWFrZVJhbmdlVmFyKE5VTEwsIE5VTEwsIC0xKTsKIApAQCAtMzY0Miw3ICsz NjcwLDcgQEAgbWFrZVJhbmdlVmFyRnJvbU5hbWVMaXN0KGNvbnN0IExpc3QgKm5hbWVzKQogCQkJ cmVsLT5yZWxuYW1lID0gc3RyVmFsKGx0aGlyZChuYW1lcykpOwogCQkJYnJlYWs7CiAJCWRlZmF1 bHQ6Ci0JCQllcmVwb3J0KEVSUk9SLAorCQkJZXJldHVybihlc2NvbnRleHQsIE5VTEwsCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkJIGVycm1zZygiaW1wcm9wZXIg cmVsYXRpb24gbmFtZSAodG9vIG1hbnkgZG90dGVkIG5hbWVzKTogJXMiLAogCQkJCQkJCU5hbWVM aXN0VG9TdHJpbmcobmFtZXMpKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JlZ3Byb2MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKaW5kZXggZWUzNGQx ZDg1ZjguLjYwNGUxOWExY2I5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmVn cHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKQEAgLTE5MDEsMTIg KzE5MDEsMTkgQEAgdGV4dF9yZWdjbGFzcyhQR19GVU5DVElPTl9BUkdTKQogCXRleHQJICAgKnJl bG5hbWUgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKIAlPaWQJCQlyZXN1bHQ7CiAJUmFuZ2VWYXIg ICAqcnY7CisJTGlzdAkgICAqbmFtZWxpc3Q7CiAKLQlydiA9IG1ha2VSYW5nZVZhckZyb21OYW1l TGlzdCh0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdChyZWxuYW1lKSk7CisJbmFtZWxpc3QgPSB0ZXh0 VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUocmVsbmFtZSwgZmNpbmZvLT5jb250ZXh0KTsKKwlpZiAo U09GVF9FUlJPUl9PQ0NVUlJFRChmY2luZm8tPmNvbnRleHQpKQorCQlQR19SRVRVUk5fTlVMTCgp OworCisJcnYgPSBtYWtlUmFuZ2VWYXJGcm9tTmFtZUxpc3RTYWZlKG5hbWVsaXN0LCBmY2luZm8t PmNvbnRleHQpOworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGZjaW5mby0+Y29udGV4dCkpCisJ CVBHX1JFVFVSTl9OVUxMKCk7CiAKIAkvKiBXZSBtaWdodCBub3QgZXZlbiBoYXZlIHBlcm1pc3Np b25zIG9uIHRoaXMgcmVsYXRpb247IGRvbid0IGxvY2sgaXQuICovCi0JcmVzdWx0ID0gUmFuZ2VW YXJHZXRSZWxpZChydiwgTm9Mb2NrLCBmYWxzZSk7Ci0KKwlyZXN1bHQgPSBSYW5nZVZhckdldFJl bGlkRXh0ZW5kZWRTYWZlKHJ2LCBOb0xvY2ssIDAsIE5VTEwsIE5VTEwsCisJCQkJCQkJCQkJICBm Y2luZm8tPmNvbnRleHQpOwogCVBHX1JFVFVSTl9PSUQocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKaW5kZXggN2IxZWU2MWJkZTYuLjU2ZGEzZDdiNDQwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKQEAgLTI3MTcsNiArMjcxNywxMiBAQCBuYW1lX3RleHQoUEdfRlVOQ1RJT05f QVJHUykKICAqLwogTGlzdCAqCiB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFs KQoreworCXJldHVybiB0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dHZhbCwgTlVMTCk7 Cit9CisKK0xpc3QgKgordGV4dFRvUXVhbGlmaWVkTmFtZUxpc3RTYWZlKHRleHQgKnRleHR2YWws IE5vZGUgKmVzY29udGV4dCkKIHsKIAljaGFyCSAgICpyYXduYW1lOwogCUxpc3QJICAgKnJlc3Vs dCA9IE5JTDsKQEAgLTI3MjgsMTIgKzI3MzQsMTIgQEAgdGV4dFRvUXVhbGlmaWVkTmFtZUxpc3Qo dGV4dCAqdGV4dHZhbCkKIAlyYXduYW1lID0gdGV4dF90b19jc3RyaW5nKHRleHR2YWwpOwogCiAJ aWYgKCFTcGxpdElkZW50aWZpZXJTdHJpbmcocmF3bmFtZSwgJy4nLCAmbmFtZWxpc3QpKQotCQll cmVwb3J0KEVSUk9SLAorCQllcmV0dXJuKGVzY29udGV4dCwgTklMLAogCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9OQU1FKSwKIAkJCQkgZXJybXNnKCJpbnZhbGlkIG5hbWUgc3ludGF4Iikp KTsKIAogCWlmIChuYW1lbGlzdCA9PSBOSUwpCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4o ZXNjb250ZXh0LCBOSUwsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX05BTUUpLAogCQkJ CSBlcnJtc2coImludmFsaWQgbmFtZSBzeW50YXgiKSkpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2Uu aAppbmRleCA5NDUzYTNlNDkzMi4uN2YzMTQxYmEyN2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvbmFtZXNwYWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2Uu aApAQCAtMTAzLDYgKzEwMywxMSBAQCBleHRlcm4gT2lkCVJhbmdlVmFyR2V0UmVsaWRFeHRlbmRl ZChjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUs IHVpbnQzMiBmbGFncywKIAkJCQkJCQkJCSBSYW5nZVZhckdldFJlbGlkQ2FsbGJhY2sgY2FsbGJh Y2ssCiAJCQkJCQkJCQkgdm9pZCAqY2FsbGJhY2tfYXJnKTsKK2V4dGVybiBPaWQgUmFuZ2VWYXJH ZXRSZWxpZEV4dGVuZGVkU2FmZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCisJCQkJCQkJCQkJ TE9DS01PREUgbG9ja21vZGUsIHVpbnQzMiBmbGFncywKKwkJCQkJCQkJCQlSYW5nZVZhckdldFJl bGlkQ2FsbGJhY2sgY2FsbGJhY2ssCisJCQkJCQkJCQkJdm9pZCAqY2FsbGJhY2tfYXJnLAorCQkJ CQkJCQkJCU5vZGUgKmVzY29udGV4dCk7CiBleHRlcm4gT2lkCVJhbmdlVmFyR2V0Q3JlYXRpb25O YW1lc3BhY2UoY29uc3QgUmFuZ2VWYXIgKm5ld1JlbGF0aW9uKTsKIGV4dGVybiBPaWQJUmFuZ2VW YXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKFJhbmdlVmFyICpyZWxhdGlvbiwKIAkJCQkJ CQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSwKQEAgLTE2OCw2ICsxNzMsNyBAQCBleHRlcm4gT2lk CUxvb2t1cENyZWF0aW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKm5zcG5hbWUpOwogZXh0ZXJuIHZv aWQgQ2hlY2tTZXROYW1lc3BhY2UoT2lkIG9sZE5zcE9pZCwgT2lkIG5zcE9pZCk7CiBleHRlcm4g T2lkCVF1YWxpZmllZE5hbWVHZXRDcmVhdGlvbk5hbWVzcGFjZShjb25zdCBMaXN0ICpuYW1lcywg Y2hhciAqKm9iam5hbWVfcCk7CiBleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZyb21OYW1l TGlzdChjb25zdCBMaXN0ICpuYW1lcyk7CitleHRlcm4gUmFuZ2VWYXIgKm1ha2VSYW5nZVZhckZy b21OYW1lTGlzdFNhZmUoY29uc3QgTGlzdCAqbmFtZXMsIE5vZGUgKmVzY29udGV4dCk7CiBleHRl cm4gY2hhciAqTmFtZUxpc3RUb1N0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiBleHRlcm4gY2hh ciAqTmFtZUxpc3RUb1F1b3RlZFN0cmluZyhjb25zdCBMaXN0ICpuYW1lcyk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3ZhcmxlbmEuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Zhcmxl bmEuaAppbmRleCA0YjMyNTc0YTA3NS4uNWJjNzhhYTAyYzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3ZhcmxlbmEuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy92YXJsZW5hLmgKQEAg LTI3LDYgKzI3LDcgQEAgZXh0ZXJuIGludAl2YXJzdHJfbGV2ZW5zaHRlaW5fbGVzc19lcXVhbChj b25zdCBjaGFyICpzb3VyY2UsIGludCBzbGVuLAogCQkJCQkJCQkJCSAgaW50IGluc19jLCBpbnQg ZGVsX2MsIGludCBzdWJfYywKIAkJCQkJCQkJCQkgIGludCBtYXhfZCwgYm9vbCB0cnVzdGVkKTsK IGV4dGVybiBMaXN0ICp0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdCh0ZXh0ICp0ZXh0dmFsKTsKK2V4 dGVybiBMaXN0ICp0ZXh0VG9RdWFsaWZpZWROYW1lTGlzdFNhZmUodGV4dCAqdGV4dHZhbCwgTm9k ZSAqZXNjb250ZXh0KTsKIGV4dGVybiBib29sIFNwbGl0SWRlbnRpZmllclN0cmluZyhjaGFyICpy YXdzdHJpbmcsIGNoYXIgc2VwYXJhdG9yLAogCQkJCQkJCQkgIExpc3QgKipuYW1lbGlzdCk7CiBl eHRlcm4gYm9vbCBTcGxpdERpcmVjdG9yaWVzU3RyaW5nKGNoYXIgKnJhd3N0cmluZywgY2hhciBz ZXBhcmF0b3IsCi0tIAoyLjM0LjEKCg== --0000000000009ff6c5064e530eb4 Content-Type: application/octet-stream; name="0001-fixup-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSIO.nocfbot" Content-Disposition: attachment; filename="0001-fixup-CAST-expr-AS-newtype-DEFAULT-expr-ON-CONVERSIO.nocfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mneqdyfz2 RnJvbSA1YmU4MmU2Zjk1ZmRjZjc3YTMxNGU0MDNiYTM5OGQzZjc4ZDIyZjA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMzEgTWFyIDIwMjYgMTQ6NDk6MDIgKzA1MzAKU3ViamVjdDogW1BBVENIXSBmaXh1cCEgQ0FT VChleHByIEFTIG5ld3R5cGUgREVGQVVMVCBleHByIE9OIENPTlZFUlNJT04gRVJST1IpCgotLS0K IGNvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dC5vdXQgICAgICAgIHwgIDQgKy0KIGNvbnRy aWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dF8xLm91dCAgICAgIHwgIDQgKy0KIGRvYy9zcmMvc2dt bC9zeW50YXguc2dtbCAgICAgICAgICAgICAgICAgIHwgNTIgKysrKysrKysrKysrKystLS0tLS0t LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAgICAgIHwgIDQgKy0KIHNy Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgICAgIHwgMjEgKysrKystLS0tCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0ICAgICAgICB8ICA4ICsrLS0KIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0IHwgIDQgKy0KIDcgZmlsZXMgY2hh bmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29u dHJpYi9jaXRleHQvZXhwZWN0ZWQvY2l0ZXh0Lm91dCBiL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVk L2NpdGV4dC5vdXQKaW5kZXggNzNhM2Y5MjNiMDcuLjY5NjQ5YzJjNWUyIDEwMDY0NAotLS0gYS9j b250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHQub3V0CisrKyBiL2NvbnRyaWIvY2l0ZXh0L2V4 cGVjdGVkL2NpdGV4dC5vdXQKQEAgLTExLDEwICsxMSwxMCBAQCBXSEVSRSBvcGMub2lkID49IDE2 Mzg0IEFORCBOT1QgYW12YWxpZGF0ZShvcGMub2lkKTsKICgwIHJvd3MpCiAKIFNFTEVDVCBDQVNU KCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9S KTsgLS0gZXJyb3IKLUVSUk9SOiAgY2Fubm90IGNhc3QgdHlwZSBjaGFyYWN0ZXIgdG8gY2l0ZXh0 IHdoZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNwZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05W RVJTSU9OIEVSUk9SCitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgY2hhcmFjdGVyIHRvIGNpdGV4 dCB3aXRoIERFRkFVTFQgZXhwcmVzc2lvbiBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9S CiBMSU5FIDE6IFNFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0IERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSS4uLgogICAgICAgICAgICAgICAgICAgICBeCi1ERVRBSUw6ICBTYWZlIHR5 cGUgY2FzdCBmb3IgdXNlci1kZWZpbmVkIHR5cGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KK0RF VEFJTDogIFNhZmUgdHlwZSBjYXN0cyBmb3IgdXNlci1kZWZpbmVkIHR5cGVzIGFyZSBub3QgeWV0 IHN1cHBvcnRlZC4KIC0tIFRlc3QgdGhlIG9wZXJhdG9ycyBhbmQgaW5kZXhpbmcgZnVuY3Rpb25z CiAtLSBUZXN0ID0gYW5kIDw+LgogU0VMRUNUICdhJzo6Y2l0ZXh0ID0gJ2EnOjpjaXRleHQgQVMg dDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dF8xLm91dCBiL2Nv bnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dF8xLm91dAppbmRleCAyODc4OGFkZjI2ZC4uODk2 OTM5ZDM1Y2UgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY2l0ZXh0L2V4cGVjdGVkL2NpdGV4dF8xLm91 dAorKysgYi9jb250cmliL2NpdGV4dC9leHBlY3RlZC9jaXRleHRfMS5vdXQKQEAgLTExLDEwICsx MSwxMCBAQCBXSEVSRSBvcGMub2lkID49IDE2Mzg0IEFORCBOT1QgYW12YWxpZGF0ZShvcGMub2lk KTsKICgwIHJvd3MpCiAKIFNFTEVDVCBDQVNUKCdhYmMnOjpicGNoYXIgQVMgY2l0ZXh0IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKLUVSUk9SOiAgY2Fubm90IGNh c3QgdHlwZSBjaGFyYWN0ZXIgdG8gY2l0ZXh0IHdoZW4gREVGQVVMVCBleHByZXNzaW9uIGlzIHNw ZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitFUlJPUjogIGNhbm5vdCBj YXN0IHR5cGUgY2hhcmFjdGVyIHRvIGNpdGV4dCB3aXRoIERFRkFVTFQgZXhwcmVzc2lvbiBpbiBD QVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCiBMSU5FIDE6IFNFTEVDVCBDQVNUKCdhYmMnOjpi cGNoYXIgQVMgY2l0ZXh0IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSS4uLgogICAgICAgICAgICAg ICAgICAgICBeCi1ERVRBSUw6ICBTYWZlIHR5cGUgY2FzdCBmb3IgdXNlci1kZWZpbmVkIHR5cGVz IGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KK0RFVEFJTDogIFNhZmUgdHlwZSBjYXN0cyBmb3IgdXNl ci1kZWZpbmVkIHR5cGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KIC0tIFRlc3QgdGhlIG9wZXJh dG9ycyBhbmQgaW5kZXhpbmcgZnVuY3Rpb25zCiAtLSBUZXN0ID0gYW5kIDw+LgogU0VMRUNUICdh Jzo6Y2l0ZXh0ID0gJ2EnOjpjaXRleHQgQVMgdDsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9z eW50YXguc2dtbCBiL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbAppbmRleCBhYTBmYzFlZjgxYy4u NDgyMzljNDVmZTIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwKQEAgLTIwNzEsMTAgKzIwNzEsNiBAQCBDQVNUICggPHJl cGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dHlwZTwv cmVwbGFjZWFibGU+CiAgICAgVGhlIDxsaXRlcmFsPkNBU1Q8L2xpdGVyYWw+IHN5bnRheCBjb25m b3JtcyB0byBTUUw7IHRoZSBzeW50YXggd2l0aAogICAgIDxsaXRlcmFsPjo6PC9saXRlcmFsPiBp cyBoaXN0b3JpY2FsIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4KICAgICB1 c2FnZS4KLSAgICBUaGUgZGVmYXVsdCBiZWhhdmlvciB3aGVuIG5vIDxsaXRlcmFsPk9OIENPTlZF UlNJT04gRVJST1I8L2xpdGVyYWw+IGNsYXVzZSBpcyBzcGVjaWZpZWQgaXMgZXF1aXZhbGVudCB0 bzoKLTxzeW5vcHNpcz4KLUNBU1QgKCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFi bGU+IEFTIDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4gRVJST1IgT04gQ09OVkVSU0lP TiBFUlJPUiApCi08L3N5bm9wc2lzPgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KQEAgLTIxMzAs MzMgKzIxMjYsNDcgQEAgQ0FTVCAoIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJs ZT4gQVMgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPgogICAgIDwvcGFyYT4KICAgIDwv bm90ZT4KIAotIDxzZWN0MyBpZD0ic3FsLXN5bnRheC10eXBlLWNhc3RzLXNhZmUiPgotICA8dGl0 bGU+U2FmZSBUeXBlIENhc3Q8L3RpdGxlPgotICAgPHBhcmE+Ci0gICAgQSB0eXBlIGNhc3QgbWF5 IG9jY2FzaW9uYWxseSBmYWlsLiBUbyBndWFyZCBhZ2FpbnN0IHN1Y2ggZmFpbHVyZXMsIHlvdSBj YW4KLSAgICBwcm92aWRlIGFuIDxsaXRlcmFsPk9OIENPTlZFUlNJT04gRVJST1I8L2xpdGVyYWw+ IGNsYXVzZSB0byBoYW5kbGUgcG90ZW50aWFsIGVycm9ycy4KLSAgICBUaGUgc3ludGF4IGZvciBz YWZlIHR5cGUgY2FzdCBpczoKKyAgIDxzZWN0MyBpZD0ic3FsLXN5bnRheC10eXBlLWNhc3RzLXNh ZmUiPgorICAgIDx0aXRsZT5TYWZlIFR5cGUgQ2FzdHM8L3RpdGxlPgorCisgICAgPHBhcmE+Cisg ICAgIEEgdHlwZSBjYXN0IG1heSBvY2Nhc2lvbmFsbHkgZmFpbCBhdCBydW4gdGltZS4gIFRvIGd1 YXJkIGFnYWluc3Qgc3VjaAorICAgICBmYWlsdXJlcywgeW91IGNhbiBwcm92aWRlIGFuIDxsaXRl cmFsPk9OIENPTlZFUlNJT04gRVJST1I8L2xpdGVyYWw+CisgICAgIGNsYXVzZSB0byBjb250cm9s IHdoYXQgaGFwcGVucyB3aGVuIGEgY2FzdCBmYWlscy4gIFRoZSBhdmFpbGFibGUgZm9ybXMKKyAg ICAgYXJlOgogPHN5bm9wc2lzPgorQ0FTVCAoIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBs YWNlYWJsZT4gQVMgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBOVUxMIE9OIENPTlZF UlNJT04gRVJST1IgKQogQ0FTVCAoIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJs ZT4gQVMgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBERUZBVUxUIDxyZXBsYWNlYWJs ZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gT04gQ09OVkVSU0lPTiBFUlJPUiApCitDQVNUICgg PHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGU+dHlw ZTwvcmVwbGFjZWFibGU+IEVSUk9SIE9OIENPTlZFUlNJT04gRVJST1IgKQogPC9zeW5vcHNpcz4K LSAgICBJZiB0aGUgdHlwZSBjYXN0IGZhaWxzLCBhbiBlcnJvciBpcyBub3QgcmFpc2VkLiAgSW5z dGVhZCwgZXZhbHVhdGlvbiBmYWxscwotICAgIGJhY2sgdG8gdGhlIGRlZmF1bHQgPHJlcGxhY2Vh YmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBzcGVjaWZpZWQgaW4gdGhlCi0gICAgPGxpdGVy YWw+T04gQ09OVkVSU0lPTiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNlLgotICAgIEF0IHByZXNlbnQs IHRoaXMgb25seSBzdXBwb3J0IGJ1aWx0LWluIHR5cGUgY2FzdHMsIHNlZSA8eHJlZiBsaW5rZW5k PSJjYXRhbG9nLXBnLWNhc3QiLz4uCi0gICAgVXNlci1kZWZpbmVkIHR5cGUgY2FzdHMgY3JlYXRl ZCB3aXRoIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVjYXN0Ij5DUkVBVEUgQ0FTVDwvbGluaz4K LSAgICBhcmUgbm90IHN1cHBvcnRlZC4KLSAgPC9wYXJhPgorICAgICBXaXRoIDxsaXRlcmFsPk5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUjwvbGl0ZXJhbD4sIGEgPGxpdGVyYWw+TlVMTDwvbGl0ZXJh bD4KKyAgICAgdmFsdWUgaXMgcmV0dXJuZWQgd2hlbiB0aGUgY2FzdCBmYWlscy4gIFdpdGggPGxp dGVyYWw+REVGQVVMVAorICAgICA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ IE9OIENPTlZFUlNJT04gRVJST1I8L2xpdGVyYWw+LAorICAgICB0aGUgZGVmYXVsdCA8cmVwbGFj ZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IGlzIGV2YWx1YXRlZCBhbmQKKyAgICAgcmV0 dXJuZWQgaW5zdGVhZC4gIFRoZSA8bGl0ZXJhbD5FUlJPUiBPTiBDT05WRVJTSU9OIEVSUk9SPC9s aXRlcmFsPgorICAgICBmb3JtIHJhaXNlcyBhbiBlcnJvciBvbiBmYWlsdXJlLCB3aGljaCBpcyBh bHNvIHRoZSBkZWZhdWx0IGJlaGF2aW9yCisgICAgIHdoZW4gbm8gPGxpdGVyYWw+T04gQ09OVkVS U0lPTiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNlIGlzIHNwZWNpZmllZC4KKyAgICA8L3BhcmE+CiAK ICAgICA8cGFyYT4KLSAgICBTb21lIGV4YW1wbGVzOgorICAgICBBdCBwcmVzZW50LCB0aGlzIG9u bHkgc3VwcG9ydHMgYnVpbHQtaW4gdHlwZSBjYXN0cyBsaXN0ZWQgaW4KKyAgICAgPHhyZWYgbGlu a2VuZD0iY2F0YWxvZy1wZy1jYXN0Ii8+LiAgVXNlci1kZWZpbmVkIHR5cGUgY2FzdHMgY3JlYXRl ZAorICAgICB3aXRoIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVjYXN0Ij5DUkVBVEUgQ0FTVDwv bGluaz4gYXJlIG5vdAorICAgICBzdXBwb3J0ZWQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+ CisgICAgIFNvbWUgZXhhbXBsZXM6CiA8c2NyZWVuPgorU0VMRUNUIENBU1QoJ25vdC1hLWRhdGUn IEFTIGRhdGUgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKzxsaW5lYW5ub3RhdGlvbj5SZXN1 bHQ6IDwvbGluZWFubm90YXRpb24+PGNvbXB1dGVyb3V0cHV0Pk5VTEw8L2NvbXB1dGVyb3V0cHV0 PgorU0VMRUNUIENBU1QoJ25vdC1hLWRhdGUnIEFTIGRhdGUgREVGQVVMVCAnMTk3MC0wMS0wMScg T04gQ09OVkVSU0lPTiBFUlJPUik7Cis8bGluZWFubm90YXRpb24+UmVzdWx0OiA8L2xpbmVhbm5v dGF0aW9uPjxjb21wdXRlcm91dHB1dD4xOTcwLTAxLTAxPC9jb21wdXRlcm91dHB1dD4KIFNFTEVD VCBDQVNUKFRFWFQgJ2Vycm9yJyBBUyBpbnRlZ2VyIERFRkFVTFQgMyBPTiBDT05WRVJTSU9OIEVS Uk9SKTsKIDxsaW5lYW5ub3RhdGlvbj5SZXN1bHQ6IDwvbGluZWFubm90YXRpb24+PGNvbXB1dGVy b3V0cHV0PjM8L2NvbXB1dGVyb3V0cHV0PgotU0VMRUNUIENBU1QoVEVYVCAnZXJyb3InIEFTIG51 bWVyaWMgREVGQVVMVCAxLjEgT04gQ09OVkVSU0lPTiBFUlJPUik7Ci08bGluZWFubm90YXRpb24+ UmVzdWx0OiA8L2xpbmVhbm5vdGF0aW9uPjxjb21wdXRlcm91dHB1dD4xLjE8L2NvbXB1dGVyb3V0 cHV0PgogPC9zY3JlZW4+CiAgICAgPC9wYXJhPgotICA8L3NlY3QzPgorICAgPC9zZWN0Mz4KICAg PC9zZWN0Mj4KIAogICA8c2VjdDIgaWQ9InNxbC1zeW50YXgtY29sbGF0ZS1leHBycyI+CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHIuYwppbmRleCA4NGE0OGU4ZTNmNi4uNTk0ODJmYWI1NmMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHIuYwpAQCAtNDc5NCw4ICs0Nzk0LDggQEAgRXhlY0luaXRTYWZlVHlwZUNh c3RFeHByKFNhZmVUeXBlQ2FzdEV4cHIgKnN0Y2V4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJ CQkgRXhwckV2YWxTdGVwICpzY3JhdGNoKQogewogCS8qCi0JICogQ29lcmNpb24gdG8gdGhlIHRh cmdldCB0eXBlIGZhaWxlZC4gRmFsbGluZyBiYWNrIHRvIHRoZSBERUZBVUxUCi0JICogZXhwcmVz c2lvbiBmcm9tIHRoZSBPTiBDT05WRVJTSU9OIEVSUk9SIGNsYXVzZSB0byBmaW5pc2guCisJICog SWYgdGhlcmUncyBubyBjYXN0IGV4cHJlc3Npb24gKGNhc3RleHByID09IE5VTEwpLCBvbmx5IHRo ZSBERUZBVUxUCisJICogZXhwcmVzc2lvbiBuZWVkcyB0byBiZSBldmFsdWF0ZWQ7IHNldCBpdCB1 cCBhbmQgcmV0dXJuIGVhcmx5LgogCSAqLwogCWlmIChzdGNleHByLT5jYXN0ZXhwciA9PSBOVUxM KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDgzYWRjNTk4NTY1Li5hODNkMGRkYTc2 ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0yNzg1LDExICsyNzg1LDcgQEAgdHJhbnNm b3JtVHlwZUNhc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpCiAJT2lkCQkJdGFy Z2V0VHlwZWNvbGw7CiAJaW50MzIJCXRhcmdldFR5cG1vZDsKIAlpbnQJCQlsb2NhdGlvbjsKLQlF cnJvclNhdmVDb250ZXh0ICplc2NvbnRleHQgPSBtYWtlTm9kZShFcnJvclNhdmVDb250ZXh0KTsK LQotCWVzY29udGV4dC0+dHlwZSA9IFRfRXJyb3JTYXZlQ29udGV4dDsKLQllc2NvbnRleHQtPmVy cm9yX29jY3VycmVkID0gZmFsc2U7Ci0JZXNjb250ZXh0LT5kZXRhaWxzX3dhbnRlZCA9IGZhbHNl OworCUVycm9yU2F2ZUNvbnRleHQgKmVzY29udGV4dCA9IE5VTEw7CiAKIAkvKiBMb29rIHVwIHRo ZSB0eXBlIG5hbWUgZmlyc3QgKi8KIAl0eXBlbmFtZVR5cGVJZEFuZE1vZChwc3RhdGUsIHRjLT50 eXBlTmFtZSwgJnRhcmdldFR5cGUsICZ0YXJnZXRUeXBtb2QpOwpAQCAtMjgwMSw2ICsyNzk3LDEx IEBAIHRyYW5zZm9ybVR5cGVDYXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVHlwZUNhc3QgKnRjKQog CXsKIAkJT2lkCQkJZGVmQ29sbDsKIAorCQllc2NvbnRleHQgPSBtYWtlTm9kZShFcnJvclNhdmVD b250ZXh0KTsKKwkJZXNjb250ZXh0LT50eXBlID0gVF9FcnJvclNhdmVDb250ZXh0OworCQllc2Nv bnRleHQtPmVycm9yX29jY3VycmVkID0gZmFsc2U7CisJCWVzY29udGV4dC0+ZGV0YWlsc193YW50 ZWQgPSBmYWxzZTsKKwogCQlkZWZleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIHRjLT5kZWZl eHByLCBFWFBSX0tJTkRfQ0FTVF9ERUZBVUxUKTsKIAogCQlkZWZleHByID0gY29lcmNlX3RvX3Rh cmdldF90eXBlKHBzdGF0ZSwgZGVmZXhwciwgZXhwclR5cGUoZGVmZXhwciksCkBAIC0yOTYxLDEz ICsyOTYyLDExIEBAIENvZXJjaW9uRXJyb3JTYWZlQ2hlY2soUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpjYXN0ZXhwciwgTm9kZSAqc291cmNlLAogCWlmICghZXJyb3JzYWZlX2NvZXJjaW9uKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAotCQkJCWVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAlcyB3aGVuICVzIGV4cHJl c3Npb24gaXMgc3BlY2lmaWVkIGluICVzIiwKKwkJCQllcnJtc2coImNhbm5vdCBjYXN0IHR5cGUg JXMgdG8gJXMgd2l0aCBERUZBVUxUIGV4cHJlc3Npb24gaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lP TiBFUlJPUiIsCiAJCQkJCSAgIGZvcm1hdF90eXBlX2JlKGlucHV0VHlwZSksCi0JCQkJCSAgIGZv cm1hdF90eXBlX2JlKHRhcmdldFR5cGUpLAotCQkJCQkgICAiREVGQVVMVCIsCi0JCQkJCSAgICJD QVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SIiksCisJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHRh cmdldFR5cGUpKSwKIAkJCQl1c2VyZGVmaW5lZAotCQkJCT8gZXJyZGV0YWlsKCJTYWZlIHR5cGUg Y2FzdCBmb3IgdXNlci1kZWZpbmVkIHR5cGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4iKQorCQkJ CT8gZXJyZGV0YWlsKCJTYWZlIHR5cGUgY2FzdHMgZm9yIHVzZXItZGVmaW5lZCB0eXBlcyBhcmUg bm90IHlldCBzdXBwb3J0ZWQuIikKIAkJCQk6IGVycmRldGFpbCgiRXhwbGljaXQgY2FzdCBpcyBk ZWZpbmVkIGJ1dCBkZWZpbml0aW9uIGlzIG5vdCBlcnJvciBzYWZlLiIpLAogCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihzb3VyY2UpKSk7CiB9CkBAIC0zMDQ4LDcg KzMwNDcsNyBAQCBDb2VyY2lvbkVycm9yU2FmZV9JbnRlcm5hbChPaWQgaW5wdXRUeXBlLCBPaWQg dGFyZ2V0VHlwZSwKIAl9CiAKIAkvKgotCSAqIENhc3RzIHNvdXJjZSBkYXRhIHR5cGUgYXMgTU9O RVkgYXJlIG5vdCBlcnJvciBzYWZlLgorCSAqIENhc3RzIGZyb20gTU9ORVkgc291cmNlIHR5cGUg YXJlIG5vdCBlcnJvciBzYWZlLgogCSAqLwogCWlmIChpbnB1dFR5cGUgPT0gTU9ORVlPSUQpCiAJ ewpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jYXN0Lm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY2FzdC5vdXQKaW5kZXggZTU3NDBkMmY1YmMuLjFhNTVmY2Vl ZWYzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY2FzdC5vdXQKQEAgLTE4Niw3ICsxODYsNyBAQCBT RUxFQ1QgQ0FTVChhIEFTIGludDIgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIEZS T00gdGNhc3QwOwogKDIgcm93cykKIAogU0VMRUNUIENBU1QoUk9XKDEsMikgQVMgdGNhc3QwIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0MCBhcyB0OwotRVJST1I6 ICBjYW5ub3QgY2FzdCB0eXBlIHJlY29yZCB0byB0Y2FzdDAgd2hlbiBERUZBVUxUIGV4cHJlc3Np b24gaXMgc3BlY2lmaWVkIGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IKK0VSUk9SOiAg Y2Fubm90IGNhc3QgdHlwZSByZWNvcmQgdG8gdGNhc3QwIHdpdGggREVGQVVMVCBleHByZXNzaW9u IGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IKIExJTkUgMTogU0VMRUNUIENBU1QoUk9X KDEsMikgQVMgdGNhc3QwIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSLi4uCiAgICAgICAg ICAgICAgICAgICAgIF4KIERFVEFJTDogIEV4cGxpY2l0IGNhc3QgaXMgZGVmaW5lZCBidXQgZGVm aW5pdGlvbiBpcyBub3QgZXJyb3Igc2FmZS4KQEAgLTQ0Myw3ICs0NDMsNyBAQCBFUlJPUjogIHZh bHVlIHRvbyBsb25nIGZvciB0eXBlIGNoYXJhY3RlcigzKQogTElORSAxOiAuLi5TVCgnKE5VTEws NDIpJyBBUyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUICcoMTIzNCwyKScuLi4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCiBTRUxFQ1QgQ0FTVChST1coTlVMTCw0MikgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2Qg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLSBlcnJvcgotRVJST1I6ICBjYW5u b3QgY2FzdCB0eXBlIHJlY29yZCB0byBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCB3aGVuIERFRkFV TFQgZXhwcmVzc2lvbiBpcyBzcGVjaWZpZWQgaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJP UgorRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIHJlY29yZCB0byBjb21wX2RvbWFpbl93aXRoX3R5 cG1vZCB3aXRoIERFRkFVTFQgZXhwcmVzc2lvbiBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVS Uk9SCiBMSU5FIDE6IFNFTEVDVCBDQVNUKFJPVyhOVUxMLDQyKSBBUyBjb21wX2RvbWFpbl93aXRo X3R5cG1vZCBERUZBVUxUIC4uLgogICAgICAgICAgICAgICAgICAgICBeCiBERVRBSUw6ICBFeHBs aWNpdCBjYXN0IGlzIGRlZmluZWQgYnV0IGRlZmluaXRpb24gaXMgbm90IGVycm9yIHNhZmUuCkBA IC02NDEsMTIgKzY0MSwxMiBAQCBTRUxFQ1QgQ0FTVCgnLTAnOjppbnQ0IEFTIE1PTkVZIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKICgxIHJvdykKIAogU0VMRUNUIENBU1QoTlVM TDo6bW9uZXkgQVMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7Ci1F UlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgbW9uZXkgdG8gbnVtZXJpYyB3aGVuIERFRkFVTFQgZXhw cmVzc2lvbiBpcyBzcGVjaWZpZWQgaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgorRVJS T1I6ICBjYW5ub3QgY2FzdCB0eXBlIG1vbmV5IHRvIG51bWVyaWMgd2l0aCBERUZBVUxUIGV4cHJl c3Npb24gaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgogTElORSAxOiBTRUxFQ1QgQ0FT VChOVUxMOjptb25leSBBUyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU8uLi4KICAg ICAgICAgICAgICAgICAgICAgXgogREVUQUlMOiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVkIGJ1 dCBkZWZpbml0aW9uIGlzIG5vdCBlcnJvciBzYWZlLgogU0VMRUNUIENBU1QoTlVMTDo6bW9uZXlb XSBBUyBudW1lcmljW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOwotRVJST1I6 ICBjYW5ub3QgY2FzdCB0eXBlIG1vbmV5W10gdG8gbnVtZXJpY1tdIHdoZW4gREVGQVVMVCBleHBy ZXNzaW9uIGlzIHNwZWNpZmllZCBpbiBDQVNUIC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SCitFUlJP UjogIGNhbm5vdCBjYXN0IHR5cGUgbW9uZXlbXSB0byBudW1lcmljW10gd2l0aCBERUZBVUxUIGV4 cHJlc3Npb24gaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgogTElORSAxOiBTRUxFQ1Qg Q0FTVChOVUxMOjptb25leVtdIEFTIG51bWVyaWNbXSBERUZBVUxUIE5VTEwgT04gQ09OVkUuLi4K ICAgICAgICAgICAgICAgICAgICAgXgogREVUQUlMOiAgRXhwbGljaXQgY2FzdCBpcyBkZWZpbmVk IGJ1dCBkZWZpbml0aW9uIGlzIG5vdCBlcnJvciBzYWZlLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jcmVhdGVfY2FzdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2NyZWF0ZV9jYXN0Lm91dAppbmRleCAyOGM4ODBiMTBlMi4uNjRhYzYwYjE1N2YgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2Nhc3Qub3V0CkBAIC04OSwxMCArODksMTAg QEAgU0VMRUNUIDEyMzQ6OmludDQ6OmNhc3R0ZXN0dHlwZTsgLS0gU2hvdWxkIHdvcmsgbm93CiAo MSByb3cpCiAKIFNFTEVDVCBDQVNUKDEyMzQ6OmludDQgQVMgY2FzdHRlc3R0eXBlIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS0gZXJyb3IKLUVSUk9SOiAgY2Fubm90IGNhc3Qg dHlwZSBpbnRlZ2VyIHRvIGNhc3R0ZXN0dHlwZSB3aGVuIERFRkFVTFQgZXhwcmVzc2lvbiBpcyBz cGVjaWZpZWQgaW4gQ0FTVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUgorRVJST1I6ICBjYW5ub3Qg Y2FzdCB0eXBlIGludGVnZXIgdG8gY2FzdHRlc3R0eXBlIHdpdGggREVGQVVMVCBleHByZXNzaW9u IGluIENBU1QgLi4uIE9OIENPTlZFUlNJT04gRVJST1IKIExJTkUgMTogU0VMRUNUIENBU1QoMTIz NDo6aW50NCBBUyBjYXN0dGVzdHR5cGUgREVGQVVMVCBOVUxMIE9OIENPTlZFLi4uCiAgICAgICAg ICAgICAgICAgICAgIF4KLURFVEFJTDogIFNhZmUgdHlwZSBjYXN0IGZvciB1c2VyLWRlZmluZWQg dHlwZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLgorREVUQUlMOiAgU2FmZSB0eXBlIGNhc3RzIGZv ciB1c2VyLWRlZmluZWQgdHlwZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLgogLS0gY2hlY2sgZGVw ZW5kZW5jaWVzIGdlbmVyYXRlZCBmb3IgdGhhdAogU0VMRUNUIHBnX2Rlc2NyaWJlX29iamVjdChj bGFzc2lkLCBvYmppZCwgb2Jqc3ViaWQpIGFzIG9iaiwKICAgICAgICBwZ19kZXNjcmliZV9vYmpl Y3QocmVmY2xhc3NpZCwgcmVmb2JqaWQsIHJlZm9ianN1YmlkKSBhcyBvYmpyZWYsCi0tIAoyLjQ3 LjEKCg== --0000000000009ff6c5064e530eb4--