From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id wL/EKYKWvF47bQAA0tVLHw (envelope-from ) for ; Thu, 14 May 2020 00:53:22 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id eEf+I4KWvF6NCAAA1q6Kng (envelope-from ) for ; Thu, 14 May 2020 00:53:22 +0000 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 7B525940B30 for ; Thu, 14 May 2020 00:53:19 +0000 (UTC) Received: from localhost ([::1]:47944 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jZ27j-0003ug-3y for larch@yhetil.org; Wed, 13 May 2020 20:53:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57914) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZ27S-0003uH-VH for bug-guix@gnu.org; Wed, 13 May 2020 20:53:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:48349) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jZ27S-0007Df-LC for bug-guix@gnu.org; Wed, 13 May 2020 20:53:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jZ27S-0007FK-HI for bug-guix@gnu.org; Wed, 13 May 2020 20:53:02 -0400 X-Loop: help-debbugs@gnu.org Subject: bug#41249: magic-wormhole fails to build Resent-From: Mikhail Tsykalov Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Thu, 14 May 2020 00:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 41249 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 41249@debbugs.gnu.org X-Debbugs-Original-To: bug-guix@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.158941756827833 (code B ref -1); Thu, 14 May 2020 00:53:02 +0000 Received: (at submit) by debbugs.gnu.org; 14 May 2020 00:52:48 +0000 Received: from localhost ([127.0.0.1]:59896 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jZ27E-0007Er-9W for submit@debbugs.gnu.org; Wed, 13 May 2020 20:52:48 -0400 Received: from lists.gnu.org ([209.51.188.17]:47016) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jZ27C-0007Eh-9p for submit@debbugs.gnu.org; Wed, 13 May 2020 20:52:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57906) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZ27C-0003t5-01 for bug-guix@gnu.org; Wed, 13 May 2020 20:52:46 -0400 Received: from mail-qt1-x82f.google.com ([2607:f8b0:4864:20::82f]:41236) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jZ26k-0007B7-Mk for bug-guix@gnu.org; Wed, 13 May 2020 20:52:45 -0400 Received: by mail-qt1-x82f.google.com with SMTP id m44so55542qtm.8 for ; Wed, 13 May 2020 17:52:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=qYD+LznimRkKDCSxFCEbuhSx6SRqf5WWdrNIU3Tf8a0=; b=CbAE4ZY69Q4ItbpuSo8/xQWtfjNaKxk5MSXG5bFsKbcq3DT16vxBl2yKZnNoyGhdMM dIXs59ydQ0tx5C1wKDcusULQUAJrGIfLLVKUqDYqb86trWkz135GnLU+oKvCkuzy0fXj im9oSgrQmczgEg0I2+mSR3pYzNcEeevI0P4dxCH/maIdZEYZ/5QbVZe41hzuAmQmuAsS +K6nItNsk+8uyyiCa+DnRYhPzml3A6GneuVtl8EWu5dTt48SBf3JdtlNCRCL2Ld2mkFl vDKf2CAzC7wfik8zW5/zcCgqCYjbkbW3Do8146V12zoGA4SbB2SuKtrsG+KLBDSomcIL QfyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=qYD+LznimRkKDCSxFCEbuhSx6SRqf5WWdrNIU3Tf8a0=; b=aOK7pl/M9sS7TL7jqlMxVIn33ypyE++qOgLRxXHH2u8fVO9LFXfcsTsbuNIVmT9jwi hUTrRijXfNR7jrCuNg2hz6WG7FDh4nP1wyUPKW5nVIi/57OFqq36JJ8BYHZboJKyBAo1 xxhZZ0ch99ktyVqiBo26aGgANiJxzEJm1+DEqxH7H1UJmPuzY1qhhjUU6uysQ66zmnzB 7JP3hNFITFvCr/opgYu4oqAIa74z6b1yBgfZyJLKf+Vmb9ypQRT5UI1b0XItfzmV2nQ0 qcxFppp1OzVUFPA9LwusvXe9ZOcSNQ3tUUQIV+QHFHiZXxK8Mnzsm/s+84F8U1ETYXtW Ppyg== X-Gm-Message-State: AOAM530Yfq3f2y/w5bn3WTuMIk/yHTdIx3tbthEftbndBKhP8qdzFaA3 FXsJvlJYAlqGyRvuZK7/rsvOHIEjHBc2nzqZ3DFRHAN0NJk= X-Google-Smtp-Source: ABdhPJyiuA9Oh0JUTYUYKFC1FwWeE59MaWd3i0EoXsRrIyzzQx5WEMWpnAgl7/qvkj9x9peFfaK1DOuMcZrzoSSU+rQ= X-Received: by 2002:ac8:2c78:: with SMTP id e53mr1935584qta.365.1589417537076; Wed, 13 May 2020 17:52:17 -0700 (PDT) MIME-Version: 1.0 From: Mikhail Tsykalov Date: Thu, 14 May 2020 03:52:05 +0300 Message-ID: Content-Type: multipart/mixed; boundary="000000000000b2c9ee05a5911b7d" Received-SPF: pass client-ip=2607:f8b0:4864:20::82f; envelope-from=tsymsh@gmail.com; helo=mail-qt1-x82f.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: "bug-Guix" X-Scanner: scn0 X-Spam-Score: 2.19 Authentication-Results: aspmx1.migadu.com; dkim=fail (rsa verify failed) header.d=gmail.com header.s=20161025 header.b=CbAE4ZY6; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of bug-guix-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=bug-guix-bounces@gnu.org X-Scan-Result: default: False [2.19 / 13.00]; GENERIC_REPUTATION(0.00)[-0.53955487292142]; DWL_DNSWL_FAIL(0.00)[209.51.188.17:server fail]; R_SPF_ALLOW(-0.20)[+ip4:209.51.188.0/24:c]; R_DKIM_REJECT(1.00)[gmail.com:s=20161025]; HAS_ATTACHMENT(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; TO_DN_NONE(0.00)[]; MIME_BASE64_TEXT_BOGUS(1.00)[]; IP_REPUTATION_HAM(0.00)[asn: 22989(0.05), country: US(-0.00), ip: 209.51.188.17(-0.54)]; DKIM_TRACE(0.00)[gmail.com:-]; MIME_BASE64_TEXT(0.10)[]; CTYPE_MIXED_BOGUS(1.00)[]; MX_GOOD(-0.50)[cached: eggs.gnu.org]; MAILLIST(-0.20)[mailman]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; RCVD_IN_DNSWL_FAIL(0.00)[209.51.188.17:server fail]; MIME_TRACE(0.00)[0:+,1:+,2:+]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:22989, ipnet:209.51.188.0/24, country:US]; TAGGED_FROM(0.00)[larch=yhetil.org]; FROM_NEQ_ENVFROM(0.00)[tsymsh@gmail.com,bug-guix-bounces@gnu.org]; ARC_NA(0.00)[]; URIBL_BLOCKED(0.00)[test_cli.help:url,test_util.space:url,manifest.in:url,setup.py:url]; FROM_HAS_DN(0.00)[]; MIME_GOOD(-0.10)[multipart/mixed,text/plain]; HAS_LIST_UNSUB(-0.01)[]; RCPT_COUNT_ONE(0.00)[1]; RCVD_COUNT_SEVEN(0.00)[10]; FORGED_SENDER_MAILLIST(0.00)[]; DMARC_POLICY_SOFTFAIL(0.10)[gmail.com : SPF not aligned (relaxed),none] X-TUID: 0e4wEf+BnC2m --000000000000b2c9ee05a5911b7d Content-Type: text/plain; charset="UTF-8" magic-wormhole fails in test stage with errors similar to following: Expected: (,) Got: [Failure instance: Traceback: : an integer is required (got type bytes) Attaching build log. commit: 8ba4d8a347fbdf9fe09e8ac801b4ac0586ac382a --000000000000b2c9ee05a5911b7d Content-Type: text/plain; charset="US-ASCII"; name="magic-wormhole-buildlog.txt" Content-Disposition: attachment; filename="magic-wormhole-buildlog.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ka6254kn0 c3RhcnRpbmcgcGhhc2UgYHNldC1TT1VSQ0UtREFURS1FUE9DSCcKcGhhc2UgYHNldC1TT1VSQ0Ut REFURS1FUE9DSCcgc3VjY2VlZGVkIGFmdGVyIDAuMCBzZWNvbmRzCnN0YXJ0aW5nIHBoYXNlIGBz ZXQtcGF0aHMnCmVudmlyb25tZW50IHZhcmlhYmxlIGBQQVRIJyBzZXQgdG8gYC9nbnUvc3RvcmUv d2M0eGg5d2o0OXJsYnlpdnhpNGxzd3M2d2hoeng0YWItcHl0aG9uLXdyYXBwZXItMy44LjIvYmlu Oi9nbnUvc3RvcmUvNGZzMW1wY2o4ZzdmaGcyM3I4Z2Z5ODQ1MzVhODZrZ2ItcHl0aG9uLXRxZG0t NC40My4wL2JpbjovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9iaW46L2dudS9zdG9yZS92NmY0NHpjY3doOXo1emszcGpseXdq eWJiaThuMmhqaC10YXItMS4zMi9iaW46L2dudS9zdG9yZS9uY3lkZ3Eyem5tczVuMWQyazV5cXNo aGY1OG5zaXh3di1nemlwLTEuMTAvYmluOi9nbnUvc3RvcmUvaThoMnBjeHFkcTA3aWptM2lia2th OGY0c21uMXc0OHYtYnppcDItMS4wLjgvYmluOi9nbnUvc3RvcmUvOTg2MGYxYWJxajh3ampud2w4 YTl2NTRwZGNjM2JoZ2YteHotNS4yLjQvYmluOi9nbnUvc3RvcmUvNjBnN3IzbDAxZmQ3YzU4eWpi bTZrcmdjd2oxamtwd2ctZmlsZS01LjM4L2JpbjovZ251L3N0b3JlL240bjU2MHBmdnZ3NTBhOTM2 OWF4dzV2ajVycnFmajFuLWRpZmZ1dGlscy0zLjcvYmluOi9nbnUvc3RvcmUvY2Q1cWYza2NubHEz NXA5azM5MnBqZHBkenBzbmRzNzAtcGF0Y2gtMi43LjYvYmluOi9nbnUvc3RvcmUvaGljN3NuaGF5 Zmw3bTZjcGZxcXI3M25tbTE5YnBxa2ctZmluZHV0aWxzLTQuNy4wL2JpbjovZ251L3N0b3JlL3N3 cWR2d3JpOWRidjZ6c3NnNnYwYnk3bDA1aGQ2d3hwLWdhd2stNS4wLjEvYmluOi9nbnUvc3RvcmUv aXNoazdmc3djczRna3djcDhtaDc4OHo0bXZ2bDlieGgtc2VkLTQuOC9iaW46L2dudS9zdG9yZS9i aHM0cmo1OHY4ajFuYXJiMjQ1NHJhYW4ycHMzOHhkOC1ncmVwLTMuNC9iaW46L2dudS9zdG9yZS81 N3hqNWdjeTFqYmw5YWkybG5ycW5wcjBkYWxkOWk2NS1jb3JldXRpbHMtOC4zMi9iaW46L2dudS9z dG9yZS9obTQwYnhudjhqeG1iYzFscGI3emZpbWlpNHhtOW04MS1tYWtlLTQuMy9iaW46L2dudS9z dG9yZS9wd2NwMjM5a2pmN2xuajVpNGxrZHpjZmN4d2NmeWs3Mi1iYXNoLW1pbmltYWwtNS4wLjE2 L2JpbjovZ251L3N0b3JlL21wYTA0YXE4bGJsYmN2aXl4eXd4Y3NiMXpiaTBtZjM5LWxkLXdyYXBw ZXItMC9iaW46L2dudS9zdG9yZS9tMXo3Y2RicXNxeXA5eG5qdzVjdmxiNGE3Z2tjZzNtNC1iaW51 dGlscy0yLjM0L2JpbjovZ251L3N0b3JlL3JuNzVmbTdhZGd4M3B3NWo4cGczYmN6ZnFxMXkxN2xr LWdjYy03LjUuMC9iaW46L2dudS9zdG9yZS9mYTZ3ajVieGtqNWxsMWQ3MjkyYTcwa25teWw3YTBj ci1nbGliYy0yLjMxL2JpbjovZ251L3N0b3JlL2ZhNndqNWJ4a2o1bGwxZDcyOTJhNzBrbm15bDdh MGNyLWdsaWJjLTIuMzEvc2JpbjovZ251L3N0b3JlL3E5cm04aDlpbWF6c3EyYzRxaXYyeWpwdmx2 bGl5d3FiLXB5dGhvbi0zLjguMi9iaW46L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9iaW46L2dudS9zdG9yZS84YW12Y3FrNzJs amYwMjBkdngyZGMweHdsNzZsNmM0NC1weXRob24tY2hhcmRldC0zLjAuNC9iaW4nCmVudmlyb25t ZW50IHZhcmlhYmxlIGBQWVRIT05QQVRIJyBzZXQgdG8gYC9nbnUvc3RvcmUvZHBqdjRseGJ2OHJi ZDRpbHBicG03dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzOi9nbnUvc3RvcmUvc2lsbnFhYjMyNTdrcjI4MnFnMjIzd2R2djY4Nnp6d2ctbWFn aWMtd29ybWhvbGUtbWFpbGJveC1zZXJ2ZXItMC40LjEvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzOi9nbnUvc3RvcmUvYm04NmEyZmhiamp2c2k2amE0bXljNnhjdjR5c3BnemctbWFnaWMtd29y bWhvbGUtdHJhbnNpdC1yZWxheS0wLjIuMS9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2du dS9zdG9yZS9zbHl2MzB5NHlwem14MnZqYWQ2NG5pOHg3NjdtNnliZi1weXRob24tYXV0b2JhaG4t MTkuMi4xL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL2ZrZngwazM3ejVk cGN2bnF4eGFsNng3bGRrcjd6cm40LXB5dGhvbi1jbGljay03LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzOi9nbnUvc3RvcmUvOWs0bG0zcmMyMzU3eWp3MDQxaHNueTJoOHhra2t4N20tcHl0 aG9uLWhrZGYtMC4wLjMvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvemc5 ZjBuanZyNDl3bG5uMXZtNXZxa3kxN3E3czZsaWctcHl0aG9uLWh1bWFuaXplLTAuNS4xL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL3o5emkwbmhqbTk1enByOW54ejc3amNs ZDFxcmpwYm5mLXB5dGhvbi1weW5hY2wtMS4zLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz Oi9nbnUvc3RvcmUvd2M4cW1iMzdwMTN3YXlwcml6YndndjJqNzB4NHN5eDUtcHl0aG9uLXNwYWtl Mi0wLjgvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvNGZzMW1wY2o4Zzdm aGcyM3I4Z2Z5ODQ1MzVhODZrZ2ItcHl0aG9uLXRxZG0tNC40My4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlczovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9y ZS93Y2d2aGd4a3JsYnpwencxdjJhZmN5cTNoejQ0M2t4bi1weXRob24tdHh0b3Jjb24tMTkuMC4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL3E5cm04aDlpbWF6c3EyYzRx aXYyeWpwdmx2bGl5d3FiLXB5dGhvbi0zLjguMi9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6 L2dudS9zdG9yZS9iMHN2c2Z6MnZ3MnF3bGZzaTU2azhmd2J4NGZ6Y2Zoay1weXRob24tc2l4LTEu MTQuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS9wZ3kyM2FyNmM2M2gx eGdyanJwcTM4dzA0NG5qNGxkOC1weXRob24tdHJlcS0xOC42LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzOi9nbnUvc3RvcmUvd3BqcnNhZ3p4NzExMjNsNnE4cGpsMHF5M3ByMzM0eTctcHl0 aG9uLXNlcnZpY2UtaWRlbnRpdHktMTguMS4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczov Z251L3N0b3JlL3FuemZ6a3p4OWE5c2ZxZGw1MXdheGZqc3gyZjUwOTZsLXB5dGhvbi1pZG5hLTIu OC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS8ybmcxNTg4cXNzN2Nudnpr MmdjaXM3Z240cGI0aXpzYS1weXRob24tYXR0cnMtMTkuMy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlczovZ251L3N0b3JlL2d6Z2F2bTlwMndhNnkyNDNrenpqODYxOHl3cnNobTFzLXB5dGhv bi10eGFpby0xOC44LjEvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvZzFt aGF2c21kN2ZsZGs0OWQ5NWlzcmE0bjl3bTRqdnMtcHl0aG9uLWNmZmktMS4xMy4yL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczov Z251L3N0b3JlL3BwYjU4a3FpYng4dzN6MGd4YTQ2enh6cXM3cnZybmxzLXB5dGhvbi1jb25zdGFu dGx5LTE1LjEuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS9kczY3OXY4 aG1rOHE1OXA0NmtrbDRsbXkxbndpcXhjei1weXRob24taHlwZXJsaW5rLTE5LjAuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS82ejZ3N2g5OGRuZjZuOGZmeThkbjQyM3F6 djJ2eGs3NC1weXRob24taW5jcmVtZW50YWwtMTcuNS4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlczovZ251L3N0b3JlLzZ4MzMwY2Z4MGdtYWRsbjBnM2psc2JoajRua2l4NzN2LXB5dGhvbi1w eWhhbWNyZXN0LTEuOS4wLTAuMjVmZGM1Zi9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2du dS9zdG9yZS9kaWI5M2t4bjRoYXlocDd2YWY0NThpd2wxcHg3eHI4Yi1weXRob24tem9wZS1pbnRl cmZhY2UtNC43LjIvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvcWc0OGpk enppMTV4cG0zajY0YWp4MjU5YXJxbHg5OG4tcHl0aG9uLWlwYWRkcmVzcy0xLjAuMjIvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvdjA4ajBjbG13MzFydmMwYWF6amY4ZmZp N3BpcXB2MXAtcHl0aG9uLXJlcXVlc3RzLTIuMjIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXM6L2dudS9zdG9yZS9obHNjbDlhcnluczI1YWFzeWxnMHB5YTRqa2Fjc2tycC1weXRob24tcHlv cGVuc3NsLTE5LjAuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS96aGxr MWEwenhmcjFuc2pwYTg4NmIwaXlqMWE2NjRoaS1weXRob24tcHlhc24xLW1vZHVsZXMtMC4yLjIv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvajlzZms1aWpsc2NxbWtxZ2Q1 bjJybXpraW15bmdiYWotcHl0aG9uLXB5YXNuMS0wLjQuOC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXM6L2dudS9zdG9yZS9hcmhxaXBxMW5saXFrNDVxY2tuM3hxeGY5OGk2OWI5NC1weXRob24t cHljcGFyc2VyLTIuMTkvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvMDRw a2ZqYTR2NmNxa2tuYjF5d2ZwYTVjbno2d3l4MHgtcHl0aG9uLXVybGxpYjMtMS4yNS4zL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlLzhhbXZjcWs3MmxqZjAyMGR2eDJkYzB4 d2w3Nmw2YzQ0LXB5dGhvbi1jaGFyZGV0LTMuMC40L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl czovZ251L3N0b3JlLzNkYW43NmduczgycmZhaHMxeDJpdzF3N2RycXA3Ymk4LXB5dGhvbi1jZXJ0 aWZpLTIwMTkuMy45L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL2N6cjFo NTFqeXp6ZmIyczM2MHFnaGcwdjN5M3czemNoLXB5dGhvbi1jcnlwdG9ncmFwaHktMi43L2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL25scDh3d3kxbWc3MjgzcXNrOTZ5a2xm YzhuMWcybTBwLXB5dGhvbi1weXNvY2tzLTEuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl czovZ251L3N0b3JlL3I2bmdyMXNtd2FoMzgzcmRqYjMyNDBwNHAwNHlkaWNwLXB5dGhvbi1pc284 NjAxLTAuMS4xMi9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS95eWszOHhn N3FrOHh5cng3NHdoOWQzbWNpcXkwNzlpay1weXRob24tYXNuMWNyeXB0by0wLjI0LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzJwplbnZpcm9ubWVudCB2YXJpYWJsZSBgQkFTSF9MT0FEQUJM RVNfUEFUSCcgdW5zZXQKZW52aXJvbm1lbnQgdmFyaWFibGUgYENfSU5DTFVERV9QQVRIJyBzZXQg dG8gYC9nbnUvc3RvcmUvaThoMnBjeHFkcTA3aWptM2lia2thOGY0c21uMXc0OHYtYnppcDItMS4w LjgvaW5jbHVkZTovZ251L3N0b3JlLzk4NjBmMWFicWo4d2pqbndsOGE5djU0cGRjYzNiaGdmLXh6 LTUuMi40L2luY2x1ZGU6L2dudS9zdG9yZS82MGc3cjNsMDFmZDdjNTh5amJtNmtyZ2N3ajFqa3B3 Zy1maWxlLTUuMzgvaW5jbHVkZTovZ251L3N0b3JlL3N3cWR2d3JpOWRidjZ6c3NnNnYwYnk3bDA1 aGQ2d3hwLWdhd2stNS4wLjEvaW5jbHVkZTovZ251L3N0b3JlL2htNDBieG52OGp4bWJjMWxwYjd6 ZmltaWk0eG05bTgxLW1ha2UtNC4zL2luY2x1ZGU6L2dudS9zdG9yZS9tMXo3Y2RicXNxeXA5eG5q dzVjdmxiNGE3Z2tjZzNtNC1iaW51dGlscy0yLjM0L2luY2x1ZGU6L2dudS9zdG9yZS9ybjc1Zm03 YWRneDNwdzVqOHBnM2JjemZxcTF5MTdsay1nY2MtNy41LjAvaW5jbHVkZTovZ251L3N0b3JlL2Zh NndqNWJ4a2o1bGwxZDcyOTJhNzBrbm15bDdhMGNyLWdsaWJjLTIuMzEvaW5jbHVkZTovZ251L3N0 b3JlL3E5cm04aDlpbWF6c3EyYzRxaXYyeWpwdmx2bGl5d3FiLXB5dGhvbi0zLjguMi9pbmNsdWRl Oi9nbnUvc3RvcmUvczU0YzZyYmw0MDQxNmxsMGtycnI1Mm0zeWl2eGNsM3gtbGlic29kaXVtLTEu MC4xOC9pbmNsdWRlOi9nbnUvc3RvcmUvZ2ZhcGtrNWM2aHZsMWQ5NG00c3FuaG43ZjlsNWdxeWgt bGludXgtbGlicmUtaGVhZGVycy01LjQuMjAvaW5jbHVkZScKZW52aXJvbm1lbnQgdmFyaWFibGUg YENQTFVTX0lOQ0xVREVfUEFUSCcgc2V0IHRvIGAvZ251L3N0b3JlL2k4aDJwY3hxZHEwN2lqbTNp YmtrYThmNHNtbjF3NDh2LWJ6aXAyLTEuMC44L2luY2x1ZGU6L2dudS9zdG9yZS85ODYwZjFhYnFq OHdqam53bDhhOXY1NHBkY2MzYmhnZi14ei01LjIuNC9pbmNsdWRlOi9nbnUvc3RvcmUvNjBnN3Iz bDAxZmQ3YzU4eWpibTZrcmdjd2oxamtwd2ctZmlsZS01LjM4L2luY2x1ZGU6L2dudS9zdG9yZS9z d3FkdndyaTlkYnY2enNzZzZ2MGJ5N2wwNWhkNnd4cC1nYXdrLTUuMC4xL2luY2x1ZGU6L2dudS9z dG9yZS9obTQwYnhudjhqeG1iYzFscGI3emZpbWlpNHhtOW04MS1tYWtlLTQuMy9pbmNsdWRlOi9n bnUvc3RvcmUvbTF6N2NkYnFzcXlwOXhuanc1Y3ZsYjRhN2drY2czbTQtYmludXRpbHMtMi4zNC9p bmNsdWRlOi9nbnUvc3RvcmUvcm43NWZtN2FkZ3gzcHc1ajhwZzNiY3pmcXExeTE3bGstZ2NjLTcu NS4wL2luY2x1ZGUvYysrOi9nbnUvc3RvcmUvcm43NWZtN2FkZ3gzcHc1ajhwZzNiY3pmcXExeTE3 bGstZ2NjLTcuNS4wL2luY2x1ZGU6L2dudS9zdG9yZS9mYTZ3ajVieGtqNWxsMWQ3MjkyYTcwa25t eWw3YTBjci1nbGliYy0yLjMxL2luY2x1ZGU6L2dudS9zdG9yZS9xOXJtOGg5aW1henNxMmM0cWl2 MnlqcHZsdmxpeXdxYi1weXRob24tMy44LjIvaW5jbHVkZTovZ251L3N0b3JlL3M1NGM2cmJsNDA0 MTZsbDBrcnJyNTJtM3lpdnhjbDN4LWxpYnNvZGl1bS0xLjAuMTgvaW5jbHVkZTovZ251L3N0b3Jl L2dmYXBrazVjNmh2bDFkOTRtNHNxbmhuN2Y5bDVncXloLWxpbnV4LWxpYnJlLWhlYWRlcnMtNS40 LjIwL2luY2x1ZGUnCmVudmlyb25tZW50IHZhcmlhYmxlIGBMSUJSQVJZX1BBVEgnIHNldCB0byBg L2dudS9zdG9yZS9kcGp2NGx4YnY4cmJkNGlscGJwbTd3OGJ6NjBuNGJxcS1weXRob24tbW9jay0z LjAuNS9saWI6L2dudS9zdG9yZS9zaWxucWFiMzI1N2tyMjgycWcyMjN3ZHZ2Njg2enp3Zy1tYWdp Yy13b3JtaG9sZS1tYWlsYm94LXNlcnZlci0wLjQuMS9saWI6L2dudS9zdG9yZS9ibTg2YTJmaGJq anZzaTZqYTRteWM2eGN2NHlzcGd6Zy1tYWdpYy13b3JtaG9sZS10cmFuc2l0LXJlbGF5LTAuMi4x L2xpYjovZ251L3N0b3JlL3NseXYzMHk0eXB6bXgydmphZDY0bmk4eDc2N202eWJmLXB5dGhvbi1h dXRvYmFobi0xOS4yLjEvbGliOi9nbnUvc3RvcmUvZmtmeDBrMzd6NWRwY3ZucXh4YWw2eDdsZGty N3pybjQtcHl0aG9uLWNsaWNrLTcuMC9saWI6L2dudS9zdG9yZS85azRsbTNyYzIzNTd5ancwNDFo c255Mmg4eGtra3g3bS1weXRob24taGtkZi0wLjAuMy9saWI6L2dudS9zdG9yZS96ZzlmMG5qdnI0 OXdsbm4xdm01dnFreTE3cTdzNmxpZy1weXRob24taHVtYW5pemUtMC41LjEvbGliOi9nbnUvc3Rv cmUvejl6aTBuaGptOTV6cHI5bnh6NzdqY2xkMXFyanBibmYtcHl0aG9uLXB5bmFjbC0xLjMuMC9s aWI6L2dudS9zdG9yZS93YzhxbWIzN3AxM3dheXByaXpid2d2Mmo3MHg0c3l4NS1weXRob24tc3Bh a2UyLTAuOC9saWI6L2dudS9zdG9yZS80ZnMxbXBjajhnN2ZoZzIzcjhnZnk4NDUzNWE4NmtnYi1w eXRob24tdHFkbS00LjQzLjAvbGliOi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYjovZ251L3N0b3JlL3djZ3ZoZ3hrcmxi enB6dzF2MmFmY3lxM2h6NDQza3huLXB5dGhvbi10eHRvcmNvbi0xOS4wLjAvbGliOi9nbnUvc3Rv cmUvaThoMnBjeHFkcTA3aWptM2lia2thOGY0c21uMXc0OHYtYnppcDItMS4wLjgvbGliOi9nbnUv c3RvcmUvOTg2MGYxYWJxajh3ampud2w4YTl2NTRwZGNjM2JoZ2YteHotNS4yLjQvbGliOi9nbnUv c3RvcmUvNjBnN3IzbDAxZmQ3YzU4eWpibTZrcmdjd2oxamtwd2ctZmlsZS01LjM4L2xpYjovZ251 L3N0b3JlL3N3cWR2d3JpOWRidjZ6c3NnNnYwYnk3bDA1aGQ2d3hwLWdhd2stNS4wLjEvbGliOi9n bnUvc3RvcmUvbTF6N2NkYnFzcXlwOXhuanc1Y3ZsYjRhN2drY2czbTQtYmludXRpbHMtMi4zNC9s aWI6L2dudS9zdG9yZS9mYTZ3ajVieGtqNWxsMWQ3MjkyYTcwa25teWw3YTBjci1nbGliYy0yLjMx L2xpYjovZ251L3N0b3JlL3MzZGNxendxYWFrdjF5eDM3Ynk5Y2hrc2Ria2dpaDE3LWdsaWJjLTIu MzEtc3RhdGljL2xpYjovZ251L3N0b3JlL2h3Y2t5NzQ0NnM5NTJ3MG13Y2hobW0yMTFsbDA3enJx LWdsaWJjLXV0ZjgtbG9jYWxlcy0yLjMxL2xpYjovZ251L3N0b3JlL3E5cm04aDlpbWF6c3EyYzRx aXYyeWpwdmx2bGl5d3FiLXB5dGhvbi0zLjguMi9saWI6L2dudS9zdG9yZS9iMHN2c2Z6MnZ3MnF3 bGZzaTU2azhmd2J4NGZ6Y2Zoay1weXRob24tc2l4LTEuMTQuMC9saWI6L2dudS9zdG9yZS9wZ3ky M2FyNmM2M2gxeGdyanJwcTM4dzA0NG5qNGxkOC1weXRob24tdHJlcS0xOC42LjAvbGliOi9nbnUv c3RvcmUvd3BqcnNhZ3p4NzExMjNsNnE4cGpsMHF5M3ByMzM0eTctcHl0aG9uLXNlcnZpY2UtaWRl bnRpdHktMTguMS4wL2xpYjovZ251L3N0b3JlL3FuemZ6a3p4OWE5c2ZxZGw1MXdheGZqc3gyZjUw OTZsLXB5dGhvbi1pZG5hLTIuOC9saWI6L2dudS9zdG9yZS8ybmcxNTg4cXNzN2NudnprMmdjaXM3 Z240cGI0aXpzYS1weXRob24tYXR0cnMtMTkuMy4wL2xpYjovZ251L3N0b3JlL2d6Z2F2bTlwMndh NnkyNDNrenpqODYxOHl3cnNobTFzLXB5dGhvbi10eGFpby0xOC44LjEvbGliOi9nbnUvc3RvcmUv ZzFtaGF2c21kN2ZsZGs0OWQ5NWlzcmE0bjl3bTRqdnMtcHl0aG9uLWNmZmktMS4xMy4yL2xpYjov Z251L3N0b3JlL3M1NGM2cmJsNDA0MTZsbDBrcnJyNTJtM3lpdnhjbDN4LWxpYnNvZGl1bS0xLjAu MTgvbGliOi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliOi9nbnUvc3RvcmUvcHBiNThrcWlieDh3M3owZ3hhNDZ6eHpxczdy dnJubHMtcHl0aG9uLWNvbnN0YW50bHktMTUuMS4wL2xpYjovZ251L3N0b3JlL2RzNjc5djhobWs4 cTU5cDQ2a2tsNGxteTFud2lxeGN6LXB5dGhvbi1oeXBlcmxpbmstMTkuMC4wL2xpYjovZ251L3N0 b3JlLzZ6Nnc3aDk4ZG5mNm44ZmZ5OGRuNDIzcXp2MnZ4azc0LXB5dGhvbi1pbmNyZW1lbnRhbC0x Ny41LjAvbGliOi9nbnUvc3RvcmUvNngzMzBjZngwZ21hZGxuMGczamxzYmhqNG5raXg3M3YtcHl0 aG9uLXB5aGFtY3Jlc3QtMS45LjAtMC4yNWZkYzVmL2xpYjovZ251L3N0b3JlL2RpYjkza3huNGhh eWhwN3ZhZjQ1OGl3bDFweDd4cjhiLXB5dGhvbi16b3BlLWludGVyZmFjZS00LjcuMi9saWI6L2du dS9zdG9yZS9xZzQ4amR6emkxNXhwbTNqNjRhangyNTlhcnFseDk4bi1weXRob24taXBhZGRyZXNz LTEuMC4yMi9saWI6L2dudS9zdG9yZS92MDhqMGNsbXczMXJ2YzBhYXpqZjhmZmk3cGlxcHYxcC1w eXRob24tcmVxdWVzdHMtMi4yMi4wL2xpYjovZ251L3N0b3JlL2hsc2NsOWFyeW5zMjVhYXN5bGcw cHlhNGprYWNza3JwLXB5dGhvbi1weW9wZW5zc2wtMTkuMC4wL2xpYjovZ251L3N0b3JlL3pobGsx YTB6eGZyMW5zanBhODg2YjBpeWoxYTY2NGhpLXB5dGhvbi1weWFzbjEtbW9kdWxlcy0wLjIuMi9s aWI6L2dudS9zdG9yZS9qOXNmazVpamxzY3Fta3FnZDVuMnJtemtpbXluZ2Jhai1weXRob24tcHlh c24xLTAuNC44L2xpYjovZ251L3N0b3JlL2FyaHFpcHExbmxpcWs0NXFja24zeHF4Zjk4aTY5Yjk0 LXB5dGhvbi1weWNwYXJzZXItMi4xOS9saWI6L2dudS9zdG9yZS8wNHBrZmphNHY2Y3Fra25iMXl3 ZnBhNWNuejZ3eXgweC1weXRob24tdXJsbGliMy0xLjI1LjMvbGliOi9nbnUvc3RvcmUvOGFtdmNx azcybGpmMDIwZHZ4MmRjMHh3bDc2bDZjNDQtcHl0aG9uLWNoYXJkZXQtMy4wLjQvbGliOi9nbnUv c3RvcmUvM2Rhbjc2Z25zODJyZmFoczF4Mml3MXc3ZHJxcDdiaTgtcHl0aG9uLWNlcnRpZmktMjAx OS4zLjkvbGliOi9nbnUvc3RvcmUvY3pyMWg1MWp5enpmYjJzMzYwcWdoZzB2M3kzdzN6Y2gtcHl0 aG9uLWNyeXB0b2dyYXBoeS0yLjcvbGliOi9nbnUvc3RvcmUvbmxwOHd3eTFtZzcyODNxc2s5Nnlr bGZjOG4xZzJtMHAtcHl0aG9uLXB5c29ja3MtMS43LjAvbGliOi9nbnUvc3RvcmUvcjZuZ3Ixc213 YWgzODNyZGpiMzI0MHA0cDA0eWRpY3AtcHl0aG9uLWlzbzg2MDEtMC4xLjEyL2xpYjovZ251L3N0 b3JlL3l5azM4eGc3cWs4eHlyeDc0d2g5ZDNtY2lxeTA3OWlrLXB5dGhvbi1hc24xY3J5cHRvLTAu MjQuMC9saWInCmVudmlyb25tZW50IHZhcmlhYmxlIGBHVUlYX0xPQ1BBVEgnIHNldCB0byBgL2du dS9zdG9yZS9od2NreTc0NDZzOTUydzBtd2NoaG1tMjExbGwwN3pycS1nbGliYy11dGY4LWxvY2Fs ZXMtMi4zMS9saWIvbG9jYWxlJwpwaGFzZSBgc2V0LXBhdGhzJyBzdWNjZWVkZWQgYWZ0ZXIgMC4x IHNlY29uZHMKc3RhcnRpbmcgcGhhc2UgYGluc3RhbGwtbG9jYWxlJwp1c2luZyAnZW5fVVMudXRm OCcgbG9jYWxlIGZvciBjYXRlZ29yeSAiTENfQUxMIgpwaGFzZSBgaW5zdGFsbC1sb2NhbGUnIHN1 Y2NlZWRlZCBhZnRlciAwLjAgc2Vjb25kcwpzdGFydGluZyBwaGFzZSBgdW5wYWNrJwptYWdpYy13 b3JtaG9sZS0wLjEyLjAvCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zZXR1cC5jZmcKbWFnaWMtd29y bWhvbGUtMC4xMi4wL21pc2MvCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9taXNjL3dlYi8KbWFnaWMt d29ybWhvbGUtMC4xMi4wL21pc2Mvd2ViL3RpbWVsaW5lLmNzcwptYWdpYy13b3JtaG9sZS0wLjEy LjAvbWlzYy93ZWIvdGltZWxpbmUuaHRtbAptYWdpYy13b3JtaG9sZS0wLjEyLjAvbWlzYy93ZWIv dGltZWxpbmUuanMKbWFnaWMtd29ybWhvbGUtMC4xMi4wL21pc2MvZHVtcC1zdGF0cy5weQptYWdp Yy13b3JtaG9sZS0wLjEyLjAvbWlzYy9kZW1vLWpvdXJuYWwucHkKbWFnaWMtd29ybWhvbGUtMC4x Mi4wL21pc2Mvd2luZG93cy1idWlsZC5jbWQKbWFnaWMtd29ybWhvbGUtMC4xMi4wL21pc2MvZHVt cC10aW1pbmcucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL1JFQURNRS5tZAptYWdpYy13b3JtaG9s ZS0wLjEyLjAvTElDRU5TRQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc2V0dXAucHkKbWFnaWMtd29y bWhvbGUtMC4xMi4wL2RvY3MvCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3cuZG90Cm1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9kb2NzL3dlbGNvbWUubWQKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2Rv Y3MvYXBpLm1kCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3N0YXRlLW1hY2hpbmVzLwptYWdp Yy13b3JtaG9sZS0wLjEyLjAvZG9jcy9zdGF0ZS1tYWNoaW5lcy9tYWNoaW5lcy5kb3QKbWFnaWMt d29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUtbWFjaGluZXMvdGVybWluYXRvci5kb3QKbWFnaWMt d29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUtbWFjaGluZXMvaW5wdXQuZG90Cm1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9kb2NzL3N0YXRlLW1hY2hpbmVzL2xpc3Rlci5kb3QKbWFnaWMtd29ybWhvbGUt MC4xMi4wL2RvY3Mvc3RhdGUtbWFjaGluZXMvZGlsYXRpb24uZG90Cm1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9kb2NzL3N0YXRlLW1hY2hpbmVzL19jb25uZWN0aW9uLmRvdAptYWdpYy13b3JtaG9sZS0w LjEyLjAvZG9jcy9zdGF0ZS1tYWNoaW5lcy9ib3NzLmRvdAptYWdpYy13b3JtaG9sZS0wLjEyLjAv ZG9jcy9zdGF0ZS1tYWNoaW5lcy9vcmRlci5kb3QKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mv c3RhdGUtbWFjaGluZXMvc2VuZC5kb3QKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUt bWFjaGluZXMvbWFpbGJveC5kb3QKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUtbWFj aGluZXMvYWxsb2NhdG9yLmRvdAptYWdpYy13b3JtaG9sZS0wLjEyLjAvZG9jcy9zdGF0ZS1tYWNo aW5lcy9yZWNlaXZlLmRvdAptYWdpYy13b3JtaG9sZS0wLjEyLjAvZG9jcy9zdGF0ZS1tYWNoaW5l cy9NYWtlZmlsZQptYWdpYy13b3JtaG9sZS0wLjEyLjAvZG9jcy9zdGF0ZS1tYWNoaW5lcy9rZXku ZG90Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3N0YXRlLW1hY2hpbmVzL25hbWVwbGF0ZS5k b3QKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUtbWFjaGluZXMvY29kZS5kb3QKbWFn aWMtd29ybWhvbGUtMC4xMi4wL2RvY3MvY2xpZW50LXByb3RvY29sLm1kCm1hZ2ljLXdvcm1ob2xl LTAuMTIuMC9kb2NzL2RpbGF0aW9uLXByb3RvY29sLm1kCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9k b2NzL2F0dGFja3MubWQKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3MvaW5kZXgucnN0Cm1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9kb2NzL2NvbmYucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mv dHJhbnNpdC5tZAptYWdpYy13b3JtaG9sZS0wLjEyLjAvZG9jcy9maWxlLXRyYW5zZmVyLXByb3Rv Y29sLm1kCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL2pvdXJuYWwubWQKbWFnaWMtd29ybWhv bGUtMC4xMi4wL2RvY3MvdG9yLm1kCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3dvcm1ob2xl LjEKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3MvaW50cm9kdWN0aW9uLm1kCm1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9kb2NzL01ha2VmaWxlCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3NlcnZl ci1wcm90b2NvbC5tZAptYWdpYy13b3JtaG9sZS0wLjEyLjAvTkVXUy5tZAptYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjLwptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL21hZ2ljX3dvcm1ob2xlLmVn Zy1pbmZvLwptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL21hZ2ljX3dvcm1ob2xlLmVnZy1pbmZv L1NPVVJDRVMudHh0Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvbWFnaWNfd29ybWhvbGUuZWdn LWluZm8vcmVxdWlyZXMudHh0Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvbWFnaWNfd29ybWhv bGUuZWdnLWluZm8vdG9wX2xldmVsLnR4dAptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL21hZ2lj X3dvcm1ob2xlLmVnZy1pbmZvL2VudHJ5X3BvaW50cy50eHQKbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9kZXBlbmRlbmN5X2xpbmtzLnR4dAptYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL21hZ2ljX3dvcm1ob2xlLmVnZy1pbmZvL1BLRy1JTkZPCm1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvaXBhZGRycy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19i b3NzLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX25hbWVwbGF0ZS5weQpt YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS8KbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9jbGkvX19pbml0X18ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS9jbGkvcHVibGljX3JlbGF5LnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvY2xpL3dlbGNvbWUucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS9jbGkvY21kX3NlbmQucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkv Y21kX3JlY2VpdmUucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21k X3NzaC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbGkucHkKbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fa2V5LnB5Cm1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvX19pbml0X18ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9vYnNlcnZlci5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3hm ZXJfdXRpbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19pbnB1dC5weQpt YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZWNlaXZlLnB5Cm1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JsY29tcGxldGVyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvX2NvZGUucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYWxsb2NhdG9yLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX29y ZGVyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC8KbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfaGludHMucHkKbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfdXRpbC5weQptYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvX19pbml0X18ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS90ZXN0L3J1bl90cmlhbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL3Rlc3QvdGVzdF9rZXlzLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC9jb21tb24ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3RfdG9yX21hbmFnZXIucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L3Rlc3Rfb2JzZXJ2ZXIucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L3Rlc3RfaXBhZGRycy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L3Rlc3QvdGVzdF9zc2gucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L3Rlc3RfZXZlbnR1YWwucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L3Rlc3RfeGZlcl91dGlsLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVz dC90ZXN0X3JsY29tcGxldGVyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X3RyYW5zaXQucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3Rfam91cm5hbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF93b3JtaG9sZS5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF9hcmdzLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X2hrZGYucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0 ZS8KbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X291 dGJvdW5kLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUv dGVzdF9wYXJzZS5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGls YXRlL19faW5pdF9fLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvdGVzdC9kaWxhdGUvY29tbW9uLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvdGVzdC9kaWxhdGUvdGVzdF9lbmNvZGluZy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfaW5ib3VuZC5weQptYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weQptYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcmVjb3JkLnB5Cm1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9lbmRwb2ludHMu cHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nv bm5lY3QucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90 ZXN0X2Nvbm5lY3Rvci5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3Qv ZGlsYXRlL3Rlc3RfZnVsbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvZGlsYXRlL3Rlc3RfbWFuYWdlci5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZnJhbWVyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvdGVzdC90ZXN0X2NsaS5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvdGVzdF93b3JkbGlzdC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3dvcm1ob2xlLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3dvcmRs aXN0LnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkK bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fc2VuZC5weQptYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi8KbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS9fZGlsYXRpb24vcm9sZXMucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fZGlsYXRpb24vX25vaXNlLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2RpbGF0aW9uL19faW5pdF9fLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fZGlsYXRpb24vb3V0Ym91bmQucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdG9yLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX2RpbGF0aW9uL2VuY29kZS5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX2RpbGF0aW9uL2luYm91bmQucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fZGlsYXRpb24vbWFuYWdlci5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL3Rvcl9tYW5hZ2VyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv am91cm5hbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2Vycm9ycy5weQpt YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL190ZXJtaW5hdG9yLnB5Cm1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2xpc3Rlci5weQptYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3RpbWluZy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3V0aWwucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fX21haW5fXy5w eQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19oaW50cy5weQptYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19tYWlsYm94LnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvX3ZlcnNpb24ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90cmFuc2l0LnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvZXZlbnR1 YWwucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9faW50ZXJmYWNlcy5weQpt YWdpYy13b3JtaG9sZS0wLjEyLjAvc25hcGNyYWZ0LnlhbWwKbWFnaWMtd29ybWhvbGUtMC4xMi4w Ly5jb3ZlcmFnZXJjCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC92ZXJzaW9uZWVyLnB5Cm1hZ2ljLXdv cm1ob2xlLTAuMTIuMC90b3guaW5pCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9weWkvCm1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9weWkvd29ybWhvbGUuZXhlLnNwZWMKbWFnaWMtd29ybWhvbGUtMC4xMi4w L3B5aS9idWlsZC1leGUKbWFnaWMtd29ybWhvbGUtMC4xMi4wL1BLRy1JTkZPCm1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9NQU5JRkVTVC5pbgpwaGFzZSBgdW5wYWNrJyBzdWNjZWVkZWQgYWZ0ZXIgMC4x IHNlY29uZHMKc3RhcnRpbmcgcGhhc2UgYGVuc3VyZS1uby1tdGltZXMtcHJlLTE5ODAnCnBoYXNl IGBlbnN1cmUtbm8tbXRpbWVzLXByZS0xOTgwJyBzdWNjZWVkZWQgYWZ0ZXIgMC4wIHNlY29uZHMK c3RhcnRpbmcgcGhhc2UgYGVuYWJsZS1ieXRlY29kZS1kZXRlcm1pbmlzbScKcGhhc2UgYGVuYWJs ZS1ieXRlY29kZS1kZXRlcm1pbmlzbScgc3VjY2VlZGVkIGFmdGVyIDAuMCBzZWNvbmRzCnN0YXJ0 aW5nIHBoYXNlIGBwYXRjaC11c3ItYmluLWZpbGUnCnBoYXNlIGBwYXRjaC11c3ItYmluLWZpbGUn IHN1Y2NlZWRlZCBhZnRlciAwLjAgc2Vjb25kcwpzdGFydGluZyBwaGFzZSBgcGF0Y2gtc291cmNl LXNoZWJhbmdzJwpwYXRjaC1zaGViYW5nOiAuL3B5aS9idWlsZC1leGU6IGNoYW5naW5nIGAvYmlu L3NoJyB0byBgL2dudS9zdG9yZS9wd2NwMjM5a2pmN2xuajVpNGxrZHpjZmN4d2NmeWs3Mi1iYXNo LW1pbmltYWwtNS4wLjE2L2Jpbi9zaCcKcGhhc2UgYHBhdGNoLXNvdXJjZS1zaGViYW5ncycgc3Vj Y2VlZGVkIGFmdGVyIDAuMCBzZWNvbmRzCnN0YXJ0aW5nIHBoYXNlIGBwYXRjaC1nZW5lcmF0ZWQt ZmlsZS1zaGViYW5ncycKcGhhc2UgYHBhdGNoLWdlbmVyYXRlZC1maWxlLXNoZWJhbmdzJyBzdWNj ZWVkZWQgYWZ0ZXIgMC4wIHNlY29uZHMKc3RhcnRpbmcgcGhhc2UgYGJ1aWxkJwpydW5uaW5nICJw eXRob24gc2V0dXAucHkiIHdpdGggY29tbWFuZCAiYnVpbGQiIGFuZCBwYXJhbWV0ZXJzICgpCnJ1 bm5pbmcgYnVpbGQKcnVubmluZyBidWlsZF9weQpjcmVhdGluZyBidWlsZApjcmVhdGluZyBidWls ZC9saWIKY3JlYXRpbmcgYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL19y ZWNlaXZlLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9fX2lu aXRfXy5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvdXRpbC5w eSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX3JsY29tcGxldGVy LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9ldmVudHVhbC5w eSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX2tleS5weSAtPiBi dWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX2FsbG9jYXRvci5weSAtPiBi dWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX29yZGVyLnB5IC0+IGJ1aWxk L2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9faGludHMucHkgLT4gYnVpbGQvbGli L3dvcm1ob2xlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL190ZXJtaW5hdG9yLnB5IC0+IGJ1aWxkL2xp Yi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9qb3VybmFsLnB5IC0+IGJ1aWxkL2xpYi93 b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9lcnJvcnMucHkgLT4gYnVpbGQvbGliL3dvcm1o b2xlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL29ic2VydmVyLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9s ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9faW50ZXJmYWNlcy5weSAtPiBidWlsZC9saWIvd29ybWhv bGUKY29weWluZyBzcmMvd29ybWhvbGUveGZlcl91dGlsLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9s ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS93b3JtaG9sZS5weSAtPiBidWlsZC9saWIvd29ybWhvbGUK Y29weWluZyBzcmMvd29ybWhvbGUvaXBhZGRycy5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29w eWluZyBzcmMvd29ybWhvbGUvX2Jvc3MucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcg c3JjL3dvcm1ob2xlL193b3JkbGlzdC5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBz cmMvd29ybWhvbGUvdG9yX21hbmFnZXIucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcg c3JjL3dvcm1ob2xlL19uYW1lcGxhdGUucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcg c3JjL3dvcm1ob2xlL19zZW5kLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93 b3JtaG9sZS90cmFuc2l0LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3Jt aG9sZS9fX21haW5fXy5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhv bGUvX2lucHV0LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9f bWFpbGJveC5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX2Nv ZGUucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL19yZW5kZXp2 b3VzLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9fdmVyc2lv bi5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX2xpc3Rlci5w eSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvdGltaW5nLnB5IC0+ IGJ1aWxkL2xpYi93b3JtaG9sZQpjcmVhdGluZyBidWlsZC9saWIvd29ybWhvbGUvY2xpCmNvcHlp bmcgc3JjL3dvcm1ob2xlL2NsaS9jbWRfc3NoLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9jbGkK Y29weWluZyBzcmMvd29ybWhvbGUvY2xpL19faW5pdF9fLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9s ZS9jbGkKY29weWluZyBzcmMvd29ybWhvbGUvY2xpL3dlbGNvbWUucHkgLT4gYnVpbGQvbGliL3dv cm1ob2xlL2NsaQpjb3B5aW5nIHNyYy93b3JtaG9sZS9jbGkvcHVibGljX3JlbGF5LnB5IC0+IGJ1 aWxkL2xpYi93b3JtaG9sZS9jbGkKY29weWluZyBzcmMvd29ybWhvbGUvY2xpL2NtZF9zZW5kLnB5 IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9jbGkKY29weWluZyBzcmMvd29ybWhvbGUvY2xpL2NtZF9y ZWNlaXZlLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9jbGkKY29weWluZyBzcmMvd29ybWhvbGUv Y2xpL2NsaS5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvY2xpCmNyZWF0aW5nIGJ1aWxkL2xpYi93 b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL19faW5pdF9f LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBzcmMvd29ybWhvbGUv X2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL19kaWxhdGlvbgpj b3B5aW5nIHNyYy93b3JtaG9sZS9fZGlsYXRpb24vX25vaXNlLnB5IC0+IGJ1aWxkL2xpYi93b3Jt aG9sZS9fZGlsYXRpb24KY29weWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwu cHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL19kaWxhdGlvbgpjb3B5aW5nIHNyYy93b3JtaG9sZS9f ZGlsYXRpb24vY29ubmVjdG9yLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9fZGlsYXRpb24KY29w eWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL3JvbGVzLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9s ZS9fZGlsYXRpb24KY29weWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL2VuY29kZS5weSAtPiBi dWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uCmNvcHlpbmcgc3JjL3dvcm1ob2xlL19kaWxhdGlv bi9vdXRib3VuZC5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uCmNvcHlpbmcgc3Jj L3dvcm1ob2xlL19kaWxhdGlvbi9pbmJvdW5kLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9fZGls YXRpb24KY29weWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL21hbmFnZXIucHkgLT4gYnVpbGQv bGliL3dvcm1ob2xlL19kaWxhdGlvbgpjcmVhdGluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdApj b3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L3Rlc3RfaXBhZGRycy5weSAtPiBidWlsZC9saWIvd29y bWhvbGUvdGVzdApjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L19faW5pdF9fLnB5IC0+IGJ1aWxk L2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF90cmFuc2l0 LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3Qv dGVzdF94ZmVyX3V0aWwucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QKY29weWluZyBzcmMv d29ybWhvbGUvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90 ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvcnVuX3RyaWFsLnB5IC0+IGJ1aWxkL2xpYi93 b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9hcmdzLnB5IC0+IGJ1 aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9qb3Vy bmFsLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF90b3JfbWFuYWdlci5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvdGVzdApjb3B5aW5n IHNyYy93b3JtaG9sZS90ZXN0L3Rlc3RfaGludHMucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rl c3QKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC90ZXN0X2hrZGYucHkgLT4gYnVpbGQvbGliL3dv cm1ob2xlL3Rlc3QKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC90ZXN0X2V2ZW50dWFsLnB5IC0+ IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93 b3JtaG9sZS5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvdGVzdApjb3B5aW5nIHNyYy93b3JtaG9s ZS90ZXN0L3Rlc3RfY2xpLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3Jj L3dvcm1ob2xlL3Rlc3QvdGVzdF9rZXlzLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNv cHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9vYnNlcnZlci5weSAtPiBidWlsZC9saWIvd29y bWhvbGUvdGVzdApjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkgLT4g YnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9jb21tb24u cHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC90 ZXN0X3dvcmRsaXN0LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dv cm1ob2xlL3Rlc3QvdGVzdF91dGlsLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlp bmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9zc2gucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rl c3QKY3JlYXRpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgc3JjL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL19faW5pdF9fLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0 L2RpbGF0ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3BhcnNlLnB5IC0+ IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0 L2RpbGF0ZS90ZXN0X2VuY29kaW5nLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0 ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2VuZHBvaW50cy5weSAtPiBi dWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0b3IucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRl CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdC5weSAtPiBidWls ZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9kaWxh dGUvdGVzdF9jb25uZWN0aW9uLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpj b3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2luYm91bmQucHkgLT4gYnVpbGQv bGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRl L3Rlc3Rfb3V0Ym91bmQucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlp bmcgc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfbWFuYWdlci5weSAtPiBidWlsZC9saWIv d29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVz dF9zdWJjaGFubmVsLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5n IHNyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS9jb21tb24ucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xl L3Rlc3QvZGlsYXRlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcmVjb3Jk LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5nIHNyYy93b3JtaG9s ZS90ZXN0L2RpbGF0ZS90ZXN0X2ZyYW1lci5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvdGVzdC9k aWxhdGUKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9mdWxsLnB5IC0+IGJ1 aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpVUERBVElORyBidWlsZC9saWIvd29ybWhvbGUv X3ZlcnNpb24ucHkKc2V0IGJ1aWxkL2xpYi93b3JtaG9sZS9fdmVyc2lvbi5weSB0byAnMC4xMi4w JwpwaGFzZSBgYnVpbGQnIHN1Y2NlZWRlZCBhZnRlciAzLjMgc2Vjb25kcwpzdGFydGluZyBwaGFz ZSBgaW5zdGFsbCcKcnVubmluZyAicHl0aG9uIHNldHVwLnB5IiB3aXRoIGNvbW1hbmQgImluc3Rh bGwiIGFuZCBwYXJhbWV0ZXJzICgiLS1wcmVmaXg9L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAiICItLXNpbmdsZS12ZXJzaW9u LWV4dGVybmFsbHktbWFuYWdlZCIgIi0tcm9vdD0vIikKcnVubmluZyBpbnN0YWxsCnJ1bm5pbmcg YnVpbGQKcnVubmluZyBidWlsZF9weQpVUERBVElORyBidWlsZC9saWIvd29ybWhvbGUvX3ZlcnNp b24ucHkKc2V0IGJ1aWxkL2xpYi93b3JtaG9sZS9fdmVyc2lvbi5weSB0byAnMC4xMi4wJwpydW5u aW5nIGluc3RhbGxfbGliCmNyZWF0aW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNq bGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wCmNyZWF0aW5nIC9nbnUvc3RvcmUvM3g4 cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYgpj cmVhdGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44CmNyZWF0aW5nIC9nbnUvc3RvcmUvM3g4cTEy eWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcwpjcmVhdGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUKY3JlYXRpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4 c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3dvcm1ob2xlL2NsaQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9jbGkvY21kX3Nz aC5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xp CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL2NsaS9fX2luaXRfXy5weSAtPiAvZ251L3N0b3Jl LzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xpCmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL2NsaS93ZWxjb21lLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS9jbGkKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvY2xpL3B1Ymxp Y19yZWxheS5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJm LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhv bGUvY2xpCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL2NsaS9jbWRfc2VuZC5weSAtPiAvZ251 L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xpCmNvcHlpbmcgYnVp bGQvbGliL3dvcm1ob2xlL2NsaS9jbWRfcmVjZWl2ZS5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xpCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xl L2NsaS9jbGkucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpy Zi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1o b2xlL2NsaQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9fcmVjZWl2ZS5weSAtPiAvZ251L3N0 b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIv d29ybWhvbGUvX19pbml0X18ucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2ps YnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3V0aWwucHkgLT4gL2dudS9z dG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEy LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL19ybGNvbXBsZXRlci5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvZXZlbnR1YWwucHkg LT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3Jt aG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcg YnVpbGQvbGliL3dvcm1ob2xlL19rZXkucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL19hbGxvY2F0b3Iu cHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13 b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlp bmcgYnVpbGQvbGliL3dvcm1ob2xlL19vcmRlci5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdi eHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX2hpbnRz LnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMt d29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZQpjb3B5 aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9fdGVybWluYXRvci5weSAtPiAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUv am91cm5hbC5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJm LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhv bGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvZXJyb3JzLnB5IC0+IC9nbnUvc3RvcmUvM3g4 cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9s ZS9vYnNlcnZlci5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFt enJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29y bWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX2ludGVyZmFjZXMucHkgLT4gL2dudS9z dG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEy LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL3hmZXJfdXRpbC5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhz amxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvd29ybWhvbGUucHkgLT4g L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9s ZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNyZWF0aW5nIC9n bnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUt MC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29w eWluZyBidWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uL19faW5pdF9fLnB5IC0+IC9nbnUvc3Rv cmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBi dWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkgLT4gL2dudS9zdG9yZS8z eDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbgpjb3B5aW5nIGJ1aWxk L2xpYi93b3JtaG9sZS9fZGlsYXRpb24vX25vaXNlLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBidWlsZC9saWIvd29y bWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6 NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbgpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9s ZS9fZGlsYXRpb24vY29ubmVjdG9yLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX2Rp bGF0aW9uL3JvbGVzLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0 YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93 b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uL2Vu Y29kZS5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUv X2RpbGF0aW9uCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL19kaWxhdGlvbi9vdXRib3VuZC5w eSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvX2RpbGF0 aW9uCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL19kaWxhdGlvbi9pbmJvdW5kLnB5IC0+IC9n bnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUt MC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29w eWluZyBidWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uL21hbmFnZXIucHkgLT4gL2dudS9zdG9y ZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbgpjb3B5aW5nIGJ1 aWxkL2xpYi93b3JtaG9sZS9pcGFkZHJzLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZj cm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy93b3JtaG9sZQpjcmVhdGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L3Rl c3RfaXBhZGRycy5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFt enJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29y bWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L19faW5pdF9fLnB5IC0+ IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhv bGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlp bmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF90cmFuc2l0LnB5IC0+IC9nbnUvc3RvcmUv M3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL3Rlc3QvdGVzdF94ZmVyX3V0aWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUv dGVzdC90ZXN0X3JsY29tcGxldGVyLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvcnVu X3RyaWFsLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYt bWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9s ZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF9hcmdzLnB5IC0+IC9n bnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUt MC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcg YnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF9qb3VybmFsLnB5IC0+IC9nbnUvc3RvcmUvM3g4 cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dv cm1ob2xlL3Rlc3QvdGVzdF90b3JfbWFuYWdlci5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdi eHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdApjcmVhdGluZyAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBidWlsZC9saWIv d29ybWhvbGUvdGVzdC9kaWxhdGUvX19pbml0X18ucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcGFyc2UucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZW5jb2RpbmcucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5 ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZW5kcG9pbnRzLnB5IC0+IC9nbnUvc3RvcmUvM3g4 cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5nIGJ1aWxk L2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rvci5weSAtPiAvZ251L3N0b3Jl LzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBi dWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0LnB5IC0+IC9nbnUvc3Rv cmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5n IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkgLT4gL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNv cHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfaW5ib3VuZC5weSAtPiAv Z251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUK Y29weWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9vdXRib3VuZC5weSAt PiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxh dGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9tYW5hZ2VyLnB5 IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29y bWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2Rp bGF0ZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5u ZWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rl c3QvZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL2NvbW1vbi5w eSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9k aWxhdGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9yZWNvcmQu cHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13 b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3Qv ZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZnJhbWVy LnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMt d29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0 L2RpbGF0ZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Z1bGwu cHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13 b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3Qv ZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF9oaW50cy5weSAtPiAv Z251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdApjb3B5aW5n IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L3Rlc3RfaGtkZi5weSAtPiAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3Jt aG9sZS90ZXN0L3Rlc3RfZXZlbnR1YWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC90 ZXN0X3dvcm1ob2xlLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0 YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93 b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF9jbGkucHkg LT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3Jt aG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29w eWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC90ZXN0X2tleXMucHkgLT4gL2dudS9zdG9yZS8z eDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWlsZC9saWIv d29ybWhvbGUvdGVzdC90ZXN0X29ic2VydmVyLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4 ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rl c3QvdGVzdF9tYWNoaW5lcy5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxi c3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvd29ybWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2NvbW1vbi5w eSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdApj b3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L3Rlc3Rfd29yZGxpc3QucHkgLT4gL2dudS9z dG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEy LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWls ZC9saWIvd29ybWhvbGUvdGVzdC90ZXN0X3V0aWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUv dGVzdC90ZXN0X3NzaC5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5 NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv d29ybWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9fYm9zcy5weSAtPiAvZ251 L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9s aWIvd29ybWhvbGUvX3dvcmRsaXN0LnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90b3JfbWFuYWdlci5w eSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWlu ZyBidWlsZC9saWIvd29ybWhvbGUvX25hbWVwbGF0ZS5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX3Nl bmQucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNv cHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3RyYW5zaXQucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5 ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL19f bWFpbl9fLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYt bWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9s ZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9faW5wdXQucHkgLT4gL2dudS9zdG9yZS8zeDhx MTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xl L19tYWlsYm94LnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16 cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3Jt aG9sZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9fY29kZS5weSAtPiAvZ251L3N0b3JlLzN4 OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhv bGUvX3JlbmRlenZvdXMucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2 eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL192ZXJzaW9uLnB5IC0+IC9nbnUv c3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4x Mi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZQpjb3B5aW5nIGJ1aWxkL2xp Yi93b3JtaG9sZS9fbGlzdGVyLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNq bGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy93b3JtaG9sZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90aW1pbmcucHkgLT4gL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmJ5dGUtY29tcGlsaW5n IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhv bGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9jbGkvY21kX3Nz aC5weSB0byBjbWRfc3NoLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUv M3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9jbGkvX19pbml0X18ucHkgdG8gX19p bml0X18uY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL2NsaS93ZWxjb21lLnB5IHRvIHdlbGNvbWUuY3B5dGhv bi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2ps YnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3dvcm1ob2xlL2NsaS9wdWJsaWNfcmVsYXkucHkgdG8gcHVibGljX3JlbGF5LmNweXRob24t MzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJz dnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy93b3JtaG9sZS9jbGkvY21kX3NlbmQucHkgdG8gY21kX3NlbmQuY3B5dGhvbi0zOC5weWMKYnl0 ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1t YWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xl L2NsaS9jbWRfcmVjZWl2ZS5weSB0byBjbWRfcmVjZWl2ZS5jcHl0aG9uLTM4LnB5YwpieXRlLWNv bXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xp L2NsaS5weSB0byBjbGkuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8z eDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19yZWNlaXZlLnB5IHRvIF9yZWNlaXZl LmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZj cm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy93b3JtaG9sZS9fX2luaXRfXy5weSB0byBfX2luaXRfXy5jcHl0aG9uLTM4LnB5 YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFt enJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29y bWhvbGUvdXRpbC5weSB0byB1dGlsLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUv c3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4x Mi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fcmxjb21wbGV0ZXIucHkg dG8gX3JsY29tcGxldGVyLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUv M3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9ldmVudHVhbC5weSB0byBldmVudHVh bC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2 Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvd29ybWhvbGUvX2tleS5weSB0byBfa2V5LmNweXRob24tMzgucHljCmJ5dGUt Y29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFn aWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9f YWxsb2NhdG9yLnB5IHRvIF9hbGxvY2F0b3IuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcg L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9s ZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19vcmRlci5weSB0 byBfb3JkZXIuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5 ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19oaW50cy5weSB0byBfaGludHMuY3B5dGhvbi0z OC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2 eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3dvcm1ob2xlL190ZXJtaW5hdG9yLnB5IHRvIF90ZXJtaW5hdG9yLmNweXRob24tMzgucHljCmJ5 dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYt bWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9s ZS9qb3VybmFsLnB5IHRvIGpvdXJuYWwuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL2Vycm9ycy5weSB0byBl cnJvcnMuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL29ic2VydmVyLnB5IHRvIG9ic2VydmVyLmNweXRob24t MzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJz dnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy93b3JtaG9sZS9faW50ZXJmYWNlcy5weSB0byBfaW50ZXJmYWNlcy5jcHl0aG9uLTM4LnB5Ywpi eXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJm LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhv bGUveGZlcl91dGlsLnB5IHRvIHhmZXJfdXRpbC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGlu ZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvd29ybWhvbGUu cHkgdG8gd29ybWhvbGUuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8z eDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbi9fX2luaXRfXy5weSB0 byBfX2luaXRfXy5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkgdG8g Y29ubmVjdGlvbi5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvX2RpbGF0aW9uL19ub2lzZS5weSB0byBfbm9p c2UuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6 NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5IHRvIHN1YmNoYW5u ZWwuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6 NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbi9jb25uZWN0b3IucHkgdG8gY29ubmVjdG9y LmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZj cm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24vcm9sZXMucHkgdG8gcm9sZXMuY3B5dGhvbi0z OC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2 eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3dvcm1ob2xlL19kaWxhdGlvbi9lbmNvZGUucHkgdG8gZW5jb2RlLmNweXRob24tMzgucHljCmJ5 dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYt bWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9s ZS9fZGlsYXRpb24vb3V0Ym91bmQucHkgdG8gb3V0Ym91bmQuY3B5dGhvbi0zOC5weWMKYnl0ZS1j b21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19k aWxhdGlvbi9pbmJvdW5kLnB5IHRvIGluYm91bmQuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxp bmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3Jt aG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlv bi9tYW5hZ2VyLnB5IHRvIG1hbmFnZXIuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL2lwYWRkcnMucHkgdG8g aXBhZGRycy5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC90ZXN0X2lwYWRkcnMucHkgdG8gdGVzdF9p cGFkZHJzLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L19faW5pdF9fLnB5IHRvIF9faW5pdF9fLmNw eXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS90ZXN0L3Rlc3RfdHJhbnNpdC5weSB0byB0ZXN0X3RyYW5zaXQuY3B5 dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4 c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF94ZmVyX3V0aWwucHkgdG8gdGVzdF94ZmVyX3V0aWwu Y3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weSB0byB0ZXN0X3JsY29t cGxldGVyLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L3J1bl90cmlhbC5weSB0byBydW5fdHJpYWwu Y3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9hcmdzLnB5IHRvIHRlc3RfYXJncy5jcHl0aG9u LTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxi c3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvd29ybWhvbGUvdGVzdC90ZXN0X2pvdXJuYWwucHkgdG8gdGVzdF9qb3VybmFsLmNweXRob24t MzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJz dnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy93b3JtaG9sZS90ZXN0L3Rlc3RfdG9yX21hbmFnZXIucHkgdG8gdGVzdF90b3JfbWFuYWdlci5j cHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvX19pbml0X18ucHkgdG8gX19pbml0X18uY3B5 dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4 c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcGFyc2UucHkgdG8gdGVzdF9wYXJzZS5j cHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9lbmNvZGluZy5weSB0byB0ZXN0X2Vu Y29kaW5nLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2VuZHBvaW50cy5weSB0 byB0ZXN0X2VuZHBvaW50cy5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3Jl LzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25u ZWN0b3IucHkgdG8gdGVzdF9jb25uZWN0b3IuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcg L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9s ZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRl L3Rlc3RfY29ubmVjdC5weSB0byB0ZXN0X2Nvbm5lY3QuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21w aWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13 b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3Qv ZGlsYXRlL3Rlc3RfY29ubmVjdGlvbi5weSB0byB0ZXN0X2Nvbm5lY3Rpb24uY3B5dGhvbi0zOC5w eWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRh bXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfaW5ib3VuZC5weSB0byB0ZXN0X2luYm91bmQuY3B5dGhv bi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2ps YnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfb3V0Ym91bmQucHkgdG8gdGVzdF9vdXRib3Vu ZC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2 Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9tYW5hZ2VyLnB5IHRvIHRlc3Rf bWFuYWdlci5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFubmVsLnB5 IHRvIHRlc3Rfc3ViY2hhbm5lbC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0 b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvY29tbW9u LnB5IHRvIGNvbW1vbi5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4 OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9yZWNvcmQu cHkgdG8gdGVzdF9yZWNvcmQuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9y ZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZnJh bWVyLnB5IHRvIHRlc3RfZnJhbWVyLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUv c3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4x Mi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0 X2Z1bGwucHkgdG8gdGVzdF9mdWxsLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUv c3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4x Mi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L3Rlc3RfaGludHMu cHkgdG8gdGVzdF9oaW50cy5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3Jl LzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC90ZXN0X2hrZGYucHkgdG8g dGVzdF9oa2RmLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEy eWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L3Rlc3RfZXZlbnR1YWwucHkgdG8gdGVz dF9ldmVudHVhbC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IHRvIHRl c3Rfd29ybWhvbGUuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhx MTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9jbGkucHkgdG8gdGVzdF9j bGkuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6 NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9rZXlzLnB5IHRvIHRlc3Rfa2V5cy5jcHl0 aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhz amxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvd29ybWhvbGUvdGVzdC90ZXN0X29ic2VydmVyLnB5IHRvIHRlc3Rfb2JzZXJ2ZXIuY3B5 dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4 c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSB0byB0ZXN0X21hY2hpbmVzLmNw eXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS90ZXN0L2NvbW1vbi5weSB0byBjb21tb24uY3B5dGhvbi0zOC5weWMK Ynl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpy Zi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1o b2xlL3Rlc3QvdGVzdF93b3JkbGlzdC5weSB0byB0ZXN0X3dvcmRsaXN0LmNweXRob24tMzgucHlj CmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16 cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3Jt aG9sZS90ZXN0L3Rlc3RfdXRpbC5weSB0byB0ZXN0X3V0aWwuY3B5dGhvbi0zOC5weWMKYnl0ZS1j b21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rl c3QvdGVzdF9zc2gucHkgdG8gdGVzdF9zc2guY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcg L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9s ZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19ib3NzLnB5IHRv IF9ib3NzLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fd29yZGxpc3QucHkgdG8gX3dvcmRsaXN0LmNweXRo b24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNq bGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy93b3JtaG9sZS90b3JfbWFuYWdlci5weSB0byB0b3JfbWFuYWdlci5jcHl0aG9uLTM4LnB5 YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFt enJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29y bWhvbGUvX25hbWVwbGF0ZS5weSB0byBfbmFtZXBsYXRlLmNweXRob24tMzgucHljCmJ5dGUtY29t cGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMt d29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fc2Vu ZC5weSB0byBfc2VuZC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4 OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdHJhbnNpdC5weSB0byB0cmFuc2l0LmNw eXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS9fX21haW5fXy5weSB0byBfX21haW5fXy5jcHl0aG9uLTM4LnB5Ywpi eXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJm LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhv bGUvX2lucHV0LnB5IHRvIF9pbnB1dC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251 L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvX21haWxib3gucHkgdG8g X21haWxib3guY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5 ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19jb2RlLnB5IHRvIF9jb2RlLmNweXRob24tMzgu cHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0 YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93 b3JtaG9sZS9fcmVuZGV6dm91cy5weSB0byBfcmVuZGV6dm91cy5jcHl0aG9uLTM4LnB5YwpieXRl LWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUv X3ZlcnNpb24ucHkgdG8gX3ZlcnNpb24uY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19saXN0ZXIucHkgdG8g X2xpc3Rlci5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGltaW5nLnB5IHRvIHRpbWluZy5jcHl0aG9uLTM4 LnB5YwpydW5uaW5nIGluc3RhbGxfZWdnX2luZm8KcnVubmluZyBlZ2dfaW5mbwp3cml0aW5nIHNy Yy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9QS0ctSU5GTwp3cml0aW5nIGRlcGVuZGVuY3lfbGlu a3MgdG8gc3JjL21hZ2ljX3dvcm1ob2xlLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0Cndy aXRpbmcgZW50cnkgcG9pbnRzIHRvIHNyYy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9lbnRyeV9w b2ludHMudHh0CndyaXRpbmcgcmVxdWlyZW1lbnRzIHRvIHNyYy9tYWdpY193b3JtaG9sZS5lZ2ct aW5mby9yZXF1aXJlcy50eHQKd3JpdGluZyB0b3AtbGV2ZWwgbmFtZXMgdG8gc3JjL21hZ2ljX3dv cm1ob2xlLmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKcmVhZGluZyBtYW5pZmVzdCBmaWxlICdzcmMv bWFnaWNfd29ybWhvbGUuZWdnLWluZm8vU09VUkNFUy50eHQnCnJlYWRpbmcgbWFuaWZlc3QgdGVt cGxhdGUgJ01BTklGRVNULmluJwp3cml0aW5nIG1hbmlmZXN0IGZpbGUgJ3NyYy9tYWdpY193b3Jt aG9sZS5lZ2ctaW5mby9TT1VSQ0VTLnR4dCcKQ29weWluZyBzcmMvbWFnaWNfd29ybWhvbGUuZWdn LWluZm8gdG8gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL21hZ2ljX3dvcm1o b2xlLTAuMTIuMC1weTMuOC5lZ2ctaW5mbwpydW5uaW5nIGluc3RhbGxfc2NyaXB0cwpJbnN0YWxs aW5nIHdvcm1ob2xlIHNjcmlwdCB0byAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxi c3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9iaW4KcGhhc2UgYGluc3RhbGwnIHN1Y2Nl ZWRlZCBhZnRlciAxLjQgc2Vjb25kcwpzdGFydGluZyBwaGFzZSBgaW5zdGFsbC1kb2NzJwpwaGFz ZSBgaW5zdGFsbC1kb2NzJyBzdWNjZWVkZWQgYWZ0ZXIgMC4wIHNlY29uZHMKc3RhcnRpbmcgcGhh c2UgYHdyYXAnCmZpbmQtZmlsZXM6IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJz dnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NiaW46IE5vIHN1Y2ggZmlsZSBvciBkaXJl Y3RvcnkKcGhhc2UgYHdyYXAnIHN1Y2NlZWRlZCBhZnRlciAwLjAgc2Vjb25kcwpzdGFydGluZyBw aGFzZSBgY2hlY2snCnJ1bm5pbmcgInB5dGhvbiBzZXR1cC5weSIgd2l0aCBjb21tYW5kICJ0ZXN0 IiBhbmQgcGFyYW1ldGVycyAoKQpydW5uaW5nIHRlc3QKcnVubmluZyBlZ2dfaW5mbwp3cml0aW5n IHNyYy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9QS0ctSU5GTwp3cml0aW5nIGRlcGVuZGVuY3lf bGlua3MgdG8gc3JjL21hZ2ljX3dvcm1ob2xlLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0 CndyaXRpbmcgZW50cnkgcG9pbnRzIHRvIHNyYy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9lbnRy eV9wb2ludHMudHh0CndyaXRpbmcgcmVxdWlyZW1lbnRzIHRvIHNyYy9tYWdpY193b3JtaG9sZS5l Z2ctaW5mby9yZXF1aXJlcy50eHQKd3JpdGluZyB0b3AtbGV2ZWwgbmFtZXMgdG8gc3JjL21hZ2lj X3dvcm1ob2xlLmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKcmVhZGluZyBtYW5pZmVzdCBmaWxlICdz cmMvbWFnaWNfd29ybWhvbGUuZWdnLWluZm8vU09VUkNFUy50eHQnCnJlYWRpbmcgbWFuaWZlc3Qg dGVtcGxhdGUgJ01BTklGRVNULmluJwp3cml0aW5nIG1hbmlmZXN0IGZpbGUgJ3NyYy9tYWdpY193 b3JtaG9sZS5lZ2ctaW5mby9TT1VSQ0VTLnR4dCcKcnVubmluZyBidWlsZF9leHQKdGVzdF9saXN0 ICh3b3JtaG9sZS50ZXN0LnRlc3RfaXBhZGRycy5MaXN0QWRkcmVzc2VzKQp0ZXN0X2xpc3QgLi4u IG9rCnRlc3RfbGlzdF9tb2NrX2N5Z3dpbiAod29ybWhvbGUudGVzdC50ZXN0X2lwYWRkcnMuTGlz dEFkZHJlc3NlcykKdGVzdF9saXN0X21vY2tfY3lnd2luIC4uLiBvawp0ZXN0X2xpc3RfbW9ja19p ZmNvbmZpZyAod29ybWhvbGUudGVzdC50ZXN0X2lwYWRkcnMuTGlzdEFkZHJlc3NlcykKdGVzdF9s aXN0X21vY2tfaWZjb25maWcgLi4uIG9rCnRlc3RfbGlzdF9tb2NrX2lwX2FkZHIgKHdvcm1ob2xl LnRlc3QudGVzdF9pcGFkZHJzLkxpc3RBZGRyZXNzZXMpCnRlc3RfbGlzdF9tb2NrX2lwX2FkZHIg Li4uIG9rCnRlc3RfbGlzdF9tb2NrX3JvdXRlICh3b3JtaG9sZS50ZXN0LnRlc3RfaXBhZGRycy5M aXN0QWRkcmVzc2VzKQp0ZXN0X2xpc3RfbW9ja19yb3V0ZSAuLi4gb2sKdGVzdF9hYmlsaXRpZXMg KHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkJhc2ljKQp0ZXN0X2FiaWxpdGllcyAuLi4gb2sK dGVzdF9jb25uZWN0aW9uX3JlYWR5ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5CYXNpYykK dGVzdF9jb25uZWN0aW9uX3JlYWR5IC4uLiBvawp0ZXN0X2lnbm9yZV9iYWRfaGludHMgKHdvcm1o b2xlLnRlc3QudGVzdF90cmFuc2l0LkJhc2ljKQp0ZXN0X2lnbm9yZV9iYWRfaGludHMgLi4uIG9r CnRlc3RfaWdub3JlX2xvY2FsaG9zdF9oaW50ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5C YXNpYykKdGVzdF9pZ25vcmVfbG9jYWxob3N0X2hpbnQgLi4uIG9rCnRlc3RfaWdub3JlX2xvY2Fs aG9zdF9oaW50X29yaWcgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkJhc2ljKQp0ZXN0X2ln bm9yZV9sb2NhbGhvc3RfaGludF9vcmlnIC4uLiBvawp0ZXN0X2tlZXBfb25seV9sb2NhbGhvc3Rf aGludCAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQmFzaWMpCnRlc3Rfa2VlcF9vbmx5X2xv Y2FsaG9zdF9oaW50IC4uLiBvawp0ZXN0X25vX3JlbGF5X2hpbnRzICh3b3JtaG9sZS50ZXN0LnRl c3RfdHJhbnNpdC5CYXNpYykKdGVzdF9ub19yZWxheV9oaW50cyAuLi4gb2sKdGVzdF9yZWxheV9o aW50cyAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQmFzaWMpCnRlc3RfcmVsYXlfaGludHMg Li4uIG9rCnRlc3RfdHJhbnNpdF9rZXlfYWxyZWFkeV9zZXQgKHdvcm1ob2xlLnRlc3QudGVzdF90 cmFuc2l0LkJhc2ljKQp0ZXN0X3RyYW5zaXRfa2V5X2FscmVhZHlfc2V0IC4uLiBvawp0ZXN0X3Ry YW5zaXRfa2V5X3dhaXQgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkJhc2ljKQp0ZXN0X3Ry YW5zaXRfa2V5X3dhaXQgLi4uIG9rCnRlc3RfdHJhbnNpdF9rZXlzICh3b3JtaG9sZS50ZXN0LnRl c3RfdHJhbnNpdC5CYXNpYykKdGVzdF90cmFuc2l0X2tleXMgLi4uIG9rCnRlc3RfY2FuY2VsICh3 b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X2NhbmNlbCAuLi4gb2sK dGVzdF9jaGVja19hbmRfcmVtb3ZlICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0 aW9uKQp0ZXN0X2NoZWNrX2FuZF9yZW1vdmUgLi4uIG9rCnRlc3RfY29ubmVjdENvbnN1bWVyICh3 b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X2Nvbm5lY3RDb25zdW1l ciAuLi4gb2sKdGVzdF9jb25uZWN0Q29uc3VtZXJfZW1wdHkgKHdvcm1ob2xlLnRlc3QudGVzdF90 cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfY29ubmVjdENvbnN1bWVyX2VtcHR5IC4uLiBvawp0ZXN0 X2NvbnN1bWVyICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X2Nv bnN1bWVyIC4uLiBvawp0ZXN0X2Rlc2NyaWJlICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5D b25uZWN0aW9uKQp0ZXN0X2Rlc2NyaWJlIC4uLiBvawp0ZXN0X2hhbmRzaGFrZV9iYWRfc3RhdGUg KHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfaGFuZHNoYWtlX2Jh ZF9zdGF0ZSAuLi4gb2sKdGVzdF9oYW5kc2hha2Vfb3RoZXJfZXJyb3IgKHdvcm1ob2xlLnRlc3Qu dGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfaGFuZHNoYWtlX290aGVyX2Vycm9yIC4uLiBv awp0ZXN0X291dF9vZl9vcmRlcl9ub25jZSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQ29u bmVjdGlvbikKdGVzdF9vdXRfb2Zfb3JkZXJfbm9uY2UgLi4uIG9rCnRlc3RfcHJvZHVjZXIgKHdv cm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfcHJvZHVjZXIgLi4uIG9r CnRlc3RfcmVjZWl2ZV9xdWV1ZSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQ29ubmVjdGlv bikKdGVzdF9yZWNlaXZlX3F1ZXVlIC4uLiBvawp0ZXN0X3JlY2VpdmVyX2FjY2VwdGVkICh3b3Jt aG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X3JlY2VpdmVyX2FjY2VwdGVk IC4uLiBvawp0ZXN0X3JlY2VpdmVyX3JlamVjdGVkX3BvbGl0ZWx5ICh3b3JtaG9sZS50ZXN0LnRl c3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X3JlY2VpdmVyX3JlamVjdGVkX3BvbGl0ZWx5IC4u LiBvawp0ZXN0X3JlY2VpdmVyX3JlamVjdGVkX3J1ZGVseSAod29ybWhvbGUudGVzdC50ZXN0X3Ry YW5zaXQuQ29ubmVjdGlvbikKdGVzdF9yZWNlaXZlcl9yZWplY3RlZF9ydWRlbHkgLi4uIG9rCnRl c3RfcmVjb3Jkc19jb3JydXB0ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9u KQp0ZXN0X3JlY29yZHNfY29ycnVwdCAuLi4gb2sKdGVzdF9yZWNvcmRzX2dvb2QgKHdvcm1ob2xl LnRlc3QudGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfcmVjb3Jkc19nb29kIC4uLiBvawp0 ZXN0X3JlY29yZHNfbm90X2JpbmFyeSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQ29ubmVj dGlvbikKdGVzdF9yZWNvcmRzX25vdF9iaW5hcnkgLi4uIG9rCnRlc3RfcmVsYXlfaGFuZHNoYWtl ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X3JlbGF5X2hhbmRz aGFrZSAuLi4gb2sKdGVzdF9yZWxheV9oYW5kc2hha2VfYmFkICh3b3JtaG9sZS50ZXN0LnRlc3Rf dHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X3JlbGF5X2hhbmRzaGFrZV9iYWQgLi4uIG9rCnRlc3Rf c2VuZGVyX2FjY2VwdGluZyAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQ29ubmVjdGlvbikK dGVzdF9zZW5kZXJfYWNjZXB0aW5nIC4uLiBvawp0ZXN0X3NlbmRlcl9yZWplY3RpbmcgKHdvcm1o b2xlLnRlc3QudGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3Rfc2VuZGVyX3JlamVjdGluZyAu Li4gb2sKdGVzdF90aW1lb3V0ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9u KQp0ZXN0X3RpbWVvdXQgLi4uIG9rCnRlc3Rfd3JpdGVUb0ZpbGUgKHdvcm1ob2xlLnRlc3QudGVz dF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3Rfd3JpdGVUb0ZpbGUgLi4uIG9rCnRlc3RfYmFzaWMg KHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkZpbGVDb25zdW1lcikKdGVzdF9iYXNpYyAuLi4g b2sKdGVzdF9oYXNoZXIgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkZpbGVDb25zdW1lcikK dGVzdF9oYXNoZXIgLi4uIG9rCnRlc3Rfbm90X2ZvcmV2ZXJfY2FuY2VsX2Vhcmx5ICh3b3JtaG9s ZS50ZXN0LnRlc3RfdHJhbnNpdC5Gb3JldmVyKQp0ZXN0X25vdF9mb3JldmVyX2NhbmNlbF9lYXJs eSAuLi4gb2sKdGVzdF9ub3RfZm9yZXZlcl9lcnJzICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNp dC5Gb3JldmVyKQp0ZXN0X25vdF9mb3JldmVyX2VycnMgLi4uIG9rCnRlc3Rfbm90X2ZvcmV2ZXJf ZmlyZXMgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkZvcmV2ZXIpCnRlc3Rfbm90X2ZvcmV2 ZXJfZmlyZXMgLi4uIG9rCnRlc3Rfbm90X2ZvcmV2ZXJfdGltZW91dCAod29ybWhvbGUudGVzdC50 ZXN0X3RyYW5zaXQuRm9yZXZlcikKdGVzdF9ub3RfZm9yZXZlcl90aW1lb3V0IC4uLiBvawp0ZXN0 X2RpcmVjdCAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuRnVsbCkKdGVzdF9kaXJlY3QgLi4u IG9rCnRlc3RfcmVsYXkgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkZ1bGwpCnRlc3RfcmVs YXkgLi4uIG9rCnRlc3RfY2FuY2VsX2FmdGVyX29uZV9mYWlsdXJlICh3b3JtaG9sZS50ZXN0LnRl c3RfdHJhbnNpdC5IaWdobGFuZGVyKQp0ZXN0X2NhbmNlbF9hZnRlcl9vbmVfZmFpbHVyZSAuLi4g b2sKdGVzdF9jYW5jZWxfZWFybHkgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkhpZ2hsYW5k ZXIpCnRlc3RfY2FuY2VsX2Vhcmx5IC4uLiBvawp0ZXN0X29uZV93aW5uZXIgKHdvcm1ob2xlLnRl c3QudGVzdF90cmFuc2l0LkhpZ2hsYW5kZXIpCnRlc3Rfb25lX3dpbm5lciAuLi4gb2sKdGVzdF90 aGVyZV9taWdodF9hbHNvX2JlX25vbmUgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkhpZ2hs YW5kZXIpCnRlc3RfdGhlcmVfbWlnaHRfYWxzb19iZV9ub25lIC4uLiBvawp0ZXN0X2NhbmNlbCAo d29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuSW5ib3VuZENvbm5lY3Rpb25GYWN0b3J5KQp0ZXN0 X2NhbmNlbCAuLi4gb2sKdGVzdF9kZXNjcmliZSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQu SW5ib3VuZENvbm5lY3Rpb25GYWN0b3J5KQp0ZXN0X2Rlc2NyaWJlIC4uLiBvawp0ZXN0X2ZpcnN0 X3N1Y2Nlc3Nfd2lucyAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuSW5ib3VuZENvbm5lY3Rp b25GYWN0b3J5KQp0ZXN0X2ZpcnN0X3N1Y2Nlc3Nfd2lucyAuLi4gb2sKdGVzdF9sb2dfb3RoZXJf ZXJyb3JzICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5JbmJvdW5kQ29ubmVjdGlvbkZhY3Rv cnkpCnRlc3RfbG9nX290aGVyX2Vycm9ycyAuLi4gVW5oYW5kbGVkIGVycm9yIGluIERlZmVycmVk OgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotLS0gPGV4Y2VwdGlvbiBjYXVn aHQgaGVyZT4gLS0tCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDY1NCwgaW4gX3J1bkNhbGxiYWNrcwog ICAgY3VycmVudC5yZXN1bHQgPSBjYWxsYmFjayhjdXJyZW50LnJlc3VsdCwgKmFyZ3MsICoqa3cp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3RyYW5zaXQucHkiLCBsaW5lIDQ3NCwgaW4g X3Byb3RvX2ZhaWxlZAogICAgZi50cmFwKEJhZEhhbmRzaGFrZSwgZGVmZXIuQ2FuY2VsbGVkRXJy b3IpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv cHl0aG9uL2ZhaWx1cmUucHkiLCBsaW5lIDQ2MCwgaW4gdHJhcAogICAgc2VsZi5yYWlzZUV4Y2Vw dGlvbigpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvcHl0aG9uL2ZhaWx1cmUucHkiLCBsaW5lIDQ4OCwgaW4gcmFpc2VFeGNlcHRpb24KICAgIHJh aXNlIHNlbGYudmFsdWUud2l0aF90cmFjZWJhY2soc2VsZi50YikKd29ybWhvbGUudGVzdC50ZXN0 X3RyYW5zaXQuUmFuZG9tRXJyb3I6IGJvb20xCgpvawp0ZXN0X29uZV9mYWlsX29uZV9zdWNjZXNz ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5JbmJvdW5kQ29ubmVjdGlvbkZhY3RvcnkpCnRl c3Rfb25lX2ZhaWxfb25lX3N1Y2Nlc3MgLi4uIG9rCnRlc3Rfc3VjY2VzcyAod29ybWhvbGUudGVz dC50ZXN0X3RyYW5zaXQuSW5ib3VuZENvbm5lY3Rpb25GYWN0b3J5KQp0ZXN0X3N1Y2Nlc3MgLi4u IG9rCnRlc3RfZ2V0X2RpcmVjdF9oaW50cyAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuTGlz dGVuZXIpCnRlc3RfZ2V0X2RpcmVjdF9oaW50cyAuLi4gb2sKdGVzdF9saXN0ZW5lciAod29ybWhv bGUudGVzdC50ZXN0X3RyYW5zaXQuTGlzdGVuZXIpCnRlc3RfbGlzdGVuZXIgLi4uIG9rCnRlc3Rf YWxsb2NhdGVfcG9ydCAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuTWlzYykKdGVzdF9hbGxv Y2F0ZV9wb3J0IC4uLiBvawp0ZXN0X2FsbG9jYXRlX3BvcnRfbm9fcmV1c2VhZGRyICh3b3JtaG9s ZS50ZXN0LnRlc3RfdHJhbnNpdC5NaXNjKQp0ZXN0X2FsbG9jYXRlX3BvcnRfbm9fcmV1c2VhZGRy IC4uLiBvawp0ZXN0X3N1Y2Nlc3MgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0Lk91dGJvdW5k Q29ubmVjdGlvbkZhY3RvcnkpCnRlc3Rfc3VjY2VzcyAuLi4gb2sKdGVzdF9uZXcgKHdvcm1ob2xl LnRlc3QudGVzdF90cmFuc2l0LlJlbGF5SGFuZHNoYWtlKQp0ZXN0X25ldyAuLi4gb2sKdGVzdF9v bGQgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LlJlbGF5SGFuZHNoYWtlKQp0ZXN0X29sZCAu Li4gb2sKdGVzdF9ub19jb250ZW5kZXJzICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5UcmFu c2l0KQp0ZXN0X25vX2NvbnRlbmRlcnMgLi4uIG9rCnRlc3Rfbm9fZGlyZWN0X2hpbnRzICh3b3Jt aG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5UcmFuc2l0KQp0ZXN0X25vX2RpcmVjdF9oaW50cyAuLi4g b2sKdGVzdF9wcmlvcml0aWVzICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5UcmFuc2l0KQp0 ZXN0X3ByaW9yaXRpZXMgLi4uIG9rCnRlc3Rfc3VjY2Vzc19kaXJlY3QgKHdvcm1ob2xlLnRlc3Qu dGVzdF90cmFuc2l0LlRyYW5zaXQpCnRlc3Rfc3VjY2Vzc19kaXJlY3QgLi4uIG9rCi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9faGludHMucHk6OTE6IERlcHJlY2F0aW9uV2FybmluZzogUGFzc2luZyBI b3N0bmFtZUVuZHBvaW50IGEgcmVhY3RvciB0aGF0IGRvZXMgbm90IHByb3ZpZGUgSVJlYWN0b3JQ bHVnZ2FibGVOYW1lUmVzb2x2ZXIgKG1vY2subW9jay5Nb2NrKSB3YXMgZGVwcmVjYXRlZCBpbiBU d2lzdGVkIDE3LjUuMDsgcGxlYXNlIHVzZSBhIHJlYWN0b3IgdGhhdCBwcm92aWRlcyBJUmVhY3Rv clBsdWdnYWJsZU5hbWVSZXNvbHZlciBpbnN0ZWFkCiAgcmV0dXJuIEhvc3RuYW1lRW5kcG9pbnQo cmVhY3RvciwgaGludC5ob3N0bmFtZSwgaGludC5wb3J0KQp0ZXN0X3N1Y2Nlc3NfZGlyZWN0X3Rv ciAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuVHJhbnNpdCkKdGVzdF9zdWNjZXNzX2RpcmVj dF90b3IgLi4uIG9rCnRlc3Rfc3VjY2Vzc19kaXJlY3RfdG9yX3JlbGF5ICh3b3JtaG9sZS50ZXN0 LnRlc3RfdHJhbnNpdC5UcmFuc2l0KQp0ZXN0X3N1Y2Nlc3NfZGlyZWN0X3Rvcl9yZWxheSAuLi4g b2sKdGVzdF93YWl0X2Zvcl9yZWxheSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuVHJhbnNp dCkKdGVzdF93YWl0X2Zvcl9yZWxheSAuLi4gb2sKdGVzdF9tYWtlX2NvZGUgKHdvcm1ob2xlLnRl c3QudGVzdF94ZmVyX3V0aWwuWGZlcikKdGVzdF9tYWtlX2NvZGUgLi4uIEVSUk9SCnRlc3Rfb25f Y29kZSAod29ybWhvbGUudGVzdC50ZXN0X3hmZXJfdXRpbC5YZmVyKQp0ZXN0X29uX2NvZGUgLi4u IFVuaGFuZGxlZCBlcnJvciBpbiBEZWZlcnJlZDoKClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwog ICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X3hmZXJfdXRpbC5weSIsIGxpbmUgMzYsIGluIHRlc3Rfb25fY29kZQogICAgZDIg PSB4ZmVyX3V0aWwucmVjZWl2ZSgKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTYxMywgaW4gdW53aW5k R2VuZXJhdG9yCiAgICByZXR1cm4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdlbikKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUyOSwgaW4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzCiAg ICBfaW5saW5lQ2FsbGJhY2tzKE5vbmUsIGcsIHN0YXR1cykKLS0tIDxleGNlcHRpb24gY2F1Z2h0 IGhlcmU+IC0tLQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tz CiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS94ZmVyX3V0aWwucHkiLCBsaW5lIDQ2LCBpbiByZWNlaXZlCiAgICB3aCA9IHdvcm1ob2xlLmNy ZWF0ZShhcHBpZCwgcmVsYXlfdXJsLCByZWFjdG9yLCB0b3I9dG9yKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBC b3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRf dmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9z cz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0 dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAg c2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNl bGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2 b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYu X19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5k ZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYu X2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9p bnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYu X21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGlu ZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihk ZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0 dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2 YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29k ZSgqdmFsdWVzKQpidWlsdGlucy5UeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKRVJST1IKRVJST1IKdGVzdF94ZmVyICh3b3JtaG9sZS50ZXN0LnRlc3Rf eGZlcl91dGlsLlhmZXIpCnRlc3RfeGZlciAuLi4gRVJST1IKdGVzdF9idWlsZF9jb21wbGV0aW9u cyAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLkNvbXBsZXRpb24pCnRlc3RfYnVpbGRf Y29tcGxldGlvbnMgLi4uIG9rCnRlc3RfY2FsbCAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxl dGVyLkNvbXBsZXRpb24pCnRlc3RfY2FsbCAuLi4gb2sKdGVzdF9pbmNvbXBsZXRlX2NvZGUgKHdv cm1ob2xlLnRlc3QudGVzdF9ybGNvbXBsZXRlci5Db21wbGV0aW9uKQp0ZXN0X2luY29tcGxldGVf Y29kZSAuLi4gb2sKdGVzdF9yb2xsYmFja19uYW1lcGxhdGVfZHVyaW5nX2NvbXBsZXRpb24gKHdv cm1ob2xlLnRlc3QudGVzdF9ybGNvbXBsZXRlci5Db21wbGV0aW9uKQp0ZXN0X3JvbGxiYWNrX25h bWVwbGF0ZV9kdXJpbmdfY29tcGxldGlvbiAuLi4gb2sKdGVzdF9yb2xsYmFja19uYW1lcGxhdGVf ZHVyaW5nX2ZpbmlzaCAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLkNvbXBsZXRpb24p CnRlc3Rfcm9sbGJhY2tfbmFtZXBsYXRlX2R1cmluZ19maW5pc2ggLi4uIG9rCnRlc3Rfc2ltcGxl ICh3b3JtaG9sZS50ZXN0LnRlc3Rfcmxjb21wbGV0ZXIuQ29tcGxldGlvbikKdGVzdF9zaW1wbGUg Li4uIG9rCnRlc3Rfd2Fybl9yZWFkbGluZSAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVy LkNvbXBsZXRpb24pCnRlc3Rfd2Fybl9yZWFkbGluZSAuLi4gb2sKdGVzdF93cmFwX2Vycm9yICh3 b3JtaG9sZS50ZXN0LnRlc3Rfcmxjb21wbGV0ZXIuQ29tcGxldGlvbikKdGVzdF93cmFwX2Vycm9y IC4uLiBvawp0ZXN0X3dyYXBwZXIgKHdvcm1ob2xlLnRlc3QudGVzdF9ybGNvbXBsZXRlci5JbnB1 dCkKdGVzdF93cmFwcGVyIC4uLiBvawp0ZXN0X2J5dGVzICh3b3JtaG9sZS50ZXN0LnRlc3Rfcmxj b21wbGV0ZXIuU3luYykKdGVzdF9ieXRlcyAuLi4gb2sKdGVzdF9saWJlZGl0ICh3b3JtaG9sZS50 ZXN0LnRlc3Rfcmxjb21wbGV0ZXIuU3luYykKdGVzdF9saWJlZGl0IC4uLiBVbmhhbmRsZWQgZXJy b3IgaW4gRGVmZXJyZWQ6CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv ZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcu c2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF94ZmVy X3V0aWwucHkiLCBsaW5lIDQ5LCBpbiB0ZXN0X21ha2VfY29kZQogICAgZDEgPSB4ZmVyX3V0aWwu c2VuZCgKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTYxMywgaW4gdW53aW5kR2VuZXJhdG9yCiAgICBy ZXR1cm4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdlbikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgMTUyOSwgaW4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzCiAgICBfaW5saW5lQ2FsbGJh Y2tzKE5vbmUsIGcsIHN0YXR1cykKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBn LnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS94ZmVyX3V0aWwucHki LCBsaW5lIDExNiwgaW4gc2VuZAogICAgd2ggPSB3b3JtaG9sZS5jcmVhdGUoYXBwaWQsIHJlbGF5 X3VybCwgcmVhY3RvciwgdG9yPXRvcikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29y bWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxh eV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAi PGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4g X19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwog ICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19i b3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6 dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUg IjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29u bmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0 X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUg ODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNv bm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5l IDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25u ZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9f CiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQw LCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5 Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRp bnMuVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKClVu aGFuZGxlZCBlcnJvciBpbiBEZWZlcnJlZDoKClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAg cmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVz dC90ZXN0X3hmZXJfdXRpbC5weSIsIGxpbmUgMTcsIGluIHRlc3RfeGZlcgogICAgZDIgPSB4ZmVy X3V0aWwucmVjZWl2ZShyZWFjdG9yLCBBUFBJRCwgc2VsZi5yZWxheXVybCwgY29kZSkKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTYxMywgaW4gdW53aW5kR2VuZXJhdG9yCiAgICByZXR1cm4gX2NhbmNl bGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdlbikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUyOSwgaW4g X2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzCiAgICBfaW5saW5lQ2FsbGJhY2tzKE5vbmUsIGcs IHN0YXR1cykKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5Iiwg bGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS94ZmVyX3V0aWwucHkiLCBsaW5lIDQ2LCBp biByZWNlaXZlCiAgICB3aCA9IHdvcm1ob2xlLmNyZWF0ZShhcHBpZCwgcmVsYXlfdXJsLCByZWFj dG9yLCB0b3I9dG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIs IGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBw aWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2Vu ZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwog ICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9i dWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBs aW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVj dG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdl bmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+Iiwg bGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZh aWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4g d2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWls QWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBk b0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29y YXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBs YXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpidWlsdGlucy5UeXBlRXJy b3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKRVJST1IKRVJST1IK dGVzdF9ub19yZWFkbGluZSAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLlN5bmMpCnRl c3Rfbm9fcmVhZGxpbmUgLi4uIG9rCnRlc3RfcmVhZGxpbmUgKHdvcm1ob2xlLnRlc3QudGVzdF9y bGNvbXBsZXRlci5TeW5jKQp0ZXN0X3JlYWRsaW5lIC4uLiBvawp0ZXN0X3JlYWRsaW5lX25vX2Rv Y3N0cmluZyAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLlN5bmMpCnRlc3RfcmVhZGxp bmVfbm9fZG9jc3RyaW5nIC4uLiBvawp0ZXN0X3JlY2VpdmUgKHdvcm1ob2xlLnRlc3QudGVzdF9h cmdzLkNvbmZpZykKdGVzdF9yZWNlaXZlIC4uLiBvawp0ZXN0X3NlbmQgKHdvcm1ob2xlLnRlc3Qu dGVzdF9hcmdzLkNvbmZpZykKdGVzdF9zZW5kIC4uLiBvawp0ZXN0X2FjY2VwdF9maWxlICh3b3Jt aG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X2FjY2VwdF9maWxlIC4uLiBvawp0ZXN0 X2FwcGlkICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X2FwcGlkIC4uLiBv awp0ZXN0X2Jhc2VsaW5lICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X2Jh c2VsaW5lIC4uLiBvawp0ZXN0X2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlJlY2VpdmUp CnRlc3RfY29kZSAuLi4gb2sKdGVzdF9jb2RlX2xlbmd0aCAod29ybWhvbGUudGVzdC50ZXN0X2Fy Z3MuUmVjZWl2ZSkKdGVzdF9jb2RlX2xlbmd0aCAuLi4gb2sKdGVzdF9kdW1wX3RpbWluZyAod29y bWhvbGUudGVzdC50ZXN0X2FyZ3MuUmVjZWl2ZSkKdGVzdF9kdW1wX3RpbWluZyAuLi4gb2sKdGVz dF9oaWRlX3Byb2dyZXNzICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X2hp ZGVfcHJvZ3Jlc3MgLi4uIG9rCnRlc3Rfbm9saXN0ZW4gKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdz LlJlY2VpdmUpCnRlc3Rfbm9saXN0ZW4gLi4uIG9rCnRlc3Rfb25seV90ZXh0ICh3b3JtaG9sZS50 ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X29ubHlfdGV4dCAuLi4gb2sKdGVzdF9vdXRwdXRf ZmlsZSAod29ybWhvbGUudGVzdC50ZXN0X2FyZ3MuUmVjZWl2ZSkKdGVzdF9vdXRwdXRfZmlsZSAu Li4gb2sKdGVzdF9yZWxheV9lbnZfdmFyICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZl KQp0ZXN0X3JlbGF5X2Vudl92YXIgLi4uIG9rCnRlc3RfdG9yICh3b3JtaG9sZS50ZXN0LnRlc3Rf YXJncy5SZWNlaXZlKQp0ZXN0X3RvciAuLi4gb2sKdGVzdF90cmFuc2l0X2Vudl92YXIgKHdvcm1o b2xlLnRlc3QudGVzdF9hcmdzLlJlY2VpdmUpCnRlc3RfdHJhbnNpdF9lbnZfdmFyIC4uLiBvawp0 ZXN0X3ZlcmlmeSAod29ybWhvbGUudGVzdC50ZXN0X2FyZ3MuUmVjZWl2ZSkKdGVzdF92ZXJpZnkg Li4uIG9rCnRlc3RfemVyb21vZGUgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlJlY2VpdmUpCnRl c3RfemVyb21vZGUgLi4uIG9rCnRlc3RfYXBwaWQgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlNl bmQpCnRlc3RfYXBwaWQgLi4uIG9rCnRlc3RfYmFzZWxpbmUgKHdvcm1ob2xlLnRlc3QudGVzdF9h cmdzLlNlbmQpCnRlc3RfYmFzZWxpbmUgLi4uIG9rCnRlc3RfY29kZSAod29ybWhvbGUudGVzdC50 ZXN0X2FyZ3MuU2VuZCkKdGVzdF9jb2RlIC4uLiBvawp0ZXN0X2NvZGVfbGVuZ3RoICh3b3JtaG9s ZS50ZXN0LnRlc3RfYXJncy5TZW5kKQp0ZXN0X2NvZGVfbGVuZ3RoIC4uLiBvawp0ZXN0X2R1bXBf dGltaW5nICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5TZW5kKQp0ZXN0X2R1bXBfdGltaW5nIC4u LiBvawp0ZXN0X2ZpbGUgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlNlbmQpCnRlc3RfZmlsZSAu Li4gb2sKdGVzdF9oaWRlX3Byb2dyZXNzICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5TZW5kKQp0 ZXN0X2hpZGVfcHJvZ3Jlc3MgLi4uIG9rCnRlc3Rfbm9saXN0ZW4gKHdvcm1ob2xlLnRlc3QudGVz dF9hcmdzLlNlbmQpCnRlc3Rfbm9saXN0ZW4gLi4uIG9rCnRlc3RfcmVsYXlfZW52X3ZhciAod29y bWhvbGUudGVzdC50ZXN0X2FyZ3MuU2VuZCkKdGVzdF9yZWxheV9lbnZfdmFyIC4uLiBvawp0ZXN0 X3RleHQgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlNlbmQpCnRlc3RfdGV4dCAuLi4gb2sKdGVz dF90b3IgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlNlbmQpCnRlc3RfdG9yIC4uLiBvawp0ZXN0 X3RyYW5zaXRfZW52X3ZhciAod29ybWhvbGUudGVzdC50ZXN0X2FyZ3MuU2VuZCkKdGVzdF90cmFu c2l0X2Vudl92YXIgLi4uIG9rCnRlc3RfdmVyaWZ5ICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5T ZW5kKQp0ZXN0X3ZlcmlmeSAuLi4gb2sKdGVzdF96ZXJvbW9kZSAod29ybWhvbGUudGVzdC50ZXN0 X2FyZ3MuU2VuZCkKdGVzdF96ZXJvbW9kZSAuLi4gb2sKdGVzdF9pbW1lZGlhdGUgKHdvcm1ob2xl LnRlc3QudGVzdF9qb3VybmFsLkpvdXJuYWwpCnRlc3RfaW1tZWRpYXRlIC4uLiBvawp0ZXN0X2pv dXJuYWwgKHdvcm1ob2xlLnRlc3QudGVzdF9qb3VybmFsLkpvdXJuYWwpCnRlc3Rfam91cm5hbCAu Li4gb2sKdGVzdF90b3IgKHdvcm1ob2xlLnRlc3QudGVzdF90b3JfbWFuYWdlci5Tb2Nrc09ubHkp CnRlc3RfdG9yIC4uLiBvawp0ZXN0X2JhZF9hcmdzICh3b3JtaG9sZS50ZXN0LnRlc3RfdG9yX21h bmFnZXIuVG9yKQp0ZXN0X2JhZF9hcmdzIC4uLiBvawp0ZXN0X2Nvbm5lY3QgKHdvcm1ob2xlLnRl c3QudGVzdF90b3JfbWFuYWdlci5Ub3IpCnRlc3RfY29ubmVjdCAuLi4gb2sKdGVzdF9jb25uZWN0 X2N1c3RvbV9jb250cm9sX3BvcnQgKHdvcm1ob2xlLnRlc3QudGVzdF90b3JfbWFuYWdlci5Ub3Ip CnRlc3RfY29ubmVjdF9jdXN0b21fY29udHJvbF9wb3J0IC4uLiBvawp0ZXN0X2Nvbm5lY3RfY3Vz dG9tX2NvbnRyb2xfcG9ydF9mYWlscyAod29ybWhvbGUudGVzdC50ZXN0X3Rvcl9tYW5hZ2VyLlRv cikKdGVzdF9jb25uZWN0X2N1c3RvbV9jb250cm9sX3BvcnRfZmFpbHMgLi4uIG9rCnRlc3RfY29u bmVjdF9mYWlscyAod29ybWhvbGUudGVzdC50ZXN0X3Rvcl9tYW5hZ2VyLlRvcikKdGVzdF9jb25u ZWN0X2ZhaWxzIC4uLiBvawp0ZXN0X2xhdW5jaCAod29ybWhvbGUudGVzdC50ZXN0X3Rvcl9tYW5h Z2VyLlRvcikKdGVzdF9sYXVuY2ggLi4uIG9rCnRlc3Rfbm9fdHh0b3Jjb24gKHdvcm1ob2xlLnRl c3QudGVzdF90b3JfbWFuYWdlci5Ub3IpCnRlc3Rfbm9fdHh0b3Jjb24gLi4uIG9rCnRlc3RfZW5j b2RlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3BhcnNlLlBhcnNlKQp0ZXN0X2VuY29kZSAu Li4gb2sKdGVzdF9wYXJzZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9wYXJzZS5QYXJzZSkK dGVzdF9wYXJzZSAuLi4gb2sKdGVzdF9iZTQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5j b2RpbmcuRW5jb2RpbmcpCnRlc3RfYmU0IC4uLiBvawp0ZXN0X2Vhcmx5X2ZhaWwgKHdvcm1ob2xl LnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9pbnRzLkNvbm5lY3RvcikKdGVzdF9lYXJseV9mYWlsIC4u LiBvawp0ZXN0X2Vhcmx5X3N1Y2NlZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9p bnRzLkNvbm5lY3RvcikKdGVzdF9lYXJseV9zdWNjZWVkIC4uLiBvawp0ZXN0X2xhdGVfZmFpbCAo d29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9lbmRwb2ludHMuQ29ubmVjdG9yKQp0ZXN0X2xhdGVf ZmFpbCAuLi4gb2sKdGVzdF9sYXRlX3N1Y2NlZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rf ZW5kcG9pbnRzLkNvbm5lY3RvcikKdGVzdF9sYXRlX3N1Y2NlZWQgLi4uIG9rCnRlc3RfZWFybHlf ZmFpbCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9lbmRwb2ludHMuQ29udHJvbCkKdGVzdF9l YXJseV9mYWlsIC4uLiBvawp0ZXN0X2Vhcmx5X3N1Y2NlZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRl LnRlc3RfZW5kcG9pbnRzLkNvbnRyb2wpCnRlc3RfZWFybHlfc3VjY2VlZCAuLi4gb2sKdGVzdF9s YXRlX2ZhaWwgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9pbnRzLkNvbnRyb2wpCnRl c3RfbGF0ZV9mYWlsIC4uLiBvawp0ZXN0X2xhdGVfc3VjY2VlZCAod29ybWhvbGUudGVzdC5kaWxh dGUudGVzdF9lbmRwb2ludHMuQ29udHJvbCkKdGVzdF9sYXRlX3N1Y2NlZWQgLi4uIG9rCnJ1blRl c3QgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9pbnRzLkVuZHBvaW50cykKSWYgbm8g Q3ttZXRob2ROYW1lfSBhcmd1bWVudCBpcyBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCBMe3J1 bn0gd2lsbCAuLi4gb2sKdGVzdF9lYXJseV9mYWlsICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2VuZHBvaW50cy5MaXN0ZW5lcikKdGVzdF9lYXJseV9mYWlsIC4uLiBvawp0ZXN0X2Vhcmx5X3N1 Y2NlZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9pbnRzLkxpc3RlbmVyKQp0ZXN0 X2Vhcmx5X3N1Y2NlZWQgLi4uIG9rCnRlc3RfbGF0ZV9mYWlsICh3b3JtaG9sZS50ZXN0LmRpbGF0 ZS50ZXN0X2VuZHBvaW50cy5MaXN0ZW5lcikKdGVzdF9sYXRlX2ZhaWwgLi4uIG9rCnRlc3RfbGF0 ZV9zdWNjZWVkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2VuZHBvaW50cy5MaXN0ZW5lcikK dGVzdF9sYXRlX3N1Y2NlZWQgLi4uIG9rCnRlc3RfZGVzY3JpYmVfaW5ib3VuZCAod29ybWhvbGUu dGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuRGVzY3JpYmUpCnRlc3RfZGVzY3JpYmVfaW5ib3Vu ZCAuLi4gb2sKdGVzdF9idWlsZCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3Iu SGFuZHNoYWtlKQp0ZXN0X2J1aWxkIC4uLiBvawp0ZXN0X2J1aWxkICh3b3JtaG9sZS50ZXN0LmRp bGF0ZS50ZXN0X2Nvbm5lY3Rvci5JbmJvdW5kKQp0ZXN0X2J1aWxkIC4uLiBvawp0ZXN0X25vX3Jl bGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5PdXRib3VuZCkKdGVzdF9u b19yZWxheSAuLi4gb2sKdGVzdF93aXRoX3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Nvbm5lY3Rvci5PdXRib3VuZCkKdGVzdF93aXRoX3JlbGF5IC4uLiBvawp0ZXN0X2xhdGUgKHdv cm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlJhY2UpCnRlc3RfbGF0ZSAuLi4gRVJS T1IKdGVzdF9vbmVfZm9sbG93ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9y LlJhY2UpCnRlc3Rfb25lX2ZvbGxvd2VyIC4uLiBFUlJPUgp0ZXN0X29uZV9sZWFkZXIgKHdvcm1o b2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlJhY2UpCnRlc3Rfb25lX2xlYWRlciAuLi4g RVJST1IKdGVzdF9zdG9wICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5SYWNl KQp0ZXN0X3N0b3AgLi4uIEVSUk9SCnRlc3RfYWRkX3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0 ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X2FkZF9yZWxheSAuLi4gRVJST1IK dGVzdF9iYXNpYyAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5l Y3RvcikKdGVzdF9iYXNpYyAuLi4gRVJST1IKdGVzdF9idWlsZCAod29ybWhvbGUudGVzdC5kaWxh dGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9idWlsZCAuLi4gb2sKdGVzdF9i dWlsZF9ub2lzZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5l Y3RvcikKdGVzdF9idWlsZF9ub2lzZSAuLi4gc2tpcHBlZCAnbm9pc2Vwcm90b2NvbCB1bmF2YWls YWJsZScKdGVzdF9idWlsZF9wcm90b2NvbF9mb2xsb3dlciAod29ybWhvbGUudGVzdC5kaWxhdGUu dGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9idWlsZF9wcm90b2NvbF9mb2xsb3dl ciAuLi4gb2sKdGVzdF9idWlsZF9wcm90b2NvbF9sZWFkZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRl LnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3RfYnVpbGRfcHJvdG9jb2xfbGVhZGVy IC4uLiBvawp0ZXN0X2Nvbm5lY3Rpb25fYWJpbGl0aWVzICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50 ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X2Nvbm5lY3Rpb25fYWJpbGl0aWVzIC4u LiBvawp0ZXN0X2VtcHR5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0 Q29ubmVjdG9yKQp0ZXN0X2VtcHR5IC4uLiBFUlJPUgp0ZXN0X2luaXRpYWxfcmVsYXkgKHdvcm1o b2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3RfaW5pdGlh bF9yZWxheSAuLi4gb2sKdGVzdF9saXN0ZW4gKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29u bmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3RfbGlzdGVuIC4uLiBvawp0ZXN0X2xpc3Rlbl9hZGRy ZXNzZXMgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3Ip CnRlc3RfbGlzdGVuX2FkZHJlc3NlcyAuLi4gb2sKdGVzdF9saXN0ZW5fYnV0X3RvciAod29ybWhv bGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9saXN0ZW5f YnV0X3RvciAuLi4gb2sKdGVzdF9ub19saXN0ZW4gKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rf Y29ubmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3Rfbm9fbGlzdGVuIC4uLiBvawp0ZXN0X3ByaW9y aXRpZXMgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3Ip CnRlc3RfcHJpb3JpdGllcyAuLi4gb2sKdGVzdF9yZWxheV9kZWxheSAod29ybWhvbGUudGVzdC5k aWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9yZWxheV9kZWxheSAuLi4g RVJST1IKdGVzdF9zY2hlZHVsZV9jb25uZWN0aW9uX25vX3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRp bGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X3NjaGVkdWxlX2Nvbm5lY3Rp b25fbm9fcmVsYXkgLi4uIG9rCnRlc3Rfc2NoZWR1bGVfY29ubmVjdGlvbl9yZWxheSAod29ybWhv bGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9zY2hlZHVs ZV9jb25uZWN0aW9uX3JlbGF5IC4uLiBvawp0ZXN0X3N0YXJ0X2xpc3RlbiAod29ybWhvbGUudGVz dC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9zdGFydF9saXN0ZW4g Li4uIFVuaGFuZGxlZCBFcnJvcgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0b3IucHkiLCBsaW5lIDIxOSwgaW4gdGVzdF9zdGFydF9saXN0ZW4K ICAgIGQuY2FsbGJhY2sobHApCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDQ2MCwgaW4gY2FsbGJhY2sK ICAgIHNlbGYuX3N0YXJ0UnVuQ2FsbGJhY2tzKHJlc3VsdCkKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUg NTY4LCBpbiBfc3RhcnRSdW5DYWxsYmFja3MKICAgIHNlbGYuX3J1bkNhbGxiYWNrcygpCi0tLSA8 ZXhjZXB0aW9uIGNhdWdodCBoZXJlPiAtLS0KICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgNjU0LCBpbiBf cnVuQ2FsbGJhY2tzCiAgICBjdXJyZW50LnJlc3VsdCA9IGNhbGxiYWNrKGN1cnJlbnQucmVzdWx0 LCAqYXJncywgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nv bm5lY3Rvci5weSIsIGxpbmUgMzA1LCBpbiBfbGlzdGVuaW5nCiAgICBzZWxmLmxpc3RlbmVyX3Jl YWR5KGRpcmVjdF9oaW50cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRl ZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRl Y29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRl bXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpidWlsdGlucy5UeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKRkFJTApFUlJP Ugp0ZXN0X3N0YXJ0X3N0b3AgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlRl c3RDb25uZWN0b3IpCnRlc3Rfc3RhcnRfc3RvcCAuLi4gRVJST1IKdGVzdF90b3Jfbm9fbWFuYWdl ciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVz dF90b3Jfbm9fbWFuYWdlciAuLi4gRVJST1IKdGVzdF90b3Jfd2l0aF9tYW5hZ2VyICh3b3JtaG9s ZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X3Rvcl93aXRo X21hbmFnZXIgLi4uIEVSUk9SCnRlc3QxICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5l Y3QuQ29ubmVjdCkKdGVzdDEgLi4uIHNraXBwZWQgJ25vaXNlcHJvdG9jb2wgdW5hdmFpbGFibGUn CnRlc3RfYmFkX3Byb2xvZ3VlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rpb24u Q29ubmVjdGlvbikKdGVzdF9iYWRfcHJvbG9ndWUgLi4uIFVuaGFuZGxlZCBFcnJvcgpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4g bWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCph LCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nv bm5lY3Rpb24ucHkiLCBsaW5lIDM4LCBpbiB0ZXN0X2JhZF9wcm9sb2d1ZQogICAgYy5tYWtlQ29u bmVjdGlvbih0KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9u CiAgICBzZWxmLmNvbm5lY3Rpb25NYWRlKCkKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0t LQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIs IGxpbmUgNTk0LCBpbiBjb25uZWN0aW9uTWFkZQogICAgc2VsZi5fcmVjb3JkLnNldF9yb2xlX2xl YWRlcigpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBp bnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3RfZm9s bG93ZXJfY29tYmluZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25u ZWN0aW9uKQp0ZXN0X2ZvbGxvd2VyX2NvbWJpbmVkIC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2Vi YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGlu IG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHki LCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigq YSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9j b25uZWN0aW9uLnB5IiwgbGluZSAyNDgsIGluIHRlc3RfZm9sbG93ZXJfY29tYmluZWQKICAgIGMu bWFrZUNvbm5lY3Rpb24odCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9wcm90b2NvbC5weSIsIGxpbmUgNTE0LCBpbiBtYWtlQ29u bmVjdGlvbgogICAgc2VsZi5jb25uZWN0aW9uTWFkZSgpCi0tLSA8ZXhjZXB0aW9uIGNhdWdodCBo ZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rp b24ucHkiLCBsaW5lIDU5NiwgaW4gY29ubmVjdGlvbk1hZGUKICAgIHNlbGYuX3JlY29yZC5zZXRf cm9sZV9mb2xsb3dlcigpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYg ZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNv cmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBs aW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1w bGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVy cm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9S CnRlc3RfaGFzaGFibGUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25u ZWN0aW9uKQp0ZXN0X2hhc2hhYmxlIC4uLiBvawp0ZXN0X25vX3JlbGF5X2ZvbGxvd2VyICh3b3Jt aG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9ub19yZWxh eV9mb2xsb3dlciAuLi4gVW5oYW5kbGVkIEVycm9yClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDE4MywgaW4gdGVzdF9u b19yZWxheV9mb2xsb3dlcgogICAgcmV0dXJuIHNlbGYuX3Rlc3Rfbm9fcmVsYXkoRk9MTE9XRVIp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdGlv bi5weSIsIGxpbmUgNjksIGluIF90ZXN0X25vX3JlbGF5CiAgICBjLm1ha2VDb25uZWN0aW9uKHQp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50 ZXJuZXQvcHJvdG9jb2wucHkiLCBsaW5lIDUxNCwgaW4gbWFrZUNvbm5lY3Rpb24KICAgIHNlbGYu Y29ubmVjdGlvbk1hZGUoKQotLS0gPGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9jb25uZWN0aW9uLnB5IiwgbGluZSA1OTYs IGluIGNvbm5lY3Rpb25NYWRlCiAgICBzZWxmLl9yZWNvcmQuc2V0X3JvbGVfZm9sbG93ZXIoKQog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhv ZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoq a3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4g Y29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1 bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNv ZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUK ICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpCmJ1aWx0aW5zLlR5cGVFcnJvcjogYW4gaW50ZWdlciBp cyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgpFUlJPUgpFUlJPUgp0ZXN0X25vX3JlbGF5X2xl YWRlciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0aW9uLkNvbm5lY3Rpb24pCnRl c3Rfbm9fcmVsYXlfbGVhZGVyIC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdGlvbi5weSIsIGxpbmUgMTgwLCBp biB0ZXN0X25vX3JlbGF5X2xlYWRlcgogICAgcmV0dXJuIHNlbGYuX3Rlc3Rfbm9fcmVsYXkoTEVB REVSKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5l Y3Rpb24ucHkiLCBsaW5lIDY5LCBpbiBfdGVzdF9ub19yZWxheQogICAgYy5tYWtlQ29ubmVjdGlv bih0KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBz ZWxmLmNvbm5lY3Rpb25NYWRlKCkKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIsIGxpbmUg NTk0LCBpbiBjb25uZWN0aW9uTWFkZQogICAgc2VsZi5fcmVjb3JkLnNldF9yb2xlX2xlYWRlcigp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3RfcmVsYXkgKHdv cm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25uZWN0aW9uKQp0ZXN0X3JlbGF5 IC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVy bmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYo KmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdz U3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5IiwgbGluZSAxODgsIGluIHRl c3RfcmVsYXkKICAgIGMubWFrZUNvbm5lY3Rpb24odCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9wcm90b2NvbC5weSIsIGxpbmUg NTE0LCBpbiBtYWtlQ29ubmVjdGlvbgogICAgc2VsZi5jb25uZWN0aW9uTWFkZSgpCi0tLSA8ZXhj ZXB0aW9uIGNhdWdodCBoZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Rp bGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5MSwgaW4gY29ubmVjdGlvbk1hZGUKICAgIGZy YW1lci51c2VfcmVsYXkoc2VsZi5fcmVsYXlfaGFuZHNoYWtlKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIz NCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29y YXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4g ZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2 YWx1ZXMpCmJ1aWx0aW5zLlR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5 cGUgYnl0ZXMpCgpFUlJPUgpFUlJPUgp0ZXN0X3JlbGF5X2JhZF9yZXNwb25zZSAod29ybWhvbGUu dGVzdC5kaWxhdGUudGVzdF9jb25uZWN0aW9uLkNvbm5lY3Rpb24pCnRlc3RfcmVsYXlfYmFkX3Jl c3BvbnNlIC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5IiwgbGluZSAyMjQs IGluIHRlc3RfcmVsYXlfYmFkX3Jlc3BvbnNlCiAgICBjLm1ha2VDb25uZWN0aW9uKHQpCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv cHJvdG9jb2wucHkiLCBsaW5lIDUxNCwgaW4gbWFrZUNvbm5lY3Rpb24KICAgIHNlbGYuY29ubmVj dGlvbk1hZGUoKQotLS0gPGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9jb25uZWN0aW9uLnB5IiwgbGluZSA1OTEsIGluIGNv bm5lY3Rpb25NYWRlCiAgICBmcmFtZXIudXNlX3JlbGF5KHNlbGYuX3JlbGF5X2hhbmRzaGFrZSkK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRo b2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAq Kmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJu IGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlm dW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBj b2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2Rl CiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpidWlsdGlucy5UeXBlRXJyb3I6IGFuIGludGVnZXIg aXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKRVJST1IKRVJST1IKdGVzdF9yZWxheV9qaWx0 ZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25uZWN0aW9uKQp0ZXN0 X3JlbGF5X2ppbHRlZCAuLi4gVW5oYW5kbGVkIEVycm9yClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdGlvbi5weSIsIGxp bmUgMjExLCBpbiB0ZXN0X3JlbGF5X2ppbHRlZAogICAgYy5tYWtlQ29ubmVjdGlvbih0KQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBzZWxmLmNvbm5l Y3Rpb25NYWRlKCkKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIsIGxpbmUgNTkxLCBpbiBj b25uZWN0aW9uTWFkZQogICAgZnJhbWVyLnVzZV9yZWxheShzZWxmLl9yZWxheV9oYW5kc2hha2Up CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3RfY29udHJvbF9j aGFubmVsICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2luYm91bmQuSW5ib3VuZFRlc3QpCnRl c3RfY29udHJvbF9jaGFubmVsIC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOgpGYWlsdXJlOiB3b3JtaG9sZS5fZGlsYXRpb24uaW5ib3VuZC5EdXBs aWNhdGVPcGVuRXJyb3I6IHJlY2VpdmVkIGR1cGxpY2F0ZSBPUEVOIGZvciBiJ3NjaWQnCgpvawp0 ZXN0X29wZW5fZGF0YV9jbG9zZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9pbmJvdW5kLklu Ym91bmRUZXN0KQp0ZXN0X29wZW5fZGF0YV9jbG9zZSAuLi4gVW5oYW5kbGVkIEVycm9yClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKRmFpbHVyZTogd29ybWhvbGUuX2RpbGF0aW9u LmluYm91bmQuRHVwbGljYXRlT3BlbkVycm9yOiByZWNlaXZlZCBkdXBsaWNhdGUgT1BFTiBmb3Ig YidzY2lkJwoKVW5oYW5kbGVkIEVycm9yClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKRmFpbHVyZTogd29ybWhvbGUuX2RpbGF0aW9uLmluYm91bmQuRGF0YUZvck1pc3NpbmdTdWJj aGFubmVsRXJyb3I6IHJlY2VpdmVkIERBVEEgZm9yIG5vbi1leGlzdGVudCBzdWJjaGFubmVsIGIn c2NYWCcKClVuaGFuZGxlZCBFcnJvcgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6 CkZhaWx1cmU6IHdvcm1ob2xlLl9kaWxhdGlvbi5pbmJvdW5kLkNsb3NlRm9yTWlzc2luZ1N1YmNo YW5uZWxFcnJvcjogcmVjZWl2ZWQgQ0xPU0UgZm9yIG5vbi1leGlzdGVudCBzdWJjaGFubmVsIGIn c2NYWCcKCm9rCnRlc3RfcGF1c2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfaW5ib3VuZC5J bmJvdW5kVGVzdCkKdGVzdF9wYXVzZSAuLi4gb2sKdGVzdF9zZXFudW0gKHdvcm1ob2xlLnRlc3Qu ZGlsYXRlLnRlc3RfaW5ib3VuZC5JbmJvdW5kVGVzdCkKdGVzdF9zZXFudW0gLi4uIG9rCnRlc3Rf YnVpbGRfcmVjb3JkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91dGJvdW5k VGVzdCkKdGVzdF9idWlsZF9yZWNvcmQgLi4uIG9rCnRlc3RfY29ubmVjdGlvbl9zZW5kX3F1ZXVl ZF9wYXVzZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuT3V0Ym91bmRUZXN0 KQp0ZXN0X2Nvbm5lY3Rpb25fc2VuZF9xdWV1ZWRfcGF1c2VkIC4uLiBvawp0ZXN0X2Nvbm5lY3Rp b25fc2VuZF9xdWV1ZWRfdW5wYXVzZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91 bmQuT3V0Ym91bmRUZXN0KQp0ZXN0X2Nvbm5lY3Rpb25fc2VuZF9xdWV1ZWRfdW5wYXVzZWQgLi4u IG9rCnRlc3RfZGlzY29ubmVjdCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9vdXRib3VuZC5P dXRib3VuZFRlc3QpCnRlc3RfZGlzY29ubmVjdCAuLi4gb2sKdGVzdF9kdXBsaWNhdGVfcmVnaXN0 ZXJQcm9kdWNlciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9vdXRib3VuZC5PdXRib3VuZFRl c3QpCnRlc3RfZHVwbGljYXRlX3JlZ2lzdGVyUHJvZHVjZXIgLi4uIG9rCnRlc3Rfb3V0Ym91bmRf cXVldWUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuT3V0Ym91bmRUZXN0KQp0 ZXN0X291dGJvdW5kX3F1ZXVlIC4uLiBvawp0ZXN0X3BhdXNlICh3b3JtaG9sZS50ZXN0LmRpbGF0 ZS50ZXN0X291dGJvdW5kLk91dGJvdW5kVGVzdCkKdGVzdF9wYXVzZSAuLi4gb2sKdGVzdF9wcmVt cHRpdmVfYWNrICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91dGJvdW5kVGVz dCkKdGVzdF9wcmVtcHRpdmVfYWNrIC4uLiBvawp0ZXN0X3B1bGxfcHJvZHVjZXIgKHdvcm1ob2xl LnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuT3V0Ym91bmRUZXN0KQp0ZXN0X3B1bGxfcHJvZHVj ZXIgLi4uIG9rCnRlc3RfcmVzdW1lX2Vycm9yICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291 dGJvdW5kLk91dGJvdW5kVGVzdCkKdGVzdF9yZXN1bWVfZXJyb3IgLi4uIDxNb2NrIG5hbWU9J3Ax JyBpZD0nMTQwNzM3MzAxMzIxNjY0Jz4gZmFpbGVkLCBwcm9kdWNpbmcgd2lsbCBiZSBzdG9wcGVk OgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUg ODI1LCBpbiBhZHZhbmNlCiAgICBjYWxsLmZ1bmMoKmNhbGwuYXJncywgKipjYWxsLmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9ldmVudHVhbC5weSIsIGxpbmUgMzEsIGluIF90dXJu CiAgICBmKCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGluZSA2NzEsIGluIF90aWNr CiAgICB0YXNrT2JqLl9vbmVXb3JrVW5pdCgpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUgNTE3LCBpbiBf b25lV29ya1VuaXQKICAgIHJlc3VsdCA9IG5leHQoc2VsZi5faXRlcmF0b3IpCi0tLSA8ZXhjZXB0 aW9uIGNhdWdodCBoZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0 aW9uL291dGJvdW5kLnB5IiwgbGluZSAzNTMsIGluIF9wdWxsCiAgICBzZWxmLl9wcm9kdWNlci5y ZXN1bWVQcm9kdWNpbmcoKQogIEZpbGUgIi9nbnUvc3RvcmUvZHBqdjRseGJ2OHJiZDRpbHBicG03 dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L21vY2svbW9jay5weSIsIGxpbmUgMTA5MiwgaW4gX19jYWxsX18KICAgIHJldHVybiBfbW9ja19z ZWxmLl9tb2NrX2NhbGwoKmFyZ3MsICoqa3dhcmdzKQogIEZpbGUgIi9nbnUvc3RvcmUvZHBqdjRs eGJ2OHJiZDRpbHBicG03dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL21vY2svbW9jay5weSIsIGxpbmUgMTE0MywgaW4gX21vY2tfY2FsbAog ICAgcmFpc2UgZWZmZWN0Cndvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuUHJldGVu ZFJlc3VtcHRpb25FcnJvcjogCgpvawp0ZXN0X3NlbmRfaWZfY29ubmVjdGVkICh3b3JtaG9sZS50 ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91dGJvdW5kVGVzdCkKdGVzdF9zZW5kX2lmX2Nvbm5l Y3RlZCAuLi4gb2sKdGVzdF9zdG9wUHJvZHVjaW5nICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X291dGJvdW5kLk91dGJvdW5kVGVzdCkKdGVzdF9zdG9wUHJvZHVjaW5nIC4uLiBvawp0ZXN0X3N1 YmNoYW5uZWxfY2xvc2VkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91dGJv dW5kVGVzdCkKdGVzdF9zdWJjaGFubmVsX2Nsb3NlZCAuLi4gb2sKdGVzdF90b2xlcmF0ZV9kdXBs aWNhdGVfcGF1c2VfcmVzdW1lICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91 dGJvdW5kVGVzdCkKdGVzdF90b2xlcmF0ZV9kdXBsaWNhdGVfcGF1c2VfcmVzdW1lIC4uLiBvawp0 ZXN0X3R3b19wdWxsX3Byb2R1Y2VycyAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9vdXRib3Vu ZC5PdXRib3VuZFRlc3QpCnRlc3RfdHdvX3B1bGxfcHJvZHVjZXJzIC4uLiBvawp0ZXN0X2Vycm9y ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLlB1c2hQdWxsKQp0ZXN0X2Vycm9y IC4uLiA8TW9jayBpZD0nMTQwNzM3Mjk5OTcyNDAwJz4gZmFpbGVkLCBwcm9kdWNpbmcgd2lsbCBi ZSBzdG9wcGVkOgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5w eSIsIGxpbmUgODI1LCBpbiBhZHZhbmNlCiAgICBjYWxsLmZ1bmMoKmNhbGwuYXJncywgKipjYWxs Lmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9ldmVudHVhbC5weSIsIGxpbmUgMzEs IGluIF90dXJuCiAgICBmKCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGluZSA2NzEs IGluIF90aWNrCiAgICB0YXNrT2JqLl9vbmVXb3JrVW5pdCgpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUg NTE3LCBpbiBfb25lV29ya1VuaXQKICAgIHJlc3VsdCA9IG5leHQoc2VsZi5faXRlcmF0b3IpCi0t LSA8ZXhjZXB0aW9uIGNhdWdodCBoZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2RpbGF0aW9uL291dGJvdW5kLnB5IiwgbGluZSAzNTMsIGluIF9wdWxsCiAgICBzZWxmLl9w cm9kdWNlci5yZXN1bWVQcm9kdWNpbmcoKQogIEZpbGUgIi9nbnUvc3RvcmUvZHBqdjRseGJ2OHJi ZDRpbHBicG03dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL21vY2svbW9jay5weSIsIGxpbmUgMTA5MiwgaW4gX19jYWxsX18KICAgIHJldHVy biBfbW9ja19zZWxmLl9tb2NrX2NhbGwoKmFyZ3MsICoqa3dhcmdzKQogIEZpbGUgIi9nbnUvc3Rv cmUvZHBqdjRseGJ2OHJiZDRpbHBicG03dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL21vY2svbW9jay5weSIsIGxpbmUgMTE0OSwgaW4gX21v Y2tfY2FsbAogICAgcmVzdWx0ID0gZWZmZWN0KCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9vdXRib3VuZC5weSIsIGxpbmUgNTg0 LCBpbiA8bGFtYmRhPgogICAgcC5yZXN1bWVQcm9kdWNpbmcuc2lkZV9lZmZlY3QgPSBsYW1iZGE6 IGFjdGlvbihuZXh0KGl0KSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxh dGUvdGVzdF9vdXRib3VuZC5weSIsIGxpbmUgNTgxLCBpbiBhY3Rpb24KICAgIHJhaXNlIGkKd29y bWhvbGUudGVzdC5kaWxhdGUudGVzdF9vdXRib3VuZC5QcmV0ZW5kUmVzdW1wdGlvbkVycm9yOiAK Cm9rCnRlc3RfZXJyb3JfZHVyaW5nX3VucmVnaXN0ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRl c3Rfb3V0Ym91bmQuUHVzaFB1bGwpCnRlc3RfZXJyb3JfZHVyaW5nX3VucmVnaXN0ZXIgLi4uIDxN b2NrIGlkPScxNDA3MzczMDAwMzY5MTInPiBmYWlsZWQsIHByb2R1Y2luZyB3aWxsIGJlIHN0b3Bw ZWQ6ClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGlu ZSA4MjUsIGluIGFkdmFuY2UKICAgIGNhbGwuZnVuYygqY2FsbC5hcmdzLCAqKmNhbGwua3cpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2V2ZW50dWFsLnB5IiwgbGluZSAzMSwgaW4gX3R1 cm4KICAgIGYoKmFyZ3MsICoqa3dhcmdzKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3Rhc2sucHkiLCBsaW5lIDY3MSwgaW4gX3Rp Y2sKICAgIHRhc2tPYmouX29uZVdvcmtVbml0KCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGluZSA1MTcsIGlu IF9vbmVXb3JrVW5pdAogICAgcmVzdWx0ID0gbmV4dChzZWxmLl9pdGVyYXRvcikKLS0tIDxleGNl cHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGls YXRpb24vb3V0Ym91bmQucHkiLCBsaW5lIDM1MywgaW4gX3B1bGwKICAgIHNlbGYuX3Byb2R1Y2Vy LnJlc3VtZVByb2R1Y2luZygpCiAgRmlsZSAiL2dudS9zdG9yZS9kcGp2NGx4YnY4cmJkNGlscGJw bTd3OGJ6NjBuNGJxcS1weXRob24tbW9jay0zLjAuNS9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvbW9jay9tb2NrLnB5IiwgbGluZSAxMDkyLCBpbiBfX2NhbGxfXwogICAgcmV0dXJuIF9tb2Nr X3NlbGYuX21vY2tfY2FsbCgqYXJncywgKiprd2FyZ3MpCiAgRmlsZSAiL2dudS9zdG9yZS9kcGp2 NGx4YnY4cmJkNGlscGJwbTd3OGJ6NjBuNGJxcS1weXRob24tbW9jay0zLjAuNS9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvbW9jay9tb2NrLnB5IiwgbGluZSAxMTQ5LCBpbiBfbW9ja19jYWxs CiAgICByZXN1bHQgPSBlZmZlY3QoKmFyZ3MsICoqa3dhcmdzKQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X291dGJvdW5kLnB5IiwgbGluZSA1ODQsIGluIDxs YW1iZGE+CiAgICBwLnJlc3VtZVByb2R1Y2luZy5zaWRlX2VmZmVjdCA9IGxhbWJkYTogYWN0aW9u KG5leHQoaXQpKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0 X291dGJvdW5kLnB5IiwgbGluZSA1ODEsIGluIGFjdGlvbgogICAgcmFpc2UgaQp3b3JtaG9sZS50 ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLlByZXRlbmRSZXN1bXB0aW9uRXJyb3I6IAoKPE1vY2sg aWQ9JzE0MDczNzMwMDAzNTEzNic+IGZhaWxlZCB0byB1bnJlZ2lzdGVyIHByb2R1Y2VyOgpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUgODI1LCBp biBhZHZhbmNlCiAgICBjYWxsLmZ1bmMoKmNhbGwuYXJncywgKipjYWxsLmt3KQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9ldmVudHVhbC5weSIsIGxpbmUgMzEsIGluIF90dXJuCiAgICBm KCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGluZSA2NzEsIGluIF90aWNrCiAgICB0 YXNrT2JqLl9vbmVXb3JrVW5pdCgpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUgNTE3LCBpbiBfb25lV29y a1VuaXQKICAgIHJlc3VsdCA9IG5leHQoc2VsZi5faXRlcmF0b3IpCi0tLSA8ZXhjZXB0aW9uIGNh dWdodCBoZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL291 dGJvdW5kLnB5IiwgbGluZSAzNTgsIGluIF9wdWxsCiAgICBzZWxmLl91bnJlZ2lzdGVyKCkKICBG aWxlICIvZ251L3N0b3JlL2RwanY0bHhidjhyYmQ0aWxwYnBtN3c4Yno2MG40YnFxLXB5dGhvbi1t b2NrLTMuMC41L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9tb2NrL21vY2sucHkiLCBsaW5l IDEwOTIsIGluIF9fY2FsbF9fCiAgICByZXR1cm4gX21vY2tfc2VsZi5fbW9ja19jYWxsKCphcmdz LCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL2RwanY0bHhidjhyYmQ0aWxwYnBtN3c4Yno2 MG40YnFxLXB5dGhvbi1tb2NrLTMuMC41L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9tb2Nr L21vY2sucHkiLCBsaW5lIDExNDMsIGluIF9tb2NrX2NhbGwKICAgIHJhaXNlIGVmZmVjdAp3b3Jt aG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLlByZXRlbmRVbnJlZ2lzdGVyRXJyb3I6IAoK b2sKdGVzdF9zdGFydF9wYXVzZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQu UHVzaFB1bGwpCnRlc3Rfc3RhcnRfcGF1c2VkIC4uLiBvawp0ZXN0X3N0YXJ0X3VucGF1c2VkICh3 b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLlB1c2hQdWxsKQp0ZXN0X3N0YXJ0X3Vu cGF1c2VkIC4uLiBvawp0ZXN0X3N0YXJ0X3VucGF1c2VkX3R3b193cml0ZXMgKHdvcm1ob2xlLnRl c3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuUHVzaFB1bGwpCnRlc3Rfc3RhcnRfdW5wYXVzZWRfdHdv X3dyaXRlcyAuLi4gb2sKdGVzdF9zdG9wICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJv dW5kLlB1c2hQdWxsKQp0ZXN0X3N0b3AgLi4uIG9rCnRlc3RfZGlsYXRlX2ZpcnN0ICh3b3JtaG9s ZS50ZXN0LmRpbGF0ZS50ZXN0X21hbmFnZXIuVGVzdERpbGF0b3IpCnRlc3RfZGlsYXRlX2ZpcnN0 IC4uLiBvawp0ZXN0X2RpbGF0ZV9sYXRlciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5h Z2VyLlRlc3REaWxhdG9yKQp0ZXN0X2RpbGF0ZV9sYXRlciAuLi4gb2sKdGVzdF9kaXNqb2ludF92 ZXJzaW9ucyAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3REaWxhdG9yKQp0 ZXN0X2Rpc2pvaW50X3ZlcnNpb25zIC4uLiBFUlJPUgp0ZXN0X3BlZXJfY2Fubm90X2RpbGF0ZSAo d29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3REaWxhdG9yKQp0ZXN0X3BlZXJf Y2Fubm90X2RpbGF0ZSAuLi4gRVJST1IKdGVzdF9zdG9wX2Vhcmx5ICh3b3JtaG9sZS50ZXN0LmRp bGF0ZS50ZXN0X21hbmFnZXIuVGVzdERpbGF0b3IpCnRlc3Rfc3RvcF9lYXJseSAuLi4gb2sKdGVz dF90cmFuc2l0X3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X21hbmFnZXIuVGVzdERp bGF0b3IpCnRlc3RfdHJhbnNpdF9yZWxheSAuLi4gb2sKdGVzdF9jcmVhdGUgKHdvcm1ob2xlLnRl c3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikKdGVzdF9jcmVhdGUgLi4uIG9rCnRl c3RfZm9sbG93ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdl cikKdGVzdF9mb2xsb3dlciAuLi4gRVJST1IKdGVzdF9sZWFkZXIgKHdvcm1ob2xlLnRlc3QuZGls YXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikKdGVzdF9sZWFkZXIgLi4uIEVSUk9SCnRlc3Rf bWFrZV9zaWRlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X21hbmFnZXIuVGVzdE1hbmFnZXIp CnRlc3RfbWFrZV9zaWRlIC4uLiBvawp0ZXN0X21pcnJvciAod29ybWhvbGUudGVzdC5kaWxhdGUu dGVzdF9tYW5hZ2VyLlRlc3RNYW5hZ2VyKQp0ZXN0X21pcnJvciAuLi4gRVJST1IKdGVzdF9waW5n X3BvbmcgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikKdGVz dF9waW5nX3BvbmcgLi4uIFVuaGFuZGxlZCBFcnJvcgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNh bGwgbGFzdCk6CkZhaWx1cmU6IHdvcm1ob2xlLl9kaWxhdGlvbi5tYW5hZ2VyLlVuZXhwZWN0ZWRL Q006IAoKVW5oYW5kbGVkIEVycm9yClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToK RmFpbHVyZTogd29ybWhvbGUuX2RpbGF0aW9uLm1hbmFnZXIuVW5rbm93bk1lc3NhZ2VUeXBlOiBu b3QgcmVjb2duaXplZAoKb2sKdGVzdF9zdWJjaGFubmVsICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50 ZXN0X21hbmFnZXIuVGVzdE1hbmFnZXIpCnRlc3Rfc3ViY2hhbm5lbCAuLi4gb2sKdGVzdF91bmtu b3duX21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdl cikKdGVzdF91bmtub3duX21lc3NhZ2UgLi4uIEVSUk9SCnRlc3RfY3JlYXRlICh3b3JtaG9sZS50 ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuSGFsZkNsb3NlYWJsZSkKdGVzdF9jcmVhdGUgLi4u IEVSUk9SCnRlc3RfbG9jYWxfY2xvc2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hh bm5lbC5IYWxmQ2xvc2VhYmxlKQp0ZXN0X2xvY2FsX2Nsb3NlIC4uLiBFUlJPUgp0ZXN0X3JlbW90 ZV9jbG9zZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9zdWJjaGFubmVsLkhhbGZDbG9zZWFi bGUpCnRlc3RfcmVtb3RlX2Nsb3NlIC4uLiBFUlJPUgp0ZXN0X2Nsb3NlX2JlZm9yZV9vcGVuICh3 b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hhbm5lbEFQSSkKdGVzdF9j bG9zZV9iZWZvcmVfb3BlbiAuLi4gRVJST1IKdGVzdF9jb25zdW1lciAod29ybWhvbGUudGVzdC5k aWxhdGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3RfY29uc3VtZXIgLi4uIEVS Uk9SCnRlc3RfY3JlYXRlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3Vi Q2hhbm5lbEFQSSkKdGVzdF9jcmVhdGUgLi4uIEVSUk9SCnRlc3RfZGF0YSAod29ybWhvbGUudGVz dC5kaWxhdGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3RfZGF0YSAuLi4gRVJS T1IKdGVzdF9kYXRhX2JlZm9yZV9vcGVuICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNo YW5uZWwuU3ViQ2hhbm5lbEFQSSkKdGVzdF9kYXRhX2JlZm9yZV9vcGVuIC4uLiBFUlJPUgp0ZXN0 X2xvY2FsX2Nsb3NlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hh bm5lbEFQSSkKdGVzdF9sb2NhbF9jbG9zZSAuLi4gRVJST1IKdGVzdF9sb2NhbF9kb3VibGVfY2xv c2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0 ZXN0X2xvY2FsX2RvdWJsZV9jbG9zZSAuLi4gRVJST1IKdGVzdF9vbmNlICh3b3JtaG9sZS50ZXN0 LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hhbm5lbEFQSSkKdGVzdF9vbmNlIC4uLiBvawp0 ZXN0X3Byb2R1Y2VyICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hh bm5lbEFQSSkKdGVzdF9wcm9kdWNlciAuLi4gRVJST1IKdGVzdF9yZW1vdGVfY2xvc2UgKHdvcm1o b2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X3JlbW90 ZV9jbG9zZSAuLi4gRVJST1IKdGVzdF93cml0ZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9z dWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3Rfd3JpdGUgLi4uIEVSUk9SCnRlc3Rfd3JpdGVf d2hlbl9jbG9zaW5nICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hh bm5lbEFQSSkKdGVzdF93cml0ZV93aGVuX2Nsb3NpbmcgLi4uIEVSUk9SCnRlc3RfYmFkX2hhbmRz aGFrZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9yZWNvcmQuUmVjb3JkKQp0ZXN0X2JhZF9o YW5kc2hha2UgLi4uIEVSUk9SCnRlc3RfYmFkX21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRl LnRlc3RfcmVjb3JkLlJlY29yZCkKdGVzdF9iYWRfbWVzc2FnZSAuLi4gRVJST1IKdGVzdF9nb29k ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRlc3RfZ29vZCAuLi4g RVJST1IKdGVzdF9nb29kMiAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9yZWNvcmQuUmVjb3Jk KQp0ZXN0X2dvb2QyIC4uLiBFUlJPUgp0ZXN0X3NlbmRfcmVjb3JkICh3b3JtaG9sZS50ZXN0LmRp bGF0ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRlc3Rfc2VuZF9yZWNvcmQgLi4uIEVSUk9SCnRlc3Rf YmFkX3Byb2xvZ3VlX2xlbmd0aCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9mcmFtZXIuRnJh bWVyKQp0ZXN0X2JhZF9wcm9sb2d1ZV9sZW5ndGggLi4uIEVSUk9SCnRlc3RfYmFkX3Byb2xvZ3Vl X25ld2xpbmUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZnJhbWVyLkZyYW1lcikKdGVzdF9i YWRfcHJvbG9ndWVfbmV3bGluZSAuLi4gRVJST1IKdGVzdF9iYWRfcmVsYXkgKHdvcm1ob2xlLnRl c3QuZGlsYXRlLnRlc3RfZnJhbWVyLkZyYW1lcikKdGVzdF9iYWRfcmVsYXkgLi4uIEVSUk9SCnRl c3RfZnJhbWUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZnJhbWVyLkZyYW1lcikKdGVzdF9m cmFtZSAuLi4gRVJST1IKdGVzdF9nb29kX3Byb2xvZ3VlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50 ZXN0X2ZyYW1lci5GcmFtZXIpCnRlc3RfZ29vZF9wcm9sb2d1ZSAuLi4gRVJST1IKdGVzdF9nb29k X3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2ZyYW1lci5GcmFtZXIpCnRlc3RfZ29v ZF9yZWxheSAuLi4gRVJST1IKdGVzdF9lbmRwb2ludHMgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRl c3RfZnVsbC5FbmRwb2ludHMpCnRlc3RfZW5kcG9pbnRzIC4uLiBza2lwcGVkICdub2lzZXByb3Rv Y29sIHVuYXZhaWxhYmxlJwp0ZXN0X2NvbnRyb2wgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rf ZnVsbC5GdWxsKQp0ZXN0X2NvbnRyb2wgLi4uIHNraXBwZWQgJ25vaXNlcHJvdG9jb2wgdW5hdmFp bGFibGUnCnRlc3RfZGF0YV93aGlsZV9vZmZsaW5lICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Z1bGwuUmVjb25uZWN0KQp0ZXN0X2RhdGFfd2hpbGVfb2ZmbGluZSAuLi4gc2tpcHBlZCAnbm9p c2Vwcm90b2NvbCB1bmF2YWlsYWJsZScKdGVzdF9yZWNvbm5lY3QgKHdvcm1ob2xlLnRlc3QuZGls YXRlLnRlc3RfZnVsbC5SZWNvbm5lY3QpCnRlc3RfcmVjb25uZWN0IC4uLiBza2lwcGVkICdub2lz ZXByb3RvY29sIHVuYXZhaWxhYmxlJwp0ZXN0X2NvbXBhcmFibGUgKHdvcm1ob2xlLnRlc3QudGVz dF9oaW50cy5IaW50cykKdGVzdF9jb21wYXJhYmxlIC4uLiBvawp0ZXN0X2Rlc2NyaWJlX2hpbnRf b2JqICh3b3JtaG9sZS50ZXN0LnRlc3RfaGludHMuSGludHMpCnRlc3RfZGVzY3JpYmVfaGludF9v YmogLi4uIG9rCnRlc3RfZW5jb2RlX2hpbnQgKHdvcm1ob2xlLnRlc3QudGVzdF9oaW50cy5IaW50 cykKdGVzdF9lbmNvZGVfaGludCAuLi4gb2sKdGVzdF9lbmRwb2ludF9mcm9tX2hpbnRfb2JqICh3 b3JtaG9sZS50ZXN0LnRlc3RfaGludHMuSGludHMpCnRlc3RfZW5kcG9pbnRfZnJvbV9oaW50X29i aiAuLi4gb2sKdGVzdF9wYXJzZV9oaW50ICh3b3JtaG9sZS50ZXN0LnRlc3RfaGludHMuSGludHMp CnRlc3RfcGFyc2VfaGludCAuLi4gb2sKdGVzdF9wYXJzZV9oaW50X2FyZ3YgKHdvcm1ob2xlLnRl c3QudGVzdF9oaW50cy5IaW50cykKdGVzdF9wYXJzZV9oaW50X2FyZ3YgLi4uIG9rCnRlc3RfcGFy c2VfdGNwX3YxX2hpbnQgKHdvcm1ob2xlLnRlc3QudGVzdF9oaW50cy5IaW50cykKdGVzdF9wYXJz ZV90Y3BfdjFfaGludCAuLi4gb2sKdGVzdF9rYXQgKHdvcm1ob2xlLnRlc3QudGVzdF9oa2RmLlRl c3RLQVQpIC4uLiBvawp0ZXN0X2Vycm9yICh3b3JtaG9sZS50ZXN0LnRlc3RfZXZlbnR1YWwuRXZl bnR1YWwpCnRlc3RfZXJyb3IgLi4uIFVuaGFuZGxlZCBFcnJvcgpUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvdGVzdC90ZXN0X2V2ZW50dWFsLnB5IiwgbGluZSA0NSwgaW4gdGVzdF9lcnJv cgogICAgZXEuZmx1c2hfc3luYygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2V2ZW50 dWFsLnB5IiwgbGluZSA0NCwgaW4gZmx1c2hfc3luYwogICAgc2VsZi5fY2xvY2suYWR2YW5jZSgw KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3Rhc2sucHkiLCBsaW5lIDgyNSwgaW4gYWR2YW5jZQogICAgY2FsbC5mdW5jKCpjYWxs LmFyZ3MsICoqY2FsbC5rdykKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS9ldmVudHVhbC5weSIsIGxpbmUgMzEsIGluIF90dXJuCiAg ICBmKCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL2RwanY0bHhidjhyYmQ0aWxw YnBtN3c4Yno2MG40YnFxLXB5dGhvbi1tb2NrLTMuMC41L2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9tb2NrL21vY2sucHkiLCBsaW5lIDEwOTIsIGluIF9fY2FsbF9fCiAgICByZXR1cm4gX21v Y2tfc2VsZi5fbW9ja19jYWxsKCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL2Rw anY0bHhidjhyYmQ0aWxwYnBtN3c4Yno2MG40YnFxLXB5dGhvbi1tb2NrLTMuMC41L2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9tb2NrL21vY2sucHkiLCBsaW5lIDExNDMsIGluIF9tb2NrX2Nh bGwKICAgIHJhaXNlIGVmZmVjdAp3b3JtaG9sZS50ZXN0LnRlc3RfZXZlbnR1YWwuSW50ZW50aW9u YWxFcnJvcjogCgpvawp0ZXN0X2V2ZW50dWFsbHkgKHdvcm1ob2xlLnRlc3QudGVzdF9ldmVudHVh bC5FdmVudHVhbCkKdGVzdF9ldmVudHVhbGx5IC4uLiBvawp0ZXN0X2ZsdXNoICh3b3JtaG9sZS50 ZXN0LnRlc3RfZXZlbnR1YWwuRXZlbnR1YWwpCnRlc3RfZmx1c2ggLi4uIG9rCnRlc3RfYWxsb2Nh dGVfY29kZSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkRlbGVnYXRlZCkKdGVzdF9hbGxv Y2F0ZV9jb2RlIC4uLiBFUlJPUgp0ZXN0X2RlbGVnYXRlZCAod29ybWhvbGUudGVzdC50ZXN0X3dv cm1ob2xlLkRlbGVnYXRlZCkKdGVzdF9kZWxlZ2F0ZWQgLi4uIEVSUk9SCnRlc3RfaW5wdXRfY29k ZSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkRlbGVnYXRlZCkKdGVzdF9pbnB1dF9jb2Rl IC4uLiBFUlJPUgp0ZXN0X2FsbG9jYXRlX2FuZF9zZXRfY29kZSAod29ybWhvbGUudGVzdC50ZXN0 X3dvcm1ob2xlLkVycm9ycykKdGVzdF9hbGxvY2F0ZV9hbmRfc2V0X2NvZGUgLi4uIEVSUk9SCnRl c3RfZGVyaXZlX2tleV9lYXJseSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkVycm9ycykK dGVzdF9kZXJpdmVfa2V5X2Vhcmx5IC4uLiBFUlJPUgp0ZXN0X211bHRpcGxlX3NldF9jb2RlICh3 b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRXJyb3JzKQp0ZXN0X211bHRpcGxlX3NldF9jb2Rl IC4uLiBFUlJPUgp0ZXN0X2FsbF9kZWZlcnJlZHMgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9s ZS5Jbml0aWFsRmFpbHVyZSkKdGVzdF9hbGxfZGVmZXJyZWRzIC4uLiBFUlJPUgp0ZXN0X2JhZF9k bnMgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Jbml0aWFsRmFpbHVyZSkKdGVzdF9iYWRf ZG5zIC4uLiBFUlJPUgp0ZXN0X25vX2Nvbm5lY3Rpb24gKHdvcm1ob2xlLnRlc3QudGVzdF93b3Jt aG9sZS5Jbml0aWFsRmFpbHVyZSkKdGVzdF9ub19jb25uZWN0aW9uIC4uLiBFUlJPUgp0ZXN0X2Jh c2ljICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuUmVjb25uZWN0aW9uKQp0ZXN0X2Jhc2lj IC4uLiBFUlJPUgp0ZXN0X2Jhc2ljICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuVHJhY2Up CnRlc3RfYmFzaWMgLi4uIEVSUk9SCnRlc3RfZGVsZWdhdGVkICh3b3JtaG9sZS50ZXN0LnRlc3Rf d29ybWhvbGUuVHJhY2UpCnRlc3RfZGVsZWdhdGVkIC4uLiBFUlJPUgp0ZXN0X2FsbG9jYXRlX2Rl ZmF1bHQgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3RfYWxsb2Nh dGVfZGVmYXVsdCAuLi4gRVJST1IKdGVzdF9hbGxvY2F0ZV9tb3JlX3dvcmRzICh3b3JtaG9sZS50 ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2FsbG9jYXRlX21vcmVfd29yZHMgLi4u IEVSUk9SCnRlc3RfYmFzaWMgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMp CnRlc3RfYmFzaWMgLi4uIEVSUk9SCnRlc3RfY2xvc2VkICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29y bWhvbGUuV29ybWhvbGVzKQp0ZXN0X2Nsb3NlZCAuLi4gRVJST1IKdGVzdF9jbG9zZWRfaWRsZSAo d29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9jbG9zZWRfaWRsZSAu Li4gRVJST1IKdGVzdF9lYXJseSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xl cykKdGVzdF9lYXJseSAuLi4gRVJST1IKdGVzdF9maXhlZF9jb2RlICh3b3JtaG9sZS50ZXN0LnRl c3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2ZpeGVkX2NvZGUgLi4uIEVSUk9SCnRlc3RfZ2V0 X2NvZGVfZWFybHkgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3Rf Z2V0X2NvZGVfZWFybHkgLi4uIEVSUk9SCnRlc3RfZ2V0X2NvZGVfbGF0ZSAod29ybWhvbGUudGVz dC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9nZXRfY29kZV9sYXRlIC4uLiBFUlJPUgp0 ZXN0X2lucHV0X2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRl c3RfaW5wdXRfY29kZSAuLi4gRVJST1IKdGVzdF9pbnRlcmxlYXZlZCAod29ybWhvbGUudGVzdC50 ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9pbnRlcmxlYXZlZCAuLi4gRVJST1IKdGVzdF9t dWx0aXBsZV9tZXNzYWdlcyAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykK dGVzdF9tdWx0aXBsZV9tZXNzYWdlcyAuLi4gRVJST1IKdGVzdF9yeF9kZWR1cCAod29ybWhvbGUu dGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9yeF9kZWR1cCAuLi4gRVJST1IKdGVz dF9zYW1lX21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRl c3Rfc2FtZV9tZXNzYWdlIC4uLiBFUlJPUgp0ZXN0X3VuaWRpcmVjdGlvbmFsICh3b3JtaG9sZS50 ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3VuaWRpcmVjdGlvbmFsIC4uLiBFUlJP Ugp0ZXN0X3ZlcmlmaWVyICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0 ZXN0X3ZlcmlmaWVyIC4uLiBFUlJPUgp0ZXN0X3ZlcnNpb25zICh3b3JtaG9sZS50ZXN0LnRlc3Rf d29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3ZlcnNpb25zIC4uLiBFUlJPUgp0ZXN0X3dlbGNvbWUg KHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3Rfd2VsY29tZSAuLi4g RVJST1IKdGVzdF93cm9uZ19wYXNzd29yZCAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldv cm1ob2xlcykKdGVzdF93cm9uZ19wYXNzd29yZCAuLi4gRVJST1IKdGVzdF93cm9uZ19wYXNzd29y ZF93aXRoX2xlYWRpbmdfc3BhY2UgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9s ZXMpCnRlc3Rfd3JvbmdfcGFzc3dvcmRfd2l0aF9sZWFkaW5nX3NwYWNlIC4uLiBFUlJPUgp0ZXN0 X3dyb25nX3Bhc3N3b3JkX3dpdGhfbm9uX251bWVyaWNfbmFtZXBsYXRlICh3b3JtaG9sZS50ZXN0 LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfbm9uX251 bWVyaWNfbmFtZXBsYXRlIC4uLiBFUlJPUgp0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfc3BhY2Vz ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25nX3Bhc3N3 b3JkX3dpdGhfc3BhY2VzIC4uLiBFUlJPUgp0ZXN0X292ZXJyaWRlICh3b3JtaG9sZS50ZXN0LnRl c3RfY2xpLkFwcElEKQp0ZXN0X292ZXJyaWRlIC4uLiBFUlJPUgp0ZXN0X3RleHQgKHdvcm1ob2xl LnRlc3QudGVzdF9jbGkuQ2xlYW51cCkKdGVzdF90ZXh0IC4uLiBVbmhhbmRsZWQgZXJyb3IgaW4g RGVmZXJyZWQ6CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9jbGkucHkiLCBsaW5lIDExOTcsIGluIHRlc3Rf b3ZlcnJpZGUKICAgIHJlY2VpdmVfZCA9IGNtZF9yZWNlaXZlLnJlY2VpdmUoc2VsZi5jZmcpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfcmVjZWl2ZS5weSIsIGxpbmUgNDks IGluIHJlY2VpdmUKICAgIGQgPSByLmdvKCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTYxMywgaW4g dW53aW5kR2VuZXJhdG9yCiAgICByZXR1cm4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdl bikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUyOSwgaW4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJh Y2tzCiAgICBfaW5saW5lQ2FsbGJhY2tzKE5vbmUsIGcsIHN0YXR1cykKLS0tIDxleGNlcHRpb24g Y2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2Fs bGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9jbGkvY21kX3JlY2VpdmUucHkiLCBsaW5lIDgxLCBpbiBnbwogICAgdyA9IGNyZWF0 ZSgKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwg aW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9s ZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19h dHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5 IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2Vy cygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9t YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4g X2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91 cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGlu IF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0 ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVy ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3RfdGV4dF93 cm9uZ19wYXNzd29yZCAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5DbGVhbnVwKQp0ZXN0X3RleHRf d3JvbmdfcGFzc3dvcmQgLi4uIEZBSUwKdGVzdF9vdGhlcl9lcnJvciAod29ybWhvbGUudGVzdC50 ZXN0X2NsaS5EaXNwYXRjaCkKdGVzdF9vdGhlcl9lcnJvciAuLi4gVW5oYW5kbGVkIGVycm9yIGlu IERlZmVycmVkOgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5IiwgbGluZSAxMTA1LCBpbiB0ZXN0 X3RleHQKICAgIHJlY2VpdmVfZCA9IGNtZF9yZWNlaXZlLnJlY2VpdmUoY2ZnKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3JlY2VpdmUucHkiLCBsaW5lIDQ5LCBpbiByZWNl aXZlCiAgICBkID0gci5nbygpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE2MTMsIGluIHVud2luZEdl bmVyYXRvcgogICAgcmV0dXJuIF9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNrcyhnZW4pCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv ZGVmZXIucHkiLCBsaW5lIDE1MjksIGluIF9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNrcwogICAg X2lubGluZUNhbGxiYWNrcyhOb25lLCBnLCBzdGF0dXMpCi0tLSA8ZXhjZXB0aW9uIGNhdWdodCBo ZXJlPiAtLS0KICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwog ICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv Y2xpL2NtZF9yZWNlaXZlLnB5IiwgbGluZSA4MSwgaW4gZ28KICAgIHcgPSBjcmVhdGUoCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0 ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lv bnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9z dF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUg NTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93 b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxm Ll9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhv bGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRf XwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAg ICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFm KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2Fw cGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICBy ZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpCmJ1aWx0aW5zLlR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgpVbmhhbmRsZWQgZXJyb3IgaW4gRGVmZXJyZWQ6CgpU cmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL3Rlc3QvdGVzdF9jbGkucHkiLCBsaW5lIDExMjQsIGluIHRlc3RfdGV4dF93cm9uZ19w YXNzd29yZAogICAgcmVjZWl2ZV9kID0gY21kX3JlY2VpdmUucmVjZWl2ZShyeF9jZmcpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfcmVjZWl2ZS5weSIsIGxpbmUgNDksIGlu IHJlY2VpdmUKICAgIGQgPSByLmdvKCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTYxMywgaW4gdW53 aW5kR2VuZXJhdG9yCiAgICByZXR1cm4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdlbikK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC9kZWZlci5weSIsIGxpbmUgMTUyOSwgaW4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tz CiAgICBfaW5saW5lQ2FsbGJhY2tzKE5vbmUsIGcsIHN0YXR1cykKLS0tIDxleGNlcHRpb24gY2F1 Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJh Y2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9jbGkvY21kX3JlY2VpdmUucHkiLCBsaW5lIDgxLCBpbiBnbwogICAgdyA9IGNyZWF0ZSgK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4g Y3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92 ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdv cm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRy c19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5Iiwg bGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2Vycygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1 aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmws IHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3 b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9f aW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0 X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJl cz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQK ICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3Rfc2VydmVyX2Nv bm5lY3Rpb25fZXJyb3IgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuRGlzcGF0Y2gpCnRlc3Rfc2Vy dmVyX2Nvbm5lY3Rpb25fZXJyb3IgLi4uIG9rCnRlc3Rfc3VjY2VzcyAod29ybWhvbGUudGVzdC50 ZXN0X2NsaS5EaXNwYXRjaCkKdGVzdF9zdWNjZXNzIC4uLiBvawp0ZXN0X3RpbWluZyAod29ybWhv bGUudGVzdC50ZXN0X2NsaS5EaXNwYXRjaCkKdGVzdF90aW1pbmcgLi4uIG9rCnRlc3RfdHJhbnNm ZXJfZXJyb3IgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuRGlzcGF0Y2gpCnRlc3RfdHJhbnNmZXJf ZXJyb3IgLi4uIG9rCnRlc3Rfd2VsY29tZV9lcnJvciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5E aXNwYXRjaCkKdGVzdF93ZWxjb21lX2Vycm9yIC4uLiBvawp0ZXN0X3dyb25nX3Bhc3N3b3JkX2Vy cm9yICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLkRpc3BhdGNoKQp0ZXN0X3dyb25nX3Bhc3N3b3Jk X2Vycm9yIC4uLiBvawp0ZXN0X2ZpbGVuYW1lcyAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5FeHRy YWN0RmlsZSkKdGVzdF9maWxlbmFtZXMgLi4uIG9rCnRlc3RfZGFzaF9kYXNoX2hlbHAgKHdvcm1o b2xlLnRlc3QudGVzdF9jbGkuSGVscCkKdGVzdF9kYXNoX2Rhc2hfaGVscCAuLi4gb2sKdGVzdF9o ZWxwICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLkhlbHApCnRlc3RfaGVscCAuLi4gb2sKdGVzdF9y ZWNlaXZlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Ob1NlcnZlcikKdGVzdF9yZWNlaXZlciAu Li4gRkFJTAp0ZXN0X3NlbmRlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Ob1NlcnZlcikKdGVz dF9zZW5kZXIgLi4uIEZBSUwKdGVzdF9zZW5kZXJfYWxsb2NhdGlvbiAod29ybWhvbGUudGVzdC50 ZXN0X2NsaS5Ob1NlcnZlcikKdGVzdF9zZW5kZXJfYWxsb2NhdGlvbiAuLi4gRkFJTAp0ZXN0X3Jl Y2VpdmVyICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk5vdFdlbGNvbWUpCnRlc3RfcmVjZWl2ZXIg Li4uIEZBSUwKdGVzdF9zZW5kZXIgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuTm90V2VsY29tZSkK dGVzdF9zZW5kZXIgLi4uIEZBSUwKdGVzdF9icm9rZW5fc3ltbGlua19pc19pZ25vcmVkICh3b3Jt aG9sZS50ZXN0LnRlc3RfY2xpLk9mZmVyRGF0YSkKdGVzdF9icm9rZW5fc3ltbGlua19pc19pZ25v cmVkIC4uLiBvawp0ZXN0X2Jyb2tlbl9zeW1saW5rX3JhaXNlc19lcnIgKHdvcm1ob2xlLnRlc3Qu dGVzdF9jbGkuT2ZmZXJEYXRhKQp0ZXN0X2Jyb2tlbl9zeW1saW5rX3JhaXNlc19lcnIgLi4uIG9r CnRlc3RfZGlyZWN0b3J5ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk9mZmVyRGF0YSkKdGVzdF9k aXJlY3RvcnkgLi4uIG9rCnRlc3RfZGlyZWN0b3J5X2FkZHNsYXNoICh3b3JtaG9sZS50ZXN0LnRl c3RfY2xpLk9mZmVyRGF0YSkKdGVzdF9kaXJlY3RvcnlfYWRkc2xhc2ggLi4uIG9rCnRlc3RfZmls ZSAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5PZmZlckRhdGEpCnRlc3RfZmlsZSAuLi4gb2sKL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHk6MjE3OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPF9pby5CdWZmZXJlZFJlYWRl ciBuYW1lPScvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC93b3JtaG9sZS50ZXN0LnRlc3RfY2xpL09mZmVyRGF0YS90ZXN0X2Zp bGUvazI1Y3gybHEvdGVtcC9teSBmaWxlJz4KICByZXN1bHQgPSBmKCphLCAqKmt3KQp0ZXN0X21p c3NpbmdfZmlsZSAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5PZmZlckRhdGEpCnRlc3RfbWlzc2lu Z19maWxlIC4uLiBvawp0ZXN0X3N5bWxpbmsgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuT2ZmZXJE YXRhKQp0ZXN0X3N5bWxpbmsgLi4uIG9rCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5OjIxNzogUmVzb3VyY2VXYXJuaW5nOiB1bmNs b3NlZCBmaWxlIDxfaW8uQnVmZmVyZWRSZWFkZXIgbmFtZT0nL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvd29ybWhvbGUudGVz dC50ZXN0X2NsaS9PZmZlckRhdGEvdGVzdF9zeW1saW5rL3RfNTZyOXFmL3RlbXAvQjIvQy50eHQn PgogIHJlc3VsdCA9IGYoKmEsICoqa3cpCnRlc3Rfc3ltbGlua19jb2xsYXBzZSAod29ybWhvbGUu dGVzdC50ZXN0X2NsaS5PZmZlckRhdGEpCnRlc3Rfc3ltbGlua19jb2xsYXBzZSAuLi4gb2sKL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHk6MjE3OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPF9pby5CdWZmZXJlZFJlYWRl ciBuYW1lPScvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC93b3JtaG9sZS50ZXN0LnRlc3RfY2xpL09mZmVyRGF0YS90ZXN0X3N5 bWxpbmtfY29sbGFwc2UvX2Zxc3VjZjMvdGVtcC9CMi9ELnR4dCc+CiAgcmVzdWx0ID0gZigqYSwg KiprdykKdGVzdF90ZXh0ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk9mZmVyRGF0YSkKdGVzdF90 ZXh0IC4uLiBvawp0ZXN0X3Vua25vd24gKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuT2ZmZXJEYXRh KQp0ZXN0X3Vua25vd24gLi4uIG9rCnRlc3RfZGlyZWN0b3J5ICh3b3JtaG9sZS50ZXN0LnRlc3Rf Y2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZGlyZWN0b3J5IC4uLiBza2lwcGVkICd1bmFibGUg dG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZGlyZWN0b3J5X2FkZHNsYXNoICh3b3JtaG9sZS50 ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZGlyZWN0b3J5X2FkZHNsYXNoIC4u LiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZGlyZWN0b3J5X292 ZXJyaWRlICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZGly ZWN0b3J5X292ZXJyaWRlIC4uLiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUn CnRlc3RfZGlyZWN0b3J5X292ZXJ3cml0ZSAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5QcmVnZW5l cmF0ZWRDb2RlKQp0ZXN0X2RpcmVjdG9yeV9vdmVyd3JpdGUgLi4uIHNraXBwZWQgJ3VuYWJsZSB0 byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF9kaXJlY3Rvcnlfb3ZlcndyaXRlX21vY2tfYWNjZXB0 ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZGlyZWN0b3J5 X292ZXJ3cml0ZV9tb2NrX2FjY2VwdCAuLi4gc2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTgg bG9jYWxlJwp0ZXN0X2VtcHR5X2ZpbGUgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJh dGVkQ29kZSkKdGVzdF9lbXB0eV9maWxlIC4uLiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYt OCBsb2NhbGUnCnRlc3RfZmFpbF9kaXJlY3Rvcnlfbm9jbG9iYmVyICh3b3JtaG9sZS50ZXN0LnRl c3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZmFpbF9kaXJlY3Rvcnlfbm9jbG9iYmVyIC4u LiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZmFpbF9kaXJlY3Rv cnlfdG9vYmlnICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3Rf ZmFpbF9kaXJlY3RvcnlfdG9vYmlnIC4uLiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBs b2NhbGUnCnRlc3RfZmFpbF9maWxlX25vY2xvYmJlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Q cmVnZW5lcmF0ZWRDb2RlKQp0ZXN0X2ZhaWxfZmlsZV9ub2Nsb2JiZXIgLi4uIHNraXBwZWQgJ3Vu YWJsZSB0byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF9mYWlsX2ZpbGVfdG9vYmlnICh3b3JtaG9s ZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZmFpbF9maWxlX3Rvb2JpZyAu Li4gc2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X2ZpbGUgKHdvcm1o b2xlLnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJhdGVkQ29kZSkKdGVzdF9maWxlIC4uLiBza2lwcGVk ICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZmlsZV9vdmVycmlkZSAod29ybWhv bGUudGVzdC50ZXN0X2NsaS5QcmVnZW5lcmF0ZWRDb2RlKQp0ZXN0X2ZpbGVfb3ZlcnJpZGUgLi4u IHNraXBwZWQgJ3VuYWJsZSB0byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF9maWxlX292ZXJ3cml0 ZSAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5QcmVnZW5lcmF0ZWRDb2RlKQp0ZXN0X2ZpbGVfb3Zl cndyaXRlIC4uLiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZmls ZV9vdmVyd3JpdGVfbW9ja19hY2NlcHQgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJh dGVkQ29kZSkKdGVzdF9maWxlX292ZXJ3cml0ZV9tb2NrX2FjY2VwdCAuLi4gc2tpcHBlZCAndW5h YmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X2ZpbGVfdG9yICh3b3JtaG9sZS50ZXN0LnRl c3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZmlsZV90b3IgLi4uIHNraXBwZWQgJ3VuYWJs ZSB0byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF9zbG93X3NlbmRlcl90ZXh0ICh3b3JtaG9sZS50 ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3Rfc2xvd19zZW5kZXJfdGV4dCAuLi4g c2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X3Nsb3dfdGV4dCAod29y bWhvbGUudGVzdC50ZXN0X2NsaS5QcmVnZW5lcmF0ZWRDb2RlKQp0ZXN0X3Nsb3dfdGV4dCAuLi4g c2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X3RleHQgKHdvcm1ob2xl LnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJhdGVkQ29kZSkKdGVzdF90ZXh0IC4uLiBza2lwcGVkICd1 bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfdGV4dF9zdWJwcm9jZXNzICh3b3JtaG9s ZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfdGV4dF9zdWJwcm9jZXNzIC4u LiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfdGV4dF90b3IgKHdv cm1ob2xlLnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJhdGVkQ29kZSkKdGVzdF90ZXh0X3RvciAuLi4g c2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X3RleHRfdmVyaWZ5ICh3 b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfdGV4dF92ZXJpZnkg Li4uIHNraXBwZWQgJ3VuYWJsZSB0byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF92ZXJzaW9uICh3 b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlNjcmlwdFZlcnNpb24pCnRlc3RfdmVyc2lvbiAuLi4gc2tp cHBlZCAidW5hYmxlIHRvIGZpbmQgJ3dvcm1ob2xlJyBpbiAkUEFUSCIKdGVzdF9lbXB0eSAod29y bWhvbGUudGVzdC50ZXN0X2NsaS5XZWxjb21lKQp0ZXN0X2VtcHR5IC4uLiBvawp0ZXN0X21vdGQg KHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuV2VsY29tZSkKdGVzdF9tb3RkIC4uLiBvawp0ZXN0X3Zl cnNpb25fY3VycmVudCAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5XZWxjb21lKQp0ZXN0X3ZlcnNp b25fY3VycmVudCAuLi4gb2sKdGVzdF92ZXJzaW9uX29sZCAod29ybWhvbGUudGVzdC50ZXN0X2Ns aS5XZWxjb21lKQp0ZXN0X3ZlcnNpb25fb2xkIC4uLiBvawp0ZXN0X3ZlcnNpb25fdW5yZWxlYXNl ZCAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5XZWxjb21lKQp0ZXN0X3ZlcnNpb25fdW5yZWxlYXNl ZCAuLi4gb2sKdGVzdF90ZXh0ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlplcm9Nb2RlKQp0ZXN0 X3RleHQgLi4uIEVSUk9SCnRlc3RfZGVyaXZlX2Vycm9ycyAod29ybWhvbGUudGVzdC50ZXN0X2tl eXMuRGVyaXZlKQp0ZXN0X2Rlcml2ZV9lcnJvcnMgLi4uIG9rCnRlc3RfZGVyaXZlX2tleSAod29y bWhvbGUudGVzdC50ZXN0X2tleXMuRGVyaXZlKQp0ZXN0X2Rlcml2ZV9rZXkgLi4uIG9rCnRlc3Rf ZGVyaXZlX3BoYXNlX2tleSAod29ybWhvbGUudGVzdC50ZXN0X2tleXMuRGVyaXZlKQp0ZXN0X2Rl cml2ZV9waGFzZV9rZXkgLi4uIG9rCnRlc3RfZGVjcnlwdCAod29ybWhvbGUudGVzdC50ZXN0X2tl eXMuRW5jcnlwdCkKdGVzdF9kZWNyeXB0IC4uLiBvawp0ZXN0X2VuY3J5cHQgKHdvcm1ob2xlLnRl c3QudGVzdF9rZXlzLkVuY3J5cHQpCnRlc3RfZW5jcnlwdCAuLi4gb2sKdGVzdF9zZXQgKHdvcm1o b2xlLnRlc3QudGVzdF9vYnNlcnZlci5FbXB0eSkKdGVzdF9zZXQgLi4uIG9rCnRlc3RfZXJyb3Jf YWZ0ZXJfZmlyaW5nICh3b3JtaG9sZS50ZXN0LnRlc3Rfb2JzZXJ2ZXIuT25lU2hvdCkKdGVzdF9l cnJvcl9hZnRlcl9maXJpbmcgLi4uIG9rCnRlc3RfZXJyb3JfYmVmb3JlX2ZpcmluZyAod29ybWhv bGUudGVzdC50ZXN0X29ic2VydmVyLk9uZVNob3QpCnRlc3RfZXJyb3JfYmVmb3JlX2ZpcmluZyAu Li4gb2sKdGVzdF9maXJlICh3b3JtaG9sZS50ZXN0LnRlc3Rfb2JzZXJ2ZXIuT25lU2hvdCkKdGVz dF9maXJlIC4uLiBvawp0ZXN0X2ZpcmVfaWZfbm90X2ZpcmVkICh3b3JtaG9sZS50ZXN0LnRlc3Rf b2JzZXJ2ZXIuT25lU2hvdCkKdGVzdF9maXJlX2lmX25vdF9maXJlZCAuLi4gb2sKdGVzdF9lcnJv ciAod29ybWhvbGUudGVzdC50ZXN0X29ic2VydmVyLlNlcXVlbmNlKQp0ZXN0X2Vycm9yIC4uLiBv awp0ZXN0X2ZpcmUgKHdvcm1ob2xlLnRlc3QudGVzdF9vYnNlcnZlci5TZXF1ZW5jZSkKdGVzdF9m aXJlIC4uLiBvawp0ZXN0X2FsbG9jYXRlX2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGlu ZXMuQWxsb2NhdG9yKQp0ZXN0X2FsbG9jYXRlX2ZpcnN0IC4uLiBFUlJPUgp0ZXN0X2Nvbm5lY3Rf Zmlyc3QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5BbGxvY2F0b3IpCnRlc3RfY29ubmVj dF9maXJzdCAuLi4gRVJST1IKdGVzdF9ub19hbGxvY2F0aW9uICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuQWxsb2NhdG9yKQp0ZXN0X25vX2FsbG9jYXRpb24gLi4uIEVSUk9SCnRlc3RfYWxs b2NhdGVfY29kZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfYWxsb2Nh dGVfY29kZSAuLi4gb2sKdGVzdF9iYXNpYyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJv c3MpCnRlc3RfYmFzaWMgLi4uIEVSUk9SCnRlc3RfY2xvc2VfZWFybHkgKHdvcm1ob2xlLnRlc3Qu dGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X2Nsb3NlX2Vhcmx5IC4uLiBFUlJPUgp0ZXN0X2Vycm9y X3doaWxlX2Nsb3NpbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X2Vy cm9yX3doaWxlX2Nsb3NpbmcgLi4uIEVSUk9SCnRlc3RfaW5wdXRfY29kZSAod29ybWhvbGUudGVz dC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfaW5wdXRfY29kZSAuLi4gb2sKdGVzdF9pbnRlcm5h bF9lcnJvciAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfaW50ZXJuYWxf ZXJyb3IgLi4uIEVSUk9SCnRlc3RfbG9uZWx5ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu Qm9zcykKdGVzdF9sb25lbHkgLi4uIEVSUk9SCnRlc3Rfc2NhcnlfcGhhc2UgKHdvcm1ob2xlLnRl c3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X3NjYXJ5X3BoYXNlIC4uLiBFUlJPUgp0ZXN0X3Nj YXJ5X3ZlcnNpb24gKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X3NjYXJ5 X3ZlcnNpb24gLi4uIEVSUk9SCnRlc3Rfc2VydmVyX2Vycm9yICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuQm9zcykKdGVzdF9zZXJ2ZXJfZXJyb3IgLi4uIEVSUk9SCnRlc3Rfc2V0X2NvZGVf YmFkX2Zvcm1hdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3Rfc2V0X2Nv ZGVfYmFkX2Zvcm1hdCAuLi4gb2sKdGVzdF9zZXRfY29kZV90d2ljZSAod29ybWhvbGUudGVzdC50 ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3Rfc2V0X2NvZGVfdHdpY2UgLi4uIG9rCnRlc3RfdW5rbm93 bl9waGFzZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfdW5rbm93bl9w aGFzZSAuLi4gRVJST1IKdGVzdF91bndlbGNvbWUgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5l cy5Cb3NzKQp0ZXN0X3Vud2VsY29tZSAuLi4gRVJST1IKdGVzdF9hbGxvY2F0ZV9jb2RlICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuQ29kZSkKdGVzdF9hbGxvY2F0ZV9jb2RlIC4uLiBFUlJP Ugp0ZXN0X2lucHV0X2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Db2RlKQp0ZXN0 X2lucHV0X2NvZGUgLi4uIEVSUk9SCnRlc3Rfc2V0X2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5Db2RlKQp0ZXN0X3NldF9jb2RlIC4uLiBFUlJPUgp0ZXN0X3NldF9jb2RlX2ludmFs aWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Db2RlKQp0ZXN0X3NldF9jb2RlX2ludmFs aWQgLi4uIEVSUk9SCnRlc3RfYmFkX25hbWVwbGF0ZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hp bmVzLklucHV0KQp0ZXN0X2JhZF9uYW1lcGxhdGUgLi4uIEVSUk9SCnRlc3RfaWdub3JlX2NvbXBs ZXRpb24gKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5JbnB1dCkKdGVzdF9pZ25vcmVfY29t cGxldGlvbiAuLi4gRVJST1IKdGVzdF93aXRoX2NvbXBsZXRpb24gKHdvcm1ob2xlLnRlc3QudGVz dF9tYWNoaW5lcy5JbnB1dCkKdGVzdF93aXRoX2NvbXBsZXRpb24gLi4uIEVSUk9SCnRlc3RfYmFk ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuS2V5KQp0ZXN0X2JhZCAuLi4gRVJST1IKdGVz dF9nb29kICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuS2V5KQp0ZXN0X2dvb2QgLi4uIEVS Uk9SCnRlc3RfcmV2ZXJzZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5LZXkpCnRlc3Rf cmV2ZXJzZWQgLi4uIEVSUk9SCnRlc3RfY29ubmVjdF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0 X21hY2hpbmVzLkxpc3RlcikKdGVzdF9jb25uZWN0X2ZpcnN0IC4uLiBFUlJPUgp0ZXN0X2Nvbm5l Y3RfZmlyc3RfYXNrX3R3aWNlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTGlzdGVyKQp0 ZXN0X2Nvbm5lY3RfZmlyc3RfYXNrX3R3aWNlIC4uLiBFUlJPUgp0ZXN0X3JlY29ubmVjdCAod29y bWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkxpc3RlcikKdGVzdF9yZWNvbm5lY3QgLi4uIEVSUk9S CnRlc3RfcmVmcmVzaF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkxpc3RlcikK dGVzdF9yZWZyZXNoX2ZpcnN0IC4uLiBFUlJPUgp0ZXN0X3VucmVmcmVzaGVkICh3b3JtaG9sZS50 ZXN0LnRlc3RfbWFjaGluZXMuTGlzdGVyKQp0ZXN0X3VucmVmcmVzaGVkIC4uLiBFUlJPUgp0ZXN0 X2Nsb3NlX3doaWxlX2lkbGUgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5NYWlsYm94KQp0 ZXN0X2Nsb3NlX3doaWxlX2lkbGUgLi4uIEVSUk9SCnRlc3RfY2xvc2Vfd2hpbGVfaWRsZV9idXRf Y29ubmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTWFpbGJveCkKdGVzdF9jbG9z ZV93aGlsZV9pZGxlX2J1dF9jb25uZWN0ZWQgLi4uIEVSUk9SCnRlc3RfY2xvc2Vfd2hpbGVfbWFp bGJveF9kaXNjb25uZWN0ZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5NYWlsYm94KQp0 ZXN0X2Nsb3NlX3doaWxlX21haWxib3hfZGlzY29ubmVjdGVkIC4uLiBFUlJPUgp0ZXN0X2Nsb3Nl X3doaWxlX3JlY29ubmVjdGluZyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk1haWxib3gp CnRlc3RfY2xvc2Vfd2hpbGVfcmVjb25uZWN0aW5nIC4uLiBFUlJPUgp0ZXN0X2Nvbm5lY3RfZmly c3QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5NYWlsYm94KQp0ZXN0X2Nvbm5lY3RfZmly c3QgLi4uIEVSUk9SCnRlc3RfbWFpbGJveF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hp bmVzLk1haWxib3gpCnRlc3RfbWFpbGJveF9maXJzdCAuLi4gRVJST1IKdGVzdF9jbG9zZV93aGls ZV9jbGFpbWVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Ns b3NlX3doaWxlX2NsYWltZWQgLi4uIEVSUk9SCnRlc3RfY2xvc2Vfd2hpbGVfY2xhaW1lZF9idXRf ZGlzY29ubmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0 X2Nsb3NlX3doaWxlX2NsYWltZWRfYnV0X2Rpc2Nvbm5lY3RlZCAuLi4gRVJST1IKdGVzdF9jbG9z ZV93aGlsZV9jbGFpbWluZyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkK dGVzdF9jbG9zZV93aGlsZV9jbGFpbWluZyAuLi4gRVJST1IKdGVzdF9jbG9zZV93aGlsZV9jbGFp bWluZ19idXRfZGlzY29ubmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBs YXRlKQp0ZXN0X2Nsb3NlX3doaWxlX2NsYWltaW5nX2J1dF9kaXNjb25uZWN0ZWQgLi4uIEVSUk9S CnRlc3RfY2xvc2Vfd2hpbGVfZG9uZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVw bGF0ZSkKdGVzdF9jbG9zZV93aGlsZV9kb25lIC4uLiBFUlJPUgp0ZXN0X2Nsb3NlX3doaWxlX2Rv bmVfYnV0X2Rpc2Nvbm5lY3RlZCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0 ZSkKdGVzdF9jbG9zZV93aGlsZV9kb25lX2J1dF9kaXNjb25uZWN0ZWQgLi4uIEVSUk9SCnRlc3Rf Y2xvc2Vfd2hpbGVfaWRsZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkK dGVzdF9jbG9zZV93aGlsZV9pZGxlIC4uLiBFUlJPUgp0ZXN0X2Nsb3NlX3doaWxlX2lkbGVfY29u bmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Nsb3Nl X3doaWxlX2lkbGVfY29ubmVjdGVkIC4uLiBFUlJPUgp0ZXN0X2Nsb3NlX3doaWxlX3JlbGVhc2lu ZyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkKdGVzdF9jbG9zZV93aGls ZV9yZWxlYXNpbmcgLi4uIEVSUk9SCnRlc3RfY2xvc2Vfd2hpbGVfcmVsZWFzaW5nX2J1dF9kaXNj b25uZWN0ZWRhICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Ns b3NlX3doaWxlX3JlbGVhc2luZ19idXRfZGlzY29ubmVjdGVkYSAuLi4gRVJST1IKdGVzdF9jbG9z ZV93aGlsZV91bmNsYWltZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUp CnRlc3RfY2xvc2Vfd2hpbGVfdW5jbGFpbWVkIC4uLiBFUlJPUgp0ZXN0X2Nvbm5lY3RfZmlyc3Qg KHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY29ubmVjdF9maXJz dCAuLi4gRVJST1IKdGVzdF9yZWNvbm5lY3Rfd2hpbGVfY2xhaW1lZCAod29ybWhvbGUudGVzdC50 ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkKdGVzdF9yZWNvbm5lY3Rfd2hpbGVfY2xhaW1lZCAuLi4g RVJST1IKdGVzdF9yZWNvbm5lY3Rfd2hpbGVfY2xhaW1pbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfcmVjb25uZWN0X3doaWxlX2NsYWltaW5nIC4uLiBFUlJP Ugp0ZXN0X3JlY29ubmVjdF93aGlsZV9kb25lICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu TmFtZXBsYXRlKQp0ZXN0X3JlY29ubmVjdF93aGlsZV9kb25lIC4uLiBFUlJPUgp0ZXN0X3JlY29u bmVjdF93aGlsZV9yZWxlYXNpbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxh dGUpCnRlc3RfcmVjb25uZWN0X3doaWxlX3JlbGVhc2luZyAuLi4gRVJST1IKdGVzdF9zZXRfZmly c3QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3Rfc2V0X2ZpcnN0 IC4uLiBFUlJPUgp0ZXN0X3NldF9pbnZhbGlkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu TmFtZXBsYXRlKQp0ZXN0X3NldF9pbnZhbGlkIC4uLiBFUlJPUgp0ZXN0X2luX29yZGVyICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuT3JkZXIpCnRlc3RfaW5fb3JkZXIgLi4uIEVSUk9SCnRl c3Rfb3V0X29mX29yZGVyICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuT3JkZXIpCnRlc3Rf b3V0X29mX29yZGVyIC4uLiBFUlJPUgp0ZXN0X2Vhcmx5X2JhZCAod29ybWhvbGUudGVzdC50ZXN0 X21hY2hpbmVzLlJlY2VpdmUpCnRlc3RfZWFybHlfYmFkIC4uLiBFUlJPUgp0ZXN0X2dvb2QgKHdv cm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5SZWNlaXZlKQp0ZXN0X2dvb2QgLi4uIEVSUk9SCnRl c3RfbGF0ZV9iYWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5SZWNlaXZlKQp0ZXN0X2xh dGVfYmFkIC4uLiBFUlJPUgp0ZXN0X2Jhc2ljICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu UmVuZGV6dm91cykKdGVzdF9iYXNpYyAuLi4gRVJST1IKL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19y ZW5kZXp2b3VzLnB5OjExMTogRGVwcmVjYXRpb25XYXJuaW5nOiBQYXNzaW5nIEhvc3RuYW1lRW5k cG9pbnQgYSByZWFjdG9yIHRoYXQgZG9lcyBub3QgcHJvdmlkZSBJUmVhY3RvclBsdWdnYWJsZU5h bWVSZXNvbHZlciAoYnVpbHRpbnMub2JqZWN0KSB3YXMgZGVwcmVjYXRlZCBpbiBUd2lzdGVkIDE3 LjUuMDsgcGxlYXNlIHVzZSBhIHJlYWN0b3IgdGhhdCBwcm92aWRlcyBJUmVhY3RvclBsdWdnYWJs ZU5hbWVSZXNvbHZlciBpbnN0ZWFkCiAgcmV0dXJuIGVuZHBvaW50cy5Ib3N0bmFtZUVuZHBvaW50 KHNlbGYuX3JlYWN0b3IsIHAuaG9zdG5hbWUsIHBvcnQpCnRlc3RfZW5kcG9pbnRzICh3b3JtaG9s ZS50ZXN0LnRlc3RfbWFjaGluZXMuUmVuZGV6dm91cykKdGVzdF9lbmRwb2ludHMgLi4uIEVSUk9S Ci90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weToxMTE6IERlcHJlY2F0aW9uV2Fy bmluZzogUGFzc2luZyBIb3N0bmFtZUVuZHBvaW50IGEgcmVhY3RvciB0aGF0IGRvZXMgbm90IHBy b3ZpZGUgSVJlYWN0b3JQbHVnZ2FibGVOYW1lUmVzb2x2ZXIgKGJ1aWx0aW5zLm9iamVjdCkgd2Fz IGRlcHJlY2F0ZWQgaW4gVHdpc3RlZCAxNy41LjA7IHBsZWFzZSB1c2UgYSByZWFjdG9yIHRoYXQg cHJvdmlkZXMgSVJlYWN0b3JQbHVnZ2FibGVOYW1lUmVzb2x2ZXIgaW5zdGVhZAogIHJldHVybiBl bmRwb2ludHMuSG9zdG5hbWVFbmRwb2ludChzZWxmLl9yZWFjdG9yLCBwLmhvc3RuYW1lLCBwb3J0 KQp0ZXN0X3dlYnNvY2tldF9mYWlsdXJlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuUmVu ZGV6dm91cykKdGVzdF93ZWJzb2NrZXRfZmFpbHVyZSAuLi4gRVJST1IKL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19yZW5kZXp2b3VzLnB5OjExMTogRGVwcmVjYXRpb25XYXJuaW5nOiBQYXNzaW5nIEhv c3RuYW1lRW5kcG9pbnQgYSByZWFjdG9yIHRoYXQgZG9lcyBub3QgcHJvdmlkZSBJUmVhY3RvclBs dWdnYWJsZU5hbWVSZXNvbHZlciAoYnVpbHRpbnMub2JqZWN0KSB3YXMgZGVwcmVjYXRlZCBpbiBU d2lzdGVkIDE3LjUuMDsgcGxlYXNlIHVzZSBhIHJlYWN0b3IgdGhhdCBwcm92aWRlcyBJUmVhY3Rv clBsdWdnYWJsZU5hbWVSZXNvbHZlciBpbnN0ZWFkCiAgcmV0dXJuIGVuZHBvaW50cy5Ib3N0bmFt ZUVuZHBvaW50KHNlbGYuX3JlYWN0b3IsIHAuaG9zdG5hbWUsIHBvcnQpCnRlc3Rfd2Vic29ja2V0 X2xvc3QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5SZW5kZXp2b3VzKQp0ZXN0X3dlYnNv Y2tldF9sb3N0IC4uLiBFUlJPUgovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHk6 MTExOiBEZXByZWNhdGlvbldhcm5pbmc6IFBhc3NpbmcgSG9zdG5hbWVFbmRwb2ludCBhIHJlYWN0 b3IgdGhhdCBkb2VzIG5vdCBwcm92aWRlIElSZWFjdG9yUGx1Z2dhYmxlTmFtZVJlc29sdmVyIChi dWlsdGlucy5vYmplY3QpIHdhcyBkZXByZWNhdGVkIGluIFR3aXN0ZWQgMTcuNS4wOyBwbGVhc2Ug dXNlIGEgcmVhY3RvciB0aGF0IHByb3ZpZGVzIElSZWFjdG9yUGx1Z2dhYmxlTmFtZVJlc29sdmVy IGluc3RlYWQKICByZXR1cm4gZW5kcG9pbnRzLkhvc3RuYW1lRW5kcG9pbnQoc2VsZi5fcmVhY3Rv ciwgcC5ob3N0bmFtZSwgcG9ydCkKdGVzdF9rZXlfZmlyc3QgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5TZW5kKQp0ZXN0X2tleV9maXJzdCAuLi4gRVJST1IKdGVzdF9zZW5kX2ZpcnN0ICh3 b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuU2VuZCkKdGVzdF9zZW5kX2ZpcnN0IC4uLiBFUlJP Ugp0ZXN0X3Rlcm1pbmF0ZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLlRlcm1pbmF0b3Ip CnRlc3RfdGVybWluYXRlIC4uLiBFUlJPUgp0ZXN0X2Nob29zZV93b3JkcyAod29ybWhvbGUudGVz dC50ZXN0X3dvcmRsaXN0LkNob29zZSkKdGVzdF9jaG9vc2Vfd29yZHMgLi4uIG9rCnRlc3RfY29t cGxldGlvbnMgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JkbGlzdC5Db21wbGV0aW9ucykKdGVzdF9j b21wbGV0aW9ucyAuLi4gb2sKdGVzdF9mcmVlX3NwYWNlICh3b3JtaG9sZS50ZXN0LnRlc3RfdXRp bC5TcGFjZSkKdGVzdF9mcmVlX3NwYWNlIC4uLiBvawp0ZXN0X25vX3N0YXR2ZnMgKHdvcm1ob2xl LnRlc3QudGVzdF91dGlsLlNwYWNlKQp0ZXN0X25vX3N0YXR2ZnMgLi4uIG9rCnRlc3RfYnl0ZXNf dG9fZGljdCAod29ybWhvbGUudGVzdC50ZXN0X3V0aWwuVXRpbHMpCnRlc3RfYnl0ZXNfdG9fZGlj dCAuLi4gb2sKdGVzdF9ieXRlc190b19oZXhzdHIgKHdvcm1ob2xlLnRlc3QudGVzdF91dGlsLlV0 aWxzKQp0ZXN0X2J5dGVzX3RvX2hleHN0ciAuLi4gb2sKdGVzdF9kaWN0X3RvX2J5dGVzICh3b3Jt aG9sZS50ZXN0LnRlc3RfdXRpbC5VdGlscykKdGVzdF9kaWN0X3RvX2J5dGVzIC4uLiBvawp0ZXN0 X2hleHN0cl90b19ieXRlcyAod29ybWhvbGUudGVzdC50ZXN0X3V0aWwuVXRpbHMpCnRlc3RfaGV4 c3RyX3RvX2J5dGVzIC4uLiBvawp0ZXN0X3RvX2J5dGVzICh3b3JtaG9sZS50ZXN0LnRlc3RfdXRp bC5VdGlscykKdGVzdF90b19ieXRlcyAuLi4gb2sKdGVzdF9iYWRfaGludCAod29ybWhvbGUudGVz dC50ZXN0X3NzaC5GaW5kUHVia2V5KQp0ZXN0X2JhZF9oaW50IC4uLiBvawp0ZXN0X2ZpbmRfbXVs dGlwbGUgKHdvcm1ob2xlLnRlc3QudGVzdF9zc2guRmluZFB1YmtleSkKdGVzdF9maW5kX211bHRp cGxlIC4uLiBvawp0ZXN0X2ZpbmRfbm9uZSAod29ybWhvbGUudGVzdC50ZXN0X3NzaC5GaW5kUHVi a2V5KQp0ZXN0X2ZpbmRfbm9uZSAuLi4gb2sKdGVzdF9maW5kX29uZSAod29ybWhvbGUudGVzdC50 ZXN0X3NzaC5GaW5kUHVia2V5KQp0ZXN0X2ZpbmRfb25lIC4uLiBvawoKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpF UlJPUjogdGVzdF9tYWtlX2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF94ZmVyX3V0aWwuWGZlcikK dGVzdF9tYWtlX2NvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp0d2lzdGVkLmludGVybmV0LmRlZmVyLlRpbWVv dXRFcnJvcjogPHdvcm1ob2xlLnRlc3QudGVzdF94ZmVyX3V0aWwuWGZlciB0ZXN0TWV0aG9kPXRl c3RfbWFrZV9jb2RlPiAodGVzdF9tYWtlX2NvZGUpIHN0aWxsIHJ1bm5pbmcgYXQgMTIwLjAgc2Vj cwoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9vbl9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rf eGZlcl91dGlsLlhmZXIpCnRlc3Rfb25fY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X3hmZXJfdXRpbC5weSIsIGxpbmUgMzgsIGluIHRlc3Rfb25fY29kZQogICAgc2VuZF9yZXN1 bHQgPSB5aWVsZCBkMQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJh Y2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS94ZmVyX3V0aWwucHkiLCBsaW5lIDExNiwgaW4gc2VuZAogICAgd2ggPSB3b3JtaG9sZS5j cmVhdGUoYXBwaWQsIHJlbGF5X3VybCwgcmVhY3RvciwgdG9yPXRvcikKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0g Qm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50 X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJv c3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAg IHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBz ZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6 dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxm Ll9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVu ZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxm Ll9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24v aW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxm Ll9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxp bmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24o ZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJl dHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAq dmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNv ZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBi eXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfb25fY29kZSAod29ybWhvbGUudGVzdC50 ZXN0X3hmZXJfdXRpbC5YZmVyKQp0ZXN0X29uX2NvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sg KG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9p bmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3hmZXJfdXRpbC5weSIsIGxpbmUgNDYsIGluIHJlY2VpdmUKICAgIHdo ID0gd29ybWhvbGUuY3JlYXRlKGFwcGlkLCByZWxheV91cmwsIHJlYWN0b3IsIHRvcj10b3IpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNy ZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVy c2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3Jt aG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNf cG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxp bmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWls ZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBz ZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29y bWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2lu aXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9f CiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9 ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAg ICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhv ZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoq a3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4g Y29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1 bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNv ZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUK ICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJl ZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3hmZXIgKHdvcm1o b2xlLnRlc3QudGVzdF94ZmVyX3V0aWwuWGZlcikKdGVzdF94ZmVyCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJh Y2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L3Rlc3RfeGZlcl91dGlsLnB5IiwgbGluZSAxOCwgaW4gdGVzdF94ZmVyCiAgICBz ZW5kX3Jlc3VsdCA9IHlpZWxkIGQxCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxp bmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3hmZXJfdXRpbC5weSIsIGxpbmUgMTE2LCBpbiBzZW5kCiAgICB3aCA9IHdv cm1ob2xlLmNyZWF0ZShhcHBpZCwgcmVsYXlfdXJsLCByZWFjdG9yLCB0b3I9dG9yKQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUK ICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25z LCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUu X2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3Rf aW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUy LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29y a2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5f YXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xl Ll9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18K ICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAg ZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBs aWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0 dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2Fs LnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJn cyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlm dW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlv bgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hh bmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICBy ZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9saWJlZGl0ICh3b3JtaG9s ZS50ZXN0LnRlc3Rfcmxjb21wbGV0ZXIuU3luYykKdGVzdF9saWJlZGl0Ci0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAx NDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS94ZmVyX3V0aWwucHkiLCBsaW5lIDExNiwgaW4gc2Vu ZAogICAgd2ggPSB3b3JtaG9sZS5jcmVhdGUoYXBwaWQsIHJlbGF5X3VybCwgcmVhY3RvciwgdG9y PXRvcikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5 MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3Jt aG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYu X19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3Nz LnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29y a2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2Miwg aW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxm Ll91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQg aW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgs IGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9z dF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJG YWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25u ZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFp bHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlz IHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfbGli ZWRpdCAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLlN5bmMpCnRlc3RfbGliZWRpdAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5k KHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUveGZlcl91dGlsLnB5IiwgbGlu ZSA0NiwgaW4gcmVjZWl2ZQogICAgd2ggPSB3b3JtaG9sZS5jcmVhdGUoYXBwaWQsIHJlbGF5X3Vy bCwgcmVhY3RvciwgdG9yPXRvcikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhv bGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91 cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0 dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19p bml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAg c2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3Nz LnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91 c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxh dHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVj dG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18o KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcs IGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5l Y3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDEx MjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0 ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAg ICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBp biBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29k ZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9y OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K RVJST1I6IHRlc3RfbGF0ZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuUmFj ZSkKdGVzdF9sYXRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdG9yLnB5IiwgbGluZSA0 MzQsIGluIHRlc3RfbGF0ZQogICAgYy5hZGRfY2FuZGlkYXRlKHAxKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X29uZV9mb2xsb3dlciAod29ybWhvbGUudGVz dC5kaWxhdGUudGVzdF9jb25uZWN0b3IuUmFjZSkKdGVzdF9vbmVfZm9sbG93ZXIKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBs aW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICBy ZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQs IGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2sp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50 ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAog ICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVz dC9kaWxhdGUvdGVzdF9jb25uZWN0b3IucHkiLCBsaW5lIDQxMSwgaW4gdGVzdF9vbmVfZm9sbG93 ZXIKICAgIGMuYWRkX2NhbmRpZGF0ZShwMSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0 X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg NDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNv cHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpFUlJPUjogdGVzdF9vbmVfbGVhZGVyICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nv bm5lY3Rvci5SYWNlKQp0ZXN0X29uZV9sZWFkZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVE ZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFd LCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJh aXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBs aW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwg KiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25u ZWN0b3IucHkiLCBsaW5lIDM5MCwgaW4gdGVzdF9vbmVfbGVhZGVyCiAgICBjLmFkZF9jYW5kaWRh dGUocDEpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlz IHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfc3Rv cCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuUmFjZSkKdGVzdF9zdG9wCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVy LnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoq a3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3Nl ZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxp bmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJh Y2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdG9yLnB5IiwgbGluZSA0NTYsIGluIHRlc3Rfc3Rv cAogICAgYy5hZGRfY2FuZGlkYXRlKHAxKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRf XwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0 MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29w eWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVF cnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CkVSUk9SOiB0ZXN0X2FkZF9yZWxheSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25u ZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9hZGRfcmVsYXkKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4g bWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19p bmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UK ICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0g ZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVz dF9jb25uZWN0b3IucHkiLCBsaW5lIDMzNywgaW4gdGVzdF9hZGRfcmVsYXkKICAgIGMuYWRkX3Jl bGF5KFtoaW50XSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9iYXNpYyAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3Rv cikKdGVzdF9iYXNpYwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1 bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhX YXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhv bi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndp dGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5X aXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rvci5weSIsIGxpbmUg MTc2LCBpbiB0ZXN0X2Jhc2ljCiAgICBjLmdvdF9oaW50cyhbaGludF0pCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxp bmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24o ZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJl dHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAq dmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNv ZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBi eXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfZW1wdHkgKHdvcm1ob2xlLnRlc3QuZGls YXRlLnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3RfZW1wdHkKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0b3IucHkiLCBsaW5lIDE2NCwgaW4gdGVzdF9lbXB0eQogICAgYy5z dG9wKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9yZWxh eV9kZWxheSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3Rv cikKdGVzdF9yZWxheV9kZWxheQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rvci5weSIs IGxpbmUgMzA1LCBpbiB0ZXN0X3JlbGF5X2RlbGF5CiAgICBjLmdvdF9oaW50cyhbaGludDEsIGhp bnQyLCBoaW50M10pCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3Rfc3RhcnRfbGlzdGVuICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0 Q29ubmVjdG9yKQp0ZXN0X3N0YXJ0X2xpc3RlbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgNjU0LCBpbiBfcnVuQ2Fs bGJhY2tzCiAgICBjdXJyZW50LnJlc3VsdCA9IGNhbGxiYWNrKGN1cnJlbnQucmVzdWx0LCAqYXJn cywgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rv ci5weSIsIGxpbmUgMzA1LCBpbiBfbGlzdGVuaW5nCiAgICBzZWxmLmxpc3RlbmVyX3JlYWR5KGRp cmVjdF9oaW50cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9zdGFydF9zdG9wICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29u bmVjdG9yKQp0ZXN0X3N0YXJ0X3N0b3AKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJl ZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNf aW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4 Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0 bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIx NywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0b3Iu cHkiLCBsaW5lIDE1MywgaW4gdGVzdF9zdGFydF9zdG9wCiAgICBjLnN0b3AoKQogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHki LCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0 aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAg ICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2Vz KSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVy biBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5 cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3Rvcl9ub19tYW5hZ2VyICh3b3Jt aG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X3Rvcl9u b19tYW5hZ2VyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9 IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Nv bXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90 cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhX YXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdG9yLnB5IiwgbGluZSAzNTgs IGluIHRlc3RfdG9yX25vX21hbmFnZXIKICAgIGMuZ290X2hpbnRzKFtoaW50XSkKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF90b3Jfd2l0aF9tYW5hZ2VyICh3 b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X3Rv cl93aXRoX21hbmFnZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0b3IucHkiLCBsaW5l IDM2OCwgaW4gdGVzdF90b3Jfd2l0aF9tYW5hZ2VyCiAgICBjLmdvdF9oaW50cyhbaGludF0pCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYmFkX3Byb2xvZ3Vl ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9i YWRfcHJvbG9ndWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5IiwgbGluZSAz OCwgaW4gdGVzdF9iYWRfcHJvbG9ndWUKICAgIGMubWFrZUNvbm5lY3Rpb24odCkKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9wcm90 b2NvbC5weSIsIGxpbmUgNTE0LCBpbiBtYWtlQ29ubmVjdGlvbgogICAgc2VsZi5jb25uZWN0aW9u TWFkZSgpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9jb25uZWN0aW9u LnB5IiwgbGluZSA1OTQsIGluIGNvbm5lY3Rpb25NYWRlCiAgICBzZWxmLl9yZWNvcmQuc2V0X3Jv bGVfbGVhZGVyKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9iYWRfcHJvbG9ndWUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25u ZWN0aW9uKQp0ZXN0X2JhZF9wcm9sb2d1ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9u L2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5NCwgaW4gY29ubmVjdGlvbk1hZGUKICAgIHNlbGYuX3Jl Y29yZC5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwog ICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwg aW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNv ZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJv cjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CkVSUk9SOiB0ZXN0X2ZvbGxvd2VyX2NvbWJpbmVkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9mb2xsb3dlcl9jb21iaW5lZAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJl cmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwg aW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAg ICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDI0OCwgaW4gdGVzdF9mb2xsb3dlcl9j b21iaW5lZAogICAgYy5tYWtlQ29ubmVjdGlvbih0KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3Byb3RvY29sLnB5IiwgbGluZSA1 MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBzZWxmLmNvbm5lY3Rpb25NYWRlKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5Niwg aW4gY29ubmVjdGlvbk1hZGUKICAgIHNlbGYuX3JlY29yZC5zZXRfcm9sZV9mb2xsb3dlcigpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfZm9sbG93ZXJfY29t YmluZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25uZWN0aW9uKQp0 ZXN0X2ZvbGxvd2VyX2NvbWJpbmVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29u bmVjdGlvbi5weSIsIGxpbmUgNTk2LCBpbiBjb25uZWN0aW9uTWFkZQogICAgc2VsZi5fcmVjb3Jk LnNldF9yb2xlX2ZvbGxvd2VyKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAg IGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGlu IGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2Rl KHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6 IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpF UlJPUjogdGVzdF9ub19yZWxheV9mb2xsb3dlciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9j b25uZWN0aW9uLkNvbm5lY3Rpb24pCnRlc3Rfbm9fcmVsYXlfZm9sbG93ZXIKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5IiwgbGluZSAxODMsIGluIHRlc3Rfbm9fcmVsYXlfZm9s bG93ZXIKICAgIHJldHVybiBzZWxmLl90ZXN0X25vX3JlbGF5KEZPTExPV0VSKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkiLCBsaW5l IDY5LCBpbiBfdGVzdF9ub19yZWxheQogICAgYy5tYWtlQ29ubmVjdGlvbih0KQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3Byb3Rv Y29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBzZWxmLmNvbm5lY3Rpb25N YWRlKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24u cHkiLCBsaW5lIDU5NiwgaW4gY29ubmVjdGlvbk1hZGUKICAgIHNlbGYuX3JlY29yZC5zZXRfcm9s ZV9mb2xsb3dlcigpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3Rfbm9fcmVsYXlfZm9sbG93ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlv bi5Db25uZWN0aW9uKQp0ZXN0X25vX3JlbGF5X2ZvbGxvd2VyCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2Vi YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIsIGxpbmUgNTk2LCBpbiBjb25uZWN0aW9uTWFkZQog ICAgc2VsZi5fcmVjb3JkLnNldF9yb2xlX2ZvbGxvd2VyKCkKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQs IGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0 ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1 bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFs dWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9ub19yZWxheV9sZWFkZXIgKHdvcm1ob2xlLnRlc3Qu ZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25uZWN0aW9uKQp0ZXN0X25vX3JlbGF5X2xlYWRlcgot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAq Kmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNz ZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBs aW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRy YWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDE4MCwgaW4gdGVzdF9u b19yZWxheV9sZWFkZXIKICAgIHJldHVybiBzZWxmLl90ZXN0X25vX3JlbGF5KExFQURFUikKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5 IiwgbGluZSA2OSwgaW4gX3Rlc3Rfbm9fcmVsYXkKICAgIGMubWFrZUNvbm5lY3Rpb24odCkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9wcm90b2NvbC5weSIsIGxpbmUgNTE0LCBpbiBtYWtlQ29ubmVjdGlvbgogICAgc2VsZi5jb25u ZWN0aW9uTWFkZSgpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9jb25u ZWN0aW9uLnB5IiwgbGluZSA1OTQsIGluIGNvbm5lY3Rpb25NYWRlCiAgICBzZWxmLl9yZWNvcmQu c2V0X3JvbGVfbGVhZGVyKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRl ZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRl Y29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRl bXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFu IGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJP UjogdGVzdF9ub19yZWxheV9sZWFkZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVj dGlvbi5Db25uZWN0aW9uKQp0ZXN0X25vX3JlbGF5X2xlYWRlcgotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5NCwgaW4gY29ubmVjdGlvbk1hZGUK ICAgIHNlbGYuX3JlY29yZC5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwg aW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRl ZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVu Y3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1 ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9yZWxheQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0 X2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDE4OCwgaW4gdGVzdF9yZWxheQogICAgYy5tYWtlQ29ubmVj dGlvbih0KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAg ICBzZWxmLmNvbm5lY3Rpb25NYWRlKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Rp bGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5MSwgaW4gY29ubmVjdGlvbk1hZGUKICAgIGZy YW1lci51c2VfcmVsYXkoc2VsZi5fcmVsYXlfaGFuZHNoYWtlKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIz NCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29y YXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4g ZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2 YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMp Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50 ZXN0X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9yZWxheQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5MSwgaW4gY29ubmVjdGlvbk1hZGUK ICAgIGZyYW1lci51c2VfcmVsYXkoc2VsZi5fcmVsYXlfaGFuZHNoYWtlKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBs aW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9u KGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICBy ZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwg KnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBj b2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUg Ynl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlbGF5X2JhZF9yZXNwb25zZSAod29y bWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0aW9uLkNvbm5lY3Rpb24pCnRlc3RfcmVsYXlf YmFkX3Jlc3BvbnNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdGlvbi5weSIsIGxpbmUg MjI0LCBpbiB0ZXN0X3JlbGF5X2JhZF9yZXNwb25zZQogICAgYy5tYWtlQ29ubmVjdGlvbih0KQog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVy bmV0L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBzZWxmLmNv bm5lY3Rpb25NYWRlKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nv bm5lY3Rpb24ucHkiLCBsaW5lIDU5MSwgaW4gY29ubmVjdGlvbk1hZGUKICAgIGZyYW1lci51c2Vf cmVsYXkoc2VsZi5fcmVsYXlfaGFuZHNoYWtlKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X3JlbGF5X2JhZF9yZXNwb25zZSAod29ybWhvbGUudGVzdC5kaWxh dGUudGVzdF9jb25uZWN0aW9uLkNvbm5lY3Rpb24pCnRlc3RfcmVsYXlfYmFkX3Jlc3BvbnNlCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIsIGxpbmUgNTkxLCBp biBjb25uZWN0aW9uTWFkZQogICAgZnJhbWVyLnVzZV9yZWxheShzZWxmLl9yZWxheV9oYW5kc2hh a2UpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJl cXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcmVsYXlf amlsdGVkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikK dGVzdF9yZWxheV9qaWx0ZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNh bGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAg cmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5X aXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1sy XSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9w eXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlv bi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4g cnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5Iiwg bGluZSAyMTEsIGluIHRlc3RfcmVsYXlfamlsdGVkCiAgICBjLm1ha2VDb25uZWN0aW9uKHQpCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvcHJvdG9jb2wucHkiLCBsaW5lIDUxNCwgaW4gbWFrZUNvbm5lY3Rpb24KICAgIHNlbGYuY29u bmVjdGlvbk1hZGUoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29u bmVjdGlvbi5weSIsIGxpbmUgNTkxLCBpbiBjb25uZWN0aW9uTWFkZQogICAgZnJhbWVyLnVzZV9y ZWxheShzZWxmLl9yZWxheV9oYW5kc2hha2UpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dl dF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihj b3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlw ZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KRVJST1I6IHRlc3RfcmVsYXlfamlsdGVkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9yZWxheV9qaWx0ZWQKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpU cmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19kaWxhdGlvbi9jb25uZWN0aW9uLnB5IiwgbGluZSA1OTEsIGluIGNvbm5lY3Rpb25N YWRlCiAgICBmcmFtZXIudXNlX3JlbGF5KHNlbGYuX3JlbGF5X2hhbmRzaGFrZSkKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9kaXNqb2ludF92ZXJzaW9ucyAo d29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3REaWxhdG9yKQp0ZXN0X2Rpc2pv aW50X3ZlcnNpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfbWFuYWdlci5weSIsIGxpbmUgMTU0 LCBpbiB0ZXN0X2Rpc2pvaW50X3ZlcnNpb25zCiAgICBkaWwuZ290X3dvcm1ob2xlX3ZlcnNpb25z KHsiY2FuLWRpbGF0ZSI6IFstMV19KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGls YXRpb24vbWFuYWdlci5weSIsIGxpbmUgNjQxLCBpbiBnb3Rfd29ybWhvbGVfdmVyc2lvbnMKICAg IHNlbGYuX21hbmFnZXIuZ290X3dvcm1ob2xlX3ZlcnNpb25zKHRoZWlyX3dvcm1ob2xlX3ZlcnNp b25zKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vbWFuYWdlci5weSIs IGxpbmUgMTkzLCBpbiBnb3Rfd29ybWhvbGVfdmVyc2lvbnMKICAgIHNlbGYuc3RhcnQoKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAo Z290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3BlZXJfY2Fubm90X2Rp bGF0ZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3REaWxhdG9yKQp0ZXN0 X3BlZXJfY2Fubm90X2RpbGF0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X21hbmFnZXIucHkiLCBs aW5lIDE0NCwgaW4gdGVzdF9wZWVyX2Nhbm5vdF9kaWxhdGUKICAgIGRpbC5nb3Rfd29ybWhvbGVf dmVyc2lvbnMoe30pICAjIG1pc3NpbmcgImNhbi1kaWxhdGUiCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19kaWxhdGlvbi9tYW5hZ2VyLnB5IiwgbGluZSA2NDEsIGluIGdvdF93b3JtaG9s ZV92ZXJzaW9ucwogICAgc2VsZi5fbWFuYWdlci5nb3Rfd29ybWhvbGVfdmVyc2lvbnModGhlaXJf d29ybWhvbGVfdmVyc2lvbnMpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlv bi9tYW5hZ2VyLnB5IiwgbGluZSAxOTMsIGluIGdvdF93b3JtaG9sZV92ZXJzaW9ucwogICAgc2Vs Zi5zdGFydCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1 dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IK ICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMy LCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5f X2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBp biBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rf Zm9sbG93ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikK dGVzdF9mb2xsb3dlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1 bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhX YXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhv bi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndp dGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5X aXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X21hbmFnZXIucHkiLCBsaW5lIDQ0 NCwgaW4gdGVzdF9mb2xsb3dlcgogICAgbS5nb3Rfd29ybWhvbGVfdmVyc2lvbnMoeyJjYW4tZGls YXRlIjogWyIxIl19KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vbWFu YWdlci5weSIsIGxpbmUgMTkzLCBpbiBnb3Rfd29ybWhvbGVfdmVyc2lvbnMKICAgIHNlbGYuc3Rh cnQoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2xlYWRl ciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3RNYW5hZ2VyKQp0ZXN0X2xl YWRlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCph cmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQu cHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2Vi YWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fybmlu Z3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X21hbmFnZXIucHkiLCBsaW5lIDI0NSwgaW4gdGVz dF9sZWFkZXIKICAgIG0uZ290X3dvcm1ob2xlX3ZlcnNpb25zKHsiY2FuLWRpbGF0ZSI6IFsiMSJd fSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL21hbmFnZXIucHkiLCBs aW5lIDE5MywgaW4gZ290X3dvcm1ob2xlX3ZlcnNpb25zCiAgICBzZWxmLnN0YXJ0KCkKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2Fs LnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJn cyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlm dW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlv bgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hh bmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICBy ZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9taXJyb3IgKHdvcm1ob2xl LnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikKdGVzdF9taXJyb3IKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHki LCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAg ICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0 NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJh Y2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3Nl ZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC9kaWxhdGUvdGVzdF9tYW5hZ2VyLnB5IiwgbGluZSA1NDksIGluIHRlc3RfbWlycm9yCiAg ICBtLnN0YXJ0KCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF91bmtub3duX21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0 TWFuYWdlcikKdGVzdF91bmtub3duX21lc3NhZ2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVE ZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFd LCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJh aXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBs aW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwg KiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9tYW5h Z2VyLnB5IiwgbGluZSA2MjEsIGluIHRlc3RfdW5rbm93bl9tZXNzYWdlCiAgICBtLnN0YXJ0KCkK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRo b2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAq Kmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJu IGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlm dW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBj b2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2Rl CiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWly ZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jcmVhdGUgKHdv cm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5IYWxmQ2xvc2VhYmxlKQp0ZXN0X2Ny ZWF0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCph cmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQu cHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2Vi YWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fybmlu Z3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDE1OCwgaW4g dGVzdF9jcmVhdGUKICAgIHNjLCBtLCBzY2lkLCBob3N0YWRkciwgcGVlcmFkZHIsIHAgPSBtYWtl X3NjKGhhbGZfY2xvc2VhYmxlPVRydWUpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNj Ll9zZXRfcHJvdG9jb2wocCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9u L3N1YmNoYW5uZWwucHkiLCBsaW5lIDI1MSwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25u ZWN0X3Byb3RvY29sX2hhbGYoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAg ZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4g ZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUo dGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjog YW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVS Uk9SOiB0ZXN0X2xvY2FsX2Nsb3NlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5u ZWwuSGFsZkNsb3NlYWJsZSkKdGVzdF9sb2NhbF9jbG9zZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0 X3N1YmNoYW5uZWwucHkiLCBsaW5lIDE2NSwgaW4gdGVzdF9sb2NhbF9jbG9zZQogICAgc2MsIG0s IHNjaWQsIGhvc3RhZGRyLCBwZWVyYWRkciwgcCA9IG1ha2Vfc2MoaGFsZl9jbG9zZWFibGU9VHJ1 ZSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFu bmVsLnB5IiwgbGluZSAyNCwgaW4gbWFrZV9zYwogICAgc2MuX3NldF9wcm90b2NvbChwKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vc3ViY2hhbm5lbC5weSIsIGxpbmUg MjUxLCBpbiBfc2V0X3Byb3RvY29sCiAgICBzZWxmLmNvbm5lY3RfcHJvdG9jb2xfaGFsZigpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcmVtb3RlX2Nsb3Nl ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuSGFsZkNsb3NlYWJsZSkKdGVz dF9yZW1vdGVfY2xvc2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFubmVsLnB5IiwgbGlu ZSAyMTIsIGluIHRlc3RfcmVtb3RlX2Nsb3NlCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBl ZXJhZGRyLCBwID0gbWFrZV9zYyhoYWxmX2Nsb3NlYWJsZT1UcnVlKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDI0LCBp biBtYWtlX3NjCiAgICBzYy5fc2V0X3Byb3RvY29sKHApCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5IiwgbGluZSAyNTEsIGluIF9zZXRfcHJvdG9j b2wKICAgIHNlbGYuY29ubmVjdF9wcm90b2NvbF9oYWxmKCkKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQs IGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0 ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1 bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFs dWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV9iZWZvcmVfb3BlbiAod29ybWhvbGUudGVz dC5kaWxhdGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3RfY2xvc2VfYmVmb3Jl X29wZW4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigq YXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0 LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNl YmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFubmVsLnB5IiwgbGluZSAxMjksIGlu IHRlc3RfY2xvc2VfYmVmb3JlX29wZW4KICAgIHNjLnJlbW90ZV9jbG9zZSgpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIs IGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJv c3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rp b24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAg IHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMp LCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJu IGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlw ZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY29uc3VtZXIgKHdvcm1ob2xlLnRl c3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X2NvbnN1bWVyCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVy LnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoq a3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3Nl ZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxp bmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJh Y2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMTQ5LCBpbiB0ZXN0X2Nv bnN1bWVyCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBlZXJhZGRyLCBwID0gbWFrZV9zYygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5l bC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNjLl9zZXRfcHJvdG9jb2wocCkKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwucHkiLCBsaW5lIDI1 NCwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25uZWN0X3Byb3RvY29sX2Z1bGwoKTsKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2Rp Y2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3 YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNv cHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5j dGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2Rl Y2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAg ICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQg KGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jcmVhdGUgKHdvcm1o b2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X2NyZWF0 ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdz LCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHki LCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNr KHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDM2LCBpbiB0ZXN0 X2NyZWF0ZQogICAgc2MsIG0sIHNjaWQsIGhvc3RhZGRyLCBwZWVyYWRkciwgcCA9IG1ha2Vfc2Mo KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5u ZWwucHkiLCBsaW5lIDI0LCBpbiBtYWtlX3NjCiAgICBzYy5fc2V0X3Byb3RvY29sKHApCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5IiwgbGluZSAy NTQsIGluIF9zZXRfcHJvdG9jb2wKICAgIHNlbGYuY29ubmVjdF9wcm90b2NvbF9mdWxsKCk7CiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfZGF0YSAod29ybWhv bGUudGVzdC5kaWxhdGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3RfZGF0YQot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAq Kmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNz ZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBs aW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRy YWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDEwNCwgaW4gdGVzdF9k YXRhCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBlZXJhZGRyLCBwID0gbWFrZV9zYygpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5w eSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNjLl9zZXRfcHJvdG9jb2wocCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwucHkiLCBsaW5lIDI1NCwg aW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25uZWN0X3Byb3RvY29sX2Z1bGwoKTsKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2Fs LnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJn cyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlm dW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlv bgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hh bmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICBy ZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9kYXRhX2JlZm9yZV9vcGVu ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hhbm5lbEFQSSkKdGVz dF9kYXRhX2JlZm9yZV9vcGVuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAg IHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9b Ml0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv cHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRp b24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGlu IHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIs IGxpbmUgMTE2LCBpbiB0ZXN0X2RhdGFfYmVmb3JlX29wZW4KICAgIHNjLnJlbW90ZV9kYXRhKGIi ZGF0YTEiKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQo KmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAg ICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwg aW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19j b2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4g Y29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBp cyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2xv Y2FsX2Nsb3NlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hhbm5l bEFQSSkKdGVzdF9sb2NhbF9jbG9zZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNl bnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVk CiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGlu IHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19p bmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhj ZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3 LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwu cHkiLCBsaW5lIDY0LCBpbiB0ZXN0X2xvY2FsX2Nsb3NlCiAgICBzYywgbSwgc2NpZCwgaG9zdGFk ZHIsIHBlZXJhZGRyLCBwID0gbWFrZV9zYygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAg IHNjLl9zZXRfcHJvdG9jb2wocCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0 aW9uL3N1YmNoYW5uZWwucHkiLCBsaW5lIDI1NCwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5j b25uZWN0X3Byb3RvY29sX2Z1bGwoKTsKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18K ICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAs IGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHlj b2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJy b3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpFUlJPUjogdGVzdF9sb2NhbF9kb3VibGVfY2xvc2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRl c3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X2xvY2FsX2RvdWJsZV9jbG9zZQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3 KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5l IDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNl YmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDc5LCBpbiB0ZXN0X2xvY2Fs X2RvdWJsZV9jbG9zZQogICAgc2MsIG0sIHNjaWQsIGhvc3RhZGRyLCBwZWVyYWRkciwgcCA9IG1h a2Vfc2MoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1 YmNoYW5uZWwucHkiLCBsaW5lIDI0LCBpbiBtYWtlX3NjCiAgICBzYy5fc2V0X3Byb3RvY29sKHAp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5Iiwg bGluZSAyNTQsIGluIF9zZXRfcHJvdG9jb2wKICAgIHNlbGYuY29ubmVjdF9wcm90b2NvbF9mdWxs KCk7CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJl cXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcHJvZHVj ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0 ZXN0X3Byb2R1Y2VyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUg MTM2LCBpbiB0ZXN0X3Byb2R1Y2VyCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBlZXJhZGRy LCBwID0gbWFrZV9zYygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRl L3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNjLl9zZXRfcHJv dG9jb2wocCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5u ZWwucHkiLCBsaW5lIDI1NCwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25uZWN0X3Byb3Rv Y29sX2Z1bGwoKTsKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9yZW1vdGVfY2xvc2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJD aGFubmVsQVBJKQp0ZXN0X3JlbW90ZV9jbG9zZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURl ZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAy MjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0s IGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFp c2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxp bmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAq Kmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNo YW5uZWwucHkiLCBsaW5lIDk3LCBpbiB0ZXN0X3JlbW90ZV9jbG9zZQogICAgc2MsIG0sIHNjaWQs IGhvc3RhZGRyLCBwZWVyYWRkciwgcCA9IG1ha2Vfc2MoKQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDI0LCBpbiBtYWtl X3NjCiAgICBzYy5fc2V0X3Byb3RvY29sKHApCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L19kaWxhdGlvbi9zdWJjaGFubmVsLnB5IiwgbGluZSAyNTQsIGluIF9zZXRfcHJvdG9jb2wKICAg IHNlbGYuY29ubmVjdF9wcm90b2NvbF9mdWxsKCk7CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBf X2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBs aW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJv c3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlv bihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykK VHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KRVJST1I6IHRlc3Rfd3JpdGUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3Vi Y2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X3dyaXRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNr IChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1h eWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBs aW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5m b1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAg ICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5 IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYo KmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5k cnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rf c3ViY2hhbm5lbC5weSIsIGxpbmUgNDMsIGluIHRlc3Rfd3JpdGUKICAgIHNjLCBtLCBzY2lkLCBo b3N0YWRkciwgcGVlcmFkZHIsIHAgPSBtYWtlX3NjKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFubmVsLnB5IiwgbGluZSAyNCwgaW4gbWFrZV9z YwogICAgc2MuX3NldF9wcm90b2NvbChwKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9f ZGlsYXRpb24vc3ViY2hhbm5lbC5weSIsIGxpbmUgMjU0LCBpbiBfc2V0X3Byb3RvY29sCiAgICBz ZWxmLmNvbm5lY3RfcHJvdG9jb2xfZnVsbCgpOwogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X3dyaXRlX3doZW5fY2xvc2luZyAod29ybWhvbGUudGVzdC5kaWxh dGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3Rfd3JpdGVfd2hlbl9jbG9zaW5n Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2Rl ZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3Ms ICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJl c3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIs IGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2so dHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgNTIsIGluIHRlc3Rf d3JpdGVfd2hlbl9jbG9zaW5nCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBlZXJhZGRyLCBw ID0gbWFrZV9zYygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rl c3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNjLl9zZXRfcHJvdG9j b2wocCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwu cHkiLCBsaW5lIDI1NCwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25uZWN0X3Byb3RvY29s X2Z1bGwoKTsKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0 KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgog ICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIs IGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9f Y29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGlu IGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIg aXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9i YWRfaGFuZHNoYWtlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRl c3RfYmFkX2hhbmRzaGFrZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICBy ZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJd KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5 dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9u LndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBy dW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3JlY29yZC5weSIsIGxpbmUg ODYsIGluIHRlc3RfYmFkX2hhbmRzaGFrZQogICAgci5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwu cHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdz KToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1 bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9u CiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFu Z2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJl dHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290 IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2JhZF9tZXNzYWdlICh3b3Jt aG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRlc3RfYmFkX21lc3NhZ2UKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIu cHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKipr dykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2Vk CiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGlu ZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFj ZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJl c3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvdGVzdC9kaWxhdGUvdGVzdF9yZWNvcmQucHkiLCBsaW5lIDExMSwgaW4gdGVzdF9iYWRfbWVz c2FnZQogICAgci5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X2dvb2QgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfcmVjb3Jk LlJlY29yZCkKdGVzdF9nb29kCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAg IHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9b Ml0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv cHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRp b24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGlu IHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcmVjb3JkLnB5IiwgbGlu ZSAxOTAsIGluIHRlc3RfZ29vZAogICAgciwgZiwgbiA9IG1ha2VfcmVjb3JkKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9yZWNvcmQucHkiLCBsaW5lIDE3 LCBpbiBtYWtlX3JlY29yZAogICAgci5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2dvb2QyICh3b3JtaG9sZS50ZXN0LmRpbGF0 ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRlc3RfZ29vZDIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sg KG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5 YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxp bmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZv WzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAg IHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHki LCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigq YSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9y ZWNvcmQucHkiLCBsaW5lIDM2LCBpbiB0ZXN0X2dvb2QyCiAgICByLnNldF9yb2xlX2xlYWRlcigp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVp cmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfc2VuZF9yZWNv cmQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfcmVjb3JkLlJlY29yZCkKdGVzdF9zZW5kX3Jl Y29yZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCph cmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQu cHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2Vi YWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fybmlu Z3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3JlY29yZC5weSIsIGxpbmUgMTMzLCBpbiB0ZXN0 X3NlbmRfcmVjb3JkCiAgICByLnNldF9yb2xlX2xlYWRlcigpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYmFkX3Byb2xvZ3VlX2xlbmd0aCAod29ybWhvbGUu dGVzdC5kaWxhdGUudGVzdF9mcmFtZXIuRnJhbWVyKQp0ZXN0X2JhZF9wcm9sb2d1ZV9sZW5ndGgK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVm ZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywg KiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5Iiwg bGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0 cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3Vw cHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9mcmFtZXIucHkiLCBsaW5lIDIxLCBpbiB0ZXN0X2JhZF9w cm9sb2d1ZV9sZW5ndGgKICAgIGYuY29ubmVjdGlvbk1hZGUoKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIz NCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29y YXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4g ZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2 YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMp Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2JhZF9wcm9sb2d1ZV9uZXdsaW5lICh3b3JtaG9s ZS50ZXN0LmRpbGF0ZS50ZXN0X2ZyYW1lci5GcmFtZXIpCnRlc3RfYmFkX3Byb2xvZ3VlX25ld2xp bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv ZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJn cywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5 IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFj ayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdz U3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9mcmFtZXIucHkiLCBsaW5lIDM5LCBpbiB0ZXN0X2Jh ZF9wcm9sb2d1ZV9uZXdsaW5lCiAgICBmLmNvbm5lY3Rpb25NYWRlKCkKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGlu ZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihk ZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0 dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2 YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29k ZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5 dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9iYWRfcmVsYXkgKHdvcm1ob2xlLnRlc3Qu ZGlsYXRlLnRlc3RfZnJhbWVyLkZyYW1lcikKdGVzdF9iYWRfcmVsYXkKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpU cmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0 bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1 MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGls cy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNl KGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJl cmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv dXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVz dWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxh dGUvdGVzdF9mcmFtZXIucHkiLCBsaW5lIDcyLCBpbiB0ZXN0X2JhZF9yZWxheQogICAgZi51c2Vf cmVsYXkoYiJyZWxheSBoYW5kc2hha2VcbiIpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dl dF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihj b3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlw ZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KRVJST1I6IHRlc3RfZnJhbWUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZnJhbWVy LkZyYW1lcikKdGVzdF9mcmFtZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2ZyYW1lci5weSIsIGxp bmUgMTAxLCBpbiB0ZXN0X2ZyYW1lCiAgICBmLmNvbm5lY3Rpb25NYWRlKCkKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5Iiwg bGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlv bihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAg cmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyks ICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4g Y29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBl IGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9nb29kX3Byb2xvZ3VlICh3b3JtaG9s ZS50ZXN0LmRpbGF0ZS50ZXN0X2ZyYW1lci5GcmFtZXIpCnRlc3RfZ29vZF9wcm9sb2d1ZQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3 KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5l IDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNl YmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L2RpbGF0ZS90ZXN0X2ZyYW1lci5weSIsIGxpbmUgNTcsIGluIHRlc3RfZ29vZF9wcm9s b2d1ZQogICAgZi5jb25uZWN0aW9uTWFkZSgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dl dF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihj b3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlw ZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KRVJST1I6IHRlc3RfZ29vZF9yZWxheSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9m cmFtZXIuRnJhbWVyKQp0ZXN0X2dvb2RfcmVsYXkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVE ZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFd LCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJh aXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBs aW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwg KiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9mcmFt ZXIucHkiLCBsaW5lIDg3LCBpbiB0ZXN0X2dvb2RfcmVsYXkKICAgIGYudXNlX3JlbGF5KGIicmVs YXkgaGFuZHNoYWtlXG4iKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVm IGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVj b3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVt cGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4g aW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9S OiB0ZXN0X2FsbG9jYXRlX2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5EZWxlZ2F0 ZWQpCnRlc3RfYWxsb2NhdGVfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNl bnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxi YWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSAxMDQsIGluIHRlc3RfYWxsb2NhdGVf Y29kZQogICAgdzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0 b3IsIGRlbGVnYXRlPWRnKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5w eSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwg YXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMg Z2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRf XwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxm Ll9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHki LCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29u bmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJz IGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+ IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4g X19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVk KGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywg aW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChm YWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRl ZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRl Y29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRl bXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFu IGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJP UjogdGVzdF9kZWxlZ2F0ZWQgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5EZWxlZ2F0ZWQp CnRlc3RfZGVsZWdhdGVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAg ICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDcxLCBpbiB0ZXN0X2RlbGVnYXRlZAogICAgdzEg PSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IsIGRlbGVnYXRl PWRnKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkw LCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1o b2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGlu aXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5f X2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3Mu cHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3Jr ZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBp biBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYu X3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwg aW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0 X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZh aWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5l Y3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9pbnB1 dF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRGVsZWdhdGVkKQp0ZXN0X2lucHV0 X2NvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9 IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93 b3JtaG9sZS5weSIsIGxpbmUgMTEyLCBpbiB0ZXN0X2lucHV0X2NvZGUKICAgIHcxID0gd29ybWhv bGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yLCBkZWxlZ2F0ZT1kZykKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3Jl YXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJz aW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1o b2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19w b3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGlu ZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxk X3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNl bGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3Jt aG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5p dF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18K ICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1m YWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv YXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAg IHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsb2NhdGVfYW5k X3NldF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRXJyb3JzKQp0ZXN0X2FsbG9j YXRlX2FuZF9zZXRfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwog ICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA2MTMsIGluIHRlc3RfYWxsb2NhdGVfYW5kX3Nl dF9jb2RlCiAgICB3ID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFj dG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkw LCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1o b2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGlu aXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5f X2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3Mu cHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3Jr ZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBp biBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYu X3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwg aW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0 X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZh aWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5l Y3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9kZXJp dmVfa2V5X2Vhcmx5ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRXJyb3JzKQp0ZXN0X2Rl cml2ZV9rZXlfZWFybHkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAg IHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUgNTk2LCBpbiB0ZXN0X2Rlcml2ZV9rZXlfZWFybHkK ICAgIHcgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNy ZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVy c2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3Jt aG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNf cG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxp bmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWls ZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBz ZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29y bWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2lu aXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9f CiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9 ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAg ICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhv ZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoq a3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4g Y29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1 bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNv ZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUK ICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJl ZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X211bHRpcGxlX3Nl dF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRXJyb3JzKQp0ZXN0X211bHRpcGxl X3NldF9jb2RlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1 bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3Rfd29ybWhvbGUucHkiLCBsaW5lIDYwNCwgaW4gdGVzdF9tdWx0aXBsZV9zZXRfY29kZQogICAg dyA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvcikKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRl CiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9u cywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xl Ll9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0 X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5k cnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1 MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dv cmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYu X2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9f CiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAg IGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBw bGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJl dHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNh bC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2Fy Z3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5 ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rp b24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNo YW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAg cmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChn b3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsX2RlZmVycmVkcyAo d29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkluaXRpYWxGYWlsdXJlKQp0ZXN0X2FsbF9kZWZl cnJlZHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9 IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93 b3JtaG9sZS5weSIsIGxpbmUgNzI0LCBpbiB0ZXN0X2FsbF9kZWZlcnJlZHMKICAgIHcgPSB3b3Jt aG9sZS5jcmVhdGUoQVBQSUQsICJ3czovLzEyNy4wLjAuMTolZC92MSIgJSBwb3J0LCByZWFjdG9y KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBp biBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xl X3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQg d29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0 dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHki LCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJz KCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBf YnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3Vy bCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4g X19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2lu aXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1 cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3Rl ZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19t ZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdz LCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0 dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNv cHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9f LCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHlj b2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVx dWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9iYWRfZG5z ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuSW5pdGlhbEZhaWx1cmUpCnRlc3RfYmFkX2Ru cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5z ZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1o b2xlLnB5IiwgbGluZSA2ODMsIGluIHRlc3RfYmFkX2RucwogICAgdyA9IHdvcm1ob2xlLmNyZWF0 ZSgKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwg aW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9s ZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19h dHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5 IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2Vy cygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9t YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4g X2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91 cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGlu IF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0 ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVy ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJl cXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfbm9fY29u bmVjdGlvbiAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkluaXRpYWxGYWlsdXJlKQp0ZXN0 X25vX2Nvbm5lY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAg IHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUgNzA3LCBpbiB0ZXN0X25vX2Nvbm5lY3Rpb24KICAg IHcgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsICJ3czovLzEyNy4wLjAuMTolZC92MSIgJSBwb3J0 LCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxp bmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQs IHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJh dGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAg c2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv X2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWls ZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5l IDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9y KHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVy YXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGlu ZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRy c19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxB ZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hl bkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0 ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9iYXNpYyAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLlJlY29ubmVjdGlvbikKdGVzdF9i YXNpYwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0g Zy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dv cm1ob2xlLnB5IiwgbGluZSA2MjQsIGluIHRlc3RfYmFzaWMKICAgIHcxID0gd29ybWhvbGUuY3Jl YXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcs IHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lv biwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBs aW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bv c3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5f UkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3Np ZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJl bmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRy c19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3Vz LnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5l Y3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5l dC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hp bmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQs IGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0 ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1 bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFs dWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9iYXNpYyAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1o b2xlLlRyYWNlKQp0ZXN0X2Jhc2ljCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQK ICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4g cnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2lu Zm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNl cHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcs IGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUg NzQxLCBpbiB0ZXN0X2Jhc2ljCiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgIndzOi8v bG9jYWxob3N0OjEiLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3Jt aG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5 X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8 YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBf X2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAg ICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jv c3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2 b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAi PGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25u ZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRf XygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9t YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4 NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29u bmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUg MTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5l Y3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18K ICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAs IGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHlj b2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJy b3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpFUlJPUjogdGVzdF9kZWxlZ2F0ZWQgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5UcmFj ZSkKdGVzdF9kZWxlZ2F0ZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNh bGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAg cmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5X aXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1sy XSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9w eXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlv bi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4g cnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA3NjQs IGluIHRlc3RfZGVsZWdhdGVkCiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgIndzOi8v bG9jYWxob3N0OjEiLCByZWFjdG9yLCBkZWxlZ2F0ZT1kZykKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3 LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNp b24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+Iiwg bGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19w b3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYu X1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9z aWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5S ZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0 cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91 cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25u ZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJu ZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNo aW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsb2NhdGVfZGVmYXVsdCAod29ybWhvbGUudGVz dC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9hbGxvY2F0ZV9kZWZhdWx0Ci0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5Iiwg bGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBs aW5lIDEzMywgaW4gdGVzdF9hbGxvY2F0ZV9kZWZhdWx0CiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0 ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvcikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBz aWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24s CiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGlu ZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0 X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JD ID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRl LAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5k ZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNf cG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5w eSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0 b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQu cHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5l LndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBp biBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVk LAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5j dGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJv c3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVl cykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsb2NhdGVfbW9yZV93b3JkcyAod29ybWhvbGUudGVz dC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9hbGxvY2F0ZV9tb3JlX3dvcmRzCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5 IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVz dWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHki LCBsaW5lIDE0MywgaW4gdGVzdF9hbGxvY2F0ZV9tb3JlX3dvcmRzCiAgICB3MSA9IHdvcm1ob2xl LmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvcikKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9z cyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3Zl cnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+ IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRy c19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNl bGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxm Ll9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91 cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9f YXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6 dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9j b25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50 ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9t YWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUg MjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVj b3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVy biBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFs dWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUo KnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRl cykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYmFzaWMgKHdvcm1ob2xlLnRlc3QudGVzdF93 b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3RfYmFzaWMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxp bmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUgMTUyLCBpbiB0ZXN0X2Jh c2ljCiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3Rv cikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwg aW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9s ZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19h dHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5 IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2Vy cygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9t YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4g X2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91 cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGlu IF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0 ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVy ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJl cXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vk ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2Nsb3NlZAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJl c3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5 IiwgbGluZSAzNDIsIGluIHRlc3RfY2xvc2VkCiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJ RCwgc2VsZi5yZWxheXVybCwgcmVhY3RvciwgX2V2ZW50dWFsX3F1ZXVlPWVxKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAg IGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBj bGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jv c3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5p dF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBp biBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2Vy cwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBw aWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9y ZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAg IHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9 IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNh dGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJu IHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZWRfaWRsZSAod29ybWhv bGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9jbG9zZWRfaWRsZQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIs IGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3Vs dCkKU3RvcEl0ZXJhdGlvbgoKRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24s IGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAg ICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDM2NiwgaW4gdGVzdF9jbG9zZWRfaWRsZQogICAg dzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0 ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lv bnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9z dF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUg NTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93 b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxm Ll9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhv bGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRf XwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAg ICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFm KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2Fw cGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICBy ZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAo Z290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Vhcmx5ICh3b3JtaG9s ZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2Vhcmx5Ci0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAx NDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDI3 MywgaW4gdGVzdF9lYXJseQogICAgdzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVs YXl1cmwsIHJlYWN0b3IpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5 IiwgbGluZSAyOTAsIGluIGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBh cHBpZCwgd29ybWhvbGVfdmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBn ZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9f CiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYm9zcy5weSIsIGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYu X2J1aWxkX3dvcmtlcnMoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIs IGxpbmUgNjIsIGluIF9idWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25u ZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMg Z2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4i LCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBf X2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQo ZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBp biB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZh aWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVm IGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVj b3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVt cGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4g aW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9S OiB0ZXN0X2ZpeGVkX2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMp CnRlc3RfZml4ZWRfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwog ICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSAyODYsIGluIHRlc3RfZml4ZWRfY29kZQogICAg dzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0 ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lv bnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9z dF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUg NTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93 b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxm Ll9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhv bGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRf XwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAg ICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFm KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2Fw cGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICBy ZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAo Z290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2dldF9jb2RlX2Vhcmx5 ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2dldF9jb2RlX2Vh cmx5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBn LnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29y bWhvbGUucHkiLCBsaW5lIDIwMywgaW4gdGVzdF9nZXRfY29kZV9lYXJseQogICAgdzEgPSB3b3Jt aG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IsIF9ldmVudHVhbF9xdWV1 ZT1lcSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5 MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3Jt aG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYu X19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3Nz LnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29y a2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2Miwg aW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxm Ll91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQg aW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgs IGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9z dF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJG YWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25u ZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFp bHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlz IHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfZ2V0 X2NvZGVfbGF0ZSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9n ZXRfY29kZV9sYXRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICBy ZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDIxNCwgaW4gdGVzdF9nZXRfY29kZV9sYXRlCiAgICB3 MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvciwgX2V2ZW50 dWFsX3F1ZXVlPWVxKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIs IGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBw aWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2Vu ZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwog ICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9i dWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBs aW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVj dG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdl bmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+Iiwg bGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZh aWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4g d2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWls QWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBk b0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29y YXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBs YXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGlu dGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjog dGVzdF9pbnB1dF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0 ZXN0X2lucHV0X2NvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAg IHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUgMzAwLCBpbiB0ZXN0X2lucHV0X2NvZGUKICAgIHcx ID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUK ICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25z LCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUu X2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3Rf aW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUy LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29y a2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5f YXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xl Ll9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18K ICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAg ZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBs aWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0 dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2Fs LnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJn cyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlm dW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlv bgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hh bmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICBy ZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9pbnRlcmxlYXZlZCAod29y bWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9pbnRlcmxlYXZlZAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJl c3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5 IiwgbGluZSAyNDMsIGluIHRlc3RfaW50ZXJsZWF2ZWQKICAgIHcxID0gd29ybWhvbGUuY3JlYXRl KEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNp ZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5l IDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3Rf aW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMg PSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUs CiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRl enZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19w b3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5 IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rv ci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5w eSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUu d2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9tdWx0aXBsZV9tZXNzYWdlcyAod29ybWhvbGUudGVzdC50 ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9tdWx0aXBsZV9tZXNzYWdlcwotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGlu ZSAzMjIsIGluIHRlc3RfbXVsdGlwbGVfbWVzc2FnZXMKICAgIHcxID0gd29ybWhvbGUuY3JlYXRl KEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNp ZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5l IDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3Rf aW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMg PSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUs CiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRl enZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19w b3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5 IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rv ci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5w eSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUu d2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9yeF9kZWR1cCAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1o b2xlLldvcm1ob2xlcykKdGVzdF9yeF9kZWR1cAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGlu ZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA1NjgsIGluIHRlc3Rfcnhf ZGVkdXAKICAgIHcxID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFj dG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkw LCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1o b2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGlu aXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5f X2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3Mu cHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3Jr ZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBp biBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYu X3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwg aW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0 X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZh aWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5l Y3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9zYW1l X21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3Rfc2Ft ZV9tZXNzYWdlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1 bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3Rfd29ybWhvbGUucHkiLCBsaW5lIDIyNywgaW4gdGVzdF9zYW1lX21lc3NhZ2UKICAgIHcxID0g d29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAg IGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBj bGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jv c3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5p dF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBp biBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2Vy cwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBw aWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9y ZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAg IHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9 IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNh dGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJu IHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF91bmlkaXJlY3Rpb25hbCAod29y bWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF91bmlkaXJlY3Rpb25hbAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5k KHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xl LnB5IiwgbGluZSAyNjAsIGluIHRlc3RfdW5pZGlyZWN0aW9uYWwKICAgIHcxID0gd29ybWhvbGUu Y3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3Nz KHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVy c2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4i LCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJz X3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2Vs Zi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYu X3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3Vz LlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19h dHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2 b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nv bm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRl cm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21h Y2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAy MzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNv cmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJu IGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1 ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgq dmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVz KQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF92ZXJpZmllciAod29ybWhvbGUudGVzdC50ZXN0 X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF92ZXJpZmllcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4g X2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA1MTMsIGluIHRl c3RfdmVyaWZpZXIKICAgIHcxID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJs LCByZWFjdG9yLCBfZXZlbnR1YWxfcXVldWU9ZXEpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lk ZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAog IEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUg MjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9 IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6 dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bv c3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHki LCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9y LndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5 IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53 aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4g X19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rp b24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMp ClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CkVSUk9SOiB0ZXN0X3ZlcnNpb25zICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhv bGUuV29ybWhvbGVzKQp0ZXN0X3ZlcnNpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0 IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5l Q2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDU0MSwgaW4gdGVzdF92ZXJz aW9ucwogICAgdzEgPSB3b3JtaG9sZS5jcmVhdGUoCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lk ZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAog IEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUg MjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9 IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6 dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bv c3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHki LCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9y LndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5 IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53 aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4g X19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rp b24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMp ClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CkVSUk9SOiB0ZXN0X3dlbGNvbWUgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9s ZS5Xb3JtaG9sZXMpCnRlc3Rfd2VsY29tZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNh bGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA0OTMsIGluIHRlc3Rfd2VsY29t ZQogICAgdzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3Ip CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGlu IGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVf dmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3 b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0 cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIs IGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMo KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9i dWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJs LCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQg d29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBf X2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5p dF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVy ZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVk CiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21l dGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3Ms ICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1 cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29w eWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18s IGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNv ZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1 aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3dyb25nX3Bh c3N3b3JkICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25n X3Bhc3N3b3JkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1 bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3Rfd29ybWhvbGUucHkiLCBsaW5lIDM4OSwgaW4gdGVzdF93cm9uZ19wYXNzd29yZAogICAgdzEg PSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IsIF9ldmVudHVh bF9xdWV1ZT1lcSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBs aW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlk LCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVy YXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAg IHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVp bGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGlu ZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3Rv cihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5l cmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxp bmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0 cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWls QWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdo ZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFm dGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3Rfd3JvbmdfcGFzc3dvcmRfd2l0aF9sZWFkaW5nX3NwYWNlICh3b3JtaG9sZS50ZXN0LnRlc3Rf d29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfbGVhZGluZ19zcGFj ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5z ZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1o b2xlLnB5IiwgbGluZSA0NzMsIGluIHRlc3Rfd3JvbmdfcGFzc3dvcmRfd2l0aF9sZWFkaW5nX3Nw YWNlCiAgICB3ID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9y KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBp biBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xl X3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQg d29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0 dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHki LCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJz KCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBf YnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3Vy bCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4g X19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2lu aXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1 cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3Rl ZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19t ZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdz LCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0 dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNv cHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9f LCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHlj b2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVx dWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF93cm9uZ19w YXNzd29yZF93aXRoX25vbl9udW1lcmljX25hbWVwbGF0ZSAod29ybWhvbGUudGVzdC50ZXN0X3dv cm1ob2xlLldvcm1ob2xlcykKdGVzdF93cm9uZ19wYXNzd29yZF93aXRoX25vbl9udW1lcmljX25h bWVwbGF0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0 ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0 X3dvcm1ob2xlLnB5IiwgbGluZSA0ODMsIGluIHRlc3Rfd3JvbmdfcGFzc3dvcmRfd2l0aF9ub25f bnVtZXJpY19uYW1lcGxhdGUKICAgIHcgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVs YXl1cmwsIHJlYWN0b3IpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5 IiwgbGluZSAyOTAsIGluIGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBh cHBpZCwgd29ybWhvbGVfdmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBn ZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9f CiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYm9zcy5weSIsIGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYu X2J1aWxkX3dvcmtlcnMoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIs IGxpbmUgNjIsIGluIF9idWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25u ZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMg Z2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4i LCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBf X2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQo ZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBp biB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZh aWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVm IGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVj b3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVt cGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4g aW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9S OiB0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfc3BhY2VzICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29y bWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfc3BhY2VzCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5Iiwg bGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBs aW5lIDQ2MywgaW4gdGVzdF93cm9uZ19wYXNzd29yZF93aXRoX3NwYWNlcwogICAgdyA9IHdvcm1o b2xlLmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvcikKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0g Qm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50 X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJv c3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAg IHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBz ZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6 dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxm Ll9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVu ZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxm Ll9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24v aW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxm Ll9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxp bmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24o ZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJl dHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAq dmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNv ZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBi eXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfb3ZlcnJpZGUgKHdvcm1ob2xlLnRlc3Qu dGVzdF9jbGkuQXBwSUQpCnRlc3Rfb3ZlcnJpZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3Qv dGVzdF9jbGkucHkiLCBsaW5lIDExOTksIGluIHRlc3Rfb3ZlcnJpZGUKICAgIHlpZWxkIHNlbmRf ZAogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1 bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21k X3NlbmQucHkiLCBsaW5lIDY2LCBpbiBnbwogICAgdyA9IGNyZWF0ZSgKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0g Qm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50 X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJv c3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAg IHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBz ZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6 dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxm Ll9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVu ZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxm Ll9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24v aW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxm Ll9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxp bmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24o ZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJl dHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAq dmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNv ZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBi eXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfdGV4dCAod29ybWhvbGUudGVzdC50ZXN0 X2NsaS5DbGVhbnVwKQp0ZXN0X3RleHQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9j bGkucHkiLCBsaW5lIDExMDcsIGluIHRlc3RfdGV4dAogICAgeWllbGQgc2VuZF9kCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVm ZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2Vu ZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5k cnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfc2VuZC5weSIs IGxpbmUgNjYsIGluIGdvCiAgICB3ID0gY3JlYXRlKAogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNp ZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5l IDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3Rf aW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMg PSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUs CiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRl enZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19w b3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5 IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rv ci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5w eSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUu d2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF90ZXh0ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLkNsZWFu dXApCnRlc3RfdGV4dAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAg cmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xp L2NtZF9yZWNlaXZlLnB5IiwgbGluZSA4MSwgaW4gZ28KICAgIHcgPSBjcmVhdGUoCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0ZQog ICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lvbnMs IGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5f Ym9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9p bml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNTIs IGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93b3Jr ZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9h cHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUu X3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRfXwog ICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBk ID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxp Y2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICByZXR1 cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwu cHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdz KToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1 bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9u CiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFu Z2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJl dHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290 IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X290aGVyX2Vycm9yICh3b3Jt aG9sZS50ZXN0LnRlc3RfY2xpLkRpc3BhdGNoKQp0ZXN0X290aGVyX2Vycm9yCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGlu ZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3JlY2VpdmUucHkiLCBsaW5lIDgx LCBpbiBnbwogICAgdyA9IGNyZWF0ZSgKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29y bWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxh eV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAi PGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4g X19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwog ICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19i b3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6 dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUg IjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29u bmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0 X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUg ODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNv bm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5l IDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25u ZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9f CiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQw LCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5 Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVy cm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KRVJST1I6IHRlc3Rfb3RoZXJfZXJyb3IgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuRGlzcGF0 Y2gpCnRlc3Rfb3RoZXJfZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFj a3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL2NsaS9jbWRfcmVjZWl2ZS5weSIsIGxpbmUgODEsIGluIGdvCiAgICB3ID0gY3JlYXRlKAog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBj cmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3Zl cnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29y bWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJz X3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBs aW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVp bGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwg c2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdv cm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19p bml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRf XwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVz PWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAog ICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRo b2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAq Kmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJu IGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlm dW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBj b2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2Rl CiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWly ZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF90ZXh0ICh3b3Jt aG9sZS50ZXN0LnRlc3RfY2xpLlplcm9Nb2RlKQp0ZXN0X3RleHQKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvdGVzdF9jbGkucHkiLCBsaW5lIDk2OSwgaW4gdGVzdF90ZXh0CiAgICB5aWVsZCBn YXRoZXJSZXN1bHRzKFtzZW5kX2QsIHJlY2VpdmVfZF0sIFRydWUpCnR3aXN0ZWQuaW50ZXJuZXQu ZGVmZXIuRmlyc3RFcnJvcjogRmlyc3RFcnJvclsjMCwgW0ZhaWx1cmUgaW5zdGFuY2U6IFRyYWNl YmFjazogPGNsYXNzICdUeXBlRXJyb3InPjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5 cGUgYnl0ZXMpCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5Ojk2Njp0ZXN0 X3RleHQKL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfc2VuZC5weTozODpzZW5kCi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5 OjE2MTM6dW53aW5kR2VuZXJhdG9yCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5OjE1Mjk6X2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJh Y2tzCi0tLSA8ZXhjZXB0aW9uIGNhdWdodCBoZXJlPiAtLS0KL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHk6MTQxODpfaW5saW5lQ2Fs bGJhY2tzCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3NlbmQucHk6NjY6Z28KL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5OjI5MDpjcmVhdGUKPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+OjIzOl9faW5pdF9fCi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS9fYm9zcy5weTo1MjpfX2F0dHJzX3Bvc3RfaW5pdF9fCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9f Ym9zcy5weTo2MjpfYnVpbGRfd29ya2Vycwo8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUu X3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj46MTg6X19pbml0X18KL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5Ojg3Ol9fYXR0cnNfcG9zdF9pbml0X18KL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQu cHk6MTEyNzp3aGVuQ29ubmVjdGVkCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX21ldGhvZGljYWwucHk6MjM0Ol9fZ2V0X18KL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weTo0MDpkZWNvcmF0b3IKL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eTozMjpjb3B5ZnVuY3Rpb24KL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weToyMDpjb3B5Y29kZQpdXQoKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJP UjogdGVzdF9hbGxvY2F0ZV9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkFsbG9j YXRvcikKdGVzdF9hbGxvY2F0ZV9maXJzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVy cmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEs IGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4 Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2Ug ZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBs aW5lIDYxMCwgaW4gdGVzdF9hbGxvY2F0ZV9maXJzdAogICAgYS5hbGxvY2F0ZSgyLCBGYWtlV29y ZExpc3QoKSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0 KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgog ICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIs IGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9f Y29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGlu IGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIg aXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9j b25uZWN0X2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuQWxsb2NhdG9yKQp0ZXN0 X2Nvbm5lY3RfZmlyc3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA2MjgsIGlu IHRlc3RfY29ubmVjdF9maXJzdAogICAgYS5jb25uZWN0ZWQoKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIz NCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29y YXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4g ZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2 YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMp Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X25vX2FsbG9jYXRpb24gKHdvcm1ob2xlLnRlc3Qu dGVzdF9tYWNoaW5lcy5BbGxvY2F0b3IpCnRlc3Rfbm9fYWxsb2NhdGlvbgotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUg MTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0 aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFp c2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4g cmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICBy ZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3RfbWFjaGluZXMucHkiLCBsaW5lIDYwNSwgaW4gdGVzdF9ub19hbGxvY2F0aW9uCiAgICBhLmNv bm5lY3RlZCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1 dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IK ICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMy LCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5f X2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBp biBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rf YmFzaWMgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X2Jhc2ljCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5 IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50 ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAog ICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUg NDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2Vi YWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNz ZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTMzMywgaW4gdGVzdF9iYXNpYwogICAgYi5n b3RfY29kZSgiMS1jb2RlIikKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRl ZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRl Y29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRl bXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFu IGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJP UjogdGVzdF9jbG9zZV9lYXJseSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRl c3RfY2xvc2VfZWFybHkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxNDMxLCBp biB0ZXN0X2Nsb3NlX2Vhcmx5CiAgICBiLmNsb3NlKCkgICMgYmVmb3JlIGV2ZW4gdy5nb3RfY29k ZQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21l dGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3Ms ICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1 cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29w eWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18s IGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNv ZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1 aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Vycm9yX3do aWxlX2Nsb3NpbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X2Vycm9y X3doaWxlX2Nsb3NpbmcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxNDQ2LCBp biB0ZXN0X2Vycm9yX3doaWxlX2Nsb3NpbmcKICAgIGIuY2xvc2UoKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2ludGVybmFsX2Vycm9yICh3b3JtaG9sZS50 ZXN0LnRlc3RfbWFjaGluZXMuQm9zcykKdGVzdF9pbnRlcm5hbF9lcnJvcgotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUg MTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0 aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFp c2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4g cmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICBy ZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3RfbWFjaGluZXMucHkiLCBsaW5lIDE0MTksIGluIHRlc3RfaW50ZXJuYWxfZXJyb3IKICAgIGIu ZXJyb3IoVmFsdWVFcnJvcigiY2F0Y2ggbWUiKSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9f Z2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9u KGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpU eXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpFUlJPUjogdGVzdF9sb25lbHkgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5C b3NzKQp0ZXN0X2xvbmVseQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICBy ZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJd KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5 dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9u LndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBy dW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDEzODMs IGluIHRlc3RfbG9uZWx5CiAgICBiLmdvdF9jb2RlKCIxLWNvZGUiKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3NjYXJ5X3BoYXNlICh3b3JtaG9sZS50ZXN0 LnRlc3RfbWFjaGluZXMuQm9zcykKdGVzdF9zY2FyeV9waGFzZQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBp biBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5 IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhj X2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlz ZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGls cy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQg PSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFj aGluZXMucHkiLCBsaW5lIDE0ODAsIGluIHRlc3Rfc2NhcnlfcGhhc2UKICAgIGIuZ290X2NvZGUo IjEtY29kZSIpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1 dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IK ICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMy LCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5f X2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBp biBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rf c2NhcnlfdmVyc2lvbiAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3Rfc2Nh cnlfdmVyc2lvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQg PSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9j b21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhf dHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDE0NjEsIGluIHRl c3Rfc2NhcnlfdmVyc2lvbgogICAgYi5nb3RfY29kZSgiMS1jb2RlIikKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGlu ZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihk ZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0 dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2 YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29k ZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5 dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9zZXJ2ZXJfZXJyb3IgKHdvcm1ob2xlLnRl c3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X3NlcnZlcl9lcnJvcgotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRy YWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUx LCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxz LnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2Uo ZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVy YWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1 bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rf bWFjaGluZXMucHkiLCBsaW5lIDE0MDMsIGluIHRlc3Rfc2VydmVyX2Vycm9yCiAgICBiLnJ4X2Vy cm9yKCJzZXJ2ZXItZXJyb3ItbXNnIiwgb3JpZykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9f Z2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9u KGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpU eXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpFUlJPUjogdGVzdF91bmtub3duX3BoYXNlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFj aGluZXMuQm9zcykKdGVzdF91bmtub3duX3BoYXNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJl RGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5l IDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sx XSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICBy YWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEs ICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5w eSIsIGxpbmUgMTUwMSwgaW4gdGVzdF91bmtub3duX3BoYXNlCiAgICBiLmdvdF9jb2RlKCIxLWNv ZGUiKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3Vud2Vs Y29tZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfdW53ZWxjb21lCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgMjI5LCBpbiByeF93ZWxjb21lCiAg ICByYWlzZSBXZWxjb21lRXJyb3Iod2VsY29tZVsiZXJyb3IiXSkKd29ybWhvbGUuZXJyb3JzLldl bGNvbWVFcnJvcjogZ28gYXdheQoKRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRp b24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAg IHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9b Ml0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv cHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRp b24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGlu IHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTM3 NCwgaW4gdGVzdF91bndlbGNvbWUKICAgIGIucnhfd2VsY29tZSh1bndlbGNvbWUpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSAyMzgsIGluIHJ4X3dlbGNvbWUK ICAgIHNlbGYucnhfdW53ZWxjb21lKHdlbGNvbWVfZXJyb3IpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsb2NhdGVfY29kZSAod29ybWhvbGUudGVzdC50 ZXN0X21hY2hpbmVzLkNvZGUpCnRlc3RfYWxsb2NhdGVfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBp biBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5 IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhj X2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlz ZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGls cy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQg PSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFj aGluZXMucHkiLCBsaW5lIDM2NSwgaW4gdGVzdF9hbGxvY2F0ZV9jb2RlCiAgICBjLmFsbG9jYXRl X2NvZGUoMiwgd2wpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3RfaW5wdXRfY29kZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkNvZGUpCnRlc3RfaW5w dXRfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBm KCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5n c1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21w YXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJh Y2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDM3NywgaW4gdGVzdF9p bnB1dF9jb2RlCiAgICBjLmlucHV0X2NvZGUoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X3NldF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu Q29kZSkKdGVzdF9zZXRfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDMz MywgaW4gdGVzdF9zZXRfY29kZQogICAgYy5zZXRfY29kZSh1IjEtY29kZSIpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL19jb2RlLnB5IiwgbGluZSA2OCwgaW4gc2V0X2NvZGUKICAgIHNl bGYuX3NldF9jb2RlKGNvZGUpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBk ZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBk ZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0 ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBs aW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBh biBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJS T1I6IHRlc3Rfc2V0X2NvZGVfaW52YWxpZCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkNv ZGUpCnRlc3Rfc2V0X2NvZGVfaW52YWxpZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVy cmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEs IGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4 Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2Ug ZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBs aW5lIDM1NSwgaW4gdGVzdF9zZXRfY29kZV9pbnZhbGlkCiAgICBjLnNldF9jb2RlKHUiMS1jb2Rl IikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2NvZGUucHkiLCBsaW5lIDY4LCBpbiBz ZXRfY29kZQogICAgc2VsZi5fc2V0X2NvZGUoY29kZSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9iYWRfbmFtZXBsYXRlICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuSW5wdXQpCnRlc3RfYmFkX25hbWVwbGF0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGlu ZXMucHkiLCBsaW5lIDQyMSwgaW4gdGVzdF9iYWRfbmFtZXBsYXRlCiAgICBoZWxwZXIgPSBpLnN0 YXJ0KCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9pZ25v cmVfY29tcGxldGlvbiAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLklucHV0KQp0ZXN0X2ln bm9yZV9jb21wbGV0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJl c3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0p CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0 aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24u d2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgNDAzLCBp biB0ZXN0X2lnbm9yZV9jb21wbGV0aW9uCiAgICBoZWxwZXIgPSBpLnN0YXJ0KCkKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF93aXRoX2NvbXBsZXRpb24gKHdv cm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5JbnB1dCkKdGVzdF93aXRoX2NvbXBsZXRpb24KLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIu cHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKipr dykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2Vk CiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGlu ZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFj ZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJl c3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA0NDIsIGluIHRlc3Rfd2l0aF9jb21wbGV0 aW9uCiAgICBoZWxwZXIgPSBpLnN0YXJ0KCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0 X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg NDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNv cHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpFUlJPUjogdGVzdF9iYWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5LZXkpCnRl c3RfYmFkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVy bmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYo KmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdz U3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBh dC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFj ZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMjc5LCBpbiB0ZXN0X2Jh ZAogICAgay5nb3RfY29kZShjb2RlKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwog ICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwg aW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNv ZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJv cjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CkVSUk9SOiB0ZXN0X2dvb2QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5LZXkpCnRlc3Rf Z29vZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCph cmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQu cHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2Vi YWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fybmlu Z3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDI1OSwgaW4gdGVzdF9nb29k CiAgICBrLmdvdF9jb2RlKGNvZGUpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAg ICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBp biBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29k ZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9y OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K RVJST1I6IHRlc3RfcmV2ZXJzZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5LZXkpCnRl c3RfcmV2ZXJzZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAzMDQsIGluIHRl c3RfcmV2ZXJzZWQKICAgIGsuZ290X3Bha2UobXNnMikKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9jb25uZWN0X2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuTGlzdGVyKQp0ZXN0X2Nvbm5lY3RfZmlyc3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4g bWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19p bmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UK ICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0g ZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hp bmVzLnB5IiwgbGluZSA1MDUsIGluIHRlc3RfY29ubmVjdF9maXJzdAogICAgbC5jb25uZWN0ZWQo KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21l dGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3Ms ICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1 cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29w eWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18s IGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNv ZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1 aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nvbm5lY3Rf Zmlyc3RfYXNrX3R3aWNlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTGlzdGVyKQp0ZXN0 X2Nvbm5lY3RfZmlyc3RfYXNrX3R3aWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJy ZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwg aW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhj X2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBl eGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAy MTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxp bmUgNTMyLCBpbiB0ZXN0X2Nvbm5lY3RfZmlyc3RfYXNrX3R3aWNlCiAgICBsLmNvbm5lY3RlZCgp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVp cmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcmVjb25uZWN0 ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTGlzdGVyKQp0ZXN0X3JlY29ubmVjdAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3 KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5l IDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNl YmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDU1NiwgaW4gdGVzdF9yZWNvbm5lY3QKICAg IGwucmVmcmVzaCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3RfcmVmcmVzaF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkxpc3RlcikKdGVz dF9yZWZyZXNoX2ZpcnN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJl c3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0p CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0 aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24u d2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgNTcwLCBp biB0ZXN0X3JlZnJlc2hfZmlyc3QKICAgIGwucmVmcmVzaCgpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfdW5yZWZyZXNoZWQgKHdvcm1ob2xlLnRlc3QudGVz dF9tYWNoaW5lcy5MaXN0ZXIpCnRlc3RfdW5yZWZyZXNoZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4g bWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19p bmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UK ICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0g ZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hp bmVzLnB5IiwgbGluZSA1ODYsIGluIHRlc3RfdW5yZWZyZXNoZWQKICAgIGwuY29ubmVjdGVkKCkK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRo b2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAq Kmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJu IGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlm dW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBj b2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2Rl CiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWly ZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV93aGls ZV9pZGxlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTWFpbGJveCkKdGVzdF9jbG9zZV93 aGlsZV9pZGxlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9 IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Nv bXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90 cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhX YXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTE3OSwgaW4gdGVz dF9jbG9zZV93aGlsZV9pZGxlCiAgICBtLmNsb3NlKCJoYXBweSIpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUg MjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVj b3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVy biBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFs dWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUo KnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRl cykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfaWRsZV9idXRfY29ubmVj dGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTWFpbGJveCkKdGVzdF9jbG9zZV93aGls ZV9pZGxlX2J1dF9jb25uZWN0ZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAog ICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBy dW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5m b1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2Vw dGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywg aW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAx MTg0LCBpbiB0ZXN0X2Nsb3NlX3doaWxlX2lkbGVfYnV0X2Nvbm5lY3RlZAogICAgbS5jb25uZWN0 ZWQoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nsb3Nl X3doaWxlX21haWxib3hfZGlzY29ubmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu TWFpbGJveCkKdGVzdF9jbG9zZV93aGlsZV9tYWlsYm94X2Rpc2Nvbm5lY3RlZAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJl cmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwg aW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAg ICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDExOTAsIGluIHRlc3RfY2xvc2Vfd2hpbGVfbWFpbGJv eF9kaXNjb25uZWN0ZWQKICAgIG0uZ290X21haWxib3goIm1ib3gxIikKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGlu ZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihk ZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0 dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2 YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29k ZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5 dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV93aGlsZV9yZWNvbm5lY3Rpbmcg KHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5NYWlsYm94KQp0ZXN0X2Nsb3NlX3doaWxlX3Jl Y29ubmVjdGluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQg PSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9j b21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhf dHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDExOTYsIGluIHRl c3RfY2xvc2Vfd2hpbGVfcmVjb25uZWN0aW5nCiAgICBtLmdvdF9tYWlsYm94KCJtYm94MSIpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY29ubmVjdF9maXJz dCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk1haWxib3gpCnRlc3RfY29ubmVjdF9maXJz dAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdz LCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHki LCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNr KHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDEwNzAsIGluIHRlc3RfY29ubmVj dF9maXJzdAogICAgbS5hZGRfbWVzc2FnZSgicGhhc2UxIiwgYiJtc2cxIikKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5Iiwg bGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlv bihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAg cmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyks ICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4g Y29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBl IGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9tYWlsYm94X2ZpcnN0ICh3b3JtaG9s ZS50ZXN0LnRlc3RfbWFjaGluZXMuTWFpbGJveCkKdGVzdF9tYWlsYm94X2ZpcnN0Ci0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5Iiwg bGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0 bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0 LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNr KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTE2MywgaW4gdGVzdF9tYWlsYm94X2ZpcnN0CiAg ICBtLmFkZF9tZXNzYWdlKCJwaGFzZTEiLCBiIm1zZzEiKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwg aW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRl ZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVu Y3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1 ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nsb3NlX3doaWxlX2NsYWltZWQgKHdvcm1ob2xlLnRl c3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hpbGVfY2xhaW1lZAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3 KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5l IDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNl YmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDg3NiwgaW4gdGVzdF9jbG9zZV93aGlsZV9j bGFpbWVkCiAgICBuLnNldF9uYW1lcGxhdGUoIjEiKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fbmFtZXBsYXRlLnB5IiwgbGluZSA5NSwgaW4gc2V0X25hbWVwbGF0ZQogICAgc2VsZi5f c2V0X25hbWVwbGF0ZShuYW1lcGxhdGUpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9f CiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQw LCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5 Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVy cm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfY2xhaW1lZF9idXRfZGlzY29ubmVjdGVkICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Nsb3NlX3doaWxlX2NsYWlt ZWRfYnV0X2Rpc2Nvbm5lY3RlZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDkw MSwgaW4gdGVzdF9jbG9zZV93aGlsZV9jbGFpbWVkX2J1dF9kaXNjb25uZWN0ZWQKICAgIG4uc2V0 X25hbWVwbGF0ZSgiMSIpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19uYW1lcGxhdGUu cHkiLCBsaW5lIDk1LCBpbiBzZXRfbmFtZXBsYXRlCiAgICBzZWxmLl9zZXRfbmFtZXBsYXRlKG5h bWVwbGF0ZSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0 KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgog ICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIs IGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9f Y29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGlu IGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIg aXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9j bG9zZV93aGlsZV9jbGFpbWluZyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0 ZSkKdGVzdF9jbG9zZV93aGlsZV9jbGFpbWluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURl ZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAy MjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0s IGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFp c2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxp bmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAq Kmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHki LCBsaW5lIDg0MiwgaW4gdGVzdF9jbG9zZV93aGlsZV9jbGFpbWluZwogICAgbi5zZXRfbmFtZXBs YXRlKCIxIikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX25hbWVwbGF0ZS5weSIsIGxp bmUgOTUsIGluIHNldF9uYW1lcGxhdGUKICAgIHNlbGYuX3NldF9uYW1lcGxhdGUobmFtZXBsYXRl KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21l dGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3Ms ICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1 cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29w eWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18s IGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNv ZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1 aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nsb3NlX3do aWxlX2NsYWltaW5nX2J1dF9kaXNjb25uZWN0ZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5l cy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hpbGVfY2xhaW1pbmdfYnV0X2Rpc2Nvbm5lY3RlZAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAq Kmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNz ZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBs aW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRy YWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDg1NywgaW4gdGVzdF9jbG9zZV93aGls ZV9jbGFpbWluZ19idXRfZGlzY29ubmVjdGVkCiAgICBuLnNldF9uYW1lcGxhdGUoIjEiKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fbmFtZXBsYXRlLnB5IiwgbGluZSA5NSwgaW4gc2V0 X25hbWVwbGF0ZQogICAgc2VsZi5fc2V0X25hbWVwbGF0ZShuYW1lcGxhdGUpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIs IGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJv c3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rp b24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAg IHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMp LCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJu IGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlw ZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfZG9uZSAod29y bWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkKdGVzdF9jbG9zZV93aGlsZV9kb25l Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2Rl ZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3Ms ICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJl c3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIs IGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2so dHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgOTg4LCBpbiB0ZXN0X2Nsb3NlX3do aWxlX2RvbmUKICAgIG4uY29ubmVjdGVkKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0 X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg NDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNv cHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpFUlJPUjogdGVzdF9jbG9zZV93aGlsZV9kb25lX2J1dF9kaXNjb25uZWN0ZWQgKHdvcm1o b2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hpbGVfZG9uZV9i dXRfZGlzY29ubmVjdGVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJl c3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0p CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0 aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24u d2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTAxOCwg aW4gdGVzdF9jbG9zZV93aGlsZV9kb25lX2J1dF9kaXNjb25uZWN0ZWQKICAgIG4uY29ubmVjdGVk KCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19t ZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdz LCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0 dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNv cHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9f LCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHlj b2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVx dWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV93 aGlsZV9pZGxlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Ns b3NlX3doaWxlX2lkbGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA4MjQsIGlu IHRlc3RfY2xvc2Vfd2hpbGVfaWRsZQogICAgbi5jbG9zZSgpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfaWRsZV9jb25uZWN0ZWQgKHdv cm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hpbGVfaWRs ZV9jb25uZWN0ZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA4MjksIGluIHRl c3RfY2xvc2Vfd2hpbGVfaWRsZV9jb25uZWN0ZWQKICAgIG4uY29ubmVjdGVkKCkKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV93aGlsZV9yZWxlYXNp bmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hp bGVfcmVsZWFzaW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgOTI4LCBpbiB0 ZXN0X2Nsb3NlX3doaWxlX3JlbGVhc2luZwogICAgbi5zZXRfbmFtZXBsYXRlKCIxIikKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX25hbWVwbGF0ZS5weSIsIGxpbmUgOTUsIGluIHNldF9u YW1lcGxhdGUKICAgIHNlbGYuX3NldF9uYW1lcGxhdGUobmFtZXBsYXRlKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBs aW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9u KGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICBy ZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwg KnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBj b2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUg Ynl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nsb3NlX3doaWxlX3JlbGVhc2luZ19i dXRfZGlzY29ubmVjdGVkYSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkK dGVzdF9jbG9zZV93aGlsZV9yZWxlYXNpbmdfYnV0X2Rpc2Nvbm5lY3RlZGEKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA5NTQsIGluIHRlc3RfY2xvc2Vfd2hpbGVfcmVsZWFzaW5n X2J1dF9kaXNjb25uZWN0ZWRhCiAgICBuLnNldF9uYW1lcGxhdGUoIjEiKQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9fbmFtZXBsYXRlLnB5IiwgbGluZSA5NSwgaW4gc2V0X25hbWVwbGF0 ZQogICAgc2VsZi5fc2V0X25hbWVwbGF0ZShuYW1lcGxhdGUpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfdW5jbGFpbWVkICh3b3JtaG9s ZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Nsb3NlX3doaWxlX3VuY2xhaW1l ZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdz LCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHki LCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNr KHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDgzNiwgaW4gdGVzdF9jbG9zZV93 aGlsZV91bmNsYWltZWQKICAgIG4uc2V0X25hbWVwbGF0ZSgiMSIpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19uYW1lcGxhdGUucHkiLCBsaW5lIDk1LCBpbiBzZXRfbmFtZXBsYXRlCiAg ICBzZWxmLl9zZXRfbmFtZXBsYXRlKG5hbWVwbGF0ZSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9jb25uZWN0X2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Nvbm5lY3RfZmlyc3QKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwg aW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4 Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFp c2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRp bHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0 ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21h Y2hpbmVzLnB5IiwgbGluZSA3MDQsIGluIHRlc3RfY29ubmVjdF9maXJzdAogICAgbi5jb25uZWN0 ZWQoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlY29u bmVjdF93aGlsZV9jbGFpbWVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRl KQp0ZXN0X3JlY29ubmVjdF93aGlsZV9jbGFpbWVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJl RGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5l IDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sx XSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICBy YWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEs ICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5w eSIsIGxpbmUgNzQ0LCBpbiB0ZXN0X3JlY29ubmVjdF93aGlsZV9jbGFpbWVkCiAgICBuLmNvbm5l Y3RlZCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlz IHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcmVj b25uZWN0X3doaWxlX2NsYWltaW5nICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBs YXRlKQp0ZXN0X3JlY29ubmVjdF93aGlsZV9jbGFpbWluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGlu ZXMucHkiLCBsaW5lIDczMCwgaW4gdGVzdF9yZWNvbm5lY3Rfd2hpbGVfY2xhaW1pbmcKICAgIG4u Y29ubmVjdGVkKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9yZWNvbm5lY3Rfd2hpbGVfZG9uZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVw bGF0ZSkKdGVzdF9yZWNvbm5lY3Rfd2hpbGVfZG9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAo bW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXli ZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGlu ZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9b MV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAg cmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCph LCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMu cHkiLCBsaW5lIDc5NCwgaW4gdGVzdF9yZWNvbm5lY3Rfd2hpbGVfZG9uZQogICAgbi5jb25uZWN0 ZWQoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlY29u bmVjdF93aGlsZV9yZWxlYXNpbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxh dGUpCnRlc3RfcmVjb25uZWN0X3doaWxlX3JlbGVhc2luZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGlu ZXMucHkiLCBsaW5lIDc2NywgaW4gdGVzdF9yZWNvbm5lY3Rfd2hpbGVfcmVsZWFzaW5nCiAgICBu LmNvbm5lY3RlZCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3Rfc2V0X2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0 X3NldF9maXJzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQg PSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9j b21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhf dHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDY3OSwgaW4gdGVz dF9zZXRfZmlyc3QKICAgIG4uc2V0X25hbWVwbGF0ZSgiMSIpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19uYW1lcGxhdGUucHkiLCBsaW5lIDk1LCBpbiBzZXRfbmFtZXBsYXRlCiAgICBz ZWxmLl9zZXRfbmFtZXBsYXRlKG5hbWVwbGF0ZSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9f Z2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9u KGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpU eXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpFUlJPUjogdGVzdF9zZXRfaW52YWxpZCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hp bmVzLk5hbWVwbGF0ZSkKdGVzdF9zZXRfaW52YWxpZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAo bW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXli ZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGlu ZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9b MV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAg cmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCph LCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMu cHkiLCBsaW5lIDY3MSwgaW4gdGVzdF9zZXRfaW52YWxpZAogICAgbi5zZXRfbmFtZXBsYXRlKCIx IikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX25hbWVwbGF0ZS5weSIsIGxpbmUgOTUs IGluIHNldF9uYW1lcGxhdGUKICAgIHNlbGYuX3NldF9uYW1lcGxhdGUobmFtZXBsYXRlKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAo Z290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2luX29yZGVyICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuT3JkZXIpCnRlc3RfaW5fb3JkZXIKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxMjIsIGluIHRlc3RfaW5fb3JkZXIKICAgIG8uZ290X21l c3NhZ2UodSJzaWRlIiwgdSJwYWtlIiwgYiJib2R5IikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX29yZGVyLnB5IiwgbGluZSA0MiwgaW4gZ290X21lc3NhZ2UKICAgIHNlbGYuZ290X3Bh a2Uoc2lkZSwgcGhhc2UsIGJvZHkpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAg ICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBp biBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29k ZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9y OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K RVJST1I6IHRlc3Rfb3V0X29mX29yZGVyICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuT3Jk ZXIpCnRlc3Rfb3V0X29mX29yZGVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQK ICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4g cnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2lu Zm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNl cHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcs IGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUg MTM0LCBpbiB0ZXN0X291dF9vZl9vcmRlcgogICAgby5nb3RfbWVzc2FnZSh1InNpZGUiLCB1InZl cnNpb24iLCBiImJvZHkiKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fb3JkZXIucHki LCBsaW5lIDQ0LCBpbiBnb3RfbWVzc2FnZQogICAgc2VsZi5nb3Rfbm9uX3Bha2Uoc2lkZSwgcGhh c2UsIGJvZHkpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1 dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IK ICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMy LCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5f X2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBp biBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rf ZWFybHlfYmFkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuUmVjZWl2ZSkKdGVzdF9lYXJs eV9iYWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigq YXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0 LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNl YmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxODksIGluIHRlc3RfZWFy bHlfYmFkCiAgICByLmdvdF9rZXkoa2V5KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRf XwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0 MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29w eWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVF cnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CkVSUk9SOiB0ZXN0X2dvb2QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5SZWNlaXZl KQp0ZXN0X2dvb2QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxNjAsIGluIHRl c3RfZ29vZAogICAgci5nb3Rfa2V5KGtleSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0 X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg NDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNv cHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpFUlJPUjogdGVzdF9sYXRlX2JhZCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLlJl Y2VpdmUpCnRlc3RfbGF0ZV9iYWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAog ICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBy dW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5m b1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2Vw dGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywg aW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAy MTAsIGluIHRlc3RfbGF0ZV9iYWQKICAgIHIuZ290X2tleShrZXkpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUg MjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVj b3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVy biBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFs dWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUo KnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRl cykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYmFzaWMgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5SZW5kZXp2b3VzKQp0ZXN0X2Jhc2ljCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJl RGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5l IDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sx XSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICBy YWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEs ICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5w eSIsIGxpbmUgMTU2NSwgaW4gdGVzdF9iYXNpYwogICAgcmMsIGV2ZW50cyA9IHNlbGYuYnVpbGQo KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBs aW5lIDE1NTIsIGluIGJ1aWxkCiAgICByYyA9IF9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0 b3IoCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJl bmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRy c19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3Vz LnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5l Y3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5l dC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hp bmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQs IGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0 ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1 bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFs dWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9lbmRwb2ludHMgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5SZW5kZXp2b3VzKQp0ZXN0X2VuZHBvaW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGlu ZXMucHkiLCBsaW5lIDE2MzEsIGluIHRlc3RfZW5kcG9pbnRzCiAgICByYyA9IF9yZW5kZXp2b3Vz LlJlbmRlenZvdXNDb25uZWN0b3IoCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1o b2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0 X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwog ICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZh ZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9h cHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAg cmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2Rp Y2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3 YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNv cHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5j dGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2Rl Y2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAg ICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQg KGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF93ZWJzb2NrZXRfZmFp bHVyZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLlJlbmRlenZvdXMpCnRlc3Rfd2Vic29j a2V0X2ZhaWx1cmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxNTcyLCBpbiB0 ZXN0X3dlYnNvY2tldF9mYWlsdXJlCiAgICByYywgZXZlbnRzID0gc2VsZi5idWlsZCgpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTU1 MiwgaW4gYnVpbGQKICAgIHJjID0gX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3RvcigKICBG aWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91 c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3Rf aW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBs aW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndo ZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5Iiwg bGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVu Q29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X3dlYnNvY2tldF9sb3N0ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFj aGluZXMuUmVuZGV6dm91cykKdGVzdF93ZWJzb2NrZXRfbG9zdAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBp biBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5 IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhj X2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlz ZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGls cy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQg PSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFj aGluZXMucHkiLCBsaW5lIDE1ODQsIGluIHRlc3Rfd2Vic29ja2V0X2xvc3QKICAgIHJjLCBldmVu dHMgPSBzZWxmLmJ1aWxkKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0 X21hY2hpbmVzLnB5IiwgbGluZSAxNTUyLCBpbiBidWlsZAogICAgcmMgPSBfcmVuZGV6dm91cy5S ZW5kZXp2b3VzQ29ubmVjdG9yKAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9f CiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAg IGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBw bGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJl dHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNh bC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2Fy Z3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5 ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rp b24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNo YW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAg cmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChn b3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfa2V5X2ZpcnN0ICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuU2VuZCkKdGVzdF9rZXlfZmlyc3QKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA4OSwgaW4gdGVzdF9rZXlfZmlyc3QKICAgIHMuZ290X3Zl cmlmaWVkX2tleShrZXkpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYg ZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNv cmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBs aW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1w bGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBp bnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6 IHRlc3Rfc2VuZF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLlNlbmQpCnRlc3Rf c2VuZF9maXJzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQg PSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9j b21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhf dHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDYzLCBpbiB0ZXN0 X3NlbmRfZmlyc3QKICAgIHMuc2VuZCgicGhhc2UxIiwgYiJtc2ciKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3Rlcm1pbmF0ZSAod29ybWhvbGUudGVzdC50 ZXN0X21hY2hpbmVzLlRlcm1pbmF0b3IpCnRlc3RfdGVybWluYXRlCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJh Y2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEs IGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShl eGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJh aXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0 aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3Vs dCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9t YWNoaW5lcy5weSIsIGxpbmUgMTI4NiwgaW4gdGVzdF90ZXJtaW5hdGUKICAgIHNlbGYuX2RvX3Rl c3QoIm1haWxib3giLCAibmFtZXBsYXRlIiwgInJjIikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxMjQ2LCBpbiBfZG9fdGVzdAogICAg aW5wdXRfZXZlbnRzW2V2MV0oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3RfbWFjaGluZXMucHkiLCBsaW5lIDEyMzIsIGluIDxsYW1iZGE+CiAgICAibWFpbGJveCI6IGxh bWJkYTogdC5tYWlsYm94X2RvbmUoKSwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18K ICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAs IGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHlj b2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJy b3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpGQUlMOiB0ZXN0X3N0YXJ0X2xpc3RlbiAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25u ZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9zdGFydF9saXN0ZW4KLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwg aW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4 Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFp c2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRp bHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0 ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUv dGVzdF9jb25uZWN0b3IucHkiLCBsaW5lIDIyMCwgaW4gdGVzdF9zdGFydF9saXN0ZW4KICAgIHNl bGYuYXNzZXJ0RXF1YWwoaC5tYW5hZ2VyLm1vY2tfY2FsbHMsCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdHJpYWwvX3N5bmN0ZXN0LnB5IiwgbGlu ZSA0MzIsIGluIGFzc2VydEVxdWFsCiAgICBzdXBlcihfQXNzZXJ0aW9ucywgc2VsZikuYXNzZXJ0 RXF1YWwoZmlyc3QsIHNlY29uZCwgbXNnKQogIEZpbGUgIi9nbnUvc3RvcmUvcTlybThoOWltYXpz cTJjNHFpdjJ5anB2bHZsaXl3cWItcHl0aG9uLTMuOC4yL2xpYi9weXRob24zLjgvdW5pdHRlc3Qv Y2FzZS5weSIsIGxpbmUgOTEyLCBpbiBhc3NlcnRFcXVhbAogICAgYXNzZXJ0aW9uX2Z1bmMoZmly c3QsIHNlY29uZCwgbXNnPW1zZykKICBGaWxlICIvZ251L3N0b3JlL3E5cm04aDlpbWF6c3EyYzRx aXYyeWpwdmx2bGl5d3FiLXB5dGhvbi0zLjguMi9saWIvcHl0aG9uMy44L3VuaXR0ZXN0L2Nhc2Uu cHkiLCBsaW5lIDkwNSwgaW4gX2Jhc2VBc3NlcnRFcXVhbAogICAgcmFpc2Ugc2VsZi5mYWlsdXJl RXhjZXB0aW9uKG1zZykKdHdpc3RlZC50cmlhbC51bml0dGVzdC5GYWlsVGVzdDogW10gIT0gW2Nh bGwuc2VuZF9oaW50cyhbeyd0eXBlJzogJ2RpcmVjdC10Y3AtdjEnWzEzMCBjaGFyc10wfV0pXQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpGQUlMOiB0ZXN0X3RleHRfd3JvbmdfcGFzc3dvcmQgKHdvcm1ob2xlLnRl c3QudGVzdF9jbGkuQ2xlYW51cCkKdGVzdF90ZXh0X3dyb25nX3Bhc3N3b3JkCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5IiwgbGluZSAxMTI3LCBpbiB0ZXN0X3RleHRfd3Jv bmdfcGFzc3dvcmQKICAgIHlpZWxkIHNlbGYuYXNzZXJ0RmFpbHVyZShzZW5kX2QsIFdyb25nUGFz c3dvcmRFcnJvcikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgNjU0LCBpbiBfcnVuQ2FsbGJhY2tzCiAg ICBjdXJyZW50LnJlc3VsdCA9IGNhbGxiYWNrKGN1cnJlbnQucmVzdWx0LCAqYXJncywgKiprdykK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90cmlh bC9fYXN5bmN0ZXN0LnB5IiwgbGluZSA3NSwgaW4gX2ViCiAgICByYWlzZSBzZWxmLmZhaWx1cmVF eGNlcHRpb24ob3V0cHV0KQp0d2lzdGVkLnRyaWFsLnVuaXR0ZXN0LkZhaWxUZXN0OiAKRXhwZWN0 ZWQ6ICg8Y2xhc3MgJ3dvcm1ob2xlLmVycm9ycy5Xcm9uZ1Bhc3N3b3JkRXJyb3InPiwpCkdvdDoK W0ZhaWx1cmUgaW5zdGFuY2U6IFRyYWNlYmFjazogPGNsYXNzICdUeXBlRXJyb3InPjogYW4gaW50 ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3RfY2xpLnB5OjExMjA6dGVzdF90ZXh0X3dyb25nX3Bhc3N3b3JkCi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS9jbGkvY21kX3NlbmQucHk6Mzg6c2VuZAovZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNjEzOnVud2luZEdlbmVy YXRvcgovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weToxNTI5Ol9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNrcwotLS0gPGV4Y2VwdGlv biBjYXVnaHQgaGVyZT4gLS0tCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5OjE0MTg6X2lubGluZUNhbGxiYWNrcwovdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvY2xpL2NtZF9zZW5kLnB5OjY2OmdvCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93 b3JtaG9sZS5weToyOTA6Y3JlYXRlCjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9z cy5Cb3NzPjoyMzpfX2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHk6NTI6X19h dHRyc19wb3N0X2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHk6NjI6X2J1aWxk X3dvcmtlcnMKPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRl enZvdXNDb25uZWN0b3I+OjE4Ol9faW5pdF9fCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6 dm91cy5weTo4NzpfX2F0dHJzX3Bvc3RfaW5pdF9fCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5OjExMjc6d2hlbkNvbm5l Y3RlZAovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2Rp Y2FsLnB5OjIzNDpfX2dldF9fCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6NDA6ZGVjb3JhdG9yCi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6MzI6Y29weWZ1bmN0aW9u Ci9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHk6MjA6Y29weWNvZGUKXQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGQUlMOiB0ZXN0X3JlY2VpdmVyICh3 b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk5vU2VydmVyKQp0ZXN0X3JlY2VpdmVyCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGlu ZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQpT dG9wSXRlcmF0aW9uCgpEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5v dGhlciBleGNlcHRpb24gb2NjdXJyZWQ6CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJl c3VsdCA9IGcuc2VuZChyZXN1bHQpClN0b3BJdGVyYXRpb24KCkR1cmluZyBoYW5kbGluZyBvZiB0 aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X2NsaS5weSIsIGxpbmUgMTA4MSwgaW4gdGVzdF9yZWNlaXZlcgogICAgZSA9IHlp ZWxkIHNlbGYuYXNzZXJ0RmFpbHVyZShyZWNlaXZlX2QsIFNlcnZlckNvbm5lY3Rpb25FcnJvcikK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC9kZWZlci5weSIsIGxpbmUgNjU0LCBpbiBfcnVuQ2FsbGJhY2tzCiAgICBjdXJyZW50LnJl c3VsdCA9IGNhbGxiYWNrKGN1cnJlbnQucmVzdWx0LCAqYXJncywgKiprdykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90cmlhbC9fYXN5bmN0ZXN0 LnB5IiwgbGluZSA3NSwgaW4gX2ViCiAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24ob3V0 cHV0KQp0d2lzdGVkLnRyaWFsLnVuaXR0ZXN0LkZhaWxUZXN0OiAKRXhwZWN0ZWQ6ICg8Y2xhc3Mg J3dvcm1ob2xlLmVycm9ycy5TZXJ2ZXJDb25uZWN0aW9uRXJyb3InPiwpCkdvdDoKW0ZhaWx1cmUg aW5zdGFuY2U6IFRyYWNlYmFjazogPGNsYXNzICdUeXBlRXJyb3InPjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rf Y2xpLnB5OjEwODA6dGVzdF9yZWNlaXZlcgovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9y ZWNlaXZlLnB5OjQ5OnJlY2VpdmUKL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHk6MTYxMzp1bndpbmRHZW5lcmF0b3IKL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHk6MTUy OTpfY2FuY2VsbGFibGVJbmxpbmVDYWxsYmFja3MKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+ IC0tLQovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weToxNDE4Ol9pbmxpbmVDYWxsYmFja3MKL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2Ns aS9jbWRfcmVjZWl2ZS5weTo4MTpnbwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHk6 MjkwOmNyZWF0ZQo8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz46MjM6 X19pbml0X18KL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5OjUyOl9fYXR0cnNfcG9zdF9p bml0X18KL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5OjYyOl9idWlsZF93b3JrZXJzCjxh dHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVj dG9yPjoxODpfX2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHk6ODc6 X19hdHRyc19wb3N0X2luaXRfXwovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weToxMTI3OndoZW5Db25uZWN0ZWQKL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weToyMzQ6 X19nZXRfXwovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5OjQwOmRlY29yYXRvcgovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5OjMyOmNvcHlmdW5jdGlvbgovZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5OjIwOmNv cHljb2RlCl0KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KRkFJTDogdGVzdF9zZW5kZXIgKHdvcm1ob2xlLnRlc3Qu dGVzdF9jbGkuTm9TZXJ2ZXIpCnRlc3Rfc2VuZGVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5s aW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQpTdG9wSXRlcmF0aW9uCgpE dXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24g b2NjdXJyZWQ6CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIu cHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChy ZXN1bHQpClN0b3BJdGVyYXRpb24KCkR1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0 aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2NsaS5w eSIsIGxpbmUgMTA0OSwgaW4gdGVzdF9zZW5kZXIKICAgIGUgPSB5aWVsZCBzZWxmLmFzc2VydEZh aWx1cmUoc2VuZF9kLCBTZXJ2ZXJDb25uZWN0aW9uRXJyb3IpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDY1NCwgaW4gX3J1bkNhbGxiYWNrcwogICAgY3VycmVudC5yZXN1bHQgPSBjYWxsYmFjayhjdXJy ZW50LnJlc3VsdCwgKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvdHJpYWwvX2FzeW5jdGVzdC5weSIsIGxpbmUgNzUsIGluIF9l YgogICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKG91dHB1dCkKdHdpc3RlZC50cmlhbC51 bml0dGVzdC5GYWlsVGVzdDogCkV4cGVjdGVkOiAoPGNsYXNzICd3b3JtaG9sZS5lcnJvcnMuU2Vy dmVyQ29ubmVjdGlvbkVycm9yJz4sKQpHb3Q6CltGYWlsdXJlIGluc3RhbmNlOiBUcmFjZWJhY2s6 IDxjbGFzcyAnVHlwZUVycm9yJz46IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5 dGVzKQovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2NsaS5weToxMDQ4OnRlc3Rfc2Vu ZGVyCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3NlbmQucHk6Mzg6c2VuZAovZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weTox NjEzOnVud2luZEdlbmVyYXRvcgovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNTI5Ol9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNr cwotLS0gPGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5OjE0MTg6X2lubGluZUNhbGxi YWNrcwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9zZW5kLnB5OjY2OmdvCi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS93b3JtaG9sZS5weToyOTA6Y3JlYXRlCjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fYm9zcy5Cb3NzPjoyMzpfX2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv X2Jvc3MucHk6NTI6X19hdHRyc19wb3N0X2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jv c3MucHk6NjI6X2J1aWxkX3dvcmtlcnMKPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9y ZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+OjE4Ol9faW5pdF9fCi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fcmVuZGV6dm91cy5weTo4NzpfX2F0dHJzX3Bvc3RfaW5pdF9fCi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5 OjExMjc6d2hlbkNvbm5lY3RlZAovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5OjIzNDpfX2dldF9fCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6NDA6ZGVjb3JhdG9yCi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6 MzI6Y29weWZ1bmN0aW9uCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHk6MjA6Y29weWNvZGUKXQoKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGQUlMOiB0 ZXN0X3NlbmRlcl9hbGxvY2F0aW9uICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk5vU2VydmVyKQp0 ZXN0X3NlbmRlcl9hbGxvY2F0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJh Y2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQpTdG9wSXRlcmF0aW9uCgpEdXJpbmcgaGFu ZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6 CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpClN0 b3BJdGVyYXRpb24KCkR1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90 aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2NsaS5weSIsIGxpbmUg MTA2NSwgaW4gdGVzdF9zZW5kZXJfYWxsb2NhdGlvbgogICAgZSA9IHlpZWxkIHNlbGYuYXNzZXJ0 RmFpbHVyZShzZW5kX2QsIFNlcnZlckNvbm5lY3Rpb25FcnJvcikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgNjU0LCBpbiBfcnVuQ2FsbGJhY2tzCiAgICBjdXJyZW50LnJlc3VsdCA9IGNhbGxiYWNrKGN1 cnJlbnQucmVzdWx0LCAqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90cmlhbC9fYXN5bmN0ZXN0LnB5IiwgbGluZSA3NSwgaW4g X2ViCiAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24ob3V0cHV0KQp0d2lzdGVkLnRyaWFs LnVuaXR0ZXN0LkZhaWxUZXN0OiAKRXhwZWN0ZWQ6ICg8Y2xhc3MgJ3dvcm1ob2xlLmVycm9ycy5T ZXJ2ZXJDb25uZWN0aW9uRXJyb3InPiwpCkdvdDoKW0ZhaWx1cmUgaW5zdGFuY2U6IFRyYWNlYmFj azogPGNsYXNzICdUeXBlRXJyb3InPjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUg Ynl0ZXMpCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5OjEwNjQ6dGVzdF9z ZW5kZXJfYWxsb2NhdGlvbgovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9zZW5kLnB5OjM4 OnNlbmQKL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHk6MTYxMzp1bndpbmRHZW5lcmF0b3IKL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHk6MTUyOTpfY2FuY2VsbGFibGVJ bmxpbmVDYWxsYmFja3MKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQovZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNDE4 Ol9pbmxpbmVDYWxsYmFja3MKL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5k cnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfc2VuZC5weTo2 NjpnbwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHk6MjkwOmNyZWF0ZQo8YXR0cnMg Z2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz46MjM6X19pbml0X18KL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19ib3NzLnB5OjUyOl9fYXR0cnNfcG9zdF9pbml0X18KL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19ib3NzLnB5OjYyOl9idWlsZF93b3JrZXJzCjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPjoxODpfX2luaXRfXwov dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHk6ODc6X19hdHRyc19wb3N0X2luaXRf XwovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlv bi9pbnRlcm5ldC5weToxMTI3OndoZW5Db25uZWN0ZWQKL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weToyMzQ6X19nZXRfXwovZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5OjQwOmRl Y29yYXRvcgovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5OjMyOmNvcHlmdW5jdGlvbgovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5OjIwOmNvcHljb2RlCl0KCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KRkFJTDogdGVzdF9yZWNlaXZlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Ob3RXZWxj b21lKQp0ZXN0X3JlY2VpdmVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5 IiwgbGluZSAxMDI1LCBpbiB0ZXN0X3JlY2VpdmVyCiAgICBmID0geWllbGQgc2VsZi5hc3NlcnRG YWlsdXJlKHJlY2VpdmVfZCwgV2VsY29tZUVycm9yKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSA2NTQs IGluIF9ydW5DYWxsYmFja3MKICAgIGN1cnJlbnQucmVzdWx0ID0gY2FsbGJhY2soY3VycmVudC5y ZXN1bHQsICphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3RyaWFsL19hc3luY3Rlc3QucHkiLCBsaW5lIDc1LCBpbiBfZWIKICAg IHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihvdXRwdXQpCnR3aXN0ZWQudHJpYWwudW5pdHRl c3QuRmFpbFRlc3Q6IApFeHBlY3RlZDogKDxjbGFzcyAnd29ybWhvbGUuZXJyb3JzLldlbGNvbWVF cnJvcic+LCkKR290OgpbRmFpbHVyZSBpbnN0YW5jZTogVHJhY2ViYWNrOiA8Y2xhc3MgJ1R5cGVF cnJvcic+OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9jbGkucHk6MTAyNDp0ZXN0X3JlY2VpdmVyCi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9jbGkvY21kX3JlY2VpdmUucHk6NDk6cmVjZWl2ZQovZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNjEzOnVu d2luZEdlbmVyYXRvcgovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weToxNTI5Ol9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNrcwotLS0g PGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5OjE0MTg6X2lubGluZUNhbGxiYWNrcwov dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9yZWNlaXZlLnB5OjgxOmdvCi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS93b3JtaG9sZS5weToyOTA6Y3JlYXRlCjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3 b3JtaG9sZS5fYm9zcy5Cb3NzPjoyMzpfX2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jv c3MucHk6NTI6X19hdHRyc19wb3N0X2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3Mu cHk6NjI6X2J1aWxkX3dvcmtlcnMKPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5k ZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+OjE4Ol9faW5pdF9fCi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fcmVuZGV6dm91cy5weTo4NzpfX2F0dHJzX3Bvc3RfaW5pdF9fCi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5OjEx Mjc6d2hlbkNvbm5lY3RlZAovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19tZXRob2RpY2FsLnB5OjIzNDpfX2dldF9fCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6NDA6ZGVjb3JhdG9yCi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6MzI6 Y29weWZ1bmN0aW9uCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHk6MjA6Y29weWNvZGUKXQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGQUlMOiB0ZXN0 X3NlbmRlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Ob3RXZWxjb21lKQp0ZXN0X3NlbmRlcgot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2NsaS5weSIsIGxpbmUgMTAxNywgaW4gdGVz dF9zZW5kZXIKICAgIGYgPSB5aWVsZCBzZWxmLmFzc2VydEZhaWx1cmUoc2VuZF9kLCBXZWxjb21l RXJyb3IpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDY1NCwgaW4gX3J1bkNhbGxiYWNrcwogICAgY3Vy cmVudC5yZXN1bHQgPSBjYWxsYmFjayhjdXJyZW50LnJlc3VsdCwgKmFyZ3MsICoqa3cpCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdHJpYWwvX2Fz eW5jdGVzdC5weSIsIGxpbmUgNzUsIGluIF9lYgogICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0 aW9uKG91dHB1dCkKdHdpc3RlZC50cmlhbC51bml0dGVzdC5GYWlsVGVzdDogCkV4cGVjdGVkOiAo PGNsYXNzICd3b3JtaG9sZS5lcnJvcnMuV2VsY29tZUVycm9yJz4sKQpHb3Q6CltGYWlsdXJlIGlu c3RhbmNlOiBUcmFjZWJhY2s6IDxjbGFzcyAnVHlwZUVycm9yJz46IGFuIGludGVnZXIgaXMgcmVx dWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2Ns aS5weToxMDE2OnRlc3Rfc2VuZGVyCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3NlbmQu cHk6Mzg6c2VuZAovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weToxNjEzOnVud2luZEdlbmVyYXRvcgovZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNTI5Ol9jYW5jZWxs YWJsZUlubGluZUNhbGxiYWNrcwotLS0gPGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5 OjE0MTg6X2lubGluZUNhbGxiYWNrcwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9zZW5k LnB5OjY2OmdvCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weToyOTA6Y3JlYXRlCjxh dHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPjoyMzpfX2luaXRfXwovdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHk6NTI6X19hdHRyc19wb3N0X2luaXRfXwovdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvX2Jvc3MucHk6NjI6X2J1aWxkX3dvcmtlcnMKPGF0dHJzIGdlbmVyYXRl ZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+OjE4Ol9faW5p dF9fCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weTo4NzpfX2F0dHJzX3Bvc3Rf aW5pdF9fCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxp Y2F0aW9uL2ludGVybmV0LnB5OjExMjc6d2hlbkNvbm5lY3RlZAovZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5OjIzNDpfX2dldF9fCi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6 NDA6ZGVjb3JhdG9yCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHk6MzI6Y29weWZ1bmN0aW9uCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6MjA6Y29weWNvZGUKXQoKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpSYW4gNDQ3IHRlc3RzIGluIDEyNi4wNjZzCgpGQUlMRUQgKGZhaWx1cmVzPTcs IGVycm9ycz0xNjcsIHNraXBwZWQ9MjgpClRlc3QgZmFpbGVkOiA8dW5pdHRlc3QucnVubmVyLlRl eHRUZXN0UmVzdWx0IHJ1bj00NDcgZXJyb3JzPTE2NyBmYWlsdXJlcz03PgplcnJvcjogVGVzdCBm YWlsZWQ6IDx1bml0dGVzdC5ydW5uZXIuVGV4dFRlc3RSZXN1bHQgcnVuPTQ0NyBlcnJvcnM9MTY3 IGZhaWx1cmVzPTc+CmNvbW1hbmQgInB5dGhvbiIgIi1jIiAiaW1wb3J0IHNldHVwdG9vbHMsIHRv a2VuaXplO19fZmlsZV9fPSdzZXR1cC5weSc7Zj1nZXRhdHRyKHRva2VuaXplLCAnb3BlbicsIG9w ZW4pKF9fZmlsZV9fKTtjb2RlPWYucmVhZCgpLnJlcGxhY2UoJ1xcclxcbicsICdcXG4nKTtmLmNs b3NlKCk7ZXhlYyhjb21waWxlKGNvZGUsIF9fZmlsZV9fLCAnZXhlYycpKSIgInRlc3QiIGZhaWxl ZCB3aXRoIHN0YXR1cyAxCg== --000000000000b2c9ee05a5911b7d--