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 1tYPz4-00AhwR-NK for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Jan 2025 13:32:31 +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 1tYPz2-00Czws-6g for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Jan 2025 13:32:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tYPz1-00CzwY-7t for pgsql-hackers@lists.postgresql.org; Thu, 16 Jan 2025 13:32:28 +0000 Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tYPyz-000ic5-1U for pgsql-hackers@lists.postgresql.org; Thu, 16 Jan 2025 13:32:26 +0000 Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-aa6954ec439so13863066b.1 for ; Thu, 16 Jan 2025 05:32:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737034342; x=1737639142; 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=u+2TUlw0UdU/5/BpTFF+TtBAsm//s/8ToIMxSpdBMy8=; b=CFuiCG5CJDXaxRrGnXIXsnkKjq63x1gFD8XxkxDQmNzP9okF3sDIHk16jZuGre9wcg S8RRdu3KSRR+11pZj+lCs4CChDExCXOfMZVXk1mcMuyfe9XglDaO5vppdXFl+5pp8dTj iVhDXD4OE03i4RSzj80N/UUYYo/HMpKjeIHS9BM61rOHStuvQLxc/i+3yStfvzxOn0lW qZtO1IqJCUnrf+XsO3qTow/6rIxaOBD8EJR36MDT/xjXypoGScILfYBHB7tMrv1s7VPK /3hifRTFCN7ykT62vn+uLV1/4Fh9drLRgOy8DiCEDiWYZBN0X1B/mx4/xxsj79ty0I8G Hv5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737034342; x=1737639142; 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=u+2TUlw0UdU/5/BpTFF+TtBAsm//s/8ToIMxSpdBMy8=; b=QYVSo45h5i2LefOfWe2SdnOHOvp/t5+tltdn+izbdzwfBmjhqODlXtUbk0W91MGwxj GSjsxiUWMg/OIb3SW++DhpO+X8Q0SUOnFrF7iCmyKkEtSZ6nEmMMH0j5yj5KA2HviGtc DOfSV3Q9wWaIxt83kijbbaNULu6K6dHKqCF35tG2LGH1PNoiOKWhNA88H4jb88RazLoS gucoZPMphIVRYrLuvJiajYqlDdwTtC4pYo+zA88ybGar+ked88b5fd61NQjixR8Ad3pK 3zp4DhNEvZntigSvWNeQm4axZ3X5QkRzreXAuorIzyroh8COMmmDMUJpZg+WUhLYTLg0 mHDw== X-Forwarded-Encrypted: i=1; AJvYcCXlXzClKdcn9OMJNbJU8M3BbQzr/Xzx8Lv5S11BPSMRWrNbx+uyur9oqkWhNMjKUftUgh3SABWB4KQ9Q9p7@lists.postgresql.org X-Gm-Message-State: AOJu0Yzj9VSUoG0WN1i7hnH8lgNEaTFSIDMJSqOWIU3cMzfN4nvP420N 1Ze0zRa2k/kxwyP1tbpGSrQr92ZoYlO6qxd3df8yF6X6t+lQQVuDOBM6hwTZr2tTOp/lX5dWWZ+ tFBRhtYZPe/LAXsWeUebeOm/60iM= X-Gm-Gg: ASbGncumdjrk1qbzhNC31ECQp1KZJ4Avw6v80a5HvwlJgrH6Am05D/Jx8NFqAgOTyqG 8+N9tz2aELlCZIK3doWDpztSTd8gS5yAJIXukIw== X-Google-Smtp-Source: AGHT+IGM5vVn/DP8tIrNefyw33QhqsGvZf7wawikfQjEXsLnahjS2Fs1A7y5Hi+WRceumTvVpvLF9A7kmvZfVMALCGo= X-Received: by 2002:a17:907:72c7:b0:aa6:6e2e:b7b with SMTP id a640c23a62f3a-ab2ab178953mr1058155666b.1.1737034342019; Thu, 16 Jan 2025 05:32:22 -0800 (PST) MIME-Version: 1.0 References: <5ecc35f5-1111-47fc-8a02-36d89490a50d@iki.fi> <24b3deb6-a732-4256-847a-560f4bf39d59@iki.fi> <4535f3aa-3220-4760-b1f5-2bc91f248e03@iki.fi> <2bc58592-9d74-4af0-bdd1-1a88e8683f7c@iki.fi> In-Reply-To: From: Maxim Orlov Date: Thu, 16 Jan 2025 16:32:09 +0300 X-Gm-Features: AbW1kvZtzOfv4JT44XAcfVbcC2LRlQBtE76GAJqokSfMVKTt5v7dRP0PYVD79ZU Message-ID: Subject: Re: POC: make mxidoff 64 bits To: Heikki Linnakangas Cc: wenhui qiu , Alexander Korotkov , Postgres hackers Content-Type: multipart/mixed; boundary="000000000000eb7646062bd2d2d1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000eb7646062bd2d2d1 Content-Type: multipart/alternative; boundary="000000000000eb7645062bd2d2cf" --000000000000eb7645062bd2d2cf Content-Type: text/plain; charset="UTF-8" Looks like there is a bit of a pause in the discussion. Here is a small update. Consider v12. No major changes, rebase to the actual master and a squash of multiple commits to make a patch set easy to reviewer. AFAICs, we are reached a consensus on a core patch for switching to 64 bits offsets. The only concern is about more comprehensive test coverage for pg_upgrade, is it? -- Best regards, Maxim Orlov. --000000000000eb7645062bd2d2cf Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Looks like there is a bit of a pause in the discussio= n. Here is a small update. Consider v12.
No major changes, rebase= to the actual master and a squash of multiple commits to make a
= patch set easy to reviewer.

AFAICs, we are reached a consensus on a = core patch for switching to 64 bits offsets. The
only concern is = about more comprehensive test coverage for pg_upgrade, is it?

