X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version; bh=n3PGqhDNqmfIDMMY8h+Se5QC6Q+pH12ZKCyYpxHdMGE=; b=Z/QbPaonCLmvWXna0sHcgIexEI/205CWNpMMdUnqvXwtyI29kC/niJce4r7uVZVQjX bhPHJGxs1rCfQs5jLyAdIrPLKhRToYd37s01t4U9RuNedCc+nipZQfxbcAciXgwT8Y4+ XHZNiNwJgUvDW0HBTVKfr/rjB6O5LA12+1i0ikTWe9vrg3v55lqQ4manZ3djKm6l0/mO BjacZpUAqtyEBW0+snXsGpPI65t8UtUNN+kd9Rg3NuYO5bSY32+AmUyideU4jGlOf4Cc bQ/VhAykraULAjh6ms1QmrWocgJk/iheDaLsKfxkTSMnkHfKOWzaBzR9hJoiNqELaqu5 XiOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version; bh=n3PGqhDNqmfIDMMY8h+Se5QC6Q+pH12ZKCyYpxHdMGE=; b=RtZKCcxXUwutDb6zJ7It3UsG5OODaHmGzgpylDFE3s8ObtzjY2LfgdgB1yHZC4xJGv eePeqwEbcvYduF2TeAYPYDfVIhJFCaqs+NigJmkupnDXOeqyWIjUIgr0HnBa5YNmYSZw AJa3x6Di5th0TovQS9GLnUcWr/qU4LquI4KdMpu/kQ3SKPqUplAlNyK+TEWINwuHL0xb HatA6mzD9wpOHVx8XVyVw8U9tVEw1uQ7ssMXubuhlhbQInMDMJO1oJSfxzOlrv7xR513 7QZfPcOyduyFg+zx6Ukuoiv7b8WLfymxIVSTloZaKORDp+iJlyV5r7QdN4AA2ZtCmWu4 7ulw== X-Gm-Message-State: AOPr4FX9hFsRIxwwZB8vQ2IGpoASWXBbaUlQ8chNwGQN9ATPlKMjJCZUPSqXaZ4AYnikSw== X-Received: by 10.194.116.9 with SMTP id js9mr11325712wjb.112.1463610165049; Wed, 18 May 2016 15:22:45 -0700 (PDT) Date: Thu, 19 May 2016 00:22:40 +0200 From: "Nicklas Karlsson (nicklas DOT karlsson17 AT gmail DOT com) [via geda-user AT delorie DOT com]" To: geda-user AT delorie DOT com Cc: Peter Clifton Subject: Re: [geda-user] response about DRC stuff Message-Id: <20160519002240.5ff52f8cfdae85db0595a24d@gmail.com> In-Reply-To: References: X-Mailer: Sylpheed 3.5.0beta1 (GTK+ 2.24.25; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Thu__19_May_2016_00_22_40_+0200_zM+o7cCV5lI_rFPo" Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk This is a multi-part message in MIME format. --Multipart=_Thu__19_May_2016_00_22_40_+0200_zM+o7cCV5lI_rFPo Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Attached file which is a C file, it currently have no connection with real code although comments may be useful. Clearance is checked between all combionations of nets. Since there is a function to figure out clearance value used between each combination of nets it should be simple to add netclasses. Clearance precedence which may be shown graphically as hierachy is probably a good solution: global default value, net classes, between individual nets. It would be possible to extend to between different layers and for individual drawing primitives if needed. Nicklas Karlsson > >> Do you think that between us we can work out a plan to hit improved DRC for > >> multiple netclass with different clearance rules? I will probably make some > > How are you intending to do this? It might be easiest to just re-run the entire > DRC with different settings, then throw out everything that doesn't involve > objects with different netclasses. This is maybe a little hackish but DRC is > already sort of due for a rewrite anyway. I guess this wouldn't help with > incremental if that's your preferred way. > > However as John has pointed out in the past existing DRC is no good between > layers etc. so depending on what you want to do this might not be enough. > I think fixing DRC to be fully conscious of interlayer interactions > might be better > done with a rewrite than by trying to change the existing stuff. > > Britton --Multipart=_Thu__19_May_2016_00_22_40_+0200_zM+o7cCV5lI_rFPo Content-Type: application/octet-stream; name="clearance_c" Content-Disposition: attachment; filename="clearance_c" Content-Transfer-Encoding: base64 LyoKICogY2xlYXJhbmNlLmMKICoKICogIENyZWF0ZWQgb246IE1heSAxNiwgMjAxNgogKiAgICAg IEF1dGhvcjoga2FybG5pY2sKICovCgovKiBBbGdvcml0aG0gY2xlYXJhbmNlOgogKiAwLiBBc3Np Z24gYSBuZXQgbmFtZSB0byBhbGwgY29wcGVyIG9iamVjdHMvImRyYXdpbmcgcHJpbWl0aXZlcyIs IHRoaXMgd2lsbAogKiAgICBiZSBhbGwgZHJhd2luZyBwcmltaXRpdmVzIG9uIGNvcHBlciBsYXll ci4gT3Igb3RoZXIgbWV0aG9kIHRvIG1ha2Ugc3VyZSBhbGwKICogICAgZHJhd2luZyBwcmltaXRp dmVzIGJlbG9uZyB0byBhIG5ldC4KICoKICogMS4gRm9yIGVhY2ggbmV0IGluY2x1ZGluZyBvYmpl Y3RzIG5vdCBhc3NpZ25lZCB0byBuZXQuCiAqIDEuMS4gRmluZCBhbGwgZHJhd2luZyBwcmltaXRp dmVzIGJlbG9uZ2luZyB0byB0aGlzIG5ldC4KICogMS4xLjEuIEZvciBlYWNoIG5ldCBleGNlcHQg c2FtZSBuZXQuCiAqIDEuMS4yLiBUZW1wb3JhcnkgZ3JvdyBkcmF3aW5nIHByaW1pdGl2ZXMgZm9y IHRoaXMgbmV0IHdpdGggY2xlYXJhbmNlIGJldHdlZW4KICogICAgICAgIHRoaXMgYW5kIG90aGVy IG5ldC4KICogMS4xLjMuIENoZWNrIGZvciBpbnRlcnNlY3Rpb24gYmV0d2VlbiBvYmplY3RzIGlu IHRoaXMgbmV0IGFuZCBvdGhlciBuZXQuCiAqCiAqIEFsZ29yaXRobSBjaGVjayBpZiBuZXRzIGFy ZSB0byBjbG9zZSBidXQgZG8gbm8gZGV0ZXJtaW5lIGRpc3RhbmNlIGJldHdlZW4gdGhlbS4KICoK ICogRm9yIGNsZWFyYW5jZXMgcHJlY2VkZW5jZSBpcyB1c2VmdWw6CiAqICAgMS4gR2xvYmFsIHZh bHVlLgogKiAgIDIuIE5ldCBjbGFzcy4KICogICAzLiBOZXQuCiAqICAgNC4gSW5kaXZpZHVhbCBk cmF3aW5nIHByaW1pdGl2ZS4KICoKICogT25lIG5pY2UgcHJvcGVydHkgbWV0aG9kIHRvIGNoZWNr IGNsZWFyYW5jZSBpcyB0aGUgcG9zc2liaWxpdHkgdG8gdmlzdWFsaXplIGNsZWFyYW5jZQogKiBz aXplIGluIHBhcnRpY3VsYXIgdG8gc2hvdyB0aGUgb3ZlcmxhcC4gVGhlcmUgYXJlIHR3byBwb3Nz aWJpbGl0aWVzIGZyb20gdGhpcyBuZXRzCiAqIHBvaW50IG9mIHZpZXcgb3Igb3RoZXIgbmV0cyBw b2ludCBvZiB2aWV3LgogKgogKiBUaGVyZSBpcyBhbHNvIGEgbmVlZCB0byBjaGVjayBjbGVhcmFu Y2UgdmFsdWUgYWdhaW5zdCBtaW5pbXVtIGNvcHBlciBzcGFjaW5nIGZvcgogKiBlYWNoIGxheWVy LiBJZiB0aGVyZSBpcyBhIHZlbmRvciByZXNvdXJjZSBmaWxlIGl0IGlzIHVzZWZ1bCB0byBjaGVj ayBtaW5pbXVtIGNvcHBlcgogKiBzcGFjaW5nIGZvciB0aGlzIGFuZC9vciBtYXliZSB1c2UgdGhl IGFjdHVhbCBjb3BwZXIgdGhpY2tuZXNzIHRvIGdldCBudW1iZXIgY29ycmVjdC4KICogQ29wcGVy IHRoaWNrbmVzcyBwcm9iYWJseSBtYXkgbWFrZSBtb3JlIG9mIGEgZGlmZmVyZW5jZSB0aGFuIG1h bnVmYWN0dXJlci4KICoKICogQ29wcGVyIHBvdXI6CiAqIEZvciBjbGVhcmFuY2UgYmV0d2VlbiBh IG5ldCBhbmQgYSBjb3BwZXIgYXJlYS4gRWFjaCBuZXQgd2lsbCBtYWtlIGEgY3V0IG91dAogKiBp biBjb3BwZXIgYXJlYXMgYmVsb25naW5nIHRvIG90aGVyIG5ldHMgd2l0aCB0aGUgc2l6ZSBlcXVh bCB0byB0aGUgY2xlYXJhbmNlCiAqIHZhbHVlLiBDdXJyZW50IG1ldGhvZCB0byBqb2luIG9iamVj dHMgdG8gY29wcGVyIGFyZWFzIHdpdGggdGhlICJqIiBrZXkgbWF5CiAqIHN0aWxsIGJlIHVzZWZ1 bC4gRm9yIG9iamVjdHMgbm90IGpvaW5lZCB0byAib3duIiBuZXQgdGhlcmUgd291bGQgYmUgYSBj bGVhcmFuY2UKICogdmFsdWUgZm9yIHNhbWUgbmV0IGp1c3QgYXMgZm9yIG90aGVycy4gSXQgbWln aHQgYmUgdXNlZnVsIHdpdGggYSBmbGFnIHdoaWNoIGlzCiAqIGEga2luZCBvZiBhdHRyaWJ1dGUg b3Igc2ltaWxhciB0byB0ZWxsIHdoaWNoIG9iamVjdHMgYXJlIGNvcHBlciBhcmVhcyBpbnN0ZWFk CiAqIG9mIGFzc3VtaW5nIHBvbHlnb25zIGFyZSBjb3BwZXIgYXJlYXMuIEl0IGlzIGluIHBhcnRp Y3VsYXIgdXNlZnVsIHdpdGgKICogcG9zc2liaWxpdHkgdG8gdXNlIHBvbHlnb25zIHdoaWNoIGFy ZSBub3QgY29wcGVyIGFyZWFzLgogKgogKiBJdCB3b3VsZCBwcm9iYWJseSBhbHNvIGJlIGdvb2Qg d2l0aCBwb3NzaWJpbGl0eSBmb3IgYSBmbGFnIG9uIGRyYXdpbmcgcHJpbWl0aXZlcwogKiB0byBt YXJrIHRoZXkgYXJlIGN1dCBvdXRzIGFsdGhvdWdoIHRoZXkgaGF2ZSBub3RoaW5nIHRvIGRvIHdp dGggY2xlYXJhbmNlLgogKgogKiBHcm93aW5nIHRoZSBjb3BwZXIgb2JqZWN0czoKICogTGluZSBz ZWdtZW50cyB3aXRoIHJvdW5kZWQgZWRnZSBkaWFtZXRlciBlcXVhbCB0byBsaW5lIHdpZHRoIGNv dWxkIGJlIGdyb3duIGJ5CiAqIGluY3JlYXNpbmcgbGluZSB3aWR0aC4KICoKICogT2JqZWN0cyB3 aXRoIHNoYXJwIG91dGVyIGNvcm5lcnMgbGlrZSBwb2x5Z29ucyBhbmQgc3F1YXJlIGVkZ2VzIG11 c3QgYmUgZ3Jvd24KICogd2l0aCBhIHJvdW5kZWQgb3V0ZXIgY29ybmVyIG9yIHRoZXkgd2lsbCB3 YXN0ZSBzcGFjZS4KICoKICogVG8gZ3JvdyBhbiBvdXRlciBjb3JuZXIgd2l0aCBhIHNoYXJwIGVk Z2UgYSBjaXJjbGUgc2VnbWVudCB3aWR0aCBsaW5lIHdpZHRoIGVxdWFsCiAqIHRvIGRpc3RhbmNl IHRvIGdyb3cgd2lsbCBwcm9iYWJseSBtYWtlIHRoZSB0cmljay4KICoKICogSW50ZXJzZWN0aW9u czoKICoKICogQmFzaWMgbmVlZCBmb3IgZ2VvbWV0cmljIGxpYnJhcnkgaXMgY2FsY3VsYXRlIGlu dGVyc2VjdGlvbiBiZXR3ZWVuIGRyYXdpbmcKICogcHJpbWl0aXZlcyB1c2VkIGluIHBjYiBhbmQg Y3V0IG91dHMgZm9yIGRpc3BsYXkgb24gc2NyZWVuLiBJbnRlcnNlY3Rpb24gaXMKICogdXNlZCB0 byBmaWd1cmUgb3V0IHdoaWNoIGRyYXdpbmcgcHJpbWl0aXZlcyBvdmVybGFwIGZvciBjb25uZWN0 aXZpdHkgY2hlY2sgYW5kCiAqIGEgZ3Jvd24gY29weSBmb3IgY2xlYXJhbmNlIGNoZWNrLiBHZXJi ZXIgZmlsZXMgc2hvdWxkIGhhdmUgdGhlcmUgb3duIG1lY2hhbmlzbQogKiBmb3IgY3V0IG91dHMg YnkgYSBwb2xhcml0eSBtZWNoYW5pc20gYW5kIGlmIHRoaXMgd29yayBjdXQgb3V0IGlzIG9ubHkg bmVlZGVkCiAqIGZvciBzY3JlZW4gZGlzcGxheS4gSXQgaXMgcG9zc2libGUgdGhlcm1hbHMgdXNl IHRoaXMgbWVjaGFuaXNtLgogKgogKiBEcmF3aW5nIHByaW1pdGl2ZXMgYXJlIGFzc3VtZWQgdG8g YmU6IGxpbmVzIHdpdGggcm91bmRlZCBlbmRzLCBjaXJjbGUgc2VnbWVudHMKICogd2l0aCByb3Vu ZGVkIGVuZHMsIGNpcmNsZXMgd2hpY2ggZXNzZW50aWFsbHkgYXJlIGVxdWFsIHRvIHplcm8gbGVu Z3RoIGxpbmVzLAogKiBwb2x5Z29ucyBhbmQgc3F1YXJlcyB3aGljaCBtYXkgYmUgZHJhd24gYnkg YSBwb2x5Z29uLgoKICogSXQgaXMgYXNzdW1lZCBjdXJyZW50IGFsZ29yaXRobSB0byBjYWxjdWxh dGUgaW50ZXJzZWN0aW9ucyB3aXRoaW4gcGNiIGlzIGdvb2QKICogZW5vdWdoIG90aGVyd2lzZSB0 aGVyZSBhcmUgb3RoZXIgbGlicmFyaWVzOgogKiAgIDEuIENsaXBwZXIgd2hpY2ggU3RlcGhhbiBC w7Z0dGNoZXIgYnJvdWdodCB1cCBhIHNob3J0IHdoaWxlIGFnbyBhbmQgc3RhcnRlZAogKiAgICAg IHRvIHdyaXRlIG9uIGEgZ2VyYmVyIGZpbGUgY2xlYXJhbmNlIGNoZWNrZXIuCiAqICAgICAgaHR0 cDovL2FuZ3Vzai5jb20vZGVscGhpL2NsaXBwZXIucGhwCiAqICAgICAgaHR0cDovL3d3dy5wc2p0 Lm9yZy9jb2RlL2RyYy9zY3JlZW5zaG90LnBuZwogKiAgICAgIGh0dHA6Ly93d3cucHNqdC5vcmcv Y29kZS8KICogICAyLiBDZ2FsIHdoaWNoIGhhdmUgYW4gaW1wcmVzc2l2ZSBkZXZlbG9wZXIgbGlz dCBhbmQgdGhlc2UgcGVvcGxlIGNhbid0CiAqICAgICAgc29sdmUgYSBwcm9ibGVtIEkgaGF2ZSBu byBpZGVhIHdoZXJlIHRvIGxvb2suIEEgdHlwaWNhbCBkZXZlbG9wZXIgb24gY2dhbAogKiAgICAg IGRvIG1hdGhlbWF0aWNhbCByZXNlYXJjaC4KICogICAgICBodHRwOi8vd3d3LmNnYWwub3JnCiAq ICBJZiB0aGVyZSBpcyBhIG5lZWQgZm9yIGEgZ2VvbWV0cmljIGxpYnJhcnkgaW4gcGNiIGNnYWwg aXMgcHJvYmFibHkgdGhlIGNob2ljZS4KICoKICogIEl0IGlzIGFzc3VtZWQgZ2VvbWV0cmljIGxp YnJhcnkgYWxzbyBpcyB1c2VmdWwgdG8gY2FsY3VsYXRlIHdoaWNoIG9iamVjdHMKICogIGJlbG9u ZyB0byB3aGljaCBuZXQuCiAqLwojaW5jbHVkZSA8bWF0aC5oPgoKdHlwZWRlZiBzdHJ1Y3R7Cn0g bmV0X3R5cGU7Cgp0eXBlZGVmIHN0cnVjdHsKfSBjaXJjbGVfdHlwZTsKCnR5cGVkZWYgc3RydWN0 ewp9IGxpbmVfdHlwZTsKCnR5cGVkZWYgc3RydWN0ewp9IHBvbHlnb25fdHlwZTsKCnR5cGVkZWYg c3RydWN0ewp9IGFyY190eXBlOwoKdHlwZWRlZiBzdHJ1Y3R7CiAgZW51bSB7Y2lyY2xlX2VudW0s IGxpbmVfZW51bSwgcG9seWdvbl9lbnVtLCBhcmNfZW51bX0gdHlwZTsKICB1bmlvbnsKICAgIGNp cmNsZV90eXBlIGNpcmNsZTsKICAgIGxpbmVfdHlwZSBsaW5lOwogICAgcG9seWdvbl90eXBlIHBv bHlnb247CiAgICBhcmNfdHlwZSBhcmM7CiAgfTsKfSBwcmltaXRpdmVfdHlwZTsKCmZsb2F0IGdl dENsZWFyYW5jZShuZXRfdHlwZSBuZXQxLCBuZXRfdHlwZSBuZXQyKTsgLy8gRmluZCBjbGVhcmFu Y2UgdmFsdWUgd2hpY2ggc2hvdWxkIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIHVzZWQgYmV0d2VlbiBuZXRzLiBUaGVyZSBtYXkgYmUgYQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoaWVyYXJjaHkg Z2xvYmFsLS0+bmV0IGNsYXNzLT5uZXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIFRoZXJlIHdvdWxkIHByb2JhYmx5IGJlIGEgbWluaW11bQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3BwZXIgc3Bh Y2luZyBvbiBlYWNoIGxheWVyIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBjbGVhcmFuY2Ugc2hvdWxkIGJlIGF0IGxlYXN0IHRoZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYW1lIGFzIG1pbmlt dW0gY29wcGVyIHNwYWNpbmcgYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8gYWN0dWFsIGxheWVyLgoKdm9pZCBjaGVja0NsZWFyYW5jZSh2b2lkKXsK ICBpbnQgbmV0OwogIGNvbnN0IG5ldF90eXBlIG5ldHNbXSA9IGdldE5ldHMoKTsgICAgICAgICAg ICAvLyBMaXN0IG9mIGFsbCBuZXRzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBOZXRzIHNob3VsZCBpZGVhbGx5IGluY2x1ZGUgbmV0cwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JtZWQgYnkgZmxv YXRpbmcgZHJhd2luZyBwcmltaXRpdmVzIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLyBjb25uZWN0ZWQgdG8gYSBuZXQgaW4gbmV0IGxpc3QuCiAg Y29uc3QgaW50IG5ldHNMZW4gPSBnZXROZXRzTGVuKCk7ICAgICAgICAgICAgIC8vIE51bWJlciBv ZiBuZXRzCgogIGZvcihuZXQgPSAwOyBuZXQgPCBuZXRzTGVuOyBuZXQrKyl7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZWFjaCBuZXQKICAgICAgY29uc3QgcHJpbWl0 aXZlX3R5cGUgcHJpbWl0aXZlc1tdID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g RHJhd2luZyBwcmltaXRpdmVzIGluIHRoaXMgbmV0CiAgICAgICAgICBmaW5kRHJhd2luZ1ByaW1p dGl2ZXMobmV0c1tuZXRdKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhl IGRyYXdpbmcgcHJpbWl0aXZlcwogICAgICBjb25zdCBpbnQgcHJpbWl0aXZlc0xlbiA9ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOdW1iZXIgb2YgZHJhd2luZyBw cmltaXRpdmVzIGluIHRoaXMgbmV0CiAgICAgICAgICBnZXREcmF3aW5nUHJpbWl0aXZlcyhuZXRz W25ldF0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgbGVuZ3RoCiAgICAg IGludCBuZXRPdGhlcjsKCiAgICAgIGZvcihuZXRPdGhlciA9IDA7IG5ldE90aGVyIDwgbmV0c0xl bjsgbmV0T3RoZXIrKyl7ICAgICAgICAgICAgICAgIC8vIEZvciBlYWNoIG5ldAogICAgICAgICAg aWYobmV0T3RoZXIgPT0gbmV0KXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBTYW1lIG5ldD8KICAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhjZXB0IHNhbWUgbmV0CiAgICAg ICAgICB9CgogICAgICAgICAgaW50IHByaW1pdGl2ZTsKICAgICAgICAgIGNvbnN0IGludCBjbGVh cmFuY2UgPSBnZXRDbGVhcmFuY2UobmV0c1tuZXRdLCBuZXRzW25ldE90aGVyXSk7Ly8gRmluZCBj bGVhcmFuY2UgdmFsdWUgYmV0d2VlbiB0aGlzIGFuZCBvdGhlciBuZXQKCiAgICAgICAgICBjb25z dCBwcmltaXRpdmVfdHlwZSBuZXRCbG9hdGVkID0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vIEJsb2F0ZWQgd2l0aCBjbGVhcmFuY2UgdmFsdWUgZm9yIG90aGVyIG5ldAogICAgICAgICAg ICAgIGJsb2F0UHJpbWl0aXZlcyhuZXRzW25ldF0sIG5ldHNbbmV0T3RoZXJdLCBjbGVhcmFuY2Up OyAgICAvLyBCbG9hdCBiZXR3ZWVuIHRoaXMgYW5kIG90aGVyIG5ldAoKICAgICAgICAgIGNvbnN0 IHByaW1pdGl2ZV90eXBlIHByaW1pdGl2ZXNPdGhlcltdID0KICAgICAgICAgICAgICBmaW5kRHJh d2luZ1ByaW1pdGl2ZXMobmV0c1tuZXRPdGhlcl0pOwoKICAgICAgICAgIGZvcihwcmltaXRpdmUg PSAwOyBwcmltaXRpdmUgPCBwcmltaXRpdmVzTGVuOyBwcmltaXRpdmUrKyl7ICAgLy8gRm9yIGVh Y2ggZHJhd2luZyBwcmltaXRpdmUKICAgICAgICAgICAgICBwcmltaXRpdmVfdHlwZSBwcmltaXRp dmUgPSBwcmltaXRpdmVzT3RoZXJbcHJpbWl0aXZlXTsgICAgLy8gUHJpbWl0aXZlIGluIG90aGVy IG5ldAogICAgICAgICAgICAgIGlmKGludGVyc2VjdChuZXRCbG9hdGVkLCBwcmltaXRpdmUpKXsg ICAgICAgICAgICAgICAgICAgICAvLyBCbG9hdGVkIG5ldCBpbnRlcnNlY3Qgd2l0aCBwcmltaXRp dmUgaW4gb3RoZXIgbmV0PwogICAgICAgICAgICAgICAgICBhcHBlbmRfZHJjX3Zpb2xhdGlvbih2 aW9sYXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAvLyBJbmRpY2F0ZSBlcnJvcgogICAgICAg ICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQoKICB9Cn0KCmZsb2F0IGdldENsZWFyYW5jZShu ZXRfdHlwZSBuZXQxLCBuZXRfdHlwZSBuZXQyKXsgICAgICAgICAgICAgICAgICAgICAgIC8vIEZp Z3VyZSB3aGljaCBjbGVhcmFuY2Ugc2hvbGQgYmUgdXNlZCBiZXR3ZWVuIG5ldHMKICBmbG9hdCBj bGVhcmFuY2U7CgogIGNsZWFyYW5jZSA9IG5ldEZpbmRDbGVhcmFuY2UobmV0MSwgbmV0Mik7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIaWdoZXN0IHByZWNlZGVuY2UgYmV0d2VlbiBu ZXRzCiAgaWYoaXNuYW4oY2xlYXJhbmNlKSl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIENsZWFyYW5jZSBleGlzdD8KICAgICAgY2xlYXJhbmNlID0g bmV0Q2xhc3NGaW5kQ2xlYXJhbmNlKG5ldDEsIG5ldDIpOyAgICAgICAgICAgICAgICAgICAgLy8g TmV4dCBwcmVjZWRlbmNlIGFnYWluc3QgbmV0IGNsYXNzZXMKICAgICAgaWYoaXNuYW4oY2xlYXJh bmNlKSl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xl YXJhbmNlIGV4aXN0PwogICAgICAgICAgY2xlYXJhbmNlID0gY2xlYXJhbmNlR2xvYmFsKCk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgZ2xvYmFsIHZhbHVlIGFzc3VtZWQg dG8gZXhpc3QKICAgICAgfQogIH0KCiAgcmV0dXJuIGNsZWFyYW5jZTsKfQoKdm9pZCBkcmNNaW5p bXVtQ29wcGVyU3BhY2luZyh2b2lkKXsKICBpbnQgbGF5ZXIsIGxheWVyTGVuOwoKICBmb3IobGF5 ZXIgPSAwOyBsYXllciA8IGxheWVyTGVuOyBsYXllcisrKXsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gRm9yIGVhY2ggbGF5ZXIKICAgICAgbmV0X3R5cGUgbmV0OwogICAgICBpbnQgbmV0 TGVuOwoKICAgICAgZm9yKG5ldCA9IDA7IG5ldCA8IGxheWVyTGVuOyBuZXQrKyl7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGVhY2ggbmV0IG9uIGxheWVyCiAgICAgICAgICBu ZXRfdHlwZSBuZXRPdGhlcjsKICAgICAgICAgIGludCBuZXRPdGhlckxlbjsKCiAgICAgICAgICBm b3IobmV0T3RoZXIgPSAwOyBuZXRPdGhlciA8IGxheWVyTGVuOyBuZXRPdGhlcisrKXsgICAgICAg ICAgIC8vIEZvciBlYWNoIG5ldCBvbiBsYXllcgogICAgICAgICAgICAgIGZsb2F0IGNsZWFyYW5j ZSA9IG5ldENsYXNzRmluZENsZWFyYW5jZShuZXQsIG5ldE90aGVyKTsgICAvLyBGaW5kIGNsZWFy YW5jZSBiZXR3ZWVuIHRoaXMgbmV0IGFuZCBvdGhlciBuZXQKCiAgICAgICAgICAgICAgaWYoY2xl YXJhbmNlID4gbWluaW11bUNvcHBlclNwYWNpbmcoKSl7ICAgICAgICAgICAgICAgICAgIC8vIENs ZWFyYW5jZSA+IG1pbmltdW0gY29wcGVyIHNwYWNpbmcgZm9yIHRoaXMgbGF5ZXI/CiAgICAgICAg ICAgICAgICAgIGFwcGVuZF9kcmNfdmlvbGF0aW9uKHZpb2xhdGlvbik7ICAgICAgICAgICAgICAg ICAgICAgIC8vIEluZGljYXRlIGVycm9yIGJ1dCBkbyBub3QgZm9yY2UgdXNlCiAgICAgICAgICAg ICAgfQogICAgICB9CiAgfQp9Cg== --Multipart=_Thu__19_May_2016_00_22_40_+0200_zM+o7cCV5lI_rFPo--