From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.24; helo=mga09.intel.com; envelope-from=ruiyu.ni@intel.com; receiver=edk2-devel@lists.01.org Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 083D22117D271 for ; Wed, 7 Nov 2018 07:27:46 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Nov 2018 07:27:45 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,475,1534834800"; d="scan'208";a="279111905" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga006.fm.intel.com with ESMTP; 07 Nov 2018 07:27:45 -0800 Received: from FMSMSX109.amr.corp.intel.com (10.18.116.9) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 7 Nov 2018 07:27:45 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx109.amr.corp.intel.com (10.18.116.9) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 7 Nov 2018 07:27:45 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.117]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.214]) with mapi id 14.03.0415.000; Wed, 7 Nov 2018 23:27:43 +0800 From: "Ni, Ruiyu" To: Ard Biesheuvel , Laszlo Ersek CC: "edk2-devel@lists.01.org" , "Kinney, Michael D" , "Gao, Liming" Thread-Topic: [edk2] [PATCH] MdePkg/BaseSynchronizationLib XCODE: fix InternalSync[De|In]crement Thread-Index: AQHUdqaplFNysce9u0iekejFD1a0bqVD3aiAgACNrmA= Date: Wed, 7 Nov 2018 15:27:43 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5BEF5A7F@SHSMSX104.ccr.corp.intel.com> References: <20181107040346.153720-1-ruiyu.ni@intel.com> <555b0649-a067-472e-2b81-b52457deb67b@redhat.com> In-Reply-To: Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZGI2MWE2NDktYzllYy00ZjM0LTgwYTktZjk5YmI2N2QxY2ZjIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiZExBOXVKS2kyb0ZDVWZiOXNWWmJuNUJKNlR4elN1MitYcW9cL3VzbDA3bVwvUTdFT2pwc0VnQ3R1ZDc3WGlzcXU2In0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH] MdePkg/BaseSynchronizationLib XCODE: fix InternalSync[De|In]crement X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Nov 2018 15:27:47 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg W21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0KPiBTZW50OiBXZWRuZXNkYXksIE5v dmVtYmVyIDcsIDIwMTggMTA6NDYgUE0NCj4gVG86IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhh dC5jb20+DQo+IENjOiBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47IGVkazItZGV2ZWxA bGlzdHMuMDEub3JnOyBLaW5uZXksIE1pY2hhZWwgRA0KPiA8bWljaGFlbC5kLmtpbm5leUBpbnRl bC5jb20+OyBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJl OiBbZWRrMl0gW1BBVENIXSBNZGVQa2cvQmFzZVN5bmNocm9uaXphdGlvbkxpYiBYQ09ERTogZml4 DQo+IEludGVybmFsU3luY1tEZXxJbl1jcmVtZW50DQo+IA0KPiBPbiA3IE5vdmVtYmVyIDIwMTgg YXQgMTU6MzEsIExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+IHdyb3RlOg0KPiA+ICgr QW5kcmV3KQ0KPiA+DQo+ID4gSGkgUmF5LA0KPiA+DQo+ID4gT24gMTEvMDcvMTggMDU6MDMsIFJ1 aXl1IE5pIHdyb3RlOg0KPiA+PiBSRUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9z aG93X2J1Zy5jZ2k/aWQ9MTMwMw0KPiA+Pg0KPiA+PiBYQ09ERSBkaXNhc3NlbWJseSBjb2RlIG9m IEludGVybmFsU3luY0RlY3JlbWVudCB3aXRoIHRvZGF5J3MgY29kZSBpczoNCj4gPj4NCj4gPj4g ICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQo+ID4+ICAgICAibW92bCAgICAkMSwgJSVlYXggIFxu XHQiDQo+ID4+ICAgICAibG9jayAgICAgICAgICAgICAgIFxuXHQiDQo+ID4+ICAgICAieGFkZCAg ICAlJWVheCwgJTEgIFxuXHQiDQo+ID4+ICAgICAiaW5jICAgICAlJWVheCAgICAgIFxuXHQiDQo+ ID4+ICAgICA6ICI9YSIgKFJlc3VsdCksICAgICAgICAgIC8vICUwDQo+ID4+ICAgICAgICIrbSIg KCpWYWx1ZSkgICAgICAgICAgIC8vICUxDQo+ID4+ICAgICA6ICAgICAgICAgICAgICAgICAgICAg ICAgIC8vIG5vIGlucHV0cyB0aGF0IGFyZW4ndCBhbHNvIG91dHB1dHMNCj4gPj4gICAgIDogIm1l bW9yeSIsDQo+ID4+ICAgICAgICJjYyINCj4gPj4gICAgICk7DQo+ID4+DQo+ID4+ICAwOiAgICAg ICA1NSAgICAgIHB1c2hsICAgJWVicA0KPiA+PiAgMTogICAgICAgODkgZTUgICBtb3ZsICAgICVl c3AsICVlYnANCj4gPj4gIDM6ICAgICAgIDhiIDQ1IDA4ICAgICAgICBtb3ZsICAgIDgoJWVicCks ICVlYXgNCj4gPj4gIDY6ICAgICAgIGI4IDAxIDAwIDAwIDAwICBtb3ZsICAgICQxLCAlZWF4DQo+ ID4+ICBiOiAgICAgICBmMCAgICAgIGxvY2sNCj4gPj4gIGM6ICAgICAgIDBmIGMxIDAwICAgICAg ICB4YWRkbCAgICVlYXgsIF9JbnRlcm5hbFN5bmNJbmNyZW1lbnQoJWVheCkNCj4gPj4gIGY6ICAg ICAgIDQwICAgICAgaW5jbCAgICAlZWF4DQo+ID4+IDEwOiAgICAgICA1ZCAgICAgIHBvcGwgICAg JWVicA0KPiA+PiAxMTogICAgICAgYzMgICAgICByZXRsDQo+ID4+DQo+ID4+ICVFQVggdmFsdWUg cmV0cmlldmVkIGluIGxpbmUgIzMgaXMgb3ZlcndyaXR0ZW4gaW4gbGluZSAjNi4NCj4gPg0KPiA+ IChhKSBUaGlzIGxvb2tzIGxpa2UgYW4gWENPREUgYnVnIHRvIG1lLiBUaGUgIj1hIiBjb25zdHJh aW50IG9uIG9wZXJhbmQNCj4gPiAlMCBtZWFucyB0aGF0IFJlc3VsdCBzaG91bGQgYmUgc2V0IGZy b20gZWF4L3JheCwgYW5kIHRoYXQgdGhpcyBvcGVyYW5kDQo+ID4gaXMgIndyaXRlIG9ubHkiLiBI ZXJlJ3MgdGhlIGdjYyBkb2N1bWVudGF0aW9uOg0KPiA+DQo+ID4gIlRoZSBvcmRpbmFyeSBvdXRw dXQgb3BlcmFuZHMgbXVzdCBiZSB3cml0ZS1vbmx5OyBHQ0MgYXNzdW1lcyB0aGF0IHRoZQ0KPiA+ IHZhbHVlcyBpbiB0aGVzZSBvcGVyYW5kcyBiZWZvcmUgdGhlIGluc3RydWN0aW9uIGFyZSBkZWFk IGFuZCBuZWVkIG5vdA0KPiA+IGJlIGdlbmVyYXRlZC4iDQo+ID4NCj4gDQo+IERvIHdlIG5lZWQg dG8gdXNlIGVhcmx5IGNsb2JiZXIgaGVyZT8gIj0mYSI/DQo+IA0KPiBJdCBzZWVtcyB0byBtZSB0 aGF0IHdpdGhvdXQgdGhhdCwgdGhlIGNvbXBpbGVyIGlzIGZyZWUgdG8gdXNlIGVheCBhcyBpbnB1 dCwgc2luY2UgaXQNCj4gb25seSBhc3N1bWVzIHRoYXQgZWF4IHdpbGwgYmUgc2V0IGJ5IHRoZSBs YXN0IGluc3RydWN0aW9uLg0KDQpBcmQsDQpUaGFua3MgZm9yIHBvaW50aW5nIHRoYXQuDQpJIGZv dW5kIGJlbG93IHdvcmRpbmdzIGZyb20gR0NDIGRvY3VtZW50czoNCiJVc2UgdGhlIOKAmCbigJkg Y29uc3RyYWludCBtb2RpZmllciAoc2VlIE1vZGlmaWVycykgb24gYWxsIG91dHB1dCBvcGVyYW5k cyB0aGF0IG11c3Qgbm90DQogb3ZlcmxhcCBhbiBpbnB1dC4gT3RoZXJ3aXNlLCBHQ0MgbWF5IGFs bG9jYXRlIHRoZSBvdXRwdXQgb3BlcmFuZCBpbiB0aGUgc2FtZQ0KIHJlZ2lzdGVyIGFzIGFuIHVu cmVsYXRlZCBpbnB1dCBvcGVyYW5kLCBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBhc3NlbWJs ZXIgY29kZQ0KIGNvbnN1bWVzIGl0cyBpbnB1dHMgYmVmb3JlIHByb2R1Y2luZyBvdXRwdXRzLiBU aGlzIGFzc3VtcHRpb24gbWF5IGJlIGZhbHNlIGlmIHRoZQ0KIGFzc2VtYmxlciBjb2RlIGFjdHVh bGx5IGNvbnNpc3RzIG9mIG1vcmUgdGhhbiBvbmUgaW5zdHJ1Y3Rpb24uIg0KDQpJIHRoaW5rICcm JyBpcyBqdXN0IGZvciB0aGlzIGNhc2UuDQoNCkBMYXN6bG8sDQpEbyB5b3UgYWdyZWUgdGhhdCBh IHNpbXBsZSBwYXRjaCB0byBhZGQgJyYnIHRvIGJvdGggSWEzMiBhbmQgWDY0IHZlcnNpb24gb2YN CkludGVybmFsU3luY1tEZXxJbl1jcmVtZW50IGlzIGdvb2QgZW5vdWdoPw0KDQpJIGFjdHVhbGx5 IHRyaWVkIGluIFhDT0RFNSB0b29sY2hhaW4gYW5kIGl0IHdvcmtzIGdvb2QuDQptb3ZsICAgIDgo JWVicCksICVlYXgNCmJlY29tZXMNCm1vdmwgICAgOCglZWJwKSwgJWVjeA0KDQo+IA0KPiANCj4g PiBGdXJ0aGVybW9yZSwgaWYgYSByZWdpc3RlciBpcyBuYW1lZCBpbiBhbnkgb3BlcmFuZCBjb25z dHJhaW50IChzdWNoIGFzDQo+ID4gaW5wdXQsIG91dHB1dCwgaW5wdXQtb3V0cHV0KSwgdGhlbiBp dCBjYW5ub3QsIGJ5IGRlZmluaXRpb24sIGJlIGxpc3RlZA0KPiA+IGluIHRoZSAiY2xvYmJlciBs aXN0IiAtLSBpdCBpcyAqb2J2aW91cyogdGhhdCB0aGUgaW5saW5lIGFzc2VtYmx5IHdpbGwNCj4g PiB3b3JrIHdpdGggdGhhdCByZWdpc3Rlci4gSW4gY2FzZSBvZiBhbiBvdXRwdXQtb25seSBvcGVy YW5kLCBpdCdzDQo+ID4gb2J2aW91cyB0aGF0IHRoZSBpbmxpbmUgYXNzZW1ibHkgd2lsbCAqb3Zl cndyaXRlKiB0aGF0IHJlZ2lzdGVyLCBhbmQNCj4gPiB0aGUgY29tcGlsZXIgY2Fubm90IGFzc3Vt ZSAqd2hlbiogdGhhdCBvdmVyd3JpdGUgd2lsbCBoYXBwZW4uIEhlcmUncw0KPiA+IHRoZSBnY2MN Cj4gPiBkb2N1bWVudGF0aW9uOg0KPiA+DQo+ID4gIllvdSBtYXkgbm90IHdyaXRlIGEgY2xvYmJl ciBkZXNjcmlwdGlvbiBpbiBhIHdheSB0aGF0IG92ZXJsYXBzIHdpdGgNCj4gPiBhbiBpbnB1dCBv ciBvdXRwdXQgb3BlcmFuZC4gIEZvciBleGFtcGxlLCB5b3UgbWF5IG5vdCBoYXZlIGFuIG9wZXJh bmQNCj4gPiBkZXNjcmliaW5nIGEgcmVnaXN0ZXIgY2xhc3Mgd2l0aCBvbmUgbWVtYmVyIGlmIHlv dSBtZW50aW9uIHRoYXQNCj4gPiByZWdpc3RlciBpbiB0aGUgY2xvYmJlciBsaXN0LiAgVmFyaWFi bGVzIGRlY2xhcmVkIHRvIGxpdmUgaW4gc3BlY2lmaWMNCj4gPiByZWdpc3RlcnMgWy4uLl0gYW5k IHVzZWQgYXMgYXNtIGlucHV0IG9yIG91dHB1dCBvcGVyYW5kcyBtdXN0IGhhdmUgbm8NCj4gPiBw YXJ0IG1lbnRpb25lZCBpbiB0aGUgY2xvYmJlciBkZXNjcmlwdGlvbi4iIFsxXQ0KPiA+DQo+ID4g SG93ZXZlciwgWENPREUgZ2VuZXJhdGVzIHN1Y2ggY29kZSB0aGF0IGRlcGVuZHMgb24gRUFYIGFz IGFuICppbnB1dCoNCj4gPiBvcGVyYW5kLiBUaGF0J3MgY2xlYXJseSB3cm9uZyBhbmQgdmlvbGF0 ZXMgdGhlIGNvbnN0cmFpbnRzIGluIHRoZQ0KPiA+IG9wZXJhbmQgbGlzdC4gVGhpcyBpcyBhbiBY Q09ERSBidWcuDQo+ID4NCj4gPiBJbiBmYWN0OiB0aGUgc2l0dWF0aW9uIGlzIHdvcnNlIHRoYW4g dGhhdC4gSW4gdGhlIGNvbW1pdCBtZXNzYWdlIHlvdQ0KPiA+IHNwZWxsIG91dCB0aGF0IHRoZSBN T1YgaW5zdHJ1Y3Rpb24gYXQgb2Zmc2V0IDYgb3ZlcndyaXRlcyB0aGUgdmFsdWUgaW4NCj4gPiBF QVggdGhhdCB3YXMganVzdCBsb2FkZWQgYXQgb2Zmc2V0IDMuIEJ1dCB0aGlzIGlzIGp1c3QgdGhl IHNtYWxsDQo+ID4gcHJvYmxlbTsgdGhlICpsYXJnZSogcHJvYmxlbSBpcyB0aGUgZ2VuZXJhdGVk IFhBREQgaW5zdHJ1Y3Rpb24gaXRzZWxmLA0KPiA+IGF0IG9mZnNldCAweGIgYW5kIDB4Yy4gVGhl IGJpbmFyeSBlbmNvZGluZyBpcywgZnJvbSB5b3VyIGNvbW1pdCBtZXNzYWdlOg0KPiA+DQo+ID4g ICBmMCAwZiBjMSAwMA0KPiA+DQo+ID4gYW5kIHRoaXMgaXMgKmV4YWN0bHkqIHRoZSBwcm9ibGVt IHRoYXQgbXkgY29tbWl0IDhhOTRlYjkyODNmYSBmaXhlZA0KPiA+IGZvciBnY2MhIEZyb20gbXkg Y29tbWl0IG1lc3NhZ2U6DQo+ID4NCj4gPiAgICAgPiAgICAgNDM5YzogICAgICAgZjAgMGYgYzEg MDAgICAgICAgICAgICAgbG9jayB4YWRkICVlYXgsKCVyYXgpDQo+ID4NCj4gPiBCZWNhdXNlLCBp dCBtYWtlcyAqbm8gc2Vuc2UqIGZvciBYQUREIHRvIHVzZSB0aGUgQVggcmVnaXN0ZXIgZm9yDQo+ ID4gKmJvdGgqIHBvaW50ZXItdG8tbWVtb3J5IChpLmUuIGFkZHJlc3Mgb2YgdGhlIGRlc3RpbmF0 aW9uIGxvY2F0aW9uDQo+ID4gdGhhdCByZWNlaXZlcyB0aGUgc3VtKSAqYW5kKiBhcyB0aGUgb3Ro ZXIgYWRkZW5kIQ0KPiA+DQo+ID4gSW4gb3RoZXIgd29yZHMsIHJlZ2FyZGxlc3Mgb2YgaG93IHdl IGZpbGwgdGhlIEFYIHJlZ2lzdGVyIHVwLWZyb250LCBhbg0KPiA+IFhBREQgaW5zdHJ1Y3Rpb24g Z2VuZXJhdGVkIGxpa2UgdGhpcyAqY2Fubm90KiBiZSByaWdodC4NCj4gPg0KPiA+PiBUaGUgcGF0 Y2ggdXNlcyB0aGUgY2xvYmJlciBsaXN0IHRvIHRlbGwgR0NDIHRoYXQgRUFYIGlzIHVzZWQgaW4g QVNNLg0KPiA+Pg0KPiA+PiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlv biBBZ3JlZW1lbnQgMS4xDQo+ID4+IFNpZ25lZC1vZmYtYnk6IFJ1aXl1IE5pIDxydWl5dS5uaUBp bnRlbC5jb20+DQo+ID4+IENjOiBMaW1pbmcgR2FvIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4g Pj4gQ2M6IE1pY2hhZWwgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPj4g Q2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4+IENjOiBQaGlsaXBwZSBN YXRoaWV1LURhdWTDqSA8cGhpbG1kQHJlZGhhdC5jb20+DQo+ID4+IC0tLQ0KPiA+PiAgTWRlUGtn L0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9JYTMyL0djY0lubGluZS5jIHwgMTINCj4g Pj4gKysrKysrKystLS0tDQo+ID4+ICAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFz ZVN5bmNocm9uaXphdGlvbkxpYi9JYTMyL0djY0lubGluZS5jDQo+ID4+IGIvTWRlUGtnL0xpYnJh cnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9JYTMyL0djY0lubGluZS5jDQo+ID4+IGluZGV4IGFm MzliZGViNTEuLjBhOTg1NTI5ZmQgMTAwNjQ0DQo+ID4+IC0tLSBhL01kZVBrZy9MaWJyYXJ5L0Jh c2VTeW5jaHJvbml6YXRpb25MaWIvSWEzMi9HY2NJbmxpbmUuYw0KPiA+PiArKysgYi9NZGVQa2cv TGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL0lhMzIvR2NjSW5saW5lLmMNCj4gPj4gQEAg LTQwLDExICs0MCwxMyBAQCBJbnRlcm5hbFN5bmNJbmNyZW1lbnQgKA0KPiA+PiAgICAgICJsb2Nr ICAgICAgICAgICAgICAgXG5cdCINCj4gPj4gICAgICAieGFkZCAgICAlJWVheCwgJTEgIFxuXHQi DQo+ID4+ICAgICAgImluYyAgICAgJSVlYXggICAgICBcblx0Ig0KPiA+PiAtICAgIDogIj1hIiAo UmVzdWx0KSwgICAgICAgICAgLy8gJTANCj4gPj4gKyAgICAibW92ICAgICAlJWVheCwgJTAgIFxu XHQiDQo+ID4+ICsgICAgOiAiPXIiIChSZXN1bHQpLCAgICAgICAgICAvLyAlMA0KPiA+PiAgICAg ICAgIittIiAoKlZhbHVlKSAgICAgICAgICAgLy8gJTENCj4gPj4gICAgICA6ICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIG5vIGlucHV0cyB0aGF0IGFyZW4ndCBhbHNvIG91dHB1dHMNCj4gPj4g ICAgICA6ICJtZW1vcnkiLA0KPiA+PiAtICAgICAgImNjIg0KPiA+PiArICAgICAgImNjIiwNCj4g Pj4gKyAgICAgICJlYXgiDQo+ID4+ICAgICAgKTsNCj4gPj4NCj4gPj4gICAgcmV0dXJuIFJlc3Vs dDsNCj4gPg0KPiA+IChiKSBUaGlzIGNoYW5nZSBpcyBpbnZhbGlkLCBmb3IgdHdvIHNlcGFyYXRl IHJlYXNvbnMuDQo+ID4NCj4gPiBSZWFzb24gIzE6IG9uIHRoZSBjbG9iYmVyIGxpc3QsIHRoZSBB WCByZWdpc3RlciBzaG91bGQgYmUgbGlzdGVkIGFzDQo+ID4gImEiLCBub3QgYXMgImVheCIuDQo+ ID4NCj4gPiBSZWFzb24gIzI6DQo+ID4NCj4gPiAtIEZvciBvcGVyYW5kICUwLCB3ZSBzYXkgInVz ZSBhbnkgcmVnaXN0ZXIgaW4gdGhlICdyJyBjbGFzcyBhcw0KPiA+IHdyaXRlLW9ubHkiLiAoVGhl IGNsYXNzICJyIiBtZWFucyAiZ2VuZXJhbCByZWdpc3RlciIuKSBBbmQsIGF0IHRoZSBlbmQNCj4g PiBvZiB0aGUgaW5saW5lIGFzc2VtYmx5LCB3ZSBzdG9yZSBFQVggbWFudWFsbHkgdG8gdGhhdCAn cicgY2xhc3MNCj4gPiByZWdpc3Rlci4gQW5kIHdlIHJlbHkgb24gdGhlIGNvbXBpbGVyIHRvIHN0 b3JlIHRoYXQgb3RoZXIgZ2VuZXJhbA0KPiA+IHJlZ2lzdGVyIGludG8gUmVzdWx0Lg0KPiA+DQo+ ID4gLSBXZSBhcHBlbmQgdGhlIEFYIHJlZ2lzdGVyICh3aGljaCBzaG91bGQgYmUgc3BlbGxlZCBh cyAiYSIpIHRvIHRoZQ0KPiA+IGNsb2JiZXIgbGlzdC4gSG93ZXZlciwgdGhlICJhIiByZWdpc3Rl ciBpcyBpdHNlbGYgaW4gdGhlICJnZW5lcmFsDQo+ID4gcmVnaXN0ZXIiIGNsYXNzLCBhbmQgdGhl cmVmb3JlIHRoaXMgY2xvYmJlciBsaXN0IGJyZWFrcyB0aGUgcGFzc2FnZQ0KPiA+IHRoYXQgSSBx dW90ZWQgYWJvdmUsIG1hcmtlZCBhcyBbMV0hDQo+ID4NCj4gPg0KPiA+PiBAQCAtNzYsMTEgKzc4 LDEzIEBAIEludGVybmFsU3luY0RlY3JlbWVudCAoDQo+ID4+ICAgICAgImxvY2sgICAgICAgICAg ICAgICAgXG5cdCINCj4gPj4gICAgICAieGFkZCAgICAlJWVheCwgJTEgICBcblx0Ig0KPiA+PiAg ICAgICJkZWMgICAgICUlZWF4ICAgICAgIFxuXHQiDQo+ID4+IC0gICAgOiAiPWEiIChSZXN1bHQp LCAgICAgICAgICAgLy8gJTANCj4gPj4gKyAgICAibW92ICAgICAlJWVheCwgJTAgIFxuXHQiDQo+ ID4+ICsgICAgOiAiPXIiIChSZXN1bHQpLCAgICAgICAgICAgLy8gJTANCj4gPj4gICAgICAgICIr bSIgKCpWYWx1ZSkgICAgICAgICAgICAvLyAlMQ0KPiA+PiAgICAgIDogICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIG5vIGlucHV0cyB0aGF0IGFyZW4ndCBhbHNvIG91dHB1dHMNCj4gPj4gICAg ICA6ICJtZW1vcnkiLA0KPiA+PiAtICAgICAgImNjIg0KPiA+PiArICAgICAgImNjIiwNCj4gPj4g KyAgICAgICJlYXgiDQo+ID4+ICAgICAgKTsNCj4gPj4NCj4gPj4gICAgcmV0dXJuIFJlc3VsdDsN Cj4gPj4NCj4gPg0KPiA+IChjKSBUaGUgcGF0Y2ggZG9lc24ndCB1cGRhdGUgdGhlIFg2NCB2YXJp YW50Lg0KPiA+DQo+ID4gSSB0aGluayB3ZSBzaG91bGQgYmUgY2xlYXIgaGVyZSB0aGF0IHdlIGFy ZSB3b3JraW5nIGFyb3VuZCBhbiBYQ09ERSBidWcuDQo+ID4gQ29tbWl0IDhhOTRlYjkyODNmYSB3 YXMgZGlmZmVyZW50LCBiZWNhdXNlIHRoZSBjb2RlIGJlZm9yZSB0aGF0DQo+ID4gdmlvbGF0ZWQg dGhlIGdjYyBkb2N1bWVudGF0aW9uLCBhbmQgc28gdGhlIGlzc3VlIHdhcyBpbiB0aGUgY29kZS4N Cj4gPg0KPiA+DQo+ID4gSSdsbCBjb21tZW50IG1vcmUgb24geW91ciBzZWNvbmQgZW1haWwuDQo+ ID4NCj4gPiBUaGFua3MsDQo+ID4gTGFzemxvDQo+ID4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18NCj4gPiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiA+ IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1h bi9saXN0aW5mby9lZGsyLWRldmVsDQo=