From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 75120 invoked by alias); 22 May 2016 17:42:26 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 75110 invoked by uid 89); 22 May 2016 17:42:25 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.2 required=5.0 tests=AWL,BAYES_00,KAM_ASCII_DIVIDERS,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD autolearn=no version=3.3.2 spammy=H*MI:inria, c6, c4, fires X-HELO: mail2-relais-roc.national.inria.fr Received: from mail2-relais-roc.national.inria.fr (HELO mail2-relais-roc.national.inria.fr) (192.134.164.83) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Sun, 22 May 2016 17:42:15 +0000 Received: from 81-65-27-132.rev.numericable.fr (HELO laptop-mg.local) ([81.65.27.132]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 22 May 2016 19:42:12 +0200 Date: Sun, 22 May 2016 17:42:00 -0000 From: Marc Glisse To: gcc-patches@gcc.gnu.org Subject: match.pd: Relax some tree_nop_conversion_p Message-ID: User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323329-935413912-1463938932=:4797" X-SW-Source: 2016-05/txt/msg01741.txt.bz2 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323329-935413912-1463938932=:4797 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII Content-length: 1328 Hello, this patch replaces some tree_nop_conversion_p tests with less restrictive conditions. In some cases I checked the transformation automatically (of course I could have messed up the checker, or the translation). I didn't always put the laxest possible check. For instance the transformation for (~x & ~y) is valid with sign extension, but the gain is less obvious in that case. ~(~X >> Y) also seems valid in some odd cases involving boolean types, not worth the complication. The bad case for a * (1 << b) is when 1< gcc/ * match.pd (a * (1 << b), ~x & ~y, ~X ^ ~Y, (X ^ Y) ^ Y, ~ (-A), ~ (A - 1), ~(~X >> Y), ~(~X >>r Y)): Relax constraints. gcc/testsuite/ * gcc.dg/fold-notshift-2.c: Adjust. -- Marc Glisse --8323329-935413912-1463938932=:4797 Content-Type: TEXT/x-diff; name=nop.diff Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: inline; filename=nop.diff Content-length: 10598 SW5kZXg6IGdjYy9tYXRjaC5wZA0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K LS0tIGdjYy9tYXRjaC5wZAkocmV2aXNpb24gMjM2NDg4KQ0KKysrIGdjYy9t YXRjaC5wZAkod29ya2luZyBjb3B5KQ0KQEAgLTQ0NywyMSArNDQ3LDIyIEBA IERFRklORV9JTlRfQU5EX0ZMT0FUX1JPVU5EX0ZOIChSSU5UKQ0KIChmb3Ig b3BzIChjb25qIG5lZ2F0ZSkNCiAgKGZvciBjYWJzcyAoQ0FCUykNCiAgIChz aW1wbGlmeQ0KICAgIChjYWJzcyAob3BzIEAwKSkNCiAgICAoY2Fic3MgQDAp KSkpDQogDQogLyogRm9sZCAoYSAqICgxIDw8IGIpKSBpbnRvIChhIDw8IGIp ICAqLw0KIChzaW1wbGlmeQ0KICAobXVsdDpjIEAwIChjb252ZXJ0PyAobHNo aWZ0IGludGVnZXJfb25lcEAxIEAyKSkpDQogICAoaWYgKCEgRkxPQVRfVFlQ RV9QICh0eXBlKQ0KLSAgICAgICAmJiB0cmVlX25vcF9jb252ZXJzaW9uX3Ag KHR5cGUsIFRSRUVfVFlQRSAoQDEpKSkNCisgICAgICAgJiYgKGVsZW1lbnRf cHJlY2lzaW9uICh0eXBlKSA8PSBlbGVtZW50X3ByZWNpc2lvbiAoVFJFRV9U WVBFIChAMSkpDQorCSAgIHx8IFRZUEVfVU5TSUdORUQgKFRSRUVfVFlQRSAo QDEpKSkpDQogICAgKGxzaGlmdCBAMCBAMikpKQ0KIA0KIC8qIEZvbGQgKEMx L1gpKkMyIGludG8gKEMxKkMyKS9YLiAgKi8NCiAoc2ltcGxpZnkNCiAgKG11 bHQgKHJkaXZAMyBSRUFMX0NTVEAwIEAxKSBSRUFMX0NTVEAyKQ0KICAgKGlm IChmbGFnX2Fzc29jaWF0aXZlX21hdGgNCiAgICAgICAgJiYgc2luZ2xlX3Vz ZSAoQDMpKQ0KICAgICh3aXRoDQogICAgIHsgdHJlZSB0ZW0gPSBjb25zdF9i aW5vcCAoTVVMVF9FWFBSLCB0eXBlLCBAMCwgQDIpOyB9DQogICAgIChpZiAo dGVtKQ0KQEAgLTY0OCwyMiArNjQ5LDIyIEBAIERFRklORV9JTlRfQU5EX0ZM T0FUX1JPVU5EX0ZOIChSSU5UKQ0KIChzaW1wbGlmeQ0KICAoYml0X2FuZDpj IChiaXRfaW9yOmMgQDAgQDEpIChiaXRfeG9yOmMgQDEgKGJpdF9ub3QgQDAp KSkNCiAgKGJpdF9hbmQgQDAgQDEpKQ0KIA0KIC8qIH54ICYgfnkgLT4gfih4 IHwgeSkNCiAgICB+eCB8IH55IC0+IH4oeCAmIHkpICovDQogKGZvciBvcCAo Yml0X2FuZCBiaXRfaW9yKQ0KICAgICAgcm9wIChiaXRfaW9yIGJpdF9hbmQp DQogIChzaW1wbGlmeQ0KICAgKG9wIChjb252ZXJ0MT8gKGJpdF9ub3QgQDAp KSAoY29udmVydDI/IChiaXRfbm90IEAxKSkpDQotICAoaWYgKHRyZWVfbm9w X2NvbnZlcnNpb25fcCAodHlwZSwgVFJFRV9UWVBFIChAMCkpDQotICAgICAg ICYmIHRyZWVfbm9wX2NvbnZlcnNpb25fcCAodHlwZSwgVFJFRV9UWVBFIChA MSkpKQ0KKyAgKGlmIChlbGVtZW50X3ByZWNpc2lvbiAodHlwZSkgPD0gZWxl bWVudF9wcmVjaXNpb24gKFRSRUVfVFlQRSAoQDApKQ0KKyAgICAgICAmJiBl bGVtZW50X3ByZWNpc2lvbiAodHlwZSkgPD0gZWxlbWVudF9wcmVjaXNpb24g KFRSRUVfVFlQRSAoQDEpKSkNCiAgICAoYml0X25vdCAocm9wIChjb252ZXJ0 IEAwKSAoY29udmVydCBAMSkpKSkpKQ0KIA0KIC8qIElmIHdlIGFyZSBYT1Jp bmcgb3IgYWRkaW5nIHR3byBCSVRfQU5EX0VYUFIncywgYm90aCBvZiB3aGlj aCBhcmUgYW5kJ2luZw0KICAgIHdpdGggYSBjb25zdGFudCwgYW5kIHRoZSB0 d28gY29uc3RhbnRzIGhhdmUgbm8gYml0cyBpbiBjb21tb24sDQogICAgd2Ug c2hvdWxkIHRyZWF0IHRoaXMgYXMgYSBCSVRfSU9SX0VYUFIgc2luY2UgdGhp cyBtYXkgcHJvZHVjZSBtb3JlDQogICAgc2ltcGxpZmljYXRpb25zLiAgKi8N CiAoZm9yIG9wIChiaXRfeG9yIHBsdXMpDQogIChzaW1wbGlmeQ0KICAgKG9w IChjb252ZXJ0MT8gKGJpdF9hbmRANCBAMCBJTlRFR0VSX0NTVEAxKSkNCiAg ICAgICAoY29udmVydDI/IChiaXRfYW5kQDUgQDIgSU5URUdFUl9DU1RAMykp KQ0KQEAgLTY3NCwyMiArNjc1LDIyIEBAIERFRklORV9JTlRfQU5EX0ZMT0FU X1JPVU5EX0ZOIChSSU5UKQ0KIA0KIC8qIChYIHwgWSkgXiBYIC0+IFkgJiB+ IFgqLw0KIChzaW1wbGlmeQ0KICAoYml0X3hvcjpjIChjb252ZXJ0PyAoYml0 X2lvcjpjIEAwIEAxKSkgKGNvbnZlcnQ/IEAwKSkNCiAgKGlmICh0cmVlX25v cF9jb252ZXJzaW9uX3AgKHR5cGUsIFRSRUVfVFlQRSAoQDApKSkNCiAgIChj b252ZXJ0IChiaXRfYW5kIEAxIChiaXRfbm90IEAwKSkpKSkNCiANCiAvKiBD b252ZXJ0IH5YIF4gflkgdG8gWCBeIFkuICAqLw0KIChzaW1wbGlmeQ0KICAo Yml0X3hvciAoY29udmVydDE/IChiaXRfbm90IEAwKSkgKGNvbnZlcnQyPyAo Yml0X25vdCBAMSkpKQ0KLSAoaWYgKHRyZWVfbm9wX2NvbnZlcnNpb25fcCAo dHlwZSwgVFJFRV9UWVBFIChAMCkpDQotICAgICAgJiYgdHJlZV9ub3BfY29u dmVyc2lvbl9wICh0eXBlLCBUUkVFX1RZUEUgKEAxKSkpDQorIChpZiAoZWxl bWVudF9wcmVjaXNpb24gKHR5cGUpIDw9IGVsZW1lbnRfcHJlY2lzaW9uIChU UkVFX1RZUEUgKEAwKSkNCisgICAgICAmJiBlbGVtZW50X3ByZWNpc2lvbiAo dHlwZSkgPD0gZWxlbWVudF9wcmVjaXNpb24gKFRSRUVfVFlQRSAoQDEpKSkN CiAgIChiaXRfeG9yIChjb252ZXJ0IEAwKSAoY29udmVydCBAMSkpKSkNCiAN CiAvKiBDb252ZXJ0IH5YIF4gQyB0byBYIF4gfkMuICAqLw0KIChzaW1wbGlm eQ0KICAoYml0X3hvciAoY29udmVydD8gKGJpdF9ub3QgQDApKSBJTlRFR0VS X0NTVEAxKQ0KICAoaWYgKHRyZWVfbm9wX2NvbnZlcnNpb25fcCAodHlwZSwg VFJFRV9UWVBFIChAMCkpKQ0KICAgKGJpdF94b3IgKGNvbnZlcnQgQDApIChi aXRfbm90IEAxKSkpKQ0KIA0KIC8qIEZvbGQgKFggJiBZKSBeIFkgYW5kIChY IF4gWSkgJiBZIGFzIH5YICYgWS4gICovDQogKGZvciBvcG8gKGJpdF9hbmQg Yml0X3hvcikNCkBAIC03MTUsMjIgKzcxNiwyMSBAQCBERUZJTkVfSU5UX0FO RF9GTE9BVF9ST1VORF9GTiAoUklOVCkNCiAvKiBTb21lIHNpbXBsZSByZWFz c29jaWF0aW9uIGZvciBiaXQgb3BlcmF0aW9ucywgYWxzbyBoYW5kbGVkIGlu IHJlYXNzb2MuICAqLw0KIC8qIChYICYgWSkgJiBZIC0+IFggJiBZDQogICAg KFggfCBZKSB8IFkgLT4gWCB8IFkgICovDQogKGZvciBvcCAoYml0X2FuZCBi aXRfaW9yKQ0KICAoc2ltcGxpZnkNCiAgIChvcDpjIChjb252ZXJ0P0AyIChv cDpjIEAwIEAxKSkgKGNvbnZlcnQ/IEAxKSkNCiAgIEAyKSkNCiAvKiAoWCBe IFkpIF4gWSAtPiBYICAqLw0KIChzaW1wbGlmeQ0KICAoYml0X3hvcjpjIChj b252ZXJ0PyAoYml0X3hvcjpjIEAwIEAxKSkgKGNvbnZlcnQ/IEAxKSkNCi0g KGlmICh0cmVlX25vcF9jb252ZXJzaW9uX3AgKHR5cGUsIFRSRUVfVFlQRSAo QDApKSkNCi0gIChjb252ZXJ0IEAwKSkpDQorIChjb252ZXJ0IEAwKSkNCiAv KiAoWCAmIFkpICYgKFggJiBaKSAtPiAoWCAmIFkpICYgWg0KICAgIChYIHwg WSkgfCAoWCB8IFopIC0+IChYIHwgWSkgfCBaICAqLw0KIChmb3Igb3AgKGJp dF9hbmQgYml0X2lvcikNCiAgKHNpbXBsaWZ5DQogICAob3A6YyAoY29udmVy dDE/QDMgKG9wOmNANCBAMCBAMSkpIChjb252ZXJ0Mj9ANSAob3A6Y0A2IEAw IEAyKSkpDQogICAoaWYgKHRyZWVfbm9wX2NvbnZlcnNpb25fcCAodHlwZSwg VFJFRV9UWVBFIChAMSkpDQogICAgICAgICYmIHRyZWVfbm9wX2NvbnZlcnNp b25fcCAodHlwZSwgVFJFRV9UWVBFIChAMikpKQ0KICAgIChpZiAoc2luZ2xl X3VzZSAoQDUpICYmIHNpbmdsZV91c2UgKEA2KSkNCiAgICAgKG9wIEAzIChj b252ZXJ0IEAyKSkNCiAgICAgKGlmIChzaW5nbGVfdXNlIChAMykgJiYgc2lu Z2xlX3VzZSAoQDQpKQ0KQEAgLTkwOCwzMSArOTA4LDM0IEBAIERFRklORV9J TlRfQU5EX0ZMT0FUX1JPVU5EX0ZOIChSSU5UKQ0KICAgIChsZSBAMCBAMSkp KQ0KIA0KIC8qIH5+eCAtPiB4ICovDQogKHNpbXBsaWZ5DQogICAoYml0X25v dCAoYml0X25vdCBAMCkpDQogICBAMCkNCiANCiAvKiBDb252ZXJ0IH4gKC1B KSB0byBBIC0gMS4gICovDQogKHNpbXBsaWZ5DQogIChiaXRfbm90IChjb252 ZXJ0PyAobmVnYXRlIEAwKSkpDQotIChpZiAodHJlZV9ub3BfY29udmVyc2lv bl9wICh0eXBlLCBUUkVFX1RZUEUgKEAwKSkpDQorIChpZiAoZWxlbWVudF9w cmVjaXNpb24gKHR5cGUpIDw9IGVsZW1lbnRfcHJlY2lzaW9uIChUUkVFX1RZ UEUgKEAwKSkNCisgICAgICB8fCAhVFlQRV9VTlNJR05FRCAoVFJFRV9UWVBF IChAMCkpKQ0KICAgKGNvbnZlcnQgKG1pbnVzIEAwIHsgYnVpbGRfZWFjaF9v bmVfY3N0IChUUkVFX1RZUEUgKEAwKSk7IH0pKSkpDQogDQogLyogQ29udmVy dCB+IChBIC0gMSkgb3IgfiAoQSArIC0xKSB0byAtQS4gICovDQogKHNpbXBs aWZ5DQogIChiaXRfbm90IChjb252ZXJ0PyAobWludXMgQDAgaW50ZWdlcl9l YWNoX29uZXApKSkNCi0gKGlmICh0cmVlX25vcF9jb252ZXJzaW9uX3AgKHR5 cGUsIFRSRUVfVFlQRSAoQDApKSkNCisgKGlmIChlbGVtZW50X3ByZWNpc2lv biAodHlwZSkgPD0gZWxlbWVudF9wcmVjaXNpb24gKFRSRUVfVFlQRSAoQDAp KQ0KKyAgICAgIHx8ICFUWVBFX1VOU0lHTkVEIChUUkVFX1RZUEUgKEAwKSkp DQogICAoY29udmVydCAobmVnYXRlIEAwKSkpKQ0KIChzaW1wbGlmeQ0KICAo Yml0X25vdCAoY29udmVydD8gKHBsdXMgQDAgaW50ZWdlcl9hbGxfb25lc3Ap KSkNCi0gKGlmICh0cmVlX25vcF9jb252ZXJzaW9uX3AgKHR5cGUsIFRSRUVf VFlQRSAoQDApKSkNCisgKGlmIChlbGVtZW50X3ByZWNpc2lvbiAodHlwZSkg PD0gZWxlbWVudF9wcmVjaXNpb24gKFRSRUVfVFlQRSAoQDApKQ0KKyAgICAg IHx8ICFUWVBFX1VOU0lHTkVEIChUUkVFX1RZUEUgKEAwKSkpDQogICAoY29u dmVydCAobmVnYXRlIEAwKSkpKQ0KIA0KIC8qIFBhcnQgb2YgY29udmVydCB+ KFggXiBZKSB0byB+WCBeIFkgb3IgWCBeIH5ZIGlmIH5YIG9yIH5ZIHNpbXBs aWZ5LiAgKi8NCiAoc2ltcGxpZnkNCiAgKGJpdF9ub3QgKGNvbnZlcnQ/IChi aXRfeG9yIEAwIElOVEVHRVJfQ1NUQDEpKSkNCiAgKGlmICh0cmVlX25vcF9j b252ZXJzaW9uX3AgKHR5cGUsIFRSRUVfVFlQRSAoQDApKSkNCiAgIChjb252 ZXJ0IChiaXRfeG9yIEAwIChiaXRfbm90IEAxKSkpKSkNCiAoc2ltcGxpZnkN CiAgKGJpdF9ub3QgKGNvbnZlcnQ/IChiaXRfeG9yOmMgKGJpdF9ub3QgQDAp IEAxKSkpDQogIChpZiAodHJlZV9ub3BfY29udmVyc2lvbl9wICh0eXBlLCBU UkVFX1RZUEUgKEAwKSkpDQpAQCAtMTQ5OCwzNCArMTUwMSwzNyBAQCBERUZJ TkVfSU5UX0FORF9GTE9BVF9ST1VORF9GTiAoUklOVCkNCiAgIChzaW1wbGlm eQ0KICAgIChzaGlmdCAoY29udmVydD86cyAoYml0X29wOnMgQDAgSU5URUdF Ul9DU1RAMikpIElOVEVHRVJfQ1NUQDEpDQogICAgKGlmICh0cmVlX25vcF9j b252ZXJzaW9uX3AgKHR5cGUsIFRSRUVfVFlQRSAoQDApKSkNCiAgICAgKHdp dGggeyB0cmVlIG1hc2sgPSBpbnRfY29uc3RfYmlub3AgKHNoaWZ0LCBmb2xk X2NvbnZlcnQgKHR5cGUsIEAyKSwgQDEpOyB9DQogICAgICAoYml0X29wIChz aGlmdCAoY29udmVydCBAMCkgQDEpIHsgbWFzazsgfSkpKSkpKQ0KIA0KIC8q IH4oflggPj4gWSkgLT4gWCA+PiBZIChmb3IgYXJpdGhtZXRpYyBzaGlmdCku ICAqLw0KIChzaW1wbGlmeQ0KICAoYml0X25vdCAoY29udmVydDE/OnMgKHJz aGlmdDpzIChjb252ZXJ0Mj9AMCAoYml0X25vdCBAMSkpIEAyKSkpDQogICAo aWYgKCFUWVBFX1VOU0lHTkVEIChUUkVFX1RZUEUgKEAwKSkNCi0gICAgICAg JiYgZWxlbWVudF9wcmVjaXNpb24gKFRSRUVfVFlQRSAoQDApKQ0KLSAgICAg ICAgICA8PSBlbGVtZW50X3ByZWNpc2lvbiAoVFJFRV9UWVBFIChAMSkpDQot ICAgICAgICYmIGVsZW1lbnRfcHJlY2lzaW9uICh0eXBlKSA8PSBlbGVtZW50 X3ByZWNpc2lvbiAoVFJFRV9UWVBFIChAMCkpKQ0KKyAgICAgICAmJiAoZWxl bWVudF9wcmVjaXNpb24gKFRSRUVfVFlQRSAoQDApKQ0KKwkgICA8PSBlbGVt ZW50X3ByZWNpc2lvbiAoVFJFRV9UWVBFIChAMSkpDQorCSAgIHx8ICFUWVBF X1VOU0lHTkVEIChUUkVFX1RZUEUgKEAxKSkpKQ0KICAgICh3aXRoDQogICAg IHsgdHJlZSBzaGlmdF90eXBlID0gVFJFRV9UWVBFIChAMCk7IH0NCiAgICAg IChjb252ZXJ0IChyc2hpZnQgKGNvbnZlcnQ6c2hpZnRfdHlwZSBAMSkgQDIp KSkpKQ0KIA0KIC8qIH4oflggPj5yIFkpIC0+IFggPj5yIFkNCiAgICB+KH5Y IDw8ciBZKSAtPiBYIDw8ciBZICovDQogKGZvciByb3RhdGUgKGxyb3RhdGUg cnJvdGF0ZSkNCiAgKHNpbXBsaWZ5DQogICAoYml0X25vdCAoY29udmVydDE/ OnMgKHJvdGF0ZTpzIChjb252ZXJ0Mj9AMCAoYml0X25vdCBAMSkpIEAyKSkp DQotICAgKGlmIChlbGVtZW50X3ByZWNpc2lvbiAoVFJFRV9UWVBFIChAMCkp IDw9IGVsZW1lbnRfcHJlY2lzaW9uIChUUkVFX1RZUEUgKEAxKSkNCi0gICAg ICAgICYmIGVsZW1lbnRfcHJlY2lzaW9uICh0eXBlKSA8PSBlbGVtZW50X3By ZWNpc2lvbiAoVFJFRV9UWVBFIChAMCkpKQ0KKyAgIChpZiAoKGVsZW1lbnRf cHJlY2lzaW9uIChUUkVFX1RZUEUgKEAwKSkNCisJIDw9IGVsZW1lbnRfcHJl Y2lzaW9uIChUUkVFX1RZUEUgKEAxKSkNCisJIHx8ICFUWVBFX1VOU0lHTkVE IChUUkVFX1RZUEUgKEAxKSkpDQorICAgICAgICAmJiAoZWxlbWVudF9wcmVj aXNpb24gKHR5cGUpIDw9IGVsZW1lbnRfcHJlY2lzaW9uIChUUkVFX1RZUEUg KEAwKSkNCisJICAgIHx8ICFUWVBFX1VOU0lHTkVEIChUUkVFX1RZUEUgKEAw KSkpKQ0KICAgICAod2l0aA0KICAgICAgeyB0cmVlIHJvdGF0ZV90eXBlID0g VFJFRV9UWVBFIChAMCk7IH0NCiAgICAgICAoY29udmVydCAocm90YXRlIChj b252ZXJ0OnJvdGF0ZV90eXBlIEAxKSBAMikpKSkpKQ0KIA0KIC8qIFNpbXBs aWZpY2F0aW9ucyBvZiBjb252ZXJzaW9ucy4gICovDQogDQogLyogQmFzaWMg c3RyaXAtdXNlbGVzcy10eXBlLWNvbnZlcnNpb25zIC8gc3RyaXBfbm9wcy4g ICovDQogKGZvciBjdnQgKGNvbnZlcnQgdmlld19jb252ZXJ0IGZsb2F0IGZp eF90cnVuYykNCiAgKHNpbXBsaWZ5DQogICAoY3Z0IEAwKQ0KSW5kZXg6IGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL2ZvbGQtbm90c2hpZnQtMi5jDQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQotLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZm9s ZC1ub3RzaGlmdC0yLmMJKHJldmlzaW9uIDIzNjQ4OCkNCisrKyBnY2MvdGVz dHN1aXRlL2djYy5kZy9mb2xkLW5vdHNoaWZ0LTIuYwkod29ya2luZyBjb3B5 KQ0KQEAgLTgsMjYgKzgsMjYgQEAgbHNyICh1bnNpZ25lZCBpbnQgYSwgdW5z aWduZWQgaW50IGIpDQogew0KICAgcmV0dXJuIH4oKH5hKSA+PiBiKTsNCiB9 DQogDQogaW50DQogc2wgKGludCBhLCBpbnQgYikNCiB7DQogICByZXR1cm4g figofmEpIDw8IGIpOw0KIH0NCiANCi10eXBlZGVmIF9fSU5UMzJfVFlQRV9f IGludDMyX3Q7DQordHlwZWRlZiB1bnNpZ25lZCBfX0lOVDMyX1RZUEVfXyB1 aW50MzJfdDsNCiB0eXBlZGVmIF9fSU5UNjRfVFlQRV9fIGludDY0X3Q7DQog DQogaW50NjRfdA0KLWFzcl93aWRlbjEgKGludDMyX3QgYSwgaW50IGIpDQor YXNyX3dpZGVuMSAodWludDMyX3QgYSwgaW50IGIpDQogew0KICAgcmV0dXJu IH4oKGludDY0X3QpKH5hKSA+PiBiKTsNCiB9DQogDQogaW50NjRfdA0KLWFz cl93aWRlbjIgKGludDMyX3QgYSwgaW50IGIpDQorYXNyX3dpZGVuMiAodWlu dDMyX3QgYSwgaW50IGIpDQogew0KICAgcmV0dXJuIH4oaW50NjRfdCkofmEg Pj4gYik7DQogfQ0KIA0KIC8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAifiIgOCAiY2RkY2UxIiB9IH0gKi8NCg== --8323329-935413912-1463938932=:4797--