From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id iJRWN+nXQWTbuQAASxT56A (envelope-from ) for ; Fri, 21 Apr 2023 02:25:13 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id YGVYN+nXQWQXYgEA9RJhRA (envelope-from ) for ; Fri, 21 Apr 2023 02:25:13 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 8C09117DFC for ; Fri, 21 Apr 2023 02:25:12 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ppeaG-00049z-EV; Thu, 20 Apr 2023 20:25:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ppeaE-00049q-AM for guix-patches@gnu.org; Thu, 20 Apr 2023 20:25:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ppeaD-00061z-OT for guix-patches@gnu.org; Thu, 20 Apr 2023 20:25:01 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ppeaD-00040b-JB for guix-patches@gnu.org; Thu, 20 Apr 2023 20:25:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#42338] [PATCH] Add composer build system (PHP) References: <20200713002055.1553f136@tachikoma.lepiller.eu> In-Reply-To: <20200713002055.1553f136@tachikoma.lepiller.eu> Resent-From: Adam Faiz Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 21 Apr 2023 00:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 42338 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 42338@debbugs.gnu.org Cc: julien@lepiller.eu, maximedevos@telenet.be, maya.tomasek@disroot.org Received: via spool by 42338-submit@debbugs.gnu.org id=B42338.168203665515348 (code B ref 42338); Fri, 21 Apr 2023 00:25:01 +0000 Received: (at 42338) by debbugs.gnu.org; 21 Apr 2023 00:24:15 +0000 Received: from localhost ([127.0.0.1]:38926 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ppeZQ-0003zR-EY for submit@debbugs.gnu.org; Thu, 20 Apr 2023 20:24:14 -0400 Received: from knopi.disroot.org ([178.21.23.139]:53348) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ppeZM-0003zE-Mb for 42338@debbugs.gnu.org; Thu, 20 Apr 2023 20:24:11 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 0E7224024D; Fri, 21 Apr 2023 02:24:07 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Jc9COhwZBIoB; Fri, 21 Apr 2023 02:24:03 +0200 (CEST) Content-Type: multipart/mixed; boundary="------------8QyPfQMLrvK9wysJ9iPduH1e" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1682036643; bh=29XRtLntyImZ+00BZ0SHS7XxbrqfkhCaWJjWADuLhO4=; h=Date:To:Subject:Cc:From; b=WGdPhfuEcIJAKTdkENYYn91jbCp5+bPbToGu0EIOVbZC4DbYWCvEiryYPe+HN2cy+ RuvU+CIf/v9V1LIwd/1Q4BuCyrls5xVPJOqXdiGFkk1Zu7apLED0QuRoxCFGm3u/Wp a7WIKlLKBANKRTla4/e+i107RTp5UTGBjgO7R3yUypvH7LxvbdeX+YJq/J0mMY9mrR Ymq8LfPIdrwsNBh2xVRcUNGYhjt1vNF+g5Ry76s4U5zM30otlG6BLVz2Tksxxvy67d XO4DyvgTVw/3KOQ4/Dbw79vUMmeso1Z7wKTF6mT6dS6qZBDqMzCZzO/WTatcQKkkZR RcR6hvZxINq5Q== Message-ID: <099bcd2b-ed5b-6d5d-b7cf-c5aeef255c6d@disroot.org> Date: Fri, 21 Apr 2023 00:23:58 +0000 MIME-Version: 1.0 Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Adam Faiz X-ACL-Warn: , Adam Faiz via Guix-patches From: Adam Faiz via Guix-patches via Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Seal: i=1; s=key1; d=yhetil.org; t=1682036713; a=rsa-sha256; cv=none; b=FqB2+C3ybHxLLZmq05bD7FDsdAzX+59jqQuJW+Qao/d5+A2bI5xwj2t6EnpTr7n5WxnKHK X9HDDej7DQ5NrBWcqxgQj0q1oMGlRnYpNdxpLqJG01iap6L9c+wOl90mehgO8pRWj0avv3 357sz+yg2G2JFEHp8GLiMIShGPphjaXS2aUQM/5CZlqXrd7W1ackWaiZILgBH0R06vWRkj n9lXJ3jckkfg5h+bgapGxAh4dSlXohlVmCL/1cfmFLMQaogPPk3in81Uap5BSuu6ng3FCf MVXHM+gwOXqsP/LJlU7YZ1B0lU5CwKtMTJ2bdQGWVBoOwQJzWhsiupGdOLdCSA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=disroot.org header.s=mail header.b=WGdPhfuE; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1682036713; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=XqYPOXgidlr9jEU7ZhKawmIv9QCnkX/bP+wmg6TaBcQ=; b=YENPz+GiGHzw3B6xfJPI8rAWRHQOMZVcVR34NG+nlLMUkah5fxpWVkm3/UgSBIvrtESqV4 jWGgTaVsDg99LvsKPDLNCqlRZ3geeXivFmsn2laKkMhqNQ80SfJ82CkNrbrsJCJiWmFDOT yVfPi64z0ii+d9MBRkRZ6Vxl8ia5tw5YKHJ4+AYbcqPl8YvZeiEE57TycUX0+xFdDOqRdl X0H1IlpxT2Kmm37VApVN6gxlPO8ky76ELwwfDtrbvWphWkmh2y9iqSYFs5EAcPlkw0DdcO rag42KdG4TGvnk6ChUCbW64YIgaK4KbjG6H98i7jwBoz51mOOpKVbysPsHyX7A== X-Migadu-Spam-Score: -2.81 X-Spam-Score: -2.81 X-Migadu-Queue-Id: 8C09117DFC X-Migadu-Scanner: scn0.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=disroot.org header.s=mail header.b=WGdPhfuE; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-TUID: hXOP2oUucKI8 This is a multi-part message in MIME format. --------------8QyPfQMLrvK9wysJ9iPduH1e Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, I'm interested in this composer build system so that I can start packaging the NextCloud server and its dependencies. I've rebased the patches and modified them a bit: 1. The composer importer now uses the new inputs style for importing 2. The composer build system uses gexps However, there are a few bugs that I don't know how to fix. The --recursive option of the importer doesn't work: === In guix/scripts/import.scm: 89:11 4 (guix-import . _) In guix/scripts/import/composer.scm:ice-9/boot-9.scm:1685:16: In procedure raise-exception: Throw to key `match-error' with args `("match" "no matching pattern" #)'. 98:17 3 (guix-import-composer . _) In guix/import/utils.scm: 638:27 2 (recursive-import "psr/http-client" # _ #:guix-name _ . #) 630:33 1 (lookup-node "psr/http-client" #f) In ice-9/eval.scm: 423:17 0 (_ . _) ice-9/eval.scm:423:17: In procedure eval: Wrong number of arguments === I think there's something wrong with (define-json-mapping : === error: in phase 'install': uncaught exception: match-error "match" "no matching pattern" # In guix/build/gnu-build-system.scm: 927:23 6 (_) In guix/build/composer-build-system.scm: 200:23 5 (install #:inputs _ #:outputs _ #:composer-file _) In ice-9/ports.scm: 433:17 4 (call-with-input-file _ _ #:binary _ #:encoding _ # _) In guix/build/composer-build-system.scm: 56:0 3 (json->composer-package (("config" ("allow-plug…" …)) …)) 52:12 2 (json->composer-autoload (("psr-4" ("Doctrine\\…" . #)))) In ice-9/boot-9.scm: 1685:16 1 (raise-exception _ #:continuable? _) 1685:16 0 (raise-exception _ #:continuable? _) ice-9/boot-9.scm:1685:16: In procedure raise-exception: Throw to key `match-error' with args `("match" "no matching pattern" #)'. === --------------8QyPfQMLrvK9wysJ9iPduH1e Content-Type: text/x-patch; charset=UTF-8; name="0001-guix-import-Add-composer-importer.patch" Content-Disposition: attachment; filename="0001-guix-import-Add-composer-importer.patch" Content-Transfer-Encoding: base64 RnJvbSAwZDQ0ZjhmMWU2NmM0MTQxZDBjOTdhYTJiNjMzMDkxYTBiYjc1M2U1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlkOiA8MGQ0NGY4ZjFlNjZjNDE0MWQwYzk3YWEy YjYzMzA5MWEwYmI3NTNlNS4xNjgyMDM0MzQwLmdpdC5hZGFtLmZhaXpAZGlzcm9vdC5vcmc+ CkZyb206IEp1bGllbiBMZXBpbGxlciA8anVsaWVuQGxlcGlsbGVyLmV1PgpEYXRlOiBUaHUs IDIwIEFwciAyMDIzIDA3OjE4OjE4ICswODAwClN1YmplY3Q6IFtQQVRDSCAxLzNdIGd1aXg6 IGltcG9ydDogQWRkIGNvbXBvc2VyIGltcG9ydGVyLgoKKiBndWl4L2ltcG9ydC9jb21wb3Nl ci5zY206IE5ldyBmaWxlLgoqIGd1aXgvc2NyaXB0cy9pbXBvcnQvY29tcG9zZXIuc2NtOiBO ZXcgZmlsZS4KKiBndWl4L3Rlc3RzL2NvbXBvc2VyLnNjbTogTmV3IGZpbGUuCiogTWFrZWZp bGUuYW06IEFkZCB0aGVtLgoqIGd1aXgvc2NyaXB0cy9pbXBvcnQuc2NtOiBBZGQgY29tcG9z ZXIgaW1wb3J0ZXIuCiogZG9jL2d1aXgudGV4aSAoSW52b2tpbmcgZ3VpeCBpbXBvcnQpOiBN ZW50aW9uIGl0LgotLS0KIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAz ICsKIGRvYy9ndWl4LnRleGkgICAgICAgICAgICAgICAgICAgIHwgIDEyICsrCiBndWl4L2lt cG9ydC9jb21wb3Nlci5zY20gICAgICAgICB8IDI0OCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBndWl4L3NjcmlwdHMvaW1wb3J0LnNjbSAgICAgICAgICB8ICAgMiArLQog Z3VpeC9zY3JpcHRzL2ltcG9ydC9jb21wb3Nlci5zY20gfCAxMDcgKysrKysrKysrKysrKwog dGVzdHMvY29tcG9zZXIuc2NtICAgICAgICAgICAgICAgfCAgOTIgKysrKysrKysrKysrCiA2 IGZpbGVzIGNoYW5nZWQsIDQ2MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ3VpeC9pbXBvcnQvY29tcG9zZXIuc2NtCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ3VpeC9zY3JpcHRzL2ltcG9ydC9jb21wb3Nlci5zY20KIGNyZWF0ZSBtb2RlIDEw MDY0NCB0ZXN0cy9jb21wb3Nlci5zY20KCmRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01h a2VmaWxlLmFtCmluZGV4IDIzYjkzOWI2NzQuLmY5ZGU0YTk2N2EgMTAwNjQ0Ci0tLSBhL01h a2VmaWxlLmFtCisrKyBiL01ha2VmaWxlLmFtCkBAIC0yNzAsNiArMjcwLDcgQEAgTU9EVUxF UyA9CQkJCQlcCiAgIGd1aXgvc2VhcmNoLXBhdGhzLnNjbQkJCQlcCiAgIGd1aXgvcGFja2Fn ZXMuc2NtCQkJCVwKICAgZ3VpeC9pbXBvcnQvY2FiYWwuc2NtCQkJCVwKKyAgZ3VpeC9pbXBv cnQvY29tcG9zZXIuc2NtCQkJXAogICBndWl4L2ltcG9ydC9jcGFuLnNjbQkJCQlcCiAgIGd1 aXgvaW1wb3J0L2NyYW4uc2NtCQkJCVwKICAgZ3VpeC9pbXBvcnQvY3JhdGUuc2NtCQkJCVwK QEAgLTMyNyw2ICszMjgsNyBAQCBNT0RVTEVTID0JCQkJCVwKICAgZ3VpeC9zY3JpcHRzL2hv bWUvaW1wb3J0LnNjbQkJCVwKICAgZ3VpeC9zY3JpcHRzL2xpbnQuc2NtCQkJCVwKICAgZ3Vp eC9zY3JpcHRzL2NoYWxsZW5nZS5zY20JCQlcCisgIGd1aXgvc2NyaXB0cy9pbXBvcnQvY29t cG9zZXIuc2NtCQlcCiAgIGd1aXgvc2NyaXB0cy9pbXBvcnQvY3JhdGUuc2NtCQkJXAogICBn dWl4L3NjcmlwdHMvaW1wb3J0L2NyYW4uc2NtCQkJXAogICBndWl4L3NjcmlwdHMvaW1wb3J0 L2VnZy5zY20gICAJCVwKQEAgLTQ5Miw2ICs0OTQsNyBAQCBTQ01fVEVTVFMgPQkJCQkJXAog ICB0ZXN0cy9jaGFsbGVuZ2Uuc2NtCQkJCVwKICAgdGVzdHMvY2hhbm5lbHMuc2NtCQkJCVwK ICAgdGVzdHMvY29tYmluYXRvcnMuc2NtCQkJXAorICB0ZXN0cy9jb21wb3Nlci5zY20JCQkJ XAogICB0ZXN0cy9jb250YWluZXJzLnNjbQkJCQlcCiAgIHRlc3RzL2NwYW4uc2NtCQkJCVwK ICAgdGVzdHMvY3Bpby5zY20JCQkJXApkaWZmIC0tZ2l0IGEvZG9jL2d1aXgudGV4aSBiL2Rv Yy9ndWl4LnRleGkKaW5kZXggYWRiMTk3NTkzNS4uOWM5ZTU2NzEyMCAxMDA2NDQKLS0tIGEv ZG9jL2d1aXgudGV4aQorKysgYi9kb2MvZ3VpeC50ZXhpCkBAIC0xNDAwOSw2ICsxNDAwOSwx OCBAQCBJbnZva2luZyBndWl4IGltcG9ydAogCiBAZW5kIHRhYmxlCiAKK0BpdGVtIGNvbXBv c2VyCitAY2luZGV4IENvbXBvc2VyCitAY2luZGV4IFBIUAorSW1wb3J0IG1ldGFkYXRhIGZy b20gdGhlIEB1cmVme2h0dHBzOi8vZ2V0Y29tcG9zZXIub3JnLywgQ29tcG9zZXJ9IHBhY2th Z2UKK2FyY2hpdmUgdXNlZCBieSB0aGUgUEhQIGNvbW11bml0eSwgYXMgaW4gdGhpcyBleGFt cGxlOgorCitAZXhhbXBsZQorZ3VpeCBpbXBvcnQgY29tcG9zZXIgcGhwdW5pdC9waHB1bml0 CitAZW5kIGV4YW1wbGUKKworQGVuZCB0YWJsZQorCiBAaXRlbSBnbwogQGNpbmRleCBnbwog SW1wb3J0IG1ldGFkYXRhIGZvciBhIEdvIG1vZHVsZSB1c2luZwpkaWZmIC0tZ2l0IGEvZ3Vp eC9pbXBvcnQvY29tcG9zZXIuc2NtIGIvZ3VpeC9pbXBvcnQvY29tcG9zZXIuc2NtCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjc1Yzc5MjA5ZWUKLS0tIC9kZXYv bnVsbAorKysgYi9ndWl4L2ltcG9ydC9jb21wb3Nlci5zY20KQEAgLTAsMCArMSwyNDggQEAK Kzs7OyBHTlUgR3VpeCAtLS0gRnVuY3Rpb25hbCBwYWNrYWdlIG1hbmFnZW1lbnQgZm9yIEdO VQorOzs7IENvcHlyaWdodCDCqSAyMDE5IEp1bGllbiBMZXBpbGxlciA8anVsaWVuQGxlcGls bGVyLmV1PgorOzs7Cis7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXguCis7OzsK Kzs7OyBHTlUgR3VpeCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5IGl0Cis7OzsgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7OyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAo YXQKKzs7OyB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7OzsKKzs7OyBHTlUg R3VpeCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCBidXQKKzs7OyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCis7OzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorOzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7OzsKKzs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorOzs7IGFs b25nIHdpdGggR05VIEd1aXguICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisKKyhkZWZpbmUtbW9kdWxlIChndWl4IGltcG9ydCBjb21wb3NlcikKKyAg Izp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKKyAgIzp1c2UtbW9kdWxlIChqc29uKQorICAj OnVzZS1tb2R1bGUgKGdjcnlwdCBoYXNoKQorICAjOnVzZS1tb2R1bGUgKGd1aXggYmFzZTMy KQorICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQgZ2l0KQorICAjOnVzZS1tb2R1bGUgKGd1 aXggYnVpbGQgdXRpbHMpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZC1zeXN0ZW0pCisg ICM6dXNlLW1vZHVsZSAoZ3VpeCBpbXBvcnQganNvbikKKyAgIzp1c2UtbW9kdWxlIChndWl4 IGltcG9ydCB1dGlscykKKyAgIzp1c2UtbW9kdWxlICgoZ3VpeCBsaWNlbnNlcykgIzpwcmVm aXggbGljZW5zZTopCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBwYWNrYWdlcykKKyAgIzp1c2Ut bW9kdWxlIChndWl4IHNlcmlhbGl6YXRpb24pCisgICM6dXNlLW1vZHVsZSAoZ3VpeCB1cHN0 cmVhbSkKKyAgIzp1c2UtbW9kdWxlIChndWl4IHV0aWxzKQorICAjOnVzZS1tb2R1bGUgKHNy Zmkgc3JmaS0xKQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMSkKKyAgIzpleHBvcnQg KGNvbXBvc2VyLT5ndWl4LXBhY2thZ2UKKyAgICAgICAgICAgICVjb21wb3Nlci11cGRhdGVy CisgICAgICAgICAgICBjb21wb3Nlci1yZWN1cnNpdmUtaW1wb3J0KSkKKworOzsgWFhYIGFk YXB0ZWQgZnJvbSAoZ3VpeCBzY3JpcHRzIGhhc2gpCisoZGVmaW5lIChmaWxlLWhhc2ggZmls ZSBzZWxlY3Q/IHJlY3Vyc2l2ZT8pCisgIDs7IENvbXB1dGUgdGhlIGhhc2ggb2YgRklMRS4K KyAgKGlmIHJlY3Vyc2l2ZT8KKyAgICAgIChsZXQtdmFsdWVzICgoKHBvcnQgZ2V0LWhhc2gp IChvcGVuLXNoYTI1Ni1wb3J0KSkpCisgICAgICAgICh3cml0ZS1maWxlIGZpbGUgcG9ydCAj OnNlbGVjdD8gc2VsZWN0PykKKyAgICAgICAgKGZvcmNlLW91dHB1dCBwb3J0KQorICAgICAg ICAoZ2V0LWhhc2gpKQorICAgICAgKGNhbGwtd2l0aC1pbnB1dC1maWxlIGZpbGUgcG9ydC1z aGEyNTYpKSkKKworOzsgWFhYIHRha2VuIGZyb20gKGd1aXggc2NyaXB0cyBoYXNoKQorKGRl ZmluZSAodmNzLWZpbGU/IGZpbGUgc3RhdCkKKyAgKGNhc2UgKHN0YXQ6dHlwZSBzdGF0KQor ICAgICgoZGlyZWN0b3J5KQorICAgICAobWVtYmVyIChiYXNlbmFtZSBmaWxlKSAnKCIuYnpy IiAiLmdpdCIgIi5oZyIgIi5zdm4iICJDVlMiKSkpCisgICAgKChyZWd1bGFyKQorICAgICA7 OyBHaXQgc3ViLW1vZHVsZXMgaGF2ZSBhICcuZ2l0JyBmaWxlIHRoYXQgaXMgYSByZWd1bGFy IHRleHQgZmlsZS4KKyAgICAgKHN0cmluZz0/IChiYXNlbmFtZSBmaWxlKSAiLmdpdCIpKQor ICAgIChlbHNlCisgICAgICNmKSkpCisKKyhkZWZpbmUgKGxhdGVzdC12ZXJzaW9uIHZlcnNp b25zKQorICAoZm9sZCAobGFtYmRhIChhIGIpIChpZiAodmVyc2lvbj4/IGEgYikgYSBiKSkg KGNhciB2ZXJzaW9ucykgdmVyc2lvbnMpKQorCisoZGVmaW5lIChmaXgtdmVyc2lvbiB2ZXJz aW9uKQorICAiUmV0dXJuIGEgZml4ZWQgdmVyc2lvbiBmcm9tIGEgdmVyc2lvbiBzdHJpbmcu ICBGb3IgaW5zdGFuY2UsIHYxMC4xIC0+IDEwLjEiCisgIChjb25kCisgICAgKChzdHJpbmct cHJlZml4PyAidmVyc2lvbiIgdmVyc2lvbikKKyAgICAgKGlmIChjaGFyLXNldC1jb250YWlu cz8gY2hhci1zZXQ6ZGlnaXQgKHN0cmluZy1yZWYgdmVyc2lvbiA3KSkKKyAgICAgICAgIChz dWJzdHJpbmcgdmVyc2lvbiA3KQorICAgICAgICAgKHN1YnN0cmluZyB2ZXJzaW9uIDgpKSkK KyAgICAoKHN0cmluZy1wcmVmaXg/ICJ2IiB2ZXJzaW9uKQorICAgICAoc3Vic3RyaW5nIHZl cnNpb24gMSkpCisgICAgKGVsc2UgdmVyc2lvbikpKQorCisoZGVmaW5lKiAoY29tcG9zZXIt ZmV0Y2ggbmFtZSAjOm9wdGlvbmFsIHZlcnNpb24pCisgICJSZXR1cm4gYW4gYWxpc3QgcmVw cmVzZW50YXRpb24gb2YgdGhlIENvbXBvc2VyIG1ldGFkYXRhIGZvciB0aGUgcGFja2FnZSBO QU1FLAorb3IgI2Ygb24gZmFpbHVyZS4iCisgIChsZXQgKChwYWNrYWdlIChqc29uLWZldGNo CisgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgImh0dHBzOi8vcmVwby5wYWNr YWdpc3Qub3JnL3AvIiBuYW1lICIuanNvbiIpKSkpCisgICAgKGlmIHBhY2thZ2UKKyAgICAg ICAgKGxldCogKChwYWNrYWdlcyAoYXNzb2MtcmVmIHBhY2thZ2UgInBhY2thZ2VzIikpCisg ICAgICAgICAgICAgICAocGFja2FnZSAoYXNzb2MtcmVmIHBhY2thZ2VzIG5hbWUpKQorICAg ICAgICAgICAgICAgKHZlcnNpb25zIChmaWx0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsYW1iZGEgKHZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChh bmQgKG5vdCAoc3RyaW5nLWNvbnRhaW5zIHZlcnNpb24gImRldiIpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChub3QgKHN0cmluZy1jb250YWlucyB2ZXJzaW9uICJi ZXRhIikpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXAgY2FyIHBhY2thZ2Up KSkKKyAgICAgICAgICAgICAgICh2ZXJzaW9ucyAobWFwCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhICh2ZXJzaW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoY29ucyAoZml4LXZlcnNpb24gdmVyc2lvbikgdmVyc2lvbikpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICB2ZXJzaW9ucykpCisgICAgICAgICAgICAgICAodmVyc2lvbiAob3Ig KGlmIChudWxsPyB2ZXJzaW9uKSAjZiB2ZXJzaW9uKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChsYXRlc3QtdmVyc2lvbiAobWFwIGNhciB2ZXJzaW9ucykpKSkpCisgICAgICAg ICAgKGFzc29jLXJlZiBwYWNrYWdlIChhc3NvYy1yZWYgdmVyc2lvbnMgdmVyc2lvbikpKQor ICAgICAgICAjZikpKQorCisoZGVmaW5lIChwaHAtcGFja2FnZS1uYW1lIG5hbWUpCisgICJH aXZlbiB0aGUgTkFNRSBvZiBhIHBhY2thZ2Ugb24gUGFja2FnaXN0LCByZXR1cm4gYSBHdWl4 LWNvbXBsaWFudCBuYW1lIGZvcgordGhlIHBhY2thZ2UuIgorICAobGV0ICgobmFtZSAoc3Ry aW5nLWpvaW4gKHN0cmluZy1zcGxpdCBuYW1lICNcLykgIi0iKSkpCisgICAgKGlmIChzdHJp bmctcHJlZml4PyAicGhwLSIgbmFtZSkKKyAgICAgICAgKHNuYWtlLWNhc2UgbmFtZSkKKyAg ICAgICAgKHN0cmluZy1hcHBlbmQgInBocC0iIChzbmFrZS1jYXNlIG5hbWUpKSkpKQorCiso ZGVmaW5lIChtYWtlLXBocC1zZXhwIG5hbWUgdmVyc2lvbiBob21lLXBhZ2UgZGVzY3JpcHRp b24gZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgICAgIGRldi1kZXBlbmRlbmNp ZXMgbGljZW5zZXMgc291cmNlKQorICAiUmV0dXJuIHRoZSBgcGFja2FnZScgcy1leHByZXNz aW9uIGZvciBhIFBIUCBwYWNrYWdlIHdpdGggdGhlIGdpdmVuIE5BTUUsCitWRVJTSU9OLCBI T01FLVBBR0UsIERFU0NSSVBUSU9OLCBERVBFTkRFTkNJRVMsIExJQ0VOU0VTIGFuZCBTT1VS Q0UuIgorICAobGV0ICgoZ2l0PyAoZXF1YWw/IChhc3NvYy1yZWYgc291cmNlICJ0eXBlIikg ImdpdCIpKSkKKyAgICAoKGlmIGdpdD8gY2FsbC13aXRoLXRlbXBvcmFyeS1kaXJlY3Rvcnkg Y2FsbC13aXRoLXRlbXBvcmFyeS1vdXRwdXQtZmlsZSkKKyAgICAgKGxhbWJkYSogKHRlbXAg IzpvcHRpb25hbCBwb3J0KQorICAgICAgIChhbmQgKGlmIGdpdD8KKyAgICAgICAgICAgICAg ICAoYmVnaW4KKyAgICAgICAgICAgICAgICAgIChta2Rpci1wIHRlbXApCisgICAgICAgICAg ICAgICAgICAoZ2l0LWZldGNoIChhc3NvYy1yZWYgc291cmNlICJ1cmwiKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoYXNzb2MtcmVmIHNvdXJjZSAicmVmZXJlbmNlIikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCkpCisgICAgICAgICAgICAgICAgKHVy bC1mZXRjaCAoYXNzb2MtcmVmIHNvdXJjZSAidXJsIikgdGVtcCkpCisgICAgICAgICAgICBg KHBhY2thZ2UKKyAgICAgICAgICAgICAgIChuYW1lICwocGhwLXBhY2thZ2UtbmFtZSBuYW1l KSkKKyAgICAgICAgICAgICAgICh2ZXJzaW9uICx2ZXJzaW9uKQorICAgICAgICAgICAgICAg KHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgLEAoaWYgZ2l0Pwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoKG1ldGhvZCBnaXQtZmV0Y2gpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVybCAsKGFzc29jLXJl ZiBzb3VyY2UgInVybCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChjb21taXQgLChhc3NvYy1yZWYgc291cmNlICJyZWZlcmVuY2UiKSkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBu YW1lIHZlcnNpb24pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNoYTI1 NgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZTMyCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChieXRldmVjdG9yLT5uaXgtYmFzZTMy LXN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUt aGFzaCB0ZW1wIChuZWdhdGUgdmNzLWZpbGU/KSAjdCkpKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYCgobWV0aG9kIHVybC1mZXRjaCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh1cmkgLChhc3NvYy1yZWYgc291cmNlICJ1cmwiKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaGEyNTYgKGJhc2UzMiAsKGd1aXgtaGFz aC11cmwgdGVtcCkpKSkpKSkKKyAgICAgICAgICAgICAgIChidWlsZC1zeXN0ZW0gY29tcG9z ZXItYnVpbGQtc3lzdGVtKQorICAgICAgICAgICAgICAgLEAoaWYgKG51bGw/IGRlcGVuZGVu Y2llcykKKyAgICAgICAgICAgICAgICAgICAgICcoKQorICAgICAgICAgICAgICAgICAgICAg YCgoaW5wdXRzCisgICAgICAgICAgICAgICAgICAgICAgICAoLCdsaXN0CisgICAgICAgICAg ICAgICAgICAgICAgICAgLEAobWFwIChsYW1iZGEgKG5hbWUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBgLChzdHJpbmctPnN5bWJvbCBuYW1lKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMpKSkpKQorICAgICAgICAgICAgICAg LEAoaWYgKG51bGw/IGRldi1kZXBlbmRlbmNpZXMpCisgICAgICAgICAgICAgICAgICAgICAn KCkKKyAgICAgICAgICAgICAgICAgICAgIGAoKG5hdGl2ZS1pbnB1dHMKKyAgICAgICAgICAg ICAgICAgICAgICAgICgsJ2xpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAsQChtYXAg KGxhbWJkYSAobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAsKHN0 cmluZy0+c3ltYm9sIG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl di1kZXBlbmRlbmNpZXMpKSkpKQorICAgICAgICAgICAgICAgKHN5bm9wc2lzICIiKQorICAg ICAgICAgICAgICAgKGRlc2NyaXB0aW9uICxkZXNjcmlwdGlvbikKKyAgICAgICAgICAgICAg IChob21lLXBhZ2UgLGhvbWUtcGFnZSkKKyAgICAgICAgICAgICAgIChsaWNlbnNlICwobWF0 Y2ggbGljZW5zZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKSAjZikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICgobGljZW5zZSkgKGxpY2Vuc2UtPnN5bWJvbCBsaWNl bnNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChfIGAobGlzdCAsQChtYXAgbGlj ZW5zZS0+c3ltYm9sIGxpY2Vuc2VzKSkpKSkpKSkpKSkKKworKGRlZmluZSogKGNvbXBvc2Vy LT5ndWl4LXBhY2thZ2UgcGFja2FnZS1uYW1lICM6b3B0aW9uYWwgdmVyc2lvbikKKyAgIkZl dGNoIHRoZSBtZXRhZGF0YSBmb3IgUEFDS0FHRS1OQU1FIGZyb20gcGFja2FnaXN0Lm9yZywg YW5kIHJldHVybiB0aGUKK2BwYWNrYWdlJyBzLWV4cHJlc3Npb24gY29ycmVzcG9uZGluZyB0 byB0aGF0IHBhY2thZ2UsIG9yICNmIG9uIGZhaWx1cmUuIgorICAobGV0ICgocGFja2FnZSAo Y29tcG9zZXItZmV0Y2ggcGFja2FnZS1uYW1lIHZlcnNpb24pKSkKKyAgICAoYW5kIHBhY2th Z2UKKyAgICAgICAgIChsZXQqICgobmFtZSAgICAgICAgIChhc3NvYy1yZWYgcGFja2FnZSAi bmFtZSIpKQorICAgICAgICAgICAgICAgICh2ZXJzaW9uICAgICAgKGZpeC12ZXJzaW9uIChh c3NvYy1yZWYgcGFja2FnZSAidmVyc2lvbiIpKSkKKyAgICAgICAgICAgICAgICAoZGVzY3Jp cHRpb24gIChiZWF1dGlmeS1kZXNjcmlwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChhc3NvYy1yZWYgcGFja2FnZSAiZGVzY3JpcHRpb24iKSkpCisgICAgICAgICAg ICAgICAgKGhvbWUtcGFnZSAgICAoYXNzb2MtcmVmIHBhY2thZ2UgImhvbWVwYWdlIikpCisg ICAgICAgICAgICAgICAgKGRlcGVuZGVuY2llcy1uYW1lcyAoZmlsdGVyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGRlcCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWNvbnRhaW5zIGRlcCAiLyIp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwIGNhciAoYXNz b2MtcmVmIHBhY2thZ2UgInJlcXVpcmUiKSkpKQorICAgICAgICAgICAgICAgIChkZXBlbmRl bmNpZXMgKG1hcCBwaHAtcGFja2FnZS1uYW1lIGRlcGVuZGVuY2llcy1uYW1lcykpCisgICAg ICAgICAgICAgICAgKHJlcXVpcmUtZGV2IChhc3NvYy1yZWYgcGFja2FnZSAicmVxdWlyZS1k ZXYiKSkKKyAgICAgICAgICAgICAgICAoZGV2LWRlcGVuZGVuY2llcy1uYW1lcworICAgICAg ICAgICAgICAgICAgKGlmIHJlcXVpcmUtZGV2CisgICAgICAgICAgICAgICAgICAgICAgKGZp bHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoZGVwKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAoc3RyaW5nLWNvbnRhaW5zIGRlcCAiLyIpKQorICAgICAgICAg ICAgICAgICAgICAgICAgKG1hcCBjYXIgcmVxdWlyZS1kZXYpKQorICAgICAgICAgICAgICAg ICAgICAgICcoKSkpCisgICAgICAgICAgICAgICAgKGRldi1kZXBlbmRlbmNpZXMgKG1hcCBw aHAtcGFja2FnZS1uYW1lIGRldi1kZXBlbmRlbmNpZXMtbmFtZXMpKQorICAgICAgICAgICAg ICAgIChsaWNlbnNlcyAgICAgKG1hcCBzdHJpbmctPmxpY2Vuc2UKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHZlY3Rvci0+bGlzdAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGFzc29jLXJlZiBwYWNrYWdlICJsaWNlbnNlIikpKSkpCisg ICAgICAgICAgICh2YWx1ZXMgKG1ha2UtcGhwLXNleHAgbmFtZSB2ZXJzaW9uIGhvbWUtcGFn ZSBkZXNjcmlwdGlvbiBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZXYtZGVwZW5kZW5jaWVzIGxpY2Vuc2VzIChhc3NvYy1yZWYgcGFja2FnZSAi c291cmNlIikpCisgICAgICAgICAgICAgICAgICAgKGFwcGVuZCBkZXBlbmRlbmNpZXMtbmFt ZXMgZGV2LWRlcGVuZGVuY2llcy1uYW1lcykpKSkpKQorCisoZGVmaW5lIChndWl4LW5hbWUt PmNvbXBvc2VyLW5hbWUgbmFtZSkKKyAgIkdpdmVuIGEgZ3VpeCBwYWNrYWdlIG5hbWUsIHJl dHVybiB0aGUgbmFtZSBvZiB0aGUgcGFja2FnZSBpbiBQYWNrYWdpc3QuIgorICAoaWYgKHN0 cmluZy1wcmVmaXg/ICJwaHAtIiBuYW1lKQorICAgICAgKGxldCAoKGNvbXBvbmVudHMgKHN0 cmluZy1zcGxpdCAoc3Vic3RyaW5nIG5hbWUgNCkgI1wtKSkpCisgICAgICAgIChtYXRjaCBj b21wb25lbnRzCisgICAgICAgICAgKChuYW1lc3BhY2UgbmFtZSAuLi4pCisgICAgICAgICAg IChzdHJpbmctYXBwZW5kIG5hbWVzcGFjZSAiLyIgKHN0cmluZy1qb2luIG5hbWUgIi0iKSkp KSkKKyAgICAgIG5hbWUpKQorCisoZGVmaW5lIChndWl4LXBhY2thZ2UtPmNvbXBvc2VyLW5h bWUgcGFja2FnZSkKKyAgIkdpdmVuIGEgQ29tcG9zZXIgUEFDS0FHRSBidWlsdCBmcm9tIFBh Y2thZ2lzdCwgcmV0dXJuIHRoZSBuYW1lIG9mIHRoZQorcGFja2FnZSBpbiBQYWNrYWdpc3Qu IgorICAobGV0ICgodXBzdHJlYW0tbmFtZSAoYXNzb2MtcmVmCisgICAgICAgICAgICAgICAg ICAgICAgICAgKHBhY2thZ2UtcHJvcGVydGllcyBwYWNrYWdlKQorICAgICAgICAgICAgICAg ICAgICAgICAgICd1cHN0cmVhbS1uYW1lKSkKKyAgICAgICAgKG5hbWUgKHBhY2thZ2UtbmFt ZSBwYWNrYWdlKSkpCisgICAgKGlmIHVwc3RyZWFtLW5hbWUKKyAgICAgIHVwc3RyZWFtLW5h bWUKKyAgICAgIChndWl4LW5hbWUtPmNvbXBvc2VyLW5hbWUgbmFtZSkpKSkKKworKGRlZmlu ZSAoc3RyaW5nLT5saWNlbnNlIHN0cikKKyAgIkNvbnZlcnQgdGhlIHN0cmluZyBTVFIgaW50 byBhIGxpY2Vuc2Ugb2JqZWN0LiIKKyAgKG1hdGNoIHN0cgorICAgICgiR05VIExHUEwiIGxp Y2Vuc2U6bGdwbDIuMCkKKyAgICAoIkdQTCIgbGljZW5zZTpncGwzKQorICAgICgob3IgIkJT RCIgIkJTRCBMaWNlbnNlIiAiQlNELTMtQ2xhdXNlIikgbGljZW5zZTpic2QtMykKKyAgICAo KG9yICJNSVQiICJNSVQgbGljZW5zZSIgIkV4cGF0IGxpY2Vuc2UiKSBsaWNlbnNlOmV4cGF0 KQorICAgICgiUHVibGljIGRvbWFpbiIgbGljZW5zZTpwdWJsaWMtZG9tYWluKQorICAgICgo b3IgIkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCIgIkFwYWNoZSAyLjAiKSBsaWNlbnNl OmFzbDIuMCkKKyAgICAoXyAjZikpKQorCisoZGVmaW5lIChwaHAtcGFja2FnZT8gcGFja2Fn ZSkKKyAgIlJldHVybiB0cnVlIGlmIFBBQ0tBR0UgaXMgYSBQSFAgcGFja2FnZSBmcm9tIFBh Y2thZ2lzdC4iCisgIChhbmQKKyAgICAoZXE/IChidWlsZC1zeXN0ZW0tbmFtZSAocGFja2Fn ZS1idWlsZC1zeXN0ZW0gcGFja2FnZSkpICdjb21wb3NlcikKKyAgICAoc3RyaW5nLXByZWZp eD8gInBocC0iIChwYWNrYWdlLW5hbWUgcGFja2FnZSkpKSkKKworKGRlZmluZSAobGF0ZXN0 LXJlbGVhc2UgcGFja2FnZSkKKyAgIlJldHVybiBhbiA8dXBzdHJlYW0tc291cmNlPiBmb3Ig dGhlIGxhdGVzdCByZWxlYXNlIG9mIFBBQ0tBR0UuIgorICAobGV0KiAoKHBocC1uYW1lIChn dWl4LXBhY2thZ2UtPmNvbXBvc2VyLW5hbWUgcGFja2FnZSkpCisgICAgICAgICAobWV0YWRh dGEgKGNvbXBvc2VyLWZldGNoIHBocC1uYW1lKSkKKyAgICAgICAgICh2ZXJzaW9uIChmaXgt dmVyc2lvbiAoYXNzb2MtcmVmIG1ldGFkYXRhICJ2ZXJzaW9uIikpKQorICAgICAgICAgKHVy bCAoYXNzb2MtcmVmIChhc3NvYy1yZWYgbWV0YWRhdGEgInNvdXJjZSIpICJ1cmwiKSkpCisg ICAgKHVwc3RyZWFtLXNvdXJjZQorICAgICAocGFja2FnZSAocGFja2FnZS1uYW1lIHBhY2th Z2UpKQorICAgICAodmVyc2lvbiB2ZXJzaW9uKQorICAgICAodXJscyAobGlzdCB1cmwpKSkp KQorCisoZGVmaW5lICVjb21wb3Nlci11cGRhdGVyCisgICh1cHN0cmVhbS11cGRhdGVyCisg ICAobmFtZSAnY29tcG9zZXIpCisgICAoZGVzY3JpcHRpb24gIlVwZGF0ZXIgZm9yIENvbXBv c2VyIHBhY2thZ2VzIikKKyAgIChwcmVkIHBocC1wYWNrYWdlPykKKyAgIChpbXBvcnQgbGF0 ZXN0LXJlbGVhc2UpKSkKKworKGRlZmluZSogKGNvbXBvc2VyLXJlY3Vyc2l2ZS1pbXBvcnQg cGFja2FnZS1uYW1lICM6b3B0aW9uYWwgdmVyc2lvbikKKyAgKHJlY3Vyc2l2ZS1pbXBvcnQg cGFja2FnZS1uYW1lICcoKQorICAgICAgICAgICAgICAgICAgICAjOnJlcG8tPmd1aXgtcGFj a2FnZSBjb21wb3Nlci0+Z3VpeC1wYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICM6Z3Vp eC1uYW1lIHBocC1wYWNrYWdlLW5hbWUpKQpkaWZmIC0tZ2l0IGEvZ3VpeC9zY3JpcHRzL2lt cG9ydC5zY20gYi9ndWl4L3NjcmlwdHMvaW1wb3J0LnNjbQppbmRleCBmODRhOTY0YTUzLi5m YTFmOTZkZjljIDEwMDY0NAotLS0gYS9ndWl4L3NjcmlwdHMvaW1wb3J0LnNjbQorKysgYi9n dWl4L3NjcmlwdHMvaW1wb3J0LnNjbQpAQCAtNDcsNyArNDcsNyBAQCAoZGVmaW5lICVzdGFu ZGFyZC1pbXBvcnQtb3B0aW9ucyAnKCkpCiAKIChkZWZpbmUgaW1wb3J0ZXJzICcoImdudSIg InB5cGkiICJjcGFuIiAiaGFja2FnZSIgInN0YWNrYWdlIiAiZWdnIiAiZWxwYSIKICAgICAg ICAgICAgICAgICAgICAgImdlbSIgImdvIiAiY3JhbiIgImNyYXRlIiAidGV4bGl2ZSIgImpz b24iICJvcGFtIgotICAgICAgICAgICAgICAgICAgICAibWluZXRlc3QiICJlbG0iICJoZXhw bSIpKQorICAgICAgICAgICAgICAgICAgICAibWluZXRlc3QiICJlbG0iICJoZXhwbSIgImNv bXBvc2VyIikpCiAKIChkZWZpbmUgKHJlc29sdmUtaW1wb3J0ZXIgbmFtZSkKICAgKGxldCAo KG1vZHVsZSAocmVzb2x2ZS1pbnRlcmZhY2UKZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0cy9p bXBvcnQvY29tcG9zZXIuc2NtIGIvZ3VpeC9zY3JpcHRzL2ltcG9ydC9jb21wb3Nlci5zY20K bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDEyYmFlNjMxOAotLS0g L2Rldi9udWxsCisrKyBiL2d1aXgvc2NyaXB0cy9pbXBvcnQvY29tcG9zZXIuc2NtCkBAIC0w LDAgKzEsMTA3IEBACis7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5h Z2VtZW50IGZvciBHTlUKKzs7OyBDb3B5cmlnaHQgwqkgMjAxNSBEYXZpZCBUaG9tcHNvbiA8 ZGF2ZXRAZ251Lm9yZz4KKzs7OyBDb3B5cmlnaHQgwqkgMjAxOCBPbGVnIFB5a2hhbG92IDxn by53aWd1c3RAZ21haWwuY29tPgorOzs7Cis7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05V IEd1aXguCis7OzsKKzs7OyBHTlUgR3VpeCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cis7OzsgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7OyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvciAoYXQKKzs7OyB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7 OzsKKzs7OyBHTlUgR3VpeCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLCBidXQKKzs7OyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorOzs7IEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7OzsKKzs7OyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorOzs7IGFsb25nIHdpdGggR05VIEd1aXguICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyhkZWZpbmUtbW9kdWxlIChndWl4IHNjcmlwdHMg aW1wb3J0IGNvbXBvc2VyKQorICAjOnVzZS1tb2R1bGUgKGd1aXggdWkpCisgICM6dXNlLW1v ZHVsZSAoZ3VpeCB1dGlscykKKyAgIzp1c2UtbW9kdWxlIChndWl4IHNjcmlwdHMpCisgICM6 dXNlLW1vZHVsZSAoZ3VpeCBpbXBvcnQgY29tcG9zZXIpCisgICM6dXNlLW1vZHVsZSAoZ3Vp eCBzY3JpcHRzIGltcG9ydCkKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKKyAgIzp1 c2UtbW9kdWxlIChzcmZpIHNyZmktMTEpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTM3 KQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS00MSkKKyAgIzp1c2UtbW9kdWxlIChpY2Ut OSBtYXRjaCkKKyAgIzp1c2UtbW9kdWxlIChpY2UtOSBmb3JtYXQpCisgICM6ZXhwb3J0IChn dWl4LWltcG9ydC1jb21wb3NlcikpCisKKwwKKzs7OworOzs7IENvbW1hbmQtbGluZSBvcHRp b25zLgorOzs7CisKKyhkZWZpbmUgJWRlZmF1bHQtb3B0aW9ucworICAnKCkpCisKKyhkZWZp bmUgKHNob3ctaGVscCkKKyAgKGRpc3BsYXkgKEdfICJVc2FnZTogZ3VpeCBpbXBvcnQgY29t cG9zZXIgUEFDS0FHRS1OQU1FCitJbXBvcnQgYW5kIGNvbnZlcnQgdGhlIENvbXBvc2VyIHBh Y2thZ2UgZm9yIFBBQ0tBR0UtTkFNRS5cbiIpKQorICAoZGlzcGxheSAoR18gIgorICAtaCwg LS1oZWxwICAgICAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0IikpCisgIChk aXNwbGF5IChHXyAiCisgIC1WLCAtLXZlcnNpb24gICAgICAgICAgZGlzcGxheSB2ZXJzaW9u IGluZm9ybWF0aW9uIGFuZCBleGl0IikpCisgIChkaXNwbGF5IChHXyAiCisgIC1yLCAtLXJl Y3Vyc2l2ZSAgICAgICAgZ2VuZXJhdGUgcGFja2FnZSBleHByZXNzaW9ucyBmb3IgYWxsIENv bXBvc2VyIHBhY2thZ2VzXAorIHRoYXQgYXJlIG5vdCB5ZXQgaW4gR3VpeCIpKQorICAobmV3 bGluZSkKKyAgKHNob3ctYnVnLXJlcG9ydC1pbmZvcm1hdGlvbikpCisKKyhkZWZpbmUgJW9w dGlvbnMKKyAgOzsgU3BlY2lmaWNhdGlvbiBvZiB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMu CisgIChjb25zKiAob3B0aW9uICcoI1xoICJoZWxwIikgI2YgI2YKKyAgICAgICAgICAgICAg ICAgKGxhbWJkYSBhcmdzCisgICAgICAgICAgICAgICAgICAgKHNob3ctaGVscCkKKyAgICAg ICAgICAgICAgICAgICAoZXhpdCAwKSkpCisgICAgICAgICAob3B0aW9uICcoI1xWICJ2ZXJz aW9uIikgI2YgI2YKKyAgICAgICAgICAgICAgICAgKGxhbWJkYSBhcmdzCisgICAgICAgICAg ICAgICAgICAgKHNob3ctdmVyc2lvbi1hbmQtZXhpdCAiZ3VpeCBpbXBvcnQgY29tcG9zZXIi KSkpCisgICAgICAgICAob3B0aW9uICcoI1xyICJyZWN1cnNpdmUiKSAjZiAjZgorICAgICAg ICAgICAgICAgICAobGFtYmRhIChvcHQgbmFtZSBhcmcgcmVzdWx0KQorICAgICAgICAgICAg ICAgICAgIChhbGlzdC1jb25zICdyZWN1cnNpdmUgI3QgcmVzdWx0KSkpCisgICAgICAgICAl c3RhbmRhcmQtaW1wb3J0LW9wdGlvbnMpKQorCisMCis7OzsKKzs7OyBFbnRyeSBwb2ludC4K Kzs7OworCisoZGVmaW5lIChndWl4LWltcG9ydC1jb21wb3NlciAuIGFyZ3MpCisgIChkZWZp bmUgKHBhcnNlLW9wdGlvbnMpCisgICAgOzsgUmV0dXJuIHRoZSBhbGlzdCBvZiBvcHRpb24g dmFsdWVzLgorICAgIChhcmdzLWZvbGQqIGFyZ3MgJW9wdGlvbnMKKyAgICAgICAgICAgICAg ICAobGFtYmRhIChvcHQgbmFtZSBhcmcgcmVzdWx0KQorICAgICAgICAgICAgICAgICAgKGxl YXZlIChHXyAifkE6IHVucmVjb2duaXplZCBvcHRpb25+JSIpIG5hbWUpKQorICAgICAgICAg ICAgICAgIChsYW1iZGEgKGFyZyByZXN1bHQpCisgICAgICAgICAgICAgICAgICAoYWxpc3Qt Y29ucyAnYXJndW1lbnQgYXJnIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgJWRlZmF1bHQt b3B0aW9ucykpCisKKyAgKGxldCogKChvcHRzIChwYXJzZS1vcHRpb25zKSkKKyAgICAgICAg IChhcmdzIChmaWx0ZXItbWFwIChtYXRjaC1sYW1iZGEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoKCdhcmd1bWVudCAuIHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXyAjZikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAocmV2ZXJzZSBvcHRzKSkpKQorICAgIChtYXRjaCBh cmdzCisgICAgICAoKHBhY2thZ2UtbmFtZSkKKyAgICAgICAoaWYgKGFzc29jLXJlZiBvcHRz ICdyZWN1cnNpdmUpCisgICAgICAgICAgIChtYXAgKG1hdGNoLWxhbWJkYQorICAgICAgICAg ICAgICAgICAgKChhbmQgKCdwYWNrYWdlICgnbmFtZSBuYW1lKSAuIHJlc3QpIHBrZykKKyAg ICAgICAgICAgICAgICAgICBgKGRlZmluZS1wdWJsaWMgLChzdHJpbmctPnN5bWJvbCBuYW1l KQorICAgICAgICAgICAgICAgICAgICAgICxwa2cpKQorICAgICAgICAgICAgICAgICAgKF8g I2YpKQorICAgICAgICAgICAgICAgIChjb21wb3Nlci1yZWN1cnNpdmUtaW1wb3J0IHBhY2th Z2UtbmFtZSkpCisgICAgICAgICAgIChsZXQgKChzZXhwIChjb21wb3Nlci0+Z3VpeC1wYWNr YWdlIHBhY2thZ2UtbmFtZSkpKQorICAgICAgICAgICAgICh1bmxlc3Mgc2V4cAorICAgICAg ICAgICAgICAgKGxlYXZlIChHXyAiZmFpbGVkIHRvIGRvd25sb2FkIG1ldGEtZGF0YSBmb3Ig cGFja2FnZSAnfmEnfiUiKQorICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UtbmFtZSkp CisgICAgICAgICAgICAgc2V4cCkpKQorICAgICAgKCgpCisgICAgICAgKGxlYXZlIChHXyAi dG9vIGZldyBhcmd1bWVudHN+JSIpKSkKKyAgICAgICgobWFueSAuLi4pCisgICAgICAgKGxl YXZlIChHXyAidG9vIG1hbnkgYXJndW1lbnRzfiUiKSkpKSkpCmRpZmYgLS1naXQgYS90ZXN0 cy9jb21wb3Nlci5zY20gYi90ZXN0cy9jb21wb3Nlci5zY20KbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uY2VmYWY5ZjQzNAotLS0gL2Rldi9udWxsCisrKyBiL3Rl c3RzL2NvbXBvc2VyLnNjbQpAQCAtMCwwICsxLDkyIEBACis7OzsgR05VIEd1aXggLS0tIEZ1 bmN0aW9uYWwgcGFja2FnZSBtYW5hZ2VtZW50IGZvciBHTlUKKzs7OyBDb3B5cmlnaHQgwqkg MjAyMCBKdWxpZW4gTGVwaWxsZXIgPGp1bGllbkBsZXBpbGxlci5ldT4KKzs7OworOzs7IFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7OzsgR05VIEd1aXggaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAor Ozs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Cis7OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Cis7OzsgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorOzs7Cis7OzsgR05VIEd1aXggaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Cis7OzsgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzs7 IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKzs7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorOzs7Cis7OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7OyBhbG9uZyB3aXRoIEdOVSBHdWl4LiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisoZGVmaW5l LW1vZHVsZSAodGVzdC1jb21wb3NlcikKKyAgIzp1c2UtbW9kdWxlIChndWl4IGltcG9ydCBj b21wb3NlcikKKyAgIzp1c2UtbW9kdWxlIChndWl4IGJhc2UzMikKKyAgIzp1c2UtbW9kdWxl IChnY3J5cHQgaGFzaCkKKyAgIzp1c2UtbW9kdWxlIChndWl4IHRlc3RzIGh0dHApCisgICM6 dXNlLW1vZHVsZSAoZ3VpeCBncmFmdHMpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTY0 KQorICAjOnVzZS1tb2R1bGUgKHdlYiBjbGllbnQpCisgICM6dXNlLW1vZHVsZSAoaWNlLTkg bWF0Y2gpKQorCis7OyBHbG9iYWxseSBkaXNhYmxlIGdyYWZ0cyBiZWNhdXNlIHRoZXkgY2Fu IHRyaWdnZXIgZWFybHkgYnVpbGRzLgorKCVncmFmdD8gI2YpCisKKyhkZWZpbmUgdGVzdC1q c29uCisgICJ7CisgIFwicGFja2FnZXNcIjogeworICAgIFwiZm9vL2JhclwiOiB7CisgICAg ICBcIjAuMVwiOiB7CisgICAgICAgIFwibmFtZVwiOiBcImZvby9iYXJcIiwKKyAgICAgICAg XCJkZXNjcmlwdGlvblwiOiBcImRlc2NyaXB0aW9uXCIsCisgICAgICAgIFwia2V5d29yZHNc IjogW1widGVzdGluZ1wiXSwKKyAgICAgICAgXCJob21lcGFnZVwiOiBcImh0dHA6Ly9leGFt cGxlLmNvbVwiLAorICAgICAgICBcInZlcnNpb25cIjogXCIwLjFcIiwKKyAgICAgICAgXCJs aWNlbnNlXCI6IFtcIkJTRC0zLUNsYXVzZVwiXSwKKyAgICAgICAgXCJzb3VyY2VcIjogewor ICAgICAgICAgIFwidHlwZVwiOiBcInVybFwiLAorICAgICAgICAgIFwidXJsXCI6IFwiaHR0 cDovL2V4YW1wbGUuY29tL0Jhci0wLjEudGFyLmd6XCIKKyAgICAgICAgfSwKKyAgICAgICAg XCJyZXF1aXJlXCI6IHt9LAorICAgICAgICBcInJlcXVpcmUtZGV2XCI6IHtcInBocHVuaXQv cGhwdW5pdFwiOiBcIjEuMC4wXCJ9CisgICAgICB9CisgICAgfQorICB9Cit9IikKKworKGRl ZmluZSB0ZXN0LXNvdXJjZQorICAiZm9vYmFyIikKKworOzsgQXZvaWQgY29sbGlzaW9ucyB3 aXRoIG90aGVyIHRlc3RzLgorKCVodHRwLXNlcnZlci1wb3J0IDEwNDUwKQorCisodGVzdC1i ZWdpbiAiY29tcG9zZXIiKQorCisodGVzdC1hc3NlcnQgImNvbXBvc2VyLT5ndWl4LXBhY2th Z2UiCisgIDs7IFJlcGxhY2UgbmV0d29yayByZXNvdXJjZXMgd2l0aCBzYW1wbGUgZGF0YS4K KyAgKHdpdGgtaHR0cC1zZXJ2ZXIgYCgoMjAwICx0ZXN0LWpzb24pCisgICAgICAgICAgICAg ICAgICAgICAgKDIwMCAsdGVzdC1zb3VyY2UpKQorICAgIChwYXJhbWV0ZXJpemUgKCglY29t cG9zZXItYmFzZS11cmwgKCVsb2NhbC11cmwpKQorICAgICAgICAgICAgICAgICAgIChjdXJy ZW50LWh0dHAtcHJveHkgKCVsb2NhbC11cmwpKSkKKyAgICAgIChtYXRjaCAoY29tcG9zZXIt Pmd1aXgtcGFja2FnZSAiZm9vL2JhciIpCisgICAgICAgICgoJ3BhY2thZ2UKKyAgICAgICAg ICAgKCduYW1lICJwaHAtZm9vLWJhciIpCisgICAgICAgICAgICgndmVyc2lvbiAiMC4xIikK KyAgICAgICAgICAgKCdzb3VyY2UgKCdvcmlnaW4KKyAgICAgICAgICAgICAgICAgICAgICAo J21ldGhvZCAndXJsLWZldGNoKQorICAgICAgICAgICAgICAgICAgICAgICgndXJpICJodHRw Oi8vZXhhbXBsZS5jb20vQmFyLTAuMS50YXIuZ3oiKQorICAgICAgICAgICAgICAgICAgICAg ICgnc2hhMjU2CisgICAgICAgICAgICAgICAgICAgICAgICgnYmFzZTMyCisgICAgICAgICAg ICAgICAgICAgICAgICAoPyBzdHJpbmc/IGhhc2gpKSkpKQorICAgICAgICAgICAoJ2J1aWxk LXN5c3RlbSAnY29tcG9zZXItYnVpbGQtc3lzdGVtKQorICAgICAgICAgICAoJ25hdGl2ZS1p bnB1dHMKKyAgICAgICAgICAgICgncXVhc2lxdW90ZQorICAgICAgICAgICAgICgoInBocC1w aHB1bml0LXBocHVuaXQiICgndW5xdW90ZSAncGhwLXBocHVuaXQtcGhwdW5pdCkpKSkpCisg ICAgICAgICAgICgnc3lub3BzaXMgIiIpCisgICAgICAgICAgICgnZGVzY3JpcHRpb24gImRl c2NyaXB0aW9uIikKKyAgICAgICAgICAgKCdob21lLXBhZ2UgImh0dHA6Ly9leGFtcGxlLmNv bSIpCisgICAgICAgICAgICgnbGljZW5zZSAnbGljZW5zZTpic2QtMykpCisgICAgICAgICAo c3RyaW5nPT8gKGJ5dGV2ZWN0b3ItPm5peC1iYXNlMzItc3RyaW5nCisgICAgICAgICAgICAg ICAgICAgIChjYWxsLXdpdGgtaW5wdXQtc3RyaW5nIHRlc3Qtc291cmNlIHBvcnQtc2hhMjU2 KSkKKyAgICAgICAgICAgICAgICAgICBoYXNoKSkKKyAgICAgICAgKHgKKyAgICAgICAgIChw ayAnZmFpbCB4ICNmKSkpKSkpCisKKyh0ZXN0LWVuZCAiY29tcG9zZXIiKQoKYmFzZS1jb21t aXQ6IGE5ZjRiNmVjZDAwMTEyYWU0ZmIwNGRmYmUwZjljYzg2YjA0MmRiYzUKLS0gCjIuMzku MgoK --------------8QyPfQMLrvK9wysJ9iPduH1e Content-Type: text/x-patch; charset=UTF-8; name="0002-gnu-Add-composer-classloader.patch" Content-Disposition: attachment; filename="0002-gnu-Add-composer-classloader.patch" Content-Transfer-Encoding: base64 RnJvbSBkODgxNGNjODAzZjI2YzYzYzFjMWFjNTVjNDUxMzIzMjRiMTQ0NmE0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlkOiA8ZDg4MTRjYzgwM2YyNmM2M2MxYzFhYzU1 YzQ1MTMyMzI0YjE0NDZhNC4xNjgyMDM0MzQxLmdpdC5hZGFtLmZhaXpAZGlzcm9vdC5vcmc+ CkluLVJlcGx5LVRvOiA8MGQ0NGY4ZjFlNjZjNDE0MWQwYzk3YWEyYjYzMzA5MWEwYmI3NTNl NS4xNjgyMDM0MzQwLmdpdC5hZGFtLmZhaXpAZGlzcm9vdC5vcmc+ClJlZmVyZW5jZXM6IDww ZDQ0ZjhmMWU2NmM0MTQxZDBjOTdhYTJiNjMzMDkxYTBiYjc1M2U1LjE2ODIwMzQzNDAuZ2l0 LmFkYW0uZmFpekBkaXNyb290Lm9yZz4KRnJvbTogSnVsaWVuIExlcGlsbGVyIDxqdWxpZW5A bGVwaWxsZXIuZXU+CkRhdGU6IFRodSwgMjAgQXByIDIwMjMgMDc6MjI6MzcgKzA4MDAKU3Vi amVjdDogW1BBVENIIDIvM10gZ251OiBBZGQgY29tcG9zZXItY2xhc3Nsb2FkZXIuCgoqIGdu dS9wYWNrYWdlcy9waHAteHl6LnNjbTogTmV3IGZpbGUuCiogZ251L2xvY2FsLm1rIChHTlVf U1lTVEVNX01PRFVMRVMpOiBBZGQgaXQuCi0tLQogZ251L2xvY2FsLm1rICAgICAgICAgICAg IHwgIDEgKwogZ251L3BhY2thZ2VzL3BocC14eXouc2NtIHwgNjEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ251L3BhY2thZ2VzL3BocC14eXouc2NtCgpk aWZmIC0tZ2l0IGEvZ251L2xvY2FsLm1rIGIvZ251L2xvY2FsLm1rCmluZGV4IDdmNmVhMDhi OTMuLjAyNWZkNWUwOWIgMTAwNjQ0Ci0tLSBhL2dudS9sb2NhbC5taworKysgYi9nbnUvbG9j YWwubWsKQEAgLTQ5NSw2ICs0OTUsNyBAQCBHTlVfU1lTVEVNX01PRFVMRVMgPQkJCQlcCiAg ICVEJS9wYWNrYWdlcy9waG90by5zY20JCQlcCiAgICVEJS9wYWNrYWdlcy9waGFicmljYXRv ci5zY20gCQkJXAogICAlRCUvcGFja2FnZXMvcGhwLnNjbQkJCQlcCisgICVEJS9wYWNrYWdl cy9waHAteHl6LnNjbQkJCVwKICAgJUQlL3BhY2thZ2VzL3BpZXQuc2NtCQkJXAogICAlRCUv cGFja2FnZXMvcGlrY2hyLnNjbQkJCVwKICAgJUQlL3BhY2thZ2VzL3BrZy1jb25maWcuc2Nt CQkJXApkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BocC14eXouc2NtIGIvZ251L3BhY2th Z2VzL3BocC14eXouc2NtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmRhYjY2MGY4NGYKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUvcGFja2FnZXMvcGhwLXh5ei5z Y20KQEAgLTAsMCArMSw2MSBAQAorOzs7IEdOVSBHdWl4IC0tLSBGdW5jdGlvbmFsIHBhY2th Z2UgbWFuYWdlbWVudCBmb3IgR05VCis7OzsgQ29weXJpZ2h0IMKpIDIwMTkgSnVsaWVuIExl cGlsbGVyIDxqdWxpZW5AbGVwaWxsZXIuZXU+Cis7OzsKKzs7OyBUaGlzIGZpbGUgaXMgcGFy dCBvZiBHTlUgR3VpeC4KKzs7OworOzs7IEdOVSBHdWl4IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKzs7OyB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorOzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yIChhdAorOzs7IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKzs7OworOzs7IEdOVSBHdWl4IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorOzs7IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7OyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7Ozsg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7OworOzs7 IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCis7OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworKGRlZmluZS1tb2R1bGUgKGdudSBw YWNrYWdlcyBwaHAteHl6KQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcykKKyAgIzp1 c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgcGhwKQorICAjOnVzZS1tb2R1bGUgKGd1aXggcGFj a2FnZXMpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBkb3dubG9hZCkKKyAgIzp1c2UtbW9kdWxl IChndWl4IGdpdC1kb3dubG9hZCkKKyAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3Rl bSBjb21wb3NlcikKKyAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSBnbnUpCisg ICM6dXNlLW1vZHVsZSAoZ3VpeCB1dGlscykKKyAgIzp1c2UtbW9kdWxlICgoZ3VpeCBsaWNl bnNlcykgIzpwcmVmaXggbGljZW5zZTopKQorCisoZGVmaW5lLXB1YmxpYyBjb21wb3Nlci1j bGFzc2xvYWRlcgorICAocGFja2FnZQorICAgIChuYW1lICJjb21wb3Nlci1jbGFzc2xvYWRl ciIpCisgICAgKHZlcnNpb24gIjEuOS4wIikKKyAgICAoc291cmNlIChvcmlnaW4KKyAgICAg ICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAgICh1cmkgKGdpdC1y ZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNv bS9jb21wb3Nlci9jb21wb3Nlci5naXQiKQorICAgICAgICAgICAgICAgICAgICAgKGNvbW1p dCB2ZXJzaW9uKSkpCisgICAgICAgICAgICAgIChmaWxlLW5hbWUgKGdpdC1maWxlLW5hbWUg bmFtZSB2ZXJzaW9uKSkKKyAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAg KGJhc2UzMgorICAgICAgICAgICAgICAgICIwMTI3em1tZzN5eDg0bGpuZ2ZzODZxN2tqaHl5 cHlia2Y0ZDFpaGZyZm56Z3luenhmeGRmIikpKSkKKyAgICAoYnVpbGQtc3lzdGVtIGdudS1i dWlsZC1zeXN0ZW0pCisgICAgKGFyZ3VtZW50cworICAgICBgKCM6cGhhc2VzCisgICAgICAg KG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcworICAgICAgICAgKGRlbGV0ZSAnY29u ZmlndXJlKQorICAgICAgICAgKGRlbGV0ZSAnYnVpbGQpCisgICAgICAgICAoZGVsZXRlICdj aGVjaykKKyAgICAgICAgIChyZXBsYWNlICdpbnN0YWxsCisgICAgICAgICAgIChsYW1iZGEq ICgjOmtleSBvdXRwdXRzICM6YWxsb3ctb3RoZXIta2V5cykKKyAgICAgICAgICAgICAobGV0 KiAoKG91dCAoYXNzb2MtcmVmIG91dHB1dHMgIm91dCIpKQorICAgICAgICAgICAgICAgICAg ICAoaW5zdGFsbCAoc3RyaW5nLWFwcGVuZCBvdXQgIi9zaGFyZS93ZWIvY29tcG9zZXIvQ2xh c3NMb2FkZXIucGhwIikpKQorICAgICAgICAgICAgICAgKG1rZGlyLXAgKGRpcm5hbWUgaW5z dGFsbCkpCisgICAgICAgICAgICAgICAoY29weS1maWxlICJzcmMvQ29tcG9zZXIvQXV0b2xv YWQvQ2xhc3NMb2FkZXIucGhwIiBpbnN0YWxsKSkpKSkpKQorICAgIChob21lLXBhZ2UgImh0 dHBzOi8vZ2V0Y29tcG9zZXIub3JnIikKKyAgICAoc3lub3BzaXMgIlBIUCBjbGFzcyBsb2Fk ZXIgZXh0cmFjdGVkIGZyb20gdGhlIGNvbXBvc2VyIHBhY2thZ2UiKQorICAgIChkZXNjcmlw dGlvbiAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBjbGFzcyBsb2FkZXIgY2xhc3MgdXNl ZCBieSBDb21wb3NlciB0bworYnVpbGQgaXRzIGF1dG9sb2FkaW5nIGZlYXR1cmUuICBUaGlz IHBhY2thZ2UgaXMgdXNlZCBieSB0aGUgY29tcG9zZXItYnVpbGQtc3lzdGVtCit0byBidWls ZCBpdHMgb3duIHN0b3JlLWF3YXJlIGF1dG9sb2FkaW5nIGZlYXR1cmUuIikKKyAgICAobGlj ZW5zZSBsaWNlbnNlOmV4cGF0KSkpCi0tIAoyLjM5LjIKCg== --------------8QyPfQMLrvK9wysJ9iPduH1e Content-Type: text/x-patch; charset=UTF-8; name="0003-guix-Add-composer-build-system.patch" Content-Disposition: attachment; filename="0003-guix-Add-composer-build-system.patch" Content-Transfer-Encoding: base64 RnJvbSA1NzU5NjdlNWEzNGIzOTc0OTVlOGUxOGZlZThiYTMyMmNiNjIzMjFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlkOiA8NTc1OTY3ZTVhMzRiMzk3NDk1ZThlMThm ZWU4YmEzMjJjYjYyMzIxYS4xNjgyMDM0MzQxLmdpdC5hZGFtLmZhaXpAZGlzcm9vdC5vcmc+ CkluLVJlcGx5LVRvOiA8MGQ0NGY4ZjFlNjZjNDE0MWQwYzk3YWEyYjYzMzA5MWEwYmI3NTNl NS4xNjgyMDM0MzQwLmdpdC5hZGFtLmZhaXpAZGlzcm9vdC5vcmc+ClJlZmVyZW5jZXM6IDww ZDQ0ZjhmMWU2NmM0MTQxZDBjOTdhYTJiNjMzMDkxYTBiYjc1M2U1LjE2ODIwMzQzNDAuZ2l0 LmFkYW0uZmFpekBkaXNyb290Lm9yZz4KRnJvbTogSnVsaWVuIExlcGlsbGVyIDxqdWxpZW5A bGVwaWxsZXIuZXU+CkRhdGU6IFRodSwgMjAgQXByIDIwMjMgMDc6MzI6NDggKzA4MDAKU3Vi amVjdDogW1BBVENIIDMvM10gZ3VpeDogQWRkIGNvbXBvc2VyLWJ1aWxkLXN5c3RlbS4KCiog Z3VpeC9idWlsZC1zeXN0ZW0vY29tcG9zZXIuc2NtOiBOZXcgZmlsZS4KKiBndWl4L2J1aWxk L2NvbXBvc2VyLWJ1aWxkLXN5c3RlbS5zY206IE5ldyBmaWxlLgoqIGdudS9wYWNrYWdlcy9h dXgtZmlsZXMvZmluZGNsYXNzLnBocDogTmV3IGZpbGUuCiogTWFrZWZpbGUuYW06IEFkZCB0 aGVtLgoqIGRvYy9ndWl4LnRleGkgKEJ1aWxkIFN5c3RlbXMpOiBEb2N1bWVudCBpdC4KLS0t CiBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIGRvYy9n dWl4LnRleGkgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArKwogZ251L3BhY2thZ2Vz L2F1eC1maWxlcy9maW5kY2xhc3MucGhwIHwgMTI1ICsrKysrKysrKysrKysrCiBndWl4L2J1 aWxkLXN5c3RlbS9jb21wb3Nlci5zY20gICAgICAgfCAxNjIgKysrKysrKysrKysrKysrKysr CiBndWl4L2J1aWxkL2NvbXBvc2VyLWJ1aWxkLXN5c3RlbS5zY20gfCAyMzkgKysrKysrKysr KysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDU0NSBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ251L3BhY2thZ2VzL2F1eC1m aWxlcy9maW5kY2xhc3MucGhwCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3VpeC9idWlsZC1zeXN0 ZW0vY29tcG9zZXIuc2NtCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3VpeC9idWlsZC9jb21wb3Nl ci1idWlsZC1zeXN0ZW0uc2NtCgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmls ZS5hbQppbmRleCBmOWRlNGE5NjdhLi5kYmYyMzM2MDI1IDEwMDY0NAotLS0gYS9NYWtlZmls ZS5hbQorKysgYi9NYWtlZmlsZS5hbQpAQCAtMTQ3LDYgKzE0Nyw3IEBAIE1PRFVMRVMgPQkJ CQkJXAogICBndWl4L2J1aWxkLXN5c3RlbS9jaGlja2VuLnNjbQkJCVwKICAgZ3VpeC9idWls ZC1zeXN0ZW0vY2xvanVyZS5zY20JCQlcCiAgIGd1aXgvYnVpbGQtc3lzdGVtL2NtYWtlLnNj bQkJCVwKKyAgZ3VpeC9idWlsZC1zeXN0ZW0vY29tcG9zZXIuc2NtCQlcCiAgIGd1aXgvYnVp bGQtc3lzdGVtL2R1Yi5zY20JCQlcCiAgIGd1aXgvYnVpbGQtc3lzdGVtL2R1bmUuc2NtCQkJ XAogICBndWl4L2J1aWxkLXN5c3RlbS9lbG0uc2NtCQkJXApAQCAtMjAyLDYgKzIwMyw3IEBA IE1PRFVMRVMgPQkJCQkJXAogICBndWl4L2J1aWxkL2NhcmdvLXV0aWxzLnNjbQkJCVwKICAg Z3VpeC9idWlsZC9jaGlja2VuLWJ1aWxkLXN5c3RlbS5zY20JCVwKICAgZ3VpeC9idWlsZC9j bWFrZS1idWlsZC1zeXN0ZW0uc2NtCQlcCisgIGd1aXgvYnVpbGQvY29tcG9zZXItYnVpbGQt c3lzdGVtLnNjbQkJXAogICBndWl4L2J1aWxkL2R1Yi1idWlsZC1zeXN0ZW0uc2NtCQlcCiAg IGd1aXgvYnVpbGQvZHVuZS1idWlsZC1zeXN0ZW0uc2NtCQlcCiAgIGd1aXgvYnVpbGQvZWxt LWJ1aWxkLXN5c3RlbS5zY20JCVwKQEAgLTQzOCw3ICs0NDAsOSBAQCBBVVhfRklMRVMgPQkJ CQkJCVwKICAgZ251L3BhY2thZ2VzL2F1eC1maWxlcy9weXRob24vc2FuaXR5LWNoZWNrLW5l eHQucHkJXAogICBnbnUvcGFja2FnZXMvYXV4LWZpbGVzL3B5dGhvbi9zaXRlY3VzdG9taXpl LnB5CVwKICAgZ251L3BhY2thZ2VzL2F1eC1maWxlcy9yZW5weS9yZW5weS5pbglcCi0gIGdu dS9wYWNrYWdlcy9hdXgtZmlsZXMvcnVuLWluLW5hbWVzcGFjZS5jCisgIGdudS9wYWNrYWdl cy9hdXgtZmlsZXMvcnVuLWluLW5hbWVzcGFjZS5jCVwKKyAgZ251L3BhY2thZ2VzL2F1eC1m aWxlcy9maW5kY2xhc3MucGhwCisKIAogIyBUZW1wbGF0ZXMsIGV4YW1wbGVzLgogRVhBTVBM RVMgPQkJCQkJXApkaWZmIC0tZ2l0IGEvZG9jL2d1aXgudGV4aSBiL2RvYy9ndWl4LnRleGkK aW5kZXggOWM5ZTU2NzEyMC4uMTNmNGY3NDAxYyAxMDA2NDQKLS0tIGEvZG9jL2d1aXgudGV4 aQorKysgYi9kb2MvZ3VpeC50ZXhpCkBAIC05MTczLDYgKzkxNzMsMjAgQEAgQnVpbGQgU3lz dGVtcwogQGNvZGV7LU8yIC1nfSwgYXMgaXMgdGhlIGNhc2UgZm9yIEF1dG9jb25mLWJhc2Vk IHBhY2thZ2VzIGJ5IGRlZmF1bHQuCiBAZW5kIGRlZnZhcgogCitAZGVmdmFyIHtTY2hlbWUg VmFyaWFibGV9IGNvbXBvc2VyLWJ1aWxkLXN5c3RlbQorVGhpcyB2YXJpYWJsZSBpcyBleHBv cnRlZCBieSBAY29kZXsoZ3VpeCBidWlsZC1zeXN0ZW0gY29tcG9zZXIpfS4gIEl0CitpbXBs ZW1lbnRzIHRoZSBidWlsZCBwcm9jZWR1cmUgZm9yIHBhY2thZ2VzIHVzaW5nCitAdXJse2h0 dHBzOi8vZ2V0Y29tcG9zZXIub3JnLywgQ29tcG9zZXJ9LCB0aGUgUEhQIHBhY2thZ2UgbWFu YWdlci4KKworSXQgYXV0b21hdGljYWxseSBhZGRzIHRoZSBAY29kZXtwaHB9IHBhY2thZ2Ug dG8gdGhlIHNldCBvZiBpbnB1dHMuICBXaGljaAorcGFja2FnZSBpcyB1c2VkIGNhbiBiZSBz cGVjaWZpZWQgd2l0aCB0aGUgQGNvZGV7IzpwaHB9IHBhcmFtZXRlci4KKworVGhlIEBjb2Rl eyM6dGVzdC10YXJnZXR9IHBhcmFtZXRlciBpcyB1c2VkIHRvIGNvbnRyb2wgd2hpY2ggc2Ny aXB0IGlzIHJ1bgorZm9yIHRoZSB0ZXN0cy4gIEJ5IGRlZmF1bHQsIHRoZSBAY29kZXt0ZXN0 fSBzY3JpcHQgaXMgcnVuIGlmIGl0IGV4aXN0cy4gIElmCit0aGUgc2NyaXB0IGRvZXMgbm90 IGV4aXN0LCB0aGUgYnVpbGQgc3lzdGVtIHdpbGwgcnVuIEBjb2Rle3BocHVuaXR9IGZyb20g dGhlCitzb3VyY2UgZGlyZWN0b3J5LCBhc3N1bWluZyB0aGVyZSBpcyBhIEBmaWxle3BocHVu aXQueG1sfSBmaWxlLgorQGVuZCBkZWZ2YXIKKwogQGRlZnZhciBkdW5lLWJ1aWxkLXN5c3Rl bQogVGhpcyB2YXJpYWJsZSBpcyBleHBvcnRlZCBieSBAY29kZXsoZ3VpeCBidWlsZC1zeXN0 ZW0gZHVuZSl9LiAgSXQKIHN1cHBvcnRzIGJ1aWxkcyBvZiBwYWNrYWdlcyB1c2luZyBAdXJl ZntodHRwczovL2R1bmUuYnVpbGQvLCBEdW5lfSwgYSBidWlsZApkaWZmIC0tZ2l0IGEvZ251 L3BhY2thZ2VzL2F1eC1maWxlcy9maW5kY2xhc3MucGhwIGIvZ251L3BhY2thZ2VzL2F1eC1m aWxlcy9maW5kY2xhc3MucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLmQwYjI1MGM4ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUvcGFja2FnZXMvYXV4LWZp bGVzL2ZpbmRjbGFzcy5waHAKQEAgLTAsMCArMSwxMjUgQEAKKzw/cGhwCisvKioKKyAqIFRo ZSBjb250ZW50IG9mIHRoaXMgZmlsZSBpcyBjb3BpZWQgZnJvbSBjb21wb3NlcidzIHNyYy9D b21wb3Nlci9BdXRvbG9hZC9DbGFzc01hcEdlbmVyYXRvci5waHAKKyAqIHRoZSBmaW5kQ2xh c3NlcyBtZXRob2Qgd2FzIGV4dHJhY3RlZCwgdG8gcHJldmVudCB1c2luZyBhbnkgZGVwZW5k ZW5jeS4KKyAqCisgKiBDb21wb3NlciAoYW5kIHRodXMgdGhpcyBmaWxlKSBpcyBkaXN0cmli dXRlZCB1bmRlciB0aGUgZXhwYXQgbGljZW5zZSwgYW5kCisgKiBDbGFzc01hcEdlbmVyYXRv ci5waHAgYWxzbyBjb250YWlucyB0aGlzIG5vdGljZToKKyAqCisgKiAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIENvbXBvc2VyLgorICoKKyAqICAgKGMpIE5pbHMgQWRlcm1hbm4gPG5hZGVy bWFuQG5hZGVybWFuLmRlPgorICogICAgICAgSm9yZGkgQm9nZ2lhbm8gPGouYm9nZ2lhbm9A c2VsZC5iZT4KKyAqCisgKiAgIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2Ug aW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCisgKiAgIGZpbGUgdGhhdCB3 YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgorICoKKyAqICAgVGhpcyBm aWxlIGlzIGNvcGllZCBmcm9tIHRoZSBTeW1mb255IHBhY2thZ2UuCisgKgorICogICAoYykg RmFiaWVuIFBvdGVuY2llciA8ZmFiaWVuQHN5bWZvbnkuY29tPgorICogCisgKiBUbyB0aGUg ZXh0ZW50IHRvIHdpY2ggaXQgbWFrZXMgc2Vuc2UsIGFzIHRoZSBhdXRob3Igb2YgdGhlIGV4 dHJhY3Q6CisgKiBDb3B5cmlnaHQgwqkgMjAyMCBKdWxpZW4gTGVwaWxsZXIgPGp1bGllbkBs ZXBpbGxlci5ldT4KKyAqLworCisvKioKKyAqIEV4dHJhY3QgdGhlIGNsYXNzZXMgaW4gdGhl IGdpdmVuIGZpbGUKKyAqCisgKiBAcGFyYW0gIHN0cmluZyAgICAgICAgICAgICRwYXRoIFRo ZSBmaWxlIHRvIGNoZWNrCisgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uCisgKiBAcmV0 dXJuIGFycmF5ICAgICAgICAgICAgIFRoZSBmb3VuZCBjbGFzc2VzCisgKi8KK2Z1bmN0aW9u IGZpbmRDbGFzc2VzKCRwYXRoKQoreworICAgICRleHRyYVR5cGVzID0gUEhQX1ZFUlNJT05f SUQgPCA1MDQwMCA/ICcnIDogJ3x0cmFpdCc7CisgICAgaWYgKGRlZmluZWQoJ0hIVk1fVkVS U0lPTicpICYmIHZlcnNpb25fY29tcGFyZShISFZNX1ZFUlNJT04sICczLjMnLCAnPj0nKSkg eworICAgICAgICAkZXh0cmFUeXBlcyAuPSAnfGVudW0nOworICAgIH0KKyAgICAvLyBVc2Ug QCBoZXJlIGluc3RlYWQgb2YgU2lsZW5jZXIgdG8gYWN0aXZlbHkgc3VwcHJlc3MgJ3VuaGVs cGZ1bCcgb3V0cHV0CisgICAgLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2NvbXBvc2Vy L2NvbXBvc2VyL3B1bGwvNDg4NgorICAgICRjb250ZW50cyA9IEBwaHBfc3RyaXBfd2hpdGVz cGFjZSgkcGF0aCk7CisgICAgaWYgKCEkY29udGVudHMpIHsKKyAgICAgICAgaWYgKCFmaWxl X2V4aXN0cygkcGF0aCkpIHsKKyAgICAgICAgICAgICRtZXNzYWdlID0gJ0ZpbGUgYXQgIiVz IiBkb2VzIG5vdCBleGlzdCwgY2hlY2sgeW91ciBjbGFzc21hcCBkZWZpbml0aW9ucyc7Cisg ICAgICAgIH0gZWxzZWlmICghaXNfcmVhZGFibGUoJHBhdGgpKSB7CisgICAgICAgICAgICAk bWVzc2FnZSA9ICdGaWxlIGF0ICIlcyIgaXMgbm90IHJlYWRhYmxlLCBjaGVjayBpdHMgcGVy bWlzc2lvbnMnOworICAgICAgICB9IGVsc2VpZiAoJycgPT09IHRyaW0oZmlsZV9nZXRfY29u dGVudHMoJHBhdGgpKSkgeworICAgICAgICAgICAgLy8gVGhlIGlucHV0IGZpbGUgd2FzIHJl YWxseSBlbXB0eSBhbmQgdGh1cyBjb250YWlucyBubyBjbGFzc2VzCisgICAgICAgICAgICBy ZXR1cm4gYXJyYXkoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRtZXNzYWdl ID0gJ0ZpbGUgYXQgIiVzIiBjb3VsZCBub3QgYmUgcGFyc2VkIGFzIFBIUCwgaXQgbWF5IGJl IGJpbmFyeSBvciBjb3JydXB0ZWQnOworICAgICAgICB9CisgICAgICAgICRlcnJvciA9IGVy cm9yX2dldF9sYXN0KCk7CisgICAgICAgIGlmIChpc3NldCgkZXJyb3JbJ21lc3NhZ2UnXSkp IHsKKyAgICAgICAgICAgICRtZXNzYWdlIC49IFBIUF9FT0wgLiAnVGhlIGZvbGxvd2luZyBt ZXNzYWdlIG1heSBiZSBoZWxwZnVsOicgLiBQSFBfRU9MIC4gJGVycm9yWydtZXNzYWdlJ107 CisgICAgICAgIH0KKyAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKHNwcmlu dGYoJG1lc3NhZ2UsICRwYXRoKSk7CisgICAgfQorICAgIC8vIHJldHVybiBlYXJseSBpZiB0 aGVyZSBpcyBubyBjaGFuY2Ugb2YgbWF0Y2hpbmcgYW55dGhpbmcgaW4gdGhpcyBmaWxlCisg ICAgaWYgKCFwcmVnX21hdGNoKCd7XGIoPzpjbGFzc3xpbnRlcmZhY2UnLiRleHRyYVR5cGVz LicpXHN9aScsICRjb250ZW50cykpIHsKKyAgICAgICAgcmV0dXJuIGFycmF5KCk7CisgICAg fQorICAgIC8vIHN0cmlwIGhlcmVkb2NzL25vd2RvY3MKKyAgICAkY29udGVudHMgPSBwcmVn X3JlcGxhY2UoJ3s8PDxbIFx0XSooW1wnIl0/KShcdyspXFwxKD86XHJcbnxcbnxccikoPzou Kj8pKD86XHJcbnxcbnxccikoPzpccyopXFwyKD89XHMrfFs7LC4pXSl9cycsICdudWxsJywg JGNvbnRlbnRzKTsKKyAgICAvLyBzdHJpcCBzdHJpbmdzCisgICAgJGNvbnRlbnRzID0gcHJl Z19yZXBsYWNlKCd7IlteIlxcXFxdKisoXFxcXC5bXiJcXFxcXSorKSorInxcJ1teXCdcXFxc XSorKFxcXFwuW15cJ1xcXFxdKispKitcJ31zJywgJ251bGwnLCAkY29udGVudHMpOworICAg IC8vIHN0cmlwIGxlYWRpbmcgbm9uLXBocCBjb2RlIGlmIG5lZWRlZAorICAgIGlmIChzdWJz dHIoJGNvbnRlbnRzLCAwLCAyKSAhPT0gJzw/JykgeworICAgICAgICAkY29udGVudHMgPSBw cmVnX3JlcGxhY2UoJ3teLis/PFw/fXMnLCAnPD8nLCAkY29udGVudHMsIDEsICRyZXBsYWNl bWVudHMpOworICAgICAgICBpZiAoJHJlcGxhY2VtZW50cyA9PT0gMCkgeworICAgICAgICAg ICAgcmV0dXJuIGFycmF5KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gc3RyaXAgbm9u LXBocCBibG9ja3MgaW4gdGhlIGZpbGUKKyAgICAkY29udGVudHMgPSBwcmVnX3JlcGxhY2Uo J3tcPz4oPzpbXjxdKyt8PCg/IVw/KSkqKzxcP31zJywgJz8+PD8nLCAkY29udGVudHMpOwor ICAgIC8vIHN0cmlwIHRyYWlsaW5nIG5vbi1waHAgY29kZSBpZiBuZWVkZWQKKyAgICAkcG9z ID0gc3RycnBvcygkY29udGVudHMsICc/PicpOworICAgIGlmIChmYWxzZSAhPT0gJHBvcyAm JiBmYWxzZSA9PT0gc3RycG9zKHN1YnN0cigkY29udGVudHMsICRwb3MpLCAnPD8nKSkgewor ICAgICAgICAkY29udGVudHMgPSBzdWJzdHIoJGNvbnRlbnRzLCAwLCAkcG9zKTsKKyAgICB9 CisgICAgLy8gc3RyaXAgY29tbWVudHMgaWYgc2hvcnQgb3BlbiB0YWdzIGFyZSBpbiB0aGUg ZmlsZQorICAgIGlmIChwcmVnX21hdGNoKCd7KDxcPykoPyEocGhwfGhoKSl9aScsICRjb250 ZW50cykpIHsKKyAgICAgICAgJGNvbnRlbnRzID0gcHJlZ19yZXBsYWNlKCd7Ly8uKiB8IC9c Kig/OlteKl0rK3xcKig/IS8pKSpcKi99eCcsICcnLCAkY29udGVudHMpOworICAgIH0KKyAg ICBwcmVnX21hdGNoX2FsbCgneworICAgICAgICAoPzoKKyAgICAgICAgICAgICBcYig/PCFb XCQ6Pl0pKD9QPHR5cGU+Y2xhc3N8aW50ZXJmYWNlJy4kZXh0cmFUeXBlcy4nKSBccysrICg/ UDxuYW1lPlthLXpBLVpfXHg3Zi1ceGZmOl1bYS16QS1aMC05X1x4N2YtXHhmZjpcLV0qKykK KyAgICAgICAgICAgfCBcYig/PCFbXCQ6Pl0pKD9QPG5zPm5hbWVzcGFjZSkgKD9QPG5zbmFt ZT5ccysrW2EtekEtWl9ceDdmLVx4ZmZdW2EtekEtWjAtOV9ceDdmLVx4ZmZdKisoPzpccyor XFxcXFxzKitbYS16QS1aX1x4N2YtXHhmZl1bYS16QS1aMC05X1x4N2YtXHhmZl0qKykqKyk/ IFxzKisgW1x7O10KKyAgICAgICAgKQorICAgIH1peCcsICRjb250ZW50cywgJG1hdGNoZXMp OworICAgICRjbGFzc2VzID0gYXJyYXkoKTsKKyAgICAkbmFtZXNwYWNlID0gJyc7CisgICAg Zm9yICgkaSA9IDAsICRsZW4gPSBjb3VudCgkbWF0Y2hlc1sndHlwZSddKTsgJGkgPCAkbGVu OyAkaSsrKSB7CisgICAgICAgIGlmICghZW1wdHkoJG1hdGNoZXNbJ25zJ11bJGldKSkgewor ICAgICAgICAgICAgJG5hbWVzcGFjZSA9IHN0cl9yZXBsYWNlKGFycmF5KCcgJywgIlx0Iiwg IlxyIiwgIlxuIiksICcnLCAkbWF0Y2hlc1snbnNuYW1lJ11bJGldKSAuICdcXCc7CisgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkbmFtZSA9ICRtYXRjaGVzWyduYW1lJ11bJGld OworICAgICAgICAgICAgLy8gc2tpcCBhbm9uIGNsYXNzZXMgZXh0ZW5kaW5nL2ltcGxlbWVu dGluZworICAgICAgICAgICAgaWYgKCRuYW1lID09PSAnZXh0ZW5kcycgfHwgJG5hbWUgPT09 ICdpbXBsZW1lbnRzJykgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgaWYgKCRuYW1lWzBdID09PSAnOicpIHsKKyAgICAgICAgICAg ICAgICAvLyBUaGlzIGlzIGFuIFhIUCBjbGFzcywgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vi b29rL3hocAorICAgICAgICAgICAgICAgICRuYW1lID0gJ3hocCcuc3Vic3RyKHN0cl9yZXBs YWNlKGFycmF5KCctJywgJzonKSwgYXJyYXkoJ18nLCAnX18nKSwgJG5hbWUpLCAxKTsKKyAg ICAgICAgICAgIH0gZWxzZWlmICgkbWF0Y2hlc1sndHlwZSddWyRpXSA9PT0gJ2VudW0nKSB7 CisgICAgICAgICAgICAgICAgLy8gSW4gSGFjaywgc29tZXRoaW5nIGxpa2U6CisgICAgICAg ICAgICAgICAgLy8gICBlbnVtIEZvbzogaW50IHsgSEVSUCA9ICcxMjMnOyB9CisgICAgICAg ICAgICAgICAgLy8gVGhlIHJlZ2V4IGFib3ZlIGNhcHR1cmVzIHRoZSBjb2xvbiwgd2hpY2gg aXNuJ3QgcGFydCBvZgorICAgICAgICAgICAgICAgIC8vIHRoZSBjbGFzcyBuYW1lLgorICAg ICAgICAgICAgICAgICRuYW1lID0gcnRyaW0oJG5hbWUsICc6Jyk7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICAkY2xhc3Nlc1tdID0gbHRyaW0oJG5hbWVzcGFjZSAuICRuYW1lLCAn XFwnKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gJGNsYXNzZXM7Cit9CisKKyRv cHRpb25zID0gZ2V0b3B0KCdpOmY6JywgW10pOworJGZpbGUgPSAkb3B0aW9uc1siZiJdOwor JGlucHV0ID0gJG9wdGlvbnNbImkiXTsKKworJGNsYXNzZXMgPSBmaW5kQ2xhc3NlcygkZmls ZSk7Citmb3JlYWNoKCRjbGFzc2VzIGFzICRjbGFzcykgeworICBlY2hvICckY2xhc3NtYXBb XCcnLiRjbGFzcy4nXCddID0gXCcnLiRpbnB1dC4nLycuJGZpbGUuJ1wnOyc7CisgIGVjaG8g IlxuIjsKK30KZGlmZiAtLWdpdCBhL2d1aXgvYnVpbGQtc3lzdGVtL2NvbXBvc2VyLnNjbSBi L2d1aXgvYnVpbGQtc3lzdGVtL2NvbXBvc2VyLnNjbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi44YmY5OWZmOWM1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3VpeC9i dWlsZC1zeXN0ZW0vY29tcG9zZXIuc2NtCkBAIC0wLDAgKzEsMTYyIEBACis7OzsgR05VIEd1 aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5hZ2VtZW50IGZvciBHTlUKKzs7OyBDb3B5 cmlnaHQgwqkgMjAxOSBKdWxpZW4gTGVwaWxsZXIgPGp1bGllbkBsZXBpbGxlci5ldT4KKzs7 OworOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7OzsgR05VIEd1 aXggaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdAorOzs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Cis7OzsgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorOzs7Cis7OzsgR05VIEd1aXggaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Cis7Ozsg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorOzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKzs7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorOzs7Cis7OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7OyBhbG9uZyB3aXRoIEdO VSBHdWl4LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor KGRlZmluZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIGNvbXBvc2VyKQorICAjOnVzZS1t b2R1bGUgKGd1aXggc3RvcmUpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCB1dGlscykKKyAgIzp1 c2UtbW9kdWxlIChndWl4IGRlcml2YXRpb25zKQorICAjOnVzZS1tb2R1bGUgKGd1aXggc2Vh cmNoLXBhdGhzKQorICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtKQorICAjOnVz ZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIGdudSkKKyAgIzp1c2UtbW9kdWxlIChndWl4 IGdleHApCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBwYWNrYWdlcykKKyAgIzp1c2UtbW9kdWxl IChnbnUgcGFja2FnZXMpCisgICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gpCisgICM6dXNl LW1vZHVsZSAoc3JmaSBzcmZpLTEpCisgICM6ZXhwb3J0ICglY29tcG9zZXItYnVpbGQtc3lz dGVtLW1vZHVsZXMKKyAgICAgICAgICAgIGxvd2VyCisgICAgICAgICAgICBjb21wb3Nlci1i dWlsZAorICAgICAgICAgICAgY29tcG9zZXItYnVpbGQtc3lzdGVtKSkKKworOzsgQ29tbWVu dGFyeToKKzs7Cis7OyBTdGFuZGFyZCBidWlsZCBwcm9jZWR1cmUgZm9yIFBIUCBwYWNrYWdl cyB1c2luZyBDb21wb3Nlci4gVGhpcyBpcyBpbXBsZW1lbnRlZAorOzsgYXMgYW4gZXh0ZW5z aW9uIG9mIGBnbnUtYnVpbGQtc3lzdGVtJy4KKzs7Cis7OyBDb2RlOgorCisoZGVmaW5lIChk ZWZhdWx0LXBocCkKKyAgIlJldHVybiB0aGUgZGVmYXVsdCBQSFAgcGFja2FnZS4iCisKKyAg OzsgRG8gbm90IHVzZSBgQCcgdG8gYXZvaWQgaW50cm9kdWNpbmcgY2lyY3VsYXIgZGVwZW5k ZW5jaWVzLgorICAobGV0ICgobW9kdWxlIChyZXNvbHZlLWludGVyZmFjZSAnKGdudSBwYWNr YWdlcyBwaHApKSkpCisgICAgKG1vZHVsZS1yZWYgbW9kdWxlICdwaHApKSkKKworKGRlZmlu ZSAoZGVmYXVsdC1maW5kY2xhc3MpCisgICJSZXR1cm4gdGhlIGRlZmF1bHQgZmluZGNsYXNz IHNjcmlwdC4iCisgIChzZWFyY2gtYXV4aWxpYXJ5LWZpbGUgImZpbmRjbGFzcy5waHAiKSkK KworKGRlZmluZSAoZGVmYXVsdC1jb21wb3Nlci1jbGFzc2xvYWRlcikKKyAgIlJldHVybiB0 aGUgZGVmYXVsdCBjb21wb3Nlci1jbGFzc2xvYWRlciBwYWNrYWdlLiIKKworICA7OyBEbyBu b3QgdXNlIGBAJyB0byBhdm9pZCBpbnRyb2R1Y2luZyBjaXJjdWxhciBkZXBlbmRlbmNpZXMu CisgIChsZXQgKChtb2R1bGUgKHJlc29sdmUtaW50ZXJmYWNlICcoZ251IHBhY2thZ2VzIHBo cC14eXopKSkpCisgICAgKG1vZHVsZS1yZWYgbW9kdWxlICdjb21wb3Nlci1jbGFzc2xvYWRl cikpKQorCisoZGVmaW5lICVjb21wb3Nlci1idWlsZC1zeXN0ZW0tbW9kdWxlcworICA7OyBC dWlsZC1zaWRlIG1vZHVsZXMgaW1wb3J0ZWQgYnkgZGVmYXVsdC4KKyAgYCgoZ3VpeCBidWls ZCBjb21wb3Nlci1idWlsZC1zeXN0ZW0pCisgICAgKGd1aXggYnVpbGQgdW5pb24pCisgICAg KGpzb24pCisgICAgKGpzb24gYnVpbGRlcikKKyAgICAoanNvbiBwYXJzZXIpCisgICAgKGpz b24gcmVjb3JkKQorICAgICxAJWdudS1idWlsZC1zeXN0ZW0tbW9kdWxlcykpCisKKyhkZWZp bmUqIChsb3dlciBuYW1lCisgICAgICAgICAgICAgICAgIzprZXkgc291cmNlIGlucHV0cyBu YXRpdmUtaW5wdXRzIG91dHB1dHMgc3lzdGVtIHRhcmdldAorICAgICAgICAgICAgICAgIChw aHAgKGRlZmF1bHQtcGhwKSkKKyAgICAgICAgICAgICAgICAoY29tcG9zZXItY2xhc3Nsb2Fk ZXIgKGRlZmF1bHQtY29tcG9zZXItY2xhc3Nsb2FkZXIpKQorICAgICAgICAgICAgICAgIChm aW5kY2xhc3MgKGRlZmF1bHQtZmluZGNsYXNzKSkKKyAgICAgICAgICAgICAgICAjOmFsbG93 LW90aGVyLWtleXMKKyAgICAgICAgICAgICAgICAjOnJlc3QgYXJndW1lbnRzKQorICAiUmV0 dXJuIGEgYmFnIGZvciBOQU1FLiIKKyAgKGRlZmluZSBwcml2YXRlLWtleXdvcmRzCisgICAg JygjOnRhcmdldCAjOnBocCAjOmNvbXBvc2VyLWNsYXNzbG9hZGVyICM6ZmluZGNsYXNzICM6 aW5wdXRzICM6bmF0aXZlLWlucHV0cykpCisKKyAgKGFuZCAobm90IHRhcmdldCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgO1hYWDogbm8gY3Jvc3MtY29tcGlsYXRpb24KKyAg ICAgICAoYmFnCisgICAgICAgICAobmFtZSBuYW1lKQorICAgICAgICAgKHN5c3RlbSBzeXN0 ZW0pCisgICAgICAgICAoaG9zdC1pbnB1dHMgYCgsQChpZiBzb3VyY2UKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGAoKCJzb3VyY2UiICxzb3VyY2UpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJygpKQorICAgICAgICAgICAgICAgICAgICAgICAgLEBpbnB1 dHMKKworICAgICAgICAgICAgICAgICAgICAgICAgOzsgS2VlcCB0aGUgc3RhbmRhcmQgaW5w dXRzIG9mICdnbnUtYnVpbGQtc3lzdGVtJy4KKyAgICAgICAgICAgICAgICAgICAgICAgICxA KHN0YW5kYXJkLXBhY2thZ2VzKSkpCisgICAgICAgICAoYnVpbGQtaW5wdXRzIGAoKCJwaHAi ICxwaHApCisgICAgICAgICAgICAgICAgICAgICAgICAgKCJmaW5kY2xhc3MucGhwIiAsZmlu ZGNsYXNzKQorCQkJICgiY29tcG9zZXItY2xhc3Nsb2FkZXIiICxjb21wb3Nlci1jbGFzc2xv YWRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAsQG5hdGl2ZS1pbnB1dHMpKQorICAg ICAgICAgKG91dHB1dHMgb3V0cHV0cykKKyAgICAgICAgIChidWlsZCBjb21wb3Nlci1idWls ZCkKKyAgICAgICAgIChhcmd1bWVudHMgKHN0cmlwLWtleXdvcmQtYXJndW1lbnRzIHByaXZh dGUta2V5d29yZHMgYXJndW1lbnRzKSkpKSkKKworKGRlZmluZSogKGNvbXBvc2VyLWJ1aWxk IG5hbWUgaW5wdXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgIzprZXkKKyAgICAgICAg ICAgICAgICAgICAgICAgICBndWlsZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAg ICAob3V0cHV0cyAnKCJvdXQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZmln dXJlLWZsYWdzICcnKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlYXJjaC1wYXRo cyAnKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKG91dC1vZi1zb3VyY2U/ICN0KQor ICAgICAgICAgICAgICAgICAgICAgICAgIChjb21wb3Nlci1maWxlICJjb21wb3Nlci5qc29u IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdHM/ICN0KQorICAgICAgICAgICAg ICAgICAgICAgICAgICh0ZXN0LXRhcmdldCAidGVzdCIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgKGluc3RhbGwtdGFyZ2V0ICJpbnN0YWxsIikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAodmFsaWRhdGUtcnVucGF0aD8gI3QpCisgICAgICAgICAgICAgICAgICAgICAgICAg KHBhdGNoLXNoZWJhbmdzPyAjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaXAt YmluYXJpZXM/ICN0KQorICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpcC1mbGFncyAj ficoIi0tc3RyaXAtZGVidWciKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaXAt ZGlyZWN0b3JpZXMgI34nKCJsaWIiICJsaWI2NCIgImxpYmV4ZWMiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiaW4iICJzYmluIikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKHBoYXNlcyAnKEAgKGd1aXggYnVpbGQgY29tcG9zZXIt YnVpbGQtc3lzdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVz dGFuZGFyZC1waGFzZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0gKCVj dXJyZW50LXN5c3RlbSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGltcG9ydGVkLW1v ZHVsZXMgJWNvbXBvc2VyLWJ1aWxkLXN5c3RlbS1tb2R1bGVzKQorICAgICAgICAgICAgICAg ICAgICAgICAgIChtb2R1bGVzICcoKGd1aXggYnVpbGQgY29tcG9zZXItYnVpbGQtc3lzdGVt KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGd1aXggYnVpbGQgdXRp bHMpKSkpCisgICJCdWlsZCBTT1VSQ0UgdXNpbmcgUEhQLCBhbmQgd2l0aCBJTlBVVFMuIFRo aXMgYXNzdW1lcyB0aGF0IFNPVVJDRSBwcm92aWRlcworYSAnY29tcG9zZXIuanNvbicgZmls ZSBhcyBpdHMgYnVpbGQgc3lzdGVtLiIKKyAgKGRlZmluZSBidWlsZGVyCisgICAgKHdpdGgt aW1wb3J0ZWQtbW9kdWxlcyBpbXBvcnRlZC1tb2R1bGVzCisgICAgICAjfihiZWdpbgorICAg ICAgICAgICh1c2UtbW9kdWxlcyAjJEAoc2V4cC0+Z2V4cCBtb2R1bGVzKSkKKworICAgICAg ICAgICMkKHdpdGgtYnVpbGQtdmFyaWFibGVzIGlucHV0cyBvdXRwdXRzCisgICAgICAgICAg ICAgICN+KGNvbXBvc2VyLWJ1aWxkCisgICAgICAgICAgICAgICAgICM6c291cmNlICMkc291 cmNlCisgICAgICAgICAgICAgICAgICM6c3lzdGVtICMkc3lzdGVtCisgICAgICAgICAgICAg ICAgICM6b3V0cHV0cyAlb3V0cHV0cworICAgICAgICAgICAgICAgICAjOmlucHV0cyAlYnVp bGQtaW5wdXRzCisgICAgICAgICAgICAgICAgICM6c2VhcmNoLXBhdGhzICcjJChtYXAgc2Vh cmNoLXBhdGgtc3BlY2lmaWNhdGlvbi0+c2V4cAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlYXJjaC1wYXRocykKKyAgICAgICAgICAgICAgICAgIzpwaGFz ZXMgIyRwaGFzZXMKKyAgICAgICAgICAgICAgICAgIzpvdXQtb2Ytc291cmNlPyAjJG91dC1v Zi1zb3VyY2U/CisgICAgICAgICAgICAgICAgICM6Y29tcG9zZXItZmlsZSAjJGNvbXBvc2Vy LWZpbGUKKyAgICAgICAgICAgICAgICAgIzp0ZXN0cz8gIyR0ZXN0cz8KKyAgICAgICAgICAg ICAgICAgIzp0ZXN0LXRhcmdldCAjJHRlc3QtdGFyZ2V0CisgICAgICAgICAgICAgICAgICM6 aW5zdGFsbC10YXJnZXQgIyRpbnN0YWxsLXRhcmdldAorICAgICAgICAgICAgICAgICAjOnZh bGlkYXRlLXJ1bnBhdGg/ICMkdmFsaWRhdGUtcnVucGF0aD8KKyAgICAgICAgICAgICAgICAg IzpwYXRjaC1zaGViYW5ncz8gIyRwYXRjaC1zaGViYW5ncz8KKyAgICAgICAgICAgICAgICAg IzpzdHJpcC1iaW5hcmllcz8gIyRzdHJpcC1iaW5hcmllcz8KKyAgICAgICAgICAgICAgICAg IzpzdHJpcC1mbGFncyAjJHN0cmlwLWZsYWdzCisgICAgICAgICAgICAgICAgICM6c3RyaXAt ZGlyZWN0b3JpZXMgIyRzdHJpcC1kaXJlY3RvcmllcykpKSkpCisKKyAgKGdleHAtPmRlcml2 YXRpb24gbmFtZSBidWlsZGVyCisgICAgICAgICAgICAgICAgICAgICM6c3lzdGVtIHN5c3Rl bQorICAgICAgICAgICAgICAgICAgICAjOnRhcmdldCAjZgorICAgICAgICAgICAgICAgICAg ICAjOmdyYWZ0PyAjZgorICAgICAgICAgICAgICAgICAgICAjOmd1aWxlLWZvci1idWlsZCBn dWlsZSkpCisKKyhkZWZpbmUgY29tcG9zZXItYnVpbGQtc3lzdGVtCisgIChidWlsZC1zeXN0 ZW0KKyAgICAobmFtZSAnY29tcG9zZXIpCisgICAgKGRlc2NyaXB0aW9uICJUaGUgc3RhbmRh cmQgQ29tcG9zZXIgYnVpbGQgc3lzdGVtIikKKyAgICAobG93ZXIgbG93ZXIpKSkKKworOzs7 IGNvbXBvc2VyLnNjbSBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL2d1aXgvYnVpbGQvY29tcG9z ZXItYnVpbGQtc3lzdGVtLnNjbSBiL2d1aXgvYnVpbGQvY29tcG9zZXItYnVpbGQtc3lzdGVt LnNjbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43ZGYyYjdjNDAw Ci0tLSAvZGV2L251bGwKKysrIGIvZ3VpeC9idWlsZC9jb21wb3Nlci1idWlsZC1zeXN0ZW0u c2NtCkBAIC0wLDAgKzEsMjM5IEBACis7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFj a2FnZSBtYW5hZ2VtZW50IGZvciBHTlUKKzs7OyBDb3B5cmlnaHQgwqkgMjAxOSBKdWxpZW4g TGVwaWxsZXIgPGp1bGllbkBsZXBpbGxlci5ldT4KKzs7OworOzs7IFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7OzsgR05VIEd1aXggaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorOzs7IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Cis7OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Cis7OzsgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorOzs7Cis7OzsgR05VIEd1aXggaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Cis7OzsgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzs7IE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7 OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7Cis7 OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKzs7OyBhbG9uZyB3aXRoIEdOVSBHdWl4LiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisoZGVmaW5lLW1vZHVsZSAoZ3Vp eCBidWlsZCBjb21wb3Nlci1idWlsZC1zeXN0ZW0pCisgICM6dXNlLW1vZHVsZSAoKGd1aXgg YnVpbGQgZ251LWJ1aWxkLXN5c3RlbSkgIzpwcmVmaXggZ251OikKKyAgIzp1c2UtbW9kdWxl IChndWl4IGJ1aWxkIHV0aWxzKQorICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAj OnVzZS1tb2R1bGUgKGpzb24pCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTI2KQorICAj OmV4cG9ydCAoJXN0YW5kYXJkLXBoYXNlcworICAgICAgICAgICAgY29tcG9zZXItYnVpbGQp KQorCis7OyBDb21tZW50YXJ5OgorOzsKKzs7IEJ1aWxkZXItc2lkZSBjb2RlIG9mIHRoZSBz dGFuZGFyZCBjb21wb3NlciBidWlsZCBwcm9jZWR1cmUuCis7OworOzsgQ29kZToKKworKGRl ZmluZSAoanNvbi0+cmVxdWlyZSBkaWN0KQorICAoaWYgZGljdAorICAgICAgKGxldCBsb29w ICgocmVzdWx0ICcoKSkgKHJlcXVpcmUgZGljdCkpCisgICAgICAgIChtYXRjaCByZXF1aXJl CisgICAgICAgICAgKCgpIHJlc3VsdCkKKyAgICAgICAgICAoKCgoPyAoY3V0IHN0cmluZy1j b250YWlucyA8PiAiLyIpIG5hbWUpIC4gXykKKyAgICAgICAgICAgICByZXF1aXJlIC4uLikK KyAgICAgICAgICAgKGxvb3AgKGNvbnMgbmFtZSByZXN1bHQpIHJlcXVpcmUpKQorICAgICAg ICAgICgoXyByZXF1aXJlIC4uLikgKGxvb3AgcmVzdWx0IHJlcXVpcmUpKSkpCisgICAgICAn KCkpKQorCisoZGVmaW5lLWpzb24tbWFwcGluZyA8Y29tcG9zZXItYXV0b2xvYWQ+IG1ha2Ut Y29tcG9zZXItYXV0b2xvYWQgY29tcG9zZXItYXV0b2xvYWQ/CisgIGpzb24tPmNvbXBvc2Vy LWF1dG9sb2FkCisgIChwc3ItNCBjb21wb3Nlci1hdXRvbG9hZC1wc3ItNCAicHNyLTQiCisg ICAgICAgICAgICAgICAgKG1hdGNoLWxhbWJkYQorICAgICAgICAgICAgICAgICAgKCNmICco KSkKKyAgICAgICAgICAgICAgICAgIChwc3ItNCBwc3ItNCkpKQorICAoY2xhc3NtYXAgY29t cG9zZXItYXV0b2xvYWQtY2xhc3NtYXAgImNsYXNzbWFwIgorICAgICAgICAgICAgKG1hdGNo LWxhbWJkYQorICAgICAgICAgICAgICAoI2YgJygpKQorICAgICAgICAgICAgICAoIyhsc3Qg Li4uKSBsc3QpKSkpCisKKyhkZWZpbmUtanNvbi1tYXBwaW5nIDxjb21wb3Nlci1wYWNrYWdl PiBtYWtlLWNvbXBvc2VyLXBhY2thZ2UgY29tcG9zZXItcGFja2FnZT8KKyAganNvbi0+Y29t cG9zZXItcGFja2FnZQorICAobmFtZSAgICAgICAgIGNvbXBvc2VyLXBhY2thZ2UtbmFtZSkK KyAgKGF1dG9sb2FkICAgICBjb21wb3Nlci1wYWNrYWdlLWF1dG9sb2FkICJhdXRvbG9hZCIg anNvbi0+Y29tcG9zZXItYXV0b2xvYWQpCisgIChhdXRvbG9hZC1kZXYgY29tcG9zZXItcGFj a2FnZS1hdXRvbG9hZC1kZXYgImF1dG9sb2FkLWRldiIganNvbi0+Y29tcG9zZXItYXV0b2xv YWQpCisgIChyZXF1aXJlICAgICAgY29tcG9zZXItcGFja2FnZS1yZXF1aXJlICJyZXF1aXJl IiBqc29uLT5yZXF1aXJlKQorICAoZGV2LXJlcXVpcmUgIGNvbXBvc2VyLXBhY2thZ2UtZGV2 LXJlcXVpcmUgInJlcXVpcmUtZGV2IiBqc29uLT5yZXF1aXJlKQorICAoc2NyaXB0cyAgICAg IGNvbXBvc2VyLXBhY2thZ2Utc2NyaXB0cyAic2NyaXB0cyIKKyAgICAgICAgICAgICAgICAo bWF0Y2gtbGFtYmRhCisgICAgICAgICAgICAgICAgICAoI2YgJygpKQorICAgICAgICAgICAg ICAgICAgKChzY3JpcHRzIC4uLikgc2NyaXB0cykpKQorICAoYmluYXJpZXMgICAgIGNvbXBv c2VyLXBhY2thZ2UtYmluYXJpZXMgImJpbiIKKyAgICAgICAgICAgICAgICAobWF0Y2gtbGFt YmRhCisgICAgICAgICAgICAgICAgICAoI2YgJygpKQorICAgICAgICAgICAgICAgICAgKCMo bHN0IC4uLikgbHN0KSkpKQorCisoZGVmaW5lKiAocmVhZC1wYWNrYWdlLWRhdGEgIzprZXkg KGZpbGVuYW1lICJjb21wb3Nlci5qc29uIikpCisgIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBm aWxlbmFtZQorICAgIChsYW1iZGEgKHBvcnQpCisgICAgICAoanNvbi0+Y29tcG9zZXItcGFj a2FnZSAoanNvbi0+c2NtIHBvcnQpKSkpKQorCisoZGVmaW5lKiAoY2hlY2sgIzprZXkgY29t cG9zZXItZmlsZSBpbnB1dHMgb3V0cHV0cyB0ZXN0cz8gdGVzdC10YXJnZXQgIzphbGxvdy1v dGhlci1rZXlzKQorICAiVGVzdCB0aGUgZ2l2ZW4gcGFja2FnZS4iCisgICh3aGVuIHRlc3Rz PworICAgIChta2Rpci1wICJ2ZW5kb3IiKQorICAgIChjcmVhdGUtYXV0b2xvYWQgKHN0cmlu Zy1hcHBlbmQgKGdldGN3ZCkgIi92ZW5kb3IiKSBjb21wb3Nlci1maWxlCisgICAgICAgICAg ICAgICAgICAgICAoYXBwZW5kIGlucHV0cyBvdXRwdXRzKSAjOmRldi1kZXBlbmRlbmNpZXM/ ICN0KQorICAgIChsZXQqICgocGFja2FnZS1kYXRhIChyZWFkLXBhY2thZ2UtZGF0YSAjOmZp bGVuYW1lIGNvbXBvc2VyLWZpbGUpKQorICAgICAgICAgICAoc2NyaXB0cyAoY29tcG9zZXIt cGFja2FnZS1zY3JpcHRzIHBhY2thZ2UtZGF0YSkpCisgICAgICAgICAgICh0ZXN0LXNjcmlw dCAoYXNzb2MtcmVmIHNjcmlwdHMgdGVzdC10YXJnZXQpKQorICAgICAgICAgICAoZGVwZW5k ZW5jaWVzIChjb21wb3Nlci1wYWNrYWdlLXJlcXVpcmUgcGFja2FnZS1kYXRhKSkKKyAgICAg ICAgICAgKGRlcGVuZGVuY2llcy1kZXYgKGNvbXBvc2VyLXBhY2thZ2UtZGV2LXJlcXVpcmUg cGFja2FnZS1kYXRhKSkKKyAgICAgICAgICAgKG5hbWUgKGNvbXBvc2VyLXBhY2thZ2UtbmFt ZSBwYWNrYWdlLWRhdGEpKSkKKyAgICAgIChmb3ItZWFjaAorICAgICAgICAobWF0Y2gtbGFt YmRhCisgICAgICAgICAgKChfIC4gaW5wdXQpCisgICAgICAgICAgIChsZXQgKChiaW4gKGZp bmQtcGhwLWJpbiBpbnB1dCkpKQorICAgICAgICAgICAgICh3aGVuIGJpbgorICAgICAgICAg ICAgICAgKGNvcHktcmVjdXJzaXZlbHkgYmluICJ2ZW5kb3IvYmluIikpKSkpCisgICAgICAg IGlucHV0cykKKyAgICAgIChtYXRjaCB0ZXN0LXNjcmlwdAorICAgICAgICAoKD8gc3RyaW5n PyBjb21tYW5kKQorICAgICAgICAgKHVubGVzcyAoemVybz8gKHN5c3RlbSBjb21tYW5kKSkK KyAgICAgICAgICAgKHRocm93ICdmYWlsZWQtY29tbWFuZCBjb21tYW5kKSkpCisgICAgICAg ICgoJ0AgKD8gc3RyaW5nPyBjb21tYW5kKSAuLi4pCisgICAgICAgICAoZm9yLWVhY2gKKyAg ICAgICAgICAgKGxhbWJkYSAoYykKKyAgICAgICAgICAgICAodW5sZXNzICh6ZXJvPyAoc3lz dGVtIGMpKQorICAgICAgICAgICAgICAgKHRocm93ICdmYWlsZWQtY29tbWFuZCBjKSkpCisg ICAgICAgICAgIGNvbW1hbmQpKQorICAgICAgICAoI2YgKGludm9rZSAidmVuZG9yL2Jpbi9w aHB1bml0IikpKSkpKQorCisoZGVmaW5lIChmaW5kLXBocC1iaW4gaW5wdXQpCisgIChsZXQq ICgod2ViLWRpciAoc3RyaW5nLWFwcGVuZCBpbnB1dCAiL3NoYXJlL3dlYiIpKQorICAgICAg ICAgKHZlbmRvcnMgKGlmIChmaWxlLWV4aXN0cz8gd2ViLWRpcikKKyAgICAgICAgICAgICAg ICAgICAgICAoZmluZC1maWxlcyB3ZWItZGlyICJedmVuZG9yJCIgIzpkaXJlY3Rvcmllcz8g I3QpCisgICAgICAgICAgICAgICAgICAgICAgI2YpKSkKKyAgICAobWF0Y2ggdmVuZG9ycwor ICAgICAgKCh2ZW5kb3IpCisgICAgICAgKGxldCAoKGJpbiAoc3RyaW5nLWFwcGVuZCB2ZW5k b3IgIi9iaW4iKSkpCisgICAgICAgICAoYW5kIChmaWxlLWV4aXN0cz8gYmluKSBiaW4pKSkK KyAgICAgIChfICNmKSkpKQorCisoZGVmaW5lIChmaW5kLXBocC1kZXAgaW5wdXRzIGRlcGVu ZGVuY3kpCisgIChsZXQgbG9vcCAoKGlucHV0cyBpbnB1dHMpKQorICAgIChtYXRjaCBpbnB1 dHMKKyAgICAgICgoKSAodGhyb3cgJ3Vuc2F0aXNmaWVkLWRlcGVuZGVuY3kgIlVuc2F0aXNm aWVkIGRlcGVuZGVuY3k6IHJlcXVpcmVkICIKKyAgICAgICAgICAgICAgICAgZGVwZW5kZW5j eSkpCisgICAgICAoKChfIC4gaW5wdXQpIGlucHV0cyAuLi4pCisgICAgICAgKGxldCAoKGF1 dG9sb2FkIChzdHJpbmctYXBwZW5kIGlucHV0ICIvc2hhcmUvd2ViLyIgZGVwZW5kZW5jeQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3ZlbmRvci9hdXRvbG9h ZF9jb25mLnBocCIpKSkKKyAgICAgICAgICAoaWYgKGZpbGUtZXhpc3RzPyBhdXRvbG9hZCkK KyAgICAgICAgICAgICAgYXV0b2xvYWQKKyAgICAgICAgICAgICAgKGxvb3AgaW5wdXRzKSkp KSkpKQorCisoZGVmaW5lKiAoY3JlYXRlLWF1dG9sb2FkIHZlbmRvciBjb21wb3Nlci1maWxl IGlucHV0cyAjOmtleSBkZXYtZGVwZW5kZW5jaWVzPykKKyAgImNyZWF0ZXMgYW4gYXV0b2xv YWQucGhwIGZpbGUgdGhhdCBzZXRzIHVwIHRoZSBjbGFzcyBsb2NhdGlvbnMgZm9yIHRoaXMg cGFja2FnZSwKK3NvIGl0IGNhbiBiZSBhdXRvbG9hZGVkIGJ5IFBIUCB3aGVuIHRoZSBwYWNr YWdlIGNsYXNzZXMgYXJlIHJlcXVpcmVkLiIKKyAgKHdpdGgtb3V0cHV0LXRvLWZpbGUgKHN0 cmluZy1hcHBlbmQgdmVuZG9yICIvYXV0b2xvYWQucGhwIikKKyAgICAobGFtYmRhIF8KKyAg ICAgIChkaXNwbGF5IChzdHJpbmctYXBwZW5kCisgICAgICAgICAgICAgICAgICI8P3BocAor Ly8gYXV0b2xvYWQucGhwIEBnZW5lcmF0ZWQgYnkgR3VpeAorJG1hcCA9ICRwc3I0bWFwID0g JGNsYXNzbWFwID0gYXJyYXkoKTsKK3JlcXVpcmVfb25jZSAnIiB2ZW5kb3IgIi9hdXRvbG9h ZF9jb25mLnBocCcKK3JlcXVpcmVfb25jZSAnIiAoYXNzb2MtcmVmIGlucHV0cyAiY29tcG9z ZXItY2xhc3Nsb2FkZXIiKSAiL3NoYXJlL3dlYi9jb21wb3Nlci9DbGFzc0xvYWRlci5waHAn CiskbG9hZGVyID0gbmV3IFxcQ29tcG9zZXJcXEF1dG9sb2FkXFxDbGFzc0xvYWRlcigpOwor Zm9yZWFjaCAoJG1hcCBhcyAkbmFtZXNwYWNlID0+ICRwYXRoKSB7CisgICRsb2FkZXItPnNl dCgkbmFtZXNwYWNlLCAkcGF0aCk7Cit9Citmb3JlYWNoICgkcHNyNG1hcCBhcyAkbmFtZXNw YWNlID0+ICRwYXRoKSB7CisgICRsb2FkZXItPnNldFBzcjQoJG5hbWVzcGFjZSwgJHBhdGgp OworfQorJGxvYWRlci0+YWRkQ2xhc3NNYXAoJGNsYXNzbWFwKTsKKyRsb2FkZXItPnJlZ2lz dGVyKCk7CisiKSkpKQorICA7OyBOb3csIGNyZWF0ZSBhdXRvbG9hZF9jb25mLnBocCB0aGF0 IGNvbnRhaW5zIHRoZSBhY3R1YWwgZGF0YSwgYXMgYSBzZXQKKyAgOzsgb2YgYXJyYXlzCisg IChsZXQqICgocGFja2FnZS1kYXRhIChyZWFkLXBhY2thZ2UtZGF0YSAjOmZpbGVuYW1lIGNv bXBvc2VyLWZpbGUpKQorICAgICAgICAgKGF1dG9sb2FkIChjb21wb3Nlci1wYWNrYWdlLWF1 dG9sb2FkIHBhY2thZ2UtZGF0YSkpCisgICAgICAgICAoYXV0b2xvYWQtZGV2IChjb21wb3Nl ci1wYWNrYWdlLWF1dG9sb2FkLWRldiBwYWNrYWdlLWRhdGEpKQorICAgICAgICAgKGRlcGVu ZGVuY2llcyAoY29tcG9zZXItcGFja2FnZS1yZXF1aXJlIHBhY2thZ2UtZGF0YSkpCisgICAg ICAgICAoZGVwZW5kZW5jaWVzLWRldiAoY29tcG9zZXItcGFja2FnZS1kZXYtcmVxdWlyZSBw YWNrYWdlLWRhdGEpKSkKKyAgICAod2l0aC1vdXRwdXQtdG8tZmlsZSAoc3RyaW5nLWFwcGVu ZCB2ZW5kb3IgIi9hdXRvbG9hZF9jb25mLnBocCIpCisgICAgICAobGFtYmRhIF8KKyAgICAg ICAgKGZvcm1hdCAjdCAiPD9waHB+JSIpCisgICAgICAgIChmb3JtYXQgI3QgIi8vIGF1dG9s b2FkX2NvbmYucGhwIEBnZW5lcmF0ZWQgYnkgR3VpeH4lIikKKyAgICAgICAgKGZvcmNlLW91 dHB1dCkKKyAgICAgICAgKGZvci1lYWNoCisgICAgICAgICAgKGxhbWJkYSAocHNyNCkKKyAg ICAgICAgICAgIChtYXRjaCBwc3I0CisgICAgICAgICAgICAgICgoa2V5IC4gdmFsdWUpCisg ICAgICAgICAgICAgICAoZm9ybWF0ICN0ICIkcHNyNG1hcFsnfmEnXSA9ICd+YS8uLi9+YSc7 fiUiCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctam9pbiAoc3RyaW5nLXNwbGl0 IGtleSAjXFwpICJcXFxcIikKKyAgICAgICAgICAgICAgICAgICAgICAgdmVuZG9yIHZhbHVl KSkpKQorICAgICAgICAgIChhcHBlbmQKKyAgICAgICAgICAgIChjb21wb3Nlci1hdXRvbG9h ZC1wc3ItNCBhdXRvbG9hZCkKKyAgICAgICAgICAgIChpZiBkZXYtZGVwZW5kZW5jaWVzPwor ICAgICAgICAgICAgICAgIChjb21wb3Nlci1hdXRvbG9hZC1wc3ItNCBhdXRvbG9hZC1kZXYp CisgICAgICAgICAgICAgICAgJygpKSkpCisgICAgICAgIChmb3ItZWFjaAorICAgICAgICAg IChsYW1iZGEgKGNsYXNzbWFwKQorICAgICAgICAgICAgKGZvci1lYWNoCisgICAgICAgICAg ICAgIChsYW1iZGEgKGZpbGUpCisgICAgICAgICAgICAgICAgKGludm9rZSAicGhwIiAoYXNz b2MtcmVmIGlucHV0cyAiZmluZGNsYXNzLnBocCIpCisgICAgICAgICAgICAgICAgICAgICAg ICAiLWkiIChzdHJpbmctYXBwZW5kIHZlbmRvciAiLy4uIikgIi1mIiBmaWxlKSkKKyAgICAg ICAgICAgICAgKGZpbmQtZmlsZXMgY2xhc3NtYXAgIi4ocGhwfGhofGluYykkIikpKQorICAg ICAgICAgIChhcHBlbmQKKyAgICAgICAgICAgIChjb21wb3Nlci1hdXRvbG9hZC1jbGFzc21h cCBhdXRvbG9hZCkKKyAgICAgICAgICAgIChpZiBkZXYtZGVwZW5kZW5jaWVzPworICAgICAg ICAgICAgICAgIChjb21wb3Nlci1hdXRvbG9hZC1jbGFzc21hcCBhdXRvbG9hZC1kZXYpCisg ICAgICAgICAgICAgICAgJygpKSkpCisgICAgICAgIChmb3ItZWFjaAorICAgICAgICAgIChs YW1iZGEgKGRlcCkKKyAgICAgICAgICAgIChmb3JtYXQgI3QgInJlcXVpcmVfb25jZSAnfmEn O34lIiAoZmluZC1waHAtZGVwIGlucHV0cyBkZXApKSkKKyAgICAgICAgICAoYXBwZW5kCisg ICAgICAgICAgICBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgIChpZiBkZXYtZGVwZW5kZW5j aWVzPworICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy1kZXYKKyAgICAgICAgICAgICAg ICAnKCkpKSkpKSkpCisKKyhkZWZpbmUqIChpbnN0YWxsICM6a2V5IGlucHV0cyBvdXRwdXRz IGNvbXBvc2VyLWZpbGUgIzphbGxvdy1vdGhlci1rZXlzKQorICAiSW5zdGFsbCB0aGUgZ2l2 ZW4gcGFja2FnZS4iCisgIChsZXQqICgob3V0IChhc3NvYy1yZWYgb3V0cHV0cyAib3V0Iikp CisgICAgICAgICAocGFja2FnZS1kYXRhIChyZWFkLXBhY2thZ2UtZGF0YSAjOmZpbGVuYW1l IGNvbXBvc2VyLWZpbGUpKQorICAgICAgICAgKG5hbWUgKGNvbXBvc2VyLXBhY2thZ2UtbmFt ZSBwYWNrYWdlLWRhdGEpKQorICAgICAgICAgKHBocC1kaXIgKHN0cmluZy1hcHBlbmQgb3V0 ICIvc2hhcmUvd2ViLyIgbmFtZSkpCisgICAgICAgICAoYmluLWRpciAoc3RyaW5nLWFwcGVu ZCBwaHAtZGlyICIvdmVuZG9yL2JpbiIpKQorICAgICAgICAgKGJpbiAoc3RyaW5nLWFwcGVu ZCBvdXQgIi9iaW4iKSkKKyAgICAgICAgIChiaW5hcmllcyAoY29tcG9zZXItcGFja2FnZS1i aW5hcmllcyBwYWNrYWdlLWRhdGEpKSkKKyAgICAgIChta2Rpci1wIHBocC1kaXIpCisgICAg ICAoY29weS1yZWN1cnNpdmVseSAiLiIgcGhwLWRpcikKKyAgICAgIChta2Rpci1wIChzdHJp bmctYXBwZW5kIHBocC1kaXIgIi92ZW5kb3IiKSkKKyAgICAgICh3aGVuIGJpbmFyaWVzCisg ICAgICAgIChta2Rpci1wIGJpbi1kaXIpCisgICAgICAgIChta2Rpci1wIGJpbikKKyAgICAg ICAgKGZvci1lYWNoCisgICAgICAgICAgKGxhbWJkYSAoZmlsZSkKKyAgICAgICAgICAgIChs ZXQgKChpbnN0YWxsZWQtZmlsZSAoc3RyaW5nLWFwcGVuZCBiaW4tZGlyICIvIiAoYmFzZW5h bWUgZmlsZSkpKQorICAgICAgICAgICAgICAgICAgKGJpbi1maWxlIChzdHJpbmctYXBwZW5k IGJpbiAiLyIgKGJhc2VuYW1lIGZpbGUpKSkKKyAgICAgICAgICAgICAgICAgIChvcmlnaW5h bC1maWxlIChzdHJpbmctYXBwZW5kIHBocC1kaXIgIi8iIGZpbGUpKSkKKyAgICAgICAgICAg ICAgKHN5bWxpbmsgb3JpZ2luYWwtZmlsZSBpbnN0YWxsZWQtZmlsZSkKKyAgICAgICAgICAg ICAgKHN5bWxpbmsgb3JpZ2luYWwtZmlsZSBiaW4tZmlsZSkpKQorICAgICAgICAgIGJpbmFy aWVzKSkKKyAgICAgIChjcmVhdGUtYXV0b2xvYWQgKHN0cmluZy1hcHBlbmQgcGhwLWRpciAi L3ZlbmRvciIpCisgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2VyLWZpbGUgaW5wdXRz KSkpCisKKyhkZWZpbmUgJXN0YW5kYXJkLXBoYXNlcworICA7OyBFdmVyeXRoaW5nIGlzIGFz IHdpdGggdGhlIEdOVSBCdWlsZCBTeXN0ZW0gZXhjZXB0IGZvciB0aGUgYGNvbmZpZ3VyZScK KyAgOzsgLCBgYnVpbGQnLCBgY2hlY2snIGFuZCBgaW5zdGFsbCcgcGhhc2VzLgorICAobW9k aWZ5LXBoYXNlcyBnbnU6JXN0YW5kYXJkLXBoYXNlcworICAgIChkZWxldGUgJ2Jvb3RzdHJh cCkKKyAgICAoZGVsZXRlICdjb25maWd1cmUpCisgICAgKGRlbGV0ZSAnYnVpbGQpCisgICAg KGRlbGV0ZSAnY2hlY2spCisgICAgKHJlcGxhY2UgJ2luc3RhbGwgaW5zdGFsbCkKKyAgICAo YWRkLWFmdGVyICdpbnN0YWxsICdjaGVjayBjaGVjaykpKQorCisoZGVmaW5lKiAoY29tcG9z ZXItYnVpbGQgIzprZXkgaW5wdXRzIChwaGFzZXMgJXN0YW5kYXJkLXBoYXNlcykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAjOmFsbG93LW90aGVyLWtleXMgIzpyZXN0IGFyZ3MpCisg ICJCdWlsZCB0aGUgZ2l2ZW4gcGFja2FnZSwgYXBwbHlpbmcgYWxsIG9mIFBIQVNFUyBpbiBv cmRlci4iCisgIChhcHBseSBnbnU6Z251LWJ1aWxkICM6aW5wdXRzIGlucHV0cyAjOnBoYXNl cyBwaGFzZXMgYXJncykpCisKKzs7OyBjb21wb3Nlci1idWlsZC1zeXN0ZW0uc2NtIGVuZHMg aGVyZQotLSAKMi4zOS4yCgo= --------------8QyPfQMLrvK9wysJ9iPduH1e--