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 1uZfQP-006T4X-Cl for pgsql-docs@arkaria.postgresql.org; Thu, 10 Jul 2025 00:46:10 +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 1uZfQK-005wyx-7z for pgsql-docs@arkaria.postgresql.org; Thu, 10 Jul 2025 00:46:04 +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 1uZfQJ-005wyo-Ho for pgsql-docs@lists.postgresql.org; Thu, 10 Jul 2025 00:46:04 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1uZfQG-006UKX-0O for pgsql-docs@lists.postgresql.org; Thu, 10 Jul 2025 00:46:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1752108356; bh=wp5QWparR+MV9+x36ta4oSFB6Xol0qLrk+4+MMGuaEY=; h=Message-ID:Date:User-Agent:To:From:Subject:From; b=quSWYcxBjbZWJmvGU1+gdPHsZCh7bbGUWl9bhoVeQEd0nuOPldkA/b1HdnuSvDCNf T9SqmmJwIMKZSfNxSxgG0YTSyBozI9gH7YyPnFyP1DVtPNoWnRzI/dbV00vP1Sdcyk e7gU0B5dFlctry0J2YREFSla0YT4lBfXFh2Ge+S8hD6OjYZLJ/T3jRgDH+bdGKr9ZG tKS+moij5Leih5c61zkbWGuvHqW8Arkp+4ccZ/ZB2wBkojHh+2Y749XJx7kfwrVLm7 VqAY6xbPU4Z6RD0619V8KUXgHRf/xa3sue+H/FUiiy4dSLVwRXK5HzOUnZtfvhnnDe mfH2ULX8ND8Ow== Received: from [192.168.1.72] (109-161-90-195.pppoe.yaroslavl.ru [109.161.90.195]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (Client did not present a certificate) (Authenticated sender: a.fadeev@postgrespro.ru) by mail.postgrespro.ru (Postfix/465) with ESMTPSA id 85E005FF82 for ; Thu, 10 Jul 2025 03:45:56 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------iznsEOkUXhSRFn4bCcynohHh" Message-ID: <4a742a5b-f081-4313-9241-b8392dfdb114@postgrespro.ru> Date: Thu, 10 Jul 2025 03:45:56 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: pgsql-docs@lists.postgresql.org From: Artem Fadeev Subject: Outdated typedefs in documentation X-KSMG-AntiPhishing: NotDetected, bases: 2025/07/10 00:05:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/07/10 00:14:00 #27632224 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------iznsEOkUXhSRFn4bCcynohHh Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, I have noticed a slight mismatch between typedefs in docs and header files. On current master branch: - CustomScanState is missing custom_ps, pscan_len and slotOps fields in docs. - `methods` field of CustomPath, CustomScan and CustomScanState is missing `struct` in type. - BrinOpcInfo.oi_regular_nulls is missing. - pgNotify.next is missing. But the comment above it says apps should not use it, so I guess it can be left as is. Attached diff file shows other mismatches I could find. There are some comments that could be updated. Other differences are caused by indentation variations and false positives. The script I used for typedef extraction is also attached. Regards, Artem Fadeev. https://postgrespro.com --------------iznsEOkUXhSRFn4bCcynohHh Content-Type: text/x-patch; charset=UTF-8; name="typedefs.diff" Content-Disposition: attachment; filename="typedefs.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3RtcC90eXBlZGVmc19vdXRwdXQuY29kZS50eHQgYi90bXAvdHlwZWRl ZnNfb3V0cHV0LmRvY3MudHh0CmluZGV4IDI1YmVlOWU3ODQ2Li5lNGU2Yzg5ZmM5MCAxMDA2 NDQKLS0tIGEvdG1wL3R5cGVkZWZzX291dHB1dC5jb2RlLnR4dAorKysgYi90bXAvdHlwZWRl ZnNfb3V0cHV0LmRvY3MudHh0CkBAIC04LDE1ICs4LDExIEBAIHR5cGVkZWYgc3RydWN0IE91 dHB1dFBsdWdpbkNhbGxiYWNrcwogIExvZ2ljYWxEZWNvZGVNZXNzYWdlQ0IgbWVzc2FnZV9j YjsKICBMb2dpY2FsRGVjb2RlRmlsdGVyQnlPcmlnaW5DQiBmaWx0ZXJfYnlfb3JpZ2luX2Ni OwogIExvZ2ljYWxEZWNvZGVTaHV0ZG93bkNCIHNodXRkb3duX2NiOwotCi0gLyogc3RyZWFt aW5nIG9mIGNoYW5nZXMgYXQgcHJlcGFyZSB0aW1lICovCiAgTG9naWNhbERlY29kZUZpbHRl clByZXBhcmVDQiBmaWx0ZXJfcHJlcGFyZV9jYjsKICBMb2dpY2FsRGVjb2RlQmVnaW5QcmVw YXJlQ0IgYmVnaW5fcHJlcGFyZV9jYjsKICBMb2dpY2FsRGVjb2RlUHJlcGFyZUNCIHByZXBh cmVfY2I7CiAgTG9naWNhbERlY29kZUNvbW1pdFByZXBhcmVkQ0IgY29tbWl0X3ByZXBhcmVk X2NiOwogIExvZ2ljYWxEZWNvZGVSb2xsYmFja1ByZXBhcmVkQ0Igcm9sbGJhY2tfcHJlcGFy ZWRfY2I7Ci0KLSAvKiBzdHJlYW1pbmcgb2YgY2hhbmdlcyAqLwogIExvZ2ljYWxEZWNvZGVT dHJlYW1TdGFydENCIHN0cmVhbV9zdGFydF9jYjsKICBMb2dpY2FsRGVjb2RlU3RyZWFtU3Rv cENCIHN0cmVhbV9zdG9wX2NiOwogIExvZ2ljYWxEZWNvZGVTdHJlYW1BYm9ydENCIHN0cmVh bV9hYm9ydF9jYjsKQEAgLTQzLDExICszOSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBBcmNoaXZl TW9kdWxlQ2FsbGJhY2tzCiA9PT0KIHR5cGVkZWYgc3RydWN0CiB7Ci0gZmxvYXQ4IHgsCi0g eTsKKyBkb3VibGUgeCwgeTsKIH0gUG9pbnQ7CiA9PT0KLXR5cGVkZWYgc3RydWN0IHZhcmxl bmEgdGV4dDsKK3R5cGVkZWYgc3RydWN0IHsKKyBpbnQzMiBsZW5ndGg7CisgY2hhciBkYXRh W0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07Cit9IHRleHQ7CiA9PT0KIHR5cGVkZWYgc3RydWN0 IEZ1bmNDYWxsQ29udGV4dAogewpAQCAtNjIsMTYgKzYwLDE2IEBAIHR5cGVkZWYgc3RydWN0 IEZ1bmNDYWxsQ29udGV4dAogIC8qCiAgKiBPUFRJT05BTCBtYXhpbXVtIG51bWJlciBvZiBj YWxscwogICoKLSAqIG1heF9jYWxscyBpcyBoZXJlIGZvciBjb252ZW5pZW5jZSBvbmx5IGFu ZCBzZXR0aW5nIGl0IGlzIG9wdGlvbmFsLiBJZgotICogbm90IHNldCwgeW91IG11c3QgcHJv dmlkZSBhbHRlcm5hdGl2ZSBtZWFucyB0byBrbm93IHdoZW4gdGhlIGZ1bmN0aW9uCi0gKiBp cyBkb25lLgorICogbWF4X2NhbGxzIGlzIGhlcmUgZm9yIGNvbnZlbmllbmNlIG9ubHkgYW5k IHNldHRpbmcgaXQgaXMgb3B0aW9uYWwuCisgKiBJZiBub3Qgc2V0LCB5b3UgbXVzdCBwcm92 aWRlIGFsdGVybmF0aXZlIG1lYW5zIHRvIGtub3cgd2hlbiB0aGUKKyAqIGZ1bmN0aW9uIGlz IGRvbmUuCiAgKi8KICB1aW50NjQgbWF4X2NhbGxzOwogCiAgLyoKICAqIE9QVElPTkFMIHBv aW50ZXIgdG8gbWlzY2VsbGFuZW91cyB1c2VyLXByb3ZpZGVkIGNvbnRleHQgaW5mb3JtYXRp b24KICAqCi0gKiB1c2VyX2ZjdHggaXMgZm9yIHVzZSBhcyBhIHBvaW50ZXIgdG8geW91ciBv d24gc3RydWN0IHRvIHJldGFpbgorICogdXNlcl9mY3R4IGlzIGZvciB1c2UgYXMgYSBwb2lu dGVyIHRvIHlvdXIgb3duIGRhdGEgdG8gcmV0YWluCiAgKiBhcmJpdHJhcnkgY29udGV4dCBp bmZvcm1hdGlvbiBiZXR3ZWVuIGNhbGxzIG9mIHlvdXIgZnVuY3Rpb24uCiAgKi8KICB2b2lk ICp1c2VyX2ZjdHg7CkBAIC03OSw5ICs3NywxMCBAQCB0eXBlZGVmIHN0cnVjdCBGdW5jQ2Fs bENvbnRleHQKICAvKgogICogT1BUSU9OQUwgcG9pbnRlciB0byBzdHJ1Y3QgY29udGFpbmlu ZyBhdHRyaWJ1dGUgdHlwZSBpbnB1dCBtZXRhZGF0YQogICoKLSAqIGF0dGlubWV0YSBpcyBm b3IgdXNlIHdoZW4gcmV0dXJuaW5nIHR1cGxlcyAoaS5lLiBjb21wb3NpdGUgZGF0YSB0eXBl cykKLSAqIGFuZCBpcyBub3QgdXNlZCB3aGVuIHJldHVybmluZyBiYXNlIGRhdGEgdHlwZXMu IEl0IGlzIG9ubHkgbmVlZGVkIGlmCi0gKiB5b3UgaW50ZW5kIHRvIHVzZSBCdWlsZFR1cGxl RnJvbUNTdHJpbmdzKCkgdG8gY3JlYXRlIHRoZSByZXR1cm4gdHVwbGUuCisgKiBhdHRpbm1l dGEgaXMgZm9yIHVzZSB3aGVuIHJldHVybmluZyB0dXBsZXMgKGkuZS4sIGNvbXBvc2l0ZSBk YXRhIHR5cGVzKQorICogYW5kIGlzIG5vdCB1c2VkIHdoZW4gcmV0dXJuaW5nIGJhc2UgZGF0 YSB0eXBlcy4gSXQgaXMgb25seSBuZWVkZWQKKyAqIGlmIHlvdSBpbnRlbmQgdG8gdXNlIEJ1 aWxkVHVwbGVGcm9tQ1N0cmluZ3MoKSB0byBjcmVhdGUgdGhlIHJldHVybgorICogdHVwbGUu CiAgKi8KICBBdHRJbk1ldGFkYXRhICphdHRpbm1ldGE7CiAKQEAgLTkwLDE1ICs4OSwxNSBA QCB0eXBlZGVmIHN0cnVjdCBGdW5jQ2FsbENvbnRleHQKICAqCiAgKiBtdWx0aV9jYWxsX21l bW9yeV9jdHggaXMgc2V0IGJ5IFNSRl9GSVJTVENBTExfSU5JVCgpIGZvciB5b3UsIGFuZCB1 c2VkCiAgKiBieSBTUkZfUkVUVVJOX0RPTkUoKSBmb3IgY2xlYW51cC4gSXQgaXMgdGhlIG1v c3QgYXBwcm9wcmlhdGUgbWVtb3J5Ci0gKiBjb250ZXh0IGZvciBhbnkgbWVtb3J5IHRoYXQg aXMgdG8gYmUgcmV1c2VkIGFjcm9zcyBtdWx0aXBsZSBjYWxscyBvZgotICogdGhlIFNSRi4K KyAqIGNvbnRleHQgZm9yIGFueSBtZW1vcnkgdGhhdCBpcyB0byBiZSByZXVzZWQgYWNyb3Nz IG11bHRpcGxlIGNhbGxzCisgKiBvZiB0aGUgU1JGLgogICovCiAgTWVtb3J5Q29udGV4dCBt dWx0aV9jYWxsX21lbW9yeV9jdHg7CiAKICAvKgogICogT1BUSU9OQUwgcG9pbnRlciB0byBz dHJ1Y3QgY29udGFpbmluZyB0dXBsZSBkZXNjcmlwdGlvbgogICoKLSAqIHR1cGxlX2Rlc2Mg aXMgZm9yIHVzZSB3aGVuIHJldHVybmluZyB0dXBsZXMgKGkuZS4gY29tcG9zaXRlIGRhdGEg dHlwZXMpCisgKiB0dXBsZV9kZXNjIGlzIGZvciB1c2Ugd2hlbiByZXR1cm5pbmcgdHVwbGVz IChpLmUuLCBjb21wb3NpdGUgZGF0YSB0eXBlcykKICAqIGFuZCBpcyBvbmx5IG5lZWRlZCBp ZiB5b3UgYXJlIGdvaW5nIHRvIGJ1aWxkIHRoZSB0dXBsZXMgd2l0aAogICogaGVhcF9mb3Jt X3R1cGxlKCkgcmF0aGVyIHRoYW4gd2l0aCBCdWlsZFR1cGxlRnJvbUNTdHJpbmdzKCkuIE5v dGUgdGhhdAogICogdGhlIFR1cGxlRGVzYyBwb2ludGVyIHN0b3JlZCBoZXJlIHNob3VsZCB1 c3VhbGx5IGhhdmUgYmVlbiBydW4gdGhyb3VnaApAQCAtMTIyLDM0ICsxMjEsMzMgQEAgdHlw ZWRlZiBzdHJ1Y3QgU1BJVHVwbGVUYWJsZQogIFN1YlRyYW5zYWN0aW9uSWQgc3ViaWQ7IC8q IHN1YnhhY3QgaW4gd2hpY2ggdHVwdGFibGUgd2FzIGNyZWF0ZWQgKi8KIH0gU1BJVHVwbGVU YWJsZTsKID09PQotdHlwZWRlZiBzdHJ1Y3QgX1BRY29ubmluZm9PcHRpb24KK3R5cGVkZWYg c3RydWN0CiB7CiAgY2hhciAqa2V5d29yZDsgLyogVGhlIGtleXdvcmQgb2YgdGhlIG9wdGlv biAqLwogIGNoYXIgKmVudnZhcjsgLyogRmFsbGJhY2sgZW52aXJvbm1lbnQgdmFyaWFibGUg bmFtZSAqLwogIGNoYXIgKmNvbXBpbGVkOyAvKiBGYWxsYmFjayBjb21waWxlZCBpbiBkZWZh dWx0IHZhbHVlICovCiAgY2hhciAqdmFsOyAvKiBPcHRpb24ncyBjdXJyZW50IHZhbHVlLCBv ciBOVUxMICovCiAgY2hhciAqbGFiZWw7IC8qIExhYmVsIGZvciBmaWVsZCBpbiBjb25uZWN0 IGRpYWxvZyAqLwotIGNoYXIgKmRpc3BjaGFyOyAvKiBJbmRpY2F0ZXMgaG93IHRvIGRpc3Bs YXkgdGhpcyBmaWVsZCBpbiBhCi0gKiBjb25uZWN0IGRpYWxvZy4gVmFsdWVzIGFyZTogIiIg RGlzcGxheQotICogZW50ZXJlZCB2YWx1ZSBhcyBpcyAiKiIgUGFzc3dvcmQgZmllbGQgLQot ICogaGlkZSB2YWx1ZSAiRCIgRGVidWcgb3B0aW9uIC0gZG9uJ3Qgc2hvdwotICogYnkgZGVm YXVsdCAqLworIGNoYXIgKmRpc3BjaGFyOyAvKiBJbmRpY2F0ZXMgaG93IHRvIGRpc3BsYXkg dGhpcyBmaWVsZAorIGluIGEgY29ubmVjdCBkaWFsb2cuIFZhbHVlcyBhcmU6CisgIiIgRGlz cGxheSBlbnRlcmVkIHZhbHVlIGFzIGlzCisgIioiIFBhc3N3b3JkIGZpZWxkIC0gaGlkZSB2 YWx1ZQorICJEIiBEZWJ1ZyBvcHRpb24gLSBkb24ndCBzaG93IGJ5IGRlZmF1bHQgKi8KICBp bnQgZGlzcHNpemU7IC8qIEZpZWxkIHNpemUgaW4gY2hhcmFjdGVycyBmb3IgZGlhbG9nICov CiB9IFBRY29ubmluZm9PcHRpb247CiA9PT0KLXR5cGVkZWYgc3RydWN0IF9QUXByaW50T3B0 Cit0eXBlZGVmIHN0cnVjdAogewogIHBxYm9vbCBoZWFkZXI7IC8qIHByaW50IG91dHB1dCBm aWVsZCBoZWFkaW5ncyBhbmQgcm93IGNvdW50ICovCiAgcHFib29sIGFsaWduOyAvKiBmaWxs IGFsaWduIHRoZSBmaWVsZHMgKi8KICBwcWJvb2wgc3RhbmRhcmQ7IC8qIG9sZCBicmFpbiBk ZWFkIGZvcm1hdCAqLwotIHBxYm9vbCBodG1sMzsgLyogb3V0cHV0IGh0bWwgdGFibGVzICov CisgcHFib29sIGh0bWwzOyAvKiBvdXRwdXQgSFRNTCB0YWJsZXMgKi8KICBwcWJvb2wgZXhw YW5kZWQ7IC8qIGV4cGFuZCB0YWJsZXMgKi8KICBwcWJvb2wgcGFnZXI7IC8qIHVzZSBwYWdl ciBmb3Igb3V0cHV0IGlmIG5lZWRlZCAqLwogIGNoYXIgKmZpZWxkU2VwOyAvKiBmaWVsZCBz ZXBhcmF0b3IgKi8KLSBjaGFyICp0YWJsZU9wdDsgLyogaW5zZXJ0IHRvIEhUTUwgPHRhYmxl IC4uLj4gKi8KLSBjaGFyICpjYXB0aW9uOyAvKiBIVE1MIDxjYXB0aW9uPiAqLwotIGNoYXIg KipmaWVsZE5hbWU7IC8qIG51bGwgdGVybWluYXRlZCBhcnJheSBvZiByZXBsYWNlbWVudCBm aWVsZAotICogbmFtZXMgKi8KKyBjaGFyICp0YWJsZU9wdDsgLyogYXR0cmlidXRlcyBmb3Ig SFRNTCB0YWJsZSBlbGVtZW50ICovCisgY2hhciAqY2FwdGlvbjsgLyogSFRNTCB0YWJsZSBj YXB0aW9uICovCisgY2hhciAqKmZpZWxkTmFtZTsgLyogbnVsbC10ZXJtaW5hdGVkIGFycmF5 IG9mIHJlcGxhY2VtZW50IGZpZWxkIG5hbWVzICovCiB9IFBRcHJpbnRPcHQ7CiA9PT0KIHR5 cGVkZWYgc3RydWN0CkBAIC0xNTgsMzMgKzE1NiwzMSBAQCB0eXBlZGVmIHN0cnVjdAogIGlu dCBpc2ludDsKICB1bmlvbgogIHsKLSBpbnQgKnB0cjsgLyogY2FuJ3QgdXNlIHZvaWQgKGRl YyBjb21waWxlciBiYXJmcykgKi8KKyBpbnQgKnB0cjsKICBpbnQgaW50ZWdlcjsKICB9IHU7 CiB9IFBRQXJnQmxvY2s7CiA9PT0KIHR5cGVkZWYgc3RydWN0IHBnTm90aWZ5CiB7Ci0gY2hh ciAqcmVsbmFtZTsgLyogbm90aWZpY2F0aW9uIGNvbmRpdGlvbiBuYW1lICovCisgY2hhciAq cmVsbmFtZTsgLyogbm90aWZpY2F0aW9uIGNoYW5uZWwgbmFtZSAqLwogIGludCBiZV9waWQ7 IC8qIHByb2Nlc3MgSUQgb2Ygbm90aWZ5aW5nIHNlcnZlciBwcm9jZXNzICovCi0gY2hhciAq ZXh0cmE7IC8qIG5vdGlmaWNhdGlvbiBwYXJhbWV0ZXIgKi8KLSAvKiBGaWVsZHMgYmVsb3cg aGVyZSBhcmUgcHJpdmF0ZSB0byBsaWJwcTsgYXBwcyBzaG91bGQgbm90IHVzZSAnZW0gKi8K LSBzdHJ1Y3QgcGdOb3RpZnkgKm5leHQ7IC8qIGxpc3QgbGluayAqLworIGNoYXIgKmV4dHJh OyAvKiBub3RpZmljYXRpb24gcGF5bG9hZCBzdHJpbmcgKi8KIH0gUEdub3RpZnk7CiA9PT0K IHR5cGVkZWYgZW51bQogewotIFBRRVJST1JTX1RFUlNFLCAvKiBzaW5nbGUtbGluZSBlcnJv ciBtZXNzYWdlcyAqLwotIFBRRVJST1JTX0RFRkFVTFQsIC8qIHJlY29tbWVuZGVkIHN0eWxl ICovCi0gUFFFUlJPUlNfVkVSQk9TRSwgLyogYWxsIHRoZSBmYWN0cywgbWEnYW0gKi8KLSBQ UUVSUk9SU19TUUxTVEFURSAvKiBvbmx5IGVycm9yIHNldmVyaXR5IGFuZCBTUUxTVEFURSBj b2RlICovCisgUFFFUlJPUlNfVEVSU0UsCisgUFFFUlJPUlNfREVGQVVMVCwKKyBQUUVSUk9S U19WRVJCT1NFLAorIFBRRVJST1JTX1NRTFNUQVRFCiB9IFBHVmVyYm9zaXR5OwogPT09CiB0 eXBlZGVmIGVudW0KIHsKLSBQUVNIT1dfQ09OVEVYVF9ORVZFUiwgLyogbmV2ZXIgc2hvdyBD T05URVhUIGZpZWxkICovCi0gUFFTSE9XX0NPTlRFWFRfRVJST1JTLCAvKiBzaG93IENPTlRF WFQgZm9yIGVycm9ycyBvbmx5IChkZWZhdWx0KSAqLwotIFBRU0hPV19DT05URVhUX0FMV0FZ UyAvKiBhbHdheXMgc2hvdyBDT05URVhUIGZpZWxkICovCisgUFFTSE9XX0NPTlRFWFRfTkVW RVIsCisgUFFTSE9XX0NPTlRFWFRfRVJST1JTLAorIFBRU0hPV19DT05URVhUX0FMV0FZUwog fSBQR0NvbnRleHRWaXNpYmlsaXR5OwogPT09CiB0eXBlZGVmIHN0cnVjdApAQCAtMjE5LDcg KzIxNSwxMSBAQCB0eXBlZGVmIHN0cnVjdAogIFBHcmVzdWx0ICpyZXN1bHQ7CiB9IFBHRXZl bnRSZXN1bHREZXN0cm95OwogPT09Ci0nbXlkYXRhOycgaXMgbm90IHByZXNlbnQgaW4gY29k ZQordHlwZWRlZiBzdHJ1Y3QKK3sKKyBpbnQgbjsKKyBjaGFyICpzdHI7Cit9IG15ZGF0YTsK ID09PQogdHlwZWRlZiBzdHJ1Y3QgX1BHcHJvbXB0T0F1dGhEZXZpY2UKIHsKQEAgLTIzMyw2 OCArMjMzLDM5IEBAIHR5cGVkZWYgc3RydWN0IF9QR3Byb21wdE9BdXRoRGV2aWNlCiB0eXBl ZGVmIHN0cnVjdCBQR29hdXRoQmVhcmVyUmVxdWVzdAogewogIC8qIEhvb2sgaW5wdXRzIChj b25zdGFudCBhY3Jvc3MgYWxsIGNhbGxzKSAqLwotIGNvbnN0IGNoYXIgKm9wZW5pZF9jb25m aWd1cmF0aW9uOyAvKiBPSURDIGRpc2NvdmVyeSBVUkkgKi8KKyBjb25zdCBjaGFyICpvcGVu aWRfY29uZmlndXJhdGlvbjsgLyogT0lEQyBkaXNjb3ZlcnkgVVJMICovCiAgY29uc3QgY2hh ciAqc2NvcGU7IC8qIHJlcXVpcmVkIHNjb3BlKHMpLCBvciBOVUxMICovCiAKICAvKiBIb29r IG91dHB1dHMgKi8KIAotIC8qLS0tLS0tLS0tCi0gKiBDYWxsYmFjayBpbXBsZW1lbnRpbmcg YSBjdXN0b20gYXN5bmNocm9ub3VzIE9BdXRoIGZsb3cuCi0gKgotICogVGhlIGNhbGxiYWNr IG1heSByZXR1cm4KLSAqIC0gUEdSRVNfUE9MTElOR19SRUFESU5HL1dSSVRJTkcsIHRvIGlu ZGljYXRlIHRoYXQgYSBzb2NrZXQgZGVzY3JpcHRvcgotICogaGFzIGJlZW4gc3RvcmVkIGlu ICphbHRzb2NrIGFuZCBsaWJwcSBzaG91bGQgd2FpdCB1bnRpbCBpdCBpcwotICogcmVhZGFi bGUgb3Igd3JpdGFibGUgYmVmb3JlIGNhbGxpbmcgYmFjazsKLSAqIC0gUEdSRVNfUE9MTElO R19PSywgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZmxvdyBpcyBjb21wbGV0ZSBhbmQKLSAqIHJl cXVlc3QtPnRva2VuIGhhcyBiZWVuIHNldDsgb3IKLSAqIC0gUEdSRVNfUE9MTElOR19GQUlM RUQsIHRvIGluZGljYXRlIHRoYXQgdG9rZW4gcmV0cmlldmFsIGhhcyBmYWlsZWQuCi0gKgot ICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4gSWYgdGhlIHRva2VuIGNhbiBiZSBvYnRh aW5lZCB3aXRob3V0Ci0gKiBibG9ja2luZyBkdXJpbmcgdGhlIG9yaWdpbmFsIGNhbGwgdG8g dGhlIFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOCi0gKiBob29rLCBpdCBtYXkgYmUg cmV0dXJuZWQgZGlyZWN0bHksIGJ1dCBvbmUgb2YgcmVxdWVzdC0+YXN5bmMgb3IKLSAqIHJl cXVlc3QtPnRva2VuIG11c3QgYmUgc2V0IGJ5IHRoZSBob29rLgotICovCisgLyogQ2FsbGJh Y2sgaW1wbGVtZW50aW5nIGEgY3VzdG9tIGFzeW5jaHJvbm91cyBPQXV0aCBmbG93LiAqLwog IFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUgKCphc3luYykgKFBHY29ubiAqY29ubiwKICBz dHJ1Y3QgUEdvYXV0aEJlYXJlclJlcXVlc3QgKnJlcXVlc3QsCi0gU09DS1RZUEUgKiBhbHRz b2NrKTsKKyBTT0NLVFlQRSAqYWx0c29jayk7CiAKLSAvKgotICogQ2FsbGJhY2sgdG8gY2xl YW4gdXAgY3VzdG9tIGFsbG9jYXRpb25zLiBBIGhvb2sgaW1wbGVtZW50YXRpb24gbWF5IHVz ZQotICogdGhpcyB0byBmcmVlIHJlcXVlc3QtPnRva2VuIGFuZCBhbnkgcmVzb3VyY2VzIGlu IHJlcXVlc3QtPnVzZXIuCi0gKgotICogVGhpcyBpcyB0ZWNobmljYWxseSBvcHRpb25hbCwg YnV0IGhpZ2hseSByZWNvbW1lbmRlZCwgYmVjYXVzZSB0aGVyZSBpcwotICogbm8gb3RoZXIg aW5kaWNhdGlvbiBhcyB0byB3aGVuIGl0IGlzIHNhZmUgdG8gZnJlZSB0aGUgdG9rZW4uCi0g Ki8KKyAvKiBDYWxsYmFjayB0byBjbGVhbiB1cCBjdXN0b20gYWxsb2NhdGlvbnMuICovCiAg dm9pZCAoKmNsZWFudXApIChQR2Nvbm4gKmNvbm4sIHN0cnVjdCBQR29hdXRoQmVhcmVyUmVx dWVzdCAqcmVxdWVzdCk7CiAKLSAvKgotICogVGhlIGhvb2sgc2hvdWxkIHNldCB0aGlzIHRv IHRoZSBCZWFyZXIgdG9rZW4gY29udGVudHMgZm9yIHRoZQotICogY29ubmVjdGlvbiwgb25j ZSB0aGUgZmxvdyBpcyBjb21wbGV0ZWQuIFRoZSB0b2tlbiBjb250ZW50cyBtdXN0IHJlbWFp bgotICogYXZhaWxhYmxlIHRvIGxpYnBxIHVudGlsIHRoZSBob29rJ3MgY2xlYW51cCBjYWxs YmFjayBpcyBjYWxsZWQuCi0gKi8KLSBjaGFyICp0b2tlbjsKLQotIC8qCi0gKiBIb29rLWRl ZmluZWQgZGF0YS4gbGlicHEgd2lsbCBub3QgbW9kaWZ5IHRoaXMgcG9pbnRlciBhY3Jvc3Mg Y2FsbHMgdG8KLSAqIHRoZSBhc3luYyBjYWxsYmFjaywgc28gaXQgY2FuIGJlIHVzZWQgdG8g a2VlcCB0cmFjayBvZgotICogYXBwbGljYXRpb24tc3BlY2lmaWMgc3RhdGUuIFJlc291cmNl cyBhbGxvY2F0ZWQgaGVyZSBzaG91bGQgYmUgZnJlZWQgYnkKLSAqIHRoZSBjbGVhbnVwIGNh bGxiYWNrLgotICovCi0gdm9pZCAqdXNlcjsKKyBjaGFyICp0b2tlbjsgLyogYWNxdWlyZWQg QmVhcmVyIHRva2VuICovCisgdm9pZCAqdXNlcjsgLyogaG9vay1kZWZpbmVkIGFsbG9jYXRl ZCBkYXRhICovCiB9IFBHb2F1dGhCZWFyZXJSZXF1ZXN0OwogPT09Ci0nY29tcF90OycgaXMg bm90IHByZXNlbnQgaW4gY29kZQordHlwZWRlZiBzdHJ1Y3QKK3sKKyBpbnQgaW50dmFsOwor IHZhcmNoYXIgdGV4dHZhbFszM107Cit9IGNvbXBfdDsKID09PQotdHlwZWRlZiBzdHJ1Y3Qg c3FsZGFfc3RydWN0IHNxbGRhX3Q7Cit0eXBlZGVmIHN0cnVjdCBzcWxkYV9jb21wYXQgc3Fs ZGFfdDsKID09PQotdHlwZWRlZiBzdHJ1Y3Qgc3FsdmFyX3N0cnVjdCBzcWx2YXJfdDsKK3R5 cGVkZWYgc3RydWN0IHNxbHZhcl9jb21wYXQgc3FsdmFyX3Q7CiA9PT0KIHR5cGVkZWYgc3Ry dWN0IEV2ZW50VHJpZ2dlckRhdGEKIHsKICBOb2RlVGFnIHR5cGU7CiAgY29uc3QgY2hhciAq ZXZlbnQ7IC8qIGV2ZW50IG5hbWUgKi8KICBOb2RlICpwYXJzZXRyZWU7IC8qIHBhcnNlIHRy ZWUgKi8KLSBDb21tYW5kVGFnIHRhZzsKKyBDb21tYW5kVGFnIHRhZzsgLyogY29tbWFuZCB0 YWcgKi8KIH0gRXZlbnRUcmlnZ2VyRGF0YTsKID09PQogdHlwZWRlZiBzdHJ1Y3QgUm1nckRh dGEKQEAgLTMxMCw1MiArMjgxLDM4IEBAIHR5cGVkZWYgc3RydWN0IFJtZ3JEYXRhCiAgc3Ry dWN0IFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CiB9IFJtZ3JEYXRhOwogPT09Ci0nQ29tcGxl eDsnIGlzIG5vdCBwcmVzZW50IGluIGNvZGUKK3R5cGVkZWYgc3RydWN0IENvbXBsZXggewor IGRvdWJsZSB4OworIGRvdWJsZSB5OworfSBDb21wbGV4OwogPT09CiB0eXBlZGVmIHN0cnVj dCBDdXN0b21QYXRoCiB7CiAgUGF0aCBwYXRoOwotIHVpbnQzMiBmbGFnczsgLyogbWFzayBv ZiBDVVNUT01QQVRIXyogZmxhZ3MsIHNlZQotICogbm9kZXMvZXh0ZW5zaWJsZS5oICovCi0g TGlzdCAqY3VzdG9tX3BhdGhzOyAvKiBsaXN0IG9mIGNoaWxkIFBhdGggbm9kZXMsIGlmIGFu eSAqLworIHVpbnQzMiBmbGFnczsKKyBMaXN0ICpjdXN0b21fcGF0aHM7CiAgTGlzdCAqY3Vz dG9tX3Jlc3RyaWN0aW5mbzsKICBMaXN0ICpjdXN0b21fcHJpdmF0ZTsKLSBjb25zdCBzdHJ1 Y3QgQ3VzdG9tUGF0aE1ldGhvZHMgKm1ldGhvZHM7CisgY29uc3QgQ3VzdG9tUGF0aE1ldGhv ZHMgKm1ldGhvZHM7CiB9IEN1c3RvbVBhdGg7CiA9PT0KIHR5cGVkZWYgc3RydWN0IEN1c3Rv bVNjYW4KIHsKICBTY2FuIHNjYW47Ci0gLyogbWFzayBvZiBDVVNUT01QQVRIXyogZmxhZ3Ms IHNlZSBub2Rlcy9leHRlbnNpYmxlLmggKi8KICB1aW50MzIgZmxhZ3M7Ci0gLyogbGlzdCBv ZiBQbGFuIG5vZGVzLCBpZiBhbnkgKi8KICBMaXN0ICpjdXN0b21fcGxhbnM7Ci0gLyogZXhw cmVzc2lvbnMgdGhhdCBjdXN0b20gY29kZSBtYXkgZXZhbHVhdGUgKi8KICBMaXN0ICpjdXN0 b21fZXhwcnM7Ci0gLyogcHJpdmF0ZSBkYXRhIGZvciBjdXN0b20gY29kZSAqLwogIExpc3Qg KmN1c3RvbV9wcml2YXRlOwotIC8qIG9wdGlvbmFsIHRsaXN0IGRlc2NyaWJpbmcgc2NhbiB0 dXBsZSAqLwogIExpc3QgKmN1c3RvbV9zY2FuX3RsaXN0OwotIC8qIFJUSXMgZ2VuZXJhdGVk IGJ5IHRoaXMgc2NhbiAqLwogIEJpdG1hcHNldCAqY3VzdG9tX3JlbGlkczsKLQotIC8qCi0g KiBOT1RFOiBUaGUgbWV0aG9kIGZpZWxkIG9mIEN1c3RvbVNjYW4gaXMgcmVxdWlyZWQgdG8g YmUgYSBwb2ludGVyIHRvIGEKLSAqIHN0YXRpYyB0YWJsZSBvZiBjYWxsYmFjayBmdW5jdGlv bnMuIFNvIHdlIGRvbid0IGNvcHkgdGhlIHRhYmxlIGl0c2VsZiwKLSAqIGp1c3QgcmVmZXJl bmNlIHRoZSBvcmlnaW5hbCBvbmUuCi0gKi8KLSBjb25zdCBzdHJ1Y3QgQ3VzdG9tU2Nhbk1l dGhvZHMgKm1ldGhvZHM7CisgY29uc3QgQ3VzdG9tU2Nhbk1ldGhvZHMgKm1ldGhvZHM7CiB9 IEN1c3RvbVNjYW47CiA9PT0KIHR5cGVkZWYgc3RydWN0IEN1c3RvbVNjYW5TdGF0ZQogewog IFNjYW5TdGF0ZSBzczsKLSB1aW50MzIgZmxhZ3M7IC8qIG1hc2sgb2YgQ1VTVE9NUEFUSF8q IGZsYWdzLCBzZWUKLSAqIG5vZGVzL2V4dGVuc2libGUuaCAqLwotIExpc3QgKmN1c3RvbV9w czsgLyogbGlzdCBvZiBjaGlsZCBQbGFuU3RhdGUgbm9kZXMsIGlmIGFueSAqLwotIFNpemUg cHNjYW5fbGVuOyAvKiBzaXplIG9mIHBhcmFsbGVsIGNvb3JkaW5hdGlvbiBpbmZvcm1hdGlv biAqLwotIGNvbnN0IHN0cnVjdCBDdXN0b21FeGVjTWV0aG9kcyAqbWV0aG9kczsKLSBjb25z dCBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3RPcHMgKnNsb3RPcHM7CisgdWludDMyIGZsYWdzOwor IGNvbnN0IEN1c3RvbUV4ZWNNZXRob2RzICptZXRob2RzOwogfSBDdXN0b21TY2FuU3RhdGU7 CiA9PT0KIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJEYXRhCkBAIC0zNzUsOCArMzMyLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKID09PQogdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dl cgogewotIE9pZCB0Z29pZDsgLyogT0lEIG9mIHRyaWdnZXIgKHBnX3RyaWdnZXIgcm93KSAq LwotIC8qIFJlbWFpbmluZyBmaWVsZHMgYXJlIGNvcGllZCBmcm9tIHBnX3RyaWdnZXIsIHNl ZSBwZ190cmlnZ2VyLmggKi8KKyBPaWQgdGdvaWQ7CiAgY2hhciAqdGduYW1lOwogIE9pZCB0 Z2ZvaWQ7CiAgaW50MTYgdGd0eXBlOwpAQCAtNDA4LDIxICszNjQsMzAgQEAgdHlwZWRlZiBz dHJ1Y3QgQmFja2dyb3VuZFdvcmtlcgogIGNoYXIgYmd3X2Z1bmN0aW9uX25hbWVbQkdXX01B WExFTl07CiAgRGF0dW0gYmd3X21haW5fYXJnOwogIGNoYXIgYmd3X2V4dHJhW0JHV19FWFRS QUxFTl07Ci0gcGlkX3QgYmd3X25vdGlmeV9waWQ7IC8qIFNJR1VTUjEgdGhpcyBiYWNrZW5k IG9uIHN0YXJ0L3N0b3AgKi8KKyBwaWRfdCBiZ3dfbm90aWZ5X3BpZDsKIH0gQmFja2dyb3Vu ZFdvcmtlcjsKID09PQotJ015RW51bVR5cGU7JyBpcyBub3QgcHJlc2VudCBpbiBjb2RlCit0 eXBlZGVmIGVudW0gTXlFbnVtVHlwZQoreworIE1ZX0VOVU1fT04sCisgTVlfRU5VTV9PRkYs CisgTVlfRU5VTV9BVVRPCit9IE15RW51bVR5cGU7CiA9PT0KLSdNeU9wdGlvbnNTdHJ1Y3Q7 JyBpcyBub3QgcHJlc2VudCBpbiBjb2RlCit0eXBlZGVmIHN0cnVjdAoreworIGludDMyIHZs X2xlbl87IC8qIHZhcmxlbmEgaGVhZGVyIChkbyBub3QgdG91Y2ggZGlyZWN0bHkhKSAqLwor IGludCBpbnRfcGFyYW07IC8qIGludGVnZXIgcGFyYW1ldGVyICovCisgZG91YmxlIHJlYWxf cGFyYW07IC8qIHJlYWwgcGFyYW1ldGVyICovCisgTXlFbnVtVHlwZSBlbnVtX3BhcmFtOyAv KiBlbnVtIHBhcmFtZXRlciAqLworIGludCBzdHJfcGFyYW07IC8qIHN0cmluZyBwYXJhbWV0 ZXIgKi8KK30gTXlPcHRpb25zU3RydWN0OwogPT09CiB0eXBlZGVmIHN0cnVjdCBCcmluT3Bj SW5mbwogewogIC8qIE51bWJlciBvZiBjb2x1bW5zIHN0b3JlZCBpbiBhbiBpbmRleCBjb2x1 bW4gb2YgdGhpcyBvcGNsYXNzICovCiAgdWludDE2IG9pX25zdG9yZWQ7CiAKLSAvKiBSZWd1 bGFyIHByb2Nlc3Npbmcgb2YgTlVMTHMgaW4gQnJpblZhbHVlcz8gKi8KLSBib29sIG9pX3Jl Z3VsYXJfbnVsbHM7Ci0KICAvKiBPcGFxdWUgcG9pbnRlciBmb3IgdGhlIG9wY2xhc3MnIHBy aXZhdGUgdXNlICovCiAgdm9pZCAqb2lfb3BhcXVlOwogCkBAIC00NDEsMjEgKzQwNiw3IEBA IHR5cGVkZWYgc3RydWN0IE9BdXRoVmFsaWRhdG9yQ2FsbGJhY2tzCiA9PT0KIHR5cGVkZWYg c3RydWN0IFZhbGlkYXRvck1vZHVsZVJlc3VsdAogewotIC8qCi0gKiBTaG91bGQgYmUgc2V0 IHRvIHRydWUgaWYgdGhlIHRva2VuIGNhcnJpZXMgc3VmZmljaWVudCBwZXJtaXNzaW9ucyBm b3IKLSAqIHRoZSBiZWFyZXIgdG8gY29ubmVjdC4KLSAqLwogIGJvb2wgYXV0aG9yaXplZDsK LQotIC8qCi0gKiBJZiB0aGUgdG9rZW4gYXV0aGVudGljYXRlcyB0aGUgdXNlciwgdGhpcyBz aG91bGQgYmUgc2V0IHRvIGEgcGFsbG9jJ2QKLSAqIHN0cmluZyBjb250YWluaW5nIHRoZSBT WVNURU1fVVNFUiB0byB1c2UgZm9yIEhCQSBtYXBwaW5nLiBDb25zaWRlcgotICogc2V0dGlu ZyB0aGlzIGV2ZW4gaWYgcmVzdWx0LT5hdXRob3JpemVkIGlzIGZhbHNlIHNvIHRoYXQgREJB cyBtYXkgdXNlCi0gKiB0aGUgbG9ncyB0byBtYXRjaCBlbmQgdXNlcnMgdG8gdG9rZW4gZmFp bHVyZXMuCi0gKgotICogVGhpcyBpcyByZXF1aXJlZCBpZiB0aGUgbW9kdWxlIGlzIG5vdCBj b25maWd1cmVkIGZvciBpZGVudCBtYXBwaW5nCi0gKiBkZWxlZ2F0aW9uLiBTZWUgdGhlIHZh bGlkYXRvciBtb2R1bGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KLSAqLwogIGNoYXIg KmF1dGhuX2lkOwogfSBWYWxpZGF0b3JNb2R1bGVSZXN1bHQ7CiA9PT0KQEAgLTUwOCwxOSAr NDU5LDE0IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4QW1Sb3V0aW5lCiAgYm9vbCBhbWNhbmlu Y2x1ZGU7CiAgLyogZG9lcyBBTSB1c2UgbWFpbnRlbmFuY2Vfd29ya19tZW0/ICovCiAgYm9v bCBhbXVzZW1haW50ZW5hbmNld29ya21lbTsKLSAvKiBkb2VzIEFNIHN0b3JlIHR1cGxlIGlu Zm9ybWF0aW9uIG9ubHkgYXQgYmxvY2sgZ3JhbnVsYXJpdHk/ICovCisgLyogZG9lcyBBTSBz dW1tYXJpemUgdHVwbGVzLCB3aXRoIGF0IGxlYXN0IGFsbCB0dXBsZXMgaW4gdGhlIGJsb2Nr CisgKiBzdW1tYXJpemVkIGluIG9uZSBzdW1tYXJ5ICovCiAgYm9vbCBhbXN1bW1hcml6aW5n OwotIC8qIE9SIG9mIHBhcmFsbGVsIHZhY3V1bSBmbGFncy4gU2VlIHZhY3V1bS5oIGZvciBm bGFncy4gKi8KKyAvKiBPUiBvZiBwYXJhbGxlbCB2YWN1dW0gZmxhZ3MgKi8KICB1aW50OCBh bXBhcmFsbGVsdmFjdXVtb3B0aW9uczsKICAvKiB0eXBlIG9mIGRhdGEgc3RvcmVkIGluIGlu ZGV4LCBvciBJbnZhbGlkT2lkIGlmIHZhcmlhYmxlICovCiAgT2lkIGFta2V5dHlwZTsKIAot IC8qCi0gKiBJZiB5b3UgYWRkIG5ldyBwcm9wZXJ0aWVzIHRvIGVpdGhlciB0aGUgYWJvdmUg b3IgdGhlIGJlbG93IGxpc3RzLCB0aGVuCi0gKiB0aGV5IHNob3VsZCBhbHNvICh1c3VhbGx5 KSBiZSBleHBvc2VkIHZpYSB0aGUgcHJvcGVydHkgQVBJIChzZWUKLSAqIEluZGV4QU1Qcm9w ZXJ0eSBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLCBhbmQgdXRpbHMvYWR0L2FtdXRpbHMuYyku Ci0gKi8KLQogIC8qIGludGVyZmFjZSBmdW5jdGlvbnMgKi8KICBhbWJ1aWxkX2Z1bmN0aW9u IGFtYnVpbGQ7CiAgYW1idWlsZGVtcHR5X2Z1bmN0aW9uIGFtYnVpbGRlbXB0eTsKQEAgLTU2 NSw3ICs1MTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBzcGdDb25maWdPdXQKICBPaWQgbGFiZWxU eXBlOyAvKiBEYXRhIHR5cGUgb2YgaW5uZXItdHVwbGUgbm9kZSBsYWJlbHMgKi8KICBPaWQg bGVhZlR5cGU7IC8qIERhdGEgdHlwZSBvZiBsZWFmLXR1cGxlIHZhbHVlcyAqLwogIGJvb2wg Y2FuUmV0dXJuRGF0YTsgLyogT3BjbGFzcyBjYW4gcmVjb25zdHJ1Y3Qgb3JpZ2luYWwgZGF0 YSAqLwotIGJvb2wgbG9uZ1ZhbHVlc09LOyAvKiBPcGNsYXNzIGNhbiBjb3BlIHdpdGggdmFs dWVzID4gMSBwYWdlICovCisgYm9vbCBsb25nVmFsdWVzT0s7IC8qIE9wY2xhc3MgY2FuIGNv cGUgd2l0aCB2YWx1ZXMgJmd0OyAxIHBhZ2UgKi8KIH0gc3BnQ29uZmlnT3V0OwogPT09CiB0 eXBlZGVmIHN0cnVjdCBzcGdDaG9vc2VJbgpAQCAtNTg2LDcgKzUzMiw3IEBAIHR5cGVkZWYg ZW51bSBzcGdDaG9vc2VSZXN1bHRUeXBlCiB7CiAgc3BnTWF0Y2hOb2RlID0gMSwgLyogZGVz Y2VuZCBpbnRvIGV4aXN0aW5nIG5vZGUgKi8KICBzcGdBZGROb2RlLCAvKiBhZGQgYSBub2Rl IHRvIHRoZSBpbm5lciB0dXBsZSAqLwotIHNwZ1NwbGl0VHVwbGUsIC8qIHNwbGl0IGlubmVy IHR1cGxlIChjaGFuZ2UgaXRzIHByZWZpeCkgKi8KKyBzcGdTcGxpdFR1cGxlIC8qIHNwbGl0 IGlubmVyIHR1cGxlIChjaGFuZ2UgaXRzIHByZWZpeCkgKi8KIH0gc3BnQ2hvb3NlUmVzdWx0 VHlwZTsKID09PQogdHlwZWRlZiBzdHJ1Y3Qgc3BnQ2hvb3NlT3V0CkBAIC02MTEsOCArNTU3 LDggQEAgdHlwZWRlZiBzdHJ1Y3Qgc3BnQ2hvb3NlT3V0CiAgYm9vbCBwcmVmaXhIYXNQcmVm aXg7IC8qIHR1cGxlIHNob3VsZCBoYXZlIGEgcHJlZml4PyAqLwogIERhdHVtIHByZWZpeFBy ZWZpeERhdHVtOyAvKiBpZiBzbywgaXRzIHZhbHVlICovCiAgaW50IHByZWZpeE5Ob2Rlczsg LyogbnVtYmVyIG9mIG5vZGVzICovCi0gRGF0dW0gKnByZWZpeE5vZGVMYWJlbHM7IC8qIHRo ZWlyIGxhYmVscyAob3IgTlVMTCBmb3Igbm8KLSAqIGxhYmVscykgKi8KKyBEYXR1bSAqcHJl Zml4Tm9kZUxhYmVsczsgLyogdGhlaXIgbGFiZWxzIChvciBOVUxMIGZvcgorICogbm8gbGFi ZWxzKSAqLwogIGludCBjaGlsZE5vZGVOOyAvKiB3aGljaCBub2RlIGdldHMgY2hpbGQgdHVw bGUgKi8KIAogIC8qIEluZm8gdG8gZm9ybSBuZXcgbG93ZXItbGV2ZWwgaW5uZXIgdHVwbGUg d2l0aCBhbGwgb2xkIG5vZGVzICovCg== --------------iznsEOkUXhSRFn4bCcynohHh Content-Type: text/x-python; charset=UTF-8; name="typedefs.py" Content-Disposition: attachment; filename="typedefs.py" Content-Transfer-Encoding: base64 IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwppbXBvcnQgcGF0aGxpYgppbXBvcnQgcmUKaW1wb3J0 IHN5cwoKT1VUUFVUX1BSRUZJWCA9ICIuL3R5cGVkZWZzX291dHB1dCIKU0VQQVJBVE9SID0g Ij09PSIgICMgc2VwYXJhdG9yIGxpbmUgdXNlZCBpbiBvdXRwdXQgZmlsZXMKCgpkZWYgcmVh ZF9zdGF0ZW1lbnQodGV4dCwgc3RhcnQpOgogICAgIiIiRXh0cmFjdCB0ZXh0IG9mIGEgQyBz dGF0ZW1lbnQgc3RhcnRpbmcgYXQgZ2l2ZW4gaW5kZXgiIiIKICAgIGN1cnIgPSBzdGFydAog ICAgZGVwdGggPSAwICAjIGRlcHRoIG9mIHt9IG5lc3RpbmcKICAgIHdoaWxlIG5vdCAoZGVw dGggPT0gMCBhbmQgdGV4dFtjdXJyXSA9PSAiOyIpOgogICAgICAgIGlmIHRleHRbY3Vycl0g PT0gInsiOgogICAgICAgICAgICBkZXB0aCArPSAxCiAgICAgICAgZWxpZiB0ZXh0W2N1cnJd ID09ICJ9IjoKICAgICAgICAgICAgZGVwdGggLT0gMQogICAgICAgIGN1cnIgKz0gMQoKICAg IGN1cnIgKz0gMSAgIyB0cmFpbGluZyAiOyIKCiAgICByZXR1cm4gdGV4dFtzdGFydDpjdXJy XQoKCmRlZiBzdGFuZGFyZGl6ZSh0ZXh0KToKICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIlx0 IiwgIiAgICAiKSAgIyBubyB0YWJzCiAgICB0ZXh0ID0gcmUuc3ViKCJbIF0rIiwgIiAiLCB0 ZXh0KSAgIyBzcXVhc2ggc3BhY2VzCiAgICByZXR1cm4gdGV4dAoKCmRlZiBwcm9jZXNzX2Zp bGVzKHBhdGhfbGlzdCwgc3RhdGVtZW50X3JlZ2V4cCwgbmFtZV9yZWdleHApOgogICAgIiIi UGFyc2UgcGF0aF9saXN0LCByZXR1cm4ge3doYXRfaXNfZGVjbGFyZWQ6IGRlY2xhcmF0aW9u LCAuLi59IGRpY3QiIiIKICAgIHJlc3VsdCA9IHt9CiAgICBmb3IgcGF0aCBpbiBwYXRoX2xp c3Q6CiAgICAgICAgdGV4dCA9IHBhdGgucmVhZF90ZXh0KCkKCiAgICAgICAgZm9yIG1hdGNo IGluIHN0YXRlbWVudF9yZWdleHAuZmluZGl0ZXIodGV4dCk6CiAgICAgICAgICAgIHRyeToK ICAgICAgICAgICAgICAgIGRlY2wgPSByZWFkX3N0YXRlbWVudCh0ZXh0LCBtYXRjaC5zdGFy dCgwKSkKICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICAj IENvZGUgd2l0aCB1bm1hdGNoZWQgJ3snIGluIGNvbW1lbnRzIG1heSBicmVhayB0aGlzIGxp dHRsZSBwYXJzZXIuCiAgICAgICAgICAgICAgICAjIFJlcG9ydCBzdWNoIGNhc2VzIGFuZCBn byBvbi4KICAgICAgICAgICAgICAgIHByaW50KAogICAgICAgICAgICAgICAgICAgIGYiRmFp bGVkIHBhcnNpbmcge3BhdGh9IGF0IGluZGV4IHttYXRjaC5zdGFydCgwKX0uIiwgZmlsZT1z eXMuc3RkZXJyCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBwcmludCgiRmly c3QgMTAwIHN5bWJvbHM6IiwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICAgICAgICAgcHJp bnQodGV4dFttYXRjaC5zdGFydCgwKSA6IG1hdGNoLnN0YXJ0KDApICsgMTAwXSwgZmlsZT1z eXMuc3RkZXJyKQogICAgICAgICAgICAgICAgcHJpbnQoZmlsZT1zeXMuc3RkZXJyKQogICAg ICAgICAgICAgICAgY29udGludWUKCiAgICAgICAgICAgIGRlY2wgPSBzdGFuZGFyZGl6ZShk ZWNsKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBuYW1lID0gcmUuc2VhcmNo KG5hbWVfcmVnZXhwLCBkZWNsKVswXQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz IGU6CiAgICAgICAgICAgICAgICBwcmludChkZWNsKQogICAgICAgICAgICAgICAgcHJpbnQo CiAgICAgICAgICAgICAgICAgICAgZiJSZWdleHAge25hbWVfcmVnZXhwIXJ9IGNvdWxkIG5v dCBmaW5kIGRlY2xhcmF0aW9uIG5hbWUgaW4ge2RlY2whcn0iLAogICAgICAgICAgICAgICAg ICAgIGZpbGU9c3lzLnN0ZGVyciwKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAg IHJhaXNlIGUKICAgICAgICAgICAgcmVzdWx0W25hbWVdID0gZGVjbAogICAgcmV0dXJuIHJl c3VsdAoKCmRlZiBtYWluKCk6CiAgICBpZiBsZW4oc3lzLmFyZ3YpIG5vdCBpbiAoMywgNCk6 CiAgICAgICAgcHJpbnQoCiAgICAgICAgICAgIHIiIiIKVXNhZ2U6CiAgICAuL3R5cGVkZWZz LnB5IDxzdG10X3JlZ2V4cD4gPG5hbWVfcmVnZXhwPiBbPG91dHB1dF9wcmVmaXg+XQoKICAg ICMgRm9yIGZpbmRpbmcgZnVuY3Rpb24gdHlwZSB0eXBlZGVmcwogICAgLi90eXBlZGVmcy5w eSAnXnR5cGVkZWZbXlx7O10qXCgnICdcKFteXCldKlwpJwoKICAgICMgRm9yIGZpbmRpbmcg c3RydWN0L2VudW0gdHlwZWRlZnMKICAgIC4vdHlwZWRlZnMucHkgJ150eXBlZGVmXHMrKHN0 cnVjdHxlbnVtKScgJ1teXHNdKjskJwoKICAgICMgVGhlbiBjb21wYXJlCiAgICBkaWZmIC4v dHlwZWRlZnNfb3V0cHV0KgoKRGVzY3JpcHRpb246CiAgICBTY2FucyB3b3JraW5nIGRpcmVj dG9yeSBmb3IgY29kZSBkZWNsYXJhdGlvbnMgYW5kIGNvZGUgZGVjbGFyYXRpb24gZXhjZXJw dHMKICAgIGluIGRvY3MgbWF0Y2hpbmcgInN0bXRfcmVnZXhwIiByZWd1bGFyIGV4cHJlc3Np b24uIEZvciBlYWNoIGRlY2xhcmVkIAogICAgbmFtZSAoKS4KCiAgICBTY2FucyB3b3JraW5n IGRpcmVjdG9yeSBmb3Igc3RhdGVtZW50cyBtYXRjaGluZyA8c3RtdF9yZWdleHA+IGluIGNv ZGUgYW5kCiAgICBjb2RlIGV4Y2VycHRzIGluIGRvY3MuIDxuYW1lX3JlZ2V4cD4gaXMgdXNl ZCB0byBleHRyYWN0IG5hbWUgZnJvbSBkZWNsYXJhdGlvbi4KICAgIFdyaXRlcyBhbGwgZm91 bmQgc3RhdGVtZW50cyBmcm9tIGRvY3MgaW50byA8b3V0cHV0X3ByZWZpeD4uZG9jcy50eHQg YW5kCiAgICBjb3JyZXNwb25kaW5nIGRlY2xhcmF0aW9ucyBmcm9tIGNvZGUgaW50byA8b3V0 cHV0X3ByZWZpeD4uY29kZS50eHQKICAgICg8b3V0cHV0X3ByZWZpeD4gaXMgIi4vdHlwZWRl ZnNfb3V0cHV0IiBieSBkZWZhdWx0KQogICAgICAgICIiIi5zdHJpcCgpCiAgICAgICAgKQog ICAgICAgIGV4aXQoMSkKCiAgICBzdGF0ZW1lbnRfcmVnZXhwID0gcmUuY29tcGlsZShzeXMu YXJndlsxXSwgcmUuTVVMVElMSU5FKQogICAgbmFtZV9yZWdleHAgPSBzeXMuYXJndlsyXQog ICAgb3V0cHV0X3ByZWZpeCA9IHN5cy5hcmd2WzNdIGlmIGxlbihzeXMuYXJndikgPT0gNCBl bHNlIE9VVFBVVF9QUkVGSVgKCiAgICBkb2NzX3R5cGVkZWZzID0gcHJvY2Vzc19maWxlcygK ICAgICAgICBwYXRobGliLlBhdGgoIi4iKS5nbG9iKCIqKi8qLnNnbWwiKSwgc3RhdGVtZW50 X3JlZ2V4cCwgbmFtZV9yZWdleHAKICAgICkKICAgIGNvZGVfdHlwZWRlZnMgPSBwcm9jZXNz X2ZpbGVzKAogICAgICAgIHBhdGhsaWIuUGF0aCgiLiIpLmdsb2IoIioqLyouaCIpLCBzdGF0 ZW1lbnRfcmVnZXhwLCBuYW1lX3JlZ2V4cAogICAgKQoKICAgIGRvY3Nfb3V0cHV0ID0gW10K ICAgIGNvZGVfb3V0cHV0ID0gW10KICAgIGZvciBuYW1lLCBkZWNsIGluIGRvY3NfdHlwZWRl ZnMuaXRlbXMoKToKICAgICAgICBkb2NzX291dHB1dC5hcHBlbmQoZGVjbCkKICAgICAgICBj b2RlX291dHB1dC5hcHBlbmQoY29kZV90eXBlZGVmcy5nZXQobmFtZSwgZiJ7bmFtZSFyfSBp cyBub3QgcHJlc2VudCBpbiBjb2RlIikpCgogICAgcGF0aGxpYi5QYXRoKGYie291dHB1dF9w cmVmaXh9LmRvY3MudHh0Iikud3JpdGVfdGV4dCgKICAgICAgICBmIlxue1NFUEFSQVRPUn1c biIuam9pbihkb2NzX291dHB1dCkKICAgICkKICAgIHBhdGhsaWIuUGF0aChmIntvdXRwdXRf cHJlZml4fS5jb2RlLnR4dCIpLndyaXRlX3RleHQoCiAgICAgICAgZiJcbntTRVBBUkFUT1J9 XG4iLmpvaW4oY29kZV9vdXRwdXQpCiAgICApCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9f IjoKICAgIG1haW4oKQo= --------------iznsEOkUXhSRFn4bCcynohHh--