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.96) (envelope-from ) id 1w42mm-001oNP-1H for pgsql-hackers@arkaria.postgresql.org; Sat, 21 Mar 2026 20:19:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w42mk-00BaTp-2u for pgsql-hackers@arkaria.postgresql.org; Sat, 21 Mar 2026 20:19:03 +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.96) (envelope-from ) id 1w42mk-00BaTh-13 for pgsql-hackers@lists.postgresql.org; Sat, 21 Mar 2026 20:19:03 +0000 Received: from mail-qv1-xf34.google.com ([2607:f8b0:4864:20::f34]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w42mi-00000000N5Q-1PJN for pgsql-hackers@lists.postgresql.org; Sat, 21 Mar 2026 20:19:01 +0000 Received: by mail-qv1-xf34.google.com with SMTP id 6a1803df08f44-899eabc5292so28891366d6.0 for ; Sat, 21 Mar 2026 13:19:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774124339; cv=none; d=google.com; s=arc-20240605; b=ShTKSUzeve66YYKdRyy8QiS4VntlrQVJKxj5w4XKpJJ2EAOS82z7LPD5iwcMqR5Kjr P1G7qWDi+Z2wFpyKDREu92BA1TO7WRTlW7uq7ozUVXcggg777xGIyKAEynbLQ8yaix7r UapfC8tEjajw4660bYT4ZWYkMkzzwwgL1/Fq0Rffc4br8o6lqxwqqYvFjkvfLM397+16 mb3sYY+dBFGLupD9W5pB96a5kx5VrimSoWaUhKOePhjwX7n5tuZVaMac1xRN1NItxbNb cNXC5v0MdLlmbMfh8IvdVa8o8JWbRrfTQpzf5Ce4FzY1hYxBsikIBdGN9o/KD6i5COa6 ncJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:mime-version:dkim-signature; bh=xEc6YmVeRK3ZdujbmKn3Mm4DqmBHV5vHwCOUSX0knC0=; fh=R5aomB7OmRb5m1RgYyBkysq1NmoeEY347+bIg4VzZQE=; b=aysr5vZ5arDo/5p/IQn//Za2X2lRoKMS1UwkwhcjV/bP4Hkw/2BX4tKP5PSk4Nl8mF PIdX2dWCzD1fErcCl58Pz4y2+jqoKNPdwJkdiPc+ET8ku88cKk/Ayfvnzb5eczKSQYLy Q5lKZ419+WXOWjEWe2hXshA55xNrXHGu3mWrVsiGpOKu7tZCyctYZ2+bMpT04cXTov4X O6hwiFmmGA5sQ5s/2eheScMMyWV8U2/DLOKvmKm14Z1TsvYz5j0wZg0+rejeo5Rexvuj PNaNyvf4yfQK8sgb56ydGHkOs94CDs5EQu1v1DzcDC5xEYY/8ng2OKOghQZjpMibIoVN drtg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fittl.com; s=google; t=1774124339; x=1774729139; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=xEc6YmVeRK3ZdujbmKn3Mm4DqmBHV5vHwCOUSX0knC0=; b=aPXhqScU6ootzjGQX6beo9Vir7qXHPlVVwty05agi9CyJXcWXdrPYjCiUoaE5yyq5Z TbLbeEPlunvTqVIAFzK7XqcJZ/qNN0CMVGZ/t/+c1SY2BNDkgSFUHCL4gQ0428Z9mCl0 Mf9Pe5F8/07WBR+de5Ll47hhumdZQ114tGYFs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774124339; x=1774729139; h=cc:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=xEc6YmVeRK3ZdujbmKn3Mm4DqmBHV5vHwCOUSX0knC0=; b=hJCDTMgUjzPUc+1sK9LXB3yP3sqhdk9EpmEHiJDJF1gQM28nODuuGcGqS0m4Zeo5Ce qrYyhTx9/HS4cmA3XeFQ0v+KqHt06MUraWpKhy12dF22SIIG1gt760EAnV1lbLlxkpwc lzf4l9p6CLeDUlsC3SeAgaZ7LcEMz8wzIz3zNoYEWWNvdU3/S7gpd6iOP81vIcRV089H 1IX1FxTiPZAAeqnCaBM8nDoBdakSfbSrVU0unY9CVFJv9nLL/bXMyZdGN+4CVmv1a1i3 ecU/w0zYoBOySVo4FewkR6/yKlg6qM2HtH9jnNYOro5M7yi0rGKpZ7PmCi+LdpEYy1nS 6aDw== X-Gm-Message-State: AOJu0YydNdaGTD0b2m7WI8A0rRvJSw7Os71sXEYCCEflAo5RWLCW5Ua1 Yycx9ZTr+12BcSKVVnQSXOQSkYooqaP+Sav9ZE8vY/Ni0WpQCUgbhiUILe0BCc0RiIbAch0DSNn SMrXRSKvzw9pVbzykA3gY2E+jMuM+SXItPS0vMegw/kYNM2EV9KKqo11r X-Gm-Gg: ATEYQzwn75MyjUAtB9pf9d8FshICmQuTv8lQxys082S76KPW6u2EsSh5iT30U1XjEvm fdav9ITIpLAQxCrjE4MXXo2u1ILdTriT4s8eY/vyIeIKZRB/LKSZzFSUnxICU3Vn3nnFtbzPfwN 3vPNOJ9EYlDq6COJZWOQ3l3zcdsfqT54n2BVugz4ASfUZiJ1FfR023jfJf0w+ai2QoAYnLXu+8y T4+ti1NrGJmTMF5mwnbfsisQ9G6CNdzG8e+nY9m2f0TEyGaWEFsgTmlWdm46RapSqR4CvIJD/en al6YLgi+5/+SjlrNhC9tWuxKB+AHELhqn0w17REOZGMDRF5MSjN0Igm4j0XJY1SRzpkzB+qd X-Received: by 2002:ad4:5f08:0:b0:89c:8fc6:db2a with SMTP id 6a1803df08f44-89c8fc6dbd2mr87913626d6.43.1774124339360; Sat, 21 Mar 2026 13:18:59 -0700 (PDT) MIME-Version: 1.0 From: Lukas Fittl Date: Sat, 21 Mar 2026 13:18:23 -0700 X-Gm-Features: AaiRm53WHJWbNqgteXp6-_Fd-4yAIqYKuzQM2cW3akxa_x1UCh-4UcEVmhvnxks Message-ID: Subject: Avoid use of TopMemoryContext for resource owner cleanup in portals To: PostgreSQL Hackers Cc: Andres Freund , Zsolt Parragi Content-Type: multipart/mixed; boundary="0000000000000919e2064d8e8303" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000919e2064d8e8303 Content-Type: text/plain; charset="UTF-8" Hi, Whilst working on the stack-based instrumentation patch [0] which adds a new resource owner that gets set up during a query's execution, I encountered the following challenge: When allocating memory related to a resource, that is intended to be accessed during resource owner cleanup on abort, one cannot use a memory context that's below the active portal (e.g. the executor context), but must instead chose a longer-lived context, often TopMemoryContext. This is caused by the fact that At(Sub)Abort_Portals currently frees all "subsidiary" memory of failed portals (i.e. failed portal memory child contexts), and will be called in Abort(Sub)Transaction before the ResourceOwnerRelease calls. There appears to be no clear reason why the freeing of subsidiary portal memory is being done before resource owner release - one could argue that freeing memory earlier allows a later allocation to re-use it, but the only relevant case I could find was RecordTransactionAbort, and that is already handled with the pre-allocated TransactionAbortContext to make sure we don't fail allocations in out-of-memory aborts. Other non-portal users of the ResOwner infrastructure don't suffer from this problem, as they typically have a memory context set up that survives the abort. If we separate out the freeing of this subsidiary portal memory to run separately, after resource owner cleanup is done (0001 patch), we can remove a handful of uses of TopMemoryContext from the tree in LLVM JIT, WaitEventSet and OpenSSL (0002 patch, passes CI), and make it much less likely that new resource owner code accidentally leaks because it uses the top memory context and missed a pfree. It also happens to make things significantly easier for the stack-based instrumentation patch, since we could rely on the executor context to free memory allocations that need to be accessed during abort (to propagate instrumentation data up the stack). Thoughts? Thanks, Lukas [0]: https://www.postgresql.org/message-id/flat/CAP53PkzdBK8VJ1fS4AZ481LgMN8f9mJiC39ZRHqkFUSYq6KWmg%40mail.gmail.com -- Lukas Fittl --0000000000000919e2064d8e8303 Content-Type: application/octet-stream; name="v1-0002-Stop-using-TopMemoryContext-for-resource-owner-re.patch" Content-Disposition: attachment; filename="v1-0002-Stop-using-TopMemoryContext-for-resource-owner-re.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn0qav7a1 RnJvbSAyOTU5NTMxNWYwMTA3MWJkNTA1Y2Y1ZDFjOTQ4NTU0NzRmNWZhY2JlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDIxIE1hciAyMDI2IDExOjMwOjIwIC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MSAyLzJdIFN0 b3AgdXNpbmcgVG9wTWVtb3J5Q29udGV4dCBmb3IgcmVzb3VyY2Ugb3duZXIgcmVsYXRlZAogYWxs b2NhdGlvbnMKClRoaXMgcmVtb3ZlcyB0aGUgdW5uZWNlc3NhcnkgdXNlIG9mIFRvcE1lbW9yeUNv bnRleHQgZm9yIG9iamVjdHMgdGhhdApuZWVkIHRvIGJlIGFjY2Vzc2VkIGR1cmluZyByZXNvdXJj ZSBjbGVhbnVwLCBpbnN0ZWFkIGFsbG9jYXRpbmcgdGhlbQppbiB0aGUgY3VycmVudCBtZW1vcnkg Y29udGV4dC4gVGhpcyBpcyBtYWRlIHBvc3NpYmxlIHRoYW5rcyB0byB0aGUgcmVjZW50CnJlZmFj dG9yaW5nIHRoYXQgZGVsYXllZCBmcmVlaW5nIHBvcnRhbCBzdWJzaWRpYXJ5IG1lbW9yeSB1bnRp bCBhZnRlcgpSZXNvdXJjZU93bmVyUmVsZWFzZSBoYXMgY29tcGxldGVkLgoKVGhlIGN1cnJlbnQg bWVtb3J5IGNvbnRleHQgaXMgYXNzdW1lZCB0byBiZSBhIGNoaWxkIGNvbnRleHQgb2YgdGhlCmN1 cnJlbnRseSBhY3RpdmUgcG9ydGFsIChpZiBhbnkpLCBsaWtlIHRoZSBleGVjdXRvciBjb250ZXh0 LCBvciBhbm90aGVyCmtpbmQgb2YgbG9jYWwgY29udGV4dCB0aGF0IHN1cnZpdmVzIHVudGlsIGFm dGVyIHJlcyBvd25lciBjbGVhbnVwLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwu Y29tPgpSZXZpZXdlZCBCeToKRGlzY3Vzc2lvbjoKLS0tCiBjb250cmliL3BnY3J5cHRvL29wZW5z c2wuYyAgICAgICAgICAgICB8ICA2ICsrLS0tLQogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWpp dC5jICAgICAgICAgfCAxNCArKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv d2FpdGV2ZW50c2V0LmMgfCAgOSArKysrKysrLS0KIHNyYy9jb21tb24vY3J5cHRvaGFzaF9vcGVu c3NsLmMgICAgICAgIHwgIDcgKysrLS0tLQogc3JjL2NvbW1vbi9obWFjX29wZW5zc2wuYyAgICAg ICAgICAgICAgfCAgNyArKystLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyks IDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8vb3BlbnNzbC5j IGIvY29udHJpYi9wZ2NyeXB0by9vcGVuc3NsLmMKaW5kZXggZDNjMTJlN2ZkYTMuLmYwMWMxMDVk ZGRmIDEwMDY0NAotLS0gYS9jb250cmliL3BnY3J5cHRvL29wZW5zc2wuYworKysgYi9jb250cmli L3BnY3J5cHRvL29wZW5zc2wuYwpAQCAtMTc2LDcgKzE3Niw3IEBAIHB4X2ZpbmRfZGlnZXN0KGNv bnN0IGNoYXIgKm5hbWUsIFBYX01EICoqcmVzKQogCSAqIFRoZSBvcmRlciBpcyBjcnVjaWFsLCB0 byBtYWtlIHN1cmUgd2UgZG9uJ3QgbGVhayBhbnl0aGluZyBvbgogCSAqIG91dC1vZi1tZW1vcnkg b3Igb3RoZXIgZXJyb3IuCiAJICovCi0JZGlnZXN0ID0gTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1l bW9yeUNvbnRleHQsIHNpemVvZigqZGlnZXN0KSk7CisJZGlnZXN0ID0gcGFsbG9jKHNpemVvZigq ZGlnZXN0KSk7CiAKIAljdHggPSBFVlBfTURfQ1RYX2NyZWF0ZSgpOwogCWlmICghY3R4KQpAQCAt MTk2LDcgKzE5Niw2IEBAIHB4X2ZpbmRfZGlnZXN0KGNvbnN0IGNoYXIgKm5hbWUsIFBYX01EICoq cmVzKQogCWRpZ2VzdC0+b3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsKIAlSZXNvdXJjZU93 bmVyUmVtZW1iZXJPU1NMRGlnZXN0KGRpZ2VzdC0+b3duZXIsIGRpZ2VzdCk7CiAKLQkvKiBUaGUg UFhfTUQgb2JqZWN0IGlzIGFsbG9jYXRlZCBpbiB0aGUgY3VycmVudCBtZW1vcnkgY29udGV4dC4g Ki8KIAloID0gcGFsbG9jX29iamVjdChQWF9NRCk7CiAJaC0+cmVzdWx0X3NpemUgPSBkaWdlc3Rf cmVzdWx0X3NpemU7CiAJaC0+YmxvY2tfc2l6ZSA9IGRpZ2VzdF9ibG9ja19zaXplOwpAQCAtNzk0 LDcgKzc5Myw3IEBAIHB4X2ZpbmRfY2lwaGVyKGNvbnN0IGNoYXIgKm5hbWUsIFBYX0NpcGhlciAq KnJlcykKIAkgKiBUaGUgb3JkZXIgaXMgY3J1Y2lhbCwgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGxl YWsgYW55dGhpbmcgb24KIAkgKiBvdXQtb2YtbWVtb3J5IG9yIG90aGVyIGVycm9yLgogCSAqLwot CW9kID0gTWVtb3J5Q29udGV4dEFsbG9jWmVybyhUb3BNZW1vcnlDb250ZXh0LCBzaXplb2YoKm9k KSk7CisJb2QgPSBwYWxsb2MwKHNpemVvZigqb2QpKTsKIAlvZC0+Y2lwaCA9IGktPmNpcGg7CiAK IAkvKiBBbGxvY2F0ZSBhbiBFVlBfQ0lQSEVSX0NUWCBvYmplY3QuICovCkBAIC04MTIsNyArODEx LDYgQEAgcHhfZmluZF9jaXBoZXIoY29uc3QgY2hhciAqbmFtZSwgUFhfQ2lwaGVyICoqcmVzKQog CWlmIChpLT5jaXBoLT5jaXBoZXJfZnVuYykKIAkJb2QtPmV2cF9jaXBoID0gaS0+Y2lwaC0+Y2lw aGVyX2Z1bmMoKTsKIAotCS8qIFRoZSBQWF9DaXBoZXIgaXMgYWxsb2NhdGVkIGluIGN1cnJlbnQg bWVtb3J5IGNvbnRleHQgKi8KIAljID0gcGFsbG9jX29iamVjdChQWF9DaXBoZXIpOwogCWMtPmJs b2NrX3NpemUgPSBnZW5fb3NzbF9ibG9ja19zaXplOwogCWMtPmtleV9zaXplID0gZ2VuX29zc2xf a2V5X3NpemU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0LmMgYi9z cmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0LmMKaW5kZXggMmU4YWE0NzQ5ZGIuLmFjZmZkNzIz NWJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0LmMKKysrIGIvc3Jj L2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdC5jCkBAIC0yMzMsOCArMjMzLDcgQEAgbGx2bV9jcmVh dGVfY29udGV4dChpbnQgaml0RmxhZ3MpCiAKIAlSZXNvdXJjZU93bmVyRW5sYXJnZShDdXJyZW50 UmVzb3VyY2VPd25lcik7CiAKLQljb250ZXh0ID0gTWVtb3J5Q29udGV4dEFsbG9jWmVybyhUb3BN ZW1vcnlDb250ZXh0LAotCQkJCQkJCQkJIHNpemVvZihMTFZNSml0Q29udGV4dCkpOworCWNvbnRl eHQgPSBwYWxsb2MwKHNpemVvZihMTFZNSml0Q29udGV4dCkpOwogCWNvbnRleHQtPmJhc2UuZmxh Z3MgPSBqaXRGbGFnczsKIAogCS8qIGVuc3VyZSBjbGVhbnVwICovCkBAIC03NjAsOCArNzU5LDEz IEBAIGxsdm1fY29tcGlsZV9tb2R1bGUoTExWTUppdENvbnRleHQgKmNvbnRleHQpCiAJCXBmcmVl KGZpbGVuYW1lKTsKIAl9CiAKKwkvKgorCSAqIEFsbG9jYXRlIGhhbmRsZSBpbiB0aGUgc2FtZSBs b25nLWxpdmVkIGNvbnRleHQgYXMgdGhlIExMVk1KaXRDb250ZXh0LAorCSAqIHNpbmNlIHRoaXMg Y2FuIGJlIGNhbGxlZCBkdXJpbmcgZXhwcmVzc2lvbiBldmFsdWF0aW9uIGluIGEgc2hvcnQtbGl2 ZWQKKwkgKiBwZXItdHVwbGUgY29udGV4dC4KKwkgKi8KIAloYW5kbGUgPSAoTExWTUppdEhhbmRs ZSAqKQotCQlNZW1vcnlDb250ZXh0QWxsb2MoVG9wTWVtb3J5Q29udGV4dCwgc2l6ZW9mKExMVk1K aXRIYW5kbGUpKTsKKwkJTWVtb3J5Q29udGV4dEFsbG9jKEdldE1lbW9yeUNodW5rQ29udGV4dChj b250ZXh0KSwgc2l6ZW9mKExMVk1KaXRIYW5kbGUpKTsKIAogCS8qCiAJICogRW1pdCB0aGUgY29k ZS4gTm90ZSB0aGF0IHRoaXMgY2FuLCBkZXBlbmRpbmcgb24gdGhlIG9wdGltaXphdGlvbgpAQCAt ODA1LDggKzgwOSw4IEBAIGxsdm1fY29tcGlsZV9tb2R1bGUoTExWTUppdENvbnRleHQgKmNvbnRl eHQpCiAJY29udGV4dC0+bW9kdWxlID0gTlVMTDsKIAljb250ZXh0LT5jb21waWxlZCA9IHRydWU7 CiAKLQkvKiByZW1lbWJlciBlbWl0dGVkIGNvZGUgZm9yIGNsZWFudXAgYW5kIGxvb2t1cHMgKi8K LQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcE1lbW9yeUNvbnRleHQpOwor CS8qIHJlbWVtYmVyIGVtaXR0ZWQgY29kZSBmb3IgY2xlYW51cCBhbmQgbG9va3Vwcy4gKi8KKwlv bGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEdldE1lbW9yeUNodW5rQ29udGV4dChj b250ZXh0KSk7CiAJY29udGV4dC0+aGFuZGxlcyA9IGxhcHBlbmQoY29udGV4dC0+aGFuZGxlcywg aGFuZGxlKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKaW5kZXggMGYyMjhlMWU3YjguLjQxNGU5ODA1ZWVi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYwpAQCAtMzg5LDkgKzM4OSwx NCBAQCBDcmVhdGVXYWl0RXZlbnRTZXQoUmVzb3VyY2VPd25lciByZXNvd25lciwgaW50IG5ldmVu dHMpCiAjZW5kaWYKIAogCWlmIChyZXNvd25lciAhPSBOVUxMKQorCXsKIAkJUmVzb3VyY2VPd25l ckVubGFyZ2UocmVzb3duZXIpOwotCi0JZGF0YSA9IChjaGFyICopIE1lbW9yeUNvbnRleHRBbGxv Y1plcm8oVG9wTWVtb3J5Q29udGV4dCwgc3opOworCQlkYXRhID0gKGNoYXIgKikgcGFsbG9jMChz eik7CisJfQorCWVsc2UKKwl7CisJCWRhdGEgPSAoY2hhciAqKSBNZW1vcnlDb250ZXh0QWxsb2Na ZXJvKFRvcE1lbW9yeUNvbnRleHQsIHN6KTsKKwl9CiAKIAlzZXQgPSAoV2FpdEV2ZW50U2V0ICop IGRhdGE7CiAJZGF0YSArPSBNQVhBTElHTihzaXplb2YoV2FpdEV2ZW50U2V0KSk7CmRpZmYgLS1n aXQgYS9zcmMvY29tbW9uL2NyeXB0b2hhc2hfb3BlbnNzbC5jIGIvc3JjL2NvbW1vbi9jcnlwdG9o YXNoX29wZW5zc2wuYwppbmRleCA1MWI3ZTA0MDkzMy4uMjM3MzY5OWFhNzUgMTAwNjQ0Ci0tLSBh L3NyYy9jb21tb24vY3J5cHRvaGFzaF9vcGVuc3NsLmMKKysrIGIvc3JjL2NvbW1vbi9jcnlwdG9o YXNoX29wZW5zc2wuYwpAQCAtMzQsMTIgKzM0LDExIEBACiAjZW5kaWYKIAogLyoKLSAqIEluIHRo ZSBiYWNrZW5kLCB1c2UgYW4gYWxsb2NhdGlvbiBpbiBUb3BNZW1vcnlDb250ZXh0IHRvIGNvdW50 IGZvcgotICogcmVzb3duZXIgY2xlYW51cCBoYW5kbGluZy4gIEluIHRoZSBmcm9udGVuZCwgdXNl IG1hbGxvYyB0byBiZSBhYmxlCi0gKiB0byByZXR1cm4gYSBmYWlsdXJlIHN0YXR1cyBiYWNrIHRv IHRoZSBjYWxsZXIuCisgKiBJbiBiYWNrZW5kcywgdXNlIGFuIGFsbG9jYXRpb24gaW4gdGhlIGN1 cnJlbnQgbWVtb3J5IGNvbnRleHQuICBJbiBmcm9udGVuZCwKKyAqIHVzZSBtYWxsb2MgdG8gYmUg YWJsZSB0byByZXR1cm4gYSBmYWlsdXJlIHN0YXR1cyBiYWNrIHRvIHRoZSBjYWxsZXIuCiAgKi8K ICNpZm5kZWYgRlJPTlRFTkQKLSNkZWZpbmUgQUxMT0Moc2l6ZSkgTWVtb3J5Q29udGV4dEFsbG9j KFRvcE1lbW9yeUNvbnRleHQsIHNpemUpCisjZGVmaW5lIEFMTE9DKHNpemUpIHBhbGxvYyhzaXpl KQogI2RlZmluZSBGUkVFKHB0cikgcGZyZWUocHRyKQogI2Vsc2UKICNkZWZpbmUgQUxMT0Moc2l6 ZSkgbWFsbG9jKHNpemUpCmRpZmYgLS1naXQgYS9zcmMvY29tbW9uL2htYWNfb3BlbnNzbC5jIGIv c3JjL2NvbW1vbi9obWFjX29wZW5zc2wuYwppbmRleCA3OTkwODIyODU0Yy4uOTdhMWIwNzU2ZGQg MTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vaG1hY19vcGVuc3NsLmMKKysrIGIvc3JjL2NvbW1vbi9o bWFjX29wZW5zc2wuYwpAQCAtMzQsMTMgKzM0LDEyIEBACiAjZW5kaWYKIAogLyoKLSAqIEluIGJh Y2tlbmQsIHVzZSBhbiBhbGxvY2F0aW9uIGluIFRvcE1lbW9yeUNvbnRleHQgdG8gY291bnQgZm9y IHJlc293bmVyCi0gKiBjbGVhbnVwIGhhbmRsaW5nIGlmIG5lY2Vzc2FyeS4gIEluIGZyb250ZW5k LCB1c2UgbWFsbG9jIHRvIGJlIGFibGUgdG8gcmV0dXJuCi0gKiBhIGZhaWx1cmUgc3RhdHVzIGJh Y2sgdG8gdGhlIGNhbGxlci4KKyAqIEluIGJhY2tlbmRzLCB1c2UgYW4gYWxsb2NhdGlvbiBpbiB0 aGUgY3VycmVudCBtZW1vcnkgY29udGV4dC4gIEluIGZyb250ZW5kLAorICogdXNlIG1hbGxvYyB0 byBiZSBhYmxlIHRvIHJldHVybiBhIGZhaWx1cmUgc3RhdHVzIGJhY2sgdG8gdGhlIGNhbGxlci4K ICAqLwogI2lmbmRlZiBGUk9OVEVORAogI2RlZmluZSBVU0VfUkVTT1dORVJfRk9SX0hNQUMKLSNk ZWZpbmUgQUxMT0Moc2l6ZSkgTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1lbW9yeUNvbnRleHQsIHNp emUpCisjZGVmaW5lIEFMTE9DKHNpemUpIHBhbGxvYyhzaXplKQogI2RlZmluZSBGUkVFKHB0cikg cGZyZWUocHRyKQogI2Vsc2UJCQkJCQkJLyogRlJPTlRFTkQgKi8KICNkZWZpbmUgQUxMT0Moc2l6 ZSkgbWFsbG9jKHNpemUpCi0tIAoyLjQ3LjEKCg== --0000000000000919e2064d8e8303 Content-Type: application/octet-stream; name="v1-0001-Allow-resource-owners-to-access-subsidiary-portal.patch" Content-Disposition: attachment; filename="v1-0001-Allow-resource-owners-to-access-subsidiary-portal.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn0qav750 RnJvbSA2NDczZDNlMTYzNmZiM2ZiYjNmMjhkMTE4YjliNTBjZDExMTY4ZDNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDIxIE1hciAyMDI2IDExOjAyOjM3IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MSAxLzJdIEFs bG93IHJlc291cmNlIG93bmVycyB0byBhY2Nlc3Mgc3Vic2lkaWFyeSBwb3J0YWwKIG1lbW9yeSBk dXJpbmcgY2xlYW51cAoKRHVyaW5nIEFib3J0VHJhbnNhY3Rpb24vQWJvcnRTdWJUcmFuc2FjdGlv biB3ZSBmcmVlIHBvcnRhbCBjaGlsZCBtZW1vcnkKY29udGV4dHMsIGFrYSBzdWJzaWRpYXJ5IGNv bnRleHRzLCBhaGVhZCBvZiBmcmVlaW5nIHRoZSBwb3J0YWwgbWVtb3J5Cml0c2VsZiwgaW4gb3Jk ZXIgdG8gbm90IGtlZXAgc2hvcnQtbGl2ZWQgY29udGV4dHMgbGlrZSB0aGUgZXhlY3V0b3IKY29u dGV4dCBhcm91bmQgbG9uZ2VyIHRoYW4gbmVlZGVkLCBlLmcuIGluIHRoZSBjYXNlIG9mIGhvbGRh YmxlIGN1cnNvcnMuCgpIb3dldmVyLCB3ZSBjdXJyZW50bHkgZnJlZSBzdWNoIG1lbW9yeSB3aGVu IHdlIGZpcnN0IG1hcmsgdGhlIHBvcnRhbAphcyBhYm9ydGVkLCBhbmQgYmVmb3JlIGNhbGxpbmcg UmVzb3VyY2VPd25lclJlbGVhc2UuIFRoaXMgcHJlc2VudHMgYQpjaGFsbGVuZ2UgZm9yIGFueSBy ZXNvdXJjZSBvd25lciB0aGF0IHdhbnRzIHRvIGFjY2VzcyBtZW1vcnkgdGhhdCB3YXMKYWxsb2Nh dGVkIGluc2lkZSB0aGUgcG9ydGFsIChlLmcuIHdpdGggdGhlIGV4ZWN1dG9yIGNvbnRleHQpIGFu ZCBpcwpyZWdpc3RlcmVkIHRvIGEgcmVzb3VyY2Ugb3duZXIgdGhhdCB3YW50cyB0byB1c2UgaXQg ZHVyaW5nIGNsZWFuIHVwLiBUaGUKY3VycmVudCB3b3JrYXJvdW5kIGlzIHRvIGFsbG9jYXRlIHN1 Y2ggbWVtb3J5IGluIHRoZSBUb3BNZW1vcnlDb250ZXh0LAphbmQgdXNlIHByZWNpc2UgcGZyZWUo Li4pIGNhbGxzIGluIGJvdGggYWJvcnQgYW5kIHN1Y2Nlc3MgY2FzZXMgdG8gYXZvaWQKbGVha3Mu CgpJbnN0ZWFkLCBzZXBhcmF0ZSBtYXJraW5nIHBvcnRhbHMgYXMgYWJvcnRlZCAoYW5kIGNhbGxp bmcgdGhlIGNsZWFudXAgaG9vaykKZnJvbSByZWxlYXNpbmcgc3Vic2lkaWFyeSBtZW1vcnkgY29u dGV4dHMuIERlbGF5IHJlbGVhc2luZyB0aGUgbWVtb3J5CmNvbnRleHRzIHVudGlsIFJlc291cmNl T3duZXJSZWxlYXNlIGhhcyBiZWVuIGNhbGxlZCBmb3IgYWxsIHBoYXNlcy4gRm9yCmV4YW1wbGUs IHRoaXMgYWxsb3dzIGFsbG9jYXRpbmcgbWVtb3J5IGluIHRoZSBwZXItcmVzb3VyY2UgY29udGV4 dCBhbmQKdGhlbiBhY2Nlc3NpbmcgaXQgd2hlbiBjbGVhbmluZyB1cCBhIHJlc291cmNlLgoKU2lu Y2UgYWJvcnQgaGFuZGxpbmcgaXMgbm90IHN1cHBvc2VkIHRvIGFsbG9jYXRlIG5ldyBtZW1vcnkg KHRoZQpwcmUtYWxsb2NhdGVkIFRyYW5zYWN0aW9uQWJvcnRDb250ZXh0IGV4aXN0cyBmb3IgdGhh dCBwdXJwb3NlKSwgdGhpcwpzaG91bGQgaGF2ZSBsaW1pdGVkIHBlcmZvcm1hbmNlIGltcGFjdCBp biBwcmFjdGljZSwgYW5kIHdpbGwgYWxsb3cgYm90aApwb3RlbnRpYWwgcmVmYWN0b3JpbmdzIG9m IGN1cnJlbnQgcmVzb3VyY2Ugb3duZXJzLCBhbmQgYXZvaWQgY29tcGxleGl0eQppbiBmdXR1cmUg cGF0Y2hlcy4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQg Qnk6CkRpc2N1c3Npb246Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICB8 IDI0ICsrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyB8IDYw ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFs LmggICAgICAgICB8ICAyICsKIDMgZmlsZXMgY2hhbmdlZCwgODIgaW5zZXJ0aW9ucygrKSwgNCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggYWFmYzUzZTAxNjQu LjNmZDM1MzJkNDUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0zMDAwLDYgKzMw MDAsMTUgQEAgQWJvcnRUcmFuc2FjdGlvbih2b2lkKQogCQlSZXNvdXJjZU93bmVyUmVsZWFzZShU b3BUcmFuc2FjdGlvblJlc291cmNlT3duZXIsCiAJCQkJCQkJIFJFU09VUkNFX1JFTEVBU0VfQUZU RVJfTE9DS1MsCiAJCQkJCQkJIGZhbHNlLCB0cnVlKTsKKworCQkvKgorCQkgKiBOb3cgdGhhdCBy ZXNvdXJjZSBvd25lciBjbGVhbnVwIGhhcyBmaW5pc2hlZCwgd2UgY2FuIHJlbGVhc2UgdGhlCisJ CSAqIG1lbW9yeSByZXNvdXJjZSBvd25lcnMgbWlnaHQgaGF2ZSBzdGlsbCBhY2Nlc3NlZCBkdXJp bmcgY2xlYW51cC4KKwkJICoKKwkJICogTm90ZSB0aGUgcG9ydGFsIGNvbnRleHQgaXRzZWxmIGlz IGZyZWVkIGxhdGVyIGluIFBvcnRhbERyb3AuCisJCSAqLworCQlBdEFib3J0X1BvcnRhbHNfUmVs ZWFzZU1lbW9yeSgpOworCiAJCXNtZ3JEb1BlbmRpbmdEZWxldGVzKGZhbHNlKTsKIAogCQlBdEVP WGFjdF9HVUMoZmFsc2UsIDEpOwpAQCAtMzAxNyw2ICszMDI2LDEwIEBAIEFib3J0VHJhbnNhY3Rp b24odm9pZCkKIAkJQXRFT1hhY3RfTG9naWNhbEN0bCgpOwogCQlwZ3N0YXRfcmVwb3J0X3hhY3Rf dGltZXN0YW1wKDApOwogCX0KKwllbHNlCisJeworCQlBdEFib3J0X1BvcnRhbHNfUmVsZWFzZU1l bW9yeSgpOworCX0KIAogCS8qCiAJICogU3RhdGUgcmVtYWlucyBUUkFOU19BQk9SVCB1bnRpbCBD bGVhbnVwVHJhbnNhY3Rpb24oKS4KQEAgLTQ5MzksNiArNDk1Miw3IEBAIEFib3J0T3V0T2ZBbnlU cmFuc2FjdGlvbih2b2lkKQogCQkJCSAqIHdlIG5lZWQgdG8gc2h1dCBkb3duIGJlZm9yZSBkb2lu ZyBDbGVhbnVwVHJhbnNhY3Rpb24uCiAJCQkJICovCiAJCQkJQXRBYm9ydF9Qb3J0YWxzKCk7CisJ CQkJQXRBYm9ydF9Qb3J0YWxzX1JlbGVhc2VNZW1vcnkoKTsKIAkJCQlDbGVhbnVwVHJhbnNhY3Rp b24oKTsKIAkJCQlzLT5ibG9ja1N0YXRlID0gVEJMT0NLX0RFRkFVTFQ7CiAJCQkJYnJlYWs7CkBA IC00OTY4LDYgKzQ5ODIsNyBAQCBBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24odm9pZCkKIAkJCQkJ CQkJCSAgIHMtPnBhcmVudC0+c3ViVHJhbnNhY3Rpb25JZCwKIAkJCQkJCQkJCSAgIHMtPmN1clRy YW5zYWN0aW9uT3duZXIsCiAJCQkJCQkJCQkgICBzLT5wYXJlbnQtPmN1clRyYW5zYWN0aW9uT3du ZXIpOworCQkJCQlBdFN1YkFib3J0X1BvcnRhbHNfUmVsZWFzZU1lbW9yeShzLT5zdWJUcmFuc2Fj dGlvbklkKTsKIAkJCQl9CiAJCQkJQ2xlYW51cFN1YlRyYW5zYWN0aW9uKCk7CiAJCQkJcyA9IEN1 cnJlbnRUcmFuc2FjdGlvblN0YXRlOwkvKiBjaGFuZ2VkIGJ5IHBvcCAqLwpAQCAtNTM3MSw2ICs1 Mzg2LDE1IEBAIEFib3J0U3ViVHJhbnNhY3Rpb24odm9pZCkKIAkJUmVzb3VyY2VPd25lclJlbGVh c2Uocy0+Y3VyVHJhbnNhY3Rpb25Pd25lciwKIAkJCQkJCQkgUkVTT1VSQ0VfUkVMRUFTRV9BRlRF Ul9MT0NLUywKIAkJCQkJCQkgZmFsc2UsIGZhbHNlKTsKKworCQkvKgorCQkgKiBOb3cgdGhhdCBy ZXNvdXJjZSBvd25lciBjbGVhbnVwIGhhcyBmaW5pc2hlZCwgd2UgY2FuIHJlbGVhc2UgdGhlCisJ CSAqIG1lbW9yeSByZXNvdXJjZSBvd25lcnMgbWlnaHQgaGF2ZSBzdGlsbCBhY2Nlc3NlZCBkdXJp bmcgY2xlYW51cC4KKwkJICoKKwkJICogTm90ZSB0aGUgcG9ydGFsIGNvbnRleHQgaXRzZWxmIGlz IGZyZWVkIGxhdGVyIGluIFBvcnRhbERyb3AuCisJCSAqLworCQlBdFN1YkFib3J0X1BvcnRhbHNf UmVsZWFzZU1lbW9yeShzLT5zdWJUcmFuc2FjdGlvbklkKTsKKwogCQlBdFN1YkFib3J0X3NtZ3Io KTsKIAogCQlBdEVPWGFjdF9HVUMoZmFsc2UsIHMtPmd1Y05lc3RMZXZlbCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9wb3J0YWxtZW0uYwppbmRleCA0OTNmOWIwZWUxOS4uZDQ2YzQyNzYyYzggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAtODM5LDEyICs4MzksNDAgQEAgQXRBYm9ydF9Qb3J0 YWxzKHZvaWQpCiAJCSAqIFBvcnRhbERyb3AuCiAJCSAqLwogCQlwb3J0YWwtPnJlc293bmVyID0g TlVMTDsKKwl9Cit9CisKKy8qCisgKiBSZWxlYXNlIHN1YnNpZGlhcnkgbWVtb3J5IGZvciBhYm9y dGVkIHBvcnRhbHMuCisgKgorICogVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgUmVzb3VyY2VPd25lclJl bGVhc2UsIHNvIHRoYXQgYW55IHJlc291cmNlcyBzdGlsbAorICogcmVmZXJlbmNpbmcgcG9ydGFs IG1lbW9yeSBoYXZlIGJlZW4gY2xlYW5lZCB1cCBmaXJzdC4KKyAqLwordm9pZAorQXRBYm9ydF9Q b3J0YWxzX1JlbGVhc2VNZW1vcnkodm9pZCkKK3sKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwor CVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKKworCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFs SGFzaFRhYmxlKTsKKworCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9z ZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCXsKKwkJUG9ydGFsCQlwb3J0YWwgPSBoZW50 cnktPnBvcnRhbDsKKworCQkvKiBEbyBub3RoaW5nIHRvIGN1cnNvcnMgaGVsZCBvdmVyIGZyb20g YSBwcmV2aW91cyB0cmFuc2FjdGlvbi4gKi8KKwkJaWYgKHBvcnRhbC0+Y3JlYXRlU3ViaWQgPT0g SW52YWxpZFN1YlRyYW5zYWN0aW9uSWQpCisJCQljb250aW51ZTsKKworCQkvKiBEbyBub3RoaW5n IHRvIGF1dG8taGVsZCBjdXJzb3JzLiAqLworCQlpZiAocG9ydGFsLT5hdXRvSGVsZCkKKwkJCWNv bnRpbnVlOwogCiAJCS8qCiAJCSAqIEFsdGhvdWdoIHdlIGNhbid0IGRlbGV0ZSB0aGUgcG9ydGFs IGRhdGEgc3RydWN0dXJlIHByb3Blciwgd2UgY2FuCiAJCSAqIHJlbGVhc2UgYW55IG1lbW9yeSBp biBzdWJzaWRpYXJ5IGNvbnRleHRzLCBzdWNoIGFzIGV4ZWN1dG9yIHN0YXRlLgotCQkgKiBUaGUg Y2xlYW51cCBob29rIHdhcyB0aGUgbGFzdCB0aGluZyB0aGF0IG1pZ2h0IGhhdmUgbmVlZGVkIGRh dGEKLQkJICogdGhlcmUuICBCdXQgbGVhdmUgYWN0aXZlIHBvcnRhbHMgYWxvbmUuCisJCSAqIFRo ZSBwb3J0YWwgY2xlYW51cCBob29rIG9yIFJlc291cmNlT3duZXJSZWxlYXNlIHdlcmUgdGhlIGxh c3QgdGhpbmcKKwkJICogdGhhdCBtaWdodCBoYXZlIG5lZWRlZCBkYXRhIHRoZXJlLiAgQnV0IGxl YXZlIGFjdGl2ZSBwb3J0YWxzIGFsb25lLgogCQkgKi8KIAkJaWYgKHBvcnRhbC0+c3RhdHVzICE9 IFBPUlRBTF9BQ1RJVkUpCiAJCQlNZW1vcnlDb250ZXh0RGVsZXRlQ2hpbGRyZW4ocG9ydGFsLT5w b3J0YWxDb250ZXh0KTsKQEAgLTEwNzQsMTEgKzExMDIsMzUgQEAgQXRTdWJBYm9ydF9Qb3J0YWxz KFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAkJICovCiAJCXBvcnRhbC0+cmVzb3duZXIgPSBO VUxMOwogCisJfQorfQorCisvKgorICogUmVsZWFzZSBzdWJzaWRpYXJ5IG1lbW9yeSBmb3IgcG9y dGFscyBhYm9ydGVkIGluIGEgc3VidHJhbnNhY3Rpb24uCisgKgorICogVGhpcyBpcyBjYWxsZWQg YWZ0ZXIgUmVzb3VyY2VPd25lclJlbGVhc2UsIHNvIHRoYXQgYW55IHJlc291cmNlcyBzdGlsbAor ICogcmVmZXJlbmNpbmcgcG9ydGFsIG1lbW9yeSBoYXZlIGJlZW4gY2xlYW5lZCB1cCBmaXJzdC4K KyAqLwordm9pZAorQXRTdWJBYm9ydF9Qb3J0YWxzX1JlbGVhc2VNZW1vcnkoU3ViVHJhbnNhY3Rp b25JZCBteVN1YmlkKQoreworCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisJUG9ydGFsSGFzaEVu dCAqaGVudHJ5OworCisJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwor CisJd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0 YXR1cykpICE9IE5VTEwpCisJeworCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFsOwor CisJCWlmIChwb3J0YWwtPmNyZWF0ZVN1YmlkICE9IG15U3ViaWQpCisJCQljb250aW51ZTsKKwog CQkvKgogCQkgKiBBbHRob3VnaCB3ZSBjYW4ndCBkZWxldGUgdGhlIHBvcnRhbCBkYXRhIHN0cnVj dHVyZSBwcm9wZXIsIHdlIGNhbgogCQkgKiByZWxlYXNlIGFueSBtZW1vcnkgaW4gc3Vic2lkaWFy eSBjb250ZXh0cywgc3VjaCBhcyBleGVjdXRvciBzdGF0ZS4KLQkJICogVGhlIGNsZWFudXAgaG9v ayB3YXMgdGhlIGxhc3QgdGhpbmcgdGhhdCBtaWdodCBoYXZlIG5lZWRlZCBkYXRhCi0JCSAqIHRo ZXJlLgorCQkgKiBUaGUgcG9ydGFsIGNsZWFudXAgaG9vayBvciBSZXNvdXJjZU93bmVyUmVsZWFz ZSB3ZXJlIHRoZSBsYXN0IHRoaW5nCisJCSAqIHRoYXQgbWlnaHQgaGF2ZSBuZWVkZWQgZGF0YSB0 aGVyZS4KIAkJICovCiAJCU1lbW9yeUNvbnRleHREZWxldGVDaGlsZHJlbihwb3J0YWwtPnBvcnRh bENvbnRleHQpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggYTdiZWRiMTJjMTguLjQxMzI5ZThlYjI0 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9wb3J0YWwuaApAQCAtMjE1LDYgKzIxNSw3IEBAIHR5cGVkZWYgc3RydWN0IFBvcnRh bERhdGEKIGV4dGVybiB2b2lkIEVuYWJsZVBvcnRhbE1hbmFnZXIodm9pZCk7CiBleHRlcm4gYm9v bCBQcmVDb21taXRfUG9ydGFscyhib29sIGlzUHJlcGFyZSk7CiBleHRlcm4gdm9pZCBBdEFib3J0 X1BvcnRhbHModm9pZCk7CitleHRlcm4gdm9pZCBBdEFib3J0X1BvcnRhbHNfUmVsZWFzZU1lbW9y eSh2b2lkKTsKIGV4dGVybiB2b2lkIEF0Q2xlYW51cF9Qb3J0YWxzKHZvaWQpOwogZXh0ZXJuIHZv aWQgUG9ydGFsRXJyb3JDbGVhbnVwKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXRTdWJDb21taXRfUG9y dGFscyhTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCkBAIC0yMjUsNiArMjI2LDcgQEAgZXh0ZXJu IHZvaWQgQXRTdWJBYm9ydF9Qb3J0YWxzKFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAkJCQkJ CQkgICBTdWJUcmFuc2FjdGlvbklkIHBhcmVudFN1YmlkLAogCQkJCQkJCSAgIFJlc291cmNlT3du ZXIgbXlYYWN0T3duZXIsCiAJCQkJCQkJICAgUmVzb3VyY2VPd25lciBwYXJlbnRYYWN0T3duZXIp OworZXh0ZXJuIHZvaWQgQXRTdWJBYm9ydF9Qb3J0YWxzX1JlbGVhc2VNZW1vcnkoU3ViVHJhbnNh Y3Rpb25JZCBteVN1YmlkKTsKIGV4dGVybiB2b2lkIEF0U3ViQ2xlYW51cF9Qb3J0YWxzKFN1YlRy YW5zYWN0aW9uSWQgbXlTdWJpZCk7CiBleHRlcm4gUG9ydGFsIENyZWF0ZVBvcnRhbChjb25zdCBj aGFyICpuYW1lLCBib29sIGFsbG93RHVwLCBib29sIGR1cFNpbGVudCk7CiBleHRlcm4gUG9ydGFs IENyZWF0ZU5ld1BvcnRhbCh2b2lkKTsKLS0gCjIuNDcuMQoK --0000000000000919e2064d8e8303--