From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 15D8B46786 for ; Mon, 19 May 2025 05:19:49 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1144640613; Mon, 19 May 2025 05:19:49 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) by mails.dpdk.org (Postfix) with ESMTP id A76844060C for ; Mon, 19 May 2025 05:19:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1747624787; x=1779160787; h=message-id:date:mime-version:subject:from:to:cc; bh=zneC4PqflsBB24DUUNeJHjl0J5dDPe73fvFiGi/pgQ4=; b=nMHsDfiB8iIxKeaGbvlRUvhAEMeWJQoUd6Kp/K6S39dbRBr8DtmYWdRl ZUrUKHKNUTChRiE7kcY0MOprtx7eaePmJ4060ButjF8BaUDMSdGELobIc Gpms3QKMcuPhcCewQQHjV3jeGidRsKo5kCC5+qUdOb2t6QDRhO+bPBS1D utzoP3NhvbEXKbtoxUCP9e9TmlqP6e2zJuxNpbKMC+/7DL+9MWg9XHn3L Xh7Cz6Tzy9fCj9JytyAWGqX5KCDyk6Kk3nKwMyV1WhI8NtGy4YdOi5beM lY0GvXHggFRfCe6uKmLf+HsXlfKeggYW63t/VQCQgQUcVEc3MorcWZxYX Q==; X-CSE-ConnectionGUID: VXBTy5VgQ/Wznd68iJ70uw== X-CSE-MsgGUID: QaDSRIjXQwKL3hDMb60qHA== X-IronPort-AV: E=McAfee;i="6700,10204,11437"; a="49411496" X-IronPort-AV: E=Sophos;i="6.15,299,1739865600"; d="scan'208";a="49411496" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2025 20:19:46 -0700 X-CSE-ConnectionGUID: KqKc1MMRTLu1XOWX5T9iRA== X-CSE-MsgGUID: XvzQ62UjTvqAAts4gQ8wQA== Message-Id: <0b0228$49llpc@orviesa005-auth.jf.intel.com> Date: 18 May 2025 20:19:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,299,1739865600"; d="scan'208";a="144365356" Received: from unknown (HELO [10.239.252.161]) ([10.239.252.161]) by orviesa005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2025 20:19:35 -0700 Content-Type: multipart/alternative; boundary="===============8242196402802424559==" MIME-Version: 1.0 Subject: compilation|FAILURE| pw(153497) sid(35239) job(PER_PATCH_BUILD15667)[RFC, v2, 6/6] dts: add performance test functions to test suite api From: sys_stv@intel.com To: test-report@dpdk.org, npratte@iol.unh.edu Cc: X-BeenThere: test-report@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: automatic DPDK test reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: test-report-bounces@dpdk.org --===============8242196402802424559== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 ClRlc3QtTGFiZWw6IEludGVsLWNvbXBpbGF0aW9uClRlc3QtU3RhdHVzOiBGQUlMVVJFCmh0dHA6 Ly9kcGRrLm9yZy9wYXRjaC8xNTM0OTcKCl9Db21waWxhdGlvbiBpc3N1ZXNfCgpTdWJtaXR0ZXI6 IE5pY2hvbGFzIFByYXR0ZSA8bnByYXR0ZUBpb2wudW5oLmVkdT4KRGF0ZTogMjAyNS0wNS0xNiAy MDoxODozNApSZXBseV9tYWlsOiA8MjAyNTA1MTYyMDE4MzQuNjI2MjA2LTctbnByYXR0ZUBpb2wu dW5oLmVkdT4KCkRQREsgZ2l0IGJhc2VsaW5lOiBSZXBvOmRwZGstbmV4dC1kdHMsIENvbW1pdElE OiAxYWVmNDJiYzk3YTMxOTA2NDg2YzlkNjZiNzkyMjA4OTQ4YWYwNmYzCgoKTWVzb24gQnVpbGQg U3VtbWFyeTogMjMgQnVpbGRzIERvbmUsIDIyIFN1Y2Nlc3NmdWwsIDEgRmFpbHVyZXMsIDAgQmxv Y2tlZAoKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSsKfCBvcyAgICAgICAgICAgICAgIHwgZ2NjLXN0YXRpYyB8IGNsYW5nLXN0YXRpYyB8IGljYy1z dGF0aWMgfCBnY2Mtc2hhcmVkIHwgZ2NjLWRlYnVnIHwgZG9jdW1lbnQgfCBnY2MtMTZieXRlIHwK Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKfCBP cGVuQW5vbGlzOC45LTY0IHwgcGFzcyAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgIHwKfCBGcmVl QlNEMTQtNjQgICAgIHwgcGFzcyAgICAgICB8IHBhc3MgICAgICAgICB8ICAgICAgICAgICAgfCBw YXNzICAgICAgIHwgcGFzcyAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgIHwKfCBSSEVMOTYt NjQgICAgICAgIHwgcGFzcyAgICAgICB8IHBhc3MgICAgICAgICB8ICAgICAgICAgICAgfCBwYXNz ICAgICAgIHwgcGFzcyAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgIHwKfCBTVVNFMTUtNjQg ICAgICAgIHwgcGFzcyAgICAgICB8IHBhc3MgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgIHwKfCBBenVyZUxpbnV4My4w LTY0IHwgcGFzcyAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgIHwKfCBVQjI0MDQtMzIgICAgICAg IHwgcGFzcyAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgIHwKfCBSSEVMMTAtNjQgICAgICAgIHwg cGFzcyAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgIHwKfCBVQjI0MDQtNjQgICAgICAgIHwgcGFz cyAgICAgICB8IHBhc3MgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAg ICAgIHwgZmFpbCAgICAgfCBwYXNzICAgICAgIHwKfCBSSEVMOTYtNjRSVCAgICAgIHwgcGFzcyAg ICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAg IHwgICAgICAgICAgfCAgICAgICAgICAgIHwKfCBVQjI1MDQtNjQgICAgICAgIHwgcGFzcyAgICAg ICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAgICAgICAgICAgIHwKfCBGQzQyLTY0ICAgICAgICAgIHwgcGFzcyAgICAgICB8 IHBhc3MgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAgICAgICAgICAgIHwKfCBVQjI0MDQtNjRSVCAgICAgIHwgcGFzcyAgICAgICB8ICAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSsKCkNvbW1lbnRzOiAKQmVjYXVzZSBvZiBEUERLIGJ1ZyAoaHR0cHM6Ly9i dWdzLmRwZGsub3JnL3Nob3dfYnVnLmNnaT9pZD05MjgpLApBbGwgdGhlIGRwZGstbmV4dC0qIGJy YW5jaCBhZGQgYERkaXNhYmxlX2RyaXZlcnM9ZXZlbnQvY254a2Agb3B0aW9uIHdoZW4gYnVpbGQg d2l0aCBJQ0MgY29tcGxpZXIuIAogClRlc3QgZW52aXJvbm1lbnQgYW5kIGNvbmZpZ3VyYXRpb24g YXMgYmVsb3c6CgoKT1M6IE9wZW5Bbm9saXM4LjktNjQKCUtlcm5lbCBWZXJzaW9uOiA1LjEwLjEz NC0xNi4yLmFuOC54ODZfNjQKCUdDQyBWZXJzaW9uOiBnY2MgKEdDQykgOC41LjAgMjAyMTA1MTQg KEFub2xpcyA4LjUuMC0yMi4wLjEpCglDbGFuZyBWZXJzaW9uOiAxNS4wLjcgKEFub2xpcyAxNS4w LjctMS4wLjMubW9kdWxlK2FuOC44LjArMTExMzUrZTM5OGFjZmMpCgl4ODZfNjQtbmF0aXZlLWxp bnV4YXBwLWdjYwoKT1M6IEZyZWVCU0QxNC02NAoJS2VybmVsIFZlcnNpb246IDE0LjItUkVMRUFT RQoJR0NDIFZlcnNpb246IGdjYyAoRnJlZUJTRCBQb3J0cyBDb2xsZWN0aW9uKSAxMy4zLjAKCUNs YW5nIFZlcnNpb246IDE4LjEuNiAoaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0 LmdpdCBsbHZtb3JnLTE4LjEuNi0wLWcxMTE4YzJlMDVlNjcpCgl4ODZfNjQtbmF0aXZlLWJzZGFw cC1nY2MKCXg4Nl82NC1uYXRpdmUtYnNkYXBwLWNsYW5nCgl4ODZfNjQtbmF0aXZlLWJzZGFwcC1n Y2Mrc2hhcmVkCgl4ODZfNjQtbmF0aXZlLWJzZGFwcC1nY2MrZGVidWcKCk9TOiBSSEVMOTYtNjQK CUtlcm5lbCBWZXJzaW9uOiA1LjE0LjAtNTcwLjEyLjEuZWw5XzYueDg2XzY0CglHQ0MgVmVyc2lv bjogZ2NjIChHQ0MpIDExLjUuMCAyMDI0MDcxOSAoUmVkIEhhdCAxMS41LjAtNSkKCUNsYW5nIFZl cnNpb246IDE5LjEuNyAoUmVkIEhhdCwgSW5jLiAxOS4xLjctMi5lbDkpCgl4ODZfNjQtbmF0aXZl LWxpbnV4YXBwLWdjYwoJeDg2XzY0LW5hdGl2ZS1saW51eGFwcC1jbGFuZwoJeDg2XzY0LW5hdGl2 ZS1saW51eGFwcC1nY2Mrc2hhcmVkCgl4ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdjYytkZWJ1ZwoK T1M6IFNVU0UxNS02NAoJS2VybmVsIFZlcnNpb246IDYuNC4wLTE1MDYwMC4yMS1kZWZhdWx0CglH Q0MgVmVyc2lvbjogZ2NjIChTVVNFIExpbnV4KSA3LjUuMAoJQ2xhbmcgVmVyc2lvbjogMTcuMC42 Cgl4ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWNsYW5nCgl4ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWdj YwoKT1M6IEF6dXJlTGludXgzLjAtNjQKCUtlcm5lbCBWZXJzaW9uOiA2LjYuNDcuMS0xLmF6bDMK CUdDQyBWZXJzaW9uOiBnY2MgKEdDQykgMTMuMi4wCglDbGFuZyBWZXJzaW9uOiAxOC4xLjIKCXg4 Nl82NC1uYXRpdmUtbGludXhhcHAtZ2NjCgpPUzogVUIyNDA0LTMyCglLZXJuZWwgVmVyc2lvbjog Ni44LjAtNDEtZ2VuZXJpYwoJR0NDIFZlcnNpb246IGdjYyAoVWJ1bnR1IDEzLjMuMC02dWJ1bnR1 Mn4yNC4wNCkgMTMuMy4wCglDbGFuZyBWZXJzaW9uOiBOQQoJaTY4Ni1uYXRpdmUtbGludXhhcHAt Z2NjCgpPUzogUkhFTDEwLTY0CglLZXJuZWwgVmVyc2lvbjogNi4xMi4wLTU1LjkuMS5lbDEwXzAu eDg2XzY0CglHQ0MgVmVyc2lvbjogZ2NjIChHQ0MpIDE0LjIuMSAyMDI1MDExMCAoUmVkIEhhdCAx NC4yLjEtNykKCUNsYW5nIFZlcnNpb246IDE5LjEuNyAoUmVkIEhhdCwgSW5jLiAxOS4xLjctMi5l bDEwKQoJeDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MKCk9TOiBVQjI0MDQtNjQKCUtlcm5lbCBW ZXJzaW9uOiA2LjguMC00MS1nZW5lcmljCglHQ0MgVmVyc2lvbjogZ2NjIChVYnVudHUgMTMuMy4w LTZ1YnVudHUyfjI0LjA0KSAxMy4zLjAKCUNsYW5nIFZlcnNpb246IE5BCgl4ODZfNjQtbmF0aXZl LWxpbnV4YXBwLWdjYysxNmJ5dGUKCXg4Nl82NC1uYXRpdmUtbGludXhhcHAtZ2NjCgl4ODZfNjQt bmF0aXZlLWxpbnV4YXBwLWNsYW5nCgl4ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYwoKT1M6IFJI RUw5Ni02NFJUCglLZXJuZWwgVmVyc2lvbjogNS4xNC4wLTU3MC4xMi4xLmVsOV82Lng4Nl82NAoJ R0NDIFZlcnNpb246IGdjYyAoR0NDKSAxMS41LjAgMjAyNDA3MTkgKFJlZCBIYXQgMTEuNS4wLTUp CglDbGFuZyBWZXJzaW9uOiAxOS4xLjcgKFJlZCBIYXQsIEluYy4gMTkuMS43LTIuZWw5KQoJeDg2 XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MKCk9TOiBVQjI1MDQtNjQKCUtlcm5lbCBWZXJzaW9uOiA2 LjE0LjAtMTUtZ2VuZXJpYwoJR0NDIFZlcnNpb246IGdjYyAoVWJ1bnR1IDE0LjIuMC0xOXVidW50 dTIpIDE0LjIuMAoJQ2xhbmcgVmVyc2lvbjogTkEKCXg4Nl82NC1uYXRpdmUtbGludXhhcHAtZ2Nj CgpPUzogRkM0Mi02NAoJS2VybmVsIFZlcnNpb246IDYuMTQuMC02My5mYzQyLng4Nl82NAoJR0ND IFZlcnNpb246IGdjYyAoR0NDKSAxNS4wLjEgMjAyNTAzMjkgKFJlZCBIYXQgMTUuMC4xLTApCglD bGFuZyBWZXJzaW9uOiAyMC4xLjMgKEZlZG9yYSAyMC4xLjMtMS5mYzQyKQoJeDg2XzY0LW5hdGl2 ZS1saW51eGFwcC1nY2MKCXg4Nl82NC1uYXRpdmUtbGludXhhcHAtY2xhbmcKCk9TOiBVQjI0MDQt NjRSVAoJS2VybmVsIFZlcnNpb246IDYuOC4wLXJ0OAoJR0NDIFZlcnNpb246IGdjYyAoVWJ1bnR1 IDEzLjMuMC02dWJ1bnR1Mn4yNC4wNCkgMTMuMy4wCglDbGFuZyBWZXJzaW9uOiBOQQoJeDg2XzY0 LW5hdGl2ZS1saW51eGFwcC1nY2MKCgoKKkJ1aWxkIEZhaWxlZCAjMToKT1M6IFVCMjQwNC02NApU YXJnZXQ6IHg4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jCkZBSUxFRDogZG9jL2d1aWRlcy9odG1s IAovdXNyL2Jpbi9weXRob24zIC4uL2J1aWxkdG9vbHMvY2FsbC1zcGhpbngtYnVpbGQucHkgL3Vz ci9iaW4vc3BoaW54LWJ1aWxkIDI1LjA3LjAtcmMwIC9yb290L1VCMjQwNC02NF9LNi44LjBfR0ND MTMuMy4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1MjM5L2RwZGsvZG9jL2d1aWRlcyAv cm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRv Yy8zNTIzOS9kcGRrL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jL2RvYy9ndWlkZXMgLWEgLVcK SW5zdGFsbCB0aGUgc3BoaW54IFJlYWRUaGVEb2NzIHRoZW1lIGZvciBpbXByb3ZlZCBodG1sIGRv Y3VtZW50YXRpb24gbGF5b3V0OiBodHRwczovL3NwaGlueC1ydGQtdGhlbWUucmVhZHRoZWRvY3Mu aW8vCgpXYXJuaW5nLCB0cmVhdGVkIGFzIGVycm9yOgovcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dD QzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2RvYy9ndWlkZXMv dG9vbHMvZHRzLnJzdDo0OTc6SW5jbHVkZSBmaWxlICcvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dD QzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy90ZXN0X3J1 bi5leGFtcGxlLnlhbWwnIG5vdCBmb3VuZCBvciByZWFkaW5nIGl0IGZhaWxlZApbMzU2MS8zNTY0 XSBDb21waWxpbmcgQyBvYmplY3QgYXBwL2RwZGstdGVzdC5wL3Rlc3RfdGVzdF9yaW5nLmMubwpb MzU2Mi8zNTY0XSBDb21waWxpbmcgQyBvYmplY3QgYXBwL2RwZGstdGVzdC5wL3Rlc3RfdGVzdF9y aW5nX3BlcmYuYy5vClszNTYzLzM1NjRdIEdlbmVyYXRpbmcgZG9jL2FwaS9kdHMvZHRzX2FwaV9o dG1sIHdpdGggYSBjdXN0b20gY29tbWFuZApJbnN0YWxsIHRoZSBzcGhpbnggUmVhZFRoZURvY3Mg dGhlbWUgZm9yIGltcHJvdmVkIGh0bWwgZG9jdW1lbnRhdGlvbiBsYXlvdXQ6IGh0dHBzOi8vc3Bo aW54LXJ0ZC10aGVtZS5yZWFkdGhlZG9jcy5pby8KRXhwZWN0ZWQgY2xhc3MgVGVzdEJsb2NrbGlz dCBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9ibG9ja2xpc3QuCkV4cGVjdGVkIGNsYXNz IFRlc3RDaGVja3N1bU9mZmxvYWQgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfY2hlY2tz dW1fb2ZmbG9hZC4KRXhwZWN0ZWQgY2xhc3MgVGVzdER1YWxWbGFuIG5vdCBmb3VuZCBpbiBtb2R1 bGUgVGVzdFN1aXRlX2R1YWxfdmxhbi4KRXhwZWN0ZWQgY2xhc3MgVGVzdER5bmFtaWNDb25maWcg bm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfZHluYW1pY19jb25maWcuCkV4cGVjdGVkIGNs YXNzIFRlc3REeW5hbWljUXVldWVDb25mIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2R5 bmFtaWNfcXVldWVfY29uZi4KRXhwZWN0ZWQgY2xhc3MgVGVzdEhlbGxvV29ybGQgbm90IGZvdW5k IGluIG1vZHVsZSBUZXN0U3VpdGVfaGVsbG9fd29ybGQuCkV4cGVjdGVkIGNsYXNzIFRlc3RMMmZ3 ZCBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9sMmZ3ZC4KRXhwZWN0ZWQgY2xhc3MgVGVz dE1hY0ZpbHRlciBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9tYWNfZmlsdGVyLgpFeHBl Y3RlZCBjbGFzcyBUZXN0TXR1IG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX210dS4KRXhw ZWN0ZWQgY2xhc3MgVGVzdFBtZEJ1ZmZlclNjYXR0ZXIgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0 U3VpdGVfcG1kX2J1ZmZlcl9zY2F0dGVyLgpFeHBlY3RlZCBjbGFzcyBUZXN0UG9ydFJlc3RhcnRD b25maWdQZXJzaXN0ZW5jeSBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9wb3J0X3Jlc3Rh cnRfY29uZmlnX3BlcnNpc3RlbmN5LgpFeHBlY3RlZCBjbGFzcyBUZXN0QmxvY2tsaXN0IG5vdCBm b3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2Jsb2NrbGlzdC4KRXhwZWN0ZWQgY2xhc3MgVGVzdENo ZWNrc3VtT2ZmbG9hZCBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9jaGVja3N1bV9vZmZs b2FkLgpFeHBlY3RlZCBjbGFzcyBUZXN0RHVhbFZsYW4gbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0 U3VpdGVfZHVhbF92bGFuLgpFeHBlY3RlZCBjbGFzcyBUZXN0RHluYW1pY0NvbmZpZyBub3QgZm91 bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9keW5hbWljX2NvbmZpZy4KRXhwZWN0ZWQgY2xhc3MgVGVz dER5bmFtaWNRdWV1ZUNvbmYgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfZHluYW1pY19x dWV1ZV9jb25mLgpFeHBlY3RlZCBjbGFzcyBUZXN0SGVsbG9Xb3JsZCBub3QgZm91bmQgaW4gbW9k dWxlIFRlc3RTdWl0ZV9oZWxsb193b3JsZC4KRXhwZWN0ZWQgY2xhc3MgVGVzdEwyZndkIG5vdCBm b3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2wyZndkLgpFeHBlY3RlZCBjbGFzcyBUZXN0TWFjRmls dGVyIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX21hY19maWx0ZXIuCkV4cGVjdGVkIGNs YXNzIFRlc3RNdHUgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfbXR1LgpFeHBlY3RlZCBj bGFzcyBUZXN0UG1kQnVmZmVyU2NhdHRlciBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9w bWRfYnVmZmVyX3NjYXR0ZXIuCkV4cGVjdGVkIGNsYXNzIFRlc3RQb3J0UmVzdGFydENvbmZpZ1Bl cnNpc3RlbmN5IG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX3BvcnRfcmVzdGFydF9jb25m aWdfcGVyc2lzdGVuY3kuCkV4cGVjdGVkIGNsYXNzIFRlc3RCbG9ja2xpc3Qgbm90IGZvdW5kIGlu IG1vZHVsZSBUZXN0U3VpdGVfYmxvY2tsaXN0LgpFeHBlY3RlZCBjbGFzcyBUZXN0Q2hlY2tzdW1P ZmZsb2FkIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2NoZWNrc3VtX29mZmxvYWQuCkV4 cGVjdGVkIGNsYXNzIFRlc3REdWFsVmxhbiBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9k dWFsX3ZsYW4uCkV4cGVjdGVkIGNsYXNzIFRlc3REeW5hbWljQ29uZmlnIG5vdCBmb3VuZCBpbiBt b2R1bGUgVGVzdFN1aXRlX2R5bmFtaWNfY29uZmlnLgpFeHBlY3RlZCBjbGFzcyBUZXN0RHluYW1p Y1F1ZXVlQ29uZiBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9keW5hbWljX3F1ZXVlX2Nv bmYuCkV4cGVjdGVkIGNsYXNzIFRlc3RIZWxsb1dvcmxkIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVz dFN1aXRlX2hlbGxvX3dvcmxkLgpFeHBlY3RlZCBjbGFzcyBUZXN0TDJmd2Qgbm90IGZvdW5kIGlu IG1vZHVsZSBUZXN0U3VpdGVfbDJmd2QuCkV4cGVjdGVkIGNsYXNzIFRlc3RNYWNGaWx0ZXIgbm90 IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfbWFjX2ZpbHRlci4KRXhwZWN0ZWQgY2xhc3MgVGVz dE10dSBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9tdHUuCkV4cGVjdGVkIGNsYXNzIFRl c3RQbWRCdWZmZXJTY2F0dGVyIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX3BtZF9idWZm ZXJfc2NhdHRlci4KRXhwZWN0ZWQgY2xhc3MgVGVzdFBvcnRSZXN0YXJ0Q29uZmlnUGVyc2lzdGVu Y3kgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfcG9ydF9yZXN0YXJ0X2NvbmZpZ19wZXJz aXN0ZW5jeS4KRXhwZWN0ZWQgY2xhc3MgVGVzdEJsb2NrbGlzdCBub3QgZm91bmQgaW4gbW9kdWxl IFRlc3RTdWl0ZV9ibG9ja2xpc3QuCkV4cGVjdGVkIGNsYXNzIFRlc3RDaGVja3N1bU9mZmxvYWQg bm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfY2hlY2tzdW1fb2ZmbG9hZC4KRXhwZWN0ZWQg Y2xhc3MgVGVzdER1YWxWbGFuIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2R1YWxfdmxh bi4KRXhwZWN0ZWQgY2xhc3MgVGVzdER5bmFtaWNDb25maWcgbm90IGZvdW5kIGluIG1vZHVsZSBU ZXN0U3VpdGVfZHluYW1pY19jb25maWcuCkV4cGVjdGVkIGNsYXNzIFRlc3REeW5hbWljUXVldWVD b25mIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2R5bmFtaWNfcXVldWVfY29uZi4KRXhw ZWN0ZWQgY2xhc3MgVGVzdEhlbGxvV29ybGQgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVf aGVsbG9fd29ybGQuCkV4cGVjdGVkIGNsYXNzIFRlc3RMMmZ3ZCBub3QgZm91bmQgaW4gbW9kdWxl IFRlc3RTdWl0ZV9sMmZ3ZC4KRXhwZWN0ZWQgY2xhc3MgVGVzdE1hY0ZpbHRlciBub3QgZm91bmQg aW4gbW9kdWxlIFRlc3RTdWl0ZV9tYWNfZmlsdGVyLgpFeHBlY3RlZCBjbGFzcyBUZXN0TXR1IG5v dCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX210dS4KRXhwZWN0ZWQgY2xhc3MgVGVzdFBtZEJ1 ZmZlclNjYXR0ZXIgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfcG1kX2J1ZmZlcl9zY2F0 dGVyLgpFeHBlY3RlZCBjbGFzcyBUZXN0UG9ydFJlc3RhcnRDb25maWdQZXJzaXN0ZW5jeSBub3Qg Zm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9wb3J0X3Jlc3RhcnRfY29uZmlnX3BlcnNpc3RlbmN5 LgpFeHBlY3RlZCBjbGFzcyBUZXN0QmxvY2tsaXN0IG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1 aXRlX2Jsb2NrbGlzdC4KRXhwZWN0ZWQgY2xhc3MgVGVzdENoZWNrc3VtT2ZmbG9hZCBub3QgZm91 bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9jaGVja3N1bV9vZmZsb2FkLgpFeHBlY3RlZCBjbGFzcyBU ZXN0RHVhbFZsYW4gbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfZHVhbF92bGFuLgpFeHBl Y3RlZCBjbGFzcyBUZXN0RHluYW1pY0NvbmZpZyBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0 ZV9keW5hbWljX2NvbmZpZy4KRXhwZWN0ZWQgY2xhc3MgVGVzdER5bmFtaWNRdWV1ZUNvbmYgbm90 IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfZHluYW1pY19xdWV1ZV9jb25mLgpFeHBlY3RlZCBj bGFzcyBUZXN0SGVsbG9Xb3JsZCBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9oZWxsb193 b3JsZC4KRXhwZWN0ZWQgY2xhc3MgVGVzdEwyZndkIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1 aXRlX2wyZndkLgpFeHBlY3RlZCBjbGFzcyBUZXN0TWFjRmlsdGVyIG5vdCBmb3VuZCBpbiBtb2R1 bGUgVGVzdFN1aXRlX21hY19maWx0ZXIuCkV4cGVjdGVkIGNsYXNzIFRlc3RNdHUgbm90IGZvdW5k IGluIG1vZHVsZSBUZXN0U3VpdGVfbXR1LgpFeHBlY3RlZCBjbGFzcyBUZXN0UG1kQnVmZmVyU2Nh dHRlciBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9wbWRfYnVmZmVyX3NjYXR0ZXIuCkV4 cGVjdGVkIGNsYXNzIFRlc3RQb3J0UmVzdGFydENvbmZpZ1BlcnNpc3RlbmN5IG5vdCBmb3VuZCBp biBtb2R1bGUgVGVzdFN1aXRlX3BvcnRfcmVzdGFydF9jb25maWdfcGVyc2lzdGVuY3kuCkV4cGVj dGVkIGNsYXNzIFRlc3RCbG9ja2xpc3Qgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfYmxv Y2tsaXN0LgpFeHBlY3RlZCBjbGFzcyBUZXN0Q2hlY2tzdW1PZmZsb2FkIG5vdCBmb3VuZCBpbiBt b2R1bGUgVGVzdFN1aXRlX2NoZWNrc3VtX29mZmxvYWQuCkV4cGVjdGVkIGNsYXNzIFRlc3REdWFs VmxhbiBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9kdWFsX3ZsYW4uCkV4cGVjdGVkIGNs YXNzIFRlc3REeW5hbWljQ29uZmlnIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2R5bmFt aWNfY29uZmlnLgpFeHBlY3RlZCBjbGFzcyBUZXN0RHluYW1pY1F1ZXVlQ29uZiBub3QgZm91bmQg aW4gbW9kdWxlIFRlc3RTdWl0ZV9keW5hbWljX3F1ZXVlX2NvbmYuCkV4cGVjdGVkIGNsYXNzIFRl c3RIZWxsb1dvcmxkIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2hlbGxvX3dvcmxkLgpF eHBlY3RlZCBjbGFzcyBUZXN0TDJmd2Qgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfbDJm d2QuCkV4cGVjdGVkIGNsYXNzIFRlc3RNYWNGaWx0ZXIgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0 U3VpdGVfbWFjX2ZpbHRlci4KRXhwZWN0ZWQgY2xhc3MgVGVzdE10dSBub3QgZm91bmQgaW4gbW9k dWxlIFRlc3RTdWl0ZV9tdHUuCkV4cGVjdGVkIGNsYXNzIFRlc3RQbWRCdWZmZXJTY2F0dGVyIG5v dCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX3BtZF9idWZmZXJfc2NhdHRlci4KRXhwZWN0ZWQg Y2xhc3MgVGVzdFBvcnRSZXN0YXJ0Q29uZmlnUGVyc2lzdGVuY3kgbm90IGZvdW5kIGluIG1vZHVs ZSBUZXN0U3VpdGVfcG9ydF9yZXN0YXJ0X2NvbmZpZ19wZXJzaXN0ZW5jeS4KRXhwZWN0ZWQgY2xh c3MgVGVzdEJsb2NrbGlzdCBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9ibG9ja2xpc3Qu CkV4cGVjdGVkIGNsYXNzIFRlc3RDaGVja3N1bU9mZmxvYWQgbm90IGZvdW5kIGluIG1vZHVsZSBU ZXN0U3VpdGVfY2hlY2tzdW1fb2ZmbG9hZC4KRXhwZWN0ZWQgY2xhc3MgVGVzdER1YWxWbGFuIG5v dCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2R1YWxfdmxhbi4KRXhwZWN0ZWQgY2xhc3MgVGVz dER5bmFtaWNDb25maWcgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfZHluYW1pY19jb25m aWcuCkV4cGVjdGVkIGNsYXNzIFRlc3REeW5hbWljUXVldWVDb25mIG5vdCBmb3VuZCBpbiBtb2R1 bGUgVGVzdFN1aXRlX2R5bmFtaWNfcXVldWVfY29uZi4KRXhwZWN0ZWQgY2xhc3MgVGVzdEhlbGxv V29ybGQgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfaGVsbG9fd29ybGQuCkV4cGVjdGVk IGNsYXNzIFRlc3RMMmZ3ZCBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9sMmZ3ZC4KRXhw ZWN0ZWQgY2xhc3MgVGVzdE1hY0ZpbHRlciBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9t YWNfZmlsdGVyLgpFeHBlY3RlZCBjbGFzcyBUZXN0TXR1IG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVz dFN1aXRlX210dS4KRXhwZWN0ZWQgY2xhc3MgVGVzdFBtZEJ1ZmZlclNjYXR0ZXIgbm90IGZvdW5k IGluIG1vZHVsZSBUZXN0U3VpdGVfcG1kX2J1ZmZlcl9zY2F0dGVyLgpFeHBlY3RlZCBjbGFzcyBU ZXN0UG9ydFJlc3RhcnRDb25maWdQZXJzaXN0ZW5jeSBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RT dWl0ZV9wb3J0X3Jlc3RhcnRfY29uZmlnX3BlcnNpc3RlbmN5LgpFeHBlY3RlZCBjbGFzcyBUZXN0 QmxvY2tsaXN0IG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2Jsb2NrbGlzdC4KRXhwZWN0 ZWQgY2xhc3MgVGVzdENoZWNrc3VtT2ZmbG9hZCBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0 ZV9jaGVja3N1bV9vZmZsb2FkLgpFeHBlY3RlZCBjbGFzcyBUZXN0RHVhbFZsYW4gbm90IGZvdW5k IGluIG1vZHVsZSBUZXN0U3VpdGVfZHVhbF92bGFuLgpFeHBlY3RlZCBjbGFzcyBUZXN0RHluYW1p Y0NvbmZpZyBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9keW5hbWljX2NvbmZpZy4KRXhw ZWN0ZWQgY2xhc3MgVGVzdER5bmFtaWNRdWV1ZUNvbmYgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0 U3VpdGVfZHluYW1pY19xdWV1ZV9jb25mLgpFeHBlY3RlZCBjbGFzcyBUZXN0SGVsbG9Xb3JsZCBu b3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9oZWxsb193b3JsZC4KRXhwZWN0ZWQgY2xhc3Mg VGVzdEwyZndkIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2wyZndkLgpFeHBlY3RlZCBj bGFzcyBUZXN0TWFjRmlsdGVyIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX21hY19maWx0 ZXIuCkV4cGVjdGVkIGNsYXNzIFRlc3RNdHUgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVf bXR1LgpFeHBlY3RlZCBjbGFzcyBUZXN0UG1kQnVmZmVyU2NhdHRlciBub3QgZm91bmQgaW4gbW9k dWxlIFRlc3RTdWl0ZV9wbWRfYnVmZmVyX3NjYXR0ZXIuCkV4cGVjdGVkIGNsYXNzIFRlc3RQb3J0 UmVzdGFydENvbmZpZ1BlcnNpc3RlbmN5IG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX3Bv cnRfcmVzdGFydF9jb25maWdfcGVyc2lzdGVuY3kuCkV4cGVjdGVkIGNsYXNzIFRlc3RCbG9ja2xp c3Qgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfYmxvY2tsaXN0LgpFeHBlY3RlZCBjbGFz cyBUZXN0Q2hlY2tzdW1PZmZsb2FkIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2NoZWNr c3VtX29mZmxvYWQuCkV4cGVjdGVkIGNsYXNzIFRlc3REdWFsVmxhbiBub3QgZm91bmQgaW4gbW9k dWxlIFRlc3RTdWl0ZV9kdWFsX3ZsYW4uCkV4cGVjdGVkIGNsYXNzIFRlc3REeW5hbWljQ29uZmln IG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2R5bmFtaWNfY29uZmlnLgpFeHBlY3RlZCBj bGFzcyBUZXN0RHluYW1pY1F1ZXVlQ29uZiBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9k eW5hbWljX3F1ZXVlX2NvbmYuCkV4cGVjdGVkIGNsYXNzIFRlc3RIZWxsb1dvcmxkIG5vdCBmb3Vu ZCBpbiBtb2R1bGUgVGVzdFN1aXRlX2hlbGxvX3dvcmxkLgpFeHBlY3RlZCBjbGFzcyBUZXN0TDJm d2Qgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfbDJmd2QuCkV4cGVjdGVkIGNsYXNzIFRl c3RNYWNGaWx0ZXIgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfbWFjX2ZpbHRlci4KRXhw ZWN0ZWQgY2xhc3MgVGVzdE10dSBub3QgZm91bmQgaW4gbW9kdWxlIFRlc3RTdWl0ZV9tdHUuCkV4 cGVjdGVkIGNsYXNzIFRlc3RQbWRCdWZmZXJTY2F0dGVyIG5vdCBmb3VuZCBpbiBtb2R1bGUgVGVz dFN1aXRlX3BtZF9idWZmZXJfc2NhdHRlci4KRXhwZWN0ZWQgY2xhc3MgVGVzdFBvcnRSZXN0YXJ0 Q29uZmlnUGVyc2lzdGVuY3kgbm90IGZvdW5kIGluIG1vZHVsZSBUZXN0U3VpdGVfcG9ydF9yZXN0 YXJ0X2NvbmZpZ19wZXJzaXN0ZW5jeS4KV0FSTklORzogYXV0b2RvYzogZmFpbGVkIHRvIGltcG9y dCBtb2R1bGUgJ2NvbmZpZycgZnJvbSBtb2R1bGUgJ2ZyYW1ld29yayc7IHRoZSBmb2xsb3dpbmcg ZXhjZXB0aW9uIHdhcyByYWlzZWQ6ClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToK ICBGaWxlICIvdXNyL2xpYi9weXRob24zL2Rpc3QtcGFja2FnZXMvc3BoaW54L2V4dC9hdXRvZG9j L2ltcG9ydGVyLnB5IiwgbGluZSA2OSwgaW4gaW1wb3J0X21vZHVsZQogICAgcmV0dXJuIGltcG9y dGxpYi5pbXBvcnRfbW9kdWxlKG1vZG5hbWUpCiAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl4KICBGaWxlICIvdXNyL2xpYi9weXRob24zLjEyL2ltcG9ydGxpYi9fX2lu aXRfXy5weSIsIGxpbmUgOTAsIGluIGltcG9ydF9tb2R1bGUKICAgIHJldHVybiBfYm9vdHN0cmFw Ll9nY2RfaW1wb3J0KG5hbWVbbGV2ZWw6XSwgcGFja2FnZSwgbGV2ZWwpCiAgICAgICAgICAgXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUg Ijxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwgbGluZSAxMzg3LCBpbiBfZ2NkX2ltcG9y dAogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwgbGluZSAxMzYwLCBpbiBf ZmluZF9hbmRfbG9hZAogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwgbGlu ZSAxMzMxLCBpbiBfZmluZF9hbmRfbG9hZF91bmxvY2tlZAogIEZpbGUgIjxmcm96ZW4gaW1wb3J0 bGliLl9ib290c3RyYXA+IiwgbGluZSA5MzUsIGluIF9sb2FkX3VubG9ja2VkCiAgRmlsZSAiPGZy b3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbD4iLCBsaW5lIDk5NSwgaW4gZXhlY19t b2R1bGUKICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIsIGxpbmUgNDg4LCBp biBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkCiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2Ljgu MF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvZnJh bWV3b3JrL2NvbmZpZy9fX2luaXRfXy5weSIsIGxpbmUgNDcsIGluIDxtb2R1bGU+CiAgICBmcm9t IGZyYW1ld29yay50ZXN0X3N1aXRlIGltcG9ydCBCYXNlQ29uZmlnCiAgRmlsZSAiL3Jvb3QvVUIy NDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkv ZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3Rfc3VpdGUucHkiLCBsaW5lIDc2OCwgaW4gPG1vZHVsZT4K ICAgIEFWQUlMQUJMRV9URVNUX1NVSVRFUzogbGlzdFtUZXN0U3VpdGVTcGVjXSA9IFRlc3RTdWl0 ZVNwZWMuZGlzY292ZXJfYWxsKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvcm9vdC9V QjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIz OS9kcGRrL2R0cy9mcmFtZXdvcmsvdGVzdF9zdWl0ZS5weSIsIGxpbmUgNzYwLCBpbiBkaXNjb3Zl cl9hbGwKICAgIGlmIHRlc3Rfc3VpdGUuY2xhc3Nfb2JqOgogICAgICAgXl5eXl5eXl5eXl5eXl5e Xl5eXl4KICBGaWxlICIvdXNyL2xpYi9weXRob24zLjEyL2Z1bmN0b29scy5weSIsIGxpbmUgOTk1 LCBpbiBfX2dldF9fCiAgICB2YWwgPSBzZWxmLmZ1bmMoaW5zdGFuY2UpCiAgICAgICAgICBeXl5e Xl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAv eDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3Rf c3VpdGUucHkiLCBsaW5lIDcwNiwgaW4gY2xhc3Nfb2JqCiAgICBmb3IgY2xhc3NfbmFtZSwgY2xh c3Nfb2JqIGluIGluc3BlY3QuZ2V0bWVtYmVycyhzZWxmLm1vZHVsZSwgaXNfdGVzdF9zdWl0ZSk6 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5e Xl5eXl5eXgogIEZpbGUgIi91c3IvbGliL3B5dGhvbjMuMTIvZnVuY3Rvb2xzLnB5IiwgbGluZSA5 OTUsIGluIF9fZ2V0X18KICAgIHZhbCA9IHNlbGYuZnVuYyhpbnN0YW5jZSkKICAgICAgICAgIF5e Xl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMu MC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy9mcmFtZXdvcmsvdGVz dF9zdWl0ZS5weSIsIGxpbmUgNjczLCBpbiBtb2R1bGUKICAgIHJldHVybiBpbXBvcnRfbW9kdWxl KGYie3NlbGYuVEVTVF9TVUlURVNfUEFDS0FHRV9OQU1FfS57c2VsZi5tb2R1bGVfbmFtZX0iKQog ICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMy4xMi9pbXBvcnRs aWIvX19pbml0X18ucHkiLCBsaW5lIDkwLCBpbiBpbXBvcnRfbW9kdWxlCiAgICByZXR1cm4gX2Jv b3RzdHJhcC5fZ2NkX2ltcG9ydChuYW1lW2xldmVsOl0sIHBhY2thZ2UsIGxldmVsKQogICAgICAg ICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4K ICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxp bnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy90ZXN0cy9UZXN0U3VpdGVfcG9ydF9zdGF0c19jaGVj a3MucHkiLCBsaW5lIDMxLCBpbiA8bW9kdWxlPgogICAgY2xhc3MgVGVzdFBvcnRTdGF0c0NoZWNr cyhUZXN0U3VpdGUpOgogIEZpbGUgIi9yb290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4 Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1MjM5L2RwZGsvZHRzL3Rlc3RzL1Rlc3RTdWl0ZV9w b3J0X3N0YXRzX2NoZWNrcy5weSIsIGxpbmUgNTYsIGluIFRlc3RQb3J0U3RhdHNDaGVja3MKICAg IEV0aGVyKCkgLyBJUCgpIC8gUmF3KGIiWCIgKiAodG90YWxfcGFja2V0X2xlbiAtIGlwX2hlYWRl cl9sZW4gLSBldGhlcl9oZWFkZXJfbGVuKSkKICAgIH5+fn5+fn5+Xn5+fn5+ClR5cGVFcnJvcjog dW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlKHMpIGZvciAvOiAnRXRoZXInIGFuZCAnSVAnCgpXQVJO SU5HOiBhdXRvZG9jOiBmYWlsZWQgdG8gaW1wb3J0IG1vZHVsZSAncnVubmVyJyBmcm9tIG1vZHVs ZSAnZnJhbWV3b3JrJzsgdGhlIGZvbGxvd2luZyBleGNlcHRpb24gd2FzIHJhaXNlZDoKVHJhY2Vi YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi91c3IvbGliL3B5dGhvbjMvZGlz dC1wYWNrYWdlcy9zcGhpbngvZXh0L2F1dG9kb2MvaW1wb3J0ZXIucHkiLCBsaW5lIDY5LCBpbiBp bXBvcnRfbW9kdWxlCiAgICByZXR1cm4gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobW9kbmFtZSkK ICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi91c3Iv bGliL3B5dGhvbjMuMTIvaW1wb3J0bGliL19faW5pdF9fLnB5IiwgbGluZSA5MCwgaW4gaW1wb3J0 X21vZHVsZQogICAgcmV0dXJuIF9ib290c3RyYXAuX2djZF9pbXBvcnQobmFtZVtsZXZlbDpdLCBw YWNrYWdlLCBsZXZlbCkKICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJh cD4iLCBsaW5lIDEzODcsIGluIF9nY2RfaW1wb3J0CiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIu X2Jvb3RzdHJhcD4iLCBsaW5lIDEzNjAsIGluIF9maW5kX2FuZF9sb2FkCiAgRmlsZSAiPGZyb3pl biBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLCBsaW5lIDEzMzEsIGluIF9maW5kX2FuZF9sb2FkX3Vu bG9ja2VkCiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLCBsaW5lIDkzNSwg aW4gX2xvYWRfdW5sb2NrZWQKICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4 dGVybmFsPiIsIGxpbmUgOTk1LCBpbiBleGVjX21vZHVsZQogIEZpbGUgIjxmcm96ZW4gaW1wb3J0 bGliLl9ib290c3RyYXA+IiwgbGluZSA0ODgsIGluIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQK ICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxp bnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy9mcmFtZXdvcmsvcnVubmVyLnB5IiwgbGluZSAxOCwg aW4gPG1vZHVsZT4KICAgIGZyb20gZnJhbWV3b3JrLnRlc3RfcnVuIGltcG9ydCBUZXN0UnVuCiAg RmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51 eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3RfcnVuLnB5IiwgbGluZSAxMjEs IGluIDxtb2R1bGU+CiAgICBmcm9tIGZyYW1ld29yay50ZXN0X3N1aXRlIGltcG9ydCBCYXNlQ29u ZmlnLCBUZXN0Q2FzZSwgVGVzdFN1aXRlCiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9H Q0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3 b3JrL3Rlc3Rfc3VpdGUucHkiLCBsaW5lIDc2OCwgaW4gPG1vZHVsZT4KICAgIEFWQUlMQUJMRV9U RVNUX1NVSVRFUzogbGlzdFtUZXN0U3VpdGVTcGVjXSA9IFRlc3RTdWl0ZVNwZWMuZGlzY292ZXJf YWxsKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4w X0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy9mcmFt ZXdvcmsvdGVzdF9zdWl0ZS5weSIsIGxpbmUgNzYwLCBpbiBkaXNjb3Zlcl9hbGwKICAgIGlmIHRl c3Rfc3VpdGUuY2xhc3Nfb2JqOgogICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIv dXNyL2xpYi9weXRob24zLjEyL2Z1bmN0b29scy5weSIsIGxpbmUgOTk1LCBpbiBfX2dldF9fCiAg ICB2YWwgPSBzZWxmLmZ1bmMoaW5zdGFuY2UpCiAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5e CiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1s aW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3Rfc3VpdGUucHkiLCBsaW5l IDcwNiwgaW4gY2xhc3Nfb2JqCiAgICBmb3IgY2xhc3NfbmFtZSwgY2xhc3Nfb2JqIGluIGluc3Bl Y3QuZ2V0bWVtYmVycyhzZWxmLm1vZHVsZSwgaXNfdGVzdF9zdWl0ZSk6CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXgogIEZpbGUg Ii91c3IvbGliL3B5dGhvbjMuMTIvZnVuY3Rvb2xzLnB5IiwgbGluZSA5OTUsIGluIF9fZ2V0X18K ICAgIHZhbCA9IHNlbGYuZnVuYyhpbnN0YW5jZSkKICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5e Xl4KICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZl LWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy9mcmFtZXdvcmsvdGVzdF9zdWl0ZS5weSIsIGxp bmUgNjczLCBpbiBtb2R1bGUKICAgIHJldHVybiBpbXBvcnRfbW9kdWxlKGYie3NlbGYuVEVTVF9T VUlURVNfUEFDS0FHRV9OQU1FfS57c2VsZi5tb2R1bGVfbmFtZX0iKQogICAgICAgICAgIF5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eCiAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMy4xMi9pbXBvcnRsaWIvX19pbml0X18ucHki LCBsaW5lIDkwLCBpbiBpbXBvcnRfbW9kdWxlCiAgICByZXR1cm4gX2Jvb3RzdHJhcC5fZ2NkX2lt cG9ydChuYW1lW2xldmVsOl0sIHBhY2thZ2UsIGxldmVsKQogICAgICAgICAgIF5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvcm9vdC9V QjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIz OS9kcGRrL2R0cy90ZXN0cy9UZXN0U3VpdGVfcG9ydF9zdGF0c19jaGVja3MucHkiLCBsaW5lIDMx LCBpbiA8bW9kdWxlPgogICAgY2xhc3MgVGVzdFBvcnRTdGF0c0NoZWNrcyhUZXN0U3VpdGUpOgog IEZpbGUgIi9yb290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRpdmUtbGlu dXhhcHAtZG9jLzM1MjM5L2RwZGsvZHRzL3Rlc3RzL1Rlc3RTdWl0ZV9wb3J0X3N0YXRzX2NoZWNr cy5weSIsIGxpbmUgNTYsIGluIFRlc3RQb3J0U3RhdHNDaGVja3MKICAgIEV0aGVyKCkgLyBJUCgp IC8gUmF3KGIiWCIgKiAodG90YWxfcGFja2V0X2xlbiAtIGlwX2hlYWRlcl9sZW4gLSBldGhlcl9o ZWFkZXJfbGVuKSkKICAgIH5+fn5+fn5+Xn5+fn5+ClR5cGVFcnJvcjogdW5zdXBwb3J0ZWQgb3Bl cmFuZCB0eXBlKHMpIGZvciAvOiAnRXRoZXInIGFuZCAnSVAnCgpXQVJOSU5HOiBhdXRvZG9jOiBm YWlsZWQgdG8gaW1wb3J0IG1vZHVsZSAndGVzdF9ydW4nIGZyb20gbW9kdWxlICdmcmFtZXdvcmsn OyB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbiB3YXMgcmFpc2VkOgpUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMy9kaXN0LXBhY2thZ2VzL3Nw aGlueC9leHQvYXV0b2RvYy9pbXBvcnRlci5weSIsIGxpbmUgNjksIGluIGltcG9ydF9tb2R1bGUK ICAgIHJldHVybiBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShtb2RuYW1lKQogICAgICAgICAgIF5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMy4x Mi9pbXBvcnRsaWIvX19pbml0X18ucHkiLCBsaW5lIDkwLCBpbiBpbXBvcnRfbW9kdWxlCiAgICBy ZXR1cm4gX2Jvb3RzdHJhcC5fZ2NkX2ltcG9ydChuYW1lW2xldmVsOl0sIHBhY2thZ2UsIGxldmVs KQogICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl4KICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIsIGxpbmUgMTM4 NywgaW4gX2djZF9pbXBvcnQKICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIs IGxpbmUgMTM2MCwgaW4gX2ZpbmRfYW5kX2xvYWQKICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5f Ym9vdHN0cmFwPiIsIGxpbmUgMTMzMSwgaW4gX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQKICBGaWxl ICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIsIGxpbmUgOTM1LCBpbiBfbG9hZF91bmxv Y2tlZAogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWw+IiwgbGlu ZSA5OTUsIGluIGV4ZWNfbW9kdWxlCiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJh cD4iLCBsaW5lIDQ4OCwgaW4gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZAogIEZpbGUgIi9yb290 L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1 MjM5L2RwZGsvZHRzL2ZyYW1ld29yay90ZXN0X3J1bi5weSIsIGxpbmUgMTIxLCBpbiA8bW9kdWxl PgogICAgZnJvbSBmcmFtZXdvcmsudGVzdF9zdWl0ZSBpbXBvcnQgQmFzZUNvbmZpZywgVGVzdENh c2UsIFRlc3RTdWl0ZQogIEZpbGUgIi9yb290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4 Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1MjM5L2RwZGsvZHRzL2ZyYW1ld29yay90ZXN0X3N1 aXRlLnB5IiwgbGluZSA3NjgsIGluIDxtb2R1bGU+CiAgICBBVkFJTEFCTEVfVEVTVF9TVUlURVM6 IGxpc3RbVGVzdFN1aXRlU3BlY10gPSBUZXN0U3VpdGVTcGVjLmRpc2NvdmVyX2FsbCgpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAv eDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3Rf c3VpdGUucHkiLCBsaW5lIDc2MCwgaW4gZGlzY292ZXJfYWxsCiAgICBpZiB0ZXN0X3N1aXRlLmNs YXNzX29iajoKICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL3Vzci9saWIvcHl0 aG9uMy4xMi9mdW5jdG9vbHMucHkiLCBsaW5lIDk5NSwgaW4gX19nZXRfXwogICAgdmFsID0gc2Vs Zi5mdW5jKGluc3RhbmNlKQogICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi9y b290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9j LzM1MjM5L2RwZGsvZHRzL2ZyYW1ld29yay90ZXN0X3N1aXRlLnB5IiwgbGluZSA3MDYsIGluIGNs YXNzX29iagogICAgZm9yIGNsYXNzX25hbWUsIGNsYXNzX29iaiBpbiBpbnNwZWN0LmdldG1lbWJl cnMoc2VsZi5tb2R1bGUsIGlzX3Rlc3Rfc3VpdGUpOgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl4KICBGaWxlICIvdXNyL2xpYi9w eXRob24zLjEyL2Z1bmN0b29scy5weSIsIGxpbmUgOTk1LCBpbiBfX2dldF9fCiAgICB2YWwgPSBz ZWxmLmZ1bmMoaW5zdGFuY2UpCiAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAi L3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1k b2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3Rfc3VpdGUucHkiLCBsaW5lIDY3MywgaW4g bW9kdWxlCiAgICByZXR1cm4gaW1wb3J0X21vZHVsZShmIntzZWxmLlRFU1RfU1VJVEVTX1BBQ0tB R0VfTkFNRX0ue3NlbGYubW9kdWxlX25hbWV9IikKICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZp bGUgIi91c3IvbGliL3B5dGhvbjMuMTIvaW1wb3J0bGliL19faW5pdF9fLnB5IiwgbGluZSA5MCwg aW4gaW1wb3J0X21vZHVsZQogICAgcmV0dXJuIF9ib290c3RyYXAuX2djZF9pbXBvcnQobmFtZVts ZXZlbDpdLCBwYWNrYWdlLCBsZXZlbCkKICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2 LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMv dGVzdHMvVGVzdFN1aXRlX3BvcnRfc3RhdHNfY2hlY2tzLnB5IiwgbGluZSAzMSwgaW4gPG1vZHVs ZT4KICAgIGNsYXNzIFRlc3RQb3J0U3RhdHNDaGVja3MoVGVzdFN1aXRlKToKICBGaWxlICIvcm9v dC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8z NTIzOS9kcGRrL2R0cy90ZXN0cy9UZXN0U3VpdGVfcG9ydF9zdGF0c19jaGVja3MucHkiLCBsaW5l IDU2LCBpbiBUZXN0UG9ydFN0YXRzQ2hlY2tzCiAgICBFdGhlcigpIC8gSVAoKSAvIFJhdyhiIlgi ICogKHRvdGFsX3BhY2tldF9sZW4gLSBpcF9oZWFkZXJfbGVuIC0gZXRoZXJfaGVhZGVyX2xlbikp CiAgICB+fn5+fn5+fl5+fn5+fgpUeXBlRXJyb3I6IHVuc3VwcG9ydGVkIG9wZXJhbmQgdHlwZShz KSBmb3IgLzogJ0V0aGVyJyBhbmQgJ0lQJwoKV0FSTklORzogYXV0b2RvYzogZmFpbGVkIHRvIGlt cG9ydCBtb2R1bGUgJ3Rlc3Rfc3VpdGUnIGZyb20gbW9kdWxlICdmcmFtZXdvcmsnOyB0aGUgZm9s bG93aW5nIGV4Y2VwdGlvbiB3YXMgcmFpc2VkOgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMy9kaXN0LXBhY2thZ2VzL3NwaGlueC9leHQv YXV0b2RvYy9pbXBvcnRlci5weSIsIGxpbmUgNjksIGluIGltcG9ydF9tb2R1bGUKICAgIHJldHVy biBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShtb2RuYW1lKQogICAgICAgICAgIF5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMy4xMi9pbXBvcnRs aWIvX19pbml0X18ucHkiLCBsaW5lIDkwLCBpbiBpbXBvcnRfbW9kdWxlCiAgICByZXR1cm4gX2Jv b3RzdHJhcC5fZ2NkX2ltcG9ydChuYW1lW2xldmVsOl0sIHBhY2thZ2UsIGxldmVsKQogICAgICAg ICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4K ICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIsIGxpbmUgMTM4NywgaW4gX2dj ZF9pbXBvcnQKICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIsIGxpbmUgMTM2 MCwgaW4gX2ZpbmRfYW5kX2xvYWQKICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFw PiIsIGxpbmUgMTMzMSwgaW4gX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQKICBGaWxlICI8ZnJvemVu IGltcG9ydGxpYi5fYm9vdHN0cmFwPiIsIGxpbmUgOTM1LCBpbiBfbG9hZF91bmxvY2tlZAogIEZp bGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWw+IiwgbGluZSA5OTUsIGlu IGV4ZWNfbW9kdWxlCiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLCBsaW5l IDQ4OCwgaW4gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZAogIEZpbGUgIi9yb290L1VCMjQwNC02 NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1MjM5L2RwZGsv ZHRzL2ZyYW1ld29yay90ZXN0X3N1aXRlLnB5IiwgbGluZSA3NjgsIGluIDxtb2R1bGU+CiAgICBB VkFJTEFCTEVfVEVTVF9TVUlURVM6IGxpc3RbVGVzdFN1aXRlU3BlY10gPSBUZXN0U3VpdGVTcGVj LmRpc2NvdmVyX2FsbCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL3Jvb3QvVUIyNDA0 LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBk ay9kdHMvZnJhbWV3b3JrL3Rlc3Rfc3VpdGUucHkiLCBsaW5lIDc2MCwgaW4gZGlzY292ZXJfYWxs CiAgICBpZiB0ZXN0X3N1aXRlLmNsYXNzX29iajoKICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5e CiAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMy4xMi9mdW5jdG9vbHMucHkiLCBsaW5lIDk5NSwgaW4g X19nZXRfXwogICAgdmFsID0gc2VsZi5mdW5jKGluc3RhbmNlKQogICAgICAgICAgXl5eXl5eXl5e Xl5eXl5eXl5eXgogIEZpbGUgIi9yb290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82 NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1MjM5L2RwZGsvZHRzL2ZyYW1ld29yay90ZXN0X3N1aXRl LnB5IiwgbGluZSA3MDYsIGluIGNsYXNzX29iagogICAgZm9yIGNsYXNzX25hbWUsIGNsYXNzX29i aiBpbiBpbnNwZWN0LmdldG1lbWJlcnMoc2VsZi5tb2R1bGUsIGlzX3Rlc3Rfc3VpdGUpOgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5e Xl4KICBGaWxlICIvdXNyL2xpYi9weXRob24zLjEyL2Z1bmN0b29scy5weSIsIGxpbmUgOTk1LCBp biBfX2dldF9fCiAgICB2YWwgPSBzZWxmLmZ1bmMoaW5zdGFuY2UpCiAgICAgICAgICBeXl5eXl5e Xl5eXl5eXl5eXl5eCiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2 XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3Rfc3Vp dGUucHkiLCBsaW5lIDY3MywgaW4gbW9kdWxlCiAgICByZXR1cm4gaW1wb3J0X21vZHVsZShmIntz ZWxmLlRFU1RfU1VJVEVTX1BBQ0tBR0VfTkFNRX0ue3NlbGYubW9kdWxlX25hbWV9IikKICAgICAg ICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi91c3IvbGliL3B5dGhvbjMuMTIvaW1wb3J0bGliL19f aW5pdF9fLnB5IiwgbGluZSA5MCwgaW4gaW1wb3J0X21vZHVsZQogICAgcmV0dXJuIF9ib290c3Ry YXAuX2djZF9pbXBvcnQobmFtZVtsZXZlbDpdLCBwYWNrYWdlLCBsZXZlbCkKICAgICAgICAgICBe Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmls ZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLCBsaW5lIDEzODcsIGluIF9nY2RfaW1w b3J0CiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLCBsaW5lIDEzNjAsIGlu IF9maW5kX2FuZF9sb2FkCiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLCBs aW5lIDEzMzEsIGluIF9maW5kX2FuZF9sb2FkX3VubG9ja2VkCiAgRmlsZSAiPGZyb3plbiBpbXBv cnRsaWIuX2Jvb3RzdHJhcD4iLCBsaW5lIDkzNSwgaW4gX2xvYWRfdW5sb2NrZWQKICBGaWxlICI8 ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsPiIsIGxpbmUgOTk1LCBpbiBleGVj X21vZHVsZQogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwgbGluZSA0ODgs IGluIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQKICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYu OC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy90 ZXN0cy9UZXN0U3VpdGVfcG9ydF9zdGF0c19jaGVja3MucHkiLCBsaW5lIDMxLCBpbiA8bW9kdWxl PgogICAgY2xhc3MgVGVzdFBvcnRTdGF0c0NoZWNrcyhUZXN0U3VpdGUpOgogIEZpbGUgIi9yb290 L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1 MjM5L2RwZGsvZHRzL3Rlc3RzL1Rlc3RTdWl0ZV9wb3J0X3N0YXRzX2NoZWNrcy5weSIsIGxpbmUg NTYsIGluIFRlc3RQb3J0U3RhdHNDaGVja3MKICAgIEV0aGVyKCkgLyBJUCgpIC8gUmF3KGIiWCIg KiAodG90YWxfcGFja2V0X2xlbiAtIGlwX2hlYWRlcl9sZW4gLSBldGhlcl9oZWFkZXJfbGVuKSkK ICAgIH5+fn5+fn5+Xn5+fn5+ClR5cGVFcnJvcjogdW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlKHMp IGZvciAvOiAnRXRoZXInIGFuZCAnSVAnCgpXQVJOSU5HOiBhdXRvZG9jOiBmYWlsZWQgdG8gaW1w b3J0IG1vZHVsZSAnVGVzdFN1aXRlX3Byb21pc2Nfc3VwcG9ydCcgZnJvbSBtb2R1bGUgJ3Rlc3Rz JzsgdGhlIGZvbGxvd2luZyBleGNlcHRpb24gd2FzIHJhaXNlZDoKVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi91c3IvbGliL3B5dGhvbjMvZGlzdC1wYWNrYWdlcy9z cGhpbngvZXh0L2F1dG9kb2MvaW1wb3J0ZXIucHkiLCBsaW5lIDY5LCBpbiBpbXBvcnRfbW9kdWxl CiAgICByZXR1cm4gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobW9kbmFtZSkKICAgICAgICAgICBe Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi91c3IvbGliL3B5dGhvbjMu MTIvaW1wb3J0bGliL19faW5pdF9fLnB5IiwgbGluZSA5MCwgaW4gaW1wb3J0X21vZHVsZQogICAg cmV0dXJuIF9ib290c3RyYXAuX2djZF9pbXBvcnQobmFtZVtsZXZlbDpdLCBwYWNrYWdlLCBsZXZl bCkKICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eCiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLCBsaW5lIDEz ODcsIGluIF9nY2RfaW1wb3J0CiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4i LCBsaW5lIDEzNjAsIGluIF9maW5kX2FuZF9sb2FkCiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIu X2Jvb3RzdHJhcD4iLCBsaW5lIDEzMzEsIGluIF9maW5kX2FuZF9sb2FkX3VubG9ja2VkCiAgRmls ZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLCBsaW5lIDkzNSwgaW4gX2xvYWRfdW5s b2NrZWQKICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsPiIsIGxp bmUgOTk1LCBpbiBleGVjX21vZHVsZQogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3Ry YXA+IiwgbGluZSA0ODgsIGluIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQKICBGaWxlICIvcm9v dC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8z NTIzOS9kcGRrL2R0cy90ZXN0cy9UZXN0U3VpdGVfcHJvbWlzY19zdXBwb3J0LnB5IiwgbGluZSAx NSwgaW4gPG1vZHVsZT4KICAgIGZyb20gZnJhbWV3b3JrLnRlc3Rfc3VpdGUgaW1wb3J0IFRlc3RT dWl0ZSwgZnVuY190ZXN0CiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAv eDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3Rf c3VpdGUucHkiLCBsaW5lIDc2OCwgaW4gPG1vZHVsZT4KICAgIEFWQUlMQUJMRV9URVNUX1NVSVRF UzogbGlzdFtUZXN0U3VpdGVTcGVjXSA9IFRlc3RTdWl0ZVNwZWMuZGlzY292ZXJfYWxsKCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMu MC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy9mcmFtZXdvcmsvdGVz dF9zdWl0ZS5weSIsIGxpbmUgNzYwLCBpbiBkaXNjb3Zlcl9hbGwKICAgIGlmIHRlc3Rfc3VpdGUu Y2xhc3Nfb2JqOgogICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvdXNyL2xpYi9w eXRob24zLjEyL2Z1bmN0b29scy5weSIsIGxpbmUgOTk1LCBpbiBfX2dldF9fCiAgICB2YWwgPSBz ZWxmLmZ1bmMoaW5zdGFuY2UpCiAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAi L3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1k b2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3Rfc3VpdGUucHkiLCBsaW5lIDcwNiwgaW4g Y2xhc3Nfb2JqCiAgICBmb3IgY2xhc3NfbmFtZSwgY2xhc3Nfb2JqIGluIGluc3BlY3QuZ2V0bWVt YmVycyhzZWxmLm1vZHVsZSwgaXNfdGVzdF9zdWl0ZSk6CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXgogIEZpbGUgIi91c3IvbGli L3B5dGhvbjMuMTIvZnVuY3Rvb2xzLnB5IiwgbGluZSA5OTUsIGluIF9fZ2V0X18KICAgIHZhbCA9 IHNlbGYuZnVuYyhpbnN0YW5jZSkKICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxl ICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBw LWRvYy8zNTIzOS9kcGRrL2R0cy9mcmFtZXdvcmsvdGVzdF9zdWl0ZS5weSIsIGxpbmUgNjczLCBp biBtb2R1bGUKICAgIHJldHVybiBpbXBvcnRfbW9kdWxlKGYie3NlbGYuVEVTVF9TVUlURVNfUEFD S0FHRV9OQU1FfS57c2VsZi5tb2R1bGVfbmFtZX0iKQogICAgICAgICAgIF5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAg RmlsZSAiL3Vzci9saWIvcHl0aG9uMy4xMi9pbXBvcnRsaWIvX19pbml0X18ucHkiLCBsaW5lIDkw LCBpbiBpbXBvcnRfbW9kdWxlCiAgICByZXR1cm4gX2Jvb3RzdHJhcC5fZ2NkX2ltcG9ydChuYW1l W2xldmVsOl0sIHBhY2thZ2UsIGxldmVsKQogICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvcm9vdC9VQjI0MDQtNjRf SzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0 cy90ZXN0cy9UZXN0U3VpdGVfcG9ydF9zdGF0c19jaGVja3MucHkiLCBsaW5lIDMxLCBpbiA8bW9k dWxlPgogICAgY2xhc3MgVGVzdFBvcnRTdGF0c0NoZWNrcyhUZXN0U3VpdGUpOgogIEZpbGUgIi9y b290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9j LzM1MjM5L2RwZGsvZHRzL3Rlc3RzL1Rlc3RTdWl0ZV9wb3J0X3N0YXRzX2NoZWNrcy5weSIsIGxp bmUgNTYsIGluIFRlc3RQb3J0U3RhdHNDaGVja3MKICAgIEV0aGVyKCkgLyBJUCgpIC8gUmF3KGIi WCIgKiAodG90YWxfcGFja2V0X2xlbiAtIGlwX2hlYWRlcl9sZW4gLSBldGhlcl9oZWFkZXJfbGVu KSkKICAgIH5+fn5+fn5+Xn5+fn5+ClR5cGVFcnJvcjogdW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBl KHMpIGZvciAvOiAnRXRoZXInIGFuZCAnSVAnCgpXQVJOSU5HOiBhdXRvZG9jOiBmYWlsZWQgdG8g aW1wb3J0IG1vZHVsZSAnVGVzdFN1aXRlX3F1ZXVlX3N0YXJ0X3N0b3AnIGZyb20gbW9kdWxlICd0 ZXN0cyc7IHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uIHdhcyByYWlzZWQ6ClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdXNyL2xpYi9weXRob24zL2Rpc3QtcGFja2Fn ZXMvc3BoaW54L2V4dC9hdXRvZG9jL2ltcG9ydGVyLnB5IiwgbGluZSA2OSwgaW4gaW1wb3J0X21v ZHVsZQogICAgcmV0dXJuIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZG5hbWUpCiAgICAgICAg ICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvdXNyL2xpYi9weXRo b24zLjEyL2ltcG9ydGxpYi9fX2luaXRfXy5weSIsIGxpbmUgOTAsIGluIGltcG9ydF9tb2R1bGUK ICAgIHJldHVybiBfYm9vdHN0cmFwLl9nY2RfaW1wb3J0KG5hbWVbbGV2ZWw6XSwgcGFja2FnZSwg bGV2ZWwpCiAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXgogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwgbGlu ZSAxMzg3LCBpbiBfZ2NkX2ltcG9ydAogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3Ry YXA+IiwgbGluZSAxMzYwLCBpbiBfZmluZF9hbmRfbG9hZAogIEZpbGUgIjxmcm96ZW4gaW1wb3J0 bGliLl9ib290c3RyYXA+IiwgbGluZSAxMzMxLCBpbiBfZmluZF9hbmRfbG9hZF91bmxvY2tlZAog IEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwgbGluZSA5MzUsIGluIF9sb2Fk X3VubG9ja2VkCiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbD4i LCBsaW5lIDk5NSwgaW4gZXhlY19tb2R1bGUKICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9v dHN0cmFwPiIsIGxpbmUgNDg4LCBpbiBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkCiAgRmlsZSAi L3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1k b2MvMzUyMzkvZHBkay9kdHMvdGVzdHMvVGVzdFN1aXRlX3F1ZXVlX3N0YXJ0X3N0b3AucHkiLCBs aW5lIDIwLCBpbiA8bW9kdWxlPgogICAgZnJvbSBmcmFtZXdvcmsudGVzdF9zdWl0ZSBpbXBvcnQg VGVzdFN1aXRlLCBmdW5jX3Rlc3QKICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEz LjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy9mcmFtZXdvcmsv dGVzdF9zdWl0ZS5weSIsIGxpbmUgNzY4LCBpbiA8bW9kdWxlPgogICAgQVZBSUxBQkxFX1RFU1Rf U1VJVEVTOiBsaXN0W1Rlc3RTdWl0ZVNwZWNdID0gVGVzdFN1aXRlU3BlYy5kaXNjb3Zlcl9hbGwo KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi9yb290L1VCMjQwNC02NF9LNi44LjBfR0ND MTMuMy4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1MjM5L2RwZGsvZHRzL2ZyYW1ld29y ay90ZXN0X3N1aXRlLnB5IiwgbGluZSA3NjAsIGluIGRpc2NvdmVyX2FsbAogICAgaWYgdGVzdF9z dWl0ZS5jbGFzc19vYmo6CiAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi91c3Iv bGliL3B5dGhvbjMuMTIvZnVuY3Rvb2xzLnB5IiwgbGluZSA5OTUsIGluIF9fZ2V0X18KICAgIHZh bCA9IHNlbGYuZnVuYyhpbnN0YW5jZSkKICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl4KICBG aWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4 YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy9mcmFtZXdvcmsvdGVzdF9zdWl0ZS5weSIsIGxpbmUgNzA2 LCBpbiBjbGFzc19vYmoKICAgIGZvciBjbGFzc19uYW1lLCBjbGFzc19vYmogaW4gaW5zcGVjdC5n ZXRtZW1iZXJzKHNlbGYubW9kdWxlLCBpc190ZXN0X3N1aXRlKToKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eCiAgRmlsZSAiL3Vz ci9saWIvcHl0aG9uMy4xMi9mdW5jdG9vbHMucHkiLCBsaW5lIDk5NSwgaW4gX19nZXRfXwogICAg dmFsID0gc2VsZi5mdW5jKGluc3RhbmNlKQogICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXgog IEZpbGUgIi9yb290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRpdmUtbGlu dXhhcHAtZG9jLzM1MjM5L2RwZGsvZHRzL2ZyYW1ld29yay90ZXN0X3N1aXRlLnB5IiwgbGluZSA2 NzMsIGluIG1vZHVsZQogICAgcmV0dXJuIGltcG9ydF9tb2R1bGUoZiJ7c2VsZi5URVNUX1NVSVRF U19QQUNLQUdFX05BTUV9LntzZWxmLm1vZHVsZV9uYW1lfSIpCiAgICAgICAgICAgXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl4KICBGaWxlICIvdXNyL2xpYi9weXRob24zLjEyL2ltcG9ydGxpYi9fX2luaXRfXy5weSIsIGxp bmUgOTAsIGluIGltcG9ydF9tb2R1bGUKICAgIHJldHVybiBfYm9vdHN0cmFwLl9nY2RfaW1wb3J0 KG5hbWVbbGV2ZWw6XSwgcGFja2FnZSwgbGV2ZWwpCiAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi9yb290L1VCMjQw NC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1MjM5L2Rw ZGsvZHRzL3Rlc3RzL1Rlc3RTdWl0ZV9wb3J0X3N0YXRzX2NoZWNrcy5weSIsIGxpbmUgMzEsIGlu IDxtb2R1bGU+CiAgICBjbGFzcyBUZXN0UG9ydFN0YXRzQ2hlY2tzKFRlc3RTdWl0ZSk6CiAgRmls ZSAiL3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFw cC1kb2MvMzUyMzkvZHBkay9kdHMvdGVzdHMvVGVzdFN1aXRlX3BvcnRfc3RhdHNfY2hlY2tzLnB5 IiwgbGluZSA1NiwgaW4gVGVzdFBvcnRTdGF0c0NoZWNrcwogICAgRXRoZXIoKSAvIElQKCkgLyBS YXcoYiJYIiAqICh0b3RhbF9wYWNrZXRfbGVuIC0gaXBfaGVhZGVyX2xlbiAtIGV0aGVyX2hlYWRl cl9sZW4pKQogICAgfn5+fn5+fn5efn5+fn4KVHlwZUVycm9yOiB1bnN1cHBvcnRlZCBvcGVyYW5k IHR5cGUocykgZm9yIC86ICdFdGhlcicgYW5kICdJUCcKCldBUk5JTkc6IGF1dG9kb2M6IGZhaWxl ZCB0byBpbXBvcnQgbW9kdWxlICdUZXN0U3VpdGVfc21va2VfdGVzdHMnIGZyb20gbW9kdWxlICd0 ZXN0cyc7IHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uIHdhcyByYWlzZWQ6ClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdXNyL2xpYi9weXRob24zL2Rpc3QtcGFja2Fn ZXMvc3BoaW54L2V4dC9hdXRvZG9jL2ltcG9ydGVyLnB5IiwgbGluZSA2OSwgaW4gaW1wb3J0X21v ZHVsZQogICAgcmV0dXJuIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZG5hbWUpCiAgICAgICAg ICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvdXNyL2xpYi9weXRo b24zLjEyL2ltcG9ydGxpYi9fX2luaXRfXy5weSIsIGxpbmUgOTAsIGluIGltcG9ydF9tb2R1bGUK ICAgIHJldHVybiBfYm9vdHN0cmFwLl9nY2RfaW1wb3J0KG5hbWVbbGV2ZWw6XSwgcGFja2FnZSwg bGV2ZWwpCiAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXgogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwgbGlu ZSAxMzg3LCBpbiBfZ2NkX2ltcG9ydAogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3Ry YXA+IiwgbGluZSAxMzYwLCBpbiBfZmluZF9hbmRfbG9hZAogIEZpbGUgIjxmcm96ZW4gaW1wb3J0 bGliLl9ib290c3RyYXA+IiwgbGluZSAxMzMxLCBpbiBfZmluZF9hbmRfbG9hZF91bmxvY2tlZAog IEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwgbGluZSA5MzUsIGluIF9sb2Fk X3VubG9ja2VkCiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbD4i LCBsaW5lIDk5NSwgaW4gZXhlY19tb2R1bGUKICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9v dHN0cmFwPiIsIGxpbmUgNDg4LCBpbiBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkCiAgRmlsZSAi L3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1k b2MvMzUyMzkvZHBkay9kdHMvdGVzdHMvVGVzdFN1aXRlX3Ntb2tlX3Rlc3RzLnB5IiwgbGluZSAy MCwgaW4gPG1vZHVsZT4KICAgIGZyb20gZnJhbWV3b3JrLnRlc3Rfc3VpdGUgaW1wb3J0IFRlc3RT dWl0ZSwgZnVuY190ZXN0CiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAv eDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3Rf c3VpdGUucHkiLCBsaW5lIDc2OCwgaW4gPG1vZHVsZT4KICAgIEFWQUlMQUJMRV9URVNUX1NVSVRF UzogbGlzdFtUZXN0U3VpdGVTcGVjXSA9IFRlc3RTdWl0ZVNwZWMuZGlzY292ZXJfYWxsKCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMu MC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy9mcmFtZXdvcmsvdGVz dF9zdWl0ZS5weSIsIGxpbmUgNzYwLCBpbiBkaXNjb3Zlcl9hbGwKICAgIGlmIHRlc3Rfc3VpdGUu Y2xhc3Nfb2JqOgogICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvdXNyL2xpYi9w eXRob24zLjEyL2Z1bmN0b29scy5weSIsIGxpbmUgOTk1LCBpbiBfX2dldF9fCiAgICB2YWwgPSBz ZWxmLmZ1bmMoaW5zdGFuY2UpCiAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAi L3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1k b2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3Rfc3VpdGUucHkiLCBsaW5lIDcwNiwgaW4g Y2xhc3Nfb2JqCiAgICBmb3IgY2xhc3NfbmFtZSwgY2xhc3Nfb2JqIGluIGluc3BlY3QuZ2V0bWVt YmVycyhzZWxmLm1vZHVsZSwgaXNfdGVzdF9zdWl0ZSk6CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXgogIEZpbGUgIi91c3IvbGli L3B5dGhvbjMuMTIvZnVuY3Rvb2xzLnB5IiwgbGluZSA5OTUsIGluIF9fZ2V0X18KICAgIHZhbCA9 IHNlbGYuZnVuYyhpbnN0YW5jZSkKICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxl ICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBw LWRvYy8zNTIzOS9kcGRrL2R0cy9mcmFtZXdvcmsvdGVzdF9zdWl0ZS5weSIsIGxpbmUgNjczLCBp biBtb2R1bGUKICAgIHJldHVybiBpbXBvcnRfbW9kdWxlKGYie3NlbGYuVEVTVF9TVUlURVNfUEFD S0FHRV9OQU1FfS57c2VsZi5tb2R1bGVfbmFtZX0iKQogICAgICAgICAgIF5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAg RmlsZSAiL3Vzci9saWIvcHl0aG9uMy4xMi9pbXBvcnRsaWIvX19pbml0X18ucHkiLCBsaW5lIDkw LCBpbiBpbXBvcnRfbW9kdWxlCiAgICByZXR1cm4gX2Jvb3RzdHJhcC5fZ2NkX2ltcG9ydChuYW1l W2xldmVsOl0sIHBhY2thZ2UsIGxldmVsKQogICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvcm9vdC9VQjI0MDQtNjRf SzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0 cy90ZXN0cy9UZXN0U3VpdGVfcG9ydF9zdGF0c19jaGVja3MucHkiLCBsaW5lIDMxLCBpbiA8bW9k dWxlPgogICAgY2xhc3MgVGVzdFBvcnRTdGF0c0NoZWNrcyhUZXN0U3VpdGUpOgogIEZpbGUgIi9y b290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9j LzM1MjM5L2RwZGsvZHRzL3Rlc3RzL1Rlc3RTdWl0ZV9wb3J0X3N0YXRzX2NoZWNrcy5weSIsIGxp bmUgNTYsIGluIFRlc3RQb3J0U3RhdHNDaGVja3MKICAgIEV0aGVyKCkgLyBJUCgpIC8gUmF3KGIi WCIgKiAodG90YWxfcGFja2V0X2xlbiAtIGlwX2hlYWRlcl9sZW4gLSBldGhlcl9oZWFkZXJfbGVu KSkKICAgIH5+fn5+fn5+Xn5+fn5+ClR5cGVFcnJvcjogdW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBl KHMpIGZvciAvOiAnRXRoZXInIGFuZCAnSVAnCgpXQVJOSU5HOiBhdXRvZG9jOiBmYWlsZWQgdG8g aW1wb3J0IG1vZHVsZSAnVGVzdFN1aXRlX3NvZnRuaWMnIGZyb20gbW9kdWxlICd0ZXN0cyc7IHRo ZSBmb2xsb3dpbmcgZXhjZXB0aW9uIHdhcyByYWlzZWQ6ClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvdXNyL2xpYi9weXRob24zL2Rpc3QtcGFja2FnZXMvc3BoaW54 L2V4dC9hdXRvZG9jL2ltcG9ydGVyLnB5IiwgbGluZSA2OSwgaW4gaW1wb3J0X21vZHVsZQogICAg cmV0dXJuIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZG5hbWUpCiAgICAgICAgICAgXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvdXNyL2xpYi9weXRob24zLjEyL2lt cG9ydGxpYi9fX2luaXRfXy5weSIsIGxpbmUgOTAsIGluIGltcG9ydF9tb2R1bGUKICAgIHJldHVy biBfYm9vdHN0cmFwLl9nY2RfaW1wb3J0KG5hbWVbbGV2ZWw6XSwgcGFja2FnZSwgbGV2ZWwpCiAg ICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXgogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwgbGluZSAxMzg3LCBp biBfZ2NkX2ltcG9ydAogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwgbGlu ZSAxMzYwLCBpbiBfZmluZF9hbmRfbG9hZAogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290 c3RyYXA+IiwgbGluZSAxMzMxLCBpbiBfZmluZF9hbmRfbG9hZF91bmxvY2tlZAogIEZpbGUgIjxm cm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwgbGluZSA5MzUsIGluIF9sb2FkX3VubG9ja2Vk CiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbD4iLCBsaW5lIDk5 NSwgaW4gZXhlY19tb2R1bGUKICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIs IGxpbmUgNDg4LCBpbiBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkCiAgRmlsZSAiL3Jvb3QvVUIy NDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkv ZHBkay9kdHMvdGVzdHMvVGVzdFN1aXRlX3NvZnRuaWMucHkiLCBsaW5lIDEzLCBpbiA8bW9kdWxl PgogICAgZnJvbSBmcmFtZXdvcmsudGVzdF9zdWl0ZSBpbXBvcnQgVGVzdFN1aXRlLCBmdW5jX3Rl c3QKICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZl LWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy9mcmFtZXdvcmsvdGVzdF9zdWl0ZS5weSIsIGxp bmUgNzY4LCBpbiA8bW9kdWxlPgogICAgQVZBSUxBQkxFX1RFU1RfU1VJVEVTOiBsaXN0W1Rlc3RT dWl0ZVNwZWNdID0gVGVzdFN1aXRlU3BlYy5kaXNjb3Zlcl9hbGwoKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXgogIEZpbGUgIi9yb290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRp dmUtbGludXhhcHAtZG9jLzM1MjM5L2RwZGsvZHRzL2ZyYW1ld29yay90ZXN0X3N1aXRlLnB5Iiwg bGluZSA3NjAsIGluIGRpc2NvdmVyX2FsbAogICAgaWYgdGVzdF9zdWl0ZS5jbGFzc19vYmo6CiAg ICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi91c3IvbGliL3B5dGhvbjMuMTIvZnVu Y3Rvb2xzLnB5IiwgbGluZSA5OTUsIGluIF9fZ2V0X18KICAgIHZhbCA9IHNlbGYuZnVuYyhpbnN0 YW5jZSkKICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvcm9vdC9VQjI0MDQt NjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRr L2R0cy9mcmFtZXdvcmsvdGVzdF9zdWl0ZS5weSIsIGxpbmUgNzA2LCBpbiBjbGFzc19vYmoKICAg IGZvciBjbGFzc19uYW1lLCBjbGFzc19vYmogaW4gaW5zcGVjdC5nZXRtZW1iZXJzKHNlbGYubW9k dWxlLCBpc190ZXN0X3N1aXRlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eCiAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMy4xMi9m dW5jdG9vbHMucHkiLCBsaW5lIDk5NSwgaW4gX19nZXRfXwogICAgdmFsID0gc2VsZi5mdW5jKGlu c3RhbmNlKQogICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi9yb290L1VCMjQw NC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1MjM5L2Rw ZGsvZHRzL2ZyYW1ld29yay90ZXN0X3N1aXRlLnB5IiwgbGluZSA2NzMsIGluIG1vZHVsZQogICAg cmV0dXJuIGltcG9ydF9tb2R1bGUoZiJ7c2VsZi5URVNUX1NVSVRFU19QQUNLQUdFX05BTUV9Lntz ZWxmLm1vZHVsZV9uYW1lfSIpCiAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvdXNyL2xp Yi9weXRob24zLjEyL2ltcG9ydGxpYi9fX2luaXRfXy5weSIsIGxpbmUgOTAsIGluIGltcG9ydF9t b2R1bGUKICAgIHJldHVybiBfYm9vdHN0cmFwLl9nY2RfaW1wb3J0KG5hbWVbbGV2ZWw6XSwgcGFj a2FnZSwgbGV2ZWwpCiAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi9yb290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMu My4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1MjM5L2RwZGsvZHRzL3Rlc3RzL1Rlc3RT dWl0ZV9wb3J0X3N0YXRzX2NoZWNrcy5weSIsIGxpbmUgMzEsIGluIDxtb2R1bGU+CiAgICBjbGFz cyBUZXN0UG9ydFN0YXRzQ2hlY2tzKFRlc3RTdWl0ZSk6CiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0 X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9k dHMvdGVzdHMvVGVzdFN1aXRlX3BvcnRfc3RhdHNfY2hlY2tzLnB5IiwgbGluZSA1NiwgaW4gVGVz dFBvcnRTdGF0c0NoZWNrcwogICAgRXRoZXIoKSAvIElQKCkgLyBSYXcoYiJYIiAqICh0b3RhbF9w YWNrZXRfbGVuIC0gaXBfaGVhZGVyX2xlbiAtIGV0aGVyX2hlYWRlcl9sZW4pKQogICAgfn5+fn5+ fn5efn5+fn4KVHlwZUVycm9yOiB1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGUocykgZm9yIC86ICdF dGhlcicgYW5kICdJUCcKCldBUk5JTkc6IGF1dG9kb2M6IGZhaWxlZCB0byBpbXBvcnQgbW9kdWxl ICdUZXN0U3VpdGVfdW5pX3BrdCcgZnJvbSBtb2R1bGUgJ3Rlc3RzJzsgdGhlIGZvbGxvd2luZyBl eGNlcHRpb24gd2FzIHJhaXNlZDoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgog IEZpbGUgIi91c3IvbGliL3B5dGhvbjMvZGlzdC1wYWNrYWdlcy9zcGhpbngvZXh0L2F1dG9kb2Mv aW1wb3J0ZXIucHkiLCBsaW5lIDY5LCBpbiBpbXBvcnRfbW9kdWxlCiAgICByZXR1cm4gaW1wb3J0 bGliLmltcG9ydF9tb2R1bGUobW9kbmFtZSkKICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXgogIEZpbGUgIi91c3IvbGliL3B5dGhvbjMuMTIvaW1wb3J0bGliL19faW5p dF9fLnB5IiwgbGluZSA5MCwgaW4gaW1wb3J0X21vZHVsZQogICAgcmV0dXJuIF9ib290c3RyYXAu X2djZF9pbXBvcnQobmFtZVtsZXZlbDpdLCBwYWNrYWdlLCBsZXZlbCkKICAgICAgICAgICBeXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAi PGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLCBsaW5lIDEzODcsIGluIF9nY2RfaW1wb3J0 CiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLCBsaW5lIDEzNjAsIGluIF9m aW5kX2FuZF9sb2FkCiAgRmlsZSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLCBsaW5l IDEzMzEsIGluIF9maW5kX2FuZF9sb2FkX3VubG9ja2VkCiAgRmlsZSAiPGZyb3plbiBpbXBvcnRs aWIuX2Jvb3RzdHJhcD4iLCBsaW5lIDkzNSwgaW4gX2xvYWRfdW5sb2NrZWQKICBGaWxlICI8ZnJv emVuIGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsPiIsIGxpbmUgOTk1LCBpbiBleGVjX21v ZHVsZQogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwgbGluZSA0ODgsIGlu IF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQKICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4w X0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy90ZXN0 cy9UZXN0U3VpdGVfdW5pX3BrdC5weSIsIGxpbmUgMjgsIGluIDxtb2R1bGU+CiAgICBmcm9tIGZy YW1ld29yay50ZXN0X3N1aXRlIGltcG9ydCBUZXN0U3VpdGUsIGZ1bmNfdGVzdAogIEZpbGUgIi9y b290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9j LzM1MjM5L2RwZGsvZHRzL2ZyYW1ld29yay90ZXN0X3N1aXRlLnB5IiwgbGluZSA3NjgsIGluIDxt b2R1bGU+CiAgICBBVkFJTEFCTEVfVEVTVF9TVUlURVM6IGxpc3RbVGVzdFN1aXRlU3BlY10gPSBU ZXN0U3VpdGVTcGVjLmRpc2NvdmVyX2FsbCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAi L3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1k b2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3Rfc3VpdGUucHkiLCBsaW5lIDc2MCwgaW4g ZGlzY292ZXJfYWxsCiAgICBpZiB0ZXN0X3N1aXRlLmNsYXNzX29iajoKICAgICAgIF5eXl5eXl5e Xl5eXl5eXl5eXl5eCiAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMy4xMi9mdW5jdG9vbHMucHkiLCBs aW5lIDk5NSwgaW4gX19nZXRfXwogICAgdmFsID0gc2VsZi5mdW5jKGluc3RhbmNlKQogICAgICAg ICAgXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi9yb290L1VCMjQwNC02NF9LNi44LjBfR0ND MTMuMy4wL3g4Nl82NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1MjM5L2RwZGsvZHRzL2ZyYW1ld29y ay90ZXN0X3N1aXRlLnB5IiwgbGluZSA3MDYsIGluIGNsYXNzX29iagogICAgZm9yIGNsYXNzX25h bWUsIGNsYXNzX29iaiBpbiBpbnNwZWN0LmdldG1lbWJlcnMoc2VsZi5tb2R1bGUsIGlzX3Rlc3Rf c3VpdGUpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXl5eXl5eXl5eXl4KICBGaWxlICIvdXNyL2xpYi9weXRob24zLjEyL2Z1bmN0b29scy5weSIs IGxpbmUgOTk1LCBpbiBfX2dldF9fCiAgICB2YWwgPSBzZWxmLmZ1bmMoaW5zdGFuY2UpCiAgICAg ICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eCiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9H Q0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3 b3JrL3Rlc3Rfc3VpdGUucHkiLCBsaW5lIDY3MywgaW4gbW9kdWxlCiAgICByZXR1cm4gaW1wb3J0 X21vZHVsZShmIntzZWxmLlRFU1RfU1VJVEVTX1BBQ0tBR0VfTkFNRX0ue3NlbGYubW9kdWxlX25h bWV9IikKICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi91c3IvbGliL3B5dGhvbjMuMTIv aW1wb3J0bGliL19faW5pdF9fLnB5IiwgbGluZSA5MCwgaW4gaW1wb3J0X21vZHVsZQogICAgcmV0 dXJuIF9ib290c3RyYXAuX2djZF9pbXBvcnQobmFtZVtsZXZlbDpdLCBwYWNrYWdlLCBsZXZlbCkK ICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eCiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5h dGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvdGVzdHMvVGVzdFN1aXRlX3BvcnRfc3Rh dHNfY2hlY2tzLnB5IiwgbGluZSAzMSwgaW4gPG1vZHVsZT4KICAgIGNsYXNzIFRlc3RQb3J0U3Rh dHNDaGVja3MoVGVzdFN1aXRlKToKICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEz LjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy90ZXN0cy9UZXN0 U3VpdGVfcG9ydF9zdGF0c19jaGVja3MucHkiLCBsaW5lIDU2LCBpbiBUZXN0UG9ydFN0YXRzQ2hl Y2tzCiAgICBFdGhlcigpIC8gSVAoKSAvIFJhdyhiIlgiICogKHRvdGFsX3BhY2tldF9sZW4gLSBp cF9oZWFkZXJfbGVuIC0gZXRoZXJfaGVhZGVyX2xlbikpCiAgICB+fn5+fn5+fl5+fn5+fgpUeXBl RXJyb3I6IHVuc3VwcG9ydGVkIG9wZXJhbmQgdHlwZShzKSBmb3IgLzogJ0V0aGVyJyBhbmQgJ0lQ JwoKV0FSTklORzogYXV0b2RvYzogZmFpbGVkIHRvIGltcG9ydCBtb2R1bGUgJ1Rlc3RTdWl0ZV92 bGFuJyBmcm9tIG1vZHVsZSAndGVzdHMnOyB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbiB3YXMgcmFp c2VkOgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3Vzci9saWIv cHl0aG9uMy9kaXN0LXBhY2thZ2VzL3NwaGlueC9leHQvYXV0b2RvYy9pbXBvcnRlci5weSIsIGxp bmUgNjksIGluIGltcG9ydF9tb2R1bGUKICAgIHJldHVybiBpbXBvcnRsaWIuaW1wb3J0X21vZHVs ZShtb2RuYW1lKQogICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAg RmlsZSAiL3Vzci9saWIvcHl0aG9uMy4xMi9pbXBvcnRsaWIvX19pbml0X18ucHkiLCBsaW5lIDkw LCBpbiBpbXBvcnRfbW9kdWxlCiAgICByZXR1cm4gX2Jvb3RzdHJhcC5fZ2NkX2ltcG9ydChuYW1l W2xldmVsOl0sIHBhY2thZ2UsIGxldmVsKQogICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICI8ZnJvemVuIGltcG9ydGxp Yi5fYm9vdHN0cmFwPiIsIGxpbmUgMTM4NywgaW4gX2djZF9pbXBvcnQKICBGaWxlICI8ZnJvemVu IGltcG9ydGxpYi5fYm9vdHN0cmFwPiIsIGxpbmUgMTM2MCwgaW4gX2ZpbmRfYW5kX2xvYWQKICBG aWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIsIGxpbmUgMTMzMSwgaW4gX2ZpbmRf YW5kX2xvYWRfdW5sb2NrZWQKICBGaWxlICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIs IGxpbmUgOTM1LCBpbiBfbG9hZF91bmxvY2tlZAogIEZpbGUgIjxmcm96ZW4gaW1wb3J0bGliLl9i b290c3RyYXBfZXh0ZXJuYWw+IiwgbGluZSA5OTUsIGluIGV4ZWNfbW9kdWxlCiAgRmlsZSAiPGZy b3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLCBsaW5lIDQ4OCwgaW4gX2NhbGxfd2l0aF9mcmFt ZXNfcmVtb3ZlZAogIEZpbGUgIi9yb290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82 NC1uYXRpdmUtbGludXhhcHAtZG9jLzM1MjM5L2RwZGsvZHRzL3Rlc3RzL1Rlc3RTdWl0ZV92bGFu LnB5IiwgbGluZSAxOSwgaW4gPG1vZHVsZT4KICAgIGZyb20gZnJhbWV3b3JrLnRlc3Rfc3VpdGUg aW1wb3J0IFRlc3RTdWl0ZSwgZnVuY190ZXN0CiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2Ljgu MF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvZnJh bWV3b3JrL3Rlc3Rfc3VpdGUucHkiLCBsaW5lIDc2OCwgaW4gPG1vZHVsZT4KICAgIEFWQUlMQUJM RV9URVNUX1NVSVRFUzogbGlzdFtUZXN0U3VpdGVTcGVjXSA9IFRlc3RTdWl0ZVNwZWMuZGlzY292 ZXJfYWxsKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYu OC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy9m cmFtZXdvcmsvdGVzdF9zdWl0ZS5weSIsIGxpbmUgNzYwLCBpbiBkaXNjb3Zlcl9hbGwKICAgIGlm IHRlc3Rfc3VpdGUuY2xhc3Nfb2JqOgogICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxl ICIvdXNyL2xpYi9weXRob24zLjEyL2Z1bmN0b29scy5weSIsIGxpbmUgOTk1LCBpbiBfX2dldF9f CiAgICB2YWwgPSBzZWxmLmZ1bmMoaW5zdGFuY2UpCiAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5e Xl5eCiAgRmlsZSAiL3Jvb3QvVUIyNDA0LTY0X0s2LjguMF9HQ0MxMy4zLjAveDg2XzY0LW5hdGl2 ZS1saW51eGFwcC1kb2MvMzUyMzkvZHBkay9kdHMvZnJhbWV3b3JrL3Rlc3Rfc3VpdGUucHkiLCBs aW5lIDcwNiwgaW4gY2xhc3Nfb2JqCiAgICBmb3IgY2xhc3NfbmFtZSwgY2xhc3Nfb2JqIGluIGlu c3BlY3QuZ2V0bWVtYmVycyhzZWxmLm1vZHVsZSwgaXNfdGVzdF9zdWl0ZSk6CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXgogIEZp bGUgIi91c3IvbGliL3B5dGhvbjMuMTIvZnVuY3Rvb2xzLnB5IiwgbGluZSA5OTUsIGluIF9fZ2V0 X18KICAgIHZhbCA9IHNlbGYuZnVuYyhpbnN0YW5jZSkKICAgICAgICAgIF5eXl5eXl5eXl5eXl5e Xl5eXl4KICBGaWxlICIvcm9vdC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0 aXZlLWxpbnV4YXBwLWRvYy8zNTIzOS9kcGRrL2R0cy9mcmFtZXdvcmsvdGVzdF9zdWl0ZS5weSIs IGxpbmUgNjczLCBpbiBtb2R1bGUKICAgIHJldHVybiBpbXBvcnRfbW9kdWxlKGYie3NlbGYuVEVT VF9TVUlURVNfUEFDS0FHRV9OQU1FfS57c2VsZi5tb2R1bGVfbmFtZX0iKQogICAgICAgICAgIF5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eCiAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMy4xMi9pbXBvcnRsaWIvX19pbml0X18u cHkiLCBsaW5lIDkwLCBpbiBpbXBvcnRfbW9kdWxlCiAgICByZXR1cm4gX2Jvb3RzdHJhcC5fZ2Nk X2ltcG9ydChuYW1lW2xldmVsOl0sIHBhY2thZ2UsIGxldmVsKQogICAgICAgICAgIF5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICBGaWxlICIvcm9v dC9VQjI0MDQtNjRfSzYuOC4wX0dDQzEzLjMuMC94ODZfNjQtbmF0aXZlLWxpbnV4YXBwLWRvYy8z NTIzOS9kcGRrL2R0cy90ZXN0cy9UZXN0U3VpdGVfcG9ydF9zdGF0c19jaGVja3MucHkiLCBsaW5l IDMxLCBpbiA8bW9kdWxlPgogICAgY2xhc3MgVGVzdFBvcnRTdGF0c0NoZWNrcyhUZXN0U3VpdGUp OgogIEZpbGUgIi9yb290L1VCMjQwNC02NF9LNi44LjBfR0NDMTMuMy4wL3g4Nl82NC1uYXRpdmUt bGludXhhcHAtZG9jLzM1MjM5L2RwZGsvZHRzL3Rlc3RzL1Rlc3RTdWl0ZV9wb3J0X3N0YXRzX2No ZWNrcy5weSIsIGxpbmUgNTYsIGluIFRlc3RQb3J0U3RhdHNDaGVja3MKICAgIEV0aGVyKCkgLyBJ UCgpIC8gUmF3KGIiWCIgKiAodG90YWxfcGFja2V0X2xlbiAtIGlwX2hlYWRlcl9sZW4gLSBldGhl cl9oZWFkZXJfbGVuKSkKICAgIH5+fn5+fn5+Xn5+fn5+ClR5cGVFcnJvcjogdW5zdXBwb3J0ZWQg b3BlcmFuZCB0eXBlKHMpIGZvciAvOiAnRXRoZXInIGFuZCAnSVAnCgpuaW5qYTogYnVpbGQgc3Rv cHBlZAoKCkRQREsgU1RWIHRlYW0K --===============8242196402802424559==--