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 1os0Xu-00033M-7w for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Nov 2022 11:44:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1os0Wv-0003PU-4r for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Nov 2022 11:43:05 +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 1os0Wu-0003PL-GU for pgsql-hackers@lists.postgresql.org; Mon, 07 Nov 2022 11:43:04 +0000 Received: from esa12.fujitsucc.c3s2.iphmx.com ([216.71.156.125]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1os0Wr-0000ZP-GU for pgsql-hackers@lists.postgresql.org; Mon, 07 Nov 2022 11:43:03 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1667821381; x=1699357381; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=kwpwkTfscYtvtDQjBrHR1d8HyOXDQTba7Y3SMloPeGM=; b=OGfiGZ7jffVHz3JLvILpQ+OiXKF1zoFsX8Ozz683mD3goPjOp42xrZco vuEmU73AlKh0+vVbzx4RtKSpbBBskqkpx7/gpP8/PLPS9EljdhEvNTNhs bEM5TfsSxbSbAxF5AdEbI7YmMpSsM8fgunL7xCihHsC1bZ9C1pCporAel Bf3LAyAJTRFP5bJGTmMlJ5RAJWEJetiiBH3L2Nn92zctdzpfuSa3thURR wyfWK2lkZhet4XSr+uoMAjkt+nTrgn/GMmWv0HPM9E6cEVzsZ9ARUF01q F2BF9nNjOp/Hf67Y2LeBQj33q5iWqUX7lUiaJHZvLBNDoQiqEA8QtUwVX w==; X-IronPort-AV: E=McAfee;i="6500,9779,10523"; a="69527595" X-IronPort-AV: E=Sophos;i="5.96,143,1665414000"; d="scan'208";a="69527595" Received: from mail-os0jpn01lp2107.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.107]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Nov 2022 20:42:57 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GvXtlWUUU3FfIkuetNTcGyp1qJzBAaAf+whYA4aWummqD8c4T9lhpna3Hx3N9YuP7QhXm/K8X7lCj0n/jj48uM9tIVP8mcPjuVqp8N2+PLzY3lheur1i8PqxqPizVXnsrEyLO+4OnW5Ph0yc8UhvBbwQGyjCopLVJ0jrhMOgva3YOsU9SpdiwjXPAhbli506YVy/ZTdOvMZMfQbTXkDf4ZjLsAk2gib5M6S2w7H1HsyC4CxZMy6RDFXOeFcb52waxabFGksPii1xa5KrXGbNcoocmAgFFpYgym7tfcbFhpqU400UldEbeVxV3fc1Q4cPNvj95BSHT9yg56CZp3Rkhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kwpwkTfscYtvtDQjBrHR1d8HyOXDQTba7Y3SMloPeGM=; b=m1yzeQ2sECeAjfPlO/heXdjzEHh5r4w2Dk6/fKCfsYtDCbghVZZjCnKHEnC7ArgKPc4n0LOCl1A4GGT3ELeH7OtdfhwwWxFWVHzcYvtHozFPWZBEVUGARPPBziAOfJMfHfEr/e2uUkJtBLFBzjEwWqmvVyyWWsBK36tRN13e5CaYqk8x51EsHh1SSvY1TseFbFqehstPHyI6wbi6gyS7unIA1CCopnG7O/GzbyWQXjVmzhwKHkVIodPcKBS+N8NqK65ifgUfRV0OKrX8ui+Px3jtEZY9/DrQ3QN6JpvWvv6rzDSn6NR3UuE/0zPPBhOoF5Hrnf/XcB6WRMwchXkKjA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from TYAPR01MB5866.jpnprd01.prod.outlook.com (2603:1096:404:8056::13) by TYCPR01MB9845.jpnprd01.prod.outlook.com (2603:1096:400:20c::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.26; Mon, 7 Nov 2022 11:42:54 +0000 Received: from TYAPR01MB5866.jpnprd01.prod.outlook.com ([fe80::f4b:1dbf:dc2:dc91]) by TYAPR01MB5866.jpnprd01.prod.outlook.com ([fe80::f4b:1dbf:dc2:dc91%5]) with mapi id 15.20.5791.026; Mon, 7 Nov 2022 11:42:53 +0000 From: "Hayato Kuroda (Fujitsu)" To: "houzj.fnst@fujitsu.com" CC: "wangw.fnst@fujitsu.com" , Peter Smith , Dilip Kumar , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers , Masahiko Sawada , Amit Kapila Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX67NoYEfdPmEWsDniEZU+Lb6zlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACmRgIAB78qAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgvEYCAAWyzgIAGSRYAgAFBqICAAFYagIABchmAgAGqzwCAATq/gIAFJCcAgAAGs4CABE7agIAK5WIAgABrY4CABb89gIADiS0AgAEu2oCAAHBpgIADPWcAgATEBgCADdxGAIAAQoGAgAD/DACAABzggIAF+30AgAHyDYCAEzpGgIANkEmAgAI+mYCABjCwcA== Date: Mon, 7 Nov 2022 11:42:53 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9ZTU0N2YwMmYtZmQ5MS00ZTFjLTljMWItNjkwMjFlMTg1?= =?utf-8?B?ZmU4O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0xMS0wM1QxMjo1NjoyNlo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYAPR01MB5866:EE_|TYCPR01MB9845:EE_ x-ms-office365-filtering-correlation-id: 6c1bfcb5-6625-4545-c686-08dac0b5351c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: fd2NXXLImhe+ysdbmONnR6PCWsOV4KU682Kw2K/F96/NLFEqtdDs6+c9pjL2psouwVfYXpomEJOsKbP6QwzqvNZLkmoyvOv8qL1o9MsfaFNdenwdnZLkOY+JhAavbDBexq0MfAkeVQEAZqsIguxwdyFYPgULDmm4MaJ3UEnkUSmtsqqj3ETSsaXOZwoC2KfSWDa5orDg2TGLdhZqwWbt+Vnhr58eQm4EaAnM2vlfI2zBwPzMcIEIPZhvAUqEQPmPKIK1+iLe1/nBT1RcdYqWoixdBb4epkRT2bkOlF58H6Wfklkk9QsZWUX8cu+YtXWy3ViKcblYk9Zq37FWjCrIkXGU4HE5vjdHHa1NZ3lwKRQRT06rj+q7af2eGr6YAQm75rGXytlsy3OJ2W2T/SOzbtYSlcwXjhF2iluw9vDI5BS7NeaddvpZ4m6+SbCbtAEBb7LlZFmmVchVFBh4v+pvZ7Ouv3Yj1gv4OAj+43nf+CIk3cyfzmDr4pwdL/2FNU4WH5ElGusGH7XJs7x33Kn+C/X9oa7a8Atp9nYgUqhk9dr3GRrAfh1tI0j/K2rEVqIXE9nFvfQmhaYbJ7Gh6IW2o1dMXQE8WsJFXWRfIUXAUTns5y4pkQig3/XxrCx3dLO2eEFgUXX+0hdD2LiqmAKrmKOAkkiCL9PhpNmv8lIImIMwdXqPt0u/27haXpcV3MtxWuCicaxPqpabPvNJpdOX6q/vcyqYxtqlvnXfKH7sZEuF75fTxKd+twPlS9xgN+AFgW6vzA9ovjH9V107Shy6dvgqZbKqMFFkeLDHkAHN05JSgUpB0X+8W1QkOzS8sHqT x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYAPR01MB5866.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(136003)(346002)(366004)(396003)(376002)(1590799012)(451199015)(1580799009)(85182001)(316002)(33656002)(5660300002)(6636002)(71200400001)(55016003)(38070700005)(83380400001)(478600001)(2906002)(4326008)(52536014)(41300700001)(8936002)(6862004)(66556008)(76116006)(66946007)(66446008)(8676002)(64756008)(66476007)(9686003)(186003)(26005)(54906003)(82960400001)(38100700002)(122000001)(86362001)(6506007)(7696005)(21314003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SzV5VlRDWjErbTBIK0Job1pUR045MGtSU0c4bXdZVVpXcmZoaXFaYlhQRFRI?= =?utf-8?B?cURJUUxUbDJIaWhmZHNsd0xvdnVqRGpXVk1CanFldTBGOFkxN3dFM0tRVVZr?= =?utf-8?B?aTV4QlpUcTZUNTh5TllxeVJNVUhLc1RwdEFaVEgraTRDMmpLVGk4cmdia2VM?= =?utf-8?B?UStKcGFib3ppdWhWMzVNYU4zRjltTTE3WHVRSjZydWE3bzhlZm93aURMdUJI?= =?utf-8?B?NmgxRU8reDNvUVFDNDhwd0VZU3diK1NHaWRJaDROc1Y1RklpMUZhR3g2VVhz?= =?utf-8?B?U3g2azVteFl1aEVJVUhxZElBcStaT3ZuVHk5VEdPQnRMN0hUU2JaSGdNZUND?= =?utf-8?B?SnVsM1Nuc1dSckdhcmMzdzdEeVY1eUo0Tno4MlU1blV3Nk5PdTNIRzVWSCtU?= =?utf-8?B?aVAwaS9mM1pXeWYzTVYrcm5oWlREbmpLZHhiZXc3K0dYNDg5R0dxY3JvelhD?= =?utf-8?B?ZzZHS2xvOUVRd1FvQ2xFTVVTRjBZbnI0OU1FcnZzcUx3V29XelF4WVJNN3BR?= =?utf-8?B?LzdWZzAvZnZlb2lWcTdmV2JmM3ZvZkU0N3VLRENCK3VOOW9WVDUzbUVxY2ps?= =?utf-8?B?VGtGTTQ5Y3FwYlhUSHA4bnBBZDd3UFlBMFkxeUJCM29UREIwdmsyNUQ1K2xR?= =?utf-8?B?TmVJRlhKWFRucE9rakJrYzF0M2hFd0RNRlNjM2Z0Q2VrOHpNNVR1Z2xPQ2Qr?= =?utf-8?B?a0FnQzlnNEszcUpaQ2J1TEN5WEoxKyt0ZXVsSmJIUlJaOUwxQzFuZFZRbVYx?= =?utf-8?B?cFhmQkVMbTdVM0NvaVViTVoxcXVaYlZteWp6UjRleUJSNUFCL1RQb0xjUFRh?= =?utf-8?B?eWllSVpJNUhtWmNrLyt3aDBtbDFYWUhheTJKdjJPYS9sTnp1YWdpbm9pK2hn?= =?utf-8?B?b3NiemVvS3hMV0s3WDZWcHFxK0xHaG5wcU5INnhLc2RWcytIekpHSWhCRytE?= =?utf-8?B?NVJEcUhNaVlmRnlQbEpnckhNSDNTcWl6dkNieFpNNHlBVFZabHE4Nlc3M3pu?= =?utf-8?B?NzdLVGJpSFRZcnR3cUNMRWpQSForQmE4SnkzVGQzNVF3ZXFyKzA2ZFlRN1Nn?= =?utf-8?B?YW9obWU1Ty9OV1pOV3BBdWhETGttVDZuZUtBODNhaHB2SHlsZWJsYm1NWGNp?= =?utf-8?B?czNBMGE3NHZrNWkwSFFVRSsxKy9vQis3VEN2ZlNsVDVkcGRLdzZvSmZQN2dJ?= =?utf-8?B?WEgxSGI1bk5xaERSQnNzdk9hcy9RWm9vbGFVdFRHbU8zdnBPZWovVjJmdlVS?= =?utf-8?B?S01wdTVVS3g3STVFbTE1WUs1TmRSVU94WExoZkR2UTlsSEFVUGthbjVOQkN0?= =?utf-8?B?MVpLQkVwR05XTk1vdGFIOEF1ank0Y3p3NnErY2k3NUpLbjkxZWZXek9KZ3Ja?= =?utf-8?B?TUdLM2ZTUGREQnBuR2ZRZlBYZGxCQ240TGVhVjIyZU1UZm9OaVpMMTRTMHdW?= =?utf-8?B?YXlZL3NGZTNDWHlJRlprQ0JrVnExdW56MGtCRXlKR0F3ZmRaRlVZQURobGZV?= =?utf-8?B?aHV1Wlk5Mk9kTUo2REVGc0xnYmFTbmxsblJYcmdMU2RYakxacWg0RTVTbU9T?= =?utf-8?B?WWJLamxRVHNZZW9iMzdjZkd3TndSYkVFaWFZUkZydktGbm1DdmZuZEhyWUxJ?= =?utf-8?B?ZHExR3dnVUFwU2pRUXhNeW1lVHlMbitvVllBdUpqVTlVT0JZVUdKd2NrNzRH?= =?utf-8?B?eHFlQVpxZ005ZlczMjZITzlUOHpJbGt6WDZ3RUUxSVRnSUttQkZ4c05Bb2FH?= =?utf-8?B?YVVvSXJySVlnSVp6K3QwbSsrc3BCT0pHcmhCWXNmYzhxTEcveCt4Mis0QTBx?= =?utf-8?B?V0F2aW5uT2N2eXYreE9vRjBEb2tDem9mTi9EcFEzSyt4Sy94K2FpZGUxTWQ5?= =?utf-8?B?cWpjMlRGQVBVTW51NEs5NEtOTVdYVVZFd1ZQM3lIdERGOFlwdTZjTHRUaWUz?= =?utf-8?B?K1NRN1N5TllwREk2N3BvbndONGpsMFJRMUNCcjA2NGw2Qmx4R3pUUVJLUTZa?= =?utf-8?B?WWFuaHhsMy9ydVZ4VFVXZWgwYnVaN2xUWjVVZFBETWhoY1Y0c1pxNmdCV3J1?= =?utf-8?B?QkNiMTR1Sm1xcnQ1S2lLVFhab2ZIT25Hczk0OHNNUnpKcEJ1Nk1yYkFZTzFo?= =?utf-8?B?ZmhaMlRQWU1qOTdhTS9VM0pJbWREdFpvL3JJVGd0a0UrQjNGSVFySnFBZjFU?= =?utf-8?B?TVE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYAPR01MB5866.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6c1bfcb5-6625-4545-c686-08dac0b5351c X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Nov 2022 11:42:53.8569 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: rLPtxo1zOJKv+5AD1nGRkA38qtidyoJNyWEcUFsroM1HJWpv0Y2pKLo4HDFC7Fb01eTUxHyuwAuPLKD57Pemz1jRBd8FrKG1aaDeqizk8sU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB9845 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk RGVhciBIb3UsDQoNClRoZSBmb2xsb3dpbmdzIGFyZSBteSBjb21tZW50cy4gSSB3YW50IHRvIGNv bnNpZGVyIHRoZSBwYXRjaCBtb3JlLCBidXQgSSBzZW50IGl0IG9uY2UuDQoNCj09PQ0Kd29ya2Vy LmMNCg0KMDEuIHR5cGVkZWYgZW51bSBUcmFuc0FwcGx5QWN0aW9uDQoNCmBgYA0KLyoNCiAqIFdo YXQgYWN0aW9uIHRvIHRha2UgZm9yIHRoZSB0cmFuc2FjdGlvbi4NCiAqDQogKiBUUkFOU19MRUFE RVJfQVBQTFkgbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5k IGNoYW5nZXMNCiAqIG9mIHRoZSB0cmFuc2FjdGlvbiBhcmUgYXBwbGllZCBkaXJlY3RseSBpbiB0 aGUgd29ya2VyLg0KICoNCiAqIFRSQU5TX0xFQURFUl9TRVJJQUxJWkUgbWVhbnMgdGhhdCB3ZSBh cmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgdGFibGUNCiAqIHN5bmMgd29ya2VyLiBD aGFuZ2VzIGFyZSB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIHdo ZW4NCiAqIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcy4NCiAqDQogKiBUUkFOU19MRUFERVJfU0VO RF9UT19QQVJBTExFTCBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl cg0KICogYW5kIG5lZWQgdG8gc2VuZCB0aGUgY2hhbmdlcyB0byB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyLg0KICoNCiAqIFRSQU5TX1BBUkFMTEVMX0FQUExZIG1lYW5zIHRoYXQgd2UgYXJlIGlu IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kDQogKiBjaGFuZ2VzIG9mIHRoZSB0cmFuc2Fj dGlvbiBhcmUgYXBwbGllZCBkaXJlY3RseSBpbiB0aGUgd29ya2VyLg0KICovDQpgYGANCg0KVFJB TlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFIHNob3VsZCBiZSBsaXN0ZWQgaW4uDQoNCjAyLiBo YW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oKQ0KDQpgYGANCisgICAgICAgU3RyaW5nSW5mb0Rh dGEgIG9yaWdpbl9tc2c7DQouLi4NCisgICAgICAgb3JpZ2luX21zZyA9ICpzOw0KLi4uDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdyaXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1 cnJlbnQgZmlsZSAqLw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fd3Jp dGVfY2hhbmdlKGFjdGlvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5X2FjdGlvbiA9PSBUUkFOU19M RUFERVJfU0VSSUFMSVpFID8NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgOiAmb3JpZ2luX21zZyk7DQpgYGAN Cg0KSSdtIG5vdCBzdXJlIHdoeSBvcmlnaW5fbXNnIGlzIG5lZWRlZC4gQ2FuIHdlIHJlbW92ZSB0 aGUgY29uZGl0aW9uYWwgb3BlcmF0b3I/DQoNCg0KMDMuIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3Rh cnQoKQ0KDQpgYGANCisgKiBYWFggV2UgY2FuIGF2b2lkIHNlbmRpbmcgcGFpcnMgb2YgdGhlIFNU QVJUL1NUT1AgbWVzc2FnZXMgdG8gdGhlIHBhcmFsbGVsDQorICogd29ya2VyIGJlY2F1c2UgdW5s aWtlIGFwcGx5IHdvcmtlciBpdCB3aWxsIHByb2Nlc3Mgb25seSBvbmUgdHJhbnNhY3Rpb24gYXQg YQ0KKyAqIHRpbWUuIEhvd2V2ZXIsIGl0IGlzIG5vdCBjbGVhciB3aGV0aGVyIGFueSBvcHRpbWl6 YXRpb24gaXMgd29ydGh3aGlsZQ0KKyAqIGJlY2F1c2UgdGhlc2UgbWVzc2FnZXMgYXJlIHNlbnQg b25seSB3aGVuIHRoZSBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtDQorICogdGhyZXNob2xkIGlz IGV4Y2VlZGVkLg0KYGBgDQoNClRoaXMgY29tbWVudCBzaG91bGQgYmUgbW9kaWZpZWQgYmVjYXVz ZSBQQSBtdXN0IGFjcXVpcmUgYW5kIHJlbGVhc2UgbG9ja3MgYXQgdGhhdCB0aW1lLg0KDQoNCjA0 LiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKQ0KDQpgYGANCisgICAgICAgICAgICAgICAg ICAgICAgIC8qDQorICAgICAgICAgICAgICAgICAgICAgICAgKiBBZnRlciBzZW5kaW5nIHRoZSBk YXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdhaXQgZm9yDQorICAgICAgICAgICAg ICAgICAgICAgICAgKiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRv IG1haW50YWluIGNvbW1pdA0KKyAgICAgICAgICAgICAgICAgICAgICAgICogb3JkZXIgd2hpY2gg YXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kDQorICAg ICAgICAgICAgICAgICAgICAgICAgKiBkZWFkbG9ja3MuDQorICAgICAgICAgICAgICAgICAgICAg ICAgKi8NCisgICAgICAgICAgICAgICAgICAgICAgIHBhcmFsbGVsX2FwcGx5X3dhaXRfZm9yX3hh Y3RfZmluaXNoKHdpbmZvLT5zaGFyZWQpOw0KYGBgDQoNCkhlcmUgc2VlbXMgbm90IHRvIGJlIGNv cnJlY3QuIExBIG1heSBub3Qgc2VuZCBkYXRhIGJ1dCBzcGlsbCBjaGFuZ2VzIHRvIGZpbGUuDQoN CjA1LiBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdCgpDQoNCmBgYA0KKyAgICAgICAgICAgICAg ICAgICAgICAgaWYgKGFwcGx5X2FjdGlvbiA9PSBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJ WkUpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9jbGVhbnVwX2ZpbGVz KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7DQpgYGANCg0KSSdtIG5vdCBzdXJlIHdo ZXRoZXIgdGhlIHN0cmVhbSBmaWxlcyBzaG91bGQgYmUgcmVtb3ZlZCBieSBMQSBvciBQQXMuIENv dWxkIHlvdSB0ZWxsIG1lIHRoZSByZWFzb24gd2h5IHlvdSBjaG9vc2UgTEE/DQoNCj09PQ0KYXBw bHlwYXJhbGxlbHdvcmtlci5jDQoNCjA1LiBwYXJhbGxlbF9hcHBseV9jYW5fc3RhcnQoKQ0KDQpg YGANCisgICAgICAgaWYgKHN3aXRjaGluZ190b19zZXJpYWxpemUpDQorICAgICAgICAgICAgICAg cmV0dXJuIGZhbHNlOw0KYGBgDQoNCkNvdWxkIHlvdSBhZGQgYSBjb21tZW50IGxpa2U6DQpEb24n dCBzdGFydCBhIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaWYgdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgaGFzIGJlZW4gc3BpbGxpbmcgY2hhbmdlcyB0byB0aGUgZGlzayB0ZW1wb3JhcmlseS4N Cg0KMDYuIHBhcmFsbGVsX2FwcGx5X3N0YXJ0X3dvcmtlcigpDQoNCmBgYA0KKyAgICAgICAvKg0K KyAgICAgICAgKiBTZXQgdGhlIHhhY3Rfc3RhdGUgZmxhZyBpbiB0aGUgbGVhZGVyIGluc3RlYWQg b2YgdGhlDQorICAgICAgICAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBhdm9pZCB0aGUgcmFj ZSBjb25kaXRpb24gd2hlcmUgdGhlIGxlYWRlciBoYXMNCisgICAgICAgICogYWxyZWFkeSBzdGFy dGVkIHdhaXRpbmcgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gZmluaXNoDQorICAg ICAgICAqIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIHdoaWxlIHRoZSBjaGlsZCBwcm9jZXNz IGhhcyBub3QgeWV0DQorICAgICAgICAqIHByb2Nlc3NlZCB0aGUgZmlyc3QgU1RSRUFNX1NUQVJU IGFuZCBoYXMgbm90IHNldCB0aGUNCisgICAgICAgICogeGFjdF9zdGF0ZSB0byB0cnVlLg0KKyAg ICAgICAgKi8NCmBgYA0KDQpJIHRoaW5rZyB0aGUgd29yZCAiZmxhZyIgc2hvdWxkIGJlIHVzZWQg Zm9yIGJvb2xlYW4sIHNvIHRoZSBjb21tZW50IHNob3VsZCBiZSBtb2RpZmllZC4NCihUaGVyZSBh cmUgc28gbWFueSBzdWNoIGNvZGUtY29tbWVudHMsIGFsbCBvZiB0aGVtIHNob3VsZCBiZSBtb2Rp ZmllZC4pDQoNCg0KMDcuIHBhcmFsbGVsX2FwcGx5X2dldF91bmlxdWVfaWQoKQ0KDQpgYGANCisv Kg0KKyAqIFJldHVybnMgdGhlIHVuaXF1ZSBpZCBhbW9uZyBhbGwgcGFyYWxsZWwgYXBwbHkgd29y a2VycyBpbiB0aGUgc3Vic2NyaWJlci4NCisgKi8NCitzdGF0aWMgdWludDE2DQorcGFyYWxsZWxf YXBwbHlfZ2V0X3VuaXF1ZV9pZCgpDQpgYGANCg0KSSB0aGluayB0aGlzIGZ1bmN0aW9uIGlzIGlu ZWZmaWNpZW50OiB0aGUgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5IHdpbGwgYmUgaW5jcmVhc2Vk IGxpbmVhcmx5IHdoZW4gdGhlIG51bWJlciBvZiBQQXMgaXMgaW5jcmVhc2VkLiBJIHRoaW5rIHRo ZSBCaXRtYXBzZXQgZGF0YSBzdHJ1Y3R1cmUgbWF5IGJlIHVzZWQuDQoNCjA4LiBwYXJhbGxlbF9h cHBseV9zZW5kX2RhdGEoKQ0KDQpgYGANCiNkZWZpbmUgQ0hBTkdFU19USFJFU0hPTEQJMTAwMA0K I2RlZmluZSBTSE1fU0VORF9USU1FT1VUX01TCTEwMDAwDQpgYGANCg0KSSB0aGluayB0aGUgdGlt ZW91dCBtYXkgYmUgdG9vIGxvbmcuIENvdWxkIHlvdSB0ZWxsIG1lIHRoZSBiYWNrZ3JvdW5kIGFi b3V0IGl0Pw0KDQoNCjA5LiBwYXJhbGxlbF9hcHBseV9zZW5kX2RhdGEoKQ0KDQpgYGANCgkJCS8q DQoJCQkgKiBDbG9zZSB0aGUgc3RyZWFtIGZpbGUgaWYgbm90IGluIGEgc3RyZWFtaW5nIGJsb2Nr LCB0aGUgZmlsZSB3aWxsDQoJCQkgKiBiZSByZW9wZW5lZCBsYXRlci4NCgkJCSAqLw0KCQkJaWYg KCFzdHJlYW1fYXBwbHlfd29ya2VyKQ0KCQkJCXNlcmlhbGl6ZV9zdHJlYW1fc3RvcCh3aW5mby0+ c2hhcmVkLT54aWQpOw0KYGBgDQoNCmEuDQpJSVVDIHRoZSB0aW1pbmdzIHdoZW4gTEEgdHJpZXMg dG8gc2VuZCBkYXRhIGJ1dCBzdHJlYW1fYXBwbHlfd29ya2VyIGlzIE5VTEwgYXJlOg0KKiBhcHBs eV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUsIA0KKiBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0LCAN CiogYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydCwgYW5kDQoqIGFwcGx5X2hhbmRsZV9zdHJlYW1f Y29tbWl0Lg0KQW5kIGF0IHRoYXQgdGltZSB0aGUgc3RhdGUgb2YgVHJhbnNBcHBseUFjdGlvbiBt YXkgYmUgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwuIFdoZW4gc2hvdWxkIGJlIGNsb3Nl IHRoZSBmaWxlPw0KDQpiLg0KRXZlbiBpZiB0aGlzIGlzIG5lZWRlZCwgSSB0aGluayB0aGUgbmFt ZSBvZiB0aGUgY2FsbGVkIGZ1bmN0aW9uIHNob3VsZCBiZSBtb2RpZmllZC4gSGVyZSBMQSBtYXkg bm90IGhhbmRsZSBTVFJFQU1fU1RPUCBtZXNzYWdlLiBjbG9zZV9zdHJlYW1fZmlsZSgpIG9yIHNv bWV0aGluZz8NCg0KDQoxMC4gcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKCkNCg0KYGBgDQoJCQkv KiBJbml0aWFsaXplIHRoZSBzdHJlYW0gZmlsZXNldC4gKi8NCgkJCXNlcmlhbGl6ZV9zdHJlYW1f c3RhcnQod2luZm8tPnNoYXJlZC0+eGlkLCB0cnVlKTsNCmBgYA0KDQpJIHRoaW5rIHRoZSBuYW1l IG9mIHRoZSBjYWxsZWQgZnVuY3Rpb24gc2hvdWxkIGJlIG1vZGlmaWVkLiBIZXJlIExBIG1heSBu b3QgaGFuZGxlIFNUUkVBTV9TVEFSVCBtZXNzYWdlLiBvcGVuX3N0cmVhbV9maWxlKCkgb3Igc29t ZXRoaW5nPw0KDQoxMS4gcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKCkNCg0KYGBgDQoJCWlmICgr K3JldHJ5ID49IENIQU5HRVNfVEhSRVNIT0xEKQ0KCQl7DQoJCQlNZW1vcnlDb250ZXh0IG9sZGNv bnRleHQ7DQoJCQlTdHJpbmdJbmZvRGF0YSBtc2c7DQouLi4NCgkJCWluaXRTdHJpbmdJbmZvKCZt c2cpOw0KCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmbXNnLCBkYXRhLCBuYnl0ZXMpOw0KLi4u DQoJCQlzd2l0Y2hpbmdfdG9fc2VyaWFsaXplID0gdHJ1ZTsNCgkJCWFwcGx5X2Rpc3BhdGNoKCZt c2cpOw0KCQkJc3dpdGNoaW5nX3RvX3NlcmlhbGl6ZSA9IGZhbHNlOw0KDQoJCQlicmVhazsNCgkJ fQ0KYGBgDQoNCnBmcmVlKG1zZy5kYXRhKSBtYXkgYmUgbmVlZGVkLg0KDQo9PT0NCjEyLiB3b3Jr ZXJfaW50ZXJuYWwuaA0KDQpgYGANCisgICAgICAgcGdfYXRvbWljX3VpbnQzMiAgICAgICAgbGVm dF9tZXNzYWdlOw0KYGBgDQoNCg0KUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCBoYXMgYmVlbiBh bHJlYWR5IGNvbnRyb2xsZWQgYnkgbXV0ZXggbG9ja3MuICBXaHkgZGlkIHlvdSBhZGQgYW4gYXRv bWljIHZhcmlhYmxlIHRvIHRoZSBkYXRhIHN0cnVjdHVyZT8NCg0KPT09DQoxMy4gdHlwZWRlZnMu bGlzdA0KDQpQYXJhbGxlbFRyYW5zU3RhdGUgc2hvdWxkIGJlIGFkZGVkLg0KDQo9PT0NCjE0LiBH ZW5lcmFsDQoNCkkgaGF2ZSBhbHJlYWR5IHNhaWQgb2xkIGFib3V0IGl0IGRpcmVjdGx5LCBidXQg SSBwb2ludCBpdCBvdXQgdG8gbm90aWZ5IG90aGVyIG1lbWJlcnMgYWdhaW4uDQpJIGhhdmUgY2F1 c2VkIGEgZGVhZGxvY2sgd2l0aCB0d28gUEFzLiBJbmRlZWQgaXQgY291bGQgYmUgc29sdmVkIGJ5 IHRoZSBsbWdyLCBidXQgdGhlIG91dHB1dCBzZWVtZWQgbm90IHRvIGJlIGtpbmQuIEZvbGxvd2lu Z3Mgd2VyZSBjb3BpZWQgZnJvbSB0aGUgbG9nIGFuZCB3ZSBjb3VsZCBzZWUgdGhhdCBjb21tYW5k cyBleGVjdXRlZCBieSBhcHBseSB3b3JrZXJzIHdlcmUgbm90IG91dHB1dC4gQ2FuIHdlIGV4dGVu ZCBpdCwgb3IgaXMgaXQgdGhlIG91dCBvZiBzY29wZT8NCg0KDQpgYGANCjIwMjItMTEtMDcgMTE6 MTE6MjcuNDQ5IFVUQyBbMTEyNjJdIEVSUk9SOiAgZGVhZGxvY2sgZGV0ZWN0ZWQNCjIwMjItMTEt MDcgMTE6MTE6MjcuNDQ5IFVUQyBbMTEyNjJdIERFVEFJTDogIFByb2Nlc3MgMTEyNjIgd2FpdHMg Zm9yIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgb24gb2JqZWN0IDE2MzkzIG9mIGNsYXNzIDYxMDAgb2Yg ZGF0YWJhc2UgMDsgYmxvY2tlZCBieSBwcm9jZXNzIDExMzIwLg0KICAgICAgICBQcm9jZXNzIDEx MzIwIHdhaXRzIGZvciBTaGFyZUxvY2sgb24gdHJhbnNhY3Rpb24gNzQyOyBibG9ja2VkIGJ5IHBy b2Nlc3MgMTEyNjYuDQogICAgICAgIFByb2Nlc3MgMTEyNjYgd2FpdHMgZm9yIEFjY2Vzc1NoYXJl TG9jayBvbiBvYmplY3QgMTYzOTMgb2YgY2xhc3MgNjEwMCBvZiBkYXRhYmFzZSAwOyBibG9ja2Vk IGJ5IHByb2Nlc3MgMTEyNjIuDQogICAgICAgIFByb2Nlc3MgMTEyNjI6IDxjb21tYW5kIHN0cmlu ZyBub3QgZW5hYmxlZD4NCiAgICAgICAgUHJvY2VzcyAxMTMyMDogPGNvbW1hbmQgc3RyaW5nIG5v dCBlbmFibGVkPg0KICAgICAgICBQcm9jZXNzIDExMjY2OiA8Y29tbWFuZCBzdHJpbmcgbm90IGVu YWJsZWQ+DQpgYGANCg0KDQpCZXN0IFJlZ2FyZHMsDQpIYXlhdG8gS3Vyb2RhDQpGVUpJVFNVIExJ TUlURUQNCg0K