From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80081.outbound.protection.outlook.com [40.107.8.81]) by dpdk.org (Postfix) with ESMTP id 7D2002BBD; Sat, 6 Oct 2018 21:44:40 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/JqC3tZb6p7l7h8FsXv3xjZ8ofa4YmkFAjN4bNykNAg=; b=Q8SwFFF4w3PixpelbyTnhJB+Id8vEHeqKgJBUbtXZy74GNtxhP1iivhaQjXKd2N6nFSSQN04xBoino2jzpKS0FZz30iimtWGeUvP4ZZYSu1HJGVXd0YD33hIB9g9vaEBfjvx9gjjdoHcjQpaQxBkB0u9piex8j049qZag8bBd+M= Received: from HE1PR0801MB2076.eurprd08.prod.outlook.com (10.168.95.140) by HE1PR0801MB1820.eurprd08.prod.outlook.com (10.168.150.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.26; Sat, 6 Oct 2018 19:44:36 +0000 Received: from HE1PR0801MB2076.eurprd08.prod.outlook.com ([fe80::c84:eee7:43bf:9f20]) by HE1PR0801MB2076.eurprd08.prod.outlook.com ([fe80::c84:eee7:43bf:9f20%11]) with mapi id 15.20.1207.024; Sat, 6 Oct 2018 19:44:35 +0000 From: Ola Liljedahl To: Jerin Jacob , "dev@dpdk.org" CC: Honnappa Nagarahalli , "Ananyev, Konstantin" , "Gavin Hu (Arm Technology China)" , Steve Capper , nd , "stable@dpdk.org" Thread-Topic: [PATCH v3 1/3] ring: read tail using atomic load Thread-Index: AQHUTl7o9KT3/H6K10G5NrmKOHANTqUHJ0+AgAjF7gCAAH79gIAAUg2AgAAF3wCAAAI9gIAAGFMAgAAgVICAADHKgIAAAE+AgAAkl4D//+HIgIAAIteAgACY7ICAAOuGgA== Date: Sat, 6 Oct 2018 19:44:35 +0000 Message-ID: References: <621E373E-048D-4808-8CE8-84373EA98D2F@arm.com> <2601191342CEEE43887BDE71AB9772580102FE2951@IRSMSX106.ger.corp.intel.com> <20181005170725.GA18671@jerin> <1555626C-F2B8-44EB-98A3-79B1F7002587@arm.com> <60055965-A7C8-4E9F-8668-0AE1DCE57515@arm.com> <20181006074126.GA16715@jerin> In-Reply-To: <20181006074126.GA16715@jerin> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/10.10.0.180812 authentication-results: spf=none (sender IP is ) smtp.mailfrom=Ola.Liljedahl@arm.com; x-originating-ip: [158.174.8.16] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR0801MB1820; 6:d5wPEk05CkQRGrjMoMfhDioPin7B762FoyPay7sXDLtKQsmY/vGs5hoTTStFvH35HqutoUKw8P6Nq79NesJndsBVg3G4KfbvMow2HArJIjiS8ymYusAm0WUoem2QWiK/ccuwKEr56ymSxVoiuVMdqxUSYu5dyYymEUTDdyOlSl/0z0JXbZNY5Bw+W3qc5zu/xCnWPFDN7K7SrK7wg4YwQ16g7MunO+x8OGooDCaVaH7ESyu2LJJkHLiCaYui7MfpGqmYOpWnLWaD+Gul3TipIrmJQdXWE/YMAJHL8TQw4RbUccaSDjPeYFcq0nGLbWcHPLFe9IkP33zqhp771THLnuu/Qc/ubgZXmRwX0kyV2mc13ilIPXcj5KQSYJYsykvhG2w7gGn0DWq/YkcNws8lpvsNQKv0RGpoKiMITRTY0chR2AjhU+9tCzcOqZVg4guPXjmSMffEzq98MweEsrxq2Q==; 5:evhg5cvhsrZc/7qJEdLJof9NBL8XbAmrvrX/7R3sjg0CMTle7IWCT4JinyFBBvzNPxQKskgQeVXNPwS6qEXVmmrkx4JFH8svYfiq7GKCK249y2fuPJP8tcBsWw6/vRYsz5T4XUZ+D9It/sZfnDxTQrzI5Gv58Iy/FSMbUtz1+p4=; 7:OKvXMZFuQCR/+yJUL5/STRL6DJuRyoRnZl9UzaaMQFR+vPnuWMRKfQK8hoWnjEo5zJDNyz28n3Falnua4bqd0PFVIhIlGconbavBPM7rSU1jIGCbxwJO+YgYICuWQ6JKzDiHMSvjGxFfBwfXwiXDMs4uhNutXckZfxNTIqeBoEsjVM5MR+A1k3Wn5srQPTlnpdvuwVhexbE4iKnamtm9VWCgPiIVadVtWKLRanbv7S8QHmEuo0NYfqtvLJFRq3vn x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-correlation-id: 9709408e-4cfb-41f5-379e-08d62bc42532 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:HE1PR0801MB1820; x-ms-traffictypediagnostic: HE1PR0801MB1820: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(100405760836317)(228905959029699); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123558120)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051); SRVR:HE1PR0801MB1820; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0801MB1820; x-forefront-prvs: 0817737FD1 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(396003)(346002)(376002)(39860400002)(136003)(13464003)(199004)(189003)(53546011)(76176011)(5660300001)(6506007)(66066001)(8676002)(36756003)(575784001)(86362001)(99286004)(81166006)(8936002)(81156014)(7736002)(305945005)(68736007)(229853002)(345774005)(54906003)(110136005)(256004)(58126008)(14444005)(106356001)(33656002)(82746002)(93886005)(19627235002)(2900100001)(316002)(105586002)(6486002)(4326008)(966005)(4744004)(72206003)(102836004)(6436002)(2501003)(2616005)(476003)(478600001)(6306002)(53946003)(6512007)(97736004)(5250100002)(45080400002)(83716004)(6246003)(2906002)(186003)(3846002)(446003)(11346002)(6116002)(25786009)(14454004)(26005)(53936002)(486006)(71200400001)(71190400001)(10126625002)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0801MB1820; H:HE1PR0801MB2076.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: XKXfFW8c09suOr2/4bFWYcEyHb0OKsuOBdnweXFBvSNPpP/ZPwXHymse0IlwtC/XYBFaIBYMq15otFF/PEKqOgRZTLwUrXEI/nizxgyIl2/AmW4Pi0WnqYE+OoaAjca/wTY0EFqHUdQYCclmJlMgqsC0RSupNdkKTwC5HotTOj0uvScqQjLw3VIz0j+vwb3ilHj/s9t4ZN044HlNZYVymemtRtEDBJvpSafgHklC1YaHY5/ygECT7qxWZYrD4Z/0bxcQHg5NMKQ2Ah7bX2Zj49LZ7omRa3ByyTm890v0Dmx3mZpGO1YBtIXi+0HOwchNCBFb8XN9UHZfzUsdqy1fZdgKfI8LnxqNg8kQelXL+XM= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9709408e-4cfb-41f5-379e-08d62bc42532 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Oct 2018 19:44:35.5514 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1820 Subject: Re: [dpdk-dev] [PATCH v3 1/3] ring: read tail using atomic load X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Oct 2018 19:44:41 -0000 DQoNCu+7v09uIDA2LzEwLzIwMTgsIDA5OjQyLCAiSmVyaW4gSmFjb2IiIDxqZXJpbi5qYWNvYkBj YXZpdW1uZXR3b3Jrcy5jb20+IHdyb3RlOg0KDQogICAgLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCiAgICA+IERhdGU6IEZyaSwgNSBPY3QgMjAxOCAyMDozNDoxNSArMDAwMA0KICAgID4gRnJv bTogT2xhIExpbGplZGFobCA8T2xhLkxpbGplZGFobEBhcm0uY29tPg0KICAgID4gVG86IEhvbm5h cHBhIE5hZ2FyYWhhbGxpIDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPiwgSmVyaW4gSmFj b2INCiAgICA+ICA8amVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3MuY29tPg0KICAgID4gQ0M6ICJB bmFueWV2LCBLb25zdGFudGluIiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4sICJHYXZp biBIdSAoQXJtDQogICAgPiAgVGVjaG5vbG9neSBDaGluYSkiIDxHYXZpbi5IdUBhcm0uY29tPiwg ImRldkBkcGRrLm9yZyIgPGRldkBkcGRrLm9yZz4sDQogICAgPiAgU3RldmUgQ2FwcGVyIDxTdGV2 ZS5DYXBwZXJAYXJtLmNvbT4sIG5kIDxuZEBhcm0uY29tPiwgInN0YWJsZUBkcGRrLm9yZyINCiAg ICA+ICA8c3RhYmxlQGRwZGsub3JnPg0KICAgID4gU3ViamVjdDogUmU6IFtQQVRDSCB2MyAxLzNd IHJpbmc6IHJlYWQgdGFpbCB1c2luZyBhdG9taWMgbG9hZA0KICAgID4gdXNlci1hZ2VudDogTWlj cm9zb2Z0LU1hY091dGxvb2svMTAuMTAuMC4xODA4MTINCiAgICA+IA0KICAgID4gRXh0ZXJuYWwg RW1haWwNCiAgICA+IA0KICAgID4gT24gMDUvMTAvMjAxOCwgMjI6MjksICJIb25uYXBwYSBOYWdh cmFoYWxsaSIgPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+IHdyb3RlOg0KICAgID4gDQog ICAgPiAgICAgPg0KICAgID4gICAgID4gSSBkb3VidCBpdCBpcyBwb3NzaWJsZSB0byBiZW5jaG1h cmsgd2l0aCBzdWNoIGEgcHJlY2lzaW9uIHNvIHRvIHNlZSB0aGUNCiAgICA+ICAgICA+IHBvdGVu dGlhbCBkaWZmZXJlbmNlIG9mIG9uZSBBREQgaW5zdHJ1Y3Rpb24uDQogICAgPiAgICAgPiBKdXN0 IGNoYW5nZXMgaW4gZnVuY3Rpb24gYWxpZ25tZW50IGNhbiBhZmZlY3QgcGVyZm9ybWFuY2UgYnkg cGVyY2VudHMuIEFuZA0KICAgID4gICAgID4gdGhlIG5hdHVyYWwgdmFyaWF0aW9uIHdoZW4gbm90 IHVzaW5nIGEgMTAwJSBkZXRlcm1pbmlzdGljIHN5c3RlbSBpcyBnb2luZyB0bw0KICAgID4gICAg ID4gYmUgYSBsb3QgbGFyZ2VyIHRoYW4gb25lIGN5Y2xlIHBlciByaW5nIGJ1ZmZlciBvcGVyYXRp b24uDQogICAgPiAgICAgPg0KICAgID4gICAgID4gU29tZSBvZiB0aGUgb3RoZXIgcGF0Y2hlcyBh cmUgYWxzbyBmb3IgY29ycmVjdG5lc3MgKGUuZy4gbG9hZC1hY3F1aXJlIG9mIHRhaWwpDQogICAg PiAgICAgVGhlIGRpc2N1c3Npb24gaXMgYWJvdXQgdGhpcyBwYXRjaCBhbG9uZS4gT3RoZXIgcGF0 Y2hlcyBhcmUgYWxyZWFkeSBBY2tlZC4NCiAgICA+IFNvIHRoZSBiZW5jaG1hcmtpbmcgdGhlbiBt YWtlcyB6ZXJvIHNlbnNlLg0KICAgIA0KICAgIFdoeSA/DQpCZWNhdXNlIHRoZSBub2lzZSBpbiBi ZW5jaG1hcmtpbmcgKGR1ZSB0byBlLmcuIG5vbi1kZXRlcm1pbmlzdGljIHN5c3RlbXMsIHBvdGVu dGlhbCBjaGFuZ2VzIGluIGZ1bmN0aW9uIGFuZCBsb29wIGFsaWdubWVudCkgd2lsbCBiZSBtdWNo IGxhcmdlciB0aGFuIDEgY3ljbGUgYWRkaXRpb25hbCBvdmVyaGVhZCBwZXIgcmluZyBidWZmZXIg b3BlcmF0aW9uLiBXaGF0IHdpbGwgYmVuY2htYXJraW5nIHRlbGwgdXMgYWJvdXQgdGhlIHBlcmZv cm1hbmNlIGltcGFjdCBvZiB0aGlzIGNoYW5nZSB0aGF0IGFkZHMgb25lIEFMVSBvcGVyYXRpb24/ DQogICAgDQogICAgDQogICAgPiANCiAgICA+IA0KICAgID4gICAgID4gc28gd2hpbGUgcGVyZm9y bWFuY2UgbWVhc3VyZW1lbnRzIG1heSBiZSBpbnRlcmVzdGluZywgd2UgY2FuJ3Qgc2tpcCBhIGJ1 Zw0KICAgID4gICAgID4gZml4IGp1c3QgYmVjYXVzZSBpdCBwcm92ZXMgdG8gZGVjcmVhc2UgcGVy Zm9ybWFuY2UuDQogICAgPiAgICAgSU1PLCB0aGlzIHBhdGNoIGlzIG5vdCBhIGJ1ZyBmaXggLSBp biB0ZXJtcyBvZiBpdCBmaXhpbmcgYW55IGZhaWx1cmVzIHdpdGggdGhlIGN1cnJlbnQgY29kZS4N CiAgICA+IEl0J3MgYSBmaXggZm9yIGNvcnJlY3RuZXNzLiBQZXIgdGhlIEMrKzExIChhbmQgcHJv YmFibHkgQzExIGFzIHdlbGwgZHVlIHRvIHRoZSBzaGFyZWQgbWVtb3J5IG1vZGVsKSwgd2UgaGF2 ZSB1bmRlZmluZWQgYmVoYXZpb3VyIGhlcmUuIElmIHRoZSBjb21waWxlciBkZXRlY3RzIFVCLCBp dCBpcyBhbGxvd2VkIHRvIGRvIGFueXRoaW5nLiBDdXJyZW50IGNvbXBpbGVycyBtaWdodCBub3Qg ZXhwbG9pdCB0aGlzIGJ1dCBmdXR1cmUgY29tcGlsZXJzIGNvdWxkLg0KICAgIA0KICAgIEFsbCBJ IGFtIHNheWluZyB0aGlzLCBUaGUgY29kZSBpcyBub3Qgc2FtZSBhbmQgY29tcGlsZXIodGhlIHZl cnkgbGF0ZXN0DQogICAgZ2NjIDguMikgaXMgbm90IHNtYXJ0IGVub3VnaCB1bmRlcnN0YW5kIGl0 IGlzIGEgZGVhZCBjb2RlLg0KV2hhdCBjb2RlIGlzIGRlYWQ/IFRoZSBBREQgaW5zdHJ1Y3Rpb24g aGFzIGEgcHVycG9zZSwgaXQgaXMgYWRkaW5nIGFuIG9mZnNldCAoZnJvbSByaW5nIGJ1ZmZlciBz dGFydCB0byB0aGUgdGFpbCBmaWVsZCkgdG8gYSBiYXNlIHBvaW50ZXIuIEl0J3MgaXMgbWVyZWx5 IChtb3N0IGxpa2VseSkgbm90IHRoZSBvcHRpbWFsIGNvZGUgc2VxdWVuY2UgZm9yIGFueSBBUk0g cHJvY2Vzc29yLg0KDQogSSB0aGluaywNCiAgICBUaGUgbW9tZW50IGFueSBfX2J1aWx0aW5fZ2Nj IGNvbWVzIHRoZSBjb21waWxlciBhZGQgcHJlZGVmaW5lZCB0ZW1wbGF0ZQ0KICAgIHdoaWNoIGhh cyBhZGRpdGlvbmFsICJhZGQiIGluc3RydWN0aW9uLg0KSSBzdXNwZWN0IHRoZSBhZGQgaW5zdHJ1 Y3Rpb24gaXMgYmVjYXVzZSB0aGlzIGF0b21pY19sb2FkIG9wZXJhdGVzIG9uIGEgc3RydWN0IG1l bWJlciBhdCBhIG5vbi16ZXJvIG9mZnNldCBhbmQgR0NDJ3MgInRlbXBsYXRlKHMpIiBmb3IgYXRv bWljIG9wZXJhdGlvbnMgZG9uJ3Qgc3VwcG9ydCByZWdpc3RlciArIGltbWVkaWF0ZSBvZmZzZXQg KGJlY2F1c2UgYmFzaWNhbGx5IG9uIEFBcmNoNjQvQTY0IElTQSwgYWxsIGF0b21pYyBvcGVyYXRp b25zIGV4Y2VwdCBhdG9taWNfbG9hZChSRUxBWEVEKSBhbmQgYXRvbWljX3N0b3JlKFJFTEFYRUQp IG9ubHkgc3VwcG9ydCB0aGUgYWRkcmVzc2luZyBtb2RlIGJhc2UgcmVnaXN0ZXIgd2l0aG91dCBv ZmZzZXQpLiBJIHdvdWxkIGJlIHN1cnByaXNlZCBpZiB0aGlzIG1pbm9yIGluc3RhbmNlIG9mIG5v bi1vcHRpbWFsIGNvZGUgZ2VuZXJhdGlvbiBjb3VsZG4ndCBiZSBjb3JyZWN0ZWQgaW4gdGhlIGNv bXBpbGVyLg0KDQogICAgSSB0aGluayB0aGlzIHNwZWNpZmljIGNhc2UsDQogICAgd2UgQUxMIGtu b3cgdGhhdCwgDQogICAgYSkgaHQtPnRhaWwgd2lsbCBiZSAzMiBiaXQgZm9yIGxpZmUgbG9uZyBv ZiBEUERLLCBpdCB3aWxsIGJlIGF0b21pYyBpbg0KICAgIGFsbCBEUERLIHN1cHBvcnRlZCBwcm9j ZXNzb3JzDQogICAgYikgVGhlIHJ0ZV9wYXVzZSgpIGRvd24gd2hpY2ggbmV2ZXIgbWFrZSBhbmQg Y29tcGlsZXIgcmVvcmRlcmluZyBldGMuDQpGb3IgMzItYml0IEFSTSBhbmQgNjQtYml0IFBPV0VS IChwcGM2NCksIHRoZSBydGVfcGF1c2UoKSBpbXBsZW1lbnRhdGlvbiBsb29rcyBsaWtlIHRoaXMg KERQREsg77u/MTguMDgtcmMwKToNCu+7v3N0YXRpYyBpbmxpbmUgdm9pZCBydGVfcGF1c2Uodm9p ZCkNCnsNCn0NCg0KSG93IGRvZXMgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHByZXZlbnQgY29tcGls ZXIgb3B0aW1pc2F0aW9ucyBlLmcuIG9mIHRoZSBsb29wIG9yIG9mIHN1cnJvdW5kaW5nIG1lbW9y eSBhY2Nlc3Nlcz8NCklzIHJ0ZV9wYXVzZSgpIHN1cHBvc2VkIHRvIGJlaGF2ZSBsaWtlIHNvbWUg a2luZCBvZiBjb21waWxlciBiYXJyaWVyPyBJIGNhbid0IHNlZSBhbnl0aGluZyBpbiB0aGUgRFBE SyBkb2N1bWVudGF0aW9uIGZvciBydGVfcGF1c2UoKSB0aGF0IGNsYWltcyB0aGlzLg0KDQoNCiAg ICBzbyB3aHkgdG8gbG9vc2Ugb25lIGN5Y2xlIGF0IHdvcnN0IGNhc2U/IEl0IGlzIGVhc3kgbG9v c2Ugb25lIGN5Y2xlIGFuZCBpdCB2ZXJ5DQogICAgZGlmZmljdWx0IHRvIGdldCBvbmUgYmFjayBp biBmYXN0cGF0aC4NCkkgc3VnZ2VzdCB5b3UgcmVhZCB1cCBvbiB3aHkgdW5kZWZpbmVkIGJlaGF2 aW91ciBpcyBiYWQgaW4gQy4gSGF2ZSBhIGNoYXQgd2l0aCBBbmRyZXcgUGluc2tpLg0KDQpOb3Qg ZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciBtZW1vcnkgYmFycmllciBpbiBydGVfcGF1c2UoKSB3 b3VsZCBhbGxvdyB0aGUgY29tcGlsZXIgdG8gbWFrZSBvcHRpbWlzYXRpb25zIChlLmcuIHNjaGVk dWxlIGxvYWRzIGVhcmxpZXIpIHRoYXQgYWN0dWFsbHkgaW5jcmVhc2UgcGVyZm9ybWFuY2UuIFNp bmNlIHRoZSBhdG9taWMgbG9hZCBvZiBodC0+dGFpbCBoZXJlIGhhcyByZWxheGVkIE1PLCB0aGUg Y29tcGlsZXIgaXMgYWxsb3dlZCBob2lzdCBsYXRlciBsb2FkcyAoYW5kIHN0b3JlcykgYWhlYWQg b2YgaXQgKGFuZCBhbHNvIHB1c2ggZG93biBhbmQvb3IgbWVyZ2Ugd2l0aCBzdG9yZXMgYWZ0ZXIg dGhlIGxvYWQgb2YgaHQtPnRhaWwpLiBCdXQgdGhlIGNvbXBpbGVyIChtZW1vcnkpIGJhcnJpZXIg aW4gKHRoYXQgc3VwcG9zZWRseSBpcyBwYXJ0IG9mKSBydGVfcGF1c2UoKSBwcmV2ZW50cyBzdWNo IG9wdGltaXNhdGlvbnMgKHdlbGwgc29tZSBhY2Nlc3NlcyBjb3VsZCBiZSBwdXNoZWQgZG93biBi ZXR3ZWVuIHRoZSBhdG9taWMgbG9hZCBhbmQgdGhlIGNvbXBpbGVyIGJhcnJpZXIgYnV0IG5vdCBm dXJ0aGVyIHRoYW4gdGhhdCkuDQoNCkEgQyBjb21waWxlciB0aGF0IHN1cHBvcnRzIEMxMSBhbmQg YmV5b25kIGltcGxlbWVudHMgdGhlIEMxMSBtZW1vcnkgbW9kZWwuIFRoZSBjb21waWxlciB1bmRl cnN0YW5kcyB0aGUgbWVtb3J5IG1vZGVsIGFuZCBjYW4gb3B0aW1pc2UgbWVtb3J5IGFjY2Vzc2Vz IGFjY29yZGluZyB0byB0aGUgc2VtYW50aWNzIG9mIHRoZSBtb2RlbCBhbmQgdGhlIG9yZGVyaW5n IGRpcmVjdGl2ZXMgaW4gdGhlIGNvZGUuIEF0b21pYyBvcGVyYXRpb25zIHVzaW5nIEFUT01JQ19T RVFfQ1NULCBBVE9NSUNfQUNRVUlSRSwgQVRPTUlDX1JFTEVBU0UgKGFuZCBBVE9NSUNfQUNRX1JF TCwgaWdub3JpbmcgQVRPTUlDX0NPTlNVTUUgaGVyZSkgZWFjaCBhbGxvdyBhbmQgZGlzYWxsb3cg Y2VydGFpbiBraW5kcyBvZiBtb3ZlbWVudHMgYW5kIG90aGVyIG9wdGltaXNhdGlvbnMgb2YgbWVt b3J5IGFjY2Vzc2VzIChsb2FkcyBhbmQgc3RvcmVzLCBJIGFzc3VtZSBwcmVmZXRjaGVzIGFyZSBh bHNvIGluY2x1ZGVkKS4gQXRvbWljIG9wZXJhdGlvbnMgd2l0aCBBVE9NSUNfUkVMQVhFRCBkb24n dCBpbXBvc2UgYW55IG9yZGVyaW5nIGNvbnN0cmFpbnRzIHNvIGdpdmUgbWF4aW11bSBmbGV4aWJp bGl0eSB0byB0aGUgY29tcGlsZXIuIFVzaW5nIGEgY29tcGlsZXIgbWVtb3J5IGJhcnJpZXIgKGUu Zy4gYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKSkgaXMgYSBtdWNoIG1vcmUgYnJ1dGFsIHdh eSBvZiBjb25zdHJhaW5pbmcgdGhlIGNvbXBpbGVyLg0KICAgIA0KICAgIA0KICAgID4gDQogICAg PiANCiAgICA+IA0KICAgID4gICAgID4NCiAgICA+ICAgICA+IC0tIE9sYQ0KICAgID4gICAgID4N CiAgICA+ICAgICA+IE9uIDA1LzEwLzIwMTgsIDIyOjA2LCAiSG9ubmFwcGEgTmFnYXJhaGFsbGki DQogICAgPiAgICAgPiA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT4gd3JvdGU6DQogICAg PiAgICAgPg0KICAgID4gICAgID4gICAgIEhpIEplcmluLA0KICAgID4gICAgID4gICAgICAgICAg IFRoYW5rIHlvdSBmb3IgZ2VuZXJhdGluZyB0aGUgZGlzYXNzZW1ibHksIHRoYXQgaXMgcmVhbGx5 IGhlbHBmdWwuIEkNCiAgICA+ICAgICA+IGFncmVlIHdpdGggeW91IHRoYXQgd2UgaGF2ZSB0aGUg b3B0aW9uIG9mIG1vdmluZyBwYXJ0cyAyIGFuZCAzIGZvcndhcmQuIEkNCiAgICA+ICAgICA+IHdp bGwgbGV0IEdhdmluIHRha2UgYSBkZWNpc2lvbi4NCiAgICA+ICAgICA+DQogICAgPiAgICAgPiAg ICAgSSBzdWdnZXN0IHRoYXQgd2UgcnVuIGJlbmNobWFya3Mgb24gdGhpcyBwYXRjaCBhbG9uZSBh bmQgaW4gY29tYmluYXRpb24NCiAgICA+ICAgICA+IHdpdGggb3RoZXIgcGF0Y2hlcyBpbiB0aGUg c2VyaWVzLiBXZSBoYXZlIGZldyBBcm0gbWFjaGluZXMgYW5kIHdlIHdpbGwgcnVuDQogICAgPiAg ICAgPiBvbiBhbGwgb2YgdGhlbSBhbG9uZyB3aXRoIHg4Ni4gV2UgdGFrZSBhIGRlY2lzaW9uIGJh c2VkIG9uIHRoYXQuDQogICAgPiAgICAgPg0KICAgID4gICAgID4gICAgIFdvdWxkIHRoYXQgYmUg YSB3YXkgdG8gbW92ZSBmb3J3YXJkPyBJIHRoaW5rIHRoaXMgc2hvdWxkIGFkZHJlc3MgYm90aA0K ICAgID4gICAgID4geW91ciBhbmQgT2xhJ3MgY29uY2VybnMuDQogICAgPiAgICAgPg0KICAgID4g ICAgID4gICAgIEkgYW0gb3BlbiBmb3Igb3RoZXIgc3VnZ2VzdGlvbnMgYXMgd2VsbC4NCiAgICA+ ICAgICA+DQogICAgPiAgICAgPiAgICAgVGhhbmsgeW91LA0KICAgID4gICAgID4gICAgIEhvbm5h cHBhDQogICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICA+IFNv IHlvdSBkb24ndCB3YW50IHRvIHdyaXRlIHRoZSBwcm9wZXIgQzExIGNvZGUgYmVjYXVzZSB0aGUg Y29tcGlsZXINCiAgICA+ICAgICA+ICAgICA+IGdlbmVyYXRlcyBvbmUgZXh0cmEgaW5zdHJ1Y3Rp b24gdGhhdCB3YXk/DQogICAgPiAgICAgPiAgICAgPiBZb3UgZG9uJ3QgZXZlbiBrbm93IGlmIHRo YXQgb25lIGV4dHJhIGluc3RydWN0aW9uIGhhcyBhbnkgbWVhc3VyYWJsZQ0KICAgID4gICAgID4g ICAgID4gaW1wYWN0IG9uIHBlcmZvcm1hbmNlLiBFLmcuIGl0IGNvdWxkIGJlIGlzc3VlZCB0aGUg Y3ljbGUgYmVmb3JlIHRvZ2V0aGVyDQogICAgPiAgICAgPiAgICAgPiB3aXRoIG90aGVyIGluc3Ry dWN0aW9ucy4NCiAgICA+ICAgICA+ICAgICA+DQogICAgPiAgICAgPiAgICAgPiBXZSBjYW4gY29t cGxhaW4gdG8gdGhlIGNvbXBpbGVyIHdyaXRlcnMgdGhhdCB0aGUgY29kZSBnZW5lcmF0aW9uIGZv cg0KICAgID4gICAgID4gICAgID4gX19hdG9taWNfbG9hZF9uKCwgX19BVE9NSUNfUkVMQVhFRCkg aXMgbm90IG9wdGltYWwgKGF0IGxlYXN0IG9uDQogICAgPiAgICAgPiAgICAgPiBBUk0vQTY0KS4g SSB0aGluayB0aGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBfX2F0b21pYyBidWlsdGlucyBvbmx5IGFj Y2VwdA0KICAgID4gICAgID4gYQ0KICAgID4gICAgID4gICAgID4gYmFzZSBhZGRyZXNzIHdpdGhv dXQgYW55IG9mZnNldCBhbmQgdGhpcyBpcyBwb3NzaWJseSBiZWNhdXNlIGUuZy4NCiAgICA+ICAg ICA+IGxvYWQvc3RvcmUNCiAgICA+ICAgICA+ICAgICA+IGV4Y2x1c2l2ZSAoTERYL1NUWCkgYW5k IGxvYWQtYWNxdWlyZSAoTERBUikgYW5kIHN0b3JlLXJlbGVhc2UgKFNUTFIpDQogICAgPiAgICAg PiBvbmx5DQogICAgPiAgICAgPiAgICAgPiBhY2NlcHQgYSBiYXNlIHJlZ2lzdGVyIHdpdGggbm8g b2Zmc2V0LiBTbyBhbnkgb2Zmc2V0IGhhcyB0byBiZSBhZGRlZA0KICAgID4gICAgID4gYmVmb3Jl DQogICAgPiAgICAgPiAgICAgPiB0aGUgYWN0dWFsICJhdG9taWMiIGluc3RydWN0aW9uLCBMRFIg aW4gdGhpcyBjYXNlLg0KICAgID4gICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICA+DQogICAg PiAgICAgPiAgICAgPiAtLSBPbGENCiAgICA+ICAgICA+ICAgICA+DQogICAgPiAgICAgPiAgICAg Pg0KICAgID4gICAgID4gICAgID4gT24gMDUvMTAvMjAxOCwgMTk6MDcsICJKZXJpbiBKYWNvYiIg PGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4NCiAgICA+ICAgICA+ICAgICA+IHdyb3Rl Og0KICAgID4gICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICA+ICAgICAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KICAgID4gICAgID4gICAgID4gICAgID4gRGF0ZTogRnJpLCA1IE9jdCAy MDE4IDE1OjExOjQ0ICswMDAwDQogICAgPiAgICAgPiAgICAgPiAgICAgPiBGcm9tOiBIb25uYXBw YSBOYWdhcmFoYWxsaSA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT4NCiAgICA+ICAgICA+ ICAgICA+ICAgICA+IFRvOiAiQW5hbnlldiwgS29uc3RhbnRpbiIgPGtvbnN0YW50aW4uYW5hbnll dkBpbnRlbC5jb20+LCBPbGENCiAgICA+ICAgICA+ICAgICA+IExpbGplZGFobA0KICAgID4gICAg ID4gICAgID4gICAgID4gIDxPbGEuTGlsamVkYWhsQGFybS5jb20+LCAiR2F2aW4gSHUgKEFybSBU ZWNobm9sb2d5IENoaW5hKSINCiAgICA+ICAgICA+ICAgICA+ICAgICA+ICA8R2F2aW4uSHVAYXJt LmNvbT4sIEplcmluIEphY29iDQogICAgPiAgICAgPiA8amVyaW4uamFjb2JAY2F2aXVtbmV0d29y a3MuY29tPg0KICAgID4gICAgID4gICAgID4gICAgID4gQ0M6ICJkZXZAZHBkay5vcmciIDxkZXZA ZHBkay5vcmc+LCBTdGV2ZSBDYXBwZXINCiAgICA+ICAgICA+ICAgICA+IDxTdGV2ZS5DYXBwZXJA YXJtLmNvbT4sIG5kDQogICAgPiAgICAgPiAgICAgPiAgICAgPiAgPG5kQGFybS5jb20+LCAic3Rh YmxlQGRwZGsub3JnIiA8c3RhYmxlQGRwZGsub3JnPg0KICAgID4gICAgID4gICAgID4gICAgID4g U3ViamVjdDogUkU6IFtQQVRDSCB2MyAxLzNdIHJpbmc6IHJlYWQgdGFpbCB1c2luZyBhdG9taWMg bG9hZA0KICAgID4gICAgID4gICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4g PiAgICAgICAgID4gSGkgSmVyaW4sDQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAg ICA+DQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+IFRoYW5rcyBmb3IgeW91 ciByZXZpZXcsIGlubGluZSBjb21tZW50cyBmcm9tIG91cg0KICAgID4gICAgID4gaW50ZXJuYWwN CiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gZGlzY3Vzc2lvbnMuDQogICAgPiAgICAgPiAgICAg PiAgICAgPiA+ID4gICAgICAgICA+DQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAg ICA+IEJSLiBHYXZpbg0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPg0KICAg ID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ID4gRnJvbTogSmVy aW4gSmFjb2IgPGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbT4NCiAgICA+ICAgICA+ICAg ICA+ICAgICA+ID4gPiAgICAgICAgID4gPiBTZW50OiBTYXR1cmRheSwgU2VwdGVtYmVyIDI5LCAy MDE4IDY6NDkgUE0NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiBUbzog R2F2aW4gSHUgKEFybSBUZWNobm9sb2d5IENoaW5hKQ0KICAgID4gICAgID4gPEdhdmluLkh1QGFy bS5jb20+DQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ID4gQ2M6IGRldkBk cGRrLm9yZzsgSG9ubmFwcGEgTmFnYXJhaGFsbGkNCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4g PiAgICAgICAgID4gPiA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IFN0ZXZlIENhcHBl cg0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+IDxTdGV2ZS5DYXBwZXJA YXJtLmNvbT47IE9sYSBMaWxqZWRhaGwNCiAgICA+ICAgICA+ICAgICA+IDxPbGEuTGlsamVkYWhs QGFybS5jb20+Ow0KICAgID4gICAgID4gICAgID4gICAgID4gPiBuZA0KICAgID4gICAgID4gICAg ID4gICAgID4gPiA+ICAgICAgICAgPiA+IDxuZEBhcm0uY29tPjsgc3RhYmxlQGRwZGsub3JnDQog ICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ID4gU3ViamVjdDogUmU6IFtQQVRD SCB2MyAxLzNdIHJpbmc6IHJlYWQgdGFpbCB1c2luZyBhdG9taWMNCiAgICA+ICAgICA+IGxvYWQN CiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPg0KICAgID4gICAgID4gICAg ID4gICAgID4gPiA+ICAgICAgICAgPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQogICAg PiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ID4gPiBEYXRlOiBNb24sIDE3IFNlcCAy MDE4IDE2OjE3OjIyICswODAwDQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ ID4gPiBGcm9tOiBHYXZpbiBIdSA8Z2F2aW4uaHVAYXJtLmNvbT4NCiAgICA+ICAgICA+ICAgICA+ ICAgICA+ID4gPiAgICAgICAgID4gPiA+IFRvOiBkZXZAZHBkay5vcmcNCiAgICA+ICAgICA+ICAg ICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+IENDOiBnYXZpbi5odUBhcm0uY29tLA0KICAgID4g ICAgID4gSG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbSwNCiAgICA+ICAgICA+ICAgICA+ICAg ICA+ID4gPiAgICAgICAgID4gPiA+IHN0ZXZlLmNhcHBlckBhcm0uY29tLCAgT2xhLkxpbGplZGFo bEBhcm0uY29tLA0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+ID4gamVy aW4uamFjb2JAY2F2aXVtbmV0d29ya3MuY29tLCBuZEBhcm0uY29tLA0KICAgID4gICAgID4gICAg ID4gICAgID4gPiBzdGFibGVAZHBkay5vcmcNCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAg ICAgICAgID4gPiA+IFN1YmplY3Q6IFtQQVRDSCB2MyAxLzNdIHJpbmc6IHJlYWQgdGFpbCB1c2lu ZyBhdG9taWMNCiAgICA+ICAgICA+IGxvYWQNCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAg ICAgICAgID4gPiA+IFgtTWFpbGVyOiBnaXQtc2VuZC1lbWFpbCAyLjcuNA0KICAgID4gICAgID4g ICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+ID4NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4g PiAgICAgICAgID4gPiA+IEV4dGVybmFsIEVtYWlsDQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ ID4gICAgICAgICA+ID4gPg0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+ ID4gSW4gdXBkYXRlX3RhaWwsIHJlYWQgaHQtPnRhaWwgdXNpbmcNCiAgICA+ICAgICA+ICAgICA+ IF9fYXRvbWljX2xvYWQuQWx0aG91Z2ggdGhlDQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4g ICAgICAgICA+ID4gPiBjb21waWxlciBjdXJyZW50bHkgc2VlbXMgdG8gYmUgZG9pbmcgdGhlIHJp Z2h0IHRoaW5nDQogICAgPiAgICAgPiBldmVuDQogICAgPiAgICAgPiAgICAgPiB3aXRob3V0DQog ICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ID4gPiBfYXRvbWljX2xvYWQsIHdl IGRvbid0IHdhbnQgdG8gZ2l2ZSB0aGUgY29tcGlsZXINCiAgICA+ICAgICA+ICAgICA+IGZyZWVk b20gdG8NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gb3B0aW1pc2UNCiAgICA+ICAgICA+ICAg ICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+IHdoYXQgc2hvdWxkIGJlIGFuIGF0b21pYyBsb2Fk LCBpdCBzaG91bGQgbm90IGJlDQogICAgPiAgICAgPiBhcmJpdGFyaWx5DQogICAgPiAgICAgPiAg ICAgPiBtb3ZlZA0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+ID4gYXJv dW5kLg0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+ID4NCiAgICA+ICAg ICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+IEZpeGVzOiAzOTM2OGViZmM2ICgicmlu ZzogaW50cm9kdWNlIEMxMSBtZW1vcnkgbW9kZWwNCiAgICA+ICAgICA+ICAgICA+IGJhcnJpZXIN CiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gb3B0aW9uIikNCiAgICA+ICAgICA+ICAgICA+ICAg ICA+ID4gPiAgICAgICAgID4gPiA+IENjOiBzdGFibGVAZHBkay5vcmcNCiAgICA+ICAgICA+ICAg ICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+DQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4g ICAgICAgICA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBHYXZpbiBIdSA8Z2F2aW4uaHVAYXJtLmNvbT4N CiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+IFJldmlld2VkLWJ5OiBI b25uYXBwYSBOYWdhcmFoYWxsaQ0KICAgID4gICAgID4gICAgID4gICAgID4gPiA8SG9ubmFwcGEu TmFnYXJhaGFsbGlAYXJtLmNvbT4NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAg ID4gPiA+IFJldmlld2VkLWJ5OiBTdGV2ZSBDYXBwZXIgPHN0ZXZlLmNhcHBlckBhcm0uY29tPg0K ICAgID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+ID4gUmV2aWV3ZWQtYnk6IE9s YSBMaWxqZWRhaGwgPE9sYS5MaWxqZWRhaGxAYXJtLmNvbT4NCiAgICA+ICAgICA+ICAgICA+ICAg ICA+ID4gPiAgICAgICAgID4gPiA+IC0tLQ0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+ICAg ICAgICAgPiA+ID4gIGxpYi9saWJydGVfcmluZy9ydGVfcmluZ19jMTFfbWVtLmggfCAzICsrLQ0K ICAgID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+ID4gIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCiAgICA+ICAgICA+ICAgICA+ICAgICA+ ID4gPiAgICAgICAgID4gPiA+DQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+ IFRoZSByZWFkIG9mIGh0LT50YWlsIG5lZWRzIHRvIGJlIGF0b21pYywgYSBub24tYXRvbWljDQog ICAgPiAgICAgPiByZWFkDQogICAgPiAgICAgPiAgICAgPiB3b3VsZCBub3QNCiAgICA+ICAgICA+ ICAgICA+ICAgICA+ID4gYmUgY29ycmVjdC4NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPg0K ICAgID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgVGhhdCdzIGEgMzJiaXQgdmFsdWUg bG9hZC4NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgIEFGQUlLIG9uIGFsbCBD UFVzIHRoYXQgd2Ugc3VwcG9ydCBpdCBpcyBhbiBhdG9taWMgb3BlcmF0aW9uLg0KICAgID4gICAg ID4gICAgID4gICAgID4gPiA+ICAgICBbT2xhXSBCdXQgdGhhdCB0aGUgb3JkaW5hcnkgQyBsb2Fk IGlzIHRyYW5zbGF0ZWQgdG8gYW4gYXRvbWljDQogICAgPiAgICAgPiBsb2FkDQogICAgPiAgICAg PiAgICAgPiBmb3IgdGhlDQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+IHRhcmdldCBhcmNoaXRl Y3R1cmUgaXMgaW5jaWRlbnRhbC4NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPg0KICAgID4g ICAgID4gICAgID4gICAgID4gPiA+ICAgICBJZiB0aGUgZGVzaWduIHJlcXVpcmVzIGFuIGF0b21p YyBsb2FkICh3aGljaCBpcyB0aGUgY2FzZSBoZXJlKSwNCiAgICA+ICAgICA+IHdlDQogICAgPiAg ICAgPiAgICAgPiAgICAgPiA+ID4gc2hvdWxkIHVzZSBhbiBhdG9taWMgbG9hZCBvbiB0aGUgbGFu Z3VhZ2UgbGV2ZWwuIFRoZW4gd2UgY2FuDQogICAgPiAgICAgPiBiZQ0KICAgID4gICAgID4gICAg ID4gc3VyZSBpdCB3aWxsDQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+IGFsd2F5cyBiZSB0cmFu c2xhdGVkIHRvIGFuIGF0b21pYyBsb2FkIGZvciB0aGUgdGFyZ2V0IGluIHF1ZXN0aW9uDQogICAg PiAgICAgPiBvcg0KICAgID4gICAgID4gICAgID4gICAgID4gPiBjb21waWxhdGlvbiB3aWxsIGZh aWwuIFdlIGRvbid0IGhhdmUgdG8gZGVwZW5kIG9uIGFzc3VtcHRpb25zLg0KICAgID4gICAgID4g ICAgID4gICAgID4gPg0KICAgID4gICAgID4gICAgID4gICAgID4gPiBXZSBhbGwga25vdyB0aGF0 IDMyYml0IGxvYWQvc3RvcmUgb24gY3B1IHdlIHN1cHBvcnQgLSBhcmUgYXRvbWljLg0KICAgID4g ICAgID4gICAgID4gICAgID4gPiBJZiBpdCB3b3VsZG4ndCBiZSB0aGUgY2FzZSAtIERQREsgd291 bGQgYmUgYnJva2VuIGluIGRvemVuIHBsYWNlcy4NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4g U28gd2hhdCB0aGUgcG9pbnQgdG8gcHJldGVuZCB0aGF0ICJpdCBtaWdodCBiZSBub3QgYXRvbWlj IiBpZiB3ZQ0KICAgID4gICAgID4gZG8NCiAgICA+ICAgICA+ICAgICA+IGtub3cgZm9yDQogICAg PiAgICAgPiAgICAgPiAgICAgPiA+IHN1cmUgdGhhdCBpdCBpcz8NCiAgICA+ICAgICA+ICAgICA+ ICAgICA+ID4gSSBkbyB1bmRlcnN0YW5kIHRoYXQgeW91IHdhbnQgdG8gdXNlIGF0b21pY19sb2Fk KHJlbGF4ZWQpIGhlcmUNCiAgICA+ICAgICA+IGZvcg0KICAgID4gICAgID4gICAgID4gICAgID4g PiBjb25zaXN0ZW5jeSwgYW5kIHRvIGNvbmZvcm0gd2l0aCBDMTEgbWVtLW1vZGVsIGFuZCBJIGRv bid0IHNlZQ0KICAgID4gICAgID4gYW55DQogICAgPiAgICAgPiAgICAgPiBoYXJtIGluDQogICAg PiAgICAgPiAgICAgPiAgICAgPiA+IHRoYXQuDQogICAgPiAgICAgPiAgICAgPiAgICAgPiBXZSBj YW4gY29udGludWUgdG8gZGlzY3VzcyB0aGUgdG9waWMsIGl0IGlzIGEgZ29vZCBkaXNjdXNzaW9u LiBCdXQsIGFzDQogICAgPiAgICAgPiBmYXINCiAgICA+ICAgICA+ICAgICA+IHRoaXMgcGF0Y2gg aXMgY29uY2VybmVkLCBjYW4gSSBjb25zaWRlciB0aGlzIGFzIHVzIGhhdmluZyBhIGNvbnNlbnN1 cz8NCiAgICA+ICAgICA+IFRoZQ0KICAgID4gICAgID4gICAgID4gZmlsZSBydGVfcmluZ19jMTFf bWVtLmggaXMgc3BlY2lmaWNhbGx5IGZvciBDMTEgbWVtb3J5IG1vZGVsIGFuZCBJIGFsc28NCiAg ICA+ICAgICA+IGRvDQogICAgPiAgICAgPiAgICAgPiBub3Qgc2VlIGFueSBoYXJtIGluIGhhdmlu ZyBjb2RlIHRoYXQgY29tcGxldGVseSBjb25mb3JtcyB0byBDMTENCiAgICA+ICAgICA+IG1lbW9y eQ0KICAgID4gICAgID4gICAgID4gbW9kZWwuDQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAg ID4gICAgID4gICAgIEhhdmUgeW91IGd1eXMgY2hlY2tlZCB0aGUgb3V0cHV0IGFzc2VtYmx5IHdp dGggYW5kIHdpdGhvdXQgYXRvbWljDQogICAgPiAgICAgPiAgICAgPiBsb2FkPw0KICAgID4gICAg ID4gICAgID4gICAgIFRoZXJlIGlzIGFuIGV4dHJhICJhZGQiIGluc3RydWN0aW9uIHdpdGggYXQg bGVhc3QgdGhlIGNvZGUgSSBoYXZlDQogICAgPiAgICAgPiBjaGVja2VkLg0KICAgID4gICAgID4g ICAgID4gICAgIEkgdGhpbmssIGNvbXBpbGVyIGlzIG5vdCBzbWFydCBlbm91Z2ggdG8gdW5kZXJz dGFuZCBpdCBpcyBhIGRlYWQgY29kZQ0KICAgID4gICAgID4gZm9yDQogICAgPiAgICAgPiAgICAg PiAgICAgYXJtNjQuDQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gICAgIOKe nCBbfl0gJCBhYXJjaDY0LWxpbnV4LWdudS1nY2MgLXYNCiAgICA+ICAgICA+ICAgICA+ICAgICBV c2luZyBidWlsdC1pbiBzcGVjcy4NCiAgICA+ICAgICA+ICAgICA+ICAgICBDT0xMRUNUX0dDQz1h YXJjaDY0LWxpbnV4LWdudS1nY2MNCiAgICA+ICAgICA+ICAgICA+ICAgICBDT0xMRUNUX0xUT19X UkFQUEVSPS91c3IvbGliL2djYy9hYXJjaDY0LWxpbnV4LWdudS84LjIuMC9sdG8tDQogICAgPiAg ICAgPiAgICAgPiB3cmFwcGVyDQogICAgPiAgICAgPiAgICAgPiAgICAgVGFyZ2V0OiBhYXJjaDY0 LWxpbnV4LWdudQ0KICAgID4gICAgID4gICAgID4gICAgIENvbmZpZ3VyZWQgd2l0aDogL2J1aWxk L2FhcmNoNjQtbGludXgtZ251LWdjYy9zcmMvZ2NjLTguMi4wL2NvbmZpZ3VyZQ0KICAgID4gICAg ID4gICAgID4gICAgIC0tcHJlZml4PS91c3IgLS1wcm9ncmFtLXByZWZpeD1hYXJjaDY0LWxpbnV4 LWdudS0NCiAgICA+ICAgICA+ICAgICA+ICAgICAtLXdpdGgtbG9jYWwtcHJlZml4PS91c3IvYWFy Y2g2NC1saW51eC1nbnUNCiAgICA+ICAgICA+ICAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0vdXNy L2FhcmNoNjQtbGludXgtZ251DQogICAgPiAgICAgPiAgICAgPiAgICAgLS13aXRoLWJ1aWxkLXN5 c3Jvb3Q9L3Vzci9hYXJjaDY0LWxpbnV4LWdudSAtLWxpYmRpcj0vdXNyL2xpYg0KICAgID4gICAg ID4gICAgID4gICAgIC0tbGliZXhlY2Rpcj0vdXNyL2xpYiAtLXRhcmdldD1hYXJjaDY0LWxpbnV4 LWdudQ0KICAgID4gICAgID4gICAgID4gICAgIC0taG9zdD14ODZfNjQtcGMtbGludXgtZ251IC0t YnVpbGQ9eDg2XzY0LXBjLWxpbnV4LWdudSAtLWRpc2FibGUtbmxzDQogICAgPiAgICAgPiAgICAg PiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMsYysrIC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS10 aHJlYWRzPXBvc2l4DQogICAgPiAgICAgPiAgICAgPiAgICAgLS13aXRoLXN5c3RlbS16bGliIC0t d2l0aC1pc2wgLS1lbmFibGUtX19jeGFfYXRleGl0DQogICAgPiAgICAgPiAgICAgPiAgICAgLS1k aXNhYmxlLWxpYnVud2luZC1leGNlcHRpb25zIC0tZW5hYmxlLWNsb2NhbGU9Z251DQogICAgPiAg ICAgPiAgICAgPiAgICAgLS1kaXNhYmxlLWxpYnN0ZGN4eC1wY2ggLS1kaXNhYmxlLWxpYnNzcCAt LWVuYWJsZS1nbnUtdW5pcXVlLW9iamVjdA0KICAgID4gICAgID4gICAgID4gICAgIC0tZW5hYmxl LWxpbmtlci1idWlsZC1pZCAtLWVuYWJsZS1sdG8gLS1lbmFibGUtcGx1Z2luDQogICAgPiAgICAg PiAgICAgPiAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJpYmVydHkgLS13aXRoLWxpbmtlci1oYXNo LXN0eWxlPWdudQ0KICAgID4gICAgID4gICAgID4gICAgIC0tZW5hYmxlLWdudS1pbmRpcmVjdC1m dW5jdGlvbiAtLWRpc2FibGUtbXVsdGlsaWIgLS1kaXNhYmxlLXdlcnJvcg0KICAgID4gICAgID4g ICAgID4gICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UNCiAgICA+ICAgICA+ICAgICA+ICAg ICBUaHJlYWQgbW9kZWw6IHBvc2l4DQogICAgPiAgICAgPiAgICAgPiAgICAgZ2NjIHZlcnNpb24g OC4yLjAgKEdDQykNCiAgICA+ICAgICA+ICAgICA+DQogICAgPiAgICAgPiAgICAgPg0KICAgID4g ICAgID4gICAgID4gICAgICMgYnVpbGQgc2V0dXANCiAgICA+ICAgICA+ICAgICA+ICAgICBtYWtl IC1qIDggY29uZmlnIFQ9YXJtNjQtYXJtdjhhLWxpbnV4YXBwLWdjYyAgQ1JPU1M9YWFyY2g2NC1s aW51eC0NCiAgICA+ICAgICA+IGdudS0NCiAgICA+ICAgICA+ICAgICA+ICAgICBtYWtlIC1qIDgg dGVzdC1idWlsZCBDUk9TUz1hYXJjaDY0LWxpbnV4LWdudS0NCiAgICA+ICAgICA+ICAgICA+DQog ICAgPiAgICAgPiAgICAgPiAgICAgIyBnZW5lcmF0ZSBhc20NCiAgICA+ICAgICA+ICAgICA+ICAg ICBhYXJjaDY0LWxpbnV4LWdudS1nZGIgLWJhdGNoIC1leCAnZmlsZSBidWlsZC9hcHAvdGVzdCAn IC1leA0KICAgID4gICAgID4gJ2Rpc2Fzc2VtYmxlIC9ycw0KICAgID4gICAgID4gICAgID4gYnVj a2V0X2VucXVldWVfc2luZ2xlJw0KICAgID4gICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICA+ ICAgICBJIGhhdmUgdXBsb2FkZWQgZ2VuZXJhdGVkIGZpbGUgZm9yIHlvdXIgY29udmVuaWVuY2UN CiAgICA+ICAgICA+ICAgICA+ICAgICB3aXRoX2F0b21pY19sb2FkLnR4dChpbmNsdWRlcyBwYXRj aCAxLDIsMykNCiAgICA+ICAgICA+ICAgICA+ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K ICAgID4gICAgID4gICAgID4gICAgIGh0dHBzOi8vcGFzdGViaW4uY29tL1NRNncxeVJ1DQogICAg PiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gICAgIHdpdGhvdXRfYXRvbWljX2xvYWQu dHh0KGluY2x1ZGVzIHBhdGNoIDIsMykNCiAgICA+ICAgICA+ICAgICA+ICAgICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KICAgID4gICAgID4gICAgID4gICAgIGh0dHBzOi8vcGFzdGViaW4uY29t L0Jwdm5EMENBDQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4NCiAgICA+ICAg ICA+ICAgICA+ICAgICB3aXRob3V0X2F0b21pYw0KICAgID4gICAgID4gICAgID4gICAgIC0tLS0t LS0tLS0tLS0NCiAgICA+ICAgICA+ICAgICA+ICAgICAyMyAgICAgICAgICAgICAgaWYgKCFzaW5n bGUpDQogICAgPiAgICAgPiAgICAgPiAgICAgICAgMHgwMDAwMDAwMDAwNjhkMjkwIDwrMjQwPjog ICA4NSAwMCAwMCAzNSAgICAgY2JueiAgICB3NSwgMHg2OGQyYTANCiAgICA+ICAgICA+ICAgICA+ IDxidWNrZXRfZW5xdWV1ZV9zaW5nbGUrMjU2Pg0KICAgID4gICAgID4gICAgID4gICAgICAgIDB4 MDAwMDAwMDAwMDY4ZDI5NCA8KzI0ND46ICAgODIgMDQgNDAgYjkgICAgIGxkciAgICAgdzIsIFt4 NCwgIzRdDQogICAgPiAgICAgPiAgICAgPiAgICAgICAgMHgwMDAwMDAwMDAwNjhkMjk4IDwrMjQ4 PjogICA1ZiAwMCAwMSA2YiAgICAgY21wICAgICB3MiwgdzENCiAgICA+ICAgICA+ICAgICA+ICAg ICAgICAweDAwMDAwMDAwMDA2OGQyOWMgPCsyNTI+OiAgIDIxIDAxIDAwIDU0ICAgICBiLm5lICAg IDB4NjhkMmMwDQogICAgPiAgICAgPiAgICAgPiA8YnVja2V0X2VucXVldWVfc2luZ2xlKzI4OD4g IC8vIGIuYW55DQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gICAgIDI0ICAg ICAgICAgICAgICAgICAgICAgIHdoaWxlICh1bmxpa2VseShodC0+dGFpbCAhPSBvbGRfdmFsKSkN CiAgICA+ICAgICA+ICAgICA+ICAgICAyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0 ZV9wYXVzZSgpOw0KICAgID4gICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICA+DQogICAgPiAg ICAgPiAgICAgPiAgICAgd2l0aF9hdG9taWMNCiAgICA+ICAgICA+ICAgICA+ICAgICAtLS0tLS0t LS0tLQ0KICAgID4gICAgID4gICAgID4gICAgIDIzICAgICAgICAgICAgICBpZiAoIXNpbmdsZSkN CiAgICA+ICAgICA+ICAgICA+ICAgICAgICAweDAwMDAwMDAwMDA2OGNlYjAgPCsyNDA+OiAgIDAw IDEwIDA0IDkxICAgICBhZGQgICAgIHgwLCB4MCwgIzB4MTA0DQogICAgPiAgICAgPiAgICAgPiAg ICAgICAgMHgwMDAwMDAwMDAwNjhjZWI0IDwrMjQ0PjogICA4NCAwMCAwMCAzNSAgICAgY2JueiAg ICB3NCwgMHg2OGNlYzQNCiAgICA+ICAgICA+ICAgICA+IDxidWNrZXRfZW5xdWV1ZV9zaW5nbGUr MjYwPg0KICAgID4gICAgID4gICAgID4gICAgICAgIDB4MDAwMDAwMDAwMDY4Y2ViOCA8KzI0OD46 ICAgMDIgMDAgNDAgYjkgICAgIGxkciAgICAgdzIsIFt4MF0NCiAgICA+ICAgICA+ICAgICA+ICAg ICAgICAweDAwMDAwMDAwMDA2OGNlYmMgPCsyNTI+OiAgIDNmIDAwIDAyIDZiICAgICBjbXAgICAg IHcxLCB3Mg0KICAgID4gICAgID4gICAgID4gICAgICAgIDB4MDAwMDAwMDAwMDY4Y2VjMCA8KzI1 Nj46ICAgMDEgMDkgMDAgNTQgICAgIGIubmUgICAgMHg2OGNmZTANCiAgICA+ICAgICA+ICAgICA+ IDxidWNrZXRfZW5xdWV1ZV9zaW5nbGUrNTQ0PiAgLy8gYi5hbnkNCiAgICA+ICAgICA+ICAgICA+ DQogICAgPiAgICAgPiAgICAgPiAgICAgMjQgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHVu bGlrZWx5KG9sZF92YWwgIT0gX19hdG9taWNfbG9hZF9uKCZodC0+dGFpbCwNCiAgICA+ICAgICA+ ICAgICA+IF9fQVRPTUlDX1JFTEFYRUQpKSkNCiAgICA+ICAgICA+ICAgICA+DQogICAgPiAgICAg PiAgICAgPg0KICAgID4gICAgID4gICAgID4gICAgIEkgZG9uJ3Qgd2FudCB0byBibG9jayB0aGlz IHNlcmllcyBvZiBwYXRjaGVzIGR1ZSB0aGlzIHBhdGNoLiBDYW4gd2UNCiAgICA+ICAgICA+IG1h a2UNCiAgICA+ICAgICA+ICAgICA+ICAgICByZSBzcGluIG9uZSBzZXJpZXMgd2l0aCAyIGFuZCAz IHBhdGNoZXMuIEFuZCBXYWl0IGZvciBwYXRjaCAxIHRvDQogICAgPiAgICAgPiBjb25jbHVkZT8N CiAgICA+ICAgICA+ICAgICA+DQogICAgPiAgICAgPiAgICAgPiAgICAgVGhvdWdodHM/DQogICAg PiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICA+DQogICAg PiAgICAgPiAgICAgPg0KICAgID4gICAgID4gICAgID4gICAgID4NCiAgICA+ICAgICA+ICAgICA+ ICAgICA+ID4gQnV0IGFyZ3VtZW50IHRoYXQgd2Ugc2hvdWxkbid0IGFzc3VtZSAzMmJpdCBsb2Fk L3N0b3JlIG9wcyBhcw0KICAgID4gICAgID4gICAgID4gYXRvbWljDQogICAgPiAgICAgPiAgICAg PiAgICAgPiA+IHNvdW5kcyBhIGJpdCBmbGFreSB0byBtZS4NCiAgICA+ICAgICA+ICAgICA+ICAg ICA+ID4gS29uc3RhbnRpbg0KICAgID4gICAgID4gICAgID4gICAgID4gPg0KICAgID4gICAgID4g ICAgID4gICAgID4gPg0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+DQogICAgPiAgICAgPiAg ICAgPiAgICAgPiA+ID4NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPg0KICAgID4gICAgID4g ICAgID4gICAgID4gPiA+ICAgICAgICAgPiBCdXQgdGhlcmUgYXJlIG5vIG1lbW9yeSBvcmRlcmlu ZyByZXF1aXJlbWVudHMgKHdpdGgNCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAg ID4gcmVnYXJkcyB0byBvdGhlciBsb2FkcyBhbmQvb3Igc3RvcmVzIGJ5IHRoaXMgdGhyZWFkKSBz bw0KICAgID4gICAgID4gICAgID4gcmVsYXhlZA0KICAgID4gICAgID4gICAgID4gICAgID4gPiBt ZW1vcnkgb3JkZXIgaXMgc3VmZmljaWVudC4NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAg ICAgICAgID4gQW5vdGhlciBhc3BlY3Qgb2YgdXNpbmcgX19hdG9taWNfbG9hZF9uKCkgaXMgdGhh dCB0aGUNCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiBjb21waWxlciBjYW5ub3QgIm9wdGlt aXNlIiB0aGlzIGxvYWQgKGUuZy4gY29tYmluZSwgaG9pc3QgZXRjKSwgaXQNCiAgICA+ICAgICA+ IGhhcw0KICAgID4gICAgID4gICAgID4gdG8gYmUNCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4g ZG9uZSBhcw0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiBzcGVjaWZpZWQg aW4gdGhlIHNvdXJjZSBjb2RlIHdoaWNoIGlzIGFsc28gd2hhdCB3ZSBuZWVkDQogICAgPiAgICAg PiBoZXJlLg0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+DQogICAgPiAgICAgPiAgICAgPiAg ICAgPiA+ID4gICAgICAgICBJIHRoaW5rIEplcmluIHBvaW50cyB0aGF0IHJ0ZV9wYXVzZSgpIGFj dHMgaGVyZSBhcyBjb21waWxlcg0KICAgID4gICAgID4gICAgID4gYmFycmllciB0b28sDQogICAg PiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICBzbyBubyBuZWVkIHRvIHdvcnJ5IHRoYXQg Y29tcGlsZXIgd291bGQgb3B0aW1pemUgb3V0IHRoZQ0KICAgID4gICAgID4gbG9vcC4NCiAgICA+ ICAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgW09sYV0gU29ycnkgbWlzc2VkIHRoYXQuIEJ1dCB0 aGUgYmFycmllciBiZWhhdmlvdXIgb2YNCiAgICA+ICAgICA+IHJ0ZV9wYXVzZSgpDQogICAgPiAg ICAgPiAgICAgPiAgICAgPiA+ID4gaXMgbm90IHBhcnQgb2YgQzExLCBpcyBpdCBlc3NlbnRpYWxs eSBhIGhhbmQtbWFkZSBmZWF0dXJlIHRvDQogICAgPiAgICAgPiBzdXBwb3J0DQogICAgPiAgICAg PiAgICAgPiAgICAgPiA+ID4gdGhlIGxlZ2FjeSBtdWx0aXRocmVhZGVkIG1lbW9yeSBtb2RlbCAo d2hpY2ggdXNlcyBleHBsaWNpdA0KICAgID4gICAgID4gSFcNCiAgICA+ICAgICA+ICAgICA+IGFu ZA0KICAgID4gICAgID4gICAgID4gICAgID4gPiBjb21waWxlciBiYXJyaWVycykuIEknZCBwcmVm ZXIgY29kZSB1c2luZyB0aGUgQzExIG1lbW9yeSBtb2RlbA0KICAgID4gICAgID4gbm90IHRvDQog ICAgPiAgICAgPiAgICAgPiAgICAgPiA+IGRlcGVuZCBvbiBzdWNoIGxlZ2FjeSBmZWF0dXJlcy4N CiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPg0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+ DQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4g PiAgICAgICAgIEtvbnN0YW50aW4NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPg0KICAgID4g ICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPg0KICAgID4gICAgID4gICAgID4gICAgID4g PiA+ICAgICAgICAgPiBPbmUgcG9pbnQgd29ydGggbWVudGlvbmluZyB0aG91Z2ggaXMgdGhhdCB0 aGlzIGNoYW5nZSBpcw0KICAgID4gICAgID4gZm9yDQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ ID4gdGhlIHJ0ZV9yaW5nX2MxMV9tZW0uaCBmaWxlLCBub3QgdGhlIGxlZ2FjeSByaW5nLiBJdCBt YXkgYmUNCiAgICA+ICAgICA+IHdvcnRoDQogICAgPiAgICAgPiAgICAgPiBwZXJzaXN0aW5nDQog ICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+IHdpdGggZ2V0dGluZyB0aGUgQzEx IGNvZGUgcmlnaHQgd2hlbiBwZW9wbGUgYXJlIGxlc3MNCiAgICA+ICAgICA+IGV4Y2l0ZWQNCiAg ICA+ICAgICA+ICAgICA+IGFib3V0DQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+IHNlbmRpbmcg YSByZWxlYXNlIG91dD8NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4NCiAg ICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gV2UgY2FuIGV4cGxhaW4gdGhhdCBm b3IgQzExIHdlIHdvdWxkIHByZWZlciB0byBkbyBsb2Fkcw0KICAgID4gICAgID4gYW5kDQogICAg PiAgICAgPiAgICAgPiBzdG9yZXMNCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gYXMgcGVyIHRo ZSBDMTEgbWVtb3J5IG1vZGVsLiBJbiB0aGUgY2FzZSBvZiBydGVfcmluZywgdGhlIGNvZGUgaXMN CiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gc2VwYXJhdGVkIGNsZWFubHkg aW50byBDMTEgc3BlY2lmaWMgZmlsZXMgYW55d2F5Lg0KICAgID4gICAgID4gICAgID4gICAgID4g PiA+ICAgICAgICAgPg0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiBJIHRo aW5rIHJlYWRpbmcgaHQtPnRhaWwgdXNpbmcgX19hdG9taWNfbG9hZF9uKCkgaXMgdGhlDQogICAg PiAgICAgPiBtb3N0DQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+IGFwcHJvcHJpYXRlIHdheS4g V2Ugc2hvdyB0aGF0IGh0LT50YWlsIGlzIHVzZWQgZm9yDQogICAgPiAgICAgPiBzeW5jaHJvbml6 YXRpb24sDQogICAgPiAgICAgPiAgICAgPiB3ZQ0KICAgID4gICAgID4gICAgID4gICAgID4gPiA+ ICAgICAgICAgPiBhY2tub3dsZWRnZSB0aGF0IGh0LT50YWlsIG1heSBiZSB3cml0dGVuIGJ5IG90 aGVyDQogICAgPiAgICAgPiB0aHJlYWRzDQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4gd2l0 aG91dCBhbnkgb3RoZXIga2luZCBvZiBzeW5jaHJvbml6YXRpb24gKGUuZy4gbm8gbG9jayBpbnZv bHZlZCkNCiAgICA+ICAgICA+ICAgICA+IGFuZCB3ZQ0KICAgID4gICAgID4gICAgID4gICAgID4g PiByZXF1aXJlDQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+IGFuIGF0b21p YyBsb2FkIChhbnkgd3JpdGUgdG8gaHQtPnRhaWwgbXVzdCBhbHNvIGJlIGF0b21pYykuDQogICAg PiAgICAgPiAgICAgPiAgICAgPiA+ID4gICAgICAgICA+DQogICAgPiAgICAgPiAgICAgPiAgICAg PiA+ID4gICAgICAgICA+IFVzaW5nIHZvbGF0aWxlIGFuZCBleHBsaWNpdCBjb21waWxlciAob3Ig cHJvY2Vzc29yKQ0KICAgID4gICAgID4gbWVtb3J5DQogICAgPiAgICAgPiAgICAgPiBiYXJyaWVy cw0KICAgID4gICAgID4gICAgID4gICAgID4gPiAoZmVuY2VzKSBpcyB0aGUgbGVnYWN5IHByZS1D MTEgd2F5IG9mIGFjY29tcGxpc2hpbmcgdGhlc2UgdGhpbmdzLg0KICAgID4gICAgID4gICAgID4g ICAgID4gPiA+IFRoZXJlJ3MNCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4g YSByZWFzb24gd2h5IEMxMS9DKysxMSBtb3ZlZCBhd2F5IGZyb20gdGhlIG9sZCB3YXlzLg0KICAg ID4gICAgID4gICAgID4gICAgID4gPiA+ICAgICAgICAgPiA+ID4NCiAgICA+ICAgICA+ICAgICA+ ICAgICA+ID4gPiAgICAgICAgID4gPiA+ICAgICAgICAgX19hdG9taWNfc3RvcmVfbigmaHQtPnRh aWwsIG5ld192YWwsDQogICAgPiAgICAgPiAgICAgPiBfX0FUT01JQ19SRUxFQVNFKTsNCiAgICA+ ICAgICA+ICAgICA+ICAgICA+ID4gPiAgICAgICAgID4gPiA+IC0tDQogICAgPiAgICAgPiAgICAg PiAgICAgPiA+ID4gICAgICAgICA+ID4gPiAyLjcuNA0KICAgID4gICAgID4gICAgID4gICAgID4g PiA+ICAgICAgICAgPiA+ID4NCiAgICA+ICAgICA+ICAgICA+ICAgICA+ID4gPg0KICAgID4gICAg ID4gICAgID4gICAgID4gPiA+DQogICAgPiAgICAgPiAgICAgPiAgICAgPiA+ID4NCiAgICA+ICAg ICA+ICAgICA+ICAgICA+DQogICAgPiAgICAgPiAgICAgPg0KICAgID4gICAgID4NCiAgICA+ICAg ICA+DQogICAgPiANCiAgICA+IA0KICAgID4gDQogICAgDQoNCg==