--
Best regards,
Maxim Or= lov.
--000000000000eb7645062bd2d2cf-- --000000000000eb7646062bd2d2d1 Content-Type: text/plain; charset="US-ASCII"; name="v12-0007-TEST-bump-catver.patch.txt" Content-Disposition: attachment; filename="v12-0007-TEST-bump-catver.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5zczs9h6 RnJvbSBiYmQ4Nzg4MjFmOTk3YzZiOGUzMDUzMDkxYmRiZWNiZGVmZjc5ZDJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMTMgTm92IDIwMjQgMTY6MzQ6MzQgKzAzMDAKU3ViamVjdDogW1BBVENIIHYxMiA3Lzdd IFRFU1Q6IGJ1bXAgY2F0dmVyCgotLS0KIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgg IHwgMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggfCAyICstCiAyIGZpbGVz IGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3Vw Z3JhZGUuaAppbmRleCA5YjNkNjQ1YjA4Li5kZjkxNWU2MzgyIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdy YWRlLmgKQEAgLTExOSw3ICsxMTksNyBAQCBleHRlcm4gY2hhciAqb3V0cHV0X2ZpbGVzW107CiAg KgogICogWFhYOiBzaG91bGQgYmUgY2hhbmdlZCB0byB0aGUgYWN0dWFsIENBVEFMT0dfVkVSU0lP Tl9OTyBvbiBjb21taXQuCiAgKi8KLSNkZWZpbmUgTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENIQU5H RV9DQVRfVkVSIDIwMjQwOTA0MQorI2RlZmluZSBNVUxUSVhBQ1RPRkZTRVRfRk9STUFUQ0hBTkdF X0NBVF9WRVIgMjAyNDEyMjAyCiAKIC8qCiAgKiBsYXJnZSBvYmplY3QgY2h1bmsgc2l6ZSBhZGRl ZCB0byBwZ19jb250cm9sZGF0YSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0 dmVyc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKaW5kZXggN2M3MTMz Y2Q4OC4uOWVlNTEwMjI1OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJz aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKQEAgLTU3LDYgKzU3 LDYgQEAKICAqLwogCiAvKgkJCQkJCQl5eXl5bW1kZE4gKi8KLSNkZWZpbmUgQ0FUQUxPR19WRVJT SU9OX05PCTIwMjUwMTQwMQorI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyNDEyMjAyCiAK ICNlbmRpZgotLSAKMi40My4wCgo= --000000000000eb7646062bd2d2d1 Content-Type: application/octet-stream; name="v12-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Disposition: attachment; filename="v12-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5zczs8c0 RnJvbSBhNzU0MDgwMDNhMjMxNjNiNmQzOTkwNjU5MGUzZmQ4NTlkNzlhYmNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgNyBBdWcgMjAyNCAxNjozNToyMiArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjEyIDEvN10g VXNlIDY0LWJpdCBmb3JtYXQgb3V0cHV0IGZvciBtdWx0aXhhY3Qgb2Zmc2V0cwoKQXV0aG9yOiBN YXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL214YWN0ZGVzYy5jICAgfCAgOSArKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL3hsb2dkZXNjLmMgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9tdWx0aXhhY3QuYyAgICB8IDI2ICsrKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyB8ICA1ICsrKy0tCiBzcmMvYmluL3BnX2Nv bnRyb2xkYXRhL3BnX2NvbnRyb2xkYXRhLmMgICB8ICA0ICsrLS0KIHNyYy9iaW4vcGdfcmVzZXR3 YWwvcGdfcmVzZXR3YWwuYyAgICAgICAgIHwgIDggKysrLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCAz MSBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvbXhhY3RkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MvbXhhY3RkZXNjLmMKaW5kZXggOGJkM2Q1YjYzYy4uYjc5MmU5ZDkzOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL214YWN0ZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9teGFjdGRlc2MuYwpAQCAtNjUsOCArNjUsOCBAQCBtdWx0aXhhY3Rf ZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCXhsX211bHRp eGFjdF9jcmVhdGUgKnhscmVjID0gKHhsX211bHRpeGFjdF9jcmVhdGUgKikgcmVjOwogCQlpbnQJ CQlpOwogCi0JCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXUgb2Zmc2V0ICV1IG5tZW1iZXJzICVk OiAiLCB4bHJlYy0+bWlkLAotCQkJCQkJIHhscmVjLT5tb2ZmLCB4bHJlYy0+bm1lbWJlcnMpOwor CQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiV1IG9mZnNldCAlbGx1IG5tZW1iZXJzICVkOiAiLCB4 bHJlYy0+bWlkLAorCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIHhscmVjLT5tb2ZmLCB4bHJl Yy0+bm1lbWJlcnMpOwogCQlmb3IgKGkgPSAwOyBpIDwgeGxyZWMtPm5tZW1iZXJzOyBpKyspCiAJ CQlvdXRfbWVtYmVyKGJ1ZiwgJnhscmVjLT5tZW1iZXJzW2ldKTsKIAl9CkBAIC03NCw5ICs3NCwx MCBAQCBtdWx0aXhhY3RfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJewogCQl4bF9tdWx0aXhhY3RfdHJ1bmNhdGUgKnhscmVjID0gKHhsX211bHRpeGFjdF90 cnVuY2F0ZSAqKSByZWM7CiAKLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJvZmZzZXRzIFsldSwg JXUpLCBtZW1iZXJzIFsldSwgJXUpIiwKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJvZmZzZXRz IFsldSwgJXUpLCBtZW1iZXJzIFslbGx1LCAlbGx1KSIsCiAJCQkJCQkgeGxyZWMtPnN0YXJ0VHJ1 bmNPZmYsIHhscmVjLT5lbmRUcnVuY09mZiwKLQkJCQkJCSB4bHJlYy0+c3RhcnRUcnVuY01lbWIs IHhscmVjLT5lbmRUcnVuY01lbWIpOworCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIHhscmVj LT5zdGFydFRydW5jTWVtYiwKKwkJCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSB4bHJlYy0+ZW5k VHJ1bmNNZW1iKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy94bG9nZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL3hsb2dkZXNjLmMK aW5kZXggNTgwNDBmMjg2NS4uZTUyYTU2MjVhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL3hsb2dkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNj L3hsb2dkZXNjLmMKQEAgLTY2LDcgKzY2LDcgQEAgeGxvZ19kZXNjKFN0cmluZ0luZm8gYnVmLCBY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJQ2hlY2tQb2ludCAqY2hlY2twb2ludCA9IChDaGVj a1BvaW50ICopIHJlYzsKIAogCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInJlZG8gJVgvJVg7ICIK LQkJCQkJCSAidGxpICV1OyBwcmV2IHRsaSAldTsgZnB3ICVzOyB3YWxfbGV2ZWwgJXM7IHhpZCAl dToldTsgb2lkICV1OyBtdWx0aSAldTsgb2Zmc2V0ICV1OyAiCisJCQkJCQkgInRsaSAldTsgcHJl diB0bGkgJXU7IGZwdyAlczsgd2FsX2xldmVsICVzOyB4aWQgJXU6JXU7IG9pZCAldTsgbXVsdGkg JXU7IG9mZnNldCAlbGx1OyAiCiAJCQkJCQkgIm9sZGVzdCB4aWQgJXUgaW4gREIgJXU7IG9sZGVz dCBtdWx0aSAldSBpbiBEQiAldTsgIgogCQkJCQkJICJvbGRlc3QvbmV3ZXN0IGNvbW1pdCB0aW1l c3RhbXAgeGlkOiAldS8ldTsgIgogCQkJCQkJICJvbGRlc3QgcnVubmluZyB4aWQgJXU7ICVzIiwK QEAgLTc5LDcgKzc5LDcgQEAgeGxvZ19kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAkJCQkJCSBYaWRGcm9tRnVsbFRyYW5zYWN0aW9uSWQoY2hlY2twb2ludC0+ bmV4dFhpZCksCiAJCQkJCQkgY2hlY2twb2ludC0+bmV4dE9pZCwKIAkJCQkJCSBjaGVja3BvaW50 LT5uZXh0TXVsdGksCi0JCQkJCQkgY2hlY2twb2ludC0+bmV4dE11bHRpT2Zmc2V0LAorCQkJCQkJ ICh1bnNpZ25lZCBsb25nIGxvbmcpIGNoZWNrcG9pbnQtPm5leHRNdWx0aU9mZnNldCwKIAkJCQkJ CSBjaGVja3BvaW50LT5vbGRlc3RYaWQsCiAJCQkJCQkgY2hlY2twb2ludC0+b2xkZXN0WGlkREIs CiAJCQkJCQkgY2hlY2twb2ludC0+b2xkZXN0TXVsdGksCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L211bHRpeGFjdC5jCmluZGV4IDI3Y2NkZjk1MDAuLjYyM2ZjOGJkYWMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC0xMjY0LDcgKzEyNjQsOCBAQCBHZXROZXdNdWx0 aVhhY3RJZChpbnQgbm1lbWJlcnMsIE11bHRpWGFjdE9mZnNldCAqb2Zmc2V0KQogCiAJTFdMb2Nr UmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKIAotCWRlYnVnX2Vsb2c0KERFQlVHMiwgIkdldE5l dzogcmV0dXJuaW5nICV1IG9mZnNldCAldSIsIHJlc3VsdCwgKm9mZnNldCk7CisJZGVidWdfZWxv ZzQoREVCVUcyLCAiR2V0TmV3OiByZXR1cm5pbmcgJXUgb2Zmc2V0ICVsbHUiLCByZXN1bHQsCisJ CQkJKHVuc2lnbmVkIGxvbmcgbG9uZykgKm9mZnNldCk7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApA QCAtMjI5Myw4ICsyMjk0LDkgQEAgTXVsdGlYYWN0R2V0Q2hlY2twdE11bHRpKGJvb2wgaXNfc2h1 dGRvd24sCiAJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKIAogCWRlYnVnX2Vsb2c2 KERFQlVHMiwKLQkJCQkiTXVsdGlYYWN0OiBjaGVja3BvaW50IGlzIG5leHRNdWx0aSAldSwgbmV4 dE9mZnNldCAldSwgb2xkZXN0TXVsdGkgJXUgaW4gREIgJXUiLAotCQkJCSpuZXh0TXVsdGksICpu ZXh0TXVsdGlPZmZzZXQsICpvbGRlc3RNdWx0aSwgKm9sZGVzdE11bHRpREIpOworCQkJCSJNdWx0 aVhhY3Q6IGNoZWNrcG9pbnQgaXMgbmV4dE11bHRpICV1LCBuZXh0T2Zmc2V0ICVsbHUsIG9sZGVz dE11bHRpICV1IGluIERCICV1IiwKKwkJCQkqbmV4dE11bHRpLCAodW5zaWduZWQgbG9uZyBsb25n KSAqbmV4dE11bHRpT2Zmc2V0LCAqb2xkZXN0TXVsdGksCisJCQkJKm9sZGVzdE11bHRpREIpOwog fQogCiAvKgpAQCAtMjMyOCw4ICsyMzMwLDggQEAgdm9pZAogTXVsdGlYYWN0U2V0TmV4dE1YYWN0 KE11bHRpWGFjdElkIG5leHRNdWx0aSwKIAkJCQkJICBNdWx0aVhhY3RPZmZzZXQgbmV4dE11bHRp T2Zmc2V0KQogewotCWRlYnVnX2Vsb2c0KERFQlVHMiwgIk11bHRpWGFjdDogc2V0dGluZyBuZXh0 IG11bHRpIHRvICV1IG9mZnNldCAldSIsCi0JCQkJbmV4dE11bHRpLCBuZXh0TXVsdGlPZmZzZXQp OworCWRlYnVnX2Vsb2c0KERFQlVHMiwgIk11bHRpWGFjdDogc2V0dGluZyBuZXh0IG11bHRpIHRv ICV1IG9mZnNldCAlbGx1IiwKKwkJCQluZXh0TXVsdGksICh1bnNpZ25lZCBsb25nIGxvbmcpIG5l eHRNdWx0aU9mZnNldCk7CiAJTFdMb2NrQWNxdWlyZShNdWx0aVhhY3RHZW5Mb2NrLCBMV19FWENM VVNJVkUpOwogCU11bHRpWGFjdFN0YXRlLT5uZXh0TVhhY3QgPSBuZXh0TXVsdGk7CiAJTXVsdGlY YWN0U3RhdGUtPm5leHRPZmZzZXQgPSBuZXh0TXVsdGlPZmZzZXQ7CkBAIC0yNTE5LDggKzI1MjEs OCBAQCBNdWx0aVhhY3RBZHZhbmNlTmV4dE1YYWN0KE11bHRpWGFjdElkIG1pbk11bHRpLAogCX0K IAlpZiAoTXVsdGlYYWN0T2Zmc2V0UHJlY2VkZXMoTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQs IG1pbk11bHRpT2Zmc2V0KSkKIAl7Ci0JCWRlYnVnX2Vsb2czKERFQlVHMiwgIk11bHRpWGFjdDog c2V0dGluZyBuZXh0IG9mZnNldCB0byAldSIsCi0JCQkJCW1pbk11bHRpT2Zmc2V0KTsKKwkJZGVi dWdfZWxvZzMoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5nIG5leHQgb2Zmc2V0IHRvICVsbHUi LAorCQkJCQkodW5zaWduZWQgbG9uZyBsb25nKSBtaW5NdWx0aU9mZnNldCk7CiAJCU11bHRpWGFj dFN0YXRlLT5uZXh0T2Zmc2V0ID0gbWluTXVsdGlPZmZzZXQ7CiAJfQogCUxXTG9ja1JlbGVhc2Uo TXVsdGlYYWN0R2VuTG9jayk7CkBAIC0zMjExLDExICszMjEzLDEyIEBAIFRydW5jYXRlTXVsdGlY YWN0KE11bHRpWGFjdElkIG5ld09sZGVzdE11bHRpLCBPaWQgbmV3T2xkZXN0TXVsdGlEQikKIAog CWVsb2coREVCVUcxLCAicGVyZm9ybWluZyBtdWx0aXhhY3QgdHJ1bmNhdGlvbjogIgogCQkgIm9m ZnNldHMgWyV1LCAldSksIG9mZnNldHMgc2VnbWVudHMgWyVsbHgsICVsbHgpLCAiCi0JCSAibWVt YmVycyBbJXUsICV1KSwgbWVtYmVycyBzZWdtZW50cyBbJWxseCwgJWxseCkiLAorCQkgIm1lbWJl cnMgWyVsbHUsICVsbHUpLCBtZW1iZXJzIHNlZ21lbnRzIFslbGx4LCAlbGx4KSIsCiAJCSBvbGRl c3RNdWx0aSwgbmV3T2xkZXN0TXVsdGksCiAJCSAodW5zaWduZWQgbG9uZyBsb25nKSBNdWx0aVhh Y3RJZFRvT2Zmc2V0U2VnbWVudChvbGRlc3RNdWx0aSksCiAJCSAodW5zaWduZWQgbG9uZyBsb25n KSBNdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudChuZXdPbGRlc3RNdWx0aSksCi0JCSBvbGRlc3RP ZmZzZXQsIG5ld09sZGVzdE9mZnNldCwKKwkJICh1bnNpZ25lZCBsb25nIGxvbmcpIG9sZGVzdE9m ZnNldCwKKwkJICh1bnNpZ25lZCBsb25nIGxvbmcpIG5ld09sZGVzdE9mZnNldCwKIAkJICh1bnNp Z25lZCBsb25nIGxvbmcpIE1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50KG9sZGVzdE9mZnNldCksCiAJ CSAodW5zaWduZWQgbG9uZyBsb25nKSBNWE9mZnNldFRvTWVtYmVyU2VnbWVudChuZXdPbGRlc3RP ZmZzZXQpKTsKIApAQCAtMzQ3MSwxMSArMzQ3NCwxMiBAQCBtdWx0aXhhY3RfcmVkbyhYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAogCQllbG9nKERFQlVHMSwgInJlcGxheWluZyBtdWx0aXhhY3Qg dHJ1bmNhdGlvbjogIgogCQkJICJvZmZzZXRzIFsldSwgJXUpLCBvZmZzZXRzIHNlZ21lbnRzIFsl bGx4LCAlbGx4KSwgIgotCQkJICJtZW1iZXJzIFsldSwgJXUpLCBtZW1iZXJzIHNlZ21lbnRzIFsl bGx4LCAlbGx4KSIsCisJCQkgIm1lbWJlcnMgWyVsbHUsICVsbHUpLCBtZW1iZXJzIHNlZ21lbnRz IFslbGx4LCAlbGx4KSIsCiAJCQkgeGxyZWMuc3RhcnRUcnVuY09mZiwgeGxyZWMuZW5kVHJ1bmNP ZmYsCiAJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgTXVsdGlYYWN0SWRUb09mZnNldFNlZ21lbnQo eGxyZWMuc3RhcnRUcnVuY09mZiksCiAJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgTXVsdGlYYWN0 SWRUb09mZnNldFNlZ21lbnQoeGxyZWMuZW5kVHJ1bmNPZmYpLAotCQkJIHhscmVjLnN0YXJ0VHJ1 bmNNZW1iLCB4bHJlYy5lbmRUcnVuY01lbWIsCisJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgeGxy ZWMuc3RhcnRUcnVuY01lbWIsCisJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgeGxyZWMuZW5kVHJ1 bmNNZW1iLAogCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIE1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50 KHhscmVjLnN0YXJ0VHJ1bmNNZW1iKSwKIAkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBNWE9mZnNl dFRvTWVtYmVyU2VnbWVudCh4bHJlYy5lbmRUcnVuY01lbWIpKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCAwYmJlMmVlYTIwLi4xM2EyMGViOGQyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAtODc2LDggKzg3 Niw5IEBAIEluaXRXYWxSZWNvdmVyeShDb250cm9sRmlsZURhdGEgKkNvbnRyb2xGaWxlLCBib29s ICp3YXNTaHV0ZG93bl9wdHIsCiAJCQkJCQkJIFU2NEZyb21GdWxsVHJhbnNhY3Rpb25JZChjaGVj a1BvaW50Lm5leHRYaWQpLAogCQkJCQkJCSBjaGVja1BvaW50Lm5leHRPaWQpKSk7CiAJZXJlcG9y dChERUJVRzEsCi0JCQkoZXJybXNnX2ludGVybmFsKCJuZXh0IE11bHRpWGFjdElkOiAldTsgbmV4 dCBNdWx0aVhhY3RPZmZzZXQ6ICV1IiwKLQkJCQkJCQkgY2hlY2tQb2ludC5uZXh0TXVsdGksIGNo ZWNrUG9pbnQubmV4dE11bHRpT2Zmc2V0KSkpOworCQkJKGVycm1zZ19pbnRlcm5hbCgibmV4dCBN dWx0aVhhY3RJZDogJXU7IG5leHQgTXVsdGlYYWN0T2Zmc2V0OiAlbGx1IiwKKwkJCQkJCQkgY2hl Y2tQb2ludC5uZXh0TXVsdGksCisJCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIGNoZWNrUG9p bnQubmV4dE11bHRpT2Zmc2V0KSkpOwogCWVyZXBvcnQoREVCVUcxLAogCQkJKGVycm1zZ19pbnRl cm5hbCgib2xkZXN0IHVuZnJvemVuIHRyYW5zYWN0aW9uIElEOiAldSwgaW4gZGF0YWJhc2UgJXUi LAogCQkJCQkJCSBjaGVja1BvaW50Lm9sZGVzdFhpZCwgY2hlY2tQb2ludC5vbGRlc3RYaWREQikp KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYyBi L3NyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYwppbmRleCA5M2EwNWQ4MGNh Li40M2I2NzI3NTcwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2NvbnRyb2xkYXRhL3BnX2NvbnRy b2xkYXRhLmMKKysrIGIvc3JjL2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jCkBA IC0yNTMsOCArMjUzLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkgICBDb250 cm9sRmlsZS0+Y2hlY2tQb2ludENvcHkubmV4dE9pZCk7CiAJcHJpbnRmKF8oIkxhdGVzdCBjaGVj a3BvaW50J3MgTmV4dE11bHRpWGFjdElkOiAgJXVcbiIpLAogCQkgICBDb250cm9sRmlsZS0+Y2hl Y2tQb2ludENvcHkubmV4dE11bHRpKTsKLQlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9pbnQncyBO ZXh0TXVsdGlPZmZzZXQ6ICAldVxuIiksCi0JCSAgIENvbnRyb2xGaWxlLT5jaGVja1BvaW50Q29w eS5uZXh0TXVsdGlPZmZzZXQpOworCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5leHRN dWx0aU9mZnNldDogICVsbHVcbiIpLAorCQkgICAodW5zaWduZWQgbG9uZyBsb25nKSBDb250cm9s RmlsZS0+Y2hlY2tQb2ludENvcHkubmV4dE11bHRpT2Zmc2V0KTsKIAlwcmludGYoXygiTGF0ZXN0 IGNoZWNrcG9pbnQncyBvbGRlc3RYSUQ6ICAgICAgICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxl LT5jaGVja1BvaW50Q29weS5vbGRlc3RYaWQpOwogCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2lu dCdzIG9sZGVzdFhJRCdzIERCOiAgICV1XG4iKSwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmVz ZXR3YWwvcGdfcmVzZXR3YWwuYyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYwpp bmRleCBlZDczNjA3YTQ2Li5mZmY0MDFlNDY5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0 d2FsL3BnX3Jlc2V0d2FsLmMKKysrIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5j CkBAIC03MzcsOCArNzM3LDggQEAgUHJpbnRDb250cm9sVmFsdWVzKGJvb2wgZ3Vlc3NlZCkKIAkJ ICAgQ29udHJvbEZpbGUuY2hlY2tQb2ludENvcHkubmV4dE9pZCk7CiAJcHJpbnRmKF8oIkxhdGVz dCBjaGVja3BvaW50J3MgTmV4dE11bHRpWGFjdElkOiAgJXVcbiIpLAogCQkgICBDb250cm9sRmls ZS5jaGVja1BvaW50Q29weS5uZXh0TXVsdGkpOwotCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2lu dCdzIE5leHRNdWx0aU9mZnNldDogICV1XG4iKSwKLQkJICAgQ29udHJvbEZpbGUuY2hlY2tQb2lu dENvcHkubmV4dE11bHRpT2Zmc2V0KTsKKwlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9pbnQncyBO ZXh0TXVsdGlPZmZzZXQ6ICAlbGx1XG4iKSwKKwkJICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgQ29u dHJvbEZpbGUuY2hlY2tQb2ludENvcHkubmV4dE11bHRpT2Zmc2V0KTsKIAlwcmludGYoXygiTGF0 ZXN0IGNoZWNrcG9pbnQncyBvbGRlc3RYSUQ6ICAgICAgICAldVxuIiksCiAJCSAgIENvbnRyb2xG aWxlLmNoZWNrUG9pbnRDb3B5Lm9sZGVzdFhpZCk7CiAJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3Bv aW50J3Mgb2xkZXN0WElEJ3MgREI6ICAgJXVcbiIpLApAQCAtODA5LDggKzgwOSw4IEBAIFByaW50 TmV3Q29udHJvbFZhbHVlcyh2b2lkKQogCiAJaWYgKHNldF9teG9mZiAhPSAtMSkKIAl7Ci0JCXBy aW50ZihfKCJOZXh0TXVsdGlPZmZzZXQ6ICAgICAgICAgICAgICAgICAgICAgICV1XG4iKSwKLQkJ CSAgIENvbnRyb2xGaWxlLmNoZWNrUG9pbnRDb3B5Lm5leHRNdWx0aU9mZnNldCk7CisJCXByaW50 ZihfKCJOZXh0TXVsdGlPZmZzZXQ6ICAgICAgICAgICAgICAgICAgICAgICVsbHVcbiIpLAorCQkJ ICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgQ29udHJvbEZpbGUuY2hlY2tQb2ludENvcHkubmV4dE11 bHRpT2Zmc2V0KTsKIAl9CiAKIAlpZiAoc2V0X29pZCAhPSAwKQotLSAKMi40My4wCgo= --000000000000eb7646062bd2d2d1 Content-Type: application/octet-stream; name="v12-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Disposition: attachment; filename="v12-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5zczs932 RnJvbSAwNTM3YTk0NjkxYzQ0ZjVmYmE0MzMwYzZkMjI2NTZjNWY1YzE0NjZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogVHVlLCAxMyBBdWcgMjAyNCAxNDo0NDo1MCArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjEy IDMvN10gTWFrZSBwZ191cGdyYWRlIGNvbnZlcnQgbXVsdGl4YWN0IG9mZnNldHMuCgpBdXRob3I6 IEhlaWtraSBMaW5uYWthbmdhcyA8aGVpa2tpLmxpbm5ha2FuZ2FzQGlraS5maT4KQXV0aG9yOiBN YXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkF1dGhvcjogWXVyYSBTb2tvbG92IDx5LnNv a29sb3ZAcG9zdGdyZXNwcm8ucnU+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVs dGl4YWN0LmMgfCAgMzUgKy0tCiBzcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUgICAgICAgICAg ICB8ICAgMyArCiBzcmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQgICAgICAgICB8ICAgMyAr CiBzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X29sZC5jICAgICB8IDMzOCArKysrKysrKysr KysrKysrKysrKysrKysrCiBzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X29sZC5oICAgICB8 ICAxMiArCiBzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X3Jld3JpdGUuYyB8IDIzOCArKysr KysrKysrKysrKysrKwogc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyAgICAgICAgfCAg MjkgKystCiBzcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oICAgICAgICB8ICAxMyArLQog c3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uYyAgICAgICAgICAgfCAyMTEgKysrKysrKysrKysr KysrCiBzcmMvYmluL3BnX3VwZ3JhZGUvc2xydV9pby5oICAgICAgICAgICB8ICAyMyArKwogMTAg ZmlsZXMgY2hhbmdlZCwgODczIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3Rfb2xkLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X29sZC5oCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9yZXdyaXRlLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmluL3BnX3VwZ3JhZGUvc2xydV9pby5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v bXVsdGl4YWN0LmMKaW5kZXggY2Q5ZGI1MmU5NS4uZDYzYWUxNzMzMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTExMDMsNyArMTEwMyw2IEBAIEdldE11bHRpWGFj dElkTWVtYmVycyhNdWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0TWVtYmVyICoqbWVtYmVycywK IAlNdWx0aVhhY3RPZmZzZXQgKm9mZnB0cjsKIAlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0OwogCWlu dAkJCWxlbmd0aDsKLQlpbnQJCQl0cnVlbGVuZ3RoOwogCU11bHRpWGFjdElkIG9sZGVzdE1YYWN0 OwogCU11bHRpWGFjdElkIG5leHRNWGFjdDsKIAlNdWx0aVhhY3RJZCB0bXBNWGFjdDsKQEAgLTEy MDIsMTUgKzEyMDEsNiBAQCBHZXRNdWx0aVhhY3RJZE1lbWJlcnMoTXVsdGlYYWN0SWQgbXVsdGks IE11bHRpWGFjdE1lbWJlciAqKm1lbWJlcnMsCiAJICogd2UgaGF2ZSBqdXN0IGZvciB0aGlzOyB0 aGUgcHJvY2VzcyBpbiBjaGFyZ2Ugd2lsbCBzaWduYWwgdGhlIENWIGFzIHNvb24KIAkgKiBhcyBp dCBoYXMgZmluaXNoZWQgd3JpdGluZyB0aGUgbXVsdGl4YWN0IG9mZnNldC4KIAkgKgotCSAqIDMu IEJlY2F1c2UgR2V0TmV3TXVsdGlYYWN0SWQgaW5jcmVtZW50cyBvZmZzZXQgemVybyB0byBvZmZz ZXQgb25lIHRvCi0JICogaGFuZGxlIGNhc2UgIzIsIHRoZXJlIGlzIGFuIGFtYmlndWl0eSBuZWFy IHRoZSBwb2ludCBvZiBvZmZzZXQKLQkgKiB3cmFwYXJvdW5kLiAgSWYgd2Ugc2VlIG5leHQgbXVs dGl4YWN0J3Mgb2Zmc2V0IGlzIG9uZSwgaXMgdGhhdCBvdXIKLQkgKiBtdWx0aXhhY3QncyBhY3R1 YWwgZW5kcG9pbnQsIG9yIGRpZCBpdCBlbmQgYXQgemVybyB3aXRoIGEgc3Vic2VxdWVudAotCSAq IGluY3JlbWVudD8gIFdlIGhhbmRsZSB0aGlzIHVzaW5nIHRoZSBrbm93bGVkZ2UgdGhhdCBpZiB0 aGUgemVybyd0aAotCSAqIG1lbWJlciBzbG90IHdhc24ndCBmaWxsZWQsIGl0J2xsIGNvbnRhaW4g emVybywgYW5kIHplcm8gaXNuJ3QgYSB2YWxpZAotCSAqIHRyYW5zYWN0aW9uIElEIHNvIGl0IGNh bid0IGJlIGEgbXVsdGl4YWN0IG1lbWJlci4gIFRoZXJlZm9yZSwgaWYgd2UKLQkgKiByZWFkIGEg emVybyBmcm9tIHRoZSBtZW1iZXJzIGFycmF5LCBqdXN0IGlnbm9yZSBpdC4KLQkgKgogCSAqIFRo aXMgaXMgYWxsIHByZXR0eSBtZXNzeSwgYnV0IHRoZSBtZXNzIG9jY3VycyBvbmx5IGluIGluZnJl cXVlbnQgY29ybmVyCiAJICogY2FzZXMsIHNvIGl0IHNlZW1zIGJldHRlciB0aGFuIGhvbGRpbmcg dGhlIE11bHRpWGFjdEdlbkxvY2sgZm9yIGEgbG9uZwogCSAqIHRpbWUgb24gZXZlcnkgbXVsdGl4 YWN0IGNyZWF0aW9uLgpAQCAtMTI5Nyw2ICsxMjg3LDkgQEAgcmV0cnk6CiAJTFdMb2NrUmVsZWFz ZShsb2NrKTsKIAlsb2NrID0gTlVMTDsKIAorCS8qIEEgbXVsdGl4aWQgd2l0aCB6ZXJvIG1lbWJl cnMgc2hvdWxkIG5vdCBoYXBwZW4gKi8KKwlBc3NlcnQobGVuZ3RoID4gMCk7CisKIAkvKgogCSAq IElmIHdlIHNsZXB0IGFib3ZlLCBjbGVhbiB1cCBzdGF0ZTsgaXQncyBubyBsb25nZXIgbmVlZGVk LgogCSAqLwpAQCAtMTMwNSw3ICsxMjk4LDYgQEAgcmV0cnk6CiAKIAlwdHIgPSAoTXVsdGlYYWN0 TWVtYmVyICopIHBhbGxvYyhsZW5ndGggKiBzaXplb2YoTXVsdGlYYWN0TWVtYmVyKSk7CiAKLQl0 cnVlbGVuZ3RoID0gMDsKIAlwcmV2X3BhZ2VubyA9IC0xOwogCWZvciAoaW50IGkgPSAwOyBpIDwg bGVuZ3RoOyBpKyssIG9mZnNldCsrKQogCXsKQEAgLTEzNDMsMzYgKzEzMzUsMjcgQEAgcmV0cnk6 CiAJCXhhY3RwdHIgPSAoVHJhbnNhY3Rpb25JZCAqKQogCQkJKE11bHRpWGFjdE1lbWJlckN0bC0+ c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dICsgbWVtYmVyb2ZmKTsKIAotCQlpZiAoIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKCp4YWN0cHRyKSkKLQkJewotCQkJLyogQ29ybmVyIGNhc2UgMzogd2Ug bXVzdCBiZSBsb29raW5nIGF0IHVudXNlZCBzbG90IHplcm8gKi8KLQkJCUFzc2VydChvZmZzZXQg PT0gMCk7Ci0JCQljb250aW51ZTsKLQkJfQorCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQo KnhhY3RwdHIpKTsKIAogCQlmbGFnc29mZiA9IE1YT2Zmc2V0VG9GbGFnc09mZnNldChvZmZzZXQp OwogCQlic2hpZnQgPSBNWE9mZnNldFRvRmxhZ3NCaXRTaGlmdChvZmZzZXQpOwogCQlmbGFnc3B0 ciA9ICh1aW50MzIgKikgKE11bHRpWGFjdE1lbWJlckN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltz bG90bm9dICsgZmxhZ3NvZmYpOwogCi0JCXB0clt0cnVlbGVuZ3RoXS54aWQgPSAqeGFjdHB0cjsK LQkJcHRyW3RydWVsZW5ndGhdLnN0YXR1cyA9ICgqZmxhZ3NwdHIgPj4gYnNoaWZ0KSAmIE1YQUNU X01FTUJFUl9YQUNUX0JJVE1BU0s7Ci0JCXRydWVsZW5ndGgrKzsKKwkJcHRyW2ldLnhpZCA9ICp4 YWN0cHRyOworCQlwdHJbaV0uc3RhdHVzID0gKCpmbGFnc3B0ciA+PiBic2hpZnQpICYgTVhBQ1Rf TUVNQkVSX1hBQ1RfQklUTUFTSzsKIAl9CiAKIAlMV0xvY2tSZWxlYXNlKGxvY2spOwogCi0JLyog QSBtdWx0aXhpZCB3aXRoIHplcm8gbWVtYmVycyBzaG91bGQgbm90IGhhcHBlbiAqLwotCUFzc2Vy dCh0cnVlbGVuZ3RoID4gMCk7Ci0KIAkvKgogCSAqIENvcHkgdGhlIHJlc3VsdCBpbnRvIHRoZSBs b2NhbCBjYWNoZS4KIAkgKi8KLQltWGFjdENhY2hlUHV0KG11bHRpLCB0cnVlbGVuZ3RoLCBwdHIp OworCW1YYWN0Q2FjaGVQdXQobXVsdGksIGxlbmd0aCwgcHRyKTsKIAogCWRlYnVnX2Vsb2czKERF QlVHMiwgIkdldE1lbWJlcnM6IG5vIGNhY2hlIGZvciAlcyIsCi0JCQkJbXhpZF90b19zdHJpbmco bXVsdGksIHRydWVsZW5ndGgsIHB0cikpOworCQkJCW14aWRfdG9fc3RyaW5nKG11bHRpLCBsZW5n dGgsIHB0cikpOwogCSptZW1iZXJzID0gcHRyOwotCXJldHVybiB0cnVlbGVuZ3RoOworCXJldHVy biBsZW5ndGg7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZp bGUgYi9zcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUKaW5kZXggZjgzZDJiNWQzMC4uYjRhZDAx YzAwYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL01ha2VmaWxlCisrKyBiL3NyYy9i aW4vcGdfdXBncmFkZS9NYWtlZmlsZQpAQCAtMTksMTEgKzE5LDE0IEBAIE9CSlMgPSBcCiAJZmls ZS5vIFwKIAlmdW5jdGlvbi5vIFwKIAlpbmZvLm8gXAorCW11bHRpeGFjdF9vbGQubyBcCisJbXVs dGl4YWN0X3Jld3JpdGUubyBcCiAJb3B0aW9uLm8gXAogCXBhcmFsbGVsLm8gXAogCXBnX3VwZ3Jh ZGUubyBcCiAJcmVsZmlsZW51bWJlci5vIFwKIAlzZXJ2ZXIubyBcCisJc2xydV9pby5vIFwKIAl0 YWJsZXNwYWNlLm8gXAogCXRhc2subyBcCiAJdXRpbC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfdXBncmFkZS9tZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZApp bmRleCBjYzJiYTk3ZDlhLi43NmM4ZjIwMDVkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3Jh ZGUvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkCkBAIC04 LDExICs4LDE0IEBAIHBnX3VwZ3JhZGVfc291cmNlcyA9IGZpbGVzKAogICAnZmlsZS5jJywKICAg J2Z1bmN0aW9uLmMnLAogICAnaW5mby5jJywKKyAgJ211bHRpeGFjdF9vbGQuYycsCisgICdtdWx0 aXhhY3RfcmV3cml0ZS5jJywKICAgJ29wdGlvbi5jJywKICAgJ3BhcmFsbGVsLmMnLAogICAncGdf dXBncmFkZS5jJywKICAgJ3JlbGZpbGVudW1iZXIuYycsCiAgICdzZXJ2ZXIuYycsCisgICdzbHJ1 X2lvLmMnLAogICAndGFibGVzcGFjZS5jJywKICAgJ3Rhc2suYycsCiAgICd1dGlsLmMnLApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQuYyBiL3NyYy9iaW4vcGdf dXBncmFkZS9tdWx0aXhhY3Rfb2xkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uMDQ0MjkyOGU4OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9t dWx0aXhhY3Rfb2xkLmMKQEAgLTAsMCArMSwzMzggQEAKKy8qCisgKgltdWx0aXhhY3Rfb2xkLmMK KyAqCisgKglTdXBwb3J0IGZvciByZWFkaW5nIHByZS12MTggZm9ybWF0IHBnX211bHRpeGFjdCBm aWxlcworICoKKyAqCUNvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKyAqCXNyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3Rfb2xkLmMKKyAqLwor CisjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKKworI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgi CisjaW5jbHVkZSAicGdfdXBncmFkZS5oIgorI2luY2x1ZGUgIm11bHRpeGFjdF9vbGQuaCIKKyNp bmNsdWRlICJzbHJ1X2lvLmgiCisKKy8qCisgKiBCZWxvdyBhcmUgYSBidW5jaCBvZiBkZWZpbml0 aW9ucyB0aGF0IGFyZSBjb3B5LXBhc3RlZCBmcm9tIG11bHRpeGFjdC5jIGZyb20KKyAqIHZlcnNp b24gMTcuIFRoZXkgc2hhZG93IHRoZSBuZXcgZGVmaW5pdGlvbnMgaW4gYWNjZXNzL211bHRpeGFj dC5oLCBzbyBpdCdzCisgKiBpbXBvcnRhbnQgdGhhdCB3ZSAqZG9uJ3QqIGluY2x1ZGUgdGhhdCBo ZXJlLiBUaGF0J3MgaXMgYSBiaWcgcmVhc29uIHRoaXMKKyAqIGNvZGUgaGFzIHRvIGJlIGluIGEg c2VwYXJhdGUgc291cmNlIGZpbGUuCisgKgorICogQWxsIHJlZmVyZW5jZXMgdG8gTXVsdGlYYWN0 T2Zmc2V0IGhhdmUgYmVlbiByZXBsYWNlZCB3aXRoIE9sZE11bHRpWGFjdE9mZnNldDsKKyAqLwor dHlwZWRlZiB1aW50MzIgT2xkTXVsdGlYYWN0T2Zmc2V0OworCisjZGVmaW5lIEZpcnN0TXVsdGlY YWN0SWQJKChNdWx0aVhhY3RJZCkgMSkKKworLyoKKyAqIFBvc3NpYmxlIG11bHRpeGFjdCBsb2Nr IG1vZGVzICgic3RhdHVzIikuICBUaGUgZmlyc3QgZm91ciBtb2RlcyBhcmUgZm9yCisgKiB0dXBs ZSBsb2NrcyAoRk9SIEtFWSBTSEFSRSwgRk9SIFNIQVJFLCBGT1IgTk8gS0VZIFVQREFURSwgRk9S IFVQREFURSk7IHRoZQorICogbmV4dCB0d28gYXJlIHVzZWQgZm9yIHVwZGF0ZSBhbmQgZGVsZXRl IG1vZGVzLgorICovCit0eXBlZGVmIGVudW0KK3sKKwlNdWx0aVhhY3RTdGF0dXNGb3JLZXlTaGFy ZSA9IDB4MDAsCisJTXVsdGlYYWN0U3RhdHVzRm9yU2hhcmUgPSAweDAxLAorCU11bHRpWGFjdFN0 YXR1c0Zvck5vS2V5VXBkYXRlID0gMHgwMiwKKwlNdWx0aVhhY3RTdGF0dXNGb3JVcGRhdGUgPSAw eDAzLAorCS8qIGFuIHVwZGF0ZSB0aGF0IGRvZXNuJ3QgdG91Y2ggImtleSIgY29sdW1ucyAqLwor CU11bHRpWGFjdFN0YXR1c05vS2V5VXBkYXRlID0gMHgwNCwKKwkvKiBvdGhlciB1cGRhdGVzLCBh bmQgZGVsZXRlICovCisJTXVsdGlYYWN0U3RhdHVzVXBkYXRlID0gMHgwNSwKK30gTXVsdGlYYWN0 U3RhdHVzOworCisvKiBkb2VzIGEgc3RhdHVzIHZhbHVlIGNvcnJlc3BvbmQgdG8gYSB0dXBsZSB1 cGRhdGU/ICovCisjZGVmaW5lIElTVVBEQVRFX2Zyb21fbXhzdGF0dXMoc3RhdHVzKSBcCisJCQko KHN0YXR1cykgPiBNdWx0aVhhY3RTdGF0dXNGb3JVcGRhdGUpCisKKy8qCisgKiBEZWZpbmVzIGZv ciBPbGRNdWx0aVhhY3RPZmZzZXQgcGFnZSBzaXplcy4gIEEgcGFnZSBpcyB0aGUgc2FtZSBCTENL U1ogYXMgaXMKKyAqIHVzZWQgZXZlcnl3aGVyZSBlbHNlIGluIFBvc3RncmVzLgorICoKKyAqIE5v dGU6IGJlY2F1c2UgT2xkTXVsdGlYYWN0T2Zmc2V0cyBhcmUgMzIgYml0cyBhbmQgd3JhcCBhcm91 bmQgYXQgMHhGRkZGRkZGRiwKKyAqIE11bHRpWGFjdCBwYWdlIG51bWJlcmluZyBhbHNvIHdyYXBz IGFyb3VuZCBhdAorICogMHhGRkZGRkZGRi9NVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRSwgYW5k IHNlZ21lbnQgbnVtYmVyaW5nIGF0CisgKiAweEZGRkZGRkZGL01VTFRJWEFDVF9PRkZTRVRTX1BF Ul9QQUdFL1NMUlVfUEFHRVNfUEVSX1NFR01FTlQuICBXZSBuZWVkCisgKiB0YWtlIG5vIGV4cGxp Y2l0IG5vdGljZSBvZiB0aGF0IGZhY3QgaW4gdGhpcyBtb2R1bGUsIGV4Y2VwdCB3aGVuIGNvbXBh cmluZworICogc2VnbWVudCBhbmQgcGFnZSBudW1iZXJzIGluIFRydW5jYXRlTXVsdGlYYWN0IChz ZWUKKyAqIE9sZE11bHRpWGFjdE9mZnNldFBhZ2VQcmVjZWRlcykuCisgKi8KKworLyogV2UgbmVl ZCBmb3VyIGJ5dGVzIHBlciBvZmZzZXQgKi8KKyNkZWZpbmUgTVVMVElYQUNUX09GRlNFVFNfUEVS X1BBR0UgKEJMQ0tTWiAvIHNpemVvZih1aW50MzIpKQorCitzdGF0aWMgaW5saW5lIGludDY0CitN dWx0aVhhY3RJZFRvT2Zmc2V0UGFnZShNdWx0aVhhY3RJZCBtdWx0aSkKK3sKKwlyZXR1cm4gbXVs dGkgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRTsKK30KKworc3RhdGljIGlubGluZSBpbnQK K011bHRpWGFjdElkVG9PZmZzZXRFbnRyeShNdWx0aVhhY3RJZCBtdWx0aSkKK3sKKwlyZXR1cm4g bXVsdGkgJSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRTsKK30KKworc3RhdGljIGlubGluZSBp bnQ2NAorTXVsdGlYYWN0SWRUb09mZnNldFNlZ21lbnQoTXVsdGlYYWN0SWQgbXVsdGkpCit7CisJ cmV0dXJuIE11bHRpWGFjdElkVG9PZmZzZXRQYWdlKG11bHRpKSAvIFNMUlVfUEFHRVNfUEVSX1NF R01FTlQ7Cit9CisKKy8qCisgKiBUaGUgc2l0dWF0aW9uIGZvciBtZW1iZXJzIGlzIGEgYml0IG1v cmUgY29tcGxleDogd2Ugc3RvcmUgb25lIGJ5dGUgb2YKKyAqIGFkZGl0aW9uYWwgZmxhZyBiaXRz IGZvciBlYWNoIFRyYW5zYWN0aW9uSWQuICBUbyBkbyB0aGlzIHdpdGhvdXQgZ2V0dGluZworICog aW50byBhbGlnbm1lbnQgaXNzdWVzLCB3ZSBzdG9yZSBmb3VyIGJ5dGVzIG9mIGZsYWdzLCBhbmQg dGhlbiB0aGUKKyAqIGNvcnJlc3BvbmRpbmcgNCBYaWRzLiAgRWFjaCBzdWNoIDUtd29yZCAoMjAt Ynl0ZSkgc2V0IHdlIGNhbGwgYSAiZ3JvdXAiLCBhbmQKKyAqIGFyZSBzdG9yZWQgYXMgYSB3aG9s ZSBpbiBwYWdlcy4gIFRodXMsIHdpdGggOGtCIEJMQ0tTWiwgd2Uga2VlcCA0MDkgZ3JvdXBzCisg KiBwZXIgcGFnZS4gIFRoaXMgd2FzdGVzIDEyIGJ5dGVzIHBlciBwYWdlLCBidXQgdGhhdCdzIE9L IC0tIHNpbXBsaWNpdHkgKGFuZAorICogcGVyZm9ybWFuY2UpIHRydW1wcyBzcGFjZSBlZmZpY2ll bmN5IGhlcmUuCisgKgorICogTm90ZSB0aGF0IHRoZSAib2Zmc2V0IiBtYWNyb3Mgd29yayB3aXRo IGJ5dGUgb2Zmc2V0LCBub3QgYXJyYXkgaW5kZXhlcywgc28KKyAqIGFyaXRobWV0aWMgbXVzdCBi ZSBkb25lIHVzaW5nICJjaGFyICoiIHBvaW50ZXJzLgorICovCisvKiBXZSBuZWVkIGVpZ2h0IGJp dHMgcGVyIHhhY3QsIHNvIG9uZSB4YWN0IGZpdHMgaW4gYSBieXRlICovCisjZGVmaW5lIE1YQUNU X01FTUJFUl9CSVRTX1BFUl9YQUNUCQkJOAorI2RlZmluZSBNWEFDVF9NRU1CRVJfRkxBR1NfUEVS X0JZVEUJCQkxCisjZGVmaW5lIE1YQUNUX01FTUJFUl9YQUNUX0JJVE1BU0sJKCgxIDw8IE1YQUNU X01FTUJFUl9CSVRTX1BFUl9YQUNUKSAtIDEpCisKKy8qIGhvdyBtYW55IGZ1bGwgYnl0ZXMgb2Yg ZmxhZ3MgYXJlIHRoZXJlIGluIGEgZ3JvdXA/ICovCisjZGVmaW5lIE1VTFRJWEFDVF9GTEFHQllU RVNfUEVSX0dST1VQCQk0CisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9V UAlcCisJKE1VTFRJWEFDVF9GTEFHQllURVNfUEVSX0dST1VQICogTVhBQ1RfTUVNQkVSX0ZMQUdT X1BFUl9CWVRFKQorLyogc2l6ZSBpbiBieXRlcyBvZiBhIGNvbXBsZXRlIGdyb3VwICovCisjZGVm aW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFIFwKKwkoc2l6ZW9mKFRyYW5zYWN0aW9uSWQp ICogTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQICsgTVVMVElYQUNUX0ZMQUdCWVRF U19QRVJfR1JPVVApCisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BBR0UgKEJM Q0tTWiAvIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFKQorI2RlZmluZSBNVUxUSVhBQ1RfTUVN QkVSU19QRVJfUEFHRQlcCisJKE1VTFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BBR0UgKiBNVUxU SVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVApCisKKy8qIHBhZ2UgaW4gd2hpY2ggYSBtZW1i ZXIgaXMgdG8gYmUgZm91bmQgKi8KK3N0YXRpYyBpbmxpbmUgaW50NjQKK01YT2Zmc2V0VG9NZW1i ZXJQYWdlKE9sZE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCit7CisJcmV0dXJuIG9mZnNldCAvIE1V TFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFOworfQorCisvKiBMb2NhdGlvbiAoYnl0ZSBvZmZzZXQg d2l0aGluIHBhZ2UpIG9mIGZsYWcgd29yZCBmb3IgYSBnaXZlbiBtZW1iZXIgKi8KK3N0YXRpYyBp bmxpbmUgaW50CitNWE9mZnNldFRvRmxhZ3NPZmZzZXQoT2xkTXVsdGlYYWN0T2Zmc2V0IG9mZnNl dCkKK3sKKwlPbGRNdWx0aVhhY3RPZmZzZXQgZ3JvdXAgPSBvZmZzZXQgLyBNVUxUSVhBQ1RfTUVN QkVSU19QRVJfTUVNQkVSR1JPVVA7CisJaW50CQkJZ3JvdXBvbnBnID0gZ3JvdXAgJSBNVUxUSVhB Q1RfTUVNQkVSR1JPVVBTX1BFUl9QQUdFOworCWludAkJCWJ5dGVvZmYgPSBncm91cG9ucGcgKiBN VUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0laRTsKKworCXJldHVybiBieXRlb2ZmOworfQorCitzdGF0 aWMgaW5saW5lIGludAorTVhPZmZzZXRUb0ZsYWdzQml0U2hpZnQoT2xkTXVsdGlYYWN0T2Zmc2V0 IG9mZnNldCkKK3sKKwlpbnQJCQltZW1iZXJfaW5fZ3JvdXAgPSBvZmZzZXQgJSBNVUxUSVhBQ1Rf TUVNQkVSU19QRVJfTUVNQkVSR1JPVVA7CisJaW50CQkJYnNoaWZ0ID0gbWVtYmVyX2luX2dyb3Vw ICogTVhBQ1RfTUVNQkVSX0JJVFNfUEVSX1hBQ1Q7CisKKwlyZXR1cm4gYnNoaWZ0OworfQorCisv KiBMb2NhdGlvbiAoYnl0ZSBvZmZzZXQgd2l0aGluIHBhZ2UpIG9mIFRyYW5zYWN0aW9uSWQgb2Yg Z2l2ZW4gbWVtYmVyICovCitzdGF0aWMgaW5saW5lIGludAorTVhPZmZzZXRUb01lbWJlck9mZnNl dChPbGRNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQoreworCWludAkJCW1lbWJlcl9pbl9ncm91cCA9 IG9mZnNldCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9VUDsKKworCXJldHVybiBN WE9mZnNldFRvRmxhZ3NPZmZzZXQob2Zmc2V0KSArCisJCU1VTFRJWEFDVF9GTEFHQllURVNfUEVS X0dST1VQICsKKwkJbWVtYmVyX2luX2dyb3VwICogc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOworfQor Cit0eXBlZGVmIHN0cnVjdCBPbGRNdWx0aVhhY3RSZWFkZXIKK3sKKwlNdWx0aVhhY3RJZCBuZXh0 TVhhY3Q7CisJdWludDMyCW5leHRPZmZzZXQ7CisKKwlTbHJ1U2VnU3RhdGUgKm9mZnNldDsKKwlT bHJ1U2VnU3RhdGUgKm1lbWJlcnM7Cit9IE9sZE11bHRpWGFjdFJlYWRlcjsKKworT2xkTXVsdGlY YWN0UmVhZGVyICoKK1N0YXJ0T2xkTXVsdGlYYWN0UmVhZCh2b2lkKQoreworCU9sZE11bHRpWGFj dFJlYWRlciAqc3RhdGU7CisJY2hhcgkgICAqZGlyOworCisJc3RhdGUgPSBwZ19tYWxsb2Moc2l6 ZW9mKE9sZE11bHRpWGFjdFJlYWRlcikpOworCXN0YXRlLT5uZXh0TVhhY3QgPSBvbGRfY2x1c3Rl ci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXVsdGk7CisJc3RhdGUtPm5leHRPZmZzZXQgPSBvbGRf Y2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmY7CisKKwlkaXIgPSBwc3ByaW50Zigi JXMvcGdfbXVsdGl4YWN0L29mZnNldHMiLCBvbGRfY2x1c3Rlci5wZ2RhdGEpOworCXN0YXRlLT5v ZmZzZXQgPSBPcGVuU2xydVJlYWQoZGlyKTsKKwlwZ19mcmVlKGRpcik7CisKKwlkaXIgPSBwc3By aW50ZigiJXMvcGdfbXVsdGl4YWN0L21lbWJlcnMiLCBvbGRfY2x1c3Rlci5wZ2RhdGEpOworCXN0 YXRlLT5tZW1iZXJzID0gT3BlblNscnVSZWFkKGRpcik7CisJcGdfZnJlZShkaXIpOworCisJcmV0 dXJuIHN0YXRlOworfQorCisvKgorICogVGhpcyBpcyBhIHNpbXBsaWZpZWQgdmVyc2lvbiBvZiB0 aGUgR2V0TXVsdGlYYWN0SWRNZW1iZXJzKCkgc2VydmVyIGZ1bmN0aW9uLgorICoKKyAqIC0gT25s eSByZXR1cm4gdGhlIHVwZGF0aW5nIG1lbWJlciwgaWYgYW55LiBVcGdyYWRlIG9ubHkgY2FyZXMg YWJvdXQgdGhlIHVwZGF0ZXJzLgorICogICBJZiB0aGVyZSBpcyBubyB1cGRhdGluZyBtZW1iZXIs IHJldHVybiB0aGUgZmlyc3QgbG9ja2luZy1vbmx5IG1lbWJlci4gV2UgZG9uJ3QKKyAqICAgaGF2 ZSBhbnkgd2F5IHRvIHJlcHJlc2VudCAibm8gbWVtYmVycyIsIGJ1dCB3ZSBhbHNvIGRvbid0IG5l ZWQgdG8gcHJlc2VydmUgYWxsCisgKiAgIHRoZSBsb2NraW5nIG1lbWJlcnMuCisgKgorICogLSBX ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGxvY2tpbmcgYW5kIHNvbWUgY29ybmVyIGNhc2Vz IGJlY2F1c2UgdGhlcmUncworICogICBubyBjb25jdXJyZW50IGFjdGl2aXR5LgorICovCit2b2lk CitHZXRPbGRNdWx0aVhhY3RJZFNpbmdsZU1lbWJlcihPbGRNdWx0aVhhY3RSZWFkZXIgKnN0YXRl LCBNdWx0aVhhY3RJZCBtdWx0aSwKKwkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgKnJlc3VsdCwgYm9v bCAqaXN1cGRhdGUpCit7CisJVHJhbnNhY3Rpb25JZCByZXN1bHRfeGlkOworCWJvb2wJCXJlc3Vs dF9pc3VwZGF0ZTsKKwlpbnQ2NAkJcGFnZW5vOworCWludDY0CQlwcmV2X3BhZ2VubzsKKwlpbnQJ CQllbnRyeW5vOworCU9sZE11bHRpWGFjdE9mZnNldCAqb2ZmcHRyOworCU9sZE11bHRpWGFjdE9m ZnNldCBvZmZzZXQ7CisJaW50CQkJbGVuZ3RoOworCU11bHRpWGFjdElkIG5leHRNWGFjdDsKKwlN dWx0aVhhY3RJZCB0bXBNWGFjdDsKKwlPbGRNdWx0aVhhY3RPZmZzZXQgbmV4dE9mZnNldDsKKwlj aGFyCSAgICpidWY7CisKKwluZXh0TVhhY3QgPSBzdGF0ZS0+bmV4dE1YYWN0OworCW5leHRPZmZz ZXQgPSBzdGF0ZS0+bmV4dE9mZnNldDsKKworCS8qCisJICogRmluZCBvdXQgdGhlIG9mZnNldCBh dCB3aGljaCB3ZSBuZWVkIHRvIHN0YXJ0IHJlYWRpbmcgTXVsdGlYYWN0TWVtYmVycworCSAqIGFu ZCB0aGUgbnVtYmVyIG9mIG1lbWJlcnMgaW4gdGhlIG11bHRpeGFjdC4gIFdlIGRldGVybWluZSB0 aGUgbGF0dGVyIGFzCisJICogdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIG11bHRpeGFjdCdz IHN0YXJ0aW5nIG9mZnNldCBhbmQgdGhlIG5leHQKKwkgKiBvbmUncy4gIEhvd2V2ZXIsIHRoZXJl IGFyZSBzb21lIGNvcm5lciBjYXNlcyB0byB3b3JyeSBhYm91dDoKKwkgKgorCSAqIDEuIFRoaXMg bXVsdGl4YWN0IG1heSBiZSB0aGUgbGF0ZXN0IG9uZSBjcmVhdGVkLCBpbiB3aGljaCBjYXNlIHRo ZXJlIGlzCisJICogbm8gbmV4dCBvbmUgdG8gbG9vayBhdC4gIEluIHRoaXMgY2FzZSB0aGUgbmV4 dE9mZnNldCB2YWx1ZSB3ZSBqdXN0CisJICogc2F2ZWQgaXMgdGhlIGNvcnJlY3QgZW5kcG9pbnQu CisJICoKKwkgKiAyLiAodGhpcyBjYW5ub3QgaGFwcGVuIGR1cmluZyB1cGdyYWRlKQorCSAqCisJ ICogMy4gQmVjYXVzZSBHZXROZXdNdWx0aVhhY3RJZCBpbmNyZW1lbnRzIG9mZnNldCB6ZXJvIHRv IG9mZnNldCBvbmUgdG8KKwkgKiBoYW5kbGUgY2FzZSAjMiwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5 IG5lYXIgdGhlIHBvaW50IG9mIG9mZnNldAorCSAqIHdyYXBhcm91bmQuICBJZiB3ZSBzZWUgbmV4 dCBtdWx0aXhhY3QncyBvZmZzZXQgaXMgb25lLCBpcyB0aGF0IG91cgorCSAqIG11bHRpeGFjdCdz IGFjdHVhbCBlbmRwb2ludCwgb3IgZGlkIGl0IGVuZCBhdCB6ZXJvIHdpdGggYSBzdWJzZXF1ZW50 CisJICogaW5jcmVtZW50PyAgV2UgaGFuZGxlIHRoaXMgdXNpbmcgdGhlIGtub3dsZWRnZSB0aGF0 IGlmIHRoZSB6ZXJvJ3RoCisJICogbWVtYmVyIHNsb3Qgd2Fzbid0IGZpbGxlZCwgaXQnbGwgY29u dGFpbiB6ZXJvLCBhbmQgemVybyBpc24ndCBhIHZhbGlkCisJICogdHJhbnNhY3Rpb24gSUQgc28g aXQgY2FuJ3QgYmUgYSBtdWx0aXhhY3QgbWVtYmVyLiAgVGhlcmVmb3JlLCBpZiB3ZQorCSAqIHJl YWQgYSB6ZXJvIGZyb20gdGhlIG1lbWJlcnMgYXJyYXksIGp1c3QgaWdub3JlIGl0LgorCSAqLwor CXBhZ2VubyA9IE11bHRpWGFjdElkVG9PZmZzZXRQYWdlKG11bHRpKTsKKwllbnRyeW5vID0gTXVs dGlYYWN0SWRUb09mZnNldEVudHJ5KG11bHRpKTsKKworCWJ1ZiA9IFNscnVSZWFkU3dpdGNoUGFn ZShzdGF0ZS0+b2Zmc2V0LCBwYWdlbm8pOworCW9mZnB0ciA9IChPbGRNdWx0aVhhY3RPZmZzZXQg KikgYnVmOworCW9mZnB0ciArPSBlbnRyeW5vOworCW9mZnNldCA9ICpvZmZwdHI7CisKKwlBc3Nl cnQob2Zmc2V0ICE9IDApOworCisJLyoKKwkgKiBVc2UgdGhlIHNhbWUgaW5jcmVtZW50IHJ1bGUg YXMgR2V0TmV3TXVsdGlYYWN0SWQoKSwgdGhhdCBpcywgZG9uJ3QKKwkgKiBoYW5kbGUgd3JhcGFy b3VuZCBleHBsaWNpdGx5IHVudGlsIG5lZWRlZC4KKwkgKi8KKwl0bXBNWGFjdCA9IG11bHRpICsg MTsKKworCWlmIChuZXh0TVhhY3QgPT0gdG1wTVhhY3QpCisJeworCQkvKiBDb3JuZXIgY2FzZSAx OiB0aGVyZSBpcyBubyBuZXh0IG11bHRpeGFjdCAqLworCQlsZW5ndGggPSBuZXh0T2Zmc2V0IC0g b2Zmc2V0OworCX0KKwllbHNlCisJeworCQlPbGRNdWx0aVhhY3RPZmZzZXQgbmV4dE1YT2Zmc2V0 OworCisJCS8qIGhhbmRsZSB3cmFwYXJvdW5kIGlmIG5lZWRlZCAqLworCQlpZiAodG1wTVhhY3Qg PCBGaXJzdE11bHRpWGFjdElkKQorCQkJdG1wTVhhY3QgPSBGaXJzdE11bHRpWGFjdElkOworCisJ CXByZXZfcGFnZW5vID0gcGFnZW5vOworCisJCXBhZ2VubyA9IE11bHRpWGFjdElkVG9PZmZzZXRQ YWdlKHRtcE1YYWN0KTsKKwkJZW50cnlubyA9IE11bHRpWGFjdElkVG9PZmZzZXRFbnRyeSh0bXBN WGFjdCk7CisKKwkJaWYgKHBhZ2VubyAhPSBwcmV2X3BhZ2VubykKKwkJeworCQkJYnVmID0gU2xy dVJlYWRTd2l0Y2hQYWdlKHN0YXRlLT5vZmZzZXQsIHBhZ2Vubyk7CisJCX0KKworCQlvZmZwdHIg PSAoT2xkTXVsdGlYYWN0T2Zmc2V0ICopIGJ1ZjsKKwkJb2ZmcHRyICs9IGVudHJ5bm87CisJCW5l eHRNWE9mZnNldCA9ICpvZmZwdHI7CisKKwkJaWYgKG5leHRNWE9mZnNldCA9PSAwKQorCQl7CisJ CQkvKiBDb3JuZXIgY2FzZSAyOiBuZXh0IG11bHRpeGFjdCBpcyBzdGlsbCBiZWluZyBmaWxsZWQg aW4gKi8KKwkJCUFzc2VydChmYWxzZSk7IC8qIHNob3VsZG4ndCBoYXBwZW4gZHVyaW5nIHVwZ3Jh ZGUgKi8KKwkJfQorCisJCWxlbmd0aCA9IG5leHRNWE9mZnNldCAtIG9mZnNldDsKKwl9CisKKwly ZXN1bHRfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJcmVzdWx0X2lzdXBkYXRlID0gZmFs c2U7CisJcHJldl9wYWdlbm8gPSAtMTsKKwlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsr LCBvZmZzZXQrKykKKwl7CisJCVRyYW5zYWN0aW9uSWQgKnhhY3RwdHI7CisJCXVpbnQzMgkgICAq ZmxhZ3NwdHI7CisJCWludAkJCWZsYWdzb2ZmOworCQlpbnQJCQlic2hpZnQ7CisJCWludAkJCW1l bWJlcm9mZjsKKwkJTXVsdGlYYWN0U3RhdHVzIHN0YXR1czsKKworCQlwYWdlbm8gPSBNWE9mZnNl dFRvTWVtYmVyUGFnZShvZmZzZXQpOworCQltZW1iZXJvZmYgPSBNWE9mZnNldFRvTWVtYmVyT2Zm c2V0KG9mZnNldCk7CisKKwkJaWYgKHBhZ2VubyAhPSBwcmV2X3BhZ2VubykKKwkJeworCQkJYnVm ID0gU2xydVJlYWRTd2l0Y2hQYWdlKHN0YXRlLT5tZW1iZXJzLCBwYWdlbm8pOworCQkJcHJldl9w YWdlbm8gPSBwYWdlbm87CisJCX0KKworCQl4YWN0cHRyID0gKFRyYW5zYWN0aW9uSWQgKikgKGJ1 ZiArIG1lbWJlcm9mZik7CisKKwkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGFjdHB0cikp CisJCXsKKwkJCS8qIENvcm5lciBjYXNlIDM6IHdlIG11c3QgYmUgbG9va2luZyBhdCB1bnVzZWQg c2xvdCB6ZXJvICovCisJCQlBc3NlcnQob2Zmc2V0ID09IDApOworCQkJY29udGludWU7CisJCX0K KworCQlmbGFnc29mZiA9IE1YT2Zmc2V0VG9GbGFnc09mZnNldChvZmZzZXQpOworCQlic2hpZnQg PSBNWE9mZnNldFRvRmxhZ3NCaXRTaGlmdChvZmZzZXQpOworCQlmbGFnc3B0ciA9ICh1aW50MzIg KikgKGJ1ZiArIGZsYWdzb2ZmKTsKKworCQlzdGF0dXMgPSAoKmZsYWdzcHRyID4+IGJzaGlmdCkg JiBNWEFDVF9NRU1CRVJfWEFDVF9CSVRNQVNLOworCisJCS8qIFZlcmlmeSB0aGF0IHRoZXJlIGlz IGEgc2luZ2xlIHVwZGF0ZSBYaWQgYW1vbmcgdGhlIGdpdmVuIG1lbWJlcnMuICovCisJCWlmIChJ U1VQREFURV9mcm9tX214c3RhdHVzKHN0YXR1cykpCisJCXsKKwkJCWlmIChyZXN1bHRfaXN1cGRh dGUpCisJCQkJcGdfZmF0YWwoIm11bHRpeGFjdCAldSBoYXMgbW9yZSB0aGFuIG9uZSB1cGRhdGlu ZyBtZW1iZXIiLAorCQkJCQkJIG11bHRpKTsKKwkJCXJlc3VsdF94aWQgPSAqeGFjdHB0cjsKKwkJ CXJlc3VsdF9pc3VwZGF0ZSA9IHRydWU7CisJCX0KKwkJZWxzZSBpZiAoIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHJlc3VsdF94aWQpKQorCQkJcmVzdWx0X3hpZCA9ICp4YWN0cHRyOworCX0KKworCS8q IEEgbXVsdGl4aWQgd2l0aCB6ZXJvIG1lbWJlcnMgc2hvdWxkIG5vdCBoYXBwZW4gKi8KKwlBc3Nl cnQoVHJhbnNhY3Rpb25JZElzVmFsaWQocmVzdWx0X3hpZCkpOworCisJKnJlc3VsdCA9IHJlc3Vs dF94aWQ7CisJKmlzdXBkYXRlID0gcmVzdWx0X2lzdXBkYXRlOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQuaCBiL3NyYy9iaW4vcGdfdXBncmFkZS9tdWx0 aXhhY3Rfb2xkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzA4MDBj MWNkYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3Rfb2xk LmgKQEAgLTAsMCArMSwxMiBAQAorLyoKKyAqCW11bHRpeGFjdF9vbGQuaAorICoKKyAqCUNvcHly aWdodCAoYykgMjAxMC0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor ICoJc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQuaAorICovCisKK3R5cGVkZWYgc3Ry dWN0IE9sZE11bHRpWGFjdFJlYWRlciBPbGRNdWx0aVhhY3RSZWFkZXI7CisKK2V4dGVybiBPbGRN dWx0aVhhY3RSZWFkZXIgKlN0YXJ0T2xkTXVsdGlYYWN0UmVhZCh2b2lkKTsKK2V4dGVybiB2b2lk IEdldE9sZE11bHRpWGFjdElkU2luZ2xlTWVtYmVyKE9sZE11bHRpWGFjdFJlYWRlciAqc3RhdGUs IE11bHRpWGFjdElkIG11bHRpLAorCQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCAqcmVzdWx0LCBi b29sICppc3VwZGF0ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0 X3Jld3JpdGUuYyBiL3NyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3RfcmV3cml0ZS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjdiM2FlYjgwYzAKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X3Jld3JpdGUuYwpAQCAtMCwwICsx LDIzOCBAQAorLyoKKyAqCW11bHRpeGFjdF9yZXdyaXRlLmMKKyAqCisgKglSZXdyaXRlIHByZS12 MTggbXVsdGl4YWN0cyB0byBuZXcgZm9ybWF0IHdpdGggNjQtYml0IE11bHRpWGFjdE9mZnNldHMK KyAqCisgKglDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisgKglzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X3Jld3JpdGUuYworICovCisK KyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVkZSAibXVsdGl4YWN0X29sZC5oIgor I2luY2x1ZGUgInBnX3VwZ3JhZGUuaCIKKyNpbmNsdWRlICJzbHJ1X2lvLmgiCisKKyNpbmNsdWRl ICJhY2Nlc3MvbXVsdGl4YWN0LmgiCisjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdF9pbnRlcm5h bC5oIgorCit0eXBlZGVmIHN0cnVjdAoreworCU11bHRpWGFjdElkIG5leHRNWGFjdDsKKwlNdWx0 aVhhY3RPZmZzZXQgbmV4dE9mZnNldDsKKworCVNscnVTZWdTdGF0ZSAqb2Zmc2V0OworCVNscnVT ZWdTdGF0ZSAqbWVtYmVyczsKK30gTXVsdGlYYWN0V3JpdGVyOworCitzdGF0aWMgTXVsdGlYYWN0 V3JpdGVyICpTdGFydE11bHRpWGFjdFdyaXRlKE11bHRpWGFjdElkIGZpcnN0TXVsdGksIE11bHRp WGFjdE9mZnNldCBmaXJzdE9mZnNldCk7CitzdGF0aWMgTXVsdGlYYWN0SWQgR2V0TmV3TXVsdGlY YWN0SWQoTXVsdGlYYWN0V3JpdGVyICpzdGF0ZSwgaW50IG5tZW1iZXJzLCBNdWx0aVhhY3RPZmZz ZXQgKm9mZnNldCk7CitzdGF0aWMgdm9pZCBSZWNvcmROZXdNdWx0aVhhY3QoTXVsdGlYYWN0V3Jp dGVyICpzdGF0ZSwKKwkJCQkJCQkgICBNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0LAorCQkJCQkJCSAg IE11bHRpWGFjdElkIG11bHRpLAorCQkJCQkJCSAgIGludCBubWVtYmVycywgTXVsdGlYYWN0TWVt YmVyICptZW1iZXJzKTsKK3N0YXRpYyB2b2lkIENsb3NlTXVsdGlYYWN0V3JpdGUoTXVsdGlYYWN0 V3JpdGVyICpzdGF0ZSk7CisKKworLyoKKyAqIENvbnZlcnQgcGdfbXVsdGl4YWN0L29mZnNldCBh bmQgL21lbWJlcnMgdG8gbmV3IGZvcm1hdCB3aXRoIDY0LWJpdCBvZmZzZXRzLgorICovCit2b2lk Citjb252ZXJ0X211bHRpeGFjdHMoTXVsdGlYYWN0SWQgKm5ld19ueHRtdWx0aSwgTXVsdGlYYWN0 T2Zmc2V0ICpuZXdfbnh0bXhvZmYpCit7CisJTXVsdGlYYWN0V3JpdGVyCSAgICpuZXdfd3JpdGVy OworCU11bHRpWGFjdElkCQkJb2xkZXN0X211bHRpID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEu Y2hrcG50X29sZHN0TXVsdGksCisJCQkJCQluZXh0X211bHRpID0gb2xkX2NsdXN0ZXIuY29udHJv bGRhdGEuY2hrcG50X254dG11bHRpLAorCQkJCQkJbXVsdGk7CisJT2xkTXVsdGlYYWN0UmVhZGVy ICpvbGRfcmVhZGVyOworCisJaWYgKG5leHRfbXVsdGkgPCBGaXJzdE11bHRpWGFjdElkKQorCQlu ZXh0X211bHRpID0gRmlyc3RNdWx0aVhhY3RJZDsKKworCW9sZF9yZWFkZXIgPSBTdGFydE9sZE11 bHRpWGFjdFJlYWQoKTsKKwluZXdfd3JpdGVyID0gU3RhcnRNdWx0aVhhY3RXcml0ZShvbGRlc3Rf bXVsdGksIDEpOworCisJLyoKKwkgKiBSZWFkIG11bHRpeGlkcyBmcm9tIG9sZCBmaWxlcyBvbmUg Ynkgb25lLCBhbmQgd3JpdGUgdGhlbSBiYWNrIGluIHRoZQorCSAqIG5ldyBmb3JtYXQuCisJICoK KwkgKiBUaGUgbG9ja2luZy1vbmx5IFhJRHMgdGhhdCBtYXkgYmUgcGFydCBvZiBtdWx0aS14aWRz IGRvbid0IG1hdHRlciBhZnRlcgorCSAqIHVwZ3JhZGUsIGFzIHRoZXJlIGNhbiBiZSBubyB0cmFu c2FjdGlvbnMgcnVubmluZyBhY3Jvc3MgdXBncmFkZS4gU28gYXMKKwkgKiBhIGxpdHRsZSBvcHRp bWl6YXRpb24sIHdlIG9ubHkgcmVhZCBvbmUgbWVtYmVyIGZyb20gZWFjaCBtdWx0aXhpZDogdGhl CisJICogb25lIHVwZGF0aW5nIG9uZSwgb3IgaWYgdGhlcmUgd2FzIG5vIHVwZGF0ZSwgYXJiaXRy YXJpbHkgdGhlIGZpcnN0CisJICogbG9ja2luZyB4aWQuCisJICovCisJZm9yIChtdWx0aSA9IG9s ZGVzdF9tdWx0aTsgbXVsdGkgIT0gbmV4dF9tdWx0aTspCisJeworCQlUcmFuc2FjdGlvbklkIHhp ZDsKKwkJYm9vbAkJaXN1cGRhdGU7CisJCU11bHRpWGFjdE1lbWJlciBtZW1iZXI7CisJCU11bHRp WGFjdElkIG5ld211bHRpOworCQlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0OworCisJCS8qIFJlYWQg dGhlIG9sZCBtdWx0aXhpZCAqLworCQlHZXRPbGRNdWx0aVhhY3RJZFNpbmdsZU1lbWJlcihvbGRf cmVhZGVyLCBtdWx0aSwgJnhpZCwgJmlzdXBkYXRlKTsKKworCQkvKiBXcml0ZSBpdCBvdXQgaW4g bmV3IGZvcm1hdCAqLworCQltZW1iZXIueGlkID0geGlkOworCQltZW1iZXIuc3RhdHVzID0gaXN1 cGRhdGUgPyBNdWx0aVhhY3RTdGF0dXNVcGRhdGUgOiBNdWx0aVhhY3RTdGF0dXNGb3JLZXlTaGFy ZTsKKwkJbmV3bXVsdGkgPSBHZXROZXdNdWx0aVhhY3RJZChuZXdfd3JpdGVyLCAxLCAmb2Zmc2V0 KTsKKwkJQXNzZXJ0KG5ld211bHRpID09IG11bHRpKTsKKwkJUmVjb3JkTmV3TXVsdGlYYWN0KG5l d193cml0ZXIsIG9mZnNldCwgbXVsdGksIDEsICZtZW1iZXIpOworCisJCW11bHRpKys7CisJCWlm IChtdWx0aSA8IEZpcnN0TXVsdGlYYWN0SWQpCisJCQltdWx0aSA9IEZpcnN0TXVsdGlYYWN0SWQ7 CisJfQorCisJLyoKKwkgKiBVcGRhdGUgdGhlIG5leHRNWGFjdC9PZmZzZXQgdmFsdWVzIGluIHRo ZSBjb250cm9sIGZpbGUgdG8gbWF0Y2ggd2hhdCB3ZQorCSAqIHdyb3RlLiBUaGUgbmV4dE1YYWN0 IHNob3VsZCBiZSB1bmNoYW5nZWQsIGJ1dCBiZWNhdXNlIHdlIGlnbm9yZWQgdGhlCisJICogbG9j a2luZyBYSURzIG1lbWJlcnMsIHRoZSBuZXh0T2Zmc2V0IHdpbGwgYmUgZGlmZmVyZW50LgorCSAq LworCUFzc2VydChuZXdfd3JpdGVyLT5uZXh0TVhhY3QgPT0gbmV4dF9tdWx0aSk7CisJKm5ld19u eHRtdWx0aSA9IG5leHRfbXVsdGk7CisJKm5ld19ueHRteG9mZiA9IG5ld193cml0ZXItPm5leHRP ZmZzZXQ7CisKKwkvKiBSZWxlYXNlIHJlc291cmNlcyAqLworCUNsb3NlTXVsdGlYYWN0V3JpdGUo bmV3X3dyaXRlcik7Cit9CisKKy8qIFN1cHBvcnQgcm91dGluZXMgZm9yIHdyaXRpbmcgdGhlIG5l dyBmb3JtYXQgKi8KKworc3RhdGljIE11bHRpWGFjdFdyaXRlciAqCitTdGFydE11bHRpWGFjdFdy aXRlKE11bHRpWGFjdElkIGZpcnN0TXVsdGksIE11bHRpWGFjdE9mZnNldCBmaXJzdE9mZnNldCkK K3sKKwlNdWx0aVhhY3RXcml0ZXIgKnN0YXRlOworCWNoYXIJICAgKmRpcjsKKworCXN0YXRlID0g cGdfbWFsbG9jKHNpemVvZihNdWx0aVhhY3RXcml0ZXIpKTsKKwlzdGF0ZS0+bmV4dE1YYWN0ID0g Zmlyc3RNdWx0aTsKKwlzdGF0ZS0+bmV4dE9mZnNldCA9IGZpcnN0T2Zmc2V0OworCisJZGlyID0g cHNwcmludGYoIiVzL3BnX211bHRpeGFjdC9vZmZzZXRzIiwgbmV3X2NsdXN0ZXIucGdkYXRhKTsK KwlzdGF0ZS0+b2Zmc2V0ID0gT3BlblNscnVXcml0ZShkaXIsIE11bHRpWGFjdElkVG9PZmZzZXRQ YWdlKGZpcnN0TXVsdGkpKTsKKwlwZ19mcmVlKGRpcik7CisKKwlkaXIgPSBwc3ByaW50ZigiJXMv cGdfbXVsdGl4YWN0L21lbWJlcnMiLCBuZXdfY2x1c3Rlci5wZ2RhdGEpOworCXN0YXRlLT5tZW1i ZXJzID0gT3BlblNscnVXcml0ZShkaXIsIE1YT2Zmc2V0VG9NZW1iZXJQYWdlKDEpKTsKKwlwZ19m cmVlKGRpcik7CisKKwlyZXR1cm4gc3RhdGU7Cit9CisKK3N0YXRpYyB2b2lkCitDbG9zZU11bHRp WGFjdFdyaXRlKE11bHRpWGFjdFdyaXRlciAqc3RhdGUpCit7CisJQ2xvc2VTbHJ1V3JpdGUoc3Rh dGUtPm9mZnNldCk7CisJQ2xvc2VTbHJ1V3JpdGUoc3RhdGUtPm1lbWJlcnMpOworCXBnX2ZyZWUo c3RhdGUpOworfQorCisvKgorICogU2ltcGxpZmllZCBjb3B5IG9mIHRoZSBjb3JyZXNwb25kaW5n IHNlcnZlciBmdW5jdGlvbgorICovCitzdGF0aWMgTXVsdGlYYWN0SWQKK0dldE5ld011bHRpWGFj dElkKE11bHRpWGFjdFdyaXRlciAqc3RhdGUsIGludCBubWVtYmVycywgTXVsdGlYYWN0T2Zmc2V0 ICpvZmZzZXQpCit7CisJTXVsdGlYYWN0SWQJCXJlc3VsdDsKKworCS8qIEhhbmRsZSB3cmFwYXJv dW5kIG9mIHRoZSBuZXh0TVhhY3QgY291bnRlciAqLworCWlmIChzdGF0ZS0+bmV4dE1YYWN0IDwg Rmlyc3RNdWx0aVhhY3RJZCkKKwkJc3RhdGUtPm5leHRNWGFjdCA9IEZpcnN0TXVsdGlYYWN0SWQ7 CisKKwkvKiBBc3NpZ24gdGhlIE1YSUQgKi8KKwlyZXN1bHQgPSBzdGF0ZS0+bmV4dE1YYWN0Owor CisJLyoKKwkgKiBSZXNlcnZlIHRoZSBtZW1iZXJzIHNwYWNlLCBzaW1pbGFybHkgdG8gYWJvdmUu CisJICovCisJKm9mZnNldCA9IHN0YXRlLT5uZXh0T2Zmc2V0OworCisJLyoKKwkgKiBBZHZhbmNl IGNvdW50ZXJzLiAgQXMgaW4gR2V0TmV3VHJhbnNhY3Rpb25JZCgpLCB0aGlzIG11c3Qgbm90IGhh cHBlbgorCSAqIHVudGlsIGFmdGVyIGZpbGUgZXh0ZW5zaW9uIGhhcyBzdWNjZWVkZWQhCisJICoK KwkgKiBXZSBkb24ndCBjYXJlIGFib3V0IE11bHRpWGFjdElkIHdyYXBhcm91bmQgaGVyZTsgaXQg d2lsbCBiZSBoYW5kbGVkIGJ5CisJICogdGhlIG5leHQgaXRlcmF0aW9uLiAgQnV0IG5vdGUgdGhh dCBuZXh0TVhhY3QgbWF5IGJlIEludmFsaWRNdWx0aVhhY3RJZAorCSAqIG9yIHRoZSBmaXJzdCB2 YWx1ZSBvbiBhIHNlZ21lbnQtYmVnaW5uaW5nIHBhZ2UgYWZ0ZXIgdGhpcyByb3V0aW5lCisJICog ZXhpdHMsIHNvIGFueW9uZSBlbHNlIGxvb2tpbmcgYXQgdGhlIHZhcmlhYmxlIG11c3QgYmUgcHJl cGFyZWQgdG8gZGVhbAorCSAqIHdpdGggZWl0aGVyIGNhc2UuICBTaW1pbGFybHksIG5leHRPZmZz ZXQgbWF5IGJlIHplcm8sIGJ1dCB3ZSB3b24ndCB1c2UKKwkgKiB0aGF0IGFzIHRoZSBhY3R1YWwg c3RhcnQgb2Zmc2V0IG9mIHRoZSBuZXh0IG11bHRpeGFjdC4KKwkgKi8KKwkoc3RhdGUtPm5leHRN WGFjdCkrKzsKKworCXN0YXRlLT5uZXh0T2Zmc2V0ICs9IG5tZW1iZXJzOworCisJcmV0dXJuIHJl c3VsdDsKK30KKworLyoKKyAqIFdyaXRlIGEgbmV3IG11bHRpeGFjdCB3aXRoIG1lbWJlcnMuCisg KgorICogU2ltcGxpZmllZCB2ZXJzaW9uIG9mIHRoZSBjb3JyZXNwb2Rpbmcgc2VydmVyIGZ1bmN0 aW9uLgorICovCitzdGF0aWMgdm9pZAorUmVjb3JkTmV3TXVsdGlYYWN0KE11bHRpWGFjdFdyaXRl ciAqc3RhdGUsIE11bHRpWGFjdE9mZnNldCBvZmZzZXQsCisJCQkJICAgTXVsdGlYYWN0SWQgbXVs dGksCisJCQkJICAgaW50IG5tZW1iZXJzLCBNdWx0aVhhY3RNZW1iZXIgKm1lbWJlcnMpCit7CisJ aW50NjQJCXBhZ2VubzsKKwlpbnQ2NAkJcHJldl9wYWdlbm87CisJaW50CQkJZW50cnlubzsKKwor CWNoYXIJICAgKmJ1ZjsKKwlNdWx0aVhhY3RPZmZzZXQgKm9mZnB0cjsKKworCXBhZ2VubyA9IE11 bHRpWGFjdElkVG9PZmZzZXRQYWdlKG11bHRpKTsKKwllbnRyeW5vID0gTXVsdGlYYWN0SWRUb09m ZnNldEVudHJ5KG11bHRpKTsKKworCS8qCisJICogTm90ZTogd2UgcGFzcyB0aGUgTXVsdGlYYWN0 SWQgdG8gU2ltcGxlTHJ1UmVhZFBhZ2UgYXMgdGhlICJ0cmFuc2FjdGlvbiIKKwkgKiB0byBjb21w bGFpbiBhYm91dCBpZiB0aGVyZSdzIGFueSBJL08gZXJyb3IuICBUaGlzIGlzIGtpbmRhIGJvZ3Vz LCBidXQKKwkgKiBzaW5jZSB0aGUgZXJyb3JzIHdpbGwgYWx3YXlzIGdpdmUgdGhlIGZ1bGwgcGF0 aG5hbWUsIGl0IHNob3VsZCBiZSBjbGVhcgorCSAqIGVub3VnaCB0aGF0IGEgTXVsdGlYYWN0SWQg aXMgcmVhbGx5IGludm9sdmVkLiAgUGVyaGFwcyBzb21lZGF5IHdlJ2xsCisJICogdGFrZSB0aGUg dHJvdWJsZSB0byBnZW5lcmFsaXplIHRoZSBzbHJ1LmMgZXJyb3IgcmVwb3J0aW5nIGNvZGUuCisJ ICovCisJYnVmID0gU2xydVdyaXRlU3dpdGNoUGFnZShzdGF0ZS0+b2Zmc2V0LCBwYWdlbm8pOwor CW9mZnB0ciA9IChNdWx0aVhhY3RPZmZzZXQgKikgYnVmOworCW9mZnB0ciArPSBlbnRyeW5vOwor CisJKm9mZnB0ciA9IG9mZnNldDsKKworCXByZXZfcGFnZW5vID0gLTE7CisKKwlmb3IgKGludCBp ID0gMDsgaSA8IG5tZW1iZXJzOyBpKyssIG9mZnNldCsrKQorCXsKKwkJVHJhbnNhY3Rpb25JZCAq bWVtYmVycHRyOworCQl1aW50MzIJICAgKmZsYWdzcHRyOworCQl1aW50MzIJCWZsYWdzdmFsOwor CQlpbnQJCQlic2hpZnQ7CisJCWludAkJCWZsYWdzb2ZmOworCQlpbnQJCQltZW1iZXJvZmY7CisK KwkJQXNzZXJ0KG1lbWJlcnNbaV0uc3RhdHVzIDw9IE11bHRpWGFjdFN0YXR1c1VwZGF0ZSk7CisK KwkJcGFnZW5vID0gTVhPZmZzZXRUb01lbWJlclBhZ2Uob2Zmc2V0KTsKKwkJbWVtYmVyb2ZmID0g TVhPZmZzZXRUb01lbWJlck9mZnNldChvZmZzZXQpOworCQlmbGFnc29mZiA9IE1YT2Zmc2V0VG9G bGFnc09mZnNldChvZmZzZXQpOworCQlic2hpZnQgPSBNWE9mZnNldFRvRmxhZ3NCaXRTaGlmdChv ZmZzZXQpOworCisJCWlmIChwYWdlbm8gIT0gcHJldl9wYWdlbm8pCisJCXsKKwkJCWJ1ZiA9IFNs cnVXcml0ZVN3aXRjaFBhZ2Uoc3RhdGUtPm1lbWJlcnMsIHBhZ2Vubyk7CisJCQlwcmV2X3BhZ2Vu byA9IHBhZ2VubzsKKwkJfQorCisJCW1lbWJlcnB0ciA9IChUcmFuc2FjdGlvbklkICopIChidWYg KyBtZW1iZXJvZmYpOworCisJCSptZW1iZXJwdHIgPSBtZW1iZXJzW2ldLnhpZDsKKworCQlmbGFn c3B0ciA9ICh1aW50MzIgKikgKGJ1ZiArIGZsYWdzb2ZmKTsKKworCQlmbGFnc3ZhbCA9ICpmbGFn c3B0cjsKKwkJZmxhZ3N2YWwgJj0gfigoKDEgPDwgTVhBQ1RfTUVNQkVSX0JJVFNfUEVSX1hBQ1Qp IC0gMSkgPDwgYnNoaWZ0KTsKKwkJZmxhZ3N2YWwgfD0gKG1lbWJlcnNbaV0uc3RhdHVzIDw8IGJz aGlmdCk7CisJCSpmbGFnc3B0ciA9IGZsYWdzdmFsOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFk ZS5jCmluZGV4IDM2YzdmMzg3OWQuLjliZjE5MWI5ODQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf dXBncmFkZS9wZ191cGdyYWRlLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUu YwpAQCAtNzUwLDggKzc1MCwyNyBAQCBjb3B5X3hhY3RfeGxvZ194aWQodm9pZCkKIAlpZiAob2xk X2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+PSBNVUxUSVhBQ1RfRk9STUFUQ0hBTkdFX0NB VF9WRVIgJiYKIAkJbmV3X2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+PSBNVUxUSVhBQ1Rf Rk9STUFUQ0hBTkdFX0NBVF9WRVIpCiAJewotCQljb3B5X3N1YmRpcl9maWxlcygicGdfbXVsdGl4 YWN0L29mZnNldHMiLCAicGdfbXVsdGl4YWN0L29mZnNldHMiKTsKLQkJY29weV9zdWJkaXJfZmls ZXMoInBnX211bHRpeGFjdC9tZW1iZXJzIiwgInBnX211bHRpeGFjdC9tZW1iZXJzIik7CisJCU11 bHRpWGFjdElkIG5ld19ueHRtdWx0aSA9IG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9u eHRtdWx0aTsKKwkJTXVsdGlYYWN0T2Zmc2V0IG5ld19ueHRteG9mZiA9IG9sZF9jbHVzdGVyLmNv bnRyb2xkYXRhLmNoa3BudF9ueHRteG9mZjsKKworCQkvKgorCQkgKiBJZiB0aGUgb2xkIHNlcnZl ciBpcyBiZWZvcmUgdGhlIE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUgorCQkg KiBpdCBtdXN0IGhhdmUgMzItYml0IG11bHRpeGlkIG9mZnNldHMsIHRodXMgaXQgc2hvdWxkIGJl IGNvbnZlcnRlZC4KKwkJICovCisJCWlmIChvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVy IDwgTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENIQU5HRV9DQVRfVkVSICYmCisJCQluZXdfY2x1c3Rl ci5jb250cm9sZGF0YS5jYXRfdmVyID49IE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0VfQ0FU X1ZFUikKKwkJeworCQkJcmVtb3ZlX25ld19zdWJkaXIoInBnX211bHRpeGFjdC9tZW1iZXJzIiwg ZmFsc2UpOworCQkJcmVtb3ZlX25ld19zdWJkaXIoInBnX211bHRpeGFjdC9vZmZzZXRzIiwgZmFs c2UpOworCQkJcHJlcF9zdGF0dXMoIkNvbnZlcnRpbmcgcGdfbXVsdGl4YWN0L29mZnNldHMgdG8g NjQtYml0Iik7CisJCQljb252ZXJ0X211bHRpeGFjdHMoJm5ld19ueHRtdWx0aSwgJm5ld19ueHRt eG9mZik7CisJCQljaGVja19vaygpOworCQl9CisJCWVsc2UKKwkJeworCQkJY29weV9zdWJkaXJf ZmlsZXMoInBnX211bHRpeGFjdC9vZmZzZXRzIiwgInBnX211bHRpeGFjdC9vZmZzZXRzIik7CisJ CQljb3B5X3N1YmRpcl9maWxlcygicGdfbXVsdGl4YWN0L21lbWJlcnMiLCAicGdfbXVsdGl4YWN0 L21lbWJlcnMiKTsKKwkJfQogCiAJCXByZXBfc3RhdHVzKCJTZXR0aW5nIG5leHQgbXVsdGl4YWN0 IElEIGFuZCBvZmZzZXQgZm9yIG5ldyBjbHVzdGVyIik7CiAKQEAgLTc2MCwxMCArNzc5LDEwIEBA IGNvcHlfeGFjdF94bG9nX3hpZCh2b2lkKQogCQkgKiBjb3VudGVycyBoZXJlIGFuZCB0aGUgb2xk ZXN0IG11bHRpIHByZXNlbnQgb24gc3lzdGVtLgogCQkgKi8KIAkJZXhlY19wcm9nKFVUSUxJVFlf TE9HX0ZJTEUsIE5VTEwsIHRydWUsIHRydWUsCi0JCQkJICAiXCIlcy9wZ19yZXNldHdhbFwiIC1P ICV1IC1tICV1LCV1IFwiJXNcIiIsCisJCQkJICAiXCIlcy9wZ19yZXNldHdhbFwiIC1PICVsbHUg LW0gJXUsJXUgXCIlc1wiIiwKIAkJCQkgIG5ld19jbHVzdGVyLmJpbmRpciwKLQkJCQkgIG9sZF9j bHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9ueHRteG9mZiwKLQkJCQkgIG9sZF9jbHVzdGVyLmNv bnRyb2xkYXRhLmNoa3BudF9ueHRtdWx0aSwKKwkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIG5l d19ueHRteG9mZiwKKwkJCQkgIG5ld19ueHRtdWx0aSwKIAkJCQkgIG9sZF9jbHVzdGVyLmNvbnRy b2xkYXRhLmNoa3BudF9vbGRzdE11bHRpLAogCQkJCSAgbmV3X2NsdXN0ZXIucGdkYXRhKTsKIAkJ Y2hlY2tfb2soKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgg Yi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCmluZGV4IDBjZGQ2NzVlNGYuLjliM2Q2 NDViMDggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgKKysrIGIv c3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaApAQCAtMTE0LDYgKzExNCwxMyBAQCBleHRl cm4gY2hhciAqb3V0cHV0X2ZpbGVzW107CiAgKi8KICNkZWZpbmUgTVVMVElYQUNUX0ZPUk1BVENI QU5HRV9DQVRfVkVSIDIwMTMwMTIzMQogCisvKgorICogU3dpY3RoIGZyb20gMzItYml0IHRvIDY0 LWJpdCBmb3IgbXVsdGl4aWQgb2Zmc2V0cy4KKyAqCisgKiBYWFg6IHNob3VsZCBiZSBjaGFuZ2Vk IHRvIHRoZSBhY3R1YWwgQ0FUQUxPR19WRVJTSU9OX05PIG9uIGNvbW1pdC4KKyAqLworI2RlZmlu ZSBNVUxUSVhBQ1RPRkZTRVRfRk9STUFUQ0hBTkdFX0NBVF9WRVIgMjAyNDA5MDQxCisKIC8qCiAg KiBsYXJnZSBvYmplY3QgY2h1bmsgc2l6ZSBhZGRlZCB0byBwZ19jb250cm9sZGF0YSwKICAqIGNv bW1pdCA1ZjkzYzM3ODA1ZTc0ODU0ODg0ODA5MTZiNDU4NWUwOThkM2NjODgzCkBAIC0yMzAsNyAr MjM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAl1aW50MzIJCWNoa3BudF9ueHRlcG9jaDsKIAl1aW50 MzIJCWNoa3BudF9ueHRvaWQ7CiAJdWludDMyCQljaGtwbnRfbnh0bXVsdGk7Ci0JdWludDMyCQlj aGtwbnRfbnh0bXhvZmY7CisJdWludDY0CQljaGtwbnRfbnh0bXhvZmY7CiAJdWludDMyCQljaGtw bnRfb2xkc3RNdWx0aTsKIAl1aW50MzIJCWNoa3BudF9vbGRzdHhpZDsKIAl1aW50MzIJCWFsaWdu OwpAQCAtNTE1LDMgKzUyMiw3IEBAIHR5cGVkZWYgc3RydWN0CiAJRklMRQkgICAqZmlsZTsKIAlj aGFyCQlwYXRoW01BWFBHUEFUSF07CiB9IFVwZ3JhZGVUYXNrUmVwb3J0OworCisvKiBtdWx0aXhh Y3RfcmV3cml0ZS5jICovCisKK3ZvaWQgY29udmVydF9tdWx0aXhhY3RzKE11bHRpWGFjdElkICpu ZXdfbnh0bXVsdGksIE11bHRpWGFjdE9mZnNldCAqbmV3X254dG14b2ZmKTsKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfdXBncmFkZS9zbHJ1X2lvLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUvc2xydV9p by5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjg3YWNmMTY3MzIKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvc2xydV9pby5jCkBAIC0wLDAgKzEs MjExIEBACisvKgorICoJc2xydV9pby5jCisgKgorICoJUm91dGluZXMgZm9yIHJlYWRpbmcgYW5k IHdyaXRpbmcgU0xSVSBmaWxlcyBkdXJpbmcgdXBncmFkZS4KKyAqCisgKglDb3B5cmlnaHQgKGMp IDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKglzcmMvYmluL3Bn X3VwZ3JhZGUvc2xydV9pby5jCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCisKKyNp bmNsdWRlIDxmY250bC5oPgorCisjaW5jbHVkZSAicGdfdXBncmFkZS5oIgorI2luY2x1ZGUgInNs cnVfaW8uaCIKKworI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKKyNpbmNsdWRlICJjb21t b24vZmlsZV91dGlscy5oIgorI2luY2x1ZGUgInBvcnQvcGdfaW92ZWMuaCIKKworLyoKKyAqIFN0 YXRlIGZvciByZWFkaW5nIG9yIHdyaXRpbmcgYW4gU0xSVSwgd2l0aCBhIG9uZSBwYWdlIGJ1ZmZl ci4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2xydVNlZ1N0YXRlCit7CisJYm9vbAkJd3JpdGluZzsK KworCWNoYXIJICAgKmRpcjsKKwljaGFyCSAgICpmbjsKKwlpbnQJCQlmZDsKKwlpbnQ2NAkJc2Vn bm87CisJdWludDY0CQlwYWdlbm87CisKKwlQR0FsaWduZWRCbG9jayBidWY7Cit9IFNscnVTZWdT dGF0ZTsKKworc3RhdGljIHZvaWQgU2xydUZsdXNoKFNscnVTZWdTdGF0ZSAqc3RhdGUpOworCisK K1NscnVTZWdTdGF0ZSAqCitPcGVuU2xydVJlYWQoY2hhciAqZGlyKQoreworCVNscnVTZWdTdGF0 ZSAqc3RhdGU7CisKKwlzdGF0ZSA9IHBnX21hbGxvYyhzaXplb2YoU2xydVNlZ1N0YXRlKSk7CisJ c3RhdGUtPndyaXRpbmcgPSBmYWxzZTsKKwlzdGF0ZS0+c2Vnbm8gPSAtMTsKKwlzdGF0ZS0+cGFn ZW5vID0gMDsKKwlzdGF0ZS0+ZGlyID0gcHN0cmR1cChkaXIpOworCXN0YXRlLT5mZCA9IC0xOwor CXN0YXRlLT5mbiA9IE5VTEw7CisKKwlyZXR1cm4gc3RhdGU7Cit9CisKK3ZvaWQKK0Nsb3NlU2xy dVJlYWQoU2xydVNlZ1N0YXRlICpzdGF0ZSkKK3sKKwlBc3NlcnQoIXN0YXRlLT53cml0aW5nKTsK KwljbG9zZShzdGF0ZS0+ZmQpOworCXBnX2ZyZWUoc3RhdGUpOworfQorCitTbHJ1U2VnU3RhdGUg KgorT3BlblNscnVXcml0ZShjaGFyICpkaXIsIGludDY0IHN0YXJ0UGFnZW5vKQoreworCVNscnVT ZWdTdGF0ZSAqc3RhdGU7CisKKwlzdGF0ZSA9IHBnX21hbGxvYyhzaXplb2YoU2xydVNlZ1N0YXRl KSk7CisJc3RhdGUtPndyaXRpbmcgPSB0cnVlOworCXN0YXRlLT5zZWdubyA9IC0xOworCXN0YXRl LT5wYWdlbm8gPSAwOworCXN0YXRlLT5kaXIgPSBwc3RyZHVwKGRpcik7CisJc3RhdGUtPmZkID0g LTE7CisJc3RhdGUtPmZuID0gTlVMTDsKKworCXJldHVybiBzdGF0ZTsKK30KKwordm9pZAorQ2xv c2VTbHJ1V3JpdGUoU2xydVNlZ1N0YXRlICpzdGF0ZSkKK3sKKwlBc3NlcnQoc3RhdGUtPndyaXRp bmcpOworCVNscnVGbHVzaChzdGF0ZSk7CisKKwljbG9zZShzdGF0ZS0+ZmQpOworCXBnX2ZyZWUo c3RhdGUpOworfQorCitzdGF0aWMgdm9pZAorU2xydUZsdXNoKFNscnVTZWdTdGF0ZSAqc3RhdGUp Cit7CisJc3RydWN0IGlvdmVjIGlvdmVjID0geworCQkuaW92X2Jhc2UgPSAmc3RhdGUtPmJ1ZiwK KwkJLmlvdl9sZW4gPSBCTENLU1osCisJfTsKKwlvZmZfdAkJb2Zmc2V0OworCisJaWYgKHN0YXRl LT5zZWdubyA9PSAtMSkKKwkJcmV0dXJuOworCisJb2Zmc2V0ID0gKHN0YXRlLT5wYWdlbm8gJSBT TFJVX1BBR0VTX1BFUl9TRUdNRU5UKSAqIEJMQ0tTWjsKKworCWlmIChwZ19wd3JpdGV2X3dpdGhf cmV0cnkoc3RhdGUtPmZkLCAmaW92ZWMsIDEsIG9mZnNldCkgPCAwKQorCQlwZ19mYXRhbCgiY291 bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7Cit9CisKKy8qCisgKiBP cGVuIHRoZSBnaXZlbiBwYWdlIGZvciB3cml0aW5nLgorICoKKyAqIE5PVEU6IFRoaXMgdXNlcyBP X0VYQ0wgd2hlbiBzdGVwcGluZyB0byBhIG5ldyBzZWdtZW50LCBzbyB0aGlzIGFzc3VtZXMgdGhh dAorICogZWFjaCBzZWdtZW50IGlzIHdyaXR0ZW4gaW4gZnVsbCBiZWZvcmUgbW92aW5nIG9uIHRv IG5leHQgb25lLiBUaGlzCisgKiBsaW1pdGF0aW9uIHdvdWxkIGJlIGVhc3kgdG8gbGlmdCBpZiBu ZWVkZWQsIGJ1dCBpdCBmaXRzIHRoZSB1c2FnZSBwYXR0ZXJuCisgKiBvZiBjdXJyZW50IGNhbGxl cnMuCisgKi8KK2NoYXIgKgorU2xydVdyaXRlU3dpdGNoUGFnZShTbHJ1U2VnU3RhdGUgKnN0YXRl LCB1aW50NjQgcGFnZW5vKQoreworCWludDY0CQlzZWdubyA9IHBhZ2VubyAvIFNMUlVfUEFHRVNf UEVSX1NFR01FTlQ7CisJb2ZmX3QJCW9mZnNldDsKKworCWlmIChzdGF0ZS0+c2Vnbm8gIT0gLTEg JiYgcGFnZW5vID09IHN0YXRlLT5wYWdlbm8pCisJCXJldHVybiBzdGF0ZS0+YnVmLmRhdGE7CisK KwlzZWdubyA9IHBhZ2VubyAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7CisJb2Zmc2V0ID0gKHBh Z2VubyAlIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpICogQkxDS1NaOworCisJU2xydUZsdXNoKHN0 YXRlKTsKKwltZW1zZXQoc3RhdGUtPmJ1Zi5kYXRhLCAwLCBCTENLU1opOworCisJaWYgKHNlZ25v ICE9IHN0YXRlLT5zZWdubykKKwl7CisJCWlmIChzdGF0ZS0+c2Vnbm8gIT0gLTEpCisJCXsKKwkJ CWNsb3NlKHN0YXRlLT5mZCk7CisJCQlzdGF0ZS0+ZmQgPSAtMTsKKwkJCXBnX2ZyZWUoc3RhdGUt PmZuKTsKKwkJCXN0YXRlLT5mbiA9IE5VTEw7CisJCX0KKworCQkvKiBDcmVhdGUgdGhlIHNlZ21l bnQgKi8KKwkJc3RhdGUtPmZuID0gcHNwcmludGYoIiVzLyUwNFgiLCBzdGF0ZS0+ZGlyLCAodW5z aWduZWQgaW50KSBzZWdubyk7CisJCWlmICgoc3RhdGUtPmZkID0gb3BlbihzdGF0ZS0+Zm4sIE9f UkRXUiB8IE9fQ1JFQVQgfCBPX0VYQ0wgfCBQR19CSU5BUlksCisJCQkJCQkJICBwZ19maWxlX2Ny ZWF0ZV9tb2RlKSkgPCAwKQorCQl7CisJCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBmaWxl IFwiJXNcIjogJW0iLCBzdGF0ZS0+Zm4pOworCQl9CisJCXN0YXRlLT5zZWdubyA9IHNlZ25vOwor CisJCWlmIChvZmZzZXQgPiAwKQorCQl7CisJCQlpZiAocGdfcHdyaXRlX3plcm9zKHN0YXRlLT5m ZCwgb2Zmc2V0LCAwKSA8IDApCisJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwi JXNcIjogJW0iLCBzdGF0ZS0+Zm4pOworCQl9CisJfQorCisJc3RhdGUtPnBhZ2VubyA9IHBhZ2Vu bzsKKwlyZXR1cm4gc3RhdGUtPmJ1Zi5kYXRhOworfQorCisvKgorICogT3BlbiBnaXZlbiBwYWdl IGZvciByZWFkaW5nLgorICoKKyAqIFJlYWRpbmcgY2FuIGJlIGRvbmUgaW4gcmFuZG9tIG9yZGVy LgorICovCitjaGFyICoKK1NscnVSZWFkU3dpdGNoUGFnZShTbHJ1U2VnU3RhdGUgKnN0YXRlLCB1 aW50NjQgcGFnZW5vKQoreworCWludDY0CQlzZWdubzsKKworCWlmIChzdGF0ZS0+c2Vnbm8gIT0g LTEgJiYgcGFnZW5vID09IHN0YXRlLT5wYWdlbm8pCisJCXJldHVybiBzdGF0ZS0+YnVmLmRhdGE7 CisKKwlzZWdubyA9IHBhZ2VubyAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7CisKKwlpZiAoc2Vn bm8gIT0gc3RhdGUtPnNlZ25vKQorCXsKKwkJaWYgKHN0YXRlLT5zZWdubyAhPSAtMSkKKwkJewor CQkJY2xvc2Uoc3RhdGUtPmZkKTsKKwkJCXN0YXRlLT5mZCA9IC0xOworCQkJcGdfZnJlZShzdGF0 ZS0+Zm4pOworCQkJc3RhdGUtPmZuID0gTlVMTDsKKwkJfQorCisJCS8qIE9wZW4gbmV3IHNlZ21l bnQgKi8KKwkJc3RhdGUtPmZuID0gcHNwcmludGYoIiVzLyUwNFgiLCBzdGF0ZS0+ZGlyLCAodW5z aWduZWQgaW50KSBzZWdubyk7CisJCWlmICgoc3RhdGUtPmZkID0gb3BlbihzdGF0ZS0+Zm4sIE9f UkRPTkxZIHwgUEdfQklOQVJZLCAwKSkgPCAwKQorCQl7CisJCQlwZ19mYXRhbCgiY291bGQgbm90 IG9wZW4gZmlsZSBcIiVzXCI6ICVtIiwgc3RhdGUtPmZuKTsKKwkJfQorCQlzdGF0ZS0+c2Vnbm8g PSBzZWdubzsKKwl9CisKKwl7CisJCXN0cnVjdCBpb3ZlYyBpb3ZlYyA9IHsKKwkJCS5pb3ZfYmFz ZSA9ICZzdGF0ZS0+YnVmLAorCQkJLmlvdl9sZW4gPSBCTENLU1osCisJCX07CisJCW9mZl90CQlv ZmZzZXQ7CisKKwkJb2Zmc2V0ID0gKHBhZ2VubyAlIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpICog QkxDS1NaOworCisJCWlmIChwZ19wcmVhZHYoc3RhdGUtPmZkLCAmaW92ZWMsIDEsIG9mZnNldCkg PCAwKQorCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRl LT5mbik7CisKKwkJc3RhdGUtPnBhZ2VubyA9IHBhZ2VubzsKKwl9CisKKwlyZXR1cm4gc3RhdGUt PmJ1Zi5kYXRhOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uaCBi L3NyYy9iaW4vcGdfdXBncmFkZS9zbHJ1X2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uZTFhOWMwNjMxMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfdXBn cmFkZS9zbHJ1X2lvLmgKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqCXNscnVfaW8uaAorICoKKyAq CUNvcHlyaWdodCAoYykgMjAxMC0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorICoJc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uaAorICovCisKKy8qIFhYWDogY29w aWVkIGZyb20gc2xydS5oICovCisjZGVmaW5lIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQJMzIKKwor LyoKKyAqIFNvbWUga2luZCBvZiBpdGVyYXRvciBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFy IFNMUlUgc2VnbWVudC4gIFRoZSBpZGVhIGlzCisgKiB0byBzcGVjaWZ5IHRoZSBzZWdtZW50IGFu ZCBwYWdlIG51bWJlciBhbmQgdGhlbiBtb3ZlIHRocm91Z2ggdGhlIHBhZ2VzLgorICovCit0eXBl ZGVmIHN0cnVjdCBTbHJ1U2VnU3RhdGUgU2xydVNlZ1N0YXRlOworCitleHRlcm4gU2xydVNlZ1N0 YXRlICpPcGVuU2xydVJlYWQoY2hhciAqZGlyKTsKK2V4dGVybiB2b2lkIENsb3NlU2xydVJlYWQo U2xydVNlZ1N0YXRlICpzdGF0ZSk7CitleHRlcm4gY2hhciAqU2xydVJlYWRTd2l0Y2hQYWdlKFNs cnVTZWdTdGF0ZSAqc3RhdGUsIHVpbnQ2NCBwYWdlbm8pOworCitleHRlcm4gU2xydVNlZ1N0YXRl ICpPcGVuU2xydVdyaXRlKGNoYXIgKmRpciwgaW50NjQgc3RhcnRQYWdlbm8pOworZXh0ZXJuIHZv aWQgQ2xvc2VTbHJ1V3JpdGUoU2xydVNlZ1N0YXRlICpzdGF0ZSk7CitleHRlcm4gY2hhciAqU2xy dVdyaXRlU3dpdGNoUGFnZShTbHJ1U2VnU3RhdGUgKnN0YXRlLCB1aW50NjQgcGFnZW5vKTsKLS0g CjIuNDMuMAoK --000000000000eb7646062bd2d2d1 Content-Type: application/octet-stream; name="v12-0002-Use-64-bit-multixact-offsets.patch" Content-Disposition: attachment; filename="v12-0002-Use-64-bit-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5zczs901 RnJvbSBiNGRiMDUxN2RmMjUxMGJkNDUyYWUwZTgyZDRiNzA3ZTcwZmEyOWY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA2IE1hciAyMDI0IDExOjExOjMzICswMzAwClN1YmplY3Q6IFtQQVRDSCB2MTIg Mi83XSBVc2UgNjQtYml0IG11bHRpeGFjdCBvZmZzZXRzLgoKQXV0aG9yOiBNYXhpbSBPcmxvdiA8 b3Jsb3ZtZ0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4 YWN0LmMgIHwgNTQxICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW0uYyAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5jICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jICAgICAg IHwgICAyICstCiBzcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAxX2Jhc2ljLnBsICAgICAgfCAgIDIg Ky0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCAgICAgICAgICB8ICAgMyArLQogc3Jj L2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdF9pbnRlcm5hbC5oIHwgMTE1ICsrKysrCiBzcmMvaW5j bHVkZS9jLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIDkgZmlsZXMgY2hhbmdl ZCwgMTU2IGluc2VydGlvbnMoKyksIDUxNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0X2ludGVybmFsLmgKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL211bHRpeGFjdC5jCmluZGV4IDYyM2ZjOGJkYWMuLmNkOWRiNTJlOTUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC02OSw2ICs2OSw3IEBACiAjaW5j bHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKKyNpbmNs dWRlICJhY2Nlc3MvbXVsdGl4YWN0X2ludGVybmFsLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3NscnUu aCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy90d29waGFz ZS5oIgpAQCAtOTIsMTMwICs5MywxNCBAQAogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2lu dC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKLQotLyoKLSAqIERlZmluZXMgZm9y IE11bHRpWGFjdE9mZnNldCBwYWdlIHNpemVzLiAgQSBwYWdlIGlzIHRoZSBzYW1lIEJMQ0tTWiBh cyBpcwotICogdXNlZCBldmVyeXdoZXJlIGVsc2UgaW4gUG9zdGdyZXMuCi0gKgotICogTm90ZTog YmVjYXVzZSBNdWx0aVhhY3RPZmZzZXRzIGFyZSAzMiBiaXRzIGFuZCB3cmFwIGFyb3VuZCBhdCAw eEZGRkZGRkZGLAotICogTXVsdGlYYWN0IHBhZ2UgbnVtYmVyaW5nIGFsc28gd3JhcHMgYXJvdW5k IGF0Ci0gKiAweEZGRkZGRkZGL01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFLCBhbmQgc2VnbWVu dCBudW1iZXJpbmcgYXQKLSAqIDB4RkZGRkZGRkYvTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0Uv U0xSVV9QQUdFU19QRVJfU0VHTUVOVC4gIFdlIG5lZWQKLSAqIHRha2Ugbm8gZXhwbGljaXQgbm90 aWNlIG9mIHRoYXQgZmFjdCBpbiB0aGlzIG1vZHVsZSwgZXhjZXB0IHdoZW4gY29tcGFyaW5nCi0g KiBzZWdtZW50IGFuZCBwYWdlIG51bWJlcnMgaW4gVHJ1bmNhdGVNdWx0aVhhY3QgKHNlZQotICog TXVsdGlYYWN0T2Zmc2V0UGFnZVByZWNlZGVzKS4KLSAqLwotCi0vKiBXZSBuZWVkIGZvdXIgYnl0 ZXMgcGVyIG9mZnNldCAqLwotI2RlZmluZSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRSAoQkxD S1NaIC8gc2l6ZW9mKE11bHRpWGFjdE9mZnNldCkpCi0KLXN0YXRpYyBpbmxpbmUgaW50NjQKLU11 bHRpWGFjdElkVG9PZmZzZXRQYWdlKE11bHRpWGFjdElkIG11bHRpKQotewotCXJldHVybiBtdWx0 aSAvIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFOwotfQotCi1zdGF0aWMgaW5saW5lIGludAot TXVsdGlYYWN0SWRUb09mZnNldEVudHJ5KE11bHRpWGFjdElkIG11bHRpKQotewotCXJldHVybiBt dWx0aSAlIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFOwotfQotCi1zdGF0aWMgaW5saW5lIGlu dDY0Ci1NdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudChNdWx0aVhhY3RJZCBtdWx0aSkKLXsKLQly ZXR1cm4gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UobXVsdGkpIC8gU0xSVV9QQUdFU19QRVJfU0VH TUVOVDsKLX0KLQotLyoKLSAqIFRoZSBzaXR1YXRpb24gZm9yIG1lbWJlcnMgaXMgYSBiaXQgbW9y ZSBjb21wbGV4OiB3ZSBzdG9yZSBvbmUgYnl0ZSBvZgotICogYWRkaXRpb25hbCBmbGFnIGJpdHMg Zm9yIGVhY2ggVHJhbnNhY3Rpb25JZC4gIFRvIGRvIHRoaXMgd2l0aG91dCBnZXR0aW5nCi0gKiBp bnRvIGFsaWdubWVudCBpc3N1ZXMsIHdlIHN0b3JlIGZvdXIgYnl0ZXMgb2YgZmxhZ3MsIGFuZCB0 aGVuIHRoZQotICogY29ycmVzcG9uZGluZyA0IFhpZHMuICBFYWNoIHN1Y2ggNS13b3JkICgyMC1i eXRlKSBzZXQgd2UgY2FsbCBhICJncm91cCIsIGFuZAotICogYXJlIHN0b3JlZCBhcyBhIHdob2xl IGluIHBhZ2VzLiAgVGh1cywgd2l0aCA4a0IgQkxDS1NaLCB3ZSBrZWVwIDQwOSBncm91cHMKLSAq IHBlciBwYWdlLiAgVGhpcyB3YXN0ZXMgMTIgYnl0ZXMgcGVyIHBhZ2UsIGJ1dCB0aGF0J3MgT0sg LS0gc2ltcGxpY2l0eSAoYW5kCi0gKiBwZXJmb3JtYW5jZSkgdHJ1bXBzIHNwYWNlIGVmZmljaWVu Y3kgaGVyZS4KLSAqCi0gKiBOb3RlIHRoYXQgdGhlICJvZmZzZXQiIG1hY3JvcyB3b3JrIHdpdGgg Ynl0ZSBvZmZzZXQsIG5vdCBhcnJheSBpbmRleGVzLCBzbwotICogYXJpdGhtZXRpYyBtdXN0IGJl IGRvbmUgdXNpbmcgImNoYXIgKiIgcG9pbnRlcnMuCi0gKi8KLS8qIFdlIG5lZWQgZWlnaHQgYml0 cyBwZXIgeGFjdCwgc28gb25lIHhhY3QgZml0cyBpbiBhIGJ5dGUgKi8KLSNkZWZpbmUgTVhBQ1Rf TUVNQkVSX0JJVFNfUEVSX1hBQ1QJCQk4Ci0jZGVmaW5lIE1YQUNUX01FTUJFUl9GTEFHU19QRVJf QllURQkJCTEKLSNkZWZpbmUgTVhBQ1RfTUVNQkVSX1hBQ1RfQklUTUFTSwkoKDEgPDwgTVhBQ1Rf TUVNQkVSX0JJVFNfUEVSX1hBQ1QpIC0gMSkKLQotLyogaG93IG1hbnkgZnVsbCBieXRlcyBvZiBm bGFncyBhcmUgdGhlcmUgaW4gYSBncm91cD8gKi8KLSNkZWZpbmUgTVVMVElYQUNUX0ZMQUdCWVRF U19QRVJfR1JPVVAJCTQKLSNkZWZpbmUgTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQ CVwKLQkoTVVMVElYQUNUX0ZMQUdCWVRFU19QRVJfR1JPVVAgKiBNWEFDVF9NRU1CRVJfRkxBR1Nf UEVSX0JZVEUpCi0vKiBzaXplIGluIGJ5dGVzIG9mIGEgY29tcGxldGUgZ3JvdXAgKi8KLSNkZWZp bmUgTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkUgXAotCShzaXplb2YoVHJhbnNhY3Rpb25JZCkg KiBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVAgKyBNVUxUSVhBQ1RfRkxBR0JZVEVT X1BFUl9HUk9VUCkKLSNkZWZpbmUgTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRSAoQkxD S1NaIC8gTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkUpCi0jZGVmaW5lIE1VTFRJWEFDVF9NRU1C RVJTX1BFUl9QQUdFCVwKLQkoTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRSAqIE1VTFRJ WEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9VUCkKLQogLyoKLSAqIEJlY2F1c2UgdGhlIG51bWJl ciBvZiBpdGVtcyBwZXIgcGFnZSBpcyBub3QgYSBkaXZpc29yIG9mIHRoZSBsYXN0IGl0ZW0KLSAq IG51bWJlciAobWVtYmVyIDB4RkZGRkZGRkYpLCB0aGUgbGFzdCBzZWdtZW50IGRvZXMgbm90IHVz ZSB0aGUgbWF4aW11bSBudW1iZXIKLSAqIG9mIHBhZ2VzLCBhbmQgbW9yZW92ZXIgdGhlIGxhc3Qg dXNlZCBwYWdlIHRoZXJlaW4gZG9lcyBub3QgdXNlIHRoZSBzYW1lCi0gKiBudW1iZXIgb2YgaXRl bXMgYXMgcHJldmlvdXMgcGFnZXMuICAoQW5vdGhlciB3YXkgdG8gc2F5IGl0IGlzIHRoYXQgdGhl Ci0gKiAweEZGRkZGRkZGIG1lbWJlciBpcyBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUg bGFzdCBwYWdlLCBzbyB0aGUgcGFnZQotICogaGFzIHNvbWUgZW1wdHkgc3BhY2UgYWZ0ZXIgdGhh dCBpdGVtLikKLSAqCi0gKiBUaGlzIGNvbnN0YW50IGlzIHRoZSBudW1iZXIgb2YgbWVtYmVycyBp biB0aGUgbGFzdCBwYWdlIG9mIHRoZSBsYXN0IHNlZ21lbnQuCisgKiBNdWx0aXhhY3QgbWVtYmVy cyB3YXJuaW5nIHRocmVzaG9sZC4KKyAqCisgKiBJZiBkaWZmZXJlbmNlIGJldHR3ZWVuIG5leHRP ZmZzZXQgYW5kIG9sZGVzdE9mZnNldCBleGNlZWQgdGhpcyB2YWx1ZSwgd2UKKyAqIHRyaWdnZXIg YXV0b3ZhY3V1bWluIG9yZGVyIHRvIHJlbGVhc2UgdGhlIGRpc2sgc3BhY2UsIHJlZHVjZSB0YWJs ZSBibG9hdCBpZgorICogcG9zc2libGUuCiAgKi8KLSNkZWZpbmUgTUFYX01FTUJFUlNfSU5fTEFT VF9NRU1CRVJTX1BBR0UgXAotCQkoKHVpbnQzMikgKCgweEZGRkZGRkZGICUgTVVMVElYQUNUX01F TUJFUlNfUEVSX1BBR0UpICsgMSkpCi0KLS8qIHBhZ2UgaW4gd2hpY2ggYSBtZW1iZXIgaXMgdG8g YmUgZm91bmQgKi8KLXN0YXRpYyBpbmxpbmUgaW50NjQKLU1YT2Zmc2V0VG9NZW1iZXJQYWdlKE11 bHRpWGFjdE9mZnNldCBvZmZzZXQpCi17Ci0JcmV0dXJuIG9mZnNldCAvIE1VTFRJWEFDVF9NRU1C RVJTX1BFUl9QQUdFOwotfQotCi1zdGF0aWMgaW5saW5lIGludDY0Ci1NWE9mZnNldFRvTWVtYmVy U2VnbWVudChNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQotewotCXJldHVybiBNWE9mZnNldFRvTWVt YmVyUGFnZShvZmZzZXQpIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKLX0KLQotLyogTG9jYXRp b24gKGJ5dGUgb2Zmc2V0IHdpdGhpbiBwYWdlKSBvZiBmbGFnIHdvcmQgZm9yIGEgZ2l2ZW4gbWVt YmVyICovCi1zdGF0aWMgaW5saW5lIGludAotTVhPZmZzZXRUb0ZsYWdzT2Zmc2V0KE11bHRpWGFj dE9mZnNldCBvZmZzZXQpCi17Ci0JTXVsdGlYYWN0T2Zmc2V0IGdyb3VwID0gb2Zmc2V0IC8gTVVM VElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQOwotCWludAkJCWdyb3Vwb25wZyA9IGdyb3Vw ICUgTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRTsKLQlpbnQJCQlieXRlb2ZmID0gZ3Jv dXBvbnBnICogTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkU7Ci0KLQlyZXR1cm4gYnl0ZW9mZjsK LX0KLQotc3RhdGljIGlubGluZSBpbnQKLU1YT2Zmc2V0VG9GbGFnc0JpdFNoaWZ0KE11bHRpWGFj dE9mZnNldCBvZmZzZXQpCi17Ci0JaW50CQkJbWVtYmVyX2luX2dyb3VwID0gb2Zmc2V0ICUgTVVM VElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQOwotCWludAkJCWJzaGlmdCA9IG1lbWJlcl9p bl9ncm91cCAqIE1YQUNUX01FTUJFUl9CSVRTX1BFUl9YQUNUOwotCi0JcmV0dXJuIGJzaGlmdDsK LX0KLQotLyogTG9jYXRpb24gKGJ5dGUgb2Zmc2V0IHdpdGhpbiBwYWdlKSBvZiBUcmFuc2FjdGlv bklkIG9mIGdpdmVuIG1lbWJlciAqLwotc3RhdGljIGlubGluZSBpbnQKLU1YT2Zmc2V0VG9NZW1i ZXJPZmZzZXQoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCkKLXsKLQlpbnQJCQltZW1iZXJfaW5fZ3Jv dXAgPSBvZmZzZXQgJSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVA7Ci0KLQlyZXR1 cm4gTVhPZmZzZXRUb0ZsYWdzT2Zmc2V0KG9mZnNldCkgKwotCQlNVUxUSVhBQ1RfRkxBR0JZVEVT X1BFUl9HUk9VUCArCi0JCW1lbWJlcl9pbl9ncm91cCAqIHNpemVvZihUcmFuc2FjdGlvbklkKTsK LX0KLQotLyogTXVsdGl4YWN0IG1lbWJlcnMgd3JhcGFyb3VuZCB0aHJlc2hvbGRzLiAqLwotI2Rl ZmluZSBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xECQkoTWF4TXVsdGlYYWN0T2Zmc2V0 IC8gMikKLSNkZWZpbmUgTVVMVElYQUNUX01FTUJFUl9EQU5HRVJfVEhSRVNIT0xECVwKLQkoTWF4 TXVsdGlYYWN0T2Zmc2V0IC0gTWF4TXVsdGlYYWN0T2Zmc2V0IC8gNCkKKyNkZWZpbmUgTVVMVElY QUNUX01FTUJFUl9BVVRPVkFDX1RIUkVTSE9MRAkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRikKIAog c3RhdGljIGlubGluZSBNdWx0aVhhY3RJZAogUHJldmlvdXNNdWx0aVhhY3RJZChNdWx0aVhhY3RJ ZCBtdWx0aSkKQEAgLTI2MCwxMSArMTQ1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgTXVsdGlYYWN0U3Rh dGVEYXRhCiAKIAkvKgogCSAqIE9sZGVzdCBtdWx0aXhhY3Qgb2Zmc2V0IHRoYXQgaXMgcG90ZW50 aWFsbHkgcmVmZXJlbmNlZCBieSBhIG11bHRpeGFjdAotCSAqIHJlZmVyZW5jZWQgYnkgYSByZWxh dGlvbi4gIFdlIGRvbid0IGFsd2F5cyBrbm93IHRoaXMgdmFsdWUsIHNvIHRoZXJlJ3MKLQkgKiBh IGZsYWcgaGVyZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB3ZSBjdXJyZW50bHkgZG8uCisJ ICogcmVmZXJlbmNlZCBieSBhIHJlbGF0aW9uLgogCSAqLwogCU11bHRpWGFjdE9mZnNldCBvbGRl c3RPZmZzZXQ7Ci0JYm9vbAkJb2xkZXN0T2Zmc2V0S25vd247CiAKIAkvKiBzdXBwb3J0IGZvciBh bnRpLXdyYXBhcm91bmQgbWVhc3VyZXMgKi8KIAlNdWx0aVhhY3RJZCBtdWx0aVZhY0xpbWl0OwpA QCAtMjcyLDkgKzE1NSw2IEBAIHR5cGVkZWYgc3RydWN0IE11bHRpWGFjdFN0YXRlRGF0YQogCU11 bHRpWGFjdElkIG11bHRpU3RvcExpbWl0OwogCU11bHRpWGFjdElkIG11bHRpV3JhcExpbWl0Owog Ci0JLyogc3VwcG9ydCBmb3IgbWVtYmVycyBhbnRpLXdyYXBhcm91bmQgbWVhc3VyZXMgKi8KLQlN dWx0aVhhY3RPZmZzZXQgb2Zmc2V0U3RvcExpbWl0OwkvKiBrbm93biBpZiBvbGRlc3RPZmZzZXRL bm93biAqLwotCiAJLyoKIAkgKiBUaGlzIGlzIHVzZWQgdG8gc2xlZXAgdW50aWwgYSBtdWx0aXhh Y3Qgb2Zmc2V0IGlzIHdyaXR0ZW4gd2hlbiB3ZSB3YW50CiAJICogdG8gY3JlYXRlIHRoZSBuZXh0 IG9uZS4KQEAgLTQwOSwxMCArMjg5LDggQEAgc3RhdGljIGJvb2wgTXVsdGlYYWN0T2Zmc2V0UHJl Y2VkZXMoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDEsCiAJCQkJCQkJCQlNdWx0aVhhY3RPZmZzZXQg b2Zmc2V0Mik7CiBzdGF0aWMgdm9pZCBFeHRlbmRNdWx0aVhhY3RPZmZzZXQoTXVsdGlYYWN0SWQg bXVsdGkpOwogc3RhdGljIHZvaWQgRXh0ZW5kTXVsdGlYYWN0TWVtYmVyKE11bHRpWGFjdE9mZnNl dCBvZmZzZXQsIGludCBubWVtYmVycyk7Ci1zdGF0aWMgYm9vbCBNdWx0aVhhY3RPZmZzZXRXb3Vs ZFdyYXAoTXVsdGlYYWN0T2Zmc2V0IGJvdW5kYXJ5LAotCQkJCQkJCQkJIE11bHRpWGFjdE9mZnNl dCBzdGFydCwgdWludDMyIGRpc3RhbmNlKTsKIHN0YXRpYyBib29sIFNldE9mZnNldFZhY3V1bUxp bWl0KGJvb2wgaXNfc3RhcnR1cCk7Ci1zdGF0aWMgYm9vbCBmaW5kX211bHRpeGFjdF9zdGFydChN dWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpyZXN1bHQpOworc3RhdGljIE11bHRp WGFjdE9mZnNldCBmaW5kX211bHRpeGFjdF9zdGFydChNdWx0aVhhY3RJZCBtdWx0aSk7CiBzdGF0 aWMgdm9pZCBXcml0ZU1aZXJvUGFnZVhsb2dSZWMoaW50NjQgcGFnZW5vLCB1aW50OCBpbmZvKTsK IHN0YXRpYyB2b2lkIFdyaXRlTVRydW5jYXRlWGxvZ1JlYyhPaWQgb2xkZXN0TXVsdGlEQiwKIAkJ CQkJCQkJICBNdWx0aVhhY3RJZCBzdGFydFRydW5jT2ZmLApAQCAtMTA1NCw5ICs5MzIsNyBAQCBH ZXROZXdNdWx0aVhhY3RJZChpbnQgbm1lbWJlcnMsIE11bHRpWGFjdE9mZnNldCAqb2Zmc2V0KQog CSAqIGFnYWluc3QgY2F0YXN0cm9waGljIGRhdGEgbG9zcyBkdWUgdG8gbXVsdGl4YWN0IHdyYXBh cm91bmQuICBUaGUgYmFzaWMKIAkgKiBydWxlcyBhcmU6CiAJICoKLQkgKiBJZiB3ZSdyZSBwYXN0 IG11bHRpVmFjTGltaXQgb3IgdGhlIHNhZmUgdGhyZXNob2xkIGZvciBtZW1iZXIgc3RvcmFnZQot CSAqIHNwYWNlLCBvciB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHNhZmUgdGhyZXNob2xkIGZvciBt ZW1iZXIgc3RvcmFnZSBpcywKLQkgKiBzdGFydCB0cnlpbmcgdG8gZm9yY2UgYXV0b3ZhY3V1bSBj eWNsZXMuCisJICogSWYgd2UncmUgcGFzdCBtdWx0aVZhY0xpbWl0LCBzdGFydCB0cnlpbmcgdG8g Zm9yY2UgYXV0b3ZhY3V1bSBjeWNsZXMuCiAJICogSWYgd2UncmUgcGFzdCBtdWx0aVdhcm5MaW1p dCwgc3RhcnQgaXNzdWluZyB3YXJuaW5ncy4KIAkgKiBJZiB3ZSdyZSBwYXN0IG11bHRpU3RvcExp bWl0LCByZWZ1c2UgdG8gY3JlYXRlIG5ldyBNdWx0aVhhY3RJZHMuCiAJICoKQEAgLTExNTEsOTAg KzEwMjcsMTAgQEAgR2V0TmV3TXVsdGlYYWN0SWQoaW50IG5tZW1iZXJzLCBNdWx0aVhhY3RPZmZz ZXQgKm9mZnNldCkKIAlFeHRlbmRNdWx0aVhhY3RPZmZzZXQocmVzdWx0KTsKIAogCS8qCi0JICog UmVzZXJ2ZSB0aGUgbWVtYmVycyBzcGFjZSwgc2ltaWxhcmx5IHRvIGFib3ZlLiAgQWxzbywgYmUg Y2FyZWZ1bCBub3QgdG8KLQkgKiByZXR1cm4gemVybyBhcyB0aGUgc3RhcnRpbmcgb2Zmc2V0IGZv ciBhbnkgbXVsdGl4YWN0LiBTZWUKLQkgKiBHZXRNdWx0aVhhY3RJZE1lbWJlcnMoKSBmb3IgbW90 aXZhdGlvbi4KKwkgKiBSZXNlcnZlIHRoZSBtZW1iZXJzIHNwYWNlLCBzaW1pbGFybHkgdG8gYWJv dmUuCiAJICovCiAJbmV4dE9mZnNldCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0OwotCWlm IChuZXh0T2Zmc2V0ID09IDApCi0JewotCQkqb2Zmc2V0ID0gMTsKLQkJbm1lbWJlcnMrKzsJCQkJ LyogYWxsb2NhdGUgbWVtYmVyIHNsb3QgMCB0b28gKi8KLQl9Ci0JZWxzZQotCQkqb2Zmc2V0ID0g bmV4dE9mZnNldDsKLQotCS8qLS0tLS0tLS0tLQotCSAqIFByb3RlY3QgYWdhaW5zdCBvdmVycnVu IG9mIHRoZSBtZW1iZXJzIHNwYWNlIGFzIHdlbGwsIHdpdGggdGhlCi0JICogZm9sbG93aW5nIHJ1 bGVzOgotCSAqCi0JICogSWYgd2UncmUgcGFzdCBvZmZzZXRTdG9wTGltaXQsIHJlZnVzZSB0byBn ZW5lcmF0ZSBtb3JlIG11bHRpcy4KLQkgKiBJZiB3ZSdyZSBjbG9zZSB0byBvZmZzZXRTdG9wTGlt aXQsIGVtaXQgYSB3YXJuaW5nLgotCSAqCi0JICogQXJiaXRyYXJpbHksIHdlIHN0YXJ0IGVtaXR0 aW5nIHdhcm5pbmdzIHdoZW4gd2UncmUgMjAgc2VnbWVudHMgb3IgbGVzcwotCSAqIGZyb20gb2Zm c2V0U3RvcExpbWl0LgotCSAqCi0JICogTm90ZSB3ZSBoYXZlbid0IHVwZGF0ZWQgdGhlIHNoYXJl ZCBzdGF0ZSB5ZXQsIHNvIGlmIHdlIGZhaWwgYXQgdGhpcwotCSAqIHBvaW50LCB0aGUgbXVsdGl4 YWN0IElEIHdlIGdyYWJiZWQgY2FuIHN0aWxsIGJlIHVzZWQgYnkgdGhlIG5leHQgZ3V5LgotCSAq Ci0JICogTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHBvaW50IGluIGZvcmNpbmcgYXV0b3ZhY3V1bSBy dW5zIGhlcmU6IHRoZQotCSAqIG11bHRpeGFjdCBmcmVlemUgc2V0dGluZ3Mgd291bGQgaGF2ZSB0 byBiZSByZWR1Y2VkIGZvciB0aGF0IHRvIGhhdmUgYW55Ci0JICogZWZmZWN0LgotCSAqLS0tLS0t LS0tLQotCSAqLwotI2RlZmluZSBPRkZTRVRfV0FSTl9TRUdNRU5UUwkyMAotCWlmIChNdWx0aVhh Y3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25vd24gJiYKLQkJTXVsdGlYYWN0T2Zmc2V0V291bGRXcmFw KE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQsIG5leHRPZmZzZXQsCi0JCQkJCQkJCSBu bWVtYmVycykpCi0JewotCQkvKiBzZWUgY29tbWVudCBpbiB0aGUgY29ycmVzcG9uZGluZyBvZmZz ZXRzIHdyYXBhcm91bmQgY2FzZSAqLwotCQlTZW5kUG9zdG1hc3RlclNpZ25hbChQTVNJR05BTF9T VEFSVF9BVVRPVkFDX0xBVU5DSEVSKTsKLQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2Rl KEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCi0JCQkJIGVycm1zZygibXVsdGl4YWN0 IFwibWVtYmVyc1wiIGxpbWl0IGV4Y2VlZGVkIiksCi0JCQkJIGVycmRldGFpbF9wbHVyYWwoIlRo aXMgY29tbWFuZCB3b3VsZCBjcmVhdGUgYSBtdWx0aXhhY3Qgd2l0aCAldSBtZW1iZXJzLCBidXQg dGhlIHJlbWFpbmluZyBzcGFjZSBpcyBvbmx5IGVub3VnaCBmb3IgJXUgbWVtYmVyLiIsCi0JCQkJ CQkJCSAgIlRoaXMgY29tbWFuZCB3b3VsZCBjcmVhdGUgYSBtdWx0aXhhY3Qgd2l0aCAldSBtZW1i ZXJzLCBidXQgdGhlIHJlbWFpbmluZyBzcGFjZSBpcyBvbmx5IGVub3VnaCBmb3IgJXUgbWVtYmVy cy4iLAotCQkJCQkJCQkgIE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQgLSBuZXh0T2Zm c2V0IC0gMSwKLQkJCQkJCQkJICBubWVtYmVycywKLQkJCQkJCQkJICBNdWx0aVhhY3RTdGF0ZS0+ b2Zmc2V0U3RvcExpbWl0IC0gbmV4dE9mZnNldCAtIDEpLAotCQkJCSBlcnJoaW50KCJFeGVjdXRl IGEgZGF0YWJhc2Utd2lkZSBWQUNVVU0gaW4gZGF0YWJhc2Ugd2l0aCBPSUQgJXUgd2l0aCByZWR1 Y2VkIFwidmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWluX2FnZVwiIGFuZCBcInZhY3V1bV9tdWx0 aXhhY3RfZnJlZXplX3RhYmxlX2FnZVwiIHNldHRpbmdzLiIsCi0JCQkJCQkgTXVsdGlYYWN0U3Rh dGUtPm9sZGVzdE11bHRpWGFjdERCKSkpOwotCX0KLQotCS8qCi0JICogQ2hlY2sgd2hldGhlciB3 ZSBzaG91bGQga2ljayBhdXRvdmFjdXVtIGludG8gYWN0aW9uLCB0byBwcmV2ZW50IG1lbWJlcnMK LQkgKiB3cmFwYXJvdW5kLiBOQiB3ZSB1c2UgYSBtdWNoIGxhcmdlciB3aW5kb3cgdG8gdHJpZ2dl ciBhdXRvdmFjdXVtIHRoYW4KLQkgKiBqdXN0IHRoZSB3YXJuaW5nIGxpbWl0LiBUaGUgd2Fybmlu ZyBpcyBqdXN0IGEgbWVhc3VyZSBvZiBsYXN0IHJlc29ydCAtCi0JICogdGhpcyBpcyBpbiBsaW5l IHdpdGggR2V0TmV3VHJhbnNhY3Rpb25JZCdzIGJlaGF2aW91ci4KLQkgKi8KLQlpZiAoIU11bHRp WGFjdFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93biB8fAotCQkoTXVsdGlYYWN0U3RhdGUtPm5leHRP ZmZzZXQgLSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0Ci0JCSA+IE1VTFRJWEFDVF9NRU1C RVJfU0FGRV9USFJFU0hPTEQpKQotCXsKLQkJLyoKLQkJICogVG8gYXZvaWQgc3dhbXBpbmcgdGhl IHBvc3RtYXN0ZXIgd2l0aCBzaWduYWxzLCB3ZSBpc3N1ZSB0aGUgYXV0b3ZhYwotCQkgKiByZXF1 ZXN0IG9ubHkgd2hlbiBjcm9zc2luZyBhIHNlZ21lbnQgYm91bmRhcnkuIFdpdGggZGVmYXVsdAot CQkgKiBjb21waWxhdGlvbiBzZXR0aW5ncyB0aGF0J3Mgcm91Z2hseSBhZnRlciA1MGsgbWVtYmVy cy4gIFRoaXMgc3RpbGwKLQkJICogZ2l2ZXMgcGxlbnR5IG9mIGNoYW5jZXMgYmVmb3JlIHdlIGdl dCBpbnRvIHJlYWwgdHJvdWJsZS4KLQkJICovCi0JCWlmICgoTVhPZmZzZXRUb01lbWJlclBhZ2Uo bmV4dE9mZnNldCkgLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKSAhPQotCQkJKE1YT2Zmc2V0VG9N ZW1iZXJQYWdlKG5leHRPZmZzZXQgKyBubWVtYmVycykgLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5U KSkKLQkJCVNlbmRQb3N0bWFzdGVyU2lnbmFsKFBNU0lHTkFMX1NUQVJUX0FVVE9WQUNfTEFVTkNI RVIpOwotCX0KLQotCWlmIChNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25vd24gJiYKLQkJ TXVsdGlYYWN0T2Zmc2V0V291bGRXcmFwKE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQs Ci0JCQkJCQkJCSBuZXh0T2Zmc2V0LAotCQkJCQkJCQkgbm1lbWJlcnMgKyBNVUxUSVhBQ1RfTUVN QkVSU19QRVJfUEFHRSAqIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQgKiBPRkZTRVRfV0FSTl9TRUdN RU5UUykpCi0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST0dSQU1f TElNSVRfRVhDRUVERUQpLAotCQkJCSBlcnJtc2dfcGx1cmFsKCJkYXRhYmFzZSB3aXRoIE9JRCAl dSBtdXN0IGJlIHZhY3V1bWVkIGJlZm9yZSAlZCBtb3JlIG11bHRpeGFjdCBtZW1iZXIgaXMgdXNl ZCIsCi0JCQkJCQkJICAgImRhdGFiYXNlIHdpdGggT0lEICV1IG11c3QgYmUgdmFjdXVtZWQgYmVm b3JlICVkIG1vcmUgbXVsdGl4YWN0IG1lbWJlcnMgYXJlIHVzZWQiLAotCQkJCQkJCSAgIE11bHRp WGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQgLSBuZXh0T2Zmc2V0ICsgbm1lbWJlcnMsCi0JCQkJ CQkJICAgTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE11bHRpWGFjdERCLAotCQkJCQkJCSAgIE11bHRp WGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQgLSBuZXh0T2Zmc2V0ICsgbm1lbWJlcnMpLAotCQkJ CSBlcnJoaW50KCJFeGVjdXRlIGEgZGF0YWJhc2Utd2lkZSBWQUNVVU0gaW4gdGhhdCBkYXRhYmFz ZSB3aXRoIHJlZHVjZWQgXCJ2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlXCIgYW5kIFwi dmFjdXVtX211bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlXCIgc2V0dGluZ3MuIikpKTsKKwkqb2Zm c2V0ID0gbmV4dE9mZnNldDsKIAogCUV4dGVuZE11bHRpWGFjdE1lbWJlcihuZXh0T2Zmc2V0LCBu bWVtYmVycyk7CiAKQEAgLTI2MjAsMjIgKzI0MTYsOSBAQCBFeHRlbmRNdWx0aVhhY3RNZW1iZXIo TXVsdGlYYWN0T2Zmc2V0IG9mZnNldCwgaW50IG5tZW1iZXJzKQogCQl9CiAKIAkJLyoKLQkJICog Q29tcHV0ZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRpbGwgZW5kIG9mIGN1cnJlbnQgcGFnZS4gIENh cmVmdWw6IGlmCi0JCSAqIGFkZGl0aW9uIG9mIHVuc2lnbmVkIGludHMgd3JhcHMgYXJvdW5kLCB3 ZSdyZSBhdCB0aGUgbGFzdCBwYWdlIG9mCi0JCSAqIHRoZSBsYXN0IHNlZ21lbnQ7IHNpbmNlIHRo YXQgcGFnZSBob2xkcyBhIGRpZmZlcmVudCBudW1iZXIgb2YgaXRlbXMKLQkJICogdGhhbiBvdGhl ciBwYWdlcywgd2UgbmVlZCB0byBkbyBpdCBkaWZmZXJlbnRseS4KKwkJICogQ29tcHV0ZSB0aGUg bnVtYmVyIG9mIGl0ZW1zIHRpbGwgZW5kIG9mIGN1cnJlbnQgcGFnZS4KIAkJICovCi0JCWlmIChv ZmZzZXQgKyBNQVhfTUVNQkVSU19JTl9MQVNUX01FTUJFUlNfUEFHRSA8IG9mZnNldCkKLQkJewot CQkJLyoKLQkJCSAqIFRoaXMgaXMgdGhlIGxhc3QgcGFnZSBvZiB0aGUgbGFzdCBzZWdtZW50OyB3 ZSBjYW4gY29tcHV0ZSB0aGUKLQkJCSAqIG51bWJlciBvZiBpdGVtcyBsZWZ0IHRvIGFsbG9jYXRl IGluIGl0IHdpdGhvdXQgbW9kdWxvCi0JCQkgKiBhcml0aG1ldGljLgotCQkJICovCi0JCQlkaWZm ZXJlbmNlID0gTWF4TXVsdGlYYWN0T2Zmc2V0IC0gb2Zmc2V0ICsgMTsKLQkJfQotCQllbHNlCi0J CQlkaWZmZXJlbmNlID0gTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0UgLSBvZmZzZXQgJSBNVUxU SVhBQ1RfTUVNQkVSU19QRVJfUEFHRTsKKwkJZGlmZmVyZW5jZSA9IE1VTFRJWEFDVF9NRU1CRVJT X1BFUl9QQUdFIC0gb2Zmc2V0ICUgTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0U7CiAKIAkJLyoK IAkJICogQWR2YW5jZSB0byBuZXh0IHBhZ2UsIHRha2luZyBjYXJlIHRvIHByb3Blcmx5IGhhbmRs ZSB0aGUgd3JhcGFyb3VuZApAQCAtMjcwMSwxNSArMjQ4NCwxMyBAQCBHZXRPbGRlc3RNdWx0aVhh Y3RJZCh2b2lkKQogfQogCiAvKgotICogRGV0ZXJtaW5lIGhvdyBhZ2dyZXNzaXZlbHkgd2UgbmVl ZCB0byB2YWN1dW0gaW4gb3JkZXIgdG8gcHJldmVudCBtZW1iZXIKLSAqIHdyYXBhcm91bmQuCisg KiBEZXRlcm1pbmUgaWYgd2UgbmVlZCB0byB2YWN1dW0gZm9yIG1lbWJlciBvciBub3QuCiAgKgog ICogVG8gZG8gc28gZGV0ZXJtaW5lIHdoYXQncyB0aGUgb2xkZXN0IG1lbWJlciBvZmZzZXQgYW5k IGluc3RhbGwgdGhlIGxpbWl0CiAgKiBpbmZvIGluIE11bHRpWGFjdFN0YXRlLCB3aGVyZSBpdCBj YW4gYmUgdXNlZCB0byBwcmV2ZW50IG92ZXJydW4gb2Ygb2xkIGRhdGEKICAqIGluIHRoZSBtZW1i ZXJzIFNMUlUgYXJlYS4KICAqCi0gKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRydWUgaWYgZW1lcmdl bmN5IGF1dG92YWN1dW0gaXMgcmVxdWlyZWQgYW5kIGZhbHNlCi0gKiBvdGhlcndpc2UuCisgKiBU aGUgcmV0dXJuIHZhbHVlIGlzIHRydWUgaWYgYXV0b3ZhY3V1bSBpcyByZXF1aXJlZCBhbmQgZmFs c2Ugb3RoZXJ3aXNlLgogICovCiBzdGF0aWMgYm9vbAogU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9v bCBpc19zdGFydHVwKQpAQCAtMjcxNywxMiArMjQ5OCw3IEBAIFNldE9mZnNldFZhY3V1bUxpbWl0 KGJvb2wgaXNfc3RhcnR1cCkKIAlNdWx0aVhhY3RJZCBvbGRlc3RNdWx0aVhhY3RJZDsKIAlNdWx0 aVhhY3RJZCBuZXh0TVhhY3Q7CiAJTXVsdGlYYWN0T2Zmc2V0IG9sZGVzdE9mZnNldCA9IDA7CS8q IHBsYWNhdGUgY29tcGlsZXIgKi8KLQlNdWx0aVhhY3RPZmZzZXQgcHJldk9sZGVzdE9mZnNldDsK IAlNdWx0aVhhY3RPZmZzZXQgbmV4dE9mZnNldDsKLQlib29sCQlvbGRlc3RPZmZzZXRLbm93biA9 IGZhbHNlOwotCWJvb2wJCXByZXZPbGRlc3RPZmZzZXRLbm93bjsKLQlNdWx0aVhhY3RPZmZzZXQg b2Zmc2V0U3RvcExpbWl0ID0gMDsKLQlNdWx0aVhhY3RPZmZzZXQgcHJldk9mZnNldFN0b3BMaW1p dDsKIAogCS8qCiAJICogTkI6IEhhdmUgdG8gcHJldmVudCBjb25jdXJyZW50IHRydW5jYXRpb24s IHdlIG1pZ2h0IG90aGVyd2lzZSB0cnkgdG8KQEAgLTI3MzUsOSArMjUxMSw2IEBAIFNldE9mZnNl dFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAlvbGRlc3RNdWx0aVhhY3RJZCA9IE11bHRp WGFjdFN0YXRlLT5vbGRlc3RNdWx0aVhhY3RJZDsKIAluZXh0TVhhY3QgPSBNdWx0aVhhY3RTdGF0 ZS0+bmV4dE1YYWN0OwogCW5leHRPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldDsK LQlwcmV2T2xkZXN0T2Zmc2V0S25vd24gPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25v d247Ci0JcHJldk9sZGVzdE9mZnNldCA9IE11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXQ7Ci0J cHJldk9mZnNldFN0b3BMaW1pdCA9IE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQ7CiAJ QXNzZXJ0KE11bHRpWGFjdFN0YXRlLT5maW5pc2hlZFN0YXJ0dXApOwogCUxXTG9ja1JlbGVhc2Uo TXVsdGlYYWN0R2VuTG9jayk7CiAKQEAgLTI3NTUsMTM5ICsyNTI4LDMxIEBAIFNldE9mZnNldFZh Y3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAkJICogb2Zmc2V0LgogCQkgKi8KIAkJb2xkZXN0 T2Zmc2V0ID0gbmV4dE9mZnNldDsKLQkJb2xkZXN0T2Zmc2V0S25vd24gPSB0cnVlOwogCX0KIAll bHNlCi0JewotCQkvKgotCQkgKiBGaWd1cmUgb3V0IHdoZXJlIHRoZSBvbGRlc3QgZXhpc3Rpbmcg bXVsdGl4YWN0J3Mgb2Zmc2V0cyBhcmUKLQkJICogc3RvcmVkLiBEdWUgdG8gYnVncyBpbiBlYXJs eSByZWxlYXNlIG9mIFBvc3RncmVTUUwgOS4zLlggYW5kIDkuNC5YLAotCQkgKiB0aGUgc3VwcG9z ZWRseS1lYXJsaWVzdCBtdWx0aXhhY3QgbWlnaHQgbm90IHJlYWxseSBleGlzdC4gIFdlIGFyZQot CQkgKiBjYXJlZnVsIG5vdCB0byBmYWlsIGluIHRoYXQgY2FzZS4KLQkJICovCi0JCW9sZGVzdE9m ZnNldEtub3duID0KLQkJCWZpbmRfbXVsdGl4YWN0X3N0YXJ0KG9sZGVzdE11bHRpWGFjdElkLCAm b2xkZXN0T2Zmc2V0KTsKLQotCQlpZiAob2xkZXN0T2Zmc2V0S25vd24pCi0JCQllcmVwb3J0KERF QlVHMSwKLQkJCQkJKGVycm1zZ19pbnRlcm5hbCgib2xkZXN0IE11bHRpWGFjdElkIG1lbWJlciBp cyBhdCBvZmZzZXQgJXUiLAotCQkJCQkJCQkJIG9sZGVzdE9mZnNldCkpKTsKLQkJZWxzZQotCQkJ ZXJlcG9ydChMT0csCi0JCQkJCShlcnJtc2coIk11bHRpWGFjdCBtZW1iZXIgd3JhcGFyb3VuZCBw cm90ZWN0aW9ucyBhcmUgZGlzYWJsZWQgYmVjYXVzZSBvbGRlc3QgY2hlY2twb2ludGVkIE11bHRp WGFjdCAldSBkb2VzIG5vdCBleGlzdCBvbiBkaXNrIiwKLQkJCQkJCQlvbGRlc3RNdWx0aVhhY3RJ ZCkpKTsKLQl9CisJCW9sZGVzdE9mZnNldCA9IGZpbmRfbXVsdGl4YWN0X3N0YXJ0KG9sZGVzdE11 bHRpWGFjdElkKTsKIAogCUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0VHJ1bmNhdGlvbkxvY2spOwog Ci0JLyoKLQkgKiBJZiB3ZSBjYW4sIGNvbXB1dGUgbGltaXRzIChhbmQgaW5zdGFsbCB0aGVtIE11 bHRpWGFjdFN0YXRlKSB0byBwcmV2ZW50Ci0JICogb3ZlcnJ1biBvZiBvbGQgZGF0YSBpbiB0aGUg bWVtYmVycyBTTFJVIGFyZWEuIFdlIGNhbiBvbmx5IGRvIHNvIGlmIHRoZQotCSAqIG9sZGVzdCBv ZmZzZXQgaXMga25vd24gdGhvdWdoLgotCSAqLwotCWlmIChvbGRlc3RPZmZzZXRLbm93bikKLQl7 Ci0JCS8qIG1vdmUgYmFjayB0byBzdGFydCBvZiB0aGUgY29ycmVzcG9uZGluZyBzZWdtZW50ICov Ci0JCW9mZnNldFN0b3BMaW1pdCA9IG9sZGVzdE9mZnNldCAtIChvbGRlc3RPZmZzZXQgJQotCQkJ CQkJCQkJCSAgKE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFICogU0xSVV9QQUdFU19QRVJfU0VH TUVOVCkpOwotCi0JCS8qIGFsd2F5cyBsZWF2ZSBvbmUgc2VnbWVudCBiZWZvcmUgdGhlIHdyYXBh cm91bmQgcG9pbnQgKi8KLQkJb2Zmc2V0U3RvcExpbWl0IC09IChNVUxUSVhBQ1RfTUVNQkVSU19Q RVJfUEFHRSAqIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpOwotCi0JCWlmICghcHJldk9sZGVzdE9m ZnNldEtub3duICYmICFpc19zdGFydHVwKQotCQkJZXJlcG9ydChMT0csCi0JCQkJCShlcnJtc2co Ik11bHRpWGFjdCBtZW1iZXIgd3JhcGFyb3VuZCBwcm90ZWN0aW9ucyBhcmUgbm93IGVuYWJsZWQi KSkpOwotCi0JCWVyZXBvcnQoREVCVUcxLAotCQkJCShlcnJtc2dfaW50ZXJuYWwoIk11bHRpWGFj dCBtZW1iZXIgc3RvcCBsaW1pdCBpcyBub3cgJXUgYmFzZWQgb24gTXVsdGlYYWN0ICV1IiwKLQkJ CQkJCQkJIG9mZnNldFN0b3BMaW1pdCwgb2xkZXN0TXVsdGlYYWN0SWQpKSk7Ci0JfQotCWVsc2Ug aWYgKHByZXZPbGRlc3RPZmZzZXRLbm93bikKLQl7Ci0JCS8qCi0JCSAqIElmIHdlIGZhaWxlZCB0 byBnZXQgdGhlIG9sZGVzdCBvZmZzZXQgdGhpcyB0aW1lLCBidXQgd2UgaGF2ZSBhCi0JCSAqIHZh bHVlIGZyb20gYSBwcmV2aW91cyBwYXNzIHRocm91Z2ggdGhpcyBmdW5jdGlvbiwgdXNlIHRoZSBv bGQKLQkJICogdmFsdWVzIHJhdGhlciB0aGFuIGF1dG9tYXRpY2FsbHkgZm9yY2luZyBhbiBlbWVy Z2VuY3kgYXV0b3ZhY3V1bQotCQkgKiBjeWNsZSBhZ2Fpbi4KLQkJICovCi0JCW9sZGVzdE9mZnNl dCA9IHByZXZPbGRlc3RPZmZzZXQ7Ci0JCW9sZGVzdE9mZnNldEtub3duID0gdHJ1ZTsKLQkJb2Zm c2V0U3RvcExpbWl0ID0gcHJldk9mZnNldFN0b3BMaW1pdDsKLQl9Ci0KIAkvKiBJbnN0YWxsIHRo ZSBjb21wdXRlZCB2YWx1ZXMgKi8KIAlMV0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExX X0VYQ0xVU0lWRSk7CiAJTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldCA9IG9sZGVzdE9mZnNl dDsKLQlNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25vd24gPSBvbGRlc3RPZmZzZXRLbm93 bjsKLQlNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExpbWl0ID0gb2Zmc2V0U3RvcExpbWl0Owog CUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7CiAKIAkvKgotCSAqIERvIHdlIG5lZWQg YW4gZW1lcmdlbmN5IGF1dG92YWN1dW0/CUlmIHdlJ3JlIG5vdCBzdXJlLCBhc3N1bWUgeWVzLgot CSAqLwotCXJldHVybiAhb2xkZXN0T2Zmc2V0S25vd24gfHwKLQkJKG5leHRPZmZzZXQgLSBvbGRl c3RPZmZzZXQgPiBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKLX0KLQotLyoKLSAq IFJldHVybiB3aGV0aGVyIGFkZGluZyAiZGlzdGFuY2UiIHRvICJzdGFydCIgd291bGQgbW92ZSBw YXN0ICJib3VuZGFyeSIuCi0gKgotICogV2UgdXNlIHRoaXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIg dGhlIGFkZGl0aW9uIGlzICJ3cmFwcGluZyBhcm91bmQiIHRoZQotICogYm91bmRhcnkgcG9pbnQs IGhlbmNlIHRoZSBuYW1lLiAgVGhlIHJlYXNvbiB3ZSBkb24ndCB3YW50IHRvIHVzZSB0aGUgcmVn dWxhcgotICogMl4zMS1tb2R1bG8gYXJpdGhtZXRpYyBoZXJlIGlzIHRoYXQgd2Ugd2FudCB0byBi ZSBhYmxlIHRvIHVzZSB0aGUgd2hvbGUgb2YKLSAqIHRoZSAyXjMyLTEgc3BhY2UgaGVyZSwgYWxs b3dpbmcgZm9yIG1vcmUgbXVsdGl4YWN0cyB0aGFuIHdvdWxkIGZpdAotICogb3RoZXJ3aXNlLgot ICovCi1zdGF0aWMgYm9vbAotTXVsdGlYYWN0T2Zmc2V0V291bGRXcmFwKE11bHRpWGFjdE9mZnNl dCBib3VuZGFyeSwgTXVsdGlYYWN0T2Zmc2V0IHN0YXJ0LAotCQkJCQkJIHVpbnQzMiBkaXN0YW5j ZSkKLXsKLQlNdWx0aVhhY3RPZmZzZXQgZmluaXNoOwotCi0JLyoKLQkgKiBOb3RlIHRoYXQgb2Zm c2V0IG51bWJlciAwIGlzIG5vdCB1c2VkIChzZWUgR2V0TXVsdGlYYWN0SWRNZW1iZXJzKSwgc28K LQkgKiBpZiB0aGUgYWRkaXRpb24gd3JhcHMgYXJvdW5kIHRoZSBVSU5UX01BWCBib3VuZGFyeSwg c2tpcCB0aGF0IHZhbHVlLgotCSAqLwotCWZpbmlzaCA9IHN0YXJ0ICsgZGlzdGFuY2U7Ci0JaWYg KGZpbmlzaCA8IHN0YXJ0KQotCQlmaW5pc2grKzsKLQotCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkgKiBX aGVuIHRoZSBib3VuZGFyeSBpcyBudW1lcmljYWxseSBncmVhdGVyIHRoYW4gdGhlIHN0YXJ0aW5n IHBvaW50LCBhbnkKLQkgKiB2YWx1ZSBudW1lcmljYWxseSBiZXR3ZWVuIHRoZSB0d28gaXMgbm90 IHdyYXBwZWQ6Ci0JICoKLQkgKgk8LS0tLVMtLS0tQi0tLS0+Ci0JICoJWy0tLSkJCQkgPSBGIHdy YXBwZWQgcGFzdCBCIChhbmQgVUlOVF9NQVgpCi0JICoJCSBbLS0tKQkJID0gRiBub3Qgd3JhcHBl ZAotCSAqCQkJICBbLS0tLV0gPSBGIHdyYXBwZWQgcGFzdCBCCi0JICoKLQkgKiBXaGVuIHRoZSBi b3VuZGFyeSBpcyBudW1lcmljYWxseSBsZXNzIHRoYW4gdGhlIHN0YXJ0aW5nIHBvaW50IChpLmUu IHRoZQotCSAqIFVJTlRfTUFYIHdyYXBhcm91bmQgb2NjdXJzIHNvbWV3aGVyZSBpbiBiZXR3ZWVu KSB0aGVuIGFsbCB2YWx1ZXMgaW4KLQkgKiBiZXR3ZWVuIGFyZSB3cmFwcGVkOgotCSAqCi0JICoJ PC0tLS1CLS0tLVMtLS0tPgotCSAqCVstLS0pCQkJID0gRiBub3Qgd3JhcHBlZCBwYXN0IEIgKGJ1 dCB3cmFwcGVkIHBhc3QgVUlOVF9NQVgpCi0JICoJCSBbLS0tKQkJID0gRiB3cmFwcGVkIHBhc3Qg QiAoYW5kIFVJTlRfTUFYKQotCSAqCQkJICBbLS0tLV0gPSBGIG5vdCB3cmFwcGVkCi0JICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorCSAqIERvIHdlIG5lZWQgYXV0b3ZhY3V1bT8KIAkgKi8KLQlpZiAoc3RhcnQg PCBib3VuZGFyeSkKLQkJcmV0dXJuIGZpbmlzaCA+PSBib3VuZGFyeSB8fCBmaW5pc2ggPCBzdGFy dDsKLQllbHNlCi0JCXJldHVybiBmaW5pc2ggPj0gYm91bmRhcnkgJiYgZmluaXNoIDwgc3RhcnQ7 CisJcmV0dXJuIChuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0ID4gTVVMVElYQUNUX01FTUJFUl9B VVRPVkFDX1RIUkVTSE9MRCk7CiB9CiAKIC8qCiAgKiBGaW5kIHRoZSBzdGFydGluZyBvZmZzZXQg b2YgdGhlIGdpdmVuIE11bHRpWGFjdElkLgogICoKLSAqIFJldHVybnMgZmFsc2UgaWYgdGhlIGZp bGUgY29udGFpbmluZyB0aGUgbXVsdGkgZG9lcyBub3QgZXhpc3Qgb24gZGlzay4KLSAqIE90aGVy d2lzZSwgcmV0dXJucyB0cnVlIGFuZCBzZXRzICpyZXN1bHQgdG8gdGhlIHN0YXJ0aW5nIG1lbWJl ciBvZmZzZXQuCi0gKgogICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwcmV2ZW50IGNvbmN1cnJl bnQgdHJ1bmNhdGlvbiwgc28gaWYgdGhhdCdzCiAgKiByZXF1aXJlZCwgdGhlIGNhbGxlciBoYXMg dG8gcHJvdGVjdCBhZ2FpbnN0IHRoYXQuCiAgKi8KLXN0YXRpYyBib29sCi1maW5kX211bHRpeGFj dF9zdGFydChNdWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpyZXN1bHQpCitzdGF0 aWMgTXVsdGlYYWN0T2Zmc2V0CitmaW5kX211bHRpeGFjdF9zdGFydChNdWx0aVhhY3RJZCBtdWx0 aSkKIHsKIAlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0OwogCWludDY0CQlwYWdlbm87CkBAIC0yOTAw LDE1ICsyNTY1LDYgQEAgZmluZF9tdWx0aXhhY3Rfc3RhcnQoTXVsdGlYYWN0SWQgbXVsdGksIE11 bHRpWGFjdE9mZnNldCAqcmVzdWx0KQogCXBhZ2VubyA9IE11bHRpWGFjdElkVG9PZmZzZXRQYWdl KG11bHRpKTsKIAllbnRyeW5vID0gTXVsdGlYYWN0SWRUb09mZnNldEVudHJ5KG11bHRpKTsKIAot CS8qCi0JICogV3JpdGUgb3V0IGRpcnR5IGRhdGEsIHNvIFBoeXNpY2FsUGFnZUV4aXN0cyBjYW4g d29yayBjb3JyZWN0bHkuCi0JICovCi0JU2ltcGxlTHJ1V3JpdGVBbGwoTXVsdGlYYWN0T2Zmc2V0 Q3RsLCB0cnVlKTsKLQlTaW1wbGVMcnVXcml0ZUFsbChNdWx0aVhhY3RNZW1iZXJDdGwsIHRydWUp OwotCi0JaWYgKCFTaW1wbGVMcnVEb2VzUGh5c2ljYWxQYWdlRXhpc3QoTXVsdGlYYWN0T2Zmc2V0 Q3RsLCBwYWdlbm8pKQotCQlyZXR1cm4gZmFsc2U7Ci0KIAkvKiBsb2NrIGlzIGFjcXVpcmVkIGJ5 IFNpbXBsZUxydVJlYWRQYWdlX1JlYWRPbmx5ICovCiAJc2xvdG5vID0gU2ltcGxlTHJ1UmVhZFBh Z2VfUmVhZE9ubHkoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBwYWdlbm8sIG11bHRpKTsKIAlvZmZwdHIg PSAoTXVsdGlYYWN0T2Zmc2V0ICopIE11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2J1 ZmZlcltzbG90bm9dOwpAQCAtMjkxNiwxMDIgKzI1NzIsNyBAQCBmaW5kX211bHRpeGFjdF9zdGFy dChNdWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpyZXN1bHQpCiAJb2Zmc2V0ID0g Km9mZnB0cjsKIAlMV0xvY2tSZWxlYXNlKFNpbXBsZUxydUdldEJhbmtMb2NrKE11bHRpWGFjdE9m ZnNldEN0bCwgcGFnZW5vKSk7CiAKLQkqcmVzdWx0ID0gb2Zmc2V0OwotCXJldHVybiB0cnVlOwot fQotCi0vKgotICogRGV0ZXJtaW5lIGhvdyBtYW55IG11bHRpeGFjdHMsIGFuZCBob3cgbWFueSBt dWx0aXhhY3QgbWVtYmVycywgY3VycmVudGx5Ci0gKiBleGlzdC4gIFJldHVybiBmYWxzZSBpZiB1 bmFibGUgdG8gZGV0ZXJtaW5lLgotICovCi1zdGF0aWMgYm9vbAotUmVhZE11bHRpWGFjdENvdW50 cyh1aW50MzIgKm11bHRpeGFjdHMsIE11bHRpWGFjdE9mZnNldCAqbWVtYmVycykKLXsKLQlNdWx0 aVhhY3RPZmZzZXQgbmV4dE9mZnNldDsKLQlNdWx0aVhhY3RPZmZzZXQgb2xkZXN0T2Zmc2V0Owot CU11bHRpWGFjdElkIG9sZGVzdE11bHRpWGFjdElkOwotCU11bHRpWGFjdElkIG5leHRNdWx0aVhh Y3RJZDsKLQlib29sCQlvbGRlc3RPZmZzZXRLbm93bjsKLQotCUxXTG9ja0FjcXVpcmUoTXVsdGlY YWN0R2VuTG9jaywgTFdfU0hBUkVEKTsKLQluZXh0T2Zmc2V0ID0gTXVsdGlYYWN0U3RhdGUtPm5l eHRPZmZzZXQ7Ci0Jb2xkZXN0TXVsdGlYYWN0SWQgPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0TXVs dGlYYWN0SWQ7Ci0JbmV4dE11bHRpWGFjdElkID0gTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdDsK LQlvbGRlc3RPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0OwotCW9sZGVzdE9m ZnNldEtub3duID0gTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtub3duOwotCUxXTG9ja1Jl bGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7Ci0KLQlpZiAoIW9sZGVzdE9mZnNldEtub3duKQotCQly ZXR1cm4gZmFsc2U7Ci0KLQkqbWVtYmVycyA9IG5leHRPZmZzZXQgLSBvbGRlc3RPZmZzZXQ7Ci0J Km11bHRpeGFjdHMgPSBuZXh0TXVsdGlYYWN0SWQgLSBvbGRlc3RNdWx0aVhhY3RJZDsKLQlyZXR1 cm4gdHJ1ZTsKLX0KLQotLyoKLSAqIE11bHRpeGFjdCBtZW1iZXJzIGNhbiBiZSByZW1vdmVkIG9u Y2UgdGhlIG11bHRpeGFjdHMgdGhhdCByZWZlciB0byB0aGVtCi0gKiBhcmUgb2xkZXIgdGhhbiBl dmVyeSBkYXRtaW5teGlkLiAgYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgYW5k Ci0gKiB2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2Ugd29yayB0b2dldGhlciB0byBt YWtlIHN1cmUgd2UgbmV2ZXIgaGF2ZQotICogdG9vIG1hbnkgbXVsdGl4YWN0czsgd2UgaG9wZSB0 aGF0LCBhdCBsZWFzdCB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcywKLSAqIHRoaXMgd2lsbCBh bHNvIGJlIHN1ZmZpY2llbnQgdG8ga2VlcCB1cyBmcm9tIHVzaW5nIHRvbyBtYW55IG9mZnNldHMu Ci0gKiBIb3dldmVyLCBpZiB0aGUgYXZlcmFnZSBtdWx0aXhhY3QgaGFzIG1hbnkgbWVtYmVycywg d2UgbWlnaHQgZXhoYXVzdCB0aGUKLSAqIG1lbWJlcnMgc3BhY2Ugd2hpbGUgc3RpbGwgdXNpbmcg ZmV3IGVub3VnaCBtZW1iZXJzIHRoYXQgdGhlc2UgbGltaXRzIGZhaWwKLSAqIHRvIHRyaWdnZXIg cmVsbWlubXhpZCBhZHZhbmNlbWVudCBieSBWQUNVVU0uICBBdCB0aGF0IHBvaW50LCB3ZSdkIGhh dmUgbm8KLSAqIGNob2ljZSBidXQgdG8gc3RhcnQgZmFpbGluZyBtdWx0aXhhY3QtY3JlYXRpbmcg b3BlcmF0aW9ucyB3aXRoIGFuIGVycm9yLgotICoKLSAqIFRvIHByZXZlbnQgdGhhdCwgaWYgbW9y ZSB0aGFuIGEgdGhyZXNob2xkIHBvcnRpb24gb2YgdGhlIG1lbWJlcnMgc3BhY2UgaXMKLSAqIHVz ZWQsIHdlIGVmZmVjdGl2ZWx5IHJlZHVjZSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4 X2FnZSBhbmQKLSAqIHRvIGEgdmFsdWUganVzdCBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBtdWx0 aXhhY3RzIGluIHVzZS4gIFdlIGhvcGUgdGhhdAotICogdGhpcyB3aWxsIHF1aWNrbHkgdHJpZ2dl ciBhdXRvdmFjdXVtaW5nIG9uIHRoZSB0YWJsZSBvciB0YWJsZXMgd2l0aCB0aGUKLSAqIG9sZGVz dCByZWxtaW5teGlkLCB0aHVzIGFsbG93aW5nIGRhdG1pbm14aWQgdmFsdWVzIHRvIGFkdmFuY2Ug YW5kIHJlbW92aW5nCi0gKiBzb21lIG1lbWJlcnMuCi0gKgotICogQXMgdGhlIGZyYWN0aW9uIG9m IHRoZSBtZW1iZXIgc3BhY2UgY3VycmVudGx5IGluIHVzZSBncm93cywgd2UgYmVjb21lCi0gKiBt b3JlIGFnZ3Jlc3NpdmUgaW4gY2xhbXBpbmcgdGhpcyB2YWx1ZS4gIFRoYXQgbm90IG9ubHkgY2F1 c2VzIGF1dG92YWN1dW0KLSAqIHRvIHJhbXAgdXAsIGJ1dCBhbHNvIG1ha2VzIGFueSBtYW51YWwg dmFjdXVtcyB0aGUgdXNlciBpc3N1ZXMgbW9yZQotICogYWdncmVzc2l2ZS4gIFRoaXMgaGFwcGVu cyBiZWNhdXNlIHZhY3V1bV9nZXRfY3V0b2ZmcygpIHdpbGwgY2xhbXAgdGhlCi0gKiBmcmVlemUg dGFibGUgYW5kIHRoZSBtaW5pbXVtIGZyZWV6ZSBhZ2UgY3V0b2ZmcyBiYXNlZCBvbiB0aGUgZWZm ZWN0aXZlCi0gKiBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSB0aGlzIGZ1bmN0 aW9uIHJldHVybnMuICBJbiB0aGUgd29yc3QKLSAqIGNhc2UsIHdlJ2xsIGNsYWltIHRoZSBmcmVl emVfbWF4X2FnZSB0byB6ZXJvLCBhbmQgZXZlcnkgdmFjdXVtIG9mIGFueQotICogdGFibGUgd2ls bCBmcmVlemUgZXZlcnkgbXVsdGl4YWN0LgotICovCi1pbnQKLU11bHRpWGFjdE1lbWJlckZyZWV6 ZVRocmVzaG9sZCh2b2lkKQotewotCU11bHRpWGFjdE9mZnNldCBtZW1iZXJzOwotCXVpbnQzMgkJ bXVsdGl4YWN0czsKLQl1aW50MzIJCXZpY3RpbV9tdWx0aXhhY3RzOwotCWRvdWJsZQkJZnJhY3Rp b247Ci0JaW50CQkJcmVzdWx0OwotCi0JLyogSWYgd2UgY2FuJ3QgZGV0ZXJtaW5lIG1lbWJlciBz cGFjZSB1dGlsaXphdGlvbiwgYXNzdW1lIHRoZSB3b3JzdC4gKi8KLQlpZiAoIVJlYWRNdWx0aVhh Y3RDb3VudHMoJm11bHRpeGFjdHMsICZtZW1iZXJzKSkKLQkJcmV0dXJuIDA7Ci0KLQkvKiBJZiBt ZW1iZXIgc3BhY2UgdXRpbGl6YXRpb24gaXMgbG93LCBubyBzcGVjaWFsIGFjdGlvbiBpcyByZXF1 aXJlZC4gKi8KLQlpZiAobWVtYmVycyA8PSBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xE KQotCQlyZXR1cm4gYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2U7Ci0KLQkvKgot CSAqIENvbXB1dGUgYSB0YXJnZXQgZm9yIHJlbG1pbm14aWQgYWR2YW5jZW1lbnQuICBUaGUgbnVt YmVyIG9mIG11bHRpeGFjdHMKLQkgKiB3ZSB0cnkgdG8gZWxpbWluYXRlIGZyb20gdGhlIHN5c3Rl bSBpcyBiYXNlZCBvbiBob3cgZmFyIHdlIGFyZSBwYXN0Ci0JICogTVVMVElYQUNUX01FTUJFUl9T QUZFX1RIUkVTSE9MRC4KLQkgKi8KLQlmcmFjdGlvbiA9IChkb3VibGUpIChtZW1iZXJzIC0gTVVM VElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCkgLwotCQkoTVVMVElYQUNUX01FTUJFUl9EQU5H RVJfVEhSRVNIT0xEIC0gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCk7Ci0JdmljdGlt X211bHRpeGFjdHMgPSBtdWx0aXhhY3RzICogZnJhY3Rpb247Ci0KLQkvKiBmcmFjdGlvbiBjb3Vs ZCBiZSA+IDEuMCwgYnV0IGxvd2VzdCBwb3NzaWJsZSBmcmVlemUgYWdlIGlzIHplcm8gKi8KLQlp ZiAodmljdGltX211bHRpeGFjdHMgPiBtdWx0aXhhY3RzKQotCQlyZXR1cm4gMDsKLQlyZXN1bHQg PSBtdWx0aXhhY3RzIC0gdmljdGltX211bHRpeGFjdHM7Ci0KLQkvKgotCSAqIENsYW1wIHRvIGF1 dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlLCBzbyB0aGF0IHdlIG5ldmVyIG1ha2UK LQkgKiBhdXRvdmFjdXVtIGxlc3MgYWdncmVzc2l2ZSB0aGFuIGl0IHdvdWxkIG90aGVyd2lzZSBi ZS4KLQkgKi8KLQlyZXR1cm4gTWluKHJlc3VsdCwgYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXpl X21heF9hZ2UpOworCXJldHVybiBvZmZzZXQ7CiB9CiAKIHR5cGVkZWYgc3RydWN0IG14dHJ1bmNp bmZvCkBAIC0zMDM5LDM3ICsyNjAwLDEzIEBAIFNscnVTY2FuRGlyQ2JGaW5kRWFybGllc3QoU2xy dUN0bCBjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBzZWdwYWdlLCB2b2lkICpkYXRhCiAKIAog LyoKLSAqIERlbGV0ZSBtZW1iZXJzIHNlZ21lbnRzIFtvbGRlc3QsIG5ld09sZGVzdCkKLSAqCi0g KiBUaGUgbWVtYmVycyBTTFJVIGNhbiwgaW4gY29udHJhc3QgdG8gdGhlIG9mZnNldHMgb25lLCBi ZSBmaWxsZWQgdG8gYWxtb3N0Ci0gKiB0aGUgZnVsbCByYW5nZSBhdCBvbmNlLiBUaGlzIG1lYW5z IFNpbXBsZUxydVRydW5jYXRlKCkgY2FuJ3QgdHJpdmlhbGx5IGJlCi0gKiB1c2VkIC0gaW5zdGVh ZCB0aGUgdG8tYmUtZGVsZXRlZCByYW5nZSBpcyBjb21wdXRlZCB1c2luZyB0aGUgb2Zmc2V0cwot ICogU0xSVS4gQy5mLiBUcnVuY2F0ZU11bHRpWGFjdCgpLgorICogRGVsZXRlIG1lbWJlcnMgc2Vn bWVudHMgYmVmb3JlIHRoZSBuZXdPbGRlc3RPZmZzZXQuCiAgKi8KIHN0YXRpYyB2b2lkCi1QZXJm b3JtTWVtYmVyc1RydW5jYXRpb24oTXVsdGlYYWN0T2Zmc2V0IG9sZGVzdE9mZnNldCwgTXVsdGlY YWN0T2Zmc2V0IG5ld09sZGVzdE9mZnNldCkKK1BlcmZvcm1NZW1iZXJzVHJ1bmNhdGlvbihNdWx0 aVhhY3RPZmZzZXQgbmV3T2xkZXN0T2Zmc2V0KQogewotCWNvbnN0IGludDY0IG1heHNlZ21lbnQg PSBNWE9mZnNldFRvTWVtYmVyU2VnbWVudChNYXhNdWx0aVhhY3RPZmZzZXQpOwotCWludDY0CQlz dGFydHNlZ21lbnQgPSBNWE9mZnNldFRvTWVtYmVyU2VnbWVudChvbGRlc3RPZmZzZXQpOwotCWlu dDY0CQllbmRzZWdtZW50ID0gTVhPZmZzZXRUb01lbWJlclNlZ21lbnQobmV3T2xkZXN0T2Zmc2V0 KTsKLQlpbnQ2NAkJc2VnbWVudCA9IHN0YXJ0c2VnbWVudDsKLQotCS8qCi0JICogRGVsZXRlIGFs bCB0aGUgc2VnbWVudHMgYnV0IHRoZSBsYXN0IG9uZS4gVGhlIGxhc3Qgc2VnbWVudCBjYW4gc3Rp bGwKLQkgKiBjb250YWluLCBwb3NzaWJseSBwYXJ0aWFsbHksIHZhbGlkIGRhdGEuCi0JICovCi0J d2hpbGUgKHNlZ21lbnQgIT0gZW5kc2VnbWVudCkKLQl7Ci0JCWVsb2coREVCVUcyLCAidHJ1bmNh dGluZyBtdWx0aXhhY3QgbWVtYmVycyBzZWdtZW50ICVsbHgiLAotCQkJICh1bnNpZ25lZCBsb25n IGxvbmcpIHNlZ21lbnQpOwotCQlTbHJ1RGVsZXRlU2VnbWVudChNdWx0aVhhY3RNZW1iZXJDdGws IHNlZ21lbnQpOwotCi0JCS8qIG1vdmUgdG8gbmV4dCBzZWdtZW50LCBoYW5kbGluZyB3cmFwYXJv dW5kIGNvcnJlY3RseSAqLwotCQlpZiAoc2VnbWVudCA9PSBtYXhzZWdtZW50KQotCQkJc2VnbWVu dCA9IDA7Ci0JCWVsc2UKLQkJCXNlZ21lbnQgKz0gMTsKLQl9CisJU2ltcGxlTHJ1VHJ1bmNhdGUo TXVsdGlYYWN0TWVtYmVyQ3RsLAorCQkJCQkgIE1YT2Zmc2V0VG9NZW1iZXJQYWdlKG5ld09sZGVz dE9mZnNldCkpOwogfQogCiAvKgpAQCAtMzE3NCwyMyArMjcxMSwxNSBAQCBUcnVuY2F0ZU11bHRp WGFjdChNdWx0aVhhY3RJZCBuZXdPbGRlc3RNdWx0aSwgT2lkIG5ld09sZGVzdE11bHRpREIpCiAJ LyoKIAkgKiBGaXJzdCwgY29tcHV0ZSB0aGUgc2FmZSB0cnVuY2F0aW9uIHBvaW50IGZvciBNdWx0 aVhhY3RNZW1iZXIuIFRoaXMgaXMKIAkgKiB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSBvbGRl c3QgbXVsdGl4YWN0LgotCSAqCi0JICogSG9wZWZ1bGx5LCBmaW5kX211bHRpeGFjdF9zdGFydCB3 aWxsIGFsd2F5cyB3b3JrIGhlcmUsIGJlY2F1c2Ugd2UndmUKLQkgKiBhbHJlYWR5IGNoZWNrZWQg dGhhdCBpdCBkb2Vzbid0IHByZWNlZGUgdGhlIGVhcmxpZXN0IE11bHRpWGFjdCBvbiBkaXNrLgot CSAqIEJ1dCBpZiBpdCBmYWlscywgZG9uJ3QgdHJ1bmNhdGUgYW55dGhpbmcsIGFuZCBsb2cgYSBt ZXNzYWdlLgogCSAqLwogCWlmIChvbGRlc3RNdWx0aSA9PSBuZXh0TXVsdGkpCiAJewogCQkvKiB0 aGVyZSBhcmUgTk8gTXVsdGlYYWN0cyAqLwogCQlvbGRlc3RPZmZzZXQgPSBuZXh0T2Zmc2V0Owog CX0KLQllbHNlIGlmICghZmluZF9tdWx0aXhhY3Rfc3RhcnQob2xkZXN0TXVsdGksICZvbGRlc3RP ZmZzZXQpKQorCWVsc2UKIAl7Ci0JCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coIm9sZGVzdCBN dWx0aVhhY3QgJXUgbm90IGZvdW5kLCBlYXJsaWVzdCBNdWx0aVhhY3QgJXUsIHNraXBwaW5nIHRy dW5jYXRpb24iLAotCQkJCQkJb2xkZXN0TXVsdGksIGVhcmxpZXN0KSkpOwotCQlMV0xvY2tSZWxl YXNlKE11bHRpWGFjdFRydW5jYXRpb25Mb2NrKTsKLQkJcmV0dXJuOworCQlvbGRlc3RPZmZzZXQg PSBmaW5kX211bHRpeGFjdF9zdGFydChvbGRlc3RNdWx0aSk7CiAJfQogCiAJLyoKQEAgLTMyMDIs MTMgKzI3MzEsOSBAQCBUcnVuY2F0ZU11bHRpWGFjdChNdWx0aVhhY3RJZCBuZXdPbGRlc3RNdWx0 aSwgT2lkIG5ld09sZGVzdE11bHRpREIpCiAJCS8qIHRoZXJlIGFyZSBOTyBNdWx0aVhhY3RzICov CiAJCW5ld09sZGVzdE9mZnNldCA9IG5leHRPZmZzZXQ7CiAJfQotCWVsc2UgaWYgKCFmaW5kX211 bHRpeGFjdF9zdGFydChuZXdPbGRlc3RNdWx0aSwgJm5ld09sZGVzdE9mZnNldCkpCisJZWxzZQog CXsKLQkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygiY2Fubm90IHRydW5jYXRlIHVwIHRvIE11 bHRpWGFjdCAldSBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0IG9uIGRpc2ssIHNraXBwaW5nIHRy dW5jYXRpb24iLAotCQkJCQkJbmV3T2xkZXN0TXVsdGkpKSk7Ci0JCUxXTG9ja1JlbGVhc2UoTXVs dGlYYWN0VHJ1bmNhdGlvbkxvY2spOwotCQlyZXR1cm47CisJCW5ld09sZGVzdE9mZnNldCA9IGZp bmRfbXVsdGl4YWN0X3N0YXJ0KG5ld09sZGVzdE11bHRpKTsKIAl9CiAKIAllbG9nKERFQlVHMSwg InBlcmZvcm1pbmcgbXVsdGl4YWN0IHRydW5jYXRpb246ICIKQEAgLTMyNTgsNyArMjc4Myw3IEBA IFRydW5jYXRlTXVsdGlYYWN0KE11bHRpWGFjdElkIG5ld09sZGVzdE11bHRpLCBPaWQgbmV3T2xk ZXN0TXVsdGlEQikKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCiAJLyogRmly c3QgdHJ1bmNhdGUgbWVtYmVycyAqLwotCVBlcmZvcm1NZW1iZXJzVHJ1bmNhdGlvbihvbGRlc3RP ZmZzZXQsIG5ld09sZGVzdE9mZnNldCk7CisJUGVyZm9ybU1lbWJlcnNUcnVuY2F0aW9uKG5ld09s ZGVzdE9mZnNldCk7CiAKIAkvKiBUaGVuIG9mZnNldHMgKi8KIAlQZXJmb3JtT2Zmc2V0c1RydW5j YXRpb24ob2xkZXN0TXVsdGksIG5ld09sZGVzdE11bHRpKTsKQEAgLTMzNDUsNyArMjg3MCw3IEBA IE11bHRpWGFjdElkUHJlY2VkZXNPckVxdWFscyhNdWx0aVhhY3RJZCBtdWx0aTEsIE11bHRpWGFj dElkIG11bHRpMikKIHN0YXRpYyBib29sCiBNdWx0aVhhY3RPZmZzZXRQcmVjZWRlcyhNdWx0aVhh Y3RPZmZzZXQgb2Zmc2V0MSwgTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDIpCiB7Ci0JaW50MzIJCWRp ZmYgPSAoaW50MzIpIChvZmZzZXQxIC0gb2Zmc2V0Mik7CisJaW50NjQJCWRpZmYgPSAoaW50NjQp IChvZmZzZXQxIC0gb2Zmc2V0Mik7CiAKIAlyZXR1cm4gKGRpZmYgPCAwKTsKIH0KQEAgLTM0OTIs NyArMzAxNyw3IEBAIG11bHRpeGFjdF9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkg Ki8KIAkJU2V0TXVsdGlYYWN0SWRMaW1pdCh4bHJlYy5lbmRUcnVuY09mZiwgeGxyZWMub2xkZXN0 TXVsdGlEQiwgZmFsc2UpOwogCi0JCVBlcmZvcm1NZW1iZXJzVHJ1bmNhdGlvbih4bHJlYy5zdGFy dFRydW5jTWVtYiwgeGxyZWMuZW5kVHJ1bmNNZW1iKTsKKwkJUGVyZm9ybU1lbWJlcnNUcnVuY2F0 aW9uKHhscmVjLmVuZFRydW5jTWVtYik7CiAKIAkJLyoKIAkJICogRHVyaW5nIFhMT0cgcmVwbGF5 LCBsYXRlc3RfcGFnZV9udW1iZXIgaXNuJ3QgbmVjZXNzYXJpbHkgc2V0IHVwCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMKaW5kZXggYmYzZGJkYTkwMS4uYTgxM2EwOTBmYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYwpAQCAtNTA4Myw3ICs1MDgzLDcgQEAgQm9vdFN0cmFwWExPRyh1aW50 MzIgZGF0YV9jaGVja3N1bV92ZXJzaW9uKQogCQlGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFu ZFhpZCgwLCBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQpOwogCWNoZWNrUG9pbnQubmV4dE9pZCA9 IEZpcnN0R2VuYmtpT2JqZWN0SWQ7CiAJY2hlY2tQb2ludC5uZXh0TXVsdGkgPSBGaXJzdE11bHRp WGFjdElkOwotCWNoZWNrUG9pbnQubmV4dE11bHRpT2Zmc2V0ID0gMDsKKwljaGVja1BvaW50Lm5l eHRNdWx0aU9mZnNldCA9IDE7CiAJY2hlY2tQb2ludC5vbGRlc3RYaWQgPSBGaXJzdE5vcm1hbFRy YW5zYWN0aW9uSWQ7CiAJY2hlY2tQb2ludC5vbGRlc3RYaWREQiA9IFRlbXBsYXRlMURiT2lkOwog CWNoZWNrUG9pbnQub2xkZXN0TXVsdGkgPSBGaXJzdE11bHRpWGFjdElkOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW0uYwppbmRleCBlNjc0NWU2MTQ1Li5jOTZmYmYwMDRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpA QCAtMTEzNCw3ICsxMTM0LDcgQEAgdmFjdXVtX2dldF9jdXRvZmZzKFJlbGF0aW9uIHJlbCwgY29u c3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJICogbm9ybWFsbHkgYXV0b3ZhY3V1bV9tdWx0aXhh Y3RfZnJlZXplX21heF9hZ2UsIGJ1dCBtYXkgYmUgbGVzcyBpZiB3ZSBhcmUKIAkgKiBzaG9ydCBv ZiBtdWx0aXhhY3QgbWVtYmVyIHNwYWNlLgogCSAqLwotCWVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJl ZXplX21heF9hZ2UgPSBNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQoKTsKKwllZmZlY3Rp dmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlID0gYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXpl X21heF9hZ2U7CiAKIAkvKgogCSAqIEFsbW9zdCByZWFkeSB0byBzZXQgZnJlZXplIG91dHB1dCBw YXJhbWV0ZXJzOyBjaGVjayBpZiBPbGRlc3RYbWluIG9yCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5jCmluZGV4IDBhYjkyMWExNjkuLmVkNWZjMDljMzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv YXV0b3ZhY3V1bS5jCkBAIC0xMTM0LDcgKzExMzQsNyBAQCBkb19zdGFydF93b3JrZXIodm9pZCkK IAogCS8qIEFsc28gZGV0ZXJtaW5lIHRoZSBvbGRlc3QgZGF0bWlubXhpZCB3ZSB3aWxsIGNvbnNp ZGVyLiAqLwogCXJlY2VudE11bHRpID0gUmVhZE5leHRNdWx0aVhhY3RJZCgpOwotCW11bHRpRm9y Y2VMaW1pdCA9IHJlY2VudE11bHRpIC0gTXVsdGlYYWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKCk7 CisJbXVsdGlGb3JjZUxpbWl0ID0gcmVjZW50TXVsdGkgLSBhdXRvdmFjdXVtX211bHRpeGFjdF9m cmVlemVfbWF4X2FnZTsKIAlpZiAobXVsdGlGb3JjZUxpbWl0IDwgRmlyc3RNdWx0aVhhY3RJZCkK IAkJbXVsdGlGb3JjZUxpbWl0IC09IEZpcnN0TXVsdGlYYWN0SWQ7CiAKQEAgLTE5MjIsNyArMTky Miw3IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkgKiBub3JtYWxseSBhdXRvdmFjdXVtX211bHRp eGFjdF9mcmVlemVfbWF4X2FnZSwgYnV0IG1heSBiZSBsZXNzIGlmIHdlIGFyZQogCSAqIHNob3J0 IG9mIG11bHRpeGFjdCBtZW1iZXIgc3BhY2UuCiAJICovCi0JZWZmZWN0aXZlX211bHRpeGFjdF9m cmVlemVfbWF4X2FnZSA9IE11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCgpOworCWVmZmVj dGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgPSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVl emVfbWF4X2FnZTsKIAogCS8qCiAJICogRmluZCB0aGUgcGdfZGF0YWJhc2UgZW50cnkgYW5kIHNl bGVjdCB0aGUgZGVmYXVsdCBmcmVlemUgYWdlcy4gV2UgdXNlCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0 d2FsLmMKaW5kZXggZmZmNDAxZTQ2OS4uNGFkNjRjZjFlZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19yZXNldHdhbC9wZ19yZXNldHdhbC5jCisrKyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVz ZXR3YWwuYwpAQCAtMjY0LDcgKzI2NCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAogCQkJY2FzZSAnTyc6CiAJCQkJZXJybm8gPSAwOwotCQkJCXNldF9teG9mZiA9IHN0cnRvdWwo b3B0YXJnLCAmZW5kcHRyLCAwKTsKKwkJCQlzZXRfbXhvZmYgPSBzdHJ0b3U2NChvcHRhcmcsICZl bmRwdHIsIDApOwogCQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8 fCBlcnJubyAhPSAwKQogCQkJCXsKIAkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGFyZ3VtZW50 IGZvciBvcHRpb24gJXMiLCAiLU8iKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmVzZXR3YWwv dC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAxX2Jhc2ljLnBsCmluZGV4 IGQwYmQxZjdhY2UuLjc5ZDAzZDc5ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmVzZXR3YWwv dC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC90LzAwMV9iYXNpYy5wbApA QCAtMjA2LDcgKzIwNiw3IEBAIHB1c2ggQGNtZCwKICAgc3ByaW50ZigiJWQsJWQiLCBoZXgoJGZp bGVzWzBdKSA9PSAwID8gMyA6IGhleCgkZmlsZXNbMF0pLCBoZXgoJGZpbGVzWy0xXSkpOwogCiBA ZmlsZXMgPSBnZXRfc2xydV9maWxlcygncGdfbXVsdGl4YWN0L29mZnNldHMnKTsKLSRtdWx0ID0g MzIgKiAkYmxja3N6IC8gNDsKKyRtdWx0ID0gMzIgKiAkYmxja3N6IC8gODsKICMgLW0gYXJndW1l bnQgaXMgIm5ldyxvbGQiCiBwdXNoIEBjbWQsICctbScsCiAgIHNwcmludGYoIiVkLCVkIiwKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9tdWx0aXhhY3QuaAppbmRleCA0ZTZiMGVlYzJmLi41ZWU2MzJkZmU2IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L211bHRpeGFjdC5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNkZWZpbmUgTXVsdGlYYWN0SWRJc1Zh bGlkKG11bHRpKSAoKG11bHRpKSAhPSBJbnZhbGlkTXVsdGlYYWN0SWQpCiAKLSNkZWZpbmUgTWF4 TXVsdGlYYWN0T2Zmc2V0CSgoTXVsdGlYYWN0T2Zmc2V0KSAweEZGRkZGRkZGKQorI2RlZmluZSBN YXhNdWx0aVhhY3RPZmZzZXQJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkZGRkZGKQogCiAvKgog ICogUG9zc2libGUgbXVsdGl4YWN0IGxvY2sgbW9kZXMgKCJzdGF0dXMiKS4gIFRoZSBmaXJzdCBm b3VyIG1vZGVzIGFyZSBmb3IKQEAgLTE0Myw3ICsxNDMsNiBAQCBleHRlcm4gdm9pZCBNdWx0aVhh Y3RTZXROZXh0TVhhY3QoTXVsdGlYYWN0SWQgbmV4dE11bHRpLAogZXh0ZXJuIHZvaWQgTXVsdGlY YWN0QWR2YW5jZU5leHRNWGFjdChNdWx0aVhhY3RJZCBtaW5NdWx0aSwKIAkJCQkJCQkJCSAgTXVs dGlYYWN0T2Zmc2V0IG1pbk11bHRpT2Zmc2V0KTsKIGV4dGVybiB2b2lkIE11bHRpWGFjdEFkdmFu Y2VPbGRlc3QoTXVsdGlYYWN0SWQgb2xkZXN0TXVsdGksIE9pZCBvbGRlc3RNdWx0aURCKTsKLWV4 dGVybiBpbnQJTXVsdGlYYWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKHZvaWQpOwogCiBleHRlcm4g dm9pZCBtdWx0aXhhY3RfdHdvcGhhc2VfcmVjb3ZlcihUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2 IGluZm8sCiAJCQkJCQkJCQkgICB2b2lkICpyZWNkYXRhLCB1aW50MzIgbGVuKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi4zOWU3NGEyMWM3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL211bHRpeGFjdF9pbnRlcm5hbC5oCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogbXVsdGl4 YWN0X2ludGVybmFsLmgKKyAqCisgKiBJbnRlcm5hbCBkZWZpbml0aW9ucyBmb3IgdGhlIG9uLWRp c2sgZm9ybWF0IG9mIG11bHRpeGFjdCBtYW5hZ2VyLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9m IENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0X2ludGVybmFs LmgKKyAqLworI2lmbmRlZiBNVUxUSVhBQ1RfSU5URVJOQUxfSAorI2RlZmluZSBNVUxUSVhBQ1Rf SU5URVJOQUxfSAorCisvKiBGSVhNRTogaGFkIHRvIGR1cGxpY2F0ZSB0aGlzICovCisjZGVmaW5l IFNMUlVfUEFHRVNfUEVSX1NFR01FTlQJMzIKKworLyoKKyAqIERlZmluZXMgZm9yIE11bHRpWGFj dE9mZnNldCBwYWdlIHNpemVzLiAgQSBwYWdlIGlzIHRoZSBzYW1lIEJMQ0tTWiBhcyBpcworICog dXNlZCBldmVyeXdoZXJlIGVsc2UgaW4gUG9zdGdyZXMuCisgKi8KKworLyogV2UgbmVlZCBmb3Vy IGJ5dGVzIHBlciBvZmZzZXQgKi8KKyNkZWZpbmUgTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0Ug KEJMQ0tTWiAvIHNpemVvZihNdWx0aVhhY3RPZmZzZXQpKQorCitzdGF0aWMgaW5saW5lIGludDY0 CitNdWx0aVhhY3RJZFRvT2Zmc2V0UGFnZShNdWx0aVhhY3RJZCBtdWx0aSkKK3sKKwlyZXR1cm4g bXVsdGkgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRTsKK30KKworc3RhdGljIGlubGluZSBp bnQKK011bHRpWGFjdElkVG9PZmZzZXRFbnRyeShNdWx0aVhhY3RJZCBtdWx0aSkKK3sKKwlyZXR1 cm4gbXVsdGkgJSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRTsKK30KKworc3RhdGljIGlubGlu ZSBpbnQ2NAorTXVsdGlYYWN0SWRUb09mZnNldFNlZ21lbnQoTXVsdGlYYWN0SWQgbXVsdGkpCit7 CisJcmV0dXJuIE11bHRpWGFjdElkVG9PZmZzZXRQYWdlKG11bHRpKSAvIFNMUlVfUEFHRVNfUEVS X1NFR01FTlQ7Cit9CisKKy8qCisgKiBUaGUgc2l0dWF0aW9uIGZvciBtZW1iZXJzIGlzIGEgYml0 IG1vcmUgY29tcGxleDogd2Ugc3RvcmUgb25lIGJ5dGUgb2YKKyAqIGFkZGl0aW9uYWwgZmxhZyBi aXRzIGZvciBlYWNoIFRyYW5zYWN0aW9uSWQuICBUbyBkbyB0aGlzIHdpdGhvdXQgZ2V0dGluZwor ICogaW50byBhbGlnbm1lbnQgaXNzdWVzLCB3ZSBzdG9yZSBmb3VyIGJ5dGVzIG9mIGZsYWdzLCBh bmQgdGhlbiB0aGUKKyAqIGNvcnJlc3BvbmRpbmcgNCBYaWRzLiAgRWFjaCBzdWNoIDUtd29yZCAo MjAtYnl0ZSkgc2V0IHdlIGNhbGwgYSAiZ3JvdXAiLCBhbmQKKyAqIGFyZSBzdG9yZWQgYXMgYSB3 aG9sZSBpbiBwYWdlcy4gIFRodXMsIHdpdGggOGtCIEJMQ0tTWiwgd2Uga2VlcCA0MDkgZ3JvdXBz CisgKiBwZXIgcGFnZS4gIFRoaXMgd2FzdGVzIDEyIGJ5dGVzIHBlciBwYWdlLCBidXQgdGhhdCdz IE9LIC0tIHNpbXBsaWNpdHkgKGFuZAorICogcGVyZm9ybWFuY2UpIHRydW1wcyBzcGFjZSBlZmZp Y2llbmN5IGhlcmUuCisgKgorICogTm90ZSB0aGF0IHRoZSAib2Zmc2V0IiBtYWNyb3Mgd29yayB3 aXRoIGJ5dGUgb2Zmc2V0LCBub3QgYXJyYXkgaW5kZXhlcywgc28KKyAqIGFyaXRobWV0aWMgbXVz dCBiZSBkb25lIHVzaW5nICJjaGFyICoiIHBvaW50ZXJzLgorICovCisvKiBXZSBuZWVkIGVpZ2h0 IGJpdHMgcGVyIHhhY3QsIHNvIG9uZSB4YWN0IGZpdHMgaW4gYSBieXRlICovCisjZGVmaW5lIE1Y QUNUX01FTUJFUl9CSVRTX1BFUl9YQUNUCQkJOAorI2RlZmluZSBNWEFDVF9NRU1CRVJfRkxBR1Nf UEVSX0JZVEUJCQkxCisjZGVmaW5lIE1YQUNUX01FTUJFUl9YQUNUX0JJVE1BU0sJKCgxIDw8IE1Y QUNUX01FTUJFUl9CSVRTX1BFUl9YQUNUKSAtIDEpCisKKy8qIGhvdyBtYW55IGZ1bGwgYnl0ZXMg b2YgZmxhZ3MgYXJlIHRoZXJlIGluIGEgZ3JvdXA/ICovCisjZGVmaW5lIE1VTFRJWEFDVF9GTEFH QllURVNfUEVSX0dST1VQCQk0CisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJH Uk9VUAlcCisJKE1VTFRJWEFDVF9GTEFHQllURVNfUEVSX0dST1VQICogTVhBQ1RfTUVNQkVSX0ZM QUdTX1BFUl9CWVRFKQorLyogc2l6ZSBpbiBieXRlcyBvZiBhIGNvbXBsZXRlIGdyb3VwICovCisj ZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFIFwKKwkoc2l6ZW9mKFRyYW5zYWN0aW9u SWQpICogTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQICsgTVVMVElYQUNUX0ZMQUdC WVRFU19QRVJfR1JPVVApCisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BBR0Ug KEJMQ0tTWiAvIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFKQorI2RlZmluZSBNVUxUSVhBQ1Rf TUVNQkVSU19QRVJfUEFHRQlcCisJKE1VTFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BBR0UgKiBN VUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVApCisKKy8qIHBhZ2UgaW4gd2hpY2ggYSBt ZW1iZXIgaXMgdG8gYmUgZm91bmQgKi8KK3N0YXRpYyBpbmxpbmUgaW50NjQKK01YT2Zmc2V0VG9N ZW1iZXJQYWdlKE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCit7CisJcmV0dXJuIG9mZnNldCAvIE1V TFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFOworfQorCitzdGF0aWMgaW5saW5lIGludDY0CitNWE9m ZnNldFRvTWVtYmVyU2VnbWVudChNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQoreworCXJldHVybiBN WE9mZnNldFRvTWVtYmVyUGFnZShvZmZzZXQpIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKK30K KworLyogTG9jYXRpb24gKGJ5dGUgb2Zmc2V0IHdpdGhpbiBwYWdlKSBvZiBmbGFnIHdvcmQgZm9y IGEgZ2l2ZW4gbWVtYmVyICovCitzdGF0aWMgaW5saW5lIGludAorTVhPZmZzZXRUb0ZsYWdzT2Zm c2V0KE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCit7CisJTXVsdGlYYWN0T2Zmc2V0IGdyb3VwID0g b2Zmc2V0IC8gTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQOworCWludAkJCWdyb3Vw b25wZyA9IGdyb3VwICUgTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRTsKKwlpbnQJCQli eXRlb2ZmID0gZ3JvdXBvbnBnICogTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkU7CisKKwlyZXR1 cm4gYnl0ZW9mZjsKK30KKworc3RhdGljIGlubGluZSBpbnQKK01YT2Zmc2V0VG9GbGFnc0JpdFNo aWZ0KE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCit7CisJaW50CQkJbWVtYmVyX2luX2dyb3VwID0g b2Zmc2V0ICUgTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQOworCWludAkJCWJzaGlm dCA9IG1lbWJlcl9pbl9ncm91cCAqIE1YQUNUX01FTUJFUl9CSVRTX1BFUl9YQUNUOworCisJcmV0 dXJuIGJzaGlmdDsKK30KKworLyogTG9jYXRpb24gKGJ5dGUgb2Zmc2V0IHdpdGhpbiBwYWdlKSBv ZiBUcmFuc2FjdGlvbklkIG9mIGdpdmVuIG1lbWJlciAqLworc3RhdGljIGlubGluZSBpbnQKK01Y T2Zmc2V0VG9NZW1iZXJPZmZzZXQoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCkKK3sKKwlpbnQJCQlt ZW1iZXJfaW5fZ3JvdXAgPSBvZmZzZXQgJSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JP VVA7CisKKwlyZXR1cm4gTVhPZmZzZXRUb0ZsYWdzT2Zmc2V0KG9mZnNldCkgKworCQlNVUxUSVhB Q1RfRkxBR0JZVEVTX1BFUl9HUk9VUCArCisJCW1lbWJlcl9pbl9ncm91cCAqIHNpemVvZihUcmFu c2FjdGlvbklkKTsKK30KKworI2VuZGlmCQkJCQkJCS8qIE1VTFRJWEFDVF9JTlRFUk5BTF9IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jLmggYi9zcmMvaW5jbHVkZS9jLmgKaW5kZXggYTE0 YzYzMTUxNi4uMzE4MTk0Zjc4ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYy5oCisrKyBiL3Ny Yy9pbmNsdWRlL2MuaApAQCAtNjE4LDcgKzYxOCw3IEBAIHR5cGVkZWYgdWludDMyIFN1YlRyYW5z YWN0aW9uSWQ7CiAvKiBNdWx0aVhhY3RJZCBtdXN0IGJlIGVxdWl2YWxlbnQgdG8gVHJhbnNhY3Rp b25JZCwgdG8gZml0IGluIHRfeG1heCAqLwogdHlwZWRlZiBUcmFuc2FjdGlvbklkIE11bHRpWGFj dElkOwogCi10eXBlZGVmIHVpbnQzMiBNdWx0aVhhY3RPZmZzZXQ7Cit0eXBlZGVmIHVpbnQ2NCBN dWx0aVhhY3RPZmZzZXQ7CiAKIHR5cGVkZWYgdWludDMyIENvbW1hbmRJZDsKIAotLSAKMi40My4w Cgo= --000000000000eb7646062bd2d2d1 Content-Type: application/octet-stream; name="v12-0005-TEST-add-src-bin-pg_upgrade-t-005_offset.pl.patch" Content-Disposition: attachment; filename="v12-0005-TEST-add-src-bin-pg_upgrade-t-005_offset.pl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5zczs994 RnJvbSBjNGU5ZGNmMTUyNTA2NWUxNTVhOWQ2MjU1OTBhZmM5ZmYzZTU2NTVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMTkgTm92IDIwMjQgMTc6MDg6MTAgKzAzMDAKU3ViamVjdDogW1BBVENIIHYxMiA1Lzdd IFRFU1Q6IGFkZCBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDVfb2Zmc2V0LnBsCgotLS0KIHNyYy9i aW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQucGwgfCA1NjMgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA1NjMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iaW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQucGwKCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX3VwZ3JhZGUvdC8wMDVfb2Zmc2V0LnBsIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3Qv MDA1X29mZnNldC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5kZjg0 MTg2ZGU0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA1X29mZnNl dC5wbApAQCAtMCwwICsxLDU2MyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFU QUwgPT4gJ2FsbCc7CisKK3VzZSBGaWxlOjpGaW5kIHF3KGZpbmQpOworCit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCisjIFRoaXMgcGFpciBvZiBjYWxscyB3aWxsIGNyZWF0ZSBzaWduaWZpY2FudGx5 IG1vcmUgbWVtYmVyIHNlZ21lbnRzIHRoYW4gb2Zmc2V0CisjIHNlZ21lbnRzLgorc3ViIHByZXAK K3sKKwlteSAkbm9kZSA9IHNoaWZ0OworCW15ICR0YmwgPSBzaGlmdDsKKworCSRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNSRUFURSBUQUJMRSAke3RibH0gKEkgSU5UIFBSSU1BUlkg S0VZLCBOX1VQREFURUQgSU5UKSAiIC4KKwkJIiAgICAgICBXSVRIIChBVVRPVkFDVVVNX0VOQUJM RUQ9RkFMU0UpOyIgLgorCQkiSU5TRVJUIElOVE8gJHt0Ymx9IFNFTEVDVCBHLCAwIEZST00gR0VO RVJBVEVfU0VSSUVTKDEsIDUwKSBHOyIpOworfQorCitzdWIgZmlsbAoreworCW15ICRub2RlID0g c2hpZnQ7CisJbXkgJHRibCA9IHNoaWZ0OworCisJbXkgJG5jbGllbnRzID0gNTA7CisJbXkgJHVw ZGF0ZV9ldmVyeSA9IDkwOworCW15IEBjb25uZWN0aW9ucyA9ICgpOworCisJZm9yICgwLi4kbmNs aWVudHMpCisJeworCQlteSAkY29ubiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jyk7CisJCSRjb25uLT5xdWVyeV9zYWZlKCJCRUdJTiIpOworCisJCXB1c2goQGNvbm5lY3Rpb25z LCAkY29ubik7CisJfQorCisJZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwMDA7ICRpKyspCisJewor CQlteSAkY29ubiA9ICRjb25uZWN0aW9uc1skaSAlICRuY2xpZW50c107CisKKwkJJGNvbm4tPnF1 ZXJ5X3NhZmUoIkNPTU1JVDsiKTsKKwkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkJFR0lOIik7CisKKwkJ aWYgKCRpICUgJHVwZGF0ZV9ldmVyeSA9PSAwKQorCQl7CisJCQkkY29ubi0+cXVlcnlfc2FmZSgK KwkJCQkiVVBEQVRFICR7dGJsfSBTRVQgIiAuCisJCQkJIk5fVVBEQVRFRCA9IE5fVVBEQVRFRCAr IDEgIiAuCisJCQkJIldIRVJFIEkgPSAke2l9ICUgNTAiKTsKKwkJfQorCQllbHNlCisJCXsKKwkJ CSRjb25uLT5xdWVyeV9zYWZlKAorCQkJCSJTRUxFQ1QgKiBGUk9NICR7dGJsfSBGT1IgS0VZIFNI QVJFIik7CisJCX0KKwl9CisKKwlmb3IgbXkgJGNvbm4gKEBjb25uZWN0aW9ucykKKwl7CisJCSRj b25uLT5xdWl0KCk7CisJfQorfQorCisjIFRoaXMgcGFpciBvZiBjYWxscyB3aWxsIGNyZWF0ZSBt b3JlIG9yIGxlc3MgdGhlIHNhbWUgYW1vdW50IG9mIG1lbWJzZXJzIGFuZAorIyBvZmZzZXRzIHNl Z21lbnRzLgorc3ViIHByZXAyCit7CisJbXkgJG5vZGUgPSBzaGlmdDsKKwlteSAkdGJsID0gc2hp ZnQ7CisKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDUkVBVEUgVEFCTEUgJHt0 Ymx9KEJBUiBJTlQgUFJJTUFSWSBLRVksIEJBWiBJTlQpOyAiIC4KKwkJIkNSRUFURSBPUiBSRVBM QUNFIFBST0NFRFVSRSBNWElERklMTEVSKE5fU1RFUFMgSU5UIERFRkFVTFQgMTAwMCkgIiAuCisJ CSJMQU5HVUFHRSBQTFBHU1FMICIgLgorCQkiQVMgXCRcJCAiIC4KKwkJIkJFR0lOICIgLgorCQki CUZPUiBJIElOIDEuLk5fU1RFUFMgTE9PUCAiIC4KKwkJIgkJVVBEQVRFICR7dGJsfSBTRVQgQkFa ID0gUkFORE9NKDEsIDEwMDApICIgLgorCQkiCQlXSEVSRSBCQVIgSU4gKFNFTEVDVCBCQVIgRlJP TSAke3RibH0gIiAuCisJCSIJCQkJCQlUQUJMRVNBTVBMRSBCRVJOT1VMTEkoODApKTsgIiAuCisJ CSIJCUNPTU1JVDsgIiAuCisJCSIJRU5EIExPT1A7ICIgLgorCQkiRU5EOyBcJFwkOyAiIC4KKwkJ IklOU0VSVCBJTlRPICR7dGJsfSAoQkFSLCBCQVopICIgLgorCQkiU0VMRUNUIElELCBJRCBGUk9N IEdFTkVSQVRFX1NFUklFUygxLCAxMDI0KSBJRDsiKTsKK30KKworc3ViIGZpbGwyCit7CisJbXkg JG5vZGUgPSBzaGlmdDsKKwlteSAkdGJsID0gc2hpZnQ7CisJbXkgJHNjYWxlID0gc2hpZnQgLy8g MTsKKworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkJFR0lOOyAiIC4KKwkJIlNF TEVDVCAqIEZST00gJHt0Ymx9IEZPUiBLRVkgU0hBUkU7ICIgLgorCQkiUFJFUEFSRSBUUkFOU0FD VElPTiAnQSc7ICIgLgorCQkiQ0FMTCBNWElERklMTEVSKCgzNjUgKiAke3NjYWxlfSk6OmludCk7 ICIgLgorCQkiQ09NTUlUIFBSRVBBUkVEICdBJzsiKTsKK30KKworCisjIGdlbmVyYXRlIGFyb3Vu ZCAyIG9mZnNldCBzZWdtZW50cyBhbmQgNTUgbWVtYmVyIHNlZ21lbnRzCitzdWIgbXhpZF9nZW4x Cit7CisJbXkgJG5vZGUgPSBzaGlmdDsKKwlteSAkdGJsID0gc2hpZnQ7CisKKwlwcmVwKCRub2Rl LCAkdGJsKTsKKwlmaWxsKCRub2RlLCAkdGJsKTsKKworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcShDSEVDS1BPSU5UKSk7Cit9CisKKyMgZ2VuZXJhdGUgYXJvdW5kIDEwIG9mZnNldCBz ZWdtZW50cyBhbmQgMTIgbWVtYmVyIHNlZ21lbnRzCitzdWIgbXhpZF9nZW4yCit7CisJbXkgJG5v ZGUgPSBzaGlmdDsKKwlteSAkdGJsID0gc2hpZnQ7CisJbXkgJHNjYWxlID0gc2hpZnQgLy8gMTsK KworCXByZXAyKCRub2RlLCAkdGJsKTsKKwlmaWxsMigkbm9kZSwgJHRibCwgJHNjYWxlKTsKKwor CSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDSEVDS1BPSU5UKSk7Cit9CisKKyMgRmV0 Y2ggbGF0ZXN0IG11bHRpeGFjdCBjaGVja3BvaW50IHZhbHVlcy4KK3N1YiBtdWx0aV9ib3VuZHMK K3sKKwlteSAoJG5vZGUpID0gQF87CisJbXkgJHBhdGggPSAkbm9kZS0+Y29uZmlnX2RhdGEoJy0t YmluZGlyJyk7CisJbXkgKCRzdGRvdXQsICRzdGRlcnIpID0gcnVuX2NvbW1hbmQoWworCQkJCQkJ CQkJJHBhdGggLiAnL3BnX2NvbnRyb2xkYXRhJywKKwkJCQkJCQkJCSRub2RlLT5kYXRhX2Rpcgor CQkJCQkJCQldKTsKKwlteSBAY29udHJvbF9kYXRhID0gc3BsaXQoIlxuIiwgJHN0ZG91dCk7CisJ bXkgJG5leHQgPSB1bmRlZjsKKwlteSAkb2xkZXN0ID0gdW5kZWY7CisJbXkgJG5leHRfb2Zmc2V0 ID0gdW5kZWY7CisKKwlmb3JlYWNoIChAY29udHJvbF9kYXRhKQorCXsKKwkJaWYgKCRfID1+IC9e TGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlYYWN0SWQ6XHMqKC4qKSQvbWcpCisJCXsKKwkJ CSRuZXh0ID0gJDE7CisJCQlwcmludCAiPj4+IEAgbm9kZSAiLiAkbm9kZS0+bmFtZSAuICIsICIg LiAkXyAuICJcbiI7CisJCX0KKworCQlpZiAoJF8gPX4gL15MYXRlc3QgY2hlY2twb2ludCdzIG9s ZGVzdE11bHRpWGlkOlxzKiguKikkL21nKQorCQl7CisJCQkkb2xkZXN0ID0gJDE7CisJCQlwcmlu dCAiPj4+IEAgbm9kZSAiLiAkbm9kZS0+bmFtZSAuICIsICIgLiAkXyAuICJcbiI7CisJCX0KKwor CQlpZiAoJF8gPX4gL15MYXRlc3QgY2hlY2twb2ludCdzIE5leHRNdWx0aU9mZnNldDpccyooLiop JC9tZykKKwkJeworCQkJJG5leHRfb2Zmc2V0ID0gJDE7CisJCQlwcmludCAiPj4+IEAgbm9kZSAi LiAkbm9kZS0+bmFtZSAuICIsICIgLiAkXyAuICJcbiI7CisJCX0KKworCQlpZiAoZGVmaW5lZCgk b2xkZXN0KSAmJiBkZWZpbmVkKCRuZXh0KSAmJiBkZWZpbmVkKCRuZXh0X29mZnNldCkpCisJCXsK KwkJCWxhc3Q7CisJCX0KKwl9CisKKwlkaWUgIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRp WGFjdElkIG5vdCBmb3VuZCBpbiBjb250cm9sIGZpbGUhXG4iCisJdW5sZXNzIGRlZmluZWQoJG5l eHQpOworCisJZGllICJMYXRlc3QgY2hlY2twb2ludCdzIG9sZGVzdE11bHRpWGlkIG5vdCBmb3Vu ZCBpbiBjb250cm9sIGZpbGUhXG4iCisJdW5sZXNzIGRlZmluZWQoJG9sZGVzdCk7CisKKwlkaWUg IkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRpT2Zmc2V0IG5vdCBmb3VuZCBpbiBjb250cm9s IGZpbGUhXG4iCisJdW5sZXNzIGRlZmluZWQoJG5leHRfb2Zmc2V0KTsKKworCXJldHVybiAoJG9s ZGVzdCwgJG5leHQsICRuZXh0X29mZnNldCk7Cit9CisKKyMgQ3JlYXRlIG5vZGUgZnJvbSBleGlz dGluZyBiaW5zLgorc3ViIGNyZWF0ZV9uZXdfbm9kZQoreworCW15ICgkbmFtZSwgJXBhcmFtcykg PSBAXzsKKworCWNyZWF0ZV9ub2RlKDAsIEBfKTsKK30KKworIyBDcmVhdGUgbm9kZSBmcm9tIEVO ViBvbGRpbnN0YWxsCitzdWIgY3JlYXRlX29sZF9ub2RlCit7CisJbXkgKCRuYW1lLCAlcGFyYW1z KSA9IEBfOworCisJaWYgKCFkZWZpbmVkKCRFTlZ7b2xkaW5zdGFsbH0pKQorCXsKKwkJZGllICJv bGRpbnN0YWxsIGlzIG5vdCBkZWZpbmVkIjsKKwl9CisKKwljcmVhdGVfbm9kZSgxLCBAXyk7Cit9 CisKK3N1YiBjcmVhdGVfbm9kZQoreworCW15ICgkaW5zdGFsbF9wYXRoX2Zyb21fZW52LCAkbmFt ZSwgJXBhcmFtcykgPSBAXzsKKwlteSAkc2NhbGUgPSBkZWZpbmVkICRwYXJhbXN7c2NhbGV9ID8g JHBhcmFtc3tzY2FsZX0gOiAxOworCW15ICRtdWx0aSA9IGRlZmluZWQgJHBhcmFtc3ttdWx0aX0g PyAkcGFyYW1ze211bHRpfSA6IHVuZGVmOworCW15ICRvZmZzZXQgPSBkZWZpbmVkICRwYXJhbXN7 b2Zmc2V0fSA/ICRwYXJhbXN7b2Zmc2V0fSA6IHVuZGVmOworCisJbXkgJG5vZGUgPQorCQkkaW5z dGFsbF9wYXRoX2Zyb21fZW52ID8KKwkJCVBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygk bmFtZSwKKwkJCQkJaW5zdGFsbF9wYXRoID0+ICRFTlZ7b2xkaW5zdGFsbH0pIDoKKwkJCVBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygkbmFtZSk7CisKKwkkbm9kZS0+aW5pdChmb3JjZV9p bml0ZGIgPT4gMSwKKwkJZXh0cmEgPT4gWworCQkJJG11bHRpID8gKCctbScsICRtdWx0aSkgOiAo KSwKKwkJCSRvZmZzZXQgPyAoJy1vJywgJG9mZnNldCkgOiAoKSwKKwkJCSgnLWsnKSwKKwkJXSk7 CisKKwkjIEZpeHVwIE1PWCBwYXRjaCBxdWlyaworCWlmICgkbXVsdGkpCisJeworCQl1bmxpbmsg JG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19tdWx0aXhhY3Qvb2Zmc2V0cy8wMDAwJzsKKwl9CisJaWYg KCRvZmZzZXQpCisJeworCQl1bmxpbmsgJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19tdWx0aXhhY3Qv bWVtYmVycy8wMDAwJzsKKwl9CisKKwkkbm9kZS0+YXBwZW5kX2NvbmYoJ2ZzeW5jJywgJ29mZicp OworCSRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ21heF9wcmVwYXJlZF90 cmFuc2FjdGlvbnMgPSAyJyk7CisKKwkkbm9kZS0+c3RhcnQoKTsKKwlteGlkX2dlbjIoJG5vZGUs ICdGT08nLCAkc2NhbGUpOworCW14aWRfZ2VuMSgkbm9kZSwgJ0JBUicsICRzY2FsZSk7CisJJG5v ZGUtPnJlc3RhcnQoKTsKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUICog RlJPTSBGT08pKTsJCSMganVzdCBpbiBjYXNlLi4uCisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKFNFTEVDVCAqIEZST00gQkFSKSk7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxKENIRUNLUE9JTlQpKTsKKwkkbm9kZS0+c3RvcCgpOworCisJcmV0dXJuICRub2RlOworfQor CitzdWIgZG9fdXBncmFkZQoreworCW15ICgkb2xkbm9kZSwgJG5ld25vZGUpID0gQF87CisKKwlj b21tYW5kX29rKAorCQlbCisJCQkncGdfdXBncmFkZScsICctLW5vLXN5bmMnLAorCQkJJy1kJywg JG9sZG5vZGUtPmRhdGFfZGlyLAorCQkJJy1EJywgJG5ld25vZGUtPmRhdGFfZGlyLAorCQkJJy1i JywgJG9sZG5vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRpcicpLAorCQkJJy1CJywgJG5ld25vZGUt PmNvbmZpZ19kYXRhKCctLWJpbmRpcicpLAorCQkJJy1zJywgJG5ld25vZGUtPmhvc3QsCisJCQkn LXAnLCAkb2xkbm9kZS0+cG9ydCwKKwkJCSctUCcsICRuZXdub2RlLT5wb3J0LAorCQkJJy0tY2hl Y2snCisJCV0sCisJCSdydW4gb2YgcGdfdXBncmFkZScpOworCisJY29tbWFuZF9vaygKKwkJWwor CQkJJ3BnX3VwZ3JhZGUnLCAnLS1uby1zeW5jJywKKwkJCSctZCcsICRvbGRub2RlLT5kYXRhX2Rp ciwKKwkJCSctRCcsICRuZXdub2RlLT5kYXRhX2RpciwKKwkJCSctYicsICRvbGRub2RlLT5jb25m aWdfZGF0YSgnLS1iaW5kaXInKSwKKwkJCSctQicsICRuZXdub2RlLT5jb25maWdfZGF0YSgnLS1i aW5kaXInKSwKKwkJCSctcycsICRuZXdub2RlLT5ob3N0LAorCQkJJy1wJywgJG9sZG5vZGUtPnBv cnQsCisJCQknLVAnLCAkbmV3bm9kZS0+cG9ydCwKKwkJCSctLWNvcHknCisJCV0sCisJCSdydW4g b2YgcGdfdXBncmFkZScpOworCisJJG9sZG5vZGUtPnN0YXJ0KCk7CisJJG5ld25vZGUtPnN0YXJ0 KCk7CisKKwlteSAkb2xkZm9vID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNF TEVDVCAqIEZST00gRk9PKSk7CisJbXkgJG5ld2ZvbyA9ICRuZXdub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcShTRUxFQ1QgKiBGUk9NIEZPTykpOworCWlzKCRvbGRmb28sICRuZXdmb28sICJz ZWxlY3QgZm9vIGVxIik7CisKKwlteSAkb2xkYmFyID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxKFNFTEVDVCAqIEZST00gQkFSKSk7CisJbXkgJG5ld2JhciA9ICRuZXdub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcShTRUxFQ1QgKiBGUk9NIEJBUikpOworCWlzKCRvbGRiYXIs ICRuZXdiYXIsICJzZWxlY3QgYmFyIGVxIik7CisKKwkkb2xkbm9kZS0+c3RvcCgpOworCSRuZXdu b2RlLT5zdG9wKCk7CisKKwltdWx0aV9ib3VuZHMoJG9sZG5vZGUpOworCW11bHRpX2JvdW5kcygk bmV3bm9kZSk7Cit9CisKK215IEBURVNUUyA9ICgKKwkjIHRlc3RzIHdpdGhvdXQgRU5WIG9sZGlu c3RhbGwKKwkwLCAxLCAyLCAzLCA0LCA1LCA2LAorCSMgdGVzdHMgd2l0aCAicmVhbCIgcGdfdXBn cmFkZQorCTEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwKKwkjIHNlbGYgdXBncmFk ZQorCTEwMDAsCispOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEJhc2ljIHNhbml0eSB0 ZXN0cyBvbiBhIE5FVyBiaW4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBzdGFydHMgZnJv bSB0aGUgemVybworU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDA7CisJc2tpcCAiZG8gbm90IHRl c3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVT VFMgKSApOworCisJbXkgJG5vZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9tbycsCisJCQkJ CQlzY2FsZSA9PiAxKTsKKwltdWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJURVNUICRURVNU X05PIFBBU1NFRCIpOworfQorCisjIG11bHRpIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZQorU0tJUDoK K3sKKwlteSAkVEVTVF9OTyA9IDE7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIs IDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJG5v ZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9NbycsCisJCQkJCQlzY2FsZSA9PiAxLjE1LAor CQkJCQkJbXVsdGkgPT4gJzB4MTIzNDAwJyk7CisJbXVsdGlfYm91bmRzKCRub2RlKTsKKwlvaygx LCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBvZmZzZXRzIHN0YXJ0cyBmcm9tIHRo ZSB2YWx1ZQorU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDI7CisJc2tpcCAiZG8gbm90IHRlc3Qg Y2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMg KSApOworCisJbXkgJG5vZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9tTycsCisJCQkJCQlz Y2FsZSA9PiAxLjE1LAorCQkJCQkJb2Zmc2V0ID0+ICcweDQzMjEwMCcpOworCW11bHRpX2JvdW5k cygkbm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisKKyMgbXVsdGkg YW5kIG9mZnNldHMgc3RhcnRzIGZyb20gdGhlIHZhbHVlCitTS0lQOgoreworCW15ICRURVNUX05P ID0gMzsKKwlza2lwICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBn cmVwKCAvXiRURVNUX05PJC8sIEBURVNUUyApICk7CisKKwlteSAkbm9kZSA9IGNyZWF0ZV9uZXdf bm9kZSgnc2ltcGxlX01PJywKKwkJCQkJCXNjYWxlID0+IDEuMTUsCisJCQkJCQltdWx0aSA9PiAn MHhERUFEMDAnLCBvZmZzZXQgPT4gJzB4QkVFRjAwJyk7CisJbXVsdGlfYm91bmRzKCRub2RlKTsK KwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBtdWx0aSBzdGFydHMgZnJv bSB0aGUgdmFsdWUsIG11bHRpIHdyYXAKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSA0OworCXNr aXAgImRvIG5vdCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRF U1RfTk8kLywgQFRFU1RTICkgKTsKKworCW15ICRub2RlID0gY3JlYXRlX25ld19ub2RlKCdzaW1w bGVfTW9fd3JhcCcsCisJCQkJCQlzY2FsZSA9PiAxLjE1LAorCQkJCQkJbXVsdGkgPT4gJzB4RkZG RjcwMDAnKTsKKwltdWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBB U1NFRCIpOworfQorCisjIG9mZnNldHMgc3RhcnRzIGZyb20gdGhlIHZhbHVlLCBvZmZzZXRzIHdy YXAKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSA1OworCXNraXAgImRvIG5vdCB0ZXN0IGNhc2Ug JFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkgKTsK KworCW15ICRub2RlID0gY3JlYXRlX25ld19ub2RlKCdzaW1wbGVfbU9fd3JhcCcsCisJCQkJCQlz Y2FsZSA9PiAxLjE1LAorCQkJCQkJb2Zmc2V0ID0+ICcweEZGRkZGQzAwJyk7CisJbXVsdGlfYm91 bmRzKCRub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBtdWx0 aSBzdGFydHMgZnJvbSB0aGUgdmFsdWUsIG9mZnNldHMgc3RhcnRzIGZyb20gdGhlIHZhbHVlLAor IyBtdWx0aSB3cmFwLCBvZmZzZXRzIHdyYXAKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSA2Owor CXNraXAgImRvIG5vdCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9e JFRFU1RfTk8kLywgQFRFU1RTICkgKTsKKworCW15ICRub2RlID0gY3JlYXRlX25ld19ub2RlKCdz aW1wbGVfTU9fd3JhcCcsCisJCQkJCQlzY2FsZSA9PiAxLjE1LAorCQkJCQkJbXVsdGkgPT4gJzB4 RkZGRjcwMDAnLCBvZmZzZXQgPT4gJzB4RkZGRkZDMDAnKTsKKwltdWx0aV9ib3VuZHMoJG5vZGUp OworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIpOworfQorCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisjIHBnX3VwZ2FyZGUgdGVzdHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBz dGFydHMgZnJvbSB0aGUgemVybworU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDEwMDsKKwlza2lw ICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAvXiRURVNU X05PJC8sIEBURVNUUyApICk7CisKKwlteSAkZGJuYW1lID0gJ21vJzsKKwlteSAkb2xkbm9kZSA9 IGNyZWF0ZV9vbGRfbm9kZSgib2xkXyRkYm5hbWUiLAorCQkJCQkJc2NhbGUgPT4gMSk7CisJbXkg JG5ld25vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm5ld18kZGJuYW1lIik7 CisJJG5ld25vZGUtPmluaXQoKTsKKworCWRvX3VwZ3JhZGUoJG9sZG5vZGUsICRuZXdub2RlKTsK KwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBtdWx0aSBzdGFydHMgZnJv bSB0aGUgdmFsdWUKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSAxMDE7CisJc2tpcCAiZG8gbm90 IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBA VEVTVFMgKSApOworCisJbXkgJGRibmFtZSA9ICdNbyc7CisJbXkgJG9sZG5vZGUgPSBjcmVhdGVf b2xkX25vZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJCXNjYWxlID0+IDEuMiwKKwkJCQkJCW11bHRp ID0+ICcweDEyMzQwMCcpOworCW15ICRuZXdub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCJuZXdfJGRibmFtZSIpOworCSRuZXdub2RlLT5pbml0KCk7CisKKwlkb191cGdyYWRl KCRvbGRub2RlLCAkbmV3bm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9 CisKKyMgb2Zmc2V0cyBzdGFydHMgZnJvbSB0aGUgdmFsdWUKK1NLSVA6Cit7CisJbXkgJFRFU1Rf Tk8gPSAxMDI7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNz ICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJGRibmFtZSA9ICdtTyc7 CisJbXkgJG9sZG5vZGUgPSBjcmVhdGVfb2xkX25vZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJCXNj YWxlID0+IDEuMiwKKwkJCQkJCW9mZnNldCA9PiAnMHg0MzIxMDAnKTsKKwlteSAkbmV3bm9kZSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygibmV3XyRkYm5hbWUiKTsKKwkkbmV3bm9k ZS0+aW5pdCgpOworCisJZG9fdXBncmFkZSgkb2xkbm9kZSwgJG5ld25vZGUpOworCW9rKDEsICJU RVNUICRURVNUX05PIFBBU1NFRCIpOworfQorCisjIG11bHRpIGFuZCBvZmZzZXRzIHN0YXJ0cyBm cm9tIHRoZSB2YWx1ZQorU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDEwMzsKKwlza2lwICJkbyBu b3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAvXiRURVNUX05PJC8s IEBURVNUUyApICk7CisKKwlteSAkZGJuYW1lID0gJ01PJzsKKwlteSAkb2xkbm9kZSA9IGNyZWF0 ZV9vbGRfbm9kZSgib2xkXyRkYm5hbWUiLAorCQkJCQkJc2NhbGUgPT4gMS4yLAorCQkJCQkJbXVs dGkgPT4gJzB4REVBRDAwJywgb2Zmc2V0ID0+ICcweEJFRUYwMCcpOworCW15ICRuZXdub2RlID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCJuZXdfJGRibmFtZSIpOworCSRuZXdub2Rl LT5pbml0KCk7CisKKwlkb191cGdyYWRlKCRvbGRub2RlLCAkbmV3bm9kZSk7CisJb2soMSwgIlRF U1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisKKyMgbXVsdGkgc3RhcnRzIGZyb20gdGhlIHZhbHVl LCBtdWx0aSB3cmFwCitTS0lQOgoreworCW15ICRURVNUX05PID0gMTA0OworCXNraXAgImRvIG5v dCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywg QFRFU1RTICkgKTsKKworCW15ICRkYm5hbWUgPSAnTW9fd3JhcCc7CisJbXkgJG9sZG5vZGUgPSBj cmVhdGVfb2xkX25vZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJCXNjYWxlID0+IDEuMiwKKwkJCQkJ CW11bHRpID0+ICcweEZGRkY3MDAwJyk7CisJbXkgJG5ld25vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoIm5ld18kZGJuYW1lIik7CisJJG5ld25vZGUtPmluaXQoKTsKKworCWRv X3VwZ3JhZGUoJG9sZG5vZGUsICRuZXdub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNT RUQiKTsKK30KKworIyBvZmZzZXRzIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZSwgb2Zmc2V0cyB3cmFw CitTS0lQOgoreworCW15ICRURVNUX05PID0gMTA1OworCXNraXAgImRvIG5vdCB0ZXN0IGNhc2Ug JFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkgKTsK KworCW15ICRkYm5hbWUgPSAnbU9fd3JhcCc7CisJbXkgJG9sZG5vZGUgPSBjcmVhdGVfb2xkX25v ZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJCXNjYWxlID0+IDEuMiwKKwkJCQkJCW9mZnNldCA9PiAn MHhGRkZGRkMwMCcpOworCW15ICRuZXdub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCJuZXdfJGRibmFtZSIpOworCSRuZXdub2RlLT5pbml0KCk7CisKKwlkb191cGdyYWRlKCRv bGRub2RlLCAkbmV3bm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisK KyMgbXVsdGkgc3RhcnRzIGZyb20gdGhlIHZhbHVlLCBvZmZzZXRzIHN0YXJ0cyBmcm9tIHRoZSB2 YWx1ZSwKKyMgbXVsdGkgd3JhcCwgb2Zmc2V0cyB3cmFwCitTS0lQOgoreworCW15ICRURVNUX05P ID0gMTA2OworCXNraXAgImRvIG5vdCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAo IGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkgKTsKKworCW15ICRkYm5hbWUgPSAnTU9fd3Jh cCc7CisJbXkgJG9sZG5vZGUgPSBjcmVhdGVfb2xkX25vZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJ CXNjYWxlID0+IDEuMiwKKwkJCQkJCW11bHRpID0+ICcweEZGRkY3MDAwJywgb2Zmc2V0ID0+ICcw eEZGRkZGQzAwJyk7CisJbXkgJG5ld25vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoIm5ld18kZGJuYW1lIik7CisJJG5ld25vZGUtPmluaXQoKTsKKworCWRvX3VwZ3JhZGUoJG9s ZG5vZGUsICRuZXdub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKwor IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorIyBTZWxmIHVwZ3JhZGUKKyMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKworIyBzdGFydHMgZnJvbSB0aGUgemVybworU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9 IDEwMDA7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICgg Z3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJGRibmFtZSA9ICdzZWxmX3Vw Z3JhZGUnOworCW15ICRvbGRub2RlID0gY3JlYXRlX25ld19ub2RlKCJvbGRfJGRibmFtZSIsCisJ CQkJCQlzY2FsZSA9PiAxKTsKKwlteSAkbmV3bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygibmV3XyRkYm5hbWUiKTsKKwkkbmV3bm9kZS0+aW5pdCgpOworCisJZG9fdXBncmFk ZSgkb2xkbm9kZSwgJG5ld25vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIpOwor fQorCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDMuMAoK --000000000000eb7646062bd2d2d1 Content-Type: application/octet-stream; name="v12-0004-TEST-initdb-option-to-initialize-cluster-with-no.patch" Content-Disposition: attachment; filename="v12-0004-TEST-initdb-option-to-initialize-cluster-with-no.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5zczs973 RnJvbSBiN2Q2Y2QzNGFlYzcyOGRkMTQzZjA0ZDQ0YjQxNjg5NjE4MzI2N2ZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA0IE1heSAyMDIyIDE1OjUzOjM2ICswMzAwClN1YmplY3Q6IFtQQVRDSCB2MTIg NC83XSBURVNUOiBpbml0ZGIgb3B0aW9uIHRvIGluaXRpYWxpemUgY2x1c3RlciB3aXRoCiBub24t c3RhbmRhcmQgeGlkL214aWQvbXhvZmYKClRvIGRhdGUgdGVzdGluZyBkYXRhYmFzZSBjbHVzdGVy IHdyYXBhcnVuZCB3YXMgbm90IGVhc3kgYXMgaW5pdGRiIGhhcyBhbHdheXMKaW5pdGVkIGl0IHdp dGggZGVmYXVsdCB4aWQvbXhpZC9teG9mZi4gVGhlIG9wdGlvbiB0byBzcGVjaWZ5IGFueSB2YWxp ZAp4aWQvbXhpZC9teG9mZiBhdCBjbHVzdGVyIHN0YXJ0dXAgd2lsbCBtYWtlIHRoZXNlIHRoaW5n cyBlYXNpZXIuCgpBdXRob3I6IE1heGltIE9ybG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KQXV0aG9y OiBQYXZlbCBCb3Jpc292IDxwYXNoa2luLmVsZmVAZ21haWwuY29tPgpBdXRob3I6IFN2ZXRsYW5h IERlcmV2eWFua28gPHMuZGVyZXZ5YW5rb0Bwb3N0Z3Jlc3Byby5ydT4KRGlzY3Vzc2lvbjogaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L0NBQ0clM0RlemFhNHZxWWpK MTZ5b3hncnBhLSUzRGdYbmYwVnYzRXk5YmpHclJSRk4yWXlXRlElNDBtYWlsLmdtYWlsLmNvbQot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyAgICAgIHwgIDIxICsrKysrCiBz cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyB8ICA1MyArKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMgIHwgICA4ICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICB8ICAxNSArKy0tCiBzcmMvYmFja2VuZC9i b290c3RyYXAvYm9vdHN0cmFwLmMgICAgICB8ICA1MCArKysrKysrKysrKy0KIHNyYy9iYWNrZW5k L21haW4vbWFpbi5jICAgICAgICAgICAgICAgIHwgICA2ICsrCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL3Bvc3RtYXN0ZXIuYyAgICB8ICAxNCArKystCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMgICAgICAgICAgICB8ICA1MyArKysrKysrKysrKy0KIHNyYy9iaW4vaW5pdGRiL2luaXRkYi5j ICAgICAgICAgICAgICAgIHwgMTA3ICsrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9iaW4v aW5pdGRiL3QvMDAxX2luaXRkYi5wbCAgICAgICAgIHwgIDYwICsrKysrKysrKysrKysrCiBzcmMv aW5jbHVkZS9hY2Nlc3MveGxvZy5oICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9j LmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2NsYXNzLmggICAgICAgICB8ICAgMiArLQogMTMgZmlsZXMgY2hhbmdlZCwgMzgyIGluc2VydGlv bnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL2Nsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwppbmRleCAw ZDU1NmMwMGI4Li44OTUxNmU5ZjUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9jbG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCkBAIC04 MzQsNiArODM0LDcgQEAgQm9vdFN0cmFwQ0xPRyh2b2lkKQogewogCWludAkJCXNsb3RubzsKIAlM V0xvY2sJICAgKmxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9jayhYYWN0Q3RsLCAwKTsKKwlpbnQ2 NAkJcGFnZW5vOwogCiAJTFdMb2NrQWNxdWlyZShsb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC04 NDQsNiArODQ1LDI2IEBAIEJvb3RTdHJhcENMT0codm9pZCkKIAlTaW1wbGVMcnVXcml0ZVBhZ2Uo WGFjdEN0bCwgc2xvdG5vKTsKIAlBc3NlcnQoIVhhY3RDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtz bG90bm9dKTsKIAorCXBhZ2VubyA9IFRyYW5zYWN0aW9uSWRUb1BhZ2UoWGlkRnJvbUZ1bGxUcmFu c2FjdGlvbklkKFRyYW5zYW1WYXJpYWJsZXMtPm5leHRYaWQpKTsKKwlpZiAocGFnZW5vICE9IDAp CisJeworCQlMV0xvY2sgKm5leHRsb2NrID0gU2ltcGxlTHJ1R2V0QmFua0xvY2soWGFjdEN0bCwg cGFnZW5vKTsKKworCQlpZiAobmV4dGxvY2sgIT0gbG9jaykKKwkJeworCQkJTFdMb2NrUmVsZWFz ZShsb2NrKTsKKwkJCUxXTG9ja0FjcXVpcmUobmV4dGxvY2ssIExXX0VYQ0xVU0lWRSk7CisJCQls b2NrID0gbmV4dGxvY2s7CisJCX0KKworCQkvKiBDcmVhdGUgYW5kIHplcm8gdGhlIGZpcnN0IHBh Z2Ugb2YgdGhlIGNvbW1pdCBsb2cgKi8KKwkJc2xvdG5vID0gWmVyb0NMT0dQYWdlKHBhZ2Vubywg ZmFsc2UpOworCisJCS8qIE1ha2Ugc3VyZSBpdCdzIHdyaXR0ZW4gb3V0ICovCisJCVNpbXBsZUxy dVdyaXRlUGFnZShYYWN0Q3RsLCBzbG90bm8pOworCQlBc3NlcnQoIVhhY3RDdGwtPnNoYXJlZC0+ cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwl9CisKIAlMV0xvY2tSZWxlYXNlKGxvY2spOwogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCmluZGV4IGQ2M2FlMTczMzAuLjcwYzlk MmY2ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC0xODE1LDYg KzE4MTUsNyBAQCBCb290U3RyYXBNdWx0aVhhY3Qodm9pZCkKIHsKIAlpbnQJCQlzbG90bm87CiAJ TFdMb2NrCSAgICpsb2NrOworCWludDY0CQlwYWdlbm87CiAKIAlsb2NrID0gU2ltcGxlTHJ1R2V0 QmFua0xvY2soTXVsdGlYYWN0T2Zmc2V0Q3RsLCAwKTsKIAlMV0xvY2tBY3F1aXJlKGxvY2ssIExX X0VYQ0xVU0lWRSk7CkBAIC0xODI2LDYgKzE4MjcsMjYgQEAgQm9vdFN0cmFwTXVsdGlYYWN0KHZv aWQpCiAJU2ltcGxlTHJ1V3JpdGVQYWdlKE11bHRpWGFjdE9mZnNldEN0bCwgc2xvdG5vKTsKIAlB c3NlcnQoIU11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10pOwog CisJcGFnZW5vID0gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UoTXVsdGlYYWN0U3RhdGUtPm5leHRN WGFjdCk7CisJaWYgKHBhZ2VubyAhPSAwKQorCXsKKwkJTFdMb2NrICpuZXh0bG9jayA9IFNpbXBs ZUxydUdldEJhbmtMb2NrKE11bHRpWGFjdE9mZnNldEN0bCwgcGFnZW5vKTsKKworCQlpZiAobmV4 dGxvY2sgIT0gbG9jaykKKwkJeworCQkJTFdMb2NrUmVsZWFzZShsb2NrKTsKKwkJCUxXTG9ja0Fj cXVpcmUobmV4dGxvY2ssIExXX0VYQ0xVU0lWRSk7CisJCQlsb2NrID0gbmV4dGxvY2s7CisJCX0K KworCQkvKiBDcmVhdGUgYW5kIHplcm8gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIG9mZnNldHMgbG9n ICovCisJCXNsb3RubyA9IFplcm9NdWx0aVhhY3RPZmZzZXRQYWdlKHBhZ2VubywgZmFsc2UpOwor CisJCS8qIE1ha2Ugc3VyZSBpdCdzIHdyaXR0ZW4gb3V0ICovCisJCVNpbXBsZUxydVdyaXRlUGFn ZShNdWx0aVhhY3RPZmZzZXRDdGwsIHNsb3Rubyk7CisJCUFzc2VydCghTXVsdGlYYWN0T2Zmc2V0 Q3RsLT5zaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSk7CisJfQorCiAJTFdMb2NrUmVsZWFzZShs b2NrKTsKIAogCWxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9jayhNdWx0aVhhY3RNZW1iZXJDdGws IDApOwpAQCAtMTgzOCw3ICsxODU5LDM5IEBAIEJvb3RTdHJhcE11bHRpWGFjdCh2b2lkKQogCVNp bXBsZUxydVdyaXRlUGFnZShNdWx0aVhhY3RNZW1iZXJDdGwsIHNsb3Rubyk7CiAJQXNzZXJ0KCFN dWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKIAorCXBhZ2Vu byA9IE1YT2Zmc2V0VG9NZW1iZXJQYWdlKE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0KTsKKwlp ZiAocGFnZW5vICE9IDApCisJeworCQlMV0xvY2sgKm5leHRsb2NrID0gU2ltcGxlTHJ1R2V0QmFu a0xvY2soTXVsdGlYYWN0TWVtYmVyQ3RsLCBwYWdlbm8pOworCisJCWlmIChuZXh0bG9jayAhPSBs b2NrKQorCQl7CisJCQlMV0xvY2tSZWxlYXNlKGxvY2spOworCQkJTFdMb2NrQWNxdWlyZShuZXh0 bG9jaywgTFdfRVhDTFVTSVZFKTsKKwkJCWxvY2sgPSBuZXh0bG9jazsKKwkJfQorCisJCS8qIENy ZWF0ZSBhbmQgemVybyB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgbWVtYmVycyBsb2cgKi8KKwkJc2xv dG5vID0gWmVyb011bHRpWGFjdE1lbWJlclBhZ2UocGFnZW5vLCBmYWxzZSk7CisKKwkJLyogTWFr ZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KKwkJU2ltcGxlTHJ1V3JpdGVQYWdlKE11bHRpWGFj dE1lbWJlckN0bCwgc2xvdG5vKTsKKwkJQXNzZXJ0KCFNdWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJl ZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwl9CisKIAlMV0xvY2tSZWxlYXNlKGxvY2spOworCisJ LyoKKwkgKiBJZiB3ZSdyZSBzdGFydGluZyBub3QgZnJvbSB6ZXJvIG9mZnNldCwgaW5pdGlsaXpl IGR1bW15IG11bHRpeGFjdCB0bworCSAqIGV2YWRlIHRvbyBsb25nIGxvb3AgaW4gUGVyZm9ybU1l bWJlcnNUcnVuY2F0aW9uKCkuCisJICovCisJaWYgKE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0 ID4gMCAmJiBNdWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0ID4gMCkKKwl7CisJCVJlY29yZE5ld011 bHRpWGFjdChGaXJzdE11bHRpWGFjdElkLAorCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm5leHRP ZmZzZXQsIDAsIE5VTEwpOworCQlSZWNvcmROZXdNdWx0aVhhY3QoTXVsdGlYYWN0U3RhdGUtPm5l eHRNWGFjdCwKKwkJCQkJCSAgIE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0LCAwLCBOVUxMKTsK Kwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0 cmFucy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYwppbmRleCAxNTE1 MzYxOGZhLi4yMTg2NzVmYTYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9zdWJ0cmFucy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMK QEAgLTI3MCwxMiArMjcwLDE2IEBAIHZvaWQKIEJvb3RTdHJhcFNVQlRSQU5TKHZvaWQpCiB7CiAJ aW50CQkJc2xvdG5vOwotCUxXTG9jawkgICAqbG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2NrKFN1 YlRyYW5zQ3RsLCAwKTsKKwlMV0xvY2sJICAgKmxvY2s7CisJaW50NjQJCXBhZ2VubzsKKworCXBh Z2VubyA9IFRyYW5zYWN0aW9uSWRUb1BhZ2UoWGlkRnJvbUZ1bGxUcmFuc2FjdGlvbklkKFRyYW5z YW1WYXJpYWJsZXMtPm5leHRYaWQpKTsKKwlsb2NrID0gU2ltcGxlTHJ1R2V0QmFua0xvY2soU3Vi VHJhbnNDdGwsIHBhZ2Vubyk7CiAKIAlMV0xvY2tBY3F1aXJlKGxvY2ssIExXX0VYQ0xVU0lWRSk7 CiAKIAkvKiBDcmVhdGUgYW5kIHplcm8gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIHN1YnRyYW5zIGxv ZyAqLwotCXNsb3RubyA9IFplcm9TVUJUUkFOU1BhZ2UoMCk7CisJc2xvdG5vID0gWmVyb1NVQlRS QU5TUGFnZShwYWdlbm8pOwogCiAJLyogTWFrZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KIAlT aW1wbGVMcnVXcml0ZVBhZ2UoU3ViVHJhbnNDdGwsIHNsb3Rubyk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nLmMKaW5kZXggYTgxM2EwOTBmYS4uOWY3OGEzZTM0YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYwpAQCAtMTM2LDYgKzEzNiwxMCBAQCBpbnQJCQltYXhfc2xvdF93YWxfa2VlcF9z aXplX21iID0gLTE7CiBpbnQJCQl3YWxfZGVjb2RlX2J1ZmZlcl9zaXplID0gNTEyICogMTAyNDsK IGJvb2wJCXRyYWNrX3dhbF9pb190aW1pbmcgPSBmYWxzZTsKIAorVHJhbnNhY3Rpb25JZAkJc3Rh cnRfeGlkID0gRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkOworTXVsdGlYYWN0SWQJCQlzdGFydF9t eGlkID0gRmlyc3RNdWx0aVhhY3RJZDsKK011bHRpWGFjdE9mZnNldAkJc3RhcnRfbXhvZmYgPSAw OworCiAjaWZkZWYgV0FMX0RFQlVHCiBib29sCQlYTE9HX0RFQlVHID0gZmFsc2U7CiAjZW5kaWYK QEAgLTUwODAsMTMgKzUwODQsMTQgQEAgQm9vdFN0cmFwWExPRyh1aW50MzIgZGF0YV9jaGVja3N1 bV92ZXJzaW9uKQogCWNoZWNrUG9pbnQuZnVsbFBhZ2VXcml0ZXMgPSBmdWxsUGFnZVdyaXRlczsK IAljaGVja1BvaW50LndhbF9sZXZlbCA9IHdhbF9sZXZlbDsKIAljaGVja1BvaW50Lm5leHRYaWQg PQotCQlGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFuZFhpZCgwLCBGaXJzdE5vcm1hbFRyYW5z YWN0aW9uSWQpOworCQlGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFuZFhpZCgwLCBNYXgoRmly c3ROb3JtYWxUcmFuc2FjdGlvbklkLAorCQkJCQkJCQkJCQkJc3RhcnRfeGlkKSk7CiAJY2hlY2tQ b2ludC5uZXh0T2lkID0gRmlyc3RHZW5ia2lPYmplY3RJZDsKLQljaGVja1BvaW50Lm5leHRNdWx0 aSA9IEZpcnN0TXVsdGlYYWN0SWQ7Ci0JY2hlY2tQb2ludC5uZXh0TXVsdGlPZmZzZXQgPSAxOwot CWNoZWNrUG9pbnQub2xkZXN0WGlkID0gRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkOworCWNoZWNr UG9pbnQubmV4dE11bHRpID0gTWF4KEZpcnN0TXVsdGlYYWN0SWQsIHN0YXJ0X214aWQpOworCWNo ZWNrUG9pbnQubmV4dE11bHRpT2Zmc2V0ID0gTWF4KDEsIHN0YXJ0X214b2ZmKTsKKwljaGVja1Bv aW50Lm9sZGVzdFhpZCA9IFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChjaGVja1BvaW50Lm5leHRY aWQpOwogCWNoZWNrUG9pbnQub2xkZXN0WGlkREIgPSBUZW1wbGF0ZTFEYk9pZDsKLQljaGVja1Bv aW50Lm9sZGVzdE11bHRpID0gRmlyc3RNdWx0aVhhY3RJZDsKKwljaGVja1BvaW50Lm9sZGVzdE11 bHRpID0gY2hlY2tQb2ludC5uZXh0TXVsdGk7CiAJY2hlY2tQb2ludC5vbGRlc3RNdWx0aURCID0g VGVtcGxhdGUxRGJPaWQ7CiAJY2hlY2tQb2ludC5vbGRlc3RDb21taXRUc1hpZCA9IEludmFsaWRU cmFuc2FjdGlvbklkOwogCWNoZWNrUG9pbnQubmV3ZXN0Q29tbWl0VHNYaWQgPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAu YyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwppbmRleCAzNTlmNThhOGY5Li5i Njk3MTM4YjdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMK KysrIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCkBAIC0yMTgsNyArMjE4LDcg QEAgQm9vdHN0cmFwTW9kZU1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgYm9vbCBjaGVja19v bmx5KQogCWFyZ3YrKzsKIAlhcmdjLS07CiAKLQl3aGlsZSAoKGZsYWcgPSBnZXRvcHQoYXJnYywg YXJndiwgIkI6YzpkOkQ6RmtyOlg6LToiKSkgIT0gLTEpCisJd2hpbGUgKChmbGFnID0gZ2V0b3B0 KGFyZ2MsIGFyZ3YsICJCOmM6ZDpEOkZrbTpvOnI6WDp4Oi06IikpICE9IC0xKQogCXsKIAkJc3dp dGNoIChmbGFnKQogCQl7CkBAIC0yODYsMTIgKzI4Niw2MCBAQCBCb290c3RyYXBNb2RlTWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdLCBib29sIGNoZWNrX29ubHkpCiAJCQljYXNlICdrJzoKIAkJ CQlib290c3RyYXBfZGF0YV9jaGVja3N1bV92ZXJzaW9uID0gUEdfREFUQV9DSEVDS1NVTV9WRVJT SU9OOwogCQkJCWJyZWFrOworCQkJY2FzZSAnbSc6CisJCQkJeworCQkJCQljaGFyCSAgICplbmRw dHI7CisKKwkJCQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teGlkID0gc3RydG91NjQob3B0YXJn LCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9 ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0SWRJc1ZhbGlkKHN0 YXJ0X214aWQpKQorCQkJCQl7CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coImludmFsaWQgaW5pdGlh bCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZCIpKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJ YnJlYWs7CisJCQljYXNlICdvJzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJ CQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X214b2ZmID0gc3RydG91NjQob3B0YXJnLCAmZW5kcHRy LCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwg ZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0T2Zmc2V0SXNWYWxpZChzdGFydF9t eG9mZikpCisJCQkJCXsKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiaW52YWxpZCBpbml0aWFsIGRh dGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldCIpKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJ YnJlYWs7CiAJCQljYXNlICdyJzoKIAkJCQlzdHJsY3B5KE91dHB1dEZpbGVOYW1lLCBvcHRhcmcs IE1BWFBHUEFUSCk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdYJzoKIAkJCQlTZXRDb25maWdPcHRp b24oIndhbF9zZWdtZW50X3NpemUiLCBvcHRhcmcsIFBHQ19JTlRFUk5BTCwgUEdDX1NfRFlOQU1J Q19ERUZBVUxUKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgJ3gnOgorCQkJCXsKKwkJCQkJY2hhcgkg ICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfeGlkID0gc3RydG91NjQo b3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5k cHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0VHJhbnNhY3Rpb25JZElz VmFsaWQoc3RhcnRfeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlk IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWQgdmFsdWUiKSkpOworCQkJCQl9CisJCQkJfQor CQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQl3cml0ZV9zdGRlcnIoIlRyeSBcIiVzIC0taGVs cFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiwKIAkJCQkJCQkgcHJvZ25hbWUpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbWFpbi9tYWluLmMgYi9zcmMvYmFja2VuZC9tYWluL21haW4uYwpp bmRleCBlOGVmZmU1MDI0Li5mZjI1MmRmZmJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9tYWlu L21haW4uYworKysgYi9zcmMvYmFja2VuZC9tYWluL21haW4uYwpAQCAtNDI2LDEyICs0MjYsMTgg QEAgaGVscChjb25zdCBjaGFyICpwcm9nbmFtZSkKIAlwcmludGYoXygiICAtRSAgICAgICAgICAg ICAgICAgZWNobyBzdGF0ZW1lbnQgYmVmb3JlIGV4ZWN1dGlvblxuIikpOwogCXByaW50ZihfKCIg IC1qICAgICAgICAgICAgICAgICBkbyBub3QgdXNlIG5ld2xpbmUgYXMgaW50ZXJhY3RpdmUgcXVl cnkgZGVsaW1pdGVyXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXIgRklMRU5BTUUgICAgICAgIHNlbmQg c3Rkb3V0IGFuZCBzdGRlcnIgdG8gZ2l2ZW4gZmlsZVxuIikpOworCXByaW50ZihfKCIgIC1tIFNU QVJUX01YSUQgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZFxu IikpOworCXByaW50ZihfKCIgIC1vIFNUQVJUX01YT0ZGICAgICBzZXQgaW5pdGlhbCBkYXRhYmFz ZSBjbHVzdGVyIG11bHRpeGFjdCBvZmZzZXRcbiIpKTsKKwlwcmludGYoXygiICAteCBTVEFSVF9Y SUQgICAgICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWRcbiIpKTsKIAogCXByaW50 ZihfKCJcbk9wdGlvbnMgZm9yIGJvb3RzdHJhcHBpbmcgbW9kZTpcbiIpKTsKIAlwcmludGYoXygi ICAtLWJvb3QgICAgICAgICAgICAgc2VsZWN0cyBib290c3RyYXBwaW5nIG1vZGUgKG11c3QgYmUg Zmlyc3QgYXJndW1lbnQpXG4iKSk7CiAJcHJpbnRmKF8oIiAgLS1jaGVjayAgICAgICAgICAgIHNl bGVjdHMgY2hlY2sgbW9kZSAobXVzdCBiZSBmaXJzdCBhcmd1bWVudClcbiIpKTsKIAlwcmludGYo XygiICBEQk5BTUUgICAgICAgICAgICAgZGF0YWJhc2UgbmFtZSAobWFuZGF0b3J5IGFyZ3VtZW50 IGluIGJvb3RzdHJhcHBpbmcgbW9kZSlcbiIpKTsKIAlwcmludGYoXygiICAtciBGSUxFTkFNRSAg ICAgICAgc2VuZCBzdGRvdXQgYW5kIHN0ZGVyciB0byBnaXZlbiBmaWxlXG4iKSk7CisJcHJpbnRm KF8oIiAgLW0gU1RBUlRfTVhJRCAgICAgIHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVs dGl4YWN0IGlkXG4iKSk7CisJcHJpbnRmKF8oIiAgLW8gU1RBUlRfTVhPRkYgICAgIHNldCBpbml0 aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldFxuIikpOworCXByaW50ZihfKCIg IC14IFNUQVJUX1hJRCAgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZFxuIikp OwogCiAJcHJpbnRmKF8oIlxuUGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBj b21wbGV0ZSBsaXN0IG9mIHJ1bi10aW1lXG4iCiAJCQkgImNvbmZpZ3VyYXRpb24gc2V0dGluZ3Mg YW5kIGhvdyB0byBzZXQgdGhlbSBvbiB0aGUgY29tbWFuZCBsaW5lIG9yIGluXG4iCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IDVmNjE1ZDBmNjAuLjlmNmJjNmUzM2QgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC01NzgsNyArNTc4LDcgQEAgUG9zdG1hc3Rl ck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKiB0Y29wL3Bvc3RncmVzLmMgKHRoZSBv cHRpb24gc2V0cyBzaG91bGQgbm90IGNvbmZsaWN0KSBhbmQgd2l0aCB0aGUKIAkgKiBjb21tb24g aGVscCgpIGZ1bmN0aW9uIGluIG1haW4vbWFpbi5jLgogCSAqLwotCXdoaWxlICgob3B0ID0gZ2V0 b3B0KGFyZ2MsIGFyZ3YsICJCOmJDOmM6RDpkOkVlRmY6aDppams6bE46T1BwOnI6UzpzVHQ6Vzot OiIpKSAhPSAtMSkKKwl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAiQjpiQzpjOkQ6 ZDpFZUZmOmg6aWprOmxtOk46T286UHA6cjpTOnNUdDpXOng6LToiKSkgIT0gLTEpCiAJewogCQlz d2l0Y2ggKG9wdCkKIAkJewpAQCAtNjg4LDEwICs2ODgsMTggQEAgUG9zdG1hc3Rlck1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQlTZXRDb25maWdPcHRpb24oIm1heF9jb25uZWN0aW9u cyIsIG9wdGFyZywgUEdDX1BPU1RNQVNURVIsIFBHQ19TX0FSR1YpOwogCQkJCWJyZWFrOwogCisJ CQljYXNlICdtJzoKKwkJCQkvKiBvbmx5IHVzZWQgYnkgc2luZ2xlLXVzZXIgYmFja2VuZCAqLwor CQkJCWJyZWFrOworCiAJCQljYXNlICdPJzoKIAkJCQlTZXRDb25maWdPcHRpb24oImFsbG93X3N5 c3RlbV90YWJsZV9tb2RzIiwgInRydWUiLCBQR0NfUE9TVE1BU1RFUiwgUEdDX1NfQVJHVik7CiAJ CQkJYnJlYWs7CiAKKwkJCWNhc2UgJ28nOgorCQkJCS8qIG9ubHkgdXNlZCBieSBzaW5nbGUtdXNl ciBiYWNrZW5kICovCisJCQkJYnJlYWs7CisKIAkJCWNhc2UgJ1AnOgogCQkJCVNldENvbmZpZ09w dGlvbigiaWdub3JlX3N5c3RlbV9pbmRleGVzIiwgInRydWUiLCBQR0NfUE9TVE1BU1RFUiwgUEdD X1NfQVJHVik7CiAJCQkJYnJlYWs7CkBAIC03NDIsNiArNzUwLDEwIEBAIFBvc3RtYXN0ZXJNYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJwb3N0X2F1dGhf ZGVsYXkiLCBvcHRhcmcsIFBHQ19QT1NUTUFTVEVSLCBQR0NfU19BUkdWKTsKIAkJCQlicmVhazsK IAorCQkJY2FzZSAneCc6CisJCQkJLyogb25seSB1c2VkIGJ5IHNpbmdsZS11c2VyIGJhY2tlbmQg Ki8KKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQl3cml0ZV9zdGRlcnIoIlRyeSBcIiVz IC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiwKIAkJCQkJCQkgcHJvZ25hbWUpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCmluZGV4IDU2NTUzNDhhMmUuLjljMTcwZjQ5MDYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKQEAgLTM3ODgsNyArMzc4OCw3IEBAIHByb2Nlc3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSwgR3VjQ29udGV4dCBjdHgsCiAJICogcG9zdG1hc3Rlci9wb3N0bWFz dGVyLmMgKHRoZSBvcHRpb24gc2V0cyBzaG91bGQgbm90IGNvbmZsaWN0KSBhbmQgd2l0aAogCSAq IHRoZSBjb21tb24gaGVscCgpIGZ1bmN0aW9uIGluIG1haW4vbWFpbi5jLgogCSAqLwotCXdoaWxl ICgoZmxhZyA9IGdldG9wdChhcmdjLCBhcmd2LCAiQjpiQzpjOkQ6ZDpFZUZmOmg6aWprOmxOOm5P UHA6cjpTOnNUdDp2Olc6LToiKSkgIT0gLTEpCisJd2hpbGUgKChmbGFnID0gZ2V0b3B0KGFyZ2Ms IGFyZ3YsICJCOmJDOmM6RDpkOkVlRmY6aDppams6bG06TjpuT286UHA6cjpTOnNUdDp2Olc6eDot OiIpKSAhPSAtMSkKIAl7CiAJCXN3aXRjaCAoZmxhZykKIAkJewpAQCAtMzg5Myw2ICszODkzLDIz IEBAIHByb2Nlc3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgR3Vj Q29udGV4dCBjdHgsCiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJzc2wiLCAidHJ1ZSIsIGN0eCwgZ3Vj c291cmNlKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSAnbSc6CisJCQkJeworCQkJCQljaGFyCSAg ICplbmRwdHI7CisKKwkJCQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teGlkID0gc3RydG91NjQo b3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5k cHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0SWRJc1Zh bGlkKHN0YXJ0X214aWQpKQorCQkJCQl7CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQko ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coImludmFsaWQg aW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZCIpKSk7CisJCQkJCX0KKwkJCQl9 CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgJ04nOgogCQkJCVNldENvbmZpZ09wdGlvbigibWF4X2Nv bm5lY3Rpb25zIiwgb3B0YXJnLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CkBAIC0zOTA1 LDYgKzM5MjIsMjMgQEAgcHJvY2Vzc19wb3N0Z3Jlc19zd2l0Y2hlcyhpbnQgYXJnYywgY2hhciAq YXJndltdLCBHdWNDb250ZXh0IGN0eCwKIAkJCQlTZXRDb25maWdPcHRpb24oImFsbG93X3N5c3Rl bV90YWJsZV9tb2RzIiwgInRydWUiLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CiAKKwkJ CWNhc2UgJ28nOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0g MDsKKwkJCQkJc3RhcnRfbXhvZmYgPSBzdHJ0b3U2NChvcHRhcmcsICZlbmRwdHIsIDApOworCisJ CQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAw IHx8CisJCQkJCQkhU3RhcnRNdWx0aVhhY3RPZmZzZXRJc1ZhbGlkKHN0YXJ0X214b2ZmKSkKKwkJ CQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1 c3RlciBtdWx0aXhhY3Qgb2Zmc2V0IikpKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKKwog CQkJY2FzZSAnUCc6CiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJpZ25vcmVfc3lzdGVtX2luZGV4ZXMi LCAidHJ1ZSIsIGN0eCwgZ3Vjc291cmNlKTsKIAkJCQlicmVhazsKQEAgLTM5NTksNiArMzk5Mywy MyBAQCBwcm9jZXNzX3Bvc3RncmVzX3N3aXRjaGVzKGludCBhcmdjLCBjaGFyICphcmd2W10sIEd1 Y0NvbnRleHQgY3R4LAogCQkJCVNldENvbmZpZ09wdGlvbigicG9zdF9hdXRoX2RlbGF5Iiwgb3B0 YXJnLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgJ3gnOgorCQkJCXsK KwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfeGlk ID0gc3RydG91NjQob3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9w dGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0VHJh bnNhY3Rpb25JZElzVmFsaWQoc3RhcnRfeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJy bXNnKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWQiKSkpOworCQkJCQl9CisJ CQkJfQorCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0OgogCQkJCWVycnMrKzsKIAkJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jIGIvc3JjL2Jpbi9pbml0ZGIvaW5p dGRiLmMKaW5kZXggMTAxYzc4MDAxMi4uMzM2ZWM5Y2RkZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9p bml0ZGIvaW5pdGRiLmMKKysrIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKQEAgLTE2OCw2ICsx NjgsOSBAQCBzdGF0aWMgYm9vbCBkYXRhX2NoZWNrc3VtcyA9IHRydWU7CiBzdGF0aWMgY2hhciAq eGxvZ19kaXIgPSBOVUxMOwogc3RhdGljIGludAl3YWxfc2VnbWVudF9zaXplX21iID0gKERFRkFV TFRfWExPR19TRUdfU0laRSkgLyAoMTAyNCAqIDEwMjQpOwogc3RhdGljIERhdGFEaXJTeW5jTWV0 aG9kIHN5bmNfbWV0aG9kID0gREFUQV9ESVJfU1lOQ19NRVRIT0RfRlNZTkM7CitzdGF0aWMgVHJh bnNhY3Rpb25JZCBzdGFydF94aWQgPSAwOworc3RhdGljIE11bHRpWGFjdElkIHN0YXJ0X214aWQg PSAwOworc3RhdGljIE11bHRpWGFjdE9mZnNldCBzdGFydF9teG9mZiA9IDA7CiAKIAogLyogaW50 ZXJuYWwgdmFycyAqLwpAQCAtMTU5Niw2ICsxNTk5LDExIEBAIGJvb3RzdHJhcF90ZW1wbGF0ZTEo dm9pZCkKIAlia2lfbGluZXMgPSByZXBsYWNlX3Rva2VuKGJraV9saW5lcywgIlBPU1RHUkVTIiwK IAkJCQkJCQkgIGVzY2FwZV9xdW90ZXNfYmtpKHVzZXJuYW1lKSk7CiAKKwkvKiByZWxmcm96ZW54 aWQgbXVzdCBub3QgYmUgbGVzcyB0aGFuIEZpcnN0Tm9ybWFsVHJhbnNhY3Rpb25JZCAqLworCXNw cmludGYoYnVmLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIE1heChzdGFydF94aWQsIDMp KTsKKwlia2lfbGluZXMgPSByZXBsYWNlX3Rva2VuKGJraV9saW5lcywgIlJFQ0VOVFhNSU4iLAor CQkJCQkJCSAgYnVmKTsKKwogCWJraV9saW5lcyA9IHJlcGxhY2VfdG9rZW4oYmtpX2xpbmVzLCAi RU5DT0RJTkciLAogCQkJCQkJCSAgZW5jb2RpbmdpZF90b19zdHJpbmcoZW5jb2RpbmdpZCkpOwog CkBAIC0xNjIxLDYgKzE2MjksOSBAQCBib290c3RyYXBfdGVtcGxhdGUxKHZvaWQpCiAKIAlwcmlu dGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiIC0tYm9vdCAlcyAlcyIsIGJhY2tlbmRfZXhlYywg Ym9vdF9vcHRpb25zLCBleHRyYV9vcHRpb25zKTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAi IC1YICVkIiwgd2FsX3NlZ21lbnRfc2l6ZV9tYiAqICgxMDI0ICogMTAyNCkpOworCWFwcGVuZFBR RXhwQnVmZmVyKCZjbWQsICIgLW0gJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X214 aWQpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZjbWQsICIgLW8gJWxsdSIsICh1bnNpZ25lZCBsb25n IGxvbmcpIHN0YXJ0X214b2ZmKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC14ICVsbHUi LCAodW5zaWduZWQgbG9uZyBsb25nKSBzdGFydF94aWQpOwogCWlmIChkYXRhX2NoZWNrc3VtcykK IAkJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtayIpOwogCWlmIChkZWJ1ZykKQEAgLTI1NjAs MTIgKzI1NzEsMjAgQEAgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJcHJpbnRmKF8oIiAg LWQsIC0tZGVidWcgICAgICAgICAgICAgICBnZW5lcmF0ZSBsb3RzIG9mIGRlYnVnZ2luZyBvdXRw dXRcbiIpKTsKIAlwcmludGYoXygiICAgICAgLS1kaXNjYXJkLWNhY2hlcyAgICAgIHNldCBkZWJ1 Z19kaXNjYXJkX2NhY2hlcz0xXG4iKSk7CiAJcHJpbnRmKF8oIiAgLUwgRElSRUNUT1JZICAgICAg ICAgICAgICB3aGVyZSB0byBmaW5kIHRoZSBpbnB1dCBmaWxlc1xuIikpOworCXByaW50ZihfKCIg IC1tLCAtLW11bHRpeGFjdC1pZD1TVEFSVF9NWElEXG4iCisJCQkgIiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZFxuIgor CQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4IHZhbHVlIGlzIDJeNjItMVxuIikp OwogCXByaW50ZihfKCIgIC1uLCAtLW5vLWNsZWFuICAgICAgICAgICAgZG8gbm90IGNsZWFuIHVw IGFmdGVyIGVycm9yc1xuIikpOwogCXByaW50ZihfKCIgIC1OLCAtLW5vLXN5bmMgICAgICAgICAg ICAgZG8gbm90IHdhaXQgZm9yIGNoYW5nZXMgdG8gYmUgd3JpdHRlbiBzYWZlbHkgdG8gZGlza1xu IikpOwogCXByaW50ZihfKCIgICAgICAtLW5vLWluc3RydWN0aW9ucyAgICAgZG8gbm90IHByaW50 IGluc3RydWN0aW9ucyBmb3IgbmV4dCBzdGVwc1xuIikpOworCXByaW50ZihfKCIgIC1vLCAtLW11 bHRpeGFjdC1vZmZzZXQ9U1RBUlRfTVhPRkZcbiIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldFxuIgor CQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4IHZhbHVlIGlzIDJeNjItMVxuIikp OwogCXByaW50ZihfKCIgIC1zLCAtLXNob3cgICAgICAgICAgICAgICAgc2hvdyBpbnRlcm5hbCBz ZXR0aW5ncywgdGhlbiBleGl0XG4iKSk7CiAJcHJpbnRmKF8oIiAgICAgIC0tc3luYy1tZXRob2Q9 TUVUSE9EICBzZXQgbWV0aG9kIGZvciBzeW5jaW5nIGZpbGVzIHRvIGRpc2tcbiIpKTsKIAlwcmlu dGYoXygiICAtUywgLS1zeW5jLW9ubHkgICAgICAgICAgIG9ubHkgc3luYyBkYXRhYmFzZSBmaWxl cyB0byBkaXNrLCB0aGVuIGV4aXRcbiIpKTsKKwlwcmludGYoXygiICAteCwgLS14aWQ9U1RBUlRf WElEICAgICAgIHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkXG4iCisJCQkgIiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtYXggdmFsdWUgaXMgMl42Mi0xXG4iKSk7CiAJcHJpbnRm KF8oIlxuT3RoZXIgb3B0aW9uczpcbiIpKTsKIAlwcmludGYoXygiICAtViwgLS12ZXJzaW9uICAg ICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRcbiIpKTsKIAlw cmludGYoXygiICAtPywgLS1oZWxwICAgICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwLCB0aGVu IGV4aXRcbiIpKTsKQEAgLTMxMDcsNiArMzEyNiwxOCBAQCBpbml0aWFsaXplX2RhdGFfZGlyZWN0 b3J5KHZvaWQpCiAJLyogTm93IGNyZWF0ZSBhbGwgdGhlIHRleHQgY29uZmlnIGZpbGVzICovCiAJ c2V0dXBfY29uZmlnKCk7CiAKKwlpZiAoc3RhcnRfbXhpZCAhPSAwKQorCQlwcmludGYoXygic2Vs ZWN0aW5nIGluaXRpYWwgbXVsdGl4YWN0IGlkIC4uLiAlbGx1XG4iKSwKKwkJCQkgKHVuc2lnbmVk IGxvbmcgbG9uZykgc3RhcnRfbXhpZCk7CisKKwlpZiAoc3RhcnRfbXhvZmYgIT0gMCkKKwkJcHJp bnRmKF8oInNlbGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBvZmZzZXQgLi4uICVsbHVcbiIpLAor CQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBzdGFydF9teG9mZik7CisKKwlpZiAoc3RhcnRfeGlk ICE9IDApCisJCXByaW50ZihfKCJzZWxlY3RpbmcgaW5pdGlhbCB4aWQgLi4uICVsbHVcbiIpLAor CQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBzdGFydF94aWQpOworCiAJLyogQm9vdHN0cmFwIHRl bXBsYXRlMSAqLwogCWJvb3RzdHJhcF90ZW1wbGF0ZTEoKTsKIApAQCAtMzEyMyw4ICszMTU0LDEy IEBAIGluaXRpYWxpemVfZGF0YV9kaXJlY3Rvcnkodm9pZCkKIAlmZmx1c2goc3Rkb3V0KTsKIAog CWluaXRQUUV4cEJ1ZmZlcigmY21kKTsKLQlwcmludGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wi ICVzICVzIHRlbXBsYXRlMSA+JXMiLAotCQkJCQkgIGJhY2tlbmRfZXhlYywgYmFja2VuZF9vcHRp b25zLCBleHRyYV9vcHRpb25zLCBERVZOVUxMKTsKKwlwcmludGZQUUV4cEJ1ZmZlcigmY21kLCAi XCIlc1wiICVzICVzIiwKKwkJCQkJICBiYWNrZW5kX2V4ZWMsIGJhY2tlbmRfb3B0aW9ucywgZXh0 cmFfb3B0aW9ucyk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtbSAlbGx1IiwgKHVuc2ln bmVkIGxvbmcgbG9uZykgc3RhcnRfbXhpZCk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAt byAlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhcnRfbXhvZmYpOworCWFwcGVuZFBRRXhw QnVmZmVyKCZjbWQsICIgLXggJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X3hpZCk7 CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiB0ZW1wbGF0ZTEgPiVzIiwgREVWTlVMTCk7CiAK IAlQR19DTURfT1BFTihjbWQuZGF0YSk7CiAKQEAgLTMyMTEsNiArMzI0Niw5IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJeyJpY3UtcnVsZXMiLCByZXF1aXJlZF9hcmd1bWVudCwg TlVMTCwgMTh9LAogCQl7InN5bmMtbWV0aG9kIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDE5 fSwKIAkJeyJuby1kYXRhLWNoZWNrc3VtcyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAyMH0sCisJCXsi eGlkIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd4J30sCisJCXsibXVsdGl4YWN0LWlkIiwg cmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdtJ30sCisJCXsibXVsdGl4YWN0LW9mZnNldCIsIHJl cXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnbyd9LAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9Owog CkBAIC0zMjUyLDcgKzMyOTAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkv KiBwcm9jZXNzIGNvbW1hbmQtbGluZSBvcHRpb25zICovCiAKLQl3aGlsZSAoKGMgPSBnZXRvcHRf bG9uZyhhcmdjLCBhcmd2LCAiQTpjOmREOkU6Z2tMOm5Oc1NUOlU6V1g6IiwKKwl3aGlsZSAoKGMg PSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiQTpjOmREOkU6Z2tMOm06bk5vOnNTVDpVOld4Olg6 IiwKIAkJCQkJCQlsb25nX29wdGlvbnMsICZvcHRpb25faW5kZXgpKSAhPSAtMSkKIAl7CiAJCXN3 aXRjaCAoYykKQEAgLTMzMTAsNiArMzM0OCwzMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJCQkJZGVidWcgPSB0cnVlOwogCQkJCXByaW50ZihfKCJSdW5uaW5nIGluIGRlYnVnIG1v ZGUuXG4iKSk7CiAJCQkJYnJlYWs7CisJCQljYXNlICdtJzoKKwkJCQl7CisJCQkJCWNoYXIJICAg KmVuZHB0cjsKKworCQkJCQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X214aWQgPSBzdHJ0b3U2NChv cHRhcmcsICZlbmRwdHIsIDApOworCisJCQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRw dHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAwIHx8CisJCQkJCQkhU3RhcnRNdWx0aVhhY3RJZElzVmFs aWQoc3RhcnRfbXhpZCkpCisJCQkJCXsKKwkJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBpbml0 aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IGlkIik7CisJCQkJCQlleGl0KDEpOworCQkJ CQl9CisJCQkJCWVsc2UgaWYgKHN0YXJ0X214aWQgPCAxKSAvKiBGaXJzdE11bHRpWGFjdElkICov CisJCQkJCXsKKwkJCQkJCS8qCisJCQkJCQkgKiBXZSBhdm9pZCBteGlkIHRvIGJlIHNpbGVudGx5 IHNldCB0bworCQkJCQkJICogRmlyc3RNdWx0aVhhY3RJZCwgdGhvdWdoIGl0IGRvZXMgbm90IGhh cm0uCisJCQkJCQkgKi8KKwkJCQkJCXBnX2xvZ19lcnJvcigibXVsdGl4YWN0IGlkIHNob3VsZCBi ZSBncmVhdGVyIHRoYW4gMCIpOworCQkJCQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCX0KKwkJCQli cmVhazsKIAkJCWNhc2UgJ24nOgogCQkJCW5vY2xlYW4gPSB0cnVlOwogCQkJCXByaW50ZihfKCJS dW5uaW5nIGluIG5vLWNsZWFuIG1vZGUuICBNaXN0YWtlcyB3aWxsIG5vdCBiZSBjbGVhbmVkIHVw LlxuIikpOwpAQCAtMzMxNyw2ICszMzc5LDIxIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAkJCWNhc2UgJ04nOgogCQkJCWRvX3N5bmMgPSBmYWxzZTsKIAkJCQlicmVhazsKKwkJCWNh c2UgJ28nOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsK KwkJCQkJc3RhcnRfbXhvZmYgPSBzdHJ0b3U2NChvcHRhcmcsICZlbmRwdHIsIDApOworCisJCQkJ CWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAwIHx8 CisJCQkJCQkhU3RhcnRNdWx0aVhhY3RPZmZzZXRJc1ZhbGlkKHN0YXJ0X214b2ZmKSkKKwkJCQkJ eworCQkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBt dWx0aXhhY3Qgb2Zmc2V0Iik7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJfQorCQkJCWJy ZWFrOwogCQkJY2FzZSAnUyc6CiAJCQkJc3luY19vbmx5ID0gdHJ1ZTsKIAkJCQlicmVhazsKQEAg LTM0MDUsNiArMzQ4MiwzMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQljYXNl IDIwOgogCQkJCWRhdGFfY2hlY2tzdW1zID0gZmFsc2U7CiAJCQkJYnJlYWs7CisJCQljYXNlICd4 JzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJCQllcnJubyA9IDA7CisJCQkJ CXN0YXJ0X3hpZCA9IHN0cnRvdTY0KG9wdGFyZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVu ZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJ CSFTdGFydFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0YXJ0X3hpZCkpCisJCQkJCXsKKwkJCQkJCXBn X2xvZ19lcnJvcigiaW52YWxpZCB2YWx1ZSBmb3IgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhp ZCIpOworCQkJCQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCQllbHNlIGlmIChzdGFydF94aWQgPCAz KSAvKiBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQgKi8KKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJ CSAqIFdlIGF2b2lkIHhpZCB0byBiZSBzaWxlbnRseSBzZXQgdG8KKwkJCQkJCSAqIEZpcnN0Tm9y bWFsVHJhbnNhY3Rpb25JZCwgdGhvdWdoIGl0IGRvZXMgbm90IGhhcm0uCisJCQkJCQkgKi8KKwkJ CQkJCXBnX2xvZ19lcnJvcigieGlkIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMiIpOworCQkJCQkJ ZXhpdCgxKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyog Z2V0b3B0X2xvbmcgYWxyZWFkeSBlbWl0dGVkIGEgY29tcGxhaW50ICovCiAJCQkJcGdfbG9nX2Vy cm9yX2hpbnQoIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2du YW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL3QvMDAxX2luaXRkYi5wbCBiL3NyYy9i aW4vaW5pdGRiL3QvMDAxX2luaXRkYi5wbAppbmRleCBmMTE0YzJhMWI2Li44NWExMzMyODBjIDEw MDY0NAotLS0gYS9zcmMvYmluL2luaXRkYi90LzAwMV9pbml0ZGIucGwKKysrIGIvc3JjL2Jpbi9p bml0ZGIvdC8wMDFfaW5pdGRiLnBsCkBAIC0yODIsNCArMjgyLDY0IEBAIGNvbW1hbmRfZmFpbHMo CiAJWyAncGdfY2hlY2tzdW1zJywgJy1EJywgJGRhdGFkaXJfbm9jaGVja3N1bXMgXSwKIAkicGdf Y2hlY2tzdW1zIGZhaWxzIHdpdGggZGF0YSBjaGVja3N1bSBkaXNhYmxlZCIpOwogCisjIFNldCBu b24tc3RhbmRhcmQgaW5pdGlhbCBteGlkL214b2ZmL3hpZC4KK2NvbW1hbmRfZmFpbHNfbGlrZSgK KwlbICdpbml0ZGInLCAnLW0nLCAnc2V2ZW4nLCAkZGF0YWRpciBdLAorCXFyL2luaXRkYjogZXJy b3I6IGludmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZC8sCisJJ2Zh aWxzIGZvciBpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3QgaWQnKTsK K2NvbW1hbmRfZmFpbHNfbGlrZSgKKwlbICdpbml0ZGInLCAnLW8nLCAnc2V2ZW4nLCAkZGF0YWRp ciBdLAorCXFyL2luaXRkYjogZXJyb3I6IGludmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVy IG11bHRpeGFjdCBvZmZzZXQvLAorCSdmYWlscyBmb3IgaW52YWxpZCBpbml0aWFsIGRhdGFiYXNl IGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldCcpOworY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ2lu aXRkYicsICcteCcsICdzZXZlbicsICRkYXRhZGlyIF0sCisJcXIvaW5pdGRiOiBlcnJvcjogaW52 YWxpZCB2YWx1ZSBmb3IgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZC8sCisJJ2ZhaWxzIGZv ciBpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWQnKTsKKworY29tbWFuZF9jaGVj a3NfYWxsKAorCVsgJ2luaXRkYicsICctbScsICc2NTUzNScsICIkdGVtcGRpci9kYXRhLW02NTUz NSIgXSwKKwkwLAorCVtxci9zZWxlY3RpbmcgaW5pdGlhbCBtdWx0aXhhY3QgaWQgLi4uIDY1NTM1 L10sCisJW10sCisJJ3NlbGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBpZCcpOworY29tbWFuZF9j aGVja3NfYWxsKAorCVsgJ2luaXRkYicsICctbycsICc2NTUzNScsICIkdGVtcGRpci9kYXRhLW82 NTUzNSIgXSwKKwkwLAorCVtxci9zZWxlY3RpbmcgaW5pdGlhbCBtdWx0aXhhY3Qgb2Zmc2V0IC4u LiA2NTUzNS9dLAorCVtdLAorCSdzZWxlY3RpbmcgaW5pdGlhbCBtdWx0aXhhY3Qgb2Zmc2V0Jyk7 Citjb21tYW5kX2NoZWNrc19hbGwoCisJWyAnaW5pdGRiJywgJy14JywgJzY1NTM1JywgIiR0ZW1w ZGlyL2RhdGEteDY1NTM1IiBdLAorCTAsCisJW3FyL3NlbGVjdGluZyBpbml0aWFsIHhpZCAuLi4g NjU1MzUvXSwKKwlbXSwKKwknc2VsZWN0aW5nIGluaXRpYWwgeGlkJyk7CisKKyMgU2V0dXAgbmV3 IGNsdXN0ZXIgd2l0aCBnaXZlbiBteGlkL214b2ZmL3hpZC4KK215ICRub2RlOworbXkgJHJlc3Vs dDsKKworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3Rlc3QtbXhpZCcp OworJG5vZGUtPmluaXQoZXh0cmEgPT4gWyctbScsICcxNjc3NzIxNSddKTsgIyAweEZGRkZGRgor JG5vZGUtPnN0YXJ0OworJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBuZXh0X211bHRpeGFjdF9pZCBGUk9NIHBnX2NvbnRyb2xfY2hlY2twb2ludCgpOyIpOwor b2soJHJlc3VsdCA+PSAxNjc3NzIxNSwgJ3NldHVwIGNsdXN0ZXIgd2l0aCBnaXZlbiBteGlkJyk7 Ciskbm9kZS0+c3RvcDsKKworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3Rlc3QtbXhvZmYnKTsKKyRub2RlLT5pbml0KGV4dHJhID0+IFsnLW8nLCAnMTY3NzcyMTUnXSk7 ICMgMHhGRkZGRkYKKyRub2RlLT5zdGFydDsKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgbmV4dF9tdWx0aV9vZmZzZXQgRlJPTSBwZ19jb250cm9sX2NoZWNr cG9pbnQoKTsiKTsKK29rKCRyZXN1bHQgPj0gMTY3NzcyMTUsICdzZXR1cCBjbHVzdGVyIHdpdGgg Z2l2ZW4gbXhvZmYnKTsKKyRub2RlLT5zdG9wOworCiskbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygndGVzdC14aWQnKTsKKyRub2RlLT5pbml0KGV4dHJhID0+IFsnLXgnLCAn MTY3NzcyMTUnXSk7ICMgMHhGRkZGRkYKKyRub2RlLT5zdGFydDsKKyRyZXN1bHQgPSAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgdHhpZF9jdXJyZW50KCk7Iik7CitvaygkcmVz dWx0ID49IDE2Nzc3MjE1LCAnc2V0dXAgY2x1c3RlciB3aXRoIGdpdmVuIHhpZCAtIGNoZWNrIDEn KTsKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qgb2xkZXN0 X3hpZCBGUk9NIHBnX2NvbnRyb2xfY2hlY2twb2ludCgpOyIpOworb2soJHJlc3VsdCA+PSAxNjc3 NzIxNSwgJ3NldHVwIGNsdXN0ZXIgd2l0aCBnaXZlbiB4aWQgLSBjaGVjayAyJyk7Ciskbm9kZS0+ c3RvcDsKKwogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCA0NDExYzE0NjhhLi44ZWIz NDg0NmRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy94bG9nLmgKQEAgLTk0LDYgKzk0LDkgQEAgdHlwZWRlZiBlbnVtIFJlY292 ZXJ5U3RhdGUKIH0gUmVjb3ZlcnlTdGF0ZTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCB3YWxf bGV2ZWw7CitleHRlcm4gUEdETExJTVBPUlQgVHJhbnNhY3Rpb25JZCBzdGFydF94aWQ7CitleHRl cm4gUEdETExJTVBPUlQgTXVsdGlYYWN0SWQgc3RhcnRfbXhpZDsKK2V4dGVybiBQR0RMTElNUE9S VCBNdWx0aVhhY3RPZmZzZXQgc3RhcnRfbXhvZmY7CiAKIC8qIElzIFdBTCBhcmNoaXZpbmcgZW5h YmxlZCAoYWx3YXlzIG9yIG9ubHkgd2hpbGUgc2VydmVyIGlzIHJ1bm5pbmcgbm9ybWFsbHkpPyAq LwogI2RlZmluZSBYTG9nQXJjaGl2aW5nQWN0aXZlKCkgXApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYy5oIGIvc3JjL2luY2x1ZGUvYy5oCmluZGV4IDMxODE5NGY3OGQuLjRmMmI1NDMyZTUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTYyMiw2 ICs2MjIsMTAgQEAgdHlwZWRlZiB1aW50NjQgTXVsdGlYYWN0T2Zmc2V0OwogCiB0eXBlZGVmIHVp bnQzMiBDb21tYW5kSWQ7CiAKKyNkZWZpbmUgU3RhcnRUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQp CQkJKCh4aWQpIDw9IDB4RkZGRkZGRkYpCisjZGVmaW5lIFN0YXJ0TXVsdGlYYWN0SWRJc1ZhbGlk KG14aWQpCQkJKChteGlkKSA8PSAweEZGRkZGRkZGKQorI2RlZmluZSBTdGFydE11bHRpWGFjdE9m ZnNldElzVmFsaWQob2Zmc2V0KQkJKChvZmZzZXQpIDw9IDB4RkZGRkZGRkYpCisKICNkZWZpbmUg Rmlyc3RDb21tYW5kSWQJKChDb21tYW5kSWQpIDApCiAjZGVmaW5lIEludmFsaWRDb21tYW5kSWQJ KH4oQ29tbWFuZElkKTApCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xh c3MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaAppbmRleCBmMGQ2MTJjYTQ4Li41 YzYzMjkwYTcyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCkBAIC0xMjMsNyArMTIzLDcgQEAgQ0FU QUxPRyhwZ19jbGFzcywxMjU5LFJlbGF0aW9uUmVsYXRpb25JZCkgQktJX0JPT1RTVFJBUCBCS0lf Uk9XVFlQRV9PSUQoODMsUmVsYXQKIAlPaWQJCQlyZWxyZXdyaXRlIEJLSV9ERUZBVUxUKDApIEJL SV9MT09LVVBfT1BUKHBnX2NsYXNzKTsKIAogCS8qIGFsbCBYaWRzIDwgdGhpcyBhcmUgZnJvemVu IGluIHRoaXMgcmVsICovCi0JVHJhbnNhY3Rpb25JZCByZWxmcm96ZW54aWQgQktJX0RFRkFVTFQo Myk7CS8qIEZpcnN0Tm9ybWFsVHJhbnNhY3Rpb25JZCAqLworCVRyYW5zYWN0aW9uSWQgcmVsZnJv emVueGlkIEJLSV9ERUZBVUxUKFJFQ0VOVFhNSU4pOwkvKiBGaXJzdE5vcm1hbFRyYW5zYWN0aW9u SWQgKi8KIAogCS8qIGFsbCBtdWx0aXhhY3RzIGluIHRoaXMgcmVsIGFyZSA+PSB0aGlzOyBpdCBp cyByZWFsbHkgYSBNdWx0aVhhY3RJZCAqLwogCVRyYW5zYWN0aW9uSWQgcmVsbWlubXhpZCBCS0lf REVGQVVMVCgxKTsJLyogRmlyc3RNdWx0aVhhY3RJZCAqLwotLSAKMi40My4wCgo= --000000000000eb7646062bd2d2d1 Content-Type: application/octet-stream; name="v12-0006-TEST-try-to-replicate-buggy-oldest-offset.patch" Content-Disposition: attachment; filename="v12-0006-TEST-try-to-replicate-buggy-oldest-offset.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5zczs9c5 RnJvbSA3MTgzZTdkMjU2YWIzNWNkMGVmNmEyYTdkNWY5YzFkNGZmMDAxZjcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IEZyaSwgMjcgRGVjIDIwMjQgMTk6Mzk6NTggKzAzMDAKU3ViamVjdDogW1BBVENIIHYxMiA2Lzdd IFRFU1Q6IHRyeSB0byByZXBsaWNhdGUgYnVnZ3kgb2xkZXN0IG9mZnNldAoKLS0tCiBzcmMvYmlu L3BnX3VwZ3JhZGUvdC8wMDVfb2Zmc2V0LnBsIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQucGwgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8w MDVfb2Zmc2V0LnBsCmluZGV4IGRmODQxODZkZTQuLjJkOTFkMTAxZmEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQucGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRl L3QvMDA1X29mZnNldC5wbApAQCAtMzA1LDYgKzMwNSw4IEBAIG15IEBURVNUUyA9ICgKIAkxMDAs IDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsCiAJIyBzZWxmIHVwZ3JhZGUKIAkxMDAwLAor CSMgYnVnZ3kKKwkyMDAwCiApOwogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC01NjAsNCAr NTYyLDYxIEBAIFNLSVA6CiAJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7CiB9CiAKKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKyMgQnVnZ3kKKyMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor U0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDIwMDA7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAk VEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOwor CisJaWYgKCFkZWZpbmVkKCRFTlZ7b2xkaW5zdGFsbH0pKQorCXsKKwkJZGllICJvbGRpbnN0YWxs IGlzIG5vdCBkZWZpbmVkIjsKKwl9CisKKwlteSAkZGJuYW1lID0gJ2J1Z2d5JzsKKwlteSAkbmV3 bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygibmV3XyRkYm5hbWUiKTsKKwlt eSAkb2xkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygib2xkXyRkYm5hbWUi LAorCQkJCQlpbnN0YWxsX3BhdGggPT4gJEVOVntvbGRpbnN0YWxsfSk7CisJJG5ld25vZGUtPmlu aXQ7CisJJG9sZG5vZGUtPmluaXQoZm9yY2VfaW5pdGRiID0+IDEpOworCisJJG9sZG5vZGUtPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxKAorCQlhdXRvdmFjdXVtID0gb2ZmCisJCW1h eF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgPSAyCisJCWZzeW5jID0gb2ZmCisJKSk7CisJJG9sZG5v ZGUtPnN0YXJ0OworCisJbXhpZF9nZW4yKCRvbGRub2RlLCAnRk9PJywgMS4yNSk7CisJbXhpZF9n ZW4yKCRvbGRub2RlLCAnQkFSJywgMS4yNSk7CisKKwkkb2xkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHEoCisJCURST1AgVEFCTEUgQkFSOworCQlDSEVDS1BPSU5UOworCSkpOworCSRvbGRu b2RlLT5zdG9wOworCisJdW5saW5rKCRvbGRub2RlLT5kYXRhX2RpciAuICIvcGdfbXVsdGl4YWN0 L29mZnNldHMvMDAwMCIpOworCisJY29tbWFuZF9vaygKKwkJWworCQkJJ3BnX3VwZ3JhZGUnLCAn LS1uby1zeW5jJywKKwkJCSctZCcsICRvbGRub2RlLT5kYXRhX2RpciwKKwkJCSctRCcsICRuZXdu b2RlLT5kYXRhX2RpciwKKwkJCSctYicsICRvbGRub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXIn KSwKKwkJCSctQicsICRuZXdub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXInKSwKKwkJCSctcycs ICRuZXdub2RlLT5ob3N0LAorCQkJJy1wJywgJG9sZG5vZGUtPnBvcnQsCisJCQknLVAnLCAkbmV3 bm9kZS0+cG9ydCwKKwkJCSctLWNvcHknCisJCV0sCisJCSdydW4gb2YgcGdfdXBncmFkZScpOwor CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisKIGRvbmVfdGVzdGluZygpOwot LSAKMi40My4wCgo= --000000000000eb7646062bd2d2d1--