From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from FRA01-PR2-obe.outbound.protection.outlook.com (FRA01-PR2-obe.outbound.protection.outlook.com [40.107.12.87]) by mx.groups.io with SMTP id smtpd.web12.2528.1618343272385282646 for ; Tue, 13 Apr 2021 12:47:53 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=SuWkt2CM; spf=pass (domain: arm.com, ip: 40.107.12.87, 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=1g8dOUqUm58+CjQhGNVx+wyeMn3Mhg2HoAYYPY5pqak=; b=SuWkt2CMdUwbAtuHyYT8Z8J7EwS4yZV1SgRn1VXX3A/jKqfOwD/KnP8i1VpS1KFWEXgUpzyKOHxJKc1gNAg7XylPW4jFXTcaD53TgWQ/O2y0wDzEQbX88p8oDPUitRxPLNNWobSriF+OVjLcB/TtXwiZjSWuXdgh9rAL59HWouw= Received: from AM6P191CA0045.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:7f::22) by PR2PR08MB4794.eurprd08.prod.outlook.com (2603:10a6:101:24::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.22; Tue, 13 Apr 2021 19:47:48 +0000 Received: from AM5EUR03FT051.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:7f:cafe::d7) by AM6P191CA0045.outlook.office365.com (2603:10a6:209:7f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17 via Frontend Transport; Tue, 13 Apr 2021 19:47:48 +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 AM5EUR03FT051.mail.protection.outlook.com (10.152.16.246) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17 via Frontend Transport; Tue, 13 Apr 2021 19:47:47 +0000 Received: ("Tessian outbound b610e7b4d771:v90"); Tue, 13 Apr 2021 19:47:47 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: d463ddf3351251ec X-CR-MTA-TID: 64aa7808 Received: from 24ac91b89de8.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id D6D37EE2-491C-453E-9C9F-6C81C86A076D.1; Tue, 13 Apr 2021 19:47:35 +0000 Received: from EUR03-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 24ac91b89de8.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 13 Apr 2021 19:47:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cJZREVxFdfUIhlvANvaNKV2QbkCMn0QiZ/zq3fwpOztl7SR0pMqG+OkvXXTKaqIE72R01gb7/FsRhCYfy2fDXTcuGfAGzasKjgFN1sKzmUzxKkHfBOOyIr3H913lGjSN5TMBBe+MICMTt9XtUUf74cCNWYZ3M/3sYM0uyVr+ZECC8YiKbX7amjqFABd6ErtunQvGY3Qz/05+YW2ClQNmu98gVHVdirWSx/v1slTIXVioBSSlpqH4Uhz4yymIg++lEzr+wLWshxCKLiEYIMxCjZf1gQIW/R06OZBpbuxI0tc1xJPX70KHD/NuptvvU+QL7xF/Ln2flyrVJFQoALqdeQ== 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=1g8dOUqUm58+CjQhGNVx+wyeMn3Mhg2HoAYYPY5pqak=; b=UI6Rf1EM0DZPhThfUc05L8GqimF9AE52aJHCsmyAOFcUd0BbyH6rvBmaSibHGxcJotEJMA6mYLmx1iAxPLC04oe4ZIQShxlpk5B+5Zy2tob/ryKLhIwzkVO4v3Ymhk0shjtLj/iBpl74LGrsiY0EgHwHByWHaN+eRkFtF2ME108Bs735/BEv/mEvJdkrKw/GAbiA1eYueM1/dcJ2tSNIuK3L9KPmEghhllHVsgMUwCc+vAwSiI1vY3lZMwp+n5SI34RTaYuyn4guRBWud1f32VPzDhQ/nqaU8obSanYGEj0eY335+0KenAKQMduUClG7Tc1cQSb8ostBEF6toHUl9Q== 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=1g8dOUqUm58+CjQhGNVx+wyeMn3Mhg2HoAYYPY5pqak=; b=SuWkt2CMdUwbAtuHyYT8Z8J7EwS4yZV1SgRn1VXX3A/jKqfOwD/KnP8i1VpS1KFWEXgUpzyKOHxJKc1gNAg7XylPW4jFXTcaD53TgWQ/O2y0wDzEQbX88p8oDPUitRxPLNNWobSriF+OVjLcB/TtXwiZjSWuXdgh9rAL59HWouw= Received: from DB7PR08MB3260.eurprd08.prod.outlook.com (2603:10a6:5:21::23) by DB9PR08MB6858.eurprd08.prod.outlook.com (2603:10a6:10:2aa::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17; Tue, 13 Apr 2021 19:47:31 +0000 Received: from DB7PR08MB3260.eurprd08.prod.outlook.com ([fe80::7492:d3fd:d6f4:e187]) by DB7PR08MB3260.eurprd08.prod.outlook.com ([fe80::7492:d3fd:d6f4:e187%6]) with mapi id 15.20.4020.022; Tue, 13 Apr 2021 19:47:31 +0000 From: "Samer El-Haj-Mahmoud" To: "devel@edk2.groups.io" , "pete@akeo.ie" , Laszlo Ersek , Leif Lindholm , "Ni, Ray" , "zhichao.gao@intel.com" CC: "Andrei Warkentin (awarkentin@vmware.com)" , Ard Biesheuvel , Andrew Fish , Michael D Kinney , Jian J Wang , Hao A Wu , "Sunny.Hsuanwen.Wang@gmail.com" , Samer El-Haj-Mahmoud , Sunny Wang Subject: Re: [edk2-devel] [edk2][PATCH 1/1] MdeModulePkg/UefiBootManagerLib: Signal ReadyToBoot on platform recovery Thread-Topic: [edk2-devel] [edk2][PATCH 1/1] MdeModulePkg/UefiBootManagerLib: Signal ReadyToBoot on platform recovery Thread-Index: AQHXC2TP4I33BihWxkSAQl9u9yWIcKqzJCZA Date: Tue, 13 Apr 2021 19:47:31 +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> <9eee055f-a391-7feb-259d-e73d1abc6cd4@akeo.ie> In-Reply-To: <9eee055f-a391-7feb-259d-e73d1abc6cd4@akeo.ie> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; 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: a73b2941-5081-40e7-9249-08d8feb503c7 x-ms-traffictypediagnostic: DB9PR08MB6858:|PR2PR08MB4794: 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: Z3v3/rspltJwXBNiyUeO+AbTdLBrvJEPDiYpbs0CCWc2iiWF9ChLQLBJPdRBQv2W2GfutaFiKQ2XStyc2jO2+UeJnxlHcQwisk4vc46pPvyKP8UliFJ4Q6jmBkEoh1K2bKKGcvi2kvDyFv0HTVakYf1S82QIRue/dtlwZFiIqjR4ZqbEZVWCehjsjdtdcRcb5Qd57RymSw/b1wVJn86wroXXvwtUaeoQmbVz304J49D70O47OslJ4vsm+0SUOn4d5sIz3FV2yXKFPC0v2HCzXYVqEOXGZo4AMR00EM44vsc632EtnZxbh1QVDkcETD27VwS7WQKWMiERMdvphl+YGwYBmGVwUdXMbtyYZnHkD88Awew8dexbYR3b108nx+8rwzWia+x45bcfWI1w3dQFYJf6U0PyBaiUvGsWVfuYjkqxld+7npg82uwkxAuoiv8XFeQIJ1tCu29ufnKoQic0u7yISA7urgcedl3JzlwJSBFi9a2v8Gw6X6bTJFzyZGmDG7Y+8gi4fXYNitsWnTpq4wuO+ftlSK79MEjbMdf4ZAgHMtj092IUFJrpR89/DIlXIMwBVXP+bYqh1W4MsOht8ZiDrSLxoxn+77FxsC6t/U4wd+cfsjZ4zTsTOzISAhDGS6CDOH4LdNKCwRjTPCd+ry5juUqB2G/5wJ0hKakbjmQGjmvi303HUa+rkfRdVslf X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB7PR08MB3260.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(366004)(39850400004)(346002)(376002)(396003)(136003)(45080400002)(110136005)(83380400001)(7416002)(5660300002)(33656002)(66946007)(8676002)(6506007)(2906002)(53546011)(52536014)(54906003)(9686003)(38100700002)(316002)(478600001)(8936002)(966005)(71200400001)(66446008)(66476007)(66556008)(64756008)(7696005)(76116006)(55016002)(86362001)(186003)(30864003)(122000001)(26005)(4326008)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?dUJ4UUZteUhqWEx4TkJnRnhoMzZnKzJnWVFYNjZsMzVCY1RUenBXSHdJNFVO?= =?utf-8?B?VzIybitkSzYzOEE2R04wMFdQWmljcHNUd0FTbjlvNzc4WGdabDAxejBuZnBl?= =?utf-8?B?Nm1KbElvQWxnUWtMZ204MTRJTlVMM2tjdDFEWE5VaVFzcDlwb09UaWxQNkJ4?= =?utf-8?B?WmFtTGJpN0lnNjZ0TkxYZzgvcXRoeWxFVlZVMTdlYllnT3RiRTlTa2J4dExH?= =?utf-8?B?blZEVDAyZnNJUy9DVmdvU0ZMejNTYkR5akFvRTBURkFqanVPck9aZzU3SWxh?= =?utf-8?B?OVRyTjN5SEI4aVIzMnNVZ1ljQU8yRmJ5Z2F2d2JpRXdvVTFvMEpGbm1TbEpC?= =?utf-8?B?WFFvcWcwaDZwVGtneE1MTGF3WmtHMVFvemlGVTdMUGxsZnVZcDNSdnRNNkFi?= =?utf-8?B?MzMyUi82c0ZGbXk2QU5HM1F0MVdMQ0RSNStoSWJHZE5vc2tsR1Buank4YXpQ?= =?utf-8?B?bWRzQkJPREsxRkNKZU55VHhRK3pPTytnR0hCc2U4UTJsVTB1RmpxYlUxdVE1?= =?utf-8?B?dHozY2V4M2pxVUpjMXJseVJYNkZsMkx6dkxEall3OGxJWnluMUJMak5LZ2t4?= =?utf-8?B?WEU4L0ExZVlGV1VWaTluSFZGNmxTdmMwdWZHYVRKTVhEUUNLWlVMQjJPTkhP?= =?utf-8?B?aHoxalFrS3ZHZ0JXOENmeFpBTGJYZEFhRVJ6bTNBYW9wMHRjY21sbVY0cEht?= =?utf-8?B?NjkyQSswdGt5ZnY1bEMxenJDYXViQVJsUkV3RllQS1J2NFFTUGUxbGRHUXBu?= =?utf-8?B?SWFqLzZuNis1TnlPNmY4Y3l2VkxSaHQvZ2JEdTRwRWdEZCtXbndnU3ZQeWR3?= =?utf-8?B?TnRESFF5aVE4VHZFTklEYW5TbGs3R2EvRkQ5dXB4QlBOM3l0YTNpUDRTSXQ1?= =?utf-8?B?N3FvUnJIRkZscFVIdk1LdVRJWVp5c2l6NnRBMXdsMzNwT2ZOWDhFV3JtdHFy?= =?utf-8?B?emdlMVlmb2hOYWxWKzRJM2RWV3RtaEF1RXB5OXkrb1p0d3BNTHNDVUFkMzJn?= =?utf-8?B?anEyQWNxTlpUQk5DMk9mSk11QkF0YzVUVjUrWEZwUXNVbTN5aE9RdlQvdzZW?= =?utf-8?B?eTExRXZSQzNaWUZWelBFcHdDeFdSWGtwMnhMVFJBWk52VklzMHNlOEtSWHJT?= =?utf-8?B?dmxERXFZUkkrcTY2UXl5ZEJneHZQaGl3emJnWWh4eEN6NlFlZHdsZzZaaGt0?= =?utf-8?B?Z1dwV2JQN3dRRGRNcG5SZzR4ZEtTenllZkdWRERPeUo2elU4ODZuMVZMaUtn?= =?utf-8?B?ejFLaGNJV1BxeVdpMEEyU1RVUjdRbzlWS1A2UlMzS0FtWUp6WXVjTUVGS29o?= =?utf-8?B?MDBJT2t1NHB2ZUh6WkF3VVhHVS85NHE0b2NUdFRuNXdzZW4yQ0lvMVRQb0Yy?= =?utf-8?B?VnBxWjVUMmRpNTU2d21zeUJOdmxzYjM4ZjY5c3d2OU9mK1gxKytpVXlFakNF?= =?utf-8?B?MWdwR2hEcnNoa1ppanVIeUdtTW5yRitxSmR3MjE1NTF4Tkd6NlN6UjdOOWdN?= =?utf-8?B?Ni9EakJKbFRZWUZUTVBBZTJnZzI1aWhoV2xldVNYYVFqZG1JdHArZi9KOUdG?= =?utf-8?B?UVZ1VmIvdVJJV3E2WWFtdzhXeEU2Y2RYWHVVb2NaSXljSkR3S1E2ZGpwYjdy?= =?utf-8?B?ZytRaHVtVkZ1TDc4cXpuQXJNQ3d1LytyOVB6U2I3V3RaR3loWEVIMUdHYkp0?= =?utf-8?B?QS81b2ozYUpIa2o2YlZhYWFOaVkrL1IyMmJwWkxhbUxaZ2VrK3RsSk96YUVz?= =?utf-8?Q?+gfLl+ftNNQVU0BnAQLeD5JmiPu9O3EOBxnoNyE?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6858 Original-Authentication-Results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=arm.com; Return-Path: Samer.El-Haj-Mahmoud@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT051.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: cf771675-a1b3-469f-fa20-08d8feb4f9e9 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3QAWbziSDnM+kMMqrZ2RrnXlOa0G/AtRn/Az5pMbAiCZSPoydhmlqHh54+QyK0mUJtlhNtkWlHhu7EwgG6T2dbiX9ibaLPCLDgqtqFoLBOLh6B5jchz0mjRdLRduEsQGZhbZM0e8mgnBeoz0Ruu0R8a3Fyld1hghGRnekn0vwx9e0gSKCTyK2krqbHD0HYNunj1Ecbw8RsXVQgWHoBEghyuJPZ477uOkeOo5m/YAmHJ800VZ49wI6FCxaH7g3fDJNzaL6qfaCHmIhGfvFWGGe70fvuLuHtKzg6wce3dKQZ8Ex31+NmKXGRQvdUGYBg26xeMmQgAaxAm5oQao/sGtcNpEYPa/JKHtcIIcoXSKP1ZK1j2nXHZwna1JLzcKYw+sUHsFLw68ezeuDtKtej5cK8/d8ZLc0Jx8qBg5xxymAbtC/sUAVZxnDD+Da0FV+/K0PJUrzO1AcggHzADYSeIbBqBJojfLCLV8HJ94uOTSAYgA6Xuq7mHdZamWQY0orF0o+rCoYZsJ2tKD0psMzm7Aq2yjRW92uPMin1aDJQa9Halrj/qhRnGcIHe0cYYWOAc6j4nIm+C6ecqzkvxrGLQRgr4fTC6PFua5aS0cisag+bOkkmakKi0Uaa2aYJHLDzYYbbe903UjuQjcDNxghUtXQYbNkH8SwP2wmUcgOoLmhOcm1BXeW+XBEnuGcnjXLdcqDANDNqBlefNjp4/Iw4Q/+qhoSmxFEqJezPY8LlpfiSc= 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)(136003)(39850400004)(346002)(376002)(396003)(46966006)(36840700001)(70586007)(45080400002)(316002)(82310400003)(70206006)(86362001)(4326008)(52536014)(336012)(83380400001)(966005)(8676002)(9686003)(8936002)(82740400003)(30864003)(186003)(6506007)(478600001)(55016002)(33656002)(53546011)(2906002)(7696005)(54906003)(81166007)(36860700001)(5660300002)(110136005)(356005)(26005)(47076005);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 19:47:47.8112 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a73b2941-5081-40e7-9249-08d8feb503c7 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: AM5EUR03FT051.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR2PR08MB4794 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SW4gb3JkZXIgdG8gbWFrZSBwcm9ncmVzcyBvbiB0aGlzLCBJIG9wZW5lZCBhIGNvZGUtZmlyc3Qg RUNSICBhZ2FpbnN0IHRoZSBVRUZJIHNwZWMgdG8gY2xhcmlmeSB0aGUgbGFuZ3VhZ2UgYXJvdW5k IHRoZSBCb290IyMjIyBvcHRpb25zIHByb2Nlc3NpbmcuDQoNCkNvZGUgRmlyc3QgRUNSOiBodHRw czovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTMzMzYNCg0KRmVlZGJh Y2sgb24gdGhlIHByb3Bvc2VkIGxhbmd1YWdlIGlzIGFwcHJlY2lhdGVkLiBQbGVhc2UgcHJvdmlk ZSB0aGUgZmVlZGJhY2sgZGlyZWN0bHkgaW4gdGhlIEJaIGFib3ZlLg0KDQpJIHdpbGwgdXBkYXRl IHRoZSB0aHJlYWQvQlogd2l0aCByZXN1bHRzIGZyb20gVVNXRy4NCg0KVGhhbmtzLA0KLS1TYW1l cg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIuZ3Jv dXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIFBldGUNCj4gQmF0YXJk IHZpYSBncm91cHMuaW8NCj4gU2VudDogVGh1cnNkYXksIEZlYnJ1YXJ5IDI1LCAyMDIxIDU6NTUg QU0NCj4gVG86IFdhbmcsIFN1bm55IChIUFMgU1cpIDxzdW5ueXdhbmdAaHBlLmNvbT47IExhc3ps byBFcnNlaw0KPiA8bGVyc2VrQHJlZGhhdC5jb20+OyBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlh aW5jLmNvbT47DQo+IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBOaSwgUmF5IDxyYXkubmlAaW50ZWwu Y29tPjsgemhpY2hhby5nYW9AaW50ZWwuY29tDQo+IENjOiBTYW1lciBFbC1IYWotTWFobW91ZCA8 U2FtZXIuRWwtSGFqLU1haG1vdWRAYXJtLmNvbT47IEFuZHJlaQ0KPiBXYXJrZW50aW4gKGF3YXJr ZW50aW5Adm13YXJlLmNvbSkgPGF3YXJrZW50aW5Adm13YXJlLmNvbT47IEFyZA0KPiBCaWVzaGV1 dmVsIDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPjsgQW5kcmV3IEZpc2ggPGFmaXNoQGFwcGxl LmNvbT47DQo+IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsg SmlhbiBKIFdhbmcNCj4gPGppYW4uai53YW5nQGludGVsLmNvbT47IEhhbyBBIFd1IDxoYW8uYS53 dUBpbnRlbC5jb20+Ow0KPiBTdW5ueS5Ic3Vhbndlbi5XYW5nQGdtYWlsLmNvbQ0KPiBTdWJqZWN0 OiBSZTogW2VkazItZGV2ZWxdIFtlZGsyXVtQQVRDSCAxLzFdDQo+IE1kZU1vZHVsZVBrZy9VZWZp Qm9vdE1hbmFnZXJMaWI6IFNpZ25hbCBSZWFkeVRvQm9vdCBvbiBwbGF0Zm9ybQ0KPiByZWNvdmVy eQ0KPg0KPiBIaSBTdW5ueSwNCj4NCj4gSSBhcHByZWNpYXRlIHRoZSBpbnB1dCwgYnV0IHNlZWlu ZyB0aGF0IGl0IGlzIGNsZWFyIHRoYXQgbm8gY29uc2Vuc3VzIGhhcyBiZWVuDQo+IHJlYWNoZWQg d2l0aCByZWdhcmRzIHRvIGhvdyB0aGUgc3BlY3Mgc2hvdWxkIGJlIGludGVycHJldGVkLCBhbmQg dGhhdCBhdA0KPiBsZWFzdCA0IHNlcGFyYXRlIHBlb3BsZSBoYXZlIG5vdyBpbmRpY2F0ZWQgdGhh dCB0aGVpciBpbnRlcnByZXRhdGlvbiBpcw0KPiBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIHlvdSBh cmUgcHV0dGluZyBmb3J3YXJkIChpLmUuDQo+IHlvdSBhc3NlcnQgdGhhdCB0aGUgY3VycmVudCBj b2RlIGltcGxlbWVudGF0aW9uIGlzIHNwZWNzIGNvbXBsaWFudCB3aGVyZWFzDQo+IHdlIGFzc2Vy dCB0aGF0IHRoZSBjdXJyZW50IGNvZGUgaW1wbGVtZW50YXRpb24gaXMgbm90IHNwZWNzIGNvbXBs aWFudCksIEkNCj4gYmVsaWV2ZSB0aGF0IGFueSBmdXJ0aGVyIHdvcmsgb24gdGhpcyB3aWxsIGhh dmUgdG8gYmUgY29uZGl0aW9uZWQsIGZpcnN0LCBieSBhDQo+IHNwZWNzIHVwZGF0ZSwgdGhhdCBy ZW1vdmVzIGFueSBhbWJpZ3VpdHkgYXMgdG8gdGhlIHNjb3BlIGluIHdoaWNoDQo+IFJlYWR5VG9C b290IHNob3VsZCBhcHBseS4NCj4NCj4gVW50aWwgdGhhdCBoYXMgaGFwcGVuZWQsIGl0IHNlZW1z IHZlcnkgcG9pbnRsZXNzIHRvIG1lIHRvIHN0YXJ0IHRhbGtpbmcNCj4gcG9zc2libGUgY29kZSB3 b3JrYXJvdW5kcywgYmVjYXVzZSB3ZSBzdGlsbCBjYW4ndCBhcHBlYXIgdG8gYmUgaW4gYWdyZWVt ZW50DQo+IGFzIHRvIHdoZXRoZXIgdGhlIGN1cnJlbnQgY29kZSBpbXBsZW1lbnRhdGlvbiBvZiBS ZWFkeVRvQm9vdCBpcyBzcGVjcw0KPiBjb21wbGlhbnQgb3Igbm90Lg0KPg0KPiBOb3csIGV2ZW4g YXMgSSBhbSB0aGUgb25lIHByb3Bvc2luZyBpdCwgSSdtIGFmcmFpZCB0aGF0IEkgYW0gbm90IHBs YW5uaW5nIHRvDQo+IGJlIHRoZSBvbmUgb3BlbmluZyBhIGZvcm1hbCBzcGVjcyB1cGRhdGUgcmVx dWVzdCwgc2luY2UgdGhlcmUgcmVhbGx5IGlzIG9ubHkNCj4gc28gbXVjaCBtb3JlIHRpbWUgSSBh bSB3aWxsaW5nIHRvIGRldm90ZSB0byB0aGlzIG1hdHRlci4gQnV0IEkgYW0gaG9waW5nDQo+IHNv bWVib2R5IGVsc2Ugd2lsbC4NCj4NCj4gUmVnYXJkcywNCj4NCj4gL1BldGUNCj4NCj4gT24gMjAy MS4wMi4yMiAwOToyOCwgV2FuZywgU3VubnkgKEhQUyBTVykgd3JvdGU6DQo+ID4gSGkgYWxsLA0K PiA+DQo+ID4gSG93IGFib3V0IHdlIHNpZ25hbCBSZWFkeVRvQm9vdCBPTkxZIGZvciB0aGUgZGVm YXVsdCBwbGF0Zm9ybSByZWNvdmVyeQ0KPiBvcHRpb24/ICBUaGUgZGVmYXVsdCBwbGF0Zm9ybSBy ZWNvdmVyeSBvcHRpb24gaGVyZSBtZWFucyB0aGUgb25lIGNyZWF0ZWQNCj4gYnkgdGhlIGNvZGUg YmVsb3cgaW4gQmRzRW50cnkoKS4NCj4gPiAgICBTdGF0dXMgPSBFZmlCb290TWFuYWdlckluaXRp YWxpemVMb2FkT3B0aW9uICgNCj4gPiAgICAgICAgICAgICAgICZQbGF0Zm9ybURlZmF1bHRCb290 T3B0aW9uLA0KPiA+ICAgICAgICAgICAgICAgTG9hZE9wdGlvbk51bWJlclVuYXNzaWduZWQsDQo+ ID4gICAgICAgICAgICAgICBMb2FkT3B0aW9uVHlwZVBsYXRmb3JtUmVjb3ZlcnksDQo+ID4gICAg ICAgICAgICAgICBMT0FEX09QVElPTl9BQ1RJVkUsDQo+ID4gICAgICAgICAgICAgICBMIkRlZmF1 bHQgUGxhdGZvcm1SZWNvdmVyeSIsDQo+ID4gICAgICAgICAgICAgICBGaWxlUGF0aCwNCj4gPiAg ICAgICAgICAgICAgIE5VTEwsDQo+ID4gICAgICAgICAgICAgICAwDQo+ID4gICAgICAgICAgICAg ICApOw0KPiA+DQo+ID4gSW4gb3RoZXIgd29yZHMsIHdlIGp1c3QgbmVlZCB0byBzbGlnaHRseSB1 cGRhdGUgUGV0ZSdzIHBhdGNoIGFzIHRoZQ0KPiBmb2xsb3dpbmcgKGFkZGluZyB0aGUgY29kZSBi ZWxvdyB0byBFZmlCb290TWFuYWdlclByb2Nlc3NMb2FkT3B0aW9uKCkpOg0KPiA+DQo+ID4gKyAg IGlmICgoTG9hZE9wdGlvbi0+T3B0aW9uVHlwZSA9PSBMb2FkT3B0aW9uVHlwZVBsYXRmb3JtUmVj b3ZlcnkpICYmDQo+ID4gICAgICAgICAgICBTdHJDbXAgKExvYWRPcHRpb24gLT5EZXNjcmlwdGlv biwgTCJEZWZhdWx0DQo+ID4gUGxhdGZvcm1SZWNvdmVyeSIpKSB7DQo+ID4gKyAgICAvLw0KPiA+ ICsgICAgLy8gU2lnbmFsIHRoZSBFVlRfU0lHTkFMX1JFQURZX1RPX0JPT1QgZXZlbnQgd2hlbiB3 ZSBhcmUgYWJvdXQNCj4gdG8gbG9hZCBhbmQgZXhlY3V0ZSB0aGUgYm9vdCBvcHRpb24uDQo+ID4g KyAgICAvLw0KPiA+ICsgICAgRWZpU2lnbmFsRXZlbnRSZWFkeVRvQm9vdCAoKTsNCj4gPg0KPiA+ ICsgICAgLy8NCj4gPiArICAgIC8vIFJlcG9ydCBTdGF0dXMgQ29kZSB0byBpbmRpY2F0ZSBSZWFk eVRvQm9vdCB3YXMgc2lnbmFsbGVkDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgUkVQT1JUX1NUQVRV U19DT0RFIChFRklfUFJPR1JFU1NfQ09ERSwNCj4gPiArIChFRklfU09GVFdBUkVfRFhFX0JTX0RS SVZFUiB8DQo+ID4gKyBFRklfU1dfRFhFX0JTX1BDX1JFQURZX1RPX0JPT1RfRVZFTlQpKTsNCj4g PiArICB9DQo+ID4NCj4gPiBJIHRoaW5rIHRoZSBleGlzdGluZyBwbGF0Zm9ybXMgdGhhdCBoYXZl IHRoZWlyIHBsYXRmb3JtLXNwZWNpZmljDQo+IFBsYXRmb3JtUmVjb3Zlcnkgb3B0aW9uIG1heSBh bHNvIGRvIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nIHRoaW5ncyB0byBtYWtlDQo+IHRoZSBzeXN0 ZW0gaGF2ZSBubyBjaGFuY2UgdG8gbG9hZCB0aGUgZGVmYXVsdCBwbGF0Zm9ybSByZWNvdmVyeSBv cHRpb24NCj4gYmVjYXVzZSB0aGV5IGRvIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIHJlY292ZXIgdGhl IGJvb3Qgb3B0aW9uczoNCj4gPiAgICAgIDEuIE1ha2UgdGhlaXIgUGxhdGZvcm1SZWNvdmVyeSBv cHRpb24gaGF2ZSBoaWdoZXIgcHJpb3JpdHkgdGhhbiB0aGUNCj4gZGVmYXVsdCBwbGF0Zm9ybSBy ZWNvdmVyeSBvcHRpb24gKGhhcyBhIGxvd2VyIG51bWJlciAoIyMjIykgdGhhbiB0aGUNCj4gZGVm YXVsdCBwbGF0Zm9ybSByZWNvdmVyeSBvcHRpb24pDQo+ID4gICAgICAyLiBSZW1vdmUgdGhlIGRl ZmF1bHQgcGxhdGZvcm0gcmVjb3Zlcnkgb3B0aW9uLg0KPiA+IFRoZXJlZm9yZSwgaWYgd2Ugb25s eSBzaWduYWwgUmVhZHlUb0Jvb3QgZm9yIHRoZSBkZWZhdWx0IHBsYXRmb3JtIHJlY292ZXJ5DQo+ IG9wdGlvbiwgdGhpcyBtYXkgbm90IGFmZmVjdCB0aGUgZXhpc3RpbmcgcGxhdGZvcm1zIGJlY2F1 c2UgdGhlIGNvZGUgbWF5DQo+IG5ldmVyIGJlIHJ1biBvbiB0aGVzZSBwbGF0Zm9ybXMuDQo+ID4N Cj4gPg0KPiA+DQo+ID4NCj4gPg0KPiA+IElmIHRoZSBzb2x1dGlvbiBhYm92ZSBkb2Vzbid0IHdv cmssIEkgdGhpbmsgdGhlIHN1Z2dlc3Rpb24gKFNvbHV0aW9uIDI6DQo+IGFkZGluZyBhIG5ldyBh cHBsaWNhdGlvbiBhcyBhIFBsYXRmb3JtUmVjb3ZlcnkjIyMjKSBJIG1lbnRpb25lZCwgaW4gdGhl DQo+IGJlZ2lubmluZywgY2FuIGJlIHJlLWNvbnNpZGVyZWQuIFRoZSBzdWdnZXN0aW9uIChzb2x1 dGlvbiAyKSBpcyBiYXNlZCBvbiB0aGUNCj4gdGhvdWdodHMgYmVsb3c6DQo+ID4gICAgICAgMS4g IEkgdGhpbmsgdGhhdCBwcm9jZXNzaW5nL2V2YWx1YXRpbmcgdGhlIEJvb3QjIyMjIGNhbiBiZSBp bnRlcnByZXRlZCBhcw0KPiB0aGUgY29kZSBhZnRlciB0aGUgY29tbWVudCAiIDYuIExvYWQgRUZJ IGJvb3Qgb3B0aW9uIHRvIEltYWdlSGFuZGxlIiBpbg0KPiBFZmlCb290TWFuYWdlckJvb3QoKSBi ZWNhdXNlIHRoZXNlIGNvZGUgYXJlIHNpbWlsYXIgdG8gdGhlIGNvZGUgaW4NCj4gRWZpQm9vdE1h bmFnZXJQcm9jZXNzTG9hZE9wdGlvbigpLiBCYXNlZCBvbiB0aGlzLCBJIHRoaW5rIG91ciBjdXJy ZW50DQo+IGltcGxlbWVudGF0aW9uIGlzIGNvbXBsaWFudCB3aXRoIHRoZSBkZXNjcmlwdGlvbiBi ZWxvdyBpbiB0aGUgVUVGSSBzcGVjLiBPZg0KPiBjb3Vyc2UsIHdlIGNhbiBpbXByb3ZlIG91ciBp bXBsZW1lbnRhdGlvbiBieSBtb3ZpbmcgdGhlIGNvZGUgZm9yDQo+IHByb2Nlc3NpbmcvZXZhbHVh dGluZyB0aGUgQm9vdCMjIyMgZnJvbSBFZmlCb290TWFuYWdlckJvb3QoKSB0bw0KPiBFZmlCb290 TWFuYWdlclByb2Nlc3NMb2FkT3B0aW9uKCkgYW5kIG1ha2UgRWZpQm9vdE1hbmFnZXJCb290KCkg Y2FsbA0KPiBFZmlCb290TWFuYWdlclByb2Nlc3NMb2FkT3B0aW9uKCkuDQo+ID4gICAgICAgICAg ICAgICAg4oCcQWZ0ZXIgYWxsIFN5c1ByZXAjIyMjIHZhcmlhYmxlcyBoYXZlIGJlZW4gbGF1bmNo ZWQgYW5kIGV4aXRlZCwNCj4gdGhlIHBsYXRmb3JtIHNoYWxsIG5vdGlmeSBFRklfRVZFTlRfR1JP VVBfUkVBRFlfVE9fQk9PVCBldmVudCBncm91cA0KPiBhbmQgYmVnaW4gdG8gZXZhbHVhdGUgQm9v dCMjIyMgdmFyaWFibGVzIHdpdGggQXR0cmlidXRlcyBzZXQgdG8NCj4gTE9BRF9PUFRJT05fQ0FU RUdPUllfQk9PVCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIGRlZmluZWQgYnkNCj4gQm9vdE9yZGVy LiBUaGUgRmlsZVBhdGhMaXN0IG9mIHZhcmlhYmxlcyBtYXJrZWQNCj4gTE9BRF9PUFRJT05fQ0FU RUdPUllfQk9PVCBzaGFsbCBub3QgYmUgZXZhbHVhdGVkIHByaW9yIHRvIHRoZQ0KPiBjb21wbGV0 aW9uIG9mIEVGSV9FVkVOVF9HUk9VUF9SRUFEWV9UT19CT09UIGV2ZW50IGdyb3VwDQo+IHByb2Nl c3NpbmcuIg0KPiA+ICAgICAgIDIuIE1vcmVvdmVyLCBpdCBsb29rcyBsaWtlIHdlIHdhbnQgdG8g cHJvY2VzcyBQbGF0Zm9ybVJlY292ZXJ5IyMjIw0KPiBvcHRpb24gaW4gdGhlIHNhbWUgd2F5IGFz IEJvb3QjIyMjIChkbyBtb3JlIHRoaW5ncyBsaWtlIHNldHRpbmcgQm9vdEN1cnJlbnQNCj4gZm9y IFBsYXRmb3JtUmVjb3ZlcnkjIyMjKS4gSWYgc28sIEkgd291bGQgc3RpbGwgcHJlZmVyIHRvIGRv IHdoYXQgSSBzdWdnZXN0IGluDQo+IHRoZSBiZWdpbm5pbmcgdG8gY3JlYXRlIGEgbmV3IGFwcGxp Y2F0aW9uIGFzIGEgbmV3IFBsYXRmb3JtUmVjb3ZlcnkjIyMjDQo+IG9wdGlvbiBmb3IgZ2VuZXJh dGluZyBhbmQgbGF1bmNoaW5nIGEgYm9vdCBvcHRpb24gZm9yIHRoZSBib290YWJsZSBpbWFnZQ0K PiB0aGF0IGlzIGZvdW5kIGJ5IHVzaW5nIGEgc2hvcnQtZm9ybSBGaWxlIFBhdGggTWVkaWEgRGV2 aWNlIFBhdGggc28gdGhhdCB3ZQ0KPiB3b24ndCBydW4gaW50byBvdGhlciBkaWZmaWN1bHRpZXMu IEF0IGxlYXN0LCBJIGFscmVhZHkgc2F3IHRoZSBkaWZmaWN1bHR5IG9mIG5vDQo+IGNvbm5lY3Rp b24gYmV0d2VlbiBCb290Q3VycmVudCB2YXJpYWJsZSBhbmQgUGxhdGZvcm1SZWNvdmVyeSMjIyMN Cj4gdmFyaWFibGUuIE9mIGNvdXJzZSwgdGhpcyBhcHBsaWNhdGlvbiBjYW4gYmUgaW1wbGVtZW50 ZWQgd2l0aG91dCBwbGF0Zm9ybQ0KPiBzcGVjaWZpYyBzdHVmZiwgc28gaXQgY2FuIGJlIGNvbW1v bmx5IHVzZWQgYnkgYWxsIHBsYXRmb3JtcyB0aGF0IG5lZWQgdG8gbG9hZCBhDQo+IGJvb3QgaW1h Z2UgZGlzY292ZXJlZCBieSB1c2luZyBzaG9ydC1mb3JtIEZpbGUgUGF0aCBNZWRpYSBEZXZpY2Ug UGF0aC4NCj4gPg0KPiA+DQo+ID4NCj4gPg0KPiA+IFJlZ2FyZHMsDQo+ID4gU3VubnkgV2FuZw0K PiA+DQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBMYXN6bG8gRXJz ZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiA+IFNlbnQ6IFdlZG5lc2RheSwgRmVicnVhcnkgMTcs IDIwMjEgMTA6MjYgUE0NCj4gPiBUbzogUGV0ZSBCYXRhcmQgPHBldGVAYWtlby5pZT47IExlaWYg TGluZGhvbG0gPGxlaWZAbnV2aWFpbmMuY29tPjsNCj4gPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0K PiA+IENjOiBTYW1lciBFbC1IYWotTWFobW91ZCA8U2FtZXIuRWwtSGFqLU1haG1vdWRAYXJtLmNv bT47IEFuZHJlaQ0KPiA+IFdhcmtlbnRpbiAoYXdhcmtlbnRpbkB2bXdhcmUuY29tKSA8YXdhcmtl bnRpbkB2bXdhcmUuY29tPjsNCj4gV2FuZywgU3VubnkNCj4gPiAoSFBTIFNXKSA8c3Vubnl3YW5n QGhwZS5jb20+OyB6aGljaGFvLmdhb0BpbnRlbC5jb207DQo+IHJheS5uaUBpbnRlbC5jb207DQo+ ID4gQXJkIEJpZXNoZXV2ZWwgPGFyZGIrdGlhbm9jb3JlQGtlcm5lbC5vcmc+OyBBbmRyZXcgRmlz aA0KPiA+IDxhZmlzaEBhcHBsZS5jb20+OyBNaWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lu bmV5QGludGVsLmNvbT47IEppYW4NCj4gPiBKIFdhbmcgPGppYW4uai53YW5nQGludGVsLmNvbT47 IEhhbyBBIFd1IDxoYW8uYS53dUBpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUmU6IFtFWFRFUk5B TF0gUmU6IFtlZGsyLWRldmVsXSBbZWRrMl1bUEFUQ0ggMS8xXQ0KPiA+IE1kZU1vZHVsZVBrZy9V ZWZpQm9vdE1hbmFnZXJMaWI6IFNpZ25hbCBSZWFkeVRvQm9vdCBvbiBwbGF0Zm9ybQ0KPiA+IHJl Y292ZXJ5DQo+ID4NCj4gPiBPbiAwMi8xNy8yMSAxMzoxOCwgUGV0ZSBCYXRhcmQgd3JvdGU6DQo+ ID4+IEhpIExlaWYsDQo+ID4+DQo+ID4+IFRoYW5rcyBmb3IgdHJ5aW5nIHRvIHJlc3VycmVjdCB0 aGlzIGlzc3VlLg0KPiA+Pg0KPiA+PiBBdCB0aGlzIHN0YWdlLCBhbmQgZGVzcGl0ZSBzb21lIGlu aXRpYWwgcHVzaGJhY2sgaW4gdGhlIGJ1Z3ppbGxhDQo+ID4+IHRpY2tldCwgSSBiZWxpZXZlIHdl IGNhbiBhbGwgYWdyZWUgd2l0aCB0aGUgY29uc2Vuc3VzIHRoYXQNCj4gPj4gVWVmaUJvb3RNYW5h Z2VyTGliIGlzIG5vdCBpbiBmYWN0IHNwZWNzLWNvbXBsaWFudCBhbmQgdGhlcmVmb3JlIG5lZWRz DQo+ID4+IHRvIGJlIGZpeGVkLCBvbmUgd2F5IG9yIGFub3RoZXIsIHRvIG1ha2UgaXQgc3BlY3Mt Y29tcGxpYW50Lg0KPiA+Pg0KPiA+PiBNeSB0YWtlIG9uIHRoaXMgaXMgdGhhdCwgcmF0aGVyIHRo YW4gcHJvcG9zZSBhIG5ldyBwYXRjaCwgSSdkIG11Y2gNCj4gPj4gcmF0aGVyIGhhdmUgdGhlIGN1 cnJlbnQgbWFpbnRhaW5lcnMgYWdyZWUgb24gdGhlIGNvdXJzZSBvZiBhY3Rpb24gdG8NCj4gPj4g Zml4IHRoZSBsaWJyYXJ5ICh3aGljaCwgYXMgTGVpZiBzdWdnZXN0cywgbWlnaHQgdmVyeSB3ZWxs IGJlIHRvIHNwbGl0DQo+ID4+IHRoZSBsaWJyYXJ5IGludG8gYSBzcGVjcy1jb21wbGlhbnQgYW5k IG5vbi1zcGVjcy1jb21wbGlhbnQgdmVyc2lvbiksDQo+ID4+IGFzIGl0IHdvdWxkIG9mIGNvdXJz ZSBiZSBiZXR0ZXIgaWYgdGhlIGZpeCBjYW1lIGZyb20gcGVvcGxlIHdobyBoYXZlDQo+ID4+IGJl dHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSByYW1pZmljYXRpb25zIHdlIG1pZ2h0IGZhY2Ugd2l0 aCB0cnlpbmcNCj4gPj4gdG8gY29ycmVjdCB0aGUgY3VycmVudCBiZWhhdmlvdXIsIGFuZCBlc3Bl Y2lhbGx5LCB3aG8gaGF2ZSBrbm93bGVkZ2UNCj4gPj4gb2YgdGhlIHBsYXRmb3JtcyB0aGF0IG1p Z2h0IGJlIGltcGFjdGVkIGZyb20gbWFraW5nIHRoZSBsaWIgc3BlY3MtDQo+IGNvbXBsaWFudC4N Cj4gPj4NCj4gPj4gRXNwZWNpYWxseSwgSSBkb24ndCB0aGluayB0aGF0IHRoZSBwYXRjaCB0aGF0 IEkgb3JpZ2luYWxseSBzdWJtaXR0ZWQNCj4gPj4gZm9yIHRoaXMsIG9yIHRoZSBhZGRpdGlvbmFs IHByb3Bvc2FscyB3ZSBtYWRlLCBhcmUgc3RpbGwgcmVjZWl2YWJsZSwNCj4gPj4gYXMgdGhleSBz ZWVtIHRvIGZhbGwgc2hvcnQgb2YgZml4aW5nIHRoZSBpc3N1ZSBpbiBhIG1hbm5lciB0aGF0IGFs bA0KPiA+PiBwbGF0Zm9ybXMgY2FuIGJlIGhhcHB5IHdpdGguIEFuZCB0aGF0IGlzIHdoeSBJJ2Qg bGlrZSB0byBoZWFyIGZyb20NCj4gPj4gdGhlIG1haW50YWluZXJzIG9uIHdoYXQgdGhlaXIgcHJl ZmVycmVkIGFwcHJvYWNoIHdvdWxkIGJlLg0KPiA+DQo+ID4gQSBuZXcgRmVhdHVyZSBQQ0QgY291 bGQgc2F0aXNmeSBib3RoIHNldHMgb2YgcGxhdGZvcm1zLCBjb3VsZCBpdCBub3Q/DQo+ID4NCj4g PiAoU29ycnkgaWYgdGhlIG9yaWdpbmFsIHBhdGNoIGFscmVhZHkgaGFkIHN1Y2ggYSBQQ0Q7IEkg ZG9uJ3QNCj4gPiByZW1lbWJlci4pDQo+ID4NCj4gPiBPZiBjb3Vyc2UgdGhlbiB3ZSdkIGhhdmUg YSBkZWJhdGUgYXJvdW5kIHRoZSBERUMgZGVmYXVsdCBmb3IgdGhlIG5ldw0KPiA+IFBDRA0KPiA+ IC0tIEknZCBzYXkgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIFBDRCBzaG91bGQgbWF0Y2ggdGhl IHNwZWMtbWFuZGF0ZWQNCj4gYmVoYXZpb3IuDQo+ID4NCj4gPiBJIGRvbid0IHJlY2FsbCBhbnkg c3BlY2lmaWNzLCBidXQgYSBidWctY29tcGF0IHBhdHRlcm4gdGhhdCdzIHNvbWV0aW1lcyB1c2Vk DQo+IGlzIHRoaXM6DQo+ID4NCj4gPiAgICBpZiAoQnVnQ29tcGF0RW5hYmxlZCkgew0KPiA+ICAg ICAgLy8NCj4gPiAgICAgIC8vIGRvIHRoZSByaWdodCB0aGluZyBpbiB0aGUgd3JvbmcgcGxhY2Us IGZvciBsZWdhY3kgcGxhdGZvcm1zJyBzYWtlDQo+ID4gICAgICAvLw0KPiA+ICAgICBGb28gKCk7 DQo+ID4gICAgfQ0KPiA+DQo+ID4gICAgLy8NCj4gPiAgICAvLyBEbyBzb21lIHN0dWZmLg0KPiA+ ICAgIC8vDQo+ID4gICAgQmFyICgpOw0KPiA+DQo+ID4gICAgaWYgKCFCdWdDb21wYXRFbmFibGVk KSB7DQo+ID4gICAgICAvLw0KPiA+ICAgICAgLy8gZG8gdGhlIHJpZ2h0IHRoaW5nIGluIHRoZSBy aWdodCBwbGFjZSwgZm9yIGNvbmZvcm1hbnQgcGxhdGZvcm1zDQo+ID4gICAgICAvLw0KPiA+ICAg ICBGb28gKCk7DQo+ID4gICAgfQ0KPiA+DQo+ID4gTm90IHN1cmUgaWYgaXQgYXBwbGllcyBoZXJl Lg0KPiA+DQo+ID4gVGhhbmtzDQo+ID4gTGFzemxvDQo+ID4NCj4gPg0KPiA+PiBPbiAyMDIxLjAy LjE3IDExOjQyLCBMZWlmIExpbmRob2xtIHdyb3RlOg0KPiA+Pj4gSGkgUGV0ZSwgK3ZhcmlvdXMN Cj4gPj4+DQo+ID4+PiBSZXN1cnJlY3RpbmcgdGhpcyBvbGQgdGhyZWFkIHNpbmNlIEFyZCBwb2lu dGVkIG91dCBhbiBpc3N1ZSBJIHJhbg0KPiA+Pj4gaW50byBteXNlbGYgaGFkIGFscmVhZHkgYmVl biBlbmNvdW50ZXJlZCBieSBQZXRlLg0KPiA+Pj4gQW5kIHRoZSBidWd6aWxsYSB0aWNrZXQgKGRp cmVjdGx5IGJlbG93IHRoaXMgcmVwbHkpIGhhcyBoYWQgbm8NCj4gPj4+IHJlbGV2YW50IHByb2dy ZXNzIHNpbmNlIEF1Z3VzdC4NCj4gPj4+DQo+ID4+PiBFeGVjdXRpdmUgc3VtbWFyeToNCj4gPj4+ IFRoZSBjdXJyZW50IFVlZmlCb290TWFuYWdlckxpYiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUNCj4g Pj4+IFBsYXRmb3JtUmVjb3ZlcnkgcGF0aCBkb2VzIG5vdCBub3RpZnkgdGhlDQo+IEVGSV9FVkVO VF9HUk9VUF9SRUFEWV9UT19CT09UIGV2ZW50Lg0KPiA+Pj4NCj4gPj4+IFRoZSBhcmd1bWVudCBo YXMgYmVlbiBtYWRlIHRoYXQgc2luY2UgY2hhbmdpbmcgdGhpcyB3b3VsZCBhZmZlY3QgYW4NCj4g Pj4+IHVubmFtZWQgbnVtYmVyIG9mIG5vbi1wdWJsaWMgcGxhdGZvcm1zLCB0aGUgYmVoYXZpb3Vy IGNhbm5vdCBiZQ0KPiA+Pj4gY2hhbmdlZCBldmVuIHRob3VnaCBpdCB2aW9sYXRlcyB0aGUgVUVG SSBzcGVjaWZpY2F0aW9uLg0KPiA+Pj4NCj4gPj4+IEkgZGlzYWdyZWUgd2l0aCB0aGF0IHN0YXRl bWVudC4gSWYgd2Ugd2FudCB0byBmb3JrDQo+ID4+PiBVZWZpQm9vdE1hbmFnZXJMaWIgaW50byBh IEJyb2tlbkxlZ2FjeVVlZmlCb290TWFuYWdlckxpYiBhbmQgYW4NCj4gPj4+IGFjdHVhbGx5IGNv cnJlY3Qgb25lLCBhbmQgaGF2ZSB0aG9zZSBwbGF0Zm9ybXMgbW92ZSB0byB0aGUNCj4gPj4+IEJy b2tlbkxlZ2FjeSB2YXJpYW50LCBJJ20gT0sgd2l0aCB0aGF0Lg0KPiA+Pj4NCj4gPj4+IEJ1dCB1 c2luZyB0aGUgZGVmYXVsdCB2ZXJzaW9uIHNob3VsZCBnaXZlIHNwZWNpZmljYXRpb24tY29tcGxp YW50DQo+ID4+PiBiZWhhdmlvdXIuDQo+ID4+Pg0KPiA+Pj4gLw0KPiA+Pj4gICAgICAgTGVpZg0K PiA+Pj4NCj4gPj4+IE9uIFR1ZSwgSnVuIDMwLCAyMDIwIGF0IDE4OjE3OjEwICswMTAwLCBQZXRl IEJhdGFyZCB3cm90ZToNCj4gPj4+PiBQbGVhc2Ugbm90ZSB0aGF0IEkgaGF2ZSBjcmVhdGVkIGEg YnVnIHJlcG9ydA0KPiA+Pj4+IChodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19i dWcuY2dpP2lkPTI4MzEpIHRvIGFkZHJlc3MNCj4gPj4+PiB0aGUgbm9uLWNvbXBsaWFuY2UgaXNz dWUgd2FzIHJhaXNlZCBkdXJpbmcgdGhlIGNvdXJzZSBvZiB0aGUNCj4gPj4+PiBkaXNjdXNzaW9u IGJlbG93Lg0KPiA+Pj4+DQo+ID4+Pj4gUmVnYXJkcywNCj4gPj4+Pg0KPiA+Pj4+IC9QZXRlDQo+ ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IE9uIDIwMjAuMDYuMTcgMTg6MDYsIFNhbWVyIEVsLUhhai1N YWhtb3VkIHdyb3RlOg0KPiA+Pj4+PiBJIHdvcmtlZCB3aXRoIFBldGUgb2ZmbGluZSBvbiB0aGlz Li4NCj4gPj4+Pj4NCj4gPj4+Pj4gVGhpcyBjb2RlIHNlZW1zIHRvIGJlIHZpb2xhdGluZyB0aGUg VUVGSSBTcGVjOg0KPiA+Pj4+Pg0KPiA+Pj4+Pg0KPiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9j b3JlL2VkazIvYmxvYi9hNTZhZjIzZjA2NmUyODE2YzY3YjdjNmU2NGQNCj4gPj4+Pj4gZQ0KPiA+ Pj4+Pg0KPiA3ZGRlZmNkNzA3ODAvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2Vy TGliL0JtQm9vdC5jI0wxNzYNCj4gPj4+Pj4gMw0KPiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+PiAg ICAgIC8vDQo+ID4+Pj4+ICAgICAgLy8gMy4gU2lnbmFsIHRoZSBFVlRfU0lHTkFMX1JFQURZX1RP X0JPT1QgZXZlbnQgd2hlbiB3ZSBhcmUNCj4gPj4+Pj4gYWJvdXQgdG8gbG9hZCBhbmQgZXhlY3V0 ZQ0KPiA+Pj4+PiAgICAgIC8vICAgIHRoZSBib290IG9wdGlvbi4NCj4gPj4+Pj4gICAgICAvLw0K PiA+Pj4+PiAgICAgIGlmIChCbUlzQm9vdE1hbmFnZXJNZW51RmlsZVBhdGggKEJvb3RPcHRpb24t PkZpbGVQYXRoKSkgew0KPiA+Pj4+PiAgICAgICAgREVCVUcgKChFRklfRF9JTkZPLCAiW0Jkc10g Qm9vdGluZyBCb290IE1hbmFnZXIgTWVudS5cbiIpKTsNCj4gPj4+Pj4gICAgICAgIEJtU3RvcEhv dGtleVNlcnZpY2UgKE5VTEwsIE5VTEwpOw0KPiA+Pj4+PiAgICAgIH0gZWxzZSB7DQo+ID4+Pj4+ ICAgICAgICBFZmlTaWduYWxFdmVudFJlYWR5VG9Cb290KCk7DQo+ID4+Pj4+ICAgICAgICAvLw0K PiA+Pj4+PiAgICAgICAgLy8gUmVwb3J0IFN0YXR1cyBDb2RlIHRvIGluZGljYXRlIFJlYWR5VG9C b290IHdhcyBzaWduYWxsZWQNCj4gPj4+Pj4gICAgICAgIC8vDQo+ID4+Pj4+ICAgICAgICBSRVBP UlRfU1RBVFVTX0NPREUgKEVGSV9QUk9HUkVTU19DT0RFLA0KPiA+Pj4+PiAoRUZJX1NPRlRXQVJF X0RYRV9CU19EUklWRVIgfA0KPiA+Pj4+PiBFRklfU1dfRFhFX0JTX1BDX1JFQURZX1RPX0JPT1Rf RVZFTlQpKTsNCj4gPj4+Pj4gICAgICAgIC8vDQo+ID4+Pj4+ICAgICAgICAvLyA0LiBSZXBhaXIg c3lzdGVtIHRocm91Z2ggRHJpdmVySGVhbHRoIHByb3RvY29sDQo+ID4+Pj4+ICAgICAgICAvLw0K PiA+Pj4+PiAgICAgICAgQm1SZXBhaXJBbGxDb250cm9sbGVycyAoMCk7DQo+ID4+Pj4+ICAgICAg fQ0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGUgVUVGSSBTcGVjIHNlY3Rpb24gMy4xLjcgY2xlYXJseSBz dGF0ZXMgdGhhdCBCb290IE9wdGlvbnMgKGFuZA0KPiA+Pj4+PiB0aGVpciBGaWxlUGF0aExpc3Qp ICpzaGFsbCBub3QqIGJlIGV2YWx1YXRlZCBwcmlvciB0byB0aGUNCj4gPj4+Pj4gY29tcGxldGlv biBvZiBFRklfRVZFTlRfR1JPVVBfUkVBRFlfVE9fQk9PVCBldmVudCBncm91cA0KPiBwcm9jZXNz aW5nOg0KPiA+Pj4+Pg0KPiA+Pj4+PiAiQWZ0ZXIgYWxsIFN5c1ByZXAjIyMjIHZhcmlhYmxlcyBo YXZlIGJlZW4gbGF1bmNoZWQgYW5kIGV4aXRlZCwNCj4gPj4+Pj4gdGhlIHBsYXRmb3JtIHNoYWxs IG5vdGlmeSBFRklfRVZFTlRfR1JPVVBfUkVBRFlfVE9fQk9PVCBldmVudA0KPiA+Pj4+PiBncm91 cCBhbmQgYmVnaW4gdG8gZXZhbHVhdGUgQm9vdCMjIyMgdmFyaWFibGVzIHdpdGggQXR0cmlidXRl cyBzZXQNCj4gPj4+Pj4gdG8gTE9BRF9PUFRJT05fQ0FURUdPUllfQk9PVCBhY2NvcmRpbmcgdG8g dGhlIG9yZGVyIGRlZmluZWQNCj4gYnkNCj4gPj4+Pj4gQm9vdE9yZGVyLiBUaGUgRmlsZVBhdGhM aXN0IG9mIHZhcmlhYmxlcyBtYXJrZWQNCj4gPj4+Pj4gTE9BRF9PUFRJT05fQ0FURUdPUllfQk9P VCBzaGFsbCBub3QgYmUgZXZhbHVhdGVkIHByaW9yIHRvIHRoZQ0KPiA+Pj4+PiBjb21wbGV0aW9u IG9mIEVGSV9FVkVOVF9HUk9VUF9SRUFEWV9UT19CT09UIGV2ZW50IGdyb3VwDQo+IHByb2Nlc3Np bmcuIg0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGlzIGlzIGEgcHJlc2NyaXB0aXZlIGxhbmd1YWdlIHRo YXQgaXMgc3Ryb25nZXIgdGhhbiB0aGUgbGFuZ3VhZ2UNCj4gPj4+Pj4gaW4gc2VjdGlvbiA3LjEg d2hpY2ggZGVmaW5lcyB0aGUgUmVhZHlUb0Jvb3QgZXZlbnQgZ3JvdXAgaW4gYQ0KPiA+Pj4+PiBn ZW5lcmFsIHdheToNCj4gPj4+Pj4NCj4gPj4+Pj4gIkVGSV9FVkVOVF9HUk9VUF9SRVNFVF9TWVNU RU0NCj4gPj4+Pj4gVGhpcyBldmVudCBncm91cCBpcyBub3RpZmllZCBieSB0aGUgc3lzdGVtIHdo ZW4gUmVzZXRTeXN0ZW0oKSBpcw0KPiA+Pj4+PiBpbnZva2VkIGFuZCB0aGUgc3lzdGVtIGlzIGFi b3V0IHRvIGJlIHJlc2V0LiBUaGUgZXZlbnQgZ3JvdXAgaXMNCj4gPj4+Pj4gb25seSBub3RpZmll ZCBwcmlvciB0byBFeGl0Qm9vdFNlcnZpY2VzKCkgaW52b2NhdGlvbi4iDQo+ID4+Pj4+DQo+ID4+ Pj4+IFRoZSBFREsyIGNvZGUgaW4gdGhlIGVsc2UgYmxvY2sgYWJvdmUgKHRvIGNhbGwNCj4gPj4+ Pj4gRWZpU2lnbmFsRXZlbnRSZWFkeVRvQm9vdCgpICkgbmVlZCB0byBtb3ZlIGJlZm9yZSB0aGUg Y29kZSB0aGF0IGlzDQo+ID4+Pj4+IHByb2Nlc3NpbmcgQm9vdE9wdGlvbi0+RmlsZVBhdGguIElu IGZhY3QsIHdoeSBpcyB0aGlzIHNpZ25hbGluZw0KPiA+Pj4+PiBldmVuIGEgQm9vdE1hbmFnZXIg dGFzaz8gSXQgc2hvdWxkIGJlIGEgaGlnaGVyIGxldmVsIEJEUyB0YXNrDQo+ID4+Pj4+IChhZnRl ciBwcm9jZXNzaW5nIFN5c1BycCBhbmQgYmVmb3JlIHByb2Nlc3NpbmcgQm9vdCBvcHRpb25zLCBw ZXIgdGhlDQo+IHNwZWMpLg0KPiA+Pj4+PiBUaGlzIHdvdWxkIGJlIHNvbWV3aGVyZSBhcm91bmQN Cj4gPj4+Pj4NCj4gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL2Jsb2IvYjE1NjQ2 NDg0ZWFmZmNmN2NjNDY0ZmRlYTAyDQo+ID4+Pj4+IDENCj4gPj4+Pj4gNDQ5OGYyNmFkZGMyL01k ZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQmRzRHhlL0Jkc0VudHJ5LmMjTDEwMDcNCj4gPj4+Pj4gd2hl cmUgU3lzUHJlcCBpcyBwcm9jZXNzZWQuDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoaXMgc2hvdWxkIGFs c28gdGFrZSBjYXJlIG9mIHRoZSBpc3N1ZSBQZXRlIHJlcG9ydGVkIGluIHRoaXMNCj4gPj4+Pj4g dGhyZWFkLCB3aXRob3V0IHRoZSBuZWVkIGZvciBleHBsaWNpdGx5IHNpZ25hbGluZyBSZWFkeVRv Qm9vdCBmcm9tDQo+ID4+Pj4+IFBsYXRmb3JtUmVjb3ZlcnkgKG9yIGNoYW5naW5nIHRoZSBVRUZJ IHNwZWMpLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGFua3MsDQo+ID4+Pj4+IC0tU2FtZXINCj4gPj4+ Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8g PGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YNCj4gPj4+Pj4gU2FtZXIgRWwtSGFq LU1haG1vdWQgdmlhIGdyb3Vwcy5pbw0KPiA+Pj4+PiBTZW50OiBXZWRuZXNkYXksIEp1bmUgMTcs IDIwMjAgMTI6NDIgUE0NCj4gPj4+Pj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBBbmRyZWkg V2Fya2VudGluDQo+IChhd2Fya2VudGluQHZtd2FyZS5jb20pDQo+ID4+Pj4+IDxhd2Fya2VudGlu QHZtd2FyZS5jb20+OyBXYW5nLCBTdW5ueSAoSFBTIFNXKQ0KPiA8c3Vubnl3YW5nQGhwZS5jb20+ Ow0KPiA+Pj4+PiBwZXRlQGFrZW8uaWUNCj4gPj4+Pj4gQ2M6IHpoaWNoYW8uZ2FvQGludGVsLmNv bTsgcmF5Lm5pQGludGVsLmNvbTsgQXJkIEJpZXNoZXV2ZWwNCj4gPj4+Pj4gPEFyZC5CaWVzaGV1 dmVsQGFybS5jb20+OyBsZWlmQG51dmlhaW5jLmNvbTsgU2FtZXIgRWwtSGFqLQ0KPiBNYWhtb3Vk DQo+ID4+Pj4+IDxTYW1lci5FbC1IYWotTWFobW91ZEBhcm0uY29tPg0KPiA+Pj4+PiBTdWJqZWN0 OiBSZTogW2VkazItZGV2ZWxdIFtlZGsyXVtQQVRDSCAxLzFdDQo+ID4+Pj4+IE1kZU1vZHVsZVBr Zy9VZWZpQm9vdE1hbmFnZXJMaWI6IFNpZ25hbCBSZWFkeVRvQm9vdCBvbg0KPiBwbGF0Zm9ybQ0K PiA+Pj4+PiByZWNvdmVyeQ0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGUgVUVGSSBzcGVjICgzLjEuNykg c2F5czoNCj4gPj4+Pj4NCj4gPj4+Pj4gIkFmdGVyIGFsbCBTeXNQcmVwIyMjIyB2YXJpYWJsZXMg aGF2ZSBiZWVuIGxhdW5jaGVkIGFuZCBleGl0ZWQsDQo+ID4+Pj4+IHRoZSBwbGF0Zm9ybSBzaGFs bCBub3RpZnkgRUZJX0VWRU5UX0dST1VQX1JFQURZX1RPX0JPT1QgZXZlbnQNCj4gPj4+Pj4gZ3Jv dXAgYW5kIGJlZ2luIHRvIGV2YWx1YXRlIEJvb3QjIyMjIHZhcmlhYmxlcyB3aXRoIEF0dHJpYnV0 ZXMgc2V0DQo+ID4+Pj4+IHRvIExPQURfT1BUSU9OX0NBVEVHT1JZX0JPT1QgYWNjb3JkaW5nIHRv IHRoZSBvcmRlciBkZWZpbmVkDQo+IGJ5DQo+ID4+Pj4+IEJvb3RPcmRlci4gVGhlIEZpbGVQYXRo TGlzdCBvZiB2YXJpYWJsZXMgbWFya2VkDQo+ID4+Pj4+IExPQURfT1BUSU9OX0NBVEVHT1JZX0JP T1Qgc2hhbGwgbm90IGJlIGV2YWx1YXRlZCBwcmlvciB0byB0aGUNCj4gPj4+Pj4gY29tcGxldGlv biBvZiBFRklfRVZFTlRfR1JPVVBfUkVBRFlfVE9fQk9PVCBldmVudCBncm91cA0KPiBwcm9jZXNz aW5nLiINCj4gPj4+Pj4NCj4gPj4+Pj4gVGhlIHdheSBJIHJlYWQgdGhpcywgSSBleHBlY3QgUmVh ZHlUb0Jvb3QgdG8gYmUgc2lnbmFsZWQgYWZ0ZXINCj4gPj4+Pj4gU3lzUHJlcCMjIyMgKGlmIGFu eSkgYXJlIHByb2Nlc3NlZCwgYnV0IGJlZm9yZSBCb290IyMjIyBhcmUNCj4gPj4+Pj4gcHJvY2Vz c2VkLiBJcyBteSB1bmRlcnN0YW5kaW5nIGNvcnJlY3QgdGhhdCB0aGlzIGxhbmd1YWdlIGltcGxp ZXMNCj4gPj4+Pj4gUmVhZHlUb0Jvb3QgbmVlZCB0byBiZSBzaWduYWxlZCBldmVuIGlmIEJvb3RP cmRlciBkb2VzIG5vdCBjb250YWluDQo+ID4+Pj4+IGFueSBCb290IyMjIyBvcHRpb25zIG1hcmtl ZCBhcyBMT0FEX09QVElPTl9DQVRFR09SWV9CT09UPw0KPiBBbmQgaWYNCj4gPj4+Pj4gc28sIGlz IEVESzIgbm90IGRvaW5nIHRoaXMsIHdoaWNoIGxlYWRzIHVzIHRvIHRoaXMgcGF0Y2gNCj4gPj4+ Pj4gKHNpZ25hbGluZyBpdCBpbiBQbGF0Zm9ybVJlY292ZXJ5PykNCj4gPj4+Pj4NCj4gPj4+Pj4N Cj4gPj4+Pj4NCj4gPj4+Pj4gRnJvbTogbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvIDxtYWls dG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+DQo+IE9uDQo+ID4+Pj4+IEJlaGFsZiBPZiBBbmRyZWkg V2Fya2VudGluIHZpYSBncm91cHMuaW8NCj4gPj4+Pj4gU2VudDogV2VkbmVzZGF5LCBKdW5lIDE3 LCAyMDIwIDEyOjM3IFBNDQo+ID4+Pj4+IFRvOiBXYW5nLCBTdW5ueSAoSFBTIFNXKSA8bWFpbHRv OnN1bm55d2FuZ0BocGUuY29tPjsNCj4gPj4+Pj4gbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlv OyBtYWlsdG86cGV0ZUBha2VvLmllDQo+ID4+Pj4+IENjOiBtYWlsdG86emhpY2hhby5nYW9AaW50 ZWwuY29tOyBtYWlsdG86cmF5Lm5pQGludGVsLmNvbTsgQXJkDQo+ID4+Pj4+IEJpZXNoZXV2ZWwg PG1haWx0bzpBcmQuQmllc2hldXZlbEBhcm0uY29tPjsNCj4gPj4+Pj4gbWFpbHRvOmxlaWZAbnV2 aWFpbmMuY29tDQo+ID4+Pj4+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW2VkazJdW1BBVENI IDEvMV0NCj4gPj4+Pj4gTWRlTW9kdWxlUGtnL1VlZmlCb290TWFuYWdlckxpYjogU2lnbmFsIFJl YWR5VG9Cb290IG9uDQo+IHBsYXRmb3JtDQo+ID4+Pj4+IHJlY292ZXJ5DQo+ID4+Pj4+DQo+ID4+ Pj4+IFRoYW5rcyBQZXRlLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJIHRoaW5rIHRoZSBxdWVzdGlvbiBJ IGhhdmUsIHRoYXQgSSBob3BlIFRpYW5vIHZldGVyYW5zIGNhbiBjaGltZQ0KPiA+Pj4+PiBpbiwg aXMgd2hldGhlciB3ZSBhcmUgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLCBvciBpZiB3ZSBzaG91bGQg YmUNCj4gPj4+Pj4gb3ZlcnJpZGluZyB0aGUgYm9vdCBtb2RlPyBJLmUuIGlzIGl0IG5vcm1hbCB0 aGF0IHdlIGJvb3QgdXAgaW4NCj4gPj4+Pj4gcmVjb3ZlcnkgdW50aWwgb3B0aW9ucyBhcmUgc2F2 ZWQ/DQo+ID4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+IEENCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+ Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+Pj4+PiBGcm9t OiBtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8gPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5p bz4NCj4gb24NCj4gPj4+Pj4gYmVoYWxmIG9mIFBldGUgQmF0YXJkIHZpYSBncm91cHMuaW8NCj4g Pj4+Pj4gPG1haWx0bzpwZXRlPWFrZW8uaWVAZ3JvdXBzLmlvPg0KPiA+Pj4+PiBTZW50OiBXZWRu ZXNkYXksIEp1bmUgMTcsIDIwMjAgMTE6MzQgQU0NCj4gPj4+Pj4gVG86IFdhbmcsIFN1bm55IChI UFMgU1cpIDxtYWlsdG86c3Vubnl3YW5nQGhwZS5jb20+Ow0KPiA+Pj4+PiBtYWlsdG86ZGV2ZWxA ZWRrMi5ncm91cHMuaW8gPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4gPj4+Pj4gQ2M6 IG1haWx0bzp6aGljaGFvLmdhb0BpbnRlbC5jb20gPG1haWx0bzp6aGljaGFvLmdhb0BpbnRlbC5j b20+Ow0KPiA+Pj4+PiBtYWlsdG86cmF5Lm5pQGludGVsLmNvbSA8bWFpbHRvOnJheS5uaUBpbnRl bC5jb20+Ow0KPiA+Pj4+PiBtYWlsdG86YXJkLmJpZXNoZXV2ZWxAYXJtLmNvbSA8bWFpbHRvOmFy ZC5iaWVzaGV1dmVsQGFybS5jb20+Ow0KPiA+Pj4+PiBtYWlsdG86bGVpZkBudXZpYWluYy5jb20g PG1haWx0bzpsZWlmQG51dmlhaW5jLmNvbT4NCj4gPj4+Pj4gU3ViamVjdDogUmU6IFtlZGsyLWRl dmVsXSBbZWRrMl1bUEFUQ0ggMS8xXQ0KPiA+Pj4+PiBNZGVNb2R1bGVQa2cvVWVmaUJvb3RNYW5h Z2VyTGliOiBTaWduYWwgUmVhZHlUb0Jvb3Qgb24NCj4gcGxhdGZvcm0NCj4gPj4+Pj4gcmVjb3Zl cnkNCj4gPj4+Pj4NCj4gPj4+Pj4gT24gMjAyMC4wNi4xNyAxNDowNCwgV2FuZywgU3VubnkgKEhQ UyBTVykgd3JvdGU6DQo+ID4+Pj4+PiBUaGFua3MgZm9yIGNoZWNraW5nIG15IGNvbW1lbnRzLCBQ ZXRlLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+PiBPciBpcyB0aGUgIm9uZSBtb3JlIiB0aGUgaXNzdWUs IG1lYW5pbmcgdGhhdCBpdCB3b3VsZCBnZXQNCj4gPj4+Pj4+PiBzaWduYWxlZCBtb3JlIHRoYW4g b25jZT8NCj4gPj4+Pj4+IFtTdW5ueV0gWWVhaCwgaXQgd291bGQgZ2V0IHNpZ25hbGVkIG1vcmUg dGhhbiBvbmNlIGlmIHRoZQ0KPiA+Pj4+Pj4gUGxhdGZvcm1SZWNvdmVyeSBvcHRpb24gKGEgVUVG SSBhcHBsaWNhdGlvbikgY2FsbHMNCj4gPj4+Pj4+IEVmaUJvb3RNYW5hZ2VyQm9vdCgpIHRvIGxh dW5jaCB0aGUgcmVjb3ZlcmVkIGJvb3Qgb3B0aW9uIGluc2lkZQ0KPiA+Pj4+Pj4gb2YgdGhlIGFw cGxpY2F0aW9uLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBPa2F5Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBPbmUg ZWxlbWVudCB0aGF0IEknbSBnb2luZyB0byBwb2ludCBvdXQgaXMgdGhhdCwgd2l0aCB0aGUgY3Vy cmVudA0KPiA+Pj4+PiBFREsyIGNvZGUgKGkuZS4gd2l0aG91dCB0aGlzIHByb3Bvc2FsIGFwcGxp ZWQpLCBhbmQgYWZ0ZXIgYSB1c2VyDQo+ID4+Pj4+IGdvZXMgaW50byB0aGUgc2V0dXAgdG8gc2F2 ZSB0aGVpciBib290IG9wdGlvbnMgaW4gb3JkZXIgZm9yDQo+ID4+Pj4+IHJlZ3VsYXIgYm9vdCBv cHRpb25zIHRvIGdldCBleGVjdXRlZCBpbnN0ZWFkIG9mIFBsYWZvcm1SZWNvdmVyeSwNCj4gPj4+ Pj4gdGhlIE9uUmVhZHlUb0Jvb3QgZXZlbnQgaXMgYWN0dWFsbHkgY2FsbGVkIHR3aWNlLg0KPiA+ Pj4+Pg0KPiA+Pj4+PiBTbyBteSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQsIHdoaWxlIHdlIG9mIGNv dXJzZSB3YW50IHRvIGF2b2lkIHRoaXMNCj4gPj4+Pj4gYW5kIGFueSBwYXRjaCBwcm9wb3NhbCBz aG91bGQgYWN0aXZlbHkgdHJ5IHRvIHByZXZlbnQgaXQsIGl0IHNlZW1zDQo+ID4+Pj4+IHdlIGFs cmVhZHkgaGF2ZSBiZWhhdmlvdXIgaW4gRURLMiB0aGF0IGNhbiBsZWFkIHRvIE9uUmVhZHlUb0Jv b3QNCj4gPj4+Pj4gYmVpbmcgc2lnbmFsbGVkIG1vcmUgdGhhbiBvbmNlLg0KPiA+Pj4+Pg0KPiA+ Pj4+PiBBdCBsZWFzdCB0aGUgY3VycmVudCBQaSA0IHBsYXRmb3JtIGRvZXMgZGVtb25zdHJhdGUg dGhpcyBiZWhhdmlvdXIuDQo+ID4+Pj4+IEZvciBpbnN0YW5jZSwgaWYgeW91IHJ1biBERUJVRywg eW91IHdpbGwgc2VlIHR3byBpbnN0YW5jZXMgb2Y6DQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICAgIFJl bW92ZUR0U3Rkb3V0UGF0aDogY291bGQgbm90IHJldHJpZXZlIERUIGJsb2IgLSBOb3QgRm91bmQN Cj4gPj4+Pj4NCj4gPj4+Pj4gd2hpY2ggaXMgYSBvbmUtaW5zdGFuY2UgbWVzc2FnZSBnZW5lcmF0 ZWQgZnJvbSB0aGUNCj4gPj4+Pj4gQ29uc29sZVByZWZEeGUncw0KPiA+Pj4+PiBPblJlYWR5VG9C b290KCkgY2FsbC4gSSd2ZSBhbHNvIGNvbmZpcm1lZCBtb3JlIHNwZWNpZmljYWxseSB0aGF0DQo+ ID4+Pj4+IE9uUmVhZHlUb0Jvb3QoKSBpcyBpbmRlZWQgY2FsbGVkIHR3aWNlLg0KPiA+Pj4+Pg0K PiA+Pj4+PiBJIGRvbid0IHJlY2FsbCB1cyBkb2luZyBtdWNoIG9mIGFueSBzcGVjaWFsIHdpdGgg cmVnYXJkcyB0byBib290DQo+ID4+Pj4+IG9wdGlvbnMgZm9yIHRoZSBQaSBwbGF0Zm9ybSwgc28g bXkgZ3Vlc3MgaXMgdGhhdCBpdCdzIHByb2JhYmx5IG5vdA0KPiA+Pj4+PiB0aGUgb25seSBwbGF0 Zm9ybSB3aGVyZSBPblJlYWR5VG9Cb290IG1pZ2h0IGJlIHNpZ25hbGxlZCBtb3JlDQo+IHRoYW4N Cj4gPj4+Pj4gb25jZSwgYW5kIHRoYXQgdGhpcyBtaWdodCBiZSB0aWVkIHRvIGEgZGVmYXVsdCBF REsyIGJlaGF2aW91ci4NCj4gPj4+Pj4gVGhlcmVmb3JlIEkgZG9uJ3Qgc2VlIGhhdmluZyBhIHJl cGVhdGVkIGV2ZW50IGFzIGEgbWFqb3IgZGVhbA0KPiA+Pj4+PiBicmVha2VyICh0aG91Z2gsIGFn YWluLCBpZiB3ZSBjYW4gYXZvaWQgdGhhdCwgd2Ugb2YgY291cnNlIHdpbGwNCj4gPj4+Pj4gd2Fu dCB0bykuDQo+ID4+Pj4+DQo+ID4+Pj4+Pj4gSSBkb24ndCBtaW5kIHRyeWluZyBhbiBhbHRlcm5h dGl2ZSBhcHByb2FjaCwgYnV0IEkgZG9uJ3QNCj4gPj4+Pj4+PiB1bmRlcnN0YW5kIGhvdyB3aGF0 IHlvdSBkZXNjcmliZSB3b3VsZCBoZWxwLiBDYW4geW91IHBsZWFzZSBiZQ0KPiA+Pj4+Pj4+IG1v cmUgc3BlY2lmaWMgYWJvdXQgd2hhdCB5b3UgaGF2ZSBpbiBtaW5kPw0KPiA+Pj4+Pj4gW1N1bm55 XSBTdXJlLiBJIGFkZGVkIG1vcmUgaW5mb3JtYXRpb24gYmVsb3cuIElmIGl0IGlzIHN0aWxsIG5v dA0KPiA+Pj4+Pj4gY2xlYXIgZW5vdWdoLCBmZWVsIGZyZWUgdG8gbGV0IG1lIGtub3cuDQo+ID4+ Pj4+PiAgICAgICAgICAxLiBDcmVhdGUgYSBVRUZJIGFwcGxpY2F0aW9uIHdpdGggdGhlIGNvZGUg dG8gc2lnbmFsDQo+ID4+Pj4+PiBSZWFkeVRvQm9vdCBhbmQgcGljayAvZWZpL2Jvb3QvYm9vdGFh NjQuZWZpIGZyb20gZWl0aGVyIFNEIG9yIFVTQg0KPiA+Pj4+Pj4gYW5kIHJ1biBpdC4NCj4gPj4+ Pj4NCj4gPj4+Pj4gU28gdGhhdCB3b3VsZCBiYXNpY2FsbHkgYmUgYWRkaW5nIGNvZGUgdGhhdCBk dXBsaWNhdGVzLCBpbiBwYXJ0LA0KPiA+Pj4+PiB3aGF0IFBsYXRmb3JtIFJlY292ZXJ5IGFscmVh ZHkgZG9lcy4NCj4gPj4+Pj4NCj4gPj4+Pj4gSSBoYXZlIHRvIGJlIGhvbmVzdDogRXZlbiBvdXRz aWRlIG9mIHRoZSBleHRyYSB3b3JrIHRoaXMgd291bGQNCj4gPj4+Pj4gcmVxdWlyZSwgSSBkb24n dCByZWFsbHkgbGlrZSB0aGUgaWRlYSBvZiBoYXZpbmcgdG8gd3JpdGUgb3VyIG93bg0KPiA+Pj4+ PiBhcHBsaWNhdGlvbiwgYXMgaXQgd2lsbCBpbnRyb2R1Y2UgbmV3IHBvc3NpYmxlIHBvaW50cyBv ZiBmYWlsdXJlcw0KPiA+Pj4+PiBhbmQgcmVxdWlyZSBleHRyYSBtYWludGVuYW5jZSAoZXNwZWNp YWxseSBhcyB3ZSB3aWxsIHdhbnQgdG8gYmUNCj4gPj4+Pj4gYWJsZSB0byBoYW5kbGUgbmV0d29y ayBib290IGFuZCBvdGhlciBvcHRpb25zLCBhbmQgYmVmb3JlIGxvbmcsIEkNCj4gPj4+Pj4gZmVh ciB0aGF0IHdlJ3JlIGdvaW5nIHRvIGhhdmUgdG8gd3JpdGUgb3VyIG93biBQaSBzcGVjaWZpYyBi b290DQo+ID4+Pj4+IG1hbmFnZXIpLiBEb2luZyBzbyBzaW1wbHkgYmVjYXVzZSB0aGUgY3VycmVu dCBQbGF0Zm9ybSBSZWNvdmVyeSwNCj4gPj4+Pj4gd2hpY2ggZG9lcyBzdWl0IG91ciBuZWVkcyBv dGhlcndpc2UsIGlzIG5vdCBkZXNpZ25lZCB0byBjYWxsDQo+ID4+Pj4+IFJlYWR5VG9Cb290IGRv ZXMgbm90IHNlZW0gbGlrZSB0aGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uIGluIG15DQo+ID4+Pj4+ IGJvb2suDQo+ID4+Pj4+DQo+ID4+Pj4+IEluc3RlYWQsIEkgc3RpbGwgbG9naWNhbGx5IGJlbGll dmUgdGhhdCBhbnkgb3B0aW9uIHRoYXQgY2FsbHMgYQ0KPiA+Pj4+PiBib290IGxvYWRlciBzaG91 bGQgc2lnbmFsIFJlYWR5VG9Cb290LCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQNCj4gPj4+Pj4g d2FzIGxhdW5jaGVkIGZyb20gQm9vdCBNYW5hZ2VyIG9yIFBsYXRmb3JtIFJlY292ZXJ5LCBhbmQg dGhhdCBpdA0KPiA+Pj4+PiBzaG91bGRuJ3QgYmUgbGVmdCB0byBlYWNoIHBsYXRmb3JtIHRvIHdv cmsgYXJvdW5kIHRoYXQuDQo+ID4+Pj4+DQo+ID4+Pj4+IE9mIGNvdXJzZSwgSSB1bmRlcnN0YW5k IHRoYXQgdGhpcyB3b3VsZCByZXF1aXJlIGEgc3BlY3MgY2hhbmdlLA0KPiA+Pj4+PiBhbmQgdGhh dCBpdCBhbHNvIG1heSBoYXZlIHJhbWlmaWNhdGlvbnMgZm9yIGV4aXN0aW5nIHBsYXRmb3Jtcw0K PiA+Pj4+PiB0aGF0IGludGVycHJldCB0aGUgY3VycmVudCBzcGVjcyBwZWRhbnRpY2FsbHkuIEJ1 dCB0byBtZSwNCj4gPj4+Pj4gcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBzcGVjcyBhcHBlYXIgdG8g YmUgbGltaXRpbmcgaXQgdG8gcmlnaHQNCj4gPj4+Pj4gbm93LCB0aGUgbG9naWMgb2YgYSAiUmVh ZHlUb0Jvb3QiDQo+ID4+Pj4+IGV2ZW50IGlzIHRoYXQgaXQgc2hvdWxkIGJlIHNpZ25hbGxlZCB3 aGVuZXZlciBhIGJvb3Rsb2FkZXIgaXMNCj4gPj4+Pj4gYWJvdXQgdG8gYmUgZXhlY3V0ZWQsIHJh dGhlciB0aGFuIG9ubHkgd2hlbiBhIGJvb3Rsb2FkZXIgaGFwcGVuZWQNCj4gPj4+Pj4gdG8gYmUg bGF1bmNoZWQgdGhyb3VnaCBhIGZvcm1hbCBCb290IE1hbmFnZXIgb3B0aW9uLg0KPiA+Pj4+Pg0K PiA+Pj4+PiBJIHdvdWxkIHRoZXJlZm9yZSBhcHByZWNpYXRlIGlmIG90aGVyIHBlb3BsZSBjb3Vs ZCB3ZWlnaCBpbiBvbg0KPiA+Pj4+PiB0aGlzIG1hdHRlciwgdG8gc2VlIGlmIEknbSB0aGUgb25s eSBvbmUgd2hvIGJlbGlldmVzIHRoYXQgd2UgY291bGQNCj4gPj4+Pj4gdWx0aW1hdGVseSBoYXZl IG1vcmUgdG8gZ2FpbiBmcm9tIHNpZ25hbGxpbmcgUmVhZHlUb0Jvb3Qgd2l0aA0KPiA+Pj4+PiBQ bGF0Zm9ybVJlY292ZXJ5IG9wdGlvbnMgdGhhbiBsZWF2aW5nIHRoaW5ncyBhcyB0aGV5IHN0YW5k IHJpZ2h0DQo+ID4+Pj4+IG5vdy4uLg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gICAgICAgICAgMi4gVGhl biwgY2FsbCBFZmlCb290TWFuYWdlckluaXRpYWxpemVMb2FkT3B0aW9uIGxpa2UNCj4gPj4+Pj4+ IHRoZSBmb2xsb3dpbmcgaW4gYSBEWEUgZHJpdmVyIG9yIG90aGVyIHBsYWNlcyBiZWZvcmUgIkRl ZmF1bHQNCj4gPj4+Pj4+IFBsYXRmb3JtUmVjb3ZlcnkiIHJlZ2lzdHJhdGlvbjoNCj4gPj4+Pj4+ ICAgICAgIFN0YXR1cyA9IEVmaUJvb3RNYW5hZ2VySW5pdGlhbGl6ZUxvYWRPcHRpb24gKA0KPiA+ Pj4+Pj4gICAgICAgICAgICAgICAgICAmTG9hZE9wdGlvbiwNCj4gPj4+Pj4+DQo+ID4+Pj4+PiAw LA0KPiA+Pj4+Pj4gLT4gMCBpcyB0aGUgT3B0aW9uTnVtYmVyIHRvIGxldCBhcHBsaWNhdGlvbiBi ZSBsb2FkIGJlZm9yZSAiDQo+ID4+Pj4+PiBEZWZhdWx0IFBsYXRmb3JtUmVjb3ZlcnkiIG9wdGlv bg0KPiA+Pj4+Pj4gICAgICAgICAgICAgICAgICBMb2FkT3B0aW9uVHlwZVBsYXRmb3JtUmVjb3Zl cnksDQo+ID4+Pj4+PiAgICAgICAgICAgICAgICAgIExPQURfT1BUSU9OX0FDVElWRSwNCj4gPj4+ Pj4+ICAgICAgICAgICAgICAgICAgTCJBcHBsaWNhdGlvbiBmb3IgcmVjb3ZlcmluZyBib290IG9w dGlvbnMiLA0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEZpbGVQYXRoLA0KPiA+Pj4+Pj4gLT4gRmlsZVBh dGggaXMgdGhlIEFwcGxpY2F0aW9uJ3MgZGV2aWNlIHBhdGgsDQo+ID4+Pj4+PiAgICAgICAgICAg ICAgICAgIE5VTEwsDQo+ID4+Pj4+PiAgICAgICAgICAgICAgICAgIDANCj4gPj4+Pj4+ICAgICAg ICAgICAgICAgICAgKTsNCj4gPj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+IE15IHJlYXNvbmlu ZyBpcyB0aGF0LCBpZiBQbGF0Zm9ybVJlY292ZXJ5IyMjIyBjYW4gZXhlY3V0ZSBhDQo+ID4+Pj4+ Pj4gcmVndWxhciBib290bG9hZGVyIGxpa2UgL2VmaS9ib290L2Jvb3QjIyMjLmVmaSBmcm9tIGlu c3RhbGxhdGlvbg0KPiA+Pj4+Pj4+IG1lZGlhLCB0aGVuIGl0IHNob3VsZCBnbyB0aHJvdWdoIHRo ZSBzYW1lIGtpbmQgb2YgaW5pdGlhbGl6YXRpb24NCj4gPj4+Pj4+PiB0aGF0IGhhcHBlbnMgZm9y IGEgcmVndWxhciBib290IG9wdGlvbiwgYW5kIHRoYXQgc2hvdWxkIGluY2x1ZGUNCj4gPj4+Pj4+ PiBzaWduYWxpbmcgdGhlIFJlYWR5VG9Cb290IGV2ZW50Lg0KPiA+Pj4+Pj4gW1N1bm55XSBUaGFu a3MgZm9yIGNsYXJpZnlpbmcgdGhpcywgYW5kIFNvcnJ5IGFib3V0IHRoYXQgSSBtaXNzZWQNCj4g Pj4+Pj4+IHlvdXIgY292ZXIgbGV0dGVyIGZvciB0aGlzIHBhdGNoLiAgSSB3YXMganVzdCB0aGlu a2luZyB0aGF0IHdlDQo+ID4+Pj4+PiBtYXkgbm90IHJlYWxseSBuZWVkIHRvIG1ha2UgdGhpcyBi ZWhhdmlvciBjaGFuZ2UgaW4gYm90aCBFREsgSUkNCj4gPj4+Pj4+IGNvZGUgYW5kIFVFRkkgc3Bl Y2lmaWNhdGlvbiBmb3Igc29sdmluZyB0aGUgcHJvYmxlbSBzcGVjaWZpYyB0bw0KPiA+Pj4+Pj4g dGhlIGNhc2UgdGhhdCBPUyBpcyBsb2FkZWQgYnkgIkRlZmF1bHQgUGxhdGZvcm1SZWNvdmVyeSIg b3B0aW9uLA0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGUgd2F5IEkgc2VlIGl0IGlzIHRoYXQgdGhlIFBp IHBsYXRmb3JtIGlzIHVubGlrZWx5IHRvIGJlIHRoZQ0KPiA+Pj4+PiBvbmx5IG9uZSB3aGVyZSBQ bGF0Zm9ybVJlY292ZXJ5IGlzIHNlZW4gYXMgYSBtZWFucyB0byBpbnN0YWxsIGFuIE9TLg0KPiA+ Pj4+PiBHcmFudGVkLCB0aGlzIG1heSBzZWVtIGxpa2UgYWJ1c2luZyB0aGUgb3B0aW9uLCBidXQg c2luY2UgVUVGSQ0KPiA+Pj4+PiBkb2Vzbid0IHByb3ZpZGUgYW4gIkluaXRpYWwgT1MgSW5zdGFs bCIgbW9kZSwgSSB3b3VsZCBhc3NlcnQgdGhhdA0KPiA+Pj4+PiBpdCBhcyBnb29kIGEgdXNlIG9m IHRoaXMgb3B0aW9uIGFzIGFueS4NCj4gPj4+Pj4NCj4gPj4+Pj4gSW4gb3RoZXIgd29yZHMsIEkg ZG9uJ3QgdGhpbmsgdGhpcyBpbXByb3ZlbWVudCB3b3VsZCBvbmx5IGJlbmVmaXQNCj4gPj4+Pj4g dGhlIFBpIHBsYXRmb3JtLg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gYW5kIEknbSBhbHNvIG5vdCBzdXJl IGlmIGl0IGlzIHdvcnRoIG1ha2luZyB0aGlzIGNoYW5nZSB0byBhZmZlY3QNCj4gPj4+Pj4+IHNv bWUgb2YgdGhlIHN5c3RlbSBvciBCSU9TIHZlbmRvcnMgd2hvIGhhdmUgaW1wbGVtZW50ZWQgdGhl aXINCj4gPj4+Pj4+IFBsYXRmb3JtUmVjb3Zlcnkgb3B0aW9uLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBU aGF0J3MgYSBsZWdpdGltYXRlIGNvbmNlcm4sIGFuZCBJIHdvdWxkIGFncmVlIHRoZSBvbmUgbWFq b3INCj4gPj4+Pj4gcG90ZW50aWFsIHBpdGZhbGwgb2YgdGhpcyBwcm9wb3NhbCwgaWYgdGhlcmUg aGFwcGVucyB0byBleGlzdCBhDQo+ID4+Pj4+IHN5c3RlbSB3aGVyZSBhbiBPblJlYWR5VG9Cb290 IGV2ZW4gYmVmb3JlIHJ1bm5pbmcgdGhlIHJlY292ZXJ5DQo+ID4+Pj4+IG9wdGlvbiBjYW4gaGF2 ZSBhZHZlcnNlIGVmZmVjdHMuDQo+ID4+Pj4+DQo+ID4+Pj4+IEkgZG9uJ3QgcmVhbGx5IGJlbGll dmUgdGhhdCBzdWNoIGEgc3lzdGVtIGV4aXN0cywgYmVjYXVzZSBJIGV4cGVjdA0KPiA+Pj4+PiBt b3N0IHJlY292ZXJ5IGJvb3QgbG9hZGVycyB0byBhbHNvIHdvcmsgKG9yIGF0IGxlYXN0IGhhdmUg YmVlbg0KPiA+Pj4+PiBkZXNpZ25lZCB0bw0KPiA+Pj4+PiB3b3JrKSBhcyByZWd1bGFyIGJvb3Qg b3B0aW9ucy4gQnV0IEkgZG9uJ3QgaGF2ZSBlbm91Z2ggZXhwZXJpZW5jZQ0KPiA+Pj4+PiB3aXRo IHBsYXRmb3JtIHJlY292ZXJ5IHRvIGtub3cgaWYgdGhhdCdzIGEgY29ycmVjdCBhc3NlcnRpb24g dG8gbWFrZS4uLg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gSWYgdGhlIGFsdGVybmF0aXZlIGFwcHJvYWNo IEkgbWVudGlvbmVkIHdvcmtzIGZvciB5b3UsIEkgdGhpbmsNCj4gPj4+Pj4+IHRoYXQgd291bGQg YmUgYW4gZWFzaWVyIHNvbHV0aW9uLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBSaWdodCBub3csIGV2ZW4g YXMgdGhlIHBhdGNoIHByb3Bvc2FsIGhhcyBtdWx0aXBsZSBpc3N1ZXMgdGhhdA0KPiA+Pj4+PiBy ZXF1aXJlIGl0IHRvIGJlIGFtZW5kZWQgKERvbid0IHNpZ25hbCBSZWFkeVRvQm9vdCBleGNlcHQg Zm9yDQo+ID4+Pj4+IFBsYXRmb3JtUmVjb3ZlcnkNCj4gPj4+Pj4gKyBQcmV2ZW50IHNpdHVhdGlv bnMgd2hlcmUgUmVhZHlUb0Jvb3QgY291bGQgYmUgc2lnbmFsbGVkIG11bHRpcGxlDQo+ID4+Pj4+ IHRpbWVzKSBJIHN0aWxsIHNlZSBpdCBhcyBib3RoIGFuIGVhc2llciBzb2x1dGlvbiB0aGFuIHRo ZQ0KPiA+Pj4+PiBhbHRlcm5hdGl2ZSwgYXMgd2VsbCBhcyBvbmUgdGhhdCAqc2hvdWxkKiBiZW5l Zml0IHBlb3BsZSB3aG8NCj4gPj4+Pj4gZGVzaWduIFBsYXRmb3JtIFJlY292ZXJ5IFVFRkkgYXBw bGljYXRpb25zIGluIHRoZSBsb25nIHJ1bi4gU28NCj4gPj4+Pj4gdGhhdCBpcyB3aHkgSSBhbSBz dGlsbCB0cnlpbmcgdG8gYWR2b2NhdGUgZm9yIGl0Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBCdXQgSSB2 ZXJ5IG11Y2ggaGVhciB5b3VyIGNvbmNlcm5zLCBhbmQgSSBhZ3JlZSB0aGF0IHNwZWNzIGNoYW5n ZXMNCj4gPj4+Pj4gYXJlIGJldHRlciBhdm9pZGVkIHdoZW4gcG9zc2libGUuDQo+ID4+Pj4+DQo+ ID4+Pj4+IFRodXMsIGF0IHRoaXMgc3RhZ2UsIGV2ZW4gYXMgSSBkb24ndCB3YW50IHRvIGRyYWcg dGhpcyBkaXNjdXNzaW9uDQo+ID4+Pj4+IG11Y2ggZnVydGhlciwgSSBkb24ndCBmZWVsIGxpa2Ug SSB3YW50IHRvIGNvbW1pdCB0byBvbmUgc29sdXRpb24NCj4gPj4+Pj4gb3IgdGhlIG90aGVyIGJl Zm9yZSB3ZSBoYXZlIGhhZCBhIGNoYW5jZSB0byBoZWFyIG90aGVyIHBlb3BsZSwgd2hvDQo+ID4+ Pj4+IG1heSBoYXZlIHRoZWlyIG93biBvcGluaW9uIG9uIHRoZSBtYXR0ZXIsIGV4cHJlc3MgdGhl aXIgdmlld3MuDQo+ID4+Pj4+DQo+ID4+Pj4+IFJlZ2FyZHMsDQo+ID4+Pj4+DQo+ID4+Pj4+IC9Q ZXRlDQo+ID4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gUmVnYXJkcywNCj4gPj4+ Pj4+IFN1bm55IFdhbmcNCj4gPj4+Pj4+DQo+ID4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+Pj4+Pj4gRnJvbTogUGV0ZSBCYXRhcmQgW21haWx0bzpwZXRlQGFrZW8uaWVdDQo+ ID4+Pj4+PiBTZW50OiBXZWRuZXNkYXksIEp1bmUgMTcsIDIwMjAgNjo1OSBQTQ0KPiA+Pj4+Pj4g VG86IFdhbmcsIFN1bm55IChIUFMgU1cpIDxtYWlsdG86c3Vubnl3YW5nQGhwZS5jb20+Ow0KPiA+ Pj4+Pj4gbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4+Pj4+PiBDYzogbWFpbHRvOnpo aWNoYW8uZ2FvQGludGVsLmNvbTsgbWFpbHRvOnJheS5uaUBpbnRlbC5jb207DQo+ID4+Pj4+PiBt YWlsdG86YXJkLmJpZXNoZXV2ZWxAYXJtLmNvbTsgbWFpbHRvOmxlaWZAbnV2aWFpbmMuY29tDQo+ ID4+Pj4+PiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtlZGsyXVtQQVRDSCAxLzFdDQo+ID4+ Pj4+PiBNZGVNb2R1bGVQa2cvVWVmaUJvb3RNYW5hZ2VyTGliOiBTaWduYWwgUmVhZHlUb0Jvb3Qg b24NCj4gcGxhdGZvcm0NCj4gPj4+Pj4+IHJlY292ZXJ5DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSGkg U3VubnksIHRoYW5rcyBmb3IgbG9va2luZyBpbnRvIHRoaXMuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4g T24gMjAyMC4wNi4xNyAwOToxNiwgV2FuZywgU3VubnkgKEhQUyBTVykgd3JvdGU6DQo+ID4+Pj4+ Pj4gSGkgUGV0ZS4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IFNpbmNlIHRoZSBFZmlCb290TWFuYWdl clByb2Nlc3NMb2FkT3B0aW9uIGlzIGNhbGxlZCBieQ0KPiA+Pj4+Pj4+IFByb2Nlc3NMb2FkT3B0 aW9ucyBhcyB3ZWxsLCB5b3VyIGNoYW5nZSB3b3VsZCBhbHNvIGNhdXNlIHNvbWUNCj4gPj4+Pj4+ PiB1bmV4cGVjdGVkIGJlaGF2aW9yIGxpa2U6DQo+ID4+Pj4+Pj4gMS4gU2lnbmFsIG9uZSBtb3Jl IFJlYWR5VG9Cb290IGZvciB0aGUgUGxhdGZvcm1SZWNvdmVyeSBvcHRpb24NCj4gPj4+Pj4+PiB3 aGljaCBpcyBhbiBhcHBsaWNhdGlvbiB0aGF0IGNhbGxzIEVmaUJvb3RNYW5hZ2VyQm9vdCgpIHRv DQo+ID4+Pj4+Pj4gbGF1bmNoIGl0cyByZWNvdmVyZWQgYm9vdCBvcHRpb24uDQo+ID4+Pj4+Pg0K PiA+Pj4+Pj4gSSdtIG5vdCBzdXJlIEkgdW5kZXJzdGFuZCBob3cgdGhpcyBwYXJ0IGlzIHVud2Fu dGVkLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFRoZSBwb2ludCBvZiB0aGlzIHBhdGNoIGlzIHRvIGVu c3VyZSB0aGF0IFJlYWR5VG9Cb290IGlzDQo+ID4+Pj4+PiBzaWduYWxsZWQgZm9yIHRoZSBQbGF0 Zm9ybVJlY292ZXJ5IG9wdGlvbiwgc28gaXNuJ3Qgd2hhdCB5b3UNCj4gPj4+Pj4+IGRlc2NyaWJl IGFib3ZlIGV4YWN0bHkgd2hhdCB3ZSB3YW50Pw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IE9yIGlzIHRo ZSAib25lIG1vcmUiIHRoZSBpc3N1ZSwgbWVhbmluZyB0aGF0IGl0IHdvdWxkIGdldA0KPiA+Pj4+ Pj4gc2lnbmFsbGVkIG1vcmUgdGhhbiBvbmNlPw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4+ Pj4gMi4gU2lnbmFsIFJlYWR5VG9Cb290IGZvciBTeXNQcmVwIyMjIyBvciBEcml2ZXIjIyMjIHRo YXQgaXMgbm90DQo+ID4+Pj4+Pj4gcmVhbGx5IGEgImJvb3QiIG9wdGlvbi4NCj4gPj4+Pj4+DQo+ ID4+Pj4+PiBZZXMsIEkndmUgYmVlbiB3b25kZXJpbmcgYWJvdXQgdGhhdCwgYmVjYXVzZSBCZHNF bnRyeS5jJ3MNCj4gPj4+Pj4+IFByb2Nlc3NMb2FkT3B0aW9ucygpLCB3aGljaCBjYWxscw0KPiA+ Pj4+Pj4gRWZpQm9vdE1hbmFnZXJQcm9jZXNzTG9hZE9wdGlvbigpLA0KPiA+Pj4+Pj4gbWVudGlv bnMgdGhhdCBpdCB3aWxsIGxvYWQgd2lsbCBsb2FkIGFuZCBzdGFydCBldmVyeSBEcml2ZXIjIyMj LA0KPiA+Pj4+Pj4gU3lzUHJlcCMjIyMgb3IgUGxhdGZvcm1SZWNvdmVyeSMjIyMuIEJ1dCB0aGUg Y29tbWVudCBhYm91dCB0aGUNCj4gPj4+Pj4+IHdoaWxlKCkgbG9vcCBpbiBFZmlCb290TWFuYWdl clByb2Nlc3NMb2FkT3B0aW9uKCkgb25seSBtZW50aW9ucw0KPiA+Pj4+Pj4gUGxhdGZvcm1SZWNv dmVyeSMjIyMuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSWYgbmVlZGVkLCBJIGd1ZXNzIHdlIGNvdWxk IGFtZW5kIHRoZSBwYXRjaCB0byBkZXRlY3QgdGhlIHR5cGUgb2YNCj4gPj4+Pj4+IG9wdGlvbiBh bmQgb25seSBzaWduYWwgUmVhZHlUb0Jvb3QgZm9yIFBsYXRmb3JtUmVjb3ZlcnkjIyMjLg0KPiA+ Pj4+Pj4NCj4gPj4+Pj4+PiBUbyBzb2x2ZSB5b3VyIHByb2JsZW0sIGNyZWF0aW5nIGEgUGxhdGZv cm1SZWNvdmVyeSBvcHRpb24gd2l0aA0KPiA+Pj4+Pj4+IHRoZSBzbWFsbGVzdCBvcHRpb24gbnVt YmVyIGFuZCB1c2luZyBpdCBpbnN0ZWFkIG9mIGRlZmF1bHQgb25lDQo+ID4+Pj4+Pj4gKHdpdGgg c2hvcnQtZm9ybSBGaWxlIFBhdGggTWVkaWEgRGV2aWNlIFBhdGgpIGxvb2tzIGxpa2UgYQ0KPiA+ Pj4+Pj4+IHNpbXBsZXIgc29sdXRpb24uDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSSBkb24ndCBtaW5k IHRyeWluZyBhbiBhbHRlcm5hdGl2ZSBhcHByb2FjaCwgYnV0IEkgZG9uJ3QNCj4gPj4+Pj4+IHVu ZGVyc3RhbmQgaG93IHdoYXQgeW91IGRlc2NyaWJlIHdvdWxkIGhlbHAuIENhbiB5b3UgcGxlYXNl IGJlDQo+ID4+Pj4+PiBtb3JlIHNwZWNpZmljIGFib3V0IHdoYXQgeW91IGhhdmUgaW4gbWluZD8N Cj4gPj4+Pj4+DQo+ID4+Pj4+PiBPdXIgbWFpbiBpc3N1ZSBoZXJlIGlzIHRoYXQgd2UgbXVzdCBo YXZlIFJlYWR5VG9Cb290IHNpZ25hbGxlZCBzbw0KPiA+Pj4+Pj4gdGhhdCB0aGUgUmVhZHlUb0Jv b3QoKSBmdW5jdGlvbiBjYWxsYmFjayBmcm9tDQo+ID4+Pj4+PiBFbWJlZGRlZFBrZy9Ecml2ZXJz L0NvbnNvbGVQcmVmRHhlIGdldHMgZXhlY3V0ZWQgaW4gb3JkZXIgZm9yDQo+IHRoZQ0KPiA+Pj4+ Pj4gYm9vdCBsb2FkZXIgaW52b2tlZCBmcm9tIFBsYXRmb3JtUmVjb3ZlcnkjIyMjICB0byB1c2Ug YSBwcm9wZXJseQ0KPiA+Pj4+Pj4gaW5pdGlhbGl6ZWQgZ3JhcGhpY2FsIGNvbnNvbGUuIFNvIEkn bSBub3Qgc3VyZSBJIHF1aXRlIGdldCBob3cNCj4gPj4+Pj4+IHN3aXRjaGluZyBmcm9tIG9uZSBQ bGF0Zm9ybVJlY292ZXJ5IyMjIyBvcHRpb24gdG8gYW5vdGhlciB3b3VsZA0KPiA+Pj4+Pj4gaW1w cm92ZSB0aGluZ3MuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSWYgaXQgaGVscHMsIGhlcmUgaXMgd2hh dCB3ZSBjdXJyZW50bHkgZGVmYXVsdCB0bywgaW4gdGVybXMgb2YNCj4gPj4+Pj4+IGJvb3Qgb3B0 aW9ucywgb24gYSBSYXNwYmVycnkgUGkgNCBwbGF0Zm9ybSB3aXRoIGEgbmV3bHkgYnVpbGQNCj4g ZmlybXdhcmU6DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gW0Jkc109PT09PT09PT09PT09QmVnaW4gTG9h ZCBPcHRpb25zIER1bXBpbmcNCj4gLi4uPT09PT09PT09PT09PQ0KPiA+Pj4+Pj4gICAgICAgIERy aXZlciBPcHRpb25zOg0KPiA+Pj4+Pj4gICAgICAgIFN5c1ByZXAgT3B0aW9uczoNCj4gPj4+Pj4+ ICAgICAgICBCb290IE9wdGlvbnM6DQo+ID4+Pj4+PiAgICAgICAgICBCb290MDAwMDogVWlBcHAg ICAgICAgICAgICAgIDB4MDEwOQ0KPiA+Pj4+Pj4gICAgICAgICAgQm9vdDAwMDE6IFVFRkkgU2hl bGwgICAgICAgICAgICAgICAgIDB4MDAwMA0KPiA+Pj4+Pj4gICAgICAgIFBsYXRmb3JtUmVjb3Zl cnkgT3B0aW9uczoNCj4gPj4+Pj4+ICAgICAgICAgIFBsYXRmb3JtUmVjb3ZlcnkwMDAwOiBEZWZh dWx0IFBsYXRmb3JtUmVjb3ZlcnkNCj4gPj4+Pj4+IDB4MDAwMSBbQmRzXT09PT09PT09PT09PT1F bmQgTG9hZCBPcHRpb25zDQo+IER1bXBpbmc9PT09PT09PT09PT09DQo+ID4+Pj4+Pg0KPiA+Pj4+ Pj4gV2l0aCB0aGlzLCBQbGF0Zm9ybVJlY292ZXJ5MDAwMCBnZXRzIGV4ZWN1dGVkIGJ5IGRlZmF1 bHQsIHdoaWNoDQo+ID4+Pj4+PiBpcyB3aGF0IHdlIHdhbnQsIHNpbmNlIGl0IHdpbGwgcGljayAv ZWZpL2Jvb3QvYm9vdGFhNjQuZWZpIGZyb20NCj4gPj4+Pj4+IGVpdGhlciBTRCBvciBVU0IgYW5k IHJ1biBpdCwgdGhlIG9ubHkgaXNzdWUgYmVpbmcgdGhhdCwgYmVjYXVzZQ0KPiA+Pj4+Pj4gUmVh ZHlUb0Jvb3QgaGFzIG5vdCBiZWVuIGV4ZWN1dGVkLCB0aGUgZ3JhcGhpY2FsIGNvbnNvbGUgaXMg bm90DQo+ID4+Pj4+PiBvcGVyYXRpdmUgc28gdXNlcnMgY2FuJ3QgaW50ZXJhY3Qgd2l0aCB0aGUg T1MgaW5zdGFsbGVyLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFNvIEknbSByZWFsbHkgbm90IHN1cmUg aG93IGFkZGluZyBhbiBleHRyYSBQbGF0Zm9ybVJlY292ZXJ5IyMjIw0KPiA+Pj4+Pj4gd291bGQg aGVscC4gQW5kIEknbSBhbHNvIG5vdCB0b28gZmFtaWxpYXIgd2l0aCBob3cgb25lIHdvdWxkIGdv DQo+ID4+Pj4+PiBhcm91bmQgdG8gYWRkIHN1Y2ggYW4gZW50cnkuLi4NCj4gPj4+Pj4+DQo+ID4+ Pj4+Pj4gQnkgdGhlIHdheSwgSSBhbHNvIGNoZWNrZWQgdGhlIFVFRkkgc3BlY2lmaWNhdGlvbi4g SXQgbG9va3MNCj4gPj4+Pj4+PiBtYWtpbmcgc2Vuc2UgdG8gb25seSBzaWduYWwgUmVhZHlUb0Jv b3QgZm9yIGJvb3Qgb3B0aW9uDQo+IChCb290IyMjIykuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gVGhh dCdzIHNvbWV0aGluZyBJIGNvbnNpZGVyZWQgdG9vLCBidXQgSSBkaXNhZ3JlZSB3aXRoIHRoaXMN Cj4gPj4+Pj4+IGNvbmNsdXNpb24uDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gTXkgcmVhc29uaW5nIGlz IHRoYXQsIGlmIFBsYXRmb3JtUmVjb3ZlcnkjIyMjIGNhbiBleGVjdXRlIGENCj4gPj4+Pj4+IHJl Z3VsYXIgYm9vdGxvYWRlciBsaWtlIC9lZmkvYm9vdC9ib290IyMjIy5lZmkgZnJvbSBpbnN0YWxs YXRpb24NCj4gPj4+Pj4+IG1lZGlhLCB0aGVuIGl0IHNob3VsZCBnbyB0aHJvdWdoIHRoZSBzYW1l IGtpbmQgb2YgaW5pdGlhbGl6YXRpb24NCj4gPj4+Pj4+IHRoYXQgaGFwcGVucyBmb3IgYSByZWd1 bGFyIGJvb3Qgb3B0aW9uLCBhbmQgdGhhdCBzaG91bGQgaW5jbHVkZQ0KPiA+Pj4+Pj4gc2lnbmFs bGluZyB0aGUgUmVhZHlUb0Jvb3QgZXZlbnQuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSWYgdGhlcmUg d2FzIGEgc3BlY2lhbCBib290bG9hZGVyIGZvciBQbGF0Zm9ybVJlY292ZXJ5IyMjIyAoZS5nLg0K PiA+Pj4+Pj4gL2VmaS9ib290L3JlY292ZXJ5IyMjIy5lZmkpIHRoZW4gSSB3b3VsZCBhZ3JlZSB3 aXRoIG9ubHkNCj4gPj4+Pj4+IHNpZ25hbGxpbmcgUmVhZHlUb0Jvb3QgZm9yIGEgZm9ybWFsIEJv b3QjIyMjIG9wdGlvbi4gQnV0IHRoYXQNCj4gPj4+Pj4+IGlzbid0IHRoZSBjYXNlLCBzbyBJIHRo aW5rIGl0IGlzIHJlYXNvbmFibGUgdG8gd2FudCB0byBoYXZlDQo+ID4+Pj4+PiBSZWFkeVRvQm9v dCBhbHNvIG9jY3VyIHdoZW4gYSAvZWZpL2Jvb3QvYm9vdCMjIyMuZWZpIGJvb3Rsb2FkZXINCj4g Pj4+Pj4+IGlzIGV4ZWN1dGVkIGZyb20gUGxhdGZvcm1SZWNvdmVyeSMjIyMuLCBlc3BlY2lhbGx5 IHdoZW4gd2Uga25vdw0KPiA+Pj4+Pj4gaXQgY2FuIGJlIGNydWNpYWwgdG8gZW5zdXJpbmcgdGhh dCB0aGUgZW5kIHVzZXIgY2FuIGFjdHVhbGx5IHVzZSB0aGUNCj4gZ3JhcGhpY2FsIGNvbnNvbGUu DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4+IFRoZXJlZm9yZSwgeW91ciBjaGFuZ2UgbWF5IGFsc28gcmVx dWlyZSBzcGVjaWZpY2F0aW9uIGNoYW5nZS4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBZZXMsIEkgbWVu dGlvbmVkIHRoYXQgaW4gdGhlIGNvdmVyIGxldHRlciBmb3IgdGhpcyBwYXRjaA0KPiA+Pj4+Pj4N Cj4gKGh0dHBzOi8vbmFtMDQuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1o dHRwcyUzQSUyRiUNCj4gPj4+Pj4+IDINCj4gPj4+Pj4+DQo+IEZlZGsyLmdyb3Vwcy5pbyUyRmcl MkZkZXZlbCUyRm1lc3NhZ2UlMkY2MTMyNyZhbXA7ZGF0YT0wMiU3QzAxJQ0KPiA3Qw0KPiA+Pj4+ Pj4gYQ0KPiA+Pj4+Pj4NCj4gd2Fya2VudGluJTQwdm13YXJlLmNvbSU3QzVmOTBkMDc3YmM3OTQ5 YzExMjJmMDhkODEyZGM0OGQzJTdDYjM5MQ0KPiAzDQo+ID4+Pj4+PiA4DQo+ID4+Pj4+Pg0KPiBj YTNjZWU0YjRhYTRkNmNkODNkOWRkNjJmMCU3QzAlN0MwJTdDNjM3MjgwMDg0NjExNzQ5MzI0JmFt cDtzZGF0DQo+IGENCj4gPj4+Pj4+ID0NCj4gPj4+Pj4+DQo+IDIlMkIlMkZjdk1rcm1aR1RSUkxE R1N1TXNLYml5RE9HdHdZd1o3cVNxTXlNaWNjJTNEJmFtcDtyZXMNCj4gZXJ2ZWQ9MA0KPiA+Pj4+ Pj4gKSwgd2hpY2ggYWxzbyBkZXNjcmliZXMgdGhlIGlzc3VlIHdlIGFyZSB0cnlpbmcgdG8gc29s dmUgaW4NCj4gPj4+Pj4+IGdyZWF0ZXIgZGV0YWlscy4gVGhpcyBpcyB3aGF0IEkgd3JvdGU6DQo+ ID4+Pj4+Pg0KPiA+Pj4+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPj4+Pj4+IC0NCj4gPj4+Pj4+IC0tLS0tLQ0K PiA+Pj4+Pj4NCj4gPj4+Pj4+IE5vdGUgaG93ZXZlciB0aGF0IHRoaXMgbWF5IHJlcXVpcmUgYSBz cGVjcyB1cGRhdGUsIGFzIHRoZSBjdXJyZW50DQo+ID4+Pj4+PiBVRUZJIHNwZWNzIGZvciBFRklf Qk9PVF9TRVJWSUNFUy5DcmVhdGVFdmVudEV4KCkgaGF2ZToNCj4gPj4+Pj4+DQo+ID4+Pj4+PiAg ICAgID4gIEVGSV9FVkVOVF9HUk9VUF9SRUFEWV9UT19CT09UDQo+ID4+Pj4+PiAgICAgID4gICAg VGhpcyBldmVudCBncm91cCBpcyBub3RpZmllZCBieSB0aGUgc3lzdGVtIHdoZW4gdGhlDQo+ID4+ Pj4+PiBCb290IE1hbmFnZXINCj4gPj4+Pj4+ICAgICAgPiAgICBpcyBhYm91dCB0byBsb2FkIGFu ZCBleGVjdXRlIGEgYm9vdCBvcHRpb24uDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gYW5kLCBvbmNlIHRo aXMgcGF0Y2ggaGFzIGJlZW4gYXBwbGllZCwgd2UgbWF5IHdhbnQgdG8gdXBkYXRlIHRoaXMNCj4g Pj4+Pj4+IHNlY3Rpb24gdG8gbWVudGlvbiB0aGF0IGl0IGFwcGxpZXMgdG8gYm90aCBCb290IE1h bmFnZXIgYW5kDQo+ID4+Pj4+PiBQbGF0Zm9ybSBSZWNvdmVyeS4NCj4gPj4+Pj4+IC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQo+ID4+Pj4+PiAtDQo+ID4+Pj4+PiAtLS0tLS0NCj4gPj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+ Pj4NCj4gPj4+Pj4+IEFnYWluLCBJIGRvbid0IGhhdmUgYW4gaXNzdWUgd2l0aCB0cnlpbmcgdG8g dXNlIGFuIGFsdGVybmF0ZQ0KPiA+Pj4+Pj4gYXBwcm9hY2ggdG8gc29sdmUgb3VyIHByb2JsZW0g KHRob3VnaCBJIHVsdGltYXRlbHkgYmVsaWV2ZSB0aGF0LA0KPiA+Pj4+Pj4gaWYgUGxhdGZvcm1S ZWNvdmVyeSMjIyMgY2FuIGxhdW5jaCBhIC9lZmkvYm9vdC9ib290IyMjIy5lZmkNCj4gPj4+Pj4+ IGJvb3Rsb2FkZXIgdGhlbiB3ZSBtdXN0IHVwZGF0ZSB0aGUgc3BlY3MgYW5kIHRoZSBjb2RlIHRv IGhhdmUNCj4gPj4+Pj4+IFJlYWR5VG9Cb290IGFsc28gc2lnbmFsbGVkIHRoZW4sIGJlY2F1c2Ug dGhhdCdzIHRoZSBsb2dpY2FsIHRoaW5nDQo+ID4+Pj4+PiB0byBkbykuIEJ1dCByaWdodCBub3cs IEknbSBub3Qgc2VlaW5nIGhvdyB0byBhY2hpZXZlIHRoYXQgd2hlbg0KPiA+Pj4+Pj4gUGxhdGZv cm1SZWNvdmVyeSMjIyMgaXMgdGhlIG9wdGlvbiB0aGF0IGlzIHVzZWQgdG8gbGF1bmNoIHRoZSBP Uw0KPiA+Pj4+Pj4gaW5zdGFsbGF0aW9uIHRoZSBib290bG9hZGVyLiBTbyBpZiB5b3UgY2FuIHBy b3ZpZGUgbW9kZSBkZXRhaWxzDQo+ID4+Pj4+PiBvbiBob3cgZXhhY3RseSB5b3UgdGhpbmsgY3Jl YXRpbmcgYW4gYWx0ZXJuYXRlIFBsYXRmb3JtUmVjb3ZlcnkNCj4gPj4+Pj4+IG9wdGlvbiB3b3Vs ZCBoZWxwLCBJIHdvdWxkIGFwcHJlY2lhdGUgaXQuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gUmVnYXJk cywNCj4gPj4+Pj4+DQo+ID4+Pj4+PiAvUGV0ZQ0KPiA+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+ Pj4+IFJlZ2FyZHMsDQo+ID4+Pj4+Pj4gU3VubnkgV2FuZw0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+Pj4+PiBGcm9tOiBtYWlsdG86ZGV2ZWxA ZWRrMi5ncm91cHMuaW8NCj4gW21haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pb10NCj4gPj4+Pj4+ PiBPbiBCZWhhbGYgT2YgUGV0ZSBCYXRhcmQNCj4gPj4+Pj4+PiBTZW50OiBUdWVzZGF5LCBKdW5l IDE2LCAyMDIwIDU6NTYgUE0NCj4gPj4+Pj4+PiBUbzogbWFpbHRvOmRldmVsQGVkazIuZ3JvdXBz LmlvDQo+ID4+Pj4+Pj4gQ2M6IG1haWx0bzp6aGljaGFvLmdhb0BpbnRlbC5jb207IG1haWx0bzpy YXkubmlAaW50ZWwuY29tOw0KPiA+Pj4+Pj4+IG1haWx0bzphcmQuYmllc2hldXZlbEBhcm0uY29t OyBtYWlsdG86bGVpZkBudXZpYWluYy5jb20NCj4gPj4+Pj4+PiBTdWJqZWN0OiBbZWRrMi1kZXZl bF0gW2VkazJdW1BBVENIIDEvMV0NCj4gPj4+Pj4+PiBNZGVNb2R1bGVQa2cvVWVmaUJvb3RNYW5h Z2VyTGliOiBTaWduYWwgUmVhZHlUb0Jvb3Qgb24NCj4gcGxhdGZvcm0NCj4gPj4+Pj4+PiByZWNv dmVyeQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gQ3VycmVudGx5LCB0aGUgUmVhZHlUb0Jvb3QgZXZl bnQgaXMgb25seSBzaWduYWxlZCB3aGVuIGEgZm9ybWFsDQo+ID4+Pj4+Pj4gQm9vdCBNYW5hZ2Vy IG9wdGlvbiBpcyBleGVjdXRlZCAoaW4gQm1Cb290LmMgLT4NCj4gPj4+Pj4+PiBFZmlCb290TWFu YWdlckJvb3QgKCkpLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSG93ZXZlciwgd2l0aCB0aGUgaW50 cm9kdWN0aW9uIG9mIFBsYXRmb3JtIFJlY292ZXJ5IGluIFVFRkkgMi41LA0KPiA+Pj4+Pj4+IHdo aWNoIG1heSBsZWFkIHRvIHRoZSBleGVjdXRpb24gb2YgYSBib290IGxvYWRlciB0aGF0IGhhcw0K PiA+Pj4+Pj4+IHNpbWlsYXIgcmVxdWlyZW1lbnRzIHRvIGEgcmVndWxhciBvbmUsIHlldCBpcyBu b3QgbGF1bmNoZWQgYXMgYQ0KPiA+Pj4+Pj4+IEJvb3QgTWFuYWdlciBvcHRpb24sIGl0IGFsc28g YmVjb21lcyBuZWNlc3NhcnkgdG8gc2lnbmFsDQo+ID4+Pj4+Pj4gUmVhZHlUb0Jvb3Qgd2hlbiBh IFBsYXRmb3JtIFJlY292ZXJ5IGJvb3QgbG9hZGVyIHJ1bnMuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+ PiBFc3BlY2lhbGx5LCB0aGlzIGNhbiBiZSBjcml0aWNhbCB0byBlbnN1cmluZyB0aGF0IHRoZSBn cmFwaGljYWwNCj4gPj4+Pj4+PiBjb25zb2xlIGlzIGFjdHVhbGx5IHVzYWJsZSBkdXJpbmcgcGxh dGZvcm0gcmVjb3ZlcnksIGFzIHNvbWUNCj4gPj4+Pj4+PiBwbGF0Zm9ybXMgZG8gcmVseSBvbiB0 aGUgQ29uc29sZVByZWZEeGUgZHJpdmVyLCB3aGljaCBvbmx5DQo+ID4+Pj4+Pj4gcGVyZm9ybXMg Y29uc29sZSBpbml0aWFsaXphdGlvbiBhZnRlciBSZWFkeVRvQm9vdCBpcyB0cmlnZ2VyZWQuDQo+ ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBUaGlzIHBhdGNoIGZpeGVzIHRoYXQgYmVoYXZpb3VyIGJ5IGNh bGxpbmcNCj4gPj4+Pj4+PiBFZmlTaWduYWxFdmVudFJlYWR5VG9Cb290ICgpIGluDQo+IEVmaUJv b3RNYW5hZ2VyUHJvY2Vzc0xvYWRPcHRpb24NCj4gPj4+Pj4+PiAoKSwgd2hpY2ggaXMgdGhlIGZ1 bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgcGxhdGZvcm0gcmVjb3ZlcnkNCj4gPj4+Pj4+PiBib290 IHByb2Nlc3MuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBQZXRlIEJhdGFy ZCA8bWFpbHRvOnBldGVAYWtlby5pZT4NCj4gPj4+Pj4+PiAtLS0NCj4gPj4+Pj4+PiAgICAgICBN ZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIvQm1Mb2FkT3B0aW9uLmMNCj4g fCA5DQo+ID4+Pj4+Pj4gKysrKysrKysrDQo+ID4+Pj4+Pj4gICAgICAgMSBmaWxlIGNoYW5nZWQs IDkgaW5zZXJ0aW9ucygrKQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gZGlmZiAtLWdpdA0KPiA+Pj4+ Pj4+IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaUJvb3RNYW5hZ2VyTGliL0JtTG9hZE9wdGlv bi5jDQo+ID4+Pj4+Pj4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIv Qm1Mb2FkT3B0aW9uLmMNCj4gPj4+Pj4+PiBpbmRleCA4OTM3MmIzYjk3YjguLjExN2YxZjViMTI0 YyAxMDA2NDQNCj4gPj4+Pj4+PiAtLS0NCj4gYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpQm9v dE1hbmFnZXJMaWIvQm1Mb2FkT3B0aW9uLmMNCj4gPj4+Pj4+PiArKysNCj4gYi9NZGVNb2R1bGVQ a2cvTGlicmFyeS9VZWZpQm9vdE1hbmFnZXJMaWIvQm1Mb2FkT3B0aW9uLmMNCj4gPj4+Pj4+PiBA QCAtMTM3Niw2ICsxMzc2LDE1IEBAIEVmaUJvb3RNYW5hZ2VyUHJvY2Vzc0xvYWRPcHRpb24gKA0K PiA+Pj4+Pj4+ICAgICAgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+Pj4+Pj4gICAgICAg ICB9DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiArICAvLw0KPiA+Pj4+Pj4+ICsgIC8vIFNpZ25hbCB0 aGUgRVZUX1NJR05BTF9SRUFEWV9UT19CT09UIGV2ZW50IHdoZW4gd2UgYXJlDQo+ID4+Pj4+Pj4g K2Fib3V0DQo+ID4+Pj4+Pj4gdG8gbG9hZCBhbmQgZXhlY3V0ZSB0aGUgYm9vdCBvcHRpb24uDQo+ ID4+Pj4+Pj4gKyAgLy8NCj4gPj4+Pj4+PiArICBFZmlTaWduYWxFdmVudFJlYWR5VG9Cb290ICgp Ow0KPiA+Pj4+Pj4+ICsgIC8vDQo+ID4+Pj4+Pj4gKyAgLy8gUmVwb3J0IFN0YXR1cyBDb2RlIHRv IGluZGljYXRlIFJlYWR5VG9Cb290IHdhcyBzaWduYWxsZWQNCj4gPj4+Pj4+PiArLy8gIFJFUE9S VF9TVEFUVVNfQ09ERSAoRUZJX1BST0dSRVNTX0NPREUsDQo+ID4+Pj4+Pj4gKEVGSV9TT0ZUV0FS RV9EWEVfQlNfRFJJVkVSIHwNCj4gPj4+Pj4+PiArIEVGSV9TV19EWEVfQlNfUENfUkVBRFlfVE9f Qk9PVF9FVkVOVCkpOw0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiAgICAgICAgIC8vDQo+ID4+Pj4+ Pj4gICAgICAgICAvLyBMb2FkIGFuZCBzdGFydCB0aGUgbG9hZCBvcHRpb24uDQo+ID4+Pj4+Pj4g ICAgICAgICAvLw0KPiA+Pj4+Pj4+IC0tDQo+ID4+Pj4+Pj4gMi4yMS4wLndpbmRvd3MuMQ0KPiA+ Pj4+Pj4+DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+ Pg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhp cyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzDQo+ID4+Pj4+IGFyZSBjb25maWRlbnRpYWwgYW5k IG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZQ0KPiA+Pj4+PiBpbnRl bmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQg ZG8NCj4gPj4+Pj4gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29u LCB1c2UgaXQgZm9yIGFueQ0KPiA+Pj4+PiBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBp bmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuDQo+ID4+Pj4+DQo+ID4+Pj4+IElN UE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNo bWVudHMNCj4gPj4+Pj4gYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdl ZC4gSWYgeW91IGFyZSBub3QgdGhlDQo+ID4+Pj4+IGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNl IG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbw0KPiA+Pj4+PiBub3QgZGlzY2xv c2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55DQo+ID4+ Pj4+IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRp dW0uIFRoYW5rIHlvdS4NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pg0K PiA+Pg0KPiA+DQo+DQo+DQo+DQo+IA0KPg0KDQpJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVu dHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5k IG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNp cGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRp c2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBw dXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBU aGFuayB5b3UuDQo=