Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tb8SI-008IRf-8i for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Jan 2025 01:25:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tb8SF-007a7j-P0 for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Jan 2025 01:25:51 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tb8SF-007a7b-8u for pgsql-hackers@lists.postgresql.org; Fri, 24 Jan 2025 01:25:51 +0000 Received: from mail-lj1-x22a.google.com ([2a00:1450:4864:20::22a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tb8SC-001BGc-0g for pgsql-hackers@lists.postgresql.org; Fri, 24 Jan 2025 01:25:50 +0000 Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-305d843d925so13614611fa.2 for ; Thu, 23 Jan 2025 17:25:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737681948; x=1738286748; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=t2YLOPh07bZ6pE1SK6Acdy/t/Ny0+4M03EVoWab0a2E=; b=QJpS8M9/NnVhJ8Nor34YZMCHnRposYgG9KCUN6HothZ11u4t5lDC6NhOZKKNIRW1XU GyBs10gZ+BFuQXj1r19JOEOqKry3tThVFsdjA2SzR+2cWO5cvOYD+JOn4WNifdP/9l5h jAFBPzD7ALFtHKb+N3VEDtW/OtTIn6JnydFU8C56V3jlOMlTb1Q3xvcT65kirps87Vxt IOBElp3ESvzRjCNM6NEGyJTG+lLBpTuiG4lpFgbj4RV9Mp27Yw3QRCTvJS0lA0ccruM8 7L1F6ieIHR4RrMA3pqnroNRISDNfO26SeY4lF3qkTw1qZ5HFGf/PNSCjnTBYNHcMgWB+ YyHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737681948; x=1738286748; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=t2YLOPh07bZ6pE1SK6Acdy/t/Ny0+4M03EVoWab0a2E=; b=DfMnbIJpfuTpwza1I44B92Dq+jbNHwMG0yNR1TPRPUrSPLgFg3iTq1D+PG6FkDl6B4 zNf3QfIQG1je82R55ormhLvXmWzN2wzT2JbC+EEzJdzmNyD5bMmzyuOt6HxFEJkEZatD YzcapmXdi8U60w047vz35WHO/I2bI/nmtphZ0OEI3g7gqAWJNKHs+SWLKauB7pbZxFdZ B+34F/vSXinCdzQxaWE6yxFZneAqoT9SCSjsBSKvrwWZbnX1x+QSds+EMLpKnIlgP+cf GZsttPfnQ7833ROG7ZhJp1UIEAG3U6VLLYdKqRKnBceNOxl/5XAEHN2q8jHDVvNdYkYK mQow== X-Forwarded-Encrypted: i=1; AJvYcCWiOOvqEa0nPtalZCyBRWQWEAgcsovXLfBP6t3ih9fKN8Wt2AFOAqEifDIj4Ja9hCfhRiq0l1U8I2lO38au@lists.postgresql.org X-Gm-Message-State: AOJu0YzumuZ0U2aQcNb8eG2c07IBuDG9ZHb4TN+Fr6gMY5nnMF4HPU/j k11zRqPL0xL2n3FPteWYbkHWHIKw/HAPJhliDrMPzhSpkZH2mSH/CH+CHCbSQzxBM90XhXlhQu2 YsD6XPhLn+1wBwCHsSEqlRU1cDpE= X-Gm-Gg: ASbGncuE00Lt8Pl6EdpDtTTIiI+N12xFkibANWMejkArgGv+HYQ+OyESKannn93ikTt 4jWKGNbwBiUmJHg6O9xAP15b1wCv2jGx5YZr1LG802Fvt3xG2Iw8TGicm3w6x7vtd1Ss9yzQ= X-Google-Smtp-Source: AGHT+IFcHylWHp4TKkFkLWh3GbCTL0qBf9C19rE9zzAdV2BV1gSHxe9gvyEWvcVOkkF+2nwPQ1KfgevG0pFeDcvhHgI= X-Received: by 2002:a2e:bc85:0:b0:300:3de4:ff7f with SMTP id 38308e7fff4ca-3072ca5bb2bmr104695731fa.6.1737681947316; Thu, 23 Jan 2025 17:25:47 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Sami Imseih Date: Thu, 23 Jan 2025 19:25:35 -0600 X-Gm-Features: AWEUYZk3UKY9wTKzROPxLA778UD7Dxm0Ey5IByj75FrmtJbufp9jps5ltVUuG8M Message-ID: Subject: Re: [PATCH] Optionally record Plan IDs to track plan changes for a query To: Michael Paquier Cc: Lukas Fittl , PostgreSQL Hackers , Marko M Content-Type: multipart/mixed; boundary="00000000000033f41e062c699be5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000033f41e062c699be5 Content-Type: text/plain; charset="UTF-8" Thanks for starting this thread. This is an important feature. I am still reviewing, but wanted to share some initial comments. == pg_stat_plans extension (0004) 1. pg_stat_plans_1_0 should not call pgstat_fetch_entry.l This is not needed since we already have the entry with a shared lock and it could lead to an assertion error when pgstat_fetch_entry may conditionally call dshash_find. dshash_find asserts that the lock is not already held. Calling pgstat_get_entry_data should be enough here. 2. a "toplevel" bool field is missing in pg_stat_plans to indicate the plan is for a nested query. 3. I think we should add cumulative planning_time. This Probably should be controlled with a separate GUC as well. 4. For deallocation, I wonder if it makes more sense to zap the plans with the lowest total execution time rather than calls; or make this configurable. In fact, I think choosing the eviction strategy should be done in pg_stat_statements as well ( but that belongs in a separate discussion ). The idea is to give more priority to plans that have the most overall database time. 5. What are your thoughts about controlling the memory by size rather than .max and .max_size ? if a typical plan is 2KB, a user can fit 10k plans with 20MB. A typical user can probably allocate much more memory for this purpose. Also, pgstat_gc_plans is doing a loop over the hash to get the # of entries. I don't think this is a good idea for performance and it may not be possible to actually enforce the .max on a dshash since the lock is taken on a partition level. 6. I do like the idea of showing an in-flight plan. This is so useful for a rare plan, especially on the first capture of the plan ( calls = 0), and the planId can be joined with pg_stat_activity to get the query text. /* Record initial entry now, so plan text is available for currently running queries */ pgstat_report_plan_stats(queryDesc, 0, /* executions are counted in pgsp_ExecutorEnd */ 0.0); We will need to be clear in the documentation that calls being 0 is a valid scenario. == core plan id computation (0003) 1. compute_plan_id should do exactly what compute_query_id does. It should have an "auto" as the default which automatically computes a plan id when pg_stat_plans is enabled. 2. > Mixed feelings about the choices of JumblePlanNode() in 0003 based on > its complexity as implemented. When it comes to such things, we > should keep the custom node functions short, applying node_attr > instead to the elements of the nodes so as the assumptions behind the > jumbling are documented within the structure definitions in the > headers, not the jumbling code itself. +1 we should be able to control which node is considered for plan_id computation using a node attribute such as plan_jumble_ignore. I played around with this idea by building on top of your proposal and attached my experiment code for this. The tricky part will be finalizing which nodes and node fields to use for plan computation. 3. We may want to combine all the jumbling code into a single jumble.c since the query and plan jumble will share a lot of the same code, i.e. JumbleState. _JumbleNode, etc. Regards, Sami Imseih Amazon Web Services (AWS) --00000000000033f41e062c699be5 Content-Type: application/octet-stream; name="Experiment-with-plan-identifier-computation.patch" Content-Disposition: attachment; filename="Experiment-with-plan-identifier-computation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6a2vrl60 RnJvbSBiZTY4OGFiOWUzNjI1YzFiM2VhODU1ZDIwZmJlMGI0ZjY4ZDliNDNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEltc2VpaCA8c2ltc2VpaEBhbWF6b24uY29tPgpEYXRl OiBUaHUsIDIzIEphbiAyMDI1IDEzOjA2OjQyIC0wNjAwClN1YmplY3Q6IFtQQVRDSCAxLzFdIEV4 cGVyaW1lbnQgd2l0aCBwbGFuIGlkZW50aWZpZXIgY29tcHV0YXRpb24KCi0tLQogLi4uL3BnX3N0 YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwgICA3ICsKIHNyYy9iYWNrZW5kL2Nh dGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21t YW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8ICAxNiArKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXh0ZW5zaW9uLmMgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5k cy9wb3J0YWxjbWRzLmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3ZhY3V1bXBhcmFsbGVsLmMgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9ub2Rlcy9NYWtlZmls ZSAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL25vZGVzL2dlbl9ub2Rl X3N1cHBvcnQucGwgICAgICAgICB8ICA5NSArKysrKysrKwogc3JjL2JhY2tlbmQvbm9kZXMvcGxh bmp1bWJsZWZ1bmNzLmMgICAgICAgICAgIHwgMjIwICsrKysrKysrKysrKysrKysrKwogc3JjL2Jh Y2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jICAgICAgICAgIHwgICAyICstCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAgICAgfCAgIDUgKwogc3JjL2JhY2tl bmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jICAgfCAgNjMgKysrKysKIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQv dXRpbHMvZXJyb3IvY3N2bG9nLmMgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3V0 aWxzL2Vycm9yL2Vsb2cuYyAgICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC91dGls cy9lcnJvci9qc29ubG9nLmMgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgIDMwICsrLQogc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvbm9kZXMvYml0 bWFwc2V0LmggICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9ub2Rlcy97cXVl cnlqdW1ibGUuaCA9PiBqdW1ibGUuaH0gfCAgMjMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL21lc29u LmJ1aWxkICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oICAgICAgICAgICAgICAgICB8ICA1NCArKy0tLQogc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5v ZGVzLmggICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6 ZS5oICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRf c3RhdHVzLmggICAgICAgICAgICB8ICAgNSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dCAgICAgICAgICAgfCAgIDkgKy0KIDM2IGZpbGVzIGNoYW5nZWQsIDU1MyBpbnNlcnRp b25zKCspLCA1NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9u b2Rlcy9wbGFuanVtYmxlZnVuY3MuYwogcmVuYW1lIHNyYy9pbmNsdWRlL25vZGVzL3txdWVyeWp1 bWJsZS5oID0+IGp1bWJsZS5ofSAoODAlKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9z dGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggYmViZjgxMzRlYi4uMjZlZjdmM2UwMyAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMK KysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAg LTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlICJqaXQvaml0LmgiCiAjaW5jbHVkZSAibWIvcGdfd2No YXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKLSNpbmNsdWRlICJub2Rlcy9xdWVyeWp1bWJs ZS5oIgorI2luY2x1ZGUgIm5vZGVzL2p1bWJsZS5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFu bmVyLmgiCiAjaW5jbHVkZSAicGFyc2VyL2FuYWx5emUuaCIKICNpbmNsdWRlICJwYXJzZXIvc2Nh bm5lci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCmluZGV4IDQyODkxNDJlMjAuLjMzMTM3ODYyYTEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTcwLDYgKzcwLDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg QnJpblNoYXJlZAogCS8qIFF1ZXJ5IElELCBmb3IgcmVwb3J0IGluIHdvcmtlciBwcm9jZXNzZXMg Ki8KIAl1aW50NjQJCXF1ZXJ5aWQ7CiAKKwkvKiBQbGFuIElELCBmb3IgcmVwb3J0IGluIHdvcmtl ciBwcm9jZXNzZXMgKi8KKwl1aW50NjQJCXBsYW5pZDsKKwogCS8qCiAJICogd29ya2Vyc2RvbmVj diBpcyB1c2VkIHRvIG1vbml0b3IgdGhlIHByb2dyZXNzIG9mIHdvcmtlcnMuICBBbGwgcGFyYWxs ZWwKIAkgKiBwYXJ0aWNpcGFudHMgbXVzdCBpbmRpY2F0ZSB0aGF0IHRoZXkgYXJlIGRvbmUgYmVm b3JlIGxlYWRlciBjYW4gdXNlCkBAIC0yNDUyLDYgKzI0NTUsNyBAQCBfYnJpbl9iZWdpbl9wYXJh bGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsCiAJYnJpbnNoYXJlZC0+c2NhbnR1cGxlc29ydHN0YXRlcyA9IHNjYW50dXBsZXNvcnRz dGF0ZXM7CiAJYnJpbnNoYXJlZC0+cGFnZXNQZXJSYW5nZSA9IGJ1aWxkc3RhdGUtPmJzX3BhZ2Vz UGVyUmFuZ2U7CiAJYnJpbnNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9nZXRfbXlfcXVlcnlfaWQo KTsKKwlicmluc2hhcmVkLT5wbGFuaWQgPSBwZ3N0YXRfZ2V0X215X3BsYW5faWQoKTsKIAlDb25k aXRpb25WYXJpYWJsZUluaXQoJmJyaW5zaGFyZWQtPndvcmtlcnNkb25lY3YpOwogCVNwaW5Mb2Nr SW5pdCgmYnJpbnNoYXJlZC0+bXV0ZXgpOwogCkBAIC0yODk3LDYgKzI5MDEsNyBAQCBfYnJpbl9w YXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCS8q IFRyYWNrIHF1ZXJ5IElEICovCiAJcGdzdGF0X3JlcG9ydF9xdWVyeV9pZChicmluc2hhcmVkLT5x dWVyeWlkLCBmYWxzZSk7CisJcGdzdGF0X3JlcG9ydF9wbGFuX2lkKGJyaW5zaGFyZWQtPnBsYW5p ZCwgZmFsc2UpOwogCiAJLyogT3BlbiByZWxhdGlvbnMgd2l0aGluIHdvcmtlciAqLwogCWhlYXBS ZWwgPSB0YWJsZV9vcGVuKGJyaW5zaGFyZWQtPmhlYXByZWxpZCwgaGVhcExvY2ttb2RlKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggN2FiYTg1MmRiOS4uN2Q5MGIyYTk0ZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTEwNyw2ICsxMDcsOSBAQCB0eXBl ZGVmIHN0cnVjdCBCVFNoYXJlZAogCS8qIFF1ZXJ5IElELCBmb3IgcmVwb3J0IGluIHdvcmtlciBw cm9jZXNzZXMgKi8KIAl1aW50NjQJCXF1ZXJ5aWQ7CiAKKwkvKiBQbGFuIElELCBmb3IgcmVwb3J0 IGluIHdvcmtlciBwcm9jZXNzZXMgKi8KKwl1aW50NjQJCXBsYW5pZDsKKwogCS8qCiAJICogd29y a2Vyc2RvbmVjdiBpcyB1c2VkIHRvIG1vbml0b3IgdGhlIHByb2dyZXNzIG9mIHdvcmtlcnMuICBB bGwgcGFyYWxsZWwKIAkgKiBwYXJ0aWNpcGFudHMgbXVzdCBpbmRpY2F0ZSB0aGF0IHRoZXkgYXJl IGRvbmUgYmVmb3JlIGxlYWRlciBjYW4gdXNlCkBAIC0xNTA4LDYgKzE1MTEsNyBAQCBfYnRfYmVn aW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwg aW50IHJlcXVlc3QpCiAJYnRzaGFyZWQtPmlzY29uY3VycmVudCA9IGlzY29uY3VycmVudDsKIAli dHNoYXJlZC0+c2NhbnR1cGxlc29ydHN0YXRlcyA9IHNjYW50dXBsZXNvcnRzdGF0ZXM7CiAJYnRz aGFyZWQtPnF1ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lkKCk7CisJYnRzaGFyZWQtPnBs YW5pZCA9IHBnc3RhdF9nZXRfbXlfcGxhbl9pZCgpOwogCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgm YnRzaGFyZWQtPndvcmtlcnNkb25lY3YpOwogCVNwaW5Mb2NrSW5pdCgmYnRzaGFyZWQtPm11dGV4 KTsKIAkvKiBJbml0aWFsaXplIG11dGFibGUgc3RhdGUgKi8KQEAgLTE3OTMsNiArMTc5Nyw5IEBA IF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykK IAkvKiBUcmFjayBxdWVyeSBJRCAqLwogCXBnc3RhdF9yZXBvcnRfcXVlcnlfaWQoYnRzaGFyZWQt PnF1ZXJ5aWQsIGZhbHNlKTsKIAorCS8qIFRyYWNrIHBsYW4gSUQgKi8KKwlwZ3N0YXRfcmVwb3J0 X3BsYW5faWQoYnRzaGFyZWQtPnBsYW5pZCwgZmFsc2UpOworCiAJLyogT3BlbiByZWxhdGlvbnMg d2l0aGluIHdvcmtlciAqLwogCWhlYXBSZWwgPSB0YWJsZV9vcGVuKGJ0c2hhcmVkLT5oZWFwcmVs aWQsIGhlYXBMb2NrbW9kZSk7CiAJaW5kZXhSZWwgPSBpbmRleF9vcGVuKGJ0c2hhcmVkLT5pbmRl eHJlbGlkLCBpbmRleExvY2ttb2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApp bmRleCA0Njg2OGJmN2U4Li5hNDllZmM2MzMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsCkBAIC04ODUsNiArODg1LDcgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9hY3Rpdml0eSBB UwogICAgICAgICAgICAgUy5iYWNrZW5kX3hpZCwKICAgICAgICAgICAgIHMuYmFja2VuZF94bWlu LAogICAgICAgICAgICAgUy5xdWVyeV9pZCwKKyAgICAgICAgICAgIFMucGxhbl9pZCwKICAgICAg ICAgICAgIFMucXVlcnksCiAgICAgICAgICAgICBTLmJhY2tlbmRfdHlwZQogICAgIEZST00gcGdf c3RhdF9nZXRfYWN0aXZpdHkoTlVMTCkgQVMgUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXgg MjNjZWNkOTljOS4uYTg0OThlMzcwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y3JlYXRlYXMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBAIC0zNyw3 ICszNyw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvdmlldy5oIgogI2luY2x1ZGUgIm5vZGVzL21h a2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgotI2luY2x1ZGUgIm5vZGVz L3F1ZXJ5anVtYmxlLmgiCisjaW5jbHVkZSAibm9kZXMvanVtYmxlLmgiCiAjaW5jbHVkZSAicGFy c2VyL2FuYWx5emUuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5j bHVkZSAidGNvcC90Y29wcHJvdC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGMyNGU2NmY4 MmUuLmQ3MjJiNzA0OGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTk2Niw2ICs5NjYsMjIg QEAgRXhwbGFpblByaW50UGxhbihFeHBsYWluU3RhdGUgKmVzLCBRdWVyeURlc2MgKnF1ZXJ5RGVz YykKIAkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiUXVlcnkgSWRlbnRpZmllciIsIE5VTEwsIChp bnQ2NCkKIAkJCQkJCQkgICBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5xdWVyeUlkLCBlcyk7CiAJ fQorCisJLyoKKwkgKiBDT01QVVRFX1BMQU5fSURfUkVHUkVTUyBtZWFucyBDT01QVVRFX1BMQU5f SURfQVVUTywgYnV0IHdlIGRvbid0IHNob3cKKwkgKiB0aGUgcGxhbmlkIGluIGFueSBvZiB0aGUg RVhQTEFJTiBwbGFucyB0byBrZWVwIHN0YWJsZSB0aGUgcmVzdWx0cworCSAqIGdlbmVyYXRlZCBi eSByZWdyZXNzaW9uIHRlc3Qgc3VpdGVzLgorCSAqLworCWlmIChlcy0+dmVyYm9zZSAmJiBxdWVy eURlc2MtPnBsYW5uZWRzdG10LT5wbGFuSWQgIT0gVUlOVDY0Q09OU1QoMCkgJiYKKwkJY29tcHV0 ZV9wbGFuX2lkICE9IENPTVBVVEVfUExBTl9JRF9SRUdSRVNTKQorCXsKKwkJLyoKKwkJICogT3V0 cHV0IHRoZSBxdWVyeWlkIGFzIGFuIGludDY0IHJhdGhlciB0aGFuIGEgdWludDY0IHNvIHdlIG1h dGNoCisJCSAqIHdoYXQgd291bGQgYmUgc2VlbiBpbiB0aGUgQklHSU5UIHBnX3N0YXRfcGxhbnMu cGxhbmlkIGNvbHVtbi4KKwkJICovCisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlBsYW4gSWRl bnRpZmllciIsIE5VTEwsIChpbnQ2NCkKKwkJCQkJCQkgICBxdWVyeURlc2MtPnBsYW5uZWRzdG10 LT5wbGFuSWQsIGVzKTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4 IGJhNTQwZTNkZTUuLjNhNDYyZDcwOGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC01 NCw3ICs1NCw3IEBACiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFy LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCi0jaW5jbHVkZSAibm9kZXMvcXVlcnlqdW1ibGUu aCIKKyNpbmNsdWRlICJub2Rlcy9qdW1ibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAj aW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9wb3J0YWxjbWRzLmMKaW5kZXggZTdjODE3MWMxMC4uOTI2ZWMyYWYzNiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3BvcnRhbGNtZHMuYwpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9y L2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKLSNpbmNsdWRlICJub2Rlcy9xdWVyeWp1bWJsZS5oIgorI2luY2x1 ZGUgIm5vZGVzL2p1bWJsZS5oIgogI2luY2x1ZGUgInBhcnNlci9hbmFseXplLmgiCiAjaW5jbHVk ZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInRjb3AvcHF1ZXJ5LmgiCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCAwZDkyZTY5NGQ2Li4wZGU1MWQx YTRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTY0LDYgKzY0LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUFZTaGFyZWQKIAlPaWQJCQlyZWxpZDsKIAlpbnQJCQllbGV2ZWw7 CiAJdWludDY0CQlxdWVyeWlkOworCXVpbnQ2NAkJcGxhbmlkOwogCiAJLyoKIAkgKiBGaWVsZHMg Zm9yIGJvdGggaW5kZXggdmFjdXVtIGFuZCBjbGVhbnVwLgpAQCAtMzcxLDYgKzM3Miw3IEBAIHBh cmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBu aW5kZXhlcywKIAlzaGFyZWQtPnJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOwogCXNoYXJl ZC0+ZWxldmVsID0gZWxldmVsOwogCXNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9nZXRfbXlfcXVl cnlfaWQoKTsKKwlzaGFyZWQtPnBsYW5pZCA9IHBnc3RhdF9nZXRfbXlfcGxhbl9pZCgpOwogCXNo YXJlZC0+bWFpbnRlbmFuY2Vfd29ya19tZW1fd29ya2VyID0KIAkJKG5pbmRleGVzX213bSA+IDAp ID8KIAkJbWFpbnRlbmFuY2Vfd29ya19tZW0gLyBNaW4ocGFyYWxsZWxfd29ya2VycywgbmluZGV4 ZXNfbXdtKSA6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCBmYjhkYmEzYWIyLi45ZGRmYTVk ODY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTUwLDcgKzUwLDcgQEAKICNpbmNsdWRl ICJmb3JlaWduL2Zkd2FwaS5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCi0jaW5jbHVkZSAibm9kZXMvcXVlcnlqdW1ibGUuaCIKKyNpbmNsdWRlICJu b2Rlcy9qdW1ibGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNs dWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGZmNGQ5ZGQxYmIuLjIwZWJjMjNiMDAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC0xNzQsNiArMTc0LDcgQEAgRXhlY1Nl cmlhbGl6ZVBsYW4oUGxhbiAqcGxhbiwgRVN0YXRlICplc3RhdGUpCiAJcHN0bXQgPSBtYWtlTm9k ZShQbGFubmVkU3RtdCk7CiAJcHN0bXQtPmNvbW1hbmRUeXBlID0gQ01EX1NFTEVDVDsKIAlwc3Rt dC0+cXVlcnlJZCA9IHBnc3RhdF9nZXRfbXlfcXVlcnlfaWQoKTsKKwlwc3RtdC0+cGxhbklkID0g cGdzdGF0X2dldF9teV9wbGFuX2lkKCk7CiAJcHN0bXQtPmhhc1JldHVybmluZyA9IGZhbHNlOwog CXBzdG10LT5oYXNNb2RpZnlpbmdDVEUgPSBmYWxzZTsKIAlwc3RtdC0+Y2FuU2V0VGFnID0gdHJ1 ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQv bm9kZXMvTWFrZWZpbGUKaW5kZXggNjZiYmFkOGU2ZS4uNTU5MDJiZWUyOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvTWFrZWZp bGUKQEAgLTI3LDYgKzI3LDcgQEAgT0JKUyA9IFwKIAlwYXJhbXMubyBcCiAJcHJpbnQubyBcCiAJ cXVlcnlqdW1ibGVmdW5jcy5vIFwKKwlwbGFuanVtYmxlZnVuY3MubyBcCiAJcmVhZC5vIFwKIAly ZWFkZnVuY3MubyBcCiAJdGlkYml0bWFwLm8gXApAQCAtOTEsNyArOTIsOCBAQCBjb3B5ZnVuY3Mu bzogY29weWZ1bmNzLmMgY29weWZ1bmNzLmZ1bmNzLmMgY29weWZ1bmNzLnN3aXRjaC5jIHwgbm9k ZS1zdXBwb3J0LXN0YQogZXF1YWxmdW5jcy5vOiBlcXVhbGZ1bmNzLmMgZXF1YWxmdW5jcy5mdW5j cy5jIGVxdWFsZnVuY3Muc3dpdGNoLmMgfCBub2RlLXN1cHBvcnQtc3RhbXAKIG91dGZ1bmNzLm86 IG91dGZ1bmNzLmMgb3V0ZnVuY3MuZnVuY3MuYyBvdXRmdW5jcy5zd2l0Y2guYyB8IG5vZGUtc3Vw cG9ydC1zdGFtcAogcXVlcnlqdW1ibGVmdW5jcy5vOiBxdWVyeWp1bWJsZWZ1bmNzLmMgcXVlcnlq dW1ibGVmdW5jcy5mdW5jcy5jIHF1ZXJ5anVtYmxlZnVuY3Muc3dpdGNoLmMgfCBub2RlLXN1cHBv cnQtc3RhbXAKK3BsYW5qdW1ibGVmdW5jcy5vOiBwbGFuanVtYmxlZnVuY3MuYyBwbGFuanVtYmxl ZnVuY3MuZnVuY3MuYyBwbGFuanVtYmxlZnVuY3Muc3dpdGNoLmMgfCBub2RlLXN1cHBvcnQtc3Rh bXAKIHJlYWRmdW5jcy5vOiAgcmVhZGZ1bmNzLmMgcmVhZGZ1bmNzLmZ1bmNzLmMgcmVhZGZ1bmNz LnN3aXRjaC5jIHwgbm9kZS1zdXBwb3J0LXN0YW1wCiAKIGNsZWFuOgotCXJtIC1mIG5vZGUtc3Vw cG9ydC1zdGFtcCAkKGFkZHN1ZmZpeCBmdW5jcy5mdW5jcy5jLGNvcHkgZXF1YWwgb3V0IHF1ZXJ5 anVtYmxlIHJlYWQpICQoYWRkc3VmZml4IGZ1bmNzLnN3aXRjaC5jLGNvcHkgZXF1YWwgb3V0IHF1 ZXJ5anVtYmxlIHJlYWQpIG5vZGV0YWdzLmgKKwlybSAtZiBub2RlLXN1cHBvcnQtc3RhbXAgJChh ZGRzdWZmaXggZnVuY3MuZnVuY3MuYyxjb3B5IGVxdWFsIG91dCBxdWVyeWp1bWJsZSBwbGFuanVt YmxlIHJlYWQpICQoYWRkc3VmZml4IGZ1bmNzLnN3aXRjaC5jLGNvcHkgZXF1YWwgb3V0IHF1ZXJ5 anVtYmxlIHJlYWQpIG5vZGV0YWdzLmgKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2dl bl9ub2RlX3N1cHBvcnQucGwgYi9zcmMvYmFja2VuZC9ub2Rlcy9nZW5fbm9kZV9zdXBwb3J0LnBs CmluZGV4IDdjMDEyYzI3ZjguLjc3YWNiMjRlOGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25v ZGVzL2dlbl9ub2RlX3N1cHBvcnQucGwKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZ2VuX25vZGVf c3VwcG9ydC5wbApAQCAtMTMxLDYgKzEzMSw4IEBAIG15IEBub19yZWFkX3dyaXRlOwogbXkgQHNw ZWNpYWxfcmVhZF93cml0ZTsKICMgbm9kZSB0eXBlcyB3ZSBkb24ndCB3YW50IGFueSBzdXBwb3J0 IGZ1bmN0aW9ucyBmb3IsIGp1c3Qgbm9kZSB0YWdzCiBteSBAbm9kZXRhZ19vbmx5OworIyBub2Rl IHR5cGVzIHdlIGRvbid0IHdhbnQgcGxhbiBqdW1ibGUgc3VwcG9ydCBmb3IKK215IEBub19wbGFu X2p1bWJsZTsKIAogIyB0eXBlcyB0aGF0IGFyZSBjb3BpZWQgYnkgc3RyYWlnaHQgYXNzaWdubWVu dAogbXkgQHNjYWxhcl90eXBlcyA9IHF3KApAQCAtMTY0LDYgKzE2Niw3IEBAIHB1c2ggQG5vZGVf dHlwZXMsIHF3KExpc3QpOwogcHVzaCBAbm9fY29weSwgcXcoTGlzdCk7CiBwdXNoIEBub19lcXVh bCwgcXcoTGlzdCk7CiBwdXNoIEBub19xdWVyeV9qdW1ibGUsIHF3KExpc3QpOworcHVzaCBAbm9f cGxhbl9qdW1ibGUsIHF3KExpc3QpOwogcHVzaCBAc3BlY2lhbF9yZWFkX3dyaXRlLCBxdyhMaXN0 KTsKIAogIyBOb2RlcyB3aXRoIGN1c3RvbSBjb3B5L2VxdWFsIGltcGxlbWVudGF0aW9ucyBhcmUg c2tpcHBlZCBmcm9tCkBAIC0xNzYsNiArMTc5LDkgQEAgbXkgQGN1c3RvbV9yZWFkX3dyaXRlOwog IyBTaW1pbGFybHkgZm9yIGN1c3RvbSBxdWVyeSBqdW1ibGUgaW1wbGVtZW50YXRpb24uCiBteSBA Y3VzdG9tX3F1ZXJ5X2p1bWJsZTsKIAorIyBTaW1pbGFybHkgZm9yIGN1c3RvbSBwbGFuIGp1bWJs ZSBpbXBsZW1lbnRhdGlvbi4KK215IEBjdXN0b21fcGxhbl9qdW1ibGU7CisKICMgVHJhY2sgbm9k ZSB0eXBlcyB3aXRoIG1hbnVhbGx5IGFzc2lnbmVkIE5vZGVUYWcgbnVtYmVycy4KIG15ICVtYW51 YWxfbm9kZXRhZ19udW1iZXI7CiAKQEAgLTM0Niw2ICszNTIsMTAgQEAgZm9yZWFjaCBteSAkaW5m aWxlIChAQVJHVikKIAkJCQkJCXsKIAkJCQkJCQlwdXNoIEBub19xdWVyeV9qdW1ibGUsICRpbl9z dHJ1Y3Q7CiAJCQkJCQl9CisJCQkJCQllbHNpZiAoJGF0dHIgZXEgJ25vX3BsYW5fanVtYmxlJykK KwkJCQkJCXsKKwkJCQkJCQlwdXNoIEBub19wbGFuX2p1bWJsZSwgJGluX3N0cnVjdDsKKwkJCQkJ CX0KIAkJCQkJCWVsc2lmICgkYXR0ciBlcSAnbm9fcmVhZCcpCiAJCQkJCQl7CiAJCQkJCQkJcHVz aCBAbm9fcmVhZCwgJGluX3N0cnVjdDsKQEAgLTQyNCw2ICs0MzQsOCBAQCBmb3JlYWNoIG15ICRp bmZpbGUgKEBBUkdWKQogCQkJCQkJICBpZiBlbGVtICRzdXBlcnR5cGUsIEBub19yZWFkOwogCQkJ CQkJcHVzaCBAbm9fcXVlcnlfanVtYmxlLCAkaW5fc3RydWN0CiAJCQkJCQkgIGlmIGVsZW0gJHN1 cGVydHlwZSwgQG5vX3F1ZXJ5X2p1bWJsZTsKKwkJCQkJCXB1c2ggQG5vX3BsYW5fanVtYmxlLCAk aW5fc3RydWN0CisJCQkJCQkgIGlmIGVsZW0gJHN1cGVydHlwZSwgQG5vX3BsYW5fanVtYmxlOwog CQkJCQl9CiAJCQkJfQogCkBAIC00NzUsNiArNDg3LDcgQEAgZm9yZWFjaCBteSAkaW5maWxlIChA QVJHVikKIAkJCQkJCQkJZXF1YWxfaWdub3JlX2lmX3plcm8KIAkJCQkJCQkJcXVlcnlfanVtYmxl X2lnbm9yZQogCQkJCQkJCQlxdWVyeV9qdW1ibGVfbG9jYXRpb24KKwkJCQkJCQkJcGxhbl9qdW1i bGVfaWdub3JlCiAJCQkJCQkJCXJlYWRfd3JpdGVfaWdub3JlCiAJCQkJCQkJCXdyaXRlX29ubHlf cmVsaWRzCiAJCQkJCQkJCXdyaXRlX29ubHlfbm9uZGVmYXVsdF9wYXRodGFyZ2V0CkBAIC0xMzM5 LDYgKzEzNTIsODggQEAgX2p1bWJsZSR7bn0oSnVtYmxlU3RhdGUgKmpzdGF0ZSwgTm9kZSAqbm9k ZSkKIGNsb3NlICRqZmY7CiBjbG9zZSAkamZzOwogCisjIHBsYW5qdW1ibGVmdW5jcy5jCisKK3B1 c2ggQG91dHB1dF9maWxlcywgJ3BsYW5qdW1ibGVmdW5jcy5mdW5jcy5jJzsKK29wZW4gbXkgJHBq ZmYsICc+JywgIiRvdXRwdXRfcGF0aC9wbGFuanVtYmxlZnVuY3MuZnVuY3MuYyR0bXBleHQiIG9y IGRpZSAkITsKK3B1c2ggQG91dHB1dF9maWxlcywgJ3BsYW5qdW1ibGVmdW5jcy5zd2l0Y2guYyc7 CitvcGVuIG15ICRwamZzLCAnPicsICIkb3V0cHV0X3BhdGgvcGxhbmp1bWJsZWZ1bmNzLnN3aXRj aC5jJHRtcGV4dCIgb3IgZGllICQhOworCitwcmludGYgJHBqZmYgJGhlYWRlcl9jb21tZW50LCAn cGxhbmp1bWJsZWZ1bmNzLmZ1bmNzLmMnOworcHJpbnRmICRwamZzICRoZWFkZXJfY29tbWVudCwg J3BsYW5qdW1ibGVmdW5jcy5zd2l0Y2guYyc7CisKK3ByaW50ICRwamZmICRub2RlX2luY2x1ZGVz OworCitmb3JlYWNoIG15ICRuIChAbm9kZV90eXBlcykKK3sKKwluZXh0IGlmIGVsZW0gJG4sIEBh YnN0cmFjdF90eXBlczsKKwluZXh0IGlmIGVsZW0gJG4sIEBub2RldGFnX29ubHk7CisJbXkgJHN0 cnVjdF9ub19wbGFuX2p1bWJsZSA9IChlbGVtICRuLCBAbm9fcGxhbl9qdW1ibGUpOworCisJcHJp bnQgJHBqZnMgIlx0XHRcdGNhc2UgVF8ke259OlxuIgorCSAgLiAiXHRcdFx0XHRfanVtYmxlJHtu fShqc3RhdGUsIGV4cHIpO1xuIgorCSAgLiAiXHRcdFx0XHRicmVhaztcbiIKKwkgIHVubGVzcyAk c3RydWN0X25vX3BsYW5fanVtYmxlOworCisJbmV4dCBpZiBlbGVtICRuLCBAY3VzdG9tX3BsYW5f anVtYmxlOworCisJcHJpbnQgJHBqZmYgIgorc3RhdGljIHZvaWQKK19qdW1ibGUke259KEp1bWJs ZVN0YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpCit7CitcdCR7bn0gKmV4cHIgPSAoJHtufSAqKSBu b2RlO1xuCisiIHVubGVzcyAkc3RydWN0X25vX3BsYW5fanVtYmxlOworCisJIyBwcmludCBpbnN0 cnVjdGlvbnMgZm9yIGVhY2ggZmllbGQKKwlmb3JlYWNoIG15ICRmIChAeyAkbm9kZV90eXBlX2lu Zm97JG59LT57ZmllbGRzfSB9KQorCXsKKwkJbXkgJHQgPSAkbm9kZV90eXBlX2luZm97JG59LT57 ZmllbGRfdHlwZXN9eyRmfTsKKwkJbXkgQGEgPSBAeyAkbm9kZV90eXBlX2luZm97JG59LT57Zmll bGRfYXR0cnN9eyRmfSB9OworCQlteSAkcGxhbl9qdW1ibGVfaWdub3JlID0gJHN0cnVjdF9ub19w bGFuX2p1bWJsZTsKKworCQkjIGV4dHJhY3QgcGVyLWZpZWxkIGF0dHJpYnV0ZXMKKwkJZm9yZWFj aCBteSAkYSAoQGEpCisJCXsKKwkJCWlmICgkYSBlcSAncGxhbl9qdW1ibGVfaWdub3JlJykKKwkJ CXsKKwkJCQkkcGxhbl9qdW1ibGVfaWdub3JlID0gMTsKKwkJCX0KKwkJfQorCisJCSMgbm9kZSB0 eXBlCisJCWlmICgoJHQgPX4gL14oXHcrKVwqJC8gb3IgJHQgPX4gL15zdHJ1Y3RccysoXHcrKVwq JC8pCisJCQlhbmQgZWxlbSAkMSwgQG5vZGVfdHlwZXMpCisJCXsKKwkJCXByaW50ICRwamZmICJc dEpVTUJMRV9OT0RFKCRmKTtcbiIKKwkJCSAgdW5sZXNzICRwbGFuX2p1bWJsZV9pZ25vcmU7CisJ CX0KKwkJZWxzaWYgKCR0IGVxICdjaGFyKicpCisJCXsKKwkJCXByaW50ICRwamZmICJcdEpVTUJM RV9TVFJJTkcoJGYpO1xuIgorCQkJICB1bmxlc3MgJHBsYW5fanVtYmxlX2lnbm9yZTsKKwkJfQor CQllbHNlCisJCXsKKwkJCXByaW50ICRwamZmICJcdEpVTUJMRV9GSUVMRCgkZik7XG4iCisJCQkg IHVubGVzcyAkcGxhbl9qdW1ibGVfaWdub3JlOworCQl9CisJfQorCisJIyBTb21lIG5vZGVzIGhh dmUgbm8gYXR0cmlidXRlcyBsaWtlIENoZWNrUG9pbnRTdG10LAorCSMgc28gdHdlYWsgdGhpbmdz IGZvciBlbXB0eSBjb250ZW50cy4KKwlpZiAoc2NhbGFyKEB7ICRub2RlX3R5cGVfaW5mb3skbn0t PntmaWVsZHN9IH0pID09IDApCisJeworCQlwcmludCAkcGpmZiAiXHQodm9pZCkgZXhwcjtcbiIK KwkJICB1bmxlc3MgJHN0cnVjdF9ub19wbGFuX2p1bWJsZTsKKwl9CisKKwlwcmludCAkcGpmZiAi fQorIiB1bmxlc3MgJHN0cnVjdF9ub19wbGFuX2p1bWJsZTsKK30KKworY2xvc2UgJHBqZmY7Citj bG9zZSAkcGpmczsKKwogIyBub3cgcmVuYW1lIHRoZSB0ZW1wb3JhcnkgZmlsZXMgdG8gdGhlaXIg ZmluYWwgbmFtZXMKIGZvcmVhY2ggbXkgJGZpbGUgKEBvdXRwdXRfZmlsZXMpCiB7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9wbGFuanVtYmxlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25v ZGVzL3BsYW5qdW1ibGVmdW5jcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLjYwODAzODJjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9wbGFu anVtYmxlZnVuY3MuYwpAQCAtMCwwICsxLDIyMCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor ICogcGxhbmp1bWJsZWZ1bmNzLmMKKyAqCSBQbGFuIGZpbmdlcnByaW50aW5nLgorICoKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRo ZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAq CSAgc3JjL2JhY2tlbmQvbm9kZXMvcGxhbmp1bWJsZWZ1bmNzLmMKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJjb21tb24vaGFz aGZuLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvanVtYmxlLmgi CisjaW5jbHVkZSAicGFyc2VyL3NjYW5zdXAuaCIKKyNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0 YXR1cy5oIgorCisjZGVmaW5lIEpVTUJMRV9TSVpFCQkJCTEwMjQJLyogcXVlcnkgc2VyaWFsaXph dGlvbiBidWZmZXIgc2l6ZSAqLworCisvKiBHVUMgcGFyYW1ldGVycyAqLworaW50CQkJY29tcHV0 ZV9wbGFuX2lkID0gQ09NUFVURV9QTEFOX0lEX0FVVE87CisKKy8qCisgKiBUcnVlIHdoZW4gY29t cHV0ZV9wbGFuX2lkIGlzIE9OIG9yIEFVVE8sIGFuZCBhIG1vZHVsZSByZXF1ZXN0cyB0aGVtLgor ICoKKyAqIE5vdGUgdGhhdCBJc1BsYW5JZEVuYWJsZWQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFk IG9mIGNoZWNraW5nCisgKiBwbGFuX2lkX2VuYWJsZWQgb3IgY29tcHV0ZV9wbGFuX2lkIGRpcmVj dGx5IHdoZW4gd2Ugd2FudCB0byBrbm93CisgKiB3aGV0aGVyIHBsYW4gaWRlbnRpZmllcnMgYXJl IGNvbXB1dGVkIGluIHRoZSBjb3JlIG9yIG5vdC4KKyAqLworYm9vbAkJcGxhbl9pZF9lbmFibGVk ID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkIEFwcGVuZEp1bWJsZShKdW1ibGVTdGF0ZSAqanN0YXRl LAorCQkJCQkJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKml0ZW0sIFNpemUgc2l6ZSk7CitzdGF0aWMg dm9pZCBfanVtYmxlTm9kZShKdW1ibGVTdGF0ZSAqanN0YXRlLCBOb2RlICpub2RlKTsKK3N0YXRp YyB2b2lkIF9qdW1ibGVMaXN0KEp1bWJsZVN0YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpOworCitK dW1ibGVTdGF0ZSAqCitKdW1ibGVQbGFuKFBsYW5uZWRTdG10ICpwcykKK3sKKwlKdW1ibGVTdGF0 ZSAqanN0YXRlID0gTlVMTDsKKworCUFzc2VydChJc1BsYW5JZEVuYWJsZWQoKSk7CisKKwlqc3Rh dGUgPSAoSnVtYmxlU3RhdGUgKikgcGFsbG9jKHNpemVvZihKdW1ibGVTdGF0ZSkpOworCisJLyog U2V0IHVwIHdvcmtzcGFjZSBmb3IgcXVlcnkganVtYmxpbmcgKi8KKwlqc3RhdGUtPmp1bWJsZSA9 ICh1bnNpZ25lZCBjaGFyICopIHBhbGxvYyhKVU1CTEVfU0laRSk7CisJanN0YXRlLT5qdW1ibGVf bGVuID0gMDsKKwlqc3RhdGUtPmNsb2NhdGlvbnNfYnVmX3NpemUgPSAzMjsKKwlqc3RhdGUtPmNs b2NhdGlvbnMgPSAoTG9jYXRpb25MZW4gKikKKwkJcGFsbG9jKGpzdGF0ZS0+Y2xvY2F0aW9uc19i dWZfc2l6ZSAqIHNpemVvZihMb2NhdGlvbkxlbikpOworCWpzdGF0ZS0+Y2xvY2F0aW9uc19jb3Vu dCA9IDA7CisJanN0YXRlLT5oaWdoZXN0X2V4dGVybl9wYXJhbV9pZCA9IDA7CisKKwkvKiBDb21w dXRlIHF1ZXJ5IElEIGFuZCBtYXJrIHRoZSBRdWVyeSBub2RlIHdpdGggaXQgKi8KKwlfanVtYmxl Tm9kZShqc3RhdGUsIChOb2RlICopIHBzLT5wbGFuVHJlZSk7CisJcHMtPnBsYW5JZCA9IERhdHVt R2V0VUludDY0KGhhc2hfYW55X2V4dGVuZGVkKGpzdGF0ZS0+anVtYmxlLAorCQkJCQkJCQkJCQkJ ICBqc3RhdGUtPmp1bWJsZV9sZW4sCisJCQkJCQkJCQkJCQkgIDApKTsKKwlwZ3N0YXRfcmVwb3J0 X3BsYW5faWQocHMtPnBsYW5JZCwgZmFsc2UpOworCisJcmV0dXJuIGpzdGF0ZTsKK30KKworLyoK KyAqIEVuYWJsZXMgcGxhbiBpZGVudGlmaWVyIGNvbXB1dGF0aW9uLgorICoKKyAqIFRoaXJkLXBh cnR5IHBsdWdpbnMgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGluZm9ybSBjb3JlIHRoYXQgdGhl eSByZXF1aXJlCisgKiBhIHBsYW4gaWRlbnRpZmllciB0byBiZSBjb21wdXRlZC4KKyAqLwordm9p ZAorRW5hYmxlUGxhbklkKHZvaWQpCit7CisJaWYgKGNvbXB1dGVfcGxhbl9pZCAhPSBDT01QVVRF X1BMQU5fSURfT0ZGKQorCQlwbGFuX2lkX2VuYWJsZWQgPSB0cnVlOworfQorCisvKgorICogQXBw ZW5kSnVtYmxlOiBBcHBlbmQgYSB2YWx1ZSB0aGF0IGlzIHN1YnN0YW50aXZlIGluIGEgZ2l2ZW4g cXVlcnkgdG8KKyAqIHRoZSBjdXJyZW50IGp1bWJsZS4KKyAqLworc3RhdGljIHZvaWQKK0FwcGVu ZEp1bWJsZShKdW1ibGVTdGF0ZSAqanN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppdGVtLCBT aXplIHNpemUpCit7CisJdW5zaWduZWQgY2hhciAqanVtYmxlID0ganN0YXRlLT5qdW1ibGU7CisJ U2l6ZQkJanVtYmxlX2xlbiA9IGpzdGF0ZS0+anVtYmxlX2xlbjsKKworCS8qCisJICogV2hlbmV2 ZXIgdGhlIGp1bWJsZSBidWZmZXIgaXMgZnVsbCwgd2UgaGFzaCB0aGUgY3VycmVudCBjb250ZW50 cyBhbmQKKwkgKiByZXNldCB0aGUgYnVmZmVyIHRvIGNvbnRhaW4ganVzdCB0aGF0IGhhc2ggdmFs dWUsIHRodXMgcmVseWluZyBvbiB0aGUKKwkgKiBoYXNoIHRvIHN1bW1hcml6ZSBldmVyeXRoaW5n IHNvIGZhci4KKwkgKi8KKwl3aGlsZSAoc2l6ZSA+IDApCisJeworCQlTaXplCQlwYXJ0X3NpemU7 CisKKwkJaWYgKGp1bWJsZV9sZW4gPj0gSlVNQkxFX1NJWkUpCisJCXsKKwkJCXVpbnQ2NAkJc3Rh cnRfaGFzaDsKKworCQkJc3RhcnRfaGFzaCA9IERhdHVtR2V0VUludDY0KGhhc2hfYW55X2V4dGVu ZGVkKGp1bWJsZSwKKwkJCQkJCQkJCQkJCQkJICBKVU1CTEVfU0laRSwgMCkpOworCQkJbWVtY3B5 KGp1bWJsZSwgJnN0YXJ0X2hhc2gsIHNpemVvZihzdGFydF9oYXNoKSk7CisJCQlqdW1ibGVfbGVu ID0gc2l6ZW9mKHN0YXJ0X2hhc2gpOworCQl9CisJCXBhcnRfc2l6ZSA9IE1pbihzaXplLCBKVU1C TEVfU0laRSAtIGp1bWJsZV9sZW4pOworCQltZW1jcHkoanVtYmxlICsganVtYmxlX2xlbiwgaXRl bSwgcGFydF9zaXplKTsKKwkJanVtYmxlX2xlbiArPSBwYXJ0X3NpemU7CisJCWl0ZW0gKz0gcGFy dF9zaXplOworCQlzaXplIC09IHBhcnRfc2l6ZTsKKwl9CisJanN0YXRlLT5qdW1ibGVfbGVuID0g anVtYmxlX2xlbjsKK30KKworI2RlZmluZSBKVU1CTEVfTk9ERShpdGVtKSBcCisJX2p1bWJsZU5v ZGUoanN0YXRlLCAoTm9kZSAqKSBleHByLT5pdGVtKQorI2RlZmluZSBKVU1CTEVfTE9DQVRJT04o bG9jYXRpb24pIFwKKwlSZWNvcmRDb25zdExvY2F0aW9uKGpzdGF0ZSwgZXhwci0+bG9jYXRpb24p CisjZGVmaW5lIEpVTUJMRV9GSUVMRChpdGVtKSBcCisJQXBwZW5kSnVtYmxlKGpzdGF0ZSwgKGNv bnN0IHVuc2lnbmVkIGNoYXIgKikgJihleHByLT5pdGVtKSwgc2l6ZW9mKGV4cHItPml0ZW0pKQor I2RlZmluZSBKVU1CTEVfRklFTERfU0lOR0xFKGl0ZW0pIFwKKwlBcHBlbmRKdW1ibGUoanN0YXRl LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAmKGl0ZW0pLCBzaXplb2YoaXRlbSkpCisjZGVmaW5l IEpVTUJMRV9TVFJJTkcoc3RyKSBcCitkbyB7IFwKKwlpZiAoZXhwci0+c3RyKSBcCisJCUFwcGVu ZEp1bWJsZShqc3RhdGUsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIChleHByLT5zdHIpLCBzdHJs ZW4oZXhwci0+c3RyKSArIDEpOyBcCit9IHdoaWxlKDApCisKKyNpbmNsdWRlICJwbGFuanVtYmxl ZnVuY3MuZnVuY3MuYyIKKworc3RhdGljIHZvaWQKK19qdW1ibGVOb2RlKEp1bWJsZVN0YXRlICpq c3RhdGUsIE5vZGUgKm5vZGUpCit7CisJTm9kZQkgICAqZXhwciA9IG5vZGU7CisKKwlpZiAoZXhw ciA9PSBOVUxMKQorCQlyZXR1cm47CisKKwkvKiBHdWFyZCBhZ2FpbnN0IHN0YWNrIG92ZXJmbG93 IGR1ZSB0byBvdmVybHkgY29tcGxleCBleHByZXNzaW9ucyAqLworCWNoZWNrX3N0YWNrX2RlcHRo KCk7CisKKwkvKgorCSAqIFdlIGFsd2F5cyBlbWl0IHRoZSBub2RlJ3MgTm9kZVRhZywgdGhlbiBh bnkgYWRkaXRpb25hbCBmaWVsZHMgdGhhdCBhcmUKKwkgKiBjb25zaWRlcmVkIHNpZ25pZmljYW50 LCBhbmQgdGhlbiB3ZSByZWN1cnNlIHRvIGFueSBjaGlsZCBub2Rlcy4KKwkgKi8KKwlKVU1CTEVf RklFTEQodHlwZSk7CisKKwlzd2l0Y2ggKG5vZGVUYWcoZXhwcikpCisJeworI2luY2x1ZGUgInBs YW5qdW1ibGVmdW5jcy5zd2l0Y2guYyIKKworCQljYXNlIFRfTGlzdDoKKwkJY2FzZSBUX0ludExp c3Q6CisJCWNhc2UgVF9PaWRMaXN0OgorCQljYXNlIFRfWGlkTGlzdDoKKwkJCV9qdW1ibGVMaXN0 KGpzdGF0ZSwgZXhwcik7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCS8qIE9ubHkgYSB3YXJu aW5nLCBzaW5jZSB3ZSBjYW4gc3R1bWJsZSBhbG9uZyBhbnl3YXkgKi8KKwkJCWVsb2coV0FSTklO RywgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwKKwkJCQkgKGludCkgbm9kZVRhZyhleHBy KSk7CisJCQlicmVhazsKKwl9CisKKwkvKiBTcGVjaWFsIGNhc2VzIHRvIGhhbmRsZSBvdXRzaWRl IHRoZSBhdXRvbWF0ZWQgY29kZSAqLworCXN3aXRjaCAobm9kZVRhZyhleHByKSkKKwl7CisJCWNh c2UgVF9QYXJhbToKKwkJCXsKKwkJCQlQYXJhbQkgICAqcCA9IChQYXJhbSAqKSBub2RlOworCisJ CQkJLyoKKwkJCQkgKiBVcGRhdGUgdGhlIGhpZ2hlc3QgUGFyYW0gaWQgc2VlbiwgaW4gb3JkZXIg dG8gc3RhcnQKKwkJCQkgKiBub3JtYWxpemF0aW9uIGNvcnJlY3RseS4KKwkJCQkgKi8KKwkJCQlp ZiAocC0+cGFyYW1raW5kID09IFBBUkFNX0VYVEVSTiAmJgorCQkJCQlwLT5wYXJhbWlkID4ganN0 YXRlLT5oaWdoZXN0X2V4dGVybl9wYXJhbV9pZCkKKwkJCQkJanN0YXRlLT5oaWdoZXN0X2V4dGVy bl9wYXJhbV9pZCA9IHAtPnBhcmFtaWQ7CisJCQl9CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJ CWJyZWFrOworCX0KK30KKworc3RhdGljIHZvaWQKK19qdW1ibGVMaXN0KEp1bWJsZVN0YXRlICpq c3RhdGUsIE5vZGUgKm5vZGUpCit7CisJTGlzdAkgICAqZXhwciA9IChMaXN0ICopIG5vZGU7CisJ TGlzdENlbGwgICAqbDsKKworCXN3aXRjaCAoZXhwci0+dHlwZSkKKwl7CisJCWNhc2UgVF9MaXN0 OgorCQkJZm9yZWFjaChsLCBleHByKQorCQkJCV9qdW1ibGVOb2RlKGpzdGF0ZSwgbGZpcnN0KGwp KTsKKwkJCWJyZWFrOworCQljYXNlIFRfSW50TGlzdDoKKwkJCWZvcmVhY2gobCwgZXhwcikKKwkJ CQlKVU1CTEVfRklFTERfU0lOR0xFKGxmaXJzdF9pbnQobCkpOworCQkJYnJlYWs7CisJCWNhc2Ug VF9PaWRMaXN0OgorCQkJZm9yZWFjaChsLCBleHByKQorCQkJCUpVTUJMRV9GSUVMRF9TSU5HTEUo bGZpcnN0X29pZChsKSk7CisJCQlicmVhazsKKwkJY2FzZSBUX1hpZExpc3Q6CisJCQlmb3JlYWNo KGwsIGV4cHIpCisJCQkJSlVNQkxFX0ZJRUxEX1NJTkdMRShsZmlyc3RfeGlkKGwpKTsKKwkJCWJy ZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBsaXN0IG5vZGUg dHlwZTogJWQiLAorCQkJCSAoaW50KSBleHByLT50eXBlKTsKKwkJCXJldHVybjsKKwl9Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMKaW5kZXggYjEwM2EyODE5My4uOWEzZmMwNDc4 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYwpAQCAtMzQsNyArMzQsNyBAQAog CiAjaW5jbHVkZSAiY29tbW9uL2hhc2hmbi5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgotI2lu Y2x1ZGUgIm5vZGVzL3F1ZXJ5anVtYmxlLmgiCisjaW5jbHVkZSAibm9kZXMvanVtYmxlLmgiCiAj aW5jbHVkZSAicGFyc2VyL3NjYW5zdXAuaCIKIAogI2RlZmluZSBKVU1CTEVfU0laRQkJCQkxMDI0 CS8qIHF1ZXJ5IHNlcmlhbGl6YXRpb24gYnVmZmVyIHNpemUgKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5uZXIuYwppbmRleCA2ODAzZWRkMDg1Li5lMGRmMTVmZTBkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0zNyw2ICszNyw3IEBACiAjaWZkZWYgT1BUSU1JWkVS X0RFQlVHCiAjaW5jbHVkZSAibm9kZXMvcHJpbnQuaCIKICNlbmRpZgorI2luY2x1ZGUgIm5vZGVz L2p1bWJsZS5oIgogI2luY2x1ZGUgIm5vZGVzL3N1cHBvcnRub2Rlcy5oIgogI2luY2x1ZGUgIm9w dGltaXplci9hcHBlbmRpbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2NsYXVzZXMuaCIKQEAg LTU2OSw2ICs1NzAsNyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hh ciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPnV0aWxpdHlTdG10 ID0gcGFyc2UtPnV0aWxpdHlTdG10OwogCXJlc3VsdC0+c3RtdF9sb2NhdGlvbiA9IHBhcnNlLT5z dG10X2xvY2F0aW9uOwogCXJlc3VsdC0+c3RtdF9sZW4gPSBwYXJzZS0+c3RtdF9sZW47CisJcmVz dWx0LT5wbGFuSWQgPSBVSU5UNjRDT05TVCgwKTsKIAogCXJlc3VsdC0+aml0RmxhZ3MgPSBQR0pJ VF9OT05FOwogCWlmIChqaXRfZW5hYmxlZCAmJiBqaXRfYWJvdmVfY29zdCA+PSAwICYmCkBAIC01 OTgsNiArNjAwLDkgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIg KnF1ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJaWYgKGdsb2ItPnBhcnRpdGlvbl9k aXJlY3RvcnkgIT0gTlVMTCkKIAkJRGVzdHJveVBhcnRpdGlvbkRpcmVjdG9yeShnbG9iLT5wYXJ0 aXRpb25fZGlyZWN0b3J5KTsKIAorCWlmIChJc1BsYW5JZEVuYWJsZWQoKSkKKwkJSnVtYmxlUGxh bihyZXN1bHQpOworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXgg NzZmNThiM2FjYS4uY2QyMzU5MjFiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2Fu YWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC0zMSw3ICszMSw3 IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgi CiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCi0jaW5jbHVkZSAibm9kZXMvcXVlcnlqdW1i bGUuaCIKKyNpbmNsdWRlICJub2Rlcy9qdW1ibGUuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0 aW1pemVyLmgiCiAjaW5jbHVkZSAicGFyc2VyL2FuYWx5emUuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VfYWdnLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9i YWNrZW5kLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMKaW5kZXgg YTk3YTFlZGE2ZC4uM2QzNDc4NGMwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9sYXVuY2hfYmFja2VuZC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2Jh Y2tlbmQuYwpAQCAtNTMsNyArNTMsNyBAQAogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAK ICNpZmRlZiBFWEVDX0JBQ0tFTkQKLSNpbmNsdWRlICJub2Rlcy9xdWVyeWp1bWJsZS5oIgorI2lu Y2x1ZGUgIm5vZGVzL2p1bWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKICNp bmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNlbmRpZgpAQCAtMTE1LDYgKzExNSw3IEBAIHR5cGVk ZWYgc3RydWN0CiAJYm9vbAkJcmVkaXJlY3Rpb25fZG9uZTsKIAlib29sCQlJc0JpbmFyeVVwZ3Jh ZGU7CiAJYm9vbAkJcXVlcnlfaWRfZW5hYmxlZDsKKwlib29sCQlwbGFuX2lkX2VuYWJsZWQ7CiAJ aW50CQkJbWF4X3NhZmVfZmRzOwogCWludAkJCU1heEJhY2tlbmRzOwogCWludAkJCW51bV9wbWNo aWxkX3Nsb3RzOwpAQCAtNzQ0LDYgKzc0NSw3IEBAIHNhdmVfYmFja2VuZF92YXJpYWJsZXMoQmFj a2VuZFBhcmFtZXRlcnMgKnBhcmFtLAogCXBhcmFtLT5yZWRpcmVjdGlvbl9kb25lID0gcmVkaXJl Y3Rpb25fZG9uZTsKIAlwYXJhbS0+SXNCaW5hcnlVcGdyYWRlID0gSXNCaW5hcnlVcGdyYWRlOwog CXBhcmFtLT5xdWVyeV9pZF9lbmFibGVkID0gcXVlcnlfaWRfZW5hYmxlZDsKKwlwYXJhbS0+cGxh bl9pZF9lbmFibGVkID0gcGxhbl9pZF9lbmFibGVkOwogCXBhcmFtLT5tYXhfc2FmZV9mZHMgPSBt YXhfc2FmZV9mZHM7CiAKIAlwYXJhbS0+TWF4QmFja2VuZHMgPSBNYXhCYWNrZW5kczsKQEAgLTEw MDQsNiArMTAwNiw3IEBAIHJlc3RvcmVfYmFja2VuZF92YXJpYWJsZXMoQmFja2VuZFBhcmFtZXRl cnMgKnBhcmFtKQogCXJlZGlyZWN0aW9uX2RvbmUgPSBwYXJhbS0+cmVkaXJlY3Rpb25fZG9uZTsK IAlJc0JpbmFyeVVwZ3JhZGUgPSBwYXJhbS0+SXNCaW5hcnlVcGdyYWRlOwogCXF1ZXJ5X2lkX2Vu YWJsZWQgPSBwYXJhbS0+cXVlcnlfaWRfZW5hYmxlZDsKKwlwbGFuX2lkX2VuYWJsZWQgPSBwYXJh bS0+cGxhbl9pZF9lbmFibGVkOwogCW1heF9zYWZlX2ZkcyA9IHBhcmFtLT5tYXhfc2FmZV9mZHM7 CiAKIAlNYXhCYWNrZW5kcyA9IHBhcmFtLT5NYXhCYWNrZW5kczsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRl eCA1NjU1MzQ4YTJlLi41ODdmMTY0YjU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xMTA2LDYgKzEx MDYsNyBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcpCiAJCXNp emVfdAkJY21kdGFnbGVuOwogCiAJCXBnc3RhdF9yZXBvcnRfcXVlcnlfaWQoMCwgdHJ1ZSk7CisJ CXBnc3RhdF9yZXBvcnRfcGxhbl9pZCgwLCB0cnVlKTsKIAogCQkvKgogCQkgKiBHZXQgdGhlIGNv bW1hbmQgbmFtZSBmb3IgdXNlIGluIHN0YXR1cyBkaXNwbGF5IChpdCBhbHNvIGJlY29tZXMgdGhl CkBAIC0yMTYzLDYgKzIxNjQsNyBAQCBleGVjX2V4ZWN1dGVfbWVzc2FnZShjb25zdCBjaGFyICpw b3J0YWxfbmFtZSwgbG9uZyBtYXhfcm93cykKIAkJaWYgKHN0bXQtPnF1ZXJ5SWQgIT0gVUlOVDY0 Q09OU1QoMCkpCiAJCXsKIAkJCXBnc3RhdF9yZXBvcnRfcXVlcnlfaWQoc3RtdC0+cXVlcnlJZCwg ZmFsc2UpOworCQkJcGdzdGF0X3JlcG9ydF9wbGFuX2lkKHN0bXQtPnBsYW5JZCwgZmFsc2UpOwog CQkJYnJlYWs7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9iYWNrZW5kX3N0YXR1cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9z dGF0dXMuYwppbmRleCA3MzEzNDI3OTlhLi43Y2NiMmM2YzZjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMKQEAgLTM3OSw2ICszNzksNyBAQCBwZ3N0YXRf YmVzdGFydCh2b2lkKQogCWxiZWVudHJ5LnN0X3Byb2dyZXNzX2NvbW1hbmQgPSBQUk9HUkVTU19D T01NQU5EX0lOVkFMSUQ7CiAJbGJlZW50cnkuc3RfcHJvZ3Jlc3NfY29tbWFuZF90YXJnZXQgPSBJ bnZhbGlkT2lkOwogCWxiZWVudHJ5LnN0X3F1ZXJ5X2lkID0gVUlOVDY0Q09OU1QoMCk7CisJbGJl ZW50cnkuc3RfcGxhbl9pZCA9IFVJTlQ2NENPTlNUKDApOwogCiAJLyoKIAkgKiB3ZSBkb24ndCB6 ZXJvIHN0X3Byb2dyZXNzX3BhcmFtIGhlcmUgdG8gc2F2ZSBjeWNsZXM7IG5vYm9keSBzaG91bGQK QEAgLTUzMyw2ICs1MzQsNyBAQCBwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KEJhY2tlbmRTdGF0ZSBz dGF0ZSwgY29uc3QgY2hhciAqY21kX3N0cikKIAkJCS8qIHN0X3hhY3Rfc3RhcnRfdGltZXN0YW1w IGFuZCB3YWl0X2V2ZW50X2luZm8gYXJlIGFsc28gZGlzYWJsZWQgKi8KIAkJCWJlZW50cnktPnN0 X3hhY3Rfc3RhcnRfdGltZXN0YW1wID0gMDsKIAkJCWJlZW50cnktPnN0X3F1ZXJ5X2lkID0gVUlO VDY0Q09OU1QoMCk7CisJCQliZWVudHJ5LT5zdF9wbGFuX2lkID0gVUlOVDY0Q09OU1QoMCk7CiAJ CQlwcm9jLT53YWl0X2V2ZW50X2luZm8gPSAwOwogCQkJUEdTVEFUX0VORF9XUklURV9BQ1RJVklU WShiZWVudHJ5KTsKIAkJfQpAQCAtNTkzLDcgKzU5NSwxMCBAQCBwZ3N0YXRfcmVwb3J0X2FjdGl2 aXR5KEJhY2tlbmRTdGF0ZSBzdGF0ZSwgY29uc3QgY2hhciAqY21kX3N0cikKIAkgKiBpZGVudGlm aWVyLgogCSAqLwogCWlmIChzdGF0ZSA9PSBTVEFURV9SVU5OSU5HKQorCXsKIAkJYmVlbnRyeS0+ c3RfcXVlcnlfaWQgPSBVSU5UNjRDT05TVCgwKTsKKwkJYmVlbnRyeS0+c3RfcGxhbl9pZCA9IFVJ TlQ2NENPTlNUKDApOworCX0KIAogCWlmIChjbWRfc3RyICE9IE5VTEwpCiAJewpAQCAtNjQ0LDYg KzY0OSw0NCBAQCBwZ3N0YXRfcmVwb3J0X3F1ZXJ5X2lkKHVpbnQ2NCBxdWVyeV9pZCwgYm9vbCBm b3JjZSkKIAlQR1NUQVRfRU5EX1dSSVRFX0FDVElWSVRZKGJlZW50cnkpOwogfQogCisvKiAtLS0t LS0tLQorICogcGdzdGF0X3JlcG9ydF9wbGFuX2lkKCkgLQorICoKKyAqIENhbGxlZCB0byB1cGRh dGUgdG9wLWxldmVsIHBsYW4gaWRlbnRpZmllci4KKyAqIC0tLS0tLS0tCisgKi8KK3ZvaWQKK3Bn c3RhdF9yZXBvcnRfcGxhbl9pZCh1aW50NjQgcGxhbl9pZCwgYm9vbCBmb3JjZSkKK3sKKwl2b2xh dGlsZSBQZ0JhY2tlbmRTdGF0dXMgKmJlZW50cnkgPSBNeUJFRW50cnk7CisKKwkvKgorCSAqIGlm IHRyYWNrX2FjdGl2aXRpZXMgaXMgZGlzYWJsZWQsIHN0X3BsYW5faWQgc2hvdWxkIGFscmVhZHkg aGF2ZSBiZWVuCisJICogcmVzZXQKKwkgKi8KKwlpZiAoIWJlZW50cnkgfHwgIXBnc3RhdF90cmFj a19hY3Rpdml0aWVzKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFdlIG9ubHkgcmVwb3J0IHRoZSB0 b3AtbGV2ZWwgcGxhbiBpZGVudGlmaWVycy4gIFRoZSBzdG9yZWQgcGxhbl9pZCBpcworCSAqIHJl c2V0IHdoZW4gYSBiYWNrZW5kIGNhbGxzIHBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVO TklORyksIG9yCisJICogd2l0aCBhbiBleHBsaWNpdCBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gdXNp bmcgdGhlIGZvcmNlIGZsYWcuICBJZiB0aGUKKwkgKiBzYXZlZCBwbGFuIGlkZW50aWZpZXIgaXMg bm90IHplcm8gaXQgbWVhbnMgdGhhdCBpdCdzIG5vdCBhIHRvcC1sZXZlbAorCSAqIGNvbW1hbmQs IHNvIGlnbm9yZSB0aGUgb25lIHByb3ZpZGVkIHVubGVzcyBpdCdzIGFuIGV4cGxpY2l0IGNhbGwg dG8KKwkgKiByZXNldCB0aGUgaWRlbnRpZmllci4KKwkgKi8KKwlpZiAoYmVlbnRyeS0+c3RfcGxh bl9pZCAhPSAwICYmICFmb3JjZSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBVcGRhdGUgbXkgc3Rh dHVzIGVudHJ5LCBmb2xsb3dpbmcgdGhlIHByb3RvY29sIG9mIGJ1bXBpbmcKKwkgKiBzdF9jaGFu Z2Vjb3VudCBiZWZvcmUgYW5kIGFmdGVyLiAgV2UgdXNlIGEgdm9sYXRpbGUgcG9pbnRlciBoZXJl IHRvCisJICogZW5zdXJlIHRoZSBjb21waWxlciBkb2Vzbid0IHRyeSB0byBnZXQgY3V0ZS4KKwkg Ki8KKwlQR1NUQVRfQkVHSU5fV1JJVEVfQUNUSVZJVFkoYmVlbnRyeSk7CisJYmVlbnRyeS0+c3Rf cGxhbl9pZCA9IHBsYW5faWQ7CisJUEdTVEFUX0VORF9XUklURV9BQ1RJVklUWShiZWVudHJ5KTsK K30KIAogLyogLS0tLS0tLS0tLQogICogcGdzdGF0X3JlcG9ydF9hcHBuYW1lKCkgLQpAQCAtMTA0 MCw2ICsxMDgzLDI2IEBAIHBnc3RhdF9nZXRfbXlfcXVlcnlfaWQodm9pZCkKIAlyZXR1cm4gTXlC RUVudHJ5LT5zdF9xdWVyeV9pZDsKIH0KIAorLyogLS0tLS0tLS0tLQorICogcGdzdGF0X2dldF9t eV9wbGFuX2lkKCkgLQorICoKKyAqIFJldHVybiBjdXJyZW50IGJhY2tlbmQncyBxdWVyeSBpZGVu dGlmaWVyLgorICovCit1aW50NjQKK3Bnc3RhdF9nZXRfbXlfcGxhbl9pZCh2b2lkKQoreworCWlm ICghTXlCRUVudHJ5KQorCQlyZXR1cm4gMDsKKworCS8qCisJICogVGhlcmUncyBubyBuZWVkIGZv ciBhIGxvY2sgYXJvdW5kIHBnc3RhdF9iZWdpbl9yZWFkX2FjdGl2aXR5IC8KKwkgKiBwZ3N0YXRf ZW5kX3JlYWRfYWN0aXZpdHkgaGVyZSBhcyBpdCdzIG9ubHkgY2FsbGVkIGZyb20KKwkgKiBwZ19z dGF0X2dldF9hY3Rpdml0eSB3aGljaCBpcyBhbHJlYWR5IHByb3RlY3RlZCwgb3IgZnJvbSB0aGUg c2FtZQorCSAqIGJhY2tlbmQgd2hpY2ggbWVhbnMgdGhhdCB0aGVyZSB3b24ndCBiZSBjb25jdXJy ZW50IHdyaXRlcy4KKwkgKi8KKwlyZXR1cm4gTXlCRUVudHJ5LT5zdF9wbGFuX2lkOworfQorCiAv KiAtLS0tLS0tLS0tCiAgKiBwZ3N0YXRfZ2V0X2JhY2tlbmRfdHlwZV9ieV9wcm9jX251bWJlcigp IC0KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmluZGV4IDBmNWUwYTk3NzguLmMw MzNkZDA3NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC0zMDIsNyArMzAy LDcgQEAgcGdfc3RhdF9nZXRfcHJvZ3Jlc3NfaW5mbyhQR19GVU5DVElPTl9BUkdTKQogRGF0dW0K IHBnX3N0YXRfZ2V0X2FjdGl2aXR5KFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0jZGVmaW5lIFBHX1NU QVRfR0VUX0FDVElWSVRZX0NPTFMJMzEKKyNkZWZpbmUgUEdfU1RBVF9HRVRfQUNUSVZJVFlfQ09M UwkzMgogCWludAkJCW51bV9iYWNrZW5kcyA9IHBnc3RhdF9mZXRjaF9zdGF0X251bWJhY2tlbmRz KCk7CiAJaW50CQkJY3Vycl9iYWNrZW5kOwogCWludAkJCXBpZCA9IFBHX0FSR0lTTlVMTCgwKSA/ IC0xIDogUEdfR0VUQVJHX0lOVDMyKDApOwpAQCAtNjEzLDYgKzYxMywxMSBAQCBwZ19zdGF0X2dl dF9hY3Rpdml0eShQR19GVU5DVElPTl9BUkdTKQogCQkJCW51bGxzWzMwXSA9IHRydWU7CiAJCQll bHNlCiAJCQkJdmFsdWVzWzMwXSA9IFVJbnQ2NEdldERhdHVtKGJlZW50cnktPnN0X3F1ZXJ5X2lk KTsKKworCQkJaWYgKGJlZW50cnktPnN0X3BsYW5faWQgPT0gMCkKKwkJCQludWxsc1szMV0gPSB0 cnVlOworCQkJZWxzZQorCQkJCXZhbHVlc1szMV0gPSBVSW50NjRHZXREYXR1bShiZWVudHJ5LT5z dF9wbGFuX2lkKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTY0Miw2ICs2NDcsNyBAQCBwZ19zdGF0 X2dldF9hY3Rpdml0eShQR19GVU5DVElPTl9BUkdTKQogCQkJbnVsbHNbMjhdID0gdHJ1ZTsKIAkJ CW51bGxzWzI5XSA9IHRydWU7CiAJCQludWxsc1szMF0gPSB0cnVlOworCQkJbnVsbHNbMzFdID0g dHJ1ZTsKIAkJfQogCiAJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCBy c2luZm8tPnNldERlc2MsIHZhbHVlcywgbnVsbHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvZXJyb3IvY3N2bG9nLmMgYi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9jc3Zsb2cuYwpp bmRleCA4ZTlmYmNiOTk5Li44NjY1MGIwMmZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9lcnJvci9jc3Zsb2cuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9jc3Zsb2cuYwpA QCAtMjUwLDYgKzI1MCw5IEBAIHdyaXRlX2NzdmxvZyhFcnJvckRhdGEgKmVkYXRhKQogCS8qIHF1 ZXJ5IGlkICovCiAJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiJWxsZCIsIChsb25nIGxvbmcpIHBn c3RhdF9nZXRfbXlfcXVlcnlfaWQoKSk7CiAKKwkvKiBwbGFuIGlkICovCisJYXBwZW5kU3RyaW5n SW5mbygmYnVmLCAiJWxsZCIsIChsb25nIGxvbmcpIHBnc3RhdF9nZXRfbXlfcGxhbl9pZCgpKTsK KwogCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICdcbicpOwogCiAJLyogSWYgaW4gdGhlIHN5 c2xvZ2dlciBwcm9jZXNzLCB0cnkgdG8gd3JpdGUgbWVzc2FnZXMgZGlyZWN0IHRvIGZpbGUgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2Vycm9yL2Vsb2cuYwppbmRleCA4NjBiYmQ0MGQ0Li5jODg2MWI1MDkwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvZXJyb3IvZWxvZy5jCkBAIC0zMTU0LDYgKzMxNTQsMTQgQEAgbG9nX3N0YXR1c19mb3JtYXQo U3RyaW5nSW5mbyBidWYsIGNvbnN0IGNoYXIgKmZvcm1hdCwgRXJyb3JEYXRhICplZGF0YSkKIAkJ CQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlbGxkIiwKIAkJCQkJCQkJCSAobG9uZyBsb25nKSBw Z3N0YXRfZ2V0X215X3F1ZXJ5X2lkKCkpOwogCQkJCWJyZWFrOworCQkJY2FzZSAnWCc6CisJCQkJ aWYgKHBhZGRpbmcgIT0gMCkKKwkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlKmxsZCIsIHBh ZGRpbmcsCisJCQkJCQkJCQkgKGxvbmcgbG9uZykgcGdzdGF0X2dldF9teV9wbGFuX2lkKCkpOwor CQkJCWVsc2UKKwkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlbGxkIiwKKwkJCQkJCQkJCSAo bG9uZyBsb25nKSBwZ3N0YXRfZ2V0X215X3BsYW5faWQoKSk7CisJCQkJYnJlYWs7CiAJCQlkZWZh dWx0OgogCQkJCS8qIGZvcm1hdCBlcnJvciAtIGlnbm9yZSBpdCAqLwogCQkJCWJyZWFrOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvanNvbmxvZy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvZXJyb3IvanNvbmxvZy5jCmluZGV4IDY1MzNmMWQ2ODguLmE4OGJkNDMzOWUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2pzb25sb2cuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9lcnJvci9qc29ubG9nLmMKQEAgLTI4Nyw2ICsyODcsOSBAQCB3cml0ZV9qc29ubG9n KEVycm9yRGF0YSAqZWRhdGEpCiAJYXBwZW5kSlNPTktleVZhbHVlRm10KCZidWYsICJxdWVyeV9p ZCIsIGZhbHNlLCAiJWxsZCIsCiAJCQkJCQkgIChsb25nIGxvbmcpIHBnc3RhdF9nZXRfbXlfcXVl cnlfaWQoKSk7CiAKKwlhcHBlbmRKU09OS2V5VmFsdWVGbXQoJmJ1ZiwgInBsYW5faWQiLCBmYWxz ZSwgIiVsbGQiLAorCQkJCQkJICAobG9uZyBsb25nKSBwZ3N0YXRfZ2V0X215X3BsYW5faWQoKSk7 CisKIAkvKiBGaW5pc2ggc3RyaW5nICovCiAJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJ30n KTsKIAlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnXG4nKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfdGFibGVzLmMKaW5kZXggMzhjYjllOTcwZC4uYmMwMmU3YzEwMyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfdGFibGVzLmMKQEAgLTUwLDcgKzUwLDcgQEAKICNpbmNsdWRlICJsaWJwcS9hdXRo LmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9zY3JhbS5oIgot I2luY2x1ZGUgIm5vZGVzL3F1ZXJ5anVtYmxlLmgiCisjaW5jbHVkZSAibm9kZXMvanVtYmxlLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL2Nvc3QuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvZ2Vxby5o IgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKQEAgLTMwOSw2ICszMDksMjQgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdfZW51bV9lbnRyeSBjb21wdXRlX3F1ZXJ5X2lkX29w dGlvbnNbXSA9IHsKIAl7TlVMTCwgMCwgZmFsc2V9CiB9OwogCisvKgorICogQWx0aG91Z2ggb25s eSAib24iLCAib2ZmIiwgYW5kICJhdXRvIiBhcmUgZG9jdW1lbnRlZCwgd2UgYWNjZXB0CisgKiBh bGwgdGhlIGxpa2VseSB2YXJpYW50cyBvZiAib24iIGFuZCAib2ZmIi4KKyAqLworc3RhdGljIGNv bnN0IHN0cnVjdCBjb25maWdfZW51bV9lbnRyeSBjb21wdXRlX3BsYW5faWRfb3B0aW9uc1tdID0g eworCXsiYXV0byIsIENPTVBVVEVfUExBTl9JRF9BVVRPLCBmYWxzZX0sCisJeyJyZWdyZXNzIiwg Q09NUFVURV9QTEFOX0lEX1JFR1JFU1MsIGZhbHNlfSwKKwl7Im9uIiwgQ09NUFVURV9QTEFOX0lE X09OLCBmYWxzZX0sCisJeyJvZmYiLCBDT01QVVRFX1BMQU5fSURfT0ZGLCBmYWxzZX0sCisJeyJ0 cnVlIiwgQ09NUFVURV9QTEFOX0lEX09OLCB0cnVlfSwKKwl7ImZhbHNlIiwgQ09NUFVURV9QTEFO X0lEX09GRiwgdHJ1ZX0sCisJeyJ5ZXMiLCBDT01QVVRFX1BMQU5fSURfT04sIHRydWV9LAorCXsi bm8iLCBDT01QVVRFX1BMQU5fSURfT0ZGLCB0cnVlfSwKKwl7IjEiLCBDT01QVVRFX1BMQU5fSURf T04sIHRydWV9LAorCXsiMCIsIENPTVBVVEVfUExBTl9JRF9PRkYsIHRydWV9LAorCXtOVUxMLCAw LCBmYWxzZX0KK307CisKIC8qCiAgKiBBbHRob3VnaCBvbmx5ICJvbiIsICJvZmYiLCBhbmQgInBh cnRpdGlvbiIgYXJlIGRvY3VtZW50ZWQsIHdlCiAgKiBhY2NlcHQgYWxsIHRoZSBsaWtlbHkgdmFy aWFudHMgb2YgIm9uIiBhbmQgIm9mZiIuCkBAIC00ODczLDYgKzQ4OTEsMTYgQEAgc3RydWN0IGNv bmZpZ19lbnVtIENvbmZpZ3VyZU5hbWVzRW51bVtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0s CiAKKwl7CisJCXsiY29tcHV0ZV9wbGFuX2lkIiwgUEdDX1NVU0VULCBTVEFUU19NT05JVE9SSU5H LAorCQkJZ2V0dGV4dF9ub29wKCJFbmFibGVzIGluLWNvcmUgY29tcHV0YXRpb24gb2YgdGhlIHBs YW4gdHJlZS4iKSwKKwkJCU5VTEwKKwkJfSwKKwkJJmNvbXB1dGVfcGxhbl9pZCwKKwkJQ09NUFVU RV9QTEFOX0lEX0FVVE8sIGNvbXB1dGVfcGxhbl9pZF9vcHRpb25zLAorCQlOVUxMLCBOVUxMLCBO VUxMCisJfSwKKwogCXsKIAkJeyJjb25zdHJhaW50X2V4Y2x1c2lvbiIsIFBHQ19VU0VSU0VULCBR VUVSWV9UVU5JTkdfT1RIRVIsCiAJCQlnZXR0ZXh0X25vb3AoIkVuYWJsZXMgdGhlIHBsYW5uZXIg dG8gdXNlIGNvbnN0cmFpbnRzIHRvIG9wdGltaXplIHF1ZXJpZXMuIiksCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggMDc5ZWZhMWJhYS4uMDYz NGFlOTBkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZQpAQCAtNjQxLDYgKzY0MSw3IEBACiAjIC0gTW9uaXRvcmluZyAtCiAKICNjb21wdXRlX3F1 ZXJ5X2lkID0gYXV0bworI2NvbXB1dGVfcGxhbl9pZCA9IGF1dG8KICNsb2dfc3RhdGVtZW50X3N0 YXRzID0gb2ZmCiAjbG9nX3BhcnNlcl9zdGF0cyA9IG9mZgogI2xvZ19wbGFubmVyX3N0YXRzID0g b2ZmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAxODU2MDc1NWQyLi5kZTM0MWUyZDAyIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTU1NDksOSArNTU0OSw5IEBACiAgIHByb25hbWUg PT4gJ3BnX3N0YXRfZ2V0X2FjdGl2aXR5JywgcHJvcm93cyA9PiAnMTAwJywgcHJvaXNzdHJpY3Qg PT4gJ2YnLAogICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFs bGVsID0+ICdyJywKICAgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ2lu dDQnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne2ludDQsb2lkLGludDQsb2lkLHRleHQsdGV4dCx0 ZXh0LHRleHQsdGV4dCx0aW1lc3RhbXB0eix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eix0aW1lc3Rh bXB0eixpbmV0LHRleHQsaW50NCx4aWQseGlkLHRleHQsYm9vbCx0ZXh0LHRleHQsaW50NCx0ZXh0 LG51bWVyaWMsdGV4dCxib29sLHRleHQsYm9vbCxib29sLGludDQsaW50OH0nLAotICBwcm9hcmdt b2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3BpZCxkYXRpZCxwaWQsdXNl c3lzaWQsYXBwbGljYXRpb25fbmFtZSxzdGF0ZSxxdWVyeSx3YWl0X2V2ZW50X3R5cGUsd2FpdF9l dmVudCx4YWN0X3N0YXJ0LHF1ZXJ5X3N0YXJ0LGJhY2tlbmRfc3RhcnQsc3RhdGVfY2hhbmdlLGNs aWVudF9hZGRyLGNsaWVudF9ob3N0bmFtZSxjbGllbnRfcG9ydCxiYWNrZW5kX3hpZCxiYWNrZW5k X3htaW4sYmFja2VuZF90eXBlLHNzbCxzc2x2ZXJzaW9uLHNzbGNpcGhlcixzc2xiaXRzLHNzbF9j bGllbnRfZG4sc3NsX2NsaWVudF9zZXJpYWwsc3NsX2lzc3Vlcl9kbixnc3NfYXV0aCxnc3NfcHJp bmMsZ3NzX2VuYyxnc3NfZGVsZWdhdGlvbixsZWFkZXJfcGlkLHF1ZXJ5X2lkfScsCisgIHByb2Fs bGFyZ3R5cGVzID0+ICd7aW50NCxvaWQsaW50NCxvaWQsdGV4dCx0ZXh0LHRleHQsdGV4dCx0ZXh0 LHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LGluZXQsdGV4 dCxpbnQ0LHhpZCx4aWQsdGV4dCxib29sLHRleHQsdGV4dCxpbnQ0LHRleHQsbnVtZXJpYyx0ZXh0 LGJvb2wsdGV4dCxib29sLGJvb2wsaW50NCxpbnQ4LGludDh9JywKKyAgcHJvYXJnbW9kZXMgPT4g J3tpLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxv LG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne3BpZCxkYXRpZCxwaWQsdXNlc3lzaWQs YXBwbGljYXRpb25fbmFtZSxzdGF0ZSxxdWVyeSx3YWl0X2V2ZW50X3R5cGUsd2FpdF9ldmVudCx4 YWN0X3N0YXJ0LHF1ZXJ5X3N0YXJ0LGJhY2tlbmRfc3RhcnQsc3RhdGVfY2hhbmdlLGNsaWVudF9h ZGRyLGNsaWVudF9ob3N0bmFtZSxjbGllbnRfcG9ydCxiYWNrZW5kX3hpZCxiYWNrZW5kX3htaW4s YmFja2VuZF90eXBlLHNzbCxzc2x2ZXJzaW9uLHNzbGNpcGhlcixzc2xiaXRzLHNzbF9jbGllbnRf ZG4sc3NsX2NsaWVudF9zZXJpYWwsc3NsX2lzc3Vlcl9kbixnc3NfYXV0aCxnc3NfcHJpbmMsZ3Nz X2VuYyxnc3NfZGVsZWdhdGlvbixsZWFkZXJfcGlkLHF1ZXJ5X2lkLHBsYW5faWR9JywKICAgcHJv c3JjID0+ICdwZ19zdGF0X2dldF9hY3Rpdml0eScgfSwKIHsgb2lkID0+ICc2MzE4JywgZGVzY3Ig PT4gJ2Rlc2NyaWJlIHdhaXQgZXZlbnRzJywKICAgcHJvbmFtZSA9PiAncGdfZ2V0X3dhaXRfZXZl bnRzJywgcHJvY29zdCA9PiAnMTAnLCBwcm9yb3dzID0+ICcyNTAnLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvYml0bWFwc2V0LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9iaXRtYXBzZXQu aAppbmRleCAwM2ZhY2E5MzA4Li5hODY5NGQ2NDZhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9iaXRtYXBzZXQuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9iaXRtYXBzZXQuaApAQCAt NDgsNyArNDgsNyBAQCB0eXBlZGVmIGludDMyIHNpZ25lZGJpdG1hcHdvcmQ7IC8qIG11c3QgYmUg dGhlIG1hdGNoaW5nIHNpZ25lZCB0eXBlICovCiAKIHR5cGVkZWYgc3RydWN0IEJpdG1hcHNldAog ewotCXBnX25vZGVfYXR0cihjdXN0b21fY29weV9lcXVhbCwgc3BlY2lhbF9yZWFkX3dyaXRlLCBu b19xdWVyeV9qdW1ibGUpCisJcGdfbm9kZV9hdHRyKGN1c3RvbV9jb3B5X2VxdWFsLCBzcGVjaWFs X3JlYWRfd3JpdGUsIG5vX3F1ZXJ5X2p1bWJsZSwgbm9fcGxhbl9qdW1ibGUpCiAKIAlOb2RlVGFn CQl0eXBlOwogCWludAkJCW53b3JkczsJCQkvKiBudW1iZXIgb2Ygd29yZHMgaW4gYXJyYXkgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9qdW1ibGUuaApzaW1pbGFyaXR5IGluZGV4IDgwJQpyZW5hbWUgZnJvbSBzcmMvaW5j bHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oCnJlbmFtZSB0byBzcmMvaW5jbHVkZS9ub2Rlcy9qdW1i bGUuaAppbmRleCA1MGViOTU2NjU4Li4zY2QzNWYxNDVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9xdWVyeWp1bWJsZS5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2p1bWJsZS5oCkBA IC0xLDEzICsxLDEzIEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCi0gKiBxdWVyeWp1bWJsZS5o CisgKiBqdW1ibGUuaAogICoJICBRdWVyeSBub3JtYWxpemF0aW9uIGFuZCBmaW5nZXJwcmludGlu Zy4KICAqCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNSwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwg UmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCiAgKgogICogSURFTlRJRklD QVRJT04KLSAqCSAgc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaAorICoJICBzcmMvaW5j bHVkZS9ub2Rlcy9qdW1ibGUuaAogICoKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCkBAIC0xNSw2 ICsxNSw3IEBACiAjZGVmaW5lIFFVRVJZSlVNQkxFX0gKIAogI2luY2x1ZGUgIm5vZGVzL3BhcnNl bm9kZXMuaCIKKyNpbmNsdWRlICJub2Rlcy9wbGFubm9kZXMuaCIKIAogLyoKICAqIFN0cnVjdCBm b3IgdHJhY2tpbmcgbG9jYXRpb25zL2xlbmd0aHMgb2YgY29uc3RhbnRzIGR1cmluZyBub3JtYWxp emF0aW9uCkBAIC01NywxNyArNTgsMjUgQEAgZW51bSBDb21wdXRlUXVlcnlJZFR5cGUKIAlDT01Q VVRFX1FVRVJZX0lEX09OLAogCUNPTVBVVEVfUVVFUllfSURfQVVUTywKIAlDT01QVVRFX1FVRVJZ X0lEX1JFR1JFU1MsCisJQ09NUFVURV9QTEFOX0lEX09GRiwKKwlDT01QVVRFX1BMQU5fSURfT04s CisJQ09NUFVURV9QTEFOX0lEX0FVVE8sCisJQ09NUFVURV9QTEFOX0lEX1JFR1JFU1MsCiB9Owog CiAvKiBHVUMgcGFyYW1ldGVycyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb21wdXRlX3F1 ZXJ5X2lkOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb21wdXRlX3BsYW5faWQ7CiAKIAogZXh0 ZXJuIGNvbnN0IGNoYXIgKkNsZWFuUXVlcnl0ZXh0KGNvbnN0IGNoYXIgKnF1ZXJ5LCBpbnQgKmxv Y2F0aW9uLCBpbnQgKmxlbik7CiBleHRlcm4gSnVtYmxlU3RhdGUgKkp1bWJsZVF1ZXJ5KFF1ZXJ5 ICpxdWVyeSk7CitleHRlcm4gSnVtYmxlU3RhdGUgKkp1bWJsZVBsYW4oUGxhbm5lZFN0bXQgKnBz KTsKIGV4dGVybiB2b2lkIEVuYWJsZVF1ZXJ5SWQodm9pZCk7CitleHRlcm4gdm9pZCBFbmFibGVQ bGFuSWQodm9pZCk7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIHF1ZXJ5X2lkX2VuYWJsZWQ7 CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBwbGFuX2lkX2VuYWJsZWQ7CiAKIC8qCiAgKiBSZXR1 cm5zIHdoZXRoZXIgcXVlcnkgaWRlbnRpZmllciBjb21wdXRhdGlvbiBoYXMgYmVlbiBlbmFibGVk LCBlaXRoZXIKQEAgLTgzLDQgKzkyLDE0IEBAIElzUXVlcnlJZEVuYWJsZWQodm9pZCkKIAlyZXR1 cm4gcXVlcnlfaWRfZW5hYmxlZDsKIH0KIAorc3RhdGljIGlubGluZSBib29sCitJc1BsYW5JZEVu YWJsZWQodm9pZCkKK3sKKwlpZiAoY29tcHV0ZV9wbGFuX2lkID09IENPTVBVVEVfUExBTl9JRF9P RkYpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoY29tcHV0ZV9wbGFuX2lkID09IENPTVBVVEVfUExB Tl9JRF9PTikKKwkJcmV0dXJuIHRydWU7CisJcmV0dXJuIHBsYW5faWRfZW5hYmxlZDsKK30KKwog I2VuZGlmCQkJCQkJCS8qIFFVRVJZSlVNQkxFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL21lc29uLmJ1aWxkIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWVzb24uYnVpbGQKaW5kZXgg ZjNkZDU0NjFmZS4uMmU3M2IzOTY0MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbWVz b24uYnVpbGQKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWVzb24uYnVpbGQKQEAgLTM3LDYgKzM3 LDcgQEAgbm9kZV9zdXBwb3J0X291dHB1dCA9IFsKICAgJ2NvcHlmdW5jcy5mdW5jcy5jJywgJ2Nv cHlmdW5jcy5zd2l0Y2guYycsCiAgICdlcXVhbGZ1bmNzLmZ1bmNzLmMnLCAnZXF1YWxmdW5jcy5z d2l0Y2guYycsCiAgICdxdWVyeWp1bWJsZWZ1bmNzLmZ1bmNzLmMnLCAncXVlcnlqdW1ibGVmdW5j cy5zd2l0Y2guYycsCisgICdwbGFuanVtYmxlZnVuY3MuZnVuY3MuYycsICdwbGFuanVtYmxlZnVu Y3Muc3dpdGNoLmMnLAogXQogbm9kZV9zdXBwb3J0X2luc3RhbGwgPSBbCiAgIGRpcl9pbmNsdWRl X3NlcnZlciAvICdub2RlcycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZmZlMTU1ZWUyMC4u OGJmMmIxMWY4YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzY3LDcgKzM2Nyw3IEBAIHVu aW9uIFZhbFVuaW9uCiAKIHR5cGVkZWYgc3RydWN0IEFfQ29uc3QKIHsKLQlwZ19ub2RlX2F0dHIo Y3VzdG9tX2NvcHlfZXF1YWwsIGN1c3RvbV9yZWFkX3dyaXRlLCBjdXN0b21fcXVlcnlfanVtYmxl KQorCXBnX25vZGVfYXR0cihjdXN0b21fY29weV9lcXVhbCwgY3VzdG9tX3JlYWRfd3JpdGUsIGN1 c3RvbV9xdWVyeV9qdW1ibGUsIG5vX3BsYW5fanVtYmxlKQogCiAJTm9kZVRhZwkJdHlwZTsKIAl1 bmlvbiBWYWxVbmlvbiB2YWw7CkBAIC0yNjcwLDcgKzI2NzAsNyBAQCB0eXBlZGVmIGVudW0gVmFy aWFibGVTZXRLaW5kCiAKIHR5cGVkZWYgc3RydWN0IFZhcmlhYmxlU2V0U3RtdAogewotCXBnX25v ZGVfYXR0cihjdXN0b21fcXVlcnlfanVtYmxlKQorCXBnX25vZGVfYXR0cihjdXN0b21fcXVlcnlf anVtYmxlLCBub19wbGFuX2p1bWJsZSkKIAogCU5vZGVUYWcJCXR5cGU7CiAJVmFyaWFibGVTZXRL aW5kIGtpbmQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDllMTljZGQyODQuLmQzZWI0MGU1ZWEg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC01Myw2ICs1Myw4IEBAIHR5cGVkZWYgc3RydWN0IFBs YW5uZWRTdG10CiAKIAl1aW50NjQJCXF1ZXJ5SWQ7CQkvKiBxdWVyeSBpZGVudGlmaWVyIChjb3Bp ZWQgZnJvbSBRdWVyeSkgKi8KIAorCXVpbnQ2NAkJcGxhbklkOwkJCS8qIHBsYW4gaWRlbnRpZmll ciAoY29waWVkIGZyb20gUGxhbm5lZFN0bXQpICovCisKIAlib29sCQloYXNSZXR1cm5pbmc7CS8q IGlzIGl0IGluc2VydHx1cGRhdGV8ZGVsZXRlfG1lcmdlIFJFVFVSTklORz8gKi8KIAogCWJvb2wJ CWhhc01vZGlmeWluZ0NURTsJLyogaGFzIGluc2VydHx1cGRhdGV8ZGVsZXRlfG1lcmdlIGluIFdJ VEg/ICovCkBAIC0xMjUsMzMgKzEyNywzMyBAQCB0eXBlZGVmIHN0cnVjdCBQbGFuCiAJLyoKIAkg KiBlc3RpbWF0ZWQgZXhlY3V0aW9uIGNvc3RzIGZvciBwbGFuIChzZWUgY29zdHNpemUuYyBmb3Ig bW9yZSBpbmZvKQogCSAqLwotCWludAkJCWRpc2FibGVkX25vZGVzOyAvKiBjb3VudCBvZiBkaXNh YmxlZCBub2RlcyAqLwotCUNvc3QJCXN0YXJ0dXBfY29zdDsJLyogY29zdCBleHBlbmRlZCBiZWZv cmUgZmV0Y2hpbmcgYW55IHR1cGxlcyAqLwotCUNvc3QJCXRvdGFsX2Nvc3Q7CQkvKiB0b3RhbCBj b3N0IChhc3N1bWluZyBhbGwgdHVwbGVzIGZldGNoZWQpICovCisJaW50CQkJZGlzYWJsZWRfbm9k ZXMgcGdfbm9kZV9hdHRyKHBsYW5fanVtYmxlX2lnbm9yZSk7IC8qIGNvdW50IG9mIGRpc2FibGVk IG5vZGVzICovCisJQ29zdAkJc3RhcnR1cF9jb3N0IHBnX25vZGVfYXR0cihwbGFuX2p1bWJsZV9p Z25vcmUpOwkvKiBjb3N0IGV4cGVuZGVkIGJlZm9yZSBmZXRjaGluZyBhbnkgdHVwbGVzICovCisJ Q29zdAkJdG90YWxfY29zdCBwZ19ub2RlX2F0dHIocGxhbl9qdW1ibGVfaWdub3JlKTsJCS8qIHRv dGFsIGNvc3QgKGFzc3VtaW5nIGFsbCB0dXBsZXMgZmV0Y2hlZCkgKi8KIAogCS8qCiAJICogcGxh bm5lcidzIGVzdGltYXRlIG9mIHJlc3VsdCBzaXplIG9mIHRoaXMgcGxhbiBzdGVwCiAJICovCi0J Q2FyZGluYWxpdHkgcGxhbl9yb3dzOwkJLyogbnVtYmVyIG9mIHJvd3MgcGxhbiBpcyBleHBlY3Rl ZCB0byBlbWl0ICovCi0JaW50CQkJcGxhbl93aWR0aDsJCS8qIGF2ZXJhZ2Ugcm93IHdpZHRoIGlu IGJ5dGVzICovCisJQ2FyZGluYWxpdHkgcGxhbl9yb3dzIHBnX25vZGVfYXR0cihwbGFuX2p1bWJs ZV9pZ25vcmUpOwkvKiBudW1iZXIgb2Ygcm93cyBwbGFuIGlzIGV4cGVjdGVkIHRvIGVtaXQgKi8K KwlpbnQJCQlwbGFuX3dpZHRoIHBnX25vZGVfYXR0cihwbGFuX2p1bWJsZV9pZ25vcmUpOwkJLyog YXZlcmFnZSByb3cgd2lkdGggaW4gYnl0ZXMgKi8KIAogCS8qCiAJICogaW5mb3JtYXRpb24gbmVl ZGVkIGZvciBwYXJhbGxlbCBxdWVyeQogCSAqLwotCWJvb2wJCXBhcmFsbGVsX2F3YXJlOyAvKiBl bmdhZ2UgcGFyYWxsZWwtYXdhcmUgbG9naWM/ICovCi0JYm9vbAkJcGFyYWxsZWxfc2FmZTsJLyog T0sgdG8gdXNlIGFzIHBhcnQgb2YgcGFyYWxsZWwgcGxhbj8gKi8KKwlib29sCQlwYXJhbGxlbF9h d2FyZSBwZ19ub2RlX2F0dHIocGxhbl9qdW1ibGVfaWdub3JlKTsgLyogZW5nYWdlIHBhcmFsbGVs LWF3YXJlIGxvZ2ljPyAqLworCWJvb2wJCXBhcmFsbGVsX3NhZmUgcGdfbm9kZV9hdHRyKHBsYW5f anVtYmxlX2lnbm9yZSk7CS8qIE9LIHRvIHVzZSBhcyBwYXJ0IG9mIHBhcmFsbGVsIHBsYW4/ICov CiAKIAkvKgogCSAqIGluZm9ybWF0aW9uIG5lZWRlZCBmb3IgYXN5bmNocm9ub3VzIGV4ZWN1dGlv bgogCSAqLwotCWJvb2wJCWFzeW5jX2NhcGFibGU7CS8qIGVuZ2FnZSBhc3luY2hyb25vdXMtY2Fw YWJsZSBsb2dpYz8gKi8KKwlib29sCQlhc3luY19jYXBhYmxlIHBnX25vZGVfYXR0cihwbGFuX2p1 bWJsZV9pZ25vcmUpOwkvKiBlbmdhZ2UgYXN5bmNocm9ub3VzLWNhcGFibGUgbG9naWM/ICovCiAK IAkvKgogCSAqIENvbW1vbiBzdHJ1Y3R1cmFsIGRhdGEgZm9yIGFsbCBQbGFuIHR5cGVzLgogCSAq LwotCWludAkJCXBsYW5fbm9kZV9pZDsJLyogdW5pcXVlIGFjcm9zcyBlbnRpcmUgZmluYWwgcGxh biB0cmVlICovCisJaW50CQkJcGxhbl9ub2RlX2lkIHBnX25vZGVfYXR0cihwbGFuX2p1bWJsZV9p Z25vcmUpOwkvKiB1bmlxdWUgYWNyb3NzIGVudGlyZSBmaW5hbCBwbGFuIHRyZWUgKi8KIAlMaXN0 CSAgICp0YXJnZXRsaXN0OwkJLyogdGFyZ2V0IGxpc3QgdG8gYmUgY29tcHV0ZWQgYXQgdGhpcyBu b2RlICovCi0JTGlzdAkgICAqcXVhbDsJCQkvKiBpbXBsaWNpdGx5LUFORGVkIHF1YWwgY29uZGl0 aW9ucyAqLworCUxpc3QJICAgKnF1YWwgcGdfbm9kZV9hdHRyKHBsYW5fanVtYmxlX2lnbm9yZSk7 CQkJLyogaW1wbGljaXRseS1BTkRlZCBxdWFsIGNvbmRpdGlvbnMgKi8KIAlzdHJ1Y3QgUGxhbiAq bGVmdHRyZWU7CQkvKiBpbnB1dCBwbGFuIHRyZWUocykgKi8KIAlzdHJ1Y3QgUGxhbiAqcmlnaHR0 cmVlOwogCUxpc3QJICAgKmluaXRQbGFuOwkJLyogSW5pdCBQbGFuIG5vZGVzICh1bi1jb3JyZWxh dGVkIGV4cHIKQEAgLTE2OCw4ICsxNzAsOCBAQCB0eXBlZGVmIHN0cnVjdCBQbGFuCiAJICogcGFy YW1zIHRoYXQgYWZmZWN0IHRoZSBub2RlIChpLmUuLCB0aGUgc2V0UGFyYW1zIG9mIGl0cyBpbml0 cGxhbnMpLgogCSAqIFRoZXNlIGFyZSBfYWxsXyB0aGUgUEFSQU1fRVhFQyBwYXJhbXMgdGhhdCBh ZmZlY3QgdGhpcyBub2RlLgogCSAqLwotCUJpdG1hcHNldCAgKmV4dFBhcmFtOwotCUJpdG1hcHNl dCAgKmFsbFBhcmFtOworCUJpdG1hcHNldCAgKmV4dFBhcmFtIHBnX25vZGVfYXR0cihwbGFuX2p1 bWJsZV9pZ25vcmUpOworCUJpdG1hcHNldCAgKmFsbFBhcmFtIHBnX25vZGVfYXR0cihwbGFuX2p1 bWJsZV9pZ25vcmUpOwogfSBQbGFuOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0yNjgsNyAr MjcwLDcgQEAgc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbzsJCS8qIGZvcndhcmQgcmVmZXJlbmNl IHRvIHN0cnVjdCBiZWxvdyAqLwogdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCiB7CiAJUGxhbgkJcGxh bjsKLQlCaXRtYXBzZXQgICphcHByZWxpZHM7CQkvKiBSVElzIG9mIGFwcGVuZHJlbChzKSBmb3Jt ZWQgYnkgdGhpcyBub2RlICovCisJQml0bWFwc2V0ICAqYXBwcmVsaWRzIHBnX25vZGVfYXR0cihw bGFuX2p1bWJsZV9pZ25vcmUpOwkJLyogUlRJcyBvZiBhcHBlbmRyZWwocykgZm9ybWVkIGJ5IHRo aXMgbm9kZSAqLwogCUxpc3QJICAgKmFwcGVuZHBsYW5zOwogCWludAkJCW5hc3luY3BsYW5zOwkv KiAjIG9mIGFzeW5jaHJvbm91cyBwbGFucyAqLwogCkBAIC0yOTIsNyArMjk0LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgTWVyZ2VBcHBlbmQKIAlQbGFuCQlwbGFuOwogCiAJLyogUlRJcyBvZiBhcHBlbmRy ZWwocykgZm9ybWVkIGJ5IHRoaXMgbm9kZSAqLwotCUJpdG1hcHNldCAgKmFwcHJlbGlkczsKKwlC aXRtYXBzZXQgICphcHByZWxpZHMgcGdfbm9kZV9hdHRyKHBsYW5fanVtYmxlX2lnbm9yZSk7CiAK IAlMaXN0CSAgICptZXJnZXBsYW5zOwogCkBAIC0zODksNyArMzkxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgU2NhbgogCXBnX25vZGVfYXR0cihhYnN0cmFjdCkKIAogCVBsYW4JCXBsYW47Ci0JSW5kZXgJ CXNjYW5yZWxpZDsJCS8qIHJlbGlkIGlzIGluZGV4IGludG8gdGhlIHJhbmdlIHRhYmxlICovCisJ SW5kZXgJCXNjYW5yZWxpZCBwZ19ub2RlX2F0dHIocGxhbl9qdW1ibGVfaWdub3JlKTsJCS8qIHJl bGlkIGlzIGluZGV4IGludG8gdGhlIHJhbmdlIHRhYmxlICovCiB9IFNjYW47CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0KQEAgLTcxOSw4ICs3MjEsOCBAQCB0eXBlZGVmIHN0cnVjdCBGb3JlaWduU2Nh bgogCUxpc3QJICAgKmZkd19wcml2YXRlOwkvKiBwcml2YXRlIGRhdGEgZm9yIEZEVyAqLwogCUxp c3QJICAgKmZkd19zY2FuX3RsaXN0OyAvKiBvcHRpb25hbCB0bGlzdCBkZXNjcmliaW5nIHNjYW4g dHVwbGUgKi8KIAlMaXN0CSAgICpmZHdfcmVjaGVja19xdWFsczsJLyogb3JpZ2luYWwgcXVhbHMg bm90IGluIHNjYW4ucGxhbi5xdWFsICovCi0JQml0bWFwc2V0ICAqZnNfcmVsaWRzOwkJLyogYmFz ZStPSiBSVElzIGdlbmVyYXRlZCBieSB0aGlzIHNjYW4gKi8KLQlCaXRtYXBzZXQgICpmc19iYXNl X3JlbGlkczsgLyogYmFzZSBSVElzIGdlbmVyYXRlZCBieSB0aGlzIHNjYW4gKi8KKwlCaXRtYXBz ZXQgICpmc19yZWxpZHMgcGdfbm9kZV9hdHRyKHBsYW5fanVtYmxlX2lnbm9yZSk7CQkvKiBiYXNl K09KIFJUSXMgZ2VuZXJhdGVkIGJ5IHRoaXMgc2NhbiAqLworCUJpdG1hcHNldCAgKmZzX2Jhc2Vf cmVsaWRzIHBnX25vZGVfYXR0cihwbGFuX2p1bWJsZV9pZ25vcmUpOyAvKiBiYXNlIFJUSXMgZ2Vu ZXJhdGVkIGJ5IHRoaXMgc2NhbiAqLwogCWJvb2wJCWZzU3lzdGVtQ29sOwkvKiB0cnVlIGlmIGFu eSAic3lzdGVtIGNvbHVtbiIgaXMgbmVlZGVkICovCiB9IEZvcmVpZ25TY2FuOwogCkBAIC03NDgs NyArNzUwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3VzdG9tU2NhbgogCUxpc3QJICAgKmN1c3RvbV9l eHByczsJLyogZXhwcmVzc2lvbnMgdGhhdCBjdXN0b20gY29kZSBtYXkgZXZhbHVhdGUgKi8KIAlM aXN0CSAgICpjdXN0b21fcHJpdmF0ZTsgLyogcHJpdmF0ZSBkYXRhIGZvciBjdXN0b20gY29kZSAq LwogCUxpc3QJICAgKmN1c3RvbV9zY2FuX3RsaXN0OwkvKiBvcHRpb25hbCB0bGlzdCBkZXNjcmli aW5nIHNjYW4gdHVwbGUgKi8KLQlCaXRtYXBzZXQgICpjdXN0b21fcmVsaWRzOwkvKiBSVElzIGdl bmVyYXRlZCBieSB0aGlzIHNjYW4gKi8KKwlCaXRtYXBzZXQgICpjdXN0b21fcmVsaWRzIHBnX25v ZGVfYXR0cihwbGFuX2p1bWJsZV9pZ25vcmUpOwkvKiBSVElzIGdlbmVyYXRlZCBieSB0aGlzIHNj YW4gKi8KIAogCS8qCiAJICogTk9URTogVGhlIG1ldGhvZCBmaWVsZCBvZiBDdXN0b21TY2FuIGlz IHJlcXVpcmVkIHRvIGJlIGEgcG9pbnRlciB0byBhCkBAIC05MjQsNyArOTI2LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgTWVtb2l6ZQogCXVpbnQzMgkJZXN0X2VudHJpZXM7CiAKIAkvKiBwYXJhbWlkcyBm cm9tIHBhcmFtX2V4cHJzICovCi0JQml0bWFwc2V0ICAqa2V5cGFyYW1pZHM7CisJQml0bWFwc2V0 ICAqa2V5cGFyYW1pZHMgcGdfbm9kZV9hdHRyKHBsYW5fanVtYmxlX2lnbm9yZSk7CiB9IE1lbW9p emU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTEwMjMsNyArMTAyNSw3IEBAIHR5cGVkZWYg c3RydWN0IEFnZwogCXVpbnQ2NAkJdHJhbnNpdGlvblNwYWNlOwogCiAJLyogSURzIG9mIFBhcmFt cyB1c2VkIGluIEFnZ3JlZiBpbnB1dHMgKi8KLQlCaXRtYXBzZXQgICphZ2dQYXJhbXM7CisJQml0 bWFwc2V0ICAqYWdnUGFyYW1zIHBnX25vZGVfYXR0cihwbGFuX2p1bWJsZV9pZ25vcmUpOwogCiAJ LyogTm90ZTogcGxhbm5lciBwcm92aWRlcyBudW1Hcm91cHMgJiBhZ2dQYXJhbXMgb25seSBpbiBI QVNIRUQvTUlYRUQgY2FzZSAqLwogCkBAIC0xMTQ3LDcgKzExNDksNyBAQCB0eXBlZGVmIHN0cnVj dCBHYXRoZXIKIAlpbnQJCQlyZXNjYW5fcGFyYW07CS8qIElEIG9mIFBhcmFtIHRoYXQgc2lnbmFs cyBhIHJlc2Nhbiwgb3IgLTEgKi8KIAlib29sCQlzaW5nbGVfY29weTsJLyogZG9uJ3QgZXhlY3V0 ZSBwbGFuIG1vcmUgdGhhbiBvbmNlICovCiAJYm9vbAkJaW52aXNpYmxlOwkJLyogc3VwcHJlc3Mg RVhQTEFJTiBkaXNwbGF5IChmb3IgdGVzdGluZyk/ICovCi0JQml0bWFwc2V0ICAqaW5pdFBhcmFt OwkJLyogcGFyYW0gaWQncyBvZiBpbml0cGxhbnMgd2hpY2ggYXJlIHJlZmVycmVkCisJQml0bWFw c2V0ICAqaW5pdFBhcmFtIHBnX25vZGVfYXR0cihwbGFuX2p1bWJsZV9pZ25vcmUpOwkvKiBwYXJh bSBpZCdzIG9mIGluaXRwbGFucyB3aGljaCBhcmUgcmVmZXJyZWQKIAkJCQkJCQkJICogYXQgZ2F0 aGVyIG9yIG9uZSBvZiBpdCdzIGNoaWxkIG5vZGUgKi8KIH0gR2F0aGVyOwogCkBAIC0xMTg2LDcg KzExODgsNyBAQCB0eXBlZGVmIHN0cnVjdCBHYXRoZXJNZXJnZQogCSAqIHBhcmFtIGlkJ3Mgb2Yg aW5pdHBsYW5zIHdoaWNoIGFyZSByZWZlcnJlZCBhdCBnYXRoZXIgbWVyZ2Ugb3Igb25lIG9mCiAJ ICogaXQncyBjaGlsZCBub2RlCiAJICovCi0JQml0bWFwc2V0ICAqaW5pdFBhcmFtOworCUJpdG1h cHNldCAgKmluaXRQYXJhbSBwZ19ub2RlX2F0dHIocGxhbl9qdW1ibGVfaWdub3JlKTsKIH0gR2F0 aGVyTWVyZ2U7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0MjYsNyArMTQyOCw3IEBAIHR5 cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbwogCiAJTm9kZVRhZwkJdHlwZTsKIAlMaXN0 CSAgICpwcnVuZV9pbmZvczsKLQlCaXRtYXBzZXQgICpvdGhlcl9zdWJwbGFuczsKKwlCaXRtYXBz ZXQgICpvdGhlcl9zdWJwbGFucyBwZ19ub2RlX2F0dHIocGxhbl9qdW1ibGVfaWdub3JlKTsKIH0g UGFydGl0aW9uUHJ1bmVJbmZvOwogCiAvKgpAQCAtMTQ1Niw3ICsxNDU4LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8KIAlJbmRleAkJcnRpbmRleDsKIAogCS8qIElu ZGV4ZXMgb2YgYWxsIHBhcnRpdGlvbnMgd2hpY2ggc3VicGxhbnMgb3Igc3VicGFydHMgYXJlIHBy ZXNlbnQgZm9yICovCi0JQml0bWFwc2V0ICAqcHJlc2VudF9wYXJ0czsKKwlCaXRtYXBzZXQgICpw cmVzZW50X3BhcnRzIHBnX25vZGVfYXR0cihwbGFuX2p1bWJsZV9pZ25vcmUpOwogCiAJLyogTGVu Z3RoIG9mIHRoZSBmb2xsb3dpbmcgYXJyYXlzOiAqLwogCWludAkJCW5wYXJ0czsKQEAgLTE0ODAs NyArMTQ4Miw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvCiAJTGlz dAkgICAqZXhlY19wcnVuaW5nX3N0ZXBzOyAvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lU3RlcCAq LwogCiAJLyogQWxsIFBBUkFNX0VYRUMgUGFyYW0gSURzIGluIGV4ZWNfcHJ1bmluZ19zdGVwcyAq LwotCUJpdG1hcHNldCAgKmV4ZWNwYXJhbWlkczsKKwlCaXRtYXBzZXQgICpleGVjcGFyYW1pZHMg cGdfbm9kZV9hdHRyKHBsYW5fanVtYmxlX2lnbm9yZSk7CiB9IFBhcnRpdGlvbmVkUmVsUHJ1bmVJ bmZvOwogCiAvKgpAQCAtMTUzMSw3ICsxNTMzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9u UHJ1bmVTdGVwT3AKIAlTdHJhdGVneU51bWJlciBvcHN0cmF0ZWd5OwogCUxpc3QJICAgKmV4cHJz OwogCUxpc3QJICAgKmNtcGZuczsKLQlCaXRtYXBzZXQgICpudWxsa2V5czsKKwlCaXRtYXBzZXQg ICpudWxsa2V5cyBwZ19ub2RlX2F0dHIocGxhbl9qdW1ibGVfaWdub3JlKTsKIH0gUGFydGl0aW9u UHJ1bmVTdGVwT3A7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDU5ZTdiYjI2YmIuLjhl Yjk5NTk0OTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBi L3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0yMjQ2LDE1ICsyMjQ2LDE1IEBAIHR5 cGVkZWYgc3RydWN0IFRhcmdldEVudHJ5CiAJLyogYXR0cmlidXRlIG51bWJlciAoc2VlIG5vdGVz IGFib3ZlKSAqLwogCUF0dHJOdW1iZXIJcmVzbm87CiAJLyogbmFtZSBvZiB0aGUgY29sdW1uIChj b3VsZCBiZSBOVUxMKSAqLwotCWNoYXIJICAgKnJlc25hbWUgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1 bWJsZV9pZ25vcmUpOworCWNoYXIJICAgKnJlc25hbWUgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUsIHBsYW5fanVtYmxlX2lnbm9yZSk7CiAJLyogbm9uemVybyBpZiByZWZlcmVuY2Vk IGJ5IGEgc29ydC9ncm91cCBjbGF1c2UgKi8KIAlJbmRleAkJcmVzc29ydGdyb3VwcmVmOwogCS8q IE9JRCBvZiBjb2x1bW4ncyBzb3VyY2UgdGFibGUgKi8KLQlPaWQJCQlyZXNvcmlndGJsIHBnX25v ZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwlPaWQJCQlyZXNvcmlndGJsIHBnX25vZGVf YXR0cihxdWVyeV9qdW1ibGVfaWdub3JlLCBwbGFuX2p1bWJsZV9pZ25vcmUpOwogCS8qIGNvbHVt bidzIG51bWJlciBpbiBzb3VyY2UgdGFibGUgKi8KLQlBdHRyTnVtYmVyCXJlc29yaWdjb2wgcGdf bm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOworCUF0dHJOdW1iZXIJcmVzb3JpZ2NvbCBw Z19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSwgcGxhbl9qdW1ibGVfaWdub3JlKTsKIAkv KiBzZXQgdG8gdHJ1ZSB0byBlbGltaW5hdGUgdGhlIGF0dHJpYnV0ZSBmcm9tIGZpbmFsIHRhcmdl dCBsaXN0ICovCi0JYm9vbAkJcmVzanVuayBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9y ZSk7CisJYm9vbAkJcmVzanVuayBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSwgcGxh bl9qdW1ibGVfaWdub3JlKTsKIH0gVGFyZ2V0RW50cnk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcGFyc2VyL2FuYWx5emUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmgKaW5k ZXggZjFiZDE4YzQ5Zi4uZTQxNGI2MzBiYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2Vy L2FuYWx5emUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCkBAIC0xNSw3ICsx NSw3IEBACiAjZGVmaW5lIEFOQUxZWkVfSAogCiAjaW5jbHVkZSAibm9kZXMvcGFyYW1zLmgiCi0j aW5jbHVkZSAibm9kZXMvcXVlcnlqdW1ibGUuaCIKKyNpbmNsdWRlICJub2Rlcy9qdW1ibGUuaCIK ICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfbm9kZS5oIgogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRv IGdldCBjb250cm9sIGF0IGVuZCBvZiBwYXJzZSBhbmFseXNpcyAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tl bmRfc3RhdHVzLmgKaW5kZXggZDNkNGZmNmM1Yy4uZTA3NGJjNWI0NSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9i YWNrZW5kX3N0YXR1cy5oCkBAIC0xNzAsNiArMTcwLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdCYWNr ZW5kU3RhdHVzCiAKIAkvKiBxdWVyeSBpZGVudGlmaWVyLCBvcHRpb25hbGx5IGNvbXB1dGVkIHVz aW5nIHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rICovCiAJdWludDY0CQlzdF9xdWVyeV9pZDsKKwor CS8qIHBsYW4gaWRlbnRpZmllciwgb3B0aW9uYWxseSBjb21wdXRlZCB1c2luZyBwbGFubmVyX2hv b2sgKi8KKwl1aW50NjQJCXN0X3BsYW5faWQ7CiB9IFBnQmFja2VuZFN0YXR1czsKIAogCkBAIC0z MTYsNiArMzE5LDcgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0X2NsZWFyX2JhY2tlbmRfYWN0aXZpdHlf c25hcHNob3Qodm9pZCk7CiAvKiBBY3Rpdml0eSByZXBvcnRpbmcgZnVuY3Rpb25zICovCiBleHRl cm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KEJhY2tlbmRTdGF0ZSBzdGF0ZSwgY29uc3Qg Y2hhciAqY21kX3N0cik7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3F1ZXJ5X2lkKHVpbnQ2 NCBxdWVyeV9pZCwgYm9vbCBmb3JjZSk7CitleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3BsYW5f aWQodWludDY0IHF1ZXJ5X2lkLCBib29sIGZvcmNlKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBv cnRfdGVtcGZpbGUoc2l6ZV90IGZpbGVzaXplKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRf YXBwbmFtZShjb25zdCBjaGFyICphcHBuYW1lKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRf eGFjdF90aW1lc3RhbXAoVGltZXN0YW1wVHogdHN0YW1wKTsKQEAgLTMyMyw2ICszMjcsNyBAQCBl eHRlcm4gY29uc3QgY2hhciAqcGdzdGF0X2dldF9iYWNrZW5kX2N1cnJlbnRfYWN0aXZpdHkoaW50 IHBpZCwgYm9vbCBjaGVja1VzZXIpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfY3Jh c2hlZF9iYWNrZW5kX2FjdGl2aXR5KGludCBwaWQsIGNoYXIgKmJ1ZmZlciwKIAkJCQkJCQkJCQkJ CQkgICBpbnQgYnVmbGVuKTsKIGV4dGVybiB1aW50NjQgcGdzdGF0X2dldF9teV9xdWVyeV9pZCh2 b2lkKTsKK2V4dGVybiB1aW50NjQgcGdzdGF0X2dldF9teV9wbGFuX2lkKHZvaWQpOwogZXh0ZXJu IEJhY2tlbmRUeXBlIHBnc3RhdF9nZXRfYmFja2VuZF90eXBlX2J5X3Byb2NfbnVtYmVyKFByb2NO dW1iZXIgcHJvY051bWJlcik7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRl eCA4NTZhODM0OWM1Li5lMjBjYzdkMjhjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dApAQCAtMTc2MCw5ICsxNzYwLDEwIEBAIHBnX3N0YXRfYWN0aXZpdHl8IFNFTEVDVCBzLmRhdGlk LAogICAgIHMuYmFja2VuZF94aWQsCiAgICAgcy5iYWNrZW5kX3htaW4sCiAgICAgcy5xdWVyeV9p ZCwKKyAgICBzLnBsYW5faWQsCiAgICAgcy5xdWVyeSwKICAgICBzLmJhY2tlbmRfdHlwZQotICAg RlJPTSAoKHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwg dXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBl LCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3Rh dGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFj a2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNz bGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9p c3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdzc19lbmMsIGdzc19kZWxlZ2F0aW9uLCBs ZWFkZXJfcGlkLCBxdWVyeV9pZCkKKyAgIEZST00gKChwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxM OjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0 ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlf c3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9o b3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRf dHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4s IHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBn c3NfZW5jLCBnc3NfZGVsZWdhdGlvbiwgbGVhZGVyX3BpZCwgcXVlcnlfaWQsIHBsYW5faWQpCiAg ICAgIExFRlQgSk9JTiBwZ19kYXRhYmFzZSBkIE9OICgocy5kYXRpZCA9IGQub2lkKSkpCiAgICAg IExFRlQgSk9JTiBwZ19hdXRoaWQgdSBPTiAoKHMudXNlc3lzaWQgPSB1Lm9pZCkpKTsKIHBnX3N0 YXRfYWxsX2luZGV4ZXN8IFNFTEVDVCBjLm9pZCBBUyByZWxpZCwKQEAgLTE4ODYsNyArMTg4Nyw3 IEBAIHBnX3N0YXRfZ3NzYXBpfCBTRUxFQ1QgcGlkLAogICAgIGdzc19wcmluYyBBUyBwcmluY2lw YWwsCiAgICAgZ3NzX2VuYyBBUyBlbmNyeXB0ZWQsCiAgICAgZ3NzX2RlbGVnYXRpb24gQVMgY3Jl ZGVudGlhbHNfZGVsZWdhdGVkCi0gICBGUk9NIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6Omlu dGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRlLCBx dWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9zdGFy dCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hvc3Ru YW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90eXBl LCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwgc3Ns X2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdzc19l bmMsIGdzc19kZWxlZ2F0aW9uLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCkKKyAgIEZST00gcGdfc3Rh dF9nZXRfYWN0aXZpdHkoTlVMTDo6aW50ZWdlcikgcyhkYXRpZCwgcGlkLCB1c2VzeXNpZCwgYXBw bGljYXRpb25fbmFtZSwgc3RhdGUsIHF1ZXJ5LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQs IHhhY3Rfc3RhcnQsIHF1ZXJ5X3N0YXJ0LCBiYWNrZW5kX3N0YXJ0LCBzdGF0ZV9jaGFuZ2UsIGNs aWVudF9hZGRyLCBjbGllbnRfaG9zdG5hbWUsIGNsaWVudF9wb3J0LCBiYWNrZW5kX3hpZCwgYmFj a2VuZF94bWluLCBiYWNrZW5kX3R5cGUsIHNzbCwgc3NsdmVyc2lvbiwgc3NsY2lwaGVyLCBzc2xi aXRzLCBzc2xfY2xpZW50X2RuLCBzc2xfY2xpZW50X3NlcmlhbCwgc3NsX2lzc3Vlcl9kbiwgZ3Nz X2F1dGgsIGdzc19wcmluYywgZ3NzX2VuYywgZ3NzX2RlbGVnYXRpb24sIGxlYWRlcl9waWQsIHF1 ZXJ5X2lkLCBwbGFuX2lkKQogICBXSEVSRSAoY2xpZW50X3BvcnQgSVMgTk9UIE5VTEwpOwogcGdf c3RhdF9pb3wgU0VMRUNUIGJhY2tlbmRfdHlwZSwKICAgICBvYmplY3QsCkBAIC0yMDkyLDcgKzIw OTMsNyBAQCBwZ19zdGF0X3JlcGxpY2F0aW9ufCBTRUxFQ1Qgcy5waWQsCiAgICAgdy5zeW5jX3By aW9yaXR5LAogICAgIHcuc3luY19zdGF0ZSwKICAgICB3LnJlcGx5X3RpbWUKLSAgIEZST00gKChw Z19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lk LCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9l dmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5n ZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlk LCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIs IHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2Ru LCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBnc3NfZGVsZWdhdGlvbiwgbGVhZGVyX3Bp ZCwgcXVlcnlfaWQpCisgICBGUk9NICgocGdfc3RhdF9nZXRfYWN0aXZpdHkoTlVMTDo6aW50ZWdl cikgcyhkYXRpZCwgcGlkLCB1c2VzeXNpZCwgYXBwbGljYXRpb25fbmFtZSwgc3RhdGUsIHF1ZXJ5 LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQsIHhhY3Rfc3RhcnQsIHF1ZXJ5X3N0YXJ0LCBi YWNrZW5kX3N0YXJ0LCBzdGF0ZV9jaGFuZ2UsIGNsaWVudF9hZGRyLCBjbGllbnRfaG9zdG5hbWUs IGNsaWVudF9wb3J0LCBiYWNrZW5kX3hpZCwgYmFja2VuZF94bWluLCBiYWNrZW5kX3R5cGUsIHNz bCwgc3NsdmVyc2lvbiwgc3NsY2lwaGVyLCBzc2xiaXRzLCBzc2xfY2xpZW50X2RuLCBzc2xfY2xp ZW50X3NlcmlhbCwgc3NsX2lzc3Vlcl9kbiwgZ3NzX2F1dGgsIGdzc19wcmluYywgZ3NzX2VuYywg Z3NzX2RlbGVnYXRpb24sIGxlYWRlcl9waWQsIHF1ZXJ5X2lkLCBwbGFuX2lkKQogICAgICBKT0lO IHBnX3N0YXRfZ2V0X3dhbF9zZW5kZXJzKCkgdyhwaWQsIHN0YXRlLCBzZW50X2xzbiwgd3JpdGVf bHNuLCBmbHVzaF9sc24sIHJlcGxheV9sc24sIHdyaXRlX2xhZywgZmx1c2hfbGFnLCByZXBsYXlf bGFnLCBzeW5jX3ByaW9yaXR5LCBzeW5jX3N0YXRlLCByZXBseV90aW1lKSBPTiAoKHMucGlkID0g dy5waWQpKSkKICAgICAgTEVGVCBKT0lOIHBnX2F1dGhpZCB1IE9OICgocy51c2VzeXNpZCA9IHUu b2lkKSkpOwogcGdfc3RhdF9yZXBsaWNhdGlvbl9zbG90c3wgU0VMRUNUIHMuc2xvdF9uYW1lLApA QCAtMjEyNiw3ICsyMTI3LDcgQEAgcGdfc3RhdF9zc2x8IFNFTEVDVCBwaWQsCiAgICAgc3NsX2Ns aWVudF9kbiBBUyBjbGllbnRfZG4sCiAgICAgc3NsX2NsaWVudF9zZXJpYWwgQVMgY2xpZW50X3Nl cmlhbCwKICAgICBzc2xfaXNzdWVyX2RuIEFTIGlzc3Vlcl9kbgotICAgRlJPTSBwZ19zdGF0X2dl dF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNh dGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFj dF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50 X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5k X3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMs IHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0 aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBnc3NfZGVsZWdhdGlvbiwgbGVhZGVyX3BpZCwgcXVlcnlf aWQpCisgICBGUk9NIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQs IHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVu dF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFy dCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9y dCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNp b24sIHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWws IHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdzc19lbmMsIGdzc19kZWxlZ2F0 aW9uLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCwgcGxhbl9pZCkKICAgV0hFUkUgKGNsaWVudF9wb3J0 IElTIE5PVCBOVUxMKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1 YmlkLAogICAgIHN1LnN1Ym5hbWUsCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --00000000000033f41e062c699be5--