Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mPdKg-0006kr-JS for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Sep 2021 04:12:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mPdKf-0004j4-H2 for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Sep 2021 04:12:37 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mPdKe-0004is-IM for pgsql-hackers@lists.postgresql.org; Mon, 13 Sep 2021 04:12:36 +0000 Received: from mail-vs1-xe2b.google.com ([2607:f8b0:4864:20::e2b]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1mPdKb-0004Ii-3y for pgsql-hackers@lists.postgresql.org; Mon, 13 Sep 2021 04:12:36 +0000 Received: by mail-vs1-xe2b.google.com with SMTP id u1so7217417vsq.10 for ; Sun, 12 Sep 2021 21:12:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=jX1oQ6ZH9u7z0B1n91cGxKg1DsqHR6s973MqtOEvF0Q=; b=zkyfsmn34LvQSLEBwHyC8bhhS5Y8KVriKkxqs+h8IiTrj+efQSMQTSVQezczUsymzT hBfuGPG1GVB6+0r0eSW2Rh2HlPxX/7tuH0mxbLOOf8zUyR0jbyYJzL+iBWDByFjveyX1 rL8i2Djv4OxkCBY2Pr1TIPeDYss5ZbyGd5bTvqIxyMQy5TiNtItBzLCoVT6td+zwVuVD HGc2tDaTlHDe5JUwS2gCk0VcTFv3UGregiWCMtnCrVAcYG4OOUSLuzi622WIm1GYiCPi L4yYMudsU2ar6qiGQRB8kIY1WhS1YZJ7LlQhb2oX+bvnFYUnhy68qwhorpKQBOCUtiO0 ck9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=jX1oQ6ZH9u7z0B1n91cGxKg1DsqHR6s973MqtOEvF0Q=; b=KpjE94ja3P/FOHBCzSRzcK8j+7wGs4x33AXUZVOXNbtURi4x3/jfuDvTZPIo3Yjoj3 zKg9KDUH1P70RnOcJhrur8wJhJeZPKXQ6qxdCmxHzoUYw6b/TCWwaz7jH7lqnGX6jxNe V5ZJ1m6gNJERmBpEIq0Bt02nqi4JE+WWqPusw1oM7MERnUz08eZlTJu87PpE1kd/c+5z AaTaCkFJUCw1OCVTCIBD7/IydtNdkm0r4Vm/vuUui8mBOLlQjcX0/sBFqyITMuk9EVn0 UEY9VpN+s78n7A+gpa34iwC5rHzQ/hBVw3HI6OYuAza3Tbod8PewLcbQ0YgFhy72lwdE zOfQ== X-Gm-Message-State: AOAM530nvGAI0XRQRDoiNYB/2wTDrFRQa6JX9HoI2iAj3aB+iMAvKfbA SmwEpVie3oZjsfjcdw+74Wq8InZEZ6LSv6y14OIYqSS6M8t+/A== X-Google-Smtp-Source: ABdhPJyjieHGUKOdiSYHhS8psLSdyDUlHJYNAXe6bmJhAJIbzjDOXB+ddpD3BThxLweug+BEgDQoTqBPUrf+QrNso38= X-Received: by 2002:a67:fc83:: with SMTP id x3mr3442929vsp.47.1631506351168; Sun, 12 Sep 2021 21:12:31 -0700 (PDT) MIME-Version: 1.0 References: <20210904195556.GA10553@ahch-to> <20210911015017.GA8837@ahch-to> In-Reply-To: <20210911015017.GA8837@ahch-to> From: Paul A Jungwirth Date: Sun, 12 Sep 2021 21:12:19 -0700 Message-ID: Subject: Re: SQL:2011 application time To: Jaime Casanova Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000082e1ad05cbd8ac96" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000082e1ad05cbd8ac96 Content-Type: text/plain; charset="UTF-8" On Fri, Sep 10, 2021 at 6:50 PM Jaime Casanova wrote: > > patch 01: does apply but gives a compile warning (which is fixed by patch > 02) > [snip] > patch 03: produces these compile errors. I did a rebase and fixed this new error, as well as the warnings. On Mon, Sep 6, 2021 at 1:40 PM Zhihong Yu wrote: > > + * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group > > It seems the year (2018) should be updated to 2021. Done. > For RemovePeriodById(), it seems table_open() can be called after SearchSysCache1(). This way, if HeapTupleIsValid(tup) is true, table_open() can be skipped. This seems like it permits a race condition when two connections both try to drop the period, right? > For tablecmds.c, AT_PASS_ADD_PERIOD is defined as 5 with AT_PASS_ADD_CONSTR etc moved upward. Do we need to consider compatibility ? I don't think there is a compatibility problem---can you explain? These symbols aren't used outside tablecmds.c and the values aren't saved anywhere AFAIK. > There are a few TODO's such as: > Are they going to be addressed in the next round of patches ? These are mostly questions I'm hoping a reviewer can help me answer, but I'll take a pass through them and see which I can remove myself. Several are for adding support for partitioned tables, where I would definitely appreciate help. > There seems to be some overlap between ATExecAddPeriod() and AddRelationNewPeriod(). > Is it possible to reduce code duplication ? I've refactored those functions to remove some duplication, but I think I prefer the old version---let me know if you have suggestions to avoid the duplication in a nicer way. Oh also I realized fp_triggers.c wasn't included in the last few patch files---I'm sorry about that! Latest files attached. Thanks for the reviews! Paul --00000000000082e1ad05cbd8ac96 Content-Type: application/octet-stream; name="v8-0001-Add-PERIODs.patch" Content-Disposition: attachment; filename="v8-0001-Add-PERIODs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kti4oti60 RnJvbSA4NWViZTc3ZTRiMzNlNGUwMTg1MTU0ZDMzOTFhY2E5MjRmNzI4NmFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgwMApTdWJqZWN0 OiBbUEFUQ0ggdjggMS80XSBBZGQgUEVSSU9EcwoKLSBBZGRlZCBwYXJzaW5nIGZvciBTUUw6MjAx MSBzeW50YXggdG8gZGVmaW5lIGFuIGFwcGxpY2F0aW9uLXRpbWUgUEVSSU9EIG9uIGEKICB0YWJs ZSAoaW4gYm90aCBDUkVBVEUgVEFCTEUgYW5kIEFMVEVSIFRBQkxFKS4gTWFrZSBzdXJlIHdlIGNy ZWF0ZSB0aGUgUEVSSU9ECiAgYWZ0ZXIgY29sdW1ucyBhcmUga25vd24gKHNpbmNlIFBFUklPRHMg Y2FuIHJlZmVyIHRvIHRoZW0pIGJ1dCBiZWZvcmUKICBjb25zdHJhaW50cyBhcmUgaGFuZGxlZCAo c2luY2UgUEVSSU9EcyBjYW4gYXBwZWFyIGluIHRoZW0pLgotIEFkZGVkIEFMVEVSIFRBQkxFIERS T1Agc3VwcG9ydCBmb3IgUEVSSU9Ecy4KLSBDcmVhdGVkIHBvc3RncmVzLnBnX3BlcmlvZCB0YWJs ZS4KLSBDcmVhdGVkIGluZm9ybWF0aW9uX3NjaGVtYS5wZXJpb2RzIHZpZXcuCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIEFkZGVkIHRlc3RzIGFuZCBkb2N1bWVudGF0aW9uLgotIEF1dG9tYXRp Y2FsbHkgZGVmaW5lIGEgY29uc3RyYWludCBmb3IgZWFjaCBQRVJJT0QgcmVxdWlyaW5nIHRoZSBz dGFydCBjb2x1bW4KICB0byBiZSBsZXNzIHRoYW4gdGhlIGVuZCBjb2x1bW4uCi0gV2hlbiBjcmVh dGluZyBhIFBFUklPRCwgY2hvb3NlIGFuIGFwcHJvcHJpYXRlIHJhbmdlIHR5cGUgd2UgY2FuIHVz ZSB0bwogIGltcGxlbWVudCBQRVJJT0QtcmVsYXRlZCBvcGVyYXRpb25zLiBZb3UgY2FuIGNob29z ZSBvbmUgZXhwbGljaXRseSBpZiB0aGVyZQogIGlzIGFtYmlndWl0eSAoZHVlIHRvIG11bHRpcGxl IHJhbmdlIHR5cGVzIGNyZWF0ZWQgb3ZlciB0aGUgc2FtZSBiYXNlIHR5cGUpLgotLS0KIGRvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICB8IDEzMiArKysrKysKIGRvYy9z cmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICA1OCArKysKIGRvYy9zcmMv c2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICB8ICA2MyArKysKIGRvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICB8ICAyNSArCiBkb2Mvc3JjL3NnbWwvcmVm L2NvbW1lbnQuc2dtbCAgICAgICAgICAgICAgfCAgIDIgKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdGFibGUuc2dtbCAgICAgICAgIHwgIDM5ICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL01ha2Vm aWxlICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMg ICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyAg ICAgICAgICAgfCAgIDkgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAg ICAgIHwgIDY3ICsrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3Fs IHwgIDI0ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYyAgICAgICAgfCAg NzMgKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jICAgICAgICAgICAgfCAxMDYg KysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCAgICAgICB8ICAgMiAr LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYyAgICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvc2VjbGFiZWwuYyAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jICAgICAgICAgICB8IDUxMCArKysrKysrKysrKysrKysrKysrKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYyAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2Jh Y2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgICAgICAgICAgICAgIHwgIDE5ICsKIHNyYy9iYWNrZW5k L25vZGVzL2VxdWFsZnVuY3MuYyAgICAgICAgICAgICB8ICAxNyArCiBzcmMvYmFja2VuZC9ub2Rl cy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvbm9kZXMvb3V0 ZnVuY3MuYyAgICAgICAgICAgICAgIHwgIDQ1ICsrCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 ICAgICAgICAgICAgICAgICAgfCAgNDcgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGls Y21kLmMgICAgICAgICB8IDE1NSArKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYyAgICAgICAgfCAgODcgKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2Fj aGUuYyAgICAgICAgIHwgIDM0ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVy LmMgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAg ICAgIHwgMTUzICsrKysrKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAg ICAgICB8ICAxNSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMgICAgICAgICAgICAg fCAgIDcgKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgIHwgIDM0 ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAgICAgfCAgIDEgKwog c3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9p bmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaCAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCAgICAgICAgICAgIHwgIDU1ICsrKwogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19yYW5nZS5oICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NvbW1h bmRzL3RhYmxlY21kcy5oICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvbm9kZXMvbm9k ZXMuaCAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCAgICAgICAgICAgICB8ICAzMSArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgg ICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaCAgICAgICAgICAgICAgIHwg ICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQgICAgICB8ICA3OSAr KysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQgfCAgIDMgKwog c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgIHwgICAyICstCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbCAgICAgICAgICAgfCAgNjIgKysrCiA0OSBmaWxl cyBjaGFuZ2VkLCAxOTY4IGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2RzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCAyZjBk ZWY5YjE5Li42NTRhMjU4NDcxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMjI1LDYgKzIyNSwxMSBAQAog ICAgICAgPGVudHJ5PmluZm9ybWF0aW9uIGFib3V0IHBhcnRpdGlvbiBrZXkgb2YgdGFibGVzPC9l bnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGluayBsaW5r ZW5kPSJjYXRhbG9nLXBnLXBlcmlvZCI+PHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3RuYW1l PjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5PnBlcmlvZHM8L2VudHJ5PgorICAgICA8L3Jv dz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGct cG9saWN5Ij48c3RydWN0bmFtZT5wZ19wb2xpY3k8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+ CiAgICAgICA8ZW50cnk+cm93LXNlY3VyaXR5IHBvbGljaWVzPC9lbnRyeT4KQEAgLTU1MTgsNiAr NTUyMywxMzMgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3Vu dCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBhcmUgc2ltcGxlIHJl ZmVyZW5jZXMuCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICA8L3Ri b2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworCisgPHNlY3QxIGlk PSJjYXRhbG9nLXBnLXBlcmlvZCI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0 cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctcGVyaW9k Ij4KKyAgIDxwcmltYXJ5PnBnX3BlcmlvZDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAg PHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5hbWU+ IHN0b3JlcworICAgaW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIGFuZCBhcHBsaWNhdGlvbiB0aW1l IHBlcmlvZHMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJlIGRlc2NyaWJl ZCBpbiA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPi4KKyAgPC9wYXJhPgorCisgIDx0YWJs ZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5hbWU+IENvbHVtbnM8 L3RpdGxlPgorCisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVy CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlw ZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUGVyaW9k IG5hbWUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVycmVsaWQ8L3N0cnVjdGZpZWxk PiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0 YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVjdG5hbWU+PC9saW5rPi48 c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFy YT4KKyAgICAgICBUaGUgdGFibGUgdGhpcyBwZXJpb2QgYmVsb25ncyB0bworICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD5wZXJzdGFydDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDI8L3R5cGU+ CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUi PjxzdHJ1Y3RuYW1lPnBnX2F0dHJpYnV0ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVs ZD5hdHRudW08L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIFRoZSBudW1iZXIgb2YgdGhlIHN0YXJ0IGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5wZXJlbmQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChy ZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFt ZT5wZ19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9z dHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgbnVt YmVyIG9mIHRoZSBlbmQgY29sdW1uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+ CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcnJu Z3R5cGU8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMg PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy10eXBlIj48c3RydWN0bmFtZT5wZ190eXBlPC9zdHJ1 Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIE9JRCBvZiB0aGUgcmFuZ2UgdHlwZSBhc3Nv Y2lhdGVkIHdpdGggdGhpcyBwZXJpb2QKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVy Y29uc3RyYWludDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAocmVmZXJl bmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWNvbnN0cmFpbnQiPjxzdHJ1Y3RuYW1lPnBn X2NvbnN0cmFpbnQ8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3Rm aWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgT0lEIG9mIHRo ZSBwZXJpb2QncyA8bGl0ZXJhbD5DSEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludAorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJpc2xvY2FsPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgcGVyaW9kIGlz IGRlZmluZWQgbG9jYWxseSBmb3IgdGhlIHJlbGF0aW9uLiAgTm90ZSB0aGF0IGEgcGVyaW9kIGNh bgorICAgICAgIGJlIGxvY2FsbHkgZGVmaW5lZCBhbmQgaW5oZXJpdGVkIHNpbXVsdGFuZW91c2x5 LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJpbmhjb3VudDwvc3RydWN0ZmllbGQ+ IDx0eXBlPmludDQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBU aGUgbnVtYmVyIG9mIGRpcmVjdCBpbmhlcml0YW5jZSBhbmNlc3RvcnMgdGhpcyBwZXJpb2QgaGFz LiAgQSBwZXJpb2QKKyAgICAgICB3aXRoIGEgbm9uemVybyBudW1iZXIgb2YgYW5jZXN0b3JzIGNh bm5vdCBiZSBkcm9wcGVkLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAg ICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2RkbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCmluZGV4IDk0Zjc0NWFlZDAu LjFiOGY1MjQxOTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvZGRsLnNnbWwKQEAgLTExNDAsNiArMTE0MCw2NCBAQCBDUkVBVEUgVEFCTEUgY2ly Y2xlcyAoCiAgIDwvc2VjdDI+CiAgPC9zZWN0MT4KIAorIDxzZWN0MSBpZD0iZGRsLXBlcmlvZHMi PgorICA8dGl0bGU+UGVyaW9kczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBQZXJpb2RzIGFyZSBk ZWZpbml0aW9ucyBvbiBhIHRhYmxlIHRoYXQgYXNzb2NpYXRlIGEgcGVyaW9kIG5hbWUgd2l0aCBh IHN0YXJ0CisgICBjb2x1bW4gYW5kIGFuIGVuZCBjb2x1bW4uICBCb3RoIGNvbHVtbnMgbXVzdCBi ZSBvZiBleGFjdGx5IHRoZSBzYW1lIHR5cGUKKyAgIChpbmNsdWRpbmcgY29sbGF0aW9uKSwgaGF2 ZSBhIGJ0cmVlIG9wZXJhdG9yIGNsYXNzLCBhbmQgdGhlIHN0YXJ0IGNvbHVtbgorICAgdmFsdWUg bXVzdCBiZSBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIGVuZCBjb2x1bW4gdmFsdWUuCisgIDwvcGFy YT4KKworICA8cGFyYT4KKyAgIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgcGVyaW9kczogYXBwbGlj YXRpb24gYW5kIHN5c3RlbS4gIFN5c3RlbSBwZXJpb2RzIGFyZQorICAgZGlzdGluZ3Vpc2hlZCBi eSB0aGVpciBuYW1lIHdoaWNoIG11c3QgYmUgPGxpdGVyYWw+U1lTVEVNX1RJTUU8L2xpdGVyYWw+ LiAgQW55CisgICBvdGhlciBuYW1lIGlzIGFuIGFwcGxpY2F0aW9uIHBlcmlvZC4KKyAgPC9wYXJh PgorCisgIDxzZWN0MiBpZD0iZGRsLXBlcmlvZHMtYXBwbGljYXRpb24tcGVyaW9kcyI+CisgIDx0 aXRsZT5BcHBsaWNhdGlvbiBQZXJpb2RzPC90aXRsZT4KKworICAgPGluZGV4dGVybT4KKyAgICA8 cHJpbWFyeT5wZXJpb2Q8L3ByaW1hcnk+CisgICAgPHNlY29uZGFyeT5hcHBsaWNhdGlvbjwvc2Vj b25kYXJ5PgorICAgPC9pbmRleHRlcm0+CisKKyAgIDxwYXJhPgorICAgIEFwcGxpY2F0aW9uIHBl cmlvZHMgYXJlIGRlZmluZWQgb24gYSB0YWJsZSB1c2luZyB0aGUgZm9sbG93aW5nIHN5bnRheDoK KyAgIDwvcGFyYT4KKworPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFRBQkxFIGJpbGxpbmdfYWRk cmVzc2VzICgKKyAgY3VzdG9tZXJfaWQgaW50ZWdlciwKKyAgYWRkcmVzc19pZCBpbnRlZ2VyLAor ICB2YWxpZF9mcm9tIGRhdGUsCisgIHZhbGlkX3RvIGRhdGUsCisgIDxlbXBoYXNpcz5QRVJJT0Qg Rk9SIHZhbGlkaXR5ICh2YWxpZF9mcm9tLCB2YWxpZF90byk8L2VtcGhhc2lzPgorKTsKKzwvcHJv Z3JhbWxpc3Rpbmc+CisKKyAgIDxwYXJhPgorICAgIEFwcGxpY2F0aW9uIHBlcmlvZHMgY2FuIGJl IHVzZWQgdG8gZGVmaW5lIHRlbXBvcmFsIHByaW1hcnkgYW5kIGZvcmVpZ24ga2V5cy4KKyAgICBB bnkgdGFibGUgd2l0aCBhIHRlbXBvcmFsIHByaW1hcnkga2V5IGlzIGEgdGVtcG9yYWwgdGFibGUg YW5kIHN1cHBvcnRzIHRlbXBvcmFsIHVwZGF0ZSBhbmQgZGVsZXRlIGNvbW1hbmRzLgorICAgPC9w YXJhPgorICA8L3NlY3QyPgorCisgIDxzZWN0MiBpZD0iZGRsLXBlcmlvZHMtc3lzdGVtLXBlcmlv ZHMiPgorICAgPHRpdGxlPlN5c3RlbSBQZXJpb2RzPC90aXRsZT4KKworICAgPGluZGV4dGVybT4K KyAgICA8cHJpbWFyeT5wZXJpb2Q8L3ByaW1hcnk+CisgICAgPHNlY29uZGFyeT5zeXN0ZW08L3Nl Y29uZGFyeT4KKyAgIDwvaW5kZXh0ZXJtPgorCisgICA8cGFyYT4KKyAgICBQZXJpb2RzIGZvciA8 bGl0ZXJhbD5TWVNURU1fVElNRTwvbGl0ZXJhbD4gYXJlIGN1cnJlbnRseSBub3QgaW1wbGVtZW50 ZWQuCisgICA8L3BhcmE+CisgIDwvc2VjdDI+CisgPC9zZWN0MT4KKwogIDxzZWN0MSBpZD0iZGRs LXN5c3RlbS1jb2x1bW5zIj4KICAgPHRpdGxlPlN5c3RlbSBDb2x1bW5zPC90aXRsZT4KIApkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sIGIvZG9jL3NyYy9z Z21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCmluZGV4IGM1ZTY4YzE3NWYuLjkyNWYzZTlkNGIg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwKQEAgLTQxNzEsNiArNDE3MSw2OSBA QCBPUkRFUiBCWSBjLm9yZGluYWxfcG9zaXRpb247CiAgIDwvdGFibGU+CiAgPC9zZWN0MT4KIAor IDxzZWN0MSBpZD0iaW5mb3NjaGVtYS1wZXJpb2RzIj4KKyAgPHRpdGxlPjxsaXRlcmFsPnBlcmlv ZHM8L2xpdGVyYWw+PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSB2aWV3IDxsaXRlcmFsPnBh cmFtZXRlcnM8L2xpdGVyYWw+IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgcGVy aW9kcyBvZiBhbGwgdGFibGVzIGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLiAgVGhlIHN0YXJ0IGFu ZCBlbmQgY29sdW1uCisgICBuYW1lcyBhcmUgb25seSBzaG93biBpZiB0aGUgY3VycmVudCB1c2Vy IGhhcyBhY2Nlc3MgdG8gdGhlbSAoYnkgd2F5IG9mIGJlaW5nCisgICB0aGUgb3duZXIgb3IgaGF2 aW5nIHNvbWUgcHJpdmlsZWdlKS4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48 bGl0ZXJhbD5wZXJpb2RzPC9saXRlcmFsPiBDb2x1bW5zPC90aXRsZT4KKworICAgPHRncm91cCBj b2xzPSIzIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+TmFtZTwvZW50 cnk+CisgICAgICA8ZW50cnk+RGF0YSBUeXBlPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5EZXNjcmlw dGlvbjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+Cisg ICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+dGFibGVfY2F0YWxvZzwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+ CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgZGF0YWJhc2UgY29udGFpbmluZyB0aGUgcGVyaW9k IChhbHdheXMgdGhlIGN1cnJlbnQgZGF0YWJhc2UpPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50YWJsZV9zY2hlbWE8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5Pgor ICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHNjaGVtYSBjb250YWluaW5nIHRoZSBwZXJpb2Q8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnRh YmxlX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRp ZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHRhYmxlIGNvbnRh aW5pbmcgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PGxpdGVyYWw+cGVyaW9kX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxl bnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5h bWUgb2YgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PGxpdGVyYWw+c3RhcnRfY29sdW1uX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVu dHJ5Pk5hbWUgb2YgdGhlIHN0YXJ0IGNvbHVtbiBmb3IgdGhlIHBlcmlvZDwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ZW5kX2NvbHVtbl9u YW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8 L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBlbmQgY29sdW1uIGZvciB0 aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3Vw PgorICA8L3RhYmxlPgorIDwvc2VjdDE+CisKICA8c2VjdDEgaWQ9ImluZm9zY2hlbWEtcmVmZXJl bnRpYWwtY29uc3RyYWludHMiPgogICA8dGl0bGU+PGxpdGVyYWw+cmVmZXJlbnRpYWxfY29uc3Ry YWludHM8L2xpdGVyYWw+PC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4 IDgxMjkxNTc3ZjguLjk4MzEyN2ViNDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAg LTYwLDYgKzYwLDggQEAgQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgQUxURVIgQ09OU1RSQUlOVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJs ZT4gWyBERUZFUlJBQkxFIHwgTk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxMWSBERUZFUlJFRCB8 IElOSVRJQUxMWSBJTU1FRElBVEUgXQogICAgIFZBTElEQVRFIENPTlNUUkFJTlQgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+CiAgICAg RFJPUCBDT05TVFJBSU5UIFsgSUYgRVhJU1RTIF0gIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPiBbIFJFU1RSSUNUIHwgQ0FTQ0FERSBd CisgICAgQUREIFBFUklPRCBGT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlv ZF9uYW1lPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Rh cnRfY29sdW1uPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l bmRfY29sdW1uPC9yZXBsYWNlYWJsZT4gKSBbIFdJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisgICAgRFJPUCBQ RVJJT0QgRk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVw bGFjZWFibGU+IFsgUkVTVFJJQ1QgfCBDQVNDQURFIF0KICAgICBESVNBQkxFIFRSSUdHRVIgWyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJpZ2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4g fCBBTEwgfCBVU0VSIF0KICAgICBFTkFCTEUgVFJJR0dFUiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiB8IEFMTCB8IFVTRVIgXQogICAg IEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRy aWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+CkBAIC01NTYsNiArNTU4LDI5IEBAIFdJVEggKCBNT0RV TFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxh Y2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8 dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkFERCBQRVJJT0QgRk9SPC9saXRlcmFs PjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGFk ZHMgYSBuZXcgcGVyaW9kIHRvIGEgdGFibGUgdXNpbmcgdGhlIHNhbWUgc3ludGF4IGFzCisgICAg ICA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRldGFibGUiLz4uCisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PGxpdGVyYWw+RFJPUCBQRVJJT0QgRk9SPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlz dGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGRyb3BzIHRoZSBzcGVjaWZpZWQg cGVyaW9kIG9uIGEgdGFibGUuICBUaGUgc3RhcnQgYW5kIGVuZAorICAgICAgY29sdW1ucyB3aWxs IG5vdCBiZSBkcm9wcGVkIGJ5IHRoaXMgY29tbWFuZCBidXQgdGhlCisgICAgICA8bGl0ZXJhbD5D SEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGJlLiAgWW91IHdpbGwgbmVlZCB0byBzYXkK KyAgICAgIDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlmIGFueXRoaW5nIG91dHNpZGUgdGhl IHRhYmxlIGRlcGVuZHMgb24gdGhlCisgICAgICBjb2x1bW4uCisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAg PHRlcm0+PGxpdGVyYWw+RElTQUJMRTwvbGl0ZXJhbD4vPGxpdGVyYWw+RU5BQkxFIFsgUkVQTElD QSB8IEFMV0FZUyBdIFRSSUdHRVI8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jb21tZW50LnNnbWwKaW5kZXggZTA3ZmM0N2ZkMy4uMmZmZmE5OTI4OSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb21t ZW50LnNnbWwKQEAgLTQ0LDYgKzQ0LDcgQEAgQ09NTUVOVCBPTgogICBPUEVSQVRPUiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0b3JfbmFtZTwvcmVwbGFjZWFibGU+ICg8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bGVmdF90eXBlPC9yZXBsYWNlYWJsZT4sIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yaWdodF90eXBlPC9yZXBsYWNlYWJsZT4pIHwKICAg T1BFUkFUT1IgQ0xBU1MgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1l PC9yZXBsYWNlYWJsZT4gVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4 X21ldGhvZDwvcmVwbGFjZWFibGU+IHwKICAgT1BFUkFUT1IgRkFNSUxZIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5vYmplY3RfbmFtZTwvcmVwbGFjZWFibGU+IFVTSU5HIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3JlcGxhY2VhYmxlPiB8CisgIFBF UklPRCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVsYXRpb25fbmFtZTwvcmVwbGFj ZWFibGU+LjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFj ZWFibGU+IHwKICAgUE9MSUNZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wb2xpY3lf bmFtZTwvcmVwbGFjZWFibGU+IE9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJs ZV9uYW1lPC9yZXBsYWNlYWJsZT4gfAogICBbIFBST0NFRFVSQUwgXSBMQU5HVUFHRSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFBS T0NFRFVSRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHJvY2VkdXJlX25hbWU8L3Jl cGxhY2VhYmxlPiBbICggWyBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmdtb2Rl PC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmduYW1l PC9yZXBsYWNlYWJsZT4gXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YXJndHlwZTwv cmVwbGFjZWFibGU+IFssIC4uLl0gXSApIF0gfApAQCAtMzI3LDYgKzMyOCw3IEBAIENPTU1FTlQg T04gT1BFUkFUT1IgXiAodGV4dCwgdGV4dCkgSVMgJ1BlcmZvcm1zIGludGVyc2VjdGlvbiBvZiB0 d28gdGV4dHMnOwogQ09NTUVOVCBPTiBPUEVSQVRPUiAtIChOT05FLCBpbnRlZ2VyKSBJUyAnVW5h cnkgbWludXMnOwogQ09NTUVOVCBPTiBPUEVSQVRPUiBDTEFTUyBpbnQ0b3BzIFVTSU5HIGJ0cmVl IElTICc0IGJ5dGUgaW50ZWdlciBvcGVyYXRvcnMgZm9yIGJ0cmVlcyc7CiBDT01NRU5UIE9OIE9Q RVJBVE9SIEZBTUlMWSBpbnRlZ2VyX29wcyBVU0lORyBidHJlZSBJUyAnYWxsIGludGVnZXIgb3Bl cmF0b3JzIGZvciBidHJlZXMnOworQ09NTUVOVCBPTiBQRVJJT0QgbXlfdGFibGUubXlfY29sdW1u IElTICdTYWxlcyBwcm9tb3Rpb24gdmFsaWRpdHknOwogQ09NTUVOVCBPTiBQT0xJQ1kgbXlfcG9s aWN5IE9OIG15dGFibGUgSVMgJ0ZpbHRlciByb3dzIGJ5IHVzZXJzJzsKIENPTU1FTlQgT04gUFJP Q0VEVVJFIG15X3Byb2MgKGludGVnZXIsIGludGVnZXIpIElTICdSdW5zIGEgcmVwb3J0JzsKIENP TU1FTlQgT04gUFVCTElDQVRJT04gYWxsdGFibGVzIElTICdQdWJsaXNoZXMgYWxsIG9wZXJhdGlv bnMgb24gYWxsIHRhYmxlcyc7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCA0NzNh MGE0YWViLi42ZmQzZGZhOWY2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTIz LDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiA8c3lub3BzaXM+CiBDUkVBVEUg WyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRB QkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJs ZV9uYW1lPC9yZXBsYWNlYWJsZT4gKCBbCiAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IFsgQ09NUFJFU1NJT04gPHJlcGxhY2VhYmxlPmNv bXByZXNzaW9uX21ldGhvZDwvcmVwbGFjZWFibGU+IF0gWyBDT0xMQVRFIDxyZXBsYWNlYWJsZT5j b2xsYXRpb248L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4gWyAuLi4gXSBdCisgICAgfCA8cmVwbGFj ZWFibGU+cGVyaW9kX2RlZmluaXRpb248L3JlcGxhY2VhYmxlPgogICAgIHwgPHJlcGxhY2VhYmxl PnRhYmxlX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPgogICAgIHwgTElLRSA8cmVwbGFjZWFibGU+ c291cmNlX3RhYmxlPC9yZXBsYWNlYWJsZT4gWyA8cmVwbGFjZWFibGU+bGlrZV9vcHRpb248L3Jl cGxhY2VhYmxlPiAuLi4gXSB9CiAgICAgWywgLi4uIF0KQEAgLTM3LDYgKzM4LDcgQEAgQ1JFQVRF IFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBU QUJMRSBbIElGIE5PVCBFWEkKIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFS WSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPgogICAgIE9GIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50eXBlX25hbWU8L3JlcGxhY2VhYmxlPiBbICgK ICAgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiBbIFdJVEggT1BUSU9OUyBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNv bHVtbl9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4gWyAuLi4gXSBdCisgICAgfCA8cmVwbGFjZWFi bGU+cGVyaW9kX2RlZmluaXRpb248L3JlcGxhY2VhYmxlPgogICAgIHwgPHJlcGxhY2VhYmxlPnRh YmxlX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiB9CiAgICAgWywgLi4uIF0KICkgXQpAQCAtNDks NiArNTEsNyBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1Q IH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogQ1JFQVRFIFsgWyBHTE9CQUwgfCBM T0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBF WElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFj ZWFibGU+CiAgICAgUEFSVElUSU9OIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXJlbnRfdGFibGU8L3JlcGxhY2VhYmxlPiBbICgKICAgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbIFdJVEggT1BUSU9OUyBdIFsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9jb25zdHJhaW50PC9yZXBsYWNlYWJs ZT4gWyAuLi4gXSBdCisgICAgfCA8cmVwbGFjZWFibGU+cGVyaW9kX2RlZmluaXRpb248L3JlcGxh Y2VhYmxlPgogICAgIHwgPHJlcGxhY2VhYmxlPnRhYmxlX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxl PiB9CiAgICAgWywgLi4uIF0KICkgXSB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0K QEAgLTczLDYgKzc2LDExIEBAIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFS WSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiAgICAgWyBPTiBERUxF VEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVw bGFjZWFibGU+IF0gWyBPTiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJl ZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gfQogWyBERUZFUlJBQkxFIHwgTk9UIERF RkVSUkFCTEUgXSBbIElOSVRJQUxMWSBERUZFUlJFRCB8IElOSVRJQUxMWSBJTU1FRElBVEUgXQog Cis8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX2RlZmlu aXRpb248L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworUEVSSU9EIEZPUiB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+IHwgU1lTVEVN X1RJTUUgfSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3Jl cGxhY2VhYmxlPiApCitbIFdJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVy aW9kX29wdGlvbjwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnZhbHVlPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisKIDxwaHJhc2U+YW5kIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4gaXM6 PC9waHJhc2U+CiAKIFsgQ09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gXQpAQCAtMTM1LDYgKzE0MywxNCBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogICAgbmFtZSBhcyBhbnkgZXhpc3RpbmcgZGF0YSB0eXBlIGlu IHRoZSBzYW1lIHNjaGVtYS4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgUGVyaW9kcyBteSBi ZSBkZWZpbmVkIG9uIHRhYmxlcywgc3BlY2lmeWluZyB0aGF0IHR3byBleGlzdGluZyBjb2x1bW5z CisgICByZXByZXNlbnQgc3RhcnQgYW5kIGVuZCB2YWx1ZXMgZm9yIHRoZSBwZXJpb2QuICBQZXJp b2RzIG1heSBoYXZlIGFueSBuYW1lCisgICB0aGF0IGRvZXNuJ3QgY29uZmxpY3Qgd2l0aCBhIGNv bHVtbiBuYW1lLCBidXQgdGhlIG5hbWUKKyAgIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFs PiBpcyBzcGVjaWFsLCB1c2VkIGZvciB2ZXJzaW9uaW5nIHRhYmxlcy4KKyAgIFN5c3RlbSBwZXJp b2RzIGFyZSBub3QgeWV0IGltcGxlbWVudGVkLiAgU2VlIDx4cmVmIGxpbmtlbmQ9ImRkbC1wZXJp b2RzIi8+IGZvciBtb3JlIGRldGFpbHMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSBv cHRpb25hbCBjb25zdHJhaW50IGNsYXVzZXMgc3BlY2lmeSBjb25zdHJhaW50cyAodGVzdHMpIHRo YXQKICAgIG5ldyBvciB1cGRhdGVkIHJvd3MgbXVzdCBzYXRpc2Z5IGZvciBhbiBpbnNlcnQgb3Ig dXBkYXRlIG9wZXJhdGlvbgpAQCAtNzQ5LDYgKzc2NSwyOSBAQCBXSVRIICggTU9EVUxVUyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4s IFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5QRVJJT0QgRk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ICkgWyBXSVRIICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPiA9IDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBd ICkgXTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg IEEgcGVyaW9kIGRlZmluaXRpb24gZ2l2ZXMgc2VtYW50aWMgbWVhbmluZyB0byB0d28gZXhpc3Rp bmcgY29sdW1ucyBvZgorICAgICAgdGhlIHRhYmxlLiAgSXQgZGVmaW5lcyBhICJzdGFydCBjb2x1 bW4iIGFuZCBhbiAiZW5kIGNvbHVtbiIgd2hlcmUgdGhlCisgICAgICBzdGFydCB2YWx1ZSBpcyBz dHJpY3RseSBsZXNzIHRoYW4gdGhlIGVuZCB2YWx1ZS4gIEEKKyAgICAgIDxsaXRlcmFsPkNIRUNL PC9saXRlcmFsPiBjb25zdHJhaW50IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0byBlbmZvcmNl CisgICAgICB0aGlzLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBCb3RoIGNv bHVtbnMgbXVzdCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdHlwZSBhbmQgbXVzdCBoYXZlIGEgcmFu Z2UgdHlwZQorICAgICAgZGVmaW5lZCBmcm9tIHRoZWlyIGJhc2UgdHlwZS4gIElmIHRoZXJlIGFy ZSBzZXZlcmFsIHJhbmdlIHR5cGVzIGZvciB0aGF0CisgICAgICBiYXNlIHR5cGUsIHlvdSBtdXN0 IHNwZWNpZnkgd2hpY2ggb25lIHlvdSB3YW50IGJ5IHVzaW5nIHRoZQorICAgICAgPGxpdGVyYWw+ cmFuZ2V0eXBlPC9saXRlcmFsPiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9k X29wdGlvbjwvcmVwbGFjZWFibGU+LgorICAgICAgQW55IGJhc2UgdHlwZSBpcyBhbGxvd2VkLCBh cyBsb25nIGFzIGl0IGhhcyBhIHJhbmdlIHR5cGUsIGFsdGhvdWdoIGl0IGlzCisgICAgICBleHBl Y3RlZCB0aGF0IG1vc3QgcGVyaW9kcyB3aWxsIHVzZSB0ZW1wb3JhbCB0eXBlcyBsaWtlIDxsaXRl cmFsPnRpbWVzdGFtcHR6PC9saXRlcmFsPgorICAgICAgb3IgPGxpdGVyYWw+ZGF0ZTwvbGl0ZXJh bD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisK ICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+Q09OU1RSQUlOVCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT48L2xp dGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCmluZGV4IGQyOTdl NzczNjEuLjE3ODRjNmZjMmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZp bGUKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpAQCAtMzcsNiArMzcsNyBAQCBP QkpTID0gXAogCXBnX2xhcmdlb2JqZWN0Lm8gXAogCXBnX25hbWVzcGFjZS5vIFwKIAlwZ19vcGVy YXRvci5vIFwKKwlwZ19wZXJpb2QubyBcCiAJcGdfcHJvYy5vIFwKIAlwZ19wdWJsaWNhdGlvbi5v IFwKIAlwZ19yYW5nZS5vIFwKQEAgLTY3LDcgKzY4LDcgQEAgQ0FUQUxPR19IRUFERVJTIDo9IFwK IAlwZ19mb3JlaWduX2RhdGFfd3JhcHBlci5oIHBnX2ZvcmVpZ25fc2VydmVyLmggcGdfdXNlcl9t YXBwaW5nLmggXAogCXBnX2ZvcmVpZ25fdGFibGUuaCBwZ19wb2xpY3kuaCBwZ19yZXBsaWNhdGlv bl9vcmlnaW4uaCBcCiAJcGdfZGVmYXVsdF9hY2wuaCBwZ19pbml0X3ByaXZzLmggcGdfc2VjbGFi ZWwuaCBwZ19zaHNlY2xhYmVsLmggXAotCXBnX2NvbGxhdGlvbi5oIHBnX3BhcnRpdGlvbmVkX3Rh YmxlLmggcGdfcmFuZ2UuaCBwZ190cmFuc2Zvcm0uaCBcCisJcGdfY29sbGF0aW9uLmggcGdfcGFy dGl0aW9uZWRfdGFibGUuaCBwZ19wZXJpb2QuaCBwZ19yYW5nZS5oIHBnX3RyYW5zZm9ybS5oIFwK IAlwZ19zZXF1ZW5jZS5oIHBnX3B1YmxpY2F0aW9uLmggcGdfcHVibGljYXRpb25fcmVsLmggcGdf c3Vic2NyaXB0aW9uLmggXAogCXBnX3N1YnNjcmlwdGlvbl9yZWwuaAogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsu YwppbmRleCA4OTc5MmIxNTRlLi4wZWI2ODIxMjE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL2FjbGNoay5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKQEAgLTM0 MjcsNiArMzQyNyw3IEBAIGFjbGNoZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5 cGUgb2JqdHlwZSwKIAkJCQkJY2FzZSBPQkpFQ1RfREVGQVVMVDoKIAkJCQkJY2FzZSBPQkpFQ1Rf REVGQUNMOgogCQkJCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgorCQkJCQljYXNlIE9CSkVD VF9QRVJJT0Q6CiAJCQkJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJCQkJY2FzZSBP QkpFQ1RfUk9MRToKIAkJCQkJY2FzZSBPQkpFQ1RfUlVMRToKQEAgLTM1NjYsNiArMzU2Nyw3IEBA IGFjbGNoZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJ CQkJY2FzZSBPQkpFQ1RfREVGQVVMVDoKIAkJCQkJY2FzZSBPQkpFQ1RfREVGQUNMOgogCQkJCQlj YXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgorCQkJCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCQkJ CWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJCQkJY2FzZSBPQkpFQ1RfUk9MRToKIAkJ CQkJY2FzZSBPQkpFQ1RfVFJBTlNGT1JNOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCA5 MWMzZTk3NmUwLi5lMTBiNWJlNmM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2Rl cGVuZGVuY3kuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpAQCAtNDYs NiArNDYsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BvbGlj eS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf cHVibGljYXRpb24uaCIKQEAgLTE1MCw2ICsxNTEsNyBAQCBzdGF0aWMgY29uc3QgT2lkIG9iamVj dF9jbGFzc2VzW10gPSB7CiAJQ2FzdFJlbGF0aW9uSWQsCQkJCS8qIE9DTEFTU19DQVNUICovCiAJ Q29sbGF0aW9uUmVsYXRpb25JZCwJCS8qIE9DTEFTU19DT0xMQVRJT04gKi8KIAlDb25zdHJhaW50 UmVsYXRpb25JZCwJCS8qIE9DTEFTU19DT05TVFJBSU5UICovCisJUGVyaW9kUmVsYXRpb25JZCwJ CQkvKiBPQ0xBU1NfUEVSSU9EICovCiAJQ29udmVyc2lvblJlbGF0aW9uSWQsCQkvKiBPQ0xBU1Nf Q09OVkVSU0lPTiAqLwogCUF0dHJEZWZhdWx0UmVsYXRpb25JZCwJCS8qIE9DTEFTU19ERUZBVUxU ICovCiAJTGFuZ3VhZ2VSZWxhdGlvbklkLAkJCS8qIE9DTEFTU19MQU5HVUFHRSAqLwpAQCAtMTQy MCw2ICsxNDIyLDEwIEBAIGRvRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBp bnQgZmxhZ3MpCiAJCQlSZW1vdmVDb25zdHJhaW50QnlJZChvYmplY3QtPm9iamVjdElkKTsKIAkJ CWJyZWFrOwogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoKKwkJCVJlbW92ZVBlcmlvZEJ5SWQob2Jq ZWN0LT5vYmplY3RJZCk7CisJCQlicmVhazsKKwogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQkJ UmVtb3ZlQXR0ckRlZmF1bHRCeUlkKG9iamVjdC0+b2JqZWN0SWQpOwogCQkJYnJlYWs7CkBAIC0y NzY2LDYgKzI3NzIsOSBAQCBnZXRPYmplY3RDbGFzcyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmpl Y3QpCiAJCWNhc2UgQ29uc3RyYWludFJlbGF0aW9uSWQ6CiAJCQlyZXR1cm4gT0NMQVNTX0NPTlNU UkFJTlQ7CiAKKwkJY2FzZSBQZXJpb2RSZWxhdGlvbklkOgorCQkJcmV0dXJuIE9DTEFTU19QRVJJ T0Q7CisKIAkJY2FzZSBDb252ZXJzaW9uUmVsYXRpb25JZDoKIAkJCXJldHVybiBPQ0xBU1NfQ09O VkVSU0lPTjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2hlYXAuYwppbmRleCA4Mzc0NmQzZmQ5Li41NjVlNGM3NjE5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2hlYXAuYwpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNw YWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19wYXJ0aXRpb25lZF90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIK QEAgLTIyMDAsNiArMjIwMSw3MiBAQCBTZXRBdHRyTWlzc2luZyhPaWQgcmVsaWQsIGNoYXIgKmF0 dG5hbWUsIGNoYXIgKnZhbHVlKQogCXRhYmxlX2Nsb3NlKHRhYmxlcmVsLCBBY2Nlc3NFeGNsdXNp dmVMb2NrKTsKIH0KIAorLyoKKyAqIFN0b3JlIGEgcGVyaW9kIG9mIHJlbGF0aW9uIHJlbC4KKyAq CisgKiBSZXR1cm5zIHRoZSBPSUQgb2YgdGhlIG5ldyBwZ19wZXJpb2QgdHVwbGUuCisgKi8KK09p ZAorU3RvcmVQZXJpb2QoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJpb2RuYW1lLCBBdHRy TnVtYmVyIHN0YXJ0bnVtLAorCQkJQXR0ck51bWJlciBlbmRudW0sIE9pZCBybmd0eXBpZCwgT2lk IGNvbm9pZCkKK3sKKwlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3BlcmlvZF07CisJYm9vbAkJbnVs bHNbTmF0dHNfcGdfcGVyaW9kXTsKKwlSZWxhdGlvbglwZ19wZXJpb2Q7CisJSGVhcFR1cGxlCXR1 cGxlOworCU9pZAkJCW9pZDsKKwlOYW1lRGF0YQlwZXJuYW1lOworCU9iamVjdEFkZHJlc3MJbXlz ZWxmLCByZWZlcmVuY2VkOworCisJbmFtZXN0cmNweSgmcGVybmFtZSwgcGVyaW9kbmFtZSk7CisK KwlNZW1TZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJTWVtU2V0KG51bGxzLCBmYWxz ZSwgc2l6ZW9mKG51bGxzKSk7CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0 aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJb2lkID0gR2V0TmV3T2lkV2l0aEluZGV4KHBn X3BlcmlvZCwgQXR0ckRlZmF1bHRPaWRJbmRleElkLCBBbnVtX3BnX3BlcmlvZF9vaWQpOworCXZh bHVlc1tBbnVtX3BnX3BlcmlvZF9vaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob2lkKTsKKwl2 YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVybmFtZSAtIDFdID0gTmFtZUdldERhdHVtKCZwZXJuYW1l KTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVycmVsaWQgLSAxXSA9IFJlbGF0aW9uR2V0UmVs aWQocmVsKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVyc3RhcnQgLSAxXSA9IHN0YXJ0bnVt OworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJlbmQgLSAxXSA9IGVuZG51bTsKKwl2YWx1ZXNb QW51bV9wZ19wZXJpb2RfcGVycm5ndHlwZSAtIDFdID0gcm5ndHlwaWQ7CisJdmFsdWVzW0FudW1f cGdfcGVyaW9kX3BlcmNvbnN0cmFpbnQgLSAxXSA9IGNvbm9pZDsKKwl2YWx1ZXNbQW51bV9wZ19w ZXJpb2RfcGVyaXNsb2NhbCAtIDFdID0gdHJ1ZTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVy aW5oY291bnQgLSAxXSA9IDA7CisKKwl0dXBsZSA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlvbkdl dERlc2NyKHBnX3BlcmlvZCksIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2VydChw Z19wZXJpb2QsIHR1cGxlKTsKKworCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBQZXJpb2RSZWxh dGlvbklkLCBvaWQpOworCisJLyogRHJvcCB0aGUgcGVyaW9kIHdoZW4gdGhlIHRhYmxlIGlzIGRy b3BwZWQuICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9u SWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYs ICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCisJLyogRm9yYmlkIGRyb3BwaW5nIHRo ZSBjb2x1bW5zIG9mIHRoZSBwZXJpb2QuICovCisJT2JqZWN0QWRkcmVzc1N1YlNldChyZWZlcmVu Y2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgc3RhcnRudW0p OworCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9O T1JNQUwpOworCU9iamVjdEFkZHJlc3NTdWJTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlv bklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIGVuZG51bSk7CisJcmVjb3JkRGVwZW5kZW5jeU9u KCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisKKwkvKiBNYWtlIHN1 cmUgd2UgZG9uJ3QgbG9zZSBvdXIgcmFuZ2V0eXBlLiAqLworCU9iamVjdEFkZHJlc3NTZXQocmVm ZXJlbmNlZCwgVHlwZVJlbGF0aW9uSWQsIHJuZ3R5cGlkKTsKKwlyZWNvcmREZXBlbmRlbmN5T24o Jm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKKworCS8qCisJICogVGhl IGNvbnN0cmFpbnQgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBzbyB3ZSBtYXJrIGl0IGFz IHN1Y2guCisJICogKE5vdGUgdGhhdCBteXNlbGYgYW5kIHJlZmVyZW5jZWQgYXJlIHJldmVyc2Vk IGZvciB0aGlzIG9uZS4pCisJICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBDb25z dHJhaW50UmVsYXRpb25JZCwgY29ub2lkKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJnJlZmVyZW5j ZWQsICZteXNlbGYsIERFUEVOREVOQ1lfSU5URVJOQUwpOworCisJdGFibGVfY2xvc2UocGdfcGVy aW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBvaWQ7Cit9CisKIC8qCiAgKiBTdG9y ZSBhIGRlZmF1bHQgZXhwcmVzc2lvbiBmb3IgY29sdW1uIGF0dG51bSBvZiByZWxhdGlvbiByZWwu CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEu c3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCmluZGV4IDEx ZDlkZDYwYzIuLjU3NTg3MDNmN2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5m b3JtYXRpb25fc2NoZW1hLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9u X3NjaGVtYS5zcWwKQEAgLTExOTgsNyArMTE5OCwyOSBAQCBHUkFOVCBTRUxFQ1QgT04gcGFyYW1l dGVycyBUTyBQVUJMSUM7CiAgKiBQRVJJT0RTIHZpZXcKICAqLwogCi0tLSBmZWF0dXJlIG5vdCBz dXBwb3J0ZWQKK0NSRUFURSBWSUVXIHBlcmlvZHMgQVMKKyAgICBTRUxFQ1QgY3VycmVudF9kYXRh YmFzZSgpOjppbmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMgdGFibGVfY2F0YWxv ZywKKyAgICAgICAgICAgbmMubnNwbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlm aWVyIEFTIHRhYmxlX3NjaGVtYSwKKyAgICAgICAgICAgYy5yZWxuYW1lOjppbmZvcm1hdGlvbl9z Y2hlbWEuc3FsX2lkZW50aWZpZXIgQVMgdGFibGVfbmFtZSwKKyAgICAgICAgICAgcC5wZXJuYW1l OjppbmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMgcGVyaW9kX25hbWUsCisgICAg ICAgICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShjLnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAg ICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9wcml2aWxlZ2Uoc2EuYXR0cmVsaWQsIHNhLmF0dG51 bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERBVEUsIFJFRkVSRU5DRVMnKQorICAgICAgICAgICAgICAg IFRIRU4gc2EuYXR0bmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyCisgICAg ICAgICAgIEVORCBBUyBzdGFydF9jb2x1bW5fbmFtZSwKKyAgICAgICAgICAgQ0FTRSBXSEVOIHBn X2hhc19yb2xlKGMucmVsb3duZXIsICdVU0FHRScpCisgICAgICAgICAgICAgICAgICBPUiBoYXNf Y29sdW1uX3ByaXZpbGVnZShlYS5hdHRyZWxpZCwgZWEuYXR0bnVtLCAnU0VMRUNULCBJTlNFUlQs IFVQREFURSwgUkVGRVJFTkNFUycpCisgICAgICAgICAgICAgICAgVEhFTiBlYS5hdHRuYW1lOjpp bmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIKKyAgICAgICAgICAgRU5EIEFTIGVuZF9j b2x1bW5fbmFtZQorICAgIEZST00gcGdfcGVyaW9kIEFTIHAKKyAgICBKT0lOIHBnX2NsYXNzIEFT IGMgT04gYy5vaWQgPSBwLnBlcnJlbGlkCisgICAgSk9JTiBwZ19uYW1lc3BhY2UgQVMgbmMgT04g bmMub2lkID0gYy5yZWxuYW1lc3BhY2UKKyAgICBKT0lOIHBnX2F0dHJpYnV0ZSBBUyBzYSBPTiAo c2EuYXR0cmVsaWQsIHNhLmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFydCkKKyAgICBK T0lOIHBnX2F0dHJpYnV0ZSBBUyBlYSBPTiAoZWEuYXR0cmVsaWQsIGVhLmF0dG51bSkgPSAocC5w ZXJyZWxpZCwgcC5wZXJlbmQpCisgICAgV0hFUkUgTk9UIHBnX2lzX290aGVyX3RlbXBfc2NoZW1h KG5jLm9pZCkKKyAgICAgIC0tQU5EIGMucmVsa2luZCA9IEFOWSAoQVJSQVlbJ3InXSk7CisgICAg ICBBTkQgYy5yZWxraW5kIElOICgncicsICd2Jyk7CisKK0dSQU5UIFNFTEVDVCBPTiBwZXJpb2Rz IFRPIFBVQkxJQzsKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmpl Y3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwppbmRleCA4 Yzk0OTM5YmFhLi4xMTdmM2JkMzdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29i amVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpA QCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5 LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3BvbGljeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfcHVibGljYXRpb24uaCIKQEAgLTcxMyw2ICs3MTQsMTAgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBvYmplY3RfdHlwZV9tYXAKIAl7CiAJCSJkb21haW4gY29uc3RyYWludCIsIE9CSkVDVF9E T01DT05TVFJBSU5UCiAJfSwKKwkvKiBPQ0xBU1NfUEVSSU9EICovCisJeworCQkicGVyaW9kIiwg T0JKRUNUX1BFUklPRAorCX0sCiAJLyogT0NMQVNTX0NPTlZFUlNJT04gKi8KIAl7CiAJCSJjb252 ZXJzaW9uIiwgT0JKRUNUX0NPTlZFUlNJT04KQEAgLTk3Niw2ICs5ODEsNyBAQCBnZXRfb2JqZWN0 X2FkZHJlc3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QsCiAJCQljYXNlIE9CSkVD VF9UUklHR0VSOgogCQkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKIAkJCWNhc2UgT0JKRUNU X1BPTElDWToKKwkJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJCQlhZGRyZXNzID0gZ2V0X29iamVj dF9hZGRyZXNzX3JlbG9iamVjdChvYmp0eXBlLCBjYXN0Tm9kZShMaXN0LCBvYmplY3QpLAogCQkJ CQkJCQkJCQkJCSAgICZyZWxhdGlvbiwgbWlzc2luZ19vayk7CiAJCQkJYnJlYWs7CkBAIC0xNDY3 LDYgKzE0NzMsMTMgQEAgZ2V0X29iamVjdF9hZGRyZXNzX3JlbG9iamVjdChPYmplY3RUeXBlIG9i anR5cGUsIExpc3QgKm9iamVjdCwKIAkJCQlJbnZhbGlkT2lkOwogCQkJYWRkcmVzcy5vYmplY3RT dWJJZCA9IDA7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgorCQkJYWRkcmVzcy5j bGFzc0lkID0gUGVyaW9kUmVsYXRpb25JZDsKKwkJCWFkZHJlc3Mub2JqZWN0SWQgPSByZWxhdGlv biA/CisJCQkJZ2V0X3JlbGF0aW9uX3BlcmlvZF9vaWQocmVsb2lkLCBkZXBuYW1lLCBtaXNzaW5n X29rKSA6CisJCQkJSW52YWxpZE9pZDsKKwkJCWFkZHJlc3Mub2JqZWN0U3ViSWQgPSAwOworCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGU6 ICVkIiwgKGludCkgb2JqdHlwZSk7CiAJfQpAQCAtMjI2NSw2ICsyMjc4LDcgQEAgcGdfZ2V0X29i amVjdF9hZGRyZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2UgT0JKRUNUX1JVTEU6CiAJCWNh c2UgT0JKRUNUX1RSSUdHRVI6CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCWNhc2Ug T0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BG QU1JTFk6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsKQEAgLTIzNzksNiArMjM5Myw3IEBA IGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBlLCBP YmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CiAJCWNhc2UgT0JK RUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKKwkJY2FzZSBPQkpFQ1Rf UEVSSU9EOgogCQkJaWYgKCFwZ19jbGFzc19vd25lcmNoZWNrKFJlbGF0aW9uR2V0UmVsaWQocmVs YXRpb24pLCByb2xlaWQpKQogCQkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwg b2JqdHlwZSwKIAkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOwpA QCAtMzAyMyw2ICszMDM4LDM4IEBAIGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFk ZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNh c2UgT0NMQVNTX1BFUklPRDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1f cGdfcGVyaW9kIHBlcjsKKworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQs CisJCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlm ICghSGVhcFR1cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKwkJ CQlwZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJaWYgKE9p ZElzVmFsaWQocGVyLT5wZXJyZWxpZCkpCisJCQkJeworCQkJCQlTdHJpbmdJbmZvRGF0YSByZWw7 CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJnJlbCk7CisJCQkJCWdldFJlbGF0aW9uRGVzY3JpcHRp b24oJnJlbCwgcGVyLT5wZXJyZWxpZCwgZmFsc2UpOworCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZi dWZmZXIsIF8oInBlcmlvZCAlcyBvbiAlcyIpLAorCQkJCQkJCQkJIE5hbWVTdHIocGVyLT5wZXJu YW1lKSwgcmVsLmRhdGEpOworCQkJCQlwZnJlZShyZWwuZGF0YSk7CisJCQkJfQorCQkJCWVsc2UK KwkJCQl7CisJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgXygicGVyaW9kICVzIiksCisJ CQkJCQkJCQkgTmFtZVN0cihwZXItPnBlcm5hbWUpKTsKKwkJCQl9CisKKwkJCQlSZWxlYXNlU3lz Q2FjaGUocGVyVHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIE9DTEFTU19DT05WRVJT SU9OOgogCQkJewogCQkJCUhlYXBUdXBsZQljb25UdXA7CkBAIC00MzU3LDYgKzQ0MDQsMTAgQEAg Z2V0T2JqZWN0VHlwZURlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9v bCBtaXNzaW5nX29rKQogCQkJCQkJCQkJCSBtaXNzaW5nX29rKTsKIAkJCWJyZWFrOwogCisJCWNh c2UgT0NMQVNTX1BFUklPRDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInBl cmlvZCIpOworCQkJYnJlYWs7CisKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lPTjoKIAkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgImNvbnZlcnNpb24iKTsKIAkJCWJyZWFrOwpAQCAt NDg1Miw2ICs0OTAzLDI4IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRk cmVzcyAqb2JqZWN0LAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoK KwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9kIHBlcjsKKwor CQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJCQkJCQkJIE9iamVj dElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxp ZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVy aW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKwkJCQlwZXIgPSAoRm9ybV9wZ19w ZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVy LCAiJXMgb24gIiwKKwkJCQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoTmFtZVN0cihwZXItPnBlcm5h bWUpKSk7CisJCQkJZ2V0UmVsYXRpb25JZGVudGl0eSgmYnVmZmVyLCBwZXItPnBlcnJlbGlkLCBv YmpuYW1lLCBmYWxzZSk7CisJCQkJaWYgKG9iam5hbWUpCisJCQkJCSpvYmpuYW1lID0gbGFwcGVu ZCgqb2JqbmFtZSwgcHN0cmR1cChOYW1lU3RyKHBlci0+cGVybmFtZSkpKTsKKworCQkJCVJlbGVh c2VTeXNDYWNoZShwZXJUdXApOworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NMQVNTX0NP TlZFUlNJT046CiAJCQl7CiAJCQkJSGVhcFR1cGxlCWNvblR1cDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3Blcmlv ZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQwZWMzZmJkYmQKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCkBAIC0wLDAg KzEsMTA2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19wZXJpb2QuYworICoJICBy b3V0aW5lcyB0byBzdXBwb3J0IG1hbmlwdWxhdGlvbiBvZiB0aGUgcGdfcGVyaW9kIHJlbGF0aW9u CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwgR2xv YmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNy Yy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNp bmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5o IgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Bl cmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKKworCisvKgorICogRGVsZXRlIGEgc2luZ2xlIHBlcmlvZCByZWNvcmQuCisgKi8KK3Zv aWQKK1JlbW92ZVBlcmlvZEJ5SWQoT2lkIHBlcmlvZElkKQoreworCVJlbGF0aW9uCXBnX3Blcmlv ZDsKKwlIZWFwVHVwbGUJdHVwOworCisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxh dGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJ T0RPSUQsIE9iamVjdElkR2V0RGF0dW0ocGVyaW9kSWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFs aWQodHVwKSkgLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAldSIsIHBlcmlvZElkKTsKKworCS8qIEZyeSB0aGUgcGVy aW9kIGl0c2VsZiAqLworCUNhdGFsb2dUdXBsZURlbGV0ZShwZ19wZXJpb2QsICZ0dXAtPnRfc2Vs Zik7CisKKwkvKiBDbGVhbiB1cCAqLworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCXRhYmxlX2Ns b3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKKy8qCisgKiBnZXRfcmVsYXRp b25fcGVyaW9kX29pZAorICoJCUZpbmQgYSBwZXJpb2Qgb24gdGhlIHNwZWNpZmllZCByZWxhdGlv biB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4KKyAqCQlSZXR1cm5zIHBlcmlvZCdzIE9JRC4KKyAq LworT2lkCitnZXRfcmVsYXRpb25fcGVyaW9kX29pZChPaWQgcmVsaWQsIGNvbnN0IGNoYXIgKnBl cm5hbWUsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlSZWxhdGlvbglwZ19wZXJpb2Q7CisJSGVhcFR1 cGxlCXR1cGxlOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2NhbktleURhdGEgc2tleVsxXTsKKwlP aWQJCQlwZXJPaWQgPSBJbnZhbGlkT2lkOworCisJLyoKKwkgKiBGZXRjaCB0aGUgcGVyaW9kIHR1 cGxlIGZyb20gcGdfcGVyaW9kLiAgVGhlcmUgbWF5IGJlIG1vcmUgdGhhbgorCSAqIG9uZSBtYXRj aCwgYmVjYXVzZSBwZXJpb2RzIGFyZSBub3QgcmVxdWlyZWQgdG8gaGF2ZSB1bmlxdWUgbmFtZXM7 CisJICogaWYgc28sIGVycm9yIG91dC4KKwkgKi8KKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBl cmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgmc2tleVsw XSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOworCisJc2NhbiA9IHN5 c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUs CisJCQkJCQkJICBOVUxMLCAxLCBza2V5KTsKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1 cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlGb3JtX3BnX3BlcmlvZCBwZXJp b2QgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJaWYgKHN0cmNtcChO YW1lU3RyKHBlcmlvZC0+cGVybmFtZSksIHBlcm5hbWUpID09IDApCisJCXsKKwkJCWlmIChPaWRJ c1ZhbGlkKHBlck9pZCkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCQkgZXJybXNnKCJ0YWJsZSBcIiVzXCIgaGFzIG11 bHRpcGxlIHBlcmlvZHMgbmFtZWQgXCIlc1wiIiwKKwkJCQkJCQkJZ2V0X3JlbF9uYW1lKHJlbGlk KSwgcGVybmFtZSkpKTsKKwkJCXBlck9pZCA9IHBlcmlvZC0+b2lkOworCQl9CisJfQorCisJc3lz dGFibGVfZW5kc2NhbihzY2FuKTsKKworCS8qIElmIG5vIHN1Y2ggcGVyaW9kIGV4aXN0cywgY29t cGxhaW4gKi8KKwlpZiAoIU9pZElzVmFsaWQocGVyT2lkKSAmJiAhbWlzc2luZ19vaykKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJ CSBlcnJtc2coInBlcmlvZCBcIiVzXCIgZm9yIHRhYmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIs CisJCQkJCQlwZXJuYW1lLCBnZXRfcmVsX25hbWUocmVsaWQpKSkpOworCisJdGFibGVfY2xvc2Uo cGdfcGVyaW9kLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHBlck9pZDsKK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAppbmRleCA5ZjQyNDIxNmUyLi45NjYyZDcxM2M5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CkBAIC00MzgsNyArNDM4LDcgQEAgVDE3 NglTZXF1ZW5jZSBnZW5lcmF0b3Igc3VwcG9ydAkJCU5PCXN1cHBvcnRlZCBleGNlcHQgZm9yIE5F WFQgVkFMVUUgRk9SCiBUMTc3CVNlcXVlbmNlIGdlbmVyYXRvciBzdXBwb3J0OiBzaW1wbGUgcmVz dGFydCBvcHRpb24JCQlZRVMJCiBUMTc4CUlkZW50aXR5IGNvbHVtbnM6ICBzaW1wbGUgcmVzdGFy dCBvcHRpb24JCQlZRVMJCiBUMTgwCVN5c3RlbS12ZXJzaW9uZWQgdGFibGVzCQkJTk8JCi1UMTgx CUFwcGxpY2F0aW9uLXRpbWUgcGVyaW9kIHRhYmxlcwkJCU5PCQorVDE4MQlBcHBsaWNhdGlvbi10 aW1lIHBlcmlvZCB0YWJsZXMJCQlZRVMJCiBUMTkxCVJlZmVyZW50aWFsIGFjdGlvbiBSRVNUUklD VAkJCVlFUwkKIFQyMDEJQ29tcGFyYWJsZSBkYXRhIHR5cGVzIGZvciByZWZlcmVudGlhbCBjb25z dHJhaW50cwkJCVlFUwkKIFQyMTEJQmFzaWMgdHJpZ2dlciBjYXBhYmlsaXR5CQkJTk8JCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvYWx0ZXIuYwppbmRleCBjNDdkNTRlOTZiLi5kNDg4ZTFkMGE4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9hbHRlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVy LmMKQEAgLTY0MCw2ICs2NDAsNyBAQCBBbHRlck9iamVjdE5hbWVzcGFjZV9vaWQoT2lkIGNsYXNz SWQsIE9pZCBvYmppZCwgT2lkIG5zcE9pZCwKIAogCQljYXNlIE9DTEFTU19DQVNUOgogCQljYXNl IE9DTEFTU19DT05TVFJBSU5UOgorCQljYXNlIE9DTEFTU19QRVJJT0Q6CiAJCWNhc2UgT0NMQVNT X0RFRkFVTFQ6CiAJCWNhc2UgT0NMQVNTX0xBTkdVQUdFOgogCQljYXNlIE9DTEFTU19MQVJHRU9C SkVDVDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYwppbmRleCBkNDk0M2UzNzRhLi5lYTU5YzJmYTA0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29tbWVudC5jCkBAIC0xMDIsNiArMTAyLDE2IEBAIENvbW1lbnRPYmplY3Qo Q29tbWVudFN0bXQgKnN0bXQpCiAJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0 aW9uKSksCiAJCQkJCQkgZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZChyZWxhdGlvbi0+ cmRfcmVsLT5yZWxraW5kKSkpOwogCQkJYnJlYWs7CisKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgor CQkJLyogUGVyaW9kcyBjYW4gb25seSBnbyBvbiB0YWJsZXMgKi8KKwkJCWlmIChyZWxhdGlvbi0+ cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04pCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkJIGVycm1z ZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsYXRpb24pKSkpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWJyZWFrOwogCX0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwppbmRleCA3MTYxMmQ1NzdlLi43ZDcyNWE5 YmFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCkBAIC05NzAsNiArOTcwLDcg QEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RUeXBlKE9iamVjdFR5cGUgb2J0eXBlKQogCQlj YXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVDVF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpF Q1RfT1BGQU1JTFk6CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZ OgogCQljYXNlIE9CSkVDVF9QUk9DRURVUkU6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgpA QCAtMTAyNSw2ICsxMDI2LDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RDbGFzcyhPYmpl Y3RDbGFzcyBvYmpjbGFzcykKIAkJY2FzZSBPQ0xBU1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09M TEFUSU9OOgogCQljYXNlIE9DTEFTU19DT05TVFJBSU5UOgorCQljYXNlIE9DTEFTU19QRVJJT0Q6 CiAJCWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCWNhc2UgT0NMQVNTX0RFRkFVTFQ6CiAJCWNh c2UgT0NMQVNTX0xBTkdVQUdFOgpAQCAtMjEyNCw2ICsyMTI2LDcgQEAgc3RyaW5naWZ5X2dyYW50 X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQlj YXNlIE9CSkVDVF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNhc2UgT0JK RUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVDVF9QVUJMSUNB VElPTjoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fUkVMOgpAQCAtMjIwNiw2ICsyMjA5LDcg QEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJY2Fz ZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNU X09QRkFNSUxZOgorCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToK IAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JF TDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jCmluZGV4IGRkYzAxOWNiMzkuLmM5N2MzNTdlNTMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc2VjbGFiZWwuYwpAQCAtNzgsNiArNzgsNyBAQCBTZWNMYWJlbFN1cHBvcnRz T2JqZWN0VHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX09QQ0xBU1M6CiAJ CWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToKKwkJY2FzZSBP QkpFQ1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JKRUNUX1BVQkxJ Q0FUSU9OX1JFTDoKIAkJY2FzZSBPQkpFQ1RfUlVMRToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK aW5kZXggZGJlZTZhZTE5OS4uM2I0ZDk5ZTJkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK QEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xh c3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHJpZ2dlci5oIgpAQCAtMTQ0LDEzICsxNDUsMTQgQEAgc3Rh dGljIExpc3QgKm9uX2NvbW1pdHMgPSBOSUw7CiAjZGVmaW5lIEFUX1BBU1NfT0xEX0NPTlNUUgkJ MwkvKiByZS1hZGQgZXhpc3RpbmcgY29uc3RyYWludHMgKi8KIC8qIFdlIGNvdWxkIHN1cHBvcnQg YSBSRU5BTUUgQ09MVU1OIHBhc3MgaGVyZSwgYnV0IG5vdCBjdXJyZW50bHkgdXNlZCAqLwogI2Rl ZmluZSBBVF9QQVNTX0FERF9DT0wJCQk0CS8qIEFERCBDT0xVTU4gKi8KLSNkZWZpbmUgQVRfUEFT U19BRERfQ09OU1RSCQk1CS8qIEFERCBjb25zdHJhaW50cyAoaW5pdGlhbCBleGFtaW5hdGlvbikg Ki8KLSNkZWZpbmUgQVRfUEFTU19DT0xfQVRUUlMJCTYJLyogc2V0IGNvbHVtbiBhdHRyaWJ1dGVz LCBlZyBOT1QgTlVMTCAqLwotI2RlZmluZSBBVF9QQVNTX0FERF9JTkRFWENPTlNUUgk3CS8qIEFE RCBpbmRleC1iYXNlZCBjb25zdHJhaW50cyAqLwotI2RlZmluZSBBVF9QQVNTX0FERF9JTkRFWAkJ OAkvKiBBREQgaW5kZXhlcyAqLwotI2RlZmluZSBBVF9QQVNTX0FERF9PVEhFUkNPTlNUUgk5CS8q IEFERCBvdGhlciBjb25zdHJhaW50cywgZGVmYXVsdHMgKi8KLSNkZWZpbmUgQVRfUEFTU19NSVND CQkJMTAJLyogb3RoZXIgc3R1ZmYgKi8KLSNkZWZpbmUgQVRfTlVNX1BBU1NFUwkJCTExCisjZGVm aW5lIEFUX1BBU1NfQUREX1BFUklPRAkJNQkvKiBBREQgUEVSSU9EICovCisjZGVmaW5lIEFUX1BB U1NfQUREX0NPTlNUUgkJNgkvKiBBREQgY29uc3RyYWludHMgKGluaXRpYWwgZXhhbWluYXRpb24p ICovCisjZGVmaW5lIEFUX1BBU1NfQ09MX0FUVFJTCQk3CS8qIHNldCBjb2x1bW4gYXR0cmlidXRl cywgZWcgTk9UIE5VTEwgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfSU5ERVhDT05TVFIJOAkvKiBB REQgaW5kZXgtYmFzZWQgY29uc3RyYWludHMgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfSU5ERVgJ CTkJLyogQUREIGluZGV4ZXMgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfT1RIRVJDT05TVFIJMTAJ LyogQUREIG90aGVyIGNvbnN0cmFpbnRzLCBkZWZhdWx0cyAqLworI2RlZmluZSBBVF9QQVNTX01J U0MJCQkxMQkvKiBvdGhlciBzdHVmZiAqLworI2RlZmluZSBBVF9OVU1fUEFTU0VTCQkJMTIKIAog dHlwZWRlZiBzdHJ1Y3QgQWx0ZXJlZFRhYmxlSW5mbwogewpAQCAtNDE4LDYgKzQyMCw4IEBAIHN0 YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVk VGFibGVJbmZvICp0YWIsCiAJCQkJCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250 ZXh0KTsKIHN0YXRpYyBib29sIGNoZWNrX2Zvcl9jb2x1bW5fbmFtZV9jb2xsaXNpb24oUmVsYXRp b24gcmVsLCBjb25zdCBjaGFyICpjb2xuYW1lLAogCQkJCQkJCQkJCQlib29sIGlmX25vdF9leGlz dHMpOworc3RhdGljIGJvb2wgY2hlY2tfZm9yX3BlcmlvZF9uYW1lX2NvbGxpc2lvbihSZWxhdGlv biByZWwsIGNvbnN0IGNoYXIgKnBlcm5hbWUsCisJCQkJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0 cyk7CiBzdGF0aWMgdm9pZCBhZGRfY29sdW1uX2RhdGF0eXBlX2RlcGVuZGVuY3koT2lkIHJlbGlk LCBpbnQzMiBhdHRudW0sIE9pZCB0eXBpZCk7CiBzdGF0aWMgdm9pZCBhZGRfY29sdW1uX2NvbGxh dGlvbl9kZXBlbmRlbmN5KE9pZCByZWxpZCwgaW50MzIgYXR0bnVtLCBPaWQgY29sbGlkKTsKIHN0 YXRpYyB2b2lkIEFUUHJlcERyb3BOb3ROdWxsKFJlbGF0aW9uIHJlbCwgYm9vbCByZWN1cnNlLCBi b29sIHJlY3Vyc2luZyk7CkBAIC00MzcsNiArNDQxLDEyIEBAIHN0YXRpYyBPYmplY3RBZGRyZXNz IEFURXhlY0NvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAog CQkJCQkJCQkJCSBOb2RlICpuZXdEZWZhdWx0LCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBzdGF0aWMg T2JqZWN0QWRkcmVzcyBBVEV4ZWNDb29rZWRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgQXR0 ck51bWJlciBhdHRudW0sCiAJCQkJCQkJCQkJCSAgIE5vZGUgKm5ld0RlZmF1bHQpOworc3RhdGlj IE9iamVjdEFkZHJlc3MgQVRFeGVjQWRkUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kICpwZXJp b2QsIExPQ0tNT0RFIGxvY2ttb2RlLAorCQkJCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4 dCAqY29udGV4dCk7CitzdGF0aWMgdm9pZCBBVEV4ZWNEcm9wUGVyaW9kKFJlbGF0aW9uIHJlbCwg Y29uc3QgY2hhciAqcGVyaW9kTmFtZSwKKwkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLAor CQkJCQkJCSBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nLAorCQkJCQkJCSBib29sIG1pc3Np bmdfb2ssIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Fk ZElkZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJCQkJCQkJCSAg IE5vZGUgKmRlZiwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRF eGVjU2V0SWRlbnRpdHkoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLApAQCAtNjAy LDYgKzYxMiw3IEBAIHN0YXRpYyB2b2lkIHJlZnVzZUR1cGVJbmRleEF0dGFjaChSZWxhdGlvbiBw YXJlbnRJZHgsIFJlbGF0aW9uIHBhcnRJZHgsCiBzdGF0aWMgTGlzdCAqR2V0UGFyZW50ZWRGb3Jl aWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIHZvaWQgQVREZXRhY2hDaGVj a05vRm9yZWlnbktleVJlZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0 dHJpYnV0ZUNvbXByZXNzaW9uKE9pZCBhdHR0eXBpZCwgY2hhciAqY29tcHJlc3Npb24pOworc3Rh dGljIHZvaWQgQWRkUmVsYXRpb25OZXdQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2QgKnBlcmlv ZCk7CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTIxMyw2ICsxMjI0LDE3IEBAIERlZmluZVJlbGF0aW9u KENyZWF0ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJCUFkZFJlbGF0 aW9uTmV3Q29uc3RyYWludHMocmVsLCBOSUwsIHN0bXQtPmNvbnN0cmFpbnRzLAogCQkJCQkJCQkg IHRydWUsIHRydWUsIGZhbHNlLCBxdWVyeVN0cmluZyk7CiAKKwkvKgorCSAqIENyZWF0ZSBwZXJp b2RzIGZvciB0aGUgdGFibGUuIFRoaXMgbXVzdCBjb21lIGFmdGVyIHdlIGNyZWF0ZSBjb2x1bW5z CisJICogYW5kIGJlZm9yZSB3ZSBjcmVhdGUgaW5kZXggY29uc3RyYWludHMuIEl0IHdpbGwgYXV0 b21hdGljYWxseSBjcmVhdGUKKwkgKiBOT1QgTlVMTCBhbmQgQ0hFQ0sgY29uc3RyYWludHMgZm9y IHRoZSBwZXJpb2QuCisJICovCisJZm9yZWFjaChsaXN0cHRyLCBzdG10LT5wZXJpb2RzKQorCXsK KwkJUGVyaW9kICpwZXJpb2QgPSAoUGVyaW9kICopIGxmaXJzdChsaXN0cHRyKTsKKwkJQWRkUmVs YXRpb25OZXdQZXJpb2QocmVsLCBwZXJpb2QpOworCX0KKwogCU9iamVjdEFkZHJlc3NTZXQoYWRk cmVzcywgUmVsYXRpb25SZWxhdGlvbklkLCByZWxhdGlvbklkKTsKIAogCS8qCkBAIC0xMjI0LDYg KzEyNDYsMTYxIEBAIERlZmluZVJlbGF0aW9uKENyZWF0ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2lu ZCwgT2lkIG93bmVySWQsCiAJcmV0dXJuIGFkZHJlc3M7CiB9CiAKK3N0YXRpYyBDb25zdHJhaW50 ICoKK21ha2VfcGVyaW9kX25vdF9iYWNrd2FyZChSZWxhdGlvbiByZWwsIFBlcmlvZCAqcGVyaW9k LCBjaGFyICpjb25zdHJhaW50bmFtZSkKK3sKKwlDb2x1bW5SZWYgICpzY29sLCAqZWNvbDsKKwlD b25zdHJhaW50ICpjb25zdHI7CisKKwlpZiAoY29uc3RyYWludG5hbWUgPT0gTlVMTCkKKwkJY29u c3RyYWludG5hbWUgPSBDaG9vc2VDb25zdHJhaW50TmFtZShSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpLAorCQkJCQkJCQkJCQkgIHBlcmlvZC0+cGVyaW9kbmFtZSwKKwkJCQkJCQkJCQkJICAi Y2hlY2siLAorCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCksCisJCQkJCQkJ CQkJCSAgTklMKTsKKwlwZXJpb2QtPmNvbnN0cmFpbnRuYW1lID0gY29uc3RyYWludG5hbWU7CisK KwlzY29sID0gbWFrZU5vZGUoQ29sdW1uUmVmKTsKKwlzY29sLT5maWVsZHMgPSBsaXN0X21ha2Ux KG1ha2VTdHJpbmcocHN0cmR1cChwZXJpb2QtPnN0YXJ0Y29sbmFtZSkpKTsKKwlzY29sLT5sb2Nh dGlvbiA9IDA7CisKKwllY29sID0gbWFrZU5vZGUoQ29sdW1uUmVmKTsKKwllY29sLT5maWVsZHMg PSBsaXN0X21ha2UxKG1ha2VTdHJpbmcocHN0cmR1cChwZXJpb2QtPmVuZGNvbG5hbWUpKSk7CisJ ZWNvbC0+bG9jYXRpb24gPSAwOworCisJY29uc3RyID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CisJ Y29uc3RyLT5jb250eXBlID0gQ09OU1RSX0NIRUNLOworCWNvbnN0ci0+Y29ubmFtZSA9IGNvbnN0 cmFpbnRuYW1lOworCWNvbnN0ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCWNvbnN0ci0+aW5pdGRl ZmVycmVkID0gZmFsc2U7CisJY29uc3RyLT5sb2NhdGlvbiA9IC0xOworCWNvbnN0ci0+aXNfbm9f aW5oZXJpdCA9IGZhbHNlOworCWNvbnN0ci0+cmF3X2V4cHIgPSAoTm9kZSAqKSBtYWtlU2ltcGxl QV9FeHByKEFFWFBSX09QLCAiPCIsIChOb2RlICopIHNjb2wsIChOb2RlICopIGVjb2wsIDApOwor CWNvbnN0ci0+Y29va2VkX2V4cHIgPSBOVUxMOworCWNvbnN0ci0+c2tpcF92YWxpZGF0aW9uID0g ZmFsc2U7CisJY29uc3RyLT5pbml0aWFsbHlfdmFsaWQgPSB0cnVlOworCisJcmV0dXJuIGNvbnN0 cjsKK30KKworc3RhdGljIHZvaWQKK3ZhbGlkYXRlX3BlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlv ZCAqcGVyaW9kLCBIZWFwVHVwbGUgKnN0YXJ0dHVwbGUsIEhlYXBUdXBsZSAqZW5kdHVwbGUsIFJl bGF0aW9uICphdHRyZWxhdGlvbiwgRm9ybV9wZ19hdHRyaWJ1dGUgKnN0YXJ0YXR0dHVwbGUsIEF0 dHJOdW1iZXIgKnN0YXJ0YXR0bnVtLCBBdHRyTnVtYmVyICplbmRhdHRudW0pCit7CisJKmF0dHJl bGF0aW9uID0gdGFibGVfb3BlbihBdHRyaWJ1dGVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKwlGb3JtX3BnX2F0dHJpYnV0ZQllbmRhdHR0dXBsZTsKKworCS8qIEZpbmQgdGhlIHN0YXJ0 IGNvbHVtbiAqLworCSpzdGFydHR1cGxlID0gU2VhcmNoU3lzQ2FjaGVDb3B5QXR0TmFtZShSZWxh dGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+c3RhcnRjb2xuYW1lKTsKKwlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQoKnN0YXJ0dHVwbGUpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiBy ZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5h bWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJKnN0YXJ0YXR0dHVwbGUgPSAo Rm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVCgqc3RhcnR0dXBsZSk7CisJKnN0YXJ0YXR0bnVt ID0gKCpzdGFydGF0dHR1cGxlKS0+YXR0bnVtOworCisJLyogTWFrZSBzdXJlIGl0J3Mgbm90IGEg c3lzdGVtIGNvbHVtbiAqLworCWlmICgqc3RhcnRhdHRudW0gPD0gMCkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJ CSBlcnJtc2coImNhbm5vdCB1c2Ugc3lzdGVtIGNvbHVtbiBcIiVzXCIgaW4gcGVyaW9kIiwKKwkJ CQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lKSkpOworCisJLyogRmluZCB0aGUgZW5kIGNvbHVtbiAq LworCSplbmR0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weUF0dE5hbWUoUmVsYXRpb25HZXRSZWxp ZChyZWwpLCBwZXJpb2QtPmVuZGNvbG5hbWUpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCgqZW5k dHVwbGUpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X0NPTFVNTiksCisJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIg ZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJcGVyaW9kLT5lbmRjb2xuYW1lLCBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSkpOworCWVuZGF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBH RVRTVFJVQ1QoKmVuZHR1cGxlKTsKKwkqZW5kYXR0bnVtID0gZW5kYXR0dHVwbGUtPmF0dG51bTsK KworCS8qIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAoKmVuZGF0 dG51bSA8PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBzeXN0ZW0gY29s dW1uIFwiJXNcIiBpbiBwZXJpb2QiLAorCQkJCQkJcGVyaW9kLT5lbmRjb2xuYW1lKSkpOworCisJ LyogQm90aCBjb2x1bW5zIG11c3QgYmUgb2Ygc2FtZSB0eXBlICovCisJaWYgKCgqc3RhcnRhdHR0 dXBsZSktPmF0dHR5cGlkICE9IGVuZGF0dHR1cGxlLT5hdHR0eXBpZCkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJybXNn KCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Ygc2FtZSB0eXBlIikp KTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGhhdmUgdGhlIHNhbWUgY29sbGF0aW9uICovCisJ aWYgKCgqc3RhcnRhdHR0dXBsZSktPmF0dGNvbGxhdGlvbiAhPSBlbmRhdHR0dXBsZS0+YXR0Y29s bGF0aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ09MTEFUSU9O X01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9k IG11c3QgaGF2ZSBzYW1lIGNvbGxhdGlvbiIpKSk7Cit9CisKKy8qCisgKiBtYWtlX2NvbnN0cmFp bnRfZm9yX3BlcmlvZAorICoKKyAqIEFkZCBjb25zdHJhaW50cyB0byBtYWtlIGJvdGggY29sdW1u cyBOT1QgTlVMTCBhbmQgQ0hFQ0sgKHN0YXJ0IDwgZW5kKS4KKyAqCisgKiBSZXR1cm5zIHRoZSBD SEVDSyBjb25zdHJhaW50IE9pZC4KKyAqLworc3RhdGljIE9pZAorbWFrZV9jb25zdHJhaW50X2Zv cl9wZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2QgKnBlcmlvZCwgY2hhciAqY29uc3RyYWludG5h bWUsCisJCQkJCQkgICBMT0NLTU9ERSBsb2NrbW9kZSwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0 ICpjb250ZXh0KQoreworCUxpc3QJCSAgICpjbWRzID0gTklMOworCUFsdGVyVGFibGVDbWQgICpj bWQ7CisJQ29uc3RyYWludAkgICAqY29uc3RyOworCisJY29uc3RyID0gbWFrZV9wZXJpb2Rfbm90 X2JhY2t3YXJkKHJlbCwgcGVyaW9kLCBjb25zdHJhaW50bmFtZSk7CisJY21kID0gbWFrZU5vZGUo QWx0ZXJUYWJsZUNtZCk7CisJY21kLT5zdWJ0eXBlID0gQVRfQWRkQ29uc3RyYWludDsKKwljbWQt PmRlZiA9IChOb2RlICopIGNvbnN0cjsKKwljbWRzID0gbGFwcGVuZChjbWRzLCBjbWQpOworCisJ LyogRG8gdGhlIGRlZWQuICovCisJQWx0ZXJUYWJsZUludGVybmFsKFJlbGF0aW9uR2V0UmVsaWQo cmVsKSwgY21kcywgdHJ1ZSwgY29udGV4dCk7CisKKwlyZXR1cm4gZ2V0X3JlbGF0aW9uX2NvbnN0 cmFpbnRfb2lkKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5jb25zdHJhaW50bmFtZSwg ZmFsc2UpOworfQorCitzdGF0aWMgdm9pZAorQWRkUmVsYXRpb25OZXdQZXJpb2QoUmVsYXRpb24g cmVsLCBQZXJpb2QgKnBlcmlvZCkKK3sKKwlSZWxhdGlvbglhdHRyZWxhdGlvbjsKKwlIZWFwVHVw bGUJc3RhcnR0dXBsZSwgZW5kdHVwbGU7CisJRm9ybV9wZ19hdHRyaWJ1dGUJc3RhcnRhdHR0dXBs ZTsKKwlBdHRyTnVtYmVyCXN0YXJ0YXR0bnVtLCBlbmRhdHRudW07CisJT2lkCQkJY29ub2lkOwor CUNvbnN0cmFpbnQgKmNvbnN0cjsKKwlMaXN0CSAgICpuZXdjb25zdHJzOworCisJLyogVGhlIHBl cmlvZCBuYW1lIG11c3Qgbm90IGFscmVhZHkgZXhpc3QgKi8KKwkodm9pZCkgY2hlY2tfZm9yX3Bl cmlvZF9uYW1lX2NvbGxpc2lvbihyZWwsIHBlcmlvZC0+cGVyaW9kbmFtZSwgZmFsc2UpOworCisJ dmFsaWRhdGVfcGVyaW9kKHJlbCwgcGVyaW9kLCAmc3RhcnR0dXBsZSwgJmVuZHR1cGxlLCAmYXR0 cmVsYXRpb24sICZzdGFydGF0dHR1cGxlLCAmc3RhcnRhdHRudW0sICZlbmRhdHRudW0pOworCisJ aGVhcF9mcmVldHVwbGUoc3RhcnR0dXBsZSk7CisJaGVhcF9mcmVldHVwbGUoZW5kdHVwbGUpOwor CisJaWYgKHBlcmlvZC0+Y29uc3RyYWludG5hbWUgPT0gTlVMTCkKKwl7CisJCXBlcmlvZC0+Y29u c3RyYWludG5hbWUgPSBDaG9vc2VDb25zdHJhaW50TmFtZShSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpLAorCQkJCQkJCQkJCQkJCSAgcGVyaW9kLT5wZXJpb2RuYW1lLAorCQkJCQkJCQkJCQkJ CSAgImNoZWNrIiwKKwkJCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCksCisJ CQkJCQkJCQkJCQkJICBOSUwpOworCX0KKworCWNvbnN0ciA9IG1ha2VfcGVyaW9kX25vdF9iYWNr d2FyZChyZWwsIHBlcmlvZCwgcGVyaW9kLT5jb25zdHJhaW50bmFtZSk7CisJbmV3Y29uc3RycyA9 IEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMocmVsLCBOSUwsIGxpc3RfbWFrZTEoY29uc3RyKSwg ZmFsc2UsIHRydWUsIHRydWUsIE5VTEwpOworCWNvbm9pZCA9ICgoQ29va2VkQ29uc3RyYWludCAq KSBsaW5pdGlhbChuZXdjb25zdHJzKSktPmNvbm9pZDsKKworCS8qIFNhdmUgaXQgKi8KKwlTdG9y ZVBlcmlvZChyZWwsIHBlcmlvZC0+cGVyaW9kbmFtZSwgc3RhcnRhdHRudW0sIGVuZGF0dG51bSwg cGVyaW9kLT5ybmd0eXBpZCwgY29ub2lkKTsKKworCXRhYmxlX2Nsb3NlKGF0dHJlbGF0aW9uLCBS b3dFeGNsdXNpdmVMb2NrKTsKK30KKwogLyoKICAqIEVtaXQgdGhlIHJpZ2h0IGVycm9yIG9yIHdh cm5pbmcgbWVzc2FnZSBmb3IgYSAiRFJPUCIgY29tbWFuZCBpc3N1ZWQgb24gYQogICogbm9uLWV4 aXN0ZW50IHJlbGF0aW9uCkBAIC0yMjg0LDYgKzI0NjEsOCBAQCBNZXJnZUF0dHJpYnV0ZXMoTGlz dCAqc2NoZW1hLCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAJICoKIAkgKiBO b3RlIHRoYXQgd2UgYWxzbyBuZWVkIHRvIGNoZWNrIHRoYXQgd2UgZG8gbm90IGV4Y2VlZCB0aGlz IGZpZ3VyZSBhZnRlcgogCSAqIGluY2x1ZGluZyBjb2x1bW5zIGZyb20gaW5oZXJpdGVkIHJlbGF0 aW9ucy4KKwkgKgorCSAqIFRPRE86IFdoYXQgYWJvdXQgcGVyaW9kcz8KIAkgKi8KIAlpZiAobGlz dF9sZW5ndGgoc2NoZW1hKSA+IE1heEhlYXBBdHRyaWJ1dGVOdW1iZXIpCiAJCWVyZXBvcnQoRVJS T1IsCkBAIC0yMzY4LDYgKzI1NDcsOCBAQCBNZXJnZUF0dHJpYnV0ZXMoTGlzdCAqc2NoZW1hLCBM aXN0ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAJICogU2NhbiB0aGUgcGFyZW50cyBs ZWZ0LXRvLXJpZ2h0LCBhbmQgbWVyZ2UgdGhlaXIgYXR0cmlidXRlcyB0byBmb3JtIGEKIAkgKiBs aXN0IG9mIGluaGVyaXRlZCBhdHRyaWJ1dGVzIChpbmhTY2hlbWEpLiAgQWxzbyBjaGVjayB0byBz ZWUgaWYgd2UgbmVlZAogCSAqIHRvIGluaGVyaXQgYW4gT0lEIGNvbHVtbi4KKwkgKgorCSAqIFRP RE86IHByb2JhYmx5IG5lZWQgcGVyaW9kcyBoZXJlLCB0b28uCiAJICovCiAJY2hpbGRfYXR0bm8g PSAwOwogCWZvcmVhY2goZW50cnksIHN1cGVycykKQEAgLTQwMTQsMTIgKzQxOTUsMTIgQEAgQWx0 ZXJUYWJsZShBbHRlclRhYmxlU3RtdCAqc3RtdCwgTE9DS01PREUgbG9ja21vZGUsCiAgKiBleGlz dGluZyBxdWVyeSBwbGFucy4gIE9uIHRoZSBhc3N1bXB0aW9uIGl0J3Mgbm90IHVzZWQgZm9yIHN1 Y2gsIHdlCiAgKiBkb24ndCBoYXZlIHRvIHJlamVjdCBwZW5kaW5nIEFGVEVSIHRyaWdnZXJzLCBl aXRoZXIuCiAgKgotICogQWxzbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhbiBBbHRlclRhYmxlVXRp bGl0eUNvbnRleHQsIHRoaXMgY2Fubm90IGJlCisgKiBBbHNvLCBpZiB5b3UgZG9uJ3QgcGFzcyBh biBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQsIHRoaXMgY2Fubm90IGJlCiAgKiB1c2VkIGZvciBh bnkgc3ViY29tbWFuZCB0eXBlcyB0aGF0IHJlcXVpcmUgcGFyc2UgdHJhbnNmb3JtYXRpb24gb3IK ICAqIGNvdWxkIGdlbmVyYXRlIHN1YmNvbW1hbmRzIHRoYXQgaGF2ZSB0byBiZSBwYXNzZWQgdG8g UHJvY2Vzc1V0aWxpdHkuCiAgKi8KIHZvaWQKLUFsdGVyVGFibGVJbnRlcm5hbChPaWQgcmVsaWQs IExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSkKK0FsdGVyVGFibGVJbnRlcm5hbChPaWQgcmVsaWQs IExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250 ZXh0KQogewogCVJlbGF0aW9uCXJlbDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9IEFsdGVyVGFibGVH ZXRMb2NrTGV2ZWwoY21kcyk7CkBAIC00MDI4LDcgKzQyMDksNyBAQCBBbHRlclRhYmxlSW50ZXJu YWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UpCiAKIAlFdmVudFRyaWdnZXJB bHRlclRhYmxlUmVsaWQocmVsaWQpOwogCi0JQVRDb250cm9sbGVyKE5VTEwsIHJlbCwgY21kcywg cmVjdXJzZSwgbG9ja21vZGUsIE5VTEwpOworCUFUQ29udHJvbGxlcihOVUxMLCByZWwsIGNtZHMs IHJlY3Vyc2UsIGxvY2ttb2RlLCBjb250ZXh0KTsKIH0KIAogLyoKQEAgLTQwOTAsNiArNDI3MSwy MCBAQCBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExpc3QgKmNtZHMpCiAJCQkJY21kX2xvY2ttb2Rl ID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsKIAorCQkJCS8qCisJCQkJICogQWRk aW5nIGEgcGVyaW9kIG1heSBjb25mbGljdCB3aXRoIGEgY29sdW1uIG5hbWUgc28gd2UgbmVlZAor CQkJCSAqIGFuIGV4Y2x1c2l2ZSBsb2NrIHRvIG1ha2Ugc3VyZSBjb2x1bW5zIGFyZW4ndCBhZGRl ZAorCQkJCSAqIGNvbmN1cnJlbnRseS4KKwkJCQkgKgorCQkJCSAqIEl0IGFsc28gYWRkcyBhIENI RUNLIGNvbnN0cmFpbnQgc28gd2UgbmVlZCB0byBtYXRjaCB0aGF0CisJCQkJICogbGV2ZWwsIGFu ZCBkcm9wcGluZyBhIHBlcmlvZCBkcm9wcyB0aGUgY29uc3RyYWludCBzbyB0aGF0CisJCQkJICog bGV2ZWwgbmVlZHMgdG8gYmUgbWF0Y2hlZCwgdG9vLgorCQkJCSAqLworCQkJY2FzZSBBVF9BZGRQ ZXJpb2Q6CisJCQljYXNlIEFUX0Ryb3BQZXJpb2Q6CisJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNz RXhjbHVzaXZlTG9jazsKKwkJCQlicmVhazsKKwogCQkJCS8qCiAJCQkJICogVGhlc2Ugc3ViY29t bWFuZHMgbWF5IHJlcXVpcmUgYWRkaXRpb24gb2YgdG9hc3QgdGFibGVzLiBJZgogCQkJCSAqIHdl IGFkZCBhIHRvYXN0IHRhYmxlIHRvIGEgdGFibGUgY3VycmVudGx5IGJlaW5nIHNjYW5uZWQsIHdl CkBAIC00NDQ1LDYgKzQ2NDAsMTggQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9u IHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJLyogVGhpcyBjb21tYW5kIG5ldmVyIHJlY3Vy c2VzICovCiAJCQlwYXNzID0gQVRfUEFTU19BRERfT1RIRVJDT05TVFI7CiAJCQlicmVhazsKKwkJ Y2FzZSBBVF9BZGRQZXJpb2Q6IC8qIEFMVEVSIFRBQkxFIC4uLiBBREQgUEVSSU9EIEZPUiBuYW1l IChzdGFydCwgZW5kKSAqLworCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJl bCwgQVRUX1RBQkxFKTsKKwkJCS8qCisJCQkgKiBXZSBtdXN0IGFkZCBQRVJJT0RzIGFmdGVyIGNv bHVtbnMsIGluIGNhc2UgdGhleSByZWZlcmVuY2UgYSBuZXdseS1hZGRlZCBjb2x1bW4sCisJCQkg KiBhbmQgYmVmb3JlIGNvbnN0cmFpbnRzLCBpbiBjYXNlIGEgbmV3bHktYWRkZWQgUEsvRksgcmVm ZXJlbmNlcyB0aGVtLgorCQkJICovCisJCQlwYXNzID0gQVRfUEFTU19BRERfUEVSSU9EOworCQkJ YnJlYWs7CisJCWNhc2UgQVRfRHJvcFBlcmlvZDogLyogQUxURVIgVEFCTEUgLi4uIERST1AgUEVS SU9EIEZPUiBuYW1lICovCisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVs LCBBVFRfVEFCTEUpOworCQkJcGFzcyA9IEFUX1BBU1NfRFJPUDsKKwkJCWJyZWFrOwogCQljYXNl IEFUX0FkZElkZW50aXR5OgogCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJl bCwgQVRUX1RBQkxFIHwgQVRUX1ZJRVcgfCBBVFRfRk9SRUlHTl9UQUJMRSk7CiAJCQkvKiBUaGlz IGNvbW1hbmQgbmV2ZXIgcmVjdXJzZXMgKi8KQEAgLTQ4NDQsNiArNTA1MSwxNCBAQCBBVEV4ZWND bWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0Nvb2tl ZENvbHVtbkRlZmF1bHQ6CS8qIGFkZCBhIHByZS1jb29rZWQgZGVmYXVsdCAqLwogCQkJYWRkcmVz cyA9IEFURXhlY0Nvb2tlZENvbHVtbkRlZmF1bHQocmVsLCBjbWQtPm51bSwgY21kLT5kZWYpOwog CQkJYnJlYWs7CisJCWNhc2UgQVRfQWRkUGVyaW9kOgorCQkJYWRkcmVzcyA9IEFURXhlY0FkZFBl cmlvZChyZWwsIChQZXJpb2QgKikgY21kLT5kZWYsIGxvY2ttb2RlLCBjb250ZXh0KTsKKwkJCWJy ZWFrOworCQljYXNlIEFUX0Ryb3BQZXJpb2Q6CisJCQlBVEV4ZWNEcm9wUGVyaW9kKHJlbCwgY21k LT5uYW1lLCBjbWQtPmJlaGF2aW9yLAorCQkJCQkJCQkgZmFsc2UsIGZhbHNlLAorCQkJCQkJCQkg Y21kLT5taXNzaW5nX29rLCBsb2NrbW9kZSk7CisJCQlicmVhazsKIAkJY2FzZSBBVF9BZGRJZGVu dGl0eToKIAkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1DbWQod3F1ZXVlLCB0YWIsIHJlbCwgY21k LCBmYWxzZSwgbG9ja21vZGUsCiAJCQkJCQkJCQkgIGN1cl9wYXNzLCBjb250ZXh0KTsKQEAgLTU5 NzQsNiArNjE4OSw4IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVUeXBl IGNtZHR5cGUpCiAJCWNhc2UgQVRfQWRkQ29sdW1uUmVjdXJzZToKIAkJY2FzZSBBVF9BZGRDb2x1 bW5Ub1ZpZXc6CiAJCQlyZXR1cm4gIkFERCBDT0xVTU4iOworCQljYXNlIEFUX0FkZFBlcmlvZDoK KwkJCXJldHVybiAiQUREIFBFUklPRCI7CiAJCWNhc2UgQVRfQ29sdW1uRGVmYXVsdDoKIAkJY2Fz ZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0OgogCQkJcmV0dXJuICJBTFRFUiBDT0xVTU4gLi4uIFNF VCBERUZBVUxUIjsKQEAgLTU5OTgsNiArNjIxNSw4IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3Ry aW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCWNhc2UgQVRfRHJvcENvbHVtbjoKIAkJY2Fz ZSBBVF9Ecm9wQ29sdW1uUmVjdXJzZToKIAkJCXJldHVybiAiRFJPUCBDT0xVTU4iOworCQljYXNl IEFUX0Ryb3BQZXJpb2Q6CisJCQlyZXR1cm4gIkRST1AgUEVSSU9EIjsKIAkJY2FzZSBBVF9BZGRJ bmRleDoKIAkJY2FzZSBBVF9SZUFkZEluZGV4OgogCQkJcmV0dXJuIE5VTEw7CQkvKiBub3QgcmVh bCBncmFtbWFyICovCkBAIC02OTUyLDE0ICs3MTcxLDI5IEBAIEFURXhlY0FkZENvbHVtbihMaXN0 ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIC8qCiAgKiBJ ZiBhIG5ldyBvciByZW5hbWVkIGNvbHVtbiB3aWxsIGNvbGxpZGUgd2l0aCB0aGUgbmFtZSBvZiBh biBleGlzdGluZwogICogY29sdW1uIGFuZCBpZl9ub3RfZXhpc3RzIGlzIGZhbHNlIHRoZW4gZXJy b3Igb3V0LCBlbHNlIGRvIG5vdGhpbmcuCisgKgorICogU2VlIGFsc28gY2hlY2tfZm9yX3Blcmlv ZF9uYW1lX2NvbGxpc2lvbi4KICAqLwogc3RhdGljIGJvb2wKIGNoZWNrX2Zvcl9jb2x1bW5fbmFt ZV9jb2xsaXNpb24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xuYW1lLAogCQkJCQkJCQli b29sIGlmX25vdF9leGlzdHMpCiB7Ci0JSGVhcFR1cGxlCWF0dFR1cGxlOworCUhlYXBUdXBsZQlh dHRUdXBsZSwgcGVyVHVwbGU7CiAJaW50CQkJYXR0bnVtOwogCisJLyogSWYgdGhlIG5hbWUgZXhp c3RzIGFzIGEgcGVyaW9kLCB3ZSdyZSBkb25lLiAqLworCXBlclR1cGxlID0gU2VhcmNoU3lzQ2Fj aGUyKFBFUklPRE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJl bGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShjb2xuYW1lKSk7CisJaWYgKEhl YXBUdXBsZUlzVmFsaWQocGVyVHVwbGUpKQorCXsKKwkJUmVsZWFzZVN5c0NhY2hlKHBlclR1cGxl KTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xV TU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBuYW1lIFwiJXNcIiBjb25mbGljdHMgd2l0aCBhIHBl cmlvZCBuYW1lIiwKKwkJCQkJCWNvbG5hbWUpKSk7CisJfQorCiAJLyoKIAkgKiB0aGlzIHRlc3Qg aXMgZGVsaWJlcmF0ZWx5IG5vdCBhdHRpc2Ryb3BwZWQtYXdhcmUsIHNpbmNlIGlmIG9uZSB0cmll cyB0bwogCSAqIGFkZCBhIGNvbHVtbiBtYXRjaGluZyBhIGRyb3BwZWQgY29sdW1uIG5hbWUsIGl0 J3MgZ29ubmEgZmFpbCBhbnl3YXkuCkBAIC03MDAzLDYgKzcyMzcsNzggQEAgY2hlY2tfZm9yX2Nv bHVtbl9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJ cmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBJZiBhIG5ldyBwZXJpb2QgbmFtZSB3aWxsIGNvbGxp ZGUgd2l0aCB0aGUgbmFtZSBvZiBhbiBleGlzdGluZyBjb2x1bW4gb3IKKyAqIHBlcmlvZCBbYW5k IGlmX25vdF9leGlzdHMgaXMgZmFsc2VdIHRoZW4gZXJyb3Igb3V0LCBlbHNlIGRvIG5vdGhpbmcu CisgKgorICogU2VlIGFsc28gY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbi4KKyAqLwor c3RhdGljIGJvb2wKK2NoZWNrX2Zvcl9wZXJpb2RfbmFtZV9jb2xsaXNpb24oUmVsYXRpb24gcmVs LCBjb25zdCBjaGFyICpwZXJuYW1lLAorCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpCit7CisJ SGVhcFR1cGxlCWF0dFR1cGxlLCBwZXJUdXBsZTsKKwlpbnQJCQlhdHRudW07CisKKwkvKiBUT0RP OiBpbXBsZW1lbnQgSUYgW05PVF0gRVhJU1RTIGZvciBwZXJpb2RzICovCisJQXNzZXJ0KCFpZl9u b3RfZXhpc3RzKTsKKworCS8qIElmIHRoZXJlIGlzIGFscmVhZHkgYSBwZXJpb2Qgd2l0aCB0aGlz IG5hbWUsIHRoZW4gd2UncmUgZG9uZS4gKi8KKwlwZXJUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMihQ RVJJT0ROQU1FLAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChy ZWwpKSwKKwkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0ocGVybmFtZSkpOworCWlmIChIZWFwVHVw bGVJc1ZhbGlkKHBlclR1cGxlKSkKKwl7CisJCWlmIChpZl9ub3RfZXhpc3RzKQorCQl7CisJCQlS ZWxlYXNlU3lzQ2FjaGUocGVyVHVwbGUpOworCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9kIFwi JXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIiwKKwkJCQkJ CQlwZXJuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJcmV0dXJuIGZh bHNlOworCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJ Q0FURV9DT0xVTU4pLAorCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgb2YgcmVsYXRpb24gXCIl c1wiIGFscmVhZHkgZXhpc3RzIiwKKwkJCQkJCXBlcm5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbCkpKSk7CisJfQorCisJLyoKKwkgKiB0aGlzIHRlc3QgaXMgZGVsaWJlcmF0ZWx5IG5v dCBhdHRpc2Ryb3BwZWQtYXdhcmUsIHNpbmNlIGlmIG9uZSB0cmllcyB0bworCSAqIGFkZCBhIGNv bHVtbiBtYXRjaGluZyBhIGRyb3BwZWQgY29sdW1uIG5hbWUsIGl0J3MgZ29ubmEgZmFpbCBhbnl3 YXkuCisJICoKKwkgKiBYWFg6IERvZXMgdGhpcyBob2xkIGZvciBwZXJpb2RzPworCSAqLworCWF0 dFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKEFUVE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXRE YXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShw ZXJuYW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQoYXR0VHVwbGUpKQorCXsKKwkJYXR0bnVt ID0gKChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dFR1cGxlKSktPmF0dG51bTsKKwkJ UmVsZWFzZVN5c0NhY2hlKGF0dFR1cGxlKTsKKworCQkvKgorCQkgKiBXZSB0aHJvdyBhIGRpZmZl cmVudCBlcnJvciBtZXNzYWdlIGZvciBjb25mbGljdHMgd2l0aCBzeXN0ZW0gY29sdW1uCisJCSAq IG5hbWVzLCBzaW5jZSB0aGV5IGFyZSBub3JtYWxseSBub3Qgc2hvd24gYW5kIHRoZSB1c2VyIG1p Z2h0IG90aGVyd2lzZQorCQkgKiBiZSBjb25mdXNlZCBhYm91dCB0aGUgcmVhc29uIGZvciB0aGUg Y29uZmxpY3QuCisJCSAqLworCQlpZiAoYXR0bnVtIDw9IDApCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJw ZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5hbWUiLAor CQkJCQkJCXBlcm5hbWUpKSk7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29u ZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFtZSIsCisJCQkJCQlwZXJuYW1lKSkpOworCX0KKworCXJl dHVybiB0cnVlOworfQorCiAvKgogICogSW5zdGFsbCBhIGNvbHVtbidzIGRlcGVuZGVuY3kgb24g aXRzIGRhdGF0eXBlLgogICovCkBAIC03NTE4LDYgKzc4MjQsMTc3IEBAIEFURXhlY0Nvb2tlZENv bHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAlyZXR1cm4gYWRk cmVzczsKIH0KIAorLyoKKyAqIEFMVEVSIFRBQkxFIEFERCBQRVJJT0QKKyAqCisgKiBSZXR1cm4g dGhlIGFkZHJlc3Mgb2YgdGhlIHBlcmlvZC4KKyAqLworc3RhdGljIE9iamVjdEFkZHJlc3MKK0FU RXhlY0FkZFBlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZCAqcGVyaW9kLCBMT0NLTU9ERSBsb2Nr bW9kZSwKKwkJCQlBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRp b24JYXR0cmVsYXRpb247CisJSGVhcFR1cGxlCXN0YXJ0dHVwbGUsIGVuZHR1cGxlOworCUZvcm1f cGdfYXR0cmlidXRlCXN0YXJ0YXR0dHVwbGU7CisJQXR0ck51bWJlcglzdGFydGF0dG51bSwgZW5k YXR0bnVtOworCU9pZAkJCWNvbHR5cGlkLCBybmd0eXBpZCwgY29ub2lkLCBwZXJpb2RvaWQ7CisJ T2JqZWN0QWRkcmVzcyBhZGRyZXNzID0gSW52YWxpZE9iamVjdEFkZHJlc3M7CisKKwkvKgorCSAq IFBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHlldCBpbXBsZW1lbnRlZCwgYnV0IG1ha2Ug c3VyZSBubyBvbmUgdXNlcworCSAqIHRoZSBuYW1lLgorCSAqLworCWlmIChzdHJjbXAocGVyaW9k LT5wZXJpb2RuYW1lLCAic3lzdGVtX3RpbWUiKSA9PSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNn KCJQRVJJT0QgRk9SIFNZU1RFTV9USU1FIGlzIG5vdCBzdXBwb3J0ZWQiKSkpOworCisJLyogVGhl IHBlcmlvZCBuYW1lIG11c3Qgbm90IGFscmVhZHkgZXhpc3QgKi8KKwkodm9pZCkgY2hlY2tfZm9y X3BlcmlvZF9uYW1lX2NvbGxpc2lvbihyZWwsIHBlcmlvZC0+cGVyaW9kbmFtZSwgZmFsc2UpOwor CisJLyogUGFyc2Ugb3B0aW9ucyAqLworCXRyYW5zZm9ybVBlcmlvZE9wdGlvbnMocGVyaW9kKTsK KworCXZhbGlkYXRlX3BlcmlvZChyZWwsIHBlcmlvZCwgJnN0YXJ0dHVwbGUsICZlbmR0dXBsZSwg JmF0dHJlbGF0aW9uLCAmc3RhcnRhdHR0dXBsZSwgJnN0YXJ0YXR0bnVtLCAmZW5kYXR0bnVtKTsK KworCS8qCisJICogRmluZCBhIHN1aXRhYmxlIHJhbmdlIHR5cGUgZm9yIG9wZXJhdGlvbnMgaW52 b2x2aW5nIHRoaXMgcGVyaW9kLgorCSAqIFVzZSB0aGUgcmFuZ2V0eXBlIG9wdGlvbiBpZiBwcm92 aWRlZCwgb3RoZXJ3aXNlIHRyeSB0byBmaW5kIGEKKwkgKiBub24tYW1iaWd1b3VzIGV4aXN0aW5n IHR5cGUuCisJICovCisJY29sdHlwaWQgPSBzdGFydGF0dHR1cGxlLT5hdHR0eXBpZDsKKwlpZiAo cGVyaW9kLT5yYW5nZXR5cGVuYW1lICE9IE5VTEwpCisJeworCQkvKiBNYWtlIHN1cmUgaXQgZXhp c3RzICovCisJCXJuZ3R5cGlkID0gVHlwZW5hbWVHZXRUeXBpZEV4dGVuZGVkKHBlcmlvZC0+cmFu Z2V0eXBlbmFtZSwgZmFsc2UpOworCQlpZiAocm5ndHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJCWVy ZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBl cnJtc2coIlJhbmdlIHR5cGUgJXMgbm90IGZvdW5kIiwgcGVyaW9kLT5yYW5nZXR5cGVuYW1lKSkp OworCisJCS8qIE1ha2Ugc3VyZSBpdCBpcyBhIHJhbmdlIHR5cGUgKi8KKwkJaWYgKCF0eXBlX2lz X3JhbmdlKHJuZ3R5cGlkKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJUeXBlICVzIGlzIG5vdCBhIHJh bmdlIHR5cGUiLCBwZXJpb2QtPnJhbmdldHlwZW5hbWUpKSk7CisKKwkJLyogTWFrZSBzdXJlIGl0 IG1hdGNoZXMgdGhlIGNvbHVtbiB0eXBlICovCisJCWlmIChnZXRfcmFuZ2Vfc3VidHlwZShybmd0 eXBpZCkgIT0gY29sdHlwaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygiUmFuZ2UgdHlwZSAlcyBkb2Vz IG5vdCBtYXRjaCBjb2x1bW4gdHlwZSAlcyIsCisJCQkJCQkgcGVyaW9kLT5yYW5nZXR5cGVuYW1l LAorCQkJCQkJIGZvcm1hdF90eXBlX2JlKGNvbHR5cGlkKSkpKTsKKwl9CisJZWxzZQorCXsKKwkJ cm5ndHlwaWQgPSBnZXRfc3VidHlwZV9yYW5nZShjb2x0eXBpZCk7CisJCWlmIChybmd0eXBpZCA9 PSBJbnZhbGlkT2lkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygibm8gcmFuZ2UgdHlwZSBmb3IgJXMgZm91 bmQgZm9yIHBlcmlvZCAlcyIsCisJCQkJCQkJZm9ybWF0X3R5cGVfYmUoY29sdHlwaWQpLAorCQkJ CQkJCXBlcmlvZC0+cGVyaW9kbmFtZSksCisJCQkJCSBlcnJoaW50KCJZb3UgY2FuIGRlZmluZSBh IGN1c3RvbSByYW5nZSB0eXBlIHdpdGggQ1JFQVRFIFRZUEUiKSkpOworCisJfQorCisJaGVhcF9m cmVldHVwbGUoc3RhcnR0dXBsZSk7CisJaGVhcF9mcmVldHVwbGUoZW5kdHVwbGUpOworCisJY29u b2lkID0gbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJpb2QocmVsLCBwZXJpb2QsIHBlcmlvZC0+Y29u c3RyYWludG5hbWUsIGxvY2ttb2RlLCBjb250ZXh0KTsKKworCS8qIFNhdmUgaXQgKi8KKwlwZXJp b2RvaWQgPSBTdG9yZVBlcmlvZChyZWwsIHBlcmlvZC0+cGVyaW9kbmFtZSwgc3RhcnRhdHRudW0s IGVuZGF0dG51bSwgcm5ndHlwaWQsIGNvbm9pZCk7CisKKwlPYmplY3RBZGRyZXNzU2V0KGFkZHJl c3MsIFBlcmlvZFJlbGF0aW9uSWQsIHBlcmlvZG9pZCk7CisKKwl0YWJsZV9jbG9zZShhdHRyZWxh dGlvbiwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gYWRkcmVzczsKK30KKworLyoKKyAq IEFMVEVSIFRBQkxFIERST1AgUEVSSU9ECisgKgorICogTGlrZSBEUk9QIENPTFVNTiwgd2UgY2Fu J3QgdXNlIHRoZSBub3JtYWwgQUxURVIgVEFCTEUgcmVjdXJzaW9uIG1lY2hhbmlzbS4KKyAqLwor c3RhdGljIHZvaWQKK0FURXhlY0Ryb3BQZXJpb2QoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpw ZXJpb2ROYW1lLAorCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLAorCQkJCQkgYm9vbCByZWN1 cnNlLCBib29sIHJlY3Vyc2luZywKKwkJCQkJIGJvb2wgbWlzc2luZ19vaywgTE9DS01PREUgbG9j a21vZGUpCit7CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUZvcm1fcGdfcGVyaW9kIHBlcmlvZDsK KwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRhIGtleTsKKwlIZWFwVHVwbGUJdHVwbGU7 CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCS8qIEF0IHRvcCBsZXZlbCwgcGVybWlzc2lvbiBj aGVjayB3YXMgZG9uZSBpbiBBVFByZXBDbWQsIGVsc2UgZG8gaXQgKi8KKwlpZiAocmVjdXJzaW5n KQorCQlBVFNpbXBsZVBlcm1pc3Npb25zKEFUX0Ryb3BQZXJpb2QsIHJlbCwgQVRUX1RBQkxFKTsK KworCXBnX3BlcmlvZCA9IHRhYmxlX29wZW4oUGVyaW9kUmVsYXRpb25JZCwgUm93RXhjbHVzaXZl TG9jayk7CisKKwkvKgorCSAqIEZpbmQgYW5kIGRyb3AgdGhlIHRhcmdldCBwZXJpb2QKKwkgKi8K KwlTY2FuS2V5SW5pdCgma2V5LAorCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCUJU RXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKFJlbGF0 aW9uR2V0UmVsaWQocmVsKSkpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcGVyaW9k LCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLAorCQkJCQkJCSAgdHJ1ZSwgTlVMTCwgMSwgJmtleSk7 CisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2Nh bikpKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBwZXJvYmo7CisKKwkJcGVyaW9kID0gKEZvcm1fcGdf cGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCWlmIChzdHJjbXAoTmFtZVN0cihwZXJpb2Qt PnBlcm5hbWUpLCBwZXJpb2ROYW1lKSAhPSAwKQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICog UGVyZm9ybSB0aGUgYWN0dWFsIHBlcmlvZCBkZWxldGlvbgorCQkgKi8KKwkJcGVyb2JqLmNsYXNz SWQgPSBQZXJpb2RSZWxhdGlvbklkOworCQlwZXJvYmoub2JqZWN0SWQgPSBwZXJpb2QtPm9pZDsK KwkJcGVyb2JqLm9iamVjdFN1YklkID0gMDsKKworCQlwZXJmb3JtRGVsZXRpb24oJnBlcm9iaiwg YmVoYXZpb3IsIDApOworCisJCWZvdW5kID0gdHJ1ZTsKKworCQkvKiBwZXJpb2QgZm91bmQgYW5k IGRyb3BwZWQgLS0gbm8gbmVlZCB0byBrZWVwIGxvb3BpbmcgKi8KKwkJYnJlYWs7CisJfQorCisJ c3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCWlmICghZm91bmQpCisJeworCQlpZiAoIW1pc3Np bmdfb2spCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5E RUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24g XCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlwZXJpb2ROYW1lLCBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJZXJlcG9ydChOT1RJQ0Us CisJCQkJCShlcnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90 IGV4aXN0LCBza2lwcGluZyIsCisJCQkJCQkJcGVyaW9kTmFtZSwgUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUocmVsKSkpKTsKKwkJCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9j ayk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIFJvd0V4 Y2x1c2l2ZUxvY2spOworfQorCiAvKgogICogQUxURVIgVEFCTEUgQUxURVIgQ09MVU1OIEFERCBJ REVOVElUWQogICoKQEAgLTEyMTU5LDYgKzEyNjM2LDE1IEBAIEFURXhlY0FsdGVyQ29sdW1uVHlw ZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQlSZW1lbWJlckNvbnN0 cmFpbnRGb3JSZWJ1aWxkaW5nKGZvdW5kT2JqZWN0Lm9iamVjdElkLCB0YWIpOwogCQkJCWJyZWFr OwogCisJCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNh bm5vdCBhbHRlciB0eXBlIG9mIGEgY29sdW1uIHVzZWQgYnkgYSBwZXJpb2QiKSwKKwkJCQkJCSBl cnJkZXRhaWwoIiVzIGRlcGVuZHMgb24gY29sdW1uIFwiJXNcIiIsCisJCQkJCQkJCSAgIGdldE9i amVjdERlc2NyaXB0aW9uKCZmb3VuZE9iamVjdCwgZmFsc2UpLAorCQkJCQkJCQkgICBjb2xOYW1l KSkpOworCQkJCWJyZWFrOworCiAJCQljYXNlIE9DTEFTU19SRVdSSVRFOgogCQkJCS8qIFhYWCBz b21lZGF5IHNlZSBpZiB3ZSBjYW4gY29wZSB3aXRoIHJldmlzaW5nIHZpZXdzICovCiAJCQkJZXJl cG9ydChFUlJPUiwKQEAgLTE0MTgyLDcgKzE0NjY4LDcgQEAgQWx0ZXJUYWJsZU1vdmVBbGwoQWx0 ZXJUYWJsZU1vdmVBbGxTdG10ICpzdG10KQogCiAJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFy dCgoTm9kZSAqKSBzdG10KTsKIAkJLyogT0lEIGlzIHNldCBieSBBbHRlclRhYmxlSW50ZXJuYWwg Ki8KLQkJQWx0ZXJUYWJsZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlKTsKKwkJ QWx0ZXJUYWJsZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlLCBOVUxMKTsKIAkJ RXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZUVuZCgpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jCmluZGV4IDRk ZjA1YTBiMzMuLjIyYmM0OTlmNDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zp ZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMKQEAgLTE2OSw3ICsxNjksNyBA QCBEZWZpbmVWaXJ0dWFsUmVsYXRpb24oUmFuZ2VWYXIgKnJlbGF0aW9uLCBMaXN0ICp0bGlzdCwg Ym9vbCByZXBsYWNlLAogCQkJfQogCiAJCQkvKiBFdmVudFRyaWdnZXJBbHRlclRhYmxlU3RhcnQg Y2FsbGVkIGJ5IFByb2Nlc3NVdGlsaXR5U2xvdyAqLwotCQkJQWx0ZXJUYWJsZUludGVybmFsKHZp ZXdPaWQsIGF0Y21kcywgdHJ1ZSk7CisJCQlBbHRlclRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRj bWRzLCB0cnVlLCBOVUxMKTsKIAogCQkJLyogTWFrZSB0aGUgbmV3IHZpZXcgY29sdW1ucyB2aXNp YmxlICovCiAJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwpAQCAtMjAxLDcgKzIwMSw3IEBA IERlZmluZVZpcnR1YWxSZWxhdGlvbihSYW5nZVZhciAqcmVsYXRpb24sIExpc3QgKnRsaXN0LCBi b29sIHJlcGxhY2UsCiAJCWF0Y21kcyA9IGxpc3RfbWFrZTEoYXRjbWQpOwogCiAJCS8qIEV2ZW50 VHJpZ2dlckFsdGVyVGFibGVTdGFydCBjYWxsZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICovCi0J CUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3T2lkLCBhdGNtZHMsIHRydWUpOworCQlBbHRlclRhYmxl SW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBOVUxMKTsKIAogCQlPYmplY3RBZGRyZXNz U2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVsYXRpb25JZCwgdmlld09pZCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1 bmNzLmMKaW5kZXggODNlYzJhMzY5ZS4uYmY4Y2M1MzlhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMK QEAgLTMwODQsNiArMzA4NCwyMSBAQCBfY29weUNvbnN0cmFpbnQoY29uc3QgQ29uc3RyYWludCAq ZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorc3RhdGljIFBlcmlvZCAqCitfY29weVBlcmlv ZChjb25zdCBQZXJpb2QgKmZyb20pCit7CisJUGVyaW9kICpuZXdub2RlID0gbWFrZU5vZGUoUGVy aW9kKTsKKworCUNPUFlfU1RSSU5HX0ZJRUxEKHBlcmlvZG5hbWUpOworCUNPUFlfU1RSSU5HX0ZJ RUxEKHN0YXJ0Y29sbmFtZSk7CisJQ09QWV9TVFJJTkdfRklFTEQoZW5kY29sbmFtZSk7CisJQ09Q WV9OT0RFX0ZJRUxEKG9wdGlvbnMpOworCUNPUFlfU0NBTEFSX0ZJRUxEKHJuZ3R5cGlkKTsKKwlD T1BZX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVybiBuZXdub2RlOworfQorCiBz dGF0aWMgRGVmRWxlbSAqCiBfY29weURlZkVsZW0oY29uc3QgRGVmRWxlbSAqZnJvbSkKIHsKQEAg LTM2NDMsNiArMzY1OCw3IEBAIF9jb3B5SW5kZXhTdG10KGNvbnN0IEluZGV4U3RtdCAqZnJvbSkK IAlDT1BZX1NUUklOR19GSUVMRCh0YWJsZVNwYWNlKTsKIAlDT1BZX05PREVfRklFTEQoaW5kZXhQ YXJhbXMpOwogCUNPUFlfTk9ERV9GSUVMRChpbmRleEluY2x1ZGluZ1BhcmFtcyk7CisJQ09QWV9O T0RFX0ZJRUxEKHBlcmlvZCk7CiAJQ09QWV9OT0RFX0ZJRUxEKG9wdGlvbnMpOwogCUNPUFlfTk9E RV9GSUVMRCh3aGVyZUNsYXVzZSk7CiAJQ09QWV9OT0RFX0ZJRUxEKGV4Y2x1ZGVPcE5hbWVzKTsK QEAgLTU4MDYsNiArNTgyMiw5IEBAIGNvcHlPYmplY3RJbXBsKGNvbnN0IHZvaWQgKmZyb20pCiAJ CWNhc2UgVF9Db25zdHJhaW50OgogCQkJcmV0dmFsID0gX2NvcHlDb25zdHJhaW50KGZyb20pOwog CQkJYnJlYWs7CisJCWNhc2UgVF9QZXJpb2Q6CisJCQlyZXR2YWwgPSBfY29weVBlcmlvZChmcm9t KTsKKwkJCWJyZWFrOwogCQljYXNlIFRfRGVmRWxlbToKIAkJCXJldHZhbCA9IF9jb3B5RGVmRWxl bShmcm9tKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxm dW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCmluZGV4IDRiYWQ3MDlmODMu LmU3NGIxOWQyYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwor KysgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKQEAgLTEzODQsNiArMTM4NCw3IEBA IF9lcXVhbEluZGV4U3RtdChjb25zdCBJbmRleFN0bXQgKmEsIGNvbnN0IEluZGV4U3RtdCAqYikK IAlDT01QQVJFX1NUUklOR19GSUVMRCh0YWJsZVNwYWNlKTsKIAlDT01QQVJFX05PREVfRklFTEQo aW5kZXhQYXJhbXMpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChpbmRleEluY2x1ZGluZ1BhcmFtcyk7 CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHBlcmlvZCk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKG9wdGlv bnMpOwogCUNPTVBBUkVfTk9ERV9GSUVMRCh3aGVyZUNsYXVzZSk7CiAJQ09NUEFSRV9OT0RFX0ZJ RUxEKGV4Y2x1ZGVPcE5hbWVzKTsKQEAgLTI3MDYsNiArMjcwNywxOSBAQCBfZXF1YWxDb25zdHJh aW50KGNvbnN0IENvbnN0cmFpbnQgKmEsIGNvbnN0IENvbnN0cmFpbnQgKmIpCiAJcmV0dXJuIHRy dWU7CiB9CiAKK3N0YXRpYyBib29sCitfZXF1YWxQZXJpb2QoY29uc3QgUGVyaW9kICphLCBjb25z dCBQZXJpb2QgKmIpCit7CisJQ09NUEFSRV9TVFJJTkdfRklFTEQocGVyaW9kbmFtZSk7CisJQ09N UEFSRV9TVFJJTkdfRklFTEQoc3RhcnRjb2xuYW1lKTsKKwlDT01QQVJFX1NUUklOR19GSUVMRChl bmRjb2xuYW1lKTsKKwlDT01QQVJFX05PREVfRklFTEQob3B0aW9ucyk7CisJQ09NUEFSRV9TQ0FM QVJfRklFTEQocm5ndHlwaWQpOworCUNPTVBBUkVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOwor CisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBib29sCiBfZXF1YWxEZWZFbGVtKGNvbnN0IERl ZkVsZW0gKmEsIGNvbnN0IERlZkVsZW0gKmIpCiB7CkBAIC0zODA5LDYgKzM4MjMsOSBAQCBlcXVh bChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCQljYXNlIFRfQ29uc3RyYWludDoKIAkJ CXJldHZhbCA9IF9lcXVhbENvbnN0cmFpbnQoYSwgYik7CiAJCQlicmVhazsKKwkJY2FzZSBUX1Bl cmlvZDoKKwkJCXJldHZhbCA9IF9lcXVhbFBlcmlvZChhLCBiKTsKKwkJCWJyZWFrOwogCQljYXNl IFRfRGVmRWxlbToKIAkJCXJldHZhbCA9IF9lcXVhbERlZkVsZW0oYSwgYik7CiAJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQv bm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggZTI3NjI2NDg4Mi4uZDRjNGU5MGMyOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMKQEAgLTE1NjUsNiArMTU2NSw5IEBAIGV4cHJMb2NhdGlvbihjb25zdCBOb2Rl ICpleHByKQogCQljYXNlIFRfQ29uc3RyYWludDoKIAkJCWxvYyA9ICgoY29uc3QgQ29uc3RyYWlu dCAqKSBleHByKS0+bG9jYXRpb247CiAJCQlicmVhazsKKwkJY2FzZSBUX1BlcmlvZDoKKwkJCWxv YyA9ICgoY29uc3QgUGVyaW9kICopIGV4cHIpLT5sb2NhdGlvbjsKKwkJCWJyZWFrOwogCQljYXNl IFRfRnVuY3Rpb25QYXJhbWV0ZXI6CiAJCQkvKiBqdXN0IHVzZSB0eXBlbmFtZSdzIGxvY2F0aW9u ICovCiAJCQlsb2MgPSBleHByTG9jYXRpb24oKE5vZGUgKikgKChjb25zdCBGdW5jdGlvblBhcmFt ZXRlciAqKSBleHByKS0+YXJnVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9v dXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCAzNmU2MTg2MTFm Li4wYzQzZTBkNTY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTI3MDYsNiArMjcwNiw3IEBAIF9v dXRDcmVhdGVTdG10SW5mbyhTdHJpbmdJbmZvIHN0ciwgY29uc3QgQ3JlYXRlU3RtdCAqbm9kZSkK IHsKIAlXUklURV9OT0RFX0ZJRUxEKHJlbGF0aW9uKTsKIAlXUklURV9OT0RFX0ZJRUxEKHRhYmxl RWx0cyk7CisJV1JJVEVfTk9ERV9GSUVMRChwZXJpb2RzKTsKIAlXUklURV9OT0RFX0ZJRUxEKGlu aFJlbGF0aW9ucyk7CiAJV1JJVEVfTk9ERV9GSUVMRChwYXJ0c3BlYyk7CiAJV1JJVEVfTk9ERV9G SUVMRChwYXJ0Ym91bmQpOwpAQCAtMjczNyw2ICsyNzM4LDI3IEBAIF9vdXRDcmVhdGVGb3JlaWdu VGFibGVTdG10KFN0cmluZ0luZm8gc3RyLCBjb25zdCBDcmVhdGVGb3JlaWduVGFibGVTdG10ICpu b2RlKQogCVdSSVRFX05PREVfRklFTEQob3B0aW9ucyk7CiB9CiAKK3N0YXRpYyB2b2lkCitfb3V0 QWx0ZXJUYWJsZVN0bXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEFsdGVyVGFibGVTdG10ICpub2Rl KQoreworCVdSSVRFX05PREVfVFlQRSgiQUxURVJUQUJMRVNUTVQiKTsKKworCVdSSVRFX05PREVf RklFTEQocmVsYXRpb24pOworCVdSSVRFX05PREVfRklFTEQoY21kcyk7Cit9CisKK3N0YXRpYyB2 b2lkCitfb3V0QWx0ZXJUYWJsZUNtZChTdHJpbmdJbmZvIHN0ciwgY29uc3QgQWx0ZXJUYWJsZUNt ZCAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZUEUoIkFMVEVSVEFCTEVDTUQiKTsKKworCVdSSVRF X0VOVU1fRklFTEQoc3VidHlwZSwgQWx0ZXJUYWJsZVR5cGUpOworCVdSSVRFX1NUUklOR19GSUVM RChuYW1lKTsKKwlXUklURV9JTlRfRklFTEQobnVtKTsKKwlXUklURV9OT0RFX0ZJRUxEKGRlZik7 CisJV1JJVEVfQk9PTF9GSUVMRChtaXNzaW5nX29rKTsKK30KKwogc3RhdGljIHZvaWQKIF9vdXRJ bXBvcnRGb3JlaWduU2NoZW1hU3RtdChTdHJpbmdJbmZvIHN0ciwgY29uc3QgSW1wb3J0Rm9yZWln blNjaGVtYVN0bXQgKm5vZGUpCiB7CkBAIC0yNzYxLDYgKzI3ODMsNyBAQCBfb3V0SW5kZXhTdG10 KFN0cmluZ0luZm8gc3RyLCBjb25zdCBJbmRleFN0bXQgKm5vZGUpCiAJV1JJVEVfU1RSSU5HX0ZJ RUxEKHRhYmxlU3BhY2UpOwogCVdSSVRFX05PREVfRklFTEQoaW5kZXhQYXJhbXMpOwogCVdSSVRF X05PREVfRklFTEQoaW5kZXhJbmNsdWRpbmdQYXJhbXMpOworCVdSSVRFX05PREVfRklFTEQocGVy aW9kKTsKIAlXUklURV9OT0RFX0ZJRUxEKG9wdGlvbnMpOwogCVdSSVRFX05PREVfRklFTEQod2hl cmVDbGF1c2UpOwogCVdSSVRFX05PREVfRklFTEQoZXhjbHVkZU9wTmFtZXMpOwpAQCAtMzc2MCw2 ICszNzgzLDE5IEBAIF9vdXRDb25zdHJhaW50KFN0cmluZ0luZm8gc3RyLCBjb25zdCBDb25zdHJh aW50ICpub2RlKQogCX0KIH0KIAorc3RhdGljIHZvaWQKK19vdXRQZXJpb2QoU3RyaW5nSW5mbyBz dHIsIGNvbnN0IFBlcmlvZCAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZUEUoIlBFUklPRCIpOwor CisJV1JJVEVfU1RSSU5HX0ZJRUxEKHBlcmlvZG5hbWUpOworCVdSSVRFX1NUUklOR19GSUVMRChz dGFydGNvbG5hbWUpOworCVdSSVRFX1NUUklOR19GSUVMRChlbmRjb2xuYW1lKTsKKwlXUklURV9O T0RFX0ZJRUxEKG9wdGlvbnMpOworCVdSSVRFX09JRF9GSUVMRChybmd0eXBpZCk7CisJV1JJVEVf TE9DQVRJT05fRklFTEQobG9jYXRpb24pOworfQorCiBzdGF0aWMgdm9pZAogX291dEZvcmVpZ25L ZXlDYWNoZUluZm8oU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEZvcmVpZ25LZXlDYWNoZUluZm8gKm5v ZGUpCiB7CkBAIC00MzQ0LDYgKzQzODAsMTIgQEAgb3V0Tm9kZShTdHJpbmdJbmZvIHN0ciwgY29u c3Qgdm9pZCAqb2JqKQogCQkJY2FzZSBUX0NyZWF0ZUZvcmVpZ25UYWJsZVN0bXQ6CiAJCQkJX291 dENyZWF0ZUZvcmVpZ25UYWJsZVN0bXQoc3RyLCBvYmopOwogCQkJCWJyZWFrOworCQkJY2FzZSBU X0FsdGVyVGFibGVTdG10OgorCQkJCV9vdXRBbHRlclRhYmxlU3RtdChzdHIsIG9iaik7CisJCQkJ YnJlYWs7CisJCQljYXNlIFRfQWx0ZXJUYWJsZUNtZDoKKwkJCQlfb3V0QWx0ZXJUYWJsZUNtZChz dHIsIG9iaik7CisJCQkJYnJlYWs7CiAJCQljYXNlIFRfSW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQ6 CiAJCQkJX291dEltcG9ydEZvcmVpZ25TY2hlbWFTdG10KHN0ciwgb2JqKTsKIAkJCQlicmVhazsK QEAgLTQ0ODgsNiArNDUzMCw5IEBAIG91dE5vZGUoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IHZvaWQg Km9iaikKIAkJCWNhc2UgVF9Db25zdHJhaW50OgogCQkJCV9vdXRDb25zdHJhaW50KHN0ciwgb2Jq KTsKIAkJCQlicmVhazsKKwkJCWNhc2UgVF9QZXJpb2Q6CisJCQkJX291dFBlcmlvZChzdHIsIG9i aik7CisJCQkJYnJlYWs7CiAJCQljYXNlIFRfRnVuY0NhbGw6CiAJCQkJX291dEZ1bmNDYWxsKHN0 ciwgb2JqKTsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGUzMDY4YTM3NGUuLjcxOWYzNDM4 NmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQpAQCAtNTU4LDcgKzU1OCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAldHlwZSA8a2V5d29yZD4gY29sX25hbWVfa2V5d29yZCByZXNlcnZlZF9rZXl3b3JkCiAl dHlwZSA8a2V5d29yZD4gYmFyZV9sYWJlbF9rZXl3b3JkCiAKLSV0eXBlIDxub2RlPglUYWJsZUNv bnN0cmFpbnQgVGFibGVMaWtlQ2xhdXNlCisldHlwZSA8bm9kZT4JVGFibGVDb25zdHJhaW50IFRh YmxlTGlrZUNsYXVzZSBUYWJsZVBlcmlvZAogJXR5cGUgPGl2YWw+CVRhYmxlTGlrZU9wdGlvbkxp c3QgVGFibGVMaWtlT3B0aW9uCiAldHlwZSA8c3RyPgkJY29sdW1uX2NvbXByZXNzaW9uIG9wdF9j b2x1bW5fY29tcHJlc3Npb24KICV0eXBlIDxsaXN0PglDb2xRdWFsTGlzdApAQCAtNjkxLDcgKzY5 MSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1l LCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMg T1VUX1AgT1VURVJfUAogCU9WRVIgT1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9X TkVSCiAKLQlQQVJBTExFTCBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09S RCBQTEFDSU5HIFBMQU5TIFBPTElDWQorCVBBUkFMTEVMIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElP TiBQQVNTSU5HIFBBU1NXT1JEIFBFUklPRCBQTEFDSU5HIFBMQU5TIFBPTElDWQogCVBPU0lUSU9O IFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJ UFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NFRFVSRSBQUk9DRURVUkVTIFBST0dSQU0g UFVCTElDQVRJT04KIApAQCAtMjQwMSw2ICsyNDAxLDI0IEBAIGFsdGVyX3RhYmxlX2NtZDoKIAkJ CQkJbi0+ZGVmID0gKE5vZGUgKikgJDQ7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KKwkJ CS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBREQgUEVSSU9EIEZPUiA8bmFtZT4gKDxuYW1lPiwgPG5h bWU+KSAqLworCQkJfCBBRERfUCBUYWJsZVBlcmlvZAorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNt ZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfQWRk UGVyaW9kOworCQkJCQluLT5kZWYgPSAkMjsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQor CQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IERST1AgUEVSSU9EIEZPUiA8bmFtZT4gW1JFU1RSSUNU fENBU0NBREVdICovCisJCQl8IERST1AgUEVSSU9EIEZPUiBuYW1lIG9wdF9kcm9wX2JlaGF2aW9y CisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7 CisJCQkJCW4tPnN1YnR5cGUgPSBBVF9Ecm9wUGVyaW9kOworCQkJCQluLT5uYW1lID0gJDQ7CisJ CQkJCW4tPmJlaGF2aW9yID0gJDU7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJ JCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFERCBDT05T VFJBSU5UIC4uLiAqLwogCQkJfCBBRERfUCBUYWJsZUNvbnN0cmFpbnQKIAkJCQl7CkBAIC0zNDYy LDggKzM0ODAsMTAgQEAgVGFibGVFbGVtZW50OgogCQkJY29sdW1uRGVmCQkJCQkJCXsgJCQgPSAk MTsgfQogCQkJfCBUYWJsZUxpa2VDbGF1c2UJCQkJCXsgJCQgPSAkMTsgfQogCQkJfCBUYWJsZUNv bnN0cmFpbnQJCQkJCXsgJCQgPSAkMTsgfQorCQkJfCBUYWJsZVBlcmlvZAkJCQkJCXsgJCQgPSAk MTsgfQogCQk7CiAKKwogVHlwZWRUYWJsZUVsZW1lbnQ6CiAJCQljb2x1bW5PcHRpb25zCQkJCQkJ eyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlQ29uc3RyYWludAkJCQkJeyAkJCA9ICQxOyB9CkBAIC0z Nzc0LDYgKzM3OTQsMTkgQEAgVGFibGVMaWtlT3B0aW9uOgogCQk7CiAKIAorVGFibGVQZXJpb2Q6 CisJCQlQRVJJT0QgRk9SIG5hbWUgJygnIG5hbWUgJywnIG5hbWUgJyknIG9wdF9kZWZpbml0aW9u CisJCQkJeworCQkJCQlQZXJpb2QgKm4gPSBtYWtlTm9kZShQZXJpb2QpOworCQkJCQluLT5wZXJp b2RuYW1lID0gJDM7CisJCQkJCW4tPnN0YXJ0Y29sbmFtZSA9ICQ1OworCQkJCQluLT5lbmRjb2xu YW1lID0gJDc7CisJCQkJCW4tPm9wdGlvbnMgPSAkOTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCiAvKiBDb25zdHJhaW50RWxlbSBz cGVjaWZpZXMgY29uc3RyYWludCBzeW50YXggd2hpY2ggaXMgbm90IGVtYmVkZGVkIGludG8KICAq CWEgY29sdW1uIGRlZmluaXRpb24uIENvbENvbnN0cmFpbnRFbGVtIHNwZWNpZmllcyB0aGUgZW1i ZWRkZWQgZm9ybS4KICAqIC0gdGhvbWFzIDE5OTctMTItMDMKQEAgLTY1NTMsNiArNjU4NiwxNCBA QCBDb21tZW50U3RtdDoKIAkJCQkJbi0+Y29tbWVudCA9ICQ5OwogCQkJCQkkJCA9IChOb2RlICop IG47CiAJCQkJfQorCQkJfCBDT01NRU5UIE9OIFBFUklPRCBhbnlfbmFtZSBJUyBjb21tZW50X3Rl eHQKKwkJCQl7CisJCQkJCUNvbW1lbnRTdG10ICpuID0gbWFrZU5vZGUoQ29tbWVudFN0bXQpOwor CQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1BFUklPRDsKKwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUg KikgJDQ7CisJCQkJCW4tPmNvbW1lbnQgPSAkNjsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJ CX0KIAkJCXwgQ09NTUVOVCBPTiBMQVJHRV9QIE9CSkVDVF9QIE51bWVyaWNPbmx5IElTIGNvbW1l bnRfdGV4dAogCQkJCXsKIAkJCQkJQ29tbWVudFN0bXQgKm4gPSBtYWtlTm9kZShDb21tZW50U3Rt dCk7CkBAIC0xNTk1OSw2ICsxNjAwMCw3IEBAIHJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IE9OTFkK IAkJCXwgT1IKIAkJCXwgT1JERVIKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUFJJ TUFSWQogCQkJfCBSRUZFUkVOQ0VTCkBAIC0xNjI1Myw2ICsxNjI5NSw3IEBAIGJhcmVfbGFiZWxf a2V5d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKKwkJ CXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCAxZDNlZTUzMjQ0Li5iOGI3M2IxNGNmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTgwLDYgKzgwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QK IAlib29sCQlpc2ZvcmVpZ247CQkvKiB0cnVlIGlmIENSRUFURS9BTFRFUiBGT1JFSUdOIFRBQkxF ICovCiAJYm9vbAkJaXNhbHRlcjsJCS8qIHRydWUgaWYgYWx0ZXJpbmcgZXhpc3RpbmcgdGFibGUg Ki8KIAlMaXN0CSAgICpjb2x1bW5zOwkJLyogQ29sdW1uRGVmIGl0ZW1zICovCisJTGlzdAkgICAq cGVyaW9kczsJCS8qIFBlcmlvZCBpdGVtcyAqLwogCUxpc3QJICAgKmNrY29uc3RyYWludHM7CS8q IENIRUNLIGNvbnN0cmFpbnRzICovCiAJTGlzdAkgICAqZmtjb25zdHJhaW50czsJLyogRk9SRUlH TiBLRVkgY29uc3RyYWludHMgKi8KIAlMaXN0CSAgICppeGNvbnN0cmFpbnRzOwkvKiBpbmRleC1j cmVhdGluZyBjb25zdHJhaW50cyAqLwpAQCAtMTEyLDYgKzExMyw4IEBAIHR5cGVkZWYgc3RydWN0 CiAKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oQ3JlYXRlU3RtdENvbnRl eHQgKmN4dCwKIAkJCQkJCQkJCSAgQ29sdW1uRGVmICpjb2x1bW4pOworc3RhdGljIHZvaWQgdHJh bnNmb3JtVGFibGVQZXJpb2QoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKKwkJCQkJCQkJIFBlcmlv ZCAqcGVyaW9kKTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybVRhYmxlQ29uc3RyYWludChDcmVhdGVT dG10Q29udGV4dCAqY3h0LAogCQkJCQkJCQkJIENvbnN0cmFpbnQgKmNvbnN0cmFpbnQpOwogc3Rh dGljIHZvaWQgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs CkBAIC0yMzEsNiArMjM0LDcgQEAgdHJhbnNmb3JtQ3JlYXRlU3RtdChDcmVhdGVTdG10ICpzdG10 LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykKIAljeHQuaW5oUmVsYXRpb25zID0gc3RtdC0+aW5o UmVsYXRpb25zOwogCWN4dC5pc2FsdGVyID0gZmFsc2U7CiAJY3h0LmNvbHVtbnMgPSBOSUw7CisJ Y3h0LnBlcmlvZHMgPSBOSUw7CiAJY3h0LmNrY29uc3RyYWludHMgPSBOSUw7CiAJY3h0LmZrY29u c3RyYWludHMgPSBOSUw7CiAJY3h0Lml4Y29uc3RyYWludHMgPSBOSUw7CkBAIC0yNzAsNiArMjc0 LDEwIEBAIHRyYW5zZm9ybUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAq cXVlcnlTdHJpbmcpCiAJCQkJdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbigmY3h0LCAoQ29sdW1u RGVmICopIGVsZW1lbnQpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIFRfUGVyaW9kOgorCQkJCXRy YW5zZm9ybVRhYmxlUGVyaW9kKCZjeHQsIChQZXJpb2QgKikgZWxlbWVudCk7CisJCQkJYnJlYWs7 CisKIAkJCWNhc2UgVF9Db25zdHJhaW50OgogCQkJCXRyYW5zZm9ybVRhYmxlQ29uc3RyYWludCgm Y3h0LCAoQ29uc3RyYWludCAqKSBlbGVtZW50KTsKIAkJCQlicmVhazsKQEAgLTMzNyw2ICszNDUs NyBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0ZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1 ZXJ5U3RyaW5nKQogCSAqIE91dHB1dCByZXN1bHRzLgogCSAqLwogCXN0bXQtPnRhYmxlRWx0cyA9 IGN4dC5jb2x1bW5zOworCXN0bXQtPnBlcmlvZHMgPSBjeHQucGVyaW9kczsKIAlzdG10LT5jb25z dHJhaW50cyA9IGN4dC5ja2NvbnN0cmFpbnRzOwogCiAJcmVzdWx0ID0gbGFwcGVuZChjeHQuYmxp c3QsIHN0bXQpOwpAQCAtODU3LDYgKzg2NiwxMzYgQEAgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlv bihDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbikKIAl9CiB9CiAKK3Zv aWQKK3RyYW5zZm9ybVBlcmlvZE9wdGlvbnMoUGVyaW9kICpwZXJpb2QpCit7CisJTGlzdENlbGwg ICAqb3B0aW9uOworCURlZkVsZW0JICAgKmRjb25zdHJhaW50bmFtZSA9IE5VTEw7CisJRGVmRWxl bQkgICAqZHJhbmdldHlwZW5hbWUgPSBOVUxMOworCisJZm9yZWFjaChvcHRpb24sIHBlcmlvZC0+ b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAgKmRlZmVsID0gKERlZkVsZW0gKikgbGZpcnN0KG9w dGlvbik7CisKKwkJaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImNoZWNrX2NvbnN0cmFpbnRf bmFtZSIpID09IDApCisJCXsKKwkJCWlmIChkY29uc3RyYWludG5hbWUpCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJt c2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCWRjb25zdHJhaW50 bmFtZSA9IGRlZmVsOworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInJh bmdldHlwZSIpID09IDApCisJCXsKKwkJCWlmIChkcmFuZ2V0eXBlbmFtZSkKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVy cm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSkpOworCQkJZHJhbmdldHlw ZW5hbWUgPSBkZWZlbDsKKwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coIm9wdGlvbiBcIiVzXCIg bm90IHJlY29nbml6ZWQiLCBkZWZlbC0+ZGVmbmFtZSkpKTsKKwl9CisKKwlpZiAoZGNvbnN0cmFp bnRuYW1lICE9IE5VTEwpCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBkZWZHZXRTdHJpbmco ZGNvbnN0cmFpbnRuYW1lKTsKKwllbHNlCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBOVUxM OworCisJaWYgKGRyYW5nZXR5cGVuYW1lICE9IE5VTEwpCisJCXBlcmlvZC0+cmFuZ2V0eXBlbmFt ZSA9IGRlZkdldFN0cmluZyhkcmFuZ2V0eXBlbmFtZSk7CisJZWxzZQorCQlwZXJpb2QtPnJhbmdl dHlwZW5hbWUgPSBOVUxMOworfQorCisvKgorICogdHJhbnNmb3JtVGFibGVQZXJpb2QKKyAqCQl0 cmFuc2Zvcm0gYSBQZXJpb2Qgbm9kZSB3aXRoaW4gQ1JFQVRFIFRBQkxFIG9yIEFMVEVSIFRBQkxF CisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1UYWJsZVBlcmlvZChDcmVhdGVTdG10Q29udGV4 dCAqY3h0LCBQZXJpb2QgKnBlcmlvZCkKK3sKKwlPaWQJCQljb2x0eXBpZDsKKwlDb2x1bW5EZWYg ICpjb2w7CisJTGlzdENlbGwgICAqY29sdW1uczsKKworCWlmIChzdHJjbXAocGVyaW9kLT5wZXJp b2RuYW1lLCAic3lzdGVtX3RpbWUiKSA9PSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJQRVJJ T0QgRk9SIFNZU1RFTV9USU1FIGlzIG5vdCBzdXBwb3J0ZWQiKSwKKwkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihjeHQtPnBzdGF0ZSwKKwkJCQkJCQkJCQlwZXJpb2QtPmxvY2F0aW9uKSkpOworCisJ LyoKKwkgKiBEZXRlcm1pbmUgdGhlIGNvbHVtbiBpbmZvIGFuZCByYW5nZSB0eXBlIHNvIHRoYXQg dHJhbnNmb3JtSW5kZXhDb25zdHJhaW50cworCSAqIGtub3dzIGhvdyB0byBjcmVhdGUgUFJJTUFS WSBLRVkvVU5JUVVFIGNvbnN0cmFpbnRzIHVzaW5nIHRoaXMgUEVSSU9ELgorCSAqLworCXRyYW5z Zm9ybVBlcmlvZE9wdGlvbnMocGVyaW9kKTsKKworCS8qCisJICogRmluZCBhIHN1aXRhYmxlIHJh bmdlIHR5cGUgZm9yIG9wZXJhdGlvbnMgaW52b2x2aW5nIHRoaXMgcGVyaW9kLgorCSAqIFVzZSB0 aGUgcmFuZ2V0eXBlIG9wdGlvbiBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHRyeSB0byBmaW5kIGEK KwkgKiBub24tYW1iaWd1b3VzIGV4aXN0aW5nIHR5cGUuCisJICovCisJY29sdHlwaWQgPSBJbnZh bGlkT2lkOworCisJLyogRmlyc3QgZmluZCBvdXQgdGhlIHR5cGUgb2YgdGhlIHBlcmlvZCdzIGNv bHVtbnMgKi8KKwlwZXJpb2QtPnJuZ3R5cGlkID0gSW52YWxpZE9pZDsKKwlmb3JlYWNoIChjb2x1 bW5zLCBjeHQtPmNvbHVtbnMpCisJeworCQljb2wgPSAoQ29sdW1uRGVmICopIGxmaXJzdChjb2x1 bW5zKTsKKwkJaWYgKHN0cmNtcChjb2wtPmNvbG5hbWUsIHBlcmlvZC0+c3RhcnRjb2xuYW1lKSA9 PSAwKQorCQl7CisJCQljb2x0eXBpZCA9IHR5cGVuYW1lVHlwZUlkKGN4dC0+cHN0YXRlLCBjb2wt PnR5cGVOYW1lKTsKKwkJCWJyZWFrOworCQl9CisJfQorCWlmIChjb2x0eXBpZCA9PSBJbnZhbGlk T2lkKQorCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9u IFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgY3h0 LT5yZWxhdGlvbi0+cmVsbmFtZSkpKTsKKworCS8qIE5vdyBtYWtlIHN1cmUgaXQgbWF0Y2hlcyBy YW5nZXR5cGVuYW1lIG9yIHdlIGNhbiBmaW5kIGEgbWF0Y2hpbmcgcmFuZ2UgKi8KKwlpZiAocGVy aW9kLT5yYW5nZXR5cGVuYW1lICE9IE5VTEwpCisJeworCQkvKiBNYWtlIHN1cmUgaXQgZXhpc3Rz ICovCisJCXBlcmlvZC0+cm5ndHlwaWQgPSBUeXBlbmFtZUdldFR5cGlkRXh0ZW5kZWQocGVyaW9k LT5yYW5nZXR5cGVuYW1lLCBmYWxzZSk7CisJCWlmIChwZXJpb2QtPnJuZ3R5cGlkID09IEludmFs aWRPaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5F RF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJSYW5nZSB0eXBlICVzIG5vdCBmb3VuZCIsIHBlcmlv ZC0+cmFuZ2V0eXBlbmFtZSkpKTsKKworCQkvKiBNYWtlIHN1cmUgaXQgaXMgYSByYW5nZSB0eXBl ICovCisJCWlmICghdHlwZV9pc19yYW5nZShwZXJpb2QtPnJuZ3R5cGlkKSkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkg ZXJybXNnKCJUeXBlICVzIGlzIG5vdCBhIHJhbmdlIHR5cGUiLCBwZXJpb2QtPnJhbmdldHlwZW5h bWUpKSk7CisKKwkJLyogTWFrZSBzdXJlIGl0IG1hdGNoZXMgdGhlIGNvbHVtbiB0eXBlICovCisJ CWlmIChnZXRfcmFuZ2Vfc3VidHlwZShwZXJpb2QtPnJuZ3R5cGlkKSAhPSBjb2x0eXBpZCkKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gp LAorCQkJCQkgZXJybXNnKCJSYW5nZSB0eXBlICVzIGRvZXMgbm90IG1hdGNoIGNvbHVtbiB0eXBl ICVzIiwKKwkJCQkJCSBwZXJpb2QtPnJhbmdldHlwZW5hbWUsCisJCQkJCQkgZm9ybWF0X3R5cGVf YmUoY29sdHlwaWQpKSkpOworCX0KKwllbHNlCisJeworCQlwZXJpb2QtPnJuZ3R5cGlkID0gZ2V0 X3N1YnR5cGVfcmFuZ2UoY29sdHlwaWQpOworCQlpZiAocGVyaW9kLT5ybmd0eXBpZCA9PSBJbnZh bGlkT2lkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklO RURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygibm8gcmFuZ2UgdHlwZSBmb3IgJXMgZm91bmQgZm9y IHBlcmlvZCAlcyIsCisJCQkJCQkJZm9ybWF0X3R5cGVfYmUoY29sdHlwaWQpLAorCQkJCQkJCXBl cmlvZC0+cGVyaW9kbmFtZSksCisJCQkJCSBlcnJoaW50KCJZb3UgY2FuIGRlZmluZSBhIGN1c3Rv bSByYW5nZSB0eXBlIHdpdGggQ1JFQVRFIFRZUEUiKSkpOworCisJfQorCisJY3h0LT5wZXJpb2Rz ID0gbGFwcGVuZChjeHQtPnBlcmlvZHMsIHBlcmlvZCk7Cit9CisKIC8qCiAgKiB0cmFuc2Zvcm1U YWJsZUNvbnN0cmFpbnQKICAqCQl0cmFuc2Zvcm0gYSBDb25zdHJhaW50IG5vZGUgd2l0aGluIENS RUFURSBUQUJMRSBvciBBTFRFUiBUQUJMRQpAQCAtMTU4Nyw2ICsxNzI2LDExIEBAIGdlbmVyYXRl Q2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFwUmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4LAog CWluZGV4LT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7CiAJaW5kZXgtPnJlc2V0X2RlZmF1bHRfdGJs c3BjID0gZmFsc2U7CiAKKwkvKiBDb3B5IHRoZSBwZXJpb2QgKi8KKwlQZXJpb2QgKnAgPSBtYWtl Tm9kZShQZXJpb2QpOworCXAtPm9pZCA9IGlkeHJlYy0+aW5kcGVyaW9kOworCWluZGV4LT5wZXJp b2QgPSBwOworCiAJLyoKIAkgKiBXZSBkb24ndCB0cnkgdG8gcHJlc2VydmUgdGhlIG5hbWUgb2Yg dGhlIHNvdXJjZSBpbmRleDsgaW5zdGVhZCwganVzdAogCSAqIGxldCBEZWZpbmVJbmRleCgpIGNo b29zZSBhIHJlYXNvbmFibGUgbmFtZS4gIChJZiB3ZSB0cmllZCB0byBwcmVzZXJ2ZQpAQCAtMjg2 OSw2ICszMDEzLDEwIEBAIHRyYW5zZm9ybUluZGV4U3RtdChPaWQgcmVsaWQsIEluZGV4U3RtdCAq c3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcpCiAJCX0KIAl9CiAKKwkvKiB0YWtlIGNhcmUg b2YgdGhlIHBlcmlvZCAqLworCWlmIChzdG10LT5wZXJpb2QpCisJCXN0bXQtPnBlcmlvZC0+b2lk ID0gZ2V0X3BlcmlvZF9vaWQocmVsaWQsIHN0bXQtPnBlcmlvZC0+cGVyaW9kbmFtZSwgZmFsc2Up OworCiAJLyoKIAkgKiBDaGVjayB0aGF0IG9ubHkgdGhlIGJhc2UgcmVsIGlzIG1lbnRpb25lZC4g IChUaGlzIHNob3VsZCBiZSBkZWFkIGNvZGUKIAkgKiBub3cgdGhhdCBhZGRfbWlzc2luZ19mcm9t IGlzIGhpc3RvcnkuKQpAQCAtMzMzMCw2ICszNDc4LDcgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0 bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAljeHQuaW5oUmVsYXRpb25zID0g TklMOwogCWN4dC5pc2FsdGVyID0gdHJ1ZTsKIAljeHQuY29sdW1ucyA9IE5JTDsKKwljeHQucGVy aW9kcyA9IE5JTDsKIAljeHQuY2tjb25zdHJhaW50cyA9IE5JTDsKIAljeHQuZmtjb25zdHJhaW50 cyA9IE5JTDsKIAljeHQuaXhjb25zdHJhaW50cyA9IE5JTDsKQEAgLTMzOTMsNiArMzU0MiwxMiBA QCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10 LAogCQkJCQkJIChpbnQpIG5vZGVUYWcoY21kLT5kZWYpKTsKIAkJCQlicmVhazsKIAorCQkJY2Fz ZSBBVF9BZGRQZXJpb2Q6CisJCQkJeworCQkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBj bWQpOworCQkJCQlicmVhazsKKwkJCQl9CisKIAkJCWNhc2UgQVRfQWx0ZXJDb2x1bW5UeXBlOgog CQkJCXsKIAkJCQkJQ29sdW1uRGVmICAqZGVmID0gY2FzdE5vZGUoQ29sdW1uRGVmLCBjbWQtPmRl Zik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IDRlYmFhNTUyYTIuLjczY2Nl YTRhNjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0zMCw2ICszMCw3IEBA CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X29wY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3JhbmdlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWMu aCIKQEAgLTEwMjAsNiArMTAyMSw2OCBAQCBnZXRfYXR0b3B0aW9ucyhPaWQgcmVsaWQsIGludDE2 IGF0dG51bSkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgkJCQktLS0tLS0tLS0tIFBHX1BFUklP RCBDQUNIRSAtLS0tLS0tLS0tCQkJCSAqLworCisvKgorICogZ2V0X3BlcmlvZG5hbWUgLSBnaXZl biBpdHMgT0lELCBsb29rIHVwIGEgcGVyaW9kCisgKgorICogSWYgbWlzc2luZ19vayBpcyBmYWxz ZSwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHBlcmlvZCBpcyBub3QgZm91bmQuCisgKiBJZiB0cnVl LCBqdXN0IHJldHVybiBJbnZhbGlkT2lkLgorICovCitjaGFyICoKK2dldF9wZXJpb2RuYW1lKE9p ZCBwZXJpb2RpZCwgYm9vbCBtaXNzaW5nX29rKQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0g U2VhcmNoU3lzQ2FjaGUxKFBFUklPRE9JRCwKKwkJCQkJCSBPYmplY3RJZEdldERhdHVtKHBlcmlv ZGlkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCXsKKwkJRm9ybV9wZ19wZXJpb2Qg cGVyaW9kX3R1cCA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHRwKTsKKwkJY2hhcgkgICAq cmVzdWx0OworCisJCXJlc3VsdCA9IHBzdHJkdXAoTmFtZVN0cihwZXJpb2RfdHVwLT5wZXJuYW1l KSk7CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCisJaWYg KCFtaXNzaW5nX29rKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVy aW9kICVkIiwKKwkJCSBwZXJpb2RpZCk7CisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBnZXRf cGVyaW9kX29pZCAtIGdldHMgaXRzIHJlbGF0aW9uIGFuZCBuYW1lLCBsb29rIHVwIGEgcGVyaW9k CisgKgorICogSWYgbWlzc2luZ19vayBpcyBmYWxzZSwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIGNh c3QgaXMgbm90IGZvdW5kLiAgSWYKKyAqIHRydWUsIGp1c3QgcmV0dXJuIEludmFsaWRPaWQuCisg Ki8KK09pZAorZ2V0X3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBjaGFyICpwZXJpb2RuYW1l LCBib29sIG1pc3Npbmdfb2spCit7CisJSGVhcFR1cGxlCXRwOworCisJdHAgPSBTZWFyY2hTeXND YWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJCSBPYmplY3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJ CSBQb2ludGVyR2V0RGF0dW0ocGVyaW9kbmFtZSkpOworCisJaWYgKEhlYXBUdXBsZUlzVmFsaWQo dHApKQorCXsKKwkJRm9ybV9wZ19wZXJpb2QgcGVyaW9kX3R1cCA9IChGb3JtX3BnX3BlcmlvZCkg R0VUU1RSVUNUKHRwKTsKKwkJT2lkIHJlc3VsdDsKKworCQlyZXN1bHQgPSBwZXJpb2RfdHVwLT5v aWQ7CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCisJaWYg KCFtaXNzaW5nX29rKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVy aW9kICVzIiwKKwkJCSBwZXJpb2RuYW1lKTsKKwlyZXR1cm4gSW52YWxpZE9pZDsKK30KKwogLyoJ CQkJLS0tLS0tLS0tLSBQR19DQVNUIENBQ0hFIC0tLS0tLS0tLS0JCQkJCSAqLwogCiAvKgpAQCAt MzQ0OCw2ICszNTExLDMwIEBAIGdldF9tdWx0aXJhbmdlX3JhbmdlKE9pZCBtdWx0aXJhbmdlT2lk KQogCQlyZXR1cm4gSW52YWxpZE9pZDsKIH0KIAorT2lkCitnZXRfc3VidHlwZV9yYW5nZShPaWQg c3VidHlwZU9pZCkKK3sKKwlDYXRDTGlzdCAqY2F0bGlzdDsKKwlPaWQJcmVzdWx0ID0gSW52YWxp ZE9pZDsKKworCWNhdGxpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKFJBTkdFU1VCVFlQRSwgT2Jq ZWN0SWRHZXREYXR1bShzdWJ0eXBlT2lkKSk7CisKKwlpZiAoY2F0bGlzdC0+bl9tZW1iZXJzID09 IDEpCisJeworCQlIZWFwVHVwbGUJdHVwbGUgPSAmY2F0bGlzdC0+bWVtYmVyc1swXS0+dHVwbGU7 CisJCUZvcm1fcGdfcmFuZ2Ugcm5ndHVwID0gKEZvcm1fcGdfcmFuZ2UpIEdFVFNUUlVDVCh0dXBs ZSk7CisJCXJlc3VsdCA9IHJuZ3R1cC0+cm5ndHlwaWQ7CisJCVJlbGVhc2VDYXRDYWNoZUxpc3Qo Y2F0bGlzdCk7CisJfQorCWVsc2UgaWYgKGNhdGxpc3QtPm5fbWVtYmVycyA+IDEpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlOQVRFX0RBVEFUWVBFKSwK KwkJCQkgZXJybXNnKCJhbWJpZ3VvdXMgcmFuZ2UgZm9yIHR5cGUgJXMiLAorCQkJCQkJZm9ybWF0 X3R5cGVfYmUoc3VidHlwZU9pZCkpKSk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgkJCQkt LS0tLS0tLS0tIFBHX0lOREVYIENBQ0hFIC0tLS0tLS0tLS0JCQkJICovCiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvc3lzY2FjaGUuYwppbmRleCBkNmNiNzhkZWE4Li4yZWI2ZTk0NGQzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJjYXRh bG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcGFydGl0aW9uZWRfdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9n L3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfcHVibGljYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9u X3JlbC5oIgpAQCAtNTg0LDYgKzU4NSwyNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVz YyBjYWNoZWluZm9bXSA9IHsKIAkJfSwKIAkJMzIKIAl9LAorCXtQZXJpb2RSZWxhdGlvbklkLAkJ LyogUEVSSU9ETkFNRSAqLworCQlQZXJpb2RSZWxpZE5hbWVJbmRleElkLAorCQkyLAorCQl7CisJ CQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCUFudW1fcGdfcGVyaW9kX3Blcm5hbWUsCisJ CQkwLAorCQkJMAorCQl9LAorCQkzMgorCX0sCisJe1BlcmlvZFJlbGF0aW9uSWQsCQkvKiBQRVJJ T0RPSUQgKi8KKwkJUGVyaW9kT2JqZWN0SW5kZXhJZCwKKwkJMSwKKwkJeworCQkJQW51bV9wZ19w ZXJpb2Rfb2lkLAorCQkJMCwKKwkJCTAKKwkJfSwKKwkJMzIKKwl9LAogCXtQcm9jZWR1cmVSZWxh dGlvbklkLAkJLyogUFJPQ05BTUVBUkdTTlNQICovCiAJCVByb2NlZHVyZU5hbWVBcmdzTnNwSW5k ZXhJZCwKIAkJMywKQEAgLTY2MSw3ICs2ODMsMTcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjYWNo ZWRlc2MgY2FjaGVpbmZvW10gPSB7CiAJCX0sCiAJCTQKIAl9LAotCisJe1JhbmdlUmVsYXRpb25J ZCwgICAgICAgICAgIC8qIFJBTkdFU1VCVFlQRSAqLworCQlSYW5nZVN1YlR5cGlkVHlwaWRJbmRl eElkLAorCQkyLAorCQl7CisJCQlBbnVtX3BnX3JhbmdlX3JuZ3N1YnR5cGUsCisJCQlBbnVtX3Bn X3JhbmdlX3JuZ3R5cGlkLAorCQkJMCwKKwkJCTAKKwkJfSwKKwkJNAorCX0sCiAJe1JhbmdlUmVs YXRpb25JZCwJCQkvKiBSQU5HRVRZUEUgKi8KIAkJUmFuZ2VUeXBpZEluZGV4SWQsCiAJCTEsCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmlu L3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggZWUwNmRjNjgyMi4uNjFkNWU3Nzkw MyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpAQCAtMzYxMCw2ICszNjEwLDcg QEAgX3ByaW50VG9jRW50cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBp c0RhdGEpCiAJCQkJIHN0cmNtcCh0ZS0+ZGVzYywgIkRBVEFCQVNFIFBST1BFUlRJRVMiKSA9PSAw IHx8CiAJCQkJIHN0cmNtcCh0ZS0+ZGVzYywgIkRFRkFVTFQiKSA9PSAwIHx8CiAJCQkJIHN0cmNt cCh0ZS0+ZGVzYywgIkZLIENPTlNUUkFJTlQiKSA9PSAwIHx8CisJCQkJIHN0cmNtcCh0ZS0+ZGVz YywgIlBFUklPRCIpID09IDAgfHwKIAkJCQkgc3RyY21wKHRlLT5kZXNjLCAiSU5ERVgiKSA9PSAw IHx8CiAJCQkJIHN0cmNtcCh0ZS0+ZGVzYywgIlJVTEUiKSA9PSAwIHx8CiAJCQkJIHN0cmNtcCh0 ZS0+ZGVzYywgIlRSSUdHRVIiKSA9PSAwIHx8CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBhNDg1ZmIyZDA3Li43 NTYzN2JjNWY5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTYyMzgsNiArNjIzOCw3IEBAIGdldFRhYmxlcyhB cmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAlpbnQJCQlpX2luaXRycmVsYWNsOwogCWlu dAkJCWlfcm9sbmFtZTsKIAlpbnQJCQlpX3JlbGNoZWNrczsKKwlpbnQJCQlpX25wZXJpb2Q7CiAJ aW50CQkJaV9yZWxoYXN0cmlnZ2VyczsKIAlpbnQJCQlpX3JlbGhhc2luZGV4OwogCWludAkJCWlf cmVsaGFzcnVsZXM7CkBAIC02Mjk4LDYgKzYyOTksNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91 dCwgaW50ICpudW1UYWJsZXMpCiAJCWNoYXIJICAgKmlzcGFydGl0aW9uID0gImZhbHNlIjsKIAkJ Y2hhcgkgICAqcGFydGJvdW5kID0gIk5VTEwiOwogCQljaGFyCSAgICpyZWxoYXNvaWRzID0gImMu cmVsaGFzb2lkcyI7CisJCWNoYXIJICAgKm5wZXJpb2QgPSAiTlVMTCI7CiAKIAkJUFFFeHBCdWZm ZXIgYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIAkJUFFFeHBCdWZmZXIgcmFj bF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CkBAIC02MzI1LDYgKzYzMjcsMTAgQEAg Z2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCQlpZiAoZm91dC0+cmVt b3RlVmVyc2lvbiA+PSAxMjAwMDApCiAJCQlyZWxoYXNvaWRzID0gIidmJzo6Ym9vbCI7CiAKKwkJ LyogSW4gUEcxNSB1cHdhcmRzIHdlIGhhdmUgUEVSSU9Ecy4gKi8KKwkJaWYgKGZvdXQtPnJlbW90 ZVZlcnNpb24gPj0gMTUwMDAwKQorCQkJbnBlcmlvZCA9ICIoU0VMRUNUIGNvdW50KCopIEZST00g cGdfcGVyaW9kIFdIRVJFIHBlcnJlbGlkID0gYy5vaWQpIjsKKwogCQkvKgogCQkgKiBMZWZ0IGpv aW4gdG8gcGljayB1cCBkZXBlbmRlbmN5IGluZm8gbGlua2luZyBzZXF1ZW5jZXMgdG8gdGhlaXIK IAkJICogb3duaW5nIGNvbHVtbiwgaWYgYW55IChub3RlIHRoaXMgZGVwZW5kZW5jeSBpcyBBVVRP IGFzIG9mIDguMikKQEAgLTYzNTgsNiArNjM2NCw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0 LCBpbnQgKm51bVRhYmxlcykKIAkJCQkJCSAgInRjLnJlbG1pbm14aWQgQVMgdG1pbm14aWQsICIK IAkJCQkJCSAgImMucmVscGVyc2lzdGVuY2UsIGMucmVsaXNwb3B1bGF0ZWQsICIKIAkJCQkJCSAg ImMucmVscmVwbGlkZW50LCBjLnJlbHBhZ2VzLCBhbS5hbW5hbWUsICIKKwkJCQkJCSAgIiVzIEFT IG5wZXJpb2QsICIKIAkJCQkJCSAgIkNBU0UgV0hFTiBjLnJlbGtpbmQgPSAnZicgVEhFTiAiCiAJ CQkJCQkgICIoU0VMRUNUIGZ0c2VydmVyIEZST00gcGdfY2F0YWxvZy5wZ19mb3JlaWduX3RhYmxl IFdIRVJFIGZ0cmVsaWQgPSBjLm9pZCkgIgogCQkJCQkJICAiRUxTRSAwIEVORCBBUyBmb3JlaWdu c2VydmVyLCAiCkBAIC02NDA0LDYgKzY0MTEsNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwg aW50ICpudW1UYWJsZXMpCiAJCQkJCQkgIGluaXRyYWNsX3N1YnF1ZXJ5LT5kYXRhLAogCQkJCQkJ ICB1c2VybmFtZV9zdWJxdWVyeSwKIAkJCQkJCSAgcmVsaGFzb2lkcywKKwkJCQkJCSAgbnBlcmlv ZCwKIAkJCQkJCSAgUkVMS0lORF9TRVFVRU5DRSwKIAkJCQkJCSAgYXR0YWNsX3N1YnF1ZXJ5LT5k YXRhLAogCQkJCQkJICBhdHRyYWNsX3N1YnF1ZXJ5LT5kYXRhLApAQCAtNjg1Nyw2ICs2ODY1LDcg QEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCWlfcmVsa2luZCA9 IFBRZm51bWJlcihyZXMsICJyZWxraW5kIik7CiAJaV9yb2xuYW1lID0gUFFmbnVtYmVyKHJlcywg InJvbG5hbWUiKTsKIAlpX3JlbGNoZWNrcyA9IFBRZm51bWJlcihyZXMsICJyZWxjaGVja3MiKTsK KwlpX25wZXJpb2QgPSBQUWZudW1iZXIocmVzLCAibnBlcmlvZCIpOwogCWlfcmVsaGFzdHJpZ2dl cnMgPSBQUWZudW1iZXIocmVzLCAicmVsaGFzdHJpZ2dlcnMiKTsKIAlpX3JlbGhhc2luZGV4ID0g UFFmbnVtYmVyKHJlcywgInJlbGhhc2luZGV4Iik7CiAJaV9yZWxoYXNydWxlcyA9IFBRZm51bWJl cihyZXMsICJyZWxoYXNydWxlcyIpOwpAQCAtNjkzNyw2ICs2OTQ2LDcgQEAgZ2V0VGFibGVzKEFy Y2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCQllbHNlCiAJCQl0YmxpbmZvW2ldLnJlbG9m dHlwZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9yZWxvZnR5cGUpKTsKIAkJdGJs aW5mb1tpXS5uY2hlY2sgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbGNoZWNrcykpOwor CQl0YmxpbmZvW2ldLm5wZXJpb2QgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCBpLCBpX25wZXJpb2Qp KTsKIAkJaWYgKFBRZ2V0aXNudWxsKHJlcywgaSwgaV9vd25pbmdfdGFiKSkKIAkJewogCQkJdGJs aW5mb1tpXS5vd25pbmdfdGFiID0gSW52YWxpZE9pZDsKQEAgLTg3MjIsNiArODczMiw4IEBAIGdl dFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFi bGVzKQogCQlQR3Jlc3VsdCAgICpyZXM7CiAJCWludAkJCW50dXBzOwogCQlib29sCQloYXNkZWZh dWx0czsKKwkJaW50CQkJbmR1bXBhYmxlY2hlY2tzOwkvKiBudW1iZXIgb2YgQ0hFQ0sgY29uc3Ry YWludHMgdGhhdCBkbworCQkJCQkJCQkJCSAgIG5vdCBiZWxvbmcgdG8gYSBwZXJpb2QgKi8KIAog CQkvKiBEb24ndCBib3RoZXIgdG8gY29sbGVjdCBpbmZvIGZvciBzZXF1ZW5jZXMgKi8KIAkJaWYg KHRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKQpAQCAtOTAyOCwxMCArOTA0MCwx MiBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50 IG51bVRhYmxlcykKIAkJfQogCiAJCS8qCi0JCSAqIEdldCBpbmZvIGFib3V0IHRhYmxlIENIRUNL IGNvbnN0cmFpbnRzLiAgVGhpcyBpcyBza2lwcGVkIGZvciBhCi0JCSAqIGRhdGEtb25seSBkdW1w LCBhcyBpdCBpcyBvbmx5IG5lZWRlZCBmb3IgdGFibGUgc2NoZW1hcy4KKwkJICogR2V0IGluZm8g YWJvdXQgdGFibGUgQ0hFQ0sgY29uc3RyYWludHMgdGhhdCBkb24ndCBiZWxvbmcgdG8gYSBQRVJJ T0QuCisJCSAqIFRoaXMgaXMgc2tpcHBlZCBmb3IgYSBkYXRhLW9ubHkgZHVtcCwgYXMgaXQgaXMg b25seSBuZWVkZWQgZm9yIHRhYmxlCisJCSAqIHNjaGVtYXMuCiAJCSAqLwotCQlpZiAodGJpbmZv LT5uY2hlY2sgPiAwICYmICFkb3B0LT5kYXRhT25seSkKKwkJbmR1bXBhYmxlY2hlY2tzID0gdGJp bmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7CisJCWlmIChuZHVtcGFibGVjaGVja3MgPiAw ICYmICFkb3B0LT5kYXRhT25seSkKIAkJewogCQkJQ29uc3RyYWludEluZm8gKmNvbnN0cnM7CiAJ CQlpbnQJCQludW1Db25zdHJzOwpAQCAtOTA0MSw3ICs5MDU1LDI1IEBAIGdldFRhYmxlQXR0cnMo QXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJCQkJ dGJpbmZvLT5kb2JqLm5hbWUpOwogCiAJCQlyZXNldFBRRXhwQnVmZmVyKHEpOwotCQkJaWYgKGZv dXQtPnJlbW90ZVZlcnNpb24gPj0gOTAyMDApCisJCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+ PSAxNTAwMDApCisJCQl7CisJCQkJLyoKKwkJCQkgKiBQRVJJT0RzIHdlcmUgYWRkZWQgaW4gdjE1 IGFuZCB3ZSBkb24ndCBkdW1wIENIRUNLCisJCQkJICogY29uc3RyYWludHMgZm9yIHRoZW0uCisJ CQkJICovCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJCQkJCQkJICAiU0VMRUNUIHRhYmxl b2lkLCBvaWQsIGNvbm5hbWUsICIKKwkJCQkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRfY29uc3Ry YWludGRlZihvaWQpIEFTIGNvbnNyYywgIgorCQkJCQkJCQkgICJjb25pc2xvY2FsLCBjb252YWxp ZGF0ZWQgIgorCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCAiCisJCQkJ CQkJCSAgIldIRVJFIGNvbnJlbGlkID0gJyV1Jzo6cGdfY2F0YWxvZy5vaWQgIgorCQkJCQkJCQkg ICIgICBBTkQgY29udHlwZSA9ICdjJyAiCisJCQkJCQkJCSAgIiAgIEFORCBOT1QgRVhJU1RTIChT RUxFQ1QgRlJPTSBwZ19wZXJpb2QgIgorCQkJCQkJCQkgICIgICAgICAgICAgICAgICAgICAgV0hF UkUgKHBlcnJlbGlkLCBwZXJjb25zdHJhaW50KSA9IChjb25yZWxpZCwgcGdfY29uc3RyYWludC5v aWQpKSAiCisJCQkJCQkJCSAgIk9SREVSIEJZIGNvbm5hbWUiLAorCQkJCQkJCQkgIHRiaW5mby0+ ZG9iai5jYXRJZC5vaWQpOworCQkJfQorCQkJZWxzZSBpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+ PSA5MDIwMCkKIAkJCXsKIAkJCQkvKgogCQkJCSAqIGNvbnZhbGlkYXRlZCBpcyBuZXcgaW4gOS4y IChhY3R1YWxseSwgaXQgaXMgdGhlcmUgaW4gOS4xLApAQCAtOTA4MywxMiArOTExNSwxMiBAQCBn ZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRh YmxlcykKIAkJCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxLT5kYXRhLCBQR1JFU19UVVBM RVNfT0spOwogCiAJCQludW1Db25zdHJzID0gUFFudHVwbGVzKHJlcyk7Ci0JCQlpZiAobnVtQ29u c3RycyAhPSB0YmluZm8tPm5jaGVjaykKKwkJCWlmIChudW1Db25zdHJzICE9IG5kdW1wYWJsZWNo ZWNrcykKIAkJCXsKIAkJCQlwZ19sb2dfZXJyb3IobmdldHRleHQoImV4cGVjdGVkICVkIGNoZWNr IGNvbnN0cmFpbnQgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCiAJCQkJCQkJCQkgICJl eHBlY3RlZCAlZCBjaGVjayBjb25zdHJhaW50cyBvbiB0YWJsZSBcIiVzXCIgYnV0IGZvdW5kICVk IiwKLQkJCQkJCQkJCSAgdGJpbmZvLT5uY2hlY2spLAotCQkJCQkJCSB0YmluZm8tPm5jaGVjaywg dGJpbmZvLT5kb2JqLm5hbWUsIG51bUNvbnN0cnMpOworCQkJCQkJCQkJICBuZHVtcGFibGVjaGVj a3MpLAorCQkJCQkJCSBuZHVtcGFibGVjaGVja3MsIHRiaW5mby0+ZG9iai5uYW1lLCBudW1Db25z dHJzKTsKIAkJCQlwZ19sb2dfZXJyb3IoIihUaGUgc3lzdGVtIGNhdGFsb2dzIG1pZ2h0IGJlIGNv cnJ1cHRlZC4pIik7CiAJCQkJZXhpdF9uaWNlbHkoMSk7CiAJCQl9CkBAIC05MTQ2LDYgKzkxNzgs NzYgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGlu dCBudW1UYWJsZXMpCiAJCQl9CiAJCQlQUWNsZWFyKHJlcyk7CiAJCX0KKworCQkvKgorCQkgKiBH ZXQgaW5mbyBhYm91dCBQRVJJT0QgZGVmaW5pdGlvbnMKKwkJICovCisJCWlmICh0YmluZm8tPm5w ZXJpb2QgPiAwKQorCQl7CisJCQlQZXJpb2RJbmZvICpwZXJpb2RzOworCQkJaW50CQkJbnVtUGVy aW9kczsKKwkJCWludAkJCWo7CisKKwkJCS8qIFdlIHNob3VsZG4ndCBoYXZlIGFueSBwZXJpb2Rz IGJlZm9yZSB2MTUgKi8KKwkJCUFzc2VydChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCk7 CisKKwkJCXBnX2xvZ19pbmZvKCJmaW5kaW5nIHBlcmlvZHMgZm9yIHRhYmxlIFwiJXMuJXNcIlxu IiwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJCXRiaW5m by0+ZG9iai5uYW1lKTsKKworCQkJcmVzZXRQUUV4cEJ1ZmZlcihxKTsKKwkJCWFwcGVuZFBRRXhw QnVmZmVyKHEsCisJCQkJIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wZXJuYW1lLCAiCisJ CQkJIiAgICAgICBzYS5hdHRuYW1lIEFTIHBlcnN0YXJ0LCBlYS5hdHRuYW1lIEFTIHBlcmVuZCwg IgorCQkJCSIgICAgICAgbm8ubnNwbmFtZSBBUyBvcGNuYW1lc3BhY2UsIG8ub3BjbmFtZSwgIgor CQkJCSIgICAgICAgYy5jb25uYW1lIEFTIGNvbm5hbWUgIgorCQkJCSJGUk9NIHBnX2NhdGFsb2cu cGdfcGVyaW9kIEFTIHAgIgorCQkJCSJKT0lOIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIEFTIHNh IE9OIChzYS5hdHRyZWxpZCwgc2EuYXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcnN0YXJ0KSAi CisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlk LCBlYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyZW5kKSAiCisJCQkJIkpPSU4gcGdfY2F0 YWxvZy5wZ19vcGNsYXNzIEFTIG8gT04gby5vaWQgPSBwLnBlcm9wY2xhc3MgIgorCQkJCSJKT0lO IHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIEFTIG5vIE9OIG5vLm9pZCA9IG8ub3BjbmFtZXNwYWNl ICIKKwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgQVMgYyBPTiBjLm9pZCA9IHAu cGVyY29uc3RyYWludCAiCisJCQkJIldIRVJFIHAucGVycmVsaWQgPSAnJXUnOjpwZ19jYXRhbG9n Lm9pZCAiCisJCQkJIk9SREVSIEJZIHAucGVybmFtZSIsCisJCQkJdGJpbmZvLT5kb2JqLmNhdElk Lm9pZCk7CisKKwkJCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxLT5kYXRhLCBQR1JFU19U VVBMRVNfT0spOworCisJCQkvKgorCQkJICogSWYgd2UgZGlkbid0IGdldCB0aGUgbnVtYmVyIG9m IHJvd3Mgd2UgdGhvdWdodCB3ZSB3ZXJlIGdvaW5nIHRvLAorCQkJICogdGhlbiB0aG9zZSBKT0lO cyBkaWRuJ3Qgd29yay4KKwkJCSAqLworCQkJbnVtUGVyaW9kcyA9IFBRbnR1cGxlcyhyZXMpOwor CQkJaWYgKG51bVBlcmlvZHMgIT0gdGJpbmZvLT5ucGVyaW9kKQorCQkJeworCQkJCXBnX2xvZ19p bmZvKG5nZXR0ZXh0KCJleHBlY3RlZCAlZCBwZXJpb2Qgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3Vu ZCAlZFxuIiwKKwkJCQkJCQkJCSAiZXhwZWN0ZWQgJWQgcGVyaW9kcyBvbiB0YWJsZSBcIiVzXCIg YnV0IGZvdW5kICVkXG4iLAorCQkJCQkJCQkJIHRiaW5mby0+bnBlcmlvZCksCisJCQkJCQkJdGJp bmZvLT5ucGVyaW9kLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtUGVyaW9kcyk7CisJCQkJcGdfbG9n X2luZm8oIihUaGUgc3lzdGVtIGNhdGFsb2dzIG1pZ2h0IGJlIGNvcnJ1cHRlZC4pXG4iKTsKKwkJ CQlleGl0X25pY2VseSgxKTsKKwkJCX0KKworCQkJcGVyaW9kcyA9IChQZXJpb2RJbmZvICopIHBn X21hbGxvYyhudW1QZXJpb2RzICogc2l6ZW9mKFBlcmlvZEluZm8pKTsKKwkJCXRiaW5mby0+cGVy aW9kcyA9IHBlcmlvZHM7CisKKwkJCWZvciAoaiA9IDA7IGogPCBudW1QZXJpb2RzOyBqKyspCisJ CQl7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm9ialR5cGUgPSBET19QRVJJT0Q7CisJCQkJcGVyaW9k c1tqXS5kb2JqLmNhdElkLnRhYmxlb2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBqLCAwKSk7 CisJCQkJcGVyaW9kc1tqXS5kb2JqLmNhdElkLm9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywg aiwgMSkpOworCQkJCUFzc2lnbkR1bXBJZCgmcGVyaW9kc1tqXS5kb2JqKTsKKwkJCQlwZXJpb2Rz W2pdLmRvYmoubmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgMikpOworCQkJCXBl cmlvZHNbal0uZG9iai5uYW1lc3BhY2UgPSB0YmluZm8tPmRvYmoubmFtZXNwYWNlOworCQkJCXBl cmlvZHNbal0ucGVydGFibGUgPSB0YmluZm87CisJCQkJcGVyaW9kc1tqXS5wZXJzdGFydCA9IHBn X3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgMykpOworCQkJCXBlcmlvZHNbal0ucGVyZW5kID0g cGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA0KSk7CisJCQkJcGVyaW9kc1tqXS5vcGNuYW1l c3BhY2UgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIDUpKTsKKwkJCQlwZXJpb2RzW2pd Lm9wY25hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIDYpKTsKKwkJCQlwZXJpb2Rz W2pdLmNvbm5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIDcpKTsKKwkJCX0KKwkJ CVBRY2xlYXIocmVzKTsKKwkJfQogCX0KIAogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxKTsKQEAgLTEw NDA3LDYgKzEwNTA5LDggQEAgZHVtcER1bXBhYmxlT2JqZWN0KEFyY2hpdmUgKmZvdXQsIGNvbnN0 IER1bXBhYmxlT2JqZWN0ICpkb2JqKQogCQljYXNlIERPX0ZLX0NPTlNUUkFJTlQ6CiAJCQlkdW1w Q29uc3RyYWludChmb3V0LCAoY29uc3QgQ29uc3RyYWludEluZm8gKikgZG9iaik7CiAJCQlicmVh azsKKwkJY2FzZSBET19QRVJJT0Q6CisJCQlicmVhazsKIAkJY2FzZSBET19QUk9DTEFORzoKIAkJ CWR1bXBQcm9jTGFuZyhmb3V0LCAoY29uc3QgUHJvY0xhbmdJbmZvICopIGRvYmopOwogCQkJYnJl YWs7CkBAIC0xNjEyOSw2ICsxNjIzMywzNCBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91 dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJfQogCQkJfQogCisJCQkvKgorCQkJICog QWRkIG5vbi1pbmhlcml0ZWQgUEVSSU9EIGRlZmluaXRpb25zLCBpZiBhbnkuCisJCQkgKi8KKwkJ CWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5wZXJpb2Q7IGorKykKKwkJCXsKKwkJCQlQZXJpb2RJ bmZvICpwZXJpb2QgPSAmKHRiaW5mby0+cGVyaW9kc1tqXSk7CisKKwkJCQljaGFyCSAgICpuYW1l ID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+ZG9iai5uYW1lKSk7CisJCQkJY2hhcgkgICAqc3Rh cnQgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5wZXJzdGFydCkpOworCQkJCWNoYXIJICAgKmVu ZCA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPnBlcmVuZCkpOworCQkJCWNoYXIJICAgKm9wY25h bWVzcGFjZSA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPm9wY25hbWVzcGFjZSkpOworCQkJCWNo YXIJICAgKm9wY25hbWUgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5vcGNuYW1lKSk7CisJCQkJ Y2hhcgkgICAqY29ubmFtZSA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPmNvbm5hbWUpKTsKKwor CQkJCWlmIChhY3R1YWxfYXR0cyA9PSAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAi IChcbiAgICAiKTsKKwkJCQllbHNlCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIsXG4g ICAgIik7CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiUEVSSU9EIEZPUiAlcyAoJXMsICVz KSAiCisJCQkJCQkiV0lUSCAob3BlcmF0b3JfY2xhc3MgPSAlcy4lcywgY29uc3RyYWludF9uYW1l ID0gJXMpIiwKKwkJCQkJCQkJICBuYW1lLCBzdGFydCwgZW5kLAorCQkJCQkJCQkgIG9wY25hbWVz cGFjZSwgb3BjbmFtZSwKKwkJCQkJCQkJICBjb25uYW1lKTsKKworCQkJCWFjdHVhbF9hdHRzKys7 CisJCQl9CisKIAkJCS8qCiAJCQkgKiBBZGQgbm9uLWluaGVyaXRlZCBDSEVDSyBjb25zdHJhaW50 cywgaWYgYW55LgogCQkJICoKQEAgLTE2MTM3LDcgKzE2MjY5LDcgQEAgZHVtcFRhYmxlU2NoZW1h KEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJICogUEFSVElUSU9O IHRoYXQgd2UnbGwgZW1pdCBsYXRlciBleHBlY3RzIHRoZSBjb25zdHJhaW50IHRvIGJlCiAJCQkg KiB0aGVyZS4gIChObyBuZWVkIHRvIGZpeCBjb25pc2xvY2FsOiBBVFRBQ0ggUEFSVElUSU9OIGRv ZXMgdGhhdCkKIAkJCSAqLwotCQkJZm9yIChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrOyBqKysp CisJCQlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7IGor KykKIAkJCXsKIAkJCQlDb25zdHJhaW50SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNoZWNrZXhw cnNbal0pOwogCkBAIC0xNjMzNyw3ICsxNjQ2OSw3IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZl ICpmb3V0LCBjb25zdCBUYWJsZUluZm8gKnRiaW5mbykKIAkJCSAqIEZvciBwYXJ0aXRpb25zLCB0 aGV5IHdlcmUgYWxyZWFkeSBkdW1wZWQsIGFuZCBjb25pc2xvY2FsCiAJCQkgKiBkb2Vzbid0IG5l ZWQgZml4aW5nLgogCQkJICovCi0JCQlmb3IgKGsgPSAwOyBrIDwgdGJpbmZvLT5uY2hlY2s7IGsr KykKKwkJCWZvciAoayA9IDA7IGsgPCB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsg aysrKQogCQkJewogCQkJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIgPSAmKHRiaW5mby0+Y2hlY2tl eHByc1trXSk7CiAKQEAgLTE2NjE5LDcgKzE2NzUxLDcgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hp dmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQlkdW1wVGFibGVTZWNMYWJlbChm b3V0LCB0YmluZm8sIHJlbHR5cGVuYW1lKTsKIAogCS8qIER1bXAgY29tbWVudHMgb24gaW5saW5l ZCB0YWJsZSBjb25zdHJhaW50cyAqLwotCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjazsg aisrKQorCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsg aisrKQogCXsKIAkJQ29uc3RyYWludEluZm8gKmNvbnN0ciA9ICYodGJpbmZvLT5jaGVja2V4cHJz W2pdKTsKIApAQCAtMTg3MTQsNiArMTg4NDYsNyBAQCBhZGRCb3VuZGFyeURlcGVuZGVuY2llcyhE dW1wYWJsZU9iamVjdCAqKmRvYmpzLCBpbnQgbnVtT2JqcywKIAkJCWNhc2UgRE9fVFJJR0dFUjoK IAkJCWNhc2UgRE9fRVZFTlRfVFJJR0dFUjoKIAkJCWNhc2UgRE9fREVGQVVMVF9BQ0w6CisJCQlj YXNlIERPX1BFUklPRDoKIAkJCWNhc2UgRE9fUE9MSUNZOgogCQkJY2FzZSBET19QVUJMSUNBVElP TjoKIAkJCWNhc2UgRE9fUFVCTElDQVRJT05fUkVMOgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggMjlhZjg0NWVj ZS4uM2VhOTBlMGI4ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC01OSw2ICs1OSw3IEBAIHR5cGVkZWYgZW51 bQogCURPX1RSSUdHRVIsCiAJRE9fQ09OU1RSQUlOVCwKIAlET19GS19DT05TVFJBSU5ULAkJCS8q IHNlZSBub3RlIGZvciBDb25zdHJhaW50SW5mbyAqLworCURPX1BFUklPRCwKIAlET19QUk9DTEFO RywKIAlET19DQVNULAogCURPX1RBQkxFX0RBVEEsCkBAIC0yODIsMTIgKzI4MywxNCBAQCB0eXBl ZGVmIHN0cnVjdCBfdGFibGVJbmZvCiAJYm9vbAkJcm93c2VjOwkJCS8qIGlzIHJvdyBzZWN1cml0 eSBlbmFibGVkPyAqLwogCWJvb2wJCWZvcmNlcm93c2VjOwkvKiBpcyByb3cgc2VjdXJpdHkgZm9y Y2VkPyAqLwogCWJvb2wJCWhhc29pZHM7CQkvKiBkb2VzIGl0IGhhdmUgT0lEcz8gKi8KKwlib29s CQloYXNwZXJpb2RzOwkJLyogZG9lcyBpdCBoYXZlIGFueSBwZXJpb2RzPyAqLwogCXVpbnQzMgkJ ZnJvemVueGlkOwkJLyogdGFibGUncyByZWxmcm96ZW54aWQgKi8KIAl1aW50MzIJCW1pbm14aWQ7 CQkvKiB0YWJsZSdzIHJlbG1pbm14aWQgKi8KIAlPaWQJCQl0b2FzdF9vaWQ7CQkvKiB0b2FzdCB0 YWJsZSdzIE9JRCwgb3IgMCBpZiBub25lICovCiAJdWludDMyCQl0b2FzdF9mcm96ZW54aWQ7CS8q IHRvYXN0IHRhYmxlJ3MgcmVsZnJvemVueGlkLCBpZiBhbnkgKi8KIAl1aW50MzIJCXRvYXN0X21p bm14aWQ7CS8qIHRvYXN0IHRhYmxlJ3MgcmVsbWlubXhpZCAqLwogCWludAkJCW5jaGVjazsJCQkv KiAjIG9mIENIRUNLIGV4cHJlc3Npb25zICovCisJaW50CQkJbnBlcmlvZDsJCS8qICMgb2YgUEVS SU9EIGRlZmluaXRpb25zICovCiAJY2hhcgkgICAqcmVsb2Z0eXBlOwkJLyogdW5kZXJseWluZyB0 eXBlIGZvciB0eXBlZCB0YWJsZSAqLwogCU9pZAkJCWZvcmVpZ25fc2VydmVyOyAvKiBmb3JlaWdu IHNlcnZlciBvaWQsIGlmIGFwcGxpY2FibGUgKi8KIAkvKiB0aGVzZSB0d28gYXJlIHNldCBvbmx5 IGlmIHRhYmxlIGlzIGEgc2VxdWVuY2Ugb3duZWQgYnkgYSBjb2x1bW46ICovCkBAIC0zMjcsNiAr MzMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX3RhYmxlSW5mbwogCWJvb2wJICAgKmluaE5vdE51bGw7 CQkvKiB0cnVlIGlmIE5PVCBOVUxMIGlzIGluaGVyaXRlZCAqLwogCXN0cnVjdCBfYXR0ckRlZklu Zm8gKiphdHRyZGVmczsgLyogREVGQVVMVCBleHByZXNzaW9ucyAqLwogCXN0cnVjdCBfY29uc3Ry YWludEluZm8gKmNoZWNrZXhwcnM7IC8qIENIRUNLIGNvbnN0cmFpbnRzICovCisJc3RydWN0IF9w ZXJpb2RJbmZvICpwZXJpb2RzOwkvKiBQRVJJT0QgZGVmaW5pdGlvbnMgKi8KIAljaGFyCSAgICpw YXJ0a2V5ZGVmOwkJLyogcGFydGl0aW9uIGtleSBkZWZpbml0aW9uICovCiAJY2hhcgkgICAqcGFy dGJvdW5kOwkJLyogcGFydGl0aW9uIGJvdW5kIGRlZmluaXRpb24gKi8KIAlib29sCQluZWVkc19v dmVycmlkZTsgLyogaGFzIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgKi8KQEAgLTQ2Nyw2 ICs0NzEsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2NvbnN0cmFpbnRJbmZvCiAJYm9vbAkJc2VwYXJh dGU7CQkvKiB0cnVlIGlmIG11c3QgZHVtcCBhcyBzZXBhcmF0ZSBpdGVtICovCiB9IENvbnN0cmFp bnRJbmZvOwogCit0eXBlZGVmIHN0cnVjdCBfcGVyaW9kSW5mbworeworCUR1bXBhYmxlT2JqZWN0 IGRvYmo7CisJVGFibGVJbmZvICAqcGVydGFibGU7CisJY2hhcgkgICAqcGVyc3RhcnQ7CQkvKiB0 aGUgbmFtZSBvZiB0aGUgc3RhcnQgY29sdW1uICovCisJY2hhcgkgICAqcGVyZW5kOwkJCS8qIHRo ZSBuYW1lIG9mIHRoZSBlbmQgY29sdW1uICovCisJY2hhcgkgICAqb3BjbmFtZXNwYWNlOwkvKiB0 aGUgbmFtZSBvZiB0aGUgb3BlcmF0b3IgY2xhc3Mgc2NoZW1hICovCisJY2hhcgkgICAqb3BjbmFt ZTsJCS8qIHRoZSBuYW1lIG9mIHRoZSBvcGVyYXRvciBjbGFzcyAqLworCWNoYXIJICAgKmNvbm5h bWU7CQkvKiB0aGUgbmFtZSBvZiB0aGUgQ0hFQ0sgY29uc3RyYWludCAqLworfSBQZXJpb2RJbmZv OworCiB0eXBlZGVmIHN0cnVjdCBfcHJvY0xhbmdJbmZvCiB7CiAJRHVtcGFibGVPYmplY3QgZG9i ajsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyBiL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRleCA0NjQ2MWZiNmExLi43ZGNmNWVmMDQ4IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXBfc29ydC5jCkBAIC03NSw2ICs3NSw3IEBAIGVudW0gZGJPYmplY3RUeXBlUHJp b3JpdGllcwogCVBSSU9fQ09OU1RSQUlOVCwKIAlQUklPX0lOREVYLAogCVBSSU9fSU5ERVhfQVRU QUNILAorCVBSSU9fUEVSSU9ELAogCVBSSU9fU1RBVFNFWFQsCiAJUFJJT19SVUxFLAogCVBSSU9f VFJJR0dFUiwKQEAgLTEwOCw2ICsxMDksNyBAQCBzdGF0aWMgY29uc3QgaW50IGRiT2JqZWN0VHlw ZVByaW9yaXR5W10gPQogCVBSSU9fQVRUUkRFRiwJCQkJLyogRE9fQVRUUkRFRiAqLwogCVBSSU9f SU5ERVgsCQkJCQkvKiBET19JTkRFWCAqLwogCVBSSU9fSU5ERVhfQVRUQUNILAkJCS8qIERPX0lO REVYX0FUVEFDSCAqLworCVBSSU9fUEVSSU9ELAkJCQkvKiBET19QRVJJT0QgKi8KIAlQUklPX1NU QVRTRVhULAkJCQkvKiBET19TVEFUU0VYVCAqLwogCVBSSU9fUlVMRSwJCQkJCS8qIERPX1JVTEUg Ki8KIAlQUklPX1RSSUdHRVIsCQkJCS8qIERPX1RSSUdHRVIgKi8KQEAgLTEzODMsNiArMTM4NSwx MSBAQCBkZXNjcmliZUR1bXBhYmxlT2JqZWN0KER1bXBhYmxlT2JqZWN0ICpvYmosIGNoYXIgKmJ1 ZiwgaW50IGJ1ZnNpemUpCiAJCQkJCSAiRksgQ09OU1RSQUlOVCAlcyAgKElEICVkIE9JRCAldSki LAogCQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1bXBJZCwgb2JqLT5jYXRJZC5vaWQpOwogCQkJcmV0 dXJuOworCQljYXNlIERPX1BFUklPRDoKKwkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJ ICJQRVJJT0QgJXMgIChJRCAlZCBPSUQgJXUpIiwKKwkJCQkJIG9iai0+bmFtZSwgb2JqLT5kdW1w SWQsIG9iai0+Y2F0SWQub2lkKTsKKwkJCXJldHVybjsKIAkJY2FzZSBET19QUk9DTEFORzoKIAkJ CXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKIAkJCQkJICJQUk9DRURVUkFMIExBTkdVQUdFICVzICAo SUQgJWQgT0lEICV1KSIsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDkwZmY2NDliZTcuLmI1ZTI0MjY1OGUgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmli ZS5jCkBAIC0yNTIwLDYgKzI1MjAsNDAgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3Qg Y2hhciAqc2NoZW1hbmFtZSwKIAkJUEdyZXN1bHQgICAqcmVzdWx0ID0gTlVMTDsKIAkJaW50CQkJ dHVwbGVzID0gMDsKIAorCQkvKiBwcmludCBwZXJpb2RzICovCisJCWlmIChwc2V0LnN2ZXJzaW9u ID49IDE1MDAwMCkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICJT RUxFQ1QgcXVvdGVfaWRlbnQocC5wZXJuYW1lKSwgcXVvdGVfaWRlbnQocy5hdHRuYW1lKSBBUyBz dGFydGF0dCwgcXVvdGVfaWRlbnQoZS5hdHRuYW1lKSBBUyBlbmRhdHRcbiIKKwkJCQkJCQkgICJG Uk9NIHBnX3BlcmlvZCBBUyBwXG4iCisJCQkJCQkJICAiSk9JTiBwZ19hdHRyaWJ1dGUgQVMgcyBP TiAocy5hdHRyZWxpZCwgcy5hdHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyc3RhcnQpXG4iCisJ CQkJCQkJICAiSk9JTiBwZ19hdHRyaWJ1dGUgQVMgZSBPTiAoZS5hdHRyZWxpZCwgZS5hdHRudW0p ID0gKHAucGVycmVsaWQsIHAucGVyZW5kKVxuIgorCQkJCQkJCSAgIldIRVJFIHAucGVycmVsaWQg PSAnJXMnXG4iCisJCQkJCQkJICAiT1JERVIgQlkgMTsiLAorCQkJCQkJCSAgb2lkKTsKKwkJCXJl c3VsdCA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKwkJCWlmICghcmVzdWx0KQorCQkJCWdvdG8gZXJy b3JfcmV0dXJuOworCQkJZWxzZQorCQkJCXR1cGxlcyA9IFBRbnR1cGxlcyhyZXN1bHQpOworCisJ CQlpZiAodHVwbGVzID4gMCkKKwkJCXsKKwkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBf KCJQZXJpb2RzOiIpKTsKKwkJCQlmb3IgKGkgPSAwOyBpIDwgdHVwbGVzOyBpKyspCisJCQkJewor CQkJCQkvKiB1bnRyYW5zbGF0ZWQgY29uc3RyYWludCBuYW1lIGFuZCBkZWYgKi8KKwkJCQkJcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgICAlcyAoJXMsICVzKSIsCisJCQkJCQkJCQkgIFBRZ2V0 dmFsdWUocmVzdWx0LCBpLCAwKSwKKwkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDEp LAorCQkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMikpOworCisJCQkJCXByaW50VGFi bGVBZGRGb290ZXIoJmNvbnQsIGJ1Zi5kYXRhKTsKKwkJCQl9CisJCQl9CisJCQlQUWNsZWFyKHJl c3VsdCk7CisJCX0KKwogCQkvKiBwcmludCBpbmRleGVzICovCiAJCWlmICh0YWJsZWluZm8uaGFz aW5kZXgpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKaW5kZXggMjg4NWYzNWNjZC4uMWM2 ODdlNTlhOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKQEAgLTkzLDYgKzkzLDcgQEAgdHlw ZWRlZiBlbnVtIE9iamVjdENsYXNzCiAJT0NMQVNTX0NBU1QsCQkJCS8qIHBnX2Nhc3QgKi8KIAlP Q0xBU1NfQ09MTEFUSU9OLAkJCS8qIHBnX2NvbGxhdGlvbiAqLwogCU9DTEFTU19DT05TVFJBSU5U LAkJCS8qIHBnX2NvbnN0cmFpbnQgKi8KKwlPQ0xBU1NfUEVSSU9ELAkJCQkvKiBwZ19wZXJpb2Qg Ki8KIAlPQ0xBU1NfQ09OVkVSU0lPTiwJCQkvKiBwZ19jb252ZXJzaW9uICovCiAJT0NMQVNTX0RF RkFVTFQsCQkJCS8qIHBnX2F0dHJkZWYgKi8KIAlPQ0xBU1NfTEFOR1VBR0UsCQkJLyogcGdfbGFu Z3VhZ2UgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9oZWFwLmgKaW5kZXggNmNlNDgwYjQ5Yy4uNzZkOTU5NzMyOCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9oZWFwLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAgZXh0ZXJuIE9pZAlTdG9yZUF0dHJEZWZhdWx0 KFJlbGF0aW9uIHJlbCwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJCQkJIE5vZGUgKmV4cHIsIGJv b2wgaXNfaW50ZXJuYWwsCiAJCQkJCQkJIGJvb2wgYWRkX2NvbHVtbl9tb2RlKTsKIAorZXh0ZXJu IE9pZCBTdG9yZVBlcmlvZChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKnBlcmlvZCwKKwkJCQkJ ICAgQXR0ck51bWJlciBzdGFydG51bSwgQXR0ck51bWJlciBlbmRudW0sCisJCQkJCSAgIE9pZCBy bmd0eXBpZCwgT2lkIGNvbm9pZCk7CisKIGV4dGVybiBOb2RlICpjb29rRGVmYXVsdChQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJCQkgTm9kZSAqcmF3X2RlZmF1bHQsCiAJCQkJCQkgT2lkIGF0dHR5 cGlkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oCmluZGV4IGE1YTYwNzVkNGQuLjIyY2MxYmE1MjcgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2luZGV4LmgKQEAgLTQzLDExICs0MywxMSBAQCBDQVRBTE9HKHBnX2luZGV4 LDI2MTAsSW5kZXhSZWxhdGlvbklkKSBCS0lfU0NIRU1BX01BQ1JPCiAJYm9vbAkJaW5kaXNyZWFk eTsJCS8qIGlzIHRoaXMgaW5kZXggcmVhZHkgZm9yIGluc2VydHM/ICovCiAJYm9vbAkJaW5kaXNs aXZlOwkJLyogaXMgdGhpcyBpbmRleCBhbGl2ZSBhdCBhbGw/ICovCiAJYm9vbAkJaW5kaXNyZXBs aWRlbnQ7IC8qIGlzIHRoaXMgaW5kZXggdGhlIGlkZW50aXR5IGZvciByZXBsaWNhdGlvbj8gKi8K KwlPaWQJCQlpbmRwZXJpb2Q7CQkvKiB0aGUgcGVyaW9kIGl0IGNvbnRhaW5zLCBpZiBhbnkgKi8K IAogCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSwgYnV0IHdlIGFsbG93IGRp cmVjdCBhY2Nlc3MgdG8gaW5ka2V5ICovCiAJaW50MnZlY3RvcglpbmRrZXkgQktJX0ZPUkNFX05P VF9OVUxMOwkvKiBjb2x1bW4gbnVtYmVycyBvZiBpbmRleGVkIGNvbHMsCiAJCQkJCQkJCQkJCSAq IG9yIDAgKi8KLQogI2lmZGVmIENBVEFMT0dfVkFSTEVOCiAJb2lkdmVjdG9yCWluZGNvbGxhdGlv biBCS0lfTE9PS1VQX09QVChwZ19jb2xsYXRpb24pIEJLSV9GT1JDRV9OT1RfTlVMTDsJLyogY29s bGF0aW9uIGlkZW50aWZpZXJzICovCiAJb2lkdmVjdG9yCWluZGNsYXNzIEJLSV9MT09LVVAocGdf b3BjbGFzcykgQktJX0ZPUkNFX05PVF9OVUxMOyAvKiBvcGNsYXNzIGlkZW50aWZpZXJzICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wZXJpb2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li5hN2Q4YTYyMjU4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w ZXJpb2QuaApAQCAtMCwwICsxLDU1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19w ZXJpb2QuaAorICoJICBkZWZpbml0aW9uIG9mIHRoZSAicGVyaW9kIiBzeXN0ZW0gY2F0YWxvZyAo cGdfcGVyaW9kKQorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMSwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBzcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3BlcmlvZC5oCisgKgorICogTk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9k dWxlIHJlYWRzIHRoaXMgZmlsZSBhbmQgZGVyaXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24u CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEdfUEVSSU9EX0gKKyNkZWZp bmUgUEdfUEVSSU9EX0gKKworI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ19wZXJpb2RfZC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJcGdfcGVy aW9kIGRlZmluaXRpb24uICBjcHAgdHVybnMgdGhpcyBpbnRvCisgKgkJdHlwZWRlZiBzdHJ1Y3Qg Rm9ybURhdGFfcGdfcGVyaW9kCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK0NBVEFMT0cocGdf cGVyaW9kLDgwMDAsUGVyaW9kUmVsYXRpb25JZCkKK3sKKwlPaWQJCQlvaWQ7CQkJLyogT0lEIG9m IHRoZSBwZXJpb2QgKi8KKwlOYW1lRGF0YQlwZXJuYW1lOwkJLyogbmFtZSBvZiBwZXJpb2QgKi8K KwlPaWQJCQlwZXJyZWxpZDsJCS8qIE9JRCBvZiByZWxhdGlvbiBjb250YWluaW5nIHRoaXMgcGVy aW9kICovCisJaW50MTYJCXBlcnN0YXJ0OwkJLyogY29sdW1uIGZvciBzdGFydCB2YWx1ZSAqLwor CWludDE2CQlwZXJlbmQ7CQkJLyogY29sdW1uIGZvciBlbmQgdmFsdWUgKi8KKwlPaWQJCQlwZXJy bmd0eXBlOwkJLyogT0lEIG9mIHRoZSByYW5nZSB0eXBlIGZvciB0aGlzIHBlcmlvZCAqLworCU9p ZAkJCXBlcmNvbnN0cmFpbnQ7CS8qIE9JRCBvZiAoc3RhcnQgPCBlbmQpIGNvbnN0cmFpbnQgKi8K Kwlib29sCQlwZXJpc2xvY2FsOwkJLyogaXMgdGhlIHBlcmlvZCBsb2NhbCBvciBpbmhlcml0ZWQ/ ICovCisJaW50MzIJCXBlcmluaGNvdW50OwkvKiBudW1iZXIgb2YgcGFyZW50cyBoYXZpbmcgdGhp cyBwZXJpb2QgKi8KK30gRm9ybURhdGFfcGdfcGVyaW9kOworCisvKiAtLS0tLS0tLS0tLS0tLS0t CisgKgkJRm9ybV9wZ19wZXJpb2QgY29ycmVzcG9uZHMgdG8gYSBwb2ludGVyIHRvIGEgdHVwbGUg d2l0aAorICoJCXRoZSBmb3JtYXQgb2YgcGdfcGVyaW9kIHJlbGF0aW9uLgorICogLS0tLS0tLS0t LS0tLS0tLQorICovCit0eXBlZGVmIEZvcm1EYXRhX3BnX3BlcmlvZCAqRm9ybV9wZ19wZXJpb2Q7 CisKK0RFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfcGVyaW9kX29pZF9pbmRleCwgODAwMSwg UGVyaW9kT2JqZWN0SW5kZXhJZCwgb24gcGdfcGVyaW9kIHVzaW5nIGJ0cmVlKG9pZCBvaWRfb3Bz KSk7CitERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19wZXJpb2RfcGVycmVsaWRfcGVybmFtZV9pbmRl eCwgODAwMiwgUGVyaW9kUmVsaWROYW1lSW5kZXhJZCwgb24gcGdfcGVyaW9kIHVzaW5nIGJ0cmVl KHBlcnJlbGlkIG9pZF9vcHMsIHBlcm5hbWUgbmFtZV9vcHMpKTsKKworZXh0ZXJuIHZvaWQgUmVt b3ZlUGVyaW9kQnlJZChPaWQgcGVyaW9kSWQpOworCitleHRlcm4gT2lkIGdldF9yZWxhdGlvbl9w ZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVybmFtZSwgYm9vbCBtaXNzaW5nX29r KTsKKworI2VuZGlmCQkJCQkJCS8qIFBHX1BFUklPRF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgK aW5kZXggY2RlMjkxMTRiYS4uZWM0Y2YzNmZkZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19yYW5nZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcmFuZ2UuaApAQCAt NTksNiArNTksNyBAQCB0eXBlZGVmIEZvcm1EYXRhX3BnX3JhbmdlICpGb3JtX3BnX3JhbmdlOwog CiBERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX3JhbmdlX3JuZ3R5cGlkX2luZGV4LCAzNTQy LCBSYW5nZVR5cGlkSW5kZXhJZCwgb24gcGdfcmFuZ2UgdXNpbmcgYnRyZWUocm5ndHlwaWQgb2lk X29wcykpOwogREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcmFuZ2Vfcm5nbXVsdGl0eXBpZF9pbmRl eCwgMjIyOCwgUmFuZ2VNdWx0aXJhbmdlVHlwaWRJbmRleElkLCBvbiBwZ19yYW5nZSB1c2luZyBi dHJlZShybmdtdWx0aXR5cGlkIG9pZF9vcHMpKTsKK0RFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX3Jh bmdlX3JuZ3N1YnR5cGVfcm5ndHlwaWRfaW5kZXgsIDgwMDMsIFJhbmdlU3ViVHlwaWRUeXBpZElu ZGV4SWQsIG9uIHBnX3JhbmdlIHVzaW5nIGJ0cmVlKHJuZ3N1YnR5cGUgb2lkX29wcywgcm5ndHlw aWQgb2lkX29wcykpOwogCiAvKgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHBnX3Jh bmdlLmMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKaW5kZXggMzM2NTQ5Y2M1Zi4uODkyMzkyMDVk MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKKysrIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKQEAgLTM4LDcgKzM4LDggQEAgZXh0ZXJuIExP Q0tNT0RFIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcyk7CiAKIGV4dGVybiB2b2lk IEFURXhlY0NoYW5nZU93bmVyKE9pZCByZWxhdGlvbk9pZCwgT2lkIG5ld093bmVySWQsIGJvb2wg cmVjdXJzaW5nLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKLWV4dGVybiB2b2lkIEFsdGVyVGFibGVJ bnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSk7CitleHRlcm4gdm9p ZCBBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2Us CisJCQkJCQkJICAgc3RydWN0IEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiAK IGV4dGVybiBPaWQJQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1vdmVBbGxTdG10ICpzdG10 KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCBiL3NyYy9pbmNsdWRl L25vZGVzL25vZGVzLmgKaW5kZXggYTY5MmViN2IwOS4uZmU2Y2MzZmUwMiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5o CkBAIC00NTgsNiArNDU4LDcgQEAgdHlwZWRlZiBlbnVtIE5vZGVUYWcKIAlUX0luZGV4RWxlbSwK IAlUX1N0YXRzRWxlbSwKIAlUX0NvbnN0cmFpbnQsCisJVF9QZXJpb2QsCiAJVF9EZWZFbGVtLAog CVRfUmFuZ2VUYmxFbnRyeSwKIAlUX1JhbmdlVGJsRnVuY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKaW5kZXggNDVlNGYyYTE2ZS4uOWJlNDBlOTg0MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApA QCAtMTgxMyw2ICsxODEzLDcgQEAgdHlwZWRlZiBlbnVtIE9iamVjdFR5cGUKIAlPQkpFQ1RfT1BD TEFTUywKIAlPQkpFQ1RfT1BFUkFUT1IsCiAJT0JKRUNUX09QRkFNSUxZLAorCU9CSkVDVF9QRVJJ T0QsCiAJT0JKRUNUX1BPTElDWSwKIAlPQkpFQ1RfUFJPQ0VEVVJFLAogCU9CSkVDVF9QVUJMSUNB VElPTiwKQEAgLTE5MDQsNiArMTkwNSw4IEBAIHR5cGVkZWYgZW51bSBBbHRlclRhYmxlVHlwZQog CUFUX0FkZEluZGV4Q29uc3RyYWludCwJCS8qIGFkZCBjb25zdHJhaW50IHVzaW5nIGV4aXN0aW5n IGluZGV4ICovCiAJQVRfRHJvcENvbnN0cmFpbnQsCQkJLyogZHJvcCBjb25zdHJhaW50ICovCiAJ QVRfRHJvcENvbnN0cmFpbnRSZWN1cnNlLAkvKiBpbnRlcm5hbCB0byBjb21tYW5kcy90YWJsZWNt ZHMuYyAqLworCUFUX0FkZFBlcmlvZCwJCQkJLyogQUREIFBFUklPRCAqLworCUFUX0Ryb3BQZXJp b2QsCQkJCS8qIERST1AgUEVSSU9EICovCiAJQVRfUmVBZGRDb21tZW50LAkJCS8qIGludGVybmFs IHRvIGNvbW1hbmRzL3RhYmxlY21kcy5jICovCiAJQVRfQWx0ZXJDb2x1bW5UeXBlLAkJCS8qIGFs dGVyIGNvbHVtbiB0eXBlICovCiAJQVRfQWx0ZXJDb2x1bW5HZW5lcmljT3B0aW9ucywJLyogYWx0 ZXIgY29sdW1uIE9QVElPTlMgKC4uLikgKi8KQEAgLTIxNjksOSArMjE3Miw5IEBAIHR5cGVkZWYg c3RydWN0IFZhcmlhYmxlU2hvd1N0bXQKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlD cmVhdGUgVGFibGUgU3RhdGVtZW50CiAgKgotICogTk9URTogaW4gdGhlIHJhdyBncmFtLnkgb3V0 cHV0LCBDb2x1bW5EZWYgYW5kIENvbnN0cmFpbnQgbm9kZXMgYXJlCi0gKiBpbnRlcm1peGVkIGlu IHRhYmxlRWx0cywgYW5kIGNvbnN0cmFpbnRzIGlzIE5JTC4gIEFmdGVyIHBhcnNlIGFuYWx5c2lz LAotICogdGFibGVFbHRzIGNvbnRhaW5zIGp1c3QgQ29sdW1uRGVmcywgYW5kIGNvbnN0cmFpbnRz IGNvbnRhaW5zIGp1c3QKKyAqIE5PVEU6IGluIHRoZSByYXcgZ3JhbS55IG91dHB1dCwgQ29sdW1u RGVmLCBQZXJpb2QsIGFuZCBDb25zdHJhaW50IG5vZGVzIGFyZQorICogaW50ZXJtaXhlZCBpbiB0 YWJsZUVsdHM7IHBlcmlvZHMgYW5kIGNvbnN0cmFpbnRzIGFyZSBOSUwuICBBZnRlciBwYXJzZSBh bmFseXNpcywKKyAqIHRhYmxlRWx0cyBjb250YWlucyBqdXN0IENvbHVtbkRlZnMsIHBlcmlvZHMg Y29udGFpbnMganVzdCBQZXJpb2Qgbm9kZXMsIGFuZCBjb25zdHJhaW50cyBjb250YWlucyBqdXN0 CiAgKiBDb25zdHJhaW50IG5vZGVzIChpbiBmYWN0LCBvbmx5IENPTlNUUl9DSEVDSyBub2Rlcywg aW4gdGhlIHByZXNlbnQKICAqIGltcGxlbWVudGF0aW9uKS4KICAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KQEAgLTIxODIsNiArMjE4NSw3IEBAIHR5cGVkZWYgc3RydWN0IENyZWF0ZVN0bXQKIAlO b2RlVGFnCQl0eXBlOwogCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gY3Jl YXRlICovCiAJTGlzdAkgICAqdGFibGVFbHRzOwkJLyogY29sdW1uIGRlZmluaXRpb25zIChsaXN0 IG9mIENvbHVtbkRlZikgKi8KKwlMaXN0CSAgICpwZXJpb2RzOwkJLyogcGVyaW9kcyAobGlzdCBv ZiBQZXJpb2Qgbm9kZXMpICovCiAJTGlzdAkgICAqaW5oUmVsYXRpb25zOwkvKiByZWxhdGlvbnMg dG8gaW5oZXJpdCBmcm9tIChsaXN0IG9mCiAJCQkJCQkJCSAqIFJhbmdlVmFyKSAqLwogCVBhcnRp dGlvbkJvdW5kU3BlYyAqcGFydGJvdW5kOwkvKiBGT1IgVkFMVUVTIGNsYXVzZSAqLwpAQCAtMjE5 NSw2ICsyMTk5LDI2IEBAIHR5cGVkZWYgc3RydWN0IENyZWF0ZVN0bXQKIAlib29sCQlpZl9ub3Rf ZXhpc3RzOwkvKiBqdXN0IGRvIG5vdGhpbmcgaWYgaXQgYWxyZWFkeSBleGlzdHM/ICovCiB9IENy ZWF0ZVN0bXQ7CiAKKworLyogLS0tLS0tLS0tLQorICogRGVmaW5pdGlvbnMgZm9yIHBlcmlvZHMg aW4gQ3JlYXRlU3RtdAorICogLS0tLS0tLS0tLQorICovCisKK3R5cGVkZWYgc3RydWN0IFBlcmlv ZAoreworCU5vZGVUYWcJCXR5cGU7CisJT2lkCQkJb2lkOwkJCS8qIHBlcmlvZCBvaWQsIG9uY2Ug aXQncyB0cmFuc2Zvcm1lZCAqLworCWNoYXIJICAgKnBlcmlvZG5hbWU7CQkvKiBwZXJpb2QgbmFt ZSAqLworCWNoYXIJICAgKnN0YXJ0Y29sbmFtZTsJLyogbmFtZSBvZiBzdGFydCBjb2x1bW4gKi8K KwljaGFyCSAgICplbmRjb2xuYW1lOwkJLyogbmFtZSBvZiBlbmQgY29sdW1uICovCisJTGlzdAkg ICAqb3B0aW9uczsJCS8qIG9wdGlvbnMgZnJvbSBXSVRIIGNsYXVzZSAqLworCWNoYXIJICAgKmNv bnN0cmFpbnRuYW1lOwkvKiBuYW1lIG9mIHRoZSBDSEVDSyBjb25zdHJhaW50ICovCisJY2hhcgkg ICAqcmFuZ2V0eXBlbmFtZTsJLyogbmFtZSBvZiB0aGUgcmFuZ2UgdHlwZSAqLworCU9pZAkJCXJu Z3R5cGlkOwkJLyogdGhlIHJhbmdlIHR5cGUgdG8gdXNlICovCisJaW50CQkJbG9jYXRpb247CQkv KiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBQZXJpb2Q7CisKIC8qIC0t LS0tLS0tLS0KICAqIERlZmluaXRpb25zIGZvciBjb25zdHJhaW50cyBpbiBDcmVhdGVTdG10CiAg KgpAQCAtMjg5Miw2ICsyOTE2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhTdG10CiAJTGlzdAkg ICAqaW5kZXhQYXJhbXM7CS8qIGNvbHVtbnMgdG8gaW5kZXg6IGEgbGlzdCBvZiBJbmRleEVsZW0g Ki8KIAlMaXN0CSAgICppbmRleEluY2x1ZGluZ1BhcmFtczsJLyogYWRkaXRpb25hbCBjb2x1bW5z IHRvIGluZGV4OiBhIGxpc3QKIAkJCQkJCQkJCQkgKiBvZiBJbmRleEVsZW0gKi8KKwlQZXJpb2QJ ICAgKnBlcmlvZDsJCQkvKiBUaGUgcGVyaW9kIGluY2x1ZGVkIGluIHRoZSBpbmRleCAqLwogCUxp c3QJICAgKm9wdGlvbnM7CQkvKiBXSVRIIGNsYXVzZSBvcHRpb25zOiBhIGxpc3Qgb2YgRGVmRWxl bSAqLwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9uIChwYXJ0aWFsLWlu ZGV4IHByZWRpY2F0ZSkgKi8KIAlMaXN0CSAgICpleGNsdWRlT3BOYW1lczsgLyogZXhjbHVzaW9u IG9wZXJhdG9yIG5hbWVzLCBvciBOSUwgaWYgbm9uZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IGY4 MzZhY2Y4NzYuLjQzZmM1NjEwNzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTMxMiw2ICszMTIsNyBA QCBQR19LRVlXT1JEKCJwYXJ0aWFsIiwgUEFSVElBTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9OLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09S RCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicGVyaW9kIiwg UEVSSU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxhY2lu ZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJw bGFucyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJwb2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmggYi9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2VfdXRpbGNtZC5oCmluZGV4IDEwNTZiZjA4MWIuLjhlODFkMTcwYTkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgKKysrIGIvc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaApAQCAtMzksNSArMzksNiBAQCBleHRlcm4gSW5kZXhT dG10ICpnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwKIAkJCQkJCQkJ CQkgIFJlbGF0aW9uIHNvdXJjZV9pZHgsCiAJCQkJCQkJCQkJICBjb25zdCBzdHJ1Y3QgQXR0ck1h cCAqYXR0bWFwLAogCQkJCQkJCQkJCSAgT2lkICpjb25zdHJhaW50T2lkKTsKK2V4dGVybiB2b2lk IHRyYW5zZm9ybVBlcmlvZE9wdGlvbnMoUGVyaW9kICpwZXJpb2QpOwogCiAjZW5kaWYJCQkJCQkJ LyogUEFSU0VfVVRJTENNRF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lz Y2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IDc3ODcxYWFlZmMu LmJiOGMxYjY3NDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC05Niw2ICs5Niw4IEBAIGV4dGVy biBPaWQJZ2V0X2F0dHR5cGUoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSk7CiBleHRlcm4g dm9pZCBnZXRfYXR0dHlwZXR5cG1vZGNvbGwoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSwK IAkJCQkJCQkJICBPaWQgKnR5cGlkLCBpbnQzMiAqdHlwbW9kLCBPaWQgKmNvbGxpZCk7CiBleHRl cm4gRGF0dW0gZ2V0X2F0dG9wdGlvbnMoT2lkIHJlbGlkLCBpbnQxNiBhdHRudW0pOworZXh0ZXJu IGNoYXIgKmdldF9wZXJpb2RuYW1lKE9pZCBwZXJpb2RpZCwgYm9vbCBtaXNzaW5nX29rKTsKK2V4 dGVybiBPaWQJZ2V0X3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBjaGFyICpwZXJpb2RuYW1l LCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIE9pZAlnZXRfY2FzdF9vaWQoT2lkIHNvdXJjZXR5 cGVpZCwgT2lkIHRhcmdldHR5cGVpZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBjaGFyICpn ZXRfY29sbGF0aW9uX25hbWUoT2lkIGNvbGxvaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X2NvbGxhdGlv bl9pc2RldGVybWluaXN0aWMoT2lkIGNvbGxvaWQpOwpAQCAtMTk0LDYgKzE5Niw3IEBAIGV4dGVy biBPaWQJZ2V0X3JhbmdlX3N1YnR5cGUoT2lkIHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJZ2V0X3Jh bmdlX2NvbGxhdGlvbihPaWQgcmFuZ2VPaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmFuZ2VfbXVsdGly YW5nZShPaWQgcmFuZ2VPaWQpOwogZXh0ZXJuIE9pZAlnZXRfbXVsdGlyYW5nZV9yYW5nZShPaWQg bXVsdGlyYW5nZU9pZCk7CitleHRlcm4gT2lkCWdldF9zdWJ0eXBlX3JhbmdlKE9pZCBzdWJ0eXBl T2lkKTsKIGV4dGVybiBPaWQJZ2V0X2luZGV4X2NvbHVtbl9vcGNsYXNzKE9pZCBpbmRleF9vaWQs IGludCBhdHRubyk7CiBleHRlcm4gYm9vbCBnZXRfaW5kZXhfaXNyZXBsaWRlbnQoT2lkIGluZGV4 X29pZCk7CiBleHRlcm4gYm9vbCBnZXRfaW5kZXhfaXN2YWxpZChPaWQgaW5kZXhfb2lkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGls cy9zeXNjYWNoZS5oCmluZGV4IGQ3NGEzNDg2MDAuLjk4ZWJhYWRmZGQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2Fj aGUuaApAQCAtNzMsNiArNzMsOCBAQCBlbnVtIFN5c0NhY2hlSWRlbnRpZmllcgogCU9QRkFNSUxZ QU1OQU1FTlNQLAogCU9QRkFNSUxZT0lELAogCVBBUlRSRUxJRCwKKwlQRVJJT0ROQU1FLAorCVBF UklPRE9JRCwKIAlQUk9DTkFNRUFSR1NOU1AsCiAJUFJPQ09JRCwKIAlQVUJMSUNBVElPTk5BTUUs CkBAIC04MCw2ICs4Miw3IEBAIGVudW0gU3lzQ2FjaGVJZGVudGlmaWVyCiAJUFVCTElDQVRJT05S RUwsCiAJUFVCTElDQVRJT05SRUxNQVAsCiAJUkFOR0VNVUxUSVJBTkdFLAorCVJBTkdFU1VCVFlQ RSwKIAlSQU5HRVRZUEUsCiAJUkVMTkFNRU5TUCwKIAlSRUxPSUQsCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wZXJpb2RzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4z YjllY2EwZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w ZXJpb2RzLm91dApAQCAtMCwwICsxLDc5IEBACisvKiBTeXN0ZW0gcGVyaW9kcyBhcmUgbm90IGlt cGxlbWVudGVkICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRh dGUsIHBlcmlvZCBmb3Igc3lzdGVtX3RpbWUgKGRzLCBkZSkpOworRVJST1I6ICBQRVJJT0QgRk9S IFNZU1RFTV9USU1FIGlzIG5vdCBzdXBwb3J0ZWQKK0xJTkUgMjogY3JlYXRlIHRhYmxlIHB0IChp ZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5Li4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLyogUGVyaW9k cyBtdXN0IHNwZWNpZnkgYWN0dWFsIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50 ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChib2d1cywgZGUpKTsKK0VSUk9S OiAgY29sdW1uICJib2d1cyIgb2YgcmVsYXRpb24gInB0IiBkb2VzIG5vdCBleGlzdAorY3JlYXRl IHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRz LCBib2d1cykpOworRVJST1I6ICBjb2x1bW4gImJvZ3VzIiBvZiByZWxhdGlvbiAicHQiIGRvZXMg bm90IGV4aXN0CisvKiBEYXRhIHR5cGVzIG11c3QgbWF0Y2ggZXhhY3RseSAqLworY3JlYXRlIHRh YmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSB0aW1lc3RhbXAsIHBlcmlvZCBmb3IgcCAo ZHMsIGRlKSk7CitFUlJPUjogIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBi ZSBvZiBzYW1lIHR5cGUKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgdGV4dCBjb2xs YXRlICJDIiwgZGUgdGV4dCBjb2xsYXRlICJQT1NJWCIsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7 CitFUlJPUjogIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBoYXZlIHNhbWUg Y29sbGF0aW9uCisvKiBQZXJpb2RzIG11c3QgaGF2ZSBhIGRlZmF1bHQgQlRyZWUgb3BlcmF0b3Ig Y2xhc3MgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgeG1sLCBkZSB4bWwsIHBl cmlvZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIG5vIHJhbmdlIHR5cGUgZm9yIHhtbCBmb3Vu ZCBmb3IgcGVyaW9kIHAKK0hJTlQ6ICBZb3UgY2FuIGRlZmluZSBhIGN1c3RvbSByYW5nZSB0eXBl IHdpdGggQ1JFQVRFIFRZUEUKKy8qIFBlcmlvZCBhbmQgY29sdW1uIG5hbWVzIGFyZSBpbiB0aGUg c2FtZSBuYW1lc3BhY2UgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwg ZGUgZGF0ZSwgcGVyaW9kIGZvciBjdGlkIChkcywgZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUg ImN0aWQiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lCitjcmVhdGUgdGFibGUg cHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkp OworRVJST1I6ICBwZXJpb2QgbmFtZSAiaWQiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUK Ky8qIE5vdyBtYWtlIG9uZSB0aGF0IHdvcmtzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVn ZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisvKgorICogQ1JF QVRFIFRBQkxFIGN1cnJlbnRseSBhZGRzIGFuIEFMVEVSIFRBQkxFIHRvIGFkZCB0aGUgcGVyaW9k cywgYnV0IGxldCdzIGRvCisgKiBzb21lIGV4cGxpY2l0IHRlc3RpbmcgYW55d2F5CisgKi8KK2Fs dGVyIHRhYmxlIHB0IGRyb3AgcGVyaW9kIGZvciBwOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlv ZCBmb3Igc3lzdGVtX3RpbWUgKGRzLCBkZSk7CitFUlJPUjogIFBFUklPRCBGT1IgU1lTVEVNX1RJ TUUgaXMgbm90IHN1cHBvcnRlZAorYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgcCAoZHMs IGRlKTsKKy8qIENhbid0IGRyb3AgaXRzIGNvbHVtbnMgKi8KK2FsdGVyIHRhYmxlIHB0IGRyb3Ag Y29sdW1uIGRzOworRVJST1I6ICBjYW5ub3QgZHJvcCBjb2x1bW4gZHMgb2YgdGFibGUgcHQgYmVj YXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFi bGUgcHQgZGVwZW5kcyBvbiBjb2x1bW4gZHMgb2YgdGFibGUgcHQKK0hJTlQ6ICBVc2UgRFJPUCAu Li4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCithbHRlciB0YWJs ZSBwdCBkcm9wIGNvbHVtbiBkZTsKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29sdW1uIGRlIG9mIHRh YmxlIHB0IGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBlcmlv ZCBwIG9uIHRhYmxlIHB0IGRlcGVuZHMgb24gY29sdW1uIGRlIG9mIHRhYmxlIHB0CitISU5UOiAg VXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgor LyogQ2FuJ3QgY2hhbmdlIHRoZSBkYXRhIHR5cGVzICovCithbHRlciB0YWJsZSBwdCBhbHRlciBj b2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7CitFUlJPUjogIGNhbm5vdCBhbHRlciB0eXBlIG9mIGEg Y29sdW1uIHVzZWQgYnkgYSBwZXJpb2QKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0IGRl cGVuZHMgb24gY29sdW1uICJkcyIKK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBl IHRpbWVzdGFtcDsKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHR5cGUgb2YgYSBjb2x1bW4gdXNlZCBi eSBhIHBlcmlvZAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBjb2x1 bW4gImRzIgorLyogY29sdW1uL3BlcmlvZCBuYW1lc3BhY2UgY29uZmxpY3RzICovCithbHRlciB0 YWJsZSBwdCBhZGQgY29sdW1uIHAgaW50ZWdlcjsKK0VSUk9SOiAgY29sdW1uIG5hbWUgInAiIGNv bmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUKK2FsdGVyIHRhYmxlIHB0IHJlbmFtZSBjb2x1bW4g aWQgdG8gcDsKK0VSUk9SOiAgY29sdW1uIG5hbWUgInAiIGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9k IG5hbWUKKy8qIGFkZGluZyBjb2x1bW5zIGFuZCB0aGUgcGVyaW9kIGF0IHRoZSBzYW1lIHRpbWUg Ki8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBj b2x1bW4gZHMgZGF0ZSwgYWRkIGNvbHVtbiBkZSBkYXRlLCBhZGQgcGVyaW9kIGZvciBwIChkcywg ZGUpOworZHJvcCB0YWJsZSBwdDI7CisvKiBBbWJpZ3VvdXMgcmFuZ2UgdHlwZXMgcmFpc2UgYW4g ZXJyb3IgKi8KK2NyZWF0ZSB0eXBlIG15ZGF0ZXJhbmdlIGFzIHJhbmdlKHN1YnR5cGU9ZGF0ZSk7 CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3Ig cCAoZHMsIGRlKSk7CitFUlJPUjogIGFtYmlndW91cyByYW5nZSBmb3IgdHlwZSBkYXRlCisvKiBZ b3UgY2FuIGdpdmUgYW4gZXhwbGljaXQgcmFuZ2UgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MiAo aWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFu Z2V0eXBlID0gJ215ZGF0ZXJhbmdlJykpOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdlOworRVJST1I6 ICBjYW5ub3QgZHJvcCB0eXBlIG15ZGF0ZXJhbmdlIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBl bmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0MiBkZXBlbmRzIG9uIHR5cGUg bXlkYXRlcmFuZ2UKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBl bmRlbnQgb2JqZWN0cyB0b28uCitkcm9wIHR5cGUgbXlkYXRlcmFuZ2UgY2FzY2FkZTsKK05PVElD RTogIGRyb3AgY2FzY2FkZXMgdG8gcGVyaW9kIHAgb24gdGFibGUgcHQyCitkcm9wIHRhYmxlIHB0 MjsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZv ciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdkYXRlcmFuZ2UnKSk7CisvKiBSYW5nZSB0 eXBlIGlzIG5vdCBmb3VuZCAqLworY3JlYXRlIHRhYmxlIHB0MyAoaWQgaW50LCBkcyBkYXRlLCBk ZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ25vdGFyYW5n ZScpKTsKK0VSUk9SOiAgUmFuZ2UgdHlwZSBub3RhcmFuZ2Ugbm90IGZvdW5kCisvKiBSYW5nZSB0 eXBlIGlzIHRoZSB3cm9uZyB0eXBlICovCitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRh dGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAndHN0 enJhbmdlJykpOworRVJST1I6ICBSYW5nZSB0eXBlIHRzdHpyYW5nZSBkb2VzIG5vdCBtYXRjaCBj b2x1bW4gdHlwZSBkYXRlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nh bml0eV9jaGVjay5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5v dXQKaW5kZXggOTgyYjZhZmY1My4uY2Q4NjVlNTY0NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc2FuaXR5X2NoZWNrLm91dApAQCAtMTM3LDYgKzEzNyw3IEBAIHBnX29wY2xhc3N8dAog cGdfb3BlcmF0b3J8dAogcGdfb3BmYW1pbHl8dAogcGdfcGFydGl0aW9uZWRfdGFibGV8dAorcGdf cGVyaW9kfHQKIHBnX3BvbGljeXx0CiBwZ19wcm9jfHQKIHBnX3B1YmxpY2F0aW9ufHQKQEAgLTE2 Niw2ICsxNjcsOCBAQCBwZ190eXBlfHQKIHBnX3VzZXJfbWFwcGluZ3x0CiBwb2ludF90Ymx8dAog cG9seWdvbl90Ymx8dAorcHR8ZgorcHQyfGYKIHF1YWRfYm94X3RibHx0CiBxdWFkX2JveF90Ymxf b3JkX3NlcTF8ZgogcXVhZF9ib3hfdGJsX29yZF9zZXEyfGYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCmluZGV4IDdiZTg5MTc4ZjAuLjFiZDQzNWMzYTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZQpAQCAtNTgsNyArNTgsNyBAQCB0ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2lu ZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaQogIyAt LS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKICMgLS0tLS0tLS0t LQotdGVzdDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fMyBjcmVhdGVfY2FzdCBj b25zdHJhaW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJsZSB2YWN1dW0gZHJv cF9pZl9leGlzdHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVhdHRyaWJ1dGVzIGNyZWF0ZV9hbSBoYXNo X2Z1bmMgZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UKK3Rlc3Q6IGNyZWF0ZV9hZ2dyZWdhdGUgY3Jl YXRlX2Z1bmN0aW9uXzMgY3JlYXRlX2Nhc3QgY29uc3RyYWludHMgdHJpZ2dlcnMgc2VsZWN0IGlu aGVyaXQgdHlwZWRfdGFibGUgcGVyaW9kcyB2YWN1dW0gZHJvcF9pZl9leGlzdHMgdXBkYXRhYmxl X3ZpZXdzIHJvbGVhdHRyaWJ1dGVzIGNyZWF0ZV9hbSBoYXNoX2Z1bmMgZXJyb3JzIGluZmluaXRl X3JlY3Vyc2UKIAogIyAtLS0tLS0tLS0tCiAjIHNhbml0eV9jaGVjayBkb2VzIGEgdmFjdXVtLCBh ZmZlY3RpbmcgdGhlIHNvcnQgb3JkZXIgb2YgU0VMRUNUICoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGVyaW9kcy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjFlYWYzNTZiYwotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsCkBAIC0wLDAg KzEsNjIgQEAKKy8qIFN5c3RlbSBwZXJpb2RzIGFyZSBub3QgaW1wbGVtZW50ZWQgKi8KK2NyZWF0 ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBzeXN0 ZW1fdGltZSAoZHMsIGRlKSk7CisKKy8qIFBlcmlvZHMgbXVzdCBzcGVjaWZ5IGFjdHVhbCBjb2x1 bW5zICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBl cmlvZCBmb3IgcCAoYm9ndXMsIGRlKSk7CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGJvZ3VzKSk7CisKKy8qIERhdGEgdHlw ZXMgbXVzdCBtYXRjaCBleGFjdGx5ICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIHRpbWVzdGFtcCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK2NyZWF0ZSB0YWJs ZSBwdCAoaWQgaW50ZWdlciwgZHMgdGV4dCBjb2xsYXRlICJDIiwgZGUgdGV4dCBjb2xsYXRlICJQ T1NJWCIsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFBlcmlvZHMgbXVzdCBoYXZlIGEg ZGVmYXVsdCBCVHJlZSBvcGVyYXRvciBjbGFzcyAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRl Z2VyLCBkcyB4bWwsIGRlIHhtbCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKworLyogUGVyaW9k IGFuZCBjb2x1bW4gbmFtZXMgYXJlIGluIHRoZSBzYW1lIG5hbWVzcGFjZSAqLworY3JlYXRlIHRh YmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIGN0aWQgKGRz LCBkZSkpOworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBw ZXJpb2QgZm9yIGlkIChkcywgZGUpKTsKKworLyogTm93IG1ha2Ugb25lIHRoYXQgd29ya3MgKi8K K2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZv ciBwIChkcywgZGUpKTsKKworLyoKKyAqIENSRUFURSBUQUJMRSBjdXJyZW50bHkgYWRkcyBhbiBB TFRFUiBUQUJMRSB0byBhZGQgdGhlIHBlcmlvZHMsIGJ1dCBsZXQncyBkbworICogc29tZSBleHBs aWNpdCB0ZXN0aW5nIGFueXdheQorICovCithbHRlciB0YWJsZSBwdCBkcm9wIHBlcmlvZCBmb3Ig cDsKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUpOwor YWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKTsKKworLyogQ2FuJ3QgZHJv cCBpdHMgY29sdW1ucyAqLworYWx0ZXIgdGFibGUgcHQgZHJvcCBjb2x1bW4gZHM7CithbHRlciB0 YWJsZSBwdCBkcm9wIGNvbHVtbiBkZTsKKworLyogQ2FuJ3QgY2hhbmdlIHRoZSBkYXRhIHR5cGVz ICovCithbHRlciB0YWJsZSBwdCBhbHRlciBjb2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7CithbHRl ciB0YWJsZSBwdCBhbHRlciBjb2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7CisKKy8qIGNvbHVtbi9w ZXJpb2QgbmFtZXNwYWNlIGNvbmZsaWN0cyAqLworYWx0ZXIgdGFibGUgcHQgYWRkIGNvbHVtbiBw IGludGVnZXI7CithbHRlciB0YWJsZSBwdCByZW5hbWUgY29sdW1uIGlkIHRvIHA7CisKKy8qIGFk ZGluZyBjb2x1bW5zIGFuZCB0aGUgcGVyaW9kIGF0IHRoZSBzYW1lIHRpbWUgKi8KK2NyZWF0ZSB0 YWJsZSBwdDIgKGlkIGludGVnZXIpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBjb2x1bW4gZHMgZGF0 ZSwgYWRkIGNvbHVtbiBkZSBkYXRlLCBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpOworZHJvcCB0 YWJsZSBwdDI7CisKKy8qIEFtYmlndW91cyByYW5nZSB0eXBlcyByYWlzZSBhbiBlcnJvciAqLwor Y3JlYXRlIHR5cGUgbXlkYXRlcmFuZ2UgYXMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKK2NyZWF0ZSB0 YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUp KTsKKworLyogWW91IGNhbiBnaXZlIGFuIGV4cGxpY2l0IHJhbmdlIHR5cGUgKi8KK2NyZWF0ZSB0 YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUp IHdpdGggKHJhbmdldHlwZSA9ICdteWRhdGVyYW5nZScpKTsKK2Ryb3AgdHlwZSBteWRhdGVyYW5n ZTsKK2Ryb3AgdHlwZSBteWRhdGVyYW5nZSBjYXNjYWRlOworZHJvcCB0YWJsZSBwdDI7CitjcmVh dGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMs IGRlKSB3aXRoIChyYW5nZXR5cGUgPSAnZGF0ZXJhbmdlJykpOworCisvKiBSYW5nZSB0eXBlIGlz IG5vdCBmb3VuZCAqLworY3JlYXRlIHRhYmxlIHB0MyAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRl LCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ25vdGFyYW5nZScpKTsK KworLyogUmFuZ2UgdHlwZSBpcyB0aGUgd3JvbmcgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MyAo aWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFu Z2V0eXBlID0gJ3RzdHpyYW5nZScpKTsKLS0gCjIuMzIuMAoK --00000000000082e1ad05cbd8ac96 Content-Type: application/octet-stream; name="v8-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename="v8-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kti4otij1 RnJvbSAyZDU4MThkOTUwMzAxMWVlNmE3MGVmNzI1ZDQyNWM2NTc2MWQwOTFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3MDAKU3ViamVj dDogW1BBVENIIHY4IDIvNF0gQWRkIHRlbXBvcmFsIFBSSU1BUlkgS0VZIGFuZCBVTklRVUUgY29u c3RyYWludHMKCi0gQWRkZWQgV0lUSE9VVCBPVkVSTEFQUyB0byB0aGUgYmlzb24gZ3JhbW1hci4g V2UgcGVybWl0IGVpdGhlciByYW5nZQogIGNvbHVtbnMgb3IgUEVSSU9Ecy4KLSBUZW1wb3JhbCBQ UklNQVJZIEtFWXMgYW5kIFVOSVFVRSBjb25zdHJhaW50cyBhcmUgYmFja2VkIGJ5IEdpU1QKICBp bmRleGVzIGluc3RlYWQgb2YgQi10cmVlIGluZGV4ZXMsIHNpbmNlIHRoZXkgYXJlIGVzc2VudGlh bGx5CiAgZXhjbHVzaW9uIGNvbnN0cmFpbnRzIHdpdGggPSBmb3IgdGhlIHNjYWxhciBwYXJ0cyBv ZiB0aGUga2V5IGFuZCAmJgogIGZvciB0aGUgdGVtcG9yYWwgcGFydC4gV2l0aCBQRVJJT0RzIHdl IGluZGV4IGEgcmFuZ2UgZXhwcmVzc2lvbiB1c2luZwogIHRoZSBQRVJJT0Qgc3RhcnQgYW5kIGVu ZCBjb2x1bW5zLiBXaXRoIHJhbmdlcyB3ZSBjYW4ganVzdCBpbmRleCB0aGUKICBjb2x1bW4sIHNv IG5vIGV4cHJlc3Npb24gaXMgbmVlZGVkLgotIEFkZGVkIHBnX2luZGV4LmluZHBlcmlvZCB0byBy ZWNvcmQgd2hlbiBhIFBFUklPRCBpcyB1c2VkIGluIGFuIGluZGV4CiAgY29uc3RyYWludC4KLSBB ZGRlZCBwZ19jb25zdHJhaW50LmNvbnRlbXBvcmFsIHRvIHNheSB3aGV0aGVyIGEgY29uc3RyYWlu dCBpcyBhCiAgdGVtcG9yYWwgY29uc3RyYWludC4KLSBBZGRlZCBwZ19jb25zdHJhaW50LmNvbnBl cmlvZCB0byByZWNvcmQgdGhlIFBFUklPRCBvaWQgaWYgYSBQRVJJT0QgaXMKICB1c2VkLiBGb3Ig cmFuZ2UgY29sdW1ucyB3ZSBjYW4ganVzdCBpbmNsdWRlIHRoZSBjb2x1bW4gYXR0bnVtLCBsaWtl CiAgYW55IG90aGVyIGNvbHVtbiBhcHBlYXJpbmcgaW4gYSBjb25zdHJhaW50LgotIEFkZGVkIGRv Y3MgYW5kIHRlc3RzLgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLS0tCiBkb2Mvc3JjL3NnbWwv ZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwgIDM5ICsrLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9DYXRhbG9nLnBtICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFs b2cvaGVhcC5jICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgNTcgKysrLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19jb25zdHJhaW50LmMgICAgICAgICAgIHwgIDE1ICstCiBzcmMvYmFja2VuZC9jYXRhbG9n L3RvYXN0aW5nLmMgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgIDQxICsrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDE3ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 cmlnZ2VyLmMgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYyAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5j cy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3Mu YyAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAg ICAgICAgICAgICAgICAgICB8ICAzMiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxj bWQuYyAgICAgICAgICAgIHwgMjI4ICsrKysrKysrKysrKystCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAgNTUgKysrLQogc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwgIDI2ICsrCiBzcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAgMjIgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAzOSArKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmggICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJf cGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAgMjIgKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5j ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4 LmggICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25z dHJhaW50LmggICAgICAgICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0u aCAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o ICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCAg ICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAg ICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hl Y2sub3V0ICAgIHwgICAyICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMu b3V0ICAgICB8IDI4NiArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbCAgICAgfCAyOTUgKysrKysrKysrKysrKysrKysrCiAzMyBmaWxlcyBj aGFuZ2VkLCAxMTY5IGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNx bAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwu c2dtbAppbmRleCAxYjhmNTI0MTkxLi44YmM2MGViODQzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC0xMTgyLDYgKzExODIs MTIgQEAgQ1JFQVRFIFRBQkxFIGJpbGxpbmdfYWRkcmVzc2VzICgKICAgICBBcHBsaWNhdGlvbiBw ZXJpb2RzIGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0ZW1wb3JhbCBwcmltYXJ5IGFuZCBmb3JlaWdu IGtleXMuCiAgICAgQW55IHRhYmxlIHdpdGggYSB0ZW1wb3JhbCBwcmltYXJ5IGtleSBpcyBhIHRl bXBvcmFsIHRhYmxlIGFuZCBzdXBwb3J0cyB0ZW1wb3JhbCB1cGRhdGUgYW5kIGRlbGV0ZSBjb21t YW5kcy4KICAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVGVtcG9yYWwgcHJpbWFyeSBrZXlz IGVuZm9yY2UgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHJlZmVyZW50aWFsIGludGVncml0eSBjYWxs ZWQgdGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5LiBUaGV5IGhhdmUgdHdvIGtpbmRzIG9m IGVsZW1lbnQ6IGZpcnN0IG9uZSBvciBtb3JlIGNvbHVtbnMgdGhhdCBiZWhhdmUgYXMgaW4gb3Jk aW5hcnkgcHJpbWFyeSBrZXlzLCB1bmlxdWVseSBkZXRlcm1pbmlpbmcgYW4gZW50aXR5LAorICAg IGFuZCBzZWNvbmQgYSBwZXJpb2QgKG9yIHJhbmdlIGNvbHVtbikgdGhhdCBxdWFsaWZpZXMgd2hl biB0aGUgcm93IGFwcGxpZXMuIFNvIGEgdGVtcG9yYWwgcHJpbWFyeSBwZXJtaXRzIG11bHRpcGxl IHJvd3Mgd2l0aCBlcXVhbCB2YWx1ZXMgaW4gdGhlIG9yZGluYXJ5IGtleSBwYXJ0cywgYXMgbG9u ZyBhcyB0aG9zZSByb3dzIGRvbid0IGhhdmUgb3ZlcmxhcHBpbmcgcGVyaW9kcy4gRWFjaCByb3cg bWFrZXMgYSBzdGF0ZW1lbnQgYWJvdXQgdGhlIGVudGl0eSBpZGVudGlmaWVkIGJ5IHRoZSBvcmRp bmFyeSBrZXkgcGFydHMsIGJ1dCBhcHBseWluZyBvbmx5IHRvIHRoZSBzcGFuIGdpdmVuIGJ5IHRo ZSBwZXJpb2QuCisgICAgVGVtcG9yYWwgcHJpbWFyeSBrZXlzIGFyZSBlc3NlbnRpYWxseSA8bGlu ayBsaW5rZW5kPSJzcWwtY3JlYXRldGFibGUtZXhjbHVkZSI+ZXhjbHVzaW9uIGNvbnN0cmFpbnRz PC9saW5rPiB3aGVyZSB0aGUgZmlyc3Qga2V5IHBhcnRzIGFyZSBjb21wYXJlZCBmb3IgZXF1YWxp dHkgYW5kIHRoZSBsYXN0IHBhcnQgZm9yIG92ZXJsYXBzLgorICAgPC9wYXJhPgogICA8L3NlY3Qy PgogCiAgIDxzZWN0MiBpZD0iZGRsLXBlcmlvZHMtc3lzdGVtLXBlcmlvZHMiPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggNmZkM2RmYTlmNi4uYjViZjc2ODNlNyAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC04NSw4ICs4NSw4IEBAIFBFUklPRCBGT1IgeyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiB8IFNZ U1RFTV9UCiAKIFsgQ09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29u c3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gXQogeyBDSEVDSyAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBbIE5PIElOSEVSSVQgXSB8 Ci0gIFVOSVFVRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmlu ZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8Ci0gIFBSSU1BUlkgS0VZICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFyYW1ldGVyczwvcmVwbGFj ZWFibGU+IHwKKyAgVU5JUVVFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVt bl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBd ICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxh Y2VhYmxlPiB8CisgIFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVS TEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8 L3JlcGxhY2VhYmxlPiB8CiAgIEVYQ0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBXSVRIIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2Vh YmxlPiBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByZWRpY2F0ZTwv cmVwbGFjZWFibGU+ICkgXSB8CiAgIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBSRUZFUkVOQ0VT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4g WywgLi4uIF0gKSBdCiAgICAgWyBNQVRDSCBGVUxMIHwgTUFUQ0ggUEFSVElBTCB8IE1BVENIIFNJ TVBMRSBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQpAQCAtMTEzLDYgKzExMywxMSBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogPHBocmFzZT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZXhjbHVkZV9lbGVtZW50PC9yZXBsYWNlYWJsZT4gaW4gYW4gPGxpdGVyYWw+RVhDTFVERTwv bGl0ZXJhbD4gY29uc3RyYWludCBpczo8L3BocmFzZT4KIAogeyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiB8ICggPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIH0gWyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+b3BjbGFzczwvcmVwbGFjZWFibGU+IF0gWyBBU0MgfCBERVND IF0gWyBOVUxMUyB7IEZJUlNUIHwgTEFTVCB9IF0KKworPHBocmFzZT48cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBpbiBhIDxsaXRl cmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiwgPGxpdGVyYWw+VU5JUVVFPC9saXRlcmFsPiwgb3Ig PGxpdGVyYWw+Rk9SRUlHTiBLRVk8L2xpdGVyYWw+IGNvbnN0cmFpbnQgaXM6PC9waHJhc2U+CisK KzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9jb2x1bW5fbmFtZTwvcmVwbGFj ZWFibGU+IHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBs YWNlYWJsZT4KKwogPC9zeW5vcHNpcz4KIAogIDwvcmVmc3lub3BzaXNkaXY+CkBAIC05ODgsNyAr OTkzLDEwIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u dW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAKICAgICAgPHBhcmE+CiAgICAgICBB ZGRpbmcgYSB1bmlxdWUgY29uc3RyYWludCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgdW5p cXVlIGJ0cmVlCi0gICAgICBpbmRleCBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMg dXNlZCBpbiB0aGUgY29uc3RyYWludC4KKyAgICAgIGluZGV4IG9uIHRoZSBjb2x1bW4gb3IgZ3Jv dXAgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBjb25zdHJhaW50LiBCdXQgaWYKKyAgICAgIHRoZSBj b25zdHJhaW50IGluY2x1ZGVzIGEgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4g Y2xhdXNlLAorICAgICAgaXQgd2lsbCB1c2UgYSBHaVNUIGluZGV4IGFuZCBiZWhhdmUgbGlrZSBh IHRlbXBvcmFsIDxsaXRlcmFsPlBSSU1BUlkKKyAgICAgIEtFWTwvbGl0ZXJhbD46IHByZXZlbnRp bmcgZHVwbGljYXRlcyBvbmx5IGluIG92ZXJsYXBwaW5nIHRpbWUgcGVyaW9kcy4KICAgICAgPC9w YXJhPgogCiAgICAgIDxwYXJhPgpAQCAtMTAwNiw3ICsxMDE0LDggQEAgV0lUSCAoIE1PRFVMVVMg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KIAogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5QUklNQVJZ IEtFWTwvbGl0ZXJhbD4gKGNvbHVtbiBjb25zdHJhaW50KTwvdGVybT4KLSAgICA8dGVybT48bGl0 ZXJhbD5QUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICk8L2xpdGVyYWw+CisgICAgPHRlcm0+PGxpdGVy YWw+UFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQorICAgIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMg XSApPC9saXRlcmFsPgogICAgIDxvcHRpb25hbD4gPGxpdGVyYWw+SU5DTFVERSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0p PC9saXRlcmFsPiA8L29wdGlvbmFsPiAodGFibGUgY29uc3RyYWludCk8L3Rlcm0+CiAgICAgPGxp c3RpdGVtPgogICAgICA8cGFyYT4KQEAgLTEwNDAsOCArMTA0OSw4IEBAIFdJVEggKCBNT0RVTFVT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAKICAgICAgPHBhcmE+CiAgICAgICBBZGRpbmcgYSA8bGl0ZXJhbD5QUklNQVJZ IEtFWTwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGF1dG9tYXRpY2FsbHkKLSAgICAgIGNyZWF0 ZSBhIHVuaXF1ZSBidHJlZSBpbmRleCBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMg dXNlZCBpbiB0aGUKLSAgICAgIGNvbnN0cmFpbnQuCisgICAgICBjcmVhdGUgYSB1bmlxdWUgYnRy ZWUgaW5kZXggKG9yIEdpU1QgaWYgdGVtcG9yYWwpIG9uIHRoZSBjb2x1bW4gb3IgZ3JvdXAgb2YK KyAgICAgIGNvbHVtbnMgdXNlZCBpbiB0aGUgY29uc3RyYWludC4KICAgICAgPC9wYXJhPgogCiAg ICAgIDxwYXJhPgpAQCAtMTA1NCw2ICsxMDYzLDI0IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVN CiAgICAgICAoZS5nLiwgPGxpdGVyYWw+RFJPUCBDT0xVTU48L2xpdGVyYWw+KSBjYW4gY2F1c2Ug Y2FzY2FkZWQgY29uc3RyYWludCBhbmQKICAgICAgIGluZGV4IGRlbGV0aW9uLgogICAgICA8L3Bh cmE+CisKKyAgICAgPHBhcmE+CisgICAgICBBIDxsaXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFs PiB3aXRoIGEgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gb3B0aW9uCisgICAg ICBpcyBhIDxlbXBoYXNpcz50ZW1wb3JhbDwvZW1waGFzaXM+IHByaW1hcnkga2V5LgorICAgICAg VGhlIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IHZhbHVlCisgICAgICBtdXN0 IGJlIGEgcGVyaW9kIG9yIHJhbmdlIHR5cGUgYW5kIGlzIHVzZWQgdG8gY29uc3RyYWluIHRoZSBy ZWNvcmQncyBhcHBsaWNhYmlsaXR5CisgICAgICB0byBqdXN0IHRoYXQgaW50ZXJ2YWwgKHVzdWFs bHkgYSByYW5nZSBvZiBkYXRlcyBvciB0aW1lc3RhbXBzKS4KKyAgICAgIFRoZSBtYWluIHBhcnQg b2YgdGhlIHByaW1hcnkga2V5IG1heSBiZSByZXBlYXRlZCBpbiBvdGhlciByb3dzIG9mIHRoZSB0 YWJsZSwKKyAgICAgIGFzIGxvbmcgYXMgcmVjb3JkcyB3aXRoIHRoZSBzYW1lIGtleSBkb24ndCBv dmVybGFwIGluIHRoZQorICAgICAgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4g Y29sdW1uLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBBIHRlbXBvcmFsIDxs aXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiBpcyBlbmZvcmNlZCB3aXRoIGFuCisgICAgICA8 bGl0ZXJhbD5FWENMVURFPC9saXRlcmFsPiBjb25zdHJhaW50IHJhdGhlciB0aGFuIGEgPGxpdGVy YWw+VU5JUVVFPC9saXRlcmFsPgorICAgICAgY29uc3RyYWludCwgYmFja2VkIGJ5IGEgR2lTVCBp bmRleC4gWW91IG1heSBuZWVkIHRvIGluc3RhbGwgdGhlCisgICAgICA8eHJlZiBsaW5rZW5kPSJi dHJlZS1naXN0Ii8+IGV4dGVuc2lvbiB0byBjcmVhdGUgdGVtcG9yYWwgcHJpbWFyeSBrZXlzLgor ICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL0NhdGFsb2cucG0gYi9zcmMvYmFja2VuZC9jYXRh bG9nL0NhdGFsb2cucG0KaW5kZXggNmVlZjBiYzY4MC4uOTkyZWI0YjQxNSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9DYXRhbG9nLnBtCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv Q2F0YWxvZy5wbQpAQCAtMjY2LDYgKzI2Niw3IEBAIHN1YiBQYXJzZURhdGEKIAkjIFNjYW4gdGhl IGlucHV0IGZpbGUuCiAJd2hpbGUgKDwkaWZkPikKIAl7CisJCW5leHQgaWYgL14jLzsKIAkJbXkg JGhhc2hfcmVmOwogCiAJCWlmICgvey8pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L2hlYXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDU2NWU0Yzc2MTkuLjE1 YzE2NjkyNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCkBAIC0yNTU1LDYgKzI1NTUsOCBAQCBTdG9yZVJlbENo ZWNrKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY2NuYW1lLCBOb2RlICpleHByLAogCQkJCQkJ CSAgaXNfbG9jYWwsIC8qIGNvbmlzbG9jYWwgKi8KIAkJCQkJCQkgIGluaGNvdW50LCAvKiBjb25p bmhjb3VudCAqLwogCQkJCQkJCSAgaXNfbm9faW5oZXJpdCwJLyogY29ubm9pbmhlcml0ICovCisJ CQkJCQkJICBmYWxzZSwJLyogY29udGVtcG9yYWwgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQsCS8q IGNvbnBlcmlvZCAqLwogCQkJCQkJCSAgaXNfaW50ZXJuYWwpOyAvKiBpbnRlcm5hbGx5IGNvbnN0 cnVjdGVkPyAqLwogCiAJcGZyZWUoY2NiaW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDI2YmZhNzRj ZTcuLjU3YjM4NmJkNzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNs dWRlICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNz LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cv cGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCkBA IC0yMzMsMTMgKzIzNCwxNiBAQCBpbmRleF9jaGVja19wcmltYXJ5X2tleShSZWxhdGlvbiBoZWFw UmVsLAogCQlIZWFwVHVwbGUJYXR0dHVwbGU7CiAJCUZvcm1fcGdfYXR0cmlidXRlIGF0dGZvcm07 CiAKLQkJaWYgKGF0dG51bSA9PSAwKQorCQlpZiAoYXR0bnVtID09IDAgJiYgIShzdG10LT5pc3Rl bXBvcmFsICYmIGkgPiAwKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVycm1zZygicHJpbWFyeSBrZXlzIGNh bm5vdCBiZSBleHByZXNzaW9ucyIpKSk7CiAKLQkJLyogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5l dmVyIG51bGwsIHNvIG5vIG5lZWQgdG8gY2hlY2sgKi8KLQkJaWYgKGF0dG51bSA8IDApCisJCS8q CisJCSAqIFN5c3RlbSBhdHRyaWJ1dGVzIGFyZSBuZXZlciBudWxsLCBzbyBubyBuZWVkIHRvIGNo ZWNrLgorCQkgKiBBbHNvIHNraXAgZXhwcmVzc2lvbnMuCisJCSAqLworCQlpZiAoYXR0bnVtIDw9 IDApCiAJCQljb250aW51ZTsKIAogCQlhdHR0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMihBVFROVU0s CkBAIC01NDUsNiArNTQ5LDcgQEAgVXBkYXRlSW5kZXhSZWxhdGlvbihPaWQgaW5kZXhvaWQsCiAJ CQkJCWJvb2wgaXNyZWFkeSkKIHsKIAlpbnQydmVjdG9yICppbmRrZXk7CisJT2lkCQkJaW5kcGVy aW9kOwogCW9pZHZlY3RvciAgKmluZGNvbGxhdGlvbjsKIAlvaWR2ZWN0b3IgICppbmRjbGFzczsK IAlpbnQydmVjdG9yICppbmRvcHRpb247CkBAIC01NjMsNiArNTY4LDcgQEAgVXBkYXRlSW5kZXhS ZWxhdGlvbihPaWQgaW5kZXhvaWQsCiAJaW5ka2V5ID0gYnVpbGRpbnQydmVjdG9yKE5VTEwsIGlu ZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRycyk7CiAJZm9yIChpID0gMDsgaSA8IGluZGV4SW5mby0+ aWlfTnVtSW5kZXhBdHRyczsgaSsrKQogCQlpbmRrZXktPnZhbHVlc1tpXSA9IGluZGV4SW5mby0+ aWlfSW5kZXhBdHRyTnVtYmVyc1tpXTsKKwlpbmRwZXJpb2QgPSBpbmRleEluZm8tPmlpX1Blcmlv ZCA/ICgoUGVyaW9kICopIGluZGV4SW5mby0+aWlfUGVyaW9kKS0+b2lkIDogSW52YWxpZE9pZDsK IAlpbmRjb2xsYXRpb24gPSBidWlsZG9pZHZlY3Rvcihjb2xsYXRpb25PaWRzLCBpbmRleEluZm8t PmlpX051bUluZGV4S2V5QXR0cnMpOwogCWluZGNsYXNzID0gYnVpbGRvaWR2ZWN0b3IoY2xhc3NP aWRzLCBpbmRleEluZm8tPmlpX051bUluZGV4S2V5QXR0cnMpOwogCWluZG9wdGlvbiA9IGJ1aWxk aW50MnZlY3Rvcihjb2xvcHRpb25zLCBpbmRleEluZm8tPmlpX051bUluZGV4S2V5QXR0cnMpOwpA QCAtNjIyLDYgKzYyOCw3IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogCXZh bHVlc1tBbnVtX3BnX2luZGV4X2luZGlzbGl2ZSAtIDFdID0gQm9vbEdldERhdHVtKHRydWUpOwog CXZhbHVlc1tBbnVtX3BnX2luZGV4X2luZGlzcmVwbGlkZW50IC0gMV0gPSBCb29sR2V0RGF0dW0o ZmFsc2UpOwogCXZhbHVlc1tBbnVtX3BnX2luZGV4X2luZGtleSAtIDFdID0gUG9pbnRlckdldERh dHVtKGluZGtleSk7CisJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kcGVyaW9kIC0gMV0gPSBPYmpl Y3RJZEdldERhdHVtKGluZHBlcmlvZCk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kY29sbGF0 aW9uIC0gMV0gPSBQb2ludGVyR2V0RGF0dW0oaW5kY29sbGF0aW9uKTsKIAl2YWx1ZXNbQW51bV9w Z19pbmRleF9pbmRjbGFzcyAtIDFdID0gUG9pbnRlckdldERhdHVtKGluZGNsYXNzKTsKIAl2YWx1 ZXNbQW51bV9wZ19pbmRleF9pbmRvcHRpb24gLSAxXSA9IFBvaW50ZXJHZXREYXR1bShpbmRvcHRp b24pOwpAQCAtMTI2Miw2ICsxMjY5LDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5 KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJRGF0dW0JCWluZGNsYXNz RGF0dW0sCiAJCQkJY29sT3B0aW9uRGF0dW0sCiAJCQkJb3B0aW9uRGF0dW07CisJT2lkCQkJcGVy aW9kaWQ7CiAJb2lkdmVjdG9yICAqaW5kY2xhc3M7CiAJaW50MnZlY3RvciAqaW5kY29sb3B0aW9u czsKIAlib29sCQlpc251bGw7CkBAIC0xMjk3LDYgKzEzMDUsOSBAQCBpbmRleF9jb25jdXJyZW50 bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAlB c3NlcnQoIWlzbnVsbCk7CiAJaW5kY29sb3B0aW9ucyA9IChpbnQydmVjdG9yICopIERhdHVtR2V0 UG9pbnRlcihjb2xPcHRpb25EYXR1bSk7CiAKKwkvKiBHZXQgdGhlIHBlcmlvZCAqLworCXBlcmlv ZGlkID0gb2xkSW5mby0+aWlfUGVyaW9kID8gKChQZXJpb2QgKikgb2xkSW5mby0+aWlfUGVyaW9k KS0+b2lkIDogSW52YWxpZE9pZDsKKwogCS8qIEZldGNoIG9wdGlvbnMgb2YgaW5kZXggaWYgYW55 ICovCiAJY2xhc3NUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIG9sZEluZGV4SWQpOwog CWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFzc1R1cGxlKSkKQEAgLTEzNDgsNiArMTM1OSw3IEBA IGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9p ZCBvbGRJbmRleElkLAogCQkJCQkJCWluZGV4RXhwcnMsCiAJCQkJCQkJaW5kZXhQcmVkcywKIAkJ CQkJCQlvbGRJbmZvLT5paV9VbmlxdWUsCisJCQkJCQkJb2xkSW5mby0+aWlfVGVtcG9yYWwsCiAJ CQkJCQkJZmFsc2UsCS8qIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyAqLwogCQkJCQkJCXRydWUpOwog CkBAIC0xMzY1LDYgKzEzNzcsMTYgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCW5ld0luZm8tPmlpX0luZGV4 QXR0ck51bWJlcnNbaV0gPSBvbGRJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldOwogCX0KIAor CS8qIFNldCB0aGUgcGVyaW9kICovCisJaWYgKHBlcmlvZGlkID09IEludmFsaWRPaWQpCisJCW5l d0luZm8tPmlpX1BlcmlvZCA9IE5VTEw7CisJZWxzZQorCXsKKwkJUGVyaW9kICpwID0gbWFrZU5v ZGUoUGVyaW9kKTsKKwkJcC0+b2lkID0gcGVyaW9kaWQ7CisJCW5ld0luZm8tPmlpX1BlcmlvZCA9 IChOb2RlICopIHA7CisJfQorCiAJLyoKIAkgKiBOb3cgY3JlYXRlIHRoZSBuZXcgaW5kZXguCiAJ ICoKQEAgLTE4NjQsNiArMTg4Niw3IEBAIGluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVhZChPaWQg aGVhcElkLCBPaWQgaW5kZXhJZCkKICAqCQlJTkRFWF9DT05TVFJfQ1JFQVRFX1VQREFURV9JTkRF WDogdXBkYXRlIHRoZSBwZ19pbmRleCByb3cKICAqCQlJTkRFWF9DT05TVFJfQ1JFQVRFX1JFTU9W RV9PTERfREVQUzogcmVtb3ZlIGV4aXN0aW5nIGRlcGVuZGVuY2llcwogICoJCQlvZiBpbmRleCBv biB0YWJsZSdzIGNvbHVtbnMKKyAqCQlJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBPUkFMOiBjb25z dHJhaW50IGlzIGZvciBhIHRlbXBvcmFsIHByaW1hcnkga2V5CiAgKiBhbGxvd19zeXN0ZW1fdGFi bGVfbW9kczogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZwogICogaXNfaW50ZXJu YWw6IGluZGV4IGlzIGNvbnN0cnVjdGVkIGR1ZSB0byBpbnRlcm5hbCBwcm9jZXNzCiAgKi8KQEAg LTE4ODIsMTYgKzE5MDUsMTkgQEAgaW5kZXhfY29uc3RyYWludF9jcmVhdGUoUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCU9iamVjdEFkZHJlc3MgbXlzZWxmLAogCQkJCWlkeGFkZHI7CiAJT2lkCQkJ Y29uT2lkOworCU9pZAkJCXBlcmlvZGlkOwogCWJvb2wJCWRlZmVycmFibGU7CiAJYm9vbAkJaW5p dGRlZmVycmVkOwogCWJvb2wJCW1hcmtfYXNfcHJpbWFyeTsKIAlib29sCQlpc2xvY2FsOwogCWJv b2wJCW5vaW5oZXJpdDsKKwlib29sCQlpc190ZW1wb3JhbDsKIAlpbnQJCQlpbmhjb3VudDsKIAog CWRlZmVycmFibGUgPSAoY29uc3RyX2ZsYWdzICYgSU5ERVhfQ09OU1RSX0NSRUFURV9ERUZFUlJB QkxFKSAhPSAwOwogCWluaXRkZWZlcnJlZCA9IChjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJf Q1JFQVRFX0lOSVRfREVGRVJSRUQpICE9IDA7CiAJbWFya19hc19wcmltYXJ5ID0gKGNvbnN0cl9m bGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfTUFSS19BU19QUklNQVJZKSAhPSAwOworCWlzX3Rl bXBvcmFsID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfVEVNUE9SQUwpICE9 IDA7CiAKIAkvKiBjb25zdHJhaW50IGNyZWF0aW9uIHN1cHBvcnQgZG9lc24ndCB3b3JrIHdoaWxl IGJvb3RzdHJhcHBpbmcgKi8KIAlBc3NlcnQoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7 CkBAIC0xOTA2LDcgKzE5MzIsOCBAQCBpbmRleF9jb25zdHJhaW50X2NyZWF0ZShSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAKIAkvKiBwcmltYXJ5L3VuaXF1ZSBjb25zdHJhaW50cyBzaG91bGRuJ3Qg aGF2ZSBhbnkgZXhwcmVzc2lvbnMgKi8KIAlpZiAoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyAm JgotCQljb25zdHJhaW50VHlwZSAhPSBDT05TVFJBSU5UX0VYQ0xVU0lPTikKKwkJY29uc3RyYWlu dFR5cGUgIT0gQ09OU1RSQUlOVF9FWENMVVNJT04gJiYKKwkJIWluZGV4SW5mby0+aWlfVGVtcG9y YWwpCiAJCWVsb2coRVJST1IsICJjb25zdHJhaW50cyBjYW5ub3QgaGF2ZSBpbmRleCBleHByZXNz aW9ucyIpOwogCiAJLyoKQEAgLTE5MzUsNiArMTk2MiwxMSBAQCBpbmRleF9jb25zdHJhaW50X2Ny ZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCW5vaW5oZXJpdCA9IHRydWU7CiAJfQogCisJ aWYgKGluZGV4SW5mby0+aWlfUGVyaW9kICE9IE5VTEwpCisJCXBlcmlvZGlkID0gKChQZXJpb2Qg KilpbmRleEluZm8tPmlpX1BlcmlvZCktPm9pZDsKKwllbHNlCisJCXBlcmlvZGlkID0gSW52YWxp ZE9pZDsKKwogCS8qCiAJICogQ29uc3RydWN0IGEgcGdfY29uc3RyYWludCBlbnRyeS4KIAkgKi8K QEAgLTE5NjYsNiArMTk5OCw4IEBAIGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJICAgaXNsb2NhbCwKIAkJCQkJCQkJICAgaW5oY291bnQsCiAJ CQkJCQkJCSAgIG5vaW5oZXJpdCwKKwkJCQkJCQkJICAgaXNfdGVtcG9yYWwsCS8qIGNvbnRlbXBv cmFsICovCisJCQkJCQkJCSAgIHBlcmlvZGlkLCAvKiBjb25wZXJpb2QgKi8KIAkJCQkJCQkJICAg aXNfaW50ZXJuYWwpOwogCiAJLyoKQEAgLTIzOTgsNiArMjQzMiw3IEBAIEJ1aWxkSW5kZXhJbmZv KFJlbGF0aW9uIGluZGV4KQogCQkJCQkgICBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoaW5k ZXgpLAogCQkJCQkgICBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4KSwKIAkJCQkJICAg aW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlLAorCQkJCQkgICBmYWxzZSwKIAkJCQkJICAgaW5kZXhT dHJ1Y3QtPmluZGlzcmVhZHksCiAJCQkJCSAgIGZhbHNlKTsKIApAQCAtMjQwNSw2ICsyNDQwLDE2 IEBAIEJ1aWxkSW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCWZvciAoaSA9IDA7IGkgPCBudW1B dHRzOyBpKyspCiAJCWlpLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldID0gaW5kZXhTdHJ1Y3QtPmlu ZGtleS52YWx1ZXNbaV07CiAKKwkvKiBzZXQgdGhlIHBlcmlvZCAqLworCWlmIChpbmRleFN0cnVj dC0+aW5kcGVyaW9kID09IEludmFsaWRPaWQpCisJCWlpLT5paV9QZXJpb2QgPSBOVUxMOworCWVs c2UKKwl7CisJCVBlcmlvZCAqcCA9IG1ha2VOb2RlKFBlcmlvZCk7CisJCXAtPm9pZCA9IGluZGV4 U3RydWN0LT5pbmRwZXJpb2Q7CisJCWlpLT5paV9QZXJpb2QgPSAoTm9kZSAqKSBwOworCX0KKwog CS8qIGZldGNoIGV4Y2x1c2lvbiBjb25zdHJhaW50IGluZm8gaWYgYW55ICovCiAJaWYgKGluZGV4 U3RydWN0LT5pbmRpc2V4Y2x1c2lvbikKIAl7CkBAIC0yNDU3LDYgKzI1MDIsNyBAQCBCdWlsZER1 bW15SW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCQkJCQkgICBSZWxhdGlvbkdldER1bW15SW5k ZXhFeHByZXNzaW9ucyhpbmRleCksCiAJCQkJCSAgIE5JTCwKIAkJCQkJICAgaW5kZXhTdHJ1Y3Qt PmluZGlzdW5pcXVlLAorCQkJCQkgICBmYWxzZSwKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlz cmVhZHksCiAJCQkJCSAgIGZhbHNlKTsKIApAQCAtMjQ2NCw2ICsyNTEwLDkgQEAgQnVpbGREdW1t eUluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAlmb3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsr KQogCQlpaS0+aWlfSW5kZXhBdHRyTnVtYmVyc1tpXSA9IGluZGV4U3RydWN0LT5pbmRrZXkudmFs dWVzW2ldOwogCisJLyogbm8gbmVlZCBmb3IgYSBwZXJpb2QgKi8KKwlpaS0+aWlfUGVyaW9kID0g TlVMTDsKKwogCS8qIFdlIGlnbm9yZSB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgaWYgYW55ICov CiAKIAlyZXR1cm4gaWk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0 cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCmluZGV4IGE0ZTg5 MDAyMGYuLjc5MjdmYmRlODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29u c3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC0y NSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3MuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9y LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5k cy90YWJsZWNtZHMuaCIKQEAgLTc1LDYgKzc2LDggQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNv bnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCQkJCQkgIGJvb2wgY29uSXNMb2NhbCwKIAkJCQkJ ICBpbnQgY29uSW5oQ291bnQsCiAJCQkJCSAgYm9vbCBjb25Ob0luaGVyaXQsCisJCQkJCSAgYm9v bCBjb25UZW1wb3JhbCwKKwkJCQkJICBPaWQgcGVyaW9kLAogCQkJCQkgIGJvb2wgaXNfaW50ZXJu YWwpCiB7CiAJUmVsYXRpb24JY29uRGVzYzsKQEAgLTE4NSw2ICsxODgsOCBAQCBDcmVhdGVDb25z dHJhaW50RW50cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJdmFsdWVzW0FudW1fcGdf Y29uc3RyYWludF9jb25pc2xvY2FsIC0gMV0gPSBCb29sR2V0RGF0dW0oY29uSXNMb2NhbCk7CiAJ dmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25pbmhjb3VudCAtIDFdID0gSW50MzJHZXREYXR1 bShjb25JbmhDb3VudCk7CiAJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25ub2luaGVyaXQg LSAxXSA9IEJvb2xHZXREYXR1bShjb25Ob0luaGVyaXQpOworCXZhbHVlc1tBbnVtX3BnX2NvbnN0 cmFpbnRfY29udGVtcG9yYWwgLSAxXSA9IEJvb2xHZXREYXR1bShjb25UZW1wb3JhbCk7CisJdmFs dWVzW0FudW1fcGdfY29uc3RyYWludF9jb25wZXJpb2QgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0o cGVyaW9kKTsKIAogCWlmIChjb25rZXlBcnJheSkKIAkJdmFsdWVzW0FudW1fcGdfY29uc3RyYWlu dF9jb25rZXkgLSAxXSA9IFBvaW50ZXJHZXREYXR1bShjb25rZXlBcnJheSk7CkBAIC0yMzYsNyAr MjQxLDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1l LAogCXsKIAkJLyoKIAkJICogUmVnaXN0ZXIgYXV0byBkZXBlbmRlbmN5IGZyb20gY29uc3RyYWlu dCB0byBvd25pbmcgcmVsYXRpb24sIG9yIHRvCi0JCSAqIHNwZWNpZmljIGNvbHVtbihzKSBpZiBh bnkgYXJlIG1lbnRpb25lZC4KKwkJICogc3BlY2lmaWMgY29sdW1uKHMpIGFuZCBwZXJpb2QgaWYg YW55IGFyZSBtZW50aW9uZWQuCiAJCSAqLwogCQlPYmplY3RBZGRyZXNzIHJlbG9iamVjdDsKIApA QCAtMjU0LDYgKzI1OSwxNCBAQCBDcmVhdGVDb25zdHJhaW50RW50cnkoY29uc3QgY2hhciAqY29u c3RyYWludE5hbWUsCiAJCQlPYmplY3RBZGRyZXNzU2V0KHJlbG9iamVjdCwgUmVsYXRpb25SZWxh dGlvbklkLCByZWxJZCk7CiAJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJnJlbG9iamVjdCwg YWRkcnNfYXV0byk7CiAJCX0KKworCQlpZiAoT2lkSXNWYWxpZChwZXJpb2QpKQorCQl7CisJCQlP YmplY3RBZGRyZXNzIHBlcmlvZG9iamVjdDsKKworCQkJT2JqZWN0QWRkcmVzc1NldChwZXJpb2Rv YmplY3QsIFBlcmlvZFJlbGF0aW9uSWQsIHBlcmlvZCk7CisJCQlhZGRfZXhhY3Rfb2JqZWN0X2Fk ZHJlc3MoJnBlcmlvZG9iamVjdCwgYWRkcnNfYXV0byk7CisJCX0KIAl9CiAKIAlpZiAoT2lkSXNW YWxpZChkb21haW5JZCkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5n LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggMGRiOTBjMjAxMS4uZDZk NmZjZDUyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMjkyLDYgKzI5Miw3IEBAIGNyZWF0 ZV90b2FzdF90YWJsZShSZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhP aWQsCiAJaW5kZXhJbmZvLT5paV9OdW1JbmRleEtleUF0dHJzID0gMjsKIAlpbmRleEluZm8tPmlp X0luZGV4QXR0ck51bWJlcnNbMF0gPSAxOwogCWluZGV4SW5mby0+aWlfSW5kZXhBdHRyTnVtYmVy c1sxXSA9IDI7CisJaW5kZXhJbmZvLT5paV9QZXJpb2QgPSBOVUxMOwogCWluZGV4SW5mby0+aWlf RXhwcmVzc2lvbnMgPSBOSUw7CiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklM OwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlID0gTklMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwppbmRleCBjMTRjYTI3YzVlLi42NzAwMjQ3NjJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwpAQCAtODEsNiArODEsOSBAQCBzdGF0aWMgdm9pZCBDb21wdXRlSW5kZXhBdHRycyhJbmRleElu Zm8gKmluZGV4SW5mbywKIAkJCQkJCQkgIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsIE9p ZCBhY2Nlc3NNZXRob2RJZCwKIAkJCQkJCQkgIGJvb2wgYW1jYW5vcmRlciwKIAkJCQkJCQkgIGJv b2wgaXNjb25zdHJhaW50KTsKK3N0YXRpYyB2b2lkIENvbXB1dGVJbmRleFBlcmlvZChJbmRleElu Zm8gKmluZGV4SW5mbywKKwkJCQkJCQkgICBPaWQgcmVsSWQsCisJCQkJCQkJICAgY29uc3QgY2hh ciAqcGVyaW9kTmFtZSk7CiBzdGF0aWMgY2hhciAqQ2hvb3NlSW5kZXhOYW1lKGNvbnN0IGNoYXIg KnRhYm5hbWUsIE9pZCBuYW1lc3BhY2VJZCwKIAkJCQkJCQkgTGlzdCAqY29sbmFtZXMsIExpc3Qg KmV4Y2x1c2lvbk9wTmFtZXMsCiAJCQkJCQkJIGJvb2wgcHJpbWFyeSwgYm9vbCBpc2NvbnN0cmFp bnQpOwpAQCAtMTY0LDcgKzE2Nyw4IEBAIGJvb2wKIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBv bGRJZCwKIAkJCQkJIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsCiAJCQkJCSBMaXN0ICph dHRyaWJ1dGVMaXN0LAotCQkJCQkgTGlzdCAqZXhjbHVzaW9uT3BOYW1lcykKKwkJCQkJIExpc3Qg KmV4Y2x1c2lvbk9wTmFtZXMsCisJCQkJCSBjb25zdCBjaGFyICppbmRleFBlcmlvZE5hbWUpCiB7 CiAJYm9vbAkJaXNjb25zdHJhaW50OwogCU9pZAkJICAgKnR5cGVPYmplY3RJZDsKQEAgLTE4Myw2 ICsxODcsOCBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJaW50CQkJb2xkX25h dHRzOwogCWJvb2wJCWlzbnVsbDsKIAlib29sCQlyZXQgPSB0cnVlOworCU9pZAkJCW9sZF9wZXJp b2RpZDsKKwlPaWQJCQluZXdfcGVyaW9kaWQ7CiAJb2lkdmVjdG9yICAqb2xkX2luZGNsYXNzOwog CW9pZHZlY3RvciAgKm9sZF9pbmRjb2xsYXRpb247CiAJUmVsYXRpb24JaXJlbDsKQEAgLTIyNiw3 ICsyMzIsNyBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJICogaWlfTnVtSW5k ZXhLZXlBdHRycyB3aXRoIHNhbWUgdmFsdWUuCiAJICovCiAJaW5kZXhJbmZvID0gbWFrZUluZGV4 SW5mbyhudW1iZXJPZkF0dHJpYnV0ZXMsIG51bWJlck9mQXR0cmlidXRlcywKLQkJCQkJCQkgIGFj Y2Vzc01ldGhvZElkLCBOSUwsIE5JTCwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisJCQkJCQkJICBh Y2Nlc3NNZXRob2RJZCwgTklMLCBOSUwsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKIAl0 eXBlT2JqZWN0SWQgPSAoT2lkICopIHBhbGxvYyhudW1iZXJPZkF0dHJpYnV0ZXMgKiBzaXplb2Yo T2lkKSk7CiAJY29sbGF0aW9uT2JqZWN0SWQgPSAoT2lkICopIHBhbGxvYyhudW1iZXJPZkF0dHJp YnV0ZXMgKiBzaXplb2YoT2lkKSk7CiAJY2xhc3NPYmplY3RJZCA9IChPaWQgKikgcGFsbG9jKG51 bWJlck9mQXR0cmlidXRlcyAqIHNpemVvZihPaWQpKTsKQEAgLTIzOCw2ICsyNDQsNyBAQCBDaGVj a0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSAgYWNjZXNzTWV0aG9kTmFtZSwgYWNj ZXNzTWV0aG9kSWQsCiAJCQkJCSAgYW1jYW5vcmRlciwgaXNjb25zdHJhaW50KTsKIAorCUNvbXB1 dGVJbmRleFBlcmlvZChpbmRleEluZm8sIHJlbGF0aW9uSWQsIGluZGV4UGVyaW9kTmFtZSk7CiAK IAkvKiBHZXQgdGhlIHNvb24tb2Jzb2xldGUgcGdfaW5kZXggdHVwbGUuICovCiAJdHVwbGUgPSBT ZWFyY2hTeXNDYWNoZTEoSU5ERVhSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShvbGRJZCkpOwpAQCAt MjU3LDYgKzI2NCwxMiBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCXJldHVy biBmYWxzZTsKIAl9CiAKKwkvKiBUaGUgdHdvIGluZGV4ZXMgc2hvdWxkIGhhdmUgdGhlIHNhbWUg cGVyaW9kLiAqLworCW9sZF9wZXJpb2RpZCA9IGluZGV4Rm9ybS0+aW5kcGVyaW9kOworCW5ld19w ZXJpb2RpZCA9IGluZGV4SW5mby0+aWlfUGVyaW9kID8gKChQZXJpb2QgKikgaW5kZXhJbmZvLT5p aV9QZXJpb2QpLT5vaWQgOiBJbnZhbGlkT2lkOworCWlmIChvbGRfcGVyaW9kaWQgIT0gbmV3X3Bl cmlvZGlkKQorCQlyZXR1cm4gZmFsc2U7CisKIAkvKiBBbnkgY2hhbmdlIGluIG9wZXJhdG9yIGNs YXNzIG9yIGNvbGxhdGlvbiBicmVha3MgY29tcGF0aWJpbGl0eS4gKi8KIAlvbGRfbmF0dHMgPSBp bmRleEZvcm0tPmluZG5rZXlhdHRzOwogCUFzc2VydChvbGRfbmF0dHMgPT0gbnVtYmVyT2ZBdHRy aWJ1dGVzKTsKQEAgLTUyNSw2ICs1MzgsNyBAQCBEZWZpbmVJbmRleChPaWQgcmVsYXRpb25JZCwK IAlPaWQJCQl0YWJsZXNwYWNlSWQ7CiAJT2lkCQkJY3JlYXRlZENvbnN0cmFpbnRJZCA9IEludmFs aWRPaWQ7CiAJTGlzdAkgICAqaW5kZXhDb2xOYW1lczsKKwljaGFyCSAgICppbmRleFBlcmlvZE5h bWU7CiAJTGlzdAkgICAqYWxsSW5kZXhQYXJhbXM7CiAJUmVsYXRpb24JcmVsOwogCUhlYXBUdXBs ZQl0dXBsZTsKQEAgLTc3MSw2ICs3ODUsMTEgQEAgRGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQs CiAJICovCiAJaW5kZXhDb2xOYW1lcyA9IENob29zZUluZGV4Q29sdW1uTmFtZXMoYWxsSW5kZXhQ YXJhbXMpOwogCisJLyoKKwkgKiBDaG9vc2UgdGhlIGluZGV4IHBlcmlvZCBuYW1lLgorCSAqLwor CWluZGV4UGVyaW9kTmFtZSA9IHN0bXQtPnBlcmlvZCA/IHN0bXQtPnBlcmlvZC0+cGVyaW9kbmFt ZSA6IE5VTEw7CisKIAkvKgogCSAqIFNlbGVjdCBuYW1lIGZvciBpbmRleCBpZiBjYWxsZXIgZGlk bid0IHNwZWNpZnkKIAkgKi8KQEAgLTg2Nyw2ICs4ODYsNyBAQCBEZWZpbmVJbmRleChPaWQgcmVs YXRpb25JZCwKIAkJCQkJCQkgIE5JTCwJLyogZXhwcmVzc2lvbnMsIE5JTCBmb3Igbm93ICovCiAJ CQkJCQkJICBtYWtlX2FuZHNfaW1wbGljaXQoKEV4cHIgKikgc3RtdC0+d2hlcmVDbGF1c2UpLAog CQkJCQkJCSAgc3RtdC0+dW5pcXVlLAorCQkJCQkJCSAgc3RtdC0+aXN0ZW1wb3JhbCwKIAkJCQkJ CQkgICFjb25jdXJyZW50LAogCQkJCQkJCSAgY29uY3VycmVudCk7CiAKQEAgLTg4MSw2ICs5MDEs OCBAQCBEZWZpbmVJbmRleChPaWQgcmVsYXRpb25JZCwKIAkJCQkJICBhY2Nlc3NNZXRob2ROYW1l LCBhY2Nlc3NNZXRob2RJZCwKIAkJCQkJICBhbWNhbm9yZGVyLCBzdG10LT5pc2NvbnN0cmFpbnQp OwogCisJQ29tcHV0ZUluZGV4UGVyaW9kKGluZGV4SW5mbywgcmVsYXRpb25JZCwgaW5kZXhQZXJp b2ROYW1lKTsKKwogCS8qCiAJICogRXh0cmEgY2hlY2tzIHdoZW4gY3JlYXRpbmcgYSBQUklNQVJZ IEtFWSBpbmRleC4KIAkgKi8KQEAgLTExMjMsNiArMTE0NSw4IEBAIERlZmluZUluZGV4KE9pZCBy ZWxhdGlvbklkLAogCQljb25zdHJfZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFURV9ERUZFUlJB QkxFOwogCWlmIChzdG10LT5pbml0ZGVmZXJyZWQpCiAJCWNvbnN0cl9mbGFncyB8PSBJTkRFWF9D T05TVFJfQ1JFQVRFX0lOSVRfREVGRVJSRUQ7CisJaWYgKHN0bXQtPmlzdGVtcG9yYWwpCisJCWNv bnN0cl9mbGFncyB8PSBJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBPUkFMOwogCiAJaW5kZXhSZWxh dGlvbklkID0KIAkJaW5kZXhfY3JlYXRlKHJlbCwgaW5kZXhSZWxhdGlvbk5hbWUsIGluZGV4UmVs YXRpb25JZCwgcGFyZW50SW5kZXhJZCwKQEAgLTE5OTQsNiArMjAxOCwxOSBAQCBDb21wdXRlSW5k ZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAl9CiB9CiAKK3N0YXRpYyB2b2lkCitDb21w dXRlSW5kZXhQZXJpb2QoSW5kZXhJbmZvICppbmRleEluZm8sIE9pZCByZWxJZCwgY29uc3QgY2hh ciAqcGVyaW9kTmFtZSkKK3sKKwlpZiAocGVyaW9kTmFtZSA9PSBOVUxMKQorCQlpbmRleEluZm8t PmlpX1BlcmlvZCA9IE5VTEw7CisJZWxzZQorCXsKKwkJUGVyaW9kICpwID0gbWFrZU5vZGUoUGVy aW9kKTsKKwkJcC0+b2lkID0gZ2V0X3BlcmlvZF9vaWQocmVsSWQsIHBlcmlvZE5hbWUsIHRydWUp OworCQlpbmRleEluZm8tPmlpX1BlcmlvZCA9IChOb2RlICopIHA7CisJfQorfQorCiAvKgogICog UmVzb2x2ZSBwb3NzaWJseS1kZWZhdWx0ZWQgb3BlcmF0b3IgY2xhc3Mgc3BlY2lmaWNhdGlvbgog ICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggM2I0ZDk5ZTJkOC4uMTBjNWRkMGMyOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTIwNSw2ICsyMDUsNyBAQCB0eXBlZGVmIHN0 cnVjdCBOZXdDb25zdHJhaW50CiAJT2lkCQkJcmVmcmVsaWQ7CQkvKiBQSyByZWwsIGlmIEZPUkVJ R04gKi8KIAlPaWQJCQlyZWZpbmRpZDsJCS8qIE9JRCBvZiBQSydzIGluZGV4LCBpZiBGT1JFSUdO ICovCiAJT2lkCQkJY29uaWQ7CQkJLyogT0lEIG9mIHBnX2NvbnN0cmFpbnQgZW50cnksIGlmIEZP UkVJR04gKi8KKwlib29sCQljb250ZW1wb3JhbDsJLyogV2hldGhlciB0aGUgbmV3IGNvbnN0cmFp bnQgaXMgdGVtcG9yYWwgKi8KIAlOb2RlCSAgICpxdWFsOwkJCS8qIENoZWNrIGV4cHIgb3IgQ09O U1RSX0ZPUkVJR04gQ29uc3RyYWludCAqLwogCUV4cHJTdGF0ZSAgKnF1YWxzdGF0ZTsJCS8qIEV4 ZWN1dGlvbiBzdGF0ZSBmb3IgQ0hFQ0sgZXhwciAqLwogfSBOZXdDb25zdHJhaW50OwpAQCAtOTkx Niw2ICs5OTE3LDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25z dHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgY29uaXNsb2Nh bCwJLyogaXNsb2NhbCAqLwogCQkJCQkJCQkJICBjb25pbmhjb3VudCwJLyogaW5oY291bnQgKi8K IAkJCQkJCQkJCSAgY29ubm9pbmhlcml0LCAvKiBjb25Ob0luaGVyaXQgKi8KKwkJCQkJCQkJCSAg ZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCisJCQkJCQkJCQkgIEludmFsaWRPaWQsCiAJCQkJCQkJ CQkgIGZhbHNlKTsJLyogaXNfaW50ZXJuYWwgKi8KIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVz cywgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNvbnN0ck9pZCk7CkBAIC0xMDE4NCw2ICsxMDE4Nyw4 IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZr Y29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCSAg MSwKIAkJCQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25UZW1wb3JhbCAq LworCQkJCQkJCQkJICBJbnZhbGlkT2lkLAogCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkJCS8qCkBA IC0xMDU4Niw2ICsxMDU5MSw4IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBS ZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCQkJCQkJCSAgZmFsc2UsCS8q IGlzbG9jYWwgKi8KIAkJCQkJCQkJICAxLAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkgIGZhbHNl LAkvKiBjb25Ob0luaGVyaXQgKi8KKwkJCQkJCQkJICBmYWxzZSwJLyogY29uVGVtcG9yYWwgKi8K KwkJCQkJCQkJICBJbnZhbGlkT2lkLAogCQkJCQkJCQkgIHRydWUpOwogCiAJCS8qIFNldCB1cCBw YXJ0aXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGUgbmV3IGNvbnN0cmFpbnQgKi8KQEAgLTExMTE3 LDYgKzExMTI0LDcgQEAgQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHJlbCwgY2hhciAqY29uc3RyTmFtZSwKIAkJCW5ld2Nvbi0+cmVmcmVsaWQgPSBjb24t PmNvbmZyZWxpZDsKIAkJCW5ld2Nvbi0+cmVmaW5kaWQgPSBjb24tPmNvbmluZGlkOwogCQkJbmV3 Y29uLT5jb25pZCA9IGNvbi0+b2lkOworCQkJbmV3Y29uLT5jb250ZW1wb3JhbCA9IGNvbi0+Y29u dGVtcG9yYWw7CiAJCQluZXdjb24tPnF1YWwgPSAoTm9kZSAqKSBma2NvbnN0cmFpbnQ7CiAKIAkJ CS8qIEZpbmQgb3IgY3JlYXRlIHdvcmsgcXVldWUgZW50cnkgZm9yIHRoaXMgdGFibGUgKi8KQEAg LTExMjc1LDEwICsxMTI4MywxMiBAQCB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChPaWQgcmVsSWQs IExpc3QgKmNvbExpc3QsCiAgKgogICoJTG9vayB1cCB0aGUgbmFtZXMsIGF0dG51bXMsIGFuZCB0 eXBlcyBvZiB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcwogICoJZm9yIHRoZSBwa3JlbC4gIEFs c28gcmV0dXJuIHRoZSBpbmRleCBPSUQgYW5kIGluZGV4IG9wY2xhc3NlcyBvZiB0aGUKLSAqCWlu ZGV4IHN1cHBvcnRpbmcgdGhlIHByaW1hcnkga2V5LgorICoJaW5kZXggc3VwcG9ydGluZyB0aGUg cHJpbWFyeSBrZXkuICBJZiB0aGlzIGlzIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXksCisgKglhbHNv IHNldCB0aGUgV0lUSE9VVCBPVkVSTEFQUyBhdHRyaWJ1dGUgbmFtZSwgYXR0bnVtLCBhbmQgYXR0 dHlwaWQuCiAgKgogICoJQWxsIHBhcmFtZXRlcnMgZXhjZXB0IHBrcmVsIGFyZSBvdXRwdXQgcGFy YW1ldGVycy4gIEFsc28sIHRoZSBmdW5jdGlvbgotICoJcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1i ZXIgb2YgYXR0cmlidXRlcyBpbiB0aGUgcHJpbWFyeSBrZXkuCisgKglyZXR1cm4gdmFsdWUgaXMg dGhlIG51bWJlciBvZiBhdHRyaWJ1dGVzIGluIHRoZSBwcmltYXJ5IGtleSwKKyAqCW5vdCBpbmNs dWRpbmcgdGhlIFdJVEhPVVQgT1ZFUkxBUFMgaWYgYW55LgogICoKICAqCVVzZWQgd2hlbiB0aGUg Y29sdW1uIGxpc3QgaW4gdGhlIFJFRkVSRU5DRVMgc3BlY2lmaWNhdGlvbiBpcyBvbWl0dGVkLgog ICovCkBAIC0xMzUyOCw3ICsxMzUzOCw4IEBAIFRyeVJldXNlSW5kZXgoT2lkIG9sZElkLCBJbmRl eFN0bXQgKnN0bXQpCiAJaWYgKENoZWNrSW5kZXhDb21wYXRpYmxlKG9sZElkLAogCQkJCQkJCSBz dG10LT5hY2Nlc3NNZXRob2QsCiAJCQkJCQkJIHN0bXQtPmluZGV4UGFyYW1zLAotCQkJCQkJCSBz dG10LT5leGNsdWRlT3BOYW1lcykpCisJCQkJCQkJIHN0bXQtPmV4Y2x1ZGVPcE5hbWVzLAorCQkJ CQkJCSBzdG10LT5wZXJpb2QgPyBzdG10LT5wZXJpb2QtPnBlcmlvZG5hbWUgOiBOVUxMKSkKIAl7 CiAJCVJlbGF0aW9uCWlyZWwgPSBpbmRleF9vcGVuKG9sZElkLCBOb0xvY2spOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90cmlnZ2VyLmMKaW5kZXggZDg4OTBkMmM3NC4uMzEzYmE5Y2RmNiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Ry aWdnZXIuYwpAQCAtODM2LDYgKzgzNiw4IEBAIENyZWF0ZVRyaWdnZXJGaXJpbmdPbihDcmVhdGVU cmlnU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJCQkJCSAgdHJ1 ZSwgLyogaXNsb2NhbCAqLwogCQkJCQkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJ CQkJCSAgdHJ1ZSwgLyogbm9pbmhlcml0ICovCisJCQkJCQkJCQkJCSAgZmFsc2UsIC8qIGNvbnRl bXBvcmFsICovCisJCQkJCQkJCQkJCSAgSW52YWxpZE9pZCwgLyogY29ucGVyaW9kICovCiAJCQkJ CQkJCQkJCSAgaXNJbnRlcm5hbCk7CS8qIGlzX2ludGVybmFsICovCiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dHlwZWNtZHMuYwppbmRleCA2YmRiMWExNjYwLi40NTE0MzVlYjY5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5 cGVjbWRzLmMKQEAgLTM1NTMsNiArMzU1Myw4IEBAIGRvbWFpbkFkZENvbnN0cmFpbnQoT2lkIGRv bWFpbk9pZCwgT2lkIGRvbWFpbk5hbWVzcGFjZSwgT2lkIGJhc2VUeXBlT2lkLAogCQkJCQkJCSAg dHJ1ZSwgLyogaXMgbG9jYWwgKi8KIAkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJ ICBmYWxzZSwJLyogY29ubm9pbmhlcml0ICovCisJCQkJCQkJICBmYWxzZSwJLyogY29udGVtcG9y YWwgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQsIC8qIGNvbnBlcmlvZCAqLwogCQkJCQkJCSAgZmFs c2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCWlmIChjb25zdHJBZGRyKQogCQlPYmplY3RBZGRyZXNz U2V0KCpjb25zdHJBZGRyLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY2NvaWQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5 ZnVuY3MuYwppbmRleCBiZjhjYzUzOWFjLi43NTZlYmQzNWRlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3Mu YwpAQCAtMzA3OCw2ICszMDc4LDcgQEAgX2NvcHlDb25zdHJhaW50KGNvbnN0IENvbnN0cmFpbnQg KmZyb20pCiAJQ09QWV9TQ0FMQVJfRklFTEQoZmtfZGVsX2FjdGlvbik7CiAJQ09QWV9OT0RFX0ZJ RUxEKG9sZF9jb25wZmVxb3ApOwogCUNPUFlfU0NBTEFSX0ZJRUxEKG9sZF9wa3RhYmxlX29pZCk7 CisJQ09QWV9OT0RFX0ZJRUxEKHdpdGhvdXRfb3ZlcmxhcHMpOwogCUNPUFlfU0NBTEFSX0ZJRUxE KHNraXBfdmFsaWRhdGlvbik7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaW5pdGlhbGx5X3ZhbGlkKTsK IApAQCAtMzY3MCw2ICszNjcxLDcgQEAgX2NvcHlJbmRleFN0bXQoY29uc3QgSW5kZXhTdG10ICpm cm9tKQogCUNPUFlfU0NBTEFSX0ZJRUxEKHVuaXF1ZSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQocHJp bWFyeSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaXNjb25zdHJhaW50KTsKKwlDT1BZX1NDQUxBUl9G SUVMRChpc3RlbXBvcmFsKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChkZWZlcnJhYmxlKTsKIAlDT1BZ X1NDQUxBUl9GSUVMRChpbml0ZGVmZXJyZWQpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKHRyYW5zZm9y bWVkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXggMDFjMTEwY2QyZi4uZWQ5ZWQ2OTA2MSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTc0MSw3ICs3NDEsOCBAQCBtYWtlX2FuZHNfaW1wbGljaXQo RXhwciAqY2xhdXNlKQogICovCiBJbmRleEluZm8gKgogbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0 cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKLQkJCSAg TGlzdCAqcHJlZGljYXRlcywgYm9vbCB1bmlxdWUsIGJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJy ZW50KQorCQkJICBMaXN0ICpwcmVkaWNhdGVzLCBib29sIHVuaXF1ZSwgYm9vbCB0ZW1wb3JhbCwg Ym9vbCBpc3JlYWR5LAorCQkJICBib29sIGNvbmN1cnJlbnQpCiB7CiAJSW5kZXhJbmZvICAqbiA9 IG1ha2VOb2RlKEluZGV4SW5mbyk7CiAKQEAgLTc1MCw2ICs3NTEsNyBAQCBtYWtlSW5kZXhJbmZv KGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Np b25zLAogCUFzc2VydChuLT5paV9OdW1JbmRleEtleUF0dHJzICE9IDApOwogCUFzc2VydChuLT5p aV9OdW1JbmRleEtleUF0dHJzIDw9IG4tPmlpX051bUluZGV4QXR0cnMpOwogCW4tPmlpX1VuaXF1 ZSA9IHVuaXF1ZTsKKwluLT5paV9UZW1wb3JhbCA9IHRlbXBvcmFsOwogCW4tPmlpX1JlYWR5Rm9y SW5zZXJ0cyA9IGlzcmVhZHk7CiAJbi0+aWlfQ29uY3VycmVudCA9IGNvbmN1cnJlbnQ7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CmluZGV4IDcxOWYzNDM4NmUuLjA2ZDBkNGNlZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNDkz LDcgKzQ5Myw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JVGFibGVF bGVtZW50IFR5cGVkVGFibGVFbGVtZW50IENvbnN0cmFpbnRFbGVtIFRhYmxlRnVuY0VsZW1lbnQK ICV0eXBlIDxub2RlPgljb2x1bW5EZWYgY29sdW1uT3B0aW9ucwogJXR5cGUgPGRlZmVsdD4JZGVm X2VsZW0gcmVsb3B0aW9uX2VsZW0gb2xkX2FnZ3JfZWxlbSBvcGVyYXRvcl9kZWZfZWxlbQotJXR5 cGUgPG5vZGU+CWRlZl9hcmcgY29sdW1uRWxlbSB3aGVyZV9jbGF1c2Ugd2hlcmVfb3JfY3VycmVu dF9jbGF1c2UKKyV0eXBlIDxub2RlPglkZWZfYXJnIGNvbHVtbkVsZW0gd2l0aG91dE92ZXJsYXBz Q2xhdXNlCisJCQkJd2hlcmVfY2xhdXNlIHdoZXJlX29yX2N1cnJlbnRfY2xhdXNlCiAJCQkJYV9l eHByIGJfZXhwciBjX2V4cHIgQWV4cHJDb25zdCBpbmRpcmVjdGlvbl9lbCBvcHRfc2xpY2VfYm91 bmQKIAkJCQljb2x1bW5yZWYgaW5fZXhwciBoYXZpbmdfY2xhdXNlIGZ1bmNfdGFibGUgeG1sdGFi bGUgYXJyYXlfZXhwcgogCQkJCU9wdFdoZXJlQ2xhdXNlIG9wZXJhdG9yX2RlZl9hcmcKQEAgLTM2 MzYsNiArMzYzNyw3IEBAIENvbENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5jb250eXBlID0gQ09O U1RSX1BSSU1BUlk7CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCW4tPmtleXMgPSBOVUxM OworCQkJCQluLT53aXRob3V0X292ZXJsYXBzID0gTlVMTDsKIAkJCQkJbi0+b3B0aW9ucyA9ICQz OwogCQkJCQluLT5pbmRleG5hbWUgPSBOVUxMOwogCQkJCQluLT5pbmRleHNwYWNlID0gJDQ7CkBA IC0zODM2LDE4ICszODM4LDE5IEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5pbml0aWFsbHlf dmFsaWQgPSAhbi0+c2tpcF92YWxpZGF0aW9uOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9 Ci0JCQl8IFVOSVFVRSAnKCcgY29sdW1uTGlzdCAnKScgb3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5p dGlvbiBPcHRDb25zVGFibGVTcGFjZQorCQkJfCBVTklRVUUgJygnIGNvbHVtbkxpc3Qgd2l0aG91 dE92ZXJsYXBzQ2xhdXNlICcpJyBvcHRfY19pbmNsdWRlIG9wdF9kZWZpbml0aW9uIE9wdENvbnNU YWJsZVNwYWNlCiAJCQkJQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKIAkJCQl7CiAJCQkJCUNvbnN0 cmFpbnQgKm4gPSBtYWtlTm9kZShDb25zdHJhaW50KTsKIAkJCQkJbi0+Y29udHlwZSA9IENPTlNU Ul9VTklRVUU7CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCW4tPmtleXMgPSAkMzsKLQkJ CQkJbi0+aW5jbHVkaW5nID0gJDU7Ci0JCQkJCW4tPm9wdGlvbnMgPSAkNjsKKwkJCQkJbi0+d2l0 aG91dF9vdmVybGFwcyA9ICQ0OworCQkJCQluLT5pbmNsdWRpbmcgPSAkNjsKKwkJCQkJbi0+b3B0 aW9ucyA9ICQ3OwogCQkJCQluLT5pbmRleG5hbWUgPSBOVUxMOwotCQkJCQluLT5pbmRleHNwYWNl ID0gJDc7Ci0JCQkJCXByb2Nlc3NDQVNiaXRzKCQ4LCBAOCwgIlVOSVFVRSIsCisJCQkJCW4tPmlu ZGV4c3BhY2UgPSAkODsKKwkJCQkJcHJvY2Vzc0NBU2JpdHMoJDksIEA5LCAiVU5JUVVFIiwKIAkJ CQkJCQkJICAgJm4tPmRlZmVycmFibGUsICZuLT5pbml0ZGVmZXJyZWQsIE5VTEwsCiAJCQkJCQkJ CSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKiluOwpAQCAtMzg2NywxOCAr Mzg3MCwxOSBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJCQkJICAgTlVMTCwgeXlzY2FubmVyKTsK IAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBQUklNQVJZIEtFWSAnKCcgY29sdW1u TGlzdCAnKScgb3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQor CQkJfCBQUklNQVJZIEtFWSAnKCcgY29sdW1uTGlzdCB3aXRob3V0T3ZlcmxhcHNDbGF1c2UgJykn IG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0Q29uc1RhYmxlU3BhY2UKIAkJCQlDb25z dHJhaW50QXR0cmlidXRlU3BlYwogCQkJCXsKIAkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VOb2Rl KENvbnN0cmFpbnQpOwogCQkJCQluLT5jb250eXBlID0gQ09OU1RSX1BSSU1BUlk7CiAJCQkJCW4t PmxvY2F0aW9uID0gQDE7CiAJCQkJCW4tPmtleXMgPSAkNDsKLQkJCQkJbi0+aW5jbHVkaW5nID0g JDY7Ci0JCQkJCW4tPm9wdGlvbnMgPSAkNzsKKwkJCQkJbi0+d2l0aG91dF9vdmVybGFwcyA9ICQ1 OworCQkJCQluLT5pbmNsdWRpbmcgPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ4OwogCQkJCQlu LT5pbmRleG5hbWUgPSBOVUxMOwotCQkJCQluLT5pbmRleHNwYWNlID0gJDg7Ci0JCQkJCXByb2Nl c3NDQVNiaXRzKCQ5LCBAOSwgIlBSSU1BUlkgS0VZIiwKKwkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ5 OworCQkJCQlwcm9jZXNzQ0FTYml0cygkMTAsIEAxMCwgIlBSSU1BUlkgS0VZIiwKIAkJCQkJCQkJ ICAgJm4tPmRlZmVycmFibGUsICZuLT5pbml0ZGVmZXJyZWQsIE5VTEwsCiAJCQkJCQkJCSAgIE5V TEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKiluOwpAQCAtMzg4OSw2ICszODkzLDcg QEAgQ29uc3RyYWludEVsZW06CiAJCQkJCW4tPmNvbnR5cGUgPSBDT05TVFJfUFJJTUFSWTsKIAkJ CQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJbi0+a2V5cyA9IE5JTDsKKwkJCQkJbi0+d2l0aG91 dF9vdmVybGFwcyA9IE5VTEw7CiAJCQkJCW4tPmluY2x1ZGluZyA9IE5JTDsKIAkJCQkJbi0+b3B0 aW9ucyA9IE5JTDsKIAkJCQkJbi0+aW5kZXhuYW1lID0gJDM7CkBAIC0zOTUyLDYgKzM5NTcsMTEg QEAgY29sdW1uTGlzdDoKIAkJCXwgY29sdW1uTGlzdCAnLCcgY29sdW1uRWxlbQkJCQl7ICQkID0g bGFwcGVuZCgkMSwgJDMpOyB9CiAJCTsKIAord2l0aG91dE92ZXJsYXBzQ2xhdXNlOgorCQkJJywn IGNvbHVtbkVsZW0gV0lUSE9VVCBPVkVSTEFQUyB7ICQkID0gJDI7IH0KKwkJCXwgLypFTVBUWSov ICAgICAgICAgICAgICAgeyAkJCA9IE5VTEw7IH0KKwk7CisKIGNvbHVtbkVsZW06IENvbElkCiAJ CQkJewogCQkJCQkkJCA9IChOb2RlICopIG1ha2VTdHJpbmcoJDEpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV91dGlsY21kLmMKaW5kZXggYjhiNzNiMTRjZi4uODQ5ZGExNDE4MCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19j b25zdHJhaW50LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29tbWVudC5oIgpAQCAtMTI4LDYgKzEyOSw4 IEBAIHN0YXRpYyBMaXN0ICpnZXRfb3BjbGFzcyhPaWQgb3BjbGFzcywgT2lkIGFjdHVhbF9kYXRh dHlwZSk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnRzKENyZWF0ZVN0bXRD b250ZXh0ICpjeHQpOwogc3RhdGljIEluZGV4U3RtdCAqdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50 KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsCiAJCQkJCQkJCQkJICAgQ3JlYXRlU3RtdENvbnRleHQg KmN4dCk7CitzdGF0aWMgYm9vbCBmaW5kTmV3T3JPbGRDb2x1bW4oQ3JlYXRlU3RtdENvbnRleHQg KmN4dCwgY2hhciAqY29sbmFtZSwgY2hhciAqKnR5cG5hbWUsCisJCQkJCQkJICAgT2lkICp0eXBp ZCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1FeHRlbmRlZFN0YXRpc3RpY3MoQ3JlYXRlU3RtdENv bnRleHQgKmN4dCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1GS0NvbnN0cmFpbnRzKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCSAgIGJvb2wgc2tpcFZhbGlkYXRpb24sCkBAIC0xNjY4 LDYgKzE2NzEsNyBAQCBnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwg UmVsYXRpb24gc291cmNlX2lkeCwKIAlPaWQJCQlrZXljb2x0eXBlOwogCURhdHVtCQlkYXR1bTsK IAlib29sCQlpc251bGw7CisJUGVyaW9kCSAgICpwZXJpb2Q7CiAKIAlpZiAoY29uc3RyYWludE9p ZCkKIAkJKmNvbnN0cmFpbnRPaWQgPSBJbnZhbGlkT2lkOwpAQCAtMTcyMSwxNSArMTcyNSwxNiBA QCBnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwgUmVsYXRpb24gc291 cmNlX2lkeCwKIAlpbmRleC0+b2xkRmlyc3RSZWxmaWxlbm9kZVN1YmlkID0gSW52YWxpZFN1YlRy YW5zYWN0aW9uSWQ7CiAJaW5kZXgtPnVuaXF1ZSA9IGlkeHJlYy0+aW5kaXN1bmlxdWU7CiAJaW5k ZXgtPnByaW1hcnkgPSBpZHhyZWMtPmluZGlzcHJpbWFyeTsKKwlpbmRleC0+aXN0ZW1wb3JhbCA9 IGlkeHJlYy0+aW5kaXNwcmltYXJ5ICYmIGlkeHJlYy0+aW5kaXNleGNsdXNpb247CiAJaW5kZXgt PnRyYW5zZm9ybWVkID0gdHJ1ZTsJLyogZG9uJ3QgbmVlZCB0cmFuc2Zvcm1JbmRleFN0bXQgKi8K IAlpbmRleC0+Y29uY3VycmVudCA9IGZhbHNlOwogCWluZGV4LT5pZl9ub3RfZXhpc3RzID0gZmFs c2U7CiAJaW5kZXgtPnJlc2V0X2RlZmF1bHRfdGJsc3BjID0gZmFsc2U7CiAKIAkvKiBDb3B5IHRo ZSBwZXJpb2QgKi8KLQlQZXJpb2QgKnAgPSBtYWtlTm9kZShQZXJpb2QpOwotCXAtPm9pZCA9IGlk eHJlYy0+aW5kcGVyaW9kOwotCWluZGV4LT5wZXJpb2QgPSBwOworCXBlcmlvZCA9IG1ha2VOb2Rl KFBlcmlvZCk7CisJcGVyaW9kLT5vaWQgPSBpZHhyZWMtPmluZHBlcmlvZDsKKwlpbmRleC0+cGVy aW9kID0gcGVyaW9kOwogCiAJLyoKIAkgKiBXZSBkb24ndCB0cnkgdG8gcHJlc2VydmUgdGhlIG5h bWUgb2YgdGhlIHNvdXJjZSBpbmRleDsgaW5zdGVhZCwganVzdApAQCAtMjMwNSw3ICsyMzEwLDcg QEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0 ZVN0bXRDb250ZXh0ICpjeHQpCiAKIAlpbmRleCA9IG1ha2VOb2RlKEluZGV4U3RtdCk7CiAKLQlp bmRleC0+dW5pcXVlID0gKGNvbnN0cmFpbnQtPmNvbnR5cGUgIT0gQ09OU1RSX0VYQ0xVU0lPTik7 CisJaW5kZXgtPnVuaXF1ZSA9IChjb25zdHJhaW50LT5jb250eXBlICE9IENPTlNUUl9FWENMVVNJ T04gJiYgY29uc3RyYWludC0+d2l0aG91dF9vdmVybGFwcyA9PSBOVUxMKTsKIAlpbmRleC0+cHJp bWFyeSA9IChjb25zdHJhaW50LT5jb250eXBlID09IENPTlNUUl9QUklNQVJZKTsKIAlpZiAoaW5k ZXgtPnByaW1hcnkpCiAJewpAQCAtMjMyMyw2ICsyMzI4LDcgQEAgdHJhbnNmb3JtSW5kZXhDb25z dHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJ CSAqLwogCX0KIAlpbmRleC0+aXNjb25zdHJhaW50ID0gdHJ1ZTsKKwlpbmRleC0+aXN0ZW1wb3Jh bCA9IGNvbnN0cmFpbnQtPndpdGhvdXRfb3ZlcmxhcHMgIT0gTlVMTDsKIAlpbmRleC0+ZGVmZXJy YWJsZSA9IGNvbnN0cmFpbnQtPmRlZmVycmFibGU7CiAJaW5kZXgtPmluaXRkZWZlcnJlZCA9IGNv bnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKIApAQCAtMjQxNiw2ICsyNDIyLDExIEBAIHRyYW5zZm9y bUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29udGV4 dCAqY3h0KQogCQkJCQkgZXJybXNnKCJpbmRleCBcIiVzXCIgaXMgbm90IHZhbGlkIiwgaW5kZXhf bmFtZSksCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIGNvbnN0cmFpbnQt PmxvY2F0aW9uKSkpOwogCisJCS8qCisJCSAqIFRvZGF5IHdlIGZvcmJpZCBub24tdW5pcXVlIGlu ZGV4ZXMsIGJ1dCB3ZSBjb3VsZCBwZXJtaXQgR2lTVAorCQkgKiBpbmRleGVzIHdob3NlIGxhc3Qg ZW50cnkgaXMgYSByYW5nZSB0eXBlIGFuZCB1c2UgdGhhdCB0byBjcmVhdGUgYQorCQkgKiBXSVRI T1VUIE9WRVJMQVBTIGNvbnN0cmFpbnQgKGkuZS4gYSB0ZW1wb3JhbCBjb25zdHJhaW50KS4KKwkJ ICovCiAJCWlmICghaW5kZXhfZm9ybS0+aW5kaXN1bmlxdWUpCiAJCQllcmVwb3J0KEVSUk9SLAog CQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKQEAgLTI3MDMsNiArMjcx NCwxNjYgQEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQs IENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJCQkJbm90bnVsbGNtZC0+bmFtZSA9IHBzdHJkdXAo a2V5KTsKIAkJCQlub3RudWxsY21kcyA9IGxhcHBlbmQobm90bnVsbGNtZHMsIG5vdG51bGxjbWQp OwogCQkJfQorCisJCQlpZiAoY29uc3RyYWludC0+d2l0aG91dF9vdmVybGFwcyAhPSBOVUxMKQor CQkJeworCQkJCS8qCisJCQkJICogV2UgYXJlIGJ1aWxkaW5nIHRoZSBpbmRleCBsaWtlIGZvciBh biBFWENMVVNJT04gY29uc3RyYWludCwKKwkJCQkgKiBzbyB1c2UgdGhlIGVxdWFsaXR5IG9wZXJh dG9yIGZvciB0aGVzZSBlbGVtZW50cy4KKwkJCQkgKi8KKwkJCQlMaXN0ICpvcG5hbWUgPSBsaXN0 X21ha2UxKG1ha2VTdHJpbmcoIj0iKSk7CisJCQkJaW5kZXgtPmV4Y2x1ZGVPcE5hbWVzID0gbGFw cGVuZChpbmRleC0+ZXhjbHVkZU9wTmFtZXMsIG9wbmFtZSk7CisJCQl9CisJCX0KKworCQkvKgor CQkgKiBBbnl0aGluZyBpbiB3aXRob3V0X292ZXJsYXBzIHNob3VsZCBiZSBpbmNsdWRlZCwKKwkJ ICogYnV0IHdpdGggdGhlIG92ZXJsYXBzIG9wZXJhdG9yICgmJikgaW5zdGVhZCBvZiBlcXVhbGl0 eS4KKwkJICovCisJCWlmIChjb25zdHJhaW50LT53aXRob3V0X292ZXJsYXBzICE9IE5VTEwpIHsK KwkJCS8vIGNoYXIgKndpdGhvdXRfb3ZlcmxhcHNfc3RyID0gbm9kZVRvU3RyaW5nKGNvbnN0cmFp bnQtPndpdGhvdXRfb3ZlcmxhcHMpOworCQkJY2hhciAqd2l0aG91dF9vdmVybGFwc19zdHIgPSBz dHJWYWwoY29uc3RyYWludC0+d2l0aG91dF9vdmVybGFwcyk7CisJCQlJbmRleEVsZW0gKmlwYXJh bSA9IG1ha2VOb2RlKEluZGV4RWxlbSk7CisJCQljaGFyICAgKnR5cG5hbWU7CisJCQlPaWQJCXR5 cGlkOworCisJCQkvKgorCQkJICogSXRlcmF0ZSB0aHJvdWdoIHRoZSB0YWJsZSdzIGNvbHVtbnMK KwkJCSAqIChsaWtlIGp1c3QgYSBsaXR0bGUgYml0IGFib3ZlKS4KKwkJCSAqIElmIHdlIGZpbmQg b25lIHdob3NlIG5hbWUgaXMgdGhlIHNhbWUgYXMgd2l0aG91dF9vdmVybGFwcywKKwkJCSAqIHZh bGlkYXRlIHRoYXQgaXQncyBhIHJhbmdlIHR5cGUuCisJCQkgKgorCQkJICogT3RoZXJ3aXNlIGl0 ZXJhdGUgdGhyb3VnaCB0aGUgdGFibGUncyBub24tc3lzdGVtIFBFUklPRHMsCisJCQkgKiBhbmQg aWYgd2UgZmluZCBvbmUgdGhlbiB1c2UgaXRzIHN0YXJ0L2VuZCBjb2x1bW5zCisJCQkgKiB0byBj b25zdHJ1Y3QgYSByYW5nZSBleHByZXNzaW9uLgorCQkJICoKKwkJCSAqIE90aGVyd2lzZSByZXBv cnQgYW4gZXJyb3IuCisJCQkgKi8KKworCQkJaWYgKGZpbmROZXdPck9sZENvbHVtbihjeHQsIHdp dGhvdXRfb3ZlcmxhcHNfc3RyLCAmdHlwbmFtZSwgJnR5cGlkKSkKKwkJCXsKKwkJCQlpZiAodHlw ZV9pc19yYW5nZSh0eXBpZCkpCisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpub3RudWxsY21k OworCisJCQkJCWlwYXJhbS0+bmFtZSA9IHBzdHJkdXAod2l0aG91dF9vdmVybGFwc19zdHIpOwor CQkJCQlpcGFyYW0tPmV4cHIgPSBOVUxMOworCisJCQkJCS8qCisJCQkJCSAqIEZvcmNlIHRoZSBj b2x1bW4gdG8gTk9UIE5VTEwgc2luY2UgaXQgaXMgcGFydCBvZiB0aGUgcHJpbWFyeSBrZXkuCisJ CQkJCSAqLworCQkJCQlub3RudWxsY21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisKKwkJ CQkJbm90bnVsbGNtZC0+c3VidHlwZSA9IEFUX1NldE5vdE51bGw7CisJCQkJCW5vdG51bGxjbWQt Pm5hbWUgPSBwc3RyZHVwKHdpdGhvdXRfb3ZlcmxhcHNfc3RyKTsKKwkJCQkJbm90bnVsbGNtZHMg PSBsYXBwZW5kKG5vdG51bGxjbWRzLCBub3RudWxsY21kKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFU Q0gpLAorCQkJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgbmFtZWQgaW4gV0lUSE9VVCBPVkVS TEFQUyBpcyBub3QgYSByYW5nZSB0eXBlIiwKKwkJCQkJCQkJCXdpdGhvdXRfb3ZlcmxhcHNfc3Ry KSkpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qIExvb2sgZm9yIGEgUEVSSU9ELCBmaXJz dCBuZXdseS1kZWZpbmVkICovCisJCQkJY2hhciAqc3RhcnRjb2xuYW1lID0gTlVMTDsKKwkJCQlj aGFyICplbmRjb2xuYW1lID0gTlVMTDsKKwkJCQlMaXN0Q2VsbCAqcGVyaW9kcyA9IE5VTEw7CisJ CQkJZm9yZWFjaChwZXJpb2RzLCBjeHQtPnBlcmlvZHMpCisJCQkJeworCQkJCQlQZXJpb2QgKnBl cmlvZCA9IGNhc3ROb2RlKFBlcmlvZCwgbGZpcnN0KHBlcmlvZHMpKTsKKwkJCQkJaWYgKHN0cmNt cChwZXJpb2QtPnBlcmlvZG5hbWUsIHdpdGhvdXRfb3ZlcmxhcHNfc3RyKSA9PSAwKQorCQkJCQl7 CisJCQkJCQlzdGFydGNvbG5hbWUgPSBwZXJpb2QtPnN0YXJ0Y29sbmFtZTsKKwkJCQkJCWVuZGNv bG5hbWUgPSBwZXJpb2QtPmVuZGNvbG5hbWU7CisJCQkJCQkvKiBUaGUgcGVyaW9kIGhhcyBubyBv aWQgeWV0LCBidXQgdHJhbnNmb3JtSW5kZXhTdG10IHdpbGwgbG9vayBpdCB1cCAqLworCQkJCQkJ aW5kZXgtPnBlcmlvZCA9IHBlcmlvZDsKKwkJCQkJCWluZGV4LT5wZXJpb2QtPm9pZCA9IEludmFs aWRPaWQ7CisJCQkJCQlpbmRleC0+cGVyaW9kLT5wZXJpb2RuYW1lID0gd2l0aG91dF9vdmVybGFw c19zdHI7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKworCQkJCWlmIChzdGFydGNvbG5h bWUgPT0gTlVMTCAmJiBjeHQtPnJlbCkKKwkJCQl7CisJCQkJCS8qIExvb2sgZm9yIGFuIGFscmVh ZHktZXhpc3RpbmcgUEVSSU9EICovCisJCQkJCS8vIFRPRE86IGxvY2tpbmc/IHJlbGVhc2luZz8K KwkJCQkJSGVhcFR1cGxlIHBlclR1cGxlOworCQkJCQlPaWQgcmVsaWQgPSBSZWxhdGlvbkdldFJl bGlkKGN4dC0+cmVsKTsKKwkJCQkJcGVyVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFN RSwKKwkJCQkJCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJCQlQb2ludGVyR2V0RGF0 dW0od2l0aG91dF9vdmVybGFwc19zdHIpKTsKKwkJCQkJaWYgKEhlYXBUdXBsZUlzVmFsaWQocGVy VHVwbGUpKQorCQkJCQl7CisJCQkJCQlGb3JtX3BnX3BlcmlvZCBwZXIgPSAoRm9ybV9wZ19wZXJp b2QpIEdFVFNUUlVDVChwZXJUdXBsZSk7CisJCQkJCQlzdGFydGNvbG5hbWUgPSBnZXRfYXR0bmFt ZShyZWxpZCwgcGVyLT5wZXJzdGFydCwgZmFsc2UpOworCQkJCQkJZW5kY29sbmFtZSA9IGdldF9h dHRuYW1lKHJlbGlkLCBwZXItPnBlcmVuZCwgZmFsc2UpOworCQkJCQkJaW5kZXgtPnBlcmlvZCA9 IG1ha2VOb2RlKFBlcmlvZCk7CisJCQkJCQlpbmRleC0+cGVyaW9kLT5vaWQgPSBwZXItPm9pZDsK KwkJCQkJCWluZGV4LT5wZXJpb2QtPnBlcmlvZG5hbWUgPSB3aXRob3V0X292ZXJsYXBzX3N0cjsK KworCQkJCQkJUmVsZWFzZVN5c0NhY2hlKHBlclR1cGxlKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlp ZiAoc3RhcnRjb2xuYW1lICE9IE5VTEwpCisJCQkJeworCQkJCQlDb2x1bW5SZWYgKnN0YXJ0LCAq ZW5kOworCQkJCQlPaWQgcm5ndHlwaWQ7CisJCQkJCWNoYXIgKnJhbmdlX3R5cGVfbmFtZTsKKwor CQkJCQlpZiAoIWZpbmROZXdPck9sZENvbHVtbihjeHQsIHN0YXJ0Y29sbmFtZSwgJnR5cG5hbWUs ICZ0eXBpZCkpCisJCQkJCQllbG9nKEVSUk9SLCAiTWlzc2luZyBzdGFydGNvbCAlcyBmb3IgcGVy aW9kICVzIiwKKwkJCQkJCQkgc3RhcnRjb2xuYW1lLCB3aXRob3V0X292ZXJsYXBzX3N0cik7CisJ CQkJCWlmICghZmluZE5ld09yT2xkQ29sdW1uKGN4dCwgZW5kY29sbmFtZSwgJnR5cG5hbWUsICZ0 eXBpZCkpCisJCQkJCQllbG9nKEVSUk9SLCAiTWlzc2luZyBlbmRjb2wgJXMgZm9yIHBlcmlvZCAl cyIsCisJCQkJCQkJIGVuZGNvbG5hbWUsIHdpdGhvdXRfb3ZlcmxhcHNfc3RyKTsKKworCQkJCQkv KiBVc2UgdGhlIHN0YXJ0L2VuZCBjb2x1bW5zICovCisKKwkJCQkJc3RhcnQgPSBtYWtlTm9kZShD b2x1bW5SZWYpOworCQkJCQlzdGFydC0+ZmllbGRzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKHN0 YXJ0Y29sbmFtZSkpOworCQkJCQlzdGFydC0+bG9jYXRpb24gPSBjb25zdHJhaW50LT5sb2NhdGlv bjsKKworCQkJCQllbmQgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCQkJCQllbmQtPmZpZWxkcyA9 IGxpc3RfbWFrZTEobWFrZVN0cmluZyhlbmRjb2xuYW1lKSk7CisJCQkJCWVuZC0+bG9jYXRpb24g PSBjb25zdHJhaW50LT5sb2NhdGlvbjsKKworCQkJCQlybmd0eXBpZCA9IGdldF9zdWJ0eXBlX3Jh bmdlKHR5cGlkKTsKKwkJCQkJaWYgKHJuZ3R5cGlkID09IEludmFsaWRPaWQpCisJCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAor CQkJCQkJCQkgZXJybXNnKCJQRVJJT0QgXCIlc1wiIGNhbm5vdCBiZSB1c2VkIGluIGEgY29uc3Ry YWludCB3aXRob3V0IGEgY29ycmVzcG9uZGluZyByYW5nZSB0eXBlIiwKKwkJCQkJCQkJCQl3aXRo b3V0X292ZXJsYXBzX3N0cikpKTsKKworCQkJCQlyYW5nZV90eXBlX25hbWUgPSBnZXRfdHlwbmFt ZShybmd0eXBpZCk7CisKKwkJCQkJLyogQnVpbGQgYSByYW5nZSB0byByZXByZXNlbnQgdGhlIFBF UklPRC4gKi8KKwkJCQkJaXBhcmFtLT5uYW1lID0gTlVMTDsKKwkJCQkJaXBhcmFtLT5leHByID0g KE5vZGUgKikgbWFrZUZ1bmNDYWxsKFN5c3RlbUZ1bmNOYW1lKHJhbmdlX3R5cGVfbmFtZSksCisJ CQkJCQkJCQkJCQkJCSBsaXN0X21ha2UyKHN0YXJ0LCBlbmQpLAorCQkJCQkJCQkJCQkJCQkgQ09F UkNFX0VYUExJQ0lUX0NBTEwsCisJCQkJCQkJCQkJCQkJCSAtMSk7CisJCQkJfQorCQkJCWVsc2UK KwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9D T0xVTU4pLAorCQkJCQkJCSBlcnJtc2coInJhbmdlIG9yIFBFUklPRCBcIiVzXCIgbmFtZWQgaW4g V0lUSE9VVCBPVkVSTEFQUyBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJCQl3aXRob3V0X292ZXJs YXBzX3N0cikpKTsKKwkJCX0KKwkJCXsKKwkJCQlpcGFyYW0tPmluZGV4Y29sbmFtZSA9IE5VTEw7 CisJCQkJaXBhcmFtLT5jb2xsYXRpb24gPSBOSUw7CisJCQkJaXBhcmFtLT5vcGNsYXNzID0gTklM OworCQkJCWlwYXJhbS0+b3JkZXJpbmcgPSBTT1JUQllfREVGQVVMVDsKKwkJCQlpcGFyYW0tPm51 bGxzX29yZGVyaW5nID0gU09SVEJZX05VTExTX0RFRkFVTFQ7CisJCQkJaW5kZXgtPmluZGV4UGFy YW1zID0gbGFwcGVuZChpbmRleC0+aW5kZXhQYXJhbXMsIGlwYXJhbSk7CisKKwkJCQlpbmRleC0+ ZXhjbHVkZU9wTmFtZXMgPSBsYXBwZW5kKGluZGV4LT5leGNsdWRlT3BOYW1lcywKKwkJCQkJCQkJ CQkJCWxpc3RfbWFrZTEobWFrZVN0cmluZygiJiYiKSkpOworCQkJCWluZGV4LT5hY2Nlc3NNZXRo b2QgPSAiZ2lzdCI7CisJCQkJY29uc3RyYWludC0+YWNjZXNzX21ldGhvZCA9ICJnaXN0IjsKKwkJ CX0KIAkJfQogCX0KIApAQCAtMjgyMyw2ICsyOTk0LDU1IEBAIHRyYW5zZm9ybUluZGV4Q29uc3Ry YWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0KQogCXJl dHVybiBpbmRleDsKIH0KIAorLyoKKyAqIFRyaWVzIHRvIGZpbmQgYSBjb2x1bW4gYnkgbmFtZSBh bW9uZyB0aGUgZXhpc3Rpbmcgb25lcyAoaWYgaXQncyBhbiBBTFRFUiBUQUJMRSkKKyAqIGFuZCB0 aGUgbmV3IG9uZXMuIFNldHMgdHlwbmFtZSBhbmQgdHlwaWQgaWYgb25lIGlzIGZvdW5kLiBSZXR1 cm5zIGZhbHNlIGlmIHdlCisgKiBjb3VsZG4ndCBmaW5kIGEgbWF0Y2guCisgKi8KK3N0YXRpYyBi b29sCitmaW5kTmV3T3JPbGRDb2x1bW4oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgY2hhciAqY29s bmFtZSwgY2hhciAqKnR5cG5hbWUsIE9pZCAqdHlwaWQpCit7CisJLyogQ2hlY2sgdGhlIG5ldyBj b2x1bW5zIGZpcnN0IGluIGNhc2UgdGhlaXIgdHlwZSBpcyBjaGFuZ2luZy4gKi8KKworCUNvbHVt bkRlZiAgKmNvbHVtbiA9IE5VTEw7CisJTGlzdENlbGwgICAqY29sdW1uczsKKworCWZvcmVhY2go Y29sdW1ucywgY3h0LT5jb2x1bW5zKQorCXsKKwkJY29sdW1uID0gbGZpcnN0X25vZGUoQ29sdW1u RGVmLCBjb2x1bW5zKTsKKwkJaWYgKHN0cmNtcChjb2x1bW4tPmNvbG5hbWUsIGNvbG5hbWUpID09 IDApCisJCXsKKwkJCSp0eXBpZCA9IHR5cGVuYW1lVHlwZUlkKE5VTEwsIGNvbHVtbi0+dHlwZU5h bWUpOworCQkJKnR5cG5hbWUgPSBUeXBlTmFtZVRvU3RyaW5nKGNvbHVtbi0+dHlwZU5hbWUpOwor CQkJcmV0dXJuIHRydWU7CisJCX0KKwl9CisKKwkvLyBUT0RPOiBzaG91bGQgSSBjb25zaWRlciBE Uk9QIENPTFVNTj8KKworCS8qIExvb2sgdXAgY29sdW1ucyBvbiBleGlzdGluZyB0YWJsZS4gKi8K KworCWlmIChjeHQtPmlzYWx0ZXIpCisJeworCQlSZWxhdGlvbiByZWwgPSBjeHQtPnJlbDsKKwkJ Zm9yIChpbnQgaSA9IDA7IGkgPCByZWwtPnJkX2F0dC0+bmF0dHM7IGkrKykKKwkJeworCQkJRm9y bV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIocmVsLT5yZF9hdHQsIGkpOworCQkJ Y29uc3QgY2hhciAqYXR0bmFtZSA9IE5hbWVTdHIoYXR0ci0+YXR0bmFtZSk7CisJCQlpZiAoc3Ry Y21wKGF0dG5hbWUsIGNvbG5hbWUpID09IDApCisJCQl7CisJCQkJVHlwZSB0eXBlID0gdHlwZWlk VHlwZShhdHRyLT5hdHR0eXBpZCk7CisJCQkJKnR5cGlkID0gYXR0ci0+YXR0dHlwaWQ7CisJCQkJ KnR5cG5hbWUgPSBwc3RyZHVwKHR5cGVUeXBlTmFtZSh0eXBlKSk7CisJCQkJUmVsZWFzZVN5c0Nh Y2hlKHR5cGUpOworCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIGZh bHNlOworfQorCiAvKgogICogdHJhbnNmb3JtRXh0ZW5kZWRTdGF0aXN0aWNzCiAgKiAgICAgSGFu ZGxlIGV4dGVuZGVkIHN0YXRpc3RpYyBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMK aW5kZXggY2NkMjgzNWMyMi4uOTc4N2ExZDcwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YwpAQCAtMzMyLDggKzMzMiw4IEBAIHN0YXRpYyBjaGFyICpkZXBhcnNlX2V4cHJlc3Npb25fcHJl dHR5KE5vZGUgKmV4cHIsIExpc3QgKmRwY29udGV4dCwKIHN0YXRpYyBjaGFyICpwZ19nZXRfdmll d2RlZl93b3JrZXIoT2lkIHZpZXdvaWQsCiAJCQkJCQkJCSAgIGludCBwcmV0dHlGbGFncywgaW50 IHdyYXBDb2x1bW4pOwogc3RhdGljIGNoYXIgKnBnX2dldF90cmlnZ2VyZGVmX3dvcmtlcihPaWQg dHJpZ2lkLCBib29sIHByZXR0eSk7Ci1zdGF0aWMgaW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhf YXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCi0JCQkJCQkJCQkJIFN0 cmluZ0luZm8gYnVmKTsKK3N0YXRpYyBpbnQJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShE YXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwgT2lkIGluZGV4SWQsCisJCQkJCQkJ CQkJIGJvb2wgd2l0aG91dE92ZXJsYXBzLCBPaWQgcGVyaW9kaWQsIFN0cmluZ0luZm8gYnVmKTsK IHN0YXRpYyBjaGFyICpwZ19nZXRfcnVsZWRlZl93b3JrZXIoT2lkIHJ1bGVvaWQsIGludCBwcmV0 dHlGbGFncyk7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X2luZGV4ZGVmX3dvcmtlcihPaWQgaW5kZXhy ZWxpZCwgaW50IGNvbG5vLAogCQkJCQkJCQkJY29uc3QgT2lkICpleGNsdWRlT3BzLApAQCAtMjE5 NCw3ICsyMTk0LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50 SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJCWVsb2coRVJST1IsICJudWxsIGNvbmtleSBmb3Ig Y29uc3RyYWludCAldSIsCiAJCQkJCQkgY29uc3RyYWludElkKTsKIAotCQkJCWRlY29tcGlsZV9j b2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJZGVj b21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBjb25Gb3Jt LT5jb25pbmRpZCwgZmFsc2UsIEludmFsaWRPaWQsICZidWYpOwogCiAJCQkJLyogYWRkIGZvcmVp Z24gcmVsYXRpb24gbmFtZSAqLwogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIikgUkVGRVJF TkNFUyAlcygiLApAQCAtMjIwOCw3ICsyMjA4LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29y a2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJCWVsb2coRVJST1Is ICJudWxsIGNvbmZrZXkgZm9yIGNvbnN0cmFpbnQgJXUiLAogCQkJCQkJIGNvbnN0cmFpbnRJZCk7 CiAKLQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29uZnJl bGlkLCAmYnVmKTsKKwkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9y bS0+Y29uZnJlbGlkLCBjb25Gb3JtLT5jb25pbmRpZCwgZmFsc2UsIEludmFsaWRPaWQsICZidWYp OwogCiAJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIApAQCAtMjMwOSwxMiAr MjMwOSwxNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwg Ym9vbCBmdWxsQ29tbWFuZCwKIAkJCQkJZWxvZyhFUlJPUiwgIm51bGwgY29ua2V5IGZvciBjb25z dHJhaW50ICV1IiwKIAkJCQkJCSBjb25zdHJhaW50SWQpOwogCi0JCQkJa2V5YXR0cyA9IGRlY29t cGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgJmJ1Zik7CisJ CQkJLyoKKwkJCQkgKiBJZiBpdCBoYXMgZXhjbHVzaW9uLXN0eWxlIG9wZXJhdG9yIE9JRHMKKwkJ CQkgKiB0aGVuIGl0IHVzZXMgV0lUSE9VVCBPVkVSTEFQUy4KKwkJCQkgKi8KKwkJCQlpbmRleElk ID0gY29uRm9ybS0+Y29uaW5kaWQ7CisJCQkJU3lzQ2FjaGVHZXRBdHRyKENPTlNUUk9JRCwgdHVw LAorCQkJCQkJICBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZXhjbG9wLCAmaXNudWxsKTsKKwkJCQlr ZXlhdHRzID0gZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJl bGlkLCBpbmRleElkLCAhaXNudWxsLCBJbnZhbGlkT2lkLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0 cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAKLQkJCQlpbmRleElkID0gY29uRm9ybS0+Y29uaW5k aWQ7Ci0KIAkJCQkvKiBCdWlsZCBpbmNsdWRpbmcgY29sdW1uIGxpc3QgKGZyb20gcGdfaW5kZXgu aW5ka2V5cykgKi8KIAkJCQlpbmR0dXAgPSBTZWFyY2hTeXNDYWNoZTEoSU5ERVhSRUxJRCwgT2Jq ZWN0SWRHZXREYXR1bShpbmRleElkKSk7CiAJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGluZHR1 cCkpCkBAIC0yNTEwLDggKzI1MTUsOCBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lk IGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKICAqIG9mIGtleXMuCiAgKi8KIHN0YXRp YyBpbnQKLWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2Fy cmF5LCBPaWQgcmVsSWQsCi0JCQkJCQkJIFN0cmluZ0luZm8gYnVmKQorZGVjb21waWxlX2NvbHVt bl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwgT2lkIGlu ZGV4SWQsCisJCQkJCQkJIGJvb2wgd2l0aG91dE92ZXJsYXBzLCBPaWQgcGVyaW9kaWQsIFN0cmlu Z0luZm8gYnVmKQogewogCURhdHVtCSAgICprZXlzOwogCWludAkJCW5LZXlzOwpAQCAtMjUyNSwx MSArMjUzMCw0MSBAQCBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9p bmRleF9hcnJheSwgT2lkIHJlbElkLAogCWZvciAoaiA9IDA7IGogPCBuS2V5czsgaisrKQogCXsK IAkJY2hhcgkgICAqY29sTmFtZTsKKwkJaW50CQkJY29saWQgPSBEYXR1bUdldEludDE2KGtleXNb al0pOworCisJCS8qIFRoZSBrZXkgbWlnaHQgY29udGFpbiBhIFBFUklPRCBpbnN0ZWFkIG9mIGFu IGF0dHJpYnV0ZSAqLworCQlpZiAoY29saWQgPT0gMCkKKwkJeworCQkJLyogRmlyc3QgdHJ5IHRo ZSBnaXZlbiBwZXJpb2RpZCwgdGhlbiBmYWxsIGJhY2sgb24gdGhlIGluZGV4ICovCisJCQlpZiAo cGVyaW9kaWQgPT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQlIZWFwVHVwbGUgaW5kdHVwOworCQkJ CWJvb2wgaXNudWxsOworCQkJCURhdHVtIHBlcmlvZGlkRGF0dW07CisKKwkJCQlpbmR0dXAgPSBT ZWFyY2hTeXNDYWNoZTEoSU5ERVhSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShpbmRleElkKSk7CisJ CQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGluZHR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBpbmRleCAldSIsIGluZGV4SWQpOwogCi0JCWNvbE5hbWUgPSBn ZXRfYXR0bmFtZShyZWxJZCwgRGF0dW1HZXRJbnQxNihrZXlzW2pdKSwgZmFsc2UpOworCQkJCXBl cmlvZGlkRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoSU5ERVhSRUxJRCwgaW5kdHVwLAorCQkJCQkJ CQkJCSAgIEFudW1fcGdfaW5kZXhfaW5kcGVyaW9kLCAmaXNudWxsKTsKKwkJCQlpZiAoaXNudWxs KQorCQkJCQllbG9nKEVSUk9SLCAibWlzc2luZyBwZXJpb2QgZm9yIGluZGV4ICV1IiwgaW5kZXhJ ZCk7CisKKwkJCQlwZXJpb2RpZCA9IERhdHVtR2V0T2JqZWN0SWQocGVyaW9kaWREYXR1bSk7CisJ CQkJUmVsZWFzZVN5c0NhY2hlKGluZHR1cCk7CisJCQl9CisJCQljb2xOYW1lID0gZ2V0X3Blcmlv ZG5hbWUocGVyaW9kaWQsIGZhbHNlKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWNvbE5hbWUgPSBn ZXRfYXR0bmFtZShyZWxJZCwgY29saWQsIGZhbHNlKTsKKwkJfQogCiAJCWlmIChqID09IDApCiAJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7 CisJCWVsc2UgaWYgKHdpdGhvdXRPdmVybGFwcyAmJiBqID09IG5LZXlzIC0gMSkKKwkJCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAiLCAlcyBXSVRIT1VUIE9WRVJMQVBTIiwgcXVvdGVfaWRlbnRpZmll cihjb2xOYW1lKSk7CiAJCWVsc2UKIAkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCAlcyIsIHF1 b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hl LmMKaW5kZXggNzNjY2VhNGE2OS4uMzYyMDkyMzY4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5 c2NhY2hlLmMKQEAgLTIxOTgsNiArMjE5OCwzMiBAQCBnZXRfdHlwaXNkZWZpbmVkKE9pZCB0eXBp ZCkKIAkJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogZ2V0X3R5cG5hbWUKKyAqCisgKgkJUmV0 dXJucyB0aGUgbmFtZSBvZiBhIGdpdmVuIHR5cGUKKyAqCisgKiBSZXR1cm5zIGEgcGFsbG9jJ2Qg Y29weSBvZiB0aGUgc3RyaW5nLCBvciBOVUxMIGlmIG5vIHN1Y2ggdHlwZS4KKyAqLworY2hhciAq CitnZXRfdHlwbmFtZShPaWQgdHlwaWQpCit7CisJSGVhcFR1cGxlCXRwOworCisJdHAgPSBTZWFy Y2hTeXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh0eXBpZCkpOworCWlmIChIZWFw VHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdfdHlwZSB0eXB0dXAgPSAoRm9ybV9wZ190 eXBlKSBHRVRTVFJVQ1QodHApOworCQljaGFyCSAgICpyZXN1bHQ7CisKKwkJcmVzdWx0ID0gcHN0 cmR1cChOYW1lU3RyKHR5cHR1cC0+dHlwbmFtZSkpOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOwor CQlyZXR1cm4gcmVzdWx0OworCX0KKwllbHNlCisJCXJldHVybiBOVUxMOworfQorCiAvKgogICog Z2V0X3R5cGxlbgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDEzZDk5OTRh ZjMuLjNlMmRiYjk3ZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNDYyNiwx MSArNDYyNiwxNyBAQCBSZWxhdGlvbkdldEluZGV4TGlzdChSZWxhdGlvbiByZWxhdGlvbikKIAkJ ICogaW50ZXJlc3RpbmcgZm9yIGVpdGhlciBvaWQgaW5kZXhlcyBvciByZXBsaWNhdGlvbiBpZGVu dGl0eSBpbmRleGVzLAogCQkgKiBzbyBkb24ndCBjaGVjayB0aGVtLgogCQkgKi8KLQkJaWYgKCFp bmRleC0+aW5kaXN2YWxpZCB8fCAhaW5kZXgtPmluZGlzdW5pcXVlIHx8Ci0JCQkhaW5kZXgtPmlu ZGltbWVkaWF0ZSB8fAorCQlpZiAoIWluZGV4LT5pbmRpc3ZhbGlkIHx8ICFpbmRleC0+aW5kaW1t ZWRpYXRlIHx8CiAJCQkhaGVhcF9hdHRpc251bGwoaHR1cCwgQW51bV9wZ19pbmRleF9pbmRwcmVk LCBOVUxMKSkKIAkJCWNvbnRpbnVlOwogCisJCS8qCisJCSAqIE5vbi11bmlxdWUgaW5kZXhlcyBh cmVuJ3QgaW50ZXJlc3RpbmcgZWl0aGVyLAorCQkgKiBleGNlcHQgd2hlbiB0aGV5IGFyZSB0ZW1w b3JhbCBwcmltYXJ5IGtleXMuCisJCSAqLworCQlpZiAoIWluZGV4LT5pbmRpc3VuaXF1ZSAmJiAh aW5kZXgtPmluZGlzcHJpbWFyeSkKKwkJCWNvbnRpbnVlOworCiAJCS8qIHJlbWVtYmVyIHByaW1h cnkga2V5IGluZGV4IGlmIGFueSAqLwogCQlpZiAoaW5kZXgtPmluZGlzcHJpbWFyeSkKIAkJCXBr ZXlJbmRleCA9IGluZGV4LT5pbmRleHJlbGlkOwpAQCAtNTMxMiw4ICs1MzE4LDkgQEAgUmVsYXRp b25HZXRJZGVudGl0eUtleUJpdG1hcChSZWxhdGlvbiByZWxhdGlvbikKICAqIFJlbGF0aW9uR2V0 RXhjbHVzaW9uSW5mbyAtLSBnZXQgaW5mbyBhYm91dCBpbmRleCdzIGV4Y2x1c2lvbiBjb25zdHJh aW50CiAgKgogICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9ubHkgZm9yIGFuIGluZGV4IHRoYXQg aXMga25vd24gdG8gaGF2ZSBhbgotICogYXNzb2NpYXRlZCBleGNsdXNpb24gY29uc3RyYWludC4g IEl0IHJldHVybnMgYXJyYXlzIChwYWxsb2MnZCBpbiBjYWxsZXIncwotICogY29udGV4dCkgb2Yg dGhlIGV4Y2x1c2lvbiBvcGVyYXRvciBPSURzLCB0aGVpciB1bmRlcmx5aW5nIGZ1bmN0aW9ucycK KyAqIGFzc29jaWF0ZWQgZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3IgdGVtcG9yYWwgcHJpbWFyeSBr ZXkuCisgKiBJdCByZXR1cm5zIGFycmF5cyAocGFsbG9jJ2QgaW4gY2FsbGVyJ3MgKiBjb250ZXh0 KQorICogb2YgdGhlIGV4Y2x1c2lvbiBvcGVyYXRvciBPSURzLCB0aGVpciB1bmRlcmx5aW5nIGZ1 bmN0aW9ucycKICAqIE9JRHMsIGFuZCB0aGVpciBzdHJhdGVneSBudW1iZXJzIGluIHRoZSBpbmRl eCdzIG9wY2xhc3Nlcy4gIFdlIGNhY2hlCiAgKiBhbGwgdGhpcyBpbmZvcm1hdGlvbiBzaW5jZSBp dCByZXF1aXJlcyBhIGZhaXIgYW1vdW50IG9mIHdvcmsgdG8gZ2V0LgogICovCkBAIC01Mzc5LDcg KzUzODYsMTIgQEAgUmVsYXRpb25HZXRFeGNsdXNpb25JbmZvKFJlbGF0aW9uIGluZGV4UmVsYXRp b24sCiAJCWludAkJCW5lbGVtOwogCiAJCS8qIFdlIHdhbnQgdGhlIGV4Y2x1c2lvbiBjb25zdHJh aW50IG93bmluZyB0aGUgaW5kZXggKi8KLQkJaWYgKGNvbmZvcm0tPmNvbnR5cGUgIT0gQ09OU1RS QUlOVF9FWENMVVNJT04gfHwKKwkJLyoKKwkJICogVE9ETzogSXMgdGhpcyB0b28gcGVybWlzc2l2 ZT8KKwkJICogTWF5YmUgaXQgbmVlZHMgdG8gYmUgKCE9IENPTlNUUkFJTlRfUFJJTUFSWSB8fCAh aGFzX2V4Y2xfb3BlcmF0b3JzKQorCQkgKi8KKwkJaWYgKChjb25mb3JtLT5jb250eXBlICE9IENP TlNUUkFJTlRfRVhDTFVTSU9OICYmCisJCQkJCWNvbmZvcm0tPmNvbnR5cGUgIT0gQ09OU1RSQUlO VF9QUklNQVJZKSB8fAogCQkJY29uZm9ybS0+Y29uaW5kaWQgIT0gUmVsYXRpb25HZXRSZWxpZChp bmRleFJlbGF0aW9uKSkKIAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA3NTYzN2JjNWY5 Li5iMDk3YWVkODZkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTcxOTksNyArNzE5OSw4IEBAIGdldEluZGV4 ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJ CQlpX3RhYmxlc3BhY2UsCiAJCQkJaV9pbmRyZWxvcHRpb25zLAogCQkJCWlfaW5kc3RhdGNvbHMs Ci0JCQkJaV9pbmRzdGF0dmFsczsKKwkJCQlpX2luZHN0YXR2YWxzLAorCQkJCWlfd2l0aG91dG92 ZXJsYXBzOwogCWludAkJCW50dXBzOwogCiAJZm9yIChpID0gMDsgaSA8IG51bVRhYmxlczsgaSsr KQpAQCAtNzI2MCw3ICs3MjYxLDggQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCQkJCSAgIihTRUxFQ1QgcGdfY2F0YWxv Zy5hcnJheV9hZ2coYXR0c3RhdHRhcmdldCBPUkRFUiBCWSBhdHRudW0pICIKIAkJCQkJCQkgICIg IEZST00gcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGUgIgogCQkJCQkJCSAgIiAgV0hFUkUgYXR0cmVs aWQgPSBpLmluZGV4cmVsaWQgQU5EICIKLQkJCQkJCQkgICIgICAgYXR0c3RhdHRhcmdldCA+PSAw KSBBUyBpbmRzdGF0dmFscyAiCisJCQkJCQkJICAiICAgIGF0dHN0YXR0YXJnZXQgPj0gMCkgQVMg aW5kc3RhdHZhbHMsICIKKwkJCQkJCQkgICJjLmNvbmV4Y2xvcCBJUyBOT1QgTlVMTCBBUyB3aXRo b3V0b3ZlcmxhcHMgIgogCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19pbmRleCBpICIKIAkJ CQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgdCBPTiAodC5vaWQgPSBpLmluZGV4cmVs aWQpICIKIAkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgdDIgT04gKHQyLm9pZCA9 IGkuaW5kcmVsaWQpICIKQEAgLTcyOTksNyArNzMwMSw4IEBAIGdldEluZGV4ZXMoQXJjaGl2ZSAq Zm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQkJCQkgICIoU0VM RUNUIHNwY25hbWUgRlJPTSBwZ19jYXRhbG9nLnBnX3RhYmxlc3BhY2UgcyBXSEVSRSBzLm9pZCA9 IHQucmVsdGFibGVzcGFjZSkgQVMgdGFibGVzcGFjZSwgIgogCQkJCQkJCSAgInQucmVsb3B0aW9u cyBBUyBpbmRyZWxvcHRpb25zLCAiCiAJCQkJCQkJICAiJycgQVMgaW5kc3RhdGNvbHMsICIKLQkJ CQkJCQkgICInJyBBUyBpbmRzdGF0dmFscyAiCisJCQkJCQkJICAiJycgQVMgaW5kc3RhdHZhbHMs ICIKKwkJCQkJCQkgICJudWxsIEFTIHdpdGhvdXRvdmVybGFwcyAiCiAJCQkJCQkJICAiRlJPTSBw Z19jYXRhbG9nLnBnX2luZGV4IGkgIgogCQkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19jbGFz cyB0IE9OICh0Lm9pZCA9IGkuaW5kZXhyZWxpZCkgIgogCQkJCQkJCSAgIkxFRlQgSk9JTiBwZ19j YXRhbG9nLnBnX2NvbnN0cmFpbnQgYyAiCkBAIC03MzM0LDcgKzczMzcsOCBAQCBnZXRJbmRleGVz KEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJ CQkJICAiKFNFTEVDVCBzcGNuYW1lIEZST00gcGdfY2F0YWxvZy5wZ190YWJsZXNwYWNlIHMgV0hF UkUgcy5vaWQgPSB0LnJlbHRhYmxlc3BhY2UpIEFTIHRhYmxlc3BhY2UsICIKIAkJCQkJCQkgICJ0 LnJlbG9wdGlvbnMgQVMgaW5kcmVsb3B0aW9ucywgIgogCQkJCQkJCSAgIicnIEFTIGluZHN0YXRj b2xzLCAiCi0JCQkJCQkJICAiJycgQVMgaW5kc3RhdHZhbHMgIgorCQkJCQkJCSAgIicnIEFTIGlu ZHN0YXR2YWxzLCAiCisJCQkJCQkJICAibnVsbCBBUyB3aXRob3V0b3ZlcmxhcHMgIgogCQkJCQkJ CSAgIkZST00gcGdfY2F0YWxvZy5wZ19pbmRleCBpICIKIAkJCQkJCQkgICJKT0lOIHBnX2NhdGFs b2cucGdfY2xhc3MgdCBPTiAodC5vaWQgPSBpLmluZGV4cmVsaWQpICIKIAkJCQkJCQkgICJMRUZU IEpPSU4gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGMgIgpAQCAtNzM2NSw3ICs3MzY5LDggQEAg Z2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFi bGVzKQogCQkJCQkJCSAgIihTRUxFQ1Qgc3BjbmFtZSBGUk9NIHBnX2NhdGFsb2cucGdfdGFibGVz cGFjZSBzIFdIRVJFIHMub2lkID0gdC5yZWx0YWJsZXNwYWNlKSBBUyB0YWJsZXNwYWNlLCAiCiAJ CQkJCQkJICAidC5yZWxvcHRpb25zIEFTIGluZHJlbG9wdGlvbnMsICIKIAkJCQkJCQkgICInJyBB UyBpbmRzdGF0Y29scywgIgotCQkJCQkJCSAgIicnIEFTIGluZHN0YXR2YWxzICIKKwkJCQkJCQkg ICInJyBBUyBpbmRzdGF0dmFscywgIgorCQkJCQkJCSAgIm51bGwgQVMgd2l0aG91dG92ZXJsYXBz ICIKIAkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfaW5kZXggaSAiCiAJCQkJCQkJICAiSk9J TiBwZ19jYXRhbG9nLnBnX2NsYXNzIHQgT04gKHQub2lkID0gaS5pbmRleHJlbGlkKSAiCiAJCQkJ CQkJICAiTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfZGVwZW5kIGQgIgpAQCAtNzM5OSw3ICs3NDA0 LDggQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQg bnVtVGFibGVzKQogCQkJCQkJCSAgIihTRUxFQ1Qgc3BjbmFtZSBGUk9NIHBnX2NhdGFsb2cucGdf dGFibGVzcGFjZSBzIFdIRVJFIHMub2lkID0gdC5yZWx0YWJsZXNwYWNlKSBBUyB0YWJsZXNwYWNl LCAiCiAJCQkJCQkJICAibnVsbCBBUyBpbmRyZWxvcHRpb25zLCAiCiAJCQkJCQkJICAiJycgQVMg aW5kc3RhdGNvbHMsICIKLQkJCQkJCQkgICInJyBBUyBpbmRzdGF0dmFscyAiCisJCQkJCQkJICAi JycgQVMgaW5kc3RhdHZhbHMsICIKKwkJCQkJCQkgICJudWxsIEFTIHdpdGhvdXRvdmVybGFwcyAi CiAJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2luZGV4IGkgIgogCQkJCQkJCSAgIkpPSU4g cGdfY2F0YWxvZy5wZ19jbGFzcyB0IE9OICh0Lm9pZCA9IGkuaW5kZXhyZWxpZCkgIgogCQkJCQkJ CSAgIkxFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX2RlcGVuZCBkICIKQEAgLTc0MzksNiArNzQ0NSw3 IEBAIGdldEluZGV4ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51 bVRhYmxlcykKIAkJaV9pbmRyZWxvcHRpb25zID0gUFFmbnVtYmVyKHJlcywgImluZHJlbG9wdGlv bnMiKTsKIAkJaV9pbmRzdGF0Y29scyA9IFBRZm51bWJlcihyZXMsICJpbmRzdGF0Y29scyIpOwog CQlpX2luZHN0YXR2YWxzID0gUFFmbnVtYmVyKHJlcywgImluZHN0YXR2YWxzIik7CisJCWlfd2l0 aG91dG92ZXJsYXBzID0gUFFmbnVtYmVyKHJlcywgIndpdGhvdXRvdmVybGFwcyIpOwogCiAJCXRi aW5mby0+aW5kZXhlcyA9IGluZHhpbmZvID0KIAkJCShJbmR4SW5mbyAqKSBwZ19tYWxsb2MobnR1 cHMgKiBzaXplb2YoSW5keEluZm8pKTsKQEAgLTc1MDIsNiArNzUwOSw3IEBAIGdldEluZGV4ZXMo QXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQlj b25zdHJpbmZvW2pdLmNvbmRlZmVycmVkID0gKihQUWdldHZhbHVlKHJlcywgaiwgaV9jb25kZWZl cnJlZCkpID09ICd0JzsKIAkJCQljb25zdHJpbmZvW2pdLmNvbmlzbG9jYWwgPSB0cnVlOwogCQkJ CWNvbnN0cmluZm9bal0uc2VwYXJhdGUgPSB0cnVlOworCQkJCWNvbnN0cmluZm9bal0ud2l0aG91 dG92ZXJsYXBzID0gKihQUWdldHZhbHVlKHJlcywgaiwgaV93aXRob3V0b3ZlcmxhcHMpKSA9PSAn dCc7CiAKIAkJCQlpbmR4aW5mb1tqXS5pbmRleGNvbnN0cmFpbnQgPSBjb25zdHJpbmZvW2pdLmRv YmouZHVtcElkOwogCQkJfQpAQCAtMTcyMzYsOSArMTcyNDQsMjIgQEAgZHVtcENvbnN0cmFpbnQo QXJjaGl2ZSAqZm91dCwgY29uc3QgQ29uc3RyYWludEluZm8gKmNvbmluZm8pCiAJCQkJCWJyZWFr OwogCQkJCWF0dG5hbWUgPSBnZXRBdHRyTmFtZShpbmRrZXksIHRiaW5mbyk7CiAKLQkJCQlhcHBl bmRQUUV4cEJ1ZmZlcihxLCAiJXMlcyIsCi0JCQkJCQkJCSAgKGsgPT0gMCkgPyAiIiA6ICIsICIs Ci0JCQkJCQkJCSAgZm10SWQoYXR0bmFtZSkpOworCQkJCWlmIChrID09IDApCisJCQkJeworCQkJ CQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiJXMiLAorCQkJCQkJCQkJCWZtdElkKGF0dG5hbWUpKTsK KwkJCQl9CisJCQkJZWxzZSBpZiAoayA9PSBpbmR4aW5mby0+aW5kbmtleWF0dHJzIC0gMSAmJgor CQkJCQkJY29uaW5mby0+d2l0aG91dG92ZXJsYXBzKQorCQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBC dWZmZXIocSwgIiwgJXMgV0lUSE9VVCBPVkVSTEFQUyIsCisJCQkJCQkJCQkJZm10SWQoYXR0bmFt ZSkpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAi LCAlcyIsCisJCQkJCQkJCQkJZm10SWQoYXR0bmFtZSkpOworCQkJCX0KIAkJCX0KIAogCQkJaWYg KGluZHhpbmZvLT5pbmRua2V5YXR0cnMgPCBpbmR4aW5mby0+aW5kbmF0dHJzKQpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgK aW5kZXggM2VhOTBlMGI4ZC4uNmFmMzUxMWY4YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC00NjksNiArNDY5 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2NvbnN0cmFpbnRJbmZvCiAJYm9vbAkJY29uZGVmZXJyZWQ7 CS8qIHRydWUgaWYgY29uc3RyYWludCBpcyBJTklUSUFMTFkgREVGRVJSRUQgKi8KIAlib29sCQlj b25pc2xvY2FsOwkJLyogdHJ1ZSBpZiBjb25zdHJhaW50IGhhcyBsb2NhbCBkZWZpbml0aW9uICov CiAJYm9vbAkJc2VwYXJhdGU7CQkvKiB0cnVlIGlmIG11c3QgZHVtcCBhcyBzZXBhcmF0ZSBpdGVt ICovCisJYm9vbAkJd2l0aG91dG92ZXJsYXBzOwkvKiB0cnVlIGlmIHRoZSBsYXN0IGVsZW0gaXMg V0lUSE9VVCBPVkVSTEFQUyAqLwogfSBDb25zdHJhaW50SW5mbzsKIAogdHlwZWRlZiBzdHJ1Y3Qg X3BlcmlvZEluZm8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBs IGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggYzYxZDk1ZTgxNy4uMWZi MmRjODZjYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTY4MCw2ICs2ODAsMjggQEAg bXkgJXRlc3RzID0gKAogCQl9LAogCX0sCiAKKwknQUxURVIgVEFCTEUgT05MWSB0ZXN0X3RhYmxl IEFERCBDT05TVFJBSU5UIC4uLiBQUklNQVJZIEtFWSAoLi4uLCAuLi4gV0lUSE9VVCBPVkVSTEFQ UyknID0+IHsKKwkJY3JlYXRlX3NxbCAgPT4gJ0NSRUFURSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90 YWJsZV90cGsgKAorCQkJCQkJCWNvbDEgaW50NHJhbmdlLAorCQkJCQkJCWNvbDIgdHN0enJhbmdl LAorCQkJCQkJCUNPTlNUUkFJTlQgdGVzdF90YWJsZV90cGtfcGtleSBQUklNQVJZIEtFWQorCQkJ CQkJCQkoY29sMSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKSk7JywKKwkJcmVnZXhwID0+IHFyL14K KwkJCVxRQUxURVIgVEFCTEUgT05MWSBkdW1wX3Rlc3QudGVzdF90YWJsZV90cGtcRSBcbl5ccysK KwkJCVxRQUREIENPTlNUUkFJTlQgdGVzdF90YWJsZV90cGtfcGtleSBQUklNQVJZIEtFWSAoY29s MSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsKKwkJCSVm dWxsX3J1bnMsCisJCQklZHVtcF90ZXN0X3NjaGVtYV9ydW5zLAorCQkJc2VjdGlvbl9wb3N0X2Rh dGEgICAgPT4gMSwKKwkJCWV4Y2x1ZGVfdGVzdF90YWJsZSAgICAgICA9PiAxLAorCQl9LAorCQl1 bmxpa2UgPT4geworCQkJb25seV9kdW1wX3Rlc3RfdGFibGUgPT4gMSwKKwkJCWV4Y2x1ZGVfZHVt cF90ZXN0X3NjaGVtYSA9PiAxLAorCQl9LAorCX0sCisKIAknQUxURVIgVEFCTEUgKHBhcnRpdGlv bmVkKSBBREQgQ09OU1RSQUlOVCAuLi4gRk9SRUlHTiBLRVknID0+IHsKIAkJY3JlYXRlX29yZGVy ID0+IDQsCiAJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3Rh YmxlX2ZrICgKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKaW5kZXggYjVlMjQyNjU4ZS4uNDk4YzEwYjU3NCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAg LTI2MjUsNiArMjYyNSw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNj aGVtYW5hbWUsCiAJCQkJCQl9CiAKIAkJCQkJCS8qIEV2ZXJ5dGhpbmcgYWZ0ZXIgIlVTSU5HIiBp cyBlY2hvZWQgdmVyYmF0aW0gKi8KKwkJCQkJCS8vIFRPRE86IFNob3cgV0lUSE9VVCBPVkVSTEFQ UyBpbmZvIGhlcmU/CisJCQkJCQkvLyBJdCBpcyBub3QgcmVhbGx5IHBhcnQgb2YgdGhlICppbmRl eCouCiAJCQkJCQlpbmRleGRlZiA9IFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA1KTsKIAkJCQkJCXVz aW5ncG9zID0gc3Ryc3RyKGluZGV4ZGVmLCAiIFVTSU5HICIpOwogCQkJCQkJaWYgKHVzaW5ncG9z KQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9pbmRleC5oCmluZGV4IDAwOGY3MjNlMTAuLjhiYzJiMGJlOTEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2lu ZGV4LmgKQEAgLTkxLDYgKzkxLDcgQEAgZXh0ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX0lOSVRfREVGRVJSRUQJ KDEgPDwgMikKICNkZWZpbmUJSU5ERVhfQ09OU1RSX0NSRUFURV9VUERBVEVfSU5ERVgJKDEgPDwg MykKICNkZWZpbmUJSU5ERVhfQ09OU1RSX0NSRUFURV9SRU1PVkVfT0xEX0RFUFMJKDEgPDwgNCkK KyNkZWZpbmUJSU5ERVhfQ09OU1RSX0NSRUFURV9URU1QT1JBTAkJKDEgPDwgNSkKIAogZXh0ZXJu IE9pZAlpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogCQkJCQkJCQkJCSAgIE9pZCBvbGRJbmRleElkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19jb25zdHJhaW50LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuaAppbmRleCBlNzViYWE4ZTFlLi42YzY2NzViMGY3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nv bnN0cmFpbnQuaApAQCAtMTA3LDYgKzEwNywxNCBAQCBDQVRBTE9HKHBnX2NvbnN0cmFpbnQsMjYw NixDb25zdHJhaW50UmVsYXRpb25JZCkKIAkvKiBIYXMgYSBsb2NhbCBkZWZpbml0aW9uIGFuZCBj YW5ub3QgYmUgaW5oZXJpdGVkICovCiAJYm9vbAkJY29ubm9pbmhlcml0OwogCisJLyoKKwkgKiBG b3IgcHJpbWFyeSBhbmQgZm9yZWlnbiBrZXlzLCBzaWduaWZpZXMgdGhlIGxhc3QgY29sdW1uIGlz IGEgcmFuZ2UKKwkgKiBhbmQgc2hvdWxkIHVzZSBvdmVybGFwcyBpbnN0ZWFkIG9mIGVxdWFscy4K KwkgKi8KKwlib29sCQljb250ZW1wb3JhbDsKKworCU9pZAkJCWNvbnBlcmlvZDsJCS8qIGxvY2Fs IFBFUklPRCB1c2VkIGluIFBLL0ZLIGNvbnN0cmFpbnQgKi8KKwogI2lmZGVmIENBVEFMT0dfVkFS TEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAKIAkvKgpAQCAt MTQwLDcgKzE0OCw3IEBAIENBVEFMT0cocGdfY29uc3RyYWludCwyNjA2LENvbnN0cmFpbnRSZWxh dGlvbklkKQogCiAJLyoKIAkgKiBJZiBhbiBleGNsdXNpb24gY29uc3RyYWludCwgdGhlIE9JRHMg b2YgdGhlIGV4Y2x1c2lvbiBvcGVyYXRvcnMgZm9yCi0JICogZWFjaCBjb2x1bW4gb2YgdGhlIGNv bnN0cmFpbnQKKwkgKiBlYWNoIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludC4gQWxzbyBzZXQgZm9y IHRlbXBvcmFsIHByaW1hcnkga2V5cy4KIAkgKi8KIAlPaWQJCQljb25leGNsb3BbMV0gQktJX0xP T0tVUChwZ19vcGVyYXRvcik7CiAKQEAgLTIyNyw2ICsyMzUsOCBAQCBleHRlcm4gT2lkCUNyZWF0 ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJCQkJCQkJICBi b29sIGNvbklzTG9jYWwsCiAJCQkJCQkJCSAgaW50IGNvbkluaENvdW50LAogCQkJCQkJCQkgIGJv b2wgY29uTm9Jbmhlcml0LAorCQkJCQkJCQkgIGJvb2wgY29uVGVtcG9yYWwsCisJCQkJCQkJCSAg T2lkIHBlcmlvZCwKIAkJCQkJCQkJICBib29sIGlzX2ludGVybmFsKTsKIAogZXh0ZXJuIHZvaWQg UmVtb3ZlQ29uc3RyYWludEJ5SWQoT2lkIGNvbklkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2RlZnJlbS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKaW5kZXgg Zjg0ZDA5OTU5Yy4uYjZlMmQxNjk2OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMv ZGVmcmVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKQEAgLTQzLDcgKzQz LDggQEAgZXh0ZXJuIGNoYXIgKkNob29zZVJlbGF0aW9uTmFtZShjb25zdCBjaGFyICpuYW1lMSwg Y29uc3QgY2hhciAqbmFtZTIsCiBleHRlcm4gYm9vbCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQg b2xkSWQsCiAJCQkJCQkJCSBjb25zdCBjaGFyICphY2Nlc3NNZXRob2ROYW1lLAogCQkJCQkJCQkg TGlzdCAqYXR0cmlidXRlTGlzdCwKLQkJCQkJCQkJIExpc3QgKmV4Y2x1c2lvbk9wTmFtZXMpOwor CQkJCQkJCQkgTGlzdCAqZXhjbHVzaW9uT3BOYW1lcywKKwkJCQkJCQkJIGNvbnN0IGNoYXIgKmlu ZGV4UGVyaW9kTmFtZSk7CiBleHRlcm4gT2lkCUdldERlZmF1bHRPcENsYXNzKE9pZCB0eXBlX2lk LCBPaWQgYW1faWQpOwogZXh0ZXJuIE9pZAlSZXNvbHZlT3BDbGFzcyhMaXN0ICpvcGNsYXNzLCBP aWQgYXR0clR5cGUsCiAJCQkJCQkgICBjb25zdCBjaGFyICphY2Nlc3NNZXRob2ROYW1lLCBPaWQg YWNjZXNzTWV0aG9kSWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAzN2NiNGYzZDU5Li5lY2E4 NTI4MzVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTI4LDYgKzEyOCw3IEBAIHR5cGVkZWYg c3RydWN0IEV4cHJTdGF0ZQogICoJCUluZGV4QXR0ck51bWJlcnMJdW5kZXJseWluZy1yZWwgYXR0 cmlidXRlIG51bWJlcnMgdXNlZCBhcyBrZXlzCiAgKgkJCQkJCQkoemVyb2VzIGluZGljYXRlIGV4 cHJlc3Npb25zKS4gSXQgYWxzbyBjb250YWlucwogICogCQkJCQkJCWluZm8gYWJvdXQgaW5jbHVk ZWQgY29sdW1ucy4KKyAqCQlQZXJpb2QJCQkJcGVyaW9kIHVzZWQgaW4gdGhlIGluZGV4LCBvciBO VUxMIGlmIG5vbmUKICAqCQlFeHByZXNzaW9ucwkJCWV4cHIgdHJlZXMgZm9yIGV4cHJlc3Npb24g ZW50cmllcywgb3IgTklMIGlmIG5vbmUKICAqCQlFeHByZXNzaW9uc1N0YXRlCWV4ZWMgc3RhdGUg Zm9yIGV4cHJlc3Npb25zLCBvciBOSUwgaWYgbm9uZQogICoJCVByZWRpY2F0ZQkJCXBhcnRpYWwt aW5kZXggcHJlZGljYXRlLCBvciBOSUwgaWYgbm9uZQpAQCAtMTM5LDYgKzE0MCw3IEBAIHR5cGVk ZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCVVuaXF1ZVByb2NzCiAgKgkJVW5pcXVlU3RyYXRzCiAg KgkJVW5pcXVlCQkJCWlzIGl0IGEgdW5pcXVlIGluZGV4PworICoJCVRlbXBvcmFsCQkJaXMgaXQg Zm9yIGEgdGVtcG9yYWwgY29uc3RyYWludD8KICAqCQlPcGNsYXNzT3B0aW9ucwkJb3BjbGFzcy1z cGVjaWZpYyBvcHRpb25zLCBvciBOVUxMIGlmIG5vbmUKICAqCQlSZWFkeUZvckluc2VydHMJCWlz IGl0IHZhbGlkIGZvciBpbnNlcnRzPwogICoJCUNvbmN1cnJlbnQJCQlhcmUgd2UgZG9pbmcgYSBj b25jdXJyZW50IGluZGV4IGJ1aWxkPwpAQCAtMTU4LDYgKzE2MCw3IEBAIHR5cGVkZWYgc3RydWN0 IEluZGV4SW5mbwogCWludAkJCWlpX051bUluZGV4QXR0cnM7CS8qIHRvdGFsIG51bWJlciBvZiBj b2x1bW5zIGluIGluZGV4ICovCiAJaW50CQkJaWlfTnVtSW5kZXhLZXlBdHRyczsJLyogbnVtYmVy IG9mIGtleSBjb2x1bW5zIGluIGluZGV4ICovCiAJQXR0ck51bWJlcglpaV9JbmRleEF0dHJOdW1i ZXJzW0lOREVYX01BWF9LRVlTXTsKKwlOb2RlCSAgICppaV9QZXJpb2Q7CS8qIHBlcmlvZCB1c2Vk IGluIHRoZSBpbmRleCAqLwogCUxpc3QJICAgKmlpX0V4cHJlc3Npb25zOyAvKiBsaXN0IG9mIEV4 cHIgKi8KIAlMaXN0CSAgICppaV9FeHByZXNzaW9uc1N0YXRlOwkvKiBsaXN0IG9mIEV4cHJTdGF0 ZSAqLwogCUxpc3QJICAgKmlpX1ByZWRpY2F0ZTsJLyogbGlzdCBvZiBFeHByICovCkBAIC0xNzAs NiArMTczLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvCiAJdWludDE2CSAgICppaV9Vbmlx dWVTdHJhdHM7CS8qIGFycmF5IHdpdGggb25lIGVudHJ5IHBlciBjb2x1bW4gKi8KIAlEYXR1bQkg ICAqaWlfT3BjbGFzc09wdGlvbnM7CS8qIGFycmF5IHdpdGggb25lIGVudHJ5IHBlciBjb2x1bW4g Ki8KIAlib29sCQlpaV9VbmlxdWU7CisJYm9vbAkJaWlfVGVtcG9yYWw7CiAJYm9vbAkJaWlfUmVh ZHlGb3JJbnNlcnRzOwogCWJvb2wJCWlpX0NvbmN1cnJlbnQ7CiAJYm9vbAkJaWlfQnJva2VuSG90 Q2hhaW47CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBiL3NyYy9p bmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCmluZGV4IDQ4YTdlYmZlNDUuLjcwMTk5ZjNkNGMgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCisrKyBiL3NyYy9pbmNsdWRl L25vZGVzL21ha2VmdW5jcy5oCkBAIC05Niw3ICs5Niw4IEBAIGV4dGVybiBMaXN0ICptYWtlX2Fu ZHNfaW1wbGljaXQoRXhwciAqY2xhdXNlKTsKIAogZXh0ZXJuIEluZGV4SW5mbyAqbWFrZUluZGV4 SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLAogCQkJCQkJCQlM aXN0ICpleHByZXNzaW9ucywgTGlzdCAqcHJlZGljYXRlcywKLQkJCQkJCQkJYm9vbCB1bmlxdWUs IGJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJyZW50KTsKKwkJCQkJCQkJYm9vbCB1bmlxdWUsIGJv b2wgdGVtcG9yYWwsIGJvb2wgaXNyZWFkeSwKKwkJCQkJCQkJYm9vbCBjb25jdXJyZW50KTsKIAog ZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtKGNoYXIgKm5hbWUsIE5vZGUgKmFyZywgaW50IGxv Y2F0aW9uKTsKIGV4dGVybiBEZWZFbGVtICptYWtlRGVmRWxlbUV4dGVuZGVkKGNoYXIgKm5hbWVT cGFjZSwgY2hhciAqbmFtZSwgTm9kZSAqYXJnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDli ZTQwZTk4NDIuLjdkMzA3OTJhYmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTIzMjgsNiAr MjMyOCw5IEBAIHR5cGVkZWYgc3RydWN0IENvbnN0cmFpbnQKIAlPaWQJCQlvbGRfcGt0YWJsZV9v aWQ7CS8qIHBnX2NvbnN0cmFpbnQuY29uZnJlbGlkIG9mIG15IGZvcm1lcgogCQkJCQkJCQkJICog c2VsZiAqLwogCisgIC8qIEZpZWxkcyB1c2VkIGZvciB0ZW1wb3JhbCBQUklNQVJZIEtFWSBhbmQg Rk9SRUlHTiBLRVkgY29uc3RyYWludHM6ICovCisJTm9kZQkgICAqd2l0aG91dF9vdmVybGFwczsg LyogU3RyaW5nIG5vZGUgbmFtaW5nIFBFUklPRCBvciByYW5nZSBjb2x1bW4gKi8KKwogCS8qIEZp ZWxkcyB1c2VkIGZvciBjb25zdHJhaW50cyB0aGF0IGFsbG93IGEgTk9UIFZBTElEIHNwZWNpZmlj YXRpb24gKi8KIAlib29sCQlza2lwX3ZhbGlkYXRpb247CS8qIHNraXAgdmFsaWRhdGlvbiBvZiBl eGlzdGluZyByb3dzPyAqLwogCWJvb2wJCWluaXRpYWxseV92YWxpZDsJLyogbWFyayB0aGUgbmV3 IGNvbnN0cmFpbnQgYXMgdmFsaWQ/ICovCkBAIC0yOTI5LDYgKzI5MzIsNyBAQCB0eXBlZGVmIHN0 cnVjdCBJbmRleFN0bXQKIAlib29sCQl1bmlxdWU7CQkJLyogaXMgaW5kZXggdW5pcXVlPyAqLwog CWJvb2wJCXByaW1hcnk7CQkvKiBpcyBpbmRleCBhIHByaW1hcnkga2V5PyAqLwogCWJvb2wJCWlz Y29uc3RyYWludDsJLyogaXMgaXQgZm9yIGEgcGtleS91bmlxdWUgY29uc3RyYWludD8gKi8KKwli b29sCQlpc3RlbXBvcmFsOwkJLyogaXMgaXQgZm9yIGEgdGVtcG9yYWwgcGtleT8gKi8KIAlib29s CQlkZWZlcnJhYmxlOwkJLyogaXMgdGhlIGNvbnN0cmFpbnQgREVGRVJSQUJMRT8gKi8KIAlib29s CQlpbml0ZGVmZXJyZWQ7CS8qIGlzIHRoZSBjb25zdHJhaW50IElOSVRJQUxMWSBERUZFUlJFRD8g Ki8KIAlib29sCQl0cmFuc2Zvcm1lZDsJLyogdHJ1ZSB3aGVuIHRyYW5zZm9ybUluZGV4U3RtdCBp cyBmaW5pc2hlZCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgg Yi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCBiYjhjMWI2NzQyLi5iM2FhZDIx OGYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTQ0LDYgKzE0NCw3IEBAIGV4dGVybiBjaGFy IGdldF9yZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9y bV9mcm9tc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJu IE9pZAlnZXRfdHJhbnNmb3JtX3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJm dHlwZXMpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOworZXh0ZXJu IGNoYXIgKmdldF90eXBuYW1lKE9pZCB0eXBpZCk7CiBleHRlcm4gaW50MTYgZ2V0X3R5cGxlbihP aWQgdHlwaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGJ5dmFsKE9pZCB0eXBpZCk7CiBleHRlcm4g dm9pZCBnZXRfdHlwbGVuYnl2YWwoT2lkIHR5cGlkLCBpbnQxNiAqdHlwbGVuLCBib29sICp0eXBi eXZhbCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVj ay5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQKaW5kZXgg Y2Q4NjVlNTY0NC4uNzk3ZDdiNGY3MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zYW5pdHlfY2hlY2sub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Fu aXR5X2NoZWNrLm91dApAQCAtMjIxLDYgKzIyMSw4IEBAIHRyaWdnZXJfcGFydGVkX3AyfHQKIHRy aWdnZXJfcGFydGVkX3AyXzJ8dAogdmFyY2hhcl90Ymx8Zgogdmlld19iYXNlX3RhYmxlfHQKK3dp dGhvdXRfb3ZlcmxhcHNfdGVzdHx0Cit3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3R8dAogLS0gcmVz dG9yZSBub3JtYWwgb3V0cHV0IG1vZGUKIFxhXHQKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi43MDhiNWQzNTI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtMCwwICsxLDI4NiBAQAorLS0gVGVz dHMgZm9yIFdJVEhPVVQgT1ZFUkxBUFMuCistLQorLS0gdGVzdCBpbnB1dCBwYXJzZXIKKy0tCist LSBQSyB3aXRoIG5vIGNvbHVtbnMganVzdCBXSVRIT1VUIE9WRVJMQVBTOgorQ1JFQVRFIFRBQkxF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5U IHdpdGhvdXRfb3ZlcmxhcHNfcGsgUFJJTUFSWSBLRVkgKHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiV0lUSE9VVCIKK0xJTkUg MzogLi4uU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzX3BrIFBSSU1BUlkgS0VZICh2YWxpZF9hdCBX SVRIT1VUIE9WLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gUEsgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhh dCBpc24ndCB0aGVyZToKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKAorCWlk IElOVEVHRVIsCisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitFUlJPUjogIHJhbmdlIG9yIFBFUklP RCAidmFsaWRfYXQiIG5hbWVkIGluIFdJVEhPVVQgT1ZFUkxBUFMgZG9lcyBub3QgZXhpc3QKKy0t IFBLIHdpdGggYSBub24tcmFuZ2UgY29sdW1uOgorQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCAoCisJaWQgSU5URUdFUiwKKwl2YWxpZF9hdCBURVhULAorCUNPTlNUUkFJTlQgd2l0 aG91dF9vdmVybGFwc19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispOworRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0IiBuYW1lZCBpbiBXSVRIT1VUIE9WRVJM QVBTIGlzIG5vdCBhIHJhbmdlIHR5cGUKKy0tIFBLIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgcmFu Z2U6CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0ICgKKwktLSBTaW5jZSB3ZSBj YW4ndCBkZXBlbmQgb24gaGF2aW5nIGJ0cmVlX2dpc3QgaGVyZSwKKwktLSB1c2UgYW4gaW50NHJh bmdlIGluc3RlYWQgb2YgYW4gaW50LgorCS0tIChUaGUgcmFuZ2V0eXBlcyByZWdyZXNzaW9uIHRl c3QgdXNlcyB0aGUgc2FtZSB0cmljay4pCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CistLSBQSyB3aXRoIHR3byBjb2x1bW5zIHBsdXMg YSByYW5nZToKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZDEgaW50 NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5U IHdpdGhvdXRfb3ZlcmxhcHMyX3BrIFBSSU1BUlkgS0VZIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKyk7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7Cist LSBQSyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIFBFUklPRDoKK0NSRUFURSBUQUJMRSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSBkYXRlLAorCXZh bGlkX3RpbCBkYXRlLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3Rp bCksCisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl9wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAnd2l0aG91dF9vdmVybGFw czJfcGsnOworICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSByb3cpCisKK0RST1AgVEFCTEUg d2l0aG91dF9vdmVybGFwc190ZXN0MjsKKy0tIFBLIHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIFBF UklPRDoKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZDEgaW50NHJh bmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSBkYXRlLAorCXZhbGlkX3RpbCBkYXRl LAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQ09OU1RS QUlOVCB3aXRob3V0X292ZXJsYXBzMl9wayBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qy OworLS0gUEsgd2l0aCBhIGN1c3RvbSByYW5nZSB0eXBlOgorQ1JFQVRFIFRZUEUgdGV4dHJhbmdl MiBBUyByYW5nZSAoc3VidHlwZT10ZXh0LCBjb2xsYXRpb249IkMiKTsKK0NSRUFURSBUQUJMRSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdGV4dHJh bmdlMiwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJs YXBzX3Rlc3QyIERST1AgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl9wazsKK0RST1AgVEFC TEUgd2l0aG91dF9vdmVybGFwc190ZXN0MjsKK0RST1AgVFlQRSB0ZXh0cmFuZ2UyOworLS0gVU5J UVVFIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CitDUkVBVEUgVEFCTEUg d2l0aG91dF9vdmVybGFwc191cV90ZXN0ICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJ TlQgd2l0aG91dF9vdmVybGFwc191cSBVTklRVUUgKHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CispOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiV0lUSE9VVCIKK0xJTkUgMzog IENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc191cSBVTklRVUUgKHZhbGlkX2F0IFdJVEhPVVQg T1ZFLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCistLSBVTklRVUUgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24n dCB0aGVyZToKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QgKAorCWlkIElO VEVHRVIsCisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzX3VxIFVOSVFVRSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICByYW5nZSBvciBQRVJJT0QgInZhbGlk X2F0IiBuYW1lZCBpbiBXSVRIT1VUIE9WRVJMQVBTIGRvZXMgbm90IGV4aXN0CistLSBVTklRVUUg d2l0aCBhIG5vbi1yYW5nZSBjb2x1bW46CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc191 cV90ZXN0ICgKKwlpZCBJTlRFR0VSLAorCXZhbGlkX2F0IFRFWFQsCisJQ09OU1RSQUlOVCB3aXRo b3V0X292ZXJsYXBzX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0IiBuYW1lZCBpbiBXSVRIT1VUIE9WRVJMQVBTIGlz IG5vdCBhIHJhbmdlIHR5cGUKKy0tIFVOSVFVRSB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdl OgorQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdXFfdGVzdCAoCisJLS0gU2luY2Ugd2Ug Y2FuJ3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJLS0gdXNlIGFuIGludDRy YW5nZSBpbnN0ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlwZXMgcmVncmVzc2lvbiB0 ZXN0IHVzZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jh bmdlLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc191cSBVTklRVUUgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKy0tIFVOSVFVRSB3aXRoIHR3byBjb2x1bW5zIHBsdXMg YSByYW5nZToKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QyICgKKwlpZDEg aW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJB SU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3VxIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QyOwor LS0gVU5JUVVFIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgUEVSSU9EOgorQ1JFQVRFIFRBQkxFIHdp dGhvdXRfb3ZlcmxhcHNfdXFfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRp bWVzdGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZh bGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl91cSBV TklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0RST1AgVEFCTEUgd2l0 aG91dF9vdmVybGFwc191cV90ZXN0MjsKKy0tIFVOSVFVRSB3aXRoIHR3byBjb2x1bW5zIHBsdXMg YSBQRVJJT0Q6CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0MiAoCisJaWQx IGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGltZXN0YW1wLAorCXZh bGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFs aWRfdGlsKSwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3VxIFVOSVFVRSAoaWQxLCBp ZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRFJPUCBUQUJMRSB3aXRob3V0X292 ZXJsYXBzX3VxX3Rlc3QyOworLS0gVU5JUVVFIHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZToKK0NS RUFURSBUWVBFIHRleHRyYW5nZTIgQVMgcmFuZ2UgKHN1YnR5cGU9dGV4dCwgY29sbGF0aW9uPSJD Iik7CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0MiAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IHRleHRyYW5nZTIsCisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBz Ml91cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRB QkxFIHdpdGhvdXRfb3ZlcmxhcHNfdXFfdGVzdDIgRFJPUCBDT05TVFJBSU5UIHdpdGhvdXRfb3Zl cmxhcHMyX3VxOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QyOworRFJPUCBU WVBFIHRleHRyYW5nZTI7CistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAor LS0KK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0OworQ1JFQVRFIFRBQkxFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7 CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCB3aXRo b3V0X292ZXJsYXBzX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKTsKKy0tIFBLIHdpdGggVVNJTkcgSU5ERVggKG5vdCB5ZXQgYWxsb3dlZCk6CitDUkVBVEUg VEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5ERVggaWR4X3dpdGhvdXRfb3ZlcmxhcHMyIE9OIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdDIgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIKKwlBREQgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBz Ml9waworCVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF93aXRob3V0X292ZXJsYXBzMjsKK0VS Uk9SOiAgImlkeF93aXRob3V0X292ZXJsYXBzMiIgaXMgbm90IGEgdW5pcXVlIGluZGV4CitMSU5F IDI6ICBBREQgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl9waworICAgICAgICAgICAgIF4K K0RFVEFJTDogIENhbm5vdCBjcmVhdGUgYSBwcmltYXJ5IGtleSBvciB1bmlxdWUgY29uc3RyYWlu dCB1c2luZyBzdWNoIGFuIGluZGV4LgorRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qy OworLS0gVU5JUVVFIHdpdGggVVNJTkcgSU5ERVggKG5vdCB5ZXQgYWxsb3dlZCk6CitDUkVBVEUg VEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5ERVggaWR4X3dpdGhvdXRfb3ZlcmxhcHNfdXEgT04g d2l0aG91dF9vdmVybGFwc191cV90ZXN0MiBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxU RVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0MgorCUFERCBDT05TVFJBSU5UIHdpdGhv dXRfb3ZlcmxhcHMyX3VxCisJVU5JUVVFIFVTSU5HIElOREVYIGlkeF93aXRob3V0X292ZXJsYXBz X3VxOworRVJST1I6ICAiaWR4X3dpdGhvdXRfb3ZlcmxhcHNfdXEiIGlzIG5vdCBhIHVuaXF1ZSBp bmRleAorTElORSAyOiAgQUREIENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfdXEKKyAgICAg ICAgICAgICBeCitERVRBSUw6ICBDYW5ub3QgY3JlYXRlIGEgcHJpbWFyeSBrZXkgb3IgdW5pcXVl IGNvbnN0cmFpbnQgdXNpbmcgc3VjaCBhbiBpbmRleC4KK0RST1AgVEFCTEUgd2l0aG91dF9vdmVy bGFwc191cV90ZXN0MjsKKy0tIEFkZCByYW5nZSBjb2x1bW4gYW5kIHRoZSBQSyBhdCB0aGUgc2Ft ZSB0aW1lCitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJh bmdlCispOworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MgorCUFERCBDT0xVTU4g dmFsaWRfYXQgdHNyYW5nZSwKKwlBREQgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl9wawor CVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CistLSBBZGQgUEVSSU9EIGFuZCB0aGUgUEsgYXQgdGhl IHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9mcm9tIGRhdGUsCisJdmFsaWRfdGlsIGRhdGUKKyk7CitBTFRFUiBU QUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyCisJQUREIFBFUklPRCBGT1IgdmFsaWRfYXQgKHZh bGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQUREIENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJf cGsKKwlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBU QUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyOworLS0gQWRkIHJhbmdlIGNvbHVtbiBhbmQgVU5J UVVFIGNvbnN0cmFpbnQgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdDIKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJ TlQgd2l0aG91dF9vdmVybGFwczJfdXEKKwlVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKTsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MjsKKy0tIEFkZCBQRVJJ T0QgY29sdW1uIGFuZCBVTklRVUUgY29uc3RyYWludCBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUg VEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zy b20gZGF0ZSwKKwl2YWxpZF90aWwgZGF0ZQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdDIKKwlBREQgUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGls KSwKKwlBREQgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl91cQorCVVOSVFVRSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rl c3QyOworLS0gQWRkIGRhdGUgY29sdW1ucywgUEVSSU9ELCBhbmQgdGhlIFBLIGF0IHRoZSBzYW1l IHRpbWUKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZCBpbnQ0cmFu Z2UKKyk7CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyCisJQUREIENPTFVNTiB2 YWxpZF9mcm9tIGRhdGUsCisJQUREIENPTFVNTiB2YWxpZF90aWwgZGF0ZSwKKwlBREQgUEVSSU9E IEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlBREQgQ09OU1RSQUlOVCB3 aXRob3V0X292ZXJsYXBzMl9waworCVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUyk7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CistLSBBZGQgZGF0 ZSBjb2x1bW5zLCBQRVJJT0QsIGFuZCBVTklRVUUgY29uc3RyYWludCBhdCB0aGUgc2FtZSB0aW1l CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJhbmdlCisp OworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MgorCUFERCBDT0xVTU4gdmFsaWRf ZnJvbSBkYXRlLAorCUFERCBDT0xVTU4gdmFsaWRfdGlsIGRhdGUsCisJQUREIFBFUklPRCBGT1Ig dmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQUREIENPTlNUUkFJTlQgd2l0aG91 dF9vdmVybGFwczJfdXEKKwlVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsK K0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MjsKKy0tCistLSB0ZXN0IHBnX2dldF9j b25zdHJhaW50ZGVmCistLQorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBw Z19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAnd2l0aG91dF9vdmVybGFwc19wayc7CisgICAg ICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykKKworLS0KKy0tIHRlc3QgUEsgaW5zZXJ0cwor LS0KKy0tIG9rYXk6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgn WzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnKSk7CitJTlNFUlQgSU5U TyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAz LTAzJywgJzIwMTgtMDQtMDQnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CitJ TlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzMsM10nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgTlVMTCkpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDEtMDUnKSk7CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBl eGNsdXNpb24gY29uc3RyYWludCAid2l0aG91dF9vdmVybGFwc19wayIKK0RFVEFJTDogIEtleSAo aWQsIHZhbGlkX2F0KT0oWzEsMiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEph biAwNSAwMDowMDowMCAyMDE4IikpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIHZh bGlkX2F0KT0oWzEsMiksIFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAw MDowMDowMCAyMDE4IikpLgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVF UyAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworRVJST1I6ICBu dWxsIHZhbHVlIGluIGNvbHVtbiAiaWQiIG9mIHJlbGF0aW9uICJ3aXRob3V0X292ZXJsYXBzX3Rl c3QiIHZpb2xhdGVzIG5vdC1udWxsIGNvbnN0cmFpbnQKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNv bnRhaW5zIChudWxsLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUgMDA6 MDA6MDAgMjAxOCIpKS4KK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMg KCdbMywzXScsIE5VTEwpOworRVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAidmFsaWRfYXQi IG9mIHJlbGF0aW9uICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QiIHZpb2xhdGVzIG5vdC1udWxsIGNv bnN0cmFpbnQKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChbMyw0KSwgbnVsbCkuCist LQorLS0gdGVzdCBjaGFuZ2luZyB0aGUgUEsncyBkZXBlbmRlbmNpZXMKKy0tCitDUkVBVEUgVEFC TEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRz cmFuZ2UsCisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl9wayBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVy bGFwc190ZXN0MiBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgRFJPUCBOT1QgTlVMTDsKK0VSUk9SOiAg Y29sdW1uICJ2YWxpZF9hdCIgaXMgaW4gYSBwcmltYXJ5IGtleQorQUxURVIgVEFCTEUgd2l0aG91 dF9vdmVybGFwc190ZXN0MiBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3R6cmFuZ2UgVVNJ TkcgdHN0enJhbmdlKGxvd2VyKHZhbGlkX2F0KSwgdXBwZXIodmFsaWRfYXQpKTsKK0FMVEVSIFRB QkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgUkVOQU1FIENPTFVNTiB2YWxpZF9hdCBUTyB2YWxp ZF90aHJ1OworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBEUk9QIENPTFVNTiB2 YWxpZF90aHJ1OworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggMWJkNDM1YzNhMC4uMDcyMzlhN2VhMCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0zMCw3ICszMCw3IEBAIHRlc3Q6IHN0cmluZ3MgbnVt ZXJvbG9neSBwb2ludCBsc2VnIGxpbmUgYm94IHBhdGggcG9seWdvbiBjaXJjbGUgZGF0ZSB0aW1l IHRpbWV0CiAjIGhvcm9sb2d5IGRlcGVuZHMgb24gaW50ZXJ2YWwsIHRpbWV0eiwgdGltZXN0YW1w LCB0aW1lc3RhbXB0egogIyBvcHJfc2FuaXR5IGRlcGVuZHMgb24gY3JlYXRlX2Z1bmN0aW9uXzAK ICMgLS0tLS0tLS0tLQotdGVzdDogZ2VvbWV0cnkgaG9yb2xvZ3kgdHN0eXBlcyByZWdleCB0eXBl X3Nhbml0eSBvcHJfc2FuaXR5IG1pc2Nfc2FuaXR5IGNvbW1lbnRzIGV4cHJlc3Npb25zIHVuaWNv ZGUgeGlkIG12Y2MKK3Rlc3Q6IGdlb21ldHJ5IGhvcm9sb2d5IHRzdHlwZXMgcmVnZXggdHlwZV9z YW5pdHkgb3ByX3Nhbml0eSBtaXNjX3Nhbml0eSBjb21tZW50cyBleHByZXNzaW9ucyB1bmljb2Rl IHhpZCBtdmNjIHdpdGhvdXRfb3ZlcmxhcHMKIAogIyAtLS0tLS0tLS0tCiAjIFRoZXNlIGZvdXIg ZWFjaCBkZXBlbmQgb24gdGhlIHByZXZpb3VzIG9uZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5l NjRlYzY5ZjBiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91 dF9vdmVybGFwcy5zcWwKQEAgLTAsMCArMSwyOTUgQEAKKy0tIFRlc3RzIGZvciBXSVRIT1VUIE9W RVJMQVBTLgorCistLQorLS0gdGVzdCBpbnB1dCBwYXJzZXIKKy0tCisKKy0tIFBLIHdpdGggbm8g Y29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CisKK0NSRUFURSBUQUJMRSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgKAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB3aXRob3V0X292 ZXJsYXBzX3BrIFBSSU1BUlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKwor LS0gUEsgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0aGVyZToKKworQ1JF QVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJB SU5UIHdpdGhvdXRfb3ZlcmxhcHNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorKTsKKworLS0gUEsgd2l0aCBhIG5vbi1yYW5nZSBjb2x1bW46CisKK0NSRUFU RSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKAorCWlkIElOVEVHRVIsCisJdmFsaWRfYXQg VEVYVCwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gUEsgd2l0aCBvbmUgY29sdW1uIHBs dXMgYSByYW5nZToKKworQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoCisJLS0g U2luY2Ugd2UgY2FuJ3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJLS0gdXNl IGFuIGludDRyYW5nZSBpbnN0ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlwZXMgcmVn cmVzc2lvbiB0ZXN0IHVzZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5nZSwKKwl2YWxp ZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc19wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBQSyB3aXRoIHR3byBj b2x1bW5zIHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qy ICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwK KwlDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3BrIFBSSU1BUlkgS0VZIChpZDEsIGlkMiwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdDI7CisKKworLS0gUEsgd2l0aCBvbmUgY29sdW1uIHBsdXMgYSBQRVJJT0Q6CitDUkVB VEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2Zyb20gZGF0ZSwKKwl2YWxpZF90aWwgZGF0ZSwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxp ZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1NFTEVDVCBwZ19n ZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0g J3dpdGhvdXRfb3ZlcmxhcHMyX3BrJzsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0 MjsKKworLS0gUEsgd2l0aCB0d28gY29sdW1ucyBwbHVzIGEgUEVSSU9EOgorQ1JFQVRFIFRBQkxF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5n ZSwKKwl2YWxpZF9mcm9tIGRhdGUsCisJdmFsaWRfdGlsIGRhdGUsCisJUEVSSU9EIEZPUiB2YWxp ZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3Zlcmxh cHMyX3BrIFBSSU1BUlkgS0VZIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CisKKy0tIFBLIHdpdGggYSBj dXN0b20gcmFuZ2UgdHlwZToKK0NSRUFURSBUWVBFIHRleHRyYW5nZTIgQVMgcmFuZ2UgKHN1YnR5 cGU9dGV4dCwgY29sbGF0aW9uPSJDIik7CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190 ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRleHRyYW5nZTIsCisJQ09OU1RSQUlO VCB3aXRob3V0X292ZXJsYXBzMl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBEUk9QIENP TlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGs7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdDI7CitEUk9QIFRZUEUgdGV4dHJhbmdlMjsKKworLS0gVU5JUVVFIHdpdGggbm8gY29s dW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CisKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJs YXBzX3VxX3Rlc3QgKAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB3aXRob3V0X292 ZXJsYXBzX3VxIFVOSVFVRSAodmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFVO SVFVRSB3aXRoIGEgcmFuZ2UgY29sdW1uL1BFUklPRCB0aGF0IGlzbid0IHRoZXJlOgorCitDUkVB VEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0ICgKKwlpZCBJTlRFR0VSLAorCUNPTlNU UkFJTlQgd2l0aG91dF9vdmVybGFwc191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKTsKKworLS0gVU5JUVVFIHdpdGggYSBub24tcmFuZ2UgY29sdW1uOgorCitDUkVB VEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0ICgKKwlpZCBJTlRFR0VSLAorCXZhbGlk X2F0IFRFWFQsCisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzX3VxIFVOSVFVRSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBVTklRVUUgd2l0aCBvbmUgY29sdW1u IHBsdXMgYSByYW5nZToKKworQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdXFfdGVzdCAo CisJLS0gU2luY2Ugd2UgY2FuJ3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJ LS0gdXNlIGFuIGludDRyYW5nZSBpbnN0ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlw ZXMgcmVncmVzc2lvbiB0ZXN0IHVzZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc191cSBVTklR VUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gVU5JUVVFIHdpdGgg dHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNf dXFfdGVzdDIgKAorCWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfdXEgVU5JUVVFIChpZDEsIGlk MiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3Zl cmxhcHNfdXFfdGVzdDI7CisKKy0tIFVOSVFVRSB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIFBFUklP RDoKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QyICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJ T0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgd2l0 aG91dF9vdmVybGFwczJfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdXFfdGVzdDI7CisKKy0tIFVOSVFVRSB3 aXRoIHR3byBjb2x1bW5zIHBsdXMgYSBQRVJJT0Q6CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVy bGFwc191cV90ZXN0MiAoCisJaWQxIGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlk X2Zyb20gdGltZXN0YW1wLAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxp ZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3Zlcmxh cHMyX3VxIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOwor RFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QyOworCistLSBVTklRVUUgd2l0aCBh IGN1c3RvbSByYW5nZSB0eXBlOgorQ1JFQVRFIFRZUEUgdGV4dHJhbmdlMiBBUyByYW5nZSAoc3Vi dHlwZT10ZXh0LCBjb2xsYXRpb249IkMiKTsKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBz X3VxX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdGV4dHJhbmdlMiwKKwlDT05T VFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0MiBEUk9Q IENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfdXE7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3Zl cmxhcHNfdXFfdGVzdDI7CitEUk9QIFRZUEUgdGV4dHJhbmdlMjsKKworLS0KKy0tIHRlc3QgQUxU RVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0tCisKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFw c190ZXN0OworQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBz X3Rlc3QKKwlBREQgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzX3BrCisJUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKKworLS0gUEsgd2l0aCBVU0lORyBJTkRF WCAobm90IHlldCBhbGxvd2VkKToKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qy ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBp ZHhfd2l0aG91dF9vdmVybGFwczIgT04gd2l0aG91dF9vdmVybGFwc190ZXN0MiBVU0lORyBnaXN0 IChpZCwgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MgorCUFE RCBDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3BrCisJUFJJTUFSWSBLRVkgVVNJTkcgSU5E RVggaWR4X3dpdGhvdXRfb3ZlcmxhcHMyOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rl c3QyOworCistLSBVTklRVUUgd2l0aCBVU0lORyBJTkRFWCAobm90IHlldCBhbGxvd2VkKToKK0NS RUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBpZHhfd2l0aG91dF9vdmVybGFwc191 cSBPTiB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QyIFVTSU5HIGdpc3QgKGlkLCB2YWxpZF9hdCk7 CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QyCisJQUREIENPTlNUUkFJTlQg d2l0aG91dF9vdmVybGFwczJfdXEKKwlVTklRVUUgVVNJTkcgSU5ERVggaWR4X3dpdGhvdXRfb3Zl cmxhcHNfdXE7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdXFfdGVzdDI7CisKKy0tIEFk ZCByYW5nZSBjb2x1bW4gYW5kIHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUg d2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJhbmdlCispOworQUxURVIgVEFCTEUg d2l0aG91dF9vdmVybGFwc190ZXN0MgorCUFERCBDT0xVTU4gdmFsaWRfYXQgdHNyYW5nZSwKKwlB REQgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl9waworCVBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dDI7CisKKy0tIEFkZCBQRVJJT0QgYW5kIHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUg VEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zy b20gZGF0ZSwKKwl2YWxpZF90aWwgZGF0ZQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdDIKKwlBREQgUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGls KSwKKwlBREQgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl9waworCVBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdDI7CisKKy0tIEFkZCByYW5nZSBjb2x1bW4gYW5kIFVOSVFVRSBjb25zdHJhaW50IGF0 IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKwlp ZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyCisJQURE IENPTFVNTiB2YWxpZF9hdCB0c3JhbmdlLAorCUFERCBDT05TVFJBSU5UIHdpdGhvdXRfb3Zlcmxh cHMyX3VxCisJVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRB QkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CisKKy0tIEFkZCBQRVJJT0QgY29sdW1uIGFuZCBV TklRVUUgY29uc3RyYWludCBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgd2l0aG91dF9v dmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gZGF0ZSwKKwl2YWxp ZF90aWwgZGF0ZQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIKKwlBREQg UEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlBREQgQ09OU1RS QUlOVCB3aXRob3V0X292ZXJsYXBzMl91cQorCVVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyOworCistLSBBZGQg ZGF0ZSBjb2x1bW5zLCBQRVJJT0QsIGFuZCB0aGUgUEsgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRF IFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZQorKTsKK0FMVEVS IFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIKKwlBREQgQ09MVU1OIHZhbGlkX2Zyb20gZGF0 ZSwKKwlBREQgQ09MVU1OIHZhbGlkX3RpbCBkYXRlLAorCUFERCBQRVJJT0QgRk9SIHZhbGlkX2F0 ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUFERCBDT05TVFJBSU5UIHdpdGhvdXRfb3Zlcmxh cHMyX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RS T1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MjsKKworLS0gQWRkIGRhdGUgY29sdW1ucywg UEVSSU9ELCBhbmQgVU5JUVVFIGNvbnN0cmFpbnQgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRB QkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZQorKTsKK0FMVEVSIFRB QkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIKKwlBREQgQ09MVU1OIHZhbGlkX2Zyb20gZGF0ZSwK KwlBREQgQ09MVU1OIHZhbGlkX3RpbCBkYXRlLAorCUFERCBQRVJJT0QgRk9SIHZhbGlkX2F0ICh2 YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUFERCBDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHMy X3VxCisJVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CisKKy0tCistLSB0ZXN0IHBnX2dldF9jb25zdHJhaW50 ZGVmCistLQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0 cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd3aXRob3V0X292ZXJsYXBzX3BrJzsKKworLS0KKy0tIHRl c3QgUEsgaW5zZXJ0cworLS0KKworLS0gb2theToKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0w MycpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMSwxXScs IHRzcmFuZ2UoJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpKTsKK0lOU0VSVCBJTlRPIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMS0wNScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMg KCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCBOVUxMKSk7CisKKy0tIHNob3VsZCBmYWls OgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8gd2l0aG91dF9v dmVybGFwc190ZXN0IFZBTFVFUyAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAx LTA1JykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1szLDNd JywgTlVMTCk7CisKKy0tCistLSB0ZXN0IGNoYW5naW5nIHRoZSBQSydzIGRlcGVuZGVuY2llcwor LS0KKworQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworQUxURVIg VEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgRFJPUCBO T1QgTlVMTDsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgQUxURVIgQ09MVU1O IHZhbGlkX2F0IFRZUEUgdHN0enJhbmdlIFVTSU5HIHRzdHpyYW5nZShsb3dlcih2YWxpZF9hdCks IHVwcGVyKHZhbGlkX2F0KSk7CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIFJF TkFNRSBDT0xVTU4gdmFsaWRfYXQgVE8gdmFsaWRfdGhydTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdDIgRFJPUCBDT0xVTU4gdmFsaWRfdGhydTsKK0RST1AgVEFCTEUgd2l0aG91 dF9vdmVybGFwc190ZXN0MjsKLS0gCjIuMzIuMAoK --00000000000082e1ad05cbd8ac96 Content-Type: application/octet-stream; name="v8-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v8-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kti4otil2 RnJvbSA0MmYwMjdjZjVlMDBhNzVjODdlMDYyYzA4ZTFkNjgyNDMwOWEzMTU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3MDAKU3ViamVj dDogW1BBVENIIHY4IDMvNF0gQWRkIFVQREFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0YKCi0gQWRk ZWQgYmlzb24gc3VwcG9ydCBmb3IgRk9SIFBPUlRJT04gT0Ygc3ludGF4LiBUaGUgYm91bmRzIG11 c3QgYmUKICBjb25zdGFudCwgc28gd2UgZm9yYmlkIGNvbHVtbiByZWZlcmVuY2VzLCBzdWJxdWVy aWVzLCBldGMuIEJ1dCB3ZQogIHBlcm1pdCB0aGUgbWFnaWMgTUlOVkFMVUUgYW5kIE1BWFZBTFVF IGtleXdvcmRzICh0byBtYXRjaCB0aGUgdGVybXMKICBmb3IgcGFydGl0aW9ucykgdG8gcGVyZm9y bSBhbiB1bmJvdW5kZWQgdXBkYXRlL2RlbGV0ZS4gV2UgYWxzbyBhY2NlcHQKICBmdW5jdGlvbnMg bGlrZSBOT1coKS4KLSBBZGRlZCBBRlRFUiBST1cgdHJpZ2dlcnMgdG8gaW5zZXJ0IG5ldyByb3dz IGZvciB0aGUgImxlZnRvdmVyIiBwYXJ0IG9mCiAgYSByZWNvcmQgdG91Y2hlZCBieSBhIEZPUiBQ T1JUSU9OIE9GIHF1ZXJ5LiBXZSBpbnN0YWxsIHRoZXNlIHRyaWdnZXJzCiAgb24gYW55IHRhYmxl IHdpdGggYSB0ZW1wb3JhbCBwcmltYXJ5IGtleS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBkZXNjcmlw dG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAgdHJpZ2dlciBm dW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0IGJvdW5kcyB3ZXJl CiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBEb2N1bWVudGVkIEZPUiBQ T1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3RydWN0LgotIEFkZGVkIHRlc3Rz LgotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0 ICsKIGRvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwgICAgICAgICAgICAgICAgIHwgIDQ2ICsr CiBkb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sICAgICAgICAgICAgICAgICB8ICA0NyArKwog ZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgNjAgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4X211bHRpLmMgIHwgIDI4ICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAgICB8ICAgNiArCiBzcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICB8ICA2NSArKwogc3JjL2JhY2tl bmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAgICAgfCAgNTUgKysKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgIHwgIDMzICsKIHNyYy9iYWNrZW5kL25vZGVz L2NvcHlmdW5jcy5jICAgICAgICAgICAgICAgIHwgIDQ3ICsrCiBzcmMvYmFja2VuZC9ub2Rlcy9l cXVhbGZ1bmNzLmMgICAgICAgICAgICAgICB8ICAzNSArCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2Rl RnVuY3MuYyAgICAgICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5j cy5jICAgICAgICAgICAgICAgICB8ICAyMyArCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3Mu YyAgICAgICAgICAgICAgICB8ICAyNSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVh dGVwbGFuLmMgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUu YyAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAgICAgICAg ICAgICAgIHwgMzgzICsrKysrKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAg ICAgICAgICAgICAgICB8ICA0NyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAg ICAgICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYyAg ICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAg ICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jICAgICAgICAg fCAgMjQgKwogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgICAgICAgfCAg IDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9mcF90cmlnZ2Vycy5jICAgICAgICAgIHwgNTc0ICsr KysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMgICAgICAg ICAgIHwgIDQyICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAg ICB8ICAgNiArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCAgICAgICAgICAgICB8 ICAgMiArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmggICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAyMiAr CiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBz cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICB8ICA0MyArLQogc3Jj L2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAgICAgICAgICAgICAgfCAgMjcgKwogc3JjL2luY2x1ZGUv b3B0aW1pemVyL3BhdGhub2RlLmggICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3BhcnNl ci9wYXJzZV9ub2RlLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3Jh bmdldHlwZXMuaCAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZm9yX3BvcnRpb25fb2Yub3V0IHwgNjc0ICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91dCAgIHwgICAxICsKIHNyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwgICAgICB8IDU2MiArKysrKysrKysrKysrKysrCiA0 NiBmaWxlcyBjaGFuZ2VkLCAyODg3IGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9mcF90cmlnZ2Vycy5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5v dXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9v Zi5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mvc3JjL3NnbWwv ZGRsLnNnbWwKaW5kZXggOGJjNjBlYjg0My4uNTdlMGRjMTM2MyAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbApAQCAtMTE4OCw2ICsx MTg4LDEwIEBAIENSRUFURSBUQUJMRSBiaWxsaW5nX2FkZHJlc3NlcyAoCiAgICAgYW5kIHNlY29u ZCBhIHBlcmlvZCAob3IgcmFuZ2UgY29sdW1uKSB0aGF0IHF1YWxpZmllcyB3aGVuIHRoZSByb3cg YXBwbGllcy4gU28gYSB0ZW1wb3JhbCBwcmltYXJ5IHBlcm1pdHMgbXVsdGlwbGUgcm93cyB3aXRo IGVxdWFsIHZhbHVlcyBpbiB0aGUgb3JkaW5hcnkga2V5IHBhcnRzLCBhcyBsb25nIGFzIHRob3Nl IHJvd3MgZG9uJ3QgaGF2ZSBvdmVybGFwcGluZyBwZXJpb2RzLiBFYWNoIHJvdyBtYWtlcyBhIHN0 YXRlbWVudCBhYm91dCB0aGUgZW50aXR5IGlkZW50aWZpZWQgYnkgdGhlIG9yZGluYXJ5IGtleSBw YXJ0cywgYnV0IGFwcGx5aW5nIG9ubHkgdG8gdGhlIHNwYW4gZ2l2ZW4gYnkgdGhlIHBlcmlvZC4K ICAgICBUZW1wb3JhbCBwcmltYXJ5IGtleXMgYXJlIGVzc2VudGlhbGx5IDxsaW5rIGxpbmtlbmQ9 InNxbC1jcmVhdGV0YWJsZS1leGNsdWRlIj5leGNsdXNpb24gY29uc3RyYWludHM8L2xpbms+IHdo ZXJlIHRoZSBmaXJzdCBrZXkgcGFydHMgYXJlIGNvbXBhcmVkIGZvciBlcXVhbGl0eSBhbmQgdGhl IGxhc3QgcGFydCBmb3Igb3ZlcmxhcHMuCiAgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIEFu eSB0YWJsZSB3aXRoIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkgc3VwcG9ydHMgdGVtcG9yYWwgPGxp dGVyYWw+VVBEQVRFPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+REVMRVRFPC9saXRlcmFsPiB1c2lu ZyA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gc3ludGF4LiBTZWUgPHhyZWYgbGlu a2VuZD0ic3FsLXVwZGF0ZSIvPiBhbmQgPHhyZWYgbGlua2VuZD0ic3FsLWRlbGV0ZSIvPiBmb3Ig ZGV0YWlscy4KKyAgIDwvcGFyYT4KICAgPC9zZWN0Mj4KIAogICA8c2VjdDIgaWQ9ImRkbC1wZXJp b2RzLXN5c3RlbS1wZXJpb2RzIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRl LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sCmluZGV4IDFiODFiNGU3ZDcuLjJm MDUyZjgwYWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbApAQCAtMjMsNiArMjMsNyBAQCBQb3N0Z3JlU1FM IGRvY3VtZW50YXRpb24KIDxzeW5vcHNpcz4KIFsgV0lUSCBbIFJFQ1VSU0lWRSBdIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj53aXRoX3F1ZXJ5PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBd CiBERUxFVEUgRlJPTSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFi bGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5hbGlhczwvcmVwbGFjZWFibGU+IF0KKyAgICBbIEZPUiBQT1JUSU9OIE9GIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFj ZWFibGU+IEZST00gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3Jl cGxhY2VhYmxlPiBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3Jl cGxhY2VhYmxlPiBdCiAgICAgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCiAgICAgWyBXSEVSRSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29uZGl0aW9uPC9yZXBsYWNlYWJsZT4gfCBXSEVSRSBDVVJS RU5UIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jdXJzb3JfbmFtZTwvcmVwbGFj ZWFibGU+IF0KICAgICBbIFJFVFVSTklORyAqIHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm91dHB1dF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gWyBbIEFTIF0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm91dHB1dF9uYW1lPC9yZXBsYWNlYWJsZT4gXSBbLCAuLi5dIF0K QEAgLTU0LDYgKzU1LDE1IEBAIERFTEVURSBGUk9NIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqCiAgICBjaXJjdW1zdGFu Y2VzLgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBJZiB0aGUgdGFibGUgaGFzIGEgPGxpbmsg bGlua2VuZD0iZGRsLXBlcmlvZHMtYXBwbGljYXRpb24tcGVyaW9kcyI+dGVtcG9yYWwKKyAgIHBy aW1hcnkga2V5PC9saW5rPiwgeW91IG1heSBzdXBwbHkgYSAKKyAgIDxsaXRlcmFsPkZPUiBQT1JU SU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsIGFuZCB5b3VyIGRlbGV0ZSB3aWxsIG9ubHkgYWZmZWN0 IHJvd3MgCisgICB0aGF0IG92ZXJsYXAgdGhlIGdpdmVuIGludGVydmFsLiBGdXJ0aGVybW9yZSwg aWYgYSByb3cncyBzcGFuIGV4dGVuZHMgb3V0c2lkZSAKKyAgIHRoZSA8bGl0ZXJhbD5GT1IgUE9S VElPTiBPRjwvbGl0ZXJhbD4gYm91bmRzLCB0aGVuIG5ldyByb3dzIHNwYW5uaW5nIHRoZSAiY3V0 IAorICAgb2ZmIiBkdXJhdGlvbiB3aWxsIGJlIGluc2VydGVkIHRvIHByZXNlcnZlIHRoZSBvbGQg dmFsdWVzLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgb3B0aW9uYWwgPGxpdGVyYWw+ UkVUVVJOSU5HPC9saXRlcmFsPiBjbGF1c2UgY2F1c2VzIDxjb21tYW5kPkRFTEVURTwvY29tbWFu ZD4KICAgIHRvIGNvbXB1dGUgYW5kIHJldHVybiB2YWx1ZShzKSBiYXNlZCBvbiBlYWNoIHJvdyBh Y3R1YWxseSBkZWxldGVkLgpAQCAtMTE2LDYgKzEyNiw0MiBAQCBERUxFVEUgRlJPTSBbIE9OTFkg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ IFsgKgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3Jf cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgVGhlIHJhbmdlIGNvbHVtbiBvciBwZXJpb2QgdG8gdXNlIHdoZW4gcGVyZm9y bWluZyBhIHRlbXBvcmFsIGRlbGV0ZS4gVGhpcyAKKyAgICAgIG11c3QgbWF0Y2ggdGhlIHJhbmdl IG9yIHBlcmlvZCB1c2VkIGluIHRoZSB0YWJsZSdzIHRlbXBvcmFsIHByaW1hcnkga2V5LiAKKyAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Rh cnRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBUaGUgZWFybGllc3QgdGltZSAoaW5jbHVzaXZlKSB0byBjaGFuZ2UgaW4gYSB0ZW1w b3JhbCBkZWxldGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRjaGluZyB0aGUgYmFz ZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJvbSAKKyAgICAgIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBJdCBt YXkgYWxzbyAKKyAgICAgIGJlIHRoZSBzcGVjaWFsIHZhbHVlIDxsaXRlcmFsPk1JTlZBTFVFPC9s aXRlcmFsPiB0byBpbmRpY2F0ZSBhIGRlbGV0ZSB3aG9zZSAKKyAgICAgIGJlZ2lubmluZyBpcyB1 bmJvdW5kZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFRoZSBsYXRlc3QgdGltZSAoZXhjbHVzaXZlKSB0byBjaGFuZ2Ug aW4gYSB0ZW1wb3JhbCBkZWxldGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRjaGlu ZyB0aGUgYmFzZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJvbSAKKyAgICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFi bGU+LiBJdCBtYXkgYWxzbyAKKyAgICAgIGJlIHRoZSBzcGVjaWFsIHZhbHVlIDxsaXRlcmFsPk1B WFZBTFVFPC9saXRlcmFsPiB0byBpbmRpY2F0ZSBhIGRlbGV0ZSB3aG9zZSAKKyAgICAgIGVuZCBp cyB1bmJvdW5kZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmZyb21faXRlbTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgIDxsaXN0aXRl bT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvdXBkYXRlLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL3VwZGF0ZS5zZ21sCmluZGV4IDNmYTU0ZTVmNzAuLjhiYWExM2RhZjkgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvdXBkYXRlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi91 cGRhdGUuc2dtbApAQCAtMjMsNiArMjMsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIDxz eW5vcHNpcz4KIFsgV0lUSCBbIFJFQ1VSU0lWRSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj53aXRoX3F1ZXJ5PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCiBVUERBVEUgWyBPTkxZIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBb ICogXSBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWxpYXM8L3JlcGxh Y2VhYmxlPiBdCisgICAgWyBGT1IgUE9SVElPTiBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiBGUk9NIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1lPC9yZXBsYWNlYWJsZT4gVE8gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNlYWJsZT4gXQogICAgIFNFVCB7 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ ID0geyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFi bGU+IHwgREVGQVVMVCB9IHwKICAgICAgICAgICAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSA9IFsgUk9XIF0gKCB7IDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfCBE RUZBVUxUIH0gWywgLi4uXSApIHwKICAgICAgICAgICAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSA9ICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1Yi1TRUxFQ1Q8L3JlcGxhY2VhYmxlPiApCkBAIC01MSw2 ICs1MiwxNiBAQCBVUERBVEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbCiAgICBjaXJjdW1zdGFuY2VzLgogICA8 L3BhcmE+CiAKKyAgPHBhcmE+CisgICBJZiB0aGUgdGFibGUgaGFzIGEgPGxpbmsgbGlua2VuZD0i ZGRsLXBlcmlvZHMtYXBwbGljYXRpb24tcGVyaW9kcyI+dGVtcG9yYWwKKyAgIHByaW1hcnkga2V5 PC9saW5rPiwgeW91IG1heSBzdXBwbHkgYSAKKyAgIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9s aXRlcmFsPiBjbGF1c2UsIGFuZCB5b3VyIHVwZGF0ZSB3aWxsIG9ubHkgYWZmZWN0IHJvd3MgCisg ICB0aGF0IG92ZXJsYXAgdGhlIGdpdmVuIGludGVydmFsLiBGdXJ0aGVybW9yZSwgaWYgYSByb3cn cyBzcGFuIGV4dGVuZHMgb3V0c2lkZSAKKyAgIHRoZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwv bGl0ZXJhbD4gYm91bmRzLCB0aGVuIGl0IHdpbGwgYmUgdHJ1bmNhdGVkIHRvIGZpdCAKKyAgIHdp dGhpbiB0aGUgYm91bmRzLCBhbmQgbmV3IHJvd3Mgc3Bhbm5pbmcgdGhlICJjdXQgb2ZmIiBkdXJh dGlvbiB3aWxsIGJlIAorICAgaW5zZXJ0ZWQgdG8gcHJlc2VydmUgdGhlIG9sZCB2YWx1ZXMuCisg IDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5SRVRVUk5JTkc8 L2xpdGVyYWw+IGNsYXVzZSBjYXVzZXMgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPgogICAgdG8g Y29tcHV0ZSBhbmQgcmV0dXJuIHZhbHVlKHMpIGJhc2VkIG9uIGVhY2ggcm93IGFjdHVhbGx5IHVw ZGF0ZWQuCkBAIC0xMTQsNiArMTI1LDQyIEBAIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsKICAgICA8 L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1l PC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg IFRoZSByYW5nZSBjb2x1bW4gb3IgcGVyaW9kIHRvIHVzZSB3aGVuIHBlcmZvcm1pbmcgYSB0ZW1w b3JhbCB1cGRhdGUuIFRoaXMgCisgICAgICBtdXN0IG1hdGNoIHRoZSByYW5nZSBvciBwZXJpb2Qg dXNlZCBpbiB0aGUgdGFibGUncyB0ZW1wb3JhbCBwcmltYXJ5IGtleS4gCisgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3Jl cGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhl IGVhcmxpZXN0IHRpbWUgKGluY2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgdXBkYXRl LgorICAgICAgVGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0 aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20gCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gSXQgbWF5IGFsc28gCisg ICAgICBiZSB0aGUgc3BlY2lhbCB2YWx1ZSA8bGl0ZXJhbD5NSU5WQUxVRTwvbGl0ZXJhbD4gdG8g aW5kaWNhdGUgYW4gdXBkYXRlIHdob3NlIAorICAgICAgYmVnaW5uaW5nIGlzIHVuYm91bmRlZC4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAg PHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgVGhlIGxhdGVzdCB0aW1lIChleGNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBv cmFsIHVwZGF0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNl IHR5cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tIAorICAgICAgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEl0IG1h eSBhbHNvIAorICAgICAgYmUgdGhlIHNwZWNpYWwgdmFsdWUgPGxpdGVyYWw+TUFYVkFMVUU8L2xp dGVyYWw+IHRvIGluZGljYXRlIGFuIHVwZGF0ZSB3aG9zZSAKKyAgICAgIGVuZCBpcyB1bmJvdW5k ZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisK ICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC90cmlnZ2Vy LnNnbWwKaW5kZXggN2UyNjU0NDkzYi4uMDcyMTUyOTgwZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3RyaWdnZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCkBAIC01MTUs MTcgKzUxNSwxOCBAQCBDQUxMRURfQVNfVFJJR0dFUihmY2luZm8pCiA8cHJvZ3JhbWxpc3Rpbmc+ CiB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VyRGF0YQogewotICAgIE5vZGVUYWcgICAgICAgICAgdHlw ZTsKLSAgICBUcmlnZ2VyRXZlbnQgICAgIHRnX2V2ZW50OwotICAgIFJlbGF0aW9uICAgICAgICAg dGdfcmVsYXRpb247Ci0gICAgSGVhcFR1cGxlICAgICAgICB0Z190cmlndHVwbGU7Ci0gICAgSGVh cFR1cGxlICAgICAgICB0Z19uZXd0dXBsZTsKLSAgICBUcmlnZ2VyICAgICAgICAgKnRnX3RyaWdn ZXI7Ci0gICAgVHVwbGVUYWJsZVNsb3QgICp0Z190cmlnc2xvdDsKLSAgICBUdXBsZVRhYmxlU2xv dCAgKnRnX25ld3Nsb3Q7Ci0gICAgVHVwbGVzdG9yZXN0YXRlICp0Z19vbGR0YWJsZTsKLSAgICBU dXBsZXN0b3Jlc3RhdGUgKnRnX25ld3RhYmxlOwotICAgIGNvbnN0IEJpdG1hcHNldCAqdGdfdXBk YXRlZGNvbHM7CisgICAgTm9kZVRhZyAgICAgICAgICAgIHR5cGU7CisgICAgVHJpZ2dlckV2ZW50 ICAgICAgIHRnX2V2ZW50OworICAgIFJlbGF0aW9uICAgICAgICAgICB0Z19yZWxhdGlvbjsKKyAg ICBIZWFwVHVwbGUgICAgICAgICAgdGdfdHJpZ3R1cGxlOworICAgIEhlYXBUdXBsZSAgICAgICAg ICB0Z19uZXd0dXBsZTsKKyAgICBUcmlnZ2VyICAgICAgICAgICAqdGdfdHJpZ2dlcjsKKyAgICBU dXBsZVRhYmxlU2xvdCAgICAqdGdfdHJpZ3Nsb3Q7CisgICAgVHVwbGVUYWJsZVNsb3QgICAgKnRn X25ld3Nsb3Q7CisgICAgVHVwbGVzdG9yZXN0YXRlICAgKnRnX29sZHRhYmxlOworICAgIFR1cGxl c3RvcmVzdGF0ZSAgICp0Z19uZXd0YWJsZTsKKyAgICBjb25zdCBCaXRtYXBzZXQgICAqdGdfdXBk YXRlZGNvbHM7CisgICAgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsOwogfSBUcmlnZ2Vy RGF0YTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKQEAgLTc5Miw2ICs3OTMsNDMgQEAgdHlwZWRlZiBz dHJ1Y3QgVHJpZ2dlcgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwv dmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48c3RydWN0 ZmllbGQ+dGdfdGVtcG9yYWw8L3N0cnVjdGZpZWxkPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgU2V0IGZvciA8bGl0ZXJhbD5VUERBVEU8L2xpdGVyYWw+ IGFuZCA8bGl0ZXJhbD5ERUxFVEU8L2xpdGVyYWw+IHF1ZXJpZXMKKyAgICAgICAgdGhhdCB1c2Ug PGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+LCBvdGhlcndpc2UgPHN5bWJvbD5OVUxM PC9zeW1ib2w+LgorICAgICAgICBDb250YWlucyBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgb2Yg dHlwZQorICAgICAgICA8c3RydWN0bmFtZT5Gb3JQb3J0aW9uT2ZTdGF0ZTwvc3RydWN0bmFtZT4s IGRlZmluZWQgaW4KKyAgICAgICAgPGZpbGVuYW1lPm5vZGVzL2V4ZWNub2Rlcy5oPC9maWxlbmFt ZT46CisKKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgc3RydWN0IEZvclBvcnRpb25PZlN0YXRl Cit7CisgICAgTm9kZVRhZyB0eXBlOworCisgICAgY2hhciAgICpmcF9yYW5nZU5hbWU7ICAgICAg IC8qIHRoZSBjb2x1bW4vUEVSSU9EIG5hbWVkIGluIEZPUiBQT1JUSU9OIE9GICovCisgICAgT2lk ICAgICBmcF9yYW5nZVR5cGU7ICAgICAgIC8qIHRoZSB0eXBlIG9mIHRoZSBGT1IgUE9SVElPTiBP RiBleHByZXNzaW9uICovCisgICAgYm9vbCAgICBmcF9oYXNQZXJpb2Q7ICAgICAgIC8qIHRydWUg aWZmIHRoaXMgaXMgYSBQRVJJT0Qgbm90IGEgcmFuZ2UgKi8KKyAgICBjaGFyICAgKmZwX3Blcmlv ZFN0YXJ0TmFtZTsgLyogdGhlIFBFUklPRCdzIHN0YXJ0IGNvbHVtbiAqLworICAgIGNoYXIgICAq ZnBfcGVyaW9kRW5kTmFtZTsgICAvKiB0aGUgUEVSSU9EJ3MgZW5kIGNvbHVtbiAqLworICAgIERh dHVtICAgZnBfdGFyZ2V0UmFuZ2U7ICAgICAvKiB0aGUgcmFuZ2UgZnJvbSBGT1IgUE9SVElPTiBP RiAqLworfSBGb3JQb3J0aW9uT2ZTdGF0ZTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICAgICB3 aGVyZSA8c3RydWN0ZmllbGQ+ZnBfcmFuZ2VOYW1lPC9zdHJ1Y3RmaWVsZD4gaXMgdGhlIHBlcmlv ZCBvciByYW5nZQorICAgICAgIGNvbHVtbiBuYW1lZCBpbiB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJ T04gT0Y8L2xpdGVyYWw+IGNsYXVzZSwKKyAgICAgICA8c3RydWN0ZmllbGQ+ZnBfcmFuZ2VUeXBl PC9zdHJ1Y3RmaWVsZD4gaXMgaXRzIHJhbmdlIHR5cGUsCisgICAgICAgPHN0cnVjdGZpZWxkPmZw X2hhc1BlcmlvZDwvc3RydWN0ZmllbGQ+IGluZGljYXRlcyB3aGV0aGVyIGEgcGVyaW9kIHdhcyB1 c2VkCisgICAgICAgb3IgYSByYW5nZSBjb2x1bW4sIDxzdHJ1Y3RmaWVsZD5mcF9wZXJpb2RTdGFy dE5hbWU8L3N0cnVjdGZpZWxkPiBhbmQKKyAgICAgICA8c3RydWN0ZmllbGQ+ZnBfcGVyaW9kRW5k TmFtZTwvc3RydWN0ZmllbGQ+IGFyZSB0aGUgbmFtZXMgb2YgdGhlIHBlcmlvZCdzCisgICAgICAg c3RhcnQgYW5kIGVuZCBjb2x1bW5zIChvciA8c3ltYm9sPk5VTEw8L3N5bWJvbD4gaWYgYSByYW5n ZSBjb2x1bW4gd2FzIHVzZWQpLAorICAgICAgIGFuZCA8c3RydWN0ZmllbGQ+ZnBfdGFyZ2V0UmFu Z2U8L3N0cnVjdGZpZWxkPiBpcyBhIHJhbmdldHlwZSB2YWx1ZSBjcmVhdGVkCisgICAgICAgYnkg ZXZhbHVhdGluZyB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJvdW5kcy4K KyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K ICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVsdGkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW5fbWlubWF4X211bHRpLmMKaW5kZXggZWU2YzQ3OTVmMS4uNGUyOWVkODM4YSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVsdGkuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heF9tdWx0aS5jCkBAIC0xOTcsNyAr MTk3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmFuZ2VzCiAgKiB3aXRoIGJhc2ljIG1ldGFkYXRhLCBm b2xsb3dlZCBieSB0aGUgYm91bmRhcnkgdmFsdWVzLiBJdCBoYXMgYSB2YXJsZW5hCiAgKiBoZWFk ZXIsIHNvIGNhbiBiZSB0cmVhdGVkIGFzIHZhcmxlbmEgZGlyZWN0bHkuCiAgKgotICogU2VlIHJh bmdlX3NlcmlhbGl6ZS9yYW5nZV9kZXNlcmlhbGl6ZSBmb3Igc2VyaWFsaXphdGlvbiBkZXRhaWxz LgorICogU2VlIGJyaW5fcmFuZ2Vfc2VyaWFsaXplL2JyaW5fcmFuZ2VfZGVzZXJpYWxpemUgZm9y IHNlcmlhbGl6YXRpb24gZGV0YWlscy4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgU2VyaWFsaXplZFJh bmdlcwogewpAQCAtMjE2LDkgKzIxNiw5IEBAIHR5cGVkZWYgc3RydWN0IFNlcmlhbGl6ZWRSYW5n ZXMKIAljaGFyCQlkYXRhW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IFNlcmlhbGl6ZWRSYW5n ZXM7CiAKLXN0YXRpYyBTZXJpYWxpemVkUmFuZ2VzICpyYW5nZV9zZXJpYWxpemUoUmFuZ2VzICpy YW5nZSk7CitzdGF0aWMgU2VyaWFsaXplZFJhbmdlcyAqYnJpbl9yYW5nZV9zZXJpYWxpemUoUmFu Z2VzICpyYW5nZSk7CiAKLXN0YXRpYyBSYW5nZXMgKnJhbmdlX2Rlc2VyaWFsaXplKGludCBtYXh2 YWx1ZXMsIFNlcmlhbGl6ZWRSYW5nZXMgKnJhbmdlKTsKK3N0YXRpYyBSYW5nZXMgKmJyaW5fcmFu Z2VfZGVzZXJpYWxpemUoaW50IG1heHZhbHVlcywgU2VyaWFsaXplZFJhbmdlcyAqcmFuZ2UpOwog CiAKIC8qCkBAIC01NjUsMTQgKzU2NSwxNCBAQCByYW5nZV9kZWR1cGxpY2F0ZV92YWx1ZXMoUmFu Z2VzICpyYW5nZSkKIAogCiAvKgotICogcmFuZ2Vfc2VyaWFsaXplCisgKiBicmluX3JhbmdlX3Nl cmlhbGl6ZQogICoJICBTZXJpYWxpemUgdGhlIGluLW1lbW9yeSByZXByZXNlbnRhdGlvbiBpbnRv IGEgY29tcGFjdCB2YXJsZW5hIHZhbHVlLgogICoKICAqIFNpbXBseSBjb3B5IHRoZSBoZWFkZXIg YW5kIHRoZW4gYWxzbyB0aGUgaW5kaXZpZHVhbCB2YWx1ZXMsIGFzIHN0b3JlZAogICogaW4gdGhl IGluLW1lbW9yeSB2YWx1ZSBhcnJheS4KICAqLwogc3RhdGljIFNlcmlhbGl6ZWRSYW5nZXMgKgot cmFuZ2Vfc2VyaWFsaXplKFJhbmdlcyAqcmFuZ2UpCiticmluX3JhbmdlX3NlcmlhbGl6ZShSYW5n ZXMgKnJhbmdlKQogewogCVNpemUJCWxlbjsKIAlpbnQJCQludmFsdWVzOwpAQCAtNzExLDE0ICs3 MTEsMTQgQEAgcmFuZ2Vfc2VyaWFsaXplKFJhbmdlcyAqcmFuZ2UpCiB9CiAKIC8qCi0gKiByYW5n ZV9kZXNlcmlhbGl6ZQorICogYnJpbl9yYW5nZV9kZXNlcmlhbGl6ZQogICoJICBTZXJpYWxpemUg dGhlIGluLW1lbW9yeSByZXByZXNlbnRhdGlvbiBpbnRvIGEgY29tcGFjdCB2YXJsZW5hIHZhbHVl LgogICoKICAqIFNpbXBseSBjb3B5IHRoZSBoZWFkZXIgYW5kIHRoZW4gYWxzbyB0aGUgaW5kaXZp ZHVhbCB2YWx1ZXMsIGFzIHN0b3JlZAogICogaW4gdGhlIGluLW1lbW9yeSB2YWx1ZSBhcnJheS4K ICAqLwogc3RhdGljIFJhbmdlcyAqCi1yYW5nZV9kZXNlcmlhbGl6ZShpbnQgbWF4dmFsdWVzLCBT ZXJpYWxpemVkUmFuZ2VzICpzZXJpYWxpemVkKQorYnJpbl9yYW5nZV9kZXNlcmlhbGl6ZShpbnQg bWF4dmFsdWVzLCBTZXJpYWxpemVkUmFuZ2VzICpzZXJpYWxpemVkKQogewogCWludAkJCWksCiAJ CQkJbnZhbHVlczsKQEAgLTIzODgsNyArMjM4OCw3IEBAIGJyaW5fbWlubWF4X211bHRpX3Nlcmlh bGl6ZShCcmluRGVzYyAqYmRlc2MsIERhdHVtIHNyYywgRGF0dW0gKmRzdCkKIAkvKiBBdCB0aGlz IHBvaW50IGV2ZXJ5dGhpbmcgaGFzIHRvIGJlIGZ1bGx5IHNvcnRlZC4gKi8KIAlBc3NlcnQocmFu Z2VzLT5uc29ydGVkID09IHJhbmdlcy0+bnZhbHVlcyk7CiAKLQlzID0gcmFuZ2Vfc2VyaWFsaXpl KHJhbmdlcyk7CisJcyA9IGJyaW5fcmFuZ2Vfc2VyaWFsaXplKHJhbmdlcyk7CiAJZHN0WzBdID0g UG9pbnRlckdldERhdHVtKHMpOwogfQogCkBAIC0yNTExLDcgKzI1MTEsNyBAQCBicmluX21pbm1h eF9tdWx0aV9hZGRfdmFsdWUoUEdfRlVOQ1RJT05fQVJHUykKIAkJbWF4dmFsdWVzID0gTWF4KG1h eHZhbHVlcywgTUlOTUFYX0JVRkZFUl9NSU4pOwogCQltYXh2YWx1ZXMgPSBNaW4obWF4dmFsdWVz LCBNSU5NQVhfQlVGRkVSX01BWCk7CiAKLQkJcmFuZ2VzID0gcmFuZ2VfZGVzZXJpYWxpemUobWF4 dmFsdWVzLCBzZXJpYWxpemVkKTsKKwkJcmFuZ2VzID0gYnJpbl9yYW5nZV9kZXNlcmlhbGl6ZSht YXh2YWx1ZXMsIHNlcmlhbGl6ZWQpOwogCiAJCXJhbmdlcy0+YXR0bm8gPSBhdHRubzsKIAkJcmFu Z2VzLT5jb2xsb2lkID0gY29sbG9pZDsKQEAgLTI1NjQsNyArMjU2NCw3IEBAIGJyaW5fbWlubWF4 X211bHRpX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAlhdHRubyA9IGNvbHVtbi0+YnZf YXR0bm87CiAKIAlzZXJpYWxpemVkID0gKFNlcmlhbGl6ZWRSYW5nZXMgKikgUEdfREVUT0FTVF9E QVRVTShjb2x1bW4tPmJ2X3ZhbHVlc1swXSk7Ci0JcmFuZ2VzID0gcmFuZ2VfZGVzZXJpYWxpemUo c2VyaWFsaXplZC0+bWF4dmFsdWVzLCBzZXJpYWxpemVkKTsKKwlyYW5nZXMgPSBicmluX3Jhbmdl X2Rlc2VyaWFsaXplKHNlcmlhbGl6ZWQtPm1heHZhbHVlcywgc2VyaWFsaXplZCk7CiAKIAkvKiBp bnNwZWN0IHRoZSByYW5nZXMsIGFuZCBmb3IgZWFjaCBvbmUgZXZhbHVhdGUgdGhlIHNjYW4ga2V5 cyAqLwogCWZvciAocmFuZ2VubyA9IDA7IHJhbmdlbm8gPCByYW5nZXMtPm5yYW5nZXM7IHJhbmdl bm8rKykKQEAgLTI3NTksOCArMjc1OSw4IEBAIGJyaW5fbWlubWF4X211bHRpX3VuaW9uKFBHX0ZV TkNUSU9OX0FSR1MpCiAJc2VyaWFsaXplZF9hID0gKFNlcmlhbGl6ZWRSYW5nZXMgKikgUEdfREVU T0FTVF9EQVRVTShjb2xfYS0+YnZfdmFsdWVzWzBdKTsKIAlzZXJpYWxpemVkX2IgPSAoU2VyaWFs aXplZFJhbmdlcyAqKSBQR19ERVRPQVNUX0RBVFVNKGNvbF9iLT5idl92YWx1ZXNbMF0pOwogCi0J cmFuZ2VzX2EgPSByYW5nZV9kZXNlcmlhbGl6ZShzZXJpYWxpemVkX2EtPm1heHZhbHVlcywgc2Vy aWFsaXplZF9hKTsKLQlyYW5nZXNfYiA9IHJhbmdlX2Rlc2VyaWFsaXplKHNlcmlhbGl6ZWRfYi0+ bWF4dmFsdWVzLCBzZXJpYWxpemVkX2IpOworCXJhbmdlc19hID0gYnJpbl9yYW5nZV9kZXNlcmlh bGl6ZShzZXJpYWxpemVkX2EtPm1heHZhbHVlcywgc2VyaWFsaXplZF9hKTsKKwlyYW5nZXNfYiA9 IGJyaW5fcmFuZ2VfZGVzZXJpYWxpemUoc2VyaWFsaXplZF9iLT5tYXh2YWx1ZXMsIHNlcmlhbGl6 ZWRfYik7CiAKIAkvKiBtYWtlIHN1cmUgbmVpdGhlciBvZiB0aGUgcmFuZ2VzIGlzIE5VTEwgKi8K IAlBc3NlcnQocmFuZ2VzX2EgJiYgcmFuZ2VzX2IpOwpAQCAtMjg0Miw3ICsyODQyLDcgQEAgYnJp bl9taW5tYXhfbXVsdGlfdW5pb24oUEdfRlVOQ1RJT05fQVJHUykKIAogCS8qIGNsZWFudXAgYW5k IHVwZGF0ZSB0aGUgc2VyaWFsaXplZCB2YWx1ZSAqLwogCXBmcmVlKHNlcmlhbGl6ZWRfYSk7Ci0J Y29sX2EtPmJ2X3ZhbHVlc1swXSA9IFBvaW50ZXJHZXREYXR1bShyYW5nZV9zZXJpYWxpemUocmFu Z2VzX2EpKTsKKwljb2xfYS0+YnZfdmFsdWVzWzBdID0gUG9pbnRlckdldERhdHVtKGJyaW5fcmFu Z2Vfc2VyaWFsaXplKHJhbmdlc19hKSk7CiAKIAlQR19SRVRVUk5fVk9JRCgpOwogfQpAQCAtMzAy NCw3ICszMDI0LDcgQEAgYnJpbl9taW5tYXhfbXVsdGlfc3VtbWFyeV9vdXQoUEdfRlVOQ1RJT05f QVJHUykKIAlmbWdyX2luZm8ob3V0ZnVuYywgJmZtZ3JpbmZvKTsKIAogCS8qIGRlc2VyaWFsaXpl IHRoZSByYW5nZSBpbmZvIGVhc3ktdG8tcHJvY2VzcyBwaWVjZXMgKi8KLQlyYW5nZXNfZGVzZXJp YWxpemVkID0gcmFuZ2VfZGVzZXJpYWxpemUocmFuZ2VzLT5tYXh2YWx1ZXMsIHJhbmdlcyk7CisJ cmFuZ2VzX2Rlc2VyaWFsaXplZCA9IGJyaW5fcmFuZ2VfZGVzZXJpYWxpemUocmFuZ2VzLT5tYXh2 YWx1ZXMsIHJhbmdlcyk7CiAKIAlhcHBlbmRTdHJpbmdJbmZvKCZzdHIsICJucmFuZ2VzOiAlZCAg bnZhbHVlczogJWQgIG1heHZhbHVlczogJWQiLAogCQkJCQkgcmFuZ2VzX2Rlc2VyaWFsaXplZC0+ bnJhbmdlcywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggNjcwMDI0NzYyZS4uOTE0NTUy NjFjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTExNjEsNiArMTE2MSwxMiBAQCBE ZWZpbmVJbmRleChPaWQgcmVsYXRpb25JZCwKIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywg UmVsYXRpb25SZWxhdGlvbklkLCBpbmRleFJlbGF0aW9uSWQpOwogCisJLyoKKwkgKiBJZiB3ZSBj cmVhdGVkIGEgdGVtcG9yYWwgUEssIGNyZWF0ZSB0cmlnZ2VycyBmb3IgRk9SIFBPUlRJT04gT0Yg cXVlcmllcy4KKwkgKi8KKwlpZiAoc3RtdC0+cHJpbWFyeSAmJiBzdG10LT5pc3RlbXBvcmFsKQor CQlDcmVhdGVUZW1wb3JhbFByaW1hcnlLZXlUcmlnZ2VycyhyZWwsIGNyZWF0ZWRDb25zdHJhaW50 SWQsIGluZGV4UmVsYXRpb25JZCk7CisKIAkvKgogCSAqIFJldmVydCB0byBvcmlnaW5hbCBkZWZh dWx0X3RhYmxlc3BhY2UuICBNdXN0IGRvIHRoaXMgYmVmb3JlIGFueSByZXR1cm4KIAkgKiBmcm9t IHRoaXMgZnVuY3Rpb24sIGJ1dCBhZnRlciBpbmRleF9jcmVhdGUsIHNvIHRoaXMgaXMgYSBnb29k IHRpbWUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDEwYzVkZDBjMjguLmFjZmMwN2E4 ZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC00MjEzLDYgKzQyMTMsNjcgQEAgQWx0 ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlLCBBbHRl clRhYmxlVXRpbGl0eUNvbnRleHQKIAlBVENvbnRyb2xsZXIoTlVMTCwgcmVsLCBjbWRzLCByZWN1 cnNlLCBsb2NrbW9kZSwgY29udGV4dCk7CiB9CiAKKy8qCisgKiBDcmVhdGVUZW1wb3JhbFByaW1h cnlLZXlUcmlnZ2VycworICoJCUNyZWF0ZSB0aGUgdHJpZ2dlcnMgdG8gcGVyZm9ybSBpbXBsaWNp dCBJTlNFUlRzIGluIEZPUiBQT1JUSU9OIE9GCisgKgkJcXVlcmllcy4KKyAqLwordm9pZAorQ3Jl YXRlVGVtcG9yYWxQcmltYXJ5S2V5VHJpZ2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgY29uc3RyYWlu dE9pZCwgT2lkIGluZGV4T2lkKQoreworCUNyZWF0ZVRyaWdTdG10ICpwa190cmlnZ2VyOworCisJ LyoKKwkgKiBCdWlsZCBhbmQgZXhlY3V0ZSBhIENSRUFURSBUUklHR0VSIHN0YXRlbWVudCBBRlRF UiBVUERBVEUuCisJICovCisJcGtfdHJpZ2dlciA9IG1ha2VOb2RlKENyZWF0ZVRyaWdTdG10KTsK Kwlwa190cmlnZ2VyLT50cmlnbmFtZSA9ICJQS19UZW1wb3JhbFRyaWdnZXIiOworCXBrX3RyaWdn ZXItPnJlbGF0aW9uID0gTlVMTDsKKwlwa190cmlnZ2VyLT5yb3cgPSB0cnVlOworCXBrX3RyaWdn ZXItPnRpbWluZyA9IFRSSUdHRVJfVFlQRV9BRlRFUjsKKwlwa190cmlnZ2VyLT5ldmVudHMgPSBU UklHR0VSX1RZUEVfVVBEQVRFOworCXBrX3RyaWdnZXItPmNvbHVtbnMgPSBOSUw7CisJcGtfdHJp Z2dlci0+dHJhbnNpdGlvblJlbHMgPSBOSUw7CisJcGtfdHJpZ2dlci0+d2hlbkNsYXVzZSA9IE5V TEw7CisJcGtfdHJpZ2dlci0+aXNjb25zdHJhaW50ID0gZmFsc2U7CisJcGtfdHJpZ2dlci0+Y29u c3RycmVsID0gTlVMTDsKKwlwa190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJcGtfdHJp Z2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJcGtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSgiRlBfaW5zZXJ0X2xlZnRvdmVycyIpOworCXBrX3RyaWdnZXItPmFyZ3MgPSBO SUw7CisKKwkodm9pZCkgQ3JlYXRlVHJpZ2dlcihwa190cmlnZ2VyLCBOVUxMLCBSZWxhdGlvbkdl dFJlbGlkKHJlbCksIEludmFsaWRPaWQsCisJCQkJCQkgY29uc3RyYWludE9pZCwKKwkJCQkJCSBp bmRleE9pZCwgSW52YWxpZE9pZCwgSW52YWxpZE9pZCwgTlVMTCwgdHJ1ZSwgZmFsc2UpOworCisJ LyogTWFrZSBjaGFuZ2VzLXNvLWZhciB2aXNpYmxlICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1l bnQoKTsKKworCS8qCisJICogQnVpbGQgYW5kIGV4ZWN1dGUgYSBDUkVBVEUgVFJJR0dFUiBzdGF0 ZW1lbnQgQUZURVIgREVMRVRFLgorCSAqLworCXBrX3RyaWdnZXIgPSBtYWtlTm9kZShDcmVhdGVU cmlnU3RtdCk7CisJcGtfdHJpZ2dlci0+dHJpZ25hbWUgPSAiUEtfVGVtcG9yYWxUcmlnZ2VyIjsK Kwlwa190cmlnZ2VyLT5yZWxhdGlvbiA9IE5VTEw7CisJcGtfdHJpZ2dlci0+cm93ID0gdHJ1ZTsK Kwlwa190cmlnZ2VyLT50aW1pbmcgPSBUUklHR0VSX1RZUEVfQUZURVI7CisJcGtfdHJpZ2dlci0+ ZXZlbnRzID0gVFJJR0dFUl9UWVBFX0RFTEVURTsKKwlwa190cmlnZ2VyLT5jb2x1bW5zID0gTklM OworCXBrX3RyaWdnZXItPnRyYW5zaXRpb25SZWxzID0gTklMOworCXBrX3RyaWdnZXItPndoZW5D bGF1c2UgPSBOVUxMOworCXBrX3RyaWdnZXItPmlzY29uc3RyYWludCA9IGZhbHNlOworCXBrX3Ry aWdnZXItPmNvbnN0cnJlbCA9IE5VTEw7CisJcGtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNl OworCXBrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCXBrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIkZQX2luc2VydF9sZWZ0b3ZlcnMiKTsKKwlwa190cmlnZ2Vy LT5hcmdzID0gTklMOworCisJKHZvaWQpIENyZWF0ZVRyaWdnZXIocGtfdHJpZ2dlciwgTlVMTCwg UmVsYXRpb25HZXRSZWxpZChyZWwpLCBJbnZhbGlkT2lkLAorCQkJCQkJIGNvbnN0cmFpbnRPaWQs CisJCQkJCQkgaW5kZXhPaWQsIEludmFsaWRPaWQsIEludmFsaWRPaWQsIE5VTEwsIHRydWUsIGZh bHNlKTsKKworfQorCiAvKgogICogQWx0ZXJUYWJsZUdldExvY2tMZXZlbAogICoKQEAgLTkxMjgs NiArOTE4OSw5IEBAIEFURXhlY0FkZEluZGV4Q29uc3RyYWludChBbHRlcmVkVGFibGVJbmZvICp0 YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgYWxsb3dTeXN0ZW1UYWJsZU1vZHMsCiAJCQkJ CQkJCQkgIGZhbHNlKTsJLyogaXNfaW50ZXJuYWwgKi8KIAorCWlmIChzdG10LT5wcmltYXJ5ICYm IHN0bXQtPmlzdGVtcG9yYWwpCisJCUNyZWF0ZVRlbXBvcmFsUHJpbWFyeUtleVRyaWdnZXJzKHJl bCwgYWRkcmVzcy5vYmplY3RJZCwgaW5kZXhfb2lkKTsKKwogCWluZGV4X2Nsb3NlKGluZGV4UmVs LCBOb0xvY2spOwogCiAJcmV0dXJuIGFkZHJlc3M7CkBAIC0xMTY2NCw2ICsxMTcyOCw3IEBAIHZh bGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkJdHJpZ2RhdGEudGdf dHJpZ3R1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCBmYWxzZSwgTlVMTCk7CiAJ CXRyaWdkYXRhLnRnX3RyaWdzbG90ID0gc2xvdDsKIAkJdHJpZ2RhdGEudGdfdHJpZ2dlciA9ICZ0 cmlnOworCQl0cmlnZGF0YS50Z190ZW1wb3JhbCA9IE5VTEw7CiAKIAkJZmNpbmZvLT5jb250ZXh0 ID0gKE5vZGUgKikgJnRyaWdkYXRhOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKaW5kZXggMzEzYmE5 Y2RmNi4uYTUwM2Q2MzhiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dl ci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAtNTQsNiArNTQsNyBA QAogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAj aW5jbHVkZSAidXRpbHMvYnl0ZWEuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1 ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKQEAgLTI1NTgsNiArMjU1OSw3IEBAIEV4ZWNCU0RlbGV0ZVRy aWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvKQogCUxvY1RyaWdn ZXJEYXRhLnRnX2V2ZW50ID0gVFJJR0dFUl9FVkVOVF9ERUxFVEUgfAogCQlUUklHR0VSX0VWRU5U X0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0 aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBv cnRpb25PZjsKIAlmb3IgKGkgPSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCiAJ ewogCQlUcmlnZ2VyICAgICp0cmlnZ2VyID0gJnRyaWdkZXNjLT50cmlnZ2Vyc1tpXTsKQEAgLTI2 NTMsNiArMjY1NSw3IEBAIEV4ZWNCUkRlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBFUFFT dGF0ZSAqZXBxc3RhdGUsCiAJCVRSSUdHRVJfRVZFTlRfUk9XIHwKIAkJVFJJR0dFUl9FVkVOVF9C RUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxhdGlv bkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0 aW9uT2Y7CiAJZm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQogCXsK IAkJSGVhcFR1cGxlCW5ld3R1cGxlOwpAQCAtMjczNCw2ICsyNzM3LDcgQEAgRXhlY0lSRGVsZXRl VHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCVRSSUdH RVJfRVZFTlRfUk9XIHwKIAkJVFJJR0dFUl9FVkVOVF9JTlNURUFEOwogCUxvY1RyaWdnZXJEYXRh LnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRh LnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCiAJRXhlY0ZvcmNlU3Rv cmVIZWFwVHVwbGUodHJpZ3R1cGxlLCBzbG90LCBmYWxzZSk7CiAKQEAgLTI3OTcsNiArMjgwMSw3 IEBAIEV4ZWNCU1VwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpy ZWxpbmZvKQogCQlUUklHR0VSX0VWRU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxh dGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKIAlMb2NUcmlnZ2VyRGF0YS50Z191cGRh dGVkY29scyA9IHVwZGF0ZWRDb2xzOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVs aW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJp Z2dlcnM7IGkrKykKIAl7CiAJCVRyaWdnZXIgICAgKnRyaWdnZXIgPSAmdHJpZ2Rlc2MtPnRyaWdn ZXJzW2ldOwpAQCAtMjkwOSw2ICsyOTE0LDcgQEAgRXhlY0JSVXBkYXRlVHJpZ2dlcnMoRVN0YXRl ICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJVFJJR0dFUl9FVkVOVF9ST1cgfAogCQlU UklHR0VSX0VWRU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGlu Zm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGlu Zm8tPnJpX2ZvclBvcnRpb25PZjsKIAl1cGRhdGVkQ29scyA9IEV4ZWNHZXRBbGxVcGRhdGVkQ29s cyhyZWxpbmZvLCBlc3RhdGUpOwogCUxvY1RyaWdnZXJEYXRhLnRnX3VwZGF0ZWRjb2xzID0gdXBk YXRlZENvbHM7CiAJZm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQpA QCAtMzAzMiw2ICszMDM4LDcgQEAgRXhlY0lSVXBkYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUs IFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCVRSSUdHRVJfRVZFTlRfUk9XIHwKIAkJVFJJR0dF Ul9FVkVOVF9JTlNURUFEOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+ cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+ cmlfZm9yUG9ydGlvbk9mOwogCiAJRXhlY0ZvcmNlU3RvcmVIZWFwVHVwbGUodHJpZ3R1cGxlLCBv bGRzbG90LCBmYWxzZSk7CiAKQEAgLTM0NzAsNiArMzQ3Nyw3IEBAIHR5cGVkZWYgc3RydWN0IEFm dGVyVHJpZ2dlclNoYXJlZERhdGEKIAlPaWQJCQlhdHNfdGdvaWQ7CQkvKiB0aGUgdHJpZ2dlcidz IElEICovCiAJT2lkCQkJYXRzX3JlbGlkOwkJLyogdGhlIHJlbGF0aW9uIGl0J3Mgb24gKi8KIAlD b21tYW5kSWQJYXRzX2ZpcmluZ19pZDsJLyogSUQgZm9yIGZpcmluZyBjeWNsZSAqLworCUZvclBv cnRpb25PZlN0YXRlICpmb3JfcG9ydGlvbl9vZjsJLyogdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVz ZSAqLwogCXN0cnVjdCBBZnRlclRyaWdnZXJzVGFibGVEYXRhICphdHNfdGFibGU7CS8qIHRyYW5z aXRpb24gdGFibGUgYWNjZXNzICovCiAJQml0bWFwc2V0ICAqYXRzX21vZGlmaWVkY29sczsJLyog bW9kaWZpZWQgY29sdW1ucyAqLwogfSBBZnRlclRyaWdnZXJTaGFyZWREYXRhOwpAQCAtMzY5OCw2 ICszNzA2LDcgQEAgc3RhdGljIFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25zdHJhaW50U3RhdGVD cmVhdGUoaW50IG51bWFsbG9jKTsKIHN0YXRpYyBTZXRDb25zdHJhaW50U3RhdGUgU2V0Q29uc3Ry YWludFN0YXRlQ29weShTZXRDb25zdHJhaW50U3RhdGUgc3RhdGUpOwogc3RhdGljIFNldENvbnN0 cmFpbnRTdGF0ZSBTZXRDb25zdHJhaW50U3RhdGVBZGRJdGVtKFNldENvbnN0cmFpbnRTdGF0ZSBz dGF0ZSwKIAkJCQkJCQkJCQkJCQlPaWQgdGdvaWQsIGJvb2wgdGdpc2RlZmVycmVkKTsKK3N0YXRp YyBGb3JQb3J0aW9uT2ZTdGF0ZSAqQ29weUZvclBvcnRpb25PZlN0YXRlKEZvclBvcnRpb25PZlN0 YXRlICpzcmMpOwogc3RhdGljIHZvaWQgY2FuY2VsX3ByaW9yX3N0bXRfdHJpZ2dlcnMoT2lkIHJl bGlkLCBDbWRUeXBlIGNtZFR5cGUsIGludCB0Z2V2ZW50KTsKIAogCkBAIC00MTc1LDYgKzQxODQs NyBAQCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRlLAogCUxvY1RyaWdnZXJEYXRh LnRnX3JlbGF0aW9uID0gcmVsOwogCWlmIChUUklHR0VSX0ZPUl9VUERBVEUoTG9jVHJpZ2dlckRh dGEudGdfdHJpZ2dlci0+dGd0eXBlKSkKIAkJTG9jVHJpZ2dlckRhdGEudGdfdXBkYXRlZGNvbHMg PSBldnRzaGFyZWQtPmF0c19tb2RpZmllZGNvbHM7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9y YWwgPSBldnRzaGFyZWQtPmZvcl9wb3J0aW9uX29mOwogCiAJTWVtb3J5Q29udGV4dFJlc2V0KHBl cl90dXBsZV9jb250ZXh0KTsKIApAQCAtNTU3MSw2ICs1NTgxLDUwIEBAIEFmdGVyVHJpZ2dlclBl bmRpbmdPblJlbChPaWQgcmVsaWQpCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKiAtLS0tLS0tLS0t CisgKiBGb3JQb3J0aW9uT2ZTdGF0ZSgpCisgKgorICogQ29waWVzIGEgRm9yUG9ydGlvbk9mU3Rh dGUgaW50byB0aGUgY3VycmVudCBtZW1vcnkgY29udGV4dC4KKyAqLworc3RhdGljIEZvclBvcnRp b25PZlN0YXRlICoKK0NvcHlGb3JQb3J0aW9uT2ZTdGF0ZShGb3JQb3J0aW9uT2ZTdGF0ZSAqc3Jj KQoreworCUZvclBvcnRpb25PZlN0YXRlICpkc3QgPSBOVUxMOworCWlmIChzcmMpIHsKKwkJTWVt b3J5Q29udGV4dCBvbGRjdHg7CisJCVJhbmdlVHlwZSAqcjsKKwkJVHlwZUNhY2hlRW50cnkgKnR5 cGNhY2hlOworCisJCS8qCisJCSAqIE5lZWQgdG8gbGlmdCB0aGUgRk9SIFBPUlRJT04gT0YgZGV0 YWlscyBpbnRvIGEgaGlnaGVyIG1lbW9yeSBjb250ZXh0CisJCSAqIGJlY2F1c2UgY2FzY2FkaW5n IGZvcmVpZ24ga2V5IHVwZGF0ZS9kZWxldGVzIGNhbiBjYXVzZSB0cmlnZ2VycyB0byBmaXJlCisJ CSAqIHRyaWdnZXJzIChib3RoIG90aGVyIFRSSSB0cmlnZ2VycyBhbmQgdGhlIGluc2VydF9sZWZ0 b3ZlcnMgdHJpZ2dlciksCisJCSAqIGFuZCB0aGUgQWZ0ZXJUcmlnZ2VyRXZlbnRzIHdpbGwgb3V0 bGl2ZSB0aGUgRlBPIGRldGFpbHMgb2YgdGhlIG9yaWdpbmFsCisJCSAqIHF1ZXJ5LgorCQkgKi8K KwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7 CisJCWRzdCA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKwkJZHN0LT5mcF9yYW5nZU5h bWUgPSBwc3RyZHVwKHNyYy0+ZnBfcmFuZ2VOYW1lKTsKKwkJZHN0LT5mcF9yYW5nZVR5cGUgPSBz cmMtPmZwX3JhbmdlVHlwZTsKKwkJZHN0LT5mcF9oYXNQZXJpb2QgPSBzcmMtPmZwX2hhc1Blcmlv ZDsKKworCQlpZiAoc3JjLT5mcF9wZXJpb2RTdGFydE5hbWUpCisJCQlkc3QtPmZwX3BlcmlvZFN0 YXJ0TmFtZSA9IHBzdHJkdXAoc3JjLT5mcF9wZXJpb2RTdGFydE5hbWUpOworCQllbHNlCisJCQlk c3QtPmZwX3BlcmlvZFN0YXJ0TmFtZSA9IE5VTEw7CisKKwkJaWYgKHNyYy0+ZnBfcGVyaW9kRW5k TmFtZSkKKwkJCWRzdC0+ZnBfcGVyaW9kRW5kTmFtZSA9IHBzdHJkdXAoc3JjLT5mcF9wZXJpb2RF bmROYW1lKTsKKwkJZWxzZQorCQkJZHN0LT5mcF9wZXJpb2RFbmROYW1lID0gTlVMTDsKKworCQly ID0gRGF0dW1HZXRSYW5nZVR5cGVQKHNyYy0+ZnBfdGFyZ2V0UmFuZ2UpOworCQl0eXBjYWNoZSA9 IGxvb2t1cF90eXBlX2NhY2hlKFJhbmdlVHlwZUdldE9pZChyKSwgVFlQRUNBQ0hFX1JBTkdFX0lO Rk8pOworCQlkc3QtPmZwX3RhcmdldFJhbmdlID0gZGF0dW1Db3B5KHNyYy0+ZnBfdGFyZ2V0UmFu Z2UsIHR5cGNhY2hlLT50eXBieXZhbCwgdHlwY2FjaGUtPnR5cGxlbik7CisJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KKwlyZXR1cm4gZHN0OworfQogCiAvKiAtLS0tLS0tLS0t CiAgKiBBZnRlclRyaWdnZXJTYXZlRXZlbnQoKQpAQCAtNTg5MCw2ICs1OTQ0LDcgQEAgQWZ0ZXJU cmlnZ2VyU2F2ZUV2ZW50KEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAog CQllbHNlCiAJCQluZXdfc2hhcmVkLmF0c190YWJsZSA9IE5VTEw7CiAJCW5ld19zaGFyZWQuYXRz X21vZGlmaWVkY29scyA9IG1vZGlmaWVkQ29sczsKKwkJbmV3X3NoYXJlZC5mb3JfcG9ydGlvbl9v ZiA9IENvcHlGb3JQb3J0aW9uT2ZTdGF0ZShyZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2YpOwogCiAJ CWFmdGVyVHJpZ2dlckFkZEV2ZW50KCZhZnRlclRyaWdnZXJzLnF1ZXJ5X3N0YWNrW2FmdGVyVHJp Z2dlcnMucXVlcnlfZGVwdGhdLmV2ZW50cywKIAkJCQkJCQkgJm5ld19ldmVudCwgJm5ld19zaGFy ZWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYjNjZTRiYWU1My4uODBhM2NkZmMyMiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xMjQwLDYgKzEyNDAsNyBAQCBJbml0UmVzdWx0 UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCXJlc3VsdFJlbEluZm8tPnJp X3Byb2plY3RSZXR1cm5pbmcgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RB cmJpdGVySW5kZXhlcyA9IE5JTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0ID0gTlVM TDsKKwlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YgPSBOVUxMOwogCXJlc3VsdFJlbElu Zm8tPnJpX1JldHVybmluZ1Nsb3QgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdPbGRT bG90ID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnTmV3U2xvdCA9IE5VTEw7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IGQzMjg4NTZhZTUuLmU3YjlkODhk MzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC01MSw2ICs1MSw4 IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5o IgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBl cy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5o IgogCiAKQEAgLTMwNDgsNiArMzA1MCwzNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRh YmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJfQogCX0KIAorCS8qCisJ ICogSWYgbmVlZGVkLCBpbml0aWFsaXplIHRoZSB0YXJnZXQgcmFuZ2UgZm9yIEZPUiBQT1JUSU9O IE9GLgorCSAqLworCWlmIChub2RlLT5mb3JQb3J0aW9uT2YpCisJeworCQlGb3JQb3J0aW9uT2ZF eHByICpmb3JQb3J0aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlLT5mb3JQb3J0aW9u T2Y7CisJCURhdHVtCXRhcmdldFJhbmdlOworCQlib29sCWlzTnVsbDsKKwkJRXhwckNvbnRleHQg KmVjb250ZXh0OworCQlFeHByU3RhdGUgKmV4cHJTdGF0ZTsKKworCQkvKiBFdmFsIHRoZSBGT1Ig UE9SVElPTiBPRiB0YXJnZXQgKi8KKwkJaWYgKG10c3RhdGUtPnBzLnBzX0V4cHJDb250ZXh0ID09 IE5VTEwpCisJCQlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRlLCAmbXRzdGF0ZS0+cHMpOwor CQllY29udGV4dCA9IG10c3RhdGUtPnBzLnBzX0V4cHJDb250ZXh0OworCisJCWV4cHJTdGF0ZSA9 IEV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBmb3JQb3J0aW9uT2YtPnRhcmdldFJhbmdlLCBlc3Rh dGUpOworCQl0YXJnZXRSYW5nZSA9IEV4ZWNFdmFsRXhwcihleHByU3RhdGUsIGVjb250ZXh0LCAm aXNOdWxsKTsKKworCQlpZiAoaXNOdWxsKSBlbG9nKEVSUk9SLCAiR290IGEgTlVMTCBGT1IgUE9S VElPTiBPRiB0YXJnZXQgcmFuZ2UiKTsKKworCQlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9u T2YgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7CisJCXJlc3VsdFJlbEluZm8tPnJpX2Zv clBvcnRpb25PZi0+ZnBfcmFuZ2VOYW1lID0gZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lOworCQly ZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX3BlcmlvZFN0YXJ0TmFtZSA9IGZvclBv cnRpb25PZi0+cGVyaW9kX3N0YXJ0X25hbWU7CisJCXJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRp b25PZi0+ZnBfcGVyaW9kRW5kTmFtZSA9IGZvclBvcnRpb25PZi0+cGVyaW9kX2VuZF9uYW1lOwor CQlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX3RhcmdldFJhbmdlID0gdGFyZ2V0 UmFuZ2U7CisJCXJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZi0+ZnBfcmFuZ2VUeXBlID0g Zm9yUG9ydGlvbk9mLT5yYW5nZVR5cGU7CisKKwkJLyogRG9uJ3QgZnJlZSB0aGUgRXhwckNvbnRl eHQgaGVyZSBiZWNhdXNlIHRoZSByZXN1bHQgbXVzdCBsYXN0IGZvciB0aGUgd2hvbGUgcXVlcnkg Ki8KKwl9CisKIAkvKgogCSAqIElmIHdlIGhhdmUgYW55IHNlY29uZGFyeSByZWxhdGlvbnMgaW4g YW4gVVBEQVRFIG9yIERFTEVURSwgdGhleSBuZWVkIHRvCiAJICogYmUgdHJlYXRlZCBsaWtlIG5v bi1sb2NrZWQgcmVsYXRpb25zIGluIFNFTEVDVCBGT1IgVVBEQVRFLCBpZSwgdGhlCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2Nv cHlmdW5jcy5jCmluZGV4IDc1NmViZDM1ZGUuLjlmYmZjZDU5YTAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5j cy5jCkBAIC0yMTgsNiArMjE4LDcgQEAgX2NvcHlNb2RpZnlUYWJsZShjb25zdCBNb2RpZnlUYWJs ZSAqZnJvbSkKIAlDT1BZX05PREVfRklFTEQocm93TWFya3MpOwogCUNPUFlfU0NBTEFSX0ZJRUxE KGVwcVBhcmFtKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChvbkNvbmZsaWN0QWN0aW9uKTsKKwlDT1BZ X05PREVfRklFTEQoZm9yUG9ydGlvbk9mKTsKIAlDT1BZX05PREVfRklFTEQoYXJiaXRlckluZGV4 ZXMpOwogCUNPUFlfTk9ERV9GSUVMRChvbkNvbmZsaWN0U2V0KTsKIAlDT1BZX05PREVfRklFTEQo b25Db25mbGljdENvbHMpOwpAQCAtMjI5MSw2ICsyMjkyLDMzIEBAIF9jb3B5T25Db25mbGljdEV4 cHIoY29uc3QgT25Db25mbGljdEV4cHIgKmZyb20pCiAJcmV0dXJuIG5ld25vZGU7CiB9CiAKKy8q CisgKiBfY29weUZvclBvcnRpb25PZkV4cHIKKyAqLworc3RhdGljIEZvclBvcnRpb25PZkV4cHIg KgorX2NvcHlGb3JQb3J0aW9uT2ZFeHByKGNvbnN0IEZvclBvcnRpb25PZkV4cHIgKmZyb20pCit7 CisJRm9yUG9ydGlvbk9mRXhwciAqbmV3bm9kZSA9IG1ha2VOb2RlKEZvclBvcnRpb25PZkV4cHIp OworCisJQ09QWV9TQ0FMQVJfRklFTEQocmFuZ2VfYXR0bm8pOworCUNPUFlfU0NBTEFSX0ZJRUxE KHN0YXJ0X2F0dG5vKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChlbmRfYXR0bm8pOworCUNPUFlfU1RS SU5HX0ZJRUxEKHJhbmdlX25hbWUpOworCUNPUFlfU1RSSU5HX0ZJRUxEKHBlcmlvZF9zdGFydF9u YW1lKTsKKwlDT1BZX1NUUklOR19GSUVMRChwZXJpb2RfZW5kX25hbWUpOworCUNPUFlfTk9ERV9G SUVMRChyYW5nZSk7CisJQ09QWV9OT0RFX0ZJRUxEKHN0YXJ0Q29sKTsKKwlDT1BZX05PREVfRklF TEQoZW5kQ29sKTsKKwlDT1BZX05PREVfRklFTEQodGFyZ2V0U3RhcnQpOworCUNPUFlfTk9ERV9G SUVMRCh0YXJnZXRFbmQpOworCUNPUFlfTk9ERV9GSUVMRCh0YXJnZXRSYW5nZSk7CisJQ09QWV9T Q0FMQVJfRklFTEQocmFuZ2VUeXBlKTsKKwlDT1BZX05PREVfRklFTEQob3ZlcmxhcHNFeHByKTsK KwlDT1BZX05PREVfRklFTEQocmFuZ2VTZXQpOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKIC8q ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKICAqCQkJCQkJcGF0aG5vZGVzLmggY29weSBmdW5jdGlvbnMKICAqCkBAIC0yNjY2 LDYgKzI2OTQsMTkgQEAgX2NvcHlDVEVDeWNsZUNsYXVzZShjb25zdCBDVEVDeWNsZUNsYXVzZSAq ZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorc3RhdGljIEZvclBvcnRpb25PZkNsYXVzZSAq CitfY29weUZvclBvcnRpb25PZkNsYXVzZShjb25zdCBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZyb20p Cit7CisJRm9yUG9ydGlvbk9mQ2xhdXNlICpuZXdub2RlID0gbWFrZU5vZGUoRm9yUG9ydGlvbk9m Q2xhdXNlKTsKKworCUNPUFlfU1RSSU5HX0ZJRUxEKHJhbmdlX25hbWUpOworCUNPUFlfU0NBTEFS X0ZJRUxEKHJhbmdlX25hbWVfbG9jYXRpb24pOworCUNPUFlfTk9ERV9GSUVMRCh0YXJnZXRfc3Rh cnQpOworCUNPUFlfTk9ERV9GSUVMRCh0YXJnZXRfZW5kKTsKKworCXJldHVybiBuZXdub2RlOwor fQorCiBzdGF0aWMgQ29tbW9uVGFibGVFeHByICoKIF9jb3B5Q29tbW9uVGFibGVFeHByKGNvbnN0 IENvbW1vblRhYmxlRXhwciAqZnJvbSkKIHsKQEAgLTUzMjEsNiArNTM2Miw5IEBAIGNvcHlPYmpl Y3RJbXBsKGNvbnN0IHZvaWQgKmZyb20pCiAJCWNhc2UgVF9PbkNvbmZsaWN0RXhwcjoKIAkJCXJl dHZhbCA9IF9jb3B5T25Db25mbGljdEV4cHIoZnJvbSk7CiAJCQlicmVhazsKKwkJY2FzZSBUX0Zv clBvcnRpb25PZkV4cHI6CisJCQlyZXR2YWwgPSBfY29weUZvclBvcnRpb25PZkV4cHIoZnJvbSk7 CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFJFTEFUSU9OIE5PREVTCkBAIC01ODcyLDYgKzU5 MTYsOSBAQCBjb3B5T2JqZWN0SW1wbChjb25zdCB2b2lkICpmcm9tKQogCQljYXNlIFRfQ1RFQ3lj bGVDbGF1c2U6CiAJCQlyZXR2YWwgPSBfY29weUNURUN5Y2xlQ2xhdXNlKGZyb20pOwogCQkJYnJl YWs7CisJCWNhc2UgVF9Gb3JQb3J0aW9uT2ZDbGF1c2U6CisJCQlyZXR2YWwgPSBfY29weUZvclBv cnRpb25PZkNsYXVzZShmcm9tKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29tbW9uVGFibGVFeHBy OgogCQkJcmV0dmFsID0gX2NvcHlDb21tb25UYWJsZUV4cHIoZnJvbSk7CiAJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25v ZGVzL2VxdWFsZnVuY3MuYwppbmRleCBlNzRiMTlkMmM2Li44N2YzZjU0MTIwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv ZXF1YWxmdW5jcy5jCkBAIC04MzQsNiArODM0LDI0IEBAIF9lcXVhbE9uQ29uZmxpY3RFeHByKGNv bnN0IE9uQ29uZmxpY3RFeHByICphLCBjb25zdCBPbkNvbmZsaWN0RXhwciAqYikKIAlyZXR1cm4g dHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wKK19lcXVhbEZvclBvcnRpb25PZkV4cHIoY29uc3QgRm9y UG9ydGlvbk9mRXhwciAqYSwgY29uc3QgRm9yUG9ydGlvbk9mRXhwciAqYikKK3sKKwlDT01QQVJF X1NDQUxBUl9GSUVMRChyYW5nZV9hdHRubyk7CisJQ09NUEFSRV9TVFJJTkdfRklFTEQocmFuZ2Vf bmFtZSk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHJhbmdlKTsKKwlDT01QQVJFX05PREVfRklFTEQo c3RhcnRDb2wpOworCUNPTVBBUkVfTk9ERV9GSUVMRChlbmRDb2wpOworCUNPTVBBUkVfTk9ERV9G SUVMRCh0YXJnZXRTdGFydCk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHRhcmdldEVuZCk7CisJQ09N UEFSRV9OT0RFX0ZJRUxEKHRhcmdldFJhbmdlKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChyYW5n ZVR5cGUpOworCUNPTVBBUkVfTk9ERV9GSUVMRChvdmVybGFwc0V4cHIpOworCUNPTVBBUkVfTk9E RV9GSUVMRChyYW5nZVNldCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIFN0dWZmIGZy b20gcGF0aG5vZGVzLmgKICAqLwpAQCAtMjkzNyw2ICsyOTU1LDE3IEBAIF9lcXVhbENURUN5Y2xl Q2xhdXNlKGNvbnN0IENURUN5Y2xlQ2xhdXNlICphLCBjb25zdCBDVEVDeWNsZUNsYXVzZSAqYikK IAlyZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wKK19lcXVhbEZvclBvcnRpb25PZkNsYXVz ZShjb25zdCBGb3JQb3J0aW9uT2ZDbGF1c2UgKmEsIGNvbnN0IEZvclBvcnRpb25PZkNsYXVzZSAq YikKK3sKKwlDT01QQVJFX1NUUklOR19GSUVMRChyYW5nZV9uYW1lKTsKKwlDT01QQVJFX1NDQUxB Ul9GSUVMRChyYW5nZV9uYW1lX2xvY2F0aW9uKTsKKwlDT01QQVJFX05PREVfRklFTEQodGFyZ2V0 X3N0YXJ0KTsKKwlDT01QQVJFX05PREVfRklFTEQodGFyZ2V0X2VuZCk7CisKKwlyZXR1cm4gdHJ1 ZTsKK30KKwogc3RhdGljIGJvb2wKIF9lcXVhbENvbW1vblRhYmxlRXhwcihjb25zdCBDb21tb25U YWJsZUV4cHIgKmEsIGNvbnN0IENvbW1vblRhYmxlRXhwciAqYikKIHsKQEAgLTMzMzAsNiArMzM1 OSw5IEBAIGVxdWFsKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJCWNhc2UgVF9PbkNv bmZsaWN0RXhwcjoKIAkJCXJldHZhbCA9IF9lcXVhbE9uQ29uZmxpY3RFeHByKGEsIGIpOwogCQkJ YnJlYWs7CisJCWNhc2UgVF9Gb3JQb3J0aW9uT2ZFeHByOgorCQkJcmV0dmFsID0gX2VxdWFsRm9y UG9ydGlvbk9mRXhwcihhLCBiKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfSm9pbkV4cHI6CiAJCQly ZXR2YWwgPSBfZXF1YWxKb2luRXhwcihhLCBiKTsKIAkJCWJyZWFrOwpAQCAtMzg3MSw2ICszOTAz LDkgQEAgZXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIAkJY2FzZSBUX0NURUN5 Y2xlQ2xhdXNlOgogCQkJcmV0dmFsID0gX2VxdWFsQ1RFQ3ljbGVDbGF1c2UoYSwgYik7CiAJCQli cmVhazsKKwkJY2FzZSBUX0ZvclBvcnRpb25PZkNsYXVzZToKKwkJCXJldHZhbCA9IF9lcXVhbEZv clBvcnRpb25PZkNsYXVzZShhLCBiKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29tbW9uVGFibGVF eHByOgogCQkJcmV0dmFsID0gX2VxdWFsQ29tbW9uVGFibGVFeHByKGEsIGIpOwogCQkJYnJlYWs7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5k L25vZGVzL25vZGVGdW5jcy5jCmluZGV4IGQ0YzRlOTBjMjkuLjM4NTEyMDU4Y2EgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVz L25vZGVGdW5jcy5jCkBAIC0yMjM3LDYgKzIyMzcsMTQgQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtl cihOb2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNl IFRfRm9yUG9ydGlvbk9mRXhwcjoKKwkJCXsKKwkJCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0 aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlOworCisJCQkJaWYgKHdhbGtlcigoTm9k ZSAqKSBmb3JQb3J0aW9uT2YtPnRhcmdldFJhbmdlLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRy dWU7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX1BhcnRpdGlvblBydW5lU3RlcE9wOgogCQkJ ewogCQkJCVBhcnRpdGlvblBydW5lU3RlcE9wICpvcHN0ZXAgPSAoUGFydGl0aW9uUHJ1bmVTdGVw T3AgKikgbm9kZTsKQEAgLTIzNzMsNiArMjM4MSw4IEBAIHF1ZXJ5X3RyZWVfd2Fsa2VyKFF1ZXJ5 ICpxdWVyeSwKIAkJcmV0dXJuIHRydWU7CiAJaWYgKHdhbGtlcigoTm9kZSAqKSBxdWVyeS0+d2l0 aENoZWNrT3B0aW9ucywgY29udGV4dCkpCiAJCXJldHVybiB0cnVlOworCWlmICh3YWxrZXIoKE5v ZGUgKikgcXVlcnktPmZvclBvcnRpb25PZiwgY29udGV4dCkpCisJCXJldHVybiB0cnVlOwogCWlm ICh3YWxrZXIoKE5vZGUgKikgcXVlcnktPm9uQ29uZmxpY3QsIGNvbnRleHQpKQogCQlyZXR1cm4g dHJ1ZTsKIAlpZiAod2Fsa2VyKChOb2RlICopIHF1ZXJ5LT5yZXR1cm5pbmdMaXN0LCBjb250ZXh0 KSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDBjNDNlMGQ1NjcuLjk0N2EyMDE0OWQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv b3V0ZnVuY3MuYwpAQCAtNDE2LDEwICs0MTYsMTIgQEAgX291dE1vZGlmeVRhYmxlKFN0cmluZ0lu Zm8gc3RyLCBjb25zdCBNb2RpZnlUYWJsZSAqbm9kZSkKIAlXUklURV9OT0RFX0ZJRUxEKHJvd01h cmtzKTsKIAlXUklURV9JTlRfRklFTEQoZXBxUGFyYW0pOwogCVdSSVRFX0VOVU1fRklFTEQob25D b25mbGljdEFjdGlvbiwgT25Db25mbGljdEFjdGlvbik7CisJV1JJVEVfTk9ERV9GSUVMRChmb3JQ b3J0aW9uT2YpOwogCVdSSVRFX05PREVfRklFTEQoYXJiaXRlckluZGV4ZXMpOwogCVdSSVRFX05P REVfRklFTEQob25Db25mbGljdFNldCk7CiAJV1JJVEVfTk9ERV9GSUVMRChvbkNvbmZsaWN0Q29s cyk7CiAJV1JJVEVfTk9ERV9GSUVMRChvbkNvbmZsaWN0V2hlcmUpOworCS8vIFRPRE86IGFkZCB0 aGluZ3MgZm9yIEZvclBvcnRpb25PZgogCVdSSVRFX1VJTlRfRklFTEQoZXhjbFJlbFJUSSk7CiAJ V1JJVEVfTk9ERV9GSUVMRChleGNsUmVsVGxpc3QpOwogfQpAQCAtMTc0MSw2ICsxNzQzLDI0IEBA IF9vdXRPbkNvbmZsaWN0RXhwcihTdHJpbmdJbmZvIHN0ciwgY29uc3QgT25Db25mbGljdEV4cHIg Km5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChleGNsUmVsVGxpc3QpOwogfQogCitzdGF0aWMgdm9p ZAorX291dEZvclBvcnRpb25PZkV4cHIoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEZvclBvcnRpb25P ZkV4cHIgKm5vZGUpCit7CisJV1JJVEVfTk9ERV9UWVBFKCJGT1JQT1JUSU9OT0ZFWFBSIik7CisK KwlXUklURV9JTlRfRklFTEQocmFuZ2VfYXR0bm8pOworCVdSSVRFX1NUUklOR19GSUVMRChyYW5n ZV9uYW1lKTsKKwlXUklURV9OT0RFX0ZJRUxEKHJhbmdlKTsKKwlXUklURV9OT0RFX0ZJRUxEKHN0 YXJ0Q29sKTsKKwlXUklURV9OT0RFX0ZJRUxEKGVuZENvbCk7CisJV1JJVEVfTk9ERV9GSUVMRCh0 YXJnZXRTdGFydCk7CisJV1JJVEVfTk9ERV9GSUVMRCh0YXJnZXRFbmQpOworCVdSSVRFX05PREVf RklFTEQodGFyZ2V0UmFuZ2UpOworCVdSSVRFX09JRF9GSUVMRChyYW5nZVR5cGUpOworCVdSSVRF X05PREVfRklFTEQob3ZlcmxhcHNFeHByKTsKKwlXUklURV9OT0RFX0ZJRUxEKHJhbmdlU2V0KTsK K30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICoJU3R1ZmYgZnJvbSBwYXRobm9kZXMu aC4KQEAgLTQxOTcsNiArNDIxNyw5IEBAIG91dE5vZGUoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IHZv aWQgKm9iaikKIAkJCWNhc2UgVF9PbkNvbmZsaWN0RXhwcjoKIAkJCQlfb3V0T25Db25mbGljdEV4 cHIoc3RyLCBvYmopOwogCQkJCWJyZWFrOworCQkJY2FzZSBUX0ZvclBvcnRpb25PZkV4cHI6CisJ CQkJX291dEZvclBvcnRpb25PZkV4cHIoc3RyLCBvYmopOworCQkJCWJyZWFrOwogCQkJY2FzZSBU X1BhdGg6CiAJCQkJX291dFBhdGgoc3RyLCBvYmopOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVu Y3MuYwppbmRleCAwZGQxYWQ3ZGZjLi5lMmVkYTIxZmFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpA QCAtMTQyMiw2ICsxNDIyLDI4IEBAIF9yZWFkQXBwZW5kUmVsSW5mbyh2b2lkKQogICoJU3R1ZmYg ZnJvbSBwYXJzZW5vZGVzLmguCiAgKi8KIAorLyoKKyAqIF9yZWFkRm9yUG9ydGlvbk9mRXhwcgor ICovCitzdGF0aWMgRm9yUG9ydGlvbk9mRXhwciAqCitfcmVhZEZvclBvcnRpb25PZkV4cHIodm9p ZCkKK3sKKwlSRUFEX0xPQ0FMUyhGb3JQb3J0aW9uT2ZFeHByKTsKKworCVJFQURfSU5UX0ZJRUxE KHJhbmdlX2F0dG5vKTsKKwlSRUFEX1NUUklOR19GSUVMRChyYW5nZV9uYW1lKTsKKwlSRUFEX05P REVfRklFTEQocmFuZ2UpOworCVJFQURfTk9ERV9GSUVMRChzdGFydENvbCk7CisJUkVBRF9OT0RF X0ZJRUxEKGVuZENvbCk7CisJUkVBRF9OT0RFX0ZJRUxEKHRhcmdldFN0YXJ0KTsKKwlSRUFEX05P REVfRklFTEQodGFyZ2V0RW5kKTsKKwlSRUFEX05PREVfRklFTEQodGFyZ2V0UmFuZ2UpOworCVJF QURfT0lEX0ZJRUxEKHJhbmdlVHlwZSk7CisJUkVBRF9OT0RFX0ZJRUxEKG92ZXJsYXBzRXhwcik7 CisJUkVBRF9OT0RFX0ZJRUxEKHJhbmdlU2V0KTsKKwlSRUFEX0RPTkUoKTsKK30KKwogLyoKICAq IF9yZWFkUmFuZ2VUYmxFbnRyeQogICovCkBAIC0xNjk2LDYgKzE3MTgsNyBAQCBfcmVhZE1vZGlm eVRhYmxlKHZvaWQpCiAJUkVBRF9OT0RFX0ZJRUxEKHJvd01hcmtzKTsKIAlSRUFEX0lOVF9GSUVM RChlcHFQYXJhbSk7CiAJUkVBRF9FTlVNX0ZJRUxEKG9uQ29uZmxpY3RBY3Rpb24sIE9uQ29uZmxp Y3RBY3Rpb24pOworCVJFQURfTk9ERV9GSUVMRChmb3JQb3J0aW9uT2YpOwogCVJFQURfTk9ERV9G SUVMRChhcmJpdGVySW5kZXhlcyk7CiAJUkVBRF9OT0RFX0ZJRUxEKG9uQ29uZmxpY3RTZXQpOwog CVJFQURfTk9ERV9GSUVMRChvbkNvbmZsaWN0Q29scyk7CkBAIC0yODQ1LDYgKzI4NjgsOCBAQCBw YXJzZU5vZGVTdHJpbmcodm9pZCkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRPbkNvbmZsaWN0RXhw cigpOwogCWVsc2UgaWYgKE1BVENIKCJBUFBFTkRSRUxJTkZPIiwgMTMpKQogCQlyZXR1cm5fdmFs dWUgPSBfcmVhZEFwcGVuZFJlbEluZm8oKTsKKwllbHNlIGlmIChNQVRDSCgiRk9SUE9SVElPTk9G RVhQUiIsIDE2KSkKKwkJcmV0dXJuX3ZhbHVlID0gX3JlYWRGb3JQb3J0aW9uT2ZFeHByKCk7CiAJ ZWxzZSBpZiAoTUFUQ0goIlJURSIsIDMpKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVhZFJhbmdlVGJs RW50cnkoKTsKIAllbHNlIGlmIChNQVRDSCgiUkFOR0VUQkxGVU5DVElPTiIsIDE2KSkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCBhNWY2ZDY3OGNjLi41NDM2ZjU5 ZDliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0zMDgsNyAr MzA4LDggQEAgc3RhdGljIE1vZGlmeVRhYmxlICptYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZv ICpyb290LCBQbGFuICpzdWJwbGFuLAogCQkJCQkJCQkJIExpc3QgKnJlc3VsdFJlbGF0aW9ucywK IAkJCQkJCQkJCSBMaXN0ICp1cGRhdGVDb2xub3NMaXN0cywKIAkJCQkJCQkJCSBMaXN0ICp3aXRo Q2hlY2tPcHRpb25MaXN0cywgTGlzdCAqcmV0dXJuaW5nTGlzdHMsCi0JCQkJCQkJCQkgTGlzdCAq cm93TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNvbmZsaWN0LCBpbnQgZXBxUGFyYW0pOworCQkJ CQkJCQkJIExpc3QgKnJvd01hcmtzLCBPbkNvbmZsaWN0RXhwciAqb25jb25mbGljdCwKKwkJCQkJ CQkJCSBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YsIGludCBlcHFQYXJhbSk7CiBzdGF0 aWMgR2F0aGVyTWVyZ2UgKmNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGxhbihQbGFubmVySW5mbyAqcm9v dCwKIAkJCQkJCQkJCQkJIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9wYXRoKTsKIApAQCAtMjc1Myw2 ICsyNzU0LDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1v ZGlmeVRhYmxlUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJCWJlc3RfcGF0aC0+cmV0dXJuaW5nTGlz dHMsCiAJCQkJCQkJYmVzdF9wYXRoLT5yb3dNYXJrcywKIAkJCQkJCQliZXN0X3BhdGgtPm9uY29u ZmxpY3QsCisJCQkJCQkJYmVzdF9wYXRoLT5mb3JQb3J0aW9uT2YsCiAJCQkJCQkJYmVzdF9wYXRo LT5lcHFQYXJhbSk7CiAKIAljb3B5X2dlbmVyaWNfcGF0aF9pbmZvKCZwbGFuLT5wbGFuLCAmYmVz dF9wYXRoLT5wYXRoKTsKQEAgLTY4NzYsNyArNjg3OCw4IEBAIG1ha2VfbW9kaWZ5dGFibGUoUGxh bm5lckluZm8gKnJvb3QsIFBsYW4gKnN1YnBsYW4sCiAJCQkJIExpc3QgKnJlc3VsdFJlbGF0aW9u cywKIAkJCQkgTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJIExpc3QgKndpdGhDaGVja09w dGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKLQkJCQkgTGlzdCAqcm93TWFya3MsIE9u Q29uZmxpY3RFeHByICpvbmNvbmZsaWN0LCBpbnQgZXBxUGFyYW0pCisJCQkJIExpc3QgKnJvd01h cmtzLCBPbkNvbmZsaWN0RXhwciAqb25jb25mbGljdCwKKwkJCQkgRm9yUG9ydGlvbk9mRXhwciAq Zm9yUG9ydGlvbk9mLCBpbnQgZXBxUGFyYW0pCiB7CiAJTW9kaWZ5VGFibGUgKm5vZGUgPSBtYWtl Tm9kZShNb2RpZnlUYWJsZSk7CiAJTGlzdAkgICAqZmR3X3ByaXZhdGVfbGlzdDsKQEAgLTY5NDEs NiArNjk0NCw3IEBAIG1ha2VfbW9kaWZ5dGFibGUoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnN1 YnBsYW4sCiAJCW5vZGUtPmV4Y2xSZWxUbGlzdCA9IG9uY29uZmxpY3QtPmV4Y2xSZWxUbGlzdDsK IAl9CiAJbm9kZS0+dXBkYXRlQ29sbm9zTGlzdHMgPSB1cGRhdGVDb2xub3NMaXN0czsKKwlub2Rl LT5mb3JQb3J0aW9uT2YgPSAoTm9kZSAqKSBmb3JQb3J0aW9uT2Y7CiAJbm9kZS0+d2l0aENoZWNr T3B0aW9uTGlzdHMgPSB3aXRoQ2hlY2tPcHRpb25MaXN0czsKIAlub2RlLT5yZXR1cm5pbmdMaXN0 cyA9IHJldHVybmluZ0xpc3RzOwogCW5vZGUtPnJvd01hcmtzID0gcm93TWFya3M7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggMWU0MmQ3NTQ2NS4uNzljNTdiYjgwNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMTg1OCw2ICsxODU4LDcgQEAgZ3Jv dXBpbmdfcGxhbm5lcihQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIHR1cGxlX2ZyYWN0aW9uKQog CQkJCQkJCQkJCXJldHVybmluZ0xpc3RzLAogCQkJCQkJCQkJCXJvd01hcmtzLAogCQkJCQkJCQkJ CXBhcnNlLT5vbkNvbmZsaWN0LAorCQkJCQkJCQkJCXBhcnNlLT5mb3JQb3J0aW9uT2YsCiAJCQkJ CQkJCQkJYXNzaWduX3NwZWNpYWxfZXhlY19wYXJhbShyb290KSk7CiAJCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3BhdGhub2RlLmMKaW5kZXggY2VkYjM4NDhkZC4uYjdmMGJlNTU1NiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCkBAIC0zNjMwLDcgKzM2MzAsNyBAQCBj cmVhdGVfbW9kaWZ5dGFibGVfcGF0aChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVs LAogCQkJCQkJTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJCQlMaXN0ICp3aXRoQ2hlY2tP cHRpb25MaXN0cywgTGlzdCAqcmV0dXJuaW5nTGlzdHMsCiAJCQkJCQlMaXN0ICpyb3dNYXJrcywg T25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCi0JCQkJCQlpbnQgZXBxUGFyYW0pCisJCQkJCQlG b3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YsIGludCBlcHFQYXJhbSkKIHsKIAlNb2RpZnlU YWJsZVBhdGggKnBhdGhub2RlID0gbWFrZU5vZGUoTW9kaWZ5VGFibGVQYXRoKTsKIApAQCAtMzY5 NSw2ICszNjk1LDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BhdGgoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKIAlwYXRobm9kZS0+cmV0dXJuaW5nTGlzdHMgPSByZXR1cm5pbmdM aXN0czsKIAlwYXRobm9kZS0+cm93TWFya3MgPSByb3dNYXJrczsKIAlwYXRobm9kZS0+b25jb25m bGljdCA9IG9uY29uZmxpY3Q7CisJcGF0aG5vZGUtPmZvclBvcnRpb25PZiA9IGZvclBvcnRpb25P ZjsKIAlwYXRobm9kZS0+ZXBxUGFyYW0gPSBlcHFQYXJhbTsKIAogCXJldHVybiBwYXRobm9kZTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9w YXJzZXIvYW5hbHl6ZS5jCmluZGV4IDE0NmVlOGRkMWUuLjdhMWM0YmU2ZGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2Fu YWx5emUuYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNs dWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC00NCwxMiArNDUsMTQgQEAKICNpbmNsdWRlICJw YXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdGFyZ2V0Lmgi CiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vy LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3 cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKICNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0 aWxzL3F1ZXJ5anVtYmxlLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIApAQCAtNjUsNiAr NjgsMTAgQEAgc3RhdGljIExpc3QgKnRyYW5zZm9ybUluc2VydFJvdyhQYXJzZVN0YXRlICpwc3Rh dGUsIExpc3QgKmV4cHJsaXN0LAogCQkJCQkJCQlib29sIHN0cmlwX2luZGlyZWN0aW9uKTsKIHN0 YXRpYyBPbkNvbmZsaWN0RXhwciAqdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJCQkJCQkJCQkgT25Db25mbGljdENsYXVzZSAqb25Db25mbGljdENsYXVz ZSk7CitzdGF0aWMgTm9kZSAqdHJhbnNmb3JtRm9yUG9ydGlvbk9mQm91bmQoTm9kZSAqbiwgYm9v bCBpc0xvd2VyQm91bmQpOworc3RhdGljIEZvclBvcnRpb25PZkV4cHIgKnRyYW5zZm9ybUZvclBv cnRpb25PZkNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJCQkJCQkJIGludCBydGlu ZGV4LAorCQkJCQkJCQkJCQkJCSBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZkNsYXVz ZSk7CiBzdGF0aWMgaW50CWNvdW50X3Jvd2V4cHJfY29sdW1ucyhQYXJzZVN0YXRlICpwc3RhdGUs IE5vZGUgKmV4cHIpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1TZWxlY3RTdG10KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybVZh bHVlc0NsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpOwpAQCAtNzcs NyArODQsOCBAQCBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybVJldHVyblN0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBSZXR1cm5TdG10ICpzdG10KTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtVXBkYXRl U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpOwogc3RhdGljIExpc3Qg KnRyYW5zZm9ybVJldHVybmluZ0xpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpyZXR1cm5p bmdMaXN0KTsKIHN0YXRpYyBMaXN0ICp0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3Rh dGUgKnBzdGF0ZSwKLQkJCQkJCQkJCSAgIExpc3QgKnRhcmdldExpc3QpOworCQkJCQkJCQkJICAg TGlzdCAqdGFyZ2V0TGlzdCwKKwkJCQkJCQkJCSAgIEZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRp b25PZik7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybVBMQXNzaWduU3RtdChQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkJCQlQTEFzc2lnblN0bXQgKnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0cmFu c2Zvcm1EZWNsYXJlQ3Vyc29yU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsCkBAIC00MzAsNiArNDM4 LDcgQEAgdHJhbnNmb3JtRGVsZXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQg KnN0bXQpCiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5hbWVz cGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAgICpxdWFs OwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9ERUxFVEU7CkBAIC00NjgsNyArNDc3LDIwIEBA IHRyYW5zZm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10 KQogCW5zaXRlbS0+cF9sYXRlcmFsX29ubHkgPSBmYWxzZTsKIAluc2l0ZW0tPnBfbGF0ZXJhbF9v ayA9IHRydWU7CiAKLQlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCBzdG10LT53 aGVyZUNsYXVzZSwKKwlpZiAoc3RtdC0+Zm9yUG9ydGlvbk9mKQorCQlxcnktPmZvclBvcnRpb25P ZiA9IHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShwc3RhdGUsIHFyeS0+cmVzdWx0UmVsYXRp b24sIHN0bXQtPmZvclBvcnRpb25PZik7CisKKwkvLyBUT0RPOiBEUlkgd2l0aCBVUERBVEUKKwlp ZiAoc3RtdC0+Zm9yUG9ydGlvbk9mKQorCXsKKwkJaWYgKHN0bXQtPndoZXJlQ2xhdXNlKQorCQkJ d2hlcmVDbGF1c2UgPSAoTm9kZSAqKSBtYWtlQm9vbEV4cHIoQU5EX0VYUFIsIGxpc3RfbWFrZTIo cXJ5LT5mb3JQb3J0aW9uT2YtPm92ZXJsYXBzRXhwciwgc3RtdC0+d2hlcmVDbGF1c2UpLCAtMSk7 CisJCWVsc2UKKwkJCXdoZXJlQ2xhdXNlID0gcXJ5LT5mb3JQb3J0aW9uT2YtPm92ZXJsYXBzRXhw cjsKKwl9CisJZWxzZQorCQl3aGVyZUNsYXVzZSA9IHN0bXQtPndoZXJlQ2xhdXNlOworCXF1YWwg PSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsIHdoZXJlQ2xhdXNlLAogCQkJCQkJCQlFWFBS X0tJTkRfV0hFUkUsICJXSEVSRSIpOwogCiAJcXJ5LT5yZXR1cm5pbmdMaXN0ID0gdHJhbnNmb3Jt UmV0dXJuaW5nTGlzdChwc3RhdGUsIHN0bXQtPnJldHVybmluZ0xpc3QpOwpAQCAtMTA4NSw3ICsx MTA3LDcgQEAgdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CSAqIE5vdyB0cmFuc2Zvcm0gdGhlIFVQREFURSBzdWJleHByZXNzaW9ucy4KIAkJICovCiAJCW9u Q29uZmxpY3RTZXQgPQotCQkJdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsIG9uQ29u ZmxpY3RDbGF1c2UtPnRhcmdldExpc3QpOworCQkJdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChw c3RhdGUsIG9uQ29uZmxpY3RDbGF1c2UtPnRhcmdldExpc3QsIE5VTEwpOwogCiAJCW9uQ29uZmxp Y3RXaGVyZSA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwKIAkJCQkJCQkJCQkJICAgb25D b25mbGljdENsYXVzZS0+d2hlcmVDbGF1c2UsCkBAIC0xMTE1LDYgKzExMzcsMzM4IEBAIHRyYW5z Zm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCXJldHVybiByZXN1bHQ7 CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZCb3VuZAorICogICAgdHJhbnNmb3Jt cyBNSU5WQUxVRSBhbmQgTUFYVkFMVUUgcHNldWRvLWNvbHVtbiByZWZlcmVuY2VzIHRvIE5VTEwK KyAqICAgICh3aGljaCByZXByZXNlbnQgInVuYm91bmRlZCIgaW4gYSByYW5nZSB0eXBlLCBvdGhl cndpc2UgcmV0dXJucworICogICAgaXRzIGlucHV0IHVuY2hhbmdlZC4KKyAqLworc3RhdGljIE5v ZGUgKgordHJhbnNmb3JtRm9yUG9ydGlvbk9mQm91bmQoTm9kZSAqbiwgYm9vbCBpc0xvd2VyQm91 bmQpCit7CisJaWYgKG5vZGVUYWcobikgPT0gVF9Db2x1bW5SZWYpCisJeworCQlDb2x1bW5SZWYg ICpjcmVmID0gKENvbHVtblJlZiAqKSBuOworCQljaGFyCSAgICpjbmFtZSA9ICIiOworCisJCWlm IChsaXN0X2xlbmd0aChjcmVmLT5maWVsZHMpID09IDEgJiYKKwkJCUlzQShsaW5pdGlhbChjcmVm LT5maWVsZHMpLCBTdHJpbmcpKQorCQkJY25hbWUgPSBzdHJWYWwobGluaXRpYWwoY3JlZi0+Zmll bGRzKSk7CisKKwkJaWYgKHN0cmNtcCgibWludmFsdWUiLCBjbmFtZSkgPT0gMCkKKwkJeworCQkJ aWYgKCFpc0xvd2VyQm91bmQpCisJCQkJZXJlcG9ydChFUlJPUiwgKGVycm1zZygiTUlOVkFMVUUg Y2FuIG9ubHkgYmUgdXNlZCBmb3IgdGhlIGxvd2VyIGJvdW5kIikpKTsKKwkJfQorCQllbHNlIGlm IChzdHJjbXAoIm1heHZhbHVlIiwgY25hbWUpID09IDApCisJCXsKKwkJCWlmIChpc0xvd2VyQm91 bmQpCisJCQkJZXJlcG9ydChFUlJPUiwgKGVycm1zZygiTUFYVkFMVUUgY2FuIG9ubHkgYmUgdXNl ZCBmb3IgdGhlIHVwcGVyIGJvdW5kIikpKTsKKwkJfQorCQllbHNlCisJCQlyZXR1cm4gbjsKKwor CQlBX0NvbnN0ICAgICpuMiA9IG1ha2VOb2RlKEFfQ29uc3QpOworCQluMi0+aXNudWxsID0gdHJ1 ZTsKKwkJbjItPmxvY2F0aW9uID0gKChDb2x1bW5SZWYgKiluKS0+bG9jYXRpb247CisKKwkJcmV0 dXJuIChOb2RlICopbjI7CisJfQorCWVsc2UKKwkJcmV0dXJuIG47Cit9CisKKy8qCisgKiB0cmFu c2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1c2UKKyAqCSAgdHJhbnNmb3JtcyBhIEZvclBvcnRpb25PZkNs YXVzZSBpbiBhbiBVUERBVEUvREVMRVRFIHN0YXRlbWVudAorICovCitzdGF0aWMgRm9yUG9ydGlv bk9mRXhwciAqCit0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRl LAorCQkJCQkJCWludCBydGluZGV4LAorCQkJCQkJCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9y dGlvbk9mKQoreworCVJlbGF0aW9uIHRhcmdldHJlbCA9IHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRp b247CisJUmFuZ2VUYmxFbnRyeSAqdGFyZ2V0X3J0ZSA9IHBzdGF0ZS0+cF90YXJnZXRfbnNpdGVt LT5wX3J0ZTsKKwljaGFyICpyYW5nZV9uYW1lID0gZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lOwor CWNoYXIgKnJhbmdlX3R5cGVfbmFtZTsKKwlpbnQgcmFuZ2VfYXR0bm8gPSBJbnZhbGlkT2lkOwor CWludCBzdGFydF9hdHRubyA9IEludmFsaWRPaWQ7CisJaW50IGVuZF9hdHRubyA9IEludmFsaWRP aWQ7CisJY2hhciAqc3RhcnRjb2xuYW1lID0gTlVMTDsKKwljaGFyICplbmRjb2xuYW1lID0gTlVM TDsKKwlGb3JQb3J0aW9uT2ZFeHByICpyZXN1bHQ7CisJTGlzdCAqdGFyZ2V0TGlzdDsKKwlPaWQg cGtvaWQ7CisJSGVhcFR1cGxlIGluZGV4VHVwbGU7CisJRm9ybV9wZ19pbmRleCBwazsKKwlOb2Rl ICp0YXJnZXRfc3RhcnQsICp0YXJnZXRfZW5kOworCUZ1bmNDYWxsICpmYzsKKworCXJlc3VsdCA9 IG1ha2VOb2RlKEZvclBvcnRpb25PZkV4cHIpOworCXJlc3VsdC0+cmFuZ2UgPSBOVUxMOworCisJ LyogTWFrZSBzdXJlIHRoZSB0YWJsZSBoYXMgYSBwcmltYXJ5IGtleSAqLworCXBrb2lkID0gUmVs YXRpb25HZXRQcmltYXJ5S2V5SW5kZXgodGFyZ2V0cmVsKTsKKwlpZiAocGtvaWQgPT0gSW52YWxp ZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfQ09M VU1OX1JFRkVSRU5DRSksCisJCQkJIGVycm1zZygicmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGhh dmUgYSB0ZW1wb3JhbCBwcmltYXJ5IGtleSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9uKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbikpKTsKKworCS8qIE1ha2Ug c3VyZSB0aGUgcHJpbWFyeSBrZXkgaXMgYSB0ZW1wb3JhbCBrZXkgKi8KKwkvLyBUT0RPOiBuZWVk IGEgbG9jayBoZXJlPworCWluZGV4VHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoSU5ERVhSRUxJRCwg T2JqZWN0SWRHZXREYXR1bShwa29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChpbmRleFR1 cGxlKSkJLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIGluZGV4ICV1IiwgcGtvaWQpOworCXBrID0gKEZvcm1fcGdfaW5kZXgpIEdF VFNUUlVDVChpbmRleFR1cGxlKTsKKworCS8qCisJICogT25seSB0ZW1wb3JhbCBwa2V5IGluZGV4 ZXMgaGF2ZSBib3RoIGlzcHJpbWFyeSBhbmQgaXNleGNsdXNpb24uCisJICogQ2hlY2tpbmcgdGhv c2Ugc2F2ZXMgdXMgZnJvbSBzY2FubmluZyBwZ19jb25zdHJhaW50CisJICogbGlrZSBpbiBSZWxh dGlvbkdldEV4Y2x1c2lvbkluZm8uCisJICovCisJaWYgKCEocGstPmluZGlzcHJpbWFyeSAmJiBw ay0+aW5kaXNleGNsdXNpb24pKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwKKwkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVz XCIgZG9lcyBub3QgaGF2ZSBhIHRlbXBvcmFsIHByaW1hcnkga2V5IiwKKwkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb24pKSwKKwkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKSkp OworCisJLyoKKwkgKiBGaXJzdCBsb29rIGZvciBhIHJhbmdlIGNvbHVtbiwgdGhlbiBsb29rIGZv ciBhIHBlcmlvZC4KKwkgKi8KKwlyYW5nZV9hdHRubyA9IGF0dG5hbWVBdHROdW0odGFyZ2V0cmVs LCByYW5nZV9uYW1lLCBmYWxzZSk7CisJaWYgKHJhbmdlX2F0dG5vICE9IEludmFsaWRBdHRyTnVt YmVyKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFyZ2V0 cmVsLT5yZF9hdHQsIHJhbmdlX2F0dG5vIC0gMSk7CisJCVZhciAqdjsKKworCQkvLyBUT0RPOiBj aGVjayBhdHRyLT5hdHRpc2Ryb3BwZWQgPworCisJCS8qIE1ha2Ugc3VyZSBpdCdzIGEgcmFuZ2Ug Y29sdW1uICovCisJCWlmICghdHlwZV9pc19yYW5nZShhdHRyLT5hdHR0eXBpZCkpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfQ09MVU1OX1JFRkVSRU5D RSksCisJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGlzIG5v dCBhIHJhbmdlIHR5cGUiLAorCQkJCQkJCXJhbmdlX25hbWUsCisJCQkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocHN0YXRlLT5wX3RhcmdldF9yZWxhdGlvbikpLAorCQkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKSkpOwor CisJCS8qIE1ha2Ugc3VyZSB0aGUgcmFuZ2UgYXR0cmlidXRlIGlzIHRoZSBsYXN0IHBhcnQgb2Yg dGhlIHBrZXkuICovCisJCWlmIChyYW5nZV9hdHRubyAhPSBway0+aW5ka2V5LnZhbHVlc1tway0+ aW5kbmtleWF0dHMgLSAxXSkKKwkJeworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAorCQkJCQkgZXJybXNnKCJjb2x1bW4g XCIlc1wiIGlzIG5vdCB0aGUgdGVtcG9yYWwgcGFydCBvZiB0aGUgcHJpbWFyeSBrZXkgZm9yIHJl bGF0aW9uIFwiJXNcIiIsCisJCQkJCQkJcmFuZ2VfbmFtZSwKKwkJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9uKSksCisJCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pKSk7CisJ CX0KKworCQl2ID0gbWFrZVZhcigKKwkJCQlydGluZGV4LAorCQkJCXJhbmdlX2F0dG5vLAorCQkJ CWF0dHItPmF0dHR5cGlkLAorCQkJCWF0dHItPmF0dHR5cG1vZCwKKwkJCQlhdHRyLT5hdHRjb2xs YXRpb24sCisJCQkJMCk7CisJCXYtPmxvY2F0aW9uID0gZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1l X2xvY2F0aW9uOworCQlyZXN1bHQtPnJhbmdlID0gKEV4cHIgKikgdjsKKwkJcmVzdWx0LT5yYW5n ZVR5cGUgPSBhdHRyLT5hdHR0eXBpZDsKKwkJcmFuZ2VfdHlwZV9uYW1lID0gZ2V0X3R5cG5hbWUo YXR0ci0+YXR0dHlwaWQpOworCisJfSBlbHNlIHsKKwkJT2lkIHJlbGlkID0gUmVsYXRpb25HZXRS ZWxpZCh0YXJnZXRyZWwpOworCQlIZWFwVHVwbGUgcGVyVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIo UEVSSU9ETkFNRSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQlQb2ludGVyR2V0 RGF0dW0ocmFuZ2VfbmFtZSkpOworCQlpZiAoSGVhcFR1cGxlSXNWYWxpZChwZXJUdXBsZSkpCisJ CXsKKwkJCUZvcm1fcGdfcGVyaW9kIHBlciA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHBl clR1cGxlKTsKKwkJCUZvcm1fcGdfYXR0cmlidXRlIHN0YXJ0YXR0ciwgZW5kYXR0cjsKKwkJCWJv b2wgcGtleUluY2x1ZGVzUGVyaW9kID0gZmFsc2U7CisJCQlWYXIgKnN0YXJ0dmFyLCAqZW5kdmFy OworCQkJRnVuY0NhbGwgKnBlcmlvZFJhbmdlOworCisJCQlUeXBlIHJuZ3R5cGUgPSB0eXBlaWRU eXBlKHBlci0+cGVycm5ndHlwZSk7CisJCQlyYW5nZV90eXBlX25hbWUgPSB0eXBlVHlwZU5hbWUo cm5ndHlwZSk7CisJCQlSZWxlYXNlU3lzQ2FjaGUocm5ndHlwZSk7CisJCQlzdGFydF9hdHRubyA9 IHBlci0+cGVyc3RhcnQ7CisJCQllbmRfYXR0bm8gPSBwZXItPnBlcmVuZDsKKworCQkJc3RhcnRh dHRyID0gVHVwbGVEZXNjQXR0cih0YXJnZXRyZWwtPnJkX2F0dCwgc3RhcnRfYXR0bm8gLSAxKTsK KwkJCWVuZGF0dHIgPSBUdXBsZURlc2NBdHRyKHRhcmdldHJlbC0+cmRfYXR0LCBlbmRfYXR0bm8g LSAxKTsKKworCQkJc3RhcnRjb2xuYW1lID0gTmFtZVN0cihzdGFydGF0dHItPmF0dG5hbWUpOwor CQkJZW5kY29sbmFtZSA9IE5hbWVTdHIoZW5kYXR0ci0+YXR0bmFtZSk7CisJCQlyZXN1bHQtPnBl cmlvZF9zdGFydF9uYW1lID0gc3RhcnRjb2xuYW1lOworCQkJcmVzdWx0LT5wZXJpb2RfZW5kX25h bWUgPSBlbmRjb2xuYW1lOworCisJCQkvKiBNYWtlIHN1cmUgdGhlIHBlcmlvZCBpcyB0aGUgbGFz dCBwYXJ0IG9mIHRoZSBwa2V5LiAqLworCQkJaWYgKHBrLT5pbmRrZXkudmFsdWVzW3BrLT5pbmRu a2V5YXR0cyAtIDFdID09IEludmFsaWRPaWQpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBUaGUgUEsg ZW5kcyB3aXRoIGFuIGV4cHJlc3Npb24uIE1ha2Ugc3VyZSBpdCdzIGZvciBvdXIgcGVyaW9kLgor CQkJCSAqIFRoZXJlIHNob3VsZCBiZSBvbmx5IG9uZSBlbnRyeSBpbiBpbmRleHBycywgYW5kIGl0 IHNob3VsZCBiZSBvdXJzLgorCQkJCSAqLworCQkJCXBrZXlJbmNsdWRlc1BlcmlvZCA9IHBrLT5p bmRwZXJpb2QgPT0gcGVyLT5vaWQ7CisJCQl9CisKKwkJCWlmICghcGtleUluY2x1ZGVzUGVyaW9k KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfQ09M VU1OX1JFRkVSRU5DRSksCisJCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIGlzIG5vdCB0aGUg dGVtcG9yYWwgcGFydCBvZiB0aGUgcHJpbWFyeSBrZXkgZm9yIHJlbGF0aW9uIFwiJXNcIiIsCisJ CQkJCQkJCXJhbmdlX25hbWUsCisJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBzdGF0 ZS0+cF90YXJnZXRfcmVsYXRpb24pKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pKSk7CisKKwkJCXN0YXJ0dmFyID0g bWFrZVZhcigKKwkJCQkJcnRpbmRleCwKKwkJCQkJcGVyLT5wZXJzdGFydCwKKwkJCQkJc3RhcnRh dHRyLT5hdHR0eXBpZCwKKwkJCQkJc3RhcnRhdHRyLT5hdHR0eXBtb2QsCisJCQkJCXN0YXJ0YXR0 ci0+YXR0Y29sbGF0aW9uLAorCQkJCQkwKTsKKwkJCXN0YXJ0dmFyLT5sb2NhdGlvbiA9IGZvclBv cnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbjsKKworCQkJZW5kdmFyID0gbWFrZVZhcigKKwkJ CQkJcnRpbmRleCwKKwkJCQkJcGVyLT5wZXJlbmQsCisJCQkJCWVuZGF0dHItPmF0dHR5cGlkLAor CQkJCQllbmRhdHRyLT5hdHR0eXBtb2QsCisJCQkJCWVuZGF0dHItPmF0dGNvbGxhdGlvbiwKKwkJ CQkJMCk7CisJCQllbmR2YXItPmxvY2F0aW9uID0gZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xv Y2F0aW9uOworCisJCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwbGUpOworCisJCQlwZXJpb2RSYW5n ZSA9IG1ha2VGdW5jQ2FsbChTeXN0ZW1GdW5jTmFtZShyYW5nZV90eXBlX25hbWUpLAorCQkJCQkJ CQlsaXN0X21ha2UyKHN0YXJ0dmFyLCBlbmR2YXIpLAorCQkJCQkJCQlDT0VSQ0VfRVhQTElDSVRf Q0FMTCwKKwkJCQkJCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKTsKKwkJCXJl c3VsdC0+cmFuZ2UgPSAoRXhwciAqKSBwZXJpb2RSYW5nZTsKKwkJCXJlc3VsdC0+cmFuZ2VUeXBl ID0gdHlwZW5hbWVUeXBlSWQocHN0YXRlLCB0eXBlU3RyaW5nVG9UeXBlTmFtZShyYW5nZV90eXBl X25hbWUpKTsKKwkJfQorCX0KKwlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBsZSk7CisKKwlpZiAo cmVzdWx0LT5yYW5nZSA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29sdW1uIG9yIHBlcmlvZCBc IiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXJhbmdlX25h bWUsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0 aW9uKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGZvclBvcnRpb25PZi0+cmFu Z2VfbmFtZV9sb2NhdGlvbikpKTsKKworCS8qCisJICogQnVpbGQgYSByYW5nZSBmcm9tIHRoZSBG Uk9NIC4uLiBUTyAuLi4uIGJvdW5kcy4KKwkgKiBUaGlzIHNob3VsZCBnaXZlIGEgY29uc3RhbnQg cmVzdWx0LCBzbyB3ZSBhY2NlcHQgZnVuY3Rpb25zIGxpa2UgTk9XKCkKKwkgKiBidXQgbm90IGNv bHVtbiByZWZlcmVuY2VzLCBzdWJxdWVyaWVzLCBldGMuCisJICoKKwkgKiBJdCBhbHNvIHBlcm1p dHMgTUlOVkFMVUUgYW5kIE1BWFZBTFVFIGxpa2UgZGVjbGFyYXRpdmUgcGFydGl0aW9ucy4KKwkg Ki8KKwl0YXJnZXRfc3RhcnQgPSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZCb3VuZChmb3JQb3J0aW9u T2YtPnRhcmdldF9zdGFydCwgdHJ1ZSk7CisJdGFyZ2V0X2VuZCAgID0gdHJhbnNmb3JtRm9yUG9y dGlvbk9mQm91bmQoZm9yUG9ydGlvbk9mLT50YXJnZXRfZW5kLCBmYWxzZSk7CisJZmMgPSBtYWtl RnVuY0NhbGwoU3lzdGVtRnVuY05hbWUocmFuZ2VfdHlwZV9uYW1lKSwKKwkJCQkJCQkJbGlzdF9t YWtlMih0YXJnZXRfc3RhcnQsIHRhcmdldF9lbmQpLAorCQkJCQkJCQlDT0VSQ0VfRVhQTElDSVRf Q0FMTCwKKwkJCQkJCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKTsKKwlyZXN1 bHQtPnRhcmdldFJhbmdlID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIChOb2RlICopIGZjLCBFWFBS X0tJTkRfVVBEQVRFX1BPUlRJT04pOworCisJLyogb3ZlcmxhcHNFeHByIGlzIHNvbWV0aGluZyB3 ZSBjYW4gYWRkIHRvIHRoZSB3aGVyZUNsYXVzZSAqLworCXJlc3VsdC0+b3ZlcmxhcHNFeHByID0g KE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIiYmIiwKKwkJCS8vIFRPRE86IE1h eWJlIG5lZWQgYSBjb3B5IGhlcmU/OgorCQkJKE5vZGUgKikgcmVzdWx0LT5yYW5nZSwgKE5vZGUg KikgZmMsCisJCQlmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pOworCisJLyoKKwkg KiBOb3cgbWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgc3RhcnQvZW5kIHRpbWUgb2YgdGhlIHJlY29y ZC4KKwkgKiBGb3IgYSByYW5nZSBjb2wgKHIpIHRoaXMgaXMgYHIgPSByICogdGFyZ2V0UmFuZ2Vg LgorCSAqIEZvciBhIFBFUklPRCB3aXRoIGNvbHMgKHMsIGUpIHRoaXMgaXMgYHMgPSBsb3dlcih0 c3JhbmdlKHMsIGUpICogdGFyZ2V0UmFuZ2UpYAorCSAqIGFuZCBgZSA9IHVwcGVyKHRzcmFuZ2Uo cywgZSkgKiB0YXJnZXRSYW5nZWAgKG9mIGNvdXJzZSBub3QgbmVjZXNzYXJpbHkgd2l0aAorCSAq IHRzcmFuZ2UsIGJ1dCB3aXRoIHdoYXRldmVyIHJhbmdlIHR5cGUgaXMgdXNlZCB0aGVyZSkpLgor CSAqCisJICogV2UgYWxzbyBjb21wdXRlIHRoZSBwb3NzaWJsZSBsZWZ0LWJlaGluZCBiaXRzIGF0 IHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSB0dXBsZSwKKwkgKiBzbyB0aGF0IHdlIGNhbiBJTlNF UlQgdGhlbSBpZiBuZWNlc3NhcnkuCisJICovCisJLy8gVE9ETzogT25seSBkbyB0aGlzIGZvciBV UERBVEUsIG5vdCBERUxFVEU6CisJdGFyZ2V0TGlzdCA9IE5JTDsKKwlpZiAocmFuZ2VfYXR0bm8g IT0gSW52YWxpZEF0dHJOdW1iZXIpCisJeworCQlFeHByICpyYW5nZVNldEV4cHIgPSAoRXhwciAq KSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCAiKiIsCisJCQkJLy8gVE9ETzogTWF5YmUgbmVl ZCBhIGNvcHkgaGVyZT86CisJCQkJKE5vZGUgKikgcmVzdWx0LT5yYW5nZSwgKE5vZGUgKikgZmMs CisJCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKTsKKwkJVGFyZ2V0RW50cnkg KnRsZTsKKworCQlyYW5nZVNldEV4cHIgPSAoRXhwciAqKSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwg KE5vZGUgKikgcmFuZ2VTZXRFeHByLCBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT04pOworCQl0bGUg PSBtYWtlVGFyZ2V0RW50cnkocmFuZ2VTZXRFeHByLAorCQkJCQkJCSAgcmFuZ2VfYXR0bm8sCisJ CQkJCQkJICByYW5nZV9uYW1lLAorCQkJCQkJCSAgZmFsc2UpOworCisJCXRhcmdldExpc3QgPSBs YXBwZW5kKHRhcmdldExpc3QsIHRsZSk7CisKKwkJLyogTWFyayB0aGUgcmFuZ2UgY29sdW1uIGFz IHJlcXVpcmluZyB1cGRhdGUgcGVybWlzc2lvbnMgKi8KKwkJdGFyZ2V0X3J0ZS0+dXBkYXRlZENv bHMgPSBibXNfYWRkX21lbWJlcih0YXJnZXRfcnRlLT51cGRhdGVkQ29scywKKwkJCQkJCQkJCQkJ CSByYW5nZV9hdHRubyAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCisJ fSBlbHNlIHsKKwkJRXhwciAqaW50ZXJzZWN0RXhwcjsKKwkJRXhwciAqYm91bmRTZXRFeHByOwor CQlUYXJnZXRFbnRyeSAqdGxlOworCisJCS8qIFNldCB1cCB0YXJnZXRMaXN0IGZvciB0aGUgUEVS SU9EIHN0YXJ0IGNvbHVtbiAqLworCisJCWludGVyc2VjdEV4cHIgPSAoRXhwciAqKSBtYWtlU2lt cGxlQV9FeHByKEFFWFBSX09QLCAiKiIsCisJCQkJLy8gVE9ETzogY29weT8KKwkJCQkoTm9kZSAq KSByZXN1bHQtPnJhbmdlLCAoTm9kZSAqKSBmYywKKwkJCQlmb3JQb3J0aW9uT2YtPnJhbmdlX25h bWVfbG9jYXRpb24pOworCisJCWJvdW5kU2V0RXhwciA9IChFeHByICopIG1ha2VGdW5jQ2FsbChT eXN0ZW1GdW5jTmFtZSgibG93ZXIiKSwKKwkJCQkJCQkJbGlzdF9tYWtlMShpbnRlcnNlY3RFeHBy KSwKKwkJCQkJCQkJQ09FUkNFX0VYUExJQ0lUX0NBTEwsCisJCQkJCQkJCWZvclBvcnRpb25PZi0+ cmFuZ2VfbmFtZV9sb2NhdGlvbik7CisJCWJvdW5kU2V0RXhwciA9IChFeHByICopIHRyYW5zZm9y bUV4cHIocHN0YXRlLCAoTm9kZSAqKSBib3VuZFNldEV4cHIsIEVYUFJfS0lORF9VUERBVEVfUE9S VElPTik7CisKKwkJdGxlID0gbWFrZVRhcmdldEVudHJ5KGJvdW5kU2V0RXhwciwKKwkJCQkJCQkg IHN0YXJ0X2F0dG5vLAorCQkJCQkJCSAgc3RhcnRjb2xuYW1lLAorCQkJCQkJCSAgZmFsc2UpOwor CisJCXRhcmdldExpc3QgPSBsYXBwZW5kKHRhcmdldExpc3QsIHRsZSk7CisKKwkJLyogU2V0IHVw IHRhcmdldExpc3QgZm9yIHRoZSBQRVJJT0QgZW5kIGNvbHVtbiAqLworCisJCWJvdW5kU2V0RXhw ciA9IChFeHByICopIG1ha2VGdW5jQ2FsbChTeXN0ZW1GdW5jTmFtZSgidXBwZXIiKSwKKwkJCQkJ CQkJbGlzdF9tYWtlMShpbnRlcnNlY3RFeHByKSwKKwkJCQkJCQkJQ09FUkNFX0VYUExJQ0lUX0NB TEwsCisJCQkJCQkJCWZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbik7CisJCWJvdW5k U2V0RXhwciA9IChFeHByICopIHRyYW5zZm9ybUV4cHIocHN0YXRlLCAoTm9kZSAqKSBib3VuZFNl dEV4cHIsIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTik7CisKKwkJdGxlID0gbWFrZVRhcmdldEVu dHJ5KGJvdW5kU2V0RXhwciwKKwkJCQkJCQkgIGVuZF9hdHRubywKKwkJCQkJCQkgIGVuZGNvbG5h bWUsCisJCQkJCQkJICBmYWxzZSk7CisKKwkJdGFyZ2V0TGlzdCA9IGxhcHBlbmQodGFyZ2V0TGlz dCwgdGxlKTsKKworCQkvKiBNYXJrIHRoZSBib3VuZCBjb2x1bW5zIGFzIHJlcXVpcmluZyB1cGRh dGUgcGVybWlzc2lvbnMgKi8KKwkJdGFyZ2V0X3J0ZS0+dXBkYXRlZENvbHMgPSBibXNfYWRkX21l bWJlcih0YXJnZXRfcnRlLT51cGRhdGVkQ29scywKKwkJCQkJCQkJCQkJCSBzdGFydF9hdHRubyAt IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQl0YXJnZXRfcnRlLT51cGRh dGVkQ29scyA9IGJtc19hZGRfbWVtYmVyKHRhcmdldF9ydGUtPnVwZGF0ZWRDb2xzLAorCQkJCQkJ CQkJCQkJIGVuZF9hdHRubyAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOwor CX0KKworCXJlc3VsdC0+cmFuZ2VTZXQgPSB0YXJnZXRMaXN0OworCXJlc3VsdC0+cmFuZ2VfbmFt ZSA9IHJhbmdlX25hbWU7CisJcmVzdWx0LT5yYW5nZV9hdHRubyA9IHJhbmdlX2F0dG5vOworCXJl c3VsdC0+c3RhcnRfYXR0bm8gPSBzdGFydF9hdHRubzsKKwlyZXN1bHQtPmVuZF9hdHRubyA9IGVu ZF9hdHRubzsKKworCXJldHVybiByZXN1bHQ7Cit9CiAKIC8qCiAgKiBCdWlsZE9uQ29uZmxpY3RF eGNsdWRlZFRhcmdldGxpc3QKQEAgLTIzMjAsNiArMjY3NCw3IEBAIHRyYW5zZm9ybVVwZGF0ZVN0 bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10KQogewogCVF1ZXJ5CSAgICpx cnkgPSBtYWtlTm9kZShRdWVyeSk7CiAJUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW07CisJTm9k ZQkgICAqd2hlcmVDbGF1c2U7CiAJTm9kZQkgICAqcXVhbDsKIAogCXFyeS0+Y29tbWFuZFR5cGUg PSBDTURfVVBEQVRFOwpAQCAtMjMzNyw2ICsyNjkyLDEwIEBAIHRyYW5zZm9ybVVwZGF0ZVN0bXQo UGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10KQogCQkJCQkJCQkJCSBzdG10LT5y ZWxhdGlvbi0+aW5oLAogCQkJCQkJCQkJCSB0cnVlLAogCQkJCQkJCQkJCSBBQ0xfVVBEQVRFKTsK KworCWlmIChzdG10LT5mb3JQb3J0aW9uT2YpCisJCXFyeS0+Zm9yUG9ydGlvbk9mID0gdHJhbnNm b3JtRm9yUG9ydGlvbk9mQ2xhdXNlKHBzdGF0ZSwgcXJ5LT5yZXN1bHRSZWxhdGlvbiwgc3RtdC0+ Zm9yUG9ydGlvbk9mKTsKKwogCW5zaXRlbSA9IHBzdGF0ZS0+cF90YXJnZXRfbnNpdGVtOwogCiAJ Lyogc3VicXVlcmllcyBpbiBGUk9NIGNhbm5vdCBhY2Nlc3MgdGhlIHJlc3VsdCByZWxhdGlvbiAq LwpAQCAtMjM1Myw3ICsyNzEyLDE2IEBAIHRyYW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBVcGRhdGVTdG10ICpzdG10KQogCW5zaXRlbS0+cF9sYXRlcmFsX29ubHkgPSBmYWxz ZTsKIAluc2l0ZW0tPnBfbGF0ZXJhbF9vayA9IHRydWU7CiAKLQlxdWFsID0gdHJhbnNmb3JtV2hl cmVDbGF1c2UocHN0YXRlLCBzdG10LT53aGVyZUNsYXVzZSwKKwlpZiAoc3RtdC0+Zm9yUG9ydGlv bk9mKQorCXsKKwkJaWYgKHN0bXQtPndoZXJlQ2xhdXNlKQorCQkJd2hlcmVDbGF1c2UgPSAoTm9k ZSAqKSBtYWtlQm9vbEV4cHIoQU5EX0VYUFIsIGxpc3RfbWFrZTIocXJ5LT5mb3JQb3J0aW9uT2Yt Pm92ZXJsYXBzRXhwciwgc3RtdC0+d2hlcmVDbGF1c2UpLCAtMSk7CisJCWVsc2UKKwkJCXdoZXJl Q2xhdXNlID0gcXJ5LT5mb3JQb3J0aW9uT2YtPm92ZXJsYXBzRXhwcjsKKwl9CisJZWxzZQorCQl3 aGVyZUNsYXVzZSA9IHN0bXQtPndoZXJlQ2xhdXNlOworCXF1YWwgPSB0cmFuc2Zvcm1XaGVyZUNs YXVzZShwc3RhdGUsIHdoZXJlQ2xhdXNlLAogCQkJCQkJCQlFWFBSX0tJTkRfV0hFUkUsICJXSEVS RSIpOwogCiAJcXJ5LT5yZXR1cm5pbmdMaXN0ID0gdHJhbnNmb3JtUmV0dXJuaW5nTGlzdChwc3Rh dGUsIHN0bXQtPnJldHVybmluZ0xpc3QpOwpAQCAtMjM2Miw3ICsyNzMwLDcgQEAgdHJhbnNmb3Jt VXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAJICogTm93 IHdlIGFyZSBkb25lIHdpdGggU0VMRUNULWxpa2UgcHJvY2Vzc2luZywgYW5kIGNhbiBnZXQgb24g d2l0aAogCSAqIHRyYW5zZm9ybWluZyB0aGUgdGFyZ2V0IGxpc3QgdG8gbWF0Y2ggdGhlIFVQREFU RSB0YXJnZXQgY29sdW1ucy4KIAkgKi8KLQlxcnktPnRhcmdldExpc3QgPSB0cmFuc2Zvcm1VcGRh dGVUYXJnZXRMaXN0KHBzdGF0ZSwgc3RtdC0+dGFyZ2V0TGlzdCk7CisJcXJ5LT50YXJnZXRMaXN0 ID0gdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsIHN0bXQtPnRhcmdldExpc3QsIHFy eS0+Zm9yUG9ydGlvbk9mKTsKIAogCXFyeS0+cnRhYmxlID0gcHN0YXRlLT5wX3J0YWJsZTsKIAlx cnktPmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+cF9qb2lubGlzdCwgcXVhbCk7CkBA IC0yMzgwLDcgKzI3NDgsNyBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgVXBkYXRlU3RtdCAqc3RtdCkKICAqCWhhbmRsZSBTRVQgY2xhdXNlIGluIFVQREFURS9JTlNF UlQgLi4uIE9OIENPTkZMSUNUIFVQREFURQogICovCiBzdGF0aWMgTGlzdCAqCi10cmFuc2Zvcm1V cGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3JpZ1RsaXN0KQordHJh bnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlz dCwgRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mKQogewogCUxpc3QJICAgKnRsaXN0ID0g TklMOwogCVJhbmdlVGJsRW50cnkgKnRhcmdldF9ydGU7CkBAIC0yNDMwLDYgKzI3OTgsOSBAQCB0 cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3JpZ1Rs aXN0KQogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBzdGF0ZS0+cF90YXJnZXRfcmVs YXRpb24pKSwKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG9yaWdUYXJnZXQtPmxv Y2F0aW9uKSkpOwogCisJCS8qIFRPRE86IE1ha2Ugc3VyZSB1c2VyIGlzbid0IHRyeWluZyB0byBT RVQgdGhlIHJhbmdlIGF0dHJpYnV0ZSBkaXJlY3RseSAtLS0gVE9ETyBvciBwZXJtaXQgaXQ/PyAq LworCisKIAkJdXBkYXRlVGFyZ2V0TGlzdEVudHJ5KHBzdGF0ZSwgdGxlLCBvcmlnVGFyZ2V0LT5u YW1lLAogCQkJCQkJCSAgYXR0cm5vLAogCQkJCQkJCSAgb3JpZ1RhcmdldC0+aW5kaXJlY3Rpb24s CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQppbmRleCAwNmQwZDRjZWViLi42Nzg3ODBmMjhhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAg LTI0Myw2ICsyNDMsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hh ciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVJhbmdlVmFyCQkJKnJh bmdlOwogCUludG9DbGF1c2UJCQkqaW50bzsKIAlXaXRoQ2xhdXNlCQkJKndpdGg7CisJRm9yUG9y dGlvbk9mQ2xhdXNlCSpmb3Jwb3J0aW9ub2Y7CiAJSW5mZXJDbGF1c2UJCQkqaW5mZXI7CiAJT25D b25mbGljdENsYXVzZQkqb25jb25mbGljdDsKIAlBX0luZGljZXMJCQkqYWluZDsKQEAgLTUxOSw2 ICs1MjAsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPGpleHByPglqb2luZWRf dGFibGUKICV0eXBlIDxyYW5nZT4JcmVsYXRpb25fZXhwcgogJXR5cGUgPHJhbmdlPglyZWxhdGlv bl9leHByX29wdF9hbGlhcworJXR5cGUgPGZvcnBvcnRpb25vZj4gZm9yX3BvcnRpb25fb2ZfY2xh dXNlCiAldHlwZSA8bm9kZT4JdGFibGVzYW1wbGVfY2xhdXNlIG9wdF9yZXBlYXRhYmxlX2NsYXVz ZQogJXR5cGUgPHRhcmdldD4JdGFyZ2V0X2VsIHNldF90YXJnZXQgaW5zZXJ0X2NvbHVtbl9pdGVt CiAKQEAgLTY5Myw3ICs2OTUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCU9WRVIgT1ZF UkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVSCiAKIAlQQVJBTExFTCBQQVJTRVIg UEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09SRCBQRVJJT0QgUExBQ0lORyBQTEFOUyBQ T0xJQ1kKLQlQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJF UEFSRUQgUFJJTUFSWQorCVBPUlRJT04gUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVT RVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVS QUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgogCiAJUVVPVEUKQEAg LTc2Niw2ICs3NjgsMTYgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNo YXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICVub25hc3NvYwknPCcg Jz4nICc9JyBMRVNTX0VRVUFMUyBHUkVBVEVSX0VRVUFMUyBOT1RfRVFVQUxTCiAlbm9uYXNzb2MJ QkVUV0VFTiBJTl9QIExJS0UgSUxJS0UgU0lNSUxBUiBOT1RfTEEKICVub25hc3NvYwlFU0NBUEUJ CQkvKiBFU0NBUEUgbXVzdCBiZSBqdXN0IGFib3ZlIExJS0UvSUxJS0UvU0lNSUxBUiAqLworLyoK KyAqIFdlIG5lZWQgdG8gaGFuZGxlIHRoaXMgc2hpZnQvcmVkdWNlIGNvbmZsaWN0OgorICogRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBJTlRFUlZBTCBZRUFSIFRPIE1PTlRIIFRPIGZvby4K KyAqIFRoaXMgaXMgYmFzaWNhbGx5IHRoZSBjbGFzc2ljICJkYW5nbGluZyBlbHNlIiBwcm9ibGVt LCBhbmQgd2Ugd2FudCBhCisgKiBzaW1pbGFyIHJlc29sdXRpb246IHRyZWF0IHRoZSBUTyBhcyBw YXJ0IG9mIHRoZSBJTlRFUlZBTCwgbm90IGFzIHBhcnQgb2YKKyAqIHRoZSBGUk9NIC4uLiBUTyAu Li4uIFVzZXJzIGNhbiBhZGQgcGFyZW50aGVzZXMgaWYgdGhhdCdzIGEgcHJvYmxlbS4KKyAqIFRP IGp1c3QgbmVlZHMgdG8gYmUgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiBZRUFSX1AgZXRjLgorICov Cislbm9uYXNzb2MgWUVBUl9QIE1PTlRIX1AgREFZX1AgSE9VUl9QIE1JTlVURV9QCislbm9uYXNz b2MgVE8KIC8qCiAgKiBUbyBzdXBwb3J0IHRhcmdldF9lbCB3aXRob3V0IEFTLCBpdCB1c2VkIHRv IGJlIG5lY2Vzc2FyeSB0byBhc3NpZ24gSURFTlQgYW4KICAqIGV4cGxpY2l0IHByZWNlZGVuY2Ug anVzdCBsZXNzIHRoYW4gT3AuICBXaGlsZSB0aGF0J3Mgbm90IHJlYWxseSBuZWNlc3NhcnkKQEAg LTExMTgzLDEzICsxMTE5NSwxNSBAQCByZXR1cm5pbmdfY2xhdXNlOgogICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwogCiBEZWxldGVTdG10OiBvcHRfd2l0aF9jbGF1c2UgREVMRVRFX1AgRlJPTSByZWxh dGlvbl9leHByX29wdF9hbGlhcworCQkJZm9yX3BvcnRpb25fb2ZfY2xhdXNlCiAJCQl1c2luZ19j bGF1c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1c2UgcmV0dXJuaW5nX2NsYXVzZQogCQkJCXsKIAkJ CQkJRGVsZXRlU3RtdCAqbiA9IG1ha2VOb2RlKERlbGV0ZVN0bXQpOwogCQkJCQluLT5yZWxhdGlv biA9ICQ0OwotCQkJCQluLT51c2luZ0NsYXVzZSA9ICQ1OwotCQkJCQluLT53aGVyZUNsYXVzZSA9 ICQ2OwotCQkJCQluLT5yZXR1cm5pbmdMaXN0ID0gJDc7CisJCQkJCW4tPmZvclBvcnRpb25PZiA9 ICQ1OworCQkJCQluLT51c2luZ0NsYXVzZSA9ICQ2OworCQkJCQluLT53aGVyZUNsYXVzZSA9ICQ3 OworCQkJCQluLT5yZXR1cm5pbmdMaXN0ID0gJDg7CiAJCQkJCW4tPndpdGhDbGF1c2UgPSAkMTsK IAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQpAQCAtMTEyNTIsNiArMTEyNjYsNyBAQCBvcHRf bm93YWl0X29yX3NraXA6CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIFVwZGF0ZVN0bXQ6IG9w dF93aXRoX2NsYXVzZSBVUERBVEUgcmVsYXRpb25fZXhwcl9vcHRfYWxpYXMKKwkJCWZvcl9wb3J0 aW9uX29mX2NsYXVzZQogCQkJU0VUIHNldF9jbGF1c2VfbGlzdAogCQkJZnJvbV9jbGF1c2UKIAkJ CXdoZXJlX29yX2N1cnJlbnRfY2xhdXNlCkBAIC0xMTI1OSwxMCArMTEyNzQsMTEgQEAgVXBkYXRl U3RtdDogb3B0X3dpdGhfY2xhdXNlIFVQREFURSByZWxhdGlvbl9leHByX29wdF9hbGlhcwogCQkJ CXsKIAkJCQkJVXBkYXRlU3RtdCAqbiA9IG1ha2VOb2RlKFVwZGF0ZVN0bXQpOwogCQkJCQluLT5y ZWxhdGlvbiA9ICQzOwotCQkJCQluLT50YXJnZXRMaXN0ID0gJDU7Ci0JCQkJCW4tPmZyb21DbGF1 c2UgPSAkNjsKLQkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkNzsKLQkJCQkJbi0+cmV0dXJuaW5nTGlz dCA9ICQ4OworCQkJCQluLT5mb3JQb3J0aW9uT2YgPSAkNDsKKwkJCQkJbi0+dGFyZ2V0TGlzdCA9 ICQ2OworCQkJCQluLT5mcm9tQ2xhdXNlID0gJDc7CisJCQkJCW4tPndoZXJlQ2xhdXNlID0gJDg7 CisJCQkJCW4tPnJldHVybmluZ0xpc3QgPSAkOTsKIAkJCQkJbi0+d2l0aENsYXVzZSA9ICQxOwog CQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CkBAIC0xMjU0MCw2ICsxMjU1NiwxOSBAQCByZWxh dGlvbl9leHByX29wdF9hbGlhczogcmVsYXRpb25fZXhwcgkJCQkJJXByZWMgVU1JTlVTCiAJCQkJ fQogCQk7CiAKK2Zvcl9wb3J0aW9uX29mX2NsYXVzZToKKwkJCUZPUiBQT1JUSU9OIE9GIENvbElk IEZST00gYV9leHByIFRPIGFfZXhwcgorCQkJCXsKKwkJCQkJRm9yUG9ydGlvbk9mQ2xhdXNlICpu ID0gbWFrZU5vZGUoRm9yUG9ydGlvbk9mQ2xhdXNlKTsKKwkJCQkJbi0+cmFuZ2VfbmFtZSA9ICQ0 OworCQkJCQluLT5yYW5nZV9uYW1lX2xvY2F0aW9uID0gQDQ7CisJCQkJCW4tPnRhcmdldF9zdGFy dCA9ICQ2OworCQkJCQluLT50YXJnZXRfZW5kID0gJDg7CisJCQkJCSQkID0gbjsKKwkJCQl9CisJ CQl8IC8qRU1QVFkqLwkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCiAvKgogICogVEFCTEVTQU1Q TEUgZGVjb3JhdGlvbiBpbiBhIEZST00gaXRlbQogICovCkBAIC0xNTcyOCw2ICsxNTc1Nyw3IEBA IHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFTU1dPUkQKIAkJCXwgUExBTlMKIAkJCXwgUE9M SUNZCisJCQl8IFBPUlRJT04KIAkJCXwgUFJFQ0VESU5HCiAJCQl8IFBSRVBBUkUKIAkJCXwgUFJF UEFSRUQKQEAgLTE2MzA5LDYgKzE2MzM5LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQ TEFDSU5HCiAJCQl8IFBMQU5TCiAJCQl8IFBPTElDWQorCQkJfCBQT1JUSU9OCiAJCQl8IFBPU0lU SU9OCiAJCQl8IFBSRUNFRElORwogCQkJfCBQUkVQQVJFCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfYWdnLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5k ZXggN2Q4MjlhMDVhOS4uNDFjMWE4ZmQ3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwpAQCAtNTU1 LDYgKzU1NSwxMyBAQCBjaGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUg KnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCWVy cmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9O OgorCQkJaWYgKGlzQWdnKQorCQkJCWVyciA9IF8oImFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5v dCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQllbHNlCisJCQkJ ZXJyID0gXygiZ3JvdXBpbmcgb3BlcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gRk9SIFBPUlRJ T04gT0YgZXhwcmVzc2lvbnMiKTsKKworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBp cyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAgLTk0 Myw2ICs5NTAsOSBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUs IFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJy a2luZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046 CisJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1IgUE9S VElPTiBPRiBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBp cyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfY29sbGF0ZS5jCmluZGV4IDQxMzM1MjZmMDQuLjk5OTFkYTNiM2UgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYwpAQCAtNDg0LDYgKzQ4NCw3IEBAIGFzc2lnbl9jb2xs YXRpb25zX3dhbGtlcihOb2RlICpub2RlLCBhc3NpZ25fY29sbGF0aW9uc19jb250ZXh0ICpjb250 ZXh0KQogCQljYXNlIFRfSm9pbkV4cHI6CiAJCWNhc2UgVF9Gcm9tRXhwcjoKIAkJY2FzZSBUX09u Q29uZmxpY3RFeHByOgorCQljYXNlIFRfRm9yUG9ydGlvbk9mRXhwcjoKIAkJY2FzZSBUX1NvcnRH cm91cENsYXVzZToKIAkJCSh2b2lkKSBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsCiAJCQkJ CQkJCQkJICBhc3NpZ25fY29sbGF0aW9uc193YWxrZXIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpp bmRleCAyZDFhNDc3MTU0Li5jZWY3ZjNmNGM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAg LTUxMyw2ICs1MTMsOSBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBD b2x1bW5SZWYgKmNyZWYpCiAJCWNhc2UgRVhQUl9LSU5EX1BBUlRJVElPTl9CT1VORDoKIAkJCWVy ciA9IF8oImNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBwYXJ0aXRpb24gYm91bmQgZXhw cmVzc2lvbiIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OOgor CQkJZXJyID0gXygiY2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIEZPUiBQT1JUSU9OIE9G IGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50 aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCkBAIC0xNzY0LDYgKzE3 NjcsOSBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3Vi bGluaykKIAkJY2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKIAkJCWVyciA9IF8oImNh bm5vdCB1c2Ugc3VicXVlcnkgaW4gY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbiIpOwogCQkJ YnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OOgorCQkJZXJyID0gXygiY2Fu bm90IHVzZSBzdWJxdWVyeSBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uIik7CisJCQlicmVh azsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2Fz ZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAtMzAzOSw2ICszMDQ1LDggQEAgUGFyc2VFeHByS2luZE5h bWUoUGFyc2VFeHByS2luZCBleHByS2luZCkKIAkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1NPVVJD RToKIAkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1RBUkdFVDoKIAkJCXJldHVybiAiVVBEQVRFIjsK KwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQlyZXR1cm4gIkZPUiBQT1JUSU9O IE9GIjsKIAkJY2FzZSBFWFBSX0tJTkRfR1JPVVBfQlk6CiAJCQlyZXR1cm4gIkdST1VQIEJZIjsK IAkJY2FzZSBFWFBSX0tJTkRfT1JERVJfQlk6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCAz Y2VjOGRlN2RhLi45Y2U4NWMzYmMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTI2NTUs NiArMjY1NSw5IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNlbWVudChQYXJzZVN0YXRlICpwc3RhdGUs IE5vZGUgKmxhc3Rfc3JmLCBpbnQgbG9jYXRpb24pCiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01B Uks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERB VEVfUE9SVElPTjoKKwkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3Qg YWxsb3dlZCBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAKIAkJ CS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwg c28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRs ZXIuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwppbmRleCA5NTIxZTgx MTAwLi41MDNjNTBlMDk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVI YW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCkBAIC0x NTkxLDYgKzE1OTEsNyBAQCByZXdyaXRlVmFsdWVzUlRFKFF1ZXJ5ICpwYXJzZXRyZWUsIFJhbmdl VGJsRW50cnkgKnJ0ZSwgaW50IHJ0aSwKIC8qCiAgKiBSZWNvcmQgaW4gdGFyZ2V0X3J0ZS0+ZXh0 cmFVcGRhdGVkQ29scyB0aGUgaW5kZXhlcyBvZiBhbnkgZ2VuZXJhdGVkIGNvbHVtbnMKICAqIHRo YXQgZGVwZW5kIG9uIGFueSBjb2x1bW5zIG1lbnRpb25lZCBpbiB0YXJnZXRfcnRlLT51cGRhdGVk Q29scy4KKyAqIElmIHRoZSB1cGRhdGUgdXNlcyBGT1IgUE9SVElPTiBPRiwgaW5jbHVkZSB0aGUg UEsgcmFuZ2UuCiAgKi8KIHZvaWQKIGZpbGxfZXh0cmFVcGRhdGVkQ29scyhSYW5nZVRibEVudHJ5 ICp0YXJnZXRfcnRlLCBSZWxhdGlvbiB0YXJnZXRfcmVsYXRpb24pCkBAIC0zMTIyLDYgKzMxMjMs MTkgQEAgcmV3cml0ZVRhcmdldFZpZXcoUXVlcnkgKnBhcnNldHJlZSwgUmVsYXRpb24gdmlldykK IAkJCX0KIAkJfQogCisJCS8vIFRPRE86IFRoaXMgZG9lc24ndCBsb29rIGxpa2UgaXQncyBnZXR0 aW5nIHVzZWQ6CisJCWlmIChwYXJzZXRyZWUtPmZvclBvcnRpb25PZikKKwkJeworCQkJZm9yZWFj aChsYywgcGFyc2V0cmVlLT5mb3JQb3J0aW9uT2YtPnJhbmdlU2V0KQorCQkJeworCQkJCVRhcmdl dEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKTsKKworCQkJCWlmICghdGxl LT5yZXNqdW5rKQorCQkJCQltb2RpZmllZF9jb2xzID0gYm1zX2FkZF9tZW1iZXIobW9kaWZpZWRf Y29scywKKwkJCQkJCQkJCQkJCSAgIHRsZS0+cmVzbm8gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyKTsKKwkJCX0KKwkJfQorCiAJCWF1dG9fdXBkYXRlX2RldGFpbCA9IHZpZXdf Y29sc19hcmVfYXV0b191cGRhdGFibGUodmlld3F1ZXJ5LAogCQkJCQkJCQkJCQkJCQkgIG1vZGlm aWVkX2NvbHMsCiAJCQkJCQkJCQkJCQkJCSAgTlVMTCwKQEAgLTM3NjQsNiArMzc3OCwxNiBAQCBS ZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNldHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMpCiAJCX0K IAkJZWxzZSBpZiAoZXZlbnQgPT0gQ01EX1VQREFURSkKIAkJeworCQkJLyogVXBkYXRlIEZPUiBQ T1JUSU9OIE9GIGNvbHVtbihzKSBhdXRvbWF0aWNhbGx5ICovCisJCQlpZiAocGFyc2V0cmVlLT5m b3JQb3J0aW9uT2YpCisJCQl7CisJCQkJTGlzdENlbGwgKnRsOworCQkJCWZvcmVhY2godGwsIHBh cnNldHJlZS0+Zm9yUG9ydGlvbk9mLT5yYW5nZVNldCkKKwkJCQl7CisJCQkJCVRhcmdldEVudHJ5 ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KHRsKTsKKwkJCQkJcGFyc2V0cmVlLT50YXJn ZXRMaXN0ID0gbGFwcGVuZChwYXJzZXRyZWUtPnRhcmdldExpc3QsIHRsZSk7CisJCQkJfQorCQkJ fQogCQkJcGFyc2V0cmVlLT50YXJnZXRMaXN0ID0KIAkJCQlyZXdyaXRlVGFyZ2V0TGlzdElVKHBh cnNldHJlZS0+dGFyZ2V0TGlzdCwKIAkJCQkJCQkJCXBhcnNldHJlZS0+Y29tbWFuZFR5cGUsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3Av dXRpbGl0eS5jCmluZGV4IDI3ZmJmMWYzYWEuLmY1YjM5MTE1MmMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBA IC0xNTI0LDcgKzE1MjQsNyBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRl LAogCQkJCQkJCQkJdHJ1ZSwJLyogY2hlY2tfcmlnaHRzICovCiAJCQkJCQkJCQl0cnVlLAkvKiBj aGVja19ub3RfaW5fdXNlICovCiAJCQkJCQkJCQlmYWxzZSwJLyogc2tpcF9idWlsZCAqLwotCQkJ CQkJCQkJZmFsc2UpOyAvKiBxdWlldCAqLworCQkJCQkJCQkJZmFsc2UpOwkvKiBxdWlldCAqLwog CiAJCQkJCS8qCiAJCQkJCSAqIEFkZCB0aGUgQ1JFQVRFIElOREVYIG5vZGUgaXRzZWxmIHRvIHN0 YXNoIHJpZ2h0IGF3YXk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZp bGUgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUKaW5kZXggNDFiNDg2YmNlZi4uZGM3 NDFmMmZjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZQpAQCAtMzgsNiArMzgsNyBAQCBPQkpTID0g XAogCWZsb2F0Lm8gXAogCWZvcm1hdF90eXBlLm8gXAogCWZvcm1hdHRpbmcubyBcCisJZnBfdHJp Z2dlcnMubyBcCiAJZ2VuZmlsZS5vIFwKIAlnZW9fb3BzLm8gXAogCWdlb19zZWxmdW5jcy5vIFwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mcF90cmlnZ2Vycy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2ZwX3RyaWdnZXJzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uZDAwMDIxYWNlMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9mcF90cmlnZ2Vycy5jCkBAIC0wLDAgKzEsNTc0IEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBmcF90cmlnZ2Vycy5jCisgKgorICoJR2VuZXJpYyB0cmlnZ2VyIHByb2NlZHVy ZXMgZm9yIHRlbXBvcmFsIHVwZGF0ZSBhbmQgZGVsZXRlIGNvbW1hbmRzLgorICoKKyAqCU5vdGUg YWJvdXQgbWVtb3J5IG1hbmFnZW1lbnQ6IHRoZSBwcml2YXRlIGhhc2h0YWJsZXMga2VwdCBoZXJl IGxpdmUKKyAqCWFjcm9zcyBxdWVyeSBhbmQgdHJhbnNhY3Rpb24gYm91bmRhcmllcywgaW4gZmFj dCB0aGV5IGxpdmUgYXMgbG9uZyBhcworICoJdGhlIGJhY2tlbmQgZG9lcy4gIFRoaXMgd29ya3Mg YmVjYXVzZSB0aGUgaGFzaHRhYmxlIHN0cnVjdHVyZXMKKyAqCXRoZW1zZWx2ZXMgYXJlIGFsbG9j YXRlZCBieSBkeW5haGFzaC5jIGluIGl0cyBwZXJtYW5lbnQgRHluYUhhc2hDeHQsCisgKglhbmQg dGhlIFNQSSBwbGFucyB0aGV5IHBvaW50IHRvIGFyZSBzYXZlZCB1c2luZyBTUElfa2VlcHBsYW4o KS4KKyAqCVRoZXJlIGlzIG5vdCBjdXJyZW50bHkgYW55IHByb3Zpc2lvbiBmb3IgdGhyb3dpbmcg YXdheSBhIG5vLWxvbmdlci1uZWVkZWQKKyAqCXBsYW4gLS0tIGNvbnNpZGVyIGltcHJvdmluZyB0 aGlzIHNvbWVkYXkuCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIw LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9mcF90cmlnZ2Vycy5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKwor I2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgi CisjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIK KyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2Nv bnN0cmFpbnQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgorI2luY2x1 ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCisjaW5j bHVkZSAibGliL2lsaXN0LmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicGFy c2VyL3BhcnNlX2NvZXJjZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgor I2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvYWNsLmgiCisjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgorI2luY2x1 ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAi dXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxz L3Jscy5oIgorI2luY2x1ZGUgInV0aWxzL3J1bGV1dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Nu YXBtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisvKgorICogTG9jYWwgZGVm aW5pdGlvbnMKKyAqLworCisvKiBOZWVkIGEgbGl0dGxlIG1vcmUgdGhhbiB0aGUgcG9zc2libGUg bnVtYmVyIG9mIGNvbHVtbnMgaW4gYSB0YWJsZSAqLworI2RlZmluZSBGUF9NQVhfQVRUUwkJCQkJ MTY1MAorCisjZGVmaW5lIEZQX0lOSVRfQ09OU1RSQUlOVEhBU0hTSVpFCQk2NAorI2RlZmluZSBG UF9JTklUX1FVRVJZSEFTSFNJWkUJCQkoRlBfSU5JVF9DT05TVFJBSU5USEFTSFNJWkUgKiA0KQor CisjZGVmaW5lIE1BWF9RVU9URURfTkFNRV9MRU4gIChOQU1FREFUQUxFTioyKzMpCisjZGVmaW5l IE1BWF9RVU9URURfUkVMX05BTUVfTEVOICAoTUFYX1FVT1RFRF9OQU1FX0xFTioyKQorCisjZGVm aW5lIEZQQXR0TmFtZShyZWwsIGF0dG51bSkJTmFtZVN0cigqYXR0bnVtQXR0TmFtZShyZWwsIGF0 dG51bSkpCisKKworLyoKKyAqIEZQX1F1ZXJ5S2V5CisgKgorICogVGhlIGtleSBpZGVudGlmeWlu ZyBhIHByZXBhcmVkIFNQSSBwbGFuIGluIG91ciBxdWVyeSBoYXNodGFibGUKKyAqLwordHlwZWRl ZiBzdHJ1Y3QgRlBfUXVlcnlLZXkKK3sKKwlPaWQJCQlyZWxhdGlvbl9pZDsJLyogT0lEIG9mIFJl bGF0aW9uICovCit9IEZQX1F1ZXJ5S2V5OworCisvKgorICogRlBfUXVlcnlIYXNoRW50cnkKKyAq LwordHlwZWRlZiBzdHJ1Y3QgRlBfUXVlcnlIYXNoRW50cnkKK3sKKwlGUF9RdWVyeUtleSBrZXk7 CisJU1BJUGxhblB0cglwbGFuOworfSBGUF9RdWVyeUhhc2hFbnRyeTsKKworLyoKKyAqIEZQX0Nv bXBhcmVLZXkKKyAqCisgKiBUaGUga2V5IGlkZW50aWZ5aW5nIGFuIGVudHJ5IHNob3dpbmcgaG93 IHRvIGNvbXBhcmUgdHdvIHZhbHVlcworICovCit0eXBlZGVmIHN0cnVjdCBGUF9Db21wYXJlS2V5 Cit7CisJT2lkCQkJZXFfb3ByOwkJCS8qIHRoZSBlcXVhbGl0eSBvcGVyYXRvciB0byBhcHBseSAq LworCU9pZAkJCXR5cGVpZDsJCQkvKiB0aGUgZGF0YSB0eXBlIHRvIGFwcGx5IGl0IHRvICovCit9 IEZQX0NvbXBhcmVLZXk7CisKKworLyoKKyAqIExvY2FsIGRhdGEKKyAqLworc3RhdGljIEhUQUIg KmZwX3F1ZXJ5X2NhY2hlID0gTlVMTDsKKworCisvKgorICogTG9jYWwgZnVuY3Rpb24gcHJvdG90 eXBlcworICovCitzdGF0aWMgdm9pZCBxdW90ZU9uZU5hbWUoY2hhciAqYnVmZmVyLCBjb25zdCBj aGFyICpuYW1lKTsKK3N0YXRpYyB2b2lkIHF1b3RlUmVsYXRpb25OYW1lKGNoYXIgKmJ1ZmZlciwg UmVsYXRpb24gcmVsKTsKK3N0YXRpYyB2b2lkIGZwX0J1aWxkUXVlcnlLZXkoRlBfUXVlcnlLZXkg KmtleSwKKwkJCQkJCQkgY29uc3QgUmVsYXRpb24gcmVsKTsKKworc3RhdGljIHZvaWQgZnBfSW5p dEhhc2hUYWJsZXModm9pZCk7CitzdGF0aWMgU1BJUGxhblB0ciBmcF9GZXRjaFByZXBhcmVkUGxh bihGUF9RdWVyeUtleSAqa2V5KTsKK3N0YXRpYyB2b2lkIGZwX0hhc2hQcmVwYXJlZFBsYW4oRlBf UXVlcnlLZXkgKmtleSwgU1BJUGxhblB0ciBwbGFuKTsKKworc3RhdGljIFNQSVBsYW5QdHIgZnBf UGxhbkluc2VydHMoY29uc3QgY2hhciAqcXVlcnlzdHIsIGludCBuYXJncywgT2lkICphcmd0eXBl cywKKwkJCQkJCQkJIEZQX1F1ZXJ5S2V5ICpxa2V5LCBSZWxhdGlvbiBxdWVyeV9yZWwpOworc3Rh dGljIGJvb2wgZnBfUGVyZm9ybUluc2VydHMoRlBfUXVlcnlLZXkgKnFrZXksIFNQSVBsYW5QdHIg cXBsYW4sCisJCQkJCQkJICBSZWxhdGlvbiBxdWVyeV9yZWwsCisJCQkJCQkJICBUdXBsZVRhYmxl U2xvdCAqb2xkc2xvdCwgRGF0dW0gdGFyZ2V0UmFuZ2UpOworc3RhdGljIHZvaWQgZnBfRXh0cmFj dFZhbHVlcyhUdXBsZVRhYmxlU2xvdCAqc2xvdCwKKwkJCQkJCQkgRGF0dW0gdGFyZ2V0UmFuZ2Us CisJCQkJCQkJIERhdHVtICp2YWxzLCBjaGFyICpudWxscyk7CisKKworLyoKKyAqIEZQX2luc2Vy dF9sZWZ0b3ZlcnMgLQorICoKKyAqIEluc2VydCBsZWZ0b3ZlcnMgZnJvbSBhIHRlbXBvcmFsIFVQ REFURS9ERUxFVEUKKyAqLworRGF0dW0KK0ZQX2luc2VydF9sZWZ0b3ZlcnMoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlUcmlnZ2VyRGF0YQkgICAqdHJpZ2RhdGEgPSAoVHJpZ2dlckRhdGEgKikgZmNp bmZvLT5jb250ZXh0OworCVJlbGF0aW9uCQlyZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJ RlBfUXVlcnlLZXkJCXFrZXk7CisJU1BJUGxhblB0cgkJcXBsYW47CisKKwkvKiBDaGVjayB0aGF0 IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50 LiAqLworCWlmICghQ0FMTEVEX0FTX1RSSUdHRVIoZmNpbmZvKSkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0VfUl9JX0VfVFJJR0dFUl9QUk9UT0NPTF9WSU9MQVRFRCks CisJCQkJIGVycm1zZygiZnVuY3Rpb24gXCIlc1wiIHdhcyBub3QgY2FsbGVkIGJ5IHRyaWdnZXIg bWFuYWdlciIsICJGUF9pbnNlcnRfbGVmdG92ZXJzIikpKTsKKworCWlmICghVFJJR0dFUl9GSVJF RF9CWV9VUERBVEUodHJpZ2RhdGEtPnRnX2V2ZW50KSAmJgorCQkhVFJJR0dFUl9GSVJFRF9CWV9E RUxFVEUodHJpZ2RhdGEtPnRnX2V2ZW50KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0VfUl9JX0VfVFJJR0dFUl9QUk9UT0NPTF9WSU9MQVRFRCksCisJCQkJIGVycm1z ZygiZnVuY3Rpb24gXCIlc1wiIG11c3QgYmUgZmlyZWQgZm9yIFVQREFURSBvciBERUxFVEUiLCAi RlBfaW5zZXJ0X2xlZnRvdmVycyIpKSk7CisKKwkvKiBPbmx5IGRvIHNvbWV0aGluZyBpZiB0aGUg c3RhdGVtZW50IGhhcyBGT1IgUE9SVElPTiBPRiAqLworCWlmICghdHJpZ2RhdGEtPnRnX3RlbXBv cmFsKQorCQlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworCisJaWYgKCF0cmlnZGF0YS0+ dGdfdGVtcG9yYWwtPmZwX3RhcmdldFJhbmdlKQorCQllbG9nKEVSUk9SLCAiTm8gdGFyZ2V0IHJh bmdlIGZvdW5kIGZvciB0ZW1wb3JhbCBxdWVyeSIpOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0g U1BJX09LX0NPTk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKwor CS8qIEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgaW5zZXJ0cyAqLworCWZw X0J1aWxkUXVlcnlLZXkoJnFrZXksIHJlbCk7CisKKwlpZiAoKHFwbGFuID0gZnBfRmV0Y2hQcmVw YXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxMKQorCXsKKwkJUmFuZ2VUeXBlICAqdGFyZ2V0UmFuZ2Ug PSBEYXR1bUdldFJhbmdlVHlwZVAodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLT5mcF90YXJnZXRSYW5n ZSk7CisJCWNoYXIJICAgKnJhbmdlVHlwZU5hbWUgPSBnZXRfdHlwbmFtZShSYW5nZVR5cGVHZXRP aWQodGFyZ2V0UmFuZ2UpKTsKKwkJU3RyaW5nSW5mb0RhdGEJcXVlcnlidWY7CisJCWludAkJbmF0 dHMgPSByZWwtPnJkX2F0dC0+bmF0dHM7CisJCWNoYXIJcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9O QU1FX0xFTl07CisJCWNoYXIJYXR0bmFtZVtNQVhfUVVPVEVEX05BTUVfTEVOXTsKKwkJT2lkCQlx dWVyeW9pZHNbRlBfTUFYX0FUVFNdOworCQlpbnQJCXJhbmdlQXR0TnVtID0gSW52YWxpZEF0dHJO dW1iZXI7CisJCWludAkJcGVyaW9kU3RhcnRBdHROdW0gPSBJbnZhbGlkQXR0ck51bWJlcjsKKwkJ aW50CQlwZXJpb2RFbmRBdHROdW0gPSBJbnZhbGlkQXR0ck51bWJlcjsKKwkJYm9vbAl1c2luZ1Bl cmlvZDsKKworCQkvKiAtLS0tLS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMK KwkJICogIElOU0VSVCBJTlRPIDxyZWxuYW1lPgorCQkgKiAgKHJhbmdlYXR0LCBvdGhlcmF0dDEs IC4uLikKKwkJICogIFNFTEVDVCB4LnIsICQxLCAuLi4gJG4KKwkJICogIEZST00gKFZBTFVFUwor CQkgKiAgIChyYW5nZXR5cGUobG93ZXIoJHgpLCB1cHBlcigkbisxKSkgLSAkbisxKSwKKwkJICog ICAocmFuZ2V0eXBlKGxvd2VyKCRuKzEpLCB1cHBlcigkeCkpIC0gJG4rMSkKKwkJICogICkgeCAo cikKKwkJICogIFdIRVJFIHguciA8PiAnZW1wdHknCisJCSAqIFRoZSBTRUxFQ1QgbGlzdCAiJDEs IC4uLiAkbiIgaW5jbHVkZXMgZXZlcnkgYXR0cmlidXRlIGV4Y2VwdCB0aGUgcmFuZ2VhdHQuCisJ CSAqIFRoZSAiJHgiIGlzIHdoaWNoZXZlciBhdHRyaWJ1dGUgaXMgdGhlIHJhbmdlIGNvbHVtbi4K KwkJICogVGhlICRuKzEgcGFyYW0gaGFzIHRoZSBGT1IgUE9SVElPTiBPRiB0YXJnZXQgcmFuZ2Uu CisJCSAqIFRoZSAkMS4uLiRuIHBhcmFtcyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgcHJlLVVQREFU RS9ERUxFVEUgdHVwbGUuCisJCSAqIElmIHRoZXJlIGlzIGEgUEVSSU9EIGluc3RlYWQgb2YgYSBy YW5nZSwKKwkJICogdGhlbiBpbnN0ZWFkIG9mIHJhbmdlYXR0IHdlIHVzZSBzdGFydGF0dCBhbmQg ZW5kYXR0LgorCQkgKiAtLS0tLS0tLS0tCisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnli dWYpOworCisJCXVzaW5nUGVyaW9kID0gdHJpZ2RhdGEtPnRnX3RlbXBvcmFsLT5mcF9wZXJpb2RT dGFydE5hbWUgIT0gTlVMTDsKKwkJcXVvdGVSZWxhdGlvbk5hbWUocmVsbmFtZSwgcmVsKTsKKwkJ YXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJJTlNFUlQgSU5UTyAlcyAoIiwgcmVsbmFtZSk7 CisJCWlmICh1c2luZ1BlcmlvZCkKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsIHRyaWdk YXRhLT50Z190ZW1wb3JhbC0+ZnBfcGVyaW9kU3RhcnROYW1lKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm8oJnF1ZXJ5YnVmLCAiJXMiLCBhdHRuYW1lKTsKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLCB0 cmlnZGF0YS0+dGdfdGVtcG9yYWwtPmZwX3BlcmlvZEVuZE5hbWUpOworCQkJYXBwZW5kU3RyaW5n SW5mbygmcXVlcnlidWYsICIsICVzIiwgYXR0bmFtZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlx dW90ZU9uZU5hbWUoYXR0bmFtZSwgdHJpZ2RhdGEtPnRnX3RlbXBvcmFsLT5mcF9yYW5nZU5hbWUp OworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICIlcyIsIGF0dG5hbWUpOworCQl9CisK KwkJLyogSU5TRVJUIGludG8gZXZlcnkgYXR0cmlidXRlIGJ1dCB0aGUgcmFuZ2UgY29sdW1uICov CisJCWZvciAoaW50IGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKKwkJeworCQkJRm9ybV9wZ19hdHRy aWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIocmVsLT5yZF9hdHQsIGkpOworCQkJY29uc3QgY2hh ciAqY29sbmFtZSA9IE5hbWVTdHIoYXR0ci0+YXR0bmFtZSk7CisJCQlpZiAoIXVzaW5nUGVyaW9k ICYmIHN0cmNtcChjb2xuYW1lLCB0cmlnZGF0YS0+dGdfdGVtcG9yYWwtPmZwX3JhbmdlTmFtZSkg PT0gMCkKKwkJCQlyYW5nZUF0dE51bSA9IGkgKyAxOworCQkJZWxzZSBpZiAodXNpbmdQZXJpb2Qg JiYgc3RyY21wKGNvbG5hbWUsIHRyaWdkYXRhLT50Z190ZW1wb3JhbC0+ZnBfcGVyaW9kU3RhcnRO YW1lKSA9PSAwKQorCQkJCXBlcmlvZFN0YXJ0QXR0TnVtID0gaSArIDE7CisJCQllbHNlIGlmICh1 c2luZ1BlcmlvZCAmJiBzdHJjbXAoY29sbmFtZSwgdHJpZ2RhdGEtPnRnX3RlbXBvcmFsLT5mcF9w ZXJpb2RFbmROYW1lKSA9PSAwKQorCQkJCXBlcmlvZEVuZEF0dE51bSA9IGkgKyAxOworCQkJZWxz ZQorCQkJeworCQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBjb2xuYW1lKTsKKwkJCQlhcHBlbmRT dHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIiwgJXMiLCBhdHRuYW1lKTsKKwkJCX0KKwkJCXF1ZXJ5b2lk c1tpXSA9IGF0dHItPmF0dHR5cGlkOworCQl9CisJCXF1ZXJ5b2lkc1tuYXR0c10gPSB0cmlnZGF0 YS0+dGdfdGVtcG9yYWwtPmZwX3JhbmdlVHlwZTsKKwkJaWYgKCF1c2luZ1BlcmlvZCAmJiByYW5n ZUF0dE51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJCWVsb2coRVJST1IsICJyYW5nZSBjb2x1 bW4gJXMgbm90IGZvdW5kIiwgdHJpZ2RhdGEtPnRnX3RlbXBvcmFsLT5mcF9yYW5nZU5hbWUpOwor CQllbHNlIGlmICh1c2luZ1BlcmlvZCAmJiBwZXJpb2RTdGFydEF0dE51bSA9PSBJbnZhbGlkQXR0 ck51bWJlcikKKwkJCWVsb2coRVJST1IsICJwZXJpb2Qgc3RhcnQgY29sdW1uICVzIG5vdCBmb3Vu ZCIsIHRyaWdkYXRhLT50Z190ZW1wb3JhbC0+ZnBfcGVyaW9kU3RhcnROYW1lKTsKKwkJZWxzZSBp ZiAodXNpbmdQZXJpb2QgJiYgcGVyaW9kRW5kQXR0TnVtID09IEludmFsaWRBdHRyTnVtYmVyKQor CQkJZWxvZyhFUlJPUiwgInBlcmlvZCBlbmQgY29sdW1uICVzIG5vdCBmb3VuZCIsIHRyaWdkYXRh LT50Z190ZW1wb3JhbC0+ZnBfcGVyaW9kRW5kTmFtZSk7CisKKwkJaWYgKCF1c2luZ1BlcmlvZCkK KwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiKSBTRUxFQ1QgeC5yIik7CisJCWVsc2UK KwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiKSBTRUxFQ1QgbG93ZXIoeC5yKSwgdXBw ZXIoeC5yKSIpOworCisJCS8qIFNFTEVDVCBhbGwgdGhlIGF0dHJpYnV0ZXMgYnV0IHRoZSByYW5n ZS9zdGFydC9lbmQgY29sdW1ucyAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IG5hdHRzOyBpKysp CisJCQlpZiAoISgoIXVzaW5nUGVyaW9kICYmIGkgPT0gcmFuZ2VBdHROdW0gLSAxKSB8fAorCQkJ CSAgKHVzaW5nUGVyaW9kICYmIGkgPT0gcGVyaW9kU3RhcnRBdHROdW0gLSAxKSB8fAorCQkJCSAg KHVzaW5nUGVyaW9kICYmIGkgPT0gcGVyaW9kRW5kQXR0TnVtIC0gMSkpKQorCQkJCWFwcGVuZFN0 cmluZ0luZm8oJnF1ZXJ5YnVmLCAiLCAkJWQiLCBpICsgMSk7CisKKwkJYXBwZW5kU3RyaW5nSW5m bygmcXVlcnlidWYsICIgRlJPTSAoVkFMVUVTIik7CisJCS8vIFRPRE86IFdoeSB1c2UgYC0gJG4r MWAgaW5zdGVhZCBvZiBzZXR0aW5nIHRoZSBib3VuZCB0byB0aGUgZWRnZSBvZiAkbisxIGRpcmVj dGx5PworCQkvLyAod2hlcmUgJG4rMSBpcyB0aGUgcmFuZ2UgYnVpbGQgZnJvbSBGT1IgUE9SVElP TiBPRikKKwkJaWYgKCF1c2luZ1BlcmlvZCkKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVl cnlidWYsICIgKCVzKGxvd2VyKCQlZCksIHVwcGVyKCQlZCkpIC0gJCVkKSwiLCByYW5nZVR5cGVO YW1lLCByYW5nZUF0dE51bSwgbmF0dHMrMSwgbmF0dHMrMSk7CisJCQlhcHBlbmRTdHJpbmdJbmZv KCZxdWVyeWJ1ZiwgIiAoJXMobG93ZXIoJCVkKSwgdXBwZXIoJCVkKSkgLSAkJWQpIiwgcmFuZ2VU eXBlTmFtZSwgbmF0dHMrMSwgcmFuZ2VBdHROdW0sIG5hdHRzKzEpOworCQl9CisJCWVsc2UKKwkJ eworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICIgKCVzKCQlZCwgdXBwZXIoJCVkKSkg LSAkJWQpLCIsIHJhbmdlVHlwZU5hbWUsIHBlcmlvZFN0YXJ0QXR0TnVtLCBuYXR0cysxLCBuYXR0 cysxKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiICglcyhsb3dlcigkJWQpLCAk JWQpIC0gJCVkKSIsIHJhbmdlVHlwZU5hbWUsIG5hdHRzKzEsIHBlcmlvZEVuZEF0dE51bSwgbmF0 dHMrMSk7CisJCX0KKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICIpIHgocikgV0hFUkUg eC5yIDw+ICdlbXB0eSciKTsKKworCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCisJ CXFwbGFuID0gZnBfUGxhbkluc2VydHMocXVlcnlidWYuZGF0YSwgbmF0dHMgKyAodXNpbmdQZXJp b2QgPyAyIDogMSksIHF1ZXJ5b2lkcywgJnFrZXksIHJlbCk7CisJfQorCisJLyoKKwkgKiBXZSBo YXZlIGEgcGxhbiBub3cuIFJ1biBpdC4KKwkgKi8KKwlmcF9QZXJmb3JtSW5zZXJ0cygmcWtleSwg cXBsYW4sCisJCQkJCSAgcmVsLAorCQkJCQkgIHRyaWdkYXRhLT50Z190cmlnc2xvdCwKKwkJCQkJ ICB0cmlnZGF0YS0+dGdfdGVtcG9yYWwtPmZwX3RhcmdldFJhbmdlKTsKKworCWlmIChTUElfZmlu aXNoKCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9maW5pc2ggZmFpbGVk Iik7CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisKKy8qIC0tLS0tLS0t LS0KKyAqIExvY2FsIGZ1bmN0aW9ucyBiZWxvdworICogLS0tLS0tLS0tLQorICovCisKKworLyoK KyAqIHF1b3RlT25lTmFtZSAtLS0gc2FmZWx5IHF1b3RlIGEgc2luZ2xlIFNRTCBuYW1lCisgKgor ICogYnVmZmVyIG11c3QgYmUgTUFYX1FVT1RFRF9OQU1FX0xFTiBsb25nIChpbmNsdWRlcyByb29t IGZvciBcMCkKKyAqLworc3RhdGljIHZvaWQKK3F1b3RlT25lTmFtZShjaGFyICpidWZmZXIsIGNv bnN0IGNoYXIgKm5hbWUpCit7CisJLyogUmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGJlIHNtYXJ0LCBq dXN0IGFsd2F5cyBxdW90ZSBpdC4gKi8KKwkqYnVmZmVyKysgPSAnIic7CisJd2hpbGUgKCpuYW1l KQorCXsKKwkJaWYgKCpuYW1lID09ICciJykKKwkJCSpidWZmZXIrKyA9ICciJzsKKwkJKmJ1ZmZl cisrID0gKm5hbWUrKzsKKwl9CisJKmJ1ZmZlcisrID0gJyInOworCSpidWZmZXIgPSAnXDAnOwor fQorCisvKgorICogcXVvdGVSZWxhdGlvbk5hbWUgLS0tIHNhZmVseSBxdW90ZSBhIGZ1bGx5IHF1 YWxpZmllZCByZWxhdGlvbiBuYW1lCisgKgorICogYnVmZmVyIG11c3QgYmUgTUFYX1FVT1RFRF9S RUxfTkFNRV9MRU4gbG9uZyAoaW5jbHVkZXMgcm9vbSBmb3IgXDApCisgKi8KK3N0YXRpYyB2b2lk CitxdW90ZVJlbGF0aW9uTmFtZShjaGFyICpidWZmZXIsIFJlbGF0aW9uIHJlbCkKK3sKKwlxdW90 ZU9uZU5hbWUoYnVmZmVyLCBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2Uo cmVsKSkpOworCWJ1ZmZlciArPSBzdHJsZW4oYnVmZmVyKTsKKwkqYnVmZmVyKysgPSAnLic7CisJ cXVvdGVPbmVOYW1lKGJ1ZmZlciwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7Cit9CisK Ky8qIC0tLS0tLS0tLS0KKyAqIGZwX0J1aWxkUXVlcnlLZXkgLQorICoKKyAqCUNvbnN0cnVjdCBh IGhhc2h0YWJsZSBrZXkgZm9yIGEgcHJlcGFyZWQgU1BJIHBsYW4gb2YgYSB0ZW1wb3JhbCBsZWZ0 b3ZlcnMgaW5zZXJ0CisgKgorICoJCWtleTogb3V0cHV0IGFyZ3VtZW50LCAqa2V5IGlzIGZpbGxl ZCBpbiBiYXNlZCBvbiB0aGUgb3RoZXIgYXJndW1lbnRzCisgKgkJUmVsYXRpb246IGluZm8gZnJv bSBwZ19jb25zdHJhaW50IGVudHJ5CisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitm cF9CdWlsZFF1ZXJ5S2V5KEZQX1F1ZXJ5S2V5ICprZXksIGNvbnN0IFJlbGF0aW9uIHJlbCkKK3sK KwkvKgorCSAqIFdlIGFzc3VtZSBzdHJ1Y3QgRlBfUXVlcnlLZXkgY29udGFpbnMgbm8gcGFkZGlu ZyBieXRlcywgZWxzZSB3ZSdkIG5lZWQKKwkgKiB0byB1c2UgbWVtc2V0IHRvIGNsZWFyIHRoZW0u CisJICovCisJa2V5LT5yZWxhdGlvbl9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKK30KKwor LyoKKyAqIFByZXBhcmUgZXhlY3V0aW9uIHBsYW4gZm9yIGEgcXVlcnkgdG8gaW5zZXJ0IHRlbXBv cmFsIGxlZnRvdmVycworICovCitzdGF0aWMgU1BJUGxhblB0cgorZnBfUGxhbkluc2VydHMoY29u c3QgY2hhciAqcXVlcnlzdHIsIGludCBuYXJncywgT2lkICphcmd0eXBlcywKKwkJCSAgIEZQX1F1 ZXJ5S2V5ICpxa2V5LCBSZWxhdGlvbiBxdWVyeV9yZWwpCit7CisJU1BJUGxhblB0cglxcGxhbjsK KwlPaWQJCQlzYXZlX3VzZXJpZDsKKwlpbnQJCQlzYXZlX3NlY19jb250ZXh0OworCisJLyogU3dp dGNoIHRvIHByb3BlciBVSUQgdG8gcGVyZm9ybSBjaGVjayBhcyAqLworCUdldFVzZXJJZEFuZFNl Y0NvbnRleHQoJnNhdmVfdXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CisJU2V0VXNlcklkQW5k U2VjQ29udGV4dChSZWxhdGlvbkdldEZvcm0ocXVlcnlfcmVsKS0+cmVsb3duZXIsCisJCQkJCQkg ICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfTE9DQUxfVVNFUklEX0NIQU5HRSB8CisJCQkJ CQkgICBTRUNVUklUWV9OT0ZPUkNFX1JMUyk7CisKKwkvKiBDcmVhdGUgdGhlIHBsYW4gKi8KKwlx cGxhbiA9IFNQSV9wcmVwYXJlKHF1ZXJ5c3RyLCBuYXJncywgYXJndHlwZXMpOworCisJaWYgKHFw bGFuID09IE5VTEwpCisJCWVsb2coRVJST1IsICJTUElfcHJlcGFyZSByZXR1cm5lZCAlcyBmb3Ig JXMiLCBTUElfcmVzdWx0X2NvZGVfc3RyaW5nKFNQSV9yZXN1bHQpLCBxdWVyeXN0cik7CisKKwkv KiBSZXN0b3JlIFVJRCBhbmQgc2VjdXJpdHkgY29udGV4dCAqLworCVNldFVzZXJJZEFuZFNlY0Nv bnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOworCisJLyogU2F2ZSB0aGUgcGxh biAqLworCVNQSV9rZWVwcGxhbihxcGxhbik7CisJZnBfSGFzaFByZXBhcmVkUGxhbihxa2V5LCBx cGxhbik7CisKKwlyZXR1cm4gcXBsYW47Cit9CisKKy8qCisgKiBQZXJmb3JtIGEgcXVlcnkgdG8g ZW5mb3JjZSBhIHRlbXBvcmFsIFBLIHJlc3RyaWN0aW9uCisgKi8KK3N0YXRpYyBib29sCitmcF9Q ZXJmb3JtSW5zZXJ0cyhGUF9RdWVyeUtleSAqcWtleSwgU1BJUGxhblB0ciBxcGxhbiwKKwkJCQkg IFJlbGF0aW9uIHF1ZXJ5X3JlbCwKKwkJCQkgIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBEYXR1 bSB0YXJnZXRSYW5nZSkKK3sKKwlTbmFwc2hvdAl0ZXN0X3NuYXBzaG90OworCVNuYXBzaG90CWNy b3NzY2hlY2tfc25hcHNob3Q7CisJaW50CQkJc3BpX3Jlc3VsdDsKKwlPaWQJCQlzYXZlX3VzZXJp ZDsKKwlpbnQJCQlzYXZlX3NlY19jb250ZXh0OworCURhdHVtCQl2YWxzW0ZQX01BWF9BVFRTXTsK KwljaGFyCQludWxsc1tGUF9NQVhfQVRUU107CisJYm9vbCBkZXRlY3ROZXdSb3dzID0gdHJ1ZTsJ Ly8gVE9ETzogbmVlZCB0aGlzPworCisJLyogRXh0cmFjdCB0aGUgcGFyYW1ldGVycyB0byBiZSBw YXNzZWQgaW50byB0aGUgcXVlcnkgKi8KKwlmcF9FeHRyYWN0VmFsdWVzKG9sZHNsb3QsIHRhcmdl dFJhbmdlLCB2YWxzLCBudWxscyk7CisKKwkvKgorCSAqIEluIFJFQUQgQ09NTUlUVEVEIG1vZGUs IHdlIGp1c3QgbmVlZCB0byB1c2UgYW4gdXAtdG8tZGF0ZSByZWd1bGFyCisJICogc25hcHNob3Qs IGFuZCB3ZSB3aWxsIHNlZSBhbGwgcm93cyB0aGF0IGNvdWxkIGJlIGludGVyZXN0aW5nLiBCdXQg aW4KKwkgKiB0cmFuc2FjdGlvbi1zbmFwc2hvdCBtb2RlLCB3ZSBjYW4ndCBjaGFuZ2UgdGhlIHRy YW5zYWN0aW9uIHNuYXBzaG90LiBJZgorCSAqIHRoZSBjYWxsZXIgcGFzc2VzIGRldGVjdE5ld1Jv d3MgPT0gZmFsc2UgdGhlbiBpdCdzIG9rYXkgdG8gZG8gdGhlIHF1ZXJ5CisJICogd2l0aCB0aGUg dHJhbnNhY3Rpb24gc25hcHNob3Q7IG90aGVyd2lzZSB3ZSB1c2UgYSBjdXJyZW50IHNuYXBzaG90 LCBhbmQKKwkgKiB0ZWxsIHRoZSBleGVjdXRvciB0byBlcnJvciBvdXQgaWYgaXQgZmluZHMgYW55 IHJvd3MgdW5kZXIgdGhlIGN1cnJlbnQKKwkgKiBzbmFwc2hvdCB0aGF0IHdvdWxkbid0IGJlIHZp c2libGUgcGVyIHRoZSB0cmFuc2FjdGlvbiBzbmFwc2hvdC4gIE5vdGUKKwkgKiB0aGF0IFNQSV9l eGVjdXRlX3NuYXBzaG90IHdpbGwgcmVnaXN0ZXIgdGhlIHNuYXBzaG90cywgc28gd2UgZG9uJ3Qg bmVlZAorCSAqIHRvIGJvdGhlciBoZXJlLgorCSAqLworCWlmIChJc29sYXRpb25Vc2VzWGFjdFNu YXBzaG90KCkgJiYgZGV0ZWN0TmV3Um93cykKKwl7CisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50 KCk7CS8qIGJlIHN1cmUgYWxsIG15IG93biB3b3JrIGlzIHZpc2libGUgKi8KKwkJdGVzdF9zbmFw c2hvdCA9IEdldExhdGVzdFNuYXBzaG90KCk7CisJCWNyb3NzY2hlY2tfc25hcHNob3QgPSBHZXRU cmFuc2FjdGlvblNuYXBzaG90KCk7CisJfQorCWVsc2UKKwl7CisJCS8qIHRoZSBkZWZhdWx0IFNQ SSBiZWhhdmlvciBpcyBva2F5ICovCisJCXRlc3Rfc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7 CisJCWNyb3NzY2hlY2tfc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CisJfQorCisJLyogU3dp dGNoIHRvIHByb3BlciBVSUQgdG8gcGVyZm9ybSBjaGVjayBhcyAqLworCUdldFVzZXJJZEFuZFNl Y0NvbnRleHQoJnNhdmVfdXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CisJU2V0VXNlcklkQW5k U2VjQ29udGV4dChSZWxhdGlvbkdldEZvcm0ocXVlcnlfcmVsKS0+cmVsb3duZXIsCisJCQkJCQkg ICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfTE9DQUxfVVNFUklEX0NIQU5HRSB8CisJCQkJ CQkgICBTRUNVUklUWV9OT0ZPUkNFX1JMUyk7CisKKwkvKiBGaW5hbGx5IHdlIGNhbiBydW4gdGhl IHF1ZXJ5LiAqLworCXNwaV9yZXN1bHQgPSBTUElfZXhlY3V0ZV9zbmFwc2hvdChxcGxhbiwKKwkJ CQkJCQkJCSAgdmFscywgbnVsbHMsCisJCQkJCQkJCQkgIHRlc3Rfc25hcHNob3QsIGNyb3NzY2hl Y2tfc25hcHNob3QsCisJCQkJCQkJCQkgIGZhbHNlLCB0cnVlLCAwKTsKKworCS8qIFJlc3RvcmUg VUlEIGFuZCBzZWN1cml0eSBjb250ZXh0ICovCisJU2V0VXNlcklkQW5kU2VjQ29udGV4dChzYXZl X3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7CisKKwkvKiBDaGVjayByZXN1bHQgKi8KKwlpZiAo c3BpX3Jlc3VsdCA8IDApCisJCWVsb2coRVJST1IsICJTUElfZXhlY3V0ZV9zbmFwc2hvdCByZXR1 cm5lZCAlcyIsIFNQSV9yZXN1bHRfY29kZV9zdHJpbmcoc3BpX3Jlc3VsdCkpOworCisJaWYgKHNw aV9yZXN1bHQgIT0gU1BJX09LX0lOU0VSVCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVEVSTkFMX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJ0ZW1wb3JhbCBsZWZ0b3Zl cnMgcXVlcnkgb24gXCIlc1wiIGdhdmUgdW5leHBlY3RlZCByZXN1bHQiLAorCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocXVlcnlfcmVsKSksCisJCQkJIGVycmhpbnQoIlRoaXMgaXMgbW9z dCBsaWtlbHkgZHVlIHRvIGEgcnVsZSBoYXZpbmcgcmV3cml0dGVuIHRoZSBxdWVyeS4iKSkpOwor CisJcmV0dXJuIFNQSV9wcm9jZXNzZWQgIT0gMDsKK30KKworLyoKKyAqIEV4dHJhY3QgZmllbGRz IGZyb20gYSB0dXBsZSBpbnRvIERhdHVtL251bGxzIGFycmF5cworICovCitzdGF0aWMgdm9pZAor ZnBfRXh0cmFjdFZhbHVlcyhUdXBsZVRhYmxlU2xvdCAqc2xvdCwKKwkJCQkgRGF0dW0gdGFyZ2V0 UmFuZ2UsCisJCQkJIERhdHVtICp2YWxzLCBjaGFyICpudWxscykKK3sKKwlpbnQJCW5hdHRzID0g c2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvci0+bmF0dHM7CisJYm9vbAlpc251bGw7CisKKwlmb3Ig KGludCBpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJeworCQl2YWxzW2ldID0gc2xvdF9nZXRhdHRy KHNsb3QsIGkgKyAxLCAmaXNudWxsKTsKKwkJbnVsbHNbaV0gPSBpc251bGwgPyAnbicgOiAnICc7 CisJfQorCXZhbHNbbmF0dHNdID0gdGFyZ2V0UmFuZ2U7CisJbnVsbHNbbmF0dHNdID0gZmFsc2U7 Cit9CisKKy8qCisgKiBmcF9Jbml0SGFzaFRhYmxlcyAtCisgKgorICogSW5pdGlhbGl6ZSBvdXIg aW50ZXJuYWwgaGFzaCB0YWJsZXMuCisgKi8KK3N0YXRpYyB2b2lkCitmcF9Jbml0SGFzaFRhYmxl cyh2b2lkKQoreworCUhBU0hDVEwJCWN0bDsKKworCW1lbXNldCgmY3RsLCAwLCBzaXplb2YoY3Rs KSk7CisJY3RsLmtleXNpemUgPSBzaXplb2YoRlBfUXVlcnlLZXkpOworCWN0bC5lbnRyeXNpemUg PSBzaXplb2YoRlBfUXVlcnlIYXNoRW50cnkpOworCWZwX3F1ZXJ5X2NhY2hlID0gaGFzaF9jcmVh dGUoIkZQIHF1ZXJ5IGNhY2hlIiwKKwkJCQkJCQkJIEZQX0lOSVRfUVVFUllIQVNIU0laRSwKKwkJ CQkJCQkJICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworfQorCisKKy8qCisgKiBmcF9G ZXRjaFByZXBhcmVkUGxhbiAtCisgKgorICogTG9va3VwIGZvciBhIHF1ZXJ5IGtleSBpbiBvdXIg cHJpdmF0ZSBoYXNoIHRhYmxlIG9mIHByZXBhcmVkCisgKiBhbmQgc2F2ZWQgU1BJIGV4ZWN1dGlv biBwbGFucy4gUmV0dXJuIHRoZSBwbGFuIGlmIGZvdW5kIG9yIE5VTEwuCisgKi8KK3N0YXRpYyBT UElQbGFuUHRyCitmcF9GZXRjaFByZXBhcmVkUGxhbihGUF9RdWVyeUtleSAqa2V5KQoreworCUZQ X1F1ZXJ5SGFzaEVudHJ5ICplbnRyeTsKKwlTUElQbGFuUHRyCXBsYW47CisKKwkvKgorCSAqIE9u IHRoZSBmaXJzdCBjYWxsIGluaXRpYWxpemUgdGhlIGhhc2h0YWJsZQorCSAqLworCWlmICghZnBf cXVlcnlfY2FjaGUpCisJCWZwX0luaXRIYXNoVGFibGVzKCk7CisKKwkvKgorCSAqIExvb2t1cCBm b3IgdGhlIGtleQorCSAqLworCWVudHJ5ID0gKEZQX1F1ZXJ5SGFzaEVudHJ5ICopIGhhc2hfc2Vh cmNoKGZwX3F1ZXJ5X2NhY2hlLAorCQkJCQkJCQkJCQkgICh2b2lkICopIGtleSwKKwkJCQkJCQkJ CQkJICBIQVNIX0ZJTkQsIE5VTEwpOworCWlmIChlbnRyeSA9PSBOVUxMKQorCQlyZXR1cm4gTlVM TDsKKworCS8qCisJICogQ2hlY2sgd2hldGhlciB0aGUgcGxhbiBpcyBzdGlsbCB2YWxpZC4gIElm IGl0IGlzbid0LCB3ZSBkb24ndCB3YW50IHRvCisJICogc2ltcGx5IHJlbHkgb24gcGxhbmNhY2hl LmMgdG8gcmVnZW5lcmF0ZSBpdDsgcmF0aGVyIHdlIHNob3VsZCBzdGFydAorCSAqIGZyb20gc2Ny YXRjaCBhbmQgcmVidWlsZCB0aGUgcXVlcnkgdGV4dCB0b28uICBUaGlzIGlzIHRvIGNvdmVyIGNh c2VzCisJICogc3VjaCBhcyB0YWJsZS9jb2x1bW4gcmVuYW1lcy4gIFdlIGRlcGVuZCBvbiB0aGUg cGxhbmNhY2hlIG1hY2hpbmVyeSB0bworCSAqIGRldGVjdCBwb3NzaWJsZSBpbnZhbGlkYXRpb25z LCB0aG91Z2guCisJICoKKwkgKiBDQVVUSU9OOiB0aGlzIGNoZWNrIGlzIG9ubHkgdHJ1c3R3b3J0 aHkgaWYgdGhlIGNhbGxlciBoYXMgYWxyZWFkeQorCSAqIGxvY2tlZCB0aGUgcmVsLgorCSAqLwor CXBsYW4gPSBlbnRyeS0+cGxhbjsKKwlpZiAocGxhbiAmJiBTUElfcGxhbl9pc192YWxpZChwbGFu KSkKKwkJcmV0dXJuIHBsYW47CisKKwkvKgorCSAqIE90aGVyd2lzZSB3ZSBtaWdodCBhcyB3ZWxs IGZsdXNoIHRoZSBjYWNoZWQgcGxhbiBub3csIHRvIGZyZWUgYSBsaXR0bGUKKwkgKiBtZW1vcnkg c3BhY2UgYmVmb3JlIHdlIG1ha2UgYSBuZXcgb25lLgorCSAqLworCWVudHJ5LT5wbGFuID0gTlVM TDsKKwlpZiAocGxhbikKKwkJU1BJX2ZyZWVwbGFuKHBsYW4pOworCisJcmV0dXJuIE5VTEw7Cit9 CisKKworLyoKKyAqIGZwX0hhc2hQcmVwYXJlZFBsYW4gLQorICoKKyAqIEFkZCBhbm90aGVyIHBs YW4gdG8gb3VyIHByaXZhdGUgU1BJIHF1ZXJ5IHBsYW4gaGFzaHRhYmxlLgorICovCitzdGF0aWMg dm9pZAorZnBfSGFzaFByZXBhcmVkUGxhbihGUF9RdWVyeUtleSAqa2V5LCBTUElQbGFuUHRyIHBs YW4pCit7CisJRlBfUXVlcnlIYXNoRW50cnkgKmVudHJ5OworCWJvb2wJCWZvdW5kOworCisJLyoK KwkgKiBPbiB0aGUgZmlyc3QgY2FsbCBpbml0aWFsaXplIHRoZSBoYXNodGFibGUKKwkgKi8KKwlp ZiAoIWZwX3F1ZXJ5X2NhY2hlKQorCQlmcF9Jbml0SGFzaFRhYmxlcygpOworCisJLyoKKwkgKiBB ZGQgdGhlIG5ldyBwbGFuLiAgV2UgbWlnaHQgYmUgb3ZlcndyaXRpbmcgYW4gZW50cnkgcHJldmlv dXNseSBmb3VuZAorCSAqIGludmFsaWQgYnkgZnBfRmV0Y2hQcmVwYXJlZFBsYW4uCisJICovCisJ ZW50cnkgPSAoRlBfUXVlcnlIYXNoRW50cnkgKikgaGFzaF9zZWFyY2goZnBfcXVlcnlfY2FjaGUs CisJCQkJCQkJCQkJCSAgKHZvaWQgKikga2V5LAorCQkJCQkJCQkJCQkgIEhBU0hfRU5URVIsICZm b3VuZCk7CisJQXNzZXJ0KCFmb3VuZCB8fCBlbnRyeS0+cGxhbiA9PSBOVUxMKTsKKwllbnRyeS0+ cGxhbiA9IHBsYW47Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0 eXBlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYwppbmRleCA4MTUxNzVh NjU0Li41YTM4MTc4NDg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0 eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMKQEAgLTExOTUs NiArMTE5NSw0OCBAQCByYW5nZV9zcGxpdF9pbnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlwY2Fj aGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsIGNvbnN0IFJhbmdlVAogCXJldHVybiBmYWxzZTsKIH0K IAorLyoKKyAqIHJhbmdlX2xlZnRvdmVyX2ludGVybmFsIC0gU2V0cyBvdXRwdXQxIGFuZCBvdXRw dXQyIHRvIHRoZSByZW1haW5pbmcgcGFydHMgb2YgcjEKKyAqIGFmdGVyIHN1YnRyYWN0aW5nIHIy LCBvciBpZiBub3RoaW5nIGlzIGxlZnQgdGhlbiB0byB0aGUgZW1wdHkgcmFuZ2UuCisgKiBvdXRw dXQxIHdpbGwgYWx3YXlzIGJlICJiZWZvcmUiIHIyIGFuZCBvdXRwdXQyICJhZnRlciIuCisgKi8K K3ZvaWQKK3JhbmdlX2xlZnRvdmVyX2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwg Y29uc3QgUmFuZ2VUeXBlICpyMSwKKwkJCQkJCWNvbnN0IFJhbmdlVHlwZSAqcjIsIFJhbmdlVHlw ZSAqKm91dHB1dDEsIFJhbmdlVHlwZSAqKm91dHB1dDIpCit7CisJUmFuZ2VCb3VuZAlsb3dlcjEs CisJCQkJbG93ZXIyOworCVJhbmdlQm91bmQJdXBwZXIxLAorCQkJCXVwcGVyMjsKKwlib29sCQll bXB0eTEsCisJCQkJZW1wdHkyOworCisJcmFuZ2VfZGVzZXJpYWxpemUodHlwY2FjaGUsIHIxLCAm bG93ZXIxLCAmdXBwZXIxLCAmZW1wdHkxKTsKKwlyYW5nZV9kZXNlcmlhbGl6ZSh0eXBjYWNoZSwg cjIsICZsb3dlcjIsICZ1cHBlcjIsICZlbXB0eTIpOworCisJaWYgKHJhbmdlX2NtcF9ib3VuZHMo dHlwY2FjaGUsICZsb3dlcjEsICZsb3dlcjIpIDwgMCkKKwl7CisJCWxvd2VyMi5pbmNsdXNpdmUg PSAhbG93ZXIyLmluY2x1c2l2ZTsKKwkJbG93ZXIyLmxvd2VyID0gZmFsc2U7CisJCSpvdXRwdXQx ID0gbWFrZV9yYW5nZSh0eXBjYWNoZSwgJmxvd2VyMSwgJmxvd2VyMiwgZmFsc2UpOworCX0KKwll bHNlCisJeworCQkqb3V0cHV0MSA9IG1ha2VfZW1wdHlfcmFuZ2UodHlwY2FjaGUpOworCX0KKwor CWlmIChyYW5nZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmdXBwZXIxLCAmdXBwZXIyKSA+IDApCisJ eworCQl1cHBlcjIuaW5jbHVzaXZlID0gIXVwcGVyMi5pbmNsdXNpdmU7CisJCXVwcGVyMi5sb3dl ciA9IHRydWU7CisJCSpvdXRwdXQyID0gbWFrZV9yYW5nZSh0eXBjYWNoZSwgJnVwcGVyMiwgJnVw cGVyMSwgZmFsc2UpOworCX0KKwllbHNlCisJeworCQkqb3V0cHV0MiA9IG1ha2VfZW1wdHlfcmFu Z2UodHlwY2FjaGUpOworCX0KK30KKwogLyogcmFuZ2UgLT4gcmFuZ2UgYWdncmVnYXRlIGZ1bmN0 aW9ucyAqLwogCiBEYXR1bQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggZDA2OGQ2NTMyZS4u NTUzNzc0MDI1NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0zODgzLDYgKzM4ODMsMTIg QEAKICAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9z cmMgPT4gJ1JJX0ZLZXlfbm9hY3Rpb25fdXBkJyB9LAogCisjIFRlbXBvcmFsIGxlZnRvdmVycyB0 cmlnZ2VycworeyBvaWQgPT4gJzgxNTcnLCBkZXNjciA9PiAndGVtcG9yYWwgbGVmdG92ZXJzIHRy aWdnZXIgZnVuY3Rpb24nLAorICBwcm9uYW1lID0+ICdGUF9pbnNlcnRfbGVmdG92ZXJzJywgcHJv dm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMg PT4gJycsCisgIHByb3NyYyA9PiAnRlBfaW5zZXJ0X2xlZnRvdmVycycgfSwKKwogeyBvaWQgPT4g JzE2NjYnLAogICBwcm9uYW1lID0+ICd2YXJiaXRlcScsIHByb2xlYWtwcm9vZiA9PiAndCcsIHBy b3JldHR5cGUgPT4gJ2Jvb2wnLAogICBwcm9hcmd0eXBlcyA9PiAndmFyYml0IHZhcmJpdCcsIHBy b3NyYyA9PiAnYml0ZXEnIH0sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJs ZWNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCmluZGV4IDg5MjM5MjA1 ZDIuLjhiMzVhNDI3YWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21k cy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCkBAIC00MSw2ICs0MSw4 IEBAIGV4dGVybiB2b2lkIEFURXhlY0NoYW5nZU93bmVyKE9pZCByZWxhdGlvbk9pZCwgT2lkIG5l d093bmVySWQsIGJvb2wgcmVjdXJzaW5nLCBMCiBleHRlcm4gdm9pZCBBbHRlclRhYmxlSW50ZXJu YWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsCiAJCQkJCQkJICAgc3RydWN0 IEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiAKK2V4dGVybiB2b2lkIENyZWF0 ZVRlbXBvcmFsUHJpbWFyeUtleVRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIGNvbnN0cmFpbnRP aWQsIE9pZCBpbmRleE9pZCk7CisKIGV4dGVybiBPaWQJQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJU YWJsZU1vdmVBbGxTdG10ICpzdG10KTsKIAogZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJUYWJs ZU5hbWVzcGFjZShBbHRlck9iamVjdFNjaGVtYVN0bXQgKnN0bXQsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2Vy LmgKaW5kZXggOWVmN2Y2ZDc2OC4uZTY3OTJiNzI4MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdHJpZ2dlci5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaApA QCAtNDAsNiArNDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VyRGF0YQogCVR1cGxlc3RvcmVz dGF0ZSAqdGdfb2xkdGFibGU7CiAJVHVwbGVzdG9yZXN0YXRlICp0Z19uZXd0YWJsZTsKIAljb25z dCBCaXRtYXBzZXQgKnRnX3VwZGF0ZWRjb2xzOworCUZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1w b3JhbDsKIH0gVHJpZ2dlckRhdGE7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGVjYTg1 MjgzNWEuLmY2YTMxNTYyYjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0yNiwxMiArMjYsMTQg QEAKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInV0 aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9xdWVyeWVudmlyb25tZW50LmgiCisjaW5j bHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbHRyaWdnZXIuaCIK ICNpbmNsdWRlICJ1dGlscy9zaGFyZWR0dXBsZXN0b3JlLmgiCiAjaW5jbHVkZSAidXRpbHMvc25h cHNob3QuaCIKICNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUgInV0aWxz L3R1cGxlc29ydC5oIgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc3RvcmUuaCIKKyNpbmNsdWRlICJ1 dGlscy90eXBjYWNoZS5oIgogCiBzdHJ1Y3QgUGxhblN0YXRlOwkJCQkvKiBmb3J3YXJkIHJlZmVy ZW5jZXMgaW4gdGhpcyBmaWxlICovCiBzdHJ1Y3QgUGFyYWxsZWxIYXNoSm9pblN0YXRlOwpAQCAt Mzg3LDYgKzM4OSwyMyBAQCB0eXBlZGVmIHN0cnVjdCBPbkNvbmZsaWN0U2V0U3RhdGUKIAlFeHBy U3RhdGUgICpvY19XaGVyZUNsYXVzZTsgLyogc3RhdGUgZm9yIHRoZSBXSEVSRSBjbGF1c2UgKi8K IH0gT25Db25mbGljdFNldFN0YXRlOwogCisvKgorICogRm9yUG9ydGlvbk9mU3RhdGUKKyAqCisg KiBFeGVjdXRvciBzdGF0ZSBvZiBhIEZPUiBQT1JUSU9OIE9GIG9wZXJhdGlvbi4KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgRm9yUG9ydGlvbk9mU3RhdGUKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJY2hh ciAgICpmcF9yYW5nZU5hbWU7CQkvKiB0aGUgY29sdW1uL1BFUklPRCBuYW1lZCBpbiBGT1IgUE9S VElPTiBPRiAqLworCU9pZAkJZnBfcmFuZ2VUeXBlOwkJLyogdGhlIHR5cGUgb2YgdGhlIEZPUiBQ T1JUSU9OIE9GIGV4cHJlc3Npb24gKi8KKwlib29sCWZwX2hhc1BlcmlvZDsJCS8qIHRydWUgaWZm IHRoaXMgaXMgYSBQRVJJT0Qgbm90IGEgcmFuZ2UgKi8KKwljaGFyICAgKmZwX3BlcmlvZFN0YXJ0 TmFtZTsJLyogdGhlIFBFUklPRCdzIHN0YXJ0IGNvbHVtbiAqLworCWNoYXIgICAqZnBfcGVyaW9k RW5kTmFtZTsJLyogdGhlIFBFUklPRCdzIGVuZCBjb2x1bW4gKi8KKwlEYXR1bQlmcF90YXJnZXRS YW5nZTsJCS8qIHRoZSByYW5nZSBmcm9tIEZPUiBQT1JUSU9OIE9GICovCit9IEZvclBvcnRpb25P ZlN0YXRlOworCiAvKgogICogUmVzdWx0UmVsSW5mbwogICoKQEAgLTQ5OCw2ICs1MTcsOSBAQCB0 eXBlZGVmIHN0cnVjdCBSZXN1bHRSZWxJbmZvCiAJLyogT04gQ09ORkxJQ1QgZXZhbHVhdGlvbiBz dGF0ZSAqLwogCU9uQ29uZmxpY3RTZXRTdGF0ZSAqcmlfb25Db25mbGljdDsKIAorCS8qIEZPUiBQ T1JUSU9OIE9GIGV2YWx1YXRpb24gc3RhdGUgKi8KKwlGb3JQb3J0aW9uT2ZTdGF0ZSAqcmlfZm9y UG9ydGlvbk9mOworCiAJLyogcGFydGl0aW9uIGNoZWNrIGV4cHJlc3Npb24gc3RhdGUgKE5VTEwg aWYgbm90IHNldCB1cCB5ZXQpICovCiAJRXhwclN0YXRlICAqcmlfUGFydGl0aW9uQ2hlY2tFeHBy OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvbm9kZXMuaAppbmRleCBmZTZjYzNmZTAyLi4yNzFlNmUwN2VhIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgK QEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBlbnVtIE5vZGVUYWcKIAlUX1Byb2plY3Rpb25JbmZv LAogCVRfSnVua0ZpbHRlciwKIAlUX09uQ29uZmxpY3RTZXRTdGF0ZSwKKwlUX0ZvclBvcnRpb25P ZlN0YXRlLAogCVRfUmVzdWx0UmVsSW5mbywKIAlUX0VTdGF0ZSwKIAlUX1R1cGxlVGFibGVTbG90 LApAQCAtMjAxLDYgKzIwMiw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9Kb2luRXhwciwK IAlUX0Zyb21FeHByLAogCVRfT25Db25mbGljdEV4cHIsCisJVF9Gb3JQb3J0aW9uT2ZFeHByLAog CVRfSW50b0NsYXVzZSwKIAogCS8qCkBAIC00ODAsNiArNDgyLDcgQEAgdHlwZWRlZiBlbnVtIE5v ZGVUYWcKIAlUX09uQ29uZmxpY3RDbGF1c2UsCiAJVF9DVEVTZWFyY2hDbGF1c2UsCiAJVF9DVEVD eWNsZUNsYXVzZSwKKwlUX0ZvclBvcnRpb25PZkNsYXVzZSwKIAlUX0NvbW1vblRhYmxlRXhwciwK IAlUX1JvbGVTcGVjLAogCVRfVHJpZ2dlclRyYW5zaXRpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK aW5kZXggN2QzMDc5MmFiZS4uMTNiYmNkNDg5ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAt MTMwLDYgKzEzMCw4IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5CiAJaW50CQkJcmVzdWx0UmVsYXRp b247IC8qIHJ0YWJsZSBpbmRleCBvZiB0YXJnZXQgcmVsYXRpb24gZm9yCiAJCQkJCQkJCSAqIElO U0VSVC9VUERBVEUvREVMRVRFOyAwIGZvciBTRUxFQ1QgKi8KIAorCUZvclBvcnRpb25PZkV4cHIg KmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlIGZvciBVUERBVEUvREVMRVRF ICovCisKIAlib29sCQloYXNBZ2dzOwkJLyogaGFzIGFnZ3JlZ2F0ZXMgaW4gdGxpc3Qgb3IgaGF2 aW5nUXVhbCAqLwogCWJvb2wJCWhhc1dpbmRvd0Z1bmNzOyAvKiBoYXMgd2luZG93IGZ1bmN0aW9u cyBpbiB0bGlzdCAqLwogCWJvb2wJCWhhc1RhcmdldFNSRnM7CS8qIGhhcyBzZXQtcmV0dXJuaW5n IGZ1bmN0aW9ucyBpbiB0bGlzdCAqLwpAQCAtMTQyMyw2ICsxNDI1LDE5IEBAIHR5cGVkZWYgc3Ry dWN0IFJvd01hcmtDbGF1c2UKIAlib29sCQlwdXNoZWREb3duOwkJLyogcHVzaGVkIGRvd24gZnJv bSBoaWdoZXIgcXVlcnkgbGV2ZWw/ICovCiB9IFJvd01hcmtDbGF1c2U7CiAKKy8qCisgKiBGb3JQ b3J0aW9uT2ZDbGF1c2UKKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBGT1IgUE9SVElPTiBPRiA8cGVy aW9kLW5hbWU+IEZST00gPHQxPiBUTyA8dDI+CisgKi8KK3R5cGVkZWYgc3RydWN0IEZvclBvcnRp b25PZkNsYXVzZQoreworCU5vZGVUYWcJCXR5cGU7CisJY2hhcgkgICAqcmFuZ2VfbmFtZTsKKwlp bnQJCQlyYW5nZV9uYW1lX2xvY2F0aW9uOworCU5vZGUJICAgKnRhcmdldF9zdGFydDsKKwlOb2Rl CSAgICp0YXJnZXRfZW5kOworfSBGb3JQb3J0aW9uT2ZDbGF1c2U7CisKIC8qCiAgKiBXaXRoQ2xh dXNlIC0KICAqCSAgIHJlcHJlc2VudGF0aW9uIG9mIFdJVEggY2xhdXNlCkBAIC0xNjA0LDEyICsx NjE5LDEzIEBAIHR5cGVkZWYgc3RydWN0IEluc2VydFN0bXQKICAqLwogdHlwZWRlZiBzdHJ1Y3Qg RGVsZXRlU3RtdAogewotCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247CQkv KiByZWxhdGlvbiB0byBkZWxldGUgZnJvbSAqLwotCUxpc3QJICAgKnVzaW5nQ2xhdXNlOwkvKiBv cHRpb25hbCB1c2luZyBjbGF1c2UgZm9yIG1vcmUgdGFibGVzICovCi0JTm9kZQkgICAqd2hlcmVD bGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCi0JTGlzdAkgICAqcmV0dXJuaW5nTGlzdDsJLyog bGlzdCBvZiBleHByZXNzaW9ucyB0byByZXR1cm4gKi8KLQlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNl OwkJLyogV0lUSCBjbGF1c2UgKi8KKwlOb2RlVGFnCQkJCXR5cGU7CisJUmFuZ2VWYXIJCSAgICpy ZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIGRlbGV0ZSBmcm9tICovCisJRm9yUG9ydGlvbk9mQ2xh dXNlICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSAqLworCUxpc3QJCQkg ICAqdXNpbmdDbGF1c2U7CS8qIG9wdGlvbmFsIHVzaW5nIGNsYXVzZSBmb3IgbW9yZSB0YWJsZXMg Ki8KKwlOb2RlCQkJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLworCUxpc3QJ CQkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byByZXR1cm4gKi8K KwlXaXRoQ2xhdXNlCQkgICAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCiB9IERlbGV0 ZVN0bXQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE2MTgsMTMgKzE2MzQsMTQg QEAgdHlwZWRlZiBzdHJ1Y3QgRGVsZXRlU3RtdAogICovCiB0eXBlZGVmIHN0cnVjdCBVcGRhdGVT dG10CiB7Ci0JTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHJlbGF0 aW9uIHRvIHVwZGF0ZSAqLwotCUxpc3QJICAgKnRhcmdldExpc3Q7CQkvKiB0aGUgdGFyZ2V0IGxp c3QgKG9mIFJlc1RhcmdldCkgKi8KLQlOb2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNh dGlvbnMgKi8KLQlMaXN0CSAgICpmcm9tQ2xhdXNlOwkJLyogb3B0aW9uYWwgZnJvbSBjbGF1c2Ug Zm9yIG1vcmUgdGFibGVzICovCi0JTGlzdAkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBl eHByZXNzaW9ucyB0byByZXR1cm4gKi8KLQlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJLyogV0lU SCBjbGF1c2UgKi8KKwlOb2RlVGFnCQkJCXR5cGU7CisJUmFuZ2VWYXIJCSAgICpyZWxhdGlvbjsJ CS8qIHJlbGF0aW9uIHRvIHVwZGF0ZSAqLworCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlv bk9mOwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgKi8KKwlMaXN0CQkJICAgKnRhcmdldExpc3Q7 CQkvKiB0aGUgdGFyZ2V0IGxpc3QgKG9mIFJlc1RhcmdldCkgKi8KKwlOb2RlCQkJICAgKndoZXJl Q2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLworCUxpc3QJCQkgICAqZnJvbUNsYXVzZTsJCS8q IG9wdGlvbmFsIGZyb20gY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLworCUxpc3QJCQkgICAqcmV0 dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byByZXR1cm4gKi8KKwlXaXRoQ2xh dXNlCQkgICAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCiB9IFVwZGF0ZVN0bXQ7CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggMWFiZTIz M2RiMi4uNGYxYWVlM2UwMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTE4ODksNiArMTg4OSw3 IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlUGF0aAogCUxpc3QJICAgKnJldHVybmluZ0xp c3RzOyAvKiBwZXItdGFyZ2V0LXRhYmxlIFJFVFVSTklORyB0bGlzdHMgKi8KIAlMaXN0CSAgICpy b3dNYXJrczsJCS8qIFBsYW5Sb3dNYXJrcyAobm9uLWxvY2tpbmcgb25seSkgKi8KIAlPbkNvbmZs aWN0RXhwciAqb25jb25mbGljdDsgLyogT04gQ09ORkxJQ1QgY2xhdXNlLCBvciBOVUxMICovCisJ Rm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mOwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1c2Ug Zm9yIFVQREFURS9ERUxFVEUgKi8KIAlpbnQJCQllcHFQYXJhbTsJCS8qIElEIG9mIFBhcmFtIGZv ciBFdmFsUGxhblF1YWwgcmUtZXZhbCAqLwogfSBNb2RpZnlUYWJsZVBhdGg7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmgKaW5kZXggZWM5YThiMGM4MS4uOTA5MDlkMGYxZiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVz LmgKQEAgLTIzMSw2ICsyMzEsOCBAQCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZQogCUxpc3QJ ICAgKnJvd01hcmtzOwkJLyogUGxhblJvd01hcmtzIChub24tbG9ja2luZyBvbmx5KSAqLwogCWlu dAkJCWVwcVBhcmFtOwkJLyogSUQgb2YgUGFyYW0gZm9yIEV2YWxQbGFuUXVhbCByZS1ldmFsICov CiAJT25Db25mbGljdEFjdGlvbiBvbkNvbmZsaWN0QWN0aW9uOwkvKiBPTiBDT05GTElDVCBhY3Rp b24gKi8KKwkvLyBUT0RPOiBJbnN0ZWFkIG9mIHJlLXVzaW5nIEV4cHIgaGVyZSwgYnJlYWsgaXQg aW50byBwaWVjZXMgbGlrZSBvbkNvbmZsaWN0e0FjdGlvbixTZXQsV2hlcmV9PworCU5vZGUJICAg KmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlIGZvciBVUERBVEUvREVMRVRF ICovCiAJTGlzdAkgICAqYXJiaXRlckluZGV4ZXM7IC8qIExpc3Qgb2YgT04gQ09ORkxJQ1QgYXJi aXRlciBpbmRleCBPSURzICAqLwogCUxpc3QJICAgKm9uQ29uZmxpY3RTZXQ7CS8qIElOU0VSVCBP TiBDT05GTElDVCBETyBVUERBVEUgdGFyZ2V0bGlzdCAqLwogCUxpc3QJICAgKm9uQ29uZmxpY3RD b2xzOyAvKiB0YXJnZXQgY29sdW1uIG51bWJlcnMgZm9yIG9uQ29uZmxpY3RTZXQgKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmgKaW5kZXggN2IxMjU5MDRiNC4uOGIzMDMwOWUwMSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5v ZGVzLmgKQEAgLTE1OTEsNCArMTU5MSwzMSBAQCB0eXBlZGVmIHN0cnVjdCBPbkNvbmZsaWN0RXhw cgogCUxpc3QJICAgKmV4Y2xSZWxUbGlzdDsJLyogdGxpc3Qgb2YgdGhlIEVYQ0xVREVEIHBzZXVk byByZWxhdGlvbiAqLwogfSBPbkNvbmZsaWN0RXhwcjsKIAorLyotLS0tLS0tLS0tCisgKiBGb3JQ b3J0aW9uT2ZFeHByIC0gcmVwcmVzZW50cyBhIEZPUiBQT1JUSU9OIE9GIC4uLiBleHByZXNzaW9u CisgKgorICogVE9ETzogbW9yZSBub3RlcyBhcyBuZWVkZWQKKyAqLS0tLS0tLS0tLQorICovCit0 eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZFeHByCit7CisJTm9kZVRhZwkJdHlwZTsKKwlpbnQJ CQlyYW5nZV9hdHRubzsJCS8qIFJhbmdlIGNvbHVtbiBudW1iZXIgKi8KKwlpbnQJCQlzdGFydF9h dHRubzsJCS8qIFBFUklPRCBzdGFydCBjb2x1bW4gbnVtYmVyICovCisJaW50CQkJZW5kX2F0dG5v OwkJCS8qIFBFUklPRCBlbmQgY29sdW1uIG51bWJlciAqLworCWNoYXIJICAgKnJhbmdlX25hbWU7 CQkJLyogUmFuZ2UgbmFtZSAqLworCWNoYXIJICAgKnBlcmlvZF9zdGFydF9uYW1lOwkvKiBQRVJJ T0Qgc3RhcnQgY29sdW1uIG5hbWUgKi8KKwljaGFyCSAgICpwZXJpb2RfZW5kX25hbWU7CS8qIFBF UklPRCBlbmQgY29sdW1uIG5hbWUgKi8KKwlFeHByCSAgICpyYW5nZTsJCQkJLyogUmFuZ2UgY29s dW1uIG9yIGV4cHJlc3Npb24gKi8KKwkvLyBUT0RPOiBJIGRvIHJlYWxseSB1c2UgYWxsIHRoZXNl IGZpZWxkcz86CisJTm9kZQkgICAqc3RhcnRDb2w7CQkJLyogU3RhcnQgY29sdW1uIGlmIHVzaW5n IGEgUEVSSU9EICovCisJTm9kZQkgICAqZW5kQ29sOwkJCQkvKiBFbmQgY29sdW1uIGlmIHVzaW5n IGEgUEVSSU9EICovCisJTm9kZQkgICAqdGFyZ2V0U3RhcnQ7CQkvKiBTYW1lIHR5cGUgYXMgdGhl IHJhbmdlJ3MgZWxlbWVudHMgKi8KKwlOb2RlCSAgICp0YXJnZXRFbmQ7CQkJLyogU2FtZSB0eXBl IGFzIHRoZSByYW5nZSdzIGVsZW1lbnRzICovCisJTm9kZQkgICAqdGFyZ2V0UmFuZ2U7CQkvKiBB IHJhbmdlIGZyb20gdGFyZ2V0U3RhcnQgdG8gdGFyZ2V0RW5kICovCisJT2lkCQkJcmFuZ2VUeXBl OwkJCS8qIHR5cGUgb2YgdGFyZ2V0UmFuZ2UgKi8KKwlOb2RlCSAgICpvdmVybGFwc0V4cHI7CQkv KiByYW5nZSAmJiB0YXJnZXRSYW5nZSAqLworCUxpc3QJICAgKnJhbmdlU2V0OwkJCS8qIExpc3Qg b2YgVGFyZ2V0RW50cnlzIHRvIHNldCB0aGUgdGltZSBjb2x1bW4ocykgKi8KK30gRm9yUG9ydGlv bk9mRXhwcjsKKwogI2VuZGlmCQkJCQkJCS8qIFBSSU1OT0RFU19IICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9w YXRobm9kZS5oCmluZGV4IGY3MDRkMzk5ODAuLjE5MmUyYTE5MmIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9w YXRobm9kZS5oCkBAIC0yNzUsNyArMjc1LDcgQEAgZXh0ZXJuIE1vZGlmeVRhYmxlUGF0aCAqY3Jl YXRlX21vZGlmeXRhYmxlX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQlMaXN0 ICp1cGRhdGVDb2xub3NMaXN0cywKIAkJCQkJCQkJCQkJCUxpc3QgKndpdGhDaGVja09wdGlvbkxp c3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkJCQkJCQkJCUxpc3QgKnJvd01hcmtzLCBP bkNvbmZsaWN0RXhwciAqb25jb25mbGljdCwKLQkJCQkJCQkJCQkJCWludCBlcHFQYXJhbSk7CisJ CQkJCQkJCQkJCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YsIGludCBlcHFQYXJhbSk7 CiBleHRlcm4gTGltaXRQYXRoICpjcmVhdGVfbGltaXRfcGF0aChQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJUGF0aCAqc3VicGF0aCwKIAkJCQkJCQkJCU5vZGUg KmxpbWl0T2Zmc2V0LCBOb2RlICpsaW1pdENvdW50LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDQzZmM1 NjEwNzUuLjc1NDUwMzhhOWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTMxNiw2ICszMTYsNyBAQCBQ R19LRVlXT1JEKCJwZXJpb2QiLCBQRVJJT0QsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJwbGFjaW5nIiwgUExBQ0lORywgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInBsYW5zIiwgUExBTlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInBvbGljeSIsIFBPTElDWSwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicG9ydGlvbiIsIFBPUlRJT04sIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBvc2l0aW9uIiwgUE9TSVRJT04sIENP TF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwcmVjZWRpbmciLCBQUkVD RURJTkcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInByZWNp c2lvbiIsIFBSRUNJU0lPTiwgQ09MX05BTUVfS0VZV09SRCwgQVNfTEFCRUwpCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX25vZGUuaAppbmRleCBlZTE3OTA4MmNlLi44ZjFmNjI5Yzg2IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV9ub2RlLmgKQEAgLTU1LDYgKzU1LDcgQEAgdHlwZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlF WFBSX0tJTkRfSU5TRVJUX1RBUkdFVCwJLyogSU5TRVJUIHRhcmdldCBsaXN0IGl0ZW0gKi8KIAlF WFBSX0tJTkRfVVBEQVRFX1NPVVJDRSwJLyogVVBEQVRFIGFzc2lnbm1lbnQgc291cmNlIGl0ZW0g Ki8KIAlFWFBSX0tJTkRfVVBEQVRFX1RBUkdFVCwJLyogVVBEQVRFIGFzc2lnbm1lbnQgdGFyZ2V0 IGl0ZW0gKi8KKwlFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT04sCS8qIFVQREFURSBGT1IgUE9SVElP TiBPRiBpdGVtICovCiAJRVhQUl9LSU5EX0dST1VQX0JZLAkJCS8qIEdST1VQIEJZICovCiAJRVhQ Ul9LSU5EX09SREVSX0JZLAkJCS8qIE9SREVSIEJZICovCiAJRVhQUl9LSU5EX0RJU1RJTkNUX09O LAkJLyogRElTVElOQ1QgT04gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3Jhbmdl dHlwZXMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaAppbmRleCAwNGMzMDJjNjE5 Li5kOGMxZjE2NTZhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCkBAIC0xNDcsNSArMTQ3LDggQEAg ZXh0ZXJuIFJhbmdlVHlwZSAqbWFrZV9lbXB0eV9yYW5nZShUeXBlQ2FjaGVFbnRyeSAqdHlwY2Fj aGUpOwogZXh0ZXJuIGJvb2wgcmFuZ2Vfc3BsaXRfaW50ZXJuYWwoVHlwZUNhY2hlRW50cnkgKnR5 cGNhY2hlLCBjb25zdCBSYW5nZVR5cGUgKnIxLAogCQkJCQkJCQkgY29uc3QgUmFuZ2VUeXBlICpy MiwgUmFuZ2VUeXBlICoqb3V0cHV0MSwKIAkJCQkJCQkJIFJhbmdlVHlwZSAqKm91dHB1dDIpOwor ZXh0ZXJuIHZvaWQgcmFuZ2VfbGVmdG92ZXJfaW50ZXJuYWwoVHlwZUNhY2hlRW50cnkgKnR5cGNh Y2hlLCBjb25zdCBSYW5nZVR5cGUgKnIxLAorCQkJCQkJCQkJY29uc3QgUmFuZ2VUeXBlICpyMiwg UmFuZ2VUeXBlICoqb3V0cHV0MSwKKwkJCQkJCQkJCVJhbmdlVHlwZSAqKm91dHB1dDIpOwogCiAj ZW5kaWYJCQkJCQkJLyogUkFOR0VUWVBFU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZm9yX3BvcnRpb25fb2Yub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLmM3MGJhYWQ2ODUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2Zvcl9wb3J0aW9uX29mLm91dApAQCAtMCwwICsxLDY3NCBAQAorLS0gVGVzdHMgZm9yIFVQ REFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0YKKy0tIEZhaWxzIG9uIHRhYmxlcyB3aXRob3V0IGEg dGVtcG9yYWwgUEs6CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGlu dDRyYW5nZSBQUklNQVJZIEtFWSwKKyAgdmFsaWRfYXQgdHNyYW5nZSBOT1QgTlVMTCwKKyAgbmFt ZSB0ZXh0IE5PVCBOVUxMCispOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9 ICdmb28nOworRVJST1I6ICByZWxhdGlvbiAiZm9yX3BvcnRpb25fb2ZfdGVzdCIgZG9lcyBub3Qg aGF2ZSBhIHRlbXBvcmFsIHByaW1hcnkga2V5CitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE1BWFZBTFVFCisgICAgICAgICAgICAgICAgICAgICAg IF4KK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE1BWFZBTFVFOworRVJST1I6ICByZWxhdGlvbiAiZm9y X3BvcnRpb25fb2ZfdGVzdCIgZG9lcyBub3QgaGF2ZSBhIHRlbXBvcmFsIHByaW1hcnkga2V5CitM SU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE1BWFZB TFVFOworICAgICAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29m X3Rlc3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5n ZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgdHNyYW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5P VCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfcGsgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29m X3Rlc3QKK1ZBTFVFUworKCdbMSwyKScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUn KSwKKygnWzEsMiknLCAnWzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDIp JywgJ1syMDE4LTAzLTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdbMiwzKScsICdbMjAxOC0w MS0wMSwyMDE4LTAxLTA1KScsICd0d28nKSwKKygnWzMsNCknLCAnWzIwMTgtMDEtMDEsKScsICd0 aHJlZScpLAorKCdbNCw1KScsICcoLDIwMTgtMDQtMDEpJywgJ2ZvdXInKSwKKygnWzUsNiknLCAn KCwpJywgJ2ZpdmUnKQorOworLS0KKy0tIFVQREFURSB0ZXN0cworLS0KKy0tIFNldHRpbmcgd2l0 aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBNQVhWQUxVRQorU0VU IG5hbWUgPSAnZm9vJworV0hFUkUgaWQgPSAnWzUsNiknOworRVJST1I6ICBjb2x1bW4gb3IgcGVy aW9kICJpbnZhbGlkX2F0IiBvZiByZWxhdGlvbiAiZm9yX3BvcnRpb25fb2ZfdGVzdCIgZG9lcyBu b3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2 LTAxJyBUTyBNQVhWQUxVRQorICAgICAgICAgICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHRo ZSByYW5nZSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE1BWFZBTFVFCitTRVQgdmFsaWRfYXQgPSAn WzE5OTAtMDEtMDEsMTk5OS0wMS0wMSknCitXSEVSRSBpZCA9ICdbNSw2KSc7CitFUlJPUjogIG11 bHRpcGxlIGFzc2lnbm1lbnRzIHRvIHNhbWUgY29sdW1uICJ2YWxpZF9hdCIKKy0tIFNldHRpbmcg d2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEt MDEnCitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsNCknOworRVJST1I6ICBy YW5nZSBsb3dlciBib3VuZCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byByYW5nZSB1cHBl ciBib3VuZAorLS0gU2V0dGluZyB3aXRoIE1BWFZBTFVFIGxvd2VyIGJvdW5kIGZhaWxzCitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBNQVhW QUxVRSBUTyBOVUxMCitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsNCknOworRVJS T1I6ICBNQVhWQUxVRSBjYW4gb25seSBiZSB1c2VkIGZvciB0aGUgdXBwZXIgYm91bmQKKy0tIFNl dHRpbmcgd2l0aCBNSU5WQUxVRSB1cHBlciBib3VuZCBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBNSU5WQUxVRQor U0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDQpJzsKK0VSUk9SOiAgTUlOVkFMVUUg Y2FuIG9ubHkgYmUgdXNlZCBmb3IgdGhlIGxvd2VyIGJvdW5kCistLSBTZXR0aW5nIHdpdGggYSBz dWJxdWVyeSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gKFNFTEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LTA2LTAxJworU0VU IG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDQpJzsKK0VSUk9SOiAgY2Fubm90IHVzZSBz dWJxdWVyeSBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uCitMSU5FIDI6IEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gKFNFTEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LS4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgd2l0aCBhIGNv bHVtbiBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gbG93ZXIodmFsaWRfYXQpIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICdub3Bl JworV0hFUkUgaWQgPSAnWzMsNCknOworRVJST1I6ICBjYW5ub3QgdXNlIGNvbHVtbiByZWZlcmVu Y2UgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbgorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0KSBUTyBNQVhWQUxVRQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBz IGVxdWFsIGRvZXMgbm90aGluZworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAxJworU0VUIG5h bWUgPSAndGhyZWVeMCcKK1dIRVJFIGlkID0gJ1szLDQpJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRl L29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8g TUFYVkFMVUUKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitXSEVSRSBpZCA9ICdbMyw0KSc7CistLSBV cGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IE1JTlZBTFVFIFRPICcyMDE4LTAzLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMicKK1dIRVJFIGlk ID0gJ1szLDQpJzsKKy0tIFVwZGF0aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhbiBv cGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIE1JTlZBTFVFIFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAn Zm91cl4xJworV0hFUkUgaWQgPSAnWzQsNSknOworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUg cG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gTUFYVkFM VUUKK1NFVCBuYW1lID0gJ2ZvdXJeMicKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKy0tIFVwZGF0aW5n IGEgZmluaXRlL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4gZXhhY3QgZml0CitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScg VE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjMnCitXSEVSRSBpZCA9ICdbNCw1KSc7 CistLSBVcGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBNSU5WQUxVRSBUTyBNQVhWQUxVRQorU0VU IG5hbWUgPSAndHdvXjInCitXSEVSRSBpZCA9ICdbMiwzKSc7CistLSBVcGRhdGluZyBhbiBvcGVu L29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAxJyBU TyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMicKK1dIRVJFIGlkID0gJ1s1LDYpJzsK Ky0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4gd2l0aCBzZXBhcmF0ZSBwcm90cnVkaW5nIHNw YW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMjAtMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjMnCitX SEVSRSBpZCA9ICdbNSw2KSc7CistLSBVcGRhdGluZyBtdWx0aXBsZSBlbmNsb3NlZCBzcGFucwor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g TlVMTCBUTyBOVUxMCitTRVQgbmFtZSA9ICdvbmVeMicKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKy0t IFVwZGF0aW5nIHdpdGggYSBzaGlmdC9yZWR1Y2UgY29uZmxpY3QKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBB VCBUSU1FIFpPTkUgSU5URVJWQUwgJzEnIEhPVVIgVE8gTUlOVVRFCisgIFRPICcyMDE5LTAxLTAx JworU0VUIG5hbWUgPSAnb25lXjMnCitXSEVSRSBpZCA9ICdbMSwyKSc7CitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0w MScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSCisgIFRPICcyMDE5LTAxLTAxJworU0VU IG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwyKSc7CitFUlJPUjogIHN5bnRheCBlcnJv ciBhdCBvciBuZWFyICInMjAxOS0wMS0wMSciCitMSU5FIDQ6ICAgVE8gJzIwMTktMDEtMDEnCisg ICAgICAgICAgICAgXgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzIn IEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9 ICdbMSwyKSc7CistLSBVcGRhdGluZyB0aGUgbm9uLXJhbmdlIHBhcnQgb2YgdGhlIFBLOgorVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTgtMDItMTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw3KScKK1dIRVJFIGlkID0gJ1sxLDIpJzsK Ky0tIFVQREFURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NF VCBuYW1lID0gbmFtZSB8fCAnKic7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Qg T1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgbmFtZSAgIAorLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTYXQgRmViIDAz IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV4yCisgWzEsMikgfCBbIlNhdCBGZWIgMDMgMDA6MDA6MDAg MjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29e MgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAw OjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4 IiwiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFszLDQpIHwgWyJGcmkgSnVu IDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IHRocmVlXjEK KyBbMyw0KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIiwpICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCB0aHJlZV4xKgorIFs0LDUpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3 IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFu IDAxIDAwOjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMwor IFs0LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAw IDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3Iikg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAw MDowMDowMCAyMDE3IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2 KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIikgfCBmaXZlCisgWzUsNikgfCBb IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIsKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg Zml2ZSoKKyBbNiw3KSB8IFsiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAw ODowMTowMCAyMDE4IikgfCBvbmVeMgorIFs2LDcpIHwgWyJUaHUgTWFyIDAxIDA4OjAxOjAwIDIw MTgiLCJUaHUgTWFyIDAxIDEwOjAwOjAwIDIwMTgiKSB8IG9uZV4zCisgWzYsNykgfCBbIlRodSBN YXIgMDEgMTA6MDA6MDAgMjAxOCIsIlNhdCBNYXIgMDMgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjQK KyBbNiw3KSB8IFsiU2F0IE1hciAwMyAwMDowMDowMCAyMDE4IiwiV2VkIEFwciAwNCAwMDowMDow MCAyMDE4IikgfCBvbmVeNAorKDIwIHJvd3MpCisKKy0tCistLSBERUxFVEUgdGVzdHMKKy0tCist LSBEZWxldGluZyB3aXRoIGEgbWlzc2luZyBjb2x1bW4gZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0w MScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzUsNiknOworRVJST1I6ICBjb2x1bW4gb3IgcGVyaW9k ICJpbnZhbGlkX2F0IiBvZiByZWxhdGlvbiAiZm9yX3BvcnRpb25fb2ZfdGVzdCIgZG9lcyBub3Qg ZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAx JyBUTyBOVUxMCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIERlbGV0aW5nIHdpdGggdGlt ZXN0YW1wcyByZXZlcnNlZCBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEn CitXSEVSRSBpZCA9ICdbMyw0KSc7CitFUlJPUjogIHJhbmdlIGxvd2VyIGJvdW5kIG11c3QgYmUg bGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJhbmdlIHVwcGVyIGJvdW5kCistLSBEZWxldGluZyB3aXRo IHRpbWVzdGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAx OC0wNC0wMScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9zZWQv Y2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMjAtMDYtMDEnCitXSEVSRSBp ZCA9ICdbNSw2KSc7CistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL29wZW4gdGFyZ2V0CitERUxF VEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbMyw0KSc7CistLSBEZWxldGluZyB3 aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAyLTA4JworV0hF UkUgaWQgPSAnWzEsMiknOworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL29wZW4gdGFyZ2V0CitE RUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NIE5VTEwgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzYsNyknOworLS0gREVMRVRFIHdpdGggbm8g V0hFUkUgY2xhdXNlCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDI1LTAxLTAxJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFt ZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBbIlRodSBGZWIgMDggMDA6MDA6MDAg MjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29e MgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAw OjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4 IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFs0LDUpIHwgKCwiU3VuIEph biAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvdXJeMQor IFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAwOjAwOjAw IDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJT dW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwgKCwiU3VuIEphbiAw MSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpdmUKKyBbNSw2 KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1 biAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEp1biAwMSAwMDow MDowMCAyMDIwIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTEgcm93cykK KworLS0gVVBEQVRFIC4uLiBSRVRVUk5JTkcgcmV0dXJucyBvbmx5IHRoZSB1cGRhdGVkIHZhbHVl cyAobm90IHRoZSBpbnNlcnRlZCBzaWRlIHZhbHVlcykKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0w Mi0xNScKK1NFVCBuYW1lID0gJ3RocmVlXjMnCitXSEVSRSBpZCA9ICdbMyw0KScKK1JFVFVSTklO RyAqOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAg ICAgICAgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMyw0KSB8IFsi VGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCB0 aHJlZV4zCisoMSByb3cpCisKKy0tIHRlc3QgdGhhdCB3ZSBydW4gdHJpZ2dlcnMgb24gdGhlIFVQ REFURS9ERUxFVEVkIHJvdyBhbmQgdGhlIElOU0VSVGVkIHJvd3MKK0NSRUFURSBGVU5DVElPTiBm b3JfcG9ydGlvbl9vZl90cmlnZ2VyKCkKK1JFVFVSTlMgdHJpZ2dlcgorQVMKKyQkCitCRUdJTgor ICBSQUlTRSBOT1RJQ0UgJyUgJSAlIG9mICUnLCBUR19XSEVOLCBUR19PUCwgTkVXLnZhbGlkX2F0 LCBPTEQudmFsaWRfYXQ7CisgIElGIFRHX09QID0gJ0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBP TEQ7CisgIEVMU0UKKyAgICBSRVRVUk4gTkVXOworICBFTkQgSUY7CitFTkQ7CiskJAorTEFOR1VB R0UgcGxwZ3NxbDsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfaW5z ZXJ0CisgIEJFRk9SRSBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBS T1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUg VFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfaW5zZXJ0CisgIEFGVEVSIElOU0VSVCBP TiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9O IGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlv bl9vZl9iZWZvcmVfdXBkYXRlCisgIEJFRk9SRSBVUERBVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVz dAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmln Z2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfdXBkYXRlCisg IEFGVEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBF WEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VS IHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfZGVsZXRlCisgIEJFRk9SRSBERUxFVEUgT04gZm9y X3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3Jf cG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2Zf YWZ0ZXJfZGVsZXRlCisgIEFGVEVSIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZP UiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeNCcKK1dIRVJF IGlkID0gJ1s1LDYpJzsKK05PVElDRTogIEJFRk9SRSBVUERBVEUgWyJGcmkgSmFuIDAxIDAwOjAw OjAwIDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiKSBvZiBbIk1vbiBKdW4gMDEgMDA6 MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitOT1RJQ0U6ICBCRUZPUkUg SU5TRVJUIFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAy MDIxIikgb2YgPE5VTEw+CitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDow MDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6 ICBBRlRFUiBJTlNFUlQgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAw OjAwOjAwIDIwMjEiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIlNhdCBKYW4g MDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgor Tk9USUNFOiAgQUZURVIgVVBEQVRFIFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIiwiU2F0IEph biAwMSAwMDowMDowMCAyMDIyIikgb2YgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjUiKQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0wMScgVE8gJzIwMjQtMDEtMDEn CitXSEVSRSBpZCA9ICdbNSw2KSc7CitOT1RJQ0U6ICBCRUZPUkUgREVMRVRFIDxOVUxMPiBvZiBb IlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitO T1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiU3VuIEph biAwMSAwMDowMDowMCAyMDIzIikgb2YgPE5VTEw+CitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsi TW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2Yg PE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIi LCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElO U0VSVCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAyNCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy NSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIgREVMRVRFIDxOVUxMPiBvZiBbIlNhdCBKYW4g MDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitTRUxFQ1QgKiBG Uk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFsiVGh1IEZlYiAwOCAwMDow MDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmVeMgorIFsyLDMpIHwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgiKSB8 IHR3b14yCisgWzMsNCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEg MDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAw IDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjMKKyBbMyw0KSB8IFsi VGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IikgfCB0 aHJlZV4yCisgWzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEg MDA6MDA6MDAgMjAxOCIpIHwgdGhyZWUKKyBbNCw1KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAg MjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmb3VyXjEKKyBbNCw1KSB8IFsiU3Vu IEphbiAwMSAwMDowMDowMCAyMDE3IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikgfCBmb3Vy XjMKKyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDow MDowMCAyMDE4IikgfCBmb3VyXjIKKyBbNSw2KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAx NyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaXZlCisgWzUsNikgfCBbIlN1biBKYW4g MDEgMDA6MDA6MDAgMjAxNyIsIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisg WzUsNikgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKdW4gMDEgMDA6MDA6MDAg MjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgZml2ZQorIFs1LDYpIHwgWyJGcmkgSmFuIDAxIDAw OjAwOjAwIDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiKSB8IGZpdmVeNAorIFs1LDYp IHwgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMi KSB8IGZpdmUKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTYgcm93cykKKworLS0KKy0tIE5vdyByZS1ydW4g dGhlIHNhbWUgdGVzdHMgYnV0IHdpdGggYSBQRVJJT0QgaW5zdGVhZCBvZiBhIHJhbmdlOgorLS0K K0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKKy0tIEZhaWxzIG9uIHRhYmxlcyB3aXRo b3V0IGEgdGVtcG9yYWwgUEs6CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisg IGlkIGludDRyYW5nZSBQUklNQVJZIEtFWSwKKyAgdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisgIHZh bGlkX3RpbCB0aW1lc3RhbXAsCisgIFBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZh bGlkX3RpbCksCisgIG5hbWUgdGV4dCBOT1QgTlVMTAorKTsKK1VQREFURSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBNQVhW QUxVRQorU0VUIG5hbWUgPSAnZm9vJzsKK0VSUk9SOiAgcmVsYXRpb24gImZvcl9wb3J0aW9uX29m X3Rlc3QiIGRvZXMgbm90IGhhdmUgYSB0ZW1wb3JhbCBwcmltYXJ5IGtleQorTElORSAyOiBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBNQVhWQUxVRQorICAgICAg ICAgICAgICAgICAgICAgICBeCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBNQVhWQUxVRTsKK0VSUk9S OiAgcmVsYXRpb24gImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMgbm90IGhhdmUgYSB0ZW1wb3Jh bCBwcmltYXJ5IGtleQorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTAxLTE1JyBUTyBNQVhWQUxVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJM RSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Qg KAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2Zyb20gdGltZXN0YW1wLAorICB2 YWxpZF90aWwgdGltZXN0YW1wLAorICBQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2 YWxpZF90aWwpLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlv bl9vZl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOwor SU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdAorVkFMVUVTCisoJ1sxLDIpJywgJzIwMTgt MDEtMDInLCAnMjAxOC0wMi0wMycsICdvbmUnKSwKKygnWzEsMiknLCAnMjAxOC0wMi0wMycsICcy MDE4LTAzLTAzJywgJ29uZScpLAorKCdbMSwyKScsICcyMDE4LTAzLTAzJywgJzIwMTgtMDQtMDQn LCAnb25lJyksCisoJ1syLDMpJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScsICd0d28nKSwK KygnWzMsNCknLCAnMjAxOC0wMS0wMScsIG51bGwsICd0aHJlZScpLAorKCdbNCw1KScsIG51bGws ICcyMDE4LTA0LTAxJywgJ2ZvdXInKSwKKygnWzUsNiknLCBudWxsLCBudWxsLCAnZml2ZScpCis7 CistLQorLS0gVVBEQVRFIHRlc3RzCistLQorLS0gU2V0dGluZyB3aXRoIGEgbWlzc2luZyBjb2x1 bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiBpbnZh bGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICdmb28nCitX SEVSRSBpZCA9ICdbNSw2KSc7CitFUlJPUjogIGNvbHVtbiBvciBwZXJpb2QgImludmFsaWRfYXQi IG9mIHJlbGF0aW9uICJmb3JfcG9ydGlvbl9vZl90ZXN0IiBkb2VzIG5vdCBleGlzdAorTElORSAy OiBGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE1BWFZBTFVF CisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgdGhlIHN0YXJ0IGNvbHVtbiBm YWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTgtMDYtMDEnIFRPIE1BWFZBTFVFCitTRVQgdmFsaWRfZnJvbSA9ICcxOTkwLTAx LTAxJworV0hFUkUgaWQgPSAnWzUsNiknOworRVJST1I6ICBtdWx0aXBsZSBhc3NpZ25tZW50cyB0 byBzYW1lIGNvbHVtbiAidmFsaWRfZnJvbSIKKy0tIFNldHRpbmcgdGhlIGVuZCBjb2x1bW4gZmFp bHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTA2LTAxJyBUTyBNQVhWQUxVRQorU0VUIHZhbGlkX3RpbCA9ICcxOTk5LTAxLTAx JworV0hFUkUgaWQgPSAnWzUsNiknOworRVJST1I6ICBtdWx0aXBsZSBhc3NpZ25tZW50cyB0byBz YW1lIGNvbHVtbiAidmFsaWRfdGlsIgorLS0gU2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJz ZWQgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1NFVCBuYW1lID0gJ3RocmVl XjEnCitXSEVSRSBpZCA9ICdbMyw0KSc7CitFUlJPUjogIHJhbmdlIGxvd2VyIGJvdW5kIG11c3Qg YmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJhbmdlIHVwcGVyIGJvdW5kCistLSBTZXR0aW5nIHdp dGggYSBzdWJxdWVyeSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gKFNFTEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LTA2LTAx JworU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDQpJzsKK0VSUk9SOiAgY2Fubm90 IHVzZSBzdWJxdWVyeSBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uCitMSU5FIDI6IEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gKFNFTEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LS4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgd2l0 aCBhIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gdmFsaWRfZnJvbSBUTyBNQVhWQUxVRQorU0VUIG5hbWUgPSAnbm9w ZScKK1dIRVJFIGlkID0gJ1szLDQpJzsKK0VSUk9SOiAgY2Fubm90IHVzZSBjb2x1bW4gcmVmZXJl bmNlIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24KK0xJTkUgMjogRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSB2YWxpZF9mcm9tIFRPIE1BWFZBTFVFCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gU2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgZXF1YWwgZG9l cyBub3RoaW5nCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEnCitTRVQgbmFtZSA9ICd0aHJl ZV4wJworV0hFUkUgaWQgPSAnWzMsNCknOworLS0gVXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0 aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBNQVhWQUxVRQor U0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKy0tIFVwZGF0aW5nIGEg ZmluaXRlL29wZW4gcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTUlOVkFMVUUg VE8gJzIwMTgtMDMtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4yJworV0hFUkUgaWQgPSAnWzMsNCkn OworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRl IHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gTUlOVkFMVUUgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjEnCitX SEVSRSBpZCA9ICdbNCw1KSc7CistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdp dGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyBNQVhWQUxVRQorU0VUIG5h bWUgPSAnZm91cl4yJworV0hFUkUgaWQgPSAnWzQsNSknOworLS0gVXBkYXRpbmcgYSBmaW5pdGUv ZmluaXRlIHBvcnRpb24gd2l0aCBhbiBleGFjdCBmaXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAxOC0w Mi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJeMycKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKy0tIFVwZGF0 aW5nIGFuIGVuY2xvc2VkIHNwYW4KK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NIE1JTlZBTFVFIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICd0 d29eMicKK1dIRVJFIGlkID0gJ1syLDMpJzsKKy0tIFVwZGF0aW5nIGFuIG9wZW4vb3BlbiBwb3J0 aW9uIHdpdGggYSBmaW5pdGUvZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDEnIFRPICcyMDE5LTAx LTAxJworU0VUIG5hbWUgPSAnZml2ZV4yJworV0hFUkUgaWQgPSAnWzUsNiknOworLS0gVXBkYXRp bmcgYW4gZW5jbG9zZWQgc3BhbiB3aXRoIHNlcGFyYXRlIHByb3RydWRpbmcgc3BhbnMKK1VQREFU RSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMycKK1dIRVJFIGlkID0g J1s1LDYpJzsKKy0tIFVwZGF0aW5nIG11bHRpcGxlIGVuY2xvc2VkIHNwYW5zCitVUERBVEUgZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5V TEwKK1NFVCBuYW1lID0gJ29uZV4yJworV0hFUkUgaWQgPSAnWzEsMiknOworLS0gVXBkYXRpbmcg d2l0aCBhIHNoaWZ0L3JlZHVjZSBjb25mbGljdAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9O RSBJTlRFUlZBTCAnMScgSE9VUiBUTyBNSU5VVEUKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFt ZSA9ICdvbmVeMycKK1dIRVJFIGlkID0gJ1sxLDIpJzsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1F IFpPTkUgSU5URVJWQUwgJzInIEhPVVIKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdv bmVeNCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5l YXIgIicyMDE5LTAxLTAxJyIKK0xJTkUgNDogICBUTyAnMjAxOS0wMS0wMScKKyAgICAgICAgICAg ICBeCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQK KyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMicgSE9VUikKKyAg VE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeNCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsK Ky0tIFVwZGF0aW5nIHRoZSBub24tcmFuZ2UgcGFydCBvZiB0aGUgUEs6CitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0xNScg VE8gTlVMTAorU0VUIGlkID0gJ1s2LDcpJworV0hFUkUgaWQgPSAnWzEsMiknOworLS0gVVBEQVRF IHdpdGggbm8gV0hFUkUgY2xhdXNlCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAzMC0wMS0wMScgVE8gTlVMTAorU0VUIG5hbWUgPSBu YW1lIHx8ICcqJzsKKy0tIFRPRE86IFVQREFURSB3aXRoIGdlbmVyYXRlZCBjb2x1bW5zIHRvbwor U0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9mcm9t IE5VTExTIEZJUlNULCB2YWxpZF90aWw7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAg ICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCAgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIFsxLDIpIHwgVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IHwgU2F0IEZlYiAwMyAwMDowMDow MCAyMDE4IHwgb25lXjIKKyBbMSwyKSB8IFNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCB8IFRodSBG ZWIgMTUgMDA6MDA6MDAgMjAxOCB8IG9uZV4yCisgWzIsMykgfCBNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTggfCBGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTggfCB0d29eMgorIFszLDQpIHwgTW9uIEph biAwMSAwMDowMDowMCAyMDE4IHwgVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IHwgdGhyZWVeMgor IFszLDQpIHwgVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IHwgRnJpIEp1biAwMSAwMDowMDowMCAy MDE4IHwgdGhyZWUKKyBbMyw0KSB8IEZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCB8IFR1ZSBKYW4g MDEgMDA6MDA6MDAgMjAzMCB8IHRocmVlXjEKKyBbMyw0KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAzMCB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRocmVlXjEqCisgWzQsNSkgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTcgfCBmb3VyXjEK KyBbNCw1KSB8IFN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyB8IFRodSBGZWIgMDEgMDA6MDA6MDAg MjAxOCB8IGZvdXJeMworIFs0LDUpIHwgVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IHwgU3VuIEFw ciAwMSAwMDowMDowMCAyMDE4IHwgZm91cl4yCisgWzUsNikgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTcgfCBmaXZlCisgWzUsNikgfCBTdW4gSmFu IDAxIDAwOjAwOjAwIDIwMTcgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBmaXZlXjMKKyBb NSw2KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSB8IGZpdmVeMworIFs1LDYpIHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIHwgZml2ZV4zCisgWzUsNikgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAgfCBmaXZlCisgWzUsNikgfCBUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMzAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaXZlKgorIFs2LDcp IHwgVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IHwgVGh1IE1hciAwMSAwODowMTowMCAyMDE4IHwg b25lXjIKKyBbNiw3KSB8IFRodSBNYXIgMDEgMDg6MDE6MDAgMjAxOCB8IFRodSBNYXIgMDEgMTA6 MDA6MDAgMjAxOCB8IG9uZV4zCisgWzYsNykgfCBUaHUgTWFyIDAxIDEwOjAwOjAwIDIwMTggfCBT YXQgTWFyIDAzIDAwOjAwOjAwIDIwMTggfCBvbmVeNAorIFs2LDcpIHwgU2F0IE1hciAwMyAwMDow MDowMCAyMDE4IHwgV2VkIEFwciAwNCAwMDowMDowMCAyMDE4IHwgb25lXjQKKygyMCByb3dzKQor CistLQorLS0gREVMRVRFIHRlc3RzCistLQorLS0gRGVsZXRpbmcgd2l0aCBhIG1pc3NpbmcgY29s dW1uIGZhaWxzCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1s1LDYp JzsKK0VSUk9SOiAgY29sdW1uIG9yIHBlcmlvZCAiaW52YWxpZF9hdCIgb2YgcmVsYXRpb24gImZv cl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMgbm90IGV4aXN0CitMSU5FIDI6IEZPUiBQT1JUSU9OIE9G IGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKK0RFTEVU RSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDYtMDEnIFRPICcyMDE4LTAxLTAxJworV0hFUkUgaWQgPSAnWzMsNCknOworRVJST1I6 ICByYW5nZSBsb3dlciBib3VuZCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byByYW5nZSB1 cHBlciBib3VuZAorLS0gRGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGlu ZworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEnCitXSEVSRSBpZCA9ICdbMyw0KSc7 CistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL2Nsb3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPICcyMDIwLTA2LTAxJworV0hFUkUgaWQgPSAnWzUsNiknOworLS0gRGVsZXRpbmcgd2l0 aCBhIGNsb3NlZC9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gTlVMTAorV0hFUkUg aWQgPSAnWzMsNCknOworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL2Nsb3NlZCB0YXJnZXQKK0RF TEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gTlVMTCBUTyAnMjAxOC0wMi0wOCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKy0tIERlbGV0aW5n IHdpdGggYW4gb3Blbi9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1dIRVJFIGlkID0g J1s2LDcpJzsKKy0tIERFTEVURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorREVMRVRFIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyNS0wMS0w MScgVE8gTlVMTDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBp ZCwgdmFsaWRfZnJvbSBOVUxMUyBGSVJTVCwgdmFsaWRfdGlsOworICBpZCAgIHwgICAgICAgIHZh bGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgIG5hbWUgICAKKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tCisgWzEsMikgfCBUaHUgRmViIDA4IDAwOjAwOjAwIDIwMTggfCBUaHUgRmVi IDE1IDAwOjAwOjAwIDIwMTggfCBvbmVeMgorIFsyLDMpIHwgTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IHwgRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IHwgdHdvXjIKKyBbMyw0KSB8IE1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCB8IFRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCB8IHRocmVlXjIKKyBb Myw0KSB8IFRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCB8IFN1biBBcHIgMDEgMDA6MDA6MDAgMjAx OCB8IHRocmVlCisgWzQsNSkgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdW4gSmFuIDAx IDAwOjAwOjAwIDIwMTcgfCBmb3VyXjEKKyBbNCw1KSB8IFN1biBKYW4gMDEgMDA6MDA6MDAgMjAx NyB8IFRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCB8IGZvdXJeMworIFs0LDUpIHwgVGh1IEZlYiAw MSAwMDowMDowMCAyMDE4IHwgU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IHwgZm91cl4yCisgWzUs NikgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTcg fCBmaXZlCisgWzUsNikgfCBTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTcgfCBNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTggfCBmaXZlXjMKKyBbNSw2KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8 IEZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCB8IGZpdmVeMworIFs1LDYpIHwgTW9uIEp1biAwMSAw MDowMDowMCAyMDIwIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IHwgZml2ZQorKDExIHJvd3Mp CisKKy0tIFVQREFURSAuLi4gUkVUVVJOSU5HIHJldHVybnMgb25seSB0aGUgdXBkYXRlZCB2YWx1 ZXMgKG5vdCB0aGUgaW5zZXJ0ZWQgc2lkZSB2YWx1ZXMpCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0wMScgVE8gJzIwMTgt MDItMTUnCitTRVQgbmFtZSA9ICd0aHJlZV4zJworV0hFUkUgaWQgPSAnWzMsNCknCitSRVRVUk5J TkcgKjsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90 aWwgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIFszLDQpIHwgVGh1IEZlYiAw MSAwMDowMDowMCAyMDE4IHwgVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IHwgdGhyZWVeMworKDEg cm93KQorCistLSB0ZXN0IHRoYXQgd2UgcnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUvREVMRVRF ZCByb3cgYW5kIHRoZSBJTlNFUlRlZCByb3dzCitDUkVBVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25f b2ZfdHJpZ2dlcjIoKQorUkVUVVJOUyB0cmlnZ2VyCitBUworJCQKK0JFR0lOCisgIFJBSVNFIE5P VElDRSAnJSAlIFslLCUpIG9mIFslLCUpJywgVEdfV0hFTiwgVEdfT1AsIE5FVy52YWxpZF9mcm9t LCBORVcudmFsaWRfdGlsLCBPTEQudmFsaWRfZnJvbSwgT0xELnZhbGlkX3RpbDsKKyAgSUYgVEdf T1AgPSAnREVMRVRFJyBUSEVOCisgICAgUkVUVVJOIE9MRDsKKyAgRUxTRQorICAgIFJFVFVSTiBO RVc7CisgIEVORCBJRjsKK0VORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIFRSSUdH RVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV9pbnNlcnQKKyAgQkVGT1JFIElOU0VSVCBPTiBm b3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZv cl9wb3J0aW9uX29mX3RyaWdnZXIyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25f b2ZfYWZ0ZXJfaW5zZXJ0CisgIEFGVEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0Cisg IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIy KCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlX3VwZGF0ZQorICBC RUZPUkUgVVBEQVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVY RUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcjIoKTsKK0NSRUFURSBUUklHR0VS IHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl91cGRhdGUKKyAgQUZURVIgVVBEQVRFIE9OIGZvcl9w b3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3Bv cnRpb25fb2ZfdHJpZ2dlcjIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9i ZWZvcmVfZGVsZXRlCisgIEJFRk9SRSBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBG T1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyMigp OworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX2RlbGV0ZQorICBBRlRF UiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VU RSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyMigpOworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjEtMDEtMDEnIFRPICcy MDIyLTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV40JworV0hFUkUgaWQgPSAnWzUsNiknOworTk9U SUNFOiAgQkVGT1JFIFVQREFURSBbRnJpIEphbiAwMSAwMDowMDowMCAyMDIxLFNhdCBKYW4gMDEg MDA6MDA6MDAgMjAyMikgb2YgW01vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCxXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjUpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFtNb24gSnVuIDAxIDAwOjAwOjAw IDIwMjAsRnJpIEphbiAwMSAwMDowMDowMCAyMDIxKSBvZiBbPE5VTEw+LDxOVUxMPikKK05PVElD RTogIEJFRk9SRSBJTlNFUlQgW1NhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMixXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjUpIG9mIFs8TlVMTD4sPE5VTEw+KQorTk9USUNFOiAgQUZURVIgSU5TRVJUIFtN b24gSnVuIDAxIDAwOjAwOjAwIDIwMjAsRnJpIEphbiAwMSAwMDowMDowMCAyMDIxKSBvZiBbPE5V TEw+LDxOVUxMPikKK05PVElDRTogIEFGVEVSIElOU0VSVCBbU2F0IEphbiAwMSAwMDowMDowMCAy MDIyLFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSkgb2YgWzxOVUxMPiw8TlVMTD4pCitOT1RJQ0U6 ICBBRlRFUiBVUERBVEUgW0ZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSxTYXQgSmFuIDAxIDAwOjAw OjAwIDIwMjIpIG9mIFtNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAsV2VkIEphbiAwMSAwMDowMDow MCAyMDI1KQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0wMScgVE8gJzIwMjQtMDEtMDEnCitXSEVSRSBpZCA9ICdb NSw2KSc7CitOT1RJQ0U6ICBCRUZPUkUgREVMRVRFIFs8TlVMTD4sPE5VTEw+KSBvZiBbU2F0IEph biAwMSAwMDowMDowMCAyMDIyLFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSkKK05PVElDRTogIEJF Rk9SRSBJTlNFUlQgW1NhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMixTdW4gSmFuIDAxIDAwOjAwOjAw IDIwMjMpIG9mIFs8TlVMTD4sPE5VTEw+KQorTk9USUNFOiAgQkVGT1JFIElOU0VSVCBbTW9uIEph biAwMSAwMDowMDowMCAyMDI0LFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSkgb2YgWzxOVUxMPiw8 TlVMTD4pCitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgW1NhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMixT dW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMpIG9mIFs8TlVMTD4sPE5VTEw+KQorTk9USUNFOiAgQUZU RVIgSU5TRVJUIFtNb24gSmFuIDAxIDAwOjAwOjAwIDIwMjQsV2VkIEphbiAwMSAwMDowMDowMCAy MDI1KSBvZiBbPE5VTEw+LDxOVUxMPikKK05PVElDRTogIEFGVEVSIERFTEVURSBbPE5VTEw+LDxO VUxMPikgb2YgW1NhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMixXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjUpCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlk X2Zyb20gTlVMTFMgRklSU1QsIHZhbGlkX3RpbDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9mcm9t ICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLQorIFsxLDIpIHwgVGh1IEZlYiAwOCAwMDowMDowMCAyMDE4IHwgVGh1IEZlYiAxNSAwMDow MDowMCAyMDE4IHwgb25lXjIKKyBbMiwzKSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IEZy aSBKYW4gMDUgMDA6MDA6MDAgMjAxOCB8IHR3b14yCisgWzMsNCkgfCBNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTggfCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTggfCB0aHJlZV4yCisgWzMsNCkgfCBU aHUgRmViIDAxIDAwOjAwOjAwIDIwMTggfCBUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTggfCB0aHJl ZV4zCisgWzMsNCkgfCBUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTggfCBUaHUgTWFyIDAxIDAwOjAw OjAwIDIwMTggfCB0aHJlZV4yCisgWzMsNCkgfCBUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTggfCBT dW4gQXByIDAxIDAwOjAwOjAwIDIwMTggfCB0aHJlZQorIFs0LDUpIHwgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IHwgZm91cl4xCisgWzQsNSkgfCBT dW4gSmFuIDAxIDAwOjAwOjAwIDIwMTcgfCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTggfCBmb3Vy XjMKKyBbNCw1KSB8IFRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCB8IFN1biBBcHIgMDEgMDA6MDA6 MDAgMjAxOCB8IGZvdXJeMgorIFs1LDYpIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3Vu IEphbiAwMSAwMDowMDowMCAyMDE3IHwgZml2ZQorIFs1LDYpIHwgU3VuIEphbiAwMSAwMDowMDow MCAyMDE3IHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgZml2ZV4zCisgWzUsNikgfCBNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTggfCBGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTggfCBmaXZlXjMK KyBbNSw2KSB8IE1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSB8IGZpdmUKKyBbNSw2KSB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFNhdCBKYW4g MDEgMDA6MDA6MDAgMjAyMiB8IGZpdmVeNAorIFs1LDYpIHwgU2F0IEphbiAwMSAwMDowMDowMCAy MDIyIHwgU3VuIEphbiAwMSAwMDowMDowMCAyMDIzIHwgZml2ZQorIFs1LDYpIHwgTW9uIEphbiAw MSAwMDowMDowMCAyMDI0IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IHwgZml2ZQorKDE2IHJv d3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNr Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91dAppbmRleCA3 OTdkN2I0ZjcxLi5lMDgyYTMyNTZlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Nhbml0eV9jaGVjay5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5p dHlfY2hlY2sub3V0CkBAIC00OCw2ICs0OCw3IEBAIGZfc3RhcnxmCiBmYXN0X2VtcDQwMDB8dAog ZmxvYXQ0X3RibHxmCiBmbG9hdDhfdGJsfGYKK2Zvcl9wb3J0aW9uX29mX3Rlc3R8dAogZnVuY19p bmRleF9oZWFwfHQKIGhhc2hfZjhfaGVhcHx0CiBoYXNoX2k0X2hlYXB8dApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUKaW5kZXggMDcyMzlhN2VhMC4uYzZhMmQ5NTBkYyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCkBAIC01OCw3ICs1OCw3IEBAIHRlc3Q6IGNyZWF0ZV9pbmRleCBj cmVhdGVfaW5kZXhfc3BnaXN0IGNyZWF0ZV92aWV3IGluZGV4X2luY2x1ZGluZyBpbmRleF9pbmNs dWRpCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwogIyAt LS0tLS0tLS0tCi10ZXN0OiBjcmVhdGVfYWdncmVnYXRlIGNyZWF0ZV9mdW5jdGlvbl8zIGNyZWF0 ZV9jYXN0IGNvbnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVkX3RhYmxlIHBl cmlvZHMgdmFjdXVtIGRyb3BfaWZfZXhpc3RzIHVwZGF0YWJsZV92aWV3cyByb2xlYXR0cmlidXRl cyBjcmVhdGVfYW0gaGFzaF9mdW5jIGVycm9ycyBpbmZpbml0ZV9yZWN1cnNlCit0ZXN0OiBjcmVh dGVfYWdncmVnYXRlIGNyZWF0ZV9mdW5jdGlvbl8zIGNyZWF0ZV9jYXN0IGNvbnN0cmFpbnRzIHRy aWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVkX3RhYmxlIHBlcmlvZHMgdmFjdXVtIGRyb3BfaWZf ZXhpc3RzIHVwZGF0YWJsZV92aWV3cyByb2xlYXR0cmlidXRlcyBjcmVhdGVfYW0gaGFzaF9mdW5j IGVycm9ycyBpbmZpbml0ZV9yZWN1cnNlIGZvcl9wb3J0aW9uX29mCiAKICMgLS0tLS0tLS0tLQog IyBzYW5pdHlfY2hlY2sgZG9lcyBhIHZhY3V1bSwgYWZmZWN0aW5nIHRoZSBzb3J0IG9yZGVyIG9m IFNFTEVDVCAqCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9v Zi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uM2I1NzU1YmEwMAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbApAQCAtMCwwICsxLDU2 MiBAQAorLS0gVGVzdHMgZm9yIFVQREFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0YKKworLS0gRmFp bHMgb24gdGFibGVzIHdpdGhvdXQgYSB0ZW1wb3JhbCBQSzoKK0NSRUFURSBUQUJMRSBmb3JfcG9y dGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlIFBSSU1BUlkgS0VZLAorICB2YWxpZF9hdCB0 c3JhbmdlIE5PVCBOVUxMLAorICBuYW1lIHRleHQgTk9UIE5VTEwKKyk7CisKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1 JyBUTyBNQVhWQUxVRQorU0VUIG5hbWUgPSAnZm9vJzsKKworREVMRVRFIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8g TUFYVkFMVUU7CisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NSRUFURSBUQUJM RSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlIE5PVCBOVUxMLAorICB2YWxp ZF9hdCB0c3JhbmdlIE5PVCBOVUxMLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlO VCBmb3JfcG9ydGlvbl9vZl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdAorVkFMVUVTCisoJ1sx LDIpJywgJ1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ29uZScpLAorKCdbMSwyKScsICdbMjAx OC0wMi0wMywyMDE4LTAzLTAzKScsICdvbmUnKSwKKygnWzEsMiknLCAnWzIwMTgtMDMtMDMsMjAx OC0wNC0wNCknLCAnb25lJyksCisoJ1syLDMpJywgJ1syMDE4LTAxLTAxLDIwMTgtMDEtMDUpJywg J3R3bycpLAorKCdbMyw0KScsICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyksCisoJ1s0LDUpJywg JygsMjAxOC0wNC0wMSknLCAnZm91cicpLAorKCdbNSw2KScsICcoLCknLCAnZml2ZScpCis7CisK Ky0tCistLSBVUERBVEUgdGVzdHMKKy0tCisKKy0tIFNldHRpbmcgd2l0aCBhIG1pc3NpbmcgY29s dW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52 YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBNQVhWQUxVRQorU0VUIG5hbWUgPSAnZm9vJwor V0hFUkUgaWQgPSAnWzUsNiknOworCistLSBTZXR0aW5nIHRoZSByYW5nZSBmYWlscworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgt MDYtMDEnIFRPIE1BWFZBTFVFCitTRVQgdmFsaWRfYXQgPSAnWzE5OTAtMDEtMDEsMTk5OS0wMS0w MSknCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIHJl dmVyc2VkIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitTRVQgbmFtZSA9ICd0 aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBTZXR0aW5nIHdpdGggTUFYVkFMVUUg bG93ZXIgYm91bmQgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIE1BWFZBTFVFIFRPIE5VTEwKK1NFVCBuYW1lID0gJ25vcGUnCitX SEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFNldHRpbmcgd2l0aCBNSU5WQUxVRSB1cHBlciBib3Vu ZCBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gTlVMTCBUTyBNSU5WQUxVRQorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0g J1szLDQpJzsKKworLS0gU2V0dGluZyB3aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1QgJzIw MTgtMDEtMDEnKSBUTyAnMjAxOC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9 ICdbMyw0KSc7CisKKy0tIFNldHRpbmcgd2l0aCBhIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gbG93ZXIodmFsaWRf YXQpIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsNCknOwor CistLSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0 LTAxJyBUTyAnMjAxOC0wNC0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjAnCitXSEVSRSBpZCA9ICdb Myw0KSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRl L29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTUFYVkFMVUUKK1NFVCBuYW1lID0gJ3RocmVl XjEnCitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9y dGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTUlOVkFMVUUgVE8gJzIwMTgtMDMtMDEn CitTRVQgbmFtZSA9ICd0aHJlZV4yJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBVcGRhdGlu ZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBNSU5W QUxVRSBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJeMScKK1dIRVJFIGlkID0gJ1s0 LDUpJzsKKworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGEgZmluaXRl L29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gTUFYVkFMVUUKK1NFVCBuYW1lID0gJ2ZvdXJe MicKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKworLS0gVXBkYXRpbmcgYSBmaW5pdGUvZmluaXRlIHBv cnRpb24gd2l0aCBhbiBleGFjdCBmaXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAxOC0wMi0wMScKK1NF VCBuYW1lID0gJ2ZvdXJeMycKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKworLS0gVXBkYXRpbmcgYW4g ZW5jbG9zZWQgc3BhbgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gTUlOVkFMVUUgVE8gTUFYVkFMVUUKK1NFVCBuYW1lID0gJ3R3b14yJwor V0hFUkUgaWQgPSAnWzIsMyknOworCistLSBVcGRhdGluZyBhbiBvcGVuL29wZW4gcG9ydGlvbiB3 aXRoIGEgZmluaXRlL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAxJyBUTyAnMjAxOS0wMS0wMScK K1NFVCBuYW1lID0gJ2ZpdmVeMicKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0gVXBkYXRpbmcg YW4gZW5jbG9zZWQgc3BhbiB3aXRoIHNlcGFyYXRlIHByb3RydWRpbmcgc3BhbnMKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAx LTAxJyBUTyAnMjAyMC0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMycKK1dIRVJFIGlkID0gJ1s1 LDYpJzsKKworLS0gVXBkYXRpbmcgbXVsdGlwbGUgZW5jbG9zZWQgc3BhbnMKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVM TAorU0VUIG5hbWUgPSAnb25lXjInCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKKy0tIFVwZGF0aW5n IHdpdGggYSBzaGlmdC9yZWR1Y2UgY29uZmxpY3QKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpP TkUgSU5URVJWQUwgJzEnIEhPVVIgVE8gTUlOVVRFCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5h bWUgPSAnb25lXjMnCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKK1VQREFURSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBU SU1FIFpPTkUgSU5URVJWQUwgJzInIEhPVVIKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9 ICdvbmVeNCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAxJyBBVCBUSU1F IFpPTkUgSU5URVJWQUwgJzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAn b25lXjQnCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKKy0tIFVwZGF0aW5nIHRoZSBub24tcmFuZ2Ug cGFydCBvZiB0aGUgUEs6CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0xNScgVE8gTlVMTAorU0VUIGlkID0gJ1s2LDcpJwor V0hFUkUgaWQgPSAnWzEsMiknOworCistLSBVUERBVEUgd2l0aCBubyBXSEVSRSBjbGF1c2UKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDMwLTAxLTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9IG5hbWUgfHwgJyonOworCitTRUxFQ1QgKiBG Uk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCistLQorLS0g REVMRVRFIHRlc3RzCistLQorCistLSBEZWxldGluZyB3aXRoIGEgbWlzc2luZyBjb2x1bW4gZmFp bHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFs aWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzUsNiknOworCist LSBEZWxldGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKK0RFTEVURSBGUk9NIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPICcyMDE4LTAxLTAxJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBEZWxldGluZyB3 aXRoIHRpbWVzdGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitERUxFVEUgRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAn MjAxOC0wNC0wMScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhIGNs b3NlZC9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAyMC0wNi0wMScKK1dI RVJFIGlkID0gJ1s1LDYpJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9vcGVuIHRhcmdl dAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBE ZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAy LTA4JworV0hFUkUgaWQgPSAnWzEsMiknOworCistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vb3Bl biB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitXSEVSRSBpZCA9ICdbNiw3KSc7CisKKy0tIERF TEVURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyNS0wMS0wMScgVE8gTlVMTDsKKwor U0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK KworLS0gVVBEQVRFIC4uLiBSRVRVUk5JTkcgcmV0dXJucyBvbmx5IHRoZSB1cGRhdGVkIHZhbHVl cyAobm90IHRoZSBpbnNlcnRlZCBzaWRlIHZhbHVlcykKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0w Mi0xNScKK1NFVCBuYW1lID0gJ3RocmVlXjMnCitXSEVSRSBpZCA9ICdbMyw0KScKK1JFVFVSTklO RyAqOworCistLSB0ZXN0IHRoYXQgd2UgcnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUvREVMRVRF ZCByb3cgYW5kIHRoZSBJTlNFUlRlZCByb3dzCisKK0NSRUFURSBGVU5DVElPTiBmb3JfcG9ydGlv bl9vZl90cmlnZ2VyKCkKK1JFVFVSTlMgdHJpZ2dlcgorQVMKKyQkCitCRUdJTgorICBSQUlTRSBO T1RJQ0UgJyUgJSAlIG9mICUnLCBUR19XSEVOLCBUR19PUCwgTkVXLnZhbGlkX2F0LCBPTEQudmFs aWRfYXQ7CisgIElGIFRHX09QID0gJ0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVM U0UKKyAgICBSRVRVUk4gTkVXOworICBFTkQgSUY7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3Nx bDsKKworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV9pbnNlcnQKKyAg QkVGT1JFIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBF WEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VS IHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl9pbnNlcnQKKyAgQUZURVIgSU5TRVJUIE9OIGZvcl9w b3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3Bv cnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2Jl Zm9yZV91cGRhdGUKKyAgQkVGT1JFIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZP UiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsK K0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl91cGRhdGUKKyAgQUZURVIg VVBEQVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUg RlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zv cl9wb3J0aW9uX29mX2JlZm9yZV9kZWxldGUKKyAgQkVGT1JFIERFTEVURSBPTiBmb3JfcG9ydGlv bl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9u X29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl9k ZWxldGUKKyAgQUZURVIgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0gg Uk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworCitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAy MS0wMS0wMScgVE8gJzIwMjItMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjQnCitXSEVSRSBpZCA9 ICdbNSw2KSc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMjMtMDEtMDEnIFRPICcyMDI0LTAxLTAxJworV0hFUkUgaWQg PSAnWzUsNiknOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworCistLQorLS0gTm93IHJlLXJ1biB0aGUgc2FtZSB0ZXN0cyBidXQgd2l0 aCBhIFBFUklPRCBpbnN0ZWFkIG9mIGEgcmFuZ2U6CistLQorCitEUk9QIFRBQkxFIGZvcl9wb3J0 aW9uX29mX3Rlc3Q7CisKKy0tIEZhaWxzIG9uIHRhYmxlcyB3aXRob3V0IGEgdGVtcG9yYWwgUEs6 CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSBQUklN QVJZIEtFWSwKKyAgdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisgIHZhbGlkX3RpbCB0aW1lc3RhbXAs CisgIFBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisgIG5hbWUg dGV4dCBOT1QgTlVMTAorKTsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9 ICdmb28nOworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBNQVhWQUxVRTsKKworRFJPUCBUQUJMRSBm b3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAor ICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2Zyb20gdGltZXN0YW1wLAorICB2YWxp ZF90aWwgdGltZXN0YW1wLAorICBQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxp ZF90aWwpLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9v Zl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5T RVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdAorVkFMVUVTCisoJ1sxLDIpJywgJzIwMTgtMDEt MDInLCAnMjAxOC0wMi0wMycsICdvbmUnKSwKKygnWzEsMiknLCAnMjAxOC0wMi0wMycsICcyMDE4 LTAzLTAzJywgJ29uZScpLAorKCdbMSwyKScsICcyMDE4LTAzLTAzJywgJzIwMTgtMDQtMDQnLCAn b25lJyksCisoJ1syLDMpJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScsICd0d28nKSwKKygn WzMsNCknLCAnMjAxOC0wMS0wMScsIG51bGwsICd0aHJlZScpLAorKCdbNCw1KScsIG51bGwsICcy MDE4LTA0LTAxJywgJ2ZvdXInKSwKKygnWzUsNiknLCBudWxsLCBudWxsLCAnZml2ZScpCis7CisK Ky0tCistLSBVUERBVEUgdGVzdHMKKy0tCisKKy0tIFNldHRpbmcgd2l0aCBhIG1pc3NpbmcgY29s dW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52 YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBNQVhWQUxVRQorU0VUIG5hbWUgPSAnZm9vJwor V0hFUkUgaWQgPSAnWzUsNiknOworCistLSBTZXR0aW5nIHRoZSBzdGFydCBjb2x1bW4gZmFpbHMK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTA2LTAxJyBUTyBNQVhWQUxVRQorU0VUIHZhbGlkX2Zyb20gPSAnMTk5MC0wMS0wMScK K1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0gU2V0dGluZyB0aGUgZW5kIGNvbHVtbiBmYWlscwor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDYtMDEnIFRPIE1BWFZBTFVFCitTRVQgdmFsaWRfdGlsID0gJzE5OTktMDEtMDEnCitX SEVSRSBpZCA9ICdbNSw2KSc7CisKKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2Vk IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4x JworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBTZXR0aW5nIHdpdGggYSBzdWJxdWVyeSBmYWls cworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gKFNFTEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LTA2LTAxJworU0VUIG5hbWUgPSAnbm9w ZScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gU2V0dGluZyB3aXRoIGEgY29sdW1uIGZhaWxz CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSB2YWxpZF9mcm9tIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAn WzMsNCknOworCistLSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjAnCitXSEVS RSBpZCA9ICdbMyw0KSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9ydGlvbiB3aXRo IGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTUFYVkFMVUUKK1NFVCBuYW1l ID0gJ3RocmVlXjEnCitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRl L29wZW4gcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTUlOVkFMVUUgVE8gJzIw MTgtMDMtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4yJworV0hFUkUgaWQgPSAnWzMsNCknOworCist LSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFy Z2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSBNSU5WQUxVRSBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJeMScKK1dIRVJF IGlkID0gJ1s0LDUpJzsKKworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRo IGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gTUFYVkFMVUUKK1NFVCBuYW1l ID0gJ2ZvdXJeMicKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKworLS0gVXBkYXRpbmcgYSBmaW5pdGUv ZmluaXRlIHBvcnRpb24gd2l0aCBhbiBleGFjdCBmaXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAxOC0w Mi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJeMycKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKworLS0gVXBk YXRpbmcgYW4gZW5jbG9zZWQgc3BhbgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTUlOVkFMVUUgVE8gTUFYVkFMVUUKK1NFVCBuYW1lID0g J3R3b14yJworV0hFUkUgaWQgPSAnWzIsMyknOworCistLSBVcGRhdGluZyBhbiBvcGVuL29wZW4g cG9ydGlvbiB3aXRoIGEgZmluaXRlL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAxJyBUTyAnMjAx OS0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMicKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0g VXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbiB3aXRoIHNlcGFyYXRlIHByb3RydWRpbmcgc3BhbnMK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE3LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMycKK1dIRVJF IGlkID0gJ1s1LDYpJzsKKworLS0gVXBkYXRpbmcgbXVsdGlwbGUgZW5jbG9zZWQgc3BhbnMKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5V TEwgVE8gTlVMTAorU0VUIG5hbWUgPSAnb25lXjInCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKKy0t IFVwZGF0aW5nIHdpdGggYSBzaGlmdC9yZWR1Y2UgY29uZmxpY3QKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBB VCBUSU1FIFpPTkUgSU5URVJWQUwgJzEnIEhPVVIgVE8gTUlOVVRFCisgIFRPICcyMDE5LTAxLTAx JworU0VUIG5hbWUgPSAnb25lXjMnCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAz LTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzInIEhPVVIKKyAgVE8gJzIwMTktMDEtMDEnCitT RVQgbmFtZSA9ICdvbmVeNCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKworVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAx JyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VU IG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKKy0tIFVwZGF0aW5nIHRoZSBu b24tcmFuZ2UgcGFydCBvZiB0aGUgUEs6CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0xNScgVE8gTlVMTAorU0VUIGlkID0g J1s2LDcpJworV0hFUkUgaWQgPSAnWzEsMiknOworCistLSBVUERBVEUgd2l0aCBubyBXSEVSRSBj bGF1c2UKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDMwLTAxLTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9IG5hbWUgfHwgJyonOworCist LSBUT0RPOiBVUERBVEUgd2l0aCBnZW5lcmF0ZWQgY29sdW1ucyB0b28KK1NFTEVDVCAqIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfZnJvbSBOVUxMUyBGSVJTVCwg dmFsaWRfdGlsOworCistLQorLS0gREVMRVRFIHRlc3RzCistLQorCistLSBEZWxldGluZyB3aXRo IGEgbWlzc2luZyBjb2x1bW4gZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorV0hF UkUgaWQgPSAnWzUsNiknOworCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQg ZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDE4LTAxLTAxJworV0hFUkUgaWQgPSAnWzMs NCknOworCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitE RUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKwor LS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAx JyBUTyAnMjAyMC0wNi0wMScKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0gRGVsZXRpbmcgd2l0 aCBhIGNsb3NlZC9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gTlVMTAorV0hFUkUg aWQgPSAnWzMsNCknOworCistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdldAor REVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSBOVUxMIFRPICcyMDE4LTAyLTA4JworV0hFUkUgaWQgPSAnWzEsMiknOworCistLSBEZWxl dGluZyB3aXRoIGFuIG9wZW4vb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitXSEVSRSBp ZCA9ICdbNiw3KSc7CisKKy0tIERFTEVURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorREVMRVRFIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAy NS0wMS0wMScgVE8gTlVMTDsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9S REVSIEJZIGlkLCB2YWxpZF9mcm9tIE5VTExTIEZJUlNULCB2YWxpZF90aWw7CisKKy0tIFVQREFU RSAuLi4gUkVUVVJOSU5HIHJldHVybnMgb25seSB0aGUgdXBkYXRlZCB2YWx1ZXMgKG5vdCB0aGUg aW5zZXJ0ZWQgc2lkZSB2YWx1ZXMpCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0wMScgVE8gJzIwMTgtMDItMTUnCitTRVQg bmFtZSA9ICd0aHJlZV4zJworV0hFUkUgaWQgPSAnWzMsNCknCitSRVRVUk5JTkcgKjsKKworLS0g dGVzdCB0aGF0IHdlIHJ1biB0cmlnZ2VycyBvbiB0aGUgVVBEQVRFL0RFTEVURWQgcm93IGFuZCB0 aGUgSU5TRVJUZWQgcm93cworCitDUkVBVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dl cjIoKQorUkVUVVJOUyB0cmlnZ2VyCitBUworJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAnJSAl IFslLCUpIG9mIFslLCUpJywgVEdfV0hFTiwgVEdfT1AsIE5FVy52YWxpZF9mcm9tLCBORVcudmFs aWRfdGlsLCBPTEQudmFsaWRfZnJvbSwgT0xELnZhbGlkX3RpbDsKKyAgSUYgVEdfT1AgPSAnREVM RVRFJyBUSEVOCisgICAgUkVUVVJOIE9MRDsKKyAgRUxTRQorICAgIFJFVFVSTiBORVc7CisgIEVO RCBJRjsKK0VORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsOworCitDUkVBVEUgVFJJR0dFUiB0cmdf Zm9yX3BvcnRpb25fb2ZfYmVmb3JlX2luc2VydAorICBCRUZPUkUgSU5TRVJUIE9OIGZvcl9wb3J0 aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRp b25fb2ZfdHJpZ2dlcjIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRl cl9pbnNlcnQKKyAgQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVB Q0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcjIoKTsKK0NS RUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfdXBkYXRlCisgIEJFRk9SRSBV UERBVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBG VU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyMigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zv cl9wb3J0aW9uX29mX2FmdGVyX3VwZGF0ZQorICBBRlRFUiBVUERBVEUgT04gZm9yX3BvcnRpb25f b2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9v Zl90cmlnZ2VyMigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV9k ZWxldGUKKyAgQkVGT1JFIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNI IFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIyKCk7CitDUkVB VEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfZGVsZXRlCisgIEFGVEVSIERFTEVU RSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNU SU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIyKCk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0w MS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeNCcKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworREVMRVRF IEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAyMy0wMS0wMScgVE8gJzIwMjQtMDEtMDEnCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKK1NFTEVD VCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfZnJvbSBOVUxM UyBGSVJTVCwgdmFsaWRfdGlsOwotLSAKMi4zMi4wCgo= --00000000000082e1ad05cbd8ac96 Content-Type: application/octet-stream; name="v8-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v8-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kti4otim3 RnJvbSA3YzI3NTNiZTdjMDg4ZDIzNzQxZTZiN2YwMTcxYjJmNDc5ZTUzOWViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3MDAKU3ViamVj dDogW1BBVENIIHY4IDQvNF0gQWRkIHRlbXBvcmFsIEZPUkVJR04gS0VZcwoKLSBBZGRlZCBiaXNv biBzdXBwb3J0IGZvciB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMuIExpa2UgcHJpbWFyeSBrZXlzLCB0 aGV5CiAgY2FuIGhhdmUgZWl0aGVyIGEgUEVSSU9EIG9yIGEgcmFuZ2UgY29sdW1uIGZvciB0aGUg dGVtcG9yYWwgY29tcG9uZW50LgotIEFkZGVkIHRlbXBvcmFsIHRyaWdnZXIgZnVuY3Rpb25zIGFr aW4gdG8gZXhpc3RpbmcgUkkgdHJpZ2dlcgogIGZ1bmN0aW9ucy4KLSBBZGRlZCBzdXBwb3J0IGZv ciBPTiB7VVBEQVRFLERFTEVURX0ge0NBU0NBREUsU0VUIE5VTEwsU0VUIERFRkFVTFR9LgotIEFk ZGVkIHBnX2NvbnN0cmFpbnQuY29uZnBlcmlvZCB0byByZWNvcmQgdGhlIG9pZCBvZiBhIFBFUklP RCB1c2VkIGluCiAgdGhlIG90aGVyIHRhYmxlLiBJZiBhbiBGSyB1c2VzIGEgcmFuZ2UgY29sdW1u IGluc3RlYWQsIHdlIGp1c3QgcmVjb3JkCiAgaXRzIGF0dG51bSB3aXRoIHRoZSBvdGhlciBhdHRu dW1zIHVzZWQgYnkgdGhlIGNvbnN0cmFpbnQuCi0gV2Ugc3VwcG9ydCBmb3JlaWduIGtleXMgd2hl cmUgb25lIHRhYmxlIHVzZXMgYSBQRVJJT0QgYW5kIHRoZSBvdGhlciBhCiAgcmFuZ2U6IHlvdSBk b24ndCBoYXZlIHRvIGNob29zZSBvbmUgb3IgdGhlIG90aGVyIGZvciB5b3VyIHdob2xlCiAgZGF0 YWJhc2UuCi0gQWRkZWQgcGdfZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4 IGluIHBzcWwgXGQgb3V0cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRv Y3VtZW50YXRpb24uCi0tLQogZG9jL3NyYy9zZ21sL2RkbC5zZ21sICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgNCArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAg ICAgICAgfCAgIDQwICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyAgICAgICAgICAgICAg ICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAg ICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMgICAgICAg ICAgIHwgICAxMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAg ICAgIHwgIDg5MSArKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAg ICAgICAgICAgIHwgICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAg ICAgICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAg ICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAg ICAgICAgIHwgICAzMSArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYyAgICAg ICAgICAgIHwgICAyOSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAg ICAgICAgfCAxNTQzICsrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMgICAgICAgICAgICAgfCAgIDE3ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0 cmFpbnQuaCAgICAgICAgICAgfCAgIDEwICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0ICAgICAgICAgICAgICAgfCAgIDQ0ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCAgICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5o ICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9w b3J0aW9uX29mLm91dCAgfCAgICA5ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5 X2NoZWNrLm91dCAgICB8ICAgIDEgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVy bGFwcy5vdXQgICAgIHwgMTg0NiArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvZm9yX3BvcnRpb25fb2Yuc3FsICAgICAgIHwgICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAxNDAyICsrKysrKysrKysrKysKIDIyIGZpbGVz IGNoYW5nZWQsIDUzOTkgaW5zZXJ0aW9ucygrKSwgNDk3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAppbmRleCA1 N2UwZGMxMzYzLi5iYWEyYzEwMWI3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC0xMTkyLDYgKzExOTIsMTAgQEAgQ1JFQVRF IFRBQkxFIGJpbGxpbmdfYWRkcmVzc2VzICgKICAgIDxwYXJhPgogICAgIEFueSB0YWJsZSB3aXRo IGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkgc3VwcG9ydHMgdGVtcG9yYWwgPGxpdGVyYWw+VVBEQVRF PC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+REVMRVRFPC9saXRlcmFsPiB1c2luZyA8bGl0ZXJhbD5G T1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gc3ludGF4LiBTZWUgPHhyZWYgbGlua2VuZD0ic3FsLXVw ZGF0ZSIvPiBhbmQgPHhyZWYgbGlua2VuZD0ic3FsLWRlbGV0ZSIvPiBmb3IgZGV0YWlscy4KICAg IDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVGVtcG9yYWwgZm9yZWlnbiBrZXlzIGhhdmUgdGhl IHNhbWUgc3RydWN0dXJlIGFzIHRlbXBvcmFsIHByaW1hcnkga2V5cyBhbmQgbXVzdCByZWZlcmVu Y2UgdGVtcG9yYWwgcHJpbWFyeSBrZXlzLiBUaGUgcmVmZXJlbmNlZCBlbnRpdHkgc3BlY2lmaWVk IGJ5IHRoZSBvcmRpbmFyeSBrZXkgcGFydHMgbXVzdCBleGlzdCBmb3IgYXQgbGVhc3QgYXMgbG9u ZyBhcyB0aGUgdmFsdWUgaW4gdGhlIHJlZmVyZW5jaW5nIHJvdy4gTm90ZSB0aGF0IHNldmVyYWwg cm93cyBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBtYXkgYmUgcmVxdWlyZWQgdG8gY29tcGxldGVs eSBzYXRpc2Z5IGEgcmVmZXJlbmNpbmcgdmFsdWUuCisgICA8L3BhcmE+CiAgIDwvc2VjdDI+CiAK ICAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1zeXN0ZW0tcGVyaW9kcyI+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdGFibGUuc2dtbAppbmRleCBiNWJmNzY4M2U3Li41MDg0MDFkMzA3IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3RhYmxlLnNnbWwKQEAgLTg4LDcgKzg4LDcgQEAgUEVSSU9EIEZPUiB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+IHwgU1lTVEVN X1QKICAgVU5JUVVFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxl PiB8CiAgIFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVt bl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBd ICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxh Y2VhYmxlPiB8CiAgIEVYQ0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5leGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBXSVRIIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiBb IFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByZWRpY2F0ZTwvcmVwbGFj ZWFibGU+ICkgXSB8Ci0gIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBSRUZFUkVOQ0VTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4u IF0gKSBdCisgIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNv bHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0gKSBSRUZF UkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFi bGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50 ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0gKSBdCiAgICAgWyBNQVRDSCBGVUxMIHwg TUFUQ0ggUEFSVElBTCB8IE1BVENIIFNJTVBMRSBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQog Y2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9O IFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9u PC9yZXBsYWNlYWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5J VElBTExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCkBAIC0xMTM3LDggKzExMzcs OCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJp Y19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVy bT48bGl0ZXJhbD5SRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0 YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVm Y29sdW1uPC9yZXBsYWNlYWJsZT4gKSBdIFsgTUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm1hdGNodHlwZTwvcmVwbGFjZWFibGU+IF0gWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gWyBP TiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlv bjwvcmVwbGFjZWFibGU+IF08L2xpdGVyYWw+IChjb2x1bW4gY29uc3RyYWludCk8L3Rlcm0+CiAK LSAgIDx0ZXJtPjxsaXRlcmFsPkZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKQotICAgIFJFRkVSRU5D RVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4g WyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSApIF0KKyAgIDx0ZXJtPjxsaXRlcmFsPkZPUkVJR04gS0VZICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g WywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZh bDwvcmVwbGFjZWFibGU+IF0gKQorICAgIFJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJs ZT4gXSApIF0KICAgICBbIE1BVENIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tYXRj aHR5cGU8L3JlcGxhY2VhYmxlPiBdCiAgICAgWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0KICAgICBbIE9O IFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9u PC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD4KQEAgLTExNDksMTEgKzExNDksMjkgQEAgV0lUSCAo IE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICAgIFRoZXNlIGNsYXVzZXMgc3BlY2lmeSBhIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQsIHdoaWNoIHJlcXVpcmVzCiAgICAgICB0aGF0IGEgZ3JvdXAgb2Ygb25l IG9yIG1vcmUgY29sdW1ucyBvZiB0aGUgbmV3IHRhYmxlIG11c3Qgb25seQogICAgICAgY29udGFp biB2YWx1ZXMgdGhhdCBtYXRjaCB2YWx1ZXMgaW4gdGhlIHJlZmVyZW5jZWQKLSAgICAgIGNvbHVt bihzKSBvZiBzb21lIHJvdyBvZiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4gIElmIHRoZSA8cmVwbGFj ZWFibGUKKyAgICAgIGNvbHVtbihzKSBvZiBzb21lIHJvdyBvZiB0aGUgcmVmZXJlbmNlZCB0YWJs ZS4KKyAgICAgIElmIHRoZSA8cmVwbGFjZWFibGUKICAgICAgIGNsYXNzPSJwYXJhbWV0ZXIiPnJl ZmNvbHVtbjwvcmVwbGFjZWFibGU+IGxpc3QgaXMgb21pdHRlZCwgdGhlCiAgICAgICBwcmltYXJ5 IGtleSBvZiB0aGUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBs YWNlYWJsZT4KICAgICAgIGlzIHVzZWQuICBUaGUgcmVmZXJlbmNlZCBjb2x1bW5zIG11c3QgYmUg dGhlIGNvbHVtbnMgb2YgYSBub24tZGVmZXJyYWJsZQotICAgICAgdW5pcXVlIG9yIHByaW1hcnkg a2V5IGNvbnN0cmFpbnQgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUuICBUaGUgdXNlcgorICAgICAg dW5pcXVlIG9yIHByaW1hcnkga2V5IGNvbnN0cmFpbnQgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUu CisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIElmIHRoZSBsYXN0IGNvbHVtbiBp cyBtYXJrZWQgd2l0aCA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+LAorICAgICAgaXQgbXVzdCBi ZSBhIHBlcmlvZCBvciByYW5nZSBjb2x1bW4sIGFuZCB0aGUgcmVmZXJlbmNlZCB0YWJsZQorICAg ICAgbXVzdCBoYXZlIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkuCisgICAgICBUaGUgbm9uLTxsaXRl cmFsPlBFUklPRDwvbGl0ZXJhbD4gY29sdW1ucyBhcmUgdHJlYXRlZCBub3JtYWxseQorICAgICAg KGFuZCB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBvZiB0aGVtKSwKKyAgICAgIGJ1dCB0aGUg PGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiBjb2x1bW4gaXMgbm90IGNvbXBhcmVkIGZvciBlcXVh bGl0eS4KKyAgICAgIEluc3RlYWQgdGhlIGNvbnN0cmFpbnQgaXMgY29uc2lkZXJlZCBzYXRpc2Zp ZWQKKyAgICAgIGlmIHRoZSByZWZlcmVuY2VkIHRhYmxlIGhhcyBtYXRjaGluZyByZWNvcmRzIHdo b3NlIGNvbWJpbmVkIHJhbmdlcyBjb21wbGV0ZWx5IGNvdmVyCisgICAgICB0aGUgcmVmZXJlbmNp bmcgcmVjb3JkLgorICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSByZWZlcmVuY2UgbXVzdCBoYXZl IGEgcmVmZXJlbnQgZm9yIGl0cyBlbnRpcmUgZHVyYXRpb24uCisgICAgIDwvcGFyYT4KKworICAg ICA8cGFyYT4KKyAgICAgIFRoZSB1c2VyCiAgICAgICBtdXN0IGhhdmUgPGxpdGVyYWw+UkVGRVJF TkNFUzwvbGl0ZXJhbD4gcGVybWlzc2lvbiBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZQogICAgICAg KGVpdGhlciB0aGUgd2hvbGUgdGFibGUsIG9yIHRoZSBzcGVjaWZpYyByZWZlcmVuY2VkIGNvbHVt bnMpLiAgVGhlCiAgICAgICBhZGRpdGlvbiBvZiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgcmVx dWlyZXMgYQpAQCAtMTIyNSw3ICsxMjQzLDEwIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAg ICAgICAgICA8cGFyYT4KICAgICAgICAgICBEZWxldGUgYW55IHJvd3MgcmVmZXJlbmNpbmcgdGhl IGRlbGV0ZWQgcm93LCBvciB1cGRhdGUgdGhlCiAgICAgICAgICAgdmFsdWVzIG9mIHRoZSByZWZl cmVuY2luZyBjb2x1bW4ocykgdG8gdGhlIG5ldyB2YWx1ZXMgb2YgdGhlCi0gICAgICAgICAgcmVm ZXJlbmNlZCBjb2x1bW5zLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgcmVmZXJlbmNlZCBjb2x1 bW5zLCByZXNwZWN0aXZlbHkuIEluIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXksCisgICAgICAgICAg dGhlIGRlbGV0ZSB3aWxsIHVzZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gc2Vt YW50aWNzCisgICAgICAgICAgdG8gY29uc3RyYWluIHRoZSBlZmZlY3QgdG8gdGhlIGJvdW5kcyBv ZiB0aGUgcmVmZXJlbmNlZCByb3cKKyAgICAgICAgICBiZWluZyBkZWxldGVkLgogICAgICAgICAg PC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAt MTIzNCw3ICsxMjU1LDkgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgPHRlcm0+ PGxpdGVyYWw+U0VUIE5VTEw8L2xpdGVyYWw+PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAg ICAgICAgICA8cGFyYT4KLSAgICAgICAgICBTZXQgdGhlIHJlZmVyZW5jaW5nIGNvbHVtbihzKSB0 byBudWxsLgorICAgICAgICAgIFNldCB0aGUgcmVmZXJlbmNpbmcgY29sdW1uKHMpIHRvIG51bGwu IEluIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXksCisgICAgICAgICAgdGhlIGNoYW5nZSB3aWxsIHVz ZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzCisgICAgICAgICAg dG8gY29uc3RyYWluIHRoZSBlZmZlY3QgdG8gdGhlIGJvdW5kcyBvZiB0aGUgcmVmZXJlbmNlZCBy b3cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJs aXN0ZW50cnk+CkBAIC0xMjQ2LDYgKzEyNjksOSBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQog ICAgICAgICAgIFNldCB0aGUgcmVmZXJlbmNpbmcgY29sdW1uKHMpIHRvIHRoZWlyIGRlZmF1bHQg dmFsdWVzLgogICAgICAgICAgIChUaGVyZSBtdXN0IGJlIGEgcm93IGluIHRoZSByZWZlcmVuY2Vk IHRhYmxlIG1hdGNoaW5nIHRoZSBkZWZhdWx0CiAgICAgICAgICAgdmFsdWVzLCBpZiB0aGV5IGFy ZSBub3QgbnVsbCwgb3IgdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwuKQorICAgICAgICAgIEluIGEg dGVtcG9yYWwgZm9yZWlnbiBrZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxpdGVyYWw+Rk9SIFBP UlRJT04KKyAgICAgICAgICBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFpbiB0aGUg ZWZmZWN0IHRvIHRoZSBib3VuZHMgb2YgdGhlCisgICAgICAgICAgcmVmZXJlbmNlZCByb3cuCiAg ICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50 cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaGVhcC5jCmluZGV4IDE1YzE2NjkyNTEuLjgxOWYzMGJkMGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVh cC5jCkBAIC0yNTU3LDYgKzI1NTcsNyBAQCBTdG9yZVJlbENoZWNrKFJlbGF0aW9uIHJlbCwgY29u c3QgY2hhciAqY2NuYW1lLCBOb2RlICpleHByLAogCQkJCQkJCSAgaXNfbm9faW5oZXJpdCwJLyog Y29ubm9pbmhlcml0ICovCiAJCQkJCQkJICBmYWxzZSwJLyogY29udGVtcG9yYWwgKi8KIAkJCQkJ CQkgIEludmFsaWRPaWQsCS8qIGNvbnBlcmlvZCAqLworCQkJCQkJCSAgSW52YWxpZE9pZCwJLyog Y29uZnBlcmlvZCAqLwogCQkJCQkJCSAgaXNfaW50ZXJuYWwpOyAvKiBpbnRlcm5hbGx5IGNvbnN0 cnVjdGVkPyAqLwogCiAJcGZyZWUoY2NiaW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDU3YjM4NmJk NzUuLmNkNDdlZWE3ZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTIwMDAsNiArMjAwMCw3IEBAIGlu ZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJICAg bm9pbmhlcml0LAogCQkJCQkJCQkgICBpc190ZW1wb3JhbCwJLyogY29udGVtcG9yYWwgKi8KIAkJ CQkJCQkJICAgcGVyaW9kaWQsIC8qIGNvbnBlcmlvZCAqLworCQkJCQkJCQkgICBJbnZhbGlkT2lk LCAvKiBjb25mcGVyaW9kICovCiAJCQkJCQkJCSAgIGlzX2ludGVybmFsKTsKIAogCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfY29uc3RyYWludC5jCmluZGV4IDc5MjdmYmRlODguLjQzZGNkYjNhY2MgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC03OCw2ICs3OCw3IEBAIENyZWF0ZUNv bnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJCQkJICBib29sIGNv bk5vSW5oZXJpdCwKIAkJCQkJICBib29sIGNvblRlbXBvcmFsLAogCQkJCQkgIE9pZCBwZXJpb2Qs CisJCQkJCSAgT2lkIGZwZXJpb2QsCiAJCQkJCSAgYm9vbCBpc19pbnRlcm5hbCkKIHsKIAlSZWxh dGlvbgljb25EZXNjOwpAQCAtMTkwLDYgKzE5MSw3IEBAIENyZWF0ZUNvbnN0cmFpbnRFbnRyeShj b25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2Nv bm5vaW5oZXJpdCAtIDFdID0gQm9vbEdldERhdHVtKGNvbk5vSW5oZXJpdCk7CiAJdmFsdWVzW0Fu dW1fcGdfY29uc3RyYWludF9jb250ZW1wb3JhbCAtIDFdID0gQm9vbEdldERhdHVtKGNvblRlbXBv cmFsKTsKIAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbnBlcmlvZCAtIDFdID0gT2JqZWN0 SWRHZXREYXR1bShwZXJpb2QpOworCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29uZnBlcmlv ZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShmcGVyaW9kKTsKIAogCWlmIChjb25rZXlBcnJheSkK IAkJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25rZXkgLSAxXSA9IFBvaW50ZXJHZXREYXR1 bShjb25rZXlBcnJheSk7CkBAIC0yOTEsNyArMjkzLDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5 KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCXsKIAkJLyoKIAkJICogUmVnaXN0ZXIgbm9y bWFsIGRlcGVuZGVuY3kgZnJvbSBjb25zdHJhaW50IHRvIGZvcmVpZ24gcmVsYXRpb24sIG9yCi0J CSAqIHRvIHNwZWNpZmljIGNvbHVtbihzKSBpZiBhbnkgYXJlIG1lbnRpb25lZC4KKwkJICogdG8g c3BlY2lmaWMgY29sdW1uKHMpIGFuZCBwZXJpb2QgaWYgYW55IGFyZSBtZW50aW9uZWQuCiAJCSAq LwogCQlPYmplY3RBZGRyZXNzIHJlbG9iamVjdDsKIApAQCAtMzA5LDYgKzMxMSwxNCBAQCBDcmVh dGVDb25zdHJhaW50RW50cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJCQlPYmplY3RB ZGRyZXNzU2V0KHJlbG9iamVjdCwgUmVsYXRpb25SZWxhdGlvbklkLCBmb3JlaWduUmVsSWQpOwog CQkJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZyZWxvYmplY3QsIGFkZHJzX25vcm1hbCk7CiAJ CX0KKworCQlpZiAoT2lkSXNWYWxpZChmcGVyaW9kKSkKKwkJeworCQkJT2JqZWN0QWRkcmVzcyBw ZXJpb2RvYmplY3Q7CisKKwkJCU9iamVjdEFkZHJlc3NTZXQocGVyaW9kb2JqZWN0LCBQZXJpb2RS ZWxhdGlvbklkLCBmcGVyaW9kKTsKKwkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmcGVyaW9k b2JqZWN0LCBhZGRyc19ub3JtYWwpOworCQl9CiAJfQogCiAJaWYgKE9pZElzVmFsaWQoaW5kZXhS ZWxJZCkgJiYgY29uc3RyYWludFR5cGUgPT0gQ09OU1RSQUlOVF9GT1JFSUdOKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwppbmRleCBhY2ZjMDdhOGQxLi40NTI4ZmQ3ZTI3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwpAQCAtMzY3LDE5ICszNjcsMjQgQEAgc3RhdGljIE9iamVjdEFkZHJlc3Mg QVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KExpc3QgKip3cXVldWUsCiAJCQkJCQkJCQkJCSAgYm9v bCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIGlu dAl0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChPaWQgcmVsSWQsIExpc3QgKmNvbExpc3QsCiAJCQkJ CQkJCQlpbnQxNiAqYXR0bnVtcywgT2lkICphdHR0eXBpZHMpOworc3RhdGljIHZvaWQJdHJhbnNm b3JtUGVyaW9kTmFtZShPaWQgcmVsSWQsIE5vZGUgKnBlcmlvZE5hbWUsCisJCQkJCQkJCWludDE2 ICphdHRudW1zLCBPaWQgKmF0dHR5cGlkcywgT2lkICpwZXJpb2RpZCk7CiBzdGF0aWMgaW50CXRy YW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAog CQkJCQkJCQkJICAgTGlzdCAqKmF0dG5hbWVsaXN0LAogCQkJCQkJCQkJICAgaW50MTYgKmF0dG51 bXMsIE9pZCAqYXR0dHlwaWRzLAorCQkJCQkJCQkJCSBOb2RlICoqcGVyaW9kYXR0bmFtZSwgT2lk ICpwZXJpb2RpZCwKKwkJCQkJCQkJCQkgaW50MTYgKnBlcmlvZGF0dG51bXMsIE9pZCAqcGVyaW9k YXR0dHlwaWRzLAogCQkJCQkJCQkJICAgT2lkICpvcGNsYXNzZXMpOwogc3RhdGljIE9pZAl0cmFu c2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCQkJCQkJCWludCBudW1hdHRy cywgaW50MTYgKmF0dG51bXMsCi0JCQkJCQkJCQlPaWQgKm9wY2xhc3Nlcyk7CisJCQkJCQkJCQli b29sIGlzX3RlbXBvcmFsLCBpbnQxNiAqcGVyaW9kYXR0bnVtcywKKwkJCQkJCQkJCU9pZCBwZXJp b2RpZCwgT2lkICpvcGNsYXNzZXMpOwogc3RhdGljIHZvaWQgY2hlY2tGa2V5UGVybWlzc2lvbnMo UmVsYXRpb24gcmVsLCBpbnQxNiAqYXR0bnVtcywgaW50IG5hdHRzKTsKIHN0YXRpYyBDb2VyY2lv blBhdGhUeXBlIGZpbmRGa2V5Q2FzdChPaWQgdGFyZ2V0VHlwZUlkLCBPaWQgc291cmNlVHlwZUlk LAogCQkJCQkJCQkJIE9pZCAqZnVuY2lkKTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlRm9yZWlnbktl eUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkJCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBwa3JlbCwKLQkJCQkJCQkJCQkgT2lkIHBraW5kT2lkLCBPaWQgY29uc3RyYWludE9pZCk7 CisJCQkJCQkJCQkJIE9pZCBwa2luZE9pZCwgT2lkIGNvbnN0cmFpbnRPaWQsIGJvb2wgdGVtcG9y YWwpOwogc3RhdGljIHZvaWQgQVRDb250cm9sbGVyKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUs CiAJCQkJCQkgUmVsYXRpb24gcmVsLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsIExPQ0tNT0RF IGxvY2ttb2RlLAogCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CkBA IC00OTMsMTIgKzQ5OCwxMyBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBhZGRGa1JlY3Vyc2VSZWZl cmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYQogCQkJCQkJCQkJCQlS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIHBrcmVsLCBPaWQgaW5kZXhPaWQsIE9pZCBwYXJlbnRDb25z dHIsCiAJCQkJCQkJCQkJCWludCBudW1ma3MsIGludDE2ICpwa2F0dG51bSwgaW50MTYgKmZrYXR0 bnVtLAogCQkJCQkJCQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9ycywg T2lkICpmZmVxb3BlcmF0b3JzLAotCQkJCQkJCQkJCQlib29sIG9sZF9jaGVja19vayk7CisJCQkJ CQkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLCBib29sIGlzX3RlbXBvcmFsLCBPaWQgcGtwZXJpb2Qs IE9pZCBma3BlcmlvZCk7CiBzdGF0aWMgdm9pZCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0 ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCiAJCQkJCQkJCQlSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIHBrcmVsLCBPaWQgaW5kZXhPaWQsIE9pZCBwYXJlbnRDb25zdHIsCiAJCQkJ CQkJCQlpbnQgbnVtZmtzLCBpbnQxNiAqcGthdHRudW0sIGludDE2ICpma2F0dG51bSwKIAkJCQkJ CQkJCU9pZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZmZXFvcGVy YXRvcnMsCi0JCQkJCQkJCQlib29sIG9sZF9jaGVja19vaywgTE9DS01PREUgbG9ja21vZGUpOwor CQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssIGJvb2wgaXNfdGVtcG9yYWwsIE9pZCBwa3Blcmlv ZCwgT2lkIGZrcGVyaW9kLAorCQkJCQkJCQkJTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIHZv aWQgQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcGFy ZW50UmVsLAogCQkJCQkJCQkJICAgUmVsYXRpb24gcGFydGl0aW9uUmVsKTsKIHN0YXRpYyB2b2lk IENsb25lRmtSZWZlcmVuY2VkKFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydGl0aW9u UmVsKTsKQEAgLTUxNSw2ICs1MjEsMTIgQEAgc3RhdGljIGJvb2wgdHJ5QXR0YWNoUGFydGl0aW9u Rm9yZWlnbktleShGb3JlaWduS2V5Q2FjaGVJbmZvICpmaywKIAkJCQkJCQkJCQkgT2lkIHBhcmVu dENvbnN0ck9pZCwgaW50IG51bWZrcywKIAkJCQkJCQkJCQkgQXR0ck51bWJlciAqbWFwcGVkX2Nv bmtleSwgQXR0ck51bWJlciAqY29uZmtleSwKIAkJCQkJCQkJCQkgT2lkICpjb25wZmVxb3ApOwor c3RhdGljIHZvaWQgRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycyhDb25zdHJhaW50ICpma2NvbnN0 cmFpbnQsCisJCQkJCUFsdGVyZWRUYWJsZUluZm8gKnRhYiwgaW50IGksIGludDE2ICpma2F0dG51 bSwKKwkJCQkJYm9vbCAqb2xkX2NoZWNrX29rLCBMaXN0Q2VsbCAqKm9sZF9wZmVxb3BfaXRlbSwK KwkJCQkJT2lkIHBrdHlwZSwgT2lkIGZrdHlwZSwgT2lkIG9wY2xhc3MsCisJCQkJCWJvb2wgaXNf dGVtcG9yYWwsIGJvb2wgZm9yX292ZXJsYXBzLAorCQkJCQlPaWQgKnBmZXFvcE91dCwgT2lkICpw cGVxb3BPdXQsIE9pZCAqZmZlcW9wT3V0KTsKIHN0YXRpYyB2b2lkIEFURXhlY0Ryb3BDb25zdHJh aW50KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29uc3RyTmFtZSwKIAkJCQkJCQkJIERyb3BC ZWhhdmlvciBiZWhhdmlvciwKIAkJCQkJCQkJIGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1cnNpbmcs CkBAIC01Nzk3LDcgKzU4MDksOCBAQCBBVFJld3JpdGVUYWJsZXMoQWx0ZXJUYWJsZVN0bXQgKnBh cnNldHJlZSwgTGlzdCAqKndxdWV1ZSwgTE9DS01PREUgbG9ja21vZGUsCiAKIAkJCQl2YWxpZGF0 ZUZvcmVpZ25LZXlDb25zdHJhaW50KGZrY29uc3RyYWludC0+Y29ubmFtZSwgcmVsLCByZWZyZWws CiAJCQkJCQkJCQkJCSBjb24tPnJlZmluZGlkLAotCQkJCQkJCQkJCQkgY29uLT5jb25pZCk7CisJ CQkJCQkJCQkJCSBjb24tPmNvbmlkLAorCQkJCQkJCQkJCQkgY29uLT5jb250ZW1wb3JhbCk7CiAK IAkJCQkvKgogCQkJCSAqIE5vIG5lZWQgdG8gbWFyayB0aGUgY29uc3RyYWludCByb3cgYXMgdmFs aWRhdGVkLCB3ZSBkaWQKQEAgLTk0NjksMTEgKzk0ODIsMTggQEAgQVRBZGRGb3JlaWduS2V5Q29u c3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJl bCwKIAlPaWQJCQlwZmVxb3BlcmF0b3JzW0lOREVYX01BWF9LRVlTXTsKIAlPaWQJCQlwcGVxb3Bl cmF0b3JzW0lOREVYX01BWF9LRVlTXTsKIAlPaWQJCQlmZmVxb3BlcmF0b3JzW0lOREVYX01BWF9L RVlTXTsKKwlib29sCQlpc190ZW1wb3JhbCA9IChma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBO VUxMKTsKKwlpbnQxNgkJcGtwZXJpb2RhdHRudW1zWzJdOworCWludDE2CQlma3BlcmlvZGF0dG51 bXNbMl07CisJT2lkCQkJcGtwZXJpb2R0eXBvaWRzWzJdOworCU9pZAkJCWZrcGVyaW9kdHlwb2lk c1syXTsKIAlpbnQJCQlpOwogCWludAkJCW51bWZrcywKIAkJCQludW1wa3M7CiAJT2lkCQkJaW5k ZXhPaWQ7CiAJYm9vbAkJb2xkX2NoZWNrX29rOworCU9pZAkJCWZrcGVyaW9kID0gSW52YWxpZE9p ZDsKKwlPaWQJCQlwa3BlcmlvZCA9IEludmFsaWRPaWQ7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNz OwogCUxpc3RDZWxsICAgKm9sZF9wZmVxb3BfaXRlbSA9IGxpc3RfaGVhZChma2NvbnN0cmFpbnQt Pm9sZF9jb25wZmVxb3ApOwogCkBAIC05NTcxLDYgKzk1OTEsMjEgQEAgQVRBZGRGb3JlaWduS2V5 Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9u IHJlbCwKIAludW1ma3MgPSB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlk KHJlbCksCiAJCQkJCQkJCQkgZmtjb25zdHJhaW50LT5ma19hdHRycywKIAkJCQkJCQkJCSBma2F0 dG51bSwgZmt0eXBvaWQpOworCWlmIChpc190ZW1wb3JhbCkKKwl7CisJCS8qCisJCSAqIEZpcnN0 IHNlZSBpZiB3ZSBoYXZlIGEgcGVyaW9kIG5hbWUsIG90aGVyd2lzZSBsb29rIGZvciBhIHJhbmdl IGNvbHVtbi4KKwkJICogSWYgaXQncyBhIHBlcmlvZCwgZ2V0IHRoZSBhdHRudW1zIG9mIGJvdGgg c3RhcnQgJiBlbmQgY29sdW1ucywKKwkJICogYnV0IGluc3RlYWQgb2YgdGhlaXIgdHlwZXMgZ2V0 IHBlcmlvZCdzIHJhbmdldHlwZS4KKwkJICovCisJCXRyYW5zZm9ybVBlcmlvZE5hbWUoUmVsYXRp b25HZXRSZWxpZChyZWwpLAorCQkJCWZrY29uc3RyYWludC0+ZmtfcGVyaW9kLCBma3BlcmlvZGF0 dG51bXMsIGZrcGVyaW9kdHlwb2lkcywgJmZrcGVyaW9kKTsKKworCQlpZiAoZmtwZXJpb2QgPT0g SW52YWxpZE9pZCkKKwkJCXRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQo cmVsKSwKKwkJCQkJCQkJICBsaXN0X21ha2UxKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kKSwKKwkJ CQkJCQkJICBma3BlcmlvZGF0dG51bXMsIGZrcGVyaW9kdHlwb2lkcyk7CisJfQogCiAJLyoKIAkg KiBJZiB0aGUgYXR0cmlidXRlIGxpc3QgZm9yIHRoZSByZWZlcmVuY2VkIHRhYmxlIHdhcyBvbWl0 dGVkLCBsb29rdXAgdGhlCkBAIC05NTgzLDYgKzk2MTgsOSBAQCBBVEFkZEZvcmVpZ25LZXlDb25z dHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVs LAogCQludW1wa3MgPSB0cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShwa3JlbCwgJmluZGV4T2lk LAogCQkJCQkJCQkJCQkmZmtjb25zdHJhaW50LT5wa19hdHRycywKIAkJCQkJCQkJCQkJcGthdHRu dW0sIHBrdHlwb2lkLAorCQkJCQkJCQkJCQkmZmtjb25zdHJhaW50LT5wa19wZXJpb2QsCisJCQkJ CQkJCQkJCSZwa3BlcmlvZCwKKwkJCQkJCQkJCQkJcGtwZXJpb2RhdHRudW1zLCBwa3BlcmlvZHR5 cG9pZHMsCiAJCQkJCQkJCQkJCW9wY2xhc3Nlcyk7CiAJfQogCWVsc2UKQEAgLTk1OTAsOCArOTYy OCwxOSBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQludW1wa3MgPSB0cmFuc2Zvcm1Db2x1bW5O YW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHBrcmVsKSwKIAkJCQkJCQkJCQkgZmtjb25zdHJhaW50 LT5wa19hdHRycywKIAkJCQkJCQkJCQkgcGthdHRudW0sIHBrdHlwb2lkKTsKKwkJaWYgKGlzX3Rl bXBvcmFsKSB7CisJCQl0cmFuc2Zvcm1QZXJpb2ROYW1lKFJlbGF0aW9uR2V0UmVsaWQocGtyZWwp LAorCQkJCQlma2NvbnN0cmFpbnQtPnBrX3BlcmlvZCwgcGtwZXJpb2RhdHRudW1zLCBwa3Blcmlv ZHR5cG9pZHMsICZwa3BlcmlvZCk7CisKKwkJCWlmIChwa3BlcmlvZCA9PSBJbnZhbGlkT2lkKQor CQkJCXRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocGtyZWwpLAorCQkJ CQkJCQkJCWxpc3RfbWFrZTEoZmtjb25zdHJhaW50LT5wa19wZXJpb2QpLAorCQkJCQkJCQkJCXBr cGVyaW9kYXR0bnVtcywgcGtwZXJpb2R0eXBvaWRzKTsKKwkJfQogCQkvKiBMb29rIGZvciBhbiBp bmRleCBtYXRjaGluZyB0aGUgY29sdW1uIGxpc3QgKi8KIAkJaW5kZXhPaWQgPSB0cmFuc2Zvcm1G a2V5Q2hlY2tBdHRycyhwa3JlbCwgbnVtcGtzLCBwa2F0dG51bSwKKwkJCQkJCQkJCQkgICBpc190 ZW1wb3JhbCwgcGtwZXJpb2RhdHRudW1zLAorCQkJCQkJCQkJCSAgIHBrcGVyaW9kLAogCQkJCQkJ CQkJCSAgIG9wY2xhc3Nlcyk7CiAJfQogCkBAIC05NjUwLDE4NyArOTY5OSw0MyBAQCBBVEFkZEZv cmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwg UmVsYXRpb24gcmVsLAogCiAJZm9yIChpID0gMDsgaSA8IG51bXBrczsgaSsrKQogCXsKLQkJT2lk CQkJcGt0eXBlID0gcGt0eXBvaWRbaV07Ci0JCU9pZAkJCWZrdHlwZSA9IGZrdHlwb2lkW2ldOwot CQlPaWQJCQlma3R5cGVkOwotCQlIZWFwVHVwbGUJY2xhX2h0OwotCQlGb3JtX3BnX29wY2xhc3Mg Y2xhX3R1cDsKLQkJT2lkCQkJYW1pZDsKLQkJT2lkCQkJb3BmYW1pbHk7Ci0JCU9pZAkJCW9wY2lu dHlwZTsKLQkJT2lkCQkJcGZlcW9wOwotCQlPaWQJCQlwcGVxb3A7Ci0JCU9pZAkJCWZmZXFvcDsK LQkJaW50MTYJCWVxc3RyYXRlZ3k7Ci0JCU9pZAkJCXBmZXFvcF9yaWdodDsKLQotCQkvKiBXZSBu ZWVkIHNldmVyYWwgZmllbGRzIG91dCBvZiB0aGUgcGdfb3BjbGFzcyBlbnRyeSAqLwotCQljbGFf aHQgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERhdHVtKG9wY2xhc3Nlc1tp XSkpOwotCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhX2h0KSkKLQkJCWVsb2coRVJST1IsICJj YWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGNsYXNzICV1Iiwgb3BjbGFzc2VzW2ldKTsKLQkJY2xh X3R1cCA9IChGb3JtX3BnX29wY2xhc3MpIEdFVFNUUlVDVChjbGFfaHQpOwotCQlhbWlkID0gY2xh X3R1cC0+b3BjbWV0aG9kOwotCQlvcGZhbWlseSA9IGNsYV90dXAtPm9wY2ZhbWlseTsKLQkJb3Bj aW50eXBlID0gY2xhX3R1cC0+b3BjaW50eXBlOwotCQlSZWxlYXNlU3lzQ2FjaGUoY2xhX2h0KTsK LQotCQkvKgotCQkgKiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNhbiBuZXZl ciBmYWlsIHNpbmNlIG5vIG90aGVyCi0JCSAqIGluZGV4IEFNcyBzdXBwb3J0IHVuaXF1ZSBpbmRl eGVzLiAgSWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0eXBlcwotCQkgKiBvZiB1bmlxdWUgaW5k ZXhlcywgd2UnZCBuZWVkIGEgd2F5IHRvIGRldGVybWluZSB3aGljaCBvcGVyYXRvcgotCQkgKiBz dHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVhc29uYWJsZSB0byBpbnNpc3Qg dGhhdAotCQkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBidHJlZSdzIG51bWJlciBmb3IgZXF1 YWxpdHk/KQotCQkgKi8KLQkJaWYgKGFtaWQgIT0gQlRSRUVfQU1fT0lEKQotCQkJZWxvZyhFUlJP UiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1cHBvcnRlZCBmb3IgZm9yZWlnbiBrZXlzIik7 Ci0JCWVxc3RyYXRlZ3kgPSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI7Ci0KLQkJLyoKLQkJICogVGhl cmUgaGFkIGJldHRlciBiZSBhIHByaW1hcnkgZXF1YWxpdHkgb3BlcmF0b3IgZm9yIHRoZSBpbmRl eC4KLQkJICogV2UnbGwgdXNlIGl0IGZvciBQSyA9IFBLIGNvbXBhcmlzb25zLgotCQkgKi8KLQkJ cHBlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNpbnR5 cGUsCi0JCQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0KLQkJaWYgKCFPaWRJc1ZhbGlkKHBwZXFvcCkp Ci0JCQllbG9nKEVSUk9SLCAibWlzc2luZyBvcGVyYXRvciAlZCgldSwldSkgaW4gb3BmYW1pbHkg JXUiLAotCQkJCSBlcXN0cmF0ZWd5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwgb3BmYW1pbHkpOwot Ci0JCS8qCi0JCSAqIEFyZSB0aGVyZSBlcXVhbGl0eSBvcGVyYXRvcnMgdGhhdCB0YWtlIGV4YWN0 bHkgdGhlIEZLIHR5cGU/IEFzc3VtZQotCQkgKiB3ZSBzaG91bGQgbG9vayB0aHJvdWdoIGFueSBk b21haW4gaGVyZS4KLQkJICovCi0JCWZrdHlwZWQgPSBnZXRCYXNlVHlwZShma3R5cGUpOwotCi0J CXBmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgZmt0eXBl ZCwKLQkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKLQkJaWYgKE9pZElzVmFsaWQocGZlcW9wKSkKKwkJ RmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycygKKwkJCQlma2NvbnN0cmFpbnQsIHRhYiwgaSwgZmth dHRudW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3BfaXRlbSwKKwkJCQlwa3R5cG9p ZFtpXSwgZmt0eXBvaWRbaV0sIG9wY2xhc3Nlc1tpXSwKKwkJCQlpc190ZW1wb3JhbCwgZmFsc2Us CisJCQkJJnBmZXFvcGVyYXRvcnNbaV0sICZwcGVxb3BlcmF0b3JzW2ldLCAmZmZlcW9wZXJhdG9y c1tpXSk7CisJfQorCWlmIChpc190ZW1wb3JhbCkgeworCQlpZiAocGtwZXJpb2QgPT0gSW52YWxp ZE9pZCkKIAkJewotCQkJcGZlcW9wX3JpZ2h0ID0gZmt0eXBlZDsKLQkJCWZmZXFvcCA9IGdldF9v cGZhbWlseV9tZW1iZXIob3BmYW1pbHksIGZrdHlwZWQsIGZrdHlwZWQsCi0JCQkJCQkJCQkJIGVx c3RyYXRlZ3kpOworCQkJcGthdHRudW1bbnVtcGtzXSA9IHBrcGVyaW9kYXR0bnVtc1swXTsKKwkJ CXBrdHlwb2lkW251bXBrc10gPSBwa3BlcmlvZHR5cG9pZHNbMF07CiAJCX0KIAkJZWxzZQogCQl7 Ci0JCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCi0JCQlwZmVxb3BfcmlnaHQgPSBJbnZhbGlk T2lkOwotCQkJZmZlcW9wID0gSW52YWxpZE9pZDsKKwkJCXBrYXR0bnVtW251bXBrc10gPSBJbnZh bGlkT2lkOworCQkJcGt0eXBvaWRbbnVtcGtzXSA9IEludmFsaWRPaWQ7CiAJCX0KLQotCQlpZiAo IShPaWRJc1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKLQkJewotCQkJLyoK LQkJCSAqIE90aGVyd2lzZSwgbG9vayBmb3IgYW4gaW1wbGljaXQgY2FzdCBmcm9tIHRoZSBGSyB0 eXBlIHRvIHRoZQotCQkJICogb3BjaW50eXBlLCBhbmQgaWYgZm91bmQsIHVzZSB0aGUgcHJpbWFy eSBlcXVhbGl0eSBvcGVyYXRvci4KLQkJCSAqIFRoaXMgaXMgYSBiaXQgdHJpY2t5IGJlY2F1c2Ug b3BjaW50eXBlIG1pZ2h0IGJlIGEgcG9seW1vcnBoaWMKLQkJCSAqIHR5cGUgc3VjaCBhcyBBTllB UlJBWSBvciBBTllFTlVNOyBzbyB3aGF0IHdlIGhhdmUgdG8gdGVzdCBpcwotCQkJICogd2hldGhl ciB0aGUgdHdvIGFjdHVhbCBjb2x1bW4gdHlwZXMgY2FuIGJlIGNvbmN1cnJlbnRseSBjYXN0IHRv Ci0JCQkgKiB0aGF0IHR5cGUuICAoT3RoZXJ3aXNlLCB3ZSdkIGZhaWwgdG8gcmVqZWN0IGNvbWJp bmF0aW9ucyBzdWNoCi0JCQkgKiBhcyBpbnRbXSBhbmQgcG9pbnRbXS4pCi0JCQkgKi8KLQkJCU9p ZAkJCWlucHV0X3R5cGVpZHNbMl07Ci0JCQlPaWQJCQl0YXJnZXRfdHlwZWlkc1syXTsKLQotCQkJ aW5wdXRfdHlwZWlkc1swXSA9IHBrdHlwZTsKLQkJCWlucHV0X3R5cGVpZHNbMV0gPSBma3R5cGU7 Ci0JCQl0YXJnZXRfdHlwZWlkc1swXSA9IG9wY2ludHlwZTsKLQkJCXRhcmdldF90eXBlaWRzWzFd ID0gb3BjaW50eXBlOwotCQkJaWYgKGNhbl9jb2VyY2VfdHlwZSgyLCBpbnB1dF90eXBlaWRzLCB0 YXJnZXRfdHlwZWlkcywKLQkJCQkJCQkJQ09FUkNJT05fSU1QTElDSVQpKQotCQkJewotCQkJCXBm ZXFvcCA9IGZmZXFvcCA9IHBwZXFvcDsKLQkJCQlwZmVxb3BfcmlnaHQgPSBvcGNpbnR5cGU7Ci0J CQl9Ci0JCX0KLQotCQlpZiAoIShPaWRJc1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVx b3ApKSkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVf TUlTTUFUQ0gpLAotCQkJCQkgZXJybXNnKCJmb3JlaWduIGtleSBjb25zdHJhaW50IFwiJXNcIiBj YW5ub3QgYmUgaW1wbGVtZW50ZWQiLAotCQkJCQkJCWZrY29uc3RyYWludC0+Y29ubmFtZSksCi0J CQkJCSBlcnJkZXRhaWwoIktleSBjb2x1bW5zIFwiJXNcIiBhbmQgXCIlc1wiICIKLQkJCQkJCQkg ICAiYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogJXMgYW5kICVzLiIsCi0JCQkJCQkJICAgc3Ry VmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+ZmtfYXR0cnMsIGkpKSwKLQkJCQkJCQkgICBzdHJW YWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5wa19hdHRycywgaSkpLAotCQkJCQkJCSAgIGZvcm1h dF90eXBlX2JlKGZrdHlwZSksCi0JCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUocGt0eXBlKSkpKTsK LQotCQlpZiAob2xkX2NoZWNrX29rKQorCQlpZiAoZmtwZXJpb2QgPT0gSW52YWxpZE9pZCkKIAkJ ewotCQkJLyoKLQkJCSAqIFdoZW4gYSBwZmVxb3AgY2hhbmdlcywgcmV2YWxpZGF0ZSB0aGUgY29u c3RyYWludC4gIFdlIGNvdWxkCi0JCQkgKiBwZXJtaXQgaW50cmEtb3BmYW1pbHkgY2hhbmdlcywg YnV0IHRoYXQgYWRkcyBzdWJ0bGUgY29tcGxleGl0eQotCQkJICogd2l0aG91dCBhbnkgY29uY3Jl dGUgYmVuZWZpdCBmb3IgY29yZSB0eXBlcy4gIFdlIG5lZWQgbm90Ci0JCQkgKiBhc3Nlc3MgcHBl cW9wIG9yIGZmZXFvcCwgd2hpY2ggUklfSW5pdGlhbF9DaGVjaygpIGRvZXMgbm90IHVzZS4KLQkJ CSAqLwotCQkJb2xkX2NoZWNrX29rID0gKHBmZXFvcCA9PSBsZmlyc3Rfb2lkKG9sZF9wZmVxb3Bf aXRlbSkpOwotCQkJb2xkX3BmZXFvcF9pdGVtID0gbG5leHQoZmtjb25zdHJhaW50LT5vbGRfY29u cGZlcW9wLAotCQkJCQkJCQkJb2xkX3BmZXFvcF9pdGVtKTsKKwkJCWZrYXR0bnVtW251bXBrc10g PSBma3BlcmlvZGF0dG51bXNbMF07CisJCQlma3R5cG9pZFtudW1wa3NdID0gZmtwZXJpb2R0eXBv aWRzWzBdOwogCQl9Ci0JCWlmIChvbGRfY2hlY2tfb2spCisJCWVsc2UKIAkJewotCQkJT2lkCQkJ b2xkX2ZrdHlwZTsKLQkJCU9pZAkJCW5ld19ma3R5cGU7Ci0JCQlDb2VyY2lvblBhdGhUeXBlIG9s ZF9wYXRodHlwZTsKLQkJCUNvZXJjaW9uUGF0aFR5cGUgbmV3X3BhdGh0eXBlOwotCQkJT2lkCQkJ b2xkX2Nhc3RmdW5jOwotCQkJT2lkCQkJbmV3X2Nhc3RmdW5jOwotCQkJRm9ybV9wZ19hdHRyaWJ1 dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFiLT5vbGREZXNjLAotCQkJCQkJCQkJCQkJICAgZmth dHRudW1baV0gLSAxKTsKLQotCQkJLyoKLQkJCSAqIElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3YXlz IGZyb20gZWFjaCBvZiB0aGUgb2xkIGFuZCBuZXcgRkstc2lkZQotCQkJICogY29sdW1uIHR5cGVz IHRvIHRoZSByaWdodCAoZm9yZWlnbikgb3BlcmFuZCB0eXBlIG9mIHRoZSBwZmVxb3AuCi0JCQkg KiBXZSBtYXkgYXNzdW1lIHRoYXQgcGdfY29uc3RyYWludC5jb25rZXkgaXMgbm90IGNoYW5naW5n LgotCQkJICovCi0JCQlvbGRfZmt0eXBlID0gYXR0ci0+YXR0dHlwaWQ7Ci0JCQluZXdfZmt0eXBl ID0gZmt0eXBlOwotCQkJb2xkX3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwg b2xkX2ZrdHlwZSwKLQkJCQkJCQkJCQkmb2xkX2Nhc3RmdW5jKTsKLQkJCW5ld19wYXRodHlwZSA9 IGZpbmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG5ld19ma3R5cGUsCi0JCQkJCQkJCQkJJm5ld19j YXN0ZnVuYyk7Ci0KLQkJCS8qCi0JCQkgKiBVcG9uIGEgY2hhbmdlIHRvIHRoZSBjYXN0IGZyb20g dGhlIEZLIGNvbHVtbiB0byBpdHMgcGZlcW9wCi0JCQkgKiBvcGVyYW5kLCByZXZhbGlkYXRlIHRo ZSBjb25zdHJhaW50LiAgRm9yIHRoaXMgZXZhbHVhdGlvbiwgYQotCQkJICogYmluYXJ5IGNvZXJj aW9uIGNhc3QgaXMgZXF1aXZhbGVudCB0byBubyBjYXN0IGF0IGFsbC4gIFdoaWxlCi0JCQkgKiB0 eXBlIGltcGxlbWVudG9ycyBzaG91bGQgZGVzaWduIGltcGxpY2l0IGNhc3RzIHdpdGggYW4gZXll Ci0JCQkgKiB0b3dhcmQgY29uc2lzdGVuY3kgb2Ygb3BlcmF0aW9ucyBsaWtlIGVxdWFsaXR5LCB3 ZSBjYW5ub3QKLQkJCSAqIGFzc3VtZSBoZXJlIHRoYXQgdGhleSBoYXZlIGRvbmUgc28uCi0JCQkg KgotCQkJICogQSBmdW5jdGlvbiB3aXRoIGEgcG9seW1vcnBoaWMgYXJndW1lbnQgY291bGQgY2hh bmdlIGJlaGF2aW9yCi0JCQkgKiBhcmJpdHJhcmlseSBpbiByZXNwb25zZSB0byBnZXRfZm5fZXhw cl9hcmd0eXBlKCkuICBUaGVyZWZvcmUsCi0JCQkgKiB3aGVuIHRoZSBjYXN0IGRlc3RpbmF0aW9u IGlzIHBvbHltb3JwaGljLCB3ZSBvbmx5IGF2b2lkCi0JCQkgKiByZXZhbGlkYXRpb24gaWYgdGhl IGlucHV0IHR5cGUgaGFzIG5vdCBjaGFuZ2VkIGF0IGFsbC4gIEdpdmVuCi0JCQkgKiBqdXN0IHRo ZSBjb3JlIGRhdGEgdHlwZXMgYW5kIG9wZXJhdG9yIGNsYXNzZXMsIHRoaXMgcmVxdWlyZW1lbnQK LQkJCSAqIHByZXZlbnRzIG5vIHdvdWxkLWJlIG9wdGltaXphdGlvbnMuCi0JCQkgKgotCQkJICog SWYgdGhlIGNhc3QgY29udmVydHMgZnJvbSBhIGJhc2UgdHlwZSB0byBhIGRvbWFpbiB0aGVyZW9u LCB0aGVuCi0JCQkgKiB0aGF0IGRvbWFpbiB0eXBlIG11c3QgYmUgdGhlIG9wY2ludHlwZSBvZiB0 aGUgdW5pcXVlIGluZGV4LgotCQkJICogTmVjZXNzYXJpbHksIHRoZSBwcmltYXJ5IGtleSBjb2x1 bW4gbXVzdCB0aGVuIGJlIG9mIHRoZSBkb21haW4KLQkJCSAqIHR5cGUuICBTaW5jZSB0aGUgY29u c3RyYWludCB3YXMgcHJldmlvdXNseSB2YWxpZCwgYWxsIHZhbHVlcyBvbgotCQkJICogdGhlIGZv cmVpZ24gc2lkZSBuZWNlc3NhcmlseSBleGlzdCBvbiB0aGUgcHJpbWFyeSBzaWRlIGFuZCBpbgot CQkJICogdHVybiBjb25mb3JtIHRvIHRoZSBkb21haW4uICBDb25zZXF1ZW50bHksIHdlIG5lZWQg bm90IHRyZWF0Ci0JCQkgKiBkb21haW5zIHNwZWNpYWxseSBoZXJlLgotCQkJICoKLQkJCSAqIFNp bmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwgY29sbGF0aW9ucyBzaGFyZSB0aGUgc2FtZSBub3Rpb24g b2YKLQkJCSAqIGVxdWFsaXR5ICh3aGljaCB0aGV5IGRvLCBiZWNhdXNlIHRleHRlcSByZWR1Y2Vz IHRvIGJpdHdpc2UKLQkJCSAqIGVxdWFsaXR5KSwgd2UgZG9uJ3QgY29tcGFyZSBjb2xsYXRpb24g aGVyZS4KLQkJCSAqCi0JCQkgKiBXZSBuZWVkIG5vdCBkaXJlY3RseSBjb25zaWRlciB0aGUgUEsg dHlwZS4gIEl0J3MgbmVjZXNzYXJpbHkKLQkJCSAqIGJpbmFyeSBjb2VyY2libGUgdG8gdGhlIG9w Y2ludHlwZSBvZiB0aGUgdW5pcXVlIGluZGV4IGNvbHVtbiwKLQkJCSAqIGFuZCByaV90cmlnZ2Vy cy5jIHdpbGwgb25seSBkZWFsIHdpdGggUEsgZGF0dW1zIGluIHRlcm1zIG9mCi0JCQkgKiB0aGF0 IG9wY2ludHlwZS4gIENoYW5naW5nIHRoZSBvcGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBmZXFvcC4K LQkJCSAqLwotCQkJb2xkX2NoZWNrX29rID0gKG5ld19wYXRodHlwZSA9PSBvbGRfcGF0aHR5cGUg JiYKLQkJCQkJCQluZXdfY2FzdGZ1bmMgPT0gb2xkX2Nhc3RmdW5jICYmCi0JCQkJCQkJKCFJc1Bv bHltb3JwaGljVHlwZShwZmVxb3BfcmlnaHQpIHx8Ci0JCQkJCQkJIG5ld19ma3R5cGUgPT0gb2xk X2ZrdHlwZSkpOworCQkJZmthdHRudW1bbnVtcGtzXSA9IEludmFsaWRPaWQ7CisJCQlma3R5cG9p ZFtudW1wa3NdID0gSW52YWxpZE9pZDsKIAkJfQogCi0JCXBmZXFvcGVyYXRvcnNbaV0gPSBwZmVx b3A7Ci0JCXBwZXFvcGVyYXRvcnNbaV0gPSBwcGVxb3A7Ci0JCWZmZXFvcGVyYXRvcnNbaV0gPSBm ZmVxb3A7CisJCUZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoCisJCQkJZmtjb25zdHJhaW50LCB0 YWIsIG51bXBrcywgZmthdHRudW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3BfaXRl bSwKKwkJCQlwa3BlcmlvZHR5cG9pZHNbMF0sIGZrcGVyaW9kdHlwb2lkc1swXSwgb3BjbGFzc2Vz W251bXBrc10sCisJCQkJaXNfdGVtcG9yYWwsIHRydWUsCisJCQkJJnBmZXFvcGVyYXRvcnNbbnVt cGtzXSwgJnBwZXFvcGVyYXRvcnNbbnVtcGtzXSwgJmZmZXFvcGVyYXRvcnNbbnVtcGtzXSk7CisJ CW51bWZrcyArPSAxOworCQludW1wa3MgKz0gMTsKIAl9CiAKIAkvKgpAQCAtOTg0Niw3ICs5NzUx LDEwIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgcGZlcW9wZXJhdG9ycywKIAkJ CQkJCQkJCSBwcGVxb3BlcmF0b3JzLAogCQkJCQkJCQkJIGZmZXFvcGVyYXRvcnMsCi0JCQkJCQkJ CQkgb2xkX2NoZWNrX29rKTsKKwkJCQkJCQkJCSBvbGRfY2hlY2tfb2ssCisJCQkJCQkJCQkgaXNf dGVtcG9yYWwsCisJCQkJCQkJCQkgcGtwZXJpb2QsCisJCQkJCQkJCQkgZmtwZXJpb2QpOwogCiAJ LyogTm93IGhhbmRsZSB0aGUgcmVmZXJlbmNpbmcgc2lkZS4gKi8KIAlhZGRGa1JlY3Vyc2VSZWZl cmVuY2luZyh3cXVldWUsIGZrY29uc3RyYWludCwgcmVsLCBwa3JlbCwKQEAgLTk4NTksNiArOTc2 Nyw5IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJcHBlcW9wZXJhdG9ycywKIAkJCQkJ CQlmZmVxb3BlcmF0b3JzLAogCQkJCQkJCW9sZF9jaGVja19vaywKKwkJCQkJCQlpc190ZW1wb3Jh bCwKKwkJCQkJCQlwa3BlcmlvZCwKKwkJCQkJCQlma3BlcmlvZCwKIAkJCQkJCQlsb2NrbW9kZSk7 CiAKIAkvKgpAQCAtOTg5OSw3ICs5ODEwLDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0 ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJ ICAgUmVsYXRpb24gcGtyZWwsIE9pZCBpbmRleE9pZCwgT2lkIHBhcmVudENvbnN0ciwKIAkJCQkJ ICAgaW50IG51bWZrcywKIAkJCQkJICAgaW50MTYgKnBrYXR0bnVtLCBpbnQxNiAqZmthdHRudW0s IE9pZCAqcGZlcW9wZXJhdG9ycywKLQkJCQkJICAgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZm ZXFvcGVyYXRvcnMsIGJvb2wgb2xkX2NoZWNrX29rKQorCQkJCQkgICBPaWQgKnBwZXFvcGVyYXRv cnMsIE9pZCAqZmZlcW9wZXJhdG9ycywgYm9vbCBvbGRfY2hlY2tfb2ssCisJCQkJCSAgIGJvb2wg aXNfdGVtcG9yYWwsIE9pZCBwa3BlcmlvZCwgT2lkIGZrcGVyaW9kKQogewogCU9iamVjdEFkZHJl c3MgYWRkcmVzczsKIAlPaWQJCQljb25zdHJPaWQ7CkBAIC05OTgxLDggKzk4OTMsOSBAQCBhZGRG a1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWlu dCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJICBjb25pc2xvY2FsLAkvKiBpc2xvY2FsICovCiAJ CQkJCQkJCQkgIGNvbmluaGNvdW50LAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkJICBjb25ub2lu aGVyaXQsIC8qIGNvbk5vSW5oZXJpdCAqLwotCQkJCQkJCQkJICBmYWxzZSwJLyogY29uVGVtcG9y YWwgKi8KLQkJCQkJCQkJCSAgSW52YWxpZE9pZCwKKwkJCQkJCQkJCSAgaXNfdGVtcG9yYWwsCisJ CQkJCQkJCQkgIGZrcGVyaW9kLAorCQkJCQkJCQkJICBwa3BlcmlvZCwKIAkJCQkJCQkJCSAgZmFs c2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCiAJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBDb25z dHJhaW50UmVsYXRpb25JZCwgY29uc3RyT2lkKTsKQEAgLTEwMDU3LDcgKzk5NzAsNyBAQCBhZGRG a1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWlu dCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkgICBwYXJ0SW5kZXhJZCwgY29uc3RyT2lkLCBudW1m a3MsCiAJCQkJCQkJCSAgIG1hcHBlZF9wa2F0dG51bSwgZmthdHRudW0sCiAJCQkJCQkJCSAgIHBm ZXFvcGVyYXRvcnMsIHBwZXFvcGVyYXRvcnMsIGZmZXFvcGVyYXRvcnMsCi0JCQkJCQkJCSAgIG9s ZF9jaGVja19vayk7CisJCQkJCQkJCSAgIG9sZF9jaGVja19vaywgaXNfdGVtcG9yYWwsIHBrcGVy aW9kLCBma3BlcmlvZCk7CiAKIAkJCS8qIERvbmUgLS0gY2xlYW4gdXAgKGJ1dCBrZWVwIHRoZSBs b2NrKSAqLwogCQkJdGFibGVfY2xvc2UocGFydFJlbCwgTm9Mb2NrKTsKQEAgLTEwMTA2LDcgKzEw MDE5LDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWlu dCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQlSZWxhdGlvbiBwa3JlbCwgT2lk IGluZGV4T2lkLCBPaWQgcGFyZW50Q29uc3RyLAogCQkJCQkJaW50IG51bWZrcywgaW50MTYgKnBr YXR0bnVtLCBpbnQxNiAqZmthdHRudW0sCiAJCQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9pZCAq cHBlcW9wZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAotCQkJCQkJYm9vbCBvbGRfY2hlY2tf b2ssIExPQ0tNT0RFIGxvY2ttb2RlKQorCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssIGJvb2wgaXNf dGVtcG9yYWwsIE9pZCBwa3BlcmlvZCwKKwkJCQkJCU9pZCBma3BlcmlvZCwgTE9DS01PREUgbG9j a21vZGUpCiB7CiAJQXNzZXJ0QXJnKE9pZElzVmFsaWQocGFyZW50Q29uc3RyKSk7CiAKQEAgLTEw MTQ5LDYgKzEwMDYzLDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwg Q29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQluZXdjb24tPnJlZnJl bGlkID0gUmVsYXRpb25HZXRSZWxpZChwa3JlbCk7CiAJCQluZXdjb24tPnJlZmluZGlkID0gaW5k ZXhPaWQ7CiAJCQluZXdjb24tPmNvbmlkID0gcGFyZW50Q29uc3RyOworCQkJbmV3Y29uLT5jb250 ZW1wb3JhbCA9IGZrY29uc3RyYWludC0+ZmtfcGVyaW9kICE9IE5VTEw7CiAJCQluZXdjb24tPnF1 YWwgPSAoTm9kZSAqKSBma2NvbnN0cmFpbnQ7CiAKIAkJCXRhYi0+Y29uc3RyYWludHMgPSBsYXBw ZW5kKHRhYi0+Y29uc3RyYWludHMsIG5ld2Nvbik7CkBAIC0xMDI1MSw4ICsxMDE2Niw5IEBAIGFk ZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3Ry YWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCSAgMSwKIAkJ CQkJCQkJCSAgZmFsc2UsCi0JCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25UZW1wb3JhbCAqLwotCQkJ CQkJCQkJICBJbnZhbGlkT2lkLAorCQkJCQkJCQkJICBpc190ZW1wb3JhbCwKKwkJCQkJCQkJCSAg ZmtwZXJpb2QsCisJCQkJCQkJCQkgIHBrcGVyaW9kLAogCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkJ CS8qCkBAIC0xMDI3OSw2ICsxMDE5NSw5IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3Qg Kip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJ CQkJcHBlcW9wZXJhdG9ycywKIAkJCQkJCQkJCWZmZXFvcGVyYXRvcnMsCiAJCQkJCQkJCQlvbGRf Y2hlY2tfb2ssCisJCQkJCQkJCQlpc190ZW1wb3JhbCwKKwkJCQkJCQkJCXBrcGVyaW9kLAorCQkJ CQkJCQkJZmtwZXJpb2QsCiAJCQkJCQkJCQlsb2NrbW9kZSk7CiAKIAkJCXRhYmxlX2Nsb3NlKHBh cnRpdGlvbiwgTm9Mb2NrKTsKQEAgLTEwNDE2LDYgKzEwMzM1LDcgQEAgQ2xvbmVGa1JlZmVyZW5j ZWQoUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpCiAJCQkJCQkJCSAg IGNvbnBmZXFvcCwKIAkJCQkJCQkJICAgY29ucHBlcW9wLAogCQkJCQkJCQkgICBjb25mZmVxb3Ap OworCQlBc3NlcnQobnVtZmtzID09IGF0dG1hcC0+bWFwbGVuKTsKIAogCQlmb3IgKGludCBpID0g MDsgaSA8IG51bWZrczsgaSsrKQogCQkJbWFwcGVkX2NvbmZrZXlbaV0gPSBhdHRtYXAtPmF0dG51 bXNbY29uZmtleVtpXSAtIDFdOwpAQCAtMTA0NjIsNyArMTAzODIsMTAgQEAgQ2xvbmVGa1JlZmVy ZW5jZWQoUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpCiAJCQkJCQkJ ICAgY29ucGZlcW9wLAogCQkJCQkJCSAgIGNvbnBwZXFvcCwKIAkJCQkJCQkgICBjb25mZmVxb3As Ci0JCQkJCQkJICAgdHJ1ZSk7CisJCQkJCQkJICAgdHJ1ZSwKKwkJCQkJCQkgICBjb25zdHJGb3Jt LT5jb250ZW1wb3JhbCwKKwkJCQkJCQkgICBjb25zdHJGb3JtLT5jb25mcGVyaW9kLAorCQkJCQkJ CSAgIGNvbnN0ckZvcm0tPmNvbnBlcmlvZCk7CiAKIAkJdGFibGVfY2xvc2UoZmtSZWwsIE5vTG9j ayk7CiAJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CkBAIC0xMDY1NSw4ICsxMDU3OCw5IEBAIENs b25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0 aW9uIHBhcnRSZWwpCiAJCQkJCQkJCSAgZmFsc2UsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJICAx LAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25Ob0luaGVyaXQgKi8KLQkJ CQkJCQkJICBmYWxzZSwJLyogY29uVGVtcG9yYWwgKi8KLQkJCQkJCQkJICBJbnZhbGlkT2lkLAor CQkJCQkJCQkgIGNvbnN0ckZvcm0tPmNvbnRlbXBvcmFsLAorCQkJCQkJCQkgIGNvbnN0ckZvcm0t PmNvbnBlcmlvZCwKKwkJCQkJCQkJICBjb25zdHJGb3JtLT5jb25mcGVyaW9kLAogCQkJCQkJCQkg IHRydWUpOwogCiAJCS8qIFNldCB1cCBwYXJ0aXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGUgbmV3 IGNvbnN0cmFpbnQgKi8KQEAgLTEwNjg2LDExICsxMDYxMCwyMzIgQEAgQ2xvbmVGa1JlZmVyZW5j aW5nKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkK IAkJCQkJCQkJY29ucHBlcW9wLAogCQkJCQkJCQljb25mZmVxb3AsCiAJCQkJCQkJCWZhbHNlLAkv KiBubyBvbGQgY2hlY2sgZXhpc3RzICovCisJCQkJCQkJCWNvbnN0ckZvcm0tPmNvbnRlbXBvcmFs LAorCQkJCQkJCQljb25zdHJGb3JtLT5jb25wZXJpb2QsCisJCQkJCQkJCWNvbnN0ckZvcm0tPmNv bmZwZXJpb2QsCiAJCQkJCQkJCUFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwogCQl0YWJsZV9jbG9zZShw a3JlbCwgTm9Mb2NrKTsKIAl9CiB9CiAKK3N0YXRpYyB2b2lkCitGaW5kRktDb21wYXJpc29uT3Bl cmF0b3JzKENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKKwkJQWx0ZXJlZFRhYmxlSW5mbyAqdGFi LAorCQlpbnQgaSwKKwkJaW50MTYgKmZrYXR0bnVtLAorCQlib29sICpvbGRfY2hlY2tfb2ssCisJ CUxpc3RDZWxsICoqb2xkX3BmZXFvcF9pdGVtLAorCQlPaWQgcGt0eXBlLCBPaWQgZmt0eXBlLCBP aWQgb3BjbGFzcywKKwkJYm9vbCBpc190ZW1wb3JhbCwgYm9vbCBmb3Jfb3ZlcmxhcHMsCisJCU9p ZCAqcGZlcW9wT3V0LCBPaWQgKnBwZXFvcE91dCwgT2lkICpmZmVxb3BPdXQpCit7CisJT2lkCQkJ Zmt0eXBlZDsKKwlIZWFwVHVwbGUJY2xhX2h0OworCUZvcm1fcGdfb3BjbGFzcyBjbGFfdHVwOwor CU9pZAkJCWFtaWQ7CisJT2lkCQkJb3BmYW1pbHk7CisJT2lkCQkJb3BjaW50eXBlOworCU9pZAkJ CXBmZXFvcDsKKwlPaWQJCQlwcGVxb3A7CisJT2lkCQkJZmZlcW9wOworCWludDE2CQllcXN0cmF0 ZWd5OworCU9pZAkJCXBmZXFvcF9yaWdodDsKKworCS8qIFdlIG5lZWQgc2V2ZXJhbCBmaWVsZHMg b3V0IG9mIHRoZSBwZ19vcGNsYXNzIGVudHJ5ICovCisJY2xhX2h0ID0gU2VhcmNoU3lzQ2FjaGUx KENMQU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGNsYXNzKSk7CisJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKGNsYV9odCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGNs YXNzICV1Iiwgb3BjbGFzcyk7CisJY2xhX3R1cCA9IChGb3JtX3BnX29wY2xhc3MpIEdFVFNUUlVD VChjbGFfaHQpOworCWFtaWQgPSBjbGFfdHVwLT5vcGNtZXRob2Q7CisJb3BmYW1pbHkgPSBjbGFf dHVwLT5vcGNmYW1pbHk7CisJb3BjaW50eXBlID0gY2xhX3R1cC0+b3BjaW50eXBlOworCVJlbGVh c2VTeXNDYWNoZShjbGFfaHQpOworCisJaWYgKGlzX3RlbXBvcmFsKQorCXsKKwkJaWYgKGFtaWQg IT0gR0lTVF9BTV9PSUQpCisJCQllbG9nKEVSUk9SLCAib25seSBHaVNUIGluZGV4ZXMgYXJlIHN1 cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIik7CisJCWVxc3RyYXRlZ3kgPSBmb3Jf b3ZlcmxhcHMgPyBSVE92ZXJsYXBTdHJhdGVneU51bWJlciA6IFJURXF1YWxTdHJhdGVneU51bWJl cjsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogQ2hlY2sgaXQncyBhIGJ0cmVlOyBjdXJyZW50 bHkgdGhpcyBjYW4gbmV2ZXIgZmFpbCBzaW5jZSBubyBvdGhlcgorCQkgKiBpbmRleCBBTXMgc3Vw cG9ydCB1bmlxdWUgaW5kZXhlcy4gIElmIHdlIGV2ZXIgZGlkIGhhdmUgb3RoZXIgdHlwZXMKKwkJ ICogb2YgdW5pcXVlIGluZGV4ZXMsIHdlJ2QgbmVlZCBhIHdheSB0byBkZXRlcm1pbmUgd2hpY2gg b3BlcmF0b3IKKwkJICogc3RyYXRlZ3kgbnVtYmVyIGlzIGVxdWFsaXR5LiAgKElzIGl0IHJlYXNv bmFibGUgdG8gaW5zaXN0IHRoYXQKKwkJICogZXZlcnkgc3VjaCBpbmRleCBBTSB1c2UgYnRyZWUn cyBudW1iZXIgZm9yIGVxdWFsaXR5PykKKwkJICovCisJCWlmIChhbWlkICE9IEJUUkVFX0FNX09J RCkKKwkJCWVsb2coRVJST1IsICJvbmx5IGItdHJlZSBpbmRleGVzIGFyZSBzdXBwb3J0ZWQgZm9y IGZvcmVpZ24ga2V5cyIpOworCQllcXN0cmF0ZWd5ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOwor CX0KKworCS8qCisJICogVGhlcmUgaGFkIGJldHRlciBiZSBhIHByaW1hcnkgZXF1YWxpdHkgb3Bl cmF0b3IgZm9yIHRoZSBpbmRleC4KKwkgKiBXZSdsbCB1c2UgaXQgZm9yIFBLID0gUEsgY29tcGFy aXNvbnMuCisJICovCisJcHBlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3Bj aW50eXBlLCBvcGNpbnR5cGUsCisJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKKworCWlmICghT2lkSXNW YWxpZChwcGVxb3ApKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyBvcGVyYXRvciAlZCgldSwldSkg aW4gb3BmYW1pbHkgJXUiLAorCQkJIGVxc3RyYXRlZ3ksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBv cGZhbWlseSk7CisKKwkvKgorCSAqIEFyZSB0aGVyZSBlcXVhbGl0eSBvcGVyYXRvcnMgdGhhdCB0 YWtlIGV4YWN0bHkgdGhlIEZLIHR5cGU/IEFzc3VtZQorCSAqIHdlIHNob3VsZCBsb29rIHRocm91 Z2ggYW55IGRvbWFpbiBoZXJlLgorCSAqLworCWZrdHlwZWQgPSBnZXRCYXNlVHlwZShma3R5cGUp OworCisJcGZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBm a3R5cGVkLAorCQkJCQkJCQkgZXFzdHJhdGVneSk7CisJaWYgKE9pZElzVmFsaWQocGZlcW9wKSkK Kwl7CisJCXBmZXFvcF9yaWdodCA9IGZrdHlwZWQ7CisJCWZmZXFvcCA9IGdldF9vcGZhbWlseV9t ZW1iZXIob3BmYW1pbHksIGZrdHlwZWQsIGZrdHlwZWQsCisJCQkJCQkJCQkgZXFzdHJhdGVneSk7 CisJfQorCWVsc2UKKwl7CisJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJcGZlcW9wX3Jp Z2h0ID0gSW52YWxpZE9pZDsKKwkJZmZlcW9wID0gSW52YWxpZE9pZDsKKwl9CisKKwlpZiAoIShP aWRJc1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKKwl7CisJCS8qCisJCSAq IE90aGVyd2lzZSwgbG9vayBmb3IgYW4gaW1wbGljaXQgY2FzdCBmcm9tIHRoZSBGSyB0eXBlIHRv IHRoZQorCQkgKiBvcGNpbnR5cGUsIGFuZCBpZiBmb3VuZCwgdXNlIHRoZSBwcmltYXJ5IGVxdWFs aXR5IG9wZXJhdG9yLgorCQkgKiBUaGlzIGlzIGEgYml0IHRyaWNreSBiZWNhdXNlIG9wY2ludHlw ZSBtaWdodCBiZSBhIHBvbHltb3JwaGljCisJCSAqIHR5cGUgc3VjaCBhcyBBTllBUlJBWSBvciBB TllFTlVNOyBzbyB3aGF0IHdlIGhhdmUgdG8gdGVzdCBpcworCQkgKiB3aGV0aGVyIHRoZSB0d28g YWN0dWFsIGNvbHVtbiB0eXBlcyBjYW4gYmUgY29uY3VycmVudGx5IGNhc3QgdG8KKwkJICogdGhh dCB0eXBlLiAgKE90aGVyd2lzZSwgd2UnZCBmYWlsIHRvIHJlamVjdCBjb21iaW5hdGlvbnMgc3Vj aAorCQkgKiBhcyBpbnRbXSBhbmQgcG9pbnRbXS4pCisJCSAqLworCQlPaWQJCQlpbnB1dF90eXBl aWRzWzJdOworCQlPaWQJCQl0YXJnZXRfdHlwZWlkc1syXTsKKworCQlpbnB1dF90eXBlaWRzWzBd ID0gcGt0eXBlOworCQlpbnB1dF90eXBlaWRzWzFdID0gZmt0eXBlOworCQl0YXJnZXRfdHlwZWlk c1swXSA9IG9wY2ludHlwZTsKKwkJdGFyZ2V0X3R5cGVpZHNbMV0gPSBvcGNpbnR5cGU7CisJCWlm IChjYW5fY29lcmNlX3R5cGUoMiwgaW5wdXRfdHlwZWlkcywgdGFyZ2V0X3R5cGVpZHMsCisJCQkJ CQkJQ09FUkNJT05fSU1QTElDSVQpKQorCQl7CisJCQlwZmVxb3AgPSBmZmVxb3AgPSBwcGVxb3A7 CisJCQlwZmVxb3BfcmlnaHQgPSBvcGNpbnR5cGU7CisJCX0KKwl9CisKKwlpZiAoIShPaWRJc1Zh bGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKKwl7CisJCWNoYXIgKmZrYXR0cl9u YW1lOworCQljaGFyICpwa2F0dHJfbmFtZTsKKworCQlpZiAoZm9yX292ZXJsYXBzKQorCQl7CisJ CQlma2F0dHJfbmFtZSA9IHN0clZhbChma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCk7CisJCQlwa2F0 dHJfbmFtZSA9IHN0clZhbChma2NvbnN0cmFpbnQtPnBrX3BlcmlvZCk7CisJCX0KKwkJZWxzZQor CQl7CisJCQlma2F0dHJfbmFtZSA9IHN0clZhbChsaXN0X250aChma2NvbnN0cmFpbnQtPmZrX2F0 dHJzLCBpKSk7CisJCQlwa2F0dHJfbmFtZSA9IHN0clZhbChsaXN0X250aChma2NvbnN0cmFpbnQt PnBrX2F0dHJzLCBpKSk7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgXCIlc1wiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCIsCisJCQkJCQlma2NvbnN0cmFpbnQt PmNvbm5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIktleSBjb2x1bW5zIFwiJXNcIiBhbmQgXCIlc1wi ICIKKwkJCQkJCSAgICJhcmUgb2YgaW5jb21wYXRpYmxlIHR5cGVzOiAlcyBhbmQgJXMuIiwKKwkJ CQkJCSAgIGZrYXR0cl9uYW1lLAorCQkJCQkJICAgcGthdHRyX25hbWUsCisJCQkJCQkgICBmb3Jt YXRfdHlwZV9iZShma3R5cGUpLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUocGt0eXBlKSkpKTsK Kwl9CisKKwlpZiAoKm9sZF9jaGVja19vaykKKwl7CisJCS8qCisJCSAqIFdoZW4gYSBwZmVxb3Ag Y2hhbmdlcywgcmV2YWxpZGF0ZSB0aGUgY29uc3RyYWludC4gIFdlIGNvdWxkCisJCSAqIHBlcm1p dCBpbnRyYS1vcGZhbWlseSBjaGFuZ2VzLCBidXQgdGhhdCBhZGRzIHN1YnRsZSBjb21wbGV4aXR5 CisJCSAqIHdpdGhvdXQgYW55IGNvbmNyZXRlIGJlbmVmaXQgZm9yIGNvcmUgdHlwZXMuICBXZSBu ZWVkIG5vdAorCQkgKiBhc3Nlc3MgcHBlcW9wIG9yIGZmZXFvcCwgd2hpY2ggUklfSW5pdGlhbF9D aGVjaygpIGRvZXMgbm90IHVzZS4KKwkJICovCisJCSpvbGRfY2hlY2tfb2sgPSAocGZlcW9wID09 IGxmaXJzdF9vaWQoKm9sZF9wZmVxb3BfaXRlbSkpOworCQkqb2xkX3BmZXFvcF9pdGVtID0gbG5l eHQoZmtjb25zdHJhaW50LT5vbGRfY29ucGZlcW9wLAorCQkJCQkJCQkqb2xkX3BmZXFvcF9pdGVt KTsKKwl9CisJaWYgKCpvbGRfY2hlY2tfb2spCisJeworCQlPaWQJCQlvbGRfZmt0eXBlOworCQlP aWQJCQluZXdfZmt0eXBlOworCQlDb2VyY2lvblBhdGhUeXBlIG9sZF9wYXRodHlwZTsKKwkJQ29l cmNpb25QYXRoVHlwZSBuZXdfcGF0aHR5cGU7CisJCU9pZAkJCW9sZF9jYXN0ZnVuYzsKKwkJT2lk CQkJbmV3X2Nhc3RmdW5jOworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0 cih0YWItPm9sZERlc2MsCisJCQkJCQkJCQkJCSAgIGZrYXR0bnVtW2ldIC0gMSk7CisKKwkJLyoK KwkJICogSWRlbnRpZnkgY29lcmNpb24gcGF0aHdheXMgZnJvbSBlYWNoIG9mIHRoZSBvbGQgYW5k IG5ldyBGSy1zaWRlCisJCSAqIGNvbHVtbiB0eXBlcyB0byB0aGUgcmlnaHQgKGZvcmVpZ24pIG9w ZXJhbmQgdHlwZSBvZiB0aGUgcGZlcW9wLgorCQkgKiBXZSBtYXkgYXNzdW1lIHRoYXQgcGdfY29u c3RyYWludC5jb25rZXkgaXMgbm90IGNoYW5naW5nLgorCQkgKi8KKwkJb2xkX2ZrdHlwZSA9IGF0 dHItPmF0dHR5cGlkOworCQluZXdfZmt0eXBlID0gZmt0eXBlOworCQlvbGRfcGF0aHR5cGUgPSBm aW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0LCBvbGRfZmt0eXBlLAorCQkJCQkJCQkJJm9sZF9jYXN0 ZnVuYyk7CisJCW5ld19wYXRodHlwZSA9IGZpbmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG5ld19m a3R5cGUsCisJCQkJCQkJCQkmbmV3X2Nhc3RmdW5jKTsKKworCQkvKgorCQkgKiBVcG9uIGEgY2hh bmdlIHRvIHRoZSBjYXN0IGZyb20gdGhlIEZLIGNvbHVtbiB0byBpdHMgcGZlcW9wCisJCSAqIG9w ZXJhbmQsIHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBGb3IgdGhpcyBldmFsdWF0aW9uLCBh CisJCSAqIGJpbmFyeSBjb2VyY2lvbiBjYXN0IGlzIGVxdWl2YWxlbnQgdG8gbm8gY2FzdCBhdCBh bGwuICBXaGlsZQorCQkgKiB0eXBlIGltcGxlbWVudG9ycyBzaG91bGQgZGVzaWduIGltcGxpY2l0 IGNhc3RzIHdpdGggYW4gZXllCisJCSAqIHRvd2FyZCBjb25zaXN0ZW5jeSBvZiBvcGVyYXRpb25z IGxpa2UgZXF1YWxpdHksIHdlIGNhbm5vdAorCQkgKiBhc3N1bWUgaGVyZSB0aGF0IHRoZXkgaGF2 ZSBkb25lIHNvLgorCQkgKgorCQkgKiBBIGZ1bmN0aW9uIHdpdGggYSBwb2x5bW9ycGhpYyBhcmd1 bWVudCBjb3VsZCBjaGFuZ2UgYmVoYXZpb3IKKwkJICogYXJiaXRyYXJpbHkgaW4gcmVzcG9uc2Ug dG8gZ2V0X2ZuX2V4cHJfYXJndHlwZSgpLiAgVGhlcmVmb3JlLAorCQkgKiB3aGVuIHRoZSBjYXN0 IGRlc3RpbmF0aW9uIGlzIHBvbHltb3JwaGljLCB3ZSBvbmx5IGF2b2lkCisJCSAqIHJldmFsaWRh dGlvbiBpZiB0aGUgaW5wdXQgdHlwZSBoYXMgbm90IGNoYW5nZWQgYXQgYWxsLiAgR2l2ZW4KKwkJ ICoganVzdCB0aGUgY29yZSBkYXRhIHR5cGVzIGFuZCBvcGVyYXRvciBjbGFzc2VzLCB0aGlzIHJl cXVpcmVtZW50CisJCSAqIHByZXZlbnRzIG5vIHdvdWxkLWJlIG9wdGltaXphdGlvbnMuCisJCSAq CisJCSAqIElmIHRoZSBjYXN0IGNvbnZlcnRzIGZyb20gYSBiYXNlIHR5cGUgdG8gYSBkb21haW4g dGhlcmVvbiwgdGhlbgorCQkgKiB0aGF0IGRvbWFpbiB0eXBlIG11c3QgYmUgdGhlIG9wY2ludHlw ZSBvZiB0aGUgdW5pcXVlIGluZGV4LgorCQkgKiBOZWNlc3NhcmlseSwgdGhlIHByaW1hcnkga2V5 IGNvbHVtbiBtdXN0IHRoZW4gYmUgb2YgdGhlIGRvbWFpbgorCQkgKiB0eXBlLiAgU2luY2UgdGhl IGNvbnN0cmFpbnQgd2FzIHByZXZpb3VzbHkgdmFsaWQsIGFsbCB2YWx1ZXMgb24KKwkJICogdGhl IGZvcmVpZ24gc2lkZSBuZWNlc3NhcmlseSBleGlzdCBvbiB0aGUgcHJpbWFyeSBzaWRlIGFuZCBp bgorCQkgKiB0dXJuIGNvbmZvcm0gdG8gdGhlIGRvbWFpbi4gIENvbnNlcXVlbnRseSwgd2UgbmVl ZCBub3QgdHJlYXQKKwkJICogZG9tYWlucyBzcGVjaWFsbHkgaGVyZS4KKwkJICoKKwkJICogU2lu Y2Ugd2UgcmVxdWlyZSB0aGF0IGFsbCBjb2xsYXRpb25zIHNoYXJlIHRoZSBzYW1lIG5vdGlvbiBv ZgorCQkgKiBlcXVhbGl0eSAod2hpY2ggdGhleSBkbywgYmVjYXVzZSB0ZXh0ZXEgcmVkdWNlcyB0 byBiaXR3aXNlCisJCSAqIGVxdWFsaXR5KSwgd2UgZG9uJ3QgY29tcGFyZSBjb2xsYXRpb24gaGVy ZS4KKwkJICoKKwkJICogV2UgbmVlZCBub3QgZGlyZWN0bHkgY29uc2lkZXIgdGhlIFBLIHR5cGUu ICBJdCdzIG5lY2Vzc2FyaWx5CisJCSAqIGJpbmFyeSBjb2VyY2libGUgdG8gdGhlIG9wY2ludHlw ZSBvZiB0aGUgdW5pcXVlIGluZGV4IGNvbHVtbiwKKwkJICogYW5kIHJpX3RyaWdnZXJzLmMgd2ls bCBvbmx5IGRlYWwgd2l0aCBQSyBkYXR1bXMgaW4gdGVybXMgb2YKKwkJICogdGhhdCBvcGNpbnR5 cGUuICBDaGFuZ2luZyB0aGUgb3BjaW50eXBlIGFsc28gY2hhbmdlcyBwZmVxb3AuCisJCSAqLwor CQkqb2xkX2NoZWNrX29rID0gKG5ld19wYXRodHlwZSA9PSBvbGRfcGF0aHR5cGUgJiYKKwkJCQkJ CW5ld19jYXN0ZnVuYyA9PSBvbGRfY2FzdGZ1bmMgJiYKKwkJCQkJCSghSXNQb2x5bW9ycGhpY1R5 cGUocGZlcW9wX3JpZ2h0KSB8fAorCQkJCQkJIG5ld19ma3R5cGUgPT0gb2xkX2ZrdHlwZSkpOwor CisJfQorCisJKnBmZXFvcE91dCA9IHBmZXFvcDsKKwkqcHBlcW9wT3V0ID0gcHBlcW9wOworCSpm ZmVxb3BPdXQgPSBmZmVxb3A7Cit9CisKIC8qCiAgKiBXaGVuIHRoZSBwYXJlbnQgb2YgYSBwYXJ0 aXRpb24gcmVjZWl2ZXMgW3RoZSByZWZlcmVuY2luZyBzaWRlIG9mXSBhIGZvcmVpZ24KICAqIGtl eSwgd2UgbXVzdCBwcm9wYWdhdGUgdGhhdCBmb3JlaWduIGtleSB0byB0aGUgcGFydGl0aW9uLiAg SG93ZXZlciwgdGhlCkBAIC0xMTMwMyw2ICsxMTQ0OCwzOCBAQCBBVEV4ZWNWYWxpZGF0ZUNvbnN0 cmFpbnQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBjaGFyICpjb25zdHJOYW1lLAogCXJl dHVybiBhZGRyZXNzOwogfQogCisvKgorICogdHJhbnNmb3JtUGVyaW9kTmFtZSAtIHRyYW5zZm9y bSBwZXJpb2QgbmFtZSB0byBpdHMgYmFzZSBjb2x1bW5zCisgKgorICogTG9va3VwIHRoZSBuYW1l IGFuZCByZXR1cm4gemVybyBhcyB0aGUgY29sdW1uIGF0dG51bS4gU2V0CisgKiB0aGUgcGVyaW9k J3MgcmFuZ2V0eXBlIChub3QgdGhlIGNvbHVtbnMnIHR5cGUgT0lEcykuCisgKi8KK3N0YXRpYyB2 b2lkCit0cmFuc2Zvcm1QZXJpb2ROYW1lKE9pZCByZWxJZCwgTm9kZSAqcGVyaW9kTmFtZSwKKwkJ CQkJaW50MTYgKmF0dG51bXMsIE9pZCAqYXR0dHlwaWRzLCBPaWQgKnBlcmlvZGlkKQoreworCWNv bnN0IGNoYXIgKnBlcmlvZFN0ciA9IHN0clZhbChwZXJpb2ROYW1lKTsKKwlIZWFwVHVwbGUgcGVy dHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJICAgT2JqZWN0SWRHZXRE YXR1bShyZWxJZCksCisJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShwZXJpb2RTdHIpKTsKKwlGb3Jt X3BnX3BlcmlvZCBwZXJpb2Q7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocGVydHVwbGUpKQor CXsKKwkJYXR0bnVtc1swXSA9IEludmFsaWRPaWQ7CisJCWF0dHR5cGlkc1swXSA9IEludmFsaWRP aWQ7CisJCSpwZXJpb2RpZCA9IEludmFsaWRPaWQ7CisJCXJldHVybjsKKwl9CisKKwlwZXJpb2Qg PSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJ0dXBsZSk7CisKKwlhdHRudW1zWzBdID0g SW52YWxpZE9pZDsKKwlhdHR0eXBpZHNbMF0gPSBwZXJpb2QtPnBlcnJuZ3R5cGU7CisJKnBlcmlv ZGlkID0gcGVyaW9kLT5vaWQ7CisKKwlSZWxlYXNlU3lzQ2FjaGUocGVydHVwbGUpOworfQogCiAv KgogICogdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QgLSB0cmFuc2Zvcm0gbGlzdCBvZiBjb2x1bW4g bmFtZXMKQEAgLTExMzI4LDYgKzExNTA1LDcgQEAgdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoT2lk IHJlbElkLCBMaXN0ICpjb2xMaXN0LAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9D T0xVTU4pLAogCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIHJlZmVyZW5jZWQgaW4gZm9yZWln biBrZXkgY29uc3RyYWludCBkb2VzIG5vdCBleGlzdCIsCiAJCQkJCQkJYXR0bmFtZSkpKTsKKwog CQlpZiAoYXR0bnVtID49IElOREVYX01BWF9LRVlTKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ KGVycmNvZGUoRVJSQ09ERV9UT09fTUFOWV9DT0xVTU5TKSwKQEAgLTExMzQ5LDYgKzExNTI3LDkg QEAgdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoT2lkIHJlbElkLCBMaXN0ICpjb2xMaXN0LAogICoJ Zm9yIHRoZSBwa3JlbC4gIEFsc28gcmV0dXJuIHRoZSBpbmRleCBPSUQgYW5kIGluZGV4IG9wY2xh c3NlcyBvZiB0aGUKICAqCWluZGV4IHN1cHBvcnRpbmcgdGhlIHByaW1hcnkga2V5LiAgSWYgdGhp cyBpcyBhIHRlbXBvcmFsIHByaW1hcnkga2V5LAogICoJYWxzbyBzZXQgdGhlIFdJVEhPVVQgT1ZF UkxBUFMgYXR0cmlidXRlIG5hbWUsIGF0dG51bSwgYW5kIGF0dHR5cGlkLgorICoJRm9yIHJhbmdl cyB3ZSBvbmx5IHNldCBvbmUgdGhpbmcgZm9yIGVhY2ggb2YgdGhvc2UuIEZvciBwZXJpb2RzIHdl IHNldAorICoJdGhlIHN0YXJ0L2VuZCBjb2x1bW4gbmFtZXMgYW5kIGF0dG51bXMsIGJ1dCB0aGUg dHlwaWRzIHdlIHNldCB0byB0aGUKKyAqCXBlcmlvZCdzIHJhbmdlIHR5cGUuCiAgKgogICoJQWxs IHBhcmFtZXRlcnMgZXhjZXB0IHBrcmVsIGFyZSBvdXRwdXQgcGFyYW1ldGVycy4gIEFsc28sIHRo ZSBmdW5jdGlvbgogICoJcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYXR0cmlidXRlcyBp biB0aGUgcHJpbWFyeSBrZXksCkBAIC0xMTM2MCw2ICsxMTU0MSw4IEBAIHN0YXRpYyBpbnQKIHRy YW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAog CQkJCQkJICAgTGlzdCAqKmF0dG5hbWVsaXN0LAogCQkJCQkJICAgaW50MTYgKmF0dG51bXMsIE9p ZCAqYXR0dHlwaWRzLAorCQkJCQkJICAgTm9kZSAqKnBlcmlvZGF0dG5hbWUsIE9pZCAqcGVyaW9k aWQsCisJCQkJCQkgICBpbnQxNiAqcGVyaW9kYXR0bnVtcywgT2lkICpwZXJpb2RhdHR0eXBpZHMs CiAJCQkJCQkgICBPaWQgKm9wY2xhc3NlcykKIHsKIAlMaXN0CSAgICppbmRleG9pZGxpc3Q7CkBA IC0xMTQyNiwzNiArMTE2MDksODQgQEAgdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkoUmVsYXRp b24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAKIAkvKgogCSAqIE5vdyBidWlsZCB0aGUgbGlzdCBv ZiBQSyBhdHRyaWJ1dGVzIGZyb20gdGhlIGluZGtleSBkZWZpbml0aW9uICh3ZQotCSAqIGFzc3Vt ZSBhIHByaW1hcnkga2V5IGNhbm5vdCBoYXZlIGV4cHJlc3Npb25hbCBlbGVtZW50cykKKwkgKiBh c3N1bWUgYSBwcmltYXJ5IGtleSBjYW5ub3QgaGF2ZSBleHByZXNzaW9uYWwgZWxlbWVudHMsIHVu bGVzcyBpdAorCSAqIGhhcyBhIFBFUklPRCkKIAkgKi8KIAkqYXR0bmFtZWxpc3QgPSBOSUw7CiAJ Zm9yIChpID0gMDsgaSA8IGluZGV4U3RydWN0LT5pbmRua2V5YXR0czsgaSsrKQogCXsKIAkJaW50 CQkJcGthdHRubyA9IGluZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2ldOwogCi0JCWF0dG51bXNb aV0gPSBwa2F0dG5vOwotCQlhdHR0eXBpZHNbaV0gPSBhdHRudW1UeXBlSWQocGtyZWwsIHBrYXR0 bm8pOwotCQlvcGNsYXNzZXNbaV0gPSBpbmRjbGFzcy0+dmFsdWVzW2ldOwotCQkqYXR0bmFtZWxp c3QgPSBsYXBwZW5kKCphdHRuYW1lbGlzdCwKLQkJCQkJCQkgICBtYWtlU3RyaW5nKHBzdHJkdXAo TmFtZVN0cigqYXR0bnVtQXR0TmFtZShwa3JlbCwgcGthdHRubykpKSkpOworCQlpZiAoaSA9PSBp bmRleFN0cnVjdC0+aW5kbmtleWF0dHMgLSAxICYmIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lv bikKKwkJeworCQkJaWYgKHBrYXR0bm8gPT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQkvKiB3ZSBo YXZlIGEgcGVyaW9kICovCisJCQkJSGVhcFR1cGxlIHBlcmlvZFR1cGxlID0gU2VhcmNoU3lzQ2Fj aGUxKFBFUklPRE9JRCwgT2JqZWN0SWRHZXREYXR1bShpbmRleFN0cnVjdC0+aW5kcGVyaW9kKSk7 CisJCQkJRm9ybV9wZ19wZXJpb2QgcGVyaW9kOworCisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHBlcmlvZFR1cGxlKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IHBlcmlvZCAldSIsIGluZGV4U3RydWN0LT5pbmRwZXJpb2QpOworCisJCQkJcGVyaW9kID0gKEZv cm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QocGVyaW9kVHVwbGUpOworCQkJCWF0dG51bXNbaV0gPSBJ bnZhbGlkT2lkOworCQkJCXBlcmlvZGF0dG51bXNbMF0gPSBwZXJpb2QtPnBlcnN0YXJ0OworCQkJ CXBlcmlvZGF0dG51bXNbMV0gPSBwZXJpb2QtPnBlcmVuZDsKKwkJCQlwZXJpb2RhdHR0eXBpZHNb MF0gPSBwZXJpb2QtPnBlcnJuZ3R5cGU7CisJCQkJcGVyaW9kYXR0dHlwaWRzWzFdID0gcGVyaW9k LT5wZXJybmd0eXBlOworCQkJCW9wY2xhc3Nlc1tpXSA9IGluZGNsYXNzLT52YWx1ZXNbaV07CisJ CQkJKnBlcmlvZGlkID0gcGVyaW9kLT5vaWQ7CisJCQkJKnBlcmlvZGF0dG5hbWUgPSAoTm9kZSAq KW1ha2VTdHJpbmcocHN0cmR1cChOYW1lU3RyKHBlcmlvZC0+cGVybmFtZSkpKTsKKworCQkJCVJl bGVhc2VTeXNDYWNoZShwZXJpb2RUdXBsZSk7CisJCQl9CisJCQllbHNlIHsKKwkJCQkvKiB3ZSBo YXZlIGEgcmFuZ2UgKi8KKwkJCQkvKiBUaGUgY2FsbGVyIHdpbGwgc2V0IGF0dG51bXNbaV0gKi8K KwkJCQlwZXJpb2RhdHRudW1zWzBdID0gcGthdHRubzsKKwkJCQlwZXJpb2RhdHR0eXBpZHNbMF0g PSBhdHRudW1UeXBlSWQocGtyZWwsIHBrYXR0bm8pOworCQkJCW9wY2xhc3Nlc1tpXSA9IGluZGNs YXNzLT52YWx1ZXNbaV07CisJCQkJKnBlcmlvZGlkID0gSW52YWxpZE9pZDsKKwkJCQkqcGVyaW9k YXR0bmFtZSA9IChOb2RlICopbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIoKmF0dG51bUF0dE5h bWUocGtyZWwsIHBrYXR0bm8pKSkpOworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJYXR0bnVt c1tpXSA9IHBrYXR0bm87CisJCQlhdHR0eXBpZHNbaV0gPSBhdHRudW1UeXBlSWQocGtyZWwsIHBr YXR0bm8pOworCQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZhbHVlc1tpXTsKKwkJCSphdHRu YW1lbGlzdCA9IGxhcHBlbmQoKmF0dG5hbWVsaXN0LAorCQkJCQkJCQkgIG1ha2VTdHJpbmcocHN0 cmR1cChOYW1lU3RyKCphdHRudW1BdHROYW1lKHBrcmVsLCBwa2F0dG5vKSkpKSk7CisJCQkqcGVy aW9kaWQgPSBJbnZhbGlkT2lkOworCQl9CiAJfQogCiAJUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVw bGUpOwogCi0JcmV0dXJuIGk7CisJaWYgKGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbikgcmV0 dXJuIGkgLSAxOworCWVsc2UgcmV0dXJuIGk7CiB9CiAKIC8qCiAgKiB0cmFuc2Zvcm1Ga2V5Q2hl Y2tBdHRycyAtCiAgKgogICoJTWFrZSBzdXJlIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgYSByZWZl cmVuY2VkIHRhYmxlIGJlbG9uZyB0byBhIHVuaXF1ZQotICoJKG9yIHByaW1hcnkga2V5KSBjb25z dHJhaW50LiAgUmV0dXJuIHRoZSBPSUQgb2YgdGhlIGluZGV4IHN1cHBvcnRpbmcKLSAqCXRoZSBj b25zdHJhaW50LCBhcyB3ZWxsIGFzIHRoZSBvcGNsYXNzZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBp bmRleAorICoJKG9yIHByaW1hcnkga2V5KSBjb25zdHJhaW50LiAgT3IgaWYgdGhpcyBpcyBhIHRl bXBvcmFsIGZvcmVpZ24ga2V5CisgKgl0aGUgcHJpbWFyeSBrZXkgc2hvdWxkIGJlIGFuIGV4Y2x1 c2lvbiBjb25zdHJhaW50IGluc3RlYWQuCisgKglJdCdzIG9rYXkgdG8gaGF2ZSBhIFBFUklPRCBy ZWZlcmVuY2luZyBhIHJhbmdlIG9yIGEgcmFuZ2UgcmVmZXJlbmNpbmcKKyAqCWEgUEVSSU9ELCBh cyBsb25nIGFzIHRoZSB0eXBlcyBtYXRjaCB1cC4gSWYgdGhlIFBLIHVzZXMgYSBQRVJJT0QsCisg Kgl0aGVuIHBlcmlvZGlkIHNob3VsZCBiZSBzZXQgYW5kIHBlcmlvZGF0dG51bXMgc2hvdWxkIGNv bnRhaW4gdGhlCisgKglzdGFydCBhbmQgZW5kIGF0dG51bXMuIE90aGVyd2lzZSBwZXJpb2RhdHRu dW1zIHNob3VsZCBjb250YWluIHRoZQorICoJcmFuZ2UgYXR0bnVtLgorICoJUmV0dXJuIHRoZSBP SUQgb2YgdGhlIGluZGV4IHN1cHBvcnRpbmcgdGhlIGNvbnN0cmFpbnQsCisgKglhcyB3ZWxsIGFz IHRoZSBvcGNsYXNzZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbmRleAogICoJY29sdW1ucy4KICAq Lwogc3RhdGljIE9pZAogdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJ CQkJCQlpbnQgbnVtYXR0cnMsIGludDE2ICphdHRudW1zLAorCQkJCQkJYm9vbCBpc190ZW1wb3Jh bCwgaW50MTYgKnBlcmlvZGF0dG51bXMsCisJCQkJCQlPaWQgcGVyaW9kaWQsCiAJCQkJCQlPaWQg Km9wY2xhc3NlcykgLyogb3V0cHV0IHBhcmFtZXRlciAqLwogewogCU9pZAkJCWluZGV4b2lkID0g SW52YWxpZE9pZDsKQEAgLTExNDY1LDYgKzExNjk2LDcgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0 cnMoUmVsYXRpb24gcGtyZWwsCiAJTGlzdENlbGwgICAqaW5kZXhvaWRzY2FuOwogCWludAkJCWks CiAJCQkJajsKKwlib29sCQloYXNfcGVyaW9kID0gcGVyaW9kaWQgIT0gSW52YWxpZE9pZDsKIAog CS8qCiAJICogUmVqZWN0IGR1cGxpY2F0ZSBhcHBlYXJhbmNlcyBvZiBjb2x1bW5zIGluIHRoZSBy ZWZlcmVuY2VkLWNvbHVtbnMgbGlzdC4KQEAgLTExNDgyLDYgKzExNzE0LDEwIEBAIHRyYW5zZm9y bUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX0ZPUkVJR05fS0VZKSwKIAkJCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5IHJlZmVyZW5j ZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcyIpKSk7CiAJCX0KKwkJ aWYgKGlzX3RlbXBvcmFsICYmIGF0dG51bXNbaV0gPT0gcGVyaW9kYXR0bnVtc1swXSkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSks CisJCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qg bm90IGNvbnRhaW4gZHVwbGljYXRlcyIpKSk7CiAJfQogCiAJLyoKQEAgLTExNTAzLDE1ICsxMTcz OSwxOSBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJaW5kZXhT dHJ1Y3QgPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKGluZGV4VHVwbGUpOwogCiAJCS8qCi0J CSAqIE11c3QgaGF2ZSB0aGUgcmlnaHQgbnVtYmVyIG9mIGNvbHVtbnM7IG11c3QgYmUgdW5pcXVl IGFuZCBub3QgYQotCQkgKiBwYXJ0aWFsIGluZGV4OyBmb3JnZXQgaXQgaWYgdGhlcmUgYXJlIGFu eSBleHByZXNzaW9ucywgdG9vLiBJbnZhbGlkCi0JCSAqIGluZGV4ZXMgYXJlIG91dCBhcyB3ZWxs LgorCQkgKiBNdXN0IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBjb2x1bW5zOyBtdXN0IGJlIHVu aXF1ZQorCQkgKiAob3IgaWYgdGVtcG9yYWwgdGhlbiBleGNsdXNpb24gaW5zdGVhZCkgYW5kIG5v dCBhCisJCSAqIHBhcnRpYWwgaW5kZXg7IGZvcmdldCBpdCBpZiB0aGVyZSBhcmUgYW55IGV4cHJl c3Npb25zLCB0b28gKHVubGVzcworCQkgKiBpdCBoYXMgYSBQRVJJT0QpLiBJbnZhbGlkIGluZGV4 ZXMgYXJlIG91dCBhcyB3ZWxsLgogCQkgKi8KLQkJaWYgKGluZGV4U3RydWN0LT5pbmRua2V5YXR0 cyA9PSBudW1hdHRycyAmJgotCQkJaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlICYmCisJCWlmICgo aXNfdGVtcG9yYWwKKwkJCSAgPyAoaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzID09IG51bWF0dHJz ICsgMSAmJgorCQkJCSBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24pCisJCQkgIDogKGluZGV4 U3RydWN0LT5pbmRua2V5YXR0cyA9PSBudW1hdHRycyAmJgorCQkJCSBpbmRleFN0cnVjdC0+aW5k aXN1bmlxdWUpKSAmJgogCQkJaW5kZXhTdHJ1Y3QtPmluZGlzdmFsaWQgJiYKIAkJCWhlYXBfYXR0 aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5kZXhfaW5kcHJlZCwgTlVMTCkgJiYKLQkJCWhl YXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5kZXhfaW5kZXhwcnMsIE5VTEwpKQor CQkJKGluZGV4U3RydWN0LT5pbmRwZXJpb2QgIT0gSW52YWxpZE9pZCB8fCBoZWFwX2F0dGlzbnVs bChpbmRleFR1cGxlLCBBbnVtX3BnX2luZGV4X2luZGV4cHJzLCBOVUxMKSkpCiAJCXsKIAkJCURh dHVtCQlpbmRjbGFzc0RhdHVtOwogCQkJYm9vbAkJaXNudWxsOwpAQCAtMTE1NDgsNiArMTE3ODgs MzIgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJaWYgKCFm b3VuZCkKIAkJCQkJYnJlYWs7CiAJCQl9CisJCQlpZiAoZm91bmQgJiYgaXNfdGVtcG9yYWwpCisJ CQl7CisJCQkJaWYgKGhhc19wZXJpb2QpCisJCQkJeworCQkJCQlpZiAocGVyaW9kaWQgPT0gaW5k ZXhTdHJ1Y3QtPmluZHBlcmlvZCkKKwkJCQkJeworCQkJCQkJZm91bmQgPSB0cnVlOworCQkJCQkJ b3BjbGFzc2VzW251bWF0dHJzXSA9IGluZGNsYXNzLT52YWx1ZXNbbnVtYXR0cnMgLSAxXTsKKwkJ CQkJfQorCQkJCQllbHNlCisJCQkJCQlmb3VuZCA9IGZhbHNlOworCQkJCX0KKwkJCQllbHNlCisJ CQkJeworCQkJCQlmb3VuZCA9IGZhbHNlOworCQkJCQlmb3IgKGogPSAwOyBqIDwgbnVtYXR0cnMg KyAxOyBqKyspCisJCQkJCXsKKwkJCQkJCWlmIChwZXJpb2RhdHRudW1zWzBdID09IGluZGV4U3Ry dWN0LT5pbmRrZXkudmFsdWVzW2pdKQorCQkJCQkJeworCQkJCQkJCW9wY2xhc3Nlc1tudW1hdHRy c10gPSBpbmRjbGFzcy0+dmFsdWVzW2pdOworCQkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCQli cmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KIAogCQkJLyoKIAkJCSAqIFJlZnVz ZSB0byB1c2UgYSBkZWZlcnJhYmxlIHVuaXF1ZS9wcmltYXJ5IGtleS4gIFRoaXMgaXMgcGVyIFNR TApAQCAtMTE2NTcsNyArMTE5MjMsOCBAQCB2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNo YXIgKmNvbm5hbWUsCiAJCQkJCQkJIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkgUmVsYXRpb24gcGty ZWwsCiAJCQkJCQkJIE9pZCBwa2luZE9pZCwKLQkJCQkJCQkgT2lkIGNvbnN0cmFpbnRPaWQpCisJ CQkJCQkJIE9pZCBjb25zdHJhaW50T2lkLAorCQkJCQkJCSBib29sIHRlbXBvcmFsKQogewogCVR1 cGxlVGFibGVTbG90ICpzbG90OwogCVRhYmxlU2NhbkRlc2Mgc2NhbjsKQEAgLTExNjg3LDggKzEx OTU0LDEwIEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkv KgogCSAqIFNlZSBpZiB3ZSBjYW4gZG8gaXQgd2l0aCBhIHNpbmdsZSBMRUZUIEpPSU4gcXVlcnku ICBBIGZhbHNlIHJlc3VsdAogCSAqIGluZGljYXRlcyB3ZSBtdXN0IHByb2NlZWQgd2l0aCB0aGUg ZmlyZS10aGUtdHJpZ2dlciBtZXRob2QuCisJICogV2UgY2FuJ3QgZG8gYSBMRUZUIEpPSU4gZm9y IHRlbXBvcmFsIEZLcyB5ZXQsCisJICogYnV0IHdlIGNhbiBvbmNlIHdlIHN1cHBvcnQgdGVtcG9y YWwgbGVmdCBqb2lucy4KIAkgKi8KLQlpZiAoUklfSW5pdGlhbF9DaGVjaygmdHJpZywgcmVsLCBw a3JlbCkpCisJaWYgKCF0ZW1wb3JhbCAmJiBSSV9Jbml0aWFsX0NoZWNrKCZ0cmlnLCByZWwsIHBr cmVsKSkKIAkJcmV0dXJuOwogCiAJLyoKQEAgLTExNzQ5LDYgKzEyMDE4LDcgQEAgQ3JlYXRlRktD aGVja1RyaWdnZXIoT2lkIG15UmVsT2lkLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2Nv bnN0cmFpbnQsCiAJCQkJCSBPaWQgY29uc3RyYWludE9pZCwgT2lkIGluZGV4T2lkLCBib29sIG9u X2luc2VydCkKIHsKIAlDcmVhdGVUcmlnU3RtdCAqZmtfdHJpZ2dlcjsKKwlib29sIGlzX3RlbXBv cmFsID0gZmtjb25zdHJhaW50LT5ma19wZXJpb2Q7CiAKIAkvKgogCSAqIE5vdGU6IGZvciBhIHNl bGYtcmVmZXJlbnRpYWwgRksgKHJlZmVyZW5jaW5nIGFuZCByZWZlcmVuY2VkIHRhYmxlcyBhcmUK QEAgLTExNzYyLDE4ICsxMjAzMiwyNyBAQCBDcmVhdGVGS0NoZWNrVHJpZ2dlcihPaWQgbXlSZWxP aWQsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKIAlma190cmlnZ2Vy ID0gbWFrZU5vZGUoQ3JlYXRlVHJpZ1N0bXQpOwogCWZrX3RyaWdnZXItPnJlcGxhY2UgPSBmYWxz ZTsKIAlma190cmlnZ2VyLT5pc2NvbnN0cmFpbnQgPSB0cnVlOwotCWZrX3RyaWdnZXItPnRyaWdu YW1lID0gIlJJX0NvbnN0cmFpbnRUcmlnZ2VyX2MiOworCWlmIChpc190ZW1wb3JhbCkKKwkJZmtf dHJpZ2dlci0+dHJpZ25hbWUgPSAiVFJJX0NvbnN0cmFpbnRUcmlnZ2VyX2MiOworCWVsc2UKKwkJ ZmtfdHJpZ2dlci0+dHJpZ25hbWUgPSAiUklfQ29uc3RyYWludFRyaWdnZXJfYyI7CiAJZmtfdHJp Z2dlci0+cmVsYXRpb24gPSBOVUxMOwogCiAJLyogRWl0aGVyIE9OIElOU0VSVCBvciBPTiBVUERB VEUgKi8KIAlpZiAob25faW5zZXJ0KQogCXsKLQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSgiUklfRktleV9jaGVja19pbnMiKTsKKwkJaWYgKGlzX3RlbXBvcmFsKQorCQkJ ZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2hlY2tfaW5z Iik7CisJCWVsc2UKKwkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJ X0ZLZXlfY2hlY2tfaW5zIik7CiAJCWZrX3RyaWdnZXItPmV2ZW50cyA9IFRSSUdHRVJfVFlQRV9J TlNFUlQ7CiAJfQogCWVsc2UKIAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfY2hlY2tfdXBkIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZrX3Ry aWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2NoZWNrX3VwZCIpOwor CQllbHNlCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5 X2NoZWNrX3VwZCIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VSX1RZUEVfVVBEQVRF OwogCX0KIApAQCAtMTE4MjIsMzcgKzEyMTAxLDc2IEBAIGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25U cmlnZ2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3Ry CiAJZmtfdHJpZ2dlci0+d2hlbkNsYXVzZSA9IE5VTEw7CiAJZmtfdHJpZ2dlci0+dHJhbnNpdGlv blJlbHMgPSBOSUw7CiAJZmtfdHJpZ2dlci0+Y29uc3RycmVsID0gTlVMTDsKLQlzd2l0Y2ggKGZr Y29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwlpZiAoZmtjb25zdHJhaW50LT5ma19wZXJpb2Qg IT0gTlVMTCkKIAl7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgotCQkJZmtfdHJp Z2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKLQkJCWZrX3RyaWdn ZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkOwotCQkJZmtfdHJp Z2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9ub2FjdGlvbl9kZWwiKTsK LQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKLQkJCWZrX3RyaWdn ZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZh bHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9y ZXN0cmljdF9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURF OgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5p dGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNO YW1lKCJSSV9GS2V5X2Nhc2NhZGVfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9B Q1RJT05fU0VUTlVMTDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZr X3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUg PSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOwotCQkJYnJlYWs7Ci0JCWNh c2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxl ID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3Ry aWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwi KTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBG SyBhY3Rpb24gdHlwZTogJWQiLAotCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rp b24pOwotCQkJYnJlYWs7CisJCS8qIFRlbXBvcmFsIGZvcmVpZ24ga2V5cyAqLworCQlzd2l0Y2gg KGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJ T05fTk9BQ1RJT046CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ ZGVmZXJyYWJsZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQt PmluaXRkZWZlcnJlZDsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJUUklfRktleV9ub2FjdGlvbl9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJf QUNUSU9OX1JFU1RSSUNUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJ CQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5j bmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9yZXN0cmljdF9kZWwiKTsKKwkJCQlicmVh azsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVm ZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2Nhc2Nh ZGVfZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgor CQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNO YW1lKCJUUklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwiKTsKKwkJ CQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBh Y3Rpb24gdHlwZTogJWQiLAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9u KTsKKwkJCQlicmVhazsKKwkJfQorCX0KKwllbHNlCisJeworCQlzd2l0Y2ggKGZrY29uc3RyYWlu dC0+ZmtfZGVsX2FjdGlvbikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046 CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsK KwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJl ZDsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25v YWN0aW9uX2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJ Q1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXIt PmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVt RnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZL Q09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxz ZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2Vy LT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2Nhc2NhZGVfZGVsIik7CisJCQkJ YnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxz ZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Nl dG51bGxfZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZB VUxUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3Rl bUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7CisJCQkJYnJlYWs7CisJCQlkZWZh dWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwK KwkJCQkJIChpbnQpIGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbik7CisJCQkJYnJlYWs7CisJ CX0KIAl9CiAKIAkodm9pZCkgQ3JlYXRlVHJpZ2dlcihma190cmlnZ2VyLCBOVUxMLCByZWZSZWxP aWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKQEAgLTExODc5LDM3ICsxMjE5Nyw3NiBAQCBjcmVh dGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBD b25zdHJhaW50ICpma2NvbnN0cgogCWZrX3RyaWdnZXItPndoZW5DbGF1c2UgPSBOVUxMOwogCWZr X3RyaWdnZXItPnRyYW5zaXRpb25SZWxzID0gTklMOwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9 IE5VTEw7Ci0Jc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJaWYgKGZrY29u c3RyYWludC0+ZmtfcGVyaW9kICE9IE5VTEwpCiAJewotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9O T0FDVElPTjoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVy cmFibGU7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRk ZWZlcnJlZDsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZL ZXlfbm9hY3Rpb25fdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVT VFJJQ1Q6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVt RnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NP TlNUUl9BQ1RJT05fQ0FTQ0FERToKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsK LQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX3VwZCIpOwotCQkJYnJlYWs7 Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJh YmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZr X3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF91cGQi KTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgotCQkJZmtf dHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9G S2V5X3NldGRlZmF1bHRfdXBkIik7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKLQkJCQkgKGludCkgZmtjb25z dHJhaW50LT5ma191cGRfYWN0aW9uKTsKLQkJCWJyZWFrOworCQkvKiBUZW1wb3JhbCBmb3JlaWdu IGtleXMgKi8KKwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJCXsKKwkJ CWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFi bGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVy cmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25h bWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfbm9hY3Rpb25fdXBkIik7CisJCQkJYnJlYWs7 CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZl cnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJ CQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfcmVzdHJp Y3RfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgor CQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNO YW1lKCJUUklfRktleV9jYXNjYWRlX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fU0VUTlVMTDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJ CQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfc2V0bnVsbF91cGQiKTsKKwkJCQlicmVh azsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZmtfdHJpZ2dlci0+ ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNl OworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Nl dGRlZmF1bHRfdXBkIik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGZrY29uc3Ry YWludC0+ZmtfdXBkX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJ c3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJCXsKKwkJCWNhc2UgRktDT05T VFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0 cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25z dHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1G dW5jTmFtZSgiUklfRktleV9ub2FjdGlvbl91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktD T05TVFJfQUNUSU9OX1JFU1RSSUNUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxz ZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2Vy LT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Jlc3RyaWN0X3VwZCIpOworCQkJ CWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKKwkJCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9j YXNjYWRlX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVM TDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1G dW5jTmFtZSgiUklfRktleV9zZXRudWxsX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NP TlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRkZWZhdWx0X3VwZCIpOwor CQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZL IGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rp b24pOworCQkJCWJyZWFrOworCQl9CiAJfQogCiAJKHZvaWQpIENyZWF0ZVRyaWdnZXIoZmtfdHJp Z2dlciwgTlVMTCwgcmVmUmVsT2lkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 cmlnZ2VyLmMKaW5kZXggYTUwM2Q2MzhiZS4uY2Q1NjUzZTMxNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdn ZXIuYwpAQCAtODM5LDYgKzgzOSw3IEBAIENyZWF0ZVRyaWdnZXJGaXJpbmdPbihDcmVhdGVUcmln U3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJCQkJCSAgdHJ1ZSwg Lyogbm9pbmhlcml0ICovCiAJCQkJCQkJCQkJCSAgZmFsc2UsIC8qIGNvbnRlbXBvcmFsICovCiAJ CQkJCQkJCQkJCSAgSW52YWxpZE9pZCwgLyogY29ucGVyaW9kICovCisJCQkJCQkJCQkJCSAgSW52 YWxpZE9pZCwgLyogY29uZnBlcmlvZCAqLwogCQkJCQkJCQkJCQkgIGlzSW50ZXJuYWwpOwkvKiBp c19pbnRlcm5hbCAqLwogCX0KIApAQCAtMzg4NSw2ICszODg2LDcgQEAgYWZ0ZXJUcmlnZ2VyQWRk RXZlbnQoQWZ0ZXJUcmlnZ2VyRXZlbnRMaXN0ICpldmVudHMsCiAJCQluZXdzaGFyZWQtPmF0c19y ZWxpZCA9PSBldnRzaGFyZWQtPmF0c19yZWxpZCAmJgogCQkJbmV3c2hhcmVkLT5hdHNfZXZlbnQg PT0gZXZ0c2hhcmVkLT5hdHNfZXZlbnQgJiYKIAkJCW5ld3NoYXJlZC0+YXRzX3RhYmxlID09IGV2 dHNoYXJlZC0+YXRzX3RhYmxlICYmCisJCQluZXdzaGFyZWQtPmZvcl9wb3J0aW9uX29mID09IGV2 dHNoYXJlZC0+Zm9yX3BvcnRpb25fb2YgJiYKIAkJCW5ld3NoYXJlZC0+YXRzX2ZpcmluZ19pZCA9 PSAwKQogCQkJYnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKaW5kZXggNDUxNDM1ZWI2 OS4uNTUyOTZmMjllMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCkBAIC0zNTU1LDYgKzM1NTUs NyBAQCBkb21haW5BZGRDb25zdHJhaW50KE9pZCBkb21haW5PaWQsIE9pZCBkb21haW5OYW1lc3Bh Y2UsIE9pZCBiYXNlVHlwZU9pZCwKIAkJCQkJCQkgIGZhbHNlLAkvKiBjb25ub2luaGVyaXQgKi8K IAkJCQkJCQkgIGZhbHNlLAkvKiBjb250ZW1wb3JhbCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwg LyogY29ucGVyaW9kICovCisJCQkJCQkJICBJbnZhbGlkT2lkLCAvKiBjb25mcGVyaW9kICovCiAJ CQkJCQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAJaWYgKGNvbnN0ckFkZHIpCiAJCU9i amVjdEFkZHJlc3NTZXQoKmNvbnN0ckFkZHIsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBjY29pZCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3NyYy9iYWNrZW5k L25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IDlmYmZjZDU5YTAuLjIzMDJkYjA1N2QgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVz L2NvcHlmdW5jcy5jCkBAIC0zMTEzLDcgKzMxMTMsOSBAQCBfY29weUNvbnN0cmFpbnQoY29uc3Qg Q29uc3RyYWludCAqZnJvbSkKIAlDT1BZX05PREVfRklFTEQod2hlcmVfY2xhdXNlKTsKIAlDT1BZ X05PREVfRklFTEQocGt0YWJsZSk7CiAJQ09QWV9OT0RFX0ZJRUxEKGZrX2F0dHJzKTsKKwlDT1BZ X05PREVfRklFTEQoZmtfcGVyaW9kKTsKIAlDT1BZX05PREVfRklFTEQocGtfYXR0cnMpOworCUNP UFlfTk9ERV9GSUVMRChwa19wZXJpb2QpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGZrX21hdGNodHlw ZSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoZmtfdXBkX2FjdGlvbik7CiAJQ09QWV9TQ0FMQVJfRklF TEQoZmtfZGVsX2FjdGlvbik7CkBAIC0zMjE1LDYgKzMyMTcsNyBAQCBfY29weVF1ZXJ5KGNvbnN0 IFF1ZXJ5ICpmcm9tKQogCUNPUFlfU0NBTEFSX0ZJRUxEKGNhblNldFRhZyk7CiAJQ09QWV9OT0RF X0ZJRUxEKHV0aWxpdHlTdG10KTsKIAlDT1BZX1NDQUxBUl9GSUVMRChyZXN1bHRSZWxhdGlvbik7 CisJQ09QWV9OT0RFX0ZJRUxEKGZvclBvcnRpb25PZik7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaGFz QWdncyk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaGFzV2luZG93RnVuY3MpOwogCUNPUFlfU0NBTEFS X0ZJRUxEKGhhc1RhcmdldFNSRnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNjc4NzgwZjI4YS4uNTQ2NDdm NDNmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CkBAIC00OTQsMTEgKzQ5NCwxMiBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogJXR5cGUgPG5vZGU+CVRhYmxlRWxlbWVudCBUeXBlZFRhYmxlRWxlbWVudCBDb25z dHJhaW50RWxlbSBUYWJsZUZ1bmNFbGVtZW50CiAldHlwZSA8bm9kZT4JY29sdW1uRGVmIGNvbHVt bk9wdGlvbnMKICV0eXBlIDxkZWZlbHQ+CWRlZl9lbGVtIHJlbG9wdGlvbl9lbGVtIG9sZF9hZ2dy X2VsZW0gb3BlcmF0b3JfZGVmX2VsZW0KLSV0eXBlIDxub2RlPglkZWZfYXJnIGNvbHVtbkVsZW0g d2l0aG91dE92ZXJsYXBzQ2xhdXNlCisldHlwZSA8bm9kZT4JZGVmX2FyZyBjb2x1bW5FbGVtIHdp dGhvdXRPdmVybGFwc0NsYXVzZSBvcHRpb25hbFBlcmlvZE5hbWUKIAkJCQl3aGVyZV9jbGF1c2Ug d2hlcmVfb3JfY3VycmVudF9jbGF1c2UKIAkJCQlhX2V4cHIgYl9leHByIGNfZXhwciBBZXhwckNv bnN0IGluZGlyZWN0aW9uX2VsIG9wdF9zbGljZV9ib3VuZAogCQkJCWNvbHVtbnJlZiBpbl9leHBy IGhhdmluZ19jbGF1c2UgZnVuY190YWJsZSB4bWx0YWJsZSBhcnJheV9leHByCiAJCQkJT3B0V2hl cmVDbGF1c2Ugb3BlcmF0b3JfZGVmX2FyZworJXR5cGUgPGxpc3Q+CW9wdF9jb2x1bW5fYW5kX3Bl cmlvZF9saXN0CiAldHlwZSA8bGlzdD4Jcm93c2Zyb21faXRlbSByb3dzZnJvbV9saXN0IG9wdF9j b2xfZGVmX2xpc3QKICV0eXBlIDxib29sZWFuPiBvcHRfb3JkaW5hbGl0eQogJXR5cGUgPGxpc3Q+ CUV4Y2x1c2lvbkNvbnN0cmFpbnRMaXN0IEV4Y2x1c2lvbkNvbnN0cmFpbnRFbGVtCkBAIC0zOTM0 LDE5ICszOTM1LDIxIEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQkJCQkgICBOVUxMLCB5eXNjYW5u ZXIpOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9Ci0JCQl8IEZPUkVJR04gS0VZICcoJyBj b2x1bW5MaXN0ICcpJyBSRUZFUkVOQ0VTIHF1YWxpZmllZF9uYW1lCi0JCQkJb3B0X2NvbHVtbl9s aXN0IGtleV9tYXRjaCBrZXlfYWN0aW9ucyBDb25zdHJhaW50QXR0cmlidXRlU3BlYworCQkJfCBG T1JFSUdOIEtFWSAnKCcgY29sdW1uTGlzdCBvcHRpb25hbFBlcmlvZE5hbWUgJyknIFJFRkVSRU5D RVMgcXVhbGlmaWVkX25hbWUKKwkJCQlvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdCBrZXlfbWF0 Y2gga2V5X2FjdGlvbnMgQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKIAkJCQl7CiAJCQkJCUNvbnN0 cmFpbnQgKm4gPSBtYWtlTm9kZShDb25zdHJhaW50KTsKIAkJCQkJbi0+Y29udHlwZSA9IENPTlNU Ul9GT1JFSUdOOwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwotCQkJCQluLT5wa3RhYmxlID0gJDc7 CisJCQkJCW4tPnBrdGFibGUgPSAkODsKIAkJCQkJbi0+ZmtfYXR0cnMgPSAkNDsKLQkJCQkJbi0+ cGtfYXR0cnMgPSAkODsKLQkJCQkJbi0+ZmtfbWF0Y2h0eXBlID0gJDk7Ci0JCQkJCW4tPmZrX3Vw ZF9hY3Rpb24gPSAoY2hhcikgKCQxMCA+PiA4KTsKLQkJCQkJbi0+ZmtfZGVsX2FjdGlvbiA9IChj aGFyKSAoJDEwICYgMHhGRik7Ci0JCQkJCXByb2Nlc3NDQVNiaXRzKCQxMSwgQDExLCAiRk9SRUlH TiBLRVkiLAorCQkJCQluLT5ma19wZXJpb2QgPSAkNTsKKwkJCQkJbi0+cGtfYXR0cnMgPSBsaW5p dGlhbCgkOSk7CisJCQkJCW4tPnBrX3BlcmlvZCA9IGxzZWNvbmQoJDkpOworCQkJCQluLT5ma19t YXRjaHR5cGUgPSAkMTA7CisJCQkJCW4tPmZrX3VwZF9hY3Rpb24gPSAoY2hhcikgKCQxMSA+PiA4 KTsKKwkJCQkJbi0+ZmtfZGVsX2FjdGlvbiA9IChjaGFyKSAoJDExICYgMHhGRik7CisJCQkJCXBy b2Nlc3NDQVNiaXRzKCQxMiwgQDEyLCAiRk9SRUlHTiBLRVkiLAogCQkJCQkJCQkgICAmbi0+ZGVm ZXJyYWJsZSwgJm4tPmluaXRkZWZlcnJlZCwKIAkJCQkJCQkJICAgJm4tPnNraXBfdmFsaWRhdGlv biwgTlVMTCwKIAkJCQkJCQkJICAgeXlzY2FubmVyKTsKQEAgLTM5NzQsNiArMzk3NywxNiBAQCB3 aXRob3V0T3ZlcmxhcHNDbGF1c2U6CiAJCQl8IC8qRU1QVFkqLyAgICAgICAgICAgICAgIHsgJCQg PSBOVUxMOyB9CiAJOwogCitvcHRpb25hbFBlcmlvZE5hbWU6CisJCQknLCcgUEVSSU9EIGNvbHVt bkVsZW0geyAkJCA9ICQzOyB9CisJCQl8IC8qRU1QVFkqLyAgICAgICAgICAgICAgIHsgJCQgPSBO VUxMOyB9CisJOworCitvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdDoKKwkJCScoJyBjb2x1bW5M aXN0IG9wdGlvbmFsUGVyaW9kTmFtZSAnKScJCQl7ICQkID0gbGlzdF9tYWtlMigkMiwgJDMpOyB9 CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTIoTklMLCBOVUxMKTsgfQor CQk7CisKIGNvbHVtbkVsZW06IENvbElkCiAJCQkJewogCQkJCQkkJCA9IChOb2RlICopIG1ha2VT dHJpbmcoJDEpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMKaW5kZXggNWEzODE3ODQ4NS4u MTU5NGZlMGUyOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCkBAIC0yMTMwLDYgKzIx MzAsMzUgQEAgbWFrZV9lbXB0eV9yYW5nZShUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUpCiAJcmV0 dXJuIG1ha2VfcmFuZ2UodHlwY2FjaGUsICZsb3dlciwgJnVwcGVyLCB0cnVlKTsKIH0KIAorLyoK KyAqIENvbnZlcnQgYSByYW5nZSB0byBhIHN0cmluZy4gVGhpcyBpc24ndCB1c2VkIGFueXdoZXJl IGJ1dCBpdCBoYW5keSBmb3IgCisgKiBkZWJ1Z2dpbmcuIFBlcmhhcHMgd2Ugc2hvdWxkIHJlbW92 ZSBpdD8KKyAqLworY2hhciAqCityYW5nZV9hc19zdHJpbmcoUmFuZ2VUeXBlICpyKQoreworICBp bnQxNiAgICAgICB0eXBsZW47CisgIGJvb2wgICAgICAgIHR5cGJ5dmFsOworICBjaGFyICAgICAg ICB0eXBhbGlnbjsKKyAgY2hhciAgICAgICAgdHlwZGVsaW07CisgIGNoYXIJCSAqcmFuZ2VTdHI7 CisgIE9pZCB0eXBpb3BhcmFtOworICBPaWQgcmFuZ2Vfb3V0X29pZDsKKworICBnZXRfdHlwZV9p b19kYXRhKAorCQkgIFJhbmdlVHlwZUdldE9pZChyKSwKKwkJICBJT0Z1bmNfb3V0cHV0LAorCQkg ICZ0eXBsZW4sCisJCSAgJnR5cGJ5dmFsLAorCQkgICZ0eXBhbGlnbiwKKwkJICAmdHlwZGVsaW0s CisJCSAgJnR5cGlvcGFyYW0sCisJCSAgJnJhbmdlX291dF9vaWQpOworICByYW5nZVN0ciA9IE9p ZE91dHB1dEZ1bmN0aW9uQ2FsbChyYW5nZV9vdXRfb2lkLCBSYW5nZVR5cGVQR2V0RGF0dW0ocikp OworCisgIHJldHVybiByYW5nZVN0cjsKK30KKwogCiAvKgogICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y aV90cmlnZ2Vycy5jCmluZGV4IDk2MjY5ZmMyYWQuLjQ2MDZlZTgxZDAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2Qu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3JhbmdlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9y L2V4ZWN1dG9yLmgiCkBAIC03OCw2ICs4MCwxMCBAQAogI2RlZmluZSBSSV9QTEFOX1JFU1RSSUNU X0NIRUNLUkVGCQk1CiAjZGVmaW5lIFJJX1BMQU5fU0VUTlVMTF9ET1VQREFURQkJNgogI2RlZmlu ZSBSSV9QTEFOX1NFVERFRkFVTFRfRE9VUERBVEUJCTcKKyNkZWZpbmUgVFJJX1BMQU5fQ0FTQ0FE RV9ERUxfRE9ERUxFVEUJOAorI2RlZmluZSBUUklfUExBTl9DQVNDQURFX1VQRF9ET1VQREFURQk5 CisjZGVmaW5lIFRSSV9QTEFOX1NFVE5VTExfRE9VUERBVEUJCTEwCisjZGVmaW5lIFRSSV9QTEFO X1NFVERFRkFVTFRfRE9VUERBVEUJMTEKIAogI2RlZmluZSBNQVhfUVVPVEVEX05BTUVfTEVOICAo TkFNRURBVEFMRU4qMiszKQogI2RlZmluZSBNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTiAgKE1BWF9R VU9URURfTkFNRV9MRU4qMikKQEAgLTExMSw3ICsxMTcsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgUklf Q29uc3RyYWludEluZm8KIAljaGFyCQljb25mdXBkdHlwZTsJLyogZm9yZWlnbiBrZXkncyBPTiBV UERBVEUgYWN0aW9uICovCiAJY2hhcgkJY29uZmRlbHR5cGU7CS8qIGZvcmVpZ24ga2V5J3MgT04g REVMRVRFIGFjdGlvbiAqLwogCWNoYXIJCWNvbmZtYXRjaHR5cGU7CS8qIGZvcmVpZ24ga2V5J3Mg bWF0Y2ggdHlwZSAqLworCWJvb2wJCXRlbXBvcmFsOwkJLyogaWYgdGhlIGZvcmVpZ24ga2V5IGlz IHRlbXBvcmFsICovCiAJaW50CQkJbmtleXM7CQkJLyogbnVtYmVyIG9mIGtleSBjb2x1bW5zICov CisJT2lkCQkJcGtfcGVyaW9kOwkJLyogc2V0IGlmIHRoZSB0ZW1wb3JhbCBwcmltYXJ5IGtleSBo YXMgYSBwZXJpb2QgKi8KKwlPaWQJCQlma19wZXJpb2Q7CQkvKiBzZXQgaWYgdGhlIHRlbXBvcmFs IGZvcmVpZ24ga2V5IGhhcyBhIHBlcmlvZCAqLworCU9pZAkJCXBrX3BlcmlvZF9yYW5nZXR5cGU7 CQkvKiBzZXQgaWYgdGhlIHRlbXBvcmFsIHByaW1hcnkga2V5IGhhcyBhIHBlcmlvZCAqLworCU9p ZAkJCWZrX3BlcmlvZF9yYW5nZXR5cGU7CQkvKiBzZXQgaWYgdGhlIHRlbXBvcmFsIGZvcmVpZ24g a2V5IGhhcyBhIHBlcmlvZCAqLworCWNoYXIJCXBrX3BlcmlvZF9yYW5nZXR5cGVfbmFtZVtOQU1F REFUQUxFTl07CS8qIHBrIHBlcmlvZCdzIHJhbmdldHlwZSdzIG5hbWUgKi8KKwljaGFyCQlma19w ZXJpb2RfcmFuZ2V0eXBlX25hbWVbTkFNRURBVEFMRU5dOwkvKiBmayBwZXJpb2QncyByYW5nZXR5 cGUncyBuYW1lICovCisJT2lkCQkJcGtfcGVyaW9kX2NvbGxhdGlvbjsJCS8qIHBrIHBlcmlvZCdz IHJhbmdldHlwZSdzIGNvbGxhdGlvbiAqLworCU9pZAkJCWZrX3BlcmlvZF9jb2xsYXRpb247CQkv KiBmayBwZXJpb2QncyByYW5nZXR5cGUncyBjb2xsYXRpb24gKi8KKwlpbnQxNgkJcGtfcGVyaW9k X2F0dG51bXNbMl07CQkvKiBhdHRudW1zIG9mIHRoZSByZWZlcmVuY2VkIHBlcmlvZCBjb2xzICov CisJaW50MTYJCWZrX3BlcmlvZF9hdHRudW1zWzJdOwkJLyogYXR0bnVtcyBvZiB0aGUgcmVmZXJl bmNpbmcgcGVyaW9kIGNvbHMgKi8KIAlpbnQxNgkJcGtfYXR0bnVtc1tSSV9NQVhfTlVNS0VZU107 IC8qIGF0dG51bXMgb2YgcmVmZXJlbmNlZCBjb2xzICovCiAJaW50MTYJCWZrX2F0dG51bXNbUklf TUFYX05VTUtFWVNdOyAvKiBhdHRudW1zIG9mIHJlZmVyZW5jaW5nIGNvbHMgKi8KIAlPaWQJCQlw Zl9lcV9vcHJzW1JJX01BWF9OVU1LRVlTXTsgLyogZXF1YWxpdHkgb3BlcmF0b3JzIChQSyA9IEZL KSAqLwpAQCAtMTgxLDYgKzE5OCw3IEBAIHN0YXRpYyBib29sIHJpX0NoZWNrX1BrX01hdGNoKFJl bGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJCQkJCSAgY29uc3QgUklfQ29uc3Ry YWludEluZm8gKnJpaW5mbyk7CiBzdGF0aWMgRGF0dW0gcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEg KnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbik7CiBzdGF0aWMgRGF0dW0gcmlfc2V0KFRyaWdn ZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCk7CitzdGF0aWMgRGF0dW0gdHJpX3Nl dChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwpOwogc3RhdGljIHZvaWQg cXVvdGVPbmVOYW1lKGNoYXIgKmJ1ZmZlciwgY29uc3QgY2hhciAqbmFtZSk7CiBzdGF0aWMgdm9p ZCBxdW90ZVJlbGF0aW9uTmFtZShjaGFyICpidWZmZXIsIFJlbGF0aW9uIHJlbCk7CiBzdGF0aWMg dm9pZCByaV9HZW5lcmF0ZVF1YWwoU3RyaW5nSW5mbyBidWYsCkBAIC0xOTQsNyArMjEyLDcgQEAg c3RhdGljIGludAlyaV9OdWxsQ2hlY2soVHVwbGVEZXNjIHR1cGRlc2MsIFR1cGxlVGFibGVTbG90 ICpzbG90LAogc3RhdGljIHZvaWQgcmlfQnVpbGRRdWVyeUtleShSSV9RdWVyeUtleSAqa2V5LAog CQkJCQkJCSBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJCSBpbnQzMiBj b25zdHJfcXVlcnlubyk7Ci1zdGF0aWMgYm9vbCByaV9LZXlzRXF1YWwoUmVsYXRpb24gcmVsLCBU dXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCitzdGF0aWMg Ym9vbCByaV9LZXlzU3RhYmxlKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3Qs IFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAogCQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZv ICpyaWluZm8sIGJvb2wgcmVsX2lzX3BrKTsKIHN0YXRpYyBib29sIHJpX0F0dHJpYnV0ZXNFcXVh bChPaWQgZXFfb3ByLCBPaWQgdHlwZWlkLAogCQkJCQkJCSAgIERhdHVtIG9sZHZhbHVlLCBEYXR1 bSBuZXd2YWx1ZSk7CkBAIC0yMDksNiArMjI3LDcgQEAgc3RhdGljIHZvaWQgcmlfQ2hlY2tUcmln Z2VyKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIAkJCQkJ CQlpbnQgdGdraW5kKTsKIHN0YXRpYyBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlfRmV0Y2hD b25zdHJhaW50SW5mbyhUcmlnZ2VyICp0cmlnZ2VyLAogCQkJCQkJCQkJCQkJCSAgIFJlbGF0aW9u IHRyaWdfcmVsLCBib29sIHJlbF9pc19wayk7CitzdGF0aWMgdm9pZCBEZWNvbnN0cnVjdEZrQ29u c3RyYWludFBlcmlvZChPaWQgcGVyaW9kaWQsIE9pZCAqcmFuZ2V0eXBlaWQsIGNoYXIgKnJhbmdl dHlwZW5hbWUsIE9pZCAqcm5nY29sbGF0aW9uLCBpbnQxNiAqYXR0bnVtcyk7CiBzdGF0aWMgY29u c3QgUklfQ29uc3RyYWludEluZm8gKnJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQgY29uc3RyYWlu dE9pZCk7CiBzdGF0aWMgT2lkCWdldF9yaV9jb25zdHJhaW50X3Jvb3QoT2lkIGNvbnN0ck9pZCk7 CiBzdGF0aWMgU1BJUGxhblB0ciByaV9QbGFuQ2hlY2soY29uc3QgY2hhciAqcXVlcnlzdHIsIGlu dCBuYXJncywgT2lkICphcmd0eXBlcywKQEAgLTIxNywxNiArMjM2LDk5IEBAIHN0YXRpYyBib29s IHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJ CVJJX1F1ZXJ5S2V5ICpxa2V5LCBTUElQbGFuUHRyIHFwbGFuLAogCQkJCQkJCVJlbGF0aW9uIGZr X3JlbCwgUmVsYXRpb24gcGtfcmVsLAogCQkJCQkJCVR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBU dXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKKwkJCQkJCQlib29sIGhhc0ZvclBvcnRpb25PZiwgRGF0 dW0gZm9yUG9ydGlvbk9mLAogCQkJCQkJCWJvb2wgZGV0ZWN0TmV3Um93cywgaW50IGV4cGVjdF9P Syk7CiBzdGF0aWMgdm9pZCByaV9FeHRyYWN0VmFsdWVzKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJs ZVNsb3QgKnNsb3QsCiAJCQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGJv b2wgcmVsX2lzX3BrLAorCQkJCQkJCSBib29sIGhhc0ZvclBvcnRpb25PZiwgRGF0dW0gZm9yUG9y dGlvbk9mLAogCQkJCQkJCSBEYXR1bSAqdmFscywgY2hhciAqbnVsbHMpOwogc3RhdGljIHZvaWQg cmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJ CQkJICAgUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBma19yZWwsCiAJCQkJCQkJICAgVHVwbGVU YWJsZVNsb3QgKnZpb2xhdG9yc2xvdCwgVHVwbGVEZXNjIHR1cGRlc2MsCiAJCQkJCQkJICAgaW50 IHF1ZXJ5bm8sIGJvb2wgcGFydGdvbmUpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOworc3RhdGlj IERhdHVtIHR1cGxlUmFuZ2UoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGNvbnN0IFJJX0NvbnN0cmFp bnRJbmZvICpyaWluZm8pOwogCiAKKy8qCisgKiBxdWVyeV9wZXJpb2RfcmFuZ2UKKyAqCisgKiBC dWlsZHMgYSBTUUwgc3RyaW5nIHRvIGNvbnN0cnVjdCBhIHJhbmdlIGZyb20gYSBwZXJpb2QncyBz dGFydCBhbmQgZW5kIGNvbHVtbnMuCisgKi8KK3N0YXRpYyBjaGFyICoKK3F1ZXJ5X3BlcmlvZF9y YW5nZShjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBSZWxhdGlvbiByZWwsIGNvbnN0 IGNoYXIgKnRhYmxlX25hbWUsIGJvb2wgcmVsX2lzX3BrKQoreworCVN0cmluZ0luZm8gc3RyID0g bWFrZVN0cmluZ0luZm8oKTsKKwljaGFyIGF0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTiArIDNd OworCWludCB0YWJsZV9uYW1lX2xlbiA9IHN0cmxlbih0YWJsZV9uYW1lKTsKKworCUFzc2VydCh0 YWJsZV9uYW1lX2xlbiA8PSAzKTsKKworCXN0cmNweShhdHRuYW1lLCB0YWJsZV9uYW1lKTsKKwlp ZiAocmVsX2lzX3BrKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIlcygiLCByaWluZm8t PnBrX3BlcmlvZF9yYW5nZXR5cGVfbmFtZSk7CisKKwkJcXVvdGVPbmVOYW1lKGF0dG5hbWUgKyB0 YWJsZV9uYW1lX2xlbiwKKwkJCQkJIFJJQXR0TmFtZShyZWwsIHJpaW5mby0+cGtfcGVyaW9kX2F0 dG51bXNbMF0pKTsKKwkJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIlcywgIiwgYXR0bmFtZSk7CisK KwkJcXVvdGVPbmVOYW1lKGF0dG5hbWUgKyB0YWJsZV9uYW1lX2xlbiwKKwkJCQkJIFJJQXR0TmFt ZShyZWwsIHJpaW5mby0+cGtfcGVyaW9kX2F0dG51bXNbMV0pKTsKKwkJYXBwZW5kU3RyaW5nSW5m byhzdHIsICIlcykiLCBhdHRuYW1lKTsKKwl9CisJZWxzZQorCXsKKwkJYXBwZW5kU3RyaW5nSW5m byhzdHIsICIlcygiLCByaWluZm8tPmZrX3BlcmlvZF9yYW5nZXR5cGVfbmFtZSk7CisKKwkJcXVv dGVPbmVOYW1lKGF0dG5hbWUgKyB0YWJsZV9uYW1lX2xlbiwKKwkJCQkJIFJJQXR0TmFtZShyZWws IHJpaW5mby0+ZmtfcGVyaW9kX2F0dG51bXNbMF0pKTsKKwkJYXBwZW5kU3RyaW5nSW5mbyhzdHIs ICIlcywgIiwgYXR0bmFtZSk7CisKKwkJcXVvdGVPbmVOYW1lKGF0dG5hbWUgKyB0YWJsZV9uYW1l X2xlbiwKKwkJCQkJIFJJQXR0TmFtZShyZWwsIHJpaW5mby0+ZmtfcGVyaW9kX2F0dG51bXNbMV0p KTsKKwkJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIlcykiLCBhdHRuYW1lKTsKKwl9CisKKwlyZXR1 cm4gcHN0cmR1cChzdHItPmRhdGEpOworfQorCisKK3N0YXRpYyBEYXR1bQorYnVpbGRfcGVyaW9k X3JhbmdlKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIFR1cGxlVGFibGVTbG90ICpz bG90LCBib29sIHJlbF9pc19waykKK3sKKwljb25zdCBpbnQxNiAqcGVyaW9kX2F0dG51bXMgPSBy ZWxfaXNfcGsgPyByaWluZm8tPnBrX3BlcmlvZF9hdHRudW1zIDogcmlpbmZvLT5ma19wZXJpb2Rf YXR0bnVtczsKKwlPaWQJcmFuZ2V0eXBlID0gcmVsX2lzX3BrID8gcmlpbmZvLT5wa19wZXJpb2Rf cmFuZ2V0eXBlIDogcmlpbmZvLT5ma19wZXJpb2RfcmFuZ2V0eXBlOworCURhdHVtIHN0YXJ0dmFs dWU7CisJRGF0dW0gZW5kdmFsdWU7CisJRGF0dW0gcmVzdWx0OworCWJvb2wJc3RhcnRpc251bGw7 CisJYm9vbAllbmRpc251bGw7CisJTE9DQUxfRkNJTkZPKGZjaW5mbywgMik7CisJRm1nckluZm8J ZmxpbmZvOworCUZ1bmNFeHByICAgKmY7CisKKwlJbml0RnVuY3Rpb25DYWxsSW5mb0RhdGEoKmZj aW5mbywgJmZsaW5mbywgMiwgSW52YWxpZE9pZCwgTlVMTCwgTlVMTCk7CisJZiA9IG1ha2VOb2Rl KEZ1bmNFeHByKTsKKwlmLT5mdW5jcmVzdWx0dHlwZSA9IHJhbmdldHlwZTsKKwlmbGluZm8uZm5f ZXhwciA9IChOb2RlICopIGY7CisJZmxpbmZvLmZuX2V4dHJhID0gTlVMTDsKKworCS8qIGNvbXB1 dGUgb2xkdmFsdWUgKi8KKwlzdGFydHZhbHVlID0gc2xvdF9nZXRhdHRyKHNsb3QsIHBlcmlvZF9h dHRudW1zWzBdLCAmc3RhcnRpc251bGwpOworCWVuZHZhbHVlID0gc2xvdF9nZXRhdHRyKHNsb3Qs IHBlcmlvZF9hdHRudW1zWzFdLCAmZW5kaXNudWxsKTsKKworCWZjaW5mby0+YXJnc1swXS52YWx1 ZSA9IHN0YXJ0dmFsdWU7CisJZmNpbmZvLT5hcmdzWzBdLmlzbnVsbCA9IHN0YXJ0aXNudWxsOwor CWZjaW5mby0+YXJnc1sxXS52YWx1ZSA9IGVuZHZhbHVlOworCWZjaW5mby0+YXJnc1sxXS5pc251 bGwgPSBlbmRpc251bGw7CisKKwlyZXN1bHQgPSByYW5nZV9jb25zdHJ1Y3RvcjIoZmNpbmZvKTsK KwlpZiAoZmNpbmZvLT5pc251bGwpCisJCWVsb2coRVJST1IsICJmdW5jdGlvbiAldSByZXR1cm5l ZCBOVUxMIiwgZmxpbmZvLmZuX29pZCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgogICog UklfRktleV9jaGVjayAtCiAgKgpAQCAtMzQ4LDYgKzQ1MCw3IEBAIFJJX0ZLZXlfY2hlY2soVHJp Z2dlckRhdGEgKnRyaWdkYXRhKQogCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKIAkJY2hhcgkJ cGtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKIAkJY2hhcgkJYXR0bmFtZVtNQVhf UVVPVEVEX05BTUVfTEVOXTsKKwkJY2hhcgkgICAqYXR0c3RyOwogCQljaGFyCQlwYXJhbW5hbWVb MTZdOwogCQljb25zdCBjaGFyICpxdWVyeXNlcDsKIAkJT2lkCQkJcXVlcnlvaWRzW1JJX01BWF9O VU1LRVlTXTsKQEAgLTM1NSwzNSArNDU4LDg2IEBAIFJJX0ZLZXlfY2hlY2soVHJpZ2dlckRhdGEg KnRyaWdkYXRhKQogCiAJCS8qIC0tLS0tLS0tLS0KIAkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWls dCBpcwotCQkgKglTRUxFQ1QgMSBGUk9NIFtPTkxZXSA8cGt0YWJsZT4geCBXSEVSRSBwa2F0dDEg PSAkMSBbQU5EIC4uLl0KLQkJICoJCSAgIEZPUiBLRVkgU0hBUkUgT0YgeAorCQkgKglTRUxFQ1Qg MQorCQkgKglGUk9NIFtPTkxZXSA8cGt0YWJsZT4geCBXSEVSRSBwa2F0dDEgPSAkMSBbQU5EIC4u Ll0KKwkJICoJRk9SIEtFWSBTSEFSRSBPRiB4CiAJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRoZSAk IHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQogCQkgKiBjb3JyZXNwb25kaW5nIEZLIGF0dHJp YnV0ZXMuCisJCSAqCisJCSAqIEJ1dCBmb3IgdGVtcG9yYWwgRktzIHdlIG5lZWQgdG8gbWFrZSBz dXJlCisJCSAqIHRoZSBGSydzIHJhbmdlIGlzIGNvbXBsZXRlbHkgY292ZXJlZC4KKwkJICogU28g d2UgdXNlIHRoaXMgcXVlcnkgaW5zdGVhZDoKKwkJICogIFNFTEVDVCAxCisJCSAqCUZST00JKAor CQkgKgkJU0VMRUNUIHBrcGVyaW9kYXR0IEFTIHIKKwkJICoJCUZST00gICBbT05MWV0gcGt0YWJs ZSB4CisJCSAqCQlXSEVSRSAgcGthdHQxID0gJDEgW0FORCAuLi5dCisJCSAqCQlBTkQgICAgcGtw ZXJpb2RhdHQgJiYgJG4KKwkJICoJCUZPUiBLRVkgU0hBUkUgT0YgeAorCQkgKgkpIHgxCisJCSAq ICBIQVZJTkcgJG4gPEAgcmFuZ2VfYWdnKHgxLnIpCisJCSAqIE5vdGUgaWYgRk9SIEtFWSBTSEFS RSBldmVyIGFsbG93cyBHUk9VUCBCWSBhbmQgSEFWSU5HCisJCSAqIHdlIGNhbiBtYWtlIHRoaXMg YSBiaXQgc2ltcGxlci4KIAkJICogLS0tLS0tLS0tLQogCQkgKi8KIAkJaW5pdFN0cmluZ0luZm8o JnF1ZXJ5YnVmKTsKIAkJcGtfb25seSA9IHBrX3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUgPwogCQkJIiIgOiAiT05MWSAiOwogCQlxdW90ZVJlbGF0aW9u TmFtZShwa3JlbG5hbWUsIHBrX3JlbCk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAi U0VMRUNUIDEgRlJPTSAlcyVzIHgiLAotCQkJCQkJIHBrX29ubHksIHBrcmVsbmFtZSk7CisJCWlm IChyaWluZm8tPnRlbXBvcmFsKQorCQl7CisJCQlpZiAocmlpbmZvLT5wa19wZXJpb2QgPT0gSW52 YWxpZE9pZCkKKwkJCXsKKwkJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJCVJJQXR0TmFt ZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKKwkJCQlh dHRzdHIgPSBhdHRuYW1lOworCQkJfQorCQkJZWxzZQorCQkJCWF0dHN0ciA9IHF1ZXJ5X3Blcmlv ZF9yYW5nZShyaWluZm8sIHBrX3JlbCwgInguIiwgdHJ1ZSk7CisKKwkJCWFwcGVuZFN0cmluZ0lu Zm8oJnF1ZXJ5YnVmLAorCQkJCQkiU0VMRUNUIDEgRlJPTSAoU0VMRUNUICVzIEFTIHIgRlJPTSAl cyVzIHgiLAorCQkJCQlhdHRzdHIsIHBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KKwkJZWxzZSB7 CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwK KwkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQogCQlxdWVyeXNlcCA9ICJXSEVSRSI7 CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7Ci0JCQlPaWQJ CQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJ CU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0p OworCQkJT2lkCXBrX3R5cGU7CisJCQlPaWQJZmtfdHlwZTsKKworCQkJaWYgKHJpaW5mby0+cGtf YXR0bnVtc1tpXSA9PSBJbnZhbGlkT2lkKQorCQkJeworCQkJCXBrX3R5cGUgPSByaWluZm8tPnBr X3BlcmlvZF9yYW5nZXR5cGU7CisJCQkJYXR0c3RyID0gcXVlcnlfcGVyaW9kX3JhbmdlKHJpaW5m bywgcGtfcmVsLCAieC4iLCB0cnVlKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlwa190eXBl ID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCQlxdW90ZU9u ZU5hbWUoYXR0bmFtZSwKKwkJCQkJCQkgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKSk7CisJCQkJYXR0c3RyID0gYXR0bmFtZTsKKwkJCX0KKworCQkJaWYgKHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSA9PSBJbnZhbGlkT2lkKQorCQkJCWZrX3R5cGUgPSByaWluZm8tPmZrX3Bl cmlvZF9yYW5nZXR5cGU7CisJCQllbHNlCisJCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWws IHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAKLQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAotCQkJ CQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkpOwogCQkJc3ByaW50 ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVm LCBxdWVyeXNlcCwKLQkJCQkJCQlhdHRuYW1lLCBwa190eXBlLAorCQkJCQkJCWF0dHN0ciwgcGtf dHlwZSwKIAkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCiAJCQkJCQkJcGFyYW1uYW1lLCBm a190eXBlKTsKIAkJCXF1ZXJ5c2VwID0gIkFORCI7CiAJCQlxdWVyeW9pZHNbaV0gPSBma190eXBl OwogCQl9CiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCAiIEZPUiBLRVkgU0hB UkUgT0YgeCIpOworCQlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwkJCWFwcGVuZFN0cmluZ0luZm8o JnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgJCVkIDxAIHBnX2NhdGFsb2cucmFuZ2VfYWdnKHgxLnIp IiwgcmlpbmZvLT5ua2V5cyk7CiAKIAkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLwog CQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlzLCBxdWVy eW9pZHMsCkBAIC00MDAsNiArNTU0LDcgQEAgUklfRktleV9jaGVjayhUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19y ZWwsIHBrX3JlbCwKIAkJCQkJTlVMTCwgbmV3c2xvdCwKKwkJCQkJZmFsc2UsIDAsCiAJCQkJCXBr X3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUsCiAJCQkJ CVNQSV9PS19TRUxFQ1QpOwogCkBAIC01MDIsMTMgKzY1NywyNCBAQCByaV9DaGVja19Qa19NYXRj aChSZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAkJcXVlcnlzZXAgPSAiV0hFUkUi OwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAkJewotCQkJT2lk CQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJ CQlPaWQJCXBrX3R5cGU7CisJCQljaGFyICAgKmF0dHN0cjsKKwkJCWlmIChyaWluZm8tPnBrX2F0 dG51bXNbaV0gPT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQlwa190eXBlID0gcmlpbmZvLT5wa19w ZXJpb2RfcmFuZ2V0eXBlOworCQkJCWF0dHN0ciA9IHF1ZXJ5X3BlcmlvZF9yYW5nZShyaWluZm8s IHBrX3JlbCwgInguIiwgdHJ1ZSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcGtfdHlwZSA9 IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQkJcXVvdGVPbmVO YW1lKGF0dG5hbWUsCisJCQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVt c1tpXSkpOworCQkJCWF0dHN0ciA9IGF0dG5hbWU7CisJCQl9CiAKLQkJCXF1b3RlT25lTmFtZShh dHRuYW1lLAotCQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkp OwogCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CiAJCQlyaV9HZW5lcmF0ZVF1 YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKLQkJCQkJCQlhdHRuYW1lLCBwa190eXBlLAorCQkJCQkJ CWF0dHN0ciwgcGtfdHlwZSwKIAkJCQkJCQlyaWluZm8tPnBwX2VxX29wcnNbaV0sCiAJCQkJCQkJ cGFyYW1uYW1lLCBwa190eXBlKTsKIAkJCXF1ZXJ5c2VwID0gIkFORCI7CkBAIC01MjcsNiArNjkz LDcgQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBma19yZWws CiAJcmVzdWx0ID0gcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQkJ CSBma19yZWwsIHBrX3JlbCwKIAkJCQkJCQkgb2xkc2xvdCwgTlVMTCwKKwkJCQkJCQkgZmFsc2Us IDAsCiAJCQkJCQkJIHRydWUsCS8qIHRyZWF0IGxpa2UgdXBkYXRlICovCiAJCQkJCQkJIFNQSV9P S19TRUxFQ1QpOwogCkBAIC02NjcsNiArODM0LDcgQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEg KnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7 CiAJCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CiAJCWNoYXIJCWF0 dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTl07CisJCWNoYXIJICAgKmF0dHN0cjsKIAkJY2hhcgkJ cGFyYW1uYW1lWzE2XTsKIAkJY29uc3QgY2hhciAqcXVlcnlzZXA7CiAJCU9pZAkJCXF1ZXJ5b2lk c1tSSV9NQVhfTlVNS0VZU107CkBAIC02ODksMTggKzg1Nyw0NiBAQCByaV9yZXN0cmljdChUcmln Z2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9fYWN0aW9uKQogCQlxdWVyeXNlcCA9ICJXSEVS RSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7Ci0JCQlP aWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsK LQkJCU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNb aV0pOwotCQkJT2lkCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5w a19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWws IHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQJCXBrX3R5cGU7CisJCQlPaWQJCWZrX3R5 cGU7CisJCQlPaWQJCXBrX2NvbGw7CisJCQlPaWQJCWZrX2NvbGw7CiAKLQkJCXF1b3RlT25lTmFt ZShhdHRuYW1lLAotCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tp XSkpOworCQkJaWYgKHJpaW5mby0+cGtfYXR0bnVtc1tpXSAhPSBJbnZhbGlkT2lkKQorCQkJewor CQkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwor CQkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tp XSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcGtfdHlwZSA9IHJpaW5mby0+cGtfcGVyaW9k X3JhbmdldHlwZTsKKwkJCQlwa19jb2xsID0gcmlpbmZvLT5wa19wZXJpb2RfY29sbGF0aW9uOwor CQkJfQorCisJCQlpZiAocmlpbmZvLT5ma19hdHRudW1zW2ldICE9IEludmFsaWRPaWQpCisJCQl7 CisJCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7 CisJCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlma190eXBlID0gcmlpbmZvLT5ma19wZXJp b2RfcmFuZ2V0eXBlOworCQkJCWZrX2NvbGwgPSByaWluZm8tPmZrX3BlcmlvZF9jb2xsYXRpb247 CisJCQl9CisKKwkJCWlmIChyaWluZm8tPmZrX2F0dG51bXNbaV0gPT0gSW52YWxpZE9pZCkKKwkJ CQlhdHRzdHIgPSBxdWVyeV9wZXJpb2RfcmFuZ2UocmlpbmZvLCBma19yZWwsICJ4LiIsIGZhbHNl KTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJCQkgUklB dHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisJCQkJYXR0c3RyID0gYXR0 bmFtZTsKKwkJCX0KIAkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOwogCQkJcmlf R2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVlcnlzZXAsCiAJCQkJCQkJcGFyYW1uYW1lLCBwa190 eXBlLAogCQkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKLQkJCQkJCQlhdHRuYW1lLCBma190 eXBlKTsKKwkJCQkJCQlhdHRzdHIsIGZrX3R5cGUpOwogCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29s bCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCiAJCQkJcmlfR2Vu ZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CiAJCQlxdWVyeXNlcCA9ICJB TkQiOwpAQCAtNzE5LDYgKzkxNSw3IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0 YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFw bGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJZmFs c2UsIDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElf T0tfU0VMRUNUKTsKIApAQCAtODI1LDYgKzEwMjIsNyBAQCBSSV9GS2V5X2Nhc2NhZGVfZGVsKFBH X0ZVTkNUSU9OX0FSR1MpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAog CQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJZmFsc2UsIDAs CiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfREVM RVRFKTsKIApAQCAtOTQ2LDYgKzExNDQsNyBAQCBSSV9GS2V5X2Nhc2NhZGVfdXBkKFBHX0ZVTkNU SU9OX0FSR1MpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlm a19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgbmV3c2xvdCwKKwkJCQkJZmFsc2UsIDAsCiAJ CQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfVVBEQVRF KTsKIApAQCAtMTEwNSw3ICsxMzA0LDg1NiBAQCByaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRh LCBib29sIGlzX3NldF9udWxsKQogCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWFsYnVmLCBxdWFsc2Vw LAogCQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKIAkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNb aV0sCi0JCQkJCQkJYXR0bmFtZSwgZmtfdHlwZSk7CisJCQkJCQkJYXR0bmFtZSwgZmtfdHlwZSk7 CisJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5p c3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVmLCBw a19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0gIiwiOworCQkJcXVhbHNlcCA9ICJBTkQiOworCQkJcXVl cnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQorCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKCZxdWVy eWJ1ZiwgcXVhbGJ1Zi5kYXRhLCBxdWFsYnVmLmxlbik7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2 ZSB0aGUgcGxhbiAqLworCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWlu Zm8tPm5rZXlzLCBxdWVyeW9pZHMsCisJCQkJCQkJICZxa2V5LCBma19yZWwsIHBrX3JlbCk7CisJ fQorCisJLyoKKwkgKiBXZSBoYXZlIGEgcGxhbiBub3cuIFJ1biBpdCB0byB1cGRhdGUgdGhlIGV4 aXN0aW5nIHJlZmVyZW5jZXMuCisJICovCisJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXks IHFwbGFuLAorCQkJCQlma19yZWwsIHBrX3JlbCwKKwkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJ ZmFsc2UsIDAsCisJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLworCQkJCQlT UElfT0tfVVBEQVRFKTsKKworCWlmIChTUElfZmluaXNoKCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJ ZWxvZyhFUlJPUiwgIlNQSV9maW5pc2ggZmFpbGVkIik7CisKKwl0YWJsZV9jbG9zZShma19yZWws IFJvd0V4Y2x1c2l2ZUxvY2spOworCisJaWYgKGlzX3NldF9udWxsKQorCQlyZXR1cm4gUG9pbnRl ckdldERhdHVtKE5VTEwpOworCWVsc2UKKwl7CisJCS8qCisJCSAqIElmIHdlIGp1c3QgZGVsZXRl ZCBvciB1cGRhdGVkIHRoZSBQSyByb3cgd2hvc2Uga2V5IHdhcyBlcXVhbCB0byB0aGUKKwkJICog RksgY29sdW1ucycgZGVmYXVsdCB2YWx1ZXMsIGFuZCBhIHJlZmVyZW5jaW5nIHJvdyBleGlzdHMg aW4gdGhlIEZLCisJCSAqIHRhYmxlLCB3ZSB3b3VsZCBoYXZlIHVwZGF0ZWQgdGhhdCByb3cgdG8g dGhlIHNhbWUgdmFsdWVzIGl0IGFscmVhZHkKKwkJICogaGFkIC0tLSBhbmQgUklfRktleV9ma191 cGRfY2hlY2tfcmVxdWlyZWQgd291bGQgaGVuY2UgYmVsaWV2ZSBubworCQkgKiBjaGVjayBpcyBu ZWNlc3NhcnkuICBTbyB3ZSBuZWVkIHRvIGRvIGFub3RoZXIgbG9va3VwIG5vdyBhbmQgaW4KKwkJ ICogY2FzZSBhIHJlZmVyZW5jZSBzdGlsbCBleGlzdHMsIGFib3J0IHRoZSBvcGVyYXRpb24uICBU aGF0IGlzCisJCSAqIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4gdGhlIE5PIEFDVElPTiB0cmlnZ2Vy LCBzbyBqdXN0IHJ1biBpdC4gKFRoaXMKKwkJICogcmVjaGVjayBpcyBvbmx5IG5lZWRlZCBpbiB0 aGUgU0VUIERFRkFVTFQgY2FzZSwgc2luY2UgQ0FTQ0FERSB3b3VsZAorCQkgKiByZW1vdmUgc3Vj aCByb3dzIGluIGNhc2Ugb2YgYSBERUxFVEUgb3BlcmF0aW9uIG9yIHdvdWxkIGNoYW5nZSB0aGUK KwkJICogRksga2V5IHZhbHVlcyBpbiBjYXNlIG9mIGFuIFVQREFURSwgd2hpbGUgU0VUIE5VTEwg aXMgY2VydGFpbiB0bworCQkgKiByZXN1bHQgaW4gcm93cyB0aGF0IHNhdGlzZnkgdGhlIEZLIGNv bnN0cmFpbnQuKQorCQkgKi8KKwkJcmV0dXJuIHJpX3Jlc3RyaWN0KHRyaWdkYXRhLCB0cnVlKTsK Kwl9Cit9CisKKworLyoKKyAqIFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KKyAqCisg KiBDaGVjayBpZiB3ZSByZWFsbHkgbmVlZCB0byBmaXJlIHRoZSBSSSB0cmlnZ2VyIGZvciBhbiB1 cGRhdGUgb3IgZGVsZXRlIHRvIGEgUEsKKyAqIHJlbGF0aW9uLiAgVGhpcyBpcyBjYWxsZWQgYnkg dGhlIEFGVEVSIHRyaWdnZXIgcXVldWUgbWFuYWdlciB0byBzZWUgaWYKKyAqIGl0IGNhbiBza2lw IHF1ZXVpbmcgYW4gaW5zdGFuY2Ugb2YgYW4gUkkgdHJpZ2dlci4gIFJldHVybnMgdHJ1ZSBpZiB0 aGUKKyAqIHRyaWdnZXIgbXVzdCBiZSBmaXJlZCwgZmFsc2UgaWYgd2UgY2FuIHByb3ZlIHRoZSBj b25zdHJhaW50IHdpbGwgc3RpbGwKKyAqIGJlIHNhdGlzZmllZC4KKyAqCisgKiBuZXdzbG90IHdp bGwgYmUgTlVMTCBpZiB0aGlzIGlzIGNhbGxlZCBmb3IgYSBkZWxldGUuCisgKi8KK2Jvb2wKK1JJ X0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIHBr X3JlbCwKKwkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAq bmV3c2xvdCkKK3sKKwljb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvOworCisJcmlpbmZv ID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0cmlnZ2VyLCBwa19yZWwsIHRydWUpOworCisJLyoK KwkgKiBJZiBhbnkgb2xkIGtleSB2YWx1ZSBpcyBOVUxMLCB0aGUgcm93IGNvdWxkIG5vdCBoYXZl IGJlZW4gcmVmZXJlbmNlZCBieQorCSAqIGFuIEZLIHJvdywgc28gbm8gY2hlY2sgaXMgbmVlZGVk LgorCSAqLworCWlmIChyaV9OdWxsQ2hlY2soUmVsYXRpb25HZXREZXNjcihwa19yZWwpLCBvbGRz bG90LCByaWluZm8sIHRydWUpICE9IFJJX0tFWVNfTk9ORV9OVUxMKQorCQlyZXR1cm4gZmFsc2U7 CisKKwkvKiBJZiBhbGwgb2xkIGFuZCBuZXcga2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5vIGNoZWNr IGlzIG5lZWRlZCAqLworCWlmIChuZXdzbG90ICYmIHJpX0tleXNTdGFibGUocGtfcmVsLCBvbGRz bG90LCBuZXdzbG90LCByaWluZm8sIHRydWUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBFbHNl IHdlIG5lZWQgdG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoK KyAqIFJJX0ZLZXlfZmtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KKyAqCisgKiBDaGVjayBpZiB3ZSBy ZWFsbHkgbmVlZCB0byBmaXJlIHRoZSBSSSB0cmlnZ2VyIGZvciBhbiB1cGRhdGUgdG8gYW4gRksK KyAqIHJlbGF0aW9uLiAgVGhpcyBpcyBjYWxsZWQgYnkgdGhlIEFGVEVSIHRyaWdnZXIgcXVldWUg bWFuYWdlciB0byBzZWUgaWYKKyAqIGl0IGNhbiBza2lwIHF1ZXVpbmcgYW4gaW5zdGFuY2Ugb2Yg YW4gUkkgdHJpZ2dlci4gIFJldHVybnMgdHJ1ZSBpZiB0aGUKKyAqIHRyaWdnZXIgbXVzdCBiZSBm aXJlZCwgZmFsc2UgaWYgd2UgY2FuIHByb3ZlIHRoZSBjb25zdHJhaW50IHdpbGwgc3RpbGwKKyAq IGJlIHNhdGlzZmllZC4KKyAqLworYm9vbAorUklfRktleV9ma191cGRfY2hlY2tfcmVxdWlyZWQo VHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRpb24gZmtfcmVsLAorCQkJCQkJCSAgVHVwbGVUYWJsZVNs b3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90KQoreworCWNvbnN0IFJJX0NvbnN0 cmFpbnRJbmZvICpyaWluZm87CisJaW50CQkJcmlfbnVsbGNoZWNrOworCURhdHVtCQl4bWluRGF0 dW07CisJVHJhbnNhY3Rpb25JZCB4bWluOworCWJvb2wJCWlzbnVsbDsKKworCXJpaW5mbyA9IHJp X0ZldGNoQ29uc3RyYWludEluZm8odHJpZ2dlciwgZmtfcmVsLCBmYWxzZSk7CisKKwlyaV9udWxs Y2hlY2sgPSByaV9OdWxsQ2hlY2soUmVsYXRpb25HZXREZXNjcihma19yZWwpLCBuZXdzbG90LCBy aWluZm8sIGZhbHNlKTsKKworCS8qCisJICogSWYgYWxsIG5ldyBrZXkgdmFsdWVzIGFyZSBOVUxM LCB0aGUgcm93IHNhdGlzZmllcyB0aGUgY29uc3RyYWludCwgc28gbm8KKwkgKiBjaGVjayBpcyBu ZWVkZWQuCisJICovCisJaWYgKHJpX251bGxjaGVjayA9PSBSSV9LRVlTX0FMTF9OVUxMKQorCQly ZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIElmIHNvbWUgbmV3IGtleSB2YWx1ZXMgYXJlIE5VTEws IHRoZSBiZWhhdmlvciBkZXBlbmRzIG9uIHRoZSBtYXRjaAorCSAqIHR5cGUuCisJICovCisJZWxz ZSBpZiAocmlfbnVsbGNoZWNrID09IFJJX0tFWVNfU09NRV9OVUxMKQorCXsKKwkJc3dpdGNoIChy aWluZm8tPmNvbmZtYXRjaHR5cGUpCisJCXsKKwkJCWNhc2UgRktDT05TVFJfTUFUQ0hfU0lNUExF OgorCisJCQkJLyoKKwkJCQkgKiBJZiBhbnkgbmV3IGtleSB2YWx1ZSBpcyBOVUxMLCB0aGUgcm93 IG11c3Qgc2F0aXNmeSB0aGUKKwkJCQkgKiBjb25zdHJhaW50LCBzbyBubyBjaGVjayBpcyBuZWVk ZWQuCisJCQkJICovCisJCQkJcmV0dXJuIGZhbHNlOworCisJCQljYXNlIEZLQ09OU1RSX01BVENI X1BBUlRJQUw6CisKKwkJCQkvKgorCQkJCSAqIERvbid0IGtub3csIG11c3QgcnVuIGZ1bGwgY2hl Y2suCisJCQkJICovCisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRktDT05TVFJfTUFUQ0hfRlVMTDoK KworCQkJCS8qCisJCQkJICogSWYgc29tZSBuZXcga2V5IHZhbHVlcyBhcmUgTlVMTCwgdGhlIHJv dyBmYWlscyB0aGUKKwkJCQkgKiBjb25zdHJhaW50LiAgV2UgbXVzdCBub3QgdGhyb3cgZXJyb3Ig aGVyZSwgYmVjYXVzZSB0aGUgcm93CisJCQkJICogbWlnaHQgZ2V0IGludmFsaWRhdGVkIGJlZm9y ZSB0aGUgY29uc3RyYWludCBpcyB0byBiZQorCQkJCSAqIGNoZWNrZWQsIGJ1dCB3ZSBzaG91bGQg cXVldWUgdGhlIGV2ZW50IHRvIGFwcGx5IHRoZSBjaGVjaworCQkJCSAqIGxhdGVyLgorCQkJCSAq LworCQkJCXJldHVybiB0cnVlOworCQl9CisJfQorCisJLyoKKwkgKiBDb250aW51ZXMgaGVyZSBm b3Igbm8gbmV3IGtleSB2YWx1ZXMgYXJlIE5VTEwsIG9yIHdlIGNvdWxkbid0IGRlY2lkZQorCSAq IHlldC4KKwkgKi8KKworCS8qCisJICogSWYgdGhlIG9yaWdpbmFsIHJvdyB3YXMgaW5zZXJ0ZWQg Ynkgb3VyIG93biB0cmFuc2FjdGlvbiwgd2UgbXVzdCBmaXJlCisJICogdGhlIHRyaWdnZXIgd2hl dGhlciBvciBub3QgdGhlIGtleXMgYXJlIGVxdWFsLiAgVGhpcyBpcyBiZWNhdXNlIG91cgorCSAq IFVQREFURSB3aWxsIGludmFsaWRhdGUgdGhlIElOU0VSVCBzbyB0aGF0IHRoZSBJTlNFUlQgUkkg dHJpZ2dlciB3aWxsCisJICogbm90IGRvIGFueXRoaW5nOyBzbyB3ZSBoYWQgYmV0dGVyIGRvIHRo ZSBVUERBVEUgY2hlY2suICAoV2UgY291bGQgc2tpcAorCSAqIHRoaXMgaWYgd2Uga25ldyB0aGUg SU5TRVJUIHRyaWdnZXIgYWxyZWFkeSBmaXJlZCwgYnV0IHRoZXJlIGlzIG5vIGVhc3kKKwkgKiB3 YXkgdG8ga25vdyB0aGF0LikKKwkgKi8KKwl4bWluRGF0dW0gPSBzbG90X2dldHN5c2F0dHIob2xk c2xvdCwgTWluVHJhbnNhY3Rpb25JZEF0dHJpYnV0ZU51bWJlciwgJmlzbnVsbCk7CisJQXNzZXJ0 KCFpc251bGwpOworCXhtaW4gPSBEYXR1bUdldFRyYW5zYWN0aW9uSWQoeG1pbkRhdHVtKTsKKwlp ZiAoVHJhbnNhY3Rpb25JZElzQ3VycmVudFRyYW5zYWN0aW9uSWQoeG1pbikpCisJCXJldHVybiB0 cnVlOworCisJLyogSWYgYWxsIG9sZCBhbmQgbmV3IGtleSB2YWx1ZXMgYXJlIGVxdWFsLCBubyBj aGVjayBpcyBuZWVkZWQgKi8KKwlpZiAocmlfS2V5c1N0YWJsZShma19yZWwsIG9sZHNsb3QsIG5l d3Nsb3QsIHJpaW5mbywgZmFsc2UpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBFbHNlIHdlIG5l ZWQgdG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KKwlyZXR1cm4gdHJ1ZTsKK30KKworLyogLS0tLS0t LS0tLQorICogVFJJX0ZLZXlfY2hlY2tfaW5zIC0KKyAqCisgKglDaGVjayB0ZW1wb3JhbCBmb3Jl aWduIGtleSBleGlzdGVuY2UgYXQgaW5zZXJ0IGV2ZW50IG9uIEZLIHRhYmxlLgorICogLS0tLS0t LS0tLQorICovCitEYXR1bQorVFJJX0ZLZXlfY2hlY2tfaW5zKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJLyoKKwkgKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhl IHJpZ2h0IHRpbWUgYW5kIGV2ZW50LgorCSAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJS SV9GS2V5X2NoZWNrX2lucyIsIFJJX1RSSUdUWVBFX0lOU0VSVCk7CisKKwkvKgorCSAqIFNoYXJl IGNvZGUgd2l0aCBVUERBVEUgY2FzZS4KKwkgKi8KKwlyZXR1cm4gUklfRktleV9jaGVjaygoVHJp Z2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0KTsKK30KKworCisvKiAtLS0tLS0tLS0tCisgKiBU UklfRktleV9jaGVja191cGQgLQorICoKKyAqCUNoZWNrIHRlbXBvcmFsIGZvcmVpZ24ga2V5IGV4 aXN0ZW5jZSBhdCB1cGRhdGUgZXZlbnQgb24gRksgdGFibGUuCisgKiAtLS0tLS0tLS0tCisgKi8K K0RhdHVtCitUUklfRktleV9jaGVja191cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKgorCSAq IENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGlt ZSBhbmQgZXZlbnQuCisJICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlfY2hl Y2tfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qCisJICogU2hhcmUgY29kZSB3aXRo IElOU0VSVCBjYXNlLgorCSAqLworCXJldHVybiBSSV9GS2V5X2NoZWNrKChUcmlnZ2VyRGF0YSAq KSBmY2luZm8tPmNvbnRleHQpOworfQorCisKKy8qIC0tLS0tLS0tLS0KKyAqIFRSSV9GS2V5X25v YWN0aW9uX2RlbCAtCisgKgorICoJR2l2ZSBhbiBlcnJvciBhbmQgcm9sbCBiYWNrIHRoZSBjdXJy ZW50IHRyYW5zYWN0aW9uIGlmIHRoZQorICoJZGVsZXRlIGhhcyByZXN1bHRlZCBpbiBhIHZpb2xh dGlvbiBvZiB0aGUgZ2l2ZW4gdGVtcG9yYWwKKyAqCXJlZmVyZW50aWFsIGludGVncml0eSBjb25z dHJhaW50LgorICogLS0tLS0tLS0tLQorICovCitEYXR1bQorVFJJX0ZLZXlfbm9hY3Rpb25fZGVs KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyoKKwkgKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxp ZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LgorCSAqLworCXJpX0No ZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9ub2FjdGlvbl9kZWwiLCBSSV9UUklHVFlQRV9E RUxFVEUpOworCisJLyoKKwkgKiBTaGFyZSBjb2RlIHdpdGggUkVTVFJJQ1QvVVBEQVRFIGNhc2Vz LgorCSAqLworCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250 ZXh0LCB0cnVlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5X3Jlc3RyaWN0X2RlbCAtCisgKgorICog UmVzdHJpY3QgZGVsZXRlIGZyb20gUEsgdGFibGUgdG8gcm93cyB1bnJlZmVyZW5jZWQgYnkgZm9y ZWlnbiBrZXkuCisgKgorICogVGhlIFNRTCBzdGFuZGFyZCBpbnRlbmRzIHRoYXQgdGhpcyByZWZl cmVudGlhbCBhY3Rpb24gb2NjdXIgZXhhY3RseSB3aGVuCisgKiB0aGUgZGVsZXRlIGlzIHBlcmZv cm1lZCwgcmF0aGVyIHRoYW4gYWZ0ZXIuICBUaGlzIGFwcGVhcnMgdG8gYmUKKyAqIHRoZSBvbmx5 IGRpZmZlcmVuY2UgYmV0d2VlbiAiTk8gQUNUSU9OIiBhbmQgIlJFU1RSSUNUIi4gIEluIFBvc3Rn cmVzCisgKiB3ZSBzdGlsbCBpbXBsZW1lbnQgdGhpcyBhcyBhbiBBRlRFUiB0cmlnZ2VyLCBidXQg aXQncyBub24tZGVmZXJyYWJsZS4KKyAqLworRGF0dW0KK1RSSV9GS2V5X3Jlc3RyaWN0X2RlbChQ R19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdn ZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2Vy KGZjaW5mbywgIlRSSV9GS2V5X3Jlc3RyaWN0X2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisK KwkvKiBTaGFyZSBjb2RlIHdpdGggTk8gQUNUSU9OL1VQREFURSBjYXNlcy4gKi8KKwlyZXR1cm4g cmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UpOworfQor CisvKgorICogVFJJX0ZLZXlfY2FzY2FkZV9kZWwgLQorICoKKyAqIENhc2NhZGVkIGRlbGV0ZSBm b3JlaWduIGtleSByZWZlcmVuY2VzIGF0IGRlbGV0ZSBldmVudCBvbiB0ZW1wb3JhbCBQSyB0YWJs ZS4KKyAqLworRGF0dW0KK1RSSV9GS2V5X2Nhc2NhZGVfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJVHJpZ2dlckRhdGEgKnRyaWdkYXRhID0gKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4 dDsKKwljb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvOworCVJlbGF0aW9uCWZrX3JlbDsK KwlSZWxhdGlvbglwa19yZWw7CisJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3Q7CisJUklfUXVlcnlL ZXkgcWtleTsKKwlTUElQbGFuUHRyCXFwbGFuOworCURhdHVtIHRhcmdldFJhbmdlOworCisJLyog Q2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1l IGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfY2FzY2Fk ZV9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJh aW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50Z19yZWxh dGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3JpcHRvcnMgb2Yg dGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUuCisJICoKKwkgKiBma19yZWwg aXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0aGF0J3Mgd2hhdCBvdXIK KwkgKiBldmVudHVhbCBERUxFVEUgd2lsbCBnZXQgb24gaXQuCisJICovCisJZmtfcmVsID0gdGFi bGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlwa19yZWwgPSB0 cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xkc2xvdCA9IHRyaWdkYXRhLT50Z190cmlnc2xvdDsK KworCWlmICh0cmlnZGF0YS0+dGdfdGVtcG9yYWwpCisJCXRhcmdldFJhbmdlID0gdHJpZ2RhdGEt PnRnX3RlbXBvcmFsLT5mcF90YXJnZXRSYW5nZTsKKwllbHNlCisJCXRhcmdldFJhbmdlID0gdHVw bGVSYW5nZShvbGRzbG90LCByaWluZm8pOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09L X0NPTk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qIEZl dGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgZGVsZXRlICovCisJ cmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBUUklfUExBTl9DQVNDQURFX0RFTF9ET0RF TEVURSk7CisKKwlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBO VUxMKQorCXsKKwkJYm9vbAkJcGtIYXNSYW5nZTsKKwkJYm9vbAkJZmtIYXNSYW5nZTsKKwkJU3Ry aW5nSW5mb0RhdGEgcXVlcnlidWY7CisJCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9O QU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTl07CisJCWNoYXIJ ICAgKmF0dHN0cjsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAqcXVlcnlz ZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZU107CisJCWNvbnN0IGNoYXIgKmZr X29ubHk7CisKKwkJcGtIYXNSYW5nZSA9IHJpaW5mby0+cGtfcGVyaW9kID09IEludmFsaWRPaWQ7 CisJCWZrSGFzUmFuZ2UgPSByaWluZm8tPmZrX3BlcmlvZCA9PSBJbnZhbGlkT2lkOworCisJCS8q IC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKglERUxFVEUg RlJPTSBbT05MWV0gPGZrdGFibGU+CisJCSAqCUZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9NIGxv d2VyKCRuKzEpIFRPIHVwcGVyKCRuKzEpCisJCSAqCVdIRVJFICQxID0gZmthdHQxIFtBTkQgLi4u XQorCQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0 aGUKKwkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLgorCQkgKiAtLS0tLS0tLS0tCisJ CSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlma19vbmx5ID0gZmtfcmVsLT5y ZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQkiIiA6ICJP TkxZICI7CisJCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJaWYgKGZr SGFzUmFuZ2UpCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlp bmZvLT5ma19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSkpOworCQllbHNlCisJCQlxdW90ZU9u ZU5hbWUoYXR0bmFtZSwgZ2V0X3BlcmlvZG5hbWUocmlpbmZvLT5ma19wZXJpb2QsIGZhbHNlKSk7 CisKKwkJLy8gVE9ETzogQmV0dGVyIHRvIGZpbmQgdGhlIGdyZWF0ZXIgb2YgbG93ZXIoJG4rMSkg YW5kIGxvd2VyKCQxKQorCQkvLyBhbmQgdGhlIGxlc3NlciBmb3IgdXBwZXIoJG4rMSkgYW5kIHVw cGVyKCQxKSwKKwkJLy8gc28gd2Ugb25seSBkZWxldGUgd2hhdCBpcyBiZWluZyBkZWxldGVkIGZy b20gdGhlIHBrIHRhYmxlLgorCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIkRFTEVURSBG Uk9NICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVwcGVyKCQlZCki LAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgcmlpbmZvLT5ua2V5cyArIDEs IHJpaW5mby0+bmtleXMgKyAxKTsKKwkJcXVlcnlzZXAgPSAiV0hFUkUiOworCQlmb3IgKGludCBp ID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKKwkJeworCQkJT2lkCQlwa190eXBlOworCQkJ T2lkCQlma190eXBlOworCQkJT2lkCQlwa19jb2xsOworCQkJT2lkCQlma19jb2xsOworCisJCQlp ZiAocmlpbmZvLT5wa19hdHRudW1zW2ldICE9IEludmFsaWRPaWQpCisJCQl7CisJCQkJcGtfdHlw ZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQkJcGtfY29s bCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCX0K KwkJCWVsc2UKKwkJCXsKKwkJCQlwa190eXBlID0gcmlpbmZvLT5wa19wZXJpb2RfcmFuZ2V0eXBl OworCQkJCXBrX2NvbGwgPSByaWluZm8tPnBrX3BlcmlvZF9jb2xsYXRpb247CisJCQl9CisKKwkJ CWlmIChyaWluZm8tPmZrX2F0dG51bXNbaV0gIT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQlma190 eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCQlma19j b2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJ fQorCQkJZWxzZQorCQkJeworCQkJCWZrX3R5cGUgPSByaWluZm8tPmZrX3BlcmlvZF9yYW5nZXR5 cGU7CisJCQkJZmtfY29sbCA9IHJpaW5mby0+ZmtfcGVyaW9kX2NvbGxhdGlvbjsKKwkJCX0KKwor CQkJaWYgKHJpaW5mby0+ZmtfYXR0bnVtc1tpXSA9PSBJbnZhbGlkT2lkKQorCQkJCWF0dHN0ciA9 IHF1ZXJ5X3BlcmlvZF9yYW5nZShyaWluZm8sIGZrX3JlbCwgIiIsIGZhbHNlKTsKKwkJCWVsc2UK KwkJCXsKKwkJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJCQkgUklBdHROYW1lKGZrX3Jl bCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisJCQkJYXR0c3RyID0gYXR0bmFtZTsKKwkJCX0K KwkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOworCQkJcmlfR2VuZXJhdGVRdWFs KCZxdWVyeWJ1ZiwgcXVlcnlzZXAsCisJCQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAorCQkJCQkJ CXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKKwkJCQkJCQlhdHRzdHIsIGZrX3R5cGUpOworCQkJaWYg KHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtf Y29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7 CisJCQlxdWVyeXNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQor CisJCWlmIChwa0hhc1JhbmdlKQorCQkJcXVlcnlvaWRzW3JpaW5mby0+bmtleXNdID0gUklBdHRU eXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSk7CisJCWVs c2UKKwkJCXF1ZXJ5b2lkc1tyaWluZm8tPm5rZXlzXSA9IHJpaW5mby0+cGtfcGVyaW9kX3Jhbmdl dHlwZTsKKworCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCisJCXFwbGFuID0gcmlf UGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5mby0+bmtleXMgKyAxLCBxdWVyeW9pZHMsCisJ CQkJCQkJICZxa2V5LCBma19yZWwsIHBrX3JlbCk7CisJfQorCisJLyoKKwkgKiBXZSBoYXZlIGEg cGxhbiBub3cuIEJ1aWxkIHVwIHRoZSBhcmd1bWVudHMgZnJvbSB0aGUga2V5IHZhbHVlcyBpbiB0 aGUKKwkgKiBkZWxldGVkIFBLIHR1cGxlIGFuZCBkZWxldGUgdGhlIHJlZmVyZW5jaW5nIHJvd3MK KwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCisJCQkJCWZrX3Jl bCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQl0cnVlLCB0YXJnZXRSYW5nZSwK KwkJCQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19ERUxF VEUpOworCisJaWYgKFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9S LCAiU1BJX2ZpbmlzaCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVz aXZlTG9jayk7CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisKKy8qCisg KiBUUklfRktleV9ub2FjdGlvbl91cGQgLQorICoKKyAqIEdpdmUgYW4gZXJyb3IgYW5kIHJvbGwg YmFjayB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBpZiB0aGUKKyAqIHVwZGF0ZSBoYXMgcmVzdWx0 ZWQgaW4gYSB2aW9sYXRpb24gb2YgdGhlIGdpdmVuIHJlZmVyZW50aWFsCisgKiBpbnRlZ3JpdHkg Y29uc3RyYWludC4KKyAqLworRGF0dW0KK1RSSV9GS2V5X25vYWN0aW9uX3VwZChQR19GVU5DVElP Tl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBv biB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywg IlRSSV9GS2V5X25vYWN0aW9uX3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBTaGFy ZSBjb2RlIHdpdGggUkVTVFJJQ1QvREVMRVRFIGNhc2VzLiAqLworCXJldHVybiByaV9yZXN0cmlj dCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCB0cnVlKTsKK30KKworLyoKKyAqIFRS SV9GS2V5X3Jlc3RyaWN0X3VwZCAtCisgKgorICogUmVzdHJpY3QgdXBkYXRlIG9mIFBLIHRvIHJv d3MgdW5yZWZlcmVuY2VkIGJ5IGZvcmVpZ24ga2V5LgorICoKKyAqIFRoZSBTUUwgc3RhbmRhcmQg aW50ZW5kcyB0aGF0IHRoaXMgcmVmZXJlbnRpYWwgYWN0aW9uIG9jY3VyIGV4YWN0bHkgd2hlbgor ICogdGhlIHVwZGF0ZSBpcyBwZXJmb3JtZWQsIHJhdGhlciB0aGFuIGFmdGVyLiAgVGhpcyBhcHBl YXJzIHRvIGJlCisgKiB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gIk5PIEFDVElPTiIgYW5k ICJSRVNUUklDVCIuICBJbiBQb3N0Z3JlcworICogd2Ugc3RpbGwgaW1wbGVtZW50IHRoaXMgYXMg YW4gQUZURVIgdHJpZ2dlciwgYnV0IGl0J3Mgbm9uLWRlZmVycmFibGUuCisgKi8KK0RhdHVtCitU UklfRktleV9yZXN0cmljdF91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0 IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50 LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9yZXN0cmljdF91cGQiLCBS SV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIE5PIEFDVElPTi9ERUxF VEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8t PmNvbnRleHQsIGZhbHNlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5X2Nhc2NhZGVfdXBkIC0KKyAq CisgKiBDYXNjYWRlZCB1cGRhdGUgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyBhdCB1cGRhdGUgZXZl bnQgb24gdGVtcG9yYWwgUEsgdGFibGUuCisgKi8KK0RhdHVtCitUUklfRktleV9jYXNjYWRlX3Vw ZChQR19GVU5DVElPTl9BUkdTKQoreworCVRyaWdnZXJEYXRhICp0cmlnZGF0YSA9IChUcmlnZ2Vy RGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisJY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5m bzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90 ICpvbGRzbG90OworCVR1cGxlVGFibGVTbG90ICpuZXdzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7 CisJU1BJUGxhblB0cglxcGxhbjsKKwlEYXR1bSB0YXJnZXRSYW5nZTsKKworCS8qIENoZWNrIHRo YXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZl bnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X2Nhc2NhZGVfdXBkIiwg UklfVFJJR1RZUEVfVVBEQVRFKTsKKworCXJpaW5mbyA9IHJpX0ZldGNoQ29uc3RyYWludEluZm8o dHJpZ2RhdGEtPnRnX3RyaWdnZXIsCisJCQkJCQkJCQl0cmlnZGF0YS0+dGdfcmVsYXRpb24sIHRy dWUpOworCisJLyoKKwkgKiBHZXQgdGhlIHJlbGF0aW9uIGRlc2NyaXB0b3JzIG9mIHRoZSBGSyBh bmQgUEsgdGFibGVzIGFuZCB0aGUgbmV3IGFuZAorCSAqIG9sZCB0dXBsZS4KKwkgKgorCSAqIGZr X3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNpbmNlIHRoYXQncyB3aGF0 IG91cgorCSAqIGV2ZW50dWFsIFVQREFURSB3aWxsIGdldCBvbiBpdC4KKwkgKi8KKwlma19yZWwg PSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXBrX3Jl bCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwluZXdzbG90ID0gdHJpZ2RhdGEtPnRnX25ld3Ns b3Q7CisJb2xkc2xvdCA9IHRyaWdkYXRhLT50Z190cmlnc2xvdDsKKworCWlmICh0cmlnZGF0YS0+ dGdfdGVtcG9yYWwpCisJCXRhcmdldFJhbmdlID0gdHJpZ2RhdGEtPnRnX3RlbXBvcmFsLT5mcF90 YXJnZXRSYW5nZTsKKwllbHNlCisJCXRhcmdldFJhbmdlID0gdHVwbGVSYW5nZShvbGRzbG90LCBy aWluZm8pOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJCWVsb2co RVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHByZXBhcmUgYSBz YXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgdXBkYXRlICovCisJcmlfQnVpbGRRdWVyeUtleSgm cWtleSwgcmlpbmZvLCBUUklfUExBTl9DQVNDQURFX1VQRF9ET1VQREFURSk7CisKKwlpZiAoKHFw bGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxMKQorCXsKKwkJYm9vbAkJ cGtIYXNSYW5nZTsKKwkJYm9vbAkJZmtIYXNSYW5nZTsKKwkJU3RyaW5nSW5mb0RhdGEgcXVlcnli dWY7CisJCVN0cmluZ0luZm9EYXRhIHF1YWxidWY7CisJCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVP VEVEX1JFTF9OQU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTl07 CisJCWNoYXIJICAgKmF0dHN0cjsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hh ciAqcXVlcnlzZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tS SV9NQVhfTlVNS0VZU107CisJCWNvbnN0IGNoYXIgKmZrX29ubHk7CisKKwkJcGtIYXNSYW5nZSA9 IHJpaW5mby0+cGtfcGVyaW9kID09IEludmFsaWRPaWQ7CisJCWZrSGFzUmFuZ2UgPSByaWluZm8t PmZrX3BlcmlvZCA9PSBJbnZhbGlkT2lkOworCisJCS8qIC0tLS0tLS0tLS0KKwkJICogVGhlIHF1 ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKglVUERBVEUgW09OTFldIDxma3RhYmxlPgorCQkgKgkg ICAgICAgIEZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9NIGxvd2VyKCRuKzEpIFRPIHVwcGVyKCRu KzEpCisJCSAqCSAgICAgICAgU0VUIGZrYXR0MSA9ICQxLCBbLCAuLi5dCisJCSAqCSAgICAgICAg V0hFUkUgJG4gPSBma2F0dDEgW0FORCAuLi5dCisJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRoZSAk IHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQorCQkgKiBjb3JyZXNwb25kaW5nIFBLIGF0dHJp YnV0ZXMuICBOb3RlIHRoYXQgd2UgYXJlIGFzc3VtaW5nCisJCSAqIHRoZXJlIGlzIGFuIGFzc2ln bm1lbnQgY2FzdCBmcm9tIHRoZSBQSyB0byB0aGUgRksgdHlwZTsKKwkJICogZWxzZSB0aGUgcGFy c2VyIHdpbGwgZmFpbC4KKwkJICogLS0tLS0tLS0tLQorCQkgKi8KKwkJaW5pdFN0cmluZ0luZm8o JnF1ZXJ5YnVmKTsKKwkJaW5pdFN0cmluZ0luZm8oJnF1YWxidWYpOworCQlma19vbmx5ID0gZmtf cmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQki IiA6ICJPTkxZICI7CisJCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJ aWYgKGZrSGFzUmFuZ2UpCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3Jl bCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSkpOworCQllbHNlCisJCQlx dW90ZU9uZU5hbWUoYXR0bmFtZSwgZ2V0X3BlcmlvZG5hbWUocmlpbmZvLT5ma19wZXJpb2QsIGZh bHNlKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJVUERBVEUgJXMlcyBGT1Ig UE9SVElPTiBPRiAlcyBGUk9NIGxvd2VyKCQlZCkgVE8gdXBwZXIoJCVkKSBTRVQiLAorCQkJCQkJ IGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgMiAqIHJpaW5mby0+bmtleXMgKyAxLCAyICog cmlpbmZvLT5ua2V5cyArIDEpOworCisJCXF1ZXJ5c2VwID0gIiI7CisJCXF1YWxzZXAgPSAiV0hF UkUiOworCQlmb3IgKGludCBpID0gMCwgaiA9IHJpaW5mby0+bmtleXM7IGkgPCByaWluZm8tPm5r ZXlzOyBpKyssIGorKykKKwkJeworCQkJT2lkCQlwa190eXBlOworCQkJT2lkCQlma190eXBlOwor CQkJT2lkCQlwa19jb2xsOworCQkJT2lkCQlma19jb2xsOworCisJCQlpZiAocmlpbmZvLT5wa19h dHRudW1zW2ldICE9IEludmFsaWRPaWQpCisJCQl7CisJCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShw a19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0 aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsK KwkJCQlwa190eXBlID0gcmlpbmZvLT5wa19wZXJpb2RfcmFuZ2V0eXBlOworCQkJCXBrX2NvbGwg PSByaWluZm8tPnBrX3BlcmlvZF9jb2xsYXRpb247CisJCQl9CisKKwkJCWlmIChyaWluZm8tPmZr X2F0dG51bXNbaV0gIT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQlma190eXBlID0gUklBdHRUeXBl KGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCQlma19jb2xsID0gUklBdHRDb2xs YXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJfQorCQkJZWxzZQorCQkJ eworCQkJCWZrX3R5cGUgPSByaWluZm8tPmZrX3BlcmlvZF9yYW5nZXR5cGU7CisJCQkJZmtfY29s bCA9IHJpaW5mby0+ZmtfcGVyaW9kX2NvbGxhdGlvbjsKKwkJCX0KKworCQkJaWYgKHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSA9PSBJbnZhbGlkT2lkKQorCQkJCWF0dHN0ciA9IHF1ZXJ5X3BlcmlvZF9y YW5nZShyaWluZm8sIGZrX3JlbCwgIiIsIGZhbHNlKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlxdW90 ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19h dHRudW1zW2ldKSk7CisJCQkJYXR0c3RyID0gYXR0bmFtZTsKKwkJCX0KKwkJCS8qCisJCQkgKiBE b24ndCBzZXQgdGhlIHRlbXBvcmFsIGNvbHVtbihzKS4KKwkJCSAqIEZPUiBQT1JUSU9OIE9GIHdp bGwgdGFrZSBjYXJlIG9mIHRoYXQuCisJCQkgKiBUT0RPOiBJIGd1ZXNzIEkgY291bGQgb21pdCBp dCBmcm9tIHRoZSBxdWFsIHRvbywgcmlnaHQ/IEFuZCBsaWtld2lzZSB3aXRoIGNhc2NhZGUgZGVs ZXRlcz8KKwkJCSAqLworCQkJaWYgKGkgPCByaWluZm8tPm5rZXlzIC0gMSkKKwkJCQlhcHBlbmRT dHJpbmdJbmZvKCZxdWVyeWJ1ZiwKKwkJCQkJCQkJICIlcyAlcyA9ICQlZCIsCisJCQkJCQkJCSBx dWVyeXNlcCwgYXR0c3RyLCBpICsgMSk7CisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGog KyAxKTsKKwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVhbGJ1ZiwgcXVhbHNlcCwKKwkJCQkJCQlwYXJh bW5hbWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0 dHN0ciwgZmtfdHlwZSk7CisJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29sbGF0 aW9uX2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRp b24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0gIiwiOworCQkJcXVhbHNlcCA9 ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJCXF1ZXJ5b2lkc1tqXSA9IHBr X3R5cGU7CisJCX0KKwkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmcXVlcnlidWYsIHF1YWxidWYu ZGF0YSwgcXVhbGJ1Zi5sZW4pOworCisJCWlmIChwa0hhc1JhbmdlKQorCQkJcXVlcnlvaWRzWzIg KiByaWluZm8tPm5rZXlzXSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1ty aWluZm8tPm5rZXlzIC0gMV0pOworCQllbHNlCisJCQlxdWVyeW9pZHNbMiAqIHJpaW5mby0+bmtl eXNdID0gcmlpbmZvLT5wa19wZXJpb2RfcmFuZ2V0eXBlOworCisJCS8qIFByZXBhcmUgYW5kIHNh dmUgdGhlIHBsYW4gKi8KKwkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgMiAq IHJpaW5mby0+bmtleXMgKyAxLCBxdWVyeW9pZHMsCisJCQkJCQkJICZxa2V5LCBma19yZWwsIHBr X3JlbCk7CisJfQorCisJLyoKKwkgKiBXZSBoYXZlIGEgcGxhbiBub3cuIEJ1aWxkIHVwIHRoZSBh cmd1bWVudHMgZnJvbSB0aGUga2V5IHZhbHVlcyBpbiB0aGUKKwkgKiB1cGRhdGVkIFBLIHR1cGxl IGFuZCB1cGRhdGUgdGhlIHJlZmVyZW5jaW5nIHJvd3MKKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2so cmlpbmZvLCAmcWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90 LCBuZXdzbG90LAorCQkJCQl0cnVlLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJCS8qIG11c3Qg ZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJaWYgKFNQSV9maW5p c2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJX2ZpbmlzaCBmYWlsZWQi KTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4g UG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisvKgorICogVFJJX0ZLZXlfc2V0bnVsbF9kZWwg LQorICoKKyAqIFNldCBmb3JlaWduIGtleSByZWZlcmVuY2VzIHRvIE5VTEwgdmFsdWVzIGF0IGRl bGV0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1RSSV9GS2V5X3NldG51bGxfZGVs KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJp Z2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdn ZXIoZmNpbmZvLCAiVFJJX0ZLZXlfc2V0bnVsbF9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOwor CisJLyogU2hhcmUgY29kZSB3aXRoIFVQREFURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRy aWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgdHJ1ZSk7Cit9CisKKy8qCisgKiBUUklfRktl eV9zZXRudWxsX3VwZCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMgdG8gTlVM TCBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVtCitUUklfRktleV9zZXRu dWxsX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZh bGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hl Y2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldG51bGxfdXBkIiwgUklfVFJJR1RZUEVfVVBE QVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBERUxFVEUgY2FzZSAqLworCXJldHVybiB0cmlf c2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUpOworfQorCisvKgorICog VFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSByZWZlcmVu Y2VzIHRvIGRlZmF1bHRzIGF0IGRlbGV0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLworRGF0dW0K K1RSSV9GS2V5X3NldGRlZmF1bHRfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sg dGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBl dmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfc2V0ZGVmYXVsdF9k ZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIFVQREFURSBj YXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwg ZmFsc2UpOworfQorCisvKgorICogVFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQgLQorICoKKyAqIFNl dCBmb3JlaWduIGtleSByZWZlcmVuY2VzIHRvIGRlZmF1bHRzIGF0IHVwZGF0ZSBldmVudCBvbiBQ SyB0YWJsZS4KKyAqLworRGF0dW0KK1RSSV9GS2V5X3NldGRlZmF1bHRfdXBkKFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9u IHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAi VFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hh cmUgY29kZSB3aXRoIERFTEVURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRh ICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UpOworfQorCisKKy8qCisgKiB0cmlfc2V0IC0KKyAq CisgKiBDb21tb24gY29kZSBmb3IgdGVtcG9yYWwgT04gREVMRVRFIFNFVCBOVUxMLCBPTiBERUxF VEUgU0VUIERFRkFVTFQsIE9OCisgKiBVUERBVEUgU0VUIE5VTEwsIGFuZCBPTiBVUERBVEUgU0VU IERFRkFVTFQuCisgKi8KK3N0YXRpYyBEYXR1bQordHJpX3NldChUcmlnZ2VyRGF0YSAqdHJpZ2Rh dGEsIGJvb2wgaXNfc2V0X251bGwpCit7CisJY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5m bzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90 ICpvbGRzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJU1BJUGxhblB0cglxcGxhbjsKKwlEYXR1 bSB0YXJnZXRSYW5nZTsKKworCXJpaW5mbyA9IHJpX0ZldGNoQ29uc3RyYWludEluZm8odHJpZ2Rh dGEtPnRnX3RyaWdnZXIsCisJCQkJCQkJCQl0cmlnZGF0YS0+dGdfcmVsYXRpb24sIHRydWUpOwor CisJLyoKKwkgKiBHZXQgdGhlIHJlbGF0aW9uIGRlc2NyaXB0b3JzIG9mIHRoZSBGSyBhbmQgUEsg dGFibGVzIGFuZCB0aGUgb2xkIHR1cGxlLgorCSAqCisJICogZmtfcmVsIGlzIG9wZW5lZCBpbiBS b3dFeGNsdXNpdmVMb2NrIG1vZGUgc2luY2UgdGhhdCdzIHdoYXQgb3VyCisJICogZXZlbnR1YWwg VVBEQVRFIHdpbGwgZ2V0IG9uIGl0LgorCSAqLworCWZrX3JlbCA9IHRhYmxlX29wZW4ocmlpbmZv LT5ma19yZWxpZCwgUm93RXhjbHVzaXZlTG9jayk7CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRnX3Jl bGF0aW9uOworCW9sZHNsb3QgPSB0cmlnZGF0YS0+dGdfdHJpZ3Nsb3Q7CisKKwkvLyBUT0RPOiBJ dCB3b3VsZCBiZSBtb3JlIGNvcnJlY3QgdG8gdGFrZSB0aGUgcmFuZ2UgZnJvbSBvbGRzbG90LAor CS8vIGFuZCB0aGVuIHRha2UgaXRzIGludGVyc2VjdGlvbiB3aXRoIHRoZSB0Z190ZW1wb3JhbCBy YW5nZSAoaWYgYW55KToKKwkvLyBMaWtld2lzZSBmb3IgY2FzY2FkZV91cGQgYW5kIGNhc2NhZGVf ZGVsLgorCS8vIEJ1dCBJIGRvbid0IHRoaW5rIHRoaXMgZG9lcyBhbnkgaGFybToKKwlpZiAodHJp Z2RhdGEtPnRnX3RlbXBvcmFsKQorCQl0YXJnZXRSYW5nZSA9IHRyaWdkYXRhLT50Z190ZW1wb3Jh bC0+ZnBfdGFyZ2V0UmFuZ2U7CisJZWxzZQorCQl0YXJnZXRSYW5nZSA9IHR1cGxlUmFuZ2Uob2xk c2xvdCwgcmlpbmZvKTsKKworCWlmIChTUElfY29ubmVjdCgpICE9IFNQSV9PS19DT05ORUNUKQor CQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CisKKwkvKgorCSAqIEZldGNoIG9y IHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgc2V0IG51bGwvZGVmYXVsdCBvcGVyYXRpb24g KGl0J3MKKwkgKiB0aGUgc2FtZSBxdWVyeSBmb3IgZGVsZXRlIGFuZCB1cGRhdGUgY2FzZXMpCisJ ICovCisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLAorCQkJCQkgIGlzX3NldF9udWxs CisJCQkJCQk/IFRSSV9QTEFOX1NFVE5VTExfRE9VUERBVEUKKwkJCQkJCTogVFJJX1BMQU5fU0VU REVGQVVMVF9ET1VQREFURSk7CisKKwlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBsYW4o JnFrZXkpKSA9PSBOVUxMKQorCXsKKwkJYm9vbAkJcGtIYXNSYW5nZTsKKwkJYm9vbAkJZmtIYXNS YW5nZTsKKwkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7CisJCVN0cmluZ0luZm9EYXRhIHF1YWxi dWY7CisJCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CisJCWNoYXIJ CWF0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTl07CisJCWNoYXIJICAgKmF0dHN0cjsKKwkJY2hh cgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAqcXVlcnlzZXA7CisJCWNvbnN0IGNoYXIg KnF1YWxzZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZU107CisJCWNvbnN0IGNo YXIgKmZrX29ubHk7CisKKwkJcGtIYXNSYW5nZSA9IHJpaW5mby0+cGtfcGVyaW9kID09IEludmFs aWRPaWQ7CisJCWZrSGFzUmFuZ2UgPSByaWluZm8tPmZrX3BlcmlvZCA9PSBJbnZhbGlkT2lkOwor CisJCS8qIC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKglV UERBVEUgW09OTFldIDxma3RhYmxlPgorCQkgKgkJCUZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9N IGxvd2VyKCRuKzEpIFRPIHVwcGVyKCRuKzEpCisJCSAqCQkJU0VUIGZrYXR0MSA9IHtOVUxMfERF RkFVTFR9IFssIC4uLl0KKwkJICoJCQlXSEVSRSAkMSA9IGZrYXR0MSBbQU5EIC4uLl0KKwkJICog VGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCisJCSAq IGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICogLS0tLS0tLS0tLQorCQkgKi8KKwkJ aW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJaW5pdFN0cmluZ0luZm8oJnF1YWxidWYpOwor CQlma19vbmx5ID0gZmtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05F RF9UQUJMRSA/CisJCQkiIiA6ICJPTkxZICI7CisJCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFt ZSwgZmtfcmVsKTsKKwkJaWYgKGZrSGFzUmFuZ2UpCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwg UklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSkp OworCQllbHNlCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwgZ2V0X3BlcmlvZG5hbWUocmlpbmZv LT5ma19wZXJpb2QsIGZhbHNlKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJV UERBVEUgJXMlcyBGT1IgUE9SVElPTiBPRiAlcyBGUk9NIGxvd2VyKCQlZCkgVE8gdXBwZXIoJCVk KSBTRVQiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgcmlpbmZvLT5ua2V5 cyArIDEsIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQlxdWVyeXNlcCA9ICIiOworCQlxdWFsc2Vw ID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCisJ CXsKKwkJCU9pZAkJcGtfdHlwZTsKKwkJCU9pZAkJZmtfdHlwZTsKKwkJCU9pZAkJcGtfY29sbDsK KwkJCU9pZAkJZmtfY29sbDsKKworCQkJaWYgKHJpaW5mby0+cGtfYXR0bnVtc1tpXSAhPSBJbnZh bGlkT2lkKQorCQkJeworCQkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBr X2F0dG51bXNbaV0pOworCQkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5m by0+cGtfYXR0bnVtc1tpXSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcGtfdHlwZSA9IHJp aW5mby0+cGtfcGVyaW9kX3JhbmdldHlwZTsKKwkJCQlwa19jb2xsID0gcmlpbmZvLT5wa19wZXJp b2RfY29sbGF0aW9uOworCQkJfQorCisJCQlpZiAocmlpbmZvLT5ma19hdHRudW1zW2ldICE9IElu dmFsaWRPaWQpCisJCQl7CisJCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7CisJCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlp bmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlma190eXBlID0g cmlpbmZvLT5ma19wZXJpb2RfcmFuZ2V0eXBlOworCQkJCWZrX2NvbGwgPSByaWluZm8tPmZrX3Bl cmlvZF9jb2xsYXRpb247CisJCQl9CisKKwkJCWlmIChyaWluZm8tPmZrX2F0dG51bXNbaV0gPT0g SW52YWxpZE9pZCkKKwkJCQlhdHRzdHIgPSBxdWVyeV9wZXJpb2RfcmFuZ2UocmlpbmZvLCBma19y ZWwsICIiLCBmYWxzZSk7CisJCQllbHNlCisJCQl7CisJCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUs CisJCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCQkJ CWF0dHN0ciA9IGF0dG5hbWU7CisJCQl9CisKKwkJCS8qCisJCQkgKiBEb24ndCBzZXQgdGhlIHRl bXBvcmFsIGNvbHVtbihzKS4KKwkJCSAqIEZPUiBQT1JUSU9OIE9GIHdpbGwgdGFrZSBjYXJlIG9m IHRoYXQuCisJCQkgKiBUT0RPOiBJIGd1ZXNzIEkgY291bGQgb21pdCBpdCBmcm9tIHRoZSBxdWFs IHRvbywgcmlnaHQ/IEFuZCBsaWtld2lzZSB3aXRoIGNhc2NhZGUgZGVsZXRlcz8KKwkJCSAqLwor CQkJaWYgKGkgPCByaWluZm8tPm5rZXlzIC0gMSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVy eWJ1ZiwKKwkJCQkJCQkJICIlcyAlcyA9ICVzIiwKKwkJCQkJCQkJIHF1ZXJ5c2VwLCBhdHRzdHIs CisJCQkJCQkJCSBpc19zZXRfbnVsbCA/ICJOVUxMIiA6ICJERUZBVUxUIik7CisJCQlzcHJpbnRm KHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKKwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVhbGJ1Ziwg cXVhbHNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9l cV9vcHJzW2ldLAorCQkJCQkJCWF0dHN0ciwgZmtfdHlwZSk7CiAJCQlpZiAocGtfY29sbCAhPSBm a19jb2xsICYmICFnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKIAkJCQly aV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKIAkJCXF1ZXJ5c2Vw ID0gIiwiOwpAQCAtMTExNCw4ICsyMTYyLDEzIEBAIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJpZ2Rh dGEsIGJvb2wgaXNfc2V0X251bGwpCiAJCX0KIAkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmcXVl cnlidWYsIHF1YWxidWYuZGF0YSwgcXVhbGJ1Zi5sZW4pOwogCisJCWlmIChwa0hhc1JhbmdlKQor CQkJcXVlcnlvaWRzW3JpaW5mby0+bmtleXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5w a19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSk7CisJCWVsc2UKKwkJCXF1ZXJ5b2lkc1tyaWlu Zm8tPm5rZXlzXSA9IHJpaW5mby0+cGtfcGVyaW9kX3JhbmdldHlwZTsKKwogCQkvKiBQcmVwYXJl IGFuZCBzYXZlIHRoZSBwbGFuICovCi0JCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRh dGEsIHJpaW5mby0+bmtleXMsIHF1ZXJ5b2lkcywKKwkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVl cnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywKIAkJCQkJCQkgJnFrZXks IGZrX3JlbCwgcGtfcmVsKTsKIAl9CiAKQEAgLTExMjUsNiArMjE3OCw3IEBAIHJpX3NldChUcmln Z2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwpCiAJcmlfUGVyZm9ybUNoZWNrKHJp aW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwg TlVMTCwKKwkJCQkJdHJ1ZSwgdGFyZ2V0UmFuZ2UsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVj dCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfVVBEQVRFKTsKIApAQCAtMTE1NSwxMzIgKzIyMDks NiBAQCByaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxsKQogfQog CiAKLS8qCi0gKiBSSV9GS2V5X3BrX3VwZF9jaGVja19yZXF1aXJlZCAtCi0gKgotICogQ2hlY2sg aWYgd2UgcmVhbGx5IG5lZWQgdG8gZmlyZSB0aGUgUkkgdHJpZ2dlciBmb3IgYW4gdXBkYXRlIG9y IGRlbGV0ZSB0byBhIFBLCi0gKiByZWxhdGlvbi4gIFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSBBRlRF UiB0cmlnZ2VyIHF1ZXVlIG1hbmFnZXIgdG8gc2VlIGlmCi0gKiBpdCBjYW4gc2tpcCBxdWV1aW5n IGFuIGluc3RhbmNlIG9mIGFuIFJJIHRyaWdnZXIuICBSZXR1cm5zIHRydWUgaWYgdGhlCi0gKiB0 cmlnZ2VyIG11c3QgYmUgZmlyZWQsIGZhbHNlIGlmIHdlIGNhbiBwcm92ZSB0aGUgY29uc3RyYWlu dCB3aWxsIHN0aWxsCi0gKiBiZSBzYXRpc2ZpZWQuCi0gKgotICogbmV3c2xvdCB3aWxsIGJlIE5V TEwgaWYgdGhpcyBpcyBjYWxsZWQgZm9yIGEgZGVsZXRlLgotICovCi1ib29sCi1SSV9GS2V5X3Br X3VwZF9jaGVja19yZXF1aXJlZChUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBwa19yZWwsCi0J CQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3Qp Ci17Ci0JY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKLQotCXJpaW5mbyA9IHJpX0Zl dGNoQ29uc3RyYWludEluZm8odHJpZ2dlciwgcGtfcmVsLCB0cnVlKTsKLQotCS8qCi0JICogSWYg YW55IG9sZCBrZXkgdmFsdWUgaXMgTlVMTCwgdGhlIHJvdyBjb3VsZCBub3QgaGF2ZSBiZWVuIHJl ZmVyZW5jZWQgYnkKLQkgKiBhbiBGSyByb3csIHNvIG5vIGNoZWNrIGlzIG5lZWRlZC4KLQkgKi8K LQlpZiAocmlfTnVsbENoZWNrKFJlbGF0aW9uR2V0RGVzY3IocGtfcmVsKSwgb2xkc2xvdCwgcmlp bmZvLCB0cnVlKSAhPSBSSV9LRVlTX05PTkVfTlVMTCkKLQkJcmV0dXJuIGZhbHNlOwotCi0JLyog SWYgYWxsIG9sZCBhbmQgbmV3IGtleSB2YWx1ZXMgYXJlIGVxdWFsLCBubyBjaGVjayBpcyBuZWVk ZWQgKi8KLQlpZiAobmV3c2xvdCAmJiByaV9LZXlzRXF1YWwocGtfcmVsLCBvbGRzbG90LCBuZXdz bG90LCByaWluZm8sIHRydWUpKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQkvKiBFbHNlIHdlIG5lZWQg dG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KLQlyZXR1cm4gdHJ1ZTsKLX0KLQotLyoKLSAqIFJJX0ZL ZXlfZmtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KLSAqCi0gKiBDaGVjayBpZiB3ZSByZWFsbHkgbmVl ZCB0byBmaXJlIHRoZSBSSSB0cmlnZ2VyIGZvciBhbiB1cGRhdGUgdG8gYW4gRksKLSAqIHJlbGF0 aW9uLiAgVGhpcyBpcyBjYWxsZWQgYnkgdGhlIEFGVEVSIHRyaWdnZXIgcXVldWUgbWFuYWdlciB0 byBzZWUgaWYKLSAqIGl0IGNhbiBza2lwIHF1ZXVpbmcgYW4gaW5zdGFuY2Ugb2YgYW4gUkkgdHJp Z2dlci4gIFJldHVybnMgdHJ1ZSBpZiB0aGUKLSAqIHRyaWdnZXIgbXVzdCBiZSBmaXJlZCwgZmFs c2UgaWYgd2UgY2FuIHByb3ZlIHRoZSBjb25zdHJhaW50IHdpbGwgc3RpbGwKLSAqIGJlIHNhdGlz ZmllZC4KLSAqLwotYm9vbAotUklfRktleV9ma191cGRfY2hlY2tfcmVxdWlyZWQoVHJpZ2dlciAq dHJpZ2dlciwgUmVsYXRpb24gZmtfcmVsLAotCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKm9sZHNs b3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90KQotewotCWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZv ICpyaWluZm87Ci0JaW50CQkJcmlfbnVsbGNoZWNrOwotCURhdHVtCQl4bWluRGF0dW07Ci0JVHJh bnNhY3Rpb25JZCB4bWluOwotCWJvb2wJCWlzbnVsbDsKLQotCXJpaW5mbyA9IHJpX0ZldGNoQ29u c3RyYWludEluZm8odHJpZ2dlciwgZmtfcmVsLCBmYWxzZSk7Ci0KLQlyaV9udWxsY2hlY2sgPSBy aV9OdWxsQ2hlY2soUmVsYXRpb25HZXREZXNjcihma19yZWwpLCBuZXdzbG90LCByaWluZm8sIGZh bHNlKTsKLQotCS8qCi0JICogSWYgYWxsIG5ldyBrZXkgdmFsdWVzIGFyZSBOVUxMLCB0aGUgcm93 IHNhdGlzZmllcyB0aGUgY29uc3RyYWludCwgc28gbm8KLQkgKiBjaGVjayBpcyBuZWVkZWQuCi0J ICovCi0JaWYgKHJpX251bGxjaGVjayA9PSBSSV9LRVlTX0FMTF9OVUxMKQotCQlyZXR1cm4gZmFs c2U7Ci0KLQkvKgotCSAqIElmIHNvbWUgbmV3IGtleSB2YWx1ZXMgYXJlIE5VTEwsIHRoZSBiZWhh dmlvciBkZXBlbmRzIG9uIHRoZSBtYXRjaAotCSAqIHR5cGUuCi0JICovCi0JZWxzZSBpZiAocmlf bnVsbGNoZWNrID09IFJJX0tFWVNfU09NRV9OVUxMKQotCXsKLQkJc3dpdGNoIChyaWluZm8tPmNv bmZtYXRjaHR5cGUpCi0JCXsKLQkJCWNhc2UgRktDT05TVFJfTUFUQ0hfU0lNUExFOgotCi0JCQkJ LyoKLQkJCQkgKiBJZiBhbnkgbmV3IGtleSB2YWx1ZSBpcyBOVUxMLCB0aGUgcm93IG11c3Qgc2F0 aXNmeSB0aGUKLQkJCQkgKiBjb25zdHJhaW50LCBzbyBubyBjaGVjayBpcyBuZWVkZWQuCi0JCQkJ ICovCi0JCQkJcmV0dXJuIGZhbHNlOwotCi0JCQljYXNlIEZLQ09OU1RSX01BVENIX1BBUlRJQUw6 Ci0KLQkJCQkvKgotCQkJCSAqIERvbid0IGtub3csIG11c3QgcnVuIGZ1bGwgY2hlY2suCi0JCQkJ ICovCi0JCQkJYnJlYWs7Ci0KLQkJCWNhc2UgRktDT05TVFJfTUFUQ0hfRlVMTDoKLQotCQkJCS8q Ci0JCQkJICogSWYgc29tZSBuZXcga2V5IHZhbHVlcyBhcmUgTlVMTCwgdGhlIHJvdyBmYWlscyB0 aGUKLQkJCQkgKiBjb25zdHJhaW50LiAgV2UgbXVzdCBub3QgdGhyb3cgZXJyb3IgaGVyZSwgYmVj YXVzZSB0aGUgcm93Ci0JCQkJICogbWlnaHQgZ2V0IGludmFsaWRhdGVkIGJlZm9yZSB0aGUgY29u c3RyYWludCBpcyB0byBiZQotCQkJCSAqIGNoZWNrZWQsIGJ1dCB3ZSBzaG91bGQgcXVldWUgdGhl IGV2ZW50IHRvIGFwcGx5IHRoZSBjaGVjawotCQkJCSAqIGxhdGVyLgotCQkJCSAqLwotCQkJCXJl dHVybiB0cnVlOwotCQl9Ci0JfQotCi0JLyoKLQkgKiBDb250aW51ZXMgaGVyZSBmb3Igbm8gbmV3 IGtleSB2YWx1ZXMgYXJlIE5VTEwsIG9yIHdlIGNvdWxkbid0IGRlY2lkZQotCSAqIHlldC4KLQkg Ki8KLQotCS8qCi0JICogSWYgdGhlIG9yaWdpbmFsIHJvdyB3YXMgaW5zZXJ0ZWQgYnkgb3VyIG93 biB0cmFuc2FjdGlvbiwgd2UgbXVzdCBmaXJlCi0JICogdGhlIHRyaWdnZXIgd2hldGhlciBvciBu b3QgdGhlIGtleXMgYXJlIGVxdWFsLiAgVGhpcyBpcyBiZWNhdXNlIG91cgotCSAqIFVQREFURSB3 aWxsIGludmFsaWRhdGUgdGhlIElOU0VSVCBzbyB0aGF0IHRoZSBJTlNFUlQgUkkgdHJpZ2dlciB3 aWxsCi0JICogbm90IGRvIGFueXRoaW5nOyBzbyB3ZSBoYWQgYmV0dGVyIGRvIHRoZSBVUERBVEUg Y2hlY2suICAoV2UgY291bGQgc2tpcAotCSAqIHRoaXMgaWYgd2Uga25ldyB0aGUgSU5TRVJUIHRy aWdnZXIgYWxyZWFkeSBmaXJlZCwgYnV0IHRoZXJlIGlzIG5vIGVhc3kKLQkgKiB3YXkgdG8ga25v dyB0aGF0LikKLQkgKi8KLQl4bWluRGF0dW0gPSBzbG90X2dldHN5c2F0dHIob2xkc2xvdCwgTWlu VHJhbnNhY3Rpb25JZEF0dHJpYnV0ZU51bWJlciwgJmlzbnVsbCk7Ci0JQXNzZXJ0KCFpc251bGwp OwotCXhtaW4gPSBEYXR1bUdldFRyYW5zYWN0aW9uSWQoeG1pbkRhdHVtKTsKLQlpZiAoVHJhbnNh Y3Rpb25JZElzQ3VycmVudFRyYW5zYWN0aW9uSWQoeG1pbikpCi0JCXJldHVybiB0cnVlOwotCi0J LyogSWYgYWxsIG9sZCBhbmQgbmV3IGtleSB2YWx1ZXMgYXJlIGVxdWFsLCBubyBjaGVjayBpcyBu ZWVkZWQgKi8KLQlpZiAocmlfS2V5c0VxdWFsKGZrX3JlbCwgb2xkc2xvdCwgbmV3c2xvdCwgcmlp bmZvLCBmYWxzZSkpCi0JCXJldHVybiBmYWxzZTsKLQotCS8qIEVsc2Ugd2UgbmVlZCB0byBmaXJl IHRoZSB0cmlnZ2VyLiAqLwotCXJldHVybiB0cnVlOwotfQogCiAvKgogICogUklfSW5pdGlhbF9D aGVjayAtCkBAIC0xMzA2LDYgKzIyMzQsOCBAQCBSSV9Jbml0aWFsX0NoZWNrKFRyaWdnZXIgKnRy aWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogCVN0cmluZ0luZm9EYXRh IHF1ZXJ5YnVmOwogCWNoYXIJCXBrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CiAJ Y2hhcgkJZmtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwljaGFyCSAgICpwa2F0 dHBhcnQ7CisJY2hhcgkgICAqZmthdHRwYXJ0OwogCWNoYXIJCXBrYXR0bmFtZVtNQVhfUVVPVEVE X05BTUVfTEVOICsgM107CiAJY2hhcgkJZmthdHRuYW1lW01BWF9RVU9URURfTkFNRV9MRU4gKyAz XTsKIAlSYW5nZVRibEVudHJ5ICpwa3J0ZTsKQEAgLTEzODcsMTAgKzIzMTcsMjQgQEAgUklfSW5p dGlhbF9DaGVjayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBr X3JlbCkKIAlzZXAgPSAiIjsKIAlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkr KykKIAl7Ci0JCXF1b3RlT25lTmFtZShma2F0dG5hbWUsCi0JCQkJCSBSSUF0dE5hbWUoZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKLQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYs ICIlc2ZrLiVzIiwgc2VwLCBma2F0dG5hbWUpOwotCQlzZXAgPSAiLCAiOworCQlpZiAocmlpbmZv LT5ma19hdHRudW1zW2ldICE9IEludmFsaWRPaWQpCisJCXsKKwkJCXF1b3RlT25lTmFtZShma2F0 dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7 CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIiVzZmsuJXMiLCBzZXAsIGZrYXR0bmFt ZSk7CisJCQlzZXAgPSAiLCAiOworCQl9CisJCWVsc2UKKwkJeworCQkJcXVvdGVPbmVOYW1lKGZr YXR0bmFtZSwKKwkJCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX3BlcmlvZF9hdHRu dW1zWzBdKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIiVzZmsuJXMiLCBzZXAs IGZrYXR0bmFtZSk7CisJCQlzZXAgPSAiLCAiOworCisJCQlxdW90ZU9uZU5hbWUoZmthdHRuYW1l LAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfcGVyaW9kX2F0dG51bXNbMV0p KTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiJXNmay4lcyIsIHNlcCwgZmthdHRu YW1lKTsKKwkJfQogCX0KIAogCXF1b3RlUmVsYXRpb25OYW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsK QEAgLTE0MDgsMTkgKzIzNTIsNDcgQEAgUklfSW5pdGlhbF9DaGVjayhUcmlnZ2VyICp0cmlnZ2Vy LCBSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAlzZXAgPSAiKCI7CiAJZm9yIChp bnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJewotCQlPaWQJCQlwa190eXBlID0g UklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJT2lkCQkJZmtfdHlw ZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJCXBr X2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0J CU9pZAkJCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSk7CisJCU9pZAkJCXBrX3R5cGU7CisJCU9pZAkJCWZrX3R5cGU7CisJCU9pZAkJCXBrX2Nv bGw7CisJCU9pZAkJCWZrX2NvbGw7CisKKwkJaWYgKHJpaW5mby0+cGtfYXR0bnVtc1tpXSAhPSBJ bnZhbGlkT2lkKQorCQl7CisJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5w a19hdHRudW1zW2ldKTsKKwkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5m by0+cGtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShwa2F0dG5hbWUgKyAzLAorCQkJ CQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkpOworCQkJcGthdHRw YXJ0ID0gcGthdHRuYW1lOworCQl9CisJCWVsc2UKKwkJeworCQkJcGtfdHlwZSA9IHJpaW5mby0+ cGtfcGVyaW9kX3JhbmdldHlwZTsKKwkJCXBrX2NvbGwgPSByaWluZm8tPnBrX3BlcmlvZF9jb2xs YXRpb247CisJCQlwa2F0dHBhcnQgPSBxdWVyeV9wZXJpb2RfcmFuZ2UocmlpbmZvLCBwa19yZWws ICJway4iLCB0cnVlKTsKKwkJfQorCisJCWlmIChyaWluZm8tPmZrX2F0dG51bXNbaV0gIT0gSW52 YWxpZE9pZCkKKwkJeworCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+Zmtf YXR0bnVtc1tpXSk7CisJCQlma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8t PmZrX2F0dG51bXNbaV0pOworCisJCQlxdW90ZU9uZU5hbWUoZmthdHRuYW1lICsgMywKKwkJCQkJ CSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKKwkJCWZrYXR0cGFy dCA9IGZrYXR0bmFtZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWZrX3R5cGUgPSByaWluZm8tPmZr X3BlcmlvZF9yYW5nZXR5cGU7CisJCQlma19jb2xsID0gcmlpbmZvLT5ma19wZXJpb2RfY29sbGF0 aW9uOworCQkJZmthdHRwYXJ0ID0gcXVlcnlfcGVyaW9kX3JhbmdlKHJpaW5mbywgcGtfcmVsLCAi ZmsuIiwgZmFsc2UpOworCQl9CiAKLQkJcXVvdGVPbmVOYW1lKHBrYXR0bmFtZSArIDMsCi0JCQkJ CSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pKTsKLQkJcXVvdGVPbmVO YW1lKGZrYXR0bmFtZSArIDMsCi0JCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0 dG51bXNbaV0pKTsKIAkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1Ziwgc2VwLAotCQkJCQkJcGth dHRuYW1lLCBwa190eXBlLAorCQkJCQkJcGthdHRwYXJ0LCBwa190eXBlLAogCQkJCQkJcmlpbmZv LT5wZl9lcV9vcHJzW2ldLAotCQkJCQkJZmthdHRuYW1lLCBma190eXBlKTsKKwkJCQkJCWZrYXR0 cGFydCwgZmtfdHlwZSk7CiAJCWlmIChwa19jb2xsICE9IGZrX2NvbGwpCiAJCQlyaV9HZW5lcmF0 ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKIAkJc2VwID0gIkFORCI7CkBAIC0y MDM0LDYgKzMwMDYsNDMgQEAgcmlfRmV0Y2hDb25zdHJhaW50SW5mbyhUcmlnZ2VyICp0cmlnZ2Vy LCBSZWxhdGlvbiB0cmlnX3JlbCwgYm9vbCByZWxfaXNfcGspCiAJcmV0dXJuIHJpaW5mbzsKIH0K IAorc3RhdGljIHZvaWQgRGVjb25zdHJ1Y3RGa0NvbnN0cmFpbnRQZXJpb2QoT2lkIHBlcmlvZGlk LCBPaWQgKnJhbmdldHlwZWlkLCBjaGFyICpyYW5nZXR5cGVuYW1lLCBPaWQgKnJuZ2NvbGxhdGlv biwgaW50MTYgKmF0dG51bXMpCit7CisJSGVhcFR1cGxlIHBlcnR1cGxlID0gU2VhcmNoU3lzQ2Fj aGUxKFBFUklPRE9JRCwgcGVyaW9kaWQpOworCUZvcm1fcGdfcGVyaW9kIHBlcmlvZDsKKwlGb3Jt X3BnX3JhbmdlIHJhbmdldHlwZTsKKwlGb3JtX3BnX3R5cGUgdHlwZTsKKwlIZWFwVHVwbGUgcm5n dHVwbGU7CisJSGVhcFR1cGxlIHR5cHR1cGxlOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHBl cnR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAl ZCIsIHBlcmlvZGlkKTsKKworCXBlcmlvZCA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHBl cnR1cGxlKTsKKworCSpyYW5nZXR5cGVpZCA9IHBlcmlvZC0+cGVycm5ndHlwZTsKKwlhdHRudW1z WzBdID0gcGVyaW9kLT5wZXJzdGFydDsKKwlhdHRudW1zWzFdID0gcGVyaW9kLT5wZXJlbmQ7CisJ UmVsZWFzZVN5c0NhY2hlKHBlcnR1cGxlKTsKKworCXJuZ3R1cGxlID0gU2VhcmNoU3lzQ2FjaGUx KFJBTkdFVFlQRSwgKnJhbmdldHlwZWlkKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocm5ndHVw bGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmFuZ2UgJWQiLCAq cmFuZ2V0eXBlaWQpOworCisJcmFuZ2V0eXBlID0gKEZvcm1fcGdfcmFuZ2UpIEdFVFNUUlVDVChy bmd0dXBsZSk7CisKKwkqcm5nY29sbGF0aW9uID0gcmFuZ2V0eXBlLT5ybmdjb2xsYXRpb247CisJ UmVsZWFzZVN5c0NhY2hlKHJuZ3R1cGxlKTsKKworCXR5cHR1cGxlID0gU2VhcmNoU3lzQ2FjaGUx KFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0oKnJhbmdldHlwZWlkKSk7CisJaWYgKCFIZWFwVHVw bGVJc1ZhbGlkKHR5cHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIHR5cGUgJXUiLCAqcmFuZ2V0eXBlaWQpOworCisJdHlwZSA9IChGb3JtX3BnX3R5cGUpIEdF VFNUUlVDVCh0eXB0dXBsZSk7CisJc3RyY3B5KHJhbmdldHlwZW5hbWUsIE5hbWVTdHIodHlwZS0+ dHlwbmFtZSkpOworCVJlbGVhc2VTeXNDYWNoZSh0eXB0dXBsZSk7Cit9CisKIC8qCiAgKiBGZXRj aCBvciBjcmVhdGUgdGhlIFJJX0NvbnN0cmFpbnRJbmZvIHN0cnVjdCBmb3IgYW4gRksgY29uc3Ry YWludC4KICAqLwpAQCAtMjA1Nyw2ICszMDY2LDcgQEAgcmlfTG9hZENvbnN0cmFpbnRJbmZvKE9p ZCBjb25zdHJhaW50T2lkKQogCXJpaW5mbyA9IChSSV9Db25zdHJhaW50SW5mbyAqKSBoYXNoX3Nl YXJjaChyaV9jb25zdHJhaW50X2NhY2hlLAogCQkJCQkJCQkJCQkgICAodm9pZCAqKSAmY29uc3Ry YWludE9pZCwKIAkJCQkJCQkJCQkJICAgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwogCWlmICghZm91 bmQpCiAJCXJpaW5mby0+dmFsaWQgPSBmYWxzZTsKIAllbHNlIGlmIChyaWluZm8tPnZhbGlkKQpA QCAtMjA5MSw2ICszMTAxLDI0IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQgY29uc3RyYWlu dE9pZCkKIAlyaWluZm8tPmNvbmZ1cGR0eXBlID0gY29uRm9ybS0+Y29uZnVwZHR5cGU7CiAJcmlp bmZvLT5jb25mZGVsdHlwZSA9IGNvbkZvcm0tPmNvbmZkZWx0eXBlOwogCXJpaW5mby0+Y29uZm1h dGNodHlwZSA9IGNvbkZvcm0tPmNvbmZtYXRjaHR5cGU7CisJcmlpbmZvLT50ZW1wb3JhbCA9IGNv bkZvcm0tPmNvbnRlbXBvcmFsOworCXJpaW5mby0+cGtfcGVyaW9kID0gY29uRm9ybS0+Y29uZnBl cmlvZDsKKwlyaWluZm8tPnBrX3BlcmlvZF9yYW5nZXR5cGUgPSBJbnZhbGlkT2lkOworCXJpaW5m by0+cGtfcGVyaW9kX2NvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisJc3RyY3B5KHJpaW5mby0+cGtf cGVyaW9kX3JhbmdldHlwZV9uYW1lLCAiIik7CisJbWVtc2V0KHJpaW5mby0+cGtfcGVyaW9kX2F0 dG51bXMsIDAsIHNpemVvZihyaWluZm8tPnBrX3BlcmlvZF9hdHRudW1zKSk7CisJcmlpbmZvLT5m a19wZXJpb2QgPSBjb25Gb3JtLT5jb25wZXJpb2Q7CisJcmlpbmZvLT5ma19wZXJpb2RfcmFuZ2V0 eXBlID0gSW52YWxpZE9pZDsKKwlyaWluZm8tPmZrX3BlcmlvZF9jb2xsYXRpb24gPSBJbnZhbGlk T2lkOworCXN0cmNweShyaWluZm8tPmZrX3BlcmlvZF9yYW5nZXR5cGVfbmFtZSwgIiIpOworCW1l bXNldChyaWluZm8tPmZrX3BlcmlvZF9hdHRudW1zLCAwLCBzaXplb2YocmlpbmZvLT5ma19wZXJp b2RfYXR0bnVtcykpOworCisJaWYgKGNvbkZvcm0tPmNvbmZwZXJpb2QgIT0gSW52YWxpZE9pZCkK Kwl7CisJCURlY29uc3RydWN0RmtDb25zdHJhaW50UGVyaW9kKGNvbkZvcm0tPmNvbmZwZXJpb2Qs ICZyaWluZm8tPnBrX3BlcmlvZF9yYW5nZXR5cGUsIHJpaW5mby0+cGtfcGVyaW9kX3JhbmdldHlw ZV9uYW1lLCAmcmlpbmZvLT5wa19wZXJpb2RfY29sbGF0aW9uLCByaWluZm8tPnBrX3BlcmlvZF9h dHRudW1zKTsKKwl9CisJaWYgKGNvbkZvcm0tPmNvbnBlcmlvZCAhPSBJbnZhbGlkT2lkKQorCQlE ZWNvbnN0cnVjdEZrQ29uc3RyYWludFBlcmlvZChjb25Gb3JtLT5jb25wZXJpb2QsICZyaWluZm8t PmZrX3BlcmlvZF9yYW5nZXR5cGUsIHJpaW5mby0+ZmtfcGVyaW9kX3JhbmdldHlwZV9uYW1lLCAm cmlpbmZvLT5ma19wZXJpb2RfY29sbGF0aW9uLCByaWluZm8tPmZrX3BlcmlvZF9hdHRudW1zKTsK IAogCURlY29uc3RydWN0RmtDb25zdHJhaW50Um93KHR1cCwKIAkJCQkJCQkgICAmcmlpbmZvLT5u a2V5cywKQEAgLTIyNDIsNiArMzI3MCw3IEBAIHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25z dHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCVJJX1F1ZXJ5S2V5ICpxa2V5LCBTUElQbGFuUHRyIHFw bGFuLAogCQkJCVJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsLAogCQkJCVR1cGxlVGFi bGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKKwkJCQlib29sIGhhc0Zv clBvcnRpb25PZiwgRGF0dW0gZm9yUG9ydGlvbk9mLAogCQkJCWJvb2wgZGV0ZWN0TmV3Um93cywg aW50IGV4cGVjdF9PSykKIHsKIAlSZWxhdGlvbglxdWVyeV9yZWwsCkBAIC0yMjg3LDE1ICszMzE2 LDE2IEBAIHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAog CWlmIChuZXdzbG90KQogCXsKIAkJcmlfRXh0cmFjdFZhbHVlcyhzb3VyY2VfcmVsLCBuZXdzbG90 LCByaWluZm8sIHNvdXJjZV9pc19waywKLQkJCQkJCSB2YWxzLCBudWxscyk7CisJCQkJCQkgaGFz Rm9yUG9ydGlvbk9mLCBmb3JQb3J0aW9uT2YsIHZhbHMsIG51bGxzKTsKIAkJaWYgKG9sZHNsb3Qp CiAJCQlyaV9FeHRyYWN0VmFsdWVzKHNvdXJjZV9yZWwsIG9sZHNsb3QsIHJpaW5mbywgc291cmNl X2lzX3BrLAorCQkJCQkJCSBoYXNGb3JQb3J0aW9uT2YsIGZvclBvcnRpb25PZiwKIAkJCQkJCQkg dmFscyArIHJpaW5mby0+bmtleXMsIG51bGxzICsgcmlpbmZvLT5ua2V5cyk7CiAJfQogCWVsc2UK IAl7CiAJCXJpX0V4dHJhY3RWYWx1ZXMoc291cmNlX3JlbCwgb2xkc2xvdCwgcmlpbmZvLCBzb3Vy Y2VfaXNfcGssCi0JCQkJCQkgdmFscywgbnVsbHMpOworCQkJCQkJIGhhc0ZvclBvcnRpb25PZiwg Zm9yUG9ydGlvbk9mLCB2YWxzLCBudWxscyk7CiAJfQogCiAJLyoKQEAgLTIzNzcsNiArMzQwNyw3 IEBAIHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogc3Rh dGljIHZvaWQKIHJpX0V4dHJhY3RWYWx1ZXMoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAq c2xvdCwKIAkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywgYm9vbCByZWxfaXNf cGssCisJCQkJIGJvb2wgaGFzRm9yUG9ydGlvbk9mLCBEYXR1bSBmb3JQb3J0aW9uT2YsCiAJCQkJ IERhdHVtICp2YWxzLCBjaGFyICpudWxscykKIHsKIAljb25zdCBpbnQxNiAqYXR0bnVtczsKQEAg LTIzODksOCArMzQyMCwyMiBAQCByaV9FeHRyYWN0VmFsdWVzKFJlbGF0aW9uIHJlbCwgVHVwbGVU YWJsZVNsb3QgKnNsb3QsCiAKIAlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkr KykKIAl7Ci0JCXZhbHNbaV0gPSBzbG90X2dldGF0dHIoc2xvdCwgYXR0bnVtc1tpXSwgJmlzbnVs bCk7Ci0JCW51bGxzW2ldID0gaXNudWxsID8gJ24nIDogJyAnOworCQlpZiAoYXR0bnVtc1tpXSAh PSBJbnZhbGlkT2lkKQorCQl7CisJCQl2YWxzW2ldID0gc2xvdF9nZXRhdHRyKHNsb3QsIGF0dG51 bXNbaV0sICZpc251bGwpOworCQkJbnVsbHNbaV0gPSBpc251bGwgPyAnbicgOiAnICc7CisJCX0K KwkJZWxzZQorCQl7CisJCQl2YWxzW2ldID0gYnVpbGRfcGVyaW9kX3JhbmdlKHJpaW5mbywgc2xv dCwgcmVsX2lzX3BrKTsKKwkJCW51bGxzW2ldID0gJyAnOworCQl9CisJfQorCisJaWYgKGhhc0Zv clBvcnRpb25PZikKKwl7CisJCXZhbHNbcmlpbmZvLT5ua2V5c10gPSBmb3JQb3J0aW9uT2Y7CisJ CW51bGxzW3JpaW5mby0+bmtleXNdID0gJyAnOwogCX0KIH0KIApAQCAtMjQxMyw2ICszNDU4LDcg QEAgcmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJ U3RyaW5nSW5mb0RhdGEga2V5X3ZhbHVlczsKIAlib29sCQlvbmZrOwogCWNvbnN0IGludDE2ICph dHRudW1zOworCWNvbnN0IGludDE2ICpwZXJpb2RfYXR0bnVtczsKIAlPaWQJCQlyZWxfb2lkOwog CUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJYm9vbAkJaGFzX3Blcm0gPSB0cnVlOwpAQCAtMjQyNSw2 ICszNDcxLDcgQEAgcmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpy aWluZm8sCiAJaWYgKG9uZmspCiAJewogCQlhdHRudW1zID0gcmlpbmZvLT5ma19hdHRudW1zOwor CQlwZXJpb2RfYXR0bnVtcyA9IHJpaW5mby0+ZmtfcGVyaW9kX2F0dG51bXM7CiAJCXJlbF9vaWQg PSBma19yZWwtPnJkX2lkOwogCQlpZiAodHVwZGVzYyA9PSBOVUxMKQogCQkJdHVwZGVzYyA9IGZr X3JlbC0+cmRfYXR0OwpAQCAtMjQzMiw2ICszNDc5LDcgQEAgcmlfUmVwb3J0VmlvbGF0aW9uKGNv bnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJZWxzZQogCXsKIAkJYXR0bnVtcyA9IHJp aW5mby0+cGtfYXR0bnVtczsKKwkJcGVyaW9kX2F0dG51bXMgPSByaWluZm8tPnBrX3BlcmlvZF9h dHRudW1zOwogCQlyZWxfb2lkID0gcGtfcmVsLT5yZF9pZDsKIAkJaWYgKHR1cGRlc2MgPT0gTlVM TCkKIAkJCXR1cGRlc2MgPSBwa19yZWwtPnJkX2F0dDsKQEAgLTI0ODQsMTIgKzM1MzIsMTggQEAg cmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCWZv ciAoaW50IGlkeCA9IDA7IGlkeCA8IHJpaW5mby0+bmtleXM7IGlkeCsrKQogCQl7CiAJCQlpbnQJ CQlmbnVtID0gYXR0bnVtc1tpZHhdOwotCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVE ZXNjQXR0cih0dXBkZXNjLCBmbnVtIC0gMSk7CisJCQlib29sCQloYXNfcGVyaW9kID0gZm51bSA9 PSBJbnZhbGlkT2lkOwogCQkJY2hhcgkgICAqbmFtZSwKIAkJCQkJICAgKnZhbDsKKwkJCUZvcm1f cGdfYXR0cmlidXRlIGF0dDsKIAkJCURhdHVtCQlkYXR1bTsKIAkJCWJvb2wJCWlzbnVsbDsKIAor CQkJaWYgKGhhc19wZXJpb2QpCisJCQkJZm51bSA9IHBlcmlvZF9hdHRudW1zWzBdOworCisJCQlh dHQgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGZudW0gLSAxKTsKKwogCQkJbmFtZSA9IE5hbWVT dHIoYXR0LT5hdHRuYW1lKTsKIAogCQkJZGF0dW0gPSBzbG90X2dldGF0dHIodmlvbGF0b3JzbG90 LCBmbnVtLCAmaXNudWxsKTsKQEAgLTI1MTEsNiArMzU2NSwzMiBAQCByaV9SZXBvcnRWaW9sYXRp b24oY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCX0KIAkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmtleV9uYW1lcywgbmFtZSk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZrZXlfdmFsdWVzLCB2YWwpOworCisJCQlpZiAoaGFzX3BlcmlvZCkKKwkJCXsKKwkJCQlmbnVt ID0gcGVyaW9kX2F0dG51bXNbMV07CisKKwkJCQlhdHQgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2Ms IGZudW0gLSAxKTsKKworCQkJCW5hbWUgPSBOYW1lU3RyKGF0dC0+YXR0bmFtZSk7CisKKwkJCQlk YXR1bSA9IHNsb3RfZ2V0YXR0cih2aW9sYXRvcnNsb3QsIGZudW0sICZpc251bGwpOworCQkJCWlm ICghaXNudWxsKQorCQkJCXsKKwkJCQkJT2lkCQkJZm91dG9pZDsKKwkJCQkJYm9vbAkJdHlwaXN2 YXJsZW5hOworCisJCQkJCWdldFR5cGVPdXRwdXRJbmZvKGF0dC0+YXR0dHlwaWQsICZmb3V0b2lk LCAmdHlwaXN2YXJsZW5hKTsKKwkJCQkJdmFsID0gT2lkT3V0cHV0RnVuY3Rpb25DYWxsKGZvdXRv aWQsIGRhdHVtKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQl2YWwgPSAibnVsbCI7CisKKwkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZrZXlfbmFtZXMsICIsICIpOworCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmtleV92YWx1ZXMsICIsICIpOworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJmtleV9uYW1lcywgbmFtZSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygma2V5X3Zh bHVlcywgdmFsKTsKKwkJCX0KIAkJfQogCX0KIApAQCAtMjU3NywxMCArMzY1NywyMSBAQCByaV9O dWxsQ2hlY2soVHVwbGVEZXNjIHR1cERlc2MsCiAKIAlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5m by0+bmtleXM7IGkrKykKIAl7Ci0JCWlmIChzbG90X2F0dGlzbnVsbChzbG90LCBhdHRudW1zW2ld KSkKLQkJCW5vbmVudWxsID0gZmFsc2U7Ci0JCWVsc2UKKwkJaWYgKGF0dG51bXNbaV0gPT0gSW52 YWxpZE9pZCkKKwkJeworCQkJLyoKKwkJCSAqIE5ldmVyIHRyZWF0IGEgcGVyaW9kIGFzIG51bGws IGJlY2F1c2UgZXZlbiBpZiBzdGFydCBhbmQgZW5kCisJCQkgKiBhcmUgYm90aCBudWxsLCB0aGF0 IGp1c3Qgc2lnbmlmaWVzIGFuIHVuYm91bmRlZCByYW5nZS4KKwkJCSAqLwogCQkJYWxsbnVsbCA9 IGZhbHNlOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKHNsb3RfYXR0aXNudWxsKHNsb3QsIGF0 dG51bXNbaV0pKQorCQkJCW5vbmVudWxsID0gZmFsc2U7CisJCQllbHNlCisJCQkJYWxsbnVsbCA9 IGZhbHNlOworCQl9CiAJfQogCiAJaWYgKGFsbG51bGwpCkBAIC0yNzExLDkgKzM4MDIsMTIgQEAg cmlfSGFzaFByZXBhcmVkUGxhbihSSV9RdWVyeUtleSAqa2V5LCBTUElQbGFuUHRyIHBsYW4pCiAK IAogLyoKLSAqIHJpX0tleXNFcXVhbCAtCisgKiByaV9LZXlzU3RhYmxlIC0KICAqCi0gKiBDaGVj ayBpZiBhbGwga2V5IHZhbHVlcyBpbiBPTEQgYW5kIE5FVyBhcmUgZXF1YWwuCisgKiBDaGVjayBp ZiBhbGwga2V5IHZhbHVlcyBpbiBPTEQgYW5kIE5FVyBhcmUgImVxdWl2YWxlbnQiOgorICogRm9y IG5vcm1hbCBGS3Mgd2UgY2hlY2sgZm9yIGVxdWFsaXR5LgorICogRm9yIHRlbXBvcmFsIEZLcyB3 ZSBjaGVjayB0aGF0IHRoZSBQSyBzaWRlIGlzIGEgc3VwZXJzZXQgb2YgaXRzIG9sZCB2YWx1ZSwK KyAqIG9yIHRoZSBGSyBzaWRlIGlzIGEgc3Vic2V0LgogICoKICAqIE5vdGU6IGF0IHNvbWUgcG9p bnQgd2UgbWlnaHQgd2lzaCB0byByZWRlZmluZSB0aGlzIGFzIGNoZWNraW5nIGZvcgogICogIklT IE5PVCBESVNUSU5DVCIgcmF0aGVyIHRoYW4gIj0iLCB0aGF0IGlzLCBhbGxvdyB0d28gbnVsbHMg dG8gYmUKQEAgLTI3MjEsNyArMzgxNSw3IEBAIHJpX0hhc2hQcmVwYXJlZFBsYW4oUklfUXVlcnlL ZXkgKmtleSwgU1BJUGxhblB0ciBwbGFuKQogICogcHJldmlvdXNseSBmb3VuZCBhdCBsZWFzdCBv bmUgb2YgdGhlIHJvd3MgdG8gY29udGFpbiBubyBudWxscy4KICAqLwogc3RhdGljIGJvb2wKLXJp X0tleXNFcXVhbChSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRh YmxlU2xvdCAqbmV3c2xvdCwKK3JpX0tleXNTdGFibGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxl U2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCiAJCQkgY29uc3QgUklfQ29u c3RyYWludEluZm8gKnJpaW5mbywgYm9vbCByZWxfaXNfcGspCiB7CiAJY29uc3QgaW50MTYgKmF0 dG51bXM7CkBAIC0yNzM4LDQ1ICszODMyLDcyIEBAIHJpX0tleXNFcXVhbChSZWxhdGlvbiByZWws IFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKIAkJRGF0 dW0JCW5ld3ZhbHVlOwogCQlib29sCQlpc251bGw7CiAKLQkJLyoKLQkJICogR2V0IG9uZSBhdHRy aWJ1dGUncyBvbGR2YWx1ZS4gSWYgaXQgaXMgTlVMTCAtIHRoZXkncmUgbm90IGVxdWFsLgotCQkg Ki8KLQkJb2xkdmFsdWUgPSBzbG90X2dldGF0dHIob2xkc2xvdCwgYXR0bnVtc1tpXSwgJmlzbnVs bCk7Ci0JCWlmIChpc251bGwpCi0JCQlyZXR1cm4gZmFsc2U7Ci0KLQkJLyoKLQkJICogR2V0IG9u ZSBhdHRyaWJ1dGUncyBuZXd2YWx1ZS4gSWYgaXQgaXMgTlVMTCAtIHRoZXkncmUgbm90IGVxdWFs LgotCQkgKi8KLQkJbmV3dmFsdWUgPSBzbG90X2dldGF0dHIobmV3c2xvdCwgYXR0bnVtc1tpXSwg JmlzbnVsbCk7Ci0JCWlmIChpc251bGwpCi0JCQlyZXR1cm4gZmFsc2U7Ci0KLQkJaWYgKHJlbF9p c19waykKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwgJiYgYXR0bnVtc1tpXSA9PSBJbnZhbGlkT2lk KQogCQl7CiAJCQkvKgotCQkJICogSWYgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIFBLIHRhYmxlLCB0 aGVuIGRvIGEgYnl0ZXdpc2UKLQkJCSAqIGNvbXBhcmlzb24uICBXZSBtdXN0IHByb3BhZ2F0ZSBQ SyBjaGFuZ2VzIGlmIHRoZSB2YWx1ZSBpcwotCQkJICogY2hhbmdlZCB0byBvbmUgdGhhdCAibG9v a3MiIGRpZmZlcmVudCBidXQgd291bGQgY29tcGFyZSBhcwotCQkJICogZXF1YWwgdXNpbmcgdGhl IGVxdWFsaXR5IG9wZXJhdG9yLiAgVGhpcyBvbmx5IG1ha2VzIGEKLQkJCSAqIGRpZmZlcmVuY2Ug Zm9yIE9OIFVQREFURSBDQVNDQURFLCBidXQgZm9yIGNvbnNpc3RlbmN5IHdlIHRyZWF0Ci0JCQkg KiBhbGwgY2hhbmdlcyB0byB0aGUgUEsgdGhlIHNhbWUuCisJCQkgKiBXZSBoYXZlIGEgcGVyaW9k LCBzbyB3ZSBoYXZlIHRvIGdldCB0aGUgc3RhcnQvZW5kIGNvbHVtbnMKKwkJCSAqIGFuZCBidWls ZCBhIHJhbmdlLgogCQkJICovCi0JCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NB dHRyKG9sZHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IsIGF0dG51bXNbaV0gLSAxKTsKLQotCQkJ aWYgKCFkYXR1bV9pbWFnZV9lcShvbGR2YWx1ZSwgbmV3dmFsdWUsIGF0dC0+YXR0Ynl2YWwsIGF0 dC0+YXR0bGVuKSkKLQkJCQlyZXR1cm4gZmFsc2U7CisJCQlvbGR2YWx1ZSA9IGJ1aWxkX3Blcmlv ZF9yYW5nZShyaWluZm8sIG9sZHNsb3QsIHJlbF9pc19wayk7CisJCQluZXd2YWx1ZSA9IGJ1aWxk X3BlcmlvZF9yYW5nZShyaWluZm8sIG5ld3Nsb3QsIHJlbF9pc19wayk7CiAJCX0KIAkJZWxzZQog CQl7CiAJCQkvKgotCQkJICogRm9yIHRoZSBGSyB0YWJsZSwgY29tcGFyZSB3aXRoIHRoZSBhcHBy b3ByaWF0ZSBlcXVhbGl0eQotCQkJICogb3BlcmF0b3IuICBDaGFuZ2VzIHRoYXQgY29tcGFyZSBl cXVhbCB3aWxsIHN0aWxsIHNhdGlzZnkgdGhlCi0JCQkgKiBjb25zdHJhaW50IGFmdGVyIHRoZSB1 cGRhdGUuCisJCQkgKiBHZXQgb25lIGF0dHJpYnV0ZSdzIG9sZHZhbHVlLiBJZiBpdCBpcyBOVUxM IC0gdGhleSdyZSBub3QgZXF1YWwuCisJCQkgKi8KKwkJCW9sZHZhbHVlID0gc2xvdF9nZXRhdHRy KG9sZHNsb3QsIGF0dG51bXNbaV0sICZpc251bGwpOworCQkJaWYgKGlzbnVsbCkKKwkJCQlyZXR1 cm4gZmFsc2U7CisKKwkJCS8qCisJCQkgKiBHZXQgb25lIGF0dHJpYnV0ZSdzIG5ld3ZhbHVlLiBJ ZiBpdCBpcyBOVUxMIC0gdGhleSdyZSBub3QgZXF1YWwuCiAJCQkgKi8KLQkJCWlmICghcmlfQXR0 cmlidXRlc0VxdWFsKHJpaW5mby0+ZmZfZXFfb3Byc1tpXSwgUklBdHRUeXBlKHJlbCwgYXR0bnVt c1tpXSksCi0JCQkJCQkJCQlvbGR2YWx1ZSwgbmV3dmFsdWUpKQorCQkJbmV3dmFsdWUgPSBzbG90 X2dldGF0dHIobmV3c2xvdCwgYXR0bnVtc1tpXSwgJmlzbnVsbCk7CisJCQlpZiAoaXNudWxsKQog CQkJCXJldHVybiBmYWxzZTsKKworCQl9CisKKwkJaWYgKHJlbF9pc19waykKKwkJeworCQkJaWYg KHJpaW5mby0+dGVtcG9yYWwgJiYgaSA9PSByaWluZm8tPm5rZXlzIC0gMSkKKwkJCXsKKwkJCQly ZXR1cm4gRGF0dW1HZXRCb29sKERpcmVjdEZ1bmN0aW9uQ2FsbDIocmFuZ2VfY29udGFpbnMsIG5l d3ZhbHVlLCBvbGR2YWx1ZSkpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICog SWYgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIFBLIHRhYmxlLCB0aGVuIGRvIGEgYnl0ZXdpc2UKKwkJ CQkgKiBjb21wYXJpc29uLiAgV2UgbXVzdCBwcm9wYWdhdGUgUEsgY2hhbmdlcyBpZiB0aGUgdmFs dWUgaXMKKwkJCQkgKiBjaGFuZ2VkIHRvIG9uZSB0aGF0ICJsb29rcyIgZGlmZmVyZW50IGJ1dCB3 b3VsZCBjb21wYXJlIGFzCisJCQkJICogZXF1YWwgdXNpbmcgdGhlIGVxdWFsaXR5IG9wZXJhdG9y LiAgVGhpcyBvbmx5IG1ha2VzIGEKKwkJCQkgKiBkaWZmZXJlbmNlIGZvciBPTiBVUERBVEUgQ0FT Q0FERSwgYnV0IGZvciBjb25zaXN0ZW5jeSB3ZSB0cmVhdAorCQkJCSAqIGFsbCBjaGFuZ2VzIHRv IHRoZSBQSyB0aGUgc2FtZS4KKwkJCQkgKi8KKwkJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBU dXBsZURlc2NBdHRyKG9sZHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IsIGF0dG51bXNbaV0gLSAx KTsKKworCQkJCWlmICghZGF0dW1faW1hZ2VfZXEob2xkdmFsdWUsIG5ld3ZhbHVlLCBhdHQtPmF0 dGJ5dmFsLCBhdHQtPmF0dGxlbikpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJfQorCQll bHNlCisJCXsKKwkJCWlmIChyaWluZm8tPnRlbXBvcmFsICYmIGkgPT0gcmlpbmZvLT5ua2V5cyAt IDEpCisJCQl7CisJCQkJcmV0dXJuIERhdHVtR2V0Qm9vbChEaXJlY3RGdW5jdGlvbkNhbGwyKHJh bmdlX2NvbnRhaW5zLCBvbGR2YWx1ZSwgbmV3dmFsdWUpKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsK KwkJCQkvKgorCQkJCSAqIEZvciB0aGUgRksgdGFibGUsIGNvbXBhcmUgd2l0aCB0aGUgYXBwcm9w cmlhdGUgZXF1YWxpdHkKKwkJCQkgKiBvcGVyYXRvci4gIENoYW5nZXMgdGhhdCBjb21wYXJlIGVx dWFsIHdpbGwgc3RpbGwgc2F0aXNmeSB0aGUKKwkJCQkgKiBjb25zdHJhaW50IGFmdGVyIHRoZSB1 cGRhdGUuCisJCQkJICovCisJCQkJaWYgKCFyaV9BdHRyaWJ1dGVzRXF1YWwocmlpbmZvLT5mZl9l cV9vcHJzW2ldLCBSSUF0dFR5cGUocmVsLCBhdHRudW1zW2ldKSwKKwkJCQkJCQkJCQlvbGR2YWx1 ZSwgbmV3dmFsdWUpKQorCQkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CiAJCX0KIAl9CiAKQEAgLTI5 NTAsMyArNDA3MSwxNyBAQCBSSV9GS2V5X3RyaWdnZXJfdHlwZShPaWQgdGdmb2lkKQogCiAJcmV0 dXJuIFJJX1RSSUdHRVJfTk9ORTsKIH0KKworc3RhdGljIERhdHVtCit0dXBsZVJhbmdlKFR1cGxl VGFibGVTbG90ICpzbG90LCBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvKQoreworCWJv b2wJaXNudWxsOworCWludDE2CWF0dG51bSA9IHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5r ZXlzIC0gMV07CisKKwlpZiAoYXR0bnVtID09IEludmFsaWRPaWQpCisJCS8qIEJ1aWxkIGEgcmFu Z2UgZnJvbSB0aGUgUEVSSU9EIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyAqLworCQlyZXR1cm4gYnVp bGRfcGVyaW9kX3JhbmdlKHJpaW5mbywgc2xvdCwgdHJ1ZSk7CisJZWxzZQorCQkvKiBHZXQgdGhl IHJhbmdlIGZyb20gdGhlIHJhbmdlIGNvbHVtbiAqLworCQlyZXR1cm4gc2xvdF9nZXRhdHRyKHNs b3QsIGF0dG51bSwgJmlzbnVsbCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXgg OTc4N2ExZDcwMy4uODM0ZjQ4Njc5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAt MzMzLDcgKzMzMyw3IEBAIHN0YXRpYyBjaGFyICpwZ19nZXRfdmlld2RlZl93b3JrZXIoT2lkIHZp ZXdvaWQsCiAJCQkJCQkJCSAgIGludCBwcmV0dHlGbGFncywgaW50IHdyYXBDb2x1bW4pOwogc3Rh dGljIGNoYXIgKnBnX2dldF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lkLCBib29sIHByZXR0 eSk7CiBzdGF0aWMgaW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1u X2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9pZCBpbmRleElkLAotCQkJCQkJCQkJCSBib29sIHdp dGhvdXRPdmVybGFwcywgT2lkIHBlcmlvZGlkLCBTdHJpbmdJbmZvIGJ1Zik7CisJCQkJCQkJCQkJ IGJvb2wgd2l0aG91dE92ZXJsYXBzLCBib29sIHdpdGhQZXJpb2QsIE9pZCBwZXJpb2RpZCwgU3Ry aW5nSW5mbyBidWYpOwogc3RhdGljIGNoYXIgKnBnX2dldF9ydWxlZGVmX3dvcmtlcihPaWQgcnVs ZW9pZCwgaW50IHByZXR0eUZsYWdzKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfaW5kZXhkZWZfd29y a2VyKE9pZCBpbmRleHJlbGlkLCBpbnQgY29sbm8sCiAJCQkJCQkJCQljb25zdCBPaWQgKmV4Y2x1 ZGVPcHMsCkBAIC0yMTk0LDcgKzIxOTQsMTIgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2Vy KE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJCWVsb2coRVJST1IsICJu dWxsIGNvbmtleSBmb3IgY29uc3RyYWludCAldSIsCiAJCQkJCQkgY29uc3RyYWludElkKTsKIAot CQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwg Y29uRm9ybS0+Y29uaW5kaWQsIGZhbHNlLCBJbnZhbGlkT2lkLCAmYnVmKTsKKwkJCQkvKgorCQkJ CSAqIElmIGl0IGlzIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXkKKwkJCQkgKiB0aGVuIGl0IHVzZXMg UEVSSU9EICh3aGljaCBtYXkgYmUgYSByZWFsIHJhbmdlIGNvbHVtbgorCQkJCSAqIG9yIG1heSBi ZSBhIHBlcmlvZCkuCisJCQkJICovCisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2 YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBjb25Gb3JtLT5jb25pbmRpZCwgZmFsc2UsIGNvbkZvcm0t PmNvbnRlbXBvcmFsLCBjb25Gb3JtLT5jb25wZXJpb2QsICZidWYpOwogCiAJCQkJLyogYWRkIGZv cmVpZ24gcmVsYXRpb24gbmFtZSAqLwogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIikgUkVG RVJFTkNFUyAlcygiLApAQCAtMjIwOCw3ICsyMjEzLDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZf d29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJCWVsb2coRVJS T1IsICJudWxsIGNvbmZrZXkgZm9yIGNvbnN0cmFpbnQgJXUiLAogCQkJCQkJIGNvbnN0cmFpbnRJ ZCk7CiAKLQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29u ZnJlbGlkLCBjb25Gb3JtLT5jb25pbmRpZCwgZmFsc2UsIEludmFsaWRPaWQsICZidWYpOworCQkJ CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsIGNv bkZvcm0tPmNvbmluZGlkLCBmYWxzZSwgY29uRm9ybS0+Y29udGVtcG9yYWwsIGNvbkZvcm0tPmNv bmZwZXJpb2QsICZidWYpOwogCiAJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsK IApAQCAtMjMxNiw3ICsyMzIxLDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBj b25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJaW5kZXhJZCA9IGNvbkZvcm0tPmNv bmluZGlkOwogCQkJCVN5c0NhY2hlR2V0QXR0cihDT05TVFJPSUQsIHR1cCwKIAkJCQkJCSAgQW51 bV9wZ19jb25zdHJhaW50X2NvbmV4Y2xvcCwgJmlzbnVsbCk7Ci0JCQkJa2V5YXR0cyA9IGRlY29t cGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgaW5kZXhJZCwg IWlzbnVsbCwgSW52YWxpZE9pZCwgJmJ1Zik7CisJCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1 bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgaW5kZXhJZCwgIWlzbnVsbCwg ZmFsc2UsIEludmFsaWRPaWQsICZidWYpOwogCiAJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1 ZiwgJyknKTsKIApAQCAtMjUxNiw3ICsyNTIxLDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29y a2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAgKi8KIHN0YXRpYyBpbnQK IGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBP aWQgcmVsSWQsIE9pZCBpbmRleElkLAotCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgT2lk IHBlcmlvZGlkLCBTdHJpbmdJbmZvIGJ1ZikKKwkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMs IGJvb2wgd2l0aFBlcmlvZCwgT2lkIHBlcmlvZGlkLCBTdHJpbmdJbmZvIGJ1ZikKIHsKIAlEYXR1 bQkgICAqa2V5czsKIAlpbnQJCQluS2V5czsKQEAgLTI1NjUsNiArMjU3MCw4IEBAIGRlY29tcGls ZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQs IE9pZCBpbmRleElkLAogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50 aWZpZXIoY29sTmFtZSkpOwogCQllbHNlIGlmICh3aXRob3V0T3ZlcmxhcHMgJiYgaiA9PSBuS2V5 cyAtIDEpCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMgV0lUSE9VVCBPVkVSTEFQUyIs IHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOworCQllbHNlIGlmICh3aXRoUGVyaW9kICYmIGog PT0gbktleXMgLSAxKQorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIFBFUklPRCAlcyIsIHF1 b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCQllbHNlCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1 ZiwgIiwgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAl9CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfY29uc3RyYWludC5oCmluZGV4IDZjNjY3NWIwZjcuLjJiYWJlNDI3MTMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfY29uc3RyYWludC5oCkBAIC0xMTQsNiArMTE0LDcgQEAgQ0FUQUxPRyhwZ19jb25z dHJhaW50LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQpCiAJYm9vbAkJY29udGVtcG9yYWw7CiAK IAlPaWQJCQljb25wZXJpb2Q7CQkvKiBsb2NhbCBQRVJJT0QgdXNlZCBpbiBQSy9GSyBjb25zdHJh aW50ICovCisJT2lkCQkJY29uZnBlcmlvZDsJCS8qIHJlZmVyZW5jZWQgZm9yZWlnbiBQRVJJT0Qg Ki8KIAogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBz dGFydCBoZXJlICovCiAKQEAgLTEyOSwxOSArMTMwLDE5IEBAIENBVEFMT0cocGdfY29uc3RyYWlu dCwyNjA2LENvbnN0cmFpbnRSZWxhdGlvbklkKQogCWludDE2CQljb25ma2V5WzFdOwogCiAJLyoK LQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBGSyBlcXVhbGl0eSBv cGVyYXRvcnMgZm9yIGVhY2gKKwkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUg UEsgPSBGSyBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUg Y29uc3RyYWludAogCSAqLwogCU9pZAkJCWNvbnBmZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJh dG9yKTsKIAogCS8qCi0JICogSWYgYSBmb3JlaWduIGtleSwgdGhlIE9JRHMgb2YgdGhlIFBLID0g UEsgZXF1YWxpdHkgb3BlcmF0b3JzIGZvciBlYWNoCisJICogSWYgYSBmb3JlaWduIGtleSwgdGhl IE9JRHMgb2YgdGhlIFBLID0gUEsgY29tcGFyaXNvbiBvcGVyYXRvcnMgZm9yIGVhY2gKIAkgKiBj b2x1bW4gb2YgdGhlIGNvbnN0cmFpbnQgKGkuZS4sIGVxdWFsaXR5IGZvciB0aGUgcmVmZXJlbmNl ZCBjb2x1bW5zKQogCSAqLwogCU9pZAkJCWNvbnBwZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJh dG9yKTsKIAogCS8qCi0JICogSWYgYSBmb3JlaWduIGtleSwgdGhlIE9JRHMgb2YgdGhlIEZLID0g RksgZXF1YWxpdHkgb3BlcmF0b3JzIGZvciBlYWNoCisJICogSWYgYSBmb3JlaWduIGtleSwgdGhl IE9JRHMgb2YgdGhlIEZLID0gRksgY29tcGFyaXNvbiBvcGVyYXRvcnMgZm9yIGVhY2gKIAkgKiBj b2x1bW4gb2YgdGhlIGNvbnN0cmFpbnQgKGkuZS4sIGVxdWFsaXR5IGZvciB0aGUgcmVmZXJlbmNp bmcgY29sdW1ucykKIAkgKi8KIAlPaWQJCQljb25mZmVxb3BbMV0gQktJX0xPT0tVUChwZ19vcGVy YXRvcik7CkBAIC0xNzYsNyArMTc3LDcgQEAgREVDTEFSRV9JTkRFWChwZ19jb25zdHJhaW50X2Nv bnBhcmVudGlkX2luZGV4LCAyNTc5LCBDb25zdHJhaW50UGFyZW50SW5kZXhJZCwgb24KIAogLyog Y29ua2V5IGNhbiBjb250YWluIHplcm8gKEludmFsaWRBdHRyTnVtYmVyKSBpZiBhIHdob2xlLXJv dyBWYXIgaXMgdXNlZCAqLwogREVDTEFSRV9BUlJBWV9GT1JFSUdOX0tFWV9PUFQoKGNvbnJlbGlk LCBjb25rZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRyZWxpZCwgYXR0bnVtKSk7Ci1ERUNMQVJFX0FS UkFZX0ZPUkVJR05fS0VZKChjb25mcmVsaWQsIGNvbmZrZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRy ZWxpZCwgYXR0bnVtKSk7CitERUNMQVJFX0FSUkFZX0ZPUkVJR05fS0VZX09QVCgoY29uZnJlbGlk LCBjb25ma2V5KSwgcGdfYXR0cmlidXRlLCAoYXR0cmVsaWQsIGF0dG51bSkpOwogCiAjaWZkZWYg RVhQT1NFX1RPX0NMSUVOVF9DT0RFCiAKQEAgLTIzNyw2ICsyMzgsNyBAQCBleHRlcm4gT2lkCUNy ZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJCQkJCQkJ ICBib29sIGNvbk5vSW5oZXJpdCwKIAkJCQkJCQkJICBib29sIGNvblRlbXBvcmFsLAogCQkJCQkJ CQkgIE9pZCBwZXJpb2QsCisJCQkJCQkJCSAgT2lkIGZwZXJpb2QsCiAJCQkJCQkJCSAgYm9vbCBp c19pbnRlcm5hbCk7CiAKIGV4dGVybiB2b2lkIFJlbW92ZUNvbnN0cmFpbnRCeUlkKE9pZCBjb25J ZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA1NTM3NzQwMjU2Li4zZTUwMzE0MGViIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTM4ODMsNiArMzg4Myw1MCBAQAogICBwcm9yZXR0 eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCiAgIHByb3NyYyA9PiAnUklfRktl eV9ub2FjdGlvbl91cGQnIH0sCiAKKyMgVGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IGNv bnN0cmFpbnQgdHJpZ2dlcnMKK3sgb2lkID0+ICc2MTIyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJl ZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4gUkVGRVJFTkNFUycsCisgIHByb25h bWUgPT4gJ1RSSV9GS2V5X2NoZWNrX2lucycsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlw ZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5 X2NoZWNrX2lucycgfSwKK3sgb2lkID0+ICc2MTIzJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVy ZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4gUkVGRVJFTkNFUycsCisgIHByb25hbWUg PT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9 PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2No ZWNrX3VwZCcgfSwKK3sgb2lkID0+ICc2MTI0JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50 aWFsIGludGVncml0eSBPTiBERUxFVEUgQ0FTQ0FERScsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5 X2Nhc2NhZGVfZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2Vy JywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2FzY2FkZV9kZWwn IH0sCit7IG9pZCA9PiAnNjEyNScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRl Z3JpdHkgT04gVVBEQVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jYXNjYWRl X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHBy b2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfdXBkJyB9LAoreyBv aWQgPT4gJzYxMjYnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9O IERFTEVURSBSRVNUUklDVCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X2RlbCcs IHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5 cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X2RlbCcgfSwKK3sgb2lk ID0+ICc2MTI3JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBV UERBVEUgUkVTVFJJQ1QnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9yZXN0cmljdF91cGQnLCBw cm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBl cyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9yZXN0cmljdF91cGQnIH0sCit7IG9pZCA9 PiAnNjEyOCcsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVM RVRFIFNFVCBOVUxMJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0bnVsbF9kZWwnLCBwcm92 b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9 PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9zZXRudWxsX2RlbCcgfSwKK3sgb2lkID0+ICc2MTI5 JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBVUERBVEUgU0VU IE5VTEwnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRudWxsX3VwZCcsIHByb3ZvbGF0aWxl ID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBw cm9zcmMgPT4gJ1RSSV9GS2V5X3NldG51bGxfdXBkJyB9LAoreyBvaWQgPT4gJzYxMzAnLCBkZXNj ciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBTRVQgREVGQVVM VCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldGRlZmF1bHRfZGVsJywgcHJvdm9sYXRpbGUg PT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisg IHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwnIH0sCit7IG9pZCA9PiAnNjEzMScs IGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gVVBEQVRFIFNFVCBE RUZBVUxUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQnLCBwcm92b2xh dGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAn JywKKyAgcHJvc3JjID0+ICdUUklfRktleV9zZXRkZWZhdWx0X3VwZCcgfSwKK3sgb2lkID0+ICc2 MTMyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUg Tk8gQUNUSU9OJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfbm9hY3Rpb25fZGVsJywgcHJvdm9s YXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4g JycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfbm9hY3Rpb25fZGVsJyB9LAoreyBvaWQgPT4gJzYx MzMnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBO TyBBQ1RJT04nLAorICBwcm9uYW1lID0+ICdUUklfRktleV9ub2FjdGlvbl91cGQnLCBwcm92b2xh dGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAn JywKKyAgcHJvc3JjID0+ICdUUklfRktleV9ub2FjdGlvbl91cGQnIH0sCisKICMgVGVtcG9yYWwg bGVmdG92ZXJzIHRyaWdnZXJzCiB7IG9pZCA9PiAnODE1NycsIGRlc2NyID0+ICd0ZW1wb3JhbCBs ZWZ0b3ZlcnMgdHJpZ2dlciBmdW5jdGlvbicsCiAgIHByb25hbWUgPT4gJ0ZQX2luc2VydF9sZWZ0 b3ZlcnMnLCBwcm92b2xhdGlsZSA9PiAndicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMTNi YmNkNDg5ZS4uNGZlMDY3NGM4MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjMzNyw3ICsy MzM3LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uc3RyYWludAogCS8qIEZpZWxkcyB1c2VkIGZvciBG T1JFSUdOIEtFWSBjb25zdHJhaW50czogKi8KIAlSYW5nZVZhciAgICpwa3RhYmxlOwkJLyogUHJp bWFyeSBrZXkgdGFibGUgKi8KIAlMaXN0CSAgICpma19hdHRyczsJCS8qIEF0dHJpYnV0ZXMgb2Yg Zm9yZWlnbiBrZXkgKi8KKwlOb2RlCSAgICpma19wZXJpb2Q7CQkvKiBTdHJpbmcgbm9kZSBuYW1p bmcgUGVyaW9kIG9yIHJhbmdlIGNvbHVtbiAqLwogCUxpc3QJICAgKnBrX2F0dHJzOwkJLyogQ29y cmVzcG9uZGluZyBhdHRycyBpbiBQSyB0YWJsZSAqLworCU5vZGUJICAgKnBrX3BlcmlvZDsJCS8q IFN0cmluZyBub2RlIG5hbWluZyBQZXJpb2Qgb3IgcmFuZ2UgY29sdW1uICovCiAJY2hhcgkJZmtf bWF0Y2h0eXBlOwkvKiBGVUxMLCBQQVJUSUFMLCBTSU1QTEUgKi8KIAljaGFyCQlma191cGRfYWN0 aW9uOwkvKiBPTiBVUERBVEUgYWN0aW9uICovCiAJY2hhcgkJZmtfZGVsX2FjdGlvbjsJLyogT04g REVMRVRFIGFjdGlvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBl cy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCmluZGV4IGQ4YzFmMTY1NmEuLmZh MTgyMThiYjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKQEAgLTE1MCw1ICsxNTAsNiBAQCBleHRl cm4gYm9vbCByYW5nZV9zcGxpdF9pbnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIGNv bnN0IFJhbmdlVHlwZSAqcjEsCiBleHRlcm4gdm9pZCByYW5nZV9sZWZ0b3Zlcl9pbnRlcm5hbChU eXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCiAJCQkJCQkJCQlj b25zdCBSYW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXQxLAogCQkJCQkJCQkJUmFuZ2VU eXBlICoqb3V0cHV0Mik7CitleHRlcm4gY2hhciAqcmFuZ2VfYXNfc3RyaW5nKFJhbmdlVHlwZSAq cik7CiAKICNlbmRpZgkJCQkJCQkvKiBSQU5HRVRZUEVTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKaW5kZXggYzcwYmFhZDY4NS4uNTkwZDNmMGM4 MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKQEAg LTUwLDYgKzUwLDE1IEBAIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEn IFRPIE1BWFZBTFVFCiBTRVQgdmFsaWRfYXQgPSAnWzE5OTAtMDEtMDEsMTk5OS0wMS0wMSknCiBX SEVSRSBpZCA9ICdbNSw2KSc7CiBFUlJPUjogIG11bHRpcGxlIGFzc2lnbm1lbnRzIHRvIHNhbWUg Y29sdW1uICJ2YWxpZF9hdCIKKy0tIFRoZSB3cm9uZyB0eXBlIGZhaWxzCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAxIFRPIDQKK1NFVCBu YW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7CitFUlJPUjogIGZ1bmN0aW9uIHBnX2Nh dGFsb2cudHNyYW5nZShpbnRlZ2VyLCBpbnRlZ2VyKSBkb2VzIG5vdCBleGlzdAorTElORSAyOiBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDEgVE8gNAorICAgICAgICAgICAgICAgICAgICAg ICBeCitISU5UOiAgTm8gZnVuY3Rpb24gbWF0Y2hlcyB0aGUgZ2l2ZW4gbmFtZSBhbmQgYXJndW1l bnQgdHlwZXMuIFlvdSBtaWdodCBuZWVkIHRvIGFkZCBleHBsaWNpdCB0eXBlIGNhc3RzLgogLS0g U2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKIFVQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAn MjAxOC0wMS0wMScKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5 X2NoZWNrLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91dApp bmRleCBlMDgyYTMyNTZlLi5lZjY0ZmVkZWZiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zYW5pdHlfY2hlY2sub3V0CkBAIC0xNzgsNiArMTc4LDcgQEAgcXVhZF9wb2x5X3RibHx0CiBy YWRpeF90ZXh0X3RibHx0CiByYW1wfGYKIHJlYWxfY2l0eXxmCityZWZlcmVuY2luZ19wZXJpb2Rf dGVzdHx0CiByZXNlcnZhdGlvbnN8Zgogcm9hZHx0CiBzaGlnaHdheXx0CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAppbmRleCA3MDhiNWQzNTI4Li4w NWZkNjJmNGMzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRf b3ZlcmxhcHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVy bGFwcy5vdXQKQEAgLTI4NCwzICsyODQsMTg0OSBAQCBBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJs YXBzX3Rlc3QyIEFMVEVSIENPTFVNTiB2YWxpZF9hdCBUWVBFIHRzdHpyYW5nZSBVU0lORyB0cwog QUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBSRU5BTUUgQ09MVU1OIHZhbGlkX2F0 IFRPIHZhbGlkX3RocnU7CiBBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIERST1Ag Q09MVU1OIHZhbGlkX3RocnU7CiBEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7Cist LQorLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0tCistLSBjYW4ndCBkcm9wIGEgcmFuZ2UgcmVm ZXJlbmNlZCBieSBhbiBGSywgdW5sZXNzIHdpdGggQ0FTQ0FERQorQ1JFQVRFIFRBQkxFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2QyX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2lu Z19wZXJpb2QyX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIChpZCwgUEVSSU9EIHZhbGlkX2F0KQor KTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgRFJPUCBDT0xVTU4gdmFsaWRf YXQ7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiB2YWxpZF9hdCBvZiB0YWJsZSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QyIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJ TDogIGNvbnN0cmFpbnQgcmVmZXJlbmNpbmdfcGVyaW9kMl9mayBvbiB0YWJsZSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdDIgZGVwZW5kcyBvbiBjb2x1bW4gdmFsaWRfYXQgb2YgdGFibGUgd2l0aG91 dF9vdmVybGFwc190ZXN0MgorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhl IGRlcGVuZGVudCBvYmplY3RzIHRvby4KK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dDIgRFJPUCBDT0xVTU4gdmFsaWRfYXQgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMg dG8gY29uc3RyYWludCByZWZlcmVuY2luZ19wZXJpb2QyX2ZrIG9uIHRhYmxlIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0MgorRFJPUCBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDI7CitEUk9Q IFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CistLSBjYW4ndCBkcm9wIGEgUEVSSU9EIHJl ZmVyZW5jZWQgYnkgYW4gRkssIHVubGVzcyB3aXRoIENBU0NBREUKK0NSRUFURSBUQUJMRSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3Rh bXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9m cm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jh bmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJp b2QyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09O U1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2QyX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIChpZCwg UEVSSU9EIHZhbGlkX2F0KQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIg RFJPUCBQRVJJT0QgRk9SIHZhbGlkX2F0OworRVJST1I6ICBjYW5ub3QgZHJvcCBwZXJpb2QgdmFs aWRfYXQgb24gdGFibGUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBiZWNhdXNlIG90aGVyIG9iamVj dHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBjb25zdHJhaW50IHJlZmVyZW5jaW5nX3BlcmlvZDJf Zmsgb24gdGFibGUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QyIGRlcGVuZHMgb24gcGVyaW9kIHZh bGlkX2F0IG9uIHRhYmxlIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIKK0hJTlQ6ICBVc2UgRFJPUCAu Li4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCitBTFRFUiBUQUJM RSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIERST1AgUEVSSU9EIEZPUiB2YWxpZF9hdCBDQVNDQURF OworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb25zdHJhaW50IHJlZmVyZW5jaW5nX3Blcmlv ZDJfZmsgb24gdGFibGUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QyCitEUk9QIFRBQkxFIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0MjsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MjsK Ky0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCByYW5nZSByZWZlcmVuY2VzIHJhbmdlCistLQorLS0g Q2FuJ3QgY3JlYXRlIGEgRksgd2l0aCBhIG1pc21hdGNoZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRB QkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IGludDRyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNp bmdfcGVyaW9kX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp LAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrMiBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0 IChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3RyYWlu dCAicmVmZXJlbmNpbmdfcGVyaW9kX2ZrMiIgY2Fubm90IGJlIGltcGxlbWVudGVkCitERVRBSUw6 ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFuZCAidmFsaWRfYXQiIGFyZSBvZiBpbmNvbXBhdGli bGUgdHlwZXM6IGludDRyYW5nZSBhbmQgdHNyYW5nZS4KK0NSRUFURSBUQUJMRSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFy ZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9wayBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgcmVm ZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgdmFsaWRf YXQpCispOworRFJPUCBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKKy0tIHdpdGggaW5m ZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitDUkVBVEUgVEFCTEUgcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBh cmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHJl ZmVyZW5jaW5nX3BlcmlvZF9mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CispOworRFJPUCBUQUJMRSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGlj YXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGlu dDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdf cGVyaW9kX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJCVJF RkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0IChpZCwgUEVSSU9EIGlkKQorKTsKK0VSUk9S OiAgZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QgbXVzdCBub3QgY29udGFpbiBk dXBsaWNhdGVzCistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0KK0NS RUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVy ZW5jaW5nX3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RS QUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJ T0QgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9Q IENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworLS0gd2l0aCBpbmZlcnJlZCBQSyBv biB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFw c190ZXN0OworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBj b2x1bW5zOgorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RS QUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBF UklPRCBpZCk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11 c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkK Ky0tCitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0FMVEVSIFRBQkxFIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Blcmlv ZF9mazsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxLDFd JywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAxJyksICdbMSwxXScpOworQUxURVIg VEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2lu Z19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJ UkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CitBTFRFUiBUQUJMRSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitJ TlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMiwyXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWls OgorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCBy ZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CitFUlJPUjogIGluc2Vy dCBvciB1cGRhdGUgb24gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiCitERVRBSUw6ICBL ZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIw MTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUg IndpdGhvdXRfb3ZlcmxhcHNfdGVzdCIuCistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVz dAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdDsKKy0tCistLSB0ZXN0IHBnX2dldF9jb25zdHJhaW50ZGVmCistLQorU0VMRUNUIHBnX2dl dF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAn cmVmZXJlbmNpbmdfcGVyaW9kX2ZrJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKDEgcm93KQorCistLQorLS0gdGVzdCBG SyBjaGlsZCBpbnNlcnRzCistLQorSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qg VkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sx LDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0IFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyks ICdbMSwxXScpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJyZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVmZXJlbmNp bmdfcGVyaW9kX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEsMiks IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4Iikp IGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QiLgorLS0gbm93 IGl0IHNob3VsZCB3b3JrOgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVF UyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMi0wMycsICcyMDE4LTAzLTAzJykpOworSU5TRVJU IElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcy MDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLQorLS0gdGVzdCBGSyBjaGls ZCB1cGRhdGVzCistLQorVVBEQVRFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFNFVCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMy0wMScpIFdIRVJFIGlkID0gJ1sxLDFd JzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFNFVCB2 YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNS0wMScpIFdIRVJFIGlkID0g J1sxLDFdJzsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAicmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5n X3BlcmlvZF9mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIpLCBb IlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlR1ZSBNYXkgMDEgMDA6MDA6MDAgMjAxOCIpKSBp cyBub3QgcHJlc2VudCBpbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0Ii4KK1VQREFURSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBpZCA9 ICdbMSwxXSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2lu Z19wZXJpb2RfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbOCw5KSwg WyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiKSkg aXMgbm90IHByZXNlbnQgaW4gdGFibGUgIndpdGhvdXRfb3ZlcmxhcHNfdGVzdCIuCistLQorLS0g dGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCistLSBhIFBLIHVwZGF0ZSB0aGF0 IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg U0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykgV0hFUkUg aWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0 aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVM RVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScp KTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1szLDNdJywg dHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAxJywg JzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBi ZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0 IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgIndpdGhvdXRfb3Zl cmxhcHNfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVmZXJlbmNpbmdf cGVyaW9kX2ZrIiBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRo dSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUg InJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Ii4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3Rpbmcg RksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgd2l0aG91 dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAx Ni0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJP TSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3Qg RksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitBTFRF UiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5j aW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCU9OIERFTEVURSBSRVNUUklDVDsK Ky0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24n dCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywg JzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1 Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0 aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUg aWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElO VE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwg J1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBL IHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScs ICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBv biB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiIG9uIHRhYmxlICJyZWZlcmVuY2luZ19wZXJp b2RfdGVzdCIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJl ZmVyZW5jZWQgZnJvbSB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiLgorLS0gdGhlbiBk ZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNj ZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sz LDNdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVw OgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgcGFyZW50X2lkID0g J1s1LDVdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdb NSw1XSc7CistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KKy0tCitBTFRF UiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFE RCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsK Ky0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24n dCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZS T00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVs ZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNl ZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRz cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcy MDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0 IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywg JzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFy ZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlk ID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAid2l0aG91dF9vdmVybGFw c190ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJp b2RfZmsiIG9uIHRhYmxlICJyZWZlcmVuY2luZ19wZXJpb2RfdGVzdCIKK0RFVEFJTDogIEtleSAo aWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAicmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QiLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyBy ZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVs ZXRlcyBSRVNUUklDVAorLS0KK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJ RFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0FMVEVSIFRBQkxFIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2Zr CisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMg d2l0aG91dF9vdmVybGFwc190ZXN0CisJT04gREVMRVRFIFJFU1RSSUNUOworSU5TRVJUIElOVE8g d2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdI RVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91 Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoK K0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sz LDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVM RVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVs ZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00g d2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRl bGV0ZSBvbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiIG9uIHRhYmxlICJyZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0 aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiLgorLS0g dGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0 ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlk ID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx Jyk7CistLQorLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKKy0tCistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s0LDRdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworQUxURVIgVEFCTEUg cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVy aW9kX2ZrLAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9v dmVybGFwc190ZXN0CisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworVVBE QVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0g J1s0LDRdJzsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs0 LDUpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiKSB8IFs3LDgpCisgWzQsNSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbNCw1KSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KQorKDMgcm93cykK KworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlk ID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUg aWQgPSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAg ICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzQsNSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIpIHwgWzcsOCkKKyBbNCw1KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNyw4KQorIFs0LDUpIHwgWyJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs3LDgpCisoMyBy b3dzKQorCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE1LDE1 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAyMC0wMS0w MScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qg VkFMVUVTICgnWzEwLDEwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzE1LDE1XScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzE2LDE2 XScgV0hFUkUgaWQgPSAnWzE1LDE1XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGlt ZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9 ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAg ICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbMTAsMTEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiKSB8IFsxNiwxNykKKyBbMTAsMTEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxNSwxNikKKygyIHJvd3MpCisK Ky0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gd2l0aG91dF9v dmVybGFwc190ZXN0IFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgn WzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitE RUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NF TEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOwor ICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzUsNikgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzgs OSkKKyBbNSw2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCBbOCw5KQorKDIgcm93cykKKworREVMRVRFIEZST00gd2l0aG91dF9vdmVy bGFwc190ZXN0IFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworIGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRf aWQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK0lOU0VSVCBJTlRP IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0 IFZBTFVFUyAoJ1sxNywxN10nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTEsMTFdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxFVEUg RlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHZhbGlk X2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKKyAgIGlkICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTEsMTIpIHwgWyJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxNywxOCkKKygxIHJvdykK KworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gd2l0aG91 dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVT ICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7 CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCBy ZWZlcmVuY2luZ19wZXJpb2RfZmssCisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9k X2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFU RSBTRVQgTlVMTDsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTAs MTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFdIRVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorIFs2LDcpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFs2LDcpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs5LDEwKQorIFs2LDcpIHwgWyJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs5 LDEwKQorKDMgcm93cykKKworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAn WzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbNiw3KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5Iiwi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbNiw3KSB8IFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAKKyBbNiw3KSB8IFsiV2Vk IEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAKKygz IHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTgs MThdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g d2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxOCwxOF0nLCB0c3JhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVz dCBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbMTgsMThdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMTks MTldJyBXSEVSRSBpZCA9ICdbMTgsMThdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0 aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlk ID0gJ1sxMiwxMl0nOworICAgaWQgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorIFsxMiwxMykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgCisgWzEyLDEzKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTgsMTkpCisoMiByb3dzKQorCistLSB0 ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgVkFMVUVTICgnWzExLDExXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s3 LDddJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTEsMTFdJyk7CitE RUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxMSwxMV0nOwor U0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNyw3XSc7 CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNyw4KSB8IFsi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAK KyBbNyw4KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IikgfCBbMTEsMTIpCisgWzcsOCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIs IkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzExLDEyKQorKDMgcm93cykKKworREVMRVRF IEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNU ICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNyw3XSc7CisgIGlk ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNyw4KSB8IFsiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbNyw4 KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IikgfCAKKyBbNyw4KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBWQUxVRVMgKCdbMjAsMjBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMCwy MF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTMsMTNdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBX SEVSRSBpZCA9ICdbMTMsMTNdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyBbMTMsMTQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFsxMywxNCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzIwLDIxKQorKDIgcm93cykK KworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gd2l0 aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51bGwp KTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTIsMTJdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0CisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAor CURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmssCisJQUREIENPTlNUUkFJTlQg cmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwkJT04gREVMRVRF IFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKK1VQREFURSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIw MjAtMDEtMDEnIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVD VCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzgsOF0nOworICBp ZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBbIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDAp CisgWzgsOSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSIpIHwgWzEyLDEzKQorIFs4LDkpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxMiwxMykKKygzIHJvd3MpCisKK1VQREFU RSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sx MiwxMl0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9 ICdbOCw4XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb OCw5KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIikgfCBbLTEsMCkKKyBbOCw5KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbOCw5KSB8IFsiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbLTEsMCkKKygzIHJv d3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjIsMjJd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gd2l0 aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMiwyMl0nLCB0c3JhbmdlKCcyMDIwLTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBW QUxVRVMgKCdbMTQsMTRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb MjIsMjJdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMjMsMjNd JyBXSEVSRSBpZCA9ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1l c3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0g J1sxNCwxNF0nOworICAgaWQgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorIFsxNCwxNSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzE0LDE1KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMjIsMjMpCisoMiByb3dzKQorCist LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE0LDE0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVF UyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTQsMTRd Jyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxNCwx NF0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdb OSw5XSc7CisgICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAg ICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5 LDEwKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIikgfCBbLTEsMCkKKyBbOSwxMCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzE0LDE1KQorIFs5LDEwKSB8IFsiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTQsMTUpCiso MyByb3dzKQorCitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAn WzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlk ID0gJ1s5LDldJzsKKyAgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzksMTApIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiKSB8IFstMSwwKQorIFs5LDEwKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbOSwxMCkgfCBbIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWy0xLDAp CisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgn WzI0LDI0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjQsMjRdJywgdHNyYW5nZSgnMjAy MC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgVkFMVUVTICgnWzE1LDE1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzI0LDI0XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJF IGlkID0gJ1syNCwyNF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsK K1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzE1LDE1 XSc7CisgICBpZCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzE1 LDE2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIikgfCBbLTEsMCkKKyBbMTUsMTYpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsyNCwyNSkKKygyIHJvd3MpCisKKy0tCistLSB0 ZXN0IEZPUkVJR04gS0VZLCByYW5nZSByZWZlcmVuY2VzIFBFUklPRAorLS0KK0RST1AgVEFCTEUg d2l0aG91dF9vdmVybGFwc190ZXN0IENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRv IGNvbnN0cmFpbnQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIG9uIHRhYmxlIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0ICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQ RVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQg d2l0aG91dF9vdmVybGFwc19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sx LDFdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycpOworSU5TRVJUIElOVE8gd2l0aG91dF9v dmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcp OworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syLDJdJywgJzIw MTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190 ZXN0IFZBTFVFUyAoJ1szLDNdJywgJzIwMTgtMDEtMDEnLCBOVUxMKTsKKy0tIENhbid0IGNyZWF0 ZSBhIEZLIHdpdGggYSBtaXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0cmFuZ2Us CisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9w azIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJB SU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBFUklP RCB2YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5j aW5nX3BlcmlvZF9mazIiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZAorREVUQUlMOiAgS2V5IGNvbHVt bnMgInZhbGlkX2F0IiBhbmQgInZhbGlkX2F0IiBhcmUgb2YgaW5jb21wYXRpYmxlIHR5cGVzOiBp bnQ0cmFuZ2UgYW5kIHRzcmFuZ2UuCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVu Y2VkIHRhYmxlOgorRFJPUCBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0NSRUFURSBU QUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5n X3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKyk7 CitEUk9QIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0OworLS0gc2hvdWxkIGZhaWwgYmVj YXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwK KwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlO VCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBh cmVudF9pZCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0Qg aWQpCispOworRVJST1I6ICBmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0 IG5vdCBjb250YWluIGR1cGxpY2F0ZXMKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05T VFJBSU5UCistLQorQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0ICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNP TlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVz dAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCAoaWQsIFBFUklPRCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CistLSB3aXRo IGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIgVEFCTEUgcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsK KwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3 aXRob3V0X292ZXJsYXBzX3Rlc3Q7CistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0 ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVz dAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazIKKwlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFw c190ZXN0IChpZCwgUEVSSU9EIGlkKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1j b2x1bW5zIGxpc3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzCistLQorLS0gdGVzdCB3aXRo IHJvd3MgYWxyZWFkeQorLS0KK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Owor QUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVm ZXJlbmNpbmdfcGVyaW9kX2ZrOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qg VkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sx LDFdJyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJB SU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKK0FMVEVSIFRB QkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5n X3BlcmlvZF9mazsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAo J1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOwor LS0gc2hvdWxkIGZhaWw6CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFE RCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsK K0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5nX3BlcmlvZF9m ayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4g MDIgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBub3QgcHJl c2VudCBpbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0Ii4KKy0tIG9rYXkgYWdhaW46CitE RUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0FMVEVSIFRBQkxFIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0 aG91dF9vdmVybGFwc190ZXN0OworLS0KKy0tIHRlc3QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYKKy0t CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hF UkUgY29ubmFtZSA9ICdyZWZlcmVuY2luZ19wZXJpb2RfZmsnOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5D RVMgd2l0aG91dF9vdmVybGFwc190ZXN0KGlkLCBQRVJJT0QgdmFsaWRfYXQpCisoMSByb3cpCisK Ky0tCistLSB0ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0tCitJTlNFUlQgSU5UTyByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAx OC0wMi0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywg JzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFi bGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFs aWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAw OjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgIndpdGhvdXRfb3ZlcmxhcHNf dGVzdCIuCistLSBub3cgaXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgVkFMVUVTICgnWzEsMV0nLCAnMjAxOC0wMi0wMycsICcyMDE4LTAzLTAzJyk7CitJ TlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMiwyXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tCistLSB0ZXN0IEZL IGNoaWxkIHVwZGF0ZXMKKy0tCitVUERBVEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgU0VUIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAzLTAxJykgV0hFUkUgaWQgPSAn WzEsMV0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qg U0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA1LTAxJykgV0hFUkUg aWQgPSAnWzEsMV0nOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJyZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVmZXJl bmNpbmdfcGVyaW9kX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEs MiksIFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiVHVlIE1heSAwMSAwMDowMDowMCAyMDE4 IikpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QiLgorVVBE QVRFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdIRVJF IGlkID0gJ1sxLDFdJzsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAicmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVy ZW5jaW5nX3BlcmlvZF9mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFs4 LDkpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAx OCIpKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0Ii4KKy0t CistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorLS0KKy0tIGEgUEsgdXBkYXRl IHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgor SU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQg dmFsaWRfZnJvbSA9ICcyMDE2LTAxLTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDItMDEnIFdIRVJF IGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2gg dGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RF TEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNF UlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFM VUVTICgnWzUsNV0nLCAnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5UTyBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rl c3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMi0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAzLTAx JworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDItMDEnIEFORCB2 YWxpZF90aWwgPSAnMjAxOC0wMy0wMSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1 c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VU IHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJworV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90 aWwgPSAnMjAxOC0wMi0wMSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgIndp dGhvdXRfb3ZlcmxhcHNfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVm ZXJlbmNpbmdfcGVyaW9kX2ZrIiBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiCitE RVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbNSw2KSwgTW9uIEphbiAw MSAwMDowMDowMCAyMDE4LCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgpIGlzIHN0aWxsIHJlZmVy ZW5jZWQgZnJvbSB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiLgorLS0gdGhlbiBkZWxl dGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVk czoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNd JzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0w MS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7Cist LSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIHBh cmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hF UkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QK Ky0tCitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlO VCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdAorCU9OIERFTEVURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2Vl ZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8g d2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfZnJvbSA9 ICcyMDE2LTAxLTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDItMDEnIFdIRVJFIGlkID0gJ1s1LDVd JzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMg aWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0n LCAnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0w MS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlk X2Zyb20gPSAnMjAxNi0wMi0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAzLTAxJworV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDItMDEnIEFORCB2YWxpZF90aWwgPSAn MjAxOC0wMy0wMSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUg cmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20g PSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0w Mi0wMSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgIndpdGhvdXRfb3Zlcmxh cHNfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVmZXJlbmNpbmdfcGVy aW9kX2ZrIiBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiCitERVRBSUw6ICBLZXkg KGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbNSw2KSwgTW9uIEphbiAwMSAwMDowMDowMCAy MDE4LCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVj dGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBG Uk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlk X3RpbCA9ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0g JzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLSBjbGVhbiB1cDoK K0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIHBhcmVudF9pZCA9ICdb NSw1XSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUs NV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxURVIg VEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNp bmdfcGVyaW9kX2ZrOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQg Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7Cist LSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3Qg cmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb NSw1XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1 Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0 aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVT ICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywz XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVU RSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2Zyb20gPSAnMjAxOC0wMi0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAzLTAxJzsKKy0tIGEg UEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRF IEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf ZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworRVJST1I6 ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QiIHZpb2xh dGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5nX3BlcmlvZF9mayIgb24gdGFi bGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfZnJv bSwgdmFsaWRfdGlsKT0oWzUsNiksIE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCwgVGh1IEZlYiAw MSAwMDowMDowMCAyMDE4KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0Ii4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3Jk IGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEt MDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLQorLS0gdGVzdCBGSyBwYXJlbnQg ZGVsZXRlcyBSRVNUUklDVAorLS0KK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0FMVEVSIFRBQkxFIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9k X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5D RVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJT04gREVMRVRFIFJFU1RSSUNUOworSU5TRVJUIElO VE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlk ID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhl IG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxV RVMgKCdbNSw1XScsICcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0w NScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFw c190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAyLTAxJyBB TkQgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBi ZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBz X3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFO RCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24g dGFibGUgIndpdGhvdXRfb3ZlcmxhcHNfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAicmVmZXJlbmNpbmdfcGVyaW9kX2ZrIiBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbNSw2KSwg TW9uIEphbiAwMSAwMDowMDowMCAyMDE4LCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgpIGlzIHN0 aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiLgorLS0g dGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0 ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlk ID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcy MDE4LTAyLTAxJzsKKy0tCistLSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucworLS0KKy0t IHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1s2LDZdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOwor SU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzQsNF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJp b2RfZmssCisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292 ZXJsYXBzX3Rlc3QKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitVUERB VEUgd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2 LDZdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAn WzQsNF0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAg ICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzQs NSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIpIHwgWzcsOCkKKyBbNCw1KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFs0LDUpIHwgWyJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpCisoMyByb3dzKQor CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBp ZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyBbNCw1KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbNyw4KQorIFs0LDUpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs3LDgpCisgWzQsNSkgfCBbIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzcsOCkKKygzIHJv d3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTUsMTVd JywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7 CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTAsMTBdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTUsMTVdJyk7CitVUERBVEUg d2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUs MTVdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6 dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBp ZCA9ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9h dCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbMTAsMTEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiKSB8IFsxNiwxNykKKyBbMTAsMTEpIHwgWyJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxNSwxNikKKygyIHJvd3Mp CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gd2l0aG91 dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s4LDhdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUg RlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAq IEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworICBpZCAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzUsNikgfCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzgsOSkKKyBb NSw2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAy MDIxIikgfCBbOCw5KQorKDIgcm93cykKKworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190 ZXN0IFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworIGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQgCist LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTcsMTddJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxNywx N10nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTEsMTFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rl c3QgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRfdGls KSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzExLDExXSc7CisgICBpZCAgICB8ICAgICAgICAgICAg ICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzExLDEyKSB8IFsiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTcsMTgpCisoMSByb3cpCisK Ky0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbOSw5XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s2LDZdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOworQUxURVIgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdf cGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91 dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7 CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUg aWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVS RSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbNiw3KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIikgfCAKKyBbNiw3KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbOSwxMCkKKyBbNiw3KSB8IFsiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOSwxMCkKKygzIHJv d3MpCisKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sxMCwxMF0nIFdI RVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qg V0hFUkUgaWQgPSAnWzYsNl0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgWzYsNykgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgCisgWzYsNykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgCisgWzYsNykgfCBbIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgCisoMyByb3dzKQorCitJ TlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE4LDE4XScsICcyMDE4 LTAxLTAxJywgJzIwMjAtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBWQUxVRVMgKCdbMTgsMThdJywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJU IElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRFIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQgPSAnWzE4LDE4XScgQU5E IHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFt cDsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzEy LDEyXSc7CisgICBpZCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzEyLDEzKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCAKKyBbMTIsMTMpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxOCwxOSkKKygyIHJvd3MpCisKKy0tIHRlc3QgRksg cGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBWQUxVRVMgKCdbMTEsMTFdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJU IElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzcsN10nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWyJUdWUgSmFuIDAxIDAwOjAw OjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFs3LDgpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFsxMSwx MikKKyBbNyw4KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCBbMTEsMTIpCisoMyByb3dzKQorCitERUxFVEUgRlJPTSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAgICAgICAgICAg ICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFs3LDgpIHwgWyJNb24gSmFuIDAx IDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IAorIFs3LDgpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IAorKDMgcm93cykKKworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1syMCwyMF0nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzIwLDIwXScsICcyMDIwLTAxLTAxJywgJzIwMjEt MDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sx MywxM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syMCwyMF0nKTsK K0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMjAsMjBdJyBB TkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0 YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdb MTMsMTNdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAg ICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyBbMTMsMTQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiKSB8IAorIFsxMywxNCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzIwLDIxKQorKDIgcm93cykKKworLS0gdGVzdCBG SyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1stMSwtMV0nLCBudWxsLCBudWxsKTsKK0lOU0VSVCBJTlRPIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTIsMTJdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzgs OF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0FM VEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisgIEFMVEVSIENPTFVNTiBwYXJlbnRf aWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19w ZXJpb2RfZmssCisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0 X292ZXJsYXBzX3Rlc3QKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVG QVVMVDsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTMsMTNdJyBX SEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgV0hFUkUgaWQgPSAnWzgsOF0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgWzgsOSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzgsOSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzEyLDEzKQorIFs4LDkpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IFsxMiwxMykKKygzIHJvd3MpCisKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlk ID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbOCw4XSc7CisgIGlkICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lk IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkKKyBbOCw5KSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEs MCkKKyBbOCw5KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCBbLTEsMCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBWQUxVRVMgKCdbMjIsMjJdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScp OworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMiwyMl0nLCAn MjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJp b2RfdGVzdCBWQUxVRVMgKCdbMTQsMTRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbMjIsMjJdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9 ICdbMjMsMjNdJyBXSEVSRSBpZCA9ICdbMjIsMjJdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2 YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKKyAgIGlkICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBh cmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTQsMTUpIHwgWyJNb24gSmFuIDAx IDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKQorIFsx NCwxNSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSIpIHwgWzIyLDIzKQorKDIgcm93cykKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBT RVQgREVGQVVMVAorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sx NCwxNF0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbOSw5XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190 ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAx LTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzksOV0nOworICAgaWQgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzksMTApIHwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFsxNCwxNSkK KyBbOSwxMCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00gd2l0aG91dF9vdmVy bGFwc190ZXN0IFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbOSw5XSc7CisgICBpZCAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAK Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5LDEwKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkKKyBbOSwxMCkgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWy0x LDApCisgWzksMTApIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAw OjAwOjAwIDIwMjEiKSB8IFstMSwwKQorKDMgcm93cykKKworSU5TRVJUIElOVE8gd2l0aG91dF9v dmVybGFwc190ZXN0IFZBTFVFUyAoJ1syNCwyNF0nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx Jyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzI0LDI0XScs ICcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1syNCwyNF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBX SEVSRSBpZCA9ICdbMjQsMjRdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdCBXSEVSRSBpZCA9ICdbMTUsMTVdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTUsMTYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKQorIFsxNSwxNikgfCBbIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzI0 LDI1KQorKDIgcm93cykKKworLS0KKy0tIHRlc3QgRk9SRUlHTiBLRVksIFBFUklPRCByZWZlcmVu Y2VzIHJhbmdlCistLQorRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgQ0FTQ0FERTsK K05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gY29uc3RyYWludCByZWZlcmVuY2luZ19wZXJpb2Rf Zmsgb24gdGFibGUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKK0NSRUFURSBUQUJMRSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNP TlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZB TFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykpOworSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgn MjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1 JykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1szLDNdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsIE5VTEwpKTsKKy0tIENhbid0IGNyZWF0ZSBhIEZLIHdpdGgg YSBtaXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIGludDQsCisgIHZhbGlkX3RpbCBp bnQ0LAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJcGFy ZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9wazIgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHJl ZmVyZW5jaW5nX3BlcmlvZF9mazIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBFUklPRCB2YWxp ZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5nX3Bl cmlvZF9mazIiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZAorREVUQUlMOiAgS2V5IGNvbHVtbnMgInZh bGlkX2F0IiBhbmQgInZhbGlkX2F0IiBhcmUgb2YgaW5jb21wYXRpYmxlIHR5cGVzOiBpbnQ0cmFu Z2UgYW5kIHRzcmFuZ2UuCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRh YmxlOgorRFJPUCBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0NSRUFURSBUQUJMRSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGlt ZXN0YW1wLAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFs aWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQg cmVmZXJlbmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdAorKTsKK0RST1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CistLSBzaG91 bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitDUkVBVEUg VEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9m cm9tIHRpbWVzdGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRf YXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05T VFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgd2l0aG91 dF9vdmVybGFwc190ZXN0IChpZCwgUEVSSU9EIGlkKQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkg cmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzCistLQor LS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0KK0NSRUFURSBUQUJMRSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGltZXN0 YW1wLAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRf ZnJvbSwgdmFsaWRfdGlsKSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVm ZXJlbmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKKyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05T VFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBF UklPRCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURS T1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CistLSB3aXRoIGluZmVycmVkIFBL IG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJs YXBzX3Rlc3Q7CistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2Vk IGNvbHVtbnM6CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05T VFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazIKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgcGFyZW50X2lkKQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0IChpZCwg UEVSSU9EIGlkKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3Qg bXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxyZWFk eQorLS0KK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0OworQUxURVIgVEFCTEUg cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVy aW9kX2ZrOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEs MV0nLCAnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAxJywgJ1sxLDFdJyk7CitBTFRFUiBUQUJMRSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Blcmlv ZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVO Q0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0lOU0VSVCBJ TlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1syLDJdJywgJzIwMTgtMDEtMDIn LCAnMjAxOC0wNC0wMScsICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitBTFRFUiBUQUJMRSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Blcmlv ZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVO Q0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0 YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgInJlZmVyZW5jaW5nX3BlcmlvZF9mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2 YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbMSwyKSwgVHVlIEphbiAwMiAwMDowMDowMCAyMDE4LCBT dW4gQXByIDAxIDAwOjAwOjAwIDIwMTgpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ3aXRob3V0 X292ZXJsYXBzX3Rlc3QiLgorLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0OworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQg Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7Cist LQorLS0gdGVzdCBwZ19nZXRfY29uc3RyYWludGRlZgorLS0KK1NFTEVDVCBwZ19nZXRfY29uc3Ry YWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3JlZmVyZW5j aW5nX3BlcmlvZF9mayc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBn X2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rl c3QoaWQsIFBFUklPRCB2YWxpZF9hdCkKKygxIHJvdykKKworLS0KKy0tIHRlc3QgRksgY2hpbGQg aW5zZXJ0cworLS0KK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAo J1sxLDFdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScsICdbMSwxXScpOworLS0gc2hvdWxk IGZhaWw6CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMiwy XScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnLCAnWzEsMV0nKTsKK0VSUk9SOiAgaW5zZXJ0 IG9yIHVwZGF0ZSBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiIHZpb2xhdGVzIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5nX3BlcmlvZF9mayIKK0RFVEFJTDogIEtl eSAocGFyZW50X2lkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbMSwyKSwgVHVlIEphbiAwMiAw MDowMDowMCAyMDE4LCBTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgpIGlzIG5vdCBwcmVzZW50IGlu IHRhYmxlICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QiLgorLS0gbm93IGl0IHNob3VsZCB3b3JrOgor SU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5n ZSgnMjAxOC0wMi0wMycsICcyMDE4LTAzLTAzJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJywg J1sxLDFdJyk7CistLQorLS0gdGVzdCBGSyBjaGlsZCB1cGRhdGVzCistLQorVVBEQVRFIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDInLCB2YWxpZF90 aWwgPSAnMjAxOC0wMy0wMScgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZhaWw6CitV UERBVEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0w MicsIHZhbGlkX3RpbCA9ICcyMDE4LTA1LTAxJyBXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJPUjog IGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiCitERVRB SUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0oWzEsMiksIFR1ZSBK YW4gMDIgMDA6MDA6MDAgMjAxOCwgVHVlIE1heSAwMSAwMDowMDowMCAyMDE4KSBpcyBub3QgcHJl c2VudCBpbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0Ii4KK1VQREFURSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBpZCA9ICdbMSwxXSc7 CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2Rf ZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0oWzgs OSksIFR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCwgVGh1IE1hciAwMSAwMDowMDowMCAyMDE4KSBp cyBub3QgcHJlc2VudCBpbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0Ii4KKy0tCistLSB0 ZXN0IEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorLS0KKy0tIGEgUEsgdXBkYXRlIHRoYXQg c3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBT RVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVSRSBp ZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRo ZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxF VEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190 ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykp OworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10nLCAn MjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVy bGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0w MScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90 aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywnMjAxOC0wMi0wMScpOwor RVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ3aXRob3V0X292ZXJsYXBzX3Rlc3Qi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5nX3BlcmlvZF9mayIg b24gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IgorREVUQUlMOiAgS2V5IChpZCwgdmFs aWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAw OjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJyZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBh bmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQor V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdCBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gd2l0aG91dF9v dmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1 cGRhdGVzIFJFU1RSSUNUCistLQorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QK KwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworQUxURVIgVEFCTEUgcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2Rf ZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNF UyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CistLSBhIFBLIHVw ZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNl ZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAx JykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVu IHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlz bid0OgorREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVd JzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAo J1szLDNdJywgJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcsICdbNSw1XScpOworVVBEQVRFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAxJywg JzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBi ZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0 IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgIndpdGhvdXRfb3Zl cmxhcHNfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVmZXJlbmNpbmdf cGVyaW9kX2ZrIiBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRo dSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUg InJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Ii4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3Rpbmcg RksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgd2l0aG91 dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAx Ni0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJP TSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3Qg RksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworQUxU RVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CistLSBhIFBLIGRlbGV0ZSB0aGF0 IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2 ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2Ug aXNuJ3Q6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywg JzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxV RVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnLCAnWzUsNV0nKTsKK0RFTEVU RSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0 ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxl dGUgb24gdGFibGUgIndpdGhvdXRfb3ZlcmxhcHNfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAicmVmZXJlbmNpbmdfcGVyaW9kX2ZrIiBvbiB0YWJsZSAicmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGls bCByZWZlcmVuY2VkIGZyb20gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Ii4KKy0tIHRo ZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUg c3VjY2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9 ICdbMywzXSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJM RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19w ZXJpb2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05T VFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCU9OIERF TEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBG Uk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRl bGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5j ZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBz X3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0 c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIwMTgtMDEt MTAnLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBp ZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJyk7CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJl bmNlZDoKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitF UlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgIndpdGhvdXRfb3ZlcmxhcHNfdGVzdCIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVmZXJlbmNpbmdfcGVyaW9kX2ZrIiBv biB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxp ZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6 MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0Ii4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFu ZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRp b25zCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBW QUxVRVMgKCdbNCw0XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzYsNl0nKTsKK0FM VEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVy ZW5jaW5nX3BlcmlvZF9maywKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsK KwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FT Q0FERTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hF UkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBX SEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAg ICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzQsNSkgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAgfCBbNyw4KQorIFs0LDUpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAw MSAwMDowMDowMCAyMDE5IHwgWzYsNykKKyBbNCw1KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFs2LDcpCisoMyByb3dzKQorCitVUERBVEUg d2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0n OworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNCw0 XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGls ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzQsNSkgfCBUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBbNyw4KQorIFs0 LDUpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IHwgWzcsOCkKKyBbNCw1KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSB8IFs3LDgpCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE1LDE1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb MTUsMTVdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEwLDEwXScsICcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnLCAnWzE1LDE1XScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBTRVQgaWQgPSAnWzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdCBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2Zy b20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgWzEwLDExKSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFdlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCB8IFsxNiwxNykKKyBbMTAsMTEpIHwgV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzE1LDE2KQorKDIgcm93cykK KworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMg KCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzgsOF0nKTsKK0RFTEVURSBG Uk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICog RlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CisgIGlkICAg fCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzUsNikgfCBNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbOCw5KQorIFs1LDYpIHwgV2VkIEph biAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzgsOSkKKygy IHJvd3MpCisKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdb OCw4XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0g J1s1LDVdJzsKKyBpZCB8IHZhbGlkX2Zyb20gfCB2YWxpZF90aWwgfCBwYXJlbnRfaWQgCistLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorKDAgcm93cykKKworSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxNywxN10nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBz X3Rlc3QgVkFMVUVTICgnWzE3LDE3XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxMSwx MV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxNywxN10nKTsKK0RFTEVURSBGUk9N IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMTcsMTddJyBBTkQgdmFsaWRfYXQg QD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxMSwxMV0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRf ZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyBbMTEsMTIpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJp IEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzE3LDE4KQorKDEgcm93KQorCistLSB0ZXN0IEZLIHBh cmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNiw2XScsICcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maywKKwlB REQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dAorCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBEQVRFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsK K1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzYsNl0n OworICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs2LDcpIHwgVHVlIEphbiAw MSAwMDowMDowMCAyMDE5IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisgWzYsNykgfCBN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbOSwx MCkKKyBbNiw3KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSB8IFs5LDEwKQorKDMgcm93cykKKworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAg ICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzYsNykgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkg fCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCAKKyBbNiw3KSB8IE1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IAorIFs2LDcpIHwgV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgCisoMyByb3dzKQor CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE4LDE4XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTgsMThdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVT ICgnWzEyLDEyXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzE4LDE4XScpOworVVBE QVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQgPSAn WzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNU ICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKKyAg IGlkICAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAg ICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEyLDEzKSB8IE1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IAorIFsxMiwxMykg fCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBb MTgsMTkpCisoMiByb3dzKQorCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJ TlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzExLDExXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s3LDddJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScs ICdbMTEsMTFdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlk ID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVS RSBpZCA9ICdbNyw3XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAg ICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzcs OCkgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAg fCAKKyBbNyw4KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSB8IFsxMSwxMikKKyBbNyw4KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsxMSwxMikKKygzIHJvd3MpCisKK0RFTEVURSBGUk9N IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZS T00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAgIHwg ICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisgWzcsOCkgfCBNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCAKKyBbNyw4KSB8IFdlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IAorKDMgcm93 cykKKworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMCwyMF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzIwLDIwXScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZB TFVFUyAoJ1sxMywxM10nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1syMCwyMF0nKTsK K0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMjAsMjBdJyBB TkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxMywxM10nOworICAgaWQgICAgfCAg ICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTMsMTQpIHwgTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisgWzEzLDE0KSB8IFdlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsyMCwyMSkKKygy IHJvd3MpCisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJ TlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxs LCBudWxsKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzEy LDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s4LDhdJywgJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScsICdbMTIsMTJdJyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlE Uk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5UIHJl ZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVURSBT RVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgd2l0aG91dF9vdmVybGFw c190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIw LTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1Qg KiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQg ICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs4LDkpIHwgTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgWzEyLDEz KQorIFs4LDkpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIHwgWzEyLDEzKQorKDMgcm93cykKKworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9N IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQgICB8ICAg ICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs4LDkpIHwgTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgWy0xLDApCisgWzgs OSkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEg fCBbLTEsMCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBW QUxVRVMgKCdbMjIsMjJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOwor SU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMiwyMl0nLCB0c3Jh bmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTQsMTRdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScsICdbMjIsMjJdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdb MjMsMjNdJyBXSEVSRSBpZCA9ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEn Ojp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJF IGlkID0gJ1sxNCwxNF0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAg ICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyBbMTQsMTUpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIHwgWy0xLDApCisgWzE0LDE1KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsyMiwyMykKKygyIHJvd3MpCisKKy0tIHRlc3QgRksg cGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBWQUxVRVMgKCdbMTQsMTRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzksOV0n LCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxNCwxNF0nKTsKK0RFTEVURSBGUk9NIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAx LTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9N IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s5LDldJzsKKyAgIGlkICAgfCAg ICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5LDEwKSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs5LDEwKSB8IE1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFsxNCwxNSkK KyBbOSwxMCkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEgfCBbMTQsMTUpCisoMyByb3dzKQorCitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBz X3Rlc3QgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s5LDldJzsKKyAgIGlkICAgfCAgICAgICAgdmFsaWRfZnJv bSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorIFs5LDEwKSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs5LDEwKSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFstMSwwKQorIFs5LDEwKSB8IFdlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFstMSwwKQor KDMgcm93cykKKworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sy NCwyNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzI0LDI0XScsIHRzcmFuZ2UoJzIwMjAt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1syNCwy NF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMjQs MjRdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxNSwxNV0nOworICAgaWQg ICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTUsMTYpIHwgTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgWy0xLDApCisgWzE1LDE2 KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8 IFsyNCwyNSkKKygyIHJvd3MpCisKKy0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCBQRVJJT0QgcmVm ZXJlbmNlcyBQRVJJT0QKKy0tCitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBDQVND QURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb25zdHJhaW50IHJlZmVyZW5jaW5nX3Bl cmlvZF9mayBvbiB0YWJsZSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorQ1JFQVRFIFRBQkxFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGltZXN0 YW1wLAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRf ZnJvbSwgdmFsaWRfdGlsKSwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHNfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMSwxXScsICcyMDE4LTAxLTAyJywgJzIwMTgt MDItMDMnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMSwx XScsICcyMDE4LTAzLTAzJywgJzIwMTgtMDQtMDQnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBWQUxVRVMgKCdbMiwyXScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKTsK K0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMywzXScsICcyMDE4 LTAxLTAxJywgTlVMTCk7CistLSBDYW4ndCBjcmVhdGUgYSBGSyB3aXRoIGEgbWlzbWF0Y2hlZCBy YW5nZSB0eXBlCitDUkVBVEUgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QyICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSBpbnQ0LAorICB2YWxpZF90aWwgaW50NCwKKwlQRVJJT0Qg Rk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCXBhcmVudF9pZCBpbnQ0cmFu Z2UsCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfcGsyIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJp b2RfZmsyIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworRVJS T1I6ICBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsyIiBjYW5u b3QgYmUgaW1wbGVtZW50ZWQKK0RFVEFJTDogIEtleSBjb2x1bW5zICJ2YWxpZF9hdCIgYW5kICJ2 YWxpZF9hdCIgYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogaW50NHJhbmdlIGFuZCB0c3Jhbmdl LgorLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0RST1AgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CitDUkVBVEUgVEFCTEUgcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKwl2YWxp ZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlk X3RpbCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Bl cmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNP TlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKyk7CitE Uk9QIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0OworLS0gc2hvdWxkIGZhaWwgYmVjYXVz ZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAs CisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9t LCB2YWxpZF90aWwpLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2RfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mayBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCAoaWQsIFBFUklPRCBpZCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29s dW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3QgQUxURVIg VEFCTEUgQUREIENPTlNUUkFJTlQKKy0tCitDUkVBVEUgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKwl2YWxpZF90 aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3Rp bCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Blcmlv ZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxU RVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgdmFsaWRfYXQp OworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQg cmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJl bmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENP TlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0OworLS0g c2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQUxU RVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2RfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9p ZCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBFUklPRCBpZCk7CitF UlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRh aW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkKKy0tCitERUxFVEUg RlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0lOU0VS VCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDEt MDInLCAnMjAxOC0wMi0wMScsICdbMSwxXScpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292 ZXJsYXBzX3Rlc3Q7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1Ag Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitJTlNFUlQgSU5UTyByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMiwyXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEn LCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292 ZXJsYXBzX3Rlc3Q7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVu Y2luZ19wZXJpb2RfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfZnJvbSwgdmFs aWRfdGlsKT0oWzEsMiksIFR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCwgU3VuIEFwciAwMSAwMDow MDowMCAyMDE4KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0 Ii4KKy0tIG9rYXkgYWdhaW46CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsK K0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVm ZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0OworLS0KKy0tIHRlc3QgcGdf Z2V0X2NvbnN0cmFpbnRkZWYKKy0tCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICdyZWZlcmVuY2luZ19wZXJpb2RfZmsn OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWlu dGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0KGlkLCBQRVJJT0Qg dmFsaWRfYXQpCisoMSByb3cpCisKKy0tCistLSB0ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0tCitJ TlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMSwxXScsICcyMDE4 LTAxLTAyJywgJzIwMTgtMDItMDEnLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJU IElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0w MicsICcyMDE4LTA0LTAxJywgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24g dGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwg dmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0oWzEsMiksIFR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCwg U3VuIEFwciAwMSAwMDowMDowMCAyMDE4KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAid2l0aG91 dF9vdmVybGFwc190ZXN0Ii4KKy0tIG5vdyBpdCBzaG91bGQgd29yazoKK0lOU0VSVCBJTlRPIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMSwxXScsICcyMDE4LTAyLTAzJywgJzIwMTgt MDMtMDMnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sy LDJdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScsICdbMSwxXScpOworLS0KKy0tIHRlc3Qg RksgY2hpbGQgdXBkYXRlcworLS0KK1VQREFURSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBTRVQg dmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAyJywgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnIFdIRVJF IGlkID0gJ1sxLDFdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDInLCB2YWxpZF90aWwgPSAnMjAxOC0w NS0wMScgV0hFUkUgaWQgPSAnWzEsMV0nOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRh YmxlICJyZWZlcmVuY2luZ19wZXJpb2RfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAicmVmZXJlbmNpbmdfcGVyaW9kX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZh bGlkX2Zyb20sIHZhbGlkX3RpbCk9KFsxLDIpLCBUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgsIFR1 ZSBNYXkgMDEgMDA6MDA6MDAgMjAxOCkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgIndpdGhvdXRf b3ZlcmxhcHNfdGVzdCIuCitVUERBVEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgU0VUIHBhcmVu dF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0nOworRVJST1I6ICBpbnNlcnQgb3IgdXBk YXRlIG9uIHRhYmxlICJyZWZlcmVuY2luZ19wZXJpb2RfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAicmVmZXJlbmNpbmdfcGVyaW9kX2ZrIgorREVUQUlMOiAgS2V5IChwYXJl bnRfaWQsIHZhbGlkX2Zyb20sIHZhbGlkX3RpbCk9KFs4LDkpLCBUdWUgSmFuIDAyIDAwOjAwOjAw IDIwMTgsIFRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUg IndpdGhvdXRfb3ZlcmxhcHNfdGVzdCIuCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBO TyBBQ1RJT04KKy0tCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51 bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK1VQREFU RSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZh bGlkX3RpbCA9ICcyMDE2LTAyLTAxJyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0 ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQg YmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rl c3QgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0 IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElO VE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVT ICgnWzMsM10nLCAnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUg d2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDItMDEnLCB2YWxp ZF90aWwgPSAnMjAxNi0wMy0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9 ICcyMDE4LTAyLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyB1cGRh dGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0aG91 dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwg PSAnMjAxNi0wMi0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4 LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworRVJST1I6ICB1cGRhdGUgb3Ig ZGVsZXRlIG9uIHRhYmxlICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QiIHZpb2xhdGVzIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5nX3BlcmlvZF9mayIgb24gdGFibGUgInJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGls KT0oWzUsNiksIE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCwgVGh1IEZlYiAwMSAwMDowMDowMCAy MDE4KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0Ii4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2Ft ZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVz dCBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2 YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScKK1dIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGls ID0gJzIwMTgtMDItMDEnOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gd2l0aG91 dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0IEZLIHBhcmVu dCB1cGRhdGVzIFJFU1RSSUNUCistLQorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworQUxURVIgVEFCTEUg cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJp b2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJF TkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CistLSBhIFBL IHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJl bmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScs ICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rl c3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAx JyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4g dGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNu J3Q6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0n OworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190 ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworSU5TRVJU IElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10nLCAnMjAxOC0wMS0w NScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0 IFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDItMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMy0wMScK K1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAyLTAxJyBBTkQgdmFs aWRfdGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNl IGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2 YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScKK1dIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGls ID0gJzIwMTgtMDItMDEnOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ3aXRo b3V0X292ZXJsYXBzX3Rlc3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVy ZW5jaW5nX3BlcmlvZF9mayIgb24gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IgorREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0oWzUsNiksIE1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCwgVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4KSBpcyBzdGlsbCByZWZlcmVu Y2VkIGZyb20gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Ii4KKy0tIHRoZW4gZGVsZXRl IHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6 CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7 CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDEt MDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0g Y2xlYW4gdXA6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBwYXJl bnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJF IGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgor LS0KK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5U IHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFw c190ZXN0OworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmlj IGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitERUxFVEUgRlJP TSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxl dGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2Vk IGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190 ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFM VUVTICgnWzMsM10nLCAnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitERUxF VEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9mcm9tID0gJzIwMTgtMDItMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMSc7CistLSBh IFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVU RSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAyLTAxJzsKK0VSUk9S OiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0IiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiIG9uIHRh YmxlICJyZWZlcmVuY2luZ19wZXJpb2RfdGVzdCIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2Zy b20sIHZhbGlkX3RpbCk9KFs1LDYpLCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgsIFRodSBGZWIg MDEgMDA6MDA6MDAgMjAxOCkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJyZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29y ZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gd2l0aG91dF9v dmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAx LTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0KKy0tIHRlc3QgRksgcGFyZW50 IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVz dAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitBTFRFUiBUQUJMRSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Blcmlv ZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVO Q0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJ TlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBp ZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRo ZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNF UlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFM VUVTICgnWzUsNV0nLCAnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5UTyBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIw MTgtMDEtMTAnLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMi0wMScgQU5EIHZhbGlk X3RpbCA9ICcyMDE4LTAzLTAxJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBi b3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRf dGlsID0gJzIwMTgtMDItMDEnOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ3 aXRob3V0X292ZXJsYXBzX3Rlc3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJl ZmVyZW5jaW5nX3BlcmlvZF9mayIgb24gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Igor REVUQUlMOiAgS2V5IChpZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0oWzUsNiksIE1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCwgVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4KSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Ii4KKy0tIHRoZW4gZGVs ZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2Vl ZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywz XSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0w MSc7CistLQorLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKKy0tCistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBWQUxVRVMgKCdbNiw2XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJ TlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s0LDRdJywgJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScsICdbNiw2XScpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrLAorCUFERCBDT05T VFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJCU9O IERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworVVBEQVRFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAy MC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBG Uk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBh cmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNCw1KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFs3LDgpCisgWzQsNSkgfCBNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbNiw3KQorIFs0 LDUpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IHwgWzYsNykKKygzIHJvd3MpCisKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlk ID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9m cm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyBbNCw1KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCB8IFs3LDgpCisgWzQsNSkgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbNyw4KQorIFs0LDUpIHwgV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzcsOCkKKygzIHJv d3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTUsMTVd JywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7 CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTAsMTBdJywg JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTUsMTVdJyk7CitVUERBVEUgd2l0aG91dF9v dmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBBTkQg dHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1w OworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTAs MTBdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlk X3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwLDExKSB8 IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFsx NiwxNykKKyBbMTAsMTEpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIHwgWzE1LDE2KQorKDIgcm93cykKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVs ZXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgn WzgsOF0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUg aWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVS RSBpZCA9ICdbNSw1XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAg ICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzUs NikgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkg fCBbOCw5KQorIFs1LDYpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIHwgWzgsOSkKKygyIHJvd3MpCisKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKKyBpZCB8IHZhbGlkX2Zyb20gfCB2YWxp ZF90aWwgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorKDAgcm93cykKKworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVF UyAoJ1sxNywxN10nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE3LDE3XScsICcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAo J1sxMSwxMV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxNywxN10nKTsKK0RFTEVU RSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMTcsMTddJyBBTkQgdHNy YW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOwor U0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTEsMTFd JzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3Rp bCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzExLDEyKSB8IFdl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsxNywx OCkKKygxIHJvdykKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s5LDldJywgJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFM VUVTICgnWzYsNl0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1s5LDldJyk7CitBTFRF UiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2RfZmssCisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJ CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQg TlVMTDsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTAsMTBdJyBX SEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 IFdIRVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8 ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyBbNiw3KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCB8IAorIFs2LDcpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IHwgWzksMTApCisgWzYsNykgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAg fCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBbOSwxMCkKKygzIHJvd3MpCisKK1VQREFURSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDld JzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzYs Nl0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3Rp bCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs2LDcpIHwgVHVlIEph biAwMSAwMDowMDowMCAyMDE5IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisgWzYsNykg fCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCAK KyBbNiw3KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSB8IAorKDMgcm93cykKKworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZB TFVFUyAoJ1sxOCwxOF0nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5U TyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE4LDE4XScsICcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVF UyAoJ1sxMiwxMl0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxOCwxOF0nKTsKK1VQ REFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlkID0g J1sxOCwxOF0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEt MDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdI RVJFIGlkID0gJ1sxMiwxMl0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAg fCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbMTIsMTMpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIHwgCisgWzEyLDEzKSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBK YW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsxOCwxOSkKKygyIHJvd3MpCisKKy0tIHRlc3QgRksgcGFy ZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBW QUxVRVMgKCdbMTEsMTFdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElO VE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzcsN10nLCAnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJywgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0w MS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9mcm9t ICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyBbNyw4KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCB8IAorIFs3LDgpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IHwgWzExLDEyKQorIFs3LDgpIHwgV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzExLDEyKQorKDMgcm93cykK KworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1sxMSwxMV0n OworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNyw3 XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGls ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCAKKyBbNyw4KSB8 IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IAor IFs3LDgpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAy MDIxIHwgCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFM VUVTICgnWzIwLDIwXScsICcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKTsKK0lOU0VSVCBJTlRP IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjAsMjBdJywgJzIwMjAtMDEtMDEnLCAn MjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVT ICgnWzEzLDEzXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzIwLDIwXScpOworREVM RVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB0 c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7 CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxMywx M10nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRf dGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTMsMTQpIHwg TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisg WzEzLDE0KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSB8IFsyMCwyMSkKKygyIHJvd3MpCisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VU IERFRkFVTFQKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbLTEs LTFdJywgbnVsbCwgbnVsbCk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFM VUVTICgnWzEyLDEyXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRP IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s4LDhdJywgJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScsICdbMTIsMTJdJyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlE Uk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5UIHJl ZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVURSBT RVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgd2l0aG91dF9vdmVybGFw c190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIw LTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1Qg KiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQg ICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs4LDkpIHwgTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgWzEyLDEz KQorIFs4LDkpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIHwgWzEyLDEzKQorKDMgcm93cykKKworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9N IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQgICB8ICAg ICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs4LDkpIHwgTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgWy0xLDApCisgWzgs OSkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEg fCBbLTEsMCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBW QUxVRVMgKCdbMjIsMjJdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElO VE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMiwyMl0nLCAnMjAyMC0wMS0wMScs ICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxV RVMgKCdbMTQsMTRdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMjIsMjJdJyk7CitV UERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMjMsMjNdJyBXSEVSRSBpZCA9 ICdbMjIsMjJdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBX SEVSRSBpZCA9ICdbMTQsMTRdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAg IHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgWzE0LDE1KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFdlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCB8IFstMSwwKQorIFsxNCwxNSkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAg fCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBbMjIsMjMpCisoMiByb3dzKQorCistLSB0ZXN0 IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgVkFMVUVTICgnWzE0LDE0XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsK K0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s5LDldJywgJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbOSw5XSc7CisgICBpZCAgIHwgICAgICAg IHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lk IAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkg fCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBbLTEsMCkKKyBbOSwxMCkgfCBNb24gSmFuIDAx IDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbMTQsMTUpCisgWzks MTApIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0 IFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdCBXSEVSRSBpZCA9ICdbOSw5XSc7CisgICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAg ICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbOSwxMCkgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAgfCBbLTEsMCkKKyBbOSwxMCkgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgg fCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbLTEsMCkKKyBbOSwxMCkgfCBXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBbLTEsMCkKKygzIHJv d3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjQsMjRd JywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1syNCwyNF0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7 CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTUsMTVdJywg JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHRzcmFuZ2UodmFsaWRf ZnJvbSwgdmFsaWRfdGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZS T00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzE1LDE1XSc7CisgICBpZCAg ICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxNSwxNikgfCBNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTggfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBbLTEsMCkKKyBbMTUsMTYp IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwg WzI0LDI1KQorKDIgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9y X3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3Fs CmluZGV4IDNiNTc1NWJhMDAuLmI3NzNhYjdhMDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jf cG9ydGlvbl9vZi5zcWwKQEAgLTQ4LDYgKzQ4LDEyIEBAIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTgtMDYtMDEnIFRPIE1BWFZBTFVFCiBTRVQgdmFsaWRfYXQgPSAnWzE5OTAtMDEt MDEsMTk5OS0wMS0wMSknCiBXSEVSRSBpZCA9ICdbNSw2KSc7CiAKKy0tIFRoZSB3cm9uZyB0eXBl IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAxIFRPIDQKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7CisK IC0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCiBVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScg VE8gJzIwMTgtMDEtMDEnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0 X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3Fs CmluZGV4IGU2NGVjNjlmMGIuLjVhZGUxYjgwNzkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dp dGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0yOTMsMyArMjkzLDE0MDUgQEAgQUxURVIgVEFCTEUgd2l0 aG91dF9vdmVybGFwc190ZXN0MiBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3R6cmFuZ2Ug VVNJTkcgdHMKIEFMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgUkVOQU1FIENPTFVN TiB2YWxpZF9hdCBUTyB2YWxpZF90aHJ1OwogQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190 ZXN0MiBEUk9QIENPTFVNTiB2YWxpZF90aHJ1OwogRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBz X3Rlc3QyOworCistLQorLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0tCisKKy0tIGNhbid0IGRy b3AgYSByYW5nZSByZWZlcmVuY2VkIGJ5IGFuIEZLLCB1bmxlc3Mgd2l0aCBDQVNDQURFCitDUkVB VEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl9wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2Us CisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZDJf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJB SU5UIHJlZmVyZW5jaW5nX3BlcmlvZDJfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKGlkLCBQRVJJ T0QgdmFsaWRfYXQpCispOworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBEUk9Q IENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgRFJP UCBDT0xVTU4gdmFsaWRfYXQgQ0FTQ0FERTsKK0RST1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QyOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyOworCistLSBjYW4ndCBk cm9wIGEgUEVSSU9EIHJlZmVyZW5jZWQgYnkgYW4gRkssIHVubGVzcyB3aXRoIENBU0NBREUKK0NS RUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZh bGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVy bGFwczJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDIgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCBy ZWZlcmVuY2luZ19wZXJpb2QyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2QyX2ZrIEZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJs YXBzX3Rlc3QyIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdDIgRFJPUCBQRVJJT0QgRk9SIHZhbGlkX2F0OworQUxURVIgVEFCTEUgd2l0 aG91dF9vdmVybGFwc190ZXN0MiBEUk9QIFBFUklPRCBGT1IgdmFsaWRfYXQgQ0FTQ0FERTsKK0RS T1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QyOworRFJPUCBUQUJMRSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QyOworCistLQorLS0gdGVzdCBGT1JFSUdOIEtFWSwgcmFuZ2UgcmVmZXJlbmNl cyByYW5nZQorLS0KKworLS0gQ2FuJ3QgY3JlYXRlIGEgRksgd2l0aCBhIG1pc21hdGNoZWQgcmFu Z2UgdHlwZQorQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0MiAoCisJaWQgaW50 NHJhbmdlLAorCXZhbGlkX2F0IGludDRyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNP TlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrMiBG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0 aG91dF9vdmVybGFwc190ZXN0IChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKKworQ1JFQVRFIFRB QkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQg dHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdf cGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJ Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQs IFBFUklPRCB2YWxpZF9hdCkKKyk7CitEUk9QIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 OworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQ1JFQVRF IFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNp bmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyks CisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAor KTsKK0RST1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CisKKy0tIHNob3VsZCBmYWls IGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Blcmlv ZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCBwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0IChpZCwgUEVS SU9EIGlkKQorKTsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0t CisKK0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdl LAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5U IHJlZmVyZW5jaW5nX3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQg Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlk LCBQRVJJT0QgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QK KwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworLS0gd2l0aCBpbmZlcnJl ZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9v dmVybGFwc190ZXN0OworCistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZl cmVuY2VkIGNvbHVtbnM6CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFE RCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazIKKwlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0 IChpZCwgUEVSSU9EIGlkKTsKKworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkKKy0tCisK K0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0OworQUxURVIgVEFCTEUgcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2Zr OworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEsMV0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CitBTFRFUiBUQUJM RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Bl cmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZF UkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0lOU0VS VCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgn MjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitB TFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVy ZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKKy0tIG9rYXkgYWdhaW46CitE RUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0FMVEVSIFRBQkxFIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0 aG91dF9vdmVybGFwc190ZXN0OworCistLQorLS0gdGVzdCBwZ19nZXRfY29uc3RyYWludGRlZgor LS0KKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50 IFdIRVJFIGNvbm5hbWUgPSAncmVmZXJlbmNpbmdfcGVyaW9kX2ZrJzsKKworLS0KKy0tIHRlc3Qg RksgY2hpbGQgaW5zZXJ0cworLS0KKworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwg J1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAx JyksICdbMSwxXScpOworLS0gbm93IGl0IHNob3VsZCB3b3JrOgorSU5TRVJUIElOVE8gd2l0aG91 dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMi0wMycsICcy MDE4LTAzLTAzJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVT ICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7 CisKKy0tCistLSB0ZXN0IEZLIGNoaWxkIHVwZGF0ZXMKKy0tCisKK1VQREFURSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgt MDMtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywg JzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QgU0VUIHBhcmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0nOworCist LQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCisKKy0tIGEgUEsgdXBk YXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2Vk OgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEn KSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4g dGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNu J3Q6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0n OworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9v dmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgn WzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitV UERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYt MDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0 IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAx JykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3Jk IGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgd2l0aG91dF9vdmVybGFw c190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScp CitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBGSyBwYXJl bnQgdXBkYXRlcyBSRVNUUklDVAorLS0KKworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworQUxURVIgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19w ZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVG RVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CistLSBh IFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVm ZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2 LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVk cyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJh bmdlIGlzbid0OgorREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0g J1s1LDVdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZB TFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1 XScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1cGRh dGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0aG91 dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAx Ni0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZL IHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00g d2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0IEZL IHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgorLS0KK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0FMVEVS IFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNp bmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQor CVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0OworLS0gYSBQSyBkZWxldGUgdGhhdCBz dWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQg SU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rl c3QgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBldmVu IHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlz bid0OgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91 dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcy MDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVT ICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7 CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQ SyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUg RlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUg dGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoK K0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsK K0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CisKKy0tCist LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBUQUJMRSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2Rf Zms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5U IHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCU9OIERFTEVURSBS RVNUUklDVDsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0 aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVj YXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJ TlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3Jhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0w MS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVm ZXJlbmNlZDoKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsg ZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hF UkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKTsKKworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCistLQorCist LSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s0 LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworQUxU RVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJl bmNpbmdfcGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mawor CQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMg d2l0aG91dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVND QURFOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVS RSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdI RVJFIGlkID0gJ1s0LDRdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0g J1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxNSwx NV0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTAsMTBdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbMTUsMTVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFw c190ZXN0IFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBBTkQgdmFsaWRf YXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxMCwxMF0nOworCistLSB0ZXN0IEZLIHBhcmVudCBk ZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMg KCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gd2l0aG91dF9v dmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1sxNywxN10nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTEsMTFdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxFVEUgRlJPTSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdCBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKKworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVz IFNFVCBOVUxMCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzks OV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maywKKwlBREQg Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAor CQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBEQVRFIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NF TEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzYsNl0nOwor VVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQg PSAnWzksOV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBp ZCA9ICdbNiw2XSc7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgn WzE4LDE4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTgsMThdJywgdHNyYW5nZSgnMjAy MC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzE4LDE4XScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAn WzE5LDE5XScgV0hFUkUgaWQgPSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAx Jzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVS RSBpZCA9ICdbMTIsMTJdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAor SU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxMSwxMV0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNyw3XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0 IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAx JyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgV0hFUkUgaWQgPSAnWzcsN10nOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190 ZXN0IFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdCBXSEVSRSBpZCA9ICdbNyw3XSc7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBz X3Rlc3QgVkFMVUVTICgnWzIwLDIwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjAsMjBd JywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEzLDEzXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzIwLDIwXScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVy bGFwc190ZXN0IFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hF UkUgaWQgPSAnWzEzLDEzXSc7CisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFV TFQKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbLTEsLTFdJywg dHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s4LDhdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CitBTFRFUiBUQUJM RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBE RUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2Zr LAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFw c190ZXN0CisJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitV UERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQg PSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJF IGlkID0gJ1s4LDhdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sx MywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbOCw4XSc7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgVkFMVUVTICgnWzIyLDIyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjIs MjJdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzE0LDE0XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBEQVRFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAnWzIyLDIyXScgQU5EIHZhbGlk X2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQg ZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZB TFVFUyAoJ1sxNCwxNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbOSw5XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZST00g d2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZS T00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzksOV0nOworREVMRVRFIEZS T00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICog RlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbOSw5XSc7CitJTlNFUlQg SU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzI0LDI0XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBWQUxVRVMgKCdbMjQsMjRdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzE1LDE1 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzI0LDI0XScpOworREVM RVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1syNCwyNF0nIEFORCB2 YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzE1LDE1XSc7CisKKworCistLQorLS0gdGVz dCBGT1JFSUdOIEtFWSwgcmFuZ2UgcmVmZXJlbmNlcyBQRVJJT0QKKy0tCisKK0RST1AgVEFCTEUg d2l0aG91dF9vdmVybGFwc190ZXN0IENBU0NBREU7CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVy bGFwc190ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFs aWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxp ZF90aWwpLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc19wayBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycpOwor SU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgt MDMtMDMnLCAnMjAxOC0wNC0wNCcpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0 IFZBTFVFUyAoJ1syLDJdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpOworSU5TRVJUIElO VE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1szLDNdJywgJzIwMTgtMDEtMDEnLCBO VUxMKTsKKworLS0gQ2FuJ3QgY3JlYXRlIGEgRksgd2l0aCBhIG1pc21hdGNoZWQgcmFuZ2UgdHlw ZQorQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0MiAoCisJaWQgaW50NHJhbmdl LAorCXZhbGlkX2F0IGludDRyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJ TlQgcmVmZXJlbmNpbmdfcGVyaW9kX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrMiBGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9v dmVybGFwc190ZXN0IChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKKworLS0gd2l0aCBpbmZlcnJl ZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0RST1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3Q7CitDUkVBVEUgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09O U1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mayBGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91 dF9vdmVybGFwc190ZXN0CispOworRFJPUCBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsK KworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5z OgorQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0ICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQg cmVmZXJlbmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgKGlkLCBQRVJJT0QgaWQpCispOworCistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBB REQgQ09OU1RSQUlOVAorLS0KKworQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJh bmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCAoaWQsIFBFUklPRCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7 CistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19w ZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVG RVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ug b2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrMgorCUZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgaWQpOworCistLQorLS0gdGVzdCB3aXRoIHJv d3MgYWxyZWFkeQorLS0KKworREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CitB TFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZl cmVuY2luZ19wZXJpb2RfZms7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBW QUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEs MV0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJ TlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0OworQUxURVIgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdf cGVyaW9kX2ZrOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgn WzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7Cist LSBzaG91bGQgZmFpbDoKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQURE IENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0Owor LS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0OworQUxU RVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CisKKy0tCistLSB0ZXN0IHBnX2dl dF9jb25zdHJhaW50ZGVmCistLQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICdyZWZlcmVuY2luZ19wZXJpb2RfZmsn OworCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorCitJTlNFUlQgSU5UTyByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDIn LCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8g cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBub3cgaXQgc2hvdWxkIHdvcms6CitJ TlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzEsMV0nLCAnMjAxOC0w Mi0wMycsICcyMDE4LTAzLTAzJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVz dCBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAn WzEsMV0nKTsKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcworLS0KK1VQREFURSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywg JzIwMTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFU RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgU0VUIHBhcmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0n OworCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCisKKy0tIGEg UEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZl cmVuY2VkOgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVd JywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBTRVQgdmFsaWRfZnJvbSA9ICcyMDE2LTAxLTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDIt MDEnIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZl biB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBp c24ndDoKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1 XSc7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBz X3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNF UlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMi0wMScsIHZhbGlkX3RpbCA9ICcy MDE2LTAzLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDIt MDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZh aWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJsYXBz X3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAy LTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFO RCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5n IEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00g cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfZnJvbSA9ICcyMDE2LTAxLTAxJywgdmFsaWRfdGls ID0gJzIwMTYtMDItMDEnCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAx OC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAyLTAxJzsKKy0tIGNsZWFuIHVwOgorREVM RVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVd JzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7 CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBU QUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2lu Z19wZXJpb2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBD T05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCU9O IERFTEVURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0 aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwor VVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfZnJvbSA9ICcyMDE2LTAxLTAx JywgdmFsaWRfdGlsID0gJzIwMTYtMDItMDEnIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsg dXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJl bmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBz X3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitJTlNF UlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBW QUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUs NV0nKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAx Ni0wMi0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAzLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9mcm9tID0gJzIwMTgtMDItMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMSc7 CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoK K1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0w MScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLSB0 aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRl IHN1Y2NlZWRzOgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQg PSAnWzMsM10nOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfZnJvbSA9 ICcyMDE2LTAxLTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDItMDEnCitXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAy LTAxJzsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qg V0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVz IE5PIEFDVElPTgorLS0KKworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlE Uk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworQUxURVIgVEFCTEUgcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsK KwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3 aXRob3V0X292ZXJsYXBzX3Rlc3Q7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1 c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7 CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlk IGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0n LCAnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0w MS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMi0wMScgQU5EIHZhbGlkX3Rp bCA9ICcyMDE4LTAzLTAxJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3Ro IGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGls ID0gJzIwMTgtMDItMDEnOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQg YW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0w MScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAyLTAxJzsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50 IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCisKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0FMVEVSIFRBQkxF IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVy aW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJT04gREVMRVRFIFJFU1RSSUNUOworSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJF IGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2gg dGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lO U0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBW QUxVRVMgKCdbNSw1XScsICcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKK0lOU0VSVCBJTlRP IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVy bGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAyLTAx JyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWls cyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEn IEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0 aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZS T00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZS T00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJv bSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworCistLQorLS0g dGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKKy0tCisKKy0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1s2LDZdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzQsNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmssCisJQUREIENPTlNU UkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwkJT04g REVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitVUERBVEUgd2l0aG91dF9vdmVybGFw c190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIw LTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZS T00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzQsNF0nOworVVBEQVRFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsK K1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzQsNF0n OworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCAn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBz X3Rlc3QgVkFMVUVTICgnWzE1LDE1XScsICcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lO U0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxMCwxMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNSwxNV0nKTsKK1VQREFURSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0n IEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1l c3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0g J1sxMCwxMF0nOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJ TlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbOCw4XScsICcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScp OworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7 CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s1LDVd JzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbOCw4XSc7 CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s1LDVd JzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTcsMTddJywg JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1sxNywxN10nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJ TlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTEsMTFdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxFVEUgRlJP TSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHRzcmFuZ2Uo dmFsaWRfZnJvbSwgdmFsaWRfdGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVD VCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzExLDExXSc7CisK Ky0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbOSw5XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s2LDZdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOworQUxURVIgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdf cGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91 dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7 CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUg aWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVS RSBpZCA9ICdbNiw2XSc7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdb MTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s2LDZdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBWQUxVRVMgKCdbMTgsMThdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOwor SU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxOCwxOF0nLCAnMjAy MC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdCBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbMTgsMThdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdb MTksMTldJyBXSEVSRSBpZCA9ICdbMTgsMThdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxp ZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKKworLS0gdGVzdCBGSyBwYXJl bnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZB TFVFUyAoJ1sxMSwxMV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5U TyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNyw3XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gd2l0aG91dF9v dmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzcsN10nOworREVMRVRFIEZST00gd2l0aG91 dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNyw3XSc7CitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzIwLDIwXScsICcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjAs MjBdJywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEzLDEzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzIwLDIwXScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190 ZXN0IFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3Rp bCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxMywxM10nOworCistLSB0ZXN0IEZLIHBhcmVudCB1 cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFM VUVTICgnWy0xLC0xXScsIG51bGwsIG51bGwpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1sxMiwxMl0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJ TlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbOCw4XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOworQUxURVIgVEFCTEUg cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVG QVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maywK KwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwkJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdAorCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworVVBE QVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0g J1sxMiwxMl0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBp ZCA9ICdbOCw4XSc7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMTMs MTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzgsOF0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1syMiwyMl0nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJ TlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzIyLDIyXScsICcyMDIw LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0IFZBTFVFUyAoJ1sxNCwxNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1syMiwyMl0nKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sy MywyM10nIFdIRVJFIGlkID0gJ1syMiwyMl0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlk X3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxNCwxNF0nOworCistLSB0ZXN0IEZLIHBhcmVu dCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzE0LDE0XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJ TlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbOSw5XSc7CitERUxFVEUgRlJPTSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s5LDldJzsKK0lOU0VSVCBJTlRPIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjQsMjRdJywgJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sy NCwyNF0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBz X3Rlc3QgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRf dGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzE1LDE1XSc7CisKKworLS0KKy0tIHRlc3QgRk9S RUlHTiBLRVksIFBFUklPRCByZWZlcmVuY2VzIHJhbmdlCistLQorCitEUk9QIFRBQkxFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBDQVNDQURFOworQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB3 aXRob3V0X292ZXJsYXBzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKKyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzEs MV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnKSk7CitJTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAzLTAz JywgJzIwMTgtMDQtMDQnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFM VUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CitJTlNF UlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgTlVMTCkpOworCistLSBDYW4ndCBjcmVhdGUgYSBGSyB3aXRoIGEgbWlzbWF0 Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QyICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSBpbnQ0LAorICB2YWxpZF90aWwgaW50NCwKKwlQ RVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfcGsyIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2lu Z19wZXJpb2RfZmsyIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCisp OworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorRFJPUCBU QUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGltZXN0YW1wLAorCXZh bGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFs aWRfdGlsKSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdf cGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJ Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorKTsK K0RST1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CisKKy0tIHNob3VsZCBmYWlsIGJl Y2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGltZXN0 YW1wLAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRf ZnJvbSwgdmFsaWRfdGlsKSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVm ZXJlbmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBz X3Rlc3QgKGlkLCBQRVJJT0QgaWQpCispOworCistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQg Q09OU1RSQUlOVAorLS0KKworQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0ICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVz dGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCXBh cmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxF IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVy aW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0IChpZCwgUEVSSU9EIHZhbGlkX2F0KTsKK0FMVEVS IFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5j aW5nX3BlcmlvZF9mazsKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFi bGU6CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5U IHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKKworLS0gc2hvdWxk IGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQUxURVIgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19w ZXJpb2RfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwlS RUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBFUklPRCBpZCk7CisKKy0tCist LSB0ZXN0IHdpdGggcm93cyBhbHJlYWR5CistLQorCitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdDsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBD T05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScs ICdbMSwxXScpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09O U1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CitBTFRF UiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2RfZms7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxV RVMgKCdbMiwyXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnLCAnWzEsMV0nKTsKKy0tIHNo b3VsZCBmYWlsOgorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09O U1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CistLSBv a2F5IGFnYWluOgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CitBTFRFUiBU QUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5n X3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlS RUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKKworLS0KKy0tIHRlc3QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYKKy0tCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00g cGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3JlZmVyZW5jaW5nX3BlcmlvZF9mayc7CisK Ky0tCistLSB0ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0tCisKK0lOU0VSVCBJTlRPIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0w MScsICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBWQUxVRVMgKCdbMiwyXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnLCAn WzEsMV0nKTsKKy0tIG5vdyBpdCBzaG91bGQgd29yazoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDItMDMnLCAnMjAxOC0w My0wMycpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sy LDJdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScsICdbMSwxXScpOworCistLQorLS0gdGVz dCBGSyBjaGlsZCB1cGRhdGVzCistLQorVVBEQVRFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFNF VCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDInLCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMScgV0hF UkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0wMicsIHZhbGlkX3RpbCA9ICcyMDE4 LTA1LTAxJyBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgU0VUIHBhcmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0nOworCistLQorLS0g dGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCisKKy0tIGEgUEsgdXBkYXRlIHRo YXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVS RSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdo IHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitE RUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx JykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10n LCAnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9v dmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0w My0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2Ug Ym90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywnMjAxOC0wMi0wMScp OworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBL IHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdI RVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUg cGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBX SEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RS SUNUCistLQorCitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09O U1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdAorCU9OIERFTEVURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBkYXRlIHRoYXQg c3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBT RVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVSRSBp ZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRo ZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxF VEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190 ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykp OworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10nLCAn MjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVy bGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0w MScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90 aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1 cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVS RSBpZCA9ICdbMywzXSc7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Cist LSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIHBh cmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hF UkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJ T04KKy0tCisKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05T VFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9v dmVybGFwc190ZXN0OworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBu dW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBz X3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KSk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0n OworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBp ZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gd2l0 aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJU IElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10nLCAnMjAxOC0wMS0w NScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBz X3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJv dGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRo ZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RS SUNUCistLQorCitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09O U1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdAorCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9 ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBu dW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQg SU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rl c3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7 CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsICcy MDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJl Y2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29y ZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gd2l0aG91dF9v dmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVU RSBvcHRpb25zCistLQorCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFZBTFVFUyAoJ1s0LDRdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbNiw2 XScpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJ TlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Bl cmlvZF9maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJF RkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQ REFURSBDQVNDQURFOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3 LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg U0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsKK0lOU0VSVCBJTlRPIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVF UyAoJ1sxNSwxNV0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTAsMTBdJywgJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTUsMTVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFw c190ZXN0IFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBBTkQgdmFsaWRf YXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxMCwxMF0nOworCistLSB0ZXN0IEZLIHBhcmVudCBk ZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMg KCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScsICdbOCw4XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190 ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAx LTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBWQUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx JykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxNywxN10n LCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTEsMTFdJywgJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScsICdbMTcsMTddJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg V0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0 YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdb MTEsMTFdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElO VE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgVkFMVUVTICgnWzYsNl0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1s5LDldJyk7 CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCBy ZWZlcmVuY2luZ19wZXJpb2RfZmssCisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9k X2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFU RSBTRVQgTlVMTDsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTAs MTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg U0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzYsNl0nOworSU5TRVJUIElOVE8gd2l0 aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxOCwxOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFM VUVTICgnWzE4LDE4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxMiwxMl0nLCAnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxOCwxOF0nKTsKK1VQREFURSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlkID0gJ1sxOCwxOF0nIEFORCB2YWxp ZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CisKKy0tIHRlc3QgRksgcGFyZW50 IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxV RVMgKCdbMTEsMTFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzcsN10nLCAnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJywgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAn MjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s3LDddJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzcsN10nOworSU5TRVJUIElOVE8gd2l0aG91 dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMCwyMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVT ICgnWzIwLDIwXScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxMywxM10nLCAnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJywgJ1syMCwyMF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMjAsMjBdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEt MDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdI RVJFIGlkID0gJ1sxMywxM10nOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZB VUxUCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWy0xLC0xXScs IHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0 IFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbOCw4XScsICcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzEyLDEyXScpOworQUxURVIgVEFCTEUgcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAn Wy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maywKKwlBREQg Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAor CQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworVVBEQVRFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAx LTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwx Ml0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdb OCw4XSc7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMTMsMTNdJyBX SEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgV0hFUkUgaWQgPSAnWzgsOF0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0 IFZBTFVFUyAoJ1syMiwyMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzIyLDIyXScsIHRz cmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxNCwxNF0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJywgJ1syMiwyMl0nKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0g J1syMywyM10nIFdIRVJFIGlkID0gJ1syMiwyMl0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hF UkUgaWQgPSAnWzE0LDE0XSc7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFV TFQKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTQsMTRdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzksOV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJywgJ1sxNCwxNF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hF UkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 IFdIRVJFIGlkID0gJ1s5LDldJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBX SEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgV0hFUkUgaWQgPSAnWzksOV0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0 IFZBTFVFUyAoJ1syNCwyNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzI0LDI0XScsIHRz cmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJywgJ1syNCwyNF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVS RSBpZCA9ICdbMjQsMjRdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7 CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxNSwx NV0nOworCisKKy0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCBQRVJJT0QgcmVmZXJlbmNlcyBQRVJJ T0QKKy0tCisKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0IENBU0NBREU7CitDUkVB VEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf ZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlk X2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFw c19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDEt MDInLCAnMjAxOC0wMi0wMycpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZB TFVFUyAoJ1sxLDFdJywgJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpOworSU5TRVJUIElOVE8g d2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syLDJdJywgJzIwMTgtMDEtMDEnLCAnMjAx OC0wMS0wNScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sz LDNdJywgJzIwMTgtMDEtMDEnLCBOVUxMKTsKKworLS0gQ2FuJ3QgY3JlYXRlIGEgRksgd2l0aCBh IG1pc21hdGNoZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gaW50NCwKKyAgdmFsaWRfdGlsIGlu dDQsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlwYXJl bnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX3BrMiBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgcmVm ZXJlbmNpbmdfcGVyaW9kX2ZrMiBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0IChpZCwgUEVSSU9EIHZhbGlk X2F0KQorKTsKKworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToK K0RST1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CitDUkVBVEUgVEFCTEUgcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRpbWVzdGFt cCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zy b20sIHZhbGlkX3RpbCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVy ZW5jaW5nX3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rl c3QKKyk7CitEUk9QIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0OworCistLSBzaG91bGQg ZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitDUkVBVEUgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9t IHRpbWVzdGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQg KHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJB SU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9v dmVybGFwc190ZXN0IChpZCwgUEVSSU9EIGlkKQorKTsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFC TEUgQUREIENPTlNUUkFJTlQKKy0tCisKK0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGltZXN0YW1wLAorCXZhbGlkX3Rp bCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGls KSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9k X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRF UiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5j aW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBFUklPRCB2YWxpZF9hdCk7 CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCBy ZWZlcmVuY2luZ19wZXJpb2RfZms7CistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVu Y2VkIHRhYmxlOgorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09O U1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CisKKy0t IHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0FM VEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJl bmNpbmdfcGVyaW9kX2ZrMgorCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRf aWQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgaWQpOwor CistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxyZWFkeQorLS0KKworREVMRVRFIEZST00gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3Q7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAor CURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitJTlNFUlQgSU5UTyByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMSwxXScsICcyMDE4LTAxLTAyJywgJzIwMTgt MDItMDEnLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJ QUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0 OworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQg cmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJywgJ1sxLDFdJyk7 CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJ QUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0 OworLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Owor QUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZl cmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CisKKy0tCistLSB0ZXN0IHBn X2dldF9jb25zdHJhaW50ZGVmCistLQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lk KSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICdyZWZlcmVuY2luZ19wZXJpb2Rf ZmsnOworCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorCitJTlNFUlQgSU5UTyBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMSwxXScsICcyMDE4LTAxLTAyJywgJzIw MTgtMDItMDEnLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0wMicsICcyMDE4LTA0 LTAxJywgJ1sxLDFdJyk7CistLSBub3cgaXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzEsMV0nLCAnMjAxOC0wMi0wMycsICcyMDE4LTAz LTAzJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMiwy XScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnLCAnWzEsMV0nKTsKKworLS0KKy0tIHRlc3Qg RksgY2hpbGQgdXBkYXRlcworLS0KK1VQREFURSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBTRVQg dmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAyJywgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnIFdIRVJF IGlkID0gJ1sxLDFdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDInLCB2YWxpZF90aWwgPSAnMjAxOC0w NS0wMScgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 IFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0KKy0tIHRl c3QgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCistLQorCistLSBhIFBLIHVwZGF0ZSB0aGF0 IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlk X2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJyBXSEVSRSBpZCA9 ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBu dW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUg RlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElO VE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworSU5TRVJUIElOVE8gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10nLCAnMjAxOC0wMS0wNScsICcyMDE4LTAx LTEwJywgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9m cm9tID0gJzIwMTYtMDItMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMy0wMScKK1dIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAyLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIw MTgtMDMtMDEnOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJl ZmVyZW5jZWQ6CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9mcm9tID0g JzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScKK1dIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDIt MDEnOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1l IFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 IFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZh bGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJworV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwg PSAnMjAxOC0wMi0wMSc7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBGSyBwYXJl bnQgdXBkYXRlcyBSRVNUUklDVAorLS0KKworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworQUxURVIgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19w ZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVG RVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CistLSBh IFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVm ZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1 XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBz X3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAy LTAxJyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2 ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2Ug aXNuJ3Q6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUs NV0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywg JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworSU5T RVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10nLCAnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190 ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDItMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMy0w MScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAyLTAxJyBBTkQg dmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNh dXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNF VCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScKK1dI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRf dGlsID0gJzIwMTgtMDItMDEnOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNv cmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2 LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEn IEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9N IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxF VEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLQor LS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KKy0tCisKK0FMVEVSIFRBQkxFIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Blcmlv ZF9mazsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJ TlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0OworLS0gYSBQSyBk ZWxldGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5j ZWQ6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBz X3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBl dmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdl IGlzbid0OgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVd JywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwor SU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10nLCAnMjAx OC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDIt MDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZh aWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0w MScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAyLTAxJzsKKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmpl Y3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CitERUxFVEUg RlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUg RlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9m cm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CisKKy0tCist LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBUQUJMRSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2Rf Zms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5U IHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCU9OIERFTEVURSBS RVNUUklDVDsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1 XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2Nl ZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUg cmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgn WzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx Jyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScs ICcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAx OC0wMi0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAzLTAxJzsKKy0tIGEgUEsgZGVsZXRlIHRo YXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gd2l0aG91 dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4 LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0gdGhlbiBkZWxldGUgdGhl IG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RF TEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsKK0RF TEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAyLTAxJzsKKwor LS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCistLQorCistLSB0ZXN0IEZLIHBh cmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBW QUxVRVMgKCdbNiw2XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRP IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s0LDRdJywgJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScsICdbNiw2XScpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrLAorCUFERCBDT05TVFJB SU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJCU9OIERF TEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0w MS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsKK1VQREFURSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsK K0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTUsMTVdJywgJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190 ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNF UlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTAsMTBdJywgJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTUsMTVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFw c190ZXN0IFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBBTkQgdHNyYW5n ZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VM RUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTAsMTBdJzsK KworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzgsOF0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx Jyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNSw1XScs ICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE3LDE3XScsICcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTcs MTddJywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzExLDExXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnLCAnWzE3LDE3XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJF IGlkID0gJ1sxNywxN10nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIw MTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0IFdIRVJFIGlkID0gJ1sxMSwxMV0nOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNF VCBOVUxMCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzksOV0n LCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBWQUxVRVMgKCdbNiw2XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAn WzksOV0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05T VFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maywKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2lu Z19wZXJpb2RfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQor CQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCQlPTiBERUxFVEUgU0VUIE5VTEwg T04gVVBEQVRFIFNFVCBOVUxMOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlk ID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzYsNl0nOworVVBEQVRFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNUICog RlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNiw2XSc7CitJTlNFUlQg SU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE4LDE4XScsICcyMDE4LTAxLTAx JywgJzIwMjAtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxV RVMgKCdbMTgsMThdJywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8g cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEyLDEyXScsICcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnLCAnWzE4LDE4XScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBT RVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQgPSAnWzE4LDE4XScgQU5EIHRzcmFuZ2UodmFsaWRf ZnJvbSwgdmFsaWRfdGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZS T00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CisKKy0tIHRl c3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBWQUxVRVMgKCdbMTEsMTFdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOwor SU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzcsN10nLCAnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s3LDddJzsKK0RFTEVURSBGUk9NIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzcsN10nOworSU5TRVJUIElOVE8gd2l0 aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMCwyMF0nLCAnMjAxOC0wMS0wMScsICcyMDIw LTAxLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzIw LDIwXScsICcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxMywxM10nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJywgJ1syMCwyMF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVS RSBpZCA9ICdbMjAsMjBdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcy MDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdCBXSEVSRSBpZCA9ICdbMTMsMTNdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBT RVQgREVGQVVMVAorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1st MSwtMV0nLCBudWxsLCBudWxsKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBW QUxVRVMgKCdbMTIsMTJdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElO VE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzgsOF0nLCAnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJywgJ1sxMiwxMl0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0CisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAor CURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmssCisJQUREIENPTlNUUkFJTlQg cmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwkJT04gREVMRVRF IFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKK1VQREFURSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIw MjAtMDEtMDEnIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVD VCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzgsOF0nOworVVBE QVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAn WzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlk ID0gJ1s4LDhdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb MjIsMjJdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91 dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMiwyMl0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAx LTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTQs MTRdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMjIsMjJdJyk7CitVUERBVEUgd2l0 aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMjMsMjNdJyBXSEVSRSBpZCA9ICdbMjIsMjJd JyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGlt ZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9 ICdbMTQsMTRdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxNCwxNF0nLCAnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVz dCBWQUxVRVMgKCdbOSw5XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzE0LDE0XScp OworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRd JzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzks OV0nOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1sxNCwx NF0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdb OSw5XSc7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzI0LDI0 XScsICcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBWQUxVRVMgKCdbMjQsMjRdJywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScp OworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzE1LDE1XScs ICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzI0LDI0XScpOworREVMRVRFIEZST00gd2l0 aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1syNCwyNF0nIEFORCB0c3JhbmdlKHZhbGlk X2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxNSwxNV0nOwotLSAKMi4z Mi4wCgo= --00000000000082e1ad05cbd8ac96--