From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (EUR05-VI1-obe.outbound.protection.outlook.com [40.107.21.59]) by mx.groups.io with SMTP id smtpd.web11.1599.1619807835249136789 for ; Fri, 30 Apr 2021 11:37:16 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=HGUi9LDd; spf=pass (domain: arm.com, ip: 40.107.21.59, mailfrom: samer.el-haj-mahmoud@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Gg/DiU8u3jeDJgukVMZxcdif7WP6hKmo2Pqs6IAzjBQ=; b=HGUi9LDde04PfWNy3N6KqRSke54wQvSD8XWew7bG3YuBEzoniHQx2PwLbNsIokv5YmlfNy0shLesRpIT7bffiP+K9gzNgBHwvRW3R+nwddmN3BsTvjLaqBLL1FNkXg7A779Zk4AT+LE4x1VGmKuUz8USQH+yPCwgMel22YC3VJw= Received: from AM6PR10CA0029.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:89::42) by VI1PR08MB4511.eurprd08.prod.outlook.com (2603:10a6:803:f9::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.23; Fri, 30 Apr 2021 18:37:11 +0000 Received: from AM5EUR03FT028.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:89:cafe::8a) by AM6PR10CA0029.outlook.office365.com (2603:10a6:209:89::42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Fri, 30 Apr 2021 18:37:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT028.mail.protection.outlook.com (10.152.16.118) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.27 via Frontend Transport; Fri, 30 Apr 2021 18:37:09 +0000 Received: ("Tessian outbound 9a5bb9d11315:v91"); Fri, 30 Apr 2021 18:37:08 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 55db0897cb15c9b1 X-CR-MTA-TID: 64aa7808 Received: from 212acc4b4cd6.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id E72402DE-766C-4664-8AD2-27182034D301.1; Fri, 30 Apr 2021 18:36:57 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 212acc4b4cd6.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 30 Apr 2021 18:36:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B60YkUHnSnum4ZebtEcvLUwtAbhziX5FWZGJ5fpxT/mDfPfqe+DJvLckEjawQXEVlsBk4jgthTSH81g20PZky4z3XNWKc3sqSVgnbYQad7QR6D9tyfiUGYn/FG550korp5/n31JeQZAwGqQTOUUiPHzUzL6H9uXmdLWQM1CTG6BKdVa8roRG+Yzgp2YvysyCendxpPoBH9e2SbR9PAuGaI8sm1jtI55lQqx0Ogtn2WNrx+yJ2Ee8DuATjaRdlXIfJHntxhYakDioSAOyGE5dhCrCXzv4dyYCOtYZnsaEiH74zDkQ6cKx5+JXctJwsqduN6+8WjQuAb88JlWc5ijWfg== 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-SenderADCheck; bh=Gg/DiU8u3jeDJgukVMZxcdif7WP6hKmo2Pqs6IAzjBQ=; b=XhCi4wdmAScG78zChJAoukvhJLUTAHbwuMJbF4R+3xyPjl3p4sXBelZsnt5sGY/v41S/NIyhx6s044USSuXiroNK+JiOejQvxfUG3HKDpwTll/AfwuYhvkcNAWm/qKL6HxYLxz3W+rw52CD8tTNYJfB6MZRXvxPElwfpAg4RATaJsxGiEDhSMWZBZ50V7DW/bOgr4zzJwdcdgfl0s7RNWycuE6RMjiSC9p/Hq20nw32bV5FkIBHuPFt+Vo8fay3Xs0mYU19nPLgsFSJ7fHnnqPDd64r5W1td8P5UDqxzItNLahjqWyJfUDZ5+es9m3Ehia0Qso1G+sxrQNeyzVUsWA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Gg/DiU8u3jeDJgukVMZxcdif7WP6hKmo2Pqs6IAzjBQ=; b=HGUi9LDde04PfWNy3N6KqRSke54wQvSD8XWew7bG3YuBEzoniHQx2PwLbNsIokv5YmlfNy0shLesRpIT7bffiP+K9gzNgBHwvRW3R+nwddmN3BsTvjLaqBLL1FNkXg7A779Zk4AT+LE4x1VGmKuUz8USQH+yPCwgMel22YC3VJw= Received: from PAXPR08MB6987.eurprd08.prod.outlook.com (2603:10a6:102:1df::15) by PAXPR08MB6717.eurprd08.prod.outlook.com (2603:10a6:102:131::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.22; Fri, 30 Apr 2021 18:36:46 +0000 Received: from PAXPR08MB6987.eurprd08.prod.outlook.com ([fe80::7c65:78c4:8d03:62ad]) by PAXPR08MB6987.eurprd08.prod.outlook.com ([fe80::7c65:78c4:8d03:62ad%7]) with mapi id 15.20.4087.035; Fri, 30 Apr 2021 18:36:45 +0000 From: "Samer El-Haj-Mahmoud" To: Laszlo Ersek , Pete Batard , Leif Lindholm , "devel@edk2.groups.io" CC: "Andrei Warkentin (awarkentin@vmware.com)" , "Wang, Sunny (HPS SW)" , "zhichao.gao@intel.com" , "ray.ni@intel.com" , Ard Biesheuvel , Andrew Fish , Michael D Kinney , Jian J Wang , Hao A Wu , Samer El-Haj-Mahmoud Subject: Re: [EXTERNAL] Re: [edk2-devel] [edk2][PATCH 1/1] MdeModulePkg/UefiBootManagerLib: Signal ReadyToBoot on platform recovery Thread-Topic: [EXTERNAL] Re: [edk2-devel] [edk2][PATCH 1/1] MdeModulePkg/UefiBootManagerLib: Signal ReadyToBoot on platform recovery Thread-Index: AQHWQ8SQFLvwmBvsZES/t57IY1DSLKjcd5EAgAAtnACAACLVAIAAOroAgAAAxYCAAABtYIAABBLAgBR1CgCBbD9ngIAACiAAgAAjb4CAcWzIUA== Date: Fri, 30 Apr 2021 18:36:45 +0000 Message-ID: References: <20200616095622.2820-1-pete@akeo.ie> <20200616095622.2820-2-pete@akeo.ie> <99904809-1e07-6bd8-f7ba-25e87b1fe543@akeo.ie> <161962620CFC252E.28613@groups.io> <20210217114237.GF1664@vanye> <1c551fb6-8b5b-286e-8f74-b28eb797a6ae@akeo.ie> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [99.132.126.10] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 2f13606d-4218-44c1-274a-08d90c06f68b x-ms-traffictypediagnostic: PAXPR08MB6717:|VI1PR08MB4511: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: YUlFIdUCKhglZ5n4CeKAoh16Re6+jklYz3p7pH+NebEsMC9kfQxpN2/XdhI13GASEeRjBNRmRMpJEm8goUueCCHSGreoQZHmXwKMp0ov7BHhwk7br93exYEE3uwrrgfPE3KLYHy7r3KH7gtZdKHNiJ66XnZw3ma0NfFnAjQnQtxsq47bFbslk9WUbUyJfmPZWc2c+mvMKChDtIx+xx/X0GE5X6kFiGNvEQZda9VF9Hp+sUB0x4gO7dRw1X6ULs5Up9gh36gDSKAUuaoaJaahJ6ZK1VPuVzwhKem9CDaRmFD7kZzR/7+vM2QgDFY33NbektEEAxsCpWz7hYUXf1jQGcPXWHZF7LCYARERrumwz0ab4DHq1ghVsgxbthw16jEAXJQJceGXvmTMABsiXSVZxmFadcbtzSRwBV5t2fdY0FhtKWNEcTnIt/smdOvoyUQkFT3A05rEWKY5uEMeJ6M0QJCD1ON7fjsdc7VE2CEzgxAqbupr0Q890hLsZn+zi3MWqYMCek5sVjmRwd8Z5Ia2iBOfobE10Tghdj79lDRDH0JaWyoQdIaNiwN1Rp/h28TxI6y+kqu19+Gq1mZ94hqJokhNxnjLQJHEFmrm6QL+JWVuvRlJnxBk8wmnTB5obXHrHLOkKx9AetEqSv+yVJmYHMaleEdv4MGL+HUAeDGn8OWCl39xhNjJKTSnbNkQ20Wq X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR08MB6987.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(376002)(396003)(39850400004)(136003)(366004)(346002)(30864003)(8936002)(8676002)(45080400002)(2906002)(83380400001)(86362001)(186003)(478600001)(26005)(4326008)(55016002)(966005)(66446008)(76116006)(9686003)(66556008)(33656002)(7696005)(66946007)(64756008)(316002)(66476007)(71200400001)(54906003)(122000001)(6506007)(5660300002)(110136005)(7416002)(52536014)(53546011)(38100700002)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?RzJtMStSZFRkMDdvRnJ1MjRJVW9IcmVFNDBTWldxOE1kaEN1S1FSeHRONHVk?= =?utf-8?B?NXBwT2svZkZJY2ovdzdBYk0zWVltcjJRWlB5T0NGTmI3SXl4c2VudDJNSlZj?= =?utf-8?B?eTh5TGZnT3QxRWtndTU5YjZZR0VkL2MzNzgvWUF3dnZqcWZzY1RFZGgxWWts?= =?utf-8?B?Nm5LOEZFWS8rNnNBSjdldXgzQzZIZGh5aE84QUttN3VySkRTVzZWUkdjU0Ry?= =?utf-8?B?WTlQQTJJUUxxSENmNHU0MG9SaCtYQ1Rpd1V6K0xtbjJONGwzZWFTdlZBQi9q?= =?utf-8?B?MXdHeHVRY2FKaDFibTZmTHFjZ1lWWGdpL2dSSmNsRDB6VHYzYjlhZUJiRzJt?= =?utf-8?B?Tlg0VmhvU0N5ZnJJWkttdm95YUF5RFd1bzJYbDZ6UU9ub0lmZ3VUU0VmbmUz?= =?utf-8?B?TU1OK1czRUdQLzNjVUZtSUVXL2dIWVhFLytlRnJjb21wdVVIYUw5Qi9USWhn?= =?utf-8?B?alNGcmFBdXk4ajdMVEw5M3Y4WUMyRXlKMFhFc0pDYlhXbVd1UXJhOGF2RG85?= =?utf-8?B?SEh4dmFibS9DL2lIYU9zMGhFbmRqRzhYdEltamVMMWJYdEVFZGlMcmNKeFZY?= =?utf-8?B?cFNDTFp5djM4emRYeHk1a1lLR0hXcFg5cThJN2hQMFByVU9lWWpkbXNYWnR0?= =?utf-8?B?Nk84RUE2c1IweXJ6MkhCVTZzLzd4VzNRTUJmazhiN0VTY2h5QitobzBsL2VL?= =?utf-8?B?eEk0Tkw0azFGL1A3akJEd3ptK05nYWEwcm1jTVFrbm1BbDlxNzBaTFpXeHpy?= =?utf-8?B?NnBXVG0wQi9yRndtVmxBWlc1R29zT2d5a2FlazFOWjZiRWN6Ymk3bUpBMlVp?= =?utf-8?B?RjNKZmxyRnFaazk4NnlzYUJPSnViN1IzOXF2WjNoVk5GM2dJblkrYmlqSVFU?= =?utf-8?B?aVFLMGREUDFRM0Y0ajdUUHFhZXhaRmZ4SXh6WUdqcTFhZW14emw0cS90UGdw?= =?utf-8?B?SmEyV2VGRWQzcmxzU3Znbncvc0tQRmxMRFBjY3JZUmtIc0ZUSy8zcnBYMFI4?= =?utf-8?B?N1VLeWF0UGdjRDFLVFhzcG9KUktyTDJPYzZ0K1poSWd4ajdlN2REbkk5Lyt4?= =?utf-8?B?cld2d1BLNlMzSVNvbG5hTzVhRWtrNUpWY3N2Q2NpVHpCeUVHWWdHazlmczlr?= =?utf-8?B?SFNGNGg1TkRHcVdoMFBNc1h1ckZtL1JJMkZaaisrTHdGUGI4aGthVmRPYlUy?= =?utf-8?B?TGRWa1dLSW9zcjBScXJtYlVsQlJUeUhqdi9LeXluR3UxamxrSFVhdUJMeXcy?= =?utf-8?B?RmtlckV5d0JmN3ZydlZqODA3SVNQSFZLT3dreVRxdU5HcEVzck5MTlgwRXlS?= =?utf-8?B?QTdDR1FJejZlWkVBLzhPYlNoQjhiY0hCaCtlUkhMZ1dSWjJDdktubFRySkVs?= =?utf-8?B?NDFOLytvaWErWU9ZK28waVE0M1c2Q1Qxekd4UHVvUjBXYzBQcW9zNkVCNUdU?= =?utf-8?B?OFJXUDY2WThNQSs5RzUvVDBza2paSW92Zzh5YkZtS3hZbDJneWpnVENMREtJ?= =?utf-8?B?ajI5bHVKK0hUWXBnOWI2WEpMS0VUUW44bzZQWTJFYkN6SDhTNlRzSUNhNmR1?= =?utf-8?B?OGovUlJKMVNUbStRSDVsSUNoNzlhd0tUcFNpWWt1cXNHWU9JRCt0WnVhYnNJ?= =?utf-8?B?cDVNYVlMdTFRZkg4SGVXUGpNRnJPVXFJQWZPclpodjk3clJKRDVPQzJtRStT?= =?utf-8?B?MUVjZFhDZDBpQy80S3hPMWd2V3FXTG9vZWdRVFV2SzdGbFQ3Kythc0NuMjd2?= =?utf-8?Q?ithChrhGeAaocXmOyGGyvl50ji5Q2CRa1LO+lfo?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6717 Original-Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=arm.com; Return-Path: Samer.El-Haj-Mahmoud@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT028.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 4ac6e94b-6b49-4eec-6fb3-08d90c06e87c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rXB7eCIrBkLQEgjnpy2vzJ/YtfIuA4yFIRKoCEc/dOtiVQU6PVpa37Hltl5G6C+G50PwXCgrqaDc88g+4WE/ga4n5zAslCmU/8M0nSITee2QTpqu3nBoAPEWBA+K4GMjaP5IB5ytC9axlCHZhYVqecdR2QX+vlc3uP+7r57hsL7ulWFNkmNbg3gs96XbWH7Bw1stH9ihni+vHkrg0FYU9iDycYIJfv3V5fFua/yw6ptLxGGb5VxIKtNPUQ7yFUTROyAerfuMKQDGvaURwQFMqVKFHwuGFqLE7MmCgBKgx0xyAlMBiCq47SLhF42VZD0aBBSMHLL2QMxMXF4C01aKGutacjpALc3K+UsGiwgAiPrw24GuR/in2MxYtXA0328EwzN4cfYAu8rf0Qy5WwZ2lm7wQL4OkBTeae7j6jQPLUpvaSUHcDjNZhG098Ww8keN9r9mqc3WOFAQYeHObxB6QgKheNNQim+BRYZRrp8Gil/6/jg7P8fYH3vjlaL8/cKjool+SD7DciBI3rbsiFV66jEo3VHiZ4HTyQ9NjGqmMENyusdIKT6LtyGal9bVRFQzq9KtOcNJU8oH2MU/YteNVS87+UIPeEUv66YH29HAih0XTq2p3BUzffTYgfthwG7LGWZiXPse7pFGndkLENJ2pBnVv31ZPFwuWfEZfvkNniKCukWdsovkOMJSTg+70cRmzr+KVpGu3r7EbnvwYulAzZm2nKdHOEoWmomDBQDbjaJSa5U6tKSZJ0qc/yQiajZmn89wFzC9800E6rfRW4AqtA== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(6029001)(4636009)(39850400004)(396003)(136003)(346002)(376002)(36840700001)(46966006)(186003)(36860700001)(7696005)(316002)(70586007)(110136005)(55016002)(30864003)(6506007)(356005)(86362001)(4326008)(33656002)(2906002)(54906003)(9686003)(47076005)(70206006)(336012)(52536014)(82740400003)(81166007)(45080400002)(83380400001)(82310400003)(478600001)(34020700004)(53546011)(966005)(26005)(8676002)(5660300002)(8936002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 18:37:09.4498 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2f13606d-4218-44c1-274a-08d90c06f68b X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT028.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB4511 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmVzdXJyZWN0aW5nLi4NCg0KVGhpcyBjb250aW51ZXMgdG8gYmUgYSBwYWluIHBvaW50Lg0KQXQg dGhpcyBwb2ludCwgaXQgc2VlbXMgdG8gbWUgdGhhdCB3ZSBoYXZlIG11bHRpcGxlIHBlb3BsZSBh bmQgcGxhdGZvcm1zIGluIHRoaXMgY29tbXVuaXR5IHRoYXQgYXJlIGNvbXBsYWluaW5nIGFib3V0 IGNvZGUgbm90IGZvbGxvd2luZyB0aGUgc3BlYywgYnV0IHRoZSBtYWludGFpbmVycyBhcmUgbm90 IGFncmVlaW5nIGJlY2F1c2Ugb2YgImxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBvZiBzb21lIHVuaWRl bnRpZmllZCBwbGF0Zm9ybXMiLiBUaGlzIGlzIHZlcnkgdW5mb3J0dW5hdGUsIGJ1dCBpZiB0aGUg cGF0aCBmb3J3YXJkIGlzIHRvIGZvcmsgdGhlIGxpYnJhcnksIHNvIGJlIGl0Lg0KDQpJIGFsc28g cmVjZW50bHkgb3BlbmVkIGFuIEVDUiBhZ2FpbnN0IHRoZSBVRUZJIHNwZWMgdG8gY2xhcmlmeSB0 aGUgbGFuZ3VhZ2UgaW4gb3JkZXIgdG8gYXZvaWQgYW55IGNvbmZ1c2lvbjogaHR0cHM6Ly9idWd6 aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzM2DQoNCg0KVGhhbmtzLA0KLS1T YW1lcg0KDQoNCg0KDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBM YXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIEZlYnJ1 YXJ5IDE3LCAyMDIxIDk6MjYgQU0NCj4gVG86IFBldGUgQmF0YXJkIDxwZXRlQGFrZW8uaWU+OyBM ZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT47DQo+IGRldmVsQGVkazIuZ3JvdXBzLmlv DQo+IENjOiBTYW1lciBFbC1IYWotTWFobW91ZCA8U2FtZXIuRWwtSGFqLU1haG1vdWRAYXJtLmNv bT47IEFuZHJlaQ0KPiBXYXJrZW50aW4gKGF3YXJrZW50aW5Adm13YXJlLmNvbSkgPGF3YXJrZW50 aW5Adm13YXJlLmNvbT47IFdhbmcsDQo+IFN1bm55IChIUFMgU1cpIDxzdW5ueXdhbmdAaHBlLmNv bT47IHpoaWNoYW8uZ2FvQGludGVsLmNvbTsNCj4gcmF5Lm5pQGludGVsLmNvbTsgQXJkIEJpZXNo ZXV2ZWwgPGFyZGIrdGlhbm9jb3JlQGtlcm5lbC5vcmc+OyBBbmRyZXcNCj4gRmlzaCA8YWZpc2hA YXBwbGUuY29tPjsgTWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ Ow0KPiBKaWFuIEogV2FuZyA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgSGFvIEEgV3UgPGhhby5h Lnd1QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtFWFRFUk5BTF0gUmU6IFtlZGsyLWRldmVs XSBbZWRrMl1bUEFUQ0ggMS8xXQ0KPiBNZGVNb2R1bGVQa2cvVWVmaUJvb3RNYW5hZ2VyTGliOiBT aWduYWwgUmVhZHlUb0Jvb3Qgb24gcGxhdGZvcm0NCj4gcmVjb3ZlcnkNCj4NCj4gT24gMDIvMTcv MjEgMTM6MTgsIFBldGUgQmF0YXJkIHdyb3RlOg0KPiA+IEhpIExlaWYsDQo+ID4NCj4gPiBUaGFu a3MgZm9yIHRyeWluZyB0byByZXN1cnJlY3QgdGhpcyBpc3N1ZS4NCj4gPg0KPiA+IEF0IHRoaXMg c3RhZ2UsIGFuZCBkZXNwaXRlIHNvbWUgaW5pdGlhbCBwdXNoYmFjayBpbiB0aGUgYnVnemlsbGEN Cj4gPiB0aWNrZXQsIEkgYmVsaWV2ZSB3ZSBjYW4gYWxsIGFncmVlIHdpdGggdGhlIGNvbnNlbnN1 cyB0aGF0DQo+ID4gVWVmaUJvb3RNYW5hZ2VyTGliIGlzIG5vdCBpbiBmYWN0IHNwZWNzLWNvbXBs aWFudCBhbmQgdGhlcmVmb3JlIG5lZWRzDQo+ID4gdG8gYmUgZml4ZWQsIG9uZSB3YXkgb3IgYW5v dGhlciwgdG8gbWFrZSBpdCBzcGVjcy1jb21wbGlhbnQuDQo+ID4NCj4gPiBNeSB0YWtlIG9uIHRo aXMgaXMgdGhhdCwgcmF0aGVyIHRoYW4gcHJvcG9zZSBhIG5ldyBwYXRjaCwgSSdkIG11Y2gNCj4g PiByYXRoZXIgaGF2ZSB0aGUgY3VycmVudCBtYWludGFpbmVycyBhZ3JlZSBvbiB0aGUgY291cnNl IG9mIGFjdGlvbiB0bw0KPiA+IGZpeCB0aGUgbGlicmFyeSAod2hpY2gsIGFzIExlaWYgc3VnZ2Vz dHMsIG1pZ2h0IHZlcnkgd2VsbCBiZSB0byBzcGxpdA0KPiA+IHRoZSBsaWJyYXJ5IGludG8gYSBz cGVjcy1jb21wbGlhbnQgYW5kIG5vbi1zcGVjcy1jb21wbGlhbnQgdmVyc2lvbiksDQo+ID4gYXMg aXQgd291bGQgb2YgY291cnNlIGJlIGJldHRlciBpZiB0aGUgZml4IGNhbWUgZnJvbSBwZW9wbGUg d2hvIGhhdmUNCj4gPiBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmFtaWZpY2F0aW9ucyB3 ZSBtaWdodCBmYWNlIHdpdGggdHJ5aW5nIHRvDQo+ID4gY29ycmVjdCB0aGUgY3VycmVudCBiZWhh dmlvdXIsIGFuZCBlc3BlY2lhbGx5LCB3aG8gaGF2ZSBrbm93bGVkZ2Ugb2YNCj4gPiB0aGUgcGxh dGZvcm1zIHRoYXQgbWlnaHQgYmUgaW1wYWN0ZWQgZnJvbSBtYWtpbmcgdGhlIGxpYiBzcGVjcy1j b21wbGlhbnQuDQo+ID4NCj4gPiBFc3BlY2lhbGx5LCBJIGRvbid0IHRoaW5rIHRoYXQgdGhlIHBh dGNoIHRoYXQgSSBvcmlnaW5hbGx5IHN1Ym1pdHRlZA0KPiA+IGZvciB0aGlzLCBvciB0aGUgYWRk aXRpb25hbCBwcm9wb3NhbHMgd2UgbWFkZSwgYXJlIHN0aWxsIHJlY2VpdmFibGUsDQo+ID4gYXMg dGhleSBzZWVtIHRvIGZhbGwgc2hvcnQgb2YgZml4aW5nIHRoZSBpc3N1ZSBpbiBhIG1hbm5lciB0 aGF0IGFsbA0KPiA+IHBsYXRmb3JtcyBjYW4gYmUgaGFwcHkgd2l0aC4gQW5kIHRoYXQgaXMgd2h5 IEknZCBsaWtlIHRvIGhlYXIgZnJvbSB0aGUNCj4gPiBtYWludGFpbmVycyBvbiB3aGF0IHRoZWly IHByZWZlcnJlZCBhcHByb2FjaCB3b3VsZCBiZS4NCj4NCj4gQSBuZXcgRmVhdHVyZSBQQ0QgY291 bGQgc2F0aXNmeSBib3RoIHNldHMgb2YgcGxhdGZvcm1zLCBjb3VsZCBpdCBub3Q/DQo+DQo+IChT b3JyeSBpZiB0aGUgb3JpZ2luYWwgcGF0Y2ggYWxyZWFkeSBoYWQgc3VjaCBhIFBDRDsgSSBkb24n dCByZW1lbWJlci4pDQo+DQo+IE9mIGNvdXJzZSB0aGVuIHdlJ2QgaGF2ZSBhIGRlYmF0ZSBhcm91 bmQgdGhlIERFQyBkZWZhdWx0IGZvciB0aGUgbmV3IFBDRA0KPiAtLSBJJ2Qgc2F5IHRoZSBkZWZh dWx0IHZhbHVlIG9mIHRoZSBQQ0Qgc2hvdWxkIG1hdGNoIHRoZSBzcGVjLW1hbmRhdGVkDQo+IGJl aGF2aW9yLg0KPg0KPiBJIGRvbid0IHJlY2FsbCBhbnkgc3BlY2lmaWNzLCBidXQgYSBidWctY29t cGF0IHBhdHRlcm4gdGhhdCdzIHNvbWV0aW1lcyB1c2VkIGlzDQo+IHRoaXM6DQo+DQo+ICAgaWYg KEJ1Z0NvbXBhdEVuYWJsZWQpIHsNCj4gICAgIC8vDQo+ICAgICAvLyBkbyB0aGUgcmlnaHQgdGhp bmcgaW4gdGhlIHdyb25nIHBsYWNlLCBmb3IgbGVnYWN5IHBsYXRmb3Jtcycgc2FrZQ0KPiAgICAg Ly8NCj4gICAgRm9vICgpOw0KPiAgIH0NCj4NCj4gICAvLw0KPiAgIC8vIERvIHNvbWUgc3R1ZmYu DQo+ICAgLy8NCj4gICBCYXIgKCk7DQo+DQo+ICAgaWYgKCFCdWdDb21wYXRFbmFibGVkKSB7DQo+ ICAgICAvLw0KPiAgICAgLy8gZG8gdGhlIHJpZ2h0IHRoaW5nIGluIHRoZSByaWdodCBwbGFjZSwg Zm9yIGNvbmZvcm1hbnQgcGxhdGZvcm1zDQo+ICAgICAvLw0KPiAgICBGb28gKCk7DQo+ICAgfQ0K Pg0KPiBOb3Qgc3VyZSBpZiBpdCBhcHBsaWVzIGhlcmUuDQo+DQo+IFRoYW5rcw0KPiBMYXN6bG8N Cj4NCj4NCj4gPiBPbiAyMDIxLjAyLjE3IDExOjQyLCBMZWlmIExpbmRob2xtIHdyb3RlOg0KPiA+ PiBIaSBQZXRlLCArdmFyaW91cw0KPiA+Pg0KPiA+PiBSZXN1cnJlY3RpbmcgdGhpcyBvbGQgdGhy ZWFkIHNpbmNlIEFyZCBwb2ludGVkIG91dCBhbiBpc3N1ZSBJIHJhbg0KPiA+PiBpbnRvIG15c2Vs ZiBoYWQgYWxyZWFkeSBiZWVuIGVuY291bnRlcmVkIGJ5IFBldGUuDQo+ID4+IEFuZCB0aGUgYnVn emlsbGEgdGlja2V0IChkaXJlY3RseSBiZWxvdyB0aGlzIHJlcGx5KSBoYXMgaGFkIG5vDQo+ID4+ IHJlbGV2YW50IHByb2dyZXNzIHNpbmNlIEF1Z3VzdC4NCj4gPj4NCj4gPj4gRXhlY3V0aXZlIHN1 bW1hcnk6DQo+ID4+IFRoZSBjdXJyZW50IFVlZmlCb290TWFuYWdlckxpYiBpbXBsZW1lbnRhdGlv biBvZiB0aGUNCj4gUGxhdGZvcm1SZWNvdmVyeQ0KPiA+PiBwYXRoIGRvZXMgbm90IG5vdGlmeSB0 aGUgRUZJX0VWRU5UX0dST1VQX1JFQURZX1RPX0JPT1QgZXZlbnQuDQo+ID4+DQo+ID4+IFRoZSBh cmd1bWVudCBoYXMgYmVlbiBtYWRlIHRoYXQgc2luY2UgY2hhbmdpbmcgdGhpcyB3b3VsZCBhZmZl Y3QgYW4NCj4gPj4gdW5uYW1lZCBudW1iZXIgb2Ygbm9uLXB1YmxpYyBwbGF0Zm9ybXMsIHRoZSBi ZWhhdmlvdXIgY2Fubm90IGJlDQo+ID4+IGNoYW5nZWQgZXZlbiB0aG91Z2ggaXQgdmlvbGF0ZXMg dGhlIFVFRkkgc3BlY2lmaWNhdGlvbi4NCj4gPj4NCj4gPj4gSSBkaXNhZ3JlZSB3aXRoIHRoYXQg c3RhdGVtZW50LiBJZiB3ZSB3YW50IHRvIGZvcmsgVWVmaUJvb3RNYW5hZ2VyTGliDQo+ID4+IGlu dG8gYSBCcm9rZW5MZWdhY3lVZWZpQm9vdE1hbmFnZXJMaWIgYW5kIGFuIGFjdHVhbGx5IGNvcnJl Y3Qgb25lLA0KPiA+PiBhbmQgaGF2ZSB0aG9zZSBwbGF0Zm9ybXMgbW92ZSB0byB0aGUgQnJva2Vu TGVnYWN5IHZhcmlhbnQsIEknbSBPSw0KPiA+PiB3aXRoIHRoYXQuDQo+ID4+DQo+ID4+IEJ1dCB1 c2luZyB0aGUgZGVmYXVsdCB2ZXJzaW9uIHNob3VsZCBnaXZlIHNwZWNpZmljYXRpb24tY29tcGxp YW50DQo+ID4+IGJlaGF2aW91ci4NCj4gPj4NCj4gPj4gLw0KPiA+PiAgICAgIExlaWYNCj4gPj4N Cj4gPj4gT24gVHVlLCBKdW4gMzAsIDIwMjAgYXQgMTg6MTc6MTAgKzAxMDAsIFBldGUgQmF0YXJk IHdyb3RlOg0KPiA+Pj4gUGxlYXNlIG5vdGUgdGhhdCBJIGhhdmUgY3JlYXRlZCBhIGJ1ZyByZXBv cnQNCj4gPj4+IChodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lk PTI4MzEpIHRvIGFkZHJlc3MgdGhlDQo+ID4+PiBub24tY29tcGxpYW5jZSBpc3N1ZSB3YXMgcmFp c2VkIGR1cmluZyB0aGUgY291cnNlIG9mIHRoZSBkaXNjdXNzaW9uDQo+ID4+PiBiZWxvdy4NCj4g Pj4+DQo+ID4+PiBSZWdhcmRzLA0KPiA+Pj4NCj4gPj4+IC9QZXRlDQo+ID4+Pg0KPiA+Pj4NCj4g Pj4+IE9uIDIwMjAuMDYuMTcgMTg6MDYsIFNhbWVyIEVsLUhhai1NYWhtb3VkIHdyb3RlOg0KPiA+ Pj4+IEkgd29ya2VkIHdpdGggUGV0ZSBvZmZsaW5lIG9uIHRoaXMuLg0KPiA+Pj4+DQo+ID4+Pj4g VGhpcyBjb2RlIHNlZW1zIHRvIGJlIHZpb2xhdGluZyB0aGUgVUVGSSBTcGVjOg0KPiA+Pj4+DQo+ ID4+Pj4NCj4gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL2Jsb2IvYTU2YWYyM2Yw NjZlMjgxNmM2N2I3YzZlNjRkZQ0KPiA+Pj4+DQo+IDdkZGVmY2Q3MDc4MC9NZGVNb2R1bGVQa2cv TGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIvQm1Cb290LmMjTDE3Ng0KPiAzDQo+ID4+Pj4NCj4g Pj4+Pg0KPiA+Pj4+ICAgICAvLw0KPiA+Pj4+ICAgICAvLyAzLiBTaWduYWwgdGhlIEVWVF9TSUdO QUxfUkVBRFlfVE9fQk9PVCBldmVudCB3aGVuIHdlIGFyZQ0KPiA+Pj4+IGFib3V0IHRvIGxvYWQg YW5kIGV4ZWN1dGUNCj4gPj4+PiAgICAgLy8gICAgdGhlIGJvb3Qgb3B0aW9uLg0KPiA+Pj4+ICAg ICAvLw0KPiA+Pj4+ICAgICBpZiAoQm1Jc0Jvb3RNYW5hZ2VyTWVudUZpbGVQYXRoIChCb290T3B0 aW9uLT5GaWxlUGF0aCkpIHsNCj4gPj4+PiAgICAgICBERUJVRyAoKEVGSV9EX0lORk8sICJbQmRz XSBCb290aW5nIEJvb3QgTWFuYWdlciBNZW51LlxuIikpOw0KPiA+Pj4+ICAgICAgIEJtU3RvcEhv dGtleVNlcnZpY2UgKE5VTEwsIE5VTEwpOw0KPiA+Pj4+ICAgICB9IGVsc2Ugew0KPiA+Pj4+ICAg ICAgIEVmaVNpZ25hbEV2ZW50UmVhZHlUb0Jvb3QoKTsNCj4gPj4+PiAgICAgICAvLw0KPiA+Pj4+ ICAgICAgIC8vIFJlcG9ydCBTdGF0dXMgQ29kZSB0byBpbmRpY2F0ZSBSZWFkeVRvQm9vdCB3YXMg c2lnbmFsbGVkDQo+ID4+Pj4gICAgICAgLy8NCj4gPj4+PiAgICAgICBSRVBPUlRfU1RBVFVTX0NP REUgKEVGSV9QUk9HUkVTU19DT0RFLA0KPiA+Pj4+IChFRklfU09GVFdBUkVfRFhFX0JTX0RSSVZF UiB8DQo+ID4+Pj4gRUZJX1NXX0RYRV9CU19QQ19SRUFEWV9UT19CT09UX0VWRU5UKSk7DQo+ID4+ Pj4gICAgICAgLy8NCj4gPj4+PiAgICAgICAvLyA0LiBSZXBhaXIgc3lzdGVtIHRocm91Z2ggRHJp dmVySGVhbHRoIHByb3RvY29sDQo+ID4+Pj4gICAgICAgLy8NCj4gPj4+PiAgICAgICBCbVJlcGFp ckFsbENvbnRyb2xsZXJzICgwKTsNCj4gPj4+PiAgICAgfQ0KPiA+Pj4+DQo+ID4+Pj4gVGhlIFVF RkkgU3BlYyBzZWN0aW9uIDMuMS43IGNsZWFybHkgc3RhdGVzIHRoYXQgQm9vdCBPcHRpb25zIChh bmQNCj4gPj4+PiB0aGVpciBGaWxlUGF0aExpc3QpICpzaGFsbCBub3QqIGJlIGV2YWx1YXRlZCBw cmlvciB0byB0aGUNCj4gPj4+PiBjb21wbGV0aW9uIG9mIEVGSV9FVkVOVF9HUk9VUF9SRUFEWV9U T19CT09UIGV2ZW50IGdyb3VwDQo+IHByb2Nlc3Npbmc6DQo+ID4+Pj4NCj4gPj4+PiAiQWZ0ZXIg YWxsIFN5c1ByZXAjIyMjIHZhcmlhYmxlcyBoYXZlIGJlZW4gbGF1bmNoZWQgYW5kIGV4aXRlZCwg dGhlDQo+ID4+Pj4gcGxhdGZvcm0gc2hhbGwgbm90aWZ5IEVGSV9FVkVOVF9HUk9VUF9SRUFEWV9U T19CT09UIGV2ZW50DQo+IGdyb3VwIGFuZA0KPiA+Pj4+IGJlZ2luIHRvIGV2YWx1YXRlIEJvb3Qj IyMjIHZhcmlhYmxlcyB3aXRoIEF0dHJpYnV0ZXMgc2V0IHRvDQo+ID4+Pj4gTE9BRF9PUFRJT05f Q0FURUdPUllfQk9PVCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIGRlZmluZWQgYnkNCj4gPj4+PiBC b290T3JkZXIuIFRoZSBGaWxlUGF0aExpc3Qgb2YgdmFyaWFibGVzIG1hcmtlZA0KPiA+Pj4+IExP QURfT1BUSU9OX0NBVEVHT1JZX0JPT1Qgc2hhbGwgbm90IGJlIGV2YWx1YXRlZCBwcmlvciB0byB0 aGUNCj4gPj4+PiBjb21wbGV0aW9uIG9mIEVGSV9FVkVOVF9HUk9VUF9SRUFEWV9UT19CT09UIGV2 ZW50IGdyb3VwDQo+IHByb2Nlc3NpbmcuIg0KPiA+Pj4+DQo+ID4+Pj4gVGhpcyBpcyBhIHByZXNj cmlwdGl2ZSBsYW5ndWFnZSB0aGF0IGlzIHN0cm9uZ2VyIHRoYW4gdGhlIGxhbmd1YWdlDQo+ID4+ Pj4gaW4gc2VjdGlvbiA3LjEgd2hpY2ggZGVmaW5lcyB0aGUgUmVhZHlUb0Jvb3QgZXZlbnQgZ3Jv dXAgaW4gYQ0KPiA+Pj4+IGdlbmVyYWwgd2F5Og0KPiA+Pj4+DQo+ID4+Pj4gIkVGSV9FVkVOVF9H Uk9VUF9SRVNFVF9TWVNURU0NCj4gPj4+PiBUaGlzIGV2ZW50IGdyb3VwIGlzIG5vdGlmaWVkIGJ5 IHRoZSBzeXN0ZW0gd2hlbiBSZXNldFN5c3RlbSgpIGlzDQo+ID4+Pj4gaW52b2tlZCBhbmQgdGhl IHN5c3RlbSBpcyBhYm91dCB0byBiZSByZXNldC4gVGhlIGV2ZW50IGdyb3VwIGlzDQo+ID4+Pj4g b25seSBub3RpZmllZCBwcmlvciB0byBFeGl0Qm9vdFNlcnZpY2VzKCkgaW52b2NhdGlvbi4iDQo+ ID4+Pj4NCj4gPj4+PiBUaGUgRURLMiBjb2RlIGluIHRoZSBlbHNlIGJsb2NrIGFib3ZlICh0byBj YWxsDQo+ID4+Pj4gRWZpU2lnbmFsRXZlbnRSZWFkeVRvQm9vdCgpICkgbmVlZCB0byBtb3ZlIGJl Zm9yZSB0aGUgY29kZSB0aGF0IGlzDQo+ID4+Pj4gcHJvY2Vzc2luZyBCb290T3B0aW9uLT5GaWxl UGF0aC4gSW4gZmFjdCwgd2h5IGlzIHRoaXMgc2lnbmFsaW5nDQo+ID4+Pj4gZXZlbiBhIEJvb3RN YW5hZ2VyIHRhc2s/IEl0IHNob3VsZCBiZSBhIGhpZ2hlciBsZXZlbCBCRFMgdGFzaw0KPiA+Pj4+ IChhZnRlciBwcm9jZXNzaW5nIFN5c1BycCBhbmQgYmVmb3JlIHByb2Nlc3NpbmcgQm9vdCBvcHRp b25zLCBwZXIgdGhlDQo+IHNwZWMpLg0KPiA+Pj4+IFRoaXMgd291bGQgYmUgc29tZXdoZXJlIGFy b3VuZA0KPiA+Pj4+DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9ibG9iL2Ix NTY0NjQ4NGVhZmZjZjdjYzQ2NGZkZWEwMjENCj4gPj4+PiA0NDk4ZjI2YWRkYzIvTWRlTW9kdWxl UGtnL1VuaXZlcnNhbC9CZHNEeGUvQmRzRW50cnkuYyNMMTAwNw0KPiA+Pj4+IHdoZXJlIFN5c1By ZXAgaXMgcHJvY2Vzc2VkLg0KPiA+Pj4+DQo+ID4+Pj4gVGhpcyBzaG91bGQgYWxzbyB0YWtlIGNh cmUgb2YgdGhlIGlzc3VlIFBldGUgcmVwb3J0ZWQgaW4gdGhpcw0KPiA+Pj4+IHRocmVhZCwgd2l0 aG91dCB0aGUgbmVlZCBmb3IgZXhwbGljaXRseSBzaWduYWxpbmcgUmVhZHlUb0Jvb3QgZnJvbQ0K PiA+Pj4+IFBsYXRmb3JtUmVjb3ZlcnkgKG9yIGNoYW5naW5nIHRoZSBVRUZJIHNwZWMpLg0KPiA+ Pj4+DQo+ID4+Pj4gVGhhbmtzLA0KPiA+Pj4+IC0tU2FtZXINCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+ Pj4NCj4gPj4+PiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMu aW8+IE9uIEJlaGFsZiBPZg0KPiA+Pj4+IFNhbWVyIEVsLUhhai1NYWhtb3VkIHZpYSBncm91cHMu aW8NCj4gPj4+PiBTZW50OiBXZWRuZXNkYXksIEp1bmUgMTcsIDIwMjAgMTI6NDIgUE0NCj4gPj4+ PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IEFuZHJlaSBXYXJrZW50aW4NCj4gKGF3YXJrZW50 aW5Adm13YXJlLmNvbSkNCj4gPj4+PiA8YXdhcmtlbnRpbkB2bXdhcmUuY29tPjsgV2FuZywgU3Vu bnkgKEhQUyBTVykNCj4gPHN1bm55d2FuZ0BocGUuY29tPjsNCj4gPj4+PiBwZXRlQGFrZW8uaWUN Cj4gPj4+PiBDYzogemhpY2hhby5nYW9AaW50ZWwuY29tOyByYXkubmlAaW50ZWwuY29tOyBBcmQg Qmllc2hldXZlbA0KPiA+Pj4+IDxBcmQuQmllc2hldXZlbEBhcm0uY29tPjsgbGVpZkBudXZpYWlu Yy5jb207IFNhbWVyIEVsLUhhai0NCj4gTWFobW91ZA0KPiA+Pj4+IDxTYW1lci5FbC1IYWotTWFo bW91ZEBhcm0uY29tPg0KPiA+Pj4+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW2VkazJdW1BB VENIIDEvMV0NCj4gPj4+PiBNZGVNb2R1bGVQa2cvVWVmaUJvb3RNYW5hZ2VyTGliOiBTaWduYWwg UmVhZHlUb0Jvb3Qgb24gcGxhdGZvcm0NCj4gPj4+PiByZWNvdmVyeQ0KPiA+Pj4+DQo+ID4+Pj4g VGhlIFVFRkkgc3BlYyAoMy4xLjcpIHNheXM6DQo+ID4+Pj4NCj4gPj4+PiAiQWZ0ZXIgYWxsIFN5 c1ByZXAjIyMjIHZhcmlhYmxlcyBoYXZlIGJlZW4gbGF1bmNoZWQgYW5kIGV4aXRlZCwgdGhlDQo+ ID4+Pj4gcGxhdGZvcm0gc2hhbGwgbm90aWZ5IEVGSV9FVkVOVF9HUk9VUF9SRUFEWV9UT19CT09U IGV2ZW50DQo+IGdyb3VwIGFuZA0KPiA+Pj4+IGJlZ2luIHRvIGV2YWx1YXRlIEJvb3QjIyMjIHZh cmlhYmxlcyB3aXRoIEF0dHJpYnV0ZXMgc2V0IHRvDQo+ID4+Pj4gTE9BRF9PUFRJT05fQ0FURUdP UllfQk9PVCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIGRlZmluZWQgYnkNCj4gPj4+PiBCb290T3Jk ZXIuIFRoZSBGaWxlUGF0aExpc3Qgb2YgdmFyaWFibGVzIG1hcmtlZA0KPiA+Pj4+IExPQURfT1BU SU9OX0NBVEVHT1JZX0JPT1Qgc2hhbGwgbm90IGJlIGV2YWx1YXRlZCBwcmlvciB0byB0aGUNCj4g Pj4+PiBjb21wbGV0aW9uIG9mIEVGSV9FVkVOVF9HUk9VUF9SRUFEWV9UT19CT09UIGV2ZW50IGdy b3VwDQo+IHByb2Nlc3NpbmcuIg0KPiA+Pj4+DQo+ID4+Pj4gVGhlIHdheSBJIHJlYWQgdGhpcywg SSBleHBlY3QgUmVhZHlUb0Jvb3QgdG8gYmUgc2lnbmFsZWQgYWZ0ZXINCj4gPj4+PiBTeXNQcmVw IyMjIyAoaWYgYW55KSBhcmUgcHJvY2Vzc2VkLCBidXQgYmVmb3JlIEJvb3QjIyMjIGFyZQ0KPiA+ Pj4+IHByb2Nlc3NlZC4gSXMgbXkgdW5kZXJzdGFuZGluZyBjb3JyZWN0IHRoYXQgdGhpcyBsYW5n dWFnZSBpbXBsaWVzDQo+ID4+Pj4gUmVhZHlUb0Jvb3QgbmVlZCB0byBiZSBzaWduYWxlZCBldmVu IGlmIEJvb3RPcmRlciBkb2VzIG5vdCBjb250YWluDQo+ID4+Pj4gYW55IEJvb3QjIyMjIG9wdGlv bnMgbWFya2VkIGFzIExPQURfT1BUSU9OX0NBVEVHT1JZX0JPT1Q/DQo+IEFuZCBpZg0KPiA+Pj4+ IHNvLCBpcyBFREsyIG5vdCBkb2luZyB0aGlzLCB3aGljaCBsZWFkcyB1cyB0byB0aGlzIHBhdGNo IChzaWduYWxpbmcNCj4gPj4+PiBpdCBpbiBQbGF0Zm9ybVJlY292ZXJ5PykNCj4gPj4+Pg0KPiA+ Pj4+DQo+ID4+Pj4NCj4gPj4+PiBGcm9tOiBtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8gPG1h aWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4gT24NCj4gPj4+PiBCZWhhbGYgT2YgQW5kcmVp IFdhcmtlbnRpbiB2aWEgZ3JvdXBzLmlvDQo+ID4+Pj4gU2VudDogV2VkbmVzZGF5LCBKdW5lIDE3 LCAyMDIwIDEyOjM3IFBNDQo+ID4+Pj4gVG86IFdhbmcsIFN1bm55IChIUFMgU1cpIDxtYWlsdG86 c3Vubnl3YW5nQGhwZS5jb20+Ow0KPiA+Pj4+IG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbzsg bWFpbHRvOnBldGVAYWtlby5pZQ0KPiA+Pj4+IENjOiBtYWlsdG86emhpY2hhby5nYW9AaW50ZWwu Y29tOyBtYWlsdG86cmF5Lm5pQGludGVsLmNvbTsgQXJkDQo+ID4+Pj4gQmllc2hldXZlbCA8bWFp bHRvOkFyZC5CaWVzaGV1dmVsQGFybS5jb20+Ow0KPiA+Pj4+IG1haWx0bzpsZWlmQG51dmlhaW5j LmNvbQ0KPiA+Pj4+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW2VkazJdW1BBVENIIDEvMV0N Cj4gPj4+PiBNZGVNb2R1bGVQa2cvVWVmaUJvb3RNYW5hZ2VyTGliOiBTaWduYWwgUmVhZHlUb0Jv b3Qgb24gcGxhdGZvcm0NCj4gPj4+PiByZWNvdmVyeQ0KPiA+Pj4+DQo+ID4+Pj4gVGhhbmtzIFBl dGUuDQo+ID4+Pj4NCj4gPj4+PiBJIHRoaW5rIHRoZSBxdWVzdGlvbiBJIGhhdmUsIHRoYXQgSSBo b3BlIFRpYW5vIHZldGVyYW5zIGNhbiBjaGltZQ0KPiA+Pj4+IGluLCBpcyB3aGV0aGVyIHdlIGFy ZSBkb2luZyB0aGUgcmlnaHQgdGhpbmcsIG9yIGlmIHdlIHNob3VsZCBiZQ0KPiA+Pj4+IG92ZXJy aWRpbmcgdGhlIGJvb3QgbW9kZT8gSS5lLiBpcyBpdCBub3JtYWwgdGhhdCB3ZSBib290IHVwIGlu DQo+ID4+Pj4gcmVjb3ZlcnkgdW50aWwgb3B0aW9ucyBhcmUgc2F2ZWQ/DQo+ID4+Pj4NCj4gPj4+ Pg0KPiA+Pj4+IEENCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXw0KPiA+Pj4+IEZyb206IG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vw cy5pbyA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPg0KPiBvbg0KPiA+Pj4+IGJlaGFsZiBv ZiBQZXRlIEJhdGFyZCB2aWEgZ3JvdXBzLmlvIDxtYWlsdG86cGV0ZT1ha2VvLmllQGdyb3Vwcy5p bz4NCj4gPj4+PiBTZW50OiBXZWRuZXNkYXksIEp1bmUgMTcsIDIwMjAgMTE6MzQgQU0NCj4gPj4+ PiBUbzogV2FuZywgU3VubnkgKEhQUyBTVykgPG1haWx0bzpzdW5ueXdhbmdAaHBlLmNvbT47DQo+ ID4+Pj4gbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvIDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91 cHMuaW8+DQo+ID4+Pj4gQ2M6IG1haWx0bzp6aGljaGFvLmdhb0BpbnRlbC5jb20gPG1haWx0bzp6 aGljaGFvLmdhb0BpbnRlbC5jb20+Ow0KPiA+Pj4+IG1haWx0bzpyYXkubmlAaW50ZWwuY29tIDxt YWlsdG86cmF5Lm5pQGludGVsLmNvbT47DQo+ID4+Pj4gbWFpbHRvOmFyZC5iaWVzaGV1dmVsQGFy bS5jb20gPG1haWx0bzphcmQuYmllc2hldXZlbEBhcm0uY29tPjsNCj4gPj4+PiBtYWlsdG86bGVp ZkBudXZpYWluYy5jb20gPG1haWx0bzpsZWlmQG51dmlhaW5jLmNvbT4NCj4gPj4+PiBTdWJqZWN0 OiBSZTogW2VkazItZGV2ZWxdIFtlZGsyXVtQQVRDSCAxLzFdDQo+ID4+Pj4gTWRlTW9kdWxlUGtn L1VlZmlCb290TWFuYWdlckxpYjogU2lnbmFsIFJlYWR5VG9Cb290IG9uIHBsYXRmb3JtDQo+ID4+ Pj4gcmVjb3ZlcnkNCj4gPj4+Pg0KPiA+Pj4+IE9uIDIwMjAuMDYuMTcgMTQ6MDQsIFdhbmcsIFN1 bm55IChIUFMgU1cpIHdyb3RlOg0KPiA+Pj4+PiBUaGFua3MgZm9yIGNoZWNraW5nIG15IGNvbW1l bnRzLCBQZXRlLg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gT3IgaXMgdGhlICJvbmUgbW9yZSIgdGhlIGlz c3VlLCBtZWFuaW5nIHRoYXQgaXQgd291bGQgZ2V0DQo+ID4+Pj4+PiBzaWduYWxlZCBtb3JlIHRo YW4gb25jZT8NCj4gPj4+Pj4gW1N1bm55XSBZZWFoLCBpdCB3b3VsZCBnZXQgc2lnbmFsZWQgbW9y ZSB0aGFuIG9uY2UgaWYgdGhlDQo+ID4+Pj4+IFBsYXRmb3JtUmVjb3Zlcnkgb3B0aW9uIChhIFVF RkkgYXBwbGljYXRpb24pIGNhbGxzDQo+ID4+Pj4+IEVmaUJvb3RNYW5hZ2VyQm9vdCgpIHRvIGxh dW5jaCB0aGUgcmVjb3ZlcmVkIGJvb3Qgb3B0aW9uIGluc2lkZSBvZg0KPiA+Pj4+PiB0aGUgYXBw bGljYXRpb24uDQo+ID4+Pj4NCj4gPj4+PiBPa2F5Lg0KPiA+Pj4+DQo+ID4+Pj4gT25lIGVsZW1l bnQgdGhhdCBJJ20gZ29pbmcgdG8gcG9pbnQgb3V0IGlzIHRoYXQsIHdpdGggdGhlIGN1cnJlbnQN Cj4gPj4+PiBFREsyIGNvZGUgKGkuZS4gd2l0aG91dCB0aGlzIHByb3Bvc2FsIGFwcGxpZWQpLCBh bmQgYWZ0ZXIgYSB1c2VyDQo+ID4+Pj4gZ29lcyBpbnRvIHRoZSBzZXR1cCB0byBzYXZlIHRoZWly IGJvb3Qgb3B0aW9ucyBpbiBvcmRlciBmb3IgcmVndWxhcg0KPiA+Pj4+IGJvb3Qgb3B0aW9ucyB0 byBnZXQgZXhlY3V0ZWQgaW5zdGVhZCBvZiBQbGFmb3JtUmVjb3ZlcnksIHRoZQ0KPiA+Pj4+IE9u UmVhZHlUb0Jvb3QgZXZlbnQgaXMgYWN0dWFsbHkgY2FsbGVkIHR3aWNlLg0KPiA+Pj4+DQo+ID4+ Pj4gU28gbXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0LCB3aGlsZSB3ZSBvZiBjb3Vyc2Ugd2FudCB0 byBhdm9pZCB0aGlzDQo+ID4+Pj4gYW5kIGFueSBwYXRjaCBwcm9wb3NhbCBzaG91bGQgYWN0aXZl bHkgdHJ5IHRvIHByZXZlbnQgaXQsIGl0IHNlZW1zDQo+ID4+Pj4gd2UgYWxyZWFkeSBoYXZlIGJl aGF2aW91ciBpbiBFREsyIHRoYXQgY2FuIGxlYWQgdG8gT25SZWFkeVRvQm9vdA0KPiA+Pj4+IGJl aW5nIHNpZ25hbGxlZCBtb3JlIHRoYW4gb25jZS4NCj4gPj4+Pg0KPiA+Pj4+IEF0IGxlYXN0IHRo ZSBjdXJyZW50IFBpIDQgcGxhdGZvcm0gZG9lcyBkZW1vbnN0cmF0ZSB0aGlzIGJlaGF2aW91ci4N Cj4gPj4+PiBGb3IgaW5zdGFuY2UsIGlmIHlvdSBydW4gREVCVUcsIHlvdSB3aWxsIHNlZSB0d28g aW5zdGFuY2VzIG9mOg0KPiA+Pj4+DQo+ID4+Pj4gICAgICBSZW1vdmVEdFN0ZG91dFBhdGg6IGNv dWxkIG5vdCByZXRyaWV2ZSBEVCBibG9iIC0gTm90IEZvdW5kDQo+ID4+Pj4NCj4gPj4+PiB3aGlj aCBpcyBhIG9uZS1pbnN0YW5jZSBtZXNzYWdlIGdlbmVyYXRlZCBmcm9tIHRoZSBDb25zb2xlUHJl ZkR4ZSdzDQo+ID4+Pj4gT25SZWFkeVRvQm9vdCgpIGNhbGwuIEkndmUgYWxzbyBjb25maXJtZWQg bW9yZSBzcGVjaWZpY2FsbHkgdGhhdA0KPiA+Pj4+IE9uUmVhZHlUb0Jvb3QoKSBpcyBpbmRlZWQg Y2FsbGVkIHR3aWNlLg0KPiA+Pj4+DQo+ID4+Pj4gSSBkb24ndCByZWNhbGwgdXMgZG9pbmcgbXVj aCBvZiBhbnkgc3BlY2lhbCB3aXRoIHJlZ2FyZHMgdG8gYm9vdA0KPiA+Pj4+IG9wdGlvbnMgZm9y IHRoZSBQaSBwbGF0Zm9ybSwgc28gbXkgZ3Vlc3MgaXMgdGhhdCBpdCdzIHByb2JhYmx5IG5vdA0K PiA+Pj4+IHRoZSBvbmx5IHBsYXRmb3JtIHdoZXJlIE9uUmVhZHlUb0Jvb3QgbWlnaHQgYmUgc2ln bmFsbGVkIG1vcmUgdGhhbg0KPiA+Pj4+IG9uY2UsIGFuZCB0aGF0IHRoaXMgbWlnaHQgYmUgdGll ZCB0byBhIGRlZmF1bHQgRURLMiBiZWhhdmlvdXIuDQo+ID4+Pj4gVGhlcmVmb3JlIEkgZG9uJ3Qg c2VlIGhhdmluZyBhIHJlcGVhdGVkIGV2ZW50IGFzIGEgbWFqb3IgZGVhbA0KPiA+Pj4+IGJyZWFr ZXIgKHRob3VnaCwgYWdhaW4sIGlmIHdlIGNhbiBhdm9pZCB0aGF0LCB3ZSBvZiBjb3Vyc2Ugd2ls bA0KPiA+Pj4+IHdhbnQgdG8pLg0KPiA+Pj4+DQo+ID4+Pj4+PiBJIGRvbid0IG1pbmQgdHJ5aW5n IGFuIGFsdGVybmF0aXZlIGFwcHJvYWNoLCBidXQgSSBkb24ndA0KPiA+Pj4+Pj4gdW5kZXJzdGFu ZCBob3cgd2hhdCB5b3UgZGVzY3JpYmUgd291bGQgaGVscC4gQ2FuIHlvdSBwbGVhc2UgYmUNCj4g Pj4+Pj4+IG1vcmUgc3BlY2lmaWMgYWJvdXQgd2hhdCB5b3UgaGF2ZSBpbiBtaW5kPw0KPiA+Pj4+ PiBbU3VubnldIFN1cmUuIEkgYWRkZWQgbW9yZSBpbmZvcm1hdGlvbiBiZWxvdy4gSWYgaXQgaXMg c3RpbGwgbm90DQo+ID4+Pj4+IGNsZWFyIGVub3VnaCwgZmVlbCBmcmVlIHRvIGxldCBtZSBrbm93 Lg0KPiA+Pj4+PiAgICAgICAgIDEuIENyZWF0ZSBhIFVFRkkgYXBwbGljYXRpb24gd2l0aCB0aGUg Y29kZSB0byBzaWduYWwNCj4gPj4+Pj4gUmVhZHlUb0Jvb3QgYW5kIHBpY2sgL2VmaS9ib290L2Jv b3RhYTY0LmVmaSBmcm9tIGVpdGhlciBTRCBvciBVU0INCj4gPj4+Pj4gYW5kIHJ1biBpdC4NCj4g Pj4+Pg0KPiA+Pj4+IFNvIHRoYXQgd291bGQgYmFzaWNhbGx5IGJlIGFkZGluZyBjb2RlIHRoYXQg ZHVwbGljYXRlcywgaW4gcGFydCwNCj4gPj4+PiB3aGF0IFBsYXRmb3JtIFJlY292ZXJ5IGFscmVh ZHkgZG9lcy4NCj4gPj4+Pg0KPiA+Pj4+IEkgaGF2ZSB0byBiZSBob25lc3Q6IEV2ZW4gb3V0c2lk ZSBvZiB0aGUgZXh0cmEgd29yayB0aGlzIHdvdWxkDQo+ID4+Pj4gcmVxdWlyZSwgSSBkb24ndCBy ZWFsbHkgbGlrZSB0aGUgaWRlYSBvZiBoYXZpbmcgdG8gd3JpdGUgb3VyIG93bg0KPiA+Pj4+IGFw cGxpY2F0aW9uLCBhcyBpdCB3aWxsIGludHJvZHVjZSBuZXcgcG9zc2libGUgcG9pbnRzIG9mIGZh aWx1cmVzDQo+ID4+Pj4gYW5kIHJlcXVpcmUgZXh0cmEgbWFpbnRlbmFuY2UgKGVzcGVjaWFsbHkg YXMgd2Ugd2lsbCB3YW50IHRvIGJlDQo+ID4+Pj4gYWJsZSB0byBoYW5kbGUgbmV0d29yayBib290 IGFuZCBvdGhlciBvcHRpb25zLCBhbmQgYmVmb3JlIGxvbmcsIEkNCj4gPj4+PiBmZWFyIHRoYXQg d2UncmUgZ29pbmcgdG8gaGF2ZSB0byB3cml0ZSBvdXIgb3duIFBpIHNwZWNpZmljIGJvb3QNCj4g Pj4+PiBtYW5hZ2VyKS4gRG9pbmcgc28gc2ltcGx5IGJlY2F1c2UgdGhlIGN1cnJlbnQgUGxhdGZv cm0gUmVjb3ZlcnksDQo+ID4+Pj4gd2hpY2ggZG9lcyBzdWl0IG91ciBuZWVkcyBvdGhlcndpc2Us IGlzIG5vdCBkZXNpZ25lZCB0byBjYWxsDQo+ID4+Pj4gUmVhZHlUb0Jvb3QgZG9lcyBub3Qgc2Vl bSBsaWtlIHRoZSBiZXN0IGNvdXJzZSBvZiBhY3Rpb24gaW4gbXkNCj4gPj4+PiBib29rLg0KPiA+ Pj4+DQo+ID4+Pj4gSW5zdGVhZCwgSSBzdGlsbCBsb2dpY2FsbHkgYmVsaWV2ZSB0aGF0IGFueSBv cHRpb24gdGhhdCBjYWxscyBhDQo+ID4+Pj4gYm9vdCBsb2FkZXIgc2hvdWxkIHNpZ25hbCBSZWFk eVRvQm9vdCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IHdhcw0KPiA+Pj4+IGxhdW5jaGVkIGZy b20gQm9vdCBNYW5hZ2VyIG9yIFBsYXRmb3JtIFJlY292ZXJ5LCBhbmQgdGhhdCBpdA0KPiA+Pj4+ IHNob3VsZG4ndCBiZSBsZWZ0IHRvIGVhY2ggcGxhdGZvcm0gdG8gd29yayBhcm91bmQgdGhhdC4N Cj4gPj4+Pg0KPiA+Pj4+IE9mIGNvdXJzZSwgSSB1bmRlcnN0YW5kIHRoYXQgdGhpcyB3b3VsZCBy ZXF1aXJlIGEgc3BlY3MgY2hhbmdlLCBhbmQNCj4gPj4+PiB0aGF0IGl0IGFsc28gbWF5IGhhdmUg cmFtaWZpY2F0aW9ucyBmb3IgZXhpc3RpbmcgcGxhdGZvcm1zIHRoYXQNCj4gPj4+PiBpbnRlcnBy ZXQgdGhlIGN1cnJlbnQgc3BlY3MgcGVkYW50aWNhbGx5LiBCdXQgdG8gbWUsIHJlZ2FyZGxlc3Mg b2YNCj4gPj4+PiB3aGF0IHRoZSBzcGVjcyBhcHBlYXIgdG8gYmUgbGltaXRpbmcgaXQgdG8gcmln aHQgbm93LCB0aGUgbG9naWMgb2YNCj4gPj4+PiBhICJSZWFkeVRvQm9vdCINCj4gPj4+PiBldmVu dCBpcyB0aGF0IGl0IHNob3VsZCBiZSBzaWduYWxsZWQgd2hlbmV2ZXIgYSBib290bG9hZGVyIGlz IGFib3V0DQo+ID4+Pj4gdG8gYmUgZXhlY3V0ZWQsIHJhdGhlciB0aGFuIG9ubHkgd2hlbiBhIGJv b3Rsb2FkZXIgaGFwcGVuZWQgdG8gYmUNCj4gPj4+PiBsYXVuY2hlZCB0aHJvdWdoIGEgZm9ybWFs IEJvb3QgTWFuYWdlciBvcHRpb24uDQo+ID4+Pj4NCj4gPj4+PiBJIHdvdWxkIHRoZXJlZm9yZSBh cHByZWNpYXRlIGlmIG90aGVyIHBlb3BsZSBjb3VsZCB3ZWlnaCBpbiBvbiB0aGlzDQo+ID4+Pj4g bWF0dGVyLCB0byBzZWUgaWYgSSdtIHRoZSBvbmx5IG9uZSB3aG8gYmVsaWV2ZXMgdGhhdCB3ZSBj b3VsZA0KPiA+Pj4+IHVsdGltYXRlbHkgaGF2ZSBtb3JlIHRvIGdhaW4gZnJvbSBzaWduYWxsaW5n IFJlYWR5VG9Cb290IHdpdGgNCj4gPj4+PiBQbGF0Zm9ybVJlY292ZXJ5IG9wdGlvbnMgdGhhbiBs ZWF2aW5nIHRoaW5ncyBhcyB0aGV5IHN0YW5kIHJpZ2h0DQo+ID4+Pj4gbm93Li4uDQo+ID4+Pj4N Cj4gPj4+Pj4gICAgICAgICAyLiBUaGVuLCBjYWxsIEVmaUJvb3RNYW5hZ2VySW5pdGlhbGl6ZUxv YWRPcHRpb24gbGlrZSB0aGUNCj4gPj4+Pj4gZm9sbG93aW5nIGluIGEgRFhFIGRyaXZlciBvciBv dGhlciBwbGFjZXMgYmVmb3JlICJEZWZhdWx0DQo+ID4+Pj4+IFBsYXRmb3JtUmVjb3ZlcnkiIHJl Z2lzdHJhdGlvbjoNCj4gPj4+Pj4gICAgICBTdGF0dXMgPSBFZmlCb290TWFuYWdlckluaXRpYWxp emVMb2FkT3B0aW9uICgNCj4gPj4+Pj4gICAgICAgICAgICAgICAgICZMb2FkT3B0aW9uLA0KPiA+ Pj4+Pg0KPiA+Pj4+PiAwLA0KPiA+Pj4+PiAtPiAwIGlzIHRoZSBPcHRpb25OdW1iZXIgdG8gbGV0 IGFwcGxpY2F0aW9uIGJlIGxvYWQgYmVmb3JlICINCj4gPj4+Pj4gRGVmYXVsdCBQbGF0Zm9ybVJl Y292ZXJ5IiBvcHRpb24NCj4gPj4+Pj4gICAgICAgICAgICAgICAgIExvYWRPcHRpb25UeXBlUGxh dGZvcm1SZWNvdmVyeSwNCj4gPj4+Pj4gICAgICAgICAgICAgICAgIExPQURfT1BUSU9OX0FDVElW RSwNCj4gPj4+Pj4gICAgICAgICAgICAgICAgIEwiQXBwbGljYXRpb24gZm9yIHJlY292ZXJpbmcg Ym9vdCBvcHRpb25zIiwNCj4gPj4+Pj4NCj4gPj4+Pj4gRmlsZVBhdGgsDQo+ID4+Pj4+IC0+IEZp bGVQYXRoIGlzIHRoZSBBcHBsaWNhdGlvbidzIGRldmljZSBwYXRoLA0KPiA+Pj4+PiAgICAgICAg ICAgICAgICAgTlVMTCwNCj4gPj4+Pj4gICAgICAgICAgICAgICAgIDANCj4gPj4+Pj4gICAgICAg ICAgICAgICAgICk7DQo+ID4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+PiBNeSByZWFzb25pbmcgaXMg dGhhdCwgaWYgUGxhdGZvcm1SZWNvdmVyeSMjIyMgY2FuIGV4ZWN1dGUgYQ0KPiA+Pj4+Pj4gcmVn dWxhciBib290bG9hZGVyIGxpa2UgL2VmaS9ib290L2Jvb3QjIyMjLmVmaSBmcm9tIGluc3RhbGxh dGlvbg0KPiA+Pj4+Pj4gbWVkaWEsIHRoZW4gaXQgc2hvdWxkIGdvIHRocm91Z2ggdGhlIHNhbWUg a2luZCBvZiBpbml0aWFsaXphdGlvbg0KPiA+Pj4+Pj4gdGhhdCBoYXBwZW5zIGZvciBhIHJlZ3Vs YXIgYm9vdCBvcHRpb24sIGFuZCB0aGF0IHNob3VsZCBpbmNsdWRlDQo+ID4+Pj4+PiBzaWduYWxp bmcgdGhlIFJlYWR5VG9Cb290IGV2ZW50Lg0KPiA+Pj4+PiBbU3VubnldIFRoYW5rcyBmb3IgY2xh cmlmeWluZyB0aGlzLCBhbmQgU29ycnkgYWJvdXQgdGhhdCBJIG1pc3NlZA0KPiA+Pj4+PiB5b3Vy IGNvdmVyIGxldHRlciBmb3IgdGhpcyBwYXRjaC4gIEkgd2FzIGp1c3QgdGhpbmtpbmcgdGhhdCB3 ZSBtYXkNCj4gPj4+Pj4gbm90IHJlYWxseSBuZWVkIHRvIG1ha2UgdGhpcyBiZWhhdmlvciBjaGFu Z2UgaW4gYm90aCBFREsgSUkgY29kZQ0KPiA+Pj4+PiBhbmQgVUVGSSBzcGVjaWZpY2F0aW9uIGZv ciBzb2x2aW5nIHRoZSBwcm9ibGVtIHNwZWNpZmljIHRvIHRoZQ0KPiA+Pj4+PiBjYXNlIHRoYXQg T1MgaXMgbG9hZGVkIGJ5ICJEZWZhdWx0IFBsYXRmb3JtUmVjb3ZlcnkiIG9wdGlvbiwNCj4gPj4+ Pg0KPiA+Pj4+IFRoZSB3YXkgSSBzZWUgaXQgaXMgdGhhdCB0aGUgUGkgcGxhdGZvcm0gaXMgdW5s aWtlbHkgdG8gYmUgdGhlIG9ubHkNCj4gPj4+PiBvbmUgd2hlcmUgUGxhdGZvcm1SZWNvdmVyeSBp cyBzZWVuIGFzIGEgbWVhbnMgdG8gaW5zdGFsbCBhbiBPUy4NCj4gPj4+PiBHcmFudGVkLCB0aGlz IG1heSBzZWVtIGxpa2UgYWJ1c2luZyB0aGUgb3B0aW9uLCBidXQgc2luY2UgVUVGSQ0KPiA+Pj4+ IGRvZXNuJ3QgcHJvdmlkZSBhbiAiSW5pdGlhbCBPUyBJbnN0YWxsIiBtb2RlLCBJIHdvdWxkIGFz c2VydCB0aGF0DQo+ID4+Pj4gaXQgYXMgZ29vZCBhIHVzZSBvZiB0aGlzIG9wdGlvbiBhcyBhbnku DQo+ID4+Pj4NCj4gPj4+PiBJbiBvdGhlciB3b3JkcywgSSBkb24ndCB0aGluayB0aGlzIGltcHJv dmVtZW50IHdvdWxkIG9ubHkgYmVuZWZpdA0KPiA+Pj4+IHRoZSBQaSBwbGF0Zm9ybS4NCj4gPj4+ Pg0KPiA+Pj4+PiBhbmQgSSdtIGFsc28gbm90IHN1cmUgaWYgaXQgaXMgd29ydGggbWFraW5nIHRo aXMgY2hhbmdlIHRvIGFmZmVjdA0KPiA+Pj4+PiBzb21lIG9mIHRoZSBzeXN0ZW0gb3IgQklPUyB2 ZW5kb3JzIHdobyBoYXZlIGltcGxlbWVudGVkIHRoZWlyDQo+ID4+Pj4+IFBsYXRmb3JtUmVjb3Zl cnkgb3B0aW9uLg0KPiA+Pj4+DQo+ID4+Pj4gVGhhdCdzIGEgbGVnaXRpbWF0ZSBjb25jZXJuLCBh bmQgSSB3b3VsZCBhZ3JlZSB0aGUgb25lIG1ham9yDQo+ID4+Pj4gcG90ZW50aWFsIHBpdGZhbGwg b2YgdGhpcyBwcm9wb3NhbCwgaWYgdGhlcmUgaGFwcGVucyB0byBleGlzdCBhDQo+ID4+Pj4gc3lz dGVtIHdoZXJlIGFuIE9uUmVhZHlUb0Jvb3QgZXZlbiBiZWZvcmUgcnVubmluZyB0aGUgcmVjb3Zl cnkNCj4gPj4+PiBvcHRpb24gY2FuIGhhdmUgYWR2ZXJzZSBlZmZlY3RzLg0KPiA+Pj4+DQo+ID4+ Pj4gSSBkb24ndCByZWFsbHkgYmVsaWV2ZSB0aGF0IHN1Y2ggYSBzeXN0ZW0gZXhpc3RzLCBiZWNh dXNlIEkgZXhwZWN0DQo+ID4+Pj4gbW9zdCByZWNvdmVyeSBib290IGxvYWRlcnMgdG8gYWxzbyB3 b3JrIChvciBhdCBsZWFzdCBoYXZlIGJlZW4NCj4gPj4+PiBkZXNpZ25lZCB0bw0KPiA+Pj4+IHdv cmspIGFzIHJlZ3VsYXIgYm9vdCBvcHRpb25zLiBCdXQgSSBkb24ndCBoYXZlIGVub3VnaCBleHBl cmllbmNlDQo+ID4+Pj4gd2l0aCBwbGF0Zm9ybSByZWNvdmVyeSB0byBrbm93IGlmIHRoYXQncyBh IGNvcnJlY3QgYXNzZXJ0aW9uIHRvIG1ha2UuLi4NCj4gPj4+Pg0KPiA+Pj4+PiBJZiB0aGUgYWx0 ZXJuYXRpdmUgYXBwcm9hY2ggSSBtZW50aW9uZWQgd29ya3MgZm9yIHlvdSwgSSB0aGluaw0KPiA+ Pj4+PiB0aGF0IHdvdWxkIGJlIGFuIGVhc2llciBzb2x1dGlvbi4NCj4gPj4+Pg0KPiA+Pj4+IFJp Z2h0IG5vdywgZXZlbiBhcyB0aGUgcGF0Y2ggcHJvcG9zYWwgaGFzIG11bHRpcGxlIGlzc3VlcyB0 aGF0DQo+ID4+Pj4gcmVxdWlyZSBpdCB0byBiZSBhbWVuZGVkIChEb24ndCBzaWduYWwgUmVhZHlU b0Jvb3QgZXhjZXB0IGZvcg0KPiA+Pj4+IFBsYXRmb3JtUmVjb3ZlcnkNCj4gPj4+PiArIFByZXZl bnQgc2l0dWF0aW9ucyB3aGVyZSBSZWFkeVRvQm9vdCBjb3VsZCBiZSBzaWduYWxsZWQgbXVsdGlw bGUNCj4gPj4+PiB0aW1lcykgSSBzdGlsbCBzZWUgaXQgYXMgYm90aCBhbiBlYXNpZXIgc29sdXRp b24gdGhhbiB0aGUNCj4gPj4+PiBhbHRlcm5hdGl2ZSwgYXMgd2VsbCBhcyBvbmUgdGhhdCAqc2hv dWxkKiBiZW5lZml0IHBlb3BsZSB3aG8gZGVzaWduDQo+ID4+Pj4gUGxhdGZvcm0gUmVjb3Zlcnkg VUVGSSBhcHBsaWNhdGlvbnMgaW4gdGhlIGxvbmcgcnVuLiBTbyB0aGF0IGlzIHdoeQ0KPiA+Pj4+ IEkgYW0gc3RpbGwgdHJ5aW5nIHRvIGFkdm9jYXRlIGZvciBpdC4NCj4gPj4+Pg0KPiA+Pj4+IEJ1 dCBJIHZlcnkgbXVjaCBoZWFyIHlvdXIgY29uY2VybnMsIGFuZCBJIGFncmVlIHRoYXQgc3BlY3Mg Y2hhbmdlcw0KPiA+Pj4+IGFyZSBiZXR0ZXIgYXZvaWRlZCB3aGVuIHBvc3NpYmxlLg0KPiA+Pj4+ DQo+ID4+Pj4gVGh1cywgYXQgdGhpcyBzdGFnZSwgZXZlbiBhcyBJIGRvbid0IHdhbnQgdG8gZHJh ZyB0aGlzIGRpc2N1c3Npb24NCj4gPj4+PiBtdWNoIGZ1cnRoZXIsIEkgZG9uJ3QgZmVlbCBsaWtl IEkgd2FudCB0byBjb21taXQgdG8gb25lIHNvbHV0aW9uIG9yDQo+ID4+Pj4gdGhlIG90aGVyIGJl Zm9yZSB3ZSBoYXZlIGhhZCBhIGNoYW5jZSB0byBoZWFyIG90aGVyIHBlb3BsZSwgd2hvIG1heQ0K PiA+Pj4+IGhhdmUgdGhlaXIgb3duIG9waW5pb24gb24gdGhlIG1hdHRlciwgZXhwcmVzcyB0aGVp ciB2aWV3cy4NCj4gPj4+Pg0KPiA+Pj4+IFJlZ2FyZHMsDQo+ID4+Pj4NCj4gPj4+PiAvUGV0ZQ0K PiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gUmVnYXJkcywNCj4gPj4+Pj4gU3Vubnkg V2FuZw0KPiA+Pj4+Pg0KPiA+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+ PiBGcm9tOiBQZXRlIEJhdGFyZCBbbWFpbHRvOnBldGVAYWtlby5pZV0NCj4gPj4+Pj4gU2VudDog V2VkbmVzZGF5LCBKdW5lIDE3LCAyMDIwIDY6NTkgUE0NCj4gPj4+Pj4gVG86IFdhbmcsIFN1bm55 IChIUFMgU1cpIDxtYWlsdG86c3Vubnl3YW5nQGhwZS5jb20+Ow0KPiA+Pj4+PiBtYWlsdG86ZGV2 ZWxAZWRrMi5ncm91cHMuaW8NCj4gPj4+Pj4gQ2M6IG1haWx0bzp6aGljaGFvLmdhb0BpbnRlbC5j b207IG1haWx0bzpyYXkubmlAaW50ZWwuY29tOw0KPiA+Pj4+PiBtYWlsdG86YXJkLmJpZXNoZXV2 ZWxAYXJtLmNvbTsgbWFpbHRvOmxlaWZAbnV2aWFpbmMuY29tDQo+ID4+Pj4+IFN1YmplY3Q6IFJl OiBbZWRrMi1kZXZlbF0gW2VkazJdW1BBVENIIDEvMV0NCj4gPj4+Pj4gTWRlTW9kdWxlUGtnL1Vl ZmlCb290TWFuYWdlckxpYjogU2lnbmFsIFJlYWR5VG9Cb290IG9uDQo+IHBsYXRmb3JtDQo+ID4+ Pj4+IHJlY292ZXJ5DQo+ID4+Pj4+DQo+ID4+Pj4+IEhpIFN1bm55LCB0aGFua3MgZm9yIGxvb2tp bmcgaW50byB0aGlzLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBPbiAyMDIwLjA2LjE3IDA5OjE2LCBXYW5n LCBTdW5ueSAoSFBTIFNXKSB3cm90ZToNCj4gPj4+Pj4+IEhpIFBldGUuDQo+ID4+Pj4+Pg0KPiA+ Pj4+Pj4gU2luY2UgdGhlIEVmaUJvb3RNYW5hZ2VyUHJvY2Vzc0xvYWRPcHRpb24gaXMgY2FsbGVk IGJ5DQo+ID4+Pj4+PiBQcm9jZXNzTG9hZE9wdGlvbnMgYXMgd2VsbCwgeW91ciBjaGFuZ2Ugd291 bGQgYWxzbyBjYXVzZSBzb21lDQo+ID4+Pj4+PiB1bmV4cGVjdGVkIGJlaGF2aW9yIGxpa2U6DQo+ ID4+Pj4+PiAxLiBTaWduYWwgb25lIG1vcmUgUmVhZHlUb0Jvb3QgZm9yIHRoZSBQbGF0Zm9ybVJl Y292ZXJ5IG9wdGlvbg0KPiA+Pj4+Pj4gd2hpY2ggaXMgYW4gYXBwbGljYXRpb24gdGhhdCBjYWxs cyBFZmlCb290TWFuYWdlckJvb3QoKSB0byBsYXVuY2gNCj4gPj4+Pj4+IGl0cyByZWNvdmVyZWQg Ym9vdCBvcHRpb24uDQo+ID4+Pj4+DQo+ID4+Pj4+IEknbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQg aG93IHRoaXMgcGFydCBpcyB1bndhbnRlZC4NCj4gPj4+Pj4NCj4gPj4+Pj4gVGhlIHBvaW50IG9m IHRoaXMgcGF0Y2ggaXMgdG8gZW5zdXJlIHRoYXQgUmVhZHlUb0Jvb3QgaXMgc2lnbmFsbGVkDQo+ ID4+Pj4+IGZvciB0aGUgUGxhdGZvcm1SZWNvdmVyeSBvcHRpb24sIHNvIGlzbid0IHdoYXQgeW91 IGRlc2NyaWJlIGFib3ZlDQo+ID4+Pj4+IGV4YWN0bHkgd2hhdCB3ZSB3YW50Pw0KPiA+Pj4+Pg0K PiA+Pj4+PiBPciBpcyB0aGUgIm9uZSBtb3JlIiB0aGUgaXNzdWUsIG1lYW5pbmcgdGhhdCBpdCB3 b3VsZCBnZXQNCj4gPj4+Pj4gc2lnbmFsbGVkIG1vcmUgdGhhbiBvbmNlPw0KPiA+Pj4+Pg0KPiA+ Pj4+Pg0KPiA+Pj4+Pj4gMi4gU2lnbmFsIFJlYWR5VG9Cb290IGZvciBTeXNQcmVwIyMjIyBvciBE cml2ZXIjIyMjIHRoYXQgaXMgbm90DQo+ID4+Pj4+PiByZWFsbHkgYSAiYm9vdCIgb3B0aW9uLg0K PiA+Pj4+Pg0KPiA+Pj4+PiBZZXMsIEkndmUgYmVlbiB3b25kZXJpbmcgYWJvdXQgdGhhdCwgYmVj YXVzZSBCZHNFbnRyeS5jJ3MNCj4gPj4+Pj4gUHJvY2Vzc0xvYWRPcHRpb25zKCksIHdoaWNoIGNh bGxzDQo+ID4+Pj4+IEVmaUJvb3RNYW5hZ2VyUHJvY2Vzc0xvYWRPcHRpb24oKSwNCj4gPj4+Pj4g bWVudGlvbnMgdGhhdCBpdCB3aWxsIGxvYWQgd2lsbCBsb2FkIGFuZCBzdGFydCBldmVyeSBEcml2 ZXIjIyMjLA0KPiA+Pj4+PiBTeXNQcmVwIyMjIyBvciBQbGF0Zm9ybVJlY292ZXJ5IyMjIy4gQnV0 IHRoZSBjb21tZW50IGFib3V0IHRoZQ0KPiA+Pj4+PiB3aGlsZSgpIGxvb3AgaW4gRWZpQm9vdE1h bmFnZXJQcm9jZXNzTG9hZE9wdGlvbigpIG9ubHkgbWVudGlvbnMNCj4gPj4+Pj4gUGxhdGZvcm1S ZWNvdmVyeSMjIyMuDQo+ID4+Pj4+DQo+ID4+Pj4+IElmIG5lZWRlZCwgSSBndWVzcyB3ZSBjb3Vs ZCBhbWVuZCB0aGUgcGF0Y2ggdG8gZGV0ZWN0IHRoZSB0eXBlIG9mDQo+ID4+Pj4+IG9wdGlvbiBh bmQgb25seSBzaWduYWwgUmVhZHlUb0Jvb3QgZm9yIFBsYXRmb3JtUmVjb3ZlcnkjIyMjLg0KPiA+ Pj4+Pg0KPiA+Pj4+Pj4gVG8gc29sdmUgeW91ciBwcm9ibGVtLCBjcmVhdGluZyBhIFBsYXRmb3Jt UmVjb3Zlcnkgb3B0aW9uIHdpdGgNCj4gPj4+Pj4+IHRoZSBzbWFsbGVzdCBvcHRpb24gbnVtYmVy IGFuZCB1c2luZyBpdCBpbnN0ZWFkIG9mIGRlZmF1bHQgb25lDQo+ID4+Pj4+PiAod2l0aCBzaG9y dC1mb3JtIEZpbGUgUGF0aCBNZWRpYSBEZXZpY2UgUGF0aCkgbG9va3MgbGlrZSBhDQo+ID4+Pj4+ PiBzaW1wbGVyIHNvbHV0aW9uLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJIGRvbid0IG1pbmQgdHJ5aW5n IGFuIGFsdGVybmF0aXZlIGFwcHJvYWNoLCBidXQgSSBkb24ndA0KPiA+Pj4+PiB1bmRlcnN0YW5k IGhvdyB3aGF0IHlvdSBkZXNjcmliZSB3b3VsZCBoZWxwLiBDYW4geW91IHBsZWFzZSBiZQ0KPiA+ Pj4+PiBtb3JlIHNwZWNpZmljIGFib3V0IHdoYXQgeW91IGhhdmUgaW4gbWluZD8NCj4gPj4+Pj4N Cj4gPj4+Pj4gT3VyIG1haW4gaXNzdWUgaGVyZSBpcyB0aGF0IHdlIG11c3QgaGF2ZSBSZWFkeVRv Qm9vdCBzaWduYWxsZWQgc28NCj4gPj4+Pj4gdGhhdCB0aGUgUmVhZHlUb0Jvb3QoKSBmdW5jdGlv biBjYWxsYmFjayBmcm9tDQo+ID4+Pj4+IEVtYmVkZGVkUGtnL0RyaXZlcnMvQ29uc29sZVByZWZE eGUgZ2V0cyBleGVjdXRlZCBpbiBvcmRlciBmb3INCj4gdGhlDQo+ID4+Pj4+IGJvb3QgbG9hZGVy IGludm9rZWQgZnJvbSBQbGF0Zm9ybVJlY292ZXJ5IyMjIyAgdG8gdXNlIGEgcHJvcGVybHkNCj4g Pj4+Pj4gaW5pdGlhbGl6ZWQgZ3JhcGhpY2FsIGNvbnNvbGUuIFNvIEknbSBub3Qgc3VyZSBJIHF1 aXRlIGdldCBob3cNCj4gPj4+Pj4gc3dpdGNoaW5nIGZyb20gb25lIFBsYXRmb3JtUmVjb3Zlcnkj IyMjIG9wdGlvbiB0byBhbm90aGVyIHdvdWxkDQo+ID4+Pj4+IGltcHJvdmUgdGhpbmdzLg0KPiA+ Pj4+Pg0KPiA+Pj4+PiBJZiBpdCBoZWxwcywgaGVyZSBpcyB3aGF0IHdlIGN1cnJlbnRseSBkZWZh dWx0IHRvLCBpbiB0ZXJtcyBvZg0KPiA+Pj4+PiBib290IG9wdGlvbnMsIG9uIGEgUmFzcGJlcnJ5 IFBpIDQgcGxhdGZvcm0gd2l0aCBhIG5ld2x5IGJ1aWxkDQo+IGZpcm13YXJlOg0KPiA+Pj4+Pg0K PiA+Pj4+PiBbQmRzXT09PT09PT09PT09PT1CZWdpbiBMb2FkIE9wdGlvbnMgRHVtcGluZw0KPiAu Li49PT09PT09PT09PT09DQo+ID4+Pj4+ICAgICAgIERyaXZlciBPcHRpb25zOg0KPiA+Pj4+PiAg ICAgICBTeXNQcmVwIE9wdGlvbnM6DQo+ID4+Pj4+ICAgICAgIEJvb3QgT3B0aW9uczoNCj4gPj4+ Pj4gICAgICAgICBCb290MDAwMDogVWlBcHAgICAgICAgICAgICAgIDB4MDEwOQ0KPiA+Pj4+PiAg ICAgICAgIEJvb3QwMDAxOiBVRUZJIFNoZWxsICAgICAgICAgICAgICAgICAweDAwMDANCj4gPj4+ Pj4gICAgICAgUGxhdGZvcm1SZWNvdmVyeSBPcHRpb25zOg0KPiA+Pj4+PiAgICAgICAgIFBsYXRm b3JtUmVjb3ZlcnkwMDAwOiBEZWZhdWx0IFBsYXRmb3JtUmVjb3ZlcnkNCj4gPj4+Pj4gMHgwMDAx IFtCZHNdPT09PT09PT09PT09PUVuZCBMb2FkIE9wdGlvbnMNCj4gRHVtcGluZz09PT09PT09PT09 PT0NCj4gPj4+Pj4NCj4gPj4+Pj4gV2l0aCB0aGlzLCBQbGF0Zm9ybVJlY292ZXJ5MDAwMCBnZXRz IGV4ZWN1dGVkIGJ5IGRlZmF1bHQsIHdoaWNoIGlzDQo+ID4+Pj4+IHdoYXQgd2Ugd2FudCwgc2lu Y2UgaXQgd2lsbCBwaWNrIC9lZmkvYm9vdC9ib290YWE2NC5lZmkgZnJvbQ0KPiA+Pj4+PiBlaXRo ZXIgU0Qgb3IgVVNCIGFuZCBydW4gaXQsIHRoZSBvbmx5IGlzc3VlIGJlaW5nIHRoYXQsIGJlY2F1 c2UNCj4gPj4+Pj4gUmVhZHlUb0Jvb3QgaGFzIG5vdCBiZWVuIGV4ZWN1dGVkLCB0aGUgZ3JhcGhp Y2FsIGNvbnNvbGUgaXMgbm90DQo+ID4+Pj4+IG9wZXJhdGl2ZSBzbyB1c2VycyBjYW4ndCBpbnRl cmFjdCB3aXRoIHRoZSBPUyBpbnN0YWxsZXIuDQo+ID4+Pj4+DQo+ID4+Pj4+IFNvIEknbSByZWFs bHkgbm90IHN1cmUgaG93IGFkZGluZyBhbiBleHRyYSBQbGF0Zm9ybVJlY292ZXJ5IyMjIw0KPiA+ Pj4+PiB3b3VsZCBoZWxwLiBBbmQgSSdtIGFsc28gbm90IHRvbyBmYW1pbGlhciB3aXRoIGhvdyBv bmUgd291bGQgZ28NCj4gPj4+Pj4gYXJvdW5kIHRvIGFkZCBzdWNoIGFuIGVudHJ5Li4uDQo+ID4+ Pj4+DQo+ID4+Pj4+PiBCeSB0aGUgd2F5LCBJIGFsc28gY2hlY2tlZCB0aGUgVUVGSSBzcGVjaWZp Y2F0aW9uLiBJdCBsb29rcw0KPiA+Pj4+Pj4gbWFraW5nIHNlbnNlIHRvIG9ubHkgc2lnbmFsIFJl YWR5VG9Cb290IGZvciBib290IG9wdGlvbg0KPiAoQm9vdCMjIyMpLg0KPiA+Pj4+Pg0KPiA+Pj4+ PiBUaGF0J3Mgc29tZXRoaW5nIEkgY29uc2lkZXJlZCB0b28sIGJ1dCBJIGRpc2FncmVlIHdpdGgg dGhpcw0KPiA+Pj4+PiBjb25jbHVzaW9uLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBNeSByZWFzb25pbmcg aXMgdGhhdCwgaWYgUGxhdGZvcm1SZWNvdmVyeSMjIyMgY2FuIGV4ZWN1dGUgYQ0KPiA+Pj4+PiBy ZWd1bGFyIGJvb3Rsb2FkZXIgbGlrZSAvZWZpL2Jvb3QvYm9vdCMjIyMuZWZpIGZyb20gaW5zdGFs bGF0aW9uDQo+ID4+Pj4+IG1lZGlhLCB0aGVuIGl0IHNob3VsZCBnbyB0aHJvdWdoIHRoZSBzYW1l IGtpbmQgb2YgaW5pdGlhbGl6YXRpb24NCj4gPj4+Pj4gdGhhdCBoYXBwZW5zIGZvciBhIHJlZ3Vs YXIgYm9vdCBvcHRpb24sIGFuZCB0aGF0IHNob3VsZCBpbmNsdWRlDQo+ID4+Pj4+IHNpZ25hbGxp bmcgdGhlIFJlYWR5VG9Cb290IGV2ZW50Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJZiB0aGVyZSB3YXMg YSBzcGVjaWFsIGJvb3Rsb2FkZXIgZm9yIFBsYXRmb3JtUmVjb3ZlcnkjIyMjIChlLmcuDQo+ID4+ Pj4+IC9lZmkvYm9vdC9yZWNvdmVyeSMjIyMuZWZpKSB0aGVuIEkgd291bGQgYWdyZWUgd2l0aCBv bmx5DQo+ID4+Pj4+IHNpZ25hbGxpbmcgUmVhZHlUb0Jvb3QgZm9yIGEgZm9ybWFsIEJvb3QjIyMj IG9wdGlvbi4gQnV0IHRoYXQNCj4gPj4+Pj4gaXNuJ3QgdGhlIGNhc2UsIHNvIEkgdGhpbmsgaXQg aXMgcmVhc29uYWJsZSB0byB3YW50IHRvIGhhdmUNCj4gPj4+Pj4gUmVhZHlUb0Jvb3QgYWxzbyBv Y2N1ciB3aGVuIGEgL2VmaS9ib290L2Jvb3QjIyMjLmVmaSBib290bG9hZGVyIGlzDQo+ID4+Pj4+ IGV4ZWN1dGVkIGZyb20gUGxhdGZvcm1SZWNvdmVyeSMjIyMuLCBlc3BlY2lhbGx5IHdoZW4gd2Ug a25vdyBpdA0KPiA+Pj4+PiBjYW4gYmUgY3J1Y2lhbCB0byBlbnN1cmluZyB0aGF0IHRoZSBlbmQg dXNlciBjYW4gYWN0dWFsbHkgdXNlIHRoZQ0KPiBncmFwaGljYWwgY29uc29sZS4NCj4gPj4+Pj4N Cj4gPj4+Pj4+IFRoZXJlZm9yZSwgeW91ciBjaGFuZ2UgbWF5IGFsc28gcmVxdWlyZSBzcGVjaWZp Y2F0aW9uIGNoYW5nZS4NCj4gPj4+Pj4NCj4gPj4+Pj4gWWVzLCBJIG1lbnRpb25lZCB0aGF0IGlu IHRoZSBjb3ZlciBsZXR0ZXIgZm9yIHRoaXMgcGF0Y2gNCj4gPj4+Pj4NCj4gKGh0dHBzOi8vbmFt MDQuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyDQo+ ID4+Pj4+DQo+IEZlZGsyLmdyb3Vwcy5pbyUyRmclMkZkZXZlbCUyRm1lc3NhZ2UlMkY2MTMyNyZh bXA7ZGF0YT0wMiU3QzAxJQ0KPiA3Q2ENCj4gPj4+Pj4NCj4gd2Fya2VudGluJTQwdm13YXJlLmNv bSU3QzVmOTBkMDc3YmM3OTQ5YzExMjJmMDhkODEyZGM0OGQzJTdDYjM5MQ0KPiAzOA0KPiA+Pj4+ Pg0KPiBjYTNjZWU0YjRhYTRkNmNkODNkOWRkNjJmMCU3QzAlN0MwJTdDNjM3MjgwMDg0NjExNzQ5 MzI0JmFtcDtzZGF0DQo+IGE9DQo+ID4+Pj4+DQo+IDIlMkIlMkZjdk1rcm1aR1RSUkxER1N1TXNL Yml5RE9HdHdZd1o3cVNxTXlNaWNjJTNEJmFtcDtyZXMNCj4gZXJ2ZWQ9MA0KPiA+Pj4+PiApLCB3 aGljaCBhbHNvIGRlc2NyaWJlcyB0aGUgaXNzdWUgd2UgYXJlIHRyeWluZyB0byBzb2x2ZSBpbg0K PiA+Pj4+PiBncmVhdGVyIGRldGFpbHMuIFRoaXMgaXMgd2hhdCBJIHdyb3RlOg0KPiA+Pj4+Pg0K PiA+Pj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCj4gPj4+Pj4gLS0tLS0tDQo+ID4+Pj4+DQo+ID4+Pj4+IE5vdGUg aG93ZXZlciB0aGF0IHRoaXMgbWF5IHJlcXVpcmUgYSBzcGVjcyB1cGRhdGUsIGFzIHRoZSBjdXJy ZW50DQo+ID4+Pj4+IFVFRkkgc3BlY3MgZm9yIEVGSV9CT09UX1NFUlZJQ0VTLkNyZWF0ZUV2ZW50 RXgoKSBoYXZlOg0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgPiAgRUZJX0VWRU5UX0dST1VQX1JFQURZ X1RPX0JPT1QNCj4gPj4+Pj4gICAgID4gICAgVGhpcyBldmVudCBncm91cCBpcyBub3RpZmllZCBi eSB0aGUgc3lzdGVtIHdoZW4gdGhlIEJvb3QNCj4gPj4+Pj4gTWFuYWdlcg0KPiA+Pj4+PiAgICAg PiAgICBpcyBhYm91dCB0byBsb2FkIGFuZCBleGVjdXRlIGEgYm9vdCBvcHRpb24uDQo+ID4+Pj4+ DQo+ID4+Pj4+IGFuZCwgb25jZSB0aGlzIHBhdGNoIGhhcyBiZWVuIGFwcGxpZWQsIHdlIG1heSB3 YW50IHRvIHVwZGF0ZSB0aGlzDQo+ID4+Pj4+IHNlY3Rpb24gdG8gbWVudGlvbiB0aGF0IGl0IGFw cGxpZXMgdG8gYm90aCBCb290IE1hbmFnZXIgYW5kDQo+ID4+Pj4+IFBsYXRmb3JtIFJlY292ZXJ5 Lg0KPiA+Pj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPj4+Pj4gLS0tLS0tDQo+ID4+Pj4+DQo+ID4+Pj4+DQo+ ID4+Pj4+DQo+ID4+Pj4+IEFnYWluLCBJIGRvbid0IGhhdmUgYW4gaXNzdWUgd2l0aCB0cnlpbmcg dG8gdXNlIGFuIGFsdGVybmF0ZQ0KPiA+Pj4+PiBhcHByb2FjaCB0byBzb2x2ZSBvdXIgcHJvYmxl bSAodGhvdWdoIEkgdWx0aW1hdGVseSBiZWxpZXZlIHRoYXQsDQo+ID4+Pj4+IGlmIFBsYXRmb3Jt UmVjb3ZlcnkjIyMjIGNhbiBsYXVuY2ggYSAvZWZpL2Jvb3QvYm9vdCMjIyMuZWZpDQo+ID4+Pj4+ IGJvb3Rsb2FkZXIgdGhlbiB3ZSBtdXN0IHVwZGF0ZSB0aGUgc3BlY3MgYW5kIHRoZSBjb2RlIHRv IGhhdmUNCj4gPj4+Pj4gUmVhZHlUb0Jvb3QgYWxzbyBzaWduYWxsZWQgdGhlbiwgYmVjYXVzZSB0 aGF0J3MgdGhlIGxvZ2ljYWwgdGhpbmcNCj4gPj4+Pj4gdG8gZG8pLiBCdXQgcmlnaHQgbm93LCBJ J20gbm90IHNlZWluZyBob3cgdG8gYWNoaWV2ZSB0aGF0IHdoZW4NCj4gPj4+Pj4gUGxhdGZvcm1S ZWNvdmVyeSMjIyMgaXMgdGhlIG9wdGlvbiB0aGF0IGlzIHVzZWQgdG8gbGF1bmNoIHRoZSBPUw0K PiA+Pj4+PiBpbnN0YWxsYXRpb24gdGhlIGJvb3Rsb2FkZXIuIFNvIGlmIHlvdSBjYW4gcHJvdmlk ZSBtb2RlIGRldGFpbHMgb24NCj4gPj4+Pj4gaG93IGV4YWN0bHkgeW91IHRoaW5rIGNyZWF0aW5n IGFuIGFsdGVybmF0ZSBQbGF0Zm9ybVJlY292ZXJ5DQo+ID4+Pj4+IG9wdGlvbiB3b3VsZCBoZWxw LCBJIHdvdWxkIGFwcHJlY2lhdGUgaXQuDQo+ID4+Pj4+DQo+ID4+Pj4+IFJlZ2FyZHMsDQo+ID4+ Pj4+DQo+ID4+Pj4+IC9QZXRlDQo+ID4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gUmVnYXJkcywN Cj4gPj4+Pj4+IFN1bm55IFdhbmcNCj4gPj4+Pj4+DQo+ID4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiA+Pj4+Pj4gRnJvbTogbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvIFtt YWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW9dDQo+ID4+Pj4+PiBPbiBCZWhhbGYgT2YgUGV0ZSBC YXRhcmQNCj4gPj4+Pj4+IFNlbnQ6IFR1ZXNkYXksIEp1bmUgMTYsIDIwMjAgNTo1NiBQTQ0KPiA+ Pj4+Pj4gVG86IG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+Pj4+Pj4gQ2M6IG1haWx0 bzp6aGljaGFvLmdhb0BpbnRlbC5jb207IG1haWx0bzpyYXkubmlAaW50ZWwuY29tOw0KPiA+Pj4+ Pj4gbWFpbHRvOmFyZC5iaWVzaGV1dmVsQGFybS5jb207IG1haWx0bzpsZWlmQG51dmlhaW5jLmNv bQ0KPiA+Pj4+Pj4gU3ViamVjdDogW2VkazItZGV2ZWxdIFtlZGsyXVtQQVRDSCAxLzFdDQo+ID4+ Pj4+PiBNZGVNb2R1bGVQa2cvVWVmaUJvb3RNYW5hZ2VyTGliOiBTaWduYWwgUmVhZHlUb0Jvb3Qg b24NCj4gcGxhdGZvcm0NCj4gPj4+Pj4+IHJlY292ZXJ5DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gQ3Vy cmVudGx5LCB0aGUgUmVhZHlUb0Jvb3QgZXZlbnQgaXMgb25seSBzaWduYWxlZCB3aGVuIGEgZm9y bWFsDQo+ID4+Pj4+PiBCb290IE1hbmFnZXIgb3B0aW9uIGlzIGV4ZWN1dGVkIChpbiBCbUJvb3Qu YyAtPg0KPiA+Pj4+Pj4gRWZpQm9vdE1hbmFnZXJCb290ICgpKS4NCj4gPj4+Pj4+DQo+ID4+Pj4+ PiBIb3dldmVyLCB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgUGxhdGZvcm0gUmVjb3ZlcnkgaW4g VUVGSSAyLjUsDQo+ID4+Pj4+PiB3aGljaCBtYXkgbGVhZCB0byB0aGUgZXhlY3V0aW9uIG9mIGEg Ym9vdCBsb2FkZXIgdGhhdCBoYXMgc2ltaWxhcg0KPiA+Pj4+Pj4gcmVxdWlyZW1lbnRzIHRvIGEg cmVndWxhciBvbmUsIHlldCBpcyBub3QgbGF1bmNoZWQgYXMgYSBCb290DQo+ID4+Pj4+PiBNYW5h Z2VyIG9wdGlvbiwgaXQgYWxzbyBiZWNvbWVzIG5lY2Vzc2FyeSB0byBzaWduYWwgUmVhZHlUb0Jv b3QNCj4gPj4+Pj4+IHdoZW4gYSBQbGF0Zm9ybSBSZWNvdmVyeSBib290IGxvYWRlciBydW5zLg0K PiA+Pj4+Pj4NCj4gPj4+Pj4+IEVzcGVjaWFsbHksIHRoaXMgY2FuIGJlIGNyaXRpY2FsIHRvIGVu c3VyaW5nIHRoYXQgdGhlIGdyYXBoaWNhbA0KPiA+Pj4+Pj4gY29uc29sZSBpcyBhY3R1YWxseSB1 c2FibGUgZHVyaW5nIHBsYXRmb3JtIHJlY292ZXJ5LCBhcyBzb21lDQo+ID4+Pj4+PiBwbGF0Zm9y bXMgZG8gcmVseSBvbiB0aGUgQ29uc29sZVByZWZEeGUgZHJpdmVyLCB3aGljaCBvbmx5DQo+ID4+ Pj4+PiBwZXJmb3JtcyBjb25zb2xlIGluaXRpYWxpemF0aW9uIGFmdGVyIFJlYWR5VG9Cb290IGlz IHRyaWdnZXJlZC4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBUaGlzIHBhdGNoIGZpeGVzIHRoYXQgYmVo YXZpb3VyIGJ5IGNhbGxpbmcNCj4gPj4+Pj4+IEVmaVNpZ25hbEV2ZW50UmVhZHlUb0Jvb3QgKCkg aW4gRWZpQm9vdE1hbmFnZXJQcm9jZXNzTG9hZE9wdGlvbg0KPiA+Pj4+Pj4gKCksIHdoaWNoIGlz IHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHBsYXRmb3JtIHJlY292ZXJ5IGJvb3QNCj4g Pj4+Pj4+IHByb2Nlc3MuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogUGV0ZSBC YXRhcmQgPG1haWx0bzpwZXRlQGFrZW8uaWU+DQo+ID4+Pj4+PiAtLS0NCj4gPj4+Pj4+ICAgICAg TWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliL0JtTG9hZE9wdGlvbi5jIHwN Cj4gOQ0KPiA+Pj4+Pj4gKysrKysrKysrDQo+ID4+Pj4+PiAgICAgIDEgZmlsZSBjaGFuZ2VkLCA5 IGluc2VydGlvbnMoKykNCj4gPj4+Pj4+DQo+ID4+Pj4+PiBkaWZmIC0tZ2l0DQo+ID4+Pj4+PiBh L01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlCb290TWFuYWdlckxpYi9CbUxvYWRPcHRpb24uYw0K PiA+Pj4+Pj4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIvQm1Mb2Fk T3B0aW9uLmMNCj4gPj4+Pj4+IGluZGV4IDg5MzcyYjNiOTdiOC4uMTE3ZjFmNWIxMjRjIDEwMDY0 NA0KPiA+Pj4+Pj4gLS0tIGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGli L0JtTG9hZE9wdGlvbi5jDQo+ID4+Pj4+PiArKysNCj4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9V ZWZpQm9vdE1hbmFnZXJMaWIvQm1Mb2FkT3B0aW9uLmMNCj4gPj4+Pj4+IEBAIC0xMzc2LDYgKzEz NzYsMTUgQEAgRWZpQm9vdE1hbmFnZXJQcm9jZXNzTG9hZE9wdGlvbiAoDQo+ID4+Pj4+PiAgICAg ICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+Pj4+PiAgICAgICAgfQ0KPiA+Pj4+Pj4NCj4g Pj4+Pj4+ICsgIC8vDQo+ID4+Pj4+PiArICAvLyBTaWduYWwgdGhlIEVWVF9TSUdOQUxfUkVBRFlf VE9fQk9PVCBldmVudCB3aGVuIHdlIGFyZQ0KPiBhYm91dA0KPiA+Pj4+Pj4gdG8gbG9hZCBhbmQg ZXhlY3V0ZSB0aGUgYm9vdCBvcHRpb24uDQo+ID4+Pj4+PiArICAvLw0KPiA+Pj4+Pj4gKyAgRWZp U2lnbmFsRXZlbnRSZWFkeVRvQm9vdCAoKTsNCj4gPj4+Pj4+ICsgIC8vDQo+ID4+Pj4+PiArICAv LyBSZXBvcnQgU3RhdHVzIENvZGUgdG8gaW5kaWNhdGUgUmVhZHlUb0Jvb3Qgd2FzIHNpZ25hbGxl ZA0KPiA+Pj4+Pj4gKy8vICBSRVBPUlRfU1RBVFVTX0NPREUgKEVGSV9QUk9HUkVTU19DT0RFLA0K PiA+Pj4+Pj4gKEVGSV9TT0ZUV0FSRV9EWEVfQlNfRFJJVkVSIHwNCj4gPj4+Pj4+ICsgRUZJX1NX X0RYRV9CU19QQ19SRUFEWV9UT19CT09UX0VWRU5UKSk7DQo+ID4+Pj4+PiArDQo+ID4+Pj4+PiAg ICAgICAgLy8NCj4gPj4+Pj4+ICAgICAgICAvLyBMb2FkIGFuZCBzdGFydCB0aGUgbG9hZCBvcHRp b24uDQo+ID4+Pj4+PiAgICAgICAgLy8NCj4gPj4+Pj4+IC0tDQo+ID4+Pj4+PiAyLjIxLjAud2lu ZG93cy4xDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pg0K PiA+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2Yg dGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzDQo+ID4+Pj4gYXJlIGNvbmZpZGVudGlhbCBh bmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlDQo+ID4+Pj4gaW50 ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5k IGRvIG5vdA0KPiA+Pj4+IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29u LCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLA0KPiA+Pj4+IG9yIHN0b3JlIG9yIGNvcHkgdGhlIGlu Zm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4NCj4gPj4+Pg0KPiA+Pj4+IElNUE9S VEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVu dHMNCj4gPj4+PiBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJ ZiB5b3UgYXJlIG5vdCB0aGUNCj4gPj4+PiBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3Rp ZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90DQo+ID4+Pj4gZGlzY2xvc2UgdGhl IGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsDQo+ ID4+Pj4gb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhh bmsgeW91Lg0KPiA+Pj4+DQo+ID4+Pg0KPiA+Pj4NCj4gPj4+IA0KPiA+Pj4NCj4gPg0KDQpJTVBP UlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1l bnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBh cmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBp bW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIg cGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZv cm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuDQo=