From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id B543BAC0A9F for ; Mon, 8 Jan 2024 06:06:29 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=as+ddqjuCMh0TEBEpO4Crs6OmbemMD2SjG825DH5KNs=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1704693988; v=1; b=qW3H5PaqtPwbUIicH6Q324Uf+ZjgnK9r5rPB2c6M1HyCnxuvg1IioDPaWDqDSmdNAtuXOLtQ kKaD6rlLkwyu7nXVMikwuahxht2hO4m3uf78NCy3nPBt5ymLfuk0EpE70UfVDBqBN0/0woGalfW O+2qQRntQNOM286nTyE3Xv7c= X-Received: by 127.0.0.2 with SMTP id n9zXYY7687511xO4p89xxamV; Sun, 07 Jan 2024 22:06:28 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web11.1147.1704693987315997769 for ; Sun, 07 Jan 2024 22:06:27 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10946"; a="401592172" X-IronPort-AV: E=Sophos;i="6.04,340,1695711600"; d="scan'208";a="401592172" X-Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jan 2024 22:06:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10946"; a="871785161" X-IronPort-AV: E=Sophos;i="6.04,340,1695711600"; d="scan'208";a="871785161" X-Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by FMSMGA003.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 07 Jan 2024 22:06:26 -0800 X-Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Sun, 7 Jan 2024 22:06:25 -0800 X-Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Sun, 7 Jan 2024 22:06:25 -0800 X-Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.100) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Sun, 7 Jan 2024 22:06:25 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n32qPdtSXehfGnG7EFAb4N5bImyKfUvXJurm8dhVveAyfl+HXg3JFRv0QufHQ/SaXeJ0rQ82yaSmxOQZOvMVH0ewFJlexX4eJZhz3J9doNcFjKLGcH9DwS6wHQvgPwo+xZ7rYqwupnPf5as5CW8cHF8Ow00RWpNs7Zrl22EmPnMI6qQGut8Zk+ZjfnHqnkaauSbb7nivhHv2WZjSDSe588VZR3a4rpeKcfdMdEFVCir3XxheVNgnilcWsr2fzrih8NJBwimI33TsIRdM2h1WynMGuFO/M7n1SHIXQiXQ2guLgF/cozbJ8XsfFrLEhMQtWMvMbWzs/vEhe5LMv5dKwA== 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=8t10jPcmj/t7vqJAQjVpxVp5XxMO29woPpwbfxNslm4=; b=NRSeurEDCPJn1ZWEGpGHOYtxhes+bZ9F/w8rPth9mfQZCPi6mrYIJhG9BNw/Rm7LlDgVg62YnQ4ot+eBGs61eTKW8R2aWwXyG4iCQr6JPod0FGwOzbtjjd3yl56VIabI7YF9bwz+hZU3yS9aMV8P0k3SsFqx2Hg7jsd9HIEuZglI7TfAbecHrYbl6hINJwgglgO0pzGuaF29zd1yyndDyRxc1/K633lLd7fX6DPjKE+b8FhXj/luB9nsBj6I0psJWKa0cfMXsCc5QMYVSX6SjKOIsSYBvn4Hrz8LkKFMW0zXV/XNGrsr5ELPe4IkNcKq75Lx3GETTqnkT9f71yputw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com (2603:10b6:208:470::14) by CY8PR11MB6818.namprd11.prod.outlook.com (2603:10b6:930:62::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan 2024 06:06:23 +0000 X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::3fea:ca2b:2ef7:e3d4]) by MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::3fea:ca2b:2ef7:e3d4%4]) with mapi id 15.20.7159.020; Mon, 8 Jan 2024 06:06:22 +0000 From: "Ni, Ray" To: "devel@edk2.groups.io" , "Chen, Christine" , Joey Vagedes CC: Rebecca Cran , "Gao, Liming" , "Feng, Bob C" , "Huang, Yanbo" , "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH v1 1/1] BaseTools: Fix raw strings containing valid escape characters Thread-Topic: [edk2-devel] [PATCH v1 1/1] BaseTools: Fix raw strings containing valid escape characters Thread-Index: AQHaOa4jVUbhDm9SHU6W0jWzHjByvLDPLNHAgABI3cCAAAhqgA== Date: Mon, 8 Jan 2024 06:06:22 +0000 Message-ID: References: <20231228164739.1042-1-joey.vagedes@gmail.com> <20231228164739.1042-2-joey.vagedes@gmail.com> <17A83A4D186CC8F7.1387@groups.io> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN6PR11MB8244:EE_|CY8PR11MB6818:EE_ x-ms-office365-filtering-correlation-id: 4b0f1bc4-02a9-408a-4fd9-08dc100ff063 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: nzGa4BhRhwpNZqsYfZHGARoD7h43Zu2NG8VuEqXrs2SESnGpkYI6eEmlV8yj4EQtPpnFlmfNaVVdFGAAEOtWUaefoen9cIWNbEzTzP9Vgw598ezbZ7b3V+gisLKIw8oFoImxZ5OOHKsm3XlAAkzfUybwVb9UbU/mimy0JLUNL2YG4xcz389eYk76Mef5ozkoJd6/88YTbt7ehqWqfIPtUIRxWL9LqMyfuzJxN4ktm78kxL9CnQBhuXQt8FKCG7RFePFproufdc69rjxyxbOBTU4HbnM9cQdZZrukkd9fKJr94ydS9RDvGCHQBsyPo4Qg1OjiFZxlbutXxzSsFrgiZQ8UZa76Yv50wCejZ6t1PjOBBcK+nzXW1PZ4oe53pmHAax7ri8L04o6owHPtdd3OJn+PpwB5jS4JusROXMM9Oq3Zf4llK158yD5SLhK26pzUW98ySSxWVAHrMkZx03xPPWIRoz4DWte4/rbTZqlAVRGmZ7csEtKKnkaOsD5W6NpwUdSrJMdVlga6icNVZmyY8ZRigveuTt1QmKj667KycBZDTEzVJvTR3G2aQQDoBnzlGnVhC0Q8/k6JZoo0MKNxc4i9nxpJrLhMxmNNWVbW8xyYbzXP97yGiOduOFKomUdp x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?e+G/hijwKKJCFrvdkx4fi+OU8yWx8raJNATted6UqpSvjyKOl1sFNc2WMfNV?= =?us-ascii?Q?5UI8rqzXz/j8m5F9nW516NAI0UW6Za2Dgi8t7r00m5q/4m3ICKcNnR8bO42x?= =?us-ascii?Q?jJ/0QvEeC+nZgwz84mNOMA+Cfo4B++6fP/Tugyu1avTGf5F57Oj3U/Mzt75Z?= =?us-ascii?Q?2CdZ7ESM0ytM8u0NQQWJaj9FEBqSca2XexLzFQt7m4pnNEw2o79+Wjtzw0JC?= =?us-ascii?Q?WlObjjTvQI0gfpglPssngsk8MyJFsfhLfeMi0FYts/r25RVY4LHSGMesTUqW?= =?us-ascii?Q?x/lbGJMHuQ2Ax+CMTBrsquAS9R8n3Jf3JtRndBp05oIhQRA1Jxd9qJYUFoVW?= =?us-ascii?Q?kq3VgehjqDyhbPwEauBoY4sORkkvifGMzCkRZ5SxGoYufe4mAPsZPLZxmTsE?= =?us-ascii?Q?HHwvfEWaaThHjUOVzO8wlwK9x3OurZHlFyYZNJxSBSYhcU37J4PWsZMEwns1?= =?us-ascii?Q?VaspfbGXAs8FGfStDlqFZ752Na2o4XF3je6hnikWoJ6Mf5y45qUXZnwNE22Q?= =?us-ascii?Q?rsEkHru58BGjfgqbef/c2dpgJWO2Qt3D81BgOtKUU57htfTKCdmCbDVaaVzz?= =?us-ascii?Q?FOpNe1N7DRnu+wnXx5U/7BAh9vaQINLnykyMZXy8PpsbLPbM1rF/KV9ReZPq?= =?us-ascii?Q?SSdxP9TQrUseg2mW536DwIIkSDGX/GUhQ+OrLeSwIcORJPd2OdTttVPYUVp2?= =?us-ascii?Q?2HwyQmclvdsTRiC/SEDSjevKEQFbVRxMrmdB64sn3nw4yYvKQdqi/Rk0mk2z?= =?us-ascii?Q?byt55PIEaasffCUq9FFaJhBphXcvKrA/VRz6C7hq03AkXiNETnO3Rtm9I17s?= =?us-ascii?Q?crrwtyx5d88NBR0nf/iSWLbNEUvlPYU/0maprgOk+TC2ppzW9d+a7X1nYN4q?= =?us-ascii?Q?CF4SmssyMhB2IRpQMPhwqD2SFSLm+meoE2MbAYbzSGACni6c4tEi8W9cloY4?= =?us-ascii?Q?aABcf9HDdn3TYHW98t9ARanVfFAHLeKwVOobTbM+T58+PYHT+9DhFOTS23eE?= =?us-ascii?Q?b8Bb7HN/Yuob3Ax0r0Y/Q4t6RNevOVx1XnY0paskWhJCrbdysW5fktDTqj74?= =?us-ascii?Q?rf08/Onogcgc9P5WihdyIQd88JhGJSbA3QpqllM6ilOx8QCJK/fDCFXFHRXP?= =?us-ascii?Q?S2BWbubKdthNflQir3KxgozSt0oQ5uuxqQgtTMyPeXvFz39VePC9Pa1pF52a?= =?us-ascii?Q?TVsvfTki0wuCzj3ectpIY7cY1FHj04275whevHvCavQXOUcHLE2gZ/4NjlN7?= =?us-ascii?Q?caYYNtwEgvTZYUz1lEIrQKo84lOO0K6AHoEe231DjXTUevs7CiCGSGzZ+UfR?= =?us-ascii?Q?UXiE+PXKpMsCIoTUdyHhAwP8Jszg+BPBCYen9eZoZV1cuupKopznPe7zbdna?= =?us-ascii?Q?AT6IAgGLVHFhRgQVmo/LZBbjhjCd//v5+DPWgKxRjJ347G3yGBwbVREeLsDr?= =?us-ascii?Q?Jdjx7q2B4LMtIGkZp1bXsTXX8OccsYwOlpNhAtBvdQ/Qu0Hn4WpTTzFbJXKe?= =?us-ascii?Q?q9gPBzzUL/mQVrG+Q6laAYb0Evroln0bVRcejx46qD0/s0JT0DgvfydyTOC8?= =?us-ascii?Q?pgp9qVMyBLxZdFJ2774=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN6PR11MB8244.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4b0f1bc4-02a9-408a-4fd9-08dc100ff063 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jan 2024 06:06:22.2744 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: jQ8r7ZgRNdrO9OZC33/65woTowZmLVVJCMiJ8DNTeMVNhMDD/tUoQ9T8EuZsAHTHGSPfHxTtExhWF1hvDYUFOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR11MB6818 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,ray.ni@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 2OQ7qUDyOELdnpnm0nEl7W3ux7686176AA= Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=qW3H5Paq; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io Yes. Please! My local build cannot pass without this patch. Thanks, Ray > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Yuwei > Chen > Sent: Monday, January 8, 2024 1:37 PM > To: devel@edk2.groups.io; Chen, Christine ; Joey > Vagedes > Cc: Rebecca Cran ; Gao, Liming > ; Feng, Bob C ; Huang, > Yanbo ; Kinney, Michael D > > Subject: Re: [edk2-devel] [PATCH v1 1/1] BaseTools: Fix raw strings conta= ining > valid escape characters >=20 > Hi Liming and Cran, >=20 > We should merge this fixing patch asap as it influences BaseTool's usage. >=20 > Thanks, > Christine >=20 > > -----Original Message----- > > From: devel@edk2.groups.io On Behalf Of Yuwei > > Chen > > Sent: Monday, January 8, 2024 9:16 AM > > To: Joey Vagedes ; devel@edk2.groups.io > > Cc: Rebecca Cran ; Gao, Liming > > ; Feng, Bob C > > Subject: Re: [edk2-devel] [PATCH v1 1/1] BaseTools: Fix raw strings > containing > > valid escape characters > > > > Hi Joey, > > > > Thanks for fixing. > > > > Reviewed-by: Yuwei Chen > > > > > -----Original Message----- > > > From: Joey Vagedes > > > Sent: Friday, December 29, 2023 12:48 AM > > > To: devel@edk2.groups.io > > > Cc: Rebecca Cran ; Gao, Liming > > > ; Feng, Bob C ; Chen, > > > Christine > > > Subject: [PATCH v1 1/1] BaseTools: Fix raw strings containing valid > > > escape characters > > > > > > Fixes raw regex strings that contain valid (and purposeful) escape > > > characters as they are being treated as individual characters rather > > > than the single escaped character they represent (i.e. '\t' is being = treated as > > a '\' and a 't' > > > rather than a single tab character). > > > > > > Signed-off-by: Joey Vagedes > > > Cc: Rebecca Cran > > > Cc: Liming Gao > > > Cc: Bob Feng > > > Cc: Yuwei Chen > > > --- > > > BaseTools/Source/Python/AutoGen/GenMake.py | 2 +- > > > BaseTools/Source/Python/Common/Misc.py | 2 +- > > > BaseTools/Source/Python/Workspace/DscBuildData.py | 4 ++-- > > > 3 files changed, 4 insertions(+), 4 deletions(-) > > > > > > diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py > > > b/BaseTools/Source/Python/AutoGen/GenMake.py > > > index c416fe172fe5..fbd35d498923 100755 > > > --- a/BaseTools/Source/Python/AutoGen/GenMake.py > > > +++ b/BaseTools/Source/Python/AutoGen/GenMake.py > > > @@ -28,7 +28,7 @@ from Common.DataType import > > TAB_COMPILER_MSFT > > > gIncludePattern =3D re.compile(r"^[ \t]*[#%]?[ \t]*include(?:[ > > > \t]*(?:\\(?:\r\n|\r|\n))*[ \t]*)*(?:\(?[ \"<]?[ \t]*)([-\w.\\/() > > > \t]+)(?:[ \t]*[\">]?\)?)", re.MULTILINE | re.UNICODE | > > > re.IGNORECASE) ## Regular expression for matching macro used in > > > header file inclusion-gMacroPattern =3D re.compile(r"([_A-Z][_A-Z0-9]= *)[ > > > \t]*\((.+)\)", re.UNICODE)+gMacroPattern =3D > > > re.compile("([_A-Z][_A-Z0-9]*)[ \t]*\\((.+)\\)", > > > re.UNICODE) gIsFileMap =3D {} diff --git > > > a/BaseTools/Source/Python/Common/Misc.py > > > b/BaseTools/Source/Python/Common/Misc.py > > > index f87d9dbdba39..34bfc90abd94 100755 > > > --- a/BaseTools/Source/Python/Common/Misc.py > > > +++ b/BaseTools/Source/Python/Common/Misc.py > > > @@ -1926,4 +1926,4 @@ def CopyDict(ori_dict): > > > # Remove the c/c++ comments: // and /* */ # def > > > RemoveCComments(ctext):- return re.sub(r'//.*?\n|/\*.*?\*/', '\n', > ctext, > > > flags=3Dre.S)+ return re.sub('//.*?\n|/\\*.*?\\*/', '\n', ctext, f= lags=3Dre.S)diff > -- > > git > > > a/BaseTools/Source/Python/Workspace/DscBuildData.py > > > b/BaseTools/Source/Python/Workspace/DscBuildData.py > > > index 817cdbe5f19c..4768099343e5 100644 > > > --- a/BaseTools/Source/Python/Workspace/DscBuildData.py > > > +++ b/BaseTools/Source/Python/Workspace/DscBuildData.py > > > @@ -2840,7 +2840,7 @@ class DscBuildData(PlatformBuildClassObject): > > > # start generating makefile MakeApp =3D PcdMakefileH= eader if > > > sys.platform =3D=3D "win32":- MakeApp =3D MakeApp + r'APPF= ILE > > > =3D %s\%s.exe\n' % (self.OutputPath, PcdValueInitName) + r'APPNAME = =3D > > > %s\n' % (PcdValueInitName) + r'OBJECTS =3D %s\%s.obj %s.obj\n' % > > > (self.OutputPath, PcdValueInitName, os.path.join(self.OutputPath, > > > PcdValueCommonName)) + 'INC =3D '+ MakeApp =3D MakeApp + '= APPFILE > > > =3D %s\\%s.exe\n' % (self.OutputPath, PcdValueInitName) + 'APPNAME = =3D > > > %s\n' % (PcdValueInitName) + 'OBJECTS =3D %s\\%s.obj %s.obj\n' % > > > (self.OutputPath, PcdValueInitName, os.path.join(self.OutputPath, > > > PcdValueCommonName)) + 'INC =3D ' else: MakeApp = =3D MakeApp + > > > PcdGccMakefile MakeApp =3D MakeApp + 'APPFILE =3D %s/%s\n= ' % > > > (self.OutputPath, PcdValueInitName) + 'APPNAME =3D %s\n' % > > > (PcdValueInitName) + 'OBJECTS =3D %s/%s.o %s.o\n' % (self.OutputPath, > > > PcdValueInitName, os.path.join(self.OutputPath, > PcdValueCommonName)) > > + > > > \@@ -2950,7 +2950,7 @@ class DscBuildData(PlatformBuildClassObject): > > > MakeApp +=3D "$(OBJECTS) : %s\n" % include_file = if sys.platform > > =3D=3D > > > "win32": PcdValueCommonPath =3D > > > > > > os.path.normpath(mws.join(GlobalData.gGlobalDefines["EDK_TOOLS_PATH"] > > > , "Source\C\Common\PcdValueCommon.c"))- MakeApp =3D MakeAp= p > + > > > r'%s\PcdValueCommon.c : %s\n' % (self.OutputPath, > > PcdValueCommonPath)+ > > > MakeApp =3D MakeApp + '%s\\PcdValueCommon.c : %s\n' % > (self.OutputPath, > > > PcdValueCommonPath) MakeApp =3D MakeApp + '\tcopy /y %s > > $@\n' % > > > (PcdValueCommonPath) else: PcdValueCommonPath =3D > > > > > > os.path.normpath(mws.join(GlobalData.gGlobalDefines["EDK_TOOLS_PATH"] > > > , "Source/C/Common/PcdValueCommon.c"))-- > > > 2.43.0.windows.1 > > > > > > > > > > >=20 >=20 >=20 >=20 >=20 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113359): https://edk2.groups.io/g/devel/message/113359 Mute This Topic: https://groups.io/mt/103403582/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/19134562= 12/xyzzy [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-