Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nonHA-0002lV-5l for pgsql-hackers@arkaria.postgresql.org; Wed, 11 May 2022 14:25:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nonH8-0001Kb-G9 for pgsql-hackers@arkaria.postgresql.org; Wed, 11 May 2022 14:25:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nonH6-0001KC-Ua for pgsql-hackers@lists.postgresql.org; Wed, 11 May 2022 14:25:14 +0000 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nonGx-0002us-K0 for pgsql-hackers@postgresql.org; Wed, 11 May 2022 14:25:09 +0000 Received: by mail-ot1-x32c.google.com with SMTP id m15-20020a9d608f000000b00606a788887aso563806otj.0 for ; Wed, 11 May 2022 07:25:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=mime-version:from:date:message-id:subject:to; bh=U/xynn8HM7/OoBL9+hVSp26ydQJkg6RtEh2hD3pq7nE=; b=WrVmYzTBLov/oY2/w4WZvvwJe4VKGs+bf5/7EqHy6mkSbBvP+4RutW6qlwccX8mRFP NP8Hm6Ntah1AOI3a26qaxvWb9JdBbRBDJci2PpHKU6/M8wa11aHiB5RSN8p+WFJWsou8 Fd2kU/w/KIDDcM/aWYH3r+JHmupe+Odj2eVPsnDxY0a2HKhFeGGjlY4QqUFqZ+QYgcbi ewdiWc0Igl0K76gNrW4odn3QScxW1GnqUN3MFNSyMihPpzY8hCAA31+/IKEnjmf77Mnb PFGg2dbH3Uvj1z5wvT9CuFhGy8P2tji7Tw1LSD8niAppaIRWi/IJpDHQtHigZJfo4qD6 j4vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=U/xynn8HM7/OoBL9+hVSp26ydQJkg6RtEh2hD3pq7nE=; b=42Z144MtmVQmkJy8z2Lwbtq6lRUJeaKQ9JiHDqy/iHfVl+oMrICLZf99DPWtugLbLl TuV1f6cc4JLSZ4C0Dl2ugrbwujwZ4ZQOOEjateClkitgU6yMwXq99tNTrNiJW4VWL6T/ z05dFDqX4xIGiyDZokiyVhN8L7J3Y3nQWcqGUocZthrSCXk4Upw+BkLHq33urhp1Mowf imnp5GIfnl7Y5KHkuirkP71SNeekQXXP+y2jCCNSfKemB6XqxPC1wlXfBEhuJ3vX+pAP T7IVt/XaAiHlPvtjCqITbniZYlT0yMpOr5lIzluEjwWpmODvcU1P9pQhgt4H8sqaRObB aMxA== X-Gm-Message-State: AOAM532jvZ15Hv9kjR7byEaGU1bhm+YpEFQVG9KG6uB3YcUc8+xmaz4v i16HQtpCyvKXXIZ43gEEWE7xVKu3ci7TfDAJrhM73p/1U0Ti23/0PRjFRXmwhTKsx0yQuWeMJ5z F+04WN8G/Ulte1epw3l7f5aUAhc7QncftdZXeGwGJ+YnUxPjjwWO5tCN3UVRjskxiaoUWDtM+4A qHVE2bJoVP8lYzt1PBPL9iCT90GlLiscP7uVOHgB1Rnms4ey9n9DIQ X-Google-Smtp-Source: ABdhPJxuMkihFVFlb5Bt4N7KVQCT1pMJG3UmgmUvF0GD9JA4BtU527KoLHG3DMX55A1CGBOCv/q9BVTk4Vb9ija+6OU= X-Received: by 2002:a9d:20e2:0:b0:5c9:2edb:af8e with SMTP id x89-20020a9d20e2000000b005c92edbaf8emr10089312ota.325.1652279102572; Wed, 11 May 2022 07:25:02 -0700 (PDT) MIME-Version: 1.0 From: Simon Riggs Date: Wed, 11 May 2022 15:24:51 +0100 Message-ID: Subject: Comments on Custom RMGRs To: Jeff Davis , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000fac17805debd3420" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fac17805debd3420 Content-Type: text/plain; charset="UTF-8" New rmgr stuff looks interesting. I've had a detailed look through it and tried to think about how it might be used in practice. Spotted a minor comment that needs adjustment for new methods... [PATCH: rmgr_001.v1.patch] I notice rm_startup() and rm_cleanup() presume that this only works in recovery. If recovery is "not needed", there is no way to run anything at all, which seems wrong because how do we know that? I would prefer it if rm_startup() and rm_cleanup() were executed in all cases. Only 4 builtin index rmgrs have these anyway, and they are all quick, so I suggest we run them always. This allows a greater range of startup behavior for rmgrs. [PATCH: rmgr_002.v1.patch] It occurs to me that any use of WAL presumes that Checkpoints exist and do something useful. However, the custom rmgr interface doesn't allow you to specify any actions on checkpoint, so ends up being limited in scope. So I think we also need an rm_checkpoint() call - which would be a no-op for existing rmgrs. [PATCH: rmgr_003.v1.patch] The above turns out to be fairly simple, but extends the API to something truly flexible. Please let me know what you think? -- Simon Riggs http://www.EnterpriseDB.com/ --000000000000fac17805debd3420 Content-Type: application/octet-stream; name="rmgr_002.v1.patch" Content-Disposition: attachment; filename="rmgr_002.v1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l31o8pqc2 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggMzllZjg2NWVk OS4uZDY3YmUyZmE1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Z3JlY292ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMKQEAgLTE2MjYsMTYgKzE2MjYsMTcgQEAgUGVyZm9ybVdhbFJlY292ZXJ5KHZvaWQpCiAJfQog CiAJaWYgKHJlY29yZCAhPSBOVUxMKQorCQlJblJlZG8gPSB0cnVlOworCisJUm1nclN0YXJ0dXAo KTsKKworCWlmIChJblJlZG8pCiAJewogCQlUaW1lc3RhbXBUeiB4dGltZTsKIAkJUEdSVXNhZ2UJ cnUwOwogCiAJCXBnX3J1c2FnZV9pbml0KCZydTApOwogCi0JCUluUmVkbyA9IHRydWU7Ci0KLQkJ Um1nclN0YXJ0dXAoKTsKLQogCQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNnKCJyZWRvIHN0YXJ0 cyBhdCAlWC8lWCIsCiAJCQkJCQlMU05fRk9STUFUX0FSR1MoeGxvZ3JlYWRlci0+UmVhZFJlY1B0 cikpKSk7CkBAIC0xNzcxLDggKzE3NzIsNiBAQCBQZXJmb3JtV2FsUmVjb3Zlcnkodm9pZCkKIAkJ CX0KIAkJfQogCi0JCVJtZ3JDbGVhbnVwKCk7Ci0KIAkJZXJlcG9ydChMT0csCiAJCQkJKGVycm1z ZygicmVkbyBkb25lIGF0ICVYLyVYIHN5c3RlbSB1c2FnZTogJXMiLAogCQkJCQkJTFNOX0ZPUk1B VF9BUkdTKHhsb2dyZWFkZXItPlJlYWRSZWNQdHIpLApAQCAtMTc5Miw2ICsxNzkxLDggQEAgUGVy Zm9ybVdhbFJlY292ZXJ5KHZvaWQpCiAJCQkJKGVycm1zZygicmVkbyBpcyBub3QgcmVxdWlyZWQi KSkpOwogCX0KIAorCVJtZ3JDbGVhbnVwKCk7CisKIAkvKgogCSAqIFRoaXMgY2hlY2sgaXMgaW50 ZW50aW9uYWxseSBhZnRlciB0aGUgYWJvdmUgbG9nIG1lc3NhZ2VzIHRoYXQgaW5kaWNhdGUKIAkg KiBob3cgZmFyIHJlY292ZXJ5IHdlbnQuCg== --000000000000fac17805debd3420 Content-Type: application/octet-stream; name="rmgr_001.v1.patch" Content-Disposition: attachment; filename="rmgr_001.v1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l31o8ppb0 ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3JtZ3JsaXN0LmgKaW5kZXggOWE3NDcyMWM5Ny4uMDAwYmNiZmRhZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3JtZ3JsaXN0LmgKQEAgLTI0LDcgKzI0LDcgQEAKICAqIENoYW5nZXMgdG8gdGhpcyBsaXN0IHBv c3NpYmx5IG5lZWQgYW4gWExPR19QQUdFX01BR0lDIGJ1bXAuCiAgKi8KIAotLyogc3ltYm9sIG5h bWUsIHRleHR1YWwgbmFtZSwgcmVkbywgZGVzYywgaWRlbnRpZnksIHN0YXJ0dXAsIGNsZWFudXAg Ki8KKy8qIHN5bWJvbCBuYW1lLCB0ZXh0dWFsIG5hbWUsIHJlZG8sIGRlc2MsIGlkZW50aWZ5LCBz dGFydHVwLCBjbGVhbnVwLCBtYXNrLCBkZWNvZGUgKi8KIFBHX1JNR1IoUk1fWExPR19JRCwgIlhM T0ciLCB4bG9nX3JlZG8sIHhsb2dfZGVzYywgeGxvZ19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVM TCwgeGxvZ19kZWNvZGUpCiBQR19STUdSKFJNX1hBQ1RfSUQsICJUcmFuc2FjdGlvbiIsIHhhY3Rf cmVkbywgeGFjdF9kZXNjLCB4YWN0X2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCB4YWN0X2Rl Y29kZSkKIFBHX1JNR1IoUk1fU01HUl9JRCwgIlN0b3JhZ2UiLCBzbWdyX3JlZG8sIHNtZ3JfZGVz Yywgc21ncl9pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkK --000000000000fac17805debd3420 Content-Type: application/octet-stream; name="rmgr_003.v1.patch" Content-Disposition: attachment; filename="rmgr_003.v1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l31o8ppw1 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3IuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3IuYwppbmRleCBlMWQ2ZWJiZDNkLi4zNmQ5Y2ZkZTdlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9ybWdyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcm1nci5jCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSAi dXRpbHMvcmVsbWFwcGVyLmgiCiAKIC8qIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggUm1nckRh dGEgZGVmaW5pdGlvbiBpbiB4bG9nX2ludGVybmFsLmggKi8KLSNkZWZpbmUgUEdfUk1HUihzeW1u YW1lLG5hbWUscmVkbyxkZXNjLGlkZW50aWZ5LHN0YXJ0dXAsY2xlYW51cCxtYXNrLGRlY29kZSkg XAotCXsgbmFtZSwgcmVkbywgZGVzYywgaWRlbnRpZnksIHN0YXJ0dXAsIGNsZWFudXAsIG1hc2ss IGRlY29kZSB9LAorI2RlZmluZSBQR19STUdSKHN5bW5hbWUsbmFtZSxyZWRvLGRlc2MsaWRlbnRp Znksc3RhcnR1cCxjbGVhbnVwLG1hc2ssZGVjb2RlLGNoZWNrcG9pbnQpIFwKKwl7IG5hbWUsIHJl ZG8sIGRlc2MsIGlkZW50aWZ5LCBzdGFydHVwLCBjbGVhbnVwLCBtYXNrLCBkZWNvZGUsIGNoZWNr cG9pbnQgfSwKIAogUm1nckRhdGEgUm1nclRhYmxlW1JNX01BWF9JRCArIDFdID0gewogI2luY2x1 ZGUgImFjY2Vzcy9ybWdybGlzdC5oIgpAQCAtNzQsNiArNzQsMjIgQEAgUm1nckNsZWFudXAodm9p ZCkKIAl9CiB9CiAKKy8qCisgKiBDaGVja3BvaW50IGFsbCByZXNvdXJjZSBtYW5hZ2Vycy4KKyAq Lwordm9pZAorUm1nckNoZWNrcG9pbnQodm9pZCkKK3sKKwlmb3IgKGludCBybWlkID0gMDsgcm1p ZCA8PSBSTV9NQVhfSUQ7IHJtaWQrKykKKwl7CisJCWlmICghUm1ncklkRXhpc3RzKHJtaWQpKQor CQkJY29udGludWU7CisKKwkJaWYgKFJtZ3JUYWJsZVtybWlkXS5ybV9jaGVja3BvaW50ICE9IE5V TEwpCisJCQlSbWdyVGFibGVbcm1pZF0ucm1fY2hlY2twb2ludCgpOworCX0KK30KKwogLyoKICAq IEVtaXQgRVJST1Igd2hlbiB3ZSBlbmNvdW50ZXIgYSByZWNvcmQgd2l0aCBhbiBSbWdySWQgd2Ug ZG9uJ3QKICAqIHJlY29nbml6ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCAzNjg1 MmYyMzI3Li40M2EwZmMwOWZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC02ODQz LDYgKzY4NDMsOSBAQCBDaGVja1BvaW50R3V0cyhYTG9nUmVjUHRyIGNoZWNrUG9pbnRSZWRvLCBp bnQgZmxhZ3MpCiAJQ2hlY2tQb2ludFNVQlRSQU5TKCk7CiAJQ2hlY2tQb2ludE11bHRpWGFjdCgp OwogCUNoZWNrUG9pbnRQcmVkaWNhdGUoKTsKKworCVJtZ3JDaGVja3BvaW50KCk7CisKIAlDaGVj a1BvaW50QnVmZmVycyhmbGFncyk7CiAKIAkvKiBQZXJmb3JtIGFsbCBxdWV1ZWQgdXAgZnN5bmNz ICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9wYXJzZXhsb2cuYyBiL3NyYy9iaW4v cGdfcmV3aW5kL3BhcnNleGxvZy5jCmluZGV4IGM2NzkyZGFmYWUuLmQ4NjQyNmZkZjAgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL3BhcnNleGxvZy5jCisrKyBiL3NyYy9iaW4vcGdfcmV3 aW5kL3BhcnNleGxvZy5jCkBAIC0yOCw3ICsyOCw3IEBACiAgKiBSbWdyTmFtZXMgaXMgYW4gYXJy YXkgb2YgdGhlIGJ1aWx0LWluIHJlc291cmNlIG1hbmFnZXIgbmFtZXMsIHRvIG1ha2UgZXJyb3IK ICAqIG1lc3NhZ2VzIGEgYml0IG5pY2VyLgogICovCi0jZGVmaW5lIFBHX1JNR1Ioc3ltbmFtZSxu YW1lLHJlZG8sZGVzYyxpZGVudGlmeSxzdGFydHVwLGNsZWFudXAsbWFzayxkZWNvZGUpIFwKKyNk ZWZpbmUgUEdfUk1HUihzeW1uYW1lLG5hbWUscmVkbyxkZXNjLGlkZW50aWZ5LHN0YXJ0dXAsY2xl YW51cCxtYXNrLGRlY29kZSxjaGVja3BvaW50KSBcCiAgIG5hbWUsCiAKIHN0YXRpYyBjb25zdCBj aGFyICpSbWdyTmFtZXNbUk1fTUFYX0lEICsgMV0gPSB7CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X3dhbGR1bXAvcm1ncmRlc2MuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9ybWdyZGVzYy5jCmluZGV4 IDZiOGMxN2JiNGMuLjJiYjViYThjOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9y bWdyZGVzYy5jCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9ybWdyZGVzYy5jCkBAIC0zMiw3ICsz Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5ZGVmcy5oIgogI2luY2x1ZGUgInV0aWxz L3JlbG1hcHBlci5oIgogCi0jZGVmaW5lIFBHX1JNR1Ioc3ltbmFtZSxuYW1lLHJlZG8sZGVzYyxp ZGVudGlmeSxzdGFydHVwLGNsZWFudXAsbWFzayxkZWNvZGUpIFwKKyNkZWZpbmUgUEdfUk1HUihz eW1uYW1lLG5hbWUscmVkbyxkZXNjLGlkZW50aWZ5LHN0YXJ0dXAsY2xlYW51cCxtYXNrLGRlY29k ZSxjaGVja3BvaW50KSBcCiAJeyBuYW1lLCBkZXNjLCBpZGVudGlmeX0sCiAKIHN0YXRpYyBjb25z dCBSbWdyRGVzY0RhdGEgUm1nckRlc2NUYWJsZVtSTV9OX0JVSUxUSU5fSURTXSA9IHsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdyLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1n ci5oCmluZGV4IGU0NjU4MDBlNDQuLmU4MWE1OTc0MWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9ybWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3IuaApAQCAtMTksNyAr MTksNyBAQCB0eXBlZGVmIHVpbnQ4IFJtZ3JJZDsKICAqIE5vdGU6IFJNX01BWF9JRCBtdXN0IGZp dCBpbiBSbWdySWQ7IHdpZGVuaW5nIHRoYXQgdHlwZSB3aWxsIGFmZmVjdCB0aGUgWExPRwogICog ZmlsZSBmb3JtYXQuCiAgKi8KLSNkZWZpbmUgUEdfUk1HUihzeW1uYW1lLG5hbWUscmVkbyxkZXNj LGlkZW50aWZ5LHN0YXJ0dXAsY2xlYW51cCxtYXNrLGRlY29kZSkgXAorI2RlZmluZSBQR19STUdS KHN5bW5hbWUsbmFtZSxyZWRvLGRlc2MsaWRlbnRpZnksc3RhcnR1cCxjbGVhbnVwLG1hc2ssZGVj b2RlLGNoZWNrcG9pbnQpIFwKIAlzeW1uYW1lLAogCiB0eXBlZGVmIGVudW0gUm1ncklkcwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmggYi9zcmMvaW5jbHVkZS9hY2Nl c3Mvcm1ncmxpc3QuaAppbmRleCA5YTc0NzIxYzk3Li41ZGE4MTRiYzkwIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1n cmxpc3QuaApAQCAtMjUsMjUgKzI1LDI1IEBACiAgKi8KIAogLyogc3ltYm9sIG5hbWUsIHRleHR1 YWwgbmFtZSwgcmVkbywgZGVzYywgaWRlbnRpZnksIHN0YXJ0dXAsIGNsZWFudXAgKi8KLVBHX1JN R1IoUk1fWExPR19JRCwgIlhMT0ciLCB4bG9nX3JlZG8sIHhsb2dfZGVzYywgeGxvZ19pZGVudGlm eSwgTlVMTCwgTlVMTCwgTlVMTCwgeGxvZ19kZWNvZGUpCi1QR19STUdSKFJNX1hBQ1RfSUQsICJU cmFuc2FjdGlvbiIsIHhhY3RfcmVkbywgeGFjdF9kZXNjLCB4YWN0X2lkZW50aWZ5LCBOVUxMLCBO VUxMLCBOVUxMLCB4YWN0X2RlY29kZSkKLVBHX1JNR1IoUk1fU01HUl9JRCwgIlN0b3JhZ2UiLCBz bWdyX3JlZG8sIHNtZ3JfZGVzYywgc21ncl9pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCkKLVBHX1JNR1IoUk1fQ0xPR19JRCwgIkNMT0ciLCBjbG9nX3JlZG8sIGNsb2dfZGVzYywgY2xv Z19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKLVBHX1JNR1IoUk1fREJBU0VfSUQs ICJEYXRhYmFzZSIsIGRiYXNlX3JlZG8sIGRiYXNlX2Rlc2MsIGRiYXNlX2lkZW50aWZ5LCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMKQotUEdfUk1HUihSTV9UQkxTUENfSUQsICJUYWJsZXNwYWNlIiwg dGJsc3BjX3JlZG8sIHRibHNwY19kZXNjLCB0YmxzcGNfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEwpCi1QR19STUdSKFJNX01VTFRJWEFDVF9JRCwgIk11bHRpWGFjdCIsIG11bHRpeGFj dF9yZWRvLCBtdWx0aXhhY3RfZGVzYywgbXVsdGl4YWN0X2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMKQotUEdfUk1HUihSTV9SRUxNQVBfSUQsICJSZWxNYXAiLCByZWxtYXBfcmVkbywg cmVsbWFwX2Rlc2MsIHJlbG1hcF9pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKLVBH X1JNR1IoUk1fU1RBTkRCWV9JRCwgIlN0YW5kYnkiLCBzdGFuZGJ5X3JlZG8sIHN0YW5kYnlfZGVz Yywgc3RhbmRieV9pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgc3RhbmRieV9kZWNvZGUpCi1Q R19STUdSKFJNX0hFQVAyX0lELCAiSGVhcDIiLCBoZWFwMl9yZWRvLCBoZWFwMl9kZXNjLCBoZWFw Ml9pZGVudGlmeSwgTlVMTCwgTlVMTCwgaGVhcF9tYXNrLCBoZWFwMl9kZWNvZGUpCi1QR19STUdS KFJNX0hFQVBfSUQsICJIZWFwIiwgaGVhcF9yZWRvLCBoZWFwX2Rlc2MsIGhlYXBfaWRlbnRpZnks IE5VTEwsIE5VTEwsIGhlYXBfbWFzaywgaGVhcF9kZWNvZGUpCi1QR19STUdSKFJNX0JUUkVFX0lE LCAiQnRyZWUiLCBidHJlZV9yZWRvLCBidHJlZV9kZXNjLCBidHJlZV9pZGVudGlmeSwgYnRyZWVf eGxvZ19zdGFydHVwLCBidHJlZV94bG9nX2NsZWFudXAsIGJ0cmVlX21hc2ssIE5VTEwpCi1QR19S TUdSKFJNX0hBU0hfSUQsICJIYXNoIiwgaGFzaF9yZWRvLCBoYXNoX2Rlc2MsIGhhc2hfaWRlbnRp ZnksIE5VTEwsIE5VTEwsIGhhc2hfbWFzaywgTlVMTCkKLVBHX1JNR1IoUk1fR0lOX0lELCAiR2lu IiwgZ2luX3JlZG8sIGdpbl9kZXNjLCBnaW5faWRlbnRpZnksIGdpbl94bG9nX3N0YXJ0dXAsIGdp bl94bG9nX2NsZWFudXAsIGdpbl9tYXNrLCBOVUxMKQotUEdfUk1HUihSTV9HSVNUX0lELCAiR2lz dCIsIGdpc3RfcmVkbywgZ2lzdF9kZXNjLCBnaXN0X2lkZW50aWZ5LCBnaXN0X3hsb2dfc3RhcnR1 cCwgZ2lzdF94bG9nX2NsZWFudXAsIGdpc3RfbWFzaywgTlVMTCkKLVBHX1JNR1IoUk1fU0VRX0lE LCAiU2VxdWVuY2UiLCBzZXFfcmVkbywgc2VxX2Rlc2MsIHNlcV9pZGVudGlmeSwgTlVMTCwgTlVM TCwgc2VxX21hc2ssIE5VTEwpCi1QR19STUdSKFJNX1NQR0lTVF9JRCwgIlNQR2lzdCIsIHNwZ19y ZWRvLCBzcGdfZGVzYywgc3BnX2lkZW50aWZ5LCBzcGdfeGxvZ19zdGFydHVwLCBzcGdfeGxvZ19j bGVhbnVwLCBzcGdfbWFzaywgTlVMTCkKLVBHX1JNR1IoUk1fQlJJTl9JRCwgIkJSSU4iLCBicmlu X3JlZG8sIGJyaW5fZGVzYywgYnJpbl9pZGVudGlmeSwgTlVMTCwgTlVMTCwgYnJpbl9tYXNrLCBO VUxMKQotUEdfUk1HUihSTV9DT01NSVRfVFNfSUQsICJDb21taXRUcyIsIGNvbW1pdF90c19yZWRv LCBjb21taXRfdHNfZGVzYywgY29tbWl0X3RzX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMKQotUEdfUk1HUihSTV9SRVBMT1JJR0lOX0lELCAiUmVwbGljYXRpb25PcmlnaW4iLCByZXBs b3JpZ2luX3JlZG8sIHJlcGxvcmlnaW5fZGVzYywgcmVwbG9yaWdpbl9pZGVudGlmeSwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTCkKLVBHX1JNR1IoUk1fR0VORVJJQ19JRCwgIkdlbmVyaWMiLCBnZW5l cmljX3JlZG8sIGdlbmVyaWNfZGVzYywgZ2VuZXJpY19pZGVudGlmeSwgTlVMTCwgTlVMTCwgZ2Vu ZXJpY19tYXNrLCBOVUxMKQotUEdfUk1HUihSTV9MT0dJQ0FMTVNHX0lELCAiTG9naWNhbE1lc3Nh Z2UiLCBsb2dpY2FsbXNnX3JlZG8sIGxvZ2ljYWxtc2dfZGVzYywgbG9naWNhbG1zZ19pZGVudGlm eSwgTlVMTCwgTlVMTCwgTlVMTCwgbG9naWNhbG1zZ19kZWNvZGUpCitQR19STUdSKFJNX1hMT0df SUQsICJYTE9HIiwgeGxvZ19yZWRvLCB4bG9nX2Rlc2MsIHhsb2dfaWRlbnRpZnksIE5VTEwsIE5V TEwsIE5VTEwsIHhsb2dfZGVjb2RlLCBOVUxMKQorUEdfUk1HUihSTV9YQUNUX0lELCAiVHJhbnNh Y3Rpb24iLCB4YWN0X3JlZG8sIHhhY3RfZGVzYywgeGFjdF9pZGVudGlmeSwgTlVMTCwgTlVMTCwg TlVMTCwgeGFjdF9kZWNvZGUsIE5VTEwpCitQR19STUdSKFJNX1NNR1JfSUQsICJTdG9yYWdlIiwg c21ncl9yZWRvLCBzbWdyX2Rlc2MsIHNtZ3JfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEwpCitQR19STUdSKFJNX0NMT0dfSUQsICJDTE9HIiwgY2xvZ19yZWRvLCBjbG9nX2Rl c2MsIGNsb2dfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpCitQR19STUdS KFJNX0RCQVNFX0lELCAiRGF0YWJhc2UiLCBkYmFzZV9yZWRvLCBkYmFzZV9kZXNjLCBkYmFzZV9p ZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKK1BHX1JNR1IoUk1fVEJMU1BD X0lELCAiVGFibGVzcGFjZSIsIHRibHNwY19yZWRvLCB0YmxzcGNfZGVzYywgdGJsc3BjX2lkZW50 aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQorUEdfUk1HUihSTV9NVUxUSVhBQ1Rf SUQsICJNdWx0aVhhY3QiLCBtdWx0aXhhY3RfcmVkbywgbXVsdGl4YWN0X2Rlc2MsIG11bHRpeGFj dF9pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKK1BHX1JNR1IoUk1fUkVM TUFQX0lELCAiUmVsTWFwIiwgcmVsbWFwX3JlZG8sIHJlbG1hcF9kZXNjLCByZWxtYXBfaWRlbnRp ZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpCitQR19STUdSKFJNX1NUQU5EQllfSUQs ICJTdGFuZGJ5Iiwgc3RhbmRieV9yZWRvLCBzdGFuZGJ5X2Rlc2MsIHN0YW5kYnlfaWRlbnRpZnks IE5VTEwsIE5VTEwsIE5VTEwsIHN0YW5kYnlfZGVjb2RlLCBOVUxMKQorUEdfUk1HUihSTV9IRUFQ Ml9JRCwgIkhlYXAyIiwgaGVhcDJfcmVkbywgaGVhcDJfZGVzYywgaGVhcDJfaWRlbnRpZnksIE5V TEwsIE5VTEwsIGhlYXBfbWFzaywgaGVhcDJfZGVjb2RlLCBOVUxMKQorUEdfUk1HUihSTV9IRUFQ X0lELCAiSGVhcCIsIGhlYXBfcmVkbywgaGVhcF9kZXNjLCBoZWFwX2lkZW50aWZ5LCBOVUxMLCBO VUxMLCBoZWFwX21hc2ssIGhlYXBfZGVjb2RlLCBOVUxMKQorUEdfUk1HUihSTV9CVFJFRV9JRCwg IkJ0cmVlIiwgYnRyZWVfcmVkbywgYnRyZWVfZGVzYywgYnRyZWVfaWRlbnRpZnksIGJ0cmVlX3hs b2dfc3RhcnR1cCwgYnRyZWVfeGxvZ19jbGVhbnVwLCBidHJlZV9tYXNrLCBOVUxMLCBOVUxMKQor UEdfUk1HUihSTV9IQVNIX0lELCAiSGFzaCIsIGhhc2hfcmVkbywgaGFzaF9kZXNjLCBoYXNoX2lk ZW50aWZ5LCBOVUxMLCBOVUxMLCBoYXNoX21hc2ssIE5VTEwsIE5VTEwpCitQR19STUdSKFJNX0dJ Tl9JRCwgIkdpbiIsIGdpbl9yZWRvLCBnaW5fZGVzYywgZ2luX2lkZW50aWZ5LCBnaW5feGxvZ19z dGFydHVwLCBnaW5feGxvZ19jbGVhbnVwLCBnaW5fbWFzaywgTlVMTCwgTlVMTCkKK1BHX1JNR1Io Uk1fR0lTVF9JRCwgIkdpc3QiLCBnaXN0X3JlZG8sIGdpc3RfZGVzYywgZ2lzdF9pZGVudGlmeSwg Z2lzdF94bG9nX3N0YXJ0dXAsIGdpc3RfeGxvZ19jbGVhbnVwLCBnaXN0X21hc2ssIE5VTEwsIE5V TEwpCitQR19STUdSKFJNX1NFUV9JRCwgIlNlcXVlbmNlIiwgc2VxX3JlZG8sIHNlcV9kZXNjLCBz ZXFfaWRlbnRpZnksIE5VTEwsIE5VTEwsIHNlcV9tYXNrLCBOVUxMLCBOVUxMKQorUEdfUk1HUihS TV9TUEdJU1RfSUQsICJTUEdpc3QiLCBzcGdfcmVkbywgc3BnX2Rlc2MsIHNwZ19pZGVudGlmeSwg c3BnX3hsb2dfc3RhcnR1cCwgc3BnX3hsb2dfY2xlYW51cCwgc3BnX21hc2ssIE5VTEwsIE5VTEwp CitQR19STUdSKFJNX0JSSU5fSUQsICJCUklOIiwgYnJpbl9yZWRvLCBicmluX2Rlc2MsIGJyaW5f aWRlbnRpZnksIE5VTEwsIE5VTEwsIGJyaW5fbWFzaywgTlVMTCwgTlVMTCkKK1BHX1JNR1IoUk1f Q09NTUlUX1RTX0lELCAiQ29tbWl0VHMiLCBjb21taXRfdHNfcmVkbywgY29tbWl0X3RzX2Rlc2Ms IGNvbW1pdF90c19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKK1BHX1JN R1IoUk1fUkVQTE9SSUdJTl9JRCwgIlJlcGxpY2F0aW9uT3JpZ2luIiwgcmVwbG9yaWdpbl9yZWRv LCByZXBsb3JpZ2luX2Rlc2MsIHJlcGxvcmlnaW5faWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEwpCitQR19STUdSKFJNX0dFTkVSSUNfSUQsICJHZW5lcmljIiwgZ2VuZXJpY19y ZWRvLCBnZW5lcmljX2Rlc2MsIGdlbmVyaWNfaWRlbnRpZnksIE5VTEwsIE5VTEwsIGdlbmVyaWNf bWFzaywgTlVMTCwgTlVMTCkKK1BHX1JNR1IoUk1fTE9HSUNBTE1TR19JRCwgIkxvZ2ljYWxNZXNz YWdlIiwgbG9naWNhbG1zZ19yZWRvLCBsb2dpY2FsbXNnX2Rlc2MsIGxvZ2ljYWxtc2dfaWRlbnRp ZnksIE5VTEwsIE5VTEwsIE5VTEwsIGxvZ2ljYWxtc2dfZGVjb2RlLCBOVUxMKQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy94bG9nX2ludGVybmFsLmgKaW5kZXggZmFlMGJlZjhmNS4uYmIwODZmNDVmMyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MveGxvZ19pbnRlcm5hbC5oCkBAIC0zMTgsMTEgKzMxOCwxMyBAQCB0eXBlZGVmIHN0cnVj dCBSbWdyRGF0YQogCXZvaWQJCSgqcm1fbWFzaykgKGNoYXIgKnBhZ2VkYXRhLCBCbG9ja051bWJl ciBibGtubyk7CiAJdm9pZAkJKCpybV9kZWNvZGUpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAogCQkJCQkJCSAgc3RydWN0IFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CisJdm9p ZAkJKCpybV9jaGVja3BvaW50KSAodm9pZCk7CiB9IFJtZ3JEYXRhOwogCiBleHRlcm4gUEdETExJ TVBPUlQgUm1nckRhdGEgUm1nclRhYmxlW107CiBleHRlcm4gdm9pZCBSbWdyU3RhcnR1cCh2b2lk KTsKIGV4dGVybiB2b2lkIFJtZ3JDbGVhbnVwKHZvaWQpOworZXh0ZXJuIHZvaWQgUm1nckNoZWNr cG9pbnQodm9pZCk7CiBleHRlcm4gdm9pZCBSbWdyTm90Rm91bmQoUm1ncklkIHJtaWQpOwogZXh0 ZXJuIHZvaWQgUmVnaXN0ZXJDdXN0b21SbWdyKFJtZ3JJZCBybWlkLCBSbWdyRGF0YSAqcm1ncik7 CiAK --000000000000fac17805debd3420--