From nobody Wed May 1 23:01:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+53338+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+53338+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1579223402; cv=none; d=zohomail.com; s=zohoarc; b=PcacoYUK7iZx0MKBH5CxrVSPWv1u2yGfIH2OjbhCfzgQWhhGfPENSYKdn26Fu98JXzJMrHwAyOslf/iYKyYt5OvSARjD2agel8GtkEsgj/6+67jS7y5zwi8kEdIGmWvN6iGuSPM7jeZv0c2qhNYoUOU1RHF0vI1PhMxXxcTnDGY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1579223402; h=Content-Type:Cc:Date:From:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=gU51yBAt2++vGk2fM7ZOwgre6LrGMQPl5DxFMYUhO80=; b=HSyIwzcBt55JRY0bd85lkp/6icUCcXqI9sqPqy0uz72aYFPuhsztKHspjBRt2Pilg2HiuZVwhYOxpFEU2xpI+oKWG06NdMX52GHVf3qWajz57qukqRpONFpu6gV2xhZ7UxNR2HXVlADL08Bmop5mysSCdqiW0yHu6X8Hspo6+I8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+53338+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1579223402334224.11973773524403; Thu, 16 Jan 2020 17:10:02 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id T4xlYY1788612xpeMDPJr9BZ; Thu, 16 Jan 2020 17:10:01 -0800 X-Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web11.1866.1579223400810460522 for ; Thu, 16 Jan 2020 17:10:00 -0800 X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False X-Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Jan 2020 17:09:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,327,1574150400"; d="dat'59?scan'59,208,59";a="425793541" X-Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga006.fm.intel.com with ESMTP; 16 Jan 2020 17:09:55 -0800 X-Received: from shsmsx603.ccr.corp.intel.com (10.109.6.143) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 16 Jan 2020 17:09:55 -0800 X-Received: from shsmsx602.ccr.corp.intel.com (10.109.6.142) by SHSMSX603.ccr.corp.intel.com (10.109.6.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 17 Jan 2020 09:09:53 +0800 X-Received: from shsmsx602.ccr.corp.intel.com ([10.109.6.142]) by SHSMSX602.ccr.corp.intel.com ([10.109.6.142]) with mapi id 15.01.1713.004; Fri, 17 Jan 2020 09:09:53 +0800 From: "Fan, ZhijuX" To: "devel@edk2.groups.io" CC: "Gao, Liming" , "Feng, Bob C" Subject: [edk2-devel] [PATCH V2] BaseTools:fix Ecc tool issue for check StructPcd Thread-Topic: [PATCH V2] BaseTools:fix Ecc tool issue for check StructPcd Thread-Index: AdXM0sEszf4DSTp0STStFielgPRzUQ== Date: Fri, 17 Jan 2020 01:09:53 +0000 Message-ID: <32af13335beb4e3f90d03bbbe2592c5c@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: <32af13335beb4e3f90d03bbbe2592c5c@intel.com> dlp-reaction: no-action dlp-version: 11.2.0.6 dlp-product: dlpe-windows x-originating-ip: [10.239.127.36] MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: 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,zhijux.fan@intel.com X-Gm-Message-State: 8aetGgPT7tA9uO2AN6bhTmo4x1787277AA= Content-Type: multipart/mixed; boundary="_000_32af13335beb4e3f90d03bbbe2592c5cintelcom_" Content-Language: en-US DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1579223401; bh=dp7og9+peCv96EQG5kNjc4ZhCkmeYikv9cLziFo98Cs=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=bZ81zvqYS8f9yC/aRj9Kx2eXDZ+KA2Zc2nKm4/A1ouqQGLSkxQBc+cudfpz4YZNh7/U CX1Al/bD0wbBGN4WxNl+VGoUsTMMYqH4rx8jPU04RDek7lUK17fV5T5Zt2iSkdL7ieTR1 OOWMHGV5eKmZ0GcPnMW7pzISbaw8dTfkNt8= X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity @groups.io) --_000_32af13335beb4e3f90d03bbbe2592c5cintelcom_ Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=3D2142 gAdvancedFeaturePkgTokenSpaceGuid.PcdSmbiosType0BiosInformation| {0x0}|SMBIOS_TABLE_TYPE0|0x80010000 { IndustryStandard/SmBios.h MdePkg/MdePkg.dec AdvancedFeaturePkg/AdvancedFeaturePkg.dec } If there's a PcdStructHF or PcdStructPKGs in StructPcd, EccTool report error,IndexError: list index out of range This patch is going to fix this issue Cc: Liming Gao Cc: Bob Feng Signed-off-by: Zhiju.Fan Reviewed-by: Bob Feng < bob.c.feng@intel.com > --- V2:Optimize the code to Reduce patch redundancy and update the copyright to 2020 .../Python/Ecc/MetaFileWorkspace/MetaFileParser.py | 71 +++++++++++++- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.p= y b/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py index 1576565455..9c27c8e16a 100644 --- a/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py +++ b/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py @@ -1,7 +1,7 @@ ## @file # This file is used to parse meta files # -# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.
+# Copyright (c) 2008 - 2020, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent # =20 @@ -13,7 +13,7 @@ import Common.LongFilePathOs as os import re import time import copy - +from hashlib import md5 import Common.EdkLogger as EdkLogger import Common.GlobalData as GlobalData import Ecc.EccGlobalData as EccGlobalData @@ -1498,6 +1498,10 @@ class DecParser(MetaFileParser): self.TblFile =3D EccGlobalData.gDb.TblFile self.FileID =3D -1 =20 + self._CurrentStructurePcdName =3D "" + self._include_flag =3D False + self._package_flag =3D False + ## Parser starter def Start(self): Content =3D '' @@ -1692,6 +1696,62 @@ class DecParser(MetaFileParser): File=3Dself.MetaFile, Line=3Dself._LineIndex+1) self._ValueList[0] =3D '' =20 + def ParsePcdName(self,namelist): + if "[" in namelist[1]: + pcdname =3D namelist[1][:namelist[1].index("[")] + arrayindex =3D namelist[1][namelist[1].index("["):] + namelist[1] =3D pcdname + if len(namelist) =3D=3D 2: + namelist.append(arrayindex) + else: + namelist[2] =3D ".".join((arrayindex,namelist[2])) + return namelist + + def StructPcdParser(self): + self._ValueList[0] =3D self._CurrentStructurePcdName + + if "|" not in self._CurrentLine: + if "" =3D=3D self._CurrentLine: + self._include_flag =3D True + self._package_flag =3D False + self._ValueList =3D None + return + if "" =3D=3D self._CurrentLine: + self._package_flag =3D True + self._ValueList =3D None + self._include_flag =3D False + return + + if self._include_flag: + self._ValueList[1] =3D "_" + md5(self._Curren= tLine.encode('utf-8')).hexdigest() + self._ValueList[2] =3D self._CurrentLine + if self._package_flag and "}" !=3D self._CurrentLine: + self._ValueList[1] =3D "_" + md5(self._CurrentLi= ne.encode('utf-8')).hexdigest() + self._ValueList[2] =3D self._CurrentLine + if self._CurrentLine =3D=3D "}": + self._package_flag =3D False + self._include_flag =3D False + self._ValueList =3D None + else: + PcdTockens =3D self._CurrentLine.split(TAB_VALUE_SPLIT) + PcdNames =3D self.ParsePcdName(PcdTockens[0].split(TAB_SPLIT)) + if len(PcdNames) =3D=3D 2: + if PcdNames[1].strip().endswith("]"): + PcdName =3D PcdNames[1][:PcdNames[1].index('[')] + Index =3D PcdNames[1][PcdNames[1].index('['):] + self._ValueList[0] =3D TAB_SPLIT.join((PcdNames[0], Pc= dName)) + self._ValueList[1] =3D Index + self._ValueList[2] =3D PcdTockens[1] + else: + self._CurrentStructurePcdName =3D "" + else: + if self._CurrentStructurePcdName !=3D TAB_SPLIT.join(PcdNa= mes[:2]): + EdkLogger.error('Parser', FORMAT_INVALID, "Pcd Name do= es not match: %s and %s " % ( + self._CurrentStructurePcdName, TAB_SPLIT.join(PcdNames= [:2])), + File=3Dself.MetaFile, Line=3Dself._Lin= eIndex + 1) + self._ValueList[1] =3D TAB_SPLIT.join(PcdNames[2:]) + self._ValueList[2] =3D PcdTockens[1] + ## PCD sections parser # # [PcdsFixedAtBuild] @@ -1702,6 +1762,9 @@ class DecParser(MetaFileParser): # @ParseMacro def _PcdParser(self): + if self._CurrentStructurePcdName: + self.StructPcdParser() + return TokenList =3D GetSplitValueList(self._CurrentLine, TAB_VALUE_SPLIT= , 1) self._ValueList[0:1] =3D GetSplitValueList(TokenList[0], TAB_SPLIT) # check PCD information @@ -1759,6 +1822,10 @@ class DecParser(MetaFileParser): if not IsValid: EdkLogger.error('Parser', FORMAT_INVALID, Cause, ExtraData=3Ds= elf._CurrentLine, File=3Dself.MetaFile, Line=3Dself._LineIndex+1) + if Cause =3D=3D "StructurePcd": + self._CurrentStructurePcdName =3D TAB_SPLIT.join(self._ValueLi= st[0:2]) + self._ValueList[0] =3D self._CurrentStructurePcdName + self._ValueList[1] =3D ValueList[1].strip() =20 if EccGlobalData.gConfig.UniCheckPCDInfo =3D=3D '1' or EccGlobalDa= ta.gConfig.UniCheckAll =3D=3D '1' or EccGlobalData.gConfig.CheckAll =3D=3D = '1': # check Description, Prompt information --=20 2.14.1.windows.1 -=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 (#53338): https://edk2.groups.io/g/devel/message/53338 Mute This Topic: https://groups.io/mt/69769091/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- --_000_32af13335beb4e3f90d03bbbe2592c5cintelcom_ Content-Disposition: attachment; filename="winmail.dat" Content-Transfer-Encoding: base64 Content-Type: application/ms-tnef; name="winmail.dat" eJ8+Iv8zAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEJgAEAIQAAADA1N0YxN0Q0 MjcxQjRFNDNBMEVDM0YwNDcxNzQyNUNCABMHAQ2ABAACAAAAAgACAAEFgAMADgAAAOQHAQARAAEA CQA1AAUAQQEBIIADAA4AAADkBwEAEQABAAkANQAFAEEBAQiABwAYAAAASVBNLk1pY3Jvc29mdCBN YWlsLk5vdGUAMQgBBIABADwAAABbUEFUQ0ggVjJdIEJhc2VUb29sczpmaXggRWNjIHRvb2wgaXNz dWUgZm9yIGNoZWNrIFN0cnVjdFBjZACQFAELgAEAIQAAADA1N0YxN0Q0MjcxQjRFNDNBMEVDM0Yw NDcxNzQyNUNCABMHAQOQBgDwGwAASgAAAAIBfwABAAAALQAAADwzMmFmMTMzMzViZWI0ZTNmOTBk MDNiYmJlMjU5MmM1Y0BpbnRlbC5jb20+AAAAAAsAHw4AAAAAAgEJEAEAAACLCgAAhwoAAA4cAABM WkZ1lv8Y0mEACmZiaWQEAABjY8BwZzEyNTIA/gND8HRleHQB9wKkA+MCAARjaArAc2V0MCDvB20C gwBQEU0yCoAGtAKAln0KgAjIOwliMTkOwL8JwxZyCjIWcQKAFWIqCbBzCfAEkGF0BbIOUANgc6Jv AYAgRXgRwW4YMF0GUnYEkBe2AhByAMB0fQhQbhoxECAFwAWgG2RkmiADUiAQIheyXHYIkOR3awuA ZDUdUwTwB0ANF3AwCnEX8mJrbWsGcwGQACAgQk1fQuBFR0lOfQr8AfEL8REfsFo6aAJAcHM6wC8v YnVnegMQC2AkLnQHMG5vBaFlLgEFsGcvc2hvd19BIlEuY2dpPw3QPagyMTQOwGwLgGUKgaElFGdB ZHYAcGMJgAxGZRiACHBlUGtnaFRvawnwUwqwJkBHgnUN0C5QY2RTBtCiaRkQVHlwCmBCKGFMSW4a 5ChgbnwlBnsEMHgBQH18U01CAElPU19UQUJMgkUrMFlQRTB8KnB+OB6gHpEeoAMwAAAlFCDZLUE8 SCaABIFGAxAHkE4+LNktQCkgZHUfYHLceVMBkB3ACxEvKDAo4pQuaCzaUADQa2EYMK0uPU0BACbh LzLULgWBfy5bJf8joDS/M5wqoCUMSUpmHMBoBJBlJwQgYQYgKAIvcHVjdEhGxiAFsTmnUEtHBCAL gBcGADrUKBAsJQVFY2OrJxAG8CAJcHAJESAEkFkDYHIsLyEQMEU9sjq+ICUQH2A7YT4hOlB1BUBP GTA9IBmyJQxUaAQAIJ0KsHQRwDtgBCBnbwuA6mccwG8ccGk/UDkAQTGnBAEKUCUMQ2M+oEwHcGlC EkdhQmA8JRBEoi7aZ0UAQAuAECBsJEADcMMuRkRCQm9iICZwQiHKPAbgYiRALmZHkUXvSRTAaWcY UGQtGTBmKC1ieT6gWkEganWkLkYDkTx6SqJ4SDAzAHBIjwotTQAlDFYy7DpPBTBEkXoZ4DkBG9H7 AQBCQlIJgDoAGeBBZAlxdnUv0SYweTlwHcAlBXVOcC/gECBOxXB5BRBnnyHQQkIB0AwBJRsgLlRg 2C9QeTkAAiAvPLEzMPUSEGEt8lcFsB9QJ3JVRxMxcBHxci5SgCB8ILA3MSArV+pNJiBXwB9CgB5w G9AZozwgIDY5hzthVyEpknMoKylaIJwyIAEAHnBaxC0pJQw7DeABICBNACRgBUBhL+xCYRIAPOJz MCAIYVZB91SvVb9Wy2Jd717/YA9Wu4MlBT8UMTU3NjVnAAg0NTVUYDljMjc0YzgXcDY5gB6RNjT+ NEyYXc9i/2QPZR8lI1fhn2Hval9rb2x/JSNAQF1geDEsN1fQctJykCzWI/4jc1BZYnOHEkBBIllj QTHfL1AcUUJRCrESACAHgAGQf1lTDgBzlkyWdBAIUFKGKGRjKVMhMDhdYFMhMd44WiApIEYReJFy PVEpg/4uNKAioD0gUrIEIAlwVyGjGjAn4DxCUi5GK3iPP3mWAdB6P3tPfF904lNQOERYLUSAJkBa gS1JHwEAAjAGkAiRRyFTRC3YMi1DC2B18S0xcBAg7wIwd34DMHI5M3LjhzJykbcHcD1TCFBtBGCA UEwCIPZnVrQ5AE85YQQgGRAs1v+IBQlwii1OYYsuUmJMlm1mvxyDEdAjwCUQR2CIBW0d0aOKPIh1 RWRriOBnGDBfBcCJ0ZFnkA+Ik0cJAGL9B0BEGIA5gInRlCiKLTyxn5FQPMCULJbbcio0OXog3jZz AZlyHpCHwmMLYAQRlkQFkFb0KHEcKTouW8MtQRIAbGYuVAJgLfLsID2X3EWgREgAneWcn/Odoi3y SUSeUXLAhf1t8PmdKl9DCHAJcAIwOdQmspkoEE5hB4CeUSIiop+Xo6MLgJqQdQEAX2YLYP9CMJ5g SvBuoEAmow0ncTGi/6ePbaIuWnQBVvSdgB9ykqjvLUIBATuRH4EonZKcf32RZ0YBAjCeUScncipa QDL7maNaQDaZoFtgmm+bf67/97WfLUEt8j2dk2/2WiBEgPsYULckX7giPgNzEFw2tds9o5RWB0AK UESAH2BbMH5dsHqii64CVvOk9a6TLH5upTE+wrSHowcGkKWAW8YiO2K+5lsxXb9/LUKecCgQvuKe UcEpWzrBKcouPxMowLEpXcHvLUF7CsAYcHk/FMOsxJ/Fozr/xf8tQsEpnlHDJcpfwFQecPxuKL7n nlCeYE4gzO/LLdguYXAosB3AKMdIXDZfwltGIBIAz3/LHzK74iLqLtagakIBKNH5vtfWQf4p0q8J cCahwQiq/b03O6f/szWuq6MNuz2jn6Sq2r/AGf58wNAjED7y39y4It2PwEZ/LYvA0M8x5B/lL6Y/ p0pU/znwzN+o36nv7A/eL7tznlH+TgIg7x/ZTPIP5kYxd+eP/+if79/tz+vP+E/xD/qf6h+/p2/9 j/M/4h/ANv7vZ/dv7/uPu2XMI+asX8DQbfCP0Zuuk/abLhbgTxIoJz+A+UowOCfYoDCQEDAN4DHB /66A2L8Gj7tl1lMJzwyvA/rf7esvwaWAKqDA0CEPX/dP/w2PB34xdwk/Ck8LXwxvFd//Do8Pnxwf BBgUSc8iE2IU///4f+4fIu/+f/+PJh8dH/y//6L40/+11jmhPOAk4IMhHp+PGfJwsFzAroBUQUIq 8CBBTFVFX4KgTEn+VBvvLlWlIi8nvcsumLvB/zB5MYQx383pMybPH7Xc5nFvMybFEqzQfeBwG9Aa IWTUc3ddoGjFoF3KETmPPzJ/nkI7OcRwOzrJlCdb/xsAyk9CqrkTP41Aj0GTyj//Kd/e3zY31tU7 N7vQWiCk9f82z0dvFs+5E0vvTP8d3TT5/8GwT08sn1N/oz/gn6VfVB9/WQ8g31dfWGETsUmNOzc6 /9iBWl9gqpFnGiBckH/wGpAFbNQnfzBGT1JNQXBUX0lOMSGhoH8wImcukSuwWFJkbzOB46Jt6Zdw Y2iEECWJsRMxZfH9wNAleTBf/1YPXH9YJH8w814vXzkpLGbvbX+2T7df/7huGKG5d2zvTa9JT175 OWC/2JByD3MfUa9Svat+Q6Gw/4NA3HCAMYmwJMCzUqt7q3srbiFE4nOeEHiBkEF0NEJ1niBkUxaG 4zcw5bGkN7JALDmyb7N/tIx1fZtAgiNNJNCOoK1OX//cn+JPaJ9Xu4ffnVfcPnaPXwHPbicuwC7x K1VHb+BT/zCSuzcZD2plMSlwULl/eA/8MDrMI5D/MNCQRksDNjhvuZ57gGWwggBre5PA8GZPYoBl gXwhf8s1ObGzOPIysaAxMIFfgm+0j+ZiyeOiSXO7MWlkn89hf2Nij2OaQ2F1WjBwUEXSeNxAYURl kGG4ZZJ6/6HPqN9vH3AvuO+/66WjIlP/XOoiz2hfid90r5IFldrYgf+vf5VP33+xX8zPte/L5xbq Dzvmp9af3+aARWNjRxhsb2Io4KZiLmdDBSvQZhuALlVuaUMfmrJ7oXFgm2A5IicxJ44go9C+z7/c QWxswS/fwj7DbaG/mkqeMHOFoDwgd3wSSzGjwG3JEJs/qCAtQi29ljIuMTTLwC7jPLBDwG93c8vA xvXG9Qx9faggzdAAHwBCAAEAAAAYAAAARgBhAG4ALAAgAFoAaABpAGoAdQBYAAAAHwBlAAEAAAAq AAAAegBoAGkAagB1AHgALgBmAGEAbgBAAGkAbgB0AGUAbAAuAGMAbwBtAAAAAAAfAGQAAQAAAAoA AABTAE0AVABQAAAAAAACAUEAAQAAAGQAAAAAAAAAgSsfpL6jEBmdbgDdAQ9UAgAAAIBGAGEAbgAs ACAAWgBoAGkAagB1AFgAAABTAE0AVABQAAAAegBoAGkAagB1AHgALgBmAGEAbgBAAGkAbgB0AGUA bAAuAGMAbwBtAAAAHwACXQEAAAAqAAAAegBoAGkAagB1AHgALgBmAGEAbgBAAGkAbgB0AGUAbAAu AGMAbwBtAAAAAAAfAOVfAQAAADIAAABzAGkAcAA6AHoAaABpAGoAdQB4AC4AZgBhAG4AQABpAG4A dABlAGwALgBjAG8AbQAAAAAAHwAaDAEAAAAYAAAARgBhAG4ALAAgAFoAaABpAGoAdQBYAAAAHwAf DAEAAAAqAAAAegBoAGkAagB1AHgALgBmAGEAbgBAAGkAbgB0AGUAbAAuAGMAbwBtAAAAAAAfAB4M AQAAAAoAAABTAE0AVABQAAAAAAACARkMAQAAAGQAAAAAAAAAgSsfpL6jEBmdbgDdAQ9UAgAAAIBG AGEAbgAsACAAWgBoAGkAagB1AFgAAABTAE0AVABQAAAAegBoAGkAagB1AHgALgBmAGEAbgBAAGkA bgB0AGUAbAAuAGMAbwBtAAAAHwABXQEAAAAqAAAAegBoAGkAagB1AHgALgBmAGEAbgBAAGkAbgB0 AGUAbAAuAGMAbwBtAAAAAAALAEA6AQAAAB8AGgABAAAAEgAAAEkAUABNAC4ATgBvAHQAZQAAAAAA AwDxPwkEAAALAEA6AQAAAAMA/T/kBAAAAgELMAEAAAAQAAAABX8X1CcbTkOg7D8EcXQlywMAFwAB AAAAQAA5AIAG2tLSzNUBQAAIMDuCHNPSzNUBCwApAAAAAAAfANk/AQAAAP4BAABCAFoAOgBoAHQA dABwAHMAOgAvAC8AYgB1AGcAegBpAGwAbABhAC4AdABpAGEAbgBvAGMAbwByAGUALgBvAHIAZwAv AHMAaABvAHcAXwBiAHUAZwAuAGMAZwBpAD8AaQBkAD0AMgAxADQAMgANAAoADQAKAGcAQQBkAHYA YQBuAGMAZQBkAEYAZQBhAHQAdQByAGUAUABrAGcAVABvAGsAZQBuAFMAcABhAGMAZQBHAHUAaQBk AC4AUABjAGQAUwBtAGIAaQBvAHMAVAB5AHAAZQAwAEIAaQBvAHMASQBuAGYAbwByAG0AYQB0AGkA bwBuAHwADQAKAHsAMAB4ADAAfQB8AFMATQBCAEkATwBTAF8AVABBAEIATABFAF8AVABZAFAARQAw AHwAMAB4ADgAMAAwADEAMAAwADAAMAAgAHsADQAKACAAIAAgACAAPABIAGUAYQBkAGUAcgBGAGkA bABlAHMAPgANAAoAIAAgACAAIAAgACAASQBuAGQAdQBzAHQAcgB5AFMAdABhAG4AZABhAHIAZAAv AFMAbQBCAGkAbwBzAC4AaAANAAoAIAAgACAAIAA8AFAAYQBjAGsAYQBnAGUAcwA+AA0ACgAgACAA IAAgACAAIABNAGQAZQBQAGsAZwAvAE0AZABlAFAAawBnAC4AZABlAGMAAAAAAAsAAIAIIAYAAAAA AMAAAAAAAABGAAAAABSFAAABAAAAHwAAgIYDAgAAAAAAwAAAAAAAAEYBAAAAHgAAAGEAYwBjAGUA cAB0AGwAYQBuAGcAdQBhAGcAZQAAAAAAAQAAAAwAAABlAG4ALQBVAFMAAAADAACACCAGAAAAAADA AAAAAAAARgEAAAAyAAAARQB4AGMAaABhAG4AZwBlAEEAcABwAGwAaQBjAGEAdABpAG8AbgBGAGwA YQBnAHMAAAAAACAAAABIAACACCAGAAAAAADAAAAAAAAARgEAAAAiAAAATgBlAHQAdwBvAHIAawBN AGUAcwBzAGEAZwBlAEkAZAAAAAAAd3gV+zbrsEtrZQjXmun1nx8AAIATj/JB9IMUQaWE7ttaawv/ AQAAABYAAABDAGwAaQBlAG4AdABJAG4AZgBvAAAAAAABAAAAKgAAAEMAbABpAGUAbgB0AD0ATQBT AEUAeABjAGgAYQBuAGcAZQBSAFAAQwAAAAAAHwD6PwEAAAAYAAAARgBhAG4ALAAgAFoAaABpAGoA dQBYAAAAHwA3AAEAAAB4AAAAWwBQAEEAVABDAEgAIABWADIAXQAgAEIAYQBzAGUAVABvAG8AbABz ADoAZgBpAHgAIABFAGMAYwAgAHQAbwBvAGwAIABpAHMAcwB1AGUAIABmAG8AcgAgAGMAaABlAGMA awAgAFMAdAByAHUAYwB0AFAAYwBkAAAAHwA9AAEAAAACAAAAAAAAAAMANgAAAAAAAgFxAAEAAAAW AAAAAdXM0sEszf4DSTp0STStFielgPRzUQAAHwBwAAEAAAB4AAAAWwBQAEEAVABDAEgAIABWADIA XQAgAEIAYQBzAGUAVABvAG8AbABzADoAZgBpAHgAIABFAGMAYwAgAHQAbwBvAGwAIABpAHMAcwB1 AGUAIABmAG8AcgAgAGMAaABlAGMAawAgAFMAdAByAHUAYwB0AFAAYwBkAAAAHwA1EAEAAABaAAAA PAAzADIAYQBmADEAMwAzADMANQBiAGUAYgA0AGUAMwBmADkAMABkADAAMwBiAGIAYgBlADIANQA5 ADIAYwA1AGMAQABpAG4AdABlAGwALgBjAG8AbQA+AAAAAAADAN4/n04AAAMAExIAAAAAAgEAgBOP 8kH0gxRBpYTu21prC/8BAAAALgAAAEgAZQBhAGQAZQByAEIAbwBkAHkARgByAGEAZwBtAGUAbgB0 AEwAaQBzAHQAAAAAAAEAAAAiAAAAAQAKAAAABAAAAAAAAAAUAAAAAAAAAAAAAAD/////AAAAAAAA CwAAgBOP8kH0gxRBpYTu21prC/8BAAAAHAAAAEgAYQBzAFEAdQBvAHQAZQBkAFQAZQB4AHQAAAAA AAAACwAAgBOP8kH0gxRBpYTu21prC/8BAAAAKAAAAEkAcwBRAHUAbwB0AGUAZABUAGUAeAB0AEMA aABhAG4AZwBlAGQAAAAAAAAAQAAHMDHKFdPSzNUBAgELAAEAAAAQAAAABX8X1CcbTkOg7D8EcXQl ywMAJgAAAAAACwAGDAAAAAACARAwAQAAAEYAAAAAAAAAJne9OTvsOEmkphU9y6V7QgcA+tDX4K4P pU2Yf25yQ1yv1QAAAEQRXgAAppNoNoh2bEunStPrR5pMZAAACVTAXQAAAAACARMwAQAAABAAAADN /gNJOnRJNK0WJ6WA9HNRAgEUMAEAAAAMAAAAdwEAAK3R9whCAAAAHwD4PwEAAAAYAAAARgBhAG4A LAAgAFoAaABpAGoAdQBYAAAAHwAiQAEAAAAGAAAARQBYAAAAAAAfACNAAQAAALgAAAAvAE8APQBJ AE4AVABFAEwALwBPAFUAPQBFAFgAQwBIAEEATgBHAEUAIABBAEQATQBJAE4ASQBTAFQAUgBBAFQA SQBWAEUAIABHAFIATwBVAFAAIAAoAEYAWQBEAEkAQgBPAEgARgAyADMAUwBQAEQATABUACkALwBD AE4APQBSAEUAQwBJAFAASQBFAE4AVABTAC8AQwBOAD0ARgBBAE4ALAAgAFoASABJAEoAVQBYAEIA OAA1AAAAHwAkQAEAAAAGAAAARQBYAAAAAAAfACVAAQAAALgAAAAvAE8APQBJAE4AVABFAEwALwBP AFUAPQBFAFgAQwBIAEEATgBHAEUAIABBAEQATQBJAE4ASQBTAFQAUgBBAFQASQBWAEUAIABHAFIA TwBVAFAAIAAoAEYAWQBEAEkAQgBPAEgARgAyADMAUwBQAEQATABUACkALwBDAE4APQBSAEUAQwBJ AFAASQBFAE4AVABTAC8AQwBOAD0ARgBBAE4ALAAgAFoASABJAEoAVQBYAEIAOAA1AAAAHwAwQAEA AAAYAAAARgBhAG4ALAAgAFoAaABpAGoAdQBYAAAAHwAxQAEAAAAYAAAARgBhAG4ALAAgAFoAaABp AGoAdQBYAAAAHwA4QAEAAAAYAAAARgBhAG4ALAAgAFoAaABpAGoAdQBYAAAAHwA5QAEAAAAYAAAA RgBhAG4ALAAgAFoAaABpAGoAdQBYAAAAAwBZQAAAAAADAFpAAAAAAAMACVkBAAAAHwAKXQEAAAAq AAAAegBoAGkAagB1AHgALgBmAGEAbgBAAGkAbgB0AGUAbAAuAGMAbwBtAAAAAAAfAAtdAQAAACoA AAB6AGgAaQBqAHUAeAAuAGYAYQBuAEAAaQBuAHQAZQBsAC4AYwBvAG0AAAAAAB8AAIAfpOszqHou Qr57eeGpjlSzAQAAADgAAABDAG8AbgB2AGUAcgBzAGEAdABpAG8AbgBJAG4AZABlAHgAVAByAGEA YwBrAGkAbgBnAEUAeAAAAAEAAAAkAQAASQBJAD0AWwBDAEkARAA9ADQAOQAwADMAZgBlAGMAZAAt ADcANAAzAGEALQAzADQANAA5AC0AYQBkADEANgAtADIANwBhADUAOAAwAGYANAA3ADMANQAxADsA SQBEAFgASABFAEEARAA9AEQANQBDAEMARAAyAEMAMQAyAEMAOwBJAEQAWABDAE8AVQBOAFQAPQAx AF0AOwBQAFMAPQBVAG4AawBuAG8AdwBuADsAVgBlAHIAcwBpAG8AbgA9AFYAZQByAHMAaQBvAG4A IAAxADUALgAxACAAKABCAHUAaQBsAGQAIAAxADcAMQAzAC4AMAApACwAIABTAHQAYQBnAGUAPQBI ADQAOwBVAFAAPQAxADAAOwBEAFAAPQAxAEMANQAAAB8AAICGAwIAAAAAAMAAAAAAAABGAQAAABoA AABkAGwAcAAtAHIAZQBhAGMAdABpAG8AbgAAAAAAAQAAABQAAABuAG8ALQBhAGMAdABpAG8AbgAA AB8AAICGAwIAAAAAAMAAAAAAAABGAQAAABgAAABkAGwAcAAtAHYAZQByAHMAaQBvAG4AAAABAAAA EgAAADEAMQAuADIALgAwAC4ANgAAAAAAHwAAgIYDAgAAAAAAwAAAAAAAAEYBAAAAGAAAAGQAbABw AC0AcAByAG8AZAB1AGMAdAAAAAEAAAAaAAAAZABsAHAAZQAtAHcAaQBuAGQAbwB3AHMAAAAAAAIB AIAIIAYAAAAAAMAAAAAAAABGAQAAADYAAABJAG4AVAByAGEAbgBzAGkAdABNAGUAcwBzAGEAZwBl AEMAbwByAHIAZQBsAGEAdABvAHIAAAAAAAEAAAAQAAAAQ1O6hRI65kW4DQRYvFBCrkAAAIAIIAYA AAAAAMAAAAAAAABGAAAAAL+FAADQ2vLR0szVAQsAAIAIIAYAAAAAAMAAAAAAAABGAAAAAIKFAAAA AAAAAwAAgAggBgAAAAAAwAAAAAAAAEYAAAAA64UAAAkEAAADAA00/T8AAB8AAICGAwIAAAAAAMAA AAAAAABGAQAAACAAAAB4AC0AbQBzAC0AaABhAHMALQBhAHQAdABhAGMAaAAAAAEAAAACAAAAAAAA AB8AAICGAwIAAAAAAMAAAAAAAABGAQAAACIAAAB4AC0AbwByAGkAZwBpAG4AYQB0AGkAbgBnAC0A aQBwAAAAAAABAAAAIAAAAFsAMQAwAC4AMgAzADkALgAxADIANwAuADMANgBdAAAAhfM= --_000_32af13335beb4e3f90d03bbbe2592c5cintelcom_--