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 1tprnP-00DSEu-49 for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Mar 2025 16:40:36 +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 1tprnM-00G8wS-QE for pgsql-hackers@arkaria.postgresql.org; Wed, 05 Mar 2025 16:40:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tprnL-00G8wK-V7 for pgsql-hackers@lists.postgresql.org; Wed, 05 Mar 2025 16:40:32 +0000 Received: from fout-b6-smtp.messagingengine.com ([202.12.124.149]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tprnH-0018PK-1H for pgsql-hackers@postgresql.org; Wed, 05 Mar 2025 16:40:31 +0000 Received: from phl-compute-02.internal (phl-compute-02.phl.internal [10.202.2.42]) by mailfout.stl.internal (Postfix) with ESMTP id 1D09811401FF; Wed, 5 Mar 2025 11:40:26 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-02.internal (MEProxy); Wed, 05 Mar 2025 11:40:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eisentraut.org; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm3; t=1741192825; x= 1741279225; bh=uPiKgN/HRgr9k06Qy1DoEIq8dl8N4qDJ3eX3F0/Y0KA=; b=j Nzj6DNrTzDcOl4oNnM8wgWPJUN3ABeDG4sNATyI/g/41aSDuH1TlrsDc/AIH8Ele 9teVO0PVdAn7GMZKtZqx5U3pD5BCQnaqDP7B0QZb6lgNgb6cqXo2zU40/1h5mlOO eiqZrTJIsQNB5S/DEDgQeZ8c7OcIcsx/NCRl+XgRmxRQUnsCO4ekgeg5g32DKLUB QbXylnWcvUerIRVNbvvWwwJp7WtDqf32VuI/WZknr8UfX4ky25oBWrACuKtvCvyk nyqVDwD9/G03os7goGOqmYma9Rp/wNoG5+1FMuY4ul4XRik2XMuqdDZ02Jff25NH nAg71VdYzWA+iUtnTBJZQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1741192825; x=1741279225; bh=uPiKgN/HRgr9k06Qy1DoEIq8dl8N4qDJ3eX 3F0/Y0KA=; b=R2wvEZf+QKlOcjy7hhuCM1d70pAdZzaqNAoYLc68U3yPzPrSAjr eJoLxeFBuu/PGpTr1LV/U8S7TPEM1zGG4z4GFdS5o01warwHL09LYVh9l5MC4Dfo tLJhB15rn+uFjiUtwrMutke7IErLM9gXimL+lCzY+dVA4hoDe0CZNVYAO/JG2Z8Q ekDrP1T+1UCpjsvgpLv8f+aewg96e1lBpatyXt4zr5J+nMjgXH22wdluvLM1D1KS 5D8Q+3tsEthljVX4DX5tVIJdVOaeo9TMfu4st+Xb8UWY6NU3BQ1RhefoYSumoYA4 dz3jcits1RrrsqdoCc/p+x1qkI1p9z4wciw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddutdehfeegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurheptgfkffggfgfuhffvvehfjgesmhdtreertddv jeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhesvghish gvnhhtrhgruhhtrdhorhhgqeenucggtffrrghtthgvrhhnpeffjeekfeeufedvteejkeeh tdelleelgedtgeeuudfhteejfeelffeltdejueffteenucffohhmrghinhepghhithhhuh gsrdgtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho mhepphgvthgvrhesvghishgvnhhtrhgruhhtrdhorhhgpdhnsggprhgtphhtthhopedvpd hmohguvgepshhmthhpohhuthdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehp ohhsthhgrhgvshhqlhdrohhrghdprhgtphhtthhopehjrghkohgssegvghhgvghrrghpph hsrdgrth X-ME-Proxy: Feedback-ID: ie0a040ee:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 5 Mar 2025 11:40:24 -0500 (EST) Content-Type: multipart/mixed; boundary="------------QD7T6tKLPZIiFcpj98ZUgf1T" Message-ID: Date: Wed, 5 Mar 2025 17:40:22 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Use Python "Limited API" in PL/Python From: Peter Eisentraut To: pgsql-hackers Cc: Jakob Egger References: <1199D508-06D8-4916-84CD-462FA8EC8638@eggerapps.at> <3266c8e1-478e-47c0-8405-716687489f68@eisentraut.org> Content-Language: en-US In-Reply-To: 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. --------------QD7T6tKLPZIiFcpj98ZUgf1T Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 03.03.25 11:17, Peter Eisentraut wrote: > Update for the hackers list: This patch set was briefly committed but > had to be reverted because it crashed on some older Python versions; see > [0]. > > I have locally reproduced the problem with Python 3.6 and 3.7; Python > 3.8 is ok.  This matches the results from the buildfarm. > > I have poked at this a bit more but haven't gotten a good idea where or > how to fix it so far.  Help welcome. I have figured this out. There was a Python API change/bugfix between 3.7 and 3.8 that directly affects this patch. The relevant commit is . I have applied the workarounds described there to my patch set, and now it works for 3.6 and 3.7 as well. --------------QD7T6tKLPZIiFcpj98ZUgf1T Content-Type: text/plain; charset=UTF-8; name="v3-0001-Prepare-for-Python-Limited-API-in-PL-Python.patch" Content-Disposition: attachment; filename*0="v3-0001-Prepare-for-Python-Limited-API-in-PL-Python.patch" Content-Transfer-Encoding: base64 RnJvbSBkMjg2MDFkNTA0ZGZmNTdjNDkwODlmM2FkY2FmMGRjZTgzODkzZDgzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCA1IE1hciAyMDI1IDE3OjM4OjA2ICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2MyAxLzJdIFByZXBhcmUgZm9yIFB5dGhvbiAiTGltaXRlZCBBUEkiIGluIFBM L1B5dGhvbgoKVXNpbmcgdGhlIFB5dGhvbiBMaW1pdGVkIEFQSSB3b3VsZCBhbGxvdyBidWls ZGluZyBQTC9QeXRob24gYWdhaW5zdAphbnkgUHl0aG9uIDMueCB2ZXJzaW9uIGFuZCB1c2lu ZyBhbm90aGVyIFB5dGhvbiAzLnggdmVyc2lvbiBhdCBydW4KdGltZS4gIFRoaXMgY29tbWl0 IGRvZXMgbm90IGFjdGl2YXRlIHRoYXQsIGJ1dCBpdCBwcmVwYXJlcyB0aGUgY29kZSB0bwpv bmx5IHVzZSBBUElzIHN1cHBvcnRlZCBieSB0aGUgTGltaXRlZCBBUEkuCgpJbXBsZW1lbnRh dGlvbiBkZXRhaWxzOgoKLSBDb252ZXJ0IHN0YXRpYyB0eXBlcyB0byBoZWFwIHR5cGVzCiAg KGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvaG93dG8vaXNvbGF0aW5nLWV4dGVuc2lvbnMu aHRtbCNoZWFwLXR5cGVzKS4KCi0gUmVwbGFjZSBQeVJ1bl9TdHJpbmcoKSB3aXRoIGNvbXBv bmVudCBmdW5jdGlvbnMuCgotIFJlcGxhY2UgUHlMaXN0X1NFVF9JVEVNKCkgd2l0aCBQeUxp c3RfU2V0SXRlbSgpLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcv bWVzc2FnZS1pZC9mbGF0L2VlNDEwZGUxLTFlMGItNDc3MC1iMTI1LWVlZWZkNDcyNmEyNEBl aXNlbnRyYXV0Lm9yZwotLS0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X2N1cnNvcm9iamVjdC5j ICB8ICA4NCArKysrKysrKysrKysrKystLS0tLS0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X3Bs YW5vYmplY3QuYyAgICB8ICA3MCArKysrKysrKysrKy0tLS0tLQogc3JjL3BsL3BscHl0aG9u L3BscHlfcHJvY2VkdXJlLmMgICAgIHwgICA1ICstCiBzcmMvcGwvcGxweXRob24vcGxweV9y ZXN1bHRvYmplY3QuYyAgfCAxMDkgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMv cGwvcGxweXRob24vcGxweV9zdWJ4YWN0b2JqZWN0LmMgfCAgNDYgKysrKysrLS0tLS0KIHNy Yy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5jICAgICAgICB8ICAgNiArLQogNiBmaWxlcyBj aGFuZ2VkLCAyMTMgaW5zZXJ0aW9ucygrKSwgMTA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X2N1cnNvcm9iamVjdC5jIGIvc3JjL3BsL3BscHl0 aG9uL3BscHlfY3Vyc29yb2JqZWN0LmMKaW5kZXggYmIzZmE4YTM5MDkuLjFjNmJlNzU2MTIw IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxweXRob24vcGxweV9jdXJzb3JvYmplY3QuYworKysg Yi9zcmMvcGwvcGxweXRob24vcGxweV9jdXJzb3JvYmplY3QuYwpAQCAtMjAsNyArMjAsNyBA QAogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIHN0YXRpYyBQeU9iamVjdCAqUEx5 X2N1cnNvcl9xdWVyeShjb25zdCBjaGFyICpxdWVyeSk7Ci1zdGF0aWMgdm9pZCBQTHlfY3Vy c29yX2RlYWxsb2MoUHlPYmplY3QgKmFyZyk7CitzdGF0aWMgdm9pZCBQTHlfY3Vyc29yX2Rl YWxsb2MoUEx5Q3Vyc29yT2JqZWN0ICpzZWxmKTsKIHN0YXRpYyBQeU9iamVjdCAqUEx5X2N1 cnNvcl9pdGVybmV4dChQeU9iamVjdCAqc2VsZik7CiBzdGF0aWMgUHlPYmplY3QgKlBMeV9j dXJzb3JfZmV0Y2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKIHN0YXRpYyBQ eU9iamVjdCAqUEx5X2N1cnNvcl9jbG9zZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVu dXNlZCk7CkBAIC0zMywyMiArMzMsNDMgQEAgc3RhdGljIFB5TWV0aG9kRGVmIFBMeV9jdXJz b3JfbWV0aG9kc1tdID0gewogCXtOVUxMLCBOVUxMLCAwLCBOVUxMfQogfTsKIAotc3RhdGlj IFB5VHlwZU9iamVjdCBQTHlfQ3Vyc29yVHlwZSA9IHsKLQlQeVZhck9iamVjdF9IRUFEX0lO SVQoTlVMTCwgMCkKLQkudHBfbmFtZSA9ICJQTHlDdXJzb3IiLAotCS50cF9iYXNpY3NpemUg PSBzaXplb2YoUEx5Q3Vyc29yT2JqZWN0KSwKLQkudHBfZGVhbGxvYyA9IFBMeV9jdXJzb3Jf ZGVhbGxvYywKLQkudHBfZmxhZ3MgPSBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdT X0JBU0VUWVBFLAotCS50cF9kb2MgPSBQTHlfY3Vyc29yX2RvYywKLQkudHBfaXRlciA9IFB5 T2JqZWN0X1NlbGZJdGVyLAotCS50cF9pdGVybmV4dCA9IFBMeV9jdXJzb3JfaXRlcm5leHQs Ci0JLnRwX21ldGhvZHMgPSBQTHlfY3Vyc29yX21ldGhvZHMsCitzdGF0aWMgUHlUeXBlX1Ns b3QgUEx5Q3Vyc29yX3Nsb3RzW10gPQoreworCXsKKwkJUHlfdHBfZGVhbGxvYywgUEx5X2N1 cnNvcl9kZWFsbG9jCisJfSwKKwl7CisJCVB5X3RwX2RvYywgKGNoYXIgKikgUEx5X2N1cnNv cl9kb2MKKwl9LAorCXsKKwkJUHlfdHBfaXRlciwgUHlPYmplY3RfU2VsZkl0ZXIKKwl9LAor CXsKKwkJUHlfdHBfaXRlcm5leHQsIFBMeV9jdXJzb3JfaXRlcm5leHQKKwl9LAorCXsKKwkJ UHlfdHBfbWV0aG9kcywgUEx5X2N1cnNvcl9tZXRob2RzCisJfSwKKwl7CisJCTAsIE5VTEwK Kwl9CiB9OwogCitzdGF0aWMgUHlUeXBlX1NwZWMgUEx5Q3Vyc29yX3NwZWMgPQoreworCS5u YW1lID0gIlBMeUN1cnNvciIsCisJCS5iYXNpY3NpemUgPSBzaXplb2YoUEx5Q3Vyc29yT2Jq ZWN0KSwKKwkJLmZsYWdzID0gUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNF VFlQRSwKKwkJLnNsb3RzID0gUEx5Q3Vyc29yX3Nsb3RzLAorfTsKKworc3RhdGljIFB5VHlw ZU9iamVjdCAqUEx5X0N1cnNvclR5cGU7CisKIHZvaWQKIFBMeV9jdXJzb3JfaW5pdF90eXBl KHZvaWQpCiB7Ci0JaWYgKFB5VHlwZV9SZWFkeSgmUEx5X0N1cnNvclR5cGUpIDwgMCkKKwlQ THlfQ3Vyc29yVHlwZSA9IChQeVR5cGVPYmplY3QgKikgUHlUeXBlX0Zyb21TcGVjKCZQTHlD dXJzb3Jfc3BlYyk7CisJaWYgKCFQTHlfQ3Vyc29yVHlwZSkKIAkJZWxvZyhFUlJPUiwgImNv dWxkIG5vdCBpbml0aWFsaXplIFBMeV9DdXJzb3JUeXBlIik7CiB9CiAKQEAgLTgwLDggKzEw MSwxMiBAQCBQTHlfY3Vyc29yX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5KQogCXZvbGF0aWxl IE1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIAl2b2xhdGlsZSBSZXNvdXJjZU93bmVyIG9s ZG93bmVyOwogCi0JaWYgKChjdXJzb3IgPSBQeU9iamVjdF9OZXcoUEx5Q3Vyc29yT2JqZWN0 LCAmUEx5X0N1cnNvclR5cGUpKSA9PSBOVUxMKQorCWlmICgoY3Vyc29yID0gUHlPYmplY3Rf TmV3KFBMeUN1cnNvck9iamVjdCwgUEx5X0N1cnNvclR5cGUpKSA9PSBOVUxMKQogCQlyZXR1 cm4gTlVMTDsKKyNpZiBQWV9WRVJTSU9OX0hFWCA8IDB4MDMwODAwMDAKKwkvKiBXb3JrYXJv dW5kIGZvciBQeXRob24gaXNzdWUgMzU4MTA7IG5vIGxvbmdlciBuZWNlc3NhcnkgaW4gUHl0 aG9uIDMuOCAqLworCVB5X0lOQ1JFRihQTHlfQ3Vyc29yVHlwZSk7CisjZW5kaWYKIAljdXJz b3ItPnBvcnRhbG5hbWUgPSBOVUxMOwogCWN1cnNvci0+Y2xvc2VkID0gZmFsc2U7CiAJY3Vy c29yLT5tY3h0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCkBA IC0xNzcsOCArMjAyLDEyIEBAIFBMeV9jdXJzb3JfcGxhbihQeU9iamVjdCAqb2IsIFB5T2Jq ZWN0ICphcmdzKQogCQlyZXR1cm4gTlVMTDsKIAl9CiAKLQlpZiAoKGN1cnNvciA9IFB5T2Jq ZWN0X05ldyhQTHlDdXJzb3JPYmplY3QsICZQTHlfQ3Vyc29yVHlwZSkpID09IE5VTEwpCisJ aWYgKChjdXJzb3IgPSBQeU9iamVjdF9OZXcoUEx5Q3Vyc29yT2JqZWN0LCBQTHlfQ3Vyc29y VHlwZSkpID09IE5VTEwpCiAJCXJldHVybiBOVUxMOworI2lmIFBZX1ZFUlNJT05fSEVYIDwg MHgwMzA4MDAwMAorCS8qIFdvcmthcm91bmQgZm9yIFB5dGhvbiBpc3N1ZSAzNTgxMDsgbm8g bG9uZ2VyIG5lY2Vzc2FyeSBpbiBQeXRob24gMy44ICovCisJUHlfSU5DUkVGKFBMeV9DdXJz b3JUeXBlKTsKKyNlbmRpZgogCWN1cnNvci0+cG9ydGFsbmFtZSA9IE5VTEw7CiAJY3Vyc29y LT5jbG9zZWQgPSBmYWxzZTsKIAljdXJzb3ItPm1jeHQgPSBBbGxvY1NldENvbnRleHRDcmVh dGUoVG9wTWVtb3J5Q29udGV4dCwKQEAgLTI3MiwzMCArMzAxLDM1IEBAIFBMeV9jdXJzb3Jf cGxhbihQeU9iamVjdCAqb2IsIFB5T2JqZWN0ICphcmdzKQogfQogCiBzdGF0aWMgdm9pZAot UEx5X2N1cnNvcl9kZWFsbG9jKFB5T2JqZWN0ICphcmcpCitQTHlfY3Vyc29yX2RlYWxsb2Mo UEx5Q3Vyc29yT2JqZWN0ICpzZWxmKQogewotCVBMeUN1cnNvck9iamVjdCAqY3Vyc29yOwor I2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDMwODAwMDAKKwlQeVR5cGVPYmplY3QgKnRwID0g UHlfVFlQRShzZWxmKTsKKyNlbmRpZgogCVBvcnRhbAkJcG9ydGFsOwogCi0JY3Vyc29yID0g KFBMeUN1cnNvck9iamVjdCAqKSBhcmc7Ci0KLQlpZiAoIWN1cnNvci0+Y2xvc2VkKQorCWlm ICghc2VsZi0+Y2xvc2VkKQogCXsKLQkJcG9ydGFsID0gR2V0UG9ydGFsQnlOYW1lKGN1cnNv ci0+cG9ydGFsbmFtZSk7CisJCXBvcnRhbCA9IEdldFBvcnRhbEJ5TmFtZShzZWxmLT5wb3J0 YWxuYW1lKTsKIAogCQlpZiAoUG9ydGFsSXNWYWxpZChwb3J0YWwpKQogCQl7CiAJCQlVbnBp blBvcnRhbChwb3J0YWwpOwogCQkJU1BJX2N1cnNvcl9jbG9zZShwb3J0YWwpOwogCQl9Ci0J CWN1cnNvci0+Y2xvc2VkID0gdHJ1ZTsKKwkJc2VsZi0+Y2xvc2VkID0gdHJ1ZTsKIAl9Ci0J aWYgKGN1cnNvci0+bWN4dCkKKwlpZiAoc2VsZi0+bWN4dCkKIAl7Ci0JCU1lbW9yeUNvbnRl eHREZWxldGUoY3Vyc29yLT5tY3h0KTsKLQkJY3Vyc29yLT5tY3h0ID0gTlVMTDsKKwkJTWVt b3J5Q29udGV4dERlbGV0ZShzZWxmLT5tY3h0KTsKKwkJc2VsZi0+bWN4dCA9IE5VTEw7CiAJ fQotCWFyZy0+b2JfdHlwZS0+dHBfZnJlZShhcmcpOworCisJUHlPYmplY3RfRnJlZShzZWxm KTsKKyNpZiBQWV9WRVJTSU9OX0hFWCA+PSAweDAzMDgwMDAwCisJLyogVGhpcyB3YXMgbm90 IG5lZWRlZCBiZWZvcmUgUHl0aG9uIDMuOCAoUHl0aG9uIGlzc3VlIDM1ODEwKSAqLworCVB5 X0RFQ1JFRih0cCk7CisjZW5kaWYKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKZGlmZiAtLWdp dCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BsYW5vYmplY3QuYyBiL3NyYy9wbC9wbHB5dGhv bi9wbHB5X3BsYW5vYmplY3QuYwppbmRleCA5NDI3Njc0ZDJmNC4uM2UzODU1NTVlNWUgMTAw NjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BsYW5vYmplY3QuYworKysgYi9zcmMv cGwvcGxweXRob24vcGxweV9wbGFub2JqZWN0LmMKQEAgLTEyLDcgKzEyLDcgQEAKICNpbmNs dWRlICJwbHB5dGhvbi5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKLXN0YXRp YyB2b2lkIFBMeV9wbGFuX2RlYWxsb2MoUHlPYmplY3QgKmFyZyk7CitzdGF0aWMgdm9pZCBQ THlfcGxhbl9kZWFsbG9jKFBMeVBsYW5PYmplY3QgKnNlbGYpOwogc3RhdGljIFB5T2JqZWN0 ICpQTHlfcGxhbl9jdXJzb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKIHN0 YXRpYyBQeU9iamVjdCAqUEx5X3BsYW5fZXhlY3V0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmpl Y3QgKmFyZ3MpOwogc3RhdGljIFB5T2JqZWN0ICpQTHlfcGxhbl9zdGF0dXMoUHlPYmplY3Qg KnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKQEAgLTI2LDIwICsyNiwzNyBAQCBzdGF0aWMgUHlN ZXRob2REZWYgUEx5X3BsYW5fbWV0aG9kc1tdID0gewogCXtOVUxMLCBOVUxMLCAwLCBOVUxM fQogfTsKIAotc3RhdGljIFB5VHlwZU9iamVjdCBQTHlfUGxhblR5cGUgPSB7Ci0JUHlWYXJP YmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0JLnRwX25hbWUgPSAiUEx5UGxhbiIsCi0JLnRw X2Jhc2ljc2l6ZSA9IHNpemVvZihQTHlQbGFuT2JqZWN0KSwKLQkudHBfZGVhbGxvYyA9IFBM eV9wbGFuX2RlYWxsb2MsCi0JLnRwX2ZsYWdzID0gUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlf VFBGTEFHU19CQVNFVFlQRSwKLQkudHBfZG9jID0gUEx5X3BsYW5fZG9jLAotCS50cF9tZXRo b2RzID0gUEx5X3BsYW5fbWV0aG9kcywKK3N0YXRpYyBQeVR5cGVfU2xvdCBQTHlQbGFuX3Ns b3RzW10gPQoreworCXsKKwkJUHlfdHBfZGVhbGxvYywgUEx5X3BsYW5fZGVhbGxvYworCX0s CisJeworCQlQeV90cF9kb2MsIChjaGFyICopIFBMeV9wbGFuX2RvYworCX0sCisJeworCQlQ eV90cF9tZXRob2RzLCBQTHlfcGxhbl9tZXRob2RzCisJfSwKKwl7CisJCTAsIE5VTEwKKwl9 CiB9OwogCitzdGF0aWMgUHlUeXBlX1NwZWMgUEx5UGxhbl9zcGVjID0KK3sKKwkubmFtZSA9 ICJQTHlQbGFuIiwKKwkJLmJhc2ljc2l6ZSA9IHNpemVvZihQTHlQbGFuT2JqZWN0KSwKKwkJ LmZsYWdzID0gUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwKKwkJ LnNsb3RzID0gUEx5UGxhbl9zbG90cywKK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgKlBM eV9QbGFuVHlwZTsKKwogdm9pZAogUEx5X3BsYW5faW5pdF90eXBlKHZvaWQpCiB7Ci0JaWYg KFB5VHlwZV9SZWFkeSgmUEx5X1BsYW5UeXBlKSA8IDApCisJUEx5X1BsYW5UeXBlID0gKFB5 VHlwZU9iamVjdCAqKSBQeVR5cGVfRnJvbVNwZWMoJlBMeVBsYW5fc3BlYyk7CisJaWYgKCFQ THlfUGxhblR5cGUpCiAJCWVsb2coRVJST1IsICJjb3VsZCBub3QgaW5pdGlhbGl6ZSBQTHlf UGxhblR5cGUiKTsKIH0KIApAQCAtNDgsOCArNjUsMTIgQEAgUEx5X3BsYW5fbmV3KHZvaWQp CiB7CiAJUEx5UGxhbk9iamVjdCAqb2I7CiAKLQlpZiAoKG9iID0gUHlPYmplY3RfTmV3KFBM eVBsYW5PYmplY3QsICZQTHlfUGxhblR5cGUpKSA9PSBOVUxMKQorCWlmICgob2IgPSBQeU9i amVjdF9OZXcoUEx5UGxhbk9iamVjdCwgUEx5X1BsYW5UeXBlKSkgPT0gTlVMTCkKIAkJcmV0 dXJuIE5VTEw7CisjaWYgUFlfVkVSU0lPTl9IRVggPCAweDAzMDgwMDAwCisJLyogV29ya2Fy b3VuZCBmb3IgUHl0aG9uIGlzc3VlIDM1ODEwOyBubyBsb25nZXIgbmVjZXNzYXJ5IGluIFB5 dGhvbiAzLjggKi8KKwlQeV9JTkNSRUYoUEx5X1BsYW5UeXBlKTsKKyNlbmRpZgogCiAJb2It PnBsYW4gPSBOVUxMOwogCW9iLT5uYXJncyA9IDA7CkBAIC02MywyNSArODQsMzIgQEAgUEx5 X3BsYW5fbmV3KHZvaWQpCiBib29sCiBpc19QTHlQbGFuT2JqZWN0KFB5T2JqZWN0ICpvYikK IHsKLQlyZXR1cm4gb2ItPm9iX3R5cGUgPT0gJlBMeV9QbGFuVHlwZTsKKwlyZXR1cm4gb2It Pm9iX3R5cGUgPT0gUEx5X1BsYW5UeXBlOwogfQogCiBzdGF0aWMgdm9pZAotUEx5X3BsYW5f ZGVhbGxvYyhQeU9iamVjdCAqYXJnKQorUEx5X3BsYW5fZGVhbGxvYyhQTHlQbGFuT2JqZWN0 ICpzZWxmKQogewotCVBMeVBsYW5PYmplY3QgKm9iID0gKFBMeVBsYW5PYmplY3QgKikgYXJn OworI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDMwODAwMDAKKwlQeVR5cGVPYmplY3QgKnRw ID0gUHlfVFlQRShzZWxmKTsKKyNlbmRpZgogCi0JaWYgKG9iLT5wbGFuKQorCWlmIChzZWxm LT5wbGFuKQogCXsKLQkJU1BJX2ZyZWVwbGFuKG9iLT5wbGFuKTsKLQkJb2ItPnBsYW4gPSBO VUxMOworCQlTUElfZnJlZXBsYW4oc2VsZi0+cGxhbik7CisJCXNlbGYtPnBsYW4gPSBOVUxM OwogCX0KLQlpZiAob2ItPm1jeHQpCisJaWYgKHNlbGYtPm1jeHQpCiAJewotCQlNZW1vcnlD b250ZXh0RGVsZXRlKG9iLT5tY3h0KTsKLQkJb2ItPm1jeHQgPSBOVUxMOworCQlNZW1vcnlD b250ZXh0RGVsZXRlKHNlbGYtPm1jeHQpOworCQlzZWxmLT5tY3h0ID0gTlVMTDsKIAl9Ci0J YXJnLT5vYl90eXBlLT50cF9mcmVlKGFyZyk7CisKKwlQeU9iamVjdF9GcmVlKHNlbGYpOwor I2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDMwODAwMDAKKwkvKiBUaGlzIHdhcyBub3QgbmVl ZGVkIGJlZm9yZSBQeXRob24gMy44IChQeXRob24gaXNzdWUgMzU4MTApICovCisJUHlfREVD UkVGKHRwKTsKKyNlbmRpZgogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9w bHB5X3Byb2NlZHVyZS5jIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfcHJvY2VkdXJlLmMKaW5k ZXggYzM1YTNiODAxYWIuLmI0OTRlZWI0NzRmIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxweXRo b24vcGxweV9wcm9jZWR1cmUuYworKysgYi9zcmMvcGwvcGxweXRob24vcGxweV9wcm9jZWR1 cmUuYwpAQCAtMzUwLDYgKzM1MCw3IEBAIFBMeV9wcm9jZWR1cmVfY29tcGlsZShQTHlQcm9j ZWR1cmUgKnByb2MsIGNvbnN0IGNoYXIgKnNyYykKIHsKIAlQeU9iamVjdCAgICpjcnYgPSBO VUxMOwogCWNoYXIJICAgKm1zcmM7CisJUHlPYmplY3QgICAqY29kZTA7CiAKIAlwcm9jLT5n bG9iYWxzID0gUHlEaWN0X0NvcHkoUEx5X2ludGVycF9nbG9iYWxzKTsKIApAQCAtMzY4LDcg KzM2OSw5IEBAIFBMeV9wcm9jZWR1cmVfY29tcGlsZShQTHlQcm9jZWR1cmUgKnByb2MsIGNv bnN0IGNoYXIgKnNyYykKIAltc3JjID0gUEx5X3Byb2NlZHVyZV9tdW5nZV9zb3VyY2UocHJv Yy0+cHluYW1lLCBzcmMpOwogCS8qIFNhdmUgdGhlIG1hbmdsZWQgc291cmNlIGZvciBsYXRl ciBpbmNsdXNpb24gaW4gdHJhY2ViYWNrcyAqLwogCXByb2MtPnNyYyA9IE1lbW9yeUNvbnRl eHRTdHJkdXAocHJvYy0+bWN4dCwgbXNyYyk7Ci0JY3J2ID0gUHlSdW5fU3RyaW5nKG1zcmMs IFB5X2ZpbGVfaW5wdXQsIHByb2MtPmdsb2JhbHMsIE5VTEwpOworCWNvZGUwID0gUHlfQ29t cGlsZVN0cmluZyhtc3JjLCAiPHN0cmluZz4iLCBQeV9maWxlX2lucHV0KTsKKwlpZiAoY29k ZTApCisJCWNydiA9IFB5RXZhbF9FdmFsQ29kZShjb2RlMCwgcHJvYy0+Z2xvYmFscywgTlVM TCk7CiAJcGZyZWUobXNyYyk7CiAKIAlpZiAoY3J2ICE9IE5VTEwpCmRpZmYgLS1naXQgYS9z cmMvcGwvcGxweXRob24vcGxweV9yZXN1bHRvYmplY3QuYyBiL3NyYy9wbC9wbHB5dGhvbi9w bHB5X3Jlc3VsdG9iamVjdC5jCmluZGV4IDk1YWNjZTY1NDkzLi44MGZhMWQ3YWNjYyAxMDA2 NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlfcmVzdWx0b2JqZWN0LmMKKysrIGIvc3Jj L3BsL3BscHl0aG9uL3BscHlfcmVzdWx0b2JqZWN0LmMKQEAgLTEwLDcgKzEwLDcgQEAKICNp bmNsdWRlICJwbHB5X3Jlc3VsdG9iamVjdC5oIgogI2luY2x1ZGUgInBscHl0aG9uLmgiCiAK LXN0YXRpYyB2b2lkIFBMeV9yZXN1bHRfZGVhbGxvYyhQeU9iamVjdCAqYXJnKTsKK3N0YXRp YyB2b2lkIFBMeV9yZXN1bHRfZGVhbGxvYyhQTHlSZXN1bHRPYmplY3QgKnNlbGYpOwogc3Rh dGljIFB5T2JqZWN0ICpQTHlfcmVzdWx0X2NvbG5hbWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9i amVjdCAqdW51c2VkKTsKIHN0YXRpYyBQeU9iamVjdCAqUEx5X3Jlc3VsdF9jb2x0eXBlcyhQ eU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCk7CiBzdGF0aWMgUHlPYmplY3QgKlBM eV9yZXN1bHRfY29sdHlwbW9kcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCk7 CkBAIC0yNCwxNyArMjQsNiBAQCBzdGF0aWMgaW50CVBMeV9yZXN1bHRfYXNzX3N1YnNjcmlw dChQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqaXRlbSwgUHlPYmplY3QgKnZhbAogCiBzdGF0 aWMgY2hhciBQTHlfcmVzdWx0X2RvY1tdID0gIlJlc3VsdHMgb2YgYSBQb3N0Z3JlU1FMIHF1 ZXJ5IjsKIAotc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIFBMeV9yZXN1bHRfYXNfc2VxdWVu Y2UgPSB7Ci0JLnNxX2xlbmd0aCA9IFBMeV9yZXN1bHRfbGVuZ3RoLAotCS5zcV9pdGVtID0g UEx5X3Jlc3VsdF9pdGVtLAotfTsKLQotc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgUEx5X3Jl c3VsdF9hc19tYXBwaW5nID0gewotCS5tcF9sZW5ndGggPSBQTHlfcmVzdWx0X2xlbmd0aCwK LQkubXBfc3Vic2NyaXB0ID0gUEx5X3Jlc3VsdF9zdWJzY3JpcHQsCi0JLm1wX2Fzc19zdWJz Y3JpcHQgPSBQTHlfcmVzdWx0X2Fzc19zdWJzY3JpcHQsCi19OwotCiBzdGF0aWMgUHlNZXRo b2REZWYgUEx5X3Jlc3VsdF9tZXRob2RzW10gPSB7CiAJeyJjb2xuYW1lcyIsIFBMeV9yZXN1 bHRfY29sbmFtZXMsIE1FVEhfTk9BUkdTLCBOVUxMfSwKIAl7ImNvbHR5cGVzIiwgUEx5X3Jl c3VsdF9jb2x0eXBlcywgTUVUSF9OT0FSR1MsIE5VTEx9LApAQCAtNDQsMjMgKzMzLDU1IEBA IHN0YXRpYyBQeU1ldGhvZERlZiBQTHlfcmVzdWx0X21ldGhvZHNbXSA9IHsKIAl7TlVMTCwg TlVMTCwgMCwgTlVMTH0KIH07CiAKLXN0YXRpYyBQeVR5cGVPYmplY3QgUEx5X1Jlc3VsdFR5 cGUgPSB7Ci0JUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0JLnRwX25hbWUgPSAi UEx5UmVzdWx0IiwKLQkudHBfYmFzaWNzaXplID0gc2l6ZW9mKFBMeVJlc3VsdE9iamVjdCks Ci0JLnRwX2RlYWxsb2MgPSBQTHlfcmVzdWx0X2RlYWxsb2MsCi0JLnRwX2FzX3NlcXVlbmNl ID0gJlBMeV9yZXN1bHRfYXNfc2VxdWVuY2UsCi0JLnRwX2FzX21hcHBpbmcgPSAmUEx5X3Jl c3VsdF9hc19tYXBwaW5nLAotCS50cF9zdHIgPSAmUEx5X3Jlc3VsdF9zdHIsCi0JLnRwX2Zs YWdzID0gUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwKLQkudHBf ZG9jID0gUEx5X3Jlc3VsdF9kb2MsCi0JLnRwX21ldGhvZHMgPSBQTHlfcmVzdWx0X21ldGhv ZHMsCitzdGF0aWMgUHlUeXBlX1Nsb3QgUEx5UmVzdWx0X3Nsb3RzW10gPQoreworCXsKKwkJ UHlfdHBfZGVhbGxvYywgUEx5X3Jlc3VsdF9kZWFsbG9jCisJfSwKKwl7CisJCVB5X3NxX2xl bmd0aCwgUEx5X3Jlc3VsdF9sZW5ndGgKKwl9LAorCXsKKwkJUHlfc3FfaXRlbSwgUEx5X3Jl c3VsdF9pdGVtCisJfSwKKwl7CisJCVB5X21wX2xlbmd0aCwgUEx5X3Jlc3VsdF9sZW5ndGgK Kwl9LAorCXsKKwkJUHlfbXBfc3Vic2NyaXB0LCBQTHlfcmVzdWx0X3N1YnNjcmlwdAorCX0s CisJeworCQlQeV9tcF9hc3Nfc3Vic2NyaXB0LCBQTHlfcmVzdWx0X2Fzc19zdWJzY3JpcHQK Kwl9LAorCXsKKwkJUHlfdHBfc3RyLCBQTHlfcmVzdWx0X3N0cgorCX0sCisJeworCQlQeV90 cF9kb2MsIChjaGFyICopIFBMeV9yZXN1bHRfZG9jCisJfSwKKwl7CisJCVB5X3RwX21ldGhv ZHMsIFBMeV9yZXN1bHRfbWV0aG9kcworCX0sCisJeworCQkwLCBOVUxMCisJfQorfTsKKwor c3RhdGljIFB5VHlwZV9TcGVjIFBMeVJlc3VsdF9zcGVjID0KK3sKKwkubmFtZSA9ICJQTHlS ZXN1bHQiLAorCQkuYmFzaWNzaXplID0gc2l6ZW9mKFBMeVJlc3VsdE9iamVjdCksCisJCS5m bGFncyA9IFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsCisJCS5z bG90cyA9IFBMeVJlc3VsdF9zbG90cywKIH07CiAKK3N0YXRpYyBQeVR5cGVPYmplY3QgKlBM eV9SZXN1bHRUeXBlOworCiB2b2lkCiBQTHlfcmVzdWx0X2luaXRfdHlwZSh2b2lkKQogewot CWlmIChQeVR5cGVfUmVhZHkoJlBMeV9SZXN1bHRUeXBlKSA8IDApCisJUEx5X1Jlc3VsdFR5 cGUgPSAoUHlUeXBlT2JqZWN0ICopIFB5VHlwZV9Gcm9tU3BlYygmUEx5UmVzdWx0X3NwZWMp OworCWlmICghUEx5X1Jlc3VsdFR5cGUpCiAJCWVsb2coRVJST1IsICJjb3VsZCBub3QgaW5p dGlhbGl6ZSBQTHlfUmVzdWx0VHlwZSIpOwogfQogCkBAIC02OSw4ICs5MCwxMiBAQCBQTHlf cmVzdWx0X25ldyh2b2lkKQogewogCVBMeVJlc3VsdE9iamVjdCAqb2I7CiAKLQlpZiAoKG9i ID0gUHlPYmplY3RfTmV3KFBMeVJlc3VsdE9iamVjdCwgJlBMeV9SZXN1bHRUeXBlKSkgPT0g TlVMTCkKKwlpZiAoKG9iID0gUHlPYmplY3RfTmV3KFBMeVJlc3VsdE9iamVjdCwgUEx5X1Jl c3VsdFR5cGUpKSA9PSBOVUxMKQogCQlyZXR1cm4gTlVMTDsKKyNpZiBQWV9WRVJTSU9OX0hF WCA8IDB4MDMwODAwMDAKKwkvKiBXb3JrYXJvdW5kIGZvciBQeXRob24gaXNzdWUgMzU4MTA7 IG5vIGxvbmdlciBuZWNlc3NhcnkgaW4gUHl0aG9uIDMuOCAqLworCVB5X0lOQ1JFRihQTHlf UmVzdWx0VHlwZSk7CisjZW5kaWYKIAogCS8qIG9iLT50dXBsZXMgPSBOVUxMOyAqLwogCkBA IC04OSwyMCArMTE0LDI2IEBAIFBMeV9yZXN1bHRfbmV3KHZvaWQpCiB9CiAKIHN0YXRpYyB2 b2lkCi1QTHlfcmVzdWx0X2RlYWxsb2MoUHlPYmplY3QgKmFyZykKK1BMeV9yZXN1bHRfZGVh bGxvYyhQTHlSZXN1bHRPYmplY3QgKnNlbGYpCiB7Ci0JUEx5UmVzdWx0T2JqZWN0ICpvYiA9 IChQTHlSZXN1bHRPYmplY3QgKikgYXJnOwotCi0JUHlfWERFQ1JFRihvYi0+bnJvd3MpOwot CVB5X1hERUNSRUYob2ItPnJvd3MpOwotCVB5X1hERUNSRUYob2ItPnN0YXR1cyk7Ci0JaWYg KG9iLT50dXBkZXNjKQorI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDMwODAwMDAKKwlQeVR5 cGVPYmplY3QgKnRwID0gUHlfVFlQRShzZWxmKTsKKyNlbmRpZgorCisJUHlfWERFQ1JFRihz ZWxmLT5ucm93cyk7CisJUHlfWERFQ1JFRihzZWxmLT5yb3dzKTsKKwlQeV9YREVDUkVGKHNl bGYtPnN0YXR1cyk7CisJaWYgKHNlbGYtPnR1cGRlc2MpCiAJewotCQlGcmVlVHVwbGVEZXNj KG9iLT50dXBkZXNjKTsKLQkJb2ItPnR1cGRlc2MgPSBOVUxMOworCQlGcmVlVHVwbGVEZXNj KHNlbGYtPnR1cGRlc2MpOworCQlzZWxmLT50dXBkZXNjID0gTlVMTDsKIAl9CiAKLQlhcmct Pm9iX3R5cGUtPnRwX2ZyZWUoYXJnKTsKKwlQeU9iamVjdF9GcmVlKHNlbGYpOworI2lmIFBZ X1ZFUlNJT05fSEVYID49IDB4MDMwODAwMDAKKwkvKiBUaGlzIHdhcyBub3QgbmVlZGVkIGJl Zm9yZSBQeXRob24gMy44IChQeXRob24gaXNzdWUgMzU4MTApICovCisJUHlfREVDUkVGKHRw KTsKKyNlbmRpZgogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTI1LDcgKzE1Niw3IEBA IFBMeV9yZXN1bHRfY29sbmFtZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQp CiAJewogCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cihvYi0+dHVw ZGVzYywgaSk7CiAKLQkJUHlMaXN0X1NFVF9JVEVNKGxpc3QsIGksIFBMeVVuaWNvZGVfRnJv bVN0cmluZyhOYW1lU3RyKGF0dHItPmF0dG5hbWUpKSk7CisJCVB5TGlzdF9TZXRJdGVtKGxp c3QsIGksIFBMeVVuaWNvZGVfRnJvbVN0cmluZyhOYW1lU3RyKGF0dHItPmF0dG5hbWUpKSk7 CiAJfQogCiAJcmV0dXJuIGxpc3Q7CkBAIC0xNTEsNyArMTgyLDcgQEAgUEx5X3Jlc3VsdF9j b2x0eXBlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIAl7CiAJCUZvcm1f cGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKG9iLT50dXBkZXNjLCBpKTsKIAot CQlQeUxpc3RfU0VUX0lURU0obGlzdCwgaSwgUHlMb25nX0Zyb21Mb25nKGF0dHItPmF0dHR5 cGlkKSk7CisJCVB5TGlzdF9TZXRJdGVtKGxpc3QsIGksIFB5TG9uZ19Gcm9tTG9uZyhhdHRy LT5hdHR0eXBpZCkpOwogCX0KIAogCXJldHVybiBsaXN0OwpAQCAtMTc3LDcgKzIwOCw3IEBA IFBMeV9yZXN1bHRfY29sdHlwbW9kcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNl ZCkKIAl7CiAJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKG9iLT50 dXBkZXNjLCBpKTsKIAotCQlQeUxpc3RfU0VUX0lURU0obGlzdCwgaSwgUHlMb25nX0Zyb21M b25nKGF0dHItPmF0dHR5cG1vZCkpOworCQlQeUxpc3RfU2V0SXRlbShsaXN0LCBpLCBQeUxv bmdfRnJvbUxvbmcoYXR0ci0+YXR0dHlwbW9kKSk7CiAJfQogCiAJcmV0dXJuIGxpc3Q7CkBA IC0yMjcsNyArMjU4LDcgQEAgUEx5X3Jlc3VsdF9zdHIoUHlPYmplY3QgKmFyZykKIAlQTHlS ZXN1bHRPYmplY3QgKm9iID0gKFBMeVJlc3VsdE9iamVjdCAqKSBhcmc7CiAKIAlyZXR1cm4g UHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcyBzdGF0dXM9JVMgbnJvd3M9JVMgcm93cz0lUz4i LAotCQkJCQkJCQlQeV9UWVBFKG9iKS0+dHBfbmFtZSwKKwkJCQkJCQkJIlBMeVJlc3VsdCIs CiAJCQkJCQkJCW9iLT5zdGF0dXMsCiAJCQkJCQkJCW9iLT5ucm93cywKIAkJCQkJCQkJb2It PnJvd3MpOwpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscHl0aG9uL3BscHlfc3VieGFjdG9iamVj dC5jIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfc3VieGFjdG9iamVjdC5jCmluZGV4IDVjOTJh MGUwODlhLi5hZDI0YTlmYzRiOCAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlf c3VieGFjdG9iamVjdC5jCisrKyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3N1YnhhY3RvYmpl Y3QuYwpAQCAtMTUsNyArMTUsNiBAQAogTGlzdAkgICAqZXhwbGljaXRfc3VidHJhbnNhY3Rp b25zID0gTklMOwogCiAKLXN0YXRpYyB2b2lkIFBMeV9zdWJ0cmFuc2FjdGlvbl9kZWFsbG9j KFB5T2JqZWN0ICpzdWJ4YWN0KTsKIHN0YXRpYyBQeU9iamVjdCAqUEx5X3N1YnRyYW5zYWN0 aW9uX2VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKTsKIHN0YXRpYyBQ eU9iamVjdCAqUEx5X3N1YnRyYW5zYWN0aW9uX2V4aXQoUHlPYmplY3QgKnNlbGYsIFB5T2Jq ZWN0ICphcmdzKTsKIApAQCAtMzEsMjEgKzMwLDM1IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBQ THlfc3VidHJhbnNhY3Rpb25fbWV0aG9kc1tdID0gewogCXtOVUxMLCBOVUxMLCAwLCBOVUxM fQogfTsKIAotc3RhdGljIFB5VHlwZU9iamVjdCBQTHlfU3VidHJhbnNhY3Rpb25UeXBlID0g ewotCVB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotCS50cF9uYW1lID0gIlBMeVN1 YnRyYW5zYWN0aW9uIiwKLQkudHBfYmFzaWNzaXplID0gc2l6ZW9mKFBMeVN1YnRyYW5zYWN0 aW9uT2JqZWN0KSwKLQkudHBfZGVhbGxvYyA9IFBMeV9zdWJ0cmFuc2FjdGlvbl9kZWFsbG9j LAotCS50cF9mbGFncyA9IFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZ UEUsCi0JLnRwX2RvYyA9IFBMeV9zdWJ0cmFuc2FjdGlvbl9kb2MsCi0JLnRwX21ldGhvZHMg PSBQTHlfc3VidHJhbnNhY3Rpb25fbWV0aG9kcywKK3N0YXRpYyBQeVR5cGVfU2xvdCBQTHlT dWJ0cmFuc2FjdGlvbl9zbG90c1tdID0KK3sKKwl7CisJCVB5X3RwX2RvYywgKGNoYXIgKikg UEx5X3N1YnRyYW5zYWN0aW9uX2RvYworCX0sCisJeworCQlQeV90cF9tZXRob2RzLCBQTHlf c3VidHJhbnNhY3Rpb25fbWV0aG9kcworCX0sCisJeworCQkwLCBOVUxMCisJfQogfTsKIAor c3RhdGljIFB5VHlwZV9TcGVjIFBMeVN1YnRyYW5zYWN0aW9uX3NwZWMgPQoreworCS5uYW1l ID0gIlBMeVN1YnRyYW5zYWN0aW9uIiwKKwkJLmJhc2ljc2l6ZSA9IHNpemVvZihQTHlTdWJ0 cmFuc2FjdGlvbk9iamVjdCksCisJCS5mbGFncyA9IFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5 X1RQRkxBR1NfQkFTRVRZUEUsCisJCS5zbG90cyA9IFBMeVN1YnRyYW5zYWN0aW9uX3Nsb3Rz LAorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCAqUEx5X1N1YnRyYW5zYWN0aW9uVHlwZTsK KwogCiB2b2lkCiBQTHlfc3VidHJhbnNhY3Rpb25faW5pdF90eXBlKHZvaWQpCiB7Ci0JaWYg KFB5VHlwZV9SZWFkeSgmUEx5X1N1YnRyYW5zYWN0aW9uVHlwZSkgPCAwKQorCVBMeV9TdWJ0 cmFuc2FjdGlvblR5cGUgPSAoUHlUeXBlT2JqZWN0ICopIFB5VHlwZV9Gcm9tU3BlYygmUEx5 U3VidHJhbnNhY3Rpb25fc3BlYyk7CisJaWYgKCFQTHlfU3VidHJhbnNhY3Rpb25UeXBlKQog CQllbG9nKEVSUk9SLCAiY291bGQgbm90IGluaXRpYWxpemUgUEx5X1N1YnRyYW5zYWN0aW9u VHlwZSIpOwogfQogCkBAIC01NSwxMCArNjgsMTMgQEAgUEx5X3N1YnRyYW5zYWN0aW9uX25l dyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKIAlQTHlTdWJ0cmFuc2Fj dGlvbk9iamVjdCAqb2I7CiAKLQlvYiA9IFB5T2JqZWN0X05ldyhQTHlTdWJ0cmFuc2FjdGlv bk9iamVjdCwgJlBMeV9TdWJ0cmFuc2FjdGlvblR5cGUpOwotCisJb2IgPSBQeU9iamVjdF9O ZXcoUEx5U3VidHJhbnNhY3Rpb25PYmplY3QsIFBMeV9TdWJ0cmFuc2FjdGlvblR5cGUpOwog CWlmIChvYiA9PSBOVUxMKQogCQlyZXR1cm4gTlVMTDsKKyNpZiBQWV9WRVJTSU9OX0hFWCA8 IDB4MDMwODAwMDAKKwkvKiBXb3JrYXJvdW5kIGZvciBQeXRob24gaXNzdWUgMzU4MTA7IG5v IGxvbmdlciBuZWNlc3NhcnkgaW4gUHl0aG9uIDMuOCAqLworCVB5X0lOQ1JFRihQTHlfU3Vi dHJhbnNhY3Rpb25UeXBlKTsKKyNlbmRpZgogCiAJb2ItPnN0YXJ0ZWQgPSBmYWxzZTsKIAlv Yi0+ZXhpdGVkID0gZmFsc2U7CkBAIC02NiwxMiArODIsNiBAQCBQTHlfc3VidHJhbnNhY3Rp b25fbmV3KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogCXJldHVybiAoUHlP YmplY3QgKikgb2I7CiB9CiAKLS8qIFB5dGhvbiByZXF1aXJlcyBhIGRlYWxsb2MgZnVuY3Rp b24gdG8gYmUgZGVmaW5lZCAqLwotc3RhdGljIHZvaWQKLVBMeV9zdWJ0cmFuc2FjdGlvbl9k ZWFsbG9jKFB5T2JqZWN0ICpzdWJ4YWN0KQotewotfQotCiAvKgogICogc3VieGFjdC5fX2Vu dGVyX18oKSBvciBzdWJ4YWN0LmVudGVyKCkKICAqCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxw eXRob24vcGxweV90eXBlaW8uYyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3R5cGVpby5jCmlu ZGV4IDUxZTFkNjEwMjU5Li4xZDEyN2FlM2ZmZSAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0 aG9uL3BscHlfdHlwZWlvLmMKKysrIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfdHlwZWlvLmMK QEAgLTcyMyw3ICs3MjMsNyBAQCBQTHlMaXN0X0Zyb21BcnJheV9yZWN1cnNlKFBMeURhdHVt VG9PYiAqZWxtLCBpbnQgKmRpbXMsIGludCBuZGltLCBpbnQgZGltLAogCiAJCQlzdWJsaXN0 ID0gUEx5TGlzdF9Gcm9tQXJyYXlfcmVjdXJzZShlbG0sIGRpbXMsIG5kaW0sIGRpbSArIDEs CiAJCQkJCQkJCQkJCQlkYXRhcHRyX3AsIGJpdG1hcF9wLCBiaXRtYXNrX3ApOwotCQkJUHlM aXN0X1NFVF9JVEVNKGxpc3QsIGksIHN1Ymxpc3QpOworCQkJUHlMaXN0X1NldEl0ZW0obGlz dCwgaSwgc3VibGlzdCk7CiAJCX0KIAl9CiAJZWxzZQpAQCAtNzQyLDE0ICs3NDIsMTQgQEAg UEx5TGlzdF9Gcm9tQXJyYXlfcmVjdXJzZShQTHlEYXR1bVRvT2IgKmVsbSwgaW50ICpkaW1z LCBpbnQgbmRpbSwgaW50IGRpbSwKIAkJCWlmIChiaXRtYXAgJiYgKCpiaXRtYXAgJiBiaXRt YXNrKSA9PSAwKQogCQkJewogCQkJCVB5X0lOQ1JFRihQeV9Ob25lKTsKLQkJCQlQeUxpc3Rf U0VUX0lURU0obGlzdCwgaSwgUHlfTm9uZSk7CisJCQkJUHlMaXN0X1NldEl0ZW0obGlzdCwg aSwgUHlfTm9uZSk7CiAJCQl9CiAJCQllbHNlCiAJCQl7CiAJCQkJRGF0dW0JCWl0ZW12YWx1 ZTsKIAogCQkJCWl0ZW12YWx1ZSA9IGZldGNoX2F0dChkYXRhcHRyLCBlbG0tPnR5cGJ5dmFs LCBlbG0tPnR5cGxlbik7Ci0JCQkJUHlMaXN0X1NFVF9JVEVNKGxpc3QsIGksIGVsbS0+ZnVu YyhlbG0sIGl0ZW12YWx1ZSkpOworCQkJCVB5TGlzdF9TZXRJdGVtKGxpc3QsIGksIGVsbS0+ ZnVuYyhlbG0sIGl0ZW12YWx1ZSkpOwogCQkJCWRhdGFwdHIgPSBhdHRfYWRkbGVuZ3RoX3Bv aW50ZXIoZGF0YXB0ciwgZWxtLT50eXBsZW4sIGRhdGFwdHIpOwogCQkJCWRhdGFwdHIgPSAo Y2hhciAqKSBhdHRfYWxpZ25fbm9taW5hbChkYXRhcHRyLCBlbG0tPnR5cGFsaWduKTsKIAkJ CX0KCmJhc2UtY29tbWl0OiBhZDQwNjQ0ZWI4NTgyZmMxZjUzNzMzMGI3NmFlNzg5M2NhY2Y3 YjIxCi0tIAoyLjQ4LjEKCg== --------------QD7T6tKLPZIiFcpj98ZUgf1T Content-Type: text/plain; charset=UTF-8; name="v3-0002-Activate-Python-Limited-API-in-PL-Python.patch" Content-Disposition: attachment; filename="v3-0002-Activate-Python-Limited-API-in-PL-Python.patch" Content-Transfer-Encoding: base64 RnJvbSBkZDA3ZTYyZTA0MWRmYWU2N2MxMTgyMjI2Yjc3MmZlNTlhNzFmNzhlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCA1IE1hciAyMDI1IDE3OjM4OjA2ICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2MyAyLzJdIEFjdGl2YXRlIFB5dGhvbiAiTGltaXRlZCBBUEkiIGluIFBML1B5 dGhvbgoKVGhpcyBhbGxvd3MgYnVpbGRpbmcgUEwvUHl0aG9uIGFnYWluc3QgYW55IFB5dGhv biAzLnggdmVyc2lvbiBhbmQKdXNpbmcgYW5vdGhlciBQeXRob24gMy54IHZlcnNpb24gYXQg cnVuIHRpbWUuCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNz YWdlLWlkL2ZsYXQvZWU0MTBkZTEtMWUwYi00NzcwLWIxMjUtZWVlZmQ0NzI2YTI0QGVpc2Vu dHJhdXQub3JnCi0tLQogc3JjL3BsL3BscHl0aG9uL3BscHl0aG9uLmggfCA5ICsrKysrKysr KwogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9w bC9wbHB5dGhvbi9wbHB5dGhvbi5oIGIvc3JjL3BsL3BscHl0aG9uL3BscHl0aG9uLmgKaW5k ZXggZWM4MjI1NzcyNjAuLjA2ZmMxYTU0NDBmIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxweXRo b24vcGxweXRob24uaAorKysgYi9zcmMvcGwvcGxweXRob24vcGxweXRob24uaApAQCAtMTks NiArMTksMTUgQEAKICNlcnJvciBQeXRob24uaCBtdXN0IGJlIGluY2x1ZGVkIHZpYSBwbHB5 dGhvbi5oCiAjZW5kaWYKIAorLyoKKyAqIEVuYWJsZSBQeXRob24gTGltaXRlZCBBUEkKKyAq CisgKiBYWFggY3VycmVudGx5IG5vdCBlbmFibGVkIG9uIE1TVkMgYmVjYXVzZSBvZiBidWls ZCBmYWlsdXJlcworICovCisjaWYgIWRlZmluZWQoX01TQ19WRVIpCisjZGVmaW5lIFB5X0xJ TUlURURfQVBJIDB4MDMwMjAwMDAKKyNlbmRpZgorCiAvKgogICogUHVsbCBpbiBQeXRob24g aGVhZGVycyB2aWEgYSB3cmFwcGVyIGhlYWRlciwgdG8gY29udHJvbCB0aGUgc2NvcGUgb2YK ICAqIHRoZSBzeXN0ZW1faGVhZGVyIHByYWdtYSB0aGVyZWluLgotLSAKMi40OC4xCgo= --------------QD7T6tKLPZIiFcpj98ZUgf1T